From ebac2d112606d8e9c9418b1db33974541b45aaf2 Mon Sep 17 00:00:00 2001 From: Madmadness65 <59298170+Madmadness65@users.noreply.github.com> Date: Wed, 21 May 2025 15:38:24 -0500 Subject: [PATCH 01/71] [Sprite] [P3 Bug] Fix Wishiwashi's shadow appearing broken (#5815) Fix Wishiwashi's shadow appearing broken Cropped all of Wishiwashi-solo's frames from 96x96 to 50x50, then re-exported the atlases. This fixed the shadows appearing broken in the animation. --- public/images/pokemon/exp/746.json | 2129 +++++++++++++++------- public/images/pokemon/exp/746.png | Bin 900 -> 1527 bytes public/images/pokemon/exp/shiny/746.json | 2128 ++++++++++++++------- public/images/pokemon/exp/shiny/746.png | Bin 868 -> 1509 bytes 4 files changed, 2978 insertions(+), 1279 deletions(-) diff --git a/public/images/pokemon/exp/746.json b/public/images/pokemon/exp/746.json index f4967f59669..9f5db562bf0 100644 --- a/public/images/pokemon/exp/746.json +++ b/public/images/pokemon/exp/746.json @@ -1,641 +1,1490 @@ -{ "frames": [ - { - "filename": "0001.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0002.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0003.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0004.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0005.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0006.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 42, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0007.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 44, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0008.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 46, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0009.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 47, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0010.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0011.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0012.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0013.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0014.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0015.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 47, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0016.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 46, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0017.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 44, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0018.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 42, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0019.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0020.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0021.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0022.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0023.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0024.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 42, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0025.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 44, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0026.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 46, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0027.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 47, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0028.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0029.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0030.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0031.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0032.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0033.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 47, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0034.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 46, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0035.png", - "frame": { "x": 1, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 44, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0036.png", - "frame": { "x": 40, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 42, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0037.png", - "frame": { "x": 40, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0038.png", - "frame": { "x": 75, "y": 26, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0039.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0040.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0041.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0042.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 42, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0043.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 44, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0044.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 46, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0045.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 47, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0046.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0047.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0048.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0049.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0050.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0051.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 47, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0052.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 46, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0053.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 44, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0054.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0055.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0056.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0057.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 41, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0058.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 42, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0059.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 44, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0060.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 46, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0061.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 47, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0062.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0063.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0064.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0065.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0066.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 48, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0067.png", - "frame": { "x": 79, "y": 1, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 47, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0068.png", - "frame": { "x": 1, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 46, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0069.png", - "frame": { "x": 1, "y": 26, "w": 39, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 44, "w": 37, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - }, - { - "filename": "0070.png", - "frame": { "x": 36, "y": 51, "w": 35, "h": 25 }, - "rotated": false, - "trimmed": true, - "spriteSourceSize": { "x": 28, "y": 42, "w": 33, "h": 23 }, - "sourceSize": { "w": 96, "h": 96 }, - "duration": 110 - } - ], - "meta": { - "app": "https://www.aseprite.org/", - "version": "1.3.13-x64", - "image": "746.png", - "format": "I8", - "size": { "w": 119, "h": 77 }, - "scale": "1" - } +{ + "textures": [ + { + "image": "746.png", + "format": "RGBA8888", + "size": { + "w": 100, + "h": 100 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 18, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 21, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 21, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 18, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 18, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 21, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 21, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 18, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 39, + "h": 25 + }, + "frame": { + "x": 39, + "y": 0, + "w": 39, + "h": 25 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 18, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 21, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 21, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 18, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 18, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 21, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 21, + "w": 39, + "h": 25 + }, + "frame": { + "x": 0, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 18, + "w": 39, + "h": 25 + }, + "frame": { + "x": 39, + "y": 25, + "w": 39, + "h": 25 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 16, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 20, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 20, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 16, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 16, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 20, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 20, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 16, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 35, + "h": 25 + }, + "frame": { + "x": 0, + "y": 75, + "w": 35, + "h": 25 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 16, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 20, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 20, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 15, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 16, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 20, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 22, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 20, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 50, + "w": 35, + "h": 25 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 50, + "h": 50 + }, + "spriteSourceSize": { + "x": 7, + "y": 16, + "w": 35, + "h": 25 + }, + "frame": { + "x": 35, + "y": 75, + "w": 35, + "h": 25 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:f7634f2f6edeb6f56071bb6680b7f94b:08a6c2c31e47fffe1f31594d207e513f:1a4f7e535d823202c4828f963d5b4404$" + } } diff --git a/public/images/pokemon/exp/746.png b/public/images/pokemon/exp/746.png index e2be0f27de7d630b0a3822b51f7cd70dc014b5ae..e06ee8916dee53c56537173bf67fc8afe6b9b770 100644 GIT binary patch literal 1527 zcmZ8heKga182@c;SzMQ6Szg0p&HG#1F6!2>Y}uB#gc3Uqd98~K$5qBq#LTYPrt(r9 z$6|(yR!lFLaLY>wU1f2*SMEWby7F>=>vsR?Ip_I)KF{ZQzR&kO-|so!OFncjO?3lx z001;8WKTa3nJPzY16Qy85s@H3lKi~ffrcTYw_pH^BGQNe&{V9k&VYk4-iI1MGBIN? zViUcX3Tuz*k0RN`Tr~g&RysI2J3wyy*Hv{Q{KkKs_#jsq6zmKA zQt9XN1IWJaa&&M|Wno(LdfVZBn;<((@gxSE@pxA;#S=MbdrS_%Q|u-OwzlGG6Q(ZC z;L|7LcF*s`5o!}o`*Zr8?{7lRmnz6%Yxz=7RHpW)O#Kndjgx!&t?ns$dneo1`{C{~ zY^(&M(6DnjWtXA3SS{wzrVG1i2~k;c+kWU%^9mP(& zMXmf8!r^qOzXF_LLiq;$z@<+_mn>7kVpObqm#+N$REanxGIm!4u5QQ0YwbxjUNd*5 zJbR_aH!n?o%8hOqm4yi6jwZM}&oqvVH>aG{j?hh`N%fbqLiuB2TE9+_5Gxfph1N6L zuIW~bt8LaZzKQom`93f{eN}s@h-rpkQC;=W z(pT(5W8U%AHje~BF(=A?^NsOf2QbZ0{s&rTa_clBb_VD723Sl-OSw2ACcTcv=Y$W^ zqijI|@$v#HDTHvnCB>?P6nt?;X@?eN7amwk#mGp(1-Po;)o1U%BL})Qw-!hRqp(9q zr#qh2EIp5}X0?0I{}h9az{QqIbLKFY#kZ*AF%x&9IM{lu##ZGz89ASm-NUX$*R$$u z?aauo?Ww{SLFgbq;_zdExOm5YZ(Ghj3mC-&zYG;cTW6tZaH11H^MgDwKE*)ZG9o&m z36^dw%a%6=L9v~8&EYa1r|OxGhr0~xf00wD-aLNzE^_WZH&$*GzOhLCn8evi!A)Hl zau$;CsQi^M3;p56X_v!Q1kZ#T%JW(|^H3IN~jQG`S6eefzt>)?VqyS5m| z(6nYhX?t2`a%W11UF#JCokd6IT*{Pq9~|RxhaZVE9x~6K6vkXO#}F7<*`pY;s}iSx zuhr4G?}LQO`lT!W-1pd#R)M7D?Z|H8aMjm0*Ztl=gLhes;t5UP&c0@~BZ;K}^5MMW zXFx%}L|9lV^j-;*Rxv$gNqP48Kx=fxaiVa4C7 O--SY=dp5X-v;PIZC4Q*@ literal 900 zcmV-~1AF|5P)Px#Hc(7dMF0Q*5D*X_Az@u+ZDDJ2oJCtVN0Ucn$v&LBVaVQ$oSluFo!Envu*JsA z($3h~+V1Y|{{H?~Y_NC$000tnQchC<|NsC0|NsC0|NsC0|NsC0|6aj{J^%m$-bqA3 zRA_F8$N)Ft(#lvq^yZ4qsotyauYDW8bdO zT&V{55r)oEP1lI4RF@&Nu_i>*G}Wmti_o13PaUpEUA93tuOUeMt+*O=S(Nv6UeP-0 zcZONKMm9FDBDS_zoZx+Z&bQlya`l};^e0}Z1BZ!58pHFOKhH>dkhP3z|o(Q^=|F5-37?6 zxK-8|kTcvC&u+WS4QTB64<~ZR!jBiC?$sahd|v zjYibK_Y3kuXtusWW<@NFXiO<_qCg+P8H^~s;c8(80DcrWg#`;9Ug!ucP9M%;8+PSY zx*2d9!#5mpKk!@>GdhcTxX}NH$CAs_7=tKxs4nwzJN5emDl+<<-OjMHfvW5mS5F}S zn0y@zVngxT=jEDz*wkbp4!3I*aoPO3lxlH>kBULpZ0@PR;{BLT^EJ87r!KB$Ol znY~K#Nj8&q9`B%9%QBdEJ@l~ zZfExk87N1p5mq2e+IeobHV86M8>vEgUt!WtbGujWAXCfiHIgp)qufqrKeIEEuK0K$ z4@ORs#>WGBFdZc8+#AR*3_%|$TK5KWcBVQB!yg6mPLg7sKrYVg3H~^c%QJh>N`bs1 zvy)K^jZLXTNVv80(n9h7mAn$3r zpSJU7?G@5rg0!7IYp;<*eOqa}_N@JVAeZ({pOCZrWlP(F%-&!56LM?IK;F*m{Uu4; z?aY3paXW1bGW($wYX@>^WBoub?yMik<*ii%xwNfvAn$0a8OVFvY6Wt6U*$k9ZTuI= a&#eFaD3{mT#6>3n00001jV3HCuUK7ORh&R5Mn+d3=$BJ>-<6gqazytA`=KKB)+a^~pppZ9gVz2l zz@%9u28wC2=}ayFAkiv?0cGX-kW)XI8lD_g8#?3_Oh zbTvRZ*W<#$y&z}}Xg~%6Fn}Qd7{qo$iv7k_TUx@_eeuH~PJ+P!6ok7VO~_UI;!lLQ zNN#?v^UxLc+JpEysF&&(PGgen<3cG%s0>##**{#@PdGW_?gvecVP z`U)x&DQU&zNXGl&S-VAuO3GBs+sDZFRzaJi0JN(X6W5s(RpV<1;%ir&j!Y!J-xv^D^cXKueg|DgK3r|9Y|S&hWc9EavvHP*>$UEct>JGC9(5(B zvJ09hdifU_qL5S}uXV-!&J$)LI!@PooRp%eT=3D$W_MNR;7qag8o@Uo5qdr9@@lRh z{%la=jHgre_K=2x#xlgC{$54=RG$!81pzs-iFK}Il)}^)-Y1P$`UUg^2iTU}lXbR|dwC1B-@oAL*5#@J10Ge*0~8Z7-V4>|yjCVejzX z%6BwZ1C5;*;pGW7S*8pG*&bj7!upJ&Vz$&8lI=~mS-J77uDvh_Px>xWkR54>8CV!s z=KMOea}r-`4(@D3;yueM-0nC?!f1SJ1?Du1-oc$Nm78Lbln)I8?SzyCEvqJ`Fm}~u z4(~Zy;dbLtYZ~h+yhDNRLEU?G$oqtD*E;NTQP_p-NIXVH=*HB@aQ?WaG=5a$80hud z?wU9#Y|?>U;F`?>B$K!$cnmE`mJRRn~ZHa||mszVGC4h9-H?%n8OWa+Fcr z6*UcsAU$DEs5GXDS0Cv_-6WJWc7lm$ywOtG6#Vle0zG{nV=3hQT`PLJXlB$We02G- zE_v{*?I*t_8-{qZuK`k!U#BOKn9NK*n3v5BoW8_m6lsCVOyV@vcRMlacWO=j%JCO{Bh?)p~&TA^sGB{xKXq+-O<_ zvGi&JU?=brr{=bsr7<{JnH)6!$LoX-zfUOZ`)1#6SphFE+rR3pR{bd;)t6H55uN=H Dzsqv2 literal 868 zcmV-q1DpJbP)Px#Fi=cXMF0Q*5D*X_Az_?FTZ(#U*p3DM&=@yIlSgF9jGUd=gOtX;m(0@6*xB0g z@xcE6{`Y3ZZ2$lO5Oh*bQvm<}|NsC0|NsC0|NsC0|G-d-LjV8*#z{m$R9Juxa|lO*O)^Xr49I`aWQR z2_k*eieO#W5|c(|wJkF+Q{u?XWpoOE8=pc}ZTqsLGt90+;PCo8wCoJDGZ3op@_MbP zR(-6+=#19jkTFfPRM9Z0$(|pw1r>dX7M>Ajun;NNkA*Y?(O6353MU722xJj5 z`oq)~6ad%}Kp2q&i)Pv!Ii?KK$U#$9M4tyr5ShbfhwGjEM?b$Ki#EE)K3l4W2N9}E zCWnmjm$f#O5DHgzh_3NN$QM8A-2y*Ez0!D1;GKJJaHC$4G=YcbgNhmT$UrBEVQ7C=0)Mv6;A<6%ZOLY4(H;QO&sToM|sA!0?E1#@ur zQ;ZZ>3XPVGcC^wc5eV0_o#K)_7~J_JARQ$KzJQbB(mbfOJ5B=fQ8IA$W2Lw_4_ae3 z5_uNPL3n~U@*s&?7W5!I!(XGG6Fd+!{59%1!30sqzNj|`1o$9n*%$SK>(K%HXE&l= z2MFQ)sK**5g14d`FAF*;5cQZ@kdBK)y}m4HN+9a7N-XLzyB$xDyHStVE_htsi+UaH zB%)qVJBg^r?^jE5@w>rF)ay9CN|H<84Q8OPUo*)i?*? Date: Wed, 21 May 2025 19:05:09 -0500 Subject: [PATCH 02/71] [GitHub] Make tests skip if no filters are matched (#5744) * Make tests skip if filters are matched * Tweak filter path * Make thing checkout thing * Change where workflow is skipped * Change where workflow is skipped * Update github test filters * Update test-filters.yml --------- Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com> --- .github/test-filters.yml | 19 ++++++++ .github/workflows/test-shard-template.yml | 5 ++ .github/workflows/tests.yml | 57 ++++++----------------- 3 files changed, 39 insertions(+), 42 deletions(-) create mode 100644 .github/test-filters.yml diff --git a/.github/test-filters.yml b/.github/test-filters.yml new file mode 100644 index 00000000000..89f4322adea --- /dev/null +++ b/.github/test-filters.yml @@ -0,0 +1,19 @@ +all: + - "src/**" + - "test/**" + - "public/**" + # Workflows that can impact tests + - ".github/workflows/test*.yml" + - ".github/test-filters.yml" + # top-level files + - "package*.json" + - ".nvrmc" # Updates to node version can break tests + - "vite*" # vite.config.ts, vite.vitest.config.ts, vitest.workspace.ts + - "tsconfig*.json" # tsconfig.json tweaking can impact compilation + - "global.d.ts" + - ".env*" + # Blanket negations for files that cannot impact tests + - "!**/*.py" # No .py files + - "!**/*.sh" # No .sh files + - "!**/*.md" # No .md files + - "!**/.git*" # .gitkeep and family diff --git a/.github/workflows/test-shard-template.yml b/.github/workflows/test-shard-template.yml index cee452f3a59..a1146cb3497 100644 --- a/.github/workflows/test-shard-template.yml +++ b/.github/workflows/test-shard-template.yml @@ -12,11 +12,16 @@ on: totalShards: required: true type: number + skip: + required: true + type: boolean + default: false jobs: test: name: Shard ${{ inputs.shard }} of ${{ inputs.totalShards }} runs-on: ubuntu-latest + if: ${{ !inputs.skip }} steps: - name: Check out Git repository uses: actions/checkout@v4.2.2 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d9db8401f8e..f04a1987eff 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -7,58 +7,30 @@ on: branches: - main # Trigger on push events to the main branch - beta # Trigger on push events to the beta branch - - release # Trigger on push events to the release branch - # go upvote https://github.com/actions/runner/issues/1182 and yell at microsoft until they fix this or ditch yml for workflows - paths: - # src and test files - - "src/**" - - "test/**" - - "public/**" - # Workflows that can impact tests - - ".github/workflows/test*.yml" - # top-level files - - "package*.json" - - ".nvrmc" # Updates to node version can break tests - - "vite.*.ts" # vite.config.ts, vite.vitest.config.ts, vitest.workspace.ts - - "tsconfig*.json" # tsconfig.json tweaking can impact compilation - - "global.d.ts" - - ".env.*" - # Blanket negations for files that cannot impact tests - - "!**/*.py" # No .py files - - "!**/*.sh" # No .sh files - - "!**/*.md" # No .md files - - "!**/.git*" # .gitkeep and family - pull_request: branches: - main # Trigger on pull request events targeting the main branch - beta # Trigger on pull request events targeting the beta branch - - release # Trigger on pull request events targeting the release branch - paths: # go upvote https://github.com/actions/runner/issues/1182 and yell at microsoft because until then we have to duplicate this - # src and test files - - "src/**" - - "test/**" - - "public/**" - # Workflows that can impact tests - - ".github/workflows/test*.yml" - # top-level files - - "package*.json" - - ".nvrmc" # Updates to node version can break tests - - "vite*" # vite.config.ts, vite.vitest.config.ts, vitest.workspace.ts - - "tsconfig*.json" # tsconfig.json tweaking can impact compilation - - "global.d.ts" - - ".env.*" - # Blanket negations for files that cannot impact tests - - "!**/*.py" # No .py files - - "!**/*.sh" # No .sh files - - "!**/*.md" # No .md files - - "!**/.git*" # .gitkeep and family merge_group: types: [checks_requested] jobs: + check-path-change-filter: + runs-on: ubuntu-latest + permissions: + pull-requests: read + outputs: + all: ${{ steps.filter.outputs.all }} + steps: + - name: checkout + uses: actions/checkout@v4 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 + with: + filters: .github/test-filters.yml + run-tests: name: Run Tests + needs: check-path-change-filter strategy: matrix: shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] @@ -67,3 +39,4 @@ jobs: project: main shard: ${{ matrix.shard }} totalShards: 10 + skip: ${{ needs.check-path-change-filter.outputs.all == 'false'}} From f0e806c50898526551368256d03759e56ce36a68 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Wed, 21 May 2025 22:18:24 -0500 Subject: [PATCH 03/71] [Misc] Move `allMoves` to `data-lists.ts` (#5860) --- src/battle-scene.ts | 2 +- src/data/abilities/ability.ts | 2 +- src/data/arena-tag.ts | 2 +- src/data/balance/egg-moves.ts | 2 +- src/data/battle-anims.ts | 3 ++- src/data/battler-tags.ts | 2 +- src/data/data-lists.ts | 2 ++ src/data/moves/move.ts | 7 ++---- .../encounters/bug-type-superfan-encounter.ts | 22 +++++-------------- src/data/pokemon-forms.ts | 2 +- src/field/pokemon.ts | 2 +- src/modifier/modifier-type.ts | 3 ++- src/modifier/modifier.ts | 2 +- src/phases/faint-phase.ts | 3 ++- src/phases/learn-move-phase.ts | 2 +- src/phases/move-phase.ts | 2 +- src/phases/select-target-phase.ts | 2 +- src/phases/switch-summon-phase.ts | 3 ++- src/phases/turn-start-phase.ts | 3 ++- src/system/game-data.ts | 2 +- src/ui/modifier-select-ui-handler.ts | 2 +- src/ui/party-ui-handler.ts | 3 ++- src/ui/pokedex-page-ui-handler.ts | 2 +- src/ui/pokedex-scan-ui-handler.ts | 2 +- src/ui/pokedex-ui-handler.ts | 2 +- src/ui/pokemon-hatch-info-container.ts | 2 +- src/ui/starter-select-ui-handler.ts | 2 +- test/abilities/aura_break.test.ts | 2 +- test/abilities/battery.test.ts | 2 +- test/abilities/battle_bond.test.ts | 3 ++- test/abilities/flower_veil.test.ts | 2 +- test/abilities/friend_guard.test.ts | 2 +- test/abilities/hustle.test.ts | 2 +- test/abilities/infiltrator.test.ts | 2 +- test/abilities/libero.test.ts | 2 +- test/abilities/magic_bounce.test.ts | 2 +- .../abilities/normal-move-type-change.test.ts | 2 +- test/abilities/normalize.test.ts | 2 +- test/abilities/power_spot.test.ts | 2 +- test/abilities/protean.test.ts | 2 +- test/abilities/sap_sipper.test.ts | 3 ++- test/abilities/serene_grace.test.ts | 2 +- test/abilities/sheer_force.test.ts | 3 ++- test/abilities/steely_spirit.test.ts | 2 +- test/abilities/supreme_overlord.test.ts | 2 +- test/abilities/unburden.test.ts | 3 ++- test/abilities/wimp_out.test.ts | 2 +- test/abilities/wonder_skin.test.ts | 2 +- test/arena/arena_gravity.test.ts | 2 +- test/arena/grassy_terrain.test.ts | 2 +- test/arena/weather_fog.test.ts | 2 +- test/arena/weather_strong_winds.test.ts | 2 +- test/battle/damage_calculation.test.ts | 2 +- test/battlerTags/substitute.test.ts | 2 +- test/enemy_command.test.ts | 2 +- test/items/reviver_seed.test.ts | 2 +- test/moves/astonish.test.ts | 2 +- test/moves/aurora_veil.test.ts | 3 ++- test/moves/burning_jealousy.test.ts | 2 +- test/moves/ceaseless_edge.test.ts | 2 +- test/moves/copycat.test.ts | 3 ++- test/moves/destiny_bond.test.ts | 2 +- test/moves/diamond_storm.test.ts | 2 +- test/moves/dig.test.ts | 2 +- test/moves/dragon_tail.test.ts | 2 +- test/moves/dynamax_cannon.test.ts | 2 +- test/moves/effectiveness.test.ts | 2 +- test/moves/fell_stinger.test.ts | 2 +- test/moves/fly.test.ts | 2 +- test/moves/freezy_frost.test.ts | 2 +- test/moves/fusion_flare_bolt.test.ts | 2 +- test/moves/glaive_rush.test.ts | 2 +- test/moves/hard_press.test.ts | 2 +- test/moves/hyper_beam.test.ts | 2 +- test/moves/lash_out.test.ts | 2 +- test/moves/last_respects.test.ts | 2 +- test/moves/light_screen.test.ts | 3 ++- test/moves/magic_coat.test.ts | 2 +- test/moves/metronome.test.ts | 3 ++- test/moves/moongeist_beam.test.ts | 3 ++- test/moves/pledge_moves.test.ts | 3 ++- test/moves/protect.test.ts | 2 +- test/moves/rage_fist.test.ts | 2 +- test/moves/reflect.test.ts | 3 ++- test/moves/retaliate.test.ts | 2 +- test/moves/rollout.test.ts | 2 +- test/moves/round.test.ts | 2 +- test/moves/scale_shot.test.ts | 2 +- test/moves/secret_power.test.ts | 2 +- test/moves/shell_side_arm.test.ts | 3 ++- test/moves/shell_trap.test.ts | 2 +- test/moves/sketch.test.ts | 3 ++- test/moves/solar_beam.test.ts | 2 +- test/moves/sparkly_swirl.test.ts | 2 +- test/moves/spectral_thief.test.ts | 2 +- test/moves/spit_up.test.ts | 2 +- test/moves/steamroller.test.ts | 2 +- test/moves/substitute.test.ts | 3 ++- test/moves/telekinesis.test.ts | 2 +- test/moves/tera_blast.test.ts | 3 ++- test/moves/toxic.test.ts | 2 +- test/moves/triple_arrows.test.ts | 3 ++- 102 files changed, 130 insertions(+), 121 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 5835ee08af5..cbaf07d579c 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -51,7 +51,7 @@ import { initGameSpeed } from "#app/system/game-speed"; import { Arena, ArenaBase } from "#app/field/arena"; import { GameData } from "#app/system/game-data"; import { addTextObject, getTextColor, TextStyle } from "#app/ui/text"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "./data/data-lists"; import { MusicPreference } from "#app/system/settings/settings"; import { getDefaultModifierTypeForTier, diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index ff86937622b..b677dd2bd11 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -9,7 +9,6 @@ import { FlinchAttr, OneHitKOAttr, HitHealAttr, - allMoves, StatusMove, SelfStatusMove, VariablePowerAttr, @@ -21,6 +20,7 @@ import { NeutralDamageAgainstFlyingTypeMultiplierAttr, FixedDamageAttr, } from "#app/data/moves/move"; +import { allMoves } from "../data-lists"; import { ArenaTagSide } from "#app/data/arena-tag"; import { BerryModifier, HitHealModifier, PokemonHeldItemModifier } from "#app/modifier/modifier"; import { TerrainType } from "#app/data/terrain"; diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 19c94a8a045..1955b51e8e0 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -2,7 +2,7 @@ import { globalScene } from "#app/global-scene"; import type { Arena } from "#app/field/arena"; import { PokemonType } from "#enums/pokemon-type"; import { BooleanHolder, NumberHolder, toDmgValue } from "#app/utils/common"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "./data-lists"; import { MoveTarget } from "#enums/MoveTarget"; import { MoveCategory } from "#enums/MoveCategory"; import { getPokemonNameWithAffix } from "#app/messages"; diff --git a/src/data/balance/egg-moves.ts b/src/data/balance/egg-moves.ts index 289ac60bcc5..73c6300166b 100644 --- a/src/data/balance/egg-moves.ts +++ b/src/data/balance/egg-moves.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "../data-lists"; import { getEnumKeys, getEnumValues } from "#app/utils/common"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/data/battle-anims.ts b/src/data/battle-anims.ts index 454bd40130c..f395c3bb832 100644 --- a/src/data/battle-anims.ts +++ b/src/data/battle-anims.ts @@ -1,5 +1,6 @@ import { globalScene } from "#app/global-scene"; -import { AttackMove, BeakBlastHeaderAttr, DelayedAttackAttr, SelfStatusMove, allMoves } from "./moves/move"; +import { AttackMove, BeakBlastHeaderAttr, DelayedAttackAttr, SelfStatusMove } from "./moves/move"; +import { allMoves } from "./data-lists"; import { MoveFlags } from "#enums/MoveFlags"; import type Pokemon from "../field/pokemon"; import { type nil, getFrameMs, getEnumKeys, getEnumValues, animationFileName } from "../utils/common"; diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 34fdd5409c8..c284fcd5130 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -12,12 +12,12 @@ import { allAbilities } from "./data-lists"; import { ChargeAnim, CommonAnim, CommonBattleAnim, MoveChargeAnim } from "#app/data/battle-anims"; import type Move from "#app/data/moves/move"; import { - allMoves, applyMoveAttrs, ConsecutiveUseDoublePowerAttr, HealOnAllyAttr, StatusCategoryOnAllyAttr, } from "#app/data/moves/move"; +import { allMoves } from "./data-lists"; import { MoveFlags } from "#enums/MoveFlags"; import { MoveCategory } from "#enums/MoveCategory"; import { SpeciesFormChangeAbilityTrigger } from "#app/data/pokemon-forms"; diff --git a/src/data/data-lists.ts b/src/data/data-lists.ts index d3c31abc851..c763a001280 100644 --- a/src/data/data-lists.ts +++ b/src/data/data-lists.ts @@ -1,3 +1,5 @@ import type { Ability } from "./abilities/ability-class"; +import type Move from "./moves/move"; export const allAbilities: Ability[] = []; +export const allMoves: Move[] = []; diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index 71807288abc..31ad3337926 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -66,7 +66,7 @@ import { VariableMovePowerAbAttr, WonderSkinAbAttr, } from "../abilities/ability"; -import { allAbilities } from "../data-lists"; +import { allAbilities, allMoves } from "../data-lists"; import { AttackTypeBoosterModifier, BerryModifier, @@ -8261,14 +8261,11 @@ export function getMoveTargets(user: Pokemon, move: Moves, replaceTarget?: MoveT return { targets: set.filter(p => p?.isActive(true)).map(p => p.getBattlerIndex()).filter(t => t !== undefined), multiple }; } -export const allMoves: Move[] = [ - new SelfStatusMove(Moves.NONE, PokemonType.NORMAL, MoveCategory.STATUS, -1, -1, 0, 1), -]; - export const selfStatLowerMoves: Moves[] = []; export function initMoves() { allMoves.push( + new SelfStatusMove(Moves.NONE, PokemonType.NORMAL, MoveCategory.STATUS, -1, -1, 0, 1), new AttackMove(Moves.POUND, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, 0, 1), new AttackMove(Moves.KARATE_CHOP, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 50, 100, 25, -1, 0, 1) .attr(HighCritAttr), diff --git a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts index 87b223d5245..17c1c31d55e 100644 --- a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts +++ b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts @@ -50,7 +50,7 @@ import { } from "#app/modifier/modifier"; import i18next from "i18next"; import MoveInfoOverlay from "#app/ui/move-info-overlay"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { ModifierTier } from "#app/modifier/modifier-tier"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; @@ -144,20 +144,14 @@ const POOL_3_POKEMON: { species: Species; formIndex?: number }[] = [ const POOL_4_POKEMON = [Species.GENESECT, Species.SLITHER_WING, Species.BUZZWOLE, Species.PHEROMOSA]; -const PHYSICAL_TUTOR_MOVES = [ - Moves.MEGAHORN, - Moves.ATTACK_ORDER, - Moves.BUG_BITE, - Moves.FIRST_IMPRESSION, - Moves.LUNGE -]; +const PHYSICAL_TUTOR_MOVES = [Moves.MEGAHORN, Moves.ATTACK_ORDER, Moves.BUG_BITE, Moves.FIRST_IMPRESSION, Moves.LUNGE]; const SPECIAL_TUTOR_MOVES = [ Moves.SILVER_WIND, Moves.SIGNAL_BEAM, Moves.BUG_BUZZ, Moves.POLLEN_PUFF, - Moves.STRUGGLE_BUG + Moves.STRUGGLE_BUG, ]; const STATUS_TUTOR_MOVES = [ @@ -165,16 +159,10 @@ const STATUS_TUTOR_MOVES = [ Moves.DEFEND_ORDER, Moves.RAGE_POWDER, Moves.STICKY_WEB, - Moves.SILK_TRAP + Moves.SILK_TRAP, ]; -const MISC_TUTOR_MOVES = [ - Moves.LEECH_LIFE, - Moves.U_TURN, - Moves.HEAL_ORDER, - Moves.QUIVER_DANCE, - Moves.INFESTATION, -]; +const MISC_TUTOR_MOVES = [Moves.LEECH_LIFE, Moves.U_TURN, Moves.HEAL_ORDER, Moves.QUIVER_DANCE, Moves.INFESTATION]; /** * Wave breakpoints that determine how strong to make the Bug-Type Superfan's team diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index f76462d2725..da594f7c27f 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -1,7 +1,7 @@ import { PokemonFormChangeItemModifier } from "../modifier/modifier"; import type Pokemon from "../field/pokemon"; import { StatusEffect } from "#enums/status-effect"; -import { allMoves } from "./moves/move"; +import { allMoves } from "./data-lists"; import { MoveCategory } from "#enums/MoveCategory"; import type { Constructor, nil } from "#app/utils/common"; import { Abilities } from "#enums/abilities"; diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 74ccb0c7f49..62ec8081c5d 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -16,7 +16,6 @@ import { applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, - allMoves, TypelessAttr, CritOnlyAttr, getMoveTargets, @@ -41,6 +40,7 @@ import { VariableMoveTypeChartAttr, HpSplitAttr, } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { MoveTarget } from "#enums/MoveTarget"; import { MoveCategory } from "#enums/MoveCategory"; import type { PokemonSpeciesForm } from "#app/data/pokemon-species"; diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 608eca1157e..4c61123eb2d 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -2,7 +2,8 @@ import { globalScene } from "#app/global-scene"; import { EvolutionItem, pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; import { tmPoolTiers, tmSpecies } from "#app/data/balance/tms"; import { getBerryEffectDescription, getBerryName } from "#app/data/berry"; -import { allMoves, AttackMove } from "#app/data/moves/move"; +import { AttackMove } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { getNatureName, getNatureStatMultiplier } from "#app/data/nature"; import { getPokeballCatchMultiplier, getPokeballName, MAX_PER_TYPE_POKEBALLS } from "#app/data/pokeball"; import { diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 94bb0e3419a..42e0155bdd8 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -1,7 +1,7 @@ import { FusionSpeciesFormEvolution, pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; import { getBerryEffectFunc, getBerryPredicate } from "#app/data/berry"; import { getLevelTotalExp } from "#app/data/exp"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { MAX_PER_TYPE_POKEBALLS } from "#app/data/pokeball"; import { type FormChangeItem, SpeciesFormChangeItemTrigger } from "#app/data/pokemon-forms"; import { getStatusEffectHealText } from "#app/data/status-effect"; diff --git a/src/phases/faint-phase.ts b/src/phases/faint-phase.ts index 1aa24d59fa0..bf0adf77061 100644 --- a/src/phases/faint-phase.ts +++ b/src/phases/faint-phase.ts @@ -11,7 +11,8 @@ import { } from "#app/data/abilities/ability"; import { BattlerTagLapseType } from "#app/data/battler-tags"; import { battleSpecDialogue } from "#app/data/dialogue"; -import { allMoves, PostVictoryStatStageChangeAttr } from "#app/data/moves/move"; +import { PostVictoryStatStageChangeAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms"; import { BattleSpec } from "#app/enums/battle-spec"; import { StatusEffect } from "#app/enums/status-effect"; diff --git a/src/phases/learn-move-phase.ts b/src/phases/learn-move-phase.ts index 515ce492b92..c585679ba4f 100644 --- a/src/phases/learn-move-phase.ts +++ b/src/phases/learn-move-phase.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims"; import type Move from "#app/data/moves/move"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { SpeciesFormChangeMoveLearnedTrigger } from "#app/data/pokemon-forms"; import { Moves } from "#enums/moves"; import { getPokemonNameWithAffix } from "#app/messages"; diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index 5d63fe6efea..d7cbf1b9a6f 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -16,7 +16,6 @@ import { CommonAnim } from "#app/data/battle-anims"; import { BattlerTagLapseType, CenterOfAttentionTag } from "#app/data/battler-tags"; import { AddArenaTrapTagAttr, - allMoves, applyMoveAttrs, BypassRedirectAttr, BypassSleepAttr, @@ -27,6 +26,7 @@ import { PreMoveMessageAttr, PreUseInterruptAttr, } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { MoveFlags } from "#enums/MoveFlags"; import { SpeciesFormChangePreMoveTrigger } from "#app/data/pokemon-forms"; import { getStatusEffectActivationText, getStatusEffectHealText } from "#app/data/status-effect"; diff --git a/src/phases/select-target-phase.ts b/src/phases/select-target-phase.ts index c969b9ca421..f8a8ecfbf18 100644 --- a/src/phases/select-target-phase.ts +++ b/src/phases/select-target-phase.ts @@ -5,7 +5,7 @@ import { UiMode } from "#enums/ui-mode"; import { CommandPhase } from "./command-phase"; import { PokemonPhase } from "./pokemon-phase"; import i18next from "#app/plugins/i18n"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; export class SelectTargetPhase extends PokemonPhase { // biome-ignore lint/complexity/noUselessConstructor: This makes `fieldIndex` required diff --git a/src/phases/switch-summon-phase.ts b/src/phases/switch-summon-phase.ts index a063b6e6863..c61eb73118f 100644 --- a/src/phases/switch-summon-phase.ts +++ b/src/phases/switch-summon-phase.ts @@ -6,7 +6,8 @@ import { PreSummonAbAttr, PreSwitchOutAbAttr, } from "#app/data/abilities/ability"; -import { allMoves, ForceSwitchOutAttr } from "#app/data/moves/move"; +import { ForceSwitchOutAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { getPokeballTintColor } from "#app/data/pokeball"; import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms"; import { TrainerSlot } from "#enums/trainer-slot"; diff --git a/src/phases/turn-start-phase.ts b/src/phases/turn-start-phase.ts index b802780bbb8..de510ef07d7 100644 --- a/src/phases/turn-start-phase.ts +++ b/src/phases/turn-start-phase.ts @@ -1,5 +1,6 @@ import { applyAbAttrs, BypassSpeedChanceAbAttr, PreventBypassSpeedChanceAbAttr } from "#app/data/abilities/ability"; -import { allMoves, MoveHeaderAttr } from "#app/data/moves/move"; +import { MoveHeaderAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { Stat } from "#app/enums/stat"; import type Pokemon from "#app/field/pokemon"; diff --git a/src/system/game-data.ts b/src/system/game-data.ts index 0c5e0b349ed..5711ad338c3 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -30,7 +30,7 @@ import { Nature } from "#enums/nature"; import { GameStats } from "#app/system/game-stats"; import { Tutorial } from "#app/tutorial"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { TrainerVariant } from "#app/field/trainer"; import type { Variant } from "#app/sprites/variant"; import { setSettingGamepad, SettingGamepad, settingGamepadDefaults } from "#app/system/settings/settings-gamepad"; diff --git a/src/ui/modifier-select-ui-handler.ts b/src/ui/modifier-select-ui-handler.ts index 9ba54491175..7f5bf997f88 100644 --- a/src/ui/modifier-select-ui-handler.ts +++ b/src/ui/modifier-select-ui-handler.ts @@ -9,7 +9,7 @@ import { LockModifierTiersModifier, PokemonHeldItemModifier, HealShopCostModifie import { handleTutorial, Tutorial } from "../tutorial"; import { Button } from "#enums/buttons"; import MoveInfoOverlay from "./move-info-overlay"; -import { allMoves } from "../data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { formatMoney, NumberHolder } from "#app/utils/common"; import Overrides from "#app/overrides"; import i18next from "i18next"; diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index 6e947796d63..f6105c51ee3 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -11,7 +11,8 @@ import { PokemonHeldItemModifier, SwitchEffectTransferModifier, } from "#app/modifier/modifier"; -import { allMoves, ForceSwitchOutAttr } from "#app/data/moves/move"; +import { ForceSwitchOutAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Gender, getGenderColor, getGenderSymbol } from "#app/data/gender"; import { StatusEffect } from "#enums/status-effect"; import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler"; diff --git a/src/ui/pokedex-page-ui-handler.ts b/src/ui/pokedex-page-ui-handler.ts index 051d267259f..ab729db8c26 100644 --- a/src/ui/pokedex-page-ui-handler.ts +++ b/src/ui/pokedex-page-ui-handler.ts @@ -9,7 +9,7 @@ import { allAbilities } from "#app/data/data-lists"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { GrowthRate, getGrowthRateColor } from "#app/data/exp"; import { Gender, getGenderColor, getGenderSymbol } from "#app/data/gender"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { getNatureName } from "#app/data/nature"; import type { SpeciesFormChange } from "#app/data/pokemon-forms"; import { pokemonFormChanges } from "#app/data/pokemon-forms"; diff --git a/src/ui/pokedex-scan-ui-handler.ts b/src/ui/pokedex-scan-ui-handler.ts index 45092d461a3..df3e7cbc8c4 100644 --- a/src/ui/pokedex-scan-ui-handler.ts +++ b/src/ui/pokedex-scan-ui-handler.ts @@ -7,7 +7,7 @@ import { isNullOrUndefined } from "#app/utils/common"; import { UiMode } from "#enums/ui-mode"; import { FilterTextRow } from "./filter-text"; import { allAbilities } from "#app/data/data-lists"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { allSpecies } from "#app/data/pokemon-species"; import i18next from "i18next"; diff --git a/src/ui/pokedex-ui-handler.ts b/src/ui/pokedex-ui-handler.ts index 935c9adfeb8..08fe5d7442f 100644 --- a/src/ui/pokedex-ui-handler.ts +++ b/src/ui/pokedex-ui-handler.ts @@ -37,7 +37,7 @@ import { addWindow } from "./ui-theme"; import type { OptionSelectConfig } from "./abstact-option-select-ui-handler"; import { FilterText, FilterTextRow } from "./filter-text"; import { allAbilities } from "#app/data/data-lists"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { speciesTmMoves } from "#app/data/balance/tms"; import { pokemonStarters } from "#app/data/balance/pokemon-evolutions"; import { Biome } from "#enums/biome"; diff --git a/src/ui/pokemon-hatch-info-container.ts b/src/ui/pokemon-hatch-info-container.ts index f3095cb48bf..5471a769d95 100644 --- a/src/ui/pokemon-hatch-info-container.ts +++ b/src/ui/pokemon-hatch-info-container.ts @@ -4,7 +4,7 @@ import { PokemonType } from "#enums/pokemon-type"; import { rgbHexToRgba, padInt } from "#app/utils/common"; import { TextStyle, addTextObject } from "#app/ui/text"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Species } from "#enums/species"; import { getEggTierForSpecies } from "#app/data/egg"; import { starterColors } from "#app/global-vars/starter-colors"; diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index f24a3ff9265..80acac6a6b4 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -13,7 +13,7 @@ import { allAbilities } from "#app/data/data-lists"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { GrowthRate, getGrowthRateColor } from "#app/data/exp"; import { Gender, getGenderColor, getGenderSymbol } from "#app/data/gender"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { getNatureName } from "#app/data/nature"; import { pokemonFormChanges } from "#app/data/pokemon-forms"; import type { LevelMoves } from "#app/data/balance/pokemon-level-moves"; diff --git a/test/abilities/aura_break.test.ts b/test/abilities/aura_break.test.ts index 523a2773c99..f88d7d875bf 100644 --- a/test/abilities/aura_break.test.ts +++ b/test/abilities/aura_break.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/abilities/battery.test.ts b/test/abilities/battery.test.ts index 6a1f77f4b27..251ca6ccf16 100644 --- a/test/abilities/battery.test.ts +++ b/test/abilities/battery.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; diff --git a/test/abilities/battle_bond.test.ts b/test/abilities/battle_bond.test.ts index d599b3212f9..d9f7b0bd0dc 100644 --- a/test/abilities/battle_bond.test.ts +++ b/test/abilities/battle_bond.test.ts @@ -1,4 +1,5 @@ -import { allMoves, MultiHitAttr } from "#app/data/moves/move"; +import { MultiHitAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { MultiHitType } from "#enums/MultiHitType"; import { Status } from "#app/data/status-effect"; import { Abilities } from "#enums/abilities"; diff --git a/test/abilities/flower_veil.test.ts b/test/abilities/flower_veil.test.ts index 1fd7dbb3ed7..ce45906c4a9 100644 --- a/test/abilities/flower_veil.test.ts +++ b/test/abilities/flower_veil.test.ts @@ -7,7 +7,7 @@ import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { BattlerTagType } from "#enums/battler-tag-type"; import { allAbilities } from "#app/data/data-lists"; diff --git a/test/abilities/friend_guard.test.ts b/test/abilities/friend_guard.test.ts index 43a378c47a2..0afe678b175 100644 --- a/test/abilities/friend_guard.test.ts +++ b/test/abilities/friend_guard.test.ts @@ -6,7 +6,7 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { BattlerIndex } from "#app/battle"; import { allAbilities } from "#app/data/data-lists"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { MoveCategory } from "#enums/MoveCategory"; describe("Moves - Friend Guard", () => { diff --git a/test/abilities/hustle.test.ts b/test/abilities/hustle.test.ts index bf2889eab63..85b6e611d6d 100644 --- a/test/abilities/hustle.test.ts +++ b/test/abilities/hustle.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { Stat } from "#app/enums/stat"; import { Moves } from "#enums/moves"; diff --git a/test/abilities/infiltrator.test.ts b/test/abilities/infiltrator.test.ts index 1a9f802dd9c..aeeb681e73c 100644 --- a/test/abilities/infiltrator.test.ts +++ b/test/abilities/infiltrator.test.ts @@ -1,5 +1,5 @@ import { ArenaTagSide } from "#app/data/arena-tag"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Stat } from "#enums/stat"; diff --git a/test/abilities/libero.test.ts b/test/abilities/libero.test.ts index 4adb828180e..a6942b18aad 100644 --- a/test/abilities/libero.test.ts +++ b/test/abilities/libero.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { PokemonType } from "#enums/pokemon-type"; import { Weather } from "#app/data/weather"; import type { PlayerPokemon } from "#app/field/pokemon"; diff --git a/test/abilities/magic_bounce.test.ts b/test/abilities/magic_bounce.test.ts index 11131640a0f..78e4114724c 100644 --- a/test/abilities/magic_bounce.test.ts +++ b/test/abilities/magic_bounce.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; import { allAbilities } from "#app/data/data-lists"; import { ArenaTagSide } from "#app/data/arena-tag"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Stat } from "#app/enums/stat"; diff --git a/test/abilities/normal-move-type-change.test.ts b/test/abilities/normal-move-type-change.test.ts index 50c8e04af1f..88a7b49e26b 100644 --- a/test/abilities/normal-move-type-change.test.ts +++ b/test/abilities/normal-move-type-change.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { PokemonType } from "#enums/pokemon-type"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#app/enums/moves"; diff --git a/test/abilities/normalize.test.ts b/test/abilities/normalize.test.ts index 3256f0188d1..a299294f543 100644 --- a/test/abilities/normalize.test.ts +++ b/test/abilities/normalize.test.ts @@ -1,5 +1,5 @@ import { TYPE_BOOST_ITEM_BOOST_PERCENT } from "#app/constants"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { toDmgValue } from "#app/utils/common"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/test/abilities/power_spot.test.ts b/test/abilities/power_spot.test.ts index 3e4f79d7445..c3accdb04f8 100644 --- a/test/abilities/power_spot.test.ts +++ b/test/abilities/power_spot.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; diff --git a/test/abilities/protean.test.ts b/test/abilities/protean.test.ts index 8f7633e1327..8e6b69dabd6 100644 --- a/test/abilities/protean.test.ts +++ b/test/abilities/protean.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { PokemonType } from "#enums/pokemon-type"; import { Weather } from "#app/data/weather"; import type { PlayerPokemon } from "#app/field/pokemon"; diff --git a/test/abilities/sap_sipper.test.ts b/test/abilities/sap_sipper.test.ts index 2157177b84c..03a6ee5d398 100644 --- a/test/abilities/sap_sipper.test.ts +++ b/test/abilities/sap_sipper.test.ts @@ -9,7 +9,8 @@ import { Species } from "#enums/species"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { allMoves, RandomMoveAttr } from "#app/data/moves/move"; +import { RandomMoveAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; // See also: TypeImmunityAbAttr describe("Abilities - Sap Sipper", () => { diff --git a/test/abilities/serene_grace.test.ts b/test/abilities/serene_grace.test.ts index 2547971a4b8..191d5a44f19 100644 --- a/test/abilities/serene_grace.test.ts +++ b/test/abilities/serene_grace.test.ts @@ -4,7 +4,7 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { FlinchAttr } from "#app/data/moves/move"; diff --git a/test/abilities/sheer_force.test.ts b/test/abilities/sheer_force.test.ts index ce3232a1869..6bb0a631124 100644 --- a/test/abilities/sheer_force.test.ts +++ b/test/abilities/sheer_force.test.ts @@ -7,7 +7,8 @@ import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { allMoves, FlinchAttr } from "#app/data/moves/move"; +import { FlinchAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; describe("Abilities - Sheer Force", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/steely_spirit.test.ts b/test/abilities/steely_spirit.test.ts index be759724c3a..09805d61e14 100644 --- a/test/abilities/steely_spirit.test.ts +++ b/test/abilities/steely_spirit.test.ts @@ -1,5 +1,5 @@ import { allAbilities } from "#app/data/data-lists"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/abilities/supreme_overlord.test.ts b/test/abilities/supreme_overlord.test.ts index 8af0a0ac37c..6cc52de64bf 100644 --- a/test/abilities/supreme_overlord.test.ts +++ b/test/abilities/supreme_overlord.test.ts @@ -7,7 +7,7 @@ import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; describe("Abilities - Supreme Overlord", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/unburden.test.ts b/test/abilities/unburden.test.ts index 2af889d1da4..ff28c3b6a09 100644 --- a/test/abilities/unburden.test.ts +++ b/test/abilities/unburden.test.ts @@ -1,6 +1,7 @@ import { BattlerIndex } from "#app/battle"; import { PostItemLostAbAttr } from "#app/data/abilities/ability"; -import { allMoves, StealHeldItemChanceAttr } from "#app/data/moves/move"; +import { StealHeldItemChanceAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import type Pokemon from "#app/field/pokemon"; import type { ContactHeldItemTransferChanceModifier } from "#app/modifier/modifier"; import { Abilities } from "#enums/abilities"; diff --git a/test/abilities/wimp_out.test.ts b/test/abilities/wimp_out.test.ts index f558efdb103..67885a82163 100644 --- a/test/abilities/wimp_out.test.ts +++ b/test/abilities/wimp_out.test.ts @@ -1,6 +1,6 @@ import { BattlerIndex } from "#app/battle"; import { ArenaTagSide } from "#app/data/arena-tag"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import GameManager from "#test/testUtils/gameManager"; import { toDmgValue } from "#app/utils/common"; import { Abilities } from "#enums/abilities"; diff --git a/test/abilities/wonder_skin.test.ts b/test/abilities/wonder_skin.test.ts index d039ba1e6a7..fd4cc77bd1c 100644 --- a/test/abilities/wonder_skin.test.ts +++ b/test/abilities/wonder_skin.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/test/arena/arena_gravity.test.ts b/test/arena/arena_gravity.test.ts index 0ce5ac0ea4c..33a1631ad18 100644 --- a/test/arena/arena_gravity.test.ts +++ b/test/arena/arena_gravity.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#enums/abilities"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; diff --git a/test/arena/grassy_terrain.test.ts b/test/arena/grassy_terrain.test.ts index f8ca07bd65e..05b57d210de 100644 --- a/test/arena/grassy_terrain.test.ts +++ b/test/arena/grassy_terrain.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/arena/weather_fog.test.ts b/test/arena/weather_fog.test.ts index b1edf75704b..ae41c9d14e8 100644 --- a/test/arena/weather_fog.test.ts +++ b/test/arena/weather_fog.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Moves } from "#enums/moves"; diff --git a/test/arena/weather_strong_winds.test.ts b/test/arena/weather_strong_winds.test.ts index 9fcdb18c872..b996d8bf62a 100644 --- a/test/arena/weather_strong_winds.test.ts +++ b/test/arena/weather_strong_winds.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { StatusEffect } from "#app/enums/status-effect"; import { TurnStartPhase } from "#app/phases/turn-start-phase"; import { Abilities } from "#enums/abilities"; diff --git a/test/battle/damage_calculation.test.ts b/test/battle/damage_calculation.test.ts index 26772cbc4f0..1d027a96792 100644 --- a/test/battle/damage_calculation.test.ts +++ b/test/battle/damage_calculation.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import type { EnemyPersistentModifier } from "#app/modifier/modifier"; import { modifierTypes } from "#app/modifier/modifier-type"; import { Abilities } from "#enums/abilities"; diff --git a/test/battlerTags/substitute.test.ts b/test/battlerTags/substitute.test.ts index c2a99299716..827b9f48f85 100644 --- a/test/battlerTags/substitute.test.ts +++ b/test/battlerTags/substitute.test.ts @@ -7,7 +7,7 @@ import { BattlerTagLapseType, BindTag, SubstituteTag } from "#app/data/battler-t import { Moves } from "#app/enums/moves"; import { PokemonAnimType } from "#app/enums/pokemon-anim-type"; import * as messages from "#app/messages"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; import GameManager from "#test/testUtils/gameManager"; diff --git a/test/enemy_command.test.ts b/test/enemy_command.test.ts index ae1f2918798..e5199847702 100644 --- a/test/enemy_command.test.ts +++ b/test/enemy_command.test.ts @@ -1,5 +1,5 @@ import type BattleScene from "#app/battle-scene"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { MoveCategory } from "#enums/MoveCategory"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#app/enums/moves"; diff --git a/test/items/reviver_seed.test.ts b/test/items/reviver_seed.test.ts index 3c67481a904..13aaf98249e 100644 --- a/test/items/reviver_seed.test.ts +++ b/test/items/reviver_seed.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import type { PokemonInstantReviveModifier } from "#app/modifier/modifier"; import { Abilities } from "#enums/abilities"; diff --git a/test/moves/astonish.test.ts b/test/moves/astonish.test.ts index 1713df1de15..accddcd545d 100644 --- a/test/moves/astonish.test.ts +++ b/test/moves/astonish.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { BerryPhase } from "#app/phases/berry-phase"; import { CommandPhase } from "#app/phases/command-phase"; diff --git a/test/moves/aurora_veil.test.ts b/test/moves/aurora_veil.test.ts index e9ab66d4203..96e74ec5a9e 100644 --- a/test/moves/aurora_veil.test.ts +++ b/test/moves/aurora_veil.test.ts @@ -1,7 +1,8 @@ import type BattleScene from "#app/battle-scene"; import { ArenaTagSide } from "#app/data/arena-tag"; import type Move from "#app/data/moves/move"; -import { allMoves, CritOnlyAttr } from "#app/data/moves/move"; +import { CritOnlyAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import type Pokemon from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; diff --git a/test/moves/burning_jealousy.test.ts b/test/moves/burning_jealousy.test.ts index ea02bf5f4f5..1d9ba974687 100644 --- a/test/moves/burning_jealousy.test.ts +++ b/test/moves/burning_jealousy.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { StatusEffect } from "#app/enums/status-effect"; import { Moves } from "#enums/moves"; diff --git a/test/moves/ceaseless_edge.test.ts b/test/moves/ceaseless_edge.test.ts index 72e552bef6f..e88b301239d 100644 --- a/test/moves/ceaseless_edge.test.ts +++ b/test/moves/ceaseless_edge.test.ts @@ -1,5 +1,5 @@ import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; diff --git a/test/moves/copycat.test.ts b/test/moves/copycat.test.ts index 2e6e8098835..96c21723ab9 100644 --- a/test/moves/copycat.test.ts +++ b/test/moves/copycat.test.ts @@ -1,5 +1,6 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves, RandomMoveAttr } from "#app/data/moves/move"; +import { RandomMoveAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Stat } from "#app/enums/stat"; import { MoveResult } from "#app/field/pokemon"; import { Abilities } from "#enums/abilities"; diff --git a/test/moves/destiny_bond.test.ts b/test/moves/destiny_bond.test.ts index 6e6446f464f..16014677f39 100644 --- a/test/moves/destiny_bond.test.ts +++ b/test/moves/destiny_bond.test.ts @@ -1,6 +1,6 @@ import type { ArenaTrapTag } from "#app/data/arena-tag"; import { ArenaTagSide } from "#app/data/arena-tag"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#enums/abilities"; import { ArenaTagType } from "#enums/arena-tag-type"; import { Moves } from "#enums/moves"; diff --git a/test/moves/diamond_storm.test.ts b/test/moves/diamond_storm.test.ts index 9ba62bbc52d..1e64babacfb 100644 --- a/test/moves/diamond_storm.test.ts +++ b/test/moves/diamond_storm.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/moves/dig.test.ts b/test/moves/dig.test.ts index 80d51a5c2d5..e8f39c05fd8 100644 --- a/test/moves/dig.test.ts +++ b/test/moves/dig.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#enums/abilities"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Moves } from "#enums/moves"; diff --git a/test/moves/dragon_tail.test.ts b/test/moves/dragon_tail.test.ts index 31e5560d4e0..0e7cd04d078 100644 --- a/test/moves/dragon_tail.test.ts +++ b/test/moves/dragon_tail.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Status } from "#app/data/status-effect"; import { Challenges } from "#enums/challenges"; import { StatusEffect } from "#enums/status-effect"; diff --git a/test/moves/dynamax_cannon.test.ts b/test/moves/dynamax_cannon.test.ts index 84def8a821f..6c4f1a321e3 100644 --- a/test/moves/dynamax_cannon.test.ts +++ b/test/moves/dynamax_cannon.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Moves } from "#enums/moves"; diff --git a/test/moves/effectiveness.test.ts b/test/moves/effectiveness.test.ts index fb03f1c10a0..9fc6c7b8ce7 100644 --- a/test/moves/effectiveness.test.ts +++ b/test/moves/effectiveness.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { TrainerSlot } from "#enums/trainer-slot"; import { PokemonType } from "#enums/pokemon-type"; diff --git a/test/moves/fell_stinger.test.ts b/test/moves/fell_stinger.test.ts index 11731d8a06f..50813029c05 100644 --- a/test/moves/fell_stinger.test.ts +++ b/test/moves/fell_stinger.test.ts @@ -7,7 +7,7 @@ import { Moves } from "#enums/moves"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#app/enums/status-effect"; import { WeatherType } from "#app/enums/weather-type"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; describe("Moves - Fell Stinger", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/fly.test.ts b/test/moves/fly.test.ts index f200e976704..74f8bc4a770 100644 --- a/test/moves/fly.test.ts +++ b/test/moves/fly.test.ts @@ -8,7 +8,7 @@ import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; describe("Moves - Fly", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/freezy_frost.test.ts b/test/moves/freezy_frost.test.ts index 4eb3114a5ba..7cee9bfb372 100644 --- a/test/moves/freezy_frost.test.ts +++ b/test/moves/freezy_frost.test.ts @@ -5,7 +5,7 @@ import { Species } from "#enums/species"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { CommandPhase } from "#app/phases/command-phase"; describe("Moves - Freezy Frost", () => { diff --git a/test/moves/fusion_flare_bolt.test.ts b/test/moves/fusion_flare_bolt.test.ts index ce6bb62d1d0..da2d48a7cdb 100644 --- a/test/moves/fusion_flare_bolt.test.ts +++ b/test/moves/fusion_flare_bolt.test.ts @@ -1,6 +1,6 @@ import { Stat } from "#enums/stat"; import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import type Move from "#app/data/moves/move"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; diff --git a/test/moves/glaive_rush.test.ts b/test/moves/glaive_rush.test.ts index 3c2bcea7884..979c26ca20f 100644 --- a/test/moves/glaive_rush.test.ts +++ b/test/moves/glaive_rush.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; diff --git a/test/moves/hard_press.test.ts b/test/moves/hard_press.test.ts index 8fe768cb8e4..e1a01c0109d 100644 --- a/test/moves/hard_press.test.ts +++ b/test/moves/hard_press.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/test/moves/hyper_beam.test.ts b/test/moves/hyper_beam.test.ts index 5b370f49e4c..e6b3955ef0d 100644 --- a/test/moves/hyper_beam.test.ts +++ b/test/moves/hyper_beam.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Moves } from "#app/enums/moves"; diff --git a/test/moves/lash_out.test.ts b/test/moves/lash_out.test.ts index c80a8ce348a..e45df4fc998 100644 --- a/test/moves/lash_out.test.ts +++ b/test/moves/lash_out.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/moves/last_respects.test.ts b/test/moves/last_respects.test.ts index a69ecb2e989..89c4896ae56 100644 --- a/test/moves/last_respects.test.ts +++ b/test/moves/last_respects.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#app/battle"; import { Species } from "#enums/species"; import { Abilities } from "#enums/abilities"; import GameManager from "#test/testUtils/gameManager"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import type Move from "#app/data/moves/move"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import Phaser from "phaser"; diff --git a/test/moves/light_screen.test.ts b/test/moves/light_screen.test.ts index cea26f29542..93d51ad7372 100644 --- a/test/moves/light_screen.test.ts +++ b/test/moves/light_screen.test.ts @@ -1,7 +1,8 @@ import type BattleScene from "#app/battle-scene"; import { ArenaTagSide } from "#app/data/arena-tag"; import type Move from "#app/data/moves/move"; -import { allMoves, CritOnlyAttr } from "#app/data/moves/move"; +import { CritOnlyAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import type Pokemon from "#app/field/pokemon"; diff --git a/test/moves/magic_coat.test.ts b/test/moves/magic_coat.test.ts index 23deef97318..4e0bd7f0a98 100644 --- a/test/moves/magic_coat.test.ts +++ b/test/moves/magic_coat.test.ts @@ -1,6 +1,6 @@ import { BattlerIndex } from "#app/battle"; import { ArenaTagSide } from "#app/data/arena-tag"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Stat } from "#app/enums/stat"; diff --git a/test/moves/metronome.test.ts b/test/moves/metronome.test.ts index bf177fb1a93..75b4b7190e6 100644 --- a/test/moves/metronome.test.ts +++ b/test/moves/metronome.test.ts @@ -1,5 +1,6 @@ import { RechargingTag, SemiInvulnerableTag } from "#app/data/battler-tags"; -import { allMoves, RandomMoveAttr } from "#app/data/moves/move"; +import { RandomMoveAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { Stat } from "#app/enums/stat"; import { CommandPhase } from "#app/phases/command-phase"; diff --git a/test/moves/moongeist_beam.test.ts b/test/moves/moongeist_beam.test.ts index 82a2567377b..29398776f7f 100644 --- a/test/moves/moongeist_beam.test.ts +++ b/test/moves/moongeist_beam.test.ts @@ -1,4 +1,5 @@ -import { allMoves, RandomMoveAttr } from "#app/data/moves/move"; +import { RandomMoveAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/moves/pledge_moves.test.ts b/test/moves/pledge_moves.test.ts index 2bfd408e5fb..9dbf2b4cb02 100644 --- a/test/moves/pledge_moves.test.ts +++ b/test/moves/pledge_moves.test.ts @@ -1,7 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { allAbilities } from "#app/data/data-lists"; import { ArenaTagSide } from "#app/data/arena-tag"; -import { allMoves, FlinchAttr } from "#app/data/moves/move"; +import { FlinchAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { PokemonType } from "#enums/pokemon-type"; import { ArenaTagType } from "#enums/arena-tag-type"; import { Stat } from "#enums/stat"; diff --git a/test/moves/protect.test.ts b/test/moves/protect.test.ts index 183430f8654..14844019b31 100644 --- a/test/moves/protect.test.ts +++ b/test/moves/protect.test.ts @@ -5,7 +5,7 @@ import { Species } from "#enums/species"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Stat } from "#enums/stat"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag"; import { BattlerIndex } from "#app/battle"; import { MoveResult } from "#app/field/pokemon"; diff --git a/test/moves/rage_fist.test.ts b/test/moves/rage_fist.test.ts index f215c5955c6..0aabb717f1b 100644 --- a/test/moves/rage_fist.test.ts +++ b/test/moves/rage_fist.test.ts @@ -2,7 +2,7 @@ import { BattlerIndex } from "#app/battle"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import type Move from "#app/data/moves/move"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; diff --git a/test/moves/reflect.test.ts b/test/moves/reflect.test.ts index b8338cea8cf..268d9ebb71b 100644 --- a/test/moves/reflect.test.ts +++ b/test/moves/reflect.test.ts @@ -1,7 +1,8 @@ import type BattleScene from "#app/battle-scene"; import { ArenaTagSide } from "#app/data/arena-tag"; import type Move from "#app/data/moves/move"; -import { allMoves, CritOnlyAttr } from "#app/data/moves/move"; +import { CritOnlyAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import type Pokemon from "#app/field/pokemon"; diff --git a/test/moves/retaliate.test.ts b/test/moves/retaliate.test.ts index 9ad7cd7853b..81ea353a120 100644 --- a/test/moves/retaliate.test.ts +++ b/test/moves/retaliate.test.ts @@ -3,7 +3,7 @@ import Phaser from "phaser"; import GameManager from "#test/testUtils/gameManager"; import { Species } from "#enums/species"; import { Moves } from "#enums/moves"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import type Move from "#app/data/moves/move"; describe("Moves - Retaliate", () => { diff --git a/test/moves/rollout.test.ts b/test/moves/rollout.test.ts index b477fd8274f..dab9ef67596 100644 --- a/test/moves/rollout.test.ts +++ b/test/moves/rollout.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { CommandPhase } from "#app/phases/command-phase"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/test/moves/round.test.ts b/test/moves/round.test.ts index a58efb730f8..43e505705ae 100644 --- a/test/moves/round.test.ts +++ b/test/moves/round.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/test/moves/scale_shot.test.ts b/test/moves/scale_shot.test.ts index 4731ccf9574..49e68c75450 100644 --- a/test/moves/scale_shot.test.ts +++ b/test/moves/scale_shot.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; diff --git a/test/moves/secret_power.test.ts b/test/moves/secret_power.test.ts index cbc0cded28b..f6870c5ed1d 100644 --- a/test/moves/secret_power.test.ts +++ b/test/moves/secret_power.test.ts @@ -2,7 +2,7 @@ import { Abilities } from "#enums/abilities"; import { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; import { Stat } from "#enums/stat"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Species } from "#enums/species"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; diff --git a/test/moves/shell_side_arm.test.ts b/test/moves/shell_side_arm.test.ts index e43bf6db037..4d7ae7025a1 100644 --- a/test/moves/shell_side_arm.test.ts +++ b/test/moves/shell_side_arm.test.ts @@ -1,5 +1,6 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves, ShellSideArmCategoryAttr } from "#app/data/moves/move"; +import { ShellSideArmCategoryAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import type Move from "#app/data/moves/move"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/test/moves/shell_trap.test.ts b/test/moves/shell_trap.test.ts index f6501c2cd9e..313d02b4d73 100644 --- a/test/moves/shell_trap.test.ts +++ b/test/moves/shell_trap.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; import { MoveResult } from "#app/field/pokemon"; diff --git a/test/moves/sketch.test.ts b/test/moves/sketch.test.ts index c9755189a71..fc38d6a1147 100644 --- a/test/moves/sketch.test.ts +++ b/test/moves/sketch.test.ts @@ -7,7 +7,8 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { StatusEffect } from "#app/enums/status-effect"; import { BattlerIndex } from "#app/battle"; -import { allMoves, RandomMoveAttr } from "#app/data/moves/move"; +import { RandomMoveAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; describe("Moves - Sketch", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/solar_beam.test.ts b/test/moves/solar_beam.test.ts index 49605a70c66..8566859a4bc 100644 --- a/test/moves/solar_beam.test.ts +++ b/test/moves/solar_beam.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { BattlerTagType } from "#enums/battler-tag-type"; import { WeatherType } from "#enums/weather-type"; import { MoveResult } from "#app/field/pokemon"; diff --git a/test/moves/sparkly_swirl.test.ts b/test/moves/sparkly_swirl.test.ts index b9df302933c..9eb018d4be7 100644 --- a/test/moves/sparkly_swirl.test.ts +++ b/test/moves/sparkly_swirl.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { StatusEffect } from "#app/enums/status-effect"; import { CommandPhase } from "#app/phases/command-phase"; import { Abilities } from "#enums/abilities"; diff --git a/test/moves/spectral_thief.test.ts b/test/moves/spectral_thief.test.ts index 2654ab1ad8d..4c2e9f96274 100644 --- a/test/moves/spectral_thief.test.ts +++ b/test/moves/spectral_thief.test.ts @@ -1,7 +1,7 @@ import { Abilities } from "#enums/abilities"; import { BattlerIndex } from "#app/battle"; import { Stat } from "#enums/stat"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; diff --git a/test/moves/spit_up.test.ts b/test/moves/spit_up.test.ts index c034117bc64..7197d9b75c3 100644 --- a/test/moves/spit_up.test.ts +++ b/test/moves/spit_up.test.ts @@ -1,6 +1,6 @@ import { Stat } from "#enums/stat"; import { StockpilingTag } from "#app/data/battler-tags"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import type { TurnMove } from "#app/field/pokemon"; import { MoveResult } from "#app/field/pokemon"; diff --git a/test/moves/steamroller.test.ts b/test/moves/steamroller.test.ts index b32b4551c81..a77a30321e1 100644 --- a/test/moves/steamroller.test.ts +++ b/test/moves/steamroller.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import type { DamageCalculationResult } from "#app/field/pokemon"; import { Abilities } from "#enums/abilities"; diff --git a/test/moves/substitute.test.ts b/test/moves/substitute.test.ts index 7f4a2e69f9e..6d0995d3a26 100644 --- a/test/moves/substitute.test.ts +++ b/test/moves/substitute.test.ts @@ -1,7 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { ArenaTagSide } from "#app/data/arena-tag"; import { SubstituteTag, TrappedTag } from "#app/data/battler-tags"; -import { allMoves, StealHeldItemChanceAttr } from "#app/data/moves/move"; +import { StealHeldItemChanceAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { MoveResult } from "#app/field/pokemon"; import type { CommandPhase } from "#app/phases/command-phase"; import GameManager from "#test/testUtils/gameManager"; diff --git a/test/moves/telekinesis.test.ts b/test/moves/telekinesis.test.ts index d11cc0861f0..e889926b5c8 100644 --- a/test/moves/telekinesis.test.ts +++ b/test/moves/telekinesis.test.ts @@ -1,5 +1,5 @@ import { BattlerTagType } from "#enums/battler-tag-type"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/moves/tera_blast.test.ts b/test/moves/tera_blast.test.ts index efdb75e8156..c18c7f25498 100644 --- a/test/moves/tera_blast.test.ts +++ b/test/moves/tera_blast.test.ts @@ -1,6 +1,7 @@ import { BattlerIndex } from "#app/battle"; import { Stat } from "#enums/stat"; -import { allMoves, TeraMoveCategoryAttr } from "#app/data/moves/move"; +import { TeraMoveCategoryAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import type Move from "#app/data/moves/move"; import { PokemonType } from "#enums/pokemon-type"; import { Abilities } from "#app/enums/abilities"; diff --git a/test/moves/toxic.test.ts b/test/moves/toxic.test.ts index f908d27ec7e..c773abb5bd3 100644 --- a/test/moves/toxic.test.ts +++ b/test/moves/toxic.test.ts @@ -5,7 +5,7 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { StatusEffect } from "#enums/status-effect"; import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; describe("Moves - Toxic", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/triple_arrows.test.ts b/test/moves/triple_arrows.test.ts index 58ce8a9c528..bd061f4059d 100644 --- a/test/moves/triple_arrows.test.ts +++ b/test/moves/triple_arrows.test.ts @@ -1,4 +1,5 @@ -import { allMoves, FlinchAttr, StatStageChangeAttr } from "#app/data/moves/move"; +import { FlinchAttr, StatStageChangeAttr } from "#app/data/moves/move"; +import { allMoves } from "#app/data/data-lists"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import type Move from "#app/data/moves/move"; From da6cdaf187dbecddfe7ca42603604fc04435fa05 Mon Sep 17 00:00:00 2001 From: pom-eranian Date: Wed, 21 May 2025 23:25:07 -0400 Subject: [PATCH 04/71] [Sprite][Color][QoL] Removed unchanged entries in variant json (#5765) * Removed unchanged color entries (front) * Removed unchanged color entries (back) * Removed unchanged color entries (exp) * Removed unchanged color entries (exp back) * Removed unchanged color entries (female front, back, exp) --- public/images/pokemon/variant/1.json | 6 -- public/images/pokemon/variant/100.json | 2 - public/images/pokemon/variant/1000.json | 3 - public/images/pokemon/variant/1001.json | 12 +-- public/images/pokemon/variant/1003.json | 4 - public/images/pokemon/variant/1004.json | 8 +- public/images/pokemon/variant/1006.json | 2 - .../pokemon/variant/1008-ultimate-mode.json | 18 +---- public/images/pokemon/variant/101.json | 6 -- public/images/pokemon/variant/1010.json | 8 +- public/images/pokemon/variant/1018.json | 2 - public/images/pokemon/variant/1022.json | 4 - public/images/pokemon/variant/1023.json | 12 +-- public/images/pokemon/variant/111.json | 10 +-- public/images/pokemon/variant/112.json | 14 +--- public/images/pokemon/variant/114.json | 6 -- public/images/pokemon/variant/116.json | 6 -- public/images/pokemon/variant/117.json | 4 - public/images/pokemon/variant/118.json | 4 - public/images/pokemon/variant/119.json | 3 - public/images/pokemon/variant/120.json | 2 - public/images/pokemon/variant/121.json | 2 - public/images/pokemon/variant/123.json | 26 +----- public/images/pokemon/variant/125.json | 4 - public/images/pokemon/variant/126.json | 4 - public/images/pokemon/variant/127-mega.json | 12 +-- public/images/pokemon/variant/127.json | 8 +- public/images/pokemon/variant/129.json | 5 +- public/images/pokemon/variant/130-mega.json | 5 -- public/images/pokemon/variant/130.json | 3 - .../pokemon/variant/131-gigantamax.json | 6 -- public/images/pokemon/variant/131.json | 5 -- public/images/pokemon/variant/132.json | 2 - .../images/pokemon/variant/133-partner.json | 4 - public/images/pokemon/variant/133.json | 4 - public/images/pokemon/variant/134.json | 10 +-- public/images/pokemon/variant/135.json | 3 - public/images/pokemon/variant/136.json | 6 -- public/images/pokemon/variant/137.json | 2 - public/images/pokemon/variant/138.json | 2 - public/images/pokemon/variant/139.json | 4 +- public/images/pokemon/variant/140.json | 4 - public/images/pokemon/variant/142-mega.json | 4 - public/images/pokemon/variant/142.json | 6 -- public/images/pokemon/variant/144.json | 6 +- public/images/pokemon/variant/145.json | 9 --- public/images/pokemon/variant/146.json | 18 +---- public/images/pokemon/variant/147.json | 2 - public/images/pokemon/variant/148.json | 2 - public/images/pokemon/variant/149.json | 12 +-- public/images/pokemon/variant/150-mega-x.json | 4 - public/images/pokemon/variant/150-mega-y.json | 5 -- public/images/pokemon/variant/150.json | 4 - public/images/pokemon/variant/151.json | 6 -- public/images/pokemon/variant/161.json | 5 +- public/images/pokemon/variant/162.json | 7 +- public/images/pokemon/variant/163.json | 10 +-- public/images/pokemon/variant/169.json | 13 +-- public/images/pokemon/variant/173.json | 4 +- public/images/pokemon/variant/175.json | 4 - public/images/pokemon/variant/176.json | 3 - public/images/pokemon/variant/177.json | 10 +-- public/images/pokemon/variant/179.json | 4 - public/images/pokemon/variant/181-mega.json | 2 - public/images/pokemon/variant/181.json | 2 - public/images/pokemon/variant/182.json | 4 - public/images/pokemon/variant/183.json | 1 - public/images/pokemon/variant/185.json | 2 - public/images/pokemon/variant/19.json | 12 +-- public/images/pokemon/variant/190.json | 10 +-- public/images/pokemon/variant/193.json | 2 - public/images/pokemon/variant/196.json | 8 +- public/images/pokemon/variant/197.json | 3 - public/images/pokemon/variant/199.json | 6 -- public/images/pokemon/variant/2.json | 4 +- public/images/pokemon/variant/20.json | 2 - public/images/pokemon/variant/200.json | 6 -- public/images/pokemon/variant/201-a.json | 3 +- public/images/pokemon/variant/201-b.json | 3 +- public/images/pokemon/variant/201-c.json | 3 +- public/images/pokemon/variant/201-d.json | 6 +- public/images/pokemon/variant/201-e.json | 3 +- .../pokemon/variant/201-exclamation.json | 3 +- public/images/pokemon/variant/201-f.json | 3 +- public/images/pokemon/variant/201-g.json | 3 +- public/images/pokemon/variant/201-h.json | 3 +- public/images/pokemon/variant/201-i.json | 3 +- public/images/pokemon/variant/201-j.json | 6 +- public/images/pokemon/variant/201-k.json | 3 +- public/images/pokemon/variant/201-l.json | 6 +- public/images/pokemon/variant/201-m.json | 3 +- public/images/pokemon/variant/201-n.json | 3 +- public/images/pokemon/variant/201-o.json | 3 +- public/images/pokemon/variant/201-p.json | 3 +- public/images/pokemon/variant/201-q.json | 3 +- .../images/pokemon/variant/201-question.json | 3 +- public/images/pokemon/variant/201-r.json | 3 +- public/images/pokemon/variant/201-s.json | 3 +- public/images/pokemon/variant/201-t.json | 3 +- public/images/pokemon/variant/201-u.json | 3 +- public/images/pokemon/variant/201-v.json | 3 +- public/images/pokemon/variant/201-w.json | 3 +- public/images/pokemon/variant/201-x.json | 6 +- public/images/pokemon/variant/201-y.json | 3 +- public/images/pokemon/variant/201-z.json | 3 +- public/images/pokemon/variant/2027.json | 10 +-- public/images/pokemon/variant/2028.json | 4 - public/images/pokemon/variant/203.json | 4 - public/images/pokemon/variant/2052.json | 6 -- public/images/pokemon/variant/2053.json | 6 +- public/images/pokemon/variant/206.json | 8 +- public/images/pokemon/variant/212-mega.json | 25 +----- public/images/pokemon/variant/212.json | 19 +---- public/images/pokemon/variant/213.json | 2 - public/images/pokemon/variant/215.json | 3 - public/images/pokemon/variant/216.json | 21 +---- public/images/pokemon/variant/217.json | 19 +---- public/images/pokemon/variant/222.json | 3 - public/images/pokemon/variant/227.json | 3 - public/images/pokemon/variant/228.json | 13 +-- public/images/pokemon/variant/229-mega.json | 8 -- public/images/pokemon/variant/229.json | 9 +-- public/images/pokemon/variant/23.json | 4 - public/images/pokemon/variant/230.json | 2 - public/images/pokemon/variant/231.json | 6 +- public/images/pokemon/variant/232.json | 6 -- public/images/pokemon/variant/233.json | 3 - public/images/pokemon/variant/235.json | 12 +-- public/images/pokemon/variant/239.json | 10 +-- public/images/pokemon/variant/24.json | 6 -- public/images/pokemon/variant/240.json | 8 -- public/images/pokemon/variant/243.json | 2 - public/images/pokemon/variant/245.json | 2 - public/images/pokemon/variant/246.json | 4 - public/images/pokemon/variant/247.json | 3 - public/images/pokemon/variant/248-mega.json | 56 ++++++------- public/images/pokemon/variant/248.json | 4 - public/images/pokemon/variant/251.json | 5 +- public/images/pokemon/variant/255.json | 4 - public/images/pokemon/variant/256.json | 6 -- public/images/pokemon/variant/257-mega.json | 2 - public/images/pokemon/variant/257.json | 1 - public/images/pokemon/variant/261.json | 12 +-- public/images/pokemon/variant/262.json | 14 +--- public/images/pokemon/variant/263.json | 10 +-- public/images/pokemon/variant/264.json | 8 +- public/images/pokemon/variant/2670.json | 2 - public/images/pokemon/variant/278.json | 3 - public/images/pokemon/variant/279.json | 2 +- public/images/pokemon/variant/282.json | 8 -- public/images/pokemon/variant/285.json | 5 -- public/images/pokemon/variant/286.json | 10 +-- public/images/pokemon/variant/29.json | 10 +-- public/images/pokemon/variant/290.json | 4 - public/images/pokemon/variant/292.json | 1 - .../images/pokemon/variant/3-gigantamax.json | 4 - public/images/pokemon/variant/3.json | 8 +- public/images/pokemon/variant/30.json | 12 +-- public/images/pokemon/variant/300.json | 3 - public/images/pokemon/variant/301.json | 9 --- public/images/pokemon/variant/302-mega.json | 2 - public/images/pokemon/variant/302.json | 2 - public/images/pokemon/variant/303-mega.json | 11 --- public/images/pokemon/variant/303.json | 8 +- public/images/pokemon/variant/304.json | 3 - public/images/pokemon/variant/305.json | 3 - public/images/pokemon/variant/306-mega.json | 11 +-- public/images/pokemon/variant/306.json | 3 - public/images/pokemon/variant/307.json | 13 +-- public/images/pokemon/variant/308-mega.json | 8 +- public/images/pokemon/variant/308.json | 2 - public/images/pokemon/variant/309.json | 6 -- public/images/pokemon/variant/31.json | 14 +--- public/images/pokemon/variant/310-mega.json | 4 - public/images/pokemon/variant/310.json | 10 +-- public/images/pokemon/variant/311.json | 9 +-- public/images/pokemon/variant/312.json | 4 - public/images/pokemon/variant/315.json | 2 - public/images/pokemon/variant/320.json | 8 -- public/images/pokemon/variant/321.json | 8 +- public/images/pokemon/variant/327.json | 2 - public/images/pokemon/variant/328.json | 12 +-- public/images/pokemon/variant/329.json | 2 - public/images/pokemon/variant/330.json | 4 - public/images/pokemon/variant/333.json | 8 +- public/images/pokemon/variant/334-mega.json | 3 +- public/images/pokemon/variant/336.json | 4 - public/images/pokemon/variant/337.json | 2 - public/images/pokemon/variant/338.json | 2 - public/images/pokemon/variant/339.json | 3 - public/images/pokemon/variant/340.json | 2 - public/images/pokemon/variant/35.json | 2 - public/images/pokemon/variant/351-rainy.json | 5 -- public/images/pokemon/variant/351-snowy.json | 15 +--- public/images/pokemon/variant/351-sunny.json | 1 - public/images/pokemon/variant/352.json | 13 +-- public/images/pokemon/variant/353.json | 2 - public/images/pokemon/variant/354-mega.json | 3 - public/images/pokemon/variant/354.json | 3 - public/images/pokemon/variant/357.json | 3 - public/images/pokemon/variant/358.json | 2 - public/images/pokemon/variant/36.json | 8 +- public/images/pokemon/variant/361.json | 7 +- public/images/pokemon/variant/362-mega.json | 1 - public/images/pokemon/variant/369.json | 2 - public/images/pokemon/variant/37.json | 4 - public/images/pokemon/variant/370.json | 3 - public/images/pokemon/variant/371.json | 12 +-- public/images/pokemon/variant/372.json | 4 - public/images/pokemon/variant/373.json | 4 - public/images/pokemon/variant/374.json | 2 - public/images/pokemon/variant/375.json | 3 - public/images/pokemon/variant/376-mega.json | 2 - public/images/pokemon/variant/376.json | 2 - public/images/pokemon/variant/38.json | 4 - public/images/pokemon/variant/380-mega.json | 4 - public/images/pokemon/variant/380.json | 4 - public/images/pokemon/variant/381-mega.json | 4 - public/images/pokemon/variant/381.json | 4 - public/images/pokemon/variant/382-primal.json | 4 - public/images/pokemon/variant/382.json | 4 - public/images/pokemon/variant/383-primal.json | 6 -- public/images/pokemon/variant/383.json | 2 - public/images/pokemon/variant/384-mega.json | 4 +- public/images/pokemon/variant/384.json | 10 +-- public/images/pokemon/variant/385.json | 6 -- public/images/pokemon/variant/387.json | 7 +- public/images/pokemon/variant/388.json | 12 +-- public/images/pokemon/variant/389.json | 2 - public/images/pokemon/variant/393.json | 3 - public/images/pokemon/variant/394.json | 3 - public/images/pokemon/variant/395.json | 9 +-- public/images/pokemon/variant/399.json | 7 +- public/images/pokemon/variant/4.json | 4 - public/images/pokemon/variant/400.json | 5 -- public/images/pokemon/variant/401.json | 2 - public/images/pokemon/variant/402.json | 5 -- public/images/pokemon/variant/4052.json | 5 -- public/images/pokemon/variant/406.json | 10 +-- public/images/pokemon/variant/407.json | 2 - public/images/pokemon/variant/4077.json | 8 +- public/images/pokemon/variant/4078.json | 4 - public/images/pokemon/variant/4079.json | 6 -- public/images/pokemon/variant/4080.json | 6 -- public/images/pokemon/variant/41.json | 10 +-- public/images/pokemon/variant/412-plant.json | 5 -- public/images/pokemon/variant/412-trash.json | 3 - public/images/pokemon/variant/413-sandy.json | 6 -- public/images/pokemon/variant/413-trash.json | 6 -- public/images/pokemon/variant/414.json | 2 - public/images/pokemon/variant/418.json | 7 -- public/images/pokemon/variant/419.json | 5 -- public/images/pokemon/variant/4199.json | 4 - public/images/pokemon/variant/42.json | 8 -- public/images/pokemon/variant/422-east.json | 9 --- public/images/pokemon/variant/422-west.json | 6 -- public/images/pokemon/variant/4222.json | 2 - public/images/pokemon/variant/423-east.json | 11 --- public/images/pokemon/variant/423-west.json | 21 +---- public/images/pokemon/variant/424.json | 10 +-- public/images/pokemon/variant/425.json | 2 - public/images/pokemon/variant/426.json | 2 - public/images/pokemon/variant/4263.json | 4 - public/images/pokemon/variant/4264.json | 4 - public/images/pokemon/variant/427.json | 10 +-- public/images/pokemon/variant/428-mega.json | 4 - public/images/pokemon/variant/428.json | 4 - public/images/pokemon/variant/429.json | 6 -- public/images/pokemon/variant/43.json | 2 - public/images/pokemon/variant/433.json | 12 +-- public/images/pokemon/variant/436.json | 2 - public/images/pokemon/variant/437.json | 2 - public/images/pokemon/variant/438.json | 5 +- public/images/pokemon/variant/44.json | 2 - public/images/pokemon/variant/440.json | 2 - public/images/pokemon/variant/441.json | 2 - public/images/pokemon/variant/442.json | 6 -- public/images/pokemon/variant/443.json | 13 --- public/images/pokemon/variant/444.json | 15 +--- public/images/pokemon/variant/445-mega.json | 24 +----- public/images/pokemon/variant/445.json | 15 ---- public/images/pokemon/variant/447.json | 10 +-- public/images/pokemon/variant/448-mega.json | 5 -- public/images/pokemon/variant/448.json | 7 +- public/images/pokemon/variant/45.json | 2 - public/images/pokemon/variant/456.json | 4 - public/images/pokemon/variant/4562.json | 6 -- public/images/pokemon/variant/457.json | 8 +- public/images/pokemon/variant/458.json | 4 - public/images/pokemon/variant/46.json | 6 -- public/images/pokemon/variant/461.json | 3 - public/images/pokemon/variant/462.json | 8 +- public/images/pokemon/variant/464.json | 7 -- public/images/pokemon/variant/466.json | 9 +-- public/images/pokemon/variant/467.json | 14 +--- public/images/pokemon/variant/468.json | 3 - public/images/pokemon/variant/47.json | 3 - public/images/pokemon/variant/470.json | 10 +-- public/images/pokemon/variant/471.json | 3 - public/images/pokemon/variant/474.json | 3 - public/images/pokemon/variant/475.json | 8 -- public/images/pokemon/variant/478.json | 1 - public/images/pokemon/variant/479-fan.json | 4 - public/images/pokemon/variant/479-frost.json | 4 - public/images/pokemon/variant/479-heat.json | 4 - public/images/pokemon/variant/479-mow.json | 5 -- public/images/pokemon/variant/479-wash.json | 4 - public/images/pokemon/variant/479.json | 4 - public/images/pokemon/variant/480.json | 6 -- public/images/pokemon/variant/481.json | 6 -- public/images/pokemon/variant/482.json | 10 +-- public/images/pokemon/variant/485.json | 4 - .../images/pokemon/variant/487-altered.json | 2 - public/images/pokemon/variant/487-origin.json | 3 - public/images/pokemon/variant/488.json | 6 +- public/images/pokemon/variant/489.json | 14 ---- public/images/pokemon/variant/490.json | 7 -- public/images/pokemon/variant/491.json | 4 - public/images/pokemon/variant/492-land.json | 2 - public/images/pokemon/variant/492-sky.json | 2 - public/images/pokemon/variant/494.json | 15 +--- public/images/pokemon/variant/495.json | 4 - public/images/pokemon/variant/496.json | 10 +-- public/images/pokemon/variant/497.json | 2 - public/images/pokemon/variant/5.json | 8 -- public/images/pokemon/variant/50.json | 4 - public/images/pokemon/variant/51.json | 4 - public/images/pokemon/variant/517.json | 4 - public/images/pokemon/variant/518.json | 8 +- .../images/pokemon/variant/52-gigantamax.json | 9 --- public/images/pokemon/variant/52.json | 13 --- public/images/pokemon/variant/524.json | 2 - public/images/pokemon/variant/525.json | 2 - public/images/pokemon/variant/53.json | 17 +--- public/images/pokemon/variant/531-mega.json | 2 - public/images/pokemon/variant/531.json | 11 +-- public/images/pokemon/variant/532.json | 6 -- public/images/pokemon/variant/533.json | 4 - public/images/pokemon/variant/534.json | 8 +- public/images/pokemon/variant/538.json | 8 +- public/images/pokemon/variant/540.json | 14 +--- public/images/pokemon/variant/541.json | 8 +- public/images/pokemon/variant/542.json | 4 - public/images/pokemon/variant/544.json | 1 - public/images/pokemon/variant/545.json | 3 - public/images/pokemon/variant/546.json | 2 - public/images/pokemon/variant/547.json | 11 +-- public/images/pokemon/variant/548.json | 13 +-- public/images/pokemon/variant/549.json | 5 +- public/images/pokemon/variant/551.json | 6 -- public/images/pokemon/variant/552.json | 4 - public/images/pokemon/variant/553.json | 4 - public/images/pokemon/variant/556.json | 2 - public/images/pokemon/variant/559.json | 25 +----- public/images/pokemon/variant/56.json | 8 +- public/images/pokemon/variant/560.json | 17 ---- public/images/pokemon/variant/562.json | 6 +- public/images/pokemon/variant/563.json | 2 - .../pokemon/variant/569-gigantamax.json | 2 - public/images/pokemon/variant/569.json | 5 +- public/images/pokemon/variant/570.json | 6 -- public/images/pokemon/variant/571.json | 7 +- public/images/pokemon/variant/577.json | 9 --- public/images/pokemon/variant/578.json | 3 - public/images/pokemon/variant/579.json | 4 - public/images/pokemon/variant/586-autumn.json | 9 +-- public/images/pokemon/variant/586-spring.json | 9 +-- public/images/pokemon/variant/586-summer.json | 3 - public/images/pokemon/variant/586-winter.json | 5 +- public/images/pokemon/variant/592.json | 2 - public/images/pokemon/variant/593.json | 10 +-- public/images/pokemon/variant/594.json | 2 - public/images/pokemon/variant/595.json | 4 - public/images/pokemon/variant/596.json | 10 +-- .../images/pokemon/variant/6-gigantamax.json | 1 - public/images/pokemon/variant/6-mega-x.json | 2 - public/images/pokemon/variant/6-mega-y.json | 5 +- public/images/pokemon/variant/602.json | 2 - public/images/pokemon/variant/603.json | 3 - public/images/pokemon/variant/604.json | 2 - public/images/pokemon/variant/605.json | 6 -- public/images/pokemon/variant/606.json | 4 - public/images/pokemon/variant/609.json | 2 - public/images/pokemon/variant/610.json | 6 -- public/images/pokemon/variant/6100.json | 4 - public/images/pokemon/variant/6101.json | 12 +-- public/images/pokemon/variant/611.json | 4 - public/images/pokemon/variant/612.json | 2 - public/images/pokemon/variant/618.json | 4 - public/images/pokemon/variant/619.json | 7 +- public/images/pokemon/variant/620.json | 6 -- public/images/pokemon/variant/6215.json | 10 +-- public/images/pokemon/variant/622.json | 1 - public/images/pokemon/variant/623.json | 2 - public/images/pokemon/variant/633.json | 2 - public/images/pokemon/variant/634.json | 10 +-- public/images/pokemon/variant/635.json | 8 +- public/images/pokemon/variant/640.json | 2 - .../images/pokemon/variant/647-ordinary.json | 13 +-- .../images/pokemon/variant/647-resolute.json | 12 +-- public/images/pokemon/variant/648-aria.json | 2 - .../images/pokemon/variant/648-pirouette.json | 1 - public/images/pokemon/variant/649-burn.json | 14 +--- public/images/pokemon/variant/649-chill.json | 12 +-- public/images/pokemon/variant/649-douse.json | 14 +--- public/images/pokemon/variant/649-shock.json | 14 +--- public/images/pokemon/variant/649.json | 14 +--- public/images/pokemon/variant/653.json | 8 +- public/images/pokemon/variant/654.json | 10 +-- public/images/pokemon/variant/6549.json | 5 +- public/images/pokemon/variant/655.json | 5 -- public/images/pokemon/variant/6570.json | 7 +- public/images/pokemon/variant/6571.json | 3 - public/images/pokemon/variant/664.json | 6 -- public/images/pokemon/variant/665.json | 4 - .../pokemon/variant/666-archipelago.json | 20 +---- .../pokemon/variant/666-continental.json | 20 +---- .../images/pokemon/variant/666-elegant.json | 20 +---- public/images/pokemon/variant/666-fancy.json | 56 +++++-------- public/images/pokemon/variant/666-garden.json | 18 +---- .../pokemon/variant/666-high-plains.json | 22 +---- .../images/pokemon/variant/666-icy-snow.json | 18 +---- public/images/pokemon/variant/666-jungle.json | 20 +---- public/images/pokemon/variant/666-marine.json | 18 +---- public/images/pokemon/variant/666-meadow.json | 20 +---- public/images/pokemon/variant/666-modern.json | 20 +---- .../images/pokemon/variant/666-monsoon.json | 48 ++++------- public/images/pokemon/variant/666-ocean.json | 20 +---- .../images/pokemon/variant/666-poke-ball.json | 12 +-- public/images/pokemon/variant/666-polar.json | 20 +---- public/images/pokemon/variant/666-river.json | 54 ++++--------- .../images/pokemon/variant/666-sandstorm.json | 20 +---- .../images/pokemon/variant/666-savanna.json | 20 +---- public/images/pokemon/variant/666-sun.json | 20 +---- public/images/pokemon/variant/666-tundra.json | 18 +---- public/images/pokemon/variant/669-orange.json | 1 - public/images/pokemon/variant/669-red.json | 9 +-- public/images/pokemon/variant/669-white.json | 8 -- public/images/pokemon/variant/669-yellow.json | 1 - public/images/pokemon/variant/6705.json | 5 +- public/images/pokemon/variant/671-blue.json | 5 -- public/images/pokemon/variant/671-orange.json | 7 -- public/images/pokemon/variant/671-red.json | 5 -- public/images/pokemon/variant/671-white.json | 5 -- public/images/pokemon/variant/671-yellow.json | 5 -- public/images/pokemon/variant/6713.json | 2 - public/images/pokemon/variant/672.json | 1 - public/images/pokemon/variant/673.json | 2 - public/images/pokemon/variant/677.json | 8 +- public/images/pokemon/variant/678-female.json | 4 - public/images/pokemon/variant/678.json | 4 - public/images/pokemon/variant/690.json | 2 - public/images/pokemon/variant/691.json | 1 - public/images/pokemon/variant/696.json | 70 +++++----------- public/images/pokemon/variant/697.json | 65 +++++++-------- public/images/pokemon/variant/698.json | 6 -- public/images/pokemon/variant/699.json | 4 - public/images/pokemon/variant/70.json | 2 - public/images/pokemon/variant/700.json | 2 - public/images/pokemon/variant/702.json | 4 - public/images/pokemon/variant/703.json | 3 - public/images/pokemon/variant/704.json | 2 - public/images/pokemon/variant/705.json | 2 - public/images/pokemon/variant/706.json | 4 - public/images/pokemon/variant/708.json | 2 - public/images/pokemon/variant/709.json | 2 - public/images/pokemon/variant/71.json | 4 - public/images/pokemon/variant/710.json | 2 - public/images/pokemon/variant/711.json | 3 - public/images/pokemon/variant/712.json | 7 +- public/images/pokemon/variant/713.json | 8 +- public/images/pokemon/variant/714.json | 4 - public/images/pokemon/variant/715.json | 76 +++++++++-------- public/images/pokemon/variant/716-active.json | 4 - .../images/pokemon/variant/716-neutral.json | 4 - public/images/pokemon/variant/717.json | 8 +- .../images/pokemon/variant/720-unbound.json | 12 +-- public/images/pokemon/variant/720.json | 3 - public/images/pokemon/variant/728.json | 4 - public/images/pokemon/variant/729.json | 6 -- public/images/pokemon/variant/730.json | 8 +- public/images/pokemon/variant/734.json | 7 -- public/images/pokemon/variant/735.json | 7 -- public/images/pokemon/variant/747.json | 8 +- public/images/pokemon/variant/748.json | 3 - public/images/pokemon/variant/752.json | 3 - public/images/pokemon/variant/753.json | 2 - public/images/pokemon/variant/754.json | 2 - public/images/pokemon/variant/755.json | 2 - public/images/pokemon/variant/756.json | 1 - public/images/pokemon/variant/761.json | 7 +- public/images/pokemon/variant/762.json | 7 -- public/images/pokemon/variant/763.json | 12 +-- public/images/pokemon/variant/767.json | 8 +- public/images/pokemon/variant/768.json | 7 +- public/images/pokemon/variant/77.json | 4 - public/images/pokemon/variant/771.json | 4 - public/images/pokemon/variant/772.json | 2 - public/images/pokemon/variant/773.json | 5 -- public/images/pokemon/variant/776.json | 4 - public/images/pokemon/variant/777.json | 5 -- .../images/pokemon/variant/778-disguised.json | 2 +- public/images/pokemon/variant/779.json | 10 +-- public/images/pokemon/variant/78.json | 4 - public/images/pokemon/variant/789.json | 12 --- public/images/pokemon/variant/79.json | 13 --- public/images/pokemon/variant/790.json | 9 --- .../pokemon/variant/791-radiant-sun.json | 4 - public/images/pokemon/variant/791.json | 8 +- .../images/pokemon/variant/792-full-moon.json | 9 --- public/images/pokemon/variant/792.json | 7 -- public/images/pokemon/variant/793.json | 6 +- public/images/pokemon/variant/797.json | 2 - public/images/pokemon/variant/798.json | 2 - public/images/pokemon/variant/80-mega.json | 6 -- public/images/pokemon/variant/80.json | 6 -- .../pokemon/variant/800-dawn-wings.json | 2 - .../images/pokemon/variant/800-dusk-mane.json | 8 +- public/images/pokemon/variant/800-ultra.json | 9 +-- public/images/pokemon/variant/800.json | 3 - public/images/pokemon/variant/802.json | 8 +- public/images/pokemon/variant/803.json | 2 - public/images/pokemon/variant/804.json | 2 - public/images/pokemon/variant/808.json | 8 +- .../pokemon/variant/809-gigantamax.json | 7 +- public/images/pokemon/variant/809.json | 8 +- public/images/pokemon/variant/81.json | 3 - public/images/pokemon/variant/816.json | 8 +- public/images/pokemon/variant/817.json | 4 - .../pokemon/variant/818-gigantamax.json | 9 +-- public/images/pokemon/variant/818.json | 4 - public/images/pokemon/variant/82.json | 3 - public/images/pokemon/variant/821.json | 6 -- public/images/pokemon/variant/822.json | 4 - public/images/pokemon/variant/823.json | 5 +- public/images/pokemon/variant/829.json | 3 - public/images/pokemon/variant/830.json | 2 - public/images/pokemon/variant/835.json | 12 +-- public/images/pokemon/variant/84.json | 7 -- public/images/pokemon/variant/85.json | 11 --- public/images/pokemon/variant/850.json | 14 +--- .../pokemon/variant/851-gigantamax.json | 11 +-- public/images/pokemon/variant/851.json | 5 -- public/images/pokemon/variant/854.json | 3 - public/images/pokemon/variant/855.json | 6 +- public/images/pokemon/variant/856.json | 2 - .../pokemon/variant/858-gigantamax.json | 4 - public/images/pokemon/variant/858.json | 8 +- public/images/pokemon/variant/859.json | 5 -- public/images/pokemon/variant/86.json | 11 +-- public/images/pokemon/variant/860.json | 5 -- .../pokemon/variant/861-gigantamax.json | 5 -- public/images/pokemon/variant/861.json | 7 -- public/images/pokemon/variant/862.json | 9 +-- public/images/pokemon/variant/863.json | 4 - public/images/pokemon/variant/864.json | 2 - public/images/pokemon/variant/867.json | 2 - public/images/pokemon/variant/87.json | 7 -- public/images/pokemon/variant/872.json | 15 +--- public/images/pokemon/variant/873.json | 4 - public/images/pokemon/variant/876-female.json | 2 - public/images/pokemon/variant/876.json | 2 - public/images/pokemon/variant/877-hangry.json | 14 ---- public/images/pokemon/variant/877.json | 21 ----- public/images/pokemon/variant/880.json | 3 - public/images/pokemon/variant/881.json | 2 - public/images/pokemon/variant/882.json | 2 - public/images/pokemon/variant/883.json | 2 - .../pokemon/variant/884-gigantamax.json | 3 - public/images/pokemon/variant/884.json | 2 - public/images/pokemon/variant/885.json | 3 - public/images/pokemon/variant/886.json | 7 +- public/images/pokemon/variant/887.json | 2 - .../images/pokemon/variant/888-crowned.json | 4 - public/images/pokemon/variant/888.json | 4 - .../images/pokemon/variant/889-crowned.json | 4 - public/images/pokemon/variant/889.json | 8 +- .../images/pokemon/variant/890-eternamax.json | 2 - public/images/pokemon/variant/890.json | 6 +- public/images/pokemon/variant/8901.json | 25 +----- public/images/pokemon/variant/891.json | 11 --- .../pokemon/variant/892-gigantamax-rapid.json | 4 - .../variant/892-gigantamax-single.json | 4 - .../pokemon/variant/892-rapid-strike.json | 17 +--- public/images/pokemon/variant/892.json | 11 --- public/images/pokemon/variant/896.json | 3 - public/images/pokemon/variant/897.json | 2 - public/images/pokemon/variant/898-ice.json | 6 -- public/images/pokemon/variant/898-shadow.json | 10 --- public/images/pokemon/variant/898.json | 5 -- .../images/pokemon/variant/9-gigantamax.json | 5 -- public/images/pokemon/variant/900.json | 20 +---- public/images/pokemon/variant/901.json | 9 +-- public/images/pokemon/variant/903.json | 2 - public/images/pokemon/variant/911.json | 15 +--- public/images/pokemon/variant/912.json | 4 - public/images/pokemon/variant/914.json | 2 - public/images/pokemon/variant/919.json | 8 -- public/images/pokemon/variant/924.json | 3 - public/images/pokemon/variant/925-four.json | 2 - public/images/pokemon/variant/925-three.json | 2 - public/images/pokemon/variant/93.json | 9 --- public/images/pokemon/variant/932.json | 2 - public/images/pokemon/variant/933.json | 7 +- public/images/pokemon/variant/934.json | 2 - .../images/pokemon/variant/94-gigantamax.json | 3 - public/images/pokemon/variant/94.json | 5 -- public/images/pokemon/variant/940.json | 5 -- public/images/pokemon/variant/941.json | 4 - public/images/pokemon/variant/948.json | 2 - public/images/pokemon/variant/949.json | 12 +-- public/images/pokemon/variant/951.json | 2 - public/images/pokemon/variant/952.json | 8 -- public/images/pokemon/variant/953.json | 2 - public/images/pokemon/variant/954.json | 2 - public/images/pokemon/variant/957.json | 5 +- public/images/pokemon/variant/958.json | 2 - public/images/pokemon/variant/962.json | 3 - public/images/pokemon/variant/967.json | 11 +-- public/images/pokemon/variant/969.json | 2 - public/images/pokemon/variant/970.json | 2 - public/images/pokemon/variant/974.json | 8 -- public/images/pokemon/variant/98.json | 10 +-- public/images/pokemon/variant/981.json | 6 -- .../pokemon/variant/982-three-segment.json | 3 - public/images/pokemon/variant/982.json | 3 - public/images/pokemon/variant/987.json | 12 +-- public/images/pokemon/variant/988.json | 4 - .../images/pokemon/variant/99-gigantamax.json | 2 - public/images/pokemon/variant/99.json | 6 -- public/images/pokemon/variant/993.json | 5 -- public/images/pokemon/variant/994.json | 6 -- public/images/pokemon/variant/995.json | 7 +- public/images/pokemon/variant/996.json | 4 - public/images/pokemon/variant/997.json | 4 - public/images/pokemon/variant/998.json | 2 - public/images/pokemon/variant/999.json | 7 -- public/images/pokemon/variant/back/1.json | 8 +- public/images/pokemon/variant/back/100.json | 7 +- public/images/pokemon/variant/back/1000.json | 13 +-- public/images/pokemon/variant/back/1001.json | 2 - public/images/pokemon/variant/back/1003.json | 2 - public/images/pokemon/variant/back/1004.json | 8 +- public/images/pokemon/variant/back/1006.json | 3 - .../variant/back/1008-ultimate-mode.json | 19 +---- public/images/pokemon/variant/back/101.json | 9 +-- public/images/pokemon/variant/back/1010.json | 8 +- public/images/pokemon/variant/back/1018.json | 5 -- public/images/pokemon/variant/back/1023.json | 6 -- public/images/pokemon/variant/back/111.json | 10 +-- public/images/pokemon/variant/back/112.json | 10 +-- public/images/pokemon/variant/back/113.json | 3 - public/images/pokemon/variant/back/114.json | 2 - public/images/pokemon/variant/back/116.json | 6 -- public/images/pokemon/variant/back/117.json | 10 +-- public/images/pokemon/variant/back/118.json | 3 - public/images/pokemon/variant/back/119.json | 4 - public/images/pokemon/variant/back/120.json | 2 - public/images/pokemon/variant/back/121.json | 6 +- public/images/pokemon/variant/back/123.json | 27 +------ public/images/pokemon/variant/back/125.json | 7 +- public/images/pokemon/variant/back/126.json | 4 - .../images/pokemon/variant/back/127-mega.json | 16 +--- public/images/pokemon/variant/back/127.json | 8 +- public/images/pokemon/variant/back/129.json | 5 +- .../images/pokemon/variant/back/130-mega.json | 13 +-- public/images/pokemon/variant/back/130.json | 5 +- .../pokemon/variant/back/131-gigantamax.json | 6 -- public/images/pokemon/variant/back/131.json | 6 -- public/images/pokemon/variant/back/132.json | 6 +- .../pokemon/variant/back/133-partner.json | 2 - public/images/pokemon/variant/back/133.json | 2 - public/images/pokemon/variant/back/134.json | 2 - public/images/pokemon/variant/back/135.json | 11 +-- public/images/pokemon/variant/back/136.json | 3 - public/images/pokemon/variant/back/137.json | 4 - public/images/pokemon/variant/back/138.json | 2 - public/images/pokemon/variant/back/139.json | 9 +-- public/images/pokemon/variant/back/140.json | 4 - public/images/pokemon/variant/back/141.json | 2 - .../images/pokemon/variant/back/142-mega.json | 4 - public/images/pokemon/variant/back/142.json | 6 -- public/images/pokemon/variant/back/144.json | 20 +---- public/images/pokemon/variant/back/145.json | 6 -- public/images/pokemon/variant/back/146.json | 18 +---- public/images/pokemon/variant/back/147.json | 2 - public/images/pokemon/variant/back/148.json | 2 - public/images/pokemon/variant/back/149.json | 12 +-- .../pokemon/variant/back/150-mega-x.json | 5 -- .../pokemon/variant/back/150-mega-y.json | 6 +- public/images/pokemon/variant/back/150.json | 4 - public/images/pokemon/variant/back/151.json | 2 - public/images/pokemon/variant/back/161.json | 2 - public/images/pokemon/variant/back/162.json | 4 - public/images/pokemon/variant/back/163.json | 10 +-- public/images/pokemon/variant/back/164.json | 12 +-- public/images/pokemon/variant/back/169.json | 2 - public/images/pokemon/variant/back/173.json | 2 - public/images/pokemon/variant/back/175.json | 4 - public/images/pokemon/variant/back/176.json | 3 - public/images/pokemon/variant/back/177.json | 10 +-- public/images/pokemon/variant/back/179.json | 4 - public/images/pokemon/variant/back/180.json | 2 - .../images/pokemon/variant/back/181-mega.json | 2 - public/images/pokemon/variant/back/181.json | 5 -- public/images/pokemon/variant/back/182.json | 2 - public/images/pokemon/variant/back/183.json | 2 - public/images/pokemon/variant/back/184.json | 8 +- public/images/pokemon/variant/back/185.json | 2 - public/images/pokemon/variant/back/19.json | 6 -- public/images/pokemon/variant/back/190.json | 2 - public/images/pokemon/variant/back/193.json | 2 - public/images/pokemon/variant/back/196.json | 3 - public/images/pokemon/variant/back/197.json | 2 - public/images/pokemon/variant/back/199.json | 6 -- public/images/pokemon/variant/back/2.json | 9 +-- public/images/pokemon/variant/back/20.json | 12 +-- public/images/pokemon/variant/back/200.json | 1 - public/images/pokemon/variant/back/2027.json | 4 - public/images/pokemon/variant/back/2028.json | 2 - public/images/pokemon/variant/back/203.json | 4 - public/images/pokemon/variant/back/2052.json | 4 - public/images/pokemon/variant/back/2053.json | 2 - public/images/pokemon/variant/back/206.json | 2 - public/images/pokemon/variant/back/207.json | 2 - .../images/pokemon/variant/back/212-mega.json | 18 ----- public/images/pokemon/variant/back/212.json | 19 +---- public/images/pokemon/variant/back/213.json | 2 - public/images/pokemon/variant/back/215.json | 5 +- public/images/pokemon/variant/back/216.json | 18 +---- public/images/pokemon/variant/back/217.json | 21 +---- public/images/pokemon/variant/back/222.json | 2 - public/images/pokemon/variant/back/226.json | 2 - public/images/pokemon/variant/back/227.json | 5 +- public/images/pokemon/variant/back/228.json | 10 +-- .../images/pokemon/variant/back/229-mega.json | 6 -- public/images/pokemon/variant/back/229.json | 11 +-- public/images/pokemon/variant/back/23.json | 8 +- public/images/pokemon/variant/back/230.json | 2 - public/images/pokemon/variant/back/231.json | 5 +- public/images/pokemon/variant/back/232.json | 2 - public/images/pokemon/variant/back/233.json | 7 +- public/images/pokemon/variant/back/235.json | 2 - public/images/pokemon/variant/back/239.json | 8 +- public/images/pokemon/variant/back/24.json | 10 +-- public/images/pokemon/variant/back/240.json | 10 +-- public/images/pokemon/variant/back/242.json | 3 - public/images/pokemon/variant/back/243.json | 4 - public/images/pokemon/variant/back/245.json | 5 -- public/images/pokemon/variant/back/246.json | 4 - public/images/pokemon/variant/back/247.json | 2 - .../images/pokemon/variant/back/248-mega.json | 40 +++++---- public/images/pokemon/variant/back/248.json | 9 --- public/images/pokemon/variant/back/249.json | 2 - public/images/pokemon/variant/back/250.json | 12 +-- public/images/pokemon/variant/back/251.json | 6 +- public/images/pokemon/variant/back/255.json | 8 +- public/images/pokemon/variant/back/256.json | 2 - .../images/pokemon/variant/back/257-mega.json | 2 - public/images/pokemon/variant/back/257.json | 4 - public/images/pokemon/variant/back/261.json | 10 +-- public/images/pokemon/variant/back/262.json | 14 +--- public/images/pokemon/variant/back/263.json | 7 +- public/images/pokemon/variant/back/264.json | 6 -- public/images/pokemon/variant/back/2670.json | 2 - public/images/pokemon/variant/back/278.json | 6 +- public/images/pokemon/variant/back/279.json | 8 -- .../images/pokemon/variant/back/282-mega.json | 5 -- public/images/pokemon/variant/back/282.json | 8 +- public/images/pokemon/variant/back/285.json | 5 -- public/images/pokemon/variant/back/286.json | 6 +- public/images/pokemon/variant/back/29.json | 6 -- public/images/pokemon/variant/back/290.json | 4 - public/images/pokemon/variant/back/298.json | 2 - .../pokemon/variant/back/3-gigantamax.json | 8 +- public/images/pokemon/variant/back/3.json | 8 +- public/images/pokemon/variant/back/30.json | 13 +-- public/images/pokemon/variant/back/300.json | 3 - public/images/pokemon/variant/back/301.json | 3 - .../images/pokemon/variant/back/302-mega.json | 2 - public/images/pokemon/variant/back/302.json | 2 - .../images/pokemon/variant/back/303-mega.json | 14 ---- public/images/pokemon/variant/back/303.json | 6 -- public/images/pokemon/variant/back/304.json | 5 -- public/images/pokemon/variant/back/305.json | 3 - .../images/pokemon/variant/back/306-mega.json | 3 - public/images/pokemon/variant/back/306.json | 3 - public/images/pokemon/variant/back/307.json | 2 - .../images/pokemon/variant/back/308-mega.json | 3 - public/images/pokemon/variant/back/308.json | 3 - public/images/pokemon/variant/back/309.json | 8 +- public/images/pokemon/variant/back/31.json | 12 +-- .../images/pokemon/variant/back/310-mega.json | 9 +-- public/images/pokemon/variant/back/310.json | 10 +-- public/images/pokemon/variant/back/311.json | 3 - public/images/pokemon/variant/back/312.json | 2 - public/images/pokemon/variant/back/315.json | 2 - public/images/pokemon/variant/back/320.json | 2 - public/images/pokemon/variant/back/321.json | 3 - public/images/pokemon/variant/back/327.json | 2 - public/images/pokemon/variant/back/328.json | 4 - public/images/pokemon/variant/back/329.json | 4 - public/images/pokemon/variant/back/330.json | 7 +- public/images/pokemon/variant/back/333.json | 8 +- .../images/pokemon/variant/back/334-mega.json | 2 - public/images/pokemon/variant/back/334.json | 2 - public/images/pokemon/variant/back/336.json | 4 - public/images/pokemon/variant/back/337.json | 2 - public/images/pokemon/variant/back/338.json | 2 - public/images/pokemon/variant/back/339.json | 1 - public/images/pokemon/variant/back/340.json | 6 +- public/images/pokemon/variant/back/341.json | 6 -- public/images/pokemon/variant/back/35.json | 8 +- .../pokemon/variant/back/351-rainy.json | 10 --- .../pokemon/variant/back/351-snowy.json | 11 +-- .../pokemon/variant/back/351-sunny.json | 2 - public/images/pokemon/variant/back/351.json | 2 - public/images/pokemon/variant/back/352.json | 12 +-- public/images/pokemon/variant/back/353.json | 2 - .../images/pokemon/variant/back/354-mega.json | 2 - public/images/pokemon/variant/back/354.json | 2 - public/images/pokemon/variant/back/357.json | 1 - public/images/pokemon/variant/back/358.json | 6 -- public/images/pokemon/variant/back/36.json | 5 +- public/images/pokemon/variant/back/361.json | 2 - .../images/pokemon/variant/back/362-mega.json | 2 - public/images/pokemon/variant/back/362.json | 5 +- public/images/pokemon/variant/back/37.json | 2 - public/images/pokemon/variant/back/371.json | 16 +--- public/images/pokemon/variant/back/372.json | 4 - .../images/pokemon/variant/back/373-mega.json | 8 +- public/images/pokemon/variant/back/373.json | 7 +- public/images/pokemon/variant/back/374.json | 2 - public/images/pokemon/variant/back/375.json | 2 - .../images/pokemon/variant/back/376-mega.json | 6 +- public/images/pokemon/variant/back/376.json | 2 - public/images/pokemon/variant/back/38.json | 2 - .../images/pokemon/variant/back/380-mega.json | 2 - public/images/pokemon/variant/back/380.json | 4 - .../images/pokemon/variant/back/381-mega.json | 2 - public/images/pokemon/variant/back/381.json | 4 - .../pokemon/variant/back/382-primal.json | 4 - public/images/pokemon/variant/back/382.json | 8 +- .../pokemon/variant/back/383-primal.json | 14 +--- public/images/pokemon/variant/back/383.json | 10 +-- .../images/pokemon/variant/back/384-mega.json | 8 +- public/images/pokemon/variant/back/384.json | 11 +-- public/images/pokemon/variant/back/385.json | 3 - public/images/pokemon/variant/back/387.json | 4 +- public/images/pokemon/variant/back/388.json | 12 +-- public/images/pokemon/variant/back/389.json | 2 - public/images/pokemon/variant/back/393.json | 3 - public/images/pokemon/variant/back/394.json | 2 - public/images/pokemon/variant/back/395.json | 2 - public/images/pokemon/variant/back/399.json | 1 - public/images/pokemon/variant/back/4.json | 10 +-- public/images/pokemon/variant/back/400.json | 3 - public/images/pokemon/variant/back/401.json | 2 - public/images/pokemon/variant/back/402.json | 3 - public/images/pokemon/variant/back/4052.json | 4 - public/images/pokemon/variant/back/406.json | 2 - public/images/pokemon/variant/back/407.json | 2 - public/images/pokemon/variant/back/4077.json | 2 - public/images/pokemon/variant/back/4078.json | 4 - public/images/pokemon/variant/back/4079.json | 10 +-- public/images/pokemon/variant/back/4080.json | 8 -- public/images/pokemon/variant/back/41.json | 12 +-- .../pokemon/variant/back/412-plant.json | 6 +- .../pokemon/variant/back/412-trash.json | 3 - .../pokemon/variant/back/413-plant.json | 3 - .../pokemon/variant/back/413-sandy.json | 3 - .../pokemon/variant/back/413-trash.json | 5 -- public/images/pokemon/variant/back/414.json | 2 - public/images/pokemon/variant/back/418.json | 7 -- public/images/pokemon/variant/back/419.json | 7 -- public/images/pokemon/variant/back/4199.json | 4 - public/images/pokemon/variant/back/42.json | 2 - .../images/pokemon/variant/back/422-east.json | 6 -- .../images/pokemon/variant/back/422-west.json | 6 -- public/images/pokemon/variant/back/4222.json | 2 - .../images/pokemon/variant/back/423-east.json | 3 - .../images/pokemon/variant/back/423-west.json | 4 - public/images/pokemon/variant/back/424.json | 2 - public/images/pokemon/variant/back/425.json | 2 - public/images/pokemon/variant/back/426.json | 2 - public/images/pokemon/variant/back/4263.json | 10 +-- public/images/pokemon/variant/back/4264.json | 4 - public/images/pokemon/variant/back/427.json | 3 - .../images/pokemon/variant/back/428-mega.json | 2 - public/images/pokemon/variant/back/428.json | 2 - public/images/pokemon/variant/back/429.json | 12 +-- public/images/pokemon/variant/back/43.json | 2 - public/images/pokemon/variant/back/433.json | 3 - public/images/pokemon/variant/back/436.json | 2 - public/images/pokemon/variant/back/437.json | 2 - public/images/pokemon/variant/back/438.json | 2 - public/images/pokemon/variant/back/44.json | 2 - public/images/pokemon/variant/back/440.json | 4 - public/images/pokemon/variant/back/441.json | 1 - public/images/pokemon/variant/back/442.json | 9 +-- public/images/pokemon/variant/back/443.json | 11 --- public/images/pokemon/variant/back/444.json | 15 +--- .../images/pokemon/variant/back/445-mega.json | 12 --- public/images/pokemon/variant/back/445.json | 12 --- public/images/pokemon/variant/back/447.json | 11 +-- .../images/pokemon/variant/back/448-mega.json | 15 +--- public/images/pokemon/variant/back/448.json | 15 +--- public/images/pokemon/variant/back/45.json | 2 - public/images/pokemon/variant/back/453.json | 1 - public/images/pokemon/variant/back/454.json | 1 - public/images/pokemon/variant/back/456.json | 10 +-- public/images/pokemon/variant/back/4562.json | 4 - public/images/pokemon/variant/back/457.json | 2 - public/images/pokemon/variant/back/46.json | 3 - public/images/pokemon/variant/back/461.json | 3 - public/images/pokemon/variant/back/462.json | 3 - public/images/pokemon/variant/back/464.json | 9 +-- public/images/pokemon/variant/back/465.json | 4 +- public/images/pokemon/variant/back/466.json | 5 +- public/images/pokemon/variant/back/467.json | 6 -- public/images/pokemon/variant/back/468.json | 3 - public/images/pokemon/variant/back/47.json | 3 - public/images/pokemon/variant/back/470.json | 1 - public/images/pokemon/variant/back/471.json | 14 +--- public/images/pokemon/variant/back/474.json | 3 - public/images/pokemon/variant/back/475.json | 6 -- public/images/pokemon/variant/back/478.json | 1 - .../images/pokemon/variant/back/479-fan.json | 9 +-- .../pokemon/variant/back/479-frost.json | 9 +-- .../images/pokemon/variant/back/479-heat.json | 3 - .../images/pokemon/variant/back/479-mow.json | 6 +- .../images/pokemon/variant/back/479-wash.json | 8 +- public/images/pokemon/variant/back/479.json | 4 - public/images/pokemon/variant/back/480.json | 3 - public/images/pokemon/variant/back/481.json | 6 +- public/images/pokemon/variant/back/482.json | 3 - public/images/pokemon/variant/back/485.json | 9 +-- .../pokemon/variant/back/487-altered.json | 2 - .../pokemon/variant/back/487-origin.json | 6 +- public/images/pokemon/variant/back/488.json | 4 - public/images/pokemon/variant/back/489.json | 3 - public/images/pokemon/variant/back/490.json | 3 - public/images/pokemon/variant/back/491.json | 11 +-- .../images/pokemon/variant/back/492-land.json | 2 - .../images/pokemon/variant/back/492-sky.json | 2 - public/images/pokemon/variant/back/494.json | 4 - public/images/pokemon/variant/back/495.json | 4 - public/images/pokemon/variant/back/496.json | 6 -- public/images/pokemon/variant/back/497.json | 3 - public/images/pokemon/variant/back/5.json | 8 -- public/images/pokemon/variant/back/50.json | 2 - public/images/pokemon/variant/back/51.json | 2 - public/images/pokemon/variant/back/517.json | 8 +- public/images/pokemon/variant/back/518.json | 2 - .../pokemon/variant/back/52-gigantamax.json | 9 --- public/images/pokemon/variant/back/52.json | 8 -- public/images/pokemon/variant/back/524.json | 2 - public/images/pokemon/variant/back/525.json | 2 - public/images/pokemon/variant/back/526.json | 2 - public/images/pokemon/variant/back/53.json | 3 - public/images/pokemon/variant/back/530.json | 3 - .../images/pokemon/variant/back/531-mega.json | 2 - public/images/pokemon/variant/back/531.json | 3 - public/images/pokemon/variant/back/532.json | 6 -- public/images/pokemon/variant/back/533.json | 2 - public/images/pokemon/variant/back/534.json | 2 - public/images/pokemon/variant/back/540.json | 2 - public/images/pokemon/variant/back/541.json | 2 - public/images/pokemon/variant/back/542.json | 2 - public/images/pokemon/variant/back/543.json | 1 - public/images/pokemon/variant/back/544.json | 2 - public/images/pokemon/variant/back/545.json | 2 - public/images/pokemon/variant/back/546.json | 2 - public/images/pokemon/variant/back/547.json | 4 - public/images/pokemon/variant/back/548.json | 3 - public/images/pokemon/variant/back/549.json | 4 - public/images/pokemon/variant/back/551.json | 2 - public/images/pokemon/variant/back/552.json | 2 - public/images/pokemon/variant/back/553.json | 2 - public/images/pokemon/variant/back/556.json | 2 - public/images/pokemon/variant/back/559.json | 25 +----- public/images/pokemon/variant/back/56.json | 3 - public/images/pokemon/variant/back/560.json | 18 ----- public/images/pokemon/variant/back/562.json | 9 +-- public/images/pokemon/variant/back/563.json | 2 - public/images/pokemon/variant/back/568.json | 2 - .../pokemon/variant/back/569-gigantamax.json | 3 - public/images/pokemon/variant/back/569.json | 2 - public/images/pokemon/variant/back/57.json | 8 +- public/images/pokemon/variant/back/570.json | 2 - public/images/pokemon/variant/back/571.json | 8 +- public/images/pokemon/variant/back/577.json | 4 - public/images/pokemon/variant/back/578.json | 3 - public/images/pokemon/variant/back/579.json | 3 - .../pokemon/variant/back/585-summer.json | 2 - .../pokemon/variant/back/586-autumn.json | 7 -- .../pokemon/variant/back/586-spring.json | 2 - .../pokemon/variant/back/586-summer.json | 3 - .../pokemon/variant/back/586-winter.json | 5 +- public/images/pokemon/variant/back/592.json | 4 +- public/images/pokemon/variant/back/593.json | 2 - public/images/pokemon/variant/back/594.json | 4 +- public/images/pokemon/variant/back/595.json | 2 - public/images/pokemon/variant/back/596.json | 3 - .../pokemon/variant/back/6-gigantamax.json | 1 - .../images/pokemon/variant/back/6-mega-x.json | 4 +- .../images/pokemon/variant/back/6-mega-y.json | 7 +- public/images/pokemon/variant/back/602.json | 2 - public/images/pokemon/variant/back/603.json | 3 - public/images/pokemon/variant/back/604.json | 2 - public/images/pokemon/variant/back/605.json | 3 - public/images/pokemon/variant/back/606.json | 4 - public/images/pokemon/variant/back/609.json | 2 - public/images/pokemon/variant/back/610.json | 6 -- public/images/pokemon/variant/back/6100.json | 8 -- public/images/pokemon/variant/back/6101.json | 9 +-- public/images/pokemon/variant/back/611.json | 4 - public/images/pokemon/variant/back/612.json | 2 - public/images/pokemon/variant/back/618.json | 5 -- public/images/pokemon/variant/back/619.json | 7 +- public/images/pokemon/variant/back/620.json | 4 - public/images/pokemon/variant/back/6215.json | 6 -- public/images/pokemon/variant/back/622.json | 2 - public/images/pokemon/variant/back/633.json | 2 - public/images/pokemon/variant/back/634.json | 10 +-- public/images/pokemon/variant/back/635.json | 4 - .../pokemon/variant/back/647-ordinary.json | 13 +-- .../pokemon/variant/back/647-resolute.json | 12 +-- .../pokemon/variant/back/648-pirouette.json | 5 +- .../images/pokemon/variant/back/649-burn.json | 8 -- .../pokemon/variant/back/649-chill.json | 6 -- .../pokemon/variant/back/649-douse.json | 8 -- .../pokemon/variant/back/649-shock.json | 8 -- public/images/pokemon/variant/back/649.json | 8 -- public/images/pokemon/variant/back/653.json | 2 - public/images/pokemon/variant/back/654.json | 10 +-- public/images/pokemon/variant/back/6549.json | 12 +-- public/images/pokemon/variant/back/655.json | 6 -- public/images/pokemon/variant/back/6570.json | 2 - public/images/pokemon/variant/back/6571.json | 5 +- public/images/pokemon/variant/back/664.json | 2 - public/images/pokemon/variant/back/665.json | 3 - .../pokemon/variant/back/666-archipelago.json | 19 +---- .../pokemon/variant/back/666-continental.json | 19 +---- .../pokemon/variant/back/666-elegant.json | 17 +--- .../pokemon/variant/back/666-fancy.json | 54 +++++-------- .../pokemon/variant/back/666-garden.json | 15 +--- .../pokemon/variant/back/666-high-plains.json | 21 +---- .../pokemon/variant/back/666-icy-snow.json | 15 +--- .../pokemon/variant/back/666-jungle.json | 19 +---- .../pokemon/variant/back/666-marine.json | 15 +--- .../pokemon/variant/back/666-meadow.json | 17 +--- .../pokemon/variant/back/666-modern.json | 19 +---- .../pokemon/variant/back/666-monsoon.json | 48 ++++------- .../pokemon/variant/back/666-ocean.json | 20 +---- .../pokemon/variant/back/666-poke-ball.json | 11 +-- .../pokemon/variant/back/666-polar.json | 19 +---- .../pokemon/variant/back/666-river.json | 54 ++++--------- .../pokemon/variant/back/666-sandstorm.json | 19 +---- .../pokemon/variant/back/666-savanna.json | 17 +--- .../images/pokemon/variant/back/666-sun.json | 17 +--- .../pokemon/variant/back/666-tundra.json | 15 +--- .../images/pokemon/variant/back/669-blue.json | 5 -- .../pokemon/variant/back/669-orange.json | 5 -- .../images/pokemon/variant/back/669-red.json | 5 -- .../pokemon/variant/back/669-white.json | 6 -- .../pokemon/variant/back/669-yellow.json | 5 -- .../images/pokemon/variant/back/670-blue.json | 7 +- .../pokemon/variant/back/670-orange.json | 7 +- .../images/pokemon/variant/back/670-red.json | 7 +- .../pokemon/variant/back/670-white.json | 11 +-- .../pokemon/variant/back/670-yellow.json | 7 +- public/images/pokemon/variant/back/6705.json | 7 +- .../images/pokemon/variant/back/671-blue.json | 7 +- .../pokemon/variant/back/671-orange.json | 7 +- .../images/pokemon/variant/back/671-red.json | 7 +- .../pokemon/variant/back/671-white.json | 9 +-- .../pokemon/variant/back/671-yellow.json | 7 +- public/images/pokemon/variant/back/6713.json | 2 - public/images/pokemon/variant/back/672.json | 2 - public/images/pokemon/variant/back/673.json | 2 - public/images/pokemon/variant/back/677.json | 6 +- .../pokemon/variant/back/678-female.json | 2 - public/images/pokemon/variant/back/678.json | 2 - public/images/pokemon/variant/back/69.json | 5 -- public/images/pokemon/variant/back/690.json | 2 - public/images/pokemon/variant/back/691.json | 2 - public/images/pokemon/variant/back/696.json | 70 +++++----------- public/images/pokemon/variant/back/697.json | 52 ++++++------ public/images/pokemon/variant/back/698.json | 10 +-- public/images/pokemon/variant/back/699.json | 4 - public/images/pokemon/variant/back/700.json | 2 - public/images/pokemon/variant/back/702.json | 2 - public/images/pokemon/variant/back/703.json | 3 - public/images/pokemon/variant/back/704.json | 2 - public/images/pokemon/variant/back/705.json | 2 - public/images/pokemon/variant/back/706.json | 4 - public/images/pokemon/variant/back/708.json | 2 - public/images/pokemon/variant/back/709.json | 2 - public/images/pokemon/variant/back/71.json | 5 -- public/images/pokemon/variant/back/710.json | 2 - public/images/pokemon/variant/back/711.json | 3 - public/images/pokemon/variant/back/712.json | 7 +- public/images/pokemon/variant/back/713.json | 6 +- public/images/pokemon/variant/back/714.json | 2 - public/images/pokemon/variant/back/715.json | 66 +++++++-------- .../pokemon/variant/back/716-active.json | 6 -- .../pokemon/variant/back/716-neutral.json | 2 - public/images/pokemon/variant/back/717.json | 1 - .../pokemon/variant/back/720-unbound.json | 3 - public/images/pokemon/variant/back/720.json | 3 - public/images/pokemon/variant/back/728.json | 4 - public/images/pokemon/variant/back/729.json | 9 +-- public/images/pokemon/variant/back/730.json | 8 +- public/images/pokemon/variant/back/734.json | 2 - public/images/pokemon/variant/back/735.json | 2 - public/images/pokemon/variant/back/747.json | 2 - public/images/pokemon/variant/back/748.json | 8 +- public/images/pokemon/variant/back/751.json | 9 +-- public/images/pokemon/variant/back/752.json | 4 - public/images/pokemon/variant/back/753.json | 10 +-- public/images/pokemon/variant/back/755.json | 2 - public/images/pokemon/variant/back/756.json | 2 - public/images/pokemon/variant/back/761.json | 7 +- public/images/pokemon/variant/back/762.json | 5 -- public/images/pokemon/variant/back/763.json | 6 -- public/images/pokemon/variant/back/767.json | 2 - public/images/pokemon/variant/back/768.json | 7 +- public/images/pokemon/variant/back/77.json | 4 - public/images/pokemon/variant/back/771.json | 4 - public/images/pokemon/variant/back/772.json | 2 - public/images/pokemon/variant/back/773.json | 4 - public/images/pokemon/variant/back/776.json | 2 - public/images/pokemon/variant/back/777.json | 3 - .../pokemon/variant/back/778-busted.json | 1 - .../pokemon/variant/back/778-disguised.json | 3 +- public/images/pokemon/variant/back/779.json | 10 +-- public/images/pokemon/variant/back/78.json | 4 - public/images/pokemon/variant/back/789.json | 14 ---- public/images/pokemon/variant/back/79.json | 15 +--- public/images/pokemon/variant/back/790.json | 10 --- .../pokemon/variant/back/791-radiant-sun.json | 2 - public/images/pokemon/variant/back/791.json | 2 - .../pokemon/variant/back/792-full-moon.json | 3 - public/images/pokemon/variant/back/792.json | 4 - public/images/pokemon/variant/back/793.json | 6 +- public/images/pokemon/variant/back/797.json | 2 - public/images/pokemon/variant/back/798.json | 1 - .../images/pokemon/variant/back/80-mega.json | 6 -- public/images/pokemon/variant/back/80.json | 8 -- .../pokemon/variant/back/800-dawn-wings.json | 2 - .../pokemon/variant/back/800-dusk-mane.json | 3 - .../pokemon/variant/back/800-ultra.json | 2 - public/images/pokemon/variant/back/800.json | 6 +- public/images/pokemon/variant/back/802.json | 3 - public/images/pokemon/variant/back/803.json | 2 - public/images/pokemon/variant/back/804.json | 2 - public/images/pokemon/variant/back/808.json | 8 +- .../pokemon/variant/back/809-gigantamax.json | 7 +- public/images/pokemon/variant/back/809.json | 7 +- public/images/pokemon/variant/back/81.json | 3 - public/images/pokemon/variant/back/816.json | 6 +- public/images/pokemon/variant/back/817.json | 8 +- .../pokemon/variant/back/818-gigantamax.json | 7 -- public/images/pokemon/variant/back/818.json | 4 - public/images/pokemon/variant/back/82.json | 3 - public/images/pokemon/variant/back/821.json | 2 - public/images/pokemon/variant/back/822.json | 4 - public/images/pokemon/variant/back/823.json | 4 - public/images/pokemon/variant/back/829.json | 3 - public/images/pokemon/variant/back/830.json | 6 +- public/images/pokemon/variant/back/835.json | 3 - public/images/pokemon/variant/back/836.json | 4 - public/images/pokemon/variant/back/84.json | 7 -- public/images/pokemon/variant/back/85.json | 11 --- public/images/pokemon/variant/back/850.json | 6 +- .../pokemon/variant/back/851-gigantamax.json | 5 -- public/images/pokemon/variant/back/851.json | 6 +- public/images/pokemon/variant/back/854.json | 2 - public/images/pokemon/variant/back/855.json | 2 - public/images/pokemon/variant/back/856.json | 2 - .../pokemon/variant/back/858-gigantamax.json | 2 - public/images/pokemon/variant/back/858.json | 2 - public/images/pokemon/variant/back/859.json | 2 - public/images/pokemon/variant/back/86.json | 6 -- public/images/pokemon/variant/back/860.json | 2 - .../pokemon/variant/back/861-gigantamax.json | 2 - public/images/pokemon/variant/back/861.json | 2 - public/images/pokemon/variant/back/862.json | 9 +-- public/images/pokemon/variant/back/863.json | 3 - public/images/pokemon/variant/back/864.json | 6 +- public/images/pokemon/variant/back/867.json | 2 - public/images/pokemon/variant/back/87.json | 18 +---- public/images/pokemon/variant/back/872.json | 6 -- public/images/pokemon/variant/back/873.json | 9 +-- .../pokemon/variant/back/876-female.json | 2 - public/images/pokemon/variant/back/876.json | 2 - .../pokemon/variant/back/877-hangry.json | 7 -- public/images/pokemon/variant/back/877.json | 12 --- public/images/pokemon/variant/back/880.json | 3 - public/images/pokemon/variant/back/881.json | 3 - public/images/pokemon/variant/back/882.json | 2 - public/images/pokemon/variant/back/883.json | 2 - .../pokemon/variant/back/884-gigantamax.json | 2 - public/images/pokemon/variant/back/884.json | 2 - public/images/pokemon/variant/back/885.json | 3 - public/images/pokemon/variant/back/886.json | 4 - public/images/pokemon/variant/back/887.json | 4 - .../pokemon/variant/back/888-crowned.json | 2 - public/images/pokemon/variant/back/888.json | 2 - .../pokemon/variant/back/889-crowned.json | 2 - public/images/pokemon/variant/back/889.json | 2 - .../pokemon/variant/back/890-eternamax.json | 2 - public/images/pokemon/variant/back/890.json | 6 -- public/images/pokemon/variant/back/8901.json | 20 +---- public/images/pokemon/variant/back/891.json | 6 -- .../variant/back/892-gigantamax-rapid.json | 5 -- .../variant/back/892-gigantamax-single.json | 5 -- .../variant/back/892-rapid-strike.json | 5 -- public/images/pokemon/variant/back/892.json | 5 -- public/images/pokemon/variant/back/896.json | 3 - public/images/pokemon/variant/back/897.json | 7 -- .../images/pokemon/variant/back/898-ice.json | 13 +-- .../pokemon/variant/back/898-shadow.json | 11 --- public/images/pokemon/variant/back/898.json | 5 -- .../pokemon/variant/back/9-gigantamax.json | 5 -- public/images/pokemon/variant/back/900.json | 20 +---- public/images/pokemon/variant/back/901.json | 15 +--- public/images/pokemon/variant/back/903.json | 4 - public/images/pokemon/variant/back/909.json | 8 +- public/images/pokemon/variant/back/911.json | 9 +-- public/images/pokemon/variant/back/912.json | 2 - public/images/pokemon/variant/back/913.json | 2 - public/images/pokemon/variant/back/914.json | 2 - public/images/pokemon/variant/back/919.json | 13 +-- public/images/pokemon/variant/back/920.json | 12 --- public/images/pokemon/variant/back/924.json | 3 - .../images/pokemon/variant/back/925-four.json | 3 - .../pokemon/variant/back/925-three.json | 3 - public/images/pokemon/variant/back/93.json | 15 +--- public/images/pokemon/variant/back/932.json | 2 - public/images/pokemon/variant/back/933.json | 2 - public/images/pokemon/variant/back/934.json | 2 - public/images/pokemon/variant/back/936.json | 11 --- public/images/pokemon/variant/back/937.json | 4 - .../pokemon/variant/back/94-gigantamax.json | 3 - .../images/pokemon/variant/back/94-mega.json | 3 - public/images/pokemon/variant/back/94.json | 3 - public/images/pokemon/variant/back/940.json | 4 - public/images/pokemon/variant/back/941.json | 6 -- public/images/pokemon/variant/back/948.json | 2 - public/images/pokemon/variant/back/949.json | 6 -- public/images/pokemon/variant/back/951.json | 4 - public/images/pokemon/variant/back/952.json | 2 - public/images/pokemon/variant/back/953.json | 2 - public/images/pokemon/variant/back/954.json | 2 - public/images/pokemon/variant/back/957.json | 3 - public/images/pokemon/variant/back/958.json | 3 - public/images/pokemon/variant/back/959.json | 7 -- public/images/pokemon/variant/back/962.json | 3 - public/images/pokemon/variant/back/967.json | 11 +-- public/images/pokemon/variant/back/968.json | 15 +--- public/images/pokemon/variant/back/969.json | 2 - public/images/pokemon/variant/back/970.json | 1 - public/images/pokemon/variant/back/973.json | 11 --- public/images/pokemon/variant/back/974.json | 2 - public/images/pokemon/variant/back/975.json | 9 +-- .../pokemon/variant/back/978-stretchy.json | 2 - public/images/pokemon/variant/back/979.json | 7 +- public/images/pokemon/variant/back/98.json | 6 -- public/images/pokemon/variant/back/981.json | 6 -- .../variant/back/982-three-segment.json | 2 - public/images/pokemon/variant/back/982.json | 2 - public/images/pokemon/variant/back/987.json | 3 - public/images/pokemon/variant/back/988.json | 6 -- .../pokemon/variant/back/99-gigantamax.json | 2 - public/images/pokemon/variant/back/99.json | 3 - public/images/pokemon/variant/back/993.json | 4 - public/images/pokemon/variant/back/994.json | 6 -- public/images/pokemon/variant/back/995.json | 8 -- public/images/pokemon/variant/back/996.json | 5 -- public/images/pokemon/variant/back/997.json | 2 - public/images/pokemon/variant/back/998.json | 3 - public/images/pokemon/variant/back/999.json | 7 -- .../pokemon/variant/back/female/111.json | 10 +-- .../pokemon/variant/back/female/112.json | 10 +-- .../pokemon/variant/back/female/118.json | 3 - .../pokemon/variant/back/female/119.json | 2 - .../pokemon/variant/back/female/123.json | 27 +------ .../pokemon/variant/back/female/129.json | 2 - .../pokemon/variant/back/female/130.json | 2 - .../pokemon/variant/back/female/185.json | 2 - .../pokemon/variant/back/female/19.json | 6 -- .../pokemon/variant/back/female/190.json | 2 - .../pokemon/variant/back/female/20.json | 7 +- .../pokemon/variant/back/female/203.json | 4 - .../pokemon/variant/back/female/212.json | 19 +---- .../pokemon/variant/back/female/215.json | 5 +- .../pokemon/variant/back/female/217.json | 21 +---- .../pokemon/variant/back/female/229.json | 12 +-- .../pokemon/variant/back/female/232.json | 2 - .../pokemon/variant/back/female/255.json | 8 +- .../pokemon/variant/back/female/256.json | 2 - .../pokemon/variant/back/female/257.json | 2 - .../images/pokemon/variant/back/female/3.json | 8 +- .../pokemon/variant/back/female/307.json | 2 - .../pokemon/variant/back/female/308.json | 3 - .../pokemon/variant/back/female/315.json | 2 - .../pokemon/variant/back/female/369.json | 4 - .../pokemon/variant/back/female/399.json | 3 - .../pokemon/variant/back/female/400.json | 3 - .../pokemon/variant/back/female/401.json | 2 - .../pokemon/variant/back/female/402.json | 2 - .../pokemon/variant/back/female/407.json | 5 -- .../pokemon/variant/back/female/41.json | 10 +-- .../pokemon/variant/back/female/419.json | 7 -- .../pokemon/variant/back/female/42.json | 2 - .../pokemon/variant/back/female/424.json | 2 - .../pokemon/variant/back/female/44.json | 3 - .../pokemon/variant/back/female/443.json | 11 --- .../pokemon/variant/back/female/444.json | 15 +--- .../pokemon/variant/back/female/445.json | 12 --- .../pokemon/variant/back/female/45.json | 2 - .../pokemon/variant/back/female/453.json | 1 - .../pokemon/variant/back/female/454.json | 1 - .../pokemon/variant/back/female/456.json | 10 +-- .../pokemon/variant/back/female/457.json | 4 - .../pokemon/variant/back/female/461.json | 6 +- .../pokemon/variant/back/female/464.json | 9 +-- .../pokemon/variant/back/female/465.json | 2 - .../pokemon/variant/back/female/592.json | 12 +-- .../pokemon/variant/back/female/593.json | 3 - .../pokemon/variant/back/female/6215.json | 6 -- .../pokemon/variant/back/female/84.json | 9 --- .../pokemon/variant/back/female/85.json | 11 --- public/images/pokemon/variant/exp/1001.json | 14 +--- public/images/pokemon/variant/exp/1003.json | 2 - public/images/pokemon/variant/exp/1004.json | 46 +---------- public/images/pokemon/variant/exp/1006.json | 1 - .../variant/exp/1008-ultimate-mode.json | 15 ---- .../images/pokemon/variant/exp/127-mega.json | 14 +--- .../images/pokemon/variant/exp/181-mega.json | 2 - public/images/pokemon/variant/exp/2027.json | 4 - public/images/pokemon/variant/exp/2028.json | 5 +- public/images/pokemon/variant/exp/2052.json | 4 - public/images/pokemon/variant/exp/2053.json | 2 - .../images/pokemon/variant/exp/212-mega.json | 24 +----- .../images/pokemon/variant/exp/229-mega.json | 8 -- .../images/pokemon/variant/exp/248-mega.json | 56 ++++++------- .../images/pokemon/variant/exp/257-mega.json | 2 - .../images/pokemon/variant/exp/302-mega.json | 2 - .../images/pokemon/variant/exp/303-mega.json | 8 -- .../images/pokemon/variant/exp/306-mega.json | 8 +- .../images/pokemon/variant/exp/334-mega.json | 1 - .../images/pokemon/variant/exp/354-mega.json | 10 +-- .../images/pokemon/variant/exp/362-mega.json | 4 +- .../images/pokemon/variant/exp/373-mega.json | 11 --- .../images/pokemon/variant/exp/376-mega.json | 2 - .../images/pokemon/variant/exp/380-mega.json | 2 +- .../images/pokemon/variant/exp/381-mega.json | 2 +- .../pokemon/variant/exp/382-primal.json | 22 +---- .../pokemon/variant/exp/383-primal.json | 6 -- .../images/pokemon/variant/exp/384-mega.json | 4 +- public/images/pokemon/variant/exp/4052.json | 11 +-- public/images/pokemon/variant/exp/4077.json | 4 - public/images/pokemon/variant/exp/4078.json | 4 - public/images/pokemon/variant/exp/4079.json | 6 -- public/images/pokemon/variant/exp/4080.json | 6 -- public/images/pokemon/variant/exp/4199.json | 4 - public/images/pokemon/variant/exp/4222.json | 2 - public/images/pokemon/variant/exp/4263.json | 4 - public/images/pokemon/variant/exp/4264.json | 4 - .../images/pokemon/variant/exp/428-mega.json | 4 - .../images/pokemon/variant/exp/445-mega.json | 18 +---- public/images/pokemon/variant/exp/4562.json | 4 - .../images/pokemon/variant/exp/531-mega.json | 2 - public/images/pokemon/variant/exp/6100.json | 2 - public/images/pokemon/variant/exp/6101.json | 12 +-- public/images/pokemon/variant/exp/6215.json | 12 +-- public/images/pokemon/variant/exp/653.json | 8 +- public/images/pokemon/variant/exp/654.json | 6 -- public/images/pokemon/variant/exp/6549.json | 6 +- public/images/pokemon/variant/exp/655.json | 2 - public/images/pokemon/variant/exp/6570.json | 7 +- public/images/pokemon/variant/exp/6571.json | 7 -- public/images/pokemon/variant/exp/664.json | 6 -- public/images/pokemon/variant/exp/665.json | 4 - .../pokemon/variant/exp/666-archipelago.json | 20 +---- .../pokemon/variant/exp/666-continental.json | 20 +---- .../pokemon/variant/exp/666-elegant.json | 20 +---- .../images/pokemon/variant/exp/666-fancy.json | 56 +++++-------- .../pokemon/variant/exp/666-garden.json | 18 +---- .../pokemon/variant/exp/666-high-plains.json | 22 +---- .../pokemon/variant/exp/666-icy-snow.json | 18 +---- .../pokemon/variant/exp/666-jungle.json | 20 +---- .../pokemon/variant/exp/666-marine.json | 18 +---- .../pokemon/variant/exp/666-meadow.json | 52 +++++------- .../pokemon/variant/exp/666-modern.json | 20 +---- .../pokemon/variant/exp/666-monsoon.json | 48 ++++------- .../images/pokemon/variant/exp/666-ocean.json | 20 +---- .../pokemon/variant/exp/666-poke-ball.json | 12 +-- .../images/pokemon/variant/exp/666-polar.json | 20 +---- .../images/pokemon/variant/exp/666-river.json | 54 ++++--------- .../pokemon/variant/exp/666-sandstorm.json | 20 +---- .../pokemon/variant/exp/666-savanna.json | 20 +---- .../images/pokemon/variant/exp/666-sun.json | 20 +---- .../pokemon/variant/exp/666-tundra.json | 18 +---- .../images/pokemon/variant/exp/669-blue.json | 3 - .../images/pokemon/variant/exp/669-white.json | 3 - .../pokemon/variant/exp/669-yellow.json | 3 - .../images/pokemon/variant/exp/670-blue.json | 16 +--- .../pokemon/variant/exp/670-orange.json | 16 +--- .../images/pokemon/variant/exp/670-red.json | 16 +--- .../images/pokemon/variant/exp/670-white.json | 18 +---- .../pokemon/variant/exp/670-yellow.json | 16 +--- public/images/pokemon/variant/exp/6705.json | 5 +- .../images/pokemon/variant/exp/671-blue.json | 8 +- .../pokemon/variant/exp/671-orange.json | 8 +- .../images/pokemon/variant/exp/671-red.json | 8 +- .../images/pokemon/variant/exp/671-white.json | 8 +- .../pokemon/variant/exp/671-yellow.json | 14 +--- public/images/pokemon/variant/exp/6713.json | 2 - public/images/pokemon/variant/exp/672.json | 4 - public/images/pokemon/variant/exp/673.json | 4 - public/images/pokemon/variant/exp/677.json | 8 +- .../pokemon/variant/exp/678-female.json | 4 - public/images/pokemon/variant/exp/678.json | 9 +-- public/images/pokemon/variant/exp/691.json | 1 - public/images/pokemon/variant/exp/696.json | 80 +++++++----------- public/images/pokemon/variant/exp/697.json | 81 +++++++++---------- public/images/pokemon/variant/exp/699.json | 4 - public/images/pokemon/variant/exp/700.json | 56 ++++++------- public/images/pokemon/variant/exp/702.json | 4 - public/images/pokemon/variant/exp/704.json | 2 - public/images/pokemon/variant/exp/705.json | 2 - public/images/pokemon/variant/exp/706.json | 4 - public/images/pokemon/variant/exp/709.json | 2 - public/images/pokemon/variant/exp/710.json | 2 - public/images/pokemon/variant/exp/711.json | 4 - public/images/pokemon/variant/exp/712.json | 7 +- public/images/pokemon/variant/exp/713.json | 8 +- public/images/pokemon/variant/exp/715.json | 34 ++++---- .../pokemon/variant/exp/716-active.json | 8 +- .../pokemon/variant/exp/716-neutral.json | 2 - public/images/pokemon/variant/exp/728.json | 6 -- public/images/pokemon/variant/exp/729.json | 6 -- public/images/pokemon/variant/exp/730.json | 8 +- public/images/pokemon/variant/exp/734.json | 16 +--- public/images/pokemon/variant/exp/735.json | 7 -- public/images/pokemon/variant/exp/748.json | 3 - public/images/pokemon/variant/exp/752.json | 5 -- public/images/pokemon/variant/exp/753.json | 2 - public/images/pokemon/variant/exp/754.json | 2 - public/images/pokemon/variant/exp/755.json | 2 - public/images/pokemon/variant/exp/756.json | 2 - public/images/pokemon/variant/exp/761.json | 8 +- public/images/pokemon/variant/exp/762.json | 5 -- public/images/pokemon/variant/exp/763.json | 5 -- public/images/pokemon/variant/exp/767.json | 8 +- public/images/pokemon/variant/exp/768.json | 7 +- public/images/pokemon/variant/exp/771.json | 4 +- public/images/pokemon/variant/exp/772.json | 2 - public/images/pokemon/variant/exp/773.json | 5 -- public/images/pokemon/variant/exp/776.json | 4 - public/images/pokemon/variant/exp/777.json | 5 -- .../pokemon/variant/exp/778-busted.json | 3 - .../pokemon/variant/exp/778-disguised.json | 4 +- public/images/pokemon/variant/exp/779.json | 10 +-- public/images/pokemon/variant/exp/789.json | 8 -- public/images/pokemon/variant/exp/790.json | 9 --- public/images/pokemon/variant/exp/792.json | 18 +---- public/images/pokemon/variant/exp/797.json | 2 - public/images/pokemon/variant/exp/798.json | 2 - .../images/pokemon/variant/exp/80-mega.json | 6 -- .../pokemon/variant/exp/800-dawn-wings.json | 21 +---- .../images/pokemon/variant/exp/800-ultra.json | 10 +-- public/images/pokemon/variant/exp/800.json | 3 - public/images/pokemon/variant/exp/802.json | 5 -- public/images/pokemon/variant/exp/803.json | 2 - public/images/pokemon/variant/exp/804.json | 8 +- public/images/pokemon/variant/exp/808.json | 8 +- public/images/pokemon/variant/exp/809.json | 8 +- public/images/pokemon/variant/exp/816.json | 8 +- public/images/pokemon/variant/exp/817.json | 4 - public/images/pokemon/variant/exp/818.json | 7 -- public/images/pokemon/variant/exp/822.json | 4 - public/images/pokemon/variant/exp/823.json | 5 +- public/images/pokemon/variant/exp/830.json | 2 - public/images/pokemon/variant/exp/835.json | 12 +-- public/images/pokemon/variant/exp/850.json | 14 +--- public/images/pokemon/variant/exp/851.json | 5 -- public/images/pokemon/variant/exp/854.json | 3 - public/images/pokemon/variant/exp/855.json | 8 +- public/images/pokemon/variant/exp/856.json | 2 - public/images/pokemon/variant/exp/858.json | 2 - public/images/pokemon/variant/exp/859.json | 5 -- public/images/pokemon/variant/exp/860.json | 7 -- public/images/pokemon/variant/exp/861.json | 7 -- public/images/pokemon/variant/exp/862.json | 5 -- public/images/pokemon/variant/exp/863.json | 13 +-- public/images/pokemon/variant/exp/864.json | 2 +- public/images/pokemon/variant/exp/867.json | 2 - public/images/pokemon/variant/exp/872.json | 15 +--- public/images/pokemon/variant/exp/873.json | 4 - .../pokemon/variant/exp/876-female.json | 2 - public/images/pokemon/variant/exp/876.json | 5 -- .../pokemon/variant/exp/877-hangry.json | 14 ---- public/images/pokemon/variant/exp/877.json | 22 +---- public/images/pokemon/variant/exp/880.json | 48 +---------- public/images/pokemon/variant/exp/881.json | 2 - public/images/pokemon/variant/exp/883.json | 2 - public/images/pokemon/variant/exp/884.json | 2 - public/images/pokemon/variant/exp/885.json | 3 - public/images/pokemon/variant/exp/886.json | 5 -- public/images/pokemon/variant/exp/887.json | 3 - .../pokemon/variant/exp/888-crowned.json | 6 -- public/images/pokemon/variant/exp/888.json | 10 +-- .../pokemon/variant/exp/889-crowned.json | 6 -- public/images/pokemon/variant/exp/889.json | 10 +-- .../pokemon/variant/exp/890-eternamax.json | 2 - public/images/pokemon/variant/exp/890.json | 6 +- public/images/pokemon/variant/exp/891.json | 10 --- .../pokemon/variant/exp/892-rapid-strike.json | 17 +--- public/images/pokemon/variant/exp/892.json | 17 +--- public/images/pokemon/variant/exp/896.json | 3 - public/images/pokemon/variant/exp/897.json | 7 -- .../images/pokemon/variant/exp/898-ice.json | 7 -- .../pokemon/variant/exp/898-shadow.json | 11 --- public/images/pokemon/variant/exp/898.json | 5 -- public/images/pokemon/variant/exp/900.json | 17 +--- public/images/pokemon/variant/exp/901.json | 17 +--- public/images/pokemon/variant/exp/903.json | 3 - public/images/pokemon/variant/exp/909.json | 23 +----- public/images/pokemon/variant/exp/912.json | 2 - public/images/pokemon/variant/exp/913.json | 2 - public/images/pokemon/variant/exp/914.json | 5 +- public/images/pokemon/variant/exp/919.json | 6 -- public/images/pokemon/variant/exp/920.json | 12 --- public/images/pokemon/variant/exp/934.json | 2 - public/images/pokemon/variant/exp/940.json | 7 -- public/images/pokemon/variant/exp/941.json | 10 --- public/images/pokemon/variant/exp/948.json | 2 - public/images/pokemon/variant/exp/949.json | 2 - public/images/pokemon/variant/exp/951.json | 3 - public/images/pokemon/variant/exp/952.json | 12 --- public/images/pokemon/variant/exp/953.json | 4 +- public/images/pokemon/variant/exp/954.json | 2 - public/images/pokemon/variant/exp/962.json | 52 +----------- public/images/pokemon/variant/exp/967.json | 9 --- public/images/pokemon/variant/exp/968.json | 19 +---- public/images/pokemon/variant/exp/969.json | 2 - public/images/pokemon/variant/exp/973.json | 26 +----- public/images/pokemon/variant/exp/974.json | 8 -- public/images/pokemon/variant/exp/975.json | 8 +- public/images/pokemon/variant/exp/981.json | 6 -- .../variant/exp/982-three-segment.json | 9 +-- public/images/pokemon/variant/exp/982.json | 3 - public/images/pokemon/variant/exp/987.json | 6 -- public/images/pokemon/variant/exp/988.json | 4 - public/images/pokemon/variant/exp/993.json | 50 +----------- public/images/pokemon/variant/exp/994.json | 2 - public/images/pokemon/variant/exp/995.json | 15 +--- public/images/pokemon/variant/exp/996.json | 3 - public/images/pokemon/variant/exp/999.json | 2 - .../images/pokemon/variant/exp/back/1000.json | 13 +-- .../images/pokemon/variant/exp/back/1001.json | 2 - .../images/pokemon/variant/exp/back/1003.json | 2 - .../images/pokemon/variant/exp/back/1004.json | 8 +- .../variant/exp/back/1008-ultimate-mode.json | 19 +---- .../pokemon/variant/exp/back/127-mega.json | 16 +--- .../pokemon/variant/exp/back/130-mega.json | 13 +-- .../pokemon/variant/exp/back/142-mega.json | 2 - .../pokemon/variant/exp/back/150-mega-x.json | 5 -- .../pokemon/variant/exp/back/181-mega.json | 6 +- .../images/pokemon/variant/exp/back/2027.json | 10 +-- .../images/pokemon/variant/exp/back/2028.json | 8 +- .../images/pokemon/variant/exp/back/2052.json | 4 - .../images/pokemon/variant/exp/back/2053.json | 8 +- .../pokemon/variant/exp/back/212-mega.json | 27 ------- .../pokemon/variant/exp/back/229-mega.json | 12 --- .../pokemon/variant/exp/back/248-mega.json | 40 +++++---- .../pokemon/variant/exp/back/257-mega.json | 2 - .../pokemon/variant/exp/back/282-mega.json | 5 -- .../pokemon/variant/exp/back/302-mega.json | 2 - .../pokemon/variant/exp/back/303-mega.json | 9 --- .../pokemon/variant/exp/back/308-mega.json | 3 - .../pokemon/variant/exp/back/310-mega.json | 9 +-- .../pokemon/variant/exp/back/354-mega.json | 2 - .../pokemon/variant/exp/back/362-mega.json | 2 - .../pokemon/variant/exp/back/373-mega.json | 1 - .../pokemon/variant/exp/back/376-mega.json | 8 +- .../pokemon/variant/exp/back/380-mega.json | 2 - .../pokemon/variant/exp/back/381-mega.json | 2 - .../pokemon/variant/exp/back/382-primal.json | 24 +----- .../pokemon/variant/exp/back/383-primal.json | 10 --- .../pokemon/variant/exp/back/384-mega.json | 8 +- .../images/pokemon/variant/exp/back/4052.json | 8 -- .../images/pokemon/variant/exp/back/4077.json | 2 - .../images/pokemon/variant/exp/back/4078.json | 6 -- .../images/pokemon/variant/exp/back/4079.json | 10 +-- .../images/pokemon/variant/exp/back/4199.json | 4 - .../images/pokemon/variant/exp/back/4222.json | 2 - .../images/pokemon/variant/exp/back/4263.json | 8 -- .../images/pokemon/variant/exp/back/4264.json | 10 +-- .../pokemon/variant/exp/back/428-mega.json | 2 - .../pokemon/variant/exp/back/445-mega.json | 18 ----- .../pokemon/variant/exp/back/448-mega.json | 24 +----- .../images/pokemon/variant/exp/back/4562.json | 4 - .../pokemon/variant/exp/back/531-mega.json | 8 +- .../pokemon/variant/exp/back/6-mega-y.json | 6 +- .../images/pokemon/variant/exp/back/6100.json | 8 -- .../images/pokemon/variant/exp/back/6101.json | 9 +-- .../images/pokemon/variant/exp/back/6215.json | 6 -- .../images/pokemon/variant/exp/back/653.json | 2 - .../images/pokemon/variant/exp/back/654.json | 6 -- .../images/pokemon/variant/exp/back/6549.json | 12 +-- .../images/pokemon/variant/exp/back/6570.json | 2 - .../images/pokemon/variant/exp/back/6571.json | 7 +- .../images/pokemon/variant/exp/back/664.json | 4 +- .../images/pokemon/variant/exp/back/665.json | 3 - .../variant/exp/back/666-archipelago.json | 50 ++++-------- .../variant/exp/back/666-continental.json | 20 +---- .../pokemon/variant/exp/back/666-elegant.json | 49 ++++------- .../pokemon/variant/exp/back/666-fancy.json | 54 +++++-------- .../pokemon/variant/exp/back/666-garden.json | 47 ++++------- .../variant/exp/back/666-high-plains.json | 53 ++++-------- .../variant/exp/back/666-icy-snow.json | 46 ++++------- .../pokemon/variant/exp/back/666-jungle.json | 49 ++++------- .../pokemon/variant/exp/back/666-marine.json | 47 ++++------- .../pokemon/variant/exp/back/666-meadow.json | 49 ++++------- .../pokemon/variant/exp/back/666-modern.json | 47 ++++------- .../pokemon/variant/exp/back/666-monsoon.json | 48 ++++------- .../pokemon/variant/exp/back/666-ocean.json | 49 ++++------- .../variant/exp/back/666-poke-ball.json | 55 ++++++------- .../pokemon/variant/exp/back/666-polar.json | 49 ++++------- .../pokemon/variant/exp/back/666-river.json | 54 ++++--------- .../variant/exp/back/666-sandstorm.json | 49 ++++------- .../pokemon/variant/exp/back/666-savanna.json | 49 ++++------- .../pokemon/variant/exp/back/666-sun.json | 51 +++++------- .../pokemon/variant/exp/back/666-tundra.json | 47 ++++------- .../pokemon/variant/exp/back/670-orange.json | 3 - .../pokemon/variant/exp/back/670-red.json | 3 - .../pokemon/variant/exp/back/670-white.json | 4 - .../pokemon/variant/exp/back/670-yellow.json | 3 - .../images/pokemon/variant/exp/back/6705.json | 5 +- .../pokemon/variant/exp/back/671-blue.json | 11 +-- .../pokemon/variant/exp/back/671-orange.json | 11 +-- .../pokemon/variant/exp/back/671-red.json | 11 +-- .../pokemon/variant/exp/back/671-white.json | 11 +-- .../pokemon/variant/exp/back/671-yellow.json | 11 +-- .../images/pokemon/variant/exp/back/6713.json | 2 - .../images/pokemon/variant/exp/back/672.json | 4 +- .../images/pokemon/variant/exp/back/673.json | 4 +- .../images/pokemon/variant/exp/back/677.json | 2 - .../pokemon/variant/exp/back/678-female.json | 6 +- .../images/pokemon/variant/exp/back/678.json | 2 - .../images/pokemon/variant/exp/back/690.json | 2 - .../images/pokemon/variant/exp/back/691.json | 2 - .../images/pokemon/variant/exp/back/696.json | 55 ++++++------- .../images/pokemon/variant/exp/back/697.json | 62 +++++++------- .../images/pokemon/variant/exp/back/700.json | 56 ++++++------- .../images/pokemon/variant/exp/back/702.json | 4 - .../images/pokemon/variant/exp/back/704.json | 2 - .../images/pokemon/variant/exp/back/705.json | 38 +++++---- .../images/pokemon/variant/exp/back/706.json | 2 - .../images/pokemon/variant/exp/back/709.json | 3 - .../images/pokemon/variant/exp/back/710.json | 6 -- .../images/pokemon/variant/exp/back/711.json | 6 -- .../images/pokemon/variant/exp/back/712.json | 7 +- .../images/pokemon/variant/exp/back/713.json | 6 +- .../images/pokemon/variant/exp/back/715.json | 4 - .../pokemon/variant/exp/back/716-active.json | 9 --- .../pokemon/variant/exp/back/716-neutral.json | 8 +- .../images/pokemon/variant/exp/back/717.json | 1 - .../images/pokemon/variant/exp/back/720.json | 3 - .../images/pokemon/variant/exp/back/728.json | 6 -- .../images/pokemon/variant/exp/back/729.json | 6 -- .../images/pokemon/variant/exp/back/730.json | 8 +- .../images/pokemon/variant/exp/back/734.json | 8 +- .../images/pokemon/variant/exp/back/735.json | 3 - .../images/pokemon/variant/exp/back/748.json | 8 +- .../images/pokemon/variant/exp/back/751.json | 4 - .../images/pokemon/variant/exp/back/752.json | 6 -- .../images/pokemon/variant/exp/back/753.json | 10 +-- .../images/pokemon/variant/exp/back/754.json | 1 - .../images/pokemon/variant/exp/back/755.json | 2 - .../images/pokemon/variant/exp/back/756.json | 2 - .../images/pokemon/variant/exp/back/761.json | 7 +- .../images/pokemon/variant/exp/back/762.json | 5 -- .../images/pokemon/variant/exp/back/763.json | 5 -- .../images/pokemon/variant/exp/back/767.json | 2 - .../images/pokemon/variant/exp/back/768.json | 9 +-- .../images/pokemon/variant/exp/back/771.json | 4 - .../images/pokemon/variant/exp/back/772.json | 2 - .../images/pokemon/variant/exp/back/773.json | 6 -- .../images/pokemon/variant/exp/back/777.json | 6 +- .../pokemon/variant/exp/back/778-busted.json | 6 +- .../variant/exp/back/778-disguised.json | 4 +- .../images/pokemon/variant/exp/back/779.json | 9 +-- .../images/pokemon/variant/exp/back/789.json | 9 +-- .../images/pokemon/variant/exp/back/790.json | 10 --- .../images/pokemon/variant/exp/back/792.json | 14 +--- .../images/pokemon/variant/exp/back/793.json | 6 -- .../images/pokemon/variant/exp/back/797.json | 2 - .../images/pokemon/variant/exp/back/798.json | 4 - .../pokemon/variant/exp/back/80-mega.json | 6 -- .../variant/exp/back/800-dawn-wings.json | 7 -- .../pokemon/variant/exp/back/800-ultra.json | 6 +- .../images/pokemon/variant/exp/back/800.json | 6 +- .../images/pokemon/variant/exp/back/802.json | 9 +-- .../images/pokemon/variant/exp/back/803.json | 2 - .../images/pokemon/variant/exp/back/804.json | 2 - .../images/pokemon/variant/exp/back/808.json | 8 +- .../images/pokemon/variant/exp/back/809.json | 9 +-- .../images/pokemon/variant/exp/back/816.json | 6 +- .../images/pokemon/variant/exp/back/817.json | 8 +- .../images/pokemon/variant/exp/back/818.json | 4 - .../images/pokemon/variant/exp/back/821.json | 2 - .../images/pokemon/variant/exp/back/822.json | 8 -- .../images/pokemon/variant/exp/back/823.json | 5 -- .../images/pokemon/variant/exp/back/829.json | 3 - .../images/pokemon/variant/exp/back/830.json | 6 +- .../images/pokemon/variant/exp/back/835.json | 3 - .../images/pokemon/variant/exp/back/836.json | 4 - .../images/pokemon/variant/exp/back/850.json | 6 +- .../images/pokemon/variant/exp/back/851.json | 6 +- .../images/pokemon/variant/exp/back/854.json | 2 - .../images/pokemon/variant/exp/back/855.json | 2 - .../images/pokemon/variant/exp/back/856.json | 2 - .../images/pokemon/variant/exp/back/858.json | 2 - .../images/pokemon/variant/exp/back/859.json | 2 - .../images/pokemon/variant/exp/back/860.json | 4 - .../images/pokemon/variant/exp/back/861.json | 2 - .../images/pokemon/variant/exp/back/862.json | 9 +-- .../images/pokemon/variant/exp/back/863.json | 11 +-- .../images/pokemon/variant/exp/back/864.json | 6 +- .../images/pokemon/variant/exp/back/867.json | 2 - .../images/pokemon/variant/exp/back/872.json | 6 -- .../images/pokemon/variant/exp/back/873.json | 9 +-- .../pokemon/variant/exp/back/876-female.json | 2 - .../images/pokemon/variant/exp/back/876.json | 2 - .../pokemon/variant/exp/back/877-hangry.json | 7 -- .../images/pokemon/variant/exp/back/877.json | 10 --- .../images/pokemon/variant/exp/back/880.json | 3 - .../images/pokemon/variant/exp/back/881.json | 3 - .../images/pokemon/variant/exp/back/882.json | 2 - .../images/pokemon/variant/exp/back/883.json | 4 - .../images/pokemon/variant/exp/back/884.json | 2 - .../images/pokemon/variant/exp/back/885.json | 3 - .../images/pokemon/variant/exp/back/886.json | 6 +- .../images/pokemon/variant/exp/back/887.json | 4 - .../pokemon/variant/exp/back/888-crowned.json | 18 +---- .../images/pokemon/variant/exp/back/888.json | 2 - .../pokemon/variant/exp/back/889-crowned.json | 2 - .../images/pokemon/variant/exp/back/889.json | 2 - .../images/pokemon/variant/exp/back/890.json | 6 -- .../images/pokemon/variant/exp/back/891.json | 6 -- .../variant/exp/back/892-rapid-strike.json | 7 -- .../images/pokemon/variant/exp/back/892.json | 5 -- .../images/pokemon/variant/exp/back/896.json | 12 +-- .../images/pokemon/variant/exp/back/897.json | 7 -- .../pokemon/variant/exp/back/898-ice.json | 21 +---- .../pokemon/variant/exp/back/898-shadow.json | 11 --- .../images/pokemon/variant/exp/back/898.json | 5 -- .../images/pokemon/variant/exp/back/900.json | 20 +---- .../images/pokemon/variant/exp/back/901.json | 15 +--- .../images/pokemon/variant/exp/back/903.json | 4 - .../images/pokemon/variant/exp/back/909.json | 12 +-- .../images/pokemon/variant/exp/back/911.json | 14 +--- .../images/pokemon/variant/exp/back/912.json | 2 - .../images/pokemon/variant/exp/back/913.json | 2 - .../images/pokemon/variant/exp/back/919.json | 13 +-- .../images/pokemon/variant/exp/back/920.json | 12 --- .../images/pokemon/variant/exp/back/932.json | 2 - .../images/pokemon/variant/exp/back/933.json | 5 -- .../images/pokemon/variant/exp/back/934.json | 2 - .../pokemon/variant/exp/back/94-mega.json | 5 -- .../images/pokemon/variant/exp/back/940.json | 4 - .../images/pokemon/variant/exp/back/941.json | 12 +-- .../images/pokemon/variant/exp/back/948.json | 2 - .../images/pokemon/variant/exp/back/949.json | 6 -- .../images/pokemon/variant/exp/back/951.json | 4 - .../images/pokemon/variant/exp/back/952.json | 1 - .../images/pokemon/variant/exp/back/953.json | 2 - .../images/pokemon/variant/exp/back/954.json | 2 - .../images/pokemon/variant/exp/back/957.json | 10 +-- .../images/pokemon/variant/exp/back/958.json | 10 --- .../images/pokemon/variant/exp/back/959.json | 4 - .../images/pokemon/variant/exp/back/962.json | 5 +- .../images/pokemon/variant/exp/back/967.json | 9 +-- .../images/pokemon/variant/exp/back/969.json | 2 - .../images/pokemon/variant/exp/back/970.json | 1 - .../images/pokemon/variant/exp/back/973.json | 22 +---- .../images/pokemon/variant/exp/back/974.json | 2 - .../images/pokemon/variant/exp/back/975.json | 2 - .../variant/exp/back/978-stretchy.json | 2 - .../images/pokemon/variant/exp/back/979.json | 7 +- .../images/pokemon/variant/exp/back/981.json | 6 -- .../variant/exp/back/982-three-segment.json | 3 - .../images/pokemon/variant/exp/back/982.json | 5 -- .../images/pokemon/variant/exp/back/987.json | 3 - .../images/pokemon/variant/exp/back/988.json | 6 -- .../images/pokemon/variant/exp/back/993.json | 4 - .../images/pokemon/variant/exp/back/994.json | 9 +-- .../images/pokemon/variant/exp/back/995.json | 16 +--- .../images/pokemon/variant/exp/back/996.json | 5 -- .../images/pokemon/variant/exp/back/997.json | 6 +- .../images/pokemon/variant/exp/back/998.json | 3 - .../images/pokemon/variant/exp/back/999.json | 11 +-- .../pokemon/variant/exp/back/female/6215.json | 6 -- .../pokemon/variant/exp/female/6215.json | 12 +-- public/images/pokemon/variant/female/111.json | 10 +-- public/images/pokemon/variant/female/112.json | 14 +--- public/images/pokemon/variant/female/118.json | 2 - public/images/pokemon/variant/female/119.json | 4 - public/images/pokemon/variant/female/123.json | 26 +----- public/images/pokemon/variant/female/129.json | 8 +- public/images/pokemon/variant/female/130.json | 2 - public/images/pokemon/variant/female/185.json | 2 - public/images/pokemon/variant/female/19.json | 12 +-- public/images/pokemon/variant/female/190.json | 10 +-- public/images/pokemon/variant/female/20.json | 2 - public/images/pokemon/variant/female/203.json | 4 - public/images/pokemon/variant/female/212.json | 19 +---- public/images/pokemon/variant/female/215.json | 3 - public/images/pokemon/variant/female/217.json | 19 +---- public/images/pokemon/variant/female/229.json | 12 +-- public/images/pokemon/variant/female/232.json | 6 -- public/images/pokemon/variant/female/255.json | 4 - public/images/pokemon/variant/female/256.json | 12 +-- public/images/pokemon/variant/female/257.json | 2 - public/images/pokemon/variant/female/3.json | 6 +- public/images/pokemon/variant/female/307.json | 13 +-- public/images/pokemon/variant/female/308.json | 6 -- public/images/pokemon/variant/female/315.json | 2 - public/images/pokemon/variant/female/369.json | 4 - public/images/pokemon/variant/female/399.json | 12 +-- public/images/pokemon/variant/female/400.json | 6 -- public/images/pokemon/variant/female/401.json | 3 - public/images/pokemon/variant/female/407.json | 2 - public/images/pokemon/variant/female/41.json | 10 +-- public/images/pokemon/variant/female/418.json | 7 -- public/images/pokemon/variant/female/419.json | 2 - public/images/pokemon/variant/female/42.json | 8 -- public/images/pokemon/variant/female/424.json | 10 +-- public/images/pokemon/variant/female/44.json | 2 - public/images/pokemon/variant/female/443.json | 12 --- public/images/pokemon/variant/female/444.json | 15 +--- public/images/pokemon/variant/female/445.json | 15 ---- public/images/pokemon/variant/female/45.json | 2 - public/images/pokemon/variant/female/456.json | 4 - public/images/pokemon/variant/female/457.json | 8 +- public/images/pokemon/variant/female/461.json | 3 - public/images/pokemon/variant/female/464.json | 7 -- public/images/pokemon/variant/female/592.json | 6 -- public/images/pokemon/variant/female/593.json | 14 +--- .../images/pokemon/variant/female/6215.json | 10 +-- public/images/pokemon/variant/female/84.json | 7 -- public/images/pokemon/variant/female/85.json | 11 --- 1859 files changed, 2035 insertions(+), 11840 deletions(-) diff --git a/public/images/pokemon/variant/1.json b/public/images/pokemon/variant/1.json index 4c53b4ca522..e5ac0df229e 100644 --- a/public/images/pokemon/variant/1.json +++ b/public/images/pokemon/variant/1.json @@ -2,7 +2,6 @@ "1": { "526329": "4a1117", "a5d642": "ff745e", - "101010": "101010", "194a4a": "57003d", "73ad31": "b34952", "3a9494": "9c195c", @@ -10,16 +9,13 @@ "317373": "6e034e", "63d6b5": "de3570", "bdff73": "ffc5a3", - "cecece": "cecece", "ef213a": "712f8f", "ad0031": "3f1375", - "ffffff": "ffffff", "ff6b63": "a266b0" }, "2": { "526329": "022e59", "a5d642": "80c3d9", - "101010": "101010", "194a4a": "782c00", "73ad31": "446b94", "3a9494": "d46d00", @@ -27,10 +23,8 @@ "317373": "5c410d", "63d6b5": "faac05", "bdff73": "befaf1", - "cecece": "cecece", "ef213a": "1d540c", "ad0031": "3c8227", - "ffffff": "ffffff", "ff6b63": "86bf75" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/100.json b/public/images/pokemon/variant/100.json index a37f7e045be..32f619876dd 100644 --- a/public/images/pokemon/variant/100.json +++ b/public/images/pokemon/variant/100.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "841010": "983d00", "d63142": "c76d14", "ff5221": "f0b64a", @@ -12,7 +11,6 @@ "b5adbd": "d6b0a5" }, "2": { - "101010": "101010", "841010": "27145d", "d63142": "482683", "ff5221": "7240a2", diff --git a/public/images/pokemon/variant/1000.json b/public/images/pokemon/variant/1000.json index e7451cd51d0..1e8bb087c88 100644 --- a/public/images/pokemon/variant/1000.json +++ b/public/images/pokemon/variant/1000.json @@ -3,7 +3,6 @@ "917228": "a33612", "ffdba6": "ffb667", "ffd52d": "ee883f", - "0f0f0f": "0f0f0f", "f7a62d": "a64700", "d9880f": "9b3e00", "484415": "6d1906", @@ -20,7 +19,6 @@ "917228": "622f43", "ffdba6": "f3e3e4", "ffd52d": "e1ced1", - "0f0f0f": "0f0f0f", "f7a62d": "96747e", "d9880f": "7a4e5d", "484415": "4b1a32", @@ -37,7 +35,6 @@ "917228": "3d717b", "ffdba6": "ffffff", "ffd52d": "e5fffc", - "0f0f0f": "0f0f0f", "f7a62d": "89d1d6", "d9880f": "5a9aa3", "484415": "214048", diff --git a/public/images/pokemon/variant/1001.json b/public/images/pokemon/variant/1001.json index 84ef616b389..b3fd1825cd6 100644 --- a/public/images/pokemon/variant/1001.json +++ b/public/images/pokemon/variant/1001.json @@ -3,7 +3,6 @@ "505551": "754e3b", "b8bebd": "ebe6c0", "313430": "4f2711", - "010101": "010101", "7e615a": "1f1e1c", "48492e": "0a0907", "a28b76": "383734", @@ -13,16 +12,12 @@ "524a36": "754607", "b99c60": "e2a845", "7b7253": "b87416", - "f97c20": "a5af8b", - "fdfdfd": "fdfdfd", - "212421": "212421", - "212021": "212021" + "f97c20": "a5af8b" }, "2": { "505551": "322733", "b8bebd": "dbcce8", "313430": "1b101c", - "010101": "010101", "7e615a": "e6aec8", "48492e": "9c4b6f", "a28b76": "fce6f0", @@ -32,9 +27,6 @@ "524a36": "420f0f", "b99c60": "bd405d", "7b7253": "5e1b1b", - "f97c20": "f536f5", - "fdfdfd": "fdfdfd", - "212421": "212421", - "212021": "212021" + "f97c20": "f536f5" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/1003.json b/public/images/pokemon/variant/1003.json index a0b7fb54c9e..28805ce18a9 100644 --- a/public/images/pokemon/variant/1003.json +++ b/public/images/pokemon/variant/1003.json @@ -2,9 +2,7 @@ "1": { "283331": "96562e", "a6b4a7": "e7cb7e", - "4a4a4a": "4a4a4a", "486863": "be8550", - "0f0f0f": "0f0f0f", "73958b": "daa666", "5e4622": "352831", "5c3127": "861d0f", @@ -20,9 +18,7 @@ "2": { "283331": "472d7c", "a6b4a7": "cfa0f3", - "4a4a4a": "4a4a4a", "486863": "6c4aac", - "0f0f0f": "0f0f0f", "73958b": "8d6acc", "5e4622": "434377", "5c3127": "313246", diff --git a/public/images/pokemon/variant/1004.json b/public/images/pokemon/variant/1004.json index f8370292ad5..dc6c13f5f47 100644 --- a/public/images/pokemon/variant/1004.json +++ b/public/images/pokemon/variant/1004.json @@ -2,7 +2,6 @@ "1": { "a23724": "b06f00", "f4342f": "f2b200", - "0f0f0f": "0f0f0f", "f35e38": "ffc81b", "f9824f": "ffe13a", "b15236": "dca300", @@ -13,13 +12,11 @@ "1c4021": "3e3e84", "5b985a": "5c71c1", "83b884": "7a9ae0", - "3c3f3a": "27276a", - "f8f8f0": "f8f8f0" + "3c3f3a": "27276a" }, "2": { "a23724": "76074d", "f4342f": "a525d3", - "0f0f0f": "0f0f0f", "f35e38": "3449f6", "f9824f": "49c9f6", "b15236": "6233a3", @@ -30,7 +27,6 @@ "1c4021": "655a59", "5b985a": "b09f97", "83b884": "d7cbb5", - "3c3f3a": "4b4444", - "f8f8f0": "f8f8f0" + "3c3f3a": "4b4444" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/1006.json b/public/images/pokemon/variant/1006.json index 420456dcd93..e6a76a533fd 100644 --- a/public/images/pokemon/variant/1006.json +++ b/public/images/pokemon/variant/1006.json @@ -2,10 +2,8 @@ "2": { "2d384a": "2a224e", "595f6a": "181440", - "f4f8f7": "f4f8f7", "4b8383": "3e2d63", "6db0b4": "585995", - "0f0f0f": "0f0f0f", "264d24": "483d5c", "5ab46a": "c2c8dc", "41835a": "79728e", diff --git a/public/images/pokemon/variant/1008-ultimate-mode.json b/public/images/pokemon/variant/1008-ultimate-mode.json index 3c1fb26f6ff..935e8e6a220 100644 --- a/public/images/pokemon/variant/1008-ultimate-mode.json +++ b/public/images/pokemon/variant/1008-ultimate-mode.json @@ -1,21 +1,15 @@ { "0": { "4ba5cf": "8955b5", - "fefefe": "fefefe", "d7c2c1": "d7c3f7", "c883d1": "7fd8cf", "1a1c42": "393a3e", "5c4370": "3e446d", "fcdf14": "427eff", - "878594": "878594", - "c1bddf": "c1bddf", - "e6e3f2": "e6e3f2", "643fa3": "c8c8c8", - "0e0e12": "0e0e12", "4d3672": "858585", "392855": "616161", - "2e3176": "868686", - "ffffff": "ffffff" + "2e3176": "868686" }, "1": { "4ba5cf": "31808e", @@ -27,13 +21,10 @@ "fcdf14": "2cc151", "878594": "89a5ff", "c1bddf": "b7d8ff", - "e6e3f2": "e6e3f2", "643fa3": "626877", - "0e0e12": "0e0e12", "4d3672": "444b66", "392855": "393e51", - "2e3176": "3aff75", - "ffffff": "ffffff" + "2e3176": "3aff75" }, "2": { "4ba5cf": "8e3c84", @@ -41,16 +32,13 @@ "d7c2c1": "ff93d4", "c883d1": "ffc26d", "1a1c42": "29253f", - "5c4370": "5c4370", "fcdf14": "cc5767", "878594": "ad9e9d", "c1bddf": "e0e0e0", "e6e3f2": "eae8f4", "643fa3": "3b4986", - "0e0e12": "0e0e12", "4d3672": "2a3768", "392855": "192142", - "2e3176": "cf3e57", - "ffffff": "ffffff" + "2e3176": "cf3e57" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/101.json b/public/images/pokemon/variant/101.json index 335af910d8a..46735c1d98a 100644 --- a/public/images/pokemon/variant/101.json +++ b/public/images/pokemon/variant/101.json @@ -1,11 +1,8 @@ { "1": { - "5a5252": "5a5252", "cecede": "d6b0a5", "efefef": "f7e4da", - "101010": "101010", "ffffff": "fffdfb", - "a59c9c": "a59c9c", "d68494": "d59679", "c52942": "c76d14", "f7a58c": "ffd86f", @@ -14,12 +11,9 @@ "841010": "983d00" }, "2": { - "5a5252": "5a5252", "cecede": "94b1c9", "efefef": "cde3ef", - "101010": "101010", "ffffff": "f3fdff", - "a59c9c": "a59c9c", "d68494": "887db5", "c52942": "482683", "f7a58c": "c27bec", diff --git a/public/images/pokemon/variant/1010.json b/public/images/pokemon/variant/1010.json index f216f9f184a..75461e5d114 100644 --- a/public/images/pokemon/variant/1010.json +++ b/public/images/pokemon/variant/1010.json @@ -6,13 +6,11 @@ "c51333": "4a6329", "ff5f7c": "638c10", "ffb2c0": "9cce52", - "0b0b0b": "0b0b0b", "aedf87": "ef8ca5", "343631": "313436", "61635b": "5b6263", "8a8d85": "858d8c", - "c0c1be": "bec1c0", - "1d1d1c": "1d1d1c" + "c0c1be": "bec1c0" }, "2": { "1e5238": "834b04", @@ -21,12 +19,10 @@ "c51333": "9131a3", "ff5f7c": "e565fd", "ffb2c0": "eeeeee", - "0b0b0b": "0b0b0b", "aedf87": "e3d520", "343631": "54544c", "61635b": "a1a19b", "8a8d85": "cacac6", - "c0c1be": "eeeeee", - "1d1d1c": "1d1d1c" + "c0c1be": "eeeeee" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/1018.json b/public/images/pokemon/variant/1018.json index ed50c6015c8..47ac432cdb4 100644 --- a/public/images/pokemon/variant/1018.json +++ b/public/images/pokemon/variant/1018.json @@ -1,7 +1,6 @@ { "1": { "691701": "871e14", - "000000": "000000", "aa3810": "ed7746", "7d5c02": "b53d07", "272b87": "1d542f", @@ -19,7 +18,6 @@ }, "2": { "691701": "062449", - "000000": "000000", "aa3810": "2077a6", "7d5c02": "126fa3", "272b87": "fede7d", diff --git a/public/images/pokemon/variant/1022.json b/public/images/pokemon/variant/1022.json index e4eb3ac16b2..249ba1e3afc 100644 --- a/public/images/pokemon/variant/1022.json +++ b/public/images/pokemon/variant/1022.json @@ -3,11 +3,9 @@ "382929": "5e1111", "604640": "9c120b", "7a5a4b": "ce2e25", - "050505": "050505", "adadad": "9a9696", "cfcfcf": "c1baba", "b87b21": "0a8d7f", - "eeeeee": "eeeeee", "8a8e8a": "817c7c", "dfa939": "22c7b6", "5a5a56": "56534c", @@ -19,11 +17,9 @@ "382929": "744c08", "604640": "bba010", "7a5a4b": "e3d520", - "050505": "050505", "adadad": "a1a19b", "cfcfcf": "cacac6", "b87b21": "9131a3", - "eeeeee": "eeeeee", "8a8e8a": "74746b", "dfa939": "e565fd", "5a5a56": "54544c", diff --git a/public/images/pokemon/variant/1023.json b/public/images/pokemon/variant/1023.json index 19d232e9566..8250aea2677 100644 --- a/public/images/pokemon/variant/1023.json +++ b/public/images/pokemon/variant/1023.json @@ -2,8 +2,6 @@ "1": { "00a6ad": "92c72a", "62f7f7": "bcfb3f", - "f9ffff": "f9ffff", - "050505": "050505", "f0c720": "c5f6e6", "89570c": "52766a", "b4961f": "88b8a8", @@ -11,17 +9,13 @@ "163d43": "133453", "45cbc8": "5ca6ea", "389cad": "3673aa", - "242322": "242322", "858ca7": "7b7b7b", "c9cfda": "bdbdbd", - "454a54": "4f4d4d", - "7092be": "7092be" + "454a54": "4f4d4d" }, "2": { "00a6ad": "852098", "62f7f7": "d046e8", - "f9ffff": "f9ffff", - "050505": "050505", "f0c720": "b6d4d2", "89570c": "627675", "b4961f": "9bb4b3", @@ -29,10 +23,8 @@ "163d43": "5c3c06", "45cbc8": "d9cd25", "389cad": "c1991d", - "242322": "242322", "858ca7": "a9a7a2", "c9cfda": "d5d5d1", - "454a54": "72716d", - "7092be": "7092be" + "454a54": "72716d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/111.json b/public/images/pokemon/variant/111.json index 163e82ae742..f21cec533c5 100644 --- a/public/images/pokemon/variant/111.json +++ b/public/images/pokemon/variant/111.json @@ -1,22 +1,16 @@ { "1": { "5a5a7b": "241e2f", - "101010": "101010", "bdbdce": "6a547a", "e6e6ef": "9781ab", "8484ad": "402f51", - "3a3a52": "261e2d", - "ffffff": "ffffff", - "ad3a29": "ad3a29" + "3a3a52": "261e2d" }, "2": { "5a5a7b": "ab4355", - "101010": "101010", "bdbdce": "e18db3", "e6e6ef": "f7b4d1", "8484ad": "d76688", - "3a3a52": "6d2935", - "ffffff": "ffffff", - "ad3a29": "ad3a29" + "3a3a52": "6d2935" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/112.json b/public/images/pokemon/variant/112.json index 621308c3297..dceef9b6ed9 100644 --- a/public/images/pokemon/variant/112.json +++ b/public/images/pokemon/variant/112.json @@ -1,32 +1,22 @@ { "1": { "8c8c94": "523c5c", - "101010": "101010", "c5c5bd": "6a547a", "52525a": "3c2945", "e6e6de": "9781ab", "735a31": "6b6373", "ffefc5": "cecede", "b5a573": "948cad", - "ffffff": "ffffff", - "a53110": "a53110", - "e6523a": "e6523a", - "e6d6ad": "cecede", - "732110": "732110" + "e6d6ad": "cecede" }, "2": { "8c8c94": "ab3f5c", - "101010": "101010", "c5c5bd": "cb568a", "52525a": "642224", "e6e6de": "ef86b5", "735a31": "6d586d", "ffefc5": "dacad3", "b5a573": "be9bb6", - "ffffff": "ffffff", - "a53110": "a53110", - "e6523a": "e6523a", - "e6d6ad": "dacad3", - "732110": "732110" + "e6d6ad": "dacad3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/114.json b/public/images/pokemon/variant/114.json index fa07a96b55d..d57d431a799 100644 --- a/public/images/pokemon/variant/114.json +++ b/public/images/pokemon/variant/114.json @@ -4,9 +4,6 @@ "427b94": "654294", "5aa5ce": "755ace", "94d6f7": "a479ff", - "101010": "101010", - "b5b5b5": "b5b5b5", - "ffffff": "ffffff", "732929": "2b7329", "ad2942": "2dad29", "de4a6b": "7bde4a", @@ -17,9 +14,6 @@ "427b94": "ad875a", "5aa5ce": "ebc582", "94d6f7": "ffedb6", - "101010": "101010", - "b5b5b5": "b5b5b5", - "ffffff": "ffffff", "732929": "332119", "ad2942": "4d2c1d", "de4a6b": "7a4932", diff --git a/public/images/pokemon/variant/116.json b/public/images/pokemon/variant/116.json index 978af835a5c..90904480c4d 100644 --- a/public/images/pokemon/variant/116.json +++ b/public/images/pokemon/variant/116.json @@ -4,10 +4,7 @@ "bddeff": "7ed683", "a5c5ef": "5bab65", "6b94b5": "3d7b4f", - "101010": "101010", - "ffffff": "ffffff", "ff7373": "34b9af", - "d6d6d6": "d6d6d6", "dec54a": "91bf49", "9c844a": "548133", "ffffad": "fff370" @@ -17,10 +14,7 @@ "bddeff": "fffaa1", "a5c5ef": "ffe675", "6b94b5": "edb766", - "101010": "101010", - "ffffff": "ffffff", "ff7373": "9973c7", - "d6d6d6": "d6d6d6", "dec54a": "4e878a", "9c844a": "314e5e", "ffffad": "7bc9bb" diff --git a/public/images/pokemon/variant/117.json b/public/images/pokemon/variant/117.json index 81b047d6142..6dab6d19277 100644 --- a/public/images/pokemon/variant/117.json +++ b/public/images/pokemon/variant/117.json @@ -4,12 +4,10 @@ "21425a": "122647", "a5cee6": "45b38f", "84adce": "2e8b7b", - "101010": "101010", "4a6b84": "143c4f", "7b6321": "3f8a49", "dec552": "87c563", "ffffad": "b5e37f", - "ffffff": "ffffff", "9c9c9c": "243b61" }, "2": { @@ -17,12 +15,10 @@ "21425a": "702525", "a5cee6": "ffd166", "84adce": "ffab66", - "101010": "101010", "4a6b84": "c74c4c", "7b6321": "4e878a", "dec552": "7bc9bb", "ffffad": "b3f2d8", - "ffffff": "ffffff", "9c9c9c": "ff9a47" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/118.json b/public/images/pokemon/variant/118.json index 19f98fd8911..3c64ebd5879 100644 --- a/public/images/pokemon/variant/118.json +++ b/public/images/pokemon/variant/118.json @@ -2,9 +2,7 @@ "0": { "52525a": "734733", "ffffff": "fff7ee", - "101010": "101010", "8c8c94": "966f58", - "ceb57b": "ceb57b", "efefef": "e7d7c9", "d6d6de": "cbb7aa", "ffc57b": "ffda73", @@ -19,7 +17,6 @@ "1": { "52525a": "492d5c", "ffffff": "e7d1ea", - "101010": "101010", "8c8c94": "6c5277", "ceb57b": "7e3eb1", "efefef": "b9a0bf", @@ -36,7 +33,6 @@ "2": { "52525a": "2b4a54", "ffffff": "d5e6e4", - "101010": "101010", "8c8c94": "526d71", "ceb57b": "45895b", "efefef": "aecac8", diff --git a/public/images/pokemon/variant/119.json b/public/images/pokemon/variant/119.json index 9c211993e1f..5201cd2ce9c 100644 --- a/public/images/pokemon/variant/119.json +++ b/public/images/pokemon/variant/119.json @@ -6,7 +6,6 @@ "5a5a63": "734733", "52525a": "522b23", "cec5c5": "e1caba", - "101010": "101010", "943119": "8c5003", "e67342": "f5c767", "f79463": "ffe499", @@ -23,7 +22,6 @@ "5a5a63": "6c5277", "52525a": "39195d", "cec5c5": "ac90b2", - "101010": "101010", "943119": "582488", "e67342": "9e5fcb", "f79463": "ba82d9", @@ -40,7 +38,6 @@ "5a5a63": "526d71", "52525a": "2b4a54", "cec5c5": "9ab8b8", - "101010": "101010", "943119": "0e3c1e", "e67342": "5fad67", "f79463": "92c494", diff --git a/public/images/pokemon/variant/120.json b/public/images/pokemon/variant/120.json index f9970a1f814..1de1061e5e1 100644 --- a/public/images/pokemon/variant/120.json +++ b/public/images/pokemon/variant/120.json @@ -2,7 +2,6 @@ "1": { "633131": "07293b", "9c6b3a": "1b7272", - "000000": "000000", "deb563": "4bd09b", "7b523a": "0f4c58", "d69c52": "2d9683", @@ -19,7 +18,6 @@ "2": { "633131": "1d5198", "9c6b3a": "3eb7e5", - "000000": "000000", "deb563": "9cffff", "7b523a": "2c81bc", "d69c52": "74e7f7", diff --git a/public/images/pokemon/variant/121.json b/public/images/pokemon/variant/121.json index 82840e49783..8e59d32fc21 100644 --- a/public/images/pokemon/variant/121.json +++ b/public/images/pokemon/variant/121.json @@ -2,7 +2,6 @@ "1": { "5a529c": "8b4a52", "8c73bd": "de6262", - "000000": "000000", "313a73": "631c26", "d6adef": "ffc5b4", "b58cd6": "ee9494", @@ -19,7 +18,6 @@ "2": { "5a529c": "9eb4ff", "8c73bd": "c5d5ff", - "000000": "000000", "313a73": "597cdb", "d6adef": "ffffff", "b58cd6": "d6e8ff", diff --git a/public/images/pokemon/variant/123.json b/public/images/pokemon/variant/123.json index 53f7ef977f7..c3f41aa1ede 100644 --- a/public/images/pokemon/variant/123.json +++ b/public/images/pokemon/variant/123.json @@ -2,43 +2,23 @@ "0": { "425a21": "632929", "bde673": "f76b6b", - "101010": "101010", "9c8c31": "9494a5", "fff7d6": "ffffff", "8cce73": "d63a3a", "e6d6ad": "b5b5ce", - "5a9c4a": "a52929", - "ffffff": "ffffff", - "dedede": "dedede", - "bdbdbd": "bdbdbd", - "737373": "737373" + "5a9c4a": "a52929" }, "1": { "425a21": "484e75", "bde673": "7c9ac5", - "101010": "101010", - "9c8c31": "9c8c31", - "fff7d6": "fff7d6", "8cce73": "92b0db", - "e6d6ad": "e6d6ad", - "5a9c4a": "7b94d6", - "ffffff": "ffffff", - "dedede": "dedede", - "bdbdbd": "bdbdbd", - "737373": "737373" + "5a9c4a": "7b94d6" }, "2": { "425a21": "8f3907", "bde673": "f8f581", - "101010": "101010", - "9c8c31": "9c8c31", - "fff7d6": "fff7d6", "8cce73": "f0c947", - "e6d6ad": "e6d6ad", "5a9c4a": "e6a027", - "ffffff": "ffffff", - "dedede": "f0c947", - "bdbdbd": "bdbdbd", - "737373": "737373" + "dedede": "f0c947" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/125.json b/public/images/pokemon/variant/125.json index 4b265d02a60..4948e455c46 100644 --- a/public/images/pokemon/variant/125.json +++ b/public/images/pokemon/variant/125.json @@ -3,13 +3,11 @@ "c5a510": "b34d2b", "5a4a08": "752c0b", "ffe63a": "ff8b3a", - "101010": "101010", "fff7b5": "ffd4b5", "e6c521": "e66a21", "292921": "211d29", "3a4252": "3f3a52", "6b6b63": "57526e", - "ffffff": "ffffff", "c5c5d6": "c5ccd6", "b53a6b": "b53a59", "e66394": "e66380" @@ -18,13 +16,11 @@ "c5a510": "2dbd73", "5a4a08": "235c3c", "ffe63a": "59f7d0", - "101010": "101010", "fff7b5": "c8ffea", "e6c521": "43e6b7", "292921": "282a24", "3a4252": "424554", "6b6b63": "6a6982", - "ffffff": "ffffff", "c5c5d6": "cfd2dc", "b53a6b": "b85195", "e66394": "ed89c2" diff --git a/public/images/pokemon/variant/126.json b/public/images/pokemon/variant/126.json index 8c90e069d6d..a0bbca87284 100644 --- a/public/images/pokemon/variant/126.json +++ b/public/images/pokemon/variant/126.json @@ -1,16 +1,12 @@ { "2": { "7b5231": "699296", - "000000": "000000", "ffef4a": "eaffff", "c57b10": "9ec9cf", "e6bd31": "c6edf2", "6b2121": "303d58", "ce1042": "4065b0", "ff4a31": "5398cf", - "636363": "636363", - "ffffff": "ffffff", - "c5c5c5": "c5c5c5", "ff8c63": "b2a0b1", "ffcebd": "cabac8", "fff7ce": "ffffff" diff --git a/public/images/pokemon/variant/127-mega.json b/public/images/pokemon/variant/127-mega.json index a5d06441236..eea226c236f 100644 --- a/public/images/pokemon/variant/127-mega.json +++ b/public/images/pokemon/variant/127-mega.json @@ -3,32 +3,24 @@ "837362": "7e5649", "c0b5ab": "b1846f", "fdf7e6": "eccb90", - "101010": "101010", "4a4139": "441a0f", "e1d7cc": "d29f88", - "f0831d": "f0831d", "836a52": "3b554d", "5a4131": "172a22", "c5ac8b": "72988e", "a48b6a": "54796f", - "e6d5b4": "92bab1", - "ffde62": "ffde62", - "f8f8f8": "f8f8f8" + "e6d5b4": "92bab1" }, "2": { "837362": "868686", "c0b5ab": "b7b7b7", "fdf7e6": "ffffff", - "101010": "101010", "4a4139": "484848", "e1d7cc": "d5d5d5", - "f0831d": "f0831d", "836a52": "8c2c40", "5a4131": "5c0026", "c5ac8b": "d56a70", "a48b6a": "b44954", - "e6d5b4": "fa958c", - "ffde62": "ffde62", - "f8f8f8": "f8f8f8" + "e6d5b4": "fa958c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/127.json b/public/images/pokemon/variant/127.json index d0c615686f6..dd09ba44692 100644 --- a/public/images/pokemon/variant/127.json +++ b/public/images/pokemon/variant/127.json @@ -4,27 +4,23 @@ "b5a594": "b1846f", "efe6ce": "eccb90", "4a423a": "441a0f", - "000000": "000000", "d6c5b5": "d29f88", "846b52": "3b554d", "5a4231": "172a22", "c5ad8c": "72988e", "e6d6b5": "92bab1", - "a58c6b": "54796f", - "ffffff": "ffffff" + "a58c6b": "54796f" }, "2": { "847363": "868686", "b5a594": "b7b7b7", "efe6ce": "ffffff", "4a423a": "484848", - "000000": "000000", "d6c5b5": "d5d5d5", "846b52": "8c2c40", "5a4231": "5c0026", "c5ad8c": "d56a70", "e6d6b5": "fa958c", - "a58c6b": "b44954", - "ffffff": "ffffff" + "a58c6b": "b44954" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/129.json b/public/images/pokemon/variant/129.json index ad9817f4aa7..8274a684944 100644 --- a/public/images/pokemon/variant/129.json +++ b/public/images/pokemon/variant/129.json @@ -7,7 +7,6 @@ "f76319": "ac9bbc", "840042": "312b45", "c5ad73": "d0784b", - "000000": "000000", "525263": "896e5d", "bd4242": "6f6380", "ffffff": "fffcf3", @@ -24,13 +23,11 @@ "f76319": "f25090", "840042": "6c0261", "c5ad73": "bcaf98", - "000000": "000000", "525263": "74619a", "bd4242": "cd2b78", "ffffff": "f9efff", "8c8ca5": "af97ce", "ceced6": "d1bae7", - "ff9c63": "ff9dbb", - "ffe6c5": "ffe6c5" + "ff9c63": "ff9dbb" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/130-mega.json b/public/images/pokemon/variant/130-mega.json index e551e93baec..82fd8fd6b87 100644 --- a/public/images/pokemon/variant/130-mega.json +++ b/public/images/pokemon/variant/130-mega.json @@ -3,16 +3,13 @@ "132d5b": "611d07", "2192e4": "eea747", "1b68a7": "c67429", - "101010": "101010", "cdb47b": "bd9b8e", "144f7e": "923d13", - "5a4120": "5a4120", "3c3f47": "c32625", "67686b": "dd493b", "980e31": "8691d5", "e43343": "c9d4ff", "f6e6ac": "fff3ec", - "f8f8f8": "f8f8f8", "383b42": "682a23", "d5def6": "f37754" }, @@ -20,7 +17,6 @@ "132d5b": "200d46", "2192e4": "7b43a1", "1b68a7": "582c81", - "101010": "101010", "cdb47b": "d7aec0", "144f7e": "411f70", "5a4120": "855a71", @@ -29,7 +25,6 @@ "980e31": "a62869", "e43343": "e15693", "f6e6ac": "ffedf4", - "f8f8f8": "f8f8f8", "383b42": "202b47", "d5def6": "ffdb85" } diff --git a/public/images/pokemon/variant/130.json b/public/images/pokemon/variant/130.json index fd6a18134d0..6ec3446c6a6 100644 --- a/public/images/pokemon/variant/130.json +++ b/public/images/pokemon/variant/130.json @@ -6,12 +6,10 @@ "d6def7": "d2bdb4", "196394": "a85104", "194273": "873503", - "191919": "191919", "7bd6ef": "fed076", "42b5ef": "f2aa45", "f7e6ad": "fff3ec", "ceb57b": "bd9b8e", - "5a4221": "5a4221", "bd3163": "6274e1", "6b1921": "3b42b5", "ef6342": "95abff" @@ -23,7 +21,6 @@ "d6def7": "f3c3de", "196394": "431a77", "194273": "1f0a47", - "191919": "191919", "7bd6ef": "9e5cc8", "42b5ef": "7f43b3", "f7e6ad": "e8b4d4", diff --git a/public/images/pokemon/variant/131-gigantamax.json b/public/images/pokemon/variant/131-gigantamax.json index 3cb6eb5dc1b..323c758a5e6 100644 --- a/public/images/pokemon/variant/131-gigantamax.json +++ b/public/images/pokemon/variant/131-gigantamax.json @@ -1,12 +1,10 @@ { "1": { - "101010": "101010", "41a4e6": "85cfef", "184152": "133363", "73c5f6": "ffc0e7", "397ba4": "3595c4", "51fffb": "ff8de5", - "fffad6": "fffad6", "8ba494": "a7b2ab", "dec583": "dac99e", "52526a": "3c1838", @@ -17,18 +15,14 @@ "f6deac": "f1e9d9" }, "2": { - "101010": "101010", "41a4e6": "49b18c", - "184152": "184152", "73c5f6": "8bd3b6", "397ba4": "3a8770", "51fffb": "0085b2", - "fffad6": "fffad6", "8ba494": "8ca594", "dec583": "baafaa", "52526a": "282548", "a49494": "666b8b", - "fefefe": "fefefe", "d5cdc5": "969dbc", "807573": "454565", "f6deac": "e8e3e0" diff --git a/public/images/pokemon/variant/131.json b/public/images/pokemon/variant/131.json index 603bff575b2..7fed0f8336b 100644 --- a/public/images/pokemon/variant/131.json +++ b/public/images/pokemon/variant/131.json @@ -1,7 +1,6 @@ { "1": { "194252": "133363", - "000000": "000000", "42a5e6": "85cfef", "3a7ba5": "4b9bc3", "73c5f7": "c4f6ff", @@ -17,15 +16,11 @@ }, "2": { "194252": "06383e", - "000000": "000000", "42a5e6": "49b18c", "3a7ba5": "3a8770", "73c5f7": "8bd3b6", - "f7efe6": "f7efe6", "6b5219": "18418d", "dec584": "baafaa", - "8ca594": "8ca594", - "5a4a42": "5a4a42", "52526b": "383851", "d6cec5": "969dbc", "a59494": "666b8b", diff --git a/public/images/pokemon/variant/132.json b/public/images/pokemon/variant/132.json index bb2e7bf9ef2..06d421c2fc5 100644 --- a/public/images/pokemon/variant/132.json +++ b/public/images/pokemon/variant/132.json @@ -1,7 +1,6 @@ { "1": { "5a1994": "2a6d20", - "000000": "000000", "9c5ab5": "5aa03d", "ffceff": "ffffc2", "c57be6": "9dce55", @@ -10,7 +9,6 @@ }, "2": { "5a1994": "0e0c1c", - "000000": "000000", "9c5ab5": "131432", "ffceff": "83bdff", "c57be6": "2b3154", diff --git a/public/images/pokemon/variant/133-partner.json b/public/images/pokemon/variant/133-partner.json index 1939d16ec22..a69dce56708 100644 --- a/public/images/pokemon/variant/133-partner.json +++ b/public/images/pokemon/variant/133-partner.json @@ -3,22 +3,18 @@ "a5634a": "5982b7", "734a4a": "334b7d", "d69c4a": "90c1f1", - "000000": "000000", "523121": "13235c", "e6c594": "9db5d8", "bd9c7b": "5f6f94", - "ffffff": "ffffff", "ffe6ad": "d7ebff" }, "2": { "a5634a": "915ea3", "734a4a": "5e3372", "d69c4a": "bf88cb", - "000000": "000000", "523121": "461144", "e6c594": "d7b8ba", "bd9c7b": "a07c83", - "ffffff": "ffffff", "ffe6ad": "f3e6e3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/133.json b/public/images/pokemon/variant/133.json index 1939d16ec22..a69dce56708 100644 --- a/public/images/pokemon/variant/133.json +++ b/public/images/pokemon/variant/133.json @@ -3,22 +3,18 @@ "a5634a": "5982b7", "734a4a": "334b7d", "d69c4a": "90c1f1", - "000000": "000000", "523121": "13235c", "e6c594": "9db5d8", "bd9c7b": "5f6f94", - "ffffff": "ffffff", "ffe6ad": "d7ebff" }, "2": { "a5634a": "915ea3", "734a4a": "5e3372", "d69c4a": "bf88cb", - "000000": "000000", "523121": "461144", "e6c594": "d7b8ba", "bd9c7b": "a07c83", - "ffffff": "ffffff", "ffe6ad": "f3e6e3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/134.json b/public/images/pokemon/variant/134.json index f801da9a8e0..c3e06b60196 100644 --- a/public/images/pokemon/variant/134.json +++ b/public/images/pokemon/variant/134.json @@ -4,7 +4,6 @@ "107394": "7054e7", "bdad5a": "a26b30", "6b6321": "663a18", - "101010": "101010", "8c8c8c": "754949", "ffffff": "ffe6db", "ffe6a5": "f4cb60", @@ -12,16 +11,13 @@ "84deff": "c497e5", "5ac5e6": "a271e1", "429cbd": "764abf", - "521073": "18359b", - "7b0829": "7b0829", - "d65273": "d65273" + "521073": "18359b" }, "2": { "104a63": "5e1120", "107394": "b75846", "bdad5a": "7d2f67", "6b6321": "4a1642", - "101010": "101010", "8c8c8c": "655081", "ffffff": "fee1fa", "ffe6a5": "a65687", @@ -29,8 +25,6 @@ "84deff": "e1c66e", "5ac5e6": "d29d48", "429cbd": "a66829", - "521073": "13517b", - "7b0829": "7b0829", - "d65273": "d65273" + "521073": "13517b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/135.json b/public/images/pokemon/variant/135.json index 9203e23b72e..81198118b43 100644 --- a/public/images/pokemon/variant/135.json +++ b/public/images/pokemon/variant/135.json @@ -1,6 +1,5 @@ { "0": { - "000000": "000000", "5a4a10": "7b3e14", "cead4a": "e4a254", "ad8c3a": "975720", @@ -13,7 +12,6 @@ "c5c5c5": "aacbc7" }, "1": { - "000000": "000000", "5a4a10": "202448", "cead4a": "5e5a84", "ad8c3a": "35346d", @@ -26,7 +24,6 @@ "c5c5c5": "8e99b5" }, "2": { - "000000": "000000", "5a4a10": "2c3182", "cead4a": "47b4e9", "ad8c3a": "4351d7", diff --git a/public/images/pokemon/variant/136.json b/public/images/pokemon/variant/136.json index d3ce6e156f5..b3dd572687c 100644 --- a/public/images/pokemon/variant/136.json +++ b/public/images/pokemon/variant/136.json @@ -3,39 +3,33 @@ "732119": "64391a", "c5a56b": "ac9276", "d64252": "b1772e", - "000000": "000000", "735a42": "5e4828", "ffefa5": "f5f4e2", "f7734a": "e6af4a", "debd8c": "e5d9c3", "21216b": "0e4481", - "ffffff": "ffffff", "a54252": "8c5219" }, "1": { "732119": "1b5255", "c5a56b": "b1a58c", "d64252": "3aad8b", - "000000": "000000", "735a42": "766a5b", "ffefa5": "f5f3df", "f7734a": "5dde9d", "debd8c": "d9c9ac", "21216b": "541433", - "ffffff": "ffffff", "a54252": "2c736b" }, "2": { "732119": "4c0013", "c5a56b": "564c51", "d64252": "8c2426", - "000000": "000000", "735a42": "2d252a", "ffefa5": "a89da0", "f7734a": "b54144", "debd8c": "82787c", "21216b": "4d1b00", - "ffffff": "ffffff", "a54252": "771823" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/137.json b/public/images/pokemon/variant/137.json index 81f82938bcc..497c86c2979 100644 --- a/public/images/pokemon/variant/137.json +++ b/public/images/pokemon/variant/137.json @@ -7,7 +7,6 @@ "efad9c": "f8a8cd", "085a73": "4d030f", "5abde6": "e9635a", - "000000": "000000", "ff6363": "e9778e", "0884a5": "841023", "08add6": "ba333b", @@ -22,7 +21,6 @@ "efad9c": "82391d", "085a73": "a1562c", "5abde6": "ffd9ab", - "000000": "000000", "ff6363": "491c0c", "0884a5": "cf8556", "08add6": "efb787", diff --git a/public/images/pokemon/variant/138.json b/public/images/pokemon/variant/138.json index 1801e9e8a0a..1f9e9a02000 100644 --- a/public/images/pokemon/variant/138.json +++ b/public/images/pokemon/variant/138.json @@ -5,7 +5,6 @@ "635231": "821e16", "e6de84": "e67443", "c5ad73": "d04e2a", - "000000": "000000", "3a4284": "2c0c19", "426bad": "48172f", "ffffff": "f3fdff", @@ -21,7 +20,6 @@ "635231": "0c0f28", "e6de84": "404c5f", "c5ad73": "2a344b", - "000000": "000000", "3a4284": "0c5540", "426bad": "1a7e5c", "ffffff": "ffa788", diff --git a/public/images/pokemon/variant/139.json b/public/images/pokemon/variant/139.json index 76a3db354f5..40fe7fd0b33 100644 --- a/public/images/pokemon/variant/139.json +++ b/public/images/pokemon/variant/139.json @@ -4,14 +4,12 @@ "e6de84": "db764a", "635242": "5f1e19", "c5ad73": "c04e2f", - "000000": "000000", "ffefc5": "fdad7d", "426bad": "39121f", "63bdf7": "885374", "3a9cce": "602a48", "3a4284": "2c0c19", "424242": "3c1313", - "fff79c": "ffca9c", - "ffffff": "ffffff" + "fff79c": "ffca9c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/140.json b/public/images/pokemon/variant/140.json index 0739e7baea2..5c7a5e96729 100644 --- a/public/images/pokemon/variant/140.json +++ b/public/images/pokemon/variant/140.json @@ -2,8 +2,6 @@ "1": { "7b5229": "600006", "4a2900": "52060e", - "ffffff": "ffffff", - "000000": "000000", "c58429": "9f1105", "a56b29": "870100", "ff8cad": "ff5bda", @@ -15,8 +13,6 @@ "2": { "7b5229": "2821ab", "4a2900": "271381", - "ffffff": "ffffff", - "000000": "000000", "c58429": "4b64e6", "a56b29": "3440cb", "ff8cad": "ffed85", diff --git a/public/images/pokemon/variant/142-mega.json b/public/images/pokemon/variant/142-mega.json index 7306fb27ac5..49fd230e379 100644 --- a/public/images/pokemon/variant/142-mega.json +++ b/public/images/pokemon/variant/142-mega.json @@ -6,12 +6,10 @@ "957fa0": "945f65", "a79ed4": "b58788", "57406d": "582e34", - "010101": "010101", "79559f": "c54522", "9767d2": "df6d3c", "c5bfe3": "e4b7b2", "317329": "2150d9", - "fafafa": "fafafa", "832041": "a31048", "ae87e2": "ee9152", "d95b6b": "ee526f" @@ -23,12 +21,10 @@ "957fa0": "a8bdcc", "a79ed4": "cae0ec", "57406d": "596876", - "010101": "010101", "79559f": "1e5e54", "9767d2": "348f78", "c5bfe3": "d7ecf4", "317329": "c00c39", - "fafafa": "fafafa", "832041": "941c2d", "ae87e2": "5ebf9c", "d95b6b": "e76e67" diff --git a/public/images/pokemon/variant/142.json b/public/images/pokemon/variant/142.json index 0a31b67ad8b..e7cd2d299aa 100644 --- a/public/images/pokemon/variant/142.json +++ b/public/images/pokemon/variant/142.json @@ -1,14 +1,11 @@ { "1": { "9484a5": "6c3c43", - "000000": "000000", "adadd6": "945f65", "cecee6": "b58788", "524273": "411921", "31196b": "671707", "317329": "2150d9", - "cecece": "cecece", - "ffffff": "ffffff", "735294": "c54522", "ce3a4a": "d92f62", "842142": "a31048", @@ -18,14 +15,11 @@ }, "2": { "9484a5": "7c8e9f", - "000000": "000000", "adadd6": "a8bdcc", "cecee6": "cae0ec", "524273": "374659", "31196b": "0b3433", "317329": "c00c39", - "cecece": "cecece", - "ffffff": "ffffff", "735294": "1e5e54", "ce3a4a": "d03e3f", "842142": "941c2d", diff --git a/public/images/pokemon/variant/144.json b/public/images/pokemon/variant/144.json index 3117db9f49d..956a8386699 100644 --- a/public/images/pokemon/variant/144.json +++ b/public/images/pokemon/variant/144.json @@ -3,17 +3,13 @@ "005273": "642c89", "94c5ff": "f1dfff", "4a84d6": "7b42ab", - "000000": "000000", "6badf7": "d7adff", "003152": "461660", "007bbd": "a142c8", "5a3a19": "221531", "b59473": "736581", "8c6b52": "372841", - "ffffff": "ffffff", "bd293a": "2d6cb0", - "cee6ff": "fef5ff", - "525252": "525252", - "cecece": "cecece" + "cee6ff": "fef5ff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/145.json b/public/images/pokemon/variant/145.json index 3104d408a9f..8a0354f6ed7 100644 --- a/public/images/pokemon/variant/145.json +++ b/public/images/pokemon/variant/145.json @@ -5,11 +5,8 @@ "101010": "000000", "d6ad08": "cc4e17", "9c7b10": "991500", - "ffffff": "ffffff", - "dedede": "dedede", "f79419": "6c4645", "c56b19": "442526", - "6b6b6b": "6b6b6b", "7b6b19": "2f1517", "9c8c31": "290f13" }, @@ -19,11 +16,8 @@ "101010": "000000", "d6ad08": "e3b68e", "9c7b10": "ac7c5b", - "ffffff": "ffffff", - "dedede": "dedede", "f79419": "ff9a33", "c56b19": "dd6b10", - "6b6b6b": "6b6b6b", "7b6b19": "885024", "9c8c31": "6e4216" }, @@ -33,11 +27,8 @@ "101010": "000000", "d6ad08": "a32a71", "9c7b10": "94007e", - "ffffff": "ffffff", - "dedede": "dedede", "f79419": "ffdeff", "c56b19": "c992cb", - "6b6b6b": "6b6b6b", "7b6b19": "970083", "9c8c31": "ce24a8" } diff --git a/public/images/pokemon/variant/146.json b/public/images/pokemon/variant/146.json index 8f9a5337298..fa210ac4bac 100644 --- a/public/images/pokemon/variant/146.json +++ b/public/images/pokemon/variant/146.json @@ -6,15 +6,11 @@ "ffa54a": "e01291", "734210": "220f23", "de9410": "431d43", - "000000": "000000", "ffc54a": "512d4e", "ffef63": "755c73", "523a29": "460241", "8c634a": "8c0c75", - "cecece": "cecece", - "ffffff": "ffffff", - "b58c63": "dd2559", - "636363": "636363" + "b58c63": "dd2559" }, "1": { "d60808": "00877f", @@ -23,15 +19,11 @@ "ffa54a": "90e932", "734210": "706127", "de9410": "c2b562", - "000000": "000000", "ffc54a": "f1eca3", "ffef63": "feffe1", "523a29": "840000", "8c634a": "ad1910", - "cecece": "cecece", - "ffffff": "ffffff", - "b58c63": "de423a", - "636363": "636363" + "b58c63": "de423a" }, "2": { "d60808": "053889", @@ -40,14 +32,10 @@ "ffa54a": "26b1e1", "734210": "0c4f6b", "de9410": "58abdb", - "000000": "000000", "ffc54a": "9dd5ff", "ffef63": "dae9ff", "523a29": "3e0b03", "8c634a": "78230b", - "cecece": "cecece", - "ffffff": "ffffff", - "b58c63": "b05329", - "636363": "636363" + "b58c63": "b05329" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/147.json b/public/images/pokemon/variant/147.json index acc6eb7909e..83715497ae9 100644 --- a/public/images/pokemon/variant/147.json +++ b/public/images/pokemon/variant/147.json @@ -3,7 +3,6 @@ "9c948c": "79a2a3", "ffffff": "def1ef", "5a5a5a": "54787d", - "000000": "000000", "ded6de": "a2c7c7", "5a63bd": "b24729", "293184": "a82d17", @@ -15,7 +14,6 @@ "9c948c": "c2a7a3", "ffffff": "fff5f0", "5a5a5a": "8c7270", - "000000": "000000", "ded6de": "dfc8c2", "5a63bd": "1b5f6f", "293184": "134557", diff --git a/public/images/pokemon/variant/148.json b/public/images/pokemon/variant/148.json index b05769f1f8f..abb514c0adf 100644 --- a/public/images/pokemon/variant/148.json +++ b/public/images/pokemon/variant/148.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "a59ca5": "79a2a3", "ffffff": "def1ef", "5a525a": "54787d", @@ -16,7 +15,6 @@ "425aff": "359bbd" }, "2": { - "000000": "000000", "a59ca5": "c29490", "ffffff": "ffedde", "5a525a": "895e5c", diff --git a/public/images/pokemon/variant/149.json b/public/images/pokemon/variant/149.json index aade1494b1f..e7c2222f75f 100644 --- a/public/images/pokemon/variant/149.json +++ b/public/images/pokemon/variant/149.json @@ -3,34 +3,26 @@ "5a3a21": "102908", "ffefbd": "def1ef", "ef9c3a": "e9917b", - "000000": "000000", "de733a": "d15b67", "efbd8c": "a2c7c7", "9c5a4a": "5a394e", "f7bd5a": "f8b58f", - "cecece": "cecece", - "ffffff": "ffffff", "196b63": "359bbd", "21a57b": "61cce2", "104231": "1b6794", - "ad8c42": "79a2a3", - "636363": "636363" + "ad8c42": "79a2a3" }, "2": { "5a3a21": "102908", "ffefbd": "f8dfce", "ef9c3a": "55a39f", - "000000": "000000", "de733a": "2d636d", "efbd8c": "c0a59d", "9c5a4a": "895e5c", "f7bd5a": "8ed9c4", - "cecece": "cecece", - "ffffff": "ffffff", "196b63": "a44a91", "21a57b": "f86ebf", "104231": "9c4a94", - "ad8c42": "ad7e7a", - "636363": "636363" + "ad8c42": "ad7e7a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/150-mega-x.json b/public/images/pokemon/variant/150-mega-x.json index b25e997cab9..9d645e5895d 100644 --- a/public/images/pokemon/variant/150-mega-x.json +++ b/public/images/pokemon/variant/150-mega-x.json @@ -5,11 +5,9 @@ "b4acc5": "db8aaf", "ded5e6": "ffb5d6", "eee6ee": "ffd6ef", - "101010": "101010", "6a319c": "196b5b", "9441bd": "4bac9a", "2b68b3": "4bac9a", - "fdfdfd": "fdfdfd", "b44aee": "c4fff4", "57acdf": "89cabe", "392052": "105144" @@ -20,11 +18,9 @@ "b4acc5": "edaf5b", "ded5e6": "ffdd98", "eee6ee": "ffeeb6", - "101010": "101010", "6a319c": "6b2619", "9441bd": "ac4f4b", "2b68b3": "da2e29", - "fdfdfd": "fdfdfd", "b44aee": "ffffff", "57acdf": "ea5f5b", "392052": "531b10" diff --git a/public/images/pokemon/variant/150-mega-y.json b/public/images/pokemon/variant/150-mega-y.json index 0a13977e42d..cc0aa0c43e8 100644 --- a/public/images/pokemon/variant/150-mega-y.json +++ b/public/images/pokemon/variant/150-mega-y.json @@ -7,9 +7,7 @@ "393952": "5a2952", "6a319c": "196b5b", "9441bd": "4bac9a", - "fdfdfd": "fdfdfd", "c83535": "4bac9a", - "101010": "101010", "ea5f5b": "89cabe", "392052": "12493f", "b44aee": "c4fff4" @@ -22,10 +20,7 @@ "393952": "884c17", "6a319c": "6b2619", "9441bd": "ac4f4b", - "fdfdfd": "fdfdfd", "c83535": "da2e29", - "101010": "101010", - "ea5f5b": "ea5f5b", "392052": "491b12", "b44aee": "ffffff" } diff --git a/public/images/pokemon/variant/150.json b/public/images/pokemon/variant/150.json index 7f64d98f731..69e437fe113 100644 --- a/public/images/pokemon/variant/150.json +++ b/public/images/pokemon/variant/150.json @@ -6,10 +6,8 @@ "3a3a52": "5a2952", "6b319c": "196b5b", "9442bd": "4bac9a", - "000000": "000000", "efe6ef": "ffd6ef", "3a2152": "12493f", - "ffffff": "ffffff", "b54aef": "c4fff4" }, "2": { @@ -19,10 +17,8 @@ "3a3a52": "884c17", "6b319c": "6b2619", "9442bd": "ac4f4b", - "000000": "000000", "efe6ef": "ffeeb6", "3a2152": "491b12", - "ffffff": "ffffff", "b54aef": "ffffff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/151.json b/public/images/pokemon/variant/151.json index 5506cdbc7c9..aed8f4c467f 100644 --- a/public/images/pokemon/variant/151.json +++ b/public/images/pokemon/variant/151.json @@ -3,11 +3,8 @@ "b56394": "895ac3", "5a2952": "5c2da1", "ffb5d6": "d3b8e8", - "000000": "000000", "ef84b5": "ab87cf", "ffd6ef": "eed7fa", - "cecece": "cecece", - "ffffff": "ffffff", "193a6b": "ca241d", "2963e6": "e85040", "84adf7": "ff9180" @@ -16,11 +13,8 @@ "b56394": "d68f40", "5a2952": "884c17", "ffb5d6": "ffdd98", - "000000": "000000", "ef84b5": "edaf5b", "ffd6ef": "ffeeb6", - "cecece": "cecece", - "ffffff": "ffffff", "193a6b": "067576", "2963e6": "11948c", "84adf7": "74f5e3" diff --git a/public/images/pokemon/variant/161.json b/public/images/pokemon/variant/161.json index 3c8b46ed63f..b8e51656235 100644 --- a/public/images/pokemon/variant/161.json +++ b/public/images/pokemon/variant/161.json @@ -3,15 +3,12 @@ "4a3121": "252054", "634231": "46387d", "3a0800": "15143c", - "101010": "101010", "b52142": "921a4b", "de424a": "a44362", "8c5a42": "744e9b", "cea584": "eec1ff", "bd845a": "cc95eb", "a5734a": "a374c7", - "ffffff": "ffffff", - "3a1910": "161443", - "cecec5": "cecec5" + "3a1910": "161443" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/162.json b/public/images/pokemon/variant/162.json index 635da722c22..24794d4cb47 100644 --- a/public/images/pokemon/variant/162.json +++ b/public/images/pokemon/variant/162.json @@ -3,28 +3,23 @@ "522921": "151c34", "e6c54a": "988fc7", "7b423a": "2d2766", - "212129": "212129", "9c634a": "46387d", "c59c42": "7266a2", "ffef94": "b7abde", "ad8429": "716aa8", "ffffc5": "d3c8ec", - "ffffff": "ffffff", "737373": "3a8591", - "9c0000": "9c1f00", - "ff9463": "ff9463" + "9c0000": "9c1f00" }, "2": { "522921": "222f3c", "e6c54a": "b4d1dc", "7b423a": "56697a", - "212129": "212129", "9c634a": "7a8e9b", "c59c42": "8aaabb", "ffef94": "daeff5", "ad8429": "67748a", "ffffc5": "f9feff", - "ffffff": "ffffff", "737373": "cc3b46", "9c0000": "00379c", "ff9463": "1e78c6" diff --git a/public/images/pokemon/variant/163.json b/public/images/pokemon/variant/163.json index dc7b7424543..9ac5eef1aad 100644 --- a/public/images/pokemon/variant/163.json +++ b/public/images/pokemon/variant/163.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "424242": "462f68", "734a19": "4d438b", "523100": "25245c", @@ -12,12 +11,9 @@ "bd5a29": "663e5f", "efad94": "87627e", "ffe6c5": "cdd9ee", - "debd9c": "a3b0d2", - "ffffff": "ffffff", - "7b7b7b": "7b7b7b" + "debd9c": "a3b0d2" }, "2": { - "101010": "101010", "424242": "232d44", "734a19": "435170", "523100": "1f2a4e", @@ -29,8 +25,6 @@ "bd5a29": "36282b", "efad94": "4f4143", "ffe6c5": "e3e9eb", - "debd9c": "ccd4d9", - "ffffff": "ffffff", - "7b7b7b": "7b7b7b" + "debd9c": "ccd4d9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/169.json b/public/images/pokemon/variant/169.json index 751102ef4a0..2d32d0c0610 100644 --- a/public/images/pokemon/variant/169.json +++ b/public/images/pokemon/variant/169.json @@ -3,30 +3,21 @@ "7b4a9c": "2f2a5f", "63197b": "14093b", "a55ace": "3d4381", - "101010": "101010", "b57bce": "666fb4", "08426b": "b06130", "ce0021": "1200b5", "ffd600": "20e0ff", "d69400": "099ac3", - "216b94": "ffb049", - "ffffff": "ffffff", - "a5a5a5": "a5a5a5", - "6b6b6b": "6b6b6b" + "216b94": "ffb049" }, "2": { "7b4a9c": "80607b", "63197b": "3c1e39", "a55ace": "b49db2", - "101010": "101010", "b57bce": "c8b6c2", "08426b": "901606", - "ce0021": "ce0021", "ffd600": "ffa028", "d69400": "ff7b00", - "216b94": "b52c0c", - "ffffff": "ffffff", - "a5a5a5": "a5a5a5", - "6b6b6b": "6b6b6b" + "216b94": "b52c0c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/173.json b/public/images/pokemon/variant/173.json index 8f6346693a1..b0a2e6b6422 100644 --- a/public/images/pokemon/variant/173.json +++ b/public/images/pokemon/variant/173.json @@ -4,12 +4,10 @@ "632119": "3d2e66", "ffc5ad": "c19fe3", "ffa594": "9579c9", - "101010": "101010", "523100": "44004a", "de7b6b": "7c52ba", "6b4a31": "494299", "c58c29": "5ca3bf", - "a56b00": "647cb3", - "ffffff": "ffffff" + "a56b00": "647cb3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/175.json b/public/images/pokemon/variant/175.json index 0d99c606a43..c56b1593eda 100644 --- a/public/images/pokemon/variant/175.json +++ b/public/images/pokemon/variant/175.json @@ -1,13 +1,11 @@ { "0": { "94735a": "844466", - "000000": "000000", "f7efc5": "f7c9c5", "ce9c73": "a7738f", "734a4a": "5b2847", "f7d6a5": "e4b2bb", "b5b5c5": "c5b5b5", - "ffffff": "ffffff", "ad2121": "811a5f", "d6dede": "ded6d6", "c54242": "409e80", @@ -18,7 +16,6 @@ }, "1": { "94735a": "734350", - "000000": "000000", "f7efc5": "f7c5ce", "ce9c73": "a26867", "734a4a": "452030", @@ -35,7 +32,6 @@ }, "2": { "94735a": "404d5b", - "000000": "000000", "f7efc5": "ddeaef", "ce9c73": "8093a5", "734a4a": "1f293b", diff --git a/public/images/pokemon/variant/176.json b/public/images/pokemon/variant/176.json index 612920b2e34..740a71a7396 100644 --- a/public/images/pokemon/variant/176.json +++ b/public/images/pokemon/variant/176.json @@ -1,7 +1,6 @@ { "0": { "737b84": "6b3552", - "000000": "000000", "ffffff": "eee0db", "adc5bd": "ceacac", "d6efef": "dbc9c5", @@ -12,7 +11,6 @@ }, "1": { "737b84": "734350", - "000000": "000000", "ffffff": "f3cbcb", "adc5bd": "ae7675", "d6efef": "c79397", @@ -23,7 +21,6 @@ }, "2": { "737b84": "384d72", - "000000": "000000", "ffffff": "c1dfe9", "adc5bd": "81aaca", "d6efef": "91b6cf", diff --git a/public/images/pokemon/variant/177.json b/public/images/pokemon/variant/177.json index f1736061523..412ee5f3228 100644 --- a/public/images/pokemon/variant/177.json +++ b/public/images/pokemon/variant/177.json @@ -3,30 +3,24 @@ "842900": "001d3f", "ff424a": "4b798a", "d63131": "174d69", - "292929": "292929", "296b29": "b36848", "73bd42": "ffbe79", "94d642": "ffe88e", "4a9442": "d1915e", - "ffffff": "ffffff", "846321": "356f6d", "d6ad29": "4ca690", - "ffde29": "8ddcaf", - "cecece": "cecece" + "ffde29": "8ddcaf" }, "2": { "842900": "3b060c", "ff424a": "9a3841", "d63131": "662340", - "292929": "292929", "296b29": "224181", "73bd42": "62a1e8", "94d642": "82d4fc", "4a9442": "4973c7", - "ffffff": "ffffff", "846321": "382c78", "d6ad29": "554196", - "ffde29": "8767bf", - "cecece": "cecece" + "ffde29": "8767bf" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/179.json b/public/images/pokemon/variant/179.json index 0d1f5d32faf..79c50f2af23 100644 --- a/public/images/pokemon/variant/179.json +++ b/public/images/pokemon/variant/179.json @@ -6,8 +6,6 @@ "e6cea5": "deccb2", "e6ad00": "eaa60f", "ffde00": "ffe85a", - "ffffff": "ffffff", - "101010": "101010", "525252": "392229", "a5a5a5": "4f3a3d", "004a94": "461e1b", @@ -23,8 +21,6 @@ "e6cea5": "352b53", "e6ad00": "c33486", "ffde00": "ee74c1", - "ffffff": "ffffff", - "101010": "101010", "525252": "221b1f", "a5a5a5": "2d282a", "004a94": "42579d", diff --git a/public/images/pokemon/variant/181-mega.json b/public/images/pokemon/variant/181-mega.json index b8976b8cd03..571cc3a7650 100644 --- a/public/images/pokemon/variant/181-mega.json +++ b/public/images/pokemon/variant/181-mega.json @@ -2,7 +2,6 @@ "1": { "737373": "58341f", "f8f8f8": "ffe8b2", - "101010": "101010", "bf370a": "e28f09", "bfbfbf": "e5c079", "ff490d": "ffe85a", @@ -15,7 +14,6 @@ "2": { "737373": "5d412a", "f8f8f8": "fff1d0", - "101010": "101010", "bf370a": "d26b00", "bfbfbf": "ebbb78", "ff490d": "ffab34", diff --git a/public/images/pokemon/variant/181.json b/public/images/pokemon/variant/181.json index c898dfb6d7a..5b1f92cdefc 100644 --- a/public/images/pokemon/variant/181.json +++ b/public/images/pokemon/variant/181.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "636b6b": "4a1e19", "ffc510": "9f5834", "845a31": "492602", @@ -15,7 +14,6 @@ "e6e6e6": "e6c285" }, "2": { - "101010": "101010", "636b6b": "3e2752", "ffc510": "6189db", "845a31": "1c2a6d", diff --git a/public/images/pokemon/variant/182.json b/public/images/pokemon/variant/182.json index 11f04f60f96..da8f5b2a6b2 100644 --- a/public/images/pokemon/variant/182.json +++ b/public/images/pokemon/variant/182.json @@ -4,13 +4,11 @@ "f76b00": "79f6d5", "840000": "338497", "e6d66b": "5c51b9", - "101010": "101010", "b5a53a": "3a2c7d", "847319": "231c5a", "73ad31": "a2d281", "9cd64a": "d8ecb1", "526329": "659251", - "ffffff": "ffffff", "3a9400": "6370b3", "105210": "373c8b", "52ce31": "90a4d7" @@ -20,13 +18,11 @@ "f76b00": "eaed6e", "840000": "a7801f", "e6d66b": "eb4f50", - "101010": "101010", "b5a53a": "ca3442", "847319": "a21b36", "73ad31": "804428", "9cd64a": "b68356", "526329": "592819", - "ffffff": "ffffff", "3a9400": "b8462a", "105210": "901a17", "52ce31": "e87940" diff --git a/public/images/pokemon/variant/183.json b/public/images/pokemon/variant/183.json index 9fa6031e129..a3b79858fee 100644 --- a/public/images/pokemon/variant/183.json +++ b/public/images/pokemon/variant/183.json @@ -8,7 +8,6 @@ "941010": "7b3cd6", "bd2931": "778dd1", "de4252": "9fcae2", - "ffffff": "ffffff", "101010": "32392e", "b5d6ff": "ffd9f3", "636363": "7c6a7d", diff --git a/public/images/pokemon/variant/185.json b/public/images/pokemon/variant/185.json index 9935620d320..1b7c8ba77fa 100644 --- a/public/images/pokemon/variant/185.json +++ b/public/images/pokemon/variant/185.json @@ -3,7 +3,6 @@ "635a4a": "322a22", "c5a54a": "7b7670", "ad845a": "5d564e", - "101010": "101010", "315a19": "3d1e0c", "4ac542": "8a6a24", "5a8c5a": "6c4616", @@ -17,7 +16,6 @@ "635a4a": "2d2164", "c5a54a": "5c80c0", "ad845a": "4058a8", - "101010": "101010", "315a19": "cf985e", "4ac542": "efe1b2", "5a8c5a": "e0c282", diff --git a/public/images/pokemon/variant/19.json b/public/images/pokemon/variant/19.json index 3347f6b9529..1e32b660c54 100644 --- a/public/images/pokemon/variant/19.json +++ b/public/images/pokemon/variant/19.json @@ -4,33 +4,25 @@ "8c4a8c": "4e5e7e", "d69cd6": "88a0b1", "4a2942": "262f4f", - "101010": "101010", "a57308": "a17c7d", "e6ce73": "b79897", "634a08": "765358", "efdeb5": "e8cec9", "a5193a": "2d945e", - "cecece": "cecece", - "ffffff": "ffffff", "e65a73": "61d8c1", - "cead63": "c4a3a1", - "5a5a5a": "5a5a5a" + "cead63": "c4a3a1" }, "2": { "b573bd": "efdcd1", "8c4a8c": "d6b2a6", "d69cd6": "fff5eb", "4a2942": "865c54", - "101010": "101010", "a57308": "ba476f", "e6ce73": "c6667d", "634a08": "7e3754", "efdeb5": "efb5c0", "a5193a": "a91507", - "cecece": "cecece", - "ffffff": "ffffff", "e65a73": "d85926", - "cead63": "d98a9f", - "5a5a5a": "5a5a5a" + "cead63": "d98a9f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/190.json b/public/images/pokemon/variant/190.json index 3a8e737b470..911d18e7347 100644 --- a/public/images/pokemon/variant/190.json +++ b/public/images/pokemon/variant/190.json @@ -2,27 +2,21 @@ "1": { "8442ad": "ad452f", "bd7bde": "dea95a", - "000000": "000000", "52216b": "701523", "a55ac5": "c47440", "8c6b42": "8c7457", "bd8c63": "bd9a7e", "c5ad6b": "c4b487", - "ffdea5": "ffeccc", - "ffffff": "ffffff", - "adada5": "adada5" + "ffdea5": "ffeccc" }, "2": { "8442ad": "a6a297", "bd7bde": "e5dfdf", - "000000": "000000", "52216b": "807870", "a55ac5": "bfbeb4", "8c6b42": "632339", "bd8c63": "802d44", "c5ad6b": "99455d", - "ffdea5": "ed8286", - "ffffff": "ffffff", - "adada5": "adada5" + "ffdea5": "ed8286" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/193.json b/public/images/pokemon/variant/193.json index 90199bf510b..aef5305e261 100644 --- a/public/images/pokemon/variant/193.json +++ b/public/images/pokemon/variant/193.json @@ -2,7 +2,6 @@ "1": { "632900": "a13a80", "f75a52": "fc95c5", - "101010": "101010", "ad3119": "e069b1", "94adbd": "c9859d", "e6ffff": "f0afbc", @@ -19,7 +18,6 @@ "2": { "632900": "913919", "f75a52": "eba64d", - "101010": "101010", "ad3119": "cf6838", "94adbd": "81a690", "e6ffff": "f3ffe6", diff --git a/public/images/pokemon/variant/196.json b/public/images/pokemon/variant/196.json index ce41a030de1..cbff9a81321 100644 --- a/public/images/pokemon/variant/196.json +++ b/public/images/pokemon/variant/196.json @@ -1,44 +1,38 @@ { "0": { "7b4a7b": "204024", - "101010": "101010", "efbdef": "bddd9e", "e7a5d6": "6c9e63", "b57bb5": "416240", "314273": "a86a2c", "4a73b5": "ffb554", "c62152": "ffa80e", - "ffffff": "ffffff", "8c2152": "c54200", "8463b5": "ffa72a", "c6c6c6": "c5c5c5" }, "1": { "7b4a7b": "581747", - "101010": "101010", "efbdef": "e99eae", "e7a5d6": "d1759c", "b57bb5": "953b6c", "314273": "537fde", "4a73b5": "90b7f9", "c62152": "31d9ff", - "ffffff": "ffffff", "8c2152": "15a7d2", "8463b5": "1662bf", "c6c6c6": "c5c5c5" }, "2": { "7b4a7b": "9b5250", - "101010": "101010", "efbdef": "f5f3e1", "e7a5d6": "ded0af", "b57bb5": "ce987a", "314273": "194540", "4a73b5": "39816d", "c62152": "00de92", - "ffffff": "ffffff", "8c2152": "00ad7f", "8463b5": "006b5b", "c6c6c6": "c5c5c5" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/197.json b/public/images/pokemon/variant/197.json index 87cee244bd7..cbeb67fdf45 100644 --- a/public/images/pokemon/variant/197.json +++ b/public/images/pokemon/variant/197.json @@ -2,19 +2,16 @@ "1": { "29314a": "3a2534", "63637b": "896c75", - "101010": "101010", "424252": "553849", "525200": "9b0f33", "efd652": "ff5153", "b59429": "c72343", "6b2110": "e37e22", - "ffefde": "ffefde", "ad424a": "ffbb49" }, "2": { "29314a": "9f8981", "63637b": "eddbcf", - "101010": "101010", "424252": "d3bcb1", "525200": "974623", "efd652": "e7af5d", diff --git a/public/images/pokemon/variant/199.json b/public/images/pokemon/variant/199.json index 22e345030c0..f0ee6325d3f 100644 --- a/public/images/pokemon/variant/199.json +++ b/public/images/pokemon/variant/199.json @@ -1,15 +1,12 @@ { "1": { - "101010": "101010", "63636b": "734927", "d6d6d6": "f1d191", "ada5a5": "bf9562", "b52919": "2b191b", - "ffffff": "ffffff", "ef736b": "5b3332", "ce5252": "4c2523", "ff9c94": "885345", - "d1cdc9": "d1cdc9", "ad6310": "a25a53", "deb531": "b97565", "ffff8c": "e0b69d", @@ -18,16 +15,13 @@ "ff5a4a": "93de76" }, "2": { - "101010": "101010", "63636b": "192b32", "d6d6d6": "4c7668", "ada5a5": "2b4a48", "b52919": "893d28", - "ffffff": "ffffff", "ef736b": "de9048", "ce5252": "b0613c", "ff9c94": "edbc69", - "d1cdc9": "d1cdc9", "ad6310": "a12d18", "deb531": "ba5127", "ffff8c": "d16d36", diff --git a/public/images/pokemon/variant/2.json b/public/images/pokemon/variant/2.json index 69bf62863f8..687263c7683 100644 --- a/public/images/pokemon/variant/2.json +++ b/public/images/pokemon/variant/2.json @@ -4,7 +4,6 @@ "d6425a": "2e6902", "ffada5": "c5d95f", "ff7b7b": "88b043", - "101010": "101010", "104a3a": "022e59", "7bd673": "bef0fa", "317b52": "446b94", @@ -12,7 +11,6 @@ "10424a": "733502", "84e6d6": "ffbb45", "5acebd": "faa405", - "219484": "c76102", - "ffffff": "ffffff" + "219484": "c76102" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/20.json b/public/images/pokemon/variant/20.json index dbc0e0afaee..b3ffae21dd6 100644 --- a/public/images/pokemon/variant/20.json +++ b/public/images/pokemon/variant/20.json @@ -7,7 +7,6 @@ "deb54a": "635653", "c5943a": "4a3331", "6b3a00": "261518", - "101010": "101010", "ffffff": "fff2e4", "f7f7a5": "d2b2ad", "845a29": "48272e", @@ -24,7 +23,6 @@ "deb54a": "fff8ef", "c5943a": "e2cbb9", "6b3a00": "7f645c", - "101010": "101010", "ffffff": "fffaf4", "f7f7a5": "ba5e68", "845a29": "34171d", diff --git a/public/images/pokemon/variant/200.json b/public/images/pokemon/variant/200.json index 75ec1831f2e..6a12b2b75a4 100644 --- a/public/images/pokemon/variant/200.json +++ b/public/images/pokemon/variant/200.json @@ -1,7 +1,6 @@ { "0": { "631942": "71370f", - "101010": "101010", "de63a5": "f6b557", "9c3a4a": "c7722c", "4a84a5": "8366ab", @@ -10,14 +9,12 @@ "3a6384": "603f90", "bd9431": "c08ecb", "a5295a": "d3941a", - "ffffff": "ffffff", "efe663": "e5c9e9", "de4284": "ffdd67", "731031": "9b490e" }, "1": { "631942": "00535b", - "101010": "101010", "de63a5": "099394", "9c3a4a": "42c3bc", "4a84a5": "c7d8e1", @@ -26,14 +23,12 @@ "3a6384": "4a6077", "bd9431": "149c9d", "a5295a": "c87819", - "ffffff": "ffffff", "efe663": "55e6de", "de4284": "ffc668", "731031": "7b3c08" }, "2": { "631942": "5d4a2f", - "101010": "101010", "de63a5": "fff7dd", "9c3a4a": "fae3ad", "4a84a5": "fecb77", @@ -42,7 +37,6 @@ "3a6384": "e1983d", "bd9431": "66d0e5", "a5295a": "7a1511", - "ffffff": "ffffff", "efe663": "a6f0f8", "de4284": "b83a31", "731031": "430a09" diff --git a/public/images/pokemon/variant/201-a.json b/public/images/pokemon/variant/201-a.json index 93929b1d6ff..46efa61cc3f 100644 --- a/public/images/pokemon/variant/201-a.json +++ b/public/images/pokemon/variant/201-a.json @@ -4,8 +4,7 @@ "dedede": "ffe1bd", "a5a5a5": "ffad4b", "101010": "201100", - "737373": "e67d00", - "ffffff": "ffffff" + "737373": "e67d00" }, "2": { "525252": "905438", diff --git a/public/images/pokemon/variant/201-b.json b/public/images/pokemon/variant/201-b.json index b3aa945a57d..1b9497bdab4 100644 --- a/public/images/pokemon/variant/201-b.json +++ b/public/images/pokemon/variant/201-b.json @@ -4,8 +4,7 @@ "525252": "a45900", "737373": "e67d00", "dedede": "ffe1bd", - "a5a5a5": "ffad4b", - "ffffff": "ffffff" + "a5a5a5": "ffad4b" }, "2": { "101010": "411600", diff --git a/public/images/pokemon/variant/201-c.json b/public/images/pokemon/variant/201-c.json index 237244aa2d7..663065c07ec 100644 --- a/public/images/pokemon/variant/201-c.json +++ b/public/images/pokemon/variant/201-c.json @@ -4,8 +4,7 @@ "101010": "201100", "737373": "e67d00", "a5a5a5": "ffad4b", - "dedede": "ffe1bd", - "ffffff": "ffffff" + "dedede": "ffe1bd" }, "2": { "525252": "6f090c", diff --git a/public/images/pokemon/variant/201-d.json b/public/images/pokemon/variant/201-d.json index e51f09a105f..5470f3ed693 100644 --- a/public/images/pokemon/variant/201-d.json +++ b/public/images/pokemon/variant/201-d.json @@ -4,15 +4,13 @@ "101010": "201100", "737373": "e67d00", "dedede": "ffe1bd", - "a5a5a5": "ffad4b", - "ffffff": "ffffff" + "a5a5a5": "ffad4b" }, "2": { "525252": "6498c2", "101010": "041b3f", "737373": "c4edf1", "dedede": "ffffff", - "a5a5a5": "f2ffff", - "ffffff": "ffffff" + "a5a5a5": "f2ffff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/201-e.json b/public/images/pokemon/variant/201-e.json index 1a057eb1e3c..6a17a8d1814 100644 --- a/public/images/pokemon/variant/201-e.json +++ b/public/images/pokemon/variant/201-e.json @@ -4,8 +4,7 @@ "525252": "a45900", "737373": "e67d00", "dedede": "ffe1bd", - "a5a5a5": "ffad4b", - "ffffff": "ffffff" + "a5a5a5": "ffad4b" }, "2": { "101010": "002618", diff --git a/public/images/pokemon/variant/201-exclamation.json b/public/images/pokemon/variant/201-exclamation.json index 718b96facd1..58fdaf1c7ad 100644 --- a/public/images/pokemon/variant/201-exclamation.json +++ b/public/images/pokemon/variant/201-exclamation.json @@ -4,8 +4,7 @@ "101010": "201100", "a5a5a5": "ffad4b", "737373": "e67d00", - "dedede": "ffe1bd", - "ffffff": "ffffff" + "dedede": "ffe1bd" }, "2": { "525252": "a1122b", diff --git a/public/images/pokemon/variant/201-f.json b/public/images/pokemon/variant/201-f.json index a7d7e053ac1..d7d29982076 100644 --- a/public/images/pokemon/variant/201-f.json +++ b/public/images/pokemon/variant/201-f.json @@ -4,8 +4,7 @@ "101010": "201100", "737373": "e67d00", "dedede": "ffe1bd", - "a5a5a5": "ffad4b", - "ffffff": "ffffff" + "a5a5a5": "ffad4b" }, "2": { "525252": "b34394", diff --git a/public/images/pokemon/variant/201-g.json b/public/images/pokemon/variant/201-g.json index d92920facd2..083df9b4cce 100644 --- a/public/images/pokemon/variant/201-g.json +++ b/public/images/pokemon/variant/201-g.json @@ -4,8 +4,7 @@ "525252": "a45900", "737373": "e67d00", "a5a5a5": "ffad4b", - "dedede": "ffe1bd", - "ffffff": "ffffff" + "dedede": "ffe1bd" }, "2": { "101010": "471100", diff --git a/public/images/pokemon/variant/201-h.json b/public/images/pokemon/variant/201-h.json index 476a6560eb2..468b13b50f5 100644 --- a/public/images/pokemon/variant/201-h.json +++ b/public/images/pokemon/variant/201-h.json @@ -4,8 +4,7 @@ "101010": "201100", "737373": "e67d00", "a5a5a5": "ffad4b", - "dedede": "ffe1bd", - "ffffff": "ffffff" + "dedede": "ffe1bd" }, "2": { "525252": "aa1731", diff --git a/public/images/pokemon/variant/201-i.json b/public/images/pokemon/variant/201-i.json index e9caaa30132..3785c7096f5 100644 --- a/public/images/pokemon/variant/201-i.json +++ b/public/images/pokemon/variant/201-i.json @@ -4,8 +4,7 @@ "dedede": "ffe1bd", "a5a5a5": "ffad4b", "101010": "201100", - "737373": "e67d00", - "ffffff": "ffffff" + "737373": "e67d00" }, "2": { "525252": "483a74", diff --git a/public/images/pokemon/variant/201-j.json b/public/images/pokemon/variant/201-j.json index 0d0812ce955..0396693c527 100644 --- a/public/images/pokemon/variant/201-j.json +++ b/public/images/pokemon/variant/201-j.json @@ -4,15 +4,13 @@ "525252": "a45900", "a5a5a5": "ffad4b", "737373": "e67d00", - "dedede": "ffe1bd", - "ffffff": "ffffff" + "dedede": "ffe1bd" }, "2": { "101010": "392b32", "525252": "ac8e97", "a5a5a5": "eee3e5", "737373": "d6c8cb", - "dedede": "fff7f8", - "ffffff": "ffffff" + "dedede": "fff7f8" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/201-k.json b/public/images/pokemon/variant/201-k.json index b2e1fbc6aaf..e84d26f8ce4 100644 --- a/public/images/pokemon/variant/201-k.json +++ b/public/images/pokemon/variant/201-k.json @@ -4,8 +4,7 @@ "a5a5a5": "ffad4b", "101010": "201100", "dedede": "ffe1bd", - "737373": "e67d00", - "ffffff": "ffffff" + "737373": "e67d00" }, "2": { "525252": "6eab2c", diff --git a/public/images/pokemon/variant/201-l.json b/public/images/pokemon/variant/201-l.json index 9cd531b948c..e88727eabcd 100644 --- a/public/images/pokemon/variant/201-l.json +++ b/public/images/pokemon/variant/201-l.json @@ -4,15 +4,13 @@ "101010": "201100", "dedede": "ffe1bd", "a5a5a5": "ffad4b", - "737373": "e67d00", - "ffffff": "ffffff" + "737373": "e67d00" }, "2": { "525252": "bb8e77", "101010": "290808", "dedede": "fff4e5", "a5a5a5": "f3ddc5", - "737373": "e2bea2", - "ffffff": "ffffff" + "737373": "e2bea2" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/201-m.json b/public/images/pokemon/variant/201-m.json index fcebfe7b6bc..e3e691eb2b5 100644 --- a/public/images/pokemon/variant/201-m.json +++ b/public/images/pokemon/variant/201-m.json @@ -4,8 +4,7 @@ "101010": "201100", "737373": "e67d00", "dedede": "ffe1bd", - "a5a5a5": "ffad4b", - "ffffff": "ffffff" + "a5a5a5": "ffad4b" }, "2": { "525252": "1a917f", diff --git a/public/images/pokemon/variant/201-n.json b/public/images/pokemon/variant/201-n.json index 1d27cb75039..28d88a5b131 100644 --- a/public/images/pokemon/variant/201-n.json +++ b/public/images/pokemon/variant/201-n.json @@ -4,8 +4,7 @@ "a5a5a5": "ffad4b", "101010": "201100", "dedede": "ffe1bd", - "737373": "e67d00", - "ffffff": "ffffff" + "737373": "e67d00" }, "2": { "525252": "351e67", diff --git a/public/images/pokemon/variant/201-o.json b/public/images/pokemon/variant/201-o.json index 4257ccecc03..bfe33dd1c16 100644 --- a/public/images/pokemon/variant/201-o.json +++ b/public/images/pokemon/variant/201-o.json @@ -4,8 +4,7 @@ "525252": "a45900", "737373": "e67d00", "a5a5a5": "ffad4b", - "dedede": "ffe1bd", - "ffffff": "ffffff" + "dedede": "ffe1bd" }, "2": { "101010": "000000", diff --git a/public/images/pokemon/variant/201-p.json b/public/images/pokemon/variant/201-p.json index 7932df09f12..7da0cd744bc 100644 --- a/public/images/pokemon/variant/201-p.json +++ b/public/images/pokemon/variant/201-p.json @@ -4,8 +4,7 @@ "101010": "201100", "dedede": "ffe1bd", "a5a5a5": "ffad4b", - "737373": "e67d00", - "ffffff": "ffffff" + "737373": "e67d00" }, "2": { "525252": "ad540f", diff --git a/public/images/pokemon/variant/201-q.json b/public/images/pokemon/variant/201-q.json index 8283eabfdcf..241daf37027 100644 --- a/public/images/pokemon/variant/201-q.json +++ b/public/images/pokemon/variant/201-q.json @@ -4,8 +4,7 @@ "737373": "e67d00", "101010": "201100", "dedede": "ffe1bd", - "a5a5a5": "ffad4b", - "ffffff": "ffffff" + "a5a5a5": "ffad4b" }, "2": { "525252": "bd8f26", diff --git a/public/images/pokemon/variant/201-question.json b/public/images/pokemon/variant/201-question.json index 919cc7676a2..f7109a6e579 100644 --- a/public/images/pokemon/variant/201-question.json +++ b/public/images/pokemon/variant/201-question.json @@ -4,8 +4,7 @@ "dedede": "ffe1bd", "a5a5a5": "ffad4b", "737373": "e67d00", - "525252": "a45900", - "ffffff": "ffffff" + "525252": "a45900" }, "2": { "101010": "000020", diff --git a/public/images/pokemon/variant/201-r.json b/public/images/pokemon/variant/201-r.json index 176f97fec1a..8b425529d01 100644 --- a/public/images/pokemon/variant/201-r.json +++ b/public/images/pokemon/variant/201-r.json @@ -4,8 +4,7 @@ "101010": "201100", "737373": "e67d00", "dedede": "ffe1bd", - "a5a5a5": "ffad4b", - "ffffff": "ffffff" + "a5a5a5": "ffad4b" }, "2": { "525252": "44251f", diff --git a/public/images/pokemon/variant/201-s.json b/public/images/pokemon/variant/201-s.json index 3cf0d17b4bb..6b55531bf5b 100644 --- a/public/images/pokemon/variant/201-s.json +++ b/public/images/pokemon/variant/201-s.json @@ -4,8 +4,7 @@ "dedede": "ffe1bd", "a5a5a5": "ffad4b", "101010": "201100", - "737373": "e67d00", - "ffffff": "ffffff" + "737373": "e67d00" }, "2": { "525252": "266526", diff --git a/public/images/pokemon/variant/201-t.json b/public/images/pokemon/variant/201-t.json index 95239e5731b..040a1f84451 100644 --- a/public/images/pokemon/variant/201-t.json +++ b/public/images/pokemon/variant/201-t.json @@ -4,8 +4,7 @@ "737373": "e67d00", "525252": "a45900", "a5a5a5": "ffad4b", - "dedede": "ffe1bd", - "ffffff": "ffffff" + "dedede": "ffe1bd" }, "2": { "101010": "22003c", diff --git a/public/images/pokemon/variant/201-u.json b/public/images/pokemon/variant/201-u.json index f52b6d86827..95b8a0fa4bd 100644 --- a/public/images/pokemon/variant/201-u.json +++ b/public/images/pokemon/variant/201-u.json @@ -4,8 +4,7 @@ "a5a5a5": "ffad4b", "737373": "e67d00", "101010": "201100", - "dedede": "ffe1bd", - "ffffff": "ffffff" + "dedede": "ffe1bd" }, "2": { "525252": "551b2c", diff --git a/public/images/pokemon/variant/201-v.json b/public/images/pokemon/variant/201-v.json index 0824e793d9c..6cc08547da1 100644 --- a/public/images/pokemon/variant/201-v.json +++ b/public/images/pokemon/variant/201-v.json @@ -4,8 +4,7 @@ "525252": "a45900", "737373": "e67d00", "dedede": "ffe1bd", - "a5a5a5": "ffad4b", - "ffffff": "ffffff" + "a5a5a5": "ffad4b" }, "2": { "101010": "371000", diff --git a/public/images/pokemon/variant/201-w.json b/public/images/pokemon/variant/201-w.json index 5515d25e5d5..bb310de7bed 100644 --- a/public/images/pokemon/variant/201-w.json +++ b/public/images/pokemon/variant/201-w.json @@ -4,8 +4,7 @@ "dedede": "ffe1bd", "a5a5a5": "ffad4b", "101010": "201100", - "737373": "e67d00", - "ffffff": "ffffff" + "737373": "e67d00" }, "2": { "525252": "9975bb", diff --git a/public/images/pokemon/variant/201-x.json b/public/images/pokemon/variant/201-x.json index 52d07cb0750..482724308e6 100644 --- a/public/images/pokemon/variant/201-x.json +++ b/public/images/pokemon/variant/201-x.json @@ -4,15 +4,13 @@ "101010": "201100", "dedede": "ffe1bd", "a5a5a5": "ffad4b", - "737373": "e67d00", - "ffffff": "ffffff" + "737373": "e67d00" }, "2": { "525252": "60a6b5", "101010": "001434", "dedede": "e9fff7", "a5a5a5": "cdf4ec", - "737373": "91e9e4", - "ffffff": "ffffff" + "737373": "91e9e4" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/201-y.json b/public/images/pokemon/variant/201-y.json index 744581d4b77..e092f989c53 100644 --- a/public/images/pokemon/variant/201-y.json +++ b/public/images/pokemon/variant/201-y.json @@ -4,8 +4,7 @@ "dedede": "ffe1bd", "a5a5a5": "ffad4b", "737373": "e67d00", - "101010": "201100", - "ffffff": "ffffff" + "101010": "201100" }, "2": { "525252": "d1762f", diff --git a/public/images/pokemon/variant/201-z.json b/public/images/pokemon/variant/201-z.json index 810a933dcfc..97b7a3ab5aa 100644 --- a/public/images/pokemon/variant/201-z.json +++ b/public/images/pokemon/variant/201-z.json @@ -4,8 +4,7 @@ "dedede": "ffe1bd", "a5a5a5": "ffad4b", "737373": "e67d00", - "101010": "201100", - "ffffff": "ffffff" + "101010": "201100" }, "2": { "525252": "21402e", diff --git a/public/images/pokemon/variant/2027.json b/public/images/pokemon/variant/2027.json index b479f8e2283..3560616640f 100644 --- a/public/images/pokemon/variant/2027.json +++ b/public/images/pokemon/variant/2027.json @@ -2,31 +2,25 @@ "1": { "518d9f": "a24c68", "354e73": "752e42", - "fefefe": "fefefe", "b6dbe7": "ffdac2", "84b3ce": "d27c80", - "101010": "101010", "10397b": "212d55", "897e67": "aaaa96", "297bcd": "3b5e82", "d1c592": "d3d3c6", "fefea9": "fffffc", - "ebe2b1": "e9e9e0", - "cfd3d8": "cfd3d8" + "ebe2b1": "e9e9e0" }, "2": { "518d9f": "6a439e", "354e73": "3d2c78", - "fefefe": "fefefe", "b6dbe7": "dbb1eb", "84b3ce": "a87bcf", - "101010": "101010", "10397b": "1d6268", "897e67": "2e163d", "297bcd": "3a9b8a", "d1c592": "44225a", "fefea9": "6f3480", - "ebe2b1": "552668", - "cfd3d8": "cfd3d8" + "ebe2b1": "552668" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/2028.json b/public/images/pokemon/variant/2028.json index 955b24576a2..3222a22072f 100644 --- a/public/images/pokemon/variant/2028.json +++ b/public/images/pokemon/variant/2028.json @@ -1,7 +1,6 @@ { "1": { "3c88b4": "966281", - "101010": "101010", "52b0cf": "e2877b", "f1f1f4": "fffffc", "b0e5f8": "fffed9", @@ -12,12 +11,10 @@ "b7e3e7": "ffb59e", "77a2bb": "d9746e", "606060": "6f525d", - "8b8b8b": "8b8b8b", "bdbdcd": "d0c0b6" }, "2": { "3c88b4": "515fa9", - "101010": "101010", "52b0cf": "57a5c5", "f1f1f4": "e3f0ff", "b0e5f8": "f8f5b0", @@ -28,7 +25,6 @@ "b7e3e7": "5f2e71", "77a2bb": "381d4d", "606060": "3a3a54", - "8b8b8b": "8b8b8b", "bdbdcd": "acb7d0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/203.json b/public/images/pokemon/variant/203.json index a4391436a20..10e0040644a 100644 --- a/public/images/pokemon/variant/203.json +++ b/public/images/pokemon/variant/203.json @@ -1,7 +1,6 @@ { "1": { "424a73": "351810", - "ffffff": "ffffff", "adb5d6": "8f6f66", "6b8cb5": "512b21", "4a3a3a": "231117", @@ -9,7 +8,6 @@ "9c7b42": "571522", "efde52": "9c3e3e", "9c3a5a": "ab9d75", - "101010": "101010", "ce6b94": "d8d1ad", "947b6b": "1f4062", "635252": "112246", @@ -18,7 +16,6 @@ }, "2": { "424a73": "27091d", - "ffffff": "ffffff", "adb5d6": "c5b0b7", "6b8cb5": "4a1b33", "4a3a3a": "091225", @@ -26,7 +23,6 @@ "9c7b42": "15545d", "efde52": "2a9d8f", "9c3a5a": "52ab5f", - "101010": "101010", "ce6b94": "a8e781", "947b6b": "1a2e43", "635252": "111d34", diff --git a/public/images/pokemon/variant/2052.json b/public/images/pokemon/variant/2052.json index adcd32d0470..a78ae48b8c2 100644 --- a/public/images/pokemon/variant/2052.json +++ b/public/images/pokemon/variant/2052.json @@ -1,32 +1,26 @@ { "1": { "45505f": "8c583b", - "101010": "101010", "91a3bf": "ffda5c", "262b3c": "41185e", "995433": "493473", "627986": "de974e", - "f3f3f3": "f3f3f3", "e3cc2b": "a66db5", "ca833c": "7a519a", "798071": "7a4888", "b5b6b9": "bb92d5", - "bcbdc0": "bcbdc0", "f0f0f0": "f4ceff" }, "2": { "45505f": "271420", - "101010": "101010", "91a3bf": "7c4e42", "262b3c": "1d1b33", "995433": "45328e", "627986": "5f3036", - "f3f3f3": "f3f3f3", "e3cc2b": "b5b8f9", "ca833c": "7b7fda", "798071": "5f5c7e", "b5b6b9": "7b7895", - "bcbdc0": "bcbdc0", "f0f0f0": "d1daf5" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/2053.json b/public/images/pokemon/variant/2053.json index 9c5fcd4c20b..aa5dec5609b 100644 --- a/public/images/pokemon/variant/2053.json +++ b/public/images/pokemon/variant/2053.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "464457": "8c583b", "262b3c": "41185e", "45505f": "512d6c", @@ -8,13 +7,10 @@ "6c7791": "de974e", "9ba8b7": "ffda5c", "1784d5": "6945aa", - "fdfdfd": "fdfdfd", "11b8f7": "9d67d8", - "1149a8": "2e2575", - "b6b6b6": "b6b6b6" + "1149a8": "2e2575" }, "2": { - "101010": "101010", "464457": "271420", "262b3c": "111323", "45505f": "1d1b33", diff --git a/public/images/pokemon/variant/206.json b/public/images/pokemon/variant/206.json index 1a765507cd6..e16e94cefa0 100644 --- a/public/images/pokemon/variant/206.json +++ b/public/images/pokemon/variant/206.json @@ -4,29 +4,25 @@ "f7e67b": "ececec", "debd3a": "aeaeae", "bd8c21": "757575", - "101010": "101010", "d6e6f7": "c1d7e2", "5a6373": "5d6970", "f7ffff": "f6ffff", "fff7c5": "fdfdfd", "6bbdce": "748da4", "216b84": "2a413f", - "318ca5": "4a6165", - "bdcee6": "bdcee6" + "318ca5": "4a6165" }, "2": { "735a42": "462a3e", "f7e67b": "db4069", "debd3a": "a12e55", "bd8c21": "692342", - "101010": "101010", "d6e6f7": "f4ce91", "5a6373": "5c4a4d", "f7ffff": "fdffdc", "fff7c5": "e97798", "6bbdce": "b5f2ec", "216b84": "1d737a", - "318ca5": "38a8a6", - "bdcee6": "bdcee6" + "318ca5": "38a8a6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/212-mega.json b/public/images/pokemon/variant/212-mega.json index 5534f751f83..883352cde2d 100644 --- a/public/images/pokemon/variant/212-mega.json +++ b/public/images/pokemon/variant/212-mega.json @@ -2,43 +2,24 @@ "0": { "622929": "215a2d", "f66a6a": "8cce73", - "101010": "101010", "d53939": "4a9c53", - "a42929": "2f794e", - "39394a": "39394a", - "fdfdfd": "fdfdfd", - "9494a4": "9494a4", - "b4b4cd": "b4b4cd", - "0090b4": "0090b4", - "20d6f4": "20d6f4", - "343444": "343444" + "a42929": "2f794e" }, "1": { "622929": "2f2962", "f66a6a": "639cf7", - "101010": "101010", "d53939": "4263ef", - "a42929": "29429c", - "39394a": "39394a", - "fdfdfd": "fdfdfd", - "9494a4": "9494a4", - "b4b4cd": "b4b4cd", - "0090b4": "0090b4", - "20d6f4": "20d6f4", - "343444": "343444" + "a42929": "29429c" }, "2": { "622929": "645117", "f66a6a": "c59f29", - "101010": "101010", "d53939": "ffca2a", "a42929": "b88619", "39394a": "282d2c", - "fdfdfd": "fdfdfd", "9494a4": "3c4543", "b4b4cd": "cdccb4", "0090b4": "b49800", - "20d6f4": "f4e920", - "343444": "343444" + "20d6f4": "f4e920" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/212.json b/public/images/pokemon/variant/212.json index 55fcc0858ac..5240f4f81e3 100644 --- a/public/images/pokemon/variant/212.json +++ b/public/images/pokemon/variant/212.json @@ -2,24 +2,14 @@ "0": { "632929": "215a2d", "f76b6b": "8cce73", - "101010": "101010", - "3a3a4a": "3a3a4a", - "ffffff": "ffffff", "d63a3a": "4a9c53", - "b5b5ce": "b5b5ce", - "9494a5": "9494a5", - "a52929": "2f794e", - "dec510": "dec510", - "9c6b21": "9c6b21" + "a52929": "2f794e" }, "1": { "632929": "2f2962", "f76b6b": "639cf7", - "101010": "101010", "3a3a4a": "3c3c50", - "ffffff": "ffffff", "d63a3a": "4263ef", - "b5b5ce": "b5b5ce", "9494a5": "6262a4", "a52929": "29429c", "dec510": "10bdde", @@ -28,14 +18,9 @@ "2": { "632929": "645117", "f76b6b": "c59f29", - "101010": "101010", "3a3a4a": "282d2c", - "ffffff": "ffffff", "d63a3a": "ffca2a", - "b5b5ce": "b5b5ce", "9494a5": "3c4543", - "a52929": "b88619", - "dec510": "dec510", - "9c6b21": "9c6b21" + "a52929": "b88619" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/213.json b/public/images/pokemon/variant/213.json index 3ce19ff580c..04c2e0b8064 100644 --- a/public/images/pokemon/variant/213.json +++ b/public/images/pokemon/variant/213.json @@ -4,7 +4,6 @@ "efc54a": "cc5b74", "735210": "5d1931", "ffff5a": "d68b71", - "101010": "101010", "842100": "0d1f2d", "6b633a": "8e4d31", "d6ceb5": "fcc86f", @@ -18,7 +17,6 @@ "efc54a": "5bbfaa", "735210": "254d59", "ffff5a": "aaedbe", - "101010": "101010", "842100": "2c1b2a", "6b633a": "1f1f1f", "d6ceb5": "4f3e46", diff --git a/public/images/pokemon/variant/215.json b/public/images/pokemon/variant/215.json index dabf55363bb..9058de23c8e 100644 --- a/public/images/pokemon/variant/215.json +++ b/public/images/pokemon/variant/215.json @@ -6,7 +6,6 @@ "316373": "6d1631", "f75273": "637696", "3a94ad": "ac373e", - "000000": "000000", "42849c": "902738", "a57b3a": "c3701b", "dece73": "ffcd68", @@ -22,13 +21,11 @@ "316373": "d4874f", "f75273": "7ac3f0", "3a94ad": "fbdba1", - "000000": "000000", "42849c": "eab273", "a57b3a": "d04e6d", "dece73": "ff8ce0", "4a4a4a": "383d51", "bdbdc5": "a1a0c3", - "f7f7ff": "f7f7ff", "8cc5ce": "d1d1ee" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/216.json b/public/images/pokemon/variant/216.json index c6e00a3e844..d0ff8a89b16 100644 --- a/public/images/pokemon/variant/216.json +++ b/public/images/pokemon/variant/216.json @@ -2,43 +2,28 @@ "0": { "6b4219": "225c35", "b56321": "4cae50", - "101010": "101010", "ff843a": "90db6d", "de7331": "6ac669", "dece9c": "d6f794", "ffe6a5": "ffffb5", - "ffffff": "ffffff", - "6b6b7b": "6b6b7b", - "efad52": "ffe66b", - "dedede": "dedede", - "b5b5bd": "b5b5bd" + "efad52": "ffe66b" }, "1": { "6b4219": "5e0c28", "b56321": "9e253b", - "101010": "101010", "ff843a": "e44642", "de7331": "c42f3e", "dece9c": "ddb49d", "ffe6a5": "f7eee1", - "ffffff": "ffffff", - "6b6b7b": "6b6b7b", - "efad52": "f2cab8", - "dedede": "dedede", - "b5b5bd": "b5b5bd" + "efad52": "f2cab8" }, "2": { "6b4219": "1e2249", "b56321": "323760", - "101010": "101010", "ff843a": "46527a", "de7331": "3c456e", "dece9c": "85deff", "ffe6a5": "b5fffc", - "ffffff": "ffffff", - "6b6b7b": "6b6b7b", - "efad52": "75aaff", - "dedede": "dedede", - "b5b5bd": "b5b5bd" + "efad52": "75aaff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/217.json b/public/images/pokemon/variant/217.json index 88ac9da8225..076e45c965b 100644 --- a/public/images/pokemon/variant/217.json +++ b/public/images/pokemon/variant/217.json @@ -1,47 +1,30 @@ { "0": { - "7b7b8c": "7b7b8c", - "101010": "101010", "634229": "1d3d26", - "ffffff": "ffffff", "945221": "2f6324", "422919": "112114", - "dedede": "dedede", "bd7342": "6a8a46", "ffef84": "f7ffa5", - "b5b5bd": "b5b5bd", "c59c4a": "ceb552", "f7c563": "f7de7b", "841931": "a52942", "de3a5a": "ef526b" }, "1": { - "7b7b8c": "7b7b8c", - "101010": "101010", "634229": "6b1d38", - "ffffff": "ffffff", "945221": "8c2a37", "422919": "2d0e1f", - "dedede": "dedede", "bd7342": "b74543", "ffef84": "f9eddb", - "b5b5bd": "b5b5bd", "c59c4a": "c48e81", - "f7c563": "f2cab8", - "841931": "841931", - "de3a5a": "de3a5a" + "f7c563": "f2cab8" }, "2": { - "7b7b8c": "7b7b8c", - "101010": "101010", "634229": "1e2249", - "ffffff": "ffffff", "945221": "323760", "422919": "111433", - "dedede": "dedede", "bd7342": "46527a", "ffef84": "adf2f7", - "b5b5bd": "b5b5bd", "c59c4a": "45a2f9", "f7c563": "5ccaf2", "841931": "a52942", diff --git a/public/images/pokemon/variant/222.json b/public/images/pokemon/variant/222.json index 61681ff421a..a184a41df10 100644 --- a/public/images/pokemon/variant/222.json +++ b/public/images/pokemon/variant/222.json @@ -1,12 +1,10 @@ { "1": { - "101010": "101010", "ffcee6": "f5eab0", "bd004a": "b76600", "ffa5c5": "f6cc70", "e66394": "f39806", "f77bb5": "f6b64e", - "ffffff": "ffffff", "dee6f7": "d9fafa", "adc5de": "9fdbd8", "5a7bad": "0095a1" @@ -18,7 +16,6 @@ "ffa5c5": "c7e5a0", "e66394": "85ba58", "f77bb5": "adca66", - "ffffff": "ffffff", "dee6f7": "1da7a3", "adc5de": "207a80", "5a7bad": "1c5469" diff --git a/public/images/pokemon/variant/227.json b/public/images/pokemon/variant/227.json index 592d33eea65..aebecf36444 100644 --- a/public/images/pokemon/variant/227.json +++ b/public/images/pokemon/variant/227.json @@ -6,14 +6,12 @@ "bdcee6": "6d93a4", "deefff": "97bcce", "637bad": "062233", - "101010": "101010", "941019": "4a0451", "c5314a": "912790", "ff8494": "c47acc", "ef5a63": "ad57ba", "ce9400": "d34b21", "ffde00": "f87642", - "841921": "841921", "ffffff": "97bcce" }, "2": { @@ -23,7 +21,6 @@ "bdcee6": "ac6f7d", "deefff": "c8aeae", "637bad": "231429", - "101010": "101010", "941019": "10255a", "c5314a": "245a98", "ff8494": "9ef8e2", diff --git a/public/images/pokemon/variant/228.json b/public/images/pokemon/variant/228.json index e9634ee0a05..aa2cc00e0c8 100644 --- a/public/images/pokemon/variant/228.json +++ b/public/images/pokemon/variant/228.json @@ -1,40 +1,29 @@ { "1": { "101921": "321b32", - "080808": "080808", "4a4a52": "76546b", "46435c": "471d23", "767085": "a84b50", "ffffff": "f3bd87", "a59cad": "c87966", "292931": "553454", - "292929": "292929", - "f8f9ff": "f8f9ff", - "f1fcff": "f1fcff", "f7a57b": "f8f1e7", "734229": "77545b", "1b1b23": "352241", - "ad7352": "ceb0a5", - "e2e0e3": "e2e0e3", - "8c1900": "8c1900" + "ad7352": "ceb0a5" }, "2": { "101921": "2c2335", - "080808": "080808", "4a4a52": "f8faf3", "46435c": "171635", "767085": "223657", "ffffff": "5c8d95", "a59cad": "38576c", "292931": "b1a3b1", - "292929": "292929", - "f8f9ff": "f8f9ff", - "f1fcff": "f1fcff", "f7a57b": "72557e", "734229": "311f3a", "1b1b23": "ecb592", "ad7352": "533960", - "e2e0e3": "e2e0e3", "8c1900": "a87ea3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/229-mega.json b/public/images/pokemon/variant/229-mega.json index 7f2956d6bb0..ea6d7d04687 100644 --- a/public/images/pokemon/variant/229-mega.json +++ b/public/images/pokemon/variant/229-mega.json @@ -4,18 +4,13 @@ "a49cac": "a84b50", "cdd5d5": "c87966", "fcfcfc": "f3bd87", - "010101": "010101", "622910": "77545b", "182029": "321b32", "a45a4a": "ceb0a5", "4a4a52": "76546b", "f69c83": "f8f1e7", "313139": "553454", - "c5cdd1": "c5cdd1", "ce0a10": "455d92", - "f8f9ff": "f8f9ff", - "000000": "000000", - "e2e0e3": "e2e0e3", "cb070d": "aa8c82" }, "2": { @@ -23,7 +18,6 @@ "a49cac": "223657", "cdd5d5": "38576c", "fcfcfc": "5c8d95", - "010101": "010101", "622910": "311f3a", "182029": "321b32", "a45a4a": "533960", @@ -33,8 +27,6 @@ "c5cdd1": "100f27", "ce0a10": "e58142", "f8f9ff": "223657", - "000000": "000000", - "e2e0e3": "e2e0e3", "cb070d": "534b6a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/229.json b/public/images/pokemon/variant/229.json index fe532e0c908..ffe3de858f0 100644 --- a/public/images/pokemon/variant/229.json +++ b/public/images/pokemon/variant/229.json @@ -6,16 +6,11 @@ "a59cad": "a84244", "192129": "431129", "4a4a52": "85324a", - "000000": "000000", "a55a4a": "ceb0a5", "f79c84": "f8f1e7", "841021": "41578c", "31313a": "631e3f", - "ada5b3": "ada5b3", - "632910": "8c6362", - "f8f9ff": "f8f9ff", - "e2e0e3": "e2e0e3", - "9c293a": "9c293a" + "632910": "8c6362" }, "2": { "84738c": "111a33", @@ -24,7 +19,6 @@ "a59cad": "223657", "192129": "616f8c", "4a4a52": "e8f8ff", - "000000": "000000", "a55a4a": "4a3a5e", "f79c84": "665a83", "841021": "f37755", @@ -32,7 +26,6 @@ "ada5b3": "111a33", "632910": "2d203c", "f8f9ff": "223657", - "e2e0e3": "e2e0e3", "9c293a": "9e6b77" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/23.json b/public/images/pokemon/variant/23.json index f0f5f749d4d..9edd18b1d5d 100644 --- a/public/images/pokemon/variant/23.json +++ b/public/images/pokemon/variant/23.json @@ -9,8 +9,6 @@ "845210": "6f483e", "ffd66b": "f3f1d4", "e6ad5a": "d6c7a2", - "101010": "101010", - "ffffff": "ffffff", "9c1000": "9e352b", "c54219": "c76740", "f7734a": "e59d59", @@ -26,8 +24,6 @@ "845210": "1d265b", "ffd66b": "4d759b", "e6ad5a": "3b5a87", - "101010": "101010", - "ffffff": "ffffff", "9c1000": "67305a", "c54219": "904864", "f7734a": "a75e6d", diff --git a/public/images/pokemon/variant/230.json b/public/images/pokemon/variant/230.json index 83212a90de2..e7a6095423f 100644 --- a/public/images/pokemon/variant/230.json +++ b/public/images/pokemon/variant/230.json @@ -2,7 +2,6 @@ "1": { "4a5a94": "2a2750", "639cce": "2f4861", - "101010": "101010", "8cbdef": "396979", "cee6f7": "5dac9b", "add6ff": "3e8383", @@ -17,7 +16,6 @@ "2": { "4a5a94": "54133f", "639cce": "b53f49", - "101010": "101010", "8cbdef": "d64b52", "cee6f7": "ffb273", "add6ff": "f27461", diff --git a/public/images/pokemon/variant/231.json b/public/images/pokemon/variant/231.json index ad75f38a1d3..fc21b2003a8 100644 --- a/public/images/pokemon/variant/231.json +++ b/public/images/pokemon/variant/231.json @@ -4,21 +4,17 @@ "add6ef": "e8e8e8", "525294": "4d5271", "9cbdef": "bac4ca", - "101010": "101010", "bd3a31": "4b6aa1", "840000": "394e85", "f76b52": "859abf", - "ffffff": "ffffff", "6b9cce": "97a5b5", - "8c8c8c": "8c8baa", - "d6d6d6": "d6d6d6" + "8c8c8c": "8c8baa" }, "2": { "527bb5": "4f2955", "add6ef": "a56898", "525294": "3a2043", "9cbdef": "814c79", - "101010": "101010", "bd3a31": "cea141", "840000": "b17333", "f76b52": "f1d35b", diff --git a/public/images/pokemon/variant/232.json b/public/images/pokemon/variant/232.json index 97f598a8545..c90b8815809 100644 --- a/public/images/pokemon/variant/232.json +++ b/public/images/pokemon/variant/232.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "6b7373": "7fa0d7", "4a5252": "5f74c7", "3a3a3a": "333a77", @@ -11,8 +10,6 @@ "d6ded6": "f4f4f4", "424242": "2f3441", "738484": "6c7488", - "f9f9f9": "f9f9f9", - "d6d6d6": "d6d6d6", "bdc5c5": "cdd1dc", "707f7f": "b6511d", "bdbdbd": "de913e", @@ -20,7 +17,6 @@ "dedede": "edbb5e" }, "2": { - "101010": "101010", "6b7373": "d17e47", "4a5252": "994e30", "3a3a3a": "6f2219", @@ -31,8 +27,6 @@ "d6ded6": "665263", "424242": "2c1f2e", "738484": "1e1225", - "f9f9f9": "f9f9f9", - "d6d6d6": "d6d6d6", "bdc5c5": "584158", "707f7f": "1d2a54", "bdbdbd": "3b70c3", diff --git a/public/images/pokemon/variant/233.json b/public/images/pokemon/variant/233.json index dd2b7299736..cff3f5d31f1 100644 --- a/public/images/pokemon/variant/233.json +++ b/public/images/pokemon/variant/233.json @@ -4,8 +4,6 @@ "ef5a63": "f8a8cd", "5a3a4a": "d9546f", "ff94b5": "fccee9", - "ffffff": "ffffff", - "101010": "101010", "31739c": "6d224c", "8cd6ff": "9e4971", "4a9cd6": "833462", @@ -19,7 +17,6 @@ "5a3a4a": "31150e", "ff94b5": "a04c27", "ffffff": "ffe4d4", - "101010": "101010", "31739c": "cf8556", "8cd6ff": "ffd9ab", "4a9cd6": "efb787", diff --git a/public/images/pokemon/variant/235.json b/public/images/pokemon/variant/235.json index 1da37a2624d..668c0c7c1dc 100644 --- a/public/images/pokemon/variant/235.json +++ b/public/images/pokemon/variant/235.json @@ -5,16 +5,10 @@ "4a3a10": "431a2e", "6b5a31": "672f44", "adad8c": "b1767f", - "101010": "101010", - "c5c5c5": "c5c5c5", - "ffffff": "ffffff", - "94949c": "94949c", "199c00": "113041", "086300": "091728", "6bde42": "347c78", - "42c519": "1f5259", - "b50000": "b50000", - "f78400": "f78400" + "42c519": "1f5259" }, "2": { "8c8452": "3a3f47", @@ -22,10 +16,6 @@ "4a3a10": "141622", "6b5a31": "262b39", "adad8c": "8a909b", - "101010": "101010", - "c5c5c5": "c5c5c5", - "ffffff": "ffffff", - "94949c": "94949c", "199c00": "111321", "086300": "080811", "6bde42": "272b39", diff --git a/public/images/pokemon/variant/239.json b/public/images/pokemon/variant/239.json index e35d5491405..f7e4cc0a914 100644 --- a/public/images/pokemon/variant/239.json +++ b/public/images/pokemon/variant/239.json @@ -4,9 +4,7 @@ "b56b00": "a83018", "ffce31": "ff844b", "ce8c00": "d44b2c", - "101010": "101010", "a5a5a5": "adadad", - "ffffff": "ffffff", "cecece": "d8d8d8", "6b6b6b": "6e3048", "e6ad19": "f2673d", @@ -17,12 +15,6 @@ "b56b00": "33b571", "ffce31": "6bff9e", "ce8c00": "52ba8b", - "101010": "101010", - "a5a5a5": "a5a5a5", - "ffffff": "ffffff", - "cecece": "cecece", - "6b6b6b": "6b6b6b", - "e6ad19": "53e680", - "313131": "313131" + "e6ad19": "53e680" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/24.json b/public/images/pokemon/variant/24.json index 6faaf4b0c4e..05acdd202cc 100644 --- a/public/images/pokemon/variant/24.json +++ b/public/images/pokemon/variant/24.json @@ -4,9 +4,6 @@ "c5a5ef": "8feae4", "523a7b": "113a53", "a584c5": "30abb3", - "101010": "101010", - "ffffff": "ffffff", - "c5c5c5": "c5c5c5", "9c1000": "aa352b", "f7734a": "e3aa74", "c54219": "c27048", @@ -17,9 +14,6 @@ "c5a5ef": "fff9e5", "523a7b": "875a5f", "a584c5": "eed3b1", - "101010": "101010", - "ffffff": "ffffff", - "c5c5c5": "c5c5c5", "9c1000": "393c81", "f7734a": "6388ac", "c54219": "4f5a98", diff --git a/public/images/pokemon/variant/240.json b/public/images/pokemon/variant/240.json index 06b748f4cb7..aeb798619eb 100644 --- a/public/images/pokemon/variant/240.json +++ b/public/images/pokemon/variant/240.json @@ -3,10 +3,6 @@ "d6523a": "372d49", "ff7b63": "524b6f", "943121": "272034", - "101010": "101010", - "c5c5c5": "c5c5c5", - "73737b": "73737b", - "ffffff": "ffffff", "ffffb5": "f5ad27", "f7d63a": "fb832b", "d6ad00": "db4d19", @@ -16,10 +12,6 @@ "d6523a": "4065b0", "ff7b63": "5398cf", "943121": "303d58", - "101010": "101010", - "c5c5c5": "c5c5c5", - "73737b": "73737b", - "ffffff": "ffffff", "ffffb5": "ffffff", "f7d63a": "eaffff", "d6ad00": "c6edf2", diff --git a/public/images/pokemon/variant/243.json b/public/images/pokemon/variant/243.json index e42b832d153..0a431c7cf27 100644 --- a/public/images/pokemon/variant/243.json +++ b/public/images/pokemon/variant/243.json @@ -2,7 +2,6 @@ "1": { "846ba5": "732c40", "52296b": "481532", - "101010": "101010", "bd8cc5": "b74f57", "6b6b6b": "3c3c4e", "9cd6ff": "ffcb59", @@ -18,7 +17,6 @@ "2": { "846ba5": "dc9779", "52296b": "994d3d", - "101010": "101010", "bd8cc5": "f5d4c0", "6b6b6b": "3c3c4e", "9cd6ff": "ffb23a", diff --git a/public/images/pokemon/variant/245.json b/public/images/pokemon/variant/245.json index da4dd9edf29..36359b042d9 100644 --- a/public/images/pokemon/variant/245.json +++ b/public/images/pokemon/variant/245.json @@ -1,7 +1,6 @@ { "1": { "31428c": "271a56", - "101010": "101010", "7bbdff": "6b62c0", "5a7bd6": "4c4097", "7b5ab5": "bd4530", @@ -18,7 +17,6 @@ }, "2": { "31428c": "854607", - "101010": "101010", "7bbdff": "f5c042", "5a7bd6": "d67f17", "7b5ab5": "863062", diff --git a/public/images/pokemon/variant/246.json b/public/images/pokemon/variant/246.json index b05a319791b..12465da965d 100644 --- a/public/images/pokemon/variant/246.json +++ b/public/images/pokemon/variant/246.json @@ -4,10 +4,8 @@ "4a5a3a": "0b4367", "d6e6ce": "4fa6e0", "adce9c": "4493c7", - "101010": "101010", "bd3a21": "cd8f30", "6b2100": "a86e14", - "ffffff": "ffffff", "ef5229": "efca4f", "ffa55a": "fff69f" }, @@ -16,10 +14,8 @@ "4a5a3a": "a5494d", "d6e6ce": "ecd292", "adce9c": "e5a267", - "101010": "101010", "bd3a21": "67478f", "6b2100": "403266", - "ffffff": "ffffff", "ef5229": "875cdb", "ffa55a": "a56db5" } diff --git a/public/images/pokemon/variant/247.json b/public/images/pokemon/variant/247.json index c21ea3a3c0e..5ca07bb53c7 100644 --- a/public/images/pokemon/variant/247.json +++ b/public/images/pokemon/variant/247.json @@ -2,11 +2,8 @@ "1": { "295a84": "4a5a39", "bde6ff": "dee6cd", - "101010": "101010", "739cc5": "739c62", "8cc5ef": "accd9c", - "adadad": "adadad", - "ffffff": "ffffff", "b54200": "0098fc" }, "2": { diff --git a/public/images/pokemon/variant/248-mega.json b/public/images/pokemon/variant/248-mega.json index 589b3616079..38bd9b9edce 100644 --- a/public/images/pokemon/variant/248-mega.json +++ b/public/images/pokemon/variant/248-mega.json @@ -1,34 +1,34 @@ { "1": { -"4a5a39": "533334", -"821610": "004194", -"942900": "004194", -"d0243b": "006fb3", -"d55200": "0098fc", -"ff3e40": "0098fc", -"f24159": "088a72", -"f55e72": "18b8a0", -"ff6668": "1cd9ff", -"739c62": "915957", -"ff8385": "00e0fc", -"ffa3a4": "00ffc8", -"accd9c": "c78482", -"dee6cd": "dbb1b5" + "4a5a39": "533334", + "821610": "004194", + "942900": "004194", + "d0243b": "006fb3", + "d55200": "0098fc", + "ff3e40": "0098fc", + "f24159": "088a72", + "f55e72": "18b8a0", + "ff6668": "1cd9ff", + "739c62": "915957", + "ff8385": "00e0fc", + "ffa3a4": "00ffc8", + "accd9c": "c78482", + "dee6cd": "dbb1b5" }, "2": { -"4a5a39": "06092f", -"821610": "ee7b06", -"942900": "ee7b06", -"d0243b": "ffa904", -"d55200": "ffa904", -"ff3e40": "ffef76", -"f24159": "ff9224", -"f55e72": "ffba36", -"ff6668": "fff28f", -"739c62": "2c3071", -"ff8385": "fff49a", -"ffa3a4": "fff9ce", -"accd9c": "625695", -"dee6cd": "7068b2" + "4a5a39": "06092f", + "821610": "ee7b06", + "942900": "ee7b06", + "d0243b": "ffa904", + "d55200": "ffa904", + "ff3e40": "ffef76", + "f24159": "ff9224", + "f55e72": "ffba36", + "ff6668": "fff28f", + "739c62": "2c3071", + "ff8385": "fff49a", + "ffa3a4": "fff9ce", + "accd9c": "625695", + "dee6cd": "7068b2" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/248.json b/public/images/pokemon/variant/248.json index a08e0fe55cc..bc35cfd8637 100644 --- a/public/images/pokemon/variant/248.json +++ b/public/images/pokemon/variant/248.json @@ -17,12 +17,8 @@ "2": { "4a5a3a": "06092f", "adce9c": "625695", - "101010": "101010", "dee6ce": "7068b2", "739c63": "2c3071", - "ffffff": "ffffff", - "c5c5c5": "c5c5c5", - "737373": "737373", "942900": "ee7b06", "d65200": "ffa904", "217bbd": "ffa904", diff --git a/public/images/pokemon/variant/251.json b/public/images/pokemon/variant/251.json index a26cc859cff..0abf162a72b 100644 --- a/public/images/pokemon/variant/251.json +++ b/public/images/pokemon/variant/251.json @@ -3,7 +3,6 @@ "73a531": "599b91", "a5de52": "9cc6ae", "528cad": "9b296f", - "101010": "101010", "8cb5ce": "d763a0", "0063b5": "681151", "4a7321": "28696a", @@ -11,14 +10,12 @@ "ffffde": "f4e5d9", "b5c55a": "cbc5af", "deef94": "ddd7c2", - "ffffff": "fff5f5", - "6b7384": "6b7384" + "ffffff": "fff5f5" }, "2": { "73a531": "5f234e", "a5de52": "8c387a", "528cad": "b82053", - "101010": "101010", "8cb5ce": "e33d69", "0063b5": "640d3a", "4a7321": "3f0e2a", diff --git a/public/images/pokemon/variant/255.json b/public/images/pokemon/variant/255.json index 78d2d1d13dd..5a950c8c19f 100644 --- a/public/images/pokemon/variant/255.json +++ b/public/images/pokemon/variant/255.json @@ -3,26 +3,22 @@ "ad8c00": "298084", "efbd31": "34ad90", "f7de6b": "58dfa5", - "000000": "000000", "ad4210": "b93a23", "ff8c31": "ff9039", "e65a21": "e86434", "ffad52": "ffde8e", "7b4a19": "6f1214", - "ffffff": "ffffff", "8c5221": "1d5461" }, "2": { "ad8c00": "550d28", "efbd31": "811c2c", "f7de6b": "ad3633", - "000000": "000000", "ad4210": "b3817d", "ff8c31": "f3e5cf", "e65a21": "d3afa0", "ffad52": "fffef6", "7b4a19": "364464", - "ffffff": "ffffff", "8c5221": "400724" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/256.json b/public/images/pokemon/variant/256.json index 130891974ba..80c0e94444f 100644 --- a/public/images/pokemon/variant/256.json +++ b/public/images/pokemon/variant/256.json @@ -1,16 +1,13 @@ { "1": { "de5a29": "1f9ba4", - "181818": "181818", "ff7b4a": "3dd0b0", "9c3110": "11526f", "9c7329": "a7471f", - "191919": "191919", "efde73": "ffc148", "efbd4a": "f19830", "d63131": "9083aa", "962d0d": "605c8d", - "ffffff": "ffffff", "d05325": "414f7b", "6b6b73": "413d75", "dedece": "9386b8", @@ -21,16 +18,13 @@ }, "2": { "de5a29": "cdb09b", - "181818": "181818", "ff7b4a": "fff7e1", "9c3110": "8a685f", "9c7329": "641835", - "191919": "191919", "efde73": "c4584d", "efbd4a": "962b39", "d63131": "89bed0", "962d0d": "5f7faa", - "ffffff": "ffffff", "d05325": "39487b", "6b6b73": "192132", "dedece": "494f67", diff --git a/public/images/pokemon/variant/257-mega.json b/public/images/pokemon/variant/257-mega.json index e97fd77c50f..c5526ad284c 100644 --- a/public/images/pokemon/variant/257-mega.json +++ b/public/images/pokemon/variant/257-mega.json @@ -4,7 +4,6 @@ "62524a": "55607d", "dedeb4": "f0fbff", "948362": "8095b3", - "010101": "010101", "bdb494": "a8c7da", "832929": "9b422a", "ee6262": "f7ca4b", @@ -23,7 +22,6 @@ "62524a": "5b143d", "dedeb4": "bc474d", "948362": "842446", - "010101": "010101", "bdb494": "a1304d", "832929": "9c7c70", "ee6262": "fffae1", diff --git a/public/images/pokemon/variant/257.json b/public/images/pokemon/variant/257.json index e56213da4a7..7a56c280b91 100644 --- a/public/images/pokemon/variant/257.json +++ b/public/images/pokemon/variant/257.json @@ -1,7 +1,6 @@ { "1": { "b93e3e": "46649c", - "000000": "000000", "bdb594": "a8c7da", "948463": "8095b3", "ee5e5e": "598dc1", diff --git a/public/images/pokemon/variant/261.json b/public/images/pokemon/variant/261.json index ec04e5dbf43..78ff43fa223 100644 --- a/public/images/pokemon/variant/261.json +++ b/public/images/pokemon/variant/261.json @@ -2,7 +2,6 @@ "1": { "636363": "803c2c", "c5c5c5": "d4a172", - "000000": "000000", "a5a5a5": "b26c55", "424242": "380927", "595963": "71231f", @@ -10,15 +9,11 @@ "9c2942": "222d84", "e6193a": "3a56b1", "bd8c42": "a968a1", - "ffffff": "ffffff", - "f7f75a": "c59aaa", - "6b6b84": "6b6b84", - "ff0018": "ff0018" + "f7f75a": "c59aaa" }, "2": { "636363": "24103c", "c5c5c5": "753e93", - "000000": "000000", "a5a5a5": "402067", "424242": "4e9ea3", "595963": "0a0f43", @@ -26,9 +21,6 @@ "9c2942": "182556", "e6193a": "263f74", "bd8c42": "8aa8cd", - "ffffff": "ffffff", - "f7f75a": "bdd9f2", - "6b6b84": "6b6b84", - "ff0018": "ff0018" + "f7f75a": "bdd9f2" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/262.json b/public/images/pokemon/variant/262.json index 3451ee0f16f..f9128d09f4c 100644 --- a/public/images/pokemon/variant/262.json +++ b/public/images/pokemon/variant/262.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "525252": "7a3424", "94949c": "ad5c41", "bdbdc5": "d2975f", @@ -8,16 +7,10 @@ "4d4d4d": "71231f", "4a4a4a": "711956", "de2942": "a32c60", - "f7ef5a": "f7ef5a", - "bd8c42": "bd8c42", "ad1021": "761b51", - "323232": "5a1c15", - "bd4a7b": "bd4a7b", - "ffffff": "ffffff", - "949cad": "949cad" + "323232": "5a1c15" }, "2": { - "000000": "000000", "525252": "230f3b", "94949c": "402067", "bdbdc5": "753e93", @@ -28,9 +21,6 @@ "f7ef5a": "ffb98c", "bd8c42": "d36b58", "ad1021": "45809a", - "323232": "0a0b3d", - "bd4a7b": "bd4a7b", - "ffffff": "ffffff", - "949cad": "949cad" + "323232": "0a0b3d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/263.json b/public/images/pokemon/variant/263.json index f470554de32..3529755bb82 100644 --- a/public/images/pokemon/variant/263.json +++ b/public/images/pokemon/variant/263.json @@ -3,23 +3,18 @@ "bdad9c": "be94bb", "e6dece": "e1c7dc", "73635a": "481f4e", - "000000": "000000", "b59c8c": "8e588f", "947b6b": "85355a", "5a524a": "3c1332", "424242": "52283f", - "ffffff": "ffffff", "524231": "1795be", "6b5231": "41f3ff", - "212129": "311737", - "a51900": "a51900", - "c5c5bd": "c5c5bd" + "212129": "311737" }, "2": { "bdad9c": "3d2661", "e6dece": "5f4e9c", "73635a": "29155a", - "000000": "000000", "b59c8c": "aebcff", "947b6b": "7e86d2", "5a524a": "1e133e", @@ -28,7 +23,6 @@ "524231": "d0037a", "6b5231": "ff429b", "212129": "31134d", - "a51900": "d0037a", - "c5c5bd": "c5c5bd" + "a51900": "d0037a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/264.json b/public/images/pokemon/variant/264.json index 54bbcffec10..b6719a37f15 100644 --- a/public/images/pokemon/variant/264.json +++ b/public/images/pokemon/variant/264.json @@ -1,28 +1,22 @@ { "1": { "6b6363": "481f4e", - "000000": "000000", "846b5a": "85355a", "ad9c8c": "be94bb", "decebd": "e1c7dc", "a58c7b": "8e588f", "5a4a3a": "59193d", - "423a21": "423a21", "296b94": "1795be", - "ffffff": "ffffff", "6badc5": "41f3ff", - "94847b": "643369", - "737373": "737373" + "94847b": "643369" }, "2": { "6b6363": "1e133e", - "000000": "000000", "846b5a": "90a2f4", "ad9c8c": "3d2661", "decebd": "5f4e9c", "a58c7b": "535db9", "5a4a3a": "465aab", - "423a21": "423a21", "296b94": "d0037a", "ffffff": "ffe6e2", "6badc5": "ff429b", diff --git a/public/images/pokemon/variant/2670.json b/public/images/pokemon/variant/2670.json index a2a1fde327e..028e17e4966 100644 --- a/public/images/pokemon/variant/2670.json +++ b/public/images/pokemon/variant/2670.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "666161": "516378", "403d3d": "222547", "802d2d": "302a9c", @@ -15,7 +14,6 @@ "fffbfb": "f8f4f4" }, "2": { - "101010": "101010", "666161": "fff9f2", "403d3d": "b5c6c3", "802d2d": "20877a", diff --git a/public/images/pokemon/variant/278.json b/public/images/pokemon/variant/278.json index 201aa0450ab..543b44e764b 100644 --- a/public/images/pokemon/variant/278.json +++ b/public/images/pokemon/variant/278.json @@ -1,7 +1,6 @@ { "0": { "525252": "542b2b", - "000000": "000000", "ffffff": "ecd8d4", "d6cee6": "ba928c", "296b94": "3f4c13", @@ -16,7 +15,6 @@ }, "1": { "525252": "2b3e68", - "000000": "000000", "ffffff": "c7dff4", "d6cee6": "80a2d0", "296b94": "143a72", @@ -31,7 +29,6 @@ }, "2": { "525252": "732a22", - "000000": "000000", "ffffff": "f5e1d1", "d6cee6": "d19e92", "296b94": "5d0803", diff --git a/public/images/pokemon/variant/279.json b/public/images/pokemon/variant/279.json index 5c193f7939b..f33224e222b 100644 --- a/public/images/pokemon/variant/279.json +++ b/public/images/pokemon/variant/279.json @@ -46,4 +46,4 @@ "ced6ef": "d19e92", "31638c": "610f0e" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/282.json b/public/images/pokemon/variant/282.json index 87d890934fa..7b2fcc28f6b 100644 --- a/public/images/pokemon/variant/282.json +++ b/public/images/pokemon/variant/282.json @@ -5,12 +5,10 @@ "8ce68c": "ebc984", "73bd73": "c08f44", "7b8cb5": "d59c80", - "000000": "000000", "efefff": "f8efde", "cecee6": "ffc4a6", "d64a73": "da3e4f", "ff7b94": "ca2033", - "ffffff": "ffffff", "a5b5ce": "d59c80", "84294a": "b80e2f" }, @@ -19,14 +17,8 @@ "b5f794": "5b5790", "8ce68c": "3f427f", "73bd73": "282c5d", - "7b8cb5": "7b8cb5", - "000000": "000000", - "efefff": "efefff", - "cecee6": "cecee6", "d64a73": "d846c1", "ff7b94": "ed50f7", - "ffffff": "ffffff", - "a5b5ce": "a5b5ce", "84294a": "9e2a7c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/285.json b/public/images/pokemon/variant/285.json index ec433b12e77..d23c9adaa31 100644 --- a/public/images/pokemon/variant/285.json +++ b/public/images/pokemon/variant/285.json @@ -1,21 +1,16 @@ { "1": { - "73634a": "73634a", - "5a4a42": "5a4a42", "efd6b5": "efc4b5", - "000000": "000000", "c5a584": "c59584", "94b57b": "b57bad", "c5c594": "c394c5", "849c7b": "9c7b9b", - "f7efd6": "f7efd6", "526b42": "6b425f" }, "2": { "73634a": "575370", "5a4a42": "3e3651", "efd6b5": "e3ded8", - "000000": "000000", "c5a584": "b7ada2", "94b57b": "3e6f96", "c5c594": "6b9ab6", diff --git a/public/images/pokemon/variant/286.json b/public/images/pokemon/variant/286.json index c1908f97269..4a3f8a18157 100644 --- a/public/images/pokemon/variant/286.json +++ b/public/images/pokemon/variant/286.json @@ -5,14 +5,10 @@ "639452": "945291", "84213a": "842155", "f7636b": "f763ca", - "000000": "000000", "bd314a": "bd31b7", "b59c7b": "b5857b", "634a3a": "63573a", - "debd8c": "dea98c", - "fff7bd": "fff7bd", - "f7dead": "f7dead", - "ffffff": "ffffff" + "debd8c": "dea98c" }, "2": { "215231": "102141", @@ -20,13 +16,11 @@ "639452": "244162", "84213a": "43206b", "f7636b": "c763cf", - "000000": "000000", "bd314a": "682a88", "b59c7b": "857367", "634a3a": "6b4b3d", "debd8c": "b7ada2", "fff7bd": "f3eee6", - "f7dead": "e3ded8", - "ffffff": "ffffff" + "f7dead": "e3ded8" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/29.json b/public/images/pokemon/variant/29.json index 1ed0ecf0d99..1e720505aaa 100644 --- a/public/images/pokemon/variant/29.json +++ b/public/images/pokemon/variant/29.json @@ -5,13 +5,10 @@ "d6d6ff": "f28566", "adadce": "c94d40", "efefff": "fed0aa", - "101010": "101010", "bd314a": "2141ac", "ff5242": "386ecf", - "ffffff": "ffffff", "199c94": "668cdd", - "3a6b94": "3750a4", - "dedede": "dedede" + "3a6b94": "3750a4" }, "2": { "424284": "371e5d", @@ -19,12 +16,9 @@ "d6d6ff": "8175d6", "adadce": "6044ac", "efefff": "b0abff", - "101010": "101010", "bd314a": "c54910", "ff5242": "da781a", - "ffffff": "ffffff", "199c94": "e5b471", - "3a6b94": "c77d3a", - "dedede": "dedede" + "3a6b94": "c77d3a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/290.json b/public/images/pokemon/variant/290.json index d290ab1fef2..ad5c4e2cf9b 100644 --- a/public/images/pokemon/variant/290.json +++ b/public/images/pokemon/variant/290.json @@ -1,7 +1,6 @@ { "0": { "427b52": "0e5502", - "000000": "000000", "b5de73": "77ce53", "6b6b63": "803b0b", "73ad5a": "1e7709", @@ -11,14 +10,12 @@ "fffff7": "fff3ba", "524a4a": "692a05", "cedece": "e5af4f", - "634a42": "634a42", "cebd9c": "f7ecd7", "9c8473": "bfa483", "ad947b": "e8d6b6" }, "1": { "427b52": "7a4f7c", - "000000": "000000", "b5de73": "c3b4c0", "6b6b63": "060931", "73ad5a": "886883", @@ -35,7 +32,6 @@ }, "2": { "427b52": "88134e", - "000000": "000000", "b5de73": "d9537b", "6b6b63": "125460", "73ad5a": "ac265e", diff --git a/public/images/pokemon/variant/292.json b/public/images/pokemon/variant/292.json index 13e73ded788..f4ddafc6ff5 100644 --- a/public/images/pokemon/variant/292.json +++ b/public/images/pokemon/variant/292.json @@ -7,7 +7,6 @@ "5a5242": "261846", "deb573": "5f4c7a", "b5945a": "443859", - "101010": "101010", "f7d684": "8467a4", "94847b": "594684", "736b5a": "1a103b", diff --git a/public/images/pokemon/variant/3-gigantamax.json b/public/images/pokemon/variant/3-gigantamax.json index 9b74b1131ba..ee3f7faa822 100644 --- a/public/images/pokemon/variant/3-gigantamax.json +++ b/public/images/pokemon/variant/3-gigantamax.json @@ -9,14 +9,12 @@ "ff7b73": "712f8f", "de4141": "3f1375", "ffbdbd": "a266b0", - "101010": "101010", "107b6a": "9e1976", "105241": "4f2800", "83de7b": "a37707", "2e5529": "38001c", "5a9c39": "705207", "20b49c": "de3592", - "fdfdfd": "fdfdfd", "5ad5c5": "f062a4" }, "2": { @@ -29,14 +27,12 @@ "ff7b73": "9db042", "de4141": "3c8227", "ffbdbd": "e7e385", - "101010": "101010", "107b6a": "d44300", "105241": "381601", "83de7b": "80ced9", "2e5519": "011c38", "5a9c39": "446b94", "20b49c": "fa8405", - "fdfdfd": "fdfdfd", "5ad5c5": "faa405" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/3.json b/public/images/pokemon/variant/3.json index bdcc30edcbf..c9784ba3382 100644 --- a/public/images/pokemon/variant/3.json +++ b/public/images/pokemon/variant/3.json @@ -7,7 +7,6 @@ "debd29": "078a8f", "bd6b31": "168a69", "de4242": "3f1375", - "101010": "101010", "ffef52": "37d6de", "105242": "190038", "107b6b": "9e1976", @@ -15,8 +14,7 @@ "84de7b": "ff745e", "5ad6c5": "f062a4", "2e5519": "38001c", - "21b59c": "de3592", - "ffffff": "ffffff" + "21b59c": "de3592" }, "2": { "843100": "420514", @@ -26,7 +24,6 @@ "debd29": "a30a66", "bd6b31": "852a41", "de4242": "3c8227", - "101010": "101010", "ffef52": "f75ea8", "105242": "381601", "107b6b": "d44300", @@ -34,7 +31,6 @@ "84de7b": "80ced9", "5ad6c5": "faa405", "2e5519": "011c38", - "21b59c": "fa8405", - "ffffff": "ffffff" + "21b59c": "fa8405" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/30.json b/public/images/pokemon/variant/30.json index d7ebdb40b48..0247dcaae0e 100644 --- a/public/images/pokemon/variant/30.json +++ b/public/images/pokemon/variant/30.json @@ -4,31 +4,23 @@ "c5e6ef": "f28566", "3a5a63": "6b1524", "8cc5ce": "c94d40", - "101010": "101010", "193a73": "3750a4", "1063b5": "131f65", "4a84f7": "668cdd", - "ffffff": "ffffff", "c52110": "2141ac", "ff9c8c": "65a4e7", - "ef4a3a": "386ecf", - "d6d6d6": "d6d6d6", - "848484": "848484" + "ef4a3a": "386ecf" }, "2": { "5a94b5": "402489", "c5e6ef": "8175d6", "3a5a63": "260f4a", "8cc5ce": "6044ac", - "101010": "101010", "193a73": "c77d3a", "1063b5": "883f16", "4a84f7": "e5b471", - "ffffff": "ffffff", "c52110": "c54910", "ff9c8c": "f2ae45", - "ef4a3a": "da781a", - "d6d6d6": "d6d6d6", - "848484": "848484" + "ef4a3a": "da781a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/300.json b/public/images/pokemon/variant/300.json index f015beb050f..28961c7d218 100644 --- a/public/images/pokemon/variant/300.json +++ b/public/images/pokemon/variant/300.json @@ -2,7 +2,6 @@ "0": { "9c3142": "66054d", "7b6342": "663d58", - "101010": "101010", "f79cb5": "ff5959", "f7dead": "e5ced2", "efbd7b": "cca3b0", @@ -15,7 +14,6 @@ "1": { "9c3142": "46518c", "7b6342": "996b82", - "101010": "101010", "f79cb5": "adcad8", "f7dead": "ffffff", "efbd7b": "e5ced2", @@ -28,7 +26,6 @@ "2": { "9c3142": "661422", "7b6342": "1f304c", - "101010": "101010", "f79cb5": "e58f67", "f7dead": "b2dfff", "efbd7b": "7a94cc", diff --git a/public/images/pokemon/variant/301.json b/public/images/pokemon/variant/301.json index 89f742731c2..fddd9e82273 100644 --- a/public/images/pokemon/variant/301.json +++ b/public/images/pokemon/variant/301.json @@ -3,45 +3,36 @@ "634a7b": "991657", "422963": "66054d", "a573c5": "ff5959", - "000000": "000000", "8452a5": "cc3359", "e6b563": "cca3b0", "73523a": "663d58", "fff7bd": "f2e6e6", - "52525a": "52525a", "ffde8c": "e5ced2", "f7f7de": "ffffff", - "9c9c9c": "9c9c9c", "ce944a": "996b82" }, "1": { "634a7b": "948eb2", "422963": "65597f", "a573c5": "ffffff", - "000000": "000000", "8452a5": "cecee5", "e6b563": "cc7a7a", "73523a": "66283d", "fff7bd": "ffcccc", - "52525a": "52525a", "ffde8c": "ffbfb2", "f7f7de": "ffffff", - "9c9c9c": "9c9c9c", "ce944a": "994c59" }, "2": { "634a7b": "ea9360", "422963": "a84859", "a573c5": "f9f8a4", - "000000": "000000", "8452a5": "efbd7c", "e6b563": "597ccc", "73523a": "1f304c", "fff7bd": "99d4ff", - "52525a": "52525a", "ffde8c": "79c6ff", "f7f7de": "ffffff", - "9c9c9c": "9c9c9c", "ce944a": "3a498e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/302-mega.json b/public/images/pokemon/variant/302-mega.json index b54dc545c4d..254c56b23fc 100644 --- a/public/images/pokemon/variant/302-mega.json +++ b/public/images/pokemon/variant/302-mega.json @@ -5,7 +5,6 @@ "ff7587": "f45abe", "ffa8b5": "ff8fcf", "393952": "123812", - "000000": "000000", "5a4a94": "416a3d", "aca4f6": "b2ca9b", "cc3f7c": "90177a", @@ -20,7 +19,6 @@ "ff7587": "3aa9de", "ffa8b5": "61d6f2", "393952": "580a16", - "000000": "000000", "5a4a94": "7e141c", "aca4f6": "e0604e", "cc3f7c": "093a89", diff --git a/public/images/pokemon/variant/302.json b/public/images/pokemon/variant/302.json index 1f27fd23c2a..f058d698135 100644 --- a/public/images/pokemon/variant/302.json +++ b/public/images/pokemon/variant/302.json @@ -3,7 +3,6 @@ "5a4a94": "416a3d", "ada5f7": "b2ca9b", "3a3a52": "123812", - "000000": "000000", "8c73d6": "86ad74", "735aad": "5d8853", "84c5d6": "e560b7", @@ -19,7 +18,6 @@ "5a4a94": "7e141c", "ada5f7": "e0604e", "3a3a52": "580a16", - "000000": "000000", "8c73d6": "be3933", "735aad": "9f2123", "84c5d6": "8a7ad6", diff --git a/public/images/pokemon/variant/303-mega.json b/public/images/pokemon/variant/303-mega.json index cb0b81b464b..cc6709b1d14 100644 --- a/public/images/pokemon/variant/303-mega.json +++ b/public/images/pokemon/variant/303-mega.json @@ -1,15 +1,11 @@ { "0": { "363636": "55163b", - "101010": "101010", "9ca494": "e175b4", "737373": "c14c82", "525252": "6f264f", - "7b5a29": "7b5a29", "ffc55a": "e4c997", "de9441": "ad8867", - "f8f8f8": "f8f8f8", - "cdcdcd": "cdcdcd", "9c4a6a": "1f194c", "d583ac": "31296a", "732041": "201434", @@ -18,15 +14,11 @@ }, "1": { "363636": "0e313c", - "101010": "101010", "9ca494": "4fa285", "737373": "347c7d", "525252": "193e49", - "7b5a29": "7b5a29", "ffc55a": "d6c491", "de9441": "bc8a52", - "f8f8f8": "f8f8f8", - "cdcdcd": "cdcdcd", "9c4a6a": "c73323", "d583ac": "ff725a", "732041": "162843", @@ -35,15 +27,12 @@ }, "2": { "363636": "271a58", - "101010": "101010", "9ca494": "ba94e6", "737373": "8a62d0", "525252": "332c76", "7b5a29": "706d80", "ffc55a": "cfc8e4", "de9441": "b1a3ca", - "f8f8f8": "f8f8f8", - "cdcdcd": "cdcdcd", "9c4a6a": "a81931", "d583ac": "f04948", "732041": "2b1c3f", diff --git a/public/images/pokemon/variant/303.json b/public/images/pokemon/variant/303.json index c5d389b45f7..0422a837887 100644 --- a/public/images/pokemon/variant/303.json +++ b/public/images/pokemon/variant/303.json @@ -9,11 +9,9 @@ "525252": "285c66", "9c4a6b": "b53a29", "7b5a29": "6b5424", - "cecece": "cecece", "ffde8c": "e9e1b5", "bd638c": "de4a42", - "d684ad": "ff635a", - "ffffff": "ffffff" + "d684ad": "ff635a" }, "2": { "000000": "101010", @@ -25,10 +23,8 @@ "525252": "5f43b1", "9c4a6b": "b53a29", "7b5a29": "706d80", - "cecece": "cecece", "ffde8c": "f3e4f7", "bd638c": "de4a42", - "d684ad": "ff635a", - "ffffff": "ffffff" + "d684ad": "ff635a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/304.json b/public/images/pokemon/variant/304.json index 7b03cc133f1..e42b49f5e55 100644 --- a/public/images/pokemon/variant/304.json +++ b/public/images/pokemon/variant/304.json @@ -5,7 +5,6 @@ "8c949c": "bca88c", "3a3a4a": "122919", "ffffff": "fff2e5", - "000000": "000000", "316b9c": "8acc0e", "6bbdff": "d6ff42", "525263": "2c4531", @@ -17,7 +16,6 @@ "8c949c": "686dc0", "3a3a4a": "371219", "ffffff": "cdd9fa", - "000000": "000000", "316b9c": "e9a217", "6bbdff": "ffcf47", "525263": "611f26", @@ -29,7 +27,6 @@ "8c949c": "a45f34", "3a3a4a": "192c45", "ffffff": "ffcc7d", - "000000": "000000", "316b9c": "05b1ad", "6bbdff": "2aebcf", "525263": "2c4368", diff --git a/public/images/pokemon/variant/305.json b/public/images/pokemon/variant/305.json index 13ceb93336c..d4b59c61843 100644 --- a/public/images/pokemon/variant/305.json +++ b/public/images/pokemon/variant/305.json @@ -3,7 +3,6 @@ "6b6b7b": "6c5440", "7b8494": "947d63", "ffffff": "fff2e5", - "000000": "000000", "c5ced6": "cbc4a2", "424a52": "825d3f", "9c9cad": "bca88c", @@ -19,7 +18,6 @@ "6b6b7b": "2b265d", "7b8494": "3d3c8c", "ffffff": "cdd9fa", - "000000": "000000", "c5ced6": "91a1e3", "424a52": "433f93", "9c9cad": "686dc0", @@ -35,7 +33,6 @@ "6b6b7b": "722f15", "7b8494": "89441f", "ffffff": "ffcc7d", - "000000": "000000", "c5ced6": "d2954e", "424a52": "7c3619", "9c9cad": "a45f34", diff --git a/public/images/pokemon/variant/306-mega.json b/public/images/pokemon/variant/306-mega.json index d729c252e2d..a36e49283b6 100644 --- a/public/images/pokemon/variant/306-mega.json +++ b/public/images/pokemon/variant/306-mega.json @@ -2,7 +2,6 @@ "0": { "52524a": "15321e", "6a6a6a": "224228", - "101010": "101010", "5a5a62": "4b382a", "acacac": "69ad6c", "838394": "a48d76", @@ -10,14 +9,11 @@ "8b8b8b": "3e6244", "cdcdcd": "cbc4a2", "a4a4ac": "bca88c", - "6abdff": "ff78fa", - "9c3141": "9c3141", - "de5252": "de5252" + "6abdff": "ff78fa" }, "1": { "52524a": "47121b", "6a6a6a": "6e1e26", - "101010": "101010", "5a5a62": "2b265d", "acacac": "d4857c", "838394": "3d3c8c", @@ -32,7 +28,6 @@ "2": { "52524a": "0e213a", "6a6a6a": "1d365e", - "101010": "101010", "5a5a62": "722f15", "acacac": "7d95bf", "838394": "833d19", @@ -40,8 +35,6 @@ "8b8b8b": "385594", "cdcdcd": "d48e3c", "a4a4ac": "a45f34", - "6abdff": "2aebcf", - "9c3141": "9c3141", - "de5252": "de5252" + "6abdff": "2aebcf" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/306.json b/public/images/pokemon/variant/306.json index 931059f334b..935cb607740 100644 --- a/public/images/pokemon/variant/306.json +++ b/public/images/pokemon/variant/306.json @@ -2,7 +2,6 @@ "0": { "848494": "947d63", "5a5a63": "6c5440", - "000000": "000000", "ffffff": "fff2e5", "cecece": "cbc4a2", "a5a5ad": "bca88c", @@ -17,7 +16,6 @@ "1": { "848494": "3d3c8c", "5a5a63": "2b265d", - "000000": "000000", "ffffff": "cdd9fa", "cecece": "91a1e3", "a5a5ad": "686dc0", @@ -32,7 +30,6 @@ "2": { "848494": "89441f", "5a5a63": "722f15", - "000000": "000000", "ffffff": "ffcc7d", "cecece": "d48e3c", "a5a5ad": "a45f34", diff --git a/public/images/pokemon/variant/307.json b/public/images/pokemon/variant/307.json index d3e6a2437f1..2037cf72054 100644 --- a/public/images/pokemon/variant/307.json +++ b/public/images/pokemon/variant/307.json @@ -1,34 +1,25 @@ { "1": { "7b6b6b": "7a5f5f", - "000000": "000000", "e6dede": "deccc3", "b5adad": "9f8383", - "4a4242": "4a4242", - "ffffff": "ffffff", "3a4a5a": "5a2859", "b5d6ff": "f4a8c8", "6bcee6": "ce7bb0", "d65252": "d65287", - "84424a": "84424a", "3a84b5": "7e4377", - "5aa5ce": "b95ba1", - "d65273": "d65273" + "5aa5ce": "b95ba1" }, "2": { "7b6b6b": "314b76", - "000000": "000000", "e6dede": "c2cfdb", "b5adad": "6f89aa", "4a4242": "1e2f52", - "ffffff": "ffffff", "3a4a5a": "113926", "b5d6ff": "7edfb7", "6bcee6": "66c3a3", "d65252": "c067c7", - "84424a": "84424a", "3a84b5": "375a47", - "5aa5ce": "579578", - "d65273": "d65273" + "5aa5ce": "579578" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/308-mega.json b/public/images/pokemon/variant/308-mega.json index 6e8e6fee4d3..556a06deebf 100644 --- a/public/images/pokemon/variant/308-mega.json +++ b/public/images/pokemon/variant/308-mega.json @@ -1,7 +1,6 @@ { "1": { "83414a": "59141d", - "101010": "101010", "8b838b": "5a4357", "b44a5a": "83272c", "e6738b": "a53835", @@ -13,12 +12,10 @@ "a47329": "722966", "f6de83": "ee9bd5", "eebd5a": "ce5cb6", - "00b4e0": "efa360", - "fcfcff": "fcfcff" + "00b4e0": "efa360" }, "2": { "83414a": "461f5d", - "101010": "101010", "8b838b": "445a7e", "b44a5a": "633971", "e6738b": "7d5187", @@ -30,7 +27,6 @@ "a47329": "205a9e", "f6de83": "5abbef", "eebd5a": "3a8dca", - "00b4e0": "3dc7b6", - "fcfcff": "fcfcff" + "00b4e0": "3dc7b6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/308.json b/public/images/pokemon/variant/308.json index 6f974743a6d..dd647a36e72 100644 --- a/public/images/pokemon/variant/308.json +++ b/public/images/pokemon/variant/308.json @@ -1,7 +1,6 @@ { "2": { "84424a": "461f5d", - "101010": "101010", "e6738c": "7d5187", "ef9ca5": "a37aac", "ce5a73": "71467d", @@ -13,7 +12,6 @@ "b54a5a": "633971", "f7de84": "5abbef", "efbd5a": "3a8dca", - "ffffff": "ffffff", "a57329": "205a9e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/309.json b/public/images/pokemon/variant/309.json index 1a0ff287a78..5eb43b65611 100644 --- a/public/images/pokemon/variant/309.json +++ b/public/images/pokemon/variant/309.json @@ -2,30 +2,24 @@ "1": { "846b42": "a50d24", "ffef42": "ff4039", - "101010": "101010", "639c63": "1a3269", "3a5a52": "091545", "b5ef9c": "6692c4", "84d67b": "3e6194", "cea53a": "d11a2d", "63bd63": "314f86", - "bdbdc5": "bdbdc5", - "ffffff": "ffffff", "844a63": "73033e", "e66ba5": "a40e49" }, "2": { "846b42": "b818ab", "ffef42": "ef60c5", - "101010": "101010", "639c63": "a78ab3", "3a5a52": "593c6c", "b5ef9c": "f9e7ee", "84d67b": "d5c1d9", "cea53a": "d03ab2", "63bd63": "c4abcb", - "bdbdc5": "bdbdc5", - "ffffff": "ffffff", "844a63": "5f2971", "e66ba5": "9954a4" } diff --git a/public/images/pokemon/variant/31.json b/public/images/pokemon/variant/31.json index 53f16a10671..77fe31d599d 100644 --- a/public/images/pokemon/variant/31.json +++ b/public/images/pokemon/variant/31.json @@ -4,27 +4,18 @@ "5ab5ce": "bd94c5", "314a4a": "5f366d", "9cd6de": "eed3f3", - "101010": "101010", "c5ad5a": "c5c5a4", "735a29": "73735a", - "ffffff": "ffffff", - "d6cece": "d6cece", - "a52942": "a52942", "efe6a5": "ffffff", - "ce6b6b": "ce6b6b", - "e6ce8c": "e6e6d5", - "ff9c8c": "ff9c8c" + "e6ce8c": "e6e6d5" }, "1": { "638cad": "88241f", "5ab5ce": "be4234", "314a4a": "441327", "9cd6de": "e58060", - "101010": "101010", "c5ad5a": "c29f9a", "735a29": "734b48", - "ffffff": "ffffff", - "d6cece": "d6cece", "a52942": "6c1a33", "efe6a5": "ffede7", "ce6b6b": "b34d28", @@ -36,11 +27,8 @@ "5ab5ce": "5f4897", "314a4a": "210d3b", "9cd6de": "8770c7", - "101010": "101010", "c5ad5a": "eab56b", "735a29": "ad5923", - "ffffff": "ffffff", - "d6cece": "d6cece", "a52942": "1c3666", "efe6a5": "fff6d6", "ce6b6b": "445fd7", diff --git a/public/images/pokemon/variant/310-mega.json b/public/images/pokemon/variant/310-mega.json index ad22fc10dd0..e17f406097b 100644 --- a/public/images/pokemon/variant/310-mega.json +++ b/public/images/pokemon/variant/310-mega.json @@ -1,12 +1,10 @@ { "1": { "8f6841": "630013", - "101010": "101010", "fff06d": "d4302a", "d0a446": "a6101a", "3d4a75": "0d1843", "b50b0b": "c0610e", - "fcfcfc": "fcfcfc", "4b75a1": "1a3269", "f44242": "ffc058", "52a8d4": "3e6194", @@ -15,12 +13,10 @@ }, "2": { "8f6841": "810040", - "101010": "101010", "fff06d": "e545b6", "d0a446": "c32574", "3d4a75": "3f5476", "b50b0b": "4a0698", - "fcfcfc": "fcfcfc", "4b75a1": "6f8caa", "f44242": "893edf", "52a8d4": "c1ddeb", diff --git a/public/images/pokemon/variant/310.json b/public/images/pokemon/variant/310.json index a41c1e0b66d..40110b45014 100644 --- a/public/images/pokemon/variant/310.json +++ b/public/images/pokemon/variant/310.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "736352": "550010", "ffef63": "d7231c", "c5ad5a": "9b0c24", @@ -10,13 +9,10 @@ "639cc5": "284781", "5a84ad": "1a3269", "ce2121": "c0610e", - "ffffff": "ffffff", "ff7373": "ffc058", - "94cede": "5e8fb8", - "bdbde6": "bdbde6" + "94cede": "5e8fb8" }, "2": { - "101010": "101010", "736352": "810040", "ffef63": "e545b6", "c5ad5a": "c32574", @@ -26,9 +22,7 @@ "639cc5": "c4bfd9", "5a84ad": "a399bd", "ce2121": "893edf", - "ffffff": "ffffff", "ff7373": "9663ef", - "94cede": "e2e7f9", - "bdbde6": "bdbde6" + "94cede": "e2e7f9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/311.json b/public/images/pokemon/variant/311.json index 4371be50e3b..474932256f9 100644 --- a/public/images/pokemon/variant/311.json +++ b/public/images/pokemon/variant/311.json @@ -3,36 +3,29 @@ "b53131": "c24e9e", "de4a42": "e070a9", "ef8484": "f89bc2", - "101010": "101010", "ffefb5": "feda99", "7b6352": "c08242", "e6c573": "ebb657", - "b59c63": "c08242", - "ffffff": "ffffff", - "ad4229": "ad4229" + "b59c63": "c08242" }, "1": { "b53131": "b7653c", "de4a42": "d17e4d", "ef8484": "efa772", - "101010": "101010", "ffefb5": "e9f5ff", "7b6352": "7e89bc", "e6c573": "becef1", "b59c63": "7e89bc", - "ffffff": "ffffff", "ad4229": "ac4b1b" }, "2": { "b53131": "b7ac55", "de4a42": "e2dba3", "ef8484": "fbf6e0", - "101010": "101010", "ffefb5": "be4637", "7b6352": "620b05", "e6c573": "891e32", "b59c63": "620b05", - "ffffff": "ffffff", "ad4229": "220400" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/312.json b/public/images/pokemon/variant/312.json index d55b0f800de..8dbb8503a8c 100644 --- a/public/images/pokemon/variant/312.json +++ b/public/images/pokemon/variant/312.json @@ -2,12 +2,10 @@ "1": { "4252de": "533bb0", "739cf7": "c5ade5", - "101010": "101010", "5a84ef": "8f6cd0", "ffefb5": "d7f1ff", "7b7352": "74acac", "b59c63": "93c6da", - "ffffff": "ffffff", "e6c573": "b4dfe5", "a52921": "533bb0", "d64a5a": "8f6cd0" @@ -15,12 +13,10 @@ "2": { "4252de": "7cc5a5", "739cf7": "e6f8ee", - "101010": "101010", "5a84ef": "c4ddd2", "ffefb5": "475aad", "7b7352": "031426", "b59c63": "011f45", - "ffffff": "ffffff", "e6c573": "2e3a7f", "a52921": "031426", "d64a5a": "e6f8ee" diff --git a/public/images/pokemon/variant/315.json b/public/images/pokemon/variant/315.json index 4fb39ab46d1..cb4ffeb75b2 100644 --- a/public/images/pokemon/variant/315.json +++ b/public/images/pokemon/variant/315.json @@ -4,7 +4,6 @@ "3a5229": "0b2337", "a5314a": "9c5910", "a5de73": "4d8393", - "000000": "000000", "f75a84": "d28f31", "ffa5bd": "efc754", "73c55a": "215569", @@ -21,7 +20,6 @@ "3a5229": "2f1c52", "a5314a": "9c2407", "a5de73": "9e76bb", - "000000": "000000", "f75a84": "cb5a1b", "ffa5bd": "ec883b", "73c55a": "764f9c", diff --git a/public/images/pokemon/variant/320.json b/public/images/pokemon/variant/320.json index 51967d7420d..a1e4101e6c1 100644 --- a/public/images/pokemon/variant/320.json +++ b/public/images/pokemon/variant/320.json @@ -5,12 +5,8 @@ "4a84b5": "ce323d", "315a94": "a4172f", "21314a": "510019", - "000000": "000000", - "b5bdc5": "b5bdc5", "6b634a": "6c3f51", - "ffffff": "ffffff", "efd6a5": "ffe6f8", - "848c9c": "848c9c", "ffefce": "ffeef7", "ceb584": "cba6b8", "9c8c63": "986a7a" @@ -21,12 +17,8 @@ "4a84b5": "503769", "315a94": "34224b", "21314a": "1a0a30", - "000000": "000000", - "b5bdc5": "b5bdc5", "6b634a": "4d4056", - "ffffff": "ffffff", "efd6a5": "eed9ef", - "848c9c": "848c9c", "ffefce": "fcebf6", "ceb584": "b7a3bf", "9c8c63": "8c7897" diff --git a/public/images/pokemon/variant/321.json b/public/images/pokemon/variant/321.json index 946b3d5278a..97c17c6df7d 100644 --- a/public/images/pokemon/variant/321.json +++ b/public/images/pokemon/variant/321.json @@ -10,9 +10,7 @@ "d6cede": "d3b5c4", "94adff": "f5796d", "524a4a": "5c263d", - "efe6ff": "ffe6f8", - "101010": "101010", - "29527b": "29527b" + "efe6ff": "ffe6f8" }, "2": { "293a9c": "22123a", @@ -25,8 +23,6 @@ "d6cede": "eed9ef", "94adff": "b484ce", "524a4a": "563564", - "efe6ff": "fcebf6", - "101010": "101010", - "29527b": "29527b" + "efe6ff": "fcebf6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/327.json b/public/images/pokemon/variant/327.json index 14d757e1002..a206d228e4b 100644 --- a/public/images/pokemon/variant/327.json +++ b/public/images/pokemon/variant/327.json @@ -2,7 +2,6 @@ "1": { "7b4231": "0a1b2e", "e6d6a5": "b2dcd7", - "101010": "101010", "735242": "122c3b", "cea573": "6ca9ac", "e66373": "df6341", @@ -13,7 +12,6 @@ "2": { "7b4231": "522014", "e6d6a5": "be5f3c", - "101010": "101010", "735242": "52180f", "cea573": "93381f", "e66373": "de625a", diff --git a/public/images/pokemon/variant/328.json b/public/images/pokemon/variant/328.json index 667a4f50828..23403188ba8 100644 --- a/public/images/pokemon/variant/328.json +++ b/public/images/pokemon/variant/328.json @@ -4,25 +4,17 @@ "ff947b": "ffffbc", "ef7342": "c9da97", "734242": "254226", - "212121": "212121", - "292929": "292929", "cecec5": "e99339", - "ffffff": "ffffff", "a5ada5": "bc6427", - "848484": "89370b", - "424231": "424231" + "848484": "89370b" }, "2": { "c55a4a": "3e9cb7", "ff947b": "84f6e4", "ef7342": "5dd7db", "734242": "17465e", - "212121": "212121", - "292929": "292929", "cecec5": "e4a056", - "ffffff": "ffffff", "a5ada5": "cd7537", - "848484": "a84e20", - "424231": "424231" + "848484": "a84e20" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/329.json b/public/images/pokemon/variant/329.json index 48f3d8d04d6..25117a4e0d4 100644 --- a/public/images/pokemon/variant/329.json +++ b/public/images/pokemon/variant/329.json @@ -9,8 +9,6 @@ "737352": "1e4320", "bdad7b": "89af58", "e6d68c": "b6cd74", - "bdbdde": "bdbdde", - "ffffff": "ffffff", "ffffa5": "f0f088", "94de84": "fdfb89" } diff --git a/public/images/pokemon/variant/330.json b/public/images/pokemon/variant/330.json index 71dfe226dfc..9d7bde24554 100644 --- a/public/images/pokemon/variant/330.json +++ b/public/images/pokemon/variant/330.json @@ -3,13 +3,11 @@ "84293a": "752d0c", "315a5a": "7a4205", "de6373": "e99339", - "101010": "101010", "6ba573": "d8b430", "5a7b52": "8b6009", "ce3a4a": "bc6427", "94d69c": "f6e85f", "b5de73": "e4ee9e", - "ffffff": "ffffff", "ffa5b5": "f5cd2d", "8ca552": "b3c46a", "84bd63": "8aa963", @@ -20,13 +18,11 @@ "84293a": "a84e20", "315a5a": "171997", "de6373": "f79021", - "101010": "101010", "6ba573": "465fd4", "5a7b52": "2836af", "ce3a4a": "cd7537", "94d69c": "80a1f5", "b5de73": "94e3ff", - "ffffff": "ffffff", "ffa5b5": "ffd52c", "8ca552": "4dabe8", "84bd63": "3587a9", diff --git a/public/images/pokemon/variant/333.json b/public/images/pokemon/variant/333.json index ca25669dfcb..a3df7bf0e4c 100644 --- a/public/images/pokemon/variant/333.json +++ b/public/images/pokemon/variant/333.json @@ -7,9 +7,7 @@ "cecee6": "5251bd", "7bceff": "e9d9fa", "63ade6": "cab1ec", - "101010": "101010", - "848494": "392166", - "5a5a73": "5a5a73" + "848494": "392166" }, "2": { "9c9cc5": "bf6744", @@ -19,8 +17,6 @@ "cecee6": "eb9d6a", "7bceff": "ff9ebd", "63ade6": "e677a5", - "101010": "101010", - "848494": "892f26", - "5a5a73": "5a5a73" + "848494": "892f26" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/334-mega.json b/public/images/pokemon/variant/334-mega.json index dff8102c90b..67a27b7e7a8 100644 --- a/public/images/pokemon/variant/334-mega.json +++ b/public/images/pokemon/variant/334-mega.json @@ -11,7 +11,6 @@ "c1e8f4": "ff93ac", "deadc4": "c63057", "a4889f": "7c103a", - "ffc5ee": "e7536d", - "101010": "101010" + "ffc5ee": "e7536d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/336.json b/public/images/pokemon/variant/336.json index bcdd68e2035..45fb50d25eb 100644 --- a/public/images/pokemon/variant/336.json +++ b/public/images/pokemon/variant/336.json @@ -9,11 +9,9 @@ "3a4252": "4c2e57", "735a94": "908ea4", "a573e6": "d5cce0", - "000000": "000000", "631919": "20525a", "ad423a": "2d6a77", "d6524a": "108bac", - "ffffff": "ffffff", "de4252": "60bdd6" }, "2": { @@ -26,11 +24,9 @@ "3a4252": "acb4cd", "735a94": "b43952", "a573e6": "e6628b", - "000000": "000000", "631919": "192121", "ad423a": "293131", "d6524a": "5a6262", - "ffffff": "ffffff", "de4252": "8b9494" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/337.json b/public/images/pokemon/variant/337.json index 4681d4cd48d..bb48121d2b8 100644 --- a/public/images/pokemon/variant/337.json +++ b/public/images/pokemon/variant/337.json @@ -5,7 +5,6 @@ "efde8c": "8396a8", "846b42": "161617", "cebd6b": "505c71", - "101010": "101010", "3a423a": "20282b", "841029": "611267", "d65a73": "ec40c7", @@ -17,7 +16,6 @@ "efde8c": "a63c22", "846b42": "2f0616", "cebd6b": "8a1211", - "101010": "101010", "3a423a": "341413", "841029": "08adad", "d65a73": "73ffff", diff --git a/public/images/pokemon/variant/338.json b/public/images/pokemon/variant/338.json index d511e24c4a3..827850a08bf 100644 --- a/public/images/pokemon/variant/338.json +++ b/public/images/pokemon/variant/338.json @@ -1,7 +1,6 @@ { "1": { "634a19": "2b272d", - "101010": "101010", "f7e663": "8d8b7f", "deb519": "605a4a", "c59442": "404042", @@ -16,7 +15,6 @@ }, "2": { "634a19": "80849a", - "101010": "101010", "f7e663": "dbe4ee", "deb519": "b1becb", "c59442": "96a2ae", diff --git a/public/images/pokemon/variant/339.json b/public/images/pokemon/variant/339.json index fb1ecc7e5b7..a1040be47d3 100644 --- a/public/images/pokemon/variant/339.json +++ b/public/images/pokemon/variant/339.json @@ -3,7 +3,6 @@ "315a84": "764c27", "1073ad": "8f612a", "31b5e6": "bba665", - "000000": "000000", "63cef7": "ebd48e", "293142": "3e1e1e", "525252": "322c22", @@ -16,9 +15,7 @@ "315a84": "402769", "1073ad": "762c9f", "31b5e6": "ff7bcd", - "000000": "000000", "63cef7": "fbabcc", - "293142": "293142", "525252": "413aad", "d6d6de": "aaffd5", "bdbdc5": "5bd5d5", diff --git a/public/images/pokemon/variant/340.json b/public/images/pokemon/variant/340.json index e53a744da32..d6fc747d6f9 100644 --- a/public/images/pokemon/variant/340.json +++ b/public/images/pokemon/variant/340.json @@ -6,14 +6,12 @@ "29314a": "302322", "84deff": "e27f9f", "73ade6": "bd5f55", - "000000": "000000", "3a4a9c": "443636", "637bce": "856d6d", "4263b5": "655050", "adb584": "d7ac74", "6384bd": "885b57", "7bb5e6": "885b57", - "ffffff": "ffffff", "ce4a5a": "9360c1" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/35.json b/public/images/pokemon/variant/35.json index c229263e3d7..f00e064f41a 100644 --- a/public/images/pokemon/variant/35.json +++ b/public/images/pokemon/variant/35.json @@ -6,10 +6,8 @@ "ffd6bd": "c7a1e4", "5a3121": "20475b", "9c8473": "72899d", - "101010": "101010", "ffadad": "9786e3", "949494": "40496b", - "ffffff": "ffffff", "ef423a": "ed9abb", "b53a29": "a14795" } diff --git a/public/images/pokemon/variant/351-rainy.json b/public/images/pokemon/variant/351-rainy.json index 426db252603..27494952faa 100644 --- a/public/images/pokemon/variant/351-rainy.json +++ b/public/images/pokemon/variant/351-rainy.json @@ -1,16 +1,11 @@ { "0": { "526384": "527384", - "8ccede": "8ccede", - "84b5c5": "84b5c5", - "3a425a": "3a425a", - "ffffff": "ffffff", "6373bd": "379aa9", "94b5ce": "5fd4b5", "738cd6": "48c2b4", "ceeff7": "79ff5e", "5a5a52": "4f555a", - "191919": "191919", "b5c5de": "85de7e", "c5c5c5": "9db4c5", "948c94": "6b8494" diff --git a/public/images/pokemon/variant/351-snowy.json b/public/images/pokemon/variant/351-snowy.json index a5d57b3d9b0..bb28819e69c 100644 --- a/public/images/pokemon/variant/351-snowy.json +++ b/public/images/pokemon/variant/351-snowy.json @@ -1,17 +1,10 @@ { "0": { - "73a58c": "73a58c", "bde6e6": "bee3e6", - "8ccead": "8ccead", - "29523a": "29523a", - "52736b": "52736b", - "191919": "191919", "634a73": "4a4a73", "8c73d6": "738cd6", "c5b5ff": "f7ff7e", "7b52bd": "5260bd", - "4a524a": "4a524a", - "ffffff": "ffffff", "9c9cc5": "c8c87a" }, "1": { @@ -20,14 +13,10 @@ "8ccead": "c4dcdc", "29523a": "335c68", "52736b": "688e94", - "191919": "191919", "634a73": "1f2567", "8c73d6": "3f59a0", - "c5b5ff": "c5b5ff", "7b52bd": "323e85", - "4a524a": "2f3355", - "ffffff": "ffffff", - "9c9cc5": "9c9cc5" + "4a524a": "2f3355" }, "2": { "73a58c": "245b68", @@ -35,13 +24,11 @@ "8ccead": "47989e", "29523a": "15364b", "52736b": "5e98a5", - "191919": "191919", "634a73": "2f4954", "8c73d6": "b6e7e8", "c5b5ff": "535c85", "7b52bd": "7eafbf", "4a524a": "27255c", - "ffffff": "ffffff", "9c9cc5": "464d85" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/351-sunny.json b/public/images/pokemon/variant/351-sunny.json index bbee6a647bf..a35a050752d 100644 --- a/public/images/pokemon/variant/351-sunny.json +++ b/public/images/pokemon/variant/351-sunny.json @@ -6,7 +6,6 @@ "ffffff": "f0dee7", "d6844a": "d6994a", "ff9c42": "ff566c", - "191919": "191919", "ef7b4a": "ff566c", "fff76b": "ffb282", "ce5a4a": "bf4b6a", diff --git a/public/images/pokemon/variant/352.json b/public/images/pokemon/variant/352.json index a265711a49c..24e7d7960b9 100644 --- a/public/images/pokemon/variant/352.json +++ b/public/images/pokemon/variant/352.json @@ -2,24 +2,20 @@ "0": { "8c7b5a": "824c0b", "42635a": "296161", - "000000": "000000", "f7ef7b": "f7dd7b", "5abd73": "5db5a8", "5a9473": "418b87", "dec55a": "e5b740", "bda552": "cd9a2b", - "c5de7b": "c5de7b", "7bd684": "7bd6b4", "a5ef9c": "9cefbc", "a54284": "296389", "73315a": "0e3354", - "d663ad": "54a3ca", - "ffffff": "ffffff" + "d663ad": "54a3ca" }, "1": { "8c7b5a": "7b2577", "42635a": "762f0f", - "000000": "000000", "f7ef7b": "ed7cd8", "5abd73": "c98640", "5a9473": "a7612a", @@ -30,13 +26,11 @@ "a5ef9c": "ffd577", "a54284": "3d48b2", "73315a": "202065", - "d663ad": "8597d6", - "ffffff": "ffffff" + "d663ad": "8597d6" }, "2": { "8c7b5a": "307855", "42635a": "58214c", - "000000": "000000", "f7ef7b": "affec6", "5abd73": "d775b5", "5a9473": "b45599", @@ -47,7 +41,6 @@ "a5ef9c": "ffd2ee", "a54284": "64152b", "73315a": "400e2a", - "d663ad": "ab2f43", - "ffffff": "ffffff" + "d663ad": "ab2f43" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/353.json b/public/images/pokemon/variant/353.json index 09a77ba1f2b..c3ba675384e 100644 --- a/public/images/pokemon/variant/353.json +++ b/public/images/pokemon/variant/353.json @@ -1,7 +1,6 @@ { "1": { "635a8c": "9c4572", - "000000": "000000", "a5add6": "e2a8b2", "8484ad": "d57b96", "3a4a7b": "5c203e", @@ -17,7 +16,6 @@ }, "2": { "635a8c": "487c5d", - "000000": "000000", "a5add6": "b8c2a8", "8484ad": "93aa7f", "3a4a7b": "1d4547", diff --git a/public/images/pokemon/variant/354-mega.json b/public/images/pokemon/variant/354-mega.json index a781dfe624c..25e03fcfe31 100644 --- a/public/images/pokemon/variant/354-mega.json +++ b/public/images/pokemon/variant/354-mega.json @@ -3,7 +3,6 @@ "4d464f": "592145", "523900": "361a2d", "7c777d": "934861", - "010101": "010101", "d59c39": "7d656d", "eebd5a": "b78d90", "7b5a29": "624858", @@ -12,14 +11,12 @@ "918c92": "b0697b", "d74477": "37838b", "ea7bb6": "73bdbd", - "f9f9f9": "f9f9f9", "80313d": "1c4d5d" }, "2": { "4d464f": "5b777b", "523900": "151433", "7c777d": "9cbf81", - "010101": "010101", "d59c39": "3b3d54", "eebd5a": "4d4f5b", "7b5a29": "292941", diff --git a/public/images/pokemon/variant/354.json b/public/images/pokemon/variant/354.json index f51713573a2..50a835ce22b 100644 --- a/public/images/pokemon/variant/354.json +++ b/public/images/pokemon/variant/354.json @@ -4,11 +4,9 @@ "3a3142": "2e0920", "9c9ca5": "934861", "7b7b84": "6c2f4c", - "000000": "000000", "b5adbd": "b0697b", "ad293a": "00667f", "c5425a": "1697a6", - "ffffff": "ffffff", "e66373": "6bc1c9", "523a00": "361a2d", "a57b10": "715568", @@ -21,7 +19,6 @@ "3a3142": "2b454a", "9c9ca5": "9ed18a", "7b7b84": "84bd95", - "000000": "000000", "b5adbd": "cbeab9", "ad293a": "4f0209", "c5425a": "751a1c", diff --git a/public/images/pokemon/variant/357.json b/public/images/pokemon/variant/357.json index a731ebf1aed..00bcf93bbde 100644 --- a/public/images/pokemon/variant/357.json +++ b/public/images/pokemon/variant/357.json @@ -5,7 +5,6 @@ "52ad52": "f5c266", "3a8c4a": "e58b48", "6bc56b": "ffeeae", - "ffffff": "ffffff", "523a31": "754a30", "947352": "eeccab", "b5946b": "ffefd5", @@ -18,12 +17,10 @@ "ffff6b": "b5feff" }, "2": { - "000000": "000000", "216321": "101121", "52ad52": "2d3c5c", "3a8c4a": "1f2547", "6bc56b": "48637c", - "ffffff": "ffffff", "523a31": "28345c", "947352": "45899e", "b5946b": "78c9c9", diff --git a/public/images/pokemon/variant/358.json b/public/images/pokemon/variant/358.json index fcca3087804..918899dd73a 100644 --- a/public/images/pokemon/variant/358.json +++ b/public/images/pokemon/variant/358.json @@ -5,7 +5,6 @@ "ffe694": "faedcd", "ffd65a": "ebd4b0", "000000": "101010", - "ffffff": "ffffff", "424a6b": "29346b", "c5e6ff": "afadcd", "9cc5e6": "888ab1", @@ -21,7 +20,6 @@ "ffe694": "f4c89d", "ffd65a": "ee9b65", "000000": "101010", - "ffffff": "ffffff", "424a6b": "5b4950", "c5e6ff": "e8d6d6", "9cc5e6": "c29ea6", diff --git a/public/images/pokemon/variant/36.json b/public/images/pokemon/variant/36.json index 81d6431641d..c307da0c807 100644 --- a/public/images/pokemon/variant/36.json +++ b/public/images/pokemon/variant/36.json @@ -2,7 +2,6 @@ "1": { "52423a": "335566", "de6363": "6638a6", - "101010": "101010", "7b6b63": "617c91", "ffc5b5": "b098e3", "8c4a52": "382275", @@ -10,7 +9,6 @@ "52314a": "3c4259", "d67ba5": "4ca49c", "bd5a7b": "427273", - "ffffff": "ffffff", "d67b8c": "7e62cc", "de3a5a": "db74ab", "848484": "4d5f9d" @@ -18,17 +16,13 @@ "2": { "52423a": "59435c", "de6363": "958fe6", - "101010": "101010", "7b6b63": "ab6f83", "ffc5b5": "e5faf2", "8c4a52": "7e4b9c", "ef9494": "abcbff", - "52314a": "52314a", "d67ba5": "f5c4e0", "bd5a7b": "d1829b", - "ffffff": "ffffff", "d67b8c": "958fe6", - "de3a5a": "ed746f", - "848484": "848484" + "de3a5a": "ed746f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/361.json b/public/images/pokemon/variant/361.json index a3ea63cc61a..268ee73604d 100644 --- a/public/images/pokemon/variant/361.json +++ b/public/images/pokemon/variant/361.json @@ -4,24 +4,19 @@ "94634a": "851d63", "ffefa5": "f5a4c6", "efc56b": "c36193", - "000000": "000000", "ff735a": "ffe7b2", "3a3131": "2e161b", "4a4a4a": "4b2d2d", "b55a31": "ddb478", "737373": "5c413e", "8cd6ff": "ffd1a9", - "4294d6": "dd6f2c", - "dedede": "dedede", - "ffffff": "ffffff", - "b5adad": "b5adad" + "4294d6": "dd6f2c" }, "2": { "ce8c5a": "0f2b0d", "94634a": "08250b", "ffefa5": "5f884c", "efc56b": "1f4419", - "000000": "000000", "ff735a": "071f12", "3a3131": "2c3e38", "4a4a4a": "8c9f94", diff --git a/public/images/pokemon/variant/362-mega.json b/public/images/pokemon/variant/362-mega.json index 9352e485dc6..b3f4144f46f 100644 --- a/public/images/pokemon/variant/362-mega.json +++ b/public/images/pokemon/variant/362-mega.json @@ -17,7 +17,6 @@ "20315e": "460025" }, "2": { - "010101": "010101", "2b74a8": "0c4b3a", "bbeeff": "5ce11a", "393941": "221315", diff --git a/public/images/pokemon/variant/369.json b/public/images/pokemon/variant/369.json index 1be34201a4b..9c1c0339ac7 100644 --- a/public/images/pokemon/variant/369.json +++ b/public/images/pokemon/variant/369.json @@ -4,7 +4,6 @@ "efcea5": "757e99", "ceb594": "4b5368", "52423a": "16181d", - "000000": "000000", "524242": "91603c", "b59c9c": "fcbc8e", "8c734a": "282f41", @@ -21,7 +20,6 @@ "efcea5": "85a558", "ceb594": "6b8745", "52423a": "4b523a", - "000000": "000000", "524242": "21234a", "b59c9c": "5459a2", "8c734a": "42532c", diff --git a/public/images/pokemon/variant/37.json b/public/images/pokemon/variant/37.json index e82a2f00914..447b7cb09e5 100644 --- a/public/images/pokemon/variant/37.json +++ b/public/images/pokemon/variant/37.json @@ -6,12 +6,10 @@ "5a3100": "511f4c", "f7bd7b": "f2b4e4", "e6946b": "dc91d5", - "101010": "101010", "845231": "743a67", "ff945a": "c18fcf", "bd735a": "ba6cbd", "a57342": "865175", - "ffffff": "ffffff", "ffe6b5": "e8e0d1", "ffde94": "d4c5b6" }, @@ -22,12 +20,10 @@ "5a3100": "100f1b", "f7bd7b": "68689f", "e6946b": "45457c", - "101010": "101010", "845231": "1b1b47", "ff945a": "a8516c", "bd735a": "33325e", "a57342": "2a3457", - "ffffff": "ffffff", "ffe6b5": "d8e4e8", "ffde94": "9fb3c1" } diff --git a/public/images/pokemon/variant/370.json b/public/images/pokemon/variant/370.json index 946ff2d9385..10c1dc5613c 100644 --- a/public/images/pokemon/variant/370.json +++ b/public/images/pokemon/variant/370.json @@ -3,11 +3,9 @@ "a56b52": "3b766b", "733a31": "173f3d", "ffc5d6": "a1edc6", - "000000": "000000", "f794b5": "82d7b4", "e6739c": "52a08a", "314aad": "a1221e", - "ffffff": "ffffff", "295af7": "e36f50", "e6adde": "d6e1e0", "c5738c": "235b57", @@ -17,7 +15,6 @@ "a56b52": "49529f", "733a31": "2b3179", "ffc5d6": "bfcded", - "000000": "000000", "f794b5": "9dadd9", "e6739c": "6b7cbc", "314aad": "6c1e4a", diff --git a/public/images/pokemon/variant/371.json b/public/images/pokemon/variant/371.json index bf2eeace213..e312d9ba79d 100644 --- a/public/images/pokemon/variant/371.json +++ b/public/images/pokemon/variant/371.json @@ -4,33 +4,25 @@ "4a5263": "4f342a", "f7f7ff": "fff8ec", "d6cede": "ead1b5", - "000000": "000000", "a59cb5": "bc997e", "5a84ad": "a8662e", "efde6b": "375794", - "ffffff": "ffffff", "bda573": "28407d", "63ade6": "d19656", "94d6ff": "efc687", - "847352": "2e4688", - "9c4219": "9c4219", - "d67342": "d67342" + "847352": "2e4688" }, "2": { "849494": "89624e", "4a5263": "55111e", "f7f7ff": "f4ecd1", "d6cede": "eacb8e", - "000000": "000000", "a59cb5": "c79961", "5a84ad": "8c2736", "efde6b": "fff9e5", - "ffffff": "ffffff", "bda573": "c79961", "63ade6": "b33c47", "94d6ff": "c7515c", - "847352": "e5cdab", - "9c4219": "9c4219", - "d67342": "d67342" + "847352": "e5cdab" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/372.json b/public/images/pokemon/variant/372.json index b638e142324..ced469a4d09 100644 --- a/public/images/pokemon/variant/372.json +++ b/public/images/pokemon/variant/372.json @@ -1,7 +1,6 @@ { "1": { "525263": "704a3b", - "191919": "191919", "d6d6d6": "ead1b5", "adadb5": "bc997e", "7b7384": "99755e", @@ -9,14 +8,12 @@ "4a423a": "5e2710", "efe663": "61caf7", "7b7b73": "d19656", - "ffffce": "ffffce", "ad2942": "28407d", "63313a": "182759", "bd4252": "375794" }, "2": { "525263": "7b4e2e", - "191919": "191919", "d6d6d6": "f2d9a9", "adadb5": "d0a674", "7b7384": "a16f44", @@ -24,7 +21,6 @@ "4a423a": "501116", "efe663": "ffaf4a", "7b7b73": "b03d48", - "ffffce": "ffffce", "ad2942": "e4d9c0", "63313a": "885b63", "bd4252": "fff9e5" diff --git a/public/images/pokemon/variant/373.json b/public/images/pokemon/variant/373.json index e9338f0a933..c9d64ce41b2 100644 --- a/public/images/pokemon/variant/373.json +++ b/public/images/pokemon/variant/373.json @@ -4,13 +4,11 @@ "de8494": "4572a2", "bd526b": "1c4076", "a53a4a": "132760", - "191919": "191919", "29637b": "66300e", "42849c": "9f5727", "84cee6": "f3be6d", "4aa5ce": "c77939", "adada5": "f1dbc0", - "ffffff": "ffffff", "832041": "66162b", "cb3f51": "ba415d", "d95b6b": "cd5d6b", @@ -22,13 +20,11 @@ "de8494": "fff5fb", "bd526b": "ddc9d5", "a53a4a": "b596ab", - "191919": "191919", "29637b": "310823", "42849c": "420c26", "84cee6": "8b2539", "4aa5ce": "631734", "adada5": "ddbc94", - "ffffff": "ffffff", "832041": "761c6f", "cb3f51": "ae369a", "d95b6b": "d95bb2", diff --git a/public/images/pokemon/variant/374.json b/public/images/pokemon/variant/374.json index a1947b28e06..7e9f119c384 100644 --- a/public/images/pokemon/variant/374.json +++ b/public/images/pokemon/variant/374.json @@ -4,7 +4,6 @@ "424a84": "550611", "94b5ef": "ff795f", "4a6ba5": "851421", - "101010": "101010", "73b5f7": "eb4c43", "ff6b6b": "67ffe2", "844a4a": "13a4c3", @@ -20,7 +19,6 @@ "424a84": "0d4346", "94b5ef": "7ef5d1", "4a6ba5": "1e716e", - "101010": "101010", "73b5f7": "70e1bf", "ff6b6b": "41ed76", "844a4a": "11c23f", diff --git a/public/images/pokemon/variant/375.json b/public/images/pokemon/variant/375.json index 3708ec8f9b3..50925a63629 100644 --- a/public/images/pokemon/variant/375.json +++ b/public/images/pokemon/variant/375.json @@ -1,8 +1,6 @@ { "1": { "636b8c": "8d4010", - "c5c5ce": "c5c5ce", - "101010": "101010", "ffffff": "ffed80", "3a426b": "550611", "9c9cad": "ce7c29", @@ -18,7 +16,6 @@ "2": { "636b8c": "7e280e", "c5c5ce": "eb763d", - "101010": "101010", "ffffff": "ffb752", "3a426b": "0d4346", "9c9cad": "bd582c", diff --git a/public/images/pokemon/variant/376-mega.json b/public/images/pokemon/variant/376-mega.json index 6ec3c34f4b5..a97bec70294 100644 --- a/public/images/pokemon/variant/376-mega.json +++ b/public/images/pokemon/variant/376-mega.json @@ -7,7 +7,6 @@ "736a73": "703b08", "cdcdcd": "ffc753", "a1a1a1": "a76911", - "101010": "101010", "e7e7e7": "ffe07c", "b44100": "8d4010", "e69c00": "ce7c29", @@ -23,7 +22,6 @@ "736a73": "6f2c17", "cdcdcd": "f57e37", "a1a1a1": "9f4219", - "101010": "101010", "e7e7e7": "ffdb64", "b44100": "962c10", "e69c00": "d6632a", diff --git a/public/images/pokemon/variant/376.json b/public/images/pokemon/variant/376.json index 71c925078aa..92eee45c942 100644 --- a/public/images/pokemon/variant/376.json +++ b/public/images/pokemon/variant/376.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "313a63": "550611", "7ba5f7": "ea4037", "4a84c5": "bf2e2d", @@ -16,7 +15,6 @@ "948c94": "a76911" }, "2": { - "101010": "101010", "313a63": "0b3739", "7ba5f7": "67ddbe", "4a84c5": "41b4a1", diff --git a/public/images/pokemon/variant/38.json b/public/images/pokemon/variant/38.json index 0d9c4c3f940..998b005aa2b 100644 --- a/public/images/pokemon/variant/38.json +++ b/public/images/pokemon/variant/38.json @@ -1,11 +1,9 @@ { "1": { "846319": "613260", - "101010": "101010", "e6c552": "ca91ba", "f7e67b": "f0c2dc", "ce9c4a": "b16da0", - "ffffff": "ffffff", "b51000": "3c44d9", "de2110": "368abd", "ff6b29": "3664bd", @@ -14,11 +12,9 @@ }, "2": { "846319": "0b0b2a", - "101010": "101010", "e6c552": "293272", "f7e67b": "3f548b", "ce9c4a": "1a1a52", - "ffffff": "ffffff", "b51000": "e3382d", "de2110": "b83e0e", "ff6b29": "a42920", diff --git a/public/images/pokemon/variant/380-mega.json b/public/images/pokemon/variant/380-mega.json index bf71ded9127..1a0adffe295 100644 --- a/public/images/pokemon/variant/380-mega.json +++ b/public/images/pokemon/variant/380-mega.json @@ -1,27 +1,23 @@ { "1": { "525e61": "9a6853", - "101010": "101010", "d3d9dc": "f3e6df", "a0a7a9": "e3cfc1", "7d8486": "b48f79", "523977": "97440c", "784db9": "b35e17", "9876c6": "d08528", - "fafafa": "fafafa", "cda44a": "6734bf", "ffcd5a": "9b75ff" }, "2": { "525e61": "8d5a8f", - "101010": "101010", "d3d9dc": "eedaea", "a0a7a9": "e4c7e1", "7d8486": "c78ac4", "523977": "2393a2", "784db9": "2cbcbd", "9876c6": "5de2d5", - "fafafa": "fafafa", "cda44a": "dd6800", "ffcd5a": "e88a00" } diff --git a/public/images/pokemon/variant/380.json b/public/images/pokemon/variant/380.json index 1fe2df47529..4468edd6b3a 100644 --- a/public/images/pokemon/variant/380.json +++ b/public/images/pokemon/variant/380.json @@ -2,7 +2,6 @@ "1": { "7b73a5": "896d62", "efefff": "f3e6df", - "000000": "000000", "ceceef": "e3cfc1", "8c294a": "741c00", "ff6363": "cb621c", @@ -10,7 +9,6 @@ "ffa573": "e18459", "bd4242": "8e2c03", "cea54a": "7646e5", - "ffffff": "ffffff", "ffce5a": "9b75ff", "ada5d6": "ac9485", "73adef": "a480f8", @@ -19,7 +17,6 @@ "2": { "7b73a5": "ad5682", "efefff": "f2bddf", - "000000": "000000", "ceceef": "d899bd", "8c294a": "480a81", "ff6363": "9344b8", @@ -27,7 +24,6 @@ "ffa573": "862b99", "bd4242": "5a1e8c", "cea54a": "ab2635", - "ffffff": "ffffff", "ffce5a": "cf3d45", "ada5d6": "c56399", "73adef": "e64c4b", diff --git a/public/images/pokemon/variant/381-mega.json b/public/images/pokemon/variant/381-mega.json index 92cda32e287..50f4cab301e 100644 --- a/public/images/pokemon/variant/381-mega.json +++ b/public/images/pokemon/variant/381-mega.json @@ -1,27 +1,23 @@ { "1": { "525e61": "7e447b", - "101010": "101010", "d3d9dc": "f9cfed", "a0a7a9": "dfa1d2", "7d8486": "b673ad", "523977": "29165d", "784db9": "382a7b", "9876c6": "453c90", - "fafafa": "fafafa", "c5395a": "d05718", "d16f88": "f78232" }, "2": { "525e61": "98485e", - "101010": "101010", "d3d9dc": "f7d9ec", "a0a7a9": "e4abcc", "7d8486": "d086ac", "523977": "52060f", "784db9": "721119", "9876c6": "97241f", - "fafafa": "fafafa", "c5395a": "70309f", "d16f88": "9344b8" } diff --git a/public/images/pokemon/variant/381.json b/public/images/pokemon/variant/381.json index 4ad3ae57555..ed2dde0090b 100644 --- a/public/images/pokemon/variant/381.json +++ b/public/images/pokemon/variant/381.json @@ -4,7 +4,6 @@ "ded6ce": "d6bfc5", "6b636b": "653c7e", "b5b5ad": "c09faa", - "101010": "101010", "dedede": "ecdbde", "9cceff": "87589f", "4a63b5": "3e1f5a", @@ -12,7 +11,6 @@ "293173": "2a0f43", "5273d6": "4f2c6a", "c53a5a": "d05718", - "ffffff": "ffffff", "ff5a52": "f78232" }, "2": { @@ -20,7 +18,6 @@ "ded6ce": "dab1d7", "6b636b": "733e7c", "b5b5ad": "bb8dbb", - "101010": "101010", "dedede": "e9cae4", "9cceff": "f3b070", "4a63b5": "b54800", @@ -28,7 +25,6 @@ "293173": "892300", "5273d6": "ce6700", "c53a5a": "1586bc", - "ffffff": "ffffff", "ff5a52": "16a4c5" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/382-primal.json b/public/images/pokemon/variant/382-primal.json index ec1b34be70f..4ff4763b865 100644 --- a/public/images/pokemon/variant/382-primal.json +++ b/public/images/pokemon/variant/382-primal.json @@ -1,7 +1,6 @@ { "1": { "082a78": "d96714", - "101010": "101010", "768ac4": "ffb44c", "c7eafe": "f6e4e0", "101c4c": "791309", @@ -10,7 +9,6 @@ "fab672": "a2ee62", "fff493": "e1ff9f", "f8d58b": "91d37f", - "64626c": "64626c", "fbfbfb": "fff7f4", "00bfec": "ff3200", "0788d6": "c5253a", @@ -18,7 +16,6 @@ }, "2": { "082a78": "780613", - "101010": "101010", "768ac4": "ea512b", "c7eafe": "f2d9dc", "101c4c": "3c0818", @@ -27,7 +24,6 @@ "fab672": "67a6f4", "fff493": "90ffde", "f8d58b": "5ad6ef", - "64626c": "64626c", "fbfbfb": "ffe9e6", "00bfec": "ffc546", "0788d6": "ea7c18", diff --git a/public/images/pokemon/variant/382.json b/public/images/pokemon/variant/382.json index 0cd69afd0ab..f1ea72f8bf2 100644 --- a/public/images/pokemon/variant/382.json +++ b/public/images/pokemon/variant/382.json @@ -1,7 +1,5 @@ { "1": { - "101010": "101010", - "5a526b": "5a526b", "313a73": "d85c0d", "dedede": "fff7f4", "4a84d6": "ffa938", @@ -17,8 +15,6 @@ "ffce31": "30ff6d" }, "2": { - "101010": "101010", - "5a526b": "5a526b", "313a73": "6a0515", "dedede": "ffe9e6", "4a84d6": "ce3118", diff --git a/public/images/pokemon/variant/383-primal.json b/public/images/pokemon/variant/383-primal.json index da20585cc60..04ff6c48796 100644 --- a/public/images/pokemon/variant/383-primal.json +++ b/public/images/pokemon/variant/383-primal.json @@ -2,29 +2,23 @@ "1": { "9d2929": "11421e", "fe736b": "279930", - "010101": "010101", "fe2129": "2b5b32", "fab672": "ff8571", "fff493": "ffd493", "7c2129": "011e0b", "fe6336": "ff203f", - "272324": "272324", "3f3b3c": "383540", "595355": "625769", - "64626c": "64626c", "fbfbfb": "fff6de", "cdccd0": "e5d4b6" }, "2": { "9d2929": "20516c", "fe736b": "68cfd0", - "010101": "010101", "fe2129": "3e8b9f", "fab672": "61ee93", "fff493": "d2ff93", "7c2129": "0a2c43", - "fe6336": "fe6336", - "272324": "272324", "3f3b3c": "2b3c4e", "595355": "4e5169", "64626c": "7373a6", diff --git a/public/images/pokemon/variant/383.json b/public/images/pokemon/variant/383.json index c3db9af1fec..557f9334795 100644 --- a/public/images/pokemon/variant/383.json +++ b/public/images/pokemon/variant/383.json @@ -1,7 +1,6 @@ { "1": { "7b2129": "032a10", - "000000": "000000", "9c2929": "11421e", "ffbdbd": "35b93b", "ff2129": "2b5b32", @@ -18,7 +17,6 @@ }, "2": { "7b2129": "123953", - "000000": "000000", "9c2929": "20516c", "ffbdbd": "73e7e8", "ff2129": "3e8b9f", diff --git a/public/images/pokemon/variant/384-mega.json b/public/images/pokemon/variant/384-mega.json index d5e3456b6ea..53a3f48844a 100644 --- a/public/images/pokemon/variant/384-mega.json +++ b/public/images/pokemon/variant/384-mega.json @@ -4,7 +4,6 @@ "fc9436": "098faf", "836231": "003082", "f6de00": "17e2d6", - "010101": "010101", "22523e": "650f04", "3d7d6d": "84120f", "c5a400": "0db1b1", @@ -13,7 +12,6 @@ "60d293": "f1785e", "e4b629": "036486", "9c2952": "063f67", - "e65273": "2083e7", - "fcfcfc": "fcfcfc" + "e65273": "2083e7" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/384.json b/public/images/pokemon/variant/384.json index cdd2e3bfbde..69f37d3662c 100644 --- a/public/images/pokemon/variant/384.json +++ b/public/images/pokemon/variant/384.json @@ -4,31 +4,25 @@ "4a8473": "66637b", "5abd8c": "b3aec1", "94deb5": "e4e0ee", - "000000": "000000", "9c2952": "1cb450", "73293a": "0a642c", "846331": "064c1e", "c5a500": "27c750", "f7de00": "4ff869", "e65273": "4cd870", - "ffffff": "ffffff", - "bd638c": "98285b", - "ded6ef": "ded6ef" + "bd638c": "98285b" }, "2": { "295242": "540709", "4a8473": "821815", "5abd8c": "ca4636", "94deb5": "f99365", - "000000": "000000", "9c2952": "117a7a", "73293a": "003082", "846331": "380100", "c5a500": "098faf", "f7de00": "17e2d6", "e65273": "17e2d6", - "ffffff": "ffffff", - "bd638c": "2083e7", - "ded6ef": "ded6ef" + "bd638c": "2083e7" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/385.json b/public/images/pokemon/variant/385.json index 7d3f8636614..21122ae0004 100644 --- a/public/images/pokemon/variant/385.json +++ b/public/images/pokemon/variant/385.json @@ -1,7 +1,6 @@ { "0": { "ad8431": "925108", - "000000": "000000", "ffff94": "f7e980", "ffe65a": "f3bf5c", "e6bd52": "db942d", @@ -10,13 +9,11 @@ "63d6de": "f87d82", "c5cede": "cea9b3", "e6eff7": "ddd4d6", - "ffffff": "ffffff", "6b7373": "6e2d47", "9ca5ad": "965771" }, "1": { "ad8431": "874100", - "000000": "000000", "ffff94": "f7be5d", "ffe65a": "de9128", "e6bd52": "ba670d", @@ -25,13 +22,11 @@ "63d6de": "7dea9b", "c5cede": "decbc5", "e6eff7": "f7ece6", - "ffffff": "ffffff", "6b7373": "816566", "9ca5ad": "ad9d9c" }, "2": { "ad8431": "234664", - "000000": "000000", "ffff94": "b1dbe8", "ffe65a": "6fb6da", "e6bd52": "427aa3", @@ -40,7 +35,6 @@ "63d6de": "f6a5e0", "c5cede": "d6c5de", "e6eff7": "eee6f7", - "ffffff": "ffffff", "6b7373": "7f6581", "9ca5ad": "aa9cad" } diff --git a/public/images/pokemon/variant/387.json b/public/images/pokemon/variant/387.json index 04e2eb81fea..88a87e5d0d4 100644 --- a/public/images/pokemon/variant/387.json +++ b/public/images/pokemon/variant/387.json @@ -5,15 +5,13 @@ "7bd66b": "f5def0", "634a3a": "320a2a", "8c6b42": "511b41", - "000000": "000000", "5a7b42": "320a2a", "b58452": "934974", "94ad5a": "b1516b", "dee68c": "f7a8af", "bdce84": "e37d90", "f7e65a": "8fae94", - "c5bd3a": "4b6b63", - "ffffff": "ffffff" + "c5bd3a": "4b6b63" }, "2": { "3aa542": "d6e1e9", @@ -28,7 +26,6 @@ "dee68c": "958790", "bdce84": "7d6d7a", "f7e65a": "8bcadd", - "c5bd3a": "3875a1", - "ffffff": "ffffff" + "c5bd3a": "3875a1" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/388.json b/public/images/pokemon/variant/388.json index 42702aefa93..f602e9e97b5 100644 --- a/public/images/pokemon/variant/388.json +++ b/public/images/pokemon/variant/388.json @@ -3,7 +3,6 @@ "3a8c42": "e79ac2", "3a5a29": "3b1228", "63b56b": "ffd3f2", - "101019": "101019", "634a3a": "0d2520", "b58452": "3f5e4c", "8c6b42": "19322b", @@ -11,16 +10,12 @@ "efd642": "9cc096", "6b8c4a": "773859", "94ad5a": "954e6c", - "adc563": "b07587", - "ffffff": "ffffff", - "d6d6d6": "d6d6d6", - "949494": "949494" + "adc563": "b07587" }, "2": { "3a8c42": "d6e1e9", "3a5a29": "1c1a1a", "63b56b": "ffffff", - "101019": "101019", "634a3a": "251c3d", "b58452": "2c4a78", "8c6b42": "20284e", @@ -28,9 +23,6 @@ "efd642": "8bcadd", "6b8c4a": "362f2f", "94ad5a": "463d3e", - "adc563": "756667", - "ffffff": "ffffff", - "d6d6d6": "d6d6d6", - "949494": "949494" + "adc563": "756667" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/389.json b/public/images/pokemon/variant/389.json index 799d606ff37..1f7a9efd94e 100644 --- a/public/images/pokemon/variant/389.json +++ b/public/images/pokemon/variant/389.json @@ -3,7 +3,6 @@ "196319": "ba597b", "318c3a": "e799bb", "42ad42": "fddcf6", - "101010": "101010", "a5a5a5": "365f49", "6b737b": "1f4133", "e6e6e6": "8faf89", @@ -18,7 +17,6 @@ "196319": "738d9d", "318c3a": "a7bcc9", "42ad42": "d6e1e9", - "101010": "101010", "a5a5a5": "2c4a78", "6b737b": "20284e", "e6e6e6": "8bcadd", diff --git a/public/images/pokemon/variant/393.json b/public/images/pokemon/variant/393.json index 1449d14b88f..c67dc4f302a 100644 --- a/public/images/pokemon/variant/393.json +++ b/public/images/pokemon/variant/393.json @@ -4,10 +4,8 @@ "104a73": "244941", "318cd6": "44a36b", "6ba5e6": "54c461", - "ffffff": "ffffff", "bdcede": "e2d7a5", "63a5c5": "ce8a56", - "101010": "101010", "9cd6f7": "e8ce81", "637b94": "c68a67", "ad843a": "81899b", @@ -24,7 +22,6 @@ "ffffff": "f4ede8", "bdcede": "ccb9af", "63a5c5": "4a172e", - "101010": "101010", "9cd6f7": "782439", "637b94": "877e78", "ad843a": "368089", diff --git a/public/images/pokemon/variant/394.json b/public/images/pokemon/variant/394.json index 559eaa8b020..05726277fd7 100644 --- a/public/images/pokemon/variant/394.json +++ b/public/images/pokemon/variant/394.json @@ -4,13 +4,11 @@ "ffe684": "bec8d1", "7b5242": "1e202b", "efce63": "81899b", - "101010": "101010", "21426b": "2b544b", "215a94": "338757", "639cf7": "c97d4e", "9cceff": "e8ce81", "deefff": "ffefde", - "ffffff": "ffffff", "3a7bb5": "b24125", "bdcede": "e5dca5", "225c96": "8c2419", @@ -21,7 +19,6 @@ "ffe684": "baf3e4", "7b5242": "265255", "efce63": "82d3d0", - "101010": "101010", "21426b": "c44a7c", "215a94": "f880a0", "639cf7": "670f2f", diff --git a/public/images/pokemon/variant/395.json b/public/images/pokemon/variant/395.json index ad87c323be3..4a3c2cbdf6a 100644 --- a/public/images/pokemon/variant/395.json +++ b/public/images/pokemon/variant/395.json @@ -3,7 +3,6 @@ "bd8c6b": "363b56", "ffe684": "bec8d1", "efce63": "81899b", - "101010": "101010", "103a73": "23603f", "103c75": "7f1711", "528ce6": "cc8043", @@ -16,27 +15,23 @@ "deefff": "cbede1", "73a5ef": "e0b757", "5891e8": "77ba95", - "f9fcfb": "eaf9f4", - "000000": "000000" + "f9fcfb": "eaf9f4" }, "2": { "bd8c6b": "2c7787", "ffe684": "8af3dc", "efce63": "4bb3b1", - "101010": "101010", "103a73": "ffa5b2", "103c75": "32092a", "528ce6": "4f1438", "9cceff": "7e2b44", "4a73ad": "400e30", - "f9fcff": "f9fcff", "295a94": "380b2a", "102142": "da6785", "7b5242": "184555", "deefff": "7e1939", "73a5ef": "641b3c", "5891e8": "962849", - "f9fcfb": "ad2b41", - "000000": "000000" + "f9fcfb": "ad2b41" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/399.json b/public/images/pokemon/variant/399.json index 251f073613e..64538ba2077 100644 --- a/public/images/pokemon/variant/399.json +++ b/public/images/pokemon/variant/399.json @@ -4,7 +4,6 @@ "9c6331": "d46378", "c58c42": "e5a5bb", "634a31": "70323f", - "101010": "101010", "cebd84": "eba978", "ffefbd": "fff5d1", "ffffff": "f7f7f7", @@ -18,13 +17,9 @@ "9c6331": "3e5ca8", "c58c42": "617dda", "634a31": "313d63", - "101010": "101010", "cebd84": "8497ce", "ffefbd": "bdcfff", - "ffffff": "ffffff", "5a4229": "42295a", - "ef5a4a": "4a9bef", - "cec5c5": "cec5c5", - "848484": "848484" + "ef5a4a": "4a9bef" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/4.json b/public/images/pokemon/variant/4.json index a8cdf9d99ac..a4cc504775c 100644 --- a/public/images/pokemon/variant/4.json +++ b/public/images/pokemon/variant/4.json @@ -4,11 +4,9 @@ "8c2900": "0f3234", "ff9442": "26837c", "ffc563": "38bc90", - "101010": "101010", "e63a00": "5033ce", "083a8c": "8e0b25", "198cb5": "c40f0f", - "ffffff": "ffffff", "31adef": "f23113", "ffd608": "e9bfff", "f7a500": "9e59db", @@ -20,11 +18,9 @@ "8c2900": "20346f", "ff9442": "3a78b7", "ffc563": "54a3d8", - "101010": "101010", "e63a00": "4c83d4", "083a8c": "0021a8", "198cb5": "0059ff", - "ffffff": "ffffff", "31adef": "1e8eff", "ffd608": "f9fffa", "f7a500": "96e8e8", diff --git a/public/images/pokemon/variant/400.json b/public/images/pokemon/variant/400.json index 1e1bcaa4d20..3c1412f91bb 100644 --- a/public/images/pokemon/variant/400.json +++ b/public/images/pokemon/variant/400.json @@ -2,13 +2,10 @@ "1": { "5a3a31": "70323f", "bd844a": "dba0ac", - "101010": "101010", "8c5a31": "c46269", "e6d69c": "fff5d1", "ad947b": "bd9171", "c5c5b5": "b7b9d0", - "ffffff": "ffffff", - "3a3129": "3a3129", "63523a": "824561", "de4a4a": "ffa488", "423a31": "3e3040" @@ -16,12 +13,10 @@ "2": { "5a3a31": "313d63", "bd844a": "617dda", - "101010": "101010", "8c5a31": "3e5ca8", "e6d69c": "bdcfff", "ad947b": "8497ce", "c5c5b5": "b5b6c5", - "ffffff": "ffffff", "3a3129": "2c183f", "63523a": "42295a", "de4a4a": "4a9bef", diff --git a/public/images/pokemon/variant/401.json b/public/images/pokemon/variant/401.json index 9e1fd614922..78db2283687 100644 --- a/public/images/pokemon/variant/401.json +++ b/public/images/pokemon/variant/401.json @@ -3,7 +3,6 @@ "524a42": "cf8439", "9c9c94": "ffeea0", "7b7363": "f6bb47", - "101010": "101010", "8c6b08": "272344", "e6c56b": "454389", "ffefad": "56769d", @@ -19,7 +18,6 @@ "524a42": "453565", "9c9c94": "ae85ba", "7b7363": "71558c", - "101010": "101010", "8c6b08": "784341", "e6c56b": "e59a75", "ffefad": "ffd47c", diff --git a/public/images/pokemon/variant/402.json b/public/images/pokemon/variant/402.json index 26008d941d1..64dc58b78f2 100644 --- a/public/images/pokemon/variant/402.json +++ b/public/images/pokemon/variant/402.json @@ -2,10 +2,8 @@ "1": { "633100": "272344", "de5a52": "afd3df", - "101010": "101010", "9c4231": "498ebe", "31293a": "592a22", - "fff3e3": "fff3e3", "524a42": "cf8439", "7b7363": "f6bb47", "945219": "973939", @@ -15,17 +13,14 @@ "bd9c63": "454389", "9c9c94": "26264b", "ffd684": "56769d", - "000000": "000000", "424252": "0e0e23", "ffffff": "454389" }, "2": { "633100": "2a545f", "de5a52": "70af85", - "101010": "101010", "9c4231": "2f9378", "31293a": "281c41", - "fff3e3": "fff3e3", "524a42": "453565", "7b7363": "71558c", "945219": "b5567a", diff --git a/public/images/pokemon/variant/4052.json b/public/images/pokemon/variant/4052.json index 4dae5cc07dd..b6d6aec3339 100644 --- a/public/images/pokemon/variant/4052.json +++ b/public/images/pokemon/variant/4052.json @@ -1,25 +1,20 @@ { "1": { - "181a1d": "181a1d", "3d4547": "4e385a", "ada09a": "c3c5d4", "5b4e4d": "57567e", "84726f": "7b7aa5", "9aa094": "9ea9b5", - "f3f3f3": "f3f3f3", - "010101": "010101", "272d2e": "342b49", "f3d91d": "ffff89" }, "2": { - "181a1d": "181a1d", "3d4547": "417778", "ada09a": "603b54", "5b4e4d": "171127", "84726f": "3c2841", "9aa094": "cc9a5f", "f3f3f3": "f4d294", - "010101": "010101", "272d2e": "234a56", "f3d91d": "c4e857" } diff --git a/public/images/pokemon/variant/406.json b/public/images/pokemon/variant/406.json index 5f47761b081..1deec5a8940 100644 --- a/public/images/pokemon/variant/406.json +++ b/public/images/pokemon/variant/406.json @@ -3,30 +3,24 @@ "73a54a": "153a51", "b5ef73": "5fadaf", "3a5a29": "0b2337", - "000000": "000000", "7bd65a": "215869", "948400": "856454", "ffef6b": "e4d0c2", "e6bd3a": "c7a999", "21524a": "a92239", "317b63": "d6454a", - "4a9473": "ed6e67", - "ce0031": "ce0031", - "f76363": "f76363" + "4a9473": "ed6e67" }, "2": { "73a54a": "52347a", "b5ef73": "c098dd", "3a5a29": "2d1a4e", - "000000": "000000", "7bd65a": "7d4f9c", "948400": "44336d", "ffef6b": "f2e4ff", "e6bd3a": "c9b6e1", "21524a": "2d55a9", "317b63": "4f81d8", - "4a9473": "83bef3", - "ce0031": "ce0031", - "f76363": "f76363" + "4a9473": "83bef3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/407.json b/public/images/pokemon/variant/407.json index 457c76d4159..4f2d8bc49b0 100644 --- a/public/images/pokemon/variant/407.json +++ b/public/images/pokemon/variant/407.json @@ -4,7 +4,6 @@ "ffffff": "fff1cb", "297b52": "153a51", "d6cede": "e1bf95", - "000000": "000000", "7b3a5a": "9c5910", "bd426b": "d28f31", "ff6384": "efc754", @@ -21,7 +20,6 @@ "ffffff": "fcf8ff", "297b52": "503277", "d6cede": "d6c7e6", - "000000": "000000", "7b3a5a": "9c2407", "bd426b": "c15a21", "ff6384": "ec883b", diff --git a/public/images/pokemon/variant/4077.json b/public/images/pokemon/variant/4077.json index f80e6124c18..40d3cfe71f3 100644 --- a/public/images/pokemon/variant/4077.json +++ b/public/images/pokemon/variant/4077.json @@ -7,14 +7,12 @@ "de9fff": "ff884c", "d2daff": "ffb44c", "59237e": "312c49", - "101010": "101010", "78499b": "514766", "ffffe3": "8cd8ff", "646357": "192666", "ded5ae": "5b93cc", "8e39c1": "990c00", - "a3a49f": "355699", - "fdfdfd": "fdfdfd" + "a3a49f": "355699" }, "2": { "64c2d7": "cc1e83", @@ -24,13 +22,11 @@ "de9fff": "483e7c", "d2daff": "b247a0", "59237e": "312c49", - "101010": "101010", "78499b": "514766", "ffffe3": "ff99dd", "646357": "361e66", "ded5ae": "cc66cc", "8e39c1": "161f4c", - "a3a49f": "7a3d99", - "fdfdfd": "fdfdfd" + "a3a49f": "7a3d99" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/4078.json b/public/images/pokemon/variant/4078.json index a57e9d6f066..0eefedacf98 100644 --- a/public/images/pokemon/variant/4078.json +++ b/public/images/pokemon/variant/4078.json @@ -1,10 +1,8 @@ { "1": { - "0c0c0c": "0c0c0c", "44bf75": "cc9470", "737ba4": "514766", "85fabf": "ffd9a5", - "2b3055": "2b3055", "109865": "995944", "ffffe3": "8cd8ff", "636357": "192666", @@ -19,11 +17,9 @@ "4ed68b": "cc9470" }, "2": { - "0c0c0c": "0c0c0c", "44bf75": "cc1e4c", "737ba4": "514766", "85fabf": "ff3255", - "2b3055": "2b3055", "109865": "990f3d", "ffffe3": "ff99dd", "636357": "361e66", diff --git a/public/images/pokemon/variant/4079.json b/public/images/pokemon/variant/4079.json index f1fd0c2ca2a..eb3e2d5d7d1 100644 --- a/public/images/pokemon/variant/4079.json +++ b/public/images/pokemon/variant/4079.json @@ -6,10 +6,7 @@ "aa4a6b": "613934", "f88daf": "bb694b", "7c2847": "452a29", - "d5cdcd": "d5cdcd", - "fcfcfc": "fcfcfc", "d76d96": "8f5345", - "101010": "101010", "dea462": "e0799c", "8b5a18": "a84071", "ffe6b4": "ff9eba" @@ -21,10 +18,7 @@ "aa4a6b": "846467", "f88daf": "ecdcbe", "7c2847": "503941", - "d5cdcd": "d5cdcd", - "fcfcfc": "fcfcfc", "d76d96": "c6aead", - "101010": "101010", "dea462": "ca8e74", "8b5a18": "a45c58", "ffe6b4": "eec596" diff --git a/public/images/pokemon/variant/4080.json b/public/images/pokemon/variant/4080.json index 8a4b733e0ee..727a540ddc2 100644 --- a/public/images/pokemon/variant/4080.json +++ b/public/images/pokemon/variant/4080.json @@ -2,10 +2,7 @@ "1": { "723f7c": "edc59e", "a565c0": "ffedcc", - "181818": "181818", "d76792": "905446", - "c9c9c9": "c9c9c9", - "fbfbfb": "fbfbfb", "7b6987": "a94172", "f985aa": "bb694b", "ede2ef": "ff9fbb", @@ -22,10 +19,7 @@ "2": { "723f7c": "963e59", "a565c0": "d9736b", - "181818": "181818", "d76792": "c6aead", - "c9c9c9": "c9c9c9", - "fbfbfb": "fbfbfb", "7b6987": "a45c58", "f985aa": "ecdcbe", "ede2ef": "efc697", diff --git a/public/images/pokemon/variant/41.json b/public/images/pokemon/variant/41.json index 99ab116de02..88572737c89 100644 --- a/public/images/pokemon/variant/41.json +++ b/public/images/pokemon/variant/41.json @@ -1,26 +1,20 @@ { "1": { - "101010": "101010", "637bb5": "12325c", "4a427b": "14093b", "bdceff": "868ecc", "8cb5ef": "205182", "b5529c": "d58e41", "73215a": "b6591e", - "d673bd": "f0ad57", - "ffffff": "ffffff", - "636363": "636363" + "d673bd": "f0ad57" }, "2": { - "101010": "101010", "637bb5": "916c8b", "4a427b": "4d3259", "bdceff": "e8d2e6", "8cb5ef": "cbabca", "b5529c": "94241c", "73215a": "670f10", - "d673bd": "bc3b1d", - "ffffff": "ffffff", - "636363": "636363" + "d673bd": "bc3b1d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/412-plant.json b/public/images/pokemon/variant/412-plant.json index 5a4fcc17bce..63277d41b8e 100644 --- a/public/images/pokemon/variant/412-plant.json +++ b/public/images/pokemon/variant/412-plant.json @@ -4,7 +4,6 @@ "84847b": "5f709f", "5a5a5a": "455081", "3a3a42": "262b56", - "101010": "101010", "314a3a": "274530", "7b9c4a": "6c956d", "527342": "446649", @@ -14,11 +13,9 @@ "634a3a": "4f3f36" }, "1": { - "292931": "292931", "84847b": "9f8a8f", "5a5a5a": "725c67", "3a3a42": "392933", - "101010": "101010", "314a3a": "452c30", "7b9c4a": "9d8781", "527342": "7c5d5e", @@ -28,11 +25,9 @@ "634a3a": "261a1a" }, "2": { - "292931": "292931", "84847b": "c69ab0", "5a5a5a": "ab7492", "3a3a42": "724063", - "101010": "101010", "314a3a": "203460", "7b9c4a": "5d9ac0", "527342": "3c689b", diff --git a/public/images/pokemon/variant/412-trash.json b/public/images/pokemon/variant/412-trash.json index 92dbf56e4ee..1c95606a860 100644 --- a/public/images/pokemon/variant/412-trash.json +++ b/public/images/pokemon/variant/412-trash.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "292931": "191c46", "5a5a5a": "455081", "84847b": "5f709f", @@ -15,7 +14,6 @@ "737b7b": "572d73" }, "1": { - "101010": "101010", "292931": "1d1929", "5a5a5a": "594f69", "84847b": "7e768c", @@ -30,7 +28,6 @@ "737b7b": "403c48" }, "2": { - "101010": "101010", "292931": "273f2c", "5a5a5a": "b5d6b2", "84847b": "daeed5", diff --git a/public/images/pokemon/variant/413-sandy.json b/public/images/pokemon/variant/413-sandy.json index 42177c21025..84e8f7ef251 100644 --- a/public/images/pokemon/variant/413-sandy.json +++ b/public/images/pokemon/variant/413-sandy.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "5a5a5a": "455081", "3a3a42": "30366b", "737b6b": "526390", @@ -9,14 +8,12 @@ "634a3a": "5a453b", "635252": "926f57", "ad9473": "b89b78", - "ffffff": "ffffff", "8c4a3a": "7d212c", "d6c573": "e4d3b0", "ef7352": "bc4c43", "847363": "735040" }, "1": { - "101010": "101010", "5a5a5a": "64403f", "3a3a42": "533032", "737b6b": "835d57", @@ -25,14 +22,12 @@ "634a3a": "54212a", "635252": "3e2025", "ad9473": "734443", - "ffffff": "ffffff", "8c4a3a": "c58839", "d6c573": "8e6457", "ef7352": "e4c565", "847363": "4e2d2d" }, "2": { - "101010": "101010", "5a5a5a": "aeb2cd", "3a3a42": "8385a6", "737b6b": "dfe6f1", @@ -41,7 +36,6 @@ "634a3a": "1c3a5e", "635252": "1a1830", "ad9473": "5a5f7f", - "ffffff": "ffffff", "8c4a3a": "1b4758", "d6c573": "7c8397", "ef7352": "61c8d9", diff --git a/public/images/pokemon/variant/413-trash.json b/public/images/pokemon/variant/413-trash.json index 5e11d943d93..984cd225d47 100644 --- a/public/images/pokemon/variant/413-trash.json +++ b/public/images/pokemon/variant/413-trash.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "5a5a5a": "455081", "3a3a42": "30366b", "737b6b": "526390", @@ -9,11 +8,9 @@ "844a73": "572d73", "7b4a5a": "92427c", "b56b7b": "c373a4", - "ffffff": "ffffff", "ef949c": "df9dbf" }, "1": { - "101010": "101010", "5a5a5a": "594f69", "3a3a42": "403850", "737b6b": "8e869c", @@ -22,11 +19,9 @@ "844a73": "723542", "7b4a5a": "3d3b56", "b56b7b": "5a5a79", - "ffffff": "ffffff", "ef949c": "828498" }, "2": { - "101010": "101010", "5a5a5a": "b5d6b2", "3a3a42": "7aa17b", "737b6b": "daeed5", @@ -35,7 +30,6 @@ "844a73": "39343f", "7b4a5a": "1b6b2e", "b56b7b": "399746", - "ffffff": "ffffff", "ef949c": "69bd6a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/414.json b/public/images/pokemon/variant/414.json index f8a8ab67845..e609549b309 100644 --- a/public/images/pokemon/variant/414.json +++ b/public/images/pokemon/variant/414.json @@ -2,7 +2,6 @@ "1": { "734221": "99745b", "e66b29": "f2daba", - "101010": "101010", "a54a00": "d2a884", "f7d67b": "97534e", "6b5a4a": "471415", @@ -17,7 +16,6 @@ "2": { "734221": "90412e", "e66b29": "e8b479", - "101010": "101010", "a54a00": "d2895c", "f7d67b": "8556b0", "6b5a4a": "382463", diff --git a/public/images/pokemon/variant/418.json b/public/images/pokemon/variant/418.json index 628252e5296..7100520550d 100644 --- a/public/images/pokemon/variant/418.json +++ b/public/images/pokemon/variant/418.json @@ -3,12 +3,8 @@ "ad5a21": "7d1e39", "ef7b19": "9c354f", "7b4221": "611b35", - "191919": "191919", "dec584": "cea49d", "f7f7b5": "e8d4cc", - "ffffff": "ffffff", - "6b6b6b": "6b6b6b", - "d6d6ce": "d6d6ce", "ffde00": "d2e5e8", "9c6300": "995e5c", "e6a531": "a0b3ba", @@ -20,12 +16,9 @@ "ad5a21": "cd91aa", "ef7b19": "e8c3ce", "7b4221": "84466b", - "191919": "191919", "dec584": "8a4370", "f7f7b5": "a8688f", - "ffffff": "ffffff", "6b6b6b": "432e38", - "d6d6ce": "d6d6ce", "ffde00": "eda342", "9c6300": "642858", "e6a531": "ca6e26", diff --git a/public/images/pokemon/variant/419.json b/public/images/pokemon/variant/419.json index 414cd251187..d3c4729024f 100644 --- a/public/images/pokemon/variant/419.json +++ b/public/images/pokemon/variant/419.json @@ -2,7 +2,6 @@ "1": { "7b4221": "611b35", "ef7b19": "9c354f", - "191919": "191919", "ce6b19": "851d3e", "ad5a21": "7d1e39", "9c6300": "995e5c", @@ -10,8 +9,6 @@ "cebd84": "cea49d", "99693c": "6a808c", "e6a531": "a0b3ba", - "6b6b6b": "6b6b6b", - "ffffff": "ffffff", "ffde00": "d2e5e8", "2163a5": "385e11", "63bde6": "6a9539" @@ -19,7 +16,6 @@ "2": { "7b4221": "9e6a86", "ef7b19": "debfc8", - "191919": "191919", "ce6b19": "dca5b5", "ad5a21": "cd91aa", "9c6300": "672e5d", @@ -28,7 +24,6 @@ "99693c": "8e410e", "e6a531": "d4812f", "6b6b6b": "726481", - "ffffff": "ffffff", "ffde00": "eda342", "2163a5": "4b2a70", "63bde6": "744d99" diff --git a/public/images/pokemon/variant/4199.json b/public/images/pokemon/variant/4199.json index 1b17bcc8234..e6136479ab0 100644 --- a/public/images/pokemon/variant/4199.json +++ b/public/images/pokemon/variant/4199.json @@ -3,12 +3,10 @@ "493e66": "831e2b", "a191b5": "de504e", "7a6a98": "ad3139", - "101010": "101010", "654493": "7e3351", "413668": "622344", "403468": "4f0926", "269a36": "f28783", - "f8f8f8": "f8f8f8", "a090b5": "ff9eba", "63577d": "a84071", "723f7c": "d0bca2", @@ -27,12 +25,10 @@ "493e66": "2a6122", "a191b5": "b0dc72", "7a6a98": "71ae48", - "101010": "101010", "654493": "38735c", "413668": "1d4c46", "403468": "9f3637", "269a36": "e68c5d", - "f8f8f8": "f8f8f8", "a090b5": "efc697", "63577d": "a55d59", "723f7c": "ae4653", diff --git a/public/images/pokemon/variant/42.json b/public/images/pokemon/variant/42.json index af784a0fd2c..7891449360e 100644 --- a/public/images/pokemon/variant/42.json +++ b/public/images/pokemon/variant/42.json @@ -6,11 +6,7 @@ "631052": "892d03", "ce6bb5": "f1a139", "adceff": "3c74b1", - "000000": "000000", "ad52ad": "d5711b", - "636363": "636363", - "ffffff": "ffffff", - "d6d6d6": "d6d6d6", "943a7b": "af4e0c" }, "2": { @@ -20,11 +16,7 @@ "631052": "54070c", "ce6bb5": "bc3b1d", "adceff": "e8d2e6", - "000000": "000000", "ad52ad": "94241c", - "636363": "636363", - "ffffff": "ffffff", - "d6d6d6": "d6d6d6", "943a7b": "670f10" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/422-east.json b/public/images/pokemon/variant/422-east.json index cb5b031b3f2..c3209e3e025 100644 --- a/public/images/pokemon/variant/422-east.json +++ b/public/images/pokemon/variant/422-east.json @@ -2,8 +2,6 @@ "0": { "636394": "61819f", "bdceef": "b8d4e6", - "ffffff": "ffffff", - "101010": "101010", "52527b": "636b7b", "84deff": "b9f7d4", "6bb5f7": "82e1c0", @@ -11,7 +9,6 @@ "ffde73": "ffdf75", "a58c3a": "a68e3c", "524a3a": "554d3c", - "d63aa5": "d63aa5", "5a8452": "b8d4e6", "424a3a": "61819f", "8cb552": "ffffff" @@ -19,8 +16,6 @@ "1": { "636394": "314173", "bdceef": "b8d4e6", - "ffffff": "ffffff", - "101010": "101010", "52527b": "293852", "84deff": "5271bd", "6bb5f7": "485f9c", @@ -28,7 +23,6 @@ "ffde73": "82e1c0", "a58c3a": "649bb2", "524a3a": "455f73", - "d63aa5": "d63aa5", "5a8452": "b8d4e6", "424a3a": "61819f", "8cb552": "ffffff" @@ -36,8 +30,6 @@ "2": { "636394": "6d427b", "bdceef": "c5deef", - "ffffff": "ffffff", - "101010": "101010", "52527b": "451e4c", "84deff": "ad75e8", "6bb5f7": "955dbe", @@ -45,7 +37,6 @@ "ffde73": "ffc975", "a58c3a": "e5693d", "524a3a": "933f04", - "d63aa5": "d63aa5", "5a8452": "df5e7d", "424a3a": "914d43", "8cb552": "ff8ca1" diff --git a/public/images/pokemon/variant/422-west.json b/public/images/pokemon/variant/422-west.json index f5f94becd75..6f9e575dee9 100644 --- a/public/images/pokemon/variant/422-west.json +++ b/public/images/pokemon/variant/422-west.json @@ -1,7 +1,6 @@ { "0": { "73426b": "8b3553", - "101010": "101010", "e652a5": "c66264", "ff8cc5": "ff9269", "6b3a52": "7a3425", @@ -9,7 +8,6 @@ "ffb5e6": "ffbea6", "ffde73": "ffd275", "a58c3a": "ca8b46", - "ffffff": "ffffff", "524a3a": "645346", "c5428c": "bd294a", "b5b5c5": "ca8b46", @@ -18,7 +16,6 @@ }, "1": { "73426b": "573d64", - "101010": "101010", "e652a5": "7960a1", "ff8cc5": "aa8be8", "6b3a52": "573d64", @@ -26,7 +23,6 @@ "ffb5e6": "c1a5ff", "ffde73": "ffb8c5", "a58c3a": "da6f7b", - "ffffff": "ffffff", "524a3a": "993d48", "c5428c": "bd294a", "b5b5c5": "d1b07c", @@ -35,7 +31,6 @@ }, "2": { "73426b": "281e4c", - "101010": "101010", "e652a5": "48427b", "ff8cc5": "5d64be", "6b3a52": "281e4c", @@ -43,7 +38,6 @@ "ffb5e6": "7588e8", "ffde73": "ffc975", "a58c3a": "e5693d", - "ffffff": "ffffff", "524a3a": "933f04", "c5428c": "bd294a", "b5b5c5": "00a172", diff --git a/public/images/pokemon/variant/4222.json b/public/images/pokemon/variant/4222.json index 15e23a6d468..d271fb7a8e3 100644 --- a/public/images/pokemon/variant/4222.json +++ b/public/images/pokemon/variant/4222.json @@ -9,7 +9,6 @@ "e3c4f2": "d7d2f6", "9c94a3": "58929f", "cbc2d1": "a9e4e3", - "101010": "101010", "af9e9e": "44a0af", "ffa4c5": "76c6ff", "e66294": "0099ff", @@ -25,7 +24,6 @@ "e3c4f2": "567f83", "9c94a3": "4b1f28", "cbc2d1": "773050", - "101010": "101010", "af9e9e": "b0919b", "ffa4c5": "8ff3a3", "e66294": "15c05f", diff --git a/public/images/pokemon/variant/423-east.json b/public/images/pokemon/variant/423-east.json index f002fc3efb4..95e095396bd 100644 --- a/public/images/pokemon/variant/423-east.json +++ b/public/images/pokemon/variant/423-east.json @@ -10,7 +10,6 @@ "a58c3a": "a58e3b", "524a3a": "574e3e", "736363": "574e3e", - "ffffff": "ffffff", "6b7bad": "679ab2", "6bb5f7": "80e2bf", "b5295a": "b42a59", @@ -18,36 +17,26 @@ }, "1": { "3a4231": "293852", - "101010": "101010", "5a944a": "485f9c", "426b31": "314173", "7bbd52": "5271bd", "ffde73": "82e1c0", - "313129": "313129", "a58c3a": "649bb2", "524a3a": "455f73", - "736363": "736363", - "ffffff": "ffffff", "6b7bad": "b8d4e6", "6bb5f7": "ffffff", - "b5295a": "b5295a", "5a527b": "61819f" }, "2": { "3a4231": "451e4c", - "101010": "101010", "5a944a": "955dbe", "426b31": "6d427b", "7bbd52": "ad75e8", "ffde73": "ffc975", - "313129": "313129", "a58c3a": "e5693d", "524a3a": "933f04", - "736363": "736363", - "ffffff": "ffffff", "6b7bad": "df5e7d", "6bb5f7": "ff8ca1", - "b5295a": "b5295a", "5a527b": "914d43" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/423-west.json b/public/images/pokemon/variant/423-west.json index d9b876d07e7..b0cd26a7201 100644 --- a/public/images/pokemon/variant/423-west.json +++ b/public/images/pokemon/variant/423-west.json @@ -1,53 +1,38 @@ { "0": { "4a3a3a": "101010", - "101010": "101010", "a56b3a": "c66264", "6b4a3a": "8b3553", "c5944a": "ff9269", "a58c3a": "ca8b46", "ffde73": "ffd275", - "313129": "313129", "524a3a": "645346", - "736363": "736363", - "ffffff": "ffffff", "ad6394": "c66264", "ff8cc5": "ff9269", - "6b3a52": "7a3425", - "b5295a": "b5295a" + "6b3a52": "7a3425" }, "1": { "4a3a3a": "573d64", - "101010": "101010", "a56b3a": "aa8be8", "6b4a3a": "7960a1", "c5944a": "c1a5ff", "a58c3a": "da6f7b", "ffde73": "ffb8c5", - "313129": "313129", "524a3a": "993d48", - "736363": "736363", - "ffffff": "ffffff", "ad6394": "d1b07c", "ff8cc5": "f7f0b4", - "6b3a52": "8a7b68", - "b5295a": "b5295a" + "6b3a52": "8a7b68" }, "2": { "4a3a3a": "281e4c", - "101010": "101010", "a56b3a": "5d64be", "6b4a3a": "48427b", "c5944a": "7588e8", "a58c3a": "e5693d", "ffde73": "ffc975", - "313129": "313129", "524a3a": "933f04", - "736363": "736363", - "ffffff": "ffffff", "ad6394": "00a172", "ff8cc5": "3cc59b", - "6b3a52": "00706a", - "b5295a": "b5295a" + "6b3a52": "00706a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/424.json b/public/images/pokemon/variant/424.json index 4e00c3c1234..eace71f2a3a 100644 --- a/public/images/pokemon/variant/424.json +++ b/public/images/pokemon/variant/424.json @@ -3,7 +3,6 @@ "734a42": "415c73", "ad5242": "428dad", "ff735a": "5ae9ff", - "101010": "101010", "debd73": "c4b487", "ffefa5": "ffeccc", "8c6b42": "8c7457", @@ -13,15 +12,12 @@ "9c4ac5": "c47440", "bd9473": "bd9a7e", "ab5141": "293b94", - "ffffff": "ffffff", - "fc7158": "3973e5", - "adada5": "adada5" + "fc7158": "3973e5" }, "2": { "734a42": "593802", "ad5242": "946212", "ff735a": "ffb338", - "101010": "101010", "debd73": "99455d", "ffefa5": "ed8286", "8c6b42": "632339", @@ -31,8 +27,6 @@ "9c4ac5": "bfbeb4", "bd9473": "802d44", "ab5141": "8c1c2f", - "ffffff": "ffffff", - "fc7158": "b33636", - "adada5": "adada5" + "fc7158": "b33636" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/425.json b/public/images/pokemon/variant/425.json index f28dbd93c07..b490bf42686 100644 --- a/public/images/pokemon/variant/425.json +++ b/public/images/pokemon/variant/425.json @@ -3,7 +3,6 @@ "c5d6e6": "c2f5d4", "ffffff": "e8ffed", "5a5a63": "5e7466", - "101010": "101010", "7b42a5": "497b91", "946be6": "64acb1", "633184": "39677a", @@ -17,7 +16,6 @@ "c5d6e6": "c2f5d4", "ffffff": "e8ffed", "5a5a63": "5e7466", - "101010": "101010", "7b42a5": "93a383", "946be6": "c0c7ab", "633184": "697c63", diff --git a/public/images/pokemon/variant/426.json b/public/images/pokemon/variant/426.json index fcbd8f4ce35..fd8e92ce451 100644 --- a/public/images/pokemon/variant/426.json +++ b/public/images/pokemon/variant/426.json @@ -3,7 +3,6 @@ "c5c5e6": "7ca786", "ffffff": "b0d1b8", "5a5a63": "536661", - "101010": "101010", "423a5a": "1e3f42", "5a427b": "1d524d", "8452ad": "20787c", @@ -20,7 +19,6 @@ "c5c5e6": "7ca786", "ffffff": "b0d1b8", "5a5a63": "536661", - "101010": "101010", "423a5a": "42382c", "5a427b": "686458", "8452ad": "9fa994", diff --git a/public/images/pokemon/variant/4263.json b/public/images/pokemon/variant/4263.json index 035d011d7a0..5d2e8d90ecc 100644 --- a/public/images/pokemon/variant/4263.json +++ b/public/images/pokemon/variant/4263.json @@ -1,14 +1,12 @@ { "1": { "1b2627": "00312d", - "010101": "010101", "3e4042": "01473a", "60656a": "1c8155", "5b5958": "397e4a", "f5f5f6": "f5ffea", "b2b3b2": "a3ce9e", "d94a7f": "d414dd", - "fcfcfc": "fcfcfc", "e2729a": "ff69fa", "6e3b51": "9b00b4", "9b4f69": "d414dd", @@ -16,14 +14,12 @@ }, "2": { "1b2627": "080929", - "010101": "010101", "3e4042": "412991", "60656a": "8e5aef", "5b5958": "100d2d", "f5f5f6": "3c335d", "b2b3b2": "201b47", "d94a7f": "0099ce", - "fcfcfc": "fcfcfc", "e2729a": "54f1ff", "6e3b51": "004a8b", "9b4f69": "0099ce", diff --git a/public/images/pokemon/variant/4264.json b/public/images/pokemon/variant/4264.json index 5c118e7edc8..bbbaf135a4d 100644 --- a/public/images/pokemon/variant/4264.json +++ b/public/images/pokemon/variant/4264.json @@ -4,9 +4,7 @@ "797570": "397e4a", "414141": "1c8155", "abadaf": "95c090", - "010101": "010101", "f5f5f6": "f5ffea", - "1c1917": "1c1917", "ff4e89": "ff69fa", "bc3065": "d414dd", "68696a": "27323a", @@ -17,9 +15,7 @@ "797570": "080929", "414141": "7c4cd6", "abadaf": "1e1a3b", - "010101": "010101", "f5f5f6": "342d4c", - "1c1917": "1c1917", "ff4e89": "54f1ff", "bc3065": "0099ce", "68696a": "2a1b4e", diff --git a/public/images/pokemon/variant/427.json b/public/images/pokemon/variant/427.json index 2571159d29b..5ed6103857c 100644 --- a/public/images/pokemon/variant/427.json +++ b/public/images/pokemon/variant/427.json @@ -3,28 +3,22 @@ "846b5a": "991e47", "c5a57b": "cc3d55", "efdea5": "ff6666", - "101010": "101010", "b57b4a": "ffcc99", "523a3a": "994c3d", "8c5a42": "cc8866", "7b3a42": "948eb2", "ff8ca5": "ffffff", - "c55a7b": "cecee5", - "ffffff": "ffffff", - "3a313a": "3a313a" + "c55a7b": "cecee5" }, "2": { "846b5a": "948eb2", "c5a57b": "cecee5", "efdea5": "ffffff", - "101010": "101010", "b57b4a": "8cd8ff", "523a3a": "355699", "8c5a42": "5b93cc", "7b3a42": "99548d", "ff8ca5": "ffbfdf", - "c55a7b": "cc84b4", - "ffffff": "ffffff", - "3a313a": "3a313a" + "c55a7b": "cc84b4" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/428-mega.json b/public/images/pokemon/variant/428-mega.json index d58a03ca175..e61bbdf0142 100644 --- a/public/images/pokemon/variant/428-mega.json +++ b/public/images/pokemon/variant/428-mega.json @@ -2,14 +2,12 @@ "1": { "836a5a": "991e47", "eedea4": "ff6666", - "101010": "101010", "c5a47b": "cc3d55", "532d30": "994c3d", "aa6840": "ffcc99", "894d3b": "cc8866", "7b3941": "472866", "c55a7b": "7f4c99", - "f8f8f8": "f8f8f8", "ee5a4a": "bd7acc", "2c2423": "0d0b16", "3a3130": "161626", @@ -18,14 +16,12 @@ "2": { "836a5a": "948eb2", "eedea4": "ffffff", - "101010": "101010", "c5a47b": "cecee5", "532d30": "355699", "aa6840": "8cd8ff", "894d3b": "5b93cc", "7b3941": "990c00", "c55a7b": "cc4328", - "f8f8f8": "f8f8f8", "ee5a4a": "ff884c", "2c2423": "191933", "3a3130": "312c49", diff --git a/public/images/pokemon/variant/428.json b/public/images/pokemon/variant/428.json index 46c653b17b0..3978fe7c610 100644 --- a/public/images/pokemon/variant/428.json +++ b/public/images/pokemon/variant/428.json @@ -1,7 +1,6 @@ { "1": { "523a3a": "994c3d", - "101010": "101010", "846b5a": "991e47", "b57b4a": "ffcc99", "efdea5": "ff6666", @@ -10,12 +9,10 @@ "7b3a42": "472866", "c5a57b": "cc3d55", "634a42": "660a38", - "ffffff": "ffffff", "ef5a4a": "bd7acc" }, "2": { "523a3a": "355699", - "101010": "101010", "846b5a": "948eb2", "b57b4a": "8cd8ff", "efdea5": "ffffff", @@ -24,7 +21,6 @@ "7b3a42": "990c00", "c5a57b": "cecee5", "634a42": "65597f", - "ffffff": "ffffff", "ef5a4a": "ff884c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/429.json b/public/images/pokemon/variant/429.json index 07e458a0baa..576fda4a949 100644 --- a/public/images/pokemon/variant/429.json +++ b/public/images/pokemon/variant/429.json @@ -4,11 +4,9 @@ "845284": "d3941a", "b563b5": "ffdd67", "31213a": "132443", - "101010": "101010", "4a3a5a": "244260", "6b4a94": "387fa7", "ce9c00": "c08ecb", - "ffffff": "ffffff", "943a5a": "71370f", "f7de3a": "e5c9e9", "ef3a10": "cc762f" @@ -18,11 +16,9 @@ "845284": "1dbdb9", "b563b5": "3df7ed", "31213a": "244358", - "101010": "101010", "4a3a5a": "7396b4", "6b4a94": "a1c8db", "ce9c00": "149c9d", - "ffffff": "ffffff", "943a5a": "7b3c08", "f7de3a": "55e6de", "ef3a10": "e28c27" @@ -32,11 +28,9 @@ "845284": "eece8c", "b563b5": "fff7dd", "31213a": "603305", - "101010": "101010", "4a3a5a": "b56f2a", "6b4a94": "e6aa47", "ce9c00": "66d0e5", - "ffffff": "ffffff", "943a5a": "7a1511", "f7de3a": "a6f0f8", "ef3a10": "b83a31" diff --git a/public/images/pokemon/variant/43.json b/public/images/pokemon/variant/43.json index 382d5ea10ad..7cfdf44679a 100644 --- a/public/images/pokemon/variant/43.json +++ b/public/images/pokemon/variant/43.json @@ -4,7 +4,6 @@ "8cad31": "3f419d", "c5e67b": "90a1d7", "9cd64a": "606dbb", - "101010": "101010", "5a6b84": "7946a9", "7394a5": "a564c7", "94b5c5": "d688e6", @@ -17,7 +16,6 @@ "8cad31": "8b4a13", "c5e67b": "e8b737", "9cd64a": "b88026", - "101010": "101010", "5a6b84": "79152a", "7394a5": "b3292e", "94b5c5": "de6042", diff --git a/public/images/pokemon/variant/433.json b/public/images/pokemon/variant/433.json index 9f770cfc89d..53f2aa0d25d 100644 --- a/public/images/pokemon/variant/433.json +++ b/public/images/pokemon/variant/433.json @@ -5,13 +5,11 @@ "e66352": "f37cdf", "d6d6f7": "e7d6e8", "a5a5ce": "a189a6", - "000000": "000000", "63524a": "7d492f", "ffd65a": "ffce5a", "bd9c4a": "e6a54a", "ffe694": "ffd1a4", - "846b4a": "a6673b", - "ffffff": "ffffff" + "846b4a": "a6673b" }, "1": { "6b3a31": "14404e", @@ -19,13 +17,11 @@ "e66352": "4a94ad", "d6d6f7": "ebd4b0", "a5a5ce": "cca375", - "000000": "000000", "63524a": "404c85", "ffd65a": "afadcd", "bd9c4a": "888ab1", "ffe694": "e0dbf5", - "846b4a": "5b6596", - "ffffff": "ffffff" + "846b4a": "5b6596" }, "2": { "6b3a31": "102837", @@ -33,12 +29,10 @@ "e66352": "4d8891", "d6d6f7": "f7e6e5", "a5a5ce": "c29ea6", - "000000": "000000", "63524a": "6d2018", "ffd65a": "f0a878", "bd9c4a": "c86b3e", "ffe694": "ffd1a4", - "846b4a": "934123", - "ffffff": "ffffff" + "846b4a": "934123" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/436.json b/public/images/pokemon/variant/436.json index b695af1a3fc..e2fa4e0d532 100644 --- a/public/images/pokemon/variant/436.json +++ b/public/images/pokemon/variant/436.json @@ -4,7 +4,6 @@ "2984a5": "9192a6", "195a7b": "737185", "42a5c5": "c3c3de", - "101010": "101010", "ffde73": "ed87ff", "94b58c": "a15ed9", "63c5e6": "dfe1f4" @@ -14,7 +13,6 @@ "2984a5": "9d4e16", "195a7b": "7e2b15", "42a5c5": "d0662a", - "101010": "101010", "ffde73": "82d562", "94b58c": "899945", "63c5e6": "e98851" diff --git a/public/images/pokemon/variant/437.json b/public/images/pokemon/variant/437.json index d5dedea3748..a278b01e36f 100644 --- a/public/images/pokemon/variant/437.json +++ b/public/images/pokemon/variant/437.json @@ -4,7 +4,6 @@ "73d6ef": "eeeaff", "214a5a": "202429", "42adce": "dedede", - "101010": "101010", "3194b5": "9c9db4", "bdd6de": "bd9173", "a5c5ce": "a27661", @@ -17,7 +16,6 @@ "73d6ef": "f4a97f", "214a5a": "3a1812", "42adce": "d58151", - "101010": "101010", "3194b5": "9d5f33", "bdd6de": "e0da82", "a5c5ce": "ccbd73", diff --git a/public/images/pokemon/variant/438.json b/public/images/pokemon/variant/438.json index 11b250edd0c..46689927197 100644 --- a/public/images/pokemon/variant/438.json +++ b/public/images/pokemon/variant/438.json @@ -4,7 +4,6 @@ "5a8c5a": "6c4616", "9cde7b": "b6a747", "4ac542": "8a6a24", - "000000": "000000", "846b42": "4c443b", "524231": "322a22", "ad845a": "5d564e", @@ -18,13 +17,11 @@ "5a8c5a": "b9ac9d", "9cde7b": "fffdee", "4ac542": "e8e6d7", - "000000": "000000", "846b42": "3c389d", "524231": "2d2164", "ad845a": "4058a8", "c5a54a": "5c80c0", "ffef7b": "c1e0f3", - "f7ce3a": "8fb5dc", - "a5424a": "a5424a" + "f7ce3a": "8fb5dc" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/44.json b/public/images/pokemon/variant/44.json index 143a57297ec..872ed4d67d7 100644 --- a/public/images/pokemon/variant/44.json +++ b/public/images/pokemon/variant/44.json @@ -1,7 +1,6 @@ { "1": { "5a2900": "162486", - "101010": "101010", "ad523a": "4d75b6", "843a19": "2c489f", "ffbd42": "55bb7e", @@ -17,7 +16,6 @@ }, "2": { "5a2900": "680b10", - "101010": "101010", "ad523a": "bd4e2d", "843a19": "8d1e11", "ffbd42": "e8d65e", diff --git a/public/images/pokemon/variant/440.json b/public/images/pokemon/variant/440.json index 090daa258ac..55aa924a89f 100644 --- a/public/images/pokemon/variant/440.json +++ b/public/images/pokemon/variant/440.json @@ -2,7 +2,6 @@ "0": { "a55a7b": "925382", "ffc5d6": "f6cae1", - "101010": "101010", "c58ca5": "c57cad", "73425a": "6c1f9e", "ffffff": "fff4fb", @@ -13,7 +12,6 @@ "1": { "a55a7b": "81256f", "ffc5d6": "ebbada", - "101010": "101010", "c58ca5": "bd61a4", "73425a": "4f0e22", "ffffff": "fff4fb", diff --git a/public/images/pokemon/variant/441.json b/public/images/pokemon/variant/441.json index 1fce9238ec2..bd6244727fe 100644 --- a/public/images/pokemon/variant/441.json +++ b/public/images/pokemon/variant/441.json @@ -3,7 +3,6 @@ "292931": "331d29", "42424a": "573244", "5a5a63": "8f5a70", - "000000": "000000", "ffffff": "deacce", "c5c5c5": "ffeef7", "e67b9c": "ffd067", @@ -19,7 +18,6 @@ "292931": "212530", "42424a": "2e333d", "5a5a63": "3c4047", - "000000": "000000", "ffffff": "dec0ac", "c5c5c5": "fff1dc", "e67b9c": "f37878", diff --git a/public/images/pokemon/variant/442.json b/public/images/pokemon/variant/442.json index 56ab0f334e8..39129cccf64 100644 --- a/public/images/pokemon/variant/442.json +++ b/public/images/pokemon/variant/442.json @@ -7,13 +7,9 @@ "ffde10": "db8241", "31634a": "00145e", "4a8c42": "d77548", - "101010": "101010", "314231": "423131", "734a7b": "1d1d70", "52426b": "42426b", - "b59c94": "b59c94", - "9c846b": "9c846b", - "846b63": "846b63", "524252": "524242" }, "2": { @@ -24,8 +20,6 @@ "ffde10": "a61145", "31634a": "4d559d", "4a8c42": "42598c", - "101010": "101010", - "314231": "314231", "734a7b": "671b35", "52426b": "7d354e", "b59c94": "59001f", diff --git a/public/images/pokemon/variant/443.json b/public/images/pokemon/variant/443.json index 2863290a668..344bcafdebf 100644 --- a/public/images/pokemon/variant/443.json +++ b/public/images/pokemon/variant/443.json @@ -5,15 +5,9 @@ "8cc5d6": "42a5f7", "426b84": "085284", "101010": "101921", - "42d6de": "42d6de", - "c5ced6": "c5ced6", - "3aadc5": "3aadc5", - "ffffff": "ffffff", - "5a6363": "5a6363", "7b1910": "731029", "ad3a10": "a57c10", "de5a29": "e6c529", - "ce7373": "ce7373", "5a1000": "524200" }, "1": { @@ -23,14 +17,10 @@ "426b84": "522521", "101010": "101921", "42d6de": "54b0ff", - "c5ced6": "c5ced6", "3aadc5": "2878e1", - "ffffff": "ffffff", - "5a6363": "5a6363", "7b1910": "731029", "ad3a10": "92a9b2", "de5a29": "d9f0f1", - "ce7373": "ce7373", "5a1000": "524200" }, "2": { @@ -40,10 +30,7 @@ "426b84": "223a4a", "101010": "101921", "42d6de": "6fe6a3", - "c5ced6": "c5ced6", "3aadc5": "23b8a8", - "ffffff": "ffffff", - "5a6363": "5a6363", "7b1910": "7b1a43", "ad3a10": "be472f", "de5a29": "dd845e", diff --git a/public/images/pokemon/variant/444.json b/public/images/pokemon/variant/444.json index e9a652ad8c2..c928f82a213 100644 --- a/public/images/pokemon/variant/444.json +++ b/public/images/pokemon/variant/444.json @@ -11,10 +11,7 @@ "de9c19": "e53d3f", "5a1000": "502209", "ad314a": "ad7b08", - "c5ced6": "c5ced6", - "ffffff": "ffffff", - "de5a29": "f7b834", - "737b84": "737b84" + "de5a29": "f7b834" }, "1": { "102952": "3d0a17", @@ -28,10 +25,7 @@ "de9c19": "d9900e", "5a1000": "211e33", "ad314a": "829ca6", - "c5ced6": "c5ced6", - "ffffff": "ffffff", - "de5a29": "c2dedf", - "737b84": "737b84" + "de5a29": "c2dedf" }, "2": { "102952": "092136", @@ -45,9 +39,6 @@ "de9c19": "2c8bf7", "5a1000": "521000", "ad314a": "be472f", - "c5ced6": "c5ced6", - "ffffff": "ffffff", - "de5a29": "ee723e", - "737b84": "737b84" + "de5a29": "ee723e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/445-mega.json b/public/images/pokemon/variant/445-mega.json index 0e67f00ecd9..f74cd6fd1cf 100644 --- a/public/images/pokemon/variant/445-mega.json +++ b/public/images/pokemon/variant/445-mega.json @@ -5,15 +5,9 @@ "41418b": "19446e", "ffd518": "42d6de", "c59410": "3aadc5", - "101010": "101010", "7e2121": "502209", - "f5f5f5": "f5f5f5", "bd3941": "9e5201", - "e64a31": "f7ac34", - "6a395a": "6a395a", - "bd737b": "bd737b", - "737b83": "737b83", - "c5cdd5": "c5cdd5" + "e64a31": "f7ac34" }, "1": { "292952": "632f1b", @@ -21,15 +15,9 @@ "41418b": "b67252", "ffd518": "4caaff", "c59410": "255dd7", - "101010": "101010", "7e2121": "393648", - "f5f5f5": "f5f5f5", "bd3941": "9fb6bf", - "e64a31": "dce8e8", - "6a395a": "6a395a", - "bd737b": "bd737b", - "737b83": "737b83", - "c5cdd5": "c5cdd5" + "e64a31": "dce8e8" }, "2": { "292952": "051a2e", @@ -37,14 +25,8 @@ "41418b": "152c3b", "ffd518": "6fe6a3", "c59410": "23b8a8", - "101010": "101010", "7e2121": "521000", - "f5f5f5": "f5f5f5", "bd3941": "b23219", - "e64a31": "ec642c", - "6a395a": "6a395a", - "bd737b": "bd737b", - "737b83": "737b83", - "c5cdd5": "c5cdd5" + "e64a31": "ec642c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/445.json b/public/images/pokemon/variant/445.json index 5e0b917b349..664a505d419 100644 --- a/public/images/pokemon/variant/445.json +++ b/public/images/pokemon/variant/445.json @@ -6,12 +6,7 @@ "292952": "0a1347", "5a63ad": "226596", "ffd619": "42d6de", - "737b84": "737b84", - "101010": "101010", - "ffffff": "ffffff", - "c5ced6": "c5ced6", "6b3a5a": "6b4a29", - "bd737b": "bd737b", "e64a31": "f7ac34", "5a1000": "502209", "bd3a42": "b2630f" @@ -23,12 +18,7 @@ "292952": "3d0a17", "5a63ad": "deae7a", "ffd619": "4caaff", - "737b84": "737b84", - "101010": "101010", - "ffffff": "ffffff", - "c5ced6": "c5ced6", "6b3a5a": "6b4a29", - "bd737b": "bd737b", "e64a31": "dce8e8", "5a1000": "393648", "bd3a42": "9fb6bf" @@ -40,12 +30,7 @@ "292952": "051a2e", "5a63ad": "2f434b", "ffd619": "6fe6a3", - "737b84": "737b84", - "101010": "101010", - "ffffff": "ffffff", - "c5ced6": "c5ced6", "6b3a5a": "6b4a29", - "bd737b": "bd737b", "e64a31": "ee723e", "5a1000": "521000", "bd3a42": "be472f" diff --git a/public/images/pokemon/variant/447.json b/public/images/pokemon/variant/447.json index a6c8ea5f5cd..80147a9e70a 100644 --- a/public/images/pokemon/variant/447.json +++ b/public/images/pokemon/variant/447.json @@ -1,13 +1,10 @@ { "0": { - "101010": "101010", "104a7b": "6c3e20", "29739c": "a56d2f", "4a9cef": "e2ce75", "5a5a5a": "2c486e", "3a3a3a": "12334a", - "a53131": "a53131", - "de4242": "de4242", "ffffff": "fff8f1", "8c843a": "b6957f", "dec573": "e6d5b9", @@ -15,7 +12,6 @@ "b5b5b5": "fff8f1" }, "1": { - "101010": "101010", "104a7b": "410814", "29739c": "7f1e2f", "4a9cef": "b85251", @@ -30,7 +26,6 @@ "b5b5b5": "fcc161" }, "2": { - "101010": "101010", "104a7b": "2e1547", "29739c": "513674", "4a9cef": "735c9e", @@ -38,10 +33,7 @@ "3a3a3a": "26153f", "a53131": "b8461f", "de4242": "de8141", - "ffffff": "ffffff", "8c843a": "373566", - "dec573": "51668e", - "848484": "848484", - "b5b5b5": "b5b5b5" + "dec573": "51668e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/448-mega.json b/public/images/pokemon/variant/448-mega.json index 09c18f8521b..242019be218 100644 --- a/public/images/pokemon/variant/448-mega.json +++ b/public/images/pokemon/variant/448-mega.json @@ -2,13 +2,11 @@ "0": { "173968": "6c3e20", "407cdc": "e2ce75", - "101010": "101010", "2e5c85": "a56d2f", "5a5a5a": "2c2f4c", "393939": "171932", "838383": "3a5376", "9a2626": "8a332f", - "fcfcfc": "fcfcfc", "de4141": "d85e40", "e6d083": "719cbe", "b09a4d": "51689c", @@ -17,7 +15,6 @@ "1": { "173968": "3f0916", "407cdc": "b85251", - "101010": "101010", "2e5c85": "7f1e2f", "5a5a5a": "202931", "393939": "202931", @@ -32,13 +29,11 @@ "2": { "173968": "2e1547", "407cdc": "735c9e", - "101010": "101010", "2e5c85": "513674", "5a5a5a": "2c2339", "393939": "291838", "838383": "453a5a", "9a2626": "b8461f", - "fcfcfc": "fcfcfc", "de4141": "de8141", "e6d083": "51668e", "b09a4d": "373566", diff --git a/public/images/pokemon/variant/448.json b/public/images/pokemon/variant/448.json index e573f087e67..e7854e081d7 100644 --- a/public/images/pokemon/variant/448.json +++ b/public/images/pokemon/variant/448.json @@ -2,7 +2,6 @@ "0": { "104a7b": "6c3e20", "4a9cef": "e2ce75", - "101010": "101010", "29739c": "a56d2f", "3a3a3a": "0a2734", "5a5a5a": "223754", @@ -17,7 +16,6 @@ "1": { "104a7b": "410814", "4a9cef": "b85251", - "101010": "101010", "29739c": "7f1e2f", "3a3a3a": "3d1919", "5a5a5a": "262032", @@ -32,16 +30,13 @@ "2": { "104a7b": "2e1547", "4a9cef": "735c9e", - "101010": "101010", "29739c": "513674", "3a3a3a": "291838", "5a5a5a": "2c2339", "848484": "453a5a", "a53131": "b8461f", - "ffffff": "ffffff", "de4242": "de8141", "b5b563": "47439c", - "e6e69c": "6c8bc7", - "d6d6d6": "d6d6d6" + "e6e69c": "6c8bc7" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/45.json b/public/images/pokemon/variant/45.json index a1dfd2e7558..358817678d6 100644 --- a/public/images/pokemon/variant/45.json +++ b/public/images/pokemon/variant/45.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "731910": "091d79", "f78c8c": "8cbef7", "f77373": "5e8fde", @@ -18,7 +17,6 @@ "7384a5": "966fbb" }, "2": { - "101010": "101010", "731910": "97696f", "f78c8c": "ebe8d1", "f77373": "d2cbb2", diff --git a/public/images/pokemon/variant/456.json b/public/images/pokemon/variant/456.json index d73c8b48616..bdbd1a816c3 100644 --- a/public/images/pokemon/variant/456.json +++ b/public/images/pokemon/variant/456.json @@ -2,7 +2,6 @@ "1": { "526b8c": "966764", "94d6e6": "f3e1c6", - "101010": "101010", "7394ad": "cda38c", "833171": "d3633a", "29293a": "4f2846", @@ -10,14 +9,12 @@ "c5e6f7": "fffbf2", "c54591": "f19e53", "426b84": "aa6985", - "efffff": "efffff", "c54a94": "8bbcd9", "ad8cbd": "ffca7b" }, "2": { "526b8c": "181e52", "94d6e6": "34507e", - "101010": "101010", "7394ad": "1c335b", "833171": "366ea4", "29293a": "b66736", @@ -25,7 +22,6 @@ "c5e6f7": "49749b", "c54591": "50a8c2", "426b84": "fff8b0", - "efffff": "efffff", "c54a94": "7b1615", "ad8cbd": "3979a1" } diff --git a/public/images/pokemon/variant/4562.json b/public/images/pokemon/variant/4562.json index 52855aa484a..a2c3bd41ea6 100644 --- a/public/images/pokemon/variant/4562.json +++ b/public/images/pokemon/variant/4562.json @@ -2,11 +2,8 @@ "1": { "313131": "145555", "525252": "257e6a", - "101010": "101010", "672b82": "7e173e", "ab38d1": "b0264c", - "371d3f": "371d3f", - "000000": "000000", "6f5c6b": "743949", "c5b9bb": "c69981", "cb414b": "18265b", @@ -17,11 +14,8 @@ "2": { "313131": "69162c", "525252": "90222b", - "101010": "101010", "672b82": "57a0b9", "ab38d1": "c2ffe2", - "371d3f": "371d3f", - "000000": "000000", "6f5c6b": "0a4340", "c5b9bb": "298a61", "cb414b": "ffad58", diff --git a/public/images/pokemon/variant/457.json b/public/images/pokemon/variant/457.json index 2c9766d905b..0a698b077ae 100644 --- a/public/images/pokemon/variant/457.json +++ b/public/images/pokemon/variant/457.json @@ -1,7 +1,6 @@ { "1": { "526b8c": "966764", - "101010": "101010", "c5e6f7": "fffbf2", "94d6e6": "f3e1c6", "29293a": "4f2846", @@ -10,12 +9,10 @@ "c54591": "ffc369", "9e357b": "c7703c", "73427b": "6f75a0", - "c54a94": "aadff3", - "efffff": "efffff" + "c54a94": "aadff3" }, "2": { "526b8c": "0f154a", - "101010": "101010", "c5e6f7": "5781c7", "94d6e6": "34507e", "29293a": "ffa849", @@ -24,7 +21,6 @@ "c54591": "50a8c2", "9e357b": "366ea4", "73427b": "7b1213", - "c54a94": "983121", - "efffff": "efffff" + "c54a94": "983121" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/458.json b/public/images/pokemon/variant/458.json index cac7ad8d381..5fd291d1021 100644 --- a/public/images/pokemon/variant/458.json +++ b/public/images/pokemon/variant/458.json @@ -5,11 +5,9 @@ "1052ad": "d98223", "639cd6": "ffbe49", "102952": "4b1e00", - "000000": "000000", "9cb5de": "cebea5", "b5deff": "eae0cb", "7b94a5": "a48e76", - "ffffff": "ffffff", "4a6373": "8d6c43" }, "2": { @@ -18,11 +16,9 @@ "1052ad": "9ec050", "639cd6": "c6e188", "102952": "233e05", - "000000": "000000", "9cb5de": "e5ca9c", "b5deff": "f3e6cc", "7b94a5": "cbaa7a", - "ffffff": "ffffff", "4a6373": "8d6c43" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/46.json b/public/images/pokemon/variant/46.json index d053c5e40b8..877ed57db83 100644 --- a/public/images/pokemon/variant/46.json +++ b/public/images/pokemon/variant/46.json @@ -5,14 +5,12 @@ "f76b6b": "d7b5b1", "c5b521": "d9c9b9", "ffd652": "f3e8dc", - "101010": "101010", "734a19": "521e0a", "3a2910": "311c07", "e68429": "bc4b23", "b56321": "85251b", "ffad63": "cf6423", "5a5a5a": "774718", - "fff7ff": "fff7ff", "a5a5ce": "ddaf52", "cecece": "f6dc7f" }, @@ -22,14 +20,12 @@ "f76b6b": "e83557", "c5b521": "e5d59c", "ffd652": "fffedf", - "101010": "101010", "734a19": "5a392d", "3a2910": "3a2108", "e68429": "d1afa3", "b56321": "98655f", "ffad63": "f3d8cb", "5a5a5a": "312b68", - "fff7ff": "fff7ff", "a5a5ce": "7070ea", "cecece": "92a4f0" }, @@ -39,14 +35,12 @@ "f76b6b": "5668f8", "c5b521": "b4c5d0", "ffd652": "ddf1f8", - "101010": "101010", "734a19": "3d2b4e", "3a2910": "1e152d", "e68429": "9779a6", "b56321": "6a507b", "ffad63": "bf9edd", "5a5a5a": "760013", - "fff7ff": "fff7ff", "a5a5ce": "e83557", "cecece": "ff878d" } diff --git a/public/images/pokemon/variant/461.json b/public/images/pokemon/variant/461.json index a3af436f1e1..e770a53d4ec 100644 --- a/public/images/pokemon/variant/461.json +++ b/public/images/pokemon/variant/461.json @@ -4,7 +4,6 @@ "c52973": "3a3d60", "ff94a5": "94a3c5", "f75273": "636896", - "101010": "101010", "424a84": "691043", "7384bd": "ac3755", "6b6bad": "8b274b", @@ -21,12 +20,10 @@ "c52973": "3d81c5", "ff94a5": "78ebfc", "f75273": "5cb0eb", - "101010": "101010", "424a84": "ecaa84", "7384bd": "ffeed4", "6b6bad": "ffd3a7", "293152": "96543f", - "ffffff": "ffffff", "c58c08": "8f1a8d", "ffd642": "e6509f", "c5bdce": "afd3e9", diff --git a/public/images/pokemon/variant/462.json b/public/images/pokemon/variant/462.json index 808b79b6da4..69da17dc2de 100644 --- a/public/images/pokemon/variant/462.json +++ b/public/images/pokemon/variant/462.json @@ -3,24 +3,18 @@ "ad8419": "8fb9cc", "f7ce52": "cee7f2", "635a6b": "90495b", - "ffffff": "ffffff", - "101010": "101010", "7b7b84": "90495b", "adadb5": "c36c77", "424252": "612e40", "8494c5": "ffc4b8", "9cbdef": "ffe9e5", - "6b739c": "f99596", - "d64a29": "d64a29", - "a53a29": "a53a29", - "732929": "732929" + "6b739c": "f99596" }, "2": { "ad8419": "6a9ca0", "f7ce52": "a7dcaa", "635a6b": "662e00", "ffffff": "fffb93", - "101010": "101010", "7b7b84": "662e00", "adadb5": "8c500b", "424252": "401d00", diff --git a/public/images/pokemon/variant/464.json b/public/images/pokemon/variant/464.json index 835bdca7c47..0d1ed67d49d 100644 --- a/public/images/pokemon/variant/464.json +++ b/public/images/pokemon/variant/464.json @@ -1,25 +1,18 @@ { "1": { - "6b6373": "6b6373", "3a3a4a": "3b2d40", "5a4a63": "514259", - "101010": "101010", - "efefff": "efefff", "29293a": "1f1028", "523100": "3b1f58", "7b6b7b": "6e5d7b", - "948cad": "948cad", "943a00": "4c2f6e", "ef5200": "6f4d9f", - "cecede": "cecede", - "ad2900": "ad2900", "bd4200": "60418a" }, "2": { "6b6373": "b66360", "3a3a4a": "701f38", "5a4a63": "8f2c41", - "101010": "101010", "efefff": "ffdfd1", "29293a": "442339", "523100": "492133", diff --git a/public/images/pokemon/variant/466.json b/public/images/pokemon/variant/466.json index b0a2bd12820..d81269246f2 100644 --- a/public/images/pokemon/variant/466.json +++ b/public/images/pokemon/variant/466.json @@ -4,29 +4,24 @@ "731900": "004f87", "ffde21": "f07224", "5a4a42": "5e3a3a", - "000000": "000000", "b53a19": "3194ce", "f7523a": "63c5ef", "ffef94": "e8aa8b", "312929": "2d2629", "c5ad42": "bd4c3a", "ffffff": "e8e8e8", - "b5b5c5": "b5bdc5", - "6b6b6b": "6b6b6b" + "b5b5c5": "b5bdc5" }, "1": { "9c844a": "668198", "731900": "73376d", "ffde21": "35ffab", "5a4a42": "465b69", - "000000": "000000", "b53a19": "a45ead", "f7523a": "f795f6", "ffef94": "baffde", "312929": "333931", "c5ad42": "4abaae", - "ffffff": "ffffff", - "b5b5c5": "e6d5da", - "6b6b6b": "6b6b6b" + "b5b5c5": "e6d5da" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/467.json b/public/images/pokemon/variant/467.json index 684a34c97fa..cd1ee711a46 100644 --- a/public/images/pokemon/variant/467.json +++ b/public/images/pokemon/variant/467.json @@ -5,19 +5,14 @@ "ffc53a": "fb8c3b", "cea53a": "db4d19", "f76331": "ee7f2d", - "4a4a42": "4a4a42", "9e344a": "8c3313", "ad3a52": "372d49", "642423": "272034", "4e251d": "581d08", - "101010": "101010", "e64231": "524b6f", "ff94a5": "777066", "c55a6b": "474139", - "ffffff": "ffffff", - "ced6e6": "ced6e6", - "9b3c56": "3f352f", - "2a2523": "2a2523" + "9b3c56": "3f352f" }, "2": { "846321": "699296", @@ -25,18 +20,13 @@ "ffc53a": "eaffff", "cea53a": "c6edf2", "f76331": "478bc0", - "4a4a42": "4a4a42", "9e344a": "4065b0", "ad3a52": "4065b0", "642423": "303d58", "4e251d": "303d58", - "101010": "101010", "e64231": "5398cf", "ff94a5": "abc7de", "c55a6b": "7f90a9", - "ffffff": "ffffff", - "ced6e6": "ced6e6", - "9b3c56": "586271", - "2a2523": "2a2523" + "9b3c56": "586271" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/468.json b/public/images/pokemon/variant/468.json index f29881dcb1b..3196edc8f95 100644 --- a/public/images/pokemon/variant/468.json +++ b/public/images/pokemon/variant/468.json @@ -6,7 +6,6 @@ "4a5a73": "593237", "ce4a31": "1c7b7e", "bdc5de": "ceacac", - "101010": "101010", "4284ef": "d44779", "94b5ff": "ff7986", "bd8484": "28a6a5", @@ -19,7 +18,6 @@ "4a5a73": "452030", "ce4a31": "f6bd58", "bdc5de": "c2888c", - "101010": "101010", "4284ef": "ef884d", "94b5ff": "ffc490", "bd8484": "ffdbaa", @@ -32,7 +30,6 @@ "4a5a73": "254985", "ce4a31": "d97741", "bdc5de": "81aaca", - "101010": "101010", "4284ef": "db79db", "94b5ff": "e89fe5", "bd8484": "e48d41", diff --git a/public/images/pokemon/variant/47.json b/public/images/pokemon/variant/47.json index 4d953e02dcf..c55cc1f25f0 100644 --- a/public/images/pokemon/variant/47.json +++ b/public/images/pokemon/variant/47.json @@ -10,7 +10,6 @@ "b5423a": "85251b", "631000": "521e0a", "de6b31": "bc4b23", - "101010": "101010", "9c8ca5": "774718", "fff7ff": "f6dc7f", "d6d6d6": "ddaf52" @@ -26,7 +25,6 @@ "b5423a": "98655f", "631000": "5a392d", "de6b31": "d1afa3", - "101010": "101010", "9c8ca5": "312b68", "fff7ff": "92a4f0", "d6d6d6": "7070ea" @@ -42,7 +40,6 @@ "b5423a": "6a507b", "631000": "3d2b4e", "de6b31": "9779a6", - "101010": "101010", "9c8ca5": "aa1810", "fff7ff": "ee5a3b", "d6d6d6": "cb381f" diff --git a/public/images/pokemon/variant/470.json b/public/images/pokemon/variant/470.json index 227c74bb524..8af1cf54438 100644 --- a/public/images/pokemon/variant/470.json +++ b/public/images/pokemon/variant/470.json @@ -2,7 +2,6 @@ "0": { "31635a": "076849", "319c73": "17b579", - "101010": "101010", "6bbd8c": "6aec9e", "635242": "736151", "5a4221": "1c59a6", @@ -10,15 +9,11 @@ "bd9463": "c5a87a", "946331": "1c85a7", "3a2919": "0b1747", - "efffff": "efffff", - "846b42": "846b42", - "d6b573": "e8d09f", - "423a42": "423a42" + "d6b573": "e8d09f" }, "1": { "31635a": "024335", "319c73": "67a27a", - "101010": "101010", "6bbd8c": "a9d9ab", "635242": "736151", "5a4221": "541741", @@ -26,7 +21,6 @@ "bd9463": "975e45", "946331": "7a2c56", "3a2919": "0a2c33", - "efffff": "efffff", "846b42": "824734", "d6b573": "b78160", "423a42": "4b2629" @@ -34,7 +28,6 @@ "2": { "31635a": "9f5d29", "319c73": "d8a452", - "101010": "101010", "6bbd8c": "edd898", "635242": "4e230e", "5a4221": "803825", @@ -42,7 +35,6 @@ "bd9463": "6d4f33", "946331": "a95c3e", "3a2919": "552c12", - "efffff": "efffff", "846b42": "4a391e", "d6b573": "816242", "423a42": "310f06" diff --git a/public/images/pokemon/variant/471.json b/public/images/pokemon/variant/471.json index 14cc5e429e8..4240babbcae 100644 --- a/public/images/pokemon/variant/471.json +++ b/public/images/pokemon/variant/471.json @@ -1,15 +1,12 @@ { "0": { - "101010": "101010", "7b9cb5": "dad9ea", "94e6ef": "f8f7ff", "525a84": "636b94", "52639c": "54bbd2", "3a3a52": "1a6782", "529cde": "a0e7f7", - "313a4a": "313a4a", "425a6b": "3597ac", - "efffff": "efffff", "94b5ce": "e6e3f3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/474.json b/public/images/pokemon/variant/474.json index 83d717503a6..6ec1f7edef1 100644 --- a/public/images/pokemon/variant/474.json +++ b/public/images/pokemon/variant/474.json @@ -3,10 +3,8 @@ "5a3a4a": "9e264e", "94426b": "d95492", "ef5a63": "f8a8e6", - "101010": "101010", "bd4a6b": "e883c8", "ff94b5": "fccef2", - "ffffff": "ffffff", "313a63": "110a25", "8cd6ff": "5e4868", "31739c": "271a3e", @@ -19,7 +17,6 @@ "5a3a4a": "31150e", "94426b": "491c0c", "ef5a63": "82391d", - "101010": "101010", "bd4a6b": "612a17", "ff94b5": "a04c27", "ffffff": "ffe4d4", diff --git a/public/images/pokemon/variant/475.json b/public/images/pokemon/variant/475.json index 68f3a5a6432..2b1cb0e6173 100644 --- a/public/images/pokemon/variant/475.json +++ b/public/images/pokemon/variant/475.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "7394a5": "fff1c0", "7bc5b5": "ebc984", "527b84": "17042f", @@ -11,24 +10,17 @@ "c5cede": "ffc4a6", "efefff": "f8efde", "a5b5ce": "ffc4a6", - "ffffff": "ffffff", "e6523a": "da3e4f", "ff9c84": "ca2033", "7b5252": "b80e2f" }, "2": { - "101010": "101010", "7394a5": "5b5790", "7bc5b5": "3f427f", "527b84": "2e2746", "3a5252": "34345d", "42845a": "242745", "5ab56b": "282c5d", - "7b8cad": "7b8cad", - "c5cede": "c5cede", - "efefff": "efefff", - "a5b5ce": "a5b5ce", - "ffffff": "ffffff", "e6523a": "d846c1", "ff9c84": "b035ae", "7b5252": "9e2a7c" diff --git a/public/images/pokemon/variant/478.json b/public/images/pokemon/variant/478.json index a27441bba77..cb6fdbce804 100644 --- a/public/images/pokemon/variant/478.json +++ b/public/images/pokemon/variant/478.json @@ -3,7 +3,6 @@ "527bb5": "189c28", "42528c": "0f8c40", "73b5d6": "65d64d", - "101010": "101010", "42426b": "123120", "8c8cad": "244f32", "ffffff": "558752", diff --git a/public/images/pokemon/variant/479-fan.json b/public/images/pokemon/variant/479-fan.json index 6f4818f6770..8fd87e5db9b 100644 --- a/public/images/pokemon/variant/479-fan.json +++ b/public/images/pokemon/variant/479-fan.json @@ -8,7 +8,6 @@ "ffffff": "fbffbd", "ef7329": "417131", "ffad84": "819d56", - "101010": "101010", "4a4a52": "2e3f18", "bdbdbd": "d8e082", "ffde73": "7aa26f", @@ -20,12 +19,9 @@ "ffefa5": "edf2fa", "c54a19": "cbb240", "7b3a21": "ad7d28", - "ffffff": "ffffff", "ef7329": "e4de6d", "ffad84": "fcfebf", - "101010": "101010", "4a4a52": "374f6c", - "bdbdbd": "bdbdbd", "ffde73": "e99499", "e67319": "d36172" } diff --git a/public/images/pokemon/variant/479-frost.json b/public/images/pokemon/variant/479-frost.json index a45e4bea735..4277eb9dc63 100644 --- a/public/images/pokemon/variant/479-frost.json +++ b/public/images/pokemon/variant/479-frost.json @@ -7,7 +7,6 @@ "ffad84": "819d56", "7b3a21": "183b29", "ef7329": "417131", - "101010": "101010", "ffffff": "fbffbd", "9484de": "9ea436", "6b3aad": "648c50", @@ -22,11 +21,8 @@ "ffad84": "e9edfe", "7b3a21": "536d8c", "ef7329": "c5cbe5", - "101010": "101010", - "ffffff": "ffffff", "9484de": "f0e096", "6b3aad": "d3a94c", - "bdbdbd": "bdbdbd", "4a4a52": "2f4865" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/479-heat.json b/public/images/pokemon/variant/479-heat.json index b0cf3c22876..b9d3c248833 100644 --- a/public/images/pokemon/variant/479-heat.json +++ b/public/images/pokemon/variant/479-heat.json @@ -11,7 +11,6 @@ "bdbdbd": "d8e082", "ff7373": "9ea436", "ce313a": "648c50", - "101010": "101010", "292929": "183b29", "4a4a52": "505a46" }, @@ -19,15 +18,12 @@ "bd2929": "cbbf4c", "ff4231": "f5f4ab", "ff9c94": "fdffe1", - "ffffff": "ffffff", "c54a19": "d06280", "7b3a21": "9e3867", "ef7329": "ff8493", "ffad84": "ffd5d0", - "bdbdbd": "bdbdbd", "ff7373": "37c983", "ce313a": "1b976a", - "101010": "101010", "292929": "581944", "4a4a52": "793142" } diff --git a/public/images/pokemon/variant/479-mow.json b/public/images/pokemon/variant/479-mow.json index ef080956443..31daefc660c 100644 --- a/public/images/pokemon/variant/479-mow.json +++ b/public/images/pokemon/variant/479-mow.json @@ -7,7 +7,6 @@ "8cf7ad": "9ea436", "ef7329": "417131", "ffad84": "819d56", - "101010": "101010", "4a4a52": "183b29", "21b552": "9ea436", "ffffff": "fbffbd", @@ -22,11 +21,7 @@ "8cf7ad": "ffbcc2", "ef7329": "279e69", "ffad84": "6ada9c", - "101010": "101010", - "4a4a52": "4a4a52", "21b552": "83d0ec", - "ffffff": "ffffff", - "bdbdbd": "bdbdbd", "087b42": "40b4de" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/479-wash.json b/public/images/pokemon/variant/479-wash.json index 05366c8e80f..d24a1094568 100644 --- a/public/images/pokemon/variant/479-wash.json +++ b/public/images/pokemon/variant/479-wash.json @@ -11,7 +11,6 @@ "ffffff": "fbffbd", "317bef": "9ea436", "0842ad": "648c50", - "101010": "101010", "4a4a52": "183b29" }, "2": { @@ -22,11 +21,8 @@ "ef7329": "86d7ec", "7b3a21": "255e90", "ffad84": "bbf7fe", - "bdbdbd": "bdbdbd", - "ffffff": "ffffff", "317bef": "73757f", "0842ad": "53555e", - "101010": "101010", "4a4a52": "3f3f4e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/479.json b/public/images/pokemon/variant/479.json index 1ecfab64f61..2ae2cf23642 100644 --- a/public/images/pokemon/variant/479.json +++ b/public/images/pokemon/variant/479.json @@ -8,7 +8,6 @@ "ef7329": "417131", "ffad84": "819d56", "ffffff": "fbffbd", - "101010": "101010", "bdbdbd": "d8e082", "317bef": "89a271", "0842ad": "648c50" @@ -21,9 +20,6 @@ "7b3a21": "242834", "ef7329": "4d5262", "ffad84": "777b88", - "ffffff": "ffffff", - "101010": "101010", - "bdbdbd": "bdbdbd", "317bef": "e9919c", "0842ad": "c95367" } diff --git a/public/images/pokemon/variant/480.json b/public/images/pokemon/variant/480.json index d65bc170282..de8d9f0f7c1 100644 --- a/public/images/pokemon/variant/480.json +++ b/public/images/pokemon/variant/480.json @@ -1,7 +1,6 @@ { "0": { "735a42": "86340d", - "101010": "101010", "f7c573": "e8824f", "ffde9c": "ffb376", "ad8c42": "ba5327", @@ -10,13 +9,11 @@ "424242": "542416", "ef4242": "e141ed", "5a3a42": "440e8c", - "ffffff": "ffffff", "949cc5": "d49472", "ad4242": "ad2dd7" }, "1": { "735a42": "0b1f51", - "101010": "101010", "f7c573": "3675ba", "ffde9c": "5099d9", "ad8c42": "1e4891", @@ -25,13 +22,11 @@ "424242": "162460", "ef4242": "ffbd73", "5a3a42": "aa4e1c", - "ffffff": "ffffff", "949cc5": "6085d4", "ad4242": "ef8d45" }, "2": { "735a42": "123723", - "101010": "101010", "f7c573": "4d967d", "ffde9c": "92dabb", "ad8c42": "24594a", @@ -40,7 +35,6 @@ "424242": "47684e", "ef4242": "c45cec", "5a3a42": "5f1c68", - "ffffff": "ffffff", "949cc5": "a5bca8", "ad4242": "ab32ce" } diff --git a/public/images/pokemon/variant/481.json b/public/images/pokemon/variant/481.json index 54a3e938751..14b00812c7d 100644 --- a/public/images/pokemon/variant/481.json +++ b/public/images/pokemon/variant/481.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "84426b": "691149", "ef73ad": "b35596", "b55284": "93397b", @@ -8,7 +7,6 @@ "ef4242": "ffa85f", "5a3a42": "bf5614", "7b7394": "8d4275", - "ffffff": "ffffff", "b5cef7": "fbc8e1", "949cc5": "d295b9", "ad4242": "ef8134", @@ -17,7 +15,6 @@ "424242": "591c4b" }, "1": { - "101010": "101010", "84426b": "371959", "ef73ad": "785194", "b55284": "59367e", @@ -25,7 +22,6 @@ "ef4242": "28c75c", "5a3a42": "076033", "7b7394": "6b4b75", - "ffffff": "ffffff", "b5cef7": "e7d6ea", "949cc5": "b89cbb", "ad4242": "17a352", @@ -34,7 +30,6 @@ "424242": "51385c" }, "2": { - "101010": "101010", "84426b": "813401", "ef73ad": "ebab24", "b55284": "d97e2b", @@ -42,7 +37,6 @@ "ef4242": "ce569c", "5a3a42": "7c2060", "7b7394": "896149", - "ffffff": "ffffff", "b5cef7": "f7e0b5", "949cc5": "c5ac94", "ad4242": "bb3e8d", diff --git a/public/images/pokemon/variant/482.json b/public/images/pokemon/variant/482.json index 8665895fa59..5b48766e609 100644 --- a/public/images/pokemon/variant/482.json +++ b/public/images/pokemon/variant/482.json @@ -5,16 +5,12 @@ "b5cef7": "c5e1ef", "424242": "3e5a9d", "5a94c5": "27bac2", - "101010": "101010", "426394": "0f7293", "949cc5": "86abcc", "5a3a42": "500c66", "ef4242": "a045e1", "ad4242": "7c1caa", - "73ade6": "44e9e1", - "ffffff": "ffffff", - "ffb521": "ffb521", - "ad8c42": "ad8c42" + "73ade6": "44e9e1" }, "1": { "7b7394": "5d8e91", @@ -22,14 +18,12 @@ "b5cef7": "b5f7df", "424242": "3c6268", "5a94c5": "488356", - "101010": "101010", "426394": "32613b", "949cc5": "7ab5ad", "5a3a42": "9e3b0f", "ef4242": "eb914d", "ad4242": "d26725", "73ade6": "82be84", - "ffffff": "ffffff", "ffb521": "553178", "ad8c42": "9c5fb8" }, @@ -39,14 +33,12 @@ "b5cef7": "dbc6e6", "424242": "573d79", "5a94c5": "ce569c", - "101010": "101010", "426394": "a4327e", "949cc5": "ae8bc7", "5a3a42": "845104", "ef4242": "dfb132", "ad4242": "cb901d", "73ade6": "ec84be", - "ffffff": "ffffff", "ffb521": "2acf53", "ad8c42": "52e589" } diff --git a/public/images/pokemon/variant/485.json b/public/images/pokemon/variant/485.json index 91ff1824b7a..3a9144ba9c5 100644 --- a/public/images/pokemon/variant/485.json +++ b/public/images/pokemon/variant/485.json @@ -1,6 +1,5 @@ { "1": { - "737373": "737373", "5a3131": "313f5a", "e6e6ef": "ffffff", "c5c5c5": "e3e3e3", @@ -10,13 +9,11 @@ "949494": "bfa9a9", "ce8429": "29ce5a", "ffa510": "10ff6b", - "ffffff": "ffffff", "525252": "767676", "b54229": "b5a529", "ff523a": "fcff3a" }, "2": { - "737373": "737373", "5a3131": "462151", "e6e6ef": "b0b0b0", "c5c5c5": "949494", @@ -26,7 +23,6 @@ "949494": "636363", "ce8429": "ce2988", "ffa510": "f110ff", - "ffffff": "ffffff", "525252": "514949", "b54229": "4ab529", "ff523a": "7aff3a" diff --git a/public/images/pokemon/variant/487-altered.json b/public/images/pokemon/variant/487-altered.json index 8b1ce80eac6..929526b87b7 100644 --- a/public/images/pokemon/variant/487-altered.json +++ b/public/images/pokemon/variant/487-altered.json @@ -9,7 +9,6 @@ "9494a5": "535e7e", "c5ced6": "84a1b9", "ad7b00": "084740", - "000000": "000000", "ff4252": "ff78ef", "a5213a": "b23dad", "4a4a5a": "2f3154", @@ -25,7 +24,6 @@ "9494a5": "3e5056", "c5ced6": "597379", "ad7b00": "7b623f", - "000000": "000000", "ff4252": "46e92a", "a5213a": "16b811", "4a4a5a": "273c30", diff --git a/public/images/pokemon/variant/487-origin.json b/public/images/pokemon/variant/487-origin.json index dc396105b93..1d19e13cc14 100644 --- a/public/images/pokemon/variant/487-origin.json +++ b/public/images/pokemon/variant/487-origin.json @@ -13,7 +13,6 @@ "c5ced6": "acb6d8", "9494a5": "8485b9", "ffefc5": "9fffd4", - "000000": "000000", "6b6b7b": "7a58a6" }, "2": { @@ -29,8 +28,6 @@ "ce9c00": "e2d4af", "c5ced6": "818a7c", "9494a5": "495f64", - "ffefc5": "ffefc5", - "000000": "000000", "6b6b7b": "37434b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/488.json b/public/images/pokemon/variant/488.json index 53e8b23da16..59e1c46f74c 100644 --- a/public/images/pokemon/variant/488.json +++ b/public/images/pokemon/variant/488.json @@ -1,7 +1,6 @@ { "1": { "6b5231": "5a3c2a", - "101010": "101010", "ffefbd": "fdf0d6", "ad945a": "bc977d", "ffd673": "ddbfa4", @@ -9,12 +8,10 @@ "d68cce": "dd8d2e", "8c427b": "721e01", "523a5a": "420600", - "ffffff": "ffffff", "e6c5ef": "ffd28c", "8494f7": "4863b6", "526bb5": "304190", - "3a427b": "181d46", - "c5b5b5": "c5b5b5" + "3a427b": "181d46" }, "2": { "6b5231": "67858a", @@ -26,7 +23,6 @@ "d68cce": "7fe14b", "8c427b": "168557", "523a5a": "084c38", - "ffffff": "ffffff", "e6c5ef": "e0ff8c", "8494f7": "4a4f5f", "526bb5": "1f2435", diff --git a/public/images/pokemon/variant/489.json b/public/images/pokemon/variant/489.json index f7e55dad2a7..5fad38db4e7 100644 --- a/public/images/pokemon/variant/489.json +++ b/public/images/pokemon/variant/489.json @@ -1,48 +1,34 @@ { "0": { "317bad": "399271", - "101010": "101010", "3a529c": "185b4f", "9ce6ff": "c3ffcd", "6bc5f7": "9bf3b7", "199cd6": "69c796", "ceefff": "e3ffe3", "196bde": "326260", - "ffffff": "ffffff", - "948c9c": "948c9c", - "4a526b": "4a526b", "ad3a29": "c37a31", "de849c": "ffcb68", "e64210": "d19449" }, "1": { "317bad": "964d17", - "101010": "101010", "3a529c": "682307", "9ce6ff": "ffd289", "6bc5f7": "f5a54e", "199cd6": "c27138", - "ceefff": "ceefff", "196bde": "23395b", - "ffffff": "ffffff", - "948c9c": "948c9c", - "4a526b": "4a526b", "ad3a29": "3c68ad", "de849c": "b9e6ff", "e64210": "4d9ac4" }, "2": { "317bad": "a43b74", - "101010": "101010", "3a529c": "84255f", "9ce6ff": "efa0b2", "6bc5f7": "e484a8", "199cd6": "c65086", - "ceefff": "ceefff", "196bde": "45135e", - "ffffff": "ffffff", - "948c9c": "948c9c", - "4a526b": "4a526b", "ad3a29": "652386", "de849c": "a884ff", "e64210": "893ac2" diff --git a/public/images/pokemon/variant/490.json b/public/images/pokemon/variant/490.json index 2b0ca7f8c23..c14dba48eea 100644 --- a/public/images/pokemon/variant/490.json +++ b/public/images/pokemon/variant/490.json @@ -2,14 +2,12 @@ "0": { "317bad": "399271", "199cd6": "69c796", - "101010": "101010", "6bc5f7": "9bf3b7", "294a84": "185b4f", "9ce6ff": "cdffd7", "ceefff": "eaffeb", "ffde52": "215957", "e6ad52": "143c3e", - "ffffff": "ffffff", "ad3a29": "c37a31", "de849c": "ffcb68", "e64210": "d19449" @@ -17,14 +15,12 @@ "1": { "317bad": "964d17", "199cd6": "c27138", - "101010": "101010", "6bc5f7": "f5a54e", "294a84": "682307", "9ce6ff": "ffd289", "ceefff": "ffeecc", "ffde52": "38577c", "e6ad52": "23395b", - "ffffff": "ffffff", "ad3a29": "3c68ad", "de849c": "b9e6ff", "e64210": "4d9ac4" @@ -32,14 +28,11 @@ "2": { "317bad": "b8488c", "199cd6": "cc659c", - "101010": "101010", "6bc5f7": "de89b3", "294a84": "912b6e", "9ce6ff": "e7a6c3", - "ceefff": "ceefff", "ffde52": "692a88", "e6ad52": "45135e", - "ffffff": "ffffff", "ad3a29": "652386", "de849c": "a884ff", "e64210": "893ac2" diff --git a/public/images/pokemon/variant/491.json b/public/images/pokemon/variant/491.json index 51bdf9a431f..13289bf4c2f 100644 --- a/public/images/pokemon/variant/491.json +++ b/public/images/pokemon/variant/491.json @@ -3,28 +3,24 @@ "848484": "3b6771", "adb5bd": "7cbcc1", "524a4a": "53818e", - "101010": "101010", "313131": "274656", "dee6ef": "bcdddd", "520000": "0a436c", "942942": "1e849a", "108cad": "a32819", "29e6ff": "d7502b", - "ffffff": "ffffff", "e63a29": "4fe0cd" }, "2": { "848484": "694624", "adb5bd": "ce9c7a", "524a4a": "b42f40", - "101010": "101010", "313131": "7a1d36", "dee6ef": "ffcdbc", "520000": "6a2c00", "942942": "ba5a19", "108cad": "25a6c7", "29e6ff": "76f7ff", - "ffffff": "ffffff", "e63a29": "ffa645" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/492-land.json b/public/images/pokemon/variant/492-land.json index 32deb188493..46b355d108d 100644 --- a/public/images/pokemon/variant/492-land.json +++ b/public/images/pokemon/variant/492-land.json @@ -3,13 +3,11 @@ "8cad63": "aa671e", "5a7342": "743510", "adde63": "f0a852", - "ffef7b": "ffef7b", "844a6b": "326a9a", "ef8ca5": "81bdd3", "635a6b": "a7604e", "bdc5d6": "e0bba1", "ffffff": "fff4ea", - "101010": "101010", "3a9442": "9f422a", "ce6b8c": "67a9c6", "31633a": "521605", diff --git a/public/images/pokemon/variant/492-sky.json b/public/images/pokemon/variant/492-sky.json index 5ca67b4871a..f22d2130ba7 100644 --- a/public/images/pokemon/variant/492-sky.json +++ b/public/images/pokemon/variant/492-sky.json @@ -7,7 +7,6 @@ "52525a": "78492a", "ffffff": "fffae9", "ceced6": "e0cea9", - "101010": "101010", "bd4a5a": "ce4626", "7b3a52": "8f210d", "f74a42": "ee7b56" @@ -20,7 +19,6 @@ "52525a": "7a3126", "ffffff": "fff4ea", "ceced6": "e0bba1", - "101010": "101010", "bd4a5a": "7e399c", "7b3a52": "531f72", "f74a42": "b96bd2" diff --git a/public/images/pokemon/variant/494.json b/public/images/pokemon/variant/494.json index 78e5a04a275..a096e70d70b 100644 --- a/public/images/pokemon/variant/494.json +++ b/public/images/pokemon/variant/494.json @@ -3,34 +3,23 @@ "8c3110": "563a0a", "ff6b19": "fff1ce", "bd4a00": "706040", - "000000": "000000", "c59c5a": "d96030", "ffe6ad": "ee8e3e", "6b4a10": "902300", - "3a3a3a": "3a3a3a", "846b3a": "c43d21", "3a5aad": "084f4c", - "ffffff": "ffffff", - "c5bdbd": "c5bdbd", - "73adff": "34a696", - "a55a5a": "a55a5a", - "c57373": "c57373" + "73adff": "34a696" }, "2": { "8c3110": "813a61", "ff6b19": "ffb7e0", "bd4a00": "b9648d", - "000000": "000000", "c59c5a": "45465d", "ffe6ad": "72758a", "6b4a10": "1e1b36", "3a3a3a": "120d26", "846b3a": "2b2a40", "3a5aad": "710643", - "ffffff": "ffffff", - "c5bdbd": "c5bdbd", - "73adff": "cd5fa5", - "a55a5a": "a55a5a", - "c57373": "c57373" + "73adff": "cd5fa5" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/495.json b/public/images/pokemon/variant/495.json index c1cb2c10db1..07fc4b6b717 100644 --- a/public/images/pokemon/variant/495.json +++ b/public/images/pokemon/variant/495.json @@ -2,7 +2,6 @@ "1": { "005200": "1f153d", "00b500": "585fa0", - "080808": "080808", "ffde29": "ff884c", "fff7bd": "ffe5b2", "8c7b31": "7f533f", @@ -10,14 +9,12 @@ "c59c00": "cc4328", "943a00": "4c3d99", "5a2100": "1e1e66", - "ffffff": "ffffff", "de7b42": "8766cc", "088400": "363270" }, "2": { "005200": "7f194c", "00b500": "e55b77", - "080808": "080808", "ffde29": "ffffff", "fff7bd": "fff2f8", "8c7b31": "664c61", @@ -25,7 +22,6 @@ "c59c00": "cecee5", "943a00": "168399", "5a2100": "054566", - "ffffff": "ffffff", "de7b42": "33cccc", "088400": "b23561" } diff --git a/public/images/pokemon/variant/496.json b/public/images/pokemon/variant/496.json index 6c9f5ab6096..1e2661a7f40 100644 --- a/public/images/pokemon/variant/496.json +++ b/public/images/pokemon/variant/496.json @@ -6,12 +6,9 @@ "8c7b31": "7f533f", "21943a": "433e7c", "fff7bd": "ffe5b2", - "000000": "000000", "734210": "4c3d99", "bd4a21": "8766cc", - "ffffff": "ffffff", - "c5bd63": "cca37a", - "081010": "081010" + "c5bd63": "cca37a" }, "2": { "105229": "7f194c", @@ -20,11 +17,8 @@ "8c7b31": "664c61", "21943a": "b23561", "fff7bd": "fff2f8", - "000000": "000000", "734210": "4a52a5", "bd4a21": "778fd8", - "ffffff": "ffffff", - "c5bd63": "ccadc1", - "081010": "081010" + "c5bd63": "ccadc1" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/497.json b/public/images/pokemon/variant/497.json index 3fff190062b..d84d71dd3d4 100644 --- a/public/images/pokemon/variant/497.json +++ b/public/images/pokemon/variant/497.json @@ -1,11 +1,9 @@ { "1": { - "8c8cad": "8c8cad", "6b733a": "99261e", "ffce29": "ff9966", "10733a": "1b0f3f", "081010": "06010c", - "ffffff": "ffffff", "d69c08": "cc523d", "199c4a": "2e2872", "c5c5d6": "c5c5d5", diff --git a/public/images/pokemon/variant/5.json b/public/images/pokemon/variant/5.json index 3bb5b8d92f6..9647a507698 100644 --- a/public/images/pokemon/variant/5.json +++ b/public/images/pokemon/variant/5.json @@ -4,16 +4,12 @@ "942110": "10292c", "ff846b": "40a78f", "ff524a": "2a6e70", - "101010": "101010", - "b5b5b5": "b5b5b5", - "ffffff": "ffffff", "005aff": "ce1010", "ff4200": "5033ce", "ffa500": "9e59db", "e6cead": "99f4f7", "cead7b": "6ee3e5", "ffde29": "e9bfff", - "6b6b6b": "6b6b6b", "b58c5a": "60c5c8" }, "2": { @@ -21,16 +17,12 @@ "942110": "101a70", "ff846b": "418ae2", "ff524a": "2564bc", - "101010": "101010", - "b5b5b5": "b5b5b5", - "ffffff": "ffffff", "005aff": "2b75ff", "ff4200": "4c83d4", "ffa500": "96e8e8", "e6cead": "5e238e", "cead7b": "47177a", "ffde29": "f9fffa", - "6b6b6b": "6b6b6b", "b58c5a": "340d6b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/50.json b/public/images/pokemon/variant/50.json index e12b740720f..dd71578dd77 100644 --- a/public/images/pokemon/variant/50.json +++ b/public/images/pokemon/variant/50.json @@ -4,8 +4,6 @@ "c57342": "4eb578", "a55a5a": "2b8d62", "de9c5a": "7ade9a", - "101010": "101010", - "ffffff": "ffffff", "d63a4a": "ef4da0", "730019": "882859", "ffad94": "ffc6cf", @@ -20,8 +18,6 @@ "c57342": "f2ad3d", "a55a5a": "cc8029", "de9c5a": "ffde62", - "101010": "101010", - "ffffff": "ffffff", "d63a4a": "c3ccd9", "730019": "62738c", "ffad94": "ffffff", diff --git a/public/images/pokemon/variant/51.json b/public/images/pokemon/variant/51.json index 969ea6baa27..cc4e4419a61 100644 --- a/public/images/pokemon/variant/51.json +++ b/public/images/pokemon/variant/51.json @@ -4,8 +4,6 @@ "5a3119": "10644e", "de9c5a": "7ade9a", "c57342": "4eb578", - "101010": "101010", - "ffffff": "ffffff", "730019": "882859", "d63a4a": "ef4da0", "ffad94": "ffc6cf", @@ -20,8 +18,6 @@ "5a3119": "a66010", "de9c5a": "ffde62", "c57342": "f2ad3d", - "101010": "101010", - "ffffff": "ffffff", "730019": "62738c", "d63a4a": "c3ccd9", "ffad94": "ffffff", diff --git a/public/images/pokemon/variant/517.json b/public/images/pokemon/variant/517.json index 012ed3a717c..eb14a152580 100644 --- a/public/images/pokemon/variant/517.json +++ b/public/images/pokemon/variant/517.json @@ -4,13 +4,11 @@ "ffc5ce": "7ed1a3", "844263": "2d7a6e", "845a94": "087173", - "101010": "101010", "ad7bce": "119b87", "ffd6de": "b9ecbf", "f78cd6": "5fafdf", "de7bbd": "3175b5", "ad2942": "ca2793", - "ffffff": "ffffff", "de2942": "f455a8", "e6adc5": "5cb391", "634a6b": "003f4f" @@ -20,13 +18,11 @@ "ffc5ce": "3f88ba", "844263": "182c53", "845a94": "923a35", - "101010": "101010", "ad7bce": "d6654d", "ffd6de": "71c1e4", "f78cd6": "efc375", "de7bbd": "cd8042", "ad2942": "9b1112", - "ffffff": "ffffff", "de2942": "bd3a25", "e6adc5": "3070b5", "634a6b": "6a111c" diff --git a/public/images/pokemon/variant/518.json b/public/images/pokemon/variant/518.json index cdc86872a18..0113fb54ba1 100644 --- a/public/images/pokemon/variant/518.json +++ b/public/images/pokemon/variant/518.json @@ -8,10 +8,8 @@ "947bde": "e4845e", "9c5a63": "854655", "ffc5ce": "f5dddf", - "101010": "101010", "ce9c94": "efbcc9", - "525252": "a86c76", - "6b314a": "6b314a" + "525252": "a86c76" }, "2": { "bd73ad": "314da0", @@ -22,9 +20,7 @@ "947bde": "ffdcaa", "9c5a63": "151c59", "ffc5ce": "384a8f", - "101010": "101010", "ce9c94": "233175", - "525252": "0b0f3c", - "6b314a": "6b314a" + "525252": "0b0f3c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/52-gigantamax.json b/public/images/pokemon/variant/52-gigantamax.json index 2910872ad30..5a688f9ffa2 100644 --- a/public/images/pokemon/variant/52-gigantamax.json +++ b/public/images/pokemon/variant/52-gigantamax.json @@ -4,12 +4,7 @@ "7f5745": "5b4a3b", "fbf7e6": "ece3c7", "f0dea2": "c7b497", - "101010": "101010", - "986100": "986100", "d46140": "ac68b5", - "f9d400": "f9d400", - "f6f6f6": "f6f6f6", - "cca700": "cca700", "fced87": "ffd156", "944100": "751e7c", "c5810b": "b146ac", @@ -20,11 +15,9 @@ "7f5745": "552e15", "fbf7e6": "e5bc79", "f0dea2": "c08647", - "101010": "101010", "986100": "683700", "d46140": "dd4c2a", "f9d400": "ffbf3f", - "f6f6f6": "f6f6f6", "cca700": "a96c00", "fced87": "55d0eb", "944100": "2948ad", @@ -36,11 +29,9 @@ "7f5745": "2a221c", "fbf7e6": "807d77", "f0dea2": "524f4a", - "101010": "101010", "986100": "986f00", "d46140": "ffd0c5", "f9d400": "f9e600", - "f6f6f6": "f6f6f6", "cca700": "efc300", "fced87": "77e84e", "944100": "256a24", diff --git a/public/images/pokemon/variant/52.json b/public/images/pokemon/variant/52.json index 622f878120b..00ff0470ef3 100644 --- a/public/images/pokemon/variant/52.json +++ b/public/images/pokemon/variant/52.json @@ -2,16 +2,10 @@ "0": { "8c6b00": "5b4a3b", "ffe684": "c7b497", - "101010": "101010", - "cea500": "cea500", - "ffd600": "ffd600", - "ffffff": "ffffff", "d65a3a": "af4dbc", "ff7352": "e177de", - "945a00": "945a00", "debd3a": "816f5c", "ffffb5": "ece3c7", - "e6e6e6": "e6e6e6", "944200": "86358c", "ef9c31": "d577c9", "c57b08": "be5fba" @@ -19,16 +13,12 @@ "1": { "8c6b00": "552e15", "ffe684": "c08647", - "101010": "101010", "cea500": "a96c00", "ffd600": "ffbf3f", - "ffffff": "ffffff", "d65a3a": "b62315", "ff7352": "dd4c2a", - "945a00": "945a00", "debd3a": "915d2f", "ffffb5": "e5bc79", - "e6e6e6": "e6e6e6", "944200": "2948ad", "ef9c31": "7bf7f7", "c57b08": "52add6" @@ -36,16 +26,13 @@ "2": { "8c6b00": "241d18", "ffe684": "524f4a", - "101010": "101010", "cea500": "d2ac00", "ffd600": "f9e600", - "ffffff": "ffffff", "d65a3a": "d06e6b", "ff7352": "fab2a1", "945a00": "986f00", "debd3a": "322d28", "ffffb5": "807d77", - "e6e6e6": "e6e6e6", "944200": "3c693b", "ef9c31": "c1e8b2", "c57b08": "88c082" diff --git a/public/images/pokemon/variant/524.json b/public/images/pokemon/variant/524.json index a13526e2c5e..f03b1ec5152 100644 --- a/public/images/pokemon/variant/524.json +++ b/public/images/pokemon/variant/524.json @@ -1,7 +1,6 @@ { "1": { "3a2119": "4d8c77", - "000000": "000000", "7b5a4a": "97d9c3", "5a4231": "63a690", "19213a": "292538", @@ -13,7 +12,6 @@ }, "2": { "3a2119": "292933", - "000000": "000000", "7b5a4a": "979bb3", "5a4231": "515266", "19213a": "584245", diff --git a/public/images/pokemon/variant/525.json b/public/images/pokemon/variant/525.json index dd485da0763..3821f88f78d 100644 --- a/public/images/pokemon/variant/525.json +++ b/public/images/pokemon/variant/525.json @@ -1,7 +1,6 @@ { "1": { "293a6b": "464558", - "101010": "101010", "42528c": "656273", "21293a": "292538", "ad2919": "0d6d58", @@ -14,7 +13,6 @@ }, "2": { "293a6b": "9b7570", - "101010": "101010", "42528c": "cdac94", "21293a": "584245", "ad2919": "a7323b", diff --git a/public/images/pokemon/variant/53.json b/public/images/pokemon/variant/53.json index af32e750d29..9d42a70b47d 100644 --- a/public/images/pokemon/variant/53.json +++ b/public/images/pokemon/variant/53.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "947b21": "af4dbc", "bda54a": "e177de", "845200": "5b4a3b", @@ -9,13 +8,9 @@ "735a10": "de6363", "b58429": "816f5c", "f75242": "e9bb00", - "ffffff": "ffffff", - "ffbd9c": "ffbd9c", - "a51000": "b56e00", - "dedede": "dedede" + "a51000": "b56e00" }, "1": { - "101010": "101010", "947b21": "b62315", "bda54a": "dd4c2a", "845200": "552e15", @@ -24,13 +19,10 @@ "735a10": "de6363", "b58429": "431a0e", "f75242": "52add6", - "ffffff": "ffffff", "ffbd9c": "dd4c2a", - "a51000": "2948ad", - "dedede": "dedede" + "a51000": "2948ad" }, "2": { - "101010": "101010", "947b21": "d06e6b", "bda54a": "fab2a1", "845200": "241d18", @@ -39,9 +31,6 @@ "735a10": "de6363", "b58429": "28221e", "f75242": "5ed835", - "ffffff": "ffffff", - "ffbd9c": "ffbd9c", - "a51000": "3ba624", - "dedede": "dedede" + "a51000": "3ba624" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/531-mega.json b/public/images/pokemon/variant/531-mega.json index eedd2b17f19..851a0277af4 100644 --- a/public/images/pokemon/variant/531-mega.json +++ b/public/images/pokemon/variant/531-mega.json @@ -7,7 +7,6 @@ "ffb3ae": "f5a779", "ffe1ec": "f17475", "fbfbfb": "f0728d", - "181818": "181818", "c4b3b6": "cc3a74", "df7b95": "870505", "ffebee": "fcb7c5", @@ -22,7 +21,6 @@ "ffb3ae": "f6e3a8", "ffe1ec": "637971", "fbfbfb": "323c52", - "181818": "181818", "c4b3b6": "202537", "df7b95": "e8a245", "ffebee": "fdf2ce", diff --git a/public/images/pokemon/variant/531.json b/public/images/pokemon/variant/531.json index fb0689f6784..140fe5c4646 100644 --- a/public/images/pokemon/variant/531.json +++ b/public/images/pokemon/variant/531.json @@ -1,6 +1,5 @@ { "1": { - "ce6b73": "ce6b73", "de8c94": "f5a779", "734a4a": "b64231", "6b634a": "874231", @@ -8,11 +7,8 @@ "ceb584": "d6bfb4", "1963ad": "ae0771", "a58c63": "a86d57", - "101010": "101010", - "ffffff": "ffffff", "63636b": "782b3e", - "d6d6e6": "cd5178", - "c55a3a": "c55a3a" + "d6d6e6": "cd5178" }, "2": { "ce6b73": "cf9a4a", @@ -23,10 +19,7 @@ "ceb584": "29878f", "1963ad": "841f21", "a58c63": "195359", - "101010": "101010", - "ffffff": "ffffff", "63636b": "13253c", - "d6d6e6": "394d6d", - "c55a3a": "c55a3a" + "d6d6e6": "394d6d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/532.json b/public/images/pokemon/variant/532.json index f94a3c7afeb..fa21ebcc8e0 100644 --- a/public/images/pokemon/variant/532.json +++ b/public/images/pokemon/variant/532.json @@ -1,14 +1,11 @@ { "1": { "5a4a4a": "30503b", - "101010": "101010", "c5bdad": "779f7d", "9c8c84": "5f836c", "843142": "3a3931", "ef7b8c": "6c6958", "c55a73": "545148", - "c5c5c5": "c5c5c5", - "ffffff": "ffffff", "5a3a08": "4c1d14", "ad7308": "954734", "7b5208": "663326", @@ -18,14 +15,11 @@ }, "2": { "5a4a4a": "546162", - "101010": "101010", "c5bdad": "95abab", "9c8c84": "70858b", "843142": "201f36", "ef7b8c": "504f66", "c55a73": "2f2b42", - "c5c5c5": "c5c5c5", - "ffffff": "ffffff", "5a3a08": "6f4b33", "ad7308": "b3774d", "7b5208": "825536", diff --git a/public/images/pokemon/variant/533.json b/public/images/pokemon/variant/533.json index 89f7248b05f..aa51abd4856 100644 --- a/public/images/pokemon/variant/533.json +++ b/public/images/pokemon/variant/533.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "84293a": "666b72", "de525a": "8d949f", "bd3a4a": "707885", @@ -11,12 +10,10 @@ "733152": "382c22", "9c4a84": "4e443b", "d66bb5": "6e675e", - "ffffff": "ffffff", "732942": "402652", "ad2942": "5a2d72" }, "2": { - "101010": "101010", "84293a": "6e869f", "de525a": "d6e6f5", "bd3a4a": "acc2d7", @@ -27,7 +24,6 @@ "733152": "121830", "9c4a84": "222a4a", "d66bb5": "37415c", - "ffffff": "ffffff", "732942": "5e5d53", "ad2942": "b5b18f" } diff --git a/public/images/pokemon/variant/534.json b/public/images/pokemon/variant/534.json index 9aa39b463fd..bf39355ad7d 100644 --- a/public/images/pokemon/variant/534.json +++ b/public/images/pokemon/variant/534.json @@ -3,7 +3,6 @@ "8c6b5a": "17524f", "5a3a21": "0d382d", "c59c73": "2a726e", - "101010": "101010", "3a3a31": "6e7878", "8c8c84": "becfd1", "6b6b63": "94a6a9", @@ -11,14 +10,12 @@ "c56bb5": "766b5f", "9c4a84": "5c5048", "732942": "2c2c3e", - "ad2942": "544c6e", - "ffffff": "ffffff" + "ad2942": "544c6e" }, "2": { "8c6b5a": "68797a", "5a3a21": "505252", "c59c73": "90aba8", - "101010": "101010", "3a3a31": "5c5830", "8c8c84": "e3c682", "6b6b63": "a78f4c", @@ -26,7 +23,6 @@ "c56bb5": "65377e", "9c4a84": "442a6c", "732942": "958d71", - "ad2942": "b5b18f", - "ffffff": "ffffff" + "ad2942": "b5b18f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/538.json b/public/images/pokemon/variant/538.json index 5bd4ac34471..f1b804a9bf7 100644 --- a/public/images/pokemon/variant/538.json +++ b/public/images/pokemon/variant/538.json @@ -2,25 +2,21 @@ "1": { "631919": "2a6045", "de5a5a": "5fb55f", - "101010": "101010", "ad3131": "348350", "3a3a3a": "70543d", "efe6d6": "d7b06a", "292921": "3e2514", "948c84": "8b6036", - "c5bdad": "a97745", - "f7f7f7": "f7f7f7" + "c5bdad": "a97745" }, "2": { "631919": "255268", "de5a5a": "638ed9", - "101010": "101010", "ad3131": "396999", "3a3a3a": "681a1a", "efe6d6": "cf3737", "292921": "360b0b", "948c84": "912727", - "c5bdad": "7e1e1e", - "f7f7f7": "f7f7f7" + "c5bdad": "7e1e1e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/540.json b/public/images/pokemon/variant/540.json index 32a8b416443..a77507fa553 100644 --- a/public/images/pokemon/variant/540.json +++ b/public/images/pokemon/variant/540.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "3a6319": "7b4a5a", "5a9c31": "b56b7b", "94ce08": "ef949c", @@ -8,15 +7,10 @@ "9c7b08": "67412e", "fff7ad": "967768", "ffde31": "6f4c3b", - "ffffff": "ffffff", - "4a4a4a": "4a4a4a", "e68408": "eabb81", - "945219": "b8875c", - "ceced6": "ceced6", - "ffad4a": "ffad4a" + "945219": "b8875c" }, "2": { - "000000": "000000", "3a6319": "171f5b", "5a9c31": "1a2388", "94ce08": "1152d8", @@ -24,11 +18,7 @@ "9c7b08": "674e2e", "fff7ad": "ffffff", "ffde31": "ead3c1", - "ffffff": "ffffff", - "4a4a4a": "4a4a4a", "e68408": "d4bb66", - "945219": "a89860", - "ceced6": "ceced6", - "ffad4a": "ffad4a" + "945219": "a89860" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/541.json b/public/images/pokemon/variant/541.json index 6f4c802251b..e1f10dcc93c 100644 --- a/public/images/pokemon/variant/541.json +++ b/public/images/pokemon/variant/541.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "3a6319": "7b4a5a", "94ce08": "ef949c", "5a9c31": "b56b7b", @@ -10,11 +9,9 @@ "b5a529": "6f4c3b", "ffef3a": "967768", "5a5a3a": "67412e", - "7b733a": "553829", - "ffffff": "ffffff" + "7b733a": "553829" }, "2": { - "101010": "101010", "3a6319": "1e1e67", "94ce08": "0d3fa6", "5a9c31": "0d267d", @@ -24,7 +21,6 @@ "b5a529": "ead3c1", "ffef3a": "ffffff", "5a5a3a": "67412e", - "7b733a": "553829", - "ffffff": "ffffff" + "7b733a": "553829" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/542.json b/public/images/pokemon/variant/542.json index e48e883ecf0..b1d99b5f949 100644 --- a/public/images/pokemon/variant/542.json +++ b/public/images/pokemon/variant/542.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "bdad10": "6b4d3e", "8c7b10": "573728", "fff721": "6f4c3b", @@ -9,14 +8,12 @@ "5a9c31": "b56b7b", "ffff9c": "967768", "843142": "316d84", - "ffffff": "ffffff", "ff314a": "31ceff", "10423a": "5f3f49", "299c52": "b46877", "19734a": "8e525e" }, "2": { - "000000": "000000", "bdad10": "7b6053", "8c7b10": "846851", "fff721": "ead3c1", @@ -25,7 +22,6 @@ "5a9c31": "183da4", "ffff9c": "ffffff", "843142": "9e5e25", - "ffffff": "ffffff", "ff314a": "ff7800", "10423a": "122455", "299c52": "183da4", diff --git a/public/images/pokemon/variant/544.json b/public/images/pokemon/variant/544.json index 2cd6862c924..3aacb7a38b8 100644 --- a/public/images/pokemon/variant/544.json +++ b/public/images/pokemon/variant/544.json @@ -1,7 +1,6 @@ { "1": { "5a4a63": "0a3939", - "000000": "000000", "84739c": "135c56", "c5195a": "a63c9f", "bd5294": "0d635c", diff --git a/public/images/pokemon/variant/545.json b/public/images/pokemon/variant/545.json index c7c78da1a55..f281eb92015 100644 --- a/public/images/pokemon/variant/545.json +++ b/public/images/pokemon/variant/545.json @@ -2,7 +2,6 @@ "1": { "631010": "0b4a45", "c5195a": "238071", - "101010": "101010", "6b216b": "831774", "8c3a9c": "a63c9f", "ad297b": "0d635c", @@ -17,13 +16,11 @@ "2": { "631010": "8f795c", "c5195a": "dddaaf", - "101010": "101010", "6b216b": "b37830", "8c3a9c": "d7b444", "ad297b": "b37830", "9c1042": "bdaf8a", "4a0000": "6d5435", - "212931": "212931", "424a63": "5a93a5", "84084a": "965840", "3a3a4a": "466f90", diff --git a/public/images/pokemon/variant/546.json b/public/images/pokemon/variant/546.json index d4216c57f1e..a2e1f8b8865 100644 --- a/public/images/pokemon/variant/546.json +++ b/public/images/pokemon/variant/546.json @@ -4,7 +4,6 @@ "dee6c5": "e4b397", "7b846b": "914e3a", "4a5a52": "663023", - "101010": "101010", "ffffff": "e1cac5", "ceced6": "d2a19a", "427b42": "9d62bc", @@ -18,7 +17,6 @@ "dee6c5": "bf7c6a", "7b846b": "662c26", "4a5a52": "521819", - "101010": "101010", "ffffff": "f7dbd1", "ceced6": "d89185", "427b42": "559c7a", diff --git a/public/images/pokemon/variant/547.json b/public/images/pokemon/variant/547.json index 15e08aa18a7..6ab3bb114da 100644 --- a/public/images/pokemon/variant/547.json +++ b/public/images/pokemon/variant/547.json @@ -4,7 +4,6 @@ "6b5a42": "663023", "e6dece": "dda585", "c5b58c": "b77153", - "101010": "101010", "194a19": "512143", "427b42": "924a75", "52a54a": "c27199", @@ -12,25 +11,19 @@ "523a29": "56191d", "ad6b10": "127498", "735242": "693535", - "ffffff": "ffffff", - "e68400": "28adc7", - "ad4a63": "ad4a63" + "e68400": "28adc7" }, "2": { "ad945a": "4b1918", "6b5a42": "360e10", "e6dece": "a86250", "c5b58c": "70322b", - "101010": "101010", "194a19": "a13618", "427b42": "ec7441", "52a54a": "ffa97c", "946b42": "fdca95", - "523a29": "523a29", "ad6b10": "c95d1a", "735242": "e79e64", - "ffffff": "ffffff", - "e68400": "ffa34c", - "ad4a63": "ad4a63" + "e68400": "ffa34c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/548.json b/public/images/pokemon/variant/548.json index ac7c564eeae..c8a60d65937 100644 --- a/public/images/pokemon/variant/548.json +++ b/public/images/pokemon/variant/548.json @@ -3,33 +3,24 @@ "315a31": "31425a", "3aad3a": "76bfc7", "3a844a": "307489", - "101010": "101010", "9cbd4a": "adb563", "637b31": "636329", - "c5ef7b": "d6ef7b", - "cecebd": "cecebd", - "ffffff": "ffffff", - "bd8c94": "bd8c94", - "7b313a": "7b313a" + "c5ef7b": "d6ef7b" }, "1": { "315a31": "8c1d34", "3aad3a": "ef5e55", "3a844a": "bd2d40", - "101010": "101010", "9cbd4a": "8e954d", "637b31": "73733c", "c5ef7b": "bfd17f", "cecebd": "beb1a3", - "ffffff": "f6eaea", - "bd8c94": "bd8c94", - "7b313a": "7b313a" + "ffffff": "f6eaea" }, "2": { "315a31": "351c49", "3aad3a": "8d57a4", "3a844a": "663982", - "101010": "101010", "9cbd4a": "b39436", "637b31": "5c4510", "c5ef7b": "ded26f", diff --git a/public/images/pokemon/variant/549.json b/public/images/pokemon/variant/549.json index 8fb9272c5fa..45ac71244cf 100644 --- a/public/images/pokemon/variant/549.json +++ b/public/images/pokemon/variant/549.json @@ -1,19 +1,16 @@ { "1": { - "101010": "101010", "734221": "09445f", "ff6b3a": "54c5eb", "bd633a": "228ac5", "bda552": "77909a", "ffde42": "b6c7cc", "ffb59c": "78e6f7", - "ffffff": "ffffff", "315a31": "80152b", "4a844a": "bd2d40", "3aad3a": "ef5755", "526329": "5a5a2c", "c5ef7b": "bfd17f", - "9cb563": "8e954d", - "cec5bd": "cec5bd" + "9cb563": "8e954d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/551.json b/public/images/pokemon/variant/551.json index 9e4903a6701..0f12156ef75 100644 --- a/public/images/pokemon/variant/551.json +++ b/public/images/pokemon/variant/551.json @@ -4,11 +4,8 @@ "212121": "262347", "debd84": "f29973", "523a10": "27172f", - "101010": "101010", "c59c5a": "d8693a", "42424a": "343958", - "b5b5bd": "b5b5bd", - "525263": "525263", "ce737b": "307681", "ef94a5": "4cbda2" }, @@ -17,11 +14,8 @@ "212121": "290c2a", "debd84": "8688a0", "523a10": "1c2231", - "101010": "101010", "c59c5a": "646781", "42424a": "301f40", - "b5b5bd": "b5b5bd", - "525263": "525263", "ce737b": "91a1b7", "ef94a5": "d6e2eb" } diff --git a/public/images/pokemon/variant/552.json b/public/images/pokemon/variant/552.json index efb650485c4..92bdcca9ddd 100644 --- a/public/images/pokemon/variant/552.json +++ b/public/images/pokemon/variant/552.json @@ -4,9 +4,7 @@ "523a10": "261d35", "c59c5a": "d8693a", "debd84": "f29973", - "101010": "101010", "292931": "343958", - "b5b5bd": "b5b5bd", "191921": "232044", "5a5a6b": "7c4c1f", "ffffff": "ebce81", @@ -20,9 +18,7 @@ "523a10": "161b23", "c59c5a": "646781", "debd84": "8688a0", - "101010": "101010", "292931": "412853", - "b5b5bd": "b5b5bd", "191921": "281842", "5a5a6b": "27353d", "ffffff": "90a0a7", diff --git a/public/images/pokemon/variant/553.json b/public/images/pokemon/variant/553.json index 5bc0be23fb5..45365e1d89b 100644 --- a/public/images/pokemon/variant/553.json +++ b/public/images/pokemon/variant/553.json @@ -5,9 +5,7 @@ "c55252": "1b7871", "191921": "131735", "212129": "192540", - "101010": "101010", "e67b73": "40a592", - "52525a": "52525a", "b5b5b5": "c98e5c", "8c948c": "d8693a", "ffffff": "ffefa7", @@ -21,9 +19,7 @@ "c55252": "c5cbd0", "191921": "3d1947", "212129": "58265a", - "101010": "101010", "e67b73": "e8e9eb", - "52525a": "52525a", "b5b5b5": "45545d", "8c948c": "171b20", "ffffff": "69777e", diff --git a/public/images/pokemon/variant/556.json b/public/images/pokemon/variant/556.json index 4c43ef55532..30356639a3a 100644 --- a/public/images/pokemon/variant/556.json +++ b/public/images/pokemon/variant/556.json @@ -3,7 +3,6 @@ "b53173": "7191ca", "8c1957": "454792", "e66ba5": "aad7ec", - "101010": "101010", "857510": "8d4026", "ffd600": "ff9b3b", "214a21": "375460", @@ -18,7 +17,6 @@ "b53173": "dc9bbd", "8c1957": "b06ea0", "e66ba5": "ffcadc", - "101010": "101010", "857510": "c78366", "ffd600": "fff1ac", "214a21": "68023b", diff --git a/public/images/pokemon/variant/559.json b/public/images/pokemon/variant/559.json index d844e2314af..8aca440eb71 100644 --- a/public/images/pokemon/variant/559.json +++ b/public/images/pokemon/variant/559.json @@ -6,11 +6,6 @@ "e63a42": "e18abd", "bd9c00": "896b14", "ffce00": "d7c475", - "212121": "212121", - "424242": "424242", - "ffffff": "ffffff", - "63635a": "63635a", - "adada5": "adada5", "7b7352": "5f533d", "c5bd84": "c7bea5", "fff7b5": "ecead9" @@ -21,15 +16,7 @@ "7b6308": "8b8352", "e63a42": "82809f", "bd9c00": "bdbc82", - "ffce00": "fffcdd", - "212121": "212121", - "424242": "424242", - "ffffff": "ffffff", - "63635a": "63635a", - "adada5": "adada5", - "7b7352": "7b7352", - "c5bd84": "c5bd84", - "fff7b5": "fff7b5" + "ffce00": "fffcdd" }, "2": { "b52931": "2d852b", @@ -37,14 +24,6 @@ "7b6308": "6f9d3d", "e63a42": "7cce68", "bd9c00": "98c053", - "ffce00": "e5ff87", - "212121": "212121", - "424242": "424242", - "ffffff": "ffffff", - "63635a": "63635a", - "adada5": "adada5", - "7b7352": "7b7352", - "c5bd84": "c5bd84", - "fff7b5": "fff7b5" + "ffce00": "e5ff87" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/56.json b/public/images/pokemon/variant/56.json index d349c7003dc..2bae876562d 100644 --- a/public/images/pokemon/variant/56.json +++ b/public/images/pokemon/variant/56.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "ffc584": "98b5cb", "6b4a29": "5f4e8a", "d6ad9c": "867ba4", @@ -8,11 +7,6 @@ "f7deb5": "ada2cd", "dea573": "7b96ab", "734200": "476983", - "fff7ce": "c8bfe3", - "ffffff": "ffffff", - "dedede": "dedede", - "ef7363": "ef7363", - "b54231": "b54231", - "efb58c": "efb58c" + "fff7ce": "c8bfe3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/560.json b/public/images/pokemon/variant/560.json index 7c5a1841d70..511de5cf888 100644 --- a/public/images/pokemon/variant/560.json +++ b/public/images/pokemon/variant/560.json @@ -2,15 +2,10 @@ "0": { "7b3a29": "5c392e", "e66373": "e18abd", - "212121": "212121", "de293a": "b1578c", "c55a19": "aea489", "f77b21": "d9d7bf", "4a4a4a": "652f56", - "949494": "949494", - "ffffff": "ffffff", - "e6e6e6": "e6e6e6", - "bdbdbd": "bdbdbd", "636363": "b8749c", "6b5229": "66470e", "f7ce10": "d7c475", @@ -19,16 +14,9 @@ "1": { "7b3a29": "251c34", "e66373": "82809f", - "212121": "212121", "de293a": "4f4967", "c55a19": "988658", "f77b21": "c3b889", - "4a4a4a": "4a4a4a", - "949494": "949494", - "ffffff": "ffffff", - "e6e6e6": "e6e6e6", - "bdbdbd": "bdbdbd", - "636363": "636363", "6b5229": "8b8352", "f7ce10": "fffcdd", "b59419": "bdbc82" @@ -36,15 +24,10 @@ "2": { "7b3a29": "24360d", "e66373": "8bb089", - "212121": "212121", "de293a": "3f5d3e", "c55a19": "c5bd84", "f77b21": "fff7b5", "4a4a4a": "1c342e", - "949494": "949494", - "ffffff": "ffffff", - "e6e6e6": "e6e6e6", - "bdbdbd": "bdbdbd", "636363": "3b6253", "6b5229": "627f2e", "f7ce10": "d8f769", diff --git a/public/images/pokemon/variant/562.json b/public/images/pokemon/variant/562.json index 07dafa01aa7..f6ff8c151ce 100644 --- a/public/images/pokemon/variant/562.json +++ b/public/images/pokemon/variant/562.json @@ -2,20 +2,16 @@ "1": { "313131": "741136", "525252": "a63051", - "101010": "101010", "ad0000": "4fe0b6", "ff0000": "a0f7ff", - "5a0000": "5a0000", "8c5a21": "551f1d", "ffde7b": "d29887", "f7ad29": "ae6a5d", - "ce8410": "90493f", - "dedede": "dedede" + "ce8410": "90493f" }, "2": { "313131": "2a895c", "525252": "49bc7a", - "101010": "101010", "ad0000": "e5b7e7", "ff0000": "ffd8ef", "5a0000": "955b85", diff --git a/public/images/pokemon/variant/563.json b/public/images/pokemon/variant/563.json index 0657f362348..56b495e27f9 100644 --- a/public/images/pokemon/variant/563.json +++ b/public/images/pokemon/variant/563.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "216b7b": "18265c", "294a4a": "242b71", "3194ad": "32459b", @@ -14,7 +13,6 @@ "393941": "521f2d" }, "2": { - "101010": "101010", "216b7b": "923c1c", "294a4a": "591105", "3194ad": "e03241", diff --git a/public/images/pokemon/variant/569-gigantamax.json b/public/images/pokemon/variant/569-gigantamax.json index 52344562aa4..deddcfe2304 100644 --- a/public/images/pokemon/variant/569-gigantamax.json +++ b/public/images/pokemon/variant/569-gigantamax.json @@ -1,6 +1,5 @@ { "1": { - "010101": "010101", "7b6a5a": "162632", "5a4a41": "101829", "a48b73": "273947", @@ -29,7 +28,6 @@ "798489": "4c546c" }, "2": { - "010101": "010101", "7b6a5a": "d3b492", "5a4a41": "96684c", "a48b73": "f4eccf", diff --git a/public/images/pokemon/variant/569.json b/public/images/pokemon/variant/569.json index 7af6106672e..ac1f82c209c 100644 --- a/public/images/pokemon/variant/569.json +++ b/public/images/pokemon/variant/569.json @@ -1,7 +1,6 @@ { "1": { "7b6b5a": "162632", - "000000": "000000", "5a4a42": "101829", "a58c73": "273947", "bd317b": "2aaf52", @@ -17,7 +16,6 @@ }, "2": { "7b6b5a": "d3b492", - "000000": "000000", "5a4a42": "9d7862", "a58c73": "f4eccf", "bd317b": "be5285", @@ -28,7 +26,6 @@ "296b4a": "773835", "194a31": "59221f", "bdbdbd": "da975a", - "737373": "9d5038", - "ffffff": "ffffff" + "737373": "9d5038" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/570.json b/public/images/pokemon/variant/570.json index 5c9acf9b3fc..c2bce8bd6f8 100644 --- a/public/images/pokemon/variant/570.json +++ b/public/images/pokemon/variant/570.json @@ -4,11 +4,7 @@ "ad1042": "c359e6", "5a5a73": "475378", "212131": "1b1b47", - "101010": "101010", "424252": "2f375a", - "19b5b5": "19b5b5", - "318484": "318484", - "ffffff": "ffffff", "313142": "283766" }, "2": { @@ -16,11 +12,9 @@ "ad1042": "01d5bb", "5a5a73": "a1a1c0", "212131": "163956", - "101010": "101010", "424252": "746a98", "19b5b5": "e879d6", "318484": "bd3eb8", - "ffffff": "ffffff", "313142": "60808f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/571.json b/public/images/pokemon/variant/571.json index d69b017886b..ecfc34ddbfe 100644 --- a/public/images/pokemon/variant/571.json +++ b/public/images/pokemon/variant/571.json @@ -1,21 +1,16 @@ { "1": { - "101010": "101010", "293142": "283766", "212131": "0a133f", "7b2942": "8e2270", "4a1029": "540548", "ad1042": "cc2f94", - "7b7b84": "7b7b84", "63636b": "4e4664", "4a4a52": "2d2b43", - "cecece": "cecece", "318484": "00766a", - "19b5b5": "0ab5b3", - "ce4a5a": "ce4a5a" + "19b5b5": "0ab5b3" }, "2": { - "101010": "101010", "293142": "283766", "212131": "121b47", "7b2942": "125091", diff --git a/public/images/pokemon/variant/577.json b/public/images/pokemon/variant/577.json index cd19056738d..bcba18b965a 100644 --- a/public/images/pokemon/variant/577.json +++ b/public/images/pokemon/variant/577.json @@ -6,14 +6,12 @@ "94e6ad": "cab8f1", "6b6329": "597070", "5a845a": "5e2c58", - "101010": "101010", "e6de73": "afdfce", "cee6bd": "ebc7d9", "a59c31": "88aca5", "9cad8c": "975b88", "316342": "442e7a", "94314a": "84197e", - "c54252": "c54252", "b5cea5": "c696b4" }, "1": { @@ -23,31 +21,24 @@ "94e6ad": "ee8c91", "6b6329": "522849", "5a845a": "961d3c", - "101010": "101010", "e6de73": "9d65b1", "cee6bd": "dfab9f", "a59c31": "824885", "9cad8c": "b86d6a", "316342": "3b031b", - "94314a": "94314a", - "c54252": "c54252", "b5cea5": "cd9790" }, "2": { "428c5a": "a968a4", "5ab57b": "ce8ec2", - "ffffff": "ffffff", "94e6ad": "f7c6e5", "6b6329": "3e8c82", "5a845a": "9d4e4c", - "101010": "101010", "e6de73": "74d6b3", "cee6bd": "f0c9ba", "a59c31": "5ab3a2", "9cad8c": "ba7066", "316342": "713c85", - "94314a": "94314a", - "c54252": "c54252", "b5cea5": "d69887" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/578.json b/public/images/pokemon/variant/578.json index 83db4394938..a0fb38f3064 100644 --- a/public/images/pokemon/variant/578.json +++ b/public/images/pokemon/variant/578.json @@ -6,7 +6,6 @@ "c5deb5": "ebc7e1", "317b4a": "6b2981", "9cbd8c": "9b65ac", - "101010": "101010", "e6ffde": "fff9fb", "84dea5": "c3b8f1", "b54242": "ad4252", @@ -19,7 +18,6 @@ "c5deb5": "d69289", "317b4a": "3b031b", "9cbd8c": "b0605c", - "101010": "101010", "e6ffde": "fff3f3", "84dea5": "ee8c91", "b54242": "ad4252", @@ -32,7 +30,6 @@ "c5deb5": "f0c9ba", "317b4a": "732971", "9cbd8c": "d69887", - "101010": "101010", "e6ffde": "ffffff", "84dea5": "f7c6e5", "b54242": "ad4252", diff --git a/public/images/pokemon/variant/579.json b/public/images/pokemon/variant/579.json index 168a4470b9c..a12a26d3902 100644 --- a/public/images/pokemon/variant/579.json +++ b/public/images/pokemon/variant/579.json @@ -6,7 +6,6 @@ "4a8c63": "40516c", "d6efc5": "bfdadd", "9cbd8c": "7f9fb5", - "101010": "101010", "ffffff": "f1feff", "de6363": "7bfff7", "a55252": "4aad8c", @@ -22,7 +21,6 @@ "4a8c63": "862f2d", "d6efc5": "d69289", "9cbd8c": "b0605c", - "101010": "101010", "ffffff": "fff3f3", "de6363": "e39744", "a55252": "bb6620", @@ -38,8 +36,6 @@ "4a8c63": "9d4e4c", "d6efc5": "e8baac", "9cbd8c": "c5887f", - "101010": "101010", - "ffffff": "ffffff", "de6363": "74d6b3", "a55252": "5ab3a2", "debd7b": "a29fbd", diff --git a/public/images/pokemon/variant/586-autumn.json b/public/images/pokemon/variant/586-autumn.json index e56a7af7d02..9345bdee6c4 100644 --- a/public/images/pokemon/variant/586-autumn.json +++ b/public/images/pokemon/variant/586-autumn.json @@ -1,18 +1,11 @@ { "0": { - "842131": "842131", - "bd3a3a": "bd3a3a", - "5a1919": "5a1919", - "000000": "000000", "422110": "9d4f62", "4a0808": "7f334a", "dec56b": "ffd5f6", "633121": "c66479", "7b5231": "d98997", "a57b4a": "e1b2d7", - "de8c29": "ffecfb", - "dedede": "dedede", - "adadad": "adadad", - "311010": "311010" + "de8c29": "ffecfb" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/586-spring.json b/public/images/pokemon/variant/586-spring.json index 14f8eded105..2518667eb20 100644 --- a/public/images/pokemon/variant/586-spring.json +++ b/public/images/pokemon/variant/586-spring.json @@ -1,18 +1,11 @@ { "0": { - "311010": "311010", - "000000": "000000", "4a1008": "7f334a", - "ff739c": "ff739c", - "731931": "731931", "dec56b": "ffd5f6", - "ce4263": "ce4263", "633a21": "c66479", "422119": "9d4f62", "de9429": "ffecfb", "7b5a31": "d98997", - "a57b4a": "e1b2d7", - "dedede": "dedede", - "adadad": "adadad" + "a57b4a": "e1b2d7" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/586-summer.json b/public/images/pokemon/variant/586-summer.json index 97a0efa33ce..0f89496c1fc 100644 --- a/public/images/pokemon/variant/586-summer.json +++ b/public/images/pokemon/variant/586-summer.json @@ -2,7 +2,6 @@ "0": { "193a29": "314a29", "088c42": "4a8b4a", - "000000": "000000", "195a31": "416a39", "dec56b": "ffd5f6", "4a1008": "783046", @@ -11,8 +10,6 @@ "7b5a31": "cc818e", "a57b4a": "e1b2d7", "de9429": "ffecfb", - "dedede": "dedede", - "adadad": "adadad", "311010": "582333" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/586-winter.json b/public/images/pokemon/variant/586-winter.json index a4ece9d251e..352a4c57920 100644 --- a/public/images/pokemon/variant/586-winter.json +++ b/public/images/pokemon/variant/586-winter.json @@ -2,9 +2,7 @@ "0": { "6b6b6b": "cf9bc4", "424a42": "b184a8", - "311010": "311010", "ffffff": "ffd5f6", - "000000": "000000", "adadad": "e1b2d7", "4a1008": "7f334a", "dec56b": "ffecfb", @@ -12,7 +10,6 @@ "7b5a31": "d98997", "633a21": "c66479", "a57b4a": "e1b2d7", - "de9429": "ffecfb", - "dedede": "dedede" + "de9429": "ffecfb" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/592.json b/public/images/pokemon/variant/592.json index 2307621e36e..7c37f370752 100644 --- a/public/images/pokemon/variant/592.json +++ b/public/images/pokemon/variant/592.json @@ -1,12 +1,10 @@ { "1": { "3a5a6b": "933b94", - "101010": "101010", "b5c5e6": "e3b8ec", "d6e6ff": "fee8ff", "5aa5c5": "c35ec7", "84d6ff": "ef94eb", - "ffffff": "ffffff", "3a63c5": "981741", "de2910": "de4a29" } diff --git a/public/images/pokemon/variant/593.json b/public/images/pokemon/variant/593.json index 88dc5472de5..d9eb0136c16 100644 --- a/public/images/pokemon/variant/593.json +++ b/public/images/pokemon/variant/593.json @@ -2,23 +2,17 @@ "1": { "213a6b": "6a236f", "9cadd6": "e3b8ec", - "101010": "101010", "d6e6ff": "fee8ff", "29529c": "933b94", "3a84ce": "c35ec7", - "3ac5f7": "ef94eb", - "de4a29": "de4a29", - "ffffff": "ffffff" + "3ac5f7": "ef94eb" }, "2": { "213a6b": "6e1b12", "9cadd6": "d24d25", - "101010": "101010", "d6e6ff": "ec7542", "29529c": "8e2b16", "3a84ce": "cb7048", - "3ac5f7": "ffc195", - "de4a29": "de4a29", - "ffffff": "ffffff" + "3ac5f7": "ffc195" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/594.json b/public/images/pokemon/variant/594.json index 18aa79a0569..700107d7c37 100644 --- a/public/images/pokemon/variant/594.json +++ b/public/images/pokemon/variant/594.json @@ -3,7 +3,6 @@ "8c4263": "aa3a18", "ffbdbd": "f9c976", "c55a7b": "ca4f16", - "000000": "000000", "633a42": "882915", "ff8cad": "f5a454", "f77384": "e37830", @@ -13,7 +12,6 @@ "002931": "310000", "005263": "681f16", "9c8c10": "a74c8e", - "ffffff": "ffffff", "d6d63a": "dc8ec6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/595.json b/public/images/pokemon/variant/595.json index 159e4c78bef..e610e4c52ea 100644 --- a/public/images/pokemon/variant/595.json +++ b/public/images/pokemon/variant/595.json @@ -1,23 +1,19 @@ { "1": { "735208": "583e28", - "101010": "101010", "f7de42": "e9ae7e", "cead08": "b57353", "083163": "3f210d", "848c52": "5e341a", - "dedeef": "dedeef", "636be6": "684529", "315ac5": "7c4620" }, "2": { "735208": "46494d", - "101010": "101010", "f7de42": "aab3bf", "cead08": "7b828b", "083163": "a1400e", "848c52": "d1630f", - "dedeef": "dedeef", "636be6": "834333", "315ac5": "ff8e1e" } diff --git a/public/images/pokemon/variant/596.json b/public/images/pokemon/variant/596.json index b494b9ee23a..b877aab21a0 100644 --- a/public/images/pokemon/variant/596.json +++ b/public/images/pokemon/variant/596.json @@ -3,28 +3,22 @@ "293a7b": "5e341a", "192942": "3f210d", "3a52b5": "7c4620", - "101010": "101010", - "3a3a42": "3a3a42", "cead00": "995b37", "ffde52": "be8454", "9c849c": "9d2f07", "6b523a": "4f2a1d", "9c8419": "7d422c", - "736b6b": "712002", - "ffffff": "ffffff" + "736b6b": "712002" }, "2": { "293a7b": "cc5e14", "192942": "943710", "3a52b5": "ff9327", - "101010": "101010", - "3a3a42": "3a3a42", "cead00": "7b828b", "ffde52": "aab3bf", "9c849c": "007dea", "6b523a": "46494d", "9c8419": "575b62", - "736b6b": "0048ab", - "ffffff": "ffffff" + "736b6b": "0048ab" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/6-gigantamax.json b/public/images/pokemon/variant/6-gigantamax.json index 8cdb79ca267..cb84f4fdedb 100644 --- a/public/images/pokemon/variant/6-gigantamax.json +++ b/public/images/pokemon/variant/6-gigantamax.json @@ -6,7 +6,6 @@ "843119": "552982", "ef8429": "b77cb2", "ce5242": "9052af", - "101010": "101010", "ffe877": "adffcc", "fcfcfc": "eafff4", "efb55a": "d8a3e2", diff --git a/public/images/pokemon/variant/6-mega-x.json b/public/images/pokemon/variant/6-mega-x.json index 67924c8d011..400005513ca 100644 --- a/public/images/pokemon/variant/6-mega-x.json +++ b/public/images/pokemon/variant/6-mega-x.json @@ -4,14 +4,12 @@ "60a6c8": "82d179", "5a5a5a": "317396", "99d9f7": "e6ffcc", - "080808": "080808", "009de1": "3da542", "383838": "163d82", "1e4167": "4c1f76", "92a09c": "66afcc", "2b629c": "7341a6", "00b1e6": "af66ff", - "f8f8f8": "f8f8f8", "ce1010": "aa299d", "e481b5": "ff91cb" } diff --git a/public/images/pokemon/variant/6-mega-y.json b/public/images/pokemon/variant/6-mega-y.json index 9429b1d1773..189c3bdd6c3 100644 --- a/public/images/pokemon/variant/6-mega-y.json +++ b/public/images/pokemon/variant/6-mega-y.json @@ -2,16 +2,13 @@ "1": { "833118": "552982", "ee8329": "b27cbc", - "101010": "101010", "cd5241": "8053b2", "eeb45a": "d8a3e2", - "f8f8f8": "f8f8f8", "207394": "41a86e", "084152": "196045", "eede7b": "fae5ff", "f6a410": "9e59db", "e64110": "5033ce", - "ffd510": "e9bfff", - "cdcdcd": "cdcdcd" + "ffd510": "e9bfff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/602.json b/public/images/pokemon/variant/602.json index 7a73a049e47..f9ccb092de2 100644 --- a/public/images/pokemon/variant/602.json +++ b/public/images/pokemon/variant/602.json @@ -5,7 +5,6 @@ "cedee6": "b291d6", "efffff": "e8ddff", "7b8494": "6b357a", - "191921": "191921", "ce4a00": "42296e", "942100": "58418c", "ffe67b": "55b5d6", @@ -19,7 +18,6 @@ "cedee6": "8ecbaf", "efffff": "c7f0d5", "7b8494": "315775", - "191921": "191921", "ce4a00": "2f5c70", "942100": "18314e", "ffe67b": "9a2957", diff --git a/public/images/pokemon/variant/603.json b/public/images/pokemon/variant/603.json index 1c04d573309..720d1510f68 100644 --- a/public/images/pokemon/variant/603.json +++ b/public/images/pokemon/variant/603.json @@ -3,7 +3,6 @@ "c5ad7b": "8dd8d0", "847342": "4f8194", "efdea5": "b9f1d3", - "191921": "191921", "103a4a": "884993", "215a63": "957bd0", "949c4a": "ff772d", @@ -12,14 +11,12 @@ "de7352": "8c1a6a", "deb500": "d89d77", "ffd600": "f7e1a6", - "ffffff": "ffffff", "bdbdbd": "8babbd" }, "2": { "c5ad7b": "283b4e", "847342": "0d1a31", "efdea5": "3a5865", - "191921": "191921", "103a4a": "6faa3c", "215a63": "bbdf64", "949c4a": "dd0d70", diff --git a/public/images/pokemon/variant/604.json b/public/images/pokemon/variant/604.json index de39eb8b3a0..5a04687d1cd 100644 --- a/public/images/pokemon/variant/604.json +++ b/public/images/pokemon/variant/604.json @@ -4,7 +4,6 @@ "002131": "501d59", "216373": "957bd0", "73b5ce": "b29fe8", - "101019": "101019", "847342": "4f8194", "c5ad7b": "8dd8d0", "949c4a": "ff7e34", @@ -21,7 +20,6 @@ "002131": "225517", "216373": "bbdf64", "73b5ce": "e1ed9e", - "101019": "101019", "847342": "0d1a31", "c5ad7b": "283b4e", "949c4a": "a5183d", diff --git a/public/images/pokemon/variant/605.json b/public/images/pokemon/variant/605.json index cbd0fcb750b..e287c8070c9 100644 --- a/public/images/pokemon/variant/605.json +++ b/public/images/pokemon/variant/605.json @@ -4,12 +4,10 @@ "3a7352": "121545", "639484": "3c508b", "a5cebd": "617eb8", - "101010": "101010", "6b6b73": "39498b", "424242": "1b1f5a", "105229": "034652", "219c10": "2ecbc2", - "ffffff": "ffffff", "7b2929": "3f1c7b", "ce0000": "954bd8", "6b6310": "54760c", @@ -20,12 +18,10 @@ "3a7352": "702c2c", "639484": "9f5952", "a5cebd": "be847a", - "101010": "101010", "6b6b73": "854340", "424242": "3d1c1c", "105229": "600c41", "219c10": "f052a8", - "ffffff": "ffffff", "7b2929": "3a219a", "ce0000": "615ad4", "6b6310": "a13815", @@ -36,12 +32,10 @@ "3a7352": "1f1f34", "639484": "38394c", "a5cebd": "5b5e68", - "101010": "101010", "6b6b73": "2b2b3d", "424242": "0c0916", "105229": "471180", "219c10": "8952dc", - "ffffff": "ffffff", "7b2929": "9a2031", "ce0000": "ee5962", "6b6310": "8b3dbe", diff --git a/public/images/pokemon/variant/606.json b/public/images/pokemon/variant/606.json index a187ecafe90..0090b08f518 100644 --- a/public/images/pokemon/variant/606.json +++ b/public/images/pokemon/variant/606.json @@ -4,7 +4,6 @@ "de9c7b": "9f534b", "634229": "5a2133", "a5634a": "7d3134", - "101010": "101010", "292929": "230909", "216329": "002d55", "219c3a": "1585b1", @@ -21,7 +20,6 @@ "de9c7b": "a0e4e6", "634229": "2f536f", "a5634a": "6eb2bf", - "101010": "101010", "292929": "071824", "216329": "6e0928", "219c3a": "c63150", @@ -38,11 +36,9 @@ "de9c7b": "e5d1cc", "634229": "834f57", "a5634a": "c09a97", - "101010": "101010", "292929": "3e1426", "216329": "35116c", "219c3a": "884acc", - "8c2929": "8c2929", "ce0000": "d3335a", "c5a57b": "bc3295", "8c5a3a": "7e176b", diff --git a/public/images/pokemon/variant/609.json b/public/images/pokemon/variant/609.json index 12941964218..da9ad678c36 100644 --- a/public/images/pokemon/variant/609.json +++ b/public/images/pokemon/variant/609.json @@ -7,7 +7,6 @@ "313131": "11247b", "5a5a5a": "123684", "c5d6d6": "8e7c96", - "ffffff": "ffffff", "ffe621": "78e8cd", "7b8c8c": "bb9fbc" }, @@ -19,7 +18,6 @@ "313131": "a15f42", "5a5a5a": "8d412b", "c5d6d6": "dcceae", - "ffffff": "ffffff", "ffe621": "ffbb55", "7b8c8c": "eee6ca" } diff --git a/public/images/pokemon/variant/610.json b/public/images/pokemon/variant/610.json index 23ba21cd699..d7d726d15e5 100644 --- a/public/images/pokemon/variant/610.json +++ b/public/images/pokemon/variant/610.json @@ -3,12 +3,9 @@ "313a29": "0a0b31", "636b4a": "4b409d", "4a523a": "27105b", - "000000": "000000", "94a55a": "514776", "6b7b4a": "3f3562", "ce0000": "9d9d9d", - "ffffff": "ffffff", - "b5b5d6": "b5b5d6", "630000": "361a06", "d6e694": "d8d8d8", "adbd63": "737370", @@ -19,12 +16,9 @@ "313a29": "0e1f3d", "636b4a": "35679c", "4a523a": "193769", - "000000": "000000", "94a55a": "983f50", "6b7b4a": "681c2a", "ce0000": "00b5ce", - "ffffff": "ffffff", - "b5b5d6": "b5b5d6", "630000": "2f0010", "d6e694": "379aff", "adbd63": "1f4fbf", diff --git a/public/images/pokemon/variant/6100.json b/public/images/pokemon/variant/6100.json index a9790f043db..8585360e3ac 100644 --- a/public/images/pokemon/variant/6100.json +++ b/public/images/pokemon/variant/6100.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "7c2506": "2e333b", "c04a1c": "4e6170", "ec6f00": "69a6b4", @@ -10,12 +9,10 @@ "ddccc8": "bfebee", "d9a866": "a5aab7", "fefefe": "ecfffc", - "6f625e": "6f625e", "b8752e": "838797", "f3d181": "c9cdd6" }, "2": { - "101010": "101010", "7c2506": "5d0a26", "c04a1c": "72142b", "ec6f00": "a62833", @@ -25,7 +22,6 @@ "ddccc8": "ecd3c1", "d9a866": "3a272e", "fefefe": "fff9ee", - "6f625e": "6f625e", "b8752e": "2d2327", "f3d181": "502b32" } diff --git a/public/images/pokemon/variant/6101.json b/public/images/pokemon/variant/6101.json index 37f99d5cc8a..a1f15929920 100644 --- a/public/images/pokemon/variant/6101.json +++ b/public/images/pokemon/variant/6101.json @@ -3,30 +3,22 @@ "845c35": "373e4c", "d9a866": "a5aab7", "f3d181": "c9cdd6", - "101010": "101010", "f7dfa8": "e8ebf0", "a9763d": "838797", "c04a1c": "386583", "ec6f00": "69a6b4", "dc5d00": "4f879f", - "7c2506": "2e333b", - "ddccc8": "ddccc8", - "fefefe": "fefefe", - "6f625e": "6f625e" + "7c2506": "2e333b" }, "2": { "845c35": "231b20", "d9a866": "452d35", "f3d181": "5e343c", - "101010": "101010", "f7dfa8": "864549", "a9763d": "35262c", "c04a1c": "72142b", "ec6f00": "a62833", "dc5d00": "8f1b2c", - "7c2506": "4a061d", - "ddccc8": "ddccc8", - "fefefe": "fefefe", - "6f625e": "6f625e" + "7c2506": "4a061d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/611.json b/public/images/pokemon/variant/611.json index 210611b4290..30bce9d0e26 100644 --- a/public/images/pokemon/variant/611.json +++ b/public/images/pokemon/variant/611.json @@ -2,14 +2,12 @@ "1": { "314a29": "650b18", "4a8c4a": "b52439", - "101010": "101010", "426b3a": "98182b", "737373": "3f3562", "5a5a52": "342047", "630000": "3a3a3a", "de4242": "c4c4c3", "3a3a3a": "2a0e29", - "ffffff": "ffffff", "b52121": "737373", "9c9c9c": "736198", "7b7b7b": "514776", @@ -19,14 +17,12 @@ "2": { "314a29": "0d0e27", "4a8c4a": "35679c", - "101010": "101010", "426b3a": "102a5b", "737373": "681c2a", "5a5a52": "3b0820", "630000": "0d1e7c", "de4242": "379aff", "3a3a3a": "2c0216", - "ffffff": "ffffff", "b52121": "1f4fbf", "9c9c9c": "983f50", "7b7b7b": "823140", diff --git a/public/images/pokemon/variant/612.json b/public/images/pokemon/variant/612.json index 028d5953136..be0a1e2c33b 100644 --- a/public/images/pokemon/variant/612.json +++ b/public/images/pokemon/variant/612.json @@ -1,7 +1,6 @@ { "1": { "520000": "383838", - "000000": "000000", "8c0000": "84847e", "3a3a4a": "342047", "c50000": "c4c4c3", @@ -11,7 +10,6 @@ "636b10": "650b18", "a5ad19": "b52439", "29293a": "2a0e29", - "ffffff": "ffffff", "73424a": "893a4d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/618.json b/public/images/pokemon/variant/618.json index dcce711b155..5e3b7bb3e97 100644 --- a/public/images/pokemon/variant/618.json +++ b/public/images/pokemon/variant/618.json @@ -3,15 +3,12 @@ "cebd00": "bdac99", "ffff00": "f3e6dd", "6b6319": "987b6d", - "081019": "081019", "52423a": "312118", "6b524a": "4a342a", "bd846b": "8c3841", "846b63": "6b3838", "d69c84": "ad4c4c", "efce42": "eac2bd", - "d6cec5": "d6cec5", - "ffffff": "ffffff", "081018": "081019", "735a52": "564038", "9c8473": "a08773", @@ -21,7 +18,6 @@ "cebd00": "58536b", "ffff00": "707488", "6b6319": "39314a", - "081019": "081019", "52423a": "5a2e2e", "6b524a": "804e48", "bd846b": "cec9b1", diff --git a/public/images/pokemon/variant/619.json b/public/images/pokemon/variant/619.json index 8c813beccb4..3cb2a2b4403 100644 --- a/public/images/pokemon/variant/619.json +++ b/public/images/pokemon/variant/619.json @@ -6,12 +6,9 @@ "634a29": "5b3724", "ad9c4a": "9d8169", "7b7b7b": "572821", - "000000": "000000", "a54252": "b64619", "de637b": "dd7736", - "7b213a": "922308", - "ffffff": "ffffff", - "73293a": "73293a" + "7b213a": "922308" }, "2": { "947b52": "8d3e21", @@ -20,11 +17,9 @@ "634a29": "722611", "ad9c4a": "b15932", "7b7b7b": "552136", - "000000": "000000", "a54252": "56307f", "de637b": "764ebb", "7b213a": "3e0a70", - "ffffff": "ffffff", "73293a": "3c0c6a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/620.json b/public/images/pokemon/variant/620.json index 15546e0ced1..892424f79e6 100644 --- a/public/images/pokemon/variant/620.json +++ b/public/images/pokemon/variant/620.json @@ -2,7 +2,6 @@ "1": { "5a4231": "2a5a8c", "ce8c52": "4a86c5", - "000000": "000000", "735263": "855348", "b59c9c": "ddb2a5", "e6d6d6": "f3d9ce", @@ -10,16 +9,13 @@ "8463ad": "b82f34", "ad8cc5": "db6059", "a52121": "e1811a", - "4a2121": "4a2121", "ffad63": "abe5ff", - "ffffff": "ffffff", "424242": "63332d", "bda5a5": "e4c3b7" }, "2": { "5a4231": "8c0224", "ce8c52": "e61b42", - "000000": "000000", "735263": "654162", "b59c9c": "ba89a1", "e6d6d6": "e2b7db", @@ -27,9 +23,7 @@ "8463ad": "2f4c81", "ad8cc5": "3979ad", "a52121": "7b25cf", - "4a2121": "4a2121", "ffad63": "ff425d", - "ffffff": "ffffff", "424242": "3a193c", "bda5a5": "d39dda" } diff --git a/public/images/pokemon/variant/6215.json b/public/images/pokemon/variant/6215.json index 99e0c880142..56ee351cd66 100644 --- a/public/images/pokemon/variant/6215.json +++ b/public/images/pokemon/variant/6215.json @@ -1,7 +1,6 @@ { "1": { "503678": "0f5d6d", - "080808": "080808", "514a80": "402010", "956cbe": "31dabb", "9c9bce": "ae8976", @@ -12,13 +11,10 @@ "ffde7b": "a7a7a7", "584d80": "562627", "28234b": "220d0a", - "c52973": "ea903f", - "bdbdc5": "bdbdc5", - "f6f6ff": "f6f6ff" + "c52973": "ea903f" }, "2": { "503678": "601522", - "080808": "080808", "514a80": "14273a", "956cbe": "cc5427", "9c9bce": "3c8775", @@ -29,8 +25,6 @@ "ffde7b": "ffe07e", "584d80": "1c3942", "28234b": "0a191e", - "c52973": "f49633", - "bdbdc5": "bdbdc5", - "f6f6ff": "f6f6ff" + "c52973": "f49633" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/622.json b/public/images/pokemon/variant/622.json index 9d3d631c473..d7c42cb47eb 100644 --- a/public/images/pokemon/variant/622.json +++ b/public/images/pokemon/variant/622.json @@ -3,7 +3,6 @@ "106b63": "732d02", "004a52": "4c1b11", "84cece": "c78b3f", - "191921": "191921", "29848c": "65331c", "298c8c": "793907", "5aada5": "9d5915", diff --git a/public/images/pokemon/variant/623.json b/public/images/pokemon/variant/623.json index 2a9f0774f9a..7e9f52b0474 100644 --- a/public/images/pokemon/variant/623.json +++ b/public/images/pokemon/variant/623.json @@ -6,7 +6,6 @@ "195a7b": "4d0a00", "84c5ce": "e0854c", "003a52": "471205", - "191921": "191921", "ffefa5": "5fc8ff", "bdad73": "35a3ee", "dece94": "1b7ccb", @@ -21,7 +20,6 @@ "195a7b": "3c0702", "84c5ce": "9d3f1f", "003a52": "280008", - "191921": "191921", "ffefa5": "50ddaf", "bdad73": "3cb897", "dece94": "25957d", diff --git a/public/images/pokemon/variant/633.json b/public/images/pokemon/variant/633.json index ad02ba594d4..9e5c8c1c3aa 100644 --- a/public/images/pokemon/variant/633.json +++ b/public/images/pokemon/variant/633.json @@ -2,7 +2,6 @@ "1": { "292129": "140d35", "5a5252": "4c297a", - "101010": "101010", "525252": "4c297a", "423a42": "331c62", "19316b": "35475d", @@ -16,7 +15,6 @@ "2": { "292129": "1c2313", "5a5252": "3a452d", - "101010": "101010", "525252": "3a452d", "423a42": "2b351e", "19316b": "6a6a51", diff --git a/public/images/pokemon/variant/634.json b/public/images/pokemon/variant/634.json index 68039ec9ea8..197a398555e 100644 --- a/public/images/pokemon/variant/634.json +++ b/public/images/pokemon/variant/634.json @@ -1,7 +1,6 @@ { "1": { "423a42": "331c62", - "101010": "101010", "292129": "140d35", "525252": "4c297a", "3a63a5": "728197", @@ -9,14 +8,11 @@ "6394de": "bdd2e2", "732919": "7a1545", "9c4231": "bc3962", - "e6dede": "e6dede", "9c3a6b": "3a80b8", - "632142": "1f4c90", - "adadad": "adadad" + "632142": "1f4c90" }, "2": { "423a42": "2b351e", - "101010": "101010", "292129": "1c2313", "525252": "3a452d", "3a63a5": "a5a685", @@ -24,9 +20,7 @@ "6394de": "d9d9aa", "732919": "640303", "9c4231": "950505", - "e6dede": "e6dede", "9c3a6b": "ba5744", - "632142": "813530", - "adadad": "adadad" + "632142": "813530" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/635.json b/public/images/pokemon/variant/635.json index 9f00b8d3f09..d13d1388937 100644 --- a/public/images/pokemon/variant/635.json +++ b/public/images/pokemon/variant/635.json @@ -5,14 +5,12 @@ "292129": "140d35", "8c2963": "3a80b8", "bd527b": "65bfed", - "101010": "101010", "632142": "1f4c90", "19316b": "35475d", "5a84ce": "bdd2e2", "3a5a9c": "728197", "9c4231": "bc3962", - "732919": "7a1545", - "e6dede": "e6dede" + "732919": "7a1545" }, "2": { "423a42": "2b351e", @@ -20,13 +18,11 @@ "292129": "1c2313", "8c2963": "ba5744", "bd527b": "e78256", - "101010": "101010", "632142": "813530", "19316b": "6a6a51", "5a84ce": "d9d9aa", "3a5a9c": "a5a685", "9c4231": "950505", - "732919": "640303", - "e6dede": "e6dede" + "732919": "640303" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/640.json b/public/images/pokemon/variant/640.json index 2b85b86d986..da3a22eb676 100644 --- a/public/images/pokemon/variant/640.json +++ b/public/images/pokemon/variant/640.json @@ -10,7 +10,6 @@ "ad426b": "833018", "de738c": "b86a54", "7b103a": "651702", - "ffffff": "ffffff", "f7f7d6": "e1b0a0", "adb56b": "a77e72", "6b6b4a": "2d0c02" @@ -26,7 +25,6 @@ "ad426b": "1e7392", "de738c": "4694b1", "7b103a": "11495d", - "ffffff": "ffffff", "f7f7d6": "e5d7bd", "adb56b": "ccc1ad", "6b6b4a": "8e8169" diff --git a/public/images/pokemon/variant/647-ordinary.json b/public/images/pokemon/variant/647-ordinary.json index 0475084ff21..e425e289fee 100644 --- a/public/images/pokemon/variant/647-ordinary.json +++ b/public/images/pokemon/variant/647-ordinary.json @@ -1,24 +1,17 @@ { "1": { "7b3129": "96711f", - "212121": "212121", "de4221": "fdbb3e", "ad3121": "c2912f", - "6b6b52": "6b6b52", - "fff7bd": "fff7bd", "19295a": "922517", "217ba5": "f15c5d", - "b5ad84": "b5ad84", "4a6bce": "ef4635", "63bdff": "f69284", "314a8c": "c3382a", - "addeff": "fbcfcb", - "ffffff": "ffffff", - "525252": "525252" + "addeff": "fbcfcb" }, "2": { "7b3129": "81304a", - "212121": "212121", "de4221": "de5d83", "ad3121": "a84564", "6b6b52": "6a4863", @@ -29,8 +22,6 @@ "4a6bce": "524881", "63bdff": "e4d7ff", "314a8c": "3b3160", - "addeff": "f1ecff", - "ffffff": "ffffff", - "525252": "525252" + "addeff": "f1ecff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/647-resolute.json b/public/images/pokemon/variant/647-resolute.json index 85975acfdc7..1e0f5c75d5c 100644 --- a/public/images/pokemon/variant/647-resolute.json +++ b/public/images/pokemon/variant/647-resolute.json @@ -1,23 +1,16 @@ { "1": { - "101010": "101010", "314a8c": "c3382a", "843a29": "c2912f", "63bdff": "f69284", - "4a5252": "4a5252", "ff9421": "d84a9a", "4a6bce": "ef4635", "de4a31": "fdbb3e", "193163": "922517", "3ab53a": "993f88", - "21848c": "be4848", - "b5ad73": "b5ad73", - "fff7ad": "fff7ad", - "635a29": "635a29", - "ffffff": "ffffff" + "21848c": "be4848" }, "2": { - "101010": "101010", "314a8c": "3b3160", "843a29": "81304a", "63bdff": "e4d7ff", @@ -30,7 +23,6 @@ "21848c": "b89edb", "b5ad73": "b573a8", "fff7ad": "d89cc6", - "635a29": "6a4863", - "ffffff": "ffffff" + "635a29": "6a4863" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/648-aria.json b/public/images/pokemon/variant/648-aria.json index b755f35b778..dc562c08be4 100644 --- a/public/images/pokemon/variant/648-aria.json +++ b/public/images/pokemon/variant/648-aria.json @@ -12,8 +12,6 @@ "428c7b": "750461", "947b5a": "6a8e93", "31c5a5": "ad1e71", - "de7b8c": "de7b8c", - "b55263": "b55263", "5a5252": "4d7b84" }, "2": { diff --git a/public/images/pokemon/variant/648-pirouette.json b/public/images/pokemon/variant/648-pirouette.json index 4b9a068eb65..c7e96d1122d 100644 --- a/public/images/pokemon/variant/648-pirouette.json +++ b/public/images/pokemon/variant/648-pirouette.json @@ -24,7 +24,6 @@ "73423a": "553a35", "ef7352": "ca956d", "635a52": "625246", - "423131": "423131", "fffff7": "fff4e0", "c5b594": "c9b190", "c5315a": "553a35", diff --git a/public/images/pokemon/variant/649-burn.json b/public/images/pokemon/variant/649-burn.json index ba34e8ba203..f34c5a14c0c 100644 --- a/public/images/pokemon/variant/649-burn.json +++ b/public/images/pokemon/variant/649-burn.json @@ -5,15 +5,10 @@ "9c5ac5": "7baec3", "101010": "081662", "ceb5ff": "87feff", - "5a2110": "5a2110", - "ef2100": "ef2100", - "a53121": "a53121", "a584bd": "62c4e6", "733129": "26a624", "f75221": "ddffb0", - "b54221": "97e083", - "ffffff": "ffffff", - "737373": "737373" + "b54221": "97e083" }, "2": { "52294a": "1e1d33", @@ -21,14 +16,9 @@ "9c5ac5": "484553", "101010": "000000", "ceb5ff": "f56e6e", - "5a2110": "5a2110", - "ef2100": "ef2100", - "a53121": "a53121", "a584bd": "b72852", "733129": "91283b", "f75221": "ff9b90", - "b54221": "c9514e", - "ffffff": "ffffff", - "737373": "737373" + "b54221": "c9514e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/649-chill.json b/public/images/pokemon/variant/649-chill.json index acdb58ceb61..6e719cbc091 100644 --- a/public/images/pokemon/variant/649-chill.json +++ b/public/images/pokemon/variant/649-chill.json @@ -5,14 +5,10 @@ "9c5ac5": "7baec3", "101010": "081662", "ceb5ff": "87feff", - "42423a": "42423a", - "ffffff": "ffffff", - "a5a5ad": "a5a5ad", "a584bd": "62c4e6", "733129": "26a624", "f75221": "ddffb0", - "b54221": "97e083", - "737373": "737373" + "b54221": "97e083" }, "2": { "52294a": "1e1d33", @@ -20,13 +16,9 @@ "9c5ac5": "484553", "101010": "000000", "ceb5ff": "ccf7fe", - "42423a": "42423a", - "ffffff": "ffffff", - "a5a5ad": "a5a5ad", "a584bd": "8dc7e3", "733129": "4b8fba", "f75221": "aafaff", - "b54221": "7cc9e0", - "737373": "737373" + "b54221": "7cc9e0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/649-douse.json b/public/images/pokemon/variant/649-douse.json index b3796b6ac79..54b13882365 100644 --- a/public/images/pokemon/variant/649-douse.json +++ b/public/images/pokemon/variant/649-douse.json @@ -5,15 +5,10 @@ "9c5ac5": "7baec3", "101010": "081662", "ceb5ff": "87feff", - "00424a": "00424a", - "00ceff": "00ceff", - "0084b5": "0084b5", "a584bd": "62c4e6", "733129": "26a624", "f75221": "ddffb0", - "b54221": "97e083", - "ffffff": "ffffff", - "737373": "737373" + "b54221": "97e083" }, "2": { "52294a": "1e1d33", @@ -21,14 +16,9 @@ "9c5ac5": "484553", "101010": "000000", "ceb5ff": "7bbde3", - "00424a": "00424a", - "00ceff": "00ceff", - "0084b5": "0084b5", "a584bd": "4994da", "733129": "2048bd", "f75221": "a4c8ff", - "b54221": "6c92e0", - "ffffff": "ffffff", - "737373": "737373" + "b54221": "6c92e0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/649-shock.json b/public/images/pokemon/variant/649-shock.json index 5e9fab695c2..b81def26a0c 100644 --- a/public/images/pokemon/variant/649-shock.json +++ b/public/images/pokemon/variant/649-shock.json @@ -5,15 +5,10 @@ "9c5ac5": "7baec3", "101010": "081662", "ceb5ff": "87feff", - "4a4208": "4a4208", - "deff00": "deff00", - "b5b500": "b5b500", "a584bd": "62c4e6", "733129": "26a624", "f75221": "ddffb0", - "b54221": "97e083", - "ffffff": "ffffff", - "737373": "737373" + "b54221": "97e083" }, "2": { "52294a": "1e1d33", @@ -21,14 +16,9 @@ "9c5ac5": "484553", "101010": "000000", "ceb5ff": "ffee5e", - "4a4208": "4a4208", - "deff00": "deff00", - "b5b500": "b5b500", "a584bd": "ecb549", "733129": "c69634", "f75221": "fff7aa", - "b54221": "eccc67", - "ffffff": "ffffff", - "737373": "737373" + "b54221": "eccc67" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/649.json b/public/images/pokemon/variant/649.json index 8dd2e6919e1..1d3c6dd1539 100644 --- a/public/images/pokemon/variant/649.json +++ b/public/images/pokemon/variant/649.json @@ -5,15 +5,10 @@ "9c5ac5": "7baec3", "101010": "081662", "ceb5ff": "87feff", - "6b4a08": "6b4a08", - "efbd00": "efbd00", - "c58400": "c58400", "a584bd": "62c4e6", "733129": "26a624", "f75221": "ddffb0", - "b54221": "97e083", - "ffffff": "ffffff", - "737373": "737373" + "b54221": "97e083" }, "2": { "52294a": "1e1d33", @@ -21,14 +16,9 @@ "9c5ac5": "484553", "101010": "000000", "ceb5ff": "f7ae6a", - "6b4a08": "6b4a08", - "efbd00": "efbd00", - "c58400": "c58400", "a584bd": "e2854c", "733129": "c6684b", "f75221": "fbba7f", - "b54221": "e0875a", - "ffffff": "ffffff", - "737373": "737373" + "b54221": "e0875a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/653.json b/public/images/pokemon/variant/653.json index be967d6c9c2..d603337fb8c 100644 --- a/public/images/pokemon/variant/653.json +++ b/public/images/pokemon/variant/653.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "736028": "9f398a", "ffd659": "e190c3", "ccab47": "c35ba3", @@ -9,11 +8,9 @@ "b34724": "502c81", "737373": "68326b", "f8f8f8": "fbecff", - "bfbfbf": "c093c3", - "404040": "404040" + "bfbfbf": "c093c3" }, "2": { - "101010": "101010", "736028": "172547", "ffd659": "3a6a93", "ccab47": "264166", @@ -22,7 +19,6 @@ "b34724": "0aaa77", "737373": "75553c", "f8f8f8": "fff8ec", - "bfbfbf": "d4b996", - "404040": "404040" + "bfbfbf": "d4b996" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/654.json b/public/images/pokemon/variant/654.json index ce87bf218fb..7d9c5adae93 100644 --- a/public/images/pokemon/variant/654.json +++ b/public/images/pokemon/variant/654.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "736028": "061530", "ffd659": "b55390", "ccab47": "872b59", @@ -10,12 +9,9 @@ "f8f8f8": "f7e4fc", "737373": "5c255f", "bfbfbf": "c093c3", - "804913": "c5b3ca", - "262626": "262626", - "404040": "404040" + "804913": "c5b3ca" }, "2": { - "101010": "101010", "736028": "061530", "ffd659": "2b5f8a", "ccab47": "173864", @@ -25,8 +21,6 @@ "f8f8f8": "fff2dd", "737373": "75553c", "bfbfbf": "d4b996", - "804913": "098794", - "262626": "262626", - "404040": "404040" + "804913": "098794" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/6549.json b/public/images/pokemon/variant/6549.json index 30afb7ebadf..264064b1e4c 100644 --- a/public/images/pokemon/variant/6549.json +++ b/public/images/pokemon/variant/6549.json @@ -2,7 +2,6 @@ "1": { "70365a": "29547d", "bd59a2": "5094c0", - "101010": "101010", "315a31": "5a5a2c", "ff84bd": "73bad9", "39ac39": "bfd17f", @@ -13,13 +12,11 @@ "526229": "80152b", "4a834a": "8e954d", "c5ee7b": "ef5755", - "9cb462": "bd2d40", - "cdc5bd": "cdc5bd" + "9cb462": "bd2d40" }, "2": { "70365a": "8a1a3c", "bd59a2": "d64065", - "101010": "101010", "315a31": "643312", "ff84bd": "e8617a", "39ac39": "ebc460", diff --git a/public/images/pokemon/variant/655.json b/public/images/pokemon/variant/655.json index 9b4721929c1..63e142f0b48 100644 --- a/public/images/pokemon/variant/655.json +++ b/public/images/pokemon/variant/655.json @@ -7,7 +7,6 @@ "816528": "331035", "ffda5a": "e7caef", "deb048": "c093c3", - "101010": "101010", "a7673a": "7a4b9f", "f8f8f8": "ffeef1", "bfbfbf": "d2b3ba", @@ -24,11 +23,7 @@ "816528": "75553c", "ffda5a": "fff2dd", "deb048": "d4b996", - "101010": "101010", "a7673a": "098794", - "f8f8f8": "f8f8f8", - "bfbfbf": "bfbfbf", - "6e6d6a": "6e6d6a", "62211b": "061530", "ae3d32": "215679", "893027": "13325b" diff --git a/public/images/pokemon/variant/6570.json b/public/images/pokemon/variant/6570.json index 0cb91cc3490..083f6275b4c 100644 --- a/public/images/pokemon/variant/6570.json +++ b/public/images/pokemon/variant/6570.json @@ -4,17 +4,13 @@ "d53a3e": "e8512a", "5f0002": "5d0019", "f07376": "ff6d26", - "4a4d53": "4a4d53", "f7acae": "fdc9a2", "fafafa": "f3dac4", - "101010": "101010", "b3b3bb": "d6b7b1", "cbcfd8": "7b7897", "6d4d62": "e1d2d3", "928d96": "303443", - "a7484f": "9e111f", - "ffae1a": "ffae1a", - "df7806": "df7806" + "a7484f": "9e111f" }, "2": { "942429": "09523d", @@ -24,7 +20,6 @@ "4a4d53": "6f4332", "f7acae": "79d38d", "fafafa": "f0decd", - "101010": "101010", "b3b3bb": "c6ab99", "cbcfd8": "d79568", "6d4d62": "813059", diff --git a/public/images/pokemon/variant/6571.json b/public/images/pokemon/variant/6571.json index c87a105447a..3b1482f8a61 100644 --- a/public/images/pokemon/variant/6571.json +++ b/public/images/pokemon/variant/6571.json @@ -2,7 +2,6 @@ "1": { "942429": "4a1921", "d53a3e": "782d41", - "101010": "101010", "928d96": "4a4759", "fafafa": "e1d2d2", "f7acae": "ce646c", @@ -19,7 +18,6 @@ "2": { "942429": "143130", "d53a3e": "2e625a", - "101010": "101010", "928d96": "885f49", "fafafa": "f0decd", "f7acae": "6aa899", @@ -29,7 +27,6 @@ "a7484f": "2a6062", "4a4d53": "411c1a", "cbcfd8": "bc9072", - "4b163b": "4b163b", "6d4d62": "c2589c", "f6ee6c": "98f25f" } diff --git a/public/images/pokemon/variant/664.json b/public/images/pokemon/variant/664.json index bd4164ca7db..932e2399bb9 100644 --- a/public/images/pokemon/variant/664.json +++ b/public/images/pokemon/variant/664.json @@ -2,29 +2,23 @@ "1": { "4d4d4d": "9d6260", "f8f8f8": "ffffff", - "101010": "101010", "b3b3b3": "e9c7c4", "363636": "4c2855", "747474": "a97dbb", "4e4e4e": "895a9f", "9d7247": "838b53", "d1bf6b": "a0c896", - "b2b2b2": "b2b2b2", - "f7f7f7": "f7f7f7", "855d31": "626649" }, "2": { "4d4d4d": "590015", "f8f8f8": "c83e4c", - "101010": "101010", "b3b3b3": "a70d37", "363636": "05312f", "747474": "73bdae", "4e4e4e": "377772", "9d7247": "dda476", "d1bf6b": "ffe0ba", - "b2b2b2": "b2b2b2", - "f7f7f7": "f7f7f7", "855d31": "bf8961" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/665.json b/public/images/pokemon/variant/665.json index 6d828dadb5d..ac2d2e6c336 100644 --- a/public/images/pokemon/variant/665.json +++ b/public/images/pokemon/variant/665.json @@ -6,8 +6,6 @@ "4e4e4e": "895a9f", "747474": "a97dbb", "bfbfbf": "b294be", - "101010": "101010", - "fdfdfd": "fdfdfd", "8c8c8c": "895a9f", "4d4d4d": "9c615f", "f8f8f8": "ffffff", @@ -23,8 +21,6 @@ "4e4e4e": "377772", "747474": "73bdae", "bfbfbf": "a70d37", - "101010": "101010", - "fdfdfd": "fdfdfd", "8c8c8c": "590015", "4d4d4d": "590015", "f8f8f8": "c83e4c", diff --git a/public/images/pokemon/variant/666-archipelago.json b/public/images/pokemon/variant/666-archipelago.json index 5895b2e4836..c3017840a5b 100644 --- a/public/images/pokemon/variant/666-archipelago.json +++ b/public/images/pokemon/variant/666-archipelago.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "c8373c": "c8373c", - "d2bf96": "d2bf96", - "30c171": "30c171", "303030": "402746", - "c27351": "c27351", "675220": "958c8a", "ceab62": "d9edd4", "707068": "a97cbc", "504a4a": "7f6991", - "a2523b": "a2523b", - "c3c3c3": "ffeaff", - "811c1c": "811c1c", - "b28e67": "b28e67" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "824719", - "c8373c": "c8373c", - "d2bf96": "d2bf96", - "30c171": "30c171", "303030": "642703", - "c27351": "c27351", "675220": "741300", "ceab62": "a22414", "707068": "a22414", "504a4a": "741300", - "a2523b": "a2523b", - "c3c3c3": "e7caa5", - "811c1c": "811c1c", - "b28e67": "b28e67" + "c3c3c3": "e7caa5" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-continental.json b/public/images/pokemon/variant/666-continental.json index 92614fb346c..2c40d87b19e 100644 --- a/public/images/pokemon/variant/666-continental.json +++ b/public/images/pokemon/variant/666-continental.json @@ -1,38 +1,22 @@ { "1": { - "101010": "101010", "595959": "724b7a", "555353": "724b7a", - "d18257": "d18257", - "f9bd55": "f9bd55", "303030": "402746", - "f8f05e": "f8f05e", - "d24c3e": "d24c3e", "675220": "958c8a", "ceab62": "d9edd4", "707068": "a97cbc", "504a4a": "7f6991", - "aa5844": "aa5844", - "c3c3c3": "ffeaff", - "811c1c": "811c1c", - "e08528": "e08528" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "8f551e", "555353": "e99b44", - "d18257": "d18257", - "f9bd55": "f9bd55", "303030": "6d2d0d", - "f8f05e": "f8f05e", - "d24c3e": "d24c3e", "675220": "9c5c19", "ceab62": "e99b44", "707068": "e99b44", "504a4a": "9c5c19", - "aa5844": "aa5844", - "c3c3c3": "f8f27f", - "811c1c": "811c1c", - "308528": "308528" + "c3c3c3": "f8f27f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-elegant.json b/public/images/pokemon/variant/666-elegant.json index 7d4e199f74d..43f74da48db 100644 --- a/public/images/pokemon/variant/666-elegant.json +++ b/public/images/pokemon/variant/666-elegant.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "e6ddf8": "e6ddf8", - "f8de3f": "f8de3f", - "cf7ef3": "cf7ef3", "303030": "402746", - "875fb5": "875fb5", - "de4040": "de4040", "675220": "958c8a", "ceab62": "d9edd4", "707068": "a97cbc", "504a4a": "7f6991", - "56479d": "56479d", - "c3c3c3": "ffeaff", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "612776", - "e6ddf8": "e6ddf8", - "f8de3f": "f8de3f", - "cf7ef3": "cf7ef3", "303030": "351262", - "875fb5": "875fb5", - "de4040": "de4040", "675220": "7d1083", "ceab62": "a73fab", "707068": "a73fab", "504a4a": "7d1083", - "56479d": "56479d", - "c3c3c3": "f0ecff", - "811c1c": "811c1c" + "c3c3c3": "f0ecff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-fancy.json b/public/images/pokemon/variant/666-fancy.json index 1f31ac6983d..964324d96e5 100644 --- a/public/images/pokemon/variant/666-fancy.json +++ b/public/images/pokemon/variant/666-fancy.json @@ -1,38 +1,22 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "811c1c": "811c1c", - "de4040": "de4040", - "5faa3e": "5faa3e", - "ceab62": "d9edd4", - "b6d26d": "b6d26d", - "e9e052": "e9e052", - "cf7ef3": "cf7ef3", - "c3c3c3": "ffeaff", - "f2d4e3": "f2d4e3", - "ead2e3": "ffeaff" - }, - "2": { - "101010": "101010", - "303030": "00771b", - "675220": "b9c05a", - "504a4a": "b9c05a", - "595959": "6f9f42", - "707068": "e3e982", - "811c1c": "811c1c", - "de4040": "de4040", - "5faa3e": "5faa3e", - "ceab62": "e3e982", - "b6d26d": "b6d26d", - "e9e052": "e9e052", - "cf7ef3": "cf7ef3", - "c3c3c3": "fcf1ff", - "f2d4e3": "f2d4e3", - "ead2e3": "fcf1ff" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4", + "c3c3c3": "ffeaff", + "ead2e3": "ffeaff" + }, + "2": { + "303030": "00771b", + "675220": "b9c05a", + "504a4a": "b9c05a", + "595959": "6f9f42", + "707068": "e3e982", + "ceab62": "e3e982", + "c3c3c3": "fcf1ff", + "ead2e3": "fcf1ff" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-garden.json b/public/images/pokemon/variant/666-garden.json index 3b88609e835..7cae3ceec5a 100644 --- a/public/images/pokemon/variant/666-garden.json +++ b/public/images/pokemon/variant/666-garden.json @@ -1,34 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "398351": "398351", - "3dba96": "3dba96", "303030": "402746", - "88d254": "88d254", "675220": "958c8a", "ceab62": "d9edd4", - "de4040": "de4040", "707068": "a97cbc", "504a4a": "7f6991", - "3f919a": "3f919a", - "c3c3c3": "ffeaff", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "006b55", - "398351": "398351", - "3dba96": "3dba96", "303030": "044553", - "88d254": "88d254", "675220": "055160", "ceab62": "227687", - "de4040": "de4040", "707068": "227687", "504a4a": "055160", - "3f919a": "3f919a", - "c3c3c3": "72d0a3", - "811c1c": "811c1c" + "c3c3c3": "72d0a3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-high-plains.json b/public/images/pokemon/variant/666-high-plains.json index 85a5eb24cc3..d5a9e9f5874 100644 --- a/public/images/pokemon/variant/666-high-plains.json +++ b/public/images/pokemon/variant/666-high-plains.json @@ -1,38 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "f3a861": "f3a861", "303030": "402746", - "9a5a3b": "9a5a3b", - "e1764e": "e1764e", - "aa4343": "aa4343", "675220": "958c8a", "ceab62": "d9edd4", "707068": "a97cbc", "504a4a": "7f6991", - "c3c3c3": "ffeaff", - "811c1c": "811c1c", - "337543": "337543", - "e8c815": "e8c815", - "773d21": "773d21" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "a55422", - "f3a861": "f3a861", "303030": "8f1d19", - "9a5a3b": "9a5a3b", - "e1764e": "e1764e", - "aa4343": "aa4343", "675220": "c97034", "ceab62": "f2975a", "707068": "f2975a", "504a4a": "c97034", - "c3c3c3": "edc67c", - "811c1c": "811c1c", - "337543": "337543", - "e8c815": "e8c815", - "773d21": "773d21" + "c3c3c3": "edc67c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-icy-snow.json b/public/images/pokemon/variant/666-icy-snow.json index d69d48d89e9..244c47d1863 100644 --- a/public/images/pokemon/variant/666-icy-snow.json +++ b/public/images/pokemon/variant/666-icy-snow.json @@ -1,34 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "f0f0f8": "f0f0f8", "303030": "402746", - "cfd9cf": "cfd9cf", - "c5c5da": "c5c5da", "675220": "958c8a", "ceab62": "d9edd4", "707068": "a97cbc", "504a4a": "7f6991", - "c3c3c3": "ffeaff", - "acacc2": "acacc2", - "95a1a1": "95a1a1", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "60646a", - "f0f0f8": "f0f0f8", "303030": "364051", - "cfd9cf": "cfd9cf", - "c5c5da": "c5c5da", "675220": "666b7d", "ceab62": "8c91a4", "707068": "8c91a4", "504a4a": "666b7d", - "c3c3c3": "fefeff", - "acacc2": "acacc2", - "95a1a1": "95a1a1", - "811c1c": "811c1c" + "c3c3c3": "fefeff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-jungle.json b/public/images/pokemon/variant/666-jungle.json index ad4070f0378..919184c4dde 100644 --- a/public/images/pokemon/variant/666-jungle.json +++ b/public/images/pokemon/variant/666-jungle.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "638c63": "638c63", - "7cc48b": "7cc48b", "303030": "402746", "675220": "958c8a", "ceab62": "d9edd4", "707068": "a97cbc", "504a4a": "7f6991", - "567456": "567456", - "c3c3c3": "ffeaff", - "811c1c": "811c1c", - "9a653e": "9a653e", - "c29566": "c29566", - "724e28": "724e28" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "285b3b", - "638c63": "638c63", - "7cc48b": "7cc48b", "303030": "20452e", "675220": "153922", "ceab62": "385c43", "707068": "385c43", "504a4a": "153922", - "567456": "567456", - "c3c3c3": "a9d9a0", - "811c1c": "811c1c", - "9a653e": "9a653e", - "c29566": "c29566", - "724e28": "724e28" + "c3c3c3": "a9d9a0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-marine.json b/public/images/pokemon/variant/666-marine.json index 027644dc62d..181da6b4c4b 100644 --- a/public/images/pokemon/variant/666-marine.json +++ b/public/images/pokemon/variant/666-marine.json @@ -1,34 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "2f8dc9": "2f8dc9", - "5acdf1": "5acdf1", "303030": "402746", "675220": "958c8a", "ceab62": "d9edd4", - "f2f2f2": "f2f2f2", - "367cb9": "367cb9", "707068": "a97cbc", "504a4a": "7f6991", - "315382": "315382", - "c3c3c3": "ffeaff", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "2a5894", - "2f8dc9": "2f8dc9", - "5acdf1": "5acdf1", "303030": "16244f", "675220": "264c85", "ceab62": "3070af", - "f2f2f2": "f2f2f2", - "367cb9": "367cb9", "707068": "3070af", "504a4a": "264c85", - "315382": "315382", - "c3c3c3": "f2f2f2", - "811c1c": "811c1c" + "c3c3c3": "f2f2f2" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-meadow.json b/public/images/pokemon/variant/666-meadow.json index 058cb600ee3..e1a99ebebdd 100644 --- a/public/images/pokemon/variant/666-meadow.json +++ b/public/images/pokemon/variant/666-meadow.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "da6b7e": "da6b7e", - "f3a0ca": "f3a0ca", "303030": "402746", "675220": "958c8a", "ceab62": "d9edd4", - "b4295a": "b4295a", - "2d9b9b": "2d9b9b", - "f2f2f2": "f2f2f2", "707068": "a97cbc", "504a4a": "7f6991", - "e66fad": "e66fad", - "c3c3c3": "ffeaff", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "9e3941", - "da6b7e": "da6b7e", - "f3a0ca": "f3a0ca", "303030": "770921", "675220": "a2275e", "ceab62": "ce5283", - "b4295a": "b4295a", - "2d9b9b": "2d9b9b", - "f2f2f2": "f2f2f2", "707068": "ce5283", "504a4a": "a2275e", - "e66fad": "e66fad", - "c3c3c3": "f4c2ec", - "811c1c": "811c1c" + "c3c3c3": "f4c2ec" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-modern.json b/public/images/pokemon/variant/666-modern.json index 9ff33f89cea..73ed4020c5b 100644 --- a/public/images/pokemon/variant/666-modern.json +++ b/public/images/pokemon/variant/666-modern.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", "c3c3c3": "ffeaff", - "3b6cbb": "3b6cbb", - "f44f4f": "f44f4f", "303030": "402746", "675220": "958c8a", "ceab62": "d9edd4", - "f8f05c": "f8f05c", "707068": "a97cbc", - "504a4a": "7f6991", - "b83c3c": "b83c3c", - "cfc5d9": "cfc5d9", - "811c1c": "811c1c", - "405793": "405793" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "830012", "c3c3c3": "ffeae8", - "3b6cbb": "3b6cbb", - "f44f4f": "f44f4f", "303030": "4e0000", "675220": "801521", "ceab62": "ad2640", - "f8f05c": "f8f05c", "707068": "ad2640", - "504a4a": "801521", - "b83c3c": "b83c3c", - "cfc5d9": "cfc5d9", - "811c1c": "811c1c", - "405793": "405793" + "504a4a": "801521" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-monsoon.json b/public/images/pokemon/variant/666-monsoon.json index 915d471b2b1..5a127a43bbe 100644 --- a/public/images/pokemon/variant/666-monsoon.json +++ b/public/images/pokemon/variant/666-monsoon.json @@ -1,33 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "807676": "807676", - "ceab62": "d9edd4", - "5676de": "5676de", - "4eccd6": "4eccd6", - "989898": "989898", - "c3c3c3": "c3c3c3", - "f0f0f8": "f0f0f8" - }, - "2": { - "101010": "101010", - "303030": "3d3231", - "675220": "2c3593", - "504a4a": "2c3593", - "595959": "4f4645", - "707068": "5857bc", - "807676": "807676", - "ceab62": "5857bc", - "5676de": "5676de", - "4eccd6": "4eccd6", - "989898": "989898", - "92f4f4": "92f4f4", - "c3c3c3": "b8f9f9", - "f0f0f8": "f0f0f8" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "3d3231", + "675220": "2c3593", + "504a4a": "2c3593", + "595959": "4f4645", + "707068": "5857bc", + "ceab62": "5857bc", + "c3c3c3": "b8f9f9" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-ocean.json b/public/images/pokemon/variant/666-ocean.json index 23f8d48c681..5f46bf9343c 100644 --- a/public/images/pokemon/variant/666-ocean.json +++ b/public/images/pokemon/variant/666-ocean.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "e1384d": "e1384d", - "f4ad61": "f4ad61", - "f8ef6a": "f8ef6a", "303030": "402746", "675220": "958c8a", "ceab62": "d9edd4", "707068": "a97cbc", "504a4a": "7f6991", - "ebcf3f": "ebcf3f", - "c3c3c3": "ffeaff", - "4482c9": "4482c9", - "6bb2e9": "6bb2e9", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "e99a26", - "e1384d": "e1384d", - "f4ad61": "f4ad61", - "f8ef6a": "f8ef6a", "303030": "b54908", "675220": "bc601c", "ceab62": "ea8742", "707068": "ea8742", "504a4a": "bc601c", - "ebcf3f": "ebcf3f", - "c3c3c3": "f3c86b", - "4482c9": "4482c9", - "6bb2e9": "6bb2e9", - "811c1c": "811c1c" + "c3c3c3": "f3c86b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-poke-ball.json b/public/images/pokemon/variant/666-poke-ball.json index fe6b42f6ef3..048cb75ecfd 100644 --- a/public/images/pokemon/variant/666-poke-ball.json +++ b/public/images/pokemon/variant/666-poke-ball.json @@ -1,33 +1,23 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "b72c2c": "b72c2c", - "dc4b4b": "dc4b4b", "303030": "402746", "675220": "958c8a", "ceab62": "d9edd4", - "e97e7e": "e97e7e", - "971d1d": "971d1d", - "f8f8f8": "f8f8f8", "707068": "a97cbc", "504a4a": "7f6991", "c3c3c3": "ffeaff", - "811c1c": "811c1c", - "a9a99e": "a9a99e", "2c2b2b": "402746" }, "2": { - "101010": "101010", "f8f8f8": "00006d", "303030": "ae001a", "2c2b2b": "660000", - "504a4a": "a70038", + "504a4a": "a70038", "595959": "df0036", "c3c3c3": "f0a6bf", "707068": "d5375a", "a9a99e": "000050", - "811c1c": "811c1c", "971d1d": "040046", "b72c2c": "00005e", "dc4b4b": "19007d", diff --git a/public/images/pokemon/variant/666-polar.json b/public/images/pokemon/variant/666-polar.json index 23ee3a94a79..8c8a681f1c6 100644 --- a/public/images/pokemon/variant/666-polar.json +++ b/public/images/pokemon/variant/666-polar.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "4d6cc1": "4d6cc1", "303030": "402746", - "f0f0f8": "f0f0f8", - "3b4b8a": "3b4b8a", - "bfbfbf": "bfbfbf", "675220": "958c8a", "ceab62": "d9edd4", "707068": "a97cbc", "504a4a": "7f6991", - "c3c3c3": "ffeaff", - "2d2d61": "2d2d61", - "811c1c": "811c1c", - "6aa2dc": "6aa2dc" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "2f3887", - "4d6cc1": "4d6cc1", "303030": "191b54", - "f0f0f8": "f0f0f8", - "3b4b8a": "3b4b8a", - "bfbfbf": "bfbfbf", "675220": "366098", "ceab62": "5f85c1", "707068": "5f85c1", "504a4a": "366098", - "c3c3c3": "ffffff", - "2d2d61": "2d2d61", - "811c1c": "811c1c", - "6aa2dc": "6aa2dc" + "c3c3c3": "ffffff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-river.json b/public/images/pokemon/variant/666-river.json index c7e5e288d05..5ba0084df9d 100644 --- a/public/images/pokemon/variant/666-river.json +++ b/public/images/pokemon/variant/666-river.json @@ -1,40 +1,18 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "4a412c": "4a412c", - "675220": "958c8a", - "634d20": "634d20", - "1d726a": "1d726a", - "504a4a": "7f6991", - "595959": "724b7a", - "625841": "625841", - "707068": "a97cbc", - "bc813f": "bc813f", - "9c9143": "9c9143", - "ceab62": "ceab62", - "279ec2": "279ec2", - "59c9d3": "59c9d3", - "c3c3c3": "c3c3c3", - "d2a862": "d9edd4" - }, - "2": { - "101010": "101010", - "303030": "7b2800", - "4a412c": "4a412c", - "675220": "ae7f41", - "634d20": "634d20", - "1d726a": "1d726a", - "504a4a": "ae7f41", - "595959": "8a5702", - "625841": "625841", - "707068": "d9a666", - "bc813f": "bc813f", - "9c9143": "9c9143", - "ceab62": "ceab62", - "279ec2": "279ec2", - "59c9d3": "59c9d3", - "c3c3c3": "e3c384", - "d2a862": "d2a862" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "d2a862": "d9edd4" + }, + "2": { + "303030": "7b2800", + "675220": "ae7f41", + "504a4a": "ae7f41", + "595959": "8a5702", + "707068": "d9a666", + "c3c3c3": "e3c384" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-sandstorm.json b/public/images/pokemon/variant/666-sandstorm.json index c1324548e3d..b80d841c0cc 100644 --- a/public/images/pokemon/variant/666-sandstorm.json +++ b/public/images/pokemon/variant/666-sandstorm.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "f1d69e": "f1d69e", "303030": "402746", - "625843": "625843", - "ba8d68": "ba8d68", - "9b9148": "9b9148", "675220": "958c8a", "ceab62": "d9edd4", "707068": "a97cbc", "504a4a": "7f6991", - "d9b674": "d9b674", - "c3c3c3": "ffeaff", - "811c1c": "811c1c", - "72604d": "72604d" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "88583e", - "f1d69e": "f1d69e", "303030": "443123", - "625843": "625843", - "ba8d68": "ba8d68", - "9b9148": "9b9148", "675220": "9c703b", "ceab62": "c6975f", "707068": "c6975f", "504a4a": "9c703b", - "d9b674": "d9b674", - "c3c3c3": "ece1a9", - "811c1c": "811c1c", - "72604d": "72604d" + "c3c3c3": "ece1a9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-savanna.json b/public/images/pokemon/variant/666-savanna.json index 48ecc051beb..a227c3ae8af 100644 --- a/public/images/pokemon/variant/666-savanna.json +++ b/public/images/pokemon/variant/666-savanna.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "61a0f5": "61a0f5", - "fffd77": "fffd77", - "55d3d9": "55d3d9", "303030": "402746", "675220": "958c8a", "ceab62": "d9edd4", - "dcc433": "dcc433", "707068": "a97cbc", "504a4a": "7f6991", - "3b67ac": "3b67ac", - "6cc6c6": "6cc6c6", - "c3c3c3": "ffeaff", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "4168bb", - "61a0f5": "61a0f5", - "fffd77": "fffd77", - "55d3d9": "55d3d9", "303030": "183576", "675220": "1d828b", "ceab62": "4faab3", - "dcc433": "dcc433", "707068": "4faab3", "504a4a": "1d828b", - "3b67ac": "3b67ac", - "6cc6c6": "6cc6c6", - "c3c3c3": "81e7e1", - "811c1c": "811c1c" + "c3c3c3": "81e7e1" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-sun.json b/public/images/pokemon/variant/666-sun.json index d4b682c9804..aafa9a6cbc6 100644 --- a/public/images/pokemon/variant/666-sun.json +++ b/public/images/pokemon/variant/666-sun.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "f1a26a": "f1a26a", - "f47491": "f47491", "303030": "402746", - "fcf372": "fcf372", - "f0ce44": "f0ce44", "675220": "958c8a", "ceab62": "d9edd4", "707068": "a97cbc", "504a4a": "7f6991", - "c94971": "c94971", - "e18248": "e18248", - "c3c3c3": "ffeaff", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "750500", - "f1a26a": "f1a26a", - "f47491": "f47491", "303030": "640000", - "fcf372": "fcf372", - "f0ce44": "f0ce44", "675220": "8c1850", "ceab62": "b83b74", "707068": "b83b74", "504a4a": "8c1850", - "c94971": "c94971", - "e18248": "e18248", - "c3c3c3": "fee3e7", - "811c1c": "811c1c" + "c3c3c3": "fee3e7" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/666-tundra.json b/public/images/pokemon/variant/666-tundra.json index e5faa385d22..b458a78851d 100644 --- a/public/images/pokemon/variant/666-tundra.json +++ b/public/images/pokemon/variant/666-tundra.json @@ -1,34 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "a3def1": "a3def1", "303030": "402746", - "f0f0f8": "f0f0f8", - "74bbe9": "74bbe9", - "d0d0d0": "d0d0d0", "675220": "958c8a", "ceab62": "d9edd4", "707068": "a97cbc", "504a4a": "7f6991", - "c3c3c3": "ffeaff", - "539ad9": "539ad9", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "225b72", - "a3def1": "a3def1", "303030": "003d69", - "f0f0f8": "f0f0f8", - "74bbe9": "74bbe9", - "d0d0d0": "d0d0d0", "675220": "3a76a7", "ceab62": "659dd0", "707068": "659dd0", "504a4a": "3a76a7", - "c3c3c3": "cbfbfb", - "539ad9": "539ad9", - "811c1c": "811c1c" + "c3c3c3": "cbfbfb" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/669-orange.json b/public/images/pokemon/variant/669-orange.json index bc1328bebf9..d6d416d0299 100644 --- a/public/images/pokemon/variant/669-orange.json +++ b/public/images/pokemon/variant/669-orange.json @@ -6,7 +6,6 @@ "595959": "712b2b", "f8f8f8": "fff1df", "bfbfbf": "f1beb3", - "101010": "101010", "686868": "712b2b", "fffbfb": "fff6f6", "e15455": "b84816", diff --git a/public/images/pokemon/variant/669-red.json b/public/images/pokemon/variant/669-red.json index 145228a41c2..eb95bd11117 100644 --- a/public/images/pokemon/variant/669-red.json +++ b/public/images/pokemon/variant/669-red.json @@ -1,10 +1,7 @@ { "1": { - "101010": "101010", "3d6629": "094740", "665a1f": "3e0547", - "595959": "595959", - "686868": "686868", "802d2d": "55061c", "d94c4c": "aa263c", "e15455": "dc6295", @@ -12,10 +9,7 @@ "65a943": "e493a1", "6bb347": "1d8057", "ccb43d": "6a094f", - "ffe14c": "9c235f", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8", - "fffbfb": "fffbfb" + "ffe14c": "9c235f" }, "2": { "665a1f": "393833", @@ -24,7 +18,6 @@ "595959": "800d3e", "f8f8f8": "ffd7db", "bfbfbf": "f1a2a9", - "101010": "101010", "686868": "800d3e", "fffbfb": "fff6f6", "e15455": "8e0a0a", diff --git a/public/images/pokemon/variant/669-white.json b/public/images/pokemon/variant/669-white.json index 4556e17f09b..48a1806db8f 100644 --- a/public/images/pokemon/variant/669-white.json +++ b/public/images/pokemon/variant/669-white.json @@ -3,11 +3,6 @@ "665a1f": "110732", "ffe14c": "4c495c", "ccb43d": "302b40", - "595959": "595959", - "f8f8f8": "f8f8f8", - "bfbfbf": "bfbfbf", - "101010": "101010", - "686868": "686868", "fffbfb": "f8f8f8", "e15455": "dc6295", "65a943": "e493a1", @@ -22,10 +17,7 @@ "ffe14c": "fdfffb", "ccb43d": "c4c6bf", "595959": "616a64", - "f8f8f8": "f8f8f8", "bfbfbf": "d4dcd5", - "101010": "101010", - "686868": "686868", "fffbfb": "fff6f6", "e15455": "273232", "65a943": "636a67", diff --git a/public/images/pokemon/variant/669-yellow.json b/public/images/pokemon/variant/669-yellow.json index 3ad52b61c15..ab2f958c46b 100644 --- a/public/images/pokemon/variant/669-yellow.json +++ b/public/images/pokemon/variant/669-yellow.json @@ -6,7 +6,6 @@ "595959": "6a532c", "f8f8f8": "fffde0", "bfbfbf": "ead295", - "101010": "101010", "686868": "6a532c", "fffbfb": "fff6f6", "e15455": "bf8f10", diff --git a/public/images/pokemon/variant/6705.json b/public/images/pokemon/variant/6705.json index 87efeef5278..75cbca989ed 100644 --- a/public/images/pokemon/variant/6705.json +++ b/public/images/pokemon/variant/6705.json @@ -6,15 +6,13 @@ "4d454d": "8a2166", "367456": "197497", "50ab89": "3aa8c4", - "101010": "101010", "60606c": "1f1233", "c5cce0": "513981", "aeb5c6": "442967", "949aab": "301848", "665980": "8b69c3", "b8a1e5": "c7a1e5", - "e3e8f4": "cfd6f7", - "8f7db3": "8f7db3" + "e3e8f4": "cfd6f7" }, "2": { "807380": "2b736f", @@ -23,7 +21,6 @@ "4d454d": "194f51", "367456": "a34205", "50ab89": "d27e26", - "101010": "101010", "60606c": "042329", "c5cce0": "176463", "aeb5c6": "0d484a", diff --git a/public/images/pokemon/variant/671-blue.json b/public/images/pokemon/variant/671-blue.json index cb538b357dc..3f60ceea3d1 100644 --- a/public/images/pokemon/variant/671-blue.json +++ b/public/images/pokemon/variant/671-blue.json @@ -6,15 +6,10 @@ "3d9ccc": "2938a3", "61c2f2": "3c54b8", "e5ffff": "69c9e3", - "101010": "101010", "1b594a": "aa1a58", "ffa64c": "ff3e3e", "2d806b": "dc5073", "3aa68b": "ff91a4", - "595959": "595959", - "f8f8f8": "f8f8f8", - "bfbfbf": "bfbfbf", - "262626": "262626", "fff6f6": "f8f8f8" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/671-orange.json b/public/images/pokemon/variant/671-orange.json index 25ffaa4bec2..a7c9af94e41 100644 --- a/public/images/pokemon/variant/671-orange.json +++ b/public/images/pokemon/variant/671-orange.json @@ -6,15 +6,10 @@ "d98d41": "954c17", "ffb266": "cd8e31", "fff2e5": "ffbc77", - "101010": "101010", "1b594a": "aa1a58", "b36bb3": "fff35a", "2d806b": "dc5073", "3aa68b": "ff91a4", - "595959": "595959", - "f8f8f8": "f8f8f8", - "bfbfbf": "bfbfbf", - "262626": "262626", "fff6f6": "f8f8f8" }, "2": { @@ -24,7 +19,6 @@ "d98d41": "7f9f1f", "ffb266": "afcf4f", "fff2e5": "dfe3e1", - "101010": "101010", "1b594a": "800707", "b36bb3": "ffca98", "2d806b": "b1380f", @@ -32,7 +26,6 @@ "595959": "712b2b", "f8f8f8": "fff1df", "bfbfbf": "f1a695", - "262626": "262626", "fff6f6": "f9f9f9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/671-red.json b/public/images/pokemon/variant/671-red.json index a07f1bf5d25..23ca6c98f2b 100644 --- a/public/images/pokemon/variant/671-red.json +++ b/public/images/pokemon/variant/671-red.json @@ -6,15 +6,10 @@ "d94c4c": "95172c", "ff7373": "c64040", "ffb2cc": "ff90a2", - "101010": "101010", "1b594a": "aa1a58", "ffe14c": "ff7c39", "2d806b": "dc5073", "3aa68b": "ff91a4", - "595959": "595959", - "f8f8f8": "f8f8f8", - "bfbfbf": "bfbfbf", - "262626": "262626", "fff6f6": "f8f8f8" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/671-white.json b/public/images/pokemon/variant/671-white.json index 1db360bee55..21344eab104 100644 --- a/public/images/pokemon/variant/671-white.json +++ b/public/images/pokemon/variant/671-white.json @@ -6,15 +6,10 @@ "d9d9d9": "3c3b47", "fefefe": "60616a", "ffbfca": "c2c1c6", - "101010": "101010", "1b594a": "aa1a58", "41d9d9": "ffffff", "2d806b": "dc5073", "3aa68b": "ff91a4", - "595959": "595959", - "f8f8f8": "f8f8f8", - "bfbfbf": "bfbfbf", - "262626": "262626", "fff6f6": "f8f8f8" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/671-yellow.json b/public/images/pokemon/variant/671-yellow.json index f6e962d1f3f..dfbd260ec74 100644 --- a/public/images/pokemon/variant/671-yellow.json +++ b/public/images/pokemon/variant/671-yellow.json @@ -6,15 +6,10 @@ "d9cc41": "789c16", "fff266": "b0bf2b", "ffd2a6": "ffe593", - "101010": "101010", "1b594a": "aa1a58", "93b336": "5f30ff", "2d806b": "dc5073", "3aa68b": "ff91a4", - "595959": "595959", - "f8f8f8": "f8f8f8", - "bfbfbf": "bfbfbf", - "262626": "262626", "fff6f6": "f8f8f8" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/6713.json b/public/images/pokemon/variant/6713.json index ce1113cb3f9..a23af6d279f 100644 --- a/public/images/pokemon/variant/6713.json +++ b/public/images/pokemon/variant/6713.json @@ -6,7 +6,6 @@ "6b5442": "732334", "335980": "994255", "fbffff": "ffebf2", - "101010": "101010", "492d25": "101010", "553e33": "4c131f", "927863": "994255", @@ -23,7 +22,6 @@ "6b5442": "2c7a75", "335980": "824628", "fbffff": "fff2ad", - "101010": "101010", "492d25": "00403d", "553e33": "006761", "927863": "5ba6a1", diff --git a/public/images/pokemon/variant/672.json b/public/images/pokemon/variant/672.json index 7ee3888e36d..8ed15346d6f 100644 --- a/public/images/pokemon/variant/672.json +++ b/public/images/pokemon/variant/672.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "737373": "9e2c3d", "404040": "73132e", "403830": "642509", diff --git a/public/images/pokemon/variant/673.json b/public/images/pokemon/variant/673.json index e6d03313a9f..313adada8a5 100644 --- a/public/images/pokemon/variant/673.json +++ b/public/images/pokemon/variant/673.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "404040": "73132e", "666666": "9e2c3d", "542914": "471405", @@ -16,7 +15,6 @@ "d6b778": "ce8648" }, "2": { - "101010": "101010", "404040": "161526", "666666": "2d2b40", "542914": "37224d", diff --git a/public/images/pokemon/variant/677.json b/public/images/pokemon/variant/677.json index 9708332f277..f26f7f73032 100644 --- a/public/images/pokemon/variant/677.json +++ b/public/images/pokemon/variant/677.json @@ -6,10 +6,8 @@ "8a8a99": "943b5d", "f8f8f8": "f1f0e4", "cca3cc": "43adaf", - "ffffff": "ffffff", "3f6273": "30237a", - "995c99": "29767f", - "101010": "101010" + "995c99": "29767f" }, "2": { "5c5c66": "243e41", @@ -18,9 +16,7 @@ "8a8a99": "426b62", "f8f8f8": "67415e", "cca3cc": "ff657d", - "ffffff": "ffffff", "3f6273": "69004e", - "995c99": "d13955", - "101010": "101010" + "995c99": "d13955" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/678-female.json b/public/images/pokemon/variant/678-female.json index 06f6eb9ca3b..ffd4c9a6cf3 100644 --- a/public/images/pokemon/variant/678-female.json +++ b/public/images/pokemon/variant/678-female.json @@ -5,10 +5,8 @@ "f8f8f8": "f8f5cd", "17294d": "47182e", "365fb3": "a5346b", - "101010": "101010", "264480": "76264d", "ffe54f": "3fbae2", - "ffffff": "ffffff", "d92121": "415493", "c9ad20": "4b86bd" }, @@ -18,10 +16,8 @@ "f8f8f8": "855577", "17294d": "1d3f33", "365fb3": "7bd38d", - "101010": "101010", "264480": "47946c", "ffe54f": "ff85ad", - "ffffff": "ffffff", "d92121": "9d0067", "c9ad20": "f2557b" } diff --git a/public/images/pokemon/variant/678.json b/public/images/pokemon/variant/678.json index a4ca1b86f3f..cf323c28b96 100644 --- a/public/images/pokemon/variant/678.json +++ b/public/images/pokemon/variant/678.json @@ -6,10 +6,8 @@ "17294d": "47182e", "365fb3": "a5346b", "264480": "76264d", - "101010": "101010", "7ff5f5": "74e8eb", "43c3a7": "1fa5bb", - "ffffff": "ffffff", "14864d": "415493" }, "2": { @@ -19,10 +17,8 @@ "17294d": "1d3f33", "365fb3": "7bd38d", "264480": "47946c", - "101010": "101010", "7ff5f5": "ff867c", "43c3a7": "df4272", - "ffffff": "ffffff", "14864d": "9a0066" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/690.json b/public/images/pokemon/variant/690.json index bc38775de62..77cd77e8069 100644 --- a/public/images/pokemon/variant/690.json +++ b/public/images/pokemon/variant/690.json @@ -4,7 +4,6 @@ "3f6273": "310511", "a6703a": "3e44a2", "a6e1ff": "792a48", - "101010": "101010", "7ec3e5": "6b1f42", "734d28": "22287b", "cc8f52": "6673c0", @@ -18,7 +17,6 @@ "3f6273": "340628", "a6703a": "2c5d64", "a6e1ff": "633060", - "101010": "101010", "7ec3e5": "481a42", "734d28": "123c47", "cc8f52": "37797c", diff --git a/public/images/pokemon/variant/691.json b/public/images/pokemon/variant/691.json index 91435005b4f..579dd697b58 100644 --- a/public/images/pokemon/variant/691.json +++ b/public/images/pokemon/variant/691.json @@ -1,7 +1,6 @@ { "1": { "4e4f26": "31246d", - "101010": "101010", "8b8c62": "403c94", "751e2a": "310511", "dc3d51": "5a152f", diff --git a/public/images/pokemon/variant/696.json b/public/images/pokemon/variant/696.json index 19a14cea4ea..2e5ebaa0a7b 100644 --- a/public/images/pokemon/variant/696.json +++ b/public/images/pokemon/variant/696.json @@ -1,53 +1,27 @@ { "1": { - "734517":"5e0b0b", - "ffa64c":"a50d0d", - "4a322c":"023425", - "404040":"4c3216", - "101010":"101010", - "65483a":"0b4c29", - "966858":"1b6430", - "f8f8f8":"dfdea7", - "8c8c8c":"ad8c63", - "bfbfbf":"cbbe8c", - "121212":"121212", - "bdbdbd":"cfc28f" + "734517": "5e0b0b", + "ffa64c": "a50d0d", + "4a322c": "023425", + "404040": "4c3216", + "65483a": "0b4c29", + "966858": "1b6430", + "f8f8f8": "dfdea7", + "8c8c8c": "ad8c63", + "bfbfbf": "cbbe8c", + "bdbdbd": "cfc28f" }, "2": { - "734517":"395cb7", - "ffa64c":"d2e9ff", - "4a322c":"3e1f18", - "404040":"250860", - "101010":"101010", - "65483a":"644943", - "966858":"83726e", - "f8f8f8":"6e46a7", - "8c8c8c":"411684", - "bfbfbf":"593097", - "121212":"decaff", - "bdbdbd":"79c8d3" + "734517": "395cb7", + "ffa64c": "d2e9ff", + "4a322c": "3e1f18", + "404040": "250860", + "65483a": "644943", + "966858": "83726e", + "f8f8f8": "6e46a7", + "8c8c8c": "411684", + "bfbfbf": "593097", + "121212": "decaff", + "bdbdbd": "79c8d3" } -} - - - - - - - - - - - - - - - - - - - - - - - +} \ No newline at end of file diff --git a/public/images/pokemon/variant/697.json b/public/images/pokemon/variant/697.json index 5932ca714e4..f0b1435d35d 100644 --- a/public/images/pokemon/variant/697.json +++ b/public/images/pokemon/variant/697.json @@ -1,39 +1,36 @@ { "1": { - "54434c":"4c3216", - "080808":"080808", - "fafafa":"dfdea7", - "964b1c":"5e0b0b", - "f19d5a":"b52424", - "bf7545":"971c1c", - "cccccc":"cbbe8c", - "50131e":"0b241e", - "963e4e":"285234", - "722533":"153626", - "32252c":"401f18", - "c9c9c9":"cfc28f", - "f7f7f7":"e0dfa8", - "9f9d98":"ad8c63", - "2f2329":"3e1e17", - "584650":"4a3115" + "54434c": "4c3216", + "fafafa": "dfdea7", + "964b1c": "5e0b0b", + "f19d5a": "b52424", + "bf7545": "971c1c", + "cccccc": "cbbe8c", + "50131e": "0b241e", + "963e4e": "285234", + "722533": "153626", + "32252c": "401f18", + "c9c9c9": "cfc28f", + "f7f7f7": "e0dfa8", + "9f9d98": "ad8c63", + "2f2329": "3e1e17", + "584650": "4a3115" }, "2": { - "54434c":"170c25", - "080808":"080808", - "fafafa":"4b2e64", - "964b1c":"9d5390", - "f19d5a":"f3daf5", - "bf7545":"cd7aca", - "cccccc":"33214f", - "50131e":"52352f", - "963e4e":"ab9b97", - "722533":"83726e", - "32252c":"0d0124", - "c9c9c9":"ce7ecc", - "f7f7f7":"f4dbf6", - "9f9d98":"26173b", - "2f2329":"c979c7", - "584650":"eed5f0" + "54434c": "170c25", + "fafafa": "4b2e64", + "964b1c": "9d5390", + "f19d5a": "f3daf5", + "bf7545": "cd7aca", + "cccccc": "33214f", + "50131e": "52352f", + "963e4e": "ab9b97", + "722533": "83726e", + "32252c": "0d0124", + "c9c9c9": "ce7ecc", + "f7f7f7": "f4dbf6", + "9f9d98": "26173b", + "2f2329": "c979c7", + "584650": "eed5f0" } -} - +} \ No newline at end of file diff --git a/public/images/pokemon/variant/698.json b/public/images/pokemon/variant/698.json index f4b95a1c7bf..2f7e4b2d4c7 100644 --- a/public/images/pokemon/variant/698.json +++ b/public/images/pokemon/variant/698.json @@ -5,11 +5,8 @@ "fff2b2": "9bffa9", "85b4cc": "cf755d", "a6e1ff": "efab87", - "cacaca": "cacaca", - "101010": "101010", "2eaeec": "4dc796", "1f75a0": "29988e", - "fdfdfd": "fdfdfd", "537180": "b04f4b", "217aa6": "7f99e1", "30b2f2": "b5dcff", @@ -22,11 +19,8 @@ "fff2b2": "eb88b9", "85b4cc": "654a8a", "a6e1ff": "936daa", - "cacaca": "cacaca", - "101010": "101010", "2eaeec": "ad4e6e", "1f75a0": "8d2656", - "fdfdfd": "fdfdfd", "537180": "392d65", "217aa6": "efaa51", "30b2f2": "ffd169", diff --git a/public/images/pokemon/variant/699.json b/public/images/pokemon/variant/699.json index 8aecfd2f2c2..aeae4cdce3c 100644 --- a/public/images/pokemon/variant/699.json +++ b/public/images/pokemon/variant/699.json @@ -10,10 +10,8 @@ "3689b3": "8487e1", "81a0dc": "e5756b", "ffffff": "ffeac0", - "f8f8f8": "f8f8f8", "4cc3ff": "c2d5ff", "657dac": "c44f5d", - "101010": "101010", "3d8eb6": "12545e", "53c5ff": "1c7376", "4b6f76": "b78460", @@ -31,10 +29,8 @@ "3689b3": "efbe63", "81a0dc": "3f648b", "ffffff": "bae8ff", - "f8f8f8": "f8f8f8", "4cc3ff": "ffea82", "657dac": "2f4978", - "101010": "101010", "3d8eb6": "852d6b", "53c5ff": "ab467e", "4b6f76": "1c183a", diff --git a/public/images/pokemon/variant/70.json b/public/images/pokemon/variant/70.json index a3c4f64f2c7..1b765e959ea 100644 --- a/public/images/pokemon/variant/70.json +++ b/public/images/pokemon/variant/70.json @@ -10,7 +10,6 @@ "d6c552": "ca4f59", "6bc552": "e59266", "fff7ad": "f9bfa6", - "ffffff": "ffffff", "b5424a": "5b284a", "ef9cad": "aa6172", "7b2929": "3d1138", @@ -27,7 +26,6 @@ "d6c552": "6aa6cd", "6bc552": "b0ccd7", "fff7ad": "bae7eb", - "ffffff": "ffffff", "b5424a": "18286f", "ef9cad": "4874b4", "7b2929": "0f1653", diff --git a/public/images/pokemon/variant/700.json b/public/images/pokemon/variant/700.json index dd61b5d1dc4..1aa7adcebd6 100644 --- a/public/images/pokemon/variant/700.json +++ b/public/images/pokemon/variant/700.json @@ -4,7 +4,6 @@ "235a99": "a63071", "fa8caa": "c7a6ee", "64c8f3": "e974db", - "101010": "101010", "528fcc": "d648b7", "d85a7a": "996cd2", "895c72": "5c6889", @@ -18,7 +17,6 @@ "235a99": "900d1b", "fa8caa": "7dec9d", "64c8f3": "ff9a68", - "101010": "101010", "528fcc": "dd3d4f", "d85a7a": "5dae7d", "895c72": "7f5c89", diff --git a/public/images/pokemon/variant/702.json b/public/images/pokemon/variant/702.json index 12feb29a0fd..adea0fb21eb 100644 --- a/public/images/pokemon/variant/702.json +++ b/public/images/pokemon/variant/702.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "262626": "2a3b5e", "4d4d4d": "6789b3", "bfbf86": "a3d1cc", @@ -10,12 +9,10 @@ "f2c261": "ffd3b6", "bf994c": "e49f84", "1d1d1d": "1a1c45", - "f8f8f8": "f8f8f8", "464646": "424b8f", "d97d21": "7cd6a1" }, "2": { - "101010": "101010", "262626": "072d38", "4d4d4d": "197870", "bfbf86": "aaa8d6", @@ -25,7 +22,6 @@ "f2c261": "5f3662", "bf994c": "432249", "1d1d1d": "02172d", - "f8f8f8": "f8f8f8", "464646": "17646c", "d97d21": "d2fff1" } diff --git a/public/images/pokemon/variant/703.json b/public/images/pokemon/variant/703.json index 46a8ec413b4..063a732a361 100644 --- a/public/images/pokemon/variant/703.json +++ b/public/images/pokemon/variant/703.json @@ -2,13 +2,11 @@ "1": { "6994bf": "e67c37", "474759": "292638", - "f8f8f8": "f8f8f8", "8cc6ff": "ffa633", "2e5073": "c35b2a", "8f8fb3": "4d496b", "adadd9": "68638e", "666680": "37344e", - "101010": "101010", "21abd9": "ff9b44", "595959": "e6ac60", "f2f2f2": "ffeed6", @@ -23,7 +21,6 @@ "8f8fb3": "e4cdf9", "adadd9": "faecff", "666680": "cca1db", - "101010": "101010", "21abd9": "de5f8e", "595959": "5a3d84", "f2f2f2": "a473bf", diff --git a/public/images/pokemon/variant/704.json b/public/images/pokemon/variant/704.json index 7c6e384891c..dfbcd3ecc58 100644 --- a/public/images/pokemon/variant/704.json +++ b/public/images/pokemon/variant/704.json @@ -4,7 +4,6 @@ "f2daf2": "fbb3d2", "bfacbf": "e56ca6", "4d454d": "8a2166", - "101010": "101010", "4d993d": "197497", "66cc52": "3aa8c4", "b8a1e5": "c7a1e5", @@ -16,7 +15,6 @@ "f2daf2": "92d8c8", "bfacbf": "63a99e", "4d454d": "134557", - "101010": "101010", "4d993d": "a34205", "66cc52": "d27e26", "b8a1e5": "4a9699", diff --git a/public/images/pokemon/variant/705.json b/public/images/pokemon/variant/705.json index 26e5d5527fd..165f951ed65 100644 --- a/public/images/pokemon/variant/705.json +++ b/public/images/pokemon/variant/705.json @@ -6,7 +6,6 @@ "4d454d": "8a2166", "307922": "aa6a00", "46b030": "ffd047", - "101010": "101010", "98bd51": "197497", "d2e79e": "3aa8c4", "647543": "0c5474", @@ -21,7 +20,6 @@ "4d454d": "194f51", "307922": "007d61", "46b030": "49ffbf", - "101010": "101010", "98bd51": "a34205", "d2e79e": "d27e26", "647543": "842401", diff --git a/public/images/pokemon/variant/706.json b/public/images/pokemon/variant/706.json index 5ede613c3cc..f369598d1b5 100644 --- a/public/images/pokemon/variant/706.json +++ b/public/images/pokemon/variant/706.json @@ -4,8 +4,6 @@ "807380": "8a2166", "bfacbf": "da75a5", "e6d4e7": "f1a4c5", - "f8f8f8": "f8f8f8", - "101010": "101010", "998a99": "b24c86", "307922": "0c5474", "46b030": "197497", @@ -21,8 +19,6 @@ "807380": "194f51", "bfacbf": "5db6a9", "e6d4e7": "9cead8", - "f8f8f8": "f8f8f8", - "101010": "101010", "998a99": "2b736f", "307922": "842401", "46b030": "a34205", diff --git a/public/images/pokemon/variant/708.json b/public/images/pokemon/variant/708.json index a92a69f34c1..e3d4958fccb 100644 --- a/public/images/pokemon/variant/708.json +++ b/public/images/pokemon/variant/708.json @@ -1,7 +1,6 @@ { "1": { "2b303c": "722023", - "101010": "101010", "494e5b": "a14743", "174d3b": "4d362e", "56372f": "36384f", @@ -13,7 +12,6 @@ }, "2": { "2b303c": "6f5f80", - "101010": "101010", "494e5b": "9c92a4", "174d3b": "a94079", "56372f": "31161d", diff --git a/public/images/pokemon/variant/709.json b/public/images/pokemon/variant/709.json index 21d5e210162..984c8b8da02 100644 --- a/public/images/pokemon/variant/709.json +++ b/public/images/pokemon/variant/709.json @@ -2,7 +2,6 @@ "1": { "2d241b": "17182f", "a37a4c": "575a6a", - "101010": "101010", "004321": "361f1b", "1ea762": "907f76", "007541": "4d362e", @@ -15,7 +14,6 @@ "2": { "2d241b": "47232b", "a37a4c": "7e5658", - "101010": "101010", "004321": "761d52", "1ea762": "da7ea8", "007541": "a94079", diff --git a/public/images/pokemon/variant/71.json b/public/images/pokemon/variant/71.json index 993b1749a04..a5b18472689 100644 --- a/public/images/pokemon/variant/71.json +++ b/public/images/pokemon/variant/71.json @@ -2,15 +2,12 @@ "1": { "4aa57b": "e28e58", "635229": "4f0537", - "000000": "000000", "10633a": "b0552e", "8cc57b": "f9be81", "a57b31": "781649", "841900": "50155e", "c55a21": "8d2f89", "ef8c52": "b352a5", - "ffffff": "ffffff", - "bdc5c5": "bdc5c5", "debd52": "983b3d", "efd66b": "b6514d", "f7ef94": "d37763" @@ -25,7 +22,6 @@ "841900": "1d198a", "c55a21": "2231a7", "ef8c52": "3250c7", - "ffffff": "ffffff", "bdc5c5": "b0c3c7", "debd52": "5966b0", "efd66b": "6880c2", diff --git a/public/images/pokemon/variant/710.json b/public/images/pokemon/variant/710.json index 599076fba4b..56ae838fe41 100644 --- a/public/images/pokemon/variant/710.json +++ b/public/images/pokemon/variant/710.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "332721": "213a22", "664e42": "72a966", "4d3b32": "478243", @@ -12,7 +11,6 @@ "b36859": "262626" }, "2": { - "101010": "101010", "332721": "0e2218", "664e42": "425947", "4d3b32": "2a4031", diff --git a/public/images/pokemon/variant/711.json b/public/images/pokemon/variant/711.json index aab77e6eebf..31420703595 100644 --- a/public/images/pokemon/variant/711.json +++ b/public/images/pokemon/variant/711.json @@ -5,7 +5,6 @@ "4c3a1b": "593a59", "894331": "171717", "bf634c": "262626", - "101010": "101010", "f49670": "404040", "ac733e": "aa7e43", "7b4425": "673b1b", @@ -21,7 +20,6 @@ "4c3a1b": "2c2c30", "894331": "153f18", "bf634c": "325b34", - "101010": "101010", "f49670": "4d7d4b", "ac733e": "baa78d", "7b4425": "5c4831", @@ -37,7 +35,6 @@ "4c3a1b": "ad3b33", "894331": "102316", "bf634c": "213c28", - "101010": "101010", "f49670": "36593d", "ac733e": "9b613a", "7b4425": "4a2618", diff --git a/public/images/pokemon/variant/712.json b/public/images/pokemon/variant/712.json index 9663215b117..98f5721bb80 100644 --- a/public/images/pokemon/variant/712.json +++ b/public/images/pokemon/variant/712.json @@ -5,14 +5,10 @@ "58647b": "bf566d", "719aa9": "d97389", "b3eaf8": "ffbfda", - "101010": "101010", "705c99": "732334", "f2ba49": "9dcc3e", "967acc": "994255", - "ffd98c": "cbe696", - "737373": "737373", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8" + "ffd98c": "cbe696" }, "2": { "a5c4d2": "e69e2b", @@ -20,7 +16,6 @@ "58647b": "a8632a", "719aa9": "cc7b1e", "b3eaf8": "fcc95c", - "101010": "101010", "705c99": "006761", "f2ba49": "6cb3ae", "967acc": "2c7a75", diff --git a/public/images/pokemon/variant/713.json b/public/images/pokemon/variant/713.json index ca45360ecea..af98bddcc6d 100644 --- a/public/images/pokemon/variant/713.json +++ b/public/images/pokemon/variant/713.json @@ -7,12 +7,8 @@ "77b8d9": "d97389", "335980": "994255", "f2ffff": "ffebf2", - "101010": "101010", - "737373": "737373", - "bfbfbf": "bfbfbf", "efab34": "9dcc3e", - "ffe46a": "cbe696", - "f8f8f8": "f8f8f8" + "ffe46a": "cbe696" }, "2": { "608cba": "a8632a", @@ -22,8 +18,6 @@ "77b8d9": "cc7b1e", "335980": "824628", "f2ffff": "fff2ad", - "101010": "101010", - "737373": "737373", "bfbfbf": "6cb3ae", "efab34": "6cb3ae", "ffe46a": "b9f2ee", diff --git a/public/images/pokemon/variant/714.json b/public/images/pokemon/variant/714.json index d726bd0e87d..8c9cafc054d 100644 --- a/public/images/pokemon/variant/714.json +++ b/public/images/pokemon/variant/714.json @@ -2,28 +2,24 @@ "1": { "633674": "731338", "b459d5": "a42c54", - "101010": "101010", "85489b": "8e1d4b", "756175": "43167f", "a791a7": "7047ba", "d7bad7": "8d7be3", "3f3f3f": "202558", "ccb43d": "ff8a58", - "f8f8f8": "f8f8f8", "606060": "2f386b", "ffe14c": "ffc182" }, "2": { "633674": "5f151c", "b459d5": "c24430", - "101010": "101010", "85489b": "882c27", "756175": "945d56", "a791a7": "dfb6a8", "d7bad7": "f9e8dd", "3f3f3f": "5b1922", "ccb43d": "33d8d0", - "f8f8f8": "f8f8f8", "606060": "7c2928", "ffe14c": "49ffcd" } diff --git a/public/images/pokemon/variant/715.json b/public/images/pokemon/variant/715.json index e43af20a0de..83d43e5adf6 100644 --- a/public/images/pokemon/variant/715.json +++ b/public/images/pokemon/variant/715.json @@ -1,42 +1,38 @@ { - "1": { - "101010": "101010", - "2b2b2b": "43167f", - "343333": "563d8f", - "3b3b3b": "5f32b1", - "6a3f73": "0f103c", - "287366": "731338", - "575757": "7a5ccc", - "555454": "9166c8", - "801a1a": "5d173d", - "e52e2e": "903b78", - "ffe14c": "ff8a58", - "8e5499": "202558", - "bd70cc": "2f386b", - "3aa694": "a42c54", - "4cd9c1": "d04b6c", - "bfbfbf": "bb9adc", - "f8f8f8": "f8f8f8", - "f7f3f3": "d6c8f1" - }, - "2": { - "101010": "101010", - "2b2b2b": "5e3932", - "343333": "1d060c", - "3b3b3b": "c29484", - "6a3f73": "3b0c18", - "287366": "832714", - "575757": "ecd3c3", - "555454": "2f0d13", - "801a1a": "7c0907", - "e52e2e": "ad3419", - "ffe14c": "49ffcd", - "8e5499": "5b1922", - "bd70cc": "7c2928", - "3aa694": "b8552c", - "4cd9c1": "dd834c", - "bfbfbf": "43191e", - "f8f8f8": "f8f8f8", - "f7f3f3": "5a2a2b" - } + "1": { + "2b2b2b": "43167f", + "343333": "563d8f", + "3b3b3b": "5f32b1", + "6a3f73": "0f103c", + "287366": "731338", + "575757": "7a5ccc", + "555454": "9166c8", + "801a1a": "5d173d", + "e52e2e": "903b78", + "ffe14c": "ff8a58", + "8e5499": "202558", + "bd70cc": "2f386b", + "3aa694": "a42c54", + "4cd9c1": "d04b6c", + "bfbfbf": "bb9adc", + "f7f3f3": "d6c8f1" + }, + "2": { + "2b2b2b": "5e3932", + "343333": "1d060c", + "3b3b3b": "c29484", + "6a3f73": "3b0c18", + "287366": "832714", + "575757": "ecd3c3", + "555454": "2f0d13", + "801a1a": "7c0907", + "e52e2e": "ad3419", + "ffe14c": "49ffcd", + "8e5499": "5b1922", + "bd70cc": "7c2928", + "3aa694": "b8552c", + "4cd9c1": "dd834c", + "bfbfbf": "43191e", + "f7f3f3": "5a2a2b" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/716-active.json b/public/images/pokemon/variant/716-active.json index f56ac097702..fe5ff1c16b6 100644 --- a/public/images/pokemon/variant/716-active.json +++ b/public/images/pokemon/variant/716-active.json @@ -9,13 +9,11 @@ "f24949": "418fc9", "ffecb2": "f0c197", "547fe9": "b33ccd", - "101010": "101010", "f29d49": "51d6ad", "b857d9": "6c45da", "243659": "132b1b", "5c8ae5": "324c37", "3d5c99": "1e3824", - "fff9e6": "fff9e6", "262626": "518554", "404040": "7ca376" }, @@ -29,13 +27,11 @@ "f24949": "f65be1", "ffecb2": "553639", "547fe9": "d75343", - "101010": "101010", "f29d49": "8b67ff", "b857d9": "f7477f", "243659": "37134c", "5c8ae5": "884e9f", "3d5c99": "643071", - "fff9e6": "fff9e6", "262626": "d284b6", "404040": "faaed8" } diff --git a/public/images/pokemon/variant/716-neutral.json b/public/images/pokemon/variant/716-neutral.json index e6b5dab397b..7dd54065267 100644 --- a/public/images/pokemon/variant/716-neutral.json +++ b/public/images/pokemon/variant/716-neutral.json @@ -3,11 +3,9 @@ "364566": "603f3c", "84b4ce": "ac8781", "c0e0ec": "bfa19a", - "101010": "101010", "243659": "132b1b", "5c8ae5": "324c37", "3d5c99": "1e3824", - "fff9e6": "fff9e6", "2b2a2e": "518554", "404040": "7ca376" }, @@ -15,11 +13,9 @@ "364566": "230d1e", "84b4ce": "42283b", "c0e0ec": "613e56", - "101010": "101010", "243659": "37134c", "5c8ae5": "884e9f", "3d5c99": "643071", - "fff9e6": "fff9e6", "2b2a2e": "d285a7", "404040": "f6badb" } diff --git a/public/images/pokemon/variant/717.json b/public/images/pokemon/variant/717.json index 29b3fc77fb3..f809d0abdc1 100644 --- a/public/images/pokemon/variant/717.json +++ b/public/images/pokemon/variant/717.json @@ -3,7 +3,6 @@ "1a1b1e": "0f0b2c", "586369": "323b6b", "3c4247": "1d2250", - "010101": "010101", "282d31": "12133a", "6d6969": "c1ac9a", "a49897": "dbd4cd", @@ -13,14 +12,12 @@ "c43647": "8235a4", "ec4434": "9642b1", "5b1a2b": "3a0e5b", - "43c8cf": "57b3ff", - "fbfbfb": "fbfbfb" + "43c8cf": "57b3ff" }, "2": { "1a1b1e": "234596", "586369": "94cbf9", "3c4247": "5f9ee4", - "010101": "010101", "282d31": "356cbc", "6d6969": "bfb0f4", "a49897": "ded9ff", @@ -30,7 +27,6 @@ "c43647": "1a1c77", "ec4434": "222a90", "5b1a2b": "0e0742", - "43c8cf": "ff1519", - "fbfbfb": "fbfbfb" + "43c8cf": "ff1519" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/720-unbound.json b/public/images/pokemon/variant/720-unbound.json index 8fc7ab07db3..70acd449dba 100644 --- a/public/images/pokemon/variant/720-unbound.json +++ b/public/images/pokemon/variant/720-unbound.json @@ -3,7 +3,6 @@ "582840": "701507", "cf4f8f": "cb5e23", "9f3f6f": "902c0d", - "101010": "101010", "446475": "513b29", "302c2c": "3e162b", "afcfdf": "c6bba8", @@ -12,14 +11,12 @@ "6b8b98": "725f4d", "7f5f1f": "414a79", "ffdf3f": "becef5", - "bf9f3f": "9ca7d5", - "fefefe": "fefefe" + "bf9f3f": "9ca7d5" }, "1": { "582840": "280d46", "cf4f8f": "753f9b", "9f3f6f": "471c6b", - "101010": "101010", "446475": "4d244e", "302c2c": "632373", "afcfdf": "c3aabe", @@ -28,14 +25,12 @@ "6b8b98": "72496e", "7f5f1f": "853015", "ffdf3f": "ffc26a", - "bf9f3f": "e2885a", - "fefefe": "fefefe" + "bf9f3f": "e2885a" }, "2": { "582840": "150933", "cf4f8f": "35387c", "9f3f6f": "1d1a4b", - "101010": "101010", "446475": "1a3f35", "302c2c": "1c2433", "afcfdf": "a1c4c3", @@ -44,7 +39,6 @@ "6b8b98": "345a54", "7f5f1f": "682b16", "ffdf3f": "ed9b42", - "bf9f3f": "b05d2d", - "fefefe": "fefefe" + "bf9f3f": "b05d2d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/720.json b/public/images/pokemon/variant/720.json index e2d1409fbe3..b2cb8e2105d 100644 --- a/public/images/pokemon/variant/720.json +++ b/public/images/pokemon/variant/720.json @@ -5,7 +5,6 @@ "cc5c81": "902c0d", "676773": "3e162b", "8a8a99": "684252", - "101010": "101010", "dadaf2": "ffdb73", "807126": "414a79", "b8b8cc": "cc923c", @@ -22,7 +21,6 @@ "cc5c81": "471c6b", "676773": "632373", "8a8a99": "a947b4", - "101010": "101010", "dadaf2": "f7bae9", "807126": "853015", "b8b8cc": "ca79bd", @@ -39,7 +37,6 @@ "cc5c81": "1d1a4b", "676773": "1c2433", "8a8a99": "304757", - "101010": "101010", "dadaf2": "d5cce5", "807126": "682b16", "b8b8cc": "9e8fbb", diff --git a/public/images/pokemon/variant/728.json b/public/images/pokemon/variant/728.json index fb17e2c119e..cd73143937a 100644 --- a/public/images/pokemon/variant/728.json +++ b/public/images/pokemon/variant/728.json @@ -7,8 +7,6 @@ "436cbf": "009469", "b3627d": "e54c41", "6c90d9": "14af82", - "101010": "101010", - "808080": "808080", "bfbfbf": "c2beb4", "314f8c": "006355", "639ba6": "858d7d", @@ -24,8 +22,6 @@ "436cbf": "a6213f", "b3627d": "a7225c", "6c90d9": "be294a", - "101010": "101010", - "808080": "808080", "bfbfbf": "bfb4b9", "314f8c": "770f29", "639ba6": "b88389", diff --git a/public/images/pokemon/variant/729.json b/public/images/pokemon/variant/729.json index 491f0e1447d..fbf9b930c18 100644 --- a/public/images/pokemon/variant/729.json +++ b/public/images/pokemon/variant/729.json @@ -1,34 +1,28 @@ { "1": { - "808080": "808080", "f8f8f8": "fff6e2", "bfbfbf": "c2beb4", "476d72": "be665d", "8dafaf": "ff989e", - "101010": "101010", "326187": "006b65", "2d8ec4": "009a88", "bad8d8": "ffbd98", "1eb9ee": "0ccfa2", "733f50": "bb402f", "e57ea1": "ff9384", - "2d2e31": "2d2e31", "b3627d": "fb6051" }, "2": { - "808080": "808080", "f8f8f8": "f5edee", "bfbfbf": "bfb4b9", "476d72": "793f5e", "8dafaf": "b681a6", - "101010": "101010", "326187": "5a141b", "2d8ec4": "952c3f", "bad8d8": "deabce", "1eb9ee": "c6496f", "733f50": "620a33", "e57ea1": "dd3780", - "2d2e31": "2d2e31", "b3627d": "a7225c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/730.json b/public/images/pokemon/variant/730.json index eec815b0572..9ac00923a7a 100644 --- a/public/images/pokemon/variant/730.json +++ b/public/images/pokemon/variant/730.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "8d3f4a": "a62c20", "c76374": "e54c41", "0e6792": "b54f5f", @@ -18,11 +17,9 @@ "c0bdc1": "beaac0", "aac7e6": "ea7c5b", "f8f8f8": "fff2d4", - "faf8f8": "f1e8f1", - "fef8f8": "fef8f8" + "faf8f8": "f1e8f1" }, "2": { - "101010": "101010", "8d3f4a": "1d1638", "c76374": "391e62", "0e6792": "500518", @@ -40,7 +37,6 @@ "c0bdc1": "c0b4a5", "aac7e6": "e9a5c0", "f8f8f8": "f5edee", - "faf8f8": "f5f3e3", - "fef8f8": "fef8f8" + "faf8f8": "f5f3e3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/734.json b/public/images/pokemon/variant/734.json index e85de98e300..f4048ea2099 100644 --- a/public/images/pokemon/variant/734.json +++ b/public/images/pokemon/variant/734.json @@ -7,11 +7,6 @@ "9c5b50": "2a3f52", "ba836d": "35576b", "ea8c96": "c1715c", - "080808": "080808", - "f8f8f8": "f8f8f8", - "686d77": "686d77", - "433f3a": "433f3a", - "a5a8af": "a5a8af", "413d38": "523716" }, "2": { @@ -22,8 +17,6 @@ "9c5b50": "786a66", "ba836d": "a69c98", "ea8c96": "a38b89", - "080808": "080808", - "f8f8f8": "f8f8f8", "686d77": "6c6c6c", "433f3a": "3f3f3f", "a5a8af": "a7a7a7", diff --git a/public/images/pokemon/variant/735.json b/public/images/pokemon/variant/735.json index 7e6e6e65449..dc4575ce8c8 100644 --- a/public/images/pokemon/variant/735.json +++ b/public/images/pokemon/variant/735.json @@ -5,13 +5,9 @@ "8d473d": "2a3252", "602c24": "03102d", "af754e": "354c6b", - "101010": "101010", "b6973a": "7a6a6d", "393633": "5f3d1c", - "f8f8f8": "f8f8f8", - "787885": "787885", "ea6f91": "c1715c", - "a3a3ab": "a3a3ab", "2d2b28": "5a3215" }, "2": { @@ -20,10 +16,7 @@ "8d473d": "90827e", "602c24": "524b4b", "af754e": "ada5a4", - "101010": "101010", "b6973a": "362e2e", - "393633": "393633", - "f8f8f8": "f8f8f8", "787885": "6e6e7b", "ea6f91": "846a68", "a3a3ab": "989898", diff --git a/public/images/pokemon/variant/747.json b/public/images/pokemon/variant/747.json index 8c4b94e9149..f765e3a51f8 100644 --- a/public/images/pokemon/variant/747.json +++ b/public/images/pokemon/variant/747.json @@ -6,12 +6,10 @@ "ba8dbe": "edd5ca", "daac23": "aca5f3", "9265a3": "d29784", - "101010": "101010", "335780": "490a26", "6098b7": "b24b34", "dcafd6": "a21f90", - "9fd9d6": "e07b53", - "fdfdfd": "fdfdfd" + "9fd9d6": "e07b53" }, "2": { "be7c34": "9f4354", @@ -20,11 +18,9 @@ "ba8dbe": "2b6157", "daac23": "efa2ad", "9265a3": "1c524b", - "101010": "101010", "335780": "186443", "6098b7": "359d5d", "dcafd6": "ff3f5a", - "9fd9d6": "5bd97f", - "fdfdfd": "fdfdfd" + "9fd9d6": "5bd97f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/748.json b/public/images/pokemon/variant/748.json index 280c676293a..5ffc26903ab 100644 --- a/public/images/pokemon/variant/748.json +++ b/public/images/pokemon/variant/748.json @@ -1,7 +1,6 @@ { "1": { "943732": "490a3c", - "101010": "101010", "f28c4f": "a21f90", "e25025": "91138c", "6f97c4": "be583d", @@ -9,7 +8,6 @@ "93d1d7": "df7b52", "711a6a": "81463e", "d76fa5": "edd5ca", - "171539": "171539", "3a3f6d": "462952", "525898": "6c3776", "b7429a": "d29784", @@ -18,7 +16,6 @@ }, "2": { "943732": "c30e49", - "101010": "101010", "f28c4f": "ff3f5a", "e25025": "e12350", "6f97c4": "359d5d", diff --git a/public/images/pokemon/variant/752.json b/public/images/pokemon/variant/752.json index 448e2c5dbf5..551478e1bd9 100644 --- a/public/images/pokemon/variant/752.json +++ b/public/images/pokemon/variant/752.json @@ -3,8 +3,6 @@ "426b84": "7c3b51", "b7d7e6": "ffc8d1", "81afc9": "d187a0", - "fdfdfd": "fdfdfd", - "101010": "101010", "69670e": "3a112f", "9bad34": "4e1f42", "cedf42": "673252", @@ -21,7 +19,6 @@ "b7d7e6": "dce7ee", "81afc9": "a7a2bc", "fdfdfd": "f3fbff", - "101010": "101010", "69670e": "263756", "9bad34": "4980ac", "cedf42": "72add9", diff --git a/public/images/pokemon/variant/753.json b/public/images/pokemon/variant/753.json index 78eaa04fb78..d6ffc97c2da 100644 --- a/public/images/pokemon/variant/753.json +++ b/public/images/pokemon/variant/753.json @@ -3,7 +3,6 @@ "234028": "2e1643", "468050": "3e2253", "5ba668": "4e2c62", - "101010": "101010", "315945": "0e2616", "69bf94": "27452c", "549977": "1b3822", @@ -19,7 +18,6 @@ "234028": "812255", "468050": "ad3a87", "5ba668": "ce54b0", - "101010": "101010", "315945": "441342", "69bf94": "6e3472", "549977": "5a215a", diff --git a/public/images/pokemon/variant/754.json b/public/images/pokemon/variant/754.json index c8fcf792f01..07ba33a140a 100644 --- a/public/images/pokemon/variant/754.json +++ b/public/images/pokemon/variant/754.json @@ -6,7 +6,6 @@ "315945": "122a1a", "d98d9a": "c95623", "69bf94": "314e36", - "101010": "101010", "cc5266": "ac351f", "404040": "3c1717", "bfbfbf": "c9d6b7", @@ -20,7 +19,6 @@ "315945": "c940c4", "d98d9a": "2944a2", "69bf94": "f881ff", - "101010": "101010", "cc5266": "343381", "404040": "0c0a3f", "bfbfbf": "feccff", diff --git a/public/images/pokemon/variant/755.json b/public/images/pokemon/variant/755.json index 19c8b36ac41..05d00a042a9 100644 --- a/public/images/pokemon/variant/755.json +++ b/public/images/pokemon/variant/755.json @@ -3,7 +3,6 @@ "7a3f7a": "451233", "f1b6c8": "e76d5b", "e07c8d": "d64742", - "101010": "101010", "b591c4": "803a5c", "9d70b1": "5c2445", "6f80a8": "8c3338", @@ -18,7 +17,6 @@ "7a3f7a": "1d225e", "f1b6c8": "b0ffe1", "e07c8d": "7ae7c9", - "101010": "101010", "b591c4": "3a4b75", "9d70b1": "2c336b", "6f80a8": "179b8f", diff --git a/public/images/pokemon/variant/756.json b/public/images/pokemon/variant/756.json index 22e94d25718..e04f4c7b624 100644 --- a/public/images/pokemon/variant/756.json +++ b/public/images/pokemon/variant/756.json @@ -4,7 +4,6 @@ "b591c4": "e76d5b", "97b371": "866eaf", "cbd59f": "e5aff3", - "101010": "101010", "9867ad": "d64742", "764b67": "451233", "d08aab": "4e1f3b", diff --git a/public/images/pokemon/variant/761.json b/public/images/pokemon/variant/761.json index 2760b472e6a..48e6f8960df 100644 --- a/public/images/pokemon/variant/761.json +++ b/public/images/pokemon/variant/761.json @@ -3,20 +3,15 @@ "476629": "215e59", "6b993d": "398793", "8fcc52": "70d2e1", - "101010": "101010", "80334d": "251936", "b3476b": "7e5cdb", "e55c8a": "9f86e4", - "f8f8f8": "f8f8f8", - "ffe14c": "7e5cdb", - "737373": "737373", - "bfbfbf": "bfbfbf" + "ffe14c": "7e5cdb" }, "2": { "476629": "3e0a11", "6b993d": "5a0a16", "8fcc52": "86232e", - "101010": "101010", "80334d": "0f0f0f", "b3476b": "254536", "e55c8a": "2c574a", diff --git a/public/images/pokemon/variant/762.json b/public/images/pokemon/variant/762.json index a5662084e60..5eeac0d1de3 100644 --- a/public/images/pokemon/variant/762.json +++ b/public/images/pokemon/variant/762.json @@ -1,15 +1,10 @@ { "1": { "446328": "215e59", - "0f0f0f": "0f0f0f", "96c853": "70d2e1", "659344": "398793", "ebe130": "e66556", - "c7b8c4": "c7b8c4", - "72585f": "72585f", "ce466b": "a787ff", - "fdfdfd": "fdfdfd", - "fcfcfc": "fcfcfc", "962354": "45366e", "f26284": "7e5cdb", "6a1533": "251936", @@ -17,7 +12,6 @@ }, "2": { "446328": "3e0a11", - "0f0f0f": "0f0f0f", "96c853": "86232e", "659344": "5a0a16", "ebe130": "5c0505", @@ -25,7 +19,6 @@ "72585f": "574348", "ce466b": "124e3c", "fdfdfd": "e4c59e", - "fcfcfc": "fcfcfc", "962354": "162d25", "f26284": "2c574a", "6a1533": "0f0f0f", diff --git a/public/images/pokemon/variant/763.json b/public/images/pokemon/variant/763.json index e7d4566e507..501801f888d 100644 --- a/public/images/pokemon/variant/763.json +++ b/public/images/pokemon/variant/763.json @@ -9,12 +9,7 @@ "c5ae14": "af3e31", "96c853": "70d2e1", "659344": "398793", - "0f0f0f": "0f0f0f", - "fdfdfd": "fdfdfd", - "c7b8c4": "c7b8c4", - "ce466b": "7e5cdb", - "fcfcfc": "fcfcfc", - "72585f": "72585f" + "ce466b": "7e5cdb" }, "2": { "6a1533": "000000", @@ -26,11 +21,8 @@ "c5ae14": "391717", "96c853": "86232e", "659344": "5a0a16", - "0f0f0f": "0f0f0f", "fdfdfd": "e4c59e", "c7b8c4": "af8260", - "ce466b": "124e3c", - "fcfcfc": "fcfcfc", - "72585f": "72585f" + "ce466b": "124e3c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/767.json b/public/images/pokemon/variant/767.json index 5ece1ca679f..84114ed68e0 100644 --- a/public/images/pokemon/variant/767.json +++ b/public/images/pokemon/variant/767.json @@ -3,26 +3,22 @@ "46334f": "844008", "a65e97": "e8a92a", "713e70": "c86910", - "080808": "080808", "3f5252": "202733", "bed3cf": "6e6d6d", "5c7877": "293141", "867b73": "ecd42a", "8a9f9e": "494950", - "ede650": "7798b8", - "f7f7f7": "f7f7f7" + "ede650": "7798b8" }, "2": { "46334f": "091b52", "a65e97": "2849ac", "713e70": "1c306d", - "080808": "080808", "3f5252": "3d105f", "bed3cf": "844caf", "5c7877": "5722a6", "867b73": "8cdded", "8a9f9e": "452772", - "ede650": "d3f4fb", - "f7f7f7": "f7f7f7" + "ede650": "d3f4fb" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/768.json b/public/images/pokemon/variant/768.json index 1b150c04b37..d617f494ce7 100644 --- a/public/images/pokemon/variant/768.json +++ b/public/images/pokemon/variant/768.json @@ -2,7 +2,6 @@ "1": { "546b57": "202733", "c8e1cd": "6e6d6d", - "101010": "101010", "81b68e": "494950", "498f6c": "e7cd19", "842886": "c85710", @@ -17,16 +16,12 @@ "2": { "546b57": "091b52", "c8e1cd": "2849ac", - "101010": "101010", "81b68e": "1c306d", "498f6c": "dfb6f3", "842886": "5722a6", "cc5fcf": "8b51e1", "9a6982": "452772", - "5c635e": "5c635e", "bd95a8": "844caf", - "7a4952": "3d105f", - "2f3330": "2f3330", - "404843": "404843" + "7a4952": "3d105f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/77.json b/public/images/pokemon/variant/77.json index e988ee2ef1b..7f2515b589d 100644 --- a/public/images/pokemon/variant/77.json +++ b/public/images/pokemon/variant/77.json @@ -7,10 +7,8 @@ "8c5231": "65597f", "733131": "2b2333", "ffefce": "ffffff", - "000000": "000000", "e6ce8c": "cecee5", "c59c6b": "948eb2", - "ffffff": "ffffff", "424a84": "191933", "737ba5": "312c49", "c5c5d6": "514766" @@ -23,10 +21,8 @@ "8c5231": "090b16", "733131": "03060c", "ffefce": "514766", - "000000": "000000", "e6ce8c": "312c49", "c59c6b": "191933", - "ffffff": "ffffff", "424a84": "59497a", "737ba5": "857cb2", "c5c5d6": "b5b5e2" diff --git a/public/images/pokemon/variant/771.json b/public/images/pokemon/variant/771.json index 6540f79d3dd..d80e7770f62 100644 --- a/public/images/pokemon/variant/771.json +++ b/public/images/pokemon/variant/771.json @@ -3,26 +3,22 @@ "73223d": "570a00", "992e52": "c95340", "d94174": "de884b", - "101010": "101010", "404040": "731b33", "737373": "b5284a", "262626": "4a1a30", "595959": "bd5e49", "f8f8f8": "dec890", - "1a1a1a": "1a1a1a", "bfbfbf": "e07f47" }, "2": { "73223d": "b94114", "992e52": "db7b43", "d94174": "ead059", - "101010": "101010", "404040": "dacece", "737373": "f5ede4", "262626": "b8a197", "595959": "1c1c2d", "f8f8f8": "4d4d65", - "1a1a1a": "1a1a1a", "bfbfbf": "383850" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/772.json b/public/images/pokemon/variant/772.json index 38afba110bf..1097be00976 100644 --- a/public/images/pokemon/variant/772.json +++ b/public/images/pokemon/variant/772.json @@ -4,7 +4,6 @@ "92a6a9": "889db1", "642515": "7e4f36", "6b777e": "526085", - "080808": "080808", "c55e3a": "eed8a1", "934031": "c8976c", "c0cecf": "bdc4e5", @@ -27,7 +26,6 @@ "92a6a9": "65657c", "642515": "444961", "6b777e": "3b3b51", - "080808": "080808", "c55e3a": "c1cfd8", "934031": "7f94b1", "c0cecf": "dbd8e8", diff --git a/public/images/pokemon/variant/773.json b/public/images/pokemon/variant/773.json index b64796b9bf9..15805bf76ec 100644 --- a/public/images/pokemon/variant/773.json +++ b/public/images/pokemon/variant/773.json @@ -9,7 +9,6 @@ "e3e6ec": "bdd1e5", "3f3b50": "1e172a", "aba7bc": "493d55", - "080808": "080808", "e64f5e": "f1944a", "483c39": "3a2d53", "79615e": "504a75", @@ -17,7 +16,6 @@ "e9eaf8": "e7ebed", "0073bf": "7a4949", "5399df": "b59489", - "fffef5": "fffef5", "251845": "753c32", "9618e0": "dc9c4d", "125d4b": "ce7f3f", @@ -31,9 +29,7 @@ "565969": "0f0f1b", "bcbbc5": "242433", "e3e6ec": "444455", - "3f3b50": "3f3b50", "aba7bc": "dbd8e8", - "080808": "080808", "e64f5e": "98ce58", "483c39": "778894", "79615e": "d6d4d4", @@ -41,7 +37,6 @@ "e9eaf8": "eef4f8", "0073bf": "6a6c75", "5399df": "92949e", - "fffef5": "fffef5", "251845": "425735", "9618e0": "ade265", "125d4b": "686981", diff --git a/public/images/pokemon/variant/776.json b/public/images/pokemon/variant/776.json index 295f413292e..7847d29e15f 100644 --- a/public/images/pokemon/variant/776.json +++ b/public/images/pokemon/variant/776.json @@ -1,7 +1,6 @@ { "1": { "281715": "39221d", - "080808": "080808", "71171a": "2c0f2d", "6b473c": "f4eba2", "e74545": "4f3d66", @@ -12,12 +11,10 @@ "ccccad": "b4b8c8", "969678": "887c97", "3c2b24": "d5966f", - "fdfdfd": "fdfdfd", "9b6500": "276da5" }, "2": { "281715": "0a413b", - "080808": "080808", "71171a": "be8a7a", "6b473c": "caee67", "e74545": "faeecd", @@ -28,7 +25,6 @@ "ccccad": "adc4e9", "969678": "7983c1", "3c2b24": "61b551", - "fdfdfd": "fdfdfd", "9b6500": "341a3c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/777.json b/public/images/pokemon/variant/777.json index f434d0446ea..549b0f6ba5c 100644 --- a/public/images/pokemon/variant/777.json +++ b/public/images/pokemon/variant/777.json @@ -1,21 +1,17 @@ { "1": { - "101010": "101010", "ffea80": "dec2f0", "ccb852": "ac8fbb", "4d4d4d": "362952", "b3b3b3": "8e71cd", "808080": "645393", "595959": "444147", - "f8f8f8": "f8f8f8", "8c8c8c": "99979b", - "fbfbfb": "fbfbfb", "bfbfbf": "d0dadb", "977d63": "d263b0", "73593f": "ae428a" }, "2": { - "101010": "101010", "ffea80": "d65d3c", "ccb852": "7b3c26", "4d4d4d": "294127", @@ -24,7 +20,6 @@ "595959": "342a20", "f8f8f8": "e5b38c", "8c8c8c": "634c41", - "fbfbfb": "fbfbfb", "bfbfbf": "b27f64", "977d63": "724b39", "73593f": "47240f" diff --git a/public/images/pokemon/variant/778-disguised.json b/public/images/pokemon/variant/778-disguised.json index 3fb6d0c98c2..3b8eca6ee7f 100644 --- a/public/images/pokemon/variant/778-disguised.json +++ b/public/images/pokemon/variant/778-disguised.json @@ -31,4 +31,4 @@ "805933": "6d80a4", "3c3838": "ff766e" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/779.json b/public/images/pokemon/variant/779.json index a550ffadda3..687adbe3000 100644 --- a/public/images/pokemon/variant/779.json +++ b/public/images/pokemon/variant/779.json @@ -3,7 +3,6 @@ "58295f": "a52121", "834589": "c62c2c", "b75eb7": "f65656", - "101010": "101010", "de5c8a": "602b7a", "97354e": "2e0c3f", "ef87b5": "84539d", @@ -11,15 +10,12 @@ "93d3e1": "caefff", "5e9fc4": "94c5da", "cfae3f": "d65e5e", - "efe85f": "faa28c", - "fdfdfd": "fdfdfd", - "969696": "969696" + "efe85f": "faa28c" }, "2": { "58295f": "4545c4", "834589": "6666e2", "b75eb7": "8585ff", - "101010": "101010", "de5c8a": "dca032", "97354e": "935b3b", "ef87b5": "ffd166", @@ -27,8 +23,6 @@ "93d3e1": "eeeeff", "5e9fc4": "afafe1", "cfae3f": "2d2c43", - "efe85f": "454457", - "fdfdfd": "fdfdfd", - "969696": "969696" + "efe85f": "454457" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/78.json b/public/images/pokemon/variant/78.json index 610f15ed2df..80e167ed347 100644 --- a/public/images/pokemon/variant/78.json +++ b/public/images/pokemon/variant/78.json @@ -9,9 +9,7 @@ "de1010": "995b3d", "c5946b": "948eb2", "efc58c": "cecee5", - "000000": "000000", "c5c5c5": "514766", - "ffffff": "ffffff", "424a52": "191933", "737b84": "312c49" }, @@ -25,9 +23,7 @@ "de1010": "660011", "c5946b": "191933", "efc58c": "312c49", - "000000": "000000", "c5c5c5": "b5b5e2", - "ffffff": "ffffff", "424a52": "59497a", "737b84": "857cb2" } diff --git a/public/images/pokemon/variant/789.json b/public/images/pokemon/variant/789.json index 79e0e78b047..6ae3e541843 100644 --- a/public/images/pokemon/variant/789.json +++ b/public/images/pokemon/variant/789.json @@ -3,16 +3,8 @@ "4e5cc7": "6a12dc", "169fda": "9255f2", "34eef8": "db34f8", - "fdfdfd": "fdfdfd", "422d66": "490f2c", - "101010": "101010", "503896": "64173e", - "9d5f00": "9d5f00", - "f8f229": "f8f229", - "283937": "283937", - "ba953e": "ba953e", - "1484de": "1484de", - "34c3fa": "34c3fa", "8c49a9": "dc48a7", "e2629f": "f77247" }, @@ -20,9 +12,7 @@ "4e5cc7": "f6a42d", "169fda": "ffdf49", "34eef8": "fff695", - "fdfdfd": "fdfdfd", "422d66": "830000", - "101010": "101010", "503896": "eb5b2a", "9d5f00": "6a738f", "f8f229": "e5efff", @@ -37,9 +27,7 @@ "4e5cc7": "3dc7e0", "169fda": "71ffd8", "34eef8": "c9ffe2", - "fdfdfd": "fdfdfd", "422d66": "030038", - "101010": "101010", "503896": "007ecc", "9d5f00": "61061f", "f8f229": "c22741", diff --git a/public/images/pokemon/variant/79.json b/public/images/pokemon/variant/79.json index 7c9fa7a0ba8..e737328a200 100644 --- a/public/images/pokemon/variant/79.json +++ b/public/images/pokemon/variant/79.json @@ -1,9 +1,5 @@ { "0": { - "6b6363": "6b6363", - "101010": "101010", - "d6cece": "d6cece", - "ffffff": "ffffff", "ffa5a5": "cebdff", "de637b": "846bbd", "ff8494": "ad94ff", @@ -11,14 +7,9 @@ "7b2131": "52397b", "dea563": "deb55a", "8c5a19": "8c6b10", - "efc58c": "efc58c", "ffe6b5": "fff7b5" }, "1": { - "6b6363": "6b6363", - "101010": "101010", - "d6cece": "d6cece", - "ffffff": "ffffff", "ffa5a5": "ad7459", "de637b": "5b3332", "ff8494": "885345", @@ -30,10 +21,6 @@ "ffe6b5": "e0b69d" }, "2": { - "6b6363": "6b6363", - "101010": "101010", - "d6cece": "d6cece", - "ffffff": "ffffff", "ffa5a5": "ffeb9b", "de637b": "dd8f47", "ff8494": "eebd6a", diff --git a/public/images/pokemon/variant/790.json b/public/images/pokemon/variant/790.json index cbc8fda0072..6b3d3f079da 100644 --- a/public/images/pokemon/variant/790.json +++ b/public/images/pokemon/variant/790.json @@ -1,22 +1,16 @@ { "1": { - "101010": "101010", "8a5911": "545d9e", "c87522": "7b89c4", "faf54e": "e5efff", "e8a61e": "aebde2", - "fdfdfd": "fdfdfd", "1d3e89": "a20b02", "169fda": "ffdf49", "764394": "ff4079", "2c5fab": "eb5b2a", - "1e232b": "1e232b", - "17a6e3": "17a6e3", - "1f4294": "1f4294", "e2629f": "f6a42d" }, "2": { - "101010": "101010", "8a5911": "730627", "c87522": "890425", "faf54e": "d4314c", @@ -26,9 +20,6 @@ "169fda": "71ffd8", "764394": "7e13bf", "2c5fab": "3dc7e0", - "1e232b": "1e232b", - "17a6e3": "17a6e3", - "1f4294": "1f4294", "e2629f": "3dc7e0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/791-radiant-sun.json b/public/images/pokemon/variant/791-radiant-sun.json index dd95b0e1a09..675c9dfd17b 100644 --- a/public/images/pokemon/variant/791-radiant-sun.json +++ b/public/images/pokemon/variant/791-radiant-sun.json @@ -2,27 +2,23 @@ "1": { "aa8735": "c72453", "f9f190": "ff7899", - "151515": "151515", "dcb75f": "f35785", "c2c7c6": "da6e40", "52525a": "062139", "f8f8f8": "ffcf88", "1d2787": "810300", "5aacec": "4ba4ff", - "fefefe": "fefefe", "868e8d": "a5381c" }, "2": { "aa8735": "730627", "f9f190": "c22741", - "151515": "151515", "dcb75f": "890425", "c2c7c6": "322e6c", "52525a": "062139", "f8f8f8": "584193", "1d2787": "1a224a", "5aacec": "f3633f", - "fefefe": "fefefe", "868e8d": "0b1f45" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/791.json b/public/images/pokemon/variant/791.json index cc5d499152d..18b4742babd 100644 --- a/public/images/pokemon/variant/791.json +++ b/public/images/pokemon/variant/791.json @@ -1,7 +1,6 @@ { "1": { "91510b": "7a80ab", - "080808": "080808", "efe85a": "edf4ff", "ab1605": "b51140", "52525a": "4c0200", @@ -13,12 +12,10 @@ "5c5c65": "b72011", "868e8d": "a5381c", "0900a8": "810300", - "5aacec": "677dff", - "fefefe": "fefefe" + "5aacec": "677dff" }, "2": { "91510b": "5b021d", - "080808": "080808", "efe85a": "ae1a3d", "ab1605": "d36d00", "52525a": "062139", @@ -30,7 +27,6 @@ "5c5c65": "0b2b57", "868e8d": "0b1f45", "0900a8": "1a224a", - "5aacec": "d51d3c", - "fefefe": "fefefe" + "5aacec": "d51d3c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/792-full-moon.json b/public/images/pokemon/variant/792-full-moon.json index f5717506c7b..7efc0e30ccb 100644 --- a/public/images/pokemon/variant/792-full-moon.json +++ b/public/images/pokemon/variant/792-full-moon.json @@ -2,24 +2,18 @@ "1": { "aa8735": "624427", "f9f190": "e6ded2", - "151515": "151515", "59b3c6": "971283", "acebf0": "ff87d1", "dcb75f": "afa191", - "fffef2": "fffef2", "fefefe": "ffdda2", "85d0e0": "de37cf", "cbc6ce": "ffa255", "7b807e": "811500", - "240f62": "240f62", - "510d8e": "510d8e", - "fcfcfc": "fcfcfc", "ff268f": "5290ff" }, "2": { "aa8735": "6b0420", "f9f190": "c22741", - "151515": "151515", "59b3c6": "2460ac", "acebf0": "58cbe9", "dcb75f": "980f2a", @@ -28,9 +22,6 @@ "85d0e0": "3797d0", "cbc6ce": "e19096", "7b807e": "7e343d", - "240f62": "240f62", - "510d8e": "510d8e", - "fcfcfc": "fcfcfc", "ff268f": "ff26f0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/792.json b/public/images/pokemon/variant/792.json index 3f1e077e0be..c8db5b2675a 100644 --- a/public/images/pokemon/variant/792.json +++ b/public/images/pokemon/variant/792.json @@ -2,7 +2,6 @@ "1": { "665d14": "675340", "e5da7f": "e6ded2", - "080808": "080808", "a69e5c": "afa191", "7b807e": "864110", "fefefe": "ffd386", @@ -10,26 +9,20 @@ "240f62": "60000c", "45348e": "bc1836", "bcb5c1": "d39143", - "fdfce8": "fdfce8", "510d8e": "53101c", - "fcfcfc": "fcfcfc", "ff268f": "5290ff", "73e6cd": "ff31e0" }, "2": { "665d14": "6b0420", "e5da7f": "c22741", - "080808": "080808", "a69e5c": "980f2a", "7b807e": "7e343d", "fefefe": "ffd1d1", "6046d8": "1550a1", - "240f62": "240f62", "45348e": "1a3186", "bcb5c1": "e19096", "fdfce8": "ff6d74", - "510d8e": "510d8e", - "fcfcfc": "fcfcfc", "ff268f": "ff26f0", "73e6cd": "58cbe9" } diff --git a/public/images/pokemon/variant/793.json b/public/images/pokemon/variant/793.json index 198e1081425..3408987b524 100644 --- a/public/images/pokemon/variant/793.json +++ b/public/images/pokemon/variant/793.json @@ -7,8 +7,7 @@ "308ebc": "1ecb76", "26507d": "109d6a", "6b868f": "47090d", - "53b0d9": "40ffcc", - "101010": "101010" + "53b0d9": "40ffcc" }, "2": { "adbec5": "5128c3", @@ -18,7 +17,6 @@ "308ebc": "24a7b0", "26507d": "2368b1", "6b868f": "120d6b", - "53b0d9": "6bebff", - "101010": "101010" + "53b0d9": "6bebff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/797.json b/public/images/pokemon/variant/797.json index 05e51ab62bd..3e41ffa9ef2 100644 --- a/public/images/pokemon/variant/797.json +++ b/public/images/pokemon/variant/797.json @@ -8,7 +8,6 @@ "82ada4": "506ee3", "bccfc4": "f2b97f", "b3e088": "ffc785", - "101010": "101010", "a3e2bb": "9db7f4", "53ca89": "f0f5f9", "193124": "09112e" @@ -22,7 +21,6 @@ "82ada4": "8b1933", "bccfc4": "242733", "b3e088": "232323", - "101010": "101010", "a3e2bb": "bd2f62", "53ca89": "bbf3ef", "193124": "330007" diff --git a/public/images/pokemon/variant/798.json b/public/images/pokemon/variant/798.json index 3e5c571addf..62561deeeae 100644 --- a/public/images/pokemon/variant/798.json +++ b/public/images/pokemon/variant/798.json @@ -4,7 +4,6 @@ "fdfdfd": "d8e169", "cfcfcf": "87ab39", "aeaeae": "588720", - "101010": "101010", "a86c1c": "07421f", "9b2c17": "2c180e", "ffd53a": "2c9435", @@ -20,7 +19,6 @@ "fdfdfd": "87d2da", "cfcfcf": "4a86b8", "aeaeae": "305895", - "101010": "101010", "a86c1c": "5a2036", "9b2c17": "8a482d", "ffd53a": "cc7d4f", diff --git a/public/images/pokemon/variant/80-mega.json b/public/images/pokemon/variant/80-mega.json index 9bf85259157..dbc6bddc733 100644 --- a/public/images/pokemon/variant/80-mega.json +++ b/public/images/pokemon/variant/80-mega.json @@ -1,12 +1,9 @@ { "1": { - "181818": "181818", "b55565": "3f2729", "e66a7b": "5b3332", "ff9494": "885345", "ffbdac": "ad7459", - "deded5": "deded5", - "f8f8f8": "f8f8f8", "835a20": "9f675f", "cda462": "b97565", "ffeeb4": "e0b69d", @@ -16,13 +13,10 @@ "8b9494": "bf9562" }, "2": { - "181818": "181818", "b55565": "c08746", "e66a7b": "de9048", "ff9494": "eebd6a", "ffbdac": "ffea9a", - "deded5": "deded5", - "f8f8f8": "f8f8f8", "835a20": "69080f", "cda462": "8f2622", "ffeeb4": "d16b34", diff --git a/public/images/pokemon/variant/80.json b/public/images/pokemon/variant/80.json index 83203a8cc62..17a3c0627c6 100644 --- a/public/images/pokemon/variant/80.json +++ b/public/images/pokemon/variant/80.json @@ -3,10 +3,7 @@ "7b3131": "3f2729", "e66b7b": "5c3433", "ff9494": "895446", - "191919": "191919", "ffbdad": "ae755a", - "deded6": "deded6", - "ffffff": "ffffff", "52525a": "8b5d37", "845a21": "9f675f", "8c9494": "bf9562", @@ -20,10 +17,7 @@ "7b3131": "a54729", "e66b7b": "dd8f47", "ff9494": "edbc69", - "191919": "191919", "ffbdad": "ffeb9b", - "deded6": "deded6", - "ffffff": "ffffff", "52525a": "192b32", "845a21": "69080f", "8c9494": "2a4947", diff --git a/public/images/pokemon/variant/800-dawn-wings.json b/public/images/pokemon/variant/800-dawn-wings.json index b54a0e54903..1433f782e15 100644 --- a/public/images/pokemon/variant/800-dawn-wings.json +++ b/public/images/pokemon/variant/800-dawn-wings.json @@ -2,7 +2,6 @@ "1": { "305fb6": "624427", "82c5f7": "e6ded2", - "080808": "080808", "6197e9": "afa191", "7b807e": "86102d", "fefefe": "ffd386", @@ -19,7 +18,6 @@ "2": { "305fb6": "3b0015", "82c5f7": "970b22", - "080808": "080808", "6197e9": "5b0318", "7b807e": "041243", "fefefe": "ffd1d1", diff --git a/public/images/pokemon/variant/800-dusk-mane.json b/public/images/pokemon/variant/800-dusk-mane.json index fe21d5d0b98..80721becae1 100644 --- a/public/images/pokemon/variant/800-dusk-mane.json +++ b/public/images/pokemon/variant/800-dusk-mane.json @@ -1,7 +1,6 @@ { "1": { "1b2021": "3a001c", - "080808": "080808", "424a50": "890425", "2b3233": "5f0021", "ae6200": "7a80ab", @@ -13,12 +12,10 @@ "768188": "c8245d", "fd2b2b": "35d5e8", "18f013": "9d63ff", - "53f2f2": "453ef2", - "fdfcf8": "fdfcf8" + "53f2f2": "453ef2" }, "2": { "1b2021": "240842", - "080808": "080808", "424a50": "602483", "2b3233": "3e135f", "ae6200": "5b021d", @@ -30,7 +27,6 @@ "768188": "b13dc8", "fd2b2b": "ffcb49", "18f013": "e73c37", - "53f2f2": "fd852b", - "fdfcf8": "fdfcf8" + "53f2f2": "fd852b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/800-ultra.json b/public/images/pokemon/variant/800-ultra.json index cf4a0d16f07..0bdc4f1d6f0 100644 --- a/public/images/pokemon/variant/800-ultra.json +++ b/public/images/pokemon/variant/800-ultra.json @@ -8,10 +8,7 @@ "fefac2": "ff7e75", "fcf167": "ee2033", "dcb92c": "bc0125", - "8e6924": "770031", - "151515": "151515", - "fd2b2b": "fd2b2b", - "00c2d2": "00c2d2" + "8e6924": "770031" }, "2": { "a08f6d": "e552ec", @@ -23,8 +20,6 @@ "fcf167": "ff49e7", "dcb92c": "d10cc7", "8e6924": "510059", - "151515": "151515", - "fd2b2b": "900090", - "00c2d2": "00c2d2" + "fd2b2b": "900090" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/800.json b/public/images/pokemon/variant/800.json index 0c0baf8d973..7f996fdbf81 100644 --- a/public/images/pokemon/variant/800.json +++ b/public/images/pokemon/variant/800.json @@ -4,11 +4,9 @@ "424a50": "890425", "2b3233": "5f0021", "768188": "c8245d", - "080808": "080808", "5fcfbe": "453ef2", "fd2b2b": "35d5e8", "ec925b": "9d63ff", - "0a5ec5": "0a5ec5", "9965c9": "6219a8", "18f013": "69fff0", "b5bbbf": "a266eb", @@ -19,7 +17,6 @@ "424a50": "602483", "2b3233": "3e135f", "768188": "b13dc8", - "080808": "080808", "5fcfbe": "b71334", "fd2b2b": "fd2bc1", "ec925b": "e73c37", diff --git a/public/images/pokemon/variant/802.json b/public/images/pokemon/variant/802.json index 95a92d8babc..489a2ede00b 100644 --- a/public/images/pokemon/variant/802.json +++ b/public/images/pokemon/variant/802.json @@ -3,19 +3,14 @@ "2c3e30": "111c12", "6a806d": "526555", "536155": "29352b", - "101010": "101010", "2d3137": "084434", "747778": "76bc8f", - "4e5356": "3a7e5d", - "f8f592": "f8f592", - "ff4506": "ff4506", - "f2a455": "f2a455" + "4e5356": "3a7e5d" }, "1": { "2c3e30": "7a758d", "6a806d": "cbc9e8", "536155": "b5b1ce", - "101010": "101010", "2d3137": "17145e", "747778": "515aad", "4e5356": "2f3079", @@ -27,7 +22,6 @@ "2c3e30": "508294", "6a806d": "a7eaee", "536155": "82b7c3", - "101010": "101010", "2d3137": "5a0423", "747778": "ce3e63", "4e5356": "97123b", diff --git a/public/images/pokemon/variant/803.json b/public/images/pokemon/variant/803.json index 1f612916938..2fa484408e6 100644 --- a/public/images/pokemon/variant/803.json +++ b/public/images/pokemon/variant/803.json @@ -2,7 +2,6 @@ "1": { "78757f": "449e93", "ccc0d8": "e3ffec", - "101010": "101010", "98295e": "27579e", "ff6ccc": "54cbdc", "d9338e": "3492b9", @@ -17,7 +16,6 @@ "2": { "78757f": "cd9b85", "ccc0d8": "ffefe0", - "101010": "101010", "98295e": "a12f63", "ff6ccc": "ff778d", "d9338e": "d6487a", diff --git a/public/images/pokemon/variant/804.json b/public/images/pokemon/variant/804.json index 53abed974c1..01257b89642 100644 --- a/public/images/pokemon/variant/804.json +++ b/public/images/pokemon/variant/804.json @@ -7,7 +7,6 @@ "ff6cd3": "e88354", "db3e94": "c74736", "793fbe": "284173", - "101010": "101010", "6d656d": "2b5d67", "aaeaff": "ffdfa3", "a896a9": "8edfd5", @@ -23,7 +22,6 @@ "ff6cd3": "fff8cc", "db3e94": "dcbb94", "793fbe": "095654", - "101010": "101010", "6d656d": "690940", "aaeaff": "475269", "a896a9": "96234e", diff --git a/public/images/pokemon/variant/808.json b/public/images/pokemon/variant/808.json index f21c7b2ea50..70d7dd21a53 100644 --- a/public/images/pokemon/variant/808.json +++ b/public/images/pokemon/variant/808.json @@ -4,9 +4,7 @@ "ab732b": "ce5a6f", "ffda45": "ffbeae", "fbf28d": "fff1d1", - "f9f9f9": "f9f9f9", "814f23": "85374d", - "101010": "101010", "59544e": "38585b", "3d3534": "2c4048", "67675f": "426e73", @@ -21,16 +19,12 @@ "ab732b": "2d2931", "ffda45": "9b6e98", "fbf28d": "bf99bc", - "f9f9f9": "f9f9f9", "814f23": "101010", - "101010": "101010", "59544e": "9e002e", "3d3534": "780000", "67675f": "ba2b41", "dcdcda": "ffbe6e", "b1b5a6": "f49769", - "8a8d7e": "d66352", - "741012": "741012", - "c2292e": "c2292e" + "8a8d7e": "d66352" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/809-gigantamax.json b/public/images/pokemon/variant/809-gigantamax.json index e008cbcd6e3..543e4007238 100644 --- a/public/images/pokemon/variant/809-gigantamax.json +++ b/public/images/pokemon/variant/809-gigantamax.json @@ -4,7 +4,6 @@ "8a8d7e": "6a8f97", "e8e8e8": "dff7f7", "dcdcda": "c2effc", - "f9f9f9": "f9f9f9", "59544e": "38585b", "211d1d": "232a2b", "ab732b": "ce5a6f", @@ -13,7 +12,6 @@ "67675f": "426e73", "3d3534": "2c4048", "e46d8b": "ffce6b", - "101010": "101010", "c2292e": "ffce6b" }, "2": { @@ -21,7 +19,6 @@ "8a8d7e": "d66352", "e8e8e8": "ffde6c", "dcdcda": "ffbe6e", - "f9f9f9": "f9f9f9", "59544e": "9e002e", "211d1d": "570000", "ab732b": "2d2931", @@ -29,8 +26,6 @@ "dea220": "64486f", "67675f": "ba2b41", "3d3534": "780000", - "e46d8b": "c2292e", - "101010": "101010", - "c2292e": "c2292e" + "e46d8b": "c2292e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/809.json b/public/images/pokemon/variant/809.json index a30297cdb08..ee99fc95991 100644 --- a/public/images/pokemon/variant/809.json +++ b/public/images/pokemon/variant/809.json @@ -10,10 +10,8 @@ "814f23": "85374d", "67675f": "426e73", "ffda45": "ffbeae", - "101010": "101010", "dcdcda": "c2effc", - "b1b5a6": "98d6f0", - "f9f9f9": "f9f9f9" + "b1b5a6": "98d6f0" }, "2": { "59544e": "9e002e", @@ -26,9 +24,7 @@ "814f23": "101010", "67675f": "ba2b41", "ffda45": "9b6e98", - "101010": "101010", "dcdcda": "ffbe6e", - "b1b5a6": "f49769", - "f9f9f9": "f9f9f9" + "b1b5a6": "f49769" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/81.json b/public/images/pokemon/variant/81.json index 9bbbe4471cd..37cb315af7a 100644 --- a/public/images/pokemon/variant/81.json +++ b/public/images/pokemon/variant/81.json @@ -6,8 +6,6 @@ "d6d6d6": "ffc4b8", "524a4a": "90495b", "2984ad": "8fb9cc", - "ffffff": "ffffff", - "101010": "101010", "ef1900": "e67468", "5a8463": "c36c77", "8cb5a5": "f99596", @@ -22,7 +20,6 @@ "524a4a": "8c500b", "2984ad": "a7dcaa", "ffffff": "fffb93", - "101010": "101010", "ef1900": "e6a845", "5a8463": "a65410", "8cb5a5": "bf7826", diff --git a/public/images/pokemon/variant/816.json b/public/images/pokemon/variant/816.json index 32174bf545b..55573466e55 100644 --- a/public/images/pokemon/variant/816.json +++ b/public/images/pokemon/variant/816.json @@ -9,11 +9,9 @@ "add7e7": "e6828e", "718b93": "a7664c", "5091c0": "b5464b", - "fbfbfb": "fbfbfb", "bdc6ca": "d9c5bc", "d2e7ec": "eecaa2", - "9fbac1": "e19b78", - "101010": "101010" + "9fbac1": "e19b78" }, "2": { "1f2d63": "6e1a4c", @@ -25,10 +23,8 @@ "add7e7": "fffbec", "718b93": "933644", "5091c0": "dea26c", - "fbfbfb": "fbfbfb", "bdc6ca": "c5e4ea", "d2e7ec": "ec8b48", - "9fbac1": "d5543c", - "101010": "101010" + "9fbac1": "d5543c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/817.json b/public/images/pokemon/variant/817.json index f6650317915..d148636069b 100644 --- a/public/images/pokemon/variant/817.json +++ b/public/images/pokemon/variant/817.json @@ -9,9 +9,7 @@ "70cce0": "eb8577", "31b5d0": "cf5b5d", "6ba01b": "a36d5d", - "101010": "101010", "ccc7cd": "c7c1bd", - "fefefe": "fefefe", "3d6424": "83403e", "8cd222": "d99f8d" }, @@ -25,9 +23,7 @@ "70cce0": "ffe5a3", "31b5d0": "fcbe6d", "6ba01b": "ba2c22", - "101010": "101010", "ccc7cd": "becee1", - "fefefe": "fefefe", "3d6424": "731317", "8cd222": "d85633" } diff --git a/public/images/pokemon/variant/818-gigantamax.json b/public/images/pokemon/variant/818-gigantamax.json index 82fc117bf7b..4d9197e5ac5 100644 --- a/public/images/pokemon/variant/818-gigantamax.json +++ b/public/images/pokemon/variant/818-gigantamax.json @@ -7,15 +7,10 @@ "01599a": "0ea6a8", "9cd2e2": "107ac0", "549bc3": "0060a4", - "101010": "101010", - "ee3e5c": "ee3e5c", "31302f": "989dac", "646565": "f7fbfc", "4a4a4d": "c4ccd4", - "5e9bc3": "0a60a4", - "b0faff": "b0faff", - "5cdada": "5cdada", - "fdfdfd": "fdfdfd" + "5e9bc3": "0a60a4" }, "1": { "003e6a": "4c1819", @@ -25,7 +20,6 @@ "01599a": "9c2734", "9cd2e2": "e1926f", "549bc3": "a45e4a", - "101010": "101010", "ee3e5c": "5885a2", "31302f": "251e1c", "646565": "4c4643", @@ -43,7 +37,6 @@ "01599a": "d8b284", "9cd2e2": "ffcd57", "549bc3": "e38544", - "101010": "101010", "ee3e5c": "5885a2", "31302f": "571342", "646565": "be3a7d", diff --git a/public/images/pokemon/variant/818.json b/public/images/pokemon/variant/818.json index d4563f39dd6..804dbaa3a6a 100644 --- a/public/images/pokemon/variant/818.json +++ b/public/images/pokemon/variant/818.json @@ -8,9 +8,7 @@ "01599a": "9c2734", "549bc3": "a55846", "9cd2e2": "e1926f", - "fdfdfd": "fdfdfd", "e3a32b": "5885a2", - "101010": "101010", "31302f": "251e1c", "646565": "4c4643", "4a4a4d": "342b2a", @@ -25,9 +23,7 @@ "01599a": "d8b284", "549bc3": "e38544", "9cd2e2": "ffcd57", - "fdfdfd": "fdfdfd", "e3a32b": "a13047", - "101010": "101010", "31302f": "571342", "646565": "be3a7d", "4a4a4d": "771b54", diff --git a/public/images/pokemon/variant/82.json b/public/images/pokemon/variant/82.json index 6af03f7f5b2..795e1f91d2d 100644 --- a/public/images/pokemon/variant/82.json +++ b/public/images/pokemon/variant/82.json @@ -2,10 +2,8 @@ "1": { "3a3131": "612e40", "d6d6d6": "ffc4b8", - "ffffff": "ffffff", "8c8c8c": "c36c77", "524a4a": "90495b", - "101010": "101010", "b5b5b5": "f99596", "ef1900": "e67468", "ff8c4a": "ffc4b8", @@ -22,7 +20,6 @@ "ffffff": "fffb93", "8c8c8c": "8c500b", "524a4a": "662e00", - "101010": "101010", "b5b5b5": "b27a20", "ef1900": "a65410", "ff8c4a": "e6a845", diff --git a/public/images/pokemon/variant/821.json b/public/images/pokemon/variant/821.json index 2ad0feb8b11..e41457b53e3 100644 --- a/public/images/pokemon/variant/821.json +++ b/public/images/pokemon/variant/821.json @@ -7,11 +7,8 @@ "403524": "845195", "6d1b29": "5722a6", "344172": "ad6f83", - "f4f4f4": "f4f4f4", - "aeaeae": "aeaeae", "e21d22": "8b51e1", "979b9e": "57445a", - "080808": "080808", "6c5d64": "2e262f", "ac9534": "f4a0b9", "e9e356": "ffdeeb" @@ -24,11 +21,8 @@ "403524": "be8410", "6d1b29": "5a0015", "344172": "b95212", - "f4f4f4": "f4f4f4", - "aeaeae": "aeaeae", "e21d22": "8f0021", "979b9e": "743419", - "080808": "080808", "6c5d64": "541705", "ac9534": "edd472", "e9e356": "fff2c0" diff --git a/public/images/pokemon/variant/822.json b/public/images/pokemon/variant/822.json index 7ff524139bf..21b08947fa3 100644 --- a/public/images/pokemon/variant/822.json +++ b/public/images/pokemon/variant/822.json @@ -6,10 +6,8 @@ "426eb2": "ffdeeb", "2f4577": "f4a0b9", "403524": "ad6f83", - "080808": "080808", "6d1b29": "5722a6", "e21d22": "8b51e1", - "f4f4f4": "f4f4f4", "95a1b6": "57445a", "444f59": "25282d", "f85947": "8b51e1", @@ -22,10 +20,8 @@ "426eb2": "edd472", "2f4577": "eaae36", "403524": "b95212", - "080808": "080808", "6d1b29": "5a0015", "e21d22": "8f0021", - "f4f4f4": "f4f4f4", "95a1b6": "743419", "444f59": "541705", "f85947": "8f0021", diff --git a/public/images/pokemon/variant/823.json b/public/images/pokemon/variant/823.json index 4877b9b4ab9..53532f02db8 100644 --- a/public/images/pokemon/variant/823.json +++ b/public/images/pokemon/variant/823.json @@ -5,14 +5,12 @@ "303360": "ad6f83", "646ca8": "ffdeeb", "4d5488": "f4a0b9", - "010101": "010101", "ffa8a8": "ffc586", "f30101": "df7b10", "4e4150": "57445a", "2c2b58": "845195", "18173d": "4b2a5e", - "3e3d6d": "bc7dc3", - "2e262f": "2e262f" + "3e3d6d": "bc7dc3" }, "2": { "251d4e": "612a0e", @@ -20,7 +18,6 @@ "303360": "b95212", "646ca8": "edd472", "4d5488": "eaae36", - "010101": "010101", "ffa8a8": "ff4a4a", "f30101": "e80000", "4e4150": "743419", diff --git a/public/images/pokemon/variant/829.json b/public/images/pokemon/variant/829.json index b4fbd7f76dc..ca67c326709 100644 --- a/public/images/pokemon/variant/829.json +++ b/public/images/pokemon/variant/829.json @@ -2,7 +2,6 @@ "1": { "9a632c": "0a6290", "f4d626": "4aebe3", - "101010": "101010", "e09b24": "1da3c2", "fef54b": "84fff5", "fef1a7": "96ffe0", @@ -19,7 +18,6 @@ "2": { "9a632c": "472359", "f4d626": "bc77ff", - "101010": "101010", "e09b24": "8236c0", "fef54b": "e8aaff", "fef1a7": "f6e6ff", @@ -30,7 +28,6 @@ "3fad71": "41658c", "fef0a0": "ede9d3", "6d6649": "4b1a5a", - "ab9b65": "ab9b65", "397558": "1d396f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/830.json b/public/images/pokemon/variant/830.json index 8c1e9dfdfb6..7f247585dfd 100644 --- a/public/images/pokemon/variant/830.json +++ b/public/images/pokemon/variant/830.json @@ -6,7 +6,6 @@ "e8d5c6": "a2d2e7", "828a3f": "358699", "b6b23d": "8be8e4", - "101010": "101010", "fef0a0": "ece7c8", "bab743": "c38ec6", "9f6137": "3b0122", @@ -22,7 +21,6 @@ "e8d5c6": "d5aee9", "828a3f": "8243b6", "b6b23d": "b87def", - "101010": "101010", "fef0a0": "f4f1de", "bab743": "6a9cbb", "9f6137": "14103b", diff --git a/public/images/pokemon/variant/835.json b/public/images/pokemon/variant/835.json index 708c7028bcd..fbb7122a337 100644 --- a/public/images/pokemon/variant/835.json +++ b/public/images/pokemon/variant/835.json @@ -1,7 +1,6 @@ { "1": { "844840": "051514", - "101010": "101010", "bd8d62": "e0bb76", "a26642": "aa8e5a", "6d943a": "28797b", @@ -11,26 +10,19 @@ "fbfbfb": "fdffe1", "cba685": "fbffc7", "9a6229": "13423f", - "f9f9f9": "f9f9f9", - "d1cccb": "e7c78d", - "837a76": "837a76", - "db6659": "db6659" + "d1cccb": "e7c78d" }, "2": { "844840": "313e38", - "101010": "101010", "bd8d62": "509468", "a26642": "3d5d59", "6d943a": "1e1a42", "76c745": "202758", "cf9529": "56447e", "f7da11": "776baf", - "fbfbfb": "fbfbfb", "cba685": "8cd3a5", "9a6229": "2b2042", - "f9f9f9": "f9f9f9", "d1cccb": "a0bcaa", - "837a76": "43554d", - "db6659": "db6659" + "837a76": "43554d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/84.json b/public/images/pokemon/variant/84.json index c30aeefe259..d50f701c4aa 100644 --- a/public/images/pokemon/variant/84.json +++ b/public/images/pokemon/variant/84.json @@ -4,9 +4,6 @@ "946b5a": "3a8951", "dead73": "a5e6a0", "bd8c52": "65bf75", - "636363": "636363", - "ffffff": "ffffff", - "101010": "101010", "a5844a": "bba689", "635210": "7a614c", "efdead": "ece4ce", @@ -18,8 +15,6 @@ "dead73": "c35d88", "bd8c52": "9f4079", "636363": "3a2050", - "ffffff": "ffffff", - "101010": "101010", "a5844a": "b35656", "635210": "84333c", "efdead": "efbcad", @@ -31,8 +26,6 @@ "dead73": "95bedc", "bd8c52": "618bbc", "636363": "7a355d", - "ffffff": "ffffff", - "101010": "101010", "a5844a": "2f2745", "635210": "1b1436", "efdead": "584c6b", diff --git a/public/images/pokemon/variant/85.json b/public/images/pokemon/variant/85.json index 4220e737b91..cc60db8ddc0 100644 --- a/public/images/pokemon/variant/85.json +++ b/public/images/pokemon/variant/85.json @@ -1,13 +1,8 @@ { "0": { - "424242": "424242", - "848484": "848484", - "000000": "000000", "5a4221": "1b4e31", "ce9c52": "65bf75", "a57b5a": "3a8951", - "ffffff": "ffffff", - "d6cece": "d6cece", "635a42": "7a614c", "efdead": "ece4ce", "b5a57b": "bba689", @@ -19,12 +14,9 @@ "1": { "424242": "3a2050", "848484": "6b4685", - "000000": "000000", "5a4221": "48123f", "ce9c52": "9f4079", "a57b5a": "6f265a", - "ffffff": "ffffff", - "d6cece": "d6cece", "635a42": "84333c", "efdead": "efbcad", "b5a57b": "c46e6e", @@ -36,12 +28,9 @@ "2": { "424242": "553246", "848484": "8f6174", - "000000": "000000", "5a4221": "1b2c59", "ce9c52": "95bedc", "a57b5a": "618bbc", - "ffffff": "ffffff", - "d6cece": "d6cece", "635a42": "1d1636", "efdead": "584c6b", "b5a57b": "43385c", diff --git a/public/images/pokemon/variant/850.json b/public/images/pokemon/variant/850.json index 991f1782552..7c2431b7df5 100644 --- a/public/images/pokemon/variant/850.json +++ b/public/images/pokemon/variant/850.json @@ -1,32 +1,22 @@ { "1": { - "2f1610": "2f1610", "681607": "024f2d", "bf3922": "117956", "804a3e": "59365d", - "101010": "101010", "ff5839": "35c36c", "5b2f26": "36203c", "ff836c": "5ff58e", "f77c42": "89fbad", "f89e08": "67ef9c", "ffd901": "c8ffcc", - "be5409": "117956", - "fbfbfb": "fbfbfb" + "be5409": "117956" }, "2": { - "2f1610": "2f1610", "681607": "68063c", "bf3922": "ae1165", "804a3e": "475294", - "101010": "101010", "ff5839": "d73981", "5b2f26": "36426c", - "ff836c": "ff836c", - "f77c42": "f77c42", - "f89e08": "f89e08", - "ffd901": "ffc143", - "be5409": "be5409", - "fbfbfb": "fbfbfb" + "ffd901": "ffc143" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/851-gigantamax.json b/public/images/pokemon/variant/851-gigantamax.json index 44af1041c17..f1b3d6bcf4f 100644 --- a/public/images/pokemon/variant/851-gigantamax.json +++ b/public/images/pokemon/variant/851-gigantamax.json @@ -10,25 +10,18 @@ "9a2d21": "36203c", "5b2f26": "5e3d35", "804a3e": "745f47", - "2f1610": "2f1610", - "010000": "010000", - "f4ba01": "a3ffab", - "fbfbfb": "fbfbfb" + "f4ba01": "a3ffab" }, "2": { "e75814": "890f52", "f89e08": "d73981", "ffd901": "ffc143", - "941528": "941528", "5b0f0f": "121439", "e71d12": "36426c", "ff5839": "7866cb", "9a2d21": "222957", "5b2f26": "60144b", "804a3e": "973554", - "2f1610": "2f1610", - "010000": "010000", - "f4ba01": "e98a27", - "fbfbfb": "fbfbfb" + "f4ba01": "e98a27" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/851.json b/public/images/pokemon/variant/851.json index 62cbe9d8531..0f1e234d0aa 100644 --- a/public/images/pokemon/variant/851.json +++ b/public/images/pokemon/variant/851.json @@ -6,12 +6,10 @@ "2f1610": "24122b", "681607": "0a5660", "804a3e": "714272", - "101010": "101010", "ff5839": "35c3a8", "5b2f26": "503154", "bf3922": "1a8987", "b96f5d": "ad58ab", - "fbfbfb": "fbfbfb", "941528": "005f35", "42221c": "36203c" }, @@ -22,13 +20,10 @@ "2f1610": "121439", "681607": "6e0442", "804a3e": "475294", - "101010": "101010", "ff5839": "d73981", "5b2f26": "36426c", "bf3922": "ae1165", "b96f5d": "7866cb", - "fbfbfb": "fbfbfb", - "941528": "941528", "42221c": "222957" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/854.json b/public/images/pokemon/variant/854.json index 7c4e10fbead..3ebee0aaaea 100644 --- a/public/images/pokemon/variant/854.json +++ b/public/images/pokemon/variant/854.json @@ -1,6 +1,5 @@ { "1": { - "5e401f": "5e401f", "cf9a4c": "592626", "ffd45c": "b7763c", "c3bfe0": "f2bbaa", @@ -10,7 +9,6 @@ "d38095": "eb8328", "f79e67": "ffab61", "4bb2af": "6d142c", - "101010": "101010", "72cfcc": "7c2039", "9aedea": "b74f6c", "f5f9fa": "ecb6c5" @@ -26,7 +24,6 @@ "d38095": "c6c95e", "f79e67": "f4f394", "4bb2af": "333231", - "101010": "101010", "72cfcc": "7c7270", "9aedea": "c9c0b9", "f5f9fa": "fdfdfd" diff --git a/public/images/pokemon/variant/855.json b/public/images/pokemon/variant/855.json index 9ecc1422501..1d840d9f6cf 100644 --- a/public/images/pokemon/variant/855.json +++ b/public/images/pokemon/variant/855.json @@ -13,8 +13,7 @@ "f5f9fa": "f2bbaa", "f79e67": "eb8328", "d38095": "ef9e5c", - "733a87": "cc752f", - "101010": "101010" + "733a87": "cc752f" }, "2": { "5e401f": "463f2b", @@ -30,7 +29,6 @@ "f5f9fa": "524c4e", "f79e67": "f4f394", "d38095": "c6c95e", - "733a87": "49755c", - "101010": "101010" + "733a87": "49755c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/856.json b/public/images/pokemon/variant/856.json index 3d245b74324..bfc575d89d7 100644 --- a/public/images/pokemon/variant/856.json +++ b/public/images/pokemon/variant/856.json @@ -2,7 +2,6 @@ "1": { "727ab1": "1d4a3b", "c8e9ff": "5ec183", - "181818": "181818", "acbfdf": "3b9665", "bb6a99": "043232", "f9d5da": "298675", @@ -13,7 +12,6 @@ "2": { "727ab1": "6b0124", "c8e9ff": "cb304d", - "181818": "181818", "acbfdf": "a11437", "bb6a99": "30163d", "f9d5da": "523f73", diff --git a/public/images/pokemon/variant/858-gigantamax.json b/public/images/pokemon/variant/858-gigantamax.json index 5e8730f3850..02a34377288 100644 --- a/public/images/pokemon/variant/858-gigantamax.json +++ b/public/images/pokemon/variant/858-gigantamax.json @@ -2,7 +2,6 @@ "1": { "727ab1": "1d4a3b", "c8e9ff": "5ec183", - "101010": "101010", "c15974": "043232", "acbfdf": "3b9665", "f5bac2": "298675", @@ -12,13 +11,11 @@ "fefefe": "f7e4e4", "b4a2b7": "bf9ca0", "856d8b": "9c7a81", - "f9d5da": "f9d5da", "d9cedb": "dec1c2" }, "2": { "727ab1": "6b0124", "c8e9ff": "cb304d", - "101010": "101010", "c15974": "30163d", "acbfdf": "a11437", "f5bac2": "523f73", @@ -28,7 +25,6 @@ "fefefe": "fee9fa", "b4a2b7": "bc93b7", "856d8b": "976c95", - "f9d5da": "f9d5da", "d9cedb": "e4bcde" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/858.json b/public/images/pokemon/variant/858.json index 97e35677ec3..41e50e22464 100644 --- a/public/images/pokemon/variant/858.json +++ b/public/images/pokemon/variant/858.json @@ -3,7 +3,6 @@ "727ab1": "1d4a3b", "c8e9ff": "5ec183", "acbfdf": "3b9665", - "101010": "101010", "948fc2": "287b59", "d9cedb": "dec1c2", "e5e4ef": "f7e4e4", @@ -12,14 +11,12 @@ "c15974": "043232", "b4a2b7": "bf9ca0", "856d8b": "9c7a81", - "f5bac2": "298675", - "f9d5da": "f9d5da" + "f5bac2": "298675" }, "2": { "727ab1": "6b0124", "c8e9ff": "cb304d", "acbfdf": "a11437", - "101010": "101010", "948fc2": "8c0e32", "d9cedb": "e4bcde", "e5e4ef": "ffecf9", @@ -28,7 +25,6 @@ "c15974": "30163d", "b4a2b7": "bc93b7", "856d8b": "976c95", - "f5bac2": "523f73", - "f9d5da": "f9d5da" + "f5bac2": "523f73" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/859.json b/public/images/pokemon/variant/859.json index 703d5d67218..bb4e943fa79 100644 --- a/public/images/pokemon/variant/859.json +++ b/public/images/pokemon/variant/859.json @@ -8,9 +8,6 @@ "735aac": "a4332d", "947cd8": "cd643d", "f42252": "f55c14", - "101010": "101010", - "fdfdfd": "fdfdfd", - "c9c9c9": "c9c9c9", "8b73d5": "cc5836" }, "2": { @@ -22,8 +19,6 @@ "735aac": "f0c475", "947cd8": "d9975b", "f42252": "fc645a", - "101010": "101010", - "fdfdfd": "fdfdfd", "c9c9c9": "dad6bf", "8b73d5": "f9e9a4" } diff --git a/public/images/pokemon/variant/86.json b/public/images/pokemon/variant/86.json index e24d4c5c672..f44946f3dda 100644 --- a/public/images/pokemon/variant/86.json +++ b/public/images/pokemon/variant/86.json @@ -4,23 +4,16 @@ "e6e6f7": "f3c7aa", "949cb5": "a86f5b", "d6ceef": "c78f72", - "101010": "101010", - "ffffff": "ffffff", "6b5a10": "6b3410", "b59442": "a4622f", "f7e6bd": "f7e3bd", - "dec573": "bb9451", - "d6735a": "d6735a", - "8c3121": "8c3121", - "ffadad": "ffadad" + "dec573": "bb9451" }, "1": { "425284": "414e63", "e6e6f7": "b2c3d1", "949cb5": "5e6d7c", "d6ceef": "91a0ac", - "101010": "101010", - "ffffff": "ffffff", "6b5a10": "847b73", "b59442": "b5ada5", "f7e6bd": "efefe6", @@ -34,8 +27,6 @@ "e6e6f7": "7ecdca", "949cb5": "325062", "d6ceef": "558a98", - "101010": "101010", - "ffffff": "ffffff", "6b5a10": "5f3e2e", "b59442": "81604a", "f7e6bd": "d9caa5", diff --git a/public/images/pokemon/variant/860.json b/public/images/pokemon/variant/860.json index 784d8e3bb64..50da28c1002 100644 --- a/public/images/pokemon/variant/860.json +++ b/public/images/pokemon/variant/860.json @@ -8,9 +8,6 @@ "e93761": "638a48", "fd0b42": "d24309", "433568": "5a1d27", - "101010": "101010", - "c9c9c9": "c9c9c9", - "fdfdfd": "fdfdfd", "409555": "244849", "47be62": "366c59", "356a3c": "162a35" @@ -24,9 +21,7 @@ "e93761": "491337", "fd0b42": "f0443e", "433568": "c98e63", - "101010": "101010", "c9c9c9": "dad6bf", - "fdfdfd": "fdfdfd", "409555": "272664", "47be62": "3f386f", "356a3c": "090d50" diff --git a/public/images/pokemon/variant/861-gigantamax.json b/public/images/pokemon/variant/861-gigantamax.json index 45d7da58c75..e3c084d3374 100644 --- a/public/images/pokemon/variant/861-gigantamax.json +++ b/public/images/pokemon/variant/861-gigantamax.json @@ -2,15 +2,12 @@ "1": { "2f184e": "290527", "5d4694": "8b332d", - "101010": "101010", "433568": "5a1d27", "352954": "3b1528", "409555": "244849", "47be62": "366c59", "356a3c": "162a35", "fd0b42": "d24309", - "c9c9c9": "c9c9c9", - "fdfdfd": "fdfdfd", "f874a0": "ea812f", "e93761": "638a48", "f75c90": "7daf56" @@ -18,7 +15,6 @@ "2": { "2f184e": "6a2f3a", "5d4694": "dfc784", - "101010": "101010", "433568": "c98e63", "352954": "a26458", "409555": "272664", @@ -26,7 +22,6 @@ "356a3c": "090d50", "fd0b42": "f0443e", "c9c9c9": "dad6bf", - "fdfdfd": "fdfdfd", "f874a0": "f291bf", "e93761": "491337", "f75c90": "64233b" diff --git a/public/images/pokemon/variant/861.json b/public/images/pokemon/variant/861.json index f60f7b31a56..539009124d0 100644 --- a/public/images/pokemon/variant/861.json +++ b/public/images/pokemon/variant/861.json @@ -3,15 +3,11 @@ "356a3c": "162a35", "47be62": "366c59", "2f184e": "290527", - "101010": "101010", "5d4694": "8b332d", "409555": "244849", "fd0b42": "d24309", "433568": "5a1d27", - "c9c9c9": "c9c9c9", - "fdfdfd": "fdfdfd", "352954": "3b1528", - "7c8089": "7c8089", "e93761": "638a48", "f75c90": "7daf56" }, @@ -19,15 +15,12 @@ "356a3c": "090d50", "47be62": "3f386f", "2f184e": "6a2f3a", - "101010": "101010", "5d4694": "dfc784", "409555": "272664", "fd0b42": "f0443e", "433568": "c98e63", "c9c9c9": "dad6bf", - "fdfdfd": "fdfdfd", "352954": "a26458", - "7c8089": "7c8089", "e93761": "491337", "f75c90": "64233b" } diff --git a/public/images/pokemon/variant/862.json b/public/images/pokemon/variant/862.json index 8b25c875e3f..3b033382be4 100644 --- a/public/images/pokemon/variant/862.json +++ b/public/images/pokemon/variant/862.json @@ -1,8 +1,6 @@ { "1": { - "1b2627": "1b2627", "474749": "156a66", - "010101": "010101", "303034": "094448", "f5f5f6": "f5ffea", "b2b3b2": "90c093", @@ -11,13 +9,11 @@ "242428": "001b1a", "6f7071": "01473a", "df84ad": "ff69fa", - "9b4f69": "d414dd", - "fcfcfc": "fcfcfc" + "9b4f69": "d414dd" }, "2": { "1b2627": "060724", "474749": "8655e1", - "010101": "010101", "303034": "5a3eb9", "f5f5f6": "342d4c", "b2b3b2": "18133d", @@ -26,7 +22,6 @@ "242428": "161058", "6f7071": "2e1d7b", "df84ad": "54f1ff", - "9b4f69": "0099ce", - "fcfcfc": "fcfcfc" + "9b4f69": "0099ce" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/863.json b/public/images/pokemon/variant/863.json index 78002ec7085..fe1146fa213 100644 --- a/public/images/pokemon/variant/863.json +++ b/public/images/pokemon/variant/863.json @@ -2,14 +2,11 @@ "1": { "66716c": "59879a", "bfc1bf": "b4e0d3", - "010101": "010101", "8f9c95": "85c1c0", - "181a1d": "181a1d", "3d4547": "4e385a", "272d2e": "342b49", "ef9b50": "fbe663", "dd5e33": "df9834", - "f3f3f3": "f3f3f3", "9aa094": "9fb8bc", "84726f": "9591a7", "5b4e4d": "4e455c", @@ -18,7 +15,6 @@ "2": { "66716c": "331a37", "bfc1bf": "92264b", - "010101": "010101", "8f9c95": "6d0b3c", "181a1d": "0f2127", "3d4547": "417778", diff --git a/public/images/pokemon/variant/864.json b/public/images/pokemon/variant/864.json index 9dcd35fa713..971e15cc81c 100644 --- a/public/images/pokemon/variant/864.json +++ b/public/images/pokemon/variant/864.json @@ -12,7 +12,6 @@ "fcfcfc": "ffffff", "c6bbcb": "a7e6e5", "ffa4c5": "bed5ff", - "101010": "101010", "7f806a": "4d8894", "af9e9e": "42a2b1" }, @@ -29,7 +28,6 @@ "fcfcfc": "ffffff", "c6bbcb": "773050", "ffa4c5": "8ff3a3", - "101010": "101010", "7f806a": "4b1f28", "af9e9e": "48c492" } diff --git a/public/images/pokemon/variant/867.json b/public/images/pokemon/variant/867.json index fcf7e29867a..8b2b7fc38d9 100644 --- a/public/images/pokemon/variant/867.json +++ b/public/images/pokemon/variant/867.json @@ -1,7 +1,6 @@ { "1": { "393941": "69d9bf", - "101010": "101010", "d9d0d1": "d6b8a0", "c5b9bb": "c69981", "d66770": "334599", @@ -13,7 +12,6 @@ }, "2": { "393941": "a4222c", - "101010": "101010", "d9d0d1": "4fb66a", "c5b9bb": "298a61", "d66770": "ffe78d", diff --git a/public/images/pokemon/variant/87.json b/public/images/pokemon/variant/87.json index e32cf4fe2b9..6678cb61e8f 100644 --- a/public/images/pokemon/variant/87.json +++ b/public/images/pokemon/variant/87.json @@ -5,10 +5,8 @@ "e6e6f7": "f0b28a", "425263": "773630", "d6ceef": "bc7855", - "101010": "101010", "ffffff": "ffecd8", "847b7b": "5328a6", - "d6cece": "d6cece", "9c0000": "b03f2f", "d62921": "f68484" }, @@ -18,10 +16,7 @@ "e6e6f7": "96adbe", "425263": "2f3b50", "d6ceef": "5a7286", - "101010": "101010", "ffffff": "beeaf8", - "847b7b": "847b7b", - "d6cece": "d6cece", "9c0000": "9e3d77", "d62921": "d280ab" }, @@ -31,10 +26,8 @@ "e6e6f7": "86dfe2", "425263": "171d3f", "d6ceef": "5493ac", - "101010": "101010", "ffffff": "d4fffc", "847b7b": "125889", - "d6cece": "d6cece", "9c0000": "c74351", "d62921": "f37171" } diff --git a/public/images/pokemon/variant/872.json b/public/images/pokemon/variant/872.json index 1576f560018..763cf0d0250 100644 --- a/public/images/pokemon/variant/872.json +++ b/public/images/pokemon/variant/872.json @@ -3,33 +3,24 @@ "7b8b9b": "345f5c", "acc3cc": "669a8c", "d8e9f0": "b7f1d6", - "f5fdff": "f5fdff", "695e77": "275e43", - "101010": "101010", "edeae0": "a6d6a6", - "b3a7c2": "73a878", - "fdfdfb": "fdfdfb" + "b3a7c2": "73a878" }, "1": { "7b8b9b": "22504c", "acc3cc": "548e8f", "d8e9f0": "b6e7df", - "f5fdff": "f5fdff", "695e77": "354b63", - "101010": "101010", "edeae0": "c1ebf3", - "b3a7c2": "89a9be", - "fdfdfb": "fdfdfb" + "b3a7c2": "89a9be" }, "2": { "7b8b9b": "5a3993", "acc3cc": "a66ac2", "d8e9f0": "d5c3ff", - "f5fdff": "f5fdff", "695e77": "5f3465", - "101010": "101010", "edeae0": "e5a2da", - "b3a7c2": "a060a0", - "fdfdfb": "fdfdfb" + "b3a7c2": "a060a0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/873.json b/public/images/pokemon/variant/873.json index 5ea93b1c3bb..2bf9938b290 100644 --- a/public/images/pokemon/variant/873.json +++ b/public/images/pokemon/variant/873.json @@ -5,7 +5,6 @@ "e7e0e6": "a6d6a6", "b3b4bd": "73a878", "8f8f9f": "547b58", - "101010": "101010", "758174": "497e7a", "c0e4c2": "eefffc", "a0baa8": "aae3d9", @@ -20,13 +19,11 @@ "e7e0e6": "c1ebf3", "b3b4bd": "8ebbca", "8f8f9f": "648397", - "101010": "101010", "758174": "428586", "c0e4c2": "d7fff8", "a0baa8": "7bcbc0", "4662ce": "0fa5bd", "8e9fe1": "2dd3e0", - "3f4474": "3f4474", "c0df86": "eefffb" }, "2": { @@ -35,7 +32,6 @@ "e7e0e6": "d78dcb", "b3b4bd": "864c86", "8f8f9f": "5f3465", - "101010": "101010", "758174": "795a9e", "c0e4c2": "e1e3ff", "a0baa8": "9f87ca", diff --git a/public/images/pokemon/variant/876-female.json b/public/images/pokemon/variant/876-female.json index 3d34ed7afae..9372d190545 100644 --- a/public/images/pokemon/variant/876-female.json +++ b/public/images/pokemon/variant/876-female.json @@ -5,7 +5,6 @@ "564c6c": "4a282a", "2f2642": "2c1419", "6c64a6": "b72e3e", - "101010": "101010", "d872e7": "79e28d", "ccb7c2": "c4a691", "fefefe": "e8d4bf", @@ -21,7 +20,6 @@ "564c6c": "d58da4", "2f2642": "444a8e", "6c64a6": "78aae5", - "101010": "101010", "d872e7": "ff9cca", "ccb7c2": "cbdbe6", "fefefe": "f0f2f3", diff --git a/public/images/pokemon/variant/876.json b/public/images/pokemon/variant/876.json index 0f7b7dbd9d4..78478b9098b 100644 --- a/public/images/pokemon/variant/876.json +++ b/public/images/pokemon/variant/876.json @@ -2,7 +2,6 @@ "1": { "2e2641": "2c1419", "7d7493": "5a3736", - "101010": "101010", "564c6c": "4a282a", "2f2642": "2c1419", "6c64a6": "b72e3e", @@ -18,7 +17,6 @@ "2": { "2e2641": "314c7c", "7d7493": "a3c5e8", - "101010": "101010", "564c6c": "78a5d4", "2f2642": "7a316c", "6c64a6": "f589bb", diff --git a/public/images/pokemon/variant/877-hangry.json b/public/images/pokemon/variant/877-hangry.json index 100665220df..44e48631166 100644 --- a/public/images/pokemon/variant/877-hangry.json +++ b/public/images/pokemon/variant/877-hangry.json @@ -1,19 +1,13 @@ { "0": { - "101010": "101010", "383634": "540606", "6c6c6c": "952222", "4f4b47": "3a1010", "9958ce": "cebb58", "6b3d96": "967f3d", - "ff151c": "ff151c", - "f38bb7": "f38bb7", - "9f9f9f": "9f9f9f", - "fbfbfb": "fbfbfb", "493061": "615e30" }, "1": { - "101010": "101010", "383634": "212020", "6c6c6c": "3a3a3a", "4f4b47": "161514", @@ -21,21 +15,13 @@ "6b3d96": "a2512c", "ff151c": "ff6b00", "f38bb7": "f3a18b", - "9f9f9f": "9f9f9f", - "fbfbfb": "fbfbfb", "493061": "753e25" }, "2": { - "101010": "101010", - "383634": "383634", - "6c6c6c": "6c6c6c", - "4f4b47": "4f4b47", "9958ce": "7fba7f", "6b3d96": "568351", "ff151c": "065b06", "f38bb7": "468e46", - "9f9f9f": "9f9f9f", - "fbfbfb": "fbfbfb", "493061": "306135" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/877.json b/public/images/pokemon/variant/877.json index 1708b129eb0..a8757d6d822 100644 --- a/public/images/pokemon/variant/877.json +++ b/public/images/pokemon/variant/877.json @@ -1,50 +1,29 @@ { "0": { - "101010": "101010", "8a5e48": "383634", "cf9c66": "6c6c6c", - "383634": "383634", - "6c6c6c": "6c6c6c", "af7044": "4f4b47", - "4f4b47": "4f4b47", "f4f489": "b689f4", "d3b351": "8851d3", - "fbfbfb": "fbfbfb", - "5c5c5c": "5c5c5c", - "f38bb7": "f38bb7", - "b24244": "b24244", - "e76961": "e76961", "785b23": "8851d3" }, "1": { - "101010": "101010", "8a5e48": "2c439d", "cf9c66": "86aaff", - "383634": "383634", - "6c6c6c": "6c6c6c", "af7044": "2c439d", - "4f4b47": "4f4b47", "f4f489": "fff98f", "d3b351": "8b8853", - "fbfbfb": "fbfbfb", - "5c5c5c": "5c5c5c", "f38bb7": "1010b3", "b24244": "424eb2", "e76961": "61b6e7", "785b23": "8b8853" }, "2": { - "101010": "101010", "8a5e48": "4f8a48", "cf9c66": "71cf66", - "383634": "383634", - "6c6c6c": "6c6c6c", "af7044": "44af5b", - "4f4b47": "4f4b47", "f4f489": "f8f8f8", "d3b351": "b6b6b6", - "fbfbfb": "fbfbfb", - "5c5c5c": "5c5c5c", "f38bb7": "a1f38b", "b24244": "388040", "e76961": "95e69d", diff --git a/public/images/pokemon/variant/880.json b/public/images/pokemon/variant/880.json index 3e626f744bd..cdb83257d50 100644 --- a/public/images/pokemon/variant/880.json +++ b/public/images/pokemon/variant/880.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "975e17": "5b0610", "ffff84": "ee8563", "ead900": "c6362b", @@ -17,11 +16,9 @@ "39ad5a": "a2b5c8" }, "2": { - "101010": "101010", "975e17": "211b3d", "ffff84": "dceeeb", "ead900": "636287", - "8f261b": "8f261b", "e39e1e": "35365e", "ed4e76": "ca5939", "ff8d9f": "e28854", diff --git a/public/images/pokemon/variant/881.json b/public/images/pokemon/variant/881.json index 231947e9afd..24d7946cf75 100644 --- a/public/images/pokemon/variant/881.json +++ b/public/images/pokemon/variant/881.json @@ -2,7 +2,6 @@ "1": { "975e17": "5b0610", "ffff84": "ee8563", - "101010": "101010", "e39e1e": "9c1430", "ead900": "c6362b", "2abbfc": "ceb16f", @@ -21,7 +20,6 @@ "2": { "975e17": "211b3d", "ffff84": "dceeeb", - "101010": "101010", "e39e1e": "35365e", "ead900": "636287", "2abbfc": "26c248", diff --git a/public/images/pokemon/variant/882.json b/public/images/pokemon/variant/882.json index cffd202806d..0782d97fee3 100644 --- a/public/images/pokemon/variant/882.json +++ b/public/images/pokemon/variant/882.json @@ -6,7 +6,6 @@ "83bbed": "eaa561", "777ebd": "cc6235", "edf3f2": "faebc8", - "101010": "101010", "005e44": "564e6e", "ff3c6d": "312f47", "8f261b": "1d2238", @@ -23,7 +22,6 @@ "83bbed": "8c1f45", "777ebd": "6c1046", "edf3f2": "fbecff", - "101010": "101010", "005e44": "f1b45f", "ff3c6d": "ca5939", "8f261b": "215b68", diff --git a/public/images/pokemon/variant/883.json b/public/images/pokemon/variant/883.json index 1cc1087f458..5c62474e9a3 100644 --- a/public/images/pokemon/variant/883.json +++ b/public/images/pokemon/variant/883.json @@ -4,7 +4,6 @@ "83bbed": "eaa561", "777ebd": "cc6235", "172459": "771922", - "101010": "101010", "edf3f2": "faebc8", "09354d": "2f1f1a", "085d94": "714363", @@ -19,7 +18,6 @@ "83bbed": "8c1f45", "777ebd": "6c1046", "172459": "320432", - "101010": "101010", "edf3f2": "fcffe4", "09354d": "2f1a20", "085d94": "ad3b6c", diff --git a/public/images/pokemon/variant/884-gigantamax.json b/public/images/pokemon/variant/884-gigantamax.json index d3f84a91842..70de36f39ec 100644 --- a/public/images/pokemon/variant/884-gigantamax.json +++ b/public/images/pokemon/variant/884-gigantamax.json @@ -3,7 +3,6 @@ "a893a8": "9b715e", "837080": "5d392f", "e4e5f1": "f8e0cf", - "151515": "151515", "fefefe": "fff5ed", "c4bac5": "c19b85", "ffde59": "ed7746", @@ -20,7 +19,6 @@ "a893a8": "312857", "837080": "1a0e34", "e4e5f1": "6e5ca6", - "151515": "151515", "fefefe": "8477cf", "c4bac5": "443a6e", "ffde59": "6df4ff", @@ -30,7 +28,6 @@ "4e4f5f": "fede7d", "393a41": "ed7746", "707086": "ffffc6", - "28272d": "28272d", "2e6976": "a87220" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/884.json b/public/images/pokemon/variant/884.json index 962edf2d6da..f4e311bd455 100644 --- a/public/images/pokemon/variant/884.json +++ b/public/images/pokemon/variant/884.json @@ -2,7 +2,6 @@ "1": { "68353c": "871e14", "b96a6a": "cd452b", - "151515": "151515", "c4bac5": "c19b85", "e4e5f1": "f8e0cf", "837080": "5d392f", @@ -18,7 +17,6 @@ "2": { "68353c": "062449", "b96a6a": "2077a6", - "151515": "151515", "c4bac5": "3d3268", "e4e5f1": "6e5ca6", "837080": "1a0e34", diff --git a/public/images/pokemon/variant/885.json b/public/images/pokemon/variant/885.json index 046b01e6625..bc8d6dd1f8c 100644 --- a/public/images/pokemon/variant/885.json +++ b/public/images/pokemon/variant/885.json @@ -1,7 +1,6 @@ { "0": { "3a583c": "133056", - "101010": "101010", "fa5494": "efa93f", "cc4066": "cc8225", "476b48": "20486e", @@ -16,7 +15,6 @@ }, "1": { "3a583c": "2f040d", - "101010": "101010", "fa5494": "4590da", "cc4066": "3261b7", "476b48": "4e0e17", @@ -31,7 +29,6 @@ }, "2": { "3a583c": "1f0c2c", - "101010": "101010", "fa5494": "68c7c4", "cc4066": "2a8286", "476b48": "231234", diff --git a/public/images/pokemon/variant/886.json b/public/images/pokemon/variant/886.json index 521ce4e84b7..c32ce74f987 100644 --- a/public/images/pokemon/variant/886.json +++ b/public/images/pokemon/variant/886.json @@ -2,7 +2,6 @@ "0": { "444e62": "2d365a", "addcbc": "6accd6", - "101010": "101010", "5f875a": "2f6c89", "2c323f": "192250", "566f89": "465272", @@ -19,7 +18,6 @@ "1": { "444e62": "4a1621", "addcbc": "da6151", - "101010": "101010", "5f875a": "6b242e", "2c323f": "2e080d", "566f89": "602034", @@ -36,7 +34,6 @@ "2": { "444e62": "231b45", "addcbc": "927fa1", - "101010": "101010", "5f875a": "3c2750", "2c323f": "251b31", "566f89": "3b2e5d", @@ -46,8 +43,6 @@ "ffe322": "87ff46", "7fb3b1": "8b659f", "5b878c": "6c4d85", - "d5fffb": "d67ae7", - "b5a36a": "b5a36a", - "dbd39d": "dbd39d" + "d5fffb": "d67ae7" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/887.json b/public/images/pokemon/variant/887.json index 9858e270bc0..89a0b872a99 100644 --- a/public/images/pokemon/variant/887.json +++ b/public/images/pokemon/variant/887.json @@ -3,7 +3,6 @@ "2c323f": "2e080d", "566f89": "6c273d", "444e62": "4a1621", - "101010": "101010", "fa5494": "4590da", "cc4066": "244f9f", "48a9b0": "8a212f", @@ -20,7 +19,6 @@ "2c323f": "1b163f", "566f89": "4c3f6f", "444e62": "332a59", - "101010": "101010", "fa5494": "68c7c4", "cc4066": "2a8286", "48a9b0": "482962", diff --git a/public/images/pokemon/variant/888-crowned.json b/public/images/pokemon/variant/888-crowned.json index 64509128dc6..6b85e432037 100644 --- a/public/images/pokemon/variant/888-crowned.json +++ b/public/images/pokemon/variant/888-crowned.json @@ -3,7 +3,6 @@ "8f4e2f": "2f4567", "d79a53": "5a829b", "f2db8a": "a1c9cd", - "080808": "080808", "3471b4": "b74323", "2d4377": "5c1a1d", "4999da": "ec813b", @@ -13,14 +12,12 @@ "fae2c0": "fff8cd", "d3a79a": "da9772", "34313e": "32171f", - "fdfdfd": "fdfdfd", "9d6862": "a85f49" }, "2": { "8f4e2f": "692e47", "d79a53": "964c5c", "f2db8a": "c4826b", - "080808": "080808", "3471b4": "9fa7d0", "2d4377": "615c7e", "4999da": "e6ecff", @@ -30,7 +27,6 @@ "fae2c0": "3d5b72", "d3a79a": "243149", "34313e": "1a1829", - "fdfdfd": "fdfdfd", "9d6862": "1c2238" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/888.json b/public/images/pokemon/variant/888.json index e6a4c1e784f..4941ed244e1 100644 --- a/public/images/pokemon/variant/888.json +++ b/public/images/pokemon/variant/888.json @@ -1,7 +1,6 @@ { "1": { "2d4377": "5c1a1d", - "080808": "080808", "4999da": "ec813b", "3471b4": "b74323", "f45353": "448b48", @@ -10,12 +9,10 @@ "34313e": "32171f", "be3c45": "224d42", "93262f": "0d2729", - "fdfdfd": "fdfdfd", "9d6862": "a85f49" }, "2": { "2d4377": "615c7e", - "080808": "080808", "4999da": "e6ecff", "3471b4": "9fa7d0", "f45353": "902d57", @@ -24,7 +21,6 @@ "34313e": "1a1829", "be3c45": "6c1d59", "93262f": "431042", - "fdfdfd": "fdfdfd", "9d6862": "1c2238" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/889-crowned.json b/public/images/pokemon/variant/889-crowned.json index 9a91c8a7939..2cd690856c1 100644 --- a/public/images/pokemon/variant/889-crowned.json +++ b/public/images/pokemon/variant/889-crowned.json @@ -1,7 +1,6 @@ { "1": { "2d2f7b": "102c2c", - "080808": "080808", "396dce": "70a757", "2d48a8": "3c6959", "8f4e2f": "2f4567", @@ -12,13 +11,11 @@ "731a27": "1c163d", "ae2836": "422b61", "34313e": "19142f", - "fdfdfd": "fdfdfd", "c2c3cf": "ffe0cc", "8887a8": "d69f97" }, "2": { "2d2f7b": "244e61", - "080808": "080808", "396dce": "6fc7c1", "2d48a8": "4797a4", "8f4e2f": "692e47", @@ -29,7 +26,6 @@ "731a27": "615c7e", "ae2836": "9fa7d0", "34313e": "22192c", - "fdfdfd": "fdfdfd", "c2c3cf": "694f69", "8887a8": "442e49" } diff --git a/public/images/pokemon/variant/889.json b/public/images/pokemon/variant/889.json index ec9903b04a3..3c172653f72 100644 --- a/public/images/pokemon/variant/889.json +++ b/public/images/pokemon/variant/889.json @@ -3,28 +3,24 @@ "2d2f7b": "102c2c", "396dce": "70a757", "2d48a8": "3c6959", - "080808": "080808", "f2db8a": "a1c9cd", "731a27": "1c163d", "eb363a": "614378", "ae2836": "422b61", "c2c3cf": "ffe0cc", "8887a8": "d69f97", - "34313e": "19142f", - "fdfdfd": "fdfdfd" + "34313e": "19142f" }, "2": { "2d2f7b": "244e61", "396dce": "6fc7c1", "2d48a8": "4797a4", - "080808": "080808", "f2db8a": "c4826b", "731a27": "615c7e", "eb363a": "e6ecff", "ae2836": "9fa7d0", "c2c3cf": "694f69", "8887a8": "442e49", - "34313e": "22192c", - "fdfdfd": "fdfdfd" + "34313e": "22192c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/890-eternamax.json b/public/images/pokemon/variant/890-eternamax.json index c34a226f4cb..654b1392e89 100644 --- a/public/images/pokemon/variant/890-eternamax.json +++ b/public/images/pokemon/variant/890-eternamax.json @@ -1,7 +1,6 @@ { "1": { "25134c": "162a52", - "010101": "010101", "3622a7": "406d89", "6461ba": "4989a6", "31245f": "264864", @@ -14,7 +13,6 @@ }, "2": { "25134c": "354e95", - "010101": "010101", "3622a7": "bfd1fa", "6461ba": "e1ecff", "31245f": "87a3dd", diff --git a/public/images/pokemon/variant/890.json b/public/images/pokemon/variant/890.json index 781b6e3821d..cb5bb7cd634 100644 --- a/public/images/pokemon/variant/890.json +++ b/public/images/pokemon/variant/890.json @@ -2,7 +2,6 @@ "1": { "26124d": "09113c", "3a15bc": "264864", - "010101": "010101", "b21833": "370c82", "eb1533": "5b5bc3", "9a2433": "561ab7", @@ -11,7 +10,6 @@ "fb2553": "3f2e91", "675cc5": "406d89", "ffbcbc": "508eff", - "12042d": "12042d", "e22dbc": "ee535a", "f18cd5": "ff7d54", "fefefe": "dbf2ff" @@ -19,7 +17,6 @@ "2": { "26124d": "4963af", "3a15bc": "bfd1fa", - "010101": "010101", "b21833": "7b2f0e", "eb1533": "cb7622", "9a2433": "732208", @@ -30,7 +27,6 @@ "ffbcbc": "de9335", "12042d": "2d276a", "e22dbc": "298fb9", - "f18cd5": "73e5dc", - "fefefe": "fefefe" + "f18cd5": "73e5dc" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/8901.json b/public/images/pokemon/variant/8901.json index 3029b8292b8..eb5c692452b 100644 --- a/public/images/pokemon/variant/8901.json +++ b/public/images/pokemon/variant/8901.json @@ -2,33 +2,12 @@ "0": { "4b271b": "491b24", "b8805f": "b24c57", - "764e38": "823343", - "564d4e": "564d4e", - "050505": "050505", - "bdb8b5": "bdb8b5", - "847c7a": "847c7a", - "34302e": "34302e", - "f83259": "f83259", - "f0bc75": "f0bc75", - "ff99ae": "ff99ae", - "be8b47": "be8b47", - "efefef": "efefef", - "47943f": "47943f" + "764e38": "823343" }, "1": { "4b271b": "20232d", "b8805f": "4d7269", "764e38": "354d4f", - "564d4e": "564d4e", - "050505": "050505", - "bdb8b5": "bdb8b5", - "847c7a": "847c7a", - "34302e": "34302e", - "f83259": "f83259", - "f0bc75": "f0bc75", - "ff99ae": "ff99ae", - "be8b47": "be8b47", - "efefef": "efefef", "47943f": "2781bc" }, "2": { @@ -36,7 +15,6 @@ "b8805f": "565084", "764e38": "423765", "564d4e": "5c486b", - "050505": "050505", "bdb8b5": "ede6eb", "847c7a": "c199ae", "34302e": "2a1a35", @@ -44,7 +22,6 @@ "f0bc75": "32c1ff", "ff99ae": "d3bfff", "be8b47": "2d76e2", - "efefef": "efefef", "47943f": "f83259" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/891.json b/public/images/pokemon/variant/891.json index 11fed4d7271..c0f6521085f 100644 --- a/public/images/pokemon/variant/891.json +++ b/public/images/pokemon/variant/891.json @@ -4,11 +4,8 @@ "d8d1cb": "d1c8ba", "b5ada6": "ad9a8a", "9194a2": "9e988d", - "101010": "101010", "fbfbfb": "f4f4f4", "c9cccd": "c8c4c3", - "262628": "262628", - "fefefe": "fefefe", "655e65": "5c5653", "cdab78": "c75d57", "f8f3a0": "f99350", @@ -20,15 +17,11 @@ "d8d1cb": "6e8b9b", "b5ada6": "475b68", "9194a2": "181b33", - "101010": "101010", "fbfbfb": "444f5b", "c9cccd": "2e3549", - "262628": "262628", - "fefefe": "fefefe", "655e65": "433e3f", "cdab78": "cd9e79", "f8f3a0": "f8cf9f", - "b37a55": "b37a55", "393539": "292124" }, "2": { @@ -36,15 +29,11 @@ "d8d1cb": "e8e8ff", "b5ada6": "9f9fcc", "9194a2": "7f1c27", - "101010": "101010", "fbfbfb": "d33b3d", "c9cccd": "a52139", - "262628": "262628", - "fefefe": "fefefe", "655e65": "8b8d99", "cdab78": "cc9278", "f8f3a0": "f7caa0", - "b37a55": "b37a55", "393539": "38383f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/892-gigantamax-rapid.json b/public/images/pokemon/variant/892-gigantamax-rapid.json index de6dfd18c04..297aa8f6e55 100644 --- a/public/images/pokemon/variant/892-gigantamax-rapid.json +++ b/public/images/pokemon/variant/892-gigantamax-rapid.json @@ -1,12 +1,8 @@ { "0": { - "100d4f": "100d4f", "303ff1": "4550e6", "282d26": "212028", - "2b337d": "2b337d", "605f4d": "5a525b", - "010101": "010101", - "86a0fd": "86a0fd", "f5f5f5": "f4efe8", "9e6225": "8b222f", "d5a926": "b95826", diff --git a/public/images/pokemon/variant/892-gigantamax-single.json b/public/images/pokemon/variant/892-gigantamax-single.json index 5f2a6dbc509..5bbeb6c3b9b 100644 --- a/public/images/pokemon/variant/892-gigantamax-single.json +++ b/public/images/pokemon/variant/892-gigantamax-single.json @@ -2,12 +2,8 @@ "0": { "282d26": "25141f", "605f4d": "513b46", - "010101": "010101", - "570f0f": "570f0f", "e7140a": "d03932", "42473a": "382334", - "922718": "922718", - "fe7d70": "fe7d70", "f5f5f5": "f4efe8", "9e6225": "8b222f", "fffa60": "ff9736", diff --git a/public/images/pokemon/variant/892-rapid-strike.json b/public/images/pokemon/variant/892-rapid-strike.json index d673eb22ed6..85633b70f6a 100644 --- a/public/images/pokemon/variant/892-rapid-strike.json +++ b/public/images/pokemon/variant/892-rapid-strike.json @@ -4,47 +4,36 @@ "605f4d": "513b46", "8d8c8e": "957961", "6b6574": "725444", - "010101": "010101", - "fcfcfc": "fcfcfc", "9e6225": "8b222f", "282d26": "25141f", "fffa60": "ff9736", "d5a926": "b95826", - "b9b9b9": "b9b9b9", - "42473a": "382334", - "b4b4b4": "b4b4b4", - "fefefe": "fefefe" + "42473a": "382334" }, "1": { "4f4b58": "242a3f", "605f4d": "444f5b", "8d8c8e": "809ba3", "6b6574": "4c6877", - "010101": "010101", "fcfcfc": "b3c0c6", "9e6225": "272735", "282d26": "181b33", "fffa60": "616368", "d5a926": "494b54", "b9b9b9": "768187", - "42473a": "2e3549", - "b4b4b4": "b4b4b4", - "fefefe": "fefefe" + "42473a": "2e3549" }, "2": { "4f4b58": "56546b", "605f4d": "213199", "8d8c8e": "e8e8ff", "6b6574": "9f9fcc", - "010101": "010101", "fcfcfc": "4169d3", "9e6225": "875537", "282d26": "07073f", "fffa60": "f7caa0", "d5a926": "cc9278", "b9b9b9": "2e4ed1", - "42473a": "111a6b", - "b4b4b4": "b4b4b4", - "fefefe": "fefefe" + "42473a": "111a6b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/892.json b/public/images/pokemon/variant/892.json index 678e64f952c..64c0182bf02 100644 --- a/public/images/pokemon/variant/892.json +++ b/public/images/pokemon/variant/892.json @@ -1,23 +1,17 @@ { "0": { "605f4d": "513b46", - "010101": "010101", - "fcfcfc": "fcfcfc", "4f4b58": "4a2e27", - "b9b9b9": "b9b9b9", "8d8c8e": "957961", "6b6574": "725444", "282d26": "25141f", "42473a": "382334", "9e6225": "8b222f", - "b4b4b4": "b4b4b4", "fffa60": "ff9736", - "fefefe": "fefefe", "d5a926": "b95826" }, "1": { "605f4d": "444f5b", - "010101": "010101", "fcfcfc": "b3c0c6", "4f4b58": "263138", "b9b9b9": "768187", @@ -26,14 +20,11 @@ "282d26": "181b33", "42473a": "2e3549", "9e6225": "272735", - "b4b4b4": "b4b4b4", "fffa60": "616368", - "fefefe": "fefefe", "d5a926": "494b54" }, "2": { "605f4d": "870e2a", - "010101": "010101", "fcfcfc": "d33b3d", "4f4b58": "56546b", "b9b9b9": "a52139", @@ -42,9 +33,7 @@ "282d26": "3d0015", "42473a": "51081e", "9e6225": "875537", - "b4b4b4": "b4b4b4", "fffa60": "f7caa0", - "fefefe": "fefefe", "d5a926": "cc9278" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/896.json b/public/images/pokemon/variant/896.json index afb9c0209a0..116eed94e9d 100644 --- a/public/images/pokemon/variant/896.json +++ b/public/images/pokemon/variant/896.json @@ -1,7 +1,6 @@ { "0": { "8cacdd": "8f84c9", - "101010": "101010", "bbd2ff": "b9abea", "eeeef3": "f6ebf6", "cbc1cc": "c9c0d4", @@ -13,7 +12,6 @@ }, "1": { "8cacdd": "41d5b3", - "101010": "101010", "bbd2ff": "9dffff", "eeeef3": "d7ffff", "cbc1cc": "90f6da", @@ -25,7 +23,6 @@ }, "2": { "8cacdd": "bc393b", - "101010": "101010", "bbd2ff": "f68c79", "eeeef3": "fde3d6", "cbc1cc": "f3bca6", diff --git a/public/images/pokemon/variant/897.json b/public/images/pokemon/variant/897.json index d0171d386fa..9e8ec916d03 100644 --- a/public/images/pokemon/variant/897.json +++ b/public/images/pokemon/variant/897.json @@ -1,7 +1,6 @@ { "1": { "3c3c3c": "622d51", - "101010": "101010", "525852": "904c75", "00285c": "6e1817", "49478f": "932f27", @@ -14,7 +13,6 @@ }, "2": { "3c3c3c": "3a6965", - "101010": "101010", "525852": "5c8a7b", "00285c": "0d2222", "49478f": "13312b", diff --git a/public/images/pokemon/variant/898-ice.json b/public/images/pokemon/variant/898-ice.json index b74cf26d567..3f01947a78d 100644 --- a/public/images/pokemon/variant/898-ice.json +++ b/public/images/pokemon/variant/898-ice.json @@ -1,7 +1,6 @@ { "0": { "8cacdd": "8f84c9", - "101010": "101010", "bbd2ff": "b9abea", "004037": "00403c", "007766": "00776f", @@ -9,7 +8,6 @@ "eeeef3": "f6ebf6", "4d524d": "6a5837", "cbc1cc": "c9c0d4", - "fbfbfb": "fbfbfb", "c6c7cc": "ccc6d1", "d1c8be": "d7c881", "9e8f87": "ae8b50", @@ -22,7 +20,6 @@ }, "1": { "8cacdd": "41d5b3", - "101010": "101010", "bbd2ff": "9dffff", "004037": "00124d", "007766": "345ab5", @@ -30,8 +27,6 @@ "eeeef3": "d7ffff", "4d524d": "38255f", "cbc1cc": "90f6da", - "fbfbfb": "fbfbfb", - "c6c7cc": "c6c7cc", "d1c8be": "ba9ded", "9e8f87": "927ec4", "003071": "014837", @@ -43,7 +38,6 @@ }, "2": { "8cacdd": "bc393b", - "101010": "101010", "bbd2ff": "f68c79", "004037": "3c1522", "007766": "88253e", diff --git a/public/images/pokemon/variant/898-shadow.json b/public/images/pokemon/variant/898-shadow.json index 8394ad0f19e..416ecb7861e 100644 --- a/public/images/pokemon/variant/898-shadow.json +++ b/public/images/pokemon/variant/898-shadow.json @@ -3,20 +3,14 @@ "004037": "00403c", "007766": "00776f", "00584b": "005852", - "3c3c3c": "3c3c3c", "4d524d": "6a5837", - "101010": "101010", "525852": "5d5458", - "fbfbfb": "fbfbfb", "00285c": "632741", "c7c8cd": "ccc6d1", "d1c8be": "d7c881", "9e8f87": "ae8b50", "49478f": "894061", "7c5bcf": "d05a82", - "d9a4e3": "d9a4e3", - "fcfcfc": "fcfcfc", - "755179": "755179", "3b3b3b": "6a5837", "00285b": "3b2948", "504e8e": "80447d", @@ -28,11 +22,8 @@ "00584b": "183986", "3c3c3c": "622d51", "4d524d": "38255f", - "101010": "101010", "525852": "904c75", - "fbfbfb": "fbfbfb", "00285c": "6e1817", - "c7c8cd": "c7c8cd", "d1c8be": "ba9ded", "9e8f87": "927ec4", "49478f": "932f27", @@ -51,7 +42,6 @@ "00584b": "601b35", "3c3c3c": "3a6965", "4d524d": "181935", - "101010": "101010", "525852": "5c8a7b", "fbfbfb": "fefdeb", "00285c": "0d2222", diff --git a/public/images/pokemon/variant/898.json b/public/images/pokemon/variant/898.json index ccc39d3a5eb..ac5b85b955f 100644 --- a/public/images/pokemon/variant/898.json +++ b/public/images/pokemon/variant/898.json @@ -6,9 +6,7 @@ "00584b": "005852", "504e8e": "71517a", "007766": "00776f", - "101010": "101010", "525852": "6a5837", - "fcfcfc": "fcfcfc", "c7c8cd": "ccc6d1", "9e8f87": "ae8b50", "d1c8be": "d7c881", @@ -22,9 +20,7 @@ "00584b": "183986", "504e8e": "c64883", "007766": "345ab5", - "101010": "101010", "525852": "38255f", - "fcfcfc": "fcfcfc", "c7c8cd": "ccc6d1", "9e8f87": "927ec4", "d1c8be": "ba9ded", @@ -38,7 +34,6 @@ "00584b": "601b35", "504e8e": "cc8c49", "007766": "88253e", - "101010": "101010", "525852": "181935", "fcfcfc": "fefdeb", "c7c8cd": "c4bdb3", diff --git a/public/images/pokemon/variant/9-gigantamax.json b/public/images/pokemon/variant/9-gigantamax.json index a173fe1b242..03200447167 100644 --- a/public/images/pokemon/variant/9-gigantamax.json +++ b/public/images/pokemon/variant/9-gigantamax.json @@ -1,17 +1,12 @@ { "1": { - "949494": "949494", "352e27": "2c2525", - "101010": "101010", - "cdcdd5": "cdcdd5", - "fdfdfd": "fdfdfd", "494136": "3e322f", "5f5647": "504945", "083962": "204c6d", "5a8bcd": "5fc7a3", "2062ac": "33808c", "6ce8d6": "9bffa4", - "4a4a4a": "4a4a4a", "c75435": "b44839", "94ace6": "50b176" } diff --git a/public/images/pokemon/variant/900.json b/public/images/pokemon/variant/900.json index 585467bea2a..3c341eaa899 100644 --- a/public/images/pokemon/variant/900.json +++ b/public/images/pokemon/variant/900.json @@ -1,30 +1,14 @@ { "1": { - "2b1f22": "2b1f22", - "3a2e2f": "3a2e2f", - "4d3d3e": "4d3d3e", - "080808": "080808", - "6a5856": "6a5856", - "96856d": "96856d", - "fcfcfc": "fcfcfc", "6b563a": "221a69", - "c8bdb7": "c8bdb7", "e2b561": "4b84d2", - "af7845": "354da7", - "e3d1ae": "e3d1ae" + "af7845": "354da7" }, "2": { - "2b1f22": "2b1f22", - "3a2e2f": "3a2e2f", "4d3d3e": "808080", - "080808": "080808", "6a5856": "424242", - "96856d": "96856d", - "fcfcfc": "fcfcfc", "6b563a": "a54200", - "c8bdb7": "c8bdb7", "e2b561": "ffde00", - "af7845": "e68400", - "e3d1ae": "e3d1ae" + "af7845": "e68400" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/901.json b/public/images/pokemon/variant/901.json index fe8f810700f..171e44c62ee 100644 --- a/public/images/pokemon/variant/901.json +++ b/public/images/pokemon/variant/901.json @@ -4,16 +4,9 @@ "231a18": "0c1515", "63443d": "31563f", "502f29": "273b32", - "0f0f0f": "0f0f0f", - "77655b": "77655b", - "9c8d86": "9c8d86", - "4b4236": "4b4236", "ca8b35": "c48e81", "fec643": "f7eee1", - "fcfcfc": "fcfcfc", "25521f": "557f24", - "fec672": "f2cab8", - "95908a": "95908a", - "b4b4b1": "b4b4b1" + "fec672": "f2cab8" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/903.json b/public/images/pokemon/variant/903.json index 6e6eff76441..7414a6891f4 100644 --- a/public/images/pokemon/variant/903.json +++ b/public/images/pokemon/variant/903.json @@ -9,9 +9,7 @@ "b07528": "6e6f6f", "6a56b3": "722738", "ecb629": "a7a7a7", - "f8feff": "f8feff", "36326d": "210609", - "9b98a9": "9b98a9", "de2f41": "31dabb", "8e2458": "12968b", "eb357c": "31dabb" diff --git a/public/images/pokemon/variant/911.json b/public/images/pokemon/variant/911.json index b3beb1e23c3..a1c5345d79a 100644 --- a/public/images/pokemon/variant/911.json +++ b/public/images/pokemon/variant/911.json @@ -4,35 +4,24 @@ "f45511": "91dada", "ffd017": "b4e6e6", "ee8b08": "81d5d5", - "5b5c5e": "5b5c5e", "fcfcfc": "cccccc", "9fa0a2": "758a70", - "333c36": "333c36", "a334d8": "9524ca", "ff4a3c": "366565", - "0f0f0f": "0f0f0f", "741010": "152828", "ba3227": "234141", - "4e2c85": "4e2c85", - "ffa252": "dbf3f3", - "000000": "000000" + "ffa252": "dbf3f3" }, "2": { "d20000": "0ea631", "f45511": "2fe757", "ffd017": "4ffc75", "ee8b08": "08e739", - "5b5c5e": "5b5c5e", "fcfcfc": "e5ffec", "9fa0a2": "82977c", - "333c36": "333c36", - "a334d8": "a334d8", "ff4a3c": "38583f", - "0f0f0f": "0f0f0f", "741010": "162319", "ba3227": "243929", - "4e2c85": "4e2c85", - "ffa252": "a6ffba", - "000000": "000000" + "ffa252": "a6ffba" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/912.json b/public/images/pokemon/variant/912.json index c366d573c0a..b99e7fa7843 100644 --- a/public/images/pokemon/variant/912.json +++ b/public/images/pokemon/variant/912.json @@ -4,14 +4,12 @@ "3686b1": "d96536", "2fbee8": "e69c51", "84d7ff": "f7ca7b", - "0f0f0f": "0f0f0f", "f2fdff": "fff0d4", "4d6373": "a05f27", "becde4": "d79f63", "005ba2": "7f0e0b", "7999bd": "b9865a", "f6fbfc": "ffe3b0", - "ffffff": "ffffff", "6a6a41": "3b2e28", "aca462": "5b5450", "f6f64a": "868382" @@ -21,14 +19,12 @@ "3686b1": "1c7962", "2fbee8": "33b37e", "84d7ff": "58d299", - "0f0f0f": "0f0f0f", "f2fdff": "a6f5bb", "4d6373": "2d185d", "becde4": "5137a0", "005ba2": "0e3f31", "7999bd": "422c84", "f6fbfc": "6767e3", - "ffffff": "ffffff", "6a6a41": "601a0d", "aca462": "bb602f", "f6f64a": "f49651" diff --git a/public/images/pokemon/variant/914.json b/public/images/pokemon/variant/914.json index 1204b6c99a1..eeb547c68ba 100644 --- a/public/images/pokemon/variant/914.json +++ b/public/images/pokemon/variant/914.json @@ -2,7 +2,6 @@ "2": { "3d7a71": "541222", "55dbe6": "f15e76", - "0f0f0f": "0f0f0f", "394bee": "1d6c42", "282a4d": "072a2b", "419bc2": "a22f49", @@ -13,7 +12,6 @@ "a24720": "eac7b4", "eda936": "ffa564", "803213": "4b251b", - "ffffff": "ffffff", "efffff": "4b40be", "cb7e29": "c76740", "8ea6a8": "3b188e", diff --git a/public/images/pokemon/variant/919.json b/public/images/pokemon/variant/919.json index c06063fba68..c04f4510a9f 100644 --- a/public/images/pokemon/variant/919.json +++ b/public/images/pokemon/variant/919.json @@ -3,7 +3,6 @@ "434863": "312d28", "26253d": "1b1916", "607493": "4c463e", - "0f0f0f": "0f0f0f", "879ab2": "6c665d", "c5c2c5": "a39d62", "f7f7ff": "dbd4a2", @@ -19,13 +18,7 @@ "434863": "2a5549", "26253d": "162d2a", "607493": "4a9058", - "0f0f0f": "0f0f0f", "879ab2": "71bb74", - "c5c2c5": "c5c2c5", - "f7f7ff": "f7f7ff", - "6e6b82": "6e6b82", - "373547": "373547", - "efefef": "efefef", "7c451b": "80223b", "b59a13": "a93930", "ffc608": "c64e2f", @@ -35,7 +28,6 @@ "434863": "611d3a", "26253d": "350f21", "607493": "9a3545", - "0f0f0f": "0f0f0f", "879ab2": "c84d52", "c5c2c5": "343434", "f7f7ff": "4a4a4a", diff --git a/public/images/pokemon/variant/924.json b/public/images/pokemon/variant/924.json index 752fd7d8840..ce42f528bcb 100644 --- a/public/images/pokemon/variant/924.json +++ b/public/images/pokemon/variant/924.json @@ -4,7 +4,6 @@ "f9f9f9": "cddef1", "393a44": "344854", "b8b9c0": "9c89d2", - "0f0f0f": "0f0f0f", "888b97": "5a6e8f", "567d9a": "755382", "b8ccde": "a3a6ef", @@ -15,7 +14,6 @@ "f9f9f9": "b39090", "393a44": "3f0f0f", "b8b9c0": "785e5e", - "0f0f0f": "0f0f0f", "888b97": "6e4343", "567d9a": "a15d55", "b8ccde": "eaafb2", @@ -26,7 +24,6 @@ "f9f9f9": "757373", "393a44": "27272e", "b8b9c0": "4b4b4d", - "0f0f0f": "0f0f0f", "888b97": "3c3c3d", "567d9a": "471910", "b8ccde": "7a5b5d", diff --git a/public/images/pokemon/variant/925-four.json b/public/images/pokemon/variant/925-four.json index a72e775844b..17beec20972 100644 --- a/public/images/pokemon/variant/925-four.json +++ b/public/images/pokemon/variant/925-four.json @@ -4,7 +4,6 @@ "f9f9f9": "cddef1", "393a44": "344854", "b8b9c0": "9c89d2", - "0f0f0f": "0f0f0f", "888b97": "5a6e8f", "567d9a": "755382", "b8ccde": "a3a6ef", @@ -16,7 +15,6 @@ "f9f9f9": "b39090", "393a44": "3f0f0f", "b8b9c0": "785e5e", - "0f0f0f": "0f0f0f", "888b97": "6e4343", "567d9a": "a15d55", "b8ccde": "eaafb2", diff --git a/public/images/pokemon/variant/925-three.json b/public/images/pokemon/variant/925-three.json index 89577c9d44a..d0ee20c0536 100644 --- a/public/images/pokemon/variant/925-three.json +++ b/public/images/pokemon/variant/925-three.json @@ -16,7 +16,6 @@ "f9f9f9": "b39090", "393a44": "3f0f0f", "b8b9c0": "785e5e", - "0f0f0f": "0f0f0f", "888b97": "6e4343", "567d9a": "a15d55", "b8ccde": "eaafb2", @@ -28,7 +27,6 @@ "f9f9f9": "757373", "393a44": "27272e", "b8b9c0": "4b4b4d", - "0f0f0f": "0f0f0f", "888b97": "3c3c3d", "567d9a": "471910", "b8ccde": "7a5b5d", diff --git a/public/images/pokemon/variant/93.json b/public/images/pokemon/variant/93.json index 21243b8f93d..77cc3ca23f9 100644 --- a/public/images/pokemon/variant/93.json +++ b/public/images/pokemon/variant/93.json @@ -3,12 +3,9 @@ "845a6b": "8e699a", "524263": "52426b", "ad6bce": "caaddf", - "101010": "101010", "c58cce": "dfcaee", "b51919": "2963d6", "de4a31": "5a94ff", - "d6d6d6": "d6d6d6", - "ffffff": "ffffff", "d6a5de": "d6a5e6", "6b0000": "0831a5" }, @@ -16,12 +13,9 @@ "845a6b": "631b3f", "524263": "380508", "ad6bce": "8e395f", - "101010": "101010", "c58cce": "c06380", "b51919": "7ee75c", "de4a31": "e4f67c", - "d6d6d6": "d6d6d6", - "ffffff": "ffffff", "d6a5de": "ef8d9f", "6b0000": "2eb063" }, @@ -29,12 +23,9 @@ "845a6b": "302433", "524263": "1a1320", "ad6bce": "4c4354", - "101010": "101010", "c58cce": "82748c", "b51919": "e47750", "de4a31": "fae277", - "d6d6d6": "d6d6d6", - "ffffff": "ffffff", "d6a5de": "d6a5e6", "6b0000": "b72b47" } diff --git a/public/images/pokemon/variant/932.json b/public/images/pokemon/variant/932.json index cadab6eeec4..992a25b53e8 100644 --- a/public/images/pokemon/variant/932.json +++ b/public/images/pokemon/variant/932.json @@ -1,7 +1,6 @@ { "1": { "998694": "966480", - "564d57": "564d57", "fcfcfc": "f9c2cd", "8e5f57": "9ba7b0", "724747": "76828b", @@ -9,7 +8,6 @@ "c0937c": "deeaf3", "472727": "3d4952", "e4c2b6": "f9ffff", - "0f0f0f": "0f0f0f", "765c4b": "703e4c", "eeac31": "ed3336" } diff --git a/public/images/pokemon/variant/933.json b/public/images/pokemon/variant/933.json index e63b668cc87..3756a0a9706 100644 --- a/public/images/pokemon/variant/933.json +++ b/public/images/pokemon/variant/933.json @@ -1,6 +1,5 @@ { "1": { - "564d57": "564d57", "64514d": "6d7982", "fcfcfc": "f9c2cd", "bfb4ba": "bc8296", @@ -11,8 +10,7 @@ "8a7367": "a0acb6", "eeac31": "ed3336", "f6e21a": "ffe8f3", - "44332e": "3a464f", - "0f0f0f": "0f0f0f" + "44332e": "3a464f" }, "2": { "564d57": "444251", @@ -26,7 +24,6 @@ "8a7367": "608263", "eeac31": "551d8f", "f6e21a": "e1b1fb", - "44332e": "2b3f3f", - "0f0f0f": "0f0f0f" + "44332e": "2b3f3f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/934.json b/public/images/pokemon/variant/934.json index 4710c813afe..a99340c38be 100644 --- a/public/images/pokemon/variant/934.json +++ b/public/images/pokemon/variant/934.json @@ -7,7 +7,6 @@ "96675a": "adbac3", "8a7367": "949fa8", "c3927b": "d8e9f5", - "0f0f0f": "0f0f0f", "44332e": "3a464f", "64514d": "6d7982", "ea881c": "d63e6e", @@ -23,7 +22,6 @@ "96675a": "5d9157", "8a7367": "608263", "c3927b": "7fc17c", - "0f0f0f": "0f0f0f", "44332e": "2b3f3f", "64514d": "3d5e47", "ea881c": "551d8f", diff --git a/public/images/pokemon/variant/94-gigantamax.json b/public/images/pokemon/variant/94-gigantamax.json index 2e9d2f5824c..c8053904556 100644 --- a/public/images/pokemon/variant/94-gigantamax.json +++ b/public/images/pokemon/variant/94-gigantamax.json @@ -3,14 +3,11 @@ "5a4a9c": "a89dc4", "4a294a": "091659", "b48bbd": "fefefe", - "101010": "101010", "9473b4": "fcf4fc", "7b62a4": "d1bcd6", "ff8337": "010202", "ffff00": "21252a", "cc1e5b": "2963d6", - "fff6ff": "fff6ff", - "bdacbd": "bdacbd", "ba325a": "352936", "920634": "143e92", "743a5b": "7492d5", diff --git a/public/images/pokemon/variant/94.json b/public/images/pokemon/variant/94.json index c1d7c6358ae..5425501c462 100644 --- a/public/images/pokemon/variant/94.json +++ b/public/images/pokemon/variant/94.json @@ -3,21 +3,17 @@ "5a4a9c": "9e85a6", "4a294a": "634b63", "b58cbd": "ebdbf7", - "101010": "101010", "9473b5": "cbb7da", "7b63a5": "d1bcd6", "ff5a5a": "2963d6", "ff9494": "5a94ff", - "bdadbd": "bdadbd", "fff7ff": "ffffff", - "6b637b": "6b637b", "ded6de": "dedede" }, "1": { "5a4a9c": "4a1f36", "4a294a": "1b0917", "b58cbd": "c56f8a", - "101010": "101010", "9473b5": "8d3e61", "7b63a5": "6f284a", "ff5a5a": "e79c39", @@ -31,7 +27,6 @@ "5a4a9c": "302433", "4a294a": "1a1320", "b58cbd": "7b6888", - "101010": "101010", "9473b5": "3f324a", "7b63a5": "3b2b3e", "ff5a5a": "a9223d", diff --git a/public/images/pokemon/variant/940.json b/public/images/pokemon/variant/940.json index a84fb9ed44d..8613ad30761 100644 --- a/public/images/pokemon/variant/940.json +++ b/public/images/pokemon/variant/940.json @@ -5,11 +5,8 @@ "181a1b": "271945", "ffcd37": "7dffc0", "91a5c3": "e39fc5", - "f9f9f9": "f9f9f9", "be8f29": "5dd9c8", - "0f0f0f": "0f0f0f", "643c28": "433382", - "73bbbf": "73bbbf", "f1a156": "ce87fa", "c27741": "9a5fd9", "826426": "1b9ea1", @@ -23,9 +20,7 @@ "181a1b": "532d61", "ffcd37": "d9647b", "91a5c3": "ba73b2", - "f9f9f9": "f9f9f9", "be8f29": "b3466a", - "0f0f0f": "0f0f0f", "643c28": "2b2745", "73bbbf": "ffcf4a", "f1a156": "745b85", diff --git a/public/images/pokemon/variant/941.json b/public/images/pokemon/variant/941.json index 3c36d6a91da..a9b2ac62402 100644 --- a/public/images/pokemon/variant/941.json +++ b/public/images/pokemon/variant/941.json @@ -6,12 +6,10 @@ "aa7e24": "3dd1cc", "ffcd37": "6ef5c8", "8c898c": "9c5bd9", - "fdfdfd": "fdfdfd", "2b1717": "773185", "73bbbf": "de82ff", "441e21": "d16492", "692a2f": "ff9ec6", - "0f0f0f": "0f0f0f", "624a20": "217991", "37415a": "55348a", "272a2e": "3b227a", @@ -24,12 +22,10 @@ "aa7e24": "c44f6c", "ffcd37": "e3667d", "8c898c": "cf7827", - "fdfdfd": "fdfdfd", "2b1717": "3a3466", "73bbbf": "ffcf4a", "441e21": "51467a", "692a2f": "776294", - "0f0f0f": "0f0f0f", "624a20": "8a2f62", "37415a": "723b80", "272a2e": "56286b", diff --git a/public/images/pokemon/variant/948.json b/public/images/pokemon/variant/948.json index 01b0e57a61d..25ce7335bcb 100644 --- a/public/images/pokemon/variant/948.json +++ b/public/images/pokemon/variant/948.json @@ -7,7 +7,6 @@ "976924": "a50927", "ffec37": "ff6237", "fef8f5": "fff4f1", - "000000": "000000", "eaba2b": "b9352b", "d2bbac": "e2bea6", "886b59": "8d5740" @@ -20,7 +19,6 @@ "976924": "254087", "ffec37": "4b86bd", "fef8f5": "ffede5", - "000000": "000000", "eaba2b": "2e609b", "d2bbac": "d8bdab", "886b59": "ad927b" diff --git a/public/images/pokemon/variant/949.json b/public/images/pokemon/variant/949.json index efda1b10f0b..c04cc4b9d0d 100644 --- a/public/images/pokemon/variant/949.json +++ b/public/images/pokemon/variant/949.json @@ -3,38 +3,30 @@ "404040": "4b3073", "282828": "33134d", "5f5f5f": "7462ad", - "000000": "000000", "ede652": "1672a1", "86433c": "a50927", "ca7268": "d41929", "d6938b": "ff4737", "e7bcb8": "ff9d6d", - "ffffff": "ffffff", "cdae52": "0c4a83", "c2ae83": "b29785", "f5f9b9": "d6c1b1", - "f9f1b9": "f9f1b9", "94724b": "60473c", - "936839": "042259", - "bdbdbd": "bdbdbd" + "936839": "042259" }, "2": { "404040": "70150e", "282828": "460001", "5f5f5f": "c64d30", - "000000": "000000", "ede652": "dd7731", "86433c": "401e54", "ca7268": "613a8a", "d6938b": "8e65c1", "e7bcb8": "dd9dff", - "ffffff": "ffffff", "cdae52": "af3610", "c2ae83": "d9b591", "f5f9b9": "ffe8d6", - "f9f1b9": "f9f1b9", "94724b": "6f492c", - "936839": "7e1200", - "bdbdbd": "bdbdbd" + "936839": "7e1200" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/951.json b/public/images/pokemon/variant/951.json index 11e0575d7f4..50cf97f8ccf 100644 --- a/public/images/pokemon/variant/951.json +++ b/public/images/pokemon/variant/951.json @@ -6,7 +6,6 @@ "2e302f": "1f0c17", "3f9a5f": "be8a84", "2f683c": "9d6b5b", - "0f0f0f": "0f0f0f", "5c7c5c": "4c292f", "79b97b": "704f4f", "a6b496": "facf81", @@ -21,7 +20,6 @@ "2e302f": "3b2e3a", "3f9a5f": "a78bdc", "2f683c": "7456a8", - "0f0f0f": "0f0f0f", "5c7c5c": "8e7eb1", "79b97b": "cfbfe6", "a6b496": "fa95d1", diff --git a/public/images/pokemon/variant/952.json b/public/images/pokemon/variant/952.json index cdf83f43e8f..485d60ab51f 100644 --- a/public/images/pokemon/variant/952.json +++ b/public/images/pokemon/variant/952.json @@ -3,8 +3,6 @@ "294e25": "55321d", "51c444": "facf81", "3f8147": "d38c43", - "0f0f0f": "0f0f0f", - "1f1f1f": "1f1f1f", "641e1c": "8c2f0a", "a23424": "bb5a2b", "ef5131": "f8975d", @@ -12,7 +10,6 @@ "cdcdcd": "ffd2cc", "42804b": "9d6b5b", "dd5800": "ffb676", - "192021": "192021", "fffff7": "ffd2cc", "eff3e6": "ffd2cc", "476b51": "704f4f", @@ -23,8 +20,6 @@ "294e25": "3f3399", "51c444": "90c3ea", "3f8147": "627bcd", - "0f0f0f": "0f0f0f", - "1f1f1f": "1f1f1f", "641e1c": "8c1f39", "a23424": "cb486d", "ef5131": "f77baf", @@ -32,9 +27,6 @@ "cdcdcd": "f8f3fe", "42804b": "9884d3", "dd5800": "f597cf", - "192021": "192021", - "fffff7": "fffff7", - "eff3e6": "eff3e6", "476b51": "f8f3fe", "262826": "9986b3", "3c5042": "cfbfe6" diff --git a/public/images/pokemon/variant/953.json b/public/images/pokemon/variant/953.json index 417229d550b..4e0efbdcefa 100644 --- a/public/images/pokemon/variant/953.json +++ b/public/images/pokemon/variant/953.json @@ -8,7 +8,6 @@ "37332b": "104139", "b96c26": "2f7410", "575244": "18734a", - "0f0f0f": "0f0f0f", "777463": "199e46", "4d4530": "b29c3e", "b0a766": "f9fba2", @@ -25,7 +24,6 @@ "37332b": "261031", "b96c26": "4792bd", "575244": "5e2d72", - "0f0f0f": "0f0f0f", "777463": "8358a1", "4d4530": "534b8c", "b0a766": "c9dbac", diff --git a/public/images/pokemon/variant/954.json b/public/images/pokemon/variant/954.json index efdb5836805..b79e72aef37 100644 --- a/public/images/pokemon/variant/954.json +++ b/public/images/pokemon/variant/954.json @@ -9,7 +9,6 @@ "f8f8f8": "fbf3ab", "3f4f5c": "523223", "5ea2c6": "7d4538", - "181818": "181818", "6bc0dd": "b05858", "98979d": "d9bd6f", "c94c5a": "159464", @@ -25,7 +24,6 @@ "f8f8f8": "432f77", "3f4f5c": "21214c", "5ea2c6": "616481", - "181818": "181818", "6bc0dd": "9e9fb6", "98979d": "221a4c", "c94c5a": "4c92c5", diff --git a/public/images/pokemon/variant/957.json b/public/images/pokemon/variant/957.json index aa15c60152b..943e7876c41 100644 --- a/public/images/pokemon/variant/957.json +++ b/public/images/pokemon/variant/957.json @@ -4,7 +4,6 @@ "ecd0d0": "f2d5cb", "aa848f": "ad858d", "312b33": "3f2319", - "0f0f0f": "0f0f0f", "ada1c5": "cb836c", "897194": "8b5745", "4a3670": "532835", @@ -12,8 +11,6 @@ "ae597d": "e07d97", "644f9b": "6a3443", "a74167": "993868", - "ec558c": "c65f7e", - "fcfcfc": "fcfcfc", - "585ea3": "585ea3" + "ec558c": "c65f7e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/958.json b/public/images/pokemon/variant/958.json index 6ac6a705fdd..52b921a4d39 100644 --- a/public/images/pokemon/variant/958.json +++ b/public/images/pokemon/variant/958.json @@ -3,12 +3,10 @@ "522e45": "201a3d", "ecd0d0": "f3e0ff", "aa848f": "c0b3e2", - "0f0f0f": "0f0f0f", "e991b5": "a074b0", "ec558c": "7a4889", "ae597d": "795bad", "a74167": "44306b", - "fcfcfc": "fcfcfc", "585ea3": "42895c", "312b33": "1e1d30", "ada1c5": "5b5a68", diff --git a/public/images/pokemon/variant/962.json b/public/images/pokemon/variant/962.json index 53dfdb4f11b..fa419376421 100644 --- a/public/images/pokemon/variant/962.json +++ b/public/images/pokemon/variant/962.json @@ -2,7 +2,6 @@ "0": { "342930": "3e1d26", "4a3942": "60354a", - "0f0f0f": "0f0f0f", "665b60": "924f57", "b9aaaf": "dd9f9d", "efe3e1": "f6cbc4", @@ -18,7 +17,6 @@ "1": { "342930": "1e382a", "4a3942": "395740", - "0f0f0f": "0f0f0f", "665b60": "404b22", "b9aaaf": "c6ca8e", "efe3e1": "e8e8c0", @@ -34,7 +32,6 @@ "2": { "342930": "754156", "4a3942": "a5777f", - "0f0f0f": "0f0f0f", "665b60": "211f45", "b9aaaf": "453863", "efe3e1": "67548a", diff --git a/public/images/pokemon/variant/967.json b/public/images/pokemon/variant/967.json index 5f527aa11fd..55d9a079729 100644 --- a/public/images/pokemon/variant/967.json +++ b/public/images/pokemon/variant/967.json @@ -3,28 +3,19 @@ "384a35": "464354", "1c2916": "272431", "54654e": "67637a", - "b9b7b3": "b9b7b3", - "0f0f0f": "0f0f0f", "f16b32": "bead9d", "607d6d": "6e76a9", "75b07d": "9299c7", - "fcfcfc": "fcfcfc", - "34453d": "444a71", - "323943": "323943", - "222328": "222328", - "4b565c": "4b565c", - "e2e9d7": "e2e9d7" + "34453d": "444a71" }, "2": { "384a35": "5d0c0c", "1c2916": "43060b", "54654e": "942d22", "b9b7b3": "c0ab8b", - "0f0f0f": "0f0f0f", "f16b32": "8c63d2", "607d6d": "6b2c31", "75b07d": "a95d50", - "fcfcfc": "fcfcfc", "34453d": "531d27", "323943": "502b2a", "222328": "371516", diff --git a/public/images/pokemon/variant/969.json b/public/images/pokemon/variant/969.json index e1f44ca1ddd..96e3e78e40c 100644 --- a/public/images/pokemon/variant/969.json +++ b/public/images/pokemon/variant/969.json @@ -8,7 +8,6 @@ "3d464b": "44111b", "4d6076": "6b1933", "ffff31": "dde4e6", - "0f0f0f": "0f0f0f", "5a869c": "bd2646", "635181": "527492", "453b4d": "2c445a", @@ -25,7 +24,6 @@ "3d464b": "2d293a", "4d6076": "433e53", "ffff31": "c0efff", - "0f0f0f": "0f0f0f", "5a869c": "656b8b", "635181": "193a1c", "453b4d": "0d240f", diff --git a/public/images/pokemon/variant/970.json b/public/images/pokemon/variant/970.json index 3eda121f7d1..1d1805163fd 100644 --- a/public/images/pokemon/variant/970.json +++ b/public/images/pokemon/variant/970.json @@ -5,7 +5,6 @@ "5de0aa": "fbce5d", "262b6b": "323b51", "3253d6": "577b81", - "0f0f0f": "0f0f0f", "a02c75": "3f4a6f", "2c369a": "435469", "e0548f": "758eb4", @@ -22,7 +21,6 @@ "5de0aa": "df543b", "262b6b": "bb7154", "3253d6": "ffedd1", - "0f0f0f": "0f0f0f", "a02c75": "1b3842", "2c369a": "e1a47a", "e0548f": "235c65", diff --git a/public/images/pokemon/variant/974.json b/public/images/pokemon/variant/974.json index 6d2662547de..bba74da0831 100644 --- a/public/images/pokemon/variant/974.json +++ b/public/images/pokemon/variant/974.json @@ -4,16 +4,12 @@ "bebaba": "ee9065", "524951": "661427", "efefef": "ffcc9e", - "0f0f0f": "0f0f0f", "a29793": "c85442", "a44667": "2c7193", "c7639c": "48aeba", "f493c9": "71e2d3", - "fcfcfc": "fcfcfc", "832041": "6a193e", - "c9c9c9": "c9c9c9", "cd394a": "ac5070", - "5e5e5e": "5e5e5e", "dc7569": "e37c8e" }, "2": { @@ -21,16 +17,12 @@ "bebaba": "2a607f", "524951": "172651", "efefef": "438aa0", - "0f0f0f": "0f0f0f", "a29793": "1c426b", "a44667": "ae664a", "c7639c": "daa470", "f493c9": "ffdfa1", - "fcfcfc": "fcfcfc", "832041": "433363", - "c9c9c9": "c9c9c9", "cd394a": "775b8c", - "5e5e5e": "5e5e5e", "dc7569": "a87fae" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/98.json b/public/images/pokemon/variant/98.json index 972444eae32..6f84619fbf2 100644 --- a/public/images/pokemon/variant/98.json +++ b/public/images/pokemon/variant/98.json @@ -4,27 +4,21 @@ "ffa563": "c466f3", "ff7331": "9359ca", "843110": "3e3662", - "101010": "101010", "5a4221": "231947", "735210": "534681", "ffdebd": "c3d6ff", - "dedede": "dedede", "e6bd8c": "9ba3d9", - "b58442": "7c72b6", - "ffffff": "ffffff" + "b58442": "7c72b6" }, "2": { "de524a": "2678b8", "ffa563": "5ce6f3", "ff7331": "4abbd4", "843110": "23457e", - "101010": "101010", "5a4221": "040522", "735210": "0d0e3c", "ffdebd": "4c549a", - "dedede": "dedede", "e6bd8c": "342b78", - "b58442": "1b1d62", - "ffffff": "ffffff" + "b58442": "1b1d62" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/981.json b/public/images/pokemon/variant/981.json index 32e3fac7aa9..38b46463253 100644 --- a/public/images/pokemon/variant/981.json +++ b/public/images/pokemon/variant/981.json @@ -7,11 +7,8 @@ "9ca0ab": "665144", "8b704c": "3d6186", "322513": "091e34", - "0f0f0f": "0f0f0f", "fff42f": "c29925", - "fcfcfc": "fcfcfc", "deb43d": "dec93d", - "a8abb3": "a8abb3", "775c10": "774f10", "b1a75c": "7e262d", "fdec8a": "9c3e3e", @@ -32,11 +29,8 @@ "9ca0ab": "9c5978", "8b704c": "e4efcf", "322513": "337142", - "0f0f0f": "0f0f0f", "fff42f": "ed9233", - "fcfcfc": "fcfcfc", "deb43d": "ebbb72", - "a8abb3": "a8abb3", "775c10": "b35127", "b1a75c": "1e7884", "fdec8a": "2a9d8f", diff --git a/public/images/pokemon/variant/982-three-segment.json b/public/images/pokemon/variant/982-three-segment.json index 37662044457..16869ca244a 100644 --- a/public/images/pokemon/variant/982-three-segment.json +++ b/public/images/pokemon/variant/982-three-segment.json @@ -2,7 +2,6 @@ "1": { "1e6d7d": "2a413f", "66c4c4": "748da4", - "101010": "101010", "2f959e": "4a6165", "735a41": "53575a", "f6e67b": "ececec", @@ -10,7 +9,6 @@ "debd39": "aeaeae", "5a6273": "5d6970", "bdcde6": "c1d7e2", - "f6ffff": "f6ffff", "fff6c5": "fdfdfd", "d5e6f6": "d8edf3", "bd7d9c": "bfab7c" @@ -18,7 +16,6 @@ "2": { "1e6d7d": "1d737a", "66c4c4": "b5f2ec", - "101010": "101010", "2f959e": "38a8a6", "735a41": "462a3e", "f6e67b": "db4069", diff --git a/public/images/pokemon/variant/982.json b/public/images/pokemon/variant/982.json index 5efd0b4a83b..f0115e44404 100644 --- a/public/images/pokemon/variant/982.json +++ b/public/images/pokemon/variant/982.json @@ -2,7 +2,6 @@ "1": { "1e6d7d": "2a413f", "66c4c4": "748da4", - "101010": "101010", "2f959e": "4a6165", "735a41": "53575a", "f6e67b": "ececec", @@ -10,7 +9,6 @@ "debd39": "aeaeae", "5a6273": "5d6970", "bdcde6": "c1d7e2", - "f6ffff": "f6ffff", "d5e6f6": "d8edf3", "fff6c5": "fdfdfd", "bd7d9c": "bfab7c" @@ -18,7 +16,6 @@ "2": { "1e6d7d": "1d737a", "66c4c4": "b5f2ec", - "101010": "101010", "2f959e": "38a8a6", "735a41": "462a3e", "f6e67b": "db4069", diff --git a/public/images/pokemon/variant/987.json b/public/images/pokemon/variant/987.json index d05c49d8f07..24be6175ad7 100644 --- a/public/images/pokemon/variant/987.json +++ b/public/images/pokemon/variant/987.json @@ -2,7 +2,6 @@ "0": { "8a378a": "9b490e", "ee93e8": "ffdd67", - "0f0f0f": "0f0f0f", "314a62": "244260", "182941": "132443", "b36cc1": "d3941a", @@ -12,13 +11,11 @@ "de62a4": "ffc668", "a4295a": "cc762f", "bd9431": "cb79dd", - "eee662": "ffc7ff", - "f9f9f9": "f9f9f9" + "eee662": "ffc7ff" }, "1": { "8a378a": "0c8086", "ee93e8": "3df7ed", - "0f0f0f": "0f0f0f", "314a62": "7396b4", "182941": "2c384d", "b36cc1": "1dbdb9", @@ -28,13 +25,11 @@ "de62a4": "ffdf90", "a4295a": "e28c27", "bd9431": "66d0e5", - "eee662": "a6f0f8", - "f9f9f9": "f9f9f9" + "eee662": "a6f0f8" }, "2": { "8a378a": "5d4a2f", "ee93e8": "fff7dd", - "0f0f0f": "0f0f0f", "314a62": "b56f2a", "182941": "603305", "b36cc1": "eece8c", @@ -44,7 +39,6 @@ "de62a4": "e25038", "a4295a": "a62a21", "bd9431": "66d0e5", - "eee662": "a6f0f8", - "f9f9f9": "f9f9f9" + "eee662": "a6f0f8" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/988.json b/public/images/pokemon/variant/988.json index b19d419c2cc..8268e990e77 100644 --- a/public/images/pokemon/variant/988.json +++ b/public/images/pokemon/variant/988.json @@ -5,13 +5,9 @@ "7b2000": "0b334c", "d8a33f": "56e4ba", "efd165": "66e9c2", - "35384f": "35384f", - "465175": "465175", - "f1f7f7": "f1f7f7", "9ade1d": "d7d346", "d1fd77": "e2fd77", "f04137": "17b79f", - "181820": "181820", "a9a9ab": "92c9b9", "ff3121": "2c9484", "e63529": "23ae9a", diff --git a/public/images/pokemon/variant/99-gigantamax.json b/public/images/pokemon/variant/99-gigantamax.json index ecf9643d77c..7cc082c0d67 100644 --- a/public/images/pokemon/variant/99-gigantamax.json +++ b/public/images/pokemon/variant/99-gigantamax.json @@ -4,7 +4,6 @@ "f6c58b": "9f60d5", "832908": "3b1c69", "ee8b4a": "8853bf", - "101010": "101010", "735210": "534681", "fdfdfd": "ffdbdb", "e1d0db": "d5869b", @@ -21,7 +20,6 @@ "f6c58b": "75e0e8", "832908": "22447d", "ee8b4a": "43adc4", - "101010": "101010", "735210": "1e1743", "fdfdfd": "b1f1cf", "e1d0db": "73c1c2", diff --git a/public/images/pokemon/variant/99.json b/public/images/pokemon/variant/99.json index d907c0f85fc..33b04dbb06b 100644 --- a/public/images/pokemon/variant/99.json +++ b/public/images/pokemon/variant/99.json @@ -4,13 +4,10 @@ "842908": "3b1c69", "ef8c4a": "8853bf", "f7c58c": "9f60d5", - "101010": "101010", "4a3121": "1c1f46", "5a4231": "2c3c61", "b57b5a": "7c72b6", "735210": "534681", - "dedef7": "dedef7", - "ffffff": "ffffff", "ffe6b5": "c3d6ff", "efbd8c": "9ba3d9" }, @@ -19,13 +16,10 @@ "842908": "23457e", "ef8c4a": "43adc4", "f7c58c": "75e0e8", - "101010": "101010", "4a3121": "1b1e3b", "5a4231": "2b354e", "b57b5a": "231d51", "735210": "1e1743", - "dedef7": "dedef7", - "ffffff": "ffffff", "ffe6b5": "464d89", "efbd8c": "31296f" } diff --git a/public/images/pokemon/variant/993.json b/public/images/pokemon/variant/993.json index 74fb021387d..2ae7dd659e9 100644 --- a/public/images/pokemon/variant/993.json +++ b/public/images/pokemon/variant/993.json @@ -4,11 +4,9 @@ "7a787a": "f8f5e2", "463741": "754711", "4f4d51": "c59b4b", - "0f0f0f": "0f0f0f", "952b7d": "585a5c", "ff4dcb": "b7c6d6", "4a424a": "533310", - "333539": "333539", "fcfcfc": "ffffff", "20459b": "3c236a", "172e57": "160832", @@ -22,12 +20,9 @@ "7a787a": "a4bfbe", "463741": "2a545a", "4f4d51": "467678", - "0f0f0f": "0f0f0f", "952b7d": "873954", "ff4dcb": "e3bbd3", "4a424a": "1e2b37", - "333539": "333539", - "fcfcfc": "fcfcfc", "20459b": "600f40", "172e57": "470e2c", "86abf0": "ba1e51", diff --git a/public/images/pokemon/variant/994.json b/public/images/pokemon/variant/994.json index aeb03ed5d63..87ce90e2229 100644 --- a/public/images/pokemon/variant/994.json +++ b/public/images/pokemon/variant/994.json @@ -7,9 +7,7 @@ "626262": "696983", "5e2d4e": "ae7a24", "be5a83": "fdc263", - "181820": "181820", "874070": "d79a38", - "313139": "313139", "959595": "9b9bb6", "dbdadc": "d9d9ea", "36485a": "3f357c", @@ -21,13 +19,9 @@ "c77923": "00759b", "f29c46": "00bfe1", "fac173": "7bf2ff", - "626262": "626262", "5e2d4e": "6e2140", "be5a83": "ff5e5e", - "181820": "181820", "874070": "e72158", - "313139": "313139", - "959595": "959595", "dbdadc": "e9dac7", "36485a": "664338", "6a8795": "ff926c", diff --git a/public/images/pokemon/variant/995.json b/public/images/pokemon/variant/995.json index 95453040c50..8d4d6c3cea8 100644 --- a/public/images/pokemon/variant/995.json +++ b/public/images/pokemon/variant/995.json @@ -2,23 +2,18 @@ "1": { "99c350": "ddcb86", "c4de98": "f6eebd", - "0f0f0f": "0f0f0f", "3c571e": "4f4528", "4b792d": "7b6a31", "78913e": "8d7f54", "8caa48": "b6a674", "1d9b70": "6a267e", "03fd9f": "ca72e4", - "393538": "393538", "37bd7a": "9d3eb9", - "ddeed7": "e9d7ee", - "252323": "252323", - "504a4a": "504a4a" + "ddeed7": "e9d7ee" }, "2": { "99c350": "6b737b", "c4de98": "949ca5", - "0f0f0f": "0f0f0f", "3c571e": "26292b", "4b792d": "383c40", "78913e": "464b51", diff --git a/public/images/pokemon/variant/996.json b/public/images/pokemon/variant/996.json index 9aeb5942284..e6311b9bdf9 100644 --- a/public/images/pokemon/variant/996.json +++ b/public/images/pokemon/variant/996.json @@ -7,7 +7,6 @@ "af9b0a": "3b69d3", "f9d800": "30d1ff", "dedfde": "b7926b", - "0f0f0f": "0f0f0f", "9c979c": "8f6049", "8ebbb7": "8f6049", "c2e7e9": "b7926b", @@ -23,9 +22,6 @@ "8f99a3": "ceccef", "af9b0a": "b4425a", "f9d800": "ff6767", - "dedfde": "dedfde", - "0f0f0f": "0f0f0f", - "9c979c": "9c979c", "8ebbb7": "ca6d2a", "c2e7e9": "fcb925", "725e16": "2a3064", diff --git a/public/images/pokemon/variant/997.json b/public/images/pokemon/variant/997.json index eb2acdbae7d..f4a3efc5cf4 100644 --- a/public/images/pokemon/variant/997.json +++ b/public/images/pokemon/variant/997.json @@ -6,11 +6,9 @@ "5b6f8a": "2e4042", "7da6a6": "8f6049", "6695e3": "325747", - "0f0f0f": "0f0f0f", "ffd14a": "30d1ff", "da9123": "3b69d3", "4b7a9a": "293b39", - "ffffff": "ffffff", "3a637e": "1e2c2f", "643620": "705c39", "f47d2f": "c5a64d", @@ -23,11 +21,9 @@ "5b6f8a": "524f60", "7da6a6": "ca6d2a", "6695e3": "e6e6eb", - "0f0f0f": "0f0f0f", "ffd14a": "ff6767", "da9123": "b4425a", "4b7a9a": "a09ec1", - "ffffff": "ffffff", "3a637e": "756c98", "643620": "2a3064", "f47d2f": "2984e8", diff --git a/public/images/pokemon/variant/998.json b/public/images/pokemon/variant/998.json index 19257d173aa..4d1a752ab09 100644 --- a/public/images/pokemon/variant/998.json +++ b/public/images/pokemon/variant/998.json @@ -11,7 +11,6 @@ "3a4149": "413c41", "f7c600": "30d1ff", "262426": "2a272c", - "141414": "141414", "8d292c": "705c39", "ea3745": "c5a64d" }, @@ -27,7 +26,6 @@ "3a4149": "215ecd", "f7c600": "ff6767", "262426": "223992", - "141414": "141414", "8d292c": "33468c", "ea3745": "2984e8" } diff --git a/public/images/pokemon/variant/999.json b/public/images/pokemon/variant/999.json index a0cbb5f322a..b6c95c3db01 100644 --- a/public/images/pokemon/variant/999.json +++ b/public/images/pokemon/variant/999.json @@ -6,7 +6,6 @@ "545b6b": "1e2e60", "ddc126": "d52d70", "783a52": "4b0f01", - "0f0f0f": "0f0f0f", "ac4454": "ab461e", "bfa33e": "bc1457", "8a8f9f": "34497e", @@ -23,13 +22,10 @@ "545b6b": "415073", "ddc126": "728295", "783a52": "4f2e5c", - "0f0f0f": "0f0f0f", "ac4454": "794e83", "bfa33e": "485466", "8a8f9f": "8bb0ab", "b9becd": "afd2ca", - "bac4d8": "bac4d8", - "7a82a9": "7a82a9", "a59227": "9c9cbe", "745527": "302d62" }, @@ -40,13 +36,10 @@ "545b6b": "6467a8", "ddc126": "4e85bf", "783a52": "6d6594", - "0f0f0f": "0f0f0f", "ac4454": "bcb9d6", "bfa33e": "294f7e", "8a8f9f": "a5ace8", "b9becd": "dae0f3", - "bac4d8": "bac4d8", - "7a82a9": "7a82a9", "a59227": "b6d0d7", "745527": "1c394d" } diff --git a/public/images/pokemon/variant/back/1.json b/public/images/pokemon/variant/back/1.json index 895bcad4e6d..81843438dfe 100644 --- a/public/images/pokemon/variant/back/1.json +++ b/public/images/pokemon/variant/back/1.json @@ -6,10 +6,8 @@ "bdff73": "ffc5a3", "a5d642": "ff745e", "63d6b5": "de3570", - "101010": "101010", "73ad31": "b34952", - "3a9494": "9c195c", - "ffffff": "ffffff" + "3a9494": "9c195c" }, "2": { "526329": "022e59", @@ -18,9 +16,7 @@ "bdff73": "befaf1", "a5d642": "80c3d9", "63d6b5": "faac05", - "101010": "101010", "73ad31": "446b94", - "3a9494": "d46d00", - "ffffff": "ffffff" + "3a9494": "d46d00" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/100.json b/public/images/pokemon/variant/back/100.json index 6203c3cfa54..ed53410ee28 100644 --- a/public/images/pokemon/variant/back/100.json +++ b/public/images/pokemon/variant/back/100.json @@ -1,6 +1,5 @@ { "1": { - "841010": "841010", "ffad9c": "fffdd7", "ff845a": "ffd86f", "ff5221": "f0b64a", @@ -8,8 +7,7 @@ "d63142": "c76d14", "b5adbd": "d6b0a5", "ded6d6": "f7e4da", - "ffffff": "fffdfb", - "101010": "101010" + "ffffff": "fffdfb" }, "2": { "841010": "27145d", @@ -20,7 +18,6 @@ "d63142": "482683", "b5adbd": "94b1c9", "ded6d6": "cde3ef", - "ffffff": "f3fdff", - "101010": "101010" + "ffffff": "f3fdff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/1000.json b/public/images/pokemon/variant/back/1000.json index 8149392d9b6..4f27d5ea595 100644 --- a/public/images/pokemon/variant/back/1000.json +++ b/public/images/pokemon/variant/back/1000.json @@ -1,7 +1,6 @@ { "0": { "b78234": "a64700", - "121212": "121212", "e0b81a": "d05c31", "f9d95b": "ee883f", "623c20": "6d1906", @@ -11,12 +10,10 @@ "762534": "5d0d05", "9c3e43": "6d1906", "323437": "531f03", - "545b6b": "8f4a14", - "0f0f0f": "0f0f0f" + "545b6b": "8f4a14" }, "1": { "b78234": "7a4e5d", - "121212": "121212", "e0b81a": "96747e", "f9d95b": "e1ced1", "623c20": "622f43", @@ -26,22 +23,18 @@ "762534": "513a59", "9c3e43": "7f6086", "323437": "1d2c54", - "545b6b": "415073", - "0f0f0f": "0f0f0f" + "545b6b": "415073" }, "2": { "b78234": "5a9aa3", - "121212": "121212", "e0b81a": "89d1d6", "f9d95b": "e5fffc", "623c20": "3d717b", - "ffffff": "ffffff", "b4a45e": "36465f", "918344": "1f3149", "762534": "547995", "9c3e43": "7e93b0", "323437": "212857", - "545b6b": "495890", - "0f0f0f": "0f0f0f" + "545b6b": "495890" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/1001.json b/public/images/pokemon/variant/back/1001.json index 4aa4f62bf62..e98d729116e 100644 --- a/public/images/pokemon/variant/back/1001.json +++ b/public/images/pokemon/variant/back/1001.json @@ -7,7 +7,6 @@ "8c979d": "a19775", "a28b76": "383734", "7e615a": "1f1e1c", - "0f0f0f": "0f0f0f", "618044": "9e4b28", "76b458": "de7e52", "524a36": "6e4105", @@ -22,7 +21,6 @@ "8c979d": "9f88b3", "a28b76": "fce6f0", "7e615a": "e6aec8", - "0f0f0f": "0f0f0f", "618044": "e170a1", "76b458": "f5bede", "524a36": "420f0f", diff --git a/public/images/pokemon/variant/back/1003.json b/public/images/pokemon/variant/back/1003.json index a7216e678f1..10746b80ec9 100644 --- a/public/images/pokemon/variant/back/1003.json +++ b/public/images/pokemon/variant/back/1003.json @@ -4,7 +4,6 @@ "a6b4a7": "e7cb7e", "73958b": "daa666", "486863": "be8550", - "0f0f0f": "0f0f0f", "5e4622": "352831", "5c3127": "861d0f", "8c6140": "ff7d59", @@ -19,7 +18,6 @@ "a6b4a7": "cfa0f3", "73958b": "8d6acc", "486863": "6c4aac", - "0f0f0f": "0f0f0f", "5e4622": "434377", "5c3127": "313246", "8c6140": "767a7e", diff --git a/public/images/pokemon/variant/back/1004.json b/public/images/pokemon/variant/back/1004.json index 16c69b047b5..8e2df2d0163 100644 --- a/public/images/pokemon/variant/back/1004.json +++ b/public/images/pokemon/variant/back/1004.json @@ -2,7 +2,6 @@ "1": { "a23724": "b06f00", "f4342f": "f2b200", - "0f0f0f": "0f0f0f", "f35e38": "ffc81b", "f9824f": "ffe13a", "f0a755": "ffe86b", @@ -13,13 +12,11 @@ "5b985a": "5c71c1", "83b884": "7a9ae0", "3c3f3a": "27276a", - "487447": "394d9a", - "f8f8f0": "f8f8f0" + "487447": "394d9a" }, "2": { "a23724": "76074d", "f4342f": "a525d3", - "0f0f0f": "0f0f0f", "f35e38": "3449f6", "f9824f": "49c9f6", "f0a755": "79f6a1", @@ -30,7 +27,6 @@ "5b985a": "b09f97", "83b884": "d7cbb5", "3c3f3a": "4b4444", - "487447": "84736f", - "f8f8f0": "f8f8f0" + "487447": "84736f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/1006.json b/public/images/pokemon/variant/back/1006.json index c03a810dcec..04d4a5e9aae 100644 --- a/public/images/pokemon/variant/back/1006.json +++ b/public/images/pokemon/variant/back/1006.json @@ -3,8 +3,6 @@ "293549": "2a224e", "6db1b5": "585995", "4a8484": "3e2d63", - "f8f8f8": "f8f8f8", - "030303": "030303", "214c1f": "483d5c", "59b56a": "c2c8dc", "3f845a": "79728e", @@ -13,7 +11,6 @@ "b0accf": "27678e", "ff5098": "a5ffd4", "fcfcfc": "36a5aa", - "81899c": "81899c", "eeb1dd": "fbfffc", "585f6a": "2a224e" } diff --git a/public/images/pokemon/variant/back/1008-ultimate-mode.json b/public/images/pokemon/variant/back/1008-ultimate-mode.json index ce46761068e..300c4e5fae9 100644 --- a/public/images/pokemon/variant/back/1008-ultimate-mode.json +++ b/public/images/pokemon/variant/back/1008-ultimate-mode.json @@ -1,56 +1,43 @@ { "0": { "4ba5cf": "8955b5", - "fefefe": "fefefe", "d7c2c1": "d7c3f7", "c883d1": "7fd8cf", - "0e0e12": "0e0e12", "1a1c42": "393a3e", "5c4370": "3e446d", "fcdf14": "427eff", - "e6e3f2": "e6e3f2", - "878594": "878594", "4d3672": "858585", - "c1bddf": "c1bddf", "643fa3": "c8c8c8", "392855": "616161", - "2e3176": "868686", - "25173d": "25173d" + "2e3176": "868686" }, "1": { "4ba5cf": "31808e", "fefefe": "ffffc9", "d7c2c1": "b3e2d0", "c883d1": "ade263", - "0e0e12": "0e0e12", "1a1c42": "184433", "5c4370": "3b5c63", "fcdf14": "2cc151", - "e6e3f2": "e6e3f2", "878594": "89a5ff", "4d3672": "444b66", "c1bddf": "b7d8ff", "643fa3": "626877", "392855": "393e51", - "2e3176": "3aff75", - "25173d": "25173d" + "2e3176": "3aff75" }, "2": { "4ba5cf": "8e3c84", "fefefe": "ffd8ff", "d7c2c1": "ff93d4", "c883d1": "ffc26d", - "0e0e12": "0e0e12", "1a1c42": "29253f", - "5c4370": "5c4370", "fcdf14": "cc5767", - "e6e3f2": "e6e3f2", "878594": "ad9e9d", "4d3672": "2a3768", "c1bddf": "e0e0e0", "643fa3": "3b4986", "392855": "192142", - "2e3176": "cf3e57", - "25173d": "25173d" + "2e3176": "cf3e57" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/101.json b/public/images/pokemon/variant/back/101.json index 0dad4f6c88d..73e31735422 100644 --- a/public/images/pokemon/variant/back/101.json +++ b/public/images/pokemon/variant/back/101.json @@ -3,28 +3,23 @@ "5a5252": "683f3c", "efefef": "f7e4da", "cecede": "d6b0a5", - "101010": "101010", "a59c9c": "8f7a6f", - "f7a58c": "f7a58c", "d68494": "d59679", "ff5221": "f0b64a", "e63a31": "dd932b", "c52942": "c76d14", - "841010": "983d00", - "ffffff": "ffffff" + "841010": "983d00" }, "2": { "5a5252": "384c6a", "efefef": "cde3ef", "cecede": "94b1c9", - "101010": "101010", "a59c9c": "7993b1", "f7a58c": "c27bec", "d68494": "887db5", "ff5221": "7240a2", "e63a31": "5c3295", "c52942": "482683", - "841010": "27145d", - "ffffff": "ffffff" + "841010": "27145d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/1010.json b/public/images/pokemon/variant/back/1010.json index bc8248c6576..e0fed348d1e 100644 --- a/public/images/pokemon/variant/back/1010.json +++ b/public/images/pokemon/variant/back/1010.json @@ -1,6 +1,5 @@ { "1": { - "0b0b0b": "0b0b0b", "1e5238": "63193a", "39804b": "943a5a", "69b95b": "d6637b", @@ -11,11 +10,9 @@ "343631": "313436", "c0c1be": "bec1c0", "ff5f7c": "638c10", - "ffb2c0": "9cce52", - "1d1d1c": "1d1d1c" + "ffb2c0": "9cce52" }, "2": { - "0b0b0b": "0b0b0b", "1e5238": "834b04", "39804b": "a4790a", "69b95b": "bba010", @@ -26,7 +23,6 @@ "343631": "54544c", "c0c1be": "eeeeee", "ff5f7c": "e565fd", - "ffb2c0": "eeeeee", - "1d1d1c": "1d1d1c" + "ffb2c0": "eeeeee" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/1018.json b/public/images/pokemon/variant/back/1018.json index 70f9c5a2f50..a3748b6b543 100644 --- a/public/images/pokemon/variant/back/1018.json +++ b/public/images/pokemon/variant/back/1018.json @@ -2,7 +2,6 @@ "1": { "7a3d3e": "871e14", "c94747": "ed7746", - "151515": "151515", "101d3a": "081f16", "243c79": "1d542f", "295098": "3b814a", @@ -19,12 +18,8 @@ "2": { "7a3d3e": "062449", "c94747": "2077a6", - "151515": "151515", "101d3a": "062449", - "243c79": "243c79", - "295098": "295098", "544a6f": "1a0e34", - "1e2c59": "1e2c59", "ffdf9d": "6df4ff", "bb7944": "28b9dc", "e0e0ed": "8075c1", diff --git a/public/images/pokemon/variant/back/1023.json b/public/images/pokemon/variant/back/1023.json index 09ce8fa2132..9ef53b06171 100644 --- a/public/images/pokemon/variant/back/1023.json +++ b/public/images/pokemon/variant/back/1023.json @@ -2,35 +2,29 @@ "1": { "89570c": "52766a", "00a6ad": "92c72a", - "050505": "050505", "f0c720": "c5f6e6", "62f7f7": "bcfb3f", "b4961f": "88b8a8", - "f9ffff": "f9ffff", "163d43": "133453", "45cbc8": "5ca6ea", "389cad": "3673aa", "206477": "285883", "858ca7": "7b7b7b", "c9cfda": "bdbdbd", - "242322": "242322", "454a54": "4f4d4d" }, "2": { "89570c": "627675", "00a6ad": "852098", - "050505": "050505", "f0c720": "b6d4d2", "62f7f7": "d046e8", "b4961f": "9bb4b3", - "f9ffff": "f9ffff", "163d43": "5c3c06", "45cbc8": "d9cd25", "389cad": "c1991d", "206477": "94670d", "858ca7": "a9a7a2", "c9cfda": "d5d5d1", - "242322": "242322", "454a54": "72716d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/111.json b/public/images/pokemon/variant/back/111.json index 24a94b7145d..27474254759 100644 --- a/public/images/pokemon/variant/back/111.json +++ b/public/images/pokemon/variant/back/111.json @@ -4,19 +4,13 @@ "bdbdce": "6a547a", "8484ad": "402f51", "3a3a52": "261e2d", - "101010": "101010", - "e6e6ef": "9781ab", - "ffffff": "ffffff", - "ad3a29": "ad3a29" + "e6e6ef": "9781ab" }, "2": { "5a5a7b": "ab4355", "bdbdce": "e18db3", "8484ad": "d76688", "3a3a52": "6d2935", - "101010": "101010", - "e6e6ef": "f7b4d1", - "ffffff": "ffffff", - "ad3a29": "ad3a29" + "e6e6ef": "f7b4d1" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/112.json b/public/images/pokemon/variant/back/112.json index c983447afce..b1ad7e99b19 100644 --- a/public/images/pokemon/variant/back/112.json +++ b/public/images/pokemon/variant/back/112.json @@ -3,24 +3,18 @@ "52525a": "3c2945", "c5c5bd": "6a547a", "8c8c94": "523c5c", - "101010": "101010", "e6e6de": "9781ab", "735a31": "6b6373", "e6d6ad": "cecede", - "b5a573": "948cad", - "ffffff": "ffffff", - "e6523a": "e6523a" + "b5a573": "948cad" }, "2": { "52525a": "642224", "c5c5bd": "cb568a", "8c8c94": "ab3f5c", - "101010": "101010", "e6e6de": "ef86b5", "735a31": "6d586d", "e6d6ad": "dacad3", - "b5a573": "be9bb6", - "ffffff": "ffffff", - "e6523a": "e6523a" + "b5a573": "be9bb6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/113.json b/public/images/pokemon/variant/back/113.json index 1d1a74731c7..2f83d9e4ab0 100644 --- a/public/images/pokemon/variant/back/113.json +++ b/public/images/pokemon/variant/back/113.json @@ -4,7 +4,6 @@ "ffd6d6": "f6caec", "ffadad": "cc96c5", "8c4242": "6b279e", - "101010": "101010", "ff845a": "c164e4", "ef5a31": "953fc7" }, @@ -13,7 +12,6 @@ "ffd6d6": "f8c8e3", "ffadad": "e5a5ce", "8c4242": "61020c", - "101010": "101010", "ff845a": "d33128", "ef5a31": "a3091a" }, @@ -22,7 +20,6 @@ "ffd6d6": "d7baec", "ffadad": "ac8fc4", "8c4242": "204b7d", - "101010": "101010", "ff845a": "567bbf", "ef5a31": "204b7d" } diff --git a/public/images/pokemon/variant/back/114.json b/public/images/pokemon/variant/back/114.json index 9b04d485b01..b24b70c2032 100644 --- a/public/images/pokemon/variant/back/114.json +++ b/public/images/pokemon/variant/back/114.json @@ -2,7 +2,6 @@ "1": { "214252": "442152", "5aa5ce": "755ace", - "101010": "101010", "94d6f7": "a479ff", "427b94": "654294", "732929": "2b7329", @@ -12,7 +11,6 @@ "2": { "214252": "705040", "5aa5ce": "ebc582", - "101010": "101010", "94d6f7": "ffedb6", "427b94": "ad875a", "732929": "332119", diff --git a/public/images/pokemon/variant/back/116.json b/public/images/pokemon/variant/back/116.json index f19c6b2b98e..e36ac1629fa 100644 --- a/public/images/pokemon/variant/back/116.json +++ b/public/images/pokemon/variant/back/116.json @@ -3,10 +3,7 @@ "3a5263": "1f4f3e", "a5c5ef": "5bab65", "6b94b5": "3d7b4f", - "101010": "101010", - "ffffff": "ffffff", "c52929": "34b9af", - "d6d6d6": "d6d6d6", "bddeff": "7ed683", "9c844a": "548133", "dec54a": "91bf49", @@ -16,10 +13,7 @@ "3a5263": "cf7d3a", "a5c5ef": "ffe675", "6b94b5": "edb766", - "101010": "101010", - "ffffff": "ffffff", "c52929": "9973c7", - "d6d6d6": "d6d6d6", "bddeff": "fffaa1", "9c844a": "314e5e", "dec54a": "4e878a", diff --git a/public/images/pokemon/variant/back/117.json b/public/images/pokemon/variant/back/117.json index ff7bebd575a..49ff752ece2 100644 --- a/public/images/pokemon/variant/back/117.json +++ b/public/images/pokemon/variant/back/117.json @@ -1,28 +1,22 @@ { "1": { "7b6321": "3f8a49", - "101010": "101010", "ffffad": "b5e37f", "dec552": "87c563", "4a6b84": "143c4f", "21425a": "122647", "a5cee6": "45b38f", "84adce": "2e8b7b", - "6b849c": "185461", - "ffffff": "ffffff", - "9c9c9c": "9c9c9c" + "6b849c": "185461" }, "2": { "7b6321": "4e878a", - "101010": "101010", "ffffad": "b3f2d8", "dec552": "7bc9bb", "4a6b84": "c74c4c", "21425a": "702525", "a5cee6": "ffd166", "84adce": "ffab66", - "6b849c": "f2705c", - "ffffff": "ffffff", - "9c9c9c": "9c9c9c" + "6b849c": "f2705c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/118.json b/public/images/pokemon/variant/back/118.json index 9f221892b82..ff3e6b6af61 100644 --- a/public/images/pokemon/variant/back/118.json +++ b/public/images/pokemon/variant/back/118.json @@ -2,7 +2,6 @@ "0": { "52525a": "734733", "ffffff": "fff7ee", - "101010": "101010", "8c8c94": "966f58", "efefef": "e7d7c9", "d6d6de": "cbb7aa", @@ -17,7 +16,6 @@ "1": { "52525a": "492d5c", "ffffff": "e7d1ea", - "101010": "101010", "8c8c94": "6c5277", "efefef": "b9a0bf", "d6d6de": "947c9c", @@ -32,7 +30,6 @@ "2": { "52525a": "2b4a54", "ffffff": "d5e6e4", - "101010": "101010", "8c8c94": "526d71", "efefef": "aecac8", "d6d6de": "84a0a1", diff --git a/public/images/pokemon/variant/back/119.json b/public/images/pokemon/variant/back/119.json index 058ebc50e1c..2af5fde5a79 100644 --- a/public/images/pokemon/variant/back/119.json +++ b/public/images/pokemon/variant/back/119.json @@ -3,8 +3,6 @@ "8c7b84": "966f58", "f7f7ff": "fff7ee", "dedee6": "e7d7c9", - "ffdebd": "ffdebd", - "101010": "101010", "943119": "794708", "c54229": "d6952e", "52525a": "522b23", @@ -18,7 +16,6 @@ "f7f7ff": "e7d1ea", "dedee6": "b9a0bf", "ffdebd": "bd9fc6", - "101010": "101010", "943119": "39195d", "c54229": "7e3eb1", "52525a": "39195d", @@ -32,7 +29,6 @@ "f7f7ff": "d5e6e4", "dedee6": "aecac8", "ffdebd": "b8cecd", - "101010": "101010", "943119": "174027", "c54229": "32723f", "52525a": "2b4a54", diff --git a/public/images/pokemon/variant/back/120.json b/public/images/pokemon/variant/back/120.json index 3b40ba1cfd8..3efc6d5cdcf 100644 --- a/public/images/pokemon/variant/back/120.json +++ b/public/images/pokemon/variant/back/120.json @@ -1,7 +1,6 @@ { "1": { "633131": "07293b", - "000000": "000000", "9c6b3a": "1b7272", "deb563": "4bd09b", "7b523a": "0f4c58", @@ -13,7 +12,6 @@ }, "2": { "633131": "1d5198", - "000000": "000000", "9c6b3a": "3eb7e5", "deb563": "9cffff", "7b523a": "2c81bc", diff --git a/public/images/pokemon/variant/back/121.json b/public/images/pokemon/variant/back/121.json index 7679498bfa0..fcd42e83f1a 100644 --- a/public/images/pokemon/variant/back/121.json +++ b/public/images/pokemon/variant/back/121.json @@ -4,15 +4,13 @@ "313a73": "631c26", "d6adef": "ffc5b4", "8c73bd": "de6262", - "b58cd6": "ee9494", - "000000": "000000" + "b58cd6": "ee9494" }, "2": { "5a529c": "9eb4ff", "313a73": "597cdb", "d6adef": "ffffff", "8c73bd": "c5d5ff", - "b58cd6": "d6e8ff", - "000000": "000000" + "b58cd6": "d6e8ff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/123.json b/public/images/pokemon/variant/back/123.json index 81f615bcd45..e937d728471 100644 --- a/public/images/pokemon/variant/back/123.json +++ b/public/images/pokemon/variant/back/123.json @@ -5,43 +5,22 @@ "e6d6ad": "b5b5ce", "9c8c31": "632929", "8cce73": "f76b6b", - "101010": "101010", "fff7d6": "ffffff", "5a9c4a": "d63a3a", - "bdbdbd": "bdbdbd", - "c5a573": "b5b5ce", - "dedede": "dedede", - "ffffff": "ffffff", - "737373": "737373" + "c5a573": "b5b5ce" }, "1": { "425a21": "484e75", "bde673": "bdbdbd", - "e6d6ad": "e6d6ad", - "9c8c31": "9c8c31", "8cce73": "92b0db", - "101010": "101010", - "fff7d6": "fff7d6", "5a9c4a": "7b94d6", "bdbdbd": "ffffff", - "c5a573": "9cc5ff", - "dedede": "dedede", - "ffffff": "ffffff", - "737373": "737373" + "c5a573": "9cc5ff" }, "2": { "425a21": "8f3907", "bde673": "f8f581", - "e6d6ad": "e6d6ad", - "9c8c31": "9c8c31", "8cce73": "f0c947", - "101010": "101010", - "fff7d6": "fff7d6", - "5a9c4a": "e6a027", - "bdbdbd": "bdbdbd", - "c5a573": "c5a573", - "dedede": "dedede", - "ffffff": "ffffff", - "737373": "737373" + "5a9c4a": "e6a027" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/125.json b/public/images/pokemon/variant/back/125.json index 8933b2e4c58..9e2994e265d 100644 --- a/public/images/pokemon/variant/back/125.json +++ b/public/images/pokemon/variant/back/125.json @@ -2,25 +2,20 @@ "0": { "5a4a08": "752c0b", "ffe63a": "ff8b3a", - "101010": "101010", "e6c521": "e66a21", "c5a510": "b34d2b", "fff7b5": "ffd4b5", "3a4252": "3f3a52", "6b6b63": "57526e", - "ffffff": "ffffff", "c5c5d6": "c8c5d6" }, "1": { "5a4a08": "235c3c", "ffe63a": "59f7d0", - "101010": "101010", "e6c521": "43e6b7", "c5a510": "2dbd73", "fff7b5": "c8ffea", "3a4252": "424554", - "6b6b63": "6a6982", - "ffffff": "ffffff", - "c5c5d6": "c5c5d6" + "6b6b63": "6a6982" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/126.json b/public/images/pokemon/variant/back/126.json index c636ff760ad..e96a2a1866e 100644 --- a/public/images/pokemon/variant/back/126.json +++ b/public/images/pokemon/variant/back/126.json @@ -4,13 +4,9 @@ "ffef4a": "eaffff", "7b5231": "699296", "e6bd31": "c6edf2", - "636363": "636363", - "ffffff": "ffffff", "ff4a31": "5398cf", "ce1042": "4065b0", "6b2121": "303d58", - "c5c5c5": "c5c5c5", - "000000": "000000", "ff8c63": "81c9e6", "ee442d": "5398cf", "ffcebd": "cabac8", diff --git a/public/images/pokemon/variant/back/127-mega.json b/public/images/pokemon/variant/back/127-mega.json index 855390b8f37..fa6cade9e21 100644 --- a/public/images/pokemon/variant/back/127-mega.json +++ b/public/images/pokemon/variant/back/127-mega.json @@ -4,33 +4,21 @@ "847163": "7e5649", "d6c7b5": "d29f88", "efe7ce": "eccb90", - "000000": "000000", - "ee8329": "ee8329", - "cd5241": "cd5241", "5a4131": "172a22", "c6ae8c": "72988e", "a58e6b": "54796f", "846952": "3b554d", - "ffde62": "ffde62", - "ac9441": "ac9441", - "837362": "7e5649", - "ffffff": "ffffff" + "837362": "7e5649" }, "2": { "4a4139": "484848", "847163": "868686", "d6c7b5": "d5d5d5", "efe7ce": "ffffff", - "000000": "000000", - "ee8329": "ee8329", - "cd5241": "cd5241", "5a4131": "5c0026", "c6ae8c": "d56a70", "a58e6b": "b44954", "846952": "8c2c40", - "ffde62": "ffde62", - "ac9441": "ac9441", - "837362": "868686", - "ffffff": "ffffff" + "837362": "868686" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/127.json b/public/images/pokemon/variant/back/127.json index f49fb93e217..c094c7713de 100644 --- a/public/images/pokemon/variant/back/127.json +++ b/public/images/pokemon/variant/back/127.json @@ -5,13 +5,11 @@ "efe6ce": "eccb90", "4a423a": "441a0f", "d6c5b5": "d29f88", - "000000": "000000", "5a4231": "172a22", "e6d6b5": "92bab1", "c5ad8c": "72988e", "846b52": "3b554d", - "a58c6b": "54796f", - "ffffff": "ffffff" + "a58c6b": "54796f" }, "2": { "b5a594": "b7b7b7", @@ -19,12 +17,10 @@ "efe6ce": "ffffff", "4a423a": "484848", "d6c5b5": "d5d5d5", - "000000": "000000", "5a4231": "5c0026", "e6d6b5": "fa958c", "c5ad8c": "d56a70", "846b52": "8c2c40", - "a58c6b": "b44954", - "ffffff": "ffffff" + "a58c6b": "b44954" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/129.json b/public/images/pokemon/variant/back/129.json index d73f104ed91..7e9821bf337 100644 --- a/public/images/pokemon/variant/back/129.json +++ b/public/images/pokemon/variant/back/129.json @@ -1,7 +1,6 @@ { "1": { "7b6352": "a6452e", - "000000": "000000", "ffde29": "f0a475", "c5ad73": "d0784b", "840042": "312b45", @@ -17,7 +16,6 @@ }, "2": { "7b6352": "94836f", - "000000": "000000", "ffde29": "fffef3", "c5ad73": "e2d9c0", "840042": "6c0261", @@ -28,7 +26,6 @@ "ceced6": "d1bae7", "ffffff": "f9efff", "525263": "74619a", - "8c8ca5": "af97ce", - "ffefa5": "ffefa5" + "8c8ca5": "af97ce" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/130-mega.json b/public/images/pokemon/variant/back/130-mega.json index 1e091a7a55f..47217f75dc6 100644 --- a/public/images/pokemon/variant/back/130-mega.json +++ b/public/images/pokemon/variant/back/130-mega.json @@ -5,15 +5,10 @@ "44b4f4": "eea747", "826c4d": "90665d", "f8eaba": "fff3ec", - "0d0d0d": "0d0d0d", "cdac7b": "bd9b8e", "992137": "8691d5", "e6414a": "c9d4ff", - "202020": "202020", - "2b2d33": "682a23", - "3c3f47": "3c3f47", - "c3c3c3": "c3c3c3", - "202226": "202226" + "2b2d33": "682a23" }, "2": { "207cc1": "582c81", @@ -21,14 +16,10 @@ "44b4f4": "7b43a1", "826c4d": "855a71", "f8eaba": "ffedf4", - "0d0d0d": "0d0d0d", "cdac7b": "d7aec0", "992137": "a62869", "e6414a": "e15693", - "202020": "202020", - "2b2d33": "2b2d33", "3c3f47": "c07d4a", - "c3c3c3": "ddb07a", - "202226": "202226" + "c3c3c3": "ddb07a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/130.json b/public/images/pokemon/variant/back/130.json index 088d8ca68c4..50f4527f1d7 100644 --- a/public/images/pokemon/variant/back/130.json +++ b/public/images/pokemon/variant/back/130.json @@ -2,20 +2,17 @@ "1": { "737b7b": "93776f", "f7f7f7": "fff3ec", - "191919": "191919", "d6def7": "d2bdb4", "194273": "873503", "218cad": "cd7c1b", "196394": "a85104", "42b5ef": "f2aa45", "f7e6ad": "fff3ec", - "ceb57b": "bd9b8e", - "5a4221": "5a4221" + "ceb57b": "bd9b8e" }, "2": { "737b7b": "ad6c94", "f7f7f7": "ffe8f4", - "191919": "191919", "d6def7": "f3c3de", "194273": "1f0a47", "218cad": "5e2b97", diff --git a/public/images/pokemon/variant/back/131-gigantamax.json b/public/images/pokemon/variant/back/131-gigantamax.json index 99ccd7f45d5..4b15e8f581a 100644 --- a/public/images/pokemon/variant/back/131-gigantamax.json +++ b/public/images/pokemon/variant/back/131-gigantamax.json @@ -3,14 +3,11 @@ "184152": "133363", "41a4e6": "85cfef", "73c5f6": "ffc0e7", - "101010": "101010", "397ba4": "3989b0", - "fffad6": "fffad6", "51fffb": "ff8de5", "8ba494": "a7b2ab", "52526a": "3c1838", "dec583": "dac99e", - "fefefe": "fefefe", "d5cdc5": "cb88b0", "a49494": "844a73", "807573": "6b3768", @@ -20,14 +17,11 @@ "184152": "06383e", "41a4e6": "49b18c", "73c5f6": "8bd3b6", - "101010": "101010", "397ba4": "3a8770", - "fffad6": "fffad6", "51fffb": "0085b2", "8ba494": "8ca594", "52526a": "282548", "dec583": "baafaa", - "fefefe": "fefefe", "d5cdc5": "969dbc", "a49494": "666b8b", "807573": "454565", diff --git a/public/images/pokemon/variant/back/131.json b/public/images/pokemon/variant/back/131.json index fc364e9a423..4f39e2730c6 100644 --- a/public/images/pokemon/variant/back/131.json +++ b/public/images/pokemon/variant/back/131.json @@ -2,15 +2,12 @@ "1": { "194252": "133363", "73c5f7": "c4f6ff", - "000000": "000000", "42a5e6": "85cfef", "3a7ba5": "408aaf", - "f7efe6": "f7efe6", "6b5219": "b83e94", "d6cec5": "cb88b0", "8ca594": "a7b2ab", "dec584": "dac99e", - "5a4a42": "5a4a42", "52526b": "51264d", "a59494": "844a73", "f7dead": "f1e9d9" @@ -18,13 +15,10 @@ "2": { "194252": "06383e", "73c5f7": "8bd3b6", - "000000": "000000", "42a5e6": "49b18c", "3a7ba5": "3a8770", - "f7efe6": "f7efe6", "6b5219": "256fc4", "d6cec5": "8289a9", - "8ca594": "8ca594", "dec584": "baafaa", "5a4a42": "574e49", "52526b": "262641", diff --git a/public/images/pokemon/variant/back/132.json b/public/images/pokemon/variant/back/132.json index f4ef6e8444a..c7f568267c8 100644 --- a/public/images/pokemon/variant/back/132.json +++ b/public/images/pokemon/variant/back/132.json @@ -4,15 +4,13 @@ "5a1994": "2a6d20", "b56bce": "6ab33c", "e6a5f7": "d5ea79", - "c57be6": "9dce55", - "000000": "000000" + "c57be6": "9dce55" }, "2": { "9c5ab5": "131432", "5a1994": "0e0c1c", "b56bce": "1f2345", "e6a5f7": "486195", - "c57be6": "2b3154", - "000000": "000000" + "c57be6": "2b3154" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/133-partner.json b/public/images/pokemon/variant/back/133-partner.json index d48eaad4364..c647162304a 100644 --- a/public/images/pokemon/variant/back/133-partner.json +++ b/public/images/pokemon/variant/back/133-partner.json @@ -4,7 +4,6 @@ "523121": "0b1145", "d69c4a": "90c1f1", "a5634a": "5982b7", - "000000": "000000", "ffe6ad": "d7ebff", "bd9c7b": "5f6f94", "e6c594": "8ca8d2" @@ -14,7 +13,6 @@ "523121": "461144", "d69c4a": "bf88cb", "a5634a": "915ea3", - "000000": "000000", "ffe6ad": "f3e6e3", "bd9c7b": "a07c83", "e6c594": "cfa7a9" diff --git a/public/images/pokemon/variant/back/133.json b/public/images/pokemon/variant/back/133.json index d48eaad4364..c647162304a 100644 --- a/public/images/pokemon/variant/back/133.json +++ b/public/images/pokemon/variant/back/133.json @@ -4,7 +4,6 @@ "523121": "0b1145", "d69c4a": "90c1f1", "a5634a": "5982b7", - "000000": "000000", "ffe6ad": "d7ebff", "bd9c7b": "5f6f94", "e6c594": "8ca8d2" @@ -14,7 +13,6 @@ "523121": "461144", "d69c4a": "bf88cb", "a5634a": "915ea3", - "000000": "000000", "ffe6ad": "f3e6e3", "bd9c7b": "a07c83", "e6c594": "cfa7a9" diff --git a/public/images/pokemon/variant/back/134.json b/public/images/pokemon/variant/back/134.json index 736a9262847..debdf1e028b 100644 --- a/public/images/pokemon/variant/back/134.json +++ b/public/images/pokemon/variant/back/134.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "104a63": "26185f", "bdad5a": "a26b30", "107394": "372194", @@ -11,7 +10,6 @@ "84deff": "c497e5" }, "2": { - "101010": "101010", "104a63": "742921", "bdad5a": "7d2f67", "107394": "983930", diff --git a/public/images/pokemon/variant/back/135.json b/public/images/pokemon/variant/back/135.json index d54215466ac..16bfbf03121 100644 --- a/public/images/pokemon/variant/back/135.json +++ b/public/images/pokemon/variant/back/135.json @@ -3,11 +3,9 @@ "ad8c3a": "975720", "846b29": "b87130", "ffde52": "eecc94", - "000000": "000000", "cead4a": "e4a254", "5a4a10": "894d17", "4a087b": "126746", - "84848c": "84848c", "525252": "3b3f50", "ffffff": "effffd", "c5c5c5": "aacbc7" @@ -16,11 +14,9 @@ "ad8c3a": "7a6f96", "846b29": "404076", "ffde52": "a8a2c1", - "000000": "000000", "cead4a": "7f7ba7", "5a4a10": "202046", "4a087b": "c08336", - "84848c": "84848c", "525252": "30486d", "ffffff": "c7cedb", "c5c5c5": "8e99b5" @@ -29,13 +25,8 @@ "ad8c3a": "4351d7", "846b29": "3249a6", "ffde52": "90ecee", - "000000": "000000", "cead4a": "47b4e9", "5a4a10": "1f2478", - "4a087b": "7b2817", - "84848c": "84848c", - "525252": "525252", - "ffffff": "ffffff", - "c5c5c5": "c5c5c5" + "4a087b": "7b2817" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/136.json b/public/images/pokemon/variant/back/136.json index 41987721533..0743aed4210 100644 --- a/public/images/pokemon/variant/back/136.json +++ b/public/images/pokemon/variant/back/136.json @@ -1,7 +1,6 @@ { "0": { "732119": "64391a", - "000000": "000000", "f7734a": "e6af4a", "d64252": "b1772e", "735a42": "5e4828", @@ -11,7 +10,6 @@ }, "1": { "732119": "1b5255", - "000000": "000000", "f7734a": "5dde9d", "d64252": "3aad8b", "735a42": "766a5b", @@ -21,7 +19,6 @@ }, "2": { "732119": "4c0013", - "000000": "000000", "f7734a": "b54144", "d64252": "8c2426", "735a42": "2d252a", diff --git a/public/images/pokemon/variant/back/137.json b/public/images/pokemon/variant/back/137.json index 47b4c121ebe..64558c39b24 100644 --- a/public/images/pokemon/variant/back/137.json +++ b/public/images/pokemon/variant/back/137.json @@ -6,11 +6,8 @@ "8cd6ef": "e9635a", "08add6": "ba333b", "f7d6c5": "fccee9", - "ffffff": "ffffff", "ff6363": "f8a8cd", "7b2942": "c5415c", - "000000": "000000", - "c5c5c5": "c5c5c5", "5abde6": "e9635a", "efad9c": "e883a9" }, @@ -24,7 +21,6 @@ "ffffff": "dea27e", "ff6363": "82391d", "7b2942": "280e07", - "000000": "000000", "c5c5c5": "c67f4b", "5abde6": "ffd9ab", "efad9c": "683420" diff --git a/public/images/pokemon/variant/back/138.json b/public/images/pokemon/variant/back/138.json index 8210f144709..7c596218457 100644 --- a/public/images/pokemon/variant/back/138.json +++ b/public/images/pokemon/variant/back/138.json @@ -5,7 +5,6 @@ "e6de84": "e67443", "c5ad73": "d04e2a", "635231": "821e16", - "000000": "000000", "426bad": "602a48", "9ce6f7": "d2a3c2", "63bdf7": "b17aa1", @@ -18,7 +17,6 @@ "e6de84": "404c5f", "c5ad73": "2a344b", "635231": "080a20", - "000000": "000000", "426bad": "1a7e5c", "9ce6f7": "43c787", "63bdf7": "43c787", diff --git a/public/images/pokemon/variant/back/139.json b/public/images/pokemon/variant/back/139.json index 57da8d0b167..53306bfbce9 100644 --- a/public/images/pokemon/variant/back/139.json +++ b/public/images/pokemon/variant/back/139.json @@ -2,27 +2,22 @@ "1": { "635242": "5f1e19", "9c846b": "973b2d", - "000000": "000000", "e6de84": "fdad7d", "c5ad73": "db764a", "426bad": "602a48", "63bdf7": "a36c8a", "3a4284": "380c23", - "3a9cce": "885374", - "424242": "424242", - "fff79c": "fff79c" + "3a9cce": "885374" }, "2": { "635242": "080a1d", "9c846b": "101530", - "000000": "000000", "e6de84": "435370", "c5ad73": "293257", "426bad": "1c624a", "63bdf7": "4dbc86", "3a4284": "03261c", "3a9cce": "37a075", - "424242": "14503b", - "fff79c": "fff79c" + "424242": "14503b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/140.json b/public/images/pokemon/variant/back/140.json index d7466b4908f..b09c8dcc38a 100644 --- a/public/images/pokemon/variant/back/140.json +++ b/public/images/pokemon/variant/back/140.json @@ -2,9 +2,7 @@ "1": { "7b5229": "600006", "d6a552": "bf2512", - "ffffff": "ffffff", "4a2900": "3a000a", - "000000": "000000", "c58429": "9f1105", "a56b29": "870100", "5a4200": "221f7e", @@ -13,9 +11,7 @@ "2": { "7b5229": "140e80", "d6a552": "4b64e6", - "ffffff": "ffffff", "4a2900": "10065f", - "000000": "000000", "c58429": "334dd4", "a56b29": "1d28a5", "5a4200": "f6c09f", diff --git a/public/images/pokemon/variant/back/141.json b/public/images/pokemon/variant/back/141.json index aa6b896fafb..d1909ec4043 100644 --- a/public/images/pokemon/variant/back/141.json +++ b/public/images/pokemon/variant/back/141.json @@ -3,7 +3,6 @@ "4a4a63": "312c85", "ffffff": "c7ceff", "523119": "290105", - "000000": "000000", "e6e6d6": "9da3f7", "cea573": "c23721", "bd8c42": "a82216", @@ -15,7 +14,6 @@ "4a4a63": "8e4f0c", "ffffff": "ffd4bc", "523119": "150453", - "000000": "000000", "e6e6d6": "ffbb8a", "cea573": "4c6be7", "bd8c42": "3c45cc", diff --git a/public/images/pokemon/variant/back/142-mega.json b/public/images/pokemon/variant/back/142-mega.json index 6c0dfdb66be..d768d04c787 100644 --- a/public/images/pokemon/variant/back/142-mega.json +++ b/public/images/pokemon/variant/back/142-mega.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "484848": "922217", "9483a4": "7e494f", "1d1d1d": "3b0101", @@ -11,11 +10,9 @@ "31186a": "671707", "735294": "c54522", "9462cd": "df6d3c", - "f2f2f2": "f2f2f2", "317329": "2150d9" }, "2": { - "101010": "101010", "484848": "20606b", "9483a4": "889dab", "1d1d1d": "041c21", @@ -26,7 +23,6 @@ "31186a": "0c313c", "735294": "1e5e54", "9462cd": "348f78", - "f2f2f2": "f2f2f2", "317329": "c00c39" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/142.json b/public/images/pokemon/variant/back/142.json index 9cdfeb741dd..aae72d2e25b 100644 --- a/public/images/pokemon/variant/back/142.json +++ b/public/images/pokemon/variant/back/142.json @@ -4,12 +4,9 @@ "adadd6": "99686d", "cecee6": "b58788", "9484a5": "76454c", - "000000": "000000", "31196b": "671707", "735294": "c54522", "9463ce": "df6d3c", - "cecece": "cecece", - "ffffff": "ffffff", "317329": "2150d9" }, "2": { @@ -17,12 +14,9 @@ "adadd6": "a8bdcc", "cecee6": "cae0ec", "9484a5": "7c8e9f", - "000000": "000000", "31196b": "0b3433", "735294": "1e5e54", "9463ce": "348f78", - "cecece": "cecece", - "ffffff": "ffffff", "317329": "c00c39" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/144.json b/public/images/pokemon/variant/back/144.json index b7d8968da76..28242c5df86 100644 --- a/public/images/pokemon/variant/back/144.json +++ b/public/images/pokemon/variant/back/144.json @@ -3,51 +3,37 @@ "005273": "461660", "6badf7": "d7adff", "94c5ff": "f1dfff", - "000000": "000000", "4a84d6": "7b42ab", "003152": "461660", "007bbd": "a142c8", - "ffffff": "ffffff", - "cecece": "cecece", "5a3a19": "221531", "bd293a": "2d6cb0", "b59473": "736581", "8c6b52": "372841", - "cee6ff": "f1dfff", - "525252": "525252" + "cee6ff": "f1dfff" }, "1": { "005273": "4d0a3e", "6badf7": "ae5290", "94c5ff": "ffbee5", - "000000": "000000", "4a84d6": "6a1657", "003152": "380334", "007bbd": "ad6297", - "ffffff": "ffffff", - "cecece": "cecece", "5a3a19": "652b0f", - "bd293a": "bd293a", "b59473": "d99c5e", "8c6b52": "a9652f", - "cee6ff": "ffd4e9", - "525252": "525252" + "cee6ff": "ffd4e9" }, "2": { "005273": "904d00", "6badf7": "ffe67c", "94c5ff": "ffecbd", - "000000": "000000", "4a84d6": "e9b93f", "003152": "552b01", "007bbd": "fdc44c", - "ffffff": "ffffff", - "cecece": "cecece", "5a3a19": "492a11", - "bd293a": "bd293a", "b59473": "a08d74", "8c6b52": "7d6447", - "cee6ff": "fff8d7", - "525252": "525252" + "cee6ff": "fff8d7" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/145.json b/public/images/pokemon/variant/back/145.json index cd1b65a8cb7..d530fdb2295 100644 --- a/public/images/pokemon/variant/back/145.json +++ b/public/images/pokemon/variant/back/145.json @@ -7,8 +7,6 @@ "d6ad08": "cc4e17", "c56b19": "513131", "7b6b19": "2f1517", - "6b6b6b": "6b6b6b", - "ffffff": "ffffff", "9c8c31": "643738", "f79419": "6c4645" }, @@ -20,8 +18,6 @@ "d6ad08": "e3b68e", "c56b19": "dd6b10", "7b6b19": "885024", - "6b6b6b": "6b6b6b", - "ffffff": "ffffff", "9c8c31": "a06532", "f79419": "ff9a33" }, @@ -33,8 +29,6 @@ "d6ad08": "a32a71", "c56b19": "c992cb", "7b6b19": "970083", - "6b6b6b": "6b6b6b", - "ffffff": "ffffff", "9c8c31": "ce24a8", "f79419": "ffdeff" } diff --git a/public/images/pokemon/variant/back/146.json b/public/images/pokemon/variant/back/146.json index 55f5cd03506..6bba3ef779d 100644 --- a/public/images/pokemon/variant/back/146.json +++ b/public/images/pokemon/variant/back/146.json @@ -8,13 +8,9 @@ "ffd663": "ff3bac", "de9410": "431d43", "ffef63": "755c73", - "000000": "000000", "523a29": "57004d", "8c634a": "8c0c75", - "ffffff": "ffffff", - "b58c63": "dd2559", - "cecece": "cecece", - "636363": "636363" + "b58c63": "dd2559" }, "1": { "ef633a": "0ab10c", @@ -25,13 +21,9 @@ "ffd663": "fffa4c", "de9410": "c2b562", "ffef63": "feffe1", - "000000": "000000", "523a29": "840000", "8c634a": "ad1910", - "ffffff": "ffffff", - "b58c63": "de423a", - "cecece": "cecece", - "636363": "636363" + "b58c63": "de423a" }, "2": { "ef633a": "1377b3", @@ -42,12 +34,8 @@ "ffd663": "68fffd", "de9410": "58abdb", "ffef63": "dae9ff", - "000000": "000000", "523a29": "3e0b03", "8c634a": "78230b", - "ffffff": "ffffff", - "b58c63": "b05329", - "cecece": "cecece", - "636363": "636363" + "b58c63": "b05329" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/147.json b/public/images/pokemon/variant/back/147.json index 3373e281cc0..99ae600c1b0 100644 --- a/public/images/pokemon/variant/back/147.json +++ b/public/images/pokemon/variant/back/147.json @@ -2,7 +2,6 @@ "1": { "5a5a5a": "54787d", "9c948c": "79a2a3", - "000000": "000000", "ffffff": "def1ef", "ded6de": "a2c7c7", "5a63bd": "b24729", @@ -13,7 +12,6 @@ "2": { "5a5a5a": "8c7270", "9c948c": "c2a7a3", - "000000": "000000", "ffffff": "fff5f0", "ded6de": "dfc8c2", "5a63bd": "328f97", diff --git a/public/images/pokemon/variant/back/148.json b/public/images/pokemon/variant/back/148.json index db6cfd69857..a6b498ff215 100644 --- a/public/images/pokemon/variant/back/148.json +++ b/public/images/pokemon/variant/back/148.json @@ -8,7 +8,6 @@ "193173": "90150c", "7badff": "ffad67", "5a8cef": "f48c59", - "000000": "000000", "425aff": "359bbd", "7bceff": "61cce2", "19297b": "1b6794" @@ -22,7 +21,6 @@ "193173": "1b5f6f", "7badff": "90eacc", "5a8cef": "4aab9f", - "000000": "000000", "425aff": "b930bc", "7bceff": "f86ebf", "19297b": "971f7d" diff --git a/public/images/pokemon/variant/back/149.json b/public/images/pokemon/variant/back/149.json index ff4a7a77a21..da23b9af3bf 100644 --- a/public/images/pokemon/variant/back/149.json +++ b/public/images/pokemon/variant/back/149.json @@ -3,28 +3,20 @@ "5a3a21": "102908", "ffefbd": "def1ef", "f7bd5a": "f8b58f", - "000000": "000000", "ef9c3a": "e9917b", "de733a": "d15b67", "9c5a4a": "5a394e", "efbd8c": "a2c7c7", - "cecece": "cecece", - "ffffff": "ffffff", - "ad8c42": "79a2a3", - "636363": "636363" + "ad8c42": "79a2a3" }, "2": { "5a3a21": "102908", "ffefbd": "f8dfce", "f7bd5a": "8ed9c4", - "000000": "000000", "ef9c3a": "56a29e", "de733a": "35656d", "9c5a4a": "134050", "efbd8c": "c0a59d", - "cecece": "cecece", - "ffffff": "ffffff", - "ad8c42": "895e5c", - "636363": "636363" + "ad8c42": "895e5c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/150-mega-x.json b/public/images/pokemon/variant/back/150-mega-x.json index 0d3cbf49951..148ae70ee5a 100644 --- a/public/images/pokemon/variant/back/150-mega-x.json +++ b/public/images/pokemon/variant/back/150-mega-x.json @@ -1,25 +1,20 @@ { "1": { "7a7a99": "a66b8e", - "101010": "101010", "dadaf2": "ffb5d6", "36364d": "5a2952", "acacbf": "db8aaf", "461f59": "105144", "9643bf": "379e8a", - "f8f8f8": "f8f8f8", - "55a4f2": "55a4f2", "6e318c": "1d6153" }, "2": { "7a7a99": "d68f40", - "101010": "101010", "dadaf2": "ffdd98", "36364d": "884c17", "acacbf": "edaf5b", "461f59": "6b2619", "9643bf": "ac4f4b", - "f8f8f8": "f8f8f8", "55a4f2": "da2e29", "6e318c": "6b2619" } diff --git a/public/images/pokemon/variant/back/150-mega-y.json b/public/images/pokemon/variant/back/150-mega-y.json index daae4ff6ca7..99061b18c16 100644 --- a/public/images/pokemon/variant/back/150-mega-y.json +++ b/public/images/pokemon/variant/back/150-mega-y.json @@ -4,16 +4,13 @@ "dadaf2": "ffb5d6", "36364d": "5a2952", "acacbf": "db8aaf", - "101010": "101010", "9643bf": "43bfbd", "be55f2": "55f2e1", "461f59": "1f5859", "6e318c": "318c8a", - "f8f8f8": "f8f8f8", "f25555": "4bac9a" }, "2": { - "101010": "101010", "36364d": "884c17", "461f59": "59201f", "6e318c": "8c3331", @@ -21,8 +18,7 @@ "9643bf": "bf4c43", "be55f2": "f26155", "acacbf": "edaf5b", - "f25555": "f25555", "f8f8f8": "ffdd98", "dadaf2": "ffdd98" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/back/150.json b/public/images/pokemon/variant/back/150.json index 51435df396e..5f50624308f 100644 --- a/public/images/pokemon/variant/back/150.json +++ b/public/images/pokemon/variant/back/150.json @@ -4,8 +4,6 @@ "847b9c": "a66b8e", "b5adc5": "db8aaf", "ded6e6": "ffd6ef", - "000000": "000000", - "ffffff": "ffffff", "9442bd": "4bac9a", "6b319c": "196b5b", "3a2152": "12493f" @@ -15,8 +13,6 @@ "847b9c": "edaf5b", "b5adc5": "ffdd98", "ded6e6": "ffeeb6", - "000000": "000000", - "ffffff": "ffffff", "9442bd": "ac4f4b", "6b319c": "6b2619", "3a2152": "884c17" diff --git a/public/images/pokemon/variant/back/151.json b/public/images/pokemon/variant/back/151.json index 822e201bc18..5aab0a15c4e 100644 --- a/public/images/pokemon/variant/back/151.json +++ b/public/images/pokemon/variant/back/151.json @@ -3,7 +3,6 @@ "5a2952": "5c2da1", "ef84b5": "ab87cf", "b56394": "895ac3", - "000000": "000000", "ffb5d6": "d3b8e8", "ffd6ef": "eed7fa", "f7b584": "e86140" @@ -12,7 +11,6 @@ "5a2952": "884c17", "ef84b5": "edaf5b", "b56394": "ba7324", - "000000": "000000", "ffb5d6": "ffdd98", "ffd6ef": "ffeeb6", "f7b584": "55716f" diff --git a/public/images/pokemon/variant/back/161.json b/public/images/pokemon/variant/back/161.json index b91fd4d8573..21ec81e5dca 100644 --- a/public/images/pokemon/variant/back/161.json +++ b/public/images/pokemon/variant/back/161.json @@ -1,7 +1,6 @@ { "1": { "3a1910": "15143c", - "101010": "101010", "634231": "46387d", "4a3121": "252054", "a5734a": "ba82dd", @@ -12,7 +11,6 @@ }, "2": { "3a1910": "243064", - "101010": "101010", "634231": "667fb8", "4a3121": "3c508b", "a5734a": "aac7e9", diff --git a/public/images/pokemon/variant/back/162.json b/public/images/pokemon/variant/back/162.json index 1e630e957cd..c779f8dde58 100644 --- a/public/images/pokemon/variant/back/162.json +++ b/public/images/pokemon/variant/back/162.json @@ -1,6 +1,5 @@ { "1": { - "212129": "212129", "7b423a": "342e6d", "ffef94": "b7abde", "e6c54a": "988fc7", @@ -9,11 +8,9 @@ "ad8429": "716aa8", "c59c42": "716aa8", "ffffc5": "d3c8ec", - "ffffff": "ffffff", "737373": "3a8591" }, "2": { - "212129": "212129", "7b423a": "56697a", "ffef94": "daeff5", "e6c54a": "b4d1dc", @@ -22,7 +19,6 @@ "ad8429": "67748a", "c59c42": "67748a", "ffffc5": "f9feff", - "ffffff": "ffffff", "737373": "cc3b46" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/163.json b/public/images/pokemon/variant/back/163.json index 5ba8ecd4c64..b01e81a5963 100644 --- a/public/images/pokemon/variant/back/163.json +++ b/public/images/pokemon/variant/back/163.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "424242": "2c203e", "734a19": "3d346b", "bd8c42": "9c83c7", @@ -10,12 +9,9 @@ "debd9c": "a3b0d2", "6b3119": "2e1f39", "bd5a29": "663e5f", - "efad94": "87627e", - "ffffff": "ffffff", - "7b7b7b": "7b7b7b" + "efad94": "87627e" }, "2": { - "101010": "101010", "424242": "192133", "734a19": "435170", "bd8c42": "a5b4be", @@ -25,8 +21,6 @@ "debd9c": "ccd4d9", "6b3119": "36282b", "bd5a29": "291920", - "efad94": "4f4143", - "ffffff": "ffffff", - "7b7b7b": "7b7b7b" + "efad94": "4f4143" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/164.json b/public/images/pokemon/variant/back/164.json index 699a992b724..b815ed5851a 100644 --- a/public/images/pokemon/variant/back/164.json +++ b/public/images/pokemon/variant/back/164.json @@ -8,11 +8,7 @@ "deb56b": "a08dbd", "bd9463": "6b5d90", "9c735a": "443c64", - "634231": "161633", - "101010": "101010", - "636363": "636363", - "c5c5c5": "c5c5c5", - "ffffff": "ffffff" + "634231": "161633" }, "2": { "a5846b": "7a8d99", @@ -23,10 +19,6 @@ "deb56b": "c4d0d4", "bd9463": "99abb3", "9c735a": "768894", - "634231": "313f51", - "101010": "101010", - "636363": "636363", - "c5c5c5": "c5c5c5", - "ffffff": "ffffff" + "634231": "313f51" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/169.json b/public/images/pokemon/variant/back/169.json index 34cfabeb573..a22d7e92559 100644 --- a/public/images/pokemon/variant/back/169.json +++ b/public/images/pokemon/variant/back/169.json @@ -4,7 +4,6 @@ "a55ace": "3d4381", "7b4a9c": "2f2a5f", "b57bce": "666fb4", - "101010": "101010", "08426b": "b06130", "216b94": "ffb049" }, @@ -13,7 +12,6 @@ "a55ace": "b49db2", "7b4a9c": "80607b", "b57bce": "c8b6c2", - "101010": "101010", "08426b": "901606", "216b94": "b52c0c" } diff --git a/public/images/pokemon/variant/back/173.json b/public/images/pokemon/variant/back/173.json index f181872451c..3b0a5dd3b7a 100644 --- a/public/images/pokemon/variant/back/173.json +++ b/public/images/pokemon/variant/back/173.json @@ -6,7 +6,6 @@ "de7b6b": "7c52ba", "ffa594": "9579c9", "523100": "44004a", - "101010": "101010", "6b4a31": "494299", "a56b00": "647cb3", "c58c29": "5ca3bf" @@ -18,7 +17,6 @@ "de7b6b": "95aeff", "ffa594": "b2d6ff", "523100": "912676", - "101010": "101010", "6b4a31": "b35783", "a56b00": "f28aa4", "c58c29": "ffc5e3" diff --git a/public/images/pokemon/variant/back/175.json b/public/images/pokemon/variant/back/175.json index 897a5189daf..b15179727ee 100644 --- a/public/images/pokemon/variant/back/175.json +++ b/public/images/pokemon/variant/back/175.json @@ -2,14 +2,12 @@ "0": { "94735a": "844466", "734a4a": "5b2847", - "000000": "000000", "ce9c73": "a7738f", "f7d6a5": "e4b2bb", "f7efc5": "f7c9c5", "7b8c94": "9c8c84", "d6dede": "ded6d6", "b5b5c5": "c5b5b5", - "ffffff": "ffffff", "de736b": "8ee4be", "c54242": "409e80", "4a84c5": "d05887", @@ -18,7 +16,6 @@ "1": { "94735a": "734350", "734a4a": "452030", - "000000": "000000", "ce9c73": "a26867", "f7d6a5": "be868a", "f7efc5": "f7c5ce", @@ -34,7 +31,6 @@ "2": { "94735a": "404d5b", "734a4a": "1f293b", - "000000": "000000", "ce9c73": "8093a5", "f7d6a5": "afc2d1", "f7efc5": "ddeaef", diff --git a/public/images/pokemon/variant/back/176.json b/public/images/pokemon/variant/back/176.json index 43e27a02cda..d16ca14a3ab 100644 --- a/public/images/pokemon/variant/back/176.json +++ b/public/images/pokemon/variant/back/176.json @@ -1,7 +1,6 @@ { "0": { "737b84": "6b3552", - "000000": "000000", "ffffff": "eee0db", "adc5bd": "b58f8f", "d6efef": "d2bcb7", @@ -10,7 +9,6 @@ }, "1": { "737b84": "734350", - "000000": "000000", "ffffff": "f3cbcb", "adc5bd": "ae7675", "d6efef": "c79397", @@ -19,7 +17,6 @@ }, "2": { "737b84": "404d5b", - "000000": "000000", "ffffff": "ddeaef", "adc5bd": "8093a5", "d6efef": "afc2d1", diff --git a/public/images/pokemon/variant/back/177.json b/public/images/pokemon/variant/back/177.json index 7b2c7d04a48..625103692a6 100644 --- a/public/images/pokemon/variant/back/177.json +++ b/public/images/pokemon/variant/back/177.json @@ -1,6 +1,5 @@ { "1": { - "292929": "292929", "842900": "001d3f", "d63131": "174d69", "ff424a": "4b798a", @@ -10,12 +9,9 @@ "296b29": "b36848", "846321": "356f6d", "ffde29": "8ddcaf", - "d6ad29": "4ca690", - "ffffff": "ffffff", - "cecece": "cecece" + "d6ad29": "4ca690" }, "2": { - "292929": "292929", "842900": "3b060c", "d63131": "662340", "ff424a": "9a3841", @@ -25,8 +21,6 @@ "296b29": "224181", "846321": "382c78", "ffde29": "8767bf", - "d6ad29": "554196", - "ffffff": "ffffff", - "cecece": "cecece" + "d6ad29": "554196" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/179.json b/public/images/pokemon/variant/back/179.json index 1b5b96d0ed4..80a80f85b86 100644 --- a/public/images/pokemon/variant/back/179.json +++ b/public/images/pokemon/variant/back/179.json @@ -1,13 +1,11 @@ { "1": { "847352": "8f6c51", - "101010": "101010", "ceb58c": "b69977", "e6cea5": "deccb2", "ffe6bd": "f2ebdb", "e6ad00": "d26b00", "ffde00": "fdba5b", - "ffffff": "ffffff", "a5a5a5": "452f32", "525252": "301a21", "b57b00": "a23c00", @@ -18,13 +16,11 @@ }, "2": { "847352": "131026", - "101010": "101010", "ceb58c": "2b2447", "e6cea5": "352b53", "ffe6bd": "4b3c68", "e6ad00": "c33486", "ffde00": "ee74c1", - "ffffff": "ffffff", "a5a5a5": "2d282a", "525252": "221b1f", "b57b00": "88205b", diff --git a/public/images/pokemon/variant/back/180.json b/public/images/pokemon/variant/back/180.json index 5605b9dda8c..8f83626315d 100644 --- a/public/images/pokemon/variant/back/180.json +++ b/public/images/pokemon/variant/back/180.json @@ -4,7 +4,6 @@ "84738c": "693806", "ffffff": "ffe6aa", "dee6f7": "ebbb78", - "101010": "101010", "4a4a5a": "4d2102", "de4263": "884626", "ff7373": "8e4c38", @@ -20,7 +19,6 @@ "84738c": "693806", "ffffff": "ffe6aa", "dee6f7": "ebbb78", - "101010": "101010", "4a4a5a": "4d2102", "de4263": "884626", "ff7373": "9a5328", diff --git a/public/images/pokemon/variant/back/181-mega.json b/public/images/pokemon/variant/back/181-mega.json index f26151236d5..6d064fc5d32 100644 --- a/public/images/pokemon/variant/back/181-mega.json +++ b/public/images/pokemon/variant/back/181-mega.json @@ -2,7 +2,6 @@ "1": { "737373": "58341f", "f8f8f8": "ffe8b2", - "101010": "101010", "bfbfbf": "e5c079", "bf370a": "e28f09", "734b22": "49200d", @@ -15,7 +14,6 @@ "2": { "737373": "5d412a", "f8f8f8": "fff1d0", - "101010": "101010", "bfbfbf": "ebbb78", "bf370a": "d26b00", "734b22": "49200d", diff --git a/public/images/pokemon/variant/back/181.json b/public/images/pokemon/variant/back/181.json index d26f2773b32..2fd605b86be 100644 --- a/public/images/pokemon/variant/back/181.json +++ b/public/images/pokemon/variant/back/181.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "636b6b": "521a03", "c54200": "eaa60f", "ce8c10": "492602", @@ -10,11 +9,9 @@ "ffef4a": "af724a", "adadad": "ebbb78", "e6e6e6": "ffe6aa", - "ffffff": "ffffff", "8c2100": "c06400" }, "2": { - "101010": "101010", "636b6b": "3e2752", "c54200": "d53691", "ce8c10": "1c2a6d", @@ -23,8 +20,6 @@ "845a31": "131a51", "ffef4a": "78a8ec", "adadad": "b38582", - "e6e6e6": "e6e6e6", - "ffffff": "ffffff", "8c2100": "b12173" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/182.json b/public/images/pokemon/variant/back/182.json index b544187f64e..319fa7bec95 100644 --- a/public/images/pokemon/variant/back/182.json +++ b/public/images/pokemon/variant/back/182.json @@ -3,7 +3,6 @@ "840000": "338497", "f76b00": "79f6d5", "d62100": "49c1c2", - "101010": "101010", "526329": "659251", "9cd64a": "d8ecb1", "73ad31": "a2d281", @@ -18,7 +17,6 @@ "840000": "a7801f", "f76b00": "eaed6e", "d62100": "cdbb39", - "101010": "101010", "526329": "592819", "9cd64a": "b68356", "73ad31": "804428", diff --git a/public/images/pokemon/variant/back/183.json b/public/images/pokemon/variant/back/183.json index 99046544dc4..668660a08cc 100644 --- a/public/images/pokemon/variant/back/183.json +++ b/public/images/pokemon/variant/back/183.json @@ -5,7 +5,6 @@ "5a9cef": "fb95c2", "193a73": "822156", "4284ce": "e067b0", - "101010": "101010", "636363": "7c6a7d" }, "2": { @@ -14,7 +13,6 @@ "5a9cef": "74847c", "193a73": "362d27", "4284ce": "5a6362", - "101010": "101010", "636363": "56504e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/184.json b/public/images/pokemon/variant/back/184.json index b6b63cc9890..ec9460f13ad 100644 --- a/public/images/pokemon/variant/back/184.json +++ b/public/images/pokemon/variant/back/184.json @@ -4,19 +4,15 @@ "5a9cef": "fdb1cc", "4284ce": "e077ab", "316bad": "d47090", - "101010": "101010", "7b9cc5": "dea0c1", - "c5c5d6": "ffdbdf", - "6b6b6b": "6b6b6b" + "c5c5d6": "ffdbdf" }, "2": { "193a73": "3f344d", "5a9cef": "698f7b", "4284ce": "49736f", "316bad": "496666", - "101010": "101010", "7b9cc5": "94a396", - "c5c5d6": "bcbeab", - "6b6b6b": "6b6b6b" + "c5c5d6": "bcbeab" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/185.json b/public/images/pokemon/variant/back/185.json index 2d8d461fbe7..18183ce113e 100644 --- a/public/images/pokemon/variant/back/185.json +++ b/public/images/pokemon/variant/back/185.json @@ -1,7 +1,6 @@ { "1": { "635a4a": "322a22", - "101010": "101010", "ad845a": "5d564e", "8c7342": "4c443b", "315a19": "3d1e0c", @@ -12,7 +11,6 @@ }, "2": { "635a4a": "332868", - "101010": "101010", "ad845a": "4058a8", "8c7342": "47449e", "315a19": "cf985e", diff --git a/public/images/pokemon/variant/back/19.json b/public/images/pokemon/variant/back/19.json index f87f36e8edc..57f4dd2cb01 100644 --- a/public/images/pokemon/variant/back/19.json +++ b/public/images/pokemon/variant/back/19.json @@ -4,13 +4,10 @@ "d69cd6": "88a0b1", "b573bd": "5f778e", "4a2942": "262f4f", - "101010": "101010", "a57308": "a17c7d", "efdeb5": "e8cec9", "634a08": "765358", "cead63": "c4a3a1", - "ffffff": "ffffff", - "5a5a5a": "5a5a5a", "e65a73": "739794" }, "2": { @@ -18,13 +15,10 @@ "d69cd6": "fff5eb", "b573bd": "efdcd1", "4a2942": "865c54", - "101010": "101010", "a57308": "ba476f", "efdeb5": "efb5c0", "634a08": "7e3754", "cead63": "d98a9f", - "ffffff": "ffffff", - "5a5a5a": "5a5a5a", "e65a73": "707b83" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/190.json b/public/images/pokemon/variant/back/190.json index d89680a2200..9c7c9e1b4e1 100644 --- a/public/images/pokemon/variant/back/190.json +++ b/public/images/pokemon/variant/back/190.json @@ -2,7 +2,6 @@ "1": { "52216b": "701523", "a55ac5": "c47440", - "000000": "000000", "bd7bde": "dea95a", "8442ad": "ad452f", "8c6b42": "8c7457", @@ -13,7 +12,6 @@ "2": { "52216b": "807870", "a55ac5": "bfbeb4", - "000000": "000000", "bd7bde": "e5dfdf", "8442ad": "a6a297", "8c6b42": "632339", diff --git a/public/images/pokemon/variant/back/193.json b/public/images/pokemon/variant/back/193.json index 8c6770f192a..c8679f12e39 100644 --- a/public/images/pokemon/variant/back/193.json +++ b/public/images/pokemon/variant/back/193.json @@ -11,7 +11,6 @@ "73a54a": "7262de", "6b7b84": "a36280", "c5d6ef": "ed9db5", - "101010": "101010", "4a4a52": "693e78" }, "2": { @@ -26,7 +25,6 @@ "73a54a": "46769c", "6b7b84": "607b84", "c5d6ef": "d8edbb", - "101010": "101010", "4a4a52": "3e4a52" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/196.json b/public/images/pokemon/variant/back/196.json index fd930465c7f..92eb5c3843c 100644 --- a/public/images/pokemon/variant/back/196.json +++ b/public/images/pokemon/variant/back/196.json @@ -4,7 +4,6 @@ "b57bb5": "416240", "e6a5d6": "6c9e63", "efbdef": "bddd9e", - "101010": "101010", "314273": "a86a2c", "4a73b5": "ffb554" }, @@ -13,7 +12,6 @@ "b57bb5": "d1759c", "e6a5d6": "e99eae", "efbdef": "d2a2b5", - "101010": "101010", "314273": "537fde", "4a73b5": "90b7f9" }, @@ -22,7 +20,6 @@ "b57bb5": "ce987a", "e6a5d6": "ded0af", "efbdef": "f5f3e1", - "101010": "101010", "314273": "194540", "4a73b5": "39816d" } diff --git a/public/images/pokemon/variant/back/197.json b/public/images/pokemon/variant/back/197.json index ee4a8cd3ce5..d855e228fb5 100644 --- a/public/images/pokemon/variant/back/197.json +++ b/public/images/pokemon/variant/back/197.json @@ -3,7 +3,6 @@ "29314a": "3a2534", "424252": "553849", "63637b": "896c75", - "101010": "101010", "efd652": "ff5153", "b59429": "c72343", "525200": "9b0f33" @@ -12,7 +11,6 @@ "29314a": "9f8981", "424252": "d3bcb1", "63637b": "eddbcf", - "101010": "101010", "efd652": "e7af5d", "b59429": "bf793b", "525200": "974623" diff --git a/public/images/pokemon/variant/back/199.json b/public/images/pokemon/variant/back/199.json index f17d7951ccd..9aec41df0fb 100644 --- a/public/images/pokemon/variant/back/199.json +++ b/public/images/pokemon/variant/back/199.json @@ -3,14 +3,11 @@ "63636b": "734927", "d6d6d6": "f1d191", "ada5a5": "bf9562", - "101010": "101010", - "ffffff": "ffffff", "a53129": "538a55", "ce5252": "542a28", "ff5a4a": "93de76", "e64221": "50b64e", "b52919": "2b191b", - "d1cdc9": "d1cdc9", "ef736b": "5b3332", "ff9c94": "885345", "deb531": "b97565", @@ -20,14 +17,11 @@ "63636b": "192b32", "d6d6d6": "4c7668", "ada5a5": "2b4a48", - "101010": "101010", - "ffffff": "ffffff", "a53129": "2e1910", "ce5252": "b0613c", "ff5a4a": "6f4d35", "e64221": "543322", "b52919": "893d28", - "d1cdc9": "d1cdc9", "ef736b": "de9048", "ff9c94": "edbc69", "deb531": "bf4f2a", diff --git a/public/images/pokemon/variant/back/2.json b/public/images/pokemon/variant/back/2.json index ba7f0b01ff9..90b02797ad5 100644 --- a/public/images/pokemon/variant/back/2.json +++ b/public/images/pokemon/variant/back/2.json @@ -7,11 +7,9 @@ "7bd673": "ff745e", "63ad5a": "c24627", "104a3a": "4a1117", - "101010": "101010", "10424a": "57004f", "219484": "9c1a73", - "5acebd": "de359a", - "ffffff": "ffffff" + "5acebd": "de359a" }, "2": { "7b3129": "2e3601", @@ -20,11 +18,8 @@ "317b52": "446b94", "7bd673": "bef0fa", "63ad5a": "80c3d9", - "104a3a": "104a3a", - "101010": "101010", "10424a": "733502", "219484": "c76102", - "5acebd": "faa405", - "ffffff": "ffffff" + "5acebd": "faa405" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/20.json b/public/images/pokemon/variant/back/20.json index 3b1a46c1f8b..5171363f30f 100644 --- a/public/images/pokemon/variant/back/20.json +++ b/public/images/pokemon/variant/back/20.json @@ -3,32 +3,24 @@ "6b3a00": "261518", "a57329": "352121", "c5943a": "4a3331", - "101010": "101010", "c58452": "bc9087", "ffce9c": "dfc0b3", "945210": "764f4d", "845a29": "48272e", - "b5b5b5": "b5b5b5", "a58431": "784e54", "f7f7a5": "d2b2ad", - "ffffff": "ffffff", - "efce73": "c09b9c", - "737373": "737373" + "efce73": "c09b9c" }, "2": { "6b3a00": "7f645c", "a57329": "bba08f", "c5943a": "e2cbb9", - "101010": "101010", "c58452": "ae6f7e", "ffce9c": "e4b4b4", "945210": "813636", "845a29": "34171d", - "b5b5b5": "b5b5b5", "a58431": "631737", "f7f7a5": "c46771", - "ffffff": "ffffff", - "efce73": "973a59", - "737373": "737373" + "efce73": "973a59" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/200.json b/public/images/pokemon/variant/back/200.json index 2e11c0eeb76..5d11a30847e 100644 --- a/public/images/pokemon/variant/back/200.json +++ b/public/images/pokemon/variant/back/200.json @@ -3,7 +3,6 @@ "9c3a4a": "cc762f", "631942": "71370f", "de63a5": "f6b557", - "101010": "101010", "192942": "432e69", "3a6384": "8366ab", "314a63": "603f90", diff --git a/public/images/pokemon/variant/back/2027.json b/public/images/pokemon/variant/back/2027.json index 19a32275979..bffe4327837 100644 --- a/public/images/pokemon/variant/back/2027.json +++ b/public/images/pokemon/variant/back/2027.json @@ -4,8 +4,6 @@ "354e73": "752e42", "b6dbe7": "ffdac2", "84b3ce": "d27c80", - "fefefe": "fefefe", - "101010": "101010", "897e67": "aaaa96", "fefea9": "fffffc", "d1c592": "d3d3c6" @@ -15,8 +13,6 @@ "354e73": "3d2c78", "b6dbe7": "dbb1eb", "84b3ce": "a87bcf", - "fefefe": "fefefe", - "101010": "101010", "897e67": "2e163d", "fefea9": "6f3480", "d1c592": "44225a" diff --git a/public/images/pokemon/variant/back/2028.json b/public/images/pokemon/variant/back/2028.json index e2a25c789c1..6a47ecacf45 100644 --- a/public/images/pokemon/variant/back/2028.json +++ b/public/images/pokemon/variant/back/2028.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "3a6b8c": "692a61", "f1f1f4": "fffffc", "b0e5f8": "fffed9", @@ -16,7 +15,6 @@ "9994b6": "8d6e6f" }, "2": { - "101010": "101010", "3a6b8c": "3c2d74", "f1f1f4": "e3f0ff", "b0e5f8": "f8f5b0", diff --git a/public/images/pokemon/variant/back/203.json b/public/images/pokemon/variant/back/203.json index 1429eb40c25..cb82db0fd3c 100644 --- a/public/images/pokemon/variant/back/203.json +++ b/public/images/pokemon/variant/back/203.json @@ -1,14 +1,12 @@ { "1": { "424a73": "351810", - "ffffff": "ffffff", "adb5d6": "8f6f66", "6b8cb5": "512b21", "4a3a3a": "231117", "efde52": "9c3e3e", "c5a53a": "7e262d", "9c3a5a": "ab9d75", - "101010": "101010", "9c7b42": "571522", "ce6b94": "d8d1ad", "947b6b": "1f4062", @@ -18,14 +16,12 @@ }, "2": { "424a73": "27091d", - "ffffff": "ffffff", "adb5d6": "c5b0b7", "6b8cb5": "4a1b33", "4a3a3a": "091225", "efde52": "2a9d8f", "c5a53a": "1e7884", "9c3a5a": "52ab5f", - "101010": "101010", "9c7b42": "15545d", "ce6b94": "a8e781", "947b6b": "1a2e43", diff --git a/public/images/pokemon/variant/back/2052.json b/public/images/pokemon/variant/back/2052.json index 97ce82e0380..6e709a677f7 100644 --- a/public/images/pokemon/variant/back/2052.json +++ b/public/images/pokemon/variant/back/2052.json @@ -2,10 +2,8 @@ "1": { "45505f": "8c583b", "91a3bf": "ffda5c", - "101010": "101010", "995433": "493473", "627986": "de974e", - "f3f3f3": "f3f3f3", "e3cc2b": "a66db5", "ca833c": "7a519a", "798071": "7a4888", @@ -15,10 +13,8 @@ "2": { "45505f": "271420", "91a3bf": "7c4e42", - "101010": "101010", "995433": "45328e", "627986": "5f3036", - "f3f3f3": "f3f3f3", "e3cc2b": "b5b8f9", "ca833c": "7b7fda", "798071": "5f5c7e", diff --git a/public/images/pokemon/variant/back/2053.json b/public/images/pokemon/variant/back/2053.json index 3924a1a57f8..0defe48e028 100644 --- a/public/images/pokemon/variant/back/2053.json +++ b/public/images/pokemon/variant/back/2053.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "262b3c": "41185e", "464457": "71442a", "6c7791": "de974e", @@ -8,7 +7,6 @@ "5f6281": "8c583b" }, "2": { - "101010": "101010", "262b3c": "1d1b33", "464457": "271420", "6c7791": "5f3036", diff --git a/public/images/pokemon/variant/back/206.json b/public/images/pokemon/variant/back/206.json index c9d70c975cc..1c902ff2472 100644 --- a/public/images/pokemon/variant/back/206.json +++ b/public/images/pokemon/variant/back/206.json @@ -6,7 +6,6 @@ "f7ffff": "f6ffff", "debd3a": "aeaeae", "318ca5": "4a6165", - "101010": "101010", "6bbdce": "748da4", "216b84": "2a413f", "d6e6f7": "d8edf3", @@ -21,7 +20,6 @@ "f7ffff": "fdffdc", "debd3a": "a12e55", "318ca5": "38a8a6", - "101010": "101010", "6bbdce": "73d7d5", "216b84": "1d737a", "d6e6f7": "ffd4ac", diff --git a/public/images/pokemon/variant/back/207.json b/public/images/pokemon/variant/back/207.json index 52c582cf1a8..dee74529c90 100644 --- a/public/images/pokemon/variant/back/207.json +++ b/public/images/pokemon/variant/back/207.json @@ -3,14 +3,12 @@ "63314a": "7f4812", "e6a5ce": "f8dd84", "de84b5": "daa93f", - "101010": "101010", "ad6394": "b67322" }, "2": { "63314a": "5f1723", "e6a5ce": "ef6b58", "de84b5": "c04144", - "101010": "101010", "ad6394": "97343c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/212-mega.json b/public/images/pokemon/variant/back/212-mega.json index c9755a5cb27..e118c31d3be 100644 --- a/public/images/pokemon/variant/back/212-mega.json +++ b/public/images/pokemon/variant/back/212-mega.json @@ -3,37 +3,19 @@ "662929": "215a2d", "a62929": "2f794e", "d93636": "4a9c53", - "101010": "101010", - "404040": "404040", - "f8f8f8": "f8f8f8", - "bfbfbf": "bfbfbf", - "737373": "737373", - "0cb9f2": "0cb9f2", - "087599": "087599", "f26161": "8cce73" }, "1": { "662929": "2f2962", "a62929": "29429c", "d93636": "4263ef", - "101010": "101010", - "404040": "404040", - "f8f8f8": "f8f8f8", - "bfbfbf": "bfbfbf", - "737373": "737373", - "0cb9f2": "0cb9f2", - "087599": "087599", "f26161": "639cf7" }, "2": { "662929": "645117", "a62929": "b88619", "d93636": "ffca2a", - "101010": "101010", - "404040": "404040", - "f8f8f8": "f8f8f8", "bfbfbf": "cdccb4", - "737373": "737373", "0cb9f2": "f4e920", "087599": "b49800", "f26161": "c59f29" diff --git a/public/images/pokemon/variant/back/212.json b/public/images/pokemon/variant/back/212.json index 84f12bf1434..3c7d9a4799c 100644 --- a/public/images/pokemon/variant/back/212.json +++ b/public/images/pokemon/variant/back/212.json @@ -3,24 +3,14 @@ "632929": "215a2d", "f76b6b": "8cce73", "a52929": "2f794e", - "101010": "101010", - "d63a3a": "4a9c53", - "9494a5": "9494a5", - "ffffff": "ffffff", - "b5b5ce": "b5b5ce", - "3a3a4a": "3a3a4a", - "9c6b21": "9c6b21", - "dec510": "dec510" + "d63a3a": "4a9c53" }, "1": { "632929": "2f2962", "f76b6b": "639cf7", "a52929": "29429c", - "101010": "101010", "d63a3a": "4263ef", "9494a5": "6262a4", - "ffffff": "ffffff", - "b5b5ce": "b5b5ce", "3a3a4a": "3c3c50", "9c6b21": "131387", "dec510": "10bdde" @@ -29,13 +19,8 @@ "632929": "645117", "f76b6b": "c59f29", "a52929": "b88619", - "101010": "101010", "d63a3a": "ffca2a", "9494a5": "3c4543", - "ffffff": "ffffff", - "b5b5ce": "b5b5ce", - "3a3a4a": "282d2c", - "9c6b21": "9c6b21", - "dec510": "dec510" + "3a3a4a": "282d2c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/213.json b/public/images/pokemon/variant/back/213.json index 11a4ca52ff1..87d543f7868 100644 --- a/public/images/pokemon/variant/back/213.json +++ b/public/images/pokemon/variant/back/213.json @@ -4,7 +4,6 @@ "735210": "5d1931", "ffff5a": "d68b71", "efc54a": "cc5b74", - "101010": "101010", "6b633a": "8e4d31", "ffffff": "fff0d8", "d6ceb5": "fcc86f", @@ -18,7 +17,6 @@ "735210": "254d59", "ffff5a": "aaedbe", "efc54a": "5bbfaa", - "101010": "101010", "6b633a": "1f1f1f", "ffffff": "705b66", "d6ceb5": "4f3e46", diff --git a/public/images/pokemon/variant/back/215.json b/public/images/pokemon/variant/back/215.json index 1c3719c45bf..624c90d4a21 100644 --- a/public/images/pokemon/variant/back/215.json +++ b/public/images/pokemon/variant/back/215.json @@ -6,7 +6,6 @@ "316373": "6d1631", "21315a": "220a11", "3a94ad": "ac373e", - "000000": "000000", "42849c": "902738", "bdbdc5": "c5a080", "4a4a4a": "69523f", @@ -19,10 +18,8 @@ "316373": "d4874f", "21315a": "723522", "3a94ad": "fbdba1", - "000000": "000000", "42849c": "eab273", "bdbdc5": "a1a0c3", - "4a4a4a": "383d51", - "f7f7ff": "f7f7ff" + "4a4a4a": "383d51" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/216.json b/public/images/pokemon/variant/back/216.json index 014803f0c86..67087b3d9ea 100644 --- a/public/images/pokemon/variant/back/216.json +++ b/public/images/pokemon/variant/back/216.json @@ -1,38 +1,26 @@ { "0": { "6b4219": "225c35", - "101010": "101010", "ff843a": "90db6d", "b56321": "4cae50", "de7331": "6ac669", "ffe6a5": "ffffb5", - "efad52": "ffe66b", - "dedede": "dedede", - "6b6b7b": "6b6b7b", - "b5b5bd": "b5b5bd" + "efad52": "ffe66b" }, "1": { "6b4219": "5e0c28", - "101010": "101010", "ff843a": "e44642", "b56321": "9e253b", "de7331": "c42f3e", "ffe6a5": "f7eee1", - "efad52": "f2cab8", - "dedede": "dedede", - "6b6b7b": "6b6b7b", - "b5b5bd": "b5b5bd" + "efad52": "f2cab8" }, "2": { "6b4219": "1e2249", - "101010": "101010", "ff843a": "46527a", "b56321": "323760", "de7331": "3c456e", "ffe6a5": "b5fffc", - "efad52": "75aaff", - "dedede": "dedede", - "6b6b7b": "6b6b7b", - "b5b5bd": "b5b5bd" + "efad52": "75aaff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/217.json b/public/images/pokemon/variant/back/217.json index 501a7a8e666..3b8582df4dc 100644 --- a/public/images/pokemon/variant/back/217.json +++ b/public/images/pokemon/variant/back/217.json @@ -1,38 +1,23 @@ { "0": { "422919": "112114", - "7b7b8c": "7b7b8c", - "101010": "101010", "945221": "2f6324", - "ffffff": "ffffff", "634229": "1d3d26", - "b5b5bd": "b5b5bd", "f7c563": "fecd85", - "c59c4a": "cd9343", - "dedede": "dedede" + "c59c4a": "cd9343" }, "1": { "422919": "2d0e1f", - "7b7b8c": "7b7b8c", - "101010": "101010", "945221": "8c2a37", - "ffffff": "ffffff", "634229": "6b1d38", - "b5b5bd": "b5b5bd", "f7c563": "f2cab8", - "c59c4a": "c48e81", - "dedede": "dedede" + "c59c4a": "c48e81" }, "2": { "422919": "111433", - "7b7b8c": "7b7b8c", - "101010": "101010", "945221": "323760", - "ffffff": "ffffff", "634229": "1e2249", - "b5b5bd": "b5b5bd", "f7c563": "5ccaf2", - "c59c4a": "45a2f9", - "dedede": "dedede" + "c59c4a": "45a2f9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/222.json b/public/images/pokemon/variant/back/222.json index 2c50d3c55a8..f5f17ab07bf 100644 --- a/public/images/pokemon/variant/back/222.json +++ b/public/images/pokemon/variant/back/222.json @@ -2,7 +2,6 @@ "1": { "bd004a": "b76600", "7b0008": "73490d", - "000000": "000000", "ffa5c5": "f6cc70", "e66394": "f39806", "ffcee6": "f5eab0", @@ -12,7 +11,6 @@ "2": { "bd004a": "2b8c23", "7b0008": "0f660f", - "000000": "000000", "ffa5c5": "cae4a2", "e66394": "89b958", "ffcee6": "f4fad7", diff --git a/public/images/pokemon/variant/back/226.json b/public/images/pokemon/variant/back/226.json index 50a96e73d3b..a941e8be14f 100644 --- a/public/images/pokemon/variant/back/226.json +++ b/public/images/pokemon/variant/back/226.json @@ -2,7 +2,6 @@ "1": { "313a5a": "862a10", "5a6bde": "e27b36", - "101010": "101010", "4a5294": "aa4514", "525a6b": "642f21", "adb5ce": "b9783a", @@ -13,7 +12,6 @@ "2": { "313a5a": "1e3405", "5a6bde": "b1cf6b", - "101010": "101010", "4a5294": "6d9729", "525a6b": "174306", "adb5ce": "2e5f10", diff --git a/public/images/pokemon/variant/back/227.json b/public/images/pokemon/variant/back/227.json index 3615df8fc2e..c51bf16f8dd 100644 --- a/public/images/pokemon/variant/back/227.json +++ b/public/images/pokemon/variant/back/227.json @@ -5,11 +5,9 @@ "9cb5d6": "49748c", "deefff": "97bcce", "bdcee6": "6d93a4", - "101010": "101010", "ce9400": "d34b21", "ffde00": "f87642", - "637bad": "062233", - "841921": "841921" + "637bad": "062233" }, "2": { "31527b": "260e21", @@ -17,7 +15,6 @@ "9cb5d6": "773c5b", "deefff": "c8aeae", "bdcee6": "ac6f7d", - "101010": "101010", "ce9400": "36989a", "ffde00": "69d3c3", "637bad": "231429", diff --git a/public/images/pokemon/variant/back/228.json b/public/images/pokemon/variant/back/228.json index 7da9f57826e..a4e110ee3d9 100644 --- a/public/images/pokemon/variant/back/228.json +++ b/public/images/pokemon/variant/back/228.json @@ -3,30 +3,24 @@ "292931": "553454", "080808": "181223", "4a4a52": "76546b", - "101921": "101921", "767085": "a84b50", "ffffff": "f3bd87", "a59cad": "c87966", - "f8f9ff": "f8f9ff", "ada5b3": "414d67", "f7a57b": "f8f1e7", "734229": "311f3a", - "b57b5a": "ceb0a5", - "e2e0e3": "e2e0e3" + "b57b5a": "ceb0a5" }, "2": { "292931": "b1a3b1", "080808": "181223", "4a4a52": "f8faf3", - "101921": "101921", "767085": "223657", "ffffff": "5c8d95", "a59cad": "38576c", - "f8f9ff": "f8f9ff", "ada5b3": "292929", "f7a57b": "72557e", "734229": "311f3a", - "b57b5a": "533960", - "e2e0e3": "e2e0e3" + "b57b5a": "533960" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/229-mega.json b/public/images/pokemon/variant/back/229-mega.json index 4e85412dd72..6194d3d3bcb 100644 --- a/public/images/pokemon/variant/back/229-mega.json +++ b/public/images/pokemon/variant/back/229-mega.json @@ -1,27 +1,22 @@ { "1": { "83738b": "7c323c", - "000000": "000000", "ffffff": "f3bd87", "a49cac": "a84b50", "cdd5d5": "c87966", "182029": "321b32", "313139": "553454", "4a4a52": "76546b", - "f7f9fa": "f7f9fa", "af1b1b": "455d92", - "bbc3ce": "bbc3ce", "732422": "314075", "622910": "77545b", "f69c83": "f8f1e7", "a45a4a": "ceb0a5", - "f5eeee": "f5eeee", "aa1919": "aa8c82", "671f1e": "856458" }, "2": { "83738b": "121d3c", - "000000": "000000", "ffffff": "5c8d95", "a49cac": "223657", "cdd5d5": "38576c", @@ -35,7 +30,6 @@ "622910": "311f3a", "f69c83": "72557e", "a45a4a": "533960", - "f5eeee": "f5eeee", "aa1919": "534b6a", "671f1e": "423655" } diff --git a/public/images/pokemon/variant/back/229.json b/public/images/pokemon/variant/back/229.json index a4d9316078e..4e5cd46a77e 100644 --- a/public/images/pokemon/variant/back/229.json +++ b/public/images/pokemon/variant/back/229.json @@ -5,17 +5,13 @@ "ced6d6": "dc7e67", "ffffff": "f8c288", "192129": "431129", - "000000": "000000", "31313a": "631e3f", "4a4a52": "85324a", - "f8f9ff": "f8f9ff", "841021": "41578c", - "ada5b3": "ada5b3", "632910": "8c6362", "f79c84": "f8f1e7", "a55a4a": "ceb0a5", - "9c293a": "4c2a31", - "e2e0e3": "e2e0e3" + "9c293a": "4c2a31" }, "2": { "84738c": "111a33", @@ -23,16 +19,13 @@ "ced6d6": "38576c", "ffffff": "5c8d95", "192129": "444e6c", - "000000": "000000", "31313a": "a9bfd1", "4a4a52": "e8f8ff", "f8f9ff": "1d2d4e", "841021": "f37755", - "ada5b3": "ada5b3", "632910": "2d203c", "f79c84": "665a83", "a55a4a": "4a3a5e", - "9c293a": "8c5a98", - "e2e0e3": "e2e0e3" + "9c293a": "8c5a98" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/23.json b/public/images/pokemon/variant/back/23.json index b77da94b156..b424b1a7024 100644 --- a/public/images/pokemon/variant/back/23.json +++ b/public/images/pokemon/variant/back/23.json @@ -8,9 +8,7 @@ "ce63b5": "77d3a7", "7b316b": "1f8179", "e6ad5a": "d6c7a2", - "5a104a": "093640", - "101010": "101010", - "ffffff": "ffffff" + "5a104a": "093640" }, "2": { "b57b31": "293e6f", @@ -21,8 +19,6 @@ "ce63b5": "ebe1d7", "7b316b": "b3857d", "e6ad5a": "4d759b", - "5a104a": "5b303e", - "101010": "101010", - "ffffff": "ffffff" + "5a104a": "5b303e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/230.json b/public/images/pokemon/variant/back/230.json index 2603b437bbe..c7f0eb6aba6 100644 --- a/public/images/pokemon/variant/back/230.json +++ b/public/images/pokemon/variant/back/230.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "4a5a94": "2a2750", "8cbdef": "396979", "cee6f7": "5dac9b", @@ -15,7 +14,6 @@ "e6ad3a": "63a666" }, "2": { - "101010": "101010", "4a5a94": "54133f", "8cbdef": "d64b52", "cee6f7": "ffb273", diff --git a/public/images/pokemon/variant/back/231.json b/public/images/pokemon/variant/back/231.json index 7c4e6c5bc9a..68bc4fb808f 100644 --- a/public/images/pokemon/variant/back/231.json +++ b/public/images/pokemon/variant/back/231.json @@ -7,10 +7,8 @@ "525294": "4d5271", "bd3a31": "4b6aa1", "f76b52": "859abf", - "101010": "101010", "840000": "394e85", - "8c8c8c": "8c8baa", - "d6d6d6": "d6d6d6" + "8c8c8c": "8c8baa" }, "2": { "6b9cce": "673a67", @@ -20,7 +18,6 @@ "525294": "3a2043", "bd3a31": "cea141", "f76b52": "f1d35b", - "101010": "101010", "840000": "b17333", "8c8c8c": "755873", "d6d6d6": "fff8d5" diff --git a/public/images/pokemon/variant/back/232.json b/public/images/pokemon/variant/back/232.json index 2c5174d42c4..adb8af8a5cf 100644 --- a/public/images/pokemon/variant/back/232.json +++ b/public/images/pokemon/variant/back/232.json @@ -3,7 +3,6 @@ "4a5252": "5f74c7", "3a3a3a": "333a77", "849494": "b0d8ff", - "101010": "101010", "6b7373": "7fa0d7", "842129": "c8563f", "9ca5a5": "9ca3b5", @@ -21,7 +20,6 @@ "4a5252": "994e30", "3a3a3a": "6f2219", "849494": "f4b975", - "101010": "101010", "6b7373": "d17e47", "842129": "1d2a54", "9ca5a5": "3c283f", diff --git a/public/images/pokemon/variant/back/233.json b/public/images/pokemon/variant/back/233.json index e177f4e243a..99debec22a3 100644 --- a/public/images/pokemon/variant/back/233.json +++ b/public/images/pokemon/variant/back/233.json @@ -3,14 +3,12 @@ "94426b": "e27089", "ef5a63": "f8a8cd", "ff94b5": "fccee9", - "ffffff": "ffffff", "31739c": "6d224c", "d6d6d6": "e1dbff", "4a9cd6": "833462", "313a63": "4c1131", "5a3a4a": "d94664", - "6b6b7b": "887acd", - "101010": "101010" + "6b6b7b": "887acd" }, "2": { "94426b": "491c0c", @@ -22,7 +20,6 @@ "4a9cd6": "ffd9ab", "313a63": "b77751", "5a3a4a": "31150e", - "6b6b7b": "b77751", - "101010": "101010" + "6b6b7b": "b77751" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/235.json b/public/images/pokemon/variant/back/235.json index 8d3ab0ea5dd..f7255e5965a 100644 --- a/public/images/pokemon/variant/back/235.json +++ b/public/images/pokemon/variant/back/235.json @@ -5,7 +5,6 @@ "4a3a10": "431a2e", "adad8c": "b1767f", "6b5a31": "672f44", - "101010": "101010", "086300": "113041", "199c00": "1f5259", "42c519": "287170", @@ -17,7 +16,6 @@ "4a3a10": "141622", "adad8c": "8a909b", "6b5a31": "262b39", - "101010": "101010", "086300": "111321", "199c00": "1b1e2c", "42c519": "222734", diff --git a/public/images/pokemon/variant/back/239.json b/public/images/pokemon/variant/back/239.json index c48a006ef4d..db9f51c2840 100644 --- a/public/images/pokemon/variant/back/239.json +++ b/public/images/pokemon/variant/back/239.json @@ -6,7 +6,6 @@ "ce8c00": "d44b2c", "6b6b6b": "7a2414", "101010": "000000", - "ffffff": "ffffff", "cecece": "d8d8d8", "e6ad19": "f2673d", "a5a5a5": "adadad", @@ -18,11 +17,6 @@ "b56b00": "33b571", "ce8c00": "52ba8b", "6b6b6b": "206e33", - "101010": "101010", - "ffffff": "ffffff", - "cecece": "cecece", - "e6ad19": "53e680", - "a5a5a5": "a5a5a5", - "313131": "313131" + "e6ad19": "53e680" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/24.json b/public/images/pokemon/variant/back/24.json index a54eb499950..1aba309ef20 100644 --- a/public/images/pokemon/variant/back/24.json +++ b/public/images/pokemon/variant/back/24.json @@ -3,18 +3,12 @@ "523a7b": "113a53", "a584c5": "30abb3", "7b63ad": "146d7d", - "ffffff": "ffffff", - "101010": "101010", - "c5a5ef": "8feae4", - "c5c5c5": "c5c5c5" + "c5a5ef": "8feae4" }, "2": { "523a7b": "875a5f", "a584c5": "eed3b1", "7b63ad": "bf9a8e", - "ffffff": "ffffff", - "101010": "101010", - "c5a5ef": "fff9e5", - "c5c5c5": "c5c5c5" + "c5a5ef": "fff9e5" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/240.json b/public/images/pokemon/variant/back/240.json index d9fdfa30751..c237b239384 100644 --- a/public/images/pokemon/variant/back/240.json +++ b/public/images/pokemon/variant/back/240.json @@ -3,24 +3,18 @@ "d6523a": "372d49", "943121": "101010", "ff7b63": "524b6f", - "101010": "101010", "ffffb5": "ffffff", "ad8400": "db4d19", "f7d63a": "fba42e", - "d6ad00": "fb832b", - "73737b": "73737b", - "ffffff": "ffffff" + "d6ad00": "fb832b" }, "2": { "d6523a": "4065b0", "943121": "303d58", "ff7b63": "5398cf", - "101010": "101010", "ffffb5": "ffffff", "ad8400": "699296", "f7d63a": "eaffff", - "d6ad00": "c6edf2", - "73737b": "73737b", - "ffffff": "ffffff" + "d6ad00": "c6edf2" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/242.json b/public/images/pokemon/variant/back/242.json index 9333afa8335..89053184294 100644 --- a/public/images/pokemon/variant/back/242.json +++ b/public/images/pokemon/variant/back/242.json @@ -5,7 +5,6 @@ "ffadc5": "f6caec", "de84a5": "cc96c5", "ffc5ce": "ffdef4", - "101010": "101010", "6b6b6b": "521259", "b5b5b5": "6a1e76", "ded6d6": "a462c4", @@ -17,7 +16,6 @@ "ffadc5": "e5a5ce", "de84a5": "bd77ab", "ffc5ce": "ffd0eb", - "101010": "101010", "6b6b6b": "48050c", "b5b5b5": "60071d", "ded6d6": "8b2d4e", @@ -29,7 +27,6 @@ "ffadc5": "ddbcf5", "de84a5": "be98dd", "ffc5ce": "f4daff", - "101010": "101010", "6b6b6b": "201a4f", "b5b5b5": "3f377f", "ded6d6": "52489c", diff --git a/public/images/pokemon/variant/back/243.json b/public/images/pokemon/variant/back/243.json index ce3d36b9db3..530b240683a 100644 --- a/public/images/pokemon/variant/back/243.json +++ b/public/images/pokemon/variant/back/243.json @@ -2,7 +2,6 @@ "1": { "846ba5": "732c40", "bd8cc5": "b74f57", - "101010": "101010", "52296b": "481532", "6b6b6b": "3c3c4e", "ffffff": "f3dfdf", @@ -11,13 +10,11 @@ "a5a5a5": "9b7b81", "d69c29": "c55d3b", "8c6310": "833000", - "c50000": "c50000", "ffce42": "ff945c" }, "2": { "846ba5": "dc9779", "bd8cc5": "f5d4c0", - "101010": "101010", "52296b": "994d3d", "6b6b6b": "3c3c4e", "ffffff": "eed7cd", @@ -26,7 +23,6 @@ "a5a5a5": "ac8982", "d69c29": "5278c7", "8c6310": "2a4083", - "c50000": "c50000", "ffce42": "8aade5" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/245.json b/public/images/pokemon/variant/back/245.json index 638bfa96065..6187c3c5997 100644 --- a/public/images/pokemon/variant/back/245.json +++ b/public/images/pokemon/variant/back/245.json @@ -4,7 +4,6 @@ "5a7bd6": "4c4097", "7bbdff": "6b62c0", "7b5ab5": "bd4530", - "101010": "101010", "ad6bd6": "e56444", "523a7b": "892015", "c594de": "ff8e67", @@ -13,7 +12,6 @@ "ffffff": "f7dfec", "848484": "65395c", "dedede": "e0b4ce", - "d61010": "d61010", "bdefff": "9795d1" }, "2": { @@ -21,7 +19,6 @@ "5a7bd6": "d67617", "7bbdff": "f5ae42", "7b5ab5": "863062", - "101010": "101010", "ad6bd6": "c16792", "523a7b": "40163c", "c594de": "e8a0d2", @@ -29,8 +26,6 @@ "bdbdbd": "b29cc0", "ffffff": "fbecff", "848484": "856c98", - "dedede": "dedede", - "d61010": "d61010", "bdefff": "ffdf85" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/246.json b/public/images/pokemon/variant/back/246.json index 5b507495d06..5d7c14dd125 100644 --- a/public/images/pokemon/variant/back/246.json +++ b/public/images/pokemon/variant/back/246.json @@ -4,8 +4,6 @@ "4a5a3a": "0b4367", "d6e6ce": "4fa6e0", "adce9c": "4493c7", - "101010": "101010", - "ffffff": "ffffff", "ef5229": "efca4f", "bd3a21": "cd8f30" }, @@ -14,8 +12,6 @@ "4a5a3a": "a5494d", "d6e6ce": "ecd292", "adce9c": "e5a267", - "101010": "101010", - "ffffff": "ffffff", "ef5229": "67478f", "bd3a21": "403266" } diff --git a/public/images/pokemon/variant/back/247.json b/public/images/pokemon/variant/back/247.json index 34a8a10ef3d..e05f4cc8b31 100644 --- a/public/images/pokemon/variant/back/247.json +++ b/public/images/pokemon/variant/back/247.json @@ -2,13 +2,11 @@ "1": { "295a84": "4a5a39", "8cc5ef": "accd9c", - "101010": "101010", "739cc5": "739c62" }, "2": { "295a84": "51202f", "8cc5ef": "b63c37", - "101010": "101010", "739cc5": "8b1534" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/248-mega.json b/public/images/pokemon/variant/back/248-mega.json index c63b19d7c29..70a6011b03c 100644 --- a/public/images/pokemon/variant/back/248-mega.json +++ b/public/images/pokemon/variant/back/248-mega.json @@ -1,28 +1,26 @@ { "1": { "171717": "101010", - "4a5a39": "533334", - "4b5a3b": "533334", - "727272": "727272", - "801c17": "533334", - "922d00": "004194", - "ce283d": "006fb3", - "d35200": "0098fc", - "729a62": "915957", - "739c62": "915957", - "aacb9a": "c78482" + "4a5a39": "533334", + "4b5a3b": "533334", + "801c17": "533334", + "922d00": "004194", + "ce283d": "006fb3", + "d35200": "0098fc", + "729a62": "915957", + "739c62": "915957", + "aacb9a": "c78482" }, "2": { - "171717": "101010", - "4a5a39": "06092f", - "4b5a3b": "06092f", - "727272": "727272", - "801c17": "ee7b06", - "922d00": "ee7b06", - "ce283d": "ffa904", - "d35200": "ffa904", - "729a62": "59417c", - "739c62": "59417c", - "aacb9a": "625695" + "171717": "101010", + "4a5a39": "06092f", + "4b5a3b": "06092f", + "801c17": "ee7b06", + "922d00": "ee7b06", + "ce283d": "ffa904", + "d35200": "ffa904", + "729a62": "59417c", + "739c62": "59417c", + "aacb9a": "625695" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/248.json b/public/images/pokemon/variant/back/248.json index a769de9a1ed..61908bc0aa3 100644 --- a/public/images/pokemon/variant/back/248.json +++ b/public/images/pokemon/variant/back/248.json @@ -3,11 +3,6 @@ "4a5a3a": "533334", "adce9c": "c78482", "739c63": "915957", - "101010": "101010", - "c5c5c5": "c5c5c5", - "ffffff": "ffffff", - "737373": "737373", - "942900": "942900", "004a8c": "004194", "217bbd": "006fbe" }, @@ -15,10 +10,6 @@ "4a5a3a": "06092f", "adce9c": "625695", "739c63": "2c3071", - "101010": "101010", - "c5c5c5": "c5c5c5", - "ffffff": "ffffff", - "737373": "737373", "942900": "ee7b06", "004a8c": "ee7b06", "217bbd": "ffa904" diff --git a/public/images/pokemon/variant/back/249.json b/public/images/pokemon/variant/back/249.json index 309f1d77b6b..a59c8a029d7 100644 --- a/public/images/pokemon/variant/back/249.json +++ b/public/images/pokemon/variant/back/249.json @@ -2,7 +2,6 @@ "1": { "63737b": "1d3e41", "9cade6": "326460", - "101010": "101010", "ffffff": "bad8c9", "b5c5f7": "447a6c", "004284": "214f5f", @@ -15,7 +14,6 @@ "2": { "63737b": "101010", "9cade6": "18162b", - "101010": "101010", "ffffff": "353043", "b5c5f7": "211d33", "004284": "7a7291", diff --git a/public/images/pokemon/variant/back/250.json b/public/images/pokemon/variant/back/250.json index b9e8aa51ae7..f3f2d784df3 100644 --- a/public/images/pokemon/variant/back/250.json +++ b/public/images/pokemon/variant/back/250.json @@ -4,31 +4,23 @@ "940800": "340b27", "ff5a10": "843974", "9c6300": "592964", - "101010": "101010", "42d652": "d6541f", "ffde00": "e4bcef", "dead00": "d28cda", "b5ffbd": "ed8543", "bd4210": "5b214b", - "ffef84": "f4deff", - "c5c5c5": "c5c5c5", - "ffffff": "ffffff", - "6b6b6b": "6b6b6b" + "ffef84": "f4deff" }, "2": { "109410": "365869", "940800": "0f0c3a", "ff5a10": "222e57", "9c6300": "95532c", - "101010": "101010", "42d652": "3e95c9", "ffde00": "e7aa6e", "dead00": "c68046", "b5ffbd": "77d7dd", "bd4210": "1a2053", - "ffef84": "ffd59f", - "c5c5c5": "c5c5c5", - "ffffff": "ffffff", - "6b6b6b": "6b6b6b" + "ffef84": "ffd59f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/251.json b/public/images/pokemon/variant/back/251.json index e5f01223e07..be8f2c3bf11 100644 --- a/public/images/pokemon/variant/back/251.json +++ b/public/images/pokemon/variant/back/251.json @@ -9,10 +9,7 @@ "deef94": "f4e5d9", "4a7321": "28696a", "ffffde": "fff5f5", - "101010": "101010", - "b5c55a": "cbc5af", - "6b7384": "6b7384", - "ffffff": "ffffff" + "b5c55a": "cbc5af" }, "2": { "73a531": "5f234e", @@ -24,7 +21,6 @@ "deef94": "ba9aa9", "4a7321": "3f0e2a", "ffffde": "ffedf3", - "101010": "101010", "b5c55a": "886580", "6b7384": "64475e", "ffffff": "eed9d9" diff --git a/public/images/pokemon/variant/back/255.json b/public/images/pokemon/variant/back/255.json index 94804ee8f02..78989f05aea 100644 --- a/public/images/pokemon/variant/back/255.json +++ b/public/images/pokemon/variant/back/255.json @@ -2,23 +2,19 @@ "1": { "ad8c00": "298084", "f7de6b": "58dfa5", - "000000": "000000", "efbd31": "34ad90", "7b4a19": "1d5461", "ad4210": "b93a23", "e65a21": "e86434", - "ff8c31": "ff9039", - "ffffff": "ffffff" + "ff8c31": "ff9039" }, "2": { "ad8c00": "550d28", "f7de6b": "ad3633", - "000000": "000000", "efbd31": "811c2c", "7b4a19": "400724", "ad4210": "b3817d", "e65a21": "d3afa0", - "ff8c31": "f3e5cf", - "ffffff": "ffffff" + "ff8c31": "f3e5cf" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/256.json b/public/images/pokemon/variant/back/256.json index 159cc5a51f5..0fecd72e2f5 100644 --- a/public/images/pokemon/variant/back/256.json +++ b/public/images/pokemon/variant/back/256.json @@ -1,7 +1,6 @@ { "1": { "9c3110": "11526f", - "191919": "191919", "ff7b4a": "3dd0b0", "de5a29": "1f9ba4", "9c7329": "a7471f", @@ -15,7 +14,6 @@ }, "2": { "9c3110": "8a685f", - "191919": "191919", "ff7b4a": "fff7e1", "de5a29": "cdb09b", "9c7329": "641835", diff --git a/public/images/pokemon/variant/back/257-mega.json b/public/images/pokemon/variant/back/257-mega.json index 8cde98eae09..28ecfb14064 100644 --- a/public/images/pokemon/variant/back/257-mega.json +++ b/public/images/pokemon/variant/back/257-mega.json @@ -10,7 +10,6 @@ "ff9a7f": "fff185", "e55858": "51b5cd", "ee6262": "f7ca4b", - "000000": "000000", "bd4141": "da8923", "fff188": "ecfff8", "297bd5": "930808", @@ -30,7 +29,6 @@ "ff9a7f": "fffce9", "e55858": "c6e6ff", "ee6262": "fffae1", - "000000": "000000", "bd4141": "d2bda7", "fff188": "c6fffd", "297bd5": "1f3061", diff --git a/public/images/pokemon/variant/back/257.json b/public/images/pokemon/variant/back/257.json index 42cd254566d..c294398a55c 100644 --- a/public/images/pokemon/variant/back/257.json +++ b/public/images/pokemon/variant/back/257.json @@ -6,7 +6,6 @@ "948463": "8095b3", "dedeb5": "f0fbff", "63524a": "55607d", - "000000": "000000", "ee5e5e": "598dc1", "842929": "11526f", "ef6363": "3dd0b0", @@ -20,7 +19,6 @@ "ffffff": "9386b8", "dfa550": "b2c3e3", "8c633a": "bf462a", - "c46b37": "c46b37", "dea552": "f99140", "f7d663": "ffc96b" }, @@ -31,7 +29,6 @@ "948463": "772436", "dedeb5": "cc6155", "63524a": "5b1832", - "000000": "000000", "ee5e5e": "772040", "842929": "9c7c70", "ef6363": "fffae1", @@ -41,7 +38,6 @@ "bd5f42": "983b2d", "9c8c84": "e6a653", "ffde6b": "da9b60", - "297bd6": "297bd6", "ffffff": "473c61", "dfa550": "be6646", "8c633a": "2d2e58", diff --git a/public/images/pokemon/variant/back/261.json b/public/images/pokemon/variant/back/261.json index 47e9abd21a6..5b911371ac3 100644 --- a/public/images/pokemon/variant/back/261.json +++ b/public/images/pokemon/variant/back/261.json @@ -2,27 +2,21 @@ "1": { "636363": "803c2c", "c5c5c5": "d4a172", - "000000": "000000", "a5a5a5": "b26c55", "424242": "380927", "5a5a63": "6d1757", "bd8c42": "a3738d", "f7f75a": "c59cbe", - "9c2942": "222d84", - "ffffff": "ffffff", - "6b6b84": "6b6b84" + "9c2942": "222d84" }, "2": { "636363": "24103c", "c5c5c5": "763f94", - "000000": "000000", "a5a5a5": "402067", "424242": "4e9ea3", "5a5a63": "96eedf", "bd8c42": "8aa8cd", "f7f75a": "bdd9f2", - "9c2942": "182556", - "ffffff": "ffffff", - "6b6b84": "6b6b84" + "9c2942": "182556" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/262.json b/public/images/pokemon/variant/back/262.json index 492ca26dca5..5b22bbef5c8 100644 --- a/public/images/pokemon/variant/back/262.json +++ b/public/images/pokemon/variant/back/262.json @@ -1,24 +1,17 @@ { "1": { "525252": "7a3424", - "000000": "000000", "94949c": "ad5c41", "bdbdc5": "d2975f", "313131": "510c2b", "4a4a4a": "711956", "4d4d4d": "71231f", - "bd8c42": "bd8c42", - "f7ef5a": "f7ef5a", "ad1021": "5f0d3e", - "bd4a7b": "bd4a7b", - "ffffff": "ffffff", "de2942": "8f1c4e", - "323232": "5a1c15", - "949cad": "949cad" + "323232": "5a1c15" }, "2": { "525252": "230f3b", - "000000": "000000", "94949c": "402067", "bdbdc5": "753e93", "313131": "4f9fa4", @@ -27,10 +20,7 @@ "bd8c42": "cb6654", "f7ef5a": "ffb98c", "ad1021": "45809a", - "bd4a7b": "bd4a7b", - "ffffff": "ffffff", "de2942": "5ba7ba", - "323232": "0b1044", - "949cad": "949cad" + "323232": "0b1044" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/263.json b/public/images/pokemon/variant/back/263.json index 782b8284aab..17836f92682 100644 --- a/public/images/pokemon/variant/back/263.json +++ b/public/images/pokemon/variant/back/263.json @@ -1,27 +1,22 @@ { "1": { "424242": "481f4e", - "000000": "000000", "73635a": "481f4e", "b59c8c": "8e588f", "bdad9c": "be94bb", "947b6b": "85355a", "e6dece": "e1c7dc", "5a524a": "3c1332", - "ffffff": "ffffff", - "524231": "1795be", - "a51900": "a51900" + "524231": "1795be" }, "2": { "424242": "29155a", - "000000": "000000", "73635a": "29155a", "b59c8c": "aebcff", "bdad9c": "3d2661", "947b6b": "7e86d2", "e6dece": "5f4e9c", "5a524a": "40236c", - "ffffff": "ffffff", "524231": "d0037a", "a51900": "d0037a" } diff --git a/public/images/pokemon/variant/back/264.json b/public/images/pokemon/variant/back/264.json index b6edee70ea4..9dbed087704 100644 --- a/public/images/pokemon/variant/back/264.json +++ b/public/images/pokemon/variant/back/264.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "ad9c8c": "be94bb", "6b6363": "481f4e", "5a4a3a": "59193d", @@ -9,13 +8,10 @@ "a58c7b": "8e588f", "296b94": "1795be", "6badc5": "41f3ff", - "ffffff": "ffffff", - "423a21": "423a21", "737373": "643369", "94847b": "643369" }, "2": { - "000000": "000000", "ad9c8c": "3d2661", "6b6363": "1e133e", "5a4a3a": "465aab", @@ -24,8 +20,6 @@ "a58c7b": "535db9", "296b94": "d0037a", "6badc5": "ff429b", - "ffffff": "ffffff", - "423a21": "423a21", "737373": "210f4e", "94847b": "210f4e" } diff --git a/public/images/pokemon/variant/back/2670.json b/public/images/pokemon/variant/back/2670.json index 81e91c8fb72..6a8c90767ac 100644 --- a/public/images/pokemon/variant/back/2670.json +++ b/public/images/pokemon/variant/back/2670.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "404040": "1d2040", "ff7373": "73e1ff", "802d2d": "1f298e", @@ -13,7 +12,6 @@ "243a66": "63132f" }, "2": { - "101010": "101010", "404040": "b3b3b3", "ff7373": "4cd9af", "802d2d": "20877a", diff --git a/public/images/pokemon/variant/back/278.json b/public/images/pokemon/variant/back/278.json index d5b6652f719..71ded3cae1d 100644 --- a/public/images/pokemon/variant/back/278.json +++ b/public/images/pokemon/variant/back/278.json @@ -1,6 +1,5 @@ { "0": { - "000000": "000000", "525252": "542b2b", "ffffff": "ecd8d4", "d6cee6": "ba928c", @@ -24,13 +23,10 @@ "319cd6": "4060bc", "8c5210": "201838", "949494": "3d5982", - "424242": "424242", "de8400": "473d6f", - "ffad31": "5b5481", - "313131": "313131" + "ffad31": "5b5481" }, "2": { - "000000": "000000", "525252": "732a22", "ffffff": "f5e1d1", "d6cee6": "d19e92", diff --git a/public/images/pokemon/variant/back/279.json b/public/images/pokemon/variant/back/279.json index 1e9870d772b..418bf94a12d 100644 --- a/public/images/pokemon/variant/back/279.json +++ b/public/images/pokemon/variant/back/279.json @@ -1,7 +1,6 @@ { "0": { "31638c": "324a26", - "101010": "101010", "5aa5ce": "40683c", "7bceef": "789c6e", "a5e6ff": "b6d9ac", @@ -17,15 +16,9 @@ "ce4252": "af2c4f" }, "1": { - "31638c": "31638c", - "101010": "101010", "5aa5ce": "4060bc", "7bceef": "657ddf", "a5e6ff": "b4b3ff", - "ced6ef": "ced6ef", - "737384": "737384", - "9cb5c5": "9cb5c5", - "ffffff": "ffffff", "8c4231": "17103f", "ffde4a": "534e72", "c57b31": "2a1f50", @@ -35,7 +28,6 @@ }, "2": { "31638c": "6f1314", - "101010": "101010", "5aa5ce": "892722", "7bceef": "be3d2f", "a5e6ff": "dd533a", diff --git a/public/images/pokemon/variant/back/282-mega.json b/public/images/pokemon/variant/back/282-mega.json index 5839ece498d..cc86a603997 100644 --- a/public/images/pokemon/variant/back/282-mega.json +++ b/public/images/pokemon/variant/back/282-mega.json @@ -5,7 +5,6 @@ "59b359": "c08f44", "8f8fb3": "d59c80", "f2f2ff": "f8efde", - "101010": "101010", "bcf2aa": "fff1c0", "ff8095": "ca2033", "d9576c": "da3e4f", @@ -20,13 +19,9 @@ "338046": "242746", "8be68b": "3f427f", "59b359": "282c5d", - "8f8fb3": "8f8fb3", - "f2f2ff": "f2f2ff", - "101010": "101010", "bcf2aa": "5b5790", "ff8095": "ed50f7", "d9576c": "d846c1", - "cfcfe5": "cfcfe5", "803340": "9e2a7c", "8585a6": "110a21", "e6e6f2": "371447", diff --git a/public/images/pokemon/variant/back/282.json b/public/images/pokemon/variant/back/282.json index 74d43b2b4fb..feae69b1303 100644 --- a/public/images/pokemon/variant/back/282.json +++ b/public/images/pokemon/variant/back/282.json @@ -5,7 +5,6 @@ "8ce68c": "ebc984", "b5f794": "fff1c0", "7b8cb5": "d59c80", - "000000": "000000", "efefff": "f8efde", "cecee6": "ffc4a6", "d64a73": "da3e4f", @@ -18,13 +17,8 @@ "73bd73": "282c5d", "8ce68c": "3f427f", "b5f794": "5b5790", - "7b8cb5": "7b8cb5", - "000000": "000000", - "efefff": "efefff", - "cecee6": "cecee6", "d64a73": "d846c1", "ff7b94": "ed50f7", - "84294a": "9e2a7c", - "a5b5ce": "a5b5ce" + "84294a": "9e2a7c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/285.json b/public/images/pokemon/variant/back/285.json index 584bd608434..1e7b07d1989 100644 --- a/public/images/pokemon/variant/back/285.json +++ b/public/images/pokemon/variant/back/285.json @@ -1,9 +1,5 @@ { "1": { - "73634a": "73634a", - "000000": "000000", - "efd6b5": "efd6b5", - "5a4a42": "5a4a42", "c5a584": "c59584", "849c7b": "9c7b9b", "9cce94": "cb94ce", @@ -11,7 +7,6 @@ }, "2": { "73634a": "575370", - "000000": "000000", "efd6b5": "e3ded8", "5a4a42": "3e3651", "c5a584": "b7ada2", diff --git a/public/images/pokemon/variant/back/286.json b/public/images/pokemon/variant/back/286.json index 9206f3c661d..74532287726 100644 --- a/public/images/pokemon/variant/back/286.json +++ b/public/images/pokemon/variant/back/286.json @@ -2,20 +2,16 @@ "1": { "215231": "522147", "84b573": "b573b2", - "000000": "000000", "639452": "945291", "bd314a": "842155", "f7636b": "f763ca", "84213a": "bd31b7", "634a3a": "63573a", - "b59c7b": "dea98c", - "f7dead": "f7dead", - "debd8c": "debd8c" + "b59c7b": "dea98c" }, "2": { "215231": "102141", "84b573": "3e6f96", - "000000": "000000", "639452": "244162", "bd314a": "682a88", "f7636b": "c763cf", diff --git a/public/images/pokemon/variant/back/29.json b/public/images/pokemon/variant/back/29.json index c7cdff7491d..685ec61ee48 100644 --- a/public/images/pokemon/variant/back/29.json +++ b/public/images/pokemon/variant/back/29.json @@ -4,12 +4,9 @@ "424284": "6b1524", "d6d6ff": "f28566", "adadce": "c94d40", - "101010": "101010", "efefff": "fed0aa", - "ffffff": "ffffff", "ff5242": "386ecf", "bd314a": "2141ac", - "dedede": "dedede", "3a6b94": "3750a4", "199c94": "668cdd" }, @@ -18,12 +15,9 @@ "424284": "2e1752", "d6d6ff": "8175d6", "adadce": "6044ac", - "101010": "101010", "efefff": "b0abff", - "ffffff": "ffffff", "ff5242": "da781a", "bd314a": "c54910", - "dedede": "dedede", "3a6b94": "c77d3a", "199c94": "e5b471" } diff --git a/public/images/pokemon/variant/back/290.json b/public/images/pokemon/variant/back/290.json index fcff6dbdc90..f11f281c1b1 100644 --- a/public/images/pokemon/variant/back/290.json +++ b/public/images/pokemon/variant/back/290.json @@ -1,7 +1,6 @@ { "0": { "427b52": "0e5502", - "000000": "000000", "b5de73": "77ce53", "73ad5a": "1e7709", "848484": "a75f18", @@ -10,7 +9,6 @@ "ffffef": "f8d57f", "fffff7": "fff3ba", "6b6b63": "7e400b", - "634a42": "634a42", "ad947b": "e8d6b6", "cebd9c": "f7ecd7", "9c8473": "bfa483", @@ -18,7 +16,6 @@ }, "1": { "427b52": "7a4f7c", - "000000": "000000", "b5de73": "c3b4c0", "73ad5a": "886883", "848484": "2a0b34", @@ -35,7 +32,6 @@ }, "2": { "427b52": "88134e", - "000000": "000000", "b5de73": "d9537b", "73ad5a": "ac265e", "848484": "125a60", diff --git a/public/images/pokemon/variant/back/298.json b/public/images/pokemon/variant/back/298.json index b7b889b4668..68138ad4b26 100644 --- a/public/images/pokemon/variant/back/298.json +++ b/public/images/pokemon/variant/back/298.json @@ -3,7 +3,6 @@ "314a8c": "851958", "6bb5ff": "ff8cc3", "639cf7": "e85ab4", - "101010": "101010", "4a7be6": "d2488d", "3a6bd6": "9c3e9c", "deefff": "ffe1fa", @@ -13,7 +12,6 @@ "314a8c": "4f4969", "6bb5ff": "f2dbb8", "639cf7": "c9c1b5", - "101010": "101010", "4a7be6": "a4a88c", "3a6bd6": "8f6b85", "deefff": "ffffff", diff --git a/public/images/pokemon/variant/back/3-gigantamax.json b/public/images/pokemon/variant/back/3-gigantamax.json index b618abecbcc..949bb2ef621 100644 --- a/public/images/pokemon/variant/back/3-gigantamax.json +++ b/public/images/pokemon/variant/back/3-gigantamax.json @@ -5,7 +5,6 @@ "bd6a31": "012729", "ffee52": "37d6de", "debd29": "078a8f", - "101010": "101010", "de4141": "3f1375", "ff7b73": "712f8f", "ffbdbd": "a266b0", @@ -15,8 +14,7 @@ "2e5519": "38001c", "83de7b": "ff745e", "107b6a": "b80479", - "20b49c": "de3592", - "fdfdfd": "fdfdfd" + "20b49c": "de3592" }, "2": { "833100": "0b2e01", @@ -24,7 +22,6 @@ "bd6a31": "420514", "ffee52": "f75ea8", "debd29": "a30a66", - "101010": "101010", "de4141": "3c8227", "ff7b73": "9db042", "ffbdbd": "e7e385", @@ -34,7 +31,6 @@ "2e5519": "011c38", "83de7b": "80ced9", "107b6a": "d15d04", - "20b49c": "fa8405", - "fdfdfd": "fdfdfd" + "20b49c": "fa8405" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/3.json b/public/images/pokemon/variant/back/3.json index 0c179dd5e4a..4fd41c3a1c8 100644 --- a/public/images/pokemon/variant/back/3.json +++ b/public/images/pokemon/variant/back/3.json @@ -7,7 +7,6 @@ "debd29": "078a8f", "bd6b31": "168a69", "de4242": "3f1375", - "101010": "101010", "ffef52": "5fc7c7", "105242": "190038", "107b6b": "c21f7e", @@ -15,8 +14,7 @@ "2e5519": "38001c", "5ad6c5": "f062a4", "21b59c": "de3592", - "84de7b": "ff745e", - "ffffff": "ffffff" + "84de7b": "ff745e" }, "2": { "843100": "420514", @@ -26,7 +24,6 @@ "debd29": "a30a66", "bd6b31": "852a41", "de4242": "3c8227", - "101010": "101010", "ffef52": "f75ea8", "105242": "381601", "2e5519": "011c38", @@ -34,7 +31,6 @@ "5a9c3a": "446b94", "5ad6c5": "faa405", "21b59c": "fa8405", - "84de7b": "80ced9", - "ffffff": "ffffff" + "84de7b": "80ced9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/30.json b/public/images/pokemon/variant/back/30.json index 5ddd63925f4..bfb1a5eca4f 100644 --- a/public/images/pokemon/variant/back/30.json +++ b/public/images/pokemon/variant/back/30.json @@ -5,15 +5,10 @@ "8cc5ce": "c94d40", "c5e6ef": "f28566", "193a73": "3750a4", - "101010": "101010", "1063b5": "131f65", - "4a84f7": "4a84f7", - "ffffff": "ffffff", "c52110": "2141ac", "ff9c8c": "65a4e7", - "ef4a3a": "386ecf", - "d6d6d6": "d6d6d6", - "848484": "848484" + "ef4a3a": "386ecf" }, "2": { "5a94b5": "402489", @@ -21,14 +16,10 @@ "8cc5ce": "6044ac", "c5e6ef": "8175d6", "193a73": "c77d3a", - "101010": "101010", "1063b5": "883f16", "4a84f7": "e5b471", - "ffffff": "ffffff", "c52110": "c54910", "ff9c8c": "f2ae45", - "ef4a3a": "da781a", - "d6d6d6": "d6d6d6", - "848484": "848484" + "ef4a3a": "da781a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/300.json b/public/images/pokemon/variant/back/300.json index 75a46a00d6b..8e5d73ee067 100644 --- a/public/images/pokemon/variant/back/300.json +++ b/public/images/pokemon/variant/back/300.json @@ -4,7 +4,6 @@ "9c3142": "66054d", "f7dead": "e5ced2", "efbd7b": "cca3b0", - "101010": "101010", "f79cb5": "ff5959", "d65a7b": "991657", "ef7b94": "cc3359", @@ -15,7 +14,6 @@ "9c3142": "46518c", "f7dead": "ffffff", "efbd7b": "e5ced2", - "101010": "101010", "f79cb5": "adcad8", "d65a7b": "6379a5", "ef7b94": "85a2bf", @@ -26,7 +24,6 @@ "9c3142": "661422", "f7dead": "b2dfff", "efbd7b": "7a94cc", - "101010": "101010", "f79cb5": "e58f67", "d65a7b": "99352d", "ef7b94": "cc6651", diff --git a/public/images/pokemon/variant/back/301.json b/public/images/pokemon/variant/back/301.json index 4e39e9d194c..b9e533916ce 100644 --- a/public/images/pokemon/variant/back/301.json +++ b/public/images/pokemon/variant/back/301.json @@ -1,7 +1,6 @@ { "0": { "422963": "66054d", - "000000": "000000", "a573c5": "ff5959", "634a7b": "991657", "8452a5": "cc3359", @@ -13,7 +12,6 @@ }, "1": { "422963": "65597f", - "000000": "000000", "a573c5": "ffffff", "634a7b": "948eb2", "8452a5": "cecee5", @@ -25,7 +23,6 @@ }, "2": { "422963": "a84859", - "000000": "000000", "a573c5": "f9f8a4", "634a7b": "ea9360", "8452a5": "efbd7c", diff --git a/public/images/pokemon/variant/back/302-mega.json b/public/images/pokemon/variant/back/302-mega.json index 5540f0ec64f..3d2f5c62fb1 100644 --- a/public/images/pokemon/variant/back/302-mega.json +++ b/public/images/pokemon/variant/back/302-mega.json @@ -5,7 +5,6 @@ "ff4a5a": "e945af", "cc3f7c": "b22391", "393952": "123812", - "000000": "000000", "aca4f6": "b2ca9b", "5a4a94": "416a3d", "8b73d5": "86ad74", @@ -19,7 +18,6 @@ "ff4a5a": "236dbc", "cc3f7c": "153db2", "393952": "580a16", - "000000": "000000", "aca4f6": "e0604e", "5a4a94": "7e141c", "8b73d5": "be3933", diff --git a/public/images/pokemon/variant/back/302.json b/public/images/pokemon/variant/back/302.json index 2382a267541..deabf62908c 100644 --- a/public/images/pokemon/variant/back/302.json +++ b/public/images/pokemon/variant/back/302.json @@ -4,7 +4,6 @@ "ada5f7": "b2ca9b", "5a4a94": "416a3d", "8c73d6": "86ad74", - "000000": "000000", "735aad": "5d8853", "c51021": "844bdd", "ff4a5a": "b38eec", @@ -19,7 +18,6 @@ "ada5f7": "e0604e", "5a4a94": "7e141c", "8c73d6": "be3933", - "000000": "000000", "735aad": "9f2123", "c51021": "185da6", "ff4a5a": "3aa9de", diff --git a/public/images/pokemon/variant/back/303-mega.json b/public/images/pokemon/variant/back/303-mega.json index 0c75755bea5..2275cf822b8 100644 --- a/public/images/pokemon/variant/back/303-mega.json +++ b/public/images/pokemon/variant/back/303-mega.json @@ -1,14 +1,9 @@ { "0": { - "000000": "000000", "9ca494": "e175b4", "737373": "c14c82", - "212121": "212121", "4a4a4a": "6f264f", - "7b5a29": "7b5a29", "ffc55a": "e4c997", - "cdcdcd": "cdcdcd", - "f8f8f8": "f8f8f8", "984868": "1f194c", "b86088": "31296a", "de9441": "ad8867", @@ -17,15 +12,10 @@ "732041": "201434" }, "1": { - "000000": "000000", "9ca494": "4fa285", "737373": "347c7d", - "212121": "212121", "4a4a4a": "193e49", - "7b5a29": "7b5a29", "ffc55a": "d6c491", - "cdcdcd": "cdcdcd", - "f8f8f8": "f8f8f8", "984868": "a52f22", "b86088": "ff725a", "de9441": "bc8a52", @@ -34,15 +24,11 @@ "732041": "162843" }, "2": { - "000000": "000000", "9ca494": "ba94e6", "737373": "8a62d0", - "212121": "212121", "4a4a4a": "332c76", "7b5a29": "706d80", "ffc55a": "cfc8e4", - "cdcdcd": "cdcdcd", - "f8f8f8": "f8f8f8", "984868": "a81931", "b86088": "f04948", "de9441": "b1a3ca", diff --git a/public/images/pokemon/variant/back/303.json b/public/images/pokemon/variant/back/303.json index 477efdfbaa4..117f45dd7a4 100644 --- a/public/images/pokemon/variant/back/303.json +++ b/public/images/pokemon/variant/back/303.json @@ -5,8 +5,6 @@ "000000": "101010", "737373": "c14c82", "9c4a6b": "1f194c", - "cecece": "cecece", - "ffffff": "ffffff", "de9442": "ad8867", "7b5a29": "764d32", "ffc55a": "e4c997", @@ -18,8 +16,6 @@ "000000": "101010", "737373": "347c7d", "9c4a6b": "b53a29", - "cecece": "cecece", - "ffffff": "ffffff", "de9442": "a99372", "7b5a29": "6b5424", "ffc55a": "d6c491", @@ -31,8 +27,6 @@ "000000": "101010", "737373": "9d7cd6", "9c4a6b": "b53a29", - "cecece": "cecece", - "ffffff": "ffffff", "de9442": "b1a3ca", "7b5a29": "706d80", "ffc55a": "cfc8e4", diff --git a/public/images/pokemon/variant/back/304.json b/public/images/pokemon/variant/back/304.json index 50127505ab4..15b3f4bb65f 100644 --- a/public/images/pokemon/variant/back/304.json +++ b/public/images/pokemon/variant/back/304.json @@ -4,7 +4,6 @@ "525a6b": "6c5440", "ceced6": "cbc4a2", "ffffff": "fff2e5", - "000000": "000000", "3a3a4a": "122919", "525263": "2c4531", "316b9c": "8acc0e", @@ -16,11 +15,8 @@ "525a6b": "2b265d", "ceced6": "91a1e3", "ffffff": "cdd9fa", - "000000": "000000", "3a3a4a": "371219", "525263": "611f26", - "316b9c": "316b9c", - "6bbdff": "6bbdff", "737b94": "c2584c" }, "2": { @@ -28,7 +24,6 @@ "525a6b": "722f15", "ceced6": "d2954e", "ffffff": "ffcc7d", - "000000": "000000", "3a3a4a": "192c45", "525263": "2c4368", "316b9c": "05b1ad", diff --git a/public/images/pokemon/variant/back/305.json b/public/images/pokemon/variant/back/305.json index 2cd9ba15a9c..d23f3f6609c 100644 --- a/public/images/pokemon/variant/back/305.json +++ b/public/images/pokemon/variant/back/305.json @@ -3,7 +3,6 @@ "6b6b7b": "6c5440", "ffffff": "fff2e5", "c5ced6": "cbc4a2", - "000000": "000000", "9c9cad": "bca88c", "424a52": "492d1c", "7b8494": "947d63", @@ -16,7 +15,6 @@ "6b6b7b": "2b265d", "ffffff": "cdd9fa", "c5ced6": "91a1e3", - "000000": "000000", "9c9cad": "686dc0", "424a52": "1d153f", "7b8494": "433f93", @@ -29,7 +27,6 @@ "6b6b7b": "722f15", "ffffff": "ffcc7d", "c5ced6": "d2954e", - "000000": "000000", "9c9cad": "a45f34", "424a52": "521709", "7b8494": "873e20", diff --git a/public/images/pokemon/variant/back/306-mega.json b/public/images/pokemon/variant/back/306-mega.json index 3ae17cb8c9d..cb90675d57c 100644 --- a/public/images/pokemon/variant/back/306-mega.json +++ b/public/images/pokemon/variant/back/306-mega.json @@ -1,7 +1,6 @@ { "0": { "393939": "132c1b", - "101010": "101010", "6a6a6a": "325537", "5a5a62": "735c4a", "fefefe": "fff2e5", @@ -13,7 +12,6 @@ }, "1": { "393939": "47121b", - "101010": "101010", "6a6a6a": "8b312e", "5a5a62": "374186", "fefefe": "cdd9fa", @@ -25,7 +23,6 @@ }, "2": { "393939": "1d365e", - "101010": "101010", "6a6a6a": "385594", "5a5a62": "7a3a1a", "fefefe": "f1b25e", diff --git a/public/images/pokemon/variant/back/306.json b/public/images/pokemon/variant/back/306.json index 369e367a076..d7f234ac930 100644 --- a/public/images/pokemon/variant/back/306.json +++ b/public/images/pokemon/variant/back/306.json @@ -4,7 +4,6 @@ "cecece": "e3d9c2", "a5a5ad": "cbc4a2", "ffffff": "fff2e5", - "000000": "000000", "212129": "0b1d12", "6bbdff": "d6ff42", "848494": "bca88c", @@ -18,7 +17,6 @@ "cecece": "b9c8f5", "a5a5ad": "91a1e3", "ffffff": "cdd9fa", - "000000": "000000", "212129": "290d13", "6bbdff": "ffcf47", "848494": "686dc0", @@ -32,7 +30,6 @@ "cecece": "f2b864", "a5a5ad": "d48e3c", "ffffff": "ffcc7d", - "000000": "000000", "212129": "101a37", "6bbdff": "2aebcf", "848494": "a45f34", diff --git a/public/images/pokemon/variant/back/307.json b/public/images/pokemon/variant/back/307.json index 3bdadaa8e16..8420a8631be 100644 --- a/public/images/pokemon/variant/back/307.json +++ b/public/images/pokemon/variant/back/307.json @@ -3,7 +3,6 @@ "7b6b6b": "7a5f5f", "b5adad": "9f8383", "e6dede": "deccc3", - "000000": "000000", "3a84b5": "7e4377", "3a4a5a": "5a2859", "6bcee6": "f4a8c8", @@ -13,7 +12,6 @@ "7b6b6b": "314b76", "b5adad": "677d98", "e6dede": "c2cfdb", - "000000": "000000", "3a84b5": "51876e", "3a4a5a": "113926", "6bcee6": "7edfb7", diff --git a/public/images/pokemon/variant/back/308-mega.json b/public/images/pokemon/variant/back/308-mega.json index 3517d7853a9..db572ca4391 100644 --- a/public/images/pokemon/variant/back/308-mega.json +++ b/public/images/pokemon/variant/back/308-mega.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "83414a": "59141d", "8b838b": "5a4357", "e6738b": "a53835", @@ -8,7 +7,6 @@ "bdafad": "a5829d", "52414a": "432641", "e7e3e7": "e0cdd9", - "f9f8f7": "f9f8f7", "a47329": "722966", "eebd5a": "a25793", "f6de83": "ee9bd5", @@ -16,7 +14,6 @@ "42a2bd": "efa360" }, "2": { - "101010": "101010", "83414a": "461f5d", "8b838b": "445a7e", "e6738b": "7d5187", diff --git a/public/images/pokemon/variant/back/308.json b/public/images/pokemon/variant/back/308.json index d8a8e696541..1f83f02c026 100644 --- a/public/images/pokemon/variant/back/308.json +++ b/public/images/pokemon/variant/back/308.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "84424a": "59141d", "e6738c": "a53835", "ce5a73": "8b2e2b", @@ -15,7 +14,6 @@ "f7de84": "ee9bd5" }, "2": { - "101010": "101010", "84424a": "311548", "e6738c": "7d5187", "ce5a73": "633971", @@ -24,7 +22,6 @@ "b54a5a": "461f5d", "8c848c": "576787", "ada5ad": "7e8daa", - "c5c5c5": "c5c5c5", "a57329": "205a9e", "efbd5a": "3a8dca", "f7de84": "5abbef" diff --git a/public/images/pokemon/variant/back/309.json b/public/images/pokemon/variant/back/309.json index b471b8f69f4..6506ed57935 100644 --- a/public/images/pokemon/variant/back/309.json +++ b/public/images/pokemon/variant/back/309.json @@ -5,11 +5,9 @@ "3a5a52": "091545", "84d67b": "3e6194", "b5ef9c": "6692c4", - "101010": "101010", "ffef42": "ff4039", "63bd63": "284781", - "cea53a": "d11a2d", - "ffffff": "ffffff" + "cea53a": "d11a2d" }, "2": { "639c63": "b399bd", @@ -17,10 +15,8 @@ "3a5a52": "825e94", "84d67b": "edd9ef", "b5ef9c": "ffeff5", - "101010": "101010", "ffef42": "ef60c5", "63bd63": "d5c1d9", - "cea53a": "d03ab2", - "ffffff": "ffffff" + "cea53a": "d03ab2" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/31.json b/public/images/pokemon/variant/back/31.json index 7cbce870f78..e2cbab27a23 100644 --- a/public/images/pokemon/variant/back/31.json +++ b/public/images/pokemon/variant/back/31.json @@ -3,12 +3,9 @@ "314a4a": "593860", "638cad": "9d6ea7", "5ab5ce": "bd94c5", - "101010": "101010", "c5ad5a": "c5c5a4", "9cd6de": "eed3f3", "735a29": "73735a", - "d6cece": "d6cece", - "ffffff": "ffffff", "efe6a5": "ffffff", "e6ce8c": "e6e6d5" }, @@ -16,12 +13,9 @@ "314a4a": "441327", "638cad": "88241f", "5ab5ce": "be4234", - "101010": "101010", "c5ad5a": "c29f9a", "9cd6de": "e58060", "735a29": "734b48", - "d6cece": "d6cece", - "ffffff": "ffffff", "efe6a5": "ffede7", "e6ce8c": "e3ccc7" }, @@ -29,13 +23,9 @@ "314a4a": "210d3b", "638cad": "44286f", "5ab5ce": "5f4897", - "101010": "101010", "c5ad5a": "eab56b", "9cd6de": "5f4897", "735a29": "ad5923", - "d6cece": "d6cece", - "ffffff": "ffffff", - "efe6a5": "ffd999", - "e6ce8c": "e6ce8c" + "efe6a5": "ffd999" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/310-mega.json b/public/images/pokemon/variant/back/310-mega.json index 8ab3d0646dc..b0be523f618 100644 --- a/public/images/pokemon/variant/back/310-mega.json +++ b/public/images/pokemon/variant/back/310-mega.json @@ -4,30 +4,23 @@ "998c4c": "630013", "ffe566": "d4302a", "d9c357": "a6101a", - "101010": "101010", "2a474d": "0d1843", "82cad9": "4c7da6", "548e99": "284781", "69b1bf": "3e6194", - "3f6a73": "1a3269", - "ff7373": "ff7373", - "f8f8f8": "f8f8f8", - "cc2929": "cc2929", - "8c3f3f": "8c3f3f" + "3f6a73": "1a3269" }, "2": { "736a3f": "810040", "998c4c": "a40f5a", "ffe566": "e545b6", "d9c357": "c32574", - "101010": "101010", "2a474d": "3f5476", "82cad9": "c1ddeb", "548e99": "92b4cb", "69b1bf": "b3d1e5", "3f6a73": "6f8caa", "ff7373": "8f60ef", - "f8f8f8": "f8f8f8", "cc2929": "893edf", "8c3f3f": "4a0698" } diff --git a/public/images/pokemon/variant/back/310.json b/public/images/pokemon/variant/back/310.json index 68668df185a..c6370627111 100644 --- a/public/images/pokemon/variant/back/310.json +++ b/public/images/pokemon/variant/back/310.json @@ -4,25 +4,19 @@ "a57b5a": "6d000f", "ffef63": "d7231c", "c5ad5a": "9b0c24", - "101010": "101010", "73b5d6": "3e6194", "4a525a": "0d1a4d", "639cc5": "284781", - "5a84ad": "1a3269", - "bdbde6": "bdbde6", - "ffffff": "ffffff" + "5a84ad": "1a3269" }, "2": { "736352": "810040", "a57b5a": "9c0333", "ffef63": "e545b6", "c5ad5a": "c32574", - "101010": "101010", "73b5d6": "d5d6ee", "4a525a": "4c3a63", "639cc5": "c4bfd9", - "5a84ad": "a399bd", - "bdbde6": "bdbde6", - "ffffff": "ffffff" + "5a84ad": "a399bd" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/311.json b/public/images/pokemon/variant/back/311.json index c981b68c665..4904b5a2de3 100644 --- a/public/images/pokemon/variant/back/311.json +++ b/public/images/pokemon/variant/back/311.json @@ -3,7 +3,6 @@ "de4a42": "e070a9", "ef8484": "f89bc2", "b53131": "c24e9e", - "101010": "101010", "e6c573": "feda99", "b59c63": "c08242", "7b6352": "c08242", @@ -13,7 +12,6 @@ "de4a42": "d17e4d", "ef8484": "efa772", "b53131": "b7653c", - "101010": "101010", "e6c573": "becef1", "b59c63": "7e89bc", "7b6352": "7e89bc", @@ -23,7 +21,6 @@ "de4a42": "e2dba3", "ef8484": "fbf6e0", "b53131": "b7ac55", - "101010": "101010", "e6c573": "891e32", "b59c63": "620b05", "7b6352": "620b05", diff --git a/public/images/pokemon/variant/back/312.json b/public/images/pokemon/variant/back/312.json index e6006e80bbb..b9b732fde2e 100644 --- a/public/images/pokemon/variant/back/312.json +++ b/public/images/pokemon/variant/back/312.json @@ -1,7 +1,6 @@ { "1": { "4252de": "533bb0", - "101010": "101010", "739cf7": "c5ade5", "5a84ef": "8f6cd0", "e6c573": "b4dfe5", @@ -11,7 +10,6 @@ }, "2": { "4252de": "7cc5a5", - "101010": "101010", "739cf7": "e6f8ee", "5a84ef": "c4ddd2", "e6c573": "2e3a7f", diff --git a/public/images/pokemon/variant/back/315.json b/public/images/pokemon/variant/back/315.json index 124fba8a7b0..0f364cacd18 100644 --- a/public/images/pokemon/variant/back/315.json +++ b/public/images/pokemon/variant/back/315.json @@ -3,7 +3,6 @@ "3a5229": "0b2337", "5a9452": "153a51", "a5de73": "408592", - "000000": "000000", "73c55a": "215569", "295a94": "482571", "a5314a": "af681a", @@ -19,7 +18,6 @@ "3a5229": "201443", "5a9452": "402765", "a5de73": "aa78cd", - "000000": "000000", "73c55a": "66418b", "295a94": "6f104e", "a5314a": "8c2601", diff --git a/public/images/pokemon/variant/back/320.json b/public/images/pokemon/variant/back/320.json index e3be16343f5..3cb2d6ca5c0 100644 --- a/public/images/pokemon/variant/back/320.json +++ b/public/images/pokemon/variant/back/320.json @@ -5,7 +5,6 @@ "639cce": "ad252f", "4a84b5": "950f30", "315a94": "7d082e", - "000000": "000000", "ceb584": "cba6b8", "6b634a": "6c3f51", "ffefce": "eed9ef" @@ -16,7 +15,6 @@ "639cce": "503769", "4a84b5": "3d2955", "315a94": "34224b", - "000000": "000000", "ceb584": "b7a3bf", "6b634a": "5c4964", "ffefce": "eed9ef" diff --git a/public/images/pokemon/variant/back/321.json b/public/images/pokemon/variant/back/321.json index 51ee130e4ee..a893b313e54 100644 --- a/public/images/pokemon/variant/back/321.json +++ b/public/images/pokemon/variant/back/321.json @@ -1,6 +1,5 @@ { "1": { - "847384": "847384", "1052ce": "a4172f", "293a9c": "510019", "2173de": "ce323d", @@ -8,7 +7,6 @@ "94adff": "f5796d", "5a84ef": "e64f4f", "efe6ff": "e2c6d0", - "101010": "101010", "d6cede": "cba6b8" }, "2": { @@ -20,7 +18,6 @@ "94adff": "b484ce", "5a84ef": "8f69a3", "efe6ff": "fcebf6", - "101010": "101010", "d6cede": "eed9ef" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/327.json b/public/images/pokemon/variant/back/327.json index 29d66d38e43..850b92e64a6 100644 --- a/public/images/pokemon/variant/back/327.json +++ b/public/images/pokemon/variant/back/327.json @@ -1,7 +1,6 @@ { "1": { "7b4231": "21384a", - "101010": "101010", "735242": "122c3b", "e6d6a5": "b2dcd7", "cea573": "6ca9ac", @@ -11,7 +10,6 @@ }, "2": { "7b4231": "75211a", - "101010": "101010", "735242": "52180f", "e6d6a5": "be5f3c", "cea573": "93381f", diff --git a/public/images/pokemon/variant/back/328.json b/public/images/pokemon/variant/back/328.json index 354371495b7..0645acb54cf 100644 --- a/public/images/pokemon/variant/back/328.json +++ b/public/images/pokemon/variant/back/328.json @@ -4,9 +4,7 @@ "734242": "254226", "ef7342": "c9da97", "ff947b": "ffffbc", - "212121": "212121", "cecec5": "e99339", - "ffffff": "ffffff", "a5ada5": "bc6427", "848484": "89370b" }, @@ -15,9 +13,7 @@ "734242": "17465e", "ef7342": "5dd7db", "ff947b": "84f6e4", - "212121": "212121", "cecec5": "e4a056", - "ffffff": "ffffff", "a5ada5": "cd7537", "848484": "a84e20" } diff --git a/public/images/pokemon/variant/back/329.json b/public/images/pokemon/variant/back/329.json index 38397678f36..27efbde73c5 100644 --- a/public/images/pokemon/variant/back/329.json +++ b/public/images/pokemon/variant/back/329.json @@ -8,8 +8,6 @@ "737352": "1e4320", "bdad7b": "89af58", "e6d68c": "b6cd74", - "bdbdde": "bdbdde", - "ffffff": "ffffff", "ffffa5": "ffffb5" }, "2": { @@ -21,8 +19,6 @@ "737352": "2a658b", "bdad7b": "69b0c8", "e6d68c": "92ddf2", - "bdbdde": "bdbdde", - "ffffff": "ffffff", "ffffa5": "ffffb5" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/330.json b/public/images/pokemon/variant/back/330.json index 96ade337889..2f48030d162 100644 --- a/public/images/pokemon/variant/back/330.json +++ b/public/images/pokemon/variant/back/330.json @@ -4,27 +4,22 @@ "84293a": "752d0c", "6ba573": "d8b430", "ce3a4a": "bc6427", - "101010": "101010", "5a7b52": "8b6009", "de6373": "e99339", "94d69c": "f6e85f", "b5de73": "e4ee9e", - "ffffff": "ffffff", "8ca552": "b3c46a", - "526321": "555e3d", - "deff8c": "deff8c" + "526321": "555e3d" }, "2": { "315a5a": "171997", "84293a": "a84e20", "6ba573": "465fd4", "ce3a4a": "cd7537", - "101010": "101010", "5a7b52": "2836af", "de6373": "f79021", "94d69c": "80a1f5", "b5de73": "94e3ff", - "ffffff": "ffffff", "8ca552": "4dabe8", "526321": "003c64", "deff8c": "d7fff7" diff --git a/public/images/pokemon/variant/back/333.json b/public/images/pokemon/variant/back/333.json index 64d67f5b282..7bc30c324e0 100644 --- a/public/images/pokemon/variant/back/333.json +++ b/public/images/pokemon/variant/back/333.json @@ -4,23 +4,19 @@ "3a6b84": "59377f", "7bceff": "e9d9fa", "63ade6": "cab1ec", - "101010": "101010", "9c9cc5": "3f328d", "ffffff": "80a1f1", "cecee6": "5251bd", - "848494": "392166", - "5a5a73": "5a5a73" + "848494": "392166" }, "2": { "5a94ce": "bc4e8b", "3a6b84": "84265b", "7bceff": "ff9ebd", "63ade6": "e677a5", - "101010": "101010", "9c9cc5": "bf6744", "ffffff": "ffddb4", "cecee6": "eb9d6a", - "848494": "892f26", - "5a5a73": "5a5a73" + "848494": "892f26" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/334-mega.json b/public/images/pokemon/variant/back/334-mega.json index 93a67bca961..38125962e9c 100644 --- a/public/images/pokemon/variant/back/334-mega.json +++ b/public/images/pokemon/variant/back/334-mega.json @@ -10,7 +10,6 @@ "deadc4": "45256a", "95d1e5": "e9d9fa", "4b6973": "462a66", - "101010": "101010", "74a3b3": "947dcf" }, "2": { @@ -24,7 +23,6 @@ "deadc4": "c63057", "95d1e5": "ff93ac", "4b6973": "771743", - "101010": "101010", "74a3b3": "cb457d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/334.json b/public/images/pokemon/variant/back/334.json index fb032bb4190..ba966e3ea90 100644 --- a/public/images/pokemon/variant/back/334.json +++ b/public/images/pokemon/variant/back/334.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "4a6394": "59377f", "109cce": "947dcf", "5ac5ff": "dbc4fa", @@ -12,7 +11,6 @@ "dee6ef": "6463d8" }, "2": { - "000000": "000000", "4a6394": "84265b", "109cce": "bc4e8b", "5ac5ff": "ff9ebd", diff --git a/public/images/pokemon/variant/back/336.json b/public/images/pokemon/variant/back/336.json index 59602a1c735..1466ff88ffa 100644 --- a/public/images/pokemon/variant/back/336.json +++ b/public/images/pokemon/variant/back/336.json @@ -7,10 +7,8 @@ "efe65a": "f78db5", "deb521": "dc7592", "631919": "20525a", - "000000": "000000", "ad423a": "2d6a77", "d6524a": "108bac", - "ffffff": "ffffff", "4a3152": "616479", "a573e6": "d5cce0", "735a94": "908ea4", @@ -24,10 +22,8 @@ "efe65a": "ee9452", "deb521": "d55218", "631919": "192121", - "000000": "000000", "ad423a": "293131", "d6524a": "5a6262", - "ffffff": "ffffff", "4a3152": "942931", "a573e6": "e6628b", "735a94": "b43952", diff --git a/public/images/pokemon/variant/back/337.json b/public/images/pokemon/variant/back/337.json index 3b6b2e7d4ef..da6fab95bb7 100644 --- a/public/images/pokemon/variant/back/337.json +++ b/public/images/pokemon/variant/back/337.json @@ -5,7 +5,6 @@ "cebd6b": "505c71", "b5a552": "38384b", "846b42": "161617", - "101010": "101010", "3a423a": "20282b", "b5213a": "b81fac", "841029": "611267", @@ -17,7 +16,6 @@ "cebd6b": "8a1211", "b5a552": "630923", "846b42": "2f0616", - "101010": "101010", "3a423a": "341413", "b5213a": "30d6d6", "841029": "08adad", diff --git a/public/images/pokemon/variant/back/338.json b/public/images/pokemon/variant/back/338.json index fac0db9ac9d..8e1981ca714 100644 --- a/public/images/pokemon/variant/back/338.json +++ b/public/images/pokemon/variant/back/338.json @@ -2,7 +2,6 @@ "1": { "634a19": "2b272d", "f7e663": "8d8b7f", - "101010": "101010", "deb519": "605a4a", "9c6b21": "332c2f", "c59442": "404042", @@ -16,7 +15,6 @@ "2": { "634a19": "80849a", "f7e663": "dbe4ee", - "101010": "101010", "deb519": "b1becb", "9c6b21": "8d93a7", "c59442": "96a2ae", diff --git a/public/images/pokemon/variant/back/339.json b/public/images/pokemon/variant/back/339.json index 969045d2a02..d63ded230b8 100644 --- a/public/images/pokemon/variant/back/339.json +++ b/public/images/pokemon/variant/back/339.json @@ -6,7 +6,6 @@ "63cef7": "fbabcc", "2194bd": "8f4daf", "293142": "413aad", - "000000": "000000", "525252": "413aad", "bdbdc5": "5bd5d5", "d6d6de": "aaffd5", diff --git a/public/images/pokemon/variant/back/340.json b/public/images/pokemon/variant/back/340.json index a52e33e995f..1f4723f642b 100644 --- a/public/images/pokemon/variant/back/340.json +++ b/public/images/pokemon/variant/back/340.json @@ -4,13 +4,9 @@ "84deff": "e27f9f", "73ade6": "bd5f55", "4263b5": "655050", - "000000": "000000", "3a4a9c": "443636", "c5a542": "fff6d0", - "f7de5a": "f7de5a", - "6b5a42": "6b5a42", "637bce": "856d6d", - "7bb5e6": "885b57", - "ffffff": "ffffff" + "7bb5e6": "885b57" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/341.json b/public/images/pokemon/variant/back/341.json index efb741ef1b0..aba08b64a3a 100644 --- a/public/images/pokemon/variant/back/341.json +++ b/public/images/pokemon/variant/back/341.json @@ -4,11 +4,8 @@ "ff9c94": "d2d78f", "6b3a42": "5e2204", "f77352": "c1b63c", - "101010": "101010", "e65208": "a37d1c", - "ffffff": "ffffff", "846b52": "ad5d2f", - "cecece": "cecece", "ad9c84": "d4925f", "ceb594": "edbda3" }, @@ -17,11 +14,8 @@ "ff9c94": "dbe5a8", "6b3a42": "5b432a", "f77352": "9ab767", - "101010": "101010", "e65208": "889455", - "ffffff": "ffffff", "846b52": "7a5030", - "cecece": "cecece", "ad9c84": "a88453", "ceb594": "d9bf7e" } diff --git a/public/images/pokemon/variant/back/35.json b/public/images/pokemon/variant/back/35.json index 9ccfd640d33..063f30863fa 100644 --- a/public/images/pokemon/variant/back/35.json +++ b/public/images/pokemon/variant/back/35.json @@ -6,10 +6,8 @@ "ffd6bd": "c7a1e4", "9c8473": "72899d", "ffadad": "9786e3", - "101010": "101010", "5a3121": "20475b", - "949494": "4d5f9d", - "ffffff": "ffffff" + "949494": "4d5f9d" }, "2": { "e67b7b": "958fe6", @@ -19,8 +17,6 @@ "9c8473": "ffd2e0", "ffadad": "badfff", "101010": "321025", - "5a3121": "5a3154", - "949494": "949494", - "ffffff": "ffffff" + "5a3121": "5a3154" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/351-rainy.json b/public/images/pokemon/variant/back/351-rainy.json index 5e7a1d827f2..3835257321a 100644 --- a/public/images/pokemon/variant/back/351-rainy.json +++ b/public/images/pokemon/variant/back/351-rainy.json @@ -1,14 +1,9 @@ { "0": { "526384": "527384", - "8ccede": "8ccede", - "3a425a": "3a425a", - "84b5c5": "84b5c5", - "ffffff": "ffffff", "6373bd": "379aa9", "738cd6": "48c2b4", "b5c5de": "85de7e", - "191919": "191919", "ceeff7": "79ff5e", "5a5a52": "4f555a", "c5c5c5": "9db4c5", @@ -17,13 +12,11 @@ "1": { "526384": "3c165d", "8ccede": "f5bbf6", - "3a425a": "3a425a", "84b5c5": "aa82c1", "ffffff": "faefff", "6373bd": "512b82", "738cd6": "704cb4", "b5c5de": "ac7ce9", - "191919": "191919", "ceeff7": "c5abff", "5a5a52": "352f55", "c5c5c5": "d7d4f1", @@ -32,13 +25,10 @@ "2": { "526384": "2d5170", "8ccede": "59a3b2", - "3a425a": "3a425a", "84b5c5": "487c91", - "ffffff": "ffffff", "6373bd": "99aac3", "738cd6": "cad9ea", "b5c5de": "454fd0", - "191919": "191919", "ceeff7": "5c74e2", "5a5a52": "282e44", "c5c5c5": "605e74", diff --git a/public/images/pokemon/variant/back/351-snowy.json b/public/images/pokemon/variant/back/351-snowy.json index ddb3a3bebb7..5b69d124f6a 100644 --- a/public/images/pokemon/variant/back/351-snowy.json +++ b/public/images/pokemon/variant/back/351-snowy.json @@ -1,11 +1,6 @@ { "0": { - "73a58c": "73a58c", "bde6e6": "bee3e6", - "8ccead": "8ccead", - "29523a": "29523a", - "52736b": "52736b", - "191919": "191919", "634a73": "4a4a73", "7b52bd": "5260bd", "8c73d6": "738cd6", @@ -18,12 +13,9 @@ "8ccead": "c4dcdc", "29523a": "335c68", "52736b": "688e94", - "191919": "191919", "634a73": "1f2567", "7b52bd": "323e85", - "8c73d6": "3f59a0", - "9c9cc5": "9c9cc5", - "c5b5ff": "c5b5ff" + "8c73d6": "3f59a0" }, "2": { "73a58c": "245b68", @@ -31,7 +23,6 @@ "8ccead": "47989e", "29523a": "15364b", "52736b": "5e98a5", - "191919": "191919", "634a73": "2f4954", "7b52bd": "7eafbf", "8c73d6": "b6e7e8", diff --git a/public/images/pokemon/variant/back/351-sunny.json b/public/images/pokemon/variant/back/351-sunny.json index d0d87551e48..2e80bb8d6bb 100644 --- a/public/images/pokemon/variant/back/351-sunny.json +++ b/public/images/pokemon/variant/back/351-sunny.json @@ -5,7 +5,6 @@ "ffffff": "f0dee7", "d6844a": "d6994a", "633129": "633829", - "191919": "191919", "ef7b4a": "ff566c", "ce5a4a": "bf4b6a", "5a5a52": "5a5155", @@ -17,7 +16,6 @@ "ffffff": "d7d4f1", "d6844a": "d34d51", "633129": "4a0427", - "191919": "191919", "ef7b4a": "cd385b", "ce5a4a": "871537", "5a5a52": "282e44", diff --git a/public/images/pokemon/variant/back/351.json b/public/images/pokemon/variant/back/351.json index 1e0c0e15946..d79aa01e05f 100644 --- a/public/images/pokemon/variant/back/351.json +++ b/public/images/pokemon/variant/back/351.json @@ -4,7 +4,6 @@ "949494": "496c9a", "e6dede": "9ec7dc", "f7f7ef": "cfe1e7", - "000000": "000000", "cebdbd": "6288a6", "a59ca5": "6a0650", "ffffff": "b12348", @@ -15,7 +14,6 @@ "949494": "344372", "e6dede": "6f86a4", "f7f7ef": "a7bcd1", - "000000": "000000", "cebdbd": "425a8a", "a59ca5": "93290d", "ffffff": "d87a26", diff --git a/public/images/pokemon/variant/back/352.json b/public/images/pokemon/variant/back/352.json index 565b4cf87d3..b68f95b14a2 100644 --- a/public/images/pokemon/variant/back/352.json +++ b/public/images/pokemon/variant/back/352.json @@ -4,44 +4,38 @@ "73315a": "0e3354", "8c7b5a": "824c0b", "d663ad": "54a3ca", - "000000": "000000", "f7ef7b": "f7dd7b", "dec55a": "e5b740", "bda552": "cd9a2b", "42635a": "296161", "5a9473": "418b87", "5abd73": "5db5a8", - "7bd684": "9cefbc", - "ffffff": "ffffff" + "7bd684": "9cefbc" }, "1": { "a54284": "3d48b2", "73315a": "202065", "8c7b5a": "7b2577", "d663ad": "8597d6", - "000000": "000000", "f7ef7b": "ed7cd8", "dec55a": "cb57b6", "bda552": "962c8d", "42635a": "762f0f", "5a9473": "bd7932", "5abd73": "e4ad46", - "7bd684": "ffd577", - "ffffff": "ffffff" + "7bd684": "ffd577" }, "2": { "a54284": "64152b", "73315a": "400e2a", "8c7b5a": "307855", "d663ad": "ab2f43", - "000000": "000000", "f7ef7b": "affec6", "dec55a": "7edb9f", "bda552": "52b57a", "42635a": "58214c", "5a9473": "b45599", "5abd73": "d775b5", - "7bd684": "f2a8d6", - "ffffff": "ffffff" + "7bd684": "f2a8d6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/353.json b/public/images/pokemon/variant/back/353.json index 40c30d2720c..a888181b501 100644 --- a/public/images/pokemon/variant/back/353.json +++ b/public/images/pokemon/variant/back/353.json @@ -4,7 +4,6 @@ "635a8c": "9c4572", "73739c": "c25e87", "8484ad": "d57b96", - "000000": "000000", "19315a": "2c1432", "428cad": "5452c7", "73b5d6": "8476d7", @@ -16,7 +15,6 @@ "635a8c": "487c5d", "73739c": "6d9772", "8484ad": "93aa7f", - "000000": "000000", "19315a": "20311c", "428cad": "47b858", "73b5d6": "71d765", diff --git a/public/images/pokemon/variant/back/354-mega.json b/public/images/pokemon/variant/back/354-mega.json index 01632fcde0f..1010d14aaf3 100644 --- a/public/images/pokemon/variant/back/354-mega.json +++ b/public/images/pokemon/variant/back/354-mega.json @@ -5,7 +5,6 @@ "eebd5a": "b78d90", "d59c39": "7d656d", "322c33": "30142a", - "010101": "010101", "685f6b": "6c2f4c", "4d464f": "592145", "7c777d": "934861", @@ -20,7 +19,6 @@ "eebd5a": "4d4f5b", "d59c39": "3b3d54", "322c33": "2b454a", - "010101": "010101", "685f6b": "71a680", "4d464f": "5b777b", "7c777d": "9cbf81", diff --git a/public/images/pokemon/variant/back/354.json b/public/images/pokemon/variant/back/354.json index 2cf56096218..a6004d0fe69 100644 --- a/public/images/pokemon/variant/back/354.json +++ b/public/images/pokemon/variant/back/354.json @@ -4,7 +4,6 @@ "9c9ca5": "934861", "3a3142": "2e0920", "7b7b84": "6c2f4c", - "000000": "000000", "a57b10": "715568", "523a00": "372a38", "efbd5a": "b78d90", @@ -16,7 +15,6 @@ "9c9ca5": "9ed18a", "3a3142": "2b454a", "7b7b84": "84bd95", - "000000": "000000", "a57b10": "33365e", "523a00": "151433", "efbd5a": "4d4f5b", diff --git a/public/images/pokemon/variant/back/357.json b/public/images/pokemon/variant/back/357.json index c2b00a581c0..b7091079ec3 100644 --- a/public/images/pokemon/variant/back/357.json +++ b/public/images/pokemon/variant/back/357.json @@ -15,7 +15,6 @@ "b5946b": "ffefd5" }, "2": { - "000000": "000000", "52ad52": "2d3c5c", "216321": "101121", "3a8c4a": "1f2547", diff --git a/public/images/pokemon/variant/back/358.json b/public/images/pokemon/variant/back/358.json index e0ad4916ffd..d23fb2c57fc 100644 --- a/public/images/pokemon/variant/back/358.json +++ b/public/images/pokemon/variant/back/358.json @@ -1,11 +1,7 @@ { "0": { - "a57352": "a57352", "000000": "101010", - "e6a54a": "e6a54a", "ffd65a": "ffce5a", - "ffe694": "ffe694", - "ffffff": "ffffff", "424a6b": "3a1837", "c5e6ff": "d8c8d9", "9cc5e6": "c3b5c6", @@ -20,7 +16,6 @@ "e6a54a": "cca375", "ffd65a": "ebd4b0", "ffe694": "faedcd", - "ffffff": "ffffff", "424a6b": "29346b", "c5e6ff": "c5c2dc", "9cc5e6": "afadcd", @@ -35,7 +30,6 @@ "e6a54a": "c86b3e", "ffd65a": "ee9b65", "ffe694": "f4c89d", - "ffffff": "ffffff", "424a6b": "593a58", "c5e6ff": "f7e6e5", "9cc5e6": "e8d6d6", diff --git a/public/images/pokemon/variant/back/36.json b/public/images/pokemon/variant/back/36.json index a68781af567..0f92d1fc987 100644 --- a/public/images/pokemon/variant/back/36.json +++ b/public/images/pokemon/variant/back/36.json @@ -3,13 +3,10 @@ "52423a": "59435c", "8c4a52": "7e4b9c", "de6363": "958fe6", - "101010": "101010", "7b6b63": "ab6f83", "ffc5b5": "e5faf2", "ef9494": "abcbff", - "52314a": "52314a", "d67ba5": "f5c4e0", - "bd5a7b": "d1829b", - "ffffff": "ffffff" + "bd5a7b": "d1829b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/361.json b/public/images/pokemon/variant/back/361.json index 19b1e1aa055..6428c992de9 100644 --- a/public/images/pokemon/variant/back/361.json +++ b/public/images/pokemon/variant/back/361.json @@ -5,7 +5,6 @@ "efc56b": "c36193", "ffefa5": "f5a4c6", "ff735a": "ddb478", - "000000": "000000", "b55a31": "cf9d61", "3a3131": "2e161b", "4a4a4a": "432525" @@ -16,7 +15,6 @@ "efc56b": "1f4419", "ffefa5": "5f884c", "ff735a": "071f12", - "000000": "000000", "b55a31": "03130b", "3a3131": "586b62", "4a4a4a": "8c9f94" diff --git a/public/images/pokemon/variant/back/362-mega.json b/public/images/pokemon/variant/back/362-mega.json index 2f3d13a6944..244a1c96aeb 100644 --- a/public/images/pokemon/variant/back/362-mega.json +++ b/public/images/pokemon/variant/back/362-mega.json @@ -1,7 +1,6 @@ { "1": { "393941": "050832", - "010101": "010101", "2b74a8": "84073c", "bbeeff": "f9383e", "7dbbee": "b7113a", @@ -13,7 +12,6 @@ }, "2": { "393941": "221315", - "010101": "010101", "2b74a8": "0c4b3a", "bbeeff": "5ce11a", "7dbbee": "009325", diff --git a/public/images/pokemon/variant/back/362.json b/public/images/pokemon/variant/back/362.json index 337a5137ab9..13cdf946670 100644 --- a/public/images/pokemon/variant/back/362.json +++ b/public/images/pokemon/variant/back/362.json @@ -1,18 +1,15 @@ { "1": { "3a3a42": "0d1146", - "000000": "000000", "a5a5ad": "f9383e", "7b7b84": "84073c", "7b7b94": "151a57", "e6e6f7": "a2b7e5", "adadce": "2f3c84", - "c5cee6": "6076c6", - "52526b": "52526b" + "c5cee6": "6076c6" }, "2": { "3a3a42": "221315", - "000000": "000000", "a5a5ad": "009325", "7b7b84": "0c4b3a", "7b7b94": "4a282a", diff --git a/public/images/pokemon/variant/back/37.json b/public/images/pokemon/variant/back/37.json index 1c7262f4d92..3e4728637c6 100644 --- a/public/images/pokemon/variant/back/37.json +++ b/public/images/pokemon/variant/back/37.json @@ -5,7 +5,6 @@ "732100": "381d5b", "bd735a": "ba6cbd", "e6946b": "dc91d5", - "101010": "101010", "ffde94": "d4c5b6", "ffe6b5": "e8e0d1", "845231": "743a67", @@ -18,7 +17,6 @@ "732100": "1e1323", "bd735a": "33325e", "e6946b": "45457c", - "101010": "101010", "ffde94": "9fb3c1", "ffe6b5": "d8e4e8", "845231": "1b1b47", diff --git a/public/images/pokemon/variant/back/371.json b/public/images/pokemon/variant/back/371.json index 5191634020b..a8ee100bde5 100644 --- a/public/images/pokemon/variant/back/371.json +++ b/public/images/pokemon/variant/back/371.json @@ -3,32 +3,20 @@ "4a5263": "4f342a", "d6cede": "ead1b5", "a59cb5": "bc997e", - "000000": "000000", "849494": "89624e", "5a84ad": "a8662e", "bda573": "28407d", - "f7f7ff": "f7f7ff", "63ade6": "d19656", - "847352": "1b2867", - "ffffff": "ffffff", - "9c4219": "9c4219", - "d67342": "d67342", - "94d6ff": "94d6ff" + "847352": "1b2867" }, "2": { "4a5263": "55111e", "d6cede": "eacb8e", "a59cb5": "c79961", - "000000": "000000", "849494": "89624e", "5a84ad": "b33c47", "bda573": "e5cdab", - "f7f7ff": "f7f7ff", "63ade6": "c7515c", - "847352": "c79961", - "ffffff": "ffffff", - "9c4219": "9c4219", - "d67342": "d67342", - "94d6ff": "94d6ff" + "847352": "c79961" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/372.json b/public/images/pokemon/variant/back/372.json index 3adf4b49788..8002e0728b7 100644 --- a/public/images/pokemon/variant/back/372.json +++ b/public/images/pokemon/variant/back/372.json @@ -3,9 +3,7 @@ "525263": "5e3528", "7b7384": "704a3b", "d6d6d6": "ead1b5", - "efefd6": "efefd6", "adadb5": "bc997e", - "191919": "191919", "525a52": "9b572b", "9494a5": "9b735d", "4a423a": "6e2a12", @@ -17,9 +15,7 @@ "525263": "7b4e2e", "7b7384": "a16f44", "d6d6d6": "f2d9a9", - "efefd6": "efefd6", "adadb5": "d0a674", - "191919": "191919", "525a52": "862533", "9494a5": "ad7853", "4a423a": "581222", diff --git a/public/images/pokemon/variant/back/373-mega.json b/public/images/pokemon/variant/back/373-mega.json index 04515e84b4b..4e5d5889e6e 100644 --- a/public/images/pokemon/variant/back/373-mega.json +++ b/public/images/pokemon/variant/back/373-mega.json @@ -3,28 +3,22 @@ "602828": "02002c", "a33939": "132760", "ea5350": "1c4076", - "101010": "101010", "002e3f": "6c2d13", "23a1d3": "efb660", "1e7696": "d28943", "f77979": "4572a2", - "255063": "a45f28", - "acaca4": "acaca4", - "fcfcfc": "fcfcfc", - "839494": "839494" + "255063": "a45f28" }, "2": { "602828": "866c51", "a33939": "baae9b", "ea5350": "e5ddcb", - "101010": "101010", "002e3f": "300926", "23a1d3": "8a3562", "1e7696": "71184e", "f77979": "fff9e5", "255063": "3f0f31", "acaca4": "591126", - "fcfcfc": "fcfcfc", "839494": "591126" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/373.json b/public/images/pokemon/variant/back/373.json index ec86f607f9d..b4588ac589c 100644 --- a/public/images/pokemon/variant/back/373.json +++ b/public/images/pokemon/variant/back/373.json @@ -1,6 +1,5 @@ { "1": { - "191919": "191919", "29637b": "66300e", "84cee6": "f3be6d", "4aa5ce": "c77939", @@ -9,13 +8,10 @@ "de8494": "4572a2", "a53a4a": "132760", "42849c": "9f5727", - "ffffff": "ffffff", "adada5": "f1dbc0", - "849494": "c49368", - "efefe6": "efefe6" + "849494": "c49368" }, "2": { - "191919": "191919", "29637b": "310823", "84cee6": "8b2539", "4aa5ce": "631734", @@ -24,7 +20,6 @@ "de8494": "fff5fb", "a53a4a": "b596ab", "42849c": "420c26", - "ffffff": "ffffff", "adada5": "beaa8a", "849494": "8c6d56", "efefe6": "fff9e5" diff --git a/public/images/pokemon/variant/back/374.json b/public/images/pokemon/variant/back/374.json index a5490ebda55..a617d6e3a1b 100644 --- a/public/images/pokemon/variant/back/374.json +++ b/public/images/pokemon/variant/back/374.json @@ -3,7 +3,6 @@ "424a84": "550611", "94b5ef": "ff795f", "528cd6": "b52524", - "101010": "101010", "4a6ba5": "851421", "73b5f7": "eb4c43", "dedede": "f0cb69", @@ -14,7 +13,6 @@ "424a84": "0d4346", "94b5ef": "7ef5d1", "528cd6": "39ac99", - "101010": "101010", "4a6ba5": "1e716e", "73b5f7": "70e1bf", "dedede": "ffb752", diff --git a/public/images/pokemon/variant/back/375.json b/public/images/pokemon/variant/back/375.json index 80de761d4bb..3cb439918de 100644 --- a/public/images/pokemon/variant/back/375.json +++ b/public/images/pokemon/variant/back/375.json @@ -1,7 +1,6 @@ { "1": { "636b8c": "8d4010", - "101010": "101010", "dedede": "f2d660", "9c9cad": "ce7c29", "c5c5ce": "f8b74c", @@ -14,7 +13,6 @@ }, "2": { "636b8c": "7e280e", - "101010": "101010", "dedede": "f19231", "9c9cad": "bd582c", "c5c5ce": "eb763d", diff --git a/public/images/pokemon/variant/back/376-mega.json b/public/images/pokemon/variant/back/376-mega.json index 041b81152c8..1f9fbff63d9 100644 --- a/public/images/pokemon/variant/back/376-mega.json +++ b/public/images/pokemon/variant/back/376-mega.json @@ -6,8 +6,7 @@ "313962": "550611", "736a73": "a76911", "cdcdcd": "ffe07c", - "acacac": "ffc753", - "101010": "101010" + "acacac": "ffc753" }, "2": { "416294": "1e716e", @@ -16,7 +15,6 @@ "313962": "0b3739", "736a73": "9f4219", "cdcdcd": "ffc16a", - "acacac": "f57e37", - "101010": "101010" + "acacac": "f57e37" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/376.json b/public/images/pokemon/variant/back/376.json index ee2939ebeb8..b0379faa0c0 100644 --- a/public/images/pokemon/variant/back/376.json +++ b/public/images/pokemon/variant/back/376.json @@ -1,7 +1,6 @@ { "1": { "313a63": "550611", - "101010": "101010", "a5c5f7": "ff7d6d", "7ba5f7": "f2534b", "4a84c5": "b42a29", @@ -13,7 +12,6 @@ }, "2": { "313a63": "0b3739", - "101010": "101010", "a5c5f7": "7ef5d1", "7ba5f7": "67ddbe", "4a84c5": "41b4a1", diff --git a/public/images/pokemon/variant/back/38.json b/public/images/pokemon/variant/back/38.json index bd8b6202381..54406c2bd7e 100644 --- a/public/images/pokemon/variant/back/38.json +++ b/public/images/pokemon/variant/back/38.json @@ -3,7 +3,6 @@ "846319": "613260", "ce9c4a": "b16da0", "f7e67b": "f0c2dc", - "101010": "101010", "e6c552": "ca91ba", "ffa53a": "8963b5", "ef8429": "593d85" @@ -12,7 +11,6 @@ "846319": "0b0b2a", "ce9c4a": "1a1a52", "f7e67b": "3f548b", - "101010": "101010", "e6c552": "293272", "ffa53a": "a9354a", "ef8429": "811d39" diff --git a/public/images/pokemon/variant/back/380-mega.json b/public/images/pokemon/variant/back/380-mega.json index fe47ff1cda3..98af25e4d7e 100644 --- a/public/images/pokemon/variant/back/380-mega.json +++ b/public/images/pokemon/variant/back/380-mega.json @@ -3,7 +3,6 @@ "7474a6": "9a6853", "f2f2ff": "f3e6df", "adadd9": "b48f79", - "101010": "101010", "cecef2": "e3cfc1", "483f73": "97440c", "8777d9": "d08528", @@ -13,7 +12,6 @@ "7474a6": "8d5a8f", "f2f2ff": "eedaea", "adadd9": "c78ac4", - "101010": "101010", "cecef2": "e4c7e1", "483f73": "167683", "8777d9": "5de2d5", diff --git a/public/images/pokemon/variant/back/380.json b/public/images/pokemon/variant/back/380.json index eeb530ff55c..d04ae32d12e 100644 --- a/public/images/pokemon/variant/back/380.json +++ b/public/images/pokemon/variant/back/380.json @@ -1,7 +1,6 @@ { "1": { "8c294a": "8c3205", - "000000": "000000", "ff6363": "f78232", "7b73a5": "ac654e", "ceceef": "dead89", @@ -10,12 +9,10 @@ "ada5d6": "b87e64", "ce4a52": "d45c1b", "cea54a": "8d4def", - "ffffff": "ffffff", "ffce5a": "a575ff" }, "2": { "8c294a": "480a81", - "000000": "000000", "ff6363": "9344b8", "7b73a5": "912a63", "ceceef": "d899bd", @@ -24,7 +21,6 @@ "ada5d6": "ad5682", "ce4a52": "70309f", "cea54a": "ab2635", - "ffffff": "ffffff", "ffce5a": "cf3d45" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/381-mega.json b/public/images/pokemon/variant/back/381-mega.json index 018df030d4a..87eb3ee0e3a 100644 --- a/public/images/pokemon/variant/back/381-mega.json +++ b/public/images/pokemon/variant/back/381-mega.json @@ -3,7 +3,6 @@ "7474a6": "7e447b", "f2f2ff": "f9cfed", "adadd9": "b673ad", - "101010": "101010", "cecef2": "dfa1d2", "483f73": "29165d", "8777d9": "453c90", @@ -13,7 +12,6 @@ "7474a6": "98485e", "f2f2ff": "f7d9ec", "adadd9": "bf7a9d", - "101010": "101010", "cecef2": "e4abcc", "483f73": "52060f", "8777d9": "97241f", diff --git a/public/images/pokemon/variant/back/381.json b/public/images/pokemon/variant/back/381.json index 85d230ee1df..56fb1494d79 100644 --- a/public/images/pokemon/variant/back/381.json +++ b/public/images/pokemon/variant/back/381.json @@ -3,26 +3,22 @@ "4a63b5": "3e1f5a", "293173": "2a0f43", "5aa5ff": "653c7e", - "101010": "101010", "6b636b": "6d3252", "ded6ce": "f9cfed", "5273d6": "4f2c6a", "b5b5ad": "e4a8d1", "dedede": "ffe5f4", - "ffffff": "ffffff", "c53a5a": "d05718" }, "2": { "4a63b5": "b54800", "293173": "7e2201", "5aa5ff": "ea8b00", - "101010": "101010", "6b636b": "733e7c", "ded6ce": "dab1d7", "5273d6": "ce6700", "b5b5ad": "bb8dbb", "dedede": "e9cae4", - "ffffff": "ffffff", "c53a5a": "00abd2" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/382-primal.json b/public/images/pokemon/variant/back/382-primal.json index 368d7a809f0..2b0eb5ce5fb 100644 --- a/public/images/pokemon/variant/back/382-primal.json +++ b/public/images/pokemon/variant/back/382-primal.json @@ -4,7 +4,6 @@ "74659d": "f3bb49", "90a2c0": "eac3b9", "d3e6f4": "f6e4e0", - "101010": "101010", "e8e3e8": "fff7f4", "373384": "f08d2a", "7eaecc": "ff3200", @@ -19,9 +18,6 @@ "2": { "27245e": "780613", "74659d": "ea512b", - "90a2c0": "90a2c0", - "d3e6f4": "d3e6f4", - "101010": "101010", "e8e3e8": "ffe9e6", "373384": "a90e14", "7eaecc": "ffc546", diff --git a/public/images/pokemon/variant/back/382.json b/public/images/pokemon/variant/back/382.json index 5bd9c3a9a7d..f947132f2d6 100644 --- a/public/images/pokemon/variant/back/382.json +++ b/public/images/pokemon/variant/back/382.json @@ -1,9 +1,7 @@ { "1": { - "5a526b": "5a526b", "dedede": "fff7f4", "3a63b5": "f08d2a", - "101010": "101010", "cebdce": "f6e4e0", "5aa5ff": "ffc95c", "4a84d6": "ffa938", @@ -16,10 +14,7 @@ "73293a": "a30d25" }, "2": { - "5a526b": "5a526b", - "dedede": "dedede", "3a63b5": "a90e14", - "101010": "101010", "cebdce": "d7bbd7", "5aa5ff": "ea512b", "4a84d6": "ce3118", @@ -28,7 +23,6 @@ "9c8c94": "ba9abc", "84ceff": "ff8a5e", "f71010": "ffc546", - "a53163": "ea7c18", - "73293a": "73293a" + "a53163": "ea7c18" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/383-primal.json b/public/images/pokemon/variant/back/383-primal.json index 1cb9664651e..77f7bb7d58a 100644 --- a/public/images/pokemon/variant/back/383-primal.json +++ b/public/images/pokemon/variant/back/383-primal.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "632329": "032a10", "7e2d2d": "10371a", "d5736d": "419e49", @@ -8,16 +7,9 @@ "957346": "ff8571", "f2d259": "ffd493", "a03131": "135121", - "343434": "343434", - "695a5b": "695a5b", - "887981": "887981", - "f6e08c": "f6e08c", - "e0b2b2": "49c74f", - "bdbdd5": "bdbdd5", - "f2f2f2": "f2f2f2" + "e0b2b2": "49c74f" }, "2": { - "000000": "000000", "632329": "123953", "7e2d2d": "20516c", "d5736d": "4daab4", @@ -29,8 +21,6 @@ "695a5b": "4e5169", "887981": "777e95", "f6e08c": "ebffb0", - "e0b2b2": "68cfd0", - "bdbdd5": "bdbdd5", - "f2f2f2": "f2f2f2" + "e0b2b2": "68cfd0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/383.json b/public/images/pokemon/variant/back/383.json index f3760c0244e..447de8865d4 100644 --- a/public/images/pokemon/variant/back/383.json +++ b/public/images/pokemon/variant/back/383.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "7b2129": "032a10", "9c2929": "10371a", "ff736b": "419e49", @@ -13,11 +12,9 @@ "9c6b31": "d51b3e", "ffce31": "ff435d", "94848c": "72798b", - "ffbdbd": "49c74f", - "ad9ca5": "ad9ca5" + "ffbdbd": "49c74f" }, "2": { - "000000": "000000", "7b2129": "123953", "9c2929": "20516c", "ff736b": "73e7e8", @@ -27,10 +24,7 @@ "736363": "4e5169", "ffffff": "e5fdff", "bdbdd6": "bcdde4", - "9c6b31": "9c6b31", - "ffce31": "ffce31", "94848c": "787f9d", - "ffbdbd": "68cfd0", - "ad9ca5": "ad9ca5" + "ffbdbd": "68cfd0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/384-mega.json b/public/images/pokemon/variant/back/384-mega.json index 016c044b27f..9ee39a2621c 100644 --- a/public/images/pokemon/variant/back/384-mega.json +++ b/public/images/pokemon/variant/back/384-mega.json @@ -3,7 +3,6 @@ "fbe27e": "90f25d", "fc9436": "3dc62f", "836231": "064c1e", - "010101": "010101", "f6de00": "4ff869", "c5a400": "27c750", "3d7d6d": "66637b", @@ -11,14 +10,12 @@ "22523e": "333554", "e4b629": "27c750", "60d293": "e4e0ee", - "3f3f3f": "333554", - "fcfcfc": "fcfcfc" + "3f3f3f": "333554" }, "2": { "fbe27e": "17e2d6", "fc9436": "098faf", "836231": "121d31", - "010101": "010101", "f6de00": "17e2d6", "c5a400": "098faf", "3d7d6d": "84120f", @@ -26,7 +23,6 @@ "22523e": "650f04", "e4b629": "098faf", "60d293": "f18c5e", - "3f3f3f": "380100", - "fcfcfc": "fcfcfc" + "3f3f3f": "380100" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/384.json b/public/images/pokemon/variant/back/384.json index f4fc7855474..a6400382a8b 100644 --- a/public/images/pokemon/variant/back/384.json +++ b/public/images/pokemon/variant/back/384.json @@ -2,7 +2,6 @@ "1": { "295242": "333554", "4a8473": "66637b", - "000000": "000000", "5abd8c": "b3aec1", "73293a": "064c1e", "9c2952": "27c750", @@ -10,23 +9,17 @@ "c5a500": "4ebc28", "846331": "188c0f", "e65273": "4ff869", - "94deb5": "e4e0ee", - "ffffff": "ffffff", - "ded6ef": "ded6ef" + "94deb5": "e4e0ee" }, "2": { "295242": "540709", "4a8473": "821815", - "000000": "000000", "5abd8c": "ca4636", "73293a": "003b53", "9c2952": "098faf", "f7de00": "17e2d6", "c5a500": "098faf", "846331": "003082", - "e65273": "e65273", - "94deb5": "f18c5e", - "ffffff": "ffffff", - "ded6ef": "ded6ef" + "94deb5": "f18c5e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/385.json b/public/images/pokemon/variant/back/385.json index 1bb728fe3d2..102d7633618 100644 --- a/public/images/pokemon/variant/back/385.json +++ b/public/images/pokemon/variant/back/385.json @@ -1,7 +1,6 @@ { "0": { "ad8431": "925108", - "000000": "000000", "ffff94": "f7e980", "e6bd52": "db942d", "ffe65a": "f3bf5c", @@ -14,7 +13,6 @@ }, "1": { "ad8431": "874100", - "000000": "000000", "ffff94": "f7be5d", "e6bd52": "ba670d", "ffe65a": "de9128", @@ -27,7 +25,6 @@ }, "2": { "ad8431": "234664", - "000000": "000000", "ffff94": "b1dbe8", "e6bd52": "427aa3", "ffe65a": "6fb6da", diff --git a/public/images/pokemon/variant/back/387.json b/public/images/pokemon/variant/back/387.json index a858e24d088..a8d187d2794 100644 --- a/public/images/pokemon/variant/back/387.json +++ b/public/images/pokemon/variant/back/387.json @@ -3,7 +3,6 @@ "3aa542": "d0d6d6", "7bd66b": "ffffff", "3a5a29": "241423", - "000000": "000000", "634a3a": "2c4a78", "b58452": "d6e1e9", "5a7b42": "372835", @@ -12,7 +11,6 @@ "bdce84": "7d6d7a", "dee68c": "958790", "f7e65a": "8bcadd", - "c5bd3a": "3875a1", - "ffffff": "ffffff" + "c5bd3a": "3875a1" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/388.json b/public/images/pokemon/variant/back/388.json index 9ddb71ba8c8..e81ad1f8baf 100644 --- a/public/images/pokemon/variant/back/388.json +++ b/public/images/pokemon/variant/back/388.json @@ -3,34 +3,26 @@ "3a5a29": "3b1228", "3a8c42": "e79ac2", "63b56b": "ffd3f2", - "101019": "101019", "634a3a": "112a24", "b58452": "3f5e4c", "8c6b42": "2c483c", "deb542": "738f7a", "efd642": "9cc096", - "ffffff": "ffffff", "6b8c4a": "773859", "adc563": "b07587", - "94ad5a": "954e6c", - "949494": "949494", - "d6d6d6": "d6d6d6" + "94ad5a": "954e6c" }, "2": { "3a5a29": "362f2f", "3a8c42": "d6e1e9", "63b56b": "ffffff", - "101019": "101019", "634a3a": "251c3d", "b58452": "2c4a78", "8c6b42": "20284e", "deb542": "3875a1", "efd642": "8bcadd", - "ffffff": "ffffff", "6b8c4a": "463d3e", "adc563": "949494", - "94ad5a": "756667", - "949494": "949494", - "d6d6d6": "d6d6d6" + "94ad5a": "756667" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/389.json b/public/images/pokemon/variant/back/389.json index db18c1f2d10..ce698dbdb6d 100644 --- a/public/images/pokemon/variant/back/389.json +++ b/public/images/pokemon/variant/back/389.json @@ -3,7 +3,6 @@ "196319": "ba597b", "42ad42": "fddcf6", "318c3a": "e799bb", - "101010": "101010", "634a3a": "241a21", "8c6b42": "3d2a37", "b58452": "573a4b", @@ -18,7 +17,6 @@ "196319": "738d9d", "42ad42": "d6e1e9", "318c3a": "a7bcc9", - "101010": "101010", "634a3a": "251c3d", "8c6b42": "444661", "b58452": "5c5b75", diff --git a/public/images/pokemon/variant/back/393.json b/public/images/pokemon/variant/back/393.json index e11dce3b058..29ad29cfcbe 100644 --- a/public/images/pokemon/variant/back/393.json +++ b/public/images/pokemon/variant/back/393.json @@ -7,9 +7,7 @@ "63a5c5": "ce8a56", "9cd6f7": "e8ce81", "bdcede": "e2d7a5", - "ffffff": "ffffff", "637b94": "c68a67", - "101010": "101010", "634a10": "363b56", "f7ce42": "bec8d1", "ad843a": "81899b", @@ -25,7 +23,6 @@ "bdcede": "ccb9af", "ffffff": "f4ede8", "637b94": "877e78", - "101010": "101010", "634a10": "368089", "f7ce42": "92edcf", "ad843a": "67c1b7", diff --git a/public/images/pokemon/variant/back/394.json b/public/images/pokemon/variant/back/394.json index c18a4eadc37..0a46d80ab71 100644 --- a/public/images/pokemon/variant/back/394.json +++ b/public/images/pokemon/variant/back/394.json @@ -2,7 +2,6 @@ "1": { "7b5242": "2a2c3a", "bd8c6b": "4f5572", - "101010": "101010", "efce63": "81899b", "ffe684": "bec8d1", "21426b": "2b544b", @@ -16,7 +15,6 @@ "2": { "7b5242": "3c7d84", "bd8c6b": "438084", - "101010": "101010", "efce63": "82d3d0", "ffe684": "baf3e4", "21426b": "aa3565", diff --git a/public/images/pokemon/variant/back/395.json b/public/images/pokemon/variant/back/395.json index e497e8b78e6..624c023fb72 100644 --- a/public/images/pokemon/variant/back/395.json +++ b/public/images/pokemon/variant/back/395.json @@ -3,7 +3,6 @@ "bd8c6b": "464c6b", "ffe684": "bec8d1", "7b5242": "1e202b", - "101010": "101010", "103c75": "7f1711", "9cceff": "fff18c", "528ce6": "cc8043", @@ -18,7 +17,6 @@ "bd8c6b": "2c7787", "ffe684": "6cd3cd", "7b5242": "184555", - "101010": "101010", "103c75": "26061c", "9cceff": "7e2b44", "528ce6": "4f1438", diff --git a/public/images/pokemon/variant/back/399.json b/public/images/pokemon/variant/back/399.json index 86398cd680e..3392927dfdc 100644 --- a/public/images/pokemon/variant/back/399.json +++ b/public/images/pokemon/variant/back/399.json @@ -3,7 +3,6 @@ "634a31": "101e42", "c58c42": "617dda", "9c6331": "3e5ca8", - "101010": "101010", "423110": "0e1831", "cebd84": "8497ce", "5a4229": "42295a" diff --git a/public/images/pokemon/variant/back/4.json b/public/images/pokemon/variant/back/4.json index d3271eebf43..6b337d2ef3a 100644 --- a/public/images/pokemon/variant/back/4.json +++ b/public/images/pokemon/variant/back/4.json @@ -5,14 +5,11 @@ "8c2900": "0f3234", "ff9442": "26837c", "ffd608": "e9bfff", - "101010": "101010", "f7a500": "9e59db", - "ffffff": "ffffff", "31adef": "c40f0f", "083a8c": "8e0b25", "ffd67b": "99f4f7", - "e6ad5a": "60c5c8", - "b5b5b5": "b5b5b5" + "e6ad5a": "60c5c8" }, "2": { "e63a00": "4c83d4", @@ -20,13 +17,10 @@ "8c2900": "20346f", "ff9442": "3a78b7", "ffd608": "f9fffa", - "101010": "101010", "f7a500": "96e8e8", - "ffffff": "ffffff", "31adef": "1e8eff", "083a8c": "0059ff", "ffd67b": "5e238e", - "e6ad5a": "380f6e", - "b5b5b5": "b5b5b5" + "e6ad5a": "380f6e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/400.json b/public/images/pokemon/variant/back/400.json index 734b277ae36..233a47e12ac 100644 --- a/public/images/pokemon/variant/back/400.json +++ b/public/images/pokemon/variant/back/400.json @@ -3,10 +3,8 @@ "ad947b": "bd9171", "e6d69c": "fff5d1", "5a3a31": "70323f", - "3a3129": "3a3129", "bd844a": "dba0ac", "8c5a31": "c46269", - "101010": "101010", "423a31": "3e3040", "63523a": "824561" }, @@ -17,7 +15,6 @@ "3a3129": "313d63", "bd844a": "617dda", "8c5a31": "3e5ca8", - "101010": "101010", "423a31": "38204f", "63523a": "42295a" } diff --git a/public/images/pokemon/variant/back/401.json b/public/images/pokemon/variant/back/401.json index 446e2648182..068a54ee262 100644 --- a/public/images/pokemon/variant/back/401.json +++ b/public/images/pokemon/variant/back/401.json @@ -2,7 +2,6 @@ "1": { "524a42": "cf8439", "7b7363": "f6bb47", - "101010": "101010", "8c6b08": "272344", "ffefad": "56769d", "e6c56b": "454389", @@ -13,7 +12,6 @@ "2": { "524a42": "453565", "7b7363": "71558c", - "101010": "101010", "8c6b08": "784341", "ffefad": "ffd47c", "e6c56b": "e59a75", diff --git a/public/images/pokemon/variant/back/402.json b/public/images/pokemon/variant/back/402.json index 7b6ca4a615e..8dd97d47dae 100644 --- a/public/images/pokemon/variant/back/402.json +++ b/public/images/pokemon/variant/back/402.json @@ -2,9 +2,7 @@ "1": { "633100": "272344", "de5a52": "afd3df", - "101010": "101010", "9c4231": "498ebe", - "31293a": "31293a", "524a42": "cf8439", "7b7363": "f6bb47", "424252": "0e0e23", @@ -17,7 +15,6 @@ "2": { "633100": "2a545f", "de5a52": "70af85", - "101010": "101010", "9c4231": "2f9378", "31293a": "281c41", "524a42": "453565", diff --git a/public/images/pokemon/variant/back/4052.json b/public/images/pokemon/variant/back/4052.json index 58444d01406..46fb4cb3e6d 100644 --- a/public/images/pokemon/variant/back/4052.json +++ b/public/images/pokemon/variant/back/4052.json @@ -1,7 +1,5 @@ { "1": { - "181a1d": "181a1d", - "010101": "010101", "3d4547": "4e385a", "5b4e4d": "57567e", "ada09a": "c3c5d4", @@ -9,8 +7,6 @@ "272d2e": "342b49" }, "2": { - "181a1d": "181a1d", - "010101": "010101", "3d4547": "417778", "5b4e4d": "171127", "ada09a": "603b54", diff --git a/public/images/pokemon/variant/back/406.json b/public/images/pokemon/variant/back/406.json index 744fcb0e506..3265d4e1508 100644 --- a/public/images/pokemon/variant/back/406.json +++ b/public/images/pokemon/variant/back/406.json @@ -1,7 +1,6 @@ { "1": { "73a54a": "153a51", - "000000": "000000", "3a5a29": "0b2337", "b5ef73": "5fadaf", "8cce29": "498b93", @@ -11,7 +10,6 @@ }, "2": { "73a54a": "52347a", - "000000": "000000", "3a5a29": "2d1a4e", "b5ef73": "c098dd", "8cce29": "a47cc7", diff --git a/public/images/pokemon/variant/back/407.json b/public/images/pokemon/variant/back/407.json index 08071023f31..a0005710379 100644 --- a/public/images/pokemon/variant/back/407.json +++ b/public/images/pokemon/variant/back/407.json @@ -5,7 +5,6 @@ "739c8c": "bb9b89", "ffffff": "fff1cb", "d6cede": "e1bf95", - "000000": "000000", "7b3a5a": "9c5910", "ff6384": "efc754", "bd426b": "d28f31", @@ -22,7 +21,6 @@ "739c8c": "a39ec0", "ffffff": "fcf8ff", "d6cede": "d6c7e6", - "000000": "000000", "7b3a5a": "9c2407", "ff6384": "ec883b", "bd426b": "c15a21", diff --git a/public/images/pokemon/variant/back/4077.json b/public/images/pokemon/variant/back/4077.json index 5043570356c..bfa1923812d 100644 --- a/public/images/pokemon/variant/back/4077.json +++ b/public/images/pokemon/variant/back/4077.json @@ -8,7 +8,6 @@ "c973e6": "cc4328", "646357": "192666", "ffffe3": "8cd8ff", - "101010": "101010", "ded5ae": "5b93cc", "a3a49f": "355699", "59237e": "312c49", @@ -23,7 +22,6 @@ "c973e6": "282866", "646357": "361e66", "ffffe3": "ff99dd", - "101010": "101010", "ded5ae": "cc66cc", "a3a49f": "7a3d99", "59237e": "312c49", diff --git a/public/images/pokemon/variant/back/4078.json b/public/images/pokemon/variant/back/4078.json index a47536e3a51..0905cd64299 100644 --- a/public/images/pokemon/variant/back/4078.json +++ b/public/images/pokemon/variant/back/4078.json @@ -1,7 +1,6 @@ { "1": { "44bf75": "cc9470", - "2b3055": "2b3055", "85fabf": "ffd9a5", "737ba4": "514766", "109865": "995944", @@ -9,7 +8,6 @@ "8e38c1": "990c00", "de9fff": "ff884c", "c566e3": "cc4328", - "0c0c0c": "0c0c0c", "414a83": "312c49", "ded5ae": "5b93cc", "636357": "192666", @@ -18,7 +16,6 @@ }, "2": { "44bf75": "cc1e4c", - "2b3055": "2b3055", "85fabf": "ff3255", "737ba4": "514766", "109865": "990f3d", @@ -26,7 +23,6 @@ "8e38c1": "161f4c", "de9fff": "483e7c", "c566e3": "282866", - "0c0c0c": "0c0c0c", "414a83": "312c49", "ded5ae": "cc66cc", "636357": "361e66", diff --git a/public/images/pokemon/variant/back/4079.json b/public/images/pokemon/variant/back/4079.json index e958fc537ab..6872fcd153d 100644 --- a/public/images/pokemon/variant/back/4079.json +++ b/public/images/pokemon/variant/back/4079.json @@ -7,12 +7,9 @@ "fefe3c": "ffeccb", "7c2847": "452a29", "caaa2c": "edc59e", - "101010": "101010", "8b5a18": "a84071", "ffe6b4": "ff9eba", - "dea462": "e0799c", - "fcfcfc": "fcfcfc", - "d5cdcd": "d5cdcd" + "dea462": "e0799c" }, "2": { "d76d96": "c6aead", @@ -22,11 +19,8 @@ "fefe3c": "d9736b", "7c2847": "503941", "caaa2c": "963e59", - "101010": "101010", "8b5a18": "a45c58", "ffe6b4": "efc697", - "dea462": "cb8f75", - "fcfcfc": "fcfcfc", - "d5cdcd": "d5cdcd" + "dea462": "cb8f75" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/4080.json b/public/images/pokemon/variant/back/4080.json index 0101712afb7..ab56fdf775e 100644 --- a/public/images/pokemon/variant/back/4080.json +++ b/public/images/pokemon/variant/back/4080.json @@ -2,13 +2,9 @@ "1": { "723f7c": "edc59e", "a565c0": "ffedcc", - "181818": "181818", "7b2645": "573531", "d76792": "905446", - "c9c9c9": "c9c9c9", - "b6b6ae": "b6b6ae", "7c6987": "a94172", - "fbfbfb": "fbfbfb", "ede2ef": "ff9fbb", "b5a0bd": "e17a9d", "f985aa": "bb694b", @@ -19,13 +15,9 @@ "2": { "723f7c": "963e59", "a565c0": "d9736b", - "181818": "181818", "7b2645": "846467", "d76792": "c6aead", - "c9c9c9": "c9c9c9", - "b6b6ae": "b6b6ae", "7c6987": "a45c58", - "fbfbfb": "fbfbfb", "ede2ef": "efc697", "b5a0bd": "ca8e74", "f985aa": "ecdcbe", diff --git a/public/images/pokemon/variant/back/41.json b/public/images/pokemon/variant/back/41.json index 42283672198..35bd2e46178 100644 --- a/public/images/pokemon/variant/back/41.json +++ b/public/images/pokemon/variant/back/41.json @@ -1,26 +1,18 @@ { "1": { - "101010": "101010", "8cb5ef": "205182", "4a427b": "14093b", "637bb5": "12325c", "73215a": "b6591e", "b5529c": "d58e41", - "bdceff": "868ecc", - "ffffff": "ffffff", - "636363": "636363", - "d6d6d6": "d6d6d6" + "bdceff": "868ecc" }, "2": { - "101010": "101010", "8cb5ef": "cbabca", "4a427b": "4d3259", "637bb5": "916c8b", "73215a": "670f10", "b5529c": "94241c", - "bdceff": "e8d2e6", - "ffffff": "ffffff", - "636363": "636363", - "d6d6d6": "d6d6d6" + "bdceff": "e8d2e6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/412-plant.json b/public/images/pokemon/variant/back/412-plant.json index 8203db30f28..7174877e4a0 100644 --- a/public/images/pokemon/variant/back/412-plant.json +++ b/public/images/pokemon/variant/back/412-plant.json @@ -3,7 +3,6 @@ "292931": "262b56", "5a5a5a": "5f709f", "3a3a42": "455081", - "101010": "101010", "314a3a": "1f3726", "7b9c4a": "6c956d", "527342": "446649", @@ -13,7 +12,6 @@ "292931": "392933", "5a5a5a": "9f8a8f", "3a3a42": "725c67", - "101010": "101010", "314a3a": "3d2525", "7b9c4a": "8c736c", "527342": "71514e", @@ -23,10 +21,8 @@ "292931": "673f57", "5a5a5a": "c69ab0", "3a3a42": "976480", - "101010": "101010", "314a3a": "1c2d54", "7b9c4a": "5d9ac0", - "527342": "3c6390", - "634a3a": "634a3a" + "527342": "3c6390" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/412-trash.json b/public/images/pokemon/variant/back/412-trash.json index 90cf01bc206..8a1e7b3e8f8 100644 --- a/public/images/pokemon/variant/back/412-trash.json +++ b/public/images/pokemon/variant/back/412-trash.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "292931": "191c46", "3a3a42": "455081", "5a5a5a": "5f709f", @@ -11,7 +10,6 @@ "737b7b": "774490" }, "1": { - "101010": "101010", "292931": "1d1929", "3a3a42": "342e41", "5a5a5a": "594f69", @@ -22,7 +20,6 @@ "737b7b": "4f4955" }, "2": { - "101010": "101010", "292931": "273f2c", "3a3a42": "547e55", "5a5a5a": "b5d6b2", diff --git a/public/images/pokemon/variant/back/413-plant.json b/public/images/pokemon/variant/back/413-plant.json index 397cef6f9a6..ae9f68e2f1f 100644 --- a/public/images/pokemon/variant/back/413-plant.json +++ b/public/images/pokemon/variant/back/413-plant.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "3a3a42": "30366b", "5a5a5a": "455081", "3a5242": "1b3f27", @@ -10,7 +9,6 @@ "314a3a": "304f3a" }, "1": { - "101010": "101010", "3a3a42": "4e3946", "5a5a5a": "725c67", "3a5242": "3f2b2f", @@ -20,7 +18,6 @@ "314a3a": "593d41" }, "2": { - "101010": "101010", "3a3a42": "724063", "5a5a5a": "ab7492", "3a5242": "3c689b", diff --git a/public/images/pokemon/variant/back/413-sandy.json b/public/images/pokemon/variant/back/413-sandy.json index d402bb20673..a89eac5c29c 100644 --- a/public/images/pokemon/variant/back/413-sandy.json +++ b/public/images/pokemon/variant/back/413-sandy.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "5a5a5a": "455081", "3a3a42": "30366b", "3a3131": "2e1e1b", @@ -11,7 +10,6 @@ "635252": "644034" }, "1": { - "101010": "101010", "5a5a5a": "64403f", "3a3a42": "533032", "3a3131": "2c0e17", @@ -22,7 +20,6 @@ "635252": "3e2025" }, "2": { - "101010": "101010", "5a5a5a": "aeb2cd", "3a3a42": "8385a6", "3a3131": "0e1e40", diff --git a/public/images/pokemon/variant/back/413-trash.json b/public/images/pokemon/variant/back/413-trash.json index 1a9df5e0347..796e33cb57c 100644 --- a/public/images/pokemon/variant/back/413-trash.json +++ b/public/images/pokemon/variant/back/413-trash.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "3a3a42": "30366b", "5a5a5a": "455081", "523a4a": "412358", @@ -10,9 +9,7 @@ "7b4a5a": "9b4e86" }, "1": { - "101010": "101010", "3a3a42": "403850", - "5a5a5a": "5a5a5a", "523a4a": "2e2529", "c55a9c": "8d5053", "844a73": "723542", @@ -20,9 +17,7 @@ "7b4a5a": "49496a" }, "2": { - "101010": "101010", "3a3a42": "7aa17b", - "5a5a5a": "5a5a5a", "523a4a": "0e2517", "c55a9c": "5e5864", "844a73": "39343f", diff --git a/public/images/pokemon/variant/back/414.json b/public/images/pokemon/variant/back/414.json index 9c807a346ce..0e55e89659a 100644 --- a/public/images/pokemon/variant/back/414.json +++ b/public/images/pokemon/variant/back/414.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "734221": "b18066", "a54a00": "c59f7e", "e66b29": "f2daba", @@ -15,7 +14,6 @@ "4a3a3a": "291717" }, "2": { - "101010": "101010", "734221": "ae5b3c", "a54a00": "d2895c", "e66b29": "e8b479", diff --git a/public/images/pokemon/variant/back/418.json b/public/images/pokemon/variant/back/418.json index 58fb6a055b6..05967e88af0 100644 --- a/public/images/pokemon/variant/back/418.json +++ b/public/images/pokemon/variant/back/418.json @@ -3,14 +3,10 @@ "ad5a21": "7d1e39", "7b4221": "611b35", "ef7b19": "9c354f", - "191919": "191919", "ce6b19": "851d3e", "f7f7b5": "e8d4cc", "c59452": "995e5c", - "d6d6ce": "d6d6ce", - "ffffff": "ffffff", "cebd84": "cea49d", - "6b6b6b": "6b6b6b", "99693c": "6a808c", "e6a531": "a0b3ba", "2163a5": "385e11", @@ -21,12 +17,9 @@ "ad5a21": "cd91aa", "7b4221": "9e6a86", "ef7b19": "debfc8", - "191919": "191919", "ce6b19": "dca5b5", "f7f7b5": "a8688f", "c59452": "672e5d", - "d6d6ce": "d6d6ce", - "ffffff": "ffffff", "cebd84": "965080", "6b6b6b": "432e38", "99693c": "8e410e", diff --git a/public/images/pokemon/variant/back/419.json b/public/images/pokemon/variant/back/419.json index 3202d442933..197a8b33e18 100644 --- a/public/images/pokemon/variant/back/419.json +++ b/public/images/pokemon/variant/back/419.json @@ -2,17 +2,13 @@ "1": { "7b4221": "611b35", "ef7b19": "9c354f", - "191919": "191919", "ce6b19": "851d3e", "ad5a21": "7d1e39", "cebd84": "cea49d", "f7f7b5": "e8d4cc", "99693c": "6a808c", - "6b6b6b": "6b6b6b", "e6a531": "a0b3ba", "ffde00": "d2e5e8", - "d6d6ce": "d6d6ce", - "ffffff": "ffffff", "c59452": "995e5c", "2163a5": "385e11", "63bde6": "6a9539" @@ -20,7 +16,6 @@ "2": { "7b4221": "9e6a86", "ef7b19": "debfc8", - "191919": "191919", "ce6b19": "dca5b5", "ad5a21": "cd91aa", "cebd84": "965080", @@ -29,8 +24,6 @@ "6b6b6b": "726481", "e6a531": "d4812f", "ffde00": "eda342", - "d6d6ce": "d6d6ce", - "ffffff": "ffffff", "c59452": "672e5d", "2163a5": "4b2a70", "63bde6": "744d99" diff --git a/public/images/pokemon/variant/back/4199.json b/public/images/pokemon/variant/back/4199.json index 3feab3d0964..676cb5e36d7 100644 --- a/public/images/pokemon/variant/back/4199.json +++ b/public/images/pokemon/variant/back/4199.json @@ -1,7 +1,6 @@ { "1": { "413668": "622344", - "101010": "101010", "a191b5": "de504e", "7a6a98": "ad3139", "654493": "7e3351", @@ -11,14 +10,12 @@ "a565c0": "ffeccb", "d76792": "8f5345", "7b2645": "573531", - "f8f8f8": "f8f8f8", "c89a51": "a84254", "eed583": "c75865", "f985aa": "bb694b" }, "2": { "413668": "1d4c46", - "101010": "101010", "a191b5": "b0dc72", "7a6a98": "71ae48", "654493": "38735c", @@ -28,7 +25,6 @@ "a565c0": "d9736b", "d76792": "c7afae", "7b2645": "846467", - "f8f8f8": "f8f8f8", "c89a51": "2b4a49", "eed583": "4c766a", "f985aa": "ecdcbe" diff --git a/public/images/pokemon/variant/back/42.json b/public/images/pokemon/variant/back/42.json index df3cf67d3ef..adb0c8f6360 100644 --- a/public/images/pokemon/variant/back/42.json +++ b/public/images/pokemon/variant/back/42.json @@ -5,7 +5,6 @@ "adceff": "3c74b1", "5aadef": "204882", "631052": "892d03", - "000000": "000000", "ce6bb5": "f1a139", "ad52ad": "d5711b", "943a7b": "af4e0c" @@ -16,7 +15,6 @@ "adceff": "dfcddd", "5aadef": "cbabca", "631052": "54070c", - "000000": "000000", "ce6bb5": "bc3b1d", "ad52ad": "94241c", "943a7b": "670f10" diff --git a/public/images/pokemon/variant/back/422-east.json b/public/images/pokemon/variant/back/422-east.json index 833a1828c33..28d6da15f68 100644 --- a/public/images/pokemon/variant/back/422-east.json +++ b/public/images/pokemon/variant/back/422-east.json @@ -1,8 +1,6 @@ { "0": { "636394": "61819f", - "101010": "101010", - "ffffff": "ffffff", "bdceef": "b8d4e6", "52527b": "636b7b", "6bb5f7": "82e1c0", @@ -17,8 +15,6 @@ }, "1": { "636394": "314173", - "101010": "101010", - "ffffff": "ffffff", "bdceef": "b8d4e6", "52527b": "314173", "6bb5f7": "485f9c", @@ -33,8 +29,6 @@ }, "2": { "636394": "6d427b", - "101010": "101010", - "ffffff": "ffffff", "bdceef": "c5deef", "52527b": "451e4c", "6bb5f7": "955dbe", diff --git a/public/images/pokemon/variant/back/422-west.json b/public/images/pokemon/variant/back/422-west.json index 563110e29e3..acd593a7b6e 100644 --- a/public/images/pokemon/variant/back/422-west.json +++ b/public/images/pokemon/variant/back/422-west.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "c5428c": "8b3553", "e652a5": "c66264", "73426b": "8b3553", @@ -8,7 +7,6 @@ "ff8cc5": "ff9269", "ad6394": "c66264", "ffde73": "ffd275", - "ffffff": "ffffff", "a58c3a": "ca8b46", "524a3a": "645346", "73737b": "645346", @@ -16,7 +14,6 @@ "b5b5c5": "ca8b46" }, "1": { - "101010": "101010", "c5428c": "573d64", "e652a5": "7960a1", "73426b": "573d64", @@ -24,7 +21,6 @@ "ff8cc5": "aa8be8", "ad6394": "7960a1", "ffde73": "ffb8c5", - "ffffff": "ffffff", "a58c3a": "da6f7b", "524a3a": "993d48", "73737b": "8a7b68", @@ -32,7 +28,6 @@ "b5b5c5": "d1b07c" }, "2": { - "101010": "101010", "c5428c": "281e4c", "e652a5": "48427b", "73426b": "281e4c", @@ -40,7 +35,6 @@ "ff8cc5": "5d64be", "ad6394": "48427b", "ffde73": "ffc975", - "ffffff": "ffffff", "a58c3a": "e5693d", "524a3a": "933f04", "73737b": "00706a", diff --git a/public/images/pokemon/variant/back/4222.json b/public/images/pokemon/variant/back/4222.json index 9c778939ac4..597fc4e1a28 100644 --- a/public/images/pokemon/variant/back/4222.json +++ b/public/images/pokemon/variant/back/4222.json @@ -8,7 +8,6 @@ "9c94a3": "58929f", "fbf2ff": "d4fefe", "cbc2d1": "a9e4e3", - "101010": "101010", "af9e9e": "44a0af", "756868": "097f8d" }, @@ -21,7 +20,6 @@ "9c94a3": "4b1f28", "fbf2ff": "874059", "cbc2d1": "773050", - "101010": "101010", "af9e9e": "b0919b", "756868": "8d6573" } diff --git a/public/images/pokemon/variant/back/423-east.json b/public/images/pokemon/variant/back/423-east.json index 07e5cde7799..57268c0a922 100644 --- a/public/images/pokemon/variant/back/423-east.json +++ b/public/images/pokemon/variant/back/423-east.json @@ -3,7 +3,6 @@ "3a4231": "224052", "426b31": "527084", "5a944a": "679ab2", - "101010": "101010", "a58c3a": "a58e3b", "ffde73": "fedf73", "7bbd52": "80e2bf", @@ -16,7 +15,6 @@ "3a4231": "293852", "426b31": "314173", "5a944a": "485f9c", - "101010": "101010", "a58c3a": "649bb2", "ffde73": "82e1c0", "7bbd52": "5271bd", @@ -29,7 +27,6 @@ "3a4231": "451e4c", "426b31": "6d427b", "5a944a": "955dbe", - "101010": "101010", "a58c3a": "e5693d", "ffde73": "ffc975", "7bbd52": "ad75e8", diff --git a/public/images/pokemon/variant/back/423-west.json b/public/images/pokemon/variant/back/423-west.json index 9720880f96d..096917202d3 100644 --- a/public/images/pokemon/variant/back/423-west.json +++ b/public/images/pokemon/variant/back/423-west.json @@ -1,20 +1,17 @@ { "0": { "4a3a3a": "101010", - "101010": "101010", "c5944a": "ff9269", "a56b3a": "c66264", "ffde73": "ffd275", "6b4a3a": "8b3553", "a58c3a": "ca8b46", "ad6394": "c66264", - "6b3a52": "6b3a52", "524a3a": "645346", "ff8cc5": "ff9269" }, "1": { "4a3a3a": "573d64", - "101010": "101010", "c5944a": "c1a5ff", "a56b3a": "aa8be8", "ffde73": "ffb8c5", @@ -27,7 +24,6 @@ }, "2": { "4a3a3a": "281e4c", - "101010": "101010", "c5944a": "7588e8", "a56b3a": "5d64be", "ffde73": "ffc975", diff --git a/public/images/pokemon/variant/back/424.json b/public/images/pokemon/variant/back/424.json index c0e9356a7a4..6a111ce9829 100644 --- a/public/images/pokemon/variant/back/424.json +++ b/public/images/pokemon/variant/back/424.json @@ -3,7 +3,6 @@ "734a42": "415c73", "ad5242": "428dad", "ff735a": "5ae9ff", - "101010": "101010", "8c6b42": "8c7457", "debd73": "c4b487", "ffefa5": "ffeccc", @@ -16,7 +15,6 @@ "734a42": "593802", "ad5242": "946212", "ff735a": "ffb338", - "101010": "101010", "8c6b42": "632339", "debd73": "99455d", "ffefa5": "ed8286", diff --git a/public/images/pokemon/variant/back/425.json b/public/images/pokemon/variant/back/425.json index 16f0160cd1d..4f24d386f9a 100644 --- a/public/images/pokemon/variant/back/425.json +++ b/public/images/pokemon/variant/back/425.json @@ -6,7 +6,6 @@ "946be6": "64acb1", "7b42a5": "497b91", "4a316b": "223142", - "101010": "101010", "633184": "39677a", "c5b5ff": "83d5c0", "8c6b21": "7c6839", @@ -20,7 +19,6 @@ "946be6": "c0c7ab", "7b42a5": "93a383", "4a316b": "3f4a3d", - "101010": "101010", "633184": "697c63", "c5b5ff": "cde5ca", "8c6b21": "3c171e", diff --git a/public/images/pokemon/variant/back/426.json b/public/images/pokemon/variant/back/426.json index 2614d684621..f6dbda4c0a4 100644 --- a/public/images/pokemon/variant/back/426.json +++ b/public/images/pokemon/variant/back/426.json @@ -3,7 +3,6 @@ "c5c5e6": "7ca786", "5a5a63": "536661", "ffffff": "b0d1b8", - "101010": "101010", "8452ad": "20787c", "5a427b": "1d524d", "9c73de": "64acb1", @@ -20,7 +19,6 @@ "c5c5e6": "7ca786", "5a5a63": "536661", "ffffff": "b0d1b8", - "101010": "101010", "8452ad": "9fa994", "5a427b": "686458", "9c73de": "d1d1b8", diff --git a/public/images/pokemon/variant/back/4263.json b/public/images/pokemon/variant/back/4263.json index c9d11566864..8b9cea44bbf 100644 --- a/public/images/pokemon/variant/back/4263.json +++ b/public/images/pokemon/variant/back/4263.json @@ -1,28 +1,20 @@ { "1": { "5b5958": "397e4a", - "010101": "010101", "b2b3b2": "a3ce9e", "f5f5f6": "f5ffea", "3e4042": "01473a", "60656a": "1c8155", - "1b2627": "002121", - "d94a7f": "d94a7f", - "fcfcfc": "fcfcfc", - "ee96b2": "ee96b2", - "6e3b51": "6e3b51", - "9b4f69": "9b4f69" + "1b2627": "002121" }, "2": { "5b5958": "100d2d", - "010101": "010101", "b2b3b2": "201b47", "f5f5f6": "3c335d", "3e4042": "412991", "60656a": "8e5aef", "1b2627": "201b47", "d94a7f": "0099ce", - "fcfcfc": "fcfcfc", "ee96b2": "54f1ff", "6e3b51": "004a8b", "9b4f69": "0099ce" diff --git a/public/images/pokemon/variant/back/4264.json b/public/images/pokemon/variant/back/4264.json index ed5b3343df0..c266ecb7aa4 100644 --- a/public/images/pokemon/variant/back/4264.json +++ b/public/images/pokemon/variant/back/4264.json @@ -1,10 +1,8 @@ { "1": { - "010101": "010101", "abadaf": "95c090", "797570": "579666", "414141": "1c8155", - "1c1917": "1c1917", "f5f5f6": "f5ffea", "bc3065": "d414dd", "322c29": "01473a", @@ -13,11 +11,9 @@ "949496": "3d494e" }, "2": { - "010101": "010101", "abadaf": "1e1a3b", "797570": "302373", "414141": "7c4cd6", - "1c1917": "1c1917", "f5f5f6": "342d4c", "bc3065": "0099ce", "322c29": "412991", diff --git a/public/images/pokemon/variant/back/427.json b/public/images/pokemon/variant/back/427.json index 068998d5196..5ea989326d9 100644 --- a/public/images/pokemon/variant/back/427.json +++ b/public/images/pokemon/variant/back/427.json @@ -6,7 +6,6 @@ "523a3a": "994c3d", "8c5a42": "cc8866", "b57b4a": "ffcc99", - "101010": "101010", "3a313a": "130019", "c55a7b": "cecee5" }, @@ -17,8 +16,6 @@ "523a3a": "355699", "8c5a42": "5b93cc", "b57b4a": "8cd8ff", - "101010": "101010", - "3a313a": "3a313a", "c55a7b": "cc84b4" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/428-mega.json b/public/images/pokemon/variant/back/428-mega.json index e5221fcb22b..8ff3489fc64 100644 --- a/public/images/pokemon/variant/back/428-mega.json +++ b/public/images/pokemon/variant/back/428-mega.json @@ -9,7 +9,6 @@ "624a41": "660a38", "c55a7b": "7f4c99", "7b3941": "472866", - "101010": "101010", "232323": "0d0b16", "414141": "161626" }, @@ -23,7 +22,6 @@ "624a41": "65597f", "c55a7b": "cc4328", "7b3941": "990c00", - "101010": "101010", "232323": "191933", "414141": "312c49" } diff --git a/public/images/pokemon/variant/back/428.json b/public/images/pokemon/variant/back/428.json index b8176251f02..e5efa645c0c 100644 --- a/public/images/pokemon/variant/back/428.json +++ b/public/images/pokemon/variant/back/428.json @@ -1,7 +1,6 @@ { "1": { "523a3a": "991e47", - "101010": "101010", "b57b4a": "ffcc99", "8c5a42": "cc8866", "c5a57b": "cc3d55", @@ -11,7 +10,6 @@ }, "2": { "523a3a": "355699", - "101010": "101010", "b57b4a": "8cd8ff", "8c5a42": "5b93cc", "c5a57b": "cecee5", diff --git a/public/images/pokemon/variant/back/429.json b/public/images/pokemon/variant/back/429.json index 77530e81c00..32b54694f92 100644 --- a/public/images/pokemon/variant/back/429.json +++ b/public/images/pokemon/variant/back/429.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "b563b5": "ffdd67", "5a4263": "9b490e", "845284": "d3941a", @@ -8,11 +7,9 @@ "6b4a94": "387fa7", "31213a": "112048", "ef3a10": "cc762f", - "943a5a": "71370f", - "ffffff": "ffffff" + "943a5a": "71370f" }, "1": { - "101010": "101010", "b563b5": "3df7ed", "5a4263": "0c8086", "845284": "1dbdb9", @@ -20,11 +17,9 @@ "6b4a94": "a1c8db", "31213a": "244358", "ef3a10": "e28c27", - "943a5a": "7b3c08", - "ffffff": "ffffff" + "943a5a": "7b3c08" }, "2": { - "101010": "101010", "b563b5": "fff7dd", "5a4263": "5d4a2f", "845284": "eece8c", @@ -32,7 +27,6 @@ "6b4a94": "e6aa47", "31213a": "603305", "ef3a10": "c33126", - "943a5a": "7a1511", - "ffffff": "ffffff" + "943a5a": "7a1511" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/43.json b/public/images/pokemon/variant/back/43.json index e94b27ad756..407e9490c53 100644 --- a/public/images/pokemon/variant/back/43.json +++ b/public/images/pokemon/variant/back/43.json @@ -4,7 +4,6 @@ "c5e67b": "90a1d7", "4a5a21": "2a2274", "9cd64a": "606dbb", - "101010": "101010", "293a4a": "522c90", "5a6b84": "7946a9", "7394a5": "a564c7" @@ -14,7 +13,6 @@ "c5e67b": "e8b737", "4a5a21": "6a2509", "9cd64a": "b88026", - "101010": "101010", "293a4a": "560a25", "5a6b84": "79152a", "7394a5": "b3292e" diff --git a/public/images/pokemon/variant/back/433.json b/public/images/pokemon/variant/back/433.json index 59f6d4e7b0f..81bc89ed7b7 100644 --- a/public/images/pokemon/variant/back/433.json +++ b/public/images/pokemon/variant/back/433.json @@ -1,7 +1,6 @@ { "0": { "6b3a31": "631d61", - "000000": "000000", "d6d6f7": "f7e6e5", "e66352": "f37cdf", "ad5231": "a6459c", @@ -13,7 +12,6 @@ }, "1": { "6b3a31": "14404e", - "000000": "000000", "d6d6f7": "ebd4b0", "e66352": "4a94ad", "ad5231": "2f6e8c", @@ -25,7 +23,6 @@ }, "2": { "6b3a31": "102837", - "000000": "000000", "d6d6f7": "f7e6e5", "e66352": "4d8891", "ad5231": "3a656c", diff --git a/public/images/pokemon/variant/back/436.json b/public/images/pokemon/variant/back/436.json index 372a91449aa..5f678d2e976 100644 --- a/public/images/pokemon/variant/back/436.json +++ b/public/images/pokemon/variant/back/436.json @@ -1,7 +1,6 @@ { "1": { "103a4a": "3e3b45", - "101010": "101010", "2984a5": "9192a6", "195a7b": "737185", "63c5e6": "dfe1f4", @@ -9,7 +8,6 @@ }, "2": { "103a4a": "400f06", - "101010": "101010", "2984a5": "9d4e16", "195a7b": "7e2b15", "63c5e6": "e98851", diff --git a/public/images/pokemon/variant/back/437.json b/public/images/pokemon/variant/back/437.json index cccd9954d5d..7ea8842e638 100644 --- a/public/images/pokemon/variant/back/437.json +++ b/public/images/pokemon/variant/back/437.json @@ -4,7 +4,6 @@ "3194b5": "dedede", "214a5a": "6a6994", "42adce": "eeeaff", - "101010": "101010", "bdd6de": "bd9173", "73d6ef": "ffffff", "a5c5ce": "a27661", @@ -16,7 +15,6 @@ "3194b5": "d58151", "214a5a": "783827", "42adce": "f4a97f", - "101010": "101010", "bdd6de": "e0da82", "73d6ef": "edc590", "a5c5ce": "ccbd73", diff --git a/public/images/pokemon/variant/back/438.json b/public/images/pokemon/variant/back/438.json index 78a49203dd6..5e45ca123da 100644 --- a/public/images/pokemon/variant/back/438.json +++ b/public/images/pokemon/variant/back/438.json @@ -3,7 +3,6 @@ "315a19": "3d1e0c", "9cde7b": "b6a747", "4ac542": "8a6a24", - "000000": "000000", "5a8c5a": "6c4616", "846b42": "4c443b", "524231": "322a22", @@ -13,7 +12,6 @@ "315a19": "846764", "9cde7b": "fffdee", "4ac542": "e8e6d7", - "000000": "000000", "5a8c5a": "b9ac9d", "846b42": "3c389d", "524231": "2d2164", diff --git a/public/images/pokemon/variant/back/44.json b/public/images/pokemon/variant/back/44.json index 0f4b93f23d8..e370655c694 100644 --- a/public/images/pokemon/variant/back/44.json +++ b/public/images/pokemon/variant/back/44.json @@ -3,7 +3,6 @@ "c57329": "0f7469", "8c3a19": "043d44", "5a2900": "162486", - "101010": "101010", "ce734a": "7aa8d2", "ffbd42": "55bb7e", "f7efbd": "7dcf94", @@ -18,7 +17,6 @@ "c57329": "9f631f", "8c3a19": "773811", "5a2900": "680b10", - "101010": "101010", "ce734a": "d98247", "ffbd42": "e8d65e", "f7efbd": "ede68f", diff --git a/public/images/pokemon/variant/back/440.json b/public/images/pokemon/variant/back/440.json index f89500aa28f..cb9162a831a 100644 --- a/public/images/pokemon/variant/back/440.json +++ b/public/images/pokemon/variant/back/440.json @@ -1,18 +1,15 @@ { "0": { "a55a7b": "925382", - "101010": "101010", "ffc5d6": "f6cae1", "c58ca5": "c57cad", "73425a": "6c1f9e", - "ffffff": "ffffff", "a5527b": "953fc7", "de6b9c": "c164e4", "cebdc5": "d6bdde" }, "1": { "a55a7b": "81256f", - "101010": "101010", "ffc5d6": "ebbada", "c58ca5": "bd61a4", "73425a": "61020c", @@ -23,7 +20,6 @@ }, "2": { "a55a7b": "6a3981", - "101010": "101010", "ffc5d6": "e2bfef", "c58ca5": "b377c6", "73425a": "132f5d", diff --git a/public/images/pokemon/variant/back/441.json b/public/images/pokemon/variant/back/441.json index ab17493bee6..5860511c18a 100644 --- a/public/images/pokemon/variant/back/441.json +++ b/public/images/pokemon/variant/back/441.json @@ -2,7 +2,6 @@ "1": { "292931": "331d29", "5a5a63": "8f5a70", - "000000": "000000", "42424a": "573244", "c5c5c5": "deacce", "ffffff": "ffeef7", diff --git a/public/images/pokemon/variant/back/442.json b/public/images/pokemon/variant/back/442.json index d2fbb6f372c..7ca9d701108 100644 --- a/public/images/pokemon/variant/back/442.json +++ b/public/images/pokemon/variant/back/442.json @@ -6,10 +6,6 @@ "bdd642": "d69042", "ffde10": "db8241", "524252": "42426b", - "101010": "101010", - "b59c94": "b59c94", - "9c846b": "9c846b", - "846b63": "846b63", "734a7b": "8b8b8b" }, "2": { @@ -18,11 +14,8 @@ "63b542": "71cfd7", "bdd642": "a28ded", "ffde10": "a61145", - "524252": "524252", - "101010": "101010", "b59c94": "59001f", "9c846b": "484848", - "846b63": "282828", - "734a7b": "734a7b" + "846b63": "282828" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/443.json b/public/images/pokemon/variant/back/443.json index 4a65daecb4b..c2154751658 100644 --- a/public/images/pokemon/variant/back/443.json +++ b/public/images/pokemon/variant/back/443.json @@ -5,11 +5,6 @@ "314252": "082963", "8cc5d6": "42a5f7", "5294ad": "1984c5", - "42d6de": "42d6de", - "3aadc5": "3aadc5", - "ffffff": "ffffff", - "c5ced6": "c5ced6", - "5a6363": "5a6363", "ad3a10": "a57c10", "de5a29": "e6c529", "7b1910": "731029" @@ -22,9 +17,6 @@ "5294ad": "905647", "42d6de": "54b0ff", "3aadc5": "2878e1", - "ffffff": "ffffff", - "c5ced6": "c5ced6", - "5a6363": "5a6363", "ad3a10": "92a9b2", "de5a29": "d9f0f1", "7b1910": "731029" @@ -37,9 +29,6 @@ "5294ad": "4c5e66", "42d6de": "6fe6a3", "3aadc5": "23b8a8", - "ffffff": "ffffff", - "c5ced6": "c5ced6", - "5a6363": "5a6363", "ad3a10": "92a9b2", "de5a29": "d9f0f1", "7b1910": "3e3a52" diff --git a/public/images/pokemon/variant/back/444.json b/public/images/pokemon/variant/back/444.json index 287f0c4050c..d502b2387a6 100644 --- a/public/images/pokemon/variant/back/444.json +++ b/public/images/pokemon/variant/back/444.json @@ -11,10 +11,7 @@ "5a1000": "502209", "ffff19": "fa845a", "ad314a": "ad7b08", - "c5ced6": "c5ced6", - "de5a29": "f7b834", - "ffffff": "ffffff", - "737b84": "737b84" + "de5a29": "f7b834" }, "1": { "3a4a8c": "6f3633", @@ -28,10 +25,7 @@ "5a1000": "211e33", "ffff19": "ffd177", "ad314a": "829ca6", - "c5ced6": "c5ced6", - "de5a29": "c2dedf", - "ffffff": "ffffff", - "737b84": "737b84" + "de5a29": "c2dedf" }, "2": { "3a4a8c": "223a4a", @@ -45,9 +39,6 @@ "5a1000": "521000", "ffff19": "62cbff", "ad314a": "be472f", - "c5ced6": "c5ced6", - "de5a29": "ee723e", - "ffffff": "ffffff", - "737b84": "737b84" + "de5a29": "ee723e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/445-mega.json b/public/images/pokemon/variant/back/445-mega.json index 68c374cc43f..511c3760720 100644 --- a/public/images/pokemon/variant/back/445-mega.json +++ b/public/images/pokemon/variant/back/445-mega.json @@ -4,13 +4,9 @@ "6060c0": "236696", "404080": "19446e", "8080c0": "65a2d5", - "000000": "000000", "c0a000": "3aadc5", "e0e000": "42d6de", "c04040": "9e5201", - "ffffff": "ffffff", - "808080": "808080", - "c0c0c0": "c0c0c0", "e04040": "f7ac34", "602000": "502209" }, @@ -19,13 +15,9 @@ "6060c0": "deae7a", "404080": "b67252", "8080c0": "f2d8aa", - "000000": "000000", "c0a000": "255dd7", "e0e000": "4caaff", "c04040": "9fb6bf", - "ffffff": "ffffff", - "808080": "808080", - "c0c0c0": "c0c0c0", "e04040": "dce8e8", "602000": "393648" }, @@ -34,13 +26,9 @@ "6060c0": "2f434b", "404080": "152c3b", "8080c0": "689099", - "000000": "000000", "c0a000": "23b8a8", "e0e000": "6fe6a3", "c04040": "b23219", - "ffffff": "ffffff", - "808080": "808080", - "c0c0c0": "c0c0c0", "e04040": "ec642c", "602000": "521000" } diff --git a/public/images/pokemon/variant/back/445.json b/public/images/pokemon/variant/back/445.json index 7bf76d03212..a151b1a7da5 100644 --- a/public/images/pokemon/variant/back/445.json +++ b/public/images/pokemon/variant/back/445.json @@ -4,12 +4,8 @@ "5a63ad": "226596", "42428c": "264074", "7b7bce": "65a2d5", - "101010": "101010", "c59410": "3aadc5", "ffd619": "42d6de", - "ffffff": "ffffff", - "737b84": "737b84", - "c5ced6": "c5ced6", "bd3a42": "b2630f", "5a1000": "502209", "e64a31": "f7ac34" @@ -19,12 +15,8 @@ "5a63ad": "deae7a", "42428c": "af6e55", "7b7bce": "f2d8aa", - "101010": "101010", "c59410": "255dd7", "ffd619": "4caaff", - "ffffff": "ffffff", - "737b84": "737b84", - "c5ced6": "c5ced6", "bd3a42": "9fb6bf", "5a1000": "393648", "e64a31": "c8c8c8" @@ -34,12 +26,8 @@ "5a63ad": "2f434b", "42428c": "152c3b", "7b7bce": "689099", - "101010": "101010", "c59410": "23b8a8", "ffd619": "6fe6a3", - "ffffff": "ffffff", - "737b84": "737b84", - "c5ced6": "c5ced6", "bd3a42": "be472f", "5a1000": "521000", "e64a31": "c8c8c8" diff --git a/public/images/pokemon/variant/back/447.json b/public/images/pokemon/variant/back/447.json index e5bb7f6e3ae..85f1a8f0edd 100644 --- a/public/images/pokemon/variant/back/447.json +++ b/public/images/pokemon/variant/back/447.json @@ -1,18 +1,14 @@ { "0": { - "101010": "101010", "104a7b": "6c3e20", "4a9cef": "e2ce75", "29739c": "a56d2f", "3a3a3a": "12334a", "5a5a5a": "2c486e", - "848484": "848484", "8c843a": "b6957f", - "dec573": "e6d5b9", - "b5b5b5": "b5b5b5" + "dec573": "e6d5b9" }, "1": { - "101010": "101010", "104a7b": "590e1f", "4a9cef": "b85251", "29739c": "7f1e2f", @@ -24,15 +20,12 @@ "b5b5b5": "f3aa58" }, "2": { - "101010": "101010", "104a7b": "3a2254", "4a9cef": "735c9e", "29739c": "513674", "3a3a3a": "26153f", "5a5a5a": "30224c", - "848484": "848484", "8c843a": "373566", - "dec573": "51668e", - "b5b5b5": "b5b5b5" + "dec573": "51668e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/448-mega.json b/public/images/pokemon/variant/back/448-mega.json index 686bb7c0d77..28bb8eb4363 100644 --- a/public/images/pokemon/variant/back/448-mega.json +++ b/public/images/pokemon/variant/back/448-mega.json @@ -3,23 +3,18 @@ "173968": "6c3e20", "407cdc": "e2ce75", "2e5c85": "a56d2f", - "101010": "101010", "393939": "2c2f4c", "5a5a5a": "3a5376", "d5d5d5": "dbcbcb", - "fcfcfc": "fcfcfc", "9a2626": "8a332f", "de4141": "d85e40", "e6d083": "719cbe", - "838383": "838383", - "b09a4d": "51689c", - "ac6262": "ac6262" + "b09a4d": "51689c" }, "1": { "173968": "202931", "407cdc": "b85251", "2e5c85": "7f1e2f", - "101010": "101010", "393939": "202931", "5a5a5a": "444b4b", "d5d5d5": "bb711c", @@ -27,23 +22,17 @@ "9a2626": "a79687", "de4141": "f7eadc", "e6d083": "dec2a3", - "838383": "838383", - "b09a4d": "a26f59", - "ac6262": "ac6262" + "b09a4d": "a26f59" }, "2": { "173968": "2e1547", "407cdc": "735c9e", "2e5c85": "513674", - "101010": "101010", "393939": "291838", "5a5a5a": "352a4b", - "d5d5d5": "d5d5d5", - "fcfcfc": "fcfcfc", "9a2626": "b8461f", "de4141": "de8141", "e6d083": "51668e", - "838383": "838383", "b09a4d": "373566", "ac6262": "9b2e11" } diff --git a/public/images/pokemon/variant/back/448.json b/public/images/pokemon/variant/back/448.json index 5fe86ccde17..17780e4e225 100644 --- a/public/images/pokemon/variant/back/448.json +++ b/public/images/pokemon/variant/back/448.json @@ -3,14 +3,9 @@ "104a7b": "6c3e20", "4a9cef": "e2ce75", "29739c": "a56d2f", - "101010": "101010", "3a3a3a": "0a2734", "5a5a5a": "223754", "d6d6d6": "ddcccc", - "ffffff": "ffffff", - "a53131": "a53131", - "de4242": "de4242", - "848484": "848484", "b5b563": "b6957f", "e6e69c": "e6d5b9", "ad6363": "82b0c4" @@ -19,29 +14,21 @@ "104a7b": "410814", "4a9cef": "b85251", "29739c": "7f1e2f", - "101010": "101010", "3a3a3a": "262032", "5a5a5a": "3b3d4a", "d6d6d6": "eb9645", "ffffff": "fcc161", "a53131": "d3acb2", "de4242": "ebdcdb", - "848484": "848484", "b5b563": "ab8977", - "e6e69c": "dfd0c0", - "ad6363": "ad6363" + "e6e69c": "dfd0c0" }, "2": { "104a7b": "3f2457", "4a9cef": "735c9e", "29739c": "513674", - "101010": "101010", "3a3a3a": "2c2339", "5a5a5a": "3d3052", - "d6d6d6": "d6d6d6", - "ffffff": "ffffff", - "a53131": "a53131", - "de4242": "de4242", "848484": "453a5a", "b5b563": "47439c", "e6e69c": "6c8bc7", diff --git a/public/images/pokemon/variant/back/45.json b/public/images/pokemon/variant/back/45.json index ea6e7dea875..df028577a42 100644 --- a/public/images/pokemon/variant/back/45.json +++ b/public/images/pokemon/variant/back/45.json @@ -7,7 +7,6 @@ "f77373": "5e8fde", "de4a5a": "436ac7", "944a00": "472b86", - "101010": "101010", "ff8429": "966fbb", "ce6319": "724ba4", "19294a": "201349", @@ -24,7 +23,6 @@ "f77373": "d2cbb2", "de4a5a": "cdb2a2", "944a00": "621734", - "101010": "101010", "ff8429": "a23d44", "ce6319": "8b293e", "19294a": "510c35", diff --git a/public/images/pokemon/variant/back/453.json b/public/images/pokemon/variant/back/453.json index 436da3d191f..18211242b55 100644 --- a/public/images/pokemon/variant/back/453.json +++ b/public/images/pokemon/variant/back/453.json @@ -18,7 +18,6 @@ "4a4a8c": "d88f77", "6b73d6": "f0ce8b", "849cff": "fff2c9", - "101010": "101010", "9c3a3a": "16729b", "e6525a": "40adbb", "ff9ca5": "a9ebeb", diff --git a/public/images/pokemon/variant/back/454.json b/public/images/pokemon/variant/back/454.json index 0f96173cbfd..2082cec8ff1 100644 --- a/public/images/pokemon/variant/back/454.json +++ b/public/images/pokemon/variant/back/454.json @@ -15,7 +15,6 @@ }, "2": { "3a3a52": "b15248", - "101010": "101010", "6b73d6": "f0ce8b", "4a4a8c": "d88f77", "849cff": "fff2c9", diff --git a/public/images/pokemon/variant/back/456.json b/public/images/pokemon/variant/back/456.json index e10373acbf4..3a970d1ed94 100644 --- a/public/images/pokemon/variant/back/456.json +++ b/public/images/pokemon/variant/back/456.json @@ -2,7 +2,6 @@ "1": { "31425a": "824568", "526b8c": "966764", - "101010": "101010", "426b84": "aa6985", "94d6e6": "f3e1c6", "29293a": "4f2846", @@ -11,14 +10,11 @@ "c54591": "f19e53", "833171": "d3633a", "c54a94": "8bbcd9", - "efffff": "efffff", - "73427b": "6d90c2", - "15202e": "15202e" + "73427b": "6d90c2" }, "2": { "31425a": "eeb547", "526b8c": "181e52", - "101010": "101010", "426b84": "fff8b0", "94d6e6": "34507e", "29293a": "d36a2b", @@ -27,8 +23,6 @@ "c54591": "50a8c2", "833171": "366ea4", "c54a94": "7b1615", - "efffff": "efffff", - "73427b": "5e0e0e", - "15202e": "15202e" + "73427b": "5e0e0e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/4562.json b/public/images/pokemon/variant/back/4562.json index 9e8c1bee22e..5dd509b1345 100644 --- a/public/images/pokemon/variant/back/4562.json +++ b/public/images/pokemon/variant/back/4562.json @@ -2,10 +2,8 @@ "1": { "313131": "145555", "525252": "257e6a", - "101010": "101010", "672b82": "7e173e", "ab38d1": "b0264c", - "371d3f": "371d3f", "6f5c6b": "743949", "e6ddde": "d6b8a0", "927e8d": "a46361", @@ -14,10 +12,8 @@ "2": { "313131": "69162c", "525252": "90222b", - "101010": "101010", "672b82": "57a0b9", "ab38d1": "c2ffe2", - "371d3f": "371d3f", "6f5c6b": "0a4340", "e6ddde": "4fb66a", "927e8d": "1f6455", diff --git a/public/images/pokemon/variant/back/457.json b/public/images/pokemon/variant/back/457.json index d6a2fad6569..845bfa899e7 100644 --- a/public/images/pokemon/variant/back/457.json +++ b/public/images/pokemon/variant/back/457.json @@ -1,7 +1,6 @@ { "2": { "526b8c": "0f154a", - "101010": "101010", "c5e6f7": "5781c7", "94d6e6": "34507e", "7394ad": "1c335b", @@ -10,7 +9,6 @@ "303449": "b95735", "c54591": "ffc369", "9e357b": "c7703c", - "efffff": "efffff", "c54a94": "983121", "73427b": "7b1213", "26344c": "121c2f" diff --git a/public/images/pokemon/variant/back/46.json b/public/images/pokemon/variant/back/46.json index 1062e915d76..0817d312551 100644 --- a/public/images/pokemon/variant/back/46.json +++ b/public/images/pokemon/variant/back/46.json @@ -8,7 +8,6 @@ "c5b521": "d9c9b9", "3a2910": "3a2108", "734a19": "521e0a", - "101010": "101010", "ffad63": "cf6423", "e68429": "bc4b23" }, @@ -21,7 +20,6 @@ "c5b521": "e5d59c", "3a2910": "3a2108", "734a19": "5a392d", - "101010": "101010", "ffad63": "f3d8cb", "e68429": "d1afa3" }, @@ -34,7 +32,6 @@ "c5b521": "e5d59c", "3a2910": "1e152d", "734a19": "3d2b4e", - "101010": "101010", "ffad63": "bf9edd", "e68429": "9779a6" } diff --git a/public/images/pokemon/variant/back/461.json b/public/images/pokemon/variant/back/461.json index c0cd7405527..01c7eca5892 100644 --- a/public/images/pokemon/variant/back/461.json +++ b/public/images/pokemon/variant/back/461.json @@ -3,7 +3,6 @@ "c52973": "3a3d60", "842152": "191a24", "f75273": "636896", - "101010": "101010", "293152": "530b34", "6b6bad": "8b274b", "424a84": "691043", @@ -18,12 +17,10 @@ "c52973": "3d81c5", "842152": "102f6c", "f75273": "5cb0eb", - "101010": "101010", "293152": "96543f", "6b6bad": "ffd3a7", "424a84": "ecaa84", "c58c08": "8f1a8d", - "ffffff": "ffffff", "ffd642": "e6509f", "6b637b": "718198", "c5bdce": "b3cedb", diff --git a/public/images/pokemon/variant/back/462.json b/public/images/pokemon/variant/back/462.json index 39a7d3460b2..a4af8152167 100644 --- a/public/images/pokemon/variant/back/462.json +++ b/public/images/pokemon/variant/back/462.json @@ -3,8 +3,6 @@ "ad8419": "8fb9cc", "f7ce52": "cee7f2", "635a6b": "90495b", - "ffffff": "ffffff", - "101010": "101010", "424252": "612e40", "7b7b84": "90495b", "adadb5": "c36c77", @@ -17,7 +15,6 @@ "f7ce52": "a7dcaa", "635a6b": "662e00", "ffffff": "fffb93", - "101010": "101010", "424252": "401d00", "7b7b84": "662e00", "adadb5": "8c500b", diff --git a/public/images/pokemon/variant/back/464.json b/public/images/pokemon/variant/back/464.json index b9269dc7279..8232d6da3eb 100644 --- a/public/images/pokemon/variant/back/464.json +++ b/public/images/pokemon/variant/back/464.json @@ -5,15 +5,9 @@ "ef5200": "6f4d9f", "29293a": "1f1028", "3a3a4a": "3b2d40", - "101010": "101010", "7b6b7b": "6e5d7b", - "6b6373": "6b6373", - "cecede": "cecede", - "efefff": "efefff", "5a4a63": "514259", - "948cad": "948cad", - "943a00": "4c2f6e", - "ad2900": "ad2900" + "943a00": "4c2f6e" }, "2": { "523100": "492133", @@ -21,7 +15,6 @@ "ef5200": "6d3950", "29293a": "442339", "3a3a4a": "701f38", - "101010": "101010", "7b6b7b": "c6405b", "6b6373": "b66360", "cecede": "e8a797", diff --git a/public/images/pokemon/variant/back/465.json b/public/images/pokemon/variant/back/465.json index cc868023c2b..26f1d75d388 100644 --- a/public/images/pokemon/variant/back/465.json +++ b/public/images/pokemon/variant/back/465.json @@ -3,10 +3,8 @@ "193a63": "391963", "295a84": "472984", "3a73ad": "6b3aad", - "000000": "000000", "5a193a": "195a2a", "bd216b": "21bd69", - "31313a": "31313a", "d65a94": "5ad662" }, "2": { @@ -18,4 +16,4 @@ "bd216b": "b35131", "193a63": "705040" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/back/466.json b/public/images/pokemon/variant/back/466.json index 35c65a58eea..362c4043b08 100644 --- a/public/images/pokemon/variant/back/466.json +++ b/public/images/pokemon/variant/back/466.json @@ -5,7 +5,6 @@ "5a4a42": "465b69", "312929": "333931", "ffef94": "baffde", - "000000": "000000", "c5ad42": "4abaae", "731900": "73376d", "b53a19": "a45ead", @@ -18,11 +17,9 @@ "5a4a42": "285ffb", "312929": "2334c1", "ffef94": "f5f5f5", - "000000": "000000", "c5ad42": "b8bfd6", "731900": "e68419", "b53a19": "f1c168", - "f7523a": "e8ff80", - "b5b5c5": "b5b5c5" + "f7523a": "e8ff80" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/467.json b/public/images/pokemon/variant/back/467.json index 8371e4c36a2..121e1266a39 100644 --- a/public/images/pokemon/variant/back/467.json +++ b/public/images/pokemon/variant/back/467.json @@ -8,18 +8,15 @@ "e64231": "db4d19", "d63131": "ba4014", "953f47": "8c3313", - "101010": "101010", "612922": "8c3313", "ff94a5": "fb832b", "c55a6b": "db4d19", - "4a4a42": "4a4a42", "ca2b2b": "372d49", "a1354b": "272034", "cea53a": "db4d19", "ffc53a": "fb832b", "bc5969": "474139", "ff9dad": "777066", - "ced6e6": "ced6e6", "662f20": "8c3313", "e2937a": "fb832b", "b14849": "db4d19", @@ -34,18 +31,15 @@ "e64231": "478bc0", "d63131": "4065b0", "953f47": "4065b0", - "101010": "101010", "612922": "699296", "ff94a5": "eaffff", "c55a6b": "c6edf2", - "4a4a42": "4a4a42", "ca2b2b": "4065b0", "a1354b": "31508c", "cea53a": "c6edf2", "ffc53a": "eaffff", "bc5969": "7f90a9", "ff9dad": "abc7de", - "ced6e6": "ced6e6", "662f20": "2a2523", "e2937a": "eaffff", "b14849": "4065b0", diff --git a/public/images/pokemon/variant/back/468.json b/public/images/pokemon/variant/back/468.json index 1c0c54973d1..72ada607d8c 100644 --- a/public/images/pokemon/variant/back/468.json +++ b/public/images/pokemon/variant/back/468.json @@ -5,7 +5,6 @@ "ce4a31": "409e80", "4a5a73": "593237", "efefff": "eee0db", - "101010": "101010", "bdc5de": "ceacac", "4284ef": "d05887", "bd8484": "8ee4be", @@ -18,7 +17,6 @@ "ce4a31": "c48330", "4a5a73": "452030", "efefff": "f3cbcb", - "101010": "101010", "bdc5de": "c2888c", "4284ef": "f19a4e", "bd8484": "f5b55e", @@ -31,7 +29,6 @@ "ce4a31": "d97741", "4a5a73": "254985", "efefff": "b3ddeb", - "101010": "101010", "bdc5de": "81aaca", "4284ef": "db79db", "bd8484": "f39a4c", diff --git a/public/images/pokemon/variant/back/47.json b/public/images/pokemon/variant/back/47.json index 141a046e34e..a21356d48cc 100644 --- a/public/images/pokemon/variant/back/47.json +++ b/public/images/pokemon/variant/back/47.json @@ -9,7 +9,6 @@ "de6b31": "bc4b23", "631000": "521e0a", "ff8452": "e0843d", - "101010": "101010", "b5423a": "85251b" }, "1": { @@ -22,7 +21,6 @@ "de6b31": "d1afa3", "631000": "5a392d", "ff8452": "f3d8cb", - "101010": "101010", "b5423a": "98655f" }, "2": { @@ -35,7 +33,6 @@ "de6b31": "9779a6", "631000": "3d2b4e", "ff8452": "bf9edd", - "101010": "101010", "b5423a": "6a507b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/470.json b/public/images/pokemon/variant/back/470.json index 22912bc961c..3b6f1154e13 100644 --- a/public/images/pokemon/variant/back/470.json +++ b/public/images/pokemon/variant/back/470.json @@ -2,7 +2,6 @@ "2": { "31635a": "9f5d29", "6bbd8c": "edd898", - "101010": "101010", "319c73": "d8a452", "efd69c": "b39671", "d6b573": "816242", diff --git a/public/images/pokemon/variant/back/471.json b/public/images/pokemon/variant/back/471.json index b5332dd5597..f8de14b6bc3 100644 --- a/public/images/pokemon/variant/back/471.json +++ b/public/images/pokemon/variant/back/471.json @@ -1,19 +1,14 @@ { "0": { - "101010": "101010", "94e6ef": "f8f7ff", "94b5ce": "e6e3f3", "7b9cb5": "dad9ea", "525a84": "636b94", - "3a3a52": "3a3a52", - "313a4a": "313a4a", "529cde": "a0e7f7", "425a6b": "3597ac", - "52639c": "54bbd2", - "efffff": "efffff" + "52639c": "54bbd2" }, "1": { - "101010": "101010", "94e6ef": "c0aebd", "94b5ce": "a1899e", "7b9cb5": "865d86", @@ -22,11 +17,9 @@ "313a4a": "53205d", "529cde": "c6b9ff", "425a6b": "835ad1", - "52639c": "997aea", - "efffff": "efffff" + "52639c": "997aea" }, "2": { - "101010": "101010", "94e6ef": "63d1e9", "94b5ce": "3b9abe", "7b9cb5": "28769f", @@ -35,7 +28,6 @@ "313a4a": "09234b", "529cde": "3aceef", "425a6b": "edfcff", - "52639c": "2984d6", - "efffff": "efffff" + "52639c": "2984d6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/474.json b/public/images/pokemon/variant/back/474.json index 2490d3fd713..1729121eb34 100644 --- a/public/images/pokemon/variant/back/474.json +++ b/public/images/pokemon/variant/back/474.json @@ -3,10 +3,8 @@ "5a3a4a": "9e264e", "ef5a63": "f8a8e6", "94426b": "d95492", - "101010": "101010", "bd4a6b": "e883c8", "ff94b5": "fccef2", - "ffffff": "ffffff", "313a63": "110a25", "31739c": "271a3e", "8cd6ff": "5e4868", @@ -19,7 +17,6 @@ "5a3a4a": "31150e", "ef5a63": "82391d", "94426b": "491c0c", - "101010": "101010", "bd4a6b": "612a17", "ff94b5": "a04c27", "ffffff": "ffe4d4", diff --git a/public/images/pokemon/variant/back/475.json b/public/images/pokemon/variant/back/475.json index 3cafe1d59ea..8d359917f97 100644 --- a/public/images/pokemon/variant/back/475.json +++ b/public/images/pokemon/variant/back/475.json @@ -6,7 +6,6 @@ "42845a": "c08f44", "7394a5": "ebc984", "5ab56b": "eabb5d", - "101010": "101010", "7b8cad": "d59c80", "efefff": "f8efde", "a5b5ce": "ffc4a6", @@ -22,11 +21,6 @@ "42845a": "242745", "7394a5": "3f427f", "5ab56b": "282c5d", - "101010": "101010", - "7b8cad": "7b8cad", - "efefff": "efefff", - "a5b5ce": "a5b5ce", - "c5cede": "c5cede", "e6523a": "d846c1", "7b5252": "9e2a7c", "ff9c84": "b035ae" diff --git a/public/images/pokemon/variant/back/478.json b/public/images/pokemon/variant/back/478.json index 36861f03a5e..bd8ee24cac1 100644 --- a/public/images/pokemon/variant/back/478.json +++ b/public/images/pokemon/variant/back/478.json @@ -7,7 +7,6 @@ "527bb5": "34853e", "73b5d6": "65d64d", "42528c": "045836", - "101010": "101010", "4a3173": "001e1d", "6b3131": "081d22", "e67b4a": "29504d", diff --git a/public/images/pokemon/variant/back/479-fan.json b/public/images/pokemon/variant/back/479-fan.json index 60cb7e4fc50..13d46fccf21 100644 --- a/public/images/pokemon/variant/back/479-fan.json +++ b/public/images/pokemon/variant/back/479-fan.json @@ -8,21 +8,16 @@ "7b3a21": "113526", "ef7329": "417131", "ffad84": "819d56", - "101010": "101010", - "4a4a52": "2e3f18", - "bdbdbd": "bdbdbd" + "4a4a52": "2e3f18" }, "2": { "d6ad00": "adbed7", "ffe65a": "d9e1ec", "ffefa5": "edf2fa", - "ffffff": "ffffff", "c54a19": "cbb240", "7b3a21": "ad7d28", "ef7329": "e4de6d", "ffad84": "fcfebf", - "101010": "101010", - "4a4a52": "374f6c", - "bdbdbd": "bdbdbd" + "4a4a52": "374f6c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/479-frost.json b/public/images/pokemon/variant/back/479-frost.json index 357bc3ceb99..e36f1eb2648 100644 --- a/public/images/pokemon/variant/back/479-frost.json +++ b/public/images/pokemon/variant/back/479-frost.json @@ -4,11 +4,8 @@ "ce73ff": "648c50", "de9cff": "9ea436", "7b3a21": "183b29", - "101010": "101010", "ef7329": "417131", "c54a19": "205027", - "292929": "292929", - "4a4a52": "4a4a52", "ffffff": "fbffbd" }, "2": { @@ -16,11 +13,7 @@ "ce73ff": "59b5d7", "de9cff": "8ed4e9", "7b3a21": "536d8c", - "101010": "101010", "ef7329": "c5cbe5", - "c54a19": "93a5ba", - "292929": "292929", - "4a4a52": "4a4a52", - "ffffff": "ffffff" + "c54a19": "93a5ba" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/479-heat.json b/public/images/pokemon/variant/back/479-heat.json index eb5aa5503f2..123080d40ac 100644 --- a/public/images/pokemon/variant/back/479-heat.json +++ b/public/images/pokemon/variant/back/479-heat.json @@ -8,19 +8,16 @@ "ffad84": "819d56", "c54a19": "205027", "ef7329": "417131", - "101010": "101010", "292929": "142a1f" }, "2": { "bd2929": "cbbf4c", "ff4231": "f5f4ab", "ff9c94": "fdffe1", - "ffffff": "ffffff", "7b3a21": "9e3867", "ffad84": "ffd5d0", "c54a19": "d06280", "ef7329": "ff8493", - "101010": "101010", "292929": "581944" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/479-mow.json b/public/images/pokemon/variant/back/479-mow.json index b05f61a329c..f7e6f73165f 100644 --- a/public/images/pokemon/variant/back/479-mow.json +++ b/public/images/pokemon/variant/back/479-mow.json @@ -7,7 +7,6 @@ "c54a19": "205027", "ef7329": "417131", "ffad84": "819d56", - "101010": "101010", "4a4a52": "183b29", "ffffff": "fbffbd" }, @@ -18,9 +17,6 @@ "7b3a21": "064f40", "c54a19": "147a5c", "ef7329": "279e69", - "ffad84": "6ada9c", - "101010": "101010", - "4a4a52": "4a4a52", - "ffffff": "ffffff" + "ffad84": "6ada9c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/479-wash.json b/public/images/pokemon/variant/back/479-wash.json index eac753f790f..9c7e5547344 100644 --- a/public/images/pokemon/variant/back/479-wash.json +++ b/public/images/pokemon/variant/back/479-wash.json @@ -4,12 +4,10 @@ "084ac5": "204336", "8cbdf7": "9ea436", "c54a19": "205027", - "101010": "101010", "ffad84": "819d56", "7b3a21": "143b2b", "ef7329": "417131", "4a4a52": "183b29", - "292929": "292929", "ffffff": "fbffbd" }, "2": { @@ -17,12 +15,8 @@ "084ac5": "1aac79", "8cbdf7": "b4feca", "c54a19": "53abd0", - "101010": "101010", "ffad84": "bbf7fe", "7b3a21": "255e90", - "ef7329": "86d7ec", - "4a4a52": "4a4a52", - "292929": "292929", - "ffffff": "ffffff" + "ef7329": "86d7ec" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/479.json b/public/images/pokemon/variant/back/479.json index e6bd74a3c5a..d0cc41fd8dc 100644 --- a/public/images/pokemon/variant/back/479.json +++ b/public/images/pokemon/variant/back/479.json @@ -6,7 +6,6 @@ "c54a19": "205027", "7b3a21": "143b2b", "ef7329": "417131", - "101010": "101010", "bdbdbd": "d8e082", "0842ad": "648c50", "317bef": "89a271", @@ -15,12 +14,9 @@ "2": { "5ac5bd": "64da6a", "bdf7ef": "d7f3c1", - "ffffff": "ffffff", "c54a19": "2e3948", "7b3a21": "242834", "ef7329": "4d5262", - "101010": "101010", - "bdbdbd": "bdbdbd", "0842ad": "c95367", "317bef": "e9919c", "29adbd": "1fb18e" diff --git a/public/images/pokemon/variant/back/480.json b/public/images/pokemon/variant/back/480.json index c8b2594016b..17c8018c61b 100644 --- a/public/images/pokemon/variant/back/480.json +++ b/public/images/pokemon/variant/back/480.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "f7c573": "e8824f", "ad8c42": "ba5327", "735a42": "86340d", @@ -11,7 +10,6 @@ "ad4242": "e141ed" }, "1": { - "101010": "101010", "f7c573": "3675ba", "ad8c42": "1e4891", "735a42": "0b1f51", @@ -22,7 +20,6 @@ "ad4242": "ffbd73" }, "2": { - "101010": "101010", "f7c573": "4d967d", "ad8c42": "24594a", "735a42": "123723", diff --git a/public/images/pokemon/variant/back/481.json b/public/images/pokemon/variant/back/481.json index cbaa6c1597b..9ed487565ac 100644 --- a/public/images/pokemon/variant/back/481.json +++ b/public/images/pokemon/variant/back/481.json @@ -3,7 +3,6 @@ "84426b": "691149", "b55284": "93397b", "ef73ad": "b35596", - "101010": "101010", "7b7394": "8d4275", "949cc5": "d295b9", "424242": "591c4b", @@ -14,7 +13,6 @@ "84426b": "371959", "b55284": "59367e", "ef73ad": "785194", - "101010": "101010", "7b7394": "6b4b75", "949cc5": "b89cbb", "424242": "51385c", @@ -25,11 +23,9 @@ "84426b": "813401", "b55284": "c76e1e", "ef73ad": "e2a21b", - "101010": "101010", "7b7394": "896149", "949cc5": "c5ac94", "424242": "633826", - "b5cef7": "f7e0b5", - "ef4242": "ef4242" + "b5cef7": "f7e0b5" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/482.json b/public/images/pokemon/variant/back/482.json index ef599ca2581..59039572fec 100644 --- a/public/images/pokemon/variant/back/482.json +++ b/public/images/pokemon/variant/back/482.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "3a4a73": "03436b", "5a94c5": "27bac2", "426394": "0f7293", @@ -11,7 +10,6 @@ "ad4242": "7c1caa" }, "1": { - "101010": "101010", "3a4a73": "23472c", "5a94c5": "488356", "426394": "32613b", @@ -22,7 +20,6 @@ "ad4242": "d26725" }, "2": { - "101010": "101010", "3a4a73": "62114e", "5a94c5": "ce569c", "426394": "a4327e", diff --git a/public/images/pokemon/variant/back/485.json b/public/images/pokemon/variant/back/485.json index 3eb9d2f0d0f..fd87acf184a 100644 --- a/public/images/pokemon/variant/back/485.json +++ b/public/images/pokemon/variant/back/485.json @@ -2,7 +2,6 @@ "1": { "5a3131": "313f5a", "ad5a42": "4266ad", - "737373": "737373", "191919": "2f2f2f", "84425a": "425884", "c5c5c5": "e3e3e3", @@ -10,21 +9,17 @@ "ce8429": "29ce5a", "ffa510": "10ff6b", "525252": "767676", - "949494": "bfa9a9", - "3a3a3a": "3a3a3a" + "949494": "bfa9a9" }, "2": { "5a3131": "462151", "ad5a42": "7836a7", - "737373": "737373", - "191919": "191919", "84425a": "633372", "c5c5c5": "949494", "e6e6ef": "b0b0b0", "ce8429": "ce2988", "ffa510": "f110ff", "525252": "514949", - "949494": "636363", - "3a3a3a": "3a3a3a" + "949494": "636363" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/487-altered.json b/public/images/pokemon/variant/back/487-altered.json index 2342bc62e92..c7cdeeaabfa 100644 --- a/public/images/pokemon/variant/back/487-altered.json +++ b/public/images/pokemon/variant/back/487-altered.json @@ -2,7 +2,6 @@ "1": { "3a3a4a": "171731", "735200": "023432", - "000000": "000000", "ffefc5": "9fffd4", "ffd600": "35ad81", "ce9c00": "156151", @@ -18,7 +17,6 @@ "2": { "3a3a4a": "12251a", "735200": "4a351b", - "000000": "000000", "ffefc5": "fffdf1", "ffd600": "e2d4af", "ce9c00": "aa956f", diff --git a/public/images/pokemon/variant/back/487-origin.json b/public/images/pokemon/variant/back/487-origin.json index 7990487a65d..a62cfa3a399 100644 --- a/public/images/pokemon/variant/back/487-origin.json +++ b/public/images/pokemon/variant/back/487-origin.json @@ -12,8 +12,7 @@ "a5213a": "974eaf", "6b6b7b": "3c1f59", "5a3110": "5e0e6e", - "ff4252": "df78ff", - "000000": "000000" + "ff4252": "df78ff" }, "2": { "292929": "241010", @@ -28,7 +27,6 @@ "a5213a": "16b811", "6b6b7b": "1e203c", "5a3110": "00760b", - "ff4252": "46e92a", - "000000": "000000" + "ff4252": "46e92a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/488.json b/public/images/pokemon/variant/back/488.json index 4d302553deb..f6306b0d3f8 100644 --- a/public/images/pokemon/variant/back/488.json +++ b/public/images/pokemon/variant/back/488.json @@ -2,14 +2,12 @@ "1": { "6b5231": "5a3c2a", "ffefbd": "fdf0d6", - "101010": "101010", "ad945a": "bc977d", "ffd673": "ddbfa4", "8c427b": "721e01", "d68cce": "dd8d2e", "c55a9c": "b33c12", "523a5a": "420600", - "ffffff": "ffffff", "e6c5ef": "ffd28c", "3a427b": "181d46", "526bb5": "304190", @@ -18,14 +16,12 @@ "2": { "6b5231": "485e63", "ffefbd": "e0eceb", - "101010": "101010", "ad945a": "7a9294", "ffd673": "bacaca", "8c427b": "168557", "d68cce": "7fe14b", "c55a9c": "2cba5e", "523a5a": "084c38", - "ffffff": "ffffff", "e6c5ef": "e0ff8c", "3a427b": "111828", "526bb5": "2f3345", diff --git a/public/images/pokemon/variant/back/489.json b/public/images/pokemon/variant/back/489.json index 53c68ee6184..234998f9912 100644 --- a/public/images/pokemon/variant/back/489.json +++ b/public/images/pokemon/variant/back/489.json @@ -4,7 +4,6 @@ "3a529c": "185b4f", "6bc5f7": "9bf3b7", "9ce6ff": "c3ffcd", - "101010": "101010", "199cd6": "69c796" }, "1": { @@ -12,7 +11,6 @@ "3a529c": "682307", "6bc5f7": "f5a54e", "9ce6ff": "ffd289", - "101010": "101010", "199cd6": "c27138" }, "2": { @@ -20,7 +18,6 @@ "3a529c": "84255f", "6bc5f7": "e484a8", "9ce6ff": "efa0b2", - "101010": "101010", "199cd6": "c65086" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/490.json b/public/images/pokemon/variant/back/490.json index 4ae1ca03db1..950148a35fe 100644 --- a/public/images/pokemon/variant/back/490.json +++ b/public/images/pokemon/variant/back/490.json @@ -1,7 +1,6 @@ { "0": { "317bad": "399271", - "101010": "101010", "199cd6": "69c796", "6bc5f7": "9bf3b7", "294a84": "185b4f", @@ -9,7 +8,6 @@ }, "1": { "317bad": "c27138", - "101010": "101010", "199cd6": "c27138", "6bc5f7": "f5a54e", "294a84": "964d17", @@ -17,7 +15,6 @@ }, "2": { "317bad": "b8488c", - "101010": "101010", "199cd6": "cc659c", "6bc5f7": "de89b3", "294a84": "912b6e", diff --git a/public/images/pokemon/variant/back/491.json b/public/images/pokemon/variant/back/491.json index 4935373691d..62a7849d6a1 100644 --- a/public/images/pokemon/variant/back/491.json +++ b/public/images/pokemon/variant/back/491.json @@ -1,30 +1,23 @@ { "1": { - "848484": "848484", - "dee6ef": "dee6ef", - "adb5bd": "adb5bd", "524a4a": "53818e", - "101010": "101010", "313131": "274656", "520000": "0a436c", "942942": "1e849a", "e63a29": "4fe0cd", "29e6ff": "d7502b", - "108cad": "a32819", - "ffffff": "ffffff" + "108cad": "a32819" }, "2": { "848484": "694624", "dee6ef": "ffcdbc", "adb5bd": "ce9c7a", "524a4a": "a9303f", - "101010": "101010", "313131": "5e1b2d", "520000": "6a2c00", "942942": "ba5a19", "e63a29": "ffa645", "29e6ff": "76f7ff", - "108cad": "25a6c7", - "ffffff": "ffffff" + "108cad": "25a6c7" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/492-land.json b/public/images/pokemon/variant/back/492-land.json index 3f0b8dda84f..340e9bb285c 100644 --- a/public/images/pokemon/variant/back/492-land.json +++ b/public/images/pokemon/variant/back/492-land.json @@ -2,7 +2,6 @@ "1": { "8cad63": "2a5045", "adde63": "416556", - "101010": "101010", "5a7342": "0f312b", "ffef7b": "cb9373", "844a6b": "b22519", @@ -19,7 +18,6 @@ "2": { "8cad63": "aa671e", "adde63": "f0a852", - "101010": "101010", "5a7342": "743510", "ffef7b": "f0d962", "844a6b": "326a9a", diff --git a/public/images/pokemon/variant/back/492-sky.json b/public/images/pokemon/variant/back/492-sky.json index 3830a053162..1d482166dc2 100644 --- a/public/images/pokemon/variant/back/492-sky.json +++ b/public/images/pokemon/variant/back/492-sky.json @@ -3,7 +3,6 @@ "7bad21": "24493e", "9cd621": "416556", "3a6b10": "103129", - "101010": "101010", "9494ad": "b18355", "ffffff": "fffae9", "52525a": "78492a", @@ -16,7 +15,6 @@ "7bad21": "ad5a1b", "9cd621": "f09d52", "3a6b10": "974a15", - "101010": "101010", "9494ad": "a7604e", "ffffff": "fff4ea", "52525a": "7a3126", diff --git a/public/images/pokemon/variant/back/494.json b/public/images/pokemon/variant/back/494.json index 79cbc752102..c47825a8ff2 100644 --- a/public/images/pokemon/variant/back/494.json +++ b/public/images/pokemon/variant/back/494.json @@ -5,9 +5,7 @@ "846b3a": "c43d21", "c59c5a": "d96030", "ffe6ad": "ee8e3e", - "000000": "000000", "6b4a10": "902300", - "3a3a3a": "3a3a3a", "bd4a00": "706040" }, "2": { @@ -16,9 +14,7 @@ "846b3a": "2b2a40", "c59c5a": "45465d", "ffe6ad": "72758a", - "000000": "000000", "6b4a10": "1e1b36", - "3a3a3a": "3a3a3a", "bd4a00": "b9648d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/495.json b/public/images/pokemon/variant/back/495.json index a10cba7c1e1..c38d9c8fca8 100644 --- a/public/images/pokemon/variant/back/495.json +++ b/public/images/pokemon/variant/back/495.json @@ -5,10 +5,8 @@ "088400": "363270", "ffde29": "ff884c", "c59c00": "cc4328", - "080808": "080808", "5a2100": "1e1e66", "fff7bd": "ffe5b2", - "ffffff": "ffffff", "943a00": "4c3d99", "c5bd63": "cca37a", "de7b42": "8766cc", @@ -20,10 +18,8 @@ "088400": "b23561", "ffde29": "ffffff", "c59c00": "cecee5", - "080808": "080808", "5a2100": "054566", "fff7bd": "fff2f8", - "ffffff": "ffffff", "943a00": "168399", "c5bd63": "ccadc1", "de7b42": "33cccc", diff --git a/public/images/pokemon/variant/back/496.json b/public/images/pokemon/variant/back/496.json index e0c079d2d15..fb864e30af6 100644 --- a/public/images/pokemon/variant/back/496.json +++ b/public/images/pokemon/variant/back/496.json @@ -3,30 +3,24 @@ "21943a": "433e7c", "105229": "281d49", "29c54a": "6970af", - "000000": "000000", "8c7b31": "7f533f", - "ffffff": "ffffff", "bd4a21": "8766cc", "734210": "4c3d99", "c5bd63": "cca37a", "fff7bd": "ffe5b2", "d6ad29": "cc523d", - "081010": "081010", "ffce29": "ff884c" }, "2": { "21943a": "b23561", "105229": "7f194c", "29c54a": "e55b75", - "000000": "000000", "8c7b31": "664c61", - "ffffff": "ffffff", "bd4a21": "778fd8", "734210": "4a52a5", "c5bd63": "ccadc1", "fff7bd": "fff2f8", "d6ad29": "cecee5", - "081010": "081010", "ffce29": "ffffff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/497.json b/public/images/pokemon/variant/back/497.json index 7249f0b1bb0..34600584f10 100644 --- a/public/images/pokemon/variant/back/497.json +++ b/public/images/pokemon/variant/back/497.json @@ -3,10 +3,8 @@ "105229": "06010c", "10733a": "1b0f3f", "9cd69c": "778fd8", - "081010": "081010", "73a573": "4a52a5", "8c8cad": "8b8bac", - "ffffff": "ffffff", "943a00": "4c3d99", "ff8400": "8766cc", "199c4a": "2e2872", @@ -19,7 +17,6 @@ "105229": "06010c", "10733a": "660f41", "9cd69c": "ff727e", - "081010": "081010", "73a573": "cc4768", "8c8cad": "664c61", "ffffff": "fff2f8", diff --git a/public/images/pokemon/variant/back/5.json b/public/images/pokemon/variant/back/5.json index fc9c313b8b9..dcd498dea43 100644 --- a/public/images/pokemon/variant/back/5.json +++ b/public/images/pokemon/variant/back/5.json @@ -2,16 +2,12 @@ "1": { "942110": "10292c", "ffa500": "9e59db", - "101010": "101010", "ff524a": "2a6e70", "ce3a3a": "1a4848", "ff4200": "5033ce", "ff846b": "40a78f", "ffde29": "e9bfff", - "b5b5b5": "b5b5b5", "005aff": "ce1010", - "ffffff": "ffffff", - "6b6b6b": "6b6b6b", "e6cead": "99f4f7", "b58c5a": "60c5c8", "cead7b": "6ee3e5" @@ -19,16 +15,12 @@ "2": { "942110": "101a70", "ffa500": "96e8e8", - "101010": "101010", "ff524a": "2564bc", "ce3a3a": "163793", "ff4200": "4c83d4", "ff846b": "418ae2", "ffde29": "f9fffa", - "b5b5b5": "b5b5b5", "005aff": "2b75ff", - "ffffff": "ffffff", - "6b6b6b": "6b6b6b", "e6cead": "5e238e", "b58c5a": "340d6b", "cead7b": "47177a" diff --git a/public/images/pokemon/variant/back/50.json b/public/images/pokemon/variant/back/50.json index 598825032ea..e11530fed28 100644 --- a/public/images/pokemon/variant/back/50.json +++ b/public/images/pokemon/variant/back/50.json @@ -4,7 +4,6 @@ "a55a5a": "2b8d62", "5a3119": "10644e", "de9c5a": "7ade9a", - "101010": "101010", "847b4a": "a29276", "e6e6b5": "ffffe4", "5a5221": "77674b", @@ -15,7 +14,6 @@ "a55a5a": "cc8029", "5a3119": "a66010", "de9c5a": "ffde62", - "101010": "101010", "847b4a": "8592a6", "e6e6b5": "e6ebf2", "5a5221": "62738c", diff --git a/public/images/pokemon/variant/back/51.json b/public/images/pokemon/variant/back/51.json index 8d80ecb3f5f..1dda616609b 100644 --- a/public/images/pokemon/variant/back/51.json +++ b/public/images/pokemon/variant/back/51.json @@ -4,7 +4,6 @@ "de9c5a": "7ade9a", "c57342": "4eb578", "5a3119": "10644e", - "101010": "101010", "730019": "882859", "ff6b5a": "ff78b0", "d63a4a": "ef4da0", @@ -18,7 +17,6 @@ "de9c5a": "ffde62", "c57342": "f2ad3d", "5a3119": "a66010", - "101010": "101010", "730019": "62738c", "ff6b5a": "e6ebf2", "d63a4a": "c3ccd9", diff --git a/public/images/pokemon/variant/back/517.json b/public/images/pokemon/variant/back/517.json index 66e30e5a872..c88320baf66 100644 --- a/public/images/pokemon/variant/back/517.json +++ b/public/images/pokemon/variant/back/517.json @@ -7,10 +7,8 @@ "e6adc5": "5cb391", "ad7bce": "119b87", "634a6b": "003f4f", - "101010": "101010", "de7bbd": "5fafdf", - "ad2942": "ca2793", - "ffffff": "ffffff" + "ad2942": "ca2793" }, "2": { "ce8cbd": "255696", @@ -20,9 +18,7 @@ "e6adc5": "3f79b7", "ad7bce": "d6654d", "634a6b": "52252a", - "101010": "101010", "de7bbd": "cd8042", - "ad2942": "bd3c25", - "ffffff": "ffffff" + "ad2942": "bd3c25" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/518.json b/public/images/pokemon/variant/back/518.json index 98dc4134ea0..f1c7177b0e9 100644 --- a/public/images/pokemon/variant/back/518.json +++ b/public/images/pokemon/variant/back/518.json @@ -7,7 +7,6 @@ "6b63a5": "b85635", "ffc5ce": "f7dfe1", "9c5a63": "854655", - "101010": "101010", "ce9c94": "efbcc9", "525252": "a86c76", "bd73ad": "0d4543", @@ -21,7 +20,6 @@ "6b63a5": "e7af71", "ffc5ce": "384a8f", "9c5a63": "151c59", - "101010": "101010", "ce9c94": "233175", "525252": "0b0f3c", "bd73ad": "314da0", diff --git a/public/images/pokemon/variant/back/52-gigantamax.json b/public/images/pokemon/variant/back/52-gigantamax.json index 9837323ddab..620a1792cd6 100644 --- a/public/images/pokemon/variant/back/52-gigantamax.json +++ b/public/images/pokemon/variant/back/52-gigantamax.json @@ -4,11 +4,6 @@ "c89f8c": "816f5c", "fbf7e6": "ece3c7", "f0dea2": "c7b497", - "101010": "101010", - "986100": "986100", - "cca700": "cca700", - "f6f6f6": "f6f6f6", - "f9d400": "f9d400", "944100": "751e7c", "ea9f38": "cb5fbd", "c5810b": "b146ac" @@ -18,10 +13,8 @@ "c89f8c": "915d2f", "fbf7e6": "e5bc79", "f0dea2": "c08647", - "101010": "101010", "986100": "683700", "cca700": "a96c00", - "f6f6f6": "f6f6f6", "f9d400": "ffbf3f", "944100": "2948ad", "ea9f38": "7bf7f7", @@ -32,10 +25,8 @@ "c89f8c": "322d28", "fbf7e6": "807d77", "f0dea2": "524f4a", - "101010": "101010", "986100": "986f00", "cca700": "efc300", - "f6f6f6": "f6f6f6", "f9d400": "f9e600", "944100": "256a24", "ea9f38": "aeec97", diff --git a/public/images/pokemon/variant/back/52.json b/public/images/pokemon/variant/back/52.json index 4bb9cb30ec9..11c20d19a3d 100644 --- a/public/images/pokemon/variant/back/52.json +++ b/public/images/pokemon/variant/back/52.json @@ -2,8 +2,6 @@ "0": { "8c6b00": "5b4a3b", "ffe684": "c7b497", - "101010": "101010", - "ffffff": "ffffff", "ffd600": "cea500", "debd3a": "816f5c", "cea500": "945a00", @@ -14,11 +12,7 @@ "1": { "8c6b00": "552e15", "ffe684": "c08647", - "101010": "101010", - "ffffff": "ffffff", - "ffd600": "ffd600", "debd3a": "915d2f", - "cea500": "cea500", "944200": "2948ad", "ef9c31": "7bf7f7", "c57b08": "52add6" @@ -26,8 +20,6 @@ "2": { "8c6b00": "241d18", "ffe684": "524f4a", - "101010": "101010", - "ffffff": "ffffff", "ffd600": "d2ac00", "debd3a": "322d28", "cea500": "986f00", diff --git a/public/images/pokemon/variant/back/524.json b/public/images/pokemon/variant/back/524.json index 3ce39b1bc45..0ad758ddcb6 100644 --- a/public/images/pokemon/variant/back/524.json +++ b/public/images/pokemon/variant/back/524.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "3a2119": "4d8c77", "5a4231": "63a690", "7b5a4a": "97d9c3", @@ -9,7 +8,6 @@ "42528c": "656273" }, "2": { - "000000": "000000", "3a2119": "292933", "5a4231": "515266", "7b5a4a": "979bb3", diff --git a/public/images/pokemon/variant/back/525.json b/public/images/pokemon/variant/back/525.json index da6fd7b6282..84258c85efb 100644 --- a/public/images/pokemon/variant/back/525.json +++ b/public/images/pokemon/variant/back/525.json @@ -3,7 +3,6 @@ "21293a": "292538", "293a6b": "464558", "42528c": "656273", - "101010": "101010", "733121": "0c3b37", "ff6b52": "bcf1a6", "ce4a3a": "50cd61", @@ -13,7 +12,6 @@ "21293a": "584245", "293a6b": "9b7570", "42528c": "cdac94", - "101010": "101010", "733121": "733120", "ff6b52": "eeb570", "ce4a3a": "dc6c44", diff --git a/public/images/pokemon/variant/back/526.json b/public/images/pokemon/variant/back/526.json index f6cf26e75fc..b17f2ef7785 100644 --- a/public/images/pokemon/variant/back/526.json +++ b/public/images/pokemon/variant/back/526.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "e63131": "50cd61", "6b2121": "0c3b37", "9c3131": "0d6d58", @@ -13,7 +12,6 @@ "848484": "afc1c8" }, "2": { - "000000": "000000", "e63131": "dc6c44", "6b2121": "733120", "9c3131": "a7323b", diff --git a/public/images/pokemon/variant/back/53.json b/public/images/pokemon/variant/back/53.json index 2a3d338fccf..2f890cc3492 100644 --- a/public/images/pokemon/variant/back/53.json +++ b/public/images/pokemon/variant/back/53.json @@ -1,20 +1,17 @@ { "0": { - "101010": "101010", "845200": "5b4a3b", "deb56b": "c7b497", "ffe684": "ece3c7", "b58429": "816f5c" }, "1": { - "101010": "101010", "845200": "431a0e", "deb56b": "8d6038", "ffe684": "c39564", "b58429": "552e15" }, "2": { - "101010": "101010", "845200": "241d18", "deb56b": "322d28", "ffe684": "524f4a", diff --git a/public/images/pokemon/variant/back/530.json b/public/images/pokemon/variant/back/530.json index 1f1d90459d0..2e70eff1305 100644 --- a/public/images/pokemon/variant/back/530.json +++ b/public/images/pokemon/variant/back/530.json @@ -1,15 +1,12 @@ { "1": { "636363": "564964", - "101010": "101010", "d6d6d6": "f7eaec", "a5a5a5": "cab3d8", "423129": "954a29", - "292119": "292119", "5a4a42": "d1884d", "bd4242": "d7f55c", "844242": "88ca4c", - "ffffff": "ffffff", "ce736b": "d35f9e", "ef847b": "ff8be8", "842931": "438c43" diff --git a/public/images/pokemon/variant/back/531-mega.json b/public/images/pokemon/variant/back/531-mega.json index f78a2d37074..1436a7c609d 100644 --- a/public/images/pokemon/variant/back/531-mega.json +++ b/public/images/pokemon/variant/back/531-mega.json @@ -2,7 +2,6 @@ "1": { "80734d": "7c4b3b", "ffecb2": "fff6f0", - "101010": "101010", "ccb87a": "d6bfb4", "b35968": "b64231", "ffbfca": "f5a779", @@ -13,7 +12,6 @@ "2": { "80734d": "09232a", "ffecb2": "4bb9a6", - "101010": "101010", "ccb87a": "29878f", "b35968": "a0602f", "ffbfca": "f6e3a8", diff --git a/public/images/pokemon/variant/back/531.json b/public/images/pokemon/variant/back/531.json index 8a96bebb946..6f430465129 100644 --- a/public/images/pokemon/variant/back/531.json +++ b/public/images/pokemon/variant/back/531.json @@ -1,11 +1,9 @@ { "1": { - "734a4a": "734a4a", "ce6b73": "cc6348", "de8c94": "f5a779", "6b634a": "a86d57", "ceb584": "d6bfb4", - "101010": "101010", "f7e6ad": "fff6f0", "a58c63": "7c4b3b", "63636b": "782b3e", @@ -18,7 +16,6 @@ "de8c94": "f6e3a8", "6b634a": "09232a", "ceb584": "29878f", - "101010": "101010", "f7e6ad": "4bb9a6", "a58c63": "164d54", "63636b": "1a2135", diff --git a/public/images/pokemon/variant/back/532.json b/public/images/pokemon/variant/back/532.json index c0c68638f47..3befad7c830 100644 --- a/public/images/pokemon/variant/back/532.json +++ b/public/images/pokemon/variant/back/532.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "7b5208": "663326", "5a3a08": "4c1d14", "ad7308": "954734", @@ -10,13 +9,10 @@ "843142": "3a3931", "c55a73": "545148", "ef7b8c": "6c6958", - "c5c5c5": "c5c5c5", - "ffffff": "ffffff", "6b3a31": "5c3b64", "94635a": "814981" }, "2": { - "101010": "101010", "7b5208": "825536", "5a3a08": "6f4b33", "ad7308": "b3774d", @@ -26,8 +22,6 @@ "843142": "201f36", "c55a73": "2f2b42", "ef7b8c": "504f66", - "c5c5c5": "c5c5c5", - "ffffff": "ffffff", "6b3a31": "958d71", "94635a": "b5b18f" } diff --git a/public/images/pokemon/variant/back/533.json b/public/images/pokemon/variant/back/533.json index 7b7b707019b..bf227a13f05 100644 --- a/public/images/pokemon/variant/back/533.json +++ b/public/images/pokemon/variant/back/533.json @@ -3,7 +3,6 @@ "631931": "363d48", "bd3a4a": "707885", "84293a": "666b72", - "101010": "101010", "9c8c84": "3b8177", "5a3a42": "1d4c3c", "c5bdad": "569d84", @@ -15,7 +14,6 @@ "631931": "363d48", "bd3a4a": "acc2d7", "84293a": "6e869f", - "101010": "101010", "9c8c84": "6e6685", "5a3a42": "3c3946", "c5bdad": "9a8cad", diff --git a/public/images/pokemon/variant/back/534.json b/public/images/pokemon/variant/back/534.json index 508f107c3f5..7dda8ce3a11 100644 --- a/public/images/pokemon/variant/back/534.json +++ b/public/images/pokemon/variant/back/534.json @@ -3,7 +3,6 @@ "8c6b5a": "17524f", "5a3a21": "0d382d", "c59c73": "2a726e", - "101010": "101010", "3a3a31": "6e7878", "6b6b63": "94a6a9", "8c8c84": "becfd1", @@ -15,7 +14,6 @@ "8c6b5a": "68797a", "5a3a21": "505252", "c59c73": "90aba8", - "101010": "101010", "3a3a31": "5c5830", "6b6b63": "a78f4c", "8c8c84": "e3c682", diff --git a/public/images/pokemon/variant/back/540.json b/public/images/pokemon/variant/back/540.json index 8c61ece684a..5f2e3f94dad 100644 --- a/public/images/pokemon/variant/back/540.json +++ b/public/images/pokemon/variant/back/540.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "3a6319": "7b4a5a", "5a9c31": "b56b7b", "94ce08": "ef949c", @@ -10,7 +9,6 @@ "e68408": "69473c" }, "2": { - "000000": "000000", "3a6319": "051d69", "5a9c31": "15328e", "94ce08": "1e57cc", diff --git a/public/images/pokemon/variant/back/541.json b/public/images/pokemon/variant/back/541.json index c0f2d6d2074..d4bdd357130 100644 --- a/public/images/pokemon/variant/back/541.json +++ b/public/images/pokemon/variant/back/541.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "94ce08": "ef949c", "3a6319": "7b4a5a", "5a9c31": "b56b7b", @@ -9,7 +8,6 @@ "299c52": "ac6675" }, "2": { - "000000": "000000", "94ce08": "1152d8", "3a6319": "051d69", "5a9c31": "1339b8", diff --git a/public/images/pokemon/variant/back/542.json b/public/images/pokemon/variant/back/542.json index 5fd6526edf2..e1b21a7f68d 100644 --- a/public/images/pokemon/variant/back/542.json +++ b/public/images/pokemon/variant/back/542.json @@ -1,7 +1,6 @@ { "1": { "8c7b10": "573728", - "000000": "000000", "fff721": "967768", "426331": "7b4a5a", "7bce08": "ef949c", @@ -13,7 +12,6 @@ }, "2": { "8c7b10": "7b6053", - "000000": "000000", "fff721": "ffffff", "426331": "172371", "7bce08": "1e57cc", diff --git a/public/images/pokemon/variant/back/543.json b/public/images/pokemon/variant/back/543.json index 5100aa499c9..4e6f1855627 100644 --- a/public/images/pokemon/variant/back/543.json +++ b/public/images/pokemon/variant/back/543.json @@ -15,7 +15,6 @@ "efb508": "7ab7e6" }, "2": { - "101010": "101010", "632131": "6d5332", "bd3152": "d3c9ae", "940042": "968167", diff --git a/public/images/pokemon/variant/back/544.json b/public/images/pokemon/variant/back/544.json index 5d02ae2b196..68577d8cdaf 100644 --- a/public/images/pokemon/variant/back/544.json +++ b/public/images/pokemon/variant/back/544.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "5a4a63": "0a3939", "ad94c5": "238071", "84739c": "135c56", @@ -16,7 +15,6 @@ "ffff00": "7ab7e6" }, "2": { - "000000": "000000", "5a4a63": "452e23", "ad94c5": "a67645", "84739c": "764f2d", diff --git a/public/images/pokemon/variant/back/545.json b/public/images/pokemon/variant/back/545.json index c1e2a523206..46c7dcdc6a0 100644 --- a/public/images/pokemon/variant/back/545.json +++ b/public/images/pokemon/variant/back/545.json @@ -2,7 +2,6 @@ "1": { "631010": "0b4a45", "c5195a": "238071", - "101010": "101010", "6b216b": "831774", "8c3a9c": "a63c9f", "9c1042": "135c56", @@ -16,7 +15,6 @@ "2": { "631010": "8f795c", "c5195a": "dddaaf", - "101010": "101010", "6b216b": "b37830", "8c3a9c": "d7b444", "9c1042": "bdaf8a", diff --git a/public/images/pokemon/variant/back/546.json b/public/images/pokemon/variant/back/546.json index 9c45ddf2bd1..231b1f32e88 100644 --- a/public/images/pokemon/variant/back/546.json +++ b/public/images/pokemon/variant/back/546.json @@ -5,7 +5,6 @@ "dee6c5": "e4b397", "4a5a52": "663023", "194a19": "4c2f6e", - "101010": "101010", "52a54a": "c690da", "427b42": "9d62bc", "ffffff": "f2d2cb", @@ -17,7 +16,6 @@ "dee6c5": "bf7c6a", "4a5a52": "5c1e1f", "194a19": "2e6450", - "101010": "101010", "52a54a": "70be90", "427b42": "559c7a", "ffffff": "f7dbd1", diff --git a/public/images/pokemon/variant/back/547.json b/public/images/pokemon/variant/back/547.json index 44fb5bb86da..3ccf3c6ff74 100644 --- a/public/images/pokemon/variant/back/547.json +++ b/public/images/pokemon/variant/back/547.json @@ -3,24 +3,20 @@ "ad945a": "914e3a", "6b5a42": "663023", "e6dece": "dda585", - "101010": "101010", "c5b58c": "b77153", "194a19": "422258", "427b42": "8750a3", "52a54a": "b07cc3", - "523a29": "523a29", "735242": "693535" }, "2": { "ad945a": "4b1918", "6b5a42": "360e10", "e6dece": "a86250", - "101010": "101010", "c5b58c": "70322b", "194a19": "1c523e", "427b42": "428565", "52a54a": "5bab7c", - "523a29": "523a29", "735242": "d79057" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/548.json b/public/images/pokemon/variant/back/548.json index 9dc8f3e868a..93e7e42c1e7 100644 --- a/public/images/pokemon/variant/back/548.json +++ b/public/images/pokemon/variant/back/548.json @@ -2,7 +2,6 @@ "0": { "315a31": "31425a", "3aad3a": "76bfc7", - "101010": "101010", "3a844a": "307489", "9cbd4a": "a3b02e", "637b31": "646412", @@ -12,7 +11,6 @@ "1": { "315a31": "731629", "3aad3a": "ef5755", - "101010": "101010", "3a844a": "bd2d40", "9cbd4a": "8e954d", "637b31": "4e4e25", @@ -22,7 +20,6 @@ "2": { "315a31": "351c49", "3aad3a": "8d57a4", - "101010": "101010", "3a844a": "663982", "9cbd4a": "9f802c", "637b31": "5c4510", diff --git a/public/images/pokemon/variant/back/549.json b/public/images/pokemon/variant/back/549.json index bb81411e8d7..5f2bda23099 100644 --- a/public/images/pokemon/variant/back/549.json +++ b/public/images/pokemon/variant/back/549.json @@ -1,13 +1,11 @@ { "1": { "734221": "09445f", - "101010": "101010", "bd633a": "228ac5", "ffb59c": "78e6f7", "ff6b3a": "54c5eb", "bda552": "77909a", "ffde42": "b6c7cc", - "ffffff": "ffffff", "315a31": "80152b", "4a844a": "bd2d40", "3aad3a": "ef5755", @@ -17,13 +15,11 @@ }, "2": { "734221": "540f26", - "101010": "101010", "bd633a": "a62540", "ffb59c": "fe8e95", "ff6b3a": "de6475", "bda552": "d1b18c", "ffde42": "efddc1", - "ffffff": "ffffff", "315a31": "351c49", "4a844a": "5d3576", "3aad3a": "834c9b", diff --git a/public/images/pokemon/variant/back/551.json b/public/images/pokemon/variant/back/551.json index b173b167f9c..a5eb436667b 100644 --- a/public/images/pokemon/variant/back/551.json +++ b/public/images/pokemon/variant/back/551.json @@ -2,7 +2,6 @@ "1": { "523a10": "27172f", "c59c5a": "d8693a", - "101010": "101010", "8c7331": "b83b28", "42424a": "343958", "212121": "262347", @@ -12,7 +11,6 @@ "2": { "523a10": "1c2231", "c59c5a": "8688a0", - "101010": "101010", "8c7331": "646781", "42424a": "301f40", "212121": "290c2a", diff --git a/public/images/pokemon/variant/back/552.json b/public/images/pokemon/variant/back/552.json index 3b0bed5f6b6..8a4eec1e19f 100644 --- a/public/images/pokemon/variant/back/552.json +++ b/public/images/pokemon/variant/back/552.json @@ -5,7 +5,6 @@ "c59c5a": "d8693a", "523a10": "261d35", "191921": "232044", - "101010": "101010", "292931": "343958", "ffffff": "ebce81", "c5c5c5": "b37941", @@ -19,7 +18,6 @@ "c59c5a": "646781", "523a10": "161b23", "191921": "281842", - "101010": "101010", "292931": "412853", "ffffff": "90a0a7", "c5c5c5": "5b6d75", diff --git a/public/images/pokemon/variant/back/553.json b/public/images/pokemon/variant/back/553.json index aa8ea69e2ad..9769ce870d7 100644 --- a/public/images/pokemon/variant/back/553.json +++ b/public/images/pokemon/variant/back/553.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "8c3142": "164954", "212129": "192540", "c55252": "1b7871", @@ -12,7 +11,6 @@ "ffffff": "ffefa7" }, "2": { - "101010": "101010", "8c3142": "8b93a5", "212129": "58265a", "c55252": "c5cbd0", diff --git a/public/images/pokemon/variant/back/556.json b/public/images/pokemon/variant/back/556.json index 3863d4bda29..59655d106a0 100644 --- a/public/images/pokemon/variant/back/556.json +++ b/public/images/pokemon/variant/back/556.json @@ -4,7 +4,6 @@ "e66ba5": "aad7ec", "ce4a8c": "95bcdb", "8c1957": "454792", - "101010": "101010", "b59c10": "d66430", "ffd600": "ff9b3b", "429c4a": "acd2d3", @@ -20,7 +19,6 @@ "e66ba5": "ffcadc", "ce4a8c": "eea9be", "8c1957": "b06ea0", - "101010": "101010", "b59c10": "e0be7a", "ffd600": "fff1ac", "429c4a": "971746", diff --git a/public/images/pokemon/variant/back/559.json b/public/images/pokemon/variant/back/559.json index 1fd00baef27..df54688b898 100644 --- a/public/images/pokemon/variant/back/559.json +++ b/public/images/pokemon/variant/back/559.json @@ -3,14 +3,9 @@ "732129": "64195b", "b52931": "c855a9", "e63a42": "e18abd", - "212121": "212121", "7b6308": "66470e", "ffce00": "d7c475", "bd9c00": "8a7127", - "424242": "424242", - "adada5": "adada5", - "ffffff": "ffffff", - "63635a": "63635a", "7b7352": "5f533d", "c5bd84": "c7bea5", "fff7b5": "ecead9" @@ -19,32 +14,16 @@ "732129": "251c34", "b52931": "4f4967", "e63a42": "82809f", - "212121": "212121", "7b6308": "8b8352", "ffce00": "fffcdd", - "bd9c00": "bdbc82", - "424242": "424242", - "adada5": "adada5", - "ffffff": "ffffff", - "63635a": "63635a", - "7b7352": "7b7352", - "c5bd84": "c5bd84", - "fff7b5": "fff7b5" + "bd9c00": "bdbc82" }, "2": { "732129": "17541a", "b52931": "2d852b", "e63a42": "7cce68", - "212121": "212121", "7b6308": "6f9d3d", "ffce00": "e5ff87", - "bd9c00": "98c053", - "424242": "424242", - "adada5": "adada5", - "ffffff": "ffffff", - "63635a": "63635a", - "7b7352": "7b7352", - "c5bd84": "c5bd84", - "fff7b5": "fff7b5" + "bd9c00": "98c053" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/56.json b/public/images/pokemon/variant/back/56.json index adede31e531..aa8740928c6 100644 --- a/public/images/pokemon/variant/back/56.json +++ b/public/images/pokemon/variant/back/56.json @@ -5,7 +5,6 @@ "734200": "476983", "ffc584": "98b5cb", "fff7ce": "c8bfe3", - "101010": "101010", "d6ad9c": "867ba4", "f7deb5": "ada2cd", "dea573": "7b96ab" @@ -16,7 +15,6 @@ "734200": "302927", "ffc584": "5b5757", "fff7ce": "f9e9bd", - "101010": "101010", "d6ad9c": "d2a357", "f7deb5": "ddbf6b", "dea573": "4c4442" @@ -27,7 +25,6 @@ "734200": "212a20", "ffc584": "678674", "fff7ce": "ee5d26", - "101010": "101010", "d6ad9c": "a72510", "f7deb5": "cf361c", "dea573": "5d6962" diff --git a/public/images/pokemon/variant/back/560.json b/public/images/pokemon/variant/back/560.json index bf75cf1eed2..f94cac1b56b 100644 --- a/public/images/pokemon/variant/back/560.json +++ b/public/images/pokemon/variant/back/560.json @@ -1,47 +1,29 @@ { "0": { - "212121": "212121", "7b3a29": "5f533d", "de293a": "b1578c", "f77b21": "d9d7bf", "c55a19": "aea489", - "4a4a4a": "4a4a4a", - "949494": "949494", - "ffffff": "ffffff", - "bdbdbd": "bdbdbd", - "636363": "636363", "6b5229": "66470e", "f7ce10": "d7c475", "b59419": "8f7939", "e66373": "e18abd" }, "1": { - "212121": "212121", "7b3a29": "251c34", "de293a": "4f4967", "f77b21": "c3b889", "c55a19": "988658", - "4a4a4a": "4a4a4a", - "949494": "949494", - "ffffff": "ffffff", - "bdbdbd": "bdbdbd", - "636363": "636363", "6b5229": "8b8352", "f7ce10": "fffcdd", "b59419": "bdbc82", "e66373": "82809f" }, "2": { - "212121": "212121", "7b3a29": "24360d", "de293a": "3f5d3e", "f77b21": "fff7b5", "c55a19": "c5bd84", - "4a4a4a": "4a4a4a", - "949494": "949494", - "ffffff": "ffffff", - "bdbdbd": "bdbdbd", - "636363": "636363", "6b5229": "627f2e", "f7ce10": "d8f769", "b59419": "a8c458", diff --git a/public/images/pokemon/variant/back/562.json b/public/images/pokemon/variant/back/562.json index 2b3efcc8f2c..b551e133f8e 100644 --- a/public/images/pokemon/variant/back/562.json +++ b/public/images/pokemon/variant/back/562.json @@ -2,27 +2,22 @@ "1": { "313131": "741136", "525252": "a63051", - "101010": "101010", "ad0000": "4fe0b6", "ff0000": "a0f7ff", - "5a0000": "5a0000", "ce8410": "90493f", "f7ad29": "ae6a5d", "8c5a21": "551f1d", - "ffde7b": "d29887", - "dedede": "dedede" + "ffde7b": "d29887" }, "2": { "313131": "2a895c", "525252": "49bc7a", - "101010": "101010", "ad0000": "b48bb5", "ff0000": "dbbdcf", "5a0000": "955b85", "ce8410": "a6935a", "f7ad29": "d9e878", "8c5a21": "64471e", - "ffde7b": "e4f49e", - "dedede": "dedede" + "ffde7b": "e4f49e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/563.json b/public/images/pokemon/variant/back/563.json index 022c7bb0c47..10a57779fa1 100644 --- a/public/images/pokemon/variant/back/563.json +++ b/public/images/pokemon/variant/back/563.json @@ -1,7 +1,6 @@ { "1": { "3a3a42": "a40e38", - "101010": "101010", "294a4a": "101838", "3194ad": "38478c", "216b7b": "242b71", @@ -12,7 +11,6 @@ }, "2": { "3a3a42": "3ce483", - "101010": "101010", "294a4a": "591105", "3194ad": "e03241", "216b7b": "81280f", diff --git a/public/images/pokemon/variant/back/568.json b/public/images/pokemon/variant/back/568.json index 6fb163ce912..17d826caed0 100644 --- a/public/images/pokemon/variant/back/568.json +++ b/public/images/pokemon/variant/back/568.json @@ -2,7 +2,6 @@ "1": { "296b4a": "6b3873", "4a8c6b": "a35fa3", - "000000": "000000", "103121": "170829", "194a31": "412157", "736352": "162632", @@ -15,7 +14,6 @@ "2": { "296b4a": "773835", "4a8c6b": "b37664", - "000000": "000000", "103121": "411513", "194a31": "59221f", "736352": "d3b492", diff --git a/public/images/pokemon/variant/back/569-gigantamax.json b/public/images/pokemon/variant/back/569-gigantamax.json index 2c3ec4a6446..3bd15935f15 100644 --- a/public/images/pokemon/variant/back/569-gigantamax.json +++ b/public/images/pokemon/variant/back/569-gigantamax.json @@ -3,7 +3,6 @@ "7b6a5a": "162632", "5a4a41": "101829", "a48b73": "273947", - "010101": "010101", "7d8991": "4c6177", "bdbdbd": "8c9bad", "00acd5": "adf083", @@ -21,7 +20,6 @@ "7b6a5a": "d3b492", "5a4a41": "96684c", "a48b73": "f4eccf", - "010101": "010101", "7d8991": "9d5038", "bdbdbd": "da975a", "00acd5": "d5435c", @@ -29,7 +27,6 @@ "184a31": "59221f", "296a4a": "773835", "e6da00": "55383c", - "bc9540": "bc9540", "6bdc27": "f285b9", "febca4": "9b2b4e", "7a5a62": "67152f", diff --git a/public/images/pokemon/variant/back/569.json b/public/images/pokemon/variant/back/569.json index b61cffe9075..f56a152edbd 100644 --- a/public/images/pokemon/variant/back/569.json +++ b/public/images/pokemon/variant/back/569.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "5a4a42": "101829", "7b6b5a": "162632", "a58c73": "273947", @@ -14,7 +13,6 @@ "ef52a5": "adf083" }, "2": { - "000000": "000000", "5a4a42": "9d7862", "7b6b5a": "d3b492", "a58c73": "f4eccf", diff --git a/public/images/pokemon/variant/back/57.json b/public/images/pokemon/variant/back/57.json index dcd82aa40da..5e14ec78953 100644 --- a/public/images/pokemon/variant/back/57.json +++ b/public/images/pokemon/variant/back/57.json @@ -2,20 +2,15 @@ "0": { "634a21": "41306b", "9c6b6b": "476983", - "000000": "000000", "ffe6b5": "ada2cd", "ffffd6": "c8bfe3", "e6bd9c": "867ba4", "5a3100": "233a4c", "ce8c5a": "5c798f", - "e6b58c": "98b5cb", - "424242": "424242", - "7b7b7b": "7b7b7b" + "e6b58c": "98b5cb" }, "1": { - "634a21": "634a21", "9c6b6b": "3a302e", - "000000": "000000", "ffe6b5": "ddbf6b", "ffffd6": "f9e9bd", "e6bd9c": "d2a357", @@ -28,7 +23,6 @@ "2": { "634a21": "802819", "9c6b6b": "313930", - "000000": "000000", "ffe6b5": "cf361c", "ffffd6": "ee5d26", "e6bd9c": "a72510", diff --git a/public/images/pokemon/variant/back/570.json b/public/images/pokemon/variant/back/570.json index db0ddc9ae8d..6573e762e21 100644 --- a/public/images/pokemon/variant/back/570.json +++ b/public/images/pokemon/variant/back/570.json @@ -2,7 +2,6 @@ "1": { "6b213a": "4f025a", "ad1042": "c359e6", - "101010": "101010", "424252": "2f375a", "5a5a73": "475378", "212131": "1b1b47", @@ -12,7 +11,6 @@ "2": { "6b213a": "006867", "ad1042": "01d5bb", - "101010": "101010", "424252": "746a98", "5a5a73": "a1a1c0", "212131": "163956", diff --git a/public/images/pokemon/variant/back/571.json b/public/images/pokemon/variant/back/571.json index 5f18c3b6e51..a427a010eb6 100644 --- a/public/images/pokemon/variant/back/571.json +++ b/public/images/pokemon/variant/back/571.json @@ -1,19 +1,14 @@ { "1": { - "101010": "101010", "293142": "283766", "212131": "0a133f", "4a1029": "540548", "7b2942": "8e2270", "ad1042": "cc2f94", "4a4a52": "2d2b43", - "63636b": "4e4664", - "cecece": "cecece", - "318484": "318484", - "19b5b5": "19b5b5" + "63636b": "4e4664" }, "2": { - "101010": "101010", "293142": "283766", "212131": "121b47", "4a1029": "061a3e", @@ -21,7 +16,6 @@ "ad1042": "2f8cdb", "4a4a52": "5e5277", "63636b": "938aae", - "cecece": "cecece", "318484": "7e248c", "19b5b5": "9c58ca" } diff --git a/public/images/pokemon/variant/back/577.json b/public/images/pokemon/variant/back/577.json index d31bf54a381..b87f61ec984 100644 --- a/public/images/pokemon/variant/back/577.json +++ b/public/images/pokemon/variant/back/577.json @@ -8,7 +8,6 @@ "e6de73": "afdfce", "5a845a": "5e2c58", "6b6329": "597070", - "101010": "101010", "cee6bd": "ebc7d9", "316342": "442e7a", "9cad8c": "975b88", @@ -23,7 +22,6 @@ "e6de73": "9d65b1", "5a845a": "961d3c", "6b6329": "522849", - "101010": "101010", "cee6bd": "dfab9f", "316342": "3b031b", "9cad8c": "b86d6a", @@ -33,12 +31,10 @@ "428c5a": "a968a4", "5ab57b": "ce8ec2", "94e6ad": "f7c6e5", - "ffffff": "ffffff", "a59c31": "5ab3a2", "e6de73": "74d6b3", "5a845a": "ba7066", "6b6329": "3e8c82", - "101010": "101010", "cee6bd": "f0c9ba", "316342": "713c85", "9cad8c": "ba7066", diff --git a/public/images/pokemon/variant/back/578.json b/public/images/pokemon/variant/back/578.json index b1a55c50158..d3e934cfd8d 100644 --- a/public/images/pokemon/variant/back/578.json +++ b/public/images/pokemon/variant/back/578.json @@ -6,7 +6,6 @@ "637b63": "834783", "c5deb5": "ebc7e1", "9cbd8c": "9b65ac", - "101010": "101010", "84dea5": "c3b8f1", "e6ffde": "ffffff" }, @@ -17,7 +16,6 @@ "637b63": "862f2d", "c5deb5": "d69289", "9cbd8c": "b0605c", - "101010": "101010", "84dea5": "ee8c91", "e6ffde": "fff3f3" }, @@ -28,7 +26,6 @@ "637b63": "ba7066", "c5deb5": "f0c9ba", "9cbd8c": "d69887", - "101010": "101010", "84dea5": "d080b8", "e6ffde": "ffffff" } diff --git a/public/images/pokemon/variant/back/579.json b/public/images/pokemon/variant/back/579.json index 2b7c7cadec0..73e43af4a1d 100644 --- a/public/images/pokemon/variant/back/579.json +++ b/public/images/pokemon/variant/back/579.json @@ -6,7 +6,6 @@ "4a8c63": "40516c", "d6efc5": "bfdadd", "9cbd8c": "7f9fb5", - "101010": "101010", "de6363": "7bfff7", "a55252": "4aad8c", "c5a563": "63b519", @@ -19,7 +18,6 @@ "4a8c63": "862f2d", "d6efc5": "d69289", "9cbd8c": "b0605c", - "101010": "101010", "de6363": "e39744", "a55252": "bb6620", "c5a563": "844386", @@ -32,7 +30,6 @@ "4a8c63": "9d4e4c", "d6efc5": "e8baac", "9cbd8c": "c5887f", - "101010": "101010", "de6363": "74d6b3", "a55252": "5ab3a2", "c5a563": "6d648a", diff --git a/public/images/pokemon/variant/back/585-summer.json b/public/images/pokemon/variant/back/585-summer.json index 40e37014b60..6942da9df8d 100644 --- a/public/images/pokemon/variant/back/585-summer.json +++ b/public/images/pokemon/variant/back/585-summer.json @@ -2,14 +2,12 @@ "0": { "315231": "314a29", "317b42": "416a39", - "000000": "000000", "42b542": "4a8b4a", "ce9c08": "d89ca6", "7b5210": "c16b7d", "ffde52": "ffffff", "bda58c": "d89ca6", "9c7b5a": "c16b7d", - "ffffff": "ffffff", "f7efc5": "ffd5f6", "524219": "783046", "313131": "783046", diff --git a/public/images/pokemon/variant/back/586-autumn.json b/public/images/pokemon/variant/back/586-autumn.json index deda6a5097b..fea1b869102 100644 --- a/public/images/pokemon/variant/back/586-autumn.json +++ b/public/images/pokemon/variant/back/586-autumn.json @@ -1,17 +1,10 @@ { "0": { - "000000": "000000", - "bd3a3a": "bd3a3a", - "842131": "842131", - "5a1919": "5a1919", - "4a0808": "4a0808", "7b5231": "d98997", "422110": "9d4f62", "633121": "c66479", "de8c29": "ffecfb", - "dedede": "dedede", "a57b4a": "e1b2d7", - "311010": "311010", "dec56b": "ffd5f6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/586-spring.json b/public/images/pokemon/variant/back/586-spring.json index 064a1ddecef..0b060156d33 100644 --- a/public/images/pokemon/variant/back/586-spring.json +++ b/public/images/pokemon/variant/back/586-spring.json @@ -1,11 +1,9 @@ { "0": { "311010": "2a1418", - "000000": "000000", "731931": "5e263e", "4a1008": "7f334a", "633a21": "c66479", - "ff739c": "ff739c", "ce4263": "c66479", "dec56b": "ffd5f6", "422119": "9d4f62", diff --git a/public/images/pokemon/variant/back/586-summer.json b/public/images/pokemon/variant/back/586-summer.json index 6481eb33cad..daafade5616 100644 --- a/public/images/pokemon/variant/back/586-summer.json +++ b/public/images/pokemon/variant/back/586-summer.json @@ -1,6 +1,5 @@ { "0": { - "000000": "000000", "193a29": "314a29", "195a31": "416a39", "088c42": "4a8b4a", @@ -9,9 +8,7 @@ "422119": "9d4f62", "633a21": "c66479", "de9429": "ffecfb", - "dedede": "dedede", "a57b4a": "e1b2d7", - "311010": "311010", "dec56b": "ffd5f6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/586-winter.json b/public/images/pokemon/variant/back/586-winter.json index 630c958cd11..6a9c9ed7400 100644 --- a/public/images/pokemon/variant/back/586-winter.json +++ b/public/images/pokemon/variant/back/586-winter.json @@ -1,7 +1,6 @@ { "0": { "424a42": "99648f", - "000000": "000000", "ffffff": "ffd5f6", "6b6b6b": "b184a8", "adadad": "e1b2d7", @@ -11,8 +10,6 @@ "422119": "9d4f62", "7b5a31": "d98997", "de9429": "ffecfb", - "dedede": "dedede", - "a57b4a": "e1b2d7", - "311010": "311010" + "a57b4a": "e1b2d7" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/592.json b/public/images/pokemon/variant/back/592.json index 802e143bd11..06e3c8618dc 100644 --- a/public/images/pokemon/variant/back/592.json +++ b/public/images/pokemon/variant/back/592.json @@ -1,11 +1,9 @@ { "1": { "3a5a6b": "933b94", - "101010": "101010", "d6e6ff": "fee8ff", "5aa5c5": "c35ec7", "b5c5e6": "e3b8ec", - "84d6ff": "ef94eb", - "ffffff": "ffffff" + "84d6ff": "ef94eb" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/593.json b/public/images/pokemon/variant/back/593.json index f37daf8990c..a346624cdd2 100644 --- a/public/images/pokemon/variant/back/593.json +++ b/public/images/pokemon/variant/back/593.json @@ -2,7 +2,6 @@ "1": { "213a6b": "6a236f", "d6e6ff": "fee8ff", - "101010": "101010", "9cadd6": "e3b8ec", "29529c": "6a236f", "3a84ce": "c35ec7", @@ -11,7 +10,6 @@ "2": { "213a6b": "6e1b12", "d6e6ff": "ec7542", - "101010": "101010", "9cadd6": "d24d25", "29529c": "8e2b16", "3a84ce": "cb7048", diff --git a/public/images/pokemon/variant/back/594.json b/public/images/pokemon/variant/back/594.json index 22beae73c5e..d4f3186772a 100644 --- a/public/images/pokemon/variant/back/594.json +++ b/public/images/pokemon/variant/back/594.json @@ -6,11 +6,9 @@ "ff8cad": "f5a454", "f77384": "e37830", "633a42": "882915", - "000000": "000000", "e68c9c": "d68147", "005263": "681f16", "002931": "310000", - "9c8c10": "a74c8e", - "ffffff": "ffffff" + "9c8c10": "a74c8e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/595.json b/public/images/pokemon/variant/back/595.json index d5d387fb681..2d44343dcf5 100644 --- a/public/images/pokemon/variant/back/595.json +++ b/public/images/pokemon/variant/back/595.json @@ -1,7 +1,6 @@ { "1": { "735208": "583e28", - "101010": "101010", "cead08": "b57353", "f7de42": "e9ae7e", "a58408": "955d41", @@ -11,7 +10,6 @@ }, "2": { "735208": "46494d", - "101010": "101010", "cead08": "7b828b", "f7de42": "aab3bf", "a58408": "575b62", diff --git a/public/images/pokemon/variant/back/596.json b/public/images/pokemon/variant/back/596.json index 13a45eefaf2..26b9b446cad 100644 --- a/public/images/pokemon/variant/back/596.json +++ b/public/images/pokemon/variant/back/596.json @@ -1,7 +1,6 @@ { "1": { "192942": "3f210d", - "101010": "101010", "3a52b5": "7c4620", "3a3a42": "684529", "293a7b": "5e341a", @@ -14,9 +13,7 @@ }, "2": { "192942": "a1400e", - "101010": "101010", "3a52b5": "ff8e1e", - "3a3a42": "3a3a42", "293a7b": "d1630f", "ffde52": "aab3bf", "9c8419": "575b62", diff --git a/public/images/pokemon/variant/back/6-gigantamax.json b/public/images/pokemon/variant/back/6-gigantamax.json index 2cb22a53810..9e871aa6eba 100644 --- a/public/images/pokemon/variant/back/6-gigantamax.json +++ b/public/images/pokemon/variant/back/6-gigantamax.json @@ -7,7 +7,6 @@ "ef8429": "b77cb2", "fcfcfc": "eafff4", "ce5242": "9052af", - "101010": "101010", "ffe877": "adffcc", "efb55a": "d8a3e2", "ff0000": "3d30cc", diff --git a/public/images/pokemon/variant/back/6-mega-x.json b/public/images/pokemon/variant/back/6-mega-x.json index 7e281e5d094..f59aa1b4e5f 100644 --- a/public/images/pokemon/variant/back/6-mega-x.json +++ b/public/images/pokemon/variant/back/6-mega-x.json @@ -1,7 +1,6 @@ { "1": { "1f1f1f": "08225e", - "080808": "080808", "5a5a5a": "317396", "383838": "163d82", "009de1": "3da542", @@ -9,7 +8,6 @@ "99d9f7": "e6ffcc", "60a6c8": "82d179", "00b1e6": "af66ff", - "2b629c": "7341a6", - "f8f8f8": "f8f8f8" + "2b629c": "7341a6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/6-mega-y.json b/public/images/pokemon/variant/back/6-mega-y.json index 1780f6949e1..d06bb6fffa2 100644 --- a/public/images/pokemon/variant/back/6-mega-y.json +++ b/public/images/pokemon/variant/back/6-mega-y.json @@ -3,16 +3,11 @@ "e64210": "5033ce", "f7a510": "9e59db", "833118": "552982", - "000000": "000000", "ee8329": "b27cbc", "ffd610": "e9bfff", "cd5241": "8053b2", "eeb45a": "d8a3e2", - "cdcdcd": "cdcdcd", "eede7b": "fae5ff", - "f2f2f2": "f2f2f2", - "217394": "41a86e", - "ffffff": "ffffff", - "636363": "636363" + "217394": "41a86e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/602.json b/public/images/pokemon/variant/back/602.json index ff5e607f300..595a98661a7 100644 --- a/public/images/pokemon/variant/back/602.json +++ b/public/images/pokemon/variant/back/602.json @@ -4,7 +4,6 @@ "b5bdce": "9d65ad", "cedee6": "b291d6", "efffff": "e8ddff", - "191921": "191921", "9ca5b5": "6b357a", "ffe67b": "55b5d6", "ffd600": "3d8cbd", @@ -15,7 +14,6 @@ "b5bdce": "62a89e", "cedee6": "8ecbaf", "efffff": "c7f0d5", - "191921": "191921", "9ca5b5": "315775", "ffe67b": "9a2957", "ffd600": "771a32", diff --git a/public/images/pokemon/variant/back/603.json b/public/images/pokemon/variant/back/603.json index e4e8fb70d58..b59b6ea69e2 100644 --- a/public/images/pokemon/variant/back/603.json +++ b/public/images/pokemon/variant/back/603.json @@ -3,7 +3,6 @@ "847342": "4f8194", "efdea5": "b9f1d3", "c5ad7b": "8dd8d0", - "191921": "191921", "103a4a": "884993", "215a63": "957bd0", "de7352": "8c1a6a", @@ -11,14 +10,12 @@ "b54a29": "610c53", "deb500": "d89d77", "ffd600": "f7e1a6", - "ffffff": "ffffff", "949c4a": "ff772d" }, "2": { "847342": "0d1a31", "efdea5": "3a5865", "c5ad7b": "283b4e", - "191921": "191921", "103a4a": "6faa3c", "215a63": "bbdf64", "de7352": "fef5b5", diff --git a/public/images/pokemon/variant/back/604.json b/public/images/pokemon/variant/back/604.json index b7fb3bb6208..01e61a45af2 100644 --- a/public/images/pokemon/variant/back/604.json +++ b/public/images/pokemon/variant/back/604.json @@ -4,7 +4,6 @@ "002131": "501d59", "216373": "957bd0", "73b5ce": "b29fe8", - "101019": "101019", "ffd600": "f7e1a6", "deb500": "d89d77", "847342": "4f8194", @@ -21,7 +20,6 @@ "002131": "225517", "216373": "bbdf64", "73b5ce": "e1ed9e", - "101019": "101019", "ffd600": "b83c5c", "deb500": "92233f", "847342": "0d1a31", diff --git a/public/images/pokemon/variant/back/605.json b/public/images/pokemon/variant/back/605.json index d5431137ef4..d0afbb0acfe 100644 --- a/public/images/pokemon/variant/back/605.json +++ b/public/images/pokemon/variant/back/605.json @@ -4,7 +4,6 @@ "3a7352": "292571", "a5cebd": "617eb8", "639484": "3c508b", - "101010": "101010", "ce0000": "954bd8", "7b2929": "2ecbc2", "6b6310": "54760c", @@ -15,7 +14,6 @@ "3a7352": "702c2c", "a5cebd": "be847a", "639484": "9f5952", - "101010": "101010", "ce0000": "615ad4", "7b2929": "f052a8", "6b6310": "a13815", @@ -26,7 +24,6 @@ "3a7352": "24243a", "a5cebd": "5b5e68", "639484": "38394c", - "101010": "101010", "ce0000": "ee5962", "7b2929": "8952dc", "6b6310": "8b3dbe", diff --git a/public/images/pokemon/variant/back/606.json b/public/images/pokemon/variant/back/606.json index b7517edbab7..ba4a85de4eb 100644 --- a/public/images/pokemon/variant/back/606.json +++ b/public/images/pokemon/variant/back/606.json @@ -4,7 +4,6 @@ "634229": "3f1925", "de9c7b": "9f534b", "8c523a": "581f28", - "101010": "101010", "c5a57b": "e9c0a2", "8c2929": "4b1263", "ce0000": "602985", @@ -18,7 +17,6 @@ "634229": "2f536f", "de9c7b": "a0e4e6", "8c523a": "4d879f", - "101010": "101010", "c5a57b": "c35d43", "8c2929": "16146f", "ce0000": "384097", @@ -32,9 +30,7 @@ "634229": "834f57", "de9c7b": "e5d1cc", "8c523a": "97696a", - "101010": "101010", "c5a57b": "bc3295", - "8c2929": "8c2929", "ce0000": "d3335a", "e6ce00": "a6488d", "e6c5a5": "dc59aa", diff --git a/public/images/pokemon/variant/back/609.json b/public/images/pokemon/variant/back/609.json index 80e1d7b3201..c716a8159ea 100644 --- a/public/images/pokemon/variant/back/609.json +++ b/public/images/pokemon/variant/back/609.json @@ -7,7 +7,6 @@ "313131": "11247b", "5a5a5a": "123684", "c5d6d6": "8e7c96", - "ffffff": "ffffff", "7b8c8c": "bb9fbc" }, "2": { @@ -18,7 +17,6 @@ "313131": "a15f42", "5a5a5a": "8d412b", "c5d6d6": "dcceae", - "ffffff": "ffffff", "7b8c8c": "eee6ca" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/610.json b/public/images/pokemon/variant/back/610.json index b011b55eb06..9fa630fe381 100644 --- a/public/images/pokemon/variant/back/610.json +++ b/public/images/pokemon/variant/back/610.json @@ -1,13 +1,10 @@ { "1": { - "000000": "000000", "313a29": "0a0b31", "4a523a": "27105b", "636b4a": "4b409d", "6b7b4a": "3f3562", "94a55a": "514776", - "b5b5d6": "b5b5d6", - "ffffff": "ffffff", "ce0000": "9d9d9d", "630000": "361a06", "84b521": "b52439", @@ -16,14 +13,11 @@ "d6e694": "d8d8d8" }, "2": { - "000000": "000000", "313a29": "0e1f3d", "4a523a": "193769", "636b4a": "35679c", "6b7b4a": "681c2a", "94a55a": "983f50", - "b5b5d6": "b5b5d6", - "ffffff": "ffffff", "ce0000": "00b5ce", "630000": "2f0010", "84b521": "5b69da", diff --git a/public/images/pokemon/variant/back/6100.json b/public/images/pokemon/variant/back/6100.json index bcf7d0cb55a..5113ce4930c 100644 --- a/public/images/pokemon/variant/back/6100.json +++ b/public/images/pokemon/variant/back/6100.json @@ -3,12 +3,8 @@ "7c2506": "2e333b", "fa923e": "a0c6ca", "ec6f00": "69a6b4", - "101010": "101010", "dc5d00": "598195", "c04a1c": "4e6170", - "ddccc8": "ddccc8", - "fefefe": "fefefe", - "ded5d5": "ded5d5", "f3d181": "c9cdd6", "d9a866": "a5aab7", "b8752e": "838797" @@ -17,12 +13,8 @@ "7c2506": "5d0a26", "fa923e": "d04744", "ec6f00": "a62833", - "101010": "101010", "dc5d00": "8f1b2c", "c04a1c": "72142b", - "ddccc8": "ddccc8", - "fefefe": "fefefe", - "ded5d5": "ded5d5", "f3d181": "502b32", "d9a866": "3a272e", "b8752e": "2d2327" diff --git a/public/images/pokemon/variant/back/6101.json b/public/images/pokemon/variant/back/6101.json index a494bf095d4..f87a8b27a30 100644 --- a/public/images/pokemon/variant/back/6101.json +++ b/public/images/pokemon/variant/back/6101.json @@ -4,13 +4,10 @@ "f3d181": "c9cdd6", "d9a866": "a5aab7", "a9763d": "838797", - "101010": "101010", "dc5d00": "5e8494", "ec6f00": "69a6b4", "c04a1c": "386583", "7c2506": "2e333b", - "cdcdde": "cdcdde", - "fefefe": "fefefe", "6f625e": "373e4c" }, "2": { @@ -18,13 +15,9 @@ "f3d181": "5e343c", "d9a866": "452d35", "a9763d": "35262c", - "101010": "101010", "dc5d00": "582b39", "ec6f00": "a62833", "c04a1c": "72142b", - "7c2506": "4a061d", - "cdcdde": "cdcdde", - "fefefe": "fefefe", - "6f625e": "6f625e" + "7c2506": "4a061d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/611.json b/public/images/pokemon/variant/back/611.json index 9a803c28aeb..5f55d0c321f 100644 --- a/public/images/pokemon/variant/back/611.json +++ b/public/images/pokemon/variant/back/611.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "4a8c4a": "b52439", "314a29": "650b18", "426b3a": "98182b", @@ -8,14 +7,12 @@ "b52121": "737373", "737373": "3f3562", "3a3a3a": "2a0e29", - "ffffff": "ffffff", "de4242": "c4c4c3", "9c9c9c": "736198", "7b7b7b": "514776", "5a5a52": "342047" }, "2": { - "101010": "101010", "4a8c4a": "35679c", "314a29": "161736", "426b3a": "193769", @@ -23,7 +20,6 @@ "b52121": "1f4fbf", "737373": "681c2a", "3a3a3a": "2c0216", - "ffffff": "ffffff", "de4242": "417dc7", "9c9c9c": "983f50", "7b7b7b": "823140", diff --git a/public/images/pokemon/variant/back/612.json b/public/images/pokemon/variant/back/612.json index a4954b21424..1640dce9b33 100644 --- a/public/images/pokemon/variant/back/612.json +++ b/public/images/pokemon/variant/back/612.json @@ -1,7 +1,6 @@ { "1": { "520000": "383838", - "000000": "000000", "8c0000": "84847e", "424200": "330909", "a5ad19": "b52439", @@ -15,7 +14,6 @@ }, "2": { "520000": "0d1e7c", - "000000": "000000", "8c0000": "1f4fbf", "424200": "0d0e2a", "a5ad19": "193769", diff --git a/public/images/pokemon/variant/back/618.json b/public/images/pokemon/variant/back/618.json index d4db4967946..9c6c04064a3 100644 --- a/public/images/pokemon/variant/back/618.json +++ b/public/images/pokemon/variant/back/618.json @@ -3,16 +3,12 @@ "cebd00": "bdac99", "ffff00": "f3e6dd", "6b6319": "987b6d", - "081019": "081019", "52423a": "312118", "6b524a": "4a342a", "bd846b": "8c3841", "846b63": "6b3838", "d69c84": "ad4c4c", "efce42": "eac2bd", - "d6cec5": "d6cec5", - "ffffff": "ffffff", - "081018": "081018", "735a52": "564038", "735a53": "564038", "9c8473": "a08773", @@ -22,7 +18,6 @@ "cebd00": "58536b", "ffff00": "707488", "6b6319": "39314a", - "081019": "081019", "52423a": "5a2e2e", "6b524a": "804e48", "bd846b": "cec9b1", diff --git a/public/images/pokemon/variant/back/619.json b/public/images/pokemon/variant/back/619.json index 15e699cb554..05e6abc805b 100644 --- a/public/images/pokemon/variant/back/619.json +++ b/public/images/pokemon/variant/back/619.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "634a29": "5b3724", "ad9c4a": "a69384", "947b52": "72533f", @@ -10,12 +9,9 @@ "cebd7b": "faf2db", "de637b": "dd7736", "7b213a": "64171c", - "52525a": "572821", - "ffffff": "ffffff", - "73293a": "73293a" + "52525a": "572821" }, "2": { - "000000": "000000", "634a29": "52271a", "ad9c4a": "aa6b4e", "947b52": "8d3e21", @@ -26,7 +22,6 @@ "de637b": "764ebb", "7b213a": "2f1148", "52525a": "44172c", - "ffffff": "ffffff", "73293a": "3f1f5d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/620.json b/public/images/pokemon/variant/back/620.json index 407d3dfd576..642c872d137 100644 --- a/public/images/pokemon/variant/back/620.json +++ b/public/images/pokemon/variant/back/620.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "524263": "80101d", "424242": "63332d", "b59c9c": "ddb2a5", @@ -8,14 +7,12 @@ "ad8cc5": "d8524a", "735263": "855348", "e6d6d6": "f3d9ce", - "4a2121": "4a2121", "a52121": "e1811a", "5a4231": "2a5a8c", "ce8c52": "4a86c5", "ffad63": "abe5ff" }, "2": { - "000000": "000000", "524263": "15244d", "424242": "3a193c", "b59c9c": "ba89a1", @@ -23,7 +20,6 @@ "ad8cc5": "3979ad", "735263": "654162", "e6d6d6": "e2b7db", - "4a2121": "4a2121", "a52121": "7b25cf", "5a4231": "8c0224", "ce8c52": "e61b42", diff --git a/public/images/pokemon/variant/back/6215.json b/public/images/pokemon/variant/back/6215.json index 741d6ddc0bb..db99eb822bf 100644 --- a/public/images/pokemon/variant/back/6215.json +++ b/public/images/pokemon/variant/back/6215.json @@ -6,12 +6,9 @@ "9c9bce": "ae8976", "514a80": "402010", "dcdbf7": "d0b3a4", - "080808": "080808", "28234b": "220d0a", "7d6ca4": "853a36", "584d80": "562627", - "f6f6ff": "f6f6ff", - "bdbdc5": "bdbdc5", "c52973": "ea903f" }, "2": { @@ -21,12 +18,9 @@ "9c9bce": "3c8775", "514a80": "14273a", "dcdbf7": "60ae7e", - "080808": "080808", "28234b": "0a191e", "7d6ca4": "395962", "584d80": "1c3942", - "f6f6ff": "f6f6ff", - "bdbdc5": "bdbdc5", "c52973": "f49633" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/622.json b/public/images/pokemon/variant/back/622.json index 97f38954bab..3144bbef1df 100644 --- a/public/images/pokemon/variant/back/622.json +++ b/public/images/pokemon/variant/back/622.json @@ -5,7 +5,6 @@ "84cece": "c78b3f", "004a52": "4c1b11", "106b63": "732d02", - "191921": "191921", "106b7b": "5f2b1b", "29848c": "76432c", "6b4200": "21111f", @@ -21,7 +20,6 @@ "84cece": "ad6352", "004a52": "350408", "106b63": "3a100d", - "191921": "191921", "106b7b": "4d090d", "29848c": "631111", "6b4200": "624b7a", diff --git a/public/images/pokemon/variant/back/633.json b/public/images/pokemon/variant/back/633.json index 8ce4cc2dc04..dd00d344bdf 100644 --- a/public/images/pokemon/variant/back/633.json +++ b/public/images/pokemon/variant/back/633.json @@ -1,7 +1,6 @@ { "1": { "292129": "140d35", - "101010": "101010", "5a5252": "4c297a", "525252": "4c297a", "423a42": "331c62", @@ -14,7 +13,6 @@ }, "2": { "292129": "1c2313", - "101010": "101010", "5a5252": "3a452d", "525252": "3a452d", "423a42": "2b351e", diff --git a/public/images/pokemon/variant/back/634.json b/public/images/pokemon/variant/back/634.json index 56d55acca5d..3cf9dc8670a 100644 --- a/public/images/pokemon/variant/back/634.json +++ b/public/images/pokemon/variant/back/634.json @@ -2,27 +2,21 @@ "1": { "292129": "140d35", "423a42": "331c62", - "101010": "101010", "525252": "4c297a", "3a63a5": "728197", "6394de": "bdd2e2", "19316b": "35475d", "632142": "1f4c90", - "9c3a6b": "3a80b8", - "adadad": "adadad", - "e6dede": "e6dede" + "9c3a6b": "3a80b8" }, "2": { "292129": "1c2313", "423a42": "2b351e", - "101010": "101010", "525252": "3a452d", "3a63a5": "a5a685", "6394de": "d9d9aa", "19316b": "6a6a51", "632142": "813530", - "9c3a6b": "ba5744", - "adadad": "adadad", - "e6dede": "e6dede" + "9c3a6b": "ba5744" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/635.json b/public/images/pokemon/variant/back/635.json index 750953e85e1..d0daca25363 100644 --- a/public/images/pokemon/variant/back/635.json +++ b/public/images/pokemon/variant/back/635.json @@ -3,13 +3,11 @@ "423a42": "331c62", "292129": "140d35", "525252": "4c297a", - "101010": "101010", "3a5a9c": "728197", "5a84ce": "bdd2e2", "9c4231": "bc3962", "19316b": "35475d", "732919": "7a1545", - "e6dede": "e6dede", "632142": "1f4c90", "bd527b": "65bfed", "8c2963": "3a80b8" @@ -18,13 +16,11 @@ "423a42": "2b351e", "292129": "1c2313", "525252": "3a452d", - "101010": "101010", "3a5a9c": "a5a685", "5a84ce": "d9d9aa", "9c4231": "950505", "19316b": "6a6a51", "732919": "640303", - "e6dede": "e6dede", "632142": "813530", "bd527b": "e78256", "8c2963": "ba5744" diff --git a/public/images/pokemon/variant/back/647-ordinary.json b/public/images/pokemon/variant/back/647-ordinary.json index a013f9fbb2f..65ca10d54d9 100644 --- a/public/images/pokemon/variant/back/647-ordinary.json +++ b/public/images/pokemon/variant/back/647-ordinary.json @@ -1,24 +1,17 @@ { "1": { "7b3129": "96711f", - "212121": "212121", "de4221": "fdbb3e", "ad3121": "c2912f", "314a8c": "c3382a", "19295a": "922517", "4a6bce": "ef4635", - "6b6b52": "6b6b52", - "fff7bd": "fff7bd", - "b5ad84": "b5ad84", "217ba5": "f15c5d", "63bdff": "f69284", - "525252": "525252", - "addeff": "fbcfcb", - "ffffff": "ffffff" + "addeff": "fbcfcb" }, "2": { "7b3129": "81304a", - "212121": "212121", "de4221": "de5d83", "ad3121": "a84564", "314a8c": "3b3160", @@ -29,8 +22,6 @@ "b5ad84": "b573a8", "217ba5": "b89edb", "63bdff": "e4d7ff", - "525252": "525252", - "addeff": "f1ecff", - "ffffff": "ffffff" + "addeff": "f1ecff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/647-resolute.json b/public/images/pokemon/variant/back/647-resolute.json index 2231d1dd79a..71b7ec5bbf7 100644 --- a/public/images/pokemon/variant/back/647-resolute.json +++ b/public/images/pokemon/variant/back/647-resolute.json @@ -1,7 +1,5 @@ { "1": { - "4a5252": "4a5252", - "101010": "101010", "843a29": "c2912f", "63bdff": "f69284", "ff9421": "d84a9a", @@ -10,15 +8,10 @@ "314a8c": "c3382a", "193163": "922517", "4a6bce": "ef4635", - "21848c": "be4848", - "635a29": "635a29", - "b5ad73": "b5ad73", - "fff7ad": "fff7ad", - "ffffff": "ffffff" + "21848c": "be4848" }, "2": { "4a5252": "6a4863", - "101010": "101010", "843a29": "81304a", "63bdff": "e4d7ff", "ff9421": "8571a4", @@ -30,7 +23,6 @@ "21848c": "b89edb", "635a29": "6a4863", "b5ad73": "b573a8", - "fff7ad": "d89cc6", - "ffffff": "ffffff" + "fff7ad": "d89cc6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/648-pirouette.json b/public/images/pokemon/variant/back/648-pirouette.json index 194c63c30d4..c62deec8e21 100644 --- a/public/images/pokemon/variant/back/648-pirouette.json +++ b/public/images/pokemon/variant/back/648-pirouette.json @@ -21,14 +21,11 @@ "4a423a": "413429", "84736b": "83685b", "101010": "1a1313", - "73423a": "73423a", "423131": "553a35", "635a52": "625246", "c5b594": "c9b190", "fffff7": "fff4e0", - "947b5a": "947b5a", "f7527b": "986752", - "c5315a": "553a35", - "5a5252": "5a5252" + "c5315a": "553a35" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/649-burn.json b/public/images/pokemon/variant/back/649-burn.json index 18dd2d964ce..1c73e9602ae 100644 --- a/public/images/pokemon/variant/back/649-burn.json +++ b/public/images/pokemon/variant/back/649-burn.json @@ -5,13 +5,9 @@ "9c5ac5": "7baec3", "73428c": "4084c0", "ceb5ff": "87feff", - "5a2110": "5a2110", - "a53121": "a53121", "a584bd": "62c4e6", - "ef2100": "ef2100", "733129": "26a624", "f75221": "ddffb0", - "ffffff": "ffffff", "b54221": "97e083" }, "2": { @@ -20,13 +16,9 @@ "9c5ac5": "484553", "73428c": "312f42", "ceb5ff": "f56e6e", - "5a2110": "5a2110", - "a53121": "a53121", "a584bd": "b72852", - "ef2100": "ef2100", "733129": "91283b", "f75221": "ff9b90", - "ffffff": "ffffff", "b54221": "c9514e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/649-chill.json b/public/images/pokemon/variant/back/649-chill.json index 7f8988d6a76..ed8bb05fdfc 100644 --- a/public/images/pokemon/variant/back/649-chill.json +++ b/public/images/pokemon/variant/back/649-chill.json @@ -5,10 +5,7 @@ "9c5ac5": "7baec3", "73428c": "4084c0", "ceb5ff": "87feff", - "42423a": "42423a", - "a5a5ad": "a5a5ad", "a584bd": "62c4e6", - "ffffff": "ffffff", "733129": "26a624", "f75221": "ddffb0", "b54221": "97e083" @@ -19,10 +16,7 @@ "9c5ac5": "484553", "73428c": "312f42", "ceb5ff": "ccf7fe", - "42423a": "42423a", - "a5a5ad": "a5a5ad", "a584bd": "8dc7e3", - "ffffff": "ffffff", "733129": "4b8fba", "f75221": "aafaff", "b54221": "7cc9e0" diff --git a/public/images/pokemon/variant/back/649-douse.json b/public/images/pokemon/variant/back/649-douse.json index f00fbdd66cc..80b4a7a5a51 100644 --- a/public/images/pokemon/variant/back/649-douse.json +++ b/public/images/pokemon/variant/back/649-douse.json @@ -5,13 +5,9 @@ "9c5ac5": "7baec3", "73428c": "4084c0", "ceb5ff": "87feff", - "00424a": "00424a", - "0084b5": "0084b5", "a584bd": "62c4e6", - "00ceff": "00ceff", "733129": "26a624", "f75221": "ddffb0", - "ffffff": "ffffff", "b54221": "97e083" }, "2": { @@ -20,13 +16,9 @@ "9c5ac5": "484553", "73428c": "312f42", "ceb5ff": "7bbde3", - "00424a": "00424a", - "0084b5": "0084b5", "a584bd": "4994da", - "00ceff": "00ceff", "733129": "2048bd", "f75221": "a4c8ff", - "ffffff": "ffffff", "b54221": "6c92e0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/649-shock.json b/public/images/pokemon/variant/back/649-shock.json index e6dfbe5d6e0..feaf84a8a08 100644 --- a/public/images/pokemon/variant/back/649-shock.json +++ b/public/images/pokemon/variant/back/649-shock.json @@ -5,13 +5,9 @@ "9c5ac5": "7baec3", "73428c": "4084c0", "ceb5ff": "87feff", - "4a4208": "4a4208", - "b5b500": "b5b500", "a584bd": "62c4e6", - "deff00": "deff00", "733129": "26a624", "f75221": "ddffb0", - "ffffff": "ffffff", "b54221": "97e083" }, "2": { @@ -20,13 +16,9 @@ "9c5ac5": "484553", "73428c": "312f42", "ceb5ff": "ffee5e", - "4a4208": "4a4208", - "b5b500": "b5b500", "a584bd": "ecb549", - "deff00": "deff00", "733129": "c69634", "f75221": "fff7aa", - "ffffff": "ffffff", "b54221": "eccc67" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/649.json b/public/images/pokemon/variant/back/649.json index fcee232a8c3..c31b7bf27f2 100644 --- a/public/images/pokemon/variant/back/649.json +++ b/public/images/pokemon/variant/back/649.json @@ -5,13 +5,9 @@ "9c5ac5": "7baec3", "73428c": "4084c0", "ceb5ff": "87feff", - "6b4a08": "6b4a08", - "c58400": "c58400", "a584bd": "62c4e6", - "efbd00": "efbd00", "733129": "26a624", "f75221": "ddffb0", - "ffffff": "ffffff", "b54221": "97e083" }, "2": { @@ -20,13 +16,9 @@ "9c5ac5": "484553", "73428c": "312f42", "ceb5ff": "f7ae6a", - "6b4a08": "6b4a08", - "c58400": "c58400", "a584bd": "e2854c", - "efbd00": "efbd00", "733129": "c6684b", "f75221": "fbba7f", - "ffffff": "ffffff", "b54221": "e0875a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/653.json b/public/images/pokemon/variant/back/653.json index f7761fa32b1..acbc4c24d67 100644 --- a/public/images/pokemon/variant/back/653.json +++ b/public/images/pokemon/variant/back/653.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "736028": "9f398a", "ffd659": "e190c3", "ccab47": "c35ba3", @@ -12,7 +11,6 @@ "f8f8f8": "fbecff" }, "2": { - "101010": "101010", "736028": "172547", "ffd659": "3a6a93", "ccab47": "264166", diff --git a/public/images/pokemon/variant/back/654.json b/public/images/pokemon/variant/back/654.json index cc8722209f8..d9fc958239e 100644 --- a/public/images/pokemon/variant/back/654.json +++ b/public/images/pokemon/variant/back/654.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "736028": "481332", "ccab47": "682546", "ffd659": "a85789", @@ -10,12 +9,9 @@ "737373": "5c255f", "f8f8f8": "e7caef", "804913": "c5b3ca", - "bfbfbf": "c093c3", - "262626": "262626", - "404040": "404040" + "bfbfbf": "c093c3" }, "2": { - "101010": "101010", "736028": "061530", "ccab47": "173864", "ffd659": "2b5f8a", @@ -25,8 +21,6 @@ "737373": "75553c", "f8f8f8": "fff2dd", "804913": "098794", - "bfbfbf": "d4b996", - "262626": "262626", - "404040": "404040" + "bfbfbf": "d4b996" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/6549.json b/public/images/pokemon/variant/back/6549.json index 230d54b1777..e5bf44b1c5a 100644 --- a/public/images/pokemon/variant/back/6549.json +++ b/public/images/pokemon/variant/back/6549.json @@ -2,35 +2,27 @@ "1": { "70365a": "29547d", "ff84bd": "73bad9", - "101010": "101010", "bd59a2": "5094c0", "bda452": "77909a", "ffde41": "b6c7cc", "526229": "80152b", "ffbbdb": "b5ddea", - "fdfdfd": "fdfdfd", "315a31": "5a5a2c", "39ac39": "bfd17f", "4a834a": "8e954d", "9cb462": "bd2d40", - "c5ee7b": "ef5755", - "cdc5bd": "cdc5bd" + "c5ee7b": "ef5755" }, "2": { "70365a": "8a1a3c", "ff84bd": "e8617a", - "101010": "101010", "bd59a2": "d64065", - "bda452": "bda452", - "ffde41": "ffde41", "526229": "351c49", "ffbbdb": "f38e9c", - "fdfdfd": "fdfdfd", "315a31": "643312", "39ac39": "ebc460", "4a834a": "9d7d45", "9cb462": "5d3576", - "c5ee7b": "834c9b", - "cdc5bd": "cdc5bd" + "c5ee7b": "834c9b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/655.json b/public/images/pokemon/variant/back/655.json index cacae9a43d5..2232880aaba 100644 --- a/public/images/pokemon/variant/back/655.json +++ b/public/images/pokemon/variant/back/655.json @@ -6,11 +6,8 @@ "79280f": "4d1681", "816528": "331035", "ffda5a": "e7caef", - "000000": "000000", "deb048": "c093c3", "a7673a": "a58dab", - "bfbfbf": "bfbfbf", - "6e6d6a": "6e6d6a", "893027": "872b59", "62211b": "550c28", "ae3d32": "b55390" @@ -22,11 +19,8 @@ "79280f": "005646", "816528": "75553c", "ffda5a": "fff2dd", - "000000": "000000", "deb048": "d4b996", "a7673a": "098794", - "bfbfbf": "bfbfbf", - "6e6d6a": "6e6d6a", "893027": "173864", "62211b": "101010", "ae3d32": "2b5f8a" diff --git a/public/images/pokemon/variant/back/6570.json b/public/images/pokemon/variant/back/6570.json index b42d9780a3b..13dd8b85012 100644 --- a/public/images/pokemon/variant/back/6570.json +++ b/public/images/pokemon/variant/back/6570.json @@ -7,7 +7,6 @@ "f7acae": "ffd291", "4a4d53": "3b2b4f", "fafafa": "efd9d9", - "101010": "101010", "b3b3bb": "d6b7b1", "928d96": "504b6a", "cbcfd8": "7b7897", @@ -22,7 +21,6 @@ "f7acae": "79d38d", "4a4d53": "6f4332", "fafafa": "f0decd", - "101010": "101010", "b3b3bb": "c6ab99", "928d96": "995d3e", "cbcfd8": "d79568", diff --git a/public/images/pokemon/variant/back/6571.json b/public/images/pokemon/variant/back/6571.json index fe8a33a5133..971faa8a4cb 100644 --- a/public/images/pokemon/variant/back/6571.json +++ b/public/images/pokemon/variant/back/6571.json @@ -1,7 +1,6 @@ { "1": { "942429": "4a1921", - "101010": "101010", "d53a3e": "782d41", "928d96": "4a4759", "f07376": "b44d63", @@ -17,7 +16,6 @@ }, "2": { "942429": "143130", - "101010": "101010", "d53a3e": "265a52", "928d96": "885f49", "f07376": "4e867b", @@ -28,7 +26,6 @@ "a7484f": "2a6062", "5f0002": "072222", "cbcfd8": "bc9072", - "6d4d62": "c2589c", - "4b163b": "4b163b" + "6d4d62": "c2589c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/664.json b/public/images/pokemon/variant/back/664.json index b4b1dbcc26a..f19fae75071 100644 --- a/public/images/pokemon/variant/back/664.json +++ b/public/images/pokemon/variant/back/664.json @@ -2,7 +2,6 @@ "1": { "737373": "9c615f", "f2f2f2": "ffffff", - "101010": "101010", "b3b3b3": "e9c7c4", "262626": "4c2855", "404040": "895a9f", @@ -14,7 +13,6 @@ "2": { "737373": "590015", "f2f2f2": "c83e4c", - "101010": "101010", "b3b3b3": "a70d37", "262626": "05312f", "404040": "377772", diff --git a/public/images/pokemon/variant/back/665.json b/public/images/pokemon/variant/back/665.json index c5defbab5b7..de52892d922 100644 --- a/public/images/pokemon/variant/back/665.json +++ b/public/images/pokemon/variant/back/665.json @@ -1,11 +1,9 @@ { "1": { - "363636": "363636", "d1bf6b": "a0c896", "8c8c8c": "895a9f", "bfbfbf": "a97dbb", "9d7247": "838b53", - "101010": "101010", "4d4d4d": "9c615f", "b3b3b3": "e9c7c4", "f8f8f8": "ffffff", @@ -19,7 +17,6 @@ "8c8c8c": "590015", "bfbfbf": "a70d37", "9d7247": "dda476", - "101010": "101010", "4d4d4d": "590015", "b3b3b3": "a70d37", "f8f8f8": "c83e4c", diff --git a/public/images/pokemon/variant/back/666-archipelago.json b/public/images/pokemon/variant/back/666-archipelago.json index 88f2fdca3f6..3b5397ac3e6 100644 --- a/public/images/pokemon/variant/back/666-archipelago.json +++ b/public/images/pokemon/variant/back/666-archipelago.json @@ -1,34 +1,19 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "c8373c": "c8373c", - "30c171": "30c171", - "d2bf96": "d2bf96", "303030": "402746", - "c27351": "c27351", "ceab62": "d9edd4", "675220": "958c8a", "707068": "a97cbc", - "a2523b": "a2523b", - "504a4a": "7f6991", - "c3c3c3": "c3c3c3", - "b28e67": "b28e67" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "824719", - "c8373c": "c8373c", - "30c171": "30c171", - "d2bf96": "d2bf96", "303030": "642703", - "c27351": "c27351", "ceab62": "a22414", "675220": "741300", "707068": "a22414", - "a2523b": "a2523b", "504a4a": "741300", - "c3c3c3": "e7caa5", - "b28e67": "b28e67" + "c3c3c3": "e7caa5" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/666-continental.json b/public/images/pokemon/variant/back/666-continental.json index c28da572185..3a023b45433 100644 --- a/public/images/pokemon/variant/back/666-continental.json +++ b/public/images/pokemon/variant/back/666-continental.json @@ -1,34 +1,19 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "d18257": "d18257", "303030": "402746", - "f9bd55": "f9bd55", - "f8f05e": "f8f05e", - "d24c3e": "d24c3e", "ceab62": "d9edd4", "675220": "958c8a", - "aa5844": "aa5844", "707068": "a97cbc", - "504a4a": "7f6991", - "c3c3c3": "c3c3c3", - "e08528": "e08528" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "8f551e", - "d18257": "d18257", "303030": "6d2d0d", - "f9bd55": "f9bd55", - "f8f05e": "f8f05e", - "d24c3e": "d24c3e", "ceab62": "e99b44", "675220": "9c5c19", - "aa5844": "aa5844", "707068": "e99b44", "504a4a": "9c5c19", - "c3c3c3": "f8f27f", - "e08528": "e08528" + "c3c3c3": "f8f27f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/666-elegant.json b/public/images/pokemon/variant/back/666-elegant.json index bfccf82b7fc..c641b655843 100644 --- a/public/images/pokemon/variant/back/666-elegant.json +++ b/public/images/pokemon/variant/back/666-elegant.json @@ -1,33 +1,18 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "e6ddf8": "e6ddf8", - "cf7ef3": "cf7ef3", - "f8de3f": "f8de3f", "303030": "402746", - "875fb5": "875fb5", - "de4040": "de4040", "ceab62": "d9edd4", "675220": "958c8a", "707068": "a97cbc", - "56479d": "56479d", - "504a4a": "7f6991", - "c3c3c3": "c3c3c3" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "612776", - "e6ddf8": "e6ddf8", - "cf7ef3": "cf7ef3", - "f8de3f": "f8de3f", "303030": "351262", - "875fb5": "875fb5", - "de4040": "de4040", "ceab62": "a73fab", "675220": "7d1083", "707068": "a73fab", - "56479d": "56479d", "504a4a": "7d1083", "c3c3c3": "f0ecff" } diff --git a/public/images/pokemon/variant/back/666-fancy.json b/public/images/pokemon/variant/back/666-fancy.json index 5d368667ae3..6f20a0dc3bb 100644 --- a/public/images/pokemon/variant/back/666-fancy.json +++ b/public/images/pokemon/variant/back/666-fancy.json @@ -1,36 +1,22 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "de4040": "de4040", - "5faa3e": "5faa3e", - "ceab62": "d9edd4", - "b6d26d": "b6d26d", - "e9e052": "e9e052", - "cf7ef3": "cf7ef3", - "c3c3c3": "ffeaff", - "f2d4e3": "f2d4e3", - "ead2e3": "ffeaff" - }, - "2": { - "101010": "101010", - "303030": "00771b", - "675220": "b9c05a", - "504a4a": "b9c05a", - "595959": "6f9f42", - "707068": "6f9f42", - "de4040": "de4040", - "5faa3e": "5faa3e", - "ceab62": "e3e982", - "b6d26d": "b6d26d", - "e9e052": "e9e052", - "cf7ef3": "cf7ef3", - "c3c3c3": "fcf1ff", - "f2d4e3": "f2d4e3", - "ead2e3": "fcf1ff" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4", + "c3c3c3": "ffeaff", + "ead2e3": "ffeaff" + }, + "2": { + "303030": "00771b", + "675220": "b9c05a", + "504a4a": "b9c05a", + "595959": "6f9f42", + "707068": "6f9f42", + "ceab62": "e3e982", + "c3c3c3": "fcf1ff", + "ead2e3": "fcf1ff" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/666-garden.json b/public/images/pokemon/variant/back/666-garden.json index 57dd83db8e9..26d8098a6fd 100644 --- a/public/images/pokemon/variant/back/666-garden.json +++ b/public/images/pokemon/variant/back/666-garden.json @@ -1,31 +1,18 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "398351": "398351", - "3dba96": "3dba96", "303030": "402746", - "88d254": "88d254", "ceab62": "d9edd4", "675220": "958c8a", - "de4040": "de4040", "707068": "a97cbc", - "3f919a": "3f919a", - "504a4a": "7f6991", - "c3c3c3": "c3c3c3" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "006b55", - "398351": "398351", - "3dba96": "3dba96", "303030": "044553", - "88d254": "88d254", "ceab62": "227687", "675220": "055160", - "de4040": "de4040", "707068": "227687", - "3f919a": "3f919a", "504a4a": "055160", "c3c3c3": "72d0a3" } diff --git a/public/images/pokemon/variant/back/666-high-plains.json b/public/images/pokemon/variant/back/666-high-plains.json index 6ee5c78e6ca..0271aa89d50 100644 --- a/public/images/pokemon/variant/back/666-high-plains.json +++ b/public/images/pokemon/variant/back/666-high-plains.json @@ -1,36 +1,19 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "f3a861": "f3a861", - "9a5a3b": "9a5a3b", "303030": "402746", - "e1764e": "e1764e", - "aa4343": "aa4343", "ceab62": "d9edd4", "675220": "958c8a", "707068": "a97cbc", - "504a4a": "7f6991", - "c3c3c3": "c3c3c3", - "337543": "337543", - "e8c815": "e8c815", - "773d21": "773d21" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "a55422", - "f3a861": "f3a861", - "9a5a3b": "9a5a3b", "303030": "8f1d19", - "e1764e": "e1764e", - "aa4343": "aa4343", "ceab62": "f2975a", "675220": "c97034", "707068": "f2975a", "504a4a": "c97034", - "c3c3c3": "edc67c", - "337543": "337543", - "e8c815": "e8c815", - "773d21": "773d21" + "c3c3c3": "edc67c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/666-icy-snow.json b/public/images/pokemon/variant/back/666-icy-snow.json index 24fc6ef23b1..4b944b84227 100644 --- a/public/images/pokemon/variant/back/666-icy-snow.json +++ b/public/images/pokemon/variant/back/666-icy-snow.json @@ -1,32 +1,19 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "f0f0f8": "f0f0f8", - "cfd9cf": "cfd9cf", "303030": "402746", - "c5c5da": "c5c5da", "ceab62": "d9edd4", "675220": "958c8a", "707068": "a97cbc", - "504a4a": "7f6991", - "acacc2": "acacc2", - "95a1a1": "95a1a1", - "c3c3c3": "c3c3c3" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "60646a", - "f0f0f8": "f0f0f8", - "cfd9cf": "cfd9cf", "303030": "364051", - "c5c5da": "c5c5da", "ceab62": "8c91a4", "675220": "666b7d", "707068": "8c91a4", "504a4a": "666b7d", - "acacc2": "acacc2", - "95a1a1": "95a1a1", "c3c3c3": "fefeff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/666-jungle.json b/public/images/pokemon/variant/back/666-jungle.json index 08d50d8afa6..3d1932e0564 100644 --- a/public/images/pokemon/variant/back/666-jungle.json +++ b/public/images/pokemon/variant/back/666-jungle.json @@ -1,34 +1,19 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "638c63": "638c63", - "7cc48b": "7cc48b", "303030": "402746", "ceab62": "d9edd4", "675220": "958c8a", - "567456": "567456", "504a4a": "7f6991", - "707068": "a97cbc", - "c3c3c3": "c3c3c3", - "724e28": "724e28", - "9a653e": "9a653e", - "c29566": "c29566" + "707068": "a97cbc" }, "2": { - "101010": "101010", "595959": "285b3b", - "638c63": "638c63", - "7cc48b": "7cc48b", "303030": "20452e", "ceab62": "385c43", "675220": "153922", - "567456": "567456", "504a4a": "153922", "707068": "385c43", - "c3c3c3": "a9d9a0", - "724e28": "724e28", - "9a653e": "9a653e", - "c29566": "c29566" + "c3c3c3": "a9d9a0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/666-marine.json b/public/images/pokemon/variant/back/666-marine.json index feadbcb8307..ef344010316 100644 --- a/public/images/pokemon/variant/back/666-marine.json +++ b/public/images/pokemon/variant/back/666-marine.json @@ -1,30 +1,17 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "2f8dc9": "2f8dc9", - "5acdf1": "5acdf1", "303030": "402746", "ceab62": "d9edd4", "675220": "958c8a", - "f2f2f2": "f2f2f2", - "367cb9": "367cb9", - "315382": "315382", "707068": "a97cbc", - "504a4a": "7f6991", - "c3c3c3": "c3c3c3" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "2a5894", - "2f8dc9": "2f8dc9", - "5acdf1": "5acdf1", "303030": "16244f", "ceab62": "3070af", "675220": "264c85", - "f2f2f2": "f2f2f2", - "367cb9": "367cb9", - "315382": "315382", "707068": "3070af", "504a4a": "264c85", "c3c3c3": "f2f2f2" diff --git a/public/images/pokemon/variant/back/666-meadow.json b/public/images/pokemon/variant/back/666-meadow.json index 54a620a47f6..135e7630d23 100644 --- a/public/images/pokemon/variant/back/666-meadow.json +++ b/public/images/pokemon/variant/back/666-meadow.json @@ -1,33 +1,18 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "da6b7e": "da6b7e", - "f3a0ca": "f3a0ca", "303030": "402746", "ceab62": "d9edd4", "675220": "958c8a", - "b4295a": "b4295a", - "2d9b9b": "2d9b9b", - "f2f2f2": "f2f2f2", "707068": "a97cbc", - "e66fad": "e66fad", - "504a4a": "7f6991", - "c3c3c3": "c3c3c3" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "9e3941", - "da6b7e": "da6b7e", - "f3a0ca": "f3a0ca", "303030": "770921", "ceab62": "ce5283", "675220": "a2275e", - "b4295a": "b4295a", - "2d9b9b": "2d9b9b", - "f2f2f2": "f2f2f2", "707068": "ce5283", - "e66fad": "e66fad", "504a4a": "a2275e", "c3c3c3": "f4c2ec" } diff --git a/public/images/pokemon/variant/back/666-modern.json b/public/images/pokemon/variant/back/666-modern.json index ab03985576c..88df6a6a10a 100644 --- a/public/images/pokemon/variant/back/666-modern.json +++ b/public/images/pokemon/variant/back/666-modern.json @@ -1,34 +1,19 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "c3c3c3": "c3c3c3", - "3b6cbb": "3b6cbb", - "f44f4f": "f44f4f", "303030": "402746", - "f8f05c": "f8f05c", "ceab62": "d9edd4", "675220": "958c8a", - "cfc5d9": "cfc5d9", - "b83c3c": "b83c3c", "707068": "a97cbc", - "504a4a": "7f6991", - "405793": "405793" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "830012", "c3c3c3": "ffeae8", - "3b6cbb": "3b6cbb", - "f44f4f": "f44f4f", "303030": "4e0000", - "f8f05c": "f8f05c", "ceab62": "ad2640", "675220": "801521", - "cfc5d9": "cfc5d9", - "b83c3c": "b83c3c", "707068": "ad2640", - "504a4a": "801521", - "405793": "405793" + "504a4a": "801521" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/666-monsoon.json b/public/images/pokemon/variant/back/666-monsoon.json index 915d471b2b1..5a127a43bbe 100644 --- a/public/images/pokemon/variant/back/666-monsoon.json +++ b/public/images/pokemon/variant/back/666-monsoon.json @@ -1,33 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "807676": "807676", - "ceab62": "d9edd4", - "5676de": "5676de", - "4eccd6": "4eccd6", - "989898": "989898", - "c3c3c3": "c3c3c3", - "f0f0f8": "f0f0f8" - }, - "2": { - "101010": "101010", - "303030": "3d3231", - "675220": "2c3593", - "504a4a": "2c3593", - "595959": "4f4645", - "707068": "5857bc", - "807676": "807676", - "ceab62": "5857bc", - "5676de": "5676de", - "4eccd6": "4eccd6", - "989898": "989898", - "92f4f4": "92f4f4", - "c3c3c3": "b8f9f9", - "f0f0f8": "f0f0f8" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "3d3231", + "675220": "2c3593", + "504a4a": "2c3593", + "595959": "4f4645", + "707068": "5857bc", + "ceab62": "5857bc", + "c3c3c3": "b8f9f9" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/666-ocean.json b/public/images/pokemon/variant/back/666-ocean.json index 8b62b4a8072..a5ba9408104 100644 --- a/public/images/pokemon/variant/back/666-ocean.json +++ b/public/images/pokemon/variant/back/666-ocean.json @@ -1,34 +1,18 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "e1384d": "e1384d", - "f4ad61": "f4ad61", - "f8ef6a": "f8ef6a", "303030": "402746", - "ceb362": "ceb362", "675220": "958c8a", - "ebcf3f": "ebcf3f", "707068": "a97cbc", - "504a4a": "7f6991", - "c3c3c3": "c3c3c3", - "4482c9": "4482c9", - "6bb2e9": "6bb2e9" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "e99a26", - "e1384d": "e1384d", - "f4ad61": "f4ad61", - "f8ef6a": "f8ef6a", "303030": "b54908", "ceb362": "ea8742", "675220": "bc601c", - "ebcf3f": "ebcf3f", "707068": "ea8742", "504a4a": "bc601c", - "c3c3c3": "f3c86b", - "4482c9": "4482c9", - "6bb2e9": "6bb2e9" + "c3c3c3": "f3c86b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/666-poke-ball.json b/public/images/pokemon/variant/back/666-poke-ball.json index 002bcdde6aa..3712ad1a20b 100644 --- a/public/images/pokemon/variant/back/666-poke-ball.json +++ b/public/images/pokemon/variant/back/666-poke-ball.json @@ -1,22 +1,13 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "b72c2c": "b72c2c", "303030": "402746", - "dc4b4b": "dc4b4b", "ceab62": "d9edd4", "675220": "958c8a", - "e97e7e": "e97e7e", - "971d1d": "971d1d", - "f8f8f8": "f8f8f8", "707068": "a97cbc", - "504a4a": "7f6991", - "c3c3c3": "c3c3c3", - "a9a99e": "a9a99e" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "df0036", "b72c2c": "00005e", "303030": "ae001a", diff --git a/public/images/pokemon/variant/back/666-polar.json b/public/images/pokemon/variant/back/666-polar.json index 7c72f32ed24..fd76c92ae7b 100644 --- a/public/images/pokemon/variant/back/666-polar.json +++ b/public/images/pokemon/variant/back/666-polar.json @@ -1,34 +1,19 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "4d6cc1": "4d6cc1", - "f0f0f8": "f0f0f8", "303030": "402746", - "3b4b8a": "3b4b8a", - "bfbfbf": "bfbfbf", "ceab62": "d9edd4", "675220": "958c8a", "707068": "a97cbc", - "504a4a": "7f6991", - "2d2d61": "2d2d61", - "c3c3c3": "c3c3c3", - "6aa2dc": "6aa2dc" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "2f3887", - "4d6cc1": "4d6cc1", - "f0f0f8": "f0f0f8", "303030": "191b54", - "3b4b8a": "3b4b8a", - "bfbfbf": "bfbfbf", "ceab62": "5f85c1", "675220": "366098", "707068": "5f85c1", "504a4a": "366098", - "2d2d61": "2d2d61", - "c3c3c3": "ffffff", - "6aa2dc": "6aa2dc" + "c3c3c3": "ffffff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/666-river.json b/public/images/pokemon/variant/back/666-river.json index c7e5e288d05..5ba0084df9d 100644 --- a/public/images/pokemon/variant/back/666-river.json +++ b/public/images/pokemon/variant/back/666-river.json @@ -1,40 +1,18 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "4a412c": "4a412c", - "675220": "958c8a", - "634d20": "634d20", - "1d726a": "1d726a", - "504a4a": "7f6991", - "595959": "724b7a", - "625841": "625841", - "707068": "a97cbc", - "bc813f": "bc813f", - "9c9143": "9c9143", - "ceab62": "ceab62", - "279ec2": "279ec2", - "59c9d3": "59c9d3", - "c3c3c3": "c3c3c3", - "d2a862": "d9edd4" - }, - "2": { - "101010": "101010", - "303030": "7b2800", - "4a412c": "4a412c", - "675220": "ae7f41", - "634d20": "634d20", - "1d726a": "1d726a", - "504a4a": "ae7f41", - "595959": "8a5702", - "625841": "625841", - "707068": "d9a666", - "bc813f": "bc813f", - "9c9143": "9c9143", - "ceab62": "ceab62", - "279ec2": "279ec2", - "59c9d3": "59c9d3", - "c3c3c3": "e3c384", - "d2a862": "d2a862" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "d2a862": "d9edd4" + }, + "2": { + "303030": "7b2800", + "675220": "ae7f41", + "504a4a": "ae7f41", + "595959": "8a5702", + "707068": "d9a666", + "c3c3c3": "e3c384" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/666-sandstorm.json b/public/images/pokemon/variant/back/666-sandstorm.json index 63b0661e2fb..66f333b87be 100644 --- a/public/images/pokemon/variant/back/666-sandstorm.json +++ b/public/images/pokemon/variant/back/666-sandstorm.json @@ -1,34 +1,19 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "f1d69e": "f1d69e", - "625843": "625843", "303030": "402746", - "ba8d68": "ba8d68", - "9b9148": "9b9148", "ceab62": "d9edd4", "675220": "958c8a", - "d9b674": "d9b674", "707068": "a97cbc", - "504a4a": "7f6991", - "c3c3c3": "c3c3c3", - "72604d": "72604d" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "88583e", - "f1d69e": "f1d69e", - "625843": "625843", "303030": "443123", - "ba8d68": "ba8d68", - "9b9148": "9b9148", "ceab62": "c6975f", "675220": "9c703b", - "d9b674": "d9b674", "707068": "c6975f", "504a4a": "9c703b", - "c3c3c3": "ece1a9", - "72604d": "72604d" + "c3c3c3": "ece1a9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/666-savanna.json b/public/images/pokemon/variant/back/666-savanna.json index 2fa9a25e5ca..462946135a9 100644 --- a/public/images/pokemon/variant/back/666-savanna.json +++ b/public/images/pokemon/variant/back/666-savanna.json @@ -1,33 +1,18 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "61a0f5": "61a0f5", - "fffd77": "fffd77", "303030": "402746", - "55d3d9": "55d3d9", "ceab62": "d9edd4", "675220": "958c8a", - "dcc433": "dcc433", - "3b67ac": "3b67ac", "707068": "a97cbc", - "6cc6c6": "6cc6c6", - "504a4a": "7f6991", - "c3c3c3": "c3c3c3" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "4168bb", - "61a0f5": "61a0f5", - "fffd77": "fffd77", "303030": "183576", - "55d3d9": "55d3d9", "ceab62": "4faab3", "675220": "1d828b", - "dcc433": "dcc433", - "3b67ac": "3b67ac", "707068": "4faab3", - "6cc6c6": "6cc6c6", "504a4a": "1d828b", "c3c3c3": "81e7e1" } diff --git a/public/images/pokemon/variant/back/666-sun.json b/public/images/pokemon/variant/back/666-sun.json index 4142b1d2643..daaf2ca1932 100644 --- a/public/images/pokemon/variant/back/666-sun.json +++ b/public/images/pokemon/variant/back/666-sun.json @@ -1,32 +1,17 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "f1a26a": "f1a26a", - "f47491": "f47491", - "f0ce44": "f0ce44", - "fcf372": "fcf372", "303030": "402746", "ceab62": "d9edd4", "675220": "958c8a", - "e18248": "e18248", - "c94971": "c94971", "707068": "a97cbc", - "504a4a": "7f6991", - "c3c3c3": "c3c3c3" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "750500", - "f1a26a": "f1a26a", - "f47491": "f47491", - "f0ce44": "f0ce44", - "fcf372": "fcf372", "303030": "640000", "ceab62": "b83b74", "675220": "8c1850", - "e18248": "e18248", - "c94971": "c94971", "707068": "b83b74", "504a4a": "8c1850", "c3c3c3": "fee3e7" diff --git a/public/images/pokemon/variant/back/666-tundra.json b/public/images/pokemon/variant/back/666-tundra.json index 3e85b8021ad..06e16ee3f2f 100644 --- a/public/images/pokemon/variant/back/666-tundra.json +++ b/public/images/pokemon/variant/back/666-tundra.json @@ -1,32 +1,19 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "a3def1": "a3def1", - "f0f0f8": "f0f0f8", "303030": "402746", - "74bbe9": "74bbe9", - "d0d0d0": "d0d0d0", "ceab62": "d9edd4", "675220": "958c8a", "707068": "a97cbc", - "504a4a": "7f6991", - "539ad9": "539ad9", - "c3c3c3": "c3c3c3" + "504a4a": "7f6991" }, "2": { - "101010": "101010", "595959": "225b72", - "a3def1": "a3def1", - "f0f0f8": "f0f0f8", "303030": "003d69", - "74bbe9": "74bbe9", - "d0d0d0": "d0d0d0", "ceab62": "659dd0", "675220": "3a76a7", "707068": "659dd0", "504a4a": "3a76a7", - "539ad9": "539ad9", "c3c3c3": "cbfbfb" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/669-blue.json b/public/images/pokemon/variant/back/669-blue.json index 758b01c48f8..bd164f701d5 100644 --- a/public/images/pokemon/variant/back/669-blue.json +++ b/public/images/pokemon/variant/back/669-blue.json @@ -3,10 +3,6 @@ "665a1f": "230e63", "ffe14c": "4d37d5", "ccb43d": "3c118e", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8", - "101010": "101010", "65a943": "e493a1", "266280": "200e5c", "61c2f2": "4d72d5", @@ -21,7 +17,6 @@ "595959": "32448e", "bfbfbf": "a5c3ea", "f8f8f8": "dff2ff", - "101010": "101010", "65a943": "33a2bf", "266280": "215510", "61c2f2": "afcf4f", diff --git a/public/images/pokemon/variant/back/669-orange.json b/public/images/pokemon/variant/back/669-orange.json index a7ca575c15e..452e7af1a62 100644 --- a/public/images/pokemon/variant/back/669-orange.json +++ b/public/images/pokemon/variant/back/669-orange.json @@ -3,10 +3,6 @@ "665a1f": "5c0d0d", "ffe14c": "a3382c", "ccb43d": "871723", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8", - "101010": "101010", "65a943": "e493a1", "805326": "5c2c09", "ffb266": "cd9231", @@ -21,7 +17,6 @@ "595959": "712b2b", "bfbfbf": "f1beb3", "f8f8f8": "fff1df", - "101010": "101010", "65a943": "ea8c48", "805326": "215510", "ffb266": "afcf4f", diff --git a/public/images/pokemon/variant/back/669-red.json b/public/images/pokemon/variant/back/669-red.json index 249fedd9e3d..ff77021293a 100644 --- a/public/images/pokemon/variant/back/669-red.json +++ b/public/images/pokemon/variant/back/669-red.json @@ -3,10 +3,6 @@ "665a1f": "3e0547", "ffe14c": "9c235f", "ccb43d": "6a094f", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8", - "101010": "101010", "65a943": "e493a1", "802d2d": "55061c", "ff7373": "cd4a4a", @@ -21,7 +17,6 @@ "595959": "800d3e", "bfbfbf": "f1a2a9", "f8f8f8": "ffd7db", - "101010": "101010", "65a943": "dc3543", "802d2d": "215510", "ff7373": "afcf4f", diff --git a/public/images/pokemon/variant/back/669-white.json b/public/images/pokemon/variant/back/669-white.json index 2140e493685..54678252991 100644 --- a/public/images/pokemon/variant/back/669-white.json +++ b/public/images/pokemon/variant/back/669-white.json @@ -3,10 +3,6 @@ "665a1f": "110732", "ffe14c": "4c495c", "ccb43d": "302b40", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8", - "101010": "101010", "65a943": "e493a1", "808080": "1e1d2a", "fefefe": "89898e", @@ -20,8 +16,6 @@ "ccb43d": "c4c6bf", "595959": "616a64", "bfbfbf": "d4dcd5", - "f8f8f8": "f8f8f8", - "101010": "101010", "65a943": "636a67", "808080": "215510", "fefefe": "afcf4f", diff --git a/public/images/pokemon/variant/back/669-yellow.json b/public/images/pokemon/variant/back/669-yellow.json index 09e57788049..72a4292bc77 100644 --- a/public/images/pokemon/variant/back/669-yellow.json +++ b/public/images/pokemon/variant/back/669-yellow.json @@ -3,10 +3,6 @@ "665a1f": "034020", "ffe14c": "1a8e16", "ccb43d": "0a6323", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8", - "101010": "101010", "65a943": "e493a1", "807826": "054e19", "fff266": "abb830", @@ -21,7 +17,6 @@ "595959": "6a532c", "bfbfbf": "ead295", "f8f8f8": "fffde0", - "101010": "101010", "65a943": "f1d74b", "807826": "215510", "fff266": "afcf4f", diff --git a/public/images/pokemon/variant/back/670-blue.json b/public/images/pokemon/variant/back/670-blue.json index f06692d2c71..5a413b46ffc 100644 --- a/public/images/pokemon/variant/back/670-blue.json +++ b/public/images/pokemon/variant/back/670-blue.json @@ -5,15 +5,11 @@ "ffe14c": "402bbf", "61c2f2": "4a64cd", "3d9ccc": "3342b8", - "101010": "101010", "ccb43d": "33168e", "6bb347": "1d8057", "3d6629": "094740", "288a71": "e493a1", - "134035": "aa2960", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8" + "134035": "aa2960" }, "2": { "665a1f": "b1b1b1", @@ -21,7 +17,6 @@ "ffe14c": "f8f8f4", "61c2f2": "afcf4f", "3d9ccc": "739f1f", - "101010": "101010", "ccb43d": "dcdad8", "6bb347": "3c403a", "3d6629": "121c0d", diff --git a/public/images/pokemon/variant/back/670-orange.json b/public/images/pokemon/variant/back/670-orange.json index a9f85ce8395..0b5c79f1ca2 100644 --- a/public/images/pokemon/variant/back/670-orange.json +++ b/public/images/pokemon/variant/back/670-orange.json @@ -5,15 +5,11 @@ "ffe14c": "a3382c", "ffb266": "cd9231", "d98d41": "aa571d", - "101010": "101010", "ccb43d": "871723", "6bb347": "1d8057", "3d6629": "094740", "288a71": "e493a1", - "134035": "aa2960", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8" + "134035": "aa2960" }, "2": { "665a1f": "b1b1b1", @@ -21,7 +17,6 @@ "ffe14c": "f8f8f4", "ffb266": "afcf4f", "d98d41": "739f1f", - "101010": "101010", "ccb43d": "dcdad8", "6bb347": "3c403a", "3d6629": "121c0d", diff --git a/public/images/pokemon/variant/back/670-red.json b/public/images/pokemon/variant/back/670-red.json index bfceb377666..151d49c9e93 100644 --- a/public/images/pokemon/variant/back/670-red.json +++ b/public/images/pokemon/variant/back/670-red.json @@ -5,15 +5,11 @@ "ffe14c": "8e1653", "ff7373": "cd4a4a", "d94c4c": "a31f35", - "101010": "101010", "ccb43d": "6a094f", "6bb347": "1d8057", "3d6629": "094740", "288a71": "e493a1", - "134035": "aa2960", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8" + "134035": "aa2960" }, "2": { "665a1f": "b1b1b1", @@ -21,7 +17,6 @@ "ffe14c": "f8f8f4", "ff7373": "afcf4f", "d94c4c": "739f1f", - "101010": "101010", "ccb43d": "dcdad8", "6bb347": "3c403a", "3d6629": "121c0d", diff --git a/public/images/pokemon/variant/back/670-white.json b/public/images/pokemon/variant/back/670-white.json index fa7b45d2158..a05a2c17394 100644 --- a/public/images/pokemon/variant/back/670-white.json +++ b/public/images/pokemon/variant/back/670-white.json @@ -5,15 +5,11 @@ "ffe14c": "3b374e", "fefefe": "747478", "d9d9d9": "4c4b55", - "101010": "101010", "ccb43d": "2c2347", "6bb347": "1d8057", "3d6629": "094740", "288a71": "e493a1", - "134035": "aa2960", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8" + "134035": "aa2960" }, "2": { "665a1f": "b1b1b1", @@ -21,14 +17,11 @@ "ffe14c": "f8f8f4", "fefefe": "afcf4f", "d9d9d9": "739f1f", - "101010": "101010", "ccb43d": "dcdad8", "6bb347": "3c403a", "3d6629": "121c0d", "288a71": "6d716f", "134035": "1c2d32", - "595959": "595959", - "bfbfbf": "c6c6c6", - "f8f8f8": "f8f8f8" + "bfbfbf": "c6c6c6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/670-yellow.json b/public/images/pokemon/variant/back/670-yellow.json index d98e0f97054..683d5e6bc29 100644 --- a/public/images/pokemon/variant/back/670-yellow.json +++ b/public/images/pokemon/variant/back/670-yellow.json @@ -5,15 +5,11 @@ "ffe14c": "1a8021", "fff266": "abb830", "d9cc41": "6f950a", - "101010": "101010", "ccb43d": "0b5c19", "6bb347": "1d8057", "3d6629": "094740", "288a71": "e493a1", - "134035": "aa2960", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8" + "134035": "aa2960" }, "2": { "665a1f": "b1b1b1", @@ -21,7 +17,6 @@ "ffe14c": "f8f8f4", "fff266": "afcf4f", "d9cc41": "739f1f", - "101010": "101010", "ccb43d": "dcdad8", "6bb347": "3c403a", "3d6629": "121c0d", diff --git a/public/images/pokemon/variant/back/6705.json b/public/images/pokemon/variant/back/6705.json index 5cc27fb033d..a6d18c9cf29 100644 --- a/public/images/pokemon/variant/back/6705.json +++ b/public/images/pokemon/variant/back/6705.json @@ -6,7 +6,6 @@ "bfacbf": "e56ca6", "367456": "0c5474", "50ab89": "197497", - "101010": "101010", "60606c": "1f1233", "c5cce0": "513981", "aeb5c6": "442967", @@ -18,13 +17,9 @@ "f2daf2": "9cead8", "4d454d": "194f51", "bfacbf": "5db6a9", - "367456": "367456", - "50ab89": "50ab89", - "101010": "101010", "60606c": "042329", "c5cce0": "176463", "aeb5c6": "0d484a", - "949aab": "073338", - "e3e8f4": "e3e8f4" + "949aab": "073338" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/671-blue.json b/public/images/pokemon/variant/back/671-blue.json index 935eeeab1b3..043958cec7c 100644 --- a/public/images/pokemon/variant/back/671-blue.json +++ b/public/images/pokemon/variant/back/671-blue.json @@ -4,22 +4,17 @@ "73bfbf": "291371", "e5ffff": "69c9e3", "aaf2f2": "3827a3", - "101010": "101010", "3d9ccc": "2938a3", "61c2f2": "3c54b8", "1b594a": "aa1a58", "3aa68b": "ff91a4", - "2d806b": "dc5073", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8" + "2d806b": "dc5073" }, "2": { "476d80": "07230a", "73bfbf": "28392c", "e5ffff": "dfe3e1", "aaf2f2": "4d4e46", - "101010": "101010", "3d9ccc": "7f9f1f", "61c2f2": "afcf4f", "1b594a": "0d4a80", diff --git a/public/images/pokemon/variant/back/671-orange.json b/public/images/pokemon/variant/back/671-orange.json index 08a78a394bb..9c9f0faa7fe 100644 --- a/public/images/pokemon/variant/back/671-orange.json +++ b/public/images/pokemon/variant/back/671-orange.json @@ -4,22 +4,17 @@ "cca37a": "631818", "fff2e5": "ffbc77", "ffd9b2": "a34b2c", - "101010": "101010", "d98d41": "954c17", "ffb266": "cd8e31", "1b594a": "aa1a58", "3aa68b": "ff91a4", - "2d806b": "dc5073", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8" + "2d806b": "dc5073" }, "2": { "71543f": "07230a", "cca37a": "28392c", "fff2e5": "dfe3e1", "ffd9b2": "4d4e46", - "101010": "101010", "d98d41": "7f9f1f", "ffb266": "afcf4f", "1b594a": "800707", diff --git a/public/images/pokemon/variant/back/671-red.json b/public/images/pokemon/variant/back/671-red.json index 642c0c96cae..de5714bdcbf 100644 --- a/public/images/pokemon/variant/back/671-red.json +++ b/public/images/pokemon/variant/back/671-red.json @@ -4,22 +4,17 @@ "a66390": "4e0c38", "ffb2cc": "ff90a2", "d998c3": "8e1a55", - "101010": "101010", "d94c4c": "95172c", "ff7373": "c64040", "1b594a": "aa1a58", "3aa68b": "ff91a4", - "2d806b": "dc5073", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8" + "2d806b": "dc5073" }, "2": { "683644": "07230a", "a66390": "28392c", "ffb2cc": "dfe3e1", "d998c3": "4d4e46", - "101010": "101010", "d94c4c": "7f9f1f", "ff7373": "afcf4f", "1b594a": "710846", diff --git a/public/images/pokemon/variant/back/671-white.json b/public/images/pokemon/variant/back/671-white.json index 9f3e489ca31..9e96be30a78 100644 --- a/public/images/pokemon/variant/back/671-white.json +++ b/public/images/pokemon/variant/back/671-white.json @@ -4,29 +4,22 @@ "b3b3b3": "272232", "ffbfca": "c2c1c6", "f2f2f2": "353340", - "101010": "101010", "d9d9d9": "3c3b47", "fefefe": "60616a", "1b594a": "aa1a58", "3aa68b": "ff91a4", - "2d806b": "dc5073", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8" + "2d806b": "dc5073" }, "2": { "808080": "07230a", "b3b3b3": "28392c", "ffbfca": "dfe3e1", "f2f2f2": "4d4e46", - "101010": "101010", "d9d9d9": "7f9f1f", "fefefe": "afcf4f", "1b594a": "1c2d32", "3aa68b": "6d716f", "2d806b": "3c4747", - "595959": "595959", - "bfbfbf": "bfbfbf", "f8f8f8": "f9f9f9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/671-yellow.json b/public/images/pokemon/variant/back/671-yellow.json index a2aea6302ad..246f3a756b5 100644 --- a/public/images/pokemon/variant/back/671-yellow.json +++ b/public/images/pokemon/variant/back/671-yellow.json @@ -4,22 +4,17 @@ "ccb485": "227850", "ffd2a6": "ffe593", "ffeabf": "22b14a", - "101010": "101010", "d9cc41": "789c16", "fff266": "b0bf2b", "1b594a": "aa1a58", "3aa68b": "ff91a4", - "2d806b": "dc5073", - "595959": "595959", - "bfbfbf": "bfbfbf", - "f8f8f8": "f8f8f8" + "2d806b": "dc5073" }, "2": { "6e6b4a": "07230a", "ccb485": "28392c", "ffd2a6": "dfe3e1", "ffeabf": "4d4e46", - "101010": "101010", "d9cc41": "7f9f1f", "fff266": "afcf4f", "1b594a": "8e4d0a", diff --git a/public/images/pokemon/variant/back/6713.json b/public/images/pokemon/variant/back/6713.json index a0ba9eb72ad..721679daf7d 100644 --- a/public/images/pokemon/variant/back/6713.json +++ b/public/images/pokemon/variant/back/6713.json @@ -3,7 +3,6 @@ "737373": "7a993d", "e8e8e8": "cfe68a", "729ac2": "d97389", - "101010": "101010", "bfbfbf": "9dcc3e", "bff4ff": "ffbfda", "6b5442": "732334", @@ -19,7 +18,6 @@ "737373": "641531", "e8e8e8": "bf576b", "729ac2": "cc7b1e", - "101010": "101010", "bfbfbf": "993554", "bff4ff": "fcc95c", "6b5442": "2c7a75", diff --git a/public/images/pokemon/variant/back/672.json b/public/images/pokemon/variant/back/672.json index ad732e63266..c477cacb3bb 100644 --- a/public/images/pokemon/variant/back/672.json +++ b/public/images/pokemon/variant/back/672.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "737373": "9e2c3d", "404040": "73132e", "403830": "642509", @@ -16,7 +15,6 @@ "ff884c": "552d30" }, "2": { - "101010": "101010", "737373": "2d2b40", "404040": "161526", "403830": "305a4f", diff --git a/public/images/pokemon/variant/back/673.json b/public/images/pokemon/variant/back/673.json index 2861d12d0dd..a9ec1635f4e 100644 --- a/public/images/pokemon/variant/back/673.json +++ b/public/images/pokemon/variant/back/673.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "666666": "9e2c3d", "404040": "73132e", "542914": "471405", @@ -16,7 +15,6 @@ "d6b778": "ce8648" }, "2": { - "101010": "101010", "666666": "2d2b40", "404040": "161526", "542914": "37224d", diff --git a/public/images/pokemon/variant/back/677.json b/public/images/pokemon/variant/back/677.json index 425ffc7ec90..c3b8df46589 100644 --- a/public/images/pokemon/variant/back/677.json +++ b/public/images/pokemon/variant/back/677.json @@ -4,15 +4,13 @@ "b8b8cc": "bd5c81", "45454d": "470d28", "8a8a99": "943b5d", - "f8f8f8": "f1f0e4", - "101010": "101010" + "f8f8f8": "f1f0e4" }, "2": { "5c5c66": "243e41", "b8b8cc": "6ba78a", "45454d": "193437", "8a8a99": "426b62", - "f8f8f8": "67415e", - "101010": "101010" + "f8f8f8": "67415e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/678-female.json b/public/images/pokemon/variant/back/678-female.json index c628e4db4ed..578b1f6f47e 100644 --- a/public/images/pokemon/variant/back/678-female.json +++ b/public/images/pokemon/variant/back/678-female.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "737373": "947859", "bfbfbf": "d5c49f", "f8f8f8": "f8f5cd", @@ -9,7 +8,6 @@ "365fb3": "a5346b" }, "2": { - "101010": "101010", "737373": "3a1633", "bfbfbf": "613d5a", "f8f8f8": "855577", diff --git a/public/images/pokemon/variant/back/678.json b/public/images/pokemon/variant/back/678.json index c628e4db4ed..578b1f6f47e 100644 --- a/public/images/pokemon/variant/back/678.json +++ b/public/images/pokemon/variant/back/678.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "737373": "947859", "bfbfbf": "d5c49f", "f8f8f8": "f8f5cd", @@ -9,7 +8,6 @@ "365fb3": "a5346b" }, "2": { - "101010": "101010", "737373": "3a1633", "bfbfbf": "613d5a", "f8f8f8": "855577", diff --git a/public/images/pokemon/variant/back/69.json b/public/images/pokemon/variant/back/69.json index b93b8b335e7..2e87f433d28 100644 --- a/public/images/pokemon/variant/back/69.json +++ b/public/images/pokemon/variant/back/69.json @@ -1,15 +1,11 @@ { "1": { "ad7b42": "841d4a", - "ffffff": "ffffff", "f7e673": "d97076", "d6bd63": "b04d64", "5a3a00": "3b0239", "000000": "1d0015", "946b42": "4f0537", - "b54231": "b54231", - "d6636b": "d6636b", - "732100": "732100", "426b10": "b3273e", "7bc552": "f3a480", "63a542": "d0735b", @@ -17,7 +13,6 @@ }, "2": { "ad7b42": "5380b6", - "ffffff": "ffffff", "f7e673": "b6e9ff", "d6bd63": "7fb1d9", "5a3a00": "324884", diff --git a/public/images/pokemon/variant/back/690.json b/public/images/pokemon/variant/back/690.json index a513e813823..7e4536149f9 100644 --- a/public/images/pokemon/variant/back/690.json +++ b/public/images/pokemon/variant/back/690.json @@ -2,7 +2,6 @@ "1": { "3f6273": "310511", "4d341b": "181243", - "101010": "101010", "a6e1ff": "792a48", "a6703a": "3e44a2", "7ec3e5": "6b1f42", @@ -16,7 +15,6 @@ "2": { "3f6273": "340628", "4d341b": "042431", - "101010": "101010", "a6e1ff": "633060", "a6703a": "2c5d64", "7ec3e5": "481a42", diff --git a/public/images/pokemon/variant/back/691.json b/public/images/pokemon/variant/back/691.json index 5ed68809c44..849dd6a4e5b 100644 --- a/public/images/pokemon/variant/back/691.json +++ b/public/images/pokemon/variant/back/691.json @@ -1,7 +1,6 @@ { "1": { "4d4d2e": "31246d", - "101010": "101010", "b3b36b": "403c94", "80804d": "382f7d", "732230": "310511", @@ -17,7 +16,6 @@ }, "2": { "4d4d2e": "07262e", - "101010": "101010", "b3b36b": "1d4952", "80804d": "0d3338", "732230": "340b33", diff --git a/public/images/pokemon/variant/back/696.json b/public/images/pokemon/variant/back/696.json index a953f1b1cb3..48a55116ffa 100644 --- a/public/images/pokemon/variant/back/696.json +++ b/public/images/pokemon/variant/back/696.json @@ -1,53 +1,27 @@ { "1": { - "734517":"5e0b0b", - "ffa64c":"a50d0d", - "4a322c":"023425", - "101010":"101010", - "404040":"4c3216", - "966858":"1b6430", - "f8f8f8":"dfdea7", - "65483a":"0b4c29", - "bfbfbf":"cbbe8c", - "8c8c8c":"ad8c63", - "121212":"121212", - "bdbdbd":"cfc28f" + "734517": "5e0b0b", + "ffa64c": "a50d0d", + "4a322c": "023425", + "404040": "4c3216", + "966858": "1b6430", + "f8f8f8": "dfdea7", + "65483a": "0b4c29", + "bfbfbf": "cbbe8c", + "8c8c8c": "ad8c63", + "bdbdbd": "cfc28f" }, "2": { - "734517":"395cb7", - "ffa64c":"d2e9ff", - "4a322c":"3e1f18", - "101010":"101010", - "404040":"250860", - "966858":"83726e", - "f8f8f8":"6e46a7", - "65483a":"644943", - "bfbfbf":"593097", - "8c8c8c":"411684", - "121212":"decaff", - "bdbdbd":"79c8d3" + "734517": "395cb7", + "ffa64c": "d2e9ff", + "4a322c": "3e1f18", + "404040": "250860", + "966858": "83726e", + "f8f8f8": "6e46a7", + "65483a": "644943", + "bfbfbf": "593097", + "8c8c8c": "411684", + "121212": "decaff", + "bdbdbd": "79c8d3" } -} - - - - - - - - - - - - - - - - - - - - - - - +} \ No newline at end of file diff --git a/public/images/pokemon/variant/back/697.json b/public/images/pokemon/variant/back/697.json index 392be597d2e..5c4c49c531b 100644 --- a/public/images/pokemon/variant/back/697.json +++ b/public/images/pokemon/variant/back/697.json @@ -1,32 +1,30 @@ { "1": { - "54434c":"4c3216", - "080808":"080808", - "fafafa":"dfdea7", - "cccccc":"cbbe8c", - "964b1c":"5e0b0b", - "f19d5a":"b52424", - "bf7545":"971c1c", - "50131e":"0b241e", - "963e4e":"285234", - "722533":"153626", - "9f9d98":"ad8c63", - "35272e":"36282f", - "584650":"4f3417" + "54434c": "4c3216", + "fafafa": "dfdea7", + "cccccc": "cbbe8c", + "964b1c": "5e0b0b", + "f19d5a": "b52424", + "bf7545": "971c1c", + "50131e": "0b241e", + "963e4e": "285234", + "722533": "153626", + "9f9d98": "ad8c63", + "35272e": "36282f", + "584650": "4f3417" }, "2": { - "54434c":"170c25", - "080808":"080808", - "fafafa":"4b2e64", - "cccccc":"33214f", - "964b1c":"9d5390", - "f19d5a":"f4dbf6", - "bf7545":"ce7ecc", - "50131e":"52352f", - "963e4e":"ab9b97", - "722533":"83726e", - "9f9d98":"26173b", - "35272e":"a15593", - "584650":"cc7cc9" + "54434c": "170c25", + "fafafa": "4b2e64", + "cccccc": "33214f", + "964b1c": "9d5390", + "f19d5a": "f4dbf6", + "bf7545": "ce7ecc", + "50131e": "52352f", + "963e4e": "ab9b97", + "722533": "83726e", + "9f9d98": "26173b", + "35272e": "a15593", + "584650": "cc7cc9" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/back/698.json b/public/images/pokemon/variant/back/698.json index 48a717ac503..e47f88780ac 100644 --- a/public/images/pokemon/variant/back/698.json +++ b/public/images/pokemon/variant/back/698.json @@ -5,13 +5,10 @@ "fff2b2": "9bffa9", "537180": "b04f4b", "a6e1ff": "efab87", - "101010": "101010", "85b4cc": "cf755d", "217aa6": "7f99e1", "30b2f2": "b5dcff", - "fdfdfd": "fdfdfd", - "c0c0c0": "d7cca0", - "cacaca": "cacaca" + "c0c0c0": "d7cca0" }, "2": { "b3747e": "c452a6", @@ -19,12 +16,9 @@ "fff2b2": "eb88b9", "537180": "392d65", "a6e1ff": "936daa", - "101010": "101010", "85b4cc": "654a8a", "217aa6": "efaa51", "30b2f2": "ffd169", - "fdfdfd": "fdfdfd", - "c0c0c0": "282747", - "cacaca": "cacaca" + "c0c0c0": "282747" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/699.json b/public/images/pokemon/variant/back/699.json index aa7a63c04c6..34be21e1ec5 100644 --- a/public/images/pokemon/variant/back/699.json +++ b/public/images/pokemon/variant/back/699.json @@ -10,8 +10,6 @@ "657dac": "c44f5d", "ffffff": "ffeac0", "4e568b": "a03c58", - "101010": "101010", - "f8f8f8": "f8f8f8", "3d8eb6": "12545e", "53c5ff": "1c7376", "94b7bd": "d3a47b", @@ -31,8 +29,6 @@ "657dac": "2f4978", "ffffff": "bae8ff", "4e568b": "243369", - "101010": "101010", - "f8f8f8": "f8f8f8", "3d8eb6": "852d6b", "53c5ff": "ab467e", "94b7bd": "261e44", diff --git a/public/images/pokemon/variant/back/700.json b/public/images/pokemon/variant/back/700.json index a7d41e68dd6..129e418ea69 100644 --- a/public/images/pokemon/variant/back/700.json +++ b/public/images/pokemon/variant/back/700.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "8a2843": "452f89", "235a99": "a63071", "d85a7a": "996cd2", @@ -13,7 +12,6 @@ "a88d8c": "8c8fa8" }, "2": { - "101010": "101010", "8a2843": "0e6134", "235a99": "900d1b", "d85a7a": "5dae7d", diff --git a/public/images/pokemon/variant/back/702.json b/public/images/pokemon/variant/back/702.json index 1c19fa48122..81e527f87bd 100644 --- a/public/images/pokemon/variant/back/702.json +++ b/public/images/pokemon/variant/back/702.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "4d4d4d": "6789b3", "262626": "2a3b5e", "735c2e": "a53c42", @@ -9,7 +8,6 @@ "997a3d": "c9685f" }, "2": { - "101010": "101010", "4d4d4d": "197870", "262626": "072d38", "735c2e": "1e0e27", diff --git a/public/images/pokemon/variant/back/703.json b/public/images/pokemon/variant/back/703.json index 951c8b311b9..f5dc35b243e 100644 --- a/public/images/pokemon/variant/back/703.json +++ b/public/images/pokemon/variant/back/703.json @@ -5,9 +5,7 @@ "6994bf": "e67c37", "8cc6ff": "ffa633", "8f8fb3": "4d496b", - "f8f8f8": "f8f8f8", "666680": "37344e", - "101010": "101010", "595959": "e6ac60", "bfbfbf": "ffd3a1", "f2f2f2": "ffeed6" @@ -20,7 +18,6 @@ "8f8fb3": "e4cdf9", "f8f8f8": "ffe2ee", "666680": "cca1db", - "101010": "101010", "595959": "5a3d84", "bfbfbf": "8359a7", "f2f2f2": "a473bf" diff --git a/public/images/pokemon/variant/back/704.json b/public/images/pokemon/variant/back/704.json index be52dd71a83..f293f542288 100644 --- a/public/images/pokemon/variant/back/704.json +++ b/public/images/pokemon/variant/back/704.json @@ -4,7 +4,6 @@ "4d454d": "8a2166", "f2daf2": "fbb3d2", "bfacbf": "c77da0", - "101010": "101010", "66cc52": "348fa6", "4d993d": "185d83", "8f7db3": "7d699d", @@ -16,7 +15,6 @@ "4d454d": "134557", "f2daf2": "92d8c8", "bfacbf": "5f8d86", - "101010": "101010", "66cc52": "bb7935", "4d993d": "a34205", "8f7db3": "2f5d6f", diff --git a/public/images/pokemon/variant/back/705.json b/public/images/pokemon/variant/back/705.json index 7d0e856616d..603dc58909d 100644 --- a/public/images/pokemon/variant/back/705.json +++ b/public/images/pokemon/variant/back/705.json @@ -6,7 +6,6 @@ "bfacbf": "ca719c", "647543": "0c5474", "98bd51": "197497", - "101010": "101010", "665980": "4e4094", "8f7db3": "8b69c3", "b8a1e5": "c7a1e5" @@ -18,7 +17,6 @@ "bfacbf": "4e9b8f", "647543": "842401", "98bd51": "a34205", - "101010": "101010", "665980": "274159", "8f7db3": "2f667c", "b8a1e5": "4a9699" diff --git a/public/images/pokemon/variant/back/706.json b/public/images/pokemon/variant/back/706.json index ff21462bf22..cc05bcd250d 100644 --- a/public/images/pokemon/variant/back/706.json +++ b/public/images/pokemon/variant/back/706.json @@ -4,8 +4,6 @@ "e6d4e7": "f1a4c5", "4d454d": "8a2166", "bfacbf": "cd7aa1", - "f8f8f8": "f8f8f8", - "101010": "101010", "998a99": "b24c86", "307922": "0c5474", "46b030": "197497", @@ -21,8 +19,6 @@ "e6d4e7": "9cead8", "4d454d": "0e4043", "bfacbf": "559b91", - "f8f8f8": "f8f8f8", - "101010": "101010", "998a99": "2b736f", "307922": "842401", "46b030": "a34205", diff --git a/public/images/pokemon/variant/back/708.json b/public/images/pokemon/variant/back/708.json index e3ffaa6e659..700c6e16135 100644 --- a/public/images/pokemon/variant/back/708.json +++ b/public/images/pokemon/variant/back/708.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "2b303c": "722023", "494e5b": "a14743", "56372f": "36384f", @@ -10,7 +9,6 @@ "775943": "575a6a" }, "2": { - "101010": "101010", "2b303c": "6f5f80", "494e5b": "9c92a4", "56372f": "31161d", diff --git a/public/images/pokemon/variant/back/709.json b/public/images/pokemon/variant/back/709.json index 51b5ea55f48..b2327699b93 100644 --- a/public/images/pokemon/variant/back/709.json +++ b/public/images/pokemon/variant/back/709.json @@ -2,7 +2,6 @@ "1": { "4d361f": "36384f", "174d3b": "361f1b", - "101010": "101010", "cc8f52": "7c808c", "36b389": "907f76", "268062": "4d362e", @@ -13,7 +12,6 @@ "2": { "4d361f": "47232b", "174d3b": "761d52", - "101010": "101010", "cc8f52": "7e5658", "36b389": "da7ea8", "268062": "a94079", diff --git a/public/images/pokemon/variant/back/71.json b/public/images/pokemon/variant/back/71.json index bc672f7bcf7..bc7e00d221e 100644 --- a/public/images/pokemon/variant/back/71.json +++ b/public/images/pokemon/variant/back/71.json @@ -2,7 +2,6 @@ "1": { "635229": "4f0537", "a57b31": "781649", - "000000": "000000", "4aa57b": "e28e58", "10633a": "b0552e", "8cc57b": "e28e58", @@ -12,8 +11,6 @@ "ef8c52": "b352a5", "efd66b": "b6514d", "f7ef94": "d37763", - "bdc5c5": "bdc5c5", - "ffffff": "ffffff", "b5e69c": "f9be81" }, "2": { @@ -29,8 +26,6 @@ "ef8c52": "3250c7", "efd66b": "6880c2", "f7ef94": "7998d3", - "bdc5c5": "bdc5c5", - "ffffff": "ffffff", "b5e69c": "cfe3e5" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/710.json b/public/images/pokemon/variant/back/710.json index 63492302b69..443197883f6 100644 --- a/public/images/pokemon/variant/back/710.json +++ b/public/images/pokemon/variant/back/710.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "664e42": "72a966", "332721": "213a22", "4d3b32": "478243", @@ -9,7 +8,6 @@ "d98777": "404040" }, "2": { - "101010": "101010", "664e42": "425947", "332721": "0e2218", "4d3b32": "2a4031", diff --git a/public/images/pokemon/variant/back/711.json b/public/images/pokemon/variant/back/711.json index dfa0005fa7d..b75b1846b79 100644 --- a/public/images/pokemon/variant/back/711.json +++ b/public/images/pokemon/variant/back/711.json @@ -1,6 +1,5 @@ { "0": { - "070707": "070707", "605347": "593a59", "34281d": "291431", "4a4127": "311835", @@ -13,7 +12,6 @@ "c99c6b": "b98e55" }, "1": { - "070707": "070707", "605347": "353631", "34281d": "0f1014", "4a4127": "202423", @@ -26,7 +24,6 @@ "c99c6b": "baa78d" }, "2": { - "070707": "070707", "605347": "e56146", "34281d": "5e0b09", "4a4127": "ad3b33", diff --git a/public/images/pokemon/variant/back/712.json b/public/images/pokemon/variant/back/712.json index 59ad2436866..6a9f45ffebd 100644 --- a/public/images/pokemon/variant/back/712.json +++ b/public/images/pokemon/variant/back/712.json @@ -4,11 +4,7 @@ "58647b": "bf566d", "b3eaf8": "ffbfda", "a5c4d2": "f29eb3", - "e8f5fe": "ffebf2", - "101010": "101010", - "bfbfbf": "bfbfbf", - "737373": "737373", - "f8f8f8": "f8f8f8" + "e8f5fe": "ffebf2" }, "2": { "719aa9": "cc7b1e", @@ -16,7 +12,6 @@ "b3eaf8": "fcc95c", "a5c4d2": "e69e2b", "e8f5fe": "fff2ad", - "101010": "101010", "bfbfbf": "6cb3ae", "737373": "2c7a75", "f8f8f8": "b9f2ee" diff --git a/public/images/pokemon/variant/back/713.json b/public/images/pokemon/variant/back/713.json index 61977f60470..03f24a2226d 100644 --- a/public/images/pokemon/variant/back/713.json +++ b/public/images/pokemon/variant/back/713.json @@ -6,8 +6,7 @@ "bff4ff": "ffbfda", "335980": "994255", "f2ffff": "ffebf2", - "77b8d9": "d97389", - "101010": "101010" + "77b8d9": "d97389" }, "2": { "608cba": "a8632a", @@ -16,7 +15,6 @@ "bff4ff": "fcc95c", "335980": "824628", "f2ffff": "fff2ad", - "77b8d9": "cc7b1e", - "101010": "101010" + "77b8d9": "cc7b1e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/714.json b/public/images/pokemon/variant/back/714.json index c2082c3933b..6eed2094909 100644 --- a/public/images/pokemon/variant/back/714.json +++ b/public/images/pokemon/variant/back/714.json @@ -2,7 +2,6 @@ "1": { "633674": "500a25", "b459d5": "a42c54", - "101010": "101010", "85489b": "8e1d4b", "3f3f3f": "202558", "756175": "43167f", @@ -13,7 +12,6 @@ "2": { "633674": "5f151c", "b459d5": "c24430", - "101010": "101010", "85489b": "882c27", "3f3f3f": "5b1922", "756175": "945d56", diff --git a/public/images/pokemon/variant/back/715.json b/public/images/pokemon/variant/back/715.json index 7ca4d81e5dc..0d07fb84711 100644 --- a/public/images/pokemon/variant/back/715.json +++ b/public/images/pokemon/variant/back/715.json @@ -1,38 +1,32 @@ { - "1": { - "101010": "101010", - "287366": "731338", - "3aa694": "a42c54", - "404040": "542f98", - "343434": "3e107b", - "252525": "260447", - "4cd9c1": "d04b6c", - "595959": "7a5ccc", - "6a3f73": "0f103c", - "737373": "563d8f", - "801a1a": "801a1a", - "8e5499": "202558", - "bd70cc": "2f386b", - "bfbfbf": "ab83dd", - "e52e2e": "e52e2e", - "f8f8f8": "d5bdec" - }, - "2": { - "101010": "101010", - "287366": "832714", - "3aa694": "b8552c", - "404040": "b18373", - "343434": "906152", - "252525": "6c3f39", - "4cd9c1": "dd834c", - "595959": "e2c7b5", - "6a3f73": "3b0c18", - "737373": "280911", - "801a1a": "801a1a", - "8e5499": "5b1922", - "bd70cc": "7c2928", - "bfbfbf": "43191e", - "e52e2e": "e52e2e", - "f8f8f8": "5a2a2b" - } + "1": { + "287366": "731338", + "3aa694": "a42c54", + "404040": "542f98", + "343434": "3e107b", + "252525": "260447", + "4cd9c1": "d04b6c", + "595959": "7a5ccc", + "6a3f73": "0f103c", + "737373": "563d8f", + "8e5499": "202558", + "bd70cc": "2f386b", + "bfbfbf": "ab83dd", + "f8f8f8": "d5bdec" + }, + "2": { + "287366": "832714", + "3aa694": "b8552c", + "404040": "b18373", + "343434": "906152", + "252525": "6c3f39", + "4cd9c1": "dd834c", + "595959": "e2c7b5", + "6a3f73": "3b0c18", + "737373": "280911", + "8e5499": "5b1922", + "bd70cc": "7c2928", + "bfbfbf": "43191e", + "f8f8f8": "5a2a2b" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/716-active.json b/public/images/pokemon/variant/back/716-active.json index 1b3ad588fce..fc83877da6c 100644 --- a/public/images/pokemon/variant/back/716-active.json +++ b/public/images/pokemon/variant/back/716-active.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "ccbd8f": "c27f52", "345090": "75127d", "807659": "7e4428", @@ -16,8 +15,6 @@ "c37732": "36c1a4", "547fe9": "b33ccd", "dd3238": "2e73b1", - "5959b3": "5959b3", - "9191f2": "9191f2", "243659": "132b1b", "3d5c99": "1e3824", "ffecb2": "f0c197", @@ -27,7 +24,6 @@ "5c8ae5": "324c37" }, "2": { - "101010": "101010", "ccbd8f": "3b2328", "345090": "93221f", "807659": "210f14", @@ -43,8 +39,6 @@ "c37732": "7445f1", "547fe9": "d75343", "dd3238": "e445d0", - "5959b3": "5959b3", - "9191f2": "9191f2", "243659": "37134c", "3d5c99": "643071", "ffecb2": "553639", diff --git a/public/images/pokemon/variant/back/716-neutral.json b/public/images/pokemon/variant/back/716-neutral.json index 8d70b9ee2ca..f15d9fc64dc 100644 --- a/public/images/pokemon/variant/back/716-neutral.json +++ b/public/images/pokemon/variant/back/716-neutral.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "84b4ce": "ac8781", "364566": "603f3c", "c0e0ec": "bfa19a", @@ -12,7 +11,6 @@ "5c8ae5": "324c37" }, "2": { - "101010": "101010", "84b4ce": "42283b", "364566": "230d1e", "c0e0ec": "613e56", diff --git a/public/images/pokemon/variant/back/717.json b/public/images/pokemon/variant/back/717.json index 1104b74cf71..615b092ba9c 100644 --- a/public/images/pokemon/variant/back/717.json +++ b/public/images/pokemon/variant/back/717.json @@ -2,7 +2,6 @@ "1": { "4d4d4d": "816450", "b3b3b3": "dbd4cd", - "101010": "101010", "737373": "c1aa9a", "242626": "0f0b2c", "8c8c8c": "cbbfb5", diff --git a/public/images/pokemon/variant/back/720-unbound.json b/public/images/pokemon/variant/back/720-unbound.json index 61c6c599b5d..b8764c786d3 100644 --- a/public/images/pokemon/variant/back/720-unbound.json +++ b/public/images/pokemon/variant/back/720-unbound.json @@ -8,7 +8,6 @@ "7b91a3": "958672", "925b0f": "414a79", "2c2c2c": "3e162b", - "010101": "010101", "dba423": "9ca7d5", "e0ca61": "becef5", "4f4f4f": "684252" @@ -22,7 +21,6 @@ "7b91a3": "997392", "925b0f": "853015", "2c2c2c": "632373", - "010101": "010101", "dba423": "e2885a", "e0ca61": "ffc26a", "4f4f4f": "a947b4" @@ -36,7 +34,6 @@ "7b91a3": "5c827d", "925b0f": "682b16", "2c2c2c": "1c2433", - "010101": "010101", "dba423": "b05d2d", "e0ca61": "ed9b42", "4f4f4f": "304757" diff --git a/public/images/pokemon/variant/back/720.json b/public/images/pokemon/variant/back/720.json index 49f525d94b0..8d53be6f7f9 100644 --- a/public/images/pokemon/variant/back/720.json +++ b/public/images/pokemon/variant/back/720.json @@ -8,7 +8,6 @@ "807126": "414a79", "ffe14c": "c5deec", "fdfdfd": "f3feff", - "101010": "101010", "ccb43d": "9cafdd", "b8b8cc": "cc9b3c", "dadaf2": "ffdb73" @@ -22,7 +21,6 @@ "807126": "853015", "ffe14c": "ffc26a", "fdfdfd": "fff0e8", - "101010": "101010", "ccb43d": "eb7037", "b8b8cc": "ca79bd", "dadaf2": "f7bae9" @@ -36,7 +34,6 @@ "807126": "682b16", "ffe14c": "ffc26a", "fdfdfd": "ffffde", - "101010": "101010", "ccb43d": "b05d2d", "b8b8cc": "9e8fbb", "dadaf2": "d5cce5" diff --git a/public/images/pokemon/variant/back/728.json b/public/images/pokemon/variant/back/728.json index fb17e2c119e..cd73143937a 100644 --- a/public/images/pokemon/variant/back/728.json +++ b/public/images/pokemon/variant/back/728.json @@ -7,8 +7,6 @@ "436cbf": "009469", "b3627d": "e54c41", "6c90d9": "14af82", - "101010": "101010", - "808080": "808080", "bfbfbf": "c2beb4", "314f8c": "006355", "639ba6": "858d7d", @@ -24,8 +22,6 @@ "436cbf": "a6213f", "b3627d": "a7225c", "6c90d9": "be294a", - "101010": "101010", - "808080": "808080", "bfbfbf": "bfb4b9", "314f8c": "770f29", "639ba6": "b88389", diff --git a/public/images/pokemon/variant/back/729.json b/public/images/pokemon/variant/back/729.json index c4d13768085..27c3cf46560 100644 --- a/public/images/pokemon/variant/back/729.json +++ b/public/images/pokemon/variant/back/729.json @@ -1,6 +1,5 @@ { "1": { - "808080": "808080", "f8f8f8": "fff6e2", "bfbfbf": "c2beb4", "8dafaf": "ff989e", @@ -9,13 +8,11 @@ "326187": "006b65", "2d8ec4": "009a88", "1eb9ee": "0ccfa2", - "101010": "101010", "733f50": "bb402f", "e57ea1": "ff9384", "b3627d": "fb6051" }, "2": { - "808080": "808080", "f8f8f8": "f5edee", "bfbfbf": "bfb4b9", "8dafaf": "b681a6", @@ -23,10 +20,6 @@ "bad8d8": "deabce", "326187": "5a141b", "2d8ec4": "952c3f", - "1eb9ee": "c6496f", - "101010": "101010", - "733f50": "733f50", - "e57ea1": "e57ea1", - "b3627d": "b3627d" + "1eb9ee": "c6496f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/730.json b/public/images/pokemon/variant/back/730.json index eec815b0572..9ac00923a7a 100644 --- a/public/images/pokemon/variant/back/730.json +++ b/public/images/pokemon/variant/back/730.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "8d3f4a": "a62c20", "c76374": "e54c41", "0e6792": "b54f5f", @@ -18,11 +17,9 @@ "c0bdc1": "beaac0", "aac7e6": "ea7c5b", "f8f8f8": "fff2d4", - "faf8f8": "f1e8f1", - "fef8f8": "fef8f8" + "faf8f8": "f1e8f1" }, "2": { - "101010": "101010", "8d3f4a": "1d1638", "c76374": "391e62", "0e6792": "500518", @@ -40,7 +37,6 @@ "c0bdc1": "c0b4a5", "aac7e6": "e9a5c0", "f8f8f8": "f5edee", - "faf8f8": "f5f3e3", - "fef8f8": "fef8f8" + "faf8f8": "f5f3e3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/734.json b/public/images/pokemon/variant/back/734.json index 0a47457f284..f398dec7ae5 100644 --- a/public/images/pokemon/variant/back/734.json +++ b/public/images/pokemon/variant/back/734.json @@ -6,7 +6,6 @@ "ba836d": "35576b", "db9f4f": "907e82", "9c5b50": "2a3f52", - "080808": "080808", "413d38": "523716" }, "2": { @@ -16,7 +15,6 @@ "ba836d": "a69c98", "db9f4f": "362e2e", "9c5b50": "786a66", - "080808": "080808", "413d38": "464a4d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/735.json b/public/images/pokemon/variant/back/735.json index ed9354a9ee8..e87a187b31f 100644 --- a/public/images/pokemon/variant/back/735.json +++ b/public/images/pokemon/variant/back/735.json @@ -3,7 +3,6 @@ "84521a": "462f39", "ecd96c": "b99d95", "b6973a": "7a6a6d", - "101010": "101010", "af754e": "354c6b", "8d473d": "2a3252", "602c24": "03102d", @@ -14,7 +13,6 @@ "84521a": "241b1b", "ecd96c": "4d4242", "b6973a": "362e2e", - "101010": "101010", "af754e": "ada5a4", "8d473d": "90827e", "602c24": "524b4b", diff --git a/public/images/pokemon/variant/back/747.json b/public/images/pokemon/variant/back/747.json index 946fd0fa0aa..c98a0cd804f 100644 --- a/public/images/pokemon/variant/back/747.json +++ b/public/images/pokemon/variant/back/747.json @@ -4,7 +4,6 @@ "f9e07d": "e3e2ff", "753e7b": "9b6459", "ba8dbe": "edd5ca", - "101010": "101010", "9265a3": "7d2671", "335780": "490a3c", "dcafd6": "a21f90", @@ -16,7 +15,6 @@ "f9e07d": "ffebed", "753e7b": "113c3a", "ba8dbe": "2b6157", - "101010": "101010", "9265a3": "e5214a", "335780": "12484e", "dcafd6": "ff3f5a", diff --git a/public/images/pokemon/variant/back/748.json b/public/images/pokemon/variant/back/748.json index 80953670173..c486f245f2e 100644 --- a/public/images/pokemon/variant/back/748.json +++ b/public/images/pokemon/variant/back/748.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "943732": "5c075b", "f28c4f": "c639bd", "e25025": "a21f90", @@ -11,11 +10,9 @@ "455b85": "892e20", "711a6a": "81463e", "b7429a": "d29784", - "d76fa5": "edd5ca", - "171539": "171539" + "d76fa5": "edd5ca" }, "2": { - "101010": "101010", "943732": "ac063c", "f28c4f": "ff3f5a", "e25025": "e12350", @@ -26,7 +23,6 @@ "455b85": "186443", "711a6a": "082b29", "b7429a": "1c524b", - "d76fa5": "2b6157", - "171539": "171539" + "d76fa5": "2b6157" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/751.json b/public/images/pokemon/variant/back/751.json index 40dc82691e9..60f85c366f2 100644 --- a/public/images/pokemon/variant/back/751.json +++ b/public/images/pokemon/variant/back/751.json @@ -3,7 +3,6 @@ "8895ac": "ae504b", "e8e8ea": "ffc8d1", "69670e": "3a112f", - "fcfcfc": "fcfcfc", "878330": "431632", "9bad34": "4e1f42", "cedf42": "673252", @@ -11,22 +10,18 @@ "79c4d4": "f3bd8a", "aed7ee": "fcfcfc", "516a7b": "812b3e", - "5e9cbd": "cc7854", - "101010": "101010" + "5e9cbd": "cc7854" }, "2": { "8895ac": "ea9b43", "e8e8ea": "f1dcc2", "69670e": "263756", - "fcfcfc": "fcfcfc", "878330": "37619a", "9bad34": "4980ac", "cedf42": "72add9", "3c4459": "73312f", "79c4d4": "3b5373", - "aed7ee": "aed7ee", "516a7b": "ba5c2c", - "5e9cbd": "253155", - "101010": "101010" + "5e9cbd": "253155" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/752.json b/public/images/pokemon/variant/back/752.json index 19976c0f3ec..26e7cf2c614 100644 --- a/public/images/pokemon/variant/back/752.json +++ b/public/images/pokemon/variant/back/752.json @@ -3,8 +3,6 @@ "426b84": "7c3b51", "b7d7e6": "ffc8d1", "81afc9": "d187a0", - "fdfdfd": "fdfdfd", - "101010": "101010", "69670e": "3a112f", "9bad34": "4e1f42", "cedf42": "673252", @@ -19,8 +17,6 @@ "426b84": "55506a", "b7d7e6": "dce7ee", "81afc9": "a7a2bc", - "fdfdfd": "fdfdfd", - "101010": "101010", "69670e": "263756", "9bad34": "4980ac", "cedf42": "72add9", diff --git a/public/images/pokemon/variant/back/753.json b/public/images/pokemon/variant/back/753.json index d7f33035127..670cdc102c3 100644 --- a/public/images/pokemon/variant/back/753.json +++ b/public/images/pokemon/variant/back/753.json @@ -3,28 +3,22 @@ "234028": "2e1643", "5ba668": "4e2c62", "468050": "3e2253", - "101010": "101010", "549977": "1b3822", "315945": "0e2616", "69bf94": "27452c", "d98d9a": "a55c36", "ffbfca": "b47145", - "803340": "682c16", - "f8f8f8": "f8f8f8", - "bfbfbf": "bfbfbf" + "803340": "682c16" }, "2": { "234028": "531034", "5ba668": "ce54b0", "468050": "9b2d76", - "101010": "101010", "549977": "5a215a", "315945": "441342", "69bf94": "6e3472", "d98d9a": "263b83", "ffbfca": "3454a5", - "803340": "0b1d4e", - "f8f8f8": "f8f8f8", - "bfbfbf": "bfbfbf" + "803340": "0b1d4e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/755.json b/public/images/pokemon/variant/back/755.json index 55f19f27f11..9574af8ad8d 100644 --- a/public/images/pokemon/variant/back/755.json +++ b/public/images/pokemon/variant/back/755.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "7a3f7a": "451233", "e07c8d": "d64742", "f1b6c8": "e76d5b", @@ -16,7 +15,6 @@ "b5cc91": "866eaf" }, "2": { - "101010": "101010", "7a3f7a": "1d225e", "e07c8d": "7ae7c9", "f1b6c8": "b0ffe1", diff --git a/public/images/pokemon/variant/back/756.json b/public/images/pokemon/variant/back/756.json index 7df75eb0186..40daf267d3b 100644 --- a/public/images/pokemon/variant/back/756.json +++ b/public/images/pokemon/variant/back/756.json @@ -6,7 +6,6 @@ "9867ad": "b64a46", "b591c4": "e76d5b", "cbd59f": "e5aff3", - "101010": "101010", "764b67": "451233", "d08aab": "6c344f", "f5bcd8": "904b66", @@ -22,7 +21,6 @@ "9867ad": "2a2f55", "b591c4": "3a4b75", "cbd59f": "dffffa", - "101010": "101010", "764b67": "0d7a66", "d08aab": "81e3c9", "f5bcd8": "98f5d1", diff --git a/public/images/pokemon/variant/back/761.json b/public/images/pokemon/variant/back/761.json index 4b74180dff7..330ad1a112d 100644 --- a/public/images/pokemon/variant/back/761.json +++ b/public/images/pokemon/variant/back/761.json @@ -2,19 +2,14 @@ "1": { "476629": "215e59", "8fcc52": "70d2e1", - "101010": "101010", "6b993d": "398793", "80334d": "251936", "e55c8a": "9f86e4", - "b3476b": "7e5cdb", - "bfbfbf": "bfbfbf", - "737373": "737373", - "f8f8f8": "f8f8f8" + "b3476b": "7e5cdb" }, "2": { "476629": "3e0a11", "8fcc52": "86232e", - "101010": "101010", "6b993d": "5a0a16", "80334d": "0f0f0f", "e55c8a": "2c574a", diff --git a/public/images/pokemon/variant/back/762.json b/public/images/pokemon/variant/back/762.json index ac231760921..7e194693d2a 100644 --- a/public/images/pokemon/variant/back/762.json +++ b/public/images/pokemon/variant/back/762.json @@ -2,12 +2,8 @@ "1": { "446328": "215e59", "96c853": "70d2e1", - "0f0f0f": "0f0f0f", "659344": "398793", "ebe130": "e66556", - "fdfdfd": "fdfdfd", - "c7b8c4": "c7b8c4", - "72585f": "72585f", "962354": "45366e", "f26284": "7e5cdb", "6a1533": "251936", @@ -16,7 +12,6 @@ "2": { "446328": "3e0a11", "96c853": "86232e", - "0f0f0f": "0f0f0f", "659344": "5a0a16", "ebe130": "5c0505", "fdfdfd": "e4c59e", diff --git a/public/images/pokemon/variant/back/763.json b/public/images/pokemon/variant/back/763.json index 614731b9ad7..91c993c1047 100644 --- a/public/images/pokemon/variant/back/763.json +++ b/public/images/pokemon/variant/back/763.json @@ -8,10 +8,6 @@ "cc4876": "674dad", "96c853": "70d2e1", "659344": "398793", - "0f0f0f": "0f0f0f", - "72585f": "72585f", - "fdfdfd": "fdfdfd", - "c7b8c4": "c7b8c4", "ce466b": "9f86e4" }, "2": { @@ -23,8 +19,6 @@ "cc4876": "254536", "96c853": "86232e", "659344": "5a0a16", - "0f0f0f": "0f0f0f", - "72585f": "72585f", "fdfdfd": "e4c59e", "c7b8c4": "af8260", "ce466b": "2c574a" diff --git a/public/images/pokemon/variant/back/767.json b/public/images/pokemon/variant/back/767.json index 74479ed25ec..405506f716f 100644 --- a/public/images/pokemon/variant/back/767.json +++ b/public/images/pokemon/variant/back/767.json @@ -1,7 +1,6 @@ { "1": { "46334f": "844008", - "080808": "080808", "a65e97": "e8a92a", "713e70": "c86910", "3f5252": "202733", @@ -12,7 +11,6 @@ }, "2": { "46334f": "091b52", - "080808": "080808", "a65e97": "2849ac", "713e70": "1c306d", "3f5252": "3d105f", diff --git a/public/images/pokemon/variant/back/768.json b/public/images/pokemon/variant/back/768.json index 4f2bccd4687..def73d43a89 100644 --- a/public/images/pokemon/variant/back/768.json +++ b/public/images/pokemon/variant/back/768.json @@ -4,7 +4,6 @@ "c8e1cd": "6e6d6d", "546b57": "202733", "81b68e": "494950", - "101010": "101010", "842886": "c85710", "cc5fcf": "ff7e2c", "7a4952": "844008", @@ -20,15 +19,11 @@ "c8e1cd": "2849ac", "546b57": "091b52", "81b68e": "1c306d", - "101010": "101010", "842886": "5722a6", "cc5fcf": "8b51e1", "7a4952": "3d105f", "9a6982": "452772", "bd95a8": "844caf", - "498f6c": "8cdded", - "5c635e": "5c635e", - "2f3330": "2f3330", - "404843": "404843" + "498f6c": "8cdded" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/77.json b/public/images/pokemon/variant/back/77.json index 657eb67ffeb..be654bab991 100644 --- a/public/images/pokemon/variant/back/77.json +++ b/public/images/pokemon/variant/back/77.json @@ -9,8 +9,6 @@ "733131": "2b2333", "c59c6b": "948eb2", "ffefce": "ffffff", - "ffffff": "ffffff", - "000000": "000000", "424a84": "191933", "c5c5d6": "514766", "737ba5": "312c49" @@ -25,8 +23,6 @@ "733131": "03060c", "c59c6b": "191933", "ffefce": "514766", - "ffffff": "ffffff", - "000000": "000000", "424a84": "59497a", "c5c5d6": "b5b5e2", "737ba5": "857cb2" diff --git a/public/images/pokemon/variant/back/771.json b/public/images/pokemon/variant/back/771.json index 0d2997ef79a..f2260e4c6b7 100644 --- a/public/images/pokemon/variant/back/771.json +++ b/public/images/pokemon/variant/back/771.json @@ -2,9 +2,7 @@ "1": { "73223d": "570a00", "d94174": "de884b", - "101010": "101010", "992e52": "c95340", - "1a1a1a": "1a1a1a", "404040": "731b33", "262626": "4a1a30", "595959": "bd5e49", @@ -14,9 +12,7 @@ "2": { "73223d": "b94114", "d94174": "ead059", - "101010": "101010", "992e52": "db7b43", - "1a1a1a": "1a1a1a", "404040": "dacece", "262626": "b8a197", "595959": "1c1c2d", diff --git a/public/images/pokemon/variant/back/772.json b/public/images/pokemon/variant/back/772.json index d367e8f88f7..972da787a08 100644 --- a/public/images/pokemon/variant/back/772.json +++ b/public/images/pokemon/variant/back/772.json @@ -2,7 +2,6 @@ "1": { "454f55": "232843", "92a6a9": "889db1", - "080808": "080808", "6b777e": "526085", "642515": "7e4f36", "c55e3a": "eed8a1", @@ -23,7 +22,6 @@ "2": { "454f55": "18182a", "92a6a9": "65657c", - "080808": "080808", "6b777e": "3b3b51", "642515": "444961", "c55e3a": "c1cfd8", diff --git a/public/images/pokemon/variant/back/773.json b/public/images/pokemon/variant/back/773.json index 4b76892c9db..5d79c355815 100644 --- a/public/images/pokemon/variant/back/773.json +++ b/public/images/pokemon/variant/back/773.json @@ -7,7 +7,6 @@ "d3d7df": "98a8be", "e3e6ec": "bdd1e5", "bcbbc5": "788fb5", - "080808": "080808", "3f3b50": "1e172a", "aba7bc": "493d55", "483c39": "3a2d53", @@ -30,11 +29,8 @@ "d3d7df": "b4bcc4", "e3e6ec": "444455", "bcbbc5": "242433", - "080808": "080808", - "3f3b50": "3f3b50", "aba7bc": "dbd8e8", "483c39": "778894", - "e9eaf8": "e9eaf8", "e64f5e": "98ce58", "1d1845": "41434e", "0073bf": "6a6c75", diff --git a/public/images/pokemon/variant/back/776.json b/public/images/pokemon/variant/back/776.json index e35f08c7c5b..fe8b05aad96 100644 --- a/public/images/pokemon/variant/back/776.json +++ b/public/images/pokemon/variant/back/776.json @@ -3,7 +3,6 @@ "635a4e": "5a4c65", "969678": "887c97", "ccccad": "b4b8c8", - "080808": "080808", "71171a": "210920", "b7282c": "3f2350", "e74545": "4f3d66", @@ -18,7 +17,6 @@ "635a4e": "4c4276", "969678": "7983c1", "ccccad": "adc4e9", - "080808": "080808", "71171a": "976b65", "b7282c": "e1bf9f", "e74545": "faeecd", diff --git a/public/images/pokemon/variant/back/777.json b/public/images/pokemon/variant/back/777.json index ab44e252c60..156a0b4c9bc 100644 --- a/public/images/pokemon/variant/back/777.json +++ b/public/images/pokemon/variant/back/777.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "ffea80": "dec2f0", "ccb852": "ac8fbb", "b3b3b3": "8e71cd", @@ -8,11 +7,9 @@ "808080": "645393", "73593f": "ae428a", "bfbfbf": "d0dadb", - "f8f8f8": "f8f8f8", "595959": "444147" }, "2": { - "101010": "101010", "ffea80": "d65d3c", "ccb852": "7b3c26", "b3b3b3": "4cb568", diff --git a/public/images/pokemon/variant/back/778-busted.json b/public/images/pokemon/variant/back/778-busted.json index 70c365d1ff7..ad19c88cd92 100644 --- a/public/images/pokemon/variant/back/778-busted.json +++ b/public/images/pokemon/variant/back/778-busted.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "404040": "2d1818", "b3a76b": "8d4f3d", "f2e291": "aa6f46", diff --git a/public/images/pokemon/variant/back/778-disguised.json b/public/images/pokemon/variant/back/778-disguised.json index 9b8340c7562..8e986e56ccc 100644 --- a/public/images/pokemon/variant/back/778-disguised.json +++ b/public/images/pokemon/variant/back/778-disguised.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "404040": "2d1818", "b3a76b": "8d4f3d", "f2e291": "aa6f46", @@ -19,4 +18,4 @@ "b37d47": "8eb5cd", "805933": "6d80a4" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/back/779.json b/public/images/pokemon/variant/back/779.json index f8bebbf1e1f..f3e9539edf2 100644 --- a/public/images/pokemon/variant/back/779.json +++ b/public/images/pokemon/variant/back/779.json @@ -2,7 +2,6 @@ "1": { "58295f": "a52121", "b75eb7": "f65656", - "101010": "101010", "834589": "c62c2c", "de5c8a": "602b7a", "314d8e": "667fb2", @@ -11,14 +10,11 @@ "5e9fc4": "94c5da", "93d3e1": "caefff", "cfae3f": "d65e5e", - "efe85f": "faa28c", - "fdfdfd": "fdfdfd", - "969696": "969696" + "efe85f": "faa28c" }, "2": { "58295f": "4545c4", "b75eb7": "8585ff", - "101010": "101010", "834589": "6666e2", "de5c8a": "dca032", "314d8e": "7878ca", @@ -27,8 +23,6 @@ "5e9fc4": "afafe1", "93d3e1": "eeeeff", "cfae3f": "2d2c43", - "efe85f": "454457", - "fdfdfd": "fdfdfd", - "969696": "969696" + "efe85f": "454457" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/78.json b/public/images/pokemon/variant/back/78.json index 44cfceafde4..25f9f1b388f 100644 --- a/public/images/pokemon/variant/back/78.json +++ b/public/images/pokemon/variant/back/78.json @@ -7,10 +7,8 @@ "8c5231": "65597f", "ffe6c5": "ffffff", "733131": "2b2333", - "000000": "000000", "efc58c": "cecee5", "c5946b": "948eb2", - "ffffff": "ffffff", "c5c5c5": "514766", "424a52": "191933", "737b84": "312c49" @@ -23,10 +21,8 @@ "8c5231": "090b16", "ffe6c5": "514766", "733131": "03060c", - "000000": "000000", "efc58c": "312c49", "c5946b": "191933", - "ffffff": "ffffff", "c5c5c5": "b5b5e2", "424a52": "59497a", "737b84": "857cb2" diff --git a/public/images/pokemon/variant/back/789.json b/public/images/pokemon/variant/back/789.json index e79ed8007b1..71b8ffb3355 100644 --- a/public/images/pokemon/variant/back/789.json +++ b/public/images/pokemon/variant/back/789.json @@ -3,41 +3,27 @@ "4e5cc7": "6a12dc", "169fda": "9255f2", "34eef8": "db34f8", - "fdfdfd": "fdfdfd", "422d66": "490f2c", - "101010": "101010", "503896": "64173e", - "9d5f00": "9d5f00", - "f8f229": "f8f229", - "283937": "283937", "8c49a9": "dc48a7", - "1484de": "1484de", - "34c3fa": "34c3fa", "e2629f": "f77247" }, "1": { "4e5cc7": "f6a42d", "169fda": "ffdf49", "34eef8": "fff695", - "fdfdfd": "fdfdfd", "422d66": "830000", - "101010": "101010", "503896": "eb5b2a", "9d5f00": "6a738f", "f8f229": "e5efff", "283937": "391c21", "8c49a9": "e52518", - "1484de": "1484de", - "34c3fa": "34c3fa", "e2629f": "ff4079" }, "2": { "4e5cc7": "3dc7e0", "169fda": "71ffd8", - "34eef8": "34eef8", - "fdfdfd": "fdfdfd", "422d66": "030038", - "101010": "101010", "503896": "007ecc", "9d5f00": "61061f", "f8f229": "c22741", diff --git a/public/images/pokemon/variant/back/79.json b/public/images/pokemon/variant/back/79.json index 4bec35f4691..961a48e4815 100644 --- a/public/images/pokemon/variant/back/79.json +++ b/public/images/pokemon/variant/back/79.json @@ -1,9 +1,5 @@ { "0": { - "6b6363": "6b6363", - "d6cece": "d6cece", - "101010": "101010", - "ffffff": "ffffff", "ffa5a5": "cebdff", "de637b": "846bbd", "ff8494": "ad94ff", @@ -11,14 +7,9 @@ "7b2131": "52397b", "8c5a19": "8c6b10", "ffe6b5": "fff7b5", - "dea563": "deb55a", - "efc58c": "efc58c" + "dea563": "deb55a" }, "1": { - "6b6363": "6b6363", - "d6cece": "d6cece", - "101010": "101010", - "ffffff": "ffffff", "ffa5a5": "ad7459", "de637b": "5b3332", "ff8494": "885345", @@ -30,10 +21,6 @@ "efc58c": "d49983" }, "2": { - "6b6363": "6b6363", - "d6cece": "d6cece", - "101010": "101010", - "ffffff": "ffffff", "ffa5a5": "ffeb9b", "de637b": "dd8f47", "ff8494": "eebd6a", diff --git a/public/images/pokemon/variant/back/790.json b/public/images/pokemon/variant/back/790.json index 415b2d26074..e111a9e35b9 100644 --- a/public/images/pokemon/variant/back/790.json +++ b/public/images/pokemon/variant/back/790.json @@ -4,14 +4,9 @@ "faf54e": "e5efff", "c87522": "7b89c4", "e8a61e": "aebde2", - "101010": "101010", - "fdfdfd": "fdfdfd", "169fda": "ffdf49", "1d3e89": "a20b02", - "e2629f": "e2629f", "764394": "eb5b2a", - "1e232b": "1e232b", - "17a6e3": "17a6e3", "2c5fab": "ff4079" }, "2": { @@ -19,14 +14,9 @@ "faf54e": "d4314c", "c87522": "890425", "e8a61e": "ae1a3d", - "101010": "101010", - "fdfdfd": "fdfdfd", - "169fda": "169fda", "1d3e89": "0f2388", "e2629f": "71ffd8", "764394": "7e13bf", - "1e232b": "1e232b", - "17a6e3": "17a6e3", "2c5fab": "3dc7e0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/791-radiant-sun.json b/public/images/pokemon/variant/back/791-radiant-sun.json index a3080d379bf..545a67c4114 100644 --- a/public/images/pokemon/variant/back/791-radiant-sun.json +++ b/public/images/pokemon/variant/back/791-radiant-sun.json @@ -1,7 +1,6 @@ { "1": { "aa8735": "7c0004", - "151515": "151515", "f9f190": "ff648b", "dcb75f": "ec3975", "868e8d": "8c190b", @@ -11,7 +10,6 @@ }, "2": { "aa8735": "730627", - "151515": "151515", "f9f190": "ea2a58", "dcb75f": "97082c", "868e8d": "10175e", diff --git a/public/images/pokemon/variant/back/791.json b/public/images/pokemon/variant/back/791.json index 0c3f46e61fb..8732147daad 100644 --- a/public/images/pokemon/variant/back/791.json +++ b/public/images/pokemon/variant/back/791.json @@ -1,6 +1,5 @@ { "1": { - "080808": "080808", "91510b": "7a80ab", "d29e31": "c5bbd6", "efe85a": "edf4ff", @@ -14,7 +13,6 @@ "313139": "61080b" }, "2": { - "080808": "080808", "91510b": "730627", "d29e31": "890425", "efe85a": "c1143d", diff --git a/public/images/pokemon/variant/back/792-full-moon.json b/public/images/pokemon/variant/back/792-full-moon.json index d4b01d5f77b..d252adadfb0 100644 --- a/public/images/pokemon/variant/back/792-full-moon.json +++ b/public/images/pokemon/variant/back/792-full-moon.json @@ -3,8 +3,6 @@ "aa8735": "765a3f", "f9f190": "fffef2", "dcb75f": "e6ded2", - "fffef2": "fffef2", - "151515": "151515", "59b3c6": "971283", "85d0e0": "ec5ddf", "fefefe": "ffdda2", @@ -17,7 +15,6 @@ "f9f190": "c22741", "dcb75f": "980f2a", "fffef2": "f34958", - "151515": "151515", "59b3c6": "2460ac", "85d0e0": "3797d0", "fefefe": "ffd1d1", diff --git a/public/images/pokemon/variant/back/792.json b/public/images/pokemon/variant/back/792.json index 2e4d97ae0d5..259fadf021c 100644 --- a/public/images/pokemon/variant/back/792.json +++ b/public/images/pokemon/variant/back/792.json @@ -3,8 +3,6 @@ "665d14": "624427", "e5da7f": "e6ded2", "a69e5c": "afa191", - "080808": "080808", - "fdfce8": "fdfce8", "45348e": "bc1836", "bcb5c1": "ffd386", "240f62": "60000c", @@ -17,11 +15,9 @@ "665d14": "6b0420", "e5da7f": "c22741", "a69e5c": "980f2a", - "080808": "080808", "fdfce8": "ff6d74", "45348e": "1a3186", "bcb5c1": "e19096", - "240f62": "240f62", "7b807e": "7e343d", "fefefe": "ffd1d1", "6046d8": "1550a1", diff --git a/public/images/pokemon/variant/back/793.json b/public/images/pokemon/variant/back/793.json index c0254131b0e..a99c6a324df 100644 --- a/public/images/pokemon/variant/back/793.json +++ b/public/images/pokemon/variant/back/793.json @@ -7,8 +7,7 @@ "308ebc": "1ecb76", "6b868f": "47090d", "26507d": "109d6a", - "53b0d9": "40ffcc", - "101010": "101010" + "53b0d9": "40ffcc" }, "2": { "9ba0b6": "1f1b9c", @@ -18,7 +17,6 @@ "308ebc": "24a7b0", "6b868f": "120d6b", "26507d": "2368b1", - "53b0d9": "6bebff", - "101010": "101010" + "53b0d9": "6bebff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/797.json b/public/images/pokemon/variant/back/797.json index 488b7a6b7de..91bb773e7b8 100644 --- a/public/images/pokemon/variant/back/797.json +++ b/public/images/pokemon/variant/back/797.json @@ -1,7 +1,6 @@ { "1": { "4c7e71": "2d3cb0", - "101010": "101010", "fefefe": "f9e5d1", "bccfc4": "f2b97f", "2b584b": "19155c", @@ -15,7 +14,6 @@ }, "2": { "4c7e71": "69132d", - "101010": "101010", "fefefe": "534757", "bccfc4": "242733", "2b584b": "410425", diff --git a/public/images/pokemon/variant/back/798.json b/public/images/pokemon/variant/back/798.json index 33fc6804577..13c60718373 100644 --- a/public/images/pokemon/variant/back/798.json +++ b/public/images/pokemon/variant/back/798.json @@ -21,7 +21,6 @@ "646471": "283e65", "fdfdfd": "87d2da", "cfcfcf": "4a86b8", - "101010": "101010", "aeaeae": "305895", "a86c1c": "5a2036", "686877": "110d1a", diff --git a/public/images/pokemon/variant/back/80-mega.json b/public/images/pokemon/variant/back/80-mega.json index 96b9c22aa83..b751d8ac584 100644 --- a/public/images/pokemon/variant/back/80-mega.json +++ b/public/images/pokemon/variant/back/80-mega.json @@ -1,11 +1,8 @@ { "1": { "783030": "3f2729", - "181818": "181818", "f89090": "885345", "e06878": "5b3332", - "deded5": "deded5", - "f8f8f8": "f8f8f8", "805820": "9f675f", "e8d080": "e0b69d", "505058": "7c5b40", @@ -15,11 +12,8 @@ }, "2": { "783030": "c08746", - "181818": "181818", "f89090": "eebd6a", "e06878": "de9048", - "deded5": "deded5", - "f8f8f8": "f8f8f8", "805820": "69080f", "e8d080": "d16b34", "505058": "192b32", diff --git a/public/images/pokemon/variant/back/80.json b/public/images/pokemon/variant/back/80.json index a95ecf48908..d8e5597dc52 100644 --- a/public/images/pokemon/variant/back/80.json +++ b/public/images/pokemon/variant/back/80.json @@ -1,32 +1,24 @@ { "1": { "7b3131": "3f2729", - "191919": "191919", "52525a": "8b5d37", "ff9494": "895446", "b5bdbd": "f0d090", "e66b7b": "5c3433", "8c9494": "bf9562", - "b6b6ae": "b6b6ae", "845a21": "9f675f", - "deded6": "deded6", "efd684": "e0b69d", - "ffffff": "ffffff", "cea563": "d49983" }, "2": { "7b3131": "a54729", - "191919": "191919", "52525a": "192b32", "ff9494": "edbc69", "b5bdbd": "4b7567", "e66b7b": "dd8f47", "8c9494": "2a4947", - "b6b6ae": "b6b6ae", "845a21": "69080f", - "deded6": "deded6", "efd684": "d16b34", - "ffffff": "ffffff", "cea563": "b34d2e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/800-dawn-wings.json b/public/images/pokemon/variant/back/800-dawn-wings.json index e8391c97440..08002017da4 100644 --- a/public/images/pokemon/variant/back/800-dawn-wings.json +++ b/public/images/pokemon/variant/back/800-dawn-wings.json @@ -3,7 +3,6 @@ "305fb6": "624427", "82c5f7": "e6ded2", "6197e9": "afa191", - "080808": "080808", "afd2da": "bc1836", "7b807e": "86102d", "fefefe": "ffd386", @@ -17,7 +16,6 @@ "305fb6": "3b0015", "82c5f7": "970b22", "6197e9": "5b0318", - "080808": "080808", "afd2da": "1a3186", "7b807e": "041243", "fefefe": "ffd7fc", diff --git a/public/images/pokemon/variant/back/800-dusk-mane.json b/public/images/pokemon/variant/back/800-dusk-mane.json index af3d20d7b58..e070b214b50 100644 --- a/public/images/pokemon/variant/back/800-dusk-mane.json +++ b/public/images/pokemon/variant/back/800-dusk-mane.json @@ -1,12 +1,10 @@ { "1": { - "080808": "080808", "1b2021": "3a001c", "2b3233": "5f0021", "424a50": "890425", "ae6200": "b72011", "d38a2b": "7c0004", - "f3cf55": "f3cf55", "768188": "c8245d", "89704b": "731f09", "dbcc8f": "da6e40", @@ -14,7 +12,6 @@ "fdfcf8": "e8e7ff" }, "2": { - "080808": "080808", "1b2021": "240842", "2b3233": "3e135f", "424a50": "602483", diff --git a/public/images/pokemon/variant/back/800-ultra.json b/public/images/pokemon/variant/back/800-ultra.json index 114151d61a1..b0cff259a9a 100644 --- a/public/images/pokemon/variant/back/800-ultra.json +++ b/public/images/pokemon/variant/back/800-ultra.json @@ -7,7 +7,6 @@ "bc912c": "8e0021", "fcf167": "ee2033", "8e6924": "770031", - "151515": "151515", "dcb92c": "bc0125", "fefac2": "ff7e75" }, @@ -19,7 +18,6 @@ "bc912c": "900090", "fcf167": "ff49e7", "8e6924": "510059", - "151515": "151515", "dcb92c": "d10cc7", "fefac2": "ff8ae9" } diff --git a/public/images/pokemon/variant/back/800.json b/public/images/pokemon/variant/back/800.json index 7e1dad5a59d..1b96bb66727 100644 --- a/public/images/pokemon/variant/back/800.json +++ b/public/images/pokemon/variant/back/800.json @@ -5,8 +5,7 @@ "fbfbfb": "e8e7ff", "768188": "c8245d", "b5bbbf": "a266eb", - "424a50": "890425", - "080808": "080808" + "424a50": "890425" }, "2": { "2b3233": "3e135f", @@ -14,7 +13,6 @@ "fbfbfb": "ffb8c9", "768188": "b13dc8", "b5bbbf": "f66fdc", - "424a50": "602483", - "080808": "080808" + "424a50": "602483" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/802.json b/public/images/pokemon/variant/back/802.json index a5fdbcd63b7..6b2bce333ce 100644 --- a/public/images/pokemon/variant/back/802.json +++ b/public/images/pokemon/variant/back/802.json @@ -3,7 +3,6 @@ "536155": "29352b", "2c3e30": "111c12", "6a806d": "526555", - "101010": "101010", "2d3137": "084434", "747778": "76bc8f", "4e5356": "3a7e5d" @@ -12,7 +11,6 @@ "536155": "b5b1ce", "2c3e30": "7a758d", "6a806d": "cbc9e8", - "101010": "101010", "2d3137": "17145e", "747778": "515aad", "4e5356": "2f3079" @@ -21,7 +19,6 @@ "536155": "82b7c3", "2c3e30": "508294", "6a806d": "a7eaee", - "101010": "101010", "2d3137": "5a0423", "747778": "ce3e63", "4e5356": "97123b" diff --git a/public/images/pokemon/variant/back/803.json b/public/images/pokemon/variant/back/803.json index 99736595873..acd89674274 100644 --- a/public/images/pokemon/variant/back/803.json +++ b/public/images/pokemon/variant/back/803.json @@ -1,7 +1,6 @@ { "1": { "78757f": "449e93", - "101010": "101010", "ccc0d8": "e3ffec", "98295e": "27579e", "d9338e": "3492b9", @@ -13,7 +12,6 @@ }, "2": { "78757f": "cd9b85", - "101010": "101010", "ccc0d8": "ffefe0", "98295e": "a12f63", "d9338e": "d6487a", diff --git a/public/images/pokemon/variant/back/804.json b/public/images/pokemon/variant/back/804.json index 5686b72ac9b..d418b17ae86 100644 --- a/public/images/pokemon/variant/back/804.json +++ b/public/images/pokemon/variant/back/804.json @@ -1,7 +1,6 @@ { "1": { "5f4670": "16396f", - "101010": "101010", "9372c0": "22658d", "bc88ff": "359faf", "9e2348": "81262d", @@ -17,7 +16,6 @@ }, "2": { "5f4670": "0e3346", - "101010": "101010", "9372c0": "2d794e", "bc88ff": "68b363", "9e2348": "7e4e3d", diff --git a/public/images/pokemon/variant/back/808.json b/public/images/pokemon/variant/back/808.json index e7625f51e73..8d6e17d9210 100644 --- a/public/images/pokemon/variant/back/808.json +++ b/public/images/pokemon/variant/back/808.json @@ -4,10 +4,8 @@ "ab732b": "ce5a6f", "dea220": "ff7c8e", "ffda45": "ffbeae", - "101010": "101010", "3d3534": "2c4048", "59544e": "38585b", - "f9f9f9": "f9f9f9", "67675f": "426e73", "8a8d7e": "6a8f97", "b1b5a6": "98d6f0", @@ -20,15 +18,11 @@ "ab732b": "2d2931", "dea220": "64486f", "ffda45": "9b6e98", - "101010": "101010", "3d3534": "780000", "59544e": "9e002e", - "f9f9f9": "f9f9f9", "67675f": "ba2b41", "8a8d7e": "d66352", "b1b5a6": "f49769", - "dcdcda": "ffbe6e", - "741012": "741012", - "c2292e": "c2292e" + "dcdcda": "ffbe6e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/809-gigantamax.json b/public/images/pokemon/variant/back/809-gigantamax.json index 0d1c729ec7c..f9ba49de9c5 100644 --- a/public/images/pokemon/variant/back/809-gigantamax.json +++ b/public/images/pokemon/variant/back/809-gigantamax.json @@ -4,10 +4,8 @@ "b1b5a6": "98d6f0", "dcdcda": "c2effc", "e8e8e8": "dff7f7", - "f9f9f9": "f9f9f9", "67675f": "426e73", "59544e": "38585b", - "101010": "101010", "dea220": "ff7c8e", "ab732b": "ce5a6f", "3d3534": "2c4048", @@ -20,15 +18,12 @@ "b1b5a6": "f49769", "dcdcda": "ffbe6e", "e8e8e8": "ffde6c", - "f9f9f9": "f9f9f9", "67675f": "ba2b41", "59544e": "9e002e", - "101010": "101010", "dea220": "64486f", "ab732b": "2d2931", "3d3534": "780000", "e46d8b": "741012", - "211d1d": "570000", - "c2292e": "c2292e" + "211d1d": "570000" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/809.json b/public/images/pokemon/variant/back/809.json index 78c209e4ea8..1f597aa305e 100644 --- a/public/images/pokemon/variant/back/809.json +++ b/public/images/pokemon/variant/back/809.json @@ -4,7 +4,6 @@ "211d1d": "232a2b", "59544e": "38585b", "814f23": "85374d", - "101010": "101010", "ab732b": "ce5a6f", "67675f": "426e73", "ffda45": "ffbeae", @@ -12,7 +11,6 @@ "dea220": "ff7c8e", "b1b5a6": "98d6f0", "dcdcda": "c2effc", - "f9f9f9": "f9f9f9", "c2292e": "ffce6b" }, "2": { @@ -20,15 +18,12 @@ "211d1d": "570000", "59544e": "9e002e", "814f23": "101010", - "101010": "101010", "ab732b": "2d2931", "67675f": "ba2b41", "ffda45": "9b6e98", "8a8d7e": "d66352", "dea220": "64486f", "b1b5a6": "f49769", - "dcdcda": "ffbe6e", - "f9f9f9": "f9f9f9", - "c2292e": "c2292e" + "dcdcda": "ffbe6e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/81.json b/public/images/pokemon/variant/back/81.json index a5b983598c1..08c0ab1e797 100644 --- a/public/images/pokemon/variant/back/81.json +++ b/public/images/pokemon/variant/back/81.json @@ -3,9 +3,7 @@ "8c8c8c": "c36c77", "b5b5b5": "f99596", "d6d6d6": "ffc4b8", - "ffffff": "ffffff", "524a4a": "90495b", - "101010": "101010", "3a3131": "612e40", "5a8463": "c36c77", "ef1900": "e67468", @@ -20,7 +18,6 @@ "d6d6d6": "f2c76c", "ffffff": "fffb93", "524a4a": "8c500b", - "101010": "101010", "3a3131": "662e00", "5a8463": "a65410", "ef1900": "e6a845", diff --git a/public/images/pokemon/variant/back/816.json b/public/images/pokemon/variant/back/816.json index 8153a53decd..2db6adf77dc 100644 --- a/public/images/pokemon/variant/back/816.json +++ b/public/images/pokemon/variant/back/816.json @@ -7,8 +7,7 @@ "425493": "7d292a", "5091c0": "b5464b", "6ab6d2": "e66371", - "add7e7": "e6828e", - "101010": "101010" + "add7e7": "e6828e" }, "2": { "1f2d63": "6e1a4c", @@ -18,7 +17,6 @@ "425493": "813535", "5091c0": "dea26c", "6ab6d2": "ffeeb8", - "add7e7": "fffbec", - "101010": "101010" + "add7e7": "fffbec" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/817.json b/public/images/pokemon/variant/back/817.json index 7c74f55eef9..818b677a356 100644 --- a/public/images/pokemon/variant/back/817.json +++ b/public/images/pokemon/variant/back/817.json @@ -8,12 +8,10 @@ "6c4499": "a1572f", "70cce0": "eb8577", "a278c7": "dd8a4f", - "101010": "101010", "3d6424": "83403e", "6ba01b": "a36d5d", "8cd222": "d99f8d", - "ccc7cd": "c7c1bd", - "fefefe": "fefefe" + "ccc7cd": "c7c1bd" }, "2": { "183569": "731f4e", @@ -24,11 +22,9 @@ "6c4499": "2c5aa8", "70cce0": "ffe5a3", "a278c7": "459dca", - "101010": "101010", "3d6424": "731317", "6ba01b": "ba2c22", "8cd222": "d85633", - "ccc7cd": "becee1", - "fefefe": "fefefe" + "ccc7cd": "becee1" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/818-gigantamax.json b/public/images/pokemon/variant/back/818-gigantamax.json index e885e058b5a..bca7f49b3fb 100644 --- a/public/images/pokemon/variant/back/818-gigantamax.json +++ b/public/images/pokemon/variant/back/818-gigantamax.json @@ -4,17 +4,12 @@ "f2f889": "f889b6", "1c7bc1": "06cccf", "e9cd5f": "e95f92", - "101010": "101010", "01599a": "0ea6a8", "549bc3": "0060a4", "9cd2e2": "107ac0", - "ee3e5c": "ee3e5c", "31302f": "989dac", "4a4a4d": "c4ccd4", - "5cdada": "5cdada", "5e9bc3": "0a60a4", - "fdfdfd": "fdfdfd", - "b0faff": "b0faff", "646565": "f7fbfc" }, "1": { @@ -22,7 +17,6 @@ "f2f889": "82664c", "1c7bc1": "d94a4c", "e9cd5f": "614432", - "101010": "101010", "01599a": "9c2734", "549bc3": "a45e4a", "9cd2e2": "e1926f", @@ -40,7 +34,6 @@ "f2f889": "65c2e5", "1c7bc1": "fff2cc", "e9cd5f": "4484c3", - "101010": "101010", "01599a": "d8b284", "549bc3": "e38544", "9cd2e2": "ffcd57", diff --git a/public/images/pokemon/variant/back/818.json b/public/images/pokemon/variant/back/818.json index fc948072c94..bbb18e197b3 100644 --- a/public/images/pokemon/variant/back/818.json +++ b/public/images/pokemon/variant/back/818.json @@ -7,8 +7,6 @@ "e9cd5f": "614432", "549bc3": "a55846", "9cd2e2": "e1926f", - "101010": "101010", - "fdfdfd": "fdfdfd", "ff7c00": "5885a2", "31302f": "251e1c", "646565": "4c4643", @@ -23,8 +21,6 @@ "e9cd5f": "4484c3", "549bc3": "e38544", "9cd2e2": "ffcd57", - "101010": "101010", - "fdfdfd": "fdfdfd", "ff7c00": "a13047", "31302f": "510e3c", "646565": "be3a7d", diff --git a/public/images/pokemon/variant/back/82.json b/public/images/pokemon/variant/back/82.json index daed151e7d4..2db8f3ef0ca 100644 --- a/public/images/pokemon/variant/back/82.json +++ b/public/images/pokemon/variant/back/82.json @@ -2,13 +2,11 @@ "1": { "8c8c8c": "c36c77", "524a4a": "90495b", - "ffffff": "ffffff", "d6d6d6": "ffc4b8", "ff8c4a": "ffc4b8", "b5b5b5": "f99596", "3a3131": "612e40", "ef1900": "e67468", - "101010": "101010", "5a8463": "c36c77", "8cb5a5": "f99596", "d6f7de": "ffe9e5", @@ -25,7 +23,6 @@ "b5b5b5": "b27a20", "3a3131": "401d00", "ef1900": "a65410", - "101010": "101010", "5a8463": "701900", "8cb5a5": "a65410", "d6f7de": "e6a845", diff --git a/public/images/pokemon/variant/back/821.json b/public/images/pokemon/variant/back/821.json index 6101b9d4261..dcbdaf08804 100644 --- a/public/images/pokemon/variant/back/821.json +++ b/public/images/pokemon/variant/back/821.json @@ -1,6 +1,5 @@ { "1": { - "080808": "080808", "201a12": "4b2a5e", "505038": "bc7dc3", "272b47": "6a445c", @@ -13,7 +12,6 @@ "ac9534": "be919e" }, "2": { - "080808": "080808", "201a12": "a46828", "505038": "eaae36", "272b47": "612a0e", diff --git a/public/images/pokemon/variant/back/822.json b/public/images/pokemon/variant/back/822.json index cedd8cdfdff..22c63166273 100644 --- a/public/images/pokemon/variant/back/822.json +++ b/public/images/pokemon/variant/back/822.json @@ -1,11 +1,9 @@ { "1": { "403524": "ad6f83", - "201a12": "201a12", "505038": "e7a6c9", "252d49": "c8658a", "2f4577": "f4a0b9", - "080808": "080808", "426eb2": "ffdeeb", "659aba": "fff6f8", "444f59": "2e262f", @@ -13,11 +11,9 @@ }, "2": { "403524": "b95212", - "201a12": "201a12", "505038": "dc7c16", "252d49": "91591e", "2f4577": "eaae36", - "080808": "080808", "426eb2": "edd472", "659aba": "fff1b9", "444f59": "541705", diff --git a/public/images/pokemon/variant/back/823.json b/public/images/pokemon/variant/back/823.json index eb3f2d02655..3245dd6897b 100644 --- a/public/images/pokemon/variant/back/823.json +++ b/public/images/pokemon/variant/back/823.json @@ -1,21 +1,17 @@ { "1": { - "010101": "010101", "251d4e": "6a445c", "434475": "f4a0b9", "303360": "ad6f83", "646ca8": "ffdeeb", "4d5488": "e7a6c9", "f30101": "df7b10", - "ffa8a8": "ffa8a8", "4e4150": "57445a", - "2e262f": "2e262f", "18173d": "4b2a5e", "2c2b58": "845195", "3e3d6d": "bc7dc3" }, "2": { - "010101": "010101", "251d4e": "612a0e", "434475": "dc7c16", "303360": "b95212", diff --git a/public/images/pokemon/variant/back/829.json b/public/images/pokemon/variant/back/829.json index c3f2e3d3228..4fa2d435fb0 100644 --- a/public/images/pokemon/variant/back/829.json +++ b/public/images/pokemon/variant/back/829.json @@ -4,8 +4,6 @@ "e09b24": "1da3c2", "f4d626": "4aebe3", "fef54b": "84fff5", - "101010": "101010", - "fef1a7": "fef1a7", "841d1a": "3b0122", "cf301f": "601335", "fb472f": "7b2640", @@ -17,7 +15,6 @@ "e09b24": "6b2d9e", "f4d626": "bc77ff", "fef54b": "e8aaff", - "101010": "101010", "fef1a7": "f6e6ff", "841d1a": "14103b", "cf301f": "24244b", diff --git a/public/images/pokemon/variant/back/830.json b/public/images/pokemon/variant/back/830.json index 517f81ff692..fdb0b20d021 100644 --- a/public/images/pokemon/variant/back/830.json +++ b/public/images/pokemon/variant/back/830.json @@ -6,8 +6,7 @@ "e8d5c6": "a2d2e7", "5c6738": "6f3e7b", "8a9247": "9d6aa5", - "bab743": "c38ec6", - "101010": "101010" + "bab743": "c38ec6" }, "2": { "89593b": "442664", @@ -16,7 +15,6 @@ "e8d5c6": "d5aee9", "5c6738": "133049", "8a9247": "3c627e", - "bab743": "6a9cbb", - "101010": "101010" + "bab743": "6a9cbb" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/835.json b/public/images/pokemon/variant/back/835.json index 0e4b99223d7..0c68b758f61 100644 --- a/public/images/pokemon/variant/back/835.json +++ b/public/images/pokemon/variant/back/835.json @@ -1,7 +1,6 @@ { "1": { "844840": "051514", - "101010": "101010", "bd8d62": "e0bb76", "a26642": "aa8e5a", "d1cccb": "e7c78d", @@ -15,11 +14,9 @@ }, "2": { "844840": "313e38", - "101010": "101010", "bd8d62": "509468", "a26642": "3d5d59", "d1cccb": "a0bcaa", - "fbfbfb": "fbfbfb", "837a76": "43554d", "9a6229": "2b2042", "f7da11": "776baf", diff --git a/public/images/pokemon/variant/back/836.json b/public/images/pokemon/variant/back/836.json index da9680ed581..fadea8ede4b 100644 --- a/public/images/pokemon/variant/back/836.json +++ b/public/images/pokemon/variant/back/836.json @@ -1,13 +1,10 @@ { "1": { - "a06d21": "a06d21", - "0d0d0d": "0d0d0d", "fad833": "e0bb76", "c8ad25": "aa8e5a", "495043": "28797b", "dec12e": "e0bb76", "cfc7c6": "cbcdb4", - "8c7b7a": "8c7b7a", "f2efef": "fdffe1", "fff665": "e7c78d", "373737": "2c4f4d", @@ -15,7 +12,6 @@ }, "2": { "a06d21": "213d3a", - "0d0d0d": "0d0d0d", "fad833": "509468", "c8ad25": "3d5d59", "495043": "3c2e5b", diff --git a/public/images/pokemon/variant/back/84.json b/public/images/pokemon/variant/back/84.json index 01886764957..9dca4a84b80 100644 --- a/public/images/pokemon/variant/back/84.json +++ b/public/images/pokemon/variant/back/84.json @@ -3,10 +3,7 @@ "523a19": "1b4e31", "946b5a": "3a8951", "bd8c52": "65bf75", - "636363": "636363", "dead73": "a5e6a0", - "ffffff": "ffffff", - "101010": "101010", "a5844a": "bba689", "635210": "1d1636", "efdead": "ece4ce", @@ -18,8 +15,6 @@ "bd8c52": "9f4079", "636363": "3a2050", "dead73": "c35d88", - "ffffff": "ffffff", - "101010": "101010", "a5844a": "84333c", "635210": "642330", "efdead": "efbcad", @@ -31,8 +26,6 @@ "bd8c52": "618bbc", "636363": "7a355d", "dead73": "95bedc", - "ffffff": "ffffff", - "101010": "101010", "a5844a": "2e2448", "635210": "1d1636", "efdead": "584c6b", diff --git a/public/images/pokemon/variant/back/85.json b/public/images/pokemon/variant/back/85.json index fe780361521..145458243f3 100644 --- a/public/images/pokemon/variant/back/85.json +++ b/public/images/pokemon/variant/back/85.json @@ -1,16 +1,11 @@ { "0": { - "424242": "424242", - "848484": "848484", - "000000": "000000", "5a4221": "1b4e31", "a57b5a": "3a8951", "ce9c52": "65bf75", "635a42": "7a614c", "efdead": "ece4ce", - "ffffff": "ffffff", "b5a57b": "bba689", - "d6cece": "d6cece", "b54242": "1e2b61", "ffd6e6": "accaf0", "f784a5": "3a5797" @@ -18,15 +13,12 @@ "1": { "424242": "3a2050", "848484": "6b4685", - "000000": "000000", "5a4221": "48123f", "a57b5a": "6f265a", "ce9c52": "9f4079", "635a42": "84333c", "efdead": "efbcad", - "ffffff": "ffffff", "b5a57b": "c46e6e", - "d6cece": "d6cece", "b54242": "372d68", "ffd6e6": "cbadec", "f784a5": "8163b5" @@ -34,15 +26,12 @@ "2": { "424242": "412334", "848484": "7d4c60", - "000000": "000000", "5a4221": "1b2c59", "a57b5a": "618bbc", "ce9c52": "95bedc", "635a42": "1d1636", "efdead": "584c6b", - "ffffff": "ffffff", "b5a57b": "43385c", - "d6cece": "d6cece", "b54242": "612253", "ffd6e6": "e1a272", "f784a5": "91425d" diff --git a/public/images/pokemon/variant/back/850.json b/public/images/pokemon/variant/back/850.json index 0c37d56a9a3..974ab0a09b3 100644 --- a/public/images/pokemon/variant/back/850.json +++ b/public/images/pokemon/variant/back/850.json @@ -8,7 +8,6 @@ "681607": "065b58", "42221c": "36203c", "2f1610": "24122b", - "101010": "101010", "be5409": "25a96a", "f89e08": "a3ffb9" }, @@ -20,9 +19,6 @@ "ff5839": "f360a3", "681607": "4a1036", "42221c": "222957", - "2f1610": "121439", - "101010": "101010", - "be5409": "be5409", - "f89e08": "f89e08" + "2f1610": "121439" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/851-gigantamax.json b/public/images/pokemon/variant/back/851-gigantamax.json index fe3e1c837e7..f235f9b4e56 100644 --- a/public/images/pokemon/variant/back/851-gigantamax.json +++ b/public/images/pokemon/variant/back/851-gigantamax.json @@ -8,9 +8,7 @@ "e71d12": "59365d", "9a2d21": "36203c", "5b2f26": "5e3d35", - "2f1610": "2f1610", "804a3e": "745f47", - "010000": "010000", "f4ba01": "71ea9d", "ff5839": "ad58ab" }, @@ -19,13 +17,10 @@ "f89e08": "d73981", "ffd901": "ffcb61", "5b0f0f": "121439", - "941528": "941528", "e71d12": "36426c", "9a2d21": "222957", "5b2f26": "60144b", - "2f1610": "2f1610", "804a3e": "973554", - "010000": "010000", "f4ba01": "e98a27", "ff5839": "7866cb" } diff --git a/public/images/pokemon/variant/back/851.json b/public/images/pokemon/variant/back/851.json index 36b7e56509e..3b1881b132d 100644 --- a/public/images/pokemon/variant/back/851.json +++ b/public/images/pokemon/variant/back/851.json @@ -12,11 +12,9 @@ "42221c": "36203c", "2f1610": "24122b", "681607": "024f2d", - "101010": "101010", "941528": "005f35" }, "2": { - "be5409": "be5409", "f89e08": "f36d73", "ffd901": "ffc143", "5b2f26": "36426c", @@ -27,8 +25,6 @@ "ff5839": "ff6970", "42221c": "222957", "2f1610": "121439", - "681607": "6e0442", - "101010": "101010", - "941528": "941528" + "681607": "6e0442" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/854.json b/public/images/pokemon/variant/back/854.json index 2446d716998..09196ea7351 100644 --- a/public/images/pokemon/variant/back/854.json +++ b/public/images/pokemon/variant/back/854.json @@ -9,7 +9,6 @@ "733a87": "cc752f", "9aedea": "b74f6c", "af63c4": "ffffeb", - "101010": "101010", "c3bfe0": "f2bbaa" }, "2": { @@ -22,7 +21,6 @@ "733a87": "2a3c2c", "9aedea": "c9c0b9", "af63c4": "82b183", - "101010": "101010", "c3bfe0": "524c4e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/855.json b/public/images/pokemon/variant/back/855.json index bd1bbcedb7f..a9a234fd471 100644 --- a/public/images/pokemon/variant/back/855.json +++ b/public/images/pokemon/variant/back/855.json @@ -9,7 +9,6 @@ "4bb2af": "531d2b", "c3bfe0": "c06d66", "f5f9fa": "f2bbaa", - "101010": "101010", "733a87": "ef9e5c", "af63c4": "ffffeb", "215557": "3c0e1b" @@ -24,7 +23,6 @@ "4bb2af": "222221", "c3bfe0": "3e383a", "f5f9fa": "524c4e", - "101010": "101010", "733a87": "538c61", "af63c4": "82b183", "215557": "222221" diff --git a/public/images/pokemon/variant/back/856.json b/public/images/pokemon/variant/back/856.json index 3d245b74324..bfc575d89d7 100644 --- a/public/images/pokemon/variant/back/856.json +++ b/public/images/pokemon/variant/back/856.json @@ -2,7 +2,6 @@ "1": { "727ab1": "1d4a3b", "c8e9ff": "5ec183", - "181818": "181818", "acbfdf": "3b9665", "bb6a99": "043232", "f9d5da": "298675", @@ -13,7 +12,6 @@ "2": { "727ab1": "6b0124", "c8e9ff": "cb304d", - "181818": "181818", "acbfdf": "a11437", "bb6a99": "30163d", "f9d5da": "523f73", diff --git a/public/images/pokemon/variant/back/858-gigantamax.json b/public/images/pokemon/variant/back/858-gigantamax.json index 98f13ee6842..a1b18562909 100644 --- a/public/images/pokemon/variant/back/858-gigantamax.json +++ b/public/images/pokemon/variant/back/858-gigantamax.json @@ -1,7 +1,6 @@ { "1": { "948fc2": "1d6447", - "101010": "101010", "c15974": "043232", "c8e9ff": "5ec183", "e489a0": "125a51", @@ -15,7 +14,6 @@ }, "2": { "948fc2": "6d042b", - "101010": "101010", "c15974": "30163d", "c8e9ff": "cb304d", "e489a0": "3b2351", diff --git a/public/images/pokemon/variant/back/858.json b/public/images/pokemon/variant/back/858.json index 5d9ca997770..7efde3f313b 100644 --- a/public/images/pokemon/variant/back/858.json +++ b/public/images/pokemon/variant/back/858.json @@ -2,7 +2,6 @@ "1": { "727ab1": "1d4a3b", "acbfdf": "3b9665", - "101010": "101010", "948fc2": "287b59", "c8e9ff": "5ec183", "d9cedb": "dec1c2", @@ -16,7 +15,6 @@ "2": { "727ab1": "6b0124", "acbfdf": "a11437", - "101010": "101010", "948fc2": "8c0e32", "c8e9ff": "cb304d", "d9cedb": "e4bcde", diff --git a/public/images/pokemon/variant/back/859.json b/public/images/pokemon/variant/back/859.json index 16dcecb181e..a3d7e501811 100644 --- a/public/images/pokemon/variant/back/859.json +++ b/public/images/pokemon/variant/back/859.json @@ -4,7 +4,6 @@ "8d3856": "376b2d", "f589c2": "9aba6d", "ffbff5": "dbe797", - "101010": "101010", "45366d": "5b1d15", "735aac": "a4332d", "947cd8": "cc5836" @@ -14,7 +13,6 @@ "8d3856": "30082d", "f589c2": "6b2b3e", "ffbff5": "904f55", - "101010": "101010", "45366d": "794935", "735aac": "f0c475", "947cd8": "f9e9a4" diff --git a/public/images/pokemon/variant/back/86.json b/public/images/pokemon/variant/back/86.json index 75fd67c9b4d..5375b92e57e 100644 --- a/public/images/pokemon/variant/back/86.json +++ b/public/images/pokemon/variant/back/86.json @@ -4,8 +4,6 @@ "e6e6f7": "f3c7aa", "949cb5": "a86f5b", "d6ceef": "c78f72", - "101010": "101010", - "ffffff": "ffffff", "b59442": "a4622f", "f7e6bd": "f7e3bd", "6b5a10": "6b3410", @@ -16,8 +14,6 @@ "e6e6f7": "b2c3d1", "949cb5": "5e6d7c", "d6ceef": "91a0ac", - "101010": "101010", - "ffffff": "ffffff", "b59442": "b5ada5", "f7e6bd": "efefe6", "6b5a10": "847b73", @@ -28,8 +24,6 @@ "e6e6f7": "7ecdca", "949cb5": "325062", "d6ceef": "558a98", - "101010": "101010", - "ffffff": "ffffff", "b59442": "81604a", "f7e6bd": "d9caa5", "6b5a10": "5f3e2e", diff --git a/public/images/pokemon/variant/back/860.json b/public/images/pokemon/variant/back/860.json index f318490f04c..11974fd8618 100644 --- a/public/images/pokemon/variant/back/860.json +++ b/public/images/pokemon/variant/back/860.json @@ -4,7 +4,6 @@ "e93761": "638a48", "f75c90": "7daf56", "352954": "3b1528", - "101010": "101010", "5d4694": "8b332d", "8872b6": "c45949", "433568": "5a1d27", @@ -17,7 +16,6 @@ "e93761": "491337", "f75c90": "64233b", "352954": "a26458", - "101010": "101010", "5d4694": "dfc784", "8872b6": "f6e8b8", "433568": "c98e63", diff --git a/public/images/pokemon/variant/back/861-gigantamax.json b/public/images/pokemon/variant/back/861-gigantamax.json index e97032b5a26..29c6de702b9 100644 --- a/public/images/pokemon/variant/back/861-gigantamax.json +++ b/public/images/pokemon/variant/back/861-gigantamax.json @@ -1,14 +1,12 @@ { "1": { "2f184e": "290527", - "101010": "101010", "433568": "5a1d27", "5d4694": "8b332d", "352954": "3b1528" }, "2": { "2f184e": "6a2f3a", - "101010": "101010", "433568": "c98e63", "5d4694": "dfc784", "352954": "a26458" diff --git a/public/images/pokemon/variant/back/861.json b/public/images/pokemon/variant/back/861.json index acdc2e3c502..cec30107ea8 100644 --- a/public/images/pokemon/variant/back/861.json +++ b/public/images/pokemon/variant/back/861.json @@ -1,7 +1,6 @@ { "1": { "356a3c": "162a35", - "101010": "101010", "47be62": "366c59", "409555": "244849", "433568": "5a1d27", @@ -11,7 +10,6 @@ }, "2": { "356a3c": "090d50", - "101010": "101010", "47be62": "3f386f", "409555": "272664", "433568": "c98e63", diff --git a/public/images/pokemon/variant/back/862.json b/public/images/pokemon/variant/back/862.json index 8f323fb4822..8ca663c9103 100644 --- a/public/images/pokemon/variant/back/862.json +++ b/public/images/pokemon/variant/back/862.json @@ -1,7 +1,5 @@ { "1": { - "1b2627": "1b2627", - "010101": "010101", "474749": "156a66", "303034": "094448", "6f7071": "01473a", @@ -11,12 +9,10 @@ "f5f5f6": "f5ffea", "9b4f69": "d414dd", "df84ad": "ff69fa", - "2b2d2e": "052332", - "fcfcfc": "fcfcfc" + "2b2d2e": "052332" }, "2": { "1b2627": "180c46", - "010101": "010101", "474749": "8655e1", "303034": "5a3eb9", "6f7071": "2e1d7b", @@ -26,7 +22,6 @@ "f5f5f6": "342d4c", "9b4f69": "0099ce", "df84ad": "54f1ff", - "2b2d2e": "060429", - "fcfcfc": "fcfcfc" + "2b2d2e": "060429" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/863.json b/public/images/pokemon/variant/back/863.json index ddeaa711d6b..c100f2e1b4c 100644 --- a/public/images/pokemon/variant/back/863.json +++ b/public/images/pokemon/variant/back/863.json @@ -2,9 +2,7 @@ "1": { "66716c": "59879a", "bfc1bf": "b4e0d3", - "010101": "010101", "8f9c95": "85c1c0", - "181a1d": "181a1d", "272d2e": "342b49", "3d4547": "4e385a", "84726f": "9591a7", @@ -14,7 +12,6 @@ "2": { "66716c": "331a37", "bfc1bf": "92264b", - "010101": "010101", "8f9c95": "6d0b3c", "181a1d": "0f2127", "272d2e": "234a56", diff --git a/public/images/pokemon/variant/back/864.json b/public/images/pokemon/variant/back/864.json index a9d6199388e..eeefe5b0166 100644 --- a/public/images/pokemon/variant/back/864.json +++ b/public/images/pokemon/variant/back/864.json @@ -8,8 +8,7 @@ "cbc2d1": "d7d2f6", "7f806a": "4d8894", "fbf2ff": "d3ffff", - "c6bbcb": "a7e6e5", - "101010": "101010" + "c6bbcb": "a7e6e5" }, "2": { "bcb9be": "055946", @@ -20,7 +19,6 @@ "cbc2d1": "567f83", "7f806a": "4b1f28", "fbf2ff": "874059", - "c6bbcb": "773050", - "101010": "101010" + "c6bbcb": "773050" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/867.json b/public/images/pokemon/variant/back/867.json index 124ea0d4f66..edfad6a836d 100644 --- a/public/images/pokemon/variant/back/867.json +++ b/public/images/pokemon/variant/back/867.json @@ -1,7 +1,6 @@ { "1": { "393941": "69d9bf", - "101010": "101010", "927e8d": "a46361", "d9d0d1": "d6b8a0", "c5b9bb": "c69981", @@ -10,7 +9,6 @@ }, "2": { "393941": "a4222c", - "101010": "101010", "927e8d": "1f6455", "d9d0d1": "4fb66a", "c5b9bb": "298a61", diff --git a/public/images/pokemon/variant/back/87.json b/public/images/pokemon/variant/back/87.json index bc02e269dbe..a1deab7b93f 100644 --- a/public/images/pokemon/variant/back/87.json +++ b/public/images/pokemon/variant/back/87.json @@ -4,32 +4,20 @@ "e6e6f7": "f0b28a", "425263": "773630", "d6ceef": "bc7855", - "9ca5bd": "b76a43", - "101010": "101010", - "ffffff": "ffffff", - "847b7b": "847b7b", - "d6cece": "d6cece" + "9ca5bd": "b76a43" }, "1": { "6b7ba5": "465264", "e6e6f7": "96adbe", "425263": "2f3b50", "d6ceef": "5a7286", - "9ca5bd": "5e6d7c", - "101010": "101010", - "ffffff": "ffffff", - "847b7b": "847b7b", - "d6cece": "d6cece" + "9ca5bd": "5e6d7c" }, "2": { "6b7ba5": "20354a", "e6e6f7": "86dfe2", "425263": "171d3f", "d6ceef": "5493ac", - "9ca5bd": "305f7d", - "101010": "101010", - "ffffff": "ffffff", - "847b7b": "847b7b", - "d6cece": "d6cece" + "9ca5bd": "305f7d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/872.json b/public/images/pokemon/variant/back/872.json index c7b73b39012..cac7ab2c540 100644 --- a/public/images/pokemon/variant/back/872.json +++ b/public/images/pokemon/variant/back/872.json @@ -2,9 +2,7 @@ "0": { "7b8b9b": "345f5c", "d8e9f0": "b7f1d6", - "f5fdff": "f5fdff", "acc3cc": "669a8c", - "101010": "101010", "695e77": "275e43", "edeae0": "a6d6a6", "b3a7c2": "73a878" @@ -12,9 +10,7 @@ "1": { "7b8b9b": "22504c", "d8e9f0": "b6e7df", - "f5fdff": "f5fdff", "acc3cc": "548e8f", - "101010": "101010", "695e77": "354b63", "edeae0": "c1ebf3", "b3a7c2": "89a9be" @@ -22,9 +18,7 @@ "2": { "7b8b9b": "5a3993", "d8e9f0": "d5c3ff", - "f5fdff": "f5fdff", "acc3cc": "a66ac2", - "101010": "101010", "695e77": "5f3465", "edeae0": "e5a2da", "b3a7c2": "a060a0" diff --git a/public/images/pokemon/variant/back/873.json b/public/images/pokemon/variant/back/873.json index dd3754e7fe9..e0977b608e7 100644 --- a/public/images/pokemon/variant/back/873.json +++ b/public/images/pokemon/variant/back/873.json @@ -4,23 +4,20 @@ "b3b4bd": "73a878", "e7e0e6": "a6d6a6", "8f8f9f": "27532f", - "fdfdfd": "b7f1d7", - "101010": "101010" + "fdfdfd": "b7f1d7" }, "1": { "747489": "556b7d", "b3b4bd": "92a9b8", "e7e0e6": "b6e7df", "8f8f9f": "415366", - "fdfdfd": "eefffb", - "101010": "101010" + "fdfdfd": "eefffb" }, "2": { "747489": "512d52", "b3b4bd": "864c86", "e7e0e6": "d78dcb", "8f8f9f": "5f3465", - "fdfdfd": "d5c3ff", - "101010": "101010" + "fdfdfd": "d5c3ff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/876-female.json b/public/images/pokemon/variant/back/876-female.json index 38892176d0d..9aa3f570830 100644 --- a/public/images/pokemon/variant/back/876-female.json +++ b/public/images/pokemon/variant/back/876-female.json @@ -4,7 +4,6 @@ "7d7493": "5a3736", "2f2642": "2c1419", "564c6c": "4a282a", - "101010": "101010", "6c64a6": "b72e3e", "4d447e": "8c1932", "3d3055": "64102c", @@ -17,7 +16,6 @@ "7d7493": "ecb2c5", "2f2642": "444a8e", "564c6c": "d58da4", - "101010": "101010", "6c64a6": "78aae5", "4d447e": "5c7bc5", "3d3055": "4c5db1", diff --git a/public/images/pokemon/variant/back/876.json b/public/images/pokemon/variant/back/876.json index af4f5492efe..024747b2e0b 100644 --- a/public/images/pokemon/variant/back/876.json +++ b/public/images/pokemon/variant/back/876.json @@ -3,7 +3,6 @@ "2e2641": "2c1419", "7d7493": "5a3736", "564c6c": "4a282a", - "101010": "101010", "2f2642": "2c1419", "6c64a6": "b72e3e", "4d447e": "8c1932", @@ -16,7 +15,6 @@ "2e2641": "314c7c", "7d7493": "a3c5e8", "564c6c": "78a5d4", - "101010": "101010", "2f2642": "7a316c", "6c64a6": "f589bb", "4d447e": "d268a7", diff --git a/public/images/pokemon/variant/back/877-hangry.json b/public/images/pokemon/variant/back/877-hangry.json index a4e19c34f67..4ecb7181777 100644 --- a/public/images/pokemon/variant/back/877-hangry.json +++ b/public/images/pokemon/variant/back/877-hangry.json @@ -1,7 +1,6 @@ { "0": { "383634": "3a1010", - "101010": "101010", "4f4b47": "952222", "6c6c6c": "540606", "6b3d96": "967f3d", @@ -9,8 +8,6 @@ "9958ce": "cebb58" }, "1": { - "383634": "383634", - "101010": "101010", "4f4b47": "3a3a3a", "6c6c6c": "212020", "6b3d96": "cb6333", @@ -18,10 +15,6 @@ "9958ce": "cb6333" }, "2": { - "383634": "383634", - "101010": "101010", - "4f4b47": "4f4b47", - "6c6c6c": "6c6c6c", "6b3d96": "568351", "493061": "306135", "9958ce": "7fba7f" diff --git a/public/images/pokemon/variant/back/877.json b/public/images/pokemon/variant/back/877.json index 846a3ecdaee..5e4e7501352 100644 --- a/public/images/pokemon/variant/back/877.json +++ b/public/images/pokemon/variant/back/877.json @@ -1,33 +1,21 @@ { "0": { "8a5e48": "383634", - "101010": "101010", - "383634": "383634", "af7044": "4f4b47", - "4f4b47": "4f4b47", - "6c6c6c": "6c6c6c", "cf9c66": "6c6c6c", "d3b351": "8851d3", "f4f489": "b689f4" }, "1": { "8a5e48": "2e57f6", - "101010": "101010", - "383634": "383634", "af7044": "86aaff", - "4f4b47": "4f4b47", - "6c6c6c": "6c6c6c", "cf9c66": "2c439d", "d3b351": "8b8853", "f4f489": "fff98f" }, "2": { "8a5e48": "4f8a48", - "101010": "101010", - "383634": "383634", "af7044": "71cf66", - "4f4b47": "4f4b47", - "6c6c6c": "6c6c6c", "cf9c66": "44af5b", "d3b351": "b6b6b6", "f4f489": "f8f8f8" diff --git a/public/images/pokemon/variant/back/880.json b/public/images/pokemon/variant/back/880.json index 1270725b8a2..7f2d67ad64f 100644 --- a/public/images/pokemon/variant/back/880.json +++ b/public/images/pokemon/variant/back/880.json @@ -1,7 +1,6 @@ { "1": { "8f261b": "1b1829", - "101010": "101010", "ff8d9f": "6a98c4", "ed4e76": "312f47", "975e17": "5b0610", @@ -16,8 +15,6 @@ "025f46": "26253e" }, "2": { - "8f261b": "8f261b", - "101010": "101010", "ff8d9f": "e28854", "ed4e76": "ca5939", "975e17": "211b3d", diff --git a/public/images/pokemon/variant/back/881.json b/public/images/pokemon/variant/back/881.json index 3efad4efe60..580250907bc 100644 --- a/public/images/pokemon/variant/back/881.json +++ b/public/images/pokemon/variant/back/881.json @@ -4,7 +4,6 @@ "975e17": "5b0610", "ffff84": "ee8563", "ead900": "c6362b", - "101010": "101010", "2abbfc": "ceb16f", "09354d": "271014", "9ab8ba": "cea5b9", @@ -24,9 +23,7 @@ "975e17": "211b3d", "ffff84": "dceeeb", "ead900": "636287", - "101010": "101010", "2abbfc": "26c248", - "09354d": "09354d", "9ab8ba": "a3c465", "edf3f2": "fcffe4", "5c7996": "50a751", diff --git a/public/images/pokemon/variant/back/882.json b/public/images/pokemon/variant/back/882.json index bfaf844e6ed..27028180ff4 100644 --- a/public/images/pokemon/variant/back/882.json +++ b/public/images/pokemon/variant/back/882.json @@ -3,7 +3,6 @@ "434c63": "771922", "83bbed": "eaa561", "777ebd": "cc6235", - "101010": "101010", "003319": "1a182b", "005e44": "564e6e", "8f261b": "1d2238", @@ -19,7 +18,6 @@ "434c63": "450940", "83bbed": "8c1f45", "777ebd": "6c1046", - "101010": "101010", "003319": "cc7d3b", "005e44": "f1b45f", "8f261b": "215b68", diff --git a/public/images/pokemon/variant/back/883.json b/public/images/pokemon/variant/back/883.json index 354ac125db9..c28f2eb7f2f 100644 --- a/public/images/pokemon/variant/back/883.json +++ b/public/images/pokemon/variant/back/883.json @@ -3,7 +3,6 @@ "434c63": "3a151c", "83bbed": "eaa561", "172459": "771922", - "101010": "101010", "777ebd": "cc6235", "5c7996": "8c6060", "9ab8ba": "cea5b9", @@ -17,7 +16,6 @@ "434c63": "450940", "83bbed": "8c1f45", "172459": "320432", - "101010": "101010", "777ebd": "6c1046", "5c7996": "50a751", "9ab8ba": "a3c465", diff --git a/public/images/pokemon/variant/back/884-gigantamax.json b/public/images/pokemon/variant/back/884-gigantamax.json index 52bc8a7cab3..a813ba8c860 100644 --- a/public/images/pokemon/variant/back/884-gigantamax.json +++ b/public/images/pokemon/variant/back/884-gigantamax.json @@ -1,7 +1,6 @@ { "1": { "837080": "5d392f", - "151515": "151515", "c4bac5": "c19b85", "a893a8": "9b715e", "e4e5f1": "f8e0cf", @@ -15,7 +14,6 @@ }, "2": { "837080": "1a0e34", - "151515": "151515", "c4bac5": "443a6e", "a893a8": "312857", "e4e5f1": "6e5ca6", diff --git a/public/images/pokemon/variant/back/884.json b/public/images/pokemon/variant/back/884.json index 4cb8efc516b..e71bc735fdf 100644 --- a/public/images/pokemon/variant/back/884.json +++ b/public/images/pokemon/variant/back/884.json @@ -2,7 +2,6 @@ "1": { "68353c": "871e14", "b96a6a": "cd452b", - "151515": "151515", "a893a8": "a77c69", "e4e5f1": "f8e0cf", "837080": "5d392f", @@ -16,7 +15,6 @@ "2": { "68353c": "062449", "b96a6a": "2077a6", - "151515": "151515", "a893a8": "32234e", "e4e5f1": "65549c", "837080": "1a0e34", diff --git a/public/images/pokemon/variant/back/885.json b/public/images/pokemon/variant/back/885.json index a03ef2a9a01..ba01496a553 100644 --- a/public/images/pokemon/variant/back/885.json +++ b/public/images/pokemon/variant/back/885.json @@ -2,7 +2,6 @@ "0": { "3a583c": "133056", "fa5494": "efa93f", - "101010": "101010", "cc4066": "ac7508", "5f875a": "2f6c89", "476b48": "20486e", @@ -15,7 +14,6 @@ "1": { "3a583c": "2f040d", "fa5494": "4590da", - "101010": "101010", "cc4066": "244f9f", "5f875a": "7d1f2c", "476b48": "2f040d", @@ -28,7 +26,6 @@ "2": { "3a583c": "1f0c2c", "fa5494": "68c7c4", - "101010": "101010", "cc4066": "2a8286", "5f875a": "3c2750", "476b48": "231234", diff --git a/public/images/pokemon/variant/back/886.json b/public/images/pokemon/variant/back/886.json index be5cad5860a..227276bd075 100644 --- a/public/images/pokemon/variant/back/886.json +++ b/public/images/pokemon/variant/back/886.json @@ -1,19 +1,16 @@ { "0": { "444e62": "2d365a", - "101010": "101010", "addcbc": "6accd6", "5f875a": "2f6c89", "2c323f": "192250", "566f89": "465272", "fa5494": "efa93f", "7fb3b1": "78c3cb", - "d5fffb": "d5fffb", "5b878c": "4c90a6" }, "1": { "444e62": "4a1621", - "101010": "101010", "addcbc": "da6151", "5f875a": "6b242e", "2c323f": "2e080d", @@ -25,7 +22,6 @@ }, "2": { "444e62": "231b45", - "101010": "101010", "addcbc": "927fa1", "5f875a": "3c2750", "2c323f": "251b31", diff --git a/public/images/pokemon/variant/back/887.json b/public/images/pokemon/variant/back/887.json index e49645f7228..c2d1732dd33 100644 --- a/public/images/pokemon/variant/back/887.json +++ b/public/images/pokemon/variant/back/887.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "2c323f": "192250", "566f89": "46557b", "444e62": "2c3867", @@ -15,7 +14,6 @@ "48a9b0": "479bb6" }, "1": { - "101010": "101010", "2c323f": "2e080d", "566f89": "6c273d", "444e62": "4a1621", @@ -30,9 +28,7 @@ "48a9b0": "8a212f" }, "2": { - "101010": "101010", "2c323f": "1b163f", - "566f89": "566f89", "444e62": "332a59", "fa5494": "68c7c4", "cc4066": "2a666b", diff --git a/public/images/pokemon/variant/back/888-crowned.json b/public/images/pokemon/variant/back/888-crowned.json index e0e62e49bd5..3ca6bf9673c 100644 --- a/public/images/pokemon/variant/back/888-crowned.json +++ b/public/images/pokemon/variant/back/888-crowned.json @@ -2,7 +2,6 @@ "1": { "8f4e2f": "2f4567", "f2db8a": "a1c9cd", - "080808": "080808", "d79a53": "5a829b", "3471b4": "b74323", "2d4377": "5c1a1d", @@ -18,7 +17,6 @@ "2": { "8f4e2f": "692e47", "f2db8a": "c4826b", - "080808": "080808", "d79a53": "964c5c", "3471b4": "9fa7d0", "2d4377": "615c7e", diff --git a/public/images/pokemon/variant/back/888.json b/public/images/pokemon/variant/back/888.json index 22953486afb..12040268121 100644 --- a/public/images/pokemon/variant/back/888.json +++ b/public/images/pokemon/variant/back/888.json @@ -3,7 +3,6 @@ "2d4377": "5c1a1d", "4999da": "ec813b", "3471b4": "b74323", - "080808": "080808", "93262f": "0d2729", "f45353": "448b48", "be3c45": "224d42", @@ -16,7 +15,6 @@ "2d4377": "615c7e", "4999da": "e6ecff", "3471b4": "9fa7d0", - "080808": "080808", "93262f": "431042", "f45353": "902d57", "be3c45": "6c1d59", diff --git a/public/images/pokemon/variant/back/889-crowned.json b/public/images/pokemon/variant/back/889-crowned.json index cd69c495fff..963684b7306 100644 --- a/public/images/pokemon/variant/back/889-crowned.json +++ b/public/images/pokemon/variant/back/889-crowned.json @@ -1,7 +1,6 @@ { "1": { "2d2f7b": "102c2c", - "080808": "080808", "396dce": "70a757", "2d48a8": "3c6959", "8f4e2f": "2f4567", @@ -17,7 +16,6 @@ }, "2": { "2d2f7b": "244e61", - "080808": "080808", "396dce": "6fc7c1", "2d48a8": "4797a4", "8f4e2f": "692e47", diff --git a/public/images/pokemon/variant/back/889.json b/public/images/pokemon/variant/back/889.json index 883802e962a..3c172653f72 100644 --- a/public/images/pokemon/variant/back/889.json +++ b/public/images/pokemon/variant/back/889.json @@ -4,7 +4,6 @@ "396dce": "70a757", "2d48a8": "3c6959", "f2db8a": "a1c9cd", - "080808": "080808", "731a27": "1c163d", "eb363a": "614378", "ae2836": "422b61", @@ -17,7 +16,6 @@ "396dce": "6fc7c1", "2d48a8": "4797a4", "f2db8a": "c4826b", - "080808": "080808", "731a27": "615c7e", "eb363a": "e6ecff", "ae2836": "9fa7d0", diff --git a/public/images/pokemon/variant/back/890-eternamax.json b/public/images/pokemon/variant/back/890-eternamax.json index 356e1209bac..37dcd76f832 100644 --- a/public/images/pokemon/variant/back/890-eternamax.json +++ b/public/images/pokemon/variant/back/890-eternamax.json @@ -5,7 +5,6 @@ "6461ba": "6393a9", "641e30": "0778a0", "31245f": "162a52", - "010101": "010101", "e23434": "119bc7", "ab2a4c": "2fbbdc", "ff8c8c": "68e8f7", @@ -19,7 +18,6 @@ "6461ba": "e0ecff", "641e30": "934516", "31245f": "87a3dd", - "010101": "010101", "e23434": "d98d16", "ab2a4c": "cb7210", "ff8c8c": "e2a234", diff --git a/public/images/pokemon/variant/back/890.json b/public/images/pokemon/variant/back/890.json index 0c4ddb2ee61..97bb904cc13 100644 --- a/public/images/pokemon/variant/back/890.json +++ b/public/images/pokemon/variant/back/890.json @@ -8,11 +8,8 @@ "3a15bc": "264864", "675cc5": "406d89", "b21833": "21779e", - "010101": "010101", "f46d70": "8ef2ff", "f18cd5": "ff7d54", - "fefefe": "fefefe", - "ffbcbc": "ffbcbc", "e22dbc": "ee535a" }, "2": { @@ -24,11 +21,8 @@ "3a15bc": "bfd1fa", "675cc5": "e0ecff", "b21833": "bd5f10", - "010101": "010101", "f46d70": "f1bd4b", "f18cd5": "73e5dc", - "fefefe": "fefefe", - "ffbcbc": "ffbcbc", "e22dbc": "298fb9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/8901.json b/public/images/pokemon/variant/back/8901.json index 615b6219577..628da15b2de 100644 --- a/public/images/pokemon/variant/back/8901.json +++ b/public/images/pokemon/variant/back/8901.json @@ -2,24 +2,12 @@ "0": { "764e38": "823343", "b8805f": "b24c57", - "4b271b": "491b24", - "564d4e": "564d4e", - "847c7a": "847c7a", - "34302e": "34302e", - "bdb8b5": "bdb8b5", - "050505": "050505", - "efefef": "efefef" + "4b271b": "491b24" }, "1": { "764e38": "354d4f", "b8805f": "4d7269", - "4b271b": "2a2c33", - "564d4e": "564d4e", - "847c7a": "847c7a", - "34302e": "34302e", - "bdb8b5": "bdb8b5", - "050505": "050505", - "efefef": "efefef" + "4b271b": "2a2c33" }, "2": { "764e38": "423765", @@ -28,8 +16,6 @@ "564d4e": "5c486b", "847c7a": "c199ae", "34302e": "2a1a35", - "bdb8b5": "ede6eb", - "050505": "050505", - "efefef": "efefef" + "bdb8b5": "ede6eb" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/891.json b/public/images/pokemon/variant/back/891.json index 6a11dfad107..f20000f7a63 100644 --- a/public/images/pokemon/variant/back/891.json +++ b/public/images/pokemon/variant/back/891.json @@ -1,18 +1,13 @@ { "0": { "717674": "6d5755", - "101010": "101010", "d8d1cb": "d1c8ba", "b5ada6": "ad9a8a", - "9194a2": "9194a2", - "fbfbfb": "fbfbfb", - "c9cccd": "c9cccd", "393539": "34302f", "655e65": "5c5653" }, "1": { "717674": "263138", - "101010": "101010", "d8d1cb": "6e8b9b", "b5ada6": "475b68", "9194a2": "181b33", @@ -23,7 +18,6 @@ }, "2": { "717674": "56546b", - "101010": "101010", "d8d1cb": "e8e8ff", "b5ada6": "a4a4bc", "9194a2": "7f1c27", diff --git a/public/images/pokemon/variant/back/892-gigantamax-rapid.json b/public/images/pokemon/variant/back/892-gigantamax-rapid.json index 0c3cde948bb..66217fca718 100644 --- a/public/images/pokemon/variant/back/892-gigantamax-rapid.json +++ b/public/images/pokemon/variant/back/892-gigantamax-rapid.json @@ -1,18 +1,13 @@ { "0": { - "100d4f": "100d4f", "303ff1": "4550e6", "282d26": "25141f", - "2b337d": "2b337d", - "010101": "010101", "605f4d": "513b46", - "86a0fd": "86a0fd", "f5f5f5": "f4efe8", "9e6225": "8b222f", "fffa60": "ff9736", "d5a926": "b95826", "b5b5b5": "afa299", - "919191": "919191", "6b6574": "726259" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/892-gigantamax-single.json b/public/images/pokemon/variant/back/892-gigantamax-single.json index c2c5098b928..481912d7c11 100644 --- a/public/images/pokemon/variant/back/892-gigantamax-single.json +++ b/public/images/pokemon/variant/back/892-gigantamax-single.json @@ -2,15 +2,10 @@ "0": { "42473a": "382334", "282d26": "25141f", - "010101": "010101", "605f4d": "513b46", - "570f0f": "570f0f", "e7140a": "d03932", - "922718": "922718", - "fe7d70": "fe7d70", "f5f5f5": "f4efe8", "9e6225": "8b222f", - "919191": "919191", "fffa60": "ff9736", "d5a926": "b95826", "b5b5b5": "afa299", diff --git a/public/images/pokemon/variant/back/892-rapid-strike.json b/public/images/pokemon/variant/back/892-rapid-strike.json index cdccb62732d..9d1905b869b 100644 --- a/public/images/pokemon/variant/back/892-rapid-strike.json +++ b/public/images/pokemon/variant/back/892-rapid-strike.json @@ -2,12 +2,9 @@ "0": { "4f4b58": "4a2e27", "605f4d": "513b46", - "010101": "010101", "6b6574": "725444", "8d8c8e": "957961", "282d26": "25141f", - "fcfcfc": "fcfcfc", - "b9b9b9": "b9b9b9", "9e6225": "8b222f", "42473a": "382334", "fffa60": "ff9736", @@ -16,7 +13,6 @@ "1": { "4f4b58": "242a3f", "605f4d": "444f5b", - "010101": "010101", "6b6574": "4c6877", "8d8c8e": "809ba3", "282d26": "181b33", @@ -30,7 +26,6 @@ "2": { "4f4b58": "56546b", "605f4d": "213199", - "010101": "010101", "6b6574": "a4a4bc", "8d8c8e": "e8e8ff", "282d26": "07073f", diff --git a/public/images/pokemon/variant/back/892.json b/public/images/pokemon/variant/back/892.json index 5499ec660fe..7476bf85cfd 100644 --- a/public/images/pokemon/variant/back/892.json +++ b/public/images/pokemon/variant/back/892.json @@ -2,22 +2,18 @@ "0": { "282d26": "25141f", "605f4d": "513b46", - "b9b9b9": "b9b9b9", - "010101": "010101", "4f4b58": "4a2e27", "42473a": "382334", "6b6574": "725444", "8d8c8e": "957961", "9e6225": "8b222f", "fffa60": "ff9736", - "fcfcfc": "fcfcfc", "d5a926": "b95826" }, "1": { "282d26": "181b33", "605f4d": "444f5b", "b9b9b9": "768187", - "010101": "010101", "4f4b58": "263138", "42473a": "2e3549", "6b6574": "4c6877", @@ -31,7 +27,6 @@ "282d26": "3d0015", "605f4d": "870e2a", "b9b9b9": "a52139", - "010101": "010101", "4f4b58": "56546b", "42473a": "51081e", "6b6574": "a4a4bc", diff --git a/public/images/pokemon/variant/back/896.json b/public/images/pokemon/variant/back/896.json index f1c459febd1..a88dce32430 100644 --- a/public/images/pokemon/variant/back/896.json +++ b/public/images/pokemon/variant/back/896.json @@ -1,6 +1,5 @@ { "0": { - "000000": "000000", "8cacdd": "8f84c9", "bbd2ff": "b9abea", "4679b7": "5952a1", @@ -13,7 +12,6 @@ "6c6271": "68627a" }, "1": { - "000000": "000000", "8cacdd": "41d5b3", "bbd2ff": "9dffff", "4679b7": "00816c", @@ -26,7 +24,6 @@ "6c6271": "35486b" }, "2": { - "000000": "000000", "8cacdd": "bc393b", "bbd2ff": "f68c79", "4679b7": "780024", diff --git a/public/images/pokemon/variant/back/897.json b/public/images/pokemon/variant/back/897.json index 2d14655e39b..0217835accd 100644 --- a/public/images/pokemon/variant/back/897.json +++ b/public/images/pokemon/variant/back/897.json @@ -1,19 +1,13 @@ { "0": { - "101010": "101010", - "3c3c3c": "3c3c3c", "525852": "5d5458", "49478f": "894061", "7c5bcf": "d05a82", "00285c": "632741", - "d9a4e3": "d9a4e3", - "fcfcfc": "fcfcfc", - "755179": "755179", "504e8e": "80447d", "8776e4": "b862b3" }, "1": { - "101010": "101010", "3c3c3c": "622d51", "525852": "904c75", "49478f": "932f27", @@ -26,7 +20,6 @@ "8776e4": "ef8956" }, "2": { - "101010": "101010", "3c3c3c": "3a6965", "525852": "5c8a7b", "49478f": "13312b", diff --git a/public/images/pokemon/variant/back/898-ice.json b/public/images/pokemon/variant/back/898-ice.json index ec65a41c97a..c4ce4d27186 100644 --- a/public/images/pokemon/variant/back/898-ice.json +++ b/public/images/pokemon/variant/back/898-ice.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "8cacdd": "8f84c9", "004037": "00403c", "bbd2ff": "b9abea", @@ -8,8 +7,6 @@ "00584b": "005852", "4679b7": "5952a1", "525752": "6a5837", - "fbfbfb": "fbfbfb", - "c6c7cc": "c6c7cc", "9e8f87": "ae8b50", "d1c8be": "d7c881", "003071": "2f104f", @@ -19,11 +16,9 @@ "00285b": "3b2948", "cac0cb": "c9c0d4", "83818f": "6f6982", - "6c6271": "68627a", - "3c3c3c": "3c3c3c" + "6c6271": "68627a" }, "1": { - "101010": "101010", "8cacdd": "41d5b3", "004037": "00124d", "bbd2ff": "9dffff", @@ -31,8 +26,6 @@ "00584b": "183986", "4679b7": "00816c", "525752": "38255f", - "fbfbfb": "fbfbfb", - "c6c7cc": "c6c7cc", "9e8f87": "927ec4", "d1c8be": "ba9ded", "003071": "014837", @@ -42,11 +35,9 @@ "00285b": "8d075a", "cac0cb": "6f8ec1", "83818f": "506698", - "6c6271": "35486b", - "3c3c3c": "3c3c3c" + "6c6271": "35486b" }, "2": { - "101010": "101010", "8cacdd": "bc393b", "004037": "3c1522", "bbd2ff": "f68c79", diff --git a/public/images/pokemon/variant/back/898-shadow.json b/public/images/pokemon/variant/back/898-shadow.json index 336ba31bc8d..a15e24df045 100644 --- a/public/images/pokemon/variant/back/898-shadow.json +++ b/public/images/pokemon/variant/back/898-shadow.json @@ -4,21 +4,14 @@ "007766": "00776f", "00584b": "005852", "525752": "6a5837", - "101010": "101010", - "fbfbfb": "fbfbfb", - "3c3c3c": "3c3c3c", - "c7c8cd": "c7c8cd", "525852": "5d5458", "9e8f87": "ae8b50", "d1c8be": "d7c881", "49478f": "894061", "7c5bcf": "d05a82", "00285c": "632741", - "d9a4e3": "d9a4e3", "3b3b3b": "6a5837", - "fcfcfc": "fcfcfc", "00285b": "3b2948", - "755179": "755179", "504e8e": "80447d", "8776e4": "b862b3" }, @@ -27,10 +20,7 @@ "007766": "345ab5", "00584b": "183986", "525752": "38255f", - "101010": "101010", - "fbfbfb": "fbfbfb", "3c3c3c": "622d51", - "c7c8cd": "c7c8cd", "525852": "904c75", "9e8f87": "927ec4", "d1c8be": "ba9ded", @@ -50,7 +40,6 @@ "007766": "88253e", "00584b": "601b35", "525752": "181935", - "101010": "101010", "fbfbfb": "fefdeb", "3c3c3c": "3a6965", "c7c8cd": "ccc5bb", diff --git a/public/images/pokemon/variant/back/898.json b/public/images/pokemon/variant/back/898.json index b05b80efd5e..174c25d9379 100644 --- a/public/images/pokemon/variant/back/898.json +++ b/public/images/pokemon/variant/back/898.json @@ -7,8 +7,6 @@ "504e8e": "71517a", "007766": "00776f", "525852": "6a5837", - "101010": "101010", - "fcfcfc": "fcfcfc", "c7c8cd": "ccc6d1", "9e8f87": "ae8b50", "797b8f": "8e778d", @@ -23,8 +21,6 @@ "504e8e": "f55a95", "007766": "345ab5", "525852": "38255f", - "101010": "101010", - "fcfcfc": "fcfcfc", "c7c8cd": "ccc6d1", "9e8f87": "927ec4", "797b8f": "c64883", @@ -39,7 +35,6 @@ "504e8e": "cc8c49", "007766": "88253e", "525852": "181935", - "101010": "101010", "fcfcfc": "fefdeb", "c7c8cd": "c4bdb3", "9e8f87": "354d8a", diff --git a/public/images/pokemon/variant/back/9-gigantamax.json b/public/images/pokemon/variant/back/9-gigantamax.json index 689aac11b75..8ab2115c5a8 100644 --- a/public/images/pokemon/variant/back/9-gigantamax.json +++ b/public/images/pokemon/variant/back/9-gigantamax.json @@ -1,17 +1,12 @@ { "1": { "352e27": "2c2525", - "fdfdfd": "fdfdfd", "494136": "3e322f", "5f5647": "504945", - "949494": "949494", - "cdcdd5": "cdcdd5", "083962": "204c6d", - "101010": "101010", "2062ac": "33808c", "94ace6": "50b176", "5a8bcd": "5fc7a3", - "4a4a4a": "4a4a4a", "6ce8d6": "9bffa4", "c75435": "b44839", "ea7957": "e06a71" diff --git a/public/images/pokemon/variant/back/900.json b/public/images/pokemon/variant/back/900.json index 68558c7931b..835b578b32a 100644 --- a/public/images/pokemon/variant/back/900.json +++ b/public/images/pokemon/variant/back/900.json @@ -1,30 +1,14 @@ { "1": { - "080808": "080808", - "3a2e2f": "3a2e2f", - "6a5856": "6a5856", - "4d3d3e": "4d3d3e", - "96856d": "96856d", - "fcfcfc": "fcfcfc", - "2b1f22": "2b1f22", - "c8bdb7": "c8bdb7", "6b563a": "221a69", "af7845": "354da7", - "e2b561": "4b84d2", - "e3d1ae": "e3d1ae" + "e2b561": "4b84d2" }, "2": { - "080808": "080808", - "3a2e2f": "3a2e2f", "6a5856": "424242", "4d3d3e": "808080", - "96856d": "96856d", - "fcfcfc": "fcfcfc", - "2b1f22": "2b1f22", - "c8bdb7": "c8bdb7", "6b563a": "a54200", "af7845": "e68400", - "e2b561": "ffde00", - "e3d1ae": "e3d1ae" + "e2b561": "ffde00" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/901.json b/public/images/pokemon/variant/back/901.json index da538225735..c3fc4fb00ed 100644 --- a/public/images/pokemon/variant/back/901.json +++ b/public/images/pokemon/variant/back/901.json @@ -1,24 +1,16 @@ { "1": { "382423": "1c2825", - "0f0f0f": "0f0f0f", "502f29": "273b32", "231a18": "0c1515", - "77655b": "77655b", - "9c8d86": "9c8d86", - "4b4236": "4b4236", "63443d": "31563f", "ca8b35": "c48e81", "fec643": "f7eee1", - "fcfcfc": "fcfcfc", "25521f": "557f24", - "fec672": "f2cab8", - "95908a": "95908a", - "b4b4b1": "b4b4b1" + "fec672": "f2cab8" }, "2": { "382423": "1e2249", - "0f0f0f": "0f0f0f", "502f29": "323760", "231a18": "111433", "77655b": "c199ae", @@ -27,10 +19,7 @@ "63443d": "46527a", "ca8b35": "437aff", "fec643": "bfeeff", - "fcfcfc": "fcfcfc", "25521f": "f83259", - "fec672": "96b7ff", - "95908a": "95908a", - "b4b4b1": "b4b4b1" + "fec672": "96b7ff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/903.json b/public/images/pokemon/variant/back/903.json index 4cfc1cf557a..1f689b19af0 100644 --- a/public/images/pokemon/variant/back/903.json +++ b/public/images/pokemon/variant/back/903.json @@ -4,13 +4,10 @@ "415b81": "3a0f0e", "533662": "136e81", "9ebade": "bd795f", - "0f110d": "0f110d", "718fbe": "9f4c3d", "8e2458": "12968b", "6a56b3": "722738", "36326d": "210609", - "f8feff": "f8feff", - "9b98a9": "9b98a9", "de2f41": "31dabb", "eb357c": "31dabb" }, @@ -19,7 +16,6 @@ "415b81": "0e2125", "533662": "982e33", "9ebade": "256258", - "0f110d": "0f110d", "718fbe": "194648", "8e2458": "cc5427", "6a56b3": "65b571", diff --git a/public/images/pokemon/variant/back/909.json b/public/images/pokemon/variant/back/909.json index 37ffae8ca39..afcdebd5e28 100644 --- a/public/images/pokemon/variant/back/909.json +++ b/public/images/pokemon/variant/back/909.json @@ -8,9 +8,7 @@ "745e45": "76976a", "aaa493": "a4ba9e", "dfa22f": "8cd9d9", - "0f0f0f": "152828", - "525867": "525867", - "373c46": "373c46" + "0f0f0f": "152828" }, "2": { "fe5c2e": "2ce455", @@ -21,8 +19,6 @@ "745e45": "55754a", "aaa493": "82977c", "dfa22f": "2ce455", - "0f0f0f": "162319", - "525867": "525867", - "373c46": "373c46" + "0f0f0f": "162319" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/911.json b/public/images/pokemon/variant/back/911.json index c46e1bdbb5d..07b60682d4c 100644 --- a/public/images/pokemon/variant/back/911.json +++ b/public/images/pokemon/variant/back/911.json @@ -7,24 +7,19 @@ "5b5c5e": "4f5052", "fcfcfc": "cccccc", "9fa0a2": "758a70", - "333c36": "333c36", "ba3227": "234141", "741010": "152828", - "ff4a3c": "366565", - "0f0f0f": "0f0f0f" + "ff4a3c": "366565" }, "2": { "d20000": "0ea631", "f45511": "2fe757", "ee8b08": "08e739", "ffd017": "4ffc75", - "5b5c5e": "5b5c5e", "fcfcfc": "e5ffec", "9fa0a2": "82977c", - "333c36": "333c36", "ba3227": "243929", "741010": "162319", - "ff4a3c": "38583f", - "0f0f0f": "0f0f0f" + "ff4a3c": "38583f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/912.json b/public/images/pokemon/variant/back/912.json index bbbe5288893..fce8f37518a 100644 --- a/public/images/pokemon/variant/back/912.json +++ b/public/images/pokemon/variant/back/912.json @@ -2,7 +2,6 @@ "1": { "1f5978": "8c3b14", "2fbee8": "e69c51", - "0f0f0f": "0f0f0f", "3686b1": "d96536", "becde4": "d79f63", "4d6373": "975432", @@ -11,7 +10,6 @@ "2": { "1f5978": "0a3025", "2fbee8": "33b37e", - "0f0f0f": "0f0f0f", "3686b1": "1c7962", "becde4": "5137a0", "4d6373": "2d185d", diff --git a/public/images/pokemon/variant/back/913.json b/public/images/pokemon/variant/back/913.json index e9d85674c0e..fbe1defcb77 100644 --- a/public/images/pokemon/variant/back/913.json +++ b/public/images/pokemon/variant/back/913.json @@ -6,7 +6,6 @@ "13325e": "3f050e", "174b6a": "862311", "30b0ba": "f77122", - "0f0f0f": "0f0f0f", "916a44": "3b2e28", "ddc271": "5b5450", "d0c4d3": "d79f63", @@ -23,7 +22,6 @@ "13325e": "072a2b", "174b6a": "541222", "30b0ba": "a22f49", - "0f0f0f": "0f0f0f", "916a44": "4b251b", "ddc271": "c76740", "d0c4d3": "3b188e", diff --git a/public/images/pokemon/variant/back/914.json b/public/images/pokemon/variant/back/914.json index 2179ed6d464..a10fad30d99 100644 --- a/public/images/pokemon/variant/back/914.json +++ b/public/images/pokemon/variant/back/914.json @@ -7,7 +7,6 @@ "333f93": "821e24", "752911": "302822", "e3460f": "f8edb9", - "0f0f0f": "0f0f0f", "a24720": "dac194", "8ea6a8": "d79f63", "62747b": "975432", @@ -26,7 +25,6 @@ "333f93": "0f4537", "752911": "664747", "e3460f": "fff2e5", - "0f0f0f": "0f0f0f", "a24720": "eac7b4", "8ea6a8": "3b188e", "62747b": "120e4a", diff --git a/public/images/pokemon/variant/back/919.json b/public/images/pokemon/variant/back/919.json index 0f7ecc24eab..581aaf57432 100644 --- a/public/images/pokemon/variant/back/919.json +++ b/public/images/pokemon/variant/back/919.json @@ -4,7 +4,6 @@ "63738c": "4b453d", "798aa2": "6c655c", "4b5870": "302d27", - "121212": "121212", "41485b": "23211d", "dde1e4": "cec890", "c0bdc0": "a29d62", @@ -12,7 +11,6 @@ "7b8ca3": "6c655c", "b0acb0": "a29d62", "ffc608": "d02c35", - "0f0f0f": "0f0f0f", "a38215": "b52736", "a49dac": "62654e" }, @@ -21,24 +19,16 @@ "63738c": "498f57", "798aa2": "70ba74", "4b5870": "295449", - "121212": "121212", "41485b": "1c3835", - "dde1e4": "dde1e4", - "c0bdc0": "c0bdc0", - "636164": "636164", "7b8ca3": "70ba74", - "b0acb0": "b0acb0", "ffc608": "c54d2d", - "0f0f0f": "0f0f0f", - "a38215": "7f223a", - "a49dac": "a49dac" + "a38215": "7f223a" }, "2": { "2f323c": "340f21", "63738c": "983444", "798aa2": "c74d51", "4b5870": "601c3a", - "121212": "121212", "41485b": "4b132c", "dde1e4": "444444", "c0bdc0": "444444", @@ -46,7 +36,6 @@ "7b8ca3": "c74d51", "b0acb0": "333333", "ffc608": "2977b6", - "0f0f0f": "0f0f0f", "a38215": "293c7d", "a49dac": "222222" } diff --git a/public/images/pokemon/variant/back/920.json b/public/images/pokemon/variant/back/920.json index 79b215090f3..2b41be162fe 100644 --- a/public/images/pokemon/variant/back/920.json +++ b/public/images/pokemon/variant/back/920.json @@ -1,12 +1,8 @@ { "0": { "292829": "475316", - "0f0f0f": "0f0f0f", "505050": "dbcf15", "3c393c": "8e931a", - "e6ebef": "e6ebef", - "a59aa5": "a59aa5", - "ffffff": "ffffff", "6b6d6b": "f6ea5f", "607381": "444444", "8e4815": "4d0517", @@ -17,12 +13,8 @@ }, "1": { "292829": "1e391b", - "0f0f0f": "0f0f0f", "505050": "529042", "3c393c": "34642c", - "e6ebef": "e6ebef", - "a59aa5": "a59aa5", - "ffffff": "ffffff", "6b6d6b": "6ea25e", "607381": "919191", "8e4815": "550927", @@ -33,12 +25,8 @@ }, "2": { "292829": "47132c", - "0f0f0f": "0f0f0f", "505050": "b52828", "3c393c": "791b2d", - "e6ebef": "e6ebef", - "a59aa5": "a59aa5", - "ffffff": "ffffff", "6b6d6b": "df4747", "607381": "858585", "8e4815": "1c1936", diff --git a/public/images/pokemon/variant/back/924.json b/public/images/pokemon/variant/back/924.json index 9b2e1c7db20..af06a7001ea 100644 --- a/public/images/pokemon/variant/back/924.json +++ b/public/images/pokemon/variant/back/924.json @@ -3,7 +3,6 @@ "393a44": "344854", "f9f9f9": "cddef1", "b8b9c0": "9c89d2", - "0f0f0f": "0f0f0f", "888b97": "5a6e8f", "565765": "444561", "567d9a": "755382", @@ -14,7 +13,6 @@ "393a44": "3f0f0f", "f9f9f9": "b39090", "b8b9c0": "785e5e", - "0f0f0f": "0f0f0f", "888b97": "6e4343", "565765": "543131", "567d9a": "a15d55", @@ -25,7 +23,6 @@ "393a44": "27272e", "f9f9f9": "757373", "b8b9c0": "4b4b4d", - "0f0f0f": "0f0f0f", "888b97": "3c3c3d", "565765": "252526", "567d9a": "471910", diff --git a/public/images/pokemon/variant/back/925-four.json b/public/images/pokemon/variant/back/925-four.json index 9b2e1c7db20..af06a7001ea 100644 --- a/public/images/pokemon/variant/back/925-four.json +++ b/public/images/pokemon/variant/back/925-four.json @@ -3,7 +3,6 @@ "393a44": "344854", "f9f9f9": "cddef1", "b8b9c0": "9c89d2", - "0f0f0f": "0f0f0f", "888b97": "5a6e8f", "565765": "444561", "567d9a": "755382", @@ -14,7 +13,6 @@ "393a44": "3f0f0f", "f9f9f9": "b39090", "b8b9c0": "785e5e", - "0f0f0f": "0f0f0f", "888b97": "6e4343", "565765": "543131", "567d9a": "a15d55", @@ -25,7 +23,6 @@ "393a44": "27272e", "f9f9f9": "757373", "b8b9c0": "4b4b4d", - "0f0f0f": "0f0f0f", "888b97": "3c3c3d", "565765": "252526", "567d9a": "471910", diff --git a/public/images/pokemon/variant/back/925-three.json b/public/images/pokemon/variant/back/925-three.json index 9b2e1c7db20..af06a7001ea 100644 --- a/public/images/pokemon/variant/back/925-three.json +++ b/public/images/pokemon/variant/back/925-three.json @@ -3,7 +3,6 @@ "393a44": "344854", "f9f9f9": "cddef1", "b8b9c0": "9c89d2", - "0f0f0f": "0f0f0f", "888b97": "5a6e8f", "565765": "444561", "567d9a": "755382", @@ -14,7 +13,6 @@ "393a44": "3f0f0f", "f9f9f9": "b39090", "b8b9c0": "785e5e", - "0f0f0f": "0f0f0f", "888b97": "6e4343", "565765": "543131", "567d9a": "a15d55", @@ -25,7 +23,6 @@ "393a44": "27272e", "f9f9f9": "757373", "b8b9c0": "4b4b4d", - "0f0f0f": "0f0f0f", "888b97": "3c3c3d", "565765": "252526", "567d9a": "471910", diff --git a/public/images/pokemon/variant/back/93.json b/public/images/pokemon/variant/back/93.json index d25c8085a4c..1b0b795524d 100644 --- a/public/images/pokemon/variant/back/93.json +++ b/public/images/pokemon/variant/back/93.json @@ -5,10 +5,7 @@ "524263": "52426b", "c58cce": "dfcaee", "ad6bce": "caaddf", - "b51919": "2963d6", - "101010": "101010", - "ffffff": "ffffff", - "d6d6d6": "d6d6d6" + "b51919": "2963d6" }, "1": { "de4a31": "7ee75c", @@ -16,10 +13,7 @@ "524263": "380508", "c58cce": "c06380", "ad6bce": "8e395f", - "b51919": "2eb063", - "101010": "101010", - "ffffff": "ffffff", - "d6d6d6": "d6d6d6" + "b51919": "2eb063" }, "2": { "de4a31": "e47750", @@ -27,9 +21,6 @@ "524263": "1a1320", "c58cce": "897e91", "ad6bce": "544e59", - "b51919": "b72b47", - "101010": "101010", - "ffffff": "ffffff", - "d6d6d6": "d6d6d6" + "b51919": "b72b47" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/932.json b/public/images/pokemon/variant/back/932.json index 307d0fbe1bb..4a7b43945b8 100644 --- a/public/images/pokemon/variant/back/932.json +++ b/public/images/pokemon/variant/back/932.json @@ -2,7 +2,6 @@ "1": { "717171": "82556e", "ffffff": "f9c2cd", - "121212": "121212", "b4b4b4": "bc8296", "c6876e": "deeaf3", "875651": "9ba7b0", @@ -13,7 +12,6 @@ "2": { "717171": "383744", "ffffff": "9ba0a0", - "121212": "121212", "b4b4b4": "63636d", "c6876e": "7cbf7f", "875651": "618c56", diff --git a/public/images/pokemon/variant/back/933.json b/public/images/pokemon/variant/back/933.json index d2aed23d065..22bdad71eaa 100644 --- a/public/images/pokemon/variant/back/933.json +++ b/public/images/pokemon/variant/back/933.json @@ -1,7 +1,6 @@ { "1": { "636363": "90a4b5", - "121212": "121212", "c6876e": "bc8296", "8c6464": "d8e9f5", "b4b4b4": "adbac3", @@ -15,7 +14,6 @@ }, "2": { "636363": "444251", - "121212": "121212", "c6876e": "5d9157", "8c6464": "3d5e47", "b4b4b4": "63636d", diff --git a/public/images/pokemon/variant/back/934.json b/public/images/pokemon/variant/back/934.json index 84d33b5f448..2aec5e8fe82 100644 --- a/public/images/pokemon/variant/back/934.json +++ b/public/images/pokemon/variant/back/934.json @@ -6,7 +6,6 @@ "c1b5bd": "bc808c", "64514d": "6d7982", "96675a": "adbac3", - "0f0f0f": "0f0f0f", "44332e": "3a464f", "58493e": "563d41", "c3927b": "d8e9f5", @@ -20,7 +19,6 @@ "c1b5bd": "6a6a72", "64514d": "3d5e47", "96675a": "5d9157", - "0f0f0f": "0f0f0f", "44332e": "2b3f3f", "58493e": "444f47", "c3927b": "7fc17c", diff --git a/public/images/pokemon/variant/back/936.json b/public/images/pokemon/variant/back/936.json index 98c7398e1a0..e2131c8988e 100644 --- a/public/images/pokemon/variant/back/936.json +++ b/public/images/pokemon/variant/back/936.json @@ -3,15 +3,11 @@ "e42212": "93d6b7", "fdcd0d": "b885d6", "e589b5": "a59fdf", - "1b2123": "1b2123", "8a2f2f": "5ba0cc", - "4a4848": "4a4848", "5b3e1c": "1d1d36", - "383636": "383636", "a27715": "343467", "cfac07": "645aa3", "f0e631": "6d74b8", - "0f0f0f": "0f0f0f", "542829": "465da8", "fffba6": "aab1ef" }, @@ -21,13 +17,10 @@ "e589b5": "a3bfcc", "1b2123": "342351", "8a2f2f": "418dcc", - "4a4848": "4a4848", "5b3e1c": "193939", - "383636": "383636", "a27715": "2e5f55", "cfac07": "4c8954", "f0e631": "78b770", - "0f0f0f": "0f0f0f", "542829": "1f4a7f", "fffba6": "8be68b" }, @@ -35,15 +28,11 @@ "e42212": "e72ecb", "fdcd0d": "fd890d", "e589b5": "ff5668", - "1b2123": "1b2123", "8a2f2f": "9d4193", - "4a4848": "4a4848", "5b3e1c": "515b7f", - "383636": "383636", "a27715": "7a7fa8", "cfac07": "91a1c1", "f0e631": "cbd4f4", - "0f0f0f": "0f0f0f", "542829": "5e385a", "fffba6": "ffffff" } diff --git a/public/images/pokemon/variant/back/937.json b/public/images/pokemon/variant/back/937.json index d2b407afb4a..46b00ac4a90 100644 --- a/public/images/pokemon/variant/back/937.json +++ b/public/images/pokemon/variant/back/937.json @@ -6,7 +6,6 @@ "97c7dd": "ff8cc7", "343467": "ad5e15", "645aa3": "efcc32", - "0f0f0f": "0f0f0f", "292528": "ad5e15", "2541ad": "c44648", "1d1d36": "5b3e1c", @@ -20,7 +19,6 @@ "97c7dd": "f4b766", "343467": "b52d6c", "645aa3": "e57bc4", - "0f0f0f": "0f0f0f", "292528": "b52d6c", "2541ad": "992923", "1d1d36": "7a1e47", @@ -34,10 +32,8 @@ "97c7dd": "9668e3", "343467": "515b7f", "645aa3": "cbd4f4", - "0f0f0f": "0f0f0f", "292528": "515b7f", "2541ad": "4615bd", - "1d1d36": "1d1d36", "454589": "91a1c1", "453d43": "8897aa" } diff --git a/public/images/pokemon/variant/back/94-gigantamax.json b/public/images/pokemon/variant/back/94-gigantamax.json index 550f763a83f..348c78479ab 100644 --- a/public/images/pokemon/variant/back/94-gigantamax.json +++ b/public/images/pokemon/variant/back/94-gigantamax.json @@ -1,7 +1,6 @@ { "0": { "5a4a9c": "a89dc4", - "101010": "101010", "b48bbd": "fefefe", "9473b4": "fcf4fc", "4a294a": "634b63", @@ -10,7 +9,6 @@ }, "1": { "5a4a9c": "4a1f36", - "101010": "101010", "b48bbd": "c56f8a", "9473b4": "8d3e61", "4a294a": "201323", @@ -19,7 +17,6 @@ }, "2": { "5a4a9c": "302433", - "101010": "101010", "b48bbd": "7b6888", "9473b4": "3f324a", "4a294a": "201323", diff --git a/public/images/pokemon/variant/back/94-mega.json b/public/images/pokemon/variant/back/94-mega.json index a903b3aefb0..ee1076223f4 100644 --- a/public/images/pokemon/variant/back/94-mega.json +++ b/public/images/pokemon/variant/back/94-mega.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "4d2a4d": "634b63", "503f73": "d1bcd6", "775499": "fcf4fc", @@ -11,7 +10,6 @@ "ff5991": "72e9f2" }, "1": { - "101010": "101010", "4d2a4d": "1a1320", "503f73": "511e3b", "775499": "a44c73", @@ -22,7 +20,6 @@ "ff5991": "c1ea61" }, "2": { - "101010": "101010", "4d2a4d": "1a1320", "503f73": "302433", "775499": "3f324a", diff --git a/public/images/pokemon/variant/back/94.json b/public/images/pokemon/variant/back/94.json index 23175bfe203..028450f1498 100644 --- a/public/images/pokemon/variant/back/94.json +++ b/public/images/pokemon/variant/back/94.json @@ -2,7 +2,6 @@ "0": { "5a4a9c": "9e85a6", "b58cbd": "ebdbf7", - "101010": "101010", "9473b5": "cbb7da", "4a294a": "634b63", "7b63a5": "b8a2c3" @@ -10,7 +9,6 @@ "1": { "5a4a9c": "4a1f36", "b58cbd": "c56f8a", - "101010": "101010", "9473b5": "8d3e61", "4a294a": "1b0917", "7b63a5": "6f284a" @@ -18,7 +16,6 @@ "2": { "5a4a9c": "302433", "b58cbd": "7b6888", - "101010": "101010", "9473b5": "3f324a", "4a294a": "201323", "7b63a5": "3f324a" diff --git a/public/images/pokemon/variant/back/940.json b/public/images/pokemon/variant/back/940.json index 313dbd273ec..c68f4dc3c10 100644 --- a/public/images/pokemon/variant/back/940.json +++ b/public/images/pokemon/variant/back/940.json @@ -2,11 +2,9 @@ "1": { "2f3135": "372b61", "3f424d": "4c4982", - "181a1b": "181a1b", "ffcd37": "7dffc0", "be8f29": "5dd9c8", "91a5c3": "e39fc5", - "f9f9f9": "f9f9f9", "73bbbf": "f7859b", "643c28": "433382", "c27741": "9a5fd9", @@ -17,11 +15,9 @@ "2": { "2f3135": "e099a5", "3f424d": "edc5c8", - "181a1b": "181a1b", "ffcd37": "d9647b", "be8f29": "b3466a", "91a5c3": "ba73b2", - "f9f9f9": "f9f9f9", "73bbbf": "ffcf4a", "643c28": "2b2745", "c27741": "57436e", diff --git a/public/images/pokemon/variant/back/941.json b/public/images/pokemon/variant/back/941.json index 8ac4f1c0d7f..9bbee8a2e92 100644 --- a/public/images/pokemon/variant/back/941.json +++ b/public/images/pokemon/variant/back/941.json @@ -1,12 +1,9 @@ { "1": { - "15161e": "15161e", "34393f": "2b3863", "26282c": "1f1d54", "aa7e24": "3dd1cc", "ffcd37": "6ef5c8", - "fdfdfd": "fdfdfd", - "0f0f0f": "0f0f0f", "73bbbf": "de82ff", "2b1717": "773185", "692a2f": "ff9ec6", @@ -15,13 +12,10 @@ "37415a": "55348a" }, "2": { - "15161e": "15161e", "34393f": "f7bebe", "26282c": "e394a7", "aa7e24": "c44f6c", "ffcd37": "e3667d", - "fdfdfd": "fdfdfd", - "0f0f0f": "0f0f0f", "73bbbf": "ffcf4a", "2b1717": "3a3466", "692a2f": "776294", diff --git a/public/images/pokemon/variant/back/948.json b/public/images/pokemon/variant/back/948.json index 35aff4a6038..d567f9de04a 100644 --- a/public/images/pokemon/variant/back/948.json +++ b/public/images/pokemon/variant/back/948.json @@ -6,7 +6,6 @@ "f8d3c2": "8b91c8", "ffec37": "ff6237", "976924": "a50927", - "000000": "000000", "eaba2b": "ce271a", "d2bbac": "e2bea6", "fef8f5": "fff4f1", @@ -19,7 +18,6 @@ "f8d3c2": "eb9a93", "ffec37": "4b86bd", "976924": "254087", - "000000": "000000", "eaba2b": "2e609b", "d2bbac": "d8bdab", "fef8f5": "ffede5", diff --git a/public/images/pokemon/variant/back/949.json b/public/images/pokemon/variant/back/949.json index 1773e282574..2684d9055cc 100644 --- a/public/images/pokemon/variant/back/949.json +++ b/public/images/pokemon/variant/back/949.json @@ -3,15 +3,12 @@ "404040": "4b3073", "282828": "33134d", "5f5f5f": "7462ad", - "000000": "000000", "86433c": "a50927", "ca7268": "d41929", "ede652": "1672a1", - "ffffff": "ffffff", "d6938b": "ff4737", "e7bcb8": "ff9d6d", "cdae52": "0c4a83", - "101010": "101010", "c2ae83": "b29785", "94724b": "60473c", "936839": "042259" @@ -20,15 +17,12 @@ "404040": "70150e", "282828": "460001", "5f5f5f": "c64d30", - "000000": "000000", "86433c": "401e54", "ca7268": "613a8a", "ede652": "dd7731", - "ffffff": "ffffff", "d6938b": "8e65c1", "e7bcb8": "dd9dff", "cdae52": "af3610", - "101010": "101010", "c2ae83": "d9b591", "94724b": "6f492c", "936839": "7e1200" diff --git a/public/images/pokemon/variant/back/951.json b/public/images/pokemon/variant/back/951.json index 600d22ebc33..4e9cc76122b 100644 --- a/public/images/pokemon/variant/back/951.json +++ b/public/images/pokemon/variant/back/951.json @@ -6,10 +6,8 @@ "a6b496": "facf81", "f0fbe3": "ffeacc", "2f683c": "9d6b5b", - "0f0f0f": "0f0f0f", "5c7c5c": "4c292f", "ff9115": "ffb676", - "2e302f": "2e302f", "79b97b": "704f4f" }, "2": { @@ -19,10 +17,8 @@ "a6b496": "fa95d1", "f0fbe3": "fecff5", "2f683c": "7456a8", - "0f0f0f": "0f0f0f", "5c7c5c": "8e7eb1", "ff9115": "b6dfff", - "2e302f": "2e302f", "79b97b": "cfbfe6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/952.json b/public/images/pokemon/variant/back/952.json index 4f6d47d615d..5502fb57a0a 100644 --- a/public/images/pokemon/variant/back/952.json +++ b/public/images/pokemon/variant/back/952.json @@ -8,7 +8,6 @@ "3f8147": "d38c43", "69ab7b": "be8a84", "42804b": "9d6b5b", - "0f0f0f": "0f0f0f", "262826": "3b1720", "476b51": "704f4f", "3c5042": "4c292f", @@ -23,7 +22,6 @@ "3f8147": "627bcd", "69ab7b": "c4a4eb", "42804b": "9884d3", - "0f0f0f": "0f0f0f", "262826": "7a6597", "476b51": "f8f3fe", "3c5042": "cfbfe6", diff --git a/public/images/pokemon/variant/back/953.json b/public/images/pokemon/variant/back/953.json index 9a56df52cb9..17e3c06732b 100644 --- a/public/images/pokemon/variant/back/953.json +++ b/public/images/pokemon/variant/back/953.json @@ -8,7 +8,6 @@ "c5b4aa": "d3e6e6", "37332b": "104139", "777463": "199e46", - "000000": "000000", "a28e86": "c1d8db", "b96c26": "2f7410" }, @@ -21,7 +20,6 @@ "c5b4aa": "39cfbc", "37332b": "261031", "777463": "8358a1", - "000000": "000000", "a28e86": "52b0b0", "b96c26": "4792bd" } diff --git a/public/images/pokemon/variant/back/954.json b/public/images/pokemon/variant/back/954.json index b760ea947d4..b591f9593db 100644 --- a/public/images/pokemon/variant/back/954.json +++ b/public/images/pokemon/variant/back/954.json @@ -7,7 +7,6 @@ "f73983": "ffbc00", "9a1b48": "fffd91", "f8f8f8": "fbf3ab", - "181818": "181818", "5ea2c6": "7d4538", "6bc0dd": "b05858", "3f4f5c": "523223", @@ -23,7 +22,6 @@ "f73983": "141031", "9a1b48": "ded051", "f8f8f8": "432f77", - "181818": "181818", "5ea2c6": "616481", "6bc0dd": "9e9fb6", "3f4f5c": "21214c", diff --git a/public/images/pokemon/variant/back/957.json b/public/images/pokemon/variant/back/957.json index 2c5e45997ff..81ea5b4b1e5 100644 --- a/public/images/pokemon/variant/back/957.json +++ b/public/images/pokemon/variant/back/957.json @@ -3,7 +3,6 @@ "522e45": "56224b", "ecd0d0": "f2d5cb", "aa848f": "ad858d", - "0f0f0f": "0f0f0f", "a74167": "993868", "ec558c": "c65f7e", "e991b5": "ff9ba0", @@ -15,7 +14,6 @@ "522e45": "7f3435", "ecd0d0": "fef8e6", "aa848f": "aecdcf", - "0f0f0f": "0f0f0f", "a74167": "ee8363", "ec558c": "f3ad79", "e991b5": "ffd8ad", @@ -27,7 +25,6 @@ "522e45": "3e325e", "ecd0d0": "ecd9f7", "aa848f": "c0b3e2", - "0f0f0f": "0f0f0f", "a74167": "7b3f91", "ec558c": "a557a3", "e991b5": "db9fea", diff --git a/public/images/pokemon/variant/back/958.json b/public/images/pokemon/variant/back/958.json index ad50c394745..dc8a9fff24d 100644 --- a/public/images/pokemon/variant/back/958.json +++ b/public/images/pokemon/variant/back/958.json @@ -6,7 +6,6 @@ "312b33": "3f2319", "897194": "8b5745", "ada1c5": "cb836c", - "0f0f0f": "0f0f0f", "e991b5": "ff9ba0", "ae597d": "d35673", "ec558c": "c65f7e", @@ -21,7 +20,6 @@ "312b33": "3f2319", "897194": "834436", "ada1c5": "bf7754", - "0f0f0f": "0f0f0f", "e991b5": "f6c58d", "ae597d": "ad7058", "ec558c": "f3ad79", @@ -36,7 +34,6 @@ "312b33": "1e1d30", "897194": "6a6e77", "ada1c5": "aebab6", - "0f0f0f": "0f0f0f", "e991b5": "db9fea", "ae597d": "a171c4", "ec558c": "a557a3", diff --git a/public/images/pokemon/variant/back/959.json b/public/images/pokemon/variant/back/959.json index 544c4431a68..671346287fc 100644 --- a/public/images/pokemon/variant/back/959.json +++ b/public/images/pokemon/variant/back/959.json @@ -3,12 +3,7 @@ "2b153a": "3d171f", "5f4c9b": "77394b", "452f66": "592740", - "111111": "111111", - "aa855d": "aa855d", - "664636": "664636", "897193": "aa624c", - "eeebc8": "eeebc8", - "e2c793": "e2c793", "524059": "512d1e", "aaa0c3": "e48d72", "cc518e": "873659", @@ -26,7 +21,6 @@ "2b153a": "281738", "5f4c9b": "377377", "452f66": "19374a", - "111111": "111111", "aa855d": "80959f", "664636": "535d6c", "897193": "834436", @@ -49,7 +43,6 @@ "2b153a": "1e1d30", "5f4c9b": "aebab6", "452f66": "6a6e77", - "111111": "111111", "aa855d": "ad9c8a", "664636": "685952", "897193": "353549", diff --git a/public/images/pokemon/variant/back/962.json b/public/images/pokemon/variant/back/962.json index 615d983e2c5..efb88b17751 100644 --- a/public/images/pokemon/variant/back/962.json +++ b/public/images/pokemon/variant/back/962.json @@ -1,7 +1,6 @@ { "0": { "342930": "3e1d26", - "0f0f0f": "0f0f0f", "4a3942": "60354a", "937d85": "b1686b", "b9aaaf": "dd9f9d", @@ -17,7 +16,6 @@ }, "1": { "342930": "1e382a", - "0f0f0f": "0f0f0f", "4a3942": "395740", "937d85": "6b7e50", "b9aaaf": "c6ca8e", @@ -33,7 +31,6 @@ }, "2": { "342930": "754156", - "0f0f0f": "0f0f0f", "4a3942": "a5777f", "937d85": "2f2655", "b9aaaf": "453863", diff --git a/public/images/pokemon/variant/back/967.json b/public/images/pokemon/variant/back/967.json index 7eab2cd96f5..bdd96d92422 100644 --- a/public/images/pokemon/variant/back/967.json +++ b/public/images/pokemon/variant/back/967.json @@ -1,31 +1,22 @@ { "1": { "384a35": "464354", - "b9b7b3": "b9b7b3", "54654e": "67637a", "1c2916": "272431", - "0f0f0f": "0f0f0f", "f16b32": "bead9d", "34453d": "444a71", "607d6d": "6e76a9", - "75b07d": "9299c7", - "fcfcfc": "fcfcfc", - "323943": "323943", - "222328": "222328", - "4b565c": "4b565c", - "e2e9d7": "e2e9d7" + "75b07d": "9299c7" }, "2": { "384a35": "5d0c0c", "b9b7b3": "c0ab8b", "54654e": "942d22", "1c2916": "43060b", - "0f0f0f": "0f0f0f", "f16b32": "8c63d2", "34453d": "45141d", "607d6d": "6b2c31", "75b07d": "a95d50", - "fcfcfc": "fcfcfc", "323943": "502b2a", "222328": "371516", "4b565c": "815652", diff --git a/public/images/pokemon/variant/back/968.json b/public/images/pokemon/variant/back/968.json index 83a04a2bd2c..cf193ddfff8 100644 --- a/public/images/pokemon/variant/back/968.json +++ b/public/images/pokemon/variant/back/968.json @@ -1,30 +1,19 @@ { "1": { - "52585c": "52585c", - "0f0f0f": "0f0f0f", "492927": "29421f", - "d1d1da": "d1d1da", - "92989c": "92989c", "bd494a": "4d7d3a", "f7645a": "5c9446", "813737": "3b5f2d", - "bd928c": "bd928c", - "fcceba": "fcceba", - "52b6ef": "a14363", - "5c4f41": "5c4f41" + "52b6ef": "a14363" }, "2": { "52585c": "676e74", - "0f0f0f": "0f0f0f", "492927": "6f390d", "d1d1da": "dadae3", "92989c": "a1a9ae", "bd494a": "ba7429", "f7645a": "eee870", "813737": "ae7100", - "bd928c": "bd928c", - "fcceba": "fcceba", - "52b6ef": "46de9b", - "5c4f41": "5c4f41" + "52b6ef": "46de9b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/969.json b/public/images/pokemon/variant/back/969.json index 99e9549bbf9..61effc7cf6d 100644 --- a/public/images/pokemon/variant/back/969.json +++ b/public/images/pokemon/variant/back/969.json @@ -2,7 +2,6 @@ "1": { "21255c": "323b51", "3253d6": "577b81", - "0f0f0f": "0f0f0f", "5de0aa": "fbce5d", "2c369a": "435469", "41968b": "c57833", @@ -18,7 +17,6 @@ "2": { "21255c": "bb7154", "3253d6": "ffedd1", - "0f0f0f": "0f0f0f", "5de0aa": "df543b", "2c369a": "e1a47a", "41968b": "a51414", diff --git a/public/images/pokemon/variant/back/970.json b/public/images/pokemon/variant/back/970.json index 1b4ec91b2f8..cc64345f212 100644 --- a/public/images/pokemon/variant/back/970.json +++ b/public/images/pokemon/variant/back/970.json @@ -1,6 +1,5 @@ { "1": { - "242737": "242737", "366956": "692915", "41968b": "c57833", "5de0aa": "fbce5d", diff --git a/public/images/pokemon/variant/back/973.json b/public/images/pokemon/variant/back/973.json index 6bb3f90575d..49889e00caf 100644 --- a/public/images/pokemon/variant/back/973.json +++ b/public/images/pokemon/variant/back/973.json @@ -6,13 +6,10 @@ "f596b0": "f0ddde", "645555": "404355", "e9e5ea": "e7e2e6", - "e7e2e6": "e7e2e6", "bdaeba": "bdaeb5", "504343": "272636", "f9be51": "e7a11f", "bf964a": "d28011", - "000000": "000000", - "ffffff": "ffffff", "852941": "60484a" }, "1": { @@ -22,13 +19,10 @@ "f596b0": "e768cc", "645555": "404355", "e9e5ea": "e7e2e6", - "e7e2e6": "e7e2e6", "bdaeba": "bdaeb5", "504343": "272636", "f9be51": "5fdd5b", "bf964a": "289c43", - "000000": "000000", - "ffffff": "ffffff", "852941": "430855" }, "2": { @@ -36,15 +30,10 @@ "af3f5b": "b7501e", "eb6d96": "f29f5b", "f596b0": "fabe7d", - "645555": "645555", "e9e5ea": "e7e2e6", - "e7e2e6": "e7e2e6", "bdaeba": "bdaeb5", - "504343": "504343", "f9be51": "3175cb", "bf964a": "2c3ca6", - "000000": "000000", - "ffffff": "ffffff", "852941": "943615" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/974.json b/public/images/pokemon/variant/back/974.json index 31a1cf892b1..057e9e9047d 100644 --- a/public/images/pokemon/variant/back/974.json +++ b/public/images/pokemon/variant/back/974.json @@ -4,7 +4,6 @@ "524951": "661427", "bebaba": "ee9065", "efefef": "ffcc9e", - "0f0f0f": "0f0f0f", "c7639c": "48aeba", "f493c9": "71e2d3", "fcfcfc": "efefef", @@ -17,7 +16,6 @@ "524951": "172651", "bebaba": "2a607f", "efefef": "438aa0", - "0f0f0f": "0f0f0f", "c7639c": "daa470", "f493c9": "ffdfa1", "fcfcfc": "efefef", diff --git a/public/images/pokemon/variant/back/975.json b/public/images/pokemon/variant/back/975.json index 428947aa317..3d082dd5749 100644 --- a/public/images/pokemon/variant/back/975.json +++ b/public/images/pokemon/variant/back/975.json @@ -2,7 +2,6 @@ "1": { "6a6069": "8c2727", "c8c4c4": "ee9065", - "0f0f0f": "0f0f0f", "a29793": "c85442", "fefefe": "ffcc9e", "c7639c": "48aeba", @@ -11,13 +10,11 @@ "b6b6c0": "d85661", "8c8899": "b53653", "f493c9": "71e2d3", - "69697e": "931d50", - "fcfcfc": "fcfcfc" + "69697e": "931d50" }, "2": { "6a6069": "121f43", "c8c4c4": "265777", - "0f0f0f": "0f0f0f", "a29793": "193e66", "fefefe": "357489", "c7639c": "daa470", @@ -25,8 +22,6 @@ "555566": "a05c56", "b6b6c0": "ffe9d6", "8c8899": "ddbcaa", - "f493c9": "ffdfa1", - "69697e": "69697e", - "fcfcfc": "fcfcfc" + "f493c9": "ffdfa1" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/978-stretchy.json b/public/images/pokemon/variant/back/978-stretchy.json index 670d8a67e35..b5781ffc372 100644 --- a/public/images/pokemon/variant/back/978-stretchy.json +++ b/public/images/pokemon/variant/back/978-stretchy.json @@ -4,7 +4,6 @@ "ffcb2d": "7277a4", "8f6b18": "252c60", "ce9b24": "485084", - "0f0f0f": "0f0f0f", "ffcf2d": "c1c1c1", "cd9a23": "a3a3a3", "adafb8": "dace8e", @@ -16,7 +15,6 @@ "ffcb2d": "355c1e", "8f6b18": "184a03", "ce9b24": "273f08", - "0f0f0f": "0f0f0f", "ffcf2d": "d8d0ad", "cd9a23": "afa680", "adafb8": "91734f", diff --git a/public/images/pokemon/variant/back/979.json b/public/images/pokemon/variant/back/979.json index f5051737038..8e636e471ce 100644 --- a/public/images/pokemon/variant/back/979.json +++ b/public/images/pokemon/variant/back/979.json @@ -3,21 +3,17 @@ "7b7786": "706394", "c0c1c8": "bbb3d6", "fafafc": "ddd2ff", - "111111": "111111", "a5a6b2": "ada2cd", "8f8d9c": "867ba4", "55525c": "625583", "474958": "38496a", "555c69": "3f5275", - "323132": "323132", - "5d6976": "4d6289", - "464546": "464546" + "5d6976": "4d6289" }, "1": { "7b7786": "c88945", "c0c1c8": "ebd494", "fafafc": "f9e9bd", - "111111": "111111", "a5a6b2": "ddbf6b", "8f8d9c": "d2a357", "55525c": "895b29", @@ -31,7 +27,6 @@ "7b7786": "b12009", "c0c1c8": "f26a3c", "fafafc": "ffa050", - "111111": "111111", "a5a6b2": "e9492f", "8f8d9c": "d22c10", "55525c": "951500", diff --git a/public/images/pokemon/variant/back/98.json b/public/images/pokemon/variant/back/98.json index 3fc272d9ff2..677c4ac9014 100644 --- a/public/images/pokemon/variant/back/98.json +++ b/public/images/pokemon/variant/back/98.json @@ -4,13 +4,10 @@ "843110": "433868", "ffa563": "c466f3", "ff7331": "9359ca", - "101010": "101010", "5a4221": "231947", "ffdebd": "c3d6ff", "e6bd8c": "9ba3d9", "735210": "4c5067", - "ffffff": "ffffff", - "dedede": "dedede", "b58442": "847ebe" }, "2": { @@ -18,13 +15,10 @@ "843110": "234b85", "ffa563": "5ce6f3", "ff7331": "4abbd4", - "101010": "101010", "5a4221": "0d193e", "ffdebd": "4a5197", "e6bd8c": "342b78", "735210": "232756", - "ffffff": "ffffff", - "dedede": "dedede", "b58442": "1e1e64" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/981.json b/public/images/pokemon/variant/back/981.json index 985b3611ab8..e7e2c41d476 100644 --- a/public/images/pokemon/variant/back/981.json +++ b/public/images/pokemon/variant/back/981.json @@ -1,7 +1,6 @@ { "1": { "43341e": "112b46", - "0f0f0f": "0f0f0f", "6f5431": "1f4062", "8b704c": "3d6186", "36383d": "503a2d", @@ -9,9 +8,7 @@ "9ca0ab": "665144", "fff42f": "c29925", "deb43d": "dec93d", - "fcfcfc": "fcfcfc", "775c10": "774f10", - "a8abb3": "a8abb3", "b1a75c": "882d2d", "513c21": "500f0f", "fdec8a": "9c3e3e", @@ -25,7 +22,6 @@ }, "2": { "43341e": "52ab5f", - "0f0f0f": "0f0f0f", "6f5431": "a8e781", "8b704c": "e4efcf", "36383d": "792e51", @@ -33,9 +29,7 @@ "9ca0ab": "9c5978", "fff42f": "ed9233", "deb43d": "ebbb72", - "fcfcfc": "fcfcfc", "775c10": "b35127", - "a8abb3": "a8abb3", "b1a75c": "1e7884", "513c21": "1a456c", "fdec8a": "2a9d8f", diff --git a/public/images/pokemon/variant/back/982-three-segment.json b/public/images/pokemon/variant/back/982-three-segment.json index 4fe1f475743..b740a63bde3 100644 --- a/public/images/pokemon/variant/back/982-three-segment.json +++ b/public/images/pokemon/variant/back/982-three-segment.json @@ -1,10 +1,8 @@ { "1": { "5a6273": "5d6970", - "f6ffff": "f6ffff", "735a41": "53575a", "f6e67b": "ececec", - "101010": "101010", "debd39": "aeaeae", "c1d1e9": "c1d7e2", "318ba4": "4a6165", diff --git a/public/images/pokemon/variant/back/982.json b/public/images/pokemon/variant/back/982.json index 4fe1f475743..b740a63bde3 100644 --- a/public/images/pokemon/variant/back/982.json +++ b/public/images/pokemon/variant/back/982.json @@ -1,10 +1,8 @@ { "1": { "5a6273": "5d6970", - "f6ffff": "f6ffff", "735a41": "53575a", "f6e67b": "ececec", - "101010": "101010", "debd39": "aeaeae", "c1d1e9": "c1d7e2", "318ba4": "4a6165", diff --git a/public/images/pokemon/variant/back/987.json b/public/images/pokemon/variant/back/987.json index e28a34d5435..b0d6b616201 100644 --- a/public/images/pokemon/variant/back/987.json +++ b/public/images/pokemon/variant/back/987.json @@ -5,7 +5,6 @@ "621841": "71370f", "b36cc1": "d3941a", "182941": "132443", - "0f0f0f": "0f0f0f", "de62a4": "ffc668", "4a83a4": "387fa7", "314a62": "244260", @@ -18,7 +17,6 @@ "621841": "7b3c08", "b36cc1": "1dbdb9", "182941": "244358", - "0f0f0f": "0f0f0f", "de62a4": "ffdf90", "4a83a4": "a1c8db", "314a62": "7396b4", @@ -31,7 +29,6 @@ "621841": "5a0a05", "b36cc1": "eece8c", "182941": "603305", - "0f0f0f": "0f0f0f", "de62a4": "e25038", "4a83a4": "e6aa47", "314a62": "b56f2a", diff --git a/public/images/pokemon/variant/back/988.json b/public/images/pokemon/variant/back/988.json index 7ef8e8d8902..799a483d3e8 100644 --- a/public/images/pokemon/variant/back/988.json +++ b/public/images/pokemon/variant/back/988.json @@ -4,14 +4,10 @@ "ed7e3d": "28d7bd", "7b2000": "0b334c", "d8a33f": "56e4ba", - "181820": "181820", "efd165": "66e9c2", "d1fd77": "e2fd77", "7dc536": "d7d346", "f04137": "17b79f", - "35384f": "35384f", - "f1f7f7": "f1f7f7", - "465175": "465175", "a9a9ab": "92c9b9", "359f8f": "23838b" }, @@ -20,13 +16,11 @@ "ed7e3d": "b258c9", "7b2000": "3d1759", "d8a33f": "9d46a1", - "181820": "181820", "efd165": "c273e0", "d1fd77": "71d1fb", "7dc536": "38b9e0", "f04137": "9439c5", "35384f": "123755", - "f1f7f7": "f1f7f7", "465175": "1b233f", "a9a9ab": "8fb8c9", "359f8f": "154e67" diff --git a/public/images/pokemon/variant/back/99-gigantamax.json b/public/images/pokemon/variant/back/99-gigantamax.json index 31fa87f0e8d..7318afcc1dc 100644 --- a/public/images/pokemon/variant/back/99-gigantamax.json +++ b/public/images/pokemon/variant/back/99-gigantamax.json @@ -4,7 +4,6 @@ "f6c58b": "9f60d5", "832908": "3b1c69", "ee8b4a": "8853bf", - "101010": "101010", "735210": "534681", "fdfdfd": "ffdbdb", "e1d0db": "d5869b", @@ -19,7 +18,6 @@ "f6c58b": "75e0e8", "832908": "22447d", "ee8b4a": "43adc4", - "101010": "101010", "735210": "1e1743", "fdfdfd": "b1f1cf", "e1d0db": "73c1c2", diff --git a/public/images/pokemon/variant/back/99.json b/public/images/pokemon/variant/back/99.json index 3dcbff624f5..de493968876 100644 --- a/public/images/pokemon/variant/back/99.json +++ b/public/images/pokemon/variant/back/99.json @@ -4,8 +4,6 @@ "c56b5a": "6232a9", "ef8c4a": "8853bf", "f7c58c": "9f60d5", - "101010": "101010", - "4a3121": "4a3121", "efbd8c": "9ba3d9", "ffe6b5": "c3d6ff", "b57b5a": "7c72b6", @@ -16,7 +14,6 @@ "c56b5a": "2d6f9e", "ef8c4a": "43adc4", "f7c58c": "75e0e8", - "101010": "101010", "4a3121": "1c1f46", "efbd8c": "31296f", "ffe6b5": "464d89", diff --git a/public/images/pokemon/variant/back/993.json b/public/images/pokemon/variant/back/993.json index 5668106b6b9..a3397ce9af9 100644 --- a/public/images/pokemon/variant/back/993.json +++ b/public/images/pokemon/variant/back/993.json @@ -2,7 +2,6 @@ "1": { "282828": "292109", "7a787a": "f8f5e2", - "0f0f0f": "0f0f0f", "463741": "754711", "4f4d51": "c59b4b", "4a424a": "533310", @@ -11,14 +10,12 @@ "3a75e6": "543280", "952b7d": "585a5c", "ff4dcb": "b7c6d6", - "fcfcfc": "fcfcfc", "172e57": "160832", "749eed": "b98bd6" }, "2": { "282828": "172220", "7a787a": "a4bfbe", - "0f0f0f": "0f0f0f", "463741": "264953", "4f4d51": "467678", "4a424a": "24323e", @@ -27,7 +24,6 @@ "3a75e6": "983b5c", "952b7d": "873954", "ff4dcb": "e3bbd3", - "fcfcfc": "fcfcfc", "172e57": "470e2c", "749eed": "f17ea6" } diff --git a/public/images/pokemon/variant/back/994.json b/public/images/pokemon/variant/back/994.json index bb4507045bd..98b54e86dd2 100644 --- a/public/images/pokemon/variant/back/994.json +++ b/public/images/pokemon/variant/back/994.json @@ -5,13 +5,11 @@ "f29e42": "00f02c", "fac375": "8bffa0", "626262": "696983", - "090913": "090913", "6a0305": "ae7a24", "dd393e": "fdc263", "a91215": "d79a38", "979797": "9b9bb6", "dddcde": "d9d9ea", - "292933": "292933", "30445a": "3f357c", "96cfd7": "b0a4f8", "6a8997": "867bc8" @@ -21,14 +19,10 @@ "7b451b": "0a5763", "f29e42": "00bfe1", "fac375": "7bf2ff", - "626262": "626262", - "090913": "090913", "6a0305": "6e2140", "dd393e": "ff5e5e", "a91215": "e72158", - "979797": "979797", "dddcde": "e9dac7", - "292933": "292933", "30445a": "664338", "96cfd7": "ffc28c", "6a8997": "ff926c" diff --git a/public/images/pokemon/variant/back/995.json b/public/images/pokemon/variant/back/995.json index 7838862d09b..eaa6f55f6e1 100644 --- a/public/images/pokemon/variant/back/995.json +++ b/public/images/pokemon/variant/back/995.json @@ -1,21 +1,15 @@ { "1": { - "101010": "101010", "50692e": "7b6a31", "79a045": "ac9b63", "bbd782": "f6eebd", "9ac450": "ddcb86", "069f7a": "9d3eb9", "02fd9e": "ca72e4", - "edffee": "edffee", - "43343c": "43343c", - "504a4a": "504a4a", "54992b": "8d7f54", - "2c2327": "2c2327", "456723": "4f4528" }, "2": { - "101010": "101010", "50692e": "383c40", "79a045": "4c5156", "bbd782": "949ca5", @@ -23,10 +17,8 @@ "069f7a": "9a1f2c", "02fd9e": "d53143", "edffee": "d8dfe8", - "43343c": "43343c", "504a4a": "48424f", "54992b": "464b51", - "2c2327": "2c2327", "456723": "26292b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/996.json b/public/images/pokemon/variant/back/996.json index 2891143402e..972620eab18 100644 --- a/public/images/pokemon/variant/back/996.json +++ b/public/images/pokemon/variant/back/996.json @@ -1,6 +1,5 @@ { "1": { - "020202": "020202", "5f5f64": "181f1f", "9ea7af": "293b39", "bec3c7": "325747", @@ -17,7 +16,6 @@ "ffe000": "c5a64d" }, "2": { - "020202": "020202", "5f5f64": "2f2c38", "9ea7af": "ceccef", "bec3c7": "e6e6eb", @@ -25,9 +23,6 @@ "314a5d": "524f60", "c4e9eb": "fcb925", "968201": "2a3064", - "e3e3e3": "e3e3e3", - "bcb7bc": "bcb7bc", - "a39ca1": "a39ca1", "96abac": "ca6d2a", "aecacb": "e38f21", "cab300": "1f46c4", diff --git a/public/images/pokemon/variant/back/997.json b/public/images/pokemon/variant/back/997.json index edf986cf27a..6567c4d0ee5 100644 --- a/public/images/pokemon/variant/back/997.json +++ b/public/images/pokemon/variant/back/997.json @@ -1,6 +1,5 @@ { "1": { - "020202": "020202", "516373": "5a3b36", "caefef": "b7926b", "3f6176": "1e2c2f", @@ -15,7 +14,6 @@ "cf9100": "9f7b3e" }, "2": { - "020202": "020202", "516373": "79452f", "caefef": "fcb925", "3f6176": "8a82aa", diff --git a/public/images/pokemon/variant/back/998.json b/public/images/pokemon/variant/back/998.json index 5c83a4cd734..063d9582962 100644 --- a/public/images/pokemon/variant/back/998.json +++ b/public/images/pokemon/variant/back/998.json @@ -1,7 +1,6 @@ { "1": { "1f3241": "1b2525", - "020202": "020202", "5b879b": "5a3b36", "416075": "305444", "eaf9f9": "e1d4be", @@ -10,14 +9,12 @@ "afc0c7": "8f6049", "ffe100": "30d1ff", "837d34": "3b69d3", - "272427": "272427", "bf373e": "c5a64d", "9b2930": "705c39", "8fa7b1": "835344" }, "2": { "1f3241": "524f60", - "020202": "020202", "5b879b": "79452f", "416075": "e6e6eb", "eaf9f9": "fff8d3", diff --git a/public/images/pokemon/variant/back/999.json b/public/images/pokemon/variant/back/999.json index bacd640b9be..e7ba3b67167 100644 --- a/public/images/pokemon/variant/back/999.json +++ b/public/images/pokemon/variant/back/999.json @@ -9,7 +9,6 @@ "545b6b": "1e2e60", "783a52": "492118", "ac4454": "ab461e", - "0f0f0f": "0f0f0f", "7a82a9": "5e647a", "bac4d8": "757a8b", "a59227": "a44418" @@ -24,9 +23,6 @@ "545b6b": "415073", "783a52": "4f2e5c", "ac4454": "794e83", - "0f0f0f": "0f0f0f", - "7a82a9": "7a82a9", - "bac4d8": "bac4d8", "a59227": "9c9cbe" }, "2": { @@ -39,9 +35,6 @@ "545b6b": "6467a8", "783a52": "6d6594", "ac4454": "bcb9d6", - "0f0f0f": "0f0f0f", - "7a82a9": "7a82a9", - "bac4d8": "bac4d8", "a59227": "b6d0d7" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/111.json b/public/images/pokemon/variant/back/female/111.json index 5ef11d8ed41..bf115bed097 100644 --- a/public/images/pokemon/variant/back/female/111.json +++ b/public/images/pokemon/variant/back/female/111.json @@ -4,19 +4,13 @@ "bdbdce": "6a547a", "8484ad": "402f51", "3a3a52": "261e2d", - "101010": "101010", - "e6e6ef": "9781ab", - "ffffff": "ffffff", - "ad3a29": "ad3a29" + "e6e6ef": "9781ab" }, "2": { "5a5a7b": "ab4355", "bdbdce": "e18db3", "8484ad": "d76688", "3a3a52": "6d2935", - "101010": "101010", - "e6e6ef": "f7b4d1", - "ffffff": "ffffff", - "ad3a29": "ad3a29" + "e6e6ef": "f7b4d1" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/112.json b/public/images/pokemon/variant/back/female/112.json index 774e2d1cf64..189c155b683 100644 --- a/public/images/pokemon/variant/back/female/112.json +++ b/public/images/pokemon/variant/back/female/112.json @@ -3,24 +3,18 @@ "52525a": "3c2945", "c5c5bd": "6a547a", "8c8c94": "523c5c", - "101010": "101010", "e6e6de": "9781ab", "735a31": "6b6373", "e6d6ad": "cecede", - "b5a573": "948cad", - "ffffff": "ffffff", - "e6523a": "e6523a" + "b5a573": "948cad" }, "2": { "52525a": "642224", "c5c5bd": "cb568a", "8c8c94": "ab3f5c", - "101010": "101010", "e6e6de": "ef86b5", "735a31": "6d586d", "e6d6ad": "dacad3", - "b5a573": "be9bb6", - "ffffff": "ffffff", - "e6523a": "e6523a" + "b5a573": "be9bb6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/118.json b/public/images/pokemon/variant/back/female/118.json index 6097ad43468..2bba2f4b638 100644 --- a/public/images/pokemon/variant/back/female/118.json +++ b/public/images/pokemon/variant/back/female/118.json @@ -2,9 +2,7 @@ "1": { "52525a": "5b3856", "ffffff": "fff9fc", - "101010": "101010", "8c8c94": "9c6891", - "efefef": "efefef", "ceb57b": "975c8c", "d6d6de": "bf8cb0", "ad1000": "40163f", @@ -17,7 +15,6 @@ "2": { "52525a": "2e5453", "ffffff": "f0fff8", - "101010": "101010", "8c8c94": "629a8e", "efefef": "c3f0dd", "ceb57b": "65aaae", diff --git a/public/images/pokemon/variant/back/female/119.json b/public/images/pokemon/variant/back/female/119.json index 9471908cb42..f48ae5bdf48 100644 --- a/public/images/pokemon/variant/back/female/119.json +++ b/public/images/pokemon/variant/back/female/119.json @@ -3,7 +3,6 @@ "8c7b84": "8d6083", "f7f7ff": "ffecfa", "dedee6": "eac5df", - "101010": "101010", "943119": "49215e", "c54229": "843f97", "ffdebd": "eac5df", @@ -17,7 +16,6 @@ "8c7b84": "5182a3", "f7f7ff": "eafcff", "dedee6": "bae6f4", - "101010": "101010", "943119": "132441", "c54229": "1a447b", "ffdebd": "cedaef", diff --git a/public/images/pokemon/variant/back/female/123.json b/public/images/pokemon/variant/back/female/123.json index 049e6e23435..e3734a34d2e 100644 --- a/public/images/pokemon/variant/back/female/123.json +++ b/public/images/pokemon/variant/back/female/123.json @@ -5,43 +5,22 @@ "e6d6ad": "b5b5ce", "9c8c31": "632929", "8cce73": "f76b6b", - "101010": "101010", "fff7d6": "ffffff", "5a9c4a": "d63a3a", - "bdbdbd": "bdbdbd", - "c5a573": "b5b5ce", - "dedede": "dedede", - "ffffff": "ffffff", - "737373": "737373" + "c5a573": "b5b5ce" }, "1": { "425a21": "484e75", "bde673": "bdbdbd", - "e6d6ad": "e6d6ad", - "9c8c31": "9c8c31", "8cce73": "92b0db", - "101010": "101010", - "fff7d6": "fff7d6", "5a9c4a": "7b94d6", "bdbdbd": "ffffff", - "c5a573": "9cc5ff", - "dedede": "dedede", - "ffffff": "ffffff", - "737373": "737373" + "c5a573": "9cc5ff" }, "2": { "425a21": "8f3907", "bde673": "f8f581", - "e6d6ad": "e6d6ad", - "9c8c31": "9c8c31", "8cce73": "f0c947", - "101010": "101010", - "fff7d6": "fff7d6", - "5a9c4a": "e6a027", - "bdbdbd": "bdbdbd", - "c5a573": "c5a573", - "dedede": "dedede", - "ffffff": "ffffff", - "737373": "737373" + "5a9c4a": "e6a027" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/129.json b/public/images/pokemon/variant/back/female/129.json index 1d949149c89..63297954964 100644 --- a/public/images/pokemon/variant/back/female/129.json +++ b/public/images/pokemon/variant/back/female/129.json @@ -1,7 +1,6 @@ { "1": { "7b6352": "8a4723", - "000000": "000000", "ffde29": "f0bf75", "c5ad73": "c07b3f", "840042": "22294c", @@ -16,7 +15,6 @@ }, "2": { "7b6352": "94836f", - "000000": "000000", "ffde29": "e2d9c0", "c5ad73": "bcaf98", "840042": "230f55", diff --git a/public/images/pokemon/variant/back/female/130.json b/public/images/pokemon/variant/back/female/130.json index d18385f7385..1bdb5ddf702 100644 --- a/public/images/pokemon/variant/back/female/130.json +++ b/public/images/pokemon/variant/back/female/130.json @@ -2,7 +2,6 @@ "1": { "737b7b": "9b7866", "f7f7f7": "ffedce", - "191919": "191919", "d6def7": "e3c7ab", "194273": "6c1301", "218cad": "cd6b1b", @@ -15,7 +14,6 @@ "2": { "737b7b": "a37785", "f7f7f7": "f7e2e2", - "191919": "191919", "d6def7": "d9b6b9", "194273": "1c0b46", "218cad": "53227e", diff --git a/public/images/pokemon/variant/back/female/185.json b/public/images/pokemon/variant/back/female/185.json index f65d9951e05..e30e4407750 100644 --- a/public/images/pokemon/variant/back/female/185.json +++ b/public/images/pokemon/variant/back/female/185.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "635a4a": "303429", "ad845a": "6f7367", "8c7342": "515549", @@ -11,7 +10,6 @@ "e6b54a": "8f991b" }, "2": { - "101010": "101010", "635a4a": "243075", "ad845a": "4663b1", "8c7342": "3d47a2", diff --git a/public/images/pokemon/variant/back/female/19.json b/public/images/pokemon/variant/back/female/19.json index c72993def35..54bd7d2edf7 100644 --- a/public/images/pokemon/variant/back/female/19.json +++ b/public/images/pokemon/variant/back/female/19.json @@ -4,13 +4,10 @@ "d69cd6": "88a0b1", "b573bd": "5f778e", "4a2942": "262f4f", - "101010": "101010", "a57308": "cb9287", "efdeb5": "fae4d8", "634a08": "ae6b69", "cead63": "e8beae", - "ffffff": "ffffff", - "5a5a5a": "5a5a5a", "e65a73": "6e8d9a" }, "2": { @@ -18,13 +15,10 @@ "d69cd6": "fff5eb", "b573bd": "efdcd1", "4a2942": "865c54", - "101010": "101010", "a57308": "ba476f", "efdeb5": "efb5c0", "634a08": "7e3754", "cead63": "d98a9f", - "ffffff": "ffffff", - "5a5a5a": "5a5a5a", "e65a73": "cb3f46" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/190.json b/public/images/pokemon/variant/back/female/190.json index 7945e4a1186..9c7c9e1b4e1 100644 --- a/public/images/pokemon/variant/back/female/190.json +++ b/public/images/pokemon/variant/back/female/190.json @@ -3,7 +3,6 @@ "52216b": "701523", "a55ac5": "c47440", "bd7bde": "dea95a", - "000000": "000000", "8442ad": "ad452f", "8c6b42": "8c7457", "c5ad6b": "c4b487", @@ -14,7 +13,6 @@ "52216b": "807870", "a55ac5": "bfbeb4", "bd7bde": "e5dfdf", - "000000": "000000", "8442ad": "a6a297", "8c6b42": "632339", "c5ad6b": "99455d", diff --git a/public/images/pokemon/variant/back/female/20.json b/public/images/pokemon/variant/back/female/20.json index f16f484b797..d3d2738ba7a 100644 --- a/public/images/pokemon/variant/back/female/20.json +++ b/public/images/pokemon/variant/back/female/20.json @@ -3,23 +3,18 @@ "6b3a00": "331a1b", "a57329": "543330", "c5943a": "644c47", - "101010": "101010", "c58452": "bc9087", "ffce9c": "dfc0b3", "945210": "764f4d", "845a29": "956240", - "b5b5b5": "b5b5b5", "a58431": "cd9c6e", "f7f7a5": "fff1d4", - "ffffff": "ffffff", - "efce73": "eccda3", - "737373": "737373" + "efce73": "eccda3" }, "2": { "6b3a00": "7f645c", "a57329": "bba08f", "c5943a": "e2cbb9", - "101010": "101010", "c58452": "ae6f7e", "ffce9c": "e4b4b4", "945210": "813636", diff --git a/public/images/pokemon/variant/back/female/203.json b/public/images/pokemon/variant/back/female/203.json index 1429eb40c25..cb82db0fd3c 100644 --- a/public/images/pokemon/variant/back/female/203.json +++ b/public/images/pokemon/variant/back/female/203.json @@ -1,14 +1,12 @@ { "1": { "424a73": "351810", - "ffffff": "ffffff", "adb5d6": "8f6f66", "6b8cb5": "512b21", "4a3a3a": "231117", "efde52": "9c3e3e", "c5a53a": "7e262d", "9c3a5a": "ab9d75", - "101010": "101010", "9c7b42": "571522", "ce6b94": "d8d1ad", "947b6b": "1f4062", @@ -18,14 +16,12 @@ }, "2": { "424a73": "27091d", - "ffffff": "ffffff", "adb5d6": "c5b0b7", "6b8cb5": "4a1b33", "4a3a3a": "091225", "efde52": "2a9d8f", "c5a53a": "1e7884", "9c3a5a": "52ab5f", - "101010": "101010", "9c7b42": "15545d", "ce6b94": "a8e781", "947b6b": "1a2e43", diff --git a/public/images/pokemon/variant/back/female/212.json b/public/images/pokemon/variant/back/female/212.json index 84f12bf1434..3c7d9a4799c 100644 --- a/public/images/pokemon/variant/back/female/212.json +++ b/public/images/pokemon/variant/back/female/212.json @@ -3,24 +3,14 @@ "632929": "215a2d", "f76b6b": "8cce73", "a52929": "2f794e", - "101010": "101010", - "d63a3a": "4a9c53", - "9494a5": "9494a5", - "ffffff": "ffffff", - "b5b5ce": "b5b5ce", - "3a3a4a": "3a3a4a", - "9c6b21": "9c6b21", - "dec510": "dec510" + "d63a3a": "4a9c53" }, "1": { "632929": "2f2962", "f76b6b": "639cf7", "a52929": "29429c", - "101010": "101010", "d63a3a": "4263ef", "9494a5": "6262a4", - "ffffff": "ffffff", - "b5b5ce": "b5b5ce", "3a3a4a": "3c3c50", "9c6b21": "131387", "dec510": "10bdde" @@ -29,13 +19,8 @@ "632929": "645117", "f76b6b": "c59f29", "a52929": "b88619", - "101010": "101010", "d63a3a": "ffca2a", "9494a5": "3c4543", - "ffffff": "ffffff", - "b5b5ce": "b5b5ce", - "3a3a4a": "282d2c", - "9c6b21": "9c6b21", - "dec510": "dec510" + "3a3a4a": "282d2c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/215.json b/public/images/pokemon/variant/back/female/215.json index 3ce956a327e..95c97bce2c3 100644 --- a/public/images/pokemon/variant/back/female/215.json +++ b/public/images/pokemon/variant/back/female/215.json @@ -6,7 +6,6 @@ "f75273": "637696", "21315a": "220a11", "3a94ad": "ac373e", - "000000": "000000", "42849c": "902738", "4a4a4a": "69523f", "bdbdc5": "c5a080", @@ -19,10 +18,8 @@ "f75273": "7ac3f0", "21315a": "723522", "3a94ad": "fbdba1", - "000000": "000000", "42849c": "eab273", "4a4a4a": "383d51", - "bdbdc5": "a1a0c3", - "f7f7ff": "f7f7ff" + "bdbdc5": "a1a0c3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/217.json b/public/images/pokemon/variant/back/female/217.json index 7ce80e163b6..bbc26a6e1db 100644 --- a/public/images/pokemon/variant/back/female/217.json +++ b/public/images/pokemon/variant/back/female/217.json @@ -1,38 +1,23 @@ { "0": { "422919": "112114", - "7b7b8c": "7b7b8c", - "101010": "101010", "945221": "2f6324", - "ffffff": "ffffff", "634229": "1d3d26", - "b5b5bd": "b5b5bd", "f7c563": "fecd85", - "c59c4a": "cd9343", - "dedede": "dedede" + "c59c4a": "cd9343" }, "1": { "422919": "2d0e1f", - "7b7b8c": "7b7b8c", - "101010": "101010", "945221": "8c2a37", - "ffffff": "ffffff", "634229": "6b1d38", - "b5b5bd": "b5b5bd", "f7c563": "f2cab8", - "c59c4a": "c48e81", - "dedede": "dedede" + "c59c4a": "c48e81" }, "2": { "422919": "111433", - "7b7b8c": "7b7b8c", - "101010": "101010", "945221": "323760", - "ffffff": "ffffff", "634229": "1e2249", - "b5b5bd": "b5b5bd", "f7c563": "5ccaf2", - "c59c4a": "45a2f9", - "dedede": "dedede" + "c59c4a": "45a2f9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/229.json b/public/images/pokemon/variant/back/female/229.json index eeff43a6184..ad2612813d4 100644 --- a/public/images/pokemon/variant/back/female/229.json +++ b/public/images/pokemon/variant/back/female/229.json @@ -5,17 +5,12 @@ "ced6d6": "dc7e67", "ffffff": "ffcf9a", "192129": "402b41", - "000000": "000000", "31313a": "5c435d", "4a4a52": "85738c", - "f8f9ff": "f8f9ff", "841021": "3b59a1", - "ada5b3": "ada5b3", "632910": "8c6362", "f79c84": "f8f1e7", - "a55a4a": "ceb0a5", - "9c293a": "9c293a", - "e2e0e3": "e2e0e3" + "a55a4a": "ceb0a5" }, "2": { "84738c": "101028", @@ -23,16 +18,13 @@ "ced6d6": "38576c", "ffffff": "5c8d95", "192129": "3a2d35", - "000000": "000000", "31313a": "b3a5a2", "4a4a52": "f8faf3", "f8f9ff": "3d5f75", "841021": "fe8d53", - "ada5b3": "ada5b3", "632910": "3f2440", "f79c84": "844d76", "a55a4a": "613762", - "9c293a": "8c5273", - "e2e0e3": "e2e0e3" + "9c293a": "8c5273" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/232.json b/public/images/pokemon/variant/back/female/232.json index 7d6c59a0aa3..8f5fb1a7be6 100644 --- a/public/images/pokemon/variant/back/female/232.json +++ b/public/images/pokemon/variant/back/female/232.json @@ -3,7 +3,6 @@ "4a5252": "5f74c7", "3a3a3a": "333a77", "849494": "b0d8ff", - "101010": "101010", "6b7373": "7fa0d7", "842129": "c8563f", "9ca5a5": "9ca3b5", @@ -21,7 +20,6 @@ "4a5252": "994e30", "3a3a3a": "6f2219", "849494": "f4b975", - "101010": "101010", "6b7373": "d17e47", "842129": "1d2a54", "9ca5a5": "3c283f", diff --git a/public/images/pokemon/variant/back/female/255.json b/public/images/pokemon/variant/back/female/255.json index d3666839aac..8ffd9a797b9 100644 --- a/public/images/pokemon/variant/back/female/255.json +++ b/public/images/pokemon/variant/back/female/255.json @@ -2,23 +2,19 @@ "1": { "ad8c00": "782a14", "f7de6b": "f1a545", - "000000": "000000", "efbd31": "d36f2b", "7b4a19": "580c0b", "ad4210": "318793", "e65a21": "4cada9", - "ff8c31": "6bcdb2", - "ffffff": "ffffff" + "ff8c31": "6bcdb2" }, "2": { "ad8c00": "550d38", "f7de6b": "ad3342", - "000000": "000000", "efbd31": "811c3e", "7b4a19": "43082f", "ad4210": "b3817d", "e65a21": "d3afa0", - "ff8c31": "f3e5cf", - "ffffff": "ffffff" + "ff8c31": "f3e5cf" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/256.json b/public/images/pokemon/variant/back/female/256.json index a688ca2f6d0..0fe9ff85cad 100644 --- a/public/images/pokemon/variant/back/female/256.json +++ b/public/images/pokemon/variant/back/female/256.json @@ -1,7 +1,6 @@ { "1": { "9c3110": "8e3820", - "191919": "191919", "ff7b4a": "f7ca4b", "de5a29": "da8923", "9c7329": "3a888d", @@ -16,7 +15,6 @@ }, "2": { "9c3110": "8a685f", - "191919": "191919", "ff7b4a": "fff7e1", "de5a29": "cdb09b", "9c7329": "64163c", diff --git a/public/images/pokemon/variant/back/female/257.json b/public/images/pokemon/variant/back/female/257.json index dadb97bbad6..8f5dcf05c4a 100644 --- a/public/images/pokemon/variant/back/female/257.json +++ b/public/images/pokemon/variant/back/female/257.json @@ -6,7 +6,6 @@ "ee5e5e": "598dc1", "dedeb5": "f0fbff", "ff8463": "70b0d5", - "000000": "000000", "63524a": "55607d", "842929": "8e3820", "ef6363": "f7ca4b", @@ -31,7 +30,6 @@ "ee5e5e": "772040", "dedeb5": "cc6155", "ff8463": "912d42", - "000000": "000000", "63524a": "5b1832", "842929": "9c7c70", "ef6363": "fffae1", diff --git a/public/images/pokemon/variant/back/female/3.json b/public/images/pokemon/variant/back/female/3.json index 49fe726b084..2b3274ae4cb 100644 --- a/public/images/pokemon/variant/back/female/3.json +++ b/public/images/pokemon/variant/back/female/3.json @@ -8,15 +8,13 @@ "ff7b73": "712f8f", "bd6b31": "168a69", "de4242": "3f1375", - "101010": "101010", "105242": "190038", "107b6b": "9e1976", "2e5519": "38001c", "5a9c3a": "b34952", "5ad6c5": "f062a4", "21b59c": "de3592", - "84de7b": "ff745e", - "ffffff": "ffffff" + "84de7b": "ff745e" }, "2": { "843100": "420514", @@ -27,14 +25,12 @@ "ff7b73": "9db042", "bd6b31": "852a41", "de4242": "3c8227", - "101010": "101010", "105242": "381601", "107b6b": "d15d04", "2e5519": "011c38", "5a9c3a": "446b94", "5ad6c5": "faa405", "21b59c": "fa8405", - "84de7b": "80ced9", - "ffffff": "ffffff" + "84de7b": "80ced9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/307.json b/public/images/pokemon/variant/back/female/307.json index 3bdadaa8e16..8420a8631be 100644 --- a/public/images/pokemon/variant/back/female/307.json +++ b/public/images/pokemon/variant/back/female/307.json @@ -3,7 +3,6 @@ "7b6b6b": "7a5f5f", "b5adad": "9f8383", "e6dede": "deccc3", - "000000": "000000", "3a84b5": "7e4377", "3a4a5a": "5a2859", "6bcee6": "f4a8c8", @@ -13,7 +12,6 @@ "7b6b6b": "314b76", "b5adad": "677d98", "e6dede": "c2cfdb", - "000000": "000000", "3a84b5": "51876e", "3a4a5a": "113926", "6bcee6": "7edfb7", diff --git a/public/images/pokemon/variant/back/female/308.json b/public/images/pokemon/variant/back/female/308.json index fd439be8d40..d5c9803f46b 100644 --- a/public/images/pokemon/variant/back/female/308.json +++ b/public/images/pokemon/variant/back/female/308.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "84424a": "59141d", "e6738c": "a53835", "ce5a73": "8b2e2b", @@ -15,7 +14,6 @@ "f7de84": "ee9bd5" }, "2": { - "101010": "101010", "84424a": "461f5d", "e6738c": "a37aac", "ce5a73": "7d5187", @@ -24,7 +22,6 @@ "b54a5a": "633971", "8c848c": "6c7d9e", "ada5ad": "9faab9", - "c5c5c5": "c5c5c5", "a57329": "205a9e", "efbd5a": "205a9e", "f7de84": "5abbef" diff --git a/public/images/pokemon/variant/back/female/315.json b/public/images/pokemon/variant/back/female/315.json index dc0d3cbf1ba..f909e10f4a1 100644 --- a/public/images/pokemon/variant/back/female/315.json +++ b/public/images/pokemon/variant/back/female/315.json @@ -3,7 +3,6 @@ "3a5229": "0b2337", "5a9452": "153a51", "a5de73": "408592", - "000000": "000000", "73c55a": "215569", "295a94": "482571", "a5314a": "9c5910", @@ -19,7 +18,6 @@ "3a5229": "201443", "5a9452": "402765", "a5de73": "aa78cd", - "000000": "000000", "73c55a": "66418b", "295a94": "1a6644", "a5314a": "1d6970", diff --git a/public/images/pokemon/variant/back/female/369.json b/public/images/pokemon/variant/back/female/369.json index b3cff229c6c..4f43e66892b 100644 --- a/public/images/pokemon/variant/back/female/369.json +++ b/public/images/pokemon/variant/back/female/369.json @@ -7,7 +7,6 @@ "efcea5": "757e99", "ffefce": "aab1c6", "b5946b": "31384a", - "000000": "000000", "3a2929": "644c2b", "9c847b": "e0cc66", "524242": "91743c", @@ -18,17 +17,14 @@ "2": { "6b5242": "3a421e", "8c734a": "3d4521", - "52423a": "52423a", "ceb594": "758745", "efcea5": "96a558", "ffefce": "b6c174", "b5946b": "656d39", - "000000": "000000", "3a2929": "231934", "9c847b": "543d7d", "524242": "32214a", "7b6b63": "412e63", - "ef4a73": "ef4a73", "ce4231": "584a95" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/399.json b/public/images/pokemon/variant/back/female/399.json index 7e2fe21cf2a..f4401d7b1c6 100644 --- a/public/images/pokemon/variant/back/female/399.json +++ b/public/images/pokemon/variant/back/female/399.json @@ -3,8 +3,6 @@ "634a31": "70323f", "c58c42": "e5a5bb", "9c6331": "d46378", - "101010": "101010", - "423110": "423110", "cebd84": "eba978", "5a4229": "824561" }, @@ -12,7 +10,6 @@ "634a31": "101e42", "c58c42": "617dda", "9c6331": "3e5ca8", - "101010": "101010", "423110": "0e1831", "cebd84": "8497ce", "5a4229": "42295a" diff --git a/public/images/pokemon/variant/back/female/400.json b/public/images/pokemon/variant/back/female/400.json index 195d6e1a8b0..6f731de97f4 100644 --- a/public/images/pokemon/variant/back/female/400.json +++ b/public/images/pokemon/variant/back/female/400.json @@ -3,10 +3,8 @@ "ad947b": "bd9171", "e6d69c": "fff5d1", "5a3a31": "70323f", - "3a3129": "3a3129", "bd844a": "dba0ac", "8c5a31": "c46269", - "101010": "101010", "423a31": "3e3040", "63523a": "824561" }, @@ -17,7 +15,6 @@ "3a3129": "313d63", "bd844a": "617dda", "8c5a31": "3e5ca8", - "101010": "101010", "423a31": "38204f", "63523a": "42295a" } diff --git a/public/images/pokemon/variant/back/female/401.json b/public/images/pokemon/variant/back/female/401.json index 446e2648182..068a54ee262 100644 --- a/public/images/pokemon/variant/back/female/401.json +++ b/public/images/pokemon/variant/back/female/401.json @@ -2,7 +2,6 @@ "1": { "524a42": "cf8439", "7b7363": "f6bb47", - "101010": "101010", "8c6b08": "272344", "ffefad": "56769d", "e6c56b": "454389", @@ -13,7 +12,6 @@ "2": { "524a42": "453565", "7b7363": "71558c", - "101010": "101010", "8c6b08": "784341", "ffefad": "ffd47c", "e6c56b": "e59a75", diff --git a/public/images/pokemon/variant/back/female/402.json b/public/images/pokemon/variant/back/female/402.json index 7171c8b3629..a6ed33a6a13 100644 --- a/public/images/pokemon/variant/back/female/402.json +++ b/public/images/pokemon/variant/back/female/402.json @@ -2,7 +2,6 @@ "1": { "633100": "272344", "de5a52": "afd3df", - "101010": "101010", "9c4231": "498ebe", "31293a": "592a22", "524a42": "cf8439", @@ -17,7 +16,6 @@ "2": { "633100": "2a545f", "de5a52": "70af85", - "101010": "101010", "9c4231": "2f9378", "31293a": "281c41", "524a42": "453565", diff --git a/public/images/pokemon/variant/back/female/407.json b/public/images/pokemon/variant/back/female/407.json index 55de95a3105..8edb2911c7e 100644 --- a/public/images/pokemon/variant/back/female/407.json +++ b/public/images/pokemon/variant/back/female/407.json @@ -5,7 +5,6 @@ "739c8c": "bb9b89", "ffffff": "fff1cb", "d6cede": "e1bf95", - "000000": "000000", "7b3a5a": "9c5910", "ff6384": "efc754", "bd426b": "d28f31", @@ -22,15 +21,11 @@ "739c8c": "a199cd", "ffffff": "fcf8ff", "d6cede": "d6c7e6", - "000000": "000000", "7b3a5a": "18585e", "ff6384": "83e4d0", "bd426b": "55b9af", "3a9c63": "764f9c", "f7d64a": "e17641", - "424a84": "424a84", - "4a5abd": "4a5abd", - "5273ef": "5273ef", "a5e6ad": "ebe6fd" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/41.json b/public/images/pokemon/variant/back/female/41.json index 87c18df01ac..8d7350c81ce 100644 --- a/public/images/pokemon/variant/back/female/41.json +++ b/public/images/pokemon/variant/back/female/41.json @@ -1,24 +1,18 @@ { "1": { - "101010": "101010", "8cb5ef": "4e538f", "4a427b": "14093b", "637bb5": "37326f", "73215a": "aa4c18", "b5529c": "cc7b32", - "bdceff": "868ecc", - "ffffff": "ffffff", - "636363": "636363" + "bdceff": "868ecc" }, "2": { - "101010": "101010", "8cb5ef": "cbabca", "4a427b": "4d3259", "637bb5": "916c8b", "73215a": "670f10", "b5529c": "94241c", - "bdceff": "e8d2e6", - "ffffff": "ffffff", - "636363": "636363" + "bdceff": "e8d2e6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/419.json b/public/images/pokemon/variant/back/female/419.json index 3202d442933..197a8b33e18 100644 --- a/public/images/pokemon/variant/back/female/419.json +++ b/public/images/pokemon/variant/back/female/419.json @@ -2,17 +2,13 @@ "1": { "7b4221": "611b35", "ef7b19": "9c354f", - "191919": "191919", "ce6b19": "851d3e", "ad5a21": "7d1e39", "cebd84": "cea49d", "f7f7b5": "e8d4cc", "99693c": "6a808c", - "6b6b6b": "6b6b6b", "e6a531": "a0b3ba", "ffde00": "d2e5e8", - "d6d6ce": "d6d6ce", - "ffffff": "ffffff", "c59452": "995e5c", "2163a5": "385e11", "63bde6": "6a9539" @@ -20,7 +16,6 @@ "2": { "7b4221": "9e6a86", "ef7b19": "debfc8", - "191919": "191919", "ce6b19": "dca5b5", "ad5a21": "cd91aa", "cebd84": "965080", @@ -29,8 +24,6 @@ "6b6b6b": "726481", "e6a531": "d4812f", "ffde00": "eda342", - "d6d6ce": "d6d6ce", - "ffffff": "ffffff", "c59452": "672e5d", "2163a5": "4b2a70", "63bde6": "744d99" diff --git a/public/images/pokemon/variant/back/female/42.json b/public/images/pokemon/variant/back/female/42.json index d2be9f7ced5..9fede6848a8 100644 --- a/public/images/pokemon/variant/back/female/42.json +++ b/public/images/pokemon/variant/back/female/42.json @@ -5,7 +5,6 @@ "adceff": "666fb4", "5aadef": "3d4381", "631052": "892d03", - "000000": "000000", "ce6bb5": "f1a139", "ad52ad": "d5711b", "943a7b": "af4e0c" @@ -16,7 +15,6 @@ "adceff": "e8d2e6", "5aadef": "cbabca", "631052": "54070c", - "000000": "000000", "ce6bb5": "bc3b1d", "ad52ad": "94241c", "943a7b": "6c1314" diff --git a/public/images/pokemon/variant/back/female/424.json b/public/images/pokemon/variant/back/female/424.json index c0e9356a7a4..6a111ce9829 100644 --- a/public/images/pokemon/variant/back/female/424.json +++ b/public/images/pokemon/variant/back/female/424.json @@ -3,7 +3,6 @@ "734a42": "415c73", "ad5242": "428dad", "ff735a": "5ae9ff", - "101010": "101010", "8c6b42": "8c7457", "debd73": "c4b487", "ffefa5": "ffeccc", @@ -16,7 +15,6 @@ "734a42": "593802", "ad5242": "946212", "ff735a": "ffb338", - "101010": "101010", "8c6b42": "632339", "debd73": "99455d", "ffefa5": "ed8286", diff --git a/public/images/pokemon/variant/back/female/44.json b/public/images/pokemon/variant/back/female/44.json index c3e5290e2a9..1ffdc2c917a 100644 --- a/public/images/pokemon/variant/back/female/44.json +++ b/public/images/pokemon/variant/back/female/44.json @@ -3,7 +3,6 @@ "c57329": "0f7469", "8c3a19": "043d44", "5a2900": "162486", - "101010": "101010", "ce734a": "7aa8d2", "ffbd42": "55bb7e", "ad523a": "4d75b6", @@ -17,8 +16,6 @@ "2": { "c57329": "9f631f", "8c3a19": "773811", - "5a2900": "5a2900", - "101010": "101010", "ce734a": "d98247", "ffbd42": "e8d65e", "ad523a": "bd4e2d", diff --git a/public/images/pokemon/variant/back/female/443.json b/public/images/pokemon/variant/back/female/443.json index 4a65daecb4b..c2154751658 100644 --- a/public/images/pokemon/variant/back/female/443.json +++ b/public/images/pokemon/variant/back/female/443.json @@ -5,11 +5,6 @@ "314252": "082963", "8cc5d6": "42a5f7", "5294ad": "1984c5", - "42d6de": "42d6de", - "3aadc5": "3aadc5", - "ffffff": "ffffff", - "c5ced6": "c5ced6", - "5a6363": "5a6363", "ad3a10": "a57c10", "de5a29": "e6c529", "7b1910": "731029" @@ -22,9 +17,6 @@ "5294ad": "905647", "42d6de": "54b0ff", "3aadc5": "2878e1", - "ffffff": "ffffff", - "c5ced6": "c5ced6", - "5a6363": "5a6363", "ad3a10": "92a9b2", "de5a29": "d9f0f1", "7b1910": "731029" @@ -37,9 +29,6 @@ "5294ad": "4c5e66", "42d6de": "6fe6a3", "3aadc5": "23b8a8", - "ffffff": "ffffff", - "c5ced6": "c5ced6", - "5a6363": "5a6363", "ad3a10": "92a9b2", "de5a29": "d9f0f1", "7b1910": "3e3a52" diff --git a/public/images/pokemon/variant/back/female/444.json b/public/images/pokemon/variant/back/female/444.json index 287f0c4050c..d502b2387a6 100644 --- a/public/images/pokemon/variant/back/female/444.json +++ b/public/images/pokemon/variant/back/female/444.json @@ -11,10 +11,7 @@ "5a1000": "502209", "ffff19": "fa845a", "ad314a": "ad7b08", - "c5ced6": "c5ced6", - "de5a29": "f7b834", - "ffffff": "ffffff", - "737b84": "737b84" + "de5a29": "f7b834" }, "1": { "3a4a8c": "6f3633", @@ -28,10 +25,7 @@ "5a1000": "211e33", "ffff19": "ffd177", "ad314a": "829ca6", - "c5ced6": "c5ced6", - "de5a29": "c2dedf", - "ffffff": "ffffff", - "737b84": "737b84" + "de5a29": "c2dedf" }, "2": { "3a4a8c": "223a4a", @@ -45,9 +39,6 @@ "5a1000": "521000", "ffff19": "62cbff", "ad314a": "be472f", - "c5ced6": "c5ced6", - "de5a29": "ee723e", - "ffffff": "ffffff", - "737b84": "737b84" + "de5a29": "ee723e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/445.json b/public/images/pokemon/variant/back/female/445.json index 41d1e100a96..dc453b93018 100644 --- a/public/images/pokemon/variant/back/female/445.json +++ b/public/images/pokemon/variant/back/female/445.json @@ -4,12 +4,8 @@ "5a63ad": "33719e", "42428c": "1e4b77", "7b7bce": "65a2d5", - "101010": "101010", "c59410": "3aadc5", "ffd619": "42d6de", - "ffffff": "ffffff", - "737b84": "737b84", - "c5ced6": "c5ced6", "bd3a42": "b2630f", "5a1000": "502209", "e64a31": "f7ac34" @@ -19,12 +15,8 @@ "5a63ad": "deae7a", "42428c": "af6e55", "7b7bce": "f2d8aa", - "101010": "101010", "c59410": "255dd7", "ffd619": "4caaff", - "ffffff": "ffffff", - "737b84": "737b84", - "c5ced6": "c5ced6", "bd3a42": "9fb6bf", "5a1000": "393648", "e64a31": "dce8e8" @@ -34,12 +26,8 @@ "5a63ad": "2f434b", "42428c": "152c3b", "7b7bce": "689099", - "101010": "101010", "c59410": "23b8a8", "ffd619": "6fe6a3", - "ffffff": "ffffff", - "737b84": "737b84", - "c5ced6": "c5ced6", "bd3a42": "be472f", "5a1000": "521000", "e64a31": "de5a29" diff --git a/public/images/pokemon/variant/back/female/45.json b/public/images/pokemon/variant/back/female/45.json index b278635e4cc..0af6336f5bf 100644 --- a/public/images/pokemon/variant/back/female/45.json +++ b/public/images/pokemon/variant/back/female/45.json @@ -7,7 +7,6 @@ "f77373": "5e8fde", "de4a5a": "436ac7", "944a00": "472b86", - "101010": "101010", "ff8429": "966fbb", "ce6319": "724ba4", "19294a": "201349", @@ -24,7 +23,6 @@ "f77373": "d2cbb2", "de4a5a": "cdb2a2", "944a00": "621734", - "101010": "101010", "ff8429": "a23d44", "ce6319": "8b293e", "19294a": "510c35", diff --git a/public/images/pokemon/variant/back/female/453.json b/public/images/pokemon/variant/back/female/453.json index 8fab3b26995..f8f06b5808f 100644 --- a/public/images/pokemon/variant/back/female/453.json +++ b/public/images/pokemon/variant/back/female/453.json @@ -4,7 +4,6 @@ "4a4a8c": "701221", "6b73d6": "9e1e23", "849cff": "c45447", - "101010": "101010", "9c3a3a": "d07320", "e6525a": "f2b64c", "ff9ca5": "f7db86", diff --git a/public/images/pokemon/variant/back/female/454.json b/public/images/pokemon/variant/back/female/454.json index c9a44500cec..ef803e87155 100644 --- a/public/images/pokemon/variant/back/female/454.json +++ b/public/images/pokemon/variant/back/female/454.json @@ -1,7 +1,6 @@ { "1": { "3a3a52": "4c0914", - "101010": "101010", "6b73d6": "9e1e23", "4a4a8c": "701221", "849cff": "c45447", diff --git a/public/images/pokemon/variant/back/female/456.json b/public/images/pokemon/variant/back/female/456.json index 5a7072a85e3..88e91daf10d 100644 --- a/public/images/pokemon/variant/back/female/456.json +++ b/public/images/pokemon/variant/back/female/456.json @@ -2,7 +2,6 @@ "1": { "31425a": "b94539", "526b8c": "986259", - "101010": "101010", "426b84": "e2895d", "94d6e6": "f3e1c6", "29293a": "7e2023", @@ -11,14 +10,11 @@ "c54591": "f19e53", "833171": "d3633a", "c54a94": "8bbcd9", - "efffff": "efffff", - "73427b": "688db9", - "15202e": "15202e" + "73427b": "688db9" }, "2": { "31425a": "e89e3d", "526b8c": "162743", - "101010": "101010", "426b84": "fff8b0", "94d6e6": "27616f", "29293a": "b66736", @@ -27,8 +23,6 @@ "c54591": "5fd0a4", "833171": "349b8b", "c54a94": "7b1615", - "efffff": "efffff", - "73427b": "550a16", - "15202e": "15202e" + "73427b": "550a16" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/457.json b/public/images/pokemon/variant/back/female/457.json index d12664b8695..6bb2c6e0efe 100644 --- a/public/images/pokemon/variant/back/female/457.json +++ b/public/images/pokemon/variant/back/female/457.json @@ -1,7 +1,6 @@ { "1": { "526b8c": "966764", - "101010": "101010", "c5e6f7": "fffbf2", "94d6e6": "f3e1c6", "7394ad": "cda38c", @@ -10,14 +9,12 @@ "303449": "812628", "c54591": "ffc369", "9e357b": "c7703c", - "efffff": "efffff", "c54a94": "aadff3", "73427b": "6f75a0", "26344c": "815358" }, "2": { "526b8c": "162743", - "101010": "101010", "c5e6f7": "429b91", "94d6e6": "27616f", "7394ad": "1c405b", @@ -26,7 +23,6 @@ "303449": "d67947", "c54591": "50c2a1", "9e357b": "2e9b8f", - "efffff": "efffff", "c54a94": "983121", "73427b": "7b1213", "26344c": "12223d" diff --git a/public/images/pokemon/variant/back/female/461.json b/public/images/pokemon/variant/back/female/461.json index 71308ceadc5..6414601a8af 100644 --- a/public/images/pokemon/variant/back/female/461.json +++ b/public/images/pokemon/variant/back/female/461.json @@ -3,7 +3,6 @@ "c52973": "3a3d60", "842152": "191a24", "f75273": "636896", - "101010": "101010", "293152": "530b34", "6b6bad": "8b274b", "424a84": "691043", @@ -11,19 +10,16 @@ "ffffff": "ffefb1", "ffd642": "ffb05b", "6b637b": "985d45", - "c5bdce": "cca075", - "8c2931": "8c2931" + "c5bdce": "cca075" }, "2": { "c52973": "3d81c5", "842152": "102f6c", "f75273": "5cb0eb", - "101010": "101010", "293152": "96543f", "6b6bad": "ffd3a7", "424a84": "ecaa84", "c58c08": "8f1a8d", - "ffffff": "ffffff", "ffd642": "e6509f", "6b637b": "718198", "c5bdce": "b3cedb", diff --git a/public/images/pokemon/variant/back/female/464.json b/public/images/pokemon/variant/back/female/464.json index 9479b6f2ebf..10c18fa20e9 100644 --- a/public/images/pokemon/variant/back/female/464.json +++ b/public/images/pokemon/variant/back/female/464.json @@ -5,15 +5,9 @@ "ef5200": "6f4d9f", "29293a": "1f1028", "3a3a4a": "3b2d40", - "101010": "101010", "7b6b7b": "6e5d7b", - "6b6373": "6b6373", - "cecede": "cecede", - "efefff": "efefff", "5a4a63": "514259", - "948cad": "948cad", - "943a00": "4c2f6e", - "ad2900": "ad2900" + "943a00": "4c2f6e" }, "2": { "523100": "492133", @@ -21,7 +15,6 @@ "ef5200": "6d3950", "29293a": "442339", "3a3a4a": "701f38", - "101010": "101010", "7b6b7b": "c6405b", "6b6373": "b66360", "cecede": "e8a797", diff --git a/public/images/pokemon/variant/back/female/465.json b/public/images/pokemon/variant/back/female/465.json index ed257655add..fec2a63f634 100644 --- a/public/images/pokemon/variant/back/female/465.json +++ b/public/images/pokemon/variant/back/female/465.json @@ -3,10 +3,8 @@ "193a63": "391963", "295a84": "472984", "3a73ad": "6b3aad", - "000000": "000000", "5a193a": "195a2a", "bd216b": "21bd69", - "31313a": "31313a", "d65a94": "5ad662" }, "2": { diff --git a/public/images/pokemon/variant/back/female/592.json b/public/images/pokemon/variant/back/female/592.json index eaaa9cf38ea..a7f086924bd 100644 --- a/public/images/pokemon/variant/back/female/592.json +++ b/public/images/pokemon/variant/back/female/592.json @@ -1,29 +1,23 @@ { "0": { "7b3a52": "622a1e", - "101010": "101010", "ffdee6": "ffe7df", "d6b5bd": "f2bba3", "bd84a5": "eb8b4d", - "ffb5d6": "ffb868", - "ffffff": "ffffff" + "ffb5d6": "ffb868" }, "1": { "7b3a52": "302a85", - "101010": "101010", "ffdee6": "e3deff", "d6b5bd": "9d92ce", "bd84a5": "5052c1", - "ffb5d6": "6270e3", - "ffffff": "ffffff" + "ffb5d6": "6270e3" }, "2": { "7b3a52": "4e1b55", - "101010": "101010", "ffdee6": "a65ea3", "d6b5bd": "703573", "bd84a5": "efacd1", - "ffb5d6": "ffdbec", - "ffffff": "ffffff" + "ffb5d6": "ffdbec" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/593.json b/public/images/pokemon/variant/back/female/593.json index 6f954902f10..af86de4b02e 100644 --- a/public/images/pokemon/variant/back/female/593.json +++ b/public/images/pokemon/variant/back/female/593.json @@ -1,7 +1,6 @@ { "0": { "7b3a52": "622a1e", - "101010": "101010", "ffdef7": "ffe7df", "c5a5bd": "f2bba3", "d684b5": "eb8b4d", @@ -9,7 +8,6 @@ }, "1": { "7b3a52": "302a85", - "101010": "101010", "ffdef7": "e3deff", "c5a5bd": "aba5c5", "d684b5": "4c4eb7", @@ -17,7 +15,6 @@ }, "2": { "7b3a52": "4e1b55", - "101010": "101010", "ffdef7": "a65ea3", "c5a5bd": "703573", "d684b5": "efacd1", diff --git a/public/images/pokemon/variant/back/female/6215.json b/public/images/pokemon/variant/back/female/6215.json index 741d6ddc0bb..db99eb822bf 100644 --- a/public/images/pokemon/variant/back/female/6215.json +++ b/public/images/pokemon/variant/back/female/6215.json @@ -6,12 +6,9 @@ "9c9bce": "ae8976", "514a80": "402010", "dcdbf7": "d0b3a4", - "080808": "080808", "28234b": "220d0a", "7d6ca4": "853a36", "584d80": "562627", - "f6f6ff": "f6f6ff", - "bdbdc5": "bdbdc5", "c52973": "ea903f" }, "2": { @@ -21,12 +18,9 @@ "9c9bce": "3c8775", "514a80": "14273a", "dcdbf7": "60ae7e", - "080808": "080808", "28234b": "0a191e", "7d6ca4": "395962", "584d80": "1c3942", - "f6f6ff": "f6f6ff", - "bdbdc5": "bdbdc5", "c52973": "f49633" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/84.json b/public/images/pokemon/variant/back/female/84.json index 2cb87a3cd28..2b665f3b48c 100644 --- a/public/images/pokemon/variant/back/female/84.json +++ b/public/images/pokemon/variant/back/female/84.json @@ -3,10 +3,7 @@ "523a19": "1b4e31", "946b5a": "3a8951", "bd8c52": "65bf75", - "636363": "636363", "dead73": "a5e6a0", - "ffffff": "ffffff", - "101010": "101010", "a5844a": "bba689", "635210": "7a614c", "efdead": "ece4ce", @@ -16,10 +13,7 @@ "523a19": "4e0d2f", "946b5a": "762141", "bd8c52": "9b374e", - "636363": "636363", "dead73": "c35d6a", - "ffffff": "ffffff", - "101010": "101010", "a5844a": "af85a2", "635210": "4a2240", "efdead": "e7cedb", @@ -29,10 +23,7 @@ "523a19": "2e4c6c", "946b5a": "5f92aa", "bd8c52": "7abcc7", - "636363": "636363", "dead73": "b0ebed", - "ffffff": "ffffff", - "101010": "101010", "a5844a": "4a1e41", "635210": "391435", "efdead": "884b71", diff --git a/public/images/pokemon/variant/back/female/85.json b/public/images/pokemon/variant/back/female/85.json index 4499daf9608..ebf7e226b8b 100644 --- a/public/images/pokemon/variant/back/female/85.json +++ b/public/images/pokemon/variant/back/female/85.json @@ -1,16 +1,11 @@ { "0": { - "424242": "424242", - "848484": "848484", - "000000": "000000", "5a4221": "1b4e31", "a57b5a": "3a8951", "ce9c52": "65bf75", "635a42": "7a614c", "efdead": "ece4ce", - "ffffff": "ffffff", "b5a57b": "bba689", - "d6cece": "d6cece", "b54242": "1a265f", "ffd6e6": "7fbdd1", "f784a5": "3a6c97" @@ -18,15 +13,12 @@ "1": { "424242": "1c1d49", "848484": "2e3260", - "000000": "000000", "5a4221": "4e0d2f", "a57b5a": "762141", "ce9c52": "9b374e", "635a42": "4a2240", "efdead": "e7cedb", - "ffffff": "ffffff", "b5a57b": "af85a2", - "d6cece": "d6cece", "b54242": "4e276f", "ffd6e6": "a668ba", "f784a5": "784496" @@ -34,15 +26,12 @@ "2": { "424242": "621e2a", "848484": "973d41", - "000000": "000000", "5a4221": "2e4c6c", "a57b5a": "6a9dbf", "ce9c52": "94d1db", "635a42": "391436", "efdead": "784766", - "ffffff": "ffffff", "b5a57b": "54284b", - "d6cece": "d6cece", "b54242": "6d1b55", "ffd6e6": "e882a5", "f784a5": "a5397a" diff --git a/public/images/pokemon/variant/exp/1001.json b/public/images/pokemon/variant/exp/1001.json index e85b345ed2b..5de76f31c04 100644 --- a/public/images/pokemon/variant/exp/1001.json +++ b/public/images/pokemon/variant/exp/1001.json @@ -3,7 +3,6 @@ "505551": "754e3b", "b8bebd": "ebe6c0", "313430": "4f2711", - "0f0f0f": "0f0f0f", "7e615a": "1f1e1c", "48492e": "0a0907", "a28b76": "383734", @@ -13,17 +12,12 @@ "524a36": "6e4105", "b99c60": "e2a845", "7b7253": "b87416", - "f97c20": "a5af8b", - "fdfdfd": "fdfdfd", - "010101": "010101", - "212421": "212421", - "212021": "212021" + "f97c20": "a5af8b" }, "2": { "505551": "322733", "b8bebd": "dbcce8", "313430": "1b101c", - "0f0f0f": "0f0f0f", "7e615a": "e6aec8", "48492e": "9c4b6f", "a28b76": "fce6f0", @@ -33,10 +27,6 @@ "524a36": "420f0f", "b99c60": "bd405d", "7b7253": "5e1b1b", - "f97c20": "f536f5", - "fdfdfd": "fdfdfd", - "010101": "010101", - "212421": "212421", - "212021": "212021" + "f97c20": "f536f5" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/1003.json b/public/images/pokemon/variant/exp/1003.json index b9e73bfb9aa..2dbd7479745 100644 --- a/public/images/pokemon/variant/exp/1003.json +++ b/public/images/pokemon/variant/exp/1003.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "477068": "daa666", "905a20": "655062", "2e4f49": "96562e", @@ -21,7 +20,6 @@ "856e62": "514758" }, "2": { - "000000": "000000", "477068": "8d6acc", "905a20": "57599c", "2e4f49": "6241a1", diff --git a/public/images/pokemon/variant/exp/1004.json b/public/images/pokemon/variant/exp/1004.json index 4a489005a7e..cbbd66b9a4f 100644 --- a/public/images/pokemon/variant/exp/1004.json +++ b/public/images/pokemon/variant/exp/1004.json @@ -2,7 +2,6 @@ "1": { "a23724": "b06f00", "f4342f": "f2b200", - "0f0f0f": "0f0f0f", "f35e38": "ffc81b", "f9824f": "ffe13a", "b15236": "dca300", @@ -14,39 +13,15 @@ "5b985a": "5c71c1", "83b884": "7a9ae0", "3c3f3a": "27276a", - "f8f8f0": "f8f8f0", "548c53": "5acbe0", - "0e0e0e": "0e0e0e", - "6e5e00": "6e5e00", - "1a3b1e": "1a3b1e", "426b41": "3f89b4", - "ffd871": "ffd871", - "ffba02": "ffba02", - "ffce4c": "ffce4c", - "443a00": "443a00", - "ec8d22": "ec8d22", "73af74": "539de0", "ffc938": "ffe49d", - "ffe191": "fffaed", - "857100": "857100", - "ffedbe": "ffedbe", - "524600": "524600", - "4e6e00": "4e6e00", - "e8ff71": "e8ff71", - "d5ff02": "d5ff02", - "e2ff4c": "e2ff4c", - "304400": "304400", - "7a6800": "7a6800", - "ffe39a": "ffe39a", - "ffc21f": "ffc21f", - "4b4000": "4b4000", - "ece622": "ece622", - "ee9b3d": "ee9b3d" + "ffe191": "fffaed" }, "2": { "a23724": "76074d", "f4342f": "a525d3", - "0f0f0f": "0f0f0f", "f35e38": "3449f6", "f9824f": "49c9f6", "b15236": "7642bd", @@ -58,33 +33,16 @@ "5b985a": "b09f97", "83b884": "d7cbb5", "3c3f3a": "4b4444", - "f8f8f0": "f8f8f0", "548c53": "e5c468", - "0e0e0e": "0e0e0e", - "6e5e00": "6e5e00", "1a3b1e": "420202", "426b41": "bda10a", - "ffd871": "ffd871", - "ffba02": "ffba02", - "ffce4c": "ffce4c", - "443a00": "443a00", - "ec8d22": "ec8d22", "73af74": "b48910", "ffc938": "ff8e70", "ffe191": "ffb3aa", - "857100": "857100", - "ffedbe": "ffedbe", - "524600": "524600", "4e6e00": "a34b0b", "e8ff71": "ffd0ae", "d5ff02": "ffb47d", "e2ff4c": "ff8374", - "304400": "440000", - "7a6800": "7a6800", - "ffe39a": "ffe39a", - "ffc21f": "ffc21f", - "4b4000": "4b4000", - "ece622": "ece622", - "ee9b3d": "ee9b3d" + "304400": "440000" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/1006.json b/public/images/pokemon/variant/exp/1006.json index 3fd7c511936..4e329152f01 100644 --- a/public/images/pokemon/variant/exp/1006.json +++ b/public/images/pokemon/variant/exp/1006.json @@ -1,7 +1,6 @@ { "2": { "37522e": "2a224e", - "000000": "000000", "456539": "2a224e", "4b9080": "3e2d63", "456639": "2a224e", diff --git a/public/images/pokemon/variant/exp/1008-ultimate-mode.json b/public/images/pokemon/variant/exp/1008-ultimate-mode.json index 2301e19c8e6..90b682218e9 100644 --- a/public/images/pokemon/variant/exp/1008-ultimate-mode.json +++ b/public/images/pokemon/variant/exp/1008-ultimate-mode.json @@ -1,18 +1,10 @@ { "0": { "0697ee": "8955b5", - "ffffff": "ffffff", "aaa8db": "7fd8cf", - "39ace3": "39ace3", - "9c97bd": "9c97bd", - "aca7c7": "aca7c7", "f7ec83": "427eff", - "000000": "000000", "635e7b": "5c4370", - "494e5f": "494e5f", - "7e738c": "7e738c", "1c174e": "393a3e", - "e1e0e9": "e1e0e9", "2f329f": "858585", "765cc2": "c8c8c8" }, @@ -20,13 +12,10 @@ "0697ee": "31808e", "ffffff": "ffffc9", "aaa8db": "ade263", - "39ace3": "39ace3", "9c97bd": "7d8ace", "aca7c7": "89a5ff", "f7ec83": "2cc151", - "000000": "000000", "635e7b": "3b5c63", - "494e5f": "494e5f", "7e738c": "626b94", "1c174e": "252e42", "e1e0e9": "b7d8ff", @@ -41,10 +30,6 @@ "9c97bd": "aa88a1", "aca7c7": "ad9e9d", "f7ec83": "cc5767", - "000000": "000000", - "635e7b": "635e7b", - "494e5f": "494e5f", - "7e738c": "7e738c", "1c174e": "192142", "e1e0e9": "e0e0e0", "2f329f": "2a3768", diff --git a/public/images/pokemon/variant/exp/127-mega.json b/public/images/pokemon/variant/exp/127-mega.json index d23b5071423..4ba25f9f216 100644 --- a/public/images/pokemon/variant/exp/127-mega.json +++ b/public/images/pokemon/variant/exp/127-mega.json @@ -3,34 +3,24 @@ "837362": "7e5649", "eee6cd": "eccb90", "d5c5b4": "d29f88", - "000000": "000000", "b4a494": "b1846f", "4a4139": "441a0f", - "ae5a05": "ae5a05", - "eb8823": "eb8823", "5a4131": "172a22", "c5ac8b": "72988e", "836a52": "3b554d", "a48b6a": "54796f", - "e6d5b4": "92bab1", - "fffd79": "fffd79", - "ffffff": "ffffff" + "e6d5b4": "92bab1" }, "2": { "837362": "868686", "eee6cd": "ffffff", "d5c5b4": "d5d5d5", - "000000": "000000", "b4a494": "b7b7b7", "4a4139": "484848", - "ae5a05": "ae5a05", - "eb8823": "eb8823", "5a4131": "5c0026", "c5ac8b": "d56a70", "836a52": "8c2c40", "a48b6a": "b44954", - "e6d5b4": "fa958c", - "fffd79": "fffd79", - "ffffff": "ffffff" + "e6d5b4": "fa958c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/181-mega.json b/public/images/pokemon/variant/exp/181-mega.json index 43ab28dd603..52125fd3653 100644 --- a/public/images/pokemon/variant/exp/181-mega.json +++ b/public/images/pokemon/variant/exp/181-mega.json @@ -2,7 +2,6 @@ "1": { "626a6a": "58341f", "ffffff": "ffe8b2", - "101010": "101010", "c54100": "e28f09", "b4b4bd": "e5c079", "e6e6e6": "ffe8b2", @@ -17,7 +16,6 @@ "2": { "626a6a": "5d412a", "ffffff": "fff1d0", - "101010": "101010", "c54100": "d26b00", "b4b4bd": "ebbb78", "e6e6e6": "fff1d0", diff --git a/public/images/pokemon/variant/exp/2027.json b/public/images/pokemon/variant/exp/2027.json index 1bf950569fb..2aec1f8d221 100644 --- a/public/images/pokemon/variant/exp/2027.json +++ b/public/images/pokemon/variant/exp/2027.json @@ -1,10 +1,8 @@ { "1": { "354e73": "752e42", - "fefefe": "fefefe", "b6dbe7": "ffdac2", "84b3ce": "d27c80", - "101010": "101010", "518d9f": "a24c68", "10397b": "212d55", "cdbe85": "d3d3c6", @@ -13,10 +11,8 @@ }, "2": { "354e73": "3d2c78", - "fefefe": "fefefe", "b6dbe7": "dbb1eb", "84b3ce": "a87bcf", - "101010": "101010", "518d9f": "6a439e", "10397b": "1d6268", "cdbe85": "44225a", diff --git a/public/images/pokemon/variant/exp/2028.json b/public/images/pokemon/variant/exp/2028.json index 36887e3f321..3ef67aec065 100644 --- a/public/images/pokemon/variant/exp/2028.json +++ b/public/images/pokemon/variant/exp/2028.json @@ -1,7 +1,6 @@ { "1": { "3c88b4": "966281", - "101010": "101010", "ffffff": "fffffc", "52b0cf": "e2877b", "b0e5f8": "fffed9", @@ -13,12 +12,10 @@ "8c8c8c": "8d6e6f", "525252": "6f525d", "bdbdcd": "d0c0b6", - "606060": "4f364c", - "f1f1f4": "f1f1f4" + "606060": "4f364c" }, "2": { "3c88b4": "515fa9", - "101010": "101010", "ffffff": "e3f0ff", "52b0cf": "57a5c5", "b0e5f8": "f8f5b0", diff --git a/public/images/pokemon/variant/exp/2052.json b/public/images/pokemon/variant/exp/2052.json index 31ff32696b8..d33bed4ace9 100644 --- a/public/images/pokemon/variant/exp/2052.json +++ b/public/images/pokemon/variant/exp/2052.json @@ -1,11 +1,9 @@ { "1": { "45505f": "8c583b", - "0a0a0a": "0a0a0a", "91a3bf": "ffda5c", "262b3c": "41185e", "995433": "493473", - "f3f3f3": "f3f3f3", "e3cc2b": "a66db5", "ca833c": "7a519a", "798071": "7a4888", @@ -15,11 +13,9 @@ }, "2": { "45505f": "271420", - "0a0a0a": "0a0a0a", "91a3bf": "7c4e42", "262b3c": "1d1b33", "995433": "45328e", - "f3f3f3": "f3f3f3", "e3cc2b": "b5b8f9", "ca833c": "7b7fda", "798071": "5f5c7e", diff --git a/public/images/pokemon/variant/exp/2053.json b/public/images/pokemon/variant/exp/2053.json index 6968f2f227c..7639601cd00 100644 --- a/public/images/pokemon/variant/exp/2053.json +++ b/public/images/pokemon/variant/exp/2053.json @@ -1,13 +1,11 @@ { "1": { - "000000": "000000", "545968": "65352c", "ced6ee": "ffda5c", "a5adc7": "e89b4b", "847f8a": "592d7a", "c2bdc7": "8a519a", "02b0e3": "6945aa", - "ffffff": "ffffff", "5dc7e5": "9d67d8", "0a6079": "2e2575", "7b7ba8": "7c488a", diff --git a/public/images/pokemon/variant/exp/212-mega.json b/public/images/pokemon/variant/exp/212-mega.json index e53c2924659..146a43bc59a 100644 --- a/public/images/pokemon/variant/exp/212-mega.json +++ b/public/images/pokemon/variant/exp/212-mega.json @@ -1,43 +1,23 @@ { "0": { "622929": "215a2d", - "000000": "000000", "f66a6a": "8cce73", "d53939": "4a9c53", - "a42929": "2f794e", - "404052": "404052", - "ffffff": "ffffff", - "717186": "717186", - "2b2b38": "2b2b38", - "b4b4cd": "b4b4cd", - "1083a2": "1083a2", - "2cabcc": "2cabcc" + "a42929": "2f794e" }, "1": { "622929": "2f2962", - "000000": "000000", "f66a6a": "639cf7", "d53939": "4263ef", - "a42929": "29429c", - "404052": "404052", - "ffffff": "ffffff", - "717186": "717186", - "2b2b38": "2b2b38", - "b4b4cd": "b4b4cd", - "1083a2": "1083a2", - "2cabcc": "2cabcc" + "a42929": "29429c" }, "2": { "622929": "645117", - "000000": "000000", "f66a6a": "c59f29", "d53939": "ffca2a", "a42929": "b88619", "404052": "282d2c", - "ffffff": "ffffff", "717186": "3c4543", - "2b2b38": "2b2b38", - "b4b4cd": "b4b4cd", "1083a2": "645117", "2cabcc": "f4e920" } diff --git a/public/images/pokemon/variant/exp/229-mega.json b/public/images/pokemon/variant/exp/229-mega.json index 1cc9a9fe878..a2c95914e2a 100644 --- a/public/images/pokemon/variant/exp/229-mega.json +++ b/public/images/pokemon/variant/exp/229-mega.json @@ -2,7 +2,6 @@ "1": { "83738b": "7c323c", "ffffff": "f3bd87", - "000000": "000000", "cdd5d5": "c87966", "a49cac": "a84b50", "182029": "321b32", @@ -11,19 +10,14 @@ "a45a4a": "ceb0a5", "313139": "553454", "6a211f": "314075", - "c5cdd1": "c5cdd1", "ce0a10": "455d92", - "f8f9ff": "f8f9ff", "622910": "77545b", - "e2e0e3": "e2e0e3", - "b6aabc": "b6aabc", "732422": "856458", "af1b1b": "aa8c82" }, "2": { "83738b": "100f27", "ffffff": "5c8d95", - "000000": "000000", "cdd5d5": "38576c", "a49cac": "223657", "182029": "321b32", @@ -36,8 +30,6 @@ "ce0a10": "e58142", "f8f9ff": "223657", "622910": "311f3a", - "e2e0e3": "e2e0e3", - "b6aabc": "b6aabc", "732422": "423655", "af1b1b": "534b6a" } diff --git a/public/images/pokemon/variant/exp/248-mega.json b/public/images/pokemon/variant/exp/248-mega.json index 0a46ac40a4a..4f62567bc40 100644 --- a/public/images/pokemon/variant/exp/248-mega.json +++ b/public/images/pokemon/variant/exp/248-mega.json @@ -1,34 +1,34 @@ { "1": { -"4a5a39": "533334", -"821610": "004194", -"942900": "004194", -"d0243b": "006fb3", -"d55200": "0098fc", -"ff3e40": "0098fc", -"f24159": "088a72", -"f55e72": "18b8a0", -"ff6668": "1cd9ff", -"739c62": "915957", -"ff8385": "00e0fc", -"ffa3a4": "00ffc8", -"accd9c": "c78482", -"dee6cd": "dbb1b5" + "4a5a39": "533334", + "821610": "004194", + "942900": "004194", + "d0243b": "006fb3", + "d55200": "0098fc", + "ff3e40": "0098fc", + "f24159": "088a72", + "f55e72": "18b8a0", + "ff6668": "1cd9ff", + "739c62": "915957", + "ff8385": "00e0fc", + "ffa3a4": "00ffc8", + "accd9c": "c78482", + "dee6cd": "dbb1b5" }, "2": { -"4a5a39": "06092f", -"821610": "ee7b06", -"942900": "ee7b06", -"d0243b": "ffa904", -"d55200": "ffa904", -"ff3e40": "ffef76", -"f24159": "ffbf44", -"f55e72": "ffd380", -"ff6668": "fef3a1", -"739c62": "2c3071", -"ff8385": "fff8c1", -"ffa3a4": "fffbdd", -"accd9c": "625695", -"dee6cd": "7068b2" + "4a5a39": "06092f", + "821610": "ee7b06", + "942900": "ee7b06", + "d0243b": "ffa904", + "d55200": "ffa904", + "ff3e40": "ffef76", + "f24159": "ffbf44", + "f55e72": "ffd380", + "ff6668": "fef3a1", + "739c62": "2c3071", + "ff8385": "fff8c1", + "ffa3a4": "fffbdd", + "accd9c": "625695", + "dee6cd": "7068b2" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/257-mega.json b/public/images/pokemon/variant/exp/257-mega.json index 0da37a3799f..ac22ad976ce 100644 --- a/public/images/pokemon/variant/exp/257-mega.json +++ b/public/images/pokemon/variant/exp/257-mega.json @@ -1,7 +1,6 @@ { "1": { "62524a": "3b3f61", - "000000": "000000", "832929": "9b422a", "bdb494": "a8c7da", "dedeb4": "f0fbff", @@ -20,7 +19,6 @@ }, "2": { "62524a": "5b143d", - "000000": "000000", "832929": "9c7c70", "bdb494": "a1304d", "dedeb4": "bc474d", diff --git a/public/images/pokemon/variant/exp/302-mega.json b/public/images/pokemon/variant/exp/302-mega.json index 733407fd959..862f7fb8997 100644 --- a/public/images/pokemon/variant/exp/302-mega.json +++ b/public/images/pokemon/variant/exp/302-mega.json @@ -4,7 +4,6 @@ "7b0000": "590752", "9e0d1a": "590752", "ff94ac": "ff8fcf", - "000000": "000000", "5a4a94": "416a3d", "ee4554": "c72c9c", "393952": "123812", @@ -18,7 +17,6 @@ "7b0000": "192077", "9e0d1a": "192077", "ff94ac": "61d6f2", - "000000": "000000", "5a4a94": "7e141c", "ee4554": "185da6", "393952": "580a16", diff --git a/public/images/pokemon/variant/exp/303-mega.json b/public/images/pokemon/variant/exp/303-mega.json index 7a025fedf32..30b63d73c46 100644 --- a/public/images/pokemon/variant/exp/303-mega.json +++ b/public/images/pokemon/variant/exp/303-mega.json @@ -1,34 +1,26 @@ { "1": { - "000000": "000000", "737373": "347c7d", "4a4a4a": "193e49", "7b5a29": "6b5424", "984868": "b43929", "ffc55a": "d6c491", - "ffffff": "ffffff", - "cdcdcd": "cdcdcd", "9ca494": "4fa285", "b86088": "ff625a", "de9441": "a99372", - "484848": "484848", "9c4a6a": "23445e", "732041": "162843", "bd628b": "397189" }, "2": { - "000000": "000000", "737373": "9d7cd6", "4a4a4a": "2f2781", "7b5a29": "706d80", "984868": "b43929", "ffc55a": "cfc8e4", - "ffffff": "ffffff", - "cdcdcd": "cdcdcd", "9ca494": "c7a8eb", "b86088": "ff625a", "de9441": "b1a3ca", - "484848": "484848", "9c4a6a": "4c3767", "732041": "2b1c3f", "bd628b": "694c84" diff --git a/public/images/pokemon/variant/exp/306-mega.json b/public/images/pokemon/variant/exp/306-mega.json index 40575898b93..5a9936478d2 100644 --- a/public/images/pokemon/variant/exp/306-mega.json +++ b/public/images/pokemon/variant/exp/306-mega.json @@ -10,9 +10,7 @@ "838394": "a48d76", "a4a4ac": "bca88c", "6abdff": "ff78fa", - "acacac": "69ad6c", - "9c3141": "9c3141", - "de5252": "de5252" + "acacac": "69ad6c" }, "1": { "000000": "101010", @@ -40,8 +38,6 @@ "838394": "833d19", "a4a4ac": "a45f34", "6abdff": "2aebcf", - "acacac": "7d95bf", - "9c3141": "9c3141", - "de5252": "de5252" + "acacac": "7d95bf" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/334-mega.json b/public/images/pokemon/variant/exp/334-mega.json index 0fafc15e556..16a61dd68d9 100644 --- a/public/images/pokemon/variant/exp/334-mega.json +++ b/public/images/pokemon/variant/exp/334-mega.json @@ -10,7 +10,6 @@ "283858": "771743", "1098c8": "cb457d", "98d8f8": "f3719a", - "101010": "101010", "000000": "101010", "4a6294": "771743", "109ccd": "cb457d" diff --git a/public/images/pokemon/variant/exp/354-mega.json b/public/images/pokemon/variant/exp/354-mega.json index 9e9c1b14f13..b7968016e9c 100644 --- a/public/images/pokemon/variant/exp/354-mega.json +++ b/public/images/pokemon/variant/exp/354-mega.json @@ -3,7 +3,6 @@ "523900": "361a2d", "d59c39": "7d656d", "393141": "431b40", - "000000": "000000", "5a5262": "6c2f4c", "7b5a29": "624858", "eebd5a": "b78d90", @@ -11,16 +10,13 @@ "8d859b": "b0697b", "913e5f": "37838b", "c44a8d": "73bdbd", - "e7e1ea": "e7e1ea", "ce92c8": "b6f0f7", - "512843": "1c4d5d", - "ffffff": "ffffff" + "512843": "1c4d5d" }, "2": { "523900": "151433", "d59c39": "3b3d54", "393141": "3b5d62", - "000000": "000000", "5a5262": "71a680", "7b5a29": "292941", "eebd5a": "4d4f5b", @@ -28,9 +24,7 @@ "8d859b": "b6d192", "913e5f": "751a1c", "c44a8d": "983226", - "e7e1ea": "e7e1ea", "ce92c8": "d1dcaa", - "512843": "4f0209", - "ffffff": "ffffff" + "512843": "4f0209" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/362-mega.json b/public/images/pokemon/variant/exp/362-mega.json index 3b6e39436e6..b3f4144f46f 100644 --- a/public/images/pokemon/variant/exp/362-mega.json +++ b/public/images/pokemon/variant/exp/362-mega.json @@ -1,4 +1,5 @@ -{"1": { +{ + "1": { "010101": "000000", "2b74a8": "84073c", "bbeeff": "f9383e", @@ -16,7 +17,6 @@ "20315e": "460025" }, "2": { - "010101": "010101", "2b74a8": "0c4b3a", "bbeeff": "5ce11a", "393941": "221315", diff --git a/public/images/pokemon/variant/exp/373-mega.json b/public/images/pokemon/variant/exp/373-mega.json index 6500192a0f6..d898320c8b9 100644 --- a/public/images/pokemon/variant/exp/373-mega.json +++ b/public/images/pokemon/variant/exp/373-mega.json @@ -4,18 +4,12 @@ "ce465e": "4572a2", "b83147": "1c4076", "a12a2f": "132760", - "000000": "000000", "2a547a": "6c2d13", "2b87c5": "d28943", "58b3da": "efb660", "2a729a": "a45f28", "ccbc26": "61caf7", "e6e85b": "96e9ff", - "cb3f51": "cb3f51", - "eeeeee": "eeeeee", - "832041": "832041", - "d95b6b": "d95b6b", - "768787": "768787", "a5a594": "f1dbc0", "dfdfd2": "fff8ec" }, @@ -24,17 +18,12 @@ "ce465e": "fff9e5", "b83147": "e5ddcb", "a12a2f": "baae9b", - "000000": "000000", "2a547a": "300926", "2b87c5": "71184e", "58b3da": "8a3562", "2a729a": "3f0f31", "ccbc26": "d56e1d", "e6e85b": "ffaf4a", - "cb3f51": "cb3f51", - "eeeeee": "eeeeee", - "832041": "832041", - "d95b6b": "d95b6b", "768787": "3d0a1d", "a5a594": "591126", "dfdfd2": "781c30" diff --git a/public/images/pokemon/variant/exp/376-mega.json b/public/images/pokemon/variant/exp/376-mega.json index cdcc4794df3..f8043aade9a 100644 --- a/public/images/pokemon/variant/exp/376-mega.json +++ b/public/images/pokemon/variant/exp/376-mega.json @@ -3,7 +3,6 @@ "736a73": "703b08", "313962": "550611", "4a83c5": "bf2e2d", - "101010": "101010", "948b94": "a76911", "416294": "851421", "acacac": "a76911", @@ -20,7 +19,6 @@ "736a73": "6f2c17", "313962": "0b3739", "4a83c5": "41b4a1", - "101010": "101010", "948b94": "9f4219", "416294": "1e716e", "acacac": "9f4219", diff --git a/public/images/pokemon/variant/exp/380-mega.json b/public/images/pokemon/variant/exp/380-mega.json index aedcc39909c..667d83b2203 100644 --- a/public/images/pokemon/variant/exp/380-mega.json +++ b/public/images/pokemon/variant/exp/380-mega.json @@ -27,4 +27,4 @@ "cda44a": "dd6800", "cd4a52": "dd6800" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/381-mega.json b/public/images/pokemon/variant/exp/381-mega.json index bb5b7cffd0b..872cc0e5cc3 100644 --- a/public/images/pokemon/variant/exp/381-mega.json +++ b/public/images/pokemon/variant/exp/381-mega.json @@ -27,4 +27,4 @@ "62004a": "9344b8", "cd4a52": "70309f" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/382-primal.json b/public/images/pokemon/variant/exp/382-primal.json index 4fce9922021..9fa6f794653 100644 --- a/public/images/pokemon/variant/exp/382-primal.json +++ b/public/images/pokemon/variant/exp/382-primal.json @@ -1,44 +1,26 @@ { "1": { "27245e": "d96714", - "000000": "000000", "74659d": "ffb44c", "d3e6f4": "f6e4e0", "373384": "f49230", "b8c9df": "c5253a", "7eaecc": "ff3200", - "fbec99": "fbec99", "417999": "c5253a", - "101010": "101010", "dedede": "fff7f4", "9c8b94": "791309", - "f61010": "f61010", - "a43162": "a43162", - "e19d76": "e19d76", - "fadbb3": "fadbb3", - "90a2c0": "eac3b9", - "cdbdcd": "cdbdcd", - "ffffff": "ffffff" + "90a2c0": "eac3b9" }, "2": { "27245e": "780613", - "000000": "000000", "74659d": "ea512b", - "d3e6f4": "d3e6f4", "373384": "a90e14", "b8c9df": "db6d14", "7eaecc": "ffc546", "fbec99": "90ffde", "417999": "ea7c18", - "101010": "101010", - "dedede": "dedede", "9c8b94": "3c0818", "f61010": "3346d0", - "a43162": "a43162", - "e19d76": "67a6f4", - "fadbb3": "fadbb3", - "90a2c0": "90a2c0", - "cdbdcd": "cdbdcd", - "ffffff": "ffffff" + "e19d76": "67a6f4" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/383-primal.json b/public/images/pokemon/variant/exp/383-primal.json index da20585cc60..04ff6c48796 100644 --- a/public/images/pokemon/variant/exp/383-primal.json +++ b/public/images/pokemon/variant/exp/383-primal.json @@ -2,29 +2,23 @@ "1": { "9d2929": "11421e", "fe736b": "279930", - "010101": "010101", "fe2129": "2b5b32", "fab672": "ff8571", "fff493": "ffd493", "7c2129": "011e0b", "fe6336": "ff203f", - "272324": "272324", "3f3b3c": "383540", "595355": "625769", - "64626c": "64626c", "fbfbfb": "fff6de", "cdccd0": "e5d4b6" }, "2": { "9d2929": "20516c", "fe736b": "68cfd0", - "010101": "010101", "fe2129": "3e8b9f", "fab672": "61ee93", "fff493": "d2ff93", "7c2129": "0a2c43", - "fe6336": "fe6336", - "272324": "272324", "3f3b3c": "2b3c4e", "595355": "4e5169", "64626c": "7373a6", diff --git a/public/images/pokemon/variant/exp/384-mega.json b/public/images/pokemon/variant/exp/384-mega.json index e4de3a1c873..ccfb6f6dbe8 100644 --- a/public/images/pokemon/variant/exp/384-mega.json +++ b/public/images/pokemon/variant/exp/384-mega.json @@ -3,7 +3,6 @@ "fbe27e": "17e2d6", "fc9436": "098faf", "836231": "003082", - "010101": "010101", "f6de00": "17e2d6", "c5a400": "0db1b1", "3d7d6d": "84120f", @@ -13,7 +12,6 @@ "60d293": "f1785e", "e4b629": "036486", "9c2952": "063f67", - "e65273": "2083e7", - "fcfcfc": "fcfcfc" + "e65273": "2083e7" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/4052.json b/public/images/pokemon/variant/exp/4052.json index 1aa7d2251c6..d28c4ee091b 100644 --- a/public/images/pokemon/variant/exp/4052.json +++ b/public/images/pokemon/variant/exp/4052.json @@ -1,28 +1,21 @@ { "1": { - "181a1d": "181a1d", "3d4547": "4e385a", "84726f": "7b7aa5", "ada09a": "c3c5d4", "9aa094": "9ea9b5", "5b4e4d": "57567e", "272d2e": "342b49", - "010101": "010101", - "f3f3f3": "f3f3f3", - "f3d91d": "ffff89", - "000000": "000000" + "f3d91d": "ffff89" }, "2": { - "181a1d": "181a1d", "3d4547": "417778", "84726f": "3c2841", "ada09a": "603b54", "9aa094": "cc9a5f", "5b4e4d": "171127", "272d2e": "234a56", - "010101": "010101", "f3f3f3": "f4d294", - "f3d91d": "c4e857", - "000000": "000000" + "f3d91d": "c4e857" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/4077.json b/public/images/pokemon/variant/exp/4077.json index c51662408f4..4731cec1908 100644 --- a/public/images/pokemon/variant/exp/4077.json +++ b/public/images/pokemon/variant/exp/4077.json @@ -12,7 +12,6 @@ "fcf7ff": "edd5c9", "d2daff": "ffb44c", "59237e": "312c49", - "101010": "101010", "d8cde0": "aeadb3", "adadad": "9f9f9f", "78499b": "514766", @@ -23,7 +22,6 @@ "8e39c1": "990c00", "bdbabf": "c7aba8", "ded5ae": "5b93cc", - "fdfdfd": "fdfdfd", "8bbdc6": "ddb57c", "5292c7": "cb8b6b", "ccfffd": "efe091", @@ -47,7 +45,6 @@ "fcf7ff": "bab8c4", "d2daff": "b247a0", "59237e": "312c49", - "101010": "101010", "d8cde0": "aeadb3", "adadad": "9f9f9f", "78499b": "514766", @@ -58,7 +55,6 @@ "8e39c1": "161f4c", "bdbabf": "a7a9b2", "ded5ae": "cc66cc", - "fdfdfd": "fdfdfd", "8bbdc6": "bd80a3", "5292c7": "9e6b91", "ccfffd": "dd9ab7", diff --git a/public/images/pokemon/variant/exp/4078.json b/public/images/pokemon/variant/exp/4078.json index 854a977387d..5f7f7102ef7 100644 --- a/public/images/pokemon/variant/exp/4078.json +++ b/public/images/pokemon/variant/exp/4078.json @@ -1,11 +1,9 @@ { "1": { - "0c0c0c": "0c0c0c", "44bf75": "cc9470", "737ba4": "514766", "85fabf": "ffd9a5", "109865": "995944", - "2b3055": "2b3055", "ffffe3": "8cd8ff", "636357": "192666", "c566e3": "cc4328", @@ -19,12 +17,10 @@ "4ed68b": "cc9470" }, "2": { - "0c0c0c": "0c0c0c", "44bf75": "cc1e4c", "737ba4": "514766", "85fabf": "ff3255", "109865": "990f3d", - "2b3055": "2b3055", "ffffe3": "ff99dd", "636357": "361e66", "c566e3": "282866", diff --git a/public/images/pokemon/variant/exp/4079.json b/public/images/pokemon/variant/exp/4079.json index cb94f21fed1..8db9a419a27 100644 --- a/public/images/pokemon/variant/exp/4079.json +++ b/public/images/pokemon/variant/exp/4079.json @@ -7,9 +7,6 @@ "f88daf": "bb694b", "7c2847": "452a29", "d76d96": "8f5345", - "101010": "101010", - "d5cdcd": "d5cdcd", - "fcfcfc": "fcfcfc", "dea462": "e0799c", "8b5a18": "a84071", "ffe6b4": "ff9eba" @@ -22,9 +19,6 @@ "f88daf": "ecdcbe", "7c2847": "503941", "d76d96": "c6aead", - "101010": "101010", - "d5cdcd": "d5cdcd", - "fcfcfc": "fcfcfc", "dea462": "ca8e74", "8b5a18": "a45c58", "ffe6b4": "eec596" diff --git a/public/images/pokemon/variant/exp/4080.json b/public/images/pokemon/variant/exp/4080.json index 0d1bb55a1f9..b6fac81034e 100644 --- a/public/images/pokemon/variant/exp/4080.json +++ b/public/images/pokemon/variant/exp/4080.json @@ -2,10 +2,7 @@ "1": { "723f7c": "edc59e", "a565c0": "ffedcc", - "181818": "181818", "d76792": "905446", - "c9c9c9": "c9c9c9", - "fbfbfb": "fbfbfb", "c2c9c9": "de504e", "f985aa": "bb694b", "52525a": "821d2a", @@ -22,10 +19,7 @@ "2": { "723f7c": "963e59", "a565c0": "d9736b", - "181818": "181818", "d76792": "c6aead", - "c9c9c9": "c9c9c9", - "fbfbfb": "fbfbfb", "c2c9c9": "b0dc72", "f985aa": "ecdcbe", "52525a": "2a6122", diff --git a/public/images/pokemon/variant/exp/4199.json b/public/images/pokemon/variant/exp/4199.json index 703b641ef72..89bbdd186b2 100644 --- a/public/images/pokemon/variant/exp/4199.json +++ b/public/images/pokemon/variant/exp/4199.json @@ -3,12 +3,10 @@ "493e66": "831e2b", "a191b5": "de504e", "7a6a98": "ad3139", - "101010": "101010", "654493": "7e3351", "413668": "622344", "403468": "4f0926", "269a36": "f28783", - "f8f8f8": "f8f8f8", "a090b5": "ff9eba", "63577d": "a84071", "403568": "66222b", @@ -27,12 +25,10 @@ "493e66": "2a6122", "a191b5": "b0dc72", "7a6a98": "71ae48", - "101010": "101010", "654493": "37725b", "413668": "1d4c46", "403468": "9e3536", "269a36": "e58b5c", - "f8f8f8": "f8f8f8", "a090b5": "efc697", "63577d": "a55d59", "403568": "e6a572", diff --git a/public/images/pokemon/variant/exp/4222.json b/public/images/pokemon/variant/exp/4222.json index 217262ad84a..f3a79881488 100644 --- a/public/images/pokemon/variant/exp/4222.json +++ b/public/images/pokemon/variant/exp/4222.json @@ -9,7 +9,6 @@ "e3c4f2": "d7d2f6", "9c94a3": "58929f", "cbc2d1": "a9e4e3", - "101010": "101010", "ffa4c5": "76c6ff", "af9e9e": "44a0af", "e66294": "0099ff", @@ -26,7 +25,6 @@ "e3c4f2": "567f83", "9c94a3": "4b1f28", "cbc2d1": "773050", - "101010": "101010", "ffa4c5": "8ff3a3", "af9e9e": "b0919b", "e66294": "15c05f", diff --git a/public/images/pokemon/variant/exp/4263.json b/public/images/pokemon/variant/exp/4263.json index 938fe539ce9..52623dd15d4 100644 --- a/public/images/pokemon/variant/exp/4263.json +++ b/public/images/pokemon/variant/exp/4263.json @@ -5,10 +5,8 @@ "1b2627": "00312d", "5b5958": "397e4a", "f5f5f6": "f5ffea", - "010101": "010101", "b2b3b2": "a3ce9e", "d94a7f": "d414dd", - "fcfcfc": "fcfcfc", "e2729a": "ff69fa", "6e3b51": "9b00b4", "9b4f69": "d414dd", @@ -20,10 +18,8 @@ "1b2627": "080929", "5b5958": "100d2d", "f5f5f6": "3c335d", - "010101": "010101", "b2b3b2": "201b47", "d94a7f": "0099ce", - "fcfcfc": "fcfcfc", "e2729a": "54f1ff", "6e3b51": "004a8b", "9b4f69": "0099ce", diff --git a/public/images/pokemon/variant/exp/4264.json b/public/images/pokemon/variant/exp/4264.json index f40cc4b47cb..1841ad38561 100644 --- a/public/images/pokemon/variant/exp/4264.json +++ b/public/images/pokemon/variant/exp/4264.json @@ -1,13 +1,11 @@ { "1": { - "010101": "010101", "1d1c1b": "01473a", "343332": "1c8155", "727374": "579666", "f5f5f6": "f5ffea", "abadaf": "95c090", "ff4e89": "ff69fa", - "fcfcfc": "fcfcfc", "bc3065": "d414dd", "b4636f": "d414dd", "6f7071": "27323a", @@ -15,14 +13,12 @@ "ffa0bf": "ff69fa" }, "2": { - "010101": "010101", "1d1c1b": "412991", "343332": "7c4cd6", "727374": "18133d", "f5f5f6": "342d4c", "abadaf": "18133d", "ff4e89": "54f1ff", - "fcfcfc": "fcfcfc", "bc3065": "0099ce", "b4636f": "0099ce", "6f7071": "2a1b4e", diff --git a/public/images/pokemon/variant/exp/428-mega.json b/public/images/pokemon/variant/exp/428-mega.json index 63d366c60ae..fce41eef1c9 100644 --- a/public/images/pokemon/variant/exp/428-mega.json +++ b/public/images/pokemon/variant/exp/428-mega.json @@ -7,8 +7,6 @@ "b47b4a": "ffcc99", "8b5a41": "cc8866", "624a41": "660a38", - "000000": "000000", - "ffffff": "ffffff", "ee5a4a": "bd7acc", "7b3941": "472866", "393736": "232533", @@ -22,8 +20,6 @@ "b47b4a": "8cd8ff", "8b5a41": "5b93cc", "624a41": "65597f", - "000000": "000000", - "ffffff": "ffffff", "ee5a4a": "ff884c", "7b3941": "990c00", "393736": "514766", diff --git a/public/images/pokemon/variant/exp/445-mega.json b/public/images/pokemon/variant/exp/445-mega.json index 8cd597252af..bd15564de20 100644 --- a/public/images/pokemon/variant/exp/445-mega.json +++ b/public/images/pokemon/variant/exp/445-mega.json @@ -1,6 +1,5 @@ { "0": { - "000000": "000000", "292952": "061638", "c59410": "3aadc5", "5a62ac": "236696", @@ -9,13 +8,9 @@ "ffd518": "42d6de", "5a1000": "502209", "e64a31": "f7ac34", - "bd3941": "9e5201", - "ffffff": "ffffff", - "737b83": "737b83", - "c5cdd5": "c5cdd5" + "bd3941": "9e5201" }, "1": { - "000000": "000000", "292952": "632f1b", "c59410": "255dd7", "5a62ac": "deae7a", @@ -24,13 +19,9 @@ "ffd518": "4caaff", "5a1000": "393648", "e64a31": "dce8e8", - "bd3941": "9fb6bf", - "ffffff": "ffffff", - "737b83": "737b83", - "c5cdd5": "c5cdd5" + "bd3941": "9fb6bf" }, "2": { - "000000": "000000", "292952": "051a2e", "c59410": "23b8a8", "5a62ac": "2f434b", @@ -39,9 +30,6 @@ "ffd518": "6fe6a3", "5a1000": "521000", "e64a31": "ec642c", - "bd3941": "b23219", - "ffffff": "ffffff", - "737b83": "737b83", - "c5cdd5": "c5cdd5" + "bd3941": "b23219" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/4562.json b/public/images/pokemon/variant/exp/4562.json index 66dc22274b9..a2c3bd41ea6 100644 --- a/public/images/pokemon/variant/exp/4562.json +++ b/public/images/pokemon/variant/exp/4562.json @@ -2,10 +2,8 @@ "1": { "313131": "145555", "525252": "257e6a", - "101010": "101010", "672b82": "7e173e", "ab38d1": "b0264c", - "371d3f": "371d3f", "6f5c6b": "743949", "c5b9bb": "c69981", "cb414b": "18265b", @@ -16,10 +14,8 @@ "2": { "313131": "69162c", "525252": "90222b", - "101010": "101010", "672b82": "57a0b9", "ab38d1": "c2ffe2", - "371d3f": "371d3f", "6f5c6b": "0a4340", "c5b9bb": "298a61", "cb414b": "ffad58", diff --git a/public/images/pokemon/variant/exp/531-mega.json b/public/images/pokemon/variant/exp/531-mega.json index 112b24311c4..068c2e81ea6 100644 --- a/public/images/pokemon/variant/exp/531-mega.json +++ b/public/images/pokemon/variant/exp/531-mega.json @@ -3,7 +3,6 @@ "80734d": "7c4b3b", "ffecb2": "fff6f0", "ccb87a": "d6bfb4", - "101010": "101010", "b35968": "6b0a46", "ffbfca": "f5a779", "737373": "6b0a46", @@ -17,7 +16,6 @@ "80734d": "09232a", "ffecb2": "4bb9a6", "ccb87a": "29878f", - "101010": "101010", "b35968": "111322", "ffbfca": "f6e3a8", "737373": "111322", diff --git a/public/images/pokemon/variant/exp/6100.json b/public/images/pokemon/variant/exp/6100.json index 3ad86ad3547..9d3afba665c 100644 --- a/public/images/pokemon/variant/exp/6100.json +++ b/public/images/pokemon/variant/exp/6100.json @@ -1,7 +1,6 @@ { "1": { "beaba7": "bfebee", - "101010": "101010", "ddccc8": "bfebee", "7c2506": "2e333b", "c04a1c": "4e6170", @@ -18,7 +17,6 @@ }, "2": { "beaba7": "ecd3c1", - "101010": "101010", "ddccc8": "ecd3c1", "7c2506": "5d0a26", "c04a1c": "72142b", diff --git a/public/images/pokemon/variant/exp/6101.json b/public/images/pokemon/variant/exp/6101.json index f1de6652e5e..716e2503c61 100644 --- a/public/images/pokemon/variant/exp/6101.json +++ b/public/images/pokemon/variant/exp/6101.json @@ -1,7 +1,6 @@ { "1": { "845c35": "373e4c", - "101010": "101010", "d9a866": "a5aab7", "f3d181": "c9cdd6", "a9763d": "838797", @@ -9,14 +8,10 @@ "c04a1c": "386583", "ec6f00": "69a6b4", "dc5d00": "4f879f", - "7c2506": "2e333b", - "ddccc8": "ddccc8", - "fefefe": "fefefe", - "6f625e": "6f625e" + "7c2506": "2e333b" }, "2": { "845c35": "231b20", - "101010": "101010", "d9a866": "452d35", "f3d181": "5e343c", "a9763d": "35262c", @@ -24,9 +19,6 @@ "c04a1c": "72142b", "ec6f00": "a62833", "dc5d00": "8f1b2c", - "7c2506": "4a061d", - "ddccc8": "ddccc8", - "fefefe": "fefefe", - "6f625e": "6f625e" + "7c2506": "4a061d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/6215.json b/public/images/pokemon/variant/exp/6215.json index 3198424563b..56ee351cd66 100644 --- a/public/images/pokemon/variant/exp/6215.json +++ b/public/images/pokemon/variant/exp/6215.json @@ -1,7 +1,6 @@ { "1": { "503678": "0f5d6d", - "080808": "080808", "514a80": "402010", "956cbe": "31dabb", "9c9bce": "ae8976", @@ -12,14 +11,10 @@ "ffde7b": "a7a7a7", "584d80": "562627", "28234b": "220d0a", - "c52973": "ea903f", - "bdbdc5": "bdbdc5", - "f6f6ff": "f6f6ff", - "000000": "000000" + "c52973": "ea903f" }, "2": { "503678": "601522", - "080808": "080808", "514a80": "14273a", "956cbe": "cc5427", "9c9bce": "3c8775", @@ -30,9 +25,6 @@ "ffde7b": "ffe07e", "584d80": "1c3942", "28234b": "0a191e", - "c52973": "f49633", - "bdbdc5": "bdbdc5", - "f6f6ff": "f6f6ff", - "000000": "000000" + "c52973": "f49633" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/653.json b/public/images/pokemon/variant/exp/653.json index be967d6c9c2..d603337fb8c 100644 --- a/public/images/pokemon/variant/exp/653.json +++ b/public/images/pokemon/variant/exp/653.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "736028": "9f398a", "ffd659": "e190c3", "ccab47": "c35ba3", @@ -9,11 +8,9 @@ "b34724": "502c81", "737373": "68326b", "f8f8f8": "fbecff", - "bfbfbf": "c093c3", - "404040": "404040" + "bfbfbf": "c093c3" }, "2": { - "101010": "101010", "736028": "172547", "ffd659": "3a6a93", "ccab47": "264166", @@ -22,7 +19,6 @@ "b34724": "0aaa77", "737373": "75553c", "f8f8f8": "fff8ec", - "bfbfbf": "d4b996", - "404040": "404040" + "bfbfbf": "d4b996" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/654.json b/public/images/pokemon/variant/exp/654.json index 0f3b2bf3d4e..98273b9be27 100644 --- a/public/images/pokemon/variant/exp/654.json +++ b/public/images/pokemon/variant/exp/654.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "736028": "061530", "ffd659": "b55390", "ccab47": "872b59", @@ -11,14 +10,11 @@ "737373": "5c255f", "bfbfbf": "c093c3", "804913": "c5b3ca", - "262626": "262626", - "404040": "404040", "f8cf52": "80f37b", "ffc000": "4fcb61", "ff8700": "207d4e" }, "2": { - "101010": "101010", "736028": "061530", "ffd659": "2b5f8a", "ccab47": "173864", @@ -29,8 +25,6 @@ "737373": "75553c", "bfbfbf": "d4b996", "804913": "098794", - "262626": "262626", - "404040": "404040", "f8cf52": "c858a4", "ffc000": "75308e", "ff8700": "521364" diff --git a/public/images/pokemon/variant/exp/6549.json b/public/images/pokemon/variant/exp/6549.json index 8ced2d845dc..821228094f7 100644 --- a/public/images/pokemon/variant/exp/6549.json +++ b/public/images/pokemon/variant/exp/6549.json @@ -3,24 +3,20 @@ "70365a": "29547d", "bd59a2": "5094c0", "315a31": "5a5a2c", - "101010": "101010", "39ac39": "bfd17f", "ff84bd": "73bad9", "bda452": "77909a", "4a834a": "8e954d", "ffbbdb": "b5ddea", - "fdfdfd": "fdfdfd", "ffde41": "b6c7cc", "526229": "80152b", "c5ee7b": "ef5755", - "9cb462": "bd2d40", - "cdc5bd": "cdc5bd" + "9cb462": "bd2d40" }, "2": { "70365a": "8a1a3c", "bd59a2": "d64065", "315a31": "643312", - "101010": "101010", "39ac39": "ebc460", "ff84bd": "e8617a", "bda452": "78412b", diff --git a/public/images/pokemon/variant/exp/655.json b/public/images/pokemon/variant/exp/655.json index 58830e08360..6ac4e8de6dc 100644 --- a/public/images/pokemon/variant/exp/655.json +++ b/public/images/pokemon/variant/exp/655.json @@ -1,7 +1,6 @@ { "1": { "7f5f1f": "331035", - "101010": "101010", "702010": "491679", "f8df5f": "e7caef", "ea541f": "ab6ce0", @@ -31,7 +30,6 @@ }, "2": { "7f5f1f": "75553c", - "101010": "101010", "702010": "005646", "f8df5f": "fff2dd", "ea541f": "21d170", diff --git a/public/images/pokemon/variant/exp/6570.json b/public/images/pokemon/variant/exp/6570.json index d54434d87b5..d7e2a1d6345 100644 --- a/public/images/pokemon/variant/exp/6570.json +++ b/public/images/pokemon/variant/exp/6570.json @@ -4,24 +4,19 @@ "d53a3e": "e8512a", "5f0002": "5d0019", "f07376": "ff6d26", - "101010": "101010", - "4a4d53": "4a4d53", "f7acae": "fdc9a2", "fafafa": "f3dac4", "b3b3bb": "d6b7b1", "cbcfd8": "7b7897", "6d4d62": "e1d2d3", "928d96": "303443", - "a7484f": "9e111f", - "df7806": "df7806", - "ffae1a": "ffae1a" + "a7484f": "9e111f" }, "2": { "942429": "09523d", "d53a3e": "1c7b4f", "5f0002": "033431", "f07376": "3cbc5f", - "101010": "101010", "4a4d53": "6f4332", "f7acae": "79d38d", "fafafa": "f0decd", diff --git a/public/images/pokemon/variant/exp/6571.json b/public/images/pokemon/variant/exp/6571.json index 8ea944f8a12..7d713d3174b 100644 --- a/public/images/pokemon/variant/exp/6571.json +++ b/public/images/pokemon/variant/exp/6571.json @@ -5,14 +5,10 @@ "fcfcfc": "e1d2d2", "dd5857": "782d41", "e79594": "b44d63", - "101010": "101010", - "ffffff": "ffffff", - "918b96": "918b96", "c03a52": "4a1921", "b77076": "883955", "3f3f3f": "262231", "c0b6bd": "c3a5a8", - "d0d1d0": "d0d1d0", "928c91": "4a4759", "5f475c": "d7b4b6", "bfc1bf": "737185", @@ -24,14 +20,11 @@ "fcfcfc": "f0decd", "dd5857": "2e625a", "e79594": "4e867b", - "101010": "101010", - "ffffff": "ffffff", "918b96": "885f49", "c03a52": "143130", "b77076": "2e625a", "3f3f3f": "4b163b", "c0b6bd": "c6ab99", - "d0d1d0": "d0d1d0", "928c91": "885f49", "5f475c": "c2589c", "bfc1bf": "bc9072", diff --git a/public/images/pokemon/variant/exp/664.json b/public/images/pokemon/variant/exp/664.json index bd4164ca7db..932e2399bb9 100644 --- a/public/images/pokemon/variant/exp/664.json +++ b/public/images/pokemon/variant/exp/664.json @@ -2,29 +2,23 @@ "1": { "4d4d4d": "9d6260", "f8f8f8": "ffffff", - "101010": "101010", "b3b3b3": "e9c7c4", "363636": "4c2855", "747474": "a97dbb", "4e4e4e": "895a9f", "9d7247": "838b53", "d1bf6b": "a0c896", - "b2b2b2": "b2b2b2", - "f7f7f7": "f7f7f7", "855d31": "626649" }, "2": { "4d4d4d": "590015", "f8f8f8": "c83e4c", - "101010": "101010", "b3b3b3": "a70d37", "363636": "05312f", "747474": "73bdae", "4e4e4e": "377772", "9d7247": "dda476", "d1bf6b": "ffe0ba", - "b2b2b2": "b2b2b2", - "f7f7f7": "f7f7f7", "855d31": "bf8961" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/665.json b/public/images/pokemon/variant/exp/665.json index 6d828dadb5d..ac2d2e6c336 100644 --- a/public/images/pokemon/variant/exp/665.json +++ b/public/images/pokemon/variant/exp/665.json @@ -6,8 +6,6 @@ "4e4e4e": "895a9f", "747474": "a97dbb", "bfbfbf": "b294be", - "101010": "101010", - "fdfdfd": "fdfdfd", "8c8c8c": "895a9f", "4d4d4d": "9c615f", "f8f8f8": "ffffff", @@ -23,8 +21,6 @@ "4e4e4e": "377772", "747474": "73bdae", "bfbfbf": "a70d37", - "101010": "101010", - "fdfdfd": "fdfdfd", "8c8c8c": "590015", "4d4d4d": "590015", "f8f8f8": "c83e4c", diff --git a/public/images/pokemon/variant/exp/666-archipelago.json b/public/images/pokemon/variant/exp/666-archipelago.json index a305fd9dd81..0a1b2b1d198 100644 --- a/public/images/pokemon/variant/exp/666-archipelago.json +++ b/public/images/pokemon/variant/exp/666-archipelago.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "c8373c": "c8373c", - "d2bf96": "d2bf96", - "30c171": "30c171", "303030": "402746", - "c27351": "c27351", "ceab62": "d9edd4", "675220": "958c8a", "504a4a": "7f6991", "707068": "a97cbc", - "a2523b": "a2523b", - "c3c3c3": "ffeaff", - "811c1c": "811c1c", - "b28e67": "b28e67" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "824719", - "c8373c": "c8373c", - "d2bf96": "d2bf96", - "30c171": "30c171", "303030": "642703", - "c27351": "c27351", "ceab62": "a22414", "675220": "741300", "504a4a": "741300", "707068": "a22414", - "a2523b": "a2523b", - "c3c3c3": "e7caa5", - "811c1c": "811c1c", - "b28e67": "b28e67" + "c3c3c3": "e7caa5" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-continental.json b/public/images/pokemon/variant/exp/666-continental.json index 93ff5a5c5eb..44354f1180a 100644 --- a/public/images/pokemon/variant/exp/666-continental.json +++ b/public/images/pokemon/variant/exp/666-continental.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "d18257": "d18257", "303030": "402746", - "f9bd55": "f9bd55", - "f8f05e": "f8f05e", "ceab62": "d9edd4", - "d24c3e": "d24c3e", "675220": "958c8a", "504a4a": "7f6991", "707068": "a97cbc", - "aa5844": "aa5844", - "c3c3c3": "ffeaff", - "811c1c": "811c1c", - "e08528": "e08528" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "8f551e", - "d18257": "d18257", "303030": "6d2d0d", - "f9bd55": "f9bd55", - "f8f05e": "f8f05e", "ceab62": "e99b44", - "d24c3e": "d24c3e", "675220": "9c5c19", "504a4a": "9c5c19", "707068": "e99b44", - "aa5844": "aa5844", - "c3c3c3": "f8f27f", - "811c1c": "811c1c", - "e08528": "e08528" + "c3c3c3": "f8f27f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-elegant.json b/public/images/pokemon/variant/exp/666-elegant.json index 06de5005e5f..cbb3635ded6 100644 --- a/public/images/pokemon/variant/exp/666-elegant.json +++ b/public/images/pokemon/variant/exp/666-elegant.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "e6ddf8": "e6ddf8", - "f8de3f": "f8de3f", - "cf7ef3": "cf7ef3", "303030": "402746", - "875fb5": "875fb5", "ceab62": "d9edd4", - "de4040": "de4040", "675220": "958c8a", "504a4a": "7f6991", "707068": "a97cbc", - "56479d": "56479d", - "c3c3c3": "ffeaff", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "612776", - "e6ddf8": "e6ddf8", - "f8de3f": "f8de3f", - "cf7ef3": "cf7ef3", "303030": "351262", - "875fb5": "875fb5", "ceab62": "a73fab", - "de4040": "de4040", "675220": "7d1083", "504a4a": "7d1083", "707068": "a73fab", - "56479d": "56479d", - "c3c3c3": "f0ecff", - "811c1c": "811c1c" + "c3c3c3": "f0ecff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-fancy.json b/public/images/pokemon/variant/exp/666-fancy.json index 1f31ac6983d..964324d96e5 100644 --- a/public/images/pokemon/variant/exp/666-fancy.json +++ b/public/images/pokemon/variant/exp/666-fancy.json @@ -1,38 +1,22 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "811c1c": "811c1c", - "de4040": "de4040", - "5faa3e": "5faa3e", - "ceab62": "d9edd4", - "b6d26d": "b6d26d", - "e9e052": "e9e052", - "cf7ef3": "cf7ef3", - "c3c3c3": "ffeaff", - "f2d4e3": "f2d4e3", - "ead2e3": "ffeaff" - }, - "2": { - "101010": "101010", - "303030": "00771b", - "675220": "b9c05a", - "504a4a": "b9c05a", - "595959": "6f9f42", - "707068": "e3e982", - "811c1c": "811c1c", - "de4040": "de4040", - "5faa3e": "5faa3e", - "ceab62": "e3e982", - "b6d26d": "b6d26d", - "e9e052": "e9e052", - "cf7ef3": "cf7ef3", - "c3c3c3": "fcf1ff", - "f2d4e3": "f2d4e3", - "ead2e3": "fcf1ff" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4", + "c3c3c3": "ffeaff", + "ead2e3": "ffeaff" + }, + "2": { + "303030": "00771b", + "675220": "b9c05a", + "504a4a": "b9c05a", + "595959": "6f9f42", + "707068": "e3e982", + "ceab62": "e3e982", + "c3c3c3": "fcf1ff", + "ead2e3": "fcf1ff" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-garden.json b/public/images/pokemon/variant/exp/666-garden.json index 6493a613fd8..285d4a5beaf 100644 --- a/public/images/pokemon/variant/exp/666-garden.json +++ b/public/images/pokemon/variant/exp/666-garden.json @@ -1,34 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "398351": "398351", - "3dba96": "3dba96", "303030": "402746", "ceab62": "d9edd4", - "88d254": "88d254", "675220": "958c8a", - "de4040": "de4040", "504a4a": "7f6991", "707068": "a97cbc", - "3f919a": "3f919a", - "c3c3c3": "ffeaff", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "006b55", - "398351": "398351", - "3dba96": "3dba96", "303030": "044553", "ceab62": "227687", - "88d254": "88d254", "675220": "055160", - "de4040": "de4040", "504a4a": "055160", "707068": "227687", - "3f919a": "3f919a", - "c3c3c3": "72d0a3", - "811c1c": "811c1c" + "c3c3c3": "72d0a3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-high-plains.json b/public/images/pokemon/variant/exp/666-high-plains.json index f63bb4f81f3..a6600d1e6ac 100644 --- a/public/images/pokemon/variant/exp/666-high-plains.json +++ b/public/images/pokemon/variant/exp/666-high-plains.json @@ -1,38 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "f3a861": "f3a861", "303030": "402746", - "9a5a3b": "9a5a3b", - "e1764e": "e1764e", - "aa4343": "aa4343", "ceab62": "d9edd4", "675220": "958c8a", "504a4a": "7f6991", "707068": "a97cbc", - "c3c3c3": "ffeaff", - "811c1c": "811c1c", - "337543": "337543", - "e8c815": "e8c815", - "773d21": "773d21" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "a55422", - "f3a861": "f3a861", "303030": "8f1d19", - "9a5a3b": "9a5a3b", - "e1764e": "e1764e", - "aa4343": "aa4343", "ceab62": "f2975a", "675220": "c97034", "504a4a": "c97034", "707068": "f2975a", - "c3c3c3": "edc67c", - "811c1c": "811c1c", - "337543": "337543", - "e8c815": "e8c815", - "773d21": "773d21" + "c3c3c3": "edc67c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-icy-snow.json b/public/images/pokemon/variant/exp/666-icy-snow.json index d69d48d89e9..244c47d1863 100644 --- a/public/images/pokemon/variant/exp/666-icy-snow.json +++ b/public/images/pokemon/variant/exp/666-icy-snow.json @@ -1,34 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "f0f0f8": "f0f0f8", "303030": "402746", - "cfd9cf": "cfd9cf", - "c5c5da": "c5c5da", "675220": "958c8a", "ceab62": "d9edd4", "707068": "a97cbc", "504a4a": "7f6991", - "c3c3c3": "ffeaff", - "acacc2": "acacc2", - "95a1a1": "95a1a1", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "60646a", - "f0f0f8": "f0f0f8", "303030": "364051", - "cfd9cf": "cfd9cf", - "c5c5da": "c5c5da", "675220": "666b7d", "ceab62": "8c91a4", "707068": "8c91a4", "504a4a": "666b7d", - "c3c3c3": "fefeff", - "acacc2": "acacc2", - "95a1a1": "95a1a1", - "811c1c": "811c1c" + "c3c3c3": "fefeff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-jungle.json b/public/images/pokemon/variant/exp/666-jungle.json index 2961f2fa042..19c5f288eb3 100644 --- a/public/images/pokemon/variant/exp/666-jungle.json +++ b/public/images/pokemon/variant/exp/666-jungle.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "638c63": "638c63", - "7cc48b": "7cc48b", "303030": "402746", "ceab62": "d9edd4", "675220": "958c8a", "504a4a": "7f6991", "707068": "a97cbc", - "567456": "567456", - "c3c3c3": "ffeaff", - "811c1c": "811c1c", - "9a653e": "9a653e", - "c29566": "c29566", - "724e28": "724e28" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "285b3b", - "638c63": "638c63", - "7cc48b": "7cc48b", "303030": "20452e", "ceab62": "385c43", "675220": "153922", "504a4a": "153922", "707068": "385c43", - "567456": "567456", - "c3c3c3": "a9d9a0", - "811c1c": "811c1c", - "9a653e": "9a653e", - "c29566": "c29566", - "724e28": "724e28" + "c3c3c3": "a9d9a0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-marine.json b/public/images/pokemon/variant/exp/666-marine.json index 27efc6226d0..3e4f4254cd8 100644 --- a/public/images/pokemon/variant/exp/666-marine.json +++ b/public/images/pokemon/variant/exp/666-marine.json @@ -1,34 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "2f8dc9": "2f8dc9", - "5acdf1": "5acdf1", "303030": "402746", "ceab62": "d9edd4", "675220": "958c8a", - "f2f2f2": "f2f2f2", - "367cb9": "367cb9", "504a4a": "7f6991", "707068": "a97cbc", - "315382": "315382", - "c3c3c3": "ffeaff", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "2a5894", - "2f8dc9": "2f8dc9", - "5acdf1": "5acdf1", "303030": "16244f", "ceab62": "3070af", "675220": "264c85", - "f2f2f2": "f2f2f2", - "367cb9": "367cb9", "504a4a": "264c85", "707068": "3070af", - "315382": "315382", - "c3c3c3": "f2f2f2", - "811c1c": "811c1c" + "c3c3c3": "f2f2f2" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-meadow.json b/public/images/pokemon/variant/exp/666-meadow.json index c766325427b..c65040d31d9 100644 --- a/public/images/pokemon/variant/exp/666-meadow.json +++ b/public/images/pokemon/variant/exp/666-meadow.json @@ -1,36 +1,20 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "811c1c": "811c1c", - "b4295a": "b4295a", - "da6b7e": "da6b7e", - "ceab62": "d9edd4", - "e66fad": "e66fad", - "2d9b9b": "2d9b9b", - "f3a0ca": "f3a0ca", - "c3c3c3": "ffeaff", - "f2f2f2": "f2f2f2" - }, - "2": { - "101010": "101010", - "303030": "770921", - "675220": "a2275e", - "504a4a": "a2275e", - "595959": "9e3941", - "707068": "ce5283", - "811c1c": "811c1c", - "b4295a": "b4295a", - "da6b7e": "da6b7e", - "ceab62": "ce5283", - "e66fad": "e66fad", - "2d9b9b": "2d9b9b", - "f3a0ca": "f3a0ca", - "c3c3c3": "f4c2ec", - "f2f2f2": "f2f2f2" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4", + "c3c3c3": "ffeaff" + }, + "2": { + "303030": "770921", + "675220": "a2275e", + "504a4a": "a2275e", + "595959": "9e3941", + "707068": "ce5283", + "ceab62": "ce5283", + "c3c3c3": "f4c2ec" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-modern.json b/public/images/pokemon/variant/exp/666-modern.json index 2cbd9aad858..cc873702571 100644 --- a/public/images/pokemon/variant/exp/666-modern.json +++ b/public/images/pokemon/variant/exp/666-modern.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", "c3c3c3": "ffeaff", - "3b6cbb": "3b6cbb", - "f44f4f": "f44f4f", "303030": "402746", "ceab62": "d9edd4", "675220": "958c8a", - "f8f05e": "f8f05e", "504a4a": "7f6991", - "707068": "a97cbc", - "b83c3c": "b83c3c", - "cfc5d9": "cfc5d9", - "811c1c": "811c1c", - "405793": "405793" + "707068": "a97cbc" }, "2": { - "101010": "101010", "595959": "830012", "c3c3c3": "ffeae8", - "3b6cbb": "3b6cbb", - "f44f4f": "f44f4f", "303030": "4e0000", "ceab62": "ad2640", "675220": "801521", - "f8f05e": "f8f05e", "504a4a": "801521", - "707068": "ad2640", - "b83c3c": "b83c3c", - "cfc5d9": "cfc5d9", - "811c1c": "811c1c", - "405793": "405793" + "707068": "ad2640" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-monsoon.json b/public/images/pokemon/variant/exp/666-monsoon.json index 915d471b2b1..5a127a43bbe 100644 --- a/public/images/pokemon/variant/exp/666-monsoon.json +++ b/public/images/pokemon/variant/exp/666-monsoon.json @@ -1,33 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "807676": "807676", - "ceab62": "d9edd4", - "5676de": "5676de", - "4eccd6": "4eccd6", - "989898": "989898", - "c3c3c3": "c3c3c3", - "f0f0f8": "f0f0f8" - }, - "2": { - "101010": "101010", - "303030": "3d3231", - "675220": "2c3593", - "504a4a": "2c3593", - "595959": "4f4645", - "707068": "5857bc", - "807676": "807676", - "ceab62": "5857bc", - "5676de": "5676de", - "4eccd6": "4eccd6", - "989898": "989898", - "92f4f4": "92f4f4", - "c3c3c3": "b8f9f9", - "f0f0f8": "f0f0f8" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "3d3231", + "675220": "2c3593", + "504a4a": "2c3593", + "595959": "4f4645", + "707068": "5857bc", + "ceab62": "5857bc", + "c3c3c3": "b8f9f9" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-ocean.json b/public/images/pokemon/variant/exp/666-ocean.json index c468bbcbf1e..4f7cd822f97 100644 --- a/public/images/pokemon/variant/exp/666-ocean.json +++ b/public/images/pokemon/variant/exp/666-ocean.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "e1384d": "e1384d", - "f3a861": "f3a861", - "fcf372": "fcf372", "303030": "402746", "ceab62": "d9edd4", "675220": "958c8a", "504a4a": "7f6991", "707068": "a97cbc", - "f0ce44": "f0ce44", - "c3c3c3": "ffeaff", - "367cb9": "367cb9", - "74bbe9": "74bbe9", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "e99a26", - "e1384d": "e1384d", - "f3a861": "f3a861", - "fcf372": "fcf372", "303030": "b54908", "ceab62": "ea8742", "675220": "bc601c", "504a4a": "bc601c", "707068": "ea8742", - "f0ce44": "f0ce44", - "c3c3c3": "f3c86b", - "367cb9": "367cb9", - "74bbe9": "74bbe9", - "811c1c": "811c1c" + "c3c3c3": "f3c86b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-poke-ball.json b/public/images/pokemon/variant/exp/666-poke-ball.json index fe6b42f6ef3..048cb75ecfd 100644 --- a/public/images/pokemon/variant/exp/666-poke-ball.json +++ b/public/images/pokemon/variant/exp/666-poke-ball.json @@ -1,33 +1,23 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "b72c2c": "b72c2c", - "dc4b4b": "dc4b4b", "303030": "402746", "675220": "958c8a", "ceab62": "d9edd4", - "e97e7e": "e97e7e", - "971d1d": "971d1d", - "f8f8f8": "f8f8f8", "707068": "a97cbc", "504a4a": "7f6991", "c3c3c3": "ffeaff", - "811c1c": "811c1c", - "a9a99e": "a9a99e", "2c2b2b": "402746" }, "2": { - "101010": "101010", "f8f8f8": "00006d", "303030": "ae001a", "2c2b2b": "660000", - "504a4a": "a70038", + "504a4a": "a70038", "595959": "df0036", "c3c3c3": "f0a6bf", "707068": "d5375a", "a9a99e": "000050", - "811c1c": "811c1c", "971d1d": "040046", "b72c2c": "00005e", "dc4b4b": "19007d", diff --git a/public/images/pokemon/variant/exp/666-polar.json b/public/images/pokemon/variant/exp/666-polar.json index 625bfe0f292..0667b5de09c 100644 --- a/public/images/pokemon/variant/exp/666-polar.json +++ b/public/images/pokemon/variant/exp/666-polar.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "4d6cc1": "4d6cc1", "303030": "402746", - "f0f0f8": "f0f0f8", - "3b4b8a": "3b4b8a", "ceab62": "d9edd4", - "bfbfbf": "bfbfbf", "675220": "958c8a", "504a4a": "7f6991", "707068": "a97cbc", - "c3c3c3": "ffeaff", - "2d2d61": "2d2d61", - "811c1c": "811c1c", - "6aa2dc": "6aa2dc" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "2f3887", - "4d6cc1": "4d6cc1", "303030": "191b54", - "f0f0f8": "f0f0f8", - "3b4b8a": "3b4b8a", "ceab62": "5f85c1", - "bfbfbf": "bfbfbf", "675220": "366098", "504a4a": "366098", "707068": "5f85c1", - "c3c3c3": "ffffff", - "2d2d61": "2d2d61", - "811c1c": "811c1c", - "6aa2dc": "6aa2dc" + "c3c3c3": "ffffff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-river.json b/public/images/pokemon/variant/exp/666-river.json index c7e5e288d05..5ba0084df9d 100644 --- a/public/images/pokemon/variant/exp/666-river.json +++ b/public/images/pokemon/variant/exp/666-river.json @@ -1,40 +1,18 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "4a412c": "4a412c", - "675220": "958c8a", - "634d20": "634d20", - "1d726a": "1d726a", - "504a4a": "7f6991", - "595959": "724b7a", - "625841": "625841", - "707068": "a97cbc", - "bc813f": "bc813f", - "9c9143": "9c9143", - "ceab62": "ceab62", - "279ec2": "279ec2", - "59c9d3": "59c9d3", - "c3c3c3": "c3c3c3", - "d2a862": "d9edd4" - }, - "2": { - "101010": "101010", - "303030": "7b2800", - "4a412c": "4a412c", - "675220": "ae7f41", - "634d20": "634d20", - "1d726a": "1d726a", - "504a4a": "ae7f41", - "595959": "8a5702", - "625841": "625841", - "707068": "d9a666", - "bc813f": "bc813f", - "9c9143": "9c9143", - "ceab62": "ceab62", - "279ec2": "279ec2", - "59c9d3": "59c9d3", - "c3c3c3": "e3c384", - "d2a862": "d2a862" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "d2a862": "d9edd4" + }, + "2": { + "303030": "7b2800", + "675220": "ae7f41", + "504a4a": "ae7f41", + "595959": "8a5702", + "707068": "d9a666", + "c3c3c3": "e3c384" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-sandstorm.json b/public/images/pokemon/variant/exp/666-sandstorm.json index 3a50d436a19..5f16f97ed58 100644 --- a/public/images/pokemon/variant/exp/666-sandstorm.json +++ b/public/images/pokemon/variant/exp/666-sandstorm.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "f1d69e": "f1d69e", "303030": "402746", - "625843": "625843", - "ba8d68": "ba8d68", - "9b9148": "9b9148", "ceab62": "d9edd4", "675220": "958c8a", "504a4a": "7f6991", "707068": "a97cbc", - "d9b674": "d9b674", - "c3c3c3": "ffeaff", - "811c1c": "811c1c", - "72604d": "72604d" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "88583e", - "f1d69e": "f1d69e", "303030": "443123", - "625843": "625843", - "ba8d68": "ba8d68", - "9b9148": "9b9148", "ceab62": "c6975f", "675220": "9c703b", "504a4a": "9c703b", "707068": "c6975f", - "d9b674": "d9b674", - "c3c3c3": "ece1a9", - "811c1c": "811c1c", - "72604d": "72604d" + "c3c3c3": "ece1a9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-savanna.json b/public/images/pokemon/variant/exp/666-savanna.json index c42595ae8c2..12dddd4ec8d 100644 --- a/public/images/pokemon/variant/exp/666-savanna.json +++ b/public/images/pokemon/variant/exp/666-savanna.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "61a0f5": "61a0f5", - "fffd77": "fffd77", "303030": "402746", - "55d3d9": "55d3d9", "ceab62": "d9edd4", "675220": "958c8a", - "dcc433": "dcc433", "504a4a": "7f6991", "707068": "a97cbc", - "3b67ac": "3b67ac", - "6cc6c6": "6cc6c6", - "c3c3c3": "ffeaff", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "4168bb", - "61a0f5": "61a0f5", - "fffd77": "fffd77", "303030": "183576", - "55d3d9": "55d3d9", "ceab62": "4faab3", "675220": "1d828b", - "dcc433": "dcc433", "504a4a": "1d828b", "707068": "4faab3", - "3b67ac": "3b67ac", - "6cc6c6": "6cc6c6", - "c3c3c3": "81e7e1", - "811c1c": "811c1c" + "c3c3c3": "81e7e1" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-sun.json b/public/images/pokemon/variant/exp/666-sun.json index 584b6231a7f..d4297619bb3 100644 --- a/public/images/pokemon/variant/exp/666-sun.json +++ b/public/images/pokemon/variant/exp/666-sun.json @@ -1,36 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "f1a26a": "f1a26a", "303030": "402746", - "f47491": "f47491", - "fcf372": "fcf372", - "f0ce44": "f0ce44", "ceab62": "d9edd4", "675220": "958c8a", "504a4a": "7f6991", "707068": "a97cbc", - "c94971": "c94971", - "e18248": "e18248", - "c3c3c3": "ffeaff", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "750500", - "f1a26a": "f1a26a", "303030": "640000", - "f47491": "f47491", - "fcf372": "fcf372", - "f0ce44": "f0ce44", "ceab62": "b83b74", "675220": "8c1850", "504a4a": "8c1850", "707068": "b83b74", - "c94971": "c94971", - "e18248": "e18248", - "c3c3c3": "fee3e7", - "811c1c": "811c1c" + "c3c3c3": "fee3e7" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/666-tundra.json b/public/images/pokemon/variant/exp/666-tundra.json index a2cd2299c3a..f64ca7b164b 100644 --- a/public/images/pokemon/variant/exp/666-tundra.json +++ b/public/images/pokemon/variant/exp/666-tundra.json @@ -1,34 +1,20 @@ { "1": { - "101010": "101010", "595959": "724b7a", - "a3def1": "a3def1", "303030": "402746", - "f0f0f8": "f0f0f8", - "74bbe9": "74bbe9", "ceab62": "d9edd4", - "d0d0d0": "d0d0d0", "675220": "958c8a", "504a4a": "7f6991", "707068": "a97cbc", - "c3c3c3": "ffeaff", - "539ad9": "539ad9", - "811c1c": "811c1c" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "225b72", - "a3def1": "a3def1", "303030": "003d69", - "f0f0f8": "f0f0f8", - "74bbe9": "74bbe9", "ceab62": "659dd0", - "d0d0d0": "d0d0d0", "675220": "3a76a7", "504a4a": "3a76a7", "707068": "659dd0", - "c3c3c3": "cbfbfb", - "539ad9": "539ad9", - "811c1c": "811c1c" + "c3c3c3": "cbfbfb" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/669-blue.json b/public/images/pokemon/variant/exp/669-blue.json index 7b79007d9e8..59f7d036e0c 100644 --- a/public/images/pokemon/variant/exp/669-blue.json +++ b/public/images/pokemon/variant/exp/669-blue.json @@ -1,12 +1,10 @@ { "1": { "706050": "635c55", - "f8f7f9": "f8f7f9", "7f6f1f": "1b0755", "cfbfaf": "d5cabf", "cfae4f": "350d80", "faef69": "422cc6", - "101010": "101010", "df4f4f": "dc6295", "ef6f6f": "ef6fbe", "1d563a": "95315a", @@ -26,7 +24,6 @@ "cfbfaf": "a5c3ea", "cfae4f": "c4c6bf", "faef69": "fdfffb", - "101010": "101010", "df4f4f": "048080", "ef6f6f": "5fa9dd", "1d563a": "193b94", diff --git a/public/images/pokemon/variant/exp/669-white.json b/public/images/pokemon/variant/exp/669-white.json index 43bea313995..a5e4ba2c84d 100644 --- a/public/images/pokemon/variant/exp/669-white.json +++ b/public/images/pokemon/variant/exp/669-white.json @@ -1,12 +1,10 @@ { "1": { "706050": "635c55", - "f8f7f9": "f8f7f9", "7f6f1f": "110732", "cfbfaf": "d5cabf", "cfae4f": "302b40", "faef69": "4c495c", - "101010": "101010", "df4f4f": "dc6295", "ef6f6f": "ef6fbe", "1d563a": "95315a", @@ -25,7 +23,6 @@ "cfbfaf": "d4dcd5", "cfae4f": "c4c6bf", "faef69": "fdfffb", - "101010": "101010", "df4f4f": "273232", "ef6f6f": "7e878d", "1d563a": "272f2d", diff --git a/public/images/pokemon/variant/exp/669-yellow.json b/public/images/pokemon/variant/exp/669-yellow.json index 232013c6f88..31f1a7761a6 100644 --- a/public/images/pokemon/variant/exp/669-yellow.json +++ b/public/images/pokemon/variant/exp/669-yellow.json @@ -1,12 +1,10 @@ { "1": { "706050": "635c55", - "f8f7f9": "f8f7f9", "7f6f1f": "034020", "cfbfaf": "d5cabf", "cfae4f": "0a6323", "faef69": "1a8e16", - "101010": "101010", "df4f4f": "dc6295", "ef6f6f": "ef6fbe", "1d563a": "95315a", @@ -26,7 +24,6 @@ "cfbfaf": "ead295", "cfae4f": "c4c6bf", "faef69": "fdfffb", - "101010": "101010", "df4f4f": "bf8f10", "ef6f6f": "d7a34e", "1d563a": "945919", diff --git a/public/images/pokemon/variant/exp/670-blue.json b/public/images/pokemon/variant/exp/670-blue.json index 58db57808f3..52532dedd99 100644 --- a/public/images/pokemon/variant/exp/670-blue.json +++ b/public/images/pokemon/variant/exp/670-blue.json @@ -5,7 +5,6 @@ "857402": "240e63", "3c9bcb": "3342b8", "f0eb57": "402bbf", - "231e1e": "231e1e", "dcd405": "33168e", "10765d": "094740", "86b24d": "1d8057", @@ -13,17 +12,10 @@ "107359": "d9567f", "52ab5d": "e493a1", "0f5436": "ae2d63", - "879496": "879496", - "f5f7fa": "f5f7fa", - "cecee6": "cecee6", "74660f": "110732", "c0ba4b": "33168e", "b3ae28": "33168e", - "475148": "475148", - "201d1d": "73141e", - "9b93c4": "9b93c4", - "9e2d39": "9e2d39", - "dc494d": "dc494d" + "201d1d": "73141e" }, "2": { "286786": "215510", @@ -31,7 +23,6 @@ "857402": "b1b1b1", "3c9bcb": "739f1f", "f0eb57": "f8f8f4", - "231e1e": "231e1e", "dcd405": "dcdad8", "10765d": "121c0d", "86b24d": "3c403a", @@ -45,10 +36,7 @@ "74660f": "b1b1b1", "c0ba4b": "dcdad8", "b3ae28": "dcdad8", - "475148": "475148", "201d1d": "0f5741", - "9b93c4": "6195d9", - "9e2d39": "9e2d39", - "dc494d": "dc494d" + "9b93c4": "6195d9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/670-orange.json b/public/images/pokemon/variant/exp/670-orange.json index d48c0b4e5d6..88befdd6af3 100644 --- a/public/images/pokemon/variant/exp/670-orange.json +++ b/public/images/pokemon/variant/exp/670-orange.json @@ -5,7 +5,6 @@ "857402": "5c0d0d", "c6763c": "aa571d", "f0eb57": "a3382c", - "231e1e": "231e1e", "dcd405": "871723", "10765d": "094740", "86b24d": "1d8057", @@ -13,17 +12,10 @@ "107359": "d9567f", "52ab5d": "e493a1", "0f5436": "ae2d63", - "879496": "879496", - "f5f7fa": "f5f7fa", - "cecee6": "cecee6", "74660f": "5c0d0d", "c0ba4b": "871723", "b3ae28": "871723", - "475148": "475148", - "211d1d": "73141e", - "9b93c4": "9b93c4", - "9e2d39": "9e2d39", - "dc494d": "dc494d" + "211d1d": "73141e" }, "2": { "a24b1e": "215510", @@ -31,7 +23,6 @@ "857402": "b1b1b1", "c6763c": "739f1f", "f0eb57": "f8f8f4", - "231e1e": "231e1e", "dcd405": "dcdad8", "10765d": "121c0d", "86b24d": "3c403a", @@ -45,10 +36,7 @@ "74660f": "b1b1b1", "c0ba4b": "dcdad8", "b3ae28": "dcdad8", - "475148": "475148", "211d1d": "0f5741", - "9b93c4": "d78876", - "9e2d39": "9e2d39", - "dc494d": "dc494d" + "9b93c4": "d78876" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/670-red.json b/public/images/pokemon/variant/exp/670-red.json index 6ce51d9440a..d80b5620fbd 100644 --- a/public/images/pokemon/variant/exp/670-red.json +++ b/public/images/pokemon/variant/exp/670-red.json @@ -5,7 +5,6 @@ "857402": "3e0547", "972935": "a31f35", "f0eb57": "8e1653", - "231e1e": "231e1e", "dcd405": "6a094f", "10765d": "094740", "86b24d": "1d8057", @@ -13,17 +12,10 @@ "107359": "d9567f", "52ab5d": "e493a1", "0f5436": "ae2d63", - "879496": "879496", - "f5f7fa": "f5f7fa", - "cecee6": "cecee6", "74660f": "3e0547", "c0ba4b": "6a094f", "b3ae28": "6a094f", - "475148": "475148", - "211d1d": "73141e", - "9b93c4": "9b93c4", - "9e2d39": "9e2d39", - "dc494d": "dc494d" + "211d1d": "73141e" }, "2": { "6d1b24": "215510", @@ -31,7 +23,6 @@ "857402": "b1b1b1", "972935": "739f1f", "f0eb57": "f8f8f4", - "231e1e": "231e1e", "dcd405": "dcdad8", "10765d": "121c0d", "86b24d": "3c403a", @@ -45,10 +36,7 @@ "74660f": "b1b1b1", "c0ba4b": "dcdad8", "b3ae28": "dcdad8", - "475148": "475148", "211d1d": "0f5741", - "9b93c4": "cc6283", - "9e2d39": "9e2d39", - "dc494d": "dc494d" + "9b93c4": "cc6283" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/670-white.json b/public/images/pokemon/variant/exp/670-white.json index 8b2f572a523..f963a586166 100644 --- a/public/images/pokemon/variant/exp/670-white.json +++ b/public/images/pokemon/variant/exp/670-white.json @@ -5,7 +5,6 @@ "857402": "110732", "d8d8d8": "4c4b55", "f0eb57": "3b374e", - "231e1e": "231e1e", "dcd405": "2c2347", "10765d": "094740", "86b24d": "1d8057", @@ -13,17 +12,10 @@ "107359": "d9567f", "52ab5d": "e493a1", "0f5436": "ae2d63", - "879496": "879496", - "f5f7fa": "f5f7fa", - "cecee6": "cecee6", "74660f": "110732", "c0ba4b": "2c2347", "b3ae28": "2c2347", - "475148": "475148", - "211d1d": "73141e", - "9b93c4": "9b93c4", - "9e2d39": "9e2d39", - "dc494d": "dc494d" + "211d1d": "73141e" }, "2": { "868686": "215510", @@ -31,7 +23,6 @@ "857402": "b1b1b1", "d8d8d8": "739f1f", "f0eb57": "f8f8f4", - "231e1e": "231e1e", "dcd405": "dcdad8", "10765d": "121c0d", "86b24d": "3c403a", @@ -39,16 +30,11 @@ "107359": "505756", "52ab5d": "6d716f", "0f5436": "1c2d32", - "879496": "879496", - "f5f7fa": "f5f7fa", "cecee6": "e3e3eb", "74660f": "b1b1b1", "c0ba4b": "dcdad8", "b3ae28": "dcdad8", - "475148": "475148", "211d1d": "0f5741", - "9b93c4": "bfbfc9", - "9e2d39": "9e2d39", - "dc494d": "dc494d" + "9b93c4": "bfbfc9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/670-yellow.json b/public/images/pokemon/variant/exp/670-yellow.json index ac7dc7ebe6c..24b67d62070 100644 --- a/public/images/pokemon/variant/exp/670-yellow.json +++ b/public/images/pokemon/variant/exp/670-yellow.json @@ -5,7 +5,6 @@ "857402": "06471f", "d8cb40": "6f950a", "f0eb57": "1a8021", - "231e1e": "231e1e", "dcd405": "0b5c19", "10765d": "094740", "86b24d": "1d8057", @@ -13,17 +12,10 @@ "107359": "d9567f", "52ab5d": "e493a1", "0f5436": "ae2d63", - "879496": "879496", - "f5f7fa": "f5f7fa", - "cecee6": "cecee6", "74660f": "06471f", "c0ba4b": "0b5c19", "b3ae28": "0b5c19", - "475148": "475148", - "211d1d": "73141e", - "9b93c4": "9b93c4", - "9e2d39": "9e2d39", - "dc494d": "dc494d" + "211d1d": "73141e" }, "2": { "857c28": "215510", @@ -31,7 +23,6 @@ "857402": "b1b1b1", "d8cb40": "739f1f", "f0eb57": "f8f8f4", - "231e1e": "231e1e", "dcd405": "dcdad8", "10765d": "121c0d", "86b24d": "3c403a", @@ -45,10 +36,7 @@ "74660f": "b1b1b1", "c0ba4b": "dcdad8", "b3ae28": "dcdad8", - "475148": "475148", "211d1d": "0f5741", - "9b93c4": "c6a46d", - "9e2d39": "9e2d39", - "dc494d": "dc494d" + "9b93c4": "c6a46d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/6705.json b/public/images/pokemon/variant/exp/6705.json index 3d204b151ce..a248a3df404 100644 --- a/public/images/pokemon/variant/exp/6705.json +++ b/public/images/pokemon/variant/exp/6705.json @@ -6,15 +6,13 @@ "4d454d": "8a2166", "367456": "197497", "50ab89": "3aa8c4", - "101010": "101010", "60606c": "1f1233", "c5cce0": "513981", "949aab": "301848", "aeb5c6": "442967", "b8a1e5": "c7a1e5", "e3e8f4": "cfd6f7", - "665980": "8b69c3", - "8f7db3": "8f7db3" + "665980": "8b69c3" }, "2": { "807380": "2b736f", @@ -23,7 +21,6 @@ "4d454d": "194f51", "367456": "a34205", "50ab89": "d27e26", - "101010": "101010", "60606c": "042329", "c5cce0": "176463", "949aab": "073338", diff --git a/public/images/pokemon/variant/exp/671-blue.json b/public/images/pokemon/variant/exp/671-blue.json index 1da5b13b301..c335dd2b5ed 100644 --- a/public/images/pokemon/variant/exp/671-blue.json +++ b/public/images/pokemon/variant/exp/671-blue.json @@ -1,7 +1,6 @@ { "1": { "4c7385": "200e5c", - "141214": "141214", "7fc9c9": "291371", "abf2f2": "3827a3", "dcfafa": "69c9e3", @@ -12,16 +11,11 @@ "dba86b": "ff3e3e", "3ca68c": "ff91a4", "2c826c": "dc5073", - "5c5a5c": "5c5a5c", "fcfafc": "f8f8f8", - "bcbebc": "bcbebc", - "141614": "141614", "144234": "951f43", "2c7664": "c6306e", - "242624": "242624", "34866c": "dc4c5b", "2c866c": "d53b6a", - "34967c": "ea5574", - "1c1e1c": "1c1e1c" + "34967c": "ea5574" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/671-orange.json b/public/images/pokemon/variant/exp/671-orange.json index b164a67d444..7cc7d14fe6b 100644 --- a/public/images/pokemon/variant/exp/671-orange.json +++ b/public/images/pokemon/variant/exp/671-orange.json @@ -1,7 +1,6 @@ { "1": { "785a44": "631818", - "141214": "141214", "d2ab84": "631818", "fbd5ad": "a34b2c", "f9eadb": "ffbc77", @@ -12,16 +11,11 @@ "c077a0": "fff35a", "3ca68c": "ff91a4", "2c826c": "dc5073", - "5c5a5c": "5c5a5c", "fcfafc": "f8f8f8", - "bcbebc": "bcbebc", - "141614": "141614", "144234": "951f43", "2c7664": "c6306e", - "242624": "242624", "34866c": "dc4c5b", "2c866c": "d53b6a", - "34967c": "ea5574", - "1c1e1c": "1c1e1c" + "34967c": "ea5574" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/671-red.json b/public/images/pokemon/variant/exp/671-red.json index b45ae4f5a2a..9a7d9c36100 100644 --- a/public/images/pokemon/variant/exp/671-red.json +++ b/public/images/pokemon/variant/exp/671-red.json @@ -1,7 +1,6 @@ { "1": { "643e5c": "390614", - "141214": "141214", "a4628c": "4e0c38", "dc96c4": "8e1a55", "dc9ac4": "8e1a55", @@ -14,16 +13,11 @@ "fce24c": "ff7c39", "3ca68c": "ff91a4", "2c826c": "dc5073", - "5c5a5c": "5c5a5c", "fcfafc": "f8f8f8", - "bcbebc": "bcbebc", - "141614": "141614", "144234": "951f43", "2c7664": "c6306e", - "242624": "242624", "34866c": "dc4c5b", "2c866c": "d53b6a", - "34967c": "ea5574", - "1c1e1c": "1c1e1c" + "34967c": "ea5574" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/671-white.json b/public/images/pokemon/variant/exp/671-white.json index 5e46ac97606..fe867762b79 100644 --- a/public/images/pokemon/variant/exp/671-white.json +++ b/public/images/pokemon/variant/exp/671-white.json @@ -1,7 +1,6 @@ { "1": { "858585": "232323", - "141214": "141214", "b6b3b4": "0f0d15", "f3f3f3": "353340", "f9bdc8": "c2c1c6", @@ -11,16 +10,11 @@ "66dede": "ffffff", "3ca68c": "ff91a4", "2c826c": "dc5073", - "5c5a5c": "5c5a5c", "fcfafc": "f8f8f8", - "bcbebc": "bcbebc", - "141614": "141614", "144234": "951f43", "2c7664": "c6306e", - "242624": "242624", "34866c": "dc4c5b", "2c866c": "d53b6a", - "34967c": "ea5574", - "1c1e1c": "1c1e1c" + "34967c": "ea5574" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/671-yellow.json b/public/images/pokemon/variant/exp/671-yellow.json index fae27d650ae..2523db33de1 100644 --- a/public/images/pokemon/variant/exp/671-yellow.json +++ b/public/images/pokemon/variant/exp/671-yellow.json @@ -1,7 +1,6 @@ { "1": { "75714f": "084e40", - "141214": "141214", "d2b98b": "137849", "ffeac0": "22b14a", "fbcfa3": "ffe593", @@ -12,21 +11,15 @@ "a6bd3d": "5f30ff", "3ca68c": "ff91a4", "2c826c": "dc5073", - "5c5a5c": "5c5a5c", "fcfafc": "f8f8f8", - "bcbebc": "bcbebc", - "141614": "141614", "144234": "951f43", "2c7664": "c6306e", - "242624": "242624", "34866c": "dc4c5b", "2c866c": "d53b6a", - "34967c": "ea5574", - "1c1e1c": "1c1e1c" + "34967c": "ea5574" }, "2": { "75714f": "0a320e", - "141214": "141214", "d2b98b": "28392c", "ffeac0": "4d4e46", "fbcfa3": "dfe3e1", @@ -40,13 +33,10 @@ "5c5a5c": "4e3e23", "fcfafc": "fffde0", "bcbebc": "d4c18f", - "141614": "141614", "144234": "951f43", "2c7664": "b18018", - "242624": "242624", "34866c": "dc4c5b", "2c866c": "d53b6a", - "34967c": "ea5574", - "1c1e1c": "1c1e1c" + "34967c": "ea5574" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/6713.json b/public/images/pokemon/variant/exp/6713.json index 662fbf6b5b1..044b2e45f3a 100644 --- a/public/images/pokemon/variant/exp/6713.json +++ b/public/images/pokemon/variant/exp/6713.json @@ -6,7 +6,6 @@ "6b5442": "732334", "335980": "994255", "fbffff": "ffebf2", - "101010": "101010", "492d25": "101010", "553e33": "4c131f", "927863": "994255", @@ -23,7 +22,6 @@ "6b5442": "2c7a75", "335980": "824628", "fbffff": "fff2ad", - "101010": "101010", "492d25": "00403d", "553e33": "006761", "927863": "5ba6a1", diff --git a/public/images/pokemon/variant/exp/672.json b/public/images/pokemon/variant/exp/672.json index b13a8cd34c0..c4e6dd98661 100644 --- a/public/images/pokemon/variant/exp/672.json +++ b/public/images/pokemon/variant/exp/672.json @@ -1,7 +1,6 @@ { "1": { "3d3128": "642509", - "000000": "000000", "67615b": "9e2c3d", "615140": "89431b", "7e6d5a": "b3743e", @@ -11,14 +10,12 @@ "0e5d58": "8c6859", "0d8374": "d2af94", "09a77c": "f8f0e2", - "cabfbb": "cabfbb", "c16a3f": "321512", "a8905c": "4b2525", "c6b379": "552d30" }, "2": { "3d3128": "161526", - "000000": "000000", "67615b": "2d2b40", "615140": "4c7a68", "7e6d5a": "72b692", @@ -28,7 +25,6 @@ "0e5d58": "363e6c", "0d8374": "6885b6", "09a77c": "96d5e3", - "cabfbb": "cabfbb", "c16a3f": "612c6b", "a8905c": "854d87", "c6b379": "9f5f9b" diff --git a/public/images/pokemon/variant/exp/673.json b/public/images/pokemon/variant/exp/673.json index d70da2c45e2..f9c2207744d 100644 --- a/public/images/pokemon/variant/exp/673.json +++ b/public/images/pokemon/variant/exp/673.json @@ -3,7 +3,6 @@ "3d3128": "641028", "67615b": "9e2c3d", "554538": "781329", - "000000": "000000", "0e5d58": "8c6859", "0d835a": "d2af94", "74593a": "61240a", @@ -12,7 +11,6 @@ "cabfbb": "e3a378", "a8905c": "9e4e21", "c16a3f": "552d30", - "0d8374": "0d8374", "c6b379": "ce8648", "ae492a": "321512" }, @@ -20,7 +18,6 @@ "3d3128": "121123", "67615b": "201e33", "554538": "201e33", - "000000": "000000", "0e5d58": "36466c", "0d835a": "6893b6", "74593a": "513a6b", @@ -29,7 +26,6 @@ "cabfbb": "d4b3d7", "a8905c": "74a0a5", "c16a3f": "9f5f9b", - "0d8374": "0d8374", "c6b379": "c3e1cf", "ae492a": "612c6b" } diff --git a/public/images/pokemon/variant/exp/677.json b/public/images/pokemon/variant/exp/677.json index b532dd61c77..ee852b93210 100644 --- a/public/images/pokemon/variant/exp/677.json +++ b/public/images/pokemon/variant/exp/677.json @@ -6,10 +6,8 @@ "8a8a99": "943b5d", "f8f8f8": "f1f0e4", "cda4cd": "43adaf", - "ffffff": "ffffff", "3c6172": "30237a", - "995a99": "29767f", - "070707": "070707" + "995a99": "29767f" }, "2": { "5a5a65": "243e41", @@ -18,9 +16,7 @@ "8a8a99": "426b62", "f8f8f8": "67415e", "cda4cd": "ff657d", - "ffffff": "ffffff", "3c6172": "69004e", - "995a99": "d13955", - "070707": "070707" + "995a99": "d13955" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/678-female.json b/public/images/pokemon/variant/exp/678-female.json index cf5423c1547..df4f7b5c038 100644 --- a/public/images/pokemon/variant/exp/678-female.json +++ b/public/images/pokemon/variant/exp/678-female.json @@ -6,9 +6,7 @@ "17294d": "47182e", "365fb3": "a5346b", "264480": "76264d", - "101010": "101010", "ffe54f": "3fbae2", - "ffffff": "ffffff", "d92121": "415493", "c9ad20": "4b86bd" }, @@ -19,9 +17,7 @@ "17294d": "1d3f33", "365fb3": "7bd38d", "264480": "47946c", - "101010": "101010", "ffe54f": "ff85ad", - "ffffff": "ffffff", "d92121": "9d0067", "c9ad20": "f2557b" } diff --git a/public/images/pokemon/variant/exp/678.json b/public/images/pokemon/variant/exp/678.json index 972a970a59c..d113058455a 100644 --- a/public/images/pokemon/variant/exp/678.json +++ b/public/images/pokemon/variant/exp/678.json @@ -4,23 +4,18 @@ "f8f8f8": "f8f5cd", "bfbfbf": "d5c49f", "17294d": "47182e", - "101010": "101010", "365fb3": "a5346b", "264480": "76264d", - "aaf2f2": "aaf2f2", - "179958": "415493", - "ffffff": "ffffff" + "179958": "415493" }, "2": { "737373": "3a1633", "f8f8f8": "855577", "bfbfbf": "613d5a", "17294d": "1d3f33", - "101010": "101010", "365fb3": "7bd38d", "264480": "47946c", "aaf2f2": "ff867c", - "179958": "9a0066", - "ffffff": "ffffff" + "179958": "9a0066" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/691.json b/public/images/pokemon/variant/exp/691.json index 71b08e6aea7..8c9aa3d7b71 100644 --- a/public/images/pokemon/variant/exp/691.json +++ b/public/images/pokemon/variant/exp/691.json @@ -2,7 +2,6 @@ "1": { "4d4d2e": "31246d", "b3b36b": "403c94", - "101010": "101010", "732230": "310511", "f24965": "5a152f", "b3364a": "470b1e", diff --git a/public/images/pokemon/variant/exp/696.json b/public/images/pokemon/variant/exp/696.json index 677f5d98578..364de98fb15 100644 --- a/public/images/pokemon/variant/exp/696.json +++ b/public/images/pokemon/variant/exp/696.json @@ -1,51 +1,33 @@ { "1": { -"734517": "5e0b0b", -"ffa64c": "a50d0d", -"4a322c": "023425", -"404040": "4c3216", -"101010": "101010", -"65483a": "0b4c29", -"966858": "1b6430", -"f8f8f8": "dfdea7", -"8c8c8c": "ad8c63", -"bfbfbf": "cbbe8c", -"000000": "000000", -"b73b6b": "4c3216", -"ff949e": "c98c68", -"b3b9b9": "cbbe8c", -"3f3d3d": "4c3216" -}, -"2": { -"734517": "395cb7", -"ffa64c": "d2e9ff", -"4a322c": "3e1f18", -"404040": "250860", -"101010": "101010", -"65483a": "644943", -"966858": "83726e", -"f8f8f8": "6e46a7", -"8c8c8c": "411684", -"bfbfbf": "593097", -"000000": "decaff", -"b73b6b": "395cb7", -"ff949e": "79c8d3", -"b3b9b9": "79c8d3", -"3f3d3d": "395cb7" -} -} - - - - - - - - - - - - - - - + "734517": "5e0b0b", + "ffa64c": "a50d0d", + "4a322c": "023425", + "404040": "4c3216", + "65483a": "0b4c29", + "966858": "1b6430", + "f8f8f8": "dfdea7", + "8c8c8c": "ad8c63", + "bfbfbf": "cbbe8c", + "b73b6b": "4c3216", + "ff949e": "c98c68", + "b3b9b9": "cbbe8c", + "3f3d3d": "4c3216" + }, + "2": { + "734517": "395cb7", + "ffa64c": "d2e9ff", + "4a322c": "3e1f18", + "404040": "250860", + "65483a": "644943", + "966858": "83726e", + "f8f8f8": "6e46a7", + "8c8c8c": "411684", + "bfbfbf": "593097", + "000000": "decaff", + "b73b6b": "395cb7", + "ff949e": "79c8d3", + "b3b9b9": "79c8d3", + "3f3d3d": "395cb7" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/697.json b/public/images/pokemon/variant/exp/697.json index b8d305022f5..dcb3a348dd9 100644 --- a/public/images/pokemon/variant/exp/697.json +++ b/public/images/pokemon/variant/exp/697.json @@ -1,45 +1,38 @@ { -"1": { -"080808": "080808", -"32252c": "3e1e17", -"50131e": "0b241e", -"722533": "153626", -"54434c": "4c3216", -"964b1c": "5e0b0b", -"963e4e": "285234", -"bf7545": "971c1c", -"f19d5a": "b52424", -"9f9d98": "ad8c63", -"cccccc": "cbbe8c", -"fafafa": "dfdea7", -"cac2c2": "cbbe8c", -"f7eeee": "dfdea7", -"53414b": "4c3216", -"30222a": "3e1e17", -"53454d": "4c3216" -}, -"2": { -"080808": "080808", -"32252c": "0d0124", -"50131e": "573b36", -"722533": "83726e", -"54434c": "170c25", -"964b1c": "9d5390", -"963e4e": "ab9b97", -"bf7545": "ce7ecc", -"f19d5a": "f4dbf6", -"9f9d98": "26173b", -"cccccc": "33214f", -"fafafa": "4b2e64", -"cac2c2": "ce7ecc", -"f7eeee": "f4dbf6", -"53414b": "dea5dd", -"30222a": "ce7ecc", -"53454d": "f4dbf6" -} -} - - - - - + "1": { + "32252c": "3e1e17", + "50131e": "0b241e", + "722533": "153626", + "54434c": "4c3216", + "964b1c": "5e0b0b", + "963e4e": "285234", + "bf7545": "971c1c", + "f19d5a": "b52424", + "9f9d98": "ad8c63", + "cccccc": "cbbe8c", + "fafafa": "dfdea7", + "cac2c2": "cbbe8c", + "f7eeee": "dfdea7", + "53414b": "4c3216", + "30222a": "3e1e17", + "53454d": "4c3216" + }, + "2": { + "32252c": "0d0124", + "50131e": "573b36", + "722533": "83726e", + "54434c": "170c25", + "964b1c": "9d5390", + "963e4e": "ab9b97", + "bf7545": "ce7ecc", + "f19d5a": "f4dbf6", + "9f9d98": "26173b", + "cccccc": "33214f", + "fafafa": "4b2e64", + "cac2c2": "ce7ecc", + "f7eeee": "f4dbf6", + "53414b": "dea5dd", + "30222a": "ce7ecc", + "53454d": "f4dbf6" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/699.json b/public/images/pokemon/variant/exp/699.json index 107352097cd..fe543a48ddf 100644 --- a/public/images/pokemon/variant/exp/699.json +++ b/public/images/pokemon/variant/exp/699.json @@ -9,10 +9,8 @@ "657dac": "c44f5d", "81a0dc": "e5756b", "4e568b": "a03c58", - "101010": "101010", "ffffff": "ffeac0", "4cc3ff": "c2d5ff", - "f8f8f8": "f8f8f8", "3689b3": "8487e1", "3d8eb6": "12545e", "53c5ff": "1c7376", @@ -30,10 +28,8 @@ "657dac": "2f4978", "81a0dc": "3f648b", "4e568b": "243369", - "101010": "101010", "ffffff": "bae8ff", "4cc3ff": "ffea82", - "f8f8f8": "f8f8f8", "3689b3": "efbe63", "3d8eb6": "852d6b", "53c5ff": "ab467e", diff --git a/public/images/pokemon/variant/exp/700.json b/public/images/pokemon/variant/exp/700.json index 1189d463f2b..2a8ecba3b8f 100644 --- a/public/images/pokemon/variant/exp/700.json +++ b/public/images/pokemon/variant/exp/700.json @@ -1,32 +1,28 @@ { -"1": { -"101010": "101010", -"8a2843": "452f89", -"235a99": "a63071", -"895c72": "5c6889", -"d85a7a": "996cd2", -"528fcc": "d648b7", -"a88d8c": "8c8fa8", -"f18a78": "b52d27", -"fa8caa": "c7a6ee", -"64c8f3": "e974db", -"d9c3c3": "c3c5d9", -"fff5f5": "f7f5ff", -"65798c": "65798c" -}, -"2": { -"101010": "101010", -"8a2843": "0e6134", -"235a99": "900d1b", -"895c72": "7f5c89", -"d85a7a": "5dae7d", -"528fcc": "dd3d4f", -"a88d8c": "7f5c89", -"f18a78": "d14ea4", -"fa8caa": "7dec9d", -"64c8f3": "ff9a68", -"d9c3c3": "d9c3d6", -"fff5f5": "fff5fc", -"65798c": "65798c" -} + "1": { + "8a2843": "452f89", + "235a99": "a63071", + "895c72": "5c6889", + "d85a7a": "996cd2", + "528fcc": "d648b7", + "a88d8c": "8c8fa8", + "f18a78": "b52d27", + "fa8caa": "c7a6ee", + "64c8f3": "e974db", + "d9c3c3": "c3c5d9", + "fff5f5": "f7f5ff" + }, + "2": { + "8a2843": "0e6134", + "235a99": "900d1b", + "895c72": "7f5c89", + "d85a7a": "5dae7d", + "528fcc": "dd3d4f", + "a88d8c": "7f5c89", + "f18a78": "d14ea4", + "fa8caa": "7dec9d", + "64c8f3": "ff9a68", + "d9c3c3": "d9c3d6", + "fff5f5": "fff5fc" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/702.json b/public/images/pokemon/variant/exp/702.json index 12feb29a0fd..adea0fb21eb 100644 --- a/public/images/pokemon/variant/exp/702.json +++ b/public/images/pokemon/variant/exp/702.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "262626": "2a3b5e", "4d4d4d": "6789b3", "bfbf86": "a3d1cc", @@ -10,12 +9,10 @@ "f2c261": "ffd3b6", "bf994c": "e49f84", "1d1d1d": "1a1c45", - "f8f8f8": "f8f8f8", "464646": "424b8f", "d97d21": "7cd6a1" }, "2": { - "101010": "101010", "262626": "072d38", "4d4d4d": "197870", "bfbf86": "aaa8d6", @@ -25,7 +22,6 @@ "f2c261": "5f3662", "bf994c": "432249", "1d1d1d": "02172d", - "f8f8f8": "f8f8f8", "464646": "17646c", "d97d21": "d2fff1" } diff --git a/public/images/pokemon/variant/exp/704.json b/public/images/pokemon/variant/exp/704.json index e292d6fb41f..48a96fa7ff9 100644 --- a/public/images/pokemon/variant/exp/704.json +++ b/public/images/pokemon/variant/exp/704.json @@ -4,7 +4,6 @@ "f2daf2": "fbb3d2", "bfacbf": "e56ca6", "4d454d": "8a2166", - "101010": "101010", "4d993d": "197497", "66cc52": "3aa8c4", "b8a1e5": "c7a1e5", @@ -18,7 +17,6 @@ "f2daf2": "92d8c8", "bfacbf": "63a99e", "4d454d": "134557", - "101010": "101010", "4d993d": "a34205", "66cc52": "d27e26", "b8a1e5": "4a9699", diff --git a/public/images/pokemon/variant/exp/705.json b/public/images/pokemon/variant/exp/705.json index bf9aa91eb4b..037ff41c585 100644 --- a/public/images/pokemon/variant/exp/705.json +++ b/public/images/pokemon/variant/exp/705.json @@ -6,7 +6,6 @@ "4d454d": "8a2166", "307922": "aa6a00", "46b030": "ffd047", - "101010": "101010", "98bd51": "197497", "d2e79e": "3aa8c4", "647543": "0c5474", @@ -22,7 +21,6 @@ "4d454d": "194f51", "307922": "007d61", "46b030": "49ffbf", - "101010": "101010", "98bd51": "a34205", "d2e79e": "d27e26", "647543": "842401", diff --git a/public/images/pokemon/variant/exp/706.json b/public/images/pokemon/variant/exp/706.json index 41077f9d96b..1dd4602c927 100644 --- a/public/images/pokemon/variant/exp/706.json +++ b/public/images/pokemon/variant/exp/706.json @@ -5,8 +5,6 @@ "bfacbf": "da75a5", "f2daf2": "f1a4c5", "998a99": "b24c86", - "f8f8f8": "f8f8f8", - "101010": "101010", "4d993d": "197497", "336629": "0c5474", "66cc52": "3aa8c4", @@ -21,8 +19,6 @@ "bfacbf": "5db6a9", "f2daf2": "9cead8", "998a99": "2b736f", - "f8f8f8": "f8f8f8", - "101010": "101010", "4d993d": "a34205", "336629": "842401", "66cc52": "d27e26", diff --git a/public/images/pokemon/variant/exp/709.json b/public/images/pokemon/variant/exp/709.json index f249558388a..58b319ead4f 100644 --- a/public/images/pokemon/variant/exp/709.json +++ b/public/images/pokemon/variant/exp/709.json @@ -5,7 +5,6 @@ "12602e": "361f1b", "23b856": "907f76", "128b3b": "4d362e", - "101010": "101010", "915e45": "36384f", "292a40": "a14743", "f92d45": "5996d2", @@ -17,7 +16,6 @@ "12602e": "761d52", "23b856": "da7ea8", "128b3b": "a94079", - "101010": "101010", "915e45": "56323a", "292a40": "9c92a4", "f92d45": "e18933", diff --git a/public/images/pokemon/variant/exp/710.json b/public/images/pokemon/variant/exp/710.json index d63ab9ca323..ef2ef3c5bcd 100644 --- a/public/images/pokemon/variant/exp/710.json +++ b/public/images/pokemon/variant/exp/710.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "61532d": "72a966", "3d301a": "366432", "261d0e": "213a22", @@ -14,7 +13,6 @@ "fff0a5": "fafafa" }, "2": { - "101010": "101010", "61532d": "425947", "3d301a": "2a4031", "261d0e": "262626", diff --git a/public/images/pokemon/variant/exp/711.json b/public/images/pokemon/variant/exp/711.json index df3799ce802..0a34aa48c70 100644 --- a/public/images/pokemon/variant/exp/711.json +++ b/public/images/pokemon/variant/exp/711.json @@ -4,7 +4,6 @@ "61532d": "593a59", "3d301a": "311835", "bf634c": "262626", - "101010": "101010", "f49670": "404040", "894331": "171717", "e09935": "e9f25b", @@ -15,11 +14,9 @@ "fff0a5": "f1ffa7" }, "1": { - "261d0e": "261d0e", "61532d": "434348", "3d301a": "262626", "bf634c": "325b34", - "101010": "101010", "f49670": "4d7d4b", "894331": "153f18", "e09935": "ffa858", @@ -34,7 +31,6 @@ "61532d": "e56146", "3d301a": "9a2d25", "bf634c": "213c28", - "101010": "101010", "f49670": "36593d", "894331": "102316", "e09935": "f1c353", diff --git a/public/images/pokemon/variant/exp/712.json b/public/images/pokemon/variant/exp/712.json index 369ba54cd23..9e83305dab5 100644 --- a/public/images/pokemon/variant/exp/712.json +++ b/public/images/pokemon/variant/exp/712.json @@ -5,14 +5,10 @@ "58647b": "bf566d", "719aa9": "d97389", "b3eaf8": "ffbfda", - "101010": "101010", "705c99": "732334", "f2ba49": "9dcc3e", "967acc": "994255", - "ffd98c": "cbe696", - "bfbfbf": "bfbfbf", - "737373": "737373", - "f8f8f8": "f8f8f8" + "ffd98c": "cbe696" }, "2": { "a5c4d2": "e69e2b", @@ -20,7 +16,6 @@ "58647b": "a8632a", "719aa9": "cc7b1e", "b3eaf8": "fcc95c", - "101010": "101010", "705c99": "006761", "f2ba49": "6cb3ae", "967acc": "2c7a75", diff --git a/public/images/pokemon/variant/exp/713.json b/public/images/pokemon/variant/exp/713.json index ca45360ecea..af98bddcc6d 100644 --- a/public/images/pokemon/variant/exp/713.json +++ b/public/images/pokemon/variant/exp/713.json @@ -7,12 +7,8 @@ "77b8d9": "d97389", "335980": "994255", "f2ffff": "ffebf2", - "101010": "101010", - "737373": "737373", - "bfbfbf": "bfbfbf", "efab34": "9dcc3e", - "ffe46a": "cbe696", - "f8f8f8": "f8f8f8" + "ffe46a": "cbe696" }, "2": { "608cba": "a8632a", @@ -22,8 +18,6 @@ "77b8d9": "cc7b1e", "335980": "824628", "f2ffff": "fff2ad", - "101010": "101010", - "737373": "737373", "bfbfbf": "6cb3ae", "efab34": "6cb3ae", "ffe46a": "b9f2ee", diff --git a/public/images/pokemon/variant/exp/715.json b/public/images/pokemon/variant/exp/715.json index 0e97862f10b..b56ffa5ece4 100644 --- a/public/images/pokemon/variant/exp/715.json +++ b/public/images/pokemon/variant/exp/715.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "404040": "5f32b1", "6a3f73": "0f103c", "287366": "731338", @@ -14,25 +13,22 @@ "737373": "563d8f", "f8f8f8": "d6c8f1", "e52e2e": "903b78", - "000000": "000000", - "ffe14c": "ff8a58" + "ffe14c": "ff8a58" }, "2": { - "101010": "101010", - "404040": "c29484", - "6a3f73": "3b0c18", - "287366": "832714", - "3aa694": "b8552c", - "8e5499": "7c2928", - "bfbfbf": "43191e", - "595959": "ecd3c3", - "801a1a": "7c0907", - "4cd9c1": "dd834c", - "bd70cc": "5b1922", - "737373": "1d060c", - "f8f8f8": "5a2a2b", - "e52e2e": "ad3419", - "000000": "000000", - "ffe14c": "49ffcd" + "404040": "c29484", + "6a3f73": "3b0c18", + "287366": "832714", + "3aa694": "b8552c", + "8e5499": "7c2928", + "bfbfbf": "43191e", + "595959": "ecd3c3", + "801a1a": "7c0907", + "4cd9c1": "dd834c", + "bd70cc": "5b1922", + "737373": "1d060c", + "f8f8f8": "5a2a2b", + "e52e2e": "ad3419", + "ffe14c": "49ffcd" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/716-active.json b/public/images/pokemon/variant/exp/716-active.json index 494bdcbd642..62c4c8887d2 100644 --- a/public/images/pokemon/variant/exp/716-active.json +++ b/public/images/pokemon/variant/exp/716-active.json @@ -9,10 +9,8 @@ "3d5c99": "1e3824", "243659": "132b1b", "5c8ae5": "324c37", - "000000": "000000", "2b2b2e": "518554", - "404040": "7ca376", - "3c3233": "3c3233" + "404040": "7ca376" }, "2": { "807659": "210f14", @@ -24,9 +22,7 @@ "3d5c99": "643071", "243659": "37134c", "5c8ae5": "884e9f", - "000000": "000000", "2b2b2e": "d284b6", - "404040": "faaed8", - "3c3233": "3c3233" + "404040": "faaed8" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/716-neutral.json b/public/images/pokemon/variant/exp/716-neutral.json index 7226d4f0a81..a1716e947c9 100644 --- a/public/images/pokemon/variant/exp/716-neutral.json +++ b/public/images/pokemon/variant/exp/716-neutral.json @@ -3,7 +3,6 @@ "364566": "603f3c", "6eaed1": "ac8781", "a7d6e8": "bfa19a", - "000000": "000000", "3d5c99": "1e3824", "243659": "132b1b", "5c8ae5": "324c37", @@ -14,7 +13,6 @@ "364566": "230d1e", "6eaed1": "42283b", "a7d6e8": "613e56", - "000000": "000000", "3d5c99": "643071", "243659": "37134c", "5c8ae5": "884e9f", diff --git a/public/images/pokemon/variant/exp/728.json b/public/images/pokemon/variant/exp/728.json index a9c7155ec91..899ae80c996 100644 --- a/public/images/pokemon/variant/exp/728.json +++ b/public/images/pokemon/variant/exp/728.json @@ -1,10 +1,8 @@ { "1": { - "101010": "101010", "1e3a66": "363d2f", "243a66": "00473d", "733f50": "a62c20", - "404040": "404040", "b3627d": "e54c41", "2c4f8c": "5a6154", "314f8c": "006355", @@ -13,7 +11,6 @@ "5f9ba6": "b56e76", "639ba6": "858d7d", "6c90d9": "14af82", - "808080": "808080", "bfbfbf": "c2beb4", "9edae5": "f7c1c5", "a1dae5": "92b599", @@ -21,11 +18,9 @@ "fefefe": "fff6e2" }, "2": { - "101010": "101010", "1e3a66": "773f46", "243a66": "54041b", "733f50": "620a33", - "404040": "404040", "b3627d": "a7225c", "2c4f8c": "a45f67", "314f8c": "770f29", @@ -34,7 +29,6 @@ "5f9ba6": "408c62", "639ba6": "b88389", "6c90d9": "be294a", - "808080": "808080", "bfbfbf": "bfb4b9", "9edae5": "91e6a2", "a1dae5": "f7c1c5", diff --git a/public/images/pokemon/variant/exp/729.json b/public/images/pokemon/variant/exp/729.json index 7b196fda526..abfaaf0fc7e 100644 --- a/public/images/pokemon/variant/exp/729.json +++ b/public/images/pokemon/variant/exp/729.json @@ -1,7 +1,5 @@ { "1": { - "101010": "101010", - "2d2e31": "2d2e31", "733f50": "bb402f", "476d72": "be665d", "b3627d": "fb6051", @@ -10,7 +8,6 @@ "639ba6": "b56e76", "2d8ec4": "009a88", "1eb9ee": "0ccfa2", - "808080": "808080", "8dafaf": "ff989e", "bfbfbf": "c2beb4", "bad8d8": "ffbd98", @@ -22,8 +19,6 @@ "6f3f50": "bb402f" }, "2": { - "101010": "101010", - "2d2e31": "2d2e31", "733f50": "620a33", "476d72": "793f5e", "b3627d": "a7225c", @@ -32,7 +27,6 @@ "639ba6": "408c62", "2d8ec4": "952c3f", "1eb9ee": "c6496f", - "808080": "808080", "8dafaf": "b681a6", "bfbfbf": "bfb4b9", "bad8d8": "deabce", diff --git a/public/images/pokemon/variant/exp/730.json b/public/images/pokemon/variant/exp/730.json index 5c8deeb52b2..812f0d1db30 100644 --- a/public/images/pokemon/variant/exp/730.json +++ b/public/images/pokemon/variant/exp/730.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "843843": "a62c20", "8d3f4a": "a62c20", "c46074": "e54c41", @@ -21,11 +20,9 @@ "c0bdc1": "beaac0", "aac7e6": "ea7c5b", "f8f8f8": "fff2d4", - "faf8f8": "f1e8f1", - "fef8f8": "fef8f8" + "faf8f8": "f1e8f1" }, "2": { - "101010": "101010", "843843": "5c2141", "8d3f4a": "1d1638", "c46074": "c17b97", @@ -46,7 +43,6 @@ "c0bdc1": "c0b4a5", "aac7e6": "e9a5c0", "f8f8f8": "f5edee", - "faf8f8": "f5f3e3", - "fef8f8": "fef8f8" + "faf8f8": "f5f3e3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/734.json b/public/images/pokemon/variant/exp/734.json index f9e52b2d090..128fd4ce9c6 100644 --- a/public/images/pokemon/variant/exp/734.json +++ b/public/images/pokemon/variant/exp/734.json @@ -3,32 +3,20 @@ "9c5b50": "2a3f52", "753933": "03192d", "6b4f27": "523a44", - "070707": "070707", "ba836d": "35576b", "f0cd84": "c1aaaa", "c19462": "907e82", "9b7357": "523a44", - "ea8c96": "c1715c", - "322f2c": "322f2c", - "f5f5f5": "f5f5f5", - "686d77": "686d77", - "bbbdc1": "bbbdc1", - "a7aac2": "a7aac2" + "ea8c96": "c1715c" }, "2": { "9c5b50": "786a66", "753933": "26201f", "6b4f27": "241b1b", - "070707": "070707", "ba836d": "a69c98", "f0cd84": "4d4242", "c19462": "362e2e", "9b7357": "241b1b", - "ea8c96": "a38b89", - "322f2c": "322f2c", - "f5f5f5": "f5f5f5", - "686d77": "686d77", - "bbbdc1": "bbbdc1", - "a7aac2": "a7aac2" + "ea8c96": "a38b89" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/735.json b/public/images/pokemon/variant/exp/735.json index 3949cbe4157..18ebd802f82 100644 --- a/public/images/pokemon/variant/exp/735.json +++ b/public/images/pokemon/variant/exp/735.json @@ -5,13 +5,9 @@ "8d473d": "2a3252", "602c24": "03102d", "af754e": "354c6b", - "101010": "101010", "b6973a": "7a6a6d", "393633": "5f3d1c", - "f8f8f8": "f8f8f8", - "787885": "787885", "ea6f91": "c1715c", - "a3a3ab": "a3a3ab", "2d2b28": "5a3215" }, "2": { @@ -20,10 +16,7 @@ "8d473d": "90827e", "602c24": "524b4b", "af754e": "ada6a4", - "101010": "101010", "b6973a": "362e2e", - "393633": "393633", - "f8f8f8": "f8f8f8", "787885": "6e6e7b", "ea6f91": "846a68", "a3a3ab": "989898", diff --git a/public/images/pokemon/variant/exp/748.json b/public/images/pokemon/variant/exp/748.json index 280c676293a..5ffc26903ab 100644 --- a/public/images/pokemon/variant/exp/748.json +++ b/public/images/pokemon/variant/exp/748.json @@ -1,7 +1,6 @@ { "1": { "943732": "490a3c", - "101010": "101010", "f28c4f": "a21f90", "e25025": "91138c", "6f97c4": "be583d", @@ -9,7 +8,6 @@ "93d1d7": "df7b52", "711a6a": "81463e", "d76fa5": "edd5ca", - "171539": "171539", "3a3f6d": "462952", "525898": "6c3776", "b7429a": "d29784", @@ -18,7 +16,6 @@ }, "2": { "943732": "c30e49", - "101010": "101010", "f28c4f": "ff3f5a", "e25025": "e12350", "6f97c4": "359d5d", diff --git a/public/images/pokemon/variant/exp/752.json b/public/images/pokemon/variant/exp/752.json index c6c3009cd1e..8f7ea16ae4d 100644 --- a/public/images/pokemon/variant/exp/752.json +++ b/public/images/pokemon/variant/exp/752.json @@ -2,11 +2,9 @@ "1": { "859ba7": "7c3b51", "d3edfb": "ffc8d1", - "ffffff": "ffffff", "c2d3dc": "d187a0", "c3d600": "673252", "707b0a": "3a112f", - "000000": "000000", "a8ba00": "4e1f42", "423e35": "395677", "817b6e": "5ea3b8", @@ -20,15 +18,12 @@ "2": { "859ba7": "55506a", "d3edfb": "dce7ee", - "ffffff": "ffffff", "c2d3dc": "a7a2bc", "c3d600": "72add9", "707b0a": "263756", - "000000": "000000", "a8ba00": "4980ac", "423e35": "75291a", "817b6e": "bc521d", - "1e414f": "1e414f", "424a56": "f5cf52", "62c4e5": "3b5373", "1a1c1e": "834723", diff --git a/public/images/pokemon/variant/exp/753.json b/public/images/pokemon/variant/exp/753.json index 78eaa04fb78..d6ffc97c2da 100644 --- a/public/images/pokemon/variant/exp/753.json +++ b/public/images/pokemon/variant/exp/753.json @@ -3,7 +3,6 @@ "234028": "2e1643", "468050": "3e2253", "5ba668": "4e2c62", - "101010": "101010", "315945": "0e2616", "69bf94": "27452c", "549977": "1b3822", @@ -19,7 +18,6 @@ "234028": "812255", "468050": "ad3a87", "5ba668": "ce54b0", - "101010": "101010", "315945": "441342", "69bf94": "6e3472", "549977": "5a215a", diff --git a/public/images/pokemon/variant/exp/754.json b/public/images/pokemon/variant/exp/754.json index c8fcf792f01..07ba33a140a 100644 --- a/public/images/pokemon/variant/exp/754.json +++ b/public/images/pokemon/variant/exp/754.json @@ -6,7 +6,6 @@ "315945": "122a1a", "d98d9a": "c95623", "69bf94": "314e36", - "101010": "101010", "cc5266": "ac351f", "404040": "3c1717", "bfbfbf": "c9d6b7", @@ -20,7 +19,6 @@ "315945": "c940c4", "d98d9a": "2944a2", "69bf94": "f881ff", - "101010": "101010", "cc5266": "343381", "404040": "0c0a3f", "bfbfbf": "feccff", diff --git a/public/images/pokemon/variant/exp/755.json b/public/images/pokemon/variant/exp/755.json index 2d3ff38fb4b..8d6a093c4bb 100644 --- a/public/images/pokemon/variant/exp/755.json +++ b/public/images/pokemon/variant/exp/755.json @@ -5,7 +5,6 @@ "fffbcf": "e4c3d0", "f1b6c8": "e76d5b", "e07c8d": "d64742", - "101010": "101010", "fdff97": "e4c3d0", "b591c4": "803a5c", "9d70b1": "5c2445", @@ -24,7 +23,6 @@ "fffbcf": "d5f9f2", "f1b6c8": "b0ffe1", "e07c8d": "7ae7c9", - "101010": "101010", "fdff97": "d5f9f2", "b591c4": "3a4b75", "9d70b1": "2c336b", diff --git a/public/images/pokemon/variant/exp/756.json b/public/images/pokemon/variant/exp/756.json index d5e8d1f15f1..210aac2a716 100644 --- a/public/images/pokemon/variant/exp/756.json +++ b/public/images/pokemon/variant/exp/756.json @@ -7,7 +7,6 @@ "b9ff5a": "e5aff3", "dcff44": "e5aff3", "c9e161": "e5aff3", - "101010": "101010", "a0d15e": "866eaf", "9867ad": "d64742", "764b67": "451233", @@ -26,7 +25,6 @@ "b9ff5a": "dffffa", "dcff44": "dffffa", "c9e161": "dffffa", - "101010": "101010", "a0d15e": "b0ffe1", "9867ad": "2c336b", "764b67": "0d7a66", diff --git a/public/images/pokemon/variant/exp/761.json b/public/images/pokemon/variant/exp/761.json index 7256c2078c0..0e954ce225b 100644 --- a/public/images/pokemon/variant/exp/761.json +++ b/public/images/pokemon/variant/exp/761.json @@ -3,27 +3,21 @@ "476629": "215e59", "6b993d": "398793", "8fcc52": "70d2e1", - "101010": "101010", "80334d": "251936", "b3476b": "7e5cdb", "e55c8a": "9f86e4", - "f8f8f8": "f8f8f8", "ffe14c": "7e5cdb", - "e38c9c": "e38c8c", - "737373": "737373", - "bfbfbf": "bfbfbf" + "e38c9c": "e38c8c" }, "2": { "476629": "3e0a11", "6b993d": "5a0a16", "8fcc52": "86232e", - "101010": "101010", "80334d": "101010", "b3476b": "254536", "e55c8a": "2c574a", "f8f8f8": "e4c59e", "ffe14c": "16664a", - "e38c9c": "e38c9c", "737373": "72585f", "bfbfbf": "af8260" } diff --git a/public/images/pokemon/variant/exp/762.json b/public/images/pokemon/variant/exp/762.json index 4a0854f4126..1cfd5d9a113 100644 --- a/public/images/pokemon/variant/exp/762.json +++ b/public/images/pokemon/variant/exp/762.json @@ -2,13 +2,9 @@ "1": { "446328": "215e59", "96c853": "70d2e1", - "0f0f0f": "0f0f0f", "659344": "398793", "ebe130": "e66556", - "c7b8c4": "c7b8c4", - "fcfcfc": "fcfcfc", "ce466b": "a787ff", - "72585f": "72585f", "962354": "45366e", "f26284": "7e5cdb", "6a1533": "251936", @@ -17,7 +13,6 @@ "2": { "446328": "3e0a11", "96c853": "86232e", - "0f0f0f": "0f0f0f", "659344": "5a0a16", "ebe130": "5c0505", "c7b8c4": "af8260", diff --git a/public/images/pokemon/variant/exp/763.json b/public/images/pokemon/variant/exp/763.json index 4f1aa828fb2..6eb153b362b 100644 --- a/public/images/pokemon/variant/exp/763.json +++ b/public/images/pokemon/variant/exp/763.json @@ -6,11 +6,7 @@ "fbf21d": "e66556", "455433": "215e59", "95b76d": "398793", - "000000": "000000", "d0fa9f": "70d2e1", - "b7979f": "b7979f", - "ffffff": "ffffff", - "615053": "615053", "d2677e": "7e5cdb", "ffa3b6": "9f86e4", "baa90e": "af3e31", @@ -23,7 +19,6 @@ "fbf21d": "420b0b", "455433": "5c0a1a", "95b76d": "5a0a16", - "000000": "000000", "d0fa9f": "86232e", "b7979f": "af8260", "ffffff": "e4c59e", diff --git a/public/images/pokemon/variant/exp/767.json b/public/images/pokemon/variant/exp/767.json index 46f860b073e..84114ed68e0 100644 --- a/public/images/pokemon/variant/exp/767.json +++ b/public/images/pokemon/variant/exp/767.json @@ -2,27 +2,23 @@ "1": { "46334f": "844008", "a65e97": "e8a92a", - "080808": "080808", "713e70": "c86910", "3f5252": "202733", "bed3cf": "6e6d6d", "5c7877": "293141", "867b73": "ecd42a", "8a9f9e": "494950", - "ede650": "7798b8", - "f7f7f7": "f7f7f7" + "ede650": "7798b8" }, "2": { "46334f": "091b52", "a65e97": "2849ac", - "080808": "080808", "713e70": "1c306d", "3f5252": "3d105f", "bed3cf": "844caf", "5c7877": "5722a6", "867b73": "8cdded", "8a9f9e": "452772", - "ede650": "d3f4fb", - "f7f7f7": "f7f7f7" + "ede650": "d3f4fb" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/768.json b/public/images/pokemon/variant/exp/768.json index ad275949bd2..f7fffd7e822 100644 --- a/public/images/pokemon/variant/exp/768.json +++ b/public/images/pokemon/variant/exp/768.json @@ -2,7 +2,6 @@ "1": { "546b57": "202733", "c8e1cd": "6e6d6d", - "101010": "101010", "81b68e": "494950", "498f6c": "ecd42a", "842886": "c85710", @@ -17,16 +16,12 @@ "2": { "546b57": "091b52", "c8e1cd": "2849ac", - "101010": "101010", "81b68e": "1c306d", "498f6c": "8cdded", "842886": "5722a6", "cc5fcf": "8b51e1", "9a6982": "452772", - "5c635e": "5c635e", "7a4952": "3d105f", - "bd95a8": "844caf", - "2f3330": "2f3330", - "404843": "404843" + "bd95a8": "844caf" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/771.json b/public/images/pokemon/variant/exp/771.json index 31a9623cb09..83f5517a66d 100644 --- a/public/images/pokemon/variant/exp/771.json +++ b/public/images/pokemon/variant/exp/771.json @@ -2,7 +2,6 @@ "1": { "73223d": "570a00", "d94174": "de884b", - "101010": "101010", "992e52": "c95340", "211e1e": "1a1a1a", "737373": "b5284a", @@ -10,7 +9,6 @@ "262626": "4a1a30", "f8f8f8": "dec890", "bfbfbf": "e07f47", - "595959": "bd5e49", - "1a1a1a": "1a1a1a" + "595959": "bd5e49" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/772.json b/public/images/pokemon/variant/exp/772.json index 45c81692bb6..92ba6ef6a63 100644 --- a/public/images/pokemon/variant/exp/772.json +++ b/public/images/pokemon/variant/exp/772.json @@ -3,7 +3,6 @@ "454f55": "232843", "92a6a9": "889db1", "6b777e": "526085", - "080808": "080808", "642515": "7e4f36", "c55e3a": "eed8a1", "934031": "c8976c", @@ -25,7 +24,6 @@ "454f55": "18182a", "92a6a9": "65657c", "6b777e": "3b3b51", - "080808": "080808", "642515": "444961", "c55e3a": "c1cfd8", "934031": "7f94b1", diff --git a/public/images/pokemon/variant/exp/773.json b/public/images/pokemon/variant/exp/773.json index b64796b9bf9..15805bf76ec 100644 --- a/public/images/pokemon/variant/exp/773.json +++ b/public/images/pokemon/variant/exp/773.json @@ -9,7 +9,6 @@ "e3e6ec": "bdd1e5", "3f3b50": "1e172a", "aba7bc": "493d55", - "080808": "080808", "e64f5e": "f1944a", "483c39": "3a2d53", "79615e": "504a75", @@ -17,7 +16,6 @@ "e9eaf8": "e7ebed", "0073bf": "7a4949", "5399df": "b59489", - "fffef5": "fffef5", "251845": "753c32", "9618e0": "dc9c4d", "125d4b": "ce7f3f", @@ -31,9 +29,7 @@ "565969": "0f0f1b", "bcbbc5": "242433", "e3e6ec": "444455", - "3f3b50": "3f3b50", "aba7bc": "dbd8e8", - "080808": "080808", "e64f5e": "98ce58", "483c39": "778894", "79615e": "d6d4d4", @@ -41,7 +37,6 @@ "e9eaf8": "eef4f8", "0073bf": "6a6c75", "5399df": "92949e", - "fffef5": "fffef5", "251845": "425735", "9618e0": "ade265", "125d4b": "686981", diff --git a/public/images/pokemon/variant/exp/776.json b/public/images/pokemon/variant/exp/776.json index 22bf97cd7a0..a17fdc05434 100644 --- a/public/images/pokemon/variant/exp/776.json +++ b/public/images/pokemon/variant/exp/776.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "666657": "5a4c65", "ccccad": "b4b8c8", "71171a": "2c0f2d", @@ -9,14 +8,12 @@ "e74545": "4f3d66", "fadd3d": "32d9e5", "331c1c": "39221d", - "f8f8f8": "f8f8f8", "6b473c": "f4eba2", "cc8720": "2f98cd", "4d2a2a": "d5966f", "9b6500": "276da5" }, "2": { - "101010": "101010", "666657": "4c4276", "ccccad": "adc4e9", "71171a": "be8a7a", @@ -25,7 +22,6 @@ "e74545": "faeecd", "fadd3d": "6e45a0", "331c1c": "0a412c", - "f8f8f8": "f8f8f8", "6b473c": "caee67", "cc8720": "4d2e5e", "4d2a2a": "61b551", diff --git a/public/images/pokemon/variant/exp/777.json b/public/images/pokemon/variant/exp/777.json index 597aad206f4..e04eee7dcd8 100644 --- a/public/images/pokemon/variant/exp/777.json +++ b/public/images/pokemon/variant/exp/777.json @@ -1,22 +1,18 @@ { "1": { - "101010": "101010", "ffea80": "dec2f0", "ccb852": "ac8fbb", "4d4d4d": "362952", "b3b3b3": "8e71cd", "808080": "645393", "595959": "444147", - "f8f8f8": "f8f8f8", "8c8c8c": "99979b", - "fbfbfb": "fbfbfb", "bfbfbf": "d0dadb", "73593f": "ae428a", "e5dba8": "dba6b6", "fff4bf": "ffd8ee" }, "2": { - "101010": "101010", "ffea80": "d65d3c", "ccb852": "7b3c26", "4d4d4d": "294127", @@ -25,7 +21,6 @@ "595959": "342a20", "f8f8f8": "e5b38c", "8c8c8c": "634c41", - "fbfbfb": "fbfbfb", "bfbfbf": "b27f64", "73593f": "47240f", "e5dba8": "c65757", diff --git a/public/images/pokemon/variant/exp/778-busted.json b/public/images/pokemon/variant/exp/778-busted.json index 679ebbb5f31..97168b7209c 100644 --- a/public/images/pokemon/variant/exp/778-busted.json +++ b/public/images/pokemon/variant/exp/778-busted.json @@ -1,7 +1,5 @@ { "1": { - "000000": "000000", - "101010": "101010", "404040": "180c05", "b3a76b": "8d4f3d", "f2e291": "aa6f46", @@ -14,7 +12,6 @@ "404039": "180c05" }, "2": { - "000000": "000000", "101010": "000000", "404040": "0b1231", "b3a76b": "3d2e4f", diff --git a/public/images/pokemon/variant/exp/778-disguised.json b/public/images/pokemon/variant/exp/778-disguised.json index 7dfb153ed7e..c419e6d0577 100644 --- a/public/images/pokemon/variant/exp/778-disguised.json +++ b/public/images/pokemon/variant/exp/778-disguised.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "404040": "180c05", "b3a76b": "8d4f3d", "f2e291": "aa6f46", @@ -13,7 +12,6 @@ "404039": "180c05" }, "2": { - "000000": "000000", "404040": "0b1231", "b3a76b": "3d2e4f", "f2e291": "5b496b", @@ -25,4 +23,4 @@ "805933": "6d80a4", "404039": "ff766e" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/779.json b/public/images/pokemon/variant/exp/779.json index d7976e85262..9877fff7652 100644 --- a/public/images/pokemon/variant/exp/779.json +++ b/public/images/pokemon/variant/exp/779.json @@ -3,7 +3,6 @@ "58295f": "a52121", "834589": "c62c2c", "b75eb7": "f65656", - "101010": "101010", "de5c8a": "602b7a", "97354e": "2e0c3f", "ef87b5": "84539d", @@ -11,15 +10,12 @@ "93d3e1": "caefff", "5e9fc4": "94c5da", "cfae3f": "d65e5e", - "efe85f": "faa28c", - "fdfdfd": "fdfdfd", - "969696": "969696" + "efe85f": "faa28c" }, "2": { "58295f": "4545c4", "834589": "6666e2", "b75eb7": "8585ff", - "101010": "101010", "de5c8a": "dca032", "97354e": "935b3b", "ef87b5": "ffd166", @@ -27,8 +23,6 @@ "93d3e1": "eeeeff", "5e9fc4": "afafe1", "cfae3f": "2d2c43", - "efe85f": "454457", - "fdfdfd": "fdfdfd", - "969696": "969696" + "efe85f": "454457" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/789.json b/public/images/pokemon/variant/exp/789.json index b4dd5c70403..f3f945b52f1 100644 --- a/public/images/pokemon/variant/exp/789.json +++ b/public/images/pokemon/variant/exp/789.json @@ -1,17 +1,11 @@ { "0": { "3a4ca6": "64173e", - "1b234d": "1b234d", "55bef2": "7d42fd", - "f8f8f8": "f8f8f8", - "101010": "101010", "4774cc": "6a2aaf", "61f2f2": "8d8cff", "ffe359": "ffc259", "736628": "a06921", - "133140": "133140", - "3d7a99": "3d7a99", - "61c2f2": "61c2f2", "9d62d9": "dc48a7", "f285bc": "f77247" }, @@ -20,7 +14,6 @@ "1b234d": "391c21", "55bef2": "ffdf49", "f8f8f8": "fdfdfd", - "101010": "101010", "4774cc": "f6a42d", "61f2f2": "fff695", "ffe359": "e5efff", @@ -36,7 +29,6 @@ "1b234d": "1f1155", "55bef2": "71ffd8", "f8f8f8": "fdfdfd", - "101010": "101010", "4774cc": "3dc7e0", "61f2f2": "c9ffe2", "ffe359": "c22741", diff --git a/public/images/pokemon/variant/exp/790.json b/public/images/pokemon/variant/exp/790.json index cbc8fda0072..6b3d3f079da 100644 --- a/public/images/pokemon/variant/exp/790.json +++ b/public/images/pokemon/variant/exp/790.json @@ -1,22 +1,16 @@ { "1": { - "101010": "101010", "8a5911": "545d9e", "c87522": "7b89c4", "faf54e": "e5efff", "e8a61e": "aebde2", - "fdfdfd": "fdfdfd", "1d3e89": "a20b02", "169fda": "ffdf49", "764394": "ff4079", "2c5fab": "eb5b2a", - "1e232b": "1e232b", - "17a6e3": "17a6e3", - "1f4294": "1f4294", "e2629f": "f6a42d" }, "2": { - "101010": "101010", "8a5911": "730627", "c87522": "890425", "faf54e": "d4314c", @@ -26,9 +20,6 @@ "169fda": "71ffd8", "764394": "7e13bf", "2c5fab": "3dc7e0", - "1e232b": "1e232b", - "17a6e3": "17a6e3", - "1f4294": "1f4294", "e2629f": "3dc7e0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/792.json b/public/images/pokemon/variant/exp/792.json index 441861522a8..9e182f9ec66 100644 --- a/public/images/pokemon/variant/exp/792.json +++ b/public/images/pokemon/variant/exp/792.json @@ -2,39 +2,25 @@ "1": { "69551f": "675340", "e3da81": "e6ded2", - "080808": "080808", "a19263": "afa191", "72629a": "864110", "edf0ff": "ffd386", "671ace": "eb422a", "240f62": "60000c", "40168c": "bc1836", - "fdfce8": "fdfce8", "494dcc": "53101c", "7bcece": "ff31e0", - "aaa4d8": "d39143", - "ffa0dd": "ffa0dd", - "ff268f": "ff268f", - "fcfcfc": "fcfcfc", - "000000": "000000" + "aaa4d8": "d39143" }, "2": { "69551f": "6b0420", "e3da81": "c22741", - "080808": "080808", "a19263": "980f2a", "72629a": "7e343d", "edf0ff": "ffd1d1", "671ace": "1550a1", - "240f62": "240f62", "40168c": "1a3186", - "fdfce8": "fdfce8", - "494dcc": "494dcc", "7bcece": "58cbe9", - "aaa4d8": "e19096", - "ffa0dd": "ffa0dd", - "ff268f": "ff268f", - "fcfcfc": "fcfcfc", - "000000": "000000" + "aaa4d8": "e19096" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/797.json b/public/images/pokemon/variant/exp/797.json index 05e51ab62bd..3e41ffa9ef2 100644 --- a/public/images/pokemon/variant/exp/797.json +++ b/public/images/pokemon/variant/exp/797.json @@ -8,7 +8,6 @@ "82ada4": "506ee3", "bccfc4": "f2b97f", "b3e088": "ffc785", - "101010": "101010", "a3e2bb": "9db7f4", "53ca89": "f0f5f9", "193124": "09112e" @@ -22,7 +21,6 @@ "82ada4": "8b1933", "bccfc4": "242733", "b3e088": "232323", - "101010": "101010", "a3e2bb": "bd2f62", "53ca89": "bbf3ef", "193124": "330007" diff --git a/public/images/pokemon/variant/exp/798.json b/public/images/pokemon/variant/exp/798.json index 75092d71cdc..18a2ce389ec 100644 --- a/public/images/pokemon/variant/exp/798.json +++ b/public/images/pokemon/variant/exp/798.json @@ -3,7 +3,6 @@ "827d7d": "18470e", "d7d0d0": "87ab39", "a86c1c": "07421f", - "000000": "000000", "af3e00": "2c180e", "fdcf00": "2c9435", "e95503": "614537", @@ -18,7 +17,6 @@ "827d7d": "283e65", "d7d0d0": "4a86b8", "a86c1c": "5a2036", - "000000": "000000", "af3e00": "8a482d", "fdcf00": "cc7d4f", "e95503": "ffeb93", diff --git a/public/images/pokemon/variant/exp/80-mega.json b/public/images/pokemon/variant/exp/80-mega.json index 5d3d810f095..eeebc5a4b50 100644 --- a/public/images/pokemon/variant/exp/80-mega.json +++ b/public/images/pokemon/variant/exp/80-mega.json @@ -1,12 +1,9 @@ { "1": { "7b3131": "3f2729", - "000000": "000000", "e66a7b": "5b3332", "ff9494": "885345", "ffbdac": "ad7459", - "deded5": "deded5", - "ffffff": "ffffff", "835a20": "9f675f", "eed583": "d49983", "ffeeb4": "e0b69d", @@ -18,12 +15,9 @@ }, "2": { "7b3131": "bf8645", - "000000": "000000", "e66a7b": "d9a95d", "ff9494": "e8cd82", "ffbdac": "f7e6a8", - "deded5": "deded5", - "ffffff": "ffffff", "835a20": "69080f", "eed583": "b34d2e", "ffeeb4": "d16b34", diff --git a/public/images/pokemon/variant/exp/800-dawn-wings.json b/public/images/pokemon/variant/exp/800-dawn-wings.json index df0592955af..63563b11d4e 100644 --- a/public/images/pokemon/variant/exp/800-dawn-wings.json +++ b/public/images/pokemon/variant/exp/800-dawn-wings.json @@ -4,10 +4,8 @@ "293233": "5f0021", "3695ce": "afa191", "5a646c": "890425", - "101010": "101010", "72baf3": "e6ded2", "a6bad9": "f1a54f", - "1f1d35": "1f1d35", "838f95": "c8245d", "c7e5ff": "efe9dd", "74b2d8": "bc1836", @@ -20,23 +18,15 @@ "a42828": "dc1246", "e95d5d": "ff5178", "53f2f2": "d58aff", - "f7e9ba": "f7e9ba", - "d7af28": "d7af28", - "424a50": "424a50", - "ff3a9c": "ff3a9c", - "000000": "000000", - "ffa0dd": "ffd386", - "080808": "080808" + "ffa0dd": "ffd386" }, "2": { "20496a": "3b0015", "293233": "3e135f", "3695ce": "5b0318", "5a646c": "602483", - "101010": "101010", "72baf3": "970b22", "a6bad9": "e79093", - "1f1d35": "1f1d35", "838f95": "f66fdc", "c7e5ff": "e44c51", "74b2d8": "1a3186", @@ -48,13 +38,6 @@ "0b82b7": "2e5dda", "a42828": "901323", "e95d5d": "da2e2e", - "53f2f2": "579eff", - "f7e9ba": "f7e9ba", - "d7af28": "d7af28", - "424a50": "424a50", - "ff3a9c": "ff3a9c", - "000000": "000000", - "ffa0dd": "ffa0dd", - "080808": "080808" + "53f2f2": "579eff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/800-ultra.json b/public/images/pokemon/variant/exp/800-ultra.json index cab917ec271..b71e56c485e 100644 --- a/public/images/pokemon/variant/exp/800-ultra.json +++ b/public/images/pokemon/variant/exp/800-ultra.json @@ -4,30 +4,22 @@ "f8f8e8": "ffe1b8", "9b8259": "b43c06", "e5e4c2": "ffbf79", - "000000": "000000", "bc9b4e": "8e0021", "f8f8d0": "ff7e75", "e8e088": "ee2033", "d0b868": "bc0125", - "7d673b": "770031", - "282828": "282828", - "f84040": "f84040", - "f88888": "f88888", - "c81010": "c81010" + "7d673b": "770031" }, "2": { "b0a080": "e552ec", "f8f8e8": "ffe2ed", "9b8259": "b021c5", "e5e4c2": "ffb9f9", - "000000": "000000", "bc9b4e": "900090", "f8f8d0": "ff8ae9", "e8e088": "ff49e7", "d0b868": "d10cc7", "7d673b": "510059", - "282828": "282828", - "f84040": "f84040", "f88888": "1ae2e6", "c81010": "00c2d2" } diff --git a/public/images/pokemon/variant/exp/800.json b/public/images/pokemon/variant/exp/800.json index 42ec6fb5d21..e0e76df5a7b 100644 --- a/public/images/pokemon/variant/exp/800.json +++ b/public/images/pokemon/variant/exp/800.json @@ -4,12 +4,10 @@ "424a50": "890425", "2b3233": "5f0021", "768188": "c8245d", - "080808": "080808", "fd2b2b": "35d5e8", "5fcfbe": "453ef2", "ec925b": "9d63ff", "9965c9": "6219a8", - "0a5ec5": "0a5ec5", "18f013": "69fff0", "b5bbbf": "a266eb", "fbfbfb": "e8e7ff" @@ -19,7 +17,6 @@ "424a50": "602483", "2b3233": "3e135f", "768188": "b13dc8", - "080808": "080808", "fd2b2b": "fd2bc1", "5fcfbe": "b71334", "ec925b": "e73c37", diff --git a/public/images/pokemon/variant/exp/802.json b/public/images/pokemon/variant/exp/802.json index 14caa71b18b..e92974ed087 100644 --- a/public/images/pokemon/variant/exp/802.json +++ b/public/images/pokemon/variant/exp/802.json @@ -2,9 +2,7 @@ "0": { "232627": "084434", "62646a": "76bc8f", - "000000": "000000", "444546": "3a7e5d", - "dc983d": "dc983d", "f2d982": "f8f592", "802d17": "ff623c", "cc411e": "e31101", @@ -13,9 +11,7 @@ "1": { "232627": "0d0b3f", "62646a": "515aad", - "000000": "000000", "444546": "2f3079", - "dc983d": "dc983d", "f2d982": "f8e592", "802d17": "ffbb17", "cc411e": "ff2006", @@ -24,7 +20,6 @@ "2": { "232627": "5a0423", "62646a": "ce3e63", - "000000": "000000", "444546": "97123b", "dc983d": "16a1e1", "f2d982": "4bf6ff", diff --git a/public/images/pokemon/variant/exp/803.json b/public/images/pokemon/variant/exp/803.json index 1f612916938..2fa484408e6 100644 --- a/public/images/pokemon/variant/exp/803.json +++ b/public/images/pokemon/variant/exp/803.json @@ -2,7 +2,6 @@ "1": { "78757f": "449e93", "ccc0d8": "e3ffec", - "101010": "101010", "98295e": "27579e", "ff6ccc": "54cbdc", "d9338e": "3492b9", @@ -17,7 +16,6 @@ "2": { "78757f": "cd9b85", "ccc0d8": "ffefe0", - "101010": "101010", "98295e": "a12f63", "ff6ccc": "ff778d", "d9338e": "d6487a", diff --git a/public/images/pokemon/variant/exp/804.json b/public/images/pokemon/variant/exp/804.json index bee1c93ca0f..e6f0309cb03 100644 --- a/public/images/pokemon/variant/exp/804.json +++ b/public/images/pokemon/variant/exp/804.json @@ -2,7 +2,6 @@ "1": { "523e68": "16396f", "b699f2": "359faf", - "101010": "101010", "8570b1": "22658d", "9e2348": "81262d", "ff6cd3": "e88354", @@ -14,13 +13,11 @@ "e0d9e8": "e3ffec", "9996a9": "8edfd5", "008fdd": "f3c58a", - "b6e4f3": "fff5c9", - "000000": "000000" + "b6e4f3": "fff5c9" }, "2": { "523e68": "0e3346", "b699f2": "68b363", - "101010": "101010", "8570b1": "2d794e", "9e2348": "7e4e3d", "ff6cd3": "fff8cc", @@ -32,7 +29,6 @@ "e0d9e8": "e54558", "9996a9": "96234e", "008fdd": "4c495b", - "b6e4f3": "68637e", - "000000": "000000" + "b6e4f3": "68637e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/808.json b/public/images/pokemon/variant/exp/808.json index a1ed465359f..23e974c8269 100644 --- a/public/images/pokemon/variant/exp/808.json +++ b/public/images/pokemon/variant/exp/808.json @@ -4,9 +4,7 @@ "ab732b": "ce5a6f", "ffda45": "ffbeae", "fbf28d": "fff1d1", - "f9f9f9": "f9f9f9", "814f23": "85374d", - "101010": "101010", "59544e": "38585b", "3d3534": "2c4048", "67675f": "426e73", @@ -21,16 +19,12 @@ "ab732b": "2d2931", "ffda45": "9b6e98", "fbf28d": "bf99bc", - "f9f9f9": "f9f9f9", "814f23": "101010", - "101010": "101010", "59544e": "9e002e", "3d3534": "780000", "67675f": "ba2b41", "8a8d7e": "d66352", "dcdcda": "ffbe6e", - "b1b5a6": "f49769", - "741012": "741012", - "c2292e": "c2292e" + "b1b5a6": "f49769" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/809.json b/public/images/pokemon/variant/exp/809.json index 29b15e46f70..9ffe4ac2c46 100644 --- a/public/images/pokemon/variant/exp/809.json +++ b/public/images/pokemon/variant/exp/809.json @@ -6,14 +6,12 @@ "3d3534": "2c4048", "dea220": "ff7c8e", "ab732b": "ce5a6f", - "101010": "101010", "fbf28d": "fff1d1", "67675f": "426e73", "814f23": "85374d", "ffda45": "ffbeae", "dcdcda": "c2effc", - "b1b5a6": "98d6f0", - "f9f9f9": "f9f9f9" + "b1b5a6": "98d6f0" }, "2": { "59544e": "9e002e", @@ -22,13 +20,11 @@ "3d3534": "780000", "dea220": "64486f", "ab732b": "2d2931", - "101010": "101010", "fbf28d": "bf99bc", "67675f": "ba2b41", "814f23": "101010", "ffda45": "9b6e98", "dcdcda": "ffbe6e", - "b1b5a6": "f49769", - "f9f9f9": "f9f9f9" + "b1b5a6": "f49769" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/816.json b/public/images/pokemon/variant/exp/816.json index 62c875c5941..55573466e55 100644 --- a/public/images/pokemon/variant/exp/816.json +++ b/public/images/pokemon/variant/exp/816.json @@ -8,12 +8,10 @@ "6ab6d2": "e66371", "add7e7": "e6828e", "718b93": "a7664c", - "fbfbfb": "fbfbfb", "5091c0": "b5464b", "bdc6ca": "d9c5bc", "d2e7ec": "eecaa2", - "9fbac1": "e19b78", - "101010": "101010" + "9fbac1": "e19b78" }, "2": { "1f2d63": "6e1a4c", @@ -24,11 +22,9 @@ "6ab6d2": "ffeeb8", "add7e7": "fffbec", "718b93": "933644", - "fbfbfb": "fbfbfb", "5091c0": "dea26c", "bdc6ca": "c5e4ea", "d2e7ec": "ec8b48", - "9fbac1": "d5543c", - "101010": "101010" + "9fbac1": "d5543c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/817.json b/public/images/pokemon/variant/exp/817.json index 5a54b6bdab3..d148636069b 100644 --- a/public/images/pokemon/variant/exp/817.json +++ b/public/images/pokemon/variant/exp/817.json @@ -8,10 +8,8 @@ "005980": "631425", "70cce0": "eb8577", "31b5d0": "cf5b5d", - "101010": "101010", "6ba01b": "a36d5d", "ccc7cd": "c7c1bd", - "fefefe": "fefefe", "3d6424": "83403e", "8cd222": "d99f8d" }, @@ -24,10 +22,8 @@ "005980": "7c2f23", "70cce0": "ffe5a3", "31b5d0": "fcbe6d", - "101010": "101010", "6ba01b": "ba2c22", "ccc7cd": "becee1", - "fefefe": "fefefe", "3d6424": "731317", "8cd222": "d85633" } diff --git a/public/images/pokemon/variant/exp/818.json b/public/images/pokemon/variant/exp/818.json index f624c2fd14a..023c086ae92 100644 --- a/public/images/pokemon/variant/exp/818.json +++ b/public/images/pokemon/variant/exp/818.json @@ -8,9 +8,6 @@ "01599a": "0ea6a8", "549bc3": "0060a4", "9cd2e2": "107ac0", - "fdfdfd": "fdfdfd", - "e3a32b": "e3a32b", - "101010": "101010", "31302f": "989dac", "646565": "f7fbfc", "4a4a4d": "c4ccd4", @@ -25,9 +22,7 @@ "01599a": "9c2734", "549bc3": "a55846", "9cd2e2": "e1926f", - "fdfdfd": "fdfdfd", "e3a32b": "5885a2", - "101010": "101010", "31302f": "251e1c", "646565": "4c4643", "4a4a4d": "342b2a", @@ -42,9 +37,7 @@ "01599a": "d8b284", "549bc3": "e38544", "9cd2e2": "ffcd57", - "fdfdfd": "fdfdfd", "e3a32b": "a13047", - "101010": "101010", "31302f": "571342", "646565": "be3a7d", "4a4a4d": "771b54", diff --git a/public/images/pokemon/variant/exp/822.json b/public/images/pokemon/variant/exp/822.json index 8e4a7614911..722c9d7f45c 100644 --- a/public/images/pokemon/variant/exp/822.json +++ b/public/images/pokemon/variant/exp/822.json @@ -6,10 +6,8 @@ "426eb2": "ffdeeb", "2f4577": "f4a0b9", "403524": "ad6f83", - "101010": "101010", "6d1b29": "5722a6", "e21d22": "8b51e1", - "f4f4f4": "f4f4f4", "95a1b6": "57445a", "444f59": "2e262f", "f85947": "8b51e1", @@ -22,10 +20,8 @@ "426eb2": "edd472", "2f4577": "eaae36", "403524": "b95212", - "101010": "101010", "6d1b29": "5a0015", "e21d22": "8f0021", - "f4f4f4": "f4f4f4", "95a1b6": "743419", "444f59": "541705", "f85947": "8f0021", diff --git a/public/images/pokemon/variant/exp/823.json b/public/images/pokemon/variant/exp/823.json index 8f2c6fe3a1d..75fa0626a8c 100644 --- a/public/images/pokemon/variant/exp/823.json +++ b/public/images/pokemon/variant/exp/823.json @@ -5,14 +5,12 @@ "303360": "ad6f83", "646ca8": "ffdeeb", "4d5488": "f4a0b9", - "010101": "010101", "ffa8a8": "ffc586", "f30101": "df7b10", "4e4150": "57445a", "2c2b58": "845195", "3e3d6d": "bc7dc3", - "18173d": "4b2a5e", - "2e262f": "2e262f" + "18173d": "4b2a5e" }, "2": { "251d4e": "612a0e", @@ -20,7 +18,6 @@ "303360": "b95212", "646ca8": "edd472", "4d5488": "eaae36", - "010101": "010101", "ffa8a8": "ff4a4a", "f30101": "e80000", "4e4150": "743419", diff --git a/public/images/pokemon/variant/exp/830.json b/public/images/pokemon/variant/exp/830.json index 58b1550cf2f..0b736376c07 100644 --- a/public/images/pokemon/variant/exp/830.json +++ b/public/images/pokemon/variant/exp/830.json @@ -6,7 +6,6 @@ "e8d5c6": "a2d2e7", "828a3f": "358699", "b6b23d": "8be8e4", - "101010": "101010", "fef0a0": "ece7c8", "bab743": "c38ec6", "5c6738": "6f3e7b", @@ -22,7 +21,6 @@ "e8d5c6": "d5aee9", "828a3f": "8243b6", "b6b23d": "b87def", - "101010": "101010", "fef0a0": "f4f1de", "bab743": "6a9cbb", "5c6738": "133049", diff --git a/public/images/pokemon/variant/exp/835.json b/public/images/pokemon/variant/exp/835.json index 708c7028bcd..fbb7122a337 100644 --- a/public/images/pokemon/variant/exp/835.json +++ b/public/images/pokemon/variant/exp/835.json @@ -1,7 +1,6 @@ { "1": { "844840": "051514", - "101010": "101010", "bd8d62": "e0bb76", "a26642": "aa8e5a", "6d943a": "28797b", @@ -11,26 +10,19 @@ "fbfbfb": "fdffe1", "cba685": "fbffc7", "9a6229": "13423f", - "f9f9f9": "f9f9f9", - "d1cccb": "e7c78d", - "837a76": "837a76", - "db6659": "db6659" + "d1cccb": "e7c78d" }, "2": { "844840": "313e38", - "101010": "101010", "bd8d62": "509468", "a26642": "3d5d59", "6d943a": "1e1a42", "76c745": "202758", "cf9529": "56447e", "f7da11": "776baf", - "fbfbfb": "fbfbfb", "cba685": "8cd3a5", "9a6229": "2b2042", - "f9f9f9": "f9f9f9", "d1cccb": "a0bcaa", - "837a76": "43554d", - "db6659": "db6659" + "837a76": "43554d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/850.json b/public/images/pokemon/variant/exp/850.json index c799fd3ac06..f65a10d09ff 100644 --- a/public/images/pokemon/variant/exp/850.json +++ b/public/images/pokemon/variant/exp/850.json @@ -1,9 +1,7 @@ { "1": { - "2f1610": "2f1610", "804a3e": "59365d", "bf3922": "117956", - "101010": "101010", "ff5839": "35c36c", "5b2f26": "36203c", "681607": "024f2d", @@ -11,22 +9,14 @@ "f89e08": "67ef9c", "ff836c": "5ff58e", "ffd901": "c8ffcc", - "be5409": "117956", - "fbfbfb": "fbfbfb" + "be5409": "117956" }, "2": { - "2f1610": "2f1610", "804a3e": "475294", "bf3922": "ae1165", - "101010": "101010", "ff5839": "d73981", "5b2f26": "36426c", "681607": "68063c", - "f77c42": "f77c42", - "f89e08": "f89e08", - "ff836c": "ff836c", - "ffd901": "ffc143", - "be5409": "be5409", - "fbfbfb": "fbfbfb" + "ffd901": "ffc143" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/851.json b/public/images/pokemon/variant/exp/851.json index 827ace8fc29..36675d6da87 100644 --- a/public/images/pokemon/variant/exp/851.json +++ b/public/images/pokemon/variant/exp/851.json @@ -4,7 +4,6 @@ "f89e08": "67ef9c", "ffd901": "c8ffcc", "bf3922": "1a8987", - "101010": "101010", "2f1610": "24122b", "5b2f26": "503154", "804a3e": "714272", @@ -12,7 +11,6 @@ "ff5839": "35c3a8", "b96f5d": "ad58ab", "941528": "005f35", - "fbfbfb": "fbfbfb", "42221c": "36203c", "000000": "101010" }, @@ -21,15 +19,12 @@ "f89e08": "f36d73", "ffd901": "ffc143", "bf3922": "ae1165", - "101010": "101010", "2f1610": "121439", "5b2f26": "36426c", "804a3e": "475294", "681607": "6e0442", "ff5839": "d73981", "b96f5d": "7866cb", - "941528": "941528", - "fbfbfb": "fbfbfb", "42221c": "222957", "000000": "101010" } diff --git a/public/images/pokemon/variant/exp/854.json b/public/images/pokemon/variant/exp/854.json index 8c4d24d68b2..fa1c80f0d51 100644 --- a/public/images/pokemon/variant/exp/854.json +++ b/public/images/pokemon/variant/exp/854.json @@ -1,12 +1,10 @@ { "1": { - "5e401f": "5e401f", "733a87": "cc752f", "cf9a4c": "592626", "ffd45c": "b7763c", "af63c4": "ffffeb", "c3bfe0": "f2bbaa", - "101010": "101010", "215557": "531d2b", "d38095": "ef9e5c", "f79e67": "eb8328", @@ -22,7 +20,6 @@ "ffd45c": "998c68", "af63c4": "82b183", "c3bfe0": "524c4e", - "101010": "101010", "215557": "222221", "d38095": "c6c95e", "f79e67": "f4f394", diff --git a/public/images/pokemon/variant/exp/855.json b/public/images/pokemon/variant/exp/855.json index c22bae10676..1d840d9f6cf 100644 --- a/public/images/pokemon/variant/exp/855.json +++ b/public/images/pokemon/variant/exp/855.json @@ -13,9 +13,7 @@ "f5f9fa": "f2bbaa", "f79e67": "eb8328", "d38095": "ef9e5c", - "733a87": "cc752f", - "101010": "101010", - "000000": "000000" + "733a87": "cc752f" }, "2": { "5e401f": "463f2b", @@ -31,8 +29,6 @@ "f5f9fa": "524c4e", "f79e67": "f4f394", "d38095": "c6c95e", - "733a87": "49755c", - "101010": "101010", - "000000": "000000" + "733a87": "49755c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/856.json b/public/images/pokemon/variant/exp/856.json index 3d245b74324..bfc575d89d7 100644 --- a/public/images/pokemon/variant/exp/856.json +++ b/public/images/pokemon/variant/exp/856.json @@ -2,7 +2,6 @@ "1": { "727ab1": "1d4a3b", "c8e9ff": "5ec183", - "181818": "181818", "acbfdf": "3b9665", "bb6a99": "043232", "f9d5da": "298675", @@ -13,7 +12,6 @@ "2": { "727ab1": "6b0124", "c8e9ff": "cb304d", - "181818": "181818", "acbfdf": "a11437", "bb6a99": "30163d", "f9d5da": "523f73", diff --git a/public/images/pokemon/variant/exp/858.json b/public/images/pokemon/variant/exp/858.json index 1f0c1cefab4..41e50e22464 100644 --- a/public/images/pokemon/variant/exp/858.json +++ b/public/images/pokemon/variant/exp/858.json @@ -3,7 +3,6 @@ "727ab1": "1d4a3b", "c8e9ff": "5ec183", "acbfdf": "3b9665", - "101010": "101010", "948fc2": "287b59", "d9cedb": "dec1c2", "e5e4ef": "f7e4e4", @@ -18,7 +17,6 @@ "727ab1": "6b0124", "c8e9ff": "cb304d", "acbfdf": "a11437", - "101010": "101010", "948fc2": "8c0e32", "d9cedb": "e4bcde", "e5e4ef": "ffecf9", diff --git a/public/images/pokemon/variant/exp/859.json b/public/images/pokemon/variant/exp/859.json index 703d5d67218..bb4e943fa79 100644 --- a/public/images/pokemon/variant/exp/859.json +++ b/public/images/pokemon/variant/exp/859.json @@ -8,9 +8,6 @@ "735aac": "a4332d", "947cd8": "cd643d", "f42252": "f55c14", - "101010": "101010", - "fdfdfd": "fdfdfd", - "c9c9c9": "c9c9c9", "8b73d5": "cc5836" }, "2": { @@ -22,8 +19,6 @@ "735aac": "f0c475", "947cd8": "d9975b", "f42252": "fc645a", - "101010": "101010", - "fdfdfd": "fdfdfd", "c9c9c9": "dad6bf", "8b73d5": "f9e9a4" } diff --git a/public/images/pokemon/variant/exp/860.json b/public/images/pokemon/variant/exp/860.json index 64c279dc81d..e9604691813 100644 --- a/public/images/pokemon/variant/exp/860.json +++ b/public/images/pokemon/variant/exp/860.json @@ -6,13 +6,9 @@ "352954": "3b1528", "fd0b42": "d24309", "5d4694": "8b332d", - "101010": "101010", "433568": "5a1d27", "8872b6": "c45949", - "c9c9c9": "c9c9c9", - "fdfdfd": "fdfdfd", "409555": "244849", - "000000": "000000", "47be62": "366c59", "356a3c": "162a35" }, @@ -23,13 +19,10 @@ "352954": "a26458", "fd0b42": "f0443e", "5d4694": "dfc784", - "101010": "101010", "433568": "c98e63", "8872b6": "f6e8b8", "c9c9c9": "dad6bf", - "fdfdfd": "fdfdfd", "409555": "272664", - "000000": "000000", "47be62": "3f386f", "356a3c": "090d50" } diff --git a/public/images/pokemon/variant/exp/861.json b/public/images/pokemon/variant/exp/861.json index f60f7b31a56..539009124d0 100644 --- a/public/images/pokemon/variant/exp/861.json +++ b/public/images/pokemon/variant/exp/861.json @@ -3,15 +3,11 @@ "356a3c": "162a35", "47be62": "366c59", "2f184e": "290527", - "101010": "101010", "5d4694": "8b332d", "409555": "244849", "fd0b42": "d24309", "433568": "5a1d27", - "c9c9c9": "c9c9c9", - "fdfdfd": "fdfdfd", "352954": "3b1528", - "7c8089": "7c8089", "e93761": "638a48", "f75c90": "7daf56" }, @@ -19,15 +15,12 @@ "356a3c": "090d50", "47be62": "3f386f", "2f184e": "6a2f3a", - "101010": "101010", "5d4694": "dfc784", "409555": "272664", "fd0b42": "f0443e", "433568": "c98e63", "c9c9c9": "dad6bf", - "fdfdfd": "fdfdfd", "352954": "a26458", - "7c8089": "7c8089", "e93761": "491337", "f75c90": "64233b" } diff --git a/public/images/pokemon/variant/exp/862.json b/public/images/pokemon/variant/exp/862.json index afcf3da4864..e2c25f4ec17 100644 --- a/public/images/pokemon/variant/exp/862.json +++ b/public/images/pokemon/variant/exp/862.json @@ -1,8 +1,6 @@ { "1": { - "1b2627": "1b2627", "474749": "156a66", - "010101": "010101", "f5f5f6": "f5ffea", "b2b3b2": "90c093", "303034": "094448", @@ -11,13 +9,11 @@ "6f7071": "01473a", "df84ad": "ff69fa", "9b4f69": "d414dd", - "fcfcfc": "fcfcfc", "494d56": "156a66" }, "2": { "1b2627": "060724", "474749": "8655e1", - "010101": "010101", "f5f5f6": "342d4c", "b2b3b2": "18133d", "303034": "5a3eb9", @@ -26,7 +22,6 @@ "6f7071": "2e1d7b", "df84ad": "54f1ff", "9b4f69": "0099ce", - "fcfcfc": "fcfcfc", "494d56": "8655e1" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/863.json b/public/images/pokemon/variant/exp/863.json index 66d2b4fce96..bececb30c88 100644 --- a/public/images/pokemon/variant/exp/863.json +++ b/public/images/pokemon/variant/exp/863.json @@ -2,26 +2,20 @@ "1": { "66716c": "59879a", "bfc1bf": "b4e0d3", - "040303": "040303", "8f9c95": "85c1c0", "181a1d": "1c1922", "3d4547": "4e385a", "24282b": "342b49", "ef9b50": "fbe663", "dd5e33": "df9834", - "f3f3f3": "f3f3f3", "9aa094": "9fb8bc", "84726f": "928eb0", "5b4e4d": "4e455c", - "ada09a": "d5d0dd", - "111414": "111414", - "333a3b": "333a3b", - "736663": "736663" + "ada09a": "d5d0dd" }, "2": { "66716c": "331a37", "bfc1bf": "92264b", - "040303": "040303", "8f9c95": "6d0b3c", "181a1d": "0f2127", "3d4547": "417778", @@ -32,9 +26,6 @@ "9aa094": "a96840", "84726f": "27293c", "5b4e4d": "141626", - "ada09a": "4c4d62", - "111414": "111414", - "333a3b": "333a3b", - "736663": "736663" + "ada09a": "4c4d62" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/864.json b/public/images/pokemon/variant/exp/864.json index ccfc0f2d88d..84eab2bbe99 100644 --- a/public/images/pokemon/variant/exp/864.json +++ b/public/images/pokemon/variant/exp/864.json @@ -35,4 +35,4 @@ "bbb4bc": "0a7a57", "af9e9e": "48c492" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/867.json b/public/images/pokemon/variant/exp/867.json index fcf7e29867a..8b2b7fc38d9 100644 --- a/public/images/pokemon/variant/exp/867.json +++ b/public/images/pokemon/variant/exp/867.json @@ -1,7 +1,6 @@ { "1": { "393941": "69d9bf", - "101010": "101010", "d9d0d1": "d6b8a0", "c5b9bb": "c69981", "d66770": "334599", @@ -13,7 +12,6 @@ }, "2": { "393941": "a4222c", - "101010": "101010", "d9d0d1": "4fb66a", "c5b9bb": "298a61", "d66770": "ffe78d", diff --git a/public/images/pokemon/variant/exp/872.json b/public/images/pokemon/variant/exp/872.json index 21ea6cd4192..060816eced9 100644 --- a/public/images/pokemon/variant/exp/872.json +++ b/public/images/pokemon/variant/exp/872.json @@ -3,33 +3,24 @@ "7b8b9b": "345f5c", "acc3cc": "669a8c", "d8e9f0": "b7f1d6", - "f5fdff": "f5fdff", "edeae0": "a6d6a6", "b3a7c2": "73a878", - "101010": "101010", - "695e77": "275e43", - "fdfdfb": "fdfdfb" + "695e77": "275e43" }, "1": { "7b8b9b": "22504c", "acc3cc": "548e8f", "d8e9f0": "b6e7df", - "f5fdff": "f5fdff", "edeae0": "c1ebf3", "b3a7c2": "89a9be", - "101010": "101010", - "695e77": "354b63", - "fdfdfb": "fdfdfb" + "695e77": "354b63" }, "2": { "7b8b9b": "5a3993", "acc3cc": "a66ac2", "d8e9f0": "d5c3ff", - "f5fdff": "f5fdff", "edeae0": "e5a2da", "b3a7c2": "a060a0", - "101010": "101010", - "695e77": "5f3465", - "fdfdfb": "fdfdfb" + "695e77": "5f3465" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/873.json b/public/images/pokemon/variant/exp/873.json index 5ea93b1c3bb..2bf9938b290 100644 --- a/public/images/pokemon/variant/exp/873.json +++ b/public/images/pokemon/variant/exp/873.json @@ -5,7 +5,6 @@ "e7e0e6": "a6d6a6", "b3b4bd": "73a878", "8f8f9f": "547b58", - "101010": "101010", "758174": "497e7a", "c0e4c2": "eefffc", "a0baa8": "aae3d9", @@ -20,13 +19,11 @@ "e7e0e6": "c1ebf3", "b3b4bd": "8ebbca", "8f8f9f": "648397", - "101010": "101010", "758174": "428586", "c0e4c2": "d7fff8", "a0baa8": "7bcbc0", "4662ce": "0fa5bd", "8e9fe1": "2dd3e0", - "3f4474": "3f4474", "c0df86": "eefffb" }, "2": { @@ -35,7 +32,6 @@ "e7e0e6": "d78dcb", "b3b4bd": "864c86", "8f8f9f": "5f3465", - "101010": "101010", "758174": "795a9e", "c0e4c2": "e1e3ff", "a0baa8": "9f87ca", diff --git a/public/images/pokemon/variant/exp/876-female.json b/public/images/pokemon/variant/exp/876-female.json index 6803493d5e3..eb070b03fc2 100644 --- a/public/images/pokemon/variant/exp/876-female.json +++ b/public/images/pokemon/variant/exp/876-female.json @@ -5,7 +5,6 @@ "564c6c": "4a282a", "2f2642": "2c1419", "6c64a6": "b72e3e", - "101010": "101010", "d872e7": "79e28d", "ccb7c2": "c4a691", "fefefe": "e8d4bf", @@ -21,7 +20,6 @@ "564c6c": "d58da4", "2f2642": "444a8e", "6c64a6": "78aae5", - "101010": "101010", "d872e7": "ff9cca", "ccb7c2": "cbdbe6", "fefefe": "f0f2f3", diff --git a/public/images/pokemon/variant/exp/876.json b/public/images/pokemon/variant/exp/876.json index 4760b75fd31..8fbf83473af 100644 --- a/public/images/pokemon/variant/exp/876.json +++ b/public/images/pokemon/variant/exp/876.json @@ -3,9 +3,7 @@ "2e2641": "2c1419", "7d7493": "5a3736", "564c6c": "4a282a", - "101010": "101010", "2f2642": "2c1419", - "000000": "000000", "6c64a6": "b72e3e", "ccb7c2": "c4a691", "fefefe": "e8d4bf", @@ -20,16 +18,13 @@ "2e2641": "314c7c", "7d7493": "a3c5e8", "564c6c": "78a5d4", - "101010": "101010", "2f2642": "7a316c", - "000000": "000000", "6c64a6": "f589bb", "ccb7c2": "e6d2e7", "fefefe": "faeefa", "4d447e": "d268a7", "92605f": "0077dc", "733737": "2d4697", - "28b0e3": "28b0e3", "826882": "9b7e9e", "3d3055": "aa518a" } diff --git a/public/images/pokemon/variant/exp/877-hangry.json b/public/images/pokemon/variant/exp/877-hangry.json index 100665220df..44e48631166 100644 --- a/public/images/pokemon/variant/exp/877-hangry.json +++ b/public/images/pokemon/variant/exp/877-hangry.json @@ -1,19 +1,13 @@ { "0": { - "101010": "101010", "383634": "540606", "6c6c6c": "952222", "4f4b47": "3a1010", "9958ce": "cebb58", "6b3d96": "967f3d", - "ff151c": "ff151c", - "f38bb7": "f38bb7", - "9f9f9f": "9f9f9f", - "fbfbfb": "fbfbfb", "493061": "615e30" }, "1": { - "101010": "101010", "383634": "212020", "6c6c6c": "3a3a3a", "4f4b47": "161514", @@ -21,21 +15,13 @@ "6b3d96": "a2512c", "ff151c": "ff6b00", "f38bb7": "f3a18b", - "9f9f9f": "9f9f9f", - "fbfbfb": "fbfbfb", "493061": "753e25" }, "2": { - "101010": "101010", - "383634": "383634", - "6c6c6c": "6c6c6c", - "4f4b47": "4f4b47", "9958ce": "7fba7f", "6b3d96": "568351", "ff151c": "065b06", "f38bb7": "468e46", - "9f9f9f": "9f9f9f", - "fbfbfb": "fbfbfb", "493061": "306135" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/877.json b/public/images/pokemon/variant/exp/877.json index 4be9b0e5c12..73ab51ab3f0 100644 --- a/public/images/pokemon/variant/exp/877.json +++ b/public/images/pokemon/variant/exp/877.json @@ -1,48 +1,28 @@ { "0": { - "383634": "383634", - "101010": "101010", "8a5e48": "383634", - "6c6c6c": "6c6c6c", "cf9c66": "6c6c6c", "af7044": "4f4b47", - "4f4b47": "4f4b47", "d3b351": "8851d3", - "f4f489": "b689f4", - "fbfbfb": "fbfbfb", - "5c5c5c": "5c5c5c", - "f38bb7": "f38bb7", - "b24244": "b24244", - "e76961": "e76961" + "f4f489": "b689f4" }, "1": { - "383634": "383634", - "101010": "101010", "8a5e48": "2541ad", "6c6c6c": "58666d", "cf9c66": "86aaff", "af7044": "2c439d", - "4f4b47": "4f4b47", "d3b351": "8b8853", "f4f489": "fff98f", - "fbfbfb": "fbfbfb", - "5c5c5c": "5c5c5c", "f38bb7": "1010b3", "b24244": "424eb2", "e76961": "61b6e7" }, "2": { - "383634": "383634", - "101010": "101010", "8a5e48": "4f8a48", - "6c6c6c": "6c6c6c", "cf9c66": "71cf66", "af7044": "44af5b", - "4f4b47": "4f4b47", "d3b351": "b6b6b6", "f4f489": "f8f8f8", - "fbfbfb": "fbfbfb", - "5c5c5c": "5c5c5c", "f38bb7": "a1f38b", "b24244": "388040", "e76961": "95e69d" diff --git a/public/images/pokemon/variant/exp/880.json b/public/images/pokemon/variant/exp/880.json index 96812db4d1b..2ce8fb7dfff 100644 --- a/public/images/pokemon/variant/exp/880.json +++ b/public/images/pokemon/variant/exp/880.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "975e17": "5b0610", "ffff84": "ee8563", "e39e1e": "9c1430", @@ -12,71 +11,28 @@ "871f16": "427d47", "47202a": "20132d", "732c3e": "271d3c", - "0f1514": "0f1514", "b3761a": "271447", - "301613": "301613", - "491a15": "491a15", "ff9946": "bb3333", "008567": "757798", "005e44": "564e6e", "39ad5a": "a2b5c8", "003319": "26233c", - "4c3313": "4c3313", - "4c321e": "4c321e", - "b68b0f": "b68b0f", - "3a1c23": "3a1c23", - "471f29": "471f29", - "5f8047": "5f8047", - "747335": "40030a", - "101514": "101514", - "171412": "171412", - "5a2532": "5a2532", - "8a3248": "8a3248", - "322412": "322412", - "7b4d28": "7b4d28", - "17160f": "17160f", - "654114": "654114", - "171410": "171410", - "2f191e": "2f191e" + "747335": "40030a" }, "2": { - "101010": "101010", "975e17": "211b3d", "ffff84": "dceeeb", "e39e1e": "35365e", - "8f261b": "8f261b", "ead900": "636287", "ed4e76": "ca5939", "ff8d9f": "e28854", "ff3868": "48d385", "871f16": "239d73", - "47202a": "47202a", - "732c3e": "732c3e", - "0f1514": "0f1514", - "b3761a": "b3761a", - "301613": "301613", - "491a15": "491a15", "ff9946": "8993b9", "008567": "fff491", "005e44": "f1b45f", "39ad5a": "ce734d", "003319": "671d18", - "4c3313": "4c3313", - "4c321e": "4c321e", - "b68b0f": "b68b0f", - "3a1c23": "3a1c23", - "471f29": "471f29", - "5f8047": "5f8047", - "747335": "1a122d", - "101514": "101514", - "171412": "171412", - "5a2532": "5a2532", - "8a3248": "8a3248", - "322412": "322412", - "7b4d28": "7b4d28", - "17160f": "17160f", - "654114": "654114", - "171410": "171410", - "2f191e": "2f191e" + "747335": "1a122d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/881.json b/public/images/pokemon/variant/exp/881.json index 0d408a71172..d32717017a5 100644 --- a/public/images/pokemon/variant/exp/881.json +++ b/public/images/pokemon/variant/exp/881.json @@ -1,7 +1,6 @@ { "1": { "975e17": "5b0610", - "101010": "101010", "ffff84": "ee8563", "e39e1e": "9c1430", "ead900": "c6362b", @@ -20,7 +19,6 @@ }, "2": { "975e17": "211b3d", - "101010": "101010", "ffff84": "dceeeb", "e39e1e": "35365e", "ead900": "636287", diff --git a/public/images/pokemon/variant/exp/883.json b/public/images/pokemon/variant/exp/883.json index 723a0a9bd40..f90d3ed38a4 100644 --- a/public/images/pokemon/variant/exp/883.json +++ b/public/images/pokemon/variant/exp/883.json @@ -5,7 +5,6 @@ "777ebd": "cc6235", "172459": "771922", "edf3f2": "faebc8", - "101010": "101010", "09354d": "2f1f1a", "085d94": "714363", "9ab8ba": "cea5b9", @@ -20,7 +19,6 @@ "777ebd": "6c1046", "172459": "320432", "edf3f2": "fcffe4", - "101010": "101010", "09354d": "2f1a20", "085d94": "ad3b6c", "9ab8ba": "a3c465", diff --git a/public/images/pokemon/variant/exp/884.json b/public/images/pokemon/variant/exp/884.json index 962edf2d6da..f4e311bd455 100644 --- a/public/images/pokemon/variant/exp/884.json +++ b/public/images/pokemon/variant/exp/884.json @@ -2,7 +2,6 @@ "1": { "68353c": "871e14", "b96a6a": "cd452b", - "151515": "151515", "c4bac5": "c19b85", "e4e5f1": "f8e0cf", "837080": "5d392f", @@ -18,7 +17,6 @@ "2": { "68353c": "062449", "b96a6a": "2077a6", - "151515": "151515", "c4bac5": "3d3268", "e4e5f1": "6e5ca6", "837080": "1a0e34", diff --git a/public/images/pokemon/variant/exp/885.json b/public/images/pokemon/variant/exp/885.json index 8dc901e6476..2fc1383bea0 100644 --- a/public/images/pokemon/variant/exp/885.json +++ b/public/images/pokemon/variant/exp/885.json @@ -2,7 +2,6 @@ "0": { "3a583c": "133056", "fa5494": "efa93f", - "101010": "101010", "cc4066": "cc8225", "5f875a": "2f6c89", "476b48": "20486e", @@ -17,7 +16,6 @@ "1": { "3a583c": "2f040d", "fa5494": "4590da", - "101010": "101010", "cc4066": "3261b7", "5f875a": "6b242e", "476b48": "4e0e17", @@ -32,7 +30,6 @@ "2": { "3a583c": "1f0c2c", "fa5494": "68c7c4", - "101010": "101010", "cc4066": "2a8286", "5f875a": "3c2750", "476b48": "231234", diff --git a/public/images/pokemon/variant/exp/886.json b/public/images/pokemon/variant/exp/886.json index 5a32a09d5cc..4bed517c28e 100644 --- a/public/images/pokemon/variant/exp/886.json +++ b/public/images/pokemon/variant/exp/886.json @@ -2,7 +2,6 @@ "0": { "444e62": "2d365a", "addcbc": "6accd6", - "101010": "101010", "5f875a": "2f6c89", "2c323f": "192250", "566f89": "465272", @@ -19,7 +18,6 @@ "1": { "444e62": "4a1621", "addcbc": "da6151", - "101010": "101010", "5f875a": "6b242e", "2c323f": "2e080d", "566f89": "602034", @@ -36,7 +34,6 @@ "2": { "444e62": "231b45", "addcbc": "927fa1", - "101010": "101010", "5f875a": "3c2750", "2c323f": "251b31", "566f89": "3b2e5d", @@ -46,8 +43,6 @@ "ffe322": "87ff46", "7fb3b1": "8b659f", "5b878c": "6c4d85", - "b5a36a": "b5a36a", - "dbd39d": "dbd39d", "000000": "101010" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/887.json b/public/images/pokemon/variant/exp/887.json index a15fdf3c9ec..6e3ccfb6e8b 100644 --- a/public/images/pokemon/variant/exp/887.json +++ b/public/images/pokemon/variant/exp/887.json @@ -1,7 +1,6 @@ { "0": { "2c323f": "192250", - "101010": "101010", "566f89": "46557b", "444e62": "2c3867", "fa5494": "efa93f", @@ -22,7 +21,6 @@ }, "1": { "2c323f": "2e080d", - "101010": "101010", "566f89": "6c273d", "444e62": "4a1621", "fa5494": "4590da", @@ -43,7 +41,6 @@ }, "2": { "2c323f": "1b163f", - "101010": "101010", "566f89": "4c3f6f", "444e62": "332a59", "fa5494": "68c7c4", diff --git a/public/images/pokemon/variant/exp/888-crowned.json b/public/images/pokemon/variant/exp/888-crowned.json index a78ba1d9299..2bb8608a4d8 100644 --- a/public/images/pokemon/variant/exp/888-crowned.json +++ b/public/images/pokemon/variant/exp/888-crowned.json @@ -3,8 +3,6 @@ "f2db8a": "a1c9cd", "8f4e2f": "2f4567", "d79a53": "5a829b", - "080808": "080808", - "000000": "000000", "3471b4": "b74323", "2d4377": "5c1a1d", "4999da": "ec813b", @@ -14,15 +12,12 @@ "fae2c0": "fff8cd", "d3a79a": "da9772", "34313e": "32171f", - "fdfdfd": "fdfdfd", "9d6862": "a85f49" }, "2": { "f2db8a": "c4826b", "8f4e2f": "692e47", "d79a53": "964c5c", - "080808": "080808", - "000000": "000000", "3471b4": "9fa7d0", "2d4377": "615c7e", "4999da": "e6ecff", @@ -32,7 +27,6 @@ "fae2c0": "3d5b72", "d3a79a": "243149", "34313e": "1a1829", - "fdfdfd": "fdfdfd", "9d6862": "1c2238" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/888.json b/public/images/pokemon/variant/exp/888.json index f949289b05b..4941ed244e1 100644 --- a/public/images/pokemon/variant/exp/888.json +++ b/public/images/pokemon/variant/exp/888.json @@ -1,7 +1,6 @@ { "1": { "2d4377": "5c1a1d", - "080808": "080808", "4999da": "ec813b", "3471b4": "b74323", "f45353": "448b48", @@ -10,13 +9,10 @@ "34313e": "32171f", "be3c45": "224d42", "93262f": "0d2729", - "fdfdfd": "fdfdfd", - "9d6862": "a85f49", - "000000": "000000" + "9d6862": "a85f49" }, "2": { "2d4377": "615c7e", - "080808": "080808", "4999da": "e6ecff", "3471b4": "9fa7d0", "f45353": "902d57", @@ -25,8 +21,6 @@ "34313e": "1a1829", "be3c45": "6c1d59", "93262f": "431042", - "fdfdfd": "fdfdfd", - "9d6862": "1c2238", - "000000": "000000" + "9d6862": "1c2238" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/889-crowned.json b/public/images/pokemon/variant/exp/889-crowned.json index 65bffb601fc..61ac4b3949b 100644 --- a/public/images/pokemon/variant/exp/889-crowned.json +++ b/public/images/pokemon/variant/exp/889-crowned.json @@ -1,7 +1,6 @@ { "1": { "2d2f7b": "102c2c", - "080808": "080808", "396dce": "70a757", "2d48a8": "3c6959", "8f4e2f": "2f4567", @@ -9,17 +8,14 @@ "d79a53": "5a829b", "eb363a": "614378", "fffccc": "d3eeea", - "000000": "000000", "731a27": "1c163d", "ae2836": "422b61", "34313e": "19142f", - "fdfdfd": "fdfdfd", "8887a8": "d69f97", "c2c3cf": "ffe0cc" }, "2": { "2d2f7b": "244e61", - "080808": "080808", "396dce": "6fc7c1", "2d48a8": "4797a4", "8f4e2f": "692e47", @@ -27,11 +23,9 @@ "d79a53": "964c5c", "eb363a": "e6ecff", "fffccc": "e5b885", - "000000": "000000", "731a27": "615c7e", "ae2836": "9fa7d0", "34313e": "19142f", - "fdfdfd": "fdfdfd", "8887a8": "442e49", "c2c3cf": "694f69" } diff --git a/public/images/pokemon/variant/exp/889.json b/public/images/pokemon/variant/exp/889.json index 0d3dbf024cb..3c172653f72 100644 --- a/public/images/pokemon/variant/exp/889.json +++ b/public/images/pokemon/variant/exp/889.json @@ -3,30 +3,24 @@ "2d2f7b": "102c2c", "396dce": "70a757", "2d48a8": "3c6959", - "080808": "080808", "f2db8a": "a1c9cd", "731a27": "1c163d", "eb363a": "614378", "ae2836": "422b61", "c2c3cf": "ffe0cc", - "000000": "000000", "8887a8": "d69f97", - "34313e": "19142f", - "fdfdfd": "fdfdfd" + "34313e": "19142f" }, "2": { "2d2f7b": "244e61", "396dce": "6fc7c1", "2d48a8": "4797a4", - "080808": "080808", "f2db8a": "c4826b", "731a27": "615c7e", "eb363a": "e6ecff", "ae2836": "9fa7d0", "c2c3cf": "694f69", - "000000": "000000", "8887a8": "442e49", - "34313e": "22192c", - "fdfdfd": "fdfdfd" + "34313e": "22192c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/890-eternamax.json b/public/images/pokemon/variant/exp/890-eternamax.json index 18f3ca3f097..6445f792042 100644 --- a/public/images/pokemon/variant/exp/890-eternamax.json +++ b/public/images/pokemon/variant/exp/890-eternamax.json @@ -1,7 +1,6 @@ { "1": { "25134c": "162a52", - "010101": "010101", "3622a7": "406d89", "6461ba": "4989a6", "31245f": "264864", @@ -14,7 +13,6 @@ }, "2": { "25134c": "354e95", - "010101": "010101", "3622a7": "bfd1fa", "6461ba": "e1ecff", "31245f": "87a3dd", diff --git a/public/images/pokemon/variant/exp/890.json b/public/images/pokemon/variant/exp/890.json index 781768fde0d..749b4491943 100644 --- a/public/images/pokemon/variant/exp/890.json +++ b/public/images/pokemon/variant/exp/890.json @@ -2,18 +2,14 @@ "2": { "26124d": "4963af", "3a15bc": "bfd1fa", - "010101": "010101", "b21833": "7b2f0e", "eb1533": "cb7622", "9a2433": "732208", "3d2871": "87a3dd", "f46d70": "f1bd4b", "fb2553": "934516", - "675cc5": "675cc5", "ffbcbc": "de9335", - "12042d": "12042d", "e22dbc": "298fb9", - "f18cd5": "73e5dc", - "fefefe": "fefefe" + "f18cd5": "73e5dc" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/891.json b/public/images/pokemon/variant/exp/891.json index e5eb250ad71..a8d182967a2 100644 --- a/public/images/pokemon/variant/exp/891.json +++ b/public/images/pokemon/variant/exp/891.json @@ -5,10 +5,7 @@ "b5ada6": "ad9a8a", "9194a2": "9e988d", "c9cccd": "c8c4c3", - "101010": "101010", "fbfbfb": "f4f4f4", - "262628": "262628", - "fefefe": "fefefe", "655e65": "5c5653", "cdab78": "c75d57", "f8f3a0": "f99350", @@ -21,14 +18,10 @@ "b5ada6": "475b68", "9194a2": "181b33", "c9cccd": "2e3549", - "101010": "101010", "fbfbfb": "444f5b", - "262628": "262628", - "fefefe": "fefefe", "655e65": "433e3f", "cdab78": "cd9e79", "f8f3a0": "f8cf9f", - "b37a55": "b37a55", "393539": "292124" }, "2": { @@ -37,10 +30,7 @@ "b5ada6": "a4a4bc", "9194a2": "7f1c27", "c9cccd": "a52139", - "101010": "101010", "fbfbfb": "d33b3d", - "262628": "262628", - "fefefe": "fefefe", "655e65": "8b8d99", "cdab78": "d6b58f", "f8f3a0": "ffe3ba", diff --git a/public/images/pokemon/variant/exp/892-rapid-strike.json b/public/images/pokemon/variant/exp/892-rapid-strike.json index f9609dbeb89..a0e80f70437 100644 --- a/public/images/pokemon/variant/exp/892-rapid-strike.json +++ b/public/images/pokemon/variant/exp/892-rapid-strike.json @@ -3,23 +3,17 @@ "4f4b58": "4a2e27", "8d8c8e": "957961", "6b6574": "725444", - "010101": "010101", "605f4d": "513b46", "282d26": "25141f", - "fcfcfc": "fcfcfc", - "b9b9b9": "b9b9b9", "9e6225": "8b222f", "fffa60": "ff9736", "d5a926": "b95826", - "42473a": "382334", - "b4b4b4": "b4b4b4", - "fefefe": "fefefe" + "42473a": "382334" }, "1": { "4f4b58": "263138", "8d8c8e": "809ba3", "6b6574": "4c6877", - "010101": "010101", "605f4d": "444f5b", "282d26": "181b33", "fcfcfc": "b3c0c6", @@ -27,15 +21,12 @@ "9e6225": "272735", "fffa60": "616368", "d5a926": "494b54", - "42473a": "2e3549", - "b4b4b4": "b4b4b4", - "fefefe": "fefefe" + "42473a": "2e3549" }, "2": { "4f4b58": "56546b", "8d8c8e": "e8e8ff", "6b6574": "a4a4bc", - "010101": "010101", "605f4d": "213199", "282d26": "07073f", "fcfcfc": "4169d3", @@ -43,8 +34,6 @@ "9e6225": "875537", "fffa60": "f7caa0", "d5a926": "cc9278", - "42473a": "111a6b", - "b4b4b4": "b4b4b4", - "fefefe": "fefefe" + "42473a": "111a6b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/892.json b/public/images/pokemon/variant/exp/892.json index cb7d7978b0a..7b2dd61bfdb 100644 --- a/public/images/pokemon/variant/exp/892.json +++ b/public/images/pokemon/variant/exp/892.json @@ -1,23 +1,17 @@ { "0": { "605f4d": "513b46", - "010101": "010101", - "fcfcfc": "fcfcfc", "4f4b58": "4a2e27", - "b9b9b9": "b9b9b9", "8d8c8e": "957961", "6b6574": "725444", "282d26": "25141f", "42473a": "382334", "9e6225": "8b222f", "fffa60": "ff9736", - "b4b4b4": "b4b4b4", - "d5a926": "b95826", - "fefefe": "fefefe" + "d5a926": "b95826" }, "1": { "605f4d": "444f5b", - "010101": "010101", "fcfcfc": "b3c0c6", "4f4b58": "263138", "b9b9b9": "768187", @@ -27,13 +21,10 @@ "42473a": "2e3549", "9e6225": "272735", "fffa60": "616368", - "b4b4b4": "b4b4b4", - "d5a926": "494b54", - "fefefe": "fefefe" + "d5a926": "494b54" }, "2": { "605f4d": "870e2a", - "010101": "010101", "fcfcfc": "d33b3d", "4f4b58": "56546b", "b9b9b9": "a52139", @@ -43,8 +34,6 @@ "42473a": "51081e", "9e6225": "875537", "fffa60": "f7caa0", - "b4b4b4": "b4b4b4", - "d5a926": "cc9278", - "fefefe": "fefefe" + "d5a926": "cc9278" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/896.json b/public/images/pokemon/variant/exp/896.json index 46c929da9e3..6684803c8a3 100644 --- a/public/images/pokemon/variant/exp/896.json +++ b/public/images/pokemon/variant/exp/896.json @@ -1,7 +1,6 @@ { "0": { "8cacdd": "8f84c9", - "101010": "101010", "bbd2ff": "b9abea", "eeeef3": "f6ebf6", "cbc1cc": "c9c0d4", @@ -13,7 +12,6 @@ }, "1": { "8cacdd": "41d5b3", - "101010": "101010", "bbd2ff": "9dffff", "eeeef3": "d7ffff", "cbc1cc": "90f6da", @@ -25,7 +23,6 @@ }, "2": { "8cacdd": "bc393b", - "101010": "101010", "bbd2ff": "f68c79", "eeeef3": "fde3d6", "cbc1cc": "f3bca6", diff --git a/public/images/pokemon/variant/exp/897.json b/public/images/pokemon/variant/exp/897.json index 4d99bd33678..491f1aeb1f0 100644 --- a/public/images/pokemon/variant/exp/897.json +++ b/public/images/pokemon/variant/exp/897.json @@ -1,20 +1,14 @@ { "0": { - "3c3c3c": "3c3c3c", - "101010": "101010", "525852": "5d5458", "00285c": "632741", "49478f": "894061", "7c5bcf": "d05a82", - "d9a4e3": "d9a4e3", - "fcfcfc": "fcfcfc", - "755179": "755179", "504e8e": "80447d", "8776e4": "b862b3" }, "1": { "3c3c3c": "622d51", - "101010": "101010", "525852": "904c75", "00285c": "6e1817", "49478f": "932f27", @@ -27,7 +21,6 @@ }, "2": { "3c3c3c": "3a6965", - "101010": "101010", "525852": "5c8a7b", "00285c": "0d2222", "49478f": "13312b", diff --git a/public/images/pokemon/variant/exp/898-ice.json b/public/images/pokemon/variant/exp/898-ice.json index fc6f15bc841..370e2e323f8 100644 --- a/public/images/pokemon/variant/exp/898-ice.json +++ b/public/images/pokemon/variant/exp/898-ice.json @@ -1,7 +1,6 @@ { "0": { "8cacdd": "8f84c9", - "101010": "101010", "bbd2ff": "b9abea", "004037": "00403c", "007766": "00776f", @@ -9,9 +8,7 @@ "eeeef3": "f6ebf6", "cbc1cc": "c9c0d4", "525852": "6a5837", - "fcfcfc": "fcfcfc", "d1c8be": "d7c881", - "c7c8cd": "c7c8cd", "9e8f87": "ae8b50", "003071": "2f104f", "6c6271": "68627a", @@ -22,7 +19,6 @@ }, "1": { "8cacdd": "41d5b3", - "101010": "101010", "bbd2ff": "9dffff", "004037": "00124d", "007766": "345ab5", @@ -30,9 +26,7 @@ "eeeef3": "d7ffff", "cbc1cc": "90f6da", "525852": "38255f", - "fcfcfc": "fcfcfc", "d1c8be": "ba9ded", - "c7c8cd": "c7c8cd", "9e8f87": "927ec4", "003071": "014837", "6c6271": "35486b", @@ -43,7 +37,6 @@ }, "2": { "8cacdd": "bc393b", - "101010": "101010", "bbd2ff": "f68c79", "004037": "3c1522", "007766": "88253e", diff --git a/public/images/pokemon/variant/exp/898-shadow.json b/public/images/pokemon/variant/exp/898-shadow.json index b4aad1b5ce9..981918477d5 100644 --- a/public/images/pokemon/variant/exp/898-shadow.json +++ b/public/images/pokemon/variant/exp/898-shadow.json @@ -2,21 +2,14 @@ "0": { "004037": "00403c", "007766": "00776f", - "3c3c3c": "3c3c3c", "00584b": "005852", - "101010": "101010", "525852": "5d5458", "00285c": "632741", - "fbfbfb": "fbfbfb", "4d524d": "6a5837", "d1c8be": "d7c881", "49478f": "894061", "7c5bcf": "d05a82", - "d9a4e3": "d9a4e3", "9e8f87": "ae8b50", - "c7c8cd": "c7c8cd", - "fcfcfc": "fcfcfc", - "755179": "755179", "4679b7": "3b2948", "00285b": "3b2948", "504e8e": "80447d", @@ -27,17 +20,14 @@ "007766": "345ab5", "3c3c3c": "622d51", "00584b": "183986", - "101010": "101010", "525852": "904c75", "00285c": "6e1817", - "fbfbfb": "fbfbfb", "4d524d": "38255f", "d1c8be": "ba9ded", "49478f": "932f27", "7c5bcf": "cc5837", "d9a4e3": "ff8478", "9e8f87": "927ec4", - "c7c8cd": "c7c8cd", "fcfcfc": "fff3c6", "755179": "a63938", "4679b7": "8d075a", @@ -50,7 +40,6 @@ "007766": "88253e", "3c3c3c": "3a6965", "00584b": "601b35", - "101010": "101010", "525852": "5c8a7b", "00285c": "0d2222", "fbfbfb": "fefdeb", diff --git a/public/images/pokemon/variant/exp/898.json b/public/images/pokemon/variant/exp/898.json index f22e19ed94d..b91fcf52a3d 100644 --- a/public/images/pokemon/variant/exp/898.json +++ b/public/images/pokemon/variant/exp/898.json @@ -6,9 +6,7 @@ "00584b": "005852", "007766": "00776f", "003a87": "71517a", - "101010": "101010", "615350": "6a5837", - "fcfcfc": "fcfcfc", "c7c8cd": "ccc6d1", "9e8f87": "ae8b50", "d1c8be": "d7c881", @@ -22,9 +20,7 @@ "00584b": "183986", "007766": "345ab5", "003a87": "c64883", - "101010": "101010", "615350": "38255f", - "fcfcfc": "fcfcfc", "c7c8cd": "ccc6d1", "9e8f87": "927ec4", "d1c8be": "ba9ded", @@ -38,7 +34,6 @@ "00584b": "601b35", "007766": "88253e", "003a87": "cc8c49", - "101010": "101010", "615350": "181935", "fcfcfc": "fefdeb", "c7c8cd": "c4bdb3", diff --git a/public/images/pokemon/variant/exp/900.json b/public/images/pokemon/variant/exp/900.json index 768fbad4452..c04f7f8c108 100644 --- a/public/images/pokemon/variant/exp/900.json +++ b/public/images/pokemon/variant/exp/900.json @@ -1,30 +1,17 @@ { "1": { - "412d2b": "412d2b", - "715f5d": "715f5d", - "574644": "574644", - "000000": "000000", "69441a": "221a69", "a77235": "354da7", "d29f4b": "4b84d2", - "ffffff": "ffffff", - "3f6378": "3f6378", - "ddf5ff": "ddf5ff", - "dab16e": "6e79da", - "f3e4c0": "f3e4c0" + "dab16e": "6e79da" }, "2": { "412d2b": "424242", "715f5d": "71705d", "574644": "808080", - "000000": "000000", "69441a": "a54200", "a77235": "e68400", "d29f4b": "ffde00", - "ffffff": "ffffff", - "3f6378": "3f6378", - "ddf5ff": "ddf5ff", - "dab16e": "dad46e", - "f3e4c0": "f3e4c0" + "dab16e": "dad46e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/901.json b/public/images/pokemon/variant/exp/901.json index 8c830cd27e3..14961e69576 100644 --- a/public/images/pokemon/variant/exp/901.json +++ b/public/images/pokemon/variant/exp/901.json @@ -4,18 +4,10 @@ "231a18": "0c1515", "63443d": "31563f", "502f29": "273b32", - "77655b": "77655b", - "0f0f0f": "0f0f0f", - "9c8d86": "9c8d86", - "4b4236": "4b4236", "ca8b35": "c48e81", "fec643": "f7eee1", - "fcfcfc": "fcfcfc", "25521f": "557f24", - "fec672": "f2cab8", - "7a1349": "7a1349", - "95908a": "95908a", - "b4b4b1": "b4b4b1" + "fec672": "f2cab8" }, "2": { "382423": "1e2249", @@ -23,16 +15,11 @@ "63443d": "46527a", "502f29": "323760", "77655b": "c199ae", - "0f0f0f": "0f0f0f", "9c8d86": "ede6eb", "4b4236": "593d4a", "ca8b35": "437aff", "fec643": "bfeeff", - "fcfcfc": "fcfcfc", "25521f": "f83259", - "fec672": "96b7ff", - "7a1349": "7a1349", - "95908a": "95908a", - "b4b4b1": "b4b4b1" + "fec672": "96b7ff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/903.json b/public/images/pokemon/variant/exp/903.json index 703b11b471a..baa290c16a3 100644 --- a/public/images/pokemon/variant/exp/903.json +++ b/public/images/pokemon/variant/exp/903.json @@ -2,7 +2,6 @@ "1": { "352d37": "113b69", "4e3f50": "136e81", - "101010": "101010", "4d4b65": "3a0f0e", "7a8eb1": "9f4c3d", "a2bddb": "bd795f", @@ -10,14 +9,12 @@ "a47b39": "6e6f6f", "fe2f29": "31dabb", "7e62b9": "722738", - "fcfcfc": "fcfcfc", "ecc733": "a7a7a7", "5e4181": "4b1320" }, "2": { "352d37": "601522", "4e3f50": "982e33", - "101010": "101010", "4d4b65": "0e2125", "7a8eb1": "194648", "a2bddb": "256258", diff --git a/public/images/pokemon/variant/exp/909.json b/public/images/pokemon/variant/exp/909.json index 0ea1af439d6..55e965387b4 100644 --- a/public/images/pokemon/variant/exp/909.json +++ b/public/images/pokemon/variant/exp/909.json @@ -9,16 +9,8 @@ "e85234": "366565", "baaeaa": "a4ba9e", "f4f4e4": "ffffff", - "000000": "000000", - "ffffff": "ffffff", - "4b4b4b": "4b4b4b", - "593b4b": "593b4b", - "876167": "876167", - "d39794": "d39794", "885c29": "63cbcb", - "cb9c3d": "8cd9d9", - "303239": "303239", - "777777": "777777" + "cb9c3d": "8cd9d9" }, "2": { "e2762d": "2ce455", @@ -26,19 +18,8 @@ "fcf676": "78ff99", "60182b": "162319", "ab3c28": "243929", - "77645e": "77645e", "e85234": "38583f", - "baaeaa": "baaeaa", - "f4f4e4": "f4f4e4", - "000000": "000000", - "ffffff": "ffffff", - "4b4b4b": "4b4b4b", - "593b4b": "593b4b", - "876167": "876167", - "d39794": "d39794", "885c29": "26c148", - "cb9c3d": "2ce455", - "303239": "303239", - "777777": "777777" + "cb9c3d": "2ce455" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/912.json b/public/images/pokemon/variant/exp/912.json index a374c871331..6dc013c4500 100644 --- a/public/images/pokemon/variant/exp/912.json +++ b/public/images/pokemon/variant/exp/912.json @@ -3,14 +3,12 @@ "1f5978": "8c3b14", "3686b1": "d96536", "2fbee8": "e69c51", - "0f0f0f": "0f0f0f", "84d7ff": "f7ca7b", "f2fdff": "fff0d4", "4d6373": "a05926", "f6fbfc": "ffe3b0", "becde4": "d79f63", "001b77": "7f0e0b", - "ffffff": "ffffff", "7999bd": "b17d4f", "005ba2": "a2301b", "6a6a41": "3b2e28", diff --git a/public/images/pokemon/variant/exp/913.json b/public/images/pokemon/variant/exp/913.json index ef10ed6c0e4..1626944ed42 100644 --- a/public/images/pokemon/variant/exp/913.json +++ b/public/images/pokemon/variant/exp/913.json @@ -6,12 +6,10 @@ "1e7cd3": "bd3c24", "304f5a": "62290c", "64d9ea": "ffb75c", - "0f0f0f": "0f0f0f", "4296a2": "f77122", "ab9a3a": "5b5450", "735c28": "3b2e28", "ffdf2b": "868382", - "ffffff": "ffffff", "535153": "975432", "fcfcfc": "ffe3b0", "af9aa5": "d79f63" diff --git a/public/images/pokemon/variant/exp/914.json b/public/images/pokemon/variant/exp/914.json index 88384878b7a..f17ee8abcc1 100644 --- a/public/images/pokemon/variant/exp/914.json +++ b/public/images/pokemon/variant/exp/914.json @@ -2,7 +2,6 @@ "2": { "3d7a71": "541222", "55dbe6": "f15e76", - "0f0f0f": "0f0f0f", "394bee": "1d6c42", "282a4d": "072a2b", "419bc2": "a22f49", @@ -13,11 +12,9 @@ "a24720": "eac7b4", "eda936": "ffa564", "803213": "4b251b", - "ffffff": "ffffff", "efffff": "4b40be", "cb7e29": "c76740", "8ea6a8": "3b188e", - "63797f": "120e4a", - "004040": "004040" + "63797f": "120e4a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/919.json b/public/images/pokemon/variant/exp/919.json index 2a5000c4454..aadaafcc570 100644 --- a/public/images/pokemon/variant/exp/919.json +++ b/public/images/pokemon/variant/exp/919.json @@ -2,7 +2,6 @@ "0": { "2f3342": "1a1815", "63738c": "4b453d", - "000000": "000000", "8291a6": "6c655c", "454b61": "302d27", "ada7b2": "a29d62", @@ -14,19 +13,14 @@ "1": { "2f3342": "162d2a", "63738c": "498f57", - "000000": "000000", "8291a6": "70ba74", "454b61": "295449", - "ada7b2": "ada7b2", - "dbdde1": "dbdde1", - "6c6473": "6c6473", "ffc608": "c54d2d", "ad8e13": "7f223a" }, "2": { "2f3342": "340f21", "63738c": "983444", - "000000": "000000", "8291a6": "c74d51", "454b61": "601c3a", "ada7b2": "333333", diff --git a/public/images/pokemon/variant/exp/920.json b/public/images/pokemon/variant/exp/920.json index 01685e97fbb..386572ef2b3 100644 --- a/public/images/pokemon/variant/exp/920.json +++ b/public/images/pokemon/variant/exp/920.json @@ -1,45 +1,33 @@ { "0": { "2c2c2c": "475316", - "d6dbdf": "d6dbdf", "5c5d5c": "dbcf15", - "000000": "000000", "484848": "8e931a", - "9d9fa4": "9d9fa4", "ae772a": "8c0325", "fca831": "c42929", "5b6671": "292929", - "ffffff": "ffffff", "3e454d": "1d1d1d", "778a99": "444444", "7d551e": "4d0517" }, "1": { "2c2c2c": "1e391b", - "d6dbdf": "d6dbdf", "5c5d5c": "529042", - "000000": "000000", "484848": "34642c", - "9d9fa4": "9d9fa4", "ae772a": "9b1515", "fca831": "c33c26", "5b6671": "676974", - "ffffff": "ffffff", "3e454d": "4b4d5c", "778a99": "919191", "7d551e": "550927" }, "2": { "2c2c2c": "47132c", - "d6dbdf": "d6dbdf", "5c5d5c": "b52828", - "000000": "000000", "484848": "791b2d", - "9d9fa4": "9d9fa4", "ae772a": "3a3476", "fca831": "2986c4", "5b6671": "525252", - "ffffff": "ffffff", "3e454d": "3b3b3b", "778a99": "858585", "7d551e": "1c1936" diff --git a/public/images/pokemon/variant/exp/934.json b/public/images/pokemon/variant/exp/934.json index 223fbcf5d0e..94d4cc8b4b0 100644 --- a/public/images/pokemon/variant/exp/934.json +++ b/public/images/pokemon/variant/exp/934.json @@ -4,7 +4,6 @@ "999797": "77595f", "ededed": "f9c2cd", "c1b9b9": "bc808c", - "000000": "000000", "6a4c37": "718491", "c8a085": "d8e9f5", "997862": "adbac3", @@ -22,7 +21,6 @@ "999797": "444251", "ededed": "9ba0a0", "c1b9b9": "6a6a72", - "000000": "000000", "6a4c37": "3d5e47", "c8a085": "7fc17c", "997862": "5d9157", diff --git a/public/images/pokemon/variant/exp/940.json b/public/images/pokemon/variant/exp/940.json index f5f5ae5663b..a21e494685c 100644 --- a/public/images/pokemon/variant/exp/940.json +++ b/public/images/pokemon/variant/exp/940.json @@ -1,7 +1,6 @@ { "1": { "1c1e22": "271945", - "000000": "000000", "3d4049": "4c4982", "7d5e1b": "1b9ea1", "c2a227": "5dd9c8", @@ -9,19 +8,15 @@ "292c32": "372b61", "666971": "595e99", "3f424b": "4a4780", - "ffffff": "ffffff", "8596b0": "e39fc5", "b06b38": "9a5fd9", - "000618": "000618", "704424": "433382", "ff9b37": "ce87fa", - "4fc6b4": "4fc6b4", "40434d": "754494", "af6a37": "413280" }, "2": { "1c1e22": "532d61", - "000000": "000000", "3d4049": "edc5c8", "7d5e1b": "8c2a55", "c2a227": "b3466a", @@ -29,10 +24,8 @@ "292c32": "e099a5", "666971": "f7dfdc", "3f424b": "ebc3c5", - "ffffff": "ffffff", "8596b0": "e39fc5", "b06b38": "57436e", - "000618": "000618", "704424": "2b2745", "ff9b37": "745b85", "4fc6b4": "ffcf4a", diff --git a/public/images/pokemon/variant/exp/941.json b/public/images/pokemon/variant/exp/941.json index 1c9bc304c35..0fc158976b0 100644 --- a/public/images/pokemon/variant/exp/941.json +++ b/public/images/pokemon/variant/exp/941.json @@ -1,19 +1,14 @@ { "1": { "825d21": "217991", - "000000": "000000", "ffcd37": "6ef5c8", "aa7e24": "3dd1cc", "34393f": "2b3863", "6c7177": "354c70", "26282c": "1f1d54", "8c898c": "9c5bd9", - "fdfdfd": "fdfdfd", - "1a1c1f": "1a1c1f", "73bbbf": "de82ff", "441e21": "d16492", - "0f0f0f": "0f0f0f", - "ebffff": "ebffff", "692a2f": "ff9ec6", "2b1717": "773185", "37415a": "55348a", @@ -21,19 +16,14 @@ }, "2": { "825d21": "8a2f62", - "000000": "000000", "ffcd37": "e3667d", "aa7e24": "c44f6c", "34393f": "f7bebe", "6c7177": "f7dfdc", "26282c": "e394a7", "8c898c": "cf7827", - "fdfdfd": "fdfdfd", - "1a1c1f": "1a1c1f", "73bbbf": "ffcf4a", "441e21": "51467a", - "0f0f0f": "0f0f0f", - "ebffff": "ebffff", "692a2f": "776294", "2b1717": "3a3466", "37415a": "723b80", diff --git a/public/images/pokemon/variant/exp/948.json b/public/images/pokemon/variant/exp/948.json index a99438ad7f8..bf353053172 100644 --- a/public/images/pokemon/variant/exp/948.json +++ b/public/images/pokemon/variant/exp/948.json @@ -7,7 +7,6 @@ "976924": "a50927", "ffec37": "ff6237", "fef8f5": "fff4f1", - "000000": "000000", "eaba2b": "b9352b", "d2bbac": "e2bea6", "886b59": "8d5740", @@ -22,7 +21,6 @@ "976924": "254087", "ffec37": "4b86bd", "fef8f5": "ffede5", - "000000": "000000", "eaba2b": "2e609b", "d2bbac": "d8bdab", "886b59": "ad927b", diff --git a/public/images/pokemon/variant/exp/949.json b/public/images/pokemon/variant/exp/949.json index 3a3c4564e11..7901f6a1c57 100644 --- a/public/images/pokemon/variant/exp/949.json +++ b/public/images/pokemon/variant/exp/949.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "282828": "33134d", "211f1f": "33134d", "404040": "4b3073", @@ -18,7 +17,6 @@ "cdae52": "0c4a83" }, "2": { - "000000": "000000", "282828": "460001", "211f1f": "460001", "404040": "70150e", diff --git a/public/images/pokemon/variant/exp/951.json b/public/images/pokemon/variant/exp/951.json index 7361474a6f3..979029a3c74 100644 --- a/public/images/pokemon/variant/exp/951.json +++ b/public/images/pokemon/variant/exp/951.json @@ -6,7 +6,6 @@ "2e302f": "1f0c17", "3f9a5f": "be8a84", "2f683c": "9d6b5b", - "0f0f0f": "0f0f0f", "5c7c5c": "4c292f", "79b97b": "704f4f", "a6b496": "facf81", @@ -22,13 +21,11 @@ "2e302f": "3b2e3a", "3f9a5f": "a78bdc", "2f683c": "7456a8", - "0f0f0f": "0f0f0f", "5c7c5c": "8e7eb1", "79b97b": "cfbfe6", "a6b496": "fa95d1", "acd2ae": "f8f3fe", "ff9115": "b6dfff", - "d06382": "d06382", "1c3520": "452a75" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/952.json b/public/images/pokemon/variant/exp/952.json index 5413205c023..a58d68c72a7 100644 --- a/public/images/pokemon/variant/exp/952.json +++ b/public/images/pokemon/variant/exp/952.json @@ -3,8 +3,6 @@ "294e25": "55321d", "51c444": "facf81", "3f8147": "d38c43", - "0f0f0f": "0f0f0f", - "1f1f1f": "1f1f1f", "641e1c": "8c2f0a", "a23424": "bb5a2b", "ef5131": "f8975d", @@ -12,11 +10,7 @@ "cdcdcd": "ffd2cc", "dd5800": "ffb676", "42804b": "9d6b5b", - "192021": "192021", - "fffff7": "fffff7", - "000000": "000000", "ee3131": "9d560e", - "eff3e6": "eff3e6", "e65a29": "c8833c", "ff9c18": "e4ce6d", "ffde52": "fffaa5", @@ -29,8 +23,6 @@ "294e25": "3f3399", "51c444": "90c3ea", "3f8147": "627bcd", - "0f0f0f": "0f0f0f", - "1f1f1f": "1f1f1f", "641e1c": "8c1f39", "a23424": "cb486d", "ef5131": "f77baf", @@ -38,11 +30,7 @@ "cdcdcd": "f8f3fe", "dd5800": "f597cf", "42804b": "9884d3", - "192021": "192021", - "fffff7": "fffff7", - "000000": "000000", "ee3131": "e03d64", - "eff3e6": "eff3e6", "e65a29": "f577a1", "ff9c18": "fa95d1", "ffde52": "fecff5", diff --git a/public/images/pokemon/variant/exp/953.json b/public/images/pokemon/variant/exp/953.json index 6f2885be607..2168de29c70 100644 --- a/public/images/pokemon/variant/exp/953.json +++ b/public/images/pokemon/variant/exp/953.json @@ -5,7 +5,6 @@ "c5b4aa": "d3e6e6", "37332b": "104139", "9e8360": "4059bd", - "0f0f0f": "0f0f0f", "575243": "18734a", "777462": "199e46", "afa668": "f9fba2", @@ -22,7 +21,6 @@ "c5b4aa": "39cfbc", "37332b": "261031", "9e8360": "dbedec", - "0f0f0f": "0f0f0f", "575243": "5e2d72", "777462": "8358a1", "afa668": "c9dbac", @@ -33,4 +31,4 @@ "4e4530": "534b8c", "ba6e29": "4792bd" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/954.json b/public/images/pokemon/variant/exp/954.json index 825973cc6b0..98eca52471d 100644 --- a/public/images/pokemon/variant/exp/954.json +++ b/public/images/pokemon/variant/exp/954.json @@ -4,7 +4,6 @@ "e11bff": "e1efff", "aa13b7": "a0a9da", "91263f": "87ceeb", - "000000": "000000", "ce2d6b": "fffd91", "ff4c90": "ffbc00", "ffd5e5": "fbf3ab", @@ -28,7 +27,6 @@ "e11bff": "9b2f17", "aa13b7": "6b1911", "91263f": "c65813", - "000000": "000000", "ce2d6b": "ded051", "ff4c90": "141031", "ffd5e5": "432f77", diff --git a/public/images/pokemon/variant/exp/962.json b/public/images/pokemon/variant/exp/962.json index 7f41b7aa01a..e64860b1a63 100644 --- a/public/images/pokemon/variant/exp/962.json +++ b/public/images/pokemon/variant/exp/962.json @@ -1,86 +1,40 @@ { "0": { - "030303": "030303", "44393e": "3e1d26", "997d85": "924f57", "efe3e3": "f6cbc4", "b6a2a7": "dd9f9d", - "000000": "000000", "65545b": "60354a", - "191717": "191717", "723139": "1f3078", "ffffff": "fceff1", "d65263": "4592c0", "a03e4b": "2e6fa8", "bcb1b9": "998482", - "050405": "050405", - "8c7987": "60354a", - "987d85": "987d85", - "987c84": "987c84", - "b5a1a6": "b5a1a6", - "66555c": "66555c", - "110e0f": "110e0f", - "efe2e3": "efe2e3", - "080607": "080607", - "eee2e2": "eee2e2", - "1b1919": "1b1919", - "b7a3a8": "b7a3a8", - "0d0a0c": "0d0a0c" + "8c7987": "60354a" }, "1": { - "030303": "030303", "44393e": "1e382a", "997d85": "404b22", "efe3e3": "e8e8c0", "b6a2a7": "c6ca8e", - "000000": "000000", "65545b": "395740", - "191717": "191717", "723139": "3e1e1d", "ffffff": "edf8e6", "d65263": "b37e6f", "a03e4b": "79433f", "bcb1b9": "6a856a", - "050405": "050405", - "8c7987": "26452d", - "987d85": "987d85", - "987c84": "987c84", - "b5a1a6": "b5a1a6", - "66555c": "66555c", - "110e0f": "110e0f", - "efe2e3": "efe2e3", - "080607": "080607", - "eee2e2": "eee2e2", - "1b1919": "1b1919", - "b7a3a8": "b7a3a8", - "0d0a0c": "0d0a0c" + "8c7987": "26452d" }, "2": { - "030303": "030303", "44393e": "754156", "997d85": "211f45", "efe3e3": "67548a", "b6a2a7": "453863", - "000000": "000000", "65545b": "a5777f", - "191717": "191717", "723139": "545151", "ffffff": "f7e5d0", "d65263": "aba7a8", "a03e4b": "888685", - "bcb1b9": "a96c4b", - "050405": "050405", - "8c7987": "8c7987", - "987d85": "987d85", - "987c84": "987c84", - "b5a1a6": "b5a1a6", - "66555c": "66555c", - "110e0f": "110e0f", - "efe2e3": "efe2e3", - "080607": "080607", - "eee2e2": "eee2e2", - "1b1919": "1b1919", - "b7a3a8": "b7a3a8", - "0d0a0c": "0d0a0c" + "bcb1b9": "a96c4b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/967.json b/public/images/pokemon/variant/exp/967.json index 212b46ad6f7..f0981eb020e 100644 --- a/public/images/pokemon/variant/exp/967.json +++ b/public/images/pokemon/variant/exp/967.json @@ -3,17 +3,10 @@ "1c2916": "272431", "384a35": "464354", "54654e": "67637a", - "b9b7b3": "b9b7b3", - "0f0f0f": "0f0f0f", "f16b32": "bead9d", "607d6d": "6e76a9", - "fcfcfc": "fcfcfc", "75b07d": "9299c7", "34453d": "444a71", - "4b565c": "4b565c", - "222328": "222328", - "323943": "323943", - "e2e9d7": "e2e9d7", "993832": "625549" }, "2": { @@ -21,10 +14,8 @@ "384a35": "5d0c0c", "54654e": "942d22", "b9b7b3": "c0ab8b", - "0f0f0f": "0f0f0f", "f16b32": "8c63d2", "607d6d": "6b2c31", - "fcfcfc": "fcfcfc", "75b07d": "a95d50", "34453d": "531d27", "4b565c": "815652", diff --git a/public/images/pokemon/variant/exp/968.json b/public/images/pokemon/variant/exp/968.json index 3abf6870ae9..1209b51c4a6 100644 --- a/public/images/pokemon/variant/exp/968.json +++ b/public/images/pokemon/variant/exp/968.json @@ -4,18 +4,9 @@ "c2544c": "4d7d3a", "f7645a": "5c9446", "fa968d": "72b657", - "73666a": "73666a", - "a09498": "a09498", - "cfcbc4": "cfcbc4", - "000000": "000000", - "fefefe": "fefefe", "22b5dd": "c1597d", "4b86a4": "a14363", - "bd5b4b": "4d7d3a", - "9b5746": "9b5746", - "fccdba": "fccdba", - "8b2c3d": "8b2c3d", - "d8816d": "d8816d" + "bd5b4b": "4d7d3a" }, "2": { "8f433f": "6f390d", @@ -25,14 +16,8 @@ "73666a": "676e74", "a09498": "a1a9ae", "cfcbc4": "dadae3", - "000000": "000000", - "fefefe": "fefefe", "22b5dd": "46de9b", "4b86a4": "3caf7c", - "bd5b4b": "ba7429", - "9b5746": "9b5746", - "fccdba": "fccdba", - "8b2c3d": "8b2c3d", - "d8816d": "d8816d" + "bd5b4b": "ba7429" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/969.json b/public/images/pokemon/variant/exp/969.json index 1d703142713..57ca9155f5f 100644 --- a/public/images/pokemon/variant/exp/969.json +++ b/public/images/pokemon/variant/exp/969.json @@ -12,7 +12,6 @@ "3d464b": "44111b", "4d6076": "6b1933", "ffff31": "dde4e6", - "0f0f0f": "0f0f0f", "5a869c": "bd2646", "635181": "527492", "453b4d": "2c445a", @@ -33,7 +32,6 @@ "3d464b": "2d293a", "4d6076": "433e53", "ffff31": "dde4e6", - "0f0f0f": "0f0f0f", "5a869c": "656b8b", "635181": "193a1c", "453b4d": "0d240f", diff --git a/public/images/pokemon/variant/exp/973.json b/public/images/pokemon/variant/exp/973.json index 47244e0779f..fe7d1be4ce5 100644 --- a/public/images/pokemon/variant/exp/973.json +++ b/public/images/pokemon/variant/exp/973.json @@ -1,56 +1,36 @@ { "0": { - "2c2936": "2c2936", - "211f28": "211f28", "3c3946": "404355", - "ffffff": "ffffff", "c4c1dc": "978f97", "ff79b1": "cfbbbc", "811f47": "7c6364", "ffe393": "e7a11f", "ffd55f": "d28011", - "3b3b3b": "3b3b3b", - "000000": "000000", "760c38": "540b1d", "c92f6e": "a7323f", "d43e7c": "988282", - "9c174e": "7d172b", - "3d3b4e": "3d3b4e" + "9c174e": "7d172b" }, "1": { - "2c2936": "2c2936", - "211f28": "211f28", - "3c3946": "3c3946", - "ffffff": "ffffff", - "c4c1dc": "c4c1dc", "ff79b1": "cb36b9", "811f47": "430855", "ffe393": "5fdd5b", "ffd55f": "289c43", - "3b3b3b": "3b3b3b", - "000000": "000000", "760c38": "660f71", "c92f6e": "b11468", "d43e7c": "911b92", - "9c174e": "700f49", - "3d3b4e": "3d3b4e" + "9c174e": "700f49" }, "2": { - "2c2936": "2c2936", - "211f28": "211f28", - "3c3946": "3c3946", "ffffff": "fbf2f4", "c4c1dc": "978f97", "ff79b1": "f29f5b", "811f47": "943615", "ffe393": "3175cb", "ffd55f": "2c3ca6", - "3b3b3b": "3b3b3b", - "000000": "000000", "760c38": "17167d", "c92f6e": "3175cb", "d43e7c": "d77433", - "9c174e": "2c3ca6", - "3d3b4e": "3d3b4e" + "9c174e": "2c3ca6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/974.json b/public/images/pokemon/variant/exp/974.json index fab4a8d61d1..bba74da0831 100644 --- a/public/images/pokemon/variant/exp/974.json +++ b/public/images/pokemon/variant/exp/974.json @@ -3,15 +3,11 @@ "736875": "8c2727", "bebaba": "ee9065", "524951": "661427", - "0f0f0f": "0f0f0f", "efefef": "ffcc9e", "a29793": "c85442", "a44667": "2c7193", "c7639c": "48aeba", "f493c9": "71e2d3", - "fcfcfc": "fcfcfc", - "c9c9c9": "c9c9c9", - "5e5e5e": "5e5e5e", "832041": "6a193e", "cd394a": "ac5070", "dc7569": "e37c8e" @@ -20,15 +16,11 @@ "736875": "1f355e", "bebaba": "2a607f", "524951": "172651", - "0f0f0f": "0f0f0f", "efefef": "438aa0", "a29793": "1c426b", "a44667": "ae664a", "c7639c": "daa470", "f493c9": "ffdfa1", - "fcfcfc": "fcfcfc", - "c9c9c9": "c9c9c9", - "5e5e5e": "5e5e5e", "832041": "433363", "cd394a": "775b8c", "dc7569": "a87fae" diff --git a/public/images/pokemon/variant/exp/975.json b/public/images/pokemon/variant/exp/975.json index 7ac0645ce57..e8d40f7aa90 100644 --- a/public/images/pokemon/variant/exp/975.json +++ b/public/images/pokemon/variant/exp/975.json @@ -1,6 +1,5 @@ { "1": { - "0f0f0f": "0f0f0f", "b6b6c0": "d85661", "555566": "660e45", "6a6069": "8c2727", @@ -13,11 +12,9 @@ "a44667": "2c7193", "f493c9": "71e2d3", "ded6c0": "db9b76", - "f7f6f2": "ffcfa8", - "fcfcfc": "fcfcfc" + "f7f6f2": "ffcfa8" }, "2": { - "0f0f0f": "0f0f0f", "b6b6c0": "ffe9d6", "555566": "a05c56", "6a6069": "121f43", @@ -30,7 +27,6 @@ "a44667": "ae664a", "f493c9": "ffdfa1", "ded6c0": "2b5a70", - "f7f6f2": "3a7687", - "fcfcfc": "fcfcfc" + "f7f6f2": "3a7687" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/981.json b/public/images/pokemon/variant/exp/981.json index 79ff9efd3ac..43071ff6ad6 100644 --- a/public/images/pokemon/variant/exp/981.json +++ b/public/images/pokemon/variant/exp/981.json @@ -7,13 +7,10 @@ "9ca0ab": "665144", "8b704c": "3d6186", "322513": "091e34", - "0f0f0f": "0f0f0f", "fff42f": "c29925", "b4ff68": "ff8f00", - "fcfcfc": "fcfcfc", "deb43d": "dec93d", "6aad21": "ffbd42", - "a8abb3": "a8abb3", "775c10": "774f10", "b1a75c": "7e262d", "3d680f": "be5302", @@ -35,13 +32,10 @@ "9ca0ab": "9c5978", "8b704c": "e4efcf", "322513": "337142", - "0f0f0f": "0f0f0f", "fff42f": "ed9233", "b4ff68": "dc7346", - "fcfcfc": "fcfcfc", "deb43d": "ebbb72", "6aad21": "d8975d", - "a8abb3": "a8abb3", "775c10": "b35127", "b1a75c": "1e7884", "3d680f": "953c2f", diff --git a/public/images/pokemon/variant/exp/982-three-segment.json b/public/images/pokemon/variant/exp/982-three-segment.json index beafe9763bc..eedc4163bc6 100644 --- a/public/images/pokemon/variant/exp/982-three-segment.json +++ b/public/images/pokemon/variant/exp/982-three-segment.json @@ -3,22 +3,18 @@ "206a83": "2a413f", "6abdcd": "748da4", "318ba4": "4a6165", - "101010": "101010", "735a41": "53575a", "f6e67b": "fdfdfd", "debd39": "aeaeae", "bd8b20": "757575", "5a6273": "5d6970", "d5e6f6": "c1d7e2", - "f6ffff": "f6ffff", - "fff6c5": "fdfdfd", - "000000": "000000" + "fff6c5": "fdfdfd" }, "2": { "206a83": "1d737a", "6abdcd": "b5f2ec", "318ba4": "38a8a6", - "101010": "101010", "735a41": "462a3e", "f6e67b": "db4069", "debd39": "a12e55", @@ -26,7 +22,6 @@ "5a6273": "5c4a4d", "d5e6f6": "ffd4ac", "f6ffff": "fdffdc", - "fff6c5": "e97798", - "000000": "000000" + "fff6c5": "e97798" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/982.json b/public/images/pokemon/variant/exp/982.json index 1237494d460..ac0864b8e6e 100644 --- a/public/images/pokemon/variant/exp/982.json +++ b/public/images/pokemon/variant/exp/982.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "6bbdce": "748da4", "318ca5": "4a6165", "735a42": "53575a", @@ -11,11 +10,9 @@ "5a6373": "5d6970", "fff7c5": "fdfdfd", "f7ffff": "f6ffff", - "bdcee6": "bdcee6", "216b84": "2a413f" }, "2": { - "101010": "101010", "6bbdce": "b5f2ec", "318ca5": "38a8a6", "735a42": "692342", diff --git a/public/images/pokemon/variant/exp/987.json b/public/images/pokemon/variant/exp/987.json index 6456e7153a4..c3514e5b78c 100644 --- a/public/images/pokemon/variant/exp/987.json +++ b/public/images/pokemon/variant/exp/987.json @@ -2,7 +2,6 @@ "0": { "8a378a": "9b490e", "ee93e8": "ffdd67", - "0f0f0f": "0f0f0f", "70bbb4": "5bb6ef", "4a83a4": "387fa7", "314a62": "244260", @@ -12,13 +11,11 @@ "a4295a": "cc762f", "b36cc1": "d3941a", "eee662": "ffc7ff", - "f9f9f9": "f9f9f9", "bd9431": "cb79dd" }, "1": { "8a378a": "0c8086", "ee93e8": "3df7ed", - "0f0f0f": "0f0f0f", "70bbb4": "eefff8", "4a83a4": "a1c8db", "314a62": "7396b4", @@ -28,13 +25,11 @@ "a4295a": "e28c27", "b36cc1": "1dbdb9", "eee662": "a6f0f8", - "f9f9f9": "f9f9f9", "bd9431": "66d0e5" }, "2": { "8a378a": "5d4a2f", "ee93e8": "fff7dd", - "0f0f0f": "0f0f0f", "70bbb4": "f8d371", "4a83a4": "e6aa47", "314a62": "b56f2a", @@ -44,7 +39,6 @@ "a4295a": "a62a21", "b36cc1": "eece8c", "eee662": "a6f0f8", - "f9f9f9": "f9f9f9", "bd9431": "66d0e5" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/988.json b/public/images/pokemon/variant/exp/988.json index 9e6c50e9d06..d3e7851e1fe 100644 --- a/public/images/pokemon/variant/exp/988.json +++ b/public/images/pokemon/variant/exp/988.json @@ -7,10 +7,6 @@ "d8a33f": "56e4ba", "d1fd77": "e2fd77", "f04137": "17b79f", - "35384f": "35384f", - "465175": "465175", - "f1f7f7": "f1f7f7", - "181820": "181820", "a9a9ab": "92c9b9", "ff3121": "2c9484", "e63529": "23ae9a", diff --git a/public/images/pokemon/variant/exp/993.json b/public/images/pokemon/variant/exp/993.json index 3a9ed405d1f..6a18ab70264 100644 --- a/public/images/pokemon/variant/exp/993.json +++ b/public/images/pokemon/variant/exp/993.json @@ -2,99 +2,53 @@ "1": { "272629": "754711", "47454a": "c59b4b", - "000000": "000000", "787578": "f8f5e2", "ff4dcb": "b7c6d6", "ff82db": "d9d9ea", "984983": "58585c", "ffe3ea": "f8f5f5", - "0d1e3d": "0d1e3d", "1f468f": "3c236a", "83a2e5": "c9b0f8", "3f7be5": "a58fcd", "3266d6": "8c6bac", "222421": "91988f", "2a66d6": "662ad6", - "2f2d2f": "2f2d2f", - "3c393c": "3c393c", - "2e2c2e": "2e2c2e", "316bda": "8931da", - "4a454a": "4a454a", "fa4dd6": "e3dde2", "ff5ade": "d6d3d5", "fc55db": "c1bbc0", "f84dd7": "c1b9bf", - "ff80db": "ff80db", - "494449": "494449", - "1d1f1b": "1d1f1b", - "242423": "242423", - "281d21": "281d21", - "ff51de": "ff51de", - "212421": "212421", - "342631": "342631", - "262829": "262829", "ffa8e6": "e5e4ea", "a95994": "aca5aa", "b42a8c": "7c7a7a", "9b2478": "454445", "454348": "c59b4b", "2b0b21": "070707", - "0f040c": "0f040c", - "6d1a55": "1c1b1b", - "2c1526": "2c1526", - "5d5255": "5d5255", - "373237": "373237", - "3d383c": "3d383c", - "161414": "161414", - "150a11": "150a11" + "6d1a55": "1c1b1b" }, "2": { "272629": "203c45", "47454a": "467678", - "000000": "000000", "787578": "a4bfbe", "ff4dcb": "e3bbd3", "ff82db": "f1d9e7", "984983": "873954", - "ffe3ea": "ffe3ea", "0d1e3d": "470e2c", "1f468f": "600f40", "83a2e5": "e583a5", "3f7be5": "8a143d", "3266d6": "ba1e51", - "222421": "222421", "2a66d6": "f1c4d4", - "2f2d2f": "2f2d2f", - "3c393c": "3c393c", - "2e2c2e": "2e2c2e", "316bda": "f1bdd8", - "4a454a": "4a454a", "fa4dd6": "f8d1de", "ff5ade": "f8e6ee", "fc55db": "f8eaf1", "f84dd7": "f8dfec", "ff80db": "ffe5f8", - "494449": "494449", - "1d1f1b": "1d1f1b", - "242423": "242423", - "281d21": "281d21", "ff51de": "f8e3f4", - "212421": "212421", - "342631": "342631", - "262829": "262829", "ffa8e6": "f8edf4", - "a95994": "a95994", "b42a8c": "c181a7", "9b2478": "83486b", - "454348": "454348", - "2b0b21": "2b0b21", - "0f040c": "0f040c", - "6d1a55": "4c1f39", - "2c1526": "2c1526", - "5d5255": "5d5255", - "373237": "373237", - "3d383c": "3d383c", - "161414": "161414", - "150a11": "150a11" + "6d1a55": "4c1f39" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/994.json b/public/images/pokemon/variant/exp/994.json index 273b6e6f0c7..ccc8125d86c 100644 --- a/public/images/pokemon/variant/exp/994.json +++ b/public/images/pokemon/variant/exp/994.json @@ -8,9 +8,7 @@ "626262": "696983", "5e2d4e": "ae7a24", "be5a83": "fdc263", - "181820": "181820", "874070": "d79a38", - "313139": "313139", "959595": "9b9bb6", "dbdadc": "d9d9ea", "36485a": "3f357c", diff --git a/public/images/pokemon/variant/exp/995.json b/public/images/pokemon/variant/exp/995.json index fa33051f318..cad805ca7ad 100644 --- a/public/images/pokemon/variant/exp/995.json +++ b/public/images/pokemon/variant/exp/995.json @@ -3,34 +3,21 @@ "3c571e": "4f4528", "c4de98": "f6eebd", "99c350": "ddcb86", - "000000": "000000", "78913e": "8d7f54", "15b372": "9d3eb9", - "211e1e": "211e1e", - "363735": "363735", - "453f3f": "453f3f", - "3e2a2a": "3e2a2a", "3af0a6": "ca72e4", "a2f4d2": "e9d7ee", - "4b792d": "7b6a31", - "332c2c": "332c2c", - "216645": "216645" + "4b792d": "7b6a31" }, "2": { "3c571e": "26292b", "c4de98": "949ca5", "99c350": "6b737b", - "000000": "000000", "78913e": "464b51", "15b372": "9a1f2c", - "211e1e": "211e1e", - "363735": "363735", - "453f3f": "453f3f", - "3e2a2a": "3e2a2a", "3af0a6": "d53143", "a2f4d2": "f3aebe", "4b792d": "383c40", - "332c2c": "332c2c", "216645": "ff4a73" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/996.json b/public/images/pokemon/variant/exp/996.json index 1281153af1e..79a6c40f295 100644 --- a/public/images/pokemon/variant/exp/996.json +++ b/public/images/pokemon/variant/exp/996.json @@ -4,7 +4,6 @@ "414949": "181f1f", "aab1b7": "325747", "8f99a3": "293b39", - "0f0f0f": "0f0f0f", "af9b0a": "3b69d3", "f9d800": "30d1ff", "dedfde": "b7926b", @@ -21,11 +20,9 @@ "414949": "2f2c38", "aab1b7": "e6e6eb", "8f99a3": "ceccef", - "0f0f0f": "0f0f0f", "af9b0a": "b4425a", "f9d800": "ff6767", "dedfde": "e6e6eb", - "9c979c": "9c979c", "8ebbb7": "ca6d2a", "c2e7e9": "fcb925", "769894": "79452f", diff --git a/public/images/pokemon/variant/exp/999.json b/public/images/pokemon/variant/exp/999.json index 584bf030851..821dabeeb70 100644 --- a/public/images/pokemon/variant/exp/999.json +++ b/public/images/pokemon/variant/exp/999.json @@ -11,7 +11,6 @@ "b53345": "794e83", "545b6b": "415073", "f0f3f8": "bac4d8", - "bac4d8": "bac4d8", "ab843f": "9c9cbe", "f7e077": "728295", "edce3d": "728295", @@ -34,7 +33,6 @@ "b53345": "bcb9d6", "545b6b": "6467a8", "f0f3f8": "bac4d8", - "bac4d8": "bac4d8", "ab843f": "b6d0d7", "f7e077": "4e85bf", "edce3d": "4e85bf", diff --git a/public/images/pokemon/variant/exp/back/1000.json b/public/images/pokemon/variant/exp/back/1000.json index 8149392d9b6..4f27d5ea595 100644 --- a/public/images/pokemon/variant/exp/back/1000.json +++ b/public/images/pokemon/variant/exp/back/1000.json @@ -1,7 +1,6 @@ { "0": { "b78234": "a64700", - "121212": "121212", "e0b81a": "d05c31", "f9d95b": "ee883f", "623c20": "6d1906", @@ -11,12 +10,10 @@ "762534": "5d0d05", "9c3e43": "6d1906", "323437": "531f03", - "545b6b": "8f4a14", - "0f0f0f": "0f0f0f" + "545b6b": "8f4a14" }, "1": { "b78234": "7a4e5d", - "121212": "121212", "e0b81a": "96747e", "f9d95b": "e1ced1", "623c20": "622f43", @@ -26,22 +23,18 @@ "762534": "513a59", "9c3e43": "7f6086", "323437": "1d2c54", - "545b6b": "415073", - "0f0f0f": "0f0f0f" + "545b6b": "415073" }, "2": { "b78234": "5a9aa3", - "121212": "121212", "e0b81a": "89d1d6", "f9d95b": "e5fffc", "623c20": "3d717b", - "ffffff": "ffffff", "b4a45e": "36465f", "918344": "1f3149", "762534": "547995", "9c3e43": "7e93b0", "323437": "212857", - "545b6b": "495890", - "0f0f0f": "0f0f0f" + "545b6b": "495890" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/1001.json b/public/images/pokemon/variant/exp/back/1001.json index 4aa4f62bf62..e98d729116e 100644 --- a/public/images/pokemon/variant/exp/back/1001.json +++ b/public/images/pokemon/variant/exp/back/1001.json @@ -7,7 +7,6 @@ "8c979d": "a19775", "a28b76": "383734", "7e615a": "1f1e1c", - "0f0f0f": "0f0f0f", "618044": "9e4b28", "76b458": "de7e52", "524a36": "6e4105", @@ -22,7 +21,6 @@ "8c979d": "9f88b3", "a28b76": "fce6f0", "7e615a": "e6aec8", - "0f0f0f": "0f0f0f", "618044": "e170a1", "76b458": "f5bede", "524a36": "420f0f", diff --git a/public/images/pokemon/variant/exp/back/1003.json b/public/images/pokemon/variant/exp/back/1003.json index 4498fa9e84b..85fb2a81be1 100644 --- a/public/images/pokemon/variant/exp/back/1003.json +++ b/public/images/pokemon/variant/exp/back/1003.json @@ -1,6 +1,5 @@ { "1": { - "0f0f0f": "0f0f0f", "73958b": "daa666", "486863": "be8550", "a6b4a7": "e7cb7e", @@ -16,7 +15,6 @@ "957560": "9c8e99" }, "2": { - "0f0f0f": "0f0f0f", "73958b": "8d6acc", "486863": "6c4aac", "a6b4a7": "cfa0f3", diff --git a/public/images/pokemon/variant/exp/back/1004.json b/public/images/pokemon/variant/exp/back/1004.json index 83b2909fe3c..8224e7f7f01 100644 --- a/public/images/pokemon/variant/exp/back/1004.json +++ b/public/images/pokemon/variant/exp/back/1004.json @@ -2,7 +2,6 @@ "1": { "a23724": "b06f00", "f4342f": "f2b200", - "0f0f0f": "0f0f0f", "f35e38": "ffc81b", "f9824f": "ffe13a", "f0a755": "ffe86b", @@ -13,13 +12,11 @@ "487447": "394d9a", "5b985a": "5c71c1", "83b884": "7a9ae0", - "3c3f3a": "27276a", - "f8f8f0": "f8f8f0" + "3c3f3a": "27276a" }, "2": { "a23724": "76074d", "f4342f": "a525d3", - "0f0f0f": "0f0f0f", "f35e38": "3449f6", "f9824f": "49c9f6", "f0a755": "79f6a1", @@ -30,7 +27,6 @@ "487447": "84736f", "5b985a": "b09f97", "83b884": "d7cbb5", - "3c3f3a": "4b4444", - "f8f8f0": "f8f8f0" + "3c3f3a": "4b4444" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/1008-ultimate-mode.json b/public/images/pokemon/variant/exp/back/1008-ultimate-mode.json index 9df2f7b0070..ca5aae27c1e 100644 --- a/public/images/pokemon/variant/exp/back/1008-ultimate-mode.json +++ b/public/images/pokemon/variant/exp/back/1008-ultimate-mode.json @@ -1,56 +1,43 @@ { "0": { "4ba5cf": "8955b5", - "fefefe": "fefefe", "d7c2c1": "d7c3f7", "c883d1": "7fd8cf", - "0e0e12": "0e0e12", "1a1c42": "393a3e", "fcdf14": "427eff", "5c4370": "393a3e", "4d3672": "858585", - "e6e3f2": "e6e3f2", - "878594": "878594", - "c1bddf": "c1bddf", "643fa3": "c8c8c8", "392855": "616161", - "2e3176": "616161", - "25173d": "25173d" + "2e3176": "616161" }, "1": { "4ba5cf": "31808e", "fefefe": "ffffc9", "d7c2c1": "b3e2d0", "c883d1": "ade263", - "0e0e12": "0e0e12", "1a1c42": "184433", "fcdf14": "2cc151", "5c4370": "3b5c63", "4d3672": "444b66", - "e6e3f2": "e6e3f2", "878594": "89a5ff", "c1bddf": "b7d8ff", "643fa3": "626877", "392855": "393e51", - "2e3176": "3aff75", - "25173d": "25173d" + "2e3176": "3aff75" }, "2": { "4ba5cf": "8e3c84", "fefefe": "ffd8ff", "d7c2c1": "ff93d4", "c883d1": "ffc26d", - "0e0e12": "0e0e12", "1a1c42": "192142", "fcdf14": "cc5767", - "5c4370": "5c4370", "4d3672": "2a3768", - "e6e3f2": "e6e3f2", "878594": "ad9e9d", "c1bddf": "e0e0e0", "643fa3": "3b4986", "392855": "29253f", - "2e3176": "cf3e57", - "25173d": "25173d" + "2e3176": "cf3e57" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/127-mega.json b/public/images/pokemon/variant/exp/back/127-mega.json index 855390b8f37..fa6cade9e21 100644 --- a/public/images/pokemon/variant/exp/back/127-mega.json +++ b/public/images/pokemon/variant/exp/back/127-mega.json @@ -4,33 +4,21 @@ "847163": "7e5649", "d6c7b5": "d29f88", "efe7ce": "eccb90", - "000000": "000000", - "ee8329": "ee8329", - "cd5241": "cd5241", "5a4131": "172a22", "c6ae8c": "72988e", "a58e6b": "54796f", "846952": "3b554d", - "ffde62": "ffde62", - "ac9441": "ac9441", - "837362": "7e5649", - "ffffff": "ffffff" + "837362": "7e5649" }, "2": { "4a4139": "484848", "847163": "868686", "d6c7b5": "d5d5d5", "efe7ce": "ffffff", - "000000": "000000", - "ee8329": "ee8329", - "cd5241": "cd5241", "5a4131": "5c0026", "c6ae8c": "d56a70", "a58e6b": "b44954", "846952": "8c2c40", - "ffde62": "ffde62", - "ac9441": "ac9441", - "837362": "868686", - "ffffff": "ffffff" + "837362": "868686" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/130-mega.json b/public/images/pokemon/variant/exp/back/130-mega.json index 1e091a7a55f..47217f75dc6 100644 --- a/public/images/pokemon/variant/exp/back/130-mega.json +++ b/public/images/pokemon/variant/exp/back/130-mega.json @@ -5,15 +5,10 @@ "44b4f4": "eea747", "826c4d": "90665d", "f8eaba": "fff3ec", - "0d0d0d": "0d0d0d", "cdac7b": "bd9b8e", "992137": "8691d5", "e6414a": "c9d4ff", - "202020": "202020", - "2b2d33": "682a23", - "3c3f47": "3c3f47", - "c3c3c3": "c3c3c3", - "202226": "202226" + "2b2d33": "682a23" }, "2": { "207cc1": "582c81", @@ -21,14 +16,10 @@ "44b4f4": "7b43a1", "826c4d": "855a71", "f8eaba": "ffedf4", - "0d0d0d": "0d0d0d", "cdac7b": "d7aec0", "992137": "a62869", "e6414a": "e15693", - "202020": "202020", - "2b2d33": "2b2d33", "3c3f47": "c07d4a", - "c3c3c3": "ddb07a", - "202226": "202226" + "c3c3c3": "ddb07a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/142-mega.json b/public/images/pokemon/variant/exp/back/142-mega.json index fd83d2d0958..2057e2a9ffb 100644 --- a/public/images/pokemon/variant/exp/back/142-mega.json +++ b/public/images/pokemon/variant/exp/back/142-mega.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "524273": "431e24", "484848": "922217", "adadd6": "b58788", @@ -19,7 +18,6 @@ "9483a4": "7e494f" }, "2": { - "101010": "101010", "524273": "374451", "484848": "20606b", "adadd6": "cae0ec", diff --git a/public/images/pokemon/variant/exp/back/150-mega-x.json b/public/images/pokemon/variant/exp/back/150-mega-x.json index 6c5bdf7a533..c569c53cebc 100644 --- a/public/images/pokemon/variant/exp/back/150-mega-x.json +++ b/public/images/pokemon/variant/exp/back/150-mega-x.json @@ -1,25 +1,20 @@ { "1": { "7a7a99": "a66b8e", - "101010": "101010", "dadaf2": "ffb5d6", "34344d": "5a2952", "acacbf": "db8aaf", "461f59": "105144", "9643bf": "379e8a", - "f8f8f8": "f8f8f8", - "55a4f2": "55a4f2", "6e318c": "1d6153" }, "2": { "7a7a99": "d68f40", - "101010": "101010", "dadaf2": "ffdd98", "34344d": "884c17", "acacbf": "edaf5b", "461f59": "6b2619", "9643bf": "ac4f4b", - "f8f8f8": "f8f8f8", "55a4f2": "da2e29", "6e318c": "6b2619" } diff --git a/public/images/pokemon/variant/exp/back/181-mega.json b/public/images/pokemon/variant/exp/back/181-mega.json index 372b0fe3b3c..6a7c6384ef8 100644 --- a/public/images/pokemon/variant/exp/back/181-mega.json +++ b/public/images/pokemon/variant/exp/back/181-mega.json @@ -2,7 +2,6 @@ "1": { "626a6a": "58341f", "ffffff": "fff1d0", - "101010": "101010", "b4b4bd": "ebbb78", "c54100": "e28f09", "835a31": "49200d", @@ -10,15 +9,12 @@ "e6e6e6": "f1cd8d", "ffc510": "8d472a", "ffee4a": "b36d49", - "000000": "000000", "8b2000": "9b5000", - "ff6200": "ffe85a", - "5a0000": "5a0000" + "ff6200": "ffe85a" }, "2": { "626a6a": "5d412a", "ffffff": "fff1d0", - "101010": "101010", "b4b4bd": "ebbb78", "c54100": "d26b00", "835a31": "49200d", diff --git a/public/images/pokemon/variant/exp/back/2027.json b/public/images/pokemon/variant/exp/back/2027.json index 04686fda98b..bffe4327837 100644 --- a/public/images/pokemon/variant/exp/back/2027.json +++ b/public/images/pokemon/variant/exp/back/2027.json @@ -4,23 +4,17 @@ "354e73": "752e42", "b6dbe7": "ffdac2", "84b3ce": "d27c80", - "fefefe": "fefefe", - "101010": "101010", "897e67": "aaaa96", "fefea9": "fffffc", - "d1c592": "d3d3c6", - "000000": "000000" + "d1c592": "d3d3c6" }, "2": { "518d9f": "6a439e", "354e73": "3d2c78", "b6dbe7": "dbb1eb", "84b3ce": "a87bcf", - "fefefe": "fefefe", - "101010": "101010", "897e67": "2e163d", "fefea9": "6f3480", - "d1c592": "44225a", - "000000": "000000" + "d1c592": "44225a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/2028.json b/public/images/pokemon/variant/exp/back/2028.json index 19710fd1b41..6a47ecacf45 100644 --- a/public/images/pokemon/variant/exp/back/2028.json +++ b/public/images/pokemon/variant/exp/back/2028.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "3a6b8c": "692a61", "f1f1f4": "fffffc", "b0e5f8": "fffed9", @@ -13,11 +12,9 @@ "b7e3e7": "ffb59e", "606060": "6f525d", "bdbdcd": "d0c0b6", - "9994b6": "8d6e6f", - "000000": "000000" + "9994b6": "8d6e6f" }, "2": { - "101010": "101010", "3a6b8c": "3c2d74", "f1f1f4": "e3f0ff", "b0e5f8": "f8f5b0", @@ -30,7 +27,6 @@ "b7e3e7": "5f2e71", "606060": "3a3a54", "bdbdcd": "acb7d0", - "9994b6": "7d83a4", - "000000": "000000" + "9994b6": "7d83a4" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/2052.json b/public/images/pokemon/variant/exp/back/2052.json index 31bcb35f0dc..e999d332c83 100644 --- a/public/images/pokemon/variant/exp/back/2052.json +++ b/public/images/pokemon/variant/exp/back/2052.json @@ -1,12 +1,10 @@ { "1": { "45505f": "8c583b", - "0a0a0a": "0a0a0a", "91a3bf": "ffda5c", "627986": "de974e", "995433": "493473", "262b3c": "41185e", - "f3f3f3": "f3f3f3", "e3cc2b": "a66db5", "ca833c": "7a519a", "798071": "7a4888", @@ -15,12 +13,10 @@ }, "2": { "45505f": "271420", - "0a0a0a": "0a0a0a", "91a3bf": "7c4e42", "627986": "5f3036", "995433": "45328e", "262b3c": "1d1b33", - "f3f3f3": "f3f3f3", "e3cc2b": "b5b8f9", "ca833c": "7b7fda", "798071": "5f5c7e", diff --git a/public/images/pokemon/variant/exp/back/2053.json b/public/images/pokemon/variant/exp/back/2053.json index f833d9b1dd2..fe218ea1564 100644 --- a/public/images/pokemon/variant/exp/back/2053.json +++ b/public/images/pokemon/variant/exp/back/2053.json @@ -1,18 +1,14 @@ { "1": { - "0a0a0a": "0a0a0a", "45505f": "8c583b", "627986": "de974e", "262b3c": "41185e", - "99abc9": "ffda5c", - "080808": "080808" + "99abc9": "ffda5c" }, "2": { - "0a0a0a": "0a0a0a", "45505f": "271420", "627986": "5f3036", "262b3c": "150e1c", - "99abc9": "7c4e42", - "080808": "080808" + "99abc9": "7c4e42" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/212-mega.json b/public/images/pokemon/variant/exp/back/212-mega.json index 4ec3ab904a9..ae127ee48c5 100644 --- a/public/images/pokemon/variant/exp/back/212-mega.json +++ b/public/images/pokemon/variant/exp/back/212-mega.json @@ -3,48 +3,21 @@ "622929": "215a2d", "a42929": "2f794e", "d53939": "4a9c53", - "101010": "101010", - "9494a4": "9494a4", - "ffffff": "ffffff", - "b4b4cd": "b4b4cd", - "39394a": "39394a", - "b0b0c8": "b0b0c8", - "000000": "000000", - "3b3b4c": "3b3b4c", - "006f8a": "006f8a", - "00cad2": "00cad2", - "878791": "878791", "f66a6a": "8cce73" }, "1": { "622929": "2f2962", "a42929": "29429c", "d53939": "4263ef", - "101010": "101010", - "9494a4": "9494a4", - "ffffff": "ffffff", - "b4b4cd": "b4b4cd", - "39394a": "39394a", - "b0b0c8": "b0b0c8", - "000000": "000000", - "3b3b4c": "3b3b4c", - "006f8a": "006f8a", - "00cad2": "00cad2", - "878791": "878791", "f66a6a": "639cf7" }, "2": { "622929": "645117", "a42929": "b88619", "d53939": "ffca2a", - "101010": "101010", "9494a4": "3c4543", - "ffffff": "ffffff", "b4b4cd": "cdccb4", "39394a": "2b2b38", - "b0b0c8": "b0b0c8", - "000000": "000000", - "3b3b4c": "3b3b4c", "006f8a": "645117", "00cad2": "f4e920", "878791": "3c4543", diff --git a/public/images/pokemon/variant/exp/back/229-mega.json b/public/images/pokemon/variant/exp/back/229-mega.json index 817dd33272c..21f5f27a708 100644 --- a/public/images/pokemon/variant/exp/back/229-mega.json +++ b/public/images/pokemon/variant/exp/back/229-mega.json @@ -1,41 +1,32 @@ { "1": { "83738b": "7c323c", - "000000": "000000", "ffffff": "f3bd87", "a49cac": "a84b50", "cdd5d5": "c87966", "182029": "321b32", "313139": "553454", "4a4a52": "76546b", - "010101": "010101", - "f8f9ff": "f8f9ff", "e14825": "9f94cc", "ce0a10": "455d92", "6a211f": "314075", "e89368": "c1c2e8", "f69c83": "f8f1e7", "622910": "77545b", - "0f0f0f": "0f0f0f", "c5cdd1": "bbc3ce", "a45a4a": "ceb0a5", "ffe0b3": "eef5ff", - "e2e0e3": "e2e0e3", - "830c28": "830c28", - "f7f7f7": "f7f7f7", "af1b1b": "aa8c82", "732422": "856458" }, "2": { "83738b": "121d3c", - "000000": "000000", "ffffff": "5c8d95", "a49cac": "223657", "cdd5d5": "38576c", "182029": "321b32", "313139": "b1a3b1", "4a4a52": "f8faf3", - "010101": "010101", "f8f9ff": "223657", "e14825": "2582ce", "ce0a10": "e58142", @@ -43,13 +34,10 @@ "e89368": "4ad1de", "f69c83": "72557e", "622910": "321b32", - "0f0f0f": "0f0f0f", "c5cdd1": "100f27", "a45a4a": "533960", "ffe0b3": "a9f8ef", - "e2e0e3": "e2e0e3", "830c28": "a5657c", - "f7f7f7": "f7f7f7", "af1b1b": "534b6a", "732422": "423655" } diff --git a/public/images/pokemon/variant/exp/back/248-mega.json b/public/images/pokemon/variant/exp/back/248-mega.json index f5b58bf5f10..ef0f1ce5485 100644 --- a/public/images/pokemon/variant/exp/back/248-mega.json +++ b/public/images/pokemon/variant/exp/back/248-mega.json @@ -1,28 +1,26 @@ { "1": { "171717": "101010", - "4a5a39": "533334", - "4b5a3b": "533334", - "727272": "727272", - "801c17": "004194", - "922d00": "004194", - "ce283d": "006fb3", - "d35200": "0098fc", - "729a62": "915957", - "739c62": "915957", - "aacb9a": "c78482" + "4a5a39": "533334", + "4b5a3b": "533334", + "801c17": "004194", + "922d00": "004194", + "ce283d": "006fb3", + "d35200": "0098fc", + "729a62": "915957", + "739c62": "915957", + "aacb9a": "c78482" }, "2": { - "171717": "101010", - "4a5a39": "06092f", - "4b5a3b": "06092f", - "727272": "727272", - "801c17": "ee7b06", - "922d00": "ee7b06", - "ce283d": "ffa904", - "d35200": "ffa904", - "729a62": "2c3071", - "739c62": "2c3071", - "aacb9a": "625695" + "171717": "101010", + "4a5a39": "06092f", + "4b5a3b": "06092f", + "801c17": "ee7b06", + "922d00": "ee7b06", + "ce283d": "ffa904", + "d35200": "ffa904", + "729a62": "2c3071", + "739c62": "2c3071", + "aacb9a": "625695" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/257-mega.json b/public/images/pokemon/variant/exp/back/257-mega.json index 7f2925da1d9..7dea77ff45a 100644 --- a/public/images/pokemon/variant/exp/back/257-mega.json +++ b/public/images/pokemon/variant/exp/back/257-mega.json @@ -9,7 +9,6 @@ "ff9a7f": "fff185", "f0a010": "94f1d8", "ee6262": "f7ca4b", - "000000": "000000", "e55858": "51b5cd", "bd4141": "da8923", "fff188": "ecfff8", @@ -29,7 +28,6 @@ "ff9a7f": "fffce9", "f0a010": "7747bf", "ee6262": "fffae1", - "000000": "000000", "e55858": "c6e6ff", "bd4141": "d2bda7", "fff188": "c6fffd", diff --git a/public/images/pokemon/variant/exp/back/282-mega.json b/public/images/pokemon/variant/exp/back/282-mega.json index 37bf55e1bc2..dcf8bc62a1e 100644 --- a/public/images/pokemon/variant/exp/back/282-mega.json +++ b/public/images/pokemon/variant/exp/back/282-mega.json @@ -6,7 +6,6 @@ "7888b0": "d59c80", "e8e8f8": "f8efde", "b0f090": "fff1c0", - "000000": "000000", "c8c8e0": "ffc4a6", "f87890": "ca2033", "d04870": "da3e4f", @@ -20,11 +19,7 @@ "307840": "242746", "88e088": "3f427f", "70b870": "282c5d", - "7888b0": "7888b0", - "e8e8f8": "e8e8f8", "b0f090": "5b5790", - "000000": "000000", - "c8c8e0": "c8c8e0", "f87890": "b62fa8", "d04870": "d846c1", "802848": "9e2a7c", diff --git a/public/images/pokemon/variant/exp/back/302-mega.json b/public/images/pokemon/variant/exp/back/302-mega.json index 5540f0ec64f..3d2f5c62fb1 100644 --- a/public/images/pokemon/variant/exp/back/302-mega.json +++ b/public/images/pokemon/variant/exp/back/302-mega.json @@ -5,7 +5,6 @@ "ff4a5a": "e945af", "cc3f7c": "b22391", "393952": "123812", - "000000": "000000", "aca4f6": "b2ca9b", "5a4a94": "416a3d", "8b73d5": "86ad74", @@ -19,7 +18,6 @@ "ff4a5a": "236dbc", "cc3f7c": "153db2", "393952": "580a16", - "000000": "000000", "aca4f6": "e0604e", "5a4a94": "7e141c", "8b73d5": "be3933", diff --git a/public/images/pokemon/variant/exp/back/303-mega.json b/public/images/pokemon/variant/exp/back/303-mega.json index 476ffab4228..509921b315c 100644 --- a/public/images/pokemon/variant/exp/back/303-mega.json +++ b/public/images/pokemon/variant/exp/back/303-mega.json @@ -1,34 +1,25 @@ { "1": { - "000000": "000000", "737373": "347c7d", "9ca494": "4fa285", "4a4a4a": "193e49", "7b5a29": "6b5424", "ffc55a": "d6c491", - "ffffff": "ffffff", - "cdcdcd": "cdcdcd", "984868": "b43929", "b86088": "ff625a", - "de9441": "de9441", - "484848": "484848", "9c4a6a": "23445e", "bd628b": "397189", "732041": "162843" }, "2": { - "000000": "000000", "737373": "347c7d", "9ca494": "4fa285", "4a4a4a": "193e49", "7b5a29": "6b5424", "ffc55a": "d6c491", - "ffffff": "ffffff", - "cdcdcd": "cdcdcd", "984868": "b43929", "b86088": "ff625a", "de9441": "bc8a52", - "484848": "484848", "9c4a6a": "23445e", "bd628b": "397189", "732041": "162843" diff --git a/public/images/pokemon/variant/exp/back/308-mega.json b/public/images/pokemon/variant/exp/back/308-mega.json index b13332e5183..cb5df2710f6 100644 --- a/public/images/pokemon/variant/exp/back/308-mega.json +++ b/public/images/pokemon/variant/exp/back/308-mega.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "83414a": "59141d", "e6738b": "a53835", "b44a5a": "83272c", @@ -8,7 +7,6 @@ "bdafad": "a5829d", "52414a": "432641", "e7e3e7": "e0cdd9", - "f9f8f7": "f9f8f7", "a47329": "722966", "eebd5a": "a25793", "f6de83": "ee9bd5", @@ -16,7 +14,6 @@ "42a2bd": "efa360" }, "2": { - "101010": "101010", "83414a": "461f5d", "e6738b": "7d5187", "b44a5a": "633971", diff --git a/public/images/pokemon/variant/exp/back/310-mega.json b/public/images/pokemon/variant/exp/back/310-mega.json index 8ab3d0646dc..b0be523f618 100644 --- a/public/images/pokemon/variant/exp/back/310-mega.json +++ b/public/images/pokemon/variant/exp/back/310-mega.json @@ -4,30 +4,23 @@ "998c4c": "630013", "ffe566": "d4302a", "d9c357": "a6101a", - "101010": "101010", "2a474d": "0d1843", "82cad9": "4c7da6", "548e99": "284781", "69b1bf": "3e6194", - "3f6a73": "1a3269", - "ff7373": "ff7373", - "f8f8f8": "f8f8f8", - "cc2929": "cc2929", - "8c3f3f": "8c3f3f" + "3f6a73": "1a3269" }, "2": { "736a3f": "810040", "998c4c": "a40f5a", "ffe566": "e545b6", "d9c357": "c32574", - "101010": "101010", "2a474d": "3f5476", "82cad9": "c1ddeb", "548e99": "92b4cb", "69b1bf": "b3d1e5", "3f6a73": "6f8caa", "ff7373": "8f60ef", - "f8f8f8": "f8f8f8", "cc2929": "893edf", "8c3f3f": "4a0698" } diff --git a/public/images/pokemon/variant/exp/back/354-mega.json b/public/images/pokemon/variant/exp/back/354-mega.json index d335b807b07..3eb77e2f06a 100644 --- a/public/images/pokemon/variant/exp/back/354-mega.json +++ b/public/images/pokemon/variant/exp/back/354-mega.json @@ -6,7 +6,6 @@ "eebd5a": "b78d90", "4d464f": "592145", "d59c39": "7d656d", - "010101": "010101", "685f6b": "6c2f4c", "7c777d": "934861", "a47b10": "533c4e", @@ -21,7 +20,6 @@ "eebd5a": "4d4f5b", "4d464f": "5b777b", "d59c39": "3b3d54", - "010101": "010101", "685f6b": "71a680", "7c777d": "9cbf81", "a47b10": "373c56", diff --git a/public/images/pokemon/variant/exp/back/362-mega.json b/public/images/pokemon/variant/exp/back/362-mega.json index 2f3d13a6944..244a1c96aeb 100644 --- a/public/images/pokemon/variant/exp/back/362-mega.json +++ b/public/images/pokemon/variant/exp/back/362-mega.json @@ -1,7 +1,6 @@ { "1": { "393941": "050832", - "010101": "010101", "2b74a8": "84073c", "bbeeff": "f9383e", "7dbbee": "b7113a", @@ -13,7 +12,6 @@ }, "2": { "393941": "221315", - "010101": "010101", "2b74a8": "0c4b3a", "bbeeff": "5ce11a", "7dbbee": "009325", diff --git a/public/images/pokemon/variant/exp/back/373-mega.json b/public/images/pokemon/variant/exp/back/373-mega.json index abf1ab30827..0f9d275e792 100644 --- a/public/images/pokemon/variant/exp/back/373-mega.json +++ b/public/images/pokemon/variant/exp/back/373-mega.json @@ -13,7 +13,6 @@ "545a5a": "a45f28", "e6e6df": "fcfcfc", "758888": "839494", - "acaca4": "acaca4", "e0e0d8": "fcfcfc" }, "2": { diff --git a/public/images/pokemon/variant/exp/back/376-mega.json b/public/images/pokemon/variant/exp/back/376-mega.json index 02307c25471..1f9fbff63d9 100644 --- a/public/images/pokemon/variant/exp/back/376-mega.json +++ b/public/images/pokemon/variant/exp/back/376-mega.json @@ -6,9 +6,7 @@ "313962": "550611", "736a73": "a76911", "cdcdcd": "ffe07c", - "acacac": "ffc753", - "101010": "101010", - "ffffff": "ffffff" + "acacac": "ffc753" }, "2": { "416294": "1e716e", @@ -17,8 +15,6 @@ "313962": "0b3739", "736a73": "9f4219", "cdcdcd": "ffc16a", - "acacac": "f57e37", - "101010": "101010", - "ffffff": "ffffff" + "acacac": "f57e37" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/380-mega.json b/public/images/pokemon/variant/exp/back/380-mega.json index 8d973cabd59..63483e791ba 100644 --- a/public/images/pokemon/variant/exp/back/380-mega.json +++ b/public/images/pokemon/variant/exp/back/380-mega.json @@ -3,7 +3,6 @@ "7474a6": "9a6853", "f2f2ff": "f3e6df", "adadd9": "b48f79", - "101010": "101010", "cecef2": "e3cfc1", "483f73": "713004", "8777d9": "d08528", @@ -13,7 +12,6 @@ "7474a6": "8d5a8f", "f2f2ff": "eedaea", "adadd9": "c78ac4", - "101010": "101010", "cecef2": "e4c7e1", "483f73": "15707d", "8777d9": "5de2d5", diff --git a/public/images/pokemon/variant/exp/back/381-mega.json b/public/images/pokemon/variant/exp/back/381-mega.json index 5b676558d13..30fe8a74fa5 100644 --- a/public/images/pokemon/variant/exp/back/381-mega.json +++ b/public/images/pokemon/variant/exp/back/381-mega.json @@ -3,7 +3,6 @@ "7474a6": "7e447b", "f2f2ff": "f9cfed", "adadd9": "b673ad", - "101010": "101010", "cecef2": "dfa1d2", "483f73": "29165d", "8777d9": "453c90", @@ -13,7 +12,6 @@ "7474a6": "98485e", "f2f2ff": "f7d9ec", "adadd9": "d086ac", - "101010": "101010", "cecef2": "e4abcc", "483f73": "52060f", "8777d9": "97241f", diff --git a/public/images/pokemon/variant/exp/back/382-primal.json b/public/images/pokemon/variant/exp/back/382-primal.json index 68a374ee080..2a278ceb80c 100644 --- a/public/images/pokemon/variant/exp/back/382-primal.json +++ b/public/images/pokemon/variant/exp/back/382-primal.json @@ -1,15 +1,8 @@ { "1": { - "5a526b": "5a526b", - "101010": "101010", "322e78": "f08d2a", - "cebdce": "cebdce", - "dedede": "dedede", "7eaecc": "ff3200", - "9c8c94": "9c8c94", "8b7fad": "f3bb49", - "90a2c0": "90a2c0", - "d3e6f4": "d3e6f4", "a43162": "c62e22", "fbec99": "e1ff9f", "6d5e94": "f3bb49", @@ -23,22 +16,12 @@ "fadbb3": "a2ee62", "294c60": "a30d25", "27245e": "d96714", - "74659d": "f3bb49", - "373384": "373384", - "e8e3e8": "e8e3e8", - "34607a": "34607a" + "74659d": "f3bb49" }, "2": { - "5a526b": "5a526b", - "101010": "101010", "322e78": "a90e14", - "cebdce": "cebdce", - "dedede": "dedede", "7eaecc": "ffc546", - "9c8c94": "9c8c94", "8b7fad": "ea512b", - "90a2c0": "90a2c0", - "d3e6f4": "d3e6f4", "a43162": "4139d2", "fbec99": "90ffde", "6d5e94": "ea512b", @@ -52,9 +35,6 @@ "fadbb3": "67a6f4", "294c60": "be5809", "27245e": "780613", - "74659d": "ea512b", - "373384": "373384", - "e8e3e8": "e8e3e8", - "34607a": "34607a" + "74659d": "ea512b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/383-primal.json b/public/images/pokemon/variant/exp/back/383-primal.json index ccecac7c2ac..4ccfac83fdb 100644 --- a/public/images/pokemon/variant/exp/back/383-primal.json +++ b/public/images/pokemon/variant/exp/back/383-primal.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "7b2129": "10371a", "9c2929": "135121", "ff736b": "419e49", @@ -8,12 +7,8 @@ "957346": "ff8571", "f2d259": "ffd493", "bd3131": "2b5b32", - "343434": "343434", - "695a5b": "695a5b", - "887981": "887981", "3a3a3a": "343434", "632329": "032a10", - "f6e08c": "f6e08c", "7e2d2d": "10371a", "736363": "695a5b", "94848c": "887981", @@ -21,14 +16,11 @@ "c92c33": "2b5b32", "a03131": "135121", "d5736d": "419e49", - "bdbdd5": "bdbdd5", - "f2f2f2": "f2f2f2", "ad9ca5": "49c74f", "ffffff": "f2f2f2", "bdbdd6": "bdbdd5" }, "2": { - "000000": "000000", "7b2129": "20516c", "9c2929": "2f6e85", "ff736b": "4daab4", @@ -49,8 +41,6 @@ "c92c33": "3e8b9f", "a03131": "2f6e85", "d5736d": "4daab4", - "bdbdd5": "bdbdd5", - "f2f2f2": "f2f2f2", "ad9ca5": "68cfd0", "ffffff": "f2f2f2", "bdbdd6": "bdbdd5" diff --git a/public/images/pokemon/variant/exp/back/384-mega.json b/public/images/pokemon/variant/exp/back/384-mega.json index 016c044b27f..9ee39a2621c 100644 --- a/public/images/pokemon/variant/exp/back/384-mega.json +++ b/public/images/pokemon/variant/exp/back/384-mega.json @@ -3,7 +3,6 @@ "fbe27e": "90f25d", "fc9436": "3dc62f", "836231": "064c1e", - "010101": "010101", "f6de00": "4ff869", "c5a400": "27c750", "3d7d6d": "66637b", @@ -11,14 +10,12 @@ "22523e": "333554", "e4b629": "27c750", "60d293": "e4e0ee", - "3f3f3f": "333554", - "fcfcfc": "fcfcfc" + "3f3f3f": "333554" }, "2": { "fbe27e": "17e2d6", "fc9436": "098faf", "836231": "121d31", - "010101": "010101", "f6de00": "17e2d6", "c5a400": "098faf", "3d7d6d": "84120f", @@ -26,7 +23,6 @@ "22523e": "650f04", "e4b629": "098faf", "60d293": "f18c5e", - "3f3f3f": "380100", - "fcfcfc": "fcfcfc" + "3f3f3f": "380100" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/4052.json b/public/images/pokemon/variant/exp/back/4052.json index ac18fada19c..eeaa3c4840f 100644 --- a/public/images/pokemon/variant/exp/back/4052.json +++ b/public/images/pokemon/variant/exp/back/4052.json @@ -1,24 +1,16 @@ { "1": { - "181a1d": "181a1d", "272d2e": "342b49", - "0a0a0a": "0a0a0a", "3d4547": "4e385a", - "000000": "000000", "5b4e43": "57567e", "ada09a": "c3c5d4", - "262b3c": "262b3c", "84726f": "7b7aa5" }, "2": { - "181a1d": "181a1d", "272d2e": "234a56", - "0a0a0a": "0a0a0a", "3d4547": "417778", - "000000": "000000", "5b4e43": "171127", "ada09a": "603b54", - "262b3c": "262b3c", "84726f": "3c2841" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/4077.json b/public/images/pokemon/variant/exp/back/4077.json index cbd88a9fa88..02424269ac2 100644 --- a/public/images/pokemon/variant/exp/back/4077.json +++ b/public/images/pokemon/variant/exp/back/4077.json @@ -10,7 +10,6 @@ "ded5ae": "5b93cc", "ffffe3": "8cd8ff", "a3a49f": "355699", - "101010": "101010", "59237e": "312c49", "78499b": "514766" }, @@ -25,7 +24,6 @@ "ded5ae": "cc66cc", "ffffe3": "ff99dd", "a3a49f": "7a3d99", - "101010": "101010", "59237e": "312c49", "78499b": "514766" } diff --git a/public/images/pokemon/variant/exp/back/4078.json b/public/images/pokemon/variant/exp/back/4078.json index 9c680e6fad1..644385dd72a 100644 --- a/public/images/pokemon/variant/exp/back/4078.json +++ b/public/images/pokemon/variant/exp/back/4078.json @@ -2,15 +2,12 @@ "1": { "44bf75": "cc9470", "85fabf": "ffd9a5", - "2b3055": "2b3055", "109865": "995944", "737ba4": "514766", "ffffe3": "8cd8ff", "8e38c1": "990c00", "de9fff": "ff884c", "c566e3": "cc4328", - "0c0c0c": "0c0c0c", - "ffffff": "ffffff", "414a83": "312c49", "ded5ae": "5b93cc", "636357": "192666", @@ -20,15 +17,12 @@ "2": { "44bf75": "cc1e4c", "85fabf": "ff3255", - "2b3055": "2b3055", "109865": "990f3d", "737ba4": "514766", "ffffe3": "ff99dd", "8e38c1": "161f4c", "de9fff": "483e7c", "c566e3": "282866", - "0c0c0c": "0c0c0c", - "ffffff": "ffffff", "414a83": "312c49", "ded5ae": "cc66cc", "636357": "361e66", diff --git a/public/images/pokemon/variant/exp/back/4079.json b/public/images/pokemon/variant/exp/back/4079.json index 5dd35eec151..b66ac41a38c 100644 --- a/public/images/pokemon/variant/exp/back/4079.json +++ b/public/images/pokemon/variant/exp/back/4079.json @@ -6,13 +6,10 @@ "fefe3c": "ffeccb", "caaa2c": "edc59e", "ac4152": "613934", - "101010": "101010", "7b2031": "452a29", "8b5a18": "a84071", "ffe6b4": "ff9eba", - "dea462": "e0799c", - "fcfcfc": "fcfcfc", - "d5cdcd": "d5cdcd" + "dea462": "e0799c" }, "2": { "de627b": "c6aead", @@ -21,12 +18,9 @@ "fefe3c": "d9736b", "caaa2c": "963e59", "ac4152": "846467", - "101010": "101010", "7b2031": "503941", "8b5a18": "a45c58", "ffe6b4": "efc697", - "dea462": "cb8f75", - "fcfcfc": "fcfcfc", - "d5cdcd": "d5cdcd" + "dea462": "cb8f75" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/4199.json b/public/images/pokemon/variant/exp/back/4199.json index 9b0e2810a2e..07911b965be 100644 --- a/public/images/pokemon/variant/exp/back/4199.json +++ b/public/images/pokemon/variant/exp/back/4199.json @@ -1,7 +1,6 @@ { "1": { "493e66": "821d2a", - "101010": "101010", "a191b5": "de504e", "7a6a98": "ad3139", "413668": "622344", @@ -13,13 +12,11 @@ "7b2645": "573531", "d76792": "8f5345", "f985aa": "bb694b", - "f8f8f8": "f8f8f8", "c89a51": "a84254", "eed583": "c75865" }, "2": { "493e66": "2a6122", - "101010": "101010", "a191b5": "b0dc72", "7a6a98": "71ae48", "413668": "1d4c46", @@ -31,7 +28,6 @@ "7b2645": "856568", "d76792": "c6aead", "f985aa": "ecdcbe", - "f8f8f8": "f8f8f8", "c89a51": "2a4948", "eed583": "4b7569" } diff --git a/public/images/pokemon/variant/exp/back/4222.json b/public/images/pokemon/variant/exp/back/4222.json index 4bfc486bcf6..0ae78cfbd22 100644 --- a/public/images/pokemon/variant/exp/back/4222.json +++ b/public/images/pokemon/variant/exp/back/4222.json @@ -7,7 +7,6 @@ "756868": "097f8d", "af9e9e": "44a0af", "9c94a3": "58929f", - "101010": "101010", "cbc2d1": "a9e4e3", "fbf2ff": "d4fefe", "e3c4f2": "d7d2f6" @@ -20,7 +19,6 @@ "756868": "8d6573", "af9e9e": "b0919b", "9c94a3": "4b1f28", - "101010": "101010", "cbc2d1": "773050", "fbf2ff": "874059", "e3c4f2": "567f83" diff --git a/public/images/pokemon/variant/exp/back/4263.json b/public/images/pokemon/variant/exp/back/4263.json index e6b49ad751f..29c046cf394 100644 --- a/public/images/pokemon/variant/exp/back/4263.json +++ b/public/images/pokemon/variant/exp/back/4263.json @@ -1,21 +1,14 @@ { "1": { - "010101": "010101", "5b5958": "397e4a", "60656a": "1c8155", "b2b3b2": "a3ce9e", "3e4042": "01473a", "f5f5f6": "f5ffea", "1b2627": "002121", - "d94a7f": "d94a7f", - "fcfcfc": "fcfcfc", - "ee96b2": "ee96b2", - "6e3b51": "6e3b51", - "9b4f69": "9b4f69", "000000": "010101" }, "2": { - "010101": "010101", "5b5958": "100d2d", "60656a": "8e5aef", "b2b3b2": "201b47", @@ -23,7 +16,6 @@ "f5f5f6": "3c335d", "1b2627": "201b47", "d94a7f": "0099ce", - "fcfcfc": "fcfcfc", "ee96b2": "54f1ff", "6e3b51": "004a8b", "9b4f69": "0099ce", diff --git a/public/images/pokemon/variant/exp/back/4264.json b/public/images/pokemon/variant/exp/back/4264.json index 8aec39c06cf..c266ecb7aa4 100644 --- a/public/images/pokemon/variant/exp/back/4264.json +++ b/public/images/pokemon/variant/exp/back/4264.json @@ -1,30 +1,24 @@ { "1": { - "010101": "010101", "abadaf": "95c090", "797570": "579666", "414141": "1c8155", - "1c1917": "1c1917", "f5f5f6": "f5ffea", "bc3065": "d414dd", "322c29": "01473a", "ff4e89": "ff69fa", "68696a": "27323a", - "949496": "3d494e", - "000000": "000000" + "949496": "3d494e" }, "2": { - "010101": "010101", "abadaf": "1e1a3b", "797570": "302373", "414141": "7c4cd6", - "1c1917": "1c1917", "f5f5f6": "342d4c", "bc3065": "0099ce", "322c29": "412991", "ff4e89": "54f1ff", "68696a": "2a1b4e", - "949496": "554576", - "000000": "000000" + "949496": "554576" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/428-mega.json b/public/images/pokemon/variant/exp/back/428-mega.json index 3a5b2345189..c95bd9b7366 100644 --- a/public/images/pokemon/variant/exp/back/428-mega.json +++ b/public/images/pokemon/variant/exp/back/428-mega.json @@ -9,7 +9,6 @@ "624a41": "660a38", "c55a7b": "7f4c99", "7b3941": "472866", - "101010": "101010", "232323": "0d0b16", "414141": "161626" }, @@ -23,7 +22,6 @@ "624a41": "65597f", "c55a7b": "cc4328", "7b3941": "990c00", - "101010": "101010", "232323": "191933", "414141": "312c49" } diff --git a/public/images/pokemon/variant/exp/back/445-mega.json b/public/images/pokemon/variant/exp/back/445-mega.json index 8020a5f4255..24c8dc9a9a3 100644 --- a/public/images/pokemon/variant/exp/back/445-mega.json +++ b/public/images/pokemon/variant/exp/back/445-mega.json @@ -7,18 +7,12 @@ "404088": "19446e", "5860a8": "33719e", "7878c8": "65a2d5", - "101010": "101010", "c09010": "3aadc5", "f8d018": "42d6de", "b83840": "b23219", - "ffffff": "ffffff", - "707880": "707880", - "c0c8d0": "c0c8d0", "e04830": "ec642c", "581000": "502209", "7b7bcd": "65a2d5", - "c5cdd5": "c5cdd5", - "737b83": "737b83", "000000": "101010" }, "1": { @@ -29,18 +23,12 @@ "404088": "b67252", "5860a8": "deae7a", "7878c8": "f2d8aa", - "101010": "101010", "c09010": "255dd7", "f8d018": "4caaff", "b83840": "9fb6bf", - "ffffff": "ffffff", - "707880": "707880", - "c0c8d0": "c0c8d0", "e04830": "dce8e8", "581000": "393648", "7b7bcd": "f2d8aa", - "c5cdd5": "c5cdd5", - "737b83": "737b83", "000000": "101010" }, "2": { @@ -51,18 +39,12 @@ "404088": "152c3b", "5860a8": "2f434b", "7878c8": "689099", - "101010": "101010", "c09010": "23b8a8", "f8d018": "6fe6a3", "b83840": "b23219", - "ffffff": "ffffff", - "707880": "707880", - "c0c8d0": "c0c8d0", "e04830": "ec642c", "581000": "521000", "7b7bcd": "689099", - "c5cdd5": "c5cdd5", - "737b83": "737b83", "000000": "101010" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/448-mega.json b/public/images/pokemon/variant/exp/back/448-mega.json index fcfe9ece33c..fb44fc447ec 100644 --- a/public/images/pokemon/variant/exp/back/448-mega.json +++ b/public/images/pokemon/variant/exp/back/448-mega.json @@ -3,42 +3,32 @@ "104878": "6c3e20", "4898e8": "e2ce75", "287098": "a56d2f", - "111111": "111111", "383838": "2c2f4c", "585858": "3a5376", "393939": "2c2f4c", - "d0d0d0": "d0d0d0", "5a5a5a": "454764", - "ffffff": "ffffff", "a03030": "8a332f", "d84040": "d85e40", "732222": "8a332f", "a43131": "d85e40", "b4b462": "51689c", "b0b060": "51689c", - "dddddd": "dddddd", "868640": "384876", "e6e69c": "719cbe", - "888888": "888888", "e0e098": "719cbe", "29739c": "a56d2f", - "104a7b": "104a7b", - "4a9cee": "e2ce75", - "a86060": "a86060" + "4a9cee": "e2ce75" }, "1": { "104878": "3f0916", "4898e8": "b85251", "287098": "7f1e2f", - "111111": "111111", "383838": "202931", "585858": "444b4b", "393939": "2d3740", "d0d0d0": "bb711c", "5a5a5a": "354149", "ffffff": "e8a02b", - "a03030": "a03030", - "d84040": "d84040", "732222": "bba597", "a43131": "ecdfd0", "b4b462": "ad826b", @@ -46,38 +36,30 @@ "dddddd": "bb711c", "868640": "825646", "e6e69c": "e2cab0", - "888888": "888888", "e0e098": "e2cab0", "29739c": "7f1e2f", "104a7b": "8e2929", - "4a9cee": "b85251", - "a86060": "a86060" + "4a9cee": "b85251" }, "2": { "104878": "442864", "4898e8": "735c9e", "287098": "513674", - "111111": "111111", "383838": "2c2339", "585858": "453a5a", "393939": "2c2339", - "d0d0d0": "d0d0d0", "5a5a5a": "3b2e47", - "ffffff": "ffffff", "a03030": "a53c18", "d84040": "de8141", "732222": "a53c18", "a43131": "de8141", "b4b462": "373566", "b0b060": "373566", - "dddddd": "dddddd", "868640": "1a1c3b", "e6e69c": "51668e", - "888888": "888888", "e0e098": "51668e", "29739c": "513674", "104a7b": "442864", - "4a9cee": "735c9e", - "a86060": "a86060" + "4a9cee": "735c9e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/4562.json b/public/images/pokemon/variant/exp/back/4562.json index 9e8c1bee22e..5dd509b1345 100644 --- a/public/images/pokemon/variant/exp/back/4562.json +++ b/public/images/pokemon/variant/exp/back/4562.json @@ -2,10 +2,8 @@ "1": { "313131": "145555", "525252": "257e6a", - "101010": "101010", "672b82": "7e173e", "ab38d1": "b0264c", - "371d3f": "371d3f", "6f5c6b": "743949", "e6ddde": "d6b8a0", "927e8d": "a46361", @@ -14,10 +12,8 @@ "2": { "313131": "69162c", "525252": "90222b", - "101010": "101010", "672b82": "57a0b9", "ab38d1": "c2ffe2", - "371d3f": "371d3f", "6f5c6b": "0a4340", "e6ddde": "4fb66a", "927e8d": "1f6455", diff --git a/public/images/pokemon/variant/exp/back/531-mega.json b/public/images/pokemon/variant/exp/back/531-mega.json index 7bc420db09e..1436a7c609d 100644 --- a/public/images/pokemon/variant/exp/back/531-mega.json +++ b/public/images/pokemon/variant/exp/back/531-mega.json @@ -2,25 +2,21 @@ "1": { "80734d": "7c4b3b", "ffecb2": "fff6f0", - "101010": "101010", "ccb87a": "d6bfb4", "b35968": "b64231", "ffbfca": "f5a779", "737373": "6b0a46", "bfbfbf": "cc3a74", - "f8f8f8": "f0728d", - "000000": "000000" + "f8f8f8": "f0728d" }, "2": { "80734d": "09232a", "ffecb2": "4bb9a6", - "101010": "101010", "ccb87a": "29878f", "b35968": "a0602f", "ffbfca": "f6e3a8", "737373": "111322", "bfbfbf": "202537", - "f8f8f8": "323c52", - "000000": "000000" + "f8f8f8": "323c52" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/6-mega-y.json b/public/images/pokemon/variant/exp/back/6-mega-y.json index fa5dede4662..6d67dd05e03 100644 --- a/public/images/pokemon/variant/exp/back/6-mega-y.json +++ b/public/images/pokemon/variant/exp/back/6-mega-y.json @@ -2,7 +2,6 @@ "1": { "e64210": "5033ce", "843119": "552982", - "000000": "000000", "ffd610": "e9bfff", "ef8429": "b27cbc", "f7a510": "9e59db", @@ -11,10 +10,7 @@ "cd5241": "8053b2", "ee8329": "b27cbc", "efb55a": "d8a3e2", - "cecece": "cecece", "217394": "41a86e", - "ffffff": "ffffff", - "efde7b": "fae5ff", - "636363": "636363" + "efde7b": "fae5ff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/6100.json b/public/images/pokemon/variant/exp/back/6100.json index a5ba1a41917..5113ce4930c 100644 --- a/public/images/pokemon/variant/exp/back/6100.json +++ b/public/images/pokemon/variant/exp/back/6100.json @@ -5,11 +5,7 @@ "ec6f00": "69a6b4", "dc5d00": "598195", "c04a1c": "4e6170", - "101010": "101010", - "fefefe": "fefefe", - "ddccc8": "ddccc8", "f3d181": "c9cdd6", - "ded5d5": "ded5d5", "d9a866": "a5aab7", "b8752e": "838797" }, @@ -19,11 +15,7 @@ "ec6f00": "a62833", "dc5d00": "8f1b2c", "c04a1c": "72142b", - "101010": "101010", - "fefefe": "fefefe", - "ddccc8": "ddccc8", "f3d181": "502b32", - "ded5d5": "ded5d5", "d9a866": "3a272e", "b8752e": "2d2327" } diff --git a/public/images/pokemon/variant/exp/back/6101.json b/public/images/pokemon/variant/exp/back/6101.json index be75bac4e8e..f645b0ba303 100644 --- a/public/images/pokemon/variant/exp/back/6101.json +++ b/public/images/pokemon/variant/exp/back/6101.json @@ -2,29 +2,22 @@ "1": { "845c35": "373e4c", "f3d181": "c9cdd6", - "101010": "101010", "d9a866": "a5aab7", "a9763d": "838797", "c04a1c": "386583", "dc5d00": "5e8494", "ec6f00": "69a6b4", "7c2506": "2e333b", - "cdcdde": "cdcdde", - "fefefe": "fefefe", "6f625e": "373e4c" }, "2": { "845c35": "231b20", "f3d181": "5e343c", - "101010": "101010", "d9a866": "452d35", "a9763d": "35262c", "c04a1c": "72142b", "dc5d00": "582b39", "ec6f00": "a62833", - "7c2506": "4a061d", - "cdcdde": "cdcdde", - "fefefe": "fefefe", - "6f625e": "6f625e" + "7c2506": "4a061d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/6215.json b/public/images/pokemon/variant/exp/back/6215.json index a66e3780d12..a0485ed67c5 100644 --- a/public/images/pokemon/variant/exp/back/6215.json +++ b/public/images/pokemon/variant/exp/back/6215.json @@ -6,12 +6,9 @@ "956cbe": "31dabb", "514a80": "402010", "dcdbf7": "d0b3a4", - "080808": "080808", "28234b": "220d0a", "7d6ca4": "672e26", "584d80": "401914", - "f6f6ff": "f6f6ff", - "bdbdc5": "bdbdc5", "c52973": "ea903f" }, "2": { @@ -21,12 +18,9 @@ "956cbe": "cc5427", "514a80": "14273a", "dcdbf7": "60ae7e", - "080808": "080808", "28234b": "0a191e", "7d6ca4": "395962", "584d80": "1c3942", - "f6f6ff": "f6f6ff", - "bdbdc5": "bdbdc5", "c52973": "f49633" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/653.json b/public/images/pokemon/variant/exp/back/653.json index f7761fa32b1..acbc4c24d67 100644 --- a/public/images/pokemon/variant/exp/back/653.json +++ b/public/images/pokemon/variant/exp/back/653.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "736028": "9f398a", "ffd659": "e190c3", "ccab47": "c35ba3", @@ -12,7 +11,6 @@ "f8f8f8": "fbecff" }, "2": { - "101010": "101010", "736028": "172547", "ffd659": "3a6a93", "ccab47": "264166", diff --git a/public/images/pokemon/variant/exp/back/654.json b/public/images/pokemon/variant/exp/back/654.json index 0f3b2bf3d4e..98273b9be27 100644 --- a/public/images/pokemon/variant/exp/back/654.json +++ b/public/images/pokemon/variant/exp/back/654.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "736028": "061530", "ffd659": "b55390", "ccab47": "872b59", @@ -11,14 +10,11 @@ "737373": "5c255f", "bfbfbf": "c093c3", "804913": "c5b3ca", - "262626": "262626", - "404040": "404040", "f8cf52": "80f37b", "ffc000": "4fcb61", "ff8700": "207d4e" }, "2": { - "101010": "101010", "736028": "061530", "ffd659": "2b5f8a", "ccab47": "173864", @@ -29,8 +25,6 @@ "737373": "75553c", "bfbfbf": "d4b996", "804913": "098794", - "262626": "262626", - "404040": "404040", "f8cf52": "c858a4", "ffc000": "75308e", "ff8700": "521364" diff --git a/public/images/pokemon/variant/exp/back/6549.json b/public/images/pokemon/variant/exp/back/6549.json index 4c50a4187b3..970b5a100a4 100644 --- a/public/images/pokemon/variant/exp/back/6549.json +++ b/public/images/pokemon/variant/exp/back/6549.json @@ -2,7 +2,6 @@ "1": { "70365a": "29547d", "ff84bd": "73bad9", - "101010": "101010", "bd59a2": "5094c0", "315a31": "5a5a2c", "bda452": "77909a", @@ -10,27 +9,20 @@ "39ac39": "bfd17f", "526229": "80152b", "ffbbdb": "b5ddea", - "fdfdfd": "fdfdfd", "4a834a": "8e954d", "9cb462": "bd2d40", - "c5ee7b": "ef5755", - "cdc5bd": "cdc5bd" + "c5ee7b": "ef5755" }, "2": { "70365a": "8a1a3c", "ff84bd": "e8617a", - "101010": "101010", "bd59a2": "d64065", "315a31": "643312", - "bda452": "bda452", - "ffde41": "ffde41", "39ac39": "ebc460", "526229": "351c49", "ffbbdb": "f38e9c", - "fdfdfd": "fdfdfd", "4a834a": "9d7d45", "9cb462": "5d3576", - "c5ee7b": "834c9b", - "cdc5bd": "cdc5bd" + "c5ee7b": "834c9b" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/6570.json b/public/images/pokemon/variant/exp/back/6570.json index 6f6498fa05a..b5d23c31c49 100644 --- a/public/images/pokemon/variant/exp/back/6570.json +++ b/public/images/pokemon/variant/exp/back/6570.json @@ -7,7 +7,6 @@ "4a4d53": "3b2b4f", "f7acae": "ffd291", "fafafa": "efd9d9", - "101010": "101010", "b3b3bb": "d6b7b1", "928d96": "504b6a", "cbcfd8": "7b7897", @@ -22,7 +21,6 @@ "4a4d53": "6f4332", "f7acae": "79d38d", "fafafa": "f0decd", - "101010": "101010", "b3b3bb": "c6ab99", "928d96": "995d3e", "cbcfd8": "d79568", diff --git a/public/images/pokemon/variant/exp/back/6571.json b/public/images/pokemon/variant/exp/back/6571.json index d678782e9fc..1a674c96676 100644 --- a/public/images/pokemon/variant/exp/back/6571.json +++ b/public/images/pokemon/variant/exp/back/6571.json @@ -1,7 +1,6 @@ { "1": { "942429": "4a1921", - "101010": "101010", "d53a3e": "782d41", "928d96": "4a4759", "f07376": "b44d63", @@ -11,13 +10,10 @@ "4a4d53": "262231", "a7484f": "883955", "5f0002": "330814", - "cbcfd8": "737185", - "4b163b": "4b163b", - "6d4d62": "6d4d62" + "cbcfd8": "737185" }, "2": { "942429": "143130", - "101010": "101010", "d53a3e": "2e625a", "928d96": "885f49", "f07376": "4e867b", @@ -28,7 +24,6 @@ "a7484f": "2a6062", "5f0002": "082226", "cbcfd8": "bc9072", - "4b163b": "4b163b", "6d4d62": "c2589c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/664.json b/public/images/pokemon/variant/exp/back/664.json index ae0ec9fc792..438ec1bf6e0 100644 --- a/public/images/pokemon/variant/exp/back/664.json +++ b/public/images/pokemon/variant/exp/back/664.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "363636": "4c2855", "4d4d4d": "9d6260", "4e4e4e": "895a9f", @@ -12,7 +11,6 @@ "f8f8f8": "ffffff" }, "2": { - "101010": "101010", "363636": "05312f", "4d4d4d": "590015", "4e4e4e": "377772", @@ -21,6 +19,6 @@ "9d7247": "dda476", "d1bf6b": "ffe0ba", "b3b3b3": "a70d37", - "f8f8f8": "c83e4c" + "f8f8f8": "c83e4c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/665.json b/public/images/pokemon/variant/exp/back/665.json index c5defbab5b7..de52892d922 100644 --- a/public/images/pokemon/variant/exp/back/665.json +++ b/public/images/pokemon/variant/exp/back/665.json @@ -1,11 +1,9 @@ { "1": { - "363636": "363636", "d1bf6b": "a0c896", "8c8c8c": "895a9f", "bfbfbf": "a97dbb", "9d7247": "838b53", - "101010": "101010", "4d4d4d": "9c615f", "b3b3b3": "e9c7c4", "f8f8f8": "ffffff", @@ -19,7 +17,6 @@ "8c8c8c": "590015", "bfbfbf": "a70d37", "9d7247": "dda476", - "101010": "101010", "4d4d4d": "590015", "b3b3b3": "a70d37", "f8f8f8": "c83e4c", diff --git a/public/images/pokemon/variant/exp/back/666-archipelago.json b/public/images/pokemon/variant/exp/back/666-archipelago.json index 6386464b74e..512859ce9ef 100644 --- a/public/images/pokemon/variant/exp/back/666-archipelago.json +++ b/public/images/pokemon/variant/exp/back/666-archipelago.json @@ -1,35 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "c8373c": "c8373c", - "a2523b": "a2523b", - "c27351": "c27351", - "30c171": "30c171", - "b28e67": "b28e67", - "ceab62": "d9edd4", - "d2bf96": "d2bf96", - "c3c3c3": "c3c3c3" - }, - "2": { - "101010": "101010", - "303030": "642703", - "675220": "741300", - "504a4a": "741300", - "595959": "824719", - "707068": "a22414", - "c8373c": "c8373c", - "a2523b": "a2523b", - "c27351": "c27351", - "30c171": "30c171", - "b28e67": "b28e67", - "ceab62": "a22414", - "d2bf96": "d2bf96", - "c3c3c3": "e7caa5" - - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "642703", + "675220": "741300", + "504a4a": "741300", + "595959": "824719", + "707068": "a22414", + "ceab62": "a22414", + "c3c3c3": "e7caa5" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-continental.json b/public/images/pokemon/variant/exp/back/666-continental.json index 92614fb346c..2c40d87b19e 100644 --- a/public/images/pokemon/variant/exp/back/666-continental.json +++ b/public/images/pokemon/variant/exp/back/666-continental.json @@ -1,38 +1,22 @@ { "1": { - "101010": "101010", "595959": "724b7a", "555353": "724b7a", - "d18257": "d18257", - "f9bd55": "f9bd55", "303030": "402746", - "f8f05e": "f8f05e", - "d24c3e": "d24c3e", "675220": "958c8a", "ceab62": "d9edd4", "707068": "a97cbc", "504a4a": "7f6991", - "aa5844": "aa5844", - "c3c3c3": "ffeaff", - "811c1c": "811c1c", - "e08528": "e08528" + "c3c3c3": "ffeaff" }, "2": { - "101010": "101010", "595959": "8f551e", "555353": "e99b44", - "d18257": "d18257", - "f9bd55": "f9bd55", "303030": "6d2d0d", - "f8f05e": "f8f05e", - "d24c3e": "d24c3e", "675220": "9c5c19", "ceab62": "e99b44", "707068": "e99b44", "504a4a": "9c5c19", - "aa5844": "aa5844", - "c3c3c3": "f8f27f", - "811c1c": "811c1c", - "308528": "308528" + "c3c3c3": "f8f27f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-elegant.json b/public/images/pokemon/variant/exp/back/666-elegant.json index 1b7b9838005..5caa4720b7b 100644 --- a/public/images/pokemon/variant/exp/back/666-elegant.json +++ b/public/images/pokemon/variant/exp/back/666-elegant.json @@ -1,34 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "de4040": "de4040", - "f8de3f": "f8de3f", - "ceab62": "d9edd4", - "56479d": "56479d", - "875fb5": "875fb5", - "cf7ef3": "cf7ef3", - "c3c3c3": "c3c3c3", - "e6ddf8": "e6ddf8" - }, - "2": { - "101010": "101010", - "303030": "351262", - "675220": "7d1083", - "504a4a": "7d1083", - "595959": "612776", - "707068": "a73fab", - "de4040": "de4040", - "f8de3f": "f8de3f", - "ceab62": "a73fab", - "56479d": "56479d", - "875fb5": "875fb5", - "cf7ef3": "cf7ef3", - "c3c3c3": "f0ecff", - "e6ddf8": "e6ddf8" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "351262", + "675220": "7d1083", + "504a4a": "7d1083", + "595959": "612776", + "707068": "a73fab", + "ceab62": "a73fab", + "c3c3c3": "f0ecff" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-fancy.json b/public/images/pokemon/variant/exp/back/666-fancy.json index 5d368667ae3..6f20a0dc3bb 100644 --- a/public/images/pokemon/variant/exp/back/666-fancy.json +++ b/public/images/pokemon/variant/exp/back/666-fancy.json @@ -1,36 +1,22 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "de4040": "de4040", - "5faa3e": "5faa3e", - "ceab62": "d9edd4", - "b6d26d": "b6d26d", - "e9e052": "e9e052", - "cf7ef3": "cf7ef3", - "c3c3c3": "ffeaff", - "f2d4e3": "f2d4e3", - "ead2e3": "ffeaff" - }, - "2": { - "101010": "101010", - "303030": "00771b", - "675220": "b9c05a", - "504a4a": "b9c05a", - "595959": "6f9f42", - "707068": "6f9f42", - "de4040": "de4040", - "5faa3e": "5faa3e", - "ceab62": "e3e982", - "b6d26d": "b6d26d", - "e9e052": "e9e052", - "cf7ef3": "cf7ef3", - "c3c3c3": "fcf1ff", - "f2d4e3": "f2d4e3", - "ead2e3": "fcf1ff" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4", + "c3c3c3": "ffeaff", + "ead2e3": "ffeaff" + }, + "2": { + "303030": "00771b", + "675220": "b9c05a", + "504a4a": "b9c05a", + "595959": "6f9f42", + "707068": "6f9f42", + "ceab62": "e3e982", + "c3c3c3": "fcf1ff", + "ead2e3": "fcf1ff" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-garden.json b/public/images/pokemon/variant/exp/back/666-garden.json index 16fec8bc537..2f79f5d017b 100644 --- a/public/images/pokemon/variant/exp/back/666-garden.json +++ b/public/images/pokemon/variant/exp/back/666-garden.json @@ -1,32 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "de4040": "de4040", - "398351": "398351", - "ceab62": "d9edd4", - "88d254": "88d254", - "3f919a": "3f919a", - "3dba96": "3dba96", - "c3c3c3": "c3c3c3" - }, - "2": { - "101010": "101010", - "303030": "044553", - "675220": "055160", - "504a4a": "055160", - "595959": "006b55", - "707068": "227687", - "de4040": "de4040", - "398351": "398351", - "ceab62": "227687", - "88d254": "88d254", - "3f919a": "3f919a", - "3dba96": "3dba96", - "c3c3c3": "72d0a3" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "044553", + "675220": "055160", + "504a4a": "055160", + "595959": "006b55", + "707068": "227687", + "ceab62": "227687", + "c3c3c3": "72d0a3" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-high-plains.json b/public/images/pokemon/variant/exp/back/666-high-plains.json index 984055b6a24..55ddeb3fd46 100644 --- a/public/images/pokemon/variant/exp/back/666-high-plains.json +++ b/public/images/pokemon/variant/exp/back/666-high-plains.json @@ -1,38 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "337543": "337543", - "504a4a": "7f6991", - "595959": "724b7a", - "7d4428": "7d4428", - "707068": "a97cbc", - "9a5a3b": "9a5a3b", - "aa4343": "aa4343", - "e1764e": "e1764e", - "e8c815": "e8c815", - "ceab62": "d9edd4", - "f3a861": "f3a861", - "c3c3c3": "c3c3c3", - "773d21": "773d21" - }, - "2": { - "101010": "101010", - "303030": "8f1d19", - "675220": "c97034", - "337543": "337543", - "504a4a": "c97034", - "595959": "a55422", - "7d4428": "7d4428", - "707068": "f2975a", - "9a5a3b": "9a5a3b", - "aa4343": "aa4343", - "e1764e": "e1764e", - "e8c815": "e8c815", - "ceab62": "f2975a", - "f3a861": "f3a861", - "c3c3c3": "edc67c", - "773d21": "773d21" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "8f1d19", + "675220": "c97034", + "504a4a": "c97034", + "595959": "a55422", + "707068": "f2975a", + "ceab62": "f2975a", + "c3c3c3": "edc67c" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-icy-snow.json b/public/images/pokemon/variant/exp/back/666-icy-snow.json index ec52af1302a..ab0c92a28fb 100644 --- a/public/images/pokemon/variant/exp/back/666-icy-snow.json +++ b/public/images/pokemon/variant/exp/back/666-icy-snow.json @@ -1,32 +1,18 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "ceab62": "d9edd4", - "95a1a1": "95a1a1", - "acacc2": "acacc2", - "c3c3c3": "c3c3c3", - "cfd9cf": "cfd9cf", - "c5c5da": "c5c5da", - "ffffff": "ffffff" - }, - "2": { - "101010": "101010", - "303030": "364051", - "675220": "666b7d", - "504a4a": "666b7d", - "595959": "60646a", - "707068": "8c91a4", - "ceab62": "8c91a4", - "95a1a1": "95a1a1", - "acacc2": "acacc2", - "c3c3c3": "c3c3c3", - "cfd9cf": "cfd9cf", - "c5c5da": "c5c5da", - "ffffff": "ffffff" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "364051", + "675220": "666b7d", + "504a4a": "666b7d", + "595959": "60646a", + "707068": "8c91a4", + "ceab62": "8c91a4" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-jungle.json b/public/images/pokemon/variant/exp/back/666-jungle.json index 63b998e284e..d4b0171bd78 100644 --- a/public/images/pokemon/variant/exp/back/666-jungle.json +++ b/public/images/pokemon/variant/exp/back/666-jungle.json @@ -1,34 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "724e28": "724e28", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "567456": "567456", - "707068": "a97cbc", - "9a653e": "9a653e", - "638c63": "638c63", - "c29566": "c29566", - "ceab62": "d9edd4", - "7cc48b": "7cc48b", - "c3c3c3": "c3c3c3" - }, - "2": { - "101010": "101010", - "303030": "20452e", - "724e28": "724e28", - "675220": "153922", - "504a4a": "153922", - "595959": "285b3b", - "567456": "567456", - "707068": "385c43", - "9a653e": "9a653e", - "638c63": "638c63", - "c29566": "c29566", - "ceab62": "385c43", - "7cc48b": "7cc48b", - "c3c3c3": "a9d9a0" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "20452e", + "675220": "153922", + "504a4a": "153922", + "595959": "285b3b", + "707068": "385c43", + "ceab62": "385c43", + "c3c3c3": "a9d9a0" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-marine.json b/public/images/pokemon/variant/exp/back/666-marine.json index 0bae2c2067e..fa84d9f946b 100644 --- a/public/images/pokemon/variant/exp/back/666-marine.json +++ b/public/images/pokemon/variant/exp/back/666-marine.json @@ -1,32 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "ceab62": "d9edd4", - "315382": "315382", - "367cb9": "367cb9", - "2f8dc9": "2f8dc9", - "5acdf1": "5acdf1", - "c3c3c3": "c3c3c3", - "f2f2f2": "f2f2f2" - }, - "2": { - "101010": "101010", - "303030": "16244f", - "675220": "264c85", - "504a4a": "264c85", - "595959": "2a5894", - "707068": "3070af", - "ceab62": "3070af", - "315382": "315382", - "367cb9": "367cb9", - "2f8dc9": "2f8dc9", - "5acdf1": "5acdf1", - "c3c3c3": "3070af", - "f2f2f2": "f2f2f2" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "16244f", + "675220": "264c85", + "504a4a": "264c85", + "595959": "2a5894", + "707068": "3070af", + "ceab62": "3070af", + "c3c3c3": "3070af" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-meadow.json b/public/images/pokemon/variant/exp/back/666-meadow.json index 4f567cb29ee..d722641f0da 100644 --- a/public/images/pokemon/variant/exp/back/666-meadow.json +++ b/public/images/pokemon/variant/exp/back/666-meadow.json @@ -1,34 +1,19 @@ { - "1": { - "101010": "101010", - "f2f2f2": "f2f2f2", - "303030": "402746", - "504a4a": "7f6991", - "595959": "724b7a", - "c3c3c3": "c3c3c3", - "707068": "a97cbc", - "675220": "958c8a", - "ceab62": "d9edd4", - "2d9b9b": "2d9b9b", - "e66fad": "e66fad", - "b4295a": "b4295a", - "f3a0ca": "f3a0ca", - "da6b7e": "da6b7e" - }, - "2": { - "101010": "101010", - "f2f2f2": "f2f2f2", - "303030": "770921", - "504a4a": "a2275e", - "595959": "9e3941", - "c3c3c3": "f4c2ec", - "707068": "ce5283", - "675220": "a2275e", - "ceab62": "ce5283", - "2d9b9b": "2d9b9b", - "e66fad": "e66fad", - "b4295a": "b4295a", - "f3a0ca": "f3a0ca", - "da6b7e": "da6b7e" - } + "1": { + "303030": "402746", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "675220": "958c8a", + "ceab62": "d9edd4" + }, + "2": { + "303030": "770921", + "504a4a": "a2275e", + "595959": "9e3941", + "c3c3c3": "f4c2ec", + "707068": "ce5283", + "675220": "a2275e", + "ceab62": "ce5283" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-modern.json b/public/images/pokemon/variant/exp/back/666-modern.json index 5572a58bfa9..ab01cb62e1d 100644 --- a/public/images/pokemon/variant/exp/back/666-modern.json +++ b/public/images/pokemon/variant/exp/back/666-modern.json @@ -1,32 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "b83c3c": "b83c3c", - "f44f4f": "f44f4f", - "ceab62": "d9edd4", - "3b6cbb": "3b6cbb", - "405793": "405793", - "c3c3c3": "c3c3c3", - "cfc5d9": "cfc5d9" - }, - "2":{ - "101010": "101010", - "303030": "4e0000", - "675220": "801521", - "504a4a": "801521", - "595959": "830012", - "707068": "ad2640", - "b83c3c": "b83c3c", - "f44f4f": "f44f4f", - "ceab62": "ad2640", - "3b6cbb": "3b6cbb", - "405793": "405793", - "c3c3c3": "ffeae8", - "cfc5d9": "cfc5d9" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "4e0000", + "675220": "801521", + "504a4a": "801521", + "595959": "830012", + "707068": "ad2640", + "ceab62": "ad2640", + "c3c3c3": "ffeae8" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-monsoon.json b/public/images/pokemon/variant/exp/back/666-monsoon.json index 915d471b2b1..5a127a43bbe 100644 --- a/public/images/pokemon/variant/exp/back/666-monsoon.json +++ b/public/images/pokemon/variant/exp/back/666-monsoon.json @@ -1,33 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "807676": "807676", - "ceab62": "d9edd4", - "5676de": "5676de", - "4eccd6": "4eccd6", - "989898": "989898", - "c3c3c3": "c3c3c3", - "f0f0f8": "f0f0f8" - }, - "2": { - "101010": "101010", - "303030": "3d3231", - "675220": "2c3593", - "504a4a": "2c3593", - "595959": "4f4645", - "707068": "5857bc", - "807676": "807676", - "ceab62": "5857bc", - "5676de": "5676de", - "4eccd6": "4eccd6", - "989898": "989898", - "92f4f4": "92f4f4", - "c3c3c3": "b8f9f9", - "f0f0f8": "f0f0f8" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "3d3231", + "675220": "2c3593", + "504a4a": "2c3593", + "595959": "4f4645", + "707068": "5857bc", + "ceab62": "5857bc", + "c3c3c3": "b8f9f9" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-ocean.json b/public/images/pokemon/variant/exp/back/666-ocean.json index 70e7a51c21f..9704a52e083 100644 --- a/public/images/pokemon/variant/exp/back/666-ocean.json +++ b/public/images/pokemon/variant/exp/back/666-ocean.json @@ -1,34 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "e1384d": "e1384d", - "ebcf3f": "ebcf3f", - "ceab62": "d9edd4", - "f4ad61": "f4ad61", - "f8ef6a": "f8ef6a", - "4482c9": "4482c9", - "6bb2e9": "6bb2e9", - "c3c3c3": "c3c3c3" - }, - "2": { - "101010": "101010", - "303030": "b54908", - "675220": "bc601c", - "504a4a": "bc601c", - "595959": "e99a26", - "707068": "ea8742", - "e1384d": "e1384d", - "ebcf3f": "ebcf3f", - "ceab62": "ea8742", - "f4ad61": "f4ad61", - "f8ef6a": "f8ef6a", - "4482c9": "4482c9", - "6bb2e9": "6bb2e9", - "c3c3c3": "f3c86b" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "b54908", + "675220": "bc601c", + "504a4a": "bc601c", + "595959": "e99a26", + "707068": "ea8742", + "ceab62": "ea8742", + "c3c3c3": "f3c86b" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-poke-ball.json b/public/images/pokemon/variant/exp/back/666-poke-ball.json index e21ba03fc1e..3625b1857ed 100644 --- a/public/images/pokemon/variant/exp/back/666-poke-ball.json +++ b/public/images/pokemon/variant/exp/back/666-poke-ball.json @@ -1,34 +1,25 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "971d1d": "971d1d", - "b72c2c": "b72c2c", - "dc4b4b": "dc4b4b", - "e97e7e": "e97e7e", - "ceab62": "d9edd4", - "a9a99e": "a9a99e", - "c3c3c3": "c3c3c3", - "f8f8f8": "f8f8f8" - }, - "2": { - "101010": "101010", - "303030": "ae001a", - "675220": "a70038", - "504a4a": "a70038", - "595959": "df0036", - "707068": "d5375a", - "971d1d": "040046", - "b72c2c": "00005e", - "dc4b4b": "19007d", - "e97e7e": "2e2095", - "ceab62": "d5375a", - "a9a99e": "000050", - "c3c3c3": "f0a6bf", - "f8f8f8": "00006d" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "ae001a", + "675220": "a70038", + "504a4a": "a70038", + "595959": "df0036", + "707068": "d5375a", + "971d1d": "040046", + "b72c2c": "00005e", + "dc4b4b": "19007d", + "e97e7e": "2e2095", + "ceab62": "d5375a", + "a9a99e": "000050", + "c3c3c3": "f0a6bf", + "f8f8f8": "00006d" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-polar.json b/public/images/pokemon/variant/exp/back/666-polar.json index f86b4df3dcc..818b7c7850e 100644 --- a/public/images/pokemon/variant/exp/back/666-polar.json +++ b/public/images/pokemon/variant/exp/back/666-polar.json @@ -1,34 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "2d2d61": "2d2d61", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "ceab62": "d9edd4", - "3b4b8a": "3b4b8a", - "4d6cc1": "4d6cc1", - "6aa2dc": "6aa2dc", - "bfbfbf": "bfbfbf", - "c3c3c3": "c3c3c3", - "f0f0f8": "f0f0f8" - }, - "2": { - "101010": "101010", - "303030": "191b54", - "675220": "366098", - "2d2d61": "2d2d61", - "504a4a": "366098", - "595959": "2f3887", - "707068": "5f85c1", - "ceab62": "5f85c1", - "3b4b8a": "3b4b8a", - "4d6cc1": "4d6cc1", - "6aa2dc": "6aa2dc", - "bfbfbf": "bfbfbf", - "c3c3c3": "ffffff", - "f0f0f8": "f0f0f8" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "191b54", + "675220": "366098", + "504a4a": "366098", + "595959": "2f3887", + "707068": "5f85c1", + "ceab62": "5f85c1", + "c3c3c3": "ffffff" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-river.json b/public/images/pokemon/variant/exp/back/666-river.json index c7e5e288d05..5ba0084df9d 100644 --- a/public/images/pokemon/variant/exp/back/666-river.json +++ b/public/images/pokemon/variant/exp/back/666-river.json @@ -1,40 +1,18 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "4a412c": "4a412c", - "675220": "958c8a", - "634d20": "634d20", - "1d726a": "1d726a", - "504a4a": "7f6991", - "595959": "724b7a", - "625841": "625841", - "707068": "a97cbc", - "bc813f": "bc813f", - "9c9143": "9c9143", - "ceab62": "ceab62", - "279ec2": "279ec2", - "59c9d3": "59c9d3", - "c3c3c3": "c3c3c3", - "d2a862": "d9edd4" - }, - "2": { - "101010": "101010", - "303030": "7b2800", - "4a412c": "4a412c", - "675220": "ae7f41", - "634d20": "634d20", - "1d726a": "1d726a", - "504a4a": "ae7f41", - "595959": "8a5702", - "625841": "625841", - "707068": "d9a666", - "bc813f": "bc813f", - "9c9143": "9c9143", - "ceab62": "ceab62", - "279ec2": "279ec2", - "59c9d3": "59c9d3", - "c3c3c3": "e3c384", - "d2a862": "d2a862" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "d2a862": "d9edd4" + }, + "2": { + "303030": "7b2800", + "675220": "ae7f41", + "504a4a": "ae7f41", + "595959": "8a5702", + "707068": "d9a666", + "c3c3c3": "e3c384" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-sandstorm.json b/public/images/pokemon/variant/exp/back/666-sandstorm.json index 6bc91afb34d..64f3f8ce3fa 100644 --- a/public/images/pokemon/variant/exp/back/666-sandstorm.json +++ b/public/images/pokemon/variant/exp/back/666-sandstorm.json @@ -1,34 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "625843": "625843", - "72604d": "72604d", - "707068": "a97cbc", - "9b9148": "9b9148", - "ba8d68": "ba8d68", - "ceab62": "d9edd4", - "d9b674": "d9b674", - "f1d69e": "f1d69e", - "c3c3c3": "c3c3c3" - }, - "2": { - "101010": "101010", - "303030": "443123", - "675220": "9c703b", - "504a4a": "9c703b", - "595959": "88583e", - "625843": "625843", - "72604d": "72604d", - "707068": "c6975f", - "9b9148": "9b9148", - "ba8d68": "ba8d68", - "ceab62": "c6975f", - "d9b674": "d9b674", - "f1d69e": "f1d69e", - "c3c3c3": "ece1a9" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "443123", + "675220": "9c703b", + "504a4a": "9c703b", + "595959": "88583e", + "707068": "c6975f", + "ceab62": "c6975f", + "c3c3c3": "ece1a9" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-savanna.json b/public/images/pokemon/variant/exp/back/666-savanna.json index c261f52dced..1b4b22b67d9 100644 --- a/public/images/pokemon/variant/exp/back/666-savanna.json +++ b/public/images/pokemon/variant/exp/back/666-savanna.json @@ -1,34 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "dcc433": "dcc433", - "ceab62": "d9edd4", - "3b67ac": "3b67ac", - "61a0f5": "61a0f5", - "55d3d9": "55d3d9", - "6cc6c6": "6cc6c6", - "fffd77": "fffd77", - "c3c3c3": "c3c3c3" - }, - "2": { - "101010": "101010", - "303030": "183576", - "675220": "1d828b", - "504a4a": "1d828b", - "595959": "4168bb", - "707068": "4faab3", - "dcc433": "dcc433", - "ceab62": "4faab3", - "fffd77": "fffd77", - "3b67ac": "3b67ac", - "61a0f5": "61a0f5", - "55d3d9": "55d3d9", - "6cc6c6": "6cc6c6", - "c3c3c3": "81e7e1" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "183576", + "675220": "1d828b", + "504a4a": "1d828b", + "595959": "4168bb", + "707068": "4faab3", + "ceab62": "4faab3", + "c3c3c3": "81e7e1" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-sun.json b/public/images/pokemon/variant/exp/back/666-sun.json index 21cf5787ba4..c18f2cd34e3 100644 --- a/public/images/pokemon/variant/exp/back/666-sun.json +++ b/public/images/pokemon/variant/exp/back/666-sun.json @@ -1,34 +1,19 @@ -{ - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "c94971": "c94971", - "e18248": "e18248", - "ceab62": "d9edd4", - "f1a26a": "f1a26a", - "f0ce44": "f0ce44", - "fcf372": "fcf372", - "f47491": "f47491", - "c3c3c3": "c3c3c3" - }, - "2": { - "101010": "101010", - "303030": "640000", - "675220": "8c1850", - "504a4a": "8c1850", - "595959": "750500", - "707068": "b83b74", - "c94971": "c94971", - "e18248": "e18248", - "ceab62": "b83b74", - "f1a26a": "f1a26a", - "f0ce44": "f0ce44", - "fcf372": "fcf372", - "f47491": "f47491", - "c3c3c3": "fee3e7" - } +{ + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "640000", + "675220": "8c1850", + "504a4a": "8c1850", + "595959": "750500", + "707068": "b83b74", + "ceab62": "b83b74", + "c3c3c3": "fee3e7" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/666-tundra.json b/public/images/pokemon/variant/exp/back/666-tundra.json index b098f776c00..fb42b3a6db2 100644 --- a/public/images/pokemon/variant/exp/back/666-tundra.json +++ b/public/images/pokemon/variant/exp/back/666-tundra.json @@ -1,32 +1,19 @@ { - "1": { - "101010": "101010", - "303030": "402746", - "675220": "958c8a", - "504a4a": "7f6991", - "595959": "724b7a", - "707068": "a97cbc", - "ceab62": "d9edd4", - "539ad9": "539ad9", - "74bbe9": "74bbe9", - "a3def1": "a3def1", - "c3c3c3": "c3c3c3", - "d0d0d0": "d0d0d0", - "f0f0f8": "f0f0f8" - }, - "2": { - "101010": "101010", - "303030": "003d69", - "675220": "3a76a7", - "504a4a": "3a76a7", - "595959": "225b72", - "707068": "659dd0", - "ceab62": "659dd0", - "539ad9": "539ad9", - "74bbe9": "74bbe9", - "a3def1": "a3def1", - "c3c3c3": "cbfbfb", - "d0d0d0": "d0d0d0", - "f0f0f8": "f0f0f8" - } + "1": { + "303030": "402746", + "675220": "958c8a", + "504a4a": "7f6991", + "595959": "724b7a", + "707068": "a97cbc", + "ceab62": "d9edd4" + }, + "2": { + "303030": "003d69", + "675220": "3a76a7", + "504a4a": "3a76a7", + "595959": "225b72", + "707068": "659dd0", + "ceab62": "659dd0", + "c3c3c3": "cbfbfb" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/670-orange.json b/public/images/pokemon/variant/exp/back/670-orange.json index 4cf657f0a43..09df5a862ed 100644 --- a/public/images/pokemon/variant/exp/back/670-orange.json +++ b/public/images/pokemon/variant/exp/back/670-orange.json @@ -2,7 +2,6 @@ "1": { "7f6f1f": "5c0d0d", "cfae4f": "a3382c", - "101010": "101010", "875829": "5c2c09", "d98d41": "aa571d", "ffb568": "cd9231", @@ -12,14 +11,12 @@ "208050": "e493a1", "cfbfaf": "bfbfbf", "706050": "595959", - "f8f7f9": "f8f7f9", "50996f": "f2b4b4", "205030": "aa2960" }, "2": { "7f6f1f": "b1b1b1", "cfae4f": "f8f8f4", - "101010": "101010", "875829": "215510", "d98d41": "739f1f", "ffb568": "afcf4f", diff --git a/public/images/pokemon/variant/exp/back/670-red.json b/public/images/pokemon/variant/exp/back/670-red.json index d6f3f1bc99c..ae753ab76b5 100644 --- a/public/images/pokemon/variant/exp/back/670-red.json +++ b/public/images/pokemon/variant/exp/back/670-red.json @@ -2,7 +2,6 @@ "1": { "7f6f1f": "3e0547", "cfae4f": "8e1653", - "101010": "101010", "703040": "630a23", "df4f4f": "a31f35", "ef6f6f": "cd4a4a", @@ -12,14 +11,12 @@ "208050": "e493a1", "cfbfaf": "bfbfbf", "706050": "595959", - "f8f7f9": "f8f7f9", "50996f": "f2b4b4", "205030": "aa2960" }, "2": { "7f6f1f": "b1b1b1", "cfae4f": "f8f8f4", - "101010": "101010", "703040": "215510", "df4f4f": "739f1f", "ef6f6f": "afcf4f", diff --git a/public/images/pokemon/variant/exp/back/670-white.json b/public/images/pokemon/variant/exp/back/670-white.json index 6c781f728dc..dda06922053 100644 --- a/public/images/pokemon/variant/exp/back/670-white.json +++ b/public/images/pokemon/variant/exp/back/670-white.json @@ -2,7 +2,6 @@ "1": { "7f6f1f": "110732", "cfae4f": "3b374e", - "101010": "101010", "878787": "1e1d2a", "d9d9d9": "4c4b55", "fdfdfd": "747478", @@ -12,14 +11,12 @@ "208050": "e493a1", "cfbfaf": "bfbfbf", "706050": "595959", - "f8f7f9": "f8f7f9", "50996f": "f2b4b4", "205030": "aa2960" }, "2": { "7f6f1f": "b1b1b1", "cfae4f": "f8f8f4", - "101010": "101010", "878787": "215510", "d9d9d9": "739f1f", "fdfdfd": "afcf4f", @@ -29,7 +26,6 @@ "208050": "6d716f", "cfbfaf": "c6c6c6", "706050": "595959", - "f8f7f9": "f8f7f9", "50996f": "a3a6a4", "205030": "1c2d32" } diff --git a/public/images/pokemon/variant/exp/back/670-yellow.json b/public/images/pokemon/variant/exp/back/670-yellow.json index 44f974da441..76b47b04e21 100644 --- a/public/images/pokemon/variant/exp/back/670-yellow.json +++ b/public/images/pokemon/variant/exp/back/670-yellow.json @@ -2,7 +2,6 @@ "1": { "7f6f1f": "06471f", "cfae4f": "1a8021", - "101010": "101010", "857c28": "064718", "d8cb40": "6f950a", "f9ec63": "abb830", @@ -12,14 +11,12 @@ "208050": "e493a1", "cfbfaf": "bfbfbf", "706050": "595959", - "f8f7f9": "f8f7f9", "50996f": "f2b4b4", "205030": "aa2960" }, "2": { "7f6f1f": "b1b1b1", "cfae4f": "f8f8f4", - "101010": "101010", "857c28": "215510", "d8cb40": "739f1f", "f9ec63": "afcf4f", diff --git a/public/images/pokemon/variant/exp/back/6705.json b/public/images/pokemon/variant/exp/back/6705.json index a4e3b52f015..f8d367abf7a 100644 --- a/public/images/pokemon/variant/exp/back/6705.json +++ b/public/images/pokemon/variant/exp/back/6705.json @@ -6,7 +6,6 @@ "bfacbf": "e56ca6", "367456": "0c5474", "50ab89": "197497", - "101010": "101010", "60606c": "1f1233", "c5cce0": "513981", "aeb5c6": "442967", @@ -20,11 +19,9 @@ "bfacbf": "5db6a9", "367456": "842401", "50ab89": "a34205", - "101010": "101010", "60606c": "042329", "c5cce0": "176463", "aeb5c6": "0d484a", - "949aab": "073338", - "e3e8f4": "e3e8f4" + "949aab": "073338" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/671-blue.json b/public/images/pokemon/variant/exp/back/671-blue.json index d439421802b..025c6e2ad0e 100644 --- a/public/images/pokemon/variant/exp/back/671-blue.json +++ b/public/images/pokemon/variant/exp/back/671-blue.json @@ -3,7 +3,6 @@ "4a778a": "130540", "7cc6c6": "291371", "daf8f8": "69c9e3", - "141214": "141214", "aaf2f2": "3827a3", "466e82": "130540", "3d9ccc": "2938a3", @@ -12,17 +11,12 @@ "247264": "dc5073", "2c826c": "dc5073", "3ca68c": "ff91a4", - "5c5a5c": "5c5a5c", - "bcbebc": "bcbebc", - "fcfafc": "fcfafc", - "245a4c": "aa1a58", - "1c362c": "1c362c" + "245a4c": "aa1a58" }, "2": { "4a778a": "07230a", "7cc6c6": "213225", "daf8f8": "dfe3e1", - "141214": "141214", "aaf2f2": "4d4e46", "466e82": "0a320e", "3d9ccc": "7f9f1f", @@ -34,7 +28,6 @@ "5c5a5c": "32448e", "bcbebc": "9fb6d4", "fcfafc": "dff2ff", - "245a4c": "0d4a80", - "1c362c": "1c362c" + "245a4c": "0d4a80" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/671-orange.json b/public/images/pokemon/variant/exp/back/671-orange.json index 9a543e497f5..4bf20675cd8 100644 --- a/public/images/pokemon/variant/exp/back/671-orange.json +++ b/public/images/pokemon/variant/exp/back/671-orange.json @@ -3,7 +3,6 @@ "795941": "401d04", "d2ab84": "631818", "faeadb": "ffbc77", - "141214": "141214", "ffd9b2": "a34b2c", "785941": "401d04", "d98d41": "954c17", @@ -12,17 +11,12 @@ "247264": "dc5073", "2c826c": "dc5073", "3ca68c": "ff91a4", - "5c5a5c": "5c5a5c", - "bcbebc": "bcbebc", - "fcfafc": "fcfafc", - "245a4c": "aa1a58", - "1c362c": "1c362c" + "245a4c": "aa1a58" }, "2": { "795941": "07230a", "d2ab84": "213225", "faeadb": "dfe3e1", - "141214": "141214", "ffd9b2": "4d4e46", "785941": "0a320e", "d98d41": "7f9f1f", @@ -34,7 +28,6 @@ "5c5a5c": "5c0c2e", "bcbebc": "f1a695", "fcfafc": "fff1df", - "245a4c": "800707", - "1c362c": "1c362c" + "245a4c": "800707" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/671-red.json b/public/images/pokemon/variant/exp/back/671-red.json index 46fe34c7d0c..9788c78b8fe 100644 --- a/public/images/pokemon/variant/exp/back/671-red.json +++ b/public/images/pokemon/variant/exp/back/671-red.json @@ -3,7 +3,6 @@ "643e5c": "390614", "a46294": "4e0c38", "fcb2cc": "ff90a2", - "141214": "141214", "dc9ac4": "8e1a55", "842e2c": "390614", "dc4e4c": "95172c", @@ -12,17 +11,12 @@ "247264": "dc5073", "2c826c": "dc5073", "3ca68c": "ff91a4", - "5c5a5c": "5c5a5c", - "bcbebc": "bcbebc", - "fcfafc": "fcfafc", - "245a4c": "aa1a58", - "1c362c": "1c362c" + "245a4c": "aa1a58" }, "2": { "643e5c": "07230a", "a46294": "213225", "fcb2cc": "dfe3e1", - "141214": "141214", "dc9ac4": "4d4e46", "842e2c": "0a320e", "dc4e4c": "7f9f1f", @@ -34,7 +28,6 @@ "5c5a5c": "5c0c2e", "bcbebc": "dca4b2", "fcfafc": "ffd7db", - "245a4c": "710846", - "1c362c": "1c362c" + "245a4c": "710846" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/671-white.json b/public/images/pokemon/variant/exp/back/671-white.json index a4953029afe..b8155ae32bb 100644 --- a/public/images/pokemon/variant/exp/back/671-white.json +++ b/public/images/pokemon/variant/exp/back/671-white.json @@ -3,7 +3,6 @@ "868686": "171a1c", "b4b4b4": "231e32", "f7bcc6": "c2c1c6", - "141214": "141214", "f2f2f2": "353340", "878787": "171a1c", "d9d9d9": "3c3b47", @@ -12,17 +11,12 @@ "247264": "dc5073", "2c826c": "dc5073", "3ca68c": "ff91a4", - "5c5a5c": "5c5a5c", - "bcbebc": "bcbebc", - "fcfafc": "fcfafc", - "245a4c": "aa1a58", - "1c362c": "1c362c" + "245a4c": "aa1a58" }, "2": { "868686": "07230a", "b4b4b4": "213225", "f7bcc6": "dfe3e1", - "141214": "141214", "f2f2f2": "4d4e46", "878787": "0a320e", "d9d9d9": "7f9f1f", @@ -34,7 +28,6 @@ "5c5a5c": "595959", "bcbebc": "bfbfbf", "fcfafc": "f9f9f9", - "245a4c": "1c2d32", - "1c362c": "1c362c" + "245a4c": "1c2d32" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/671-yellow.json b/public/images/pokemon/variant/exp/back/671-yellow.json index 81a74ac231e..63309425d81 100644 --- a/public/images/pokemon/variant/exp/back/671-yellow.json +++ b/public/images/pokemon/variant/exp/back/671-yellow.json @@ -3,7 +3,6 @@ "7c7755": "074034", "d2b98b": "227850", "facea2": "ffe593", - "141214": "141214", "feeabf": "22b14a", "76724b": "074034", "d9cc41": "789c16", @@ -12,17 +11,12 @@ "247264": "dc5073", "2c826c": "dc5073", "3ca68c": "ff91a4", - "5c5a5c": "5c5a5c", - "bcbebc": "bcbebc", - "fcfafc": "fcfafc", - "245a4c": "aa1a58", - "1c362c": "1c362c" + "245a4c": "aa1a58" }, "2": { "7c7755": "07230a", "d2b98b": "213225", "facea2": "dfe3e1", - "141214": "141214", "feeabf": "4d4e46", "76724b": "0a320e", "d9cc41": "7f9f1f", @@ -34,7 +28,6 @@ "5c5a5c": "8e4d0a", "bcbebc": "d4c18f", "fcfafc": "fffde0", - "245a4c": "8e4d0a", - "1c362c": "1c362c" + "245a4c": "8e4d0a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/6713.json b/public/images/pokemon/variant/exp/back/6713.json index a0ba9eb72ad..721679daf7d 100644 --- a/public/images/pokemon/variant/exp/back/6713.json +++ b/public/images/pokemon/variant/exp/back/6713.json @@ -3,7 +3,6 @@ "737373": "7a993d", "e8e8e8": "cfe68a", "729ac2": "d97389", - "101010": "101010", "bfbfbf": "9dcc3e", "bff4ff": "ffbfda", "6b5442": "732334", @@ -19,7 +18,6 @@ "737373": "641531", "e8e8e8": "bf576b", "729ac2": "cc7b1e", - "101010": "101010", "bfbfbf": "993554", "bff4ff": "fcc95c", "6b5442": "2c7a75", diff --git a/public/images/pokemon/variant/exp/back/672.json b/public/images/pokemon/variant/exp/back/672.json index 7282ef5e693..c118d603d57 100644 --- a/public/images/pokemon/variant/exp/back/672.json +++ b/public/images/pokemon/variant/exp/back/672.json @@ -1,7 +1,6 @@ { "1": { "3d3128": "69112a", - "000000": "000000", "67615b": "9e2c3d", "615140": "89431b", "7e6d5a": "b3743e", @@ -17,7 +16,6 @@ }, "2": { "3d3128": "161526", - "000000": "000000", "67615b": "2d2b40", "615140": "4c7a68", "7e6d5a": "72b692", @@ -31,4 +29,4 @@ "c6b379": "9f5f9b", "a8905c": "854d87" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/673.json b/public/images/pokemon/variant/exp/back/673.json index 7e5bc69976d..8d5d7d2b76e 100644 --- a/public/images/pokemon/variant/exp/back/673.json +++ b/public/images/pokemon/variant/exp/back/673.json @@ -1,7 +1,6 @@ { "1": { "3d3128": "5a0e24", - "000000": "000000", "554538": "471405", "67615b": "8f2837", "0d835a": "d2af94", @@ -17,7 +16,6 @@ }, "2": { "3d3128": "121123", - "000000": "000000", "554538": "37224d", "67615b": "2d2b40", "0d835a": "6893b6", @@ -31,4 +29,4 @@ "ae492a": "612c6b", "c16a3f": "9f5f9b" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/677.json b/public/images/pokemon/variant/exp/back/677.json index 9403c5c6e8e..473003c1fd4 100644 --- a/public/images/pokemon/variant/exp/back/677.json +++ b/public/images/pokemon/variant/exp/back/677.json @@ -3,7 +3,6 @@ "565581": "470d28", "8988b6": "943b5d", "999fdc": "bd5c81", - "000000": "000000", "c0c3e5": "e2dfcb", "e8e8ef": "f1f0e4", "8871a2": "601339", @@ -13,7 +12,6 @@ "565581": "193437", "8988b6": "426b62", "999fdc": "6ba78a", - "000000": "000000", "c0c3e5": "5f3656", "e8e8ef": "67415e", "8871a2": "243e41", diff --git a/public/images/pokemon/variant/exp/back/678-female.json b/public/images/pokemon/variant/exp/back/678-female.json index 6639b1e6674..1d4109ac04b 100644 --- a/public/images/pokemon/variant/exp/back/678-female.json +++ b/public/images/pokemon/variant/exp/back/678-female.json @@ -5,8 +5,7 @@ "737373": "947859", "334575": "76264d", "1e2945": "47182e", - "375794": "a5346b", - "000000": "000000" + "375794": "a5346b" }, "2": { "b2afb6": "613d5a", @@ -14,7 +13,6 @@ "737373": "3a1633", "334575": "47946c", "1e2945": "1d3f33", - "375794": "7bd38d", - "000000": "000000" + "375794": "7bd38d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/678.json b/public/images/pokemon/variant/exp/back/678.json index e194c472468..56684f0503e 100644 --- a/public/images/pokemon/variant/exp/back/678.json +++ b/public/images/pokemon/variant/exp/back/678.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "bfbfbf": "d5c49f", "f8f8f8": "f8f5cd", "737373": "947859", @@ -9,7 +8,6 @@ "17294d": "47182e" }, "2": { - "101010": "101010", "bfbfbf": "613d5a", "f8f8f8": "855577", "737373": "3a1633", diff --git a/public/images/pokemon/variant/exp/back/690.json b/public/images/pokemon/variant/exp/back/690.json index a513e813823..7e4536149f9 100644 --- a/public/images/pokemon/variant/exp/back/690.json +++ b/public/images/pokemon/variant/exp/back/690.json @@ -2,7 +2,6 @@ "1": { "3f6273": "310511", "4d341b": "181243", - "101010": "101010", "a6e1ff": "792a48", "a6703a": "3e44a2", "7ec3e5": "6b1f42", @@ -16,7 +15,6 @@ "2": { "3f6273": "340628", "4d341b": "042431", - "101010": "101010", "a6e1ff": "633060", "a6703a": "2c5d64", "7ec3e5": "481a42", diff --git a/public/images/pokemon/variant/exp/back/691.json b/public/images/pokemon/variant/exp/back/691.json index 5ed68809c44..849dd6a4e5b 100644 --- a/public/images/pokemon/variant/exp/back/691.json +++ b/public/images/pokemon/variant/exp/back/691.json @@ -1,7 +1,6 @@ { "1": { "4d4d2e": "31246d", - "101010": "101010", "b3b36b": "403c94", "80804d": "382f7d", "732230": "310511", @@ -17,7 +16,6 @@ }, "2": { "4d4d2e": "07262e", - "101010": "101010", "b3b36b": "1d4952", "80804d": "0d3338", "732230": "340b33", diff --git a/public/images/pokemon/variant/exp/back/696.json b/public/images/pokemon/variant/exp/back/696.json index b58bfea922f..bc63acb4f9c 100644 --- a/public/images/pokemon/variant/exp/back/696.json +++ b/public/images/pokemon/variant/exp/back/696.json @@ -1,35 +1,30 @@ { "1": { - "734517":"5e0b0b", - "ffa64c":"a50d0d", - "3e1f18":"023425", - "966858":"1b6430", - "404040":"4c3216", - "65483a":"0b4c29", - "101010":"101010", - "f8f8f8":"dfdea7", - "bfbfbf":"cbbe8c", - "8c8c8c":"ad8c63", - "121212":"121212", - "bdbdbd":"c9bd8b", - "f5f5f5":"dbdaa4", - "b73b6b":"77452d" + "734517": "5e0b0b", + "ffa64c": "a50d0d", + "3e1f18": "023425", + "966858": "1b6430", + "404040": "4c3216", + "65483a": "0b4c29", + "f8f8f8": "dfdea7", + "bfbfbf": "cbbe8c", + "8c8c8c": "ad8c63", + "bdbdbd": "c9bd8b", + "f5f5f5": "dbdaa4", + "b73b6b": "77452d" }, "2": { - "734517":"395cb7", - "ffa64c":"d2e9ff", - "3e1f18":"3e1f18", - "966858":"83726e", - "404040":"250860", - "65483a":"644943", - "101010":"101010", - "f8f8f8":"6e46a7", - "bfbfbf":"593097", - "8c8c8c":"411684", - "121212":"decaff", - "bdbdbd":"79c8d3", - "f5f5f5":"cce6ff", - "b73b6b":"385cb5" + "734517": "395cb7", + "ffa64c": "d2e9ff", + "966858": "83726e", + "404040": "250860", + "65483a": "644943", + "f8f8f8": "6e46a7", + "bfbfbf": "593097", + "8c8c8c": "411684", + "121212": "decaff", + "bdbdbd": "79c8d3", + "f5f5f5": "cce6ff", + "b73b6b": "385cb5" } -} - +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/697.json b/public/images/pokemon/variant/exp/back/697.json index 5303995a117..4fffa77a383 100644 --- a/public/images/pokemon/variant/exp/back/697.json +++ b/public/images/pokemon/variant/exp/back/697.json @@ -1,34 +1,30 @@ { - -"1": { -"080808": "080808", -"32252c": "3e1e17", -"50131e": "0b241e", -"722533": "153626", -"54434c": "4c3216", -"964b1c": "5e0b0b", -"963e4e": "285234", -"bf7545": "971c1c", -"f19d5a": "b52424", -"9f9d98": "ad8c63", -"cccccc": "cbbe8c", -"fafafa": "dfdea7", -"53454d":"4c3216" -}, -"2": { -"080808": "080808", -"32252c": "0d0124", -"50131e": "573b36", -"722533": "83726e", -"54434c": "170c25", -"964b1c": "9d5390", -"963e4e": "ab9b97", -"bf7545": "ce7ecc", -"f19d5a": "f4dbf6", -"9f9d98": "26173b", -"cccccc": "33214f", -"fafafa": "4b2e64", -"53454d": "f4dbf6" -} -} - + "1": { + "32252c": "3e1e17", + "50131e": "0b241e", + "722533": "153626", + "54434c": "4c3216", + "964b1c": "5e0b0b", + "963e4e": "285234", + "bf7545": "971c1c", + "f19d5a": "b52424", + "9f9d98": "ad8c63", + "cccccc": "cbbe8c", + "fafafa": "dfdea7", + "53454d": "4c3216" + }, + "2": { + "32252c": "0d0124", + "50131e": "573b36", + "722533": "83726e", + "54434c": "170c25", + "964b1c": "9d5390", + "963e4e": "ab9b97", + "bf7545": "ce7ecc", + "f19d5a": "f4dbf6", + "9f9d98": "26173b", + "cccccc": "33214f", + "fafafa": "4b2e64", + "53454d": "f4dbf6" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/700.json b/public/images/pokemon/variant/exp/back/700.json index 1189d463f2b..2a8ecba3b8f 100644 --- a/public/images/pokemon/variant/exp/back/700.json +++ b/public/images/pokemon/variant/exp/back/700.json @@ -1,32 +1,28 @@ { -"1": { -"101010": "101010", -"8a2843": "452f89", -"235a99": "a63071", -"895c72": "5c6889", -"d85a7a": "996cd2", -"528fcc": "d648b7", -"a88d8c": "8c8fa8", -"f18a78": "b52d27", -"fa8caa": "c7a6ee", -"64c8f3": "e974db", -"d9c3c3": "c3c5d9", -"fff5f5": "f7f5ff", -"65798c": "65798c" -}, -"2": { -"101010": "101010", -"8a2843": "0e6134", -"235a99": "900d1b", -"895c72": "7f5c89", -"d85a7a": "5dae7d", -"528fcc": "dd3d4f", -"a88d8c": "7f5c89", -"f18a78": "d14ea4", -"fa8caa": "7dec9d", -"64c8f3": "ff9a68", -"d9c3c3": "d9c3d6", -"fff5f5": "fff5fc", -"65798c": "65798c" -} + "1": { + "8a2843": "452f89", + "235a99": "a63071", + "895c72": "5c6889", + "d85a7a": "996cd2", + "528fcc": "d648b7", + "a88d8c": "8c8fa8", + "f18a78": "b52d27", + "fa8caa": "c7a6ee", + "64c8f3": "e974db", + "d9c3c3": "c3c5d9", + "fff5f5": "f7f5ff" + }, + "2": { + "8a2843": "0e6134", + "235a99": "900d1b", + "895c72": "7f5c89", + "d85a7a": "5dae7d", + "528fcc": "dd3d4f", + "a88d8c": "7f5c89", + "f18a78": "d14ea4", + "fa8caa": "7dec9d", + "64c8f3": "ff9a68", + "d9c3c3": "d9c3d6", + "fff5f5": "fff5fc" + } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/702.json b/public/images/pokemon/variant/exp/back/702.json index 12feb29a0fd..adea0fb21eb 100644 --- a/public/images/pokemon/variant/exp/back/702.json +++ b/public/images/pokemon/variant/exp/back/702.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "262626": "2a3b5e", "4d4d4d": "6789b3", "bfbf86": "a3d1cc", @@ -10,12 +9,10 @@ "f2c261": "ffd3b6", "bf994c": "e49f84", "1d1d1d": "1a1c45", - "f8f8f8": "f8f8f8", "464646": "424b8f", "d97d21": "7cd6a1" }, "2": { - "101010": "101010", "262626": "072d38", "4d4d4d": "197870", "bfbf86": "aaa8d6", @@ -25,7 +22,6 @@ "f2c261": "5f3662", "bf994c": "432249", "1d1d1d": "02172d", - "f8f8f8": "f8f8f8", "464646": "17646c", "d97d21": "d2fff1" } diff --git a/public/images/pokemon/variant/exp/back/704.json b/public/images/pokemon/variant/exp/back/704.json index 1955f425b26..12f004ad956 100644 --- a/public/images/pokemon/variant/exp/back/704.json +++ b/public/images/pokemon/variant/exp/back/704.json @@ -4,7 +4,6 @@ "f2daf2": "fbb3d2", "bfacbf": "e56ca6", "4d454d": "8a2166", - "101010": "101010", "4d993d": "197497", "66cc52": "3aa8c4", "b8a1e5": "c7a1e5", @@ -18,7 +17,6 @@ "f2daf2": "92d8c8", "bfacbf": "63a99e", "4d454d": "134557", - "101010": "101010", "4d993d": "a34205", "66cc52": "d27e26", "b8a1e5": "4a9699", diff --git a/public/images/pokemon/variant/exp/back/705.json b/public/images/pokemon/variant/exp/back/705.json index 72dd07123ea..3424b46ee03 100644 --- a/public/images/pokemon/variant/exp/back/705.json +++ b/public/images/pokemon/variant/exp/back/705.json @@ -1,26 +1,24 @@ { "1": { - "101010": "101010", - "4d454d": "8a2166", - "647543": "197497", - "98bd51": "3aa8c4", - "665980": "4e4094", - "807380": "b93f84", - "8f7db3": "8b69c3", - "bfacbf": "e56ca6", - "b8a1e5": "c7a1e5", - "f2daf2": "fbb3d2" + "4d454d": "8a2166", + "647543": "197497", + "98bd51": "3aa8c4", + "665980": "4e4094", + "807380": "b93f84", + "8f7db3": "8b69c3", + "bfacbf": "e56ca6", + "b8a1e5": "c7a1e5", + "f2daf2": "fbb3d2" }, "2": { - "101010": "101010", - "4d454d": "194f51", - "647543": "a34205", - "98bd51": "d27e26", - "665980": "274159", - "807380": "2b736f", - "8f7db3": "2f667c", - "bfacbf": "5db6a9", - "b8a1e5": "4a9699", - "f2daf2": "9cead8" + "4d454d": "194f51", + "647543": "a34205", + "98bd51": "d27e26", + "665980": "274159", + "807380": "2b736f", + "8f7db3": "2f667c", + "bfacbf": "5db6a9", + "b8a1e5": "4a9699", + "f2daf2": "9cead8" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/706.json b/public/images/pokemon/variant/exp/back/706.json index c14e7e8a123..eef2e311597 100644 --- a/public/images/pokemon/variant/exp/back/706.json +++ b/public/images/pokemon/variant/exp/back/706.json @@ -4,7 +4,6 @@ "807380": "b24c86", "bfacbf": "cd7aa1", "f2daf2": "f1a4c5", - "101010": "101010", "998a99": "b24c86", "fefefe": "f8f8f8", "4d993d": "197497", @@ -20,7 +19,6 @@ "807380": "194f51", "bfacbf": "559b91", "f2daf2": "9cead8", - "101010": "101010", "998a99": "2b736f", "fefefe": "f8f8f8", "4d993d": "a34205", diff --git a/public/images/pokemon/variant/exp/back/709.json b/public/images/pokemon/variant/exp/back/709.json index 39fdc746e2a..5aa204b7074 100644 --- a/public/images/pokemon/variant/exp/back/709.json +++ b/public/images/pokemon/variant/exp/back/709.json @@ -2,7 +2,6 @@ "1": { "3f2f1f": "262741", "1f3f2f": "361f1b", - "101010": "101010", "cf9f6f": "7c808c", "1f9f5f": "907f76", "2f6f4f": "4d362e", @@ -11,9 +10,7 @@ "33333f": "722023" }, "2": { - "3f2f1f": "3f2f1f", "1f3f2f": "761d52", - "101010": "101010", "cf9f6f": "7e5658", "1f9f5f": "da7ea8", "2f6f4f": "a94079", diff --git a/public/images/pokemon/variant/exp/back/710.json b/public/images/pokemon/variant/exp/back/710.json index 974195f1850..97f07f39af8 100644 --- a/public/images/pokemon/variant/exp/back/710.json +++ b/public/images/pokemon/variant/exp/back/710.json @@ -3,10 +3,7 @@ "392e28": "213a22", "6c5c53": "599752", "594b40": "478243", - "000000": "000000", "4e4137": "478243", - "201a17": "201a17", - "2c241f": "2c241f", "6d5a52": "599752", "41342c": "478243", "cc7571": "404040", @@ -19,10 +16,7 @@ "392e28": "0e2218", "6c5c53": "425947", "594b40": "2a4031", - "000000": "000000", "4e4137": "2a4031", - "201a17": "201a17", - "2c241f": "2c241f", "6d5a52": "425947", "41342c": "2a4031", "cc7571": "ad3b33", diff --git a/public/images/pokemon/variant/exp/back/711.json b/public/images/pokemon/variant/exp/back/711.json index 76b5beb3ad8..5bc30d8e756 100644 --- a/public/images/pokemon/variant/exp/back/711.json +++ b/public/images/pokemon/variant/exp/back/711.json @@ -1,32 +1,26 @@ { "0": { - "101010": "101010", "28211c": "202423", "504338": "593a59", "c6786e": "262626", - "25201b": "25201b", "834037": "171717", "e69586": "404040", "f1ca99": "cea971", "c09a69": "aa7e43" }, "1": { - "101010": "101010", "28211c": "202423", "504338": "353631", "c6786e": "325b34", - "25201b": "25201b", "834037": "153f18", "e69586": "4d7d4b", "f1ca99": "ddcfb1", "c09a69": "baa78d" }, "2": { - "101010": "101010", "28211c": "5e0b09", "504338": "ad3b33", "c6786e": "213c28", - "25201b": "25201b", "834037": "102316", "e69586": "36593d", "f1ca99": "b57d52", diff --git a/public/images/pokemon/variant/exp/back/712.json b/public/images/pokemon/variant/exp/back/712.json index 59ad2436866..6a9f45ffebd 100644 --- a/public/images/pokemon/variant/exp/back/712.json +++ b/public/images/pokemon/variant/exp/back/712.json @@ -4,11 +4,7 @@ "58647b": "bf566d", "b3eaf8": "ffbfda", "a5c4d2": "f29eb3", - "e8f5fe": "ffebf2", - "101010": "101010", - "bfbfbf": "bfbfbf", - "737373": "737373", - "f8f8f8": "f8f8f8" + "e8f5fe": "ffebf2" }, "2": { "719aa9": "cc7b1e", @@ -16,7 +12,6 @@ "b3eaf8": "fcc95c", "a5c4d2": "e69e2b", "e8f5fe": "fff2ad", - "101010": "101010", "bfbfbf": "6cb3ae", "737373": "2c7a75", "f8f8f8": "b9f2ee" diff --git a/public/images/pokemon/variant/exp/back/713.json b/public/images/pokemon/variant/exp/back/713.json index 61977f60470..03f24a2226d 100644 --- a/public/images/pokemon/variant/exp/back/713.json +++ b/public/images/pokemon/variant/exp/back/713.json @@ -6,8 +6,7 @@ "bff4ff": "ffbfda", "335980": "994255", "f2ffff": "ffebf2", - "77b8d9": "d97389", - "101010": "101010" + "77b8d9": "d97389" }, "2": { "608cba": "a8632a", @@ -16,7 +15,6 @@ "bff4ff": "fcc95c", "335980": "824628", "f2ffff": "fff2ad", - "77b8d9": "cc7b1e", - "101010": "101010" + "77b8d9": "cc7b1e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/715.json b/public/images/pokemon/variant/exp/back/715.json index d9b76a01588..25389a3ca71 100644 --- a/public/images/pokemon/variant/exp/back/715.json +++ b/public/images/pokemon/variant/exp/back/715.json @@ -1,7 +1,6 @@ { "1": { "404040": "542f98", - "101010": "101010", "595959": "7a5ccc", "801a1a": "5d173d", "e52e2e": "903b78", @@ -17,10 +16,7 @@ }, "2": { "404040": "b18373", - "101010": "101010", "595959": "e2c7b5", - "801a1a": "801a1a", - "e52e2e": "e52e2e", "8e5499": "5b1922", "737373": "280911", "f8f8f8": "5a2a2b", diff --git a/public/images/pokemon/variant/exp/back/716-active.json b/public/images/pokemon/variant/exp/back/716-active.json index 927ab7f9f0d..c488dc9a8fa 100644 --- a/public/images/pokemon/variant/exp/back/716-active.json +++ b/public/images/pokemon/variant/exp/back/716-active.json @@ -1,9 +1,5 @@ { "1": { - "101010": "101010", - "ccbd8f": "ccbd8f", - "807659": "807659", - "ffecb2": "ffecb2", "345090": "75127d", "7f4a16": "0f735f", "64bfe8": "dd57e8", @@ -16,8 +12,6 @@ "c37732": "3fc199", "547fe9": "b33ccd", "dd3238": "2f75b9", - "5959b3": "5959b3", - "9191f2": "9191f2", "243659": "132b1b", "3d5c99": "1e3824", "262626": "447e48", @@ -26,7 +20,6 @@ "5c8ae5": "324c37" }, "2": { - "101010": "101010", "ccbd8f": "3b2328", "807659": "210f14", "ffecb2": "553639", @@ -42,8 +35,6 @@ "c37732": "824adc", "547fe9": "d75343", "dd3238": "c53fc3", - "5959b3": "5959b3", - "9191f2": "9191f2", "243659": "37134c", "3d5c99": "643071", "262626": "d284b6", diff --git a/public/images/pokemon/variant/exp/back/716-neutral.json b/public/images/pokemon/variant/exp/back/716-neutral.json index 768172915e7..5db424fc423 100644 --- a/public/images/pokemon/variant/exp/back/716-neutral.json +++ b/public/images/pokemon/variant/exp/back/716-neutral.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "84b4ce": "ac8781", "364566": "603f3c", "c0e0ec": "bfa19a", @@ -9,11 +8,9 @@ "2b2a2e": "518554", "1a1a1a": "2c5232", "404040": "7ca376", - "5c8ae5": "324c37", - "1f7a99": "1f7a99" + "5c8ae5": "324c37" }, "2": { - "101010": "101010", "84b4ce": "42283b", "364566": "230d1e", "c0e0ec": "613e56", @@ -22,7 +19,6 @@ "2b2a2e": "d285a7", "1a1a1a": "b2638b", "404040": "f6badb", - "5c8ae5": "884e9f", - "1f7a99": "1f7a99" + "5c8ae5": "884e9f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/717.json b/public/images/pokemon/variant/exp/back/717.json index 1104b74cf71..615b092ba9c 100644 --- a/public/images/pokemon/variant/exp/back/717.json +++ b/public/images/pokemon/variant/exp/back/717.json @@ -2,7 +2,6 @@ "1": { "4d4d4d": "816450", "b3b3b3": "dbd4cd", - "101010": "101010", "737373": "c1aa9a", "242626": "0f0b2c", "8c8c8c": "cbbfb5", diff --git a/public/images/pokemon/variant/exp/back/720.json b/public/images/pokemon/variant/exp/back/720.json index c4d2c0c70c9..c0bf0e6de76 100644 --- a/public/images/pokemon/variant/exp/back/720.json +++ b/public/images/pokemon/variant/exp/back/720.json @@ -2,7 +2,6 @@ "0": { "8c3f59": "620d00", "ff73a2": "cb5e23", - "101010": "101010", "8a8a99": "684252", "cc5c81": "902c0d", "676773": "3e162b", @@ -16,7 +15,6 @@ "1": { "8c3f59": "280d46", "ff73a2": "753f9b", - "101010": "101010", "8a8a99": "a947b4", "cc5c81": "471c6b", "676773": "632373", @@ -30,7 +28,6 @@ "2": { "8c3f59": "150933", "ff73a2": "35387c", - "101010": "101010", "8a8a99": "304757", "cc5c81": "1d1a4b", "676773": "1c2433", diff --git a/public/images/pokemon/variant/exp/back/728.json b/public/images/pokemon/variant/exp/back/728.json index a9c7155ec91..899ae80c996 100644 --- a/public/images/pokemon/variant/exp/back/728.json +++ b/public/images/pokemon/variant/exp/back/728.json @@ -1,10 +1,8 @@ { "1": { - "101010": "101010", "1e3a66": "363d2f", "243a66": "00473d", "733f50": "a62c20", - "404040": "404040", "b3627d": "e54c41", "2c4f8c": "5a6154", "314f8c": "006355", @@ -13,7 +11,6 @@ "5f9ba6": "b56e76", "639ba6": "858d7d", "6c90d9": "14af82", - "808080": "808080", "bfbfbf": "c2beb4", "9edae5": "f7c1c5", "a1dae5": "92b599", @@ -21,11 +18,9 @@ "fefefe": "fff6e2" }, "2": { - "101010": "101010", "1e3a66": "773f46", "243a66": "54041b", "733f50": "620a33", - "404040": "404040", "b3627d": "a7225c", "2c4f8c": "a45f67", "314f8c": "770f29", @@ -34,7 +29,6 @@ "5f9ba6": "408c62", "639ba6": "b88389", "6c90d9": "be294a", - "808080": "808080", "bfbfbf": "bfb4b9", "9edae5": "91e6a2", "a1dae5": "f7c1c5", diff --git a/public/images/pokemon/variant/exp/back/729.json b/public/images/pokemon/variant/exp/back/729.json index a0e40c36aec..6636e6cfca9 100644 --- a/public/images/pokemon/variant/exp/back/729.json +++ b/public/images/pokemon/variant/exp/back/729.json @@ -1,7 +1,5 @@ { "1": { - "101010": "101010", - "2d2e31": "2d2e31", "733f50": "bb402f", "476d72": "be665d", "b3627d": "fb6051", @@ -10,7 +8,6 @@ "639ba6": "b56e76", "2d8ec4": "009a88", "1eb9ee": "0ccfa2", - "808080": "808080", "8dafaf": "ff989e", "bfbfbf": "c2beb4", "bad8d8": "ffbd98", @@ -19,8 +16,6 @@ "fdfdfd": "fff6e2" }, "2": { - "101010": "101010", - "2d2e31": "2d2e31", "733f50": "620a33", "476d72": "793f5e", "b3627d": "a7225c", @@ -29,7 +24,6 @@ "639ba6": "408c62", "2d8ec4": "952c3f", "1eb9ee": "c6496f", - "808080": "808080", "8dafaf": "b681a6", "bfbfbf": "bfb4b9", "bad8d8": "deabce", diff --git a/public/images/pokemon/variant/exp/back/730.json b/public/images/pokemon/variant/exp/back/730.json index ae6d464dd3f..f8ee7fb709d 100644 --- a/public/images/pokemon/variant/exp/back/730.json +++ b/public/images/pokemon/variant/exp/back/730.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "843843": "a62c20", "8d3f4a": "a62c20", "c46074": "e54c41", @@ -21,11 +20,9 @@ "c0bdc1": "beaac0", "aac7e6": "ea7c5b", "f8f8f8": "fff2d4", - "faf8f8": "f1e8f1", - "fef8f8": "fef8f8" + "faf8f8": "f1e8f1" }, "2": { - "101010": "101010", "843843": "5c2141", "8d3f4a": "1d1638", "c46074": "c17b97", @@ -46,7 +43,6 @@ "c0bdc1": "c0b4a5", "aac7e6": "e9a5c0", "f8f8f8": "f5edee", - "faf8f8": "f5f3e3", - "fef8f8": "fef8f8" + "faf8f8": "f5f3e3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/734.json b/public/images/pokemon/variant/exp/back/734.json index 03d724ed370..d46c448a6b1 100644 --- a/public/images/pokemon/variant/exp/back/734.json +++ b/public/images/pokemon/variant/exp/back/734.json @@ -2,23 +2,19 @@ "1": { "753933": "03192d", "6b4f27": "523a44", - "070707": "070707", "ba836d": "35576b", "f0cd84": "c1aaaa", "c19462": "907e82", "9c5b50": "2a3f52", - "322f2c": "523716", - "000000": "000000" + "322f2c": "523716" }, "2": { "753933": "26201f", "6b4f27": "241b1b", - "070707": "070707", "ba836d": "a69c98", "f0cd84": "4d4242", "c19462": "362e2e", "9c5b50": "786a66", - "322f2c": "464a4d", - "000000": "000000" + "322f2c": "464a4d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/735.json b/public/images/pokemon/variant/exp/back/735.json index e647e22d65c..93a57454d38 100644 --- a/public/images/pokemon/variant/exp/back/735.json +++ b/public/images/pokemon/variant/exp/back/735.json @@ -5,7 +5,6 @@ "e8eaa2": "c9b1ab", "c29b49": "7a6a6d", "9c7c5c": "354c6b", - "0f0f0f": "0f0f0f", "805744": "2a3252", "5a3732": "03102d", "282726": "462000", @@ -17,10 +16,8 @@ "e8eaa2": "5c5353", "c29b49": "362e2e", "9c7c5c": "ada5a4", - "0f0f0f": "0f0f0f", "805744": "90827e", "5a3732": "524b4b", - "282726": "282726", "484440": "423d3d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/748.json b/public/images/pokemon/variant/exp/back/748.json index 7929514bcda..d5e90eed771 100644 --- a/public/images/pokemon/variant/exp/back/748.json +++ b/public/images/pokemon/variant/exp/back/748.json @@ -1,7 +1,6 @@ { "1": { "943732": "5c075b", - "101010": "101010", "f28c4f": "c639bd", "e25025": "a21f90", "93d1d7": "df7b52", @@ -11,12 +10,10 @@ "455b85": "892e20", "525898": "6c3776", "b7429a": "d29784", - "d76fa5": "edd5ca", - "171539": "171539" + "d76fa5": "edd5ca" }, "2": { "943732": "ac063c", - "101010": "101010", "f28c4f": "ff3f5a", "e25025": "e12350", "93d1d7": "5bd97f", @@ -26,7 +23,6 @@ "455b85": "186443", "525898": "d75b3c", "b7429a": "1c524b", - "d76fa5": "2b6157", - "171539": "171539" + "d76fa5": "2b6157" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/751.json b/public/images/pokemon/variant/exp/back/751.json index c28b7065b6a..6af2a3b1c4f 100644 --- a/public/images/pokemon/variant/exp/back/751.json +++ b/public/images/pokemon/variant/exp/back/751.json @@ -4,12 +4,10 @@ "5faecb": "ae504b", "a2d5e6": "d37075", "cfebf7": "ffc8d1", - "f7f7f7": "f7f7f7", "4b5528": "3a112f", "899128": "4e1f42", "47849e": "f1977b", "cfe436": "673252", - "101010": "101010", "49757f": "9e4155", "6a95a3": "d37075", "3c434d": "812b3e", @@ -20,12 +18,10 @@ "5faecb": "b56543", "a2d5e6": "ecaa61", "cfebf7": "f1dcc2", - "f7f7f7": "f7f7f7", "4b5528": "263756", "899128": "4980ac", "47849e": "585b6c", "cfe436": "72add9", - "101010": "101010", "49757f": "c77a4f", "6a95a3": "ecaa61", "3c434d": "ba5c2c", diff --git a/public/images/pokemon/variant/exp/back/752.json b/public/images/pokemon/variant/exp/back/752.json index 4cedfc9ad56..3da662e1086 100644 --- a/public/images/pokemon/variant/exp/back/752.json +++ b/public/images/pokemon/variant/exp/back/752.json @@ -2,13 +2,10 @@ "1": { "648ca2": "7c3b51", "cae1ec": "ffc8d1", - "f7f7f7": "f7f7f7", "a1bcca": "d187a0", "8c9b26": "4e1f42", - "101010": "101010", "434a1c": "3a112f", "cde425": "673252", - "000000": "000000", "262e35": "812b3e", "253f45": "4c152c", "957759": "5ea3b8", @@ -22,13 +19,10 @@ "2": { "648ca2": "55506a", "cae1ec": "dce7ee", - "f7f7f7": "f7f7f7", "a1bcca": "a7a2bc", "8c9b26": "4980ac", - "101010": "101010", "434a1c": "263756", "cde425": "72add9", - "000000": "000000", "262e35": "d49435", "253f45": "834723", "957759": "bc521d", diff --git a/public/images/pokemon/variant/exp/back/753.json b/public/images/pokemon/variant/exp/back/753.json index e4fdc6bb6cc..26e48f43509 100644 --- a/public/images/pokemon/variant/exp/back/753.json +++ b/public/images/pokemon/variant/exp/back/753.json @@ -3,30 +3,24 @@ "234028": "2e1643", "5ba668": "4e2c62", "468050": "3e2253", - "101010": "101010", "315945": "0e2616", "549977": "1b3822", "69bf94": "27452c", "d98d9a": "a55c36", "ffbfca": "b47145", "803340": "682c16", - "f8f8f8": "f8f8f8", - "cc5266": "a55c36", - "bfbfbf": "bfbfbf" + "cc5266": "a55c36" }, "2": { "234028": "531034", "5ba668": "ce54b0", "468050": "9b2d76", - "101010": "101010", "315945": "441342", "549977": "5a215a", "69bf94": "6e3472", "d98d9a": "263b83", "ffbfca": "3454a5", "803340": "0b1d4e", - "f8f8f8": "f8f8f8", - "cc5266": "263b83", - "bfbfbf": "bfbfbf" + "cc5266": "263b83" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/754.json b/public/images/pokemon/variant/exp/back/754.json index f7c71f90a95..5fb99ea57c9 100644 --- a/public/images/pokemon/variant/exp/back/754.json +++ b/public/images/pokemon/variant/exp/back/754.json @@ -1,7 +1,6 @@ { "1": { "803340": "82180e", - "101010": "101010", "ff667f": "c95623", "cc5266": "ac351f", "ffbfca": "f48b49", diff --git a/public/images/pokemon/variant/exp/back/755.json b/public/images/pokemon/variant/exp/back/755.json index 85e1f5b2498..f24a4e444bd 100644 --- a/public/images/pokemon/variant/exp/back/755.json +++ b/public/images/pokemon/variant/exp/back/755.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "7a3f7a": "451233", "edb792": "b08598", "fdff97": "e4c3d0", @@ -21,7 +20,6 @@ "b5cc91": "866eaf" }, "2": { - "101010": "101010", "7a3f7a": "1d225e", "edb792": "99c1bd", "fdff97": "d5f9f2", diff --git a/public/images/pokemon/variant/exp/back/756.json b/public/images/pokemon/variant/exp/back/756.json index 726f32c8955..674a13ce35f 100644 --- a/public/images/pokemon/variant/exp/back/756.json +++ b/public/images/pokemon/variant/exp/back/756.json @@ -10,7 +10,6 @@ "cbd59f": "e5aff3", "dcff44": "e5aff3", "c9e161": "e5aff3", - "101010": "101010", "764b67": "451233", "d08aab": "6c344f", "f5bcd8": "904b66", @@ -30,7 +29,6 @@ "cbd59f": "dffffa", "dcff44": "dffffa", "c9e161": "dffffa", - "101010": "101010", "764b67": "0d7a66", "d08aab": "81e3c9", "f5bcd8": "98f5d1", diff --git a/public/images/pokemon/variant/exp/back/761.json b/public/images/pokemon/variant/exp/back/761.json index be3c472eba7..d320917a94e 100644 --- a/public/images/pokemon/variant/exp/back/761.json +++ b/public/images/pokemon/variant/exp/back/761.json @@ -2,19 +2,14 @@ "1": { "476629": "215e59", "8fcc52": "70d2e1", - "101010": "101010", "6b993d": "398793", "80334d": "251936", "b3476b": "7e5cdb", - "e55c8a": "9f86e4", - "bfbfbf": "bfbfbf", - "737373": "737373", - "f8f8f8": "f8f8f8" + "e55c8a": "9f86e4" }, "2": { "476629": "3e0a11", "8fcc52": "86232e", - "101010": "101010", "6b993d": "5a0a16", "80334d": "0f0f0f", "b3476b": "254536", diff --git a/public/images/pokemon/variant/exp/back/762.json b/public/images/pokemon/variant/exp/back/762.json index 824aed7099b..bd2037e95c5 100644 --- a/public/images/pokemon/variant/exp/back/762.json +++ b/public/images/pokemon/variant/exp/back/762.json @@ -2,12 +2,8 @@ "1": { "446328": "215e59", "96c853": "70d2e1", - "0f0f0f": "0f0f0f", "659344": "398793", "ebe130": "e66556", - "72585f": "72585f", - "fdfdfd": "fdfdfd", - "c7b8c4": "c7b8c4", "962354": "45366e", "f26284": "7e5cdb", "6a1533": "251936", @@ -16,7 +12,6 @@ "2": { "446328": "3e0a11", "96c853": "86232e", - "0f0f0f": "0f0f0f", "659344": "5a0a16", "ebe130": "5c0505", "72585f": "574348", diff --git a/public/images/pokemon/variant/exp/back/763.json b/public/images/pokemon/variant/exp/back/763.json index fffb9c6e439..709b53ce6cd 100644 --- a/public/images/pokemon/variant/exp/back/763.json +++ b/public/images/pokemon/variant/exp/back/763.json @@ -1,6 +1,5 @@ { "1": { - "00131c": "00131c", "c8a848": "af3e31", "c13d76": "674dad", "eaee46": "e66556", @@ -9,15 +8,11 @@ "6d9b62": "398793", "9ce783": "b3f5ff", "84c36f": "70d2e1", - "dac2d5": "dac2d5", - "fefefe": "fefefe", - "6a6274": "6a6274", "ef91aa": "c0abf7", "d75f7f": "9f86e4", "441e2c": "251936" }, "2": { - "00131c": "00131c", "c8a848": "391717", "c13d76": "254536", "eaee46": "5c0505", diff --git a/public/images/pokemon/variant/exp/back/767.json b/public/images/pokemon/variant/exp/back/767.json index 74479ed25ec..405506f716f 100644 --- a/public/images/pokemon/variant/exp/back/767.json +++ b/public/images/pokemon/variant/exp/back/767.json @@ -1,7 +1,6 @@ { "1": { "46334f": "844008", - "080808": "080808", "a65e97": "e8a92a", "713e70": "c86910", "3f5252": "202733", @@ -12,7 +11,6 @@ }, "2": { "46334f": "091b52", - "080808": "080808", "a65e97": "2849ac", "713e70": "1c306d", "3f5252": "3d105f", diff --git a/public/images/pokemon/variant/exp/back/768.json b/public/images/pokemon/variant/exp/back/768.json index 43d48fea203..ab1bd155946 100644 --- a/public/images/pokemon/variant/exp/back/768.json +++ b/public/images/pokemon/variant/exp/back/768.json @@ -4,9 +4,7 @@ "c8e1cd": "6e6d6d", "546b57": "202733", "81b68e": "494950", - "101010": "101010", "842886": "c85710", - "000000": "000000", "cc5fcf": "ff7e2c", "9a6982": "c86910", "7a4952": "844008", @@ -21,16 +19,11 @@ "c8e1cd": "2849ac", "546b57": "091b52", "81b68e": "1c306d", - "101010": "101010", "842886": "5722a6", - "000000": "000000", "cc5fcf": "8b51e1", "9a6982": "452772", "7a4952": "3d105f", - "2f3330": "2f3330", - "404843": "404843", "498f6c": "8cdded", - "bd95a8": "844caf", - "5c635e": "5c635e" + "bd95a8": "844caf" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/771.json b/public/images/pokemon/variant/exp/back/771.json index 9876b7a067f..02b1131f68e 100644 --- a/public/images/pokemon/variant/exp/back/771.json +++ b/public/images/pokemon/variant/exp/back/771.json @@ -2,9 +2,7 @@ "1": { "73223d": "570a00", "d94174": "de884b", - "101010": "101010", "992e52": "c95340", - "1a1a1a": "1a1a1a", "404040": "731b33", "595959": "bd5e49", "f8f8f8": "dec890", @@ -14,9 +12,7 @@ "2": { "73223d": "b94114", "d94174": "ead059", - "101010": "101010", "992e52": "db7b43", - "1a1a1a": "1a1a1a", "404040": "dacece", "595959": "1c1c2d", "f8f8f8": "4d4d65", diff --git a/public/images/pokemon/variant/exp/back/772.json b/public/images/pokemon/variant/exp/back/772.json index d367e8f88f7..972da787a08 100644 --- a/public/images/pokemon/variant/exp/back/772.json +++ b/public/images/pokemon/variant/exp/back/772.json @@ -2,7 +2,6 @@ "1": { "454f55": "232843", "92a6a9": "889db1", - "080808": "080808", "6b777e": "526085", "642515": "7e4f36", "c55e3a": "eed8a1", @@ -23,7 +22,6 @@ "2": { "454f55": "18182a", "92a6a9": "65657c", - "080808": "080808", "6b777e": "3b3b51", "642515": "444961", "c55e3a": "c1cfd8", diff --git a/public/images/pokemon/variant/exp/back/773.json b/public/images/pokemon/variant/exp/back/773.json index b9a89e12871..c331b8800a9 100644 --- a/public/images/pokemon/variant/exp/back/773.json +++ b/public/images/pokemon/variant/exp/back/773.json @@ -7,10 +7,8 @@ "e3e6ec": "bdd1e5", "d3d7df": "98a8be", "bcbbc5": "788fb5", - "080808": "080808", "3f3b50": "1e172a", "aba7bc": "493d55", - "c86741": "c86741", "483c39": "3a2d53", "e9eaf8": "e7ebed", "e64f5e": "f1944a", @@ -31,12 +29,8 @@ "e3e6ec": "444455", "d3d7df": "b4bcc4", "bcbbc5": "242433", - "080808": "080808", - "3f3b50": "3f3b50", "aba7bc": "dbd8e8", - "c86741": "c86741", "483c39": "778894", - "e9eaf8": "e9eaf8", "e64f5e": "98ce58", "1d1845": "41434e", "0073bf": "6a6c75", diff --git a/public/images/pokemon/variant/exp/back/777.json b/public/images/pokemon/variant/exp/back/777.json index eb3a3edb5cc..b3754df1a64 100644 --- a/public/images/pokemon/variant/exp/back/777.json +++ b/public/images/pokemon/variant/exp/back/777.json @@ -1,18 +1,14 @@ { "1": { - "101010": "101010", "ffea80": "dec2f0", "4d4d4d": "362952", "ccb852": "ac8fbb", "b3b3b3": "8e71cd", "808080": "645393", "73593f": "ae428a", - "bfbfbf": "d0dadb", - "f8f8f8": "f8f8f8", - "595959": "595959" + "bfbfbf": "d0dadb" }, "2": { - "101010": "101010", "ffea80": "d65d3c", "4d4d4d": "294127", "ccb852": "7b3c26", diff --git a/public/images/pokemon/variant/exp/back/778-busted.json b/public/images/pokemon/variant/exp/back/778-busted.json index 21f796f0657..d75d3ad86b3 100644 --- a/public/images/pokemon/variant/exp/back/778-busted.json +++ b/public/images/pokemon/variant/exp/back/778-busted.json @@ -1,24 +1,20 @@ { "1": { - "000000": "000000", - "101010": "101010", + "000000": "101010", "404040": "2d1818", "b3a76b": "8d4f3d", "f2e291": "aa6f46", "665f3d": "542c21", - "000000": "101010", "4d361f": "844b20", "b37d47": "fabc5f", "805933": "b97d2c" }, "2": { - "000000": "000000", "101010": "000000", "404040": "0c123a", "b3a76b": "3d2e4f", "f2e291": "5b496b", "665f3d": "1b1031", - "000000": "000000", "4d361f": "3e5075", "b37d47": "8eb5cd", "805933": "6d80a4" diff --git a/public/images/pokemon/variant/exp/back/778-disguised.json b/public/images/pokemon/variant/exp/back/778-disguised.json index 3ebf48117fb..f981ba3fe96 100644 --- a/public/images/pokemon/variant/exp/back/778-disguised.json +++ b/public/images/pokemon/variant/exp/back/778-disguised.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "404040": "2d1818", "b3a76b": "8d4f3d", "f2e291": "aa6f46", @@ -16,9 +15,8 @@ "b3a76b": "3d2e4f", "f2e291": "5b496b", "665f3d": "1b1031", - "000000": "000000", "4d361f": "3e5075", "b37d47": "8eb5cd", "805933": "6d80a4" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/779.json b/public/images/pokemon/variant/exp/back/779.json index 82cf0169d73..6b59b94e154 100644 --- a/public/images/pokemon/variant/exp/back/779.json +++ b/public/images/pokemon/variant/exp/back/779.json @@ -2,7 +2,6 @@ "1": { "553d72": "a52121", "9967ba": "c62c2c", - "262735": "262735", "729dcd": "667fb2", "a4f2f7": "caefff", "e66aa5": "602b7a", @@ -10,21 +9,17 @@ "f889bb": "84539d", "fae676": "faa28c", "db9957": "d65e5e", - "bbc8fb": "94c5da", - "fcfcfc": "fcfcfc" + "bbc8fb": "94c5da" }, "2": { "553d72": "4545c4", "9967ba": "6666e2", - "262735": "262735", "729dcd": "afafe1", "a4f2f7": "eeeeff", "e66aa5": "dca032", "922755": "935b3b", "f889bb": "ffd166", "fae676": "454457", - "db9957": "2d2c43", - "bbc8fb": "bbc8fb", - "fcfcfc": "fcfcfc" + "db9957": "2d2c43" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/789.json b/public/images/pokemon/variant/exp/back/789.json index 6654144c36e..f1e5ac88c50 100644 --- a/public/images/pokemon/variant/exp/back/789.json +++ b/public/images/pokemon/variant/exp/back/789.json @@ -4,17 +4,10 @@ "404c8e": "7d365a", "129fdc": "6a12dc", "34bdef": "9255f2", - "f8f8f8": "f8f8f8", - "1c242a": "1c242a", - "000000": "000000", "2e377a": "64173e", - "727449": "727449", - "f9f7ba": "f9f7ba", - "efed81": "efed81", "643f8e": "dc48a7", "8e4994": "944976", - "e2639d": "f77247", - "a74f6e": "a74f6e" + "e2639d": "f77247" }, "1": { "2872b0": "f6a42d", diff --git a/public/images/pokemon/variant/exp/back/790.json b/public/images/pokemon/variant/exp/back/790.json index 415b2d26074..e111a9e35b9 100644 --- a/public/images/pokemon/variant/exp/back/790.json +++ b/public/images/pokemon/variant/exp/back/790.json @@ -4,14 +4,9 @@ "faf54e": "e5efff", "c87522": "7b89c4", "e8a61e": "aebde2", - "101010": "101010", - "fdfdfd": "fdfdfd", "169fda": "ffdf49", "1d3e89": "a20b02", - "e2629f": "e2629f", "764394": "eb5b2a", - "1e232b": "1e232b", - "17a6e3": "17a6e3", "2c5fab": "ff4079" }, "2": { @@ -19,14 +14,9 @@ "faf54e": "d4314c", "c87522": "890425", "e8a61e": "ae1a3d", - "101010": "101010", - "fdfdfd": "fdfdfd", - "169fda": "169fda", "1d3e89": "0f2388", "e2629f": "71ffd8", "764394": "7e13bf", - "1e232b": "1e232b", - "17a6e3": "17a6e3", "2c5fab": "3dc7e0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/792.json b/public/images/pokemon/variant/exp/back/792.json index faa9a7229bf..85cad197450 100644 --- a/public/images/pokemon/variant/exp/back/792.json +++ b/public/images/pokemon/variant/exp/back/792.json @@ -1,7 +1,6 @@ { "1": { "69551f": "675340", - "000000": "000000", "a19263": "afa191", "e3da81": "e6ded2", "fff6ef": "fdfce8", @@ -11,15 +10,10 @@ "edf0ff": "ffd386", "671ace": "eb422a", "494dcc": "dd0e7d", - "7bcece": "ff31e0", - "124027": "124027", - "7a9e67": "7a9e67", - "525841": "525841", - "b6e4cb": "b6e4cb" + "7bcece": "ff31e0" }, "2": { "69551f": "6b0420", - "000000": "000000", "a19263": "980f2a", "e3da81": "c22741", "fff6ef": "ff6d74", @@ -29,10 +23,6 @@ "edf0ff": "ffd1d1", "671ace": "1550a1", "494dcc": "3692d0", - "7bcece": "58cbe9", - "124027": "124027", - "7a9e67": "7a9e67", - "525841": "525841", - "b6e4cb": "b6e4cb" + "7bcece": "58cbe9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/793.json b/public/images/pokemon/variant/exp/back/793.json index 76e104003d1..bb3d3d8793e 100644 --- a/public/images/pokemon/variant/exp/back/793.json +++ b/public/images/pokemon/variant/exp/back/793.json @@ -2,12 +2,10 @@ "1": { "a9c0c2": "941d20", "f3f8f8": "ffac61", - "fefefe": "fefefe", "66808c": "47090d", "32468d": "098c5d", "57badf": "40ffcc", "ccd9db": "db5930", - "121212": "121212", "3c7ccc": "1ecb76", "becfd1": "c03a25", "43545c": "39030e" @@ -15,13 +13,9 @@ "2": { "a9c0c2": "1f1b9c", "f3f8f8": "bd6ffd", - "fefefe": "fefefe", "66808c": "372983", - "32468d": "32468d", "57badf": "6bebff", "ccd9db": "8542ea", - "121212": "121212", - "3c7ccc": "3c7ccc", "becfd1": "5128c3", "43545c": "35226f" } diff --git a/public/images/pokemon/variant/exp/back/797.json b/public/images/pokemon/variant/exp/back/797.json index 1393cc2bf7d..7daa9fd6b7e 100644 --- a/public/images/pokemon/variant/exp/back/797.json +++ b/public/images/pokemon/variant/exp/back/797.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "135f58": "a65017", "219383": "bb6e1d", "bcc8c0": "f2b97f", @@ -21,7 +20,6 @@ "b3e088": "ffe4b2" }, "2": { - "101010": "101010", "135f58": "77d4a9", "219383": "93d9a7", "bcc8c0": "242733", diff --git a/public/images/pokemon/variant/exp/back/798.json b/public/images/pokemon/variant/exp/back/798.json index 2026ff45058..fc082c5b047 100644 --- a/public/images/pokemon/variant/exp/back/798.json +++ b/public/images/pokemon/variant/exp/back/798.json @@ -1,10 +1,8 @@ { "1": { "707070": "18470e", - "3f3f33": "3f3f33", "c8c8c8": "588720", "686877": "7b4b2b", - "2d2b26": "2d2b26", "959595": "18470e", "f9f9f9": "ddbe79", "bc5b35": "07421f", @@ -13,7 +11,6 @@ "e1921d": "136733", "e5e5e5": "87ab39", "ffffff": "d8e169", - "000000": "000000", "582914": "2c180e", "ad410b": "41281c", "e75303": "614537" @@ -32,7 +29,6 @@ "e1921d": "933940", "e5e5e5": "4a86b8", "ffffff": "87d2da", - "000000": "000000", "582914": "8a482d", "ad410b": "e1a44f", "e75303": "ffeb93" diff --git a/public/images/pokemon/variant/exp/back/80-mega.json b/public/images/pokemon/variant/exp/back/80-mega.json index 1506d6c7c6b..e6b135322da 100644 --- a/public/images/pokemon/variant/exp/back/80-mega.json +++ b/public/images/pokemon/variant/exp/back/80-mega.json @@ -1,11 +1,8 @@ { "1": { "783030": "3f2729", - "181818": "181818", "f89090": "885345", "e06878": "5b3332", - "deded5": "deded5", - "f8f8f8": "f8f8f8", "805820": "9f675f", "e8d080": "e0b69d", "505058": "7c5b40", @@ -15,11 +12,8 @@ }, "2": { "783030": "c08746", - "181818": "181818", "f89090": "eebd6a", "e06878": "de9048", - "deded5": "deded5", - "f8f8f8": "f8f8f8", "805820": "69080f", "e8d080": "d16b34", "505058": "192b32", diff --git a/public/images/pokemon/variant/exp/back/800-dawn-wings.json b/public/images/pokemon/variant/exp/back/800-dawn-wings.json index 8f3b2dd7c17..ff35f12beeb 100644 --- a/public/images/pokemon/variant/exp/back/800-dawn-wings.json +++ b/public/images/pokemon/variant/exp/back/800-dawn-wings.json @@ -4,7 +4,6 @@ "72baf3": "e6ded2", "3695ce": "afa191", "c7e5ff": "fbf5ec", - "1f1d35": "1f1d35", "1b2021": "460019", "5a646c": "890425", "293233": "700023", @@ -13,9 +12,7 @@ "617998": "86102d", "74b2d8": "bc1836", "a6bad9": "e5a355", - "000000": "000000", "b2d7f0": "eb422a", - "101010": "101010", "edf0ff": "ffd386" }, "2": { @@ -23,8 +20,6 @@ "72baf3": "970b22", "3695ce": "5b0318", "c7e5ff": "cf2f40", - "1f1d35": "1f1d35", - "1b2021": "1b2021", "5a646c": "602483", "293233": "3e135f", "434b51": "59109c", @@ -32,9 +27,7 @@ "617998": "b95261", "74b2d8": "1a3186", "a6bad9": "e79093", - "000000": "000000", "b2d7f0": "1550a1", - "101010": "101010", "edf0ff": "ffd1d1" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/800-ultra.json b/public/images/pokemon/variant/exp/back/800-ultra.json index 0906a2418fe..0db88bd2a07 100644 --- a/public/images/pokemon/variant/exp/back/800-ultra.json +++ b/public/images/pokemon/variant/exp/back/800-ultra.json @@ -8,8 +8,7 @@ "f8f8d0": "ff7e75", "d0b868": "bc0125", "7d673b": "770031", - "e8e088": "ee2033", - "282828": "282828" + "e8e088": "ee2033" }, "2": { "b0a080": "e552ec", @@ -20,7 +19,6 @@ "f8f8d0": "ff8ae9", "d0b868": "900090", "7d673b": "33003d", - "e8e088": "d10cc7", - "282828": "282828" + "e8e088": "d10cc7" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/800.json b/public/images/pokemon/variant/exp/back/800.json index b63455df5b9..e789115bb1f 100644 --- a/public/images/pokemon/variant/exp/back/800.json +++ b/public/images/pokemon/variant/exp/back/800.json @@ -5,8 +5,7 @@ "fbfbfb": "e8e7ff", "768188": "c8245d", "424a50": "890425", - "b5bbbf": "a266eb", - "080808": "080808" + "b5bbbf": "a266eb" }, "2": { "2b3233": "3e135f", @@ -14,7 +13,6 @@ "fbfbfb": "ffb8c9", "768188": "b13dc8", "424a50": "602483", - "b5bbbf": "f66fdc", - "080808": "080808" + "b5bbbf": "f66fdc" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/802.json b/public/images/pokemon/variant/exp/back/802.json index a432fd6bca3..0b1cdb6399d 100644 --- a/public/images/pokemon/variant/exp/back/802.json +++ b/public/images/pokemon/variant/exp/back/802.json @@ -2,19 +2,16 @@ "0": { "494949": "3a7e5d", "686868": "76bc8f", - "2f2f2f": "084434", - "101010": "101010" + "2f2f2f": "084434" }, "1": { "494949": "2f3079", "686868": "515aad", - "2f2f2f": "17145e", - "101010": "101010" + "2f2f2f": "17145e" }, "2": { "494949": "97123b", "686868": "ce3e63", - "2f2f2f": "5a0423", - "101010": "101010" + "2f2f2f": "5a0423" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/803.json b/public/images/pokemon/variant/exp/back/803.json index 215130ac568..09cd43296d2 100644 --- a/public/images/pokemon/variant/exp/back/803.json +++ b/public/images/pokemon/variant/exp/back/803.json @@ -1,7 +1,6 @@ { "1": { "78757f": "449e93", - "101010": "101010", "ccc0d8": "e3ffec", "98295e": "27579e", "d13d8f": "3492b9", @@ -13,7 +12,6 @@ }, "2": { "78757f": "cd9b85", - "101010": "101010", "ccc0d8": "ffefe0", "98295e": "a12f63", "d13d8f": "d6487a", diff --git a/public/images/pokemon/variant/exp/back/804.json b/public/images/pokemon/variant/exp/back/804.json index b41cb813bda..624c19a9879 100644 --- a/public/images/pokemon/variant/exp/back/804.json +++ b/public/images/pokemon/variant/exp/back/804.json @@ -5,7 +5,6 @@ "b69aef": "359faf", "9d3478": "c74736", "6b3357": "81262d", - "101010": "101010", "ec74d8": "e88354", "583f87": "212149", "987bcc": "22658d", @@ -22,7 +21,6 @@ "b69aef": "68b363", "9d3478": "dcbb94", "6b3357": "7e4e3d", - "101010": "101010", "ec74d8": "fff8cc", "583f87": "103a47", "987bcc": "2d794e", diff --git a/public/images/pokemon/variant/exp/back/808.json b/public/images/pokemon/variant/exp/back/808.json index 8229e2a6550..8a79e72e90b 100644 --- a/public/images/pokemon/variant/exp/back/808.json +++ b/public/images/pokemon/variant/exp/back/808.json @@ -4,10 +4,8 @@ "ab732b": "ce5a6f", "dea220": "ff7c8e", "ffda45": "ffbeae", - "101010": "101010", "3d3534": "2c4048", "59544e": "38585b", - "f9f9f9": "f9f9f9", "67675f": "426e73", "dcdcda": "c2effc", "8a8d7e": "6a8f97", @@ -20,15 +18,11 @@ "ab732b": "2d2931", "dea220": "64486f", "ffda45": "9b6e98", - "101010": "101010", "3d3534": "780000", "59544e": "9e002e", - "f9f9f9": "f9f9f9", "67675f": "ba2b41", "dcdcda": "ffbe6e", "8a8d7e": "d66352", - "b1b5a6": "f49769", - "741012": "741012", - "c2292e": "c2292e" + "b1b5a6": "f49769" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/809.json b/public/images/pokemon/variant/exp/back/809.json index 96cdbc3d9c3..1f597aa305e 100644 --- a/public/images/pokemon/variant/exp/back/809.json +++ b/public/images/pokemon/variant/exp/back/809.json @@ -4,7 +4,6 @@ "211d1d": "232a2b", "59544e": "38585b", "814f23": "85374d", - "101010": "101010", "ab732b": "ce5a6f", "67675f": "426e73", "ffda45": "ffbeae", @@ -12,23 +11,19 @@ "dea220": "ff7c8e", "b1b5a6": "98d6f0", "dcdcda": "c2effc", - "c2292e": "ffce6b", - "f9f9f9": "f9f9f9" + "c2292e": "ffce6b" }, "2": { "3d3534": "780000", "211d1d": "570000", "59544e": "9e002e", "814f23": "101010", - "101010": "101010", "ab732b": "2d2931", "67675f": "ba2b41", "ffda45": "9b6e98", "8a8d7e": "d66352", "dea220": "64486f", "b1b5a6": "f49769", - "dcdcda": "ffbe6e", - "c2292e": "c2292e", - "f9f9f9": "f9f9f9" + "dcdcda": "ffbe6e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/816.json b/public/images/pokemon/variant/exp/back/816.json index 8153a53decd..2db6adf77dc 100644 --- a/public/images/pokemon/variant/exp/back/816.json +++ b/public/images/pokemon/variant/exp/back/816.json @@ -7,8 +7,7 @@ "425493": "7d292a", "5091c0": "b5464b", "6ab6d2": "e66371", - "add7e7": "e6828e", - "101010": "101010" + "add7e7": "e6828e" }, "2": { "1f2d63": "6e1a4c", @@ -18,7 +17,6 @@ "425493": "813535", "5091c0": "dea26c", "6ab6d2": "ffeeb8", - "add7e7": "fffbec", - "101010": "101010" + "add7e7": "fffbec" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/817.json b/public/images/pokemon/variant/exp/back/817.json index 7c74f55eef9..818b677a356 100644 --- a/public/images/pokemon/variant/exp/back/817.json +++ b/public/images/pokemon/variant/exp/back/817.json @@ -8,12 +8,10 @@ "6c4499": "a1572f", "70cce0": "eb8577", "a278c7": "dd8a4f", - "101010": "101010", "3d6424": "83403e", "6ba01b": "a36d5d", "8cd222": "d99f8d", - "ccc7cd": "c7c1bd", - "fefefe": "fefefe" + "ccc7cd": "c7c1bd" }, "2": { "183569": "731f4e", @@ -24,11 +22,9 @@ "6c4499": "2c5aa8", "70cce0": "ffe5a3", "a278c7": "459dca", - "101010": "101010", "3d6424": "731317", "6ba01b": "ba2c22", "8cd222": "d85633", - "ccc7cd": "becee1", - "fefefe": "fefefe" + "ccc7cd": "becee1" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/818.json b/public/images/pokemon/variant/exp/back/818.json index 5b28c8a556c..8d0c77966e9 100644 --- a/public/images/pokemon/variant/exp/back/818.json +++ b/public/images/pokemon/variant/exp/back/818.json @@ -7,8 +7,6 @@ "e9cd5f": "614432", "549bc3": "a55846", "9cd2e2": "e1926f", - "101010": "101010", - "fdfdfd": "fdfdfd", "ff7c00": "5885a2", "31302f": "251e1c", "646565": "4c4643", @@ -23,8 +21,6 @@ "e9cd5f": "4484c3", "549bc3": "e38544", "9cd2e2": "ffcd57", - "101010": "101010", - "fdfdfd": "fdfdfd", "ff7c00": "a13047", "31302f": "571342", "646565": "be3a7d", diff --git a/public/images/pokemon/variant/exp/back/821.json b/public/images/pokemon/variant/exp/back/821.json index 6101b9d4261..dcbdaf08804 100644 --- a/public/images/pokemon/variant/exp/back/821.json +++ b/public/images/pokemon/variant/exp/back/821.json @@ -1,6 +1,5 @@ { "1": { - "080808": "080808", "201a12": "4b2a5e", "505038": "bc7dc3", "272b47": "6a445c", @@ -13,7 +12,6 @@ "ac9534": "be919e" }, "2": { - "080808": "080808", "201a12": "a46828", "505038": "eaae36", "272b47": "612a0e", diff --git a/public/images/pokemon/variant/exp/back/822.json b/public/images/pokemon/variant/exp/back/822.json index b9307b38f8a..d65996b424d 100644 --- a/public/images/pokemon/variant/exp/back/822.json +++ b/public/images/pokemon/variant/exp/back/822.json @@ -1,29 +1,21 @@ { "1": { "403524": "ad6f83", - "201a12": "201a12", "505038": "e7a6c9", "252d49": "c8658a", - "080808": "080808", "2f4577": "f4a0b9", "426eb2": "ffdeeb", "95a1b6": "57445a", - "e21d22": "e21d22", - "f4f4f4": "f4f4f4", "659aba": "fff6f8", "444f59": "2e262f" }, "2": { "403524": "b95212", - "201a12": "201a12", "505038": "dc7c16", "252d49": "91591e", - "080808": "080808", "2f4577": "eaae36", "426eb2": "edd472", "95a1b6": "743419", - "e21d22": "e21d22", - "f4f4f4": "f4f4f4", "659aba": "fff1b9", "444f59": "541705" } diff --git a/public/images/pokemon/variant/exp/back/823.json b/public/images/pokemon/variant/exp/back/823.json index 50b332400a2..605c1cd8c1b 100644 --- a/public/images/pokemon/variant/exp/back/823.json +++ b/public/images/pokemon/variant/exp/back/823.json @@ -1,27 +1,22 @@ { "1": { - "010101": "010101", "251d4e": "6a445c", "434475": "f4a0b9", "303360": "ad6f83", "646ca8": "ffdeeb", "4d5488": "e7a6c9", "e80000": "df7b10", - "ffa8a8": "ffa8a8", "4e4150": "57445a", - "2e262f": "2e262f", "18173d": "4b2a5e", "2c2b58": "845195", "3e3d6d": "bc7dc3" }, "2": { - "010101": "010101", "251d4e": "612a0e", "434475": "dc7c16", "303360": "b95212", "646ca8": "edd472", "4d5488": "eaae36", - "e80000": "e80000", "ffa8a8": "ff4a4a", "4e4150": "743419", "2e262f": "541705", diff --git a/public/images/pokemon/variant/exp/back/829.json b/public/images/pokemon/variant/exp/back/829.json index 25f91b83ab6..4fa2d435fb0 100644 --- a/public/images/pokemon/variant/exp/back/829.json +++ b/public/images/pokemon/variant/exp/back/829.json @@ -4,8 +4,6 @@ "e09b24": "1da3c2", "f4d626": "4aebe3", "fef54b": "84fff5", - "fef1a7": "fef1a7", - "101010": "101010", "841d1a": "3b0122", "cf301f": "601335", "fb472f": "7b2640", @@ -18,7 +16,6 @@ "f4d626": "bc77ff", "fef54b": "e8aaff", "fef1a7": "f6e6ff", - "101010": "101010", "841d1a": "14103b", "cf301f": "24244b", "fb472f": "2f335d", diff --git a/public/images/pokemon/variant/exp/back/830.json b/public/images/pokemon/variant/exp/back/830.json index 90af6e47db5..5bf8a112cbe 100644 --- a/public/images/pokemon/variant/exp/back/830.json +++ b/public/images/pokemon/variant/exp/back/830.json @@ -6,8 +6,7 @@ "e8d5c6": "a2d2e7", "bab743": "c38ec6", "5c6738": "6f3e7b", - "8a9247": "9d6aa5", - "101010": "101010" + "8a9247": "9d6aa5" }, "2": { "c2aba0": "9471ae", @@ -16,7 +15,6 @@ "e8d5c6": "d5aee9", "bab743": "6a9cbb", "5c6738": "133049", - "8a9247": "3c627e", - "101010": "101010" + "8a9247": "3c627e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/835.json b/public/images/pokemon/variant/exp/back/835.json index 0e4b99223d7..0c68b758f61 100644 --- a/public/images/pokemon/variant/exp/back/835.json +++ b/public/images/pokemon/variant/exp/back/835.json @@ -1,7 +1,6 @@ { "1": { "844840": "051514", - "101010": "101010", "bd8d62": "e0bb76", "a26642": "aa8e5a", "d1cccb": "e7c78d", @@ -15,11 +14,9 @@ }, "2": { "844840": "313e38", - "101010": "101010", "bd8d62": "509468", "a26642": "3d5d59", "d1cccb": "a0bcaa", - "fbfbfb": "fbfbfb", "837a76": "43554d", "9a6229": "2b2042", "f7da11": "776baf", diff --git a/public/images/pokemon/variant/exp/back/836.json b/public/images/pokemon/variant/exp/back/836.json index c12f29903b3..9d71f85d604 100644 --- a/public/images/pokemon/variant/exp/back/836.json +++ b/public/images/pokemon/variant/exp/back/836.json @@ -1,12 +1,9 @@ { "1": { - "a06d21": "a06d21", - "0d0d0d": "0d0d0d", "fad833": "e0bb76", "c8ad25": "aa8e5a", "495043": "28797b", "cfc7c6": "cbcdb4", - "8c7b7a": "8c7b7a", "dec12e": "e0bb76", "f2efef": "fdffe1", "fff665": "e7c78d", @@ -15,7 +12,6 @@ }, "2": { "a06d21": "213d3a", - "0d0d0d": "0d0d0d", "fad833": "509468", "c8ad25": "3d5d59", "495043": "3c2e5b", diff --git a/public/images/pokemon/variant/exp/back/850.json b/public/images/pokemon/variant/exp/back/850.json index b5df39e115c..2f836819132 100644 --- a/public/images/pokemon/variant/exp/back/850.json +++ b/public/images/pokemon/variant/exp/back/850.json @@ -8,7 +8,6 @@ "681607": "065b58", "42221c": "36203c", "2f1610": "24122b", - "101010": "101010", "be5409": "25a96a", "f89e08": "a3ffb9" }, @@ -20,9 +19,6 @@ "804a3e": "7866cb", "681607": "4a1036", "42221c": "222957", - "2f1610": "121439", - "101010": "101010", - "be5409": "be5409", - "f89e08": "f89e08" + "2f1610": "121439" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/851.json b/public/images/pokemon/variant/exp/back/851.json index 9fca14e5e14..7a8cb9718c7 100644 --- a/public/images/pokemon/variant/exp/back/851.json +++ b/public/images/pokemon/variant/exp/back/851.json @@ -12,11 +12,9 @@ "42221c": "36203c", "2f1610": "24122b", "681607": "024f2d", - "101010": "101010", "941528": "005f35" }, "2": { - "be5409": "be5409", "f89e08": "f36d73", "ffd901": "ffc143", "5b2f26": "36426c", @@ -27,8 +25,6 @@ "ff5839": "ff6970", "42221c": "222957", "2f1610": "121439", - "681607": "6e0442", - "101010": "101010", - "941528": "941528" + "681607": "6e0442" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/854.json b/public/images/pokemon/variant/exp/back/854.json index e438e91cb2d..e5edbe9a044 100644 --- a/public/images/pokemon/variant/exp/back/854.json +++ b/public/images/pokemon/variant/exp/back/854.json @@ -9,7 +9,6 @@ "72cfcc": "7c2039", "af63c4": "ffffeb", "9aedea": "b74f6c", - "101010": "101010", "c3bfe0": "f2bbaa" }, "2": { @@ -22,7 +21,6 @@ "72cfcc": "7c7270", "af63c4": "82b183", "9aedea": "c9c0b9", - "101010": "101010", "c3bfe0": "524c4e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/855.json b/public/images/pokemon/variant/exp/back/855.json index 0b9ad0a2b86..9839eb600c6 100644 --- a/public/images/pokemon/variant/exp/back/855.json +++ b/public/images/pokemon/variant/exp/back/855.json @@ -8,7 +8,6 @@ "4bb2af": "531d2b", "9aedea": "b74f6c", "c3bfe0": "c06d66", - "101010": "101010", "f5f9fa": "f2bbaa", "733a87": "ef9e5c", "af63c4": "ffffeb", @@ -23,7 +22,6 @@ "4bb2af": "333231", "9aedea": "fdfdfd", "c3bfe0": "3e383a", - "101010": "101010", "f5f9fa": "524c4e", "733a87": "538c61", "af63c4": "82b183", diff --git a/public/images/pokemon/variant/exp/back/856.json b/public/images/pokemon/variant/exp/back/856.json index 3d245b74324..bfc575d89d7 100644 --- a/public/images/pokemon/variant/exp/back/856.json +++ b/public/images/pokemon/variant/exp/back/856.json @@ -2,7 +2,6 @@ "1": { "727ab1": "1d4a3b", "c8e9ff": "5ec183", - "181818": "181818", "acbfdf": "3b9665", "bb6a99": "043232", "f9d5da": "298675", @@ -13,7 +12,6 @@ "2": { "727ab1": "6b0124", "c8e9ff": "cb304d", - "181818": "181818", "acbfdf": "a11437", "bb6a99": "30163d", "f9d5da": "523f73", diff --git a/public/images/pokemon/variant/exp/back/858.json b/public/images/pokemon/variant/exp/back/858.json index 8bdfcf82426..8b37e152f56 100644 --- a/public/images/pokemon/variant/exp/back/858.json +++ b/public/images/pokemon/variant/exp/back/858.json @@ -2,7 +2,6 @@ "1": { "acbfdf": "3b9665", "948fc2": "287b59", - "101010": "101010", "c8e9ff": "5ec183", "727ab1": "1d4a3b", "d9cedb": "dec1c2", @@ -16,7 +15,6 @@ "2": { "acbfdf": "a11437", "948fc2": "8c0e32", - "101010": "101010", "c8e9ff": "cb304d", "727ab1": "6b0124", "d9cedb": "e4bcde", diff --git a/public/images/pokemon/variant/exp/back/859.json b/public/images/pokemon/variant/exp/back/859.json index 16dcecb181e..a3d7e501811 100644 --- a/public/images/pokemon/variant/exp/back/859.json +++ b/public/images/pokemon/variant/exp/back/859.json @@ -4,7 +4,6 @@ "8d3856": "376b2d", "f589c2": "9aba6d", "ffbff5": "dbe797", - "101010": "101010", "45366d": "5b1d15", "735aac": "a4332d", "947cd8": "cc5836" @@ -14,7 +13,6 @@ "8d3856": "30082d", "f589c2": "6b2b3e", "ffbff5": "904f55", - "101010": "101010", "45366d": "794935", "735aac": "f0c475", "947cd8": "f9e9a4" diff --git a/public/images/pokemon/variant/exp/back/860.json b/public/images/pokemon/variant/exp/back/860.json index fa3ee7f8bc4..939f40b9868 100644 --- a/public/images/pokemon/variant/exp/back/860.json +++ b/public/images/pokemon/variant/exp/back/860.json @@ -6,9 +6,7 @@ "352954": "3b1528", "8872b6": "c45949", "5d4694": "8b332d", - "101010": "101010", "433568": "5a1d27", - "000000": "000000", "409555": "244849", "356a3c": "162a35", "47be62": "366c59" @@ -20,9 +18,7 @@ "352954": "a26458", "8872b6": "f6e8b8", "5d4694": "dfc784", - "101010": "101010", "433568": "c98e63", - "000000": "000000", "409555": "272664", "356a3c": "090d50", "47be62": "3f386f" diff --git a/public/images/pokemon/variant/exp/back/861.json b/public/images/pokemon/variant/exp/back/861.json index acdc2e3c502..cec30107ea8 100644 --- a/public/images/pokemon/variant/exp/back/861.json +++ b/public/images/pokemon/variant/exp/back/861.json @@ -1,7 +1,6 @@ { "1": { "356a3c": "162a35", - "101010": "101010", "47be62": "366c59", "409555": "244849", "433568": "5a1d27", @@ -11,7 +10,6 @@ }, "2": { "356a3c": "090d50", - "101010": "101010", "47be62": "3f386f", "409555": "272664", "433568": "c98e63", diff --git a/public/images/pokemon/variant/exp/back/862.json b/public/images/pokemon/variant/exp/back/862.json index d7d0dd5b874..1a003f25573 100644 --- a/public/images/pokemon/variant/exp/back/862.json +++ b/public/images/pokemon/variant/exp/back/862.json @@ -1,7 +1,5 @@ { "1": { - "010101": "010101", - "1b2627": "1b2627", "474749": "156a66", "303034": "094448", "6f7071": "01473a", @@ -10,11 +8,9 @@ "f5f5f6": "f5ffea", "949496": "1c8155", "9b4f69": "d414dd", - "df84ad": "ff69fa", - "fcfcfc": "fcfcfc" + "df84ad": "ff69fa" }, "2": { - "010101": "010101", "1b2627": "180c46", "474749": "8655e1", "303034": "5a3eb9", @@ -24,7 +20,6 @@ "f5f5f6": "342d4c", "949496": "302e89", "9b4f69": "0099ce", - "df84ad": "54f1ff", - "fcfcfc": "fcfcfc" + "df84ad": "54f1ff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/863.json b/public/images/pokemon/variant/exp/back/863.json index ba6b2a10477..c100f2e1b4c 100644 --- a/public/images/pokemon/variant/exp/back/863.json +++ b/public/images/pokemon/variant/exp/back/863.json @@ -2,29 +2,22 @@ "1": { "66716c": "59879a", "bfc1bf": "b4e0d3", - "010101": "010101", "8f9c95": "85c1c0", - "181a1d": "181a1d", "272d2e": "342b49", "3d4547": "4e385a", "84726f": "9591a7", "5b4e4d": "4e455c", - "ada09a": "d5d0dd", - "b3b6b3": "b3b6b3", - "a4a5a4": "a4a5a4" + "ada09a": "d5d0dd" }, "2": { "66716c": "331a37", "bfc1bf": "92264b", - "010101": "010101", "8f9c95": "6d0b3c", "181a1d": "0f2127", "272d2e": "234a56", "3d4547": "417778", "84726f": "27293c", "5b4e4d": "141626", - "ada09a": "4c4d62", - "b3b6b3": "b3b6b3", - "a4a5a4": "a4a5a4" + "ada09a": "4c4d62" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/864.json b/public/images/pokemon/variant/exp/back/864.json index a9d6199388e..eeefe5b0166 100644 --- a/public/images/pokemon/variant/exp/back/864.json +++ b/public/images/pokemon/variant/exp/back/864.json @@ -8,8 +8,7 @@ "cbc2d1": "d7d2f6", "7f806a": "4d8894", "fbf2ff": "d3ffff", - "c6bbcb": "a7e6e5", - "101010": "101010" + "c6bbcb": "a7e6e5" }, "2": { "bcb9be": "055946", @@ -20,7 +19,6 @@ "cbc2d1": "567f83", "7f806a": "4b1f28", "fbf2ff": "874059", - "c6bbcb": "773050", - "101010": "101010" + "c6bbcb": "773050" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/867.json b/public/images/pokemon/variant/exp/back/867.json index 124ea0d4f66..edfad6a836d 100644 --- a/public/images/pokemon/variant/exp/back/867.json +++ b/public/images/pokemon/variant/exp/back/867.json @@ -1,7 +1,6 @@ { "1": { "393941": "69d9bf", - "101010": "101010", "927e8d": "a46361", "d9d0d1": "d6b8a0", "c5b9bb": "c69981", @@ -10,7 +9,6 @@ }, "2": { "393941": "a4222c", - "101010": "101010", "927e8d": "1f6455", "d9d0d1": "4fb66a", "c5b9bb": "298a61", diff --git a/public/images/pokemon/variant/exp/back/872.json b/public/images/pokemon/variant/exp/back/872.json index c7b73b39012..cac7ab2c540 100644 --- a/public/images/pokemon/variant/exp/back/872.json +++ b/public/images/pokemon/variant/exp/back/872.json @@ -2,9 +2,7 @@ "0": { "7b8b9b": "345f5c", "d8e9f0": "b7f1d6", - "f5fdff": "f5fdff", "acc3cc": "669a8c", - "101010": "101010", "695e77": "275e43", "edeae0": "a6d6a6", "b3a7c2": "73a878" @@ -12,9 +10,7 @@ "1": { "7b8b9b": "22504c", "d8e9f0": "b6e7df", - "f5fdff": "f5fdff", "acc3cc": "548e8f", - "101010": "101010", "695e77": "354b63", "edeae0": "c1ebf3", "b3a7c2": "89a9be" @@ -22,9 +18,7 @@ "2": { "7b8b9b": "5a3993", "d8e9f0": "d5c3ff", - "f5fdff": "f5fdff", "acc3cc": "a66ac2", - "101010": "101010", "695e77": "5f3465", "edeae0": "e5a2da", "b3a7c2": "a060a0" diff --git a/public/images/pokemon/variant/exp/back/873.json b/public/images/pokemon/variant/exp/back/873.json index b4856a86659..c746623d83d 100644 --- a/public/images/pokemon/variant/exp/back/873.json +++ b/public/images/pokemon/variant/exp/back/873.json @@ -4,23 +4,20 @@ "747489": "547b58", "e7e0e6": "a6d6a6", "8f8f9f": "27532f", - "fdfdfd": "b7f1d7", - "101010": "101010" + "fdfdfd": "b7f1d7" }, "1": { "b3b4bd": "92a9b8", "747489": "556b7d", "e7e0e6": "b6e7df", "8f8f9f": "415366", - "fdfdfd": "eefffb", - "101010": "101010" + "fdfdfd": "eefffb" }, "2": { "b3b4bd": "864c86", "747489": "512d52", "e7e0e6": "d78dcb", "8f8f9f": "5f3465", - "fdfdfd": "d5c3ff", - "101010": "101010" + "fdfdfd": "d5c3ff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/876-female.json b/public/images/pokemon/variant/exp/back/876-female.json index 87ee8cb6d13..c33a457c3c0 100644 --- a/public/images/pokemon/variant/exp/back/876-female.json +++ b/public/images/pokemon/variant/exp/back/876-female.json @@ -4,7 +4,6 @@ "7d7493": "5a3736", "2f2642": "2c1419", "564c6c": "4a282a", - "101010": "101010", "6c64a6": "b72e3e", "4d447e": "8c1932", "3d3055": "64102c", @@ -17,7 +16,6 @@ "7d7493": "ecb2c5", "2f2642": "444a8e", "564c6c": "d58da4", - "101010": "101010", "6c64a6": "78aae5", "4d447e": "4c5db1", "3d3055": "4c5db1", diff --git a/public/images/pokemon/variant/exp/back/876.json b/public/images/pokemon/variant/exp/back/876.json index af4f5492efe..024747b2e0b 100644 --- a/public/images/pokemon/variant/exp/back/876.json +++ b/public/images/pokemon/variant/exp/back/876.json @@ -3,7 +3,6 @@ "2e2641": "2c1419", "7d7493": "5a3736", "564c6c": "4a282a", - "101010": "101010", "2f2642": "2c1419", "6c64a6": "b72e3e", "4d447e": "8c1932", @@ -16,7 +15,6 @@ "2e2641": "314c7c", "7d7493": "a3c5e8", "564c6c": "78a5d4", - "101010": "101010", "2f2642": "7a316c", "6c64a6": "f589bb", "4d447e": "d268a7", diff --git a/public/images/pokemon/variant/exp/back/877-hangry.json b/public/images/pokemon/variant/exp/back/877-hangry.json index a4e19c34f67..4ecb7181777 100644 --- a/public/images/pokemon/variant/exp/back/877-hangry.json +++ b/public/images/pokemon/variant/exp/back/877-hangry.json @@ -1,7 +1,6 @@ { "0": { "383634": "3a1010", - "101010": "101010", "4f4b47": "952222", "6c6c6c": "540606", "6b3d96": "967f3d", @@ -9,8 +8,6 @@ "9958ce": "cebb58" }, "1": { - "383634": "383634", - "101010": "101010", "4f4b47": "3a3a3a", "6c6c6c": "212020", "6b3d96": "cb6333", @@ -18,10 +15,6 @@ "9958ce": "cb6333" }, "2": { - "383634": "383634", - "101010": "101010", - "4f4b47": "4f4b47", - "6c6c6c": "6c6c6c", "6b3d96": "568351", "493061": "306135", "9958ce": "7fba7f" diff --git a/public/images/pokemon/variant/exp/back/877.json b/public/images/pokemon/variant/exp/back/877.json index 2a26b83b98f..7bf58e01ba1 100644 --- a/public/images/pokemon/variant/exp/back/877.json +++ b/public/images/pokemon/variant/exp/back/877.json @@ -1,19 +1,13 @@ { "0": { "8a5e48": "383634", - "101010": "101010", - "383634": "383634", "af7044": "4f4b47", - "6c6c6c": "6c6c6c", - "4f4b47": "4f4b47", "cf9c66": "6c6c6c", "d3b351": "8851d3", "f4f489": "b689f4" }, "1": { "8a5e48": "2c439d", - "101010": "101010", - "383634": "383634", "af7044": "86aaff", "6c6c6c": "5c5e6d", "4f4b47": "58666d", @@ -23,11 +17,7 @@ }, "2": { "8a5e48": "4f8a48", - "101010": "101010", - "383634": "383634", "af7044": "71cf66", - "6c6c6c": "6c6c6c", - "4f4b47": "4f4b47", "cf9c66": "a1f38b", "d3b351": "b6b6b6", "f4f489": "ffffff" diff --git a/public/images/pokemon/variant/exp/back/880.json b/public/images/pokemon/variant/exp/back/880.json index 1db9d4f60a3..7470434ac3b 100644 --- a/public/images/pokemon/variant/exp/back/880.json +++ b/public/images/pokemon/variant/exp/back/880.json @@ -1,7 +1,6 @@ { "1": { "8f261b": "1b1829", - "101010": "101010", "ff8d9f": "6a98c4", "ed4e76": "312f47", "975e17": "5b0610", @@ -16,8 +15,6 @@ "025c43": "26253e" }, "2": { - "8f261b": "8f261b", - "101010": "101010", "ff8d9f": "e28854", "ed4e76": "ca5939", "975e17": "211b3d", diff --git a/public/images/pokemon/variant/exp/back/881.json b/public/images/pokemon/variant/exp/back/881.json index 3efad4efe60..580250907bc 100644 --- a/public/images/pokemon/variant/exp/back/881.json +++ b/public/images/pokemon/variant/exp/back/881.json @@ -4,7 +4,6 @@ "975e17": "5b0610", "ffff84": "ee8563", "ead900": "c6362b", - "101010": "101010", "2abbfc": "ceb16f", "09354d": "271014", "9ab8ba": "cea5b9", @@ -24,9 +23,7 @@ "975e17": "211b3d", "ffff84": "dceeeb", "ead900": "636287", - "101010": "101010", "2abbfc": "26c248", - "09354d": "09354d", "9ab8ba": "a3c465", "edf3f2": "fcffe4", "5c7996": "50a751", diff --git a/public/images/pokemon/variant/exp/back/882.json b/public/images/pokemon/variant/exp/back/882.json index bfaf844e6ed..27028180ff4 100644 --- a/public/images/pokemon/variant/exp/back/882.json +++ b/public/images/pokemon/variant/exp/back/882.json @@ -3,7 +3,6 @@ "434c63": "771922", "83bbed": "eaa561", "777ebd": "cc6235", - "101010": "101010", "003319": "1a182b", "005e44": "564e6e", "8f261b": "1d2238", @@ -19,7 +18,6 @@ "434c63": "450940", "83bbed": "8c1f45", "777ebd": "6c1046", - "101010": "101010", "003319": "cc7d3b", "005e44": "f1b45f", "8f261b": "215b68", diff --git a/public/images/pokemon/variant/exp/back/883.json b/public/images/pokemon/variant/exp/back/883.json index 3fb71aaebc6..c28f2eb7f2f 100644 --- a/public/images/pokemon/variant/exp/back/883.json +++ b/public/images/pokemon/variant/exp/back/883.json @@ -1,10 +1,8 @@ { "1": { "434c63": "3a151c", - "ffffff": "ffffff", "83bbed": "eaa561", "172459": "771922", - "101010": "101010", "777ebd": "cc6235", "5c7996": "8c6060", "9ab8ba": "cea5b9", @@ -16,10 +14,8 @@ }, "2": { "434c63": "450940", - "ffffff": "ffffff", "83bbed": "8c1f45", "172459": "320432", - "101010": "101010", "777ebd": "6c1046", "5c7996": "50a751", "9ab8ba": "a3c465", diff --git a/public/images/pokemon/variant/exp/back/884.json b/public/images/pokemon/variant/exp/back/884.json index 4cb8efc516b..e71bc735fdf 100644 --- a/public/images/pokemon/variant/exp/back/884.json +++ b/public/images/pokemon/variant/exp/back/884.json @@ -2,7 +2,6 @@ "1": { "68353c": "871e14", "b96a6a": "cd452b", - "151515": "151515", "a893a8": "a77c69", "e4e5f1": "f8e0cf", "837080": "5d392f", @@ -16,7 +15,6 @@ "2": { "68353c": "062449", "b96a6a": "2077a6", - "151515": "151515", "a893a8": "32234e", "e4e5f1": "65549c", "837080": "1a0e34", diff --git a/public/images/pokemon/variant/exp/back/885.json b/public/images/pokemon/variant/exp/back/885.json index a03ef2a9a01..ba01496a553 100644 --- a/public/images/pokemon/variant/exp/back/885.json +++ b/public/images/pokemon/variant/exp/back/885.json @@ -2,7 +2,6 @@ "0": { "3a583c": "133056", "fa5494": "efa93f", - "101010": "101010", "cc4066": "ac7508", "5f875a": "2f6c89", "476b48": "20486e", @@ -15,7 +14,6 @@ "1": { "3a583c": "2f040d", "fa5494": "4590da", - "101010": "101010", "cc4066": "244f9f", "5f875a": "7d1f2c", "476b48": "2f040d", @@ -28,7 +26,6 @@ "2": { "3a583c": "1f0c2c", "fa5494": "68c7c4", - "101010": "101010", "cc4066": "2a8286", "5f875a": "3c2750", "476b48": "231234", diff --git a/public/images/pokemon/variant/exp/back/886.json b/public/images/pokemon/variant/exp/back/886.json index 9b90d92a77a..3cd9a1fcfe3 100644 --- a/public/images/pokemon/variant/exp/back/886.json +++ b/public/images/pokemon/variant/exp/back/886.json @@ -1,19 +1,16 @@ { "0": { "444e62": "2d365a", - "101010": "101010", "addcbc": "6accd6", "2c323f": "192250", "5f875a": "2f6c89", "566f89": "465272", "fa5494": "efa93f", "5b878c": "4c90a6", - "7fb3b1": "78c3cb", - "d5fffb": "d5fffb" + "7fb3b1": "78c3cb" }, "1": { "444e62": "4a1621", - "101010": "101010", "addcbc": "da6151", "2c323f": "2e080d", "5f875a": "6b242e", @@ -25,7 +22,6 @@ }, "2": { "444e62": "231b45", - "101010": "101010", "addcbc": "927fa1", "2c323f": "251b31", "5f875a": "3c2750", diff --git a/public/images/pokemon/variant/exp/back/887.json b/public/images/pokemon/variant/exp/back/887.json index 46e10fbf747..939363027b1 100644 --- a/public/images/pokemon/variant/exp/back/887.json +++ b/public/images/pokemon/variant/exp/back/887.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "2c323f": "192250", "566f89": "46557b", "444e62": "2c3867", @@ -15,7 +14,6 @@ "48a9b0": "479bb6" }, "1": { - "101010": "101010", "2c323f": "2e080d", "566f89": "6c273d", "444e62": "4a1621", @@ -30,9 +28,7 @@ "48a9b0": "8a212f" }, "2": { - "101010": "101010", "2c323f": "1b163f", - "566f89": "566f89", "444e62": "332a59", "cc4066": "2a666b", "fa5494": "68c7c4", diff --git a/public/images/pokemon/variant/exp/back/888-crowned.json b/public/images/pokemon/variant/exp/back/888-crowned.json index e9fdeccc8f5..74c2ae5645e 100644 --- a/public/images/pokemon/variant/exp/back/888-crowned.json +++ b/public/images/pokemon/variant/exp/back/888-crowned.json @@ -2,45 +2,31 @@ "1": { "8f4e2f": "2f4567", "d79a53": "5a829b", - "101010": "101010", - "111111": "111111", "f2db8a": "a1c9cd", "3471b4": "b74323", "2d4377": "5c1a1d", "4999da": "ec813b", "be3c45": "224d42", "9d6862": "a85f49", - "ffffff": "ffffff", "f45353": "448b48", "d3a79a": "da9772", "fae2c0": "fff8cd", "93262f": "0d2729", - "fff8a9": "c6e5e3", - "454754": "454754", - "121212": "121212", - "3f3736": "3f3736", - "131313": "131313" + "fff8a9": "c6e5e3" }, "2": { "8f4e2f": "692e47", "d79a53": "964c5c", - "101010": "101010", - "111111": "111111", "f2db8a": "c4826b", "3471b4": "9fa7d0", "2d4377": "615c7e", "4999da": "e6ecff", "be3c45": "6c1d59", "9d6862": "1c2238", - "ffffff": "ffffff", "f45353": "902d57", "d3a79a": "243149", "fae2c0": "3d5b72", "93262f": "431042", - "fff8a9": "e5b792", - "454754": "454754", - "121212": "121212", - "3f3736": "3f3736", - "131313": "131313" + "fff8a9": "e5b792" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/888.json b/public/images/pokemon/variant/exp/back/888.json index 84bab51307e..734867645af 100644 --- a/public/images/pokemon/variant/exp/back/888.json +++ b/public/images/pokemon/variant/exp/back/888.json @@ -3,7 +3,6 @@ "2d4377": "5c1a1d", "4999da": "ec813b", "3471b4": "b74323", - "080808": "080808", "93262f": "0d2729", "be3c45": "224d42", "f45353": "448b48", @@ -16,7 +15,6 @@ "2d4377": "615c7e", "4999da": "e6ecff", "3471b4": "9fa7d0", - "080808": "080808", "93262f": "431042", "be3c45": "6c1d59", "f45353": "902d57", diff --git a/public/images/pokemon/variant/exp/back/889-crowned.json b/public/images/pokemon/variant/exp/back/889-crowned.json index cd69c495fff..963684b7306 100644 --- a/public/images/pokemon/variant/exp/back/889-crowned.json +++ b/public/images/pokemon/variant/exp/back/889-crowned.json @@ -1,7 +1,6 @@ { "1": { "2d2f7b": "102c2c", - "080808": "080808", "396dce": "70a757", "2d48a8": "3c6959", "8f4e2f": "2f4567", @@ -17,7 +16,6 @@ }, "2": { "2d2f7b": "244e61", - "080808": "080808", "396dce": "6fc7c1", "2d48a8": "4797a4", "8f4e2f": "692e47", diff --git a/public/images/pokemon/variant/exp/back/889.json b/public/images/pokemon/variant/exp/back/889.json index 8d1334c6172..6d464c3bba8 100644 --- a/public/images/pokemon/variant/exp/back/889.json +++ b/public/images/pokemon/variant/exp/back/889.json @@ -4,7 +4,6 @@ "2d2f7b": "102c2c", "2d48a8": "3c6959", "f2db8a": "a1c9cd", - "080808": "080808", "731a27": "1c163d", "eb363a": "614378", "ae2836": "422b61", @@ -17,7 +16,6 @@ "2d2f7b": "244e61", "2d48a8": "4797a4", "f2db8a": "c4826b", - "080808": "080808", "731a27": "615c7e", "eb363a": "e6ecff", "ae2836": "9fa7d0", diff --git a/public/images/pokemon/variant/exp/back/890.json b/public/images/pokemon/variant/exp/back/890.json index 7c645c633f6..baf741074bc 100644 --- a/public/images/pokemon/variant/exp/back/890.json +++ b/public/images/pokemon/variant/exp/back/890.json @@ -8,11 +8,8 @@ "fb2553": "8cf9ff", "675cc5": "406d89", "b21833": "21779e", - "010101": "010101", "f46d70": "8ef2ff", "f18cd5": "ff7d54", - "fefefe": "fefefe", - "ffbcbc": "ffbcbc", "e22dbc": "ee535a" }, "2": { @@ -24,11 +21,8 @@ "fb2553": "eba32d", "675cc5": "e0ecff", "b21833": "bd5f10", - "010101": "010101", "f46d70": "f1bd4b", "f18cd5": "73e5dc", - "fefefe": "fefefe", - "ffbcbc": "ffbcbc", "e22dbc": "298fb9" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/891.json b/public/images/pokemon/variant/exp/back/891.json index 6a11dfad107..f20000f7a63 100644 --- a/public/images/pokemon/variant/exp/back/891.json +++ b/public/images/pokemon/variant/exp/back/891.json @@ -1,18 +1,13 @@ { "0": { "717674": "6d5755", - "101010": "101010", "d8d1cb": "d1c8ba", "b5ada6": "ad9a8a", - "9194a2": "9194a2", - "fbfbfb": "fbfbfb", - "c9cccd": "c9cccd", "393539": "34302f", "655e65": "5c5653" }, "1": { "717674": "263138", - "101010": "101010", "d8d1cb": "6e8b9b", "b5ada6": "475b68", "9194a2": "181b33", @@ -23,7 +18,6 @@ }, "2": { "717674": "56546b", - "101010": "101010", "d8d1cb": "e8e8ff", "b5ada6": "a4a4bc", "9194a2": "7f1c27", diff --git a/public/images/pokemon/variant/exp/back/892-rapid-strike.json b/public/images/pokemon/variant/exp/back/892-rapid-strike.json index faa8e52bffa..b68fb1aba24 100644 --- a/public/images/pokemon/variant/exp/back/892-rapid-strike.json +++ b/public/images/pokemon/variant/exp/back/892-rapid-strike.json @@ -1,13 +1,10 @@ { "0": { "4f4b58": "4a2e27", - "010101": "010101", "6b6574": "725444", "8d8c8e": "957961", "282d26": "25141f", "605f4d": "513b46", - "fcfcfc": "fcfcfc", - "b9b9b9": "b9b9b9", "9e6225": "8b222f", "42473a": "382334", "fffa60": "ff9736", @@ -15,13 +12,10 @@ }, "1": { "4f4b58": "263138", - "010101": "010101", "6b6574": "4c6877", "8d8c8e": "809ba3", "282d26": "181b33", "605f4d": "444f5b", - "fcfcfc": "fcfcfc", - "b9b9b9": "b9b9b9", "9e6225": "272735", "42473a": "2e3549", "fffa60": "616368", @@ -29,7 +23,6 @@ }, "2": { "4f4b58": "56546b", - "010101": "010101", "6b6574": "a4a4bc", "8d8c8e": "e8e8ff", "282d26": "07073f", diff --git a/public/images/pokemon/variant/exp/back/892.json b/public/images/pokemon/variant/exp/back/892.json index 117ecd51bc6..be0f25cec5d 100644 --- a/public/images/pokemon/variant/exp/back/892.json +++ b/public/images/pokemon/variant/exp/back/892.json @@ -2,21 +2,17 @@ "0": { "282d26": "25141f", "605f4d": "513b46", - "010101": "010101", - "b9b9b9": "b9b9b9", "42473a": "382334", "4f4b58": "4a2e27", "6b6574": "725444", "8d8c8e": "957961", "9e6225": "8b222f", "fffa60": "ff9736", - "fcfcfc": "fcfcfc", "d5a926": "b95826" }, "1": { "282d26": "181b33", "605f4d": "444f5b", - "010101": "010101", "b9b9b9": "768187", "42473a": "2e3549", "4f4b58": "263138", @@ -30,7 +26,6 @@ "2": { "282d26": "3d0015", "605f4d": "870e2a", - "010101": "010101", "b9b9b9": "a52139", "42473a": "51081e", "4f4b58": "56546b", diff --git a/public/images/pokemon/variant/exp/back/896.json b/public/images/pokemon/variant/exp/back/896.json index 48c4828ca18..a88dce32430 100644 --- a/public/images/pokemon/variant/exp/back/896.json +++ b/public/images/pokemon/variant/exp/back/896.json @@ -1,6 +1,5 @@ { "0": { - "000000": "000000", "8cacdd": "8f84c9", "bbd2ff": "b9abea", "4679b7": "5952a1", @@ -10,11 +9,9 @@ "eeeef2": "f6ebf6", "cac0cb": "c9c0d4", "83818f": "6f6982", - "6c6271": "68627a", - "ffffff": "ffffff" + "6c6271": "68627a" }, "1": { - "000000": "000000", "8cacdd": "41d5b3", "bbd2ff": "9dffff", "4679b7": "00816c", @@ -24,11 +21,9 @@ "eeeef2": "93bbf1", "cac0cb": "6f8ec1", "83818f": "506698", - "6c6271": "35486b", - "ffffff": "ffffff" + "6c6271": "35486b" }, "2": { - "000000": "000000", "8cacdd": "bc393b", "bbd2ff": "f68c79", "4679b7": "780024", @@ -38,7 +33,6 @@ "eeeef2": "534444", "cac0cb": "3c2c2f", "83818f": "2b1b1e", - "6c6271": "21161a", - "ffffff": "ffffff" + "6c6271": "21161a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/897.json b/public/images/pokemon/variant/exp/back/897.json index 3f2c4c62b17..0217835accd 100644 --- a/public/images/pokemon/variant/exp/back/897.json +++ b/public/images/pokemon/variant/exp/back/897.json @@ -1,21 +1,15 @@ { "0": { - "3c3c3c": "3c3c3c", "525852": "5d5458", - "101010": "101010", "49478f": "894061", "7c5bcf": "d05a82", "00285c": "632741", - "d9a4e3": "d9a4e3", - "fcfcfc": "fcfcfc", - "755179": "755179", "504e8e": "80447d", "8776e4": "b862b3" }, "1": { "3c3c3c": "622d51", "525852": "904c75", - "101010": "101010", "49478f": "932f27", "7c5bcf": "cc5837", "00285c": "6e1817", @@ -28,7 +22,6 @@ "2": { "3c3c3c": "3a6965", "525852": "5c8a7b", - "101010": "101010", "49478f": "13312b", "7c5bcf": "254a34", "00285c": "0d2222", diff --git a/public/images/pokemon/variant/exp/back/898-ice.json b/public/images/pokemon/variant/exp/back/898-ice.json index a10a4b38293..f7675955d25 100644 --- a/public/images/pokemon/variant/exp/back/898-ice.json +++ b/public/images/pokemon/variant/exp/back/898-ice.json @@ -1,16 +1,12 @@ { "0": { "004037": "00403c", - "000000": "000000", "8cacdd": "8f84c9", "007766": "00776f", "bbd2ff": "b9abea", "00584b": "005852", "4679b7": "5952a1", "525852": "6a5837", - "101010": "101010", - "c7c8cd": "c7c8cd", - "fcfcfc": "fcfcfc", "9e8f87": "ae8b50", "d1c8be": "d7c881", "003071": "2f104f", @@ -20,22 +16,16 @@ "00285c": "3b2948", "cac0cb": "c9c0d4", "83818f": "6f6982", - "6c6271": "68627a", - "3c3c3c": "3c3c3c", - "ffffff": "ffffff" + "6c6271": "68627a" }, "1": { "004037": "00124d", - "000000": "000000", "8cacdd": "41d5b3", "007766": "345ab5", "bbd2ff": "9dffff", "00584b": "183986", "4679b7": "00816c", "525852": "38255f", - "101010": "101010", - "c7c8cd": "c7c8cd", - "fcfcfc": "fcfcfc", "9e8f87": "927ec4", "d1c8be": "ba9ded", "003071": "014837", @@ -45,20 +35,16 @@ "00285c": "8d075a", "cac0cb": "6f8ec1", "83818f": "506698", - "6c6271": "35486b", - "3c3c3c": "3c3c3c", - "ffffff": "ffffff" + "6c6271": "35486b" }, "2": { "004037": "3c1522", - "000000": "000000", "8cacdd": "bc393b", "007766": "88253e", "bbd2ff": "f68c79", "00584b": "601b35", "4679b7": "780024", "525852": "181935", - "101010": "101010", "c7c8cd": "ccc5bb", "fcfcfc": "fefdeb", "9e8f87": "354d8a", @@ -71,7 +57,6 @@ "cac0cb": "3c2c2f", "83818f": "2b1b1e", "6c6271": "21161a", - "3c3c3c": "181935", - "ffffff": "ffffff" + "3c3c3c": "181935" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/898-shadow.json b/public/images/pokemon/variant/exp/back/898-shadow.json index 6b38f34ae6e..0a1856a466e 100644 --- a/public/images/pokemon/variant/exp/back/898-shadow.json +++ b/public/images/pokemon/variant/exp/back/898-shadow.json @@ -4,20 +4,13 @@ "007766": "00776f", "00584b": "005852", "525752": "6a5837", - "101010": "101010", - "c7c8cd": "c7c8cd", - "fbfbfb": "fbfbfb", - "3c3c3c": "3c3c3c", "525852": "5d5458", "9e8f87": "ae8b50", "d1c8be": "d7c881", "49478f": "894061", "7c5bcf": "d05a82", "00285c": "632741", - "d9a4e3": "d9a4e3", - "fcfcfc": "fcfcfc", "00285b": "3b2948", - "755179": "755179", "504e8e": "80447d", "8776e4": "b862b3" }, @@ -26,9 +19,6 @@ "007766": "345ab5", "00584b": "183986", "525752": "38255f", - "101010": "101010", - "c7c8cd": "c7c8cd", - "fbfbfb": "fbfbfb", "3c3c3c": "622d51", "525852": "904c75", "9e8f87": "927ec4", @@ -48,7 +38,6 @@ "007766": "88253e", "00584b": "601b35", "525752": "181935", - "101010": "101010", "c7c8cd": "ccc5bb", "fbfbfb": "fefdeb", "3c3c3c": "3a6965", diff --git a/public/images/pokemon/variant/exp/back/898.json b/public/images/pokemon/variant/exp/back/898.json index a669e986b97..5e979e6d5d5 100644 --- a/public/images/pokemon/variant/exp/back/898.json +++ b/public/images/pokemon/variant/exp/back/898.json @@ -7,8 +7,6 @@ "003a87": "71517a", "007766": "00776f", "615350": "6a5837", - "101010": "101010", - "fcfcfc": "fcfcfc", "c7c8cd": "ccc6d1", "9e8f87": "ae8b50", "797b8f": "8e778d", @@ -23,8 +21,6 @@ "003a87": "c64883", "007766": "345ab5", "615350": "38255f", - "101010": "101010", - "fcfcfc": "fcfcfc", "c7c8cd": "ccc6d1", "9e8f87": "927ec4", "797b8f": "ec6196", @@ -39,7 +35,6 @@ "003a87": "cc8c49", "007766": "88253e", "615350": "181935", - "101010": "101010", "fcfcfc": "fefdeb", "c7c8cd": "c4bdb3", "9e8f87": "354d8a", diff --git a/public/images/pokemon/variant/exp/back/900.json b/public/images/pokemon/variant/exp/back/900.json index 68558c7931b..835b578b32a 100644 --- a/public/images/pokemon/variant/exp/back/900.json +++ b/public/images/pokemon/variant/exp/back/900.json @@ -1,30 +1,14 @@ { "1": { - "080808": "080808", - "3a2e2f": "3a2e2f", - "6a5856": "6a5856", - "4d3d3e": "4d3d3e", - "96856d": "96856d", - "fcfcfc": "fcfcfc", - "2b1f22": "2b1f22", - "c8bdb7": "c8bdb7", "6b563a": "221a69", "af7845": "354da7", - "e2b561": "4b84d2", - "e3d1ae": "e3d1ae" + "e2b561": "4b84d2" }, "2": { - "080808": "080808", - "3a2e2f": "3a2e2f", "6a5856": "424242", "4d3d3e": "808080", - "96856d": "96856d", - "fcfcfc": "fcfcfc", - "2b1f22": "2b1f22", - "c8bdb7": "c8bdb7", "6b563a": "a54200", "af7845": "e68400", - "e2b561": "ffde00", - "e3d1ae": "e3d1ae" + "e2b561": "ffde00" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/901.json b/public/images/pokemon/variant/exp/back/901.json index da538225735..c3fc4fb00ed 100644 --- a/public/images/pokemon/variant/exp/back/901.json +++ b/public/images/pokemon/variant/exp/back/901.json @@ -1,24 +1,16 @@ { "1": { "382423": "1c2825", - "0f0f0f": "0f0f0f", "502f29": "273b32", "231a18": "0c1515", - "77655b": "77655b", - "9c8d86": "9c8d86", - "4b4236": "4b4236", "63443d": "31563f", "ca8b35": "c48e81", "fec643": "f7eee1", - "fcfcfc": "fcfcfc", "25521f": "557f24", - "fec672": "f2cab8", - "95908a": "95908a", - "b4b4b1": "b4b4b1" + "fec672": "f2cab8" }, "2": { "382423": "1e2249", - "0f0f0f": "0f0f0f", "502f29": "323760", "231a18": "111433", "77655b": "c199ae", @@ -27,10 +19,7 @@ "63443d": "46527a", "ca8b35": "437aff", "fec643": "bfeeff", - "fcfcfc": "fcfcfc", "25521f": "f83259", - "fec672": "96b7ff", - "95908a": "95908a", - "b4b4b1": "b4b4b1" + "fec672": "96b7ff" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/903.json b/public/images/pokemon/variant/exp/back/903.json index 3f39c155f99..4ea8aa57c42 100644 --- a/public/images/pokemon/variant/exp/back/903.json +++ b/public/images/pokemon/variant/exp/back/903.json @@ -4,13 +4,10 @@ "415b81": "3a0f0e", "533662": "136e81", "9ebade": "bd795f", - "0f110d": "0f110d", "718fbe": "9f4c3d", "8e2458": "12968b", "6a56b3": "722738", "36326d": "210609", - "f8feff": "f8feff", - "9b98a9": "9b98a9", "de2f41": "31dabb", "eb357c": "31dabb" }, @@ -19,7 +16,6 @@ "415b81": "152b2f", "533662": "982e33", "9ebade": "256258", - "0f110d": "0f110d", "718fbe": "194648", "8e2458": "cc5427", "6a56b3": "65b571", diff --git a/public/images/pokemon/variant/exp/back/909.json b/public/images/pokemon/variant/exp/back/909.json index 5b1be3cbddd..c12bbaf21db 100644 --- a/public/images/pokemon/variant/exp/back/909.json +++ b/public/images/pokemon/variant/exp/back/909.json @@ -9,12 +9,8 @@ "c3916e": "ade4e4", "dac0af": "a4ba9e", "ff512d": "366565", - "546978": "546978", "fafae2": "ffffff", - "ff817a": "448282", - "000000": "000000", - "3d505e": "3d505e", - "202d35": "202d35" + "ff817a": "448282" }, "2": { "cf5d1b": "2ce455", @@ -26,11 +22,7 @@ "c3916e": "33ff65", "dac0af": "82977c", "ff512d": "38583f", - "546978": "546978", "fafae2": "e5ffec", - "ff817a": "4a7854", - "000000": "000000", - "3d505e": "3d505e", - "202d35": "202d35" + "ff817a": "4a7854" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/911.json b/public/images/pokemon/variant/exp/back/911.json index 38cc5f228aa..b7147736a1f 100644 --- a/public/images/pokemon/variant/exp/back/911.json +++ b/public/images/pokemon/variant/exp/back/911.json @@ -4,51 +4,41 @@ "f45511": "91dada", "ee8b08": "81d5d5", "ffd017": "b4e6e6", - "5b5c5e": "5b5c5e", "fcfcfc": "cccccc", "9fa0a2": "758a70", - "333c36": "333c36", "ba3227": "234141", "741010": "152828", "ff4a3c": "366565", - "0f0f0f": "0f0f0f", "d20300": "3fbcbc", "595d5f": "5b5c5e", "f6520d": "91dada", "fafcf9": "cccccc", "ef8b06": "81d5d5", "ffd00b": "d3dfbe", - "343c38": "343c38", "9ca1a3": "758a70", "bc3126": "234141", "750d0d": "152828", - "ff4539": "366565", - "0e100c": "0e100c" + "ff4539": "366565" }, "2": { "d20000": "0ea631", "f45511": "2fe757", "ee8b08": "08e739", "ffd017": "4ffc75", - "5b5c5e": "5b5c5e", "fcfcfc": "e5ffec", "9fa0a2": "82977c", - "333c36": "333c36", "ba3227": "243929", "741010": "162319", "ff4a3c": "38583f", - "0f0f0f": "0f0f0f", "d20300": "0ea631", "595d5f": "5b5c5e", "f6520d": "2fe757", "fafcf9": "e5ffec", "ef8b06": "08e739", "ffd00b": "aaee60", - "343c38": "343c38", "9ca1a3": "82977c", "bc3126": "243929", "750d0d": "162319", - "ff4539": "38583f", - "0e100c": "0e100c" + "ff4539": "38583f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/912.json b/public/images/pokemon/variant/exp/back/912.json index fb1f20998dd..a0caf21d8c3 100644 --- a/public/images/pokemon/variant/exp/back/912.json +++ b/public/images/pokemon/variant/exp/back/912.json @@ -3,7 +3,6 @@ "1f5978": "8c3b14", "84d7ff": "f7ca7b", "2fbee8": "e69c51", - "060606": "060606", "3686b1": "d96536", "ffffff": "ffe3b0", "5a82a1": "975432", @@ -17,7 +16,6 @@ "1f5978": "0a3025", "84d7ff": "58d299", "2fbee8": "33b37e", - "060606": "060606", "3686b1": "1c7962", "ffffff": "6767e3", "5a82a1": "2d185d", diff --git a/public/images/pokemon/variant/exp/back/913.json b/public/images/pokemon/variant/exp/back/913.json index e7ab41d58fc..15de2b2502f 100644 --- a/public/images/pokemon/variant/exp/back/913.json +++ b/public/images/pokemon/variant/exp/back/913.json @@ -6,7 +6,6 @@ "13325e": "3f050e", "174b6a": "642b0f", "30b0ba": "f77122", - "0f0f0f": "0f0f0f", "916a44": "3b2e28", "ddc271": "5b5450", "d0c4d3": "d79f63", @@ -23,7 +22,6 @@ "13325e": "072a2b", "174b6a": "541222", "30b0ba": "a22f49", - "0f0f0f": "0f0f0f", "916a44": "4b251b", "ddc271": "c76740", "d0c4d3": "3b188e", diff --git a/public/images/pokemon/variant/exp/back/919.json b/public/images/pokemon/variant/exp/back/919.json index 69546ed1285..0f03b380dd2 100644 --- a/public/images/pokemon/variant/exp/back/919.json +++ b/public/images/pokemon/variant/exp/back/919.json @@ -4,7 +4,6 @@ "63738c": "4b453d", "798aa2": "6c655c", "4b5870": "302d27", - "121212": "121212", "41485b": "23211d", "dde1e4": "cec890", "c0bdc0": "a29d62", @@ -12,7 +11,6 @@ "7b8ca3": "6c655c", "b0acb0": "a29d62", "ffc608": "d02c35", - "0f0f0f": "0f0f0f", "a38215": "962038", "a49dac": "62654e" }, @@ -21,24 +19,16 @@ "63738c": "498f57", "798aa2": "70ba74", "4b5870": "295449", - "121212": "121212", "41485b": "1c3835", - "dde1e4": "dde1e4", - "c0bdc0": "c0bdc0", - "636164": "636164", "7b8ca3": "70ba74", - "b0acb0": "b0acb0", "ffc608": "c54d2d", - "0f0f0f": "0f0f0f", - "a38215": "7f223a", - "a49dac": "a49dac" + "a38215": "7f223a" }, "2": { "2f323c": "340f21", "63738c": "983444", "798aa2": "c74d51", "4b5870": "601c3a", - "121212": "121212", "41485b": "4b132c", "dde1e4": "444444", "c0bdc0": "444444", @@ -46,7 +36,6 @@ "7b8ca3": "c74d51", "b0acb0": "333333", "ffc608": "2977b6", - "0f0f0f": "0f0f0f", "a38215": "293c7d", "a49dac": "222222" } diff --git a/public/images/pokemon/variant/exp/back/920.json b/public/images/pokemon/variant/exp/back/920.json index 6056b008e28..ca8462bbed5 100644 --- a/public/images/pokemon/variant/exp/back/920.json +++ b/public/images/pokemon/variant/exp/back/920.json @@ -1,12 +1,8 @@ { "0": { "292829": "475316", - "0f0f0f": "0f0f0f", "505050": "dbcf15", "3c393c": "8e931a", - "e6ebef": "e6ebef", - "a59aa5": "a59aa5", - "ffffff": "ffffff", "6b6d6b": "f6ea5f", "607381": "444444", "424e59": "292929", @@ -17,12 +13,8 @@ }, "1": { "292829": "1e391b", - "0f0f0f": "0f0f0f", "505050": "529042", "3c393c": "34642c", - "e6ebef": "e6ebef", - "a59aa5": "a59aa5", - "ffffff": "ffffff", "6b6d6b": "6ea25e", "607381": "919191", "424e59": "676974", @@ -33,12 +25,8 @@ }, "2": { "292829": "47132c", - "0f0f0f": "0f0f0f", "505050": "b52828", "3c393c": "791b2d", - "e6ebef": "e6ebef", - "a59aa5": "a59aa5", - "ffffff": "ffffff", "6b6d6b": "df4747", "607381": "858585", "424e59": "525252", diff --git a/public/images/pokemon/variant/exp/back/932.json b/public/images/pokemon/variant/exp/back/932.json index 6c8cd5ccb66..d6ab4a139fd 100644 --- a/public/images/pokemon/variant/exp/back/932.json +++ b/public/images/pokemon/variant/exp/back/932.json @@ -2,7 +2,6 @@ "1": { "717171": "82556e", "ffffff": "f9c2cd", - "121212": "121212", "b4b4b4": "bc8296", "bc8c79": "deeaf3", "875651": "9ba7b0", @@ -13,7 +12,6 @@ "2": { "717171": "383744", "ffffff": "9ba0a0", - "121212": "121212", "b4b4b4": "63636d", "bc8c79": "7cbf7f", "875651": "618c56", diff --git a/public/images/pokemon/variant/exp/back/933.json b/public/images/pokemon/variant/exp/back/933.json index a233b6a1714..6ecaa101e74 100644 --- a/public/images/pokemon/variant/exp/back/933.json +++ b/public/images/pokemon/variant/exp/back/933.json @@ -1,8 +1,5 @@ { "1": { - "636363": "636363", - "121212": "121212", - "b4b4b4": "b4b4b4", "bc8c79": "bc8296", "8a7367": "bc8296", "e8c8b1": "f9c2cd", @@ -10,14 +7,12 @@ "c6876e": "f9c2cd", "875651": "bc8296", "613339": "6d7982", - "ffffff": "ffffff", "42161c": "3a464f", "8c6464": "d8e9f5", "704b50": "90a4b5" }, "2": { "636363": "444251", - "121212": "121212", "b4b4b4": "63636d", "bc8c79": "5d9157", "8a7367": "3d5e47", diff --git a/public/images/pokemon/variant/exp/back/934.json b/public/images/pokemon/variant/exp/back/934.json index e2806483f2d..0bae922f698 100644 --- a/public/images/pokemon/variant/exp/back/934.json +++ b/public/images/pokemon/variant/exp/back/934.json @@ -1,6 +1,5 @@ { "1": { - "121212": "121212", "636363": "77595f", "b4b4b4": "bc808c", "ffffff": "f9c2cd", @@ -14,7 +13,6 @@ "c6876e": "d8e9f5" }, "2": { - "121212": "121212", "636363": "444251", "b4b4b4": "6a6a72", "ffffff": "9ba0a0", diff --git a/public/images/pokemon/variant/exp/back/94-mega.json b/public/images/pokemon/variant/exp/back/94-mega.json index e6ff9747d89..2b070bd521c 100644 --- a/public/images/pokemon/variant/exp/back/94-mega.json +++ b/public/images/pokemon/variant/exp/back/94-mega.json @@ -1,6 +1,5 @@ { "0": { - "101010": "101010", "4d2a4d": "634b63", "503f73": "d1bcd6", "775499": "fcf4fc", @@ -11,18 +10,14 @@ "ff5991": "72e9f2" }, "1": { - "101010": "101010", "4d2a4d": "23131f", "503f73": "511e3b", "775499": "a44c73", "9469bf": "c56f8a", "453159": "3b132c", - "994c99": "994c99", - "cc47a0": "cc47a0", "ff5991": "c1ea61" }, "2": { - "101010": "101010", "4d2a4d": "1a1320", "503f73": "302433", "775499": "3f324a", diff --git a/public/images/pokemon/variant/exp/back/940.json b/public/images/pokemon/variant/exp/back/940.json index 313dbd273ec..c68f4dc3c10 100644 --- a/public/images/pokemon/variant/exp/back/940.json +++ b/public/images/pokemon/variant/exp/back/940.json @@ -2,11 +2,9 @@ "1": { "2f3135": "372b61", "3f424d": "4c4982", - "181a1b": "181a1b", "ffcd37": "7dffc0", "be8f29": "5dd9c8", "91a5c3": "e39fc5", - "f9f9f9": "f9f9f9", "73bbbf": "f7859b", "643c28": "433382", "c27741": "9a5fd9", @@ -17,11 +15,9 @@ "2": { "2f3135": "e099a5", "3f424d": "edc5c8", - "181a1b": "181a1b", "ffcd37": "d9647b", "be8f29": "b3466a", "91a5c3": "ba73b2", - "f9f9f9": "f9f9f9", "73bbbf": "ffcf4a", "643c28": "2b2745", "c27741": "57436e", diff --git a/public/images/pokemon/variant/exp/back/941.json b/public/images/pokemon/variant/exp/back/941.json index 63e5f56449e..5c0793b1eb9 100644 --- a/public/images/pokemon/variant/exp/back/941.json +++ b/public/images/pokemon/variant/exp/back/941.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "825d21": "217991", "34393f": "2b3863", "aa7e24": "3dd1cc", @@ -8,15 +7,11 @@ "26282c": "1f1d54", "6c7177": "354c70", "73bbbf": "de82ff", - "2b1717": "2b1717", "441e21": "d16492", "692a2f": "ff9ec6", - "0f0f0f": "0f0f0f", - "37415a": "55348a", - "1a1c1f": "1a1c1f" + "37415a": "55348a" }, "2": { - "000000": "000000", "825d21": "8a2f62", "34393f": "f7bebe", "aa7e24": "c44f6c", @@ -24,11 +19,8 @@ "26282c": "e394a7", "6c7177": "f7dfdc", "73bbbf": "ffcf4a", - "2b1717": "2b1717", "441e21": "51467a", "692a2f": "776294", - "0f0f0f": "0f0f0f", - "37415a": "55348a", - "1a1c1f": "1a1c1f" + "37415a": "55348a" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/948.json b/public/images/pokemon/variant/exp/back/948.json index 95469041f71..2e4bb9b06ff 100644 --- a/public/images/pokemon/variant/exp/back/948.json +++ b/public/images/pokemon/variant/exp/back/948.json @@ -6,7 +6,6 @@ "f2b69f": "6d6ba4", "976924": "a50927", "ffec37": "ff6237", - "000000": "000000", "eaba2b": "ce271a", "d2bbac": "e2bea6", "fef8f5": "fff4f1", @@ -19,7 +18,6 @@ "f2b69f": "ce4847", "976924": "254087", "ffec37": "4b86bd", - "000000": "000000", "eaba2b": "2e609b", "d2bbac": "d8bdab", "fef8f5": "ffede5", diff --git a/public/images/pokemon/variant/exp/back/949.json b/public/images/pokemon/variant/exp/back/949.json index d8ff34fee1d..15f4ccd2ce7 100644 --- a/public/images/pokemon/variant/exp/back/949.json +++ b/public/images/pokemon/variant/exp/back/949.json @@ -5,13 +5,10 @@ "86433c": "a50927", "ca7268": "d41929", "5f5f5f": "7462ad", - "000000": "000000", - "ffffff": "ffffff", "ede652": "1672a1", "d6938b": "ff4737", "e7bcb8": "ff9d6d", "cdae52": "0c4a83", - "101010": "101010", "c2ae83": "b29785", "94724b": "60473c", "936839": "042259" @@ -22,13 +19,10 @@ "86433c": "401e54", "ca7268": "613a8a", "5f5f5f": "c64d30", - "000000": "000000", - "ffffff": "ffffff", "ede652": "dd7731", "d6938b": "8e65c1", "e7bcb8": "dd9dff", "cdae52": "af3610", - "101010": "101010", "c2ae83": "d9b591", "94724b": "6f492c", "936839": "7e1200" diff --git a/public/images/pokemon/variant/exp/back/951.json b/public/images/pokemon/variant/exp/back/951.json index 3df07b717e6..ca8046b759b 100644 --- a/public/images/pokemon/variant/exp/back/951.json +++ b/public/images/pokemon/variant/exp/back/951.json @@ -6,10 +6,8 @@ "a6b496": "facf81", "3f9a5f": "be8a84", "2f683c": "9d6b5b", - "0f0f0f": "0f0f0f", "ff9115": "ffb676", "5c7c5c": "4c292f", - "2e302f": "2e302f", "79b97b": "704f4f" }, "2": { @@ -19,10 +17,8 @@ "a6b496": "fa95d1", "3f9a5f": "a78bdc", "2f683c": "7456a8", - "0f0f0f": "0f0f0f", "ff9115": "b6dfff", "5c7c5c": "8e7eb1", - "2e302f": "2e302f", "79b97b": "cfbfe6" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/952.json b/public/images/pokemon/variant/exp/back/952.json index 318dd900b93..ad9bc26b330 100644 --- a/public/images/pokemon/variant/exp/back/952.json +++ b/public/images/pokemon/variant/exp/back/952.json @@ -8,7 +8,6 @@ "3f8147": "627bcd", "69ab7b": "c4a4eb", "42804b": "9884d3", - "0f0f0f": "0f0f0f", "262826": "7a6597", "476b51": "f8f3fe", "3c5042": "cfbfe6", diff --git a/public/images/pokemon/variant/exp/back/953.json b/public/images/pokemon/variant/exp/back/953.json index 6c48dfa65f5..6f2c1602306 100644 --- a/public/images/pokemon/variant/exp/back/953.json +++ b/public/images/pokemon/variant/exp/back/953.json @@ -7,7 +7,6 @@ "575244": "18734a", "777463": "199e46", "f38725": "2e8c19", - "000000": "000000", "c5b4aa": "d3e6e6", "a28e86": "c1d8db", "b96c26": "2f7410" @@ -20,7 +19,6 @@ "575244": "5e2d72", "777463": "8358a1", "f38725": "4baecd", - "000000": "000000", "c5b4aa": "39cfbc", "a28e86": "52b0b0", "b96c26": "4792bd" diff --git a/public/images/pokemon/variant/exp/back/954.json b/public/images/pokemon/variant/exp/back/954.json index 56ad50388fd..2f20c5353e4 100644 --- a/public/images/pokemon/variant/exp/back/954.json +++ b/public/images/pokemon/variant/exp/back/954.json @@ -3,7 +3,6 @@ "6f0c76": "4b5173", "e11bff": "e1efff", "aa13b7": "a0a9da", - "000000": "000000", "91263f": "87ceeb", "ce2d6b": "fffd91", "ff4c90": "ffbc00", @@ -19,7 +18,6 @@ "6f0c76": "3e091a", "e11bff": "9b2217", "aa13b7": "6b1111", - "000000": "000000", "91263f": "c85712", "ce2d6b": "ded051", "ff4c90": "141031", diff --git a/public/images/pokemon/variant/exp/back/957.json b/public/images/pokemon/variant/exp/back/957.json index 53a80212ecc..e981138afcd 100644 --- a/public/images/pokemon/variant/exp/back/957.json +++ b/public/images/pokemon/variant/exp/back/957.json @@ -2,10 +2,8 @@ "0": { "7c5569": "91707b", "f0cfe0": "f2d5cb", - "000000": "000000", "ccb2bf": "cf9faf", "af4c7e": "993868", - "661e42": "661e42", "a87b92": "ef7787", "cc9bb4": "ff9ba0", "de589c": "c65f7e", @@ -17,22 +15,16 @@ "1": { "7c5569": "8598ad", "f0cfe0": "fef8e6", - "000000": "000000", "ccb2bf": "aecdcf", "af4c7e": "ee8363", "661e42": "7f3435", "a87b92": "ffb47f", "cc9bb4": "ffd8ad", - "de589c": "f3ad79", - "717278": "717278", - "3d3f45": "3d3f45", - "8e90a0": "8e90a0", - "a7a8b6": "a7a8b6" + "de589c": "f3ad79" }, "2": { "7c5569": "7d7baf", "f0cfe0": "f3e0ff", - "000000": "000000", "ccb2bf": "c0b3e2", "af4c7e": "44306b", "661e42": "201a3d", diff --git a/public/images/pokemon/variant/exp/back/958.json b/public/images/pokemon/variant/exp/back/958.json index d2a699390b1..12cfbea3b4c 100644 --- a/public/images/pokemon/variant/exp/back/958.json +++ b/public/images/pokemon/variant/exp/back/958.json @@ -1,33 +1,26 @@ { "0": { "62575b": "91707b", - "000000": "000000", "d3c5c9": "f2d5cb", "a89a9e": "ddaaaf", "e998b3": "ff9ba0", - "f0f0f0": "f0f0f0", "d95782": "c65f7e", "752842": "63203b", "31273a": "3f2319", - "ab7788": "ab7788", "786987": "8b5745", "9f8faf": "cb836c", "b33b63": "993868", - "db7c9c": "db7c9c", "6b5283": "6a3443", "50405f": "532835" }, "1": { "62575b": "6f848e", - "000000": "000000", "d3c5c9": "fef8e6", "a89a9e": "aecdcf", "e998b3": "f6c58d", - "f0f0f0": "f0f0f0", "d95782": "f3ad79", "752842": "a54344", "31273a": "3f2319", - "ab7788": "ab7788", "786987": "834436", "9f8faf": "bf7754", "b33b63": "ee8363", @@ -37,15 +30,12 @@ }, "2": { "62575b": "6e628c", - "000000": "000000", "d3c5c9": "f3e0ff", "a89a9e": "c0b3e2", "e998b3": "a074b0", - "f0f0f0": "f0f0f0", "d95782": "7a4889", "752842": "201a3d", "31273a": "1e1d30", - "ab7788": "ab7788", "786987": "353549", "9f8faf": "5b5a68", "b33b63": "44306b", diff --git a/public/images/pokemon/variant/exp/back/959.json b/public/images/pokemon/variant/exp/back/959.json index c91083ed06b..be68144ff1b 100644 --- a/public/images/pokemon/variant/exp/back/959.json +++ b/public/images/pokemon/variant/exp/back/959.json @@ -2,7 +2,6 @@ "0": { "664636": "665b52", "e2c793": "e0c9b8", - "000000": "000000", "aa855d": "a58678", "352245": "592740", "4e3662": "77394b", @@ -21,14 +20,12 @@ "1": { "664636": "535d6c", "e2c793": "aeced0", - "000000": "000000", "aa855d": "80959f", "352245": "19374a", "4e3662": "377377", "543f57": "281738", "a593a8": "bf7754", "836b87": "834436", - "5f203f": "5f203f", "d08fae": "f6c58d", "deccd5": "fef8e6", "87757e": "80959f", @@ -40,7 +37,6 @@ "2": { "664636": "685952", "e2c793": "e7dac2", - "000000": "000000", "aa855d": "ad9c8a", "352245": "6a6e77", "4e3662": "aebab6", diff --git a/public/images/pokemon/variant/exp/back/962.json b/public/images/pokemon/variant/exp/back/962.json index 118a0f26768..b6017f80905 100644 --- a/public/images/pokemon/variant/exp/back/962.json +++ b/public/images/pokemon/variant/exp/back/962.json @@ -1,6 +1,5 @@ { "0": { - "0f0f0f": "0f0f0f", "342930": "3e1d26", "4a3942": "60354a", "efe3e1": "f6cbc4", @@ -15,7 +14,6 @@ "a7aba7": "ddcac6" }, "1": { - "0f0f0f": "0f0f0f", "342930": "142e22", "4a3942": "273c31", "efe3e1": "e8e8c0", @@ -31,7 +29,6 @@ }, "2": { "342930": "754156", - "0f0f0f": "0f0f0f", "4a3942": "a5777f", "937d85": "2f2655", "b9aaaf": "453863", @@ -44,4 +41,4 @@ "501d25": "545151", "7b827b": "a96c4b" } -} +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/967.json b/public/images/pokemon/variant/exp/back/967.json index fc531f0de5a..77509a9f98b 100644 --- a/public/images/pokemon/variant/exp/back/967.json +++ b/public/images/pokemon/variant/exp/back/967.json @@ -1,22 +1,15 @@ { "1": { "384a35": "464354", - "0f0f0f": "0f0f0f", "54654e": "67637a", - "b9b7b3": "b9b7b3", - "4b565c": "4b565c", "1c2916": "272431", "f16b32": "bead9d", "34453d": "444a71", "75b07d": "9299c7", - "607d6d": "6e76a9", - "222328": "222328", - "323943": "323943", - "e2e9d7": "e2e9d7" + "607d6d": "6e76a9" }, "2": { "384a35": "5d0c0c", - "0f0f0f": "0f0f0f", "54654e": "942d22", "b9b7b3": "c0ab8b", "4b565c": "815652", diff --git a/public/images/pokemon/variant/exp/back/969.json b/public/images/pokemon/variant/exp/back/969.json index 3f057cf6603..8fe11376246 100644 --- a/public/images/pokemon/variant/exp/back/969.json +++ b/public/images/pokemon/variant/exp/back/969.json @@ -9,7 +9,6 @@ "72fec4": "fbce5d", "5fe3ac": "fbce5d", "41968b": "c57833", - "0f0f0f": "0f0f0f", "453b4d": "2c445a", "635181": "527492", "8475a7": "80aec5", @@ -26,7 +25,6 @@ "72fec4": "df543b", "5fe3ac": "df543b", "41968b": "a51414", - "0f0f0f": "0f0f0f", "453b4d": "0d240f", "635181": "193a1c", "8475a7": "1e5c17", diff --git a/public/images/pokemon/variant/exp/back/970.json b/public/images/pokemon/variant/exp/back/970.json index cc48d2a3f3c..c416ac68851 100644 --- a/public/images/pokemon/variant/exp/back/970.json +++ b/public/images/pokemon/variant/exp/back/970.json @@ -1,6 +1,5 @@ { "1": { - "242737": "242737", "366956": "521d0c", "41968b": "c57833", "5de0aa": "fbce5d", diff --git a/public/images/pokemon/variant/exp/back/973.json b/public/images/pokemon/variant/exp/back/973.json index 267a690cc0b..8efb12eb1aa 100644 --- a/public/images/pokemon/variant/exp/back/973.json +++ b/public/images/pokemon/variant/exp/back/973.json @@ -1,44 +1,26 @@ { "0": { "811f47": "60484a", - "211f28": "211f28", "d43e7c": "988282", "3c3946": "404355", - "2c2936": "2c2936", - "ffffff": "ffffff", "760c38": "7c6364", - "000000": "000000", "ff79b1": "cfbbbc", - "9c174e": "60484a", - "3d3b4e": "3d3b4e", - "c4c1dc": "c4c1dc" + "9c174e": "60484a" }, "1": { "811f47": "430855", - "211f28": "211f28", "d43e7c": "911b92", - "3c3946": "3c3946", - "2c2936": "2c2936", - "ffffff": "ffffff", "760c38": "660f71", - "000000": "000000", "ff79b1": "cb36b9", - "9c174e": "3f0747", - "3d3b4e": "3d3b4e", - "c4c1dc": "c4c1dc" + "9c174e": "3f0747" }, "2": { "811f47": "943615", - "211f28": "211f28", "d43e7c": "d77433", - "3c3946": "3c3946", - "2c2936": "2c2936", "ffffff": "fbf2f4", "760c38": "17167d", - "000000": "000000", "ff79b1": "fabe7d", "9c174e": "2c3ca6", - "3d3b4e": "3d3b4e", "c4c1dc": "978f97" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/974.json b/public/images/pokemon/variant/exp/back/974.json index e6ba5dff1b0..12838b0ecb1 100644 --- a/public/images/pokemon/variant/exp/back/974.json +++ b/public/images/pokemon/variant/exp/back/974.json @@ -3,7 +3,6 @@ "736875": "8c2727", "524951": "661427", "efefef": "ffcc9e", - "0f0f0f": "0f0f0f", "bebaba": "ee9065", "a29793": "c85442", "a44667": "2c7193", @@ -13,7 +12,6 @@ "736875": "1f355e", "524951": "172651", "efefef": "438aa0", - "0f0f0f": "0f0f0f", "bebaba": "2a607f", "a29793": "1c426b", "a44667": "ae664a", diff --git a/public/images/pokemon/variant/exp/back/975.json b/public/images/pokemon/variant/exp/back/975.json index f5ab4ec8a40..aeba260e6cc 100644 --- a/public/images/pokemon/variant/exp/back/975.json +++ b/public/images/pokemon/variant/exp/back/975.json @@ -1,6 +1,5 @@ { "1": { - "000000": "000000", "f7f6f2": "ffcc9e", "c8c4c4": "ee9065", "a44667": "2c7193", @@ -8,7 +7,6 @@ "f493c9": "71e2d3" }, "2": { - "000000": "000000", "f7f6f2": "357489", "c8c4c4": "265777", "a44667": "ae664a", diff --git a/public/images/pokemon/variant/exp/back/978-stretchy.json b/public/images/pokemon/variant/exp/back/978-stretchy.json index d6153da59df..e9acee1c06e 100644 --- a/public/images/pokemon/variant/exp/back/978-stretchy.json +++ b/public/images/pokemon/variant/exp/back/978-stretchy.json @@ -6,7 +6,6 @@ "ce9b24": "485084", "feca2e": "a3a3a3", "ffcf2d": "c1c1c1", - "0f0f0f": "0f0f0f", "adafb8": "dace8e", "626471": "bca353", "fcfcfc": "faf2c4" @@ -18,7 +17,6 @@ "ce9b24": "273f08", "feca2e": "d8d0ad", "ffcf2d": "afa680", - "0f0f0f": "0f0f0f", "adafb8": "91734f", "626471": "604a30", "fcfcfc": "bc996e" diff --git a/public/images/pokemon/variant/exp/back/979.json b/public/images/pokemon/variant/exp/back/979.json index 11de43288e2..4ebcddf7e1c 100644 --- a/public/images/pokemon/variant/exp/back/979.json +++ b/public/images/pokemon/variant/exp/back/979.json @@ -3,21 +3,17 @@ "7b7786": "706394", "c0c1c8": "bbb3d6", "fafafc": "ddd2ff", - "111111": "111111", "a5a6b2": "ada2cd", "8f8d9c": "867ba4", "474958": "38496a", "555c69": "3f5275", "55525c": "625583", - "323132": "323132", - "5d6976": "4d6289", - "464546": "464546" + "5d6976": "4d6289" }, "1": { "7b7786": "c88945", "c0c1c8": "ebd494", "fafafc": "f9e9bd", - "111111": "111111", "a5a6b2": "ddbf6b", "8f8d9c": "d2a357", "474958": "3a302e", @@ -31,7 +27,6 @@ "7b7786": "b12009", "c0c1c8": "f26a3c", "fafafc": "ffa050", - "111111": "111111", "a5a6b2": "f26a3c", "8f8d9c": "d22c10", "474958": "313930", diff --git a/public/images/pokemon/variant/exp/back/981.json b/public/images/pokemon/variant/exp/back/981.json index 30098b9de2d..07d72c394c3 100644 --- a/public/images/pokemon/variant/exp/back/981.json +++ b/public/images/pokemon/variant/exp/back/981.json @@ -1,6 +1,5 @@ { "1": { - "0f0f0f": "0f0f0f", "43341e": "112246", "36383d": "503a2d", "6f5431": "1f4062", @@ -10,11 +9,9 @@ "b4ff68": "ff8f00", "fff42f": "c29925", "6aad21": "dec93d", - "fcfcfc": "fcfcfc", "deb43d": "dec93d", "3d680f": "be6b02", "775c10": "774f10", - "a8abb3": "a8abb3", "513c21": "430b0f", "b1a75c": "7e262d", "fdec8a": "9c3e3e", @@ -27,7 +24,6 @@ "f18d4e": "d8d1ad" }, "2": { - "0f0f0f": "0f0f0f", "43341e": "52ab5f", "36383d": "792e51", "6f5431": "a8e781", @@ -37,11 +33,9 @@ "b4ff68": "dc7346", "fff42f": "ed9233", "6aad21": "d8975d", - "fcfcfc": "fcfcfc", "deb43d": "ebbb72", "3d680f": "953c2f", "775c10": "b35127", - "a8abb3": "a8abb3", "513c21": "1a456c", "b1a75c": "1e7884", "fdec8a": "2a9d8f", diff --git a/public/images/pokemon/variant/exp/back/982-three-segment.json b/public/images/pokemon/variant/exp/back/982-three-segment.json index 967f4a6f4b9..06674c4373c 100644 --- a/public/images/pokemon/variant/exp/back/982-three-segment.json +++ b/public/images/pokemon/variant/exp/back/982-three-segment.json @@ -2,9 +2,7 @@ "1": { "735a41": "53575a", "f6e67b": "f6ffff", - "101010": "101010", "debd39": "aeaeae", - "f6ffff": "f6ffff", "318ba4": "4a6165", "6abdcd": "748da4", "206a83": "2a413f", @@ -16,7 +14,6 @@ "2": { "735a41": "462a3e", "f6e67b": "db4069", - "101010": "101010", "debd39": "a12e55", "f6ffff": "fdffdc", "318ba4": "38a8a6", diff --git a/public/images/pokemon/variant/exp/back/982.json b/public/images/pokemon/variant/exp/back/982.json index fa60db57a7d..330ab0a19a8 100644 --- a/public/images/pokemon/variant/exp/back/982.json +++ b/public/images/pokemon/variant/exp/back/982.json @@ -1,7 +1,5 @@ { "1": { - "101010": "101010", - "f6ffff": "f6ffff", "735a41": "53575a", "f6e67b": "ececec", "debd39": "aeaeae", @@ -14,14 +12,11 @@ "bd8b20": "757575" }, "2": { - "101010": "101010", "f6ffff": "fdffdc", "735a41": "692342", "f6e67b": "db4069", "debd39": "a12e55", - "318ba4": "318ba4", "6abdcd": "73d7d5", - "206a83": "206a83", "c1d1e9": "f4ce91", "fff6c5": "e97798", "5a6273": "5c4a4d", diff --git a/public/images/pokemon/variant/exp/back/987.json b/public/images/pokemon/variant/exp/back/987.json index 5fb59f6979d..9eae5ff8fb1 100644 --- a/public/images/pokemon/variant/exp/back/987.json +++ b/public/images/pokemon/variant/exp/back/987.json @@ -5,7 +5,6 @@ "182941": "132443", "4a83a4": "387fa7", "b36cc1": "d3941a", - "0f0f0f": "0f0f0f", "314a62": "244260", "621841": "71370f", "548e88": "2d60bb", @@ -18,7 +17,6 @@ "182941": "244358", "4a83a4": "a1c8db", "b36cc1": "1dbdb9", - "0f0f0f": "0f0f0f", "314a62": "7396b4", "621841": "7b3c08", "548e88": "a9c0c6", @@ -31,7 +29,6 @@ "182941": "603305", "4a83a4": "e6aa47", "b36cc1": "eece8c", - "0f0f0f": "0f0f0f", "314a62": "b56f2a", "621841": "5a0a05", "548e88": "e0b544", diff --git a/public/images/pokemon/variant/exp/back/988.json b/public/images/pokemon/variant/exp/back/988.json index ca3aa11cfdc..8cae6902168 100644 --- a/public/images/pokemon/variant/exp/back/988.json +++ b/public/images/pokemon/variant/exp/back/988.json @@ -4,14 +4,10 @@ "7b2000": "0b334c", "d8a33f": "56e4ba", "ed7e3d": "28d7bd", - "181820": "181820", "efd165": "66e9c2", "d1fd77": "e2fd77", "7dc536": "d7d346", "f04137": "17b79f", - "35384f": "35384f", - "f1f7f7": "f1f7f7", - "465175": "465175", "a9a9ab": "92c9b9", "359f8f": "23838b" }, @@ -20,13 +16,11 @@ "7b2000": "3d1759", "d8a33f": "9d46a1", "ed7e3d": "b258c9", - "181820": "181820", "efd165": "c273e0", "d1fd77": "71d1fb", "7dc536": "38b9e0", "f04137": "9439c5", "35384f": "123755", - "f1f7f7": "f1f7f7", "465175": "1b233f", "a9a9ab": "8fb8c9", "359f8f": "154e67" diff --git a/public/images/pokemon/variant/exp/back/993.json b/public/images/pokemon/variant/exp/back/993.json index 981f6cf7c61..41f7f39348f 100644 --- a/public/images/pokemon/variant/exp/back/993.json +++ b/public/images/pokemon/variant/exp/back/993.json @@ -2,7 +2,6 @@ "1": { "282828": "292109", "7a787a": "f8f5e2", - "0f0f0f": "0f0f0f", "463741": "754711", "4f4d51": "c59b4b", "4a424a": "533310", @@ -11,14 +10,12 @@ "3a75e6": "543280", "952b7d": "585a5c", "ff4dcb": "b7c6d6", - "fcfcfc": "fcfcfc", "172e57": "160832", "749eed": "b98bd6" }, "2": { "282828": "172220", "7a787a": "a4bfbe", - "0f0f0f": "0f0f0f", "463741": "2a505a", "4f4d51": "467678", "4a424a": "24323e", @@ -27,7 +24,6 @@ "3a75e6": "983b5c", "952b7d": "873954", "ff4dcb": "e3bbd3", - "fcfcfc": "fcfcfc", "172e57": "470e2c", "749eed": "f17ea6" } diff --git a/public/images/pokemon/variant/exp/back/994.json b/public/images/pokemon/variant/exp/back/994.json index 93e19242de6..23be955a78d 100644 --- a/public/images/pokemon/variant/exp/back/994.json +++ b/public/images/pokemon/variant/exp/back/994.json @@ -6,13 +6,11 @@ "f29e42": "00f02c", "fac375": "8bffa0", "626262": "696983", - "090913": "090913", "6a0305": "ae7a24", "dd393e": "fdc263", "a91215": "d79a38", "979797": "9b9bb6", "dddcde": "d9d9ea", - "292933": "292933", "6a8997": "867bc8", "30445a": "3f357c", "96cfd7": "b0a4f8", @@ -24,17 +22,12 @@ "f2dd46": "6bffc9", "f29e42": "00bfe1", "fac375": "a8fbff", - "626262": "626262", - "090913": "090913", "6a0305": "6e2140", "dd393e": "ff5e5e", "a91215": "e72158", - "979797": "979797", "dddcde": "e9dac7", - "292933": "292933", "6a8997": "ff926c", "30445a": "664338", - "96cfd7": "ffc28c", - "fac173": "fac173" + "96cfd7": "ffc28c" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/995.json b/public/images/pokemon/variant/exp/back/995.json index d758c3adfeb..f65c77b5698 100644 --- a/public/images/pokemon/variant/exp/back/995.json +++ b/public/images/pokemon/variant/exp/back/995.json @@ -1,34 +1,22 @@ { "1": { "384800": "4f4528", - "101010": "101010", "687828": "7b6a31", "789828": "8d7f54", "a0d048": "ddcb86", "48b090": "9d3eb9", "78d8a8": "ca72e4", "c8e850": "f6eebd", - "188050": "6a267e", - "202020": "202020", - "fffbff": "fffbff", - "383030": "383030", - "2a2c2e": "2a2c2e", - "504848": "504848" + "188050": "6a267e" }, "2": { "384800": "26292b", - "101010": "101010", "687828": "383c40", "789828": "464b51", "a0d048": "6b737b", "48b090": "9a1f2c", "78d8a8": "d53143", "c8e850": "949ca5", - "188050": "740c18", - "202020": "202020", - "fffbff": "fffbff", - "383030": "383030", - "2a2c2e": "2a2c2e", - "504848": "504848" + "188050": "740c18" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/996.json b/public/images/pokemon/variant/exp/back/996.json index 2891143402e..972620eab18 100644 --- a/public/images/pokemon/variant/exp/back/996.json +++ b/public/images/pokemon/variant/exp/back/996.json @@ -1,6 +1,5 @@ { "1": { - "020202": "020202", "5f5f64": "181f1f", "9ea7af": "293b39", "bec3c7": "325747", @@ -17,7 +16,6 @@ "ffe000": "c5a64d" }, "2": { - "020202": "020202", "5f5f64": "2f2c38", "9ea7af": "ceccef", "bec3c7": "e6e6eb", @@ -25,9 +23,6 @@ "314a5d": "524f60", "c4e9eb": "fcb925", "968201": "2a3064", - "e3e3e3": "e3e3e3", - "bcb7bc": "bcb7bc", - "a39ca1": "a39ca1", "96abac": "ca6d2a", "aecacb": "e38f21", "cab300": "1f46c4", diff --git a/public/images/pokemon/variant/exp/back/997.json b/public/images/pokemon/variant/exp/back/997.json index 40277967be5..965400e70f1 100644 --- a/public/images/pokemon/variant/exp/back/997.json +++ b/public/images/pokemon/variant/exp/back/997.json @@ -1,6 +1,5 @@ { "1": { - "020202": "020202", "516373": "5a3b36", "caefef": "b7926b", "3f6176": "1e2c2f", @@ -15,7 +14,6 @@ "cf9100": "9f7b3e" }, "2": { - "020202": "020202", "516373": "79452f", "caefef": "fcb925", "3f6176": "524f60", @@ -25,8 +23,6 @@ "7b9fb1": "e6e6eb", "4a6b7e": "8a82aa", "ba9e03": "ab324c", - "ffe100": "ff6767", - "feb701": "feb701", - "cf9100": "cf9100" + "ffe100": "ff6767" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/998.json b/public/images/pokemon/variant/exp/back/998.json index 0d4dd6e5dca..841925b0def 100644 --- a/public/images/pokemon/variant/exp/back/998.json +++ b/public/images/pokemon/variant/exp/back/998.json @@ -3,14 +3,12 @@ "5b879b": "5a3b36", "eaf9f9": "e1d4be", "1f3241": "1b2525", - "020202": "020202", "caefef": "b7926b", "416075": "305444", "afc0c7": "8f6049", "314a5d": "293b39", "ffe100": "30d1ff", "837d34": "3b69d3", - "272427": "272427", "bf373e": "c5a64d", "9b2930": "705c39", "8fa7b1": "835344" @@ -19,7 +17,6 @@ "5b879b": "79452f", "eaf9f9": "fff8d3", "1f3241": "524f60", - "020202": "020202", "caefef": "fcb925", "416075": "e6e6eb", "afc0c7": "d3772c", diff --git a/public/images/pokemon/variant/exp/back/999.json b/public/images/pokemon/variant/exp/back/999.json index 6850cf8a578..f5e1913e195 100644 --- a/public/images/pokemon/variant/exp/back/999.json +++ b/public/images/pokemon/variant/exp/back/999.json @@ -3,7 +3,6 @@ "4f4333": "38001c", "ddc126": "d52d70", "836c54": "760040", - "0f0f0f": "0f0f0f", "323437": "142552", "783a52": "492118", "545b6b": "1e2e60", @@ -18,30 +17,24 @@ "4f4333": "131c3b", "ddc126": "65768c", "836c54": "29354e", - "0f0f0f": "0f0f0f", "323437": "1d2c54", "783a52": "4f2e5c", "545b6b": "415073", "ac4454": "794e83", "bfa33e": "485466", - "7a82a9": "7a82a9", "745527": "131c3b", - "a59227": "9c9cbe", - "bac4d8": "bac4d8" + "a59227": "9c9cbe" }, "2": { "4f4333": "0c1b40", "ddc126": "326191", "836c54": "152848", - "0f0f0f": "0f0f0f", "323437": "212857", "783a52": "6d6594", "545b6b": "6467a8", "ac4454": "bcb9d6", "bfa33e": "294f7e", - "7a82a9": "7a82a9", "745527": "0c1b40", - "a59227": "b6d0d7", - "bac4d8": "bac4d8" + "a59227": "b6d0d7" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/female/6215.json b/public/images/pokemon/variant/exp/back/female/6215.json index a66e3780d12..a0485ed67c5 100644 --- a/public/images/pokemon/variant/exp/back/female/6215.json +++ b/public/images/pokemon/variant/exp/back/female/6215.json @@ -6,12 +6,9 @@ "956cbe": "31dabb", "514a80": "402010", "dcdbf7": "d0b3a4", - "080808": "080808", "28234b": "220d0a", "7d6ca4": "672e26", "584d80": "401914", - "f6f6ff": "f6f6ff", - "bdbdc5": "bdbdc5", "c52973": "ea903f" }, "2": { @@ -21,12 +18,9 @@ "956cbe": "cc5427", "514a80": "14273a", "dcdbf7": "60ae7e", - "080808": "080808", "28234b": "0a191e", "7d6ca4": "395962", "584d80": "1c3942", - "f6f6ff": "f6f6ff", - "bdbdc5": "bdbdc5", "c52973": "f49633" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/female/6215.json b/public/images/pokemon/variant/exp/female/6215.json index 3198424563b..56ee351cd66 100644 --- a/public/images/pokemon/variant/exp/female/6215.json +++ b/public/images/pokemon/variant/exp/female/6215.json @@ -1,7 +1,6 @@ { "1": { "503678": "0f5d6d", - "080808": "080808", "514a80": "402010", "956cbe": "31dabb", "9c9bce": "ae8976", @@ -12,14 +11,10 @@ "ffde7b": "a7a7a7", "584d80": "562627", "28234b": "220d0a", - "c52973": "ea903f", - "bdbdc5": "bdbdc5", - "f6f6ff": "f6f6ff", - "000000": "000000" + "c52973": "ea903f" }, "2": { "503678": "601522", - "080808": "080808", "514a80": "14273a", "956cbe": "cc5427", "9c9bce": "3c8775", @@ -30,9 +25,6 @@ "ffde7b": "ffe07e", "584d80": "1c3942", "28234b": "0a191e", - "c52973": "f49633", - "bdbdc5": "bdbdc5", - "f6f6ff": "f6f6ff", - "000000": "000000" + "c52973": "f49633" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/111.json b/public/images/pokemon/variant/female/111.json index 3a43aa13e15..b13dc177767 100644 --- a/public/images/pokemon/variant/female/111.json +++ b/public/images/pokemon/variant/female/111.json @@ -1,22 +1,16 @@ { "1": { "5a5a7b": "241e2f", - "101010": "101010", "bdbdce": "6a547a", "e6e6ef": "9781ab", "8484ad": "402f51", - "3a3a52": "261e2d", - "ffffff": "ffffff", - "ad3a29": "ad3a29" + "3a3a52": "261e2d" }, "2": { "5a5a7b": "ab4355", - "101010": "101010", "bdbdce": "e18db3", "e6e6ef": "f7b4d1", "8484ad": "d76688", - "3a3a52": "6d2935", - "ffffff": "ffffff", - "ad3a29": "ad3a29" + "3a3a52": "6d2935" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/112.json b/public/images/pokemon/variant/female/112.json index 1c668cf5aa7..427afde596d 100644 --- a/public/images/pokemon/variant/female/112.json +++ b/public/images/pokemon/variant/female/112.json @@ -1,32 +1,22 @@ { "1": { "8c8c94": "523c5c", - "101010": "101010", "c5c5bd": "6a547a", "52525a": "3c2945", "e6e6de": "9781ab", "735a31": "6b6373", "ffefc5": "cecede", "b5a573": "948cad", - "ffffff": "ffffff", - "a53110": "a53110", - "e6523a": "e6523a", - "e6d6ad": "cecede", - "732110": "732110" + "e6d6ad": "cecede" }, "2": { "8c8c94": "ab3f5c", - "101010": "101010", "c5c5bd": "cb568a", "52525a": "642224", "e6e6de": "ef86b5", "735a31": "6d586d", "ffefc5": "dacad3", "b5a573": "be9bb6", - "ffffff": "ffffff", - "a53110": "a53110", - "e6523a": "e6523a", - "e6d6ad": "dacad3", - "732110": "732110" + "e6d6ad": "dacad3" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/118.json b/public/images/pokemon/variant/female/118.json index ba5a9377fdb..ca5c26c3671 100644 --- a/public/images/pokemon/variant/female/118.json +++ b/public/images/pokemon/variant/female/118.json @@ -2,7 +2,6 @@ "1": { "52525a": "5b3856", "ffffff": "fff9fc", - "101010": "101010", "8c8c94": "7c4b71", "d6d6de": "bf8cb0", "efefef": "e8c3d9", @@ -19,7 +18,6 @@ "2": { "52525a": "2e5453", "ffffff": "f0fff8", - "101010": "101010", "8c8c94": "4c867a", "d6d6de": "9cd8c4", "efefef": "c3f0dd", diff --git a/public/images/pokemon/variant/female/119.json b/public/images/pokemon/variant/female/119.json index b825cb25034..ab80dbccad5 100644 --- a/public/images/pokemon/variant/female/119.json +++ b/public/images/pokemon/variant/female/119.json @@ -5,8 +5,6 @@ "dedee6": "eac5df", "5a5a63": "482b46", "52525a": "49215e", - "cec5c5": "cec5c5", - "101010": "101010", "943119": "471d64", "e67342": "b169c0", "f79463": "d089d6", @@ -22,8 +20,6 @@ "dedee6": "bae6f4", "5a5a63": "3c6189", "52525a": "20355a", - "cec5c5": "cec5c5", - "101010": "101010", "943119": "0e285a", "e67342": "387db1", "f79463": "56aacb", diff --git a/public/images/pokemon/variant/female/123.json b/public/images/pokemon/variant/female/123.json index 5fbefd72224..0b21a71af27 100644 --- a/public/images/pokemon/variant/female/123.json +++ b/public/images/pokemon/variant/female/123.json @@ -2,43 +2,23 @@ "0": { "425a21": "632929", "bde673": "f76b6b", - "101010": "101010", "9c8c31": "9494a5", "fff7d6": "ffffff", "8cce73": "d63a3a", "e6d6ad": "b5b5ce", - "5a9c4a": "a52929", - "ffffff": "ffffff", - "dedede": "dedede", - "bdbdbd": "bdbdbd", - "737373": "737373" + "5a9c4a": "a52929" }, "1": { "425a21": "484e75", "bde673": "7c9ac5", - "101010": "101010", - "9c8c31": "9c8c31", - "fff7d6": "fff7d6", "8cce73": "92b0db", - "e6d6ad": "e6d6ad", - "5a9c4a": "7b94d6", - "ffffff": "ffffff", - "dedede": "dedede", - "bdbdbd": "bdbdbd", - "737373": "737373" + "5a9c4a": "7b94d6" }, "2": { "425a21": "8f3907", "bde673": "f8f581", - "101010": "101010", - "9c8c31": "9c8c31", - "fff7d6": "fff7d6", "8cce73": "f0c947", - "e6d6ad": "e6d6ad", "5a9c4a": "e6a027", - "ffffff": "ffffff", - "dedede": "f0c947", - "bdbdbd": "bdbdbd", - "737373": "737373" + "dedede": "f0c947" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/129.json b/public/images/pokemon/variant/female/129.json index 0189d0d310d..957cdeb4d55 100644 --- a/public/images/pokemon/variant/female/129.json +++ b/public/images/pokemon/variant/female/129.json @@ -7,14 +7,12 @@ "f76319": "8b9bb2", "840042": "22294c", "c5ad73": "c07b3f", - "000000": "000000", "525263": "9b7767", "bd4242": "576582", "ffffff": "fff9f3", "8c8ca5": "be9f8d", "ceced6": "e6d2c4", - "ff9c63": "b4c5d6", - "ffe6c5": "ffe6c5" + "ff9c63": "b4c5d6" }, "2": { "7b6352": "94836f", @@ -24,13 +22,11 @@ "f76319": "a454dc", "840042": "230f55", "c5ad73": "bcaf98", - "000000": "000000", "525263": "74619a", "bd4242": "64309c", "ffffff": "f9efff", "8c8ca5": "af97ce", "ceced6": "d5c7e4", - "ff9c63": "d18bf0", - "ffe6c5": "ffe6c5" + "ff9c63": "d18bf0" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/130.json b/public/images/pokemon/variant/female/130.json index d18ded52775..e6cb6c5b023 100644 --- a/public/images/pokemon/variant/female/130.json +++ b/public/images/pokemon/variant/female/130.json @@ -6,7 +6,6 @@ "d6def7": "e3c7ab", "196394": "a23b0c", "194273": "6c1301", - "191919": "191919", "7bd6ef": "ffd076", "42b5ef": "f29745", "f7e6ad": "ebddd5", @@ -23,7 +22,6 @@ "d6def7": "d9b6b9", "196394": "35135f", "194273": "1c0b46", - "191919": "191919", "7bd6ef": "b16cce", "42b5ef": "7f459a", "f7e6ad": "ebddd5", diff --git a/public/images/pokemon/variant/female/185.json b/public/images/pokemon/variant/female/185.json index 493ad0c8286..c26bab91fb1 100644 --- a/public/images/pokemon/variant/female/185.json +++ b/public/images/pokemon/variant/female/185.json @@ -2,7 +2,6 @@ "1": { "635a4a": "303429", "c5a54a": "82847c", - "101010": "101010", "ad845a": "6f7367", "315a19": "39270c", "4ac542": "a48d29", @@ -16,7 +15,6 @@ "2": { "635a4a": "243075", "c5a54a": "648cc6", - "101010": "101010", "ad845a": "4663b1", "315a19": "427ab3", "4ac542": "96e4ed", diff --git a/public/images/pokemon/variant/female/19.json b/public/images/pokemon/variant/female/19.json index 8fcdaf9cf80..1d34184ef53 100644 --- a/public/images/pokemon/variant/female/19.json +++ b/public/images/pokemon/variant/female/19.json @@ -4,33 +4,25 @@ "8c4a8c": "4e5e7e", "d69cd6": "88a0b1", "4a2942": "262f4f", - "101010": "101010", "a57308": "cb9287", "e6ce73": "dcb2a1", "634a08": "ae6b69", "efdeb5": "fae4d8", "a5193a": "2d943d", - "cecece": "cecece", - "ffffff": "ffffff", "e65a73": "62cb5c", - "cead63": "e8beae", - "5a5a5a": "5a5a5a" + "cead63": "e8beae" }, "2": { "b573bd": "efdcd1", "8c4a8c": "d6b2a6", "d69cd6": "fff5eb", "4a2942": "865c54", - "101010": "101010", "a57308": "ba476f", "e6ce73": "c6667d", "634a08": "7e3754", "efdeb5": "efb5c0", "a5193a": "5b7277", - "cecece": "cecece", - "ffffff": "ffffff", "e65a73": "89a3a6", - "cead63": "d98a9f", - "5a5a5a": "5a5a5a" + "cead63": "d98a9f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/190.json b/public/images/pokemon/variant/female/190.json index 8c8837946be..cc2b9f91b29 100644 --- a/public/images/pokemon/variant/female/190.json +++ b/public/images/pokemon/variant/female/190.json @@ -1,28 +1,22 @@ { "1": { "52216b": "701523", - "000000": "000000", "bd7bde": "dea95a", "8442ad": "ad452f", "a55ac5": "c47440", "8c6b42": "8c7457", "bd8c63": "bd9a7e", "c5ad6b": "c4b487", - "ffdea5": "ffeccc", - "ffffff": "ffffff", - "adada5": "adada5" + "ffdea5": "ffeccc" }, "2": { "52216b": "807870", - "000000": "000000", "bd7bde": "e5dfdf", "8442ad": "a6a297", "a55ac5": "bfbeb4", "8c6b42": "632339", "bd8c63": "802d44", "c5ad6b": "99455d", - "ffdea5": "ed8286", - "ffffff": "ffffff", - "adada5": "adada5" + "ffdea5": "ed8286" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/20.json b/public/images/pokemon/variant/female/20.json index d6c8eab089e..b59ef580ecd 100644 --- a/public/images/pokemon/variant/female/20.json +++ b/public/images/pokemon/variant/female/20.json @@ -7,7 +7,6 @@ "deb54a": "86766e", "c5943a": "644c47", "6b3a00": "331a1b", - "101010": "101010", "ffffff": "fffaf4", "f7f7a5": "fff1d4", "845a29": "956240", @@ -24,7 +23,6 @@ "deb54a": "fff8ef", "c5943a": "e2cbb9", "6b3a00": "7f645c", - "101010": "101010", "ffffff": "fffaf4", "f7f7a5": "c46771", "845a29": "34171d", diff --git a/public/images/pokemon/variant/female/203.json b/public/images/pokemon/variant/female/203.json index a4391436a20..10e0040644a 100644 --- a/public/images/pokemon/variant/female/203.json +++ b/public/images/pokemon/variant/female/203.json @@ -1,7 +1,6 @@ { "1": { "424a73": "351810", - "ffffff": "ffffff", "adb5d6": "8f6f66", "6b8cb5": "512b21", "4a3a3a": "231117", @@ -9,7 +8,6 @@ "9c7b42": "571522", "efde52": "9c3e3e", "9c3a5a": "ab9d75", - "101010": "101010", "ce6b94": "d8d1ad", "947b6b": "1f4062", "635252": "112246", @@ -18,7 +16,6 @@ }, "2": { "424a73": "27091d", - "ffffff": "ffffff", "adb5d6": "c5b0b7", "6b8cb5": "4a1b33", "4a3a3a": "091225", @@ -26,7 +23,6 @@ "9c7b42": "15545d", "efde52": "2a9d8f", "9c3a5a": "52ab5f", - "101010": "101010", "ce6b94": "a8e781", "947b6b": "1a2e43", "635252": "111d34", diff --git a/public/images/pokemon/variant/female/212.json b/public/images/pokemon/variant/female/212.json index 55fcc0858ac..5240f4f81e3 100644 --- a/public/images/pokemon/variant/female/212.json +++ b/public/images/pokemon/variant/female/212.json @@ -2,24 +2,14 @@ "0": { "632929": "215a2d", "f76b6b": "8cce73", - "101010": "101010", - "3a3a4a": "3a3a4a", - "ffffff": "ffffff", "d63a3a": "4a9c53", - "b5b5ce": "b5b5ce", - "9494a5": "9494a5", - "a52929": "2f794e", - "dec510": "dec510", - "9c6b21": "9c6b21" + "a52929": "2f794e" }, "1": { "632929": "2f2962", "f76b6b": "639cf7", - "101010": "101010", "3a3a4a": "3c3c50", - "ffffff": "ffffff", "d63a3a": "4263ef", - "b5b5ce": "b5b5ce", "9494a5": "6262a4", "a52929": "29429c", "dec510": "10bdde", @@ -28,14 +18,9 @@ "2": { "632929": "645117", "f76b6b": "c59f29", - "101010": "101010", "3a3a4a": "282d2c", - "ffffff": "ffffff", "d63a3a": "ffca2a", - "b5b5ce": "b5b5ce", "9494a5": "3c4543", - "a52929": "b88619", - "dec510": "dec510", - "9c6b21": "9c6b21" + "a52929": "b88619" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/215.json b/public/images/pokemon/variant/female/215.json index 970270a1c7d..58805d2bc3d 100644 --- a/public/images/pokemon/variant/female/215.json +++ b/public/images/pokemon/variant/female/215.json @@ -7,7 +7,6 @@ "c52973": "3a5760", "f75273": "637696", "42849c": "902738", - "000000": "000000", "a57b3a": "c3701b", "dece73": "ffcd68", "bdbdc5": "c5a080", @@ -23,12 +22,10 @@ "c52973": "3e7ed2", "f75273": "7ac3f0", "42849c": "eab273", - "000000": "000000", "a57b3a": "d04e6d", "dece73": "ff8ce0", "bdbdc5": "a1a0c3", "4a4a4a": "383d51", - "f7f7ff": "f7f7ff", "8cc5ce": "d1d1ee" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/217.json b/public/images/pokemon/variant/female/217.json index e09efa5de60..79f8ebdfd22 100644 --- a/public/images/pokemon/variant/female/217.json +++ b/public/images/pokemon/variant/female/217.json @@ -1,47 +1,30 @@ { "0": { - "7b7b8c": "7b7b8c", - "101010": "101010", "634229": "1d3d26", - "ffffff": "ffffff", "945221": "2f6324", "422919": "112114", - "dedede": "dedede", "bd7342": "6a8a46", "ffef84": "f7ffa5", - "b5b5bd": "b5b5bd", "c59c4a": "ceb552", "f7c563": "f7de7b", "841931": "a52942", "de3a5a": "ef526b" }, "1": { - "7b7b8c": "7b7b8c", - "101010": "101010", "634229": "6b1d38", - "ffffff": "ffffff", "945221": "8c2a37", "422919": "2d0e1f", - "dedede": "dedede", "bd7342": "b74543", "ffef84": "f9eddb", - "b5b5bd": "b5b5bd", "c59c4a": "c48e81", - "f7c563": "f2cab8", - "841931": "841931", - "de3a5a": "de3a5a" + "f7c563": "f2cab8" }, "2": { - "7b7b8c": "7b7b8c", - "101010": "101010", "634229": "1e2249", - "ffffff": "ffffff", "945221": "323760", "422919": "111433", - "dedede": "dedede", "bd7342": "46527a", "ffef84": "adf2f7", - "b5b5bd": "b5b5bd", "c59c4a": "45a2f9", "f7c563": "5ccaf2", "841931": "a52942", diff --git a/public/images/pokemon/variant/female/229.json b/public/images/pokemon/variant/female/229.json index 519ca256ec5..60cf3e98a76 100644 --- a/public/images/pokemon/variant/female/229.json +++ b/public/images/pokemon/variant/female/229.json @@ -6,16 +6,11 @@ "a59cad": "a84244", "192129": "402b41", "4a4a52": "85738c", - "000000": "000000", "a55a4a": "ceb0a5", "f79c84": "f8f1e7", "841021": "3b59a1", "31313a": "5c435d", - "ada5b3": "ada5b3", - "632910": "8c6362", - "f8f9ff": "f8f9ff", - "e2e0e3": "e2e0e3", - "9c293a": "9c293a" + "632910": "8c6362" }, "2": { "84738c": "101028", @@ -24,15 +19,12 @@ "a59cad": "223657", "192129": "43343c", "4a4a52": "f8faf3", - "000000": "000000", "a55a4a": "613762", "f79c84": "844d76", "841021": "fe8d53", "31313a": "b3a5a2", "ada5b3": "101028", "632910": "3f2440", - "f8f9ff": "223657", - "e2e0e3": "e2e0e3", - "9c293a": "9c293a" + "f8f9ff": "223657" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/232.json b/public/images/pokemon/variant/female/232.json index cb8ad1e06ff..36772bf3f3a 100644 --- a/public/images/pokemon/variant/female/232.json +++ b/public/images/pokemon/variant/female/232.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "6b7373": "7fa0d7", "4a5252": "5f74c7", "3a3a3a": "333a77", @@ -11,8 +10,6 @@ "d6ded6": "f4f4f4", "3a3737": "444b5e", "738484": "6c7488", - "f9f9f9": "f9f9f9", - "d6d6d6": "d6d6d6", "bdc5c5": "cdd1dc", "707f7f": "b6511d", "424242": "7a330e", @@ -21,7 +18,6 @@ "ffffff": "f2db98" }, "2": { - "101010": "101010", "6b7373": "d17e47", "4a5252": "994e30", "3a3a3a": "6f2219", @@ -32,8 +28,6 @@ "d6ded6": "665263", "3a3737": "2c1f2e", "738484": "1e1225", - "f9f9f9": "f9f9f9", - "d6d6d6": "d6d6d6", "bdc5c5": "584158", "707f7f": "1d2a54", "424242": "12123a", diff --git a/public/images/pokemon/variant/female/255.json b/public/images/pokemon/variant/female/255.json index 4637ce061ca..e2cd456df9f 100644 --- a/public/images/pokemon/variant/female/255.json +++ b/public/images/pokemon/variant/female/255.json @@ -3,26 +3,22 @@ "ad8c00": "782a14", "efbd31": "d36f2b", "f7de6b": "f1a545", - "000000": "000000", "ad4210": "318793", "ff8c31": "6bcdb2", "e65a21": "4cada9", "ffad52": "a7ebe2", "7b4a19": "1c2d5b", - "ffffff": "ffffff", "8c5221": "580c0b" }, "2": { "ad8c00": "550d38", "efbd31": "811c3e", "f7de6b": "ad3342", - "000000": "000000", "ad4210": "b3817d", "ff8c31": "f3e5cf", "e65a21": "d3afa0", "ffad52": "fffef6", "7b4a19": "4b2661", - "ffffff": "ffffff", "8c5221": "43082f" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/256.json b/public/images/pokemon/variant/female/256.json index 0895f764700..165e18a8148 100644 --- a/public/images/pokemon/variant/female/256.json +++ b/public/images/pokemon/variant/female/256.json @@ -1,44 +1,36 @@ { "1": { "de5a29": "da8923", - "121212": "121212", "ff7b4a": "f7ca4b", "9c3110": "8e3820", "9c7329": "3a888d", - "191919": "191919", "efde73": "c3f4cd", "efbd4a": "84cfc1", "d63131": "9083aa", "962d0d": "605c8d", - "ffffff": "ffffff", "d05325": "414f7b", "6b6b73": "3e3969", "dedece": "9386b8", "9c8c84": "696098", "645455": "3e3969", "5a4a4a": "2c2a44", - "84736b": "574b6e", - "000000": "000000" + "84736b": "574b6e" }, "2": { "de5a29": "cdb09b", - "121212": "121212", "ff7b4a": "fff7e1", "9c3110": "8a685f", "9c7329": "64163c", - "191919": "191919", "efde73": "c44d52", "efbd4a": "962b4a", "d63131": "d3c3ff", "962d0d": "938bd6", - "ffffff": "ffffff", "d05325": "53346f", "6b6b73": "161c2c", "dedece": "494f67", "9c8c84": "2d2e46", "645455": "211d32", "5a4a4a": "ad662b", - "84736b": "e6a653", - "000000": "000000" + "84736b": "e6a653" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/257.json b/public/images/pokemon/variant/female/257.json index 7d1e3988e81..06614aa28dd 100644 --- a/public/images/pokemon/variant/female/257.json +++ b/public/images/pokemon/variant/female/257.json @@ -3,7 +3,6 @@ "bdb594": "a8c7da", "948463": "8095b3", "b93e3e": "46649c", - "000000": "000000", "63524a": "55607d", "dedeb5": "f0fbff", "ee5e5e": "598dc1", @@ -27,7 +26,6 @@ "bdb594": "a43b45", "948463": "772436", "b93e3e": "55153a", - "000000": "000000", "63524a": "5b1832", "dedeb5": "cc6155", "ee5e5e": "772040", diff --git a/public/images/pokemon/variant/female/3.json b/public/images/pokemon/variant/female/3.json index de2c52f6003..a131e48f154 100644 --- a/public/images/pokemon/variant/female/3.json +++ b/public/images/pokemon/variant/female/3.json @@ -8,15 +8,13 @@ "ff7b73": "712f8f", "bd6b31": "168a69", "de4242": "3f1375", - "101010": "101010", "105242": "190038", "107b6b": "9e1976", "2e5519": "38001c", "5a9c3a": "b34952", "5ad6c5": "f062a4", "21b59c": "de3592", - "84de7b": "ff745e", - "ffffff": "ffffff" + "84de7b": "ff745e" }, "2": { "843100": "420514", @@ -27,7 +25,6 @@ "ff7b73": "9db042", "bd6b31": "852a41", "de4242": "3c8227", - "101010": "101010", "105242": "381601", "107b6b": "d15d04", "2e5519": "011c38", @@ -35,7 +32,6 @@ "5ad6c5": "faa405", "21b59c": "fa8405", "84de7b": "80ced9", - "ffffff": "ffffff", "2f561a": "011b34" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/307.json b/public/images/pokemon/variant/female/307.json index d3e6a2437f1..2037cf72054 100644 --- a/public/images/pokemon/variant/female/307.json +++ b/public/images/pokemon/variant/female/307.json @@ -1,34 +1,25 @@ { "1": { "7b6b6b": "7a5f5f", - "000000": "000000", "e6dede": "deccc3", "b5adad": "9f8383", - "4a4242": "4a4242", - "ffffff": "ffffff", "3a4a5a": "5a2859", "b5d6ff": "f4a8c8", "6bcee6": "ce7bb0", "d65252": "d65287", - "84424a": "84424a", "3a84b5": "7e4377", - "5aa5ce": "b95ba1", - "d65273": "d65273" + "5aa5ce": "b95ba1" }, "2": { "7b6b6b": "314b76", - "000000": "000000", "e6dede": "c2cfdb", "b5adad": "6f89aa", "4a4242": "1e2f52", - "ffffff": "ffffff", "3a4a5a": "113926", "b5d6ff": "7edfb7", "6bcee6": "66c3a3", "d65252": "c067c7", - "84424a": "84424a", "3a84b5": "375a47", - "5aa5ce": "579578", - "d65273": "d65273" + "5aa5ce": "579578" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/308.json b/public/images/pokemon/variant/female/308.json index 02dc68c8d60..e828896b759 100644 --- a/public/images/pokemon/variant/female/308.json +++ b/public/images/pokemon/variant/female/308.json @@ -1,36 +1,30 @@ { "1": { "84424a": "59141d", - "101010": "101010", "e6738c": "8b2e2b", "ef9ca5": "a53835", "ce5a73": "83272c", "52424a": "5a4357", "dedede": "e0cdd9", - "8c848c": "8c848c", "ada5ad": "966f8d", "c5c5c5": "a88da0", "f7de84": "ee9bd5", "efbd5a": "ce5cb6", "b54a5a": "83272c", - "ffffff": "ffffff", "a57329": "722966" }, "2": { "84424a": "461f5d", - "101010": "101010", "e6738c": "7d5187", "ef9ca5": "a37aac", "ce5a73": "71467d", "52424a": "1f344a", "dedede": "cbd0d6", - "8c848c": "8c848c", "ada5ad": "6c7d9e", "c5c5c5": "9faab9", "f7de84": "5abbef", "efbd5a": "3a8dca", "b54a5a": "633971", - "ffffff": "ffffff", "a57329": "205a9e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/315.json b/public/images/pokemon/variant/female/315.json index 2e85f36b55f..b05a8cd0379 100644 --- a/public/images/pokemon/variant/female/315.json +++ b/public/images/pokemon/variant/female/315.json @@ -4,7 +4,6 @@ "3a5229": "0b2337", "a5314a": "9c5910", "a5de73": "4d8393", - "000000": "000000", "f75a84": "d28f31", "ffa5bd": "efc754", "73c55a": "215569", @@ -21,7 +20,6 @@ "3a5229": "2f1c52", "a5314a": "1d6970", "a5de73": "9e76bb", - "000000": "000000", "f75a84": "55b9af", "ffa5bd": "83e4d0", "73c55a": "764f9c", diff --git a/public/images/pokemon/variant/female/369.json b/public/images/pokemon/variant/female/369.json index 1c2750e0d0f..4366c16b465 100644 --- a/public/images/pokemon/variant/female/369.json +++ b/public/images/pokemon/variant/female/369.json @@ -3,8 +3,6 @@ "6b5242": "1e2432", "efcea5": "757e99", "ceb594": "4b5368", - "52423a": "52423a", - "000000": "000000", "524242": "91743c", "b59c9c": "fcef8e", "9c847b": "e0cc66", @@ -20,8 +18,6 @@ "6b5242": "3a421e", "efcea5": "96a558", "ceb594": "758745", - "52423a": "52423a", - "000000": "000000", "524242": "32214a", "b59c9c": "6954a2", "9c847b": "543d7d", diff --git a/public/images/pokemon/variant/female/399.json b/public/images/pokemon/variant/female/399.json index 673550a23b9..cb27d48e595 100644 --- a/public/images/pokemon/variant/female/399.json +++ b/public/images/pokemon/variant/female/399.json @@ -1,30 +1,22 @@ { "1": { - "423110": "423110", "9c6331": "d46378", "c58c42": "e5a5bb", "634a31": "70323f", - "101010": "101010", "cebd84": "eba978", "ffefbd": "fff5d1", - "ffffff": "ffffff", "5a4229": "824561", "ef5a4a": "ffa488", - "cec5c5": "b7b9d0", - "848484": "848484" + "cec5c5": "b7b9d0" }, "2": { "423110": "101e42", "9c6331": "3e5ca8", "c58c42": "617dda", "634a31": "313d63", - "101010": "101010", "cebd84": "8497ce", "ffefbd": "bdcfff", - "ffffff": "ffffff", "5a4229": "42295a", - "ef5a4a": "4a9bef", - "cec5c5": "cec5c5", - "848484": "848484" + "ef5a4a": "4a9bef" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/400.json b/public/images/pokemon/variant/female/400.json index 80cb090f619..486884150fe 100644 --- a/public/images/pokemon/variant/female/400.json +++ b/public/images/pokemon/variant/female/400.json @@ -1,14 +1,10 @@ { "1": { - "5a3a31": "5a3a31", "bd844a": "dba0ac", - "101010": "101010", "8c5a31": "c46269", "e6d69c": "fff5d1", "ad947b": "bd9171", "c5c5b5": "b7b9d0", - "ffffff": "ffffff", - "3a3129": "3a3129", "63523a": "824561", "de4a4a": "ffa488", "423a31": "3e3040" @@ -16,12 +12,10 @@ "2": { "5a3a31": "313d63", "bd844a": "617dda", - "101010": "101010", "8c5a31": "3e5ca8", "e6d69c": "bdcfff", "ad947b": "8497ce", "c5c5b5": "b5b6c5", - "ffffff": "ffffff", "3a3129": "2c183f", "63523a": "42295a", "de4a4a": "4a9bef", diff --git a/public/images/pokemon/variant/female/401.json b/public/images/pokemon/variant/female/401.json index eea4306d842..8d2a77165c1 100644 --- a/public/images/pokemon/variant/female/401.json +++ b/public/images/pokemon/variant/female/401.json @@ -3,7 +3,6 @@ "524a42": "cf8439", "9c9c94": "ffeea0", "7b7363": "f6bb47", - "101010": "101010", "8c6b08": "272344", "ffefad": "56769d", "e6c56b": "454389", @@ -19,7 +18,6 @@ "524a42": "453565", "9c9c94": "ae85ba", "7b7363": "71558c", - "101010": "101010", "8c6b08": "784341", "ffefad": "ffd47c", "e6c56b": "e59a75", @@ -28,7 +26,6 @@ "6b4221": "853360", "e66b63": "70af85", "b54a3a": "2f9378", - "fff2be": "fff2be", "f3d277": "ffd8ed" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/407.json b/public/images/pokemon/variant/female/407.json index c25e377d5de..d6a2535891e 100644 --- a/public/images/pokemon/variant/female/407.json +++ b/public/images/pokemon/variant/female/407.json @@ -4,7 +4,6 @@ "ffffff": "fff1cb", "297b52": "153a51", "d6cede": "e1bf95", - "000000": "000000", "7b3a5a": "9c5910", "bd426b": "d28f31", "ff6384": "efc754", @@ -21,7 +20,6 @@ "ffffff": "fcf8ff", "297b52": "503277", "d6cede": "d6c7e6", - "000000": "000000", "7b3a5a": "18585e", "bd426b": "55b9af", "ff6384": "83e4d0", diff --git a/public/images/pokemon/variant/female/41.json b/public/images/pokemon/variant/female/41.json index 08446ef4908..2660879e7ae 100644 --- a/public/images/pokemon/variant/female/41.json +++ b/public/images/pokemon/variant/female/41.json @@ -1,26 +1,20 @@ { "1": { - "101010": "101010", "637bb5": "37326f", "4a427b": "14093b", "bdceff": "868ecc", "8cb5ef": "4e538f", "b5529c": "cc7b32", "73215a": "aa4c18", - "d673bd": "f0ad57", - "ffffff": "ffffff", - "636363": "636363" + "d673bd": "f0ad57" }, "2": { - "101010": "101010", "637bb5": "916c8b", "4a427b": "4d3259", "bdceff": "e8d2e6", "8cb5ef": "cbabca", "b5529c": "94241c", "73215a": "670f10", - "d673bd": "bc3b1d", - "ffffff": "ffffff", - "636363": "636363" + "d673bd": "bc3b1d" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/418.json b/public/images/pokemon/variant/female/418.json index 628252e5296..7100520550d 100644 --- a/public/images/pokemon/variant/female/418.json +++ b/public/images/pokemon/variant/female/418.json @@ -3,12 +3,8 @@ "ad5a21": "7d1e39", "ef7b19": "9c354f", "7b4221": "611b35", - "191919": "191919", "dec584": "cea49d", "f7f7b5": "e8d4cc", - "ffffff": "ffffff", - "6b6b6b": "6b6b6b", - "d6d6ce": "d6d6ce", "ffde00": "d2e5e8", "9c6300": "995e5c", "e6a531": "a0b3ba", @@ -20,12 +16,9 @@ "ad5a21": "cd91aa", "ef7b19": "e8c3ce", "7b4221": "84466b", - "191919": "191919", "dec584": "8a4370", "f7f7b5": "a8688f", - "ffffff": "ffffff", "6b6b6b": "432e38", - "d6d6ce": "d6d6ce", "ffde00": "eda342", "9c6300": "642858", "e6a531": "ca6e26", diff --git a/public/images/pokemon/variant/female/419.json b/public/images/pokemon/variant/female/419.json index 1ea1637ff2c..6572441f99c 100644 --- a/public/images/pokemon/variant/female/419.json +++ b/public/images/pokemon/variant/female/419.json @@ -2,7 +2,6 @@ "2": { "7b4221": "9e6a86", "ef7b19": "debfc8", - "191919": "191919", "ce6b19": "dca5b5", "ad5a21": "cd91aa", "9c6300": "672e5d", @@ -11,7 +10,6 @@ "99693c": "8e410e", "e6a531": "d4812f", "6b6b6b": "726481", - "ffffff": "ffffff", "ffde00": "eda342", "2163a5": "4b2a70", "63bde6": "744d99" diff --git a/public/images/pokemon/variant/female/42.json b/public/images/pokemon/variant/female/42.json index 000e127793e..fbef4154432 100644 --- a/public/images/pokemon/variant/female/42.json +++ b/public/images/pokemon/variant/female/42.json @@ -6,11 +6,7 @@ "631052": "892d03", "ce6bb5": "f1a139", "adceff": "666fb4", - "000000": "000000", "ad52ad": "d5711b", - "636363": "636363", - "ffffff": "ffffff", - "d6d6d6": "d6d6d6", "943a7b": "af4e0c" }, "2": { @@ -20,11 +16,7 @@ "631052": "54070c", "ce6bb5": "bc3b1d", "adceff": "e8d2e6", - "000000": "000000", "ad52ad": "94241c", - "636363": "636363", - "ffffff": "ffffff", - "d6d6d6": "d6d6d6", "943a7b": "6c1314" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/424.json b/public/images/pokemon/variant/female/424.json index 4e00c3c1234..eace71f2a3a 100644 --- a/public/images/pokemon/variant/female/424.json +++ b/public/images/pokemon/variant/female/424.json @@ -3,7 +3,6 @@ "734a42": "415c73", "ad5242": "428dad", "ff735a": "5ae9ff", - "101010": "101010", "debd73": "c4b487", "ffefa5": "ffeccc", "8c6b42": "8c7457", @@ -13,15 +12,12 @@ "9c4ac5": "c47440", "bd9473": "bd9a7e", "ab5141": "293b94", - "ffffff": "ffffff", - "fc7158": "3973e5", - "adada5": "adada5" + "fc7158": "3973e5" }, "2": { "734a42": "593802", "ad5242": "946212", "ff735a": "ffb338", - "101010": "101010", "debd73": "99455d", "ffefa5": "ed8286", "8c6b42": "632339", @@ -31,8 +27,6 @@ "9c4ac5": "bfbeb4", "bd9473": "802d44", "ab5141": "8c1c2f", - "ffffff": "ffffff", - "fc7158": "b33636", - "adada5": "adada5" + "fc7158": "b33636" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/44.json b/public/images/pokemon/variant/female/44.json index afaf4860bf5..0e017870600 100644 --- a/public/images/pokemon/variant/female/44.json +++ b/public/images/pokemon/variant/female/44.json @@ -1,7 +1,6 @@ { "1": { "5a2900": "162486", - "101010": "101010", "ad523a": "4d75b6", "843a19": "2c489f", "ce734a": "7aa8d2", @@ -17,7 +16,6 @@ }, "2": { "5a2900": "680b10", - "101010": "101010", "ad523a": "bd4e2d", "843a19": "8d1e11", "ce734a": "d98247", diff --git a/public/images/pokemon/variant/female/443.json b/public/images/pokemon/variant/female/443.json index d1de70b1e26..b858d91da50 100644 --- a/public/images/pokemon/variant/female/443.json +++ b/public/images/pokemon/variant/female/443.json @@ -5,15 +5,9 @@ "8cc5d6": "42a5f7", "426b84": "085284", "101010": "101921", - "42d6de": "42d6de", - "c5ced6": "c5ced6", - "3aadc5": "3aadc5", - "ffffff": "ffffff", - "5a6363": "5a6363", "7b1910": "731029", "ad3a10": "a57c10", "de5a29": "e6c529", - "ce7373": "ce7373", "5a1000": "524200" }, "1": { @@ -23,10 +17,7 @@ "426b84": "522521", "101010": "101921", "42d6de": "54b0ff", - "c5ced6": "c5ced6", "3aadc5": "2878e1", - "ffffff": "ffffff", - "5a6363": "5a6363", "7b1910": "811c60", "ad3a10": "92a9b2", "de5a29": "d9f0f1", @@ -40,10 +31,7 @@ "426b84": "223a4a", "101010": "101921", "42d6de": "6fe6a3", - "c5ced6": "c5ced6", "3aadc5": "23b8a8", - "ffffff": "ffffff", - "5a6363": "5a6363", "7b1910": "7b1a43", "ad3a10": "be472f", "de5a29": "dd845e", diff --git a/public/images/pokemon/variant/female/444.json b/public/images/pokemon/variant/female/444.json index c000a06a812..fbfdd2f5b31 100644 --- a/public/images/pokemon/variant/female/444.json +++ b/public/images/pokemon/variant/female/444.json @@ -11,10 +11,7 @@ "de9c19": "e53d3f", "5a1000": "521000", "ad314a": "ad7b08", - "c5ced6": "c5ced6", - "ffffff": "ffffff", - "de5a29": "f7b834", - "737b84": "737b84" + "de5a29": "f7b834" }, "1": { "102952": "3d0a17", @@ -28,10 +25,7 @@ "de9c19": "d9900e", "5a1000": "211e33", "ad314a": "829ca6", - "c5ced6": "c5ced6", - "ffffff": "ffffff", - "de5a29": "c2dedf", - "737b84": "737b84" + "de5a29": "c2dedf" }, "2": { "102952": "092136", @@ -45,9 +39,6 @@ "de9c19": "2c8bf7", "5a1000": "521000", "ad314a": "be472f", - "c5ced6": "c5ced6", - "ffffff": "ffffff", - "de5a29": "ee723e", - "737b84": "737b84" + "de5a29": "ee723e" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/445.json b/public/images/pokemon/variant/female/445.json index 0dfa20b8d25..936369768de 100644 --- a/public/images/pokemon/variant/female/445.json +++ b/public/images/pokemon/variant/female/445.json @@ -6,12 +6,7 @@ "292952": "091f4e", "5a63ad": "33719e", "ffd619": "42d6de", - "737b84": "737b84", - "101010": "101010", - "ffffff": "ffffff", - "c5ced6": "c5ced6", "6b3a5a": "6b4a29", - "bd737b": "bd737b", "e64a31": "f7ac34", "5a1000": "502209", "bd3a42": "b2630f" @@ -23,12 +18,7 @@ "292952": "3d0a17", "5a63ad": "deae7a", "ffd619": "4caaff", - "737b84": "737b84", - "101010": "101010", - "ffffff": "ffffff", - "c5ced6": "c5ced6", "6b3a5a": "6b4a29", - "bd737b": "bd737b", "e64a31": "dce8e8", "5a1000": "393648", "bd3a42": "9fb6bf" @@ -40,12 +30,7 @@ "292952": "051a2e", "5a63ad": "2f434b", "ffd619": "6fe6a3", - "737b84": "737b84", - "101010": "101010", - "ffffff": "ffffff", - "c5ced6": "c5ced6", "6b3a5a": "6b4a29", - "bd737b": "bd737b", "e64a31": "ee723e", "5a1000": "521000", "bd3a42": "be472f" diff --git a/public/images/pokemon/variant/female/45.json b/public/images/pokemon/variant/female/45.json index 0da9343d254..65f2f6544ff 100644 --- a/public/images/pokemon/variant/female/45.json +++ b/public/images/pokemon/variant/female/45.json @@ -1,6 +1,5 @@ { "1": { - "101010": "101010", "731910": "091d79", "f78c8c": "8cbef7", "f7adb5": "add8f7", @@ -18,7 +17,6 @@ "7384a5": "966fbb" }, "2": { - "101010": "101010", "731910": "97696f", "f78c8c": "ebe8d1", "f7adb5": "51030e", diff --git a/public/images/pokemon/variant/female/456.json b/public/images/pokemon/variant/female/456.json index 68b30fe1a31..d4578b7e865 100644 --- a/public/images/pokemon/variant/female/456.json +++ b/public/images/pokemon/variant/female/456.json @@ -2,7 +2,6 @@ "1": { "526b8c": "966764", "94d6e6": "f3e1c6", - "101010": "101010", "7394ad": "cda38c", "833171": "d3633a", "29293a": "7e2023", @@ -10,14 +9,12 @@ "c5e6f7": "fffbf2", "c54591": "f19e53", "426b84": "e2895d", - "efffff": "efffff", "c54a94": "8bbcd9", "ad8cbd": "f6c37c" }, "2": { "526b8c": "162743", "94d6e6": "27616f", - "101010": "101010", "7394ad": "1c405b", "833171": "349b8b", "29293a": "b66736", @@ -25,7 +22,6 @@ "c5e6f7": "429b91", "c54591": "5fd0a4", "426b84": "fff8b0", - "efffff": "efffff", "c54a94": "7b1615", "ad8cbd": "38a493" } diff --git a/public/images/pokemon/variant/female/457.json b/public/images/pokemon/variant/female/457.json index 158974b5d96..a1b8f7ff5fa 100644 --- a/public/images/pokemon/variant/female/457.json +++ b/public/images/pokemon/variant/female/457.json @@ -1,7 +1,6 @@ { "1": { "526b8c": "966764", - "101010": "101010", "c5e6f7": "fffbf2", "94d6e6": "f3e1c6", "29293a": "a42d2f", @@ -10,12 +9,10 @@ "c54591": "ffc369", "9e357b": "c7703c", "73427b": "6f75a0", - "c54a94": "aadff3", - "efffff": "efffff" + "c54a94": "aadff3" }, "2": { "526b8c": "162743", - "101010": "101010", "c5e6f7": "429b91", "94d6e6": "27616f", "29293a": "ffa849", @@ -24,7 +21,6 @@ "c54591": "50c2a1", "9e357b": "2e9b8f", "73427b": "7b1213", - "c54a94": "983121", - "efffff": "efffff" + "c54a94": "983121" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/461.json b/public/images/pokemon/variant/female/461.json index 5ff168f0e65..5c441ed7979 100644 --- a/public/images/pokemon/variant/female/461.json +++ b/public/images/pokemon/variant/female/461.json @@ -4,7 +4,6 @@ "c52973": "3a3d60", "ff94a5": "94a3c5", "f75273": "636896", - "101010": "101010", "424a84": "691043", "7384bd": "ac3755", "6b6bad": "8b274b", @@ -21,12 +20,10 @@ "c52973": "3d81c5", "ff94a5": "78ebfc", "f75273": "5cb0eb", - "101010": "101010", "424a84": "ecaa84", "7384bd": "ffeed4", "6b6bad": "ffd3a7", "293152": "78462e", - "ffffff": "ffffff", "c58c08": "8f1a8d", "ffd642": "e6509f", "c5bdce": "b3cedb", diff --git a/public/images/pokemon/variant/female/464.json b/public/images/pokemon/variant/female/464.json index e97690927a9..adeefb45d27 100644 --- a/public/images/pokemon/variant/female/464.json +++ b/public/images/pokemon/variant/female/464.json @@ -1,25 +1,18 @@ { "1": { - "6b6373": "6b6373", "3a3a4a": "3b2d40", "5a4a63": "514259", - "101010": "101010", - "efefff": "efefff", "29293a": "1f1028", "523100": "3b1f58", "7b6b7b": "6e5d7b", - "948cad": "948cad", "943a00": "4c2f6e", "ef5200": "6f4d9f", - "cecede": "cecede", - "ad2900": "ad2900", "bd4200": "60418a" }, "2": { "6b6373": "b66360", "3a3a4a": "701f38", "5a4a63": "8f2c41", - "101010": "101010", "efefff": "ffdfd1", "29293a": "442339", "523100": "492133", diff --git a/public/images/pokemon/variant/female/592.json b/public/images/pokemon/variant/female/592.json index 7cc683367b9..45c49569a9e 100644 --- a/public/images/pokemon/variant/female/592.json +++ b/public/images/pokemon/variant/female/592.json @@ -1,34 +1,28 @@ { "0": { "7b3a52": "622a1e", - "101010": "101010", "d6b5bd": "f2bba3", "ffdee6": "ffe7df", "bd84a5": "eb8b4d", "ffb5d6": "ffb868", - "ffffff": "ffffff", "ad3142": "de4a29", "5aa5c5": "ffb93c" }, "1": { "7b3a52": "302a85", - "101010": "101010", "d6b5bd": "9d92ce", "ffdee6": "e3deff", "bd84a5": "5052c1", "ffb5d6": "6270e3", - "ffffff": "ffffff", "ad3142": "de4a29", "5aa5c5": "6c00d0" }, "2": { "7b3a52": "4e1b55", - "101010": "101010", "d6b5bd": "703573", "ffdee6": "a65ea3", "bd84a5": "efacd1", "ffb5d6": "ffdbec", - "ffffff": "ffffff", "ad3142": "c04ba4", "5aa5c5": "241098" } diff --git a/public/images/pokemon/variant/female/593.json b/public/images/pokemon/variant/female/593.json index 885e4f12e4d..66366bcfe8e 100644 --- a/public/images/pokemon/variant/female/593.json +++ b/public/images/pokemon/variant/female/593.json @@ -1,35 +1,27 @@ { "0": { "7b3a52": "622a1e", - "101010": "101010", "c5a5bd": "f2bba3", "ffdef7": "ffe7df", "d684b5": "eb8b4d", "ffa5ce": "ffb868", - "de4a29": "de4a29", - "29529c": "622a1e", - "ffffff": "ffffff" + "29529c": "622a1e" }, "1": { "7b3a52": "302a85", - "101010": "101010", "c5a5bd": "9d92ce", "ffdef7": "e3deff", "d684b5": "5052c1", "ffa5ce": "6270e3", - "de4a29": "e267c8", - "29529c": "29529c", - "ffffff": "ffffff" + "de4a29": "e267c8" }, "2": { "7b3a52": "4e1b55", - "101010": "101010", "c5a5bd": "703573", "ffdef7": "a65ea3", "d684b5": "efacd1", "ffa5ce": "ffdbec", "de4a29": "c04ba4", - "29529c": "241098", - "ffffff": "ffffff" + "29529c": "241098" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/6215.json b/public/images/pokemon/variant/female/6215.json index 99e0c880142..56ee351cd66 100644 --- a/public/images/pokemon/variant/female/6215.json +++ b/public/images/pokemon/variant/female/6215.json @@ -1,7 +1,6 @@ { "1": { "503678": "0f5d6d", - "080808": "080808", "514a80": "402010", "956cbe": "31dabb", "9c9bce": "ae8976", @@ -12,13 +11,10 @@ "ffde7b": "a7a7a7", "584d80": "562627", "28234b": "220d0a", - "c52973": "ea903f", - "bdbdc5": "bdbdc5", - "f6f6ff": "f6f6ff" + "c52973": "ea903f" }, "2": { "503678": "601522", - "080808": "080808", "514a80": "14273a", "956cbe": "cc5427", "9c9bce": "3c8775", @@ -29,8 +25,6 @@ "ffde7b": "ffe07e", "584d80": "1c3942", "28234b": "0a191e", - "c52973": "f49633", - "bdbdc5": "bdbdc5", - "f6f6ff": "f6f6ff" + "c52973": "f49633" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/84.json b/public/images/pokemon/variant/female/84.json index 19da28cb8c1..92ee4e872f8 100644 --- a/public/images/pokemon/variant/female/84.json +++ b/public/images/pokemon/variant/female/84.json @@ -4,9 +4,6 @@ "946b5a": "3a8951", "dead73": "a5e6a0", "bd8c52": "65bf75", - "636363": "636363", - "ffffff": "ffffff", - "101010": "101010", "a5844a": "bba689", "635210": "7a614c", "efdead": "ece4ce", @@ -18,8 +15,6 @@ "dead73": "c35d6a", "bd8c52": "9b374e", "636363": "3a2050", - "ffffff": "ffffff", - "101010": "101010", "a5844a": "af85a2", "635210": "4a2240", "efdead": "e7cedb", @@ -31,8 +26,6 @@ "dead73": "b0ebed", "bd8c52": "7abcc7", "636363": "7a355d", - "ffffff": "ffffff", - "101010": "101010", "a5844a": "4a1e41", "635210": "391436", "efdead": "884b71", diff --git a/public/images/pokemon/variant/female/85.json b/public/images/pokemon/variant/female/85.json index 9f78ce39fae..7a8d643d5ac 100644 --- a/public/images/pokemon/variant/female/85.json +++ b/public/images/pokemon/variant/female/85.json @@ -1,13 +1,8 @@ { "0": { - "424242": "424242", - "848484": "848484", - "000000": "000000", "5a4221": "1b4e31", "ce9c52": "65bf75", "a57b5a": "3a8951", - "ffffff": "ffffff", - "d6cece": "d6cece", "635a42": "7a614c", "efdead": "ece4ce", "b5a57b": "bba689", @@ -19,12 +14,9 @@ "1": { "424242": "1c1d49", "848484": "2e3260", - "000000": "000000", "5a4221": "4e0d2f", "ce9c52": "9b374e", "a57b5a": "762141", - "ffffff": "ffffff", - "d6cece": "d6cece", "635a42": "4a2240", "efdead": "e7cedb", "b5a57b": "af85a2", @@ -36,12 +28,9 @@ "2": { "424242": "621e2a", "848484": "973d41", - "000000": "000000", "5a4221": "2e4c6c", "ce9c52": "94d1db", "a57b5a": "6a9dbf", - "ffffff": "ffffff", - "d6cece": "d6cece", "635a42": "391436", "efdead": "784766", "b5a57b": "54284b", From 3b2753f27c520f893599c0a6e380516fefebfe56 Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Fri, 23 May 2025 05:14:52 +0200 Subject: [PATCH 05/71] [i18n] Moved Ball "Cancel" label to a different locale file (#5866) --- src/ui/ball-ui-handler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/ball-ui-handler.ts b/src/ui/ball-ui-handler.ts index eb7c208662a..66d7847213f 100644 --- a/src/ui/ball-ui-handler.ts +++ b/src/ui/ball-ui-handler.ts @@ -32,7 +32,7 @@ export default class BallUiHandler extends UiHandler { for (let pb = 0; pb < Object.keys(globalScene.pokeballCounts).length; pb++) { optionsTextContent += `${getPokeballName(pb)}\n`; } - optionsTextContent += i18next.t("pokeball:cancel"); + optionsTextContent += i18next.t("commandUiHandler:ballCancel"); const optionsText = addTextObject(0, 0, optionsTextContent, TextStyle.WINDOW, { align: "right", maxLines: 6 }); const optionsTextWidth = optionsText.displayWidth; this.pokeballSelectContainer = globalScene.add.container( From a0484bbde1cdb81f648703e86af1b93b7d599730 Mon Sep 17 00:00:00 2001 From: Madmadness65 <59298170+Madmadness65@users.noreply.github.com> Date: Fri, 23 May 2025 02:36:30 -0500 Subject: [PATCH 06/71] [Item] Add Deep Sea Scale & Deep Sea Tooth items (#5078) * Add Deep Sea Scale & Tooth items Also changes Clamperl's evolution method from gender-specific to requiring one of the Deep Sea items to be held. * Move Deep Sea items to Great tier Also gives every species stat booster item a `rare` boolean to split these items from the rest of the species stat booster items. Updated the existing tests accordingly to account for the split. * Reduce Great tier species booster item weight * Fix global scene on evolution conditions * Merge branch 'beta' into deep-sea-items * Change how the held item is found in evolution condition It should no longer look through the entire party's modifiers when seeing if Clamperl is eligible to use a Linking Cord. * Fix wrong type being boosted --------- Co-authored-by: damocleas Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> --- src/data/balance/pokemon-evolutions.ts | 11 ++++--- src/modifier/modifier-type.ts | 45 ++++++++++++++++++++------ test/items/light_ball.test.ts | 10 +++--- test/items/metal_powder.test.ts | 10 +++--- test/items/quick_powder.test.ts | 10 +++--- test/items/thick_club.test.ts | 14 ++++---- 6 files changed, 64 insertions(+), 36 deletions(-) diff --git a/src/data/balance/pokemon-evolutions.ts b/src/data/balance/pokemon-evolutions.ts index 64409c3c989..cf1e4061987 100644 --- a/src/data/balance/pokemon-evolutions.ts +++ b/src/data/balance/pokemon-evolutions.ts @@ -9,14 +9,14 @@ import { Nature } from "#enums/nature"; import { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; -import { TimeOfDay } from "#enums/time-of-day"; -import { DamageMoneyRewardModifier, ExtraModifierModifier, MoneyMultiplierModifier, TempExtraModifierModifier } from "#app/modifier/modifier"; import { SpeciesFormKey } from "#enums/species-form-key"; +import { TimeOfDay } from "#enums/time-of-day"; +import { DamageMoneyRewardModifier, ExtraModifierModifier, MoneyMultiplierModifier, SpeciesStatBoosterModifier, TempExtraModifierModifier } from "#app/modifier/modifier"; +import type { SpeciesStatBoosterModifierType } from "#app/modifier/modifier-type"; import { speciesStarterCosts } from "./starters"; import i18next from "i18next"; import { initI18n } from "#app/plugins/i18n"; - export enum SpeciesWildEvolutionDelay { NONE, SHORT, @@ -1793,8 +1793,9 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.DUSKNOIR, 1, EvolutionItem.REAPER_CLOTH, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.CLAMPERL]: [ - new SpeciesEvolution(Species.HUNTAIL, 1, EvolutionItem.LINKING_CORD, new GenderEvolutionCondition(Gender.MALE /* Deep Sea Tooth */), SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesEvolution(Species.GOREBYSS, 1, EvolutionItem.LINKING_CORD, new GenderEvolutionCondition(Gender.FEMALE /* Deep Sea Scale */), SpeciesWildEvolutionDelay.VERY_LONG) + // TODO: Change the SpeciesEvolutionConditions here to use a bespoke HeldItemEvolutionCondition after the modifier rework + new SpeciesEvolution(Species.HUNTAIL, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => p.getHeldItems().some(m => m instanceof SpeciesStatBoosterModifier && (m.type as SpeciesStatBoosterModifierType).key === "DEEP_SEA_TOOTH")), SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesEvolution(Species.GOREBYSS, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => p.getHeldItems().some(m => m instanceof SpeciesStatBoosterModifier && (m.type as SpeciesStatBoosterModifierType).key === "DEEP_SEA_SCALE")), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.BOLDORE]: [ new SpeciesEvolution(Species.GIGALITH, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 4c61123eb2d..912e12f19dc 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -873,7 +873,7 @@ export class SpeciesStatBoosterModifierType extends PokemonHeldItemModifierType implements GeneratedPersistentModifierType { - private key: SpeciesStatBoosterItem; + public key: SpeciesStatBoosterItem; constructor(key: SpeciesStatBoosterItem) { const item = SpeciesStatBoosterModifierTypeGenerator.items[key]; @@ -1440,34 +1440,59 @@ class SpeciesStatBoosterModifierTypeGenerator extends ModifierTypeGenerator { stats: [Stat.ATK, Stat.SPATK], multiplier: 2, species: [Species.PIKACHU], + rare: true, }, THICK_CLUB: { stats: [Stat.ATK], multiplier: 2, species: [Species.CUBONE, Species.MAROWAK, Species.ALOLA_MAROWAK], + rare: true, }, METAL_POWDER: { stats: [Stat.DEF], multiplier: 2, species: [Species.DITTO], + rare: true, }, QUICK_POWDER: { stats: [Stat.SPD], multiplier: 2, species: [Species.DITTO], + rare: true, + }, + DEEP_SEA_SCALE: { + stats: [Stat.SPDEF], + multiplier: 2, + species: [Species.CLAMPERL], + rare: false, + }, + DEEP_SEA_TOOTH: { + stats: [Stat.SPATK], + multiplier: 2, + species: [Species.CLAMPERL], + rare: false, }, }; - constructor() { + constructor(rare: boolean) { super((party: Pokemon[], pregenArgs?: any[]) => { const items = SpeciesStatBoosterModifierTypeGenerator.items; if (pregenArgs && pregenArgs.length === 1 && pregenArgs[0] in items) { return new SpeciesStatBoosterModifierType(pregenArgs[0] as SpeciesStatBoosterItem); } - const values = Object.values(items); - const keys = Object.keys(items); - const weights = keys.map(() => 0); + // Get a pool of items based on the rarity. + const keys: (keyof SpeciesStatBoosterItem)[] = []; + const values: (typeof items)[keyof typeof items][] = []; + const weights: number[] = []; + for (const [key, val] of Object.entries(SpeciesStatBoosterModifierTypeGenerator.items)) { + if (val.rare !== rare) { + continue; + } + values.push(val); + keys.push(key as keyof SpeciesStatBoosterItem); + weights.push(0); + } for (const p of party) { const speciesId = p.getSpeciesForm(true).speciesId; @@ -1846,7 +1871,7 @@ export type GeneratorModifierOverride = { count?: number; } & ( | { - name: keyof Pick; + name: keyof Pick; type?: SpeciesStatBoosterItem; } | { @@ -1874,7 +1899,7 @@ export type GeneratorModifierOverride = { type?: EvolutionItem; } | { - name: keyof Pick; + name: keyof Pick; type?: FormChangeItem; } | { @@ -1977,7 +2002,8 @@ export const modifierTypes = { SUPER_LURE: () => new DoubleBattleChanceBoosterModifierType("modifierType:ModifierType.SUPER_LURE", "super_lure", 15), MAX_LURE: () => new DoubleBattleChanceBoosterModifierType("modifierType:ModifierType.MAX_LURE", "max_lure", 30), - SPECIES_STAT_BOOSTER: () => new SpeciesStatBoosterModifierTypeGenerator(), + SPECIES_STAT_BOOSTER: () => new SpeciesStatBoosterModifierTypeGenerator(false), + RARE_SPECIES_STAT_BOOSTER: () => new SpeciesStatBoosterModifierTypeGenerator(true), TEMP_STAT_STAGE_BOOSTER: () => new TempStatStageBoosterModifierTypeGenerator(), @@ -2617,6 +2643,7 @@ const modifierPool: ModifierPool = { new WeightedModifierType(modifierTypes.DIRE_HIT, 4), new WeightedModifierType(modifierTypes.SUPER_LURE, lureWeightFunc(15, 4)), new WeightedModifierType(modifierTypes.NUGGET, skipInLastClassicWaveOrDefault(5)), + new WeightedModifierType(modifierTypes.SPECIES_STAT_BOOSTER, 4), new WeightedModifierType( modifierTypes.EVOLUTION_ITEM, () => { @@ -2713,7 +2740,7 @@ const modifierPool: ModifierPool = { } return 0; }), - new WeightedModifierType(modifierTypes.SPECIES_STAT_BOOSTER, 12), + new WeightedModifierType(modifierTypes.RARE_SPECIES_STAT_BOOSTER, 12), new WeightedModifierType( modifierTypes.LEEK, (party: Pokemon[]) => { diff --git a/test/items/light_ball.test.ts b/test/items/light_ball.test.ts index 91195d0b1e5..cdcffe810fa 100644 --- a/test/items/light_ball.test.ts +++ b/test/items/light_ball.test.ts @@ -29,7 +29,7 @@ describe("Items - Light Ball", () => { }); it("LIGHT_BALL activates in battle correctly", async () => { - game.override.startingHeldItems([{ name: "SPECIES_STAT_BOOSTER", type: "LIGHT_BALL" }]); + game.override.startingHeldItems([{ name: "RARE_SPECIES_STAT_BOOSTER", type: "LIGHT_BALL" }]); const consoleSpy = vi.spyOn(console, "log"); await game.classicMode.startBattle([Species.PIKACHU]); @@ -100,7 +100,7 @@ describe("Items - Light Ball", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["LIGHT_BALL"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["LIGHT_BALL"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); @@ -139,7 +139,7 @@ describe("Items - Light Ball", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["LIGHT_BALL"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["LIGHT_BALL"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); @@ -178,7 +178,7 @@ describe("Items - Light Ball", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["LIGHT_BALL"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["LIGHT_BALL"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); @@ -207,7 +207,7 @@ describe("Items - Light Ball", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["LIGHT_BALL"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["LIGHT_BALL"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); diff --git a/test/items/metal_powder.test.ts b/test/items/metal_powder.test.ts index 6be7655ec70..e924d75fce9 100644 --- a/test/items/metal_powder.test.ts +++ b/test/items/metal_powder.test.ts @@ -29,7 +29,7 @@ describe("Items - Metal Powder", () => { }); it("METAL_POWDER activates in battle correctly", async () => { - game.override.startingHeldItems([{ name: "SPECIES_STAT_BOOSTER", type: "METAL_POWDER" }]); + game.override.startingHeldItems([{ name: "RARE_SPECIES_STAT_BOOSTER", type: "METAL_POWDER" }]); const consoleSpy = vi.spyOn(console, "log"); await game.classicMode.startBattle([Species.DITTO]); @@ -96,7 +96,7 @@ describe("Items - Metal Powder", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["METAL_POWDER"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["METAL_POWDER"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); @@ -129,7 +129,7 @@ describe("Items - Metal Powder", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["METAL_POWDER"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["METAL_POWDER"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); @@ -162,7 +162,7 @@ describe("Items - Metal Powder", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["METAL_POWDER"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["METAL_POWDER"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); @@ -185,7 +185,7 @@ describe("Items - Metal Powder", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["METAL_POWDER"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["METAL_POWDER"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); diff --git a/test/items/quick_powder.test.ts b/test/items/quick_powder.test.ts index d77f981f04d..fb08d6bc71e 100644 --- a/test/items/quick_powder.test.ts +++ b/test/items/quick_powder.test.ts @@ -29,7 +29,7 @@ describe("Items - Quick Powder", () => { }); it("QUICK_POWDER activates in battle correctly", async () => { - game.override.startingHeldItems([{ name: "SPECIES_STAT_BOOSTER", type: "QUICK_POWDER" }]); + game.override.startingHeldItems([{ name: "RARE_SPECIES_STAT_BOOSTER", type: "QUICK_POWDER" }]); const consoleSpy = vi.spyOn(console, "log"); await game.classicMode.startBattle([Species.DITTO]); @@ -96,7 +96,7 @@ describe("Items - Quick Powder", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["QUICK_POWDER"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["QUICK_POWDER"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); @@ -129,7 +129,7 @@ describe("Items - Quick Powder", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["QUICK_POWDER"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["QUICK_POWDER"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); @@ -162,7 +162,7 @@ describe("Items - Quick Powder", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["QUICK_POWDER"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["QUICK_POWDER"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); @@ -185,7 +185,7 @@ describe("Items - Quick Powder", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["QUICK_POWDER"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["QUICK_POWDER"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); diff --git a/test/items/thick_club.test.ts b/test/items/thick_club.test.ts index 2a63a60a0e6..350735a363c 100644 --- a/test/items/thick_club.test.ts +++ b/test/items/thick_club.test.ts @@ -29,7 +29,7 @@ describe("Items - Thick Club", () => { }); it("THICK_CLUB activates in battle correctly", async () => { - game.override.startingHeldItems([{ name: "SPECIES_STAT_BOOSTER", type: "THICK_CLUB" }]); + game.override.startingHeldItems([{ name: "RARE_SPECIES_STAT_BOOSTER", type: "THICK_CLUB" }]); const consoleSpy = vi.spyOn(console, "log"); await game.classicMode.startBattle([Species.CUBONE]); @@ -96,7 +96,7 @@ describe("Items - Thick Club", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["THICK_CLUB"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["THICK_CLUB"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); @@ -119,7 +119,7 @@ describe("Items - Thick Club", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["THICK_CLUB"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["THICK_CLUB"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); @@ -142,7 +142,7 @@ describe("Items - Thick Club", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["THICK_CLUB"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["THICK_CLUB"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); @@ -179,7 +179,7 @@ describe("Items - Thick Club", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["THICK_CLUB"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["THICK_CLUB"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); @@ -216,7 +216,7 @@ describe("Items - Thick Club", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["THICK_CLUB"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["THICK_CLUB"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); @@ -239,7 +239,7 @@ describe("Items - Thick Club", () => { // Giving Eviolite to party member and testing if it applies await game.scene.addModifier( - modifierTypes.SPECIES_STAT_BOOSTER().generateType([], ["THICK_CLUB"])!.newModifier(partyMember), + modifierTypes.RARE_SPECIES_STAT_BOOSTER().generateType([], ["THICK_CLUB"])!.newModifier(partyMember), true, ); game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); From 8410aee3a1315dac368bb3d6b59ae0caf27d5e84 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Thu, 22 May 2025 15:25:48 -0400 Subject: [PATCH 07/71] [Sprite] Fix Cacturne and Kyurem variants --- public/images/pokemon/332.png | Bin 6892 -> 6886 bytes public/images/pokemon/646.png | Bin 17027 -> 50251 bytes public/images/pokemon/back/332.png | Bin 19460 -> 19467 bytes public/images/pokemon/back/female/332.png | Bin 19460 -> 19467 bytes public/images/pokemon/female/332.png | Bin 6911 -> 6904 bytes public/images/pokemon/variant/332.json | 38 +++++++++--------- public/images/pokemon/variant/back/332.json | 36 ++++++++--------- .../pokemon/variant/back/female/332.json | 36 ++++++++--------- public/images/pokemon/variant/female/332.json | 38 +++++++++--------- 9 files changed, 76 insertions(+), 72 deletions(-) diff --git a/public/images/pokemon/332.png b/public/images/pokemon/332.png index a9979480673646722fc78640e946c91e4e45b676..44e374426b4dd37171447e1c4d155753e44a3cee 100644 GIT binary patch delta 6534 zcmXw8dpuMB|KDa~HkX;XFZUI>wA`AAZHeW6NhFtvkV}mygtN_tgyvSdxm0wgTt@m} zrd(3FRPM@1Ddm!Kzx;f@-|z2_^El`6d_OPm*X#Xwob!IX&rjp8#vDxt@L5+IGN}9= z_B#j!GIX{-a%lUGLZQ@LK?-4Nwr5eUuC5tj`}gL#+LpRrC=Cdx30ryx%4i5E?W2|U zMK{c{;vcx}U1*TlmPuv%V}LD`46y_RQnWg3MLH6D^ViKw+zG8pD|S}=k>7RRf4BTD zkR&Op40}jzV(>*@!$&WEpaQMRzO+4CGIH+^{{igrGUO`h`LkdlZ@a)asya>dpfK2V zuajYyv%6!>BDQP3CKuNi&8C0&s5x;Y2S zpV@*TM~w;MJdr_Qv}S8THt7V?C(%=7?Z@AF>4^S*&@sXc^B()%QBCl&y4CrCxUFY) z&$h%UvJJm+d zYzAya%G|f}9Pxi~@gx=h~Vr+~=hp%X)VhVX4V?A;@m(KJ~g^tA$pRZ$svQ-P5%T zc5^fF4XNzvguKWG<^lY~QWo=voALsAy>O51T?1(+|m@Y7d*qiwY{VR|-ly~^f5Ka<_b*su&`gauB1s6uK&F4&Ed1H!*^ zS(7#ENrAJT@21Zlupd@jzh^7fpT^hiA=TN^&TEvhTs0Eq(qO^rpJti12Run91b=G< z#o>ZbAsK@5wXD>gW{^vnAvIMSX`h!4*m{2Jf41qRwiK1b)$cQPC?VJdq7y{#5xoG& zaC|By|Inwn6V*VGIg!-p%4y)jl-}qwAFc!1D#ou5(k&o#O z*r0x&3lX~WYL`D-h{x%_$O4#;P@TFh+7Rwpnm-3#V$RAsD zq-go2vRu8@wdr&9$J16RDW=M-cJg)7Pr>S=D&Z;|?kB9EDrK^(sO=7x9DkrR^(XEp zOZ*D9H)ht-CHL-~bMLPH4;s#$ZM+$QheknGgC zSwSI3?5sEBI0;K00#d3kKjVGD-Df`uDM>KxCe6u82t~rDwf(ogM*qyUw;gz=@8}@~ zC?6U7&GB}UHhl9I(TnOe2~5m@@ugKmn{8!vIVS&%KWdhQ)W{Ud;t(Bn6zP2Yp{+>0 zFhN&*AS#YxtzC}`w}8BCk^M zC}c+{0ifv7l<&V>d3tq6uCUyb4d12|v$OS<^S6}hcgN=G4D4eAO5vpM^aYgWy3g^y z7b`Yidw7$Y~qM*~WJsTOU$6w02HJ>qA%pQ{&!OK#a` zsCt)qG86LZOhll867#kF<7USGham5v7 zwj8(DP8#eB+3oz4_lDs(?tX1F(8r0PGJR(c#EXCD5wyF-^=YvJ^ymqo)A112%Ab+H$xG_H|s5p^CzwY*Ls(C-0W6r$Ka`z$s5R_u@VSx-2Qj(uO zP^!A_RR*N)PGY%Rp{}AV&D$-eB;)6l&LIyZQ`5D>2S@Xt(9MmP=dY&hWY)1LLv35z-OqItp#3k(Mg0J76pQiUg`eh>_OS_=MDG?)rqlb5$Ic#iMIcvgq1Gb zc&$OPD|qwxLGcd(>i*7b)3odN6C1w=e{+qDhyYwBQg1$AbHLuWoq9-B*Dkze4~>=x zkuE)psu>@s4ENB0I(Hf$bl=?%Hgq?_!GQ; ziyzCi>aJ^`3yQl%(*M(qv0O}d-6-9^qFd%aAtfHF_ttiUUWs()xlCOuNv7TO)RH9s z>SaL*)id+PlG??wBG;o3;})9nq5R0u5+gVc`4n`i&mEjDS*ZPpx5)5mU`;UD38)`{ zEEO#AL`N7?E8h_(9=A)4zxRy)YvGc2o?i{>C|N^dzETRc!dg2W9^-R@%Y}urGf-Jb z*&Nb+&)9>)+d~ko#fc*)HJb($D_w~2HW)Gz?v9)=tg~MJ2*LO%pC~+4)*YmIhc%G{ zQzWZW_+ja@Y(Q8;K@%&d$3ZE|c8fg>8MPXBb~Jx^WKgx(Uo+re znLe}+a+4(VL`l<=7@0TDormD0!I_t&vrLi4;1S3Mg%3UTXksMGP!C~+(+nBeUb}bX z!^OQRpSJCMq>2k(U6YmS5LGx27ZlVwOQD`s8Y>*>saGdHLuZ?x1OmMaXu97gj#klw zyRD{8NbkL@Dns&)uqMu_yf`-4E4Djibh@uFaYgTd@rJ7_60duUW%&v*{_ta>y`ETm zaay0AP`Z+liwrduE~p!7JE!z18+@?!$=pR8q*UH67lh8jsfFli8B$kxvn0){JHaVN zm&n~-&h9*Bq%qAG5T(|AqHt&#si0t9^1sN<>BK1sx)0Tol%R8v>^Z8&{U2 zUZ)%8kZcW=A%!GZhE6=6ZJ4u{KhN5Zb3TN_itO$GA(YcC{jZ2KDU~fll8-P0Rhp+%ikZ8RVR(~SBWR_0dgaK5 zy@(8Ds=k;QEYqUZnfUDvM8U^nO&uFB{qD$}T4@z4O}P&4_CBZmw?vA#Vu`e($~M&B z!JXMRK5H{kNcD6)_;uoa+82|-#U6@3RB;K^QpxgTT;4;}+}FX4==}pXDxcuzc1cQu z8MzaZW|$F-#bru4CxWdu7BZqrQj8o#jpQ1j%z)vNtzVI)nFe)d?$J5fVn__QWoBPf zm~emoqT0y?*#Ro4b`fSj_D?7xDcrnS$>THD@S5MuMn0X{a)%2DZ)p)K9 zfgEe37K6)`Fs#hLvBqOc`82;$(5`I5oJW};wN3?Pf)*{)UUE-!q6Yt&@{Eq0mTh3d z7;pkkpc2}IL}2CF9g}lA>ng~_n%VOVom*Dm7G33KS9l`){Y`I)S?1bnSUOrkr49=b zlh0b_ZQf~0B~K+6ef<&@t2E-F>wM+@0z><~)?u#}I);0!EiW~>zATdR!MF^`ie(njAi`vuS>8;$ih~LY(qOz(RgqEYirKQUK_ypO{u;Za}5CtMdOUh3yc7t!0Dil zV87M}qTNcT8j!Cb*C`&`ZR;UVm>hl|&!biT;7qQ+s68b|t*h`-y&7^m^7!3T7`*vD z)y|QtXYyhA15J@qG_eSF*j*&y<)? zH?naDu{toLa381qOdZOJFTkgD>=7Qw${>qiJy@?)yY;H%A+o>af>zgVi@jL{;lcXG zt;68oCVWb(f8%v_P)|1gLgr=Coih#U_jF~` zolGiN2-R`YXr>7&pC#NZFH{pLHu*f+$(uB>iKGkQyI;(D)JpBdwm@Y5!`bZMzDL0# zSc1lF*`aL+Chyz6CvveUQ_{rxu)!k}|6Q^~l zbv>!8E4KlCChfDZmj|k4Ug2)S9WyFrySm0 zae*Fk57>3t8`9GKvbZ}~sv~6H$Q}y7Pn>Isd4@4~xlp3&DA*OyyC3l&L+A(c zZ4b8|m5`E{5opd{|8wirZVF?_DdgcUfau1tQi#wI_y4q{5kB(WL3`j>XpeK};$@77 z0*af)l}Vv?@&@VxT*qEp5^jG)q1Q0BYqY0c+VJW$?nhM0+F;!sSFM|$90k9-ve}oV z1Dp106-UUh1W6_{7u;yI)j^1R0HidN_V7f`{WX=AU00-2;=l?@OAFfAP0>6zlhy~J zN7K3aDYX2auGSs7Ot71(^N{b&(8ra^wB!D87#OB>J{l3`gjn0$nA?h;IAU1+L>VPk z8QFuGnm?ee+j{WSi^zuxL)>J1#D{pB+))_rj=>)#yAl)St?jHz3b za|%(ui2{{M`+1MXx)lEC5$qrLM3YB^^)%urh-ficeKrn)YSZSdE`cDomS3HX(I|X4 z9V;C<0%x2`&dN65$?jeGh3Q@OJ8r+L3;-M(V`d12%0v5VQEg99gx>1(Y_T%hxn~I$ zMa+Az%l;Or&>OoMn_ZdrO1{E9t7=ef4$emX!loK4Z?(HOFrrH2wAS`DKlt-G^I4iw z;z@O)u8XyS({)+H90A5&1Ex|xul927;D!x|(T#0R+|cU|^n1fl=z#TBZ||~zGU5wQ z^Uv?u3$sb`y?hQ4He=?X5apCYC};6%NzIfLw>clNZ#P2W3TPAgIZ-RxX9MT_^>6w9 z%RTZaZ%IZ(GIM*rsCvq~q91An%j^`<2m`dzNnak8p}C~S4K@hz=SHMdY-LJnr2mE!ORyS z{U@w{*I~v{FSYX)ZD^lOu9$2o-LOzfSDvv`wtjbY~#oBkz$Dbixhdi(Uz6qT% zvy8N$nX)D<7cANpIzkZkN(#vQS;n;wy!pNsbc~62f70Ba&3W|KT_XAS8R;z0oV#=0bVQDwj z=yf}Em-=(B93a((!pn1=pE79xjkDMvKd0LB4;L?V-4 zd0Jma>fCnleC{vlkFhRtC>pq&?0?w7!C}1%aJ|U0Xdv{}4~Cnx&H63}nHnrgt+!7y z1puT7R%V2g;kk>sNtrWhm1Zg$FKXwKU3t73iC;8+RGaeh(;pha1Mk0=YY`<=54c1x z`j(at_w(GUE(RE$X@tPLbL9D~>&+%n@dyy-yxhgS0^Nn6zWk=A(rO;@nnP+d_YqI+ zTM=%jIsB`UTHCm_aXj?8ggu;E4P$2wG|t>`BDeloSy-RC!l$y}M$>ebWM{pMli!$5 z`Ao~ewlwnp?tP@>z%c7Z)oUdqb;|h;h8O;T|^}AJ8N+OgV#s zXBvCJL!jP{KG4b7$AGq}k#V<12^WChMug%a#yAfyUh7Yhq6t;L^r!OXG`HT0*Z!@* zt$&=K**{YL1XxLN1s{jsdrSf?n={KRR(Jff-g++n3WhKiOQqDrl{e@95R`x2o8@y} z^nCU7o5`rk&>Vc#bH|0Zb;xYzqE3n5#;Bv|NBU&XfQfuRNKE+SIavL;ZfDE(!#@GN zk8aKNS#PyF7)4gaKXjv-I?{ejz2JEV8TQE)O%frp-VXL&9OQcdeq@Qt{x9cczyP z$Ls|3_+@KlEi-RXcOp|^T-*H<$d~aol(c@AH^g%Ve@BU5tr$0(CK`2Jhx${Y1xZ|R zFR4>9V$tvmHJ`WRxifstI^5*_Eyp$oR%fpZ{hKBxRJfXD=-@Lo_M_2owK_2AZy09% zO47Z^>$6>=uFwyKydx?Mtw!-$=?L@X@H+RFA=IzqoGj1GM<=~u)r=_WxqmKk-6XF) zb323np8}w=V#ikB4GDf8EUOW|4!uIX1bv+()K8?YYq$vyfdbNwh&f9ywXF`^rK>kA z{?MGNB=Z3@Lk)i>){9j%5B4S)A3Q`bTw2=Gx*Xf=?pW(MWK*$u2X$dEzK=fdSw{^z zv&`%F^uWjijn=#c0-*CI+SC`Qg$y5;fo*c@(GOj~bb1}5v(v$ycp#3${`{3V65D#F zfje;;cTiY!Ns zePkXe=qF8p&o|s*uD@hE2syEw!;eVq?GP_Fu#cHZ{TA+1sZ=q-#fY>pZ6yH?5IswXBj0@`VN{nNlSb;hTy4YZ>9$@@uE*aT3pwhqCE>`XlFmL^}f=iK!DIuB5*LPUz4RMqV`&I1V5t+dr&BUvtOz?>1H3Q{XmNQ#&Yv)Vr>*zq- z1P)upxcO-C$=SMut;qZ7NNcVrSBy$5xfZShDzEHstTyLGyV+fZpOA0Iw#Fh|NC%lm zTzR1bsK`UDowIAjwR0GY3)7)uE1MipR>Ev#PPRvo6DyuojhXktwr4+2La{Z3p>Ytgh~);=|l#GMdL|Ea4-beSf~g`#dKg9r4ChYEW9as}tjhHvgRdILrp7h9fZmuF4_wO> zo_+{%AWFG9G|VnN+$wsdZ=K;$eyZY6zgi&cEXk>f;1{!sSD|(#yjsBeQhG+7{PySS z7H^77yeKH6d%vJZId1fk;nsq=2?|qBMoN!IE*^g{mi{E{KsZTz?qNY0h*y=RjtMAr zSr)30f(Huz+1fA1WYn<#{_S}h=%Owu^ZE`DBc|ccvDfsdh^yvX((O+R?=0K+{C!>} zCN99+WWlh$6Ge4*Q>hRa1?9%|6Siy5SQ8c|=bANa`NN?l_y*8H!NWIBdtFHn8wVX7 z^ghR5#qd52WhWGo2?rsM-tMH`d&K`H>ZTvd5^uxwV`T!aDPUT}`-S!t^S{!?$@_1|{sutHLzjgQ zy)1HwB}7yK_sldAsYg*r3sy#juMOmurkkAF-fLgTNhU)_wHDtIZ__qQGH`Sb|3P&d zpKB#lb<=2TIPpAfn;Xj#ZF@+#J|ar}u1y^7KPJ_lARw>QQQbtksu#>l4aQRA#c zfB(%SsiU*mFDKr{lrqX;`_iU|+s*KEG=md|1y87_Xui9mPo%6aDRKX18rhFM4s$}* z5VR{;5?z-C(;Ph%A1}`sCk!eX_HA^JR(eq{J!sy`@6GQ73^ct}U&(W5h*>z9O;k6i zW(@4dNSs;XgkkT~+n)oGCB{fxx_h3DtyhH8hxV2wm!E%ZAJN@nE@n16OZdpR83=xP z+9j6J9QE<(*q$ImO+qi}5j{%BiUgLj%!;lW-ReJiW_{^>&^Wq5?AT*>1OD%p5@$%% z7Q@ZqEk|l3z7_I>?6)@6+CORZXJ9Yf@uz$6m$Jk;4}-E6$P>0(yjY29zmOJ{pmO>K zr|7`nbB;HKT?tk(uzpcz!BlWe?DnaF%bJf8zF$@ddKQ%24YLPd@xMTrqG1r-49Yl1lwnnzYg2T>zpwIfR`uvhPc`M(OVy$ z09hB1saxN)8bL~s<^(g|4v^uAK6MkyW=t#eNW29!>X<eIulhyJ6~-7U>+s~6xp?^-+zEO z{~g$D8|S1%`By%5L)q56_6fq?)sX_~v_L5A8qtpTo&?Fjfz4uIjH=ZB|3x0I7E9Q_ zKTz@)OZ(RV&MG0uV1!^C&R*}o)5z!0S{4Nm z*W=33|Czi39U4CkRK?LABoogeWEnGWi4jP@;(f~X1!1?IM38{Z#@)9ak?WWqN0Agq zco9L>g$8!6Du>xeE+2CNR|_qCSCNs>n2ois0l+CfZaP#px0%%C-)0OIPKkg!8bHEY zbh8@FL;5c+C$@3*@jAZe<5Ep7>tmT07!=nE7J}H^D6PwE5w#Mv7^k*miJ#u+F{s>oz%bR(t2TP`AT0y`b`+!qO^WSg99bv<;u z!W7qs8pG(Wpk1^#pWlZ{2${w_=nw$zQIb^JrBN^y;*$s|pK*l-P-3BI%}oi_I}jh& zT*`ZwHlokjubu3afeb*RQm*d_1vLy|X0L+GWpQgzhQY6Ya*2Rujjk#t$*zrS3Tds2 zOQbO~9=Ed-2gHDh8O+%ON;8cNPb+z9O%B*3cHfyAXwHCQnt35dQKn{dsIw#UqCH{W zJ!@^@-KB3Q`m|M^1DblRHZ+}(rynnQ`g!05%&USV?Z?v~Ez` zaSdVBX6GD!7DWR}@F&~>z7vcVQhcEY#d2Ik=>zmqka%)g%&Ik@>9+-)LG?7@H{z4~ z7nx4JAexFu0C?L2W;)&!;b^JJ4mnfENrW}oRVO_Rpd`uBYr;%QiZ*bG`{n@_x@Jb@ z3lh&Ndk`Izb5n)~)j{Wv>5+UbOlb#8Qp4ixopMtV4mm5xWrP~pwP%k+7pVo(Dk2BU zC5Q!U)EWtql}#BlRN+|KMOI9(FfMq%lBA-{!Oc{{*Y^tMGU|Wc_UzbM=n{?Ogh4q# z(}9mGH|}g}dqEYZ&_cjY@^oA6VO;R*b7z4hBRM1}hmiDWbl=SE=5sMUXzOFCNn|&| zh)7{bWOAH`wWmeQ8J_7G-CKJ5WOkwH$gxoSneVWpeebBq6#WZB7SKhhZbS}aGBZ{{ z$%WAZmTWHpyORAV!J`4AYDzB5|BooVV3f$3ZC!+_M-%d!Vh!#mg{&tiH;UofJys`_it|A672OgVk6h6-u>(SgQ*%H-$MtIS!b#pqs|hVdT8sqNtZ zk?@(8_L)a-kn+e?i-0!wpXd%l4omW}roYf^m|)oKaW ztu0@(GHMyP_t4_fejJmel@{21Xp;3=79p)i+^>h*4V9+{jvG(^u$;*wJKLFlndxKB z8Vs)ur@t4{1jeQR6*3le6~)~mm9qllFq1xG3IwU(VWexi71Egcu7JAE?X{2`t8v7) zk>bILG>`SJA2|(SMNy>Tx@H6Gsn>onuIJTs(rhsGEH6R6J(O{_Lg0m#FJ2=hv73Hi zG*rT(kyM^Q!)I!veQ5InU=Jlp?xg_>m9f(Y>aAvzXZ@7$Z6Wc3dtt6heX&`SuZ5?a zh1N6RqAI#L3RQ<+2Aew*6AKz_n+**Y89R-!Pixz#&#=2s^AHz`Jix#)eC_NKt~Nw{ z2ASVT7INJS6hK%;l6gH7rkGz1$1jH*uG_PuF0N|R|EK*9t# z^#;DAE}?2oi6k2^f?1zufKj~E0@%XJtv<{*VwHRxb+ZGUh?11&$`Vc47Zoi&*Pbe& zX( z>h!T3s#ay#v)O0bGyVKuy{qW}W&e>^tG^$7Fvbs}N)CsD>YzJ7!fAY914!|0uoAxoJNEJ2 zldLUk&E^{Wys(MJG)zhcNUFNLxT8f(Sto?59lckL3{aG`lqn1tzd6dAw*MHnI(6i> zw^%;fQYJRQZGy)EL`Zuy>S)lEQV7*cl`ET{10y9qyEN^$5N=gCJJ>hUyZzI}0@_*u zNHK~Zu8n^8`rJgzRfjw;P`{b>H2T84Lur5mEp1@jr5*s32~MsIE4+L6apBD$91|Pr zk2;UHIvoSHYgem;HFgVmk=(MK1!(F~Kzp(cQVLA2F5gi18KVNRG6b*n?e7M=_qH>e z{vYP(@D-{1?3>uJtGhI2%XST*2_7Nh%^Po{UqF(%KLBRBNi82qV_MuBgJwaf`Z33c|LoNCX>bcRg>mp#fSS&)DG3 z+p+l<;a=@)ayOfz zJTw-&aTWR`M?}J{+M&Z+ETlzn;0mf%bg1)$#My*=0S1=lpOi(Ts#5O0=&N&YFdnKq z{Lh55oXNj05OT>S9Lj2(L!smM3B=)&NES)dY-sF5RDn=XtK-)Jqtq%@!BFCGwb9wD zcv$cH-O4bG@6-wY;p(BaTg4OwU%}iD3Zvp9IMul4S2y(pY)$Zxk-fzZr`yaLnR>vPgfqwi+RV*LF10~eTcri9$a z<1L&pQ3pxEeu3`#XHu+U)OnLkCsWdbqv~Q`gI|$C_ioY@z2rTUVqHM_ zbp@71P0@&yA*`hkfPrNSi1lZ|6L;w^Ir@%9+ajug3`enavvD38_cRy#9^N*@%|AZ1 ze4Kr%O2_WhGlzc#lqE+SEMVL#LC0o*&-xH zPt#kOT6myaOZ?W4Z;gMh9!22hqkDPcZz45MvM_lT=3A?b)r&(C+ktoKD+fdob@we> zzhuoBb%gLkmhQVHNw&{8Finxg_9OBQQKQZyzeG&tUR~)fiNktjLCTq~m<56(>B+B8 zbUkp$mA-B0*wyIC$jJ~$>$z22n`FBW?3lD9JmW{qo&Nfj-X>I&L|A^|>_+`z3vpdX zGclp$2dq;E=fqE57@z-5XD-dVr)Qu^=vAO?foS7u0kQN8%~SKlbLmu>zbv)359zGB9u$4)b`RxJl2oHeW zg&ecldkIzll*Ms5!ScdpV@-6y9uWAUPb+G=5x`R|rZ-I;mC|N>?L>dg@#PXxjgR(B zm1NO;Rg`T-Q*(b6+`=Lru;Q@m@sr1?ZqE;^k>77_>4CXa?k2|#X#Cr8wGJ&DVM#7{CsWiwW^THSi2Sbv>d0xp~NlIzK@MYD=+_YqQ zp1Ly5)~e+ePYiX*gI|4_%a_8FMX7WOVd)97JY(hbJSlAYV<|b^kI#36f?EE{+@`l| k?*4`B^>VhlXln~l+ucKU=fBbGnEr3EGPg4;Cz9#^2VIo2_5c6? diff --git a/public/images/pokemon/646.png b/public/images/pokemon/646.png index 64b0af2d1518727150cbcd49eaa5747ed8f11b80..e54083bfc7318d9a27185f7b948294ba32950d8b 100644 GIT binary patch literal 50251 zcmXt<1yoes_xFcRX{02jyE_J?8!3krX{1I#Kym=3TR^&{LApz6q(MMZLb`K^nfLnq z{x56Y#ac6WPM>}D-rvuO)YVpbf=i7H0)d{WsVcq%flz+`d$2KqPfE5TYJh(z9xqiC zK-J^V_CO#8keZ^rflt<9r(6t;aVjqY%HK2e<;g<&P1^AAi&5hA7$pf#G@1sXmy!M1 zulv&U-hU^+ba)erLgORv{YH!}-BxEkpEcd?8=lv+aTW-UL4Kbl^7E!%z(C?y!U zz6zm=f3R{kVQe|e%&w*i!+kxFCrP<9k7p-+9$xF%&rpawEj-9TDaEwIFAuE^=zKl! zJjlRyCO7R$$qSRp|LPnUv>Y$%ARJ?zh9`tM*SpZ=ud6IVEB7{HBK>TLe&8#MykWfC z`?h2EcYhE-QU9Llx1-(PAH%6a_g_0(@(D|sdn4X#N7-r$(e>v!Wg;qn@>P&ryrs!D zVl&7+p@)2l%N3Em%bU904OLb(r{2N>>R~K9deXW>h+Fhft6dSQU9lP8fAnsO|3*Pl zF><)vrER|0`rZE0_IEMYk~tL6PpaY58+dGwZ1cHA(i90gnzn-8N)1J@HiK+EW z{epIUX>%wiCY>FO$iY1kx(Si}JKtolVw8H*zxD1z9C?t=(**lw?Wyy$2Grv8G0s~PFrj`F2;QvM~QWs25Km#3yOoBLp( zi=`FN*JPq@6#Vm0s?c+2yP5E(5>ihST6Y*4<$YSDUCDn#6rJ;D4;}Q)GZi);AS2m7 zU#K4>osnJrc7Ta)CRyN4C6$jGhj~k?O1r0G&HVIFF zZhou{>IBN5jQ#YgvqJ$nbpCf#EM(_kiUYJ>aY5>T?-YyJIU4vkaMr|xysT<{M5?Mu zLB@NVepC)P%dLg{(%C)YUIP5qx;!zD6&Pco@yb6YJ%9#u1vCyA@31W~&5-F1i zK#Jo}Z1Z@2w~pOa_)vzFJsm(?^>Ho9-|S5iVhcZA>oN&ff54n#p!-Fh+$O8N^2hi5 z!2;8S*jL<}c%WNj$PfRgICE%i5S%D2qoa=2f58a_?7*Fb4iO@d-;GkE#ilXc`qX(K z8Rv1_zisfFfeFp~jjK<67Z0^bN#e1=K=6j5M zBmecjOHU#fWLUFd%I5fi1MOT_SC2O+K=9L0@~)>KPe6H ztdVy=(B~a?jqqF%8;02D=g=HO?_7c@zsj8X&KZ~}?m%mWN{)4p8*Y77HeJl)j5SbJ zvW;2b<~SS&5q2`w1jy_&U_LHXtokR1y*q4dE63x8F1<8XPaOpv?lHg@asd%Bf)IF*-a=$0j3fN;4N;S?C ze>)@wPZG!_Z5PF9Q)`XK!3kT~a@^#%y^RG83%{40K0Z@X2;nXj@>h z5cb8xqHJu$zVj}~=uFD==p3S)cVpQgx}&cthINeswU#0!sh{YJ%%5_wtT42b1{JlCXX2B7?(1?E(cnxYJ>|p>Ue6uPo5bCNysb@aOjTvUb|aY~ z(_Q9|agTd`NeQ~z$7a zfrDfWNU+u@3Tl#*bTs&bvurm0Htw#K12Y{#D%lpu_ktupxfyv9^@ua8B-z~ry-MRk zB8vTB&xc=SKQYv~W&#UQ{ryfMqmIc{Z5!`m= zk?6ijz)&Y>P@63}?kL06Qy0X0pR#*UwB?nrAqc)@O(@d}dG(6}O;Q01%yh4kuZhIk zcMBpepMfU*j+uzQVDJl+O+ma5;cb3APeYQO2Y`IqEv(KP=vxT)1u^|alvhK#*yV?N zB|cS?2J;Pki1({LbY24No#V{3#-MNcFnfWq6;xtwocShl7xsZ2&U~$-Ah=Sp`lQt9 z722$AwqV|KPjSyfOEzRp`=c#GT~Q2I1%JL@#4!i4T1g6b#lidB%PDd?OX=Lg`y%=e z0ki|bcq4na>6apA2B`vsbm2(&1QJ_VJu#k;j&1{CW%@gsXx}(OEsHa~a7;ssM6qB; zg*8%DFup}cQDOn7d=aFOeKgTK z`VlJsYiSvj|GKAsvExpDgW(Pdu4{aqV$BaY3Yvox{D5Dwb#VE(Qu3ms6NfK$I7zpR zQw)O9>0p0+u)O0X(OFl$DLq%DdTCgy_MMkVYgL^N?3_0g>TJVY*oN|OQUz=I!)~&> zWgBFUTobt;Wf*5ndg3?}%H7_-ZQkkB*aS-%D2THL%U2JD;ezN)cpTp}s`d$8 zW*-syz<^`Fy`v6HBz6)(gO!4;5EYsH=)y-0GOL3xUE$skE&;RK3;mTCLSH&a$xM7z z{@Cc27Oi|=pTngcTUss#39v}BPjW6XjRw<{u-i^D-U-fb@sh}>P%j-YML*UjXr4f8 zuHVPM$a*|DM0z#LX`TG6aVg8*%TXn9w*8VDJLPH$T6cYrAZA}el}55H%Q;(LJH^gz zFO%M+T}=8N$YL_x1};I_O$_j-a}{R4TgGcUrCM znAW2%AeOgwM}CVv`()Nf!$1hrWwlWVM}87UC$wqqu0~d1vyX{Tpg^f`L=OBf<$v7Y zlTEXHs&l#f%4W??t5K03JCJauSQ&-gI=e5h@W^ACfRk75I6<&%b=1RlE%Hg}P1dla|f;1jn z9c#bW6~G}Ddz>t5l=O~Vp1KE*i5gUv-Hl&5z@WZ6M8`LS@U+}rMT20MVuy)lQB;Rx zEg%xNZy+7s&yaLR7)y(A^cA*%%C+u`&`;$bL}lsFLwNX*s1_U+mo7bAqkK7TgY(eu z+i)!sJ*lN=RnC1BuWg3%53CXD3@B?VaEYCarKKh1i`XNA`zB=b;e`#m@MO8_r!-eZ zMUIiZVaj?B9jig&Sclto#Y;|+-2UqyT_4{s;V$SIkCA#t{yqAz-JP1V(}(69InYD_ zG+b3N7KMn%vnZFXwi_36wB|(H*7NHcdINrnIzsa%A$AEAHslYLxN2R0-|E0kJ9-3+ zE#PvQWUJl}irhtXar+T0U>YoXbLUK?zzTSqj2X*HZ|HN)THY=xN9{wHy3(LBJ2V3# zWk;r}d4`GjMBFQr){;?z98;q)K@<_P>SOk`oerajM3xnk*q%B6mj!=Xf)?VKsq#K# zM(f7Po8&*Qmm{K8oL|R%x61N^P6k$pnvx6yMXFl4JtWL_wlfK%74vtIEe%0Rfu_b~5i3^cpKOM^g4qre z4cA1YF|-frIV&J3IZU;%xDkZfgWNa*^ybl$6&#I@v3QU5!BlU=CtPq!n5kuPuT2^h z6ORR2UwY>+eTpU?q{%8;;z9FcM(wpd53w3{&I(^+JB5wfF9S-kY?6Rq`;ezrI9oH~ zTuja2%#XYE3WhsaTjie$s}*yLoQ*zbIax4&F0R+C`s?*s+N&c~jUO_S3a%5- z#i31qguPbAP`nR%w!e?O`B-HQSH99a@f-Ccqkq*SxL5~9-rwcK+A1iCvNHJ;5_&Du z1>R2lUaP^SRI)XLNSr6lhqoW9?vQ~^Ib1Ff(< zCRkt7Jlzvo$c*jCc+K^k# zeu_4VnyHo6ZFIo2y5P_}HwW5a3Y60vx0{ZMe$TTnOZ(;#LHp}u?V~Ig$Nu}Z2y6Gi z>RcNrqm$9aDsZ`!jrU_nn2YGW5!5s{mSCkBYt;(>p;3Bh`eE&x+r72A6xLaGeqZgj zhK#rmxM;`s8*TknAMBBfneNm%lKSpW&D>Hk8M+ zZD5+(wQCFxvw67zYoqrn+>rKKkM46ZM{~agSy}KGiX2vCPF+@jZrMbxX0?F zZ1$ z8r-EbF++J6id3=Ms7b_FY?-D? zEGgZ^(Nnizrha(=zOB@8MM^Re-lP2y0BxMW8mzzRAWkf!Uz_6AaYir&`AEtmeMo#X zxsRe~OB+6O47-^e?8k+Wb~z8=f9>^5r8Sa_-ZI zcT{q4mTU4!tv38532=x5R(wvH>(H(Lfq1qAtSxxNZi08yQe&G&Px`ETXa0TB$|iQW zy}>hKIqWSrBu0nJh*6*8+`4ZaD_6;Pcp&rsvJCztgTZcjD47Jzv=!4T^ zJnPc5eJ|VVWNR(ijJBcDw5ae5K4GVikGVJzZzNx`WGXhS&c$6A7&I&1k2A`d=-@k1 zP5gN1pHz{tHE+baF=8huLg?&9LI9+8ge!;{IX|?ecFg&wpcs`nmyMKu-L%hFPxK*V zHvBC)-yV(7xdww`F!r#sC)HP~WL(|$$3>e`8iCv$4x;POQJ(6S+EXUI7S9GsI^Hd`Aaar8Ux&IPa9*Jx@1!&JeiRU zA`^)Xo~#PW3I>v-0#dnQ&l>KFPLlO|*j5)xqcbK(5ny+G&tsG+q}L$$x^)ZrAX4}G z;CV0Qq!-y9l4+F=|Ljn3VHp+u=?ID^GF z7<18t_Ug7ugltx#y@Pk`E=t(@oPt;qMM2hr+^n$%gJOIo(oTG+tx$T#mIt$=hP@!$&IDAc zhBG@-MSG9^uC2_M7TBOM>c61Rya|h_(DZgA5EFyJ$FR0Lxg&cGhVG5UNgyF9Mm_e& zWeX{XgwqEm6mxJvSaF?0>GJ0!FVR?U9LFt}&a2Z>UY^q8cd*iotUBblyDY(8YaqWi zwiG;afIM<3=t+&u5^8+b5>Mz3)ymVM9-9wdVBJ@rx{P0%>!zIapQPc89w!HW?c;O{ zivQ{04cpz5w6WnM=@joNn5tm?w`R2~NMBxP*dI_rfNu10e5mytFxh$$B^yghQTBIc zfgao50Nm!sutzx=XQp=%_TZu9H$R5NG5dT;cQYwh=byx^3(3J+?EUd#J%8CXtHalQ zyF2tfM}fdWgXEWSmrCcW^j?1o;X6%45QF#t8EDt-LzRO^4$8$&>9V@?tJKr^bow2& z)E4H?fLC!+@wY{3h=hxmcax+-@KJ`y!8>vnr7x*7X4ke{5NCvYsV`-$*>_7&Gg&=Lt&f))!m++l$LqGtc7?Bx&T!;B2&S zJIxM_!J$}MNH6+cEr#()Jk6Ttvby56f5vahBM(NoZg7KV8vSO1_ zI?%cEQ(|i8ow+dJd?T~jTa&!MA7IoH5#k(-(-|uCR3;jJUhX--m~*8X zl`~Mw>m&=9_DqJf4Z2rVheHBHNAws14y3&oetE749iJ2Nu9ZEq!uLzxN9BC|l67#OL2?>CVT^m z4Q&~gl($2&BPm>dWGeZ1n5;bHKBV7%3KX)fz03v#fc5*?Q$fG&#cRO#5YE&xCVx#Y zBYB=#BMY~=m#F#`i3h5aUTmU>of}y)N?k)EbKXh7idb|mPf?rd?1B3EEv=hcL@{yl zF<04r`a3}X3Xz(2nbMrDQq<3`uf z7!(G@gbgjQEk4r&*jGW}a`usWAzRVmbpi)REjq2&^HVP`e_aWAyN?b*bUnK_r_<>U zL10--!FCn%dWRqoOg}54=hm;U>bNg6%o5FQdnZIi6jM;dGW8Kf23azX0$)ZGtgZJ< z?M-e7V+E%mlUHspBM<3He zu6GPZLP`S16NxW)F%_YEhS+Z&0ycM;)_`~f#v;{F6b{a+`R!kX8)Tds=e47X{buh| zLPOY#_D`qNu{wf;+-@^hi^A($&STM*AB5MOL-FnB?fv-QhUN_d8MP&I3n$ z$KE4ygLQ4kW`&-t`bp0W%YCVm?&J~>bVNrwO>C%9lEJHhPd9>;C{R!HIt{98_QAd# zO*0nvnY}>c#(;c?$0m7}t@Zx$pV97qJnBZRfg|o&xJSQ_#fowGx&sML0-r#NdC-dq zJt8tLY{5+8v(b=B?jDkk!SA*Q(jnXll^HnbTp1nZL~}gc6&6WrqYnY6r$jq6xfF1V zx!{41EWu#%ST>{3ULv>oipej;YeON8X03J?j5>xn z6EhP*raQN}oe>h786&a?LvmVhP+S(glj~jQ$%&h@+z_f&m(Fu;Tl3MrV#%h75wU!* zDMbO+rM_1NO^(}8&T2cCA|LOsc+Tuj|2>X-LQ|f-KZBA{velkn_1|F5D$cl?emhe7 z0sY0xp=L2aJj^;W6>W6EG<_$R7eokT(Bj@Noj+PO$PvkoB*e>8Cry~{F7r~v+6}%{ z*yv5FGlOPVVVBDil|DCv2S~sPPG~?)G|!|zcy7J?r0Jd|;_Bu`)6_Zi(CMq48NncR z!9fa9V&j}*%IA$59ZGuqYVa&Ap_n+e!65vGI0YheEAfq9kq})2t6llhQQe-&le|-V zPxGeDP!Y|iY10E@P(2*&e6ElK1PNHM;(?-PLz*1DUn zP98TdcA6X#af9ULCPL};)klSko-NTM_y-T>31s0#h7PZPl6K59H5JS_Vf=m9I+T_D zk>>9F)Ng~vLaFdZ2}eW0LQ00^W9}4nK@EZL=kX-=582a@X9W?T5UfcPG)f6ZbO^$* z6PQ-Q6RiN7Mmfe2q|&_yQs+Lv7L4B#>}`1}(XlryZgWsve_4TT`>5RYnFyPem_BH^ zS8UDsdVOq?apFXzRzrr+Ij+_N&~_rZB+Ip8Y?y?i*G6xZA7a?8)M~VT-1{!v?*ud6 z6|sj@PN$AfbKZ4STQXBC80>M!pNx_EjuA)Q1dF?o-Hyk+kGKd*f4oqD^k&@H=}s0G zyMl_INZOjE{k;DCCkXjC-N-H1>)ts(N*c$^UMI&~6BVajkdj8L*p&#CA^ZmE5+b~% zs$#s`2iz>>8phAXyM+;$3*~px>h?+%z6z-l3Ue~Lv(kd$KasZACG)=)k%i!!frr?m zk?Ti}1Mf0Hu0=21ZQiQ2neP6xm7l$Ak3*_9RlCgD&vj5~yYwPQikkSM+)&4KKkXKF zSEv^3O!8zyfm${rzD7(#Afq3qZ{<4UbO&UJwvmGO6FbII+ep3AjdsJ>OtY<`BePUk zNM(zVo_Tv$nN<4o(PynrLd1}CI?(yk6r}}7Tih?A03zG!wXF!Q?6ddxOh-9k4(Q~$ zWuD5`<_#GXi33R3#xaWd2Flj;$&H`X9?}a$any}`qynwq`ozrFH1A|8XX|8Mwu8`{ z(6)M;RBg%}&Sm22qcqL^^wU?Hj)>;x6Wy3@Bt;c1pG=K1aAl|DA19M&(G?55yp&EZ z4>?S}mDBy{!^}u`Mm>aZtf|sQSYl+1*$rLCZLVLv#aauvK@Apr>Ki;jb!znbVT0&% z0OkK@0Vr-Bg1O{uS&;!>>kWi2h|<-L0)X?%q4{y8$-i1BO7K?se%<@U<(2N0ZR&U( ziB@VW$DE#tVLmRh<~su1`Pl8O+q5N4(Dg7~FR~~bUkw%L3A|as^Z)nU?d`zkA2;dc zFtkxP-{qbNlV^7ve-yrU70o=pS>u~>ZEmcAB{lN}Zi;B~2$(Y^DHrl^m$J5caR?Ll` zf+HLow?*p#1iW{ln=S!L9jmqK@0}*!v=yk;#UpEXnDZQe$^dWkcJBK^cNhOPFDBE@ zg zF+5N3(Z6ICm;kydo@)?vGbnV6|9Tl^l7Z@+gYNIAf5P!x=po`qJRs;ZNX5u_gEkn_ zVVng2`>OxBdL?Q1!~bB3w|&~mlzzX^2lft7tPh;54lU^b4nQiX_FeyoeEp19cye?P z<(GYk=)ac)OG*aE7`E|JN(GvDv4Bco#@{16cIE224+HF;Z4htI*UhJT7-H6H*Szx= zQeDh@c|P!KyJw-B+P!`B_7j4qYa#|l=lR&C?#C)?@H%bk&~v3{F*0~mCx6{u;98C_ z2mK#HGILh{xOO6FpOE*5=JQOg>4oFeV)J77 zq6W3Zis`0+71#GU2>0!8li#U4m8^=B!(3wU3vmOyeq_f=i#acK2dWhjI?fP6@AQjo zx+Q6ify;yxse_}gav>uKjE~Cnsbp18-H>pyIy7064B$Gf51z>@gom*_W`^QvKq40z zXcWi)e94J9JE{=rl9XG-TrBjT@LsXU*I@%Rid}jLWsWugY;b_3i&F@XQ*M})fC|_9 z%+CKXiu@%fKr&P+nd=3@N&8yi8ruZ=2%EYE(+(8P>taG{8T?) z{xEaXS4>z2{(Q6ZtZxRPDjBGDKd0e&ZFM*!9|-Lq>`57pKg z0tgp6Pc_zqG50i~a`vKHIl>|vo%AZ4OKOiA=I}r14t}QBMy^yqDjU%$iTbVv zjfb!f`pQgOpu6cs^pFhs?6t<=Rz*NS=ZE)L!X~q4$0HcBCv*H~pYM-IjJHV7 zzQVK6{%zrgh;1?s|v%?A8Sfm^1#Tvd>*&8 z`C##@Y*@}zgisk6!ho04jQk4b*xdvjq#~GlYj~wcJ`{drHVSlLCT)sAjR(_yp5@hx zdV!3wuYSN$3*y9Y*w9i@1|W`<8Z~mA`G^!ae0?=zqTQ@oNMl)Yph; z>~?N#0`;*Ep^{^mxN@6>b3PAiFt;k4;-BMSUXGAl8^uz7>dZoL@=FWyD|`1wqOcro z*h7x28)@8qmzL12{f|bFz`2U&{)vJVi|8Z09mm2#A>kzDgzrY)vd zLa*{t<+DVGwmtz{m85vUN~G-mRr?pcxyUUqe?(gMLy2xMMsV{1Ijhb+?DbN>en2;8 zCTf#tjo{D-df?O5;SlDI!VJm$o&Dv)gzzu%nS7Zg9ggk zmP;*nqbW6%yI9p07JnY3&7MZ0b%xs;HBfxTj~;a_0MQiZY&^@+P1!u5o;uN2He^eh zKl24NUqBZ1?7xxy$13mz5Hb*c1KuwEY=mKen){sN#2u!ysmh+@ZJ^I~X-136oe=+J z;-$b0PyfMXkb7LBZI7O;g`?1Crwiw)sm+LRdchpgirCPR#XSM2?*7(c&oQygH%ltR zY*ksFJ_actA4*EJy)55;NM!^&Ecdgw`1nN0NB8*gSsay>kv>R&hchIWcUpVmita|? z0To?>b(X>FX#iMd+kDWI1nmj-gwss$8u#b12&yLumHzDq;{=CvQzvhg4Mm3ecuUH5 zzM5A3INF&McP9A#RIeE{non}8_Grj*Ix$f)t&Yn$I-BUcU!*OATi5eN>1XtT-BRuq zs{K^?uPN3tN}`t1oi{nvY3AO$QkxGQ)8J7w$_awxV5#=;jcw_W*H7(hNZPe8@00Yl z<bs zykEpCgDa_3?O1{y{kuCSCa#d#*E}N74U*II zdqMQ{%OP~?It6o)E*gPuE4p7F zFT$Mn6%}bekonAU*GzYeKl8De%QQORXWliWU2S7$nT%o)W-7e!aQptj2iN%eMPIgb z63IV;Vx_lE-0x=Z+f$Y?!ALvn3f;1d5I#cmjm`E{y-0Z@5elW7(6}D->Byh(MM|LB z^;%%}g5p(eUaI=9Oq=|y zl|9?20xP$Js=hIWeu&aFxZpUOxP3=pHXd+KGS5t$@)6U-5GU3NUVa0YQw#wB1C2r4 zpJ=7nE_>W>w-3E`{W0oDI|03JPG@SZH_}4yub1tFo>AjlDssX)H@AgzUaJlOU}55i z<*f}aT0S$z{iX*qu(SWZ0hg}h)Wgb6m1j8xe1<=d+0zKYv^2) zjf5WNl6D0e_BO<@%&xI6@|09cipb#nGfoloeOIq1Btc};hUKo&1u!)6bKBCF)FI{m z8exR!7B@s{dh54Ol}@KF~|MUKKhu89E|=`Woo)=E^V zTe6jHDkuxTGyXckPMgZ06ARYvZppgC zYzLfCjlp*S0PK*ATx|8;n#ynF(diq*V1~Y*JCJZ>@wyhIwNw)JC6Z~5=ABYZ3@|Y2 zSJFzSBKIoZ7d9O7?*y>rg=U5M{>U6U4PZ8^EU)9ax4)hTm-JzU<_l`f^;ToN%6kQq zlgiBlhUMzsyB0ObUpiqG4c(%PVqG$B-silzU4<}_YBr8=yFy0I4j%mQMIF(2ru&vkT=uk6j-gdK z)vg!6Ol4gjdQelNC*Rtn8)Wq`FOmLvR}fF~1rl<|Tfh$E`Z1nRo=&t$#%ky#&eQ2_vEu4OG71O z@WDCeYG85xWDOplJaYvA98;@c=-XVkZ5&bj{aa`+&n zPW$OtJqmliXa^fr4PkUhWQ=^MT&fz z_$wTo;O-EH_rJT%YaRr6L+p!Ssc92^gRt9`7*BNv=(=LzzQq$BVY_tlT(mq}?j)10 zo35P;utywHij0aXNHdF}#zRQ^se1u&=+rdiD=Rgv$ix6+^D&fsXlHH2nqpiz{CEk? zt%PRoZNcn^f8CB2YpOGl0N4pdyOUmdh6UEM$2LaCJy{(XVVDx))(6DEzI#Ce2iKJo zwi`d(=MnU#Fl07u#Mg_LeAM+kdD)R4*jPcdL*RMC+b3J5IQw^9x3td$QA~u($!@_d89j`4 zErK@Wl9H(1uDV*LX9Cd&y^QWl`-g8RQu?E63g=H3zOTsvQ!yK@Kk|$xuVmjB6FffW z=+#sV6KgUySvGsBciIRPk%viLsh2Q&Q?N z>?lrN&tt0%Mh&hUO4ITHwryEhTzS${j1`V*!9?5NQQw+6i$d&6H~f8mag=i^1#E1~ z6qL_%LnLYtuY1R@zwVAm57BEPu_L1VO%MN-)}J?UZ81n&(x~zrlO;u)LP_=H z5#g|)ixSP>$ybrrMD>tbCroDy>HaT-rd5izcY;ctf|IOV*ia!?LFlk(YlBgV|eF2!3&JNsW#y4VfXGxMTFz5W9kTGvKV`7vY! zhLlCZl;j&^R>GlOggz+7__toA>=CM5=Vg3h35Hu(vKoKxC7E*ZvV|48hoGvz&$Lv9 zT(&XJYq_`{t6gaDoLxjEGC!sop#Et!g#$2+0@ScO@k)|JDI#kz5Xf=Xr*> z2qF5s%y7^A#6QM3V0!S-e?v^%eK6=m96%^GbJ2g~w-M|sI5!e#tmVX!brRSpqJ<5A za#mbt+bY7C=o((_cze1(_Cy=uxxG|Zy)JL$?P~N3s@a`8E6N6fu(I5VyL?p5q$aYf z`SmhUO+FP-bsn&oGbCxN0Ud4cNDLo3q1VYPX9Za$>WJ!W+`ma+Ntn!s=5>+RdKmS~ zaFX$O_92KCTjw4cp)*F3YZ6kq=xv|&x&d(Wuf6pp-LqS*H2)0sFdtON%^tt5t;X~H zi!h@-aqYQ^5qrfJMec(GrBW&ow!OaOTT@4_x{AUh#`n>q9RCAD_$j|}J6*s#K5H?* z*q$w77aIENIFLSmH2Et#iBODRVY} z`Rz$V0rLKY;=$rUYeQ>%u4S{b*2GtqJ9T;p3Adl|PCW58$v%QqP>D6L)2Jy1sxbP1 zI-NrBpdo9L;-|t4AcU1JAKbnL5iEzMokTx;Bf-yQAy7i zKIwDUc7<LFdxaFY54=?d~jR8X~yA>1R_sYF|bP5JU1tyQiIsoi=%|FuA)K&^rHElDF z^hZcD@+Hb;YC*65Vyb+#O;7-LN->>jPCw z@&$@>GY`uY^OFoR=TX^2HZ`HRTj~&k#fXGhjKtVmnYU8xo{9x(nR4`7TVUZ{9I>s{Tn(|-Qur`nh z)`kCUrO*=8E3RF1-cOEu#hO0$^-IJojF&5roNB(bw_bDt2lws2kbi$&{a4OU&7 zl^*Hbd<9e`yVERrDxv`J_>;3m2vh zCOy5OcDq-ZV@jwts9^!QSjKUa@32M>XxED!UQ5{lt{Q`IEArxmb*&rV(*wQ`{8klo zGc20a6Im%DhTqU(q5+xOV+e#?i|h{kY76bGE7xF4<%qXfVHH)5AX2IeLR#tb9dZIC zOpcgoGw??*rJ1nXNd|SJEskC)-F|Qe?8Vf@zia~b&g!o}1*(4^9)vH=J%8|Iv$&s5 zytLm5l~++dBY1)PTiWNMXF6ayElHY6Y=4L)hidY~wCZpflR4fl%a3r|wno_IxdO|3 z@gy4q$3r9GsngA;j?pdu<2pvk3Fw5UT>ajB<@!mElCzIV#E=C*;GeQzH=^Sdw{V~^ z_*d^Z*<$^5?5__jYh!p}s1P1!#;nVlq`WmMsK)?Vq>FfZr^mz=IW%8Z6q#vD#&eo{ z8D9FeYE?=*Z~Di*Lc!MxCit$rk5jnl08vSK#3uawWt3&#iS7Ld_Q`hzQ+k(m(^L`; zSy2@7<#ea`&&z#@-R8M;ta4(f7Ad^|W^YW~lM{`H{zJP39Gwr-C}pH%fV6FjeW=MK z9JZDz2F&M{h{_NnO}MlmC&O}tp~zH%-2EV(t0EO#8XnhTR(S8Z%LQEZBfB6g5syUZ zgy?78utr#eoFD0f-TY+#0`XIN8(;KONwtydf}z15p0<9kP1|mi;^y#dOPOq#!jbg4 z(f;Sw+3Fc?nIY(11fF#eS(oB{yvU5|my0GwN(@ULG^d=ux167nh^jrx>R1wDn9zxD zlF4ADV4e=FvfpADaRrEgk5-#H9bOsD7xzr1{=A8z#Qy}V*WY`9C{%c{ulU+G*1bT} z?oHjizHZXH{N3A;0X0xn5~V?PG?nRAe9i=mv@==9zvMYGa#&3w@zBVbsB;m_3FWKz(?gZh3Q}FBerIT@ zYEYPdc+;?CG?^nH!`LVE24c|^&uh!BSL1bC69=UO*MZyVD3Pa(nWKCUD zXTPaeRT-}BE+0d(xo?4m8%wvvR*vy#OB#?=*QvQR^Kc8`AP%CL)gwE}QU0&rdN4S| z3p1%;W~-YdqRKf2MK}j$t=%^yr&sbR8oen=x_B)NWcQUab+^GHhK4Dn4-!PI)N$-e zd^FFprxyV&*9!8~)wRQ--g>NtNvitj{k!wiAn)=%0 z8FJy^%3^a`5S_{${tfrlmbH`&$dwFknJQWAkf#((~DBi#&aeWXFH9tw*saah{Kg0|7`u{9Iv;VRg-b7Kq3$3jv#b6BE zlS_#=j#AN`Xk)qtOj+Hp;BvgcxiY_(Iv#w85=EH$bJ14BYY@T}>YP=tV*bMD^GZyz zin5X}2ITG;L|JL}K>|k84a%4?8Xd8_AU4LIu_rZtTE6D(EuRS%aLeQ# ztm5WtX#LOCxQyS7llp!>LJ3IJkyVqWH>{0Bow)S=2kUz#*;x(|QtX=qbk4*Uas}=e@m-dh z_G-8+bUdOi!-Ap(cF#}_tK0iBjx0`$58VEsKgNns{<{^%Zoi|h^7GlbLi(7vqzx$+ z1gp{^&8~jWXlf{t;?_5d%(G132{wsNy1b^HpSF!b)$Q#jK^J_WJ?+BTY-9;JlX?U{ z7$JkB>)CV#9|T-x`nNt;WT^C_-ZMJ z@FL_8=g&msBZI%2dzX^a;)XJ{L+d8m()lao5H5PiOS7EUS*9M!(sc3dZ|Sb)sKcK%*B!Oy(?fF(|tkX9Ia=#~bhJ5{;_h8~b^=?;kj32AAh`#t=g=Xt+( zeQPm)psYFj?0xpxabNefueBJGKhm~enQPwKp?q-bj#F7AvGWRerlTM1^RL!r$9GC^ zO4j!jgZE?3dbx>Rr8Zwq(O2O?`~4IVnZG4IyTmGn{KKePW6O@Wv6!WiVb;UubO_$$ z!ZvrdA!y%VR7niZe8rTdw(bd~_xd-%N4a*kv<0O9YN2j%?rXbID_#_h!V}lazSQm2 zdYnWqRp7(=^Cw#Arxe)}U=wt(@o|@HGzi`?2hp7=7+|CPI)N6XA#qP-c4xJED-pQQ znL7e+6U2C`J7t)y!AIGDUz&%y`F;g`4+S-TpM}go`Art4w=CUrZY}dS_U7SKB94@nspvuXqYt?l zLLpEn)JQzwYSQB=*k|AH;`#IE%BZDxv;poWb~q(B-!8D9z5#HQ-2YLSn{P+?qTSY& zC6!XEqxtj?30hrr1Ui7qg~WLUqnm^>)ciw_rP%u(btPcgc_s;8w;>)=G^RB(U8#rj8k(LltfOCYiybs5BH}2cQ)l zR9RP#CzAG#VP|j1!Pkl)hS-Bsxs=9~w))I6ZlrFK&)f%(wea>5P9SGgw9fFML#Ul5 zYYi}xm@ewmNq;jVb1S)Mm!3^kqfCBkl0eAkw4*PZqSrzD>KUCx08w*y^M@YzTjUjt zn85AW>mRW|dV-xNVSFMbfK;qsUcXY_Ig95gH#J2@0-P~gu!AGjTqXtD*w%vVfmP7N z*BC3458SFiCN!-9P)&~S*H1=IjPmH->-rzkA(OK(0_3&*UCT?^NEISTv`osx*Z-Bz z7NVteie__cc__UhUqYnPugyF6!@1NcCZy0QcB zH@XbGlBfc9&e-woXkKs~96jJ*ykHbHU&{=ED-QiJ;qarnF*6^C#(dPjnYR-^+CL29?{o^%L z_R}?NN+(P%j|7iro}+2KSJ(KMsH43BT;N=azd+eAWda#iR=5O^KqxE>-^`HzPv8=2 zp~wpKUl6VF#*QRMZ6wgDLv+wpDdW-OAy4TCbTKC>;mt(-3Lh4=)} zQv%Y8l1H@@NQPgm$u`sH(W%OVX-n=zl~qwJR{FyUEX;Gm;u?vI3wK=L=L)pE@BK_^ z*LD+F^N40P4Bbf_{=Y!bXF6Z_pv~fg+N1>hy`mz}^A0c|=2Oq=`?i!4FE?5u)NHgVs0-CQP8&lMj zBHvuhDWrkE&2K2P!lLTEg42$gxjX7n-B^%N!Y*g_ zBH?>fA3Kf@Ru-#c6~{!BtpquQmqM?d8EhP0g!1?T{$6FA2h;foHHX2{Q zDe-la@=ccHd^TYY=IZrrdt}L|lh-voN$~9>KrL( zWt>(gf*wCb~HLn^*xHB zC|@eEmkDHut}NgGR(a(?i$q0Qm#VbfUG+2-kYoYZ=w6#*Z%MEK-g$C|$9X7i;p5}- ziQ{XoFg4ya>j^&8Y&!g$mSI^7Zjk@P`JQ@4&jkaPl!mPKRO)rWkqg(xY3I_vTV50$ zKedG;^a}+DDRLI*TV*F%G1lJ|Khbr+_9-h?mq~u9=hZF-uN?w#8IPo=gF(q)^kfq{ zF9M*G;K3fyPWWJZ+isyj4JFyPfxnDDXs_sEs~RLM$#slV3b*I<90^@$LB7k)g1#Mk zP5Ao8`zlu=uQ?d|%)LF>mkL`oaG*G*QUorLIaN*UwhbzWZc zPBSar5V)5Kpiu{x?p@|LmMr?^RZhehiN6fz?Q+VIwKB!;wE_a}QwGXS*||nqng}Ci zL5~At+uTh7Zmyrq$m3QX%@0Y!H&1v=p8B7`>Gnr~M1NvLN!lggADByI0os`wfPRAC z7OzNAUk0&=*GANHNb})v2bZp2cIus>NCKfm`nlp~HBzjR6C-fHHx8sNTns#TC70V<$KDl0Ss*#QX4rjww;tkgQt7mSV9a@8{ zF%V#q-4D^Ffen@9e@7|eG7uw1%2qYS8h+_+{TI4o|vHB{wsAZOv`^9+zUXn~_tg{BkgxHaM?d9KT zGafA(H#<1-T-oD5Xa=vX{r1;0Vd0{17#48#8EakG@~1*iBD|0B(o>s`N@!M@E2u^p z`s9${rQ)AMPq#Z`rHf|ZB&~h?pAYA8nfNR4 zol2V5_jgd^XBlpQ4^Dr-hVGaI&jX=qJ|}B6`?r*p*g$SQ0g)-Fvyq|MWUzXzjZ$Hw z2|~`y@s)p>-JO~$(}TTN*mcpiz7dezV7S<+-19Ti%y1U*vW@eT1vhLdxZ!K~4c#*w zEIF^tA++z6D|4e;zaN_>jE&W0E{G4vnBIV;U)f?b?J?;5pw~+CCtORgCV4%!rR7&Z zm8(A%5tQsuX**_q!j2ND^zFJHl0UlA++;4V zn|7{xFlVuTiGjWBIcI?&Cg|*a-b8m2-?twszT%B0{L=XlF(UfC1j4GkkqyWo1DQcZ7EN{H%8WE0Gx0rs4p5~G$e;+ssrL1w0!i;D zk6ZFU2vEeUE_<+K2s2T0;o(zBA0-m9OA~hHSINs^fK2P7{J@r^MpK6BiEfFl`rb>< z%2Y>}N-l!xYhxn9kF-m`#WU_jof1pAPlCTM(ekzcj`=r9b*qY!wO2I_OCd&*UIkU&xig#ux5|?cFP3W? z>3oAuXj>8Wb;YyhK>Prz2(#n6w9{48XYZJgZm2KXGJIV5b&|qM4jZ{Q1)ilU;7QzB z|J?>C8B}1<_hN+`pVXMpzwCtQ%E`>wj?=dU>fU4jY$rK>9Mq}Gf5qNAX<@t{A(b48 zX|{Z)kXxF>IgZ~9@mEGMAFDF7xXB{K9ME})ZF)yiLcTYY zTd^@=BU(8G-UBPk+y0F8NcV+`mHGCN^kBGB9MCM9+RT2enafC$6wV~ETFMdR-IYL5 zdg&{t#c|*dXyh(B3F!ITZNSsNnSvdR!bV3XbCwCE&*{yxi8%4fX z+?$Hra&oIGg1{c3e59`=r*qQ$5+Fw6bk5(;t`8wM5DxHt6?g}A-)R?n8DiZg+UaSS z_1d7LrtNyV_)kF=q=@e!RLGm`i(+d~`a&81!d8!Ld@0=Mv7xLb2{~x)&|X2>lH&}n@-Rwln$R|3_>AvA$OCu0 zfs|78Iq115Kk`Oc5&`_n=v1s^aQ*ZybnhzTNJ4aX?aa)#rbR?9PknQp!%_v9-b^Xz z7W?ZxDRk;z1i~GCUB=>G!35|l&1>yh3!piWQsqqlOF0N3$yb85%;Ob|++U zb>CM{0LusaQOwJ-qE>t<)lL9QmHz-dp?P%dX}CSKqh6*{QkP0*2Hf8_C6V5|j4eVO z0FDsA;D>MIimz3S^o&@ieuJDO*t+(U|451ZT--LoR^zzcZNE})x$S5Fd!Ug}1ygx^ z@o-VP^q!-*v|&?ejRtz0`oxLeo1sr$7NA)fGhxo-B`QV01Cwk)?Z^alRU19vN!?9f z#5N2K7i@4^cRhYZTNfP;qk1kWlCc@(3aFi&JZ~DHW$bnz;!$$?6N0O94#fXHv5|=D zo+I-u#DQ;r*GvXwhh?^m2X%@ifVu);G5szJb`N~>+UEvdgcH4ensBoxCipaCD&#W0 z-&9`6#rUOBj<4IF+)MwZz+mP8zUM z2PTmbI(NoV>;O9sl&fjcxXgV&Q$jIilyHDtNvW!e3>o}dhtwFXkofk8u^F|4z?h-2 zdQH82Vg%(&%-H`;?TJ+S zqj$ZPZUUG(jQ*Ai7r?5`6E-i=m)OnmY0Sn@FBzRs3f~X+ul+A^Lu9y=(EC`Mc7Uv5 z6V)Dg^+y5|I`3%o&WuZ1M9L%QNuv_X^m*^{Cjs(Y$ipCIEoo2oN@qc7_y(@teTC#qogL{s&GRst)&Z?Zy8^ zS>ob|CjMVg=l-NG%ndIuD~&Z5<-^oQ6<~*HhZEqTeEE;f@B?yZ1d$v*N#%BO1XMK+ zq8~XXzkZ!0)+a^n7*{)1p_PYQqyofjP&x3Ky=utS(tz;W;~$ao9bV29>~>~jjP?Lg z9ALzLI6(vQ>+pRdhZiAka?O@<1`T3BV-5AVJ7OviDmCo!Sl%{q^_{XV62%kjYS!x` z0tK6}ve+|7&}ly1z!i>#OEP)4o*B-XbBFMeBd(BWMU=D_n%RYrs$vY?1O9 zrPBMsf(piQAF&ao4^G2-ulb(|-EX-CU7ed+s&Mu#SbrpFyD_mP1+%2 z;(dGA>y`2HnFT$o*2=ADMsk|a^L$qm9TkoOv6f+&Zlcya2Mh+C|MD94QfXh>UNUsQ zf0Ke?^i98TPCKEk3Z{T3Ke)A$4uNbn&6g38Rxef1^qAIgr1ja%KoO zrob-HdGg|yE$vM58*!S#?8lLi=Ie*{s1eqIJ2R`m8f%OJE3cDfe1{Hpa9s{+f@kAR zKbON$c}lPL#NRsM;N1Pk1WeLz$8kbY&Gi3&kb`7=#Hbnw7y`C24G7FnrKomzB92+F zrcayaQZVg|ntvC>DF4t>`E}z$J{W;Nmw0=WI&!X3tA`DkmnK%|Lj2OdAw>?9^wS-@ zMC#>5lFzGe=X!4@XEpIa;pA%Pe7ZMdK-p?QLMK7?Q#B#;1Jd6+fO}OM_~Mqucg7S1PQ=GmEzU`P)T!vm-Hf zX$Xg9;~IIWOIV6f{k%<)5$RknX9}m#AdqxK(h$%(z5A*8pcF3M=(X-q*xu&Dva|@e zb8Ajb!#s^R8Bym(Z(i9@4O{{n121Xus&{?oDCTUr9Fw$kQRzOA`O!*pGUx~lq-oW& zY<(a=hPqmt@QxJ?&#t@PzkIjc*K&xxrWX)b zD-T#RC@|KA5AIh?BvErYcQAmhhk^h6(;x}lS|mrWaAEf zkH>;e&}$g-M9RUrX3D_G@I%k7&!RtnvMvrW3MSUF#oFx@R%W$lf$0CS0HZ&e40skL zd5B-*=Kzs^OEVD5^jkTQW;pksy_I|Zf6=w9wLlfj(*w@9_lwbe(0VZv>F=_vlti?z z82KQkyW0E;rh0#q(rvJWi-!G&N_MVz2!3y!+Am%@;e5PbkF47>#XuOk)-XuNGKe}~ zZNtQ?TYK+E`h$W7Y>1oCUj7*8|on8 z&LL>kdf*-3?+YYplwwee%G~5stU9G`!bbvu)k~3B0_HM6v(VwjRTgEG5UHke=Ku6G zTU%S){lU9Dx%m;QA#Qs;q{yMQ^D=JyMYMsUX$j1o&B%+xo|*jOwJm?k9y!S>SBY2e zK1qa`f_kp6)P735p$hINe~NjG-(NRM#82AFQoTGu{F_z=GP&jC3HqLptP3Dfric&e z&=5h>xg4QN*L066MS8rY4lLj9d#RD+7NgCRJ5|O(EyHv--&vi3je!S$dZJ9rc@uID z@3h`w6k|j*5SDt}2xHhHWL=GXp(Of_KSOP<-r-%^=Xi<3RUj&varu1(nu*na6fi9G zl)|pR|DA};B)Uk2!Ka;lc=b=7_G{PUIp;MX;1uU1yj2zmao_<#zmqZEitHum5F^U6 zQ8(;T#kt1cuG-(1@b<DM-{xes$+g!ZD+-`~yAQ7=9pN5Tp zeM(2kXVQ&srKJ{RdDE_r2>8gI7NtsOGmU^o0lL1fti&()L`nw6eGJ*!uTWR`t65jL zx*vq=B_t%y4=STrKrPe4CcDgA;kihQwcoBYUteA~f?4I}O`3R!^{470(b#$&J7~KoZRnm}9KDQY>UKjZZPrahW+{ z(Z6GBv>+$JT&ZUAq!t>skukZnUL;aVa$nk89?_bi2A2O+)(2CUr%f_7a3b)e79Z^v z0?lUVVkYfC?l$@~r}Zf88TRA@>{iFpmq658M_R$855~;uA|R z+v1!8WOtrMb1`S-g%WhU7{oRJ!%e9!uPh@J3|=9umC{0Z0(!qY>3m?)2#4~kgNvK^ zLE9&hE(QQye2kYAH;+lraz`EYc)6b*LmD%&dIHO}Y=%y$I2b!3j)& zbZ`VM_@_j2yU~oA@#iHX^aT)pgOZ$S?kcLc)HYd1<2GJO>x5_tPzQ%x_ zw|{tsm!`EhAT+e!%pwc+q7f5zwKWmeR1X@7f)8C-Tdy0-F;~B6Zeixe&Og|mtIuH@ z+Sj;zM%N%=84r}(LA&skbK}yY!*EspB#fxvpau4Goy|Aa=(|qJl0CT%cqp7m#dM4r zWB#b!H~8rT00W}O&4G98#hri9Wok9?X9d<2wXqsYSV0>KOaeEo2EQlrv0hZzGJ7(SAIu z%VZ3AyyXFajgyyEW=;a1^KXTTKC^%ViLf!dBbY{BlPM^<$X){%N|6>^Ok7-VvscTzG<1{ z;{T5}xsp1*5?mSsfsTb#`dyAU(=E&_@2}&r&{mE*%*_2VRj+q*0jj_0E{B8ub24CBPp&3LcM}tH^IIMqr9Gln)_KZ$PbDH#7>bhio`}I6&<6BP*4%YH} zut4%LMmhufOMg59#l#tEhI&9m<6#x$+Y#k!K_-OZapEr-f81;GcSm?=NVpgC&Xj!#9`spkqzroyGZ zy{#Jc5a*}fW^BVSAPLX8N*37uP2N3)j8_dH9I=aeg`kbB8OH0%mL#nu^y7cLN0r5v z(7T#^3WDU$l!LO0ofL<_pF+M^pwuV#%g}5(`9}N`wlZV4S*gc<2}s}4pIAlTlOz49 zenrXHy8p9Pk@JMdYQt`oZ!yk`;j)bFR)csW*z1zg?%pc3#T z{`+u>>79Elp*w4D(}nzL9R6g+3#sS3;3N$@E(`vXiSi_P(Iwq_!Wf)g39#VsIdWpm zWG(XFaxc59aKqeiq@NTTTzZ^%jl_`Nxo?t2;{S!XWlNXOB^rIy1gvVivJ=0(Yb?aN8cwJ3xOMbas$Tq!0l4W+Y!HSQHu!khw5kA5iGMM3 zx(uPtRzKbg5BGNPwPqPJEC2nly*&2%&I4mc(%2Mye!ed<&<8*RNUH&Wg?_%x{Fmj6 zNAd1smAG77^X$o|5Iq0w=1z~tBdzh}W7oZ_` ze0RMvbxz=b_6G9Te^L)}fkQWn)~TP10?fstzWtNQWr4~Fy_tSQEdiIg421VTXA=RT z|GPkb(!Ncao;MWnYr8o2OzIrdVn&bJ3cP-&jqkkOM z-jfwR)CV>r>tD94E10|pG9NO>7OiE{{Em*sGY1gjPv;diu0aE5*>C<`qA-`iFnGz( zq5fuPmsJYIS0CM@0NGDT3KU-AM_(4;VMq;l;U$^EC7kXggaq}0tVf+@0_%WI6W=>=kcB3O<+Q`v9QVra_ImXk~oNYfLVb; zM1SzDZ~7!55T@M`rw*gpHh4|&SVc<%8XkPAEwjb21l|vD*zSbHzcH*$Fg40Kv!6#m zNY$9e@j=;-$B&_R1hDxxiAn()-Q~Xov)nx%WQoO4Dtx(-VzuUpQ>3aU?bo7gd>_*iqzh-@ zeD}6+AHw{GZVe?Ah4YJ2`5$J}F$~`nqQow0y)NWkoAfCfT<9tiUd}uY*IcwQkl+$jsPCOH?%Npf6u@$ek@%rh0`wZ3(jVm8I!&uVlLxO)U-`{>e z53ds|Aot~Sk@{}q)ND;Ee`=7|->9(@f68UP678h$EquqLimC#-8VQ^X)EONzuo@vR zF^rW=DaP%Yg?U?H$Z77Asuf@zO@O);4wO!6L~}Z>cBGHDV`qcA&v)I%vW=Oh?H0rA z&0RnhC@&f8@SqkSEnPkq>ZksG20vYY(i;_E3zAsh(q*Aeu_1L@>tQZ&{Y0eN7VLZo z8F8H;-!9~5j$i*xsW9y0;EO05nQ(@LN#GtTvdN@cR-v`^y#xsXUx3MpffiI%6*63L z^V5F)J&}3H$Q=PHMV1TaR9{J&9k_dP$dh0yIIwh3Wie+*mu5DY%Iddu8TZV?@qz=N zVSujOh@-q9M8*<`A~OxYm4Nt5Q!x*yD(FUQ_I4~wjLq~-i0Z$d0WD2VA!p}YPTu7g zh~)v7@)BD;+$hRYCMaFxIl!wjG59X*Pw+4z<5k@Z1YM2)5u?)Niw9eTjF?YQTO-+v zoDw^YPIYy;ObU28Csj(KkQ5b%K zd`<-!iy9i3Cev}JDdG8jE_c{be0T_|&Cp`7$QO>hyLTTNHxH^Amp236`kNZ2=8~>x zXFOt#XV{BCVQqRWq0N3-d07M!X4ctcTQ-Al<+F}^%SvhUphW1&zeVhABz=PLJ<9Js z9g90|Z?K+PuxBvvfC{c~fAZn@L?T~bshcjy=OhpkK}azh-rijnddl-xDsB1X6~o0-JceXOg^Nc4nQ8#w4^mi$yOdGtDjwpf!g2L+b9 zYeVEq++07+*m>Y%uO9|)nys=>%_pxQjr2*eyfRlZT3nIBTVC@P7w zwZ^0PP572i*zPeoiuk=^X2boEYBmfNBQ!jpp+ zhqRdLA-bQ9Cpq{Jl3*N@gC!SoClv*Cm}`qn++*XnMcBw*;GFj%BWv@X<-yPk6-Br{ zN*<+dlp8fx1D1+cUH)WVaDidV^8gW$C258WSKZ{iVvm3E?MF6$hZ!m;jS4J+F^p!y zE8;f)Dy{UOiSt8Sq>t5NI|&;any1Ep-#lPm-mt{=fzp?VOc%D*49!kovr!1`{{eKY z%@9^;j^dc?=Y`Qt1qqhVl&TL5UIeL-?=NnmT*hU1w-|T2q$O^ykAi+7=Y?ZxhVgmt3ULB^U$ z=KK?dAh&kG}53@R0m(2L-?MZxgpT^Om>-7DRHseVq(Hj_- z;1QJ9`y>;UZ9wyg?w9lHD>65_vz9v zRS41gDX1k^pnv;QSmT)GE zGf2=$s{WWsIgc{=5jEz|VVBjna;5qRG94iUq?e{~p^1MYe+X?YZVYooF*wQOfaQOT zM>(1NXsg7+XVt(GTqgMM_C;uUXXW-&C8I1-+mxaNx0-{C4zEbtKcFL}r}OVT1Hcmr zcH%6D4*NVr9g3MT3CU=d5OaEHLal#`F-ETA0JQ-MP`? zftMJIHpzNE!>}dz)6fKw!OJ^;ZNGkkxquQlezn~VS~t+XQpj?o>uul0?MAtTD^)|C zSM09F^ca;gWcjz0P*j#qMtdja`C2U#m-elQ8_Cvx*ZkHiD02U{#G}$AD=q8(4Ze-k z>C%nrbJQ4#I8}mtZHfxBG|J}&QOn>#GPDlhYet_{9mcbuN#$uWN45qBx;JPh^tl|3 zO1>jcmXxOgB01F0_{bmVnh62Q9@|qE&x&t0vVdHjO^d3?Er=V`W zWW}7$Y_CPUmWO%N410((5Aqkq!d;5bj9=(#-}SUb6tL#2q0ni)FKuC9=24(rpeV}? zu>3U!(o!cqj%gfmcKg|VQzvo+P3A0%8dBE{3$xZWh@GnhwadBxx?m_^K^>tUHd)|z zKf}(uRLj-KJuPC#*w3Uoh>`zqz?md>GSD-U&FHDO=3C7Eyd|1T_HH*RvVbIOpC1PQ zSa$HSyZ8fyUu7h#siTU?nzv>$Q203(j;!t`^%3Vu2!wN9HhpUzzqYc81`?o zowdF9LW$ys7~LF8$rq7R06W~-Bch14Ae%QPb20CnvHQV8@i{+KwUdKgm3tXUyMfxK zH5l3_8sF(^uP~gozbH~q@-B>wI@LM8VswG2d0y`4a9*tUSdS5(S@B72&4yWn~8q7lWDU=pK zi9!fbl;MPenI#7HVb_|0E4zr^?hH{sy1&~%#Y)Dq5XnZ4rO}8yT#~WarzCybT4E3 zPSk;yNyvy^!RJj@labF6*O4OiJfivQv7If`>jMKDP2@wayta0_5pICt@{0 zKJfd<$kS7nLvK;-iy{=!*A1o^KMM%?CPY$O72VI#|8<$sj>4OyO0O1bFdrP z&0>E{;w-b{Go%l#u-K8yA4&%X4E05EEnv(L52iF)7DhfhtRn9fkCO;e4OMjvPeS_| zUSF>H+#Qa!8@zK*sO!sAXq#FRl2MK&Xt-c}y{y$*n@XPE`OtIToMFW+IHpZO4vRrq zi6%T|pcck;tw(A}_L-fSQ%)e85QUMCbFq)}c(6^b8`$TF}O_FQS$hDQEyzPs=9( z+4r>J(MNp12HM9kKE2_>=T z-iVaSJj^6DznPVkysPi;b*!lyM+TB76)7M|3p7D>4&9N2C{uUwgeWL8)Q^lCB#_;d z<@Jye)(fTq%!b%%YJ(@`aY^0&d#k_&GYn9$1q zUFp*goUQO!CXn}wqX|iRva6SX8FocvvqpXUu}2(`+DE79E29!N;T(xMCuXb}V4=z3 zQwx2MDp_^l?dbbQNaW=FtVJRSuZ5mPWv@@S)r3=8J?*903)CY(z8_2^rOsbjN9sL( z!kX$0!p=`jKOliIKsFkL;wm>4HvOhFI5BrJsjitW6L1KZH;QwiH|C&&EcOl=IpP&~ zRGhbl#z)agkE9JZ{ZoV3=W#YzR^u!-{9>4@XWgQ+swPy?PvKWyIOSf2=cY}mw zD`X8{9--h0RLs*k$#7W!x4I(BV18F5(5soL&<$VUG_yj2K1UM3&rj4$9d6_gwvpJq zJr#?^f1?2-hG>&)qE$XH+*MffP&)65~9jD{;Hu>RH$io<{hH68{t}!QqEt@I~ zFt|T~e0Fttec90WD_2mqTIq9tU3qlf@d?x}w_Ke`A77ThEa;t&NYI!<+oq8I;~_ot zHLU;=%*9q>-`tr8+c=(^o=$>ndQn95I^K2-sTNB$q4awM9gmV+a5DeIiI-|}%`W5s-=BIk^H1nl*k$TlFcmJS)YNDEA0cK*lne6ff~#je%-7~0 zFlW_HiX^GD>LisVXY{;&$tae6kCQ2eK3)vC88+Xalq?Ibl+Y+LOTWq|UeQu1gGJfw z3+Yb!_z^vd1A&yp^J$ZKPz1gKK#1z zr!z_T>Lt-uKEu4m-(vjyJ6xot**fH6Oj8)aks2%Kz0og6&THEn{q8%~`uO=rf6Fk$ zUIj~+VWpaSI`>;{Y1>>T_PAOO-OPmW#CX?g7c%~FJ0ZwU@P4{p>dazP+0K9=3ld?2 znr`&2kl*vZs&r-g_qQLsia!N04{*?C%`i6yt1pl+Yn@8$8t->!VjzHukk;yvq}0IZwuiDfUO<6W2QcR(HKA-Xl}PDILQS;nx_j3)J{}lr zlr1m*cZ0~_?h|kZmL546v6fg86-PWfr8vb;5P7qlpL|Z+L2)yOF~_WVoMCl(ed4`= zS!D@Kl>DlYv!bM@Bw6A~n1ig{vU}>3cTR)t4!#~EBb8nSi5PrMbmBAY%3iJ5ZuM^3 z{wY#b_wV8`%RQ0bjBzBZ7-ZzY|N1fi=)5)J^RH3f9Ti`TogU_fb&g4>VZf<>4OaTm z)#sj^g7Tj(Y414pjq|4&Eq&P~|$9jh{#>3kq?XsS68?fb{ zeu25*mBDwarVINQ@)^*yOm=);LU#!{PCJHTbhK1!ZfmJ1$;tT$uaMmH9Byy&uL%dE z>~7VfDx|kPJ_Yt0*wnA^3WvW#oMkkQ$WpbK3=HLn9d@P}>NVhw862dZHuu~nsKj?J zsKDE!*Zf1VDVHM8(wi?lJdUqH342`;>!{=w@W(6NrJPHB(xE=Di(kUUuTblSn z^&((Sn)RBE=QMjqS4~m7KAnCqUV+?4aw+3qyp$_v|9YZ(LDb328(uxg26ERm%fR=j zH)pnE!5k9=N1dpU75+Tsv9k+xU~v~R!{D+HV@8VsrskVyU;ji&kI?>Ju&MdyvY;3F zYpVxMK(zX|=g29Jqd1ai={Ybbhs~U>ppx%@M2$G?ok-UMybU@ZUs!&!e}(UyO?)52 z)Y5bOYze+_X#S@H(c3#=Hq3Cb9D8LLdR3XNVFI96qsE#q}aBfQQ1fIDMD zSe^!pk|YZnMH@OY5KZYm4TqILVNqeG9=P6}*Gmm6t9yaBm!q^x3tvQ*f8c%`g(<-kNiQ2mVKIpje@Cdv835^=Lx5b$0KGi1tEWWT1afIoLE zB!8V#n1xC0KF;y@9vd``Z*Sn8E8B@jF)#S8rk`zC9Jx(I_w1v;;Mmk+e%!rS&K1z1 zR*@Q$i!4;kJ8MnnzScpJKLg$VxwaJ_vSRy!tZ`cJ zc<9)Cw42E+2C)$n1F*c?XjF(55?Vj;PWk(VU8Voba-d5cX+D{R;>GGt;bBKuF0cRH zN0Z7M=Tp<)U6p!e3xEH9_4N@70=Sa7wW6waiq+b2ikI;UhUyx|oukynz(Osq);%~j z6seU+wPCd&nbPu2>-IwB{>HY@-}RvjKf=iWxi?pWZ#a${f2|!iuHQz>n_Rp@L>)D{ z9mhZ3apeWj<>9*o1oRvtfh_YH~co?w??LVVTBzkvw#w_w5<_wnwQ(c{4$ zr<4(u3#y@AY?D`j2+)SXT)wE_0;Bu#V__05m<(pV6YRc?gw>#~+h;h-t%Yt6Dc>PA zPfoAzSXUp2RQ?o%Bt1i+<)J~61HwUGN1-}|c)cBf^2V`KLw3vg2~ep!ZyjBva34)! zH5ya2YEvLKU*I;`3MhiOtK-|blXk@UyU1#TK{;^(Maf{c1&3_QaBh@kvC3M68i^# z(H2$WhBPo9TJFI>c{@E_8|1b*A;cI?>DAI`S`}YIhqiH~l2f(&sCBG^PX8Vps`~ZM z${Zb$V(kLtHCl@=8Rf=t&Gx$bk$~6MyE`C+u$m2CMS)R_9 zEaP3`0iX_KE^=n+dL3QT0l2}*nvj^7TaFmz+U*gG_i0~Ot@Tgc&|V3Z{ZdP{q@*@= zC*%IED8Mc#>ZBFrg!IK2_c!YgugpA5SkYCS2xicYsNZj!Plhb+iEb>n`v^^#8d6du zQY7%~eGVG^zPU%FD-h2@Vs8kx%ogx2fh0uc{vnGMuWpgDN{T|sHFaQ^W*P{g62^3Q z7zPQp-S#&cE>gR&Suf~eYi)f2JT(qq<+N~CUzFUBWlUU%_ahPI4@oVQ}WCQsk zb5ILD1V!p6Z9}2+T!^ZHTrl)w(hM_<&f3At_#-aT0Qh!2!2VX96pL$9bs9u&d?pPX z)6)0bOyQaL*9zA3VvYu1tIt#wFHeAt0;iqY=9l2O;B??{*Rpd9#{~=e;;|RE!WN3x zYTXe=X1i(oixh1qz>wo!?qjLzZhAGY%dGRd3?(E^%5NqAdE227(%D#OV+OgztiuoN zOji2b5;eLX{$L}P7DC7nNEpWSSy+nM(zrSGvuLR5dm;|caSn+f#pZ=ieVWj8Sp@Y0 zttcm}@-!%KQ>!)ItWSGPGJdv0fsVbXj^g!-x8{ZNzz~js=}0TuUB-$r3KAzLhWDve zZAIEVWunj$td2v?h55NsDMG21jEI3C=HA}qZO!-g^E-<_S0)6;FbSq z{hUH3zUD7xh*H{^@HkzvK0$q4PBoe2}Nut#)IfQxmj3x ziRA~c0f2SRs_uxkOT~AoNNVjj289t)bFK=3O;yPLpXT1eEvhek`yCo2MCp){?oMeC z0RhpOp#&6$E&=II0VzR1qy(gf9zu~2kRDo*lJ4%Vv-rO6?_8(;fa7&pY?!^)+H0?P zKKK2susa4if!>V_E+}wvOdlN{&`dBwJhdgFL}Rg@36%7IzKtqAT0K<+y;qj`xFgrm zF-!F^h2CpOuw9DOr1alMC{&@Vg0@(n*D2ccnq!pcIXgCa4Z)%c>e=K<3qM{e%g2nU zc^VU~E);Dt&c@_e-Im%_8w_XUF$?OI6BZdBf=frUFe{ z1ty;rZY4iB&^L_eO>bmg^xh+JZ%#vc-9AxJdT;^UW;88dCHomfFLFw27|mYzooRaw8oT2k|OS%z@6TJ zqYbU9%bkE50{KhFP5I1s4RSW!nI_7MLv$;DHr#-83kVRgV;*DuJk!DgExYeR&AF7= znq~zBrDH*IYp1RR>D|5br(ArjmanzyE@RX;+7KpbfS2kF3*}vj<6Zr5bbw?)ST;_u za*wHN{JTR2OJj{G?V6m1x?_?Dts=OLt}hP+_KHnUc7N@3WOqKPOI>l^dy?qn#BM^Q zAlJAzxL1P3)AOGcJ{_0COlDo(0GlWSI7y(#P&wj|3}?b!Pec14bgm%R4A z=S3%8(3*RbtTxLw)5ptS9`JcEEeb*gY#{iLk}bNqhJ?xlu;sE3He=Kn(B2J&P_E>? zGuKJpV(wpqow|!&vlQ56IG;1U-u*Jw=E)X8J)#!m(l;=Q1$WAY^>hOo+R?s>H_Ed zqb_cIg{E_C+mwilpDwRo4Xu2+qnOXVY9mV9^l)|w?J&BXLW9UJ;zr!tWF_Wp50o#> zzoldakuDcxM+PAu7XP4Y8DI2UTvsZHHS0wl z*hIpzFDzU)7BuMe^Jz9vnCKAUm*MNWOVPGjMM$}9WLu3^ElmnHUaIQ1r>8#KFJ5`Y zQ^k;6&DH2V-uwHR#^sfsFwze}bw~hXC*-KmRJ5cp(o+`CCpkCDT-Y1{gMtF(>lBd4-% zOTyNtzQ35k<$Z9ue>Xv}09?MBb8GJIF|q2x6WJ>cTbC9>0P08Vquw~;&Jm#h-Rv&h z5*nQ?L{IxT?b##tF40XK=>7aGaOw0WIuow^SIy&ScJ(vc8G{%ekG&J3&S+cFIOxVc+) zaWgApB+`OzLBP(;stHCqus^+P8R(GOyM83hjkKejoam9MiHtOefpPT$yp=HN(h0$&T z^;K>(oR_gU$4A*6h&d#q#j~Y>6e(zIBRbjBK?Vdu%(p$iRnf}Q%$}5|oL+5MtU8i& zb7Cf05QYnaDpUE3I5rngTy9*MH&hmQn(MS=Y%S&)pYA=t1mQEo7GJj5=UVmJ_`X?ljRkoj zjO7+o3eDD;*UU{S5lM@PQE-kn)2F(!<*Er=x#B$rvxE1sLQg+~+R}sC(sMR%W*S@% zVB>tswriCf4|%mCJRy3R<^4^EWrbT#hvmV@K{zp}Y20?IN7ge2>-&HOIAxm3Vn8mh zkM0A0m3vk)X#P*{w1LBV`bFSb#Sk{6K`LP0-_q^Tie37qVnqrKpR=2o(uMBW>TXFg ze{eu!KnX9$sF4F;AL9K?7~sPhbG0}bM0SXUNu+bxICw1erv%c(nt3*;@zRKZN+D#3 z{p0)8lW-q zoxATdJgR*kOf2SYsU@>krKld$8&nsa(~n<(ZtPe*w4Wgofp4wXd>spi zE)U@dG_l77$;$6=Otk6%#F@@Znm!1?zWw8;JM958db#EAyOI0t)?`Ta&t6U){wG{* zL;DeF(6?YSRn2$=o_i}$lK|?*4|!_(bjT~-G+d^hCNDEkG{{SwZV7SL-hA;rBQaN$ z(bNW%l^2wict8Eba`WV!68+W$lZsAZ3Ii_J$l6K;CFpY>9R zj#h5{{HLqcq->QS#^r1vKk0b;pp;arZH;sUAs9PcqQzhT>^7TDtDF(I!}H)a1`ego zZ2EN0rq^RDrH+~?F8=U#QiSGK3DA8E+)MA`L%;zwXq@o4A3^Ff{)p-DW4< z-JeUir9k^!EXwZmjqNaoMP;|OkGF}Bb9kWi^d8z!s;?e9^A&H^GP(~@GGxhSeYvXO zxuR3JmIbf)Q+~W8*9!35adWi_lf|>w5B#$_uj9F1x;;&EN^BXgZ6jAvZJ}T2Pnc$a@ z4&@|`=&{9c6W8pY1TmKh8%JWPN$@EETtixy=6NwgON0zY!ciD1=b+x4Laq>W0s{XY1sTk~oIVZCZH=f$|XSMIuWKjUfdc_ZE_CQsw zBsMdOrJ1;!O;#CR{dK=E-tmF^C8U)gX~7*T5kfl$BreBpo5T#M(i4O32;N`0nFLft z@s+>`=D!A8w!bjunSE4ml?+vULd5T_VWp`}zWbn@Ff@Z}R%+swGdyOf`YZ2St*!tZWyzKXqfH zl@gwadF#4FKc7zb)geLeoP&&p>LJ_eLEGwz>V*X*8yyd`3j@KpI~H9;5>m6rzxcBb z0Xu%*j|@bFo3!(*9(!4nJr3y<1LT^khM*ERAghL;`B+i=-xyXllNtqSct4IJEX|M3 zC*<9qA$Ef{KEO+DI8xUA?VfX1J*q8p_IFLSy?4YXne$CD* zuv|Qx>)2s9lv`nt-;P>%61prgumuo0jMi zmQ;UuVcd&EmT5%@pZ@zI6FYh`E#{!apmA_`y?T5{tF}g#* z7+p{&u?aiL`^gveWQ5=hDMske4OOR{ArKU}e43iMkxq}3&Nt9osNxM^bhVt`lJ6Sk z7!2G_C85iI6oq_LO+a4aSbTd^(X#q7t*(b%_c|E{@46&FhoI%9=bz{j$a<`I2xR`K zP9cmo(fiSbV11|_GXp00qxxDNT6Z%~sbpk`#p4z8x$8KH?>iYEIRZ`txABpEXBu3* z!MIJX#Q9Ancv6b^>+N21c_Y0vrjQyXr8um5FbzKJ`cN%b9g_YPCJa#TvOlbIqT)eQ zZj!^icDR1SZf-g+jeU>k>XE{w<#vO7=UjhMW`P9*2poR-x_LufPrVwDITb~v@=tYM z5}m;*24;F2ikv4QSgS{!#mO+3YFb70mclde{9fI zr12)qM-h|GYV?-iT?+x77BdH3%`yzJ_u`E#+XFP{jC)BQ^dGY$W!u-bGJdj)#3H5j zUzvOQF1Xs|nw0av8oAp_q5!WC#rzETxHN}a4{FcaOfA-dqVq+*R(#*<2M$WZ1IN__ znX6AJFNp;@t;I{9u|59Fu`&?~q$Li-s#8w)!sg+{kyab7fBg=m~tmjqp|3Mfc2&WV5W3 zs-GmCyVv0-MMv(940_Bi6lXIQxmaCHJKuMBBghcWQji`06VF^mt)=oP*BEO~1dI&vw@6k68nmlToTzTJlQhz=(E4a#|saflIB; zUpx-Qnn&*vYnVcnF>o01M)r}_xK>nMFVf=w%too$kU_q9$UVz^x3={_`mVI$NIFV0 zMLi^ayIt_m^RKzU!vUtw3dYk|IGeqfuj_-;40c^GLx9jzNcqjyOe2S*LvKdRy{p}R z^xNs_#>BEzsDnN!%*24#9&m~1&i%gop5i>yTVXPU_vKl`#4+EbTkz+le?_|n+QZ6Y zt3EoiQNbQBY}&$c5CvMZ=8!f!GH5*lCpO0KWN*Xbt9X#V32(zf_5pZJb$l1X_B_dv zq!fyunF=B*@uCP_pjl31S|4e)CUfN&X0XB0lKGc_FsdFbz6|>!y(BUR z@zSyP)6U7)K0^cKl?jqjC_`>6XATxQc1w^LW7-N){{hog>p4LNyjKqgG)P)GHX?Pqxjz_JpNLYI-iSe5TJoaQAx)}4Hz8Mw-P*kjl z%Z8?clN$f^wD9XE2fz9}*x#PRfEwbwZrvbhh+XAHtvIty{4Z1GMXBSew0p@QyM&ur z{BPT8amCo>e%(Va#ETeG+YWx#)TN8gDM>ArPHr3E=6_R=O{c@ZwqXz3Au!3qdVQe%p_3k7~4PoQZlrI+Eson*; z>>kZjP8IKy6zbOz)QC2VN+hQbBZ~XRHCmim!DJ%zQE<9&XQuM){H&(y9&g@72}1Yu z)KX&v5FeCME(U$ZALa4_-VzUa$vG7~9%((2sV3qtMpa%^#5)GK^sbHD`z4gS^!ul_ z)Sph@eh{PW#NZ%Zu~+v>^N7=^ZBty_zZ?_Mz^7#&mqo0}T3DFrQY#gngW2UXYwl$tTc;c0;Q4V@7Cg*U2JhR z4mZ)X>9%Dm3=8gs(dos!gs-t7OEUd~p#_-&kfrH@;t?dgd~^yd48K#KBaMc}ehaA( zcy|GyG!Pea5>OSoT|)MKgsP#YkPm1W>vzMLTYkbKmClU`LF}gZAyMRpUJ+4(HoRSe zq{s};_RE?q>Nh*$-lDIk{3pNttoIB)2Jyc-n|c&unN2ZclQmlYB<68Oqx3&>&L@Y1 z&Cg8yfaBw9L+zvxSy@>^DLw6-rWN{yXxl0quh>JES*Kuu@yc^|!vKaKN zh_3`LNYP^ylNG>dPaw$qi_}p|Sk6wm+lVvOno|PLBipD>9ktW%L-CI6Iy7)QS?8Y@ z$8?ux12+#m`#`t}un5v*ixv}|;r|8h8cuQvnbntbqNKam_IWjz5o>0L?0c5Nzjx+w z=##Ro)IXjJYm+MtL^hgC|BTu&VC$Z>Frb*B&rmy#>2O{m(x#{(Xgug!Igm<&rzwmo zQ&bZe;7D^GY$RSP6EKQ&Z zm+XqZX^@CJSW>%5+?&iCSwH&0BSQHx&(U8yTw7g+Fy~JSYT6#m_8l8d()Tz><_vO6 ztk{r^SZHcd6gP>)sS1p!pWmA7^g=MTk`o{aTN3Z_>U z@`ZSk6@viX{BxWhmwKzYG)Ao5QOhWcFF!Ar0$4cCYGZp);!7`uvHxLYg3#edX0q6- z!>sb>S<1D&%-VijWMQ+{Lf$8FSQhgZ(UK}7RXGt;5^`Ks+)5U2k!Ek)wbCG-=E@V; z&)f5d*atm+*Rk&pvLh%KJAanp@i>@NHwS#o$xaIgEE_%R?< zR9FpORpSCFbSC~!gMW`yi&OXij}{<2C1mxcp~|qbQ>%?jFp~4An3JSvbfb*>hmJ5@ zweU3W>{TYbt^t#7O#kbblvze^(LM39hOx<<`-stvqxeMN zA$6LTJY8VCfi%1R;2yTD4D|N1xi{$DDv4v6exB5(btr%Lac$)GLbNP1vZ+c?+KZY# zR}23|s5tm!4$U?@pxOW4KtFr2v*RFp9Dc?6A(xMKy+%4Vq`YaL|FH|oAUUY;QC~{q zVDQcEwtD+!|NVkyY_zq-`sh$wzJF5n$J(tuRn>hn%NoMRV9y*(o~`MGy9F}M8X&Cd7K zjU4BuKg`-eTpI%}uOpDAHN>E0{Ha8Wtp>u2I!bs$%&Q4N{7Vvc*9D43Sz}S4Q6e-x z*G-lN1OB=OYMK#b;%Gw6x2TVN0oP|Krz7P)r*j?)gXUhXDblllW1+92B3k21fM}P~ z|MYdVj(kj$lQq2s9cUI#_sin@i*M%par7n&9{A)$Gj%>AO7f`oQljc8$g1^yr}2hE zv;4tJRx+ZsFDC1+?05t%TH|>&*A)a43gkYP>~LG^*~IuK5ycL%lj|5Ll5nimjk%}P z3y07vH_`iUnfBTieS306iSGHP0&}XFT6=F}T@>=2ES5-@x^;Bi{inU7TZ8k5hS=GM zYYtl~Az0X&d9dfaD>z&=HrEu{T3<9`JYV2#d)~FUl=8|X6ghquCgnBu@>!6K&l3jp z)`0IBW51V7#e!Z%85WzK%J-ele6uH+4jY?Rqg*&-M8e~yB=t6rb?-|ycd zCx?fNH-xE z1WJuu1U+A#QjdUmz+akSbF*+BN3#!VZFVT+RcMMz9m(9mz)$SJW^;pNB(dctF)kz% zEUI|!B=v*}kAoi{c!ieBcM$yGR~NA$02e})7*Yp+s+6D?UDUrhml!QgNL<=Pt9Hc@ zs`0+CGDeEq$Hx@YY?y(XNlJ1WU2e?0JORjtC#7$jhaDvW^4Z7+r-VvDW0$ny$I{Aj zpSqfSp`+o<0li}>aZ-3RN*czMcsz8kL{`Iaj;bL?p5e}DmvA0s* zpLKfky-EzrgrQ@XDx`Oi8uiOsv8NzvW!6g7_sI~5mU!&-)XQ)9`px{6st@3S_dTe00JYj@=7y@Nb95*)0plS$k3Q)@x5iVsg(W= zg0vur=(n$1YPsy$1l^&oZA({whNg?Y)o#eofX22_J)Pa75i$TIh65Uz8KdV0 zvXFG2{qn%1324Qw@XG1~JQqjzu31+sK-v=4a~|SYQCSy0Yu2hJlO#aO>woqseQU>5 zpvEb=U*b?gw#_qoP9WA;Q1qhbHl~tA0-|4+GEVn^BKLo@9{=}InQ0Bxno`q#?4q4K zqSrnv*6sI~>?T_}V{jp%=?>|MOR;Wyws+30B08wAT?$dz<9g8yUtd~ZuJqHNl;W;h zkuV0_xqi=Z(+F~FRUmjtq&;e}lf;6)xEh1_CZO{RvS5Mx;P=2t8}+rBV0e=+_;Gso zJgrkjt}H{L!hgBK3arCIxZDg;f~J$&&AYAz7gJ|1AkCwC&5L&lN2#+8pM`3NUxRo* z2y^crS(a3>^$(t8kpvZUKxXOAhkPl|GR@HK=>mR*T9WlNVLfNL93jt0xgW;u&Dg2= z{KsrgF=sh~QM{1T-t{jR7N;zQ-zIQTD|Z zCK9=o1L~Vb_iE?(L<*6T?UX*+*^DO(uM$6~g*rWZnA|!{d)`3YCzp_tjn}~ax#&y# z!&-vLjXk{Jl|XAT!)C*~t)1x|sp6KomFoa*P z+kUk-r>T9oBc9#!m$5oG$wL2UfNU=!;Q*sx-)*JE-wLlD+B1&Vw%6Y}NGGe*v`XzQ za@@^TrB!IYandt%3|L_aLLFF-Aa)_uau{aed6ObvTarp~a7d-sGVtDI!>5y;_cxJ> z%~-V2csFx4|Blbg9^mehuUd-RYi3M-oSK$NMyr+in+B9T4{r_NU&l0}y+YI&uftWp3^=H-<(2}S zmOBXeB&nv-8zkrbzd2AC^zmMX{Dv2!LHnEvkYjhG63JHFlqQsnxo@g21mKTUeI3z+ zoR$o=4u!BmULAg2z&q0=f%`rxEfp9Ua;(?Hqq7IpjpT6u6w-N5LaJ_$3B(INHQ@_r z%fH1dey{7R_r3(Bzm4dto2)2hP^oqO+`~-2{@qHqu^0U}W!c&$0l-&aNPVGU5U=)6 z{Xfs>1J4)i{kXZO{qG*N1qkC2ezIe-lf^&kbJIw<(3l=UKXUN9g-K6_Qz%UnJDP!` zm5f00EuOmguEK6;zvE-WCEC3Ux?Csn8Lz~YQ-Pi_#;A~_B>saxAz*LNGtA~E{%mTm z-1|t_$;dP!cPTO9Pwszo$*Ufh&qNCpW&yMLu$?>u@66&mKvV09S{VOovT?VB6{X2%kw`N z9YunHZ>B50irqRf)ZuhV;D(EJ9XL79e;$y5-8rC51S%o?B2PekpafprV?u6VMn2Q7 z`|(rQui2oy5P=M!XpvnSJoor>LGy}I>qQS<(IM4cktp=_s@@cU(Wj&8oSNG%&g$COnH z)Enod=>m$hnrUGD^V1J??^AV+l*v^^h*uWrAdhLXjgNb&H_iDZy}h4>M9FTOP<$rj z#|qb%X=;qFzo+7~o!0}`k)Dko1037wH_MKmu6nu~>=`Es2~3Q+au{`hQ=}i20Xx^# z!mWa^KO|PhPl#C3=oQ%)C!^M07K10l9Dle>lO25aktR{`=Xbygf5A+8ESGXxV_;=UQ%(`hvS!GXVi}ZcE~a zp&b&i->RR7szA?BPoNm)lq2YdL}ZS=-(0LaaK(e^!dUK%K$n^$tg41tb-Cu#sXk8TiUUbs_(RI>Z-^vkuh>#MCSTth}j zJ!Nx`#ojMFHu*&BTxYI_A3Fa0?hfu;a(%T!HKTi_z8a12SCW^R*YC8WPQ9IHF+ib6 zk{NYM`mSJXiKX1s?H+p{#g=V|WF^3+HO3Fl+NTX}CM?QqQH@mLC`R^@XFyfQz4q!J zFO1>LPM$P4_+=Xjg5hPaTTN{3>z5~r=iiJ8`|>HMc}Kc4WL$;PaAt{F3x*^~h@^q!;p(}ttGK`2mfI&A*_!fkpVS)x&( zqaVtyB0lhqubw?jX8fCny?Vy(6j}or_@#8k_0y!A<3(L!ANudgytPH2^SY7qhdVTA ztqgx^ms(&Da7hPlQsg`IJ? z4off9vncn?T(Q^?ajSOjb2f-`bQjrwumjdGeGkwe_rNC^SA%j2U()HyKJ|NBe;wk zeB_eU+J7i=ion*${BGe9ffvmM@4c$3>LpEY-#T}H-6c&Lbx~$eN>wQXrZJwErSR11 z;;!y#8I7hk-Y+P*%D^+;!_QyUDWn|a-nk_rB{_EOd23;!mS846^i!f9YN z`fsLCj?0-1*PGb2OJ>VHX1<=jwj24@8z!7U>+_0?p2A|YN(ruxHYCfLZ(Oj?BVg9m z#x#Cn2{M=JKWA{$L3K{8FWW|g}{oLQ%b2f&q8v8W8M zztR7`!v(ov?akD|)PNf!P2}K_L(%gx0f^L*uKMu%7BFE9ruaBcl@a!FF^;sa3HjWn z$iXeLeJ{p#{s;kq{~U8{3^Q#%;pECiUg5?afpv-7@A=W8iHb^FQj*X|PN zf=OuQ%1-H>Hz;WIM*OI7qNIve#28Y8rRmQa8C=VkD><~g+tziXM$NijR}Ox8(yb{o z+|t1&2q+e4?TS-^B70drJu)trO=X(Wvip2CA&<(w#nb(j^s10=wkq_#*|}PzJXm ztY3C1@|_v4fuU89vB-gAyPq}3-0qbq@rO7m?gUeWSfjeHYM|3mcJtmpgmQnB)dNHgrA@l;`-`W)>x-cvSR z^X@X!YKV>y*GXNKg>8ocS7Ac1ybzjuiM~Nt9u)!6RLTjy}3G z7dl@gdI+`-_7Aw-oh)iyQgn^l$2}Q z^MDDR&rtWiGowi?u%q=jujIr7Fq^%X5@Sx$ks;zIlqBFWtZ$isi=6IqEF83V>?cSP z2%7CTx!wqyYFecywGm}jZMh|g@E=46mWwyHFK&>6@>^7Os{*-d&s(g8QO&&475R+` z?~F<(U_#nHts5ko%@-Fv}W{KVgCAJGXK0b8=3a6HeVH z6rCA(;sydD-MKIvg`yp%g(kw!q%gs=(`D&h8RL2&xR~*~Aa1(;7I2dJy#~X+BR$xz zGK$3(LuHbWY<_QrbC!xn@_*qlPp5NU)KTeUJM#^mifoYBFXlx~n0{91P#ejg!Jyq* zFW*u`LPD$OqlDyv4n5^V@AU;jm7Z_n5Lq>u272>1L+GR6qF_?3S~@Dyw`CV4r|=}f z_RhCpqFB2RZKJv1j;)tmPOnBk-M59+FuDWvz$^isDSy{EOsnfZ?ihM9pTE(o z_S(t*%wHra8{aD0yc+e#FpP9oTq`SN<=-?-nUEO7 z`E?Dk>*f^EE{1AvnZTcu&VA6C)#guVxlLQ~+>!gC8nImW4_J6~x`QD{eu#ECcb_(& zm+A>Hvi}|8VC^f}7d{RgEe8v$6vfXL>{IWVfqJF~PB9zPD4FtYgz%ZL;&I;kXVM=I z51AP_W>ms7D*xcJdN(!=vt#W#L0YpI;~J&9Gk9P$b-(|HrI&bKt6U_AruErv)@XJD z6RA_YtLIH{3RPDn8y{EU>^+hUdjl!M2IWxxYGz=v7valeyO)EpE^PEcsoL*_ui6?} zf+ZZ30wsQ|J0pMBy!@cf>w{%#H=^;6iZ3@Bo;1d@7)*a>nTl{yz zQ|v?$*$JFO2;ICcpjz7Qz3TX0BBhPhLpKMA(k!DIuLO2%iqz|EgnCP7+6wqu;Y=6K z-AlO=QDe*2kPFsQZUZjkOEnb&m#)X4Pk^@)Lk(u3gL1D-vm>xB`z>v3o|cJM^H zN%>AnmK(^9as^@5l!J&TIBBQf*ZRw}b95d=v0VlV{RSqT-vsn_@k!qS2I_?n2 zI+}EITMBTcT25T@5}O5r+gZ|$-&moua`8WXK2%LsC}vlAFDxx;Sx-5I#!nU$yPo}v z+h6kXErCKq<;sea5yq?3g-mi78*x`HjIBu^QsB%Ef%z2TpI`W*n@fpoA8^!SUhrN5 zTC8_7N5B=Qy>2be=hRm_m=CFNuC>SeF=7j=B3qU0)&sKS!+yLEY=}L6z4u`cR)0rH zSOEbEcOnYlTK_f4qWfC`HyiTG#4fKEUIx7hSEu0}FtZUn{qj~IJi9P&rsk4?SKe}b zwisv{e#vO6*On$q>ARo~T^V%ao=}8Y3xgd7F(Ox|OEU%NMU*t(?Ta2?O72sih;B$( znDZOiCb$)ASia~wju#Rz;ow&T@nNHhIlqgjjliiOT01r z$WIePMJ?oCi;L$~rra+^U&D15GcQf%jx;|rSct%TrCV3)^A|RXkGP%^*uz=X3! zzq_v#CvDc@sOvE3=fF;?hgkmn+JptukLc$@*|js*C^wRab|LWA!f+E7M$7 zdTVxDCo{zF66*JhbniG;H*FD^7tX{Fs|H$0>M>5QUV8W5CWM*heNi&HaqR&ja)rC z$G~gG%ZlZTWbSquO)ep7d}4xY+77bQSg5R#S#PTPDgCs|^${v*sMOK;u)v_FdeIqh zo$^fc>*xm7hLFxA@;(+6274M#9hk@vdLCM}LMD$9Z(*crs{}tVC_VVHkYeBM2>NZs zjFh6xvnyjz z2ZujU$dsO8A-&wAdP;W4X7`<#j{I205!QlX2k1StG?ZjW{HiB zz3dD+JV|8t(OGyH8`IlQ2C5+beYI}h+)GbDITk!P;@*mPpBL@TefAJ48G)=J19)`! zcO+H=Ox&4}?o^*pq1Foe3Y1p6xkMyZDHJp6hXmNhe{9|opxnY5543Q&G|f%hokxql zU`)b>0<~WKis3evUwqR}r}0J$pNZ-fCO)jodRnIcKCnhwy@U;h4xTIovl>R>*{5^A z8_@k>Dn`1+TePWpEc<@34HX=DH|CrE$R7FNerDySBvd`gah^);c1q5TyfR?=$9l6p z>9h;t7#@WKKl%tr@#y03J^@=a3l64kt4M^{uI?h6N+LnptxH_(ID0s~Z5HbS1T?v; zG*E%yn8vme+x_8VSO@n#sG+&ey`P*Uz`2M?@r5PnSeHWdm3e@q8AYkbjs8S_4)?_Q z0A_7SKaaYhqWy&9Xz_ zS#M*tK&qb7akJ~Eq+o$GAqM9}0l%UgMy$;eFYBFtcF&(G0qg5f z#8BAL)d^XH*TU?0)oUbKv;2FjKqLP!$i~$>V<8`$TB;m2q2tGUTg>Q^zzVsbhrc_$3&iFEx3$9IXKkjYsASdhXMaND&y(zwpeJPc7SEmS641k;Z>+bq934`Y z{VDE~4{iIP9qs4DCTCbg1umnL*Z0*&tdZfCX*CBy} z*|x$4g${*pbpEUERMO6%JFZdGJky%*HjDsr&BuFuYP`QTwv!(koj*jtA*dIxw%=FA zA-`ZesmT`sC!zMG4}m`5P5ODK{tH17O9S`W|J5@ZX7`bul|XguTp>=ph*oQ}6Lb8r zk`1oW^4mlO?a-9Ds2*F_`#Cr!=HxSU2p`{qDLxMEtY@K+H+s>2f4sF_kT!qcF6*i; z6pAwEFtk-XIP#W7oIL1kNs}PCKJAo;>|Qq4lG|+LnQw!iN*ElFwa|CD^C6zenra zWS!-ho3sJ|zkUU2A7_)SwZBunQS6hysUuCaJ}`x>&d=J$P$S%)<@%?0g;Sq?qpcGD z=3RP6)Ls5s(xa|vd3BZ3jfZqBT>#P~&-{+i^K%lTzeGp5|J1L>1i@kAdiy92&@`z=rN2oZmPy~iVtFInq()`8EwNt8LG`n<4 zLxz|<9yZMBtw?bRQB!PX0Wm8=lfL%eP2^H_P6(^X+}wqlRb{?N?00xlq4{iW#N-Eu z<$B};^D&a4{uiysXDg=jdOx>s#RJN57B(9XMGPraO+1BhUc+}XEO!r>`f9CJ@rNWY z%1)=qN`E;Ze*-c^#90_1V;`}rTjGQ|(Z_!y zB_2eVVES}wuv}Jm6l|_GMfW1Xq*d$iE?V|3CV=ognVu8oq%n;rb^ER_abH4HMvpoj zZjJ3qhOh=5&f3zzK1WB3xSJ*>cKDy^d3B8V0eYEJGX3RQwQNA)Tq+dyg$-9vUr=8o zX?>-s8dS2>EG?q_&ghkj*W*8A46qnxFJtF4w2Z1+tR6&f|F(qN=yEj`&ss;a2=iP^ zb&Ty$S)33M5zCdE z^j_!~H>Bkan$ literal 17027 zcmZs>1yEc~6E=!N@C_P*yDcuk-QC@7f#3vpcXxN!0D%p`-F2~$;E>?%ayReySKa?s zU8<<9nST1|o}TWRbLLF6sxtfV>&4D8y!e*}1FkJfm49`pyOs;DUi z{l$j<@vDoAtJ{aAxw-kqxiO^W)t9$TckRDTx4}$LPyfDqd)tS3dwX+Q>7IZpz`Cm| zYru%^uUNyth$F~JifMWoAE&e1uZv=bM^14e5loBdW^i_gDx|XHV;g|P(#HV2uQ;~r zL@vQv1hL_kuTy54hRyX8&zX7Jx9<%2&y+=t@E5zh{m!Q3LwFC~<`jjj6$6FmJ~I~~ z^49G>wnXon!@5ipCnbIk@b1o-(GHi`XZ;YOV01P(?c7kSgWWi!1=3u*MyrVTvlU z&>lw6WiGXk89 z+S1rcq6bWo2>+&5%jll9(YSsKoy8Qz8Iw)#Bj$9-iwoe0&8ey)&khI@qq-4e(YSH; zP;WHe1v^y>gdd0SR7Ee^K6Z~!6Hk>?6k;oM(i}bpqr9kgc?XM0#O6@?V?K(yizk-* zrGA4IrPRXSn`0EX5>1B%`G22KyeFr62k$R`qx7a!B&&-n<9}YbRLWC6>H9hoAQ}#n z@EZed@Ar=^ocjKP!^l)4^Um7}Ua~(skUJl0j;$Q2pC6tpZ}uGbNaKm;k??N0$5QuE zj=INTc1C4Il?doM2YEztu&yr-L+L*=9)G?DjFi5{zqOK@?fJe-sRL-q#)5{`QjRG zbjB|{^&!@>Us_egn`xO0NGp3qYj;IES)W=P;ZuQheLwWFZHW=lI^0rd5MK%KE7)Hw zbp<8h7iL*oCXZlRI0N+m^q9?n@1*@`{7Wf0sPrvYSTX2S0%m3m9F`xF9*-9Xy2*^> zPxr#_;mngr>}OtAe@Ev(f_e&QOV^@G%2D`JGT1t+)6^;S51u9PN-Lhb^6cR19|Psp z#}4^!ZsHdcOF^Fl`|`8gJeGt7?6BTGpN%)Pb)7{A64WJn5WncGwjM1Td`q2Fzmb|$ zK$!ULtKDUySXZFYc$><7oHk-fdYRG)VWwYu;Z*fr^a zC4oHMyoOf1y~>x6*r#?UunefeFU>q1s6R+|#OC>Y37F$x zi}3kNoT*StyQVf1i1PWhxw{+h%EO&Y>#atbTB>Bfcd0a zzutKMRiD}-|D1ao9$nBl)5xXyv3@_&V5F_ft6idC_p(L5;Bl=;v}?to8k`VfTT?Jt zC1kgEA~JT4wc3u8o5ysvQDql>dwMdHcQ>l+c$;;%<7gTwSZ26inA}Q=S!|*!Q0>VqmO!&8+j&ew041P+K>j40Q~sRt(mwE9Q$9iB*1>{k3Kc8 zEE+G@AHOi!rO;4Gq*?u`4+j0*?#bUH zn|p10k(jvp`PZRoQHEk3WZ|v+lh~mpa;X_D&+dl&=KE?9slsmV(?U*+38ZXceqF$q zHR7aAn`JHHGyydF3OF%&nb6;DsAxaJl58~MB~xG>EU7vw$#-gWZk@*ZIXCYfnKmJQ zbFgqjP-gtxaHjIsdF}AS&aM)X<*u;tY)81W-7owbe>dZv-Kq^;`leh62Tcx&zq$i9gzE%7BGW66t z8r`nVe;oGVK!_53JQ3UHA*hsh&-1C(Q%(-E_r6jP=l6m{9%n-k(XG!dVP2we= zq_$RK*;ej!CUh}i`c}Vo|4}xE28rmT^Le@Q=a&^5&uTdmk{Rwl`zSa6`fOn^E&6`3!BQOg|T4h6`$4`$W;?&z$2rPrejUHPJ41zuK;<+|fpL;Jd{Kh*quAxefDE&8HhV|{4HTg;WhO^#bQ7F2z&e%X~ zh%O($W8D*fLbL?3EfsML2^4(L!woB;%@ZMbGjmVgGTAukJ3Qa55t?r$ykh1#aps8+ zb#DFiSH5n?%J~B+G({Xp#>&StwUf$Q-k)7aKyo{8?9~GM4^8Bm6wjtrv{TC##514R zh*@{Ot?fjIzI=IRE|65io`P>KoEi-LG;=A^l}lPbsq`G2g~+K7Q{n49 zmo25AJm<`$-)Qn2>o;e?l^HAR`oMNmvR_#e03KHjv>EC_Nmb@d@jYqvCd_wlU1){( zJW*-Dq}!s5>Q@8Beb9R=r4I^}^lg7sdGl*|6%B=49B<@Bmkr$W=gC}|t>C#mXw}!_ zHPlxR5k)^|+frp>X|UcF#ykRQ@AB~jvCH!D6I&OguRt!v=5VVICq_?KOb%vp73_A6 zuLBq6*;{WXCpSIc=#C7?KF|IMoK4y;@D!Juk)j{sE>6T}GSokijxE0&V4H##^1zj@ zn|I*U;hb%Xue<(_!xiOJlZt$N;J{p5DFnX&xn+$U-}lC8EmJM>Ikt_x@8^xyn<(Yi zeEcP9I1I`Zkc0)%JUKKm0$gvlD~U3w135FL4%^%`r>?HFGJM?EPNXYuu;Na*ru=!o z|0%mY7s2yoX9MzKbo}jM+wLjNfA=O=@2Jx^^5(*;w-N2IGa(Wueq$9ky-ax+HJT$S zAk*p*uCk4_ug`q*N;zevTPOUd)`tp@_U2D(_3rN+UbwqE?T9s7qZ6)$lxE5|4Y^7L zrduZ@n#lpjT6s$GsfaT(p8QtgGH@d>(6a6&w|kAOf&Va2 zc>Q9dhhKl9k^-dUkMXf|&T#xEX2_ajYwFMF>x5i4m$!XH*VT7Yn2WnrWJKDD%2&`T z$!+_QBW>dXAg<+N2HY1mn0#D`ee)QQR5Lhkzga}S$Yug^>1U2e^f+*>;g{swo&Cw1 z(T{$T&Y7^NVkjofuK;`IXH->x`Jwmit@EDf_OOTcb?kS9FC=hPBr%y?X|(PleRy>4 z`|oCm>nWsI($TU~OXHtu9s9-#5A2HD7NVIga>qX7mjTk(`mz8&54;V+!I}#UleV{{ zXXmy1KO{Q91$hXF#XwaT8EduYZO}W;)WNSb!`3hR8D|*3 zYiFO>&Qd~4Gg0}74jf73PGl@`-y`H|w`p<=MaKnu9;o?|c{K(r!rmk_;xEd!s%pqX zd8dRHixxuA-$L)d*e~>~1xmegiulv*yMaFL6wV5?>jQP$O~$H3l^CEiole0$Z<{4| z+hgbOQ^Drz+wmDB@JWMBqG@8{A<6-6* zv-|P%ZewbGHc%vCICEq%*LvhJJvisfkBQc^{tdGse zS}az{1xHS%hDlw-i%vVi9&$DKVa#)<@c9YxPPyXC4p#81)6SC`{2SiML+DG>OTN}f zS16W)3b-1oa5mFj5%~NWPrn!kZd^%=`#6y7mVUUD9~N9)R`ES>&hO zzzS|%)}JG<w?!@#n^yAd9(eT_SDNkCh7O=uy5Mfmu)hEJheT z0@zj1aX0N2u2hlMMWwy@l4Wu2{IFpC#p0Xq^83o6!)ontF6;{I&0NuGe8;dmIGf*Y zTEq$#m*0l?syALNTxAZ{H@^Qata=il<}?wq(^7;VE5%l%Wgcl(0kO_%mK)+dB-V=p zabR66HExr?G?H!^i!*4ew2hYs?{eaHEA4Snj3~$aL|ec4!^uti9hrhW;I1v!!@L@$ zl9b1MIU!8FuE0)96y6LK_KG(RrkTbjrmNTJtzgD)W|i@mMa?t9tEk#N{;60WgC>-< zG8k74W3 zGU{3Qm}TdYKiPUf$Ddll+xlR=yEVR1GWt*9hq2xSlOv|6uyka%0qP*ul@D(@B^aW2 zqY?Pny_DsfdCIhihgWux<6tDXJ4uSoU6Vf2RB_*})&lnzUytFlyk_G`^7M87g^q(H z%-;m`pF9O5YnX4U@EXsIgr#>n@QHE4$rCGs<%+vzTa6Mw^xO&1G$g!xwGpcdAVjouMDz$*dfs1@Z1@#v0v(YlV)%HgRQt)gwB*(-66bx^??rT%D zsi@SDV}-pK0@GHaaFdp3cG4+4ub_&;k%IN~%^D|Fyi}YX$El7jUW*pjY&!{)mpdFE zp%a%_L-cO;V=&79l!|Zf#3`_Ub?nT@zLItMPp#SWurt^X(5H^^%e^?+n`WaZ?&z$l zhE-6KYW8=sZJnLu$3%_5N3A5~jF(vn;a89rlZ2pBi`dqb$T=zkmC^jg5QtDGIh-BSMt& zZg)>GkZxo3ZJt&Hbs!u`FrffvNm^tX#2dn)1{Zb|He5c~I}7K)jRlOF5mCz-{v~f` zm5df^n&0*1$0N@@-eWMhH}f!O60&l^epw=QY38Ix6?{4wd+;GIzrw!tUPC~;8)vxl zIc$ujmE7@dex8dzA(5i1iO~GWvP#V~xG`PDcDnrgIlE|F6B)Z)R3+?qutEUazR)ho&VPGGzp$)N>;2+tMlk7;||;e=$nCzN$=s8=t>W`;LGhkKC1LtS9XHv;wtuJ{YryjiY{gftG}={0^sCT!Y! z^{#Jn6z78|8)%CUI7;15v6>Edah=Ea+PO9s&RlC|1QvM3fJ+e3PFO`SsO1~xGHTen zZcUM271&Ls9|p*&J2(S&_aH>0qG!0i7#^t3xu~CZd?+kP4pOi)yOPv_Q6LG>1*h&O_O3+ ziL=?Y7=Qrugq|~8yjTDtdO=|7HLz*n^sg5^g2onD6LgPNQfxu*-0Ik5?vFF92G^t; zT=_2P)f4v8uC* zNL%al;%3c)(eWz6LPZA`3cn~h0uq#5>lF@ogVsdjOKsh+=MC1F3qF`()d?w4sVnxX z>nDA~ykIHQE{kA=95sg>5u%!L<(*hpp7M(b>+yy4k8Z;&H!Di2 zovXJeQ2M>E!dT#fd#5e%1bySMcKHJ$axElY?Xz20qWB%YgzApft=aA;Z$%%Luv9!5 z{sAMVE0nizn3Y+)&&C9RnnKd&6!bS~h$9)SB{e_lcvPnPvFd^=esxrH_Fam^9IweP!niTBxS zp?rRhugjc>()Y$66@L@Bz0l}MqBbd-U+jK2D>IO+5OzEhcQ`Dv)n(vO$MD>@CAuVG zY7J_~^ddMb)mBY)sV-1QA>vdyBEOk>y4e(YyP|`ObME6w5IGH`^}(HE)A=nmZ#T%1 zJ*ti)JH^SK0UGl1Hit%U@jAPL0*s}R6XCvx!iDiUAB=EhuO;w_t@}S#OjNO-qm{TJ zy+2F8wKFXU1571nbVj#wXVa*iBm@KnVvwaAE9}U>Mo< zWkSPd9u~!0gY=C0UDF0NnCm>aWn`SJHMA#>-&FDhk{C!90pvaewaam6gdjF6w#G+t z=-AM5EqH;3V*y1x$dou%;aC(>(0ky-TS7*fxr>gBY8N5BBt)2?F^p zdZTh4rnBJfIXLt6I#dmjkF%}j?XI1K?Qo-BlO8D5@#&az*YgFt11+_m88^iu)N>^M%oEj>)F%?&abZ97^zIX^qk+ zODC#Q9z0+`-u$0n+yfO%JReCE?)VQ}*4*eV-DwtE}&evB+P^vJVv3AK} z6vHIX6N|0Wrbb37q;U=56MGxUp8|;Qo?xWO1*-9m`%2*^2K957nrcC!T(pN@a77f7 z5v$U*;JXo=NNA;#a?DHMIRRWyxL4xUH+9S?LNR6>r(f^W;l8g-N+GSbiqE`b%Qth!;HjVYNE)&a{$wuo>y#BRwC0a9O3 zVXvL6kzYA=X+>V0-p=R(IqEG(0rFdh!K`XE+7JeW*^RYH%xBJt!5^sIoZHLy?2;Dv zQ+W69Y3#M~#bI84zo@(#y)2OG^{r!eT!5j%B~-s?j~*|Hs098B43y0@aE=?m^))Zq%;Rn>add&RJq z3*ufBuR|=wurA19>7(%~;a(QXQ;pVJ@=A!@yNUthEEL1qLrH|wuQJNsE!`rtaCU73 zpJ6@qpu4?JdbDbnHaVr>SM^0JDcD6H8mMX&9sm$S*CcZq>$7#_&j#qwhD4+M5IdA? z8lA!9QI?_=ztM+86R6=jDCTQqALi=%|{Fa{y|VQRnPv$xv+x z^M=U6E(V@nBfp!>*+D&n*bl9QAd3+_@?>`j)gxL{YS!Wj++D{6V1N*HhyZ`_uq*IW^w3zpGiuMpTAv_?=cPf1o8GfDmo9PCdk_Br4A zOTZk_#Qe`xQaH7ECQ7!vh7lGE@=4uI&pDt)FEUmryD-EZ7ZW|Y~9`b{=z z%cxaOAcRpa*va5(`{?^Ua{ zHvlsPn_x(gWp`^& z;&UV7#`4d2{MkZ7(|@N?&;#rLV2q2XbFcEAMM$xh-Fl(MVk%*Z=qY2fg`Z8;V$SE* zYjc(n6~lILnPB8aSM`Gp*t&XL4T`_zD`I4vIPfGZhP>{=#Gd|ld`f*cC<#J-d?81X zhDNqQwE5%iuK=aetkmgC){goPAaY9h^@|K~hrT5-RfY?N{G*%mZaxEjde^NfQc*Pc!giz#SjW;95&i%L=nqaAz`lH_o zA@cEtb<1h$*esc{5*ZuLE~yV}h2HmljjS^1IEEL#(xkPVL%Sn>j@>J`!r%G$eg~B=1%JI_qx#mg0 zWqOv3w6^1*#K9>W%O}yCGRiDnf9r2yUI7}rc+L45J5dM>K`HJrnLSIczQGrkjG$M` z#PrE@o>!ygT;4@P{uXK+Sd)PItl3SHAI@}djVDF)In-XfAMPiGqsU^P(`6zN{;6pB z)$E&iU0K8r6K8!@L=g2xwHpdUQaPFhh3~J^NW(vPVwpd=AtF?{{lvh09JrNntQ#~e z`4UHdWHdR!34qySsKLV_y8alK`Sr5$D}K~m@9T}2p;Vzg2e4Z-(K?^|CmEmgEF&Bh zeb|+&BEn+L&8+^(tZ167*?T)!sfpL}FI?H?C~S%qT^0ymsMtb!F&X+KP3aSBmOmWm zvlmlS-NKL;Q zS{BrUjl_^@+AA4AsM$()07*P7rl7`B!zb4zPSMBA=S&h?2g(WcPLPAs!jXdtW8I7#`nGnPBp z?CS|~ZG#O01>asa%6c~En6yW|COsaU0Rw)2 zQwA1^ttsgfDJf~i9c^5pd2l|NVhpvHLe*f!8YJ5s{b~NV&eEFpEcUUCfDnD>M2H$R z@mx^F$EO%J6mCNq_6cL=@1#Nlbat8lA|9u@;3BZBRpldU3w%a(`71GZG_o%47bI*Z zo5Xvk`%zh$2WKnPIWl@yn^s&6Y7hGaDHIgz|9;R2n}G*X`(jrzSYEDFF|>)mP+`rh ze?+#Q02o}%`%K$Uziv)B3B;jjhmKAX^hW>*utJxiKYJsIDotE(u3$)1>lH~Jqe$$T zx?Ff-COp4u$il#fWlrg5os9y{=PT6*6c_Kvvbr^?NM|NzhsrjGe^URG_&zi3XN4wd z{RzjXXjmT#->jKH>M?*ZZc6HmB%uQvU_T=|X(OAe1`j~QpK#5=B|hwYoZ4I${viri z^-RqImF`2Vm&~4bS5yWa(~nn6tgCEzE~C6bBWk+HXtv`?{*36NK1WW#SAkSJDQLYI z+Ch*HnwyVPJ;;4wB~i%}j#pxQZ1IPtKQYdzSj8gL;$Dm2e%yCJ1LYvovCUXf#zmaK zk4T~<^hu5$D$4AQRYTU2jn%j3v3?WZ_)0T-R0d&MfP9S}gynlBN$s zIYhfHi!E79#qz;|{Zl`Aj!Z~31-*)SAViI?cvQ^|kt?1+fyah6q*8|sCs@FZv=!A( zE4LyHiL9 zCLD;7+5epJMaD6Unbwq74S-fe@3fP*{)h|tF8)cr16$mVf|3)?w)%?55m^UnZJ?Plz`@4yXJ z{l4oXvMDhn-I6D*BqSdF_f>vI-|n@dazB!3!aBqo00_=PSZTy)5!HZT2Bi44-6)#=#+Iz#g{PX zp$BBQ(|I4nTFfco*a01!X!hZEe%QH2`jNKJLRY+k{~@QOW!BYOEzhPtMw9@lDcNv} zmGiT8n6Qb^7x*#t2RCFN)EPoiLND!3Uv~UMyT0;!MoDe4XG4RcuC<;$)CN}^3?f;1 z(0$lcpn)2m8qRF^64V#mWi4~u>?z6|;+>6^pKZcK%f(h73ZmLn@J0gc#@^|KK_QAK zOTPj368q)CCzI(6bz1E8@U4Jt1q$6dB?&^}mCj?+vnuY%T3Ck1gB~BR`g@Btl({bb zR-V4TV84}IZEibE2~4lFSoE^|K(MtuKXU~fC0hRs~JhYOw_j4L)hk(y(rV#HMagf(*K8UDAU%LXVfn3<}1D{ z|AcRZ9>w>OLO*nG0{I0-hCq;M8w*nhQt#Mb$0u7uDFWEhw;1S*p28oOCwf^PpS+rL zT#;Sz#B7tkIdzz!VK^1}E)_#lzfuJ2U~;0USyeDp*w;v3@k$;fz9T#sKinB?!Sy`fc+dJemEnsZwbd9$I++O4MUXR_!mDH1p{I?WY9GB9AiGL=BA$Zs2L}d zeXiD>SKSH1`G$-`6k`uzZh*+FgcS75`C=DWo7|IA-h^=!!>b-3w67?F=o|1_q(3!o zn4`&?N160J3f)xd+>^ttZx3D1wBVTZT)_!{jSKxrDGtA0sy#?#HjVbJsFmpcQmV~Yms~+p*xOw=%O7PT=KQ`$_ndtH&8$yH zfebg^@=?mV^-gHr9H%&VQKP<>Xw35RkN(Q=7hSW-M$=ExZ4=(uParNfzp!aaChbgR zCY<&6ch0d>VMrB=qA%Z7>Hzu=wyjP8hd_(~#IDyc^S;omLZ2#dJ@-t#+c0Y0h`c*? zX1$*{{9>v0B+*uSqc_ac-~xY^NuTq34E6)D#l@>E7^_PI6;N*|;*IAZ z(U|eWxNx%|-T$0Uv3(6)dA8WlJEIKoW7#5kxY)$^gnAJ{3_V|OmIm!9cxd{OwPNn; zu;ocU9|%S%>B0lbz<1y<&)tz=gN7UYCtkiVB)y; zBA{~VNvB~yeqpDwar}+y%NL4bSged1f`>^WGhd^SqTryVV#muZ>ZLF;$!|y;I5%MfbqlKMS4ph$>&-A#VLVi2RkQET%oAXzmPk^-Nv4Na-uPhhrPq7 zBW)YEh$nx+(L=+KfltnmYbQTJ3`wo>3&36_+Qb*p;mL$Fyk3}=AJ^{~E}>`#_;D(O z$oZ)}&;o+HdMC*Q->%8OesNkL0yF#G%pCgitTkveCUU!G)IEDp-+HRSmCXWI`i;py z$<6f1t%0#9RcT?`@3$#4X&PSH527D)BbLV9?0ShPTov5VWapHEa6Qoa6E>+!L=MC( z)1s&14}MhfxjsbI1{SzAlJ4R^nFn)=@8Wk}I>D5UiW7_euzB^uov7IqQ>=IT)(6Z? zDSNN;CV24L7t^WS<=>oP8jlSgs`q1WN6*vR#RD6!$|l>tVI@42)~DW)Qwsd%cLmGsQ-9sxYk2jZ zKDsy>-Qr>iUfA>`zGsAC7%k8j%N98>itGaqhGymG53cReW~cJCW_CO_=AWbt4+m@Y z=wmBWosg`+%en+0KM6*uY=uT0SLHaGx>->6FQ$PXoqnH+dYG3UwrTg;s-BsuBW0Mt z>LVXlMiaeC%0(ybSEkA@G-dEU^Ni^`3O&S*jZw1C-n(qLm)sMdJ;sA*aoLh zCx&k%bxqE(4RZc9m6r+)$fkl<4idQlfrddX^HS6ai2%b#(HM4khOY+2Eb(WglHRX> z#i$1Xy+AHHtA^Kf*5p}U+Mr{}25r?ueVQ(u_LyMYb=0osWqzU8f9ZBC|g|AaDPfosK4A>nPuah}^%|ah!y7+Qe6p zRz>`MuM!7+GiK)*_Ru zFDme{!I5S684!&*)?NYmJw5M;mC?~4udClefzjzCZas^d{s>+ui{xuc-tgL&iJcSi(T%z7-vt_;MJMH$lyAn=&oN%` zvd~m0xv94>pn&V3i3`CIjCw8u)yg%k2@FrmQSS@i{iof5f8j9+FY2*x=02~qcvbe} z>>lr@C~CjcJ+~_f*>~*~nD)uiRLF`*lpsC4Lt8TKh9z_+jb2JGaE{}cx$Dy#&b_JY zMbDEec63I|J_QV6Cc)ju*YA$byVt`w$2$MasJ({9ac{M8pd7wE?89b;y3QNu8CO7~ zhc8qAFDmb)pSKsv1$1r&d$yE}_mXVgLqVT9gPFqjf#Qzl9~CdAKxx}$a&|W3U;2dcTI8Po*C6GX@Gms2 zm`Lg{r(0^Yk7(DdbFyc3;sMzHtcu5}C4Gli4{&btVy6>^FYtrg!^Ca#*iu~xXg8ZW zD`c~B>_E|k_vDDjuy@Y%I48tT?xw95ke)#7Ikd4<4h4fsvCRw)Xyp7v_8YXjKkh%8 zl1K>ME?`0Bs&#Lf$J zABbD@B^?@k>*cAJFg2P6{<8*pFJpc&htyI=CG#P5&u6N2-taK5b+c;_B0{v0$oG9q zWeY_3)#rv}0qfJV^iwVV`A77l4v$UzXG!EaA75$WV88j|brEQl#BX?7VA}P)6(F0$ z%XXm=h&1&zg0hFnM2}2$kq3PXgGUz0^#jzCCL(r`?8X5^Fy_&oRfs)rr&_s-HZL&u zc*wm@*y~hM+2kUPWzv5`WmCV{8z9r;AhwGt@rlEWGFw-22V6RdFHzn+!%sHC1caKA zjH-NkyTlWT%Bl-?ASqHb#o)Gjhfy(9TJ#p~^BQa(fH=V4#Pi0*)u{hWZvJ)BngwtD zl4kKZau#Mu7B2wNhuHoqUGRNH1adO6l|UwCt}8ea>$OKEAl&xe%p4sP3-!QNBns*N z?e_y-1gRuZ+Iw(a7%1rN<(%o9Tzkd}`r!I}7HJZU-0Z_rOGUI9$Vw&>1#ugTiV$j% zrd5gVGm{*^NinDqiK4-T+$lPGKVn5i&{4N*s#vE>+*H!FJ9E?q#(}(iT+vd%k%`zC zDoT!G9Czn{lCA17pzJ=WFu!J?-T#D80$E3IbLWp_H6naq#If}OnaD#GMaST$Lz5ec zFG&WsE%=+=k2)`^B)b`1b%-4szO66v(90zD#Vh_dSdoWX&|50YaGj0kS|XY@t_nA8 zs>j`rBmcks0qW*fc%(HtRPCB3Xvd`INik$(|5uB{C|KBF!tZMSQx-GEDHw5Z}bJgn_Sq&@AZ)rqVg;l6uaq_T& zW$RE9qrfVbi=~o@`P~e8d)U)pc?vJtXegZ!SPB+H%-dC=ysft?EohShPnftS@Ng6; zzZcCik!ldLEFQlkPRck0%M63XaC1@o_(j}NPcUI!e2jHl2jK@kVLDu0{E!p^TCaq> zpI=qL2^K^^(vcx)U~I-1&7m%woN!K`Tr*~1%`0e#rcWZKhcWW-o*X%iB*_4EIb^)@ zpV@DSUDPnK9D&J={l)yWT=OsOy>c zkPEY>fTESKpiy9=5p)!*A(7aO<%2r=s$CHzMY*IXkHA1_Tu zLeM34GgAIhDS64F{O45+CM1)*{obkOc;@an!QnrI`u~ifs4_U4>`w@5ntVx-xH&~k zHVCjW!9~-C7yIi**`8*ICR&ayXqnwB!B6Ai`n&jX+>*2gKH(-Fu{QXho&Q`m@`|EH ztV&BUxh?i-wC2Es^gTB#Ts6JpKu^Kqvs!`<7XeF6GX|Eid_B{@%2;5OUvp$$Q>fN0 z$&49HqaU)a?h1rS7eB`qE6;;TSKprC({!4AF829UXyA$loYL}h9Ai^&OdfwX07y0< zooa+(4Bw(K<3bNU@>(4ZjE9eb~>YYe%5m5LN!I4?1o@6fd9T*2OD1$F?9A zM5s!0g_iivbsi?9nd{6dUQzJF{%op2p5N%02^vWcKHNy7spdGQ;9$ot%(eRVj>H#d zyRTS~#N+vA%_xOOL9SK9p_Rg&v?B(fR{ z+ux)9Qbm?o9)ETdC+l!x{AMLwmqRdP>JZfuK_AlLyrL>9CH|zkl0oO=kdU;M0}FC= zD%Y&Qll5{x(o;yYo*gktm+`J1v4c7Qu~(j|#d*yu^$Fz0}>uh)QkYn51?kl*j&woJ!A=x+HU<>u&2~*`JiI z-}3(TbJ=3b+5d$1Sg=@qzFMzL)a{$F5IQMZmq-B(U+%Z}uJZMWw1qG#(CGEb-ChT; zhahVf;c6Qit`X3!r}viHahNcflxst;E{J z7c5$6V_CiOV!Ek8b(L>K^o#RZ70E-`#dqFyw>M8Dzk#kO&=paY6&-8!O^58y(jX~A z*|Fw<4x6B5;)W%iVG^V!*{lh_rdQ%N5%j09y@rm=-fZSPX*>!^L+C*l%{M%9)7Qs! zVj&Q^nm!HcDAqJVuN1D&|HL^6zaUgmakMSaGNK&vii7S(qEiJKDChq=gLC|WfK7HN z5RTi|fU?&@Pza1@ciSczH1cn=s%0>y4C|~)7^zZrtZt~_7eKgGk#jWT_6_pICf)fv z20S~_5P}jZLZ#imS%XKs%v~pB${{^>4vh$;JMYGTsxx*mkYxp^iLCXM8ai&N!=BUh z0SiUt!l?C+CYz}lq3v)Q@^+fn7 zV?*0^X&~vZLc16AkN@qN=Uv9RTCNOuG*GOkiOHYj?V4!({7e_W^p3n%x@f4;=myUV+C z;#zZ$T>&$q#jS{d!+Br%qn8?zf4HzU$!EHcTXT z>m3WS31|UJJ!Ub*En*gLb)XQ!N)C+JHKK&X>}LFkZ#;a_PqHjY2Q{ouudh*_#}8bQ zh=;~tg%F!c#(?gx-6BD%vJ%i8wZARIr!Lvk5s=UHE4$O6OeXRGJq{&p<-*Z4Oopp& zm~;+1!u+E)MZ0tTqiP~|NM8x?{he3rbA4JK*31V&3Su}oY13(;lHwx(MuxL${CfY~ zJmwOTD<;QK=JSn6|ZTP1$MyRe834AU?_80qu8BVJva-Ha-JaQKwx938h&hzYv(y4@H) z_|>rV#-Pj$`J(rH3rxpV2NTz{(YcZ>*J{yhqQbp)xQoxz9*TH6=^~M7I?>tzX_BH| z+n_cW?3ducoY4@6$3~6fL1tq&4!DGRqRQ;_JAntxiPnkGqCe#Tko$hB*dryGfHx3% zU@U}NTm^BDjROD5u95Ivz4&l{o`;RPI#=L* zZo|R1ES*ge2inx0fTm}2-Gh>6qyXoPLtEeY*`(vr^x&3vEC97(+2h-y`vI3^Qaj^5S1gfeD};$d?% z@sjj66b~r5lNjQA>tG!TbjsL`S?k$r+#~}JeWg8{RD;IAjSrI9LV&hVBMTu;KMF{>%Mg}k%w-iq`6!>N&)U< zI(GHx*Ka78GdsYl-ba?G2+ZQ%x$h*eli#}Sks?8a?@Riyv};JSNNC%Oxc!?2NvRB@ z!pnGZ{6pvv-K^SW^V+1Gy}G@v$@IedzvfE{&>fuVtzMcKuXE`K6a~e2z`B?s?f@WERuVTHJp_e#!PXdWXs&ZnppT z;~@F>1c8LgE&UA&q7pD{Nw7D;$IA_DaJW8>7y3xP9*lnq-U(#b(AJe7lQaa_A9-;3 zPFyS|mmJr+pj!-`vd^hQjCY?+iVH!U0_LA~(#$UYs7f^8(VSm-DsgZf*k^QAY8i{p zb0DwAfTrNshrcy&l_NnP*N}a#gu^fVjq>WZxNp1FMiL_Y@Di*I2SnjF69~pCCA(Fkx^Bq#oh>`#>N>=-P}-qICAdmIvXi$ECSurP2C zsQ6XtPm#E?aI!&%Zt#%BBGS9MiB?uBj=TH{Y`CW&o{(3iM(a4{RnAbQ*rl# zHK>nv{4MI*t!eY0H^$AOsLrhc^?!?;B+%?6*h@i`37)W3s&BNp>-|IXrlE<*Hu(OO zU2K%s(Pvy+YbYkGt@C1^C#U0Y5`ZagUJX1!s6l!`Z5i)rMcqMuH;fF|abtF*jEkc* z?f2#kVX{$xmJHoUr$s;aj>9UxS-RZ(3d4_m!KT=uU_R0qJ_i7FnZA^;NWACM?_7E= zqT)5btih0!pgrqHG7xo~GiPAmR&Ew7&?qI1Jc;1)&z+@Pv&9#8ZgfS5K6L8ksT&^C z5HZ$OveWx_#X)U6Q5Y0NnEHCV_?5pU0H|ZYFSbh9R6MhE=0I%_w_s6%eM_elk@uW1 zQgP74IWjp>0uO{B)!-0Qe78x^;7=-r)RD%F;m4a-`O9da`n%#;kvE700HdrsXdMn^ z&hF#*Rr)k?smkGCTk{_r*sjSYDS1j<({mU}_(iG*sa<^0C{5uES%JPq(|ERJBsZGJ zAyNZNEEGg(E>Zs!za#_dC*Y_Jikf}oz~%TX5k&*WzWh-z@GC(W95j!G<%D^<|Ij@c zGBX1P>=6ueL%?fj;;_&fOEhi1_(Ba!$AIjJ9mr%00_eX@c+Md%qSQr zMeZITLTJVm(Y0uQ?xAf0xJI z*W){o*ayeo(^?1ng(92!GIe+dn14SY2s--Ioo!w^9?e^EWW2|fP$oGR@z2_@+y@2tkf$iTrB2w-?a3zV1Z^nTmyH>DU+B|Z@kb3efb3D>O zCdGbv;kEMIwW6Di9}?IY9wP5=Wy7Lldcb+Eocu3JW~<<=R~uh)Op;Px${OsS^>KD{ zW-7nFU?3!QzA^Jl6o*%nY+~sj%Pk*Jk*dtc|7_lMLE*9p;E}P3%tyoL`l^=gG~xP6AFkh#%S&n!i0B#eSc>=!9kvta4|A*o;Q@ zllD)3KW=V&MC01u3o3x}0uqfbBUu_Wr+3`D$;?2`PkY4CE+^+}Wc5FNo6Wk>S53Zr zm=e#B3Ij>GcRD3tnql;JxE&iCQlsR8tm~6+UE}_kEL>p%9a#t;?{3YMzOBLf!Tgi5 zrV;Oe;xfFJIsTNNf)DGNaJZ=_UL09d@@*_K=JME!Y-9`GeeS_jboi8D#+LX-n4S;$ zK3|v_&#nN3-1J64ON6IB>$9Q?qq_GM`P74F$aSdaL)ccusA{Cj9QMP#b&{S1`5-1t z<+&sMvlsKv2jVf#+q*c?7fQ?AvZQb`_?|5wtp&r$&3v%k7oM-l?~qw&4F)Qi{!+bi z{`I==Qv2{ABna^wERnp@5e`s%AZ#G+X%TM4gQdW=cBQrW#)tLugOzv(zy>4t03-_k86G{*hp-+x}3>?C?Ay*pRMDVu&jBJ*h*n0D~1(CT09on@i z$n^PQkZqt;--`WHDDb!caJ7*p*e5F%Ii@kIw?Hr$%%Dl z3Jn3r^};t~E=Z<-E928%Qj3wneFsUwZxxJVomkXI?zQ2v+I}s8!=sX5mQa9Db-DLT zfLf*x4go*7uyRYy+xw1fz2w()SPe1M-=LoMY>c&-jV-p>&pt&WT|Er3$Iep105F`! z+;mO5?Z;^pluyqdL!`j`j@_DDXMQG>&W@R}2=e!hhK<)WG%*1!o%vDp%n4WOcNLOi z7**1em2hE^=o%cvP(F-5G@6GA*s=L%bobA%{P^F$*9UKOPqr?#RpMUn{w+n1$s(?= zz!vxB3e)zkZo5V9vK8rcAyRwxr;jdRgVCIG6@#f({K@aOsHw98j zV<(5^?Od9KaJ zALyBFuP=cO4+K_Bg<`JMgG}~6jd>*L3zRL00*~#&A|#{7XQeLQCWr@j+0$!@q}S$E z1;0RpVB9aXz{2P18`l3*>q}25I~p1FL;*+wo(I(>*Tj z5M~YOA?2eSUZdR(m37K>10U%J+ltGJuLfOVYxpfzU_hDP?GCkTq#5bHd`PH)MA$k#GJVs!qeDUNmH(fAtbs!2G zp1!a4Q!#@>Q1S-<&)-Vbz4)%UG-AN{hOKlJK|+Vlz|(WkTmjQe@ngZbG&{u>Q!L!J zX^${huJ8>FOAGq&YzO`6d*A9MH9MntOF+S;7JeqXt;iJTLQdBQmRP?f2{SRg^*3?w zMx>@_A@^Fowh0UkwKbb11w&It7S(MWUFF|e6BL*#R3O{>Pm}VulX|~()5LA*xZm1{ z4QG;nB5}y;c+Ymm-tMS9QQAuBWbHgRKJoAV%FhU^MP%@ci$6K~#M*^SZ~tw0?qTv> z!jX>g%{BX!SRHSWuP%@GsoQAdKPnYO}O-n;=lBuX}yBju?2@eH?Aye{0;briPJ27L$cwNlXMH!E7n!cuEHU z6>nm|(>lvXK=$CM6%U4u(Jw=4|L*aWfQw{$BH2hY_vBfRcem%3PQ2x{;GeAS9=S|! zix(l2C!TcC6~vguuXH?85%Cb*^9gTExXl7XLbHxIit~lZ6nEhu=7m1)_y&vK_CG^pk5 zZex0!w^m*Xte9f(S*D=DYf>we*#g%J${qEOPrn-$#jJ^ci1Q5M(L7JQy1zh+MWWscGh9h()OE2Q_CT z&}f9$pRLn(iKeSC&`lS2Y72>1u5-N_wVeJo-{TJKN*avE!Uz`q3u=vzXoZY59-z z!?cG=QTA+tA-AP+UOriVOk$CqCXvP(4Ym1kJs6W5?n@CpGc)d`@|KZZjal4UHzI_H4lT7{BfPjEo{WZOt6^rfx%s&KqE z@71?(KG5Qr3wr5c6f^#7nq5 z%HUxecQuz$WWDqATPTJ1yf>Qu5sln;^RJ|nkf%EOj<1(`bf4iFQiT04qhhQ{IHLXxwRX~!hOkMZk!PI6d=o#-^R9I>#*D6mSzQkn{h+fF12@8! z0+!FKPVCS*BMdr9t!d7X2{RT5S;-_O!bC`LQe218rjkgBrRS6TmoRhP7y%KktxwT0 zq_MOPE&^~NnApnANivJiX%7v+U*}GQx;n(*_pem`N?%;O)Q7`RPSL@lYEdSXSv_2C zGyU31MJKk9OQj}ylo<_#Z3L3pL&>yoo+~aCvJx8eXYfIBEg}UQ4JETL4WEAK*+2eO z9hOx8R#)cW%nIrfALb|N#QCn>X3qOopj)dqBOP8MBP@K7sD9J?p8m613oEH^9M{L> zl$Tz$%e-Kwf2Zlx?;sU(Nild*KMm7XuT^9ZH&AP!+bbRT3e;RLRRD^L4W6C~ZgMQW z?6Eh@safi9uTmNe1Z&rW^(^kzZ)PNfH1bqr;0!6MR{OXM^5y1~5?Qct-mFZ}(b1AX zS5>1{krOo4XH4~NIbHb|%r1*|PIne^GF6|8AmO@w(~tp5ClZ0P2^-x@6-O|mkyr~u zaUF+oRVI}mljT5>CKDHo873LC{KYyjR{&VY^>KoSpc75#TSw?ft$6EA-9NJ)JKZg~ zgQ_(u{NyfjV&s!uRj*vn;~De(I{R>_&LuNnm7(05cL8w*Bs{#knq`)01 zc2BD|W*X>HM9zjx{QD0(7(Jd&@dF!j8T-o8F`qg`F+jhGs4eVGLu9i#{IIL;CCdL* z2DE)OYea$=Yd+K?gGED5sCl^`Ws>TXA!vz(tvhqO><|uxTg~a>!3d(hRZiOY(&NCH zTI$5#qvIw1W7V&Z#!^GFZz>ZLlf?{RK+1=-b8cw_)@fHj*4DUsltK$NG zZzgrmSg7rs>o1_HR}&J7)|Vv!Q6sGpzKb$ZTLt%b?Pn=JZg0+i5$8H3^nJP}^oI4$ zrg#{M?i3Jd7oP2I-!M(fRU{x!(S4?%7Pq}@b00$D_1>LyQK>>>7F8>qd0}xQqF`C* z$YEzphG$sP0|T-|Ip+)s&#ku_jr`VwtDHm!(-D8x^18z+1tN!`zCsH3-bGg*q>7=HNc8hvF1EB5tWkuMH*dcDZ585ln#j7MjUS{%W@K0Vknb2=@C|GjLyz-$K@e}cajvFR*wa7611oBH znxj!v#qa@#D)+0$ddq)6-pc*8qil`>#|gRvsmc`Rq9jS#sZ8~ zO#0@wu-z=58Fk4G{X;Meu9`R=HSvt5AIryWaP0qcG`XPoxyB~^gq^P4pxRM{9$$&> z!O#BAg)Z7imS(%;BV)UKq*_NRiWU#ub?qfFKu`E&fd-Nd#bkZyo-q9=YY(oA_jb~b z!Sig;So+PdP#!bC-vZOWx6#(Bleu*C6Ad;WB?6E!Wu|X3th!jrx!o#ZT->-njaB2z z$woq{5qSAEX%wjlLY(@BcL&uXz~kp5c3GAw#42cg`b}^4hT`aCtxx?@#<1OoE(_Pn zHQ-pzN{H-5CQ(1U0>VI?I6|c+-M^O!>{uMK$O1*H-C)R53-zIjT2 z=0lpLxcGJ$Zme`lBms3QZSdYUx~#O9#&IY?80GK*oxHl`$41hHdGDaNyLkGGU3BZs z!F(EO^FlA4K3@5vKY+A1C6jo23xf{I-|s>xd2h~xuy6UX5 z=nTtQoRmZ=2^@ke5CY~>CEhd&?iPn^u&@kFDasui)47}yF8V%w;^jAJxp+PJ$_(WV zNo!Ff)j<9pucev4l(q=)Xdh)pK-A zQh#kgfNZUDPXT8u^eqI6L)6V(_ZoSEJ!8V$p&{@Z!_bwa4)!>K_8$;I_m{+rPtQN>(onc=BzT@&cHhGvFnBRa0&Aev zjN=yABy|*@x)x4?S{m95^W3-9cn2CB7vsuQl{j|>YKfz7^_{p4E1PjiM=_vweTk7V ze`B97*{4!mi^WM#qy6%PI7i(8m;b&f;2LBrW(YyS=*LRgSHUvhg1-SspsbIkqTGi2 zk+)zqki-9v$r;#5>%M_J&5u2nbm*L$@Oh+)brR!k*Ql~ z4H2FWnu}NS_c~YZfj%lO)jBgTaeq%7pjVYrE5B%ejoZ*Rs)_e0-*2UMzT3cv;cUbu zU3SpbptkpK1!b-21;1*4M!i{a=<9J7vt;0zB#liG!GOPNJtEPTrMF?+Qdvg5j+HrC zj_7!GDZLT6(yFMRrVFwZpC8;zRG3Hvn}&aT<5bJ85+nPj?S19P;n|_C4fUyYjAEiA>uH(3 zZj4NYo&={U=Z;-l(4T05bpIUE%>rw~=8z}V1`@?t6+Mq|o<$kKR$PXzrKP((4TS&! zh)cMUc;>pgD(?$9({KYxVworJ-zPQ#<)H>XBYk8#>bVe_=D9U!fuTo zQtTYlaPR7dAJ}g-49Ra)o1~&@`e}V-kDwkC6$1@=qJI1*cyagNS>RoeaBa$1mM+^J z4kC>fXh8PNBjAsDG=p$A3kzdR4`Em4^anR%c^csGVvt9Sh~k!`R4D0Bi1r6Tk9H%^ zA|6o->`fhLGv;$VMW2#Ii@Q<^VX^5I(c?ifjrcBj{w*g8)oXTrp<`KmP@~Dt9N2nx zu}Fx;3?tf-S7IaX&Pv5?G$RYTKo67aAH#9Xpgx~&alNqXwPnJrV{J{zk0$Cl@9~z{ zH-d2^pM748#71`44W30}gagw6#m^tD@fbCjuY;HfIHNMB5|GND7Z*f@b2$T3@nyk;m)lJxtDQWJ#Qm2I@UXDUf8DF-ds>J0m@H;} zM^+!l2Y;r>DV`cbKH`_PEclocl^PU}YA8pR0?d!D@^X!E3h*I;jzDWl$#t;K$U*xv z#+h2KbcUqs7fY4)d-p&e7XotN}{8V5Gyg=P=sEPtrp1RK7X|4gz`#VIDPSbwIZvi0QFCIhHx_XNhs zkg5Test22#1QgeDWI{iU`rzuZ4niQUAguNU6X&&$8gXoQ%6>^79p$}a<-5v3HhLe0 zPKR;6a3(Ic$YdSmU4}Hk^uA*zRofwgQhnE6=VzZb%hb*=zmfYWht$4SwN)2u-W%Ob zi0IS@@p6f0+q}Zj#laFC`U%ms9JzH)#$~#w22K{i^2EYu^I3M?xj)6=&}sBw{oDnM zAwD)LBjX?ro$VxALTvwS?mGp&Yq)k=hM=N5&EUO5hu_H6xqA%dSk_{62G|F_jO#$r z(K%^o9h?nl{`?y3XYr)e!zMtI%fuA0u*y*^e5}k2No{*r$wbP$^n! zCy!Akh5|s|no|JM{M+*O!f5M^Vb3zvAftuFOF!6qX3dCG6y1=z5%3y5jb38W}N9!b7z49G&l&s4z zE~6w?`akfcGxZR0`c5<+Zx|Vv)Y|lrxmIgI1?}q)8u$#vqM^ZG>Z;0`sjbBmz=K%o zUVC`^ODB|AuOOJodz+IvXQkv1l>?V+8G48?3w;uQHfz?*o!RLaboBUFozJn0$L@Lf z>+QvX-yP^2Ph4%y9t!mq$XYBJ`}p5Nwf=CPCCvN%k+SlUMTq3Hb!>zDzlE>i!yJyV z=)pbl)MGmvF%~@?rD}t4X;k-5i}tx%6J3ThdzD&o6d3jz+K2Xmkk}HR?Gxk0sVJ{S zTL^5#E98)o*jykkDP$bQ{R30nm=exO_}o$`f3a=wg+|b+f3wDycx;Sp*XP}Ibti!_ zc-Olo>9-lW&k^LJiQl6yFR4dZ!2r5`O%4;8-d;4u^B)u#{waSj6w-ZkyzAgqL0nW- zvXBo2rqGr%7e^r5Rs%i=Y;+-zU~pvtF?3n=BmBb-;%>QT(S9fi z>{;^IDc*W4z&@zHk&6}al8fidA2~Can4}S71fE}S4a^*HnY3{1tzFL-n(&wAMdF%% zSf`fmB}I0qU+na%XQBVgThz_xlPXZRyTWq4qifAv!8E*zNZrasd{j&^nhABdo(?4- zQX(2zp2+dnbMs2x?Nm-@zQ~{bD%y!@xkeS9MZ2M9>Z9`0qF#=4&^I>|JVzKVT_EHah z)IMcdq1n7db!emgi;0~<9wQ0E%anVY=ca}34)@2gpv9G8#?kw^Dzzi~p>N>!-yYAa zB2(`R(h1KiS9;QjnQiK@-wsxFe3a>0ih6cL6D~Y2n+Z=HR zdttbu1{|e}{Vo%b6Tnkp(u8#odkz3B6}B)XuD#|NYM(J-e=C~ca?|LZ#^;lw&8vX4 zksZ8-H<|qwce|yKN8N-~p^{2bLjtH2+nH9xuI-*RBbd~R@HE~gXJC@WmT0o((F)PJ z><5$1uyi|@E2Sim6#WRl{v{wj%A(5$|EE&{Tv=B`q`{Bt-f~GOkqoS5xnrQ=t-bVa zFf^i9swimD`gkiI5*n4ULdwu{-9|W_{(X3Rd-i(98`k0p_qS6D&jm%U!@r$OXisxr zQb`c$^(zQ&JArV8xmm1-L;@`6m}9!dmoP?tp*54tLDa2s*3_4}wX! zPGO#Fe;5!Yf8jB&$~E~@`|LXy-mUOW>~&A^39=f_j%QZA*Z zT6NwD67C*5&|Fo~p`(J2GHInKF4aC{ut{l5U?0X5E#xr`TuMpfbh#VNjmnFZ4teRL ze53F9jbWzNSU@x4D~L(fU-(Yq(Bc2{0&p4EA@$;x@+CN5T`+JB5x)ath;=U+SGuem zxw55qR|7%P#XIm+m6`e8?mzP+v9Zv%H(f^(re9=plFL3ou0;;9#E>eHFFVOa-MCs6 zw6bMb8I(LROW(KHzYo8CMJ&@|0t^7gZ?+(j!<#C%n%&q%BHn4>-@^1`(#MVGT;ko9 zIz;&Hjigp?O${+qsZ7!UDqYrpX<4}8Yy51!`t!7LzY@BXWkrwh9=7-3?qp!Vx902K zHN}D&QCzVS?rK9{f&dA&N}&C@L19i*7-HuA+(=S z_a2_|TkQ9{iEp6`%2ejO-SquNJ1m>$}A&E(_>Li4%#P@_CZfpguK6ZM@n&bTp{*CK~Q>`B9O_A0oRI0d1 zY|EmS{xeH>^GYr^5Vei)XHvg@;4sW)0x}g&&n-N7`iZ!ERi=*Z4mxzPH}pRJaCfAg z0GC=;%g|-**p}rG|2`?DhY8FJ4@w?rq`!$HaI3Xoc3Mr#wnF?$c?@sQ)v=)_>wTx- zW%Td#qmGsdUeY-i2Jl5P10cT+TF;@pdoA8&dsBnf7B}lwimp27B&GEN?j(#6{K*oM zpaWCzJE`TFQcd99tK09-Tba=7A@nSU2B9)O0cV%L<_I|InFZRpw!Q@G#wBtGm)`oK z!&zU%dZ*k&{W~V$$=K8ht(D00bmsn;O-E}koRK>He4R&ovmvNR=7>LDn9)qprdRtC2o3C}bT!dd z-~a0?cw=13h7(Qz%4eE%WEiT%d0<(5CwTw}zqqQCh5MAnTWAW=QWz}tDxhjar#__iUzBjd)gk!1Da#M z2059j-;WwNEX6T$lWs9n3!{eqmvc(yh z1dFUpugW8dQ0!`}f|kF&Nb zu8i}AhdPbh8XzZGnS$aScLDDoUVS4vem|F53i{wnmBbuQgx;_a{D6t_B|E}m!jtrN zg`e_>C>E5~qyJGZ7{RkgZ;pVVwXdlUV-JgOSa(dg7~XfUhDR_vCIzix@#-93n>FT> zvDI2~KvUu3AU&PKo=Qq(+NoPPTl!O~oCZKu_KNxCIW%%J+*D(7)@^ZCFIn%NNObsE zyYb*-?u_mm^K~hkoCi|<3|uj5JP3pBXOGqUb%zMD(XL1MJ@HOv12j{BDW5uJLTn?M z=*(rfNs}SRieT2gM)%g!7k${8*g4Kazz5yFBv!Ic&nXzR6OIXq*jJ>Nw|&JqB;P|kYOl>rg*E=ZsKr{n`l?d>LuB4YCYg1YN^vd=m3%)c!p4|N-~6J0ZSj|wnt#f1 z7Hnw6lGtaf-~8X*S815~mzua|k?4!a~B) z+uA1YmE*28UF-PgrBPL&UIaLg8Q_d`og#X03tNY@rT1)HjLH+H_|k4j#&A-Oprxbq z(H9>#_)uxVuK7@@pSFaxmBcUDQRkz!;#Y+OUu(6299^Sn+_i0r6dwKg$b6q zy{WL?T<>Tl4dbO1K2P;0(ZyGe{|4;(-92zg?Yox0+BfQ$02&yLQ)mt4! zN$viyB%y$HjYa(vrLJWiphS`X=p`YXz_(gLxnR8@PLGYM;l-;GmwwNz+ieEJ4Oo`I zM*nm<6Q9dTZaCZoN2#c?&!R3l$rvr^NcPRV>9%%&Ka=Epxi?w)^GYO#z{@C%4CZW+`tTXnaykHiQ_mXS9s|Tzb6(td6DhLBfm* zm=RE3{FREtVH9`h-Iv&8y0je~NS z!xD;zA4#QfUJ3bJyx`YC&NAOGOBEHd%k}!H{JnU#$V}YqcF_Ciqi@O9y~{F3E@Sak zjy~3OLT^{T)DrJucrF-PO1Nh5FPyritr9a1o_I-R*uX;i@HMzjVhq&YBNM9i@}3}n z^#l#}JH|(-%}rEPAOT{?0&2uz5y>{h545`M0hm%0%;D7hRQ(>@eNBfW%A#A!n{#(# zZ~y($J+EJGL7=ssewlaYzqZTdm2A-o^i@wEKbFhQzpd^jGW%;kDe&O};X_#ROY;)C z&YskNX71mcL-DGReQb%v1|0$ksa(+-4Sco1zO;C9YelB4(tSh6Aj)D~3K#97E}ZIE zQx~k9n-?rw72ZoPUiDyD#bo#f&W01JbdorJLOvdqIMpQNRaf3$$mfFcHvtH2d!*Q0 zRDg#%2Yjn!B=a3xL^m>np`<0wj{|<(;k(1sS<>zY!p4Pr-u;EbuuB5}HozPH*vHLJ z-{V!MQ>xR+tcwWF35#&#BKGdm9-0Mx%LY;YgEXvuoWi?`IWG=~MS5_0tAh=tKq{dj z8;j^BBXL^Hg;4UY6G$;+v7?~UYhEy+oHBulA6oUl!G1eT>m{e(icV8p6d-G>>$>Rf ztF%3l%DA(i-R*sHxz9bvmehYBgI|Wku_3BN{)_~B_F-KfcAeJy|G|m3Xst4J@xW~F z>xT%l_mzr*7+~>XtixrkUxK7V7lPvr0FuCHmr`FSis3)jnnPDfpyeLz(YF6y4LuJ+ z^VQY$DZpDnUR^&y`lo)iX{<$q*gp^8skpDVsjy{AYLHjp&BaH8YzzhExmsBqhY>$4 zX^7k(WwYhKm&v~A@4?5>kCD(YeROEY1JBhL^g@OJQU>S!Aj!}VMBe%WM%rX6%c9Mo z_$%2P9U2e)f1f-FWA-23FsQ(mUx)^Q8chrBLcbOCUZrE0)gIv4JvYzy*aqfthliUv z6@PYBFTMO`Xbpp&l;bGT(*TKycYpKWv*#rrR)2{+)@3oVpF!vi-IWv)7g(DfVf_V# z)fAhUk;X(pEg{~Im@50kIT-ZJ-z|XJro5A53olOs9u2kVf)tNOwjKJIvTrB*CK+CC zQ+!We(-ID*uJs3lHsh3dN+SAYn4|i+b5niviFdn$ov$#RAw9zdS4A|_k^X%UhCuRc)yEMwg7EyA5e(}R;Ei%Yj+rNR?hxleuo8)+NC3kl8s7Tr6e+ekE?{N3a(v2`QvlacCGvgm0?fN-1UvPZnX- zORsG;FzB5S%}8=f7Y?;)rmtl#BJ$6YW2ry%i~inIjZ6nNV0bHYM5~7;;sQYMTCXn1 z2JUdWsU|JP)S!O%HC-)(28m*`j8Ow}vYVK+53;BKYaE>A<@#vOBZ6W`34@^f^qX|e zg+MJ4a#Ui*?&2uH)Od}y_RceCg)b&S<(Dur^*ES=nwf#ZrZ;#EIrw}Z4TAuvC&MUq zl^!B%6qj6l!!CJc*Zxk6rwD2;b@qurSwRf@Dbj_*G11|I;OV8z416vO;6lCAkivRJVD#=y;6gh>_#R}w90Pi)jfAA2v|wJ zCf@IN0;%c)ppIUY-B=F&GjdtPAzpP_rE$jL$u^Wd$X(N~LG9>)p-Mu_9(k^ZzRvKo zK8J?Wg^wc)OsYI0VCU>w6_txsO_?UKcR1MB7bQL@7z$9&4l@2|rC5Et`KNfU=Znt= z(e(NyPXp|TQS9!k=)3v%08cd9ZFlAQyHhj(e0AQ$z$+VN!MUdPCVor zW=l{_B1Q*7*5%RLc?Y;6{eu76@>fXJv|R=SyKv}kZ=TJrvX`csP`n=s>zUnlKx3S^ z4C%VBRVXPh8Joz%Gye8`SK&}!vjGk8L+igw09yG?!!sRisQ5pQ+5OcWfo4Y*>WdiO zp5>^eL^*dmQpSR0&E4fY$R|#w?1st0JqB4DRP>|t$|H|6bzjHSbOc)O%xlykOx1-9 zT@^ixUVgu3%stbph;36e)ur*lHmD{U+^Losg<>zm>@&h2>DlCq&Zyki4(sIKqQ-}0 zE8ZS$PNtb@EMXl?%*L`*KcXg7kA)q?Bs!DLB!c$DWJm5^=gr*-+e`P6sq4QQ{MPAX zy0e&G3@orUD6~==3klQRg8Pv^a zS-3QPRv~Zn71bG1Jn_pYB-t+RJ6;C(&f5KZz2)rBFVK2XAivK*LJzb@sf*e37O?M> z0sFCfY7232{HjuS`qF>GW28G2&o6Uj(cauh$EqkYNydaj*kZJB^D?fc--7&P%jOwe z-z{wc4BPXrysU1S=OmH@1+rb)Ew1;nMM(aRd+Nm|j zm@_<^lPOB!>!WLMpQx1WSMFiB&0>lZIn3Bvrk(>V?XL`adp8W?Ggch%Du0VqNiKH$n5NbXy!FG0M^PL3 z^H#hc!9merL&R=sNVGwNJ+wtOne`4^mwoJ=d(^@@=HP+XukURJH@q6tiWX29awi#O zhpQ7YcyGgPf#=Up;~d4JO_-Zy4e(y&=Joc_SsSY|(NfuH$cdL~CODG3#7C5Sh64*y zE6=oBE_x>#PbJ#FtkzS zUs;SVb;!=-zHT?bqWAdyXb~A8vbOEx^9F|&h`Oq@U>2bMJs)5=v=4b z^^BM-a*W)6wsQWM+9JO-r=y{{PwmKx=6=B$`QQF4fhV>)>FCbo?_X~n%DzHFO0>O= zGlpn0p%vHEQNLxLDOo9FlWG3je?@P1rS<*sKuy!1!Q-bvQ($7%1-5)`c(=72vkfFX z8#v})ow5C&S>QkbuQ6a_A}N1T)Cj;lwfOkwvQpV`2uQo*(% zsz2g?{Z=9O`VY|p+8Eg>Qp7O4BzuNkPgUjV?ZER}){SnQlM!QjAmA69|FlX)ou5{n zK-YLkP-;j{YuqHo15F-<5#7W`U#w=$2Lb=j?7<*p*lJ5#6p33DR8se_Hr9(z#o%C+ z)E?7mz0?pw0j^nhY)!iqp^qj{Kq+GIu{&=_PlGF=>_}E}SmQB&!T0d8<)na++ix;pT;^hWdXwbbPNl z8+;6?>ilC!9DPhEC(U1HQ^IF}zS;ICqA08`>j3J^qVC2m;X#5}+CK;~15)^_!rPh&@6lNbvJX|^9b`Wu>nKJlvi zLye=}Jli3rpD73qY3x+!oPb7|NZ1BuM{yS-A)<}Q45Vqp#jAtgLNQJb9WCZ_kET9~ zVjcRQRu9tN@U|Kd#hxU0KcbrcNGZb~#tLt0bf!<-AuP6%9KN5R^wJe;c3Jd*cw8Nw z>Ja3LeFGL6{ln(nlz4wPTg+8_J)|a(xU+EXoxWMDrg& zpnkq{<6)&VWxZ&`fmSShm_X`sE|b*{mDS5vBzWsdqnRpIlph`(_&&Wo`P9U=R70sp zv}9TL0(q6L(~=`c+n7-oy`NQNEdY_#CsOxqHkCpAirD+A$}KDxHI*B(@E2`+EH&FG zrPNjHk;ae!UglU)OFcO;KymdNm<ByONIBT+Q~He&yd&Z|BD3+&=#e%` zwcKQ)wg*5nJ-J1pfVM>G8rNB%ryck^E?@@m$i3e>BFGx*AL^3E28OX+}_-LnE zEJ962w2EItwrN*le_yeCCii9A(=Oq)qFpX~_o?PWqUwr`MijqPZ!<~bWpHV!Sofbl zJ%vgISESFIsm_duEy+@90=>X&2}jb!_^snu4RTuSNi|u8C!>Z?Ydb=yU-F-3d}R$^d3g-)Zr7UrfRl=*c&~3>$WA*MADJ@iT(acW+H_&&u6X#|ize=pCwh zRl?Gdi&m%&RN<1bA_V+F=-kHtk2)|f{*O7pdv%cMJa2m+vzx+o3*dcJ%ApQ6{+lpl zk@XXihh}KO{s8ss6eT}4Lqm2uvT?D9hc~jhzTf`1lf4x-YjEVJV)EjRL9=};4|RuHoC+J6`vG7GedV!Zy9Z-oZiN1n+x&VLMuVnl_%iymaAXG6r|0_vcIEYlgB^DKvSm~= ziCIBf$nJ=+fB6njVU4Wz@vvX!CPV%&E_=gkWn`64+k?-4$ACVQs7EFm`a#FL*-iIr zHFzHq!bzj-j|rbc$DLcFGjRiGHux#upKgXMN`_J`)70^ZqHwfO^}U_bZ*I&8!U=8< zz>1Q}q89Zu+WO9q*+azkUS^NXGAKsy2=Aaf5!aC}6W>c z`0s{_cYgVLg-1KfkcC4KQb1=B{aTP=6&gaD{h?qK)ONWLJsjWUNWXGdAAdy?Ohn7$ewTh*3crG z{qo)O;DWX9n!2=&2akWn)n4bFHD_=%8%p|~($bT9wXAV59&uw{tXylhH|@3<=|59n zV4jDLJ1#1-fS~L}o5!EknL6aIIQ|46l+g~gFHsPXLC$z`2_LoNzyeu(m}Rbj8k7mJ zA)Tl7O<{&WLP!gSi-of6a}Q97VeHeH*A{2TI)v|@s{o_l3=i2Yn7M=qw6R#+<8C%B z6YbwCG%)zwU_~h2eCPc4R$myeu=?jj^*dK0XK+Fww4jJ$7*3evHPUQtSo88eWkUgr zTzX*nGeF@GJy)c|9^;rBVX}xvMDvh4TF9ymDuPuNbU;%uCjGl+Rh(=Q=j|a!ZX=uW zkd;3P6}QZ3XxJ+M^S=Q4lEVLHu6vr#gtC<+n05U8BQ4|=zuYP`!=|Z!`BNdiqfrh9 za-IBXTh^C`i=St1XBL2n00pTed4<$l7hyPZ$fFP29}Jj=mgv>GyJPBNUX^SMl7-uYE_ zqp4MIdp%0@71BK;*!s(`;ID|9=I5(j;H0JR-T**d_w0&EY9#i@XwKien|OBNPbj&P zjZYEb^`7fKHl^ADFEb#vX=4W}cNw^B@;_VzNJcis=(?~Z`AY=djA%S>R@Sp9!MRXE zDXAw|?%RY_1%L9b)6KVy!}G2|ibtsqUE3tJgwv~W$gcm>&egv&y*BXUr5R?;Led<} z+a||jwXu0S%*M7NjXH?DrMyJu^(Z=RY&OhhR!WL#Q)(0{oDzl52_p^_waj}+*D1%- z!#U5l>v{f%=a=WV`*U5N>$*Spb>BaHzn}Z_xhat%=Zil>Dh5V$ss>^LPA-O;d_?oi zX)spt5C8Fuav)IA8A!twI!g(~mUk&gu$-(fuseQTp6__$k4^|a$_`~5@GHq5%G!AQ9KCzRxRuZQB>RcLNEAbA?`U zjuh+sQM?rRRs`*&?JX24mH2mMBs4S+3D!0{Rrk})6{jxlRmGkQv3^Xo-n~|ip;svP zi-IMPsqtAXP^>x%2mb)0OH$asPwLL+$nCL?Z3vD{A$Uw?HLT%`q;g7G8n&ljKxr11 zSqxTDY~0^LPgNZyS=+rQJkWzkEl?{*@Fu_O(|kn8zamxa^yQ?VyQNdtk;9X}>w@AMnwImHt?DEY@{VYWu zmScGTFk6srJ%xhl%)sGixHWV~bHs}Uy4`2Enh3E^=5Z++_)Vd5rz$+VMM%=;QAIeB zBV_yz1DkzQMC-s!E7YNGO=4po?vH61Moy)jS+DhirJGr%<#u916GYGGTlPaOUX3fH zbov!v`}kg5XW6;!1PkhSUP&6i zEM_x)u*GfdL5ka$6n*R)tAq7e%bn1=;nVUibBXdGqg#X-iyC!;L>M4`t0F{K>+e`> z1gy73{4HJCv!gH=!40H+VgPIDY(Y=qW*EbM3ueqLHk{sT#o5uCS*UTr1ShbI*+ysO zf%1ZS(JNgeVc1=3Ps)WWJbC)Kg z`#+5LIaytCPkeoJdLm%T*#|{1qrC?luVE$J6X;{1Fbj_pGZC2!;#3n{v8C-v8eX?V zjRih+Bdfg~vRYi#98r7D#E zyI!U8UmNn+V&Gj9J{}(WEG|3#{@emkb=w+NXDovbs~4OihG>9k&7td+rUkuNhZXFC z-Y?e0mNPJ1M|qzkN~F^cJ@Rr8-pkUscl{wrGZ10B9-7f^JM!oRs;NN+v!xkv-x z##5WUlsc&h#X|Y8){+Y+j0sC=qZ}h!cW>y9Xx{b#PVX9XC^lgIaub~?h(99voIOzK zDPA)s6cgd@a&0ZC=g=wP9E$O&%P3;Ev>+D~TFF7e$1J`7D zmaerU1^zrBArgr)?wLJFexRS&Co(*(Ow1bz3pw z6}c&Z263Ii+&@G~^pWrp^sD5=(mb@N0+$9?38ht&_*w(-;4GR^El<>uMyJV1YW9VaQ)zMWgDk*#do#WpIij*b+0oXoH1BNax* zfDePj)r9SX8n^t{@;ct{bpMHgO+QfKkGXo$1AWk*tR2g{8+zr${YV%FpZ}<~7Wz^h zPM*Bpk6l?{P&Rppq+^5eAN>>L%g?>X%1Z~r6Ls1*DfSkk4d9&_le^aJ zu}07#WV=vw+b~8s;kV+J>Z^}_ggSh^Ok5lK)NACJ5|Mh*W=J|Nv(3Sdx9}gj)JTi$ z(ee@;*sl=%rGhRw)nj~MnTFr~Yr*kpp|5_R|57?4v-z*berMvt-ham7V(a)R$^JIt z*UxCX?F^NbQ5o`pOvrK{wKrhN?cU(!A8qYt!|kapm9MmA9J$G- ze#0ZZCcN7E{XLzWaNX88GXA2*<3C)WuIX_h0=?T4ze7HksCc{MPwWq%MZTVwp4I?-k7pW|?8z1B+TcR(H z{oY0;wu$e$WKb>&L#5G5`2O*XnD(4L%uY5v6AG*`x~a7Vy>Ef@sWf`c{ovJBd68U#b2k{=`nYTRv&0G%v z@f%;7U4bbL%@yp_ZF!RqCjgq%Lc!jv*KsZr(0f-M5Y`YWJiGH74GVzU_v1sWfZikL zJ$F7ggrt6q253SK0I-{1UjZsRb%0g1vAkBpmjT)c0RF$2|K-kf{;f6c2FrC(yL1|O P-RnCl*`L%vjAZ>At>jlK literal 19460 zcmZU*cQ{+|`}mF6Ga_~nnrNt5qoF9V5=yPA*;-YzwW`z%v3DqnB5GFcP3=wXJzAS; zt0*;Fe))Vq-{<#S&-MI~>s(i^ocB3N&bf2nulsc;N>5jlftHJwgoK0vgH|&jAtBZJ z&x4wh_>7+r8wGJg>S>^fA}Jq*?2?c`Nib?EMm~@C0&e;649>VRWvV1Cu*P&Le8z^~ z{H#)CO3n(ll(m=iG70}j8=c$rGdKMo6(gi3-BKk2qatW=l=TD zYZ->Bzg=zEVO5dmC+*)t_`2nkj8@qWiv?4Fq#dNcH+){cl&9ND{u1;{|9h_lQq;fE zqP@LTR!NkcPE4f!=luvz{{aOSrqL+4uigl74GxV*27bCy_;<1Cv-srdrTpT*=T|`x zMU8YNi|41;>F&F|*!jx&JSiTPZd-RR3jF~E^YQQxC`=NpQ!OOw`f>Zht0emcfjeTr z<)rZ@ML8f#jHvt+v$TS4ouvwR)J28+0}Wio7QeZYqojM!@{89kypqM$*wizf#C&hF z=PdX#Im0y1WwUz)%kFCvT8Wj7diCp)`2e%;3Wku^y#;qP7tMnLPNr_NJq*Ls)+zky zyME6$x6~6RM^LTf&}#JqYq8%mL$`*9iiCBfT`q=%8P{4%68`#M`d;`SQRItqt47*b zK#^i)iLmJ_i}us-ZfZ!IM1O=jUGm$9VZVRo>>Ppkd1c&h{LmM%Bba#dZ5Y&Pl9h3<;1mJx`?I1@ws1s)Hw);*r!5xoB-geg^q4SF@L$( zRU|_xeP^4R3sq0z=Q5*_-wdQ>OPvgJAb6=W$f;vPZEj!?t=jzcCuZ^ehsloeO7frD z#S~%dm0(PMK<<%~mC7Zcc3n-Iiov;>f}5=zy||e=&FHkj3{R=cqa;g;4bgNu3lf=p zF7#oQ3`?fa+Ahq@C8UC6D@50RM>?DsM{ClvrM0(4u2oHZ65 zSN!XZzgx&4&jfyE=&EvwHsMf9&oY(ADWw$BO+u(9-A|$l*_d)Da^avo%3wdi8% za}48rrE&{wF*wjMY%+{OeOay&&8EexlH?OkZb(L6;GFfbcCex;0)CYZppUZd$@2W| z(cH4YH;CZO^Bk9OHPzUhlIobvzSy!1~w8* z$=Gq;Te`dSjLO~jX!~;a;-A-wasES}>nZRq2Xm=A!@=3V(wcL9_MLs+r~);F%w{l0 z10ogfzM2_*AXyd_TDl1YQLUU!HCBx9x|n=4<;LSC;kUU$C3=%qrr;@F@uIz@{Qis2 z+!S1F1{uN*pf{DrCONc9nd>R3;;VYFUA|)P92?ID095A2Yap#-?hW0D9$vFZL0@~v zdd>F?(=S-4{#u5FiAGK>ioJVcfe7fb0w~`|sd`r)@JNo=%AhQ1^qjs=9nN_CVZ~20^-lukm*40%O zt&;c4c*T7AVR&URaox~Wb*D^a(%7S&w9LhX1Zpw`H-+~3FE1X8bOPqmSOc>DDXW7;WDXYL;_f@c%@fQI`K40CE8v%!I!=d_9r zoz*WN;g$BTq!fv!Ef7kD(JSdg^=Bes=z%n*FiN4VR|?Kz+zKY;(qDM?9*-8_cAiZg zuU(ppms^Oal3`q3NA#qTjXj=pNQXwd=z<=7r#;d!X zX10z}%_bJolpp2T_cVeYWiEUA%9(zPj_%e$E5&hq4!G z*NT}u=QBm!R3#l4`Rr_nPSLZV^wFH_vbQce-$iW6D5@V?B}J>c0X@_hEfz2wS69D& zW0hA|IM5hrjR^=!jIX$5$E_-4-1X_N zF-_M>>;iL(0qt8x5UU#r`-NjSTWH9v3*{powLE{u569-8u&@DjAd>Nbxvkhr-=2Pk zMcF{OTcVYf(w&sR@GSTHwdnY1k#@9N_ZFf9upZtghz45mc_k_r>XD(&RXEhLU+2H$Fpl<|>&ht5jvQkBpVW4QM&+k6zn|C$=`5-`O zGC7w)qE!SXLx=_yyX2D(_jhddO5Q<*IB&Kts+W+g+1oH{(>|tL1@LBi6Ix$gOSOwk=FN&7oDg)LFpL-o=t!0+C;*oIe9 z7ZrIsJ9RL&js_>axJstN%X=MWo6CNiN!ky0(Tgv zWgSzKE<^RHa(N~O>AX_1&4ml-H6GV-c4>--J6;nrMJ!;@d zSPQ648j4V-6|$M4uT9&?<-D=v(z^FpbhTr}>u~RH_hm)d!Tb*;BIW$!cx zvXRtpGhfSM2&~j(^BQ8p^AWMys?SGOTVkhU%U$bAvXHqv%kGUA=G;`Zw~XQk-#*np zP=<3Dy3}@tjtHJnHch5+Hmd%if$OOC&6dh+WCQ3XsRmy^egN8H??9RH4Uagqg9fg4)`_asTk(x$5;tj65uK&U!{5-9rAwEtwK5dGN-8JVp9f1 z9_@Cr{|SSHO$!!Rm@Vc0aItx7P_Zqabjv5vMrF7r-y~f(G^E57;i<_4Ydd=pi%g_~ zzGs}#DP}r*G2q}L^C`X9Kp3A@TVB6)8@P)MpQOiR?q;#ML2oE$=9`B1SocJR!hGD+ zkxINh^Ei8msy^IW<&=JbbM&ZHItip8f(^8=QzKMz(E`OE$Lr6in)&oxO9JxXZ+mImqai`*&cu;l`EM!y7>1}9 z>uB3pPeoA44C!HwojI!3mBVAN`&@1bGRGvEEDrF)gM~gS8Q`dyL&J;^D2{{A!56To zU#|a{tXElp%{jBaT5fJ{Y+;b~e<^Lr@45wT_5@(M%h=!UvsQ$ONQg<#w@@%u{86i3 zc*i&iFq&6-T`v=y^>@2@(j*DZuNJEpey|g;Y2$mbciQ>L%u;~k;?jV_AvVNQ)Q;&> zyV;W47eB`qHwrQXk@}F(5o-lAx91vfs`QP-y3x!-iAlLHs@B;-lvkH{6C7GBN?0af zMk5*7UaOpM1;yO0BRecA?Pk2Ut?n0{!h)=6?l9okxq@X3_P% z_iu&obnw5q*#vnu`cVqkD}WM;gZgZE=CATgcwFg*v$lYH1c6Oi>SY5N*&F6d#ak$0 zCjU`^ha{-KLTgA*cY*1X<@O4O7y;B>D(bWfJb>VP_&qRwdY79Hv@A zgD4@<8ZG5#?7+I@6^M&29+%1P07K3UzJNXaB5+bP8`ukHYNTy`|} zGO$=T^Sgo$1eSC0=0r48Zyj5w7V@gRfa^_yD$^9{4PI^ z{9$p@PUDRg80h%Ui-stC%?oLIMeM$0(4*sjB8@QBQgS<4lMRjG}_ zO`}Q36?zYU)pDY6Y{r?Cn~NzodQC-miW(GydEQCb?u6Pz-J^a8FIj&l&em?>`m<5hQ zgS0q~OG~F5gM9fZ`C*{RVtjC}8Ju>m&TuUKN?Z2z3@yAMM_X-1lB3aSdbzQdV>23J z^Db;pK91!J-ZFioc!qlLGy?W_poDn>6&2p*d+OAD;U(2HtFbVUY=}VYg`g+(f4u3# z|4YmNDylZEZ5u4P)0YU6+ytXNPMRoC0*pQRGei{qN|w^w?0|rcWsPB& zl`a9t-dF1HHT~F!eqC%KNQqFRruK!5%B-Vf(?^I(fOV)~uM0d3cZIRDVNf*6un8tA zU4fL0OAxS59luyy(uy|Fb=)Pq8Bj@ntmUNV6>kJKi^_JfF+~v*@WFh}hM0nzcN=n< z2T?-s+CH>2D$28@@)qlwg`;svoA!R@uzBGsziX-Y--1(DQUH6PC^flG?sPqa)Q1$Y zBs?WcolM>bJtsH;#WD z3lIJXL(i`7Ycsd2i}++xiX~`9{@ncCz&`V`^a3yuAV&Yd`?^VU)BZZ(oLmC5ZRkm zB~5qxy@0I1=H^|&E!kZwE;N(R@i!<6wOh?($7SxF1+uvBl1g3qfwrKm`^-FH0><0} z9?CxWHi5z6tgQsJJDsV(I@DWxSA0`{E?d64(j?U%?;F(??Q|Hff1^mqeus-O2P8)f zG`i$_yFGlEW%2HpQ1rU=s*iu$KZSs{^WV;{0x90K+yDGtfn+~X2`1>fFQE6VY$OTN zVT3zX$8rpL!>PTuH(}cY7bo??_nhz2T>(&C4{bT*@pO_#@{%5Q70x($vu4D(oM}B$|Y8$zt90qYd+9aqQ zlAi#rGNI$O4+_YGz6254LK8&Y^TPu^!V@K)NKh|??!79BOX-4XA)KiJ>{OXa^N}1< zBqejx0xH8k`H>+#Bxb)_;_k`(3_Z~_F^7_ViqE+}bvR)iM77JmM$->#m@=Y!s$&fW z(vV!-NdlNBzxfTFB<=BCme5MdeJJ7-8B)71YR4xtDJ*}VxJN*d(Q|EqMq37xoiBW{8;XT0<`nV-W1b?}-+kx6 zp_O*|%!7halgmoQw3w%i{YfGzO5y}os^`ER_KLz6IXojApL~!0dHoA)esSx&_&nz_ zcsCs@9KgU#I#!j`d8)x!=Sp0jR@H%^C}E;{t;7507qY;c)tT?_m8|A>?H$`~86rQU z2roP;ME>?`#^Hm%m;gWVu;^>eE;KW{_h|3-1ptGUf0Qqu=(Ni&hua zOp@2FE3XKP7*5yZm6v_2UW9v%h9(D5Q!g^tRhd{*p z`P=L^E`T`~P8MN(%${n9=7$Xg5r6?EyaP+sR$ppK?Rl%GIQMnkOfgV3@w|@MNa;-t zYL?G@^1^jS=>zpsmz}YkC(rF4pp;suQ2)cornUdD<>-}j(mk@&-9XGP2N?=`tYZB# zlCy4OoQ^&kT_WN%B?+7Q@EKO=^H(U0}+x_a=VV0s2p4 zU7=miN8GJqC&nU54H=zbaBqk+@vcwndta=VVI#y$B@j<;Aplk02B-xE{g-@gy&5VE zn*&X3;tq7a>T!i!Z+D<3>+w73Hl`tTK7Hrs3tsN-=N(oP6=oJ4HTnLLtWt=KE##k#^+# zzqm^WF0CYC`IrTlh{rD8AM3O+HzzM)MYFTjy$dJ5XJ!TQ00$|x8XX>qU;7n%S_a7b z`+xJkzG{;z`>k?=(Tuxf3rU1vy;DUG>^1+K?7fAb)#ya7H;J!OrC1KzH*+Sj38}xKAY6|#yo^5-~9-d zAIO6Gq);Y{`KI?$JZ&S{N>^vkFZ`=B!$7vUsx=|s0oi;N+_}pWFVU#m>L^UfUZ~1L zAKDTmFmn5OZ?X8=0!jL(BuDDME6`g!k-yyzY+ih{UR9FSm%=g<^Hr*XFj(8B&j9yM zmjDa|!l&mAgvHQ>PrIjXhc4V?=L1%)M+!|e<`sk1S3R@Lme5;(3x=E5+h0oMdQS@a z#hzoAmLET8|992qEmRe!ryRDUmFMiyhQFwLgs^;k^n~vPpLL=t1YuNEmL5q?E=+ko z^=B_@y${m(*oi~vG0T|5pz>Jw>84|tHp0_7X~{8ti%R&8gMr9vaf|OF`TmuM_*tvP zvk{HCf)ThtKdLn9{aKWO$v!sDp=G@ZE#P%dj z;10Q*u7_AvJ&_119jfhHWPXaHu^Oy)J--sB|SEBddq$D2sM1UDzxXau#UlM(=*p?693uI zFx&^4BG+mkjl_{8{Ch_)Z3kJFI1q`O^Gd=ly0ECzi;(B{ks6?2`HZ0rQJS5LUbkT0 z_^4o@Qik8EMVr>zdPH|muJdGMYTf2`XxW2|K%4~4Kd~(U`_Q=J;oU!-vf4T_PRXif zOVsYdUGNoxcu! z$pMGle8YGD#)Lc_Hzia?XF6=wVX>M$Q!jNBzz!Z=f|xk`L=92JhmDOoF#9;j={lIE z%!;Av$AV60%3YrdmFj7=7CP%B?@HQGg#3EIB#FLrzk}pj9A#&GL;%`5cLYDwpY!7SNOA*!~`|dCaHpM2+P} zKM{{%r53X{AZ!A-zCS?2P%=nSq0|n39Cp~+VM-@%%4?15c63VFEDU*eCWw)1_)Ilb zGLhIPg;El#S9=XBlwj|+fZ&)BUU85&tbUXH&_pyp3X;Rw6+Jz3$=Z-4GJ zR98n%87s|PYudIdLbzJ}4Z#^DV10|m!40u1Vc?=WG?D@p)PDlVo`^(K@PJPA{8i86G%m%1ox((c`hSh( z>iwL_&kL*)e=IJ0SII`GSo|Ida|nqr>gN>3Fpse@Yl#A#S%-l_uRHl4foDRd(5#rtm#dP**xp8 zRTn>L9w%P|p$6r&t`p?wuW0T61HypI$i(NX0rTU}ZrD&s&Ao)9tBfJzzvg?l%MVvu zMr%hS47`(^ZEmvf1f0^m;c?r;qjsJByb1Xk#-m*1FN5d49av_KU6$JSR)d8;-|pdZ zQ_l1(G8cn5`M;DhHhS%yb*$y`?d2o~;iG=Wuvkg~MMxVaWK5kXRP5~Tm7cU+TZV$2 zJFw&h`O4|YPgiljhU2R8idxHSE%j*f)cd2_ro?^`*v$;Ws*UR3K168Kk^3_GU-z93 zYKumBW>@g5yL_mkg!p_ZG6GkzL9~`AS|x%5jLjLKR_tvbLzb*!O;Sf?YiOS8U`dLB z+JigyJ)?7vA1fK8`!Vz-h7@s$Za`Th!4cLrYfHh8PPF7nO}z_kdKnZptGRHHq>bZqg+*b;wv=0G*mRTehI@EGZW$4*J<;njwPP6qa(?C_zjCF;c_r(JrHXQfr-Hvl z>;>$OZ&Fzg{{3fam;!Wty4I@FBd#qkqE#ko4_)&ov zy*_H3HcUEq{L!?TL@b9*hu@+=N1ct82JK|v_{$PqfPe13-PGu`+>f|LzutLuVM+(v zTb%%iQd_3zKey~*-h8a;po>(do>tMd@8Yf&OF>6RXvznSLmb(TbJW^Wz_T)r12pJb zJTBZ{S2e>?PmNS}H3L2j>~2Jm8;nBERG)B2oZW5gj?;fvRVpr+K zzo&3tb)A#f&6yhijm`T254+u<^KrsG{KQ{6G-c3yOg2Z z$zhn+VvY&J6G%-2xJ86af_Gl#@2g?2Qzle+H$$qc;l7#@N zRb_1meMoHGwsRaHG~#(Bm^ULT2`;Dq;o6|eWYRtLXG`HR$wvnp@wqg5JPuE}pE-4N zs;1%v@$NT^d$8Ty<8qUF@-C&l+JY3X_K~%tX4U5Wk^Iw97Xe~VhP`Y=KFuy9vd4oa zDgQ)EG22dn`1$wL`jz^mtcK=;0SamKyf)vHod+aps0+MEv^gn~0C~csUu2t7E*h|% z8(<3q{}thzsoMZ1-eC7~u(aLHf(y~s7eY7nEfF#(L5c{b?CmRp%G}>_$I`;Mj7ukV z&8d5PO&Q)Vm=oA89+Z+xpE>m}D73!`wDpY5;SV5aJb)Tq z;<>l}CcFvk#;mgLS|oX~5%MuSIo2Jejt%O`Azx8yauPm}7+l|rA6eh(uFZeGk|n?h zZehQwhIq-|Wf#R68yeEj{i%)ZJ@FIgNKbk?mi6rollhNV#smwL|Cy9+Sg}!y=hr#S zPmd)MY2AnjXDFiJqP18rZ_1qQPMqFJy!!sXIk%@-=6u**-0#h;N3U9H?&c0_;bcvs$WqcS0q9ip~{uw0c3D}QRMdbXv@*HFRJ4=i7wHpsi z`&#v_^;+yXLy^03p$y~$EnI=Thq*stE@wx)Z%_PMo@X!c&h@?c#{!@K=am+Sh^aGy z_%ccZ;<`{bz*-2++UF+aT080VA7B6H&{3M*j*vtL&WP_QN5KEp!IC_dzUwOt{bHb- zLcaddt|Q{d2sL||twRluoG_Q(jTU^}-31={dNIbc~DonB>5Y`Sq#shRZ>GW2+Ja+X_t4%bQVA@*c3HAKnl zKl|>pU@``FM+EODxiCZsqa3B^*@0?_qR~(38O=)#8R&VnR*5SpnDrBgU&;|lXDn<) zKGs!$oNm0K`pkdTO#){kw%ROuh&|)okk%k^SFVs{#Go)Qzy}LXx2bdVSMPWV^utqq zJd6G;9B?5mu1*9TKf0WyUS+1xnQy34&w-1o;1N}Vki0l1!!sXE?g~B|N2d6kgrMD6 zUY*~K-;@6;ye?z5k@HKUOkS_GEi@t&sB`Jy^x6lv^PKdG^D9o{Lc*0VIpjNEcyOUt9zd}sqyV-LQ4BGfbW{&15?YL9gsW2ko&E$3(BGreK= z`kxZ@9B4Ql5h0B!PZ;khb*9|kY@{Cs)A2qPgQtG;6oq`gYWOAL;Qx99Fte{MubXL7 zKN?X-X)uV2>b!ktQPEfK%bH;l(uKbf_8J=E-kHx3IP&k-;c0;y{?ju@h_XcB$6o8t zrWz6c#al>A&POju)f^#2cEkFoQzG#CyUP`44os$Zl8Ai19Q|FNIo_)Yop1ZUY)H_( zlBF5br}z5N<*5adq`U5JZ1$P5=?pbAe)}Plc?Y3UZ?OkY2Ty?T$NzPsfxp`juya*O zA?D%8j}z7@9oBLF9Hc$XWF^9=!MM=5oBa4fq!X^1RV9V?sSsp#TS9BCQdTM5Mvg49 zo4P(ym6@RS%y)5+Ayj$38I7OV?&>rSaj@j@x%61GO0}Mi?R4XKqLGlLQHnKUC2VF- z9kZ23-cIqZ=vB6ONo>KTC48PRxyagKJC`7fRJ~}WghbQ86NDXaub=n+3Vi?ggU$u+ z_uum^!M69RHk>iti|;W~&GEg~bp9OiM;+mHYkEcqovM6Or@vnwWx|+h3ikaxtESgU z6zW6NX&KFXNNihrNyuIvjr$Z(0uB13b`Bm&NiH}LC8Xd=br1+UO{>ZXwdv@V5nTf= zMJ&#_19smq$v`w1S~{dUaw3LL3tQfQ89rA}`LFx5Wctjd-hhj0`TFl)m*&Ps|8b4l zo!(cPukKk4g(T+c6_R!K;;(XMr`-VsULu=e_ur3FsG&v7`muSZMq`{^oqt;Tto6+O zc2qGD`cq=)NCyReyk})i(7o1x%P*f8xx{lDXBBsPuy?7tR=-cJbz3+v@jQ4CUpQ5B z@BYr%wcyaK8tN@A`5iG1a9(74drMZM)%uEqf-hg1N-CKE44CCpg&Tuy_z>rMLh&s`3(^=@@wm%gb`kNwKg$qRVt zE6201Tl8h{&eYXKk*^Tmj>W1%Z<}nrQom#G=R-7%6v8z&cu0gQkN>zP>0_Y&s0A)Y z`{VQ}&sjH)P$sIBhT!gHrWnyog^RO|mffSl=OKEi4ycI&{J{iO{SBxkJ_sTt& zHi`&BFE)rRUzX2h!f)TZ^M;kwT`xKF`34~qBs;S`J)honkIE?y8raN9HC>rn)u=bt37+s++HT@{=h7X>Ul}OK1EL>#$?5zm0wLE|$;H@@Ko!*U_g)sipiW-&xFsGATQ|+Onp{xTot5%7Llt zveElo8PTM?N!bO4n0sji^V9e1vrv;UYN&)go3?y@C5l}Mh{sTiGDbS2d2qnV|6|nr zaTI0LJ|rFE@jiS?g-{DLO88vH>~&8pa$AA&YNS_JI8l~v>lBL?cp21sIb+cxea~gU zd(#&Ij4bpZvzDD^FBd1p=^%C-MvLF~4G6Mpi!!2FQr$QTh`v!>k{^RVf*)w6G=5%3 zE)Zck9?eFsY@m}=cqDn^@ECBZFu(BQl7@F)G3RC#ZGkZqr93Ym_nIOvhAV=cx;8Xb zX!Tk(pt|m^mkvFnQqminqQk860r|9ze4}CMbhdNltXz8A`Cj%G>aw6M*`AwP4rIe@ zLLN%a=gJF+_6Xzjoz-Ab*VnKVS?mA>Zdl4eQNt062wDFZeoz-4Y6P(?(HQV7hldn* zMp&~`$&UXGN%1o>J1pB}5T&Bs4Q?u}L?K5jX$BtO24bL;zZihEaWgEdKVX2F5 zx-Dw+H&ehJ4%u+l``H0-nu2j8qS8W^bvWnUv#u?7s^)o>%FI^=}E=rcBYY-(nS=|tA>!S6?AsJTA8I+ z-9XB4eAI#F6AJ+=AqZ-$cmFYgo>Nm7iqh!h=C09qE*398Fk6?K3sEI@Pxw=Tk*Vjv zE_YEP0;c9w{GCx&NWT-UY&-e9`H_p75NqJkRRUX9rhY*_uOmPJ{+gPziq40K$jPKx zGtQgEEN%*srn?S@sk%l?d{8D?!JEwgdS?jrIJBmLAQD$02~|;v4$hEgB8&vt^rzXH z6%rXSv3{gof^GFYp)di_KV~x2%pirFXJ7Hk4h-Fp9cy;3?T9hUMQb=A{QKFXbeQx8%%OBSjDRVY8rqIk&T}@#*8G&&sqtZTwrVdTPpQ;fIx%Zc2{sRscUR+N4+q#{v#;#A!AXMy%J6h)P8EkUbYTg z_j*Z~PUKHJrN`>6pIUS!8bXMdGk^EDFeX5RxN+)|tUyWQ4W-0Qh{sD>arMc_KcdFxgWLZi*U+rc8A3k5w;`0eydgU%eSRp zn)VHc9RC{{Bua6v)2ph+1bQ8-TvbT{>q1T<^WHtW`hcnWi0$OcqIj#}*sYBFa+?o< zr)|B}{<6j7F5?0YFZ)RpLw$i}R$@Io{*hDEP~j!Mx)Y!N`EsTscyeU6mk@4UJ4zJ| zv*gapx90>a(?b|5cv5?a&18Y-ycdsgU)dkT2_L%B%{>#>rX%cM$w(k{!n4jW@A{0- zmE-eXwan8JyV>{-H`dY-9i-tDeI)$4^0hADK@)pVH6>-4JY83L_|)oFy79Th&-ECY znQ8`wDssMR+5+*taFg}ig#(T%>3j6ki}Y^AN^e<0L3U_&&~_bHcVwKf`A%s5-^64V zY09#NUN*M@ffRnMgtO#XL({oSaXsc#;+}Kxm|TDc6^kplaS1>UBA1=j7;IGDVenRx) zr>R*K?1K=pDr2QYq=TS)y#u>>H*w5>lv3e(D*47CJ8J;JajgoG%XtvNHh@wWf?|(=G`u>)fahX+Q5JG-_G%vub5U{E39&r|TCh z8ta1r6;H&i*)7J~!q%$rs#pN4diO~KTvcJ#9@sP=0HkA5l>qJvsQkE zW=qh&fnrcdspl2APP9|o)2MBC;#!u8OCoV$l7NEQ)fKHPON{r852eTwNu!K}J?TmJ9 zyp51R&+*D9dq*Wb7s5B0&9A(f{mssZDSC$_=?Z z5gK(JsMg7ildr9(D{N(2m7lFS@H-+eM_1JYHrd&==r3lYM0sYhVc-(?$4u0o0Y25LYzz!~6cFna9p(sxB$s)1z$sg!i+XrdC&RyMP=k~q?tgv$`F0gOJ539E z7w_GkdCjLO&TL;{az;m016*&V^|v3`DFI8?8{tw7`EKWld2gxr*j7 zAN?t@SI^%9K$4Ar_j(1qO*1d~t6VVLY}~+PiR-Il_lw={_MUlA{wE10jSw}a1+@XW z=OdC@F2Oldd5Y3EQp^)z{&td46Lf5%T)5d{+p+zoeg4m8wGrw#eDpjyhruto-sNlC z#f!}_3_iQ6l2c6_l3SPf>G4WT=rPUH(i7sKR^WgA4ze$)KMZ9<+-#0uOn9by8_fyezZ52uyauoc1(ASY4{X@o8uT@n5I-BV`q6G{y zu?J^=H-GiUuqPZ4YFk*9og&Gzt-HI!dkuOJQK3C5E~X-{_uJ#l4g5@^*@?EtEj;-q zn|c=WUC1enY|Y0+<{LV5CWKTj7>KB-lS$ zU&v=#P=kgLD;Zhm4#h1I9S%NMx$U73ZWU#JR=@)$0mX6Jc)dw;N(%^@-k*e6nXh+g zNW6A_#vrwp-kU!sp}ne~$-y5w_cwbTiWWIIndS0X?S}X1e{8xopCm>T7?Jx#m`q|f zh+|pu?=_Q^mBfc`X#KqxYp2`I6|lcxv26fKsH4_+9??X}+o(3VgUBZht+;%#VoWg?8!fp{$MQz13Q}g#)xCRG<{|(~{d>9yaih?za}mgAlFQPp z)H+Kuf3-(UOy3@Qq+bpCU%CpklQZ9|RmF^mq*W&O+BXXrxOqqb_q+XLSHf0s2&}oap-v@@|tQHEsPb6n(yR!X!I8?-0 ziBtR7w~y1N$sBhh+rWQU_>a9Ii~D_AF}j^|=xbmo67XVUTyaeNvCfLp-N?PnJ1Y<7 z_KPm-^90E~4!%qnViD?DU=igjIn>`5rZ+aFQ)3atx3kFoL)te7Zee1Euz6o(WWK83 zD(WEA`y=JDa2}_@=i!m}KYSp$Tbf#lM2wK{nf-5UxMh~z#?!!|Dmb~bij7do=@hGP zb${X+1G~k9cC?Cf`3R3nIIkWG^IPef~o6j#9E)M(~u!kMTA04=y!VlH-;FF z_Y&%$^sp@ZlEdV$bH?6;NV5#f0&<2)?|Qe#qL~8=a{?$w5H1Fwo?IgEmIXI?>Jb$N zj*+1bqw9ufOf;h}&TP5;vJ$G3q#cO*N5Q9D(7S0tCtCw`gzvk_`z@{$-5Ft>8uX7Y z7Um+(u&QMxKW&meM=$$c`|{^IUISJ( zRV3Nl`Nj;W9Ul!w%_@7bber@2_Z81fWa2$s|Gj!6fXp#)MMcwOci#-PMOywBIw1aj zfhSJWP!E|YRm1qzY1tx+^YbJ5RpOitVr_IR679f9O%`dr-4E)19gTSbOpglgzasux z9y!JRUz%Vsyrb9M%aJxtRlEQHM+$8oTtw5uU4p1%CN|o~wCXy6 z!2#NC1v`uMkDS492vuFogP&-eN(@$;14{e9qferxu7^9!&w+yr;s2el%9P^&Sn4f0 zH!-h9&BUu{uvD(Z(K@%_$>{kuO!-Dgl+s030b6LI1ThWU@wzvMmsd#m{}Km# zG&IHQ>*1fkYIS#$uuoQ4}-)nkZs9GMh ze`Uo|33&f6_q+EJU)1FdsXfAG`SB5G{y*6UBCA-LB(VCga_Jk>?I|lV3lw$9**hK? z3Qv>WI>8tYk$97Cbf>CEnHonv$Eq*L`fT{>dPM&reS=Fto{}=T`;#S;$(MXV{&xbD z7Ic7G)Es?bMVk-28$4Uk+%Bho-8?<{Sbuj=Pu$K9z1+xsHePcmqL6%@nH3IZs?ZDX zQTZ;(Skcf6=)56G-T7n1VswwuS5L=*N8lAPn%mFrC>EFmn{X8|cai-|p0)Mw!mZ^0 zL1g`4@ynUQO*GMWZvq53#lXkcLgCEoq33r+kxVn2E^|#}R3JJQ&zkE?rhQ%-tPaOX z8oOstMCjb7f|x%|jT^kMSo`sfF2*d`CG}5gX1b;%3uB-81Uq2$wNWyaegDfoTKC_V z@up|l@@*J9G0a|7W zT{XpmPqpi$N6GXaB!GAIH%DZw&oOaB zPClbI0B!7FUAxP7Fg?CVF7^goVv_!KYD+rbk@6zVEGK$I!lfj&#}s{L6$5RY=-~=~ zfUqnemO5{0u9YS{{_y3In7{rH6Dg&0MTAt{+|m3quxvAU!^qrCBk9(DvJupEV{o74 ze-0fDcoDlRd5}p?O;0)L1(8i4t-L>$em8{J88#7dh@w!N+$J8j@7GU%HjJa9AXo<@ zMW4;Kc0FiItePX4@Q9Gn36Ai+Hjt)D_>W;>w-=79i8a>{Dz$|dD{XB#<0N_(0` z;?P|`3YQNZz8ltKA~-<(NV?390yUrz3hS);(#cc7!juA%1#?5p1TC}MqN$#Y+OlYy zl>{H1Yl!k+Ef~A%Enw*i;~sSUTBzWA9=qpniHPmk~Fk?K1i|A$FDctM;8^N%hBHa-69W}<5w4OeeBb5Ug${xa5A2IT!T zR`d7^FI!zEm5vc+R^+m>F-LKm&iYVdFb>Y!J+lS`+DFvwWWpH2W^3-8?@tzRpwhMN z?vK5tqjFsOd{nC&dY~*SS}$0z>p4m-P^*-57idQB$`UmW;@vYjtEP3mK6HuByPq^3 z35bIK2@`B<9B}-JYB`yD`68!v>dYw{-iuqJdBt^F!G^&lb--ST9CAo!7O*O1_UDdH zwn~3B1gWGz$vMqM7-g3oPR}?Xusv`&R$XWZTDMY{Qy) zpKWSp+Q@roD=%wCGm(}`k|vRtl%XP&F=JS5vl~fuk4;AO!d^DQGVtqdN^KfXM4;YlYp#*D5RX+F@&#`cOj`-cAzdI&fjPxq#Kv_E7hvgF zDp=Zz{R6=q6^>xp$WUSzk(!k~pMFGNPJ-oQ@#(elFlo~pn8h*bUqQu<8eq&5VM}y8 zPGz@0$7vz7q&Fq7@{ljKfkMxDXcUrUUq0VhuWT7hM3xb8K_z0E?qD9?)JGd$e%Em$ zF{f~_UCXXm`g6P18PAKW!g#f2R?lz{@U7f4Z@6t!H;48tvqp20XW~;7vbV{ruX{wB zT~7U18ijh`@suMq{3x&`{LJ%T_tGa10r$w&yIouq&{psoW|5=IghZowQPTM^@d%ZO4P?p7~B`s8`W9W{0pwG1_&Yw7<0y(>G2Ne6&zWY!%> zyLyj0!d#Rm*y3CYWSRIUy*~ZZtLnddC;w9d8MbdMd%5qKLo6D6;Z@mS* za?xe~pLzyU&CLmyr$|?I@g$f%HdS-P3C}aQbvz&R z2g>D)b%Z7}D;u00^vLQ{8h`$B!$e4UWh-anbKr0ah-zeB4mTw8Md;knjyi7JtoOmi z>pMoV9?IYTxUf9EWU$~?ZU%nu7xtwDsVq3k=y4CF+S>*K*X>?&vv=5P zm+z<$`QSr2up@qa)#-{q=N>n(XJjz&?Rp;~c{Ss`a0l_lus&t1R7rH4yq^Zgz$Yb% zD3?MD!a)W}=d@ZD^w6d6si%wvO+61jaQ?2Xnu)kkfFd0*dW@n-z9P$j1kc8V6wJ1z zcS{TbF2sb7dNyLe{4tfVcnL^B+{;kCyL4g7meBR^rxKmzx?HI_@_OY}4Z!}Y2O}g= zjWc9GX-w!qjMC&61G%}=Joco$C_E5vw1layI&b+*6B51oI3HR?3Yck}Ua~pN7^;Ux zuEa9Z3Jnoc1Dv)9LqBaxEpMyQ&Q>jJPf5NkWk3sq-*@<_%Dy|J1@sDky16|xKd{2z z^0!At!3#t0<3tSKroBrczlOg`N;fo47*Qt<+R36-u#HU@2=hAwT zO92~fB9@4|l$KEUl<#FMt=6RZo)Iy?eEJ6*?IUTHNsF22+P?LNrzynaAZE$##A!#} zw{0bfBLkSzMG=|N`uq5boA=o^0?sGzTtrk;h6dFoY&$V&RA?jdQ)?CMk9lrdpti(1 z>@%EZf6ky&)@0e^q}qQHr||XU&QNshQ1t{Y~}e|gL~-t3i18%)2Hm+K>>Q- z3J6;j4QeKb{@J<;PjmpRWhdFxqq%q^|| zyfQiBQApbPhMzy~Tagg@~1 zMFWs8tse)*=*DwDC0Ak`YkE3)U|(3?0~hYG zr)V!;N3N*#TD2XW(-36{w2rEFHyD#kaaVS)BRIl+m%0QIzMSFE zFn!45+r$d+|UeCJR&KYQbVp|_|Q)n_;w`EbfUFBhDTZva!qfK=xYa45?Bnq z))=!>2dtOv)fpE%?O@Ad85juWp=9`VP`9b~7=khA#oX{32WQ&(O&5hoH7=x_7s1mp zc9AB>8v~2Auf2*w$PrQtV8n5k@vz zrN{86c<$Pxg0L&tEDm4Rbl3=lK4v>yVe~#2zF31MVU*HHch~CuA9>8W zKA&qfbAX z(^?^MA(ONA>dbj`n-A0G+V!|1ZsOYTqtn7e=8g3B7R%zA<&G2o2qP*c#u?3t!%mAL zP#p|G&Sn_19t zRwqz7AfQ+WZerj8ph7}nQVa&TYk<{bpoMu(D<81G0q-c))V+uskz+5~0WfwY$6OM# zD7Xeu2XWvCB(=X4d&Um_9|%mkrR_+lJ3y42*@Acs2d5^p0baTn3mS8SLxi2%tsC z1Bjh}bf|vAA%Nf+mTY0uQ?xAf0xJI z*W){o*ayeo(^?1ng(92!GIe+dn14SY2s--Ioo!w^9?e^EWW2|fP$oGR@z2_@+y@2tkf$iTrB2w-?a3zV1Z^nTmyH>DU+B|Z@kb3efb3D>O zCdGbv;kEMIwW6Di9}?IY9wP5=Wy7Lldcb+Eocu3JW~<<=R~uh)Op;Px${OsS^>KD{ zW-7nFU?3!QzA^Jl6o*%nY+~sj%Pk*Jk*dtc|7_lMLE*9p;E}P3%tyoL`l^=gG~xP6AFkh#%S&n!i0B#eSc>=!9kvta4|A*o;Q@ zllD)3KW=V&MC01u3o3x}0uqfbBUu_Wr+3`D$;?2`PkY4CE+^+}Wc5FNo6Wk>S53Zr zm=e#B3Ij>GcRD3tnql;JxE&iCQlsR8tm~6+UE}_kEL>p%9a#t;?{3YMzOBLf!Tgi5 zrV;Oe;xfFJIsTNNf)DGNaJZ=_UL09d@@*_K=JME!Y-9`GeeS_jboi8D#+LX-n4S;$ zK3|v_&#nN3-1J64ON6IB>$9Q?qq_GM`P74F$aSdaL)ccusA{Cj9QMP#b&{S1`5-1t z<+&sMvlsKv2jVf#+q*c?7fQ?AvZQb`_?|5wtp&r$&3v%k7oM-l?~qw&4F)Qi{!+bi z{`I==Qv2{ABna^wERnp@5e`s%AZ#G+X%TM4gQdW=cBQrW#)tLugOzv(zy>4t03-_k86G{*hp-+x}3>?C?Ay*pRMDVu&jBJ*h*n0D~1(CT09on@i z$n^PQkZqt;--`WHDDb!caJ7*p*e5F%Ii@kIw?Hr$%%Dl z3Jn3r^};t~E=Z<-E928%Qj3wneFsUwZxxJVomkXI?zQ2v+I}s8!=sX5mQa9Db-DLT zfLf*x4go*7uyRYy+xw1fz2w()SPe1M-=LoMY>c&-jV-p>&pt&WT|Er3$Iep105F`! z+;mO5?Z;^pluyqdL!`j`j@_DDXMQG>&W@R}2=e!hhK<)WG%*1!o%vDp%n4WOcNLOi z7**1em2hE^=o%cvP(F-5G@6GA*s=L%bobA%{P^F$*9UKOPqr?#RpMUn{w+n1$s(?= zz!vxB3e)zkZo5V9vK8rcAyRwxr;jdRgVCIG6@#f({K@aOsHw98j zV<(5^?Od9KaJ zALyBFuP=cO4+K_Bg<`JMgG}~6jd>*L3zRL00*~#&A|#{7XQeLQCWr@j+0$!@q}S$E z1;0RpVB9aXz{2P18`l3*>q}25I~p1FL;*+wo(I(>*Tj z5M~YOA?2eSUZdR(m37K>10U%J+ltGJuLfOVYxpfzU_hDP?GCkTq#5bHd`PH)MA$k#GJVs!qeDUNmH(fAtbs!2G zp1!a4Q!#@>Q1S-<&)-Vbz4)%UG-AN{hOKlJK|+Vlz|(WkTmjQe@ngZbG&{u>Q!L!J zX^${huJ8>FOAGq&YzO`6d*A9MH9MntOF+S;7JeqXt;iJTLQdBQmRP?f2{SRg^*3?w zMx>@_A@^Fowh0UkwKbb11w&It7S(MWUFF|e6BL*#R3O{>Pm}VulX|~()5LA*xZm1{ z4QG;nB5}y;c+Ymm-tMS9QQAuBWbHgRKJoAV%FhU^MP%@ci$6K~#M*^SZ~tw0?qTv> z!jX>g%{BX!SRHSWuP%@GsoQAdKPnYO}O-n;=lBuX}yBju?2@eH?Aye{0;briPJ27L$cwNlXMH!E7n!cuEHU z6>nm|(>lvXK=$CM6%U4u(Jw=4|L*aWfQw{$BH2hY_vBfRcem%3PQ2x{;GeAS9=S|! zix(l2C!TcC6~vguuXH?85%Cb*^9gTExXl7XLbHxIit~lZ6nEhu=7m1)_y&vK_CG^pk5 zZex0!w^m*Xte9f(S*D=DYf>we*#g%J${qEOPrn-$#jJ^ci1Q5M(L7JQy1zh+MWWscGh9h()OE2Q_CT z&}f9$pRLn(iKeSC&`lS2Y72>1u5-N_wVeJo-{TJKN*avE!Uz`q3u=vzXoZY59-z z!?cG=QTA+tA-AP+UOriVOk$CqCXvP(4Ym1kJs6W5?n@CpGc)d`@|KZZjal4UHzI_H4lT7{BfPjEo{WZOt6^rfx%s&KqE z@71?(KG5Qr3wr5c6f^#7nq5 z%HUxecQuz$WWDqATPTJ1yf>Qu5sln;^RJ|nkf%EOj<1(`bf4iFQiT04qhhQ{IHLXxwRX~!hOkMZk!PI6d=o#-^R9I>#*D6mSzQkn{h+fF12@8! z0+!FKPVCS*BMdr9t!d7X2{RT5S;-_O!bC`LQe218rjkgBrRS6TmoRhP7y%KktxwT0 zq_MOPE&^~NnApnANivJiX%7v+U*}GQx;n(*_pem`N?%;O)Q7`RPSL@lYEdSXSv_2C zGyU31MJKk9OQj}ylo<_#Z3L3pL&>yoo+~aCvJx8eXYfIBEg}UQ4JETL4WEAK*+2eO z9hOx8R#)cW%nIrfALb|N#QCn>X3qOopj)dqBOP8MBP@K7sD9J?p8m613oEH^9M{L> zl$Tz$%e-Kwf2Zlx?;sU(Nild*KMm7XuT^9ZH&AP!+bbRT3e;RLRRD^L4W6C~ZgMQW z?6Eh@safi9uTmNe1Z&rW^(^kzZ)PNfH1bqr;0!6MR{OXM^5y1~5?Qct-mFZ}(b1AX zS5>1{krOo4XH4~NIbHb|%r1*|PIne^GF6|8AmO@w(~tp5ClZ0P2^-x@6-O|mkyr~u zaUF+oRVI}mljT5>CKDHo873LC{KYyjR{&VY^>KoSpc75#TSw?ft$6EA-9NJ)JKZg~ zgQ_(u{NyfjV&s!uRj*vn;~De(I{R>_&LuNnm7(05cL8w*Bs{#knq`)01 zc2BD|W*X>HM9zjx{QD0(7(Jd&@dF!j8T-o8F`qg`F+jhGs4eVGLu9i#{IIL;CCdL* z2DE)OYea$=Yd+K?gGED5sCl^`Ws>TXA!vz(tvhqO><|uxTg~a>!3d(hRZiOY(&NCH zTI$5#qvIw1W7V&Z#!^GFZz>ZLlf?{RK+1=-b8cw_)@fHj*4DUsltK$NG zZzgrmSg7rs>o1_HR}&J7)|Vv!Q6sGpzKb$ZTLt%b?Pn=JZg0+i5$8H3^nJP}^oI4$ zrg#{M?i3Jd7oP2I-!M(fRU{x!(S4?%7Pq}@b00$D_1>LyQK>>>7F8>qd0}xQqF`C* z$YEzphG$sP0|T-|Ip+)s&#ku_jr`VwtDHm!(-D8x^18z+1tN!`zCsH3-bGg*q>7=HNc8hvF1EB5tWkuMH*dcDZ585ln#j7MjUS{%W@K0Vknb2=@C|GjLyz-$K@e}cajvFR*wa7611oBH znxj!v#qa@#D)+0$ddq)6-pc*8qil`>#|gRvsmc`Rq9jS#sZ8~ zO#0@wu-z=58Fk4G{X;Meu9`R=HSvt5AIryWaP0qcG`XPoxyB~^gq^P4pxRM{9$$&> z!O#BAg)Z7imS(%;BV)UKq*_NRiWU#ub?qfFKu`E&fd-Nd#bkZyo-q9=YY(oA_jb~b z!Sig;So+PdP#!bC-vZOWx6#(Bleu*C6Ad;WB?6E!Wu|X3th!jrx!o#ZT->-njaB2z z$woq{5qSAEX%wjlLY(@BcL&uXz~kp5c3GAw#42cg`b}^4hT`aCtxx?@#<1OoE(_Pn zHQ-pzN{H-5CQ(1U0>VI?I6|c+-M^O!>{uMK$O1*H-C)R53-zIjT2 z=0lpLxcGJ$Zme`lBms3QZSdYUx~#O9#&IY?80GK*oxHl`$41hHdGDaNyLkGGU3BZs z!F(EO^FlA4K3@5vKY+A1C6jo23xf{I-|s>xd2h~xuy6UX5 z=nTtQoRmZ=2^@ke5CY~>CEhd&?iPn^u&@kFDasui)47}yF8V%w;^jAJxp+PJ$_(WV zNo!Ff)j<9pucev4l(q=)Xdh)pK-A zQh#kgfNZUDPXT8u^eqI6L)6V(_ZoSEJ!8V$p&{@Z!_bwa4)!>K_8$;I_m{+rPtQN>(onc=BzT@&cHhGvFnBRa0&Aev zjN=yABy|*@x)x4?S{m95^W3-9cn2CB7vsuQl{j|>YKfz7^_{p4E1PjiM=_vweTk7V ze`B97*{4!mi^WM#qy6%PI7i(8m;b&f;2LBrW(YyS=*LRgSHUvhg1-SspsbIkqTGi2 zk+)zqki-9v$r;#5>%M_J&5u2nbm*L$@Oh+)brR!k*Ql~ z4H2FWnu}NS_c~YZfj%lO)jBgTaeq%7pjVYrE5B%ejoZ*Rs)_e0-*2UMzT3cv;cUbu zU3SpbptkpK1!b-21;1*4M!i{a=<9J7vt;0zB#liG!GOPNJtEPTrMF?+Qdvg5j+HrC zj_7!GDZLT6(yFMRrVFwZpC8;zRG3Hvn}&aT<5bJ85+nPj?S19P;n|_C4fUyYjAEiA>uH(3 zZj4NYo&={U=Z;-l(4T05bpIUE%>rw~=8z}V1`@?t6+Mq|o<$kKR$PXzrKP((4TS&! zh)cMUc;>pgD(?$9({KYxVworJ-zPQ#<)H>XBYk8#>bVe_=D9U!fuTo zQtTYlaPR7dAJ}g-49Ra)o1~&@`e}V-kDwkC6$1@=qJI1*cyagNS>RoeaBa$1mM+^J z4kC>fXh8PNBjAsDG=p$A3kzdR4`Em4^anR%c^csGVvt9Sh~k!`R4D0Bi1r6Tk9H%^ zA|6o->`fhLGv;$VMW2#Ii@Q<^VX^5I(c?ifjrcBj{w*g8)oXTrp<`KmP@~Dt9N2nx zu}Fx;3?tf-S7IaX&Pv5?G$RYTKo67aAH#9Xpgx~&alNqXwPnJrV{J{zk0$Cl@9~z{ zH-d2^pM748#71`44W30}gagw6#m^tD@fbCjuY;HfIHNMB5|GND7Z*f@b2$T3@nyk;m)lJxtDQWJ#Qm2I@UXDUf8DF-ds>J0m@H;} zM^+!l2Y;r>DV`cbKH`_PEclocl^PU}YA8pR0?d!D@^X!E3h*I;jzDWl$#t;K$U*xv z#+h2KbcUqs7fY4)d-p&e7XotN}{8V5Gyg=P=sEPtrp1RK7X|4gz`#VIDPSbwIZvi0QFCIhHx_XNhs zkg5Test22#1QgeDWI{iU`rzuZ4niQUAguNU6X&&$8gXoQ%6>^79p$}a<-5v3HhLe0 zPKR;6a3(Ic$YdSmU4}Hk^uA*zRofwgQhnE6=VzZb%hb*=zmfYWht$4SwN)2u-W%Ob zi0IS@@p6f0+q}Zj#laFC`U%ms9JzH)#$~#w22K{i^2EYu^I3M?xj)6=&}sBw{oDnM zAwD)LBjX?ro$VxALTvwS?mGp&Yq)k=hM=N5&EUO5hu_H6xqA%dSk_{62G|F_jO#$r z(K%^o9h?nl{`?y3XYr)e!zMtI%fuA0u*y*^e5}k2No{*r$wbP$^n! zCy!Akh5|s|no|JM{M+*O!f5M^Vb3zvAftuFOF!6qX3dCG6y1=z5%3y5jb38W}N9!b7z49G&l&s4z zE~6w?`akfcGxZR0`c5<+Zx|Vv)Y|lrxmIgI1?}q)8u$#vqM^ZG>Z;0`sjbBmz=K%o zUVC`^ODB|AuOOJodz+IvXQkv1l>?V+8G48?3w;uQHfz?*o!RLaboBUFozJn0$L@Lf z>+QvX-yP^2Ph4%y9t!mq$XYBJ`}p5Nwf=CPCCvN%k+SlUMTq3Hb!>zDzlE>i!yJyV z=)pbl)MGmvF%~@?rD}t4X;k-5i}tx%6J3ThdzD&o6d3jz+K2Xmkk}HR?Gxk0sVJ{S zTL^5#E98)o*jykkDP$bQ{R30nm=exO_}o$`f3a=wg+|b+f3wDycx;Sp*XP}Ibti!_ zc-Olo>9-lW&k^LJiQl6yFR4dZ!2r5`O%4;8-d;4u^B)u#{waSj6w-ZkyzAgqL0nW- zvXBo2rqGr%7e^r5Rs%i=Y;+-zU~pvtF?3n=BmBb-;%>QT(S9fi z>{;^IDc*W4z&@zHk&6}al8fidA2~Can4}S71fE}S4a^*HnY3{1tzFL-n(&wAMdF%% zSf`fmB}I0qU+na%XQBVgThz_xlPXZRyTWq4qifAv!8E*zNZrasd{j&^nhABdo(?4- zQX(2zp2+dnbMs2x?Nm-@zQ~{bD%y!@xkeS9MZ2M9>Z9`0qF#=4&^I>|JVzKVT_EHah z)IMcdq1n7db!emgi;0~<9wQ0E%anVY=ca}34)@2gpv9G8#?kw^Dzzi~p>N>!-yYAa zB2(`R(h1KiS9;QjnQiK@-wsxFe3a>0ih6cL6D~Y2n+Z=HR zdttbu1{|e}{Vo%b6Tnkp(u8#odkz3B6}B)XuD#|NYM(J-e=C~ca?|LZ#^;lw&8vX4 zksZ8-H<|qwce|yKN8N-~p^{2bLjtH2+nH9xuI-*RBbd~R@HE~gXJC@WmT0o((F)PJ z><5$1uyi|@E2Sim6#WRl{v{wj%A(5$|EE&{Tv=B`q`{Bt-f~GOkqoS5xnrQ=t-bVa zFf^i9swimD`gkiI5*n4ULdwu{-9|W_{(X3Rd-i(98`k0p_qS6D&jm%U!@r$OXisxr zQb`c$^(zQ&JArV8xmm1-L;@`6m}9!dmoP?tp*54tLDa2s*3_4}wX! zPGO#Fe;5!Yf8jB&$~E~@`|LXy-mUOW>~&A^39=f_j%QZA*Z zT6NwD67C*5&|Fo~p`(J2GHInKF4aC{ut{l5U?0X5E#xr`TuMpfbh#VNjmnFZ4teRL ze53F9jbWzNSU@x4D~L(fU-(Yq(Bc2{0&p4EA@$;x@+CN5T`+JB5x)ath;=U+SGuem zxw55qR|7%P#XIm+m6`e8?mzP+v9Zv%H(f^(re9=plFL3ou0;;9#E>eHFFVOa-MCs6 zw6bMb8I(LROW(KHzYo8CMJ&@|0t^7gZ?+(j!<#C%n%&q%BHn4>-@^1`(#MVGT;ko9 zIz;&Hjigp?O${+qsZ7!UDqYrpX<4}8Yy51!`t!7LzY@BXWkrwh9=7-3?qp!Vx902K zHN}D&QCzVS?rK9{f&dA&N}&C@L19i*7-HuA+(=S z_a2_|TkQ9{iEp6`%2ejO-SquNJ1m>$}A&E(_>Li4%#P@_CZfpguK6ZM@n&bTp{*CK~Q>`B9O_A0oRI0d1 zY|EmS{xeH>^GYr^5Vei)XHvg@;4sW)0x}g&&n-N7`iZ!ERi=*Z4mxzPH}pRJaCfAg z0GC=;%g|-**p}rG|2`?DhY8FJ4@w?rq`!$HaI3Xoc3Mr#wnF?$c?@sQ)v=)_>wTx- zW%Td#qmGsdUeY-i2Jl5P10cT+TF;@pdoA8&dsBnf7B}lwimp27B&GEN?j(#6{K*oM zpaWCzJE`TFQcd99tK09-Tba=7A@nSU2B9)O0cV%L<_I|InFZRpw!Q@G#wBtGm)`oK z!&zU%dZ*k&{W~V$$=K8ht(D00bmsn;O-E}koRK>He4R&ovmvNR=7>LDn9)qprdRtC2o3C}bT!dd z-~a0?cw=13h7(Qz%4eE%WEiT%d0<(5CwTw}zqqQCh5MAnTWAW=QWz}tDxhjar#__iUzBjd)gk!1Da#M z2059j-;WwNEX6T$lWs9n3!{eqmvc(yh z1dFUpugW8dQ0!`}f|kF&Nb zu8i}AhdPbh8XzZGnS$aScLDDoUVS4vem|F53i{wnmBbuQgx;_a{D6t_B|E}m!jtrN zg`e_>C>E5~qyJGZ7{RkgZ;pVVwXdlUV-JgOSa(dg7~XfUhDR_vCIzix@#-93n>FT> zvDI2~KvUu3AU&PKo=Qq(+NoPPTl!O~oCZKu_KNxCIW%%J+*D(7)@^ZCFIn%NNObsE zyYb*-?u_mm^K~hkoCi|<3|uj5JP3pBXOGqUb%zMD(XL1MJ@HOv12j{BDW5uJLTn?M z=*(rfNs}SRieT2gM)%g!7k${8*g4Kazz5yFBv!Ic&nXzR6OIXq*jJ>Nw|&JqB;P|kYOl>rg*E=ZsKr{n`l?d>LuB4YCYg1YN^vd=m3%)c!p4|N-~6J0ZSj|wnt#f1 z7Hnw6lGtaf-~8X*S815~mzua|k?4!a~B) z+uA1YmE*28UF-PgrBPL&UIaLg8Q_d`og#X03tNY@rT1)HjLH+H_|k4j#&A-Oprxbq z(H9>#_)uxVuK7@@pSFaxmBcUDQRkz!;#Y+OUu(6299^Sn+_i0r6dwKg$b6q zy{WL?T<>Tl4dbO1K2P;0(ZyGe{|4;(-92zg?Yox0+BfQ$02&yLQ)mt4! zN$viyB%y$HjYa(vrLJWiphS`X=p`YXz_(gLxnR8@PLGYM;l-;GmwwNz+ieEJ4Oo`I zM*nm<6Q9dTZaCZoN2#c?&!R3l$rvr^NcPRV>9%%&Ka=Epxi?w)^GYO#z{@C%4CZW+`tTXnaykHiQ_mXS9s|Tzb6(td6DhLBfm* zm=RE3{FREtVH9`h-Iv&8y0je~NS z!xD;zA4#QfUJ3bJyx`YC&NAOGOBEHd%k}!H{JnU#$V}YqcF_Ciqi@O9y~{F3E@Sak zjy~3OLT^{T)DrJucrF-PO1Nh5FPyritr9a1o_I-R*uX;i@HMzjVhq&YBNM9i@}3}n z^#l#}JH|(-%}rEPAOT{?0&2uz5y>{h545`M0hm%0%;D7hRQ(>@eNBfW%A#A!n{#(# zZ~y($J+EJGL7=ssewlaYzqZTdm2A-o^i@wEKbFhQzpd^jGW%;kDe&O};X_#ROY;)C z&YskNX71mcL-DGReQb%v1|0$ksa(+-4Sco1zO;C9YelB4(tSh6Aj)D~3K#97E}ZIE zQx~k9n-?rw72ZoPUiDyD#bo#f&W01JbdorJLOvdqIMpQNRaf3$$mfFcHvtH2d!*Q0 zRDg#%2Yjn!B=a3xL^m>np`<0wj{|<(;k(1sS<>zY!p4Pr-u;EbuuB5}HozPH*vHLJ z-{V!MQ>xR+tcwWF35#&#BKGdm9-0Mx%LY;YgEXvuoWi?`IWG=~MS5_0tAh=tKq{dj z8;j^BBXL^Hg;4UY6G$;+v7?~UYhEy+oHBulA6oUl!G1eT>m{e(icV8p6d-G>>$>Rf ztF%3l%DA(i-R*sHxz9bvmehYBgI|Wku_3BN{)_~B_F-KfcAeJy|G|m3Xst4J@xW~F z>xT%l_mzr*7+~>XtixrkUxK7V7lPvr0FuCHmr`FSis3)jnnPDfpyeLz(YF6y4LuJ+ z^VQY$DZpDnUR^&y`lo)iX{<$q*gp^8skpDVsjy{AYLHjp&BaH8YzzhExmsBqhY>$4 zX^7k(WwYhKm&v~A@4?5>kCD(YeROEY1JBhL^g@OJQU>S!Aj!}VMBe%WM%rX6%c9Mo z_$%2P9U2e)f1f-FWA-23FsQ(mUx)^Q8chrBLcbOCUZrE0)gIv4JvYzy*aqfthliUv z6@PYBFTMO`Xbpp&l;bGT(*TKycYpKWv*#rrR)2{+)@3oVpF!vi-IWv)7g(DfVf_V# z)fAhUk;X(pEg{~Im@50kIT-ZJ-z|XJro5A53olOs9u2kVf)tNOwjKJIvTrB*CK+CC zQ+!We(-ID*uJs3lHsh3dN+SAYn4|i+b5niviFdn$ov$#RAw9zdS4A|_k^X%UhCuRc)yEMwg7EyA5e(}R;Ei%Yj+rNR?hxleuo8)+NC3kl8s7Tr6e+ekE?{N3a(v2`QvlacCGvgm0?fN-1UvPZnX- zORsG;FzB5S%}8=f7Y?;)rmtl#BJ$6YW2ry%i~inIjZ6nNV0bHYM5~7;;sQYMTCXn1 z2JUdWsU|JP)S!O%HC-)(28m*`j8Ow}vYVK+53;BKYaE>A<@#vOBZ6W`34@^f^qX|e zg+MJ4a#Ui*?&2uH)Od}y_RceCg)b&S<(Dur^*ES=nwf#ZrZ;#EIrw}Z4TAuvC&MUq zl^!B%6qj6l!!CJc*Zxk6rwD2;b@qurSwRf@Dbj_*G11|I;OV8z416vO;6lCAkivRJVD#=y;6gh>_#R}w90Pi)jfAA2v|wJ zCf@IN0;%c)ppIUY-B=F&GjdtPAzpP_rE$jL$u^Wd$X(N~LG9>)p-Mu_9(k^ZzRvKo zK8J?Wg^wc)OsYI0VCU>w6_txsO_?UKcR1MB7bQL@7z$9&4l@2|rC5Et`KNfU=Znt= z(e(NyPXp|TQS9!k=)3v%08cd9ZFlAQyHhj(e0AQ$z$+VN!MUdPCVor zW=l{_B1Q*7*5%RLc?Y;6{eu76@>fXJv|R=SyKv}kZ=TJrvX`csP`n=s>zUnlKx3S^ z4C%VBRVXPh8Joz%Gye8`SK&}!vjGk8L+igw09yG?!!sRisQ5pQ+5OcWfo4Y*>WdiO zp5>^eL^*dmQpSR0&E4fY$R|#w?1st0JqB4DRP>|t$|H|6bzjHSbOc)O%xlykOx1-9 zT@^ixUVgu3%stbph;36e)ur*lHmD{U+^Losg<>zm>@&h2>DlCq&Zyki4(sIKqQ-}0 zE8ZS$PNtb@EMXl?%*L`*KcXg7kA)q?Bs!DLB!c$DWJm5^=gr*-+e`P6sq4QQ{MPAX zy0e&G3@orUD6~==3klQRg8Pv^a zS-3QPRv~Zn71bG1Jn_pYB-t+RJ6;C(&f5KZz2)rBFVK2XAivK*LJzb@sf*e37O?M> z0sFCfY7232{HjuS`qF>GW28G2&o6Uj(cauh$EqkYNydaj*kZJB^D?fc--7&P%jOwe z-z{wc4BPXrysU1S=OmH@1+rb)Ew1;nMM(aRd+Nm|j zm@_<^lPOB!>!WLMpQx1WSMFiB&0>lZIn3Bvrk(>V?XL`adp8W?Ggch%Du0VqNiKH$n5NbXy!FG0M^PL3 z^H#hc!9merL&R=sNVGwNJ+wtOne`4^mwoJ=d(^@@=HP+XukURJH@q6tiWX29awi#O zhpQ7YcyGgPf#=Up;~d4JO_-Zy4e(y&=Joc_SsSY|(NfuH$cdL~CODG3#7C5Sh64*y zE6=oBE_x>#PbJ#FtkzS zUs;SVb;!=-zHT?bqWAdyXb~A8vbOEx^9F|&h`Oq@U>2bMJs)5=v=4b z^^BM-a*W)6wsQWM+9JO-r=y{{PwmKx=6=B$`QQF4fhV>)>FCbo?_X~n%DzHFO0>O= zGlpn0p%vHEQNLxLDOo9FlWG3je?@P1rS<*sKuy!1!Q-bvQ($7%1-5)`c(=72vkfFX z8#v})ow5C&S>QkbuQ6a_A}N1T)Cj;lwfOkwvQpV`2uQo*(% zsz2g?{Z=9O`VY|p+8Eg>Qp7O4BzuNkPgUjV?ZER}){SnQlM!QjAmA69|FlX)ou5{n zK-YLkP-;j{YuqHo15F-<5#7W`U#w=$2Lb=j?7<*p*lJ5#6p33DR8se_Hr9(z#o%C+ z)E?7mz0?pw0j^nhY)!iqp^qj{Kq+GIu{&=_PlGF=>_}E}SmQB&!T0d8<)na++ix;pT;^hWdXwbbPNl z8+;6?>ilC!9DPhEC(U1HQ^IF}zS;ICqA08`>j3J^qVC2m;X#5}+CK;~15)^_!rPh&@6lNbvJX|^9b`Wu>nKJlvi zLye=}Jli3rpD73qY3x+!oPb7|NZ1BuM{yS-A)<}Q45Vqp#jAtgLNQJb9WCZ_kET9~ zVjcRQRu9tN@U|Kd#hxU0KcbrcNGZb~#tLt0bf!<-AuP6%9KN5R^wJe;c3Jd*cw8Nw z>Ja3LeFGL6{ln(nlz4wPTg+8_J)|a(xU+EXoxWMDrg& zpnkq{<6)&VWxZ&`fmSShm_X`sE|b*{mDS5vBzWsdqnRpIlph`(_&&Wo`P9U=R70sp zv}9TL0(q6L(~=`c+n7-oy`NQNEdY_#CsOxqHkCpAirD+A$}KDxHI*B(@E2`+EH&FG zrPNjHk;ae!UglU)OFcO;KymdNm<ByONIBT+Q~He&yd&Z|BD3+&=#e%` zwcKQ)wg*5nJ-J1pfVM>G8rNB%ryck^E?@@m$i3e>BFGx*AL^3E28OX+}_-LnE zEJ962w2EItwrN*le_yeCCii9A(=Oq)qFpX~_o?PWqUwr`MijqPZ!<~bWpHV!Sofbl zJ%vgISESFIsm_duEy+@90=>X&2}jb!_^snu4RTuSNi|u8C!>Z?Ydb=yU-F-3d}R$^d3g-)Zr7UrfRl=*c&~3>$WA*MADJ@iT(acW+H_&&u6X#|ize=pCwh zRl?Gdi&m%&RN<1bA_V+F=-kHtk2)|f{*O7pdv%cMJa2m+vzx+o3*dcJ%ApQ6{+lpl zk@XXihh}KO{s8ss6eT}4Lqm2uvT?D9hc~jhzTf`1lf4x-YjEVJV)EjRL9=};4|RuHoC+J6`vG7GedV!Zy9Z-oZiN1n+x&VLMuVnl_%iymaAXG6r|0_vcIEYlgB^DKvSm~= ziCIBf$nJ=+fB6njVU4Wz@vvX!CPV%&E_=gkWn`64+k?-4$ACVQs7EFm`a#FL*-iIr zHFzHq!bzj-j|rbc$DLcFGjRiGHux#upKgXMN`_J`)70^ZqHwfO^}U_bZ*I&8!U=8< zz>1Q}q89Zu+WO9q*+azkUS^NXGAKsy2=Aaf5!aC}6W>c z`0s{_cYgVLg-1KfkcC4KQb1=B{aTP=6&gaD{h?qK)ONWLJsjWUNWXGdAAdy?Ohn7$ewTh*3crG z{qo)O;DWX9n!2=&2akWn)n4bFHD_=%8%p|~($bT9wXAV59&uw{tXylhH|@3<=|59n zV4jDLJ1#1-fS~L}o5!EknL6aIIQ|46l+g~gFHsPXLC$z`2_LoNzyeu(m}Rbj8k7mJ zA)Tl7O<{&WLP!gSi-of6a}Q97VeHeH*A{2TI)v|@s{o_l3=i2Yn7M=qw6R#+<8C%B z6YbwCG%)zwU_~h2eCPc4R$myeu=?jj^*dK0XK+Fww4jJ$7*3evHPUQtSo88eWkUgr zTzX*nGeF@GJy)c|9^;rBVX}xvMDvh4TF9ymDuPuNbU;%uCjGl+Rh(=Q=j|a!ZX=uW zkd;3P6}QZ3XxJ+M^S=Q4lEVLHu6vr#gtC<+n05U8BQ4|=zuYP`!=|Z!`BNdiqfrh9 za-IBXTh^C`i=St1XBL2n00pTed4<$l7hyPZ$fFP29}Jj=mgv>GyJPBNUX^SMl7-uYE_ zqp4MIdp%0@71BK;*!s(`;ID|9=I5(j;H0JR-T**d_w0&EY9#i@XwKien|OBNPbj&P zjZYEb^`7fKHl^ADFEb#vX=4W}cNw^B@;_VzNJcis=(?~Z`AY=djA%S>R@Sp9!MRXE zDXAw|?%RY_1%L9b)6KVy!}G2|ibtsqUE3tJgwv~W$gcm>&egv&y*BXUr5R?;Led<} z+a||jwXu0S%*M7NjXH?DrMyJu^(Z=RY&OhhR!WL#Q)(0{oDzl52_p^_waj}+*D1%- z!#U5l>v{f%=a=WV`*U5N>$*Spb>BaHzn}Z_xhat%=Zil>Dh5V$ss>^LPA-O;d_?oi zX)spt5C8Fuav)IA8A!twI!g(~mUk&gu$-(fuseQTp6__$k4^|a$_`~5@GHq5%G!AQ9KCzRxRuZQB>RcLNEAbA?`U zjuh+sQM?rRRs`*&?JX24mH2mMBs4S+3D!0{Rrk})6{jxlRmGkQv3^Xo-n~|ip;svP zi-IMPsqtAXP^>x%2mb)0OH$asPwLL+$nCL?Z3vD{A$Uw?HLT%`q;g7G8n&ljKxr11 zSqxTDY~0^LPgNZyS=+rQJkWzkEl?{*@Fu_O(|kn8zamxa^yQ?VyQNdtk;9X}>w@AMnwImHt?DEY@{VYWu zmScGTFk6srJ%xhl%)sGixHWV~bHs}Uy4`2Enh3E^=5Z++_)Vd5rz$+VMM%=;QAIeB zBV_yz1DkzQMC-s!E7YNGO=4po?vH61Moy)jS+DhirJGr%<#u916GYGGTlPaOUX3fH zbov!v`}kg5XW6;!1PkhSUP&6i zEM_x)u*GfdL5ka$6n*R)tAq7e%bn1=;nVUibBXdGqg#X-iyC!;L>M4`t0F{K>+e`> z1gy73{4HJCv!gH=!40H+VgPIDY(Y=qW*EbM3ueqLHk{sT#o5uCS*UTr1ShbI*+ysO zf%1ZS(JNgeVc1=3Ps)WWJbC)Kg z`#+5LIaytCPkeoJdLm%T*#|{1qrC?luVE$J6X;{1Fbj_pGZC2!;#3n{v8C-v8eX?V zjRih+Bdfg~vRYi#98r7D#E zyI!U8UmNn+V&Gj9J{}(WEG|3#{@emkb=w+NXDovbs~4OihG>9k&7td+rUkuNhZXFC z-Y?e0mNPJ1M|qzkN~F^cJ@Rr8-pkUscl{wrGZ10B9-7f^JM!oRs;NN+v!xkv-x z##5WUlsc&h#X|Y8){+Y+j0sC=qZ}h!cW>y9Xx{b#PVX9XC^lgIaub~?h(99voIOzK zDPA)s6cgd@a&0ZC=g=wP9E$O&%P3;Ev>+D~TFF7e$1J`7D zmaerU1^zrBArgr)?wLJFexRS&Co(*(Ow1bz3pw z6}c&Z263Ii+&@G~^pWrp^sD5=(mb@N0+$9?38ht&_*w(-;4GR^El<>uMyJV1YW9VaQ)zMWgDk*#do#WpIij*b+0oXoH1BNax* zfDePj)r9SX8n^t{@;ct{bpMHgO+QfKkGXo$1AWk*tR2g{8+zr${YV%FpZ}<~7Wz^h zPM*Bpk6l?{P&Rppq+^5eAN>>L%g?>X%1Z~r6Ls1*DfSkk4d9&_le^aJ zu}07#WV=vw+b~8s;kV+J>Z^}_ggSh^Ok5lK)NACJ5|Mh*W=J|Nv(3Sdx9}gj)JTi$ z(ee@;*sl=%rGhRw)nj~MnTFr~Yr*kpp|5_R|57?4v-z*berMvt-ham7V(a)R$^JIt z*UxCX?F^NbQ5o`pOvrK{wKrhN?cU(!A8qYt!|kapm9MmA9J$G- ze#0ZZCcN7E{XLzWaNX88GXA2*<3C)WuIX_h0=?T4ze7HksCc{MPwWq%MZTVwp4I?-k7pW|?8z1B+TcR(H z{oY0;wu$e$WKb>&L#5G5`2O*XnD(4L%uY5v6AG*`x~a7Vy>Ef@sWf`c{ovJBd68U#b2k{=`nYTRv&0G%v z@f%;7U4bbL%@yp_ZF!RqCjgq%Lc!jv*KsZr(0f-M5Y`YWJiGH74GVzU_v1sWfZikL zJ$F7ggrt6q253SK0I-{1UjZsRb%0g1vAkBpmjT)c0RF$2|K-kf{;f6c2FrC(yL1|O P-RnCl*`L%vjAZ>At>jlK literal 19460 zcmZU*cQ{+|`}mF6Ga_~nnrNt5qoF9V5=yPA*;-YzwW`z%v3DqnB5GFcP3=wXJzAS; zt0*;Fe))Vq-{<#S&-MI~>s(i^ocB3N&bf2nulsc;N>5jlftHJwgoK0vgH|&jAtBZJ z&x4wh_>7+r8wGJg>S>^fA}Jq*?2?c`Nib?EMm~@C0&e;649>VRWvV1Cu*P&Le8z^~ z{H#)CO3n(ll(m=iG70}j8=c$rGdKMo6(gi3-BKk2qatW=l=TD zYZ->Bzg=zEVO5dmC+*)t_`2nkj8@qWiv?4Fq#dNcH+){cl&9ND{u1;{|9h_lQq;fE zqP@LTR!NkcPE4f!=luvz{{aOSrqL+4uigl74GxV*27bCy_;<1Cv-srdrTpT*=T|`x zMU8YNi|41;>F&F|*!jx&JSiTPZd-RR3jF~E^YQQxC`=NpQ!OOw`f>Zht0emcfjeTr z<)rZ@ML8f#jHvt+v$TS4ouvwR)J28+0}Wio7QeZYqojM!@{89kypqM$*wizf#C&hF z=PdX#Im0y1WwUz)%kFCvT8Wj7diCp)`2e%;3Wku^y#;qP7tMnLPNr_NJq*Ls)+zky zyME6$x6~6RM^LTf&}#JqYq8%mL$`*9iiCBfT`q=%8P{4%68`#M`d;`SQRItqt47*b zK#^i)iLmJ_i}us-ZfZ!IM1O=jUGm$9VZVRo>>Ppkd1c&h{LmM%Bba#dZ5Y&Pl9h3<;1mJx`?I1@ws1s)Hw);*r!5xoB-geg^q4SF@L$( zRU|_xeP^4R3sq0z=Q5*_-wdQ>OPvgJAb6=W$f;vPZEj!?t=jzcCuZ^ehsloeO7frD z#S~%dm0(PMK<<%~mC7Zcc3n-Iiov;>f}5=zy||e=&FHkj3{R=cqa;g;4bgNu3lf=p zF7#oQ3`?fa+Ahq@C8UC6D@50RM>?DsM{ClvrM0(4u2oHZ65 zSN!XZzgx&4&jfyE=&EvwHsMf9&oY(ADWw$BO+u(9-A|$l*_d)Da^avo%3wdi8% za}48rrE&{wF*wjMY%+{OeOay&&8EexlH?OkZb(L6;GFfbcCex;0)CYZppUZd$@2W| z(cH4YH;CZO^Bk9OHPzUhlIobvzSy!1~w8* z$=Gq;Te`dSjLO~jX!~;a;-A-wasES}>nZRq2Xm=A!@=3V(wcL9_MLs+r~);F%w{l0 z10ogfzM2_*AXyd_TDl1YQLUU!HCBx9x|n=4<;LSC;kUU$C3=%qrr;@F@uIz@{Qis2 z+!S1F1{uN*pf{DrCONc9nd>R3;;VYFUA|)P92?ID095A2Yap#-?hW0D9$vFZL0@~v zdd>F?(=S-4{#u5FiAGK>ioJVcfe7fb0w~`|sd`r)@JNo=%AhQ1^qjs=9nN_CVZ~20^-lukm*40%O zt&;c4c*T7AVR&URaox~Wb*D^a(%7S&w9LhX1Zpw`H-+~3FE1X8bOPqmSOc>DDXW7;WDXYL;_f@c%@fQI`K40CE8v%!I!=d_9r zoz*WN;g$BTq!fv!Ef7kD(JSdg^=Bes=z%n*FiN4VR|?Kz+zKY;(qDM?9*-8_cAiZg zuU(ppms^Oal3`q3NA#qTjXj=pNQXwd=z<=7r#;d!X zX10z}%_bJolpp2T_cVeYWiEUA%9(zPj_%e$E5&hq4!G z*NT}u=QBm!R3#l4`Rr_nPSLZV^wFH_vbQce-$iW6D5@V?B}J>c0X@_hEfz2wS69D& zW0hA|IM5hrjR^=!jIX$5$E_-4-1X_N zF-_M>>;iL(0qt8x5UU#r`-NjSTWH9v3*{powLE{u569-8u&@DjAd>Nbxvkhr-=2Pk zMcF{OTcVYf(w&sR@GSTHwdnY1k#@9N_ZFf9upZtghz45mc_k_r>XD(&RXEhLU+2H$Fpl<|>&ht5jvQkBpVW4QM&+k6zn|C$=`5-`O zGC7w)qE!SXLx=_yyX2D(_jhddO5Q<*IB&Kts+W+g+1oH{(>|tL1@LBi6Ix$gOSOwk=FN&7oDg)LFpL-o=t!0+C;*oIe9 z7ZrIsJ9RL&js_>axJstN%X=MWo6CNiN!ky0(Tgv zWgSzKE<^RHa(N~O>AX_1&4ml-H6GV-c4>--J6;nrMJ!;@d zSPQ648j4V-6|$M4uT9&?<-D=v(z^FpbhTr}>u~RH_hm)d!Tb*;BIW$!cx zvXRtpGhfSM2&~j(^BQ8p^AWMys?SGOTVkhU%U$bAvXHqv%kGUA=G;`Zw~XQk-#*np zP=<3Dy3}@tjtHJnHch5+Hmd%if$OOC&6dh+WCQ3XsRmy^egN8H??9RH4Uagqg9fg4)`_asTk(x$5;tj65uK&U!{5-9rAwEtwK5dGN-8JVp9f1 z9_@Cr{|SSHO$!!Rm@Vc0aItx7P_Zqabjv5vMrF7r-y~f(G^E57;i<_4Ydd=pi%g_~ zzGs}#DP}r*G2q}L^C`X9Kp3A@TVB6)8@P)MpQOiR?q;#ML2oE$=9`B1SocJR!hGD+ zkxINh^Ei8msy^IW<&=JbbM&ZHItip8f(^8=QzKMz(E`OE$Lr6in)&oxO9JxXZ+mImqai`*&cu;l`EM!y7>1}9 z>uB3pPeoA44C!HwojI!3mBVAN`&@1bGRGvEEDrF)gM~gS8Q`dyL&J;^D2{{A!56To zU#|a{tXElp%{jBaT5fJ{Y+;b~e<^Lr@45wT_5@(M%h=!UvsQ$ONQg<#w@@%u{86i3 zc*i&iFq&6-T`v=y^>@2@(j*DZuNJEpey|g;Y2$mbciQ>L%u;~k;?jV_AvVNQ)Q;&> zyV;W47eB`qHwrQXk@}F(5o-lAx91vfs`QP-y3x!-iAlLHs@B;-lvkH{6C7GBN?0af zMk5*7UaOpM1;yO0BRecA?Pk2Ut?n0{!h)=6?l9okxq@X3_P% z_iu&obnw5q*#vnu`cVqkD}WM;gZgZE=CATgcwFg*v$lYH1c6Oi>SY5N*&F6d#ak$0 zCjU`^ha{-KLTgA*cY*1X<@O4O7y;B>D(bWfJb>VP_&qRwdY79Hv@A zgD4@<8ZG5#?7+I@6^M&29+%1P07K3UzJNXaB5+bP8`ukHYNTy`|} zGO$=T^Sgo$1eSC0=0r48Zyj5w7V@gRfa^_yD$^9{4PI^ z{9$p@PUDRg80h%Ui-stC%?oLIMeM$0(4*sjB8@QBQgS<4lMRjG}_ zO`}Q36?zYU)pDY6Y{r?Cn~NzodQC-miW(GydEQCb?u6Pz-J^a8FIj&l&em?>`m<5hQ zgS0q~OG~F5gM9fZ`C*{RVtjC}8Ju>m&TuUKN?Z2z3@yAMM_X-1lB3aSdbzQdV>23J z^Db;pK91!J-ZFioc!qlLGy?W_poDn>6&2p*d+OAD;U(2HtFbVUY=}VYg`g+(f4u3# z|4YmNDylZEZ5u4P)0YU6+ytXNPMRoC0*pQRGei{qN|w^w?0|rcWsPB& zl`a9t-dF1HHT~F!eqC%KNQqFRruK!5%B-Vf(?^I(fOV)~uM0d3cZIRDVNf*6un8tA zU4fL0OAxS59luyy(uy|Fb=)Pq8Bj@ntmUNV6>kJKi^_JfF+~v*@WFh}hM0nzcN=n< z2T?-s+CH>2D$28@@)qlwg`;svoA!R@uzBGsziX-Y--1(DQUH6PC^flG?sPqa)Q1$Y zBs?WcolM>bJtsH;#WD z3lIJXL(i`7Ycsd2i}++xiX~`9{@ncCz&`V`^a3yuAV&Yd`?^VU)BZZ(oLmC5ZRkm zB~5qxy@0I1=H^|&E!kZwE;N(R@i!<6wOh?($7SxF1+uvBl1g3qfwrKm`^-FH0><0} z9?CxWHi5z6tgQsJJDsV(I@DWxSA0`{E?d64(j?U%?;F(??Q|Hff1^mqeus-O2P8)f zG`i$_yFGlEW%2HpQ1rU=s*iu$KZSs{^WV;{0x90K+yDGtfn+~X2`1>fFQE6VY$OTN zVT3zX$8rpL!>PTuH(}cY7bo??_nhz2T>(&C4{bT*@pO_#@{%5Q70x($vu4D(oM}B$|Y8$zt90qYd+9aqQ zlAi#rGNI$O4+_YGz6254LK8&Y^TPu^!V@K)NKh|??!79BOX-4XA)KiJ>{OXa^N}1< zBqejx0xH8k`H>+#Bxb)_;_k`(3_Z~_F^7_ViqE+}bvR)iM77JmM$->#m@=Y!s$&fW z(vV!-NdlNBzxfTFB<=BCme5MdeJJ7-8B)71YR4xtDJ*}VxJN*d(Q|EqMq37xoiBW{8;XT0<`nV-W1b?}-+kx6 zp_O*|%!7halgmoQw3w%i{YfGzO5y}os^`ER_KLz6IXojApL~!0dHoA)esSx&_&nz_ zcsCs@9KgU#I#!j`d8)x!=Sp0jR@H%^C}E;{t;7507qY;c)tT?_m8|A>?H$`~86rQU z2roP;ME>?`#^Hm%m;gWVu;^>eE;KW{_h|3-1ptGUf0Qqu=(Ni&hua zOp@2FE3XKP7*5yZm6v_2UW9v%h9(D5Q!g^tRhd{*p z`P=L^E`T`~P8MN(%${n9=7$Xg5r6?EyaP+sR$ppK?Rl%GIQMnkOfgV3@w|@MNa;-t zYL?G@^1^jS=>zpsmz}YkC(rF4pp;suQ2)cornUdD<>-}j(mk@&-9XGP2N?=`tYZB# zlCy4OoQ^&kT_WN%B?+7Q@EKO=^H(U0}+x_a=VV0s2p4 zU7=miN8GJqC&nU54H=zbaBqk+@vcwndta=VVI#y$B@j<;Aplk02B-xE{g-@gy&5VE zn*&X3;tq7a>T!i!Z+D<3>+w73Hl`tTK7Hrs3tsN-=N(oP6=oJ4HTnLLtWt=KE##k#^+# zzqm^WF0CYC`IrTlh{rD8AM3O+HzzM)MYFTjy$dJ5XJ!TQ00$|x8XX>qU;7n%S_a7b z`+xJkzG{;z`>k?=(Tuxf3rU1vy;DUG>^1+K?7fAb)#ya7H;J!OrC1KzH*+Sj38}xKAY6|#yo^5-~9-d zAIO6Gq);Y{`KI?$JZ&S{N>^vkFZ`=B!$7vUsx=|s0oi;N+_}pWFVU#m>L^UfUZ~1L zAKDTmFmn5OZ?X8=0!jL(BuDDME6`g!k-yyzY+ih{UR9FSm%=g<^Hr*XFj(8B&j9yM zmjDa|!l&mAgvHQ>PrIjXhc4V?=L1%)M+!|e<`sk1S3R@Lme5;(3x=E5+h0oMdQS@a z#hzoAmLET8|992qEmRe!ryRDUmFMiyhQFwLgs^;k^n~vPpLL=t1YuNEmL5q?E=+ko z^=B_@y${m(*oi~vG0T|5pz>Jw>84|tHp0_7X~{8ti%R&8gMr9vaf|OF`TmuM_*tvP zvk{HCf)ThtKdLn9{aKWO$v!sDp=G@ZE#P%dj z;10Q*u7_AvJ&_119jfhHWPXaHu^Oy)J--sB|SEBddq$D2sM1UDzxXau#UlM(=*p?693uI zFx&^4BG+mkjl_{8{Ch_)Z3kJFI1q`O^Gd=ly0ECzi;(B{ks6?2`HZ0rQJS5LUbkT0 z_^4o@Qik8EMVr>zdPH|muJdGMYTf2`XxW2|K%4~4Kd~(U`_Q=J;oU!-vf4T_PRXif zOVsYdUGNoxcu! z$pMGle8YGD#)Lc_Hzia?XF6=wVX>M$Q!jNBzz!Z=f|xk`L=92JhmDOoF#9;j={lIE z%!;Av$AV60%3YrdmFj7=7CP%B?@HQGg#3EIB#FLrzk}pj9A#&GL;%`5cLYDwpY!7SNOA*!~`|dCaHpM2+P} zKM{{%r53X{AZ!A-zCS?2P%=nSq0|n39Cp~+VM-@%%4?15c63VFEDU*eCWw)1_)Ilb zGLhIPg;El#S9=XBlwj|+fZ&)BUU85&tbUXH&_pyp3X;Rw6+Jz3$=Z-4GJ zR98n%87s|PYudIdLbzJ}4Z#^DV10|m!40u1Vc?=WG?D@p)PDlVo`^(K@PJPA{8i86G%m%1ox((c`hSh( z>iwL_&kL*)e=IJ0SII`GSo|Ida|nqr>gN>3Fpse@Yl#A#S%-l_uRHl4foDRd(5#rtm#dP**xp8 zRTn>L9w%P|p$6r&t`p?wuW0T61HypI$i(NX0rTU}ZrD&s&Ao)9tBfJzzvg?l%MVvu zMr%hS47`(^ZEmvf1f0^m;c?r;qjsJByb1Xk#-m*1FN5d49av_KU6$JSR)d8;-|pdZ zQ_l1(G8cn5`M;DhHhS%yb*$y`?d2o~;iG=Wuvkg~MMxVaWK5kXRP5~Tm7cU+TZV$2 zJFw&h`O4|YPgiljhU2R8idxHSE%j*f)cd2_ro?^`*v$;Ws*UR3K168Kk^3_GU-z93 zYKumBW>@g5yL_mkg!p_ZG6GkzL9~`AS|x%5jLjLKR_tvbLzb*!O;Sf?YiOS8U`dLB z+JigyJ)?7vA1fK8`!Vz-h7@s$Za`Th!4cLrYfHh8PPF7nO}z_kdKnZptGRHHq>bZqg+*b;wv=0G*mRTehI@EGZW$4*J<;njwPP6qa(?C_zjCF;c_r(JrHXQfr-Hvl z>;>$OZ&Fzg{{3fam;!Wty4I@FBd#qkqE#ko4_)&ov zy*_H3HcUEq{L!?TL@b9*hu@+=N1ct82JK|v_{$PqfPe13-PGu`+>f|LzutLuVM+(v zTb%%iQd_3zKey~*-h8a;po>(do>tMd@8Yf&OF>6RXvznSLmb(TbJW^Wz_T)r12pJb zJTBZ{S2e>?PmNS}H3L2j>~2Jm8;nBERG)B2oZW5gj?;fvRVpr+K zzo&3tb)A#f&6yhijm`T254+u<^KrsG{KQ{6G-c3yOg2Z z$zhn+VvY&J6G%-2xJ86af_Gl#@2g?2Qzle+H$$qc;l7#@N zRb_1meMoHGwsRaHG~#(Bm^ULT2`;Dq;o6|eWYRtLXG`HR$wvnp@wqg5JPuE}pE-4N zs;1%v@$NT^d$8Ty<8qUF@-C&l+JY3X_K~%tX4U5Wk^Iw97Xe~VhP`Y=KFuy9vd4oa zDgQ)EG22dn`1$wL`jz^mtcK=;0SamKyf)vHod+aps0+MEv^gn~0C~csUu2t7E*h|% z8(<3q{}thzsoMZ1-eC7~u(aLHf(y~s7eY7nEfF#(L5c{b?CmRp%G}>_$I`;Mj7ukV z&8d5PO&Q)Vm=oA89+Z+xpE>m}D73!`wDpY5;SV5aJb)Tq z;<>l}CcFvk#;mgLS|oX~5%MuSIo2Jejt%O`Azx8yauPm}7+l|rA6eh(uFZeGk|n?h zZehQwhIq-|Wf#R68yeEj{i%)ZJ@FIgNKbk?mi6rollhNV#smwL|Cy9+Sg}!y=hr#S zPmd)MY2AnjXDFiJqP18rZ_1qQPMqFJy!!sXIk%@-=6u**-0#h;N3U9H?&c0_;bcvs$WqcS0q9ip~{uw0c3D}QRMdbXv@*HFRJ4=i7wHpsi z`&#v_^;+yXLy^03p$y~$EnI=Thq*stE@wx)Z%_PMo@X!c&h@?c#{!@K=am+Sh^aGy z_%ccZ;<`{bz*-2++UF+aT080VA7B6H&{3M*j*vtL&WP_QN5KEp!IC_dzUwOt{bHb- zLcaddt|Q{d2sL||twRluoG_Q(jTU^}-31={dNIbc~DonB>5Y`Sq#shRZ>GW2+Ja+X_t4%bQVA@*c3HAKnl zKl|>pU@``FM+EODxiCZsqa3B^*@0?_qR~(38O=)#8R&VnR*5SpnDrBgU&;|lXDn<) zKGs!$oNm0K`pkdTO#){kw%ROuh&|)okk%k^SFVs{#Go)Qzy}LXx2bdVSMPWV^utqq zJd6G;9B?5mu1*9TKf0WyUS+1xnQy34&w-1o;1N}Vki0l1!!sXE?g~B|N2d6kgrMD6 zUY*~K-;@6;ye?z5k@HKUOkS_GEi@t&sB`Jy^x6lv^PKdG^D9o{Lc*0VIpjNEcyOUt9zd}sqyV-LQ4BGfbW{&15?YL9gsW2ko&E$3(BGreK= z`kxZ@9B4Ql5h0B!PZ;khb*9|kY@{Cs)A2qPgQtG;6oq`gYWOAL;Qx99Fte{MubXL7 zKN?X-X)uV2>b!ktQPEfK%bH;l(uKbf_8J=E-kHx3IP&k-;c0;y{?ju@h_XcB$6o8t zrWz6c#al>A&POju)f^#2cEkFoQzG#CyUP`44os$Zl8Ai19Q|FNIo_)Yop1ZUY)H_( zlBF5br}z5N<*5adq`U5JZ1$P5=?pbAe)}Plc?Y3UZ?OkY2Ty?T$NzPsfxp`juya*O zA?D%8j}z7@9oBLF9Hc$XWF^9=!MM=5oBa4fq!X^1RV9V?sSsp#TS9BCQdTM5Mvg49 zo4P(ym6@RS%y)5+Ayj$38I7OV?&>rSaj@j@x%61GO0}Mi?R4XKqLGlLQHnKUC2VF- z9kZ23-cIqZ=vB6ONo>KTC48PRxyagKJC`7fRJ~}WghbQ86NDXaub=n+3Vi?ggU$u+ z_uum^!M69RHk>iti|;W~&GEg~bp9OiM;+mHYkEcqovM6Or@vnwWx|+h3ikaxtESgU z6zW6NX&KFXNNihrNyuIvjr$Z(0uB13b`Bm&NiH}LC8Xd=br1+UO{>ZXwdv@V5nTf= zMJ&#_19smq$v`w1S~{dUaw3LL3tQfQ89rA}`LFx5Wctjd-hhj0`TFl)m*&Ps|8b4l zo!(cPukKk4g(T+c6_R!K;;(XMr`-VsULu=e_ur3FsG&v7`muSZMq`{^oqt;Tto6+O zc2qGD`cq=)NCyReyk})i(7o1x%P*f8xx{lDXBBsPuy?7tR=-cJbz3+v@jQ4CUpQ5B z@BYr%wcyaK8tN@A`5iG1a9(74drMZM)%uEqf-hg1N-CKE44CCpg&Tuy_z>rMLh&s`3(^=@@wm%gb`kNwKg$qRVt zE6201Tl8h{&eYXKk*^Tmj>W1%Z<}nrQom#G=R-7%6v8z&cu0gQkN>zP>0_Y&s0A)Y z`{VQ}&sjH)P$sIBhT!gHrWnyog^RO|mffSl=OKEi4ycI&{J{iO{SBxkJ_sTt& zHi`&BFE)rRUzX2h!f)TZ^M;kwT`xKF`34~qBs;S`J)honkIE?y8raN9HC>rn)u=bt37+s++HT@{=h7X>Ul}OK1EL>#$?5zm0wLE|$;H@@Ko!*U_g)sipiW-&xFsGATQ|+Onp{xTot5%7Llt zveElo8PTM?N!bO4n0sji^V9e1vrv;UYN&)go3?y@C5l}Mh{sTiGDbS2d2qnV|6|nr zaTI0LJ|rFE@jiS?g-{DLO88vH>~&8pa$AA&YNS_JI8l~v>lBL?cp21sIb+cxea~gU zd(#&Ij4bpZvzDD^FBd1p=^%C-MvLF~4G6Mpi!!2FQr$QTh`v!>k{^RVf*)w6G=5%3 zE)Zck9?eFsY@m}=cqDn^@ECBZFu(BQl7@F)G3RC#ZGkZqr93Ym_nIOvhAV=cx;8Xb zX!Tk(pt|m^mkvFnQqminqQk860r|9ze4}CMbhdNltXz8A`Cj%G>aw6M*`AwP4rIe@ zLLN%a=gJF+_6Xzjoz-Ab*VnKVS?mA>Zdl4eQNt062wDFZeoz-4Y6P(?(HQV7hldn* zMp&~`$&UXGN%1o>J1pB}5T&Bs4Q?u}L?K5jX$BtO24bL;zZihEaWgEdKVX2F5 zx-Dw+H&ehJ4%u+l``H0-nu2j8qS8W^bvWnUv#u?7s^)o>%FI^=}E=rcBYY-(nS=|tA>!S6?AsJTA8I+ z-9XB4eAI#F6AJ+=AqZ-$cmFYgo>Nm7iqh!h=C09qE*398Fk6?K3sEI@Pxw=Tk*Vjv zE_YEP0;c9w{GCx&NWT-UY&-e9`H_p75NqJkRRUX9rhY*_uOmPJ{+gPziq40K$jPKx zGtQgEEN%*srn?S@sk%l?d{8D?!JEwgdS?jrIJBmLAQD$02~|;v4$hEgB8&vt^rzXH z6%rXSv3{gof^GFYp)di_KV~x2%pirFXJ7Hk4h-Fp9cy;3?T9hUMQb=A{QKFXbeQx8%%OBSjDRVY8rqIk&T}@#*8G&&sqtZTwrVdTPpQ;fIx%Zc2{sRscUR+N4+q#{v#;#A!AXMy%J6h)P8EkUbYTg z_j*Z~PUKHJrN`>6pIUS!8bXMdGk^EDFeX5RxN+)|tUyWQ4W-0Qh{sD>arMc_KcdFxgWLZi*U+rc8A3k5w;`0eydgU%eSRp zn)VHc9RC{{Bua6v)2ph+1bQ8-TvbT{>q1T<^WHtW`hcnWi0$OcqIj#}*sYBFa+?o< zr)|B}{<6j7F5?0YFZ)RpLw$i}R$@Io{*hDEP~j!Mx)Y!N`EsTscyeU6mk@4UJ4zJ| zv*gapx90>a(?b|5cv5?a&18Y-ycdsgU)dkT2_L%B%{>#>rX%cM$w(k{!n4jW@A{0- zmE-eXwan8JyV>{-H`dY-9i-tDeI)$4^0hADK@)pVH6>-4JY83L_|)oFy79Th&-ECY znQ8`wDssMR+5+*taFg}ig#(T%>3j6ki}Y^AN^e<0L3U_&&~_bHcVwKf`A%s5-^64V zY09#NUN*M@ffRnMgtO#XL({oSaXsc#;+}Kxm|TDc6^kplaS1>UBA1=j7;IGDVenRx) zr>R*K?1K=pDr2QYq=TS)y#u>>H*w5>lv3e(D*47CJ8J;JajgoG%XtvNHh@wWf?|(=G`u>)fahX+Q5JG-_G%vub5U{E39&r|TCh z8ta1r6;H&i*)7J~!q%$rs#pN4diO~KTvcJ#9@sP=0HkA5l>qJvsQkE zW=qh&fnrcdspl2APP9|o)2MBC;#!u8OCoV$l7NEQ)fKHPON{r852eTwNu!K}J?TmJ9 zyp51R&+*D9dq*Wb7s5B0&9A(f{mssZDSC$_=?Z z5gK(JsMg7ildr9(D{N(2m7lFS@H-+eM_1JYHrd&==r3lYM0sYhVc-(?$4u0o0Y25LYzz!~6cFna9p(sxB$s)1z$sg!i+XrdC&RyMP=k~q?tgv$`F0gOJ539E z7w_GkdCjLO&TL;{az;m016*&V^|v3`DFI8?8{tw7`EKWld2gxr*j7 zAN?t@SI^%9K$4Ar_j(1qO*1d~t6VVLY}~+PiR-Il_lw={_MUlA{wE10jSw}a1+@XW z=OdC@F2Oldd5Y3EQp^)z{&td46Lf5%T)5d{+p+zoeg4m8wGrw#eDpjyhruto-sNlC z#f!}_3_iQ6l2c6_l3SPf>G4WT=rPUH(i7sKR^WgA4ze$)KMZ9<+-#0uOn9by8_fyezZ52uyauoc1(ASY4{X@o8uT@n5I-BV`q6G{y zu?J^=H-GiUuqPZ4YFk*9og&Gzt-HI!dkuOJQK3C5E~X-{_uJ#l4g5@^*@?EtEj;-q zn|c=WUC1enY|Y0+<{LV5CWKTj7>KB-lS$ zU&v=#P=kgLD;Zhm4#h1I9S%NMx$U73ZWU#JR=@)$0mX6Jc)dw;N(%^@-k*e6nXh+g zNW6A_#vrwp-kU!sp}ne~$-y5w_cwbTiWWIIndS0X?S}X1e{8xopCm>T7?Jx#m`q|f zh+|pu?=_Q^mBfc`X#KqxYp2`I6|lcxv26fKsH4_+9??X}+o(3VgUBZht+;%#VoWg?8!fp{$MQz13Q}g#)xCRG<{|(~{d>9yaih?za}mgAlFQPp z)H+Kuf3-(UOy3@Qq+bpCU%CpklQZ9|RmF^mq*W&O+BXXrxOqqb_q+XLSHf0s2&}oap-v@@|tQHEsPb6n(yR!X!I8?-0 ziBtR7w~y1N$sBhh+rWQU_>a9Ii~D_AF}j^|=xbmo67XVUTyaeNvCfLp-N?PnJ1Y<7 z_KPm-^90E~4!%qnViD?DU=igjIn>`5rZ+aFQ)3atx3kFoL)te7Zee1Euz6o(WWK83 zD(WEA`y=JDa2}_@=i!m}KYSp$Tbf#lM2wK{nf-5UxMh~z#?!!|Dmb~bij7do=@hGP zb${X+1G~k9cC?Cf`3R3nIIkWG^IPef~o6j#9E)M(~u!kMTA04=y!VlH-;FF z_Y&%$^sp@ZlEdV$bH?6;NV5#f0&<2)?|Qe#qL~8=a{?$w5H1Fwo?IgEmIXI?>Jb$N zj*+1bqw9ufOf;h}&TP5;vJ$G3q#cO*N5Q9D(7S0tCtCw`gzvk_`z@{$-5Ft>8uX7Y z7Um+(u&QMxKW&meM=$$c`|{^IUISJ( zRV3Nl`Nj;W9Ul!w%_@7bber@2_Z81fWa2$s|Gj!6fXp#)MMcwOci#-PMOywBIw1aj zfhSJWP!E|YRm1qzY1tx+^YbJ5RpOitVr_IR679f9O%`dr-4E)19gTSbOpglgzasux z9y!JRUz%Vsyrb9M%aJxtRlEQHM+$8oTtw5uU4p1%CN|o~wCXy6 z!2#NC1v`uMkDS492vuFogP&-eN(@$;14{e9qferxu7^9!&w+yr;s2el%9P^&Sn4f0 zH!-h9&BUu{uvD(Z(K@%_$>{kuO!-Dgl+s030b6LI1ThWU@wzvMmsd#m{}Km# zG&IHQ>*1fkYIS#$uuoQ4}-)nkZs9GMh ze`Uo|33&f6_q+EJU)1FdsXfAG`SB5G{y*6UBCA-LB(VCga_Jk>?I|lV3lw$9**hK? z3Qv>WI>8tYk$97Cbf>CEnHonv$Eq*L`fT{>dPM&reS=Fto{}=T`;#S;$(MXV{&xbD z7Ic7G)Es?bMVk-28$4Uk+%Bho-8?<{Sbuj=Pu$K9z1+xsHePcmqL6%@nH3IZs?ZDX zQTZ;(Skcf6=)56G-T7n1VswwuS5L=*N8lAPn%mFrC>EFmn{X8|cai-|p0)Mw!mZ^0 zL1g`4@ynUQO*GMWZvq53#lXkcLgCEoq33r+kxVn2E^|#}R3JJQ&zkE?rhQ%-tPaOX z8oOstMCjb7f|x%|jT^kMSo`sfF2*d`CG}5gX1b;%3uB-81Uq2$wNWyaegDfoTKC_V z@up|l@@*J9G0a|7W zT{XpmPqpi$N6GXaB!GAIH%DZw&oOaB zPClbI0B!7FUAxP7Fg?CVF7^goVv_!KYD+rbk@6zVEGK$I!lfj&#}s{L6$5RY=-~=~ zfUqnemO5{0u9YS{{_y3In7{rH6Dg&0MTAt{+|m3quxvAU!^qrCBk9(DvJupEV{o74 ze-0fDcoDlRd5}p?O;0)L1(8i4t-L>$em8{J88#7dh@w!N+$J8j@7GU%HjJa9AXo<@ zMW4;Kc0FiItePX4@Q9Gn36Ai+Hjt)D_>W;>w-=79i8a>{Dz$|dD{XB#<0N_(0` z;?P|`3YQNZz8ltKA~-<(NV?390yUrz3hS);(#cc7!juA%1#?5p1TC}MqN$#Y+OlYy zl>{H1Yl!k+Ef~A%Enw*i;~sSUTBzWA9=qpniHPmk~Fk?K1i|A$FDctM;8^N%hBHa-69W}<5w4OeeBb5Ug${xa5A2IT!T zR`d7^FI!zEm5vc+R^+m>F-LKm&iYVdFb>Y!J+lS`+DFvwWWpH2W^3-8?@tzRpwhMN z?vK5tqjFsOd{nC&dY~*SS}$0z>p4m-P^*-57idQB$`UmW;@vYjtEP3mK6HuByPq^3 z35bIK2@`B<9B}-JYB`yD`68!v>dYw{-iuqJdBt^F!G^&lb--ST9CAo!7O*O1_UDdH zwn~3B1gWGz$vMqM7-g3oPR}?Xusv`&R$XWZTDMY{Qy) zpKWSp+Q@roD=%wCGm(}`k|vRtl%XP&F=JS5vl~fuk4;AO!d^DQGVtqdN^KfXM4;YlYp#*D5RX+F@&#`cOj`-cAzdI&fjPxq#Kv_E7hvgF zDp=Zz{R6=q6^>xp$WUSzk(!k~pMFGNPJ-oQ@#(elFlo~pn8h*bUqQu<8eq&5VM}y8 zPGz@0$7vz7q&Fq7@{ljKfkMxDXcUrUUq0VhuWT7hM3xb8K_z0E?qD9?)JGd$e%Em$ zF{f~_UCXXm`g6P18PAKW!g#f2R?lz{@U7f4Z@6t!H;48tvqp20XW~;7vbV{ruX{wB zT~7U18ijh`@suMq{3x&`{LJ%T_tGa10r$w&yIouq&{psoW|5=IghZowQPTM^@d%ZO4P?p7~B`s8`W9W{0pwG1_&Yw7<0y(>G2Ne6&zWY!%> zyLyj0!d#Rm*y3CYWSRIUy*~ZZtLnddC;w9d8MbdMd%5qKLo6D6;Z@mS* za?xe~pLzyU&CLmyr$|?I@g$f%HdS-P3C}aQbvz&R z2g>D)b%Z7}D;u00^vLQ{8h`$B!$e4UWh-anbKr0ah-zeB4mTw8Md;knjyi7JtoOmi z>pMoV9?IYTxUf9EWU$~?ZU%nu7xtwDsVq3k=y4CF+S>*K*X>?&vv=5P zm+z<$`QSr2up@qa)#-{q=N>n(XJjz&?Rp;~c{Ss`a0l_lus&t1R7rH4yq^Zgz$Yb% zD3?MD!a)W}=d@ZD^w6d6si%wvO+61jaQ?2Xnu)kkfFd0*dW@n-z9P$j1kc8V6wJ1z zcS{TbF2sb7dNyLe{4tfVcnL^B+{;kCyL4g7meBR^rxKmzx?HI_@_OY}4Z!}Y2O}g= zjWc9GX-w!qjMC&61G%}=Joco$C_E5vw1layI&b+*6B51oI3HR?3Yck}Ua~pN7^;Ux zuEa9Z3Jnoc1Dv)9LqBaxEpMyQ&Q>jJPf5NkWk3sq-*@<_%Dy|J1@sDky16|xKd{2z z^0!At!3#t0<3tSKroBrczlOg`N;fo47*Qt<+R36-u#HU@2=hAwT zO92~fB9@4|l$KEUl<#FMt=6RZo)Iy?eEJ6*?IUTHNsF22+P?LNrzynaAZE$##A!#} zw{0bfBLkSzMG=|N`uq5boA=o^0?sGzTtrk;h6dFoY&$V&RA?jdQ)?CMk9lrdpti(1 z>@%EZf6ky&)@0e^q}qQHr||XU&QNshQ1t{Y~}e|gL~-t3i18%)2Hm+K>>Q- z3J6;j4QeKb{@J<;PjmpRWhdFxqq%q^|| zyfQiBQApbPhMzy~Tagg@~1 zMFWs8tse)*=*DwDC0Ak`YkE3)U|(3?0~hYG zr)V!;N3N*#TD2XW(-36{w2rEFHyD#kaaVS)BRIl+m%0QIzMSFE zFn!45+r$d+|UeCJR&KYQbVp|_|Q)n_;w`EbfUFBhDTZva!qfK=xYa45?Bnq z))=!>2dtOv)fpE%?O@Ad85juWp=9`VP`9b~7=khA#oX{32WQ&(O&5hoH7=x_7s1mp zc9AB>8v~2Auf2*w$PrQtV8n5k@vz zrN{86c<$Pxg0L&tEDm4Rbl3=lK4v>yVe~#2zF31MVU*HHch~CuA9>8W zKA&qfbAX z(^?^MA(ONA>dbj`n-A0G+V!|1ZsOYTqtn7e=8g3B7R%zA<&G2o2qP*c#u?3t!%mAL zP#p|G&Sn_19t zRwqz7AfQ+WZerj8ph7}nQVa&TYk<{bpoMu(D<81G0q-c))V+uskz+5~0WfwY$6OM# zD7Xeu2XWvCB(=X4d&Um_9|%mkrR_+lJ3y42*@Acs2d5^p0baTn3mS8SLxi2%tsC z1Bjh}bf|vAA%Nf+mTCdM`~V+m!M3aONtu~QNuTgFxtnkkZOV~j1^5K)wUEwb-1 zCbEVolzmByEJcxb&Ux^dIbC>ob07xVfZw3&(fj7F1G&3`c zxpC@fl9^GSnSY+MbM=kQK0wS%=e%KR-mv$}73RGn^P_7o`S)okZ!;5fz~2AUkV3>P z06@&rP=|EsZu-)b*u;7HL}r*#<#qSU_kVXU_|s*eI66R1Zf&@2wB(Jqut}Z1!M5$x zd2`yE;y;_&YR-*s(R!EZ!+*p~L5Dyo1Q#Su=$F|VB00c_XRb&ZydAjzvIOc_fc4^j`{Wfdl9I_>mB zE=!IG{J=Zo>No=wnq&-UB#?C;@%K(2NVbpmPNDcp%cd$%V_24bjr9fe6UpYeBRn>o z50FvNV0RDbQfMilb7peFo+E4xxW4rv0sCip4+5W16X9d?e3+=-Tf+pA;r4--eH-ru z{sE7T-JmO``?mIwuN}z-*rBpdfA8 zU%fZ(@&5kB`SUn<*rCNFVagD3UhU6vQI;EN)$Q4aa5Yg^=htTt;liVo<=2sV6>H)5NA5pdbuyM;K9NH1BL8)2 z2-AQk_Jl-JhWAE?Zbl4>1?l4Ll)qUesmy$wvSb{#O>OHJ`WJ%#@S?zKFXy4_#ax|> zyp0VqQo`9sU@EQp$Q5CgYayy+?~`pi?}OL1@)-+g%DjnRy;1b~?j+hycrP2%aP4axQ8@F#_afpLL9XBSCM+LZ*;30K zWAFp21|~XBgUs2ONn?kF?s@Q=x-d})8iQ;1G3N8n*J;p-7WI7w)7v}9;u|Ub8#w;$19T_vW)SE-A*azwDvtB7 z@0r5wq~Qfu>~W|sw%-=SbBsr16+3?VUzjXU9~rs#cv!9OX0m)K>XCJJC^dz$tapyL zUavtJ34g6qHw6~*A7Hd`e$>w5Zq9gd328_^>WesZ1{59V_P+9E#LCXoeJ8Zi7Msqd z^o;6gpE&c*KJ+876-O4C!d4&j#g|d6a1^U~$Dps0KQR2)@l=8z&$;_5KD8k*5rODH z$!kX;%A2CUS2`=@Y&qW#54^NpUlaS~Z@>PuGgLx0=;0TcI&=)cmLtSLgK2jhALX1i z(v-Iqycx2QV8_>sb%Q^rH)F33*#~+m&fs@$ri3aup8isCK_I#4)DL#7nQCt{^Q0|D z6yynU*B;dm;c?~fw#EhKT4`(WL_wq|d**L*R@4@;rRA26fX@@}yjQlI@7$88TU5~a zbaWj z)OLS^7jma~o0+yDwr82y5z=TvayzC*X=`Wa&UGblpv)^QKbeB>!>v>I-dluz%tm_v zzZE+=f(tFZ&$LIZ%CgqZL%%gFMR>}?3kMh%Bb7$AimajBAvPN3P;h$q*|(6YdNX(4 z-SXaMyTQ|&XMRlYO-vogcFdRk9sqHK(!|XKE>Uiw-*FCA6DL?CD#nB>ij(oIqNm*W z*kQ-U28{{bKjj$#Z4%jw?oQz+3n|wQM`}lonU+sy04~C95^ITLRHjv^IQV*xmeMW! zcT3zo-XaD%e_Cs~+HPmFQ(M)jRmt&yB{G7L=Ly}pT%BozaTDh}Yn`}U#Pbs|5mr_p zG$7{2OM-MXui=?F-YXZv>+MJ)pfT^LB;A6~K}Kmq zT0)w2Z~8?+NfAg0F5|h1H&8scJ5(|X9O2GO^zVK-itMc%c8)fV42?cKfZ^Y)7oEf3 zJ_C6`wWJ!A33({1HS@({vMp#x+i6YHs83C@G97KLke=~HVY!6m_<(|Nu+ZrF-6?Kc zH*dBd4n1<*XWQTQPRq+1iV%SxOPcCQmh7bI6GBSQ4`ROY4{pb6B6&AQN7fhhQ)uSI zQoe$lSBVCY8m6u#d6MxgvzZ@#yKIq_)mRN6>o%3|$hGbN5;Qct=)(12BnmyEHu6$_+6Hk?Td&=<$9%Wk4z zOHQ+^+>usKhfuM3)Bu_xmMcq_Fo?_w+lUA^XG~gbq-279Qjp^x#-yM|m(z?R&tPLg z*ZC9&4t1{d)C)3O9)6w7vf(WKgmTazUTfY$p4wKMFQVY&^Nz;Lr5=!Z(o%=Lm=cO9 z3r1I-&-k_9#Yvfr z3sgbBjU#b5Wk<8y#t>bB0^-rAHqt=b@aHtIJ6=LV!@pIo|6v_3nd&5&^V$oYlWBkU zAc2_1^-l z-lBQE#-l63J&UVVD8zy|HXvO#D%q{UvWGpm+5Y;W>CT~fa?cZ+gE57aW1awTH$U@5 zZc3m+k)r>P$Irh%m7SVuJ6r}+t(19PLHy+X0b4k7O863H?OEKm7q!uyH&M??XtZ4h zFI1SW{P%k8Z-t_FPaBUnj=hGKQi^|7NSU6scf*TK&G#>4{G8)DrFR!%UM-+i4DK+j zy>mG=yZ`_4r30s^q2AEw&Y_cYlsjG8MsK419K zI-&qDZLDBkwB*6&Yik-PB2Y5`ATIoX-M{xo3}DEO>dIJ_QY0`;1B}*JB#9c~7vHA> zjN~`afg}VD`zn+`NhFewCVUwb*`MQaWXr@-=4^PG$77!e2yh||IruJCTcNU()d6|H zf%`Y3mIY~?qngk%Ho)K*(?H@s4ijJ`qPNW<%!o*UF98k-<^;?DnRCFx>*sKkxefQ} z07n)TApnv`R?<#i2@j2&N3pJYBY#6~-JLpQa4g0k9NN*ObGoR(78gC7%yoYaJ*!7y zItL($A)1p`FnM*DUqfjo>c8{>iJ&U4)0uU}rZ>PQ`+k8LxeCUc$-w)@Fulx=kwB*N zUF53a<6CrRd}duH4y-%(zet03&@a&alVSO1|64Tu!l1(3K;6q2m*Ro9Jn8@3oi&t* z9fOPH!wv?rc{^5d(+}p~*1e=V77w7f{weKO=A>%rH!#9HEKY>_uLfH(C{-^N%IJ~x zHu{0M84_DADwF09e03#DK#=c$fvy}{Bk+|;))DT18sry5qfJkMUq(u~bjal@uLGG|^N%WE9+IQ)jWzl% z8}MX#05SUiu4Qb4(p&LYZ^VA!u?t=rM`6#1<$hm$a~EvMh06KE@@6nqJ8c zW82V=%jfvqpwHskJ?9{|4rz)B%VBS05|Q69_l_54`atNjfNPJ1phl4cbzIPn^f1j& zC&$7k5!c-&PGzRHKe~$QLW%l9XHsjC;ilC9S5wj=4A3s5^Rw@v=@TY~L#vLjiH5-M za?4hgLQOT3QC&Bx!Rb`Hug>LsYE5N?P?$~1CwND}>z1TTTnPA~R(~Wit|#z$t)tF9 z#VcIJE-OkM7#@L)GY)Jd7@$b3Eol))O4-O2_Y0QFxl>B*c1ViMBR zz)4g^c-DKeIYd#U7SeYFh)5CVMaTU>P9yFTyx{4=*JN^%u4;faLJ=ZXySCrBM7rej zMEQYzIG)!+$E|q?iGBxuq6d(xhzg1w{(%obT2u-vyb*2v!HwIm?#1ef<8YAEIqzZS zbFk`u6124y)U{o-3zsJ<0PN2MycRk$!x8NgnYqi+-mk4xobHLwz?gXkFDg$|0<0Pe zju}IIj)i2RKk|0;2DuMkviow-XCezLdLS@L~u+MUt z-)fJ}AO{e|%<1A#w3XG?lPlrWadLP`lIaWJn@l5U>B&MuqOO}ADXhubys{A|y=ViKXH*8+2H`i@ z=jj1X*qeVKY6t@GXB4gJhwwWB8ypFhAdBpJ^J$-(zvPcbO>$_V$Fk zUmpZmKP|Hi5J}K%bsGb^*&Sh2%??G*^XiSo5$D7bmMsIgr2H6fYq$pL^l}@896}79 zQmU2!nkx!}U+2V;T?b-n_EWsJ`QfMY6P)A8Lwp#^%_-j1_+JvPM_RroLr3NU;o}{E ziyy*O^lmm2M)8<*hr0L)y4LSJ;y;Xh>q83ZI~;!T;ZC1E1l{1Z7)^~SIc*+0X%c`; zNS7VEf18c(!5|jZ0_1E0_944NV~;PiO~t={$u3I|@9ii+b@@~*T`_b7i*15mRWKbw z;#G(;R$VndgX>V$(izUAx>W4r_!mT(k>;5tCHbUOs$TK{eC2(rtyqC|$7P2>_w z$x@8=2;h@CXL`?5?Q2IIa=miB;wCt0)m6AaZCgnKzl0_&S9Ei3B^`7)+b} zw(bf;b+!gycQjBU;m<)gJGr+*UHjs}5U~+MZ?#$Rh3V4+bt%jnI=1&SGD7>aXy&|A zk?NMegnNN~1`^!X8?mf${)vK)F!k=~<|iPs-Z4cM1d(T#H;qx)ZkIMyd|?r$>;u-Tga=`C`Fvj``$)W|md_=g@h#EjqXVO@o)_@bc3E8mk+n+xn zeek34oWM^Y>nNsxoj{h9=`mFHtvB75h$;2h-t(XAsSfo-OQ{*I9)lrBNC4lm1hJXj zPkd-Exl;PIXQmd`KtL~#;aCq0w%Nx9y-7F+F8wecke%e;_Y|+gDxkI3Kq>RUe z86O-)Iln3Z^@Jp06mev%6`2CQH`<`bPKyl6O`5fp@Aqs8lhwwafK`?GoUu?Z#NAKu zU%PDz$YvRrxFWX=RVt{c&$TY+E z(lgD=`r_qPR7o70_UZ21MK|m++}S;1Bcz1%I9u!N7pJ8yJU(Xj5qaLleMsvp-_4Z=YjD&f*_@Yl+!wL*~!7TbfWP(8wyEx zPL$awKvkn_Jn@LlN}7Hi>*UL)oTUtDc!pf(*`uAAp5o9~e?7)G^C@2L?**0jz((TJ zm)d16t_349E}MufKwLb=`wOVQ!3qDpj{nKxZ2~uB96%?nW#wYuzx^g-PlwWpNerd4h{S&7uPk&JnX;G69 zZ2Vx9^LS{GBWtDzqoeq+I--W}XyT0EpC9hf1Mv&7#&v~NE{&mC6`B^l-rTftwShM= z^JRjn5Z?f>_$`CWCL!F@g;l%oB8l+F+qn%)jfW9zOT3Fr2gD~AiOtBT47`A-zqmpI zEZYX3==b^6qI7WW(vuTO3FpRGs6y)F8Nr2Hu-|SBW~^D+uOR^R$=2*QWnj7LbkWmS z7CP8yGW6p>w}C_==pa{n9+8!2bIhdm-3nKx_iWlTapi9FGpFtJ_K#%HvHuel8fNUs z3utqMPSYWs#hIN?8s%EZh12sbxP7PR})9fn-q{FMRJAm4^=`qUDW z|2XmY8uYR9KgGDHLO!;C-;PsG-(8N7Qd;Ll)~zHo--}N0Kh{RWgPZyIVq7#JBf7!O zhr?Mo$Ctnqdc@8#{5{^E8NT7W`r1V5NpQ`-AOd7c_g0WwW^cR2QP);wflb%)D&7P& zF%w&D0CYLazDKmn4JHE)4mziC^=elhk#7rZ$+P*Xyvn@u$G%=BYV-qPiY910wZDxQd(_u%`v z2t1D$=ImZ47w6OGEVHklkovHRw`4g8P+;}Q-1v$(w#ZQ6BOdEJt&uK+5ndcZD)}t< zgZxF1v(9Gnl>~xRy=kc6#h5&#;6O4c&4J{vio zDZmANBGdcG+< z>nTT|o-PVBlr%p}wdHn~6#Kzml?USsU4qYq9brD3tpo8+rkpatLXQ>FpUOJO>FPV; zB}*p+BE5sv!dz8yaezci!kfU%&z2R656IDsdnJa@^9o7UL%)P2g)FOapqPXJWp6dpOhK|NiX2Yz{MLiDAkZEhH*zvsk3&6mkx=u*@lP$i^IUY9u6SM4=ptSR^w= zB8Lh&g&a$vQk3x3=kxph@%{h%T-S3wuj_uj?)!cY*YjNO>v~_IoUjmuDZl^#faozY z$rb<*IQp+cK|9Ft3h}_50Y^D*zXJkPYyk)aBCXlmG6bwPf3yj>4}FDL*66E4mz?GIThys@N8VfoAl#)Rjm_@A0>k*$;;P0zvcfpv33 z3?xp1%TkF4l$Yh^pDPn-cKJC^UrMyh^MW_RIJtkm%pRy-Ov&cd(>|?vg@e@J>u_X3 zrSbb7Ck!Q?;&l9e{Br}>#6$+jdcsc&E|flA0ZoiORIEX^JLPfQE5b-AZ0Kp=`veKq zSD~JQx61-fmo$N!c41mW1sWK2!5_MfAy3N-RGUrukUcs)8TKi68ID3I1TVI>w1j;2 z5=d$5O`Mqw-!^qxsA{DGOkOTkZQgEJkvzTdxvg<{U~ziy`w#9QpQ)#CcbP*j5|GIh z#JJbF4ey5M{$E#vVC!G44@hCjzj}Y9lIy~=#61VD{1+K69B{nm7el+5vwppV{-;dTt~s#+Fwy3} z-Rl~7*F=4qKsU})nvtwIX>x9J6IOn~jL z2B|4g_o@%Ye_{^5w(#7pb#E<+CAq!j=@%PVg^La&USSq=q#C)y<6&^WkJ=9&EfQwc zD3QV=5zm?)TrT(MjOlDFbGNBu$+{4OTAoN*%6yi6tNq-W?JDL9uHEV=ynHx&a77C? z6>QT|94$PwRgbhE=A$oH@&1)`UN&z2qx=|~s;Zu1`Tm`{#1n*@O@y#XTtrKR5xhjA zxJ%_j^;Z9O9xUI=soQIiG($A(sb@WI0Z$wq1D^NklD@R;_<3Uc@BOXuD9ecEcUNu5 zw(Qq$9O6D}w}wm9vkh#iQzLY20x}}A zeE1LMo$dIe6LyVuHR=nS$Auq7wfVNL?jJLC)aJH)epth<1{7>af*M(2g}D>1!hcTG zVecD%`MWr5=xNK&t-0xJY4x%cAzfGCmK?QmT2JPJ(4W{cNL6NnU9}Dyx~d(vmfl~w zh|KZ+-K@Us)U)VsY`v&3)?g_$l-!N&CvdHB;c9nTu4-!dO0I=>DgLziNEj}TfY)7}@$;O+yLduYXK^=| zKKpwMiw|FJQamoaLCB4XEIU4MMd(6yvDYv4?qOsPf~rN{#W#T+(FmdR06(cUEAWlT zScJgF?G&Y$YUg=+`ePW#aQW`ts1D`YYd?5yCtER&!m(ARGnP1&G4<>t-M-@UF`?og z$HUJse`UIh_M=ELRKeJ-l5-QL1|G`F8mIXu2ETP+KbS=t_a9qPAA^m3SCKMS%w&{f z>uZ) zGiQ8)Od2tub?ew`A`beFe}jmc)L*@#!x_JBX|;0I_t$LJhbOcvLfgw*g$PkSZLeu9 zs9EwTJCXyuc8w!*u^jR_Q6#RGu0WRBa=q@B;g)41yfN_Nlg`Jhn=@*^5N;(j+m6icIGb-QO_e8hVL zvbM%ZZayUV05~3hM8mxGL*3hOJ^thazjf8~50$^kG2ek=jlWt;mpP%%$BPrrczwTp z;e{C2K;!zD-O`Ih&%(z_QLaQqS9@kXo!k3bPW;9qCXZDcXBSuL8D9R4My*3sro_Jo z&ND5s^V%v#d&G2{=Gm$U(eAX$!34 zi6Yu{ruqfQ)v8C$VD+*l)@08I83Khr;!6B7MU|rXdom3Ompyt)QGXvFUlSWZUdXjT zkg2Jk>+1DuxC1i%8ybD{Lc%pcJ~RvYYY_R@+bTCHF22y{JxKhINA4e*3Yix@ zP+=Tb20m~whw_thDtY&6w?HNDF5Xo9#*kwvSUNiH&dXYlAaIcIwR{&%jYvaC$}zN9 z+@5-qiO|}R`+4<)u{P651?M--#quo|Dm+y&?zhswBZ_@{Eay?w7f*bLm(8JtPn)1i z&yI>I6jp|vLev+zd8z~!+!I6R@=2$s+QWY>TP#(4FKzHWX>uIC8(IZ@031nFV!qg- zv@^fh=0$5=tY?iJRFOTs^zO4K33BZ`2t~PwidJt9usY^DoHFF&yN3O}wdWMmfpbHB ze-1?RUe_GHdGHD6QJzOwcX<4$wG~?*d7r1VN4Ok68~VwyY2f6s(qCh@hQ|%e=@7fh zTxsU_PegeC`kq*W?QCV`zWscyyo#808+F4IjgQ;-QZc6r)-^v~%6o0?&2psdGlNS> zy-Mnupd51mo`JxkttV5x$Qf- zBT&$u^Wa@WmZ*aBU!o%r=Esp@#}d)zVG>RGc!4}hv{mT6WXX&v0s|t5&r%_M{|`qE zOyT2R$tDVSte`kRT#?)?TpXn+j(6||3hZh)37Ut;v%Dh^cxGPu=r>(O68b7b|4w}0 zK6cxN0U^taq)RfKQy)1tFb;ICt5T#CWFc zOX*ML)x zr<}!x$d92r21PO$X)ZviYkOqmI`teu@nmyohdjI=C53&e62FrINHqm%>Sl@8C;CVs z{z=La`}yl4OA;o2jE|#cFZHaYKBxI)(+g_xW@S!tH<{ZC>oz_=&XzrrPk^b(qZQ9- zvk{syeIl0BaTv$2NdITT>#Mm4+0Aa@|7+iDIv_#;eBkqseZ2ER9-Ec zMQP}}Nq|&p0i=Ws-#)-oh^+SAc*8mD45oM3VD&7;Y;jQF1-3^&m7MXCYXF!YUqNiZib;7tKEV}DwZ&|Hfy$qFUnf2$= zOjT8*gTkmOCnPaGp-{w7_rgKdVd0wOnK3knEU2?>k|5_Lo|G-wgt3kTxqRv~gIz z6FL<^f>H%VoEy?lc7HKdumT8oMC<^P7K5~D$$J|vS~~!Uh}SF23|sUm2#xiJIPili z1r5RapbUiKWP&zuqEtZ# zBKHi^!abo^%@J3YqydRZ0S}a3nDyVYj0Ao55 z<$T(d0$tMgWl(B-;nz!GT#(qQD+JX$8Swx#ur; zM)lrEDpar`)+Zsa1sN8bO%yhNvDTK#T- zvw;Hi{-5dpk{H;l9BeEy^GGXoRDeCZKihZm3R08t@X|dM_N-0z?9#bIWq8sM1aj!U zoVoMTVP$FZLSyAV{{H%<;|C%SeYO(bGX71n@l z!3w&{x6RQ*o%Js22@=#XNs%t(Wr)c$K&Gqu=-{!pYJJ>9c+_aJzMsi6V5Y0uD2)6T z)W@9@(#@W&xLS=z=XTa-AyR;%RM*5u*hk+EB+p=nPbmU3+GjPoK9~nhgX@F(6lXf? z&+u?*?LU#vBzh7j@2*@T1v3M*L;Dij-F3I@}A0!4J4!x};JE9T4aS;ZU z@2tVg-~vp3yGe4Z>cscoJUD8O8EbGxUC#?nn{kEWe1>^=W7nab@AVrsmu?u;x5l_Y zAe;`Jx#o~H3q~F zIy~m6!@f>l=M5w1JbH@IFPN*^ovtZs`h*~}fW#Nl2}MFgY9l6HTGv`nhJ+eDg)eEz zzO+O~Pewy=o`#d4rs}Oi*fa49`8zBc-QywNy|`QGZh$)i_W)Tzz|R}IIr)SMI&A82 zt6foAt>2i#h;~9wuTbcQMT%z4{Ow$`cL|=Ru(j)OA9bV&-I$ev?<6I^I-q4I;5HYG zJ9s_3HD(s*e1#>BRkM}_e?P#D0{jM=f}AhLJZ-wWFKI$^fluZJ#^X<@&VstgZz0TR zQAO!NVS3D}WBilyr$S4ks_aaSqM)NCpUio<`0HUnSLN{m+T zg}j-$=FuLslMIhN;L}9W;iQDpq$bgR)G^KTjk|G*mAXDgo8zNgIPO0OQC1w}Uvgdw zcf=9ZHMVcUK!(@7O%aeuzX_ExW7mXP9l(+p2U<;0b<&j6H4JEwt1wey!D~@LAW-#B zrfo`K(UFEtnH-UzF^xX{;7|KuPMn7M((7IVLF{#`ATa&;{#S#dTgtLucGIHw&N~0; z-esVojl${^>sE%h$kNnQ6 zJ~bWSE@zdR%Mi%uYVs}dJHoQ(NLZy#Gxzg?6wc_CN214uHmPbkGD{$^VU^;($ld8} zF<#iOeI_*r$abq8LT(Rso1$4Zt}ahmI*^MYeJ@77y=5Q->9lW11muEV_>Ekx2%(z| zqB|Y{%u{t{`2kh~_9>V=6(THRCK*q>eH4A?Maw%@tNoQep@wNpsJ|=ubT;TvQGiQ9 zKvN}rzvOiN19?3;`b<_z_cVgo^WsChj^Q? zTVh$N+!#E}RO6;x%Uwdfc1rsu9j13;p!CrA)rSkeuHMDP8xE50{kS2P=CtJlV;zIP zfIgyq`c=4j+gc@V*F>Q6TIbjyy1d(lX)aOZpaD!*j7lMCyiITanz(odgHE2eBNW6L z8~d16S-unqOSnrNtw*>f#-#ZiNmvc-IwM_z|7xK>0Ow%Hs#oi;C*npop}WE(?O>5P ze){j8ZtA^o5M;eBrX{E>=;92P@}#)mPi9c}vtF7cytyEFN(;g~+h4EEn!0STR3@c+ zZ^(|j8R9eb13bJ}P`-`^^5Wi3-}oTatzDVVpS_Jg4=Sk0L;G!Aos#SlZhOi|OW*h{ zbz&QAx$C37%c-;-e|m0zZ~N|RaX>p1WyHO}uk2AF-Ng$k&lEIRT96tnl=^ZxYTb0) zZ~#mj6@v;6bE&Y^^+G9;`sKJc7pLtd>u5q=a^BN?40}4tmO~l2P~aC=|CKCpX8Q6W zNb>~YeAL56$@qHOEoxdi{9X+MgH^I@S`7}nCr2A~7i=dd+Mzn`gnpD;<9NvVL{vZ| zQhmP`(ah3(3?Z@63jF7HE=?nKG_{A9Jj<{r2X@~gD29uM>ZuuFA=a(Cm0J@PkvVo8 z0YlBoZDK`I(OHvn9hHn(l^TbgS3QWZ8w2jRhml+LXTHAgh+u3CPP`6r+YGeoIN~rb z>WhAB-~-kyIBS^jq#({DALVsNDqvF|K-~L`+h~Qyibhn-)1@UkiV<-Jb-GzeCHM|} z5C-8>o|9&W`?&$oxV1j_IWhISeXm%qL`N2a|NpBzr)-^ofS^2J`Gnx)r{_Yw13OZ8 zryZULse|u|($Z%3V`h4)?;(a_zo^{G+cNrH8PfJGwC~xIM8m2CUgq7Ka-E(qN7*0q zKQM+B0j}FWAq#5lA2lt^tR-svs#P-XbEs9K!RFs@+Hp28$iXB;TIP@C_s^6bL^X z{H>zxegwi*j7j@fbi6e@vp`uvBP7V-xN}WcTZ}W7M)XNfd^?B$#6?kug3WdFfx@k~ zl_fK7I0s`WAQR?5Ys@9=SE=A5Hs-;J`r2pFcQES+T`^s{doFR1_c+*TIBnu z{5bfaZ20A{AIyE}w$S<5vl}SS9S0n3Y*^~ihBs))MO+IaWUw^|?GU=)jn+FV^^He` z9Xk->S9ImU;s&#{qqb#8#W$I&rbs@1UxYOZ?wRyxq%$n&y0V1!j_ay=)|% z{3|9|dS(ceN7Mm-y7NE{*Bv=o2)CMk5{RI%S))hABz3z6#)Fag`^Fft+EP}OLm4ZvS{FLhBOFGsOjmG_Wc z;!I)t;_`4ubRk~Q8R^lVI=YuY4((>5X8z{rq_>KgIuCI=%my0b4?WimKCY#5zBqZN zOgx6=g-bxQo*V>+|ArhN{FD1w&V=qF=%t)|-!0OJgLy|RySHMd<7tk6(~&JcmO~gx zGCzVl0wX{*hdoYC!KNw7lD=Y&yFZd>2lE{a-F#t@;Gmrh@J8Q;?}murTxHj7qz{SKw(JMK2Ofd- zTWkETHF&l!#Q2k}y|jRSoPf-v4G++kiT~TrCIKwa(=sbI3_#njr2U8XWsuvod3RQV zEOjq$Ig+FEv(j#FOCtllzy~LTgbKEIBaL2*=IeCqthF^jb0>!G^ndM*-L-$iv7;wQRYcFY{{c9)PuBnd diff --git a/public/images/pokemon/variant/332.json b/public/images/pokemon/variant/332.json index e9b487bca25..336ef4a22f3 100644 --- a/public/images/pokemon/variant/332.json +++ b/public/images/pokemon/variant/332.json @@ -1,34 +1,36 @@ { "1": { - "319452": "831a1f", - "4a7310": "982443", - "7ba563": "b44040", - "bdef84": "ec8c8c", "8cbd63": "c54b4b", - "215200": "710f2e", + "a5d670": "df5252", + "4aa552": "9f2f2c", "a5d674": "e16363", - "196b21": "891222", + "7aa953": "c54b4b", + "7ba563": "b44040", + "215200": "710f2e", "f7ce00": "7aa1df", "525252": "123a5a", - "63b56b": "b2332f", - "a5d673": "df5252", "8c6b3a": "448bc3", - "4aa552": "9f2f2c" + "bdef84": "ec8c8c", + "63b56b": "b2332f", + "319452": "831a1f", + "196b21": "891222", + "4a7310": "982443" }, "2": { - "319452": "b08d72", - "4a7310": "4f3956", - "7ba563": "704e7e", - "bdef84": "a779ba", "8cbd63": "e3d7a6", - "215200": "583823", + "a5d670": "d7cda7", + "4aa552": "c5a77f", "a5d674": "8c669b", - "196b21": "78582c", + "7aa953": "704e7e", + "7ba563": "704e7e", + "215200": "583823", "f7ce00": "f2aacd", "525252": "a53b6f", - "63b56b": "cfc191", - "a5d673": "d7cda7", "8c6b3a": "df87bb", - "4aa552": "c5a77f" + "bdef84": "a779ba", + "63b56b": "cfc191", + "319452": "b08d72", + "196b21": "78582c", + "4a7310": "4f3956" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/332.json b/public/images/pokemon/variant/back/332.json index c13c07c34b4..fbfb3705202 100644 --- a/public/images/pokemon/variant/back/332.json +++ b/public/images/pokemon/variant/back/332.json @@ -1,28 +1,28 @@ { "1": { + "196b21": "831a1f", + "7ba563": "b44040", + "215201": "630d28", + "215200": "710f2f", + "a5d674": "df5252", + "8cbd63": "c54b4b", + "63b56b": "b2332f", + "a5d670": "e16363", "319452": "831a1f", "4aa552": "9f2f2c", - "7ba563": "b44040", - "8cbd63": "c54b4b", - "215200": "710f2f", - "196b21": "831a1f", - "a5d674": "df5252", - "4a7310": "982443", - "a5d673": "e16363", - "63b56b": "b2332f", - "215201": "630d28" + "4a7310": "982443" }, "2": { + "196b21": "b08d72", + "7ba563": "704e7e", + "215201": "583823", + "215200": "3f3249", + "a5d674": "d7cda7", + "8cbd63": "e3d7a6", + "63b56b": "cfc191", + "a5d670": "8c669b", "319452": "b08d72", "4aa552": "c5a77f", - "7ba563": "704e7e", - "8cbd63": "e3d7a6", - "215200": "3f3249", - "196b21": "b08d72", - "a5d674": "d7cda7", - "4a7310": "4f3956", - "a5d673": "8c669b", - "63b56b": "cfc191", - "215201": "583823" + "4a7310": "4f3956" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/332.json b/public/images/pokemon/variant/back/female/332.json index 9ec50cb7e92..17f8d3c5f74 100644 --- a/public/images/pokemon/variant/back/female/332.json +++ b/public/images/pokemon/variant/back/female/332.json @@ -1,28 +1,28 @@ { "1": { + "196b21": "780d4a", + "7ba563": "b44040", + "215201": "710f2e", + "215200": "710f2f", + "a5d674": "de5b6f", + "8cbd63": "bf3d64", + "63b56b": "9e2056", + "a5d670": "e16363", "319452": "780d4a", "4aa552": "8a1652", - "7ba563": "b44040", - "8cbd63": "bf3d64", - "215200": "710f2f", - "196b21": "780d4a", - "a5d674": "de5b6f", - "4a7310": "982443", - "a5d673": "e16363", - "63b56b": "9e2056", - "215201": "710f2e" + "4a7310": "982443" }, "2": { + "196b21": "b59c72", + "7ba563": "805a9c", + "215201": "694d37", + "215200": "41334d", + "a5d674": "f6f7df", + "8cbd63": "ebe9ca", + "63b56b": "e3ddb8", + "a5d670": "a473ba", "319452": "b59c72", "4aa552": "c9b991", - "7ba563": "805a9c", - "8cbd63": "ebe9ca", - "215200": "41334d", - "196b21": "b59c72", - "a5d674": "f6f7df", - "4a7310": "4f3956", - "a5d673": "a473ba", - "63b56b": "e3ddb8", - "215201": "694d37" + "4a7310": "4f3956" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/332.json b/public/images/pokemon/variant/female/332.json index c86429d13c4..7a1dc0f1457 100644 --- a/public/images/pokemon/variant/female/332.json +++ b/public/images/pokemon/variant/female/332.json @@ -1,34 +1,36 @@ { "1": { - "319452": "780d4a", - "4a7310": "982443", - "7ba563": "b44040", - "bdef84": "ec8c8c", "8cbd63": "bf3d64", - "215200": "710f2e", + "a5d670": "de5b6f", + "4aa552": "8a1652", "a5d674": "e16363", - "196b21": "7d1157", + "7aa953": "bf3d64", + "7ba563": "b44040", + "215200": "710f2e", "f7ce00": "5bcfc3", "525252": "20668c", - "63b56b": "9e2056", - "a5d673": "de5b6f", "8c6b3a": "33a3b0", - "4aa552": "8a1652" + "bdef84": "ec8c8c", + "63b56b": "9e2056", + "319452": "780d4a", + "196b21": "7d1157", + "4a7310": "982443" }, "2": { - "319452": "b59c72", - "4a7310": "4f3956", - "7ba563": "805a9c", - "bdef84": "c193cf", "8cbd63": "f6f7df", - "215200": "694d37", + "a5d670": "ebe9ca", + "4aa552": "c9b991", "a5d674": "a473ba", - "196b21": "9c805f", + "7aa953": "805a9c", + "7ba563": "805a9c", + "215200": "694d37", "f7ce00": "f2aab6", "525252": "983364", - "63b56b": "e3ddb8", - "a5d673": "ebe9ca", "8c6b3a": "df879f", - "4aa552": "c9b991" + "bdef84": "c193cf", + "63b56b": "e3ddb8", + "319452": "b59c72", + "196b21": "9c805f", + "4a7310": "4f3956" } } \ No newline at end of file From e053ead67cbe4c19aeadb9d61ae5bb791c7a0411 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Sun, 25 May 2025 13:37:52 -0500 Subject: [PATCH 08/71] [Bug] Fix crash caused by switching in a transformed pokemon (#5864) * Force reset summon data and load assets prior to switch in * Update src/phases/switch-summon-phase.ts --- src/phases/switch-summon-phase.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/phases/switch-summon-phase.ts b/src/phases/switch-summon-phase.ts index a063b6e6863..3e9cc7718f1 100644 --- a/src/phases/switch-summon-phase.ts +++ b/src/phases/switch-summon-phase.ts @@ -124,6 +124,12 @@ export class SwitchSummonPhase extends SummonPhase { const switchedInPokemon: Pokemon | undefined = party[this.slotIndex]; this.lastPokemon = this.getPokemon(); + // Defensive programming: Overcome the bug where the summon data has somehow not been reset + // prior to switching in a new Pokemon. + // Force the switch to occur and load the assets for the new pokemon, ignoring override. + switchedInPokemon.resetSummonData(); + switchedInPokemon.loadAssets(true); + applyPreSummonAbAttrs(PreSummonAbAttr, switchedInPokemon); applyPreSwitchOutAbAttrs(PreSwitchOutAbAttr, this.lastPokemon); if (!switchedInPokemon) { @@ -131,6 +137,7 @@ export class SwitchSummonPhase extends SummonPhase { return; } + if (this.switchType === SwitchType.BATON_PASS) { // If switching via baton pass, update opposing tags coming from the prior pokemon (this.player ? globalScene.getEnemyField() : globalScene.getPlayerField()).forEach((enemyPokemon: Pokemon) => From b803f6f18a9b7a921dff2910bfd440814032bf5e Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Tue, 27 May 2025 02:38:30 -0700 Subject: [PATCH 09/71] [i18n] Update locales (#5875) --- public/locales | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales b/public/locales index 42cd5cf577f..e9ccbadb6ea 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 42cd5cf577f475c22bc82d55e7ca358eb4f3184f +Subproject commit e9ccbadb6eaa3b797f3dec919745befda2ec74bd From 999cbf911e900723a433a8d949f8cfb2084421d0 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Tue, 27 May 2025 03:56:52 -0700 Subject: [PATCH 10/71] [Bug] Fix Pichu form weights (61.5 -> 2) --- src/data/pokemon-species.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index 59167ba47f6..6f05d17db6f 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -1697,8 +1697,8 @@ export function initSpecies() { new PokemonSpecies(Species.CHINCHOU, 2, false, false, false, "Angler Pokémon", PokemonType.WATER, PokemonType.ELECTRIC, 0.5, 12, Abilities.VOLT_ABSORB, Abilities.ILLUMINATE, Abilities.WATER_ABSORB, 330, 75, 38, 38, 56, 56, 67, 190, 50, 66, GrowthRate.SLOW, 50, false), new PokemonSpecies(Species.LANTURN, 2, false, false, false, "Light Pokémon", PokemonType.WATER, PokemonType.ELECTRIC, 1.2, 22.5, Abilities.VOLT_ABSORB, Abilities.ILLUMINATE, Abilities.WATER_ABSORB, 460, 125, 58, 58, 76, 76, 67, 75, 50, 161, GrowthRate.SLOW, 50, false), new PokemonSpecies(Species.PICHU, 2, false, false, false, "Tiny Mouse Pokémon", PokemonType.ELECTRIC, null, 0.3, 2, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), - new PokemonForm("Spiky-Eared", "spiky", PokemonType.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), + new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.4, 2, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), + new PokemonForm("Spiky-Eared", "spiky", PokemonType.ELECTRIC, null, 1.4, 2, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), ), new PokemonSpecies(Species.CLEFFA, 2, false, false, false, "Star Shape Pokémon", PokemonType.FAIRY, null, 0.3, 3, Abilities.CUTE_CHARM, Abilities.MAGIC_GUARD, Abilities.FRIEND_GUARD, 218, 50, 25, 28, 45, 55, 15, 150, 140, 44, GrowthRate.FAST, 25, false), new PokemonSpecies(Species.IGGLYBUFF, 2, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.3, 1, Abilities.CUTE_CHARM, Abilities.COMPETITIVE, Abilities.FRIEND_GUARD, 210, 90, 30, 15, 40, 20, 15, 170, 50, 42, GrowthRate.FAST, 25, false), From 65a90a3a8d4204197e975f6b5da1163d5ef0c136 Mon Sep 17 00:00:00 2001 From: Wlowscha <54003515+Wlowscha@users.noreply.github.com> Date: Tue, 27 May 2025 13:12:29 +0200 Subject: [PATCH 11/71] [UI/UX] Party UI handler refactor (part I) (#5821) * Splitting process input for menu into its own function * Making logic for return button more expressive * Breaking up processOptionMenuInput * Extracting filterResult logic from processInput * Inverting order of several conditional checks (if the function always returns after seeing the summary option, may as well check for it straight away...) * Moving edge case for release option into processReleaseOption * Splitting up options for when selectCallback is present * Added some TODOs for later * Extracted setOptionsCursor function * Extracted updateOptionsWindow() * Changing options so that each case is completely separate (almost) * Added some TODOs * Reorganizing option processing * Fixed Baton Pass; logging for testing * Fixed case of switching out by selecting the Pokemon command * Clearing options when switching out * Changed condition on switch for clarity * Updating TODO * Fixed options not clearing after item transfer * Splitting up processing of transfer and move recall mode; ensuring that the cancel option works properly * Breaking up processInput() * Removed some redundant playSelect * Cleaned up some TODOs * Added private to all new methods * Apply suggestions from code review Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/ui/party-ui-handler.ts | 1470 +++++++++++++++++++++--------------- 1 file changed, 845 insertions(+), 625 deletions(-) diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index f6105c51ee3..74d4e5bcb17 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -52,6 +52,7 @@ export enum PartyUiMode { * Indicates that the party UI is open because of a start-of-encounter optional * switch. This type of switch can be cancelled. */ + // TODO: Rename to PRE_BATTLE_SWITCH POST_BATTLE_SWITCH, /** * Indicates that the party UI is open because of the move Revival Blessing. @@ -356,6 +357,522 @@ export default class PartyUiHandler extends MessageUiHandler { return true; } + private processSummaryOption(pokemon: Pokemon): boolean { + const ui = this.getUi(); + ui.playSelect(); + ui.setModeWithoutClear(UiMode.SUMMARY, pokemon).then(() => this.clearOptions()); + return true; + } + + private processPokedexOption(pokemon: Pokemon): boolean { + const ui = this.getUi(); + ui.playSelect(); + const attributes = { + shiny: pokemon.shiny, + variant: pokemon.variant, + form: pokemon.formIndex, + female: pokemon.gender === Gender.FEMALE, + }; + ui.setOverlayMode(UiMode.POKEDEX_PAGE, pokemon.species, attributes).then(() => this.clearOptions()); + return true; + } + + private processUnpauseEvolutionOption(pokemon: Pokemon): boolean { + const ui = this.getUi(); + this.clearOptions(); + ui.playSelect(); + pokemon.pauseEvolutions = !pokemon.pauseEvolutions; + this.showText( + i18next.t(pokemon.pauseEvolutions ? "partyUiHandler:pausedEvolutions" : "partyUiHandler:unpausedEvolutions", { + pokemonName: getPokemonNameWithAffix(pokemon, false), + }), + undefined, + () => this.showText("", 0), + null, + true, + ); + return true; + } + + private processUnspliceOption(pokemon: PlayerPokemon): boolean { + const ui = this.getUi(); + this.clearOptions(); + ui.playSelect(); + this.showText( + i18next.t("partyUiHandler:unspliceConfirmation", { + fusionName: pokemon.fusionSpecies?.name, + pokemonName: pokemon.getName(), + }), + null, + () => { + ui.setModeWithoutClear( + UiMode.CONFIRM, + () => { + const fusionName = pokemon.getName(); + pokemon.unfuse().then(() => { + this.clearPartySlots(); + this.populatePartySlots(); + ui.setMode(UiMode.PARTY); + this.showText( + i18next.t("partyUiHandler:wasReverted", { + fusionName: fusionName, + pokemonName: pokemon.getName(false), + }), + undefined, + () => { + ui.setMode(UiMode.PARTY); + this.showText("", 0); + }, + null, + true, + ); + }); + }, + () => { + ui.setMode(UiMode.PARTY); + this.showText("", 0); + }, + ); + }, + ); + return true; + } + + private processReleaseOption(pokemon: Pokemon): boolean { + const ui = this.getUi(); + this.clearOptions(); + ui.playSelect(); + // In release mode, we do not ask for confirmation when clicking release. + if (this.partyUiMode === PartyUiMode.RELEASE) { + this.doRelease(this.cursor); + return true; + } + if (this.cursor >= globalScene.currentBattle.getBattlerCount() || !pokemon.isAllowedInBattle()) { + this.blockInput = true; + this.showText( + i18next.t("partyUiHandler:releaseConfirmation", { + pokemonName: getPokemonNameWithAffix(pokemon, false), + }), + null, + () => { + this.blockInput = false; + ui.setModeWithoutClear( + UiMode.CONFIRM, + () => { + ui.setMode(UiMode.PARTY); + this.doRelease(this.cursor); + }, + () => { + ui.setMode(UiMode.PARTY); + this.showText("", 0); + }, + ); + }, + ); + } else { + this.showText(i18next.t("partyUiHandler:releaseInBattle"), null, () => this.showText("", 0), null, true); + } + return true; + } + + private processRenameOption(pokemon: Pokemon): boolean { + const ui = this.getUi(); + this.clearOptions(); + ui.playSelect(); + ui.setModeWithoutClear( + UiMode.RENAME_POKEMON, + { + buttonActions: [ + (nickname: string) => { + ui.playSelect(); + pokemon.nickname = nickname; + pokemon.updateInfo(); + this.clearPartySlots(); + this.populatePartySlots(); + ui.setMode(UiMode.PARTY); + }, + () => { + ui.setMode(UiMode.PARTY); + }, + ], + }, + pokemon, + ); + return true; + } + + // TODO: Does this need to check that selectCallback exists? + private processTransferOption(): boolean { + const ui = this.getUi(); + if (this.transferCursor !== this.cursor) { + if (this.transferAll) { + this.getTransferrableItemsFromPokemon(globalScene.getPlayerParty()[this.transferCursor]).forEach( + (_, i, array) => { + const invertedIndex = array.length - 1 - i; + (this.selectCallback as PartyModifierTransferSelectCallback)( + this.transferCursor, + invertedIndex, + this.transferQuantitiesMax[invertedIndex], + this.cursor, + ); + }, + ); + } else { + (this.selectCallback as PartyModifierTransferSelectCallback)( + this.transferCursor, + this.transferOptionCursor, + this.transferQuantities[this.transferOptionCursor], + this.cursor, + ); + } + } + this.clearTransfer(); + this.clearOptions(); + ui.playSelect(); + return true; + } + + // TODO: This will be largely changed with the modifier rework + private processModifierTransferModeInput(pokemon: PlayerPokemon) { + const ui = this.getUi(); + const option = this.options[this.optionsCursor]; + + if (option === PartyOption.TRANSFER) { + return this.processTransferOption(); + } + + // TODO: Revise this condition + if (!this.transferMode) { + this.startTransfer(); + + let ableToTransferText: string; + for (let p = 0; p < globalScene.getPlayerParty().length; p++) { + // this for look goes through each of the party pokemon + const newPokemon = globalScene.getPlayerParty()[p]; + // this next bit checks to see if the the selected item from the original transfer pokemon exists on the new pokemon `p` + // this returns `undefined` if the new pokemon doesn't have the item at all, otherwise it returns the `pokemonHeldItemModifier` for that item + const matchingModifier = globalScene.findModifier( + m => + m instanceof PokemonHeldItemModifier && + m.pokemonId === newPokemon.id && + m.matchType(this.getTransferrableItemsFromPokemon(pokemon)[this.transferOptionCursor]), + ) as PokemonHeldItemModifier; + const partySlot = this.partySlots.filter(m => m.getPokemon() === newPokemon)[0]; // this gets pokemon [p] for us + if (p !== this.transferCursor) { + // this skips adding the able/not able labels on the pokemon doing the transfer + if (matchingModifier) { + // if matchingModifier exists then the item exists on the new pokemon + if (matchingModifier.getMaxStackCount() === matchingModifier.stackCount) { + // checks to see if the stack of items is at max stack; if so, set the description label to "Not able" + ableToTransferText = i18next.t("partyUiHandler:notAble"); + } else { + // if the pokemon isn't at max stack, make the label "Able" + ableToTransferText = i18next.t("partyUiHandler:able"); + } + } else { + // if matchingModifier doesn't exist, that means the pokemon doesn't have any of the item, and we need to show "Able" + ableToTransferText = i18next.t("partyUiHandler:able"); + } + } else { + // this else relates to the transfer pokemon. We set the text to be blank so there's no "Able"/"Not able" text + ableToTransferText = ""; + } + partySlot.slotHpBar.setVisible(false); + partySlot.slotHpOverlay.setVisible(false); + partySlot.slotHpText.setVisible(false); + partySlot.slotDescriptionLabel.setText(ableToTransferText); + partySlot.slotDescriptionLabel.setVisible(true); + } + this.clearOptions(); + ui.playSelect(); + return true; + } + return false; + } + + // TODO: Might need to check here for when this.transferMode is active. + private processModifierTransferModeLeftRightInput(button: Button) { + let success = false; + const option = this.options[this.optionsCursor]; + if (button === Button.LEFT) { + /** Decrease quantity for the current item and update UI */ + if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER) { + this.transferQuantities[option] = + this.transferQuantities[option] === 1 + ? this.transferQuantitiesMax[option] + : this.transferQuantities[option] - 1; + this.updateOptions(); + success = this.setCursor( + this.optionsCursor, + ); /** Place again the cursor at the same position. Necessary, otherwise the cursor disappears */ + } + } + + if (button === Button.RIGHT) { + /** Increase quantity for the current item and update UI */ + if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER) { + this.transferQuantities[option] = + this.transferQuantities[option] === this.transferQuantitiesMax[option] + ? 1 + : this.transferQuantities[option] + 1; + this.updateOptions(); + success = this.setCursor( + this.optionsCursor, + ); /** Place again the cursor at the same position. Necessary, otherwise the cursor disappears */ + } + } + return success; + } + + // TODO: Might need to check here for when this.transferMode is active. + private processModifierTransferModeUpDownInput(button: Button.UP | Button.DOWN) { + let success = false; + const option = this.options[this.optionsCursor]; + + if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER) { + if (option !== PartyOption.ALL) { + this.transferQuantities[option] = this.transferQuantitiesMax[option]; + } + this.updateOptions(); + } + success = this.moveOptionCursor(button); + + return success; + } + + private moveOptionCursor(button: Button.UP | Button.DOWN): boolean { + if (button === Button.UP) { + return this.setCursor(this.optionsCursor ? this.optionsCursor - 1 : this.options.length - 1); + } + return this.setCursor(this.optionsCursor < this.options.length - 1 ? this.optionsCursor + 1 : 0); + } + + private processRememberMoveModeInput(pokemon: PlayerPokemon) { + const ui = this.getUi(); + const option = this.options[this.optionsCursor]; + + // clear overlay on cancel + this.moveInfoOverlay.clear(); + const filterResult = (this.selectFilter as PokemonSelectFilter)(pokemon); + if (filterResult === null) { + this.selectCallback?.(this.cursor, option); + this.clearOptions(); + } else { + this.clearOptions(); + this.showText(filterResult as string, undefined, () => this.showText("", 0), undefined, true); + } + ui.playSelect(); + return true; + } + + private processRememberMoveModeUpDownInput(button: Button.UP | Button.DOWN) { + let success = false; + + success = this.moveOptionCursor(button); + + // show move description + const option = this.options[this.optionsCursor]; + const pokemon = globalScene.getPlayerParty()[this.cursor]; + const move = allMoves[pokemon.getLearnableLevelMoves()[option]]; + if (move) { + this.moveInfoOverlay.show(move); + } else { + // or hide the overlay, in case it's the cancel button + this.moveInfoOverlay.clear(); + } + + return success; + } + + private getTransferrableItemsFromPokemon(pokemon: PlayerPokemon) { + return globalScene.findModifiers( + m => m instanceof PokemonHeldItemModifier && m.isTransferable && m.pokemonId === pokemon.id, + ) as PokemonHeldItemModifier[]; + } + + private getFilterResult(option: number, pokemon: PlayerPokemon): string | null { + let filterResult: string | null; + if (option !== PartyOption.TRANSFER && option !== PartyOption.SPLICE) { + filterResult = (this.selectFilter as PokemonSelectFilter)(pokemon); + if (filterResult === null && (option === PartyOption.SEND_OUT || option === PartyOption.PASS_BATON)) { + filterResult = this.FilterChallengeLegal(pokemon); + } + if (filterResult === null && this.partyUiMode === PartyUiMode.MOVE_MODIFIER) { + filterResult = this.moveSelectFilter(pokemon.moveset[this.optionsCursor]); + } + } else { + filterResult = (this.selectFilter as PokemonModifierTransferSelectFilter)( + pokemon, + this.getTransferrableItemsFromPokemon(globalScene.getPlayerParty()[this.transferCursor])[ + this.transferOptionCursor + ], + ); + } + return filterResult; + } + + private processActionButtonForOptions(option: PartyOption) { + const ui = this.getUi(); + if (option === PartyOption.CANCEL) { + return this.processOptionMenuInput(Button.CANCEL); + } + + // If the input has been already processed we are done, otherwise move on until the correct option is found + const pokemon = globalScene.getPlayerParty()[this.cursor]; + + // TODO: Careful about using success for the return values here. Find a better way + // PartyOption.ALL, and options specific to the mode (held items) + if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER) { + return this.processModifierTransferModeInput(pokemon); + } + + // options specific to the mode (moves) + if (this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER) { + return this.processRememberMoveModeInput(pokemon); + } + + // These are the options that do not involve a callback + if (option === PartyOption.SUMMARY) { + return this.processSummaryOption(pokemon); + } + if (option === PartyOption.POKEDEX) { + return this.processPokedexOption(pokemon); + } + if (option === PartyOption.UNPAUSE_EVOLUTION) { + return this.processUnpauseEvolutionOption(pokemon); + } + if (option === PartyOption.UNSPLICE) { + return this.processUnspliceOption(pokemon); + } + if (option === PartyOption.RENAME) { + return this.processRenameOption(pokemon); + } + // This is only relevant for PartyUiMode.CHECK + // TODO: This risks hitting the other options (.MOVE_i and ALL) so does it? Do we need an extra check? + if ( + option >= PartyOption.FORM_CHANGE_ITEM && + globalScene.getCurrentPhase() instanceof SelectModifierPhase && + this.partyUiMode === PartyUiMode.CHECK + ) { + const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); + const modifier = formChangeItemModifiers[option - PartyOption.FORM_CHANGE_ITEM]; + modifier.active = !modifier.active; + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeItemTrigger, false, true); + } + + // If the pokemon is filtered out for this option, we cannot continue + const filterResult = this.getFilterResult(option, pokemon); + if (filterResult) { + this.clearOptions(); + this.showText(filterResult as string, undefined, () => this.showText("", 0), undefined, true); + return true; + } + + // For what modes is a selectCallback needed? + // PartyUiMode.SELECT (SELECT) + // PartyUiMode.RELEASE (RELEASE) + // PartyUiMode.FAINT_SWITCH (SEND_OUT or PASS_BATON (?)) + // PartyUiMode.REVIVAL_BLESSING (REVIVE) + // PartyUiMode.MODIFIER_TRANSFER (held items, and ALL) + // PartyUiMode.CHECK --- no specific option, only relevant on cancel? + // PartyUiMode.SPLICE (SPLICE) + // PartyUiMode.MOVE_MODIFIER (MOVE_1, MOVE_2, MOVE_3, MOVE_4) + // PartyUiMode.TM_MODIFIER (TEACH) + // PartyUiMode.REMEMBER_MOVE_MODIFIER (no specific option, callback is invoked when selecting a move) + // PartyUiMode.MODIFIER (APPLY option) + // PartyUiMode.POST_BATTLE_SWITCH (SEND_OUT) + + // These are the options that need a callback + if (option === PartyOption.RELEASE) { + return this.processReleaseOption(pokemon); + } + + if (this.partyUiMode === PartyUiMode.SPLICE) { + if (option === PartyOption.SPLICE) { + (this.selectCallback as PartyModifierSpliceSelectCallback)(this.transferCursor, this.cursor); + this.clearTransfer(); + } else if (option === PartyOption.APPLY) { + this.startTransfer(); + } + this.clearOptions(); + ui.playSelect(); + return true; + } + + // This is used when switching out using the Pokemon command (possibly holding a Baton held item). In this case there is no callback. + if ( + (option === PartyOption.PASS_BATON || option === PartyOption.SEND_OUT) && + this.partyUiMode === PartyUiMode.SWITCH + ) { + this.clearOptions(); + (globalScene.getCurrentPhase() as CommandPhase).handleCommand( + Command.POKEMON, + this.cursor, + option === PartyOption.PASS_BATON, + ); + } + + if ( + [ + PartyOption.SEND_OUT, // When sending out at the start of battle, or due to an effect + PartyOption.PASS_BATON, // When passing the baton due to the Baton Pass move + PartyOption.REVIVE, + PartyOption.APPLY, + PartyOption.TEACH, + PartyOption.MOVE_1, + PartyOption.MOVE_2, + PartyOption.MOVE_3, + PartyOption.MOVE_4, + PartyOption.SELECT, + ].includes(option) && + this.selectCallback + ) { + this.clearOptions(); + const selectCallback = this.selectCallback; + this.selectCallback = null; + selectCallback(this.cursor, option); + return true; + } + + return false; + } + + private processOptionMenuInput(button: Button) { + const ui = this.getUi(); + const option = this.options[this.optionsCursor]; + + // Button.CANCEL has no special behavior for any option + if (button === Button.CANCEL) { + this.clearOptions(); + ui.playSelect(); + return true; + } + + if (button === Button.ACTION) { + return this.processActionButtonForOptions(option); + } + + if (button === Button.UP || button === Button.DOWN) { + if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER) { + return this.processModifierTransferModeUpDownInput(button); + } + + if (this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER) { + return this.processRememberMoveModeUpDownInput(button); + } + + return this.moveOptionCursor(button); + } + + if (button === Button.LEFT || button === Button.RIGHT) { + if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER) { + return this.processModifierTransferModeLeftRightInput(button); + } + } + + return false; + } + processInput(button: Button): boolean { const ui = this.getUi(); @@ -375,463 +892,120 @@ export default class PartyUiHandler extends MessageUiHandler { return false; } - let success = false; - if (this.optionsMode) { - const option = this.options[this.optionsCursor]; - if (button === Button.ACTION) { - const pokemon = globalScene.getPlayerParty()[this.cursor]; - if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER && !this.transferMode && option !== PartyOption.CANCEL) { - this.startTransfer(); - - let ableToTransfer: string; - for (let p = 0; p < globalScene.getPlayerParty().length; p++) { - // this for look goes through each of the party pokemon - const newPokemon = globalScene.getPlayerParty()[p]; - // this next line gets all of the transferable items from pokemon [p]; it does this by getting all the held modifiers that are transferable and checking to see if they belong to pokemon [p] - const getTransferrableItemsFromPokemon = (newPokemon: PlayerPokemon) => - globalScene.findModifiers( - m => - m instanceof PokemonHeldItemModifier && - (m as PokemonHeldItemModifier).isTransferable && - (m as PokemonHeldItemModifier).pokemonId === newPokemon.id, - ) as PokemonHeldItemModifier[]; - // this next bit checks to see if the the selected item from the original transfer pokemon exists on the new pokemon [p]; this returns undefined if the new pokemon doesn't have the item at all, otherwise it returns the pokemonHeldItemModifier for that item - const matchingModifier = globalScene.findModifier( - m => - m instanceof PokemonHeldItemModifier && - m.pokemonId === newPokemon.id && - m.matchType(getTransferrableItemsFromPokemon(pokemon)[this.transferOptionCursor]), - ) as PokemonHeldItemModifier; - const partySlot = this.partySlots.filter(m => m.getPokemon() === newPokemon)[0]; // this gets pokemon [p] for us - if (p !== this.transferCursor) { - // this skips adding the able/not able labels on the pokemon doing the transfer - if (matchingModifier) { - // if matchingModifier exists then the item exists on the new pokemon - if (matchingModifier.getMaxStackCount() === matchingModifier.stackCount) { - // checks to see if the stack of items is at max stack; if so, set the description label to "Not able" - ableToTransfer = i18next.t("partyUiHandler:notAble"); - } else { - // if the pokemon isn't at max stack, make the label "Able" - ableToTransfer = i18next.t("partyUiHandler:able"); - } - } else { - // if matchingModifier doesn't exist, that means the pokemon doesn't have any of the item, and we need to show "Able" - ableToTransfer = i18next.t("partyUiHandler:able"); - } - } else { - // this else relates to the transfer pokemon. We set the text to be blank so there's no "Able"/"Not able" text - ableToTransfer = ""; - } - partySlot.slotHpBar.setVisible(false); - partySlot.slotHpOverlay.setVisible(false); - partySlot.slotHpText.setVisible(false); - partySlot.slotDescriptionLabel.setText(ableToTransfer); - partySlot.slotDescriptionLabel.setVisible(true); - } - - this.clearOptions(); - ui.playSelect(); - return true; - } - if (this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER && option !== PartyOption.CANCEL) { - // clear overlay on cancel - this.moveInfoOverlay.clear(); - const filterResult = (this.selectFilter as PokemonSelectFilter)(pokemon); - if (filterResult === null) { - this.selectCallback?.(this.cursor, option); - this.clearOptions(); - } else { - this.clearOptions(); - this.showText(filterResult as string, undefined, () => this.showText("", 0), undefined, true); - } - ui.playSelect(); - return true; - } - if ( - ![ - PartyOption.SUMMARY, - PartyOption.POKEDEX, - PartyOption.UNPAUSE_EVOLUTION, - PartyOption.UNSPLICE, - PartyOption.RELEASE, - PartyOption.CANCEL, - PartyOption.RENAME, - ].includes(option) || - (option === PartyOption.RELEASE && this.partyUiMode === PartyUiMode.RELEASE) - ) { - let filterResult: string | null; - const getTransferrableItemsFromPokemon = (pokemon: PlayerPokemon) => - globalScene.findModifiers( - m => m instanceof PokemonHeldItemModifier && m.isTransferable && m.pokemonId === pokemon.id, - ) as PokemonHeldItemModifier[]; - if (option !== PartyOption.TRANSFER && option !== PartyOption.SPLICE) { - filterResult = (this.selectFilter as PokemonSelectFilter)(pokemon); - if (filterResult === null && (option === PartyOption.SEND_OUT || option === PartyOption.PASS_BATON)) { - filterResult = this.FilterChallengeLegal(pokemon); - } - if (filterResult === null && this.partyUiMode === PartyUiMode.MOVE_MODIFIER) { - filterResult = this.moveSelectFilter(pokemon.moveset[this.optionsCursor]); - } - } else { - filterResult = (this.selectFilter as PokemonModifierTransferSelectFilter)( - pokemon, - getTransferrableItemsFromPokemon(globalScene.getPlayerParty()[this.transferCursor])[ - this.transferOptionCursor - ], - ); - } - if (filterResult === null) { - if (this.partyUiMode !== PartyUiMode.SPLICE) { - this.clearOptions(); - } - if (this.selectCallback && this.partyUiMode !== PartyUiMode.CHECK) { - if (option === PartyOption.TRANSFER) { - if (this.transferCursor !== this.cursor) { - if (this.transferAll) { - getTransferrableItemsFromPokemon(globalScene.getPlayerParty()[this.transferCursor]).forEach( - (_, i, array) => { - const invertedIndex = array.length - 1 - i; - (this.selectCallback as PartyModifierTransferSelectCallback)( - this.transferCursor, - invertedIndex, - this.transferQuantitiesMax[invertedIndex], - this.cursor, - ); - }, - ); - } else { - (this.selectCallback as PartyModifierTransferSelectCallback)( - this.transferCursor, - this.transferOptionCursor, - this.transferQuantities[this.transferOptionCursor], - this.cursor, - ); - } - } - this.clearTransfer(); - } else if (this.partyUiMode === PartyUiMode.SPLICE) { - if (option === PartyOption.SPLICE) { - (this.selectCallback as PartyModifierSpliceSelectCallback)(this.transferCursor, this.cursor); - this.clearTransfer(); - } else { - this.startTransfer(); - } - this.clearOptions(); - } else if (option === PartyOption.RELEASE) { - this.doRelease(this.cursor); - } else { - const selectCallback = this.selectCallback; - this.selectCallback = null; - selectCallback(this.cursor, option); - } - } else { - if ( - option >= PartyOption.FORM_CHANGE_ITEM && - globalScene.getCurrentPhase() instanceof SelectModifierPhase - ) { - if (this.partyUiMode === PartyUiMode.CHECK) { - const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); - const modifier = formChangeItemModifiers[option - PartyOption.FORM_CHANGE_ITEM]; - modifier.active = !modifier.active; - globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeItemTrigger, false, true); - } - } else if (this.cursor) { - (globalScene.getCurrentPhase() as CommandPhase).handleCommand( - Command.POKEMON, - this.cursor, - option === PartyOption.PASS_BATON, - ); - } - } - if ( - this.partyUiMode !== PartyUiMode.MODIFIER && - this.partyUiMode !== PartyUiMode.TM_MODIFIER && - this.partyUiMode !== PartyUiMode.MOVE_MODIFIER - ) { - ui.playSelect(); - } - return true; - } - this.clearOptions(); - this.showText(filterResult as string, undefined, () => this.showText("", 0), undefined, true); - } else if (option === PartyOption.SUMMARY) { - ui.playSelect(); - ui.setModeWithoutClear(UiMode.SUMMARY, pokemon).then(() => this.clearOptions()); - return true; - } else if (option === PartyOption.POKEDEX) { - ui.playSelect(); - const attributes = { - shiny: pokemon.shiny, - variant: pokemon.variant, - form: pokemon.formIndex, - female: pokemon.gender === Gender.FEMALE, - }; - ui.setOverlayMode(UiMode.POKEDEX_PAGE, pokemon.species, attributes).then(() => this.clearOptions()); - return true; - } else if (option === PartyOption.UNPAUSE_EVOLUTION) { - this.clearOptions(); - ui.playSelect(); - pokemon.pauseEvolutions = !pokemon.pauseEvolutions; - this.showText( - i18next.t( - pokemon.pauseEvolutions ? "partyUiHandler:pausedEvolutions" : "partyUiHandler:unpausedEvolutions", - { pokemonName: getPokemonNameWithAffix(pokemon, false) }, - ), - undefined, - () => this.showText("", 0), - null, - true, - ); - } else if (option === PartyOption.UNSPLICE) { - this.clearOptions(); - ui.playSelect(); - this.showText( - i18next.t("partyUiHandler:unspliceConfirmation", { - fusionName: pokemon.fusionSpecies?.name, - pokemonName: pokemon.getName(), - }), - null, - () => { - ui.setModeWithoutClear( - UiMode.CONFIRM, - () => { - const fusionName = pokemon.getName(); - pokemon.unfuse().then(() => { - this.clearPartySlots(); - this.populatePartySlots(); - ui.setMode(UiMode.PARTY); - this.showText( - i18next.t("partyUiHandler:wasReverted", { - fusionName: fusionName, - pokemonName: pokemon.getName(false), - }), - undefined, - () => { - ui.setMode(UiMode.PARTY); - this.showText("", 0); - }, - null, - true, - ); - }); - }, - () => { - ui.setMode(UiMode.PARTY); - this.showText("", 0); - }, - ); - }, - ); - } else if (option === PartyOption.RELEASE) { - this.clearOptions(); - ui.playSelect(); - if (this.cursor >= globalScene.currentBattle.getBattlerCount() || !pokemon.isAllowedInBattle()) { - this.blockInput = true; - this.showText( - i18next.t("partyUiHandler:releaseConfirmation", { - pokemonName: getPokemonNameWithAffix(pokemon, false), - }), - null, - () => { - this.blockInput = false; - ui.setModeWithoutClear( - UiMode.CONFIRM, - () => { - ui.setMode(UiMode.PARTY); - this.doRelease(this.cursor); - }, - () => { - ui.setMode(UiMode.PARTY); - this.showText("", 0); - }, - ); - }, - ); - } else { - this.showText(i18next.t("partyUiHandler:releaseInBattle"), null, () => this.showText("", 0), null, true); - } - return true; - } else if (option === PartyOption.RENAME) { - this.clearOptions(); - ui.playSelect(); - ui.setModeWithoutClear( - UiMode.RENAME_POKEMON, - { - buttonActions: [ - (nickname: string) => { - ui.playSelect(); - pokemon.nickname = nickname; - pokemon.updateInfo(); - this.clearPartySlots(); - this.populatePartySlots(); - ui.setMode(UiMode.PARTY); - }, - () => { - ui.setMode(UiMode.PARTY); - }, - ], - }, - pokemon, - ); - return true; - } else if (option === PartyOption.CANCEL) { - return this.processInput(Button.CANCEL); - } else if (option === PartyOption.SELECT) { - ui.playSelect(); - return true; - } - } else if (button === Button.CANCEL) { - this.clearOptions(); + let success = false; + success = this.processOptionMenuInput(button); + if (success) { ui.playSelect(); - return true; + } + return success; + } + + if (button === Button.ACTION) { + return this.processPartyActionInput(); + } + + if (button === Button.CANCEL) { + return this.processPartyCancelInput(); + } + + if (button === Button.UP || button === Button.DOWN || button === Button.RIGHT || button === Button.LEFT) { + return this.processPartyDirectionalInput(button); + } + + return false; + } + + private allowCancel(): boolean { + return !(this.partyUiMode === PartyUiMode.FAINT_SWITCH || this.partyUiMode === PartyUiMode.REVIVAL_BLESSING); + } + + private processPartyActionInput(): boolean { + const ui = this.getUi(); + if (this.cursor < 6) { + if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER && !this.transferMode) { + /** Initialize item quantities for the selected Pokemon */ + const itemModifiers = globalScene.findModifiers( + m => + m instanceof PokemonHeldItemModifier && + m.isTransferable && + m.pokemonId === globalScene.getPlayerParty()[this.cursor].id, + ) as PokemonHeldItemModifier[]; + this.transferQuantities = itemModifiers.map(item => item.getStackCount()); + this.transferQuantitiesMax = itemModifiers.map(item => item.getStackCount()); + } + this.showOptions(); + ui.playSelect(); + } + // Pressing return button + if (this.cursor === 6) { + if (!this.allowCancel()) { + ui.playError(); } else { - switch (button) { - case Button.LEFT: - /** Decrease quantity for the current item and update UI */ - if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER) { - this.transferQuantities[option] = - this.transferQuantities[option] === 1 - ? this.transferQuantitiesMax[option] - : this.transferQuantities[option] - 1; - this.updateOptions(); - success = this.setCursor( - this.optionsCursor, - ); /** Place again the cursor at the same position. Necessary, otherwise the cursor disappears */ - } - break; - case Button.RIGHT: - /** Increase quantity for the current item and update UI */ - if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER) { - this.transferQuantities[option] = - this.transferQuantities[option] === this.transferQuantitiesMax[option] - ? 1 - : this.transferQuantities[option] + 1; - this.updateOptions(); - success = this.setCursor( - this.optionsCursor, - ); /** Place again the cursor at the same position. Necessary, otherwise the cursor disappears */ - } - break; - case Button.UP: - /** If currently selecting items to transfer, reset quantity selection */ - if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER) { - if (option !== PartyOption.ALL) { - this.transferQuantities[option] = this.transferQuantitiesMax[option]; - } - this.updateOptions(); - } - success = this.setCursor( - this.optionsCursor ? this.optionsCursor - 1 : this.options.length - 1, - ); /** Move cursor */ - break; - case Button.DOWN: - /** If currently selecting items to transfer, reset quantity selection */ - if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER) { - if (option !== PartyOption.ALL) { - this.transferQuantities[option] = this.transferQuantitiesMax[option]; - } - this.updateOptions(); - } - success = this.setCursor( - this.optionsCursor < this.options.length - 1 ? this.optionsCursor + 1 : 0, - ); /** Move cursor */ - break; - } - - // show move description - if (this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER) { - const option = this.options[this.optionsCursor]; - const pokemon = globalScene.getPlayerParty()[this.cursor]; - const move = allMoves[pokemon.getLearnableLevelMoves()[option]]; - if (move) { - this.moveInfoOverlay.show(move); - } else { - // or hide the overlay, in case it's the cancel button - this.moveInfoOverlay.clear(); - } - } + return this.processInput(Button.CANCEL); } - } else { - if (button === Button.ACTION) { - if (this.cursor < 6) { - if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER && !this.transferMode) { - /** Initialize item quantities for the selected Pokemon */ - const itemModifiers = globalScene.findModifiers( - m => - m instanceof PokemonHeldItemModifier && - m.isTransferable && - m.pokemonId === globalScene.getPlayerParty()[this.cursor].id, - ) as PokemonHeldItemModifier[]; - this.transferQuantities = itemModifiers.map(item => item.getStackCount()); - this.transferQuantitiesMax = itemModifiers.map(item => item.getStackCount()); - } - this.showOptions(); - ui.playSelect(); - } else if (this.partyUiMode === PartyUiMode.FAINT_SWITCH || this.partyUiMode === PartyUiMode.REVIVAL_BLESSING) { - ui.playError(); - } else { - return this.processInput(Button.CANCEL); - } - return true; + } + return true; + } + + private processPartyCancelInput(): boolean { + const ui = this.getUi(); + if ( + (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER || this.partyUiMode === PartyUiMode.SPLICE) && + this.transferMode + ) { + this.clearTransfer(); + ui.playSelect(); + } else if (this.allowCancel()) { + if (this.selectCallback) { + const selectCallback = this.selectCallback; + this.selectCallback = null; + selectCallback(6, PartyOption.CANCEL); + ui.playSelect(); + } else { + ui.setMode(UiMode.COMMAND, this.fieldIndex); + ui.playSelect(); } - if (button === Button.CANCEL) { - if ( - (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER || this.partyUiMode === PartyUiMode.SPLICE) && - this.transferMode - ) { - this.clearTransfer(); - ui.playSelect(); - } else if (this.partyUiMode !== PartyUiMode.FAINT_SWITCH && this.partyUiMode !== PartyUiMode.REVIVAL_BLESSING) { - if (this.selectCallback) { - const selectCallback = this.selectCallback; - this.selectCallback = null; - selectCallback(6, PartyOption.CANCEL); - ui.playSelect(); - } else { - ui.setMode(UiMode.COMMAND, this.fieldIndex); - ui.playSelect(); - } + } + return true; + } + + private processPartyDirectionalInput(button: Button.UP | Button.DOWN | Button.LEFT | Button.RIGHT): boolean { + const ui = this.getUi(); + const slotCount = this.partySlots.length; + const battlerCount = globalScene.currentBattle.getBattlerCount(); + + let success = false; + switch (button) { + case Button.UP: + success = this.setCursor(this.cursor ? (this.cursor < 6 ? this.cursor - 1 : slotCount - 1) : 6); + break; + case Button.DOWN: + success = this.setCursor(this.cursor < 6 ? (this.cursor < slotCount - 1 ? this.cursor + 1 : 6) : 0); + break; + case Button.LEFT: + if (this.cursor >= battlerCount && this.cursor <= 6) { + success = this.setCursor(0); } - - return true; - } - - const slotCount = this.partySlots.length; - const battlerCount = globalScene.currentBattle.getBattlerCount(); - - switch (button) { - case Button.UP: - success = this.setCursor(this.cursor ? (this.cursor < 6 ? this.cursor - 1 : slotCount - 1) : 6); + break; + case Button.RIGHT: + if (slotCount === battlerCount) { + success = this.setCursor(6); break; - case Button.DOWN: - success = this.setCursor(this.cursor < 6 ? (this.cursor < slotCount - 1 ? this.cursor + 1 : 6) : 0); + } + if (battlerCount >= 2 && slotCount > battlerCount && this.getCursor() === 0 && this.lastCursor === 1) { + success = this.setCursor(2); break; - case Button.LEFT: - if (this.cursor >= battlerCount && this.cursor <= 6) { - success = this.setCursor(0); - } + } + if (slotCount > battlerCount && this.cursor < battlerCount) { + success = this.setCursor(this.lastCursor < 6 ? this.lastCursor || battlerCount : battlerCount); break; - case Button.RIGHT: - if (slotCount === battlerCount) { - success = this.setCursor(6); - break; - } - if (battlerCount >= 2 && slotCount > battlerCount && this.getCursor() === 0 && this.lastCursor === 1) { - success = this.setCursor(2); - break; - } - if (slotCount > battlerCount && this.cursor < battlerCount) { - success = this.setCursor(this.lastCursor < 6 ? this.lastCursor || battlerCount : battlerCount); - break; - } - } + } } if (success) { ui.playSelect(); } - return success; } @@ -860,64 +1034,66 @@ export default class PartyUiHandler extends MessageUiHandler { } setCursor(cursor: number): boolean { - let changed: boolean; - if (this.optionsMode) { - changed = this.optionsCursor !== cursor; - let isScroll = false; - if (changed && this.optionsScroll) { - if (Math.abs(cursor - this.optionsCursor) === this.options.length - 1) { - this.optionsScrollCursor = cursor ? this.optionsScrollTotal - 8 : 0; - this.updateOptions(); - } else { - const isDown = cursor && cursor > this.optionsCursor; - if (isDown) { - if (this.options[cursor] === PartyOption.SCROLL_DOWN) { - isScroll = true; - this.optionsScrollCursor++; - } - } else { - if (!cursor && this.optionsScrollCursor) { - isScroll = true; - this.optionsScrollCursor--; - } - } - if (isScroll && this.optionsScrollCursor === 1) { - this.optionsScrollCursor += isDown ? 1 : -1; - } - } + return this.setOptionsCursor(cursor); + } + const changed = this.cursor !== cursor; + if (changed) { + this.lastCursor = this.cursor; + this.cursor = cursor; + if (this.lastCursor < 6) { + this.partySlots[this.lastCursor].deselect(); + } else if (this.lastCursor === 6) { + this.partyCancelButton.deselect(); } - if (isScroll) { + if (cursor < 6) { + this.partySlots[cursor].select(); + } else if (cursor === 6) { + this.partyCancelButton.select(); + } + } + return changed; + } + + private setOptionsCursor(cursor: number): boolean { + const changed = this.optionsCursor !== cursor; + let isScroll = false; + if (changed && this.optionsScroll) { + if (Math.abs(cursor - this.optionsCursor) === this.options.length - 1) { + this.optionsScrollCursor = cursor ? this.optionsScrollTotal - 8 : 0; this.updateOptions(); } else { - this.optionsCursor = cursor; - } - if (!this.optionsCursorObj) { - this.optionsCursorObj = globalScene.add.image(0, 0, "cursor"); - this.optionsCursorObj.setOrigin(0, 0); - this.optionsContainer.add(this.optionsCursorObj); - } - this.optionsCursorObj.setPosition( - 8 - this.optionsBg.displayWidth, - -19 - 16 * (this.options.length - 1 - this.optionsCursor), - ); - } else { - changed = this.cursor !== cursor; - if (changed) { - this.lastCursor = this.cursor; - this.cursor = cursor; - if (this.lastCursor < 6) { - this.partySlots[this.lastCursor].deselect(); - } else if (this.lastCursor === 6) { - this.partyCancelButton.deselect(); + const isDown = cursor && cursor > this.optionsCursor; + if (isDown) { + if (this.options[cursor] === PartyOption.SCROLL_DOWN) { + isScroll = true; + this.optionsScrollCursor++; + } + } else { + if (!cursor && this.optionsScrollCursor) { + isScroll = true; + this.optionsScrollCursor--; + } } - if (cursor < 6) { - this.partySlots[cursor].select(); - } else if (cursor === 6) { - this.partyCancelButton.select(); + if (isScroll && this.optionsScrollCursor === 1) { + this.optionsScrollCursor += isDown ? 1 : -1; } } } + if (isScroll) { + this.updateOptions(); + } else { + this.optionsCursor = cursor; + } + if (!this.optionsCursorObj) { + this.optionsCursorObj = globalScene.add.image(0, 0, "cursor"); + this.optionsCursorObj.setOrigin(0, 0); + this.optionsContainer.add(this.optionsCursorObj); + } + this.optionsCursorObj.setPosition( + 8 - this.optionsBg.displayWidth, + -19 - 16 * (this.options.length - 1 - this.optionsCursor), + ); return changed; } @@ -984,149 +1160,81 @@ export default class PartyUiHandler extends MessageUiHandler { this.setCursor(0); } - updateOptions(): void { - const pokemon = globalScene.getPlayerParty()[this.cursor]; + private allowBatonModifierSwitch(): boolean { + return !!( + this.partyUiMode !== PartyUiMode.FAINT_SWITCH && + globalScene.findModifier( + m => + m instanceof SwitchEffectTransferModifier && + m.pokemonId === globalScene.getPlayerField()[this.fieldIndex].id, + ) + ); + } - const learnableLevelMoves = - this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER ? pokemon.getLearnableLevelMoves() : []; + // TODO: add FORCED_SWITCH (and perhaps also BATON_PASS_SWITCH) to the modes + private isBatonPassMove(): boolean { + const moveHistory = globalScene.getPlayerField()[this.fieldIndex].getMoveHistory(); + return !!( + this.partyUiMode === PartyUiMode.FAINT_SWITCH && + moveHistory.length && + allMoves[moveHistory[moveHistory.length - 1].move].getAttrs(ForceSwitchOutAttr)[0]?.isBatonPass() && + moveHistory[moveHistory.length - 1].result === MoveResult.SUCCESS + ); + } - if (this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER && learnableLevelMoves?.length) { + private getItemModifiers(pokemon: Pokemon): PokemonHeldItemModifier[] { + return ( + (globalScene.findModifiers( + m => m instanceof PokemonHeldItemModifier && m.isTransferable && m.pokemonId === pokemon.id, + ) as PokemonHeldItemModifier[]) ?? [] + ); + } + + private updateOptionsWithRememberMoveModifierMode(pokemon): void { + const learnableMoves = pokemon.getLearnableLevelMoves(); + for (let m = 0; m < learnableMoves.length; m++) { + this.options.push(m); + } + if (learnableMoves?.length) { // show the move overlay with info for the first move - this.moveInfoOverlay.show(allMoves[learnableLevelMoves[0]]); + this.moveInfoOverlay.show(allMoves[learnableMoves[0]]); } + } - const itemModifiers = - this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER - ? (globalScene.findModifiers( - m => m instanceof PokemonHeldItemModifier && m.isTransferable && m.pokemonId === pokemon.id, - ) as PokemonHeldItemModifier[]) - : []; - - if (this.options.length) { - this.options.splice(0, this.options.length); - this.optionsContainer.removeAll(true); - this.eraseOptionsCursor(); + private updateOptionsWithMoveModifierMode(pokemon): void { + // MOVE_1, MOVE_2, MOVE_3, MOVE_4 + for (let m = 0; m < pokemon.moveset.length; m++) { + this.options.push(PartyOption.MOVE_1 + m); } + } - let formChangeItemModifiers: PokemonFormChangeItemModifier[] | undefined; + private updateOptionsWithModifierTransferMode(pokemon): void { + const itemModifiers = this.getItemModifiers(pokemon); + for (let im = 0; im < itemModifiers.length; im++) { + this.options.push(im); + } + if (itemModifiers.length > 1) { + this.options.push(PartyOption.ALL); + } + } + + private addCommonOptions(pokemon): void { + this.options.push(PartyOption.SUMMARY); + this.options.push(PartyOption.POKEDEX); + this.options.push(PartyOption.RENAME); if ( - this.partyUiMode !== PartyUiMode.MOVE_MODIFIER && - this.partyUiMode !== PartyUiMode.REMEMBER_MOVE_MODIFIER && - (this.transferMode || this.partyUiMode !== PartyUiMode.MODIFIER_TRANSFER) + pokemonEvolutions.hasOwnProperty(pokemon.species.speciesId) || + (pokemon.isFusion() && pokemon.fusionSpecies && pokemonEvolutions.hasOwnProperty(pokemon.fusionSpecies.speciesId)) ) { - switch (this.partyUiMode) { - case PartyUiMode.SWITCH: - case PartyUiMode.FAINT_SWITCH: - case PartyUiMode.POST_BATTLE_SWITCH: - if (this.cursor >= globalScene.currentBattle.getBattlerCount()) { - const allowBatonModifierSwitch = - this.partyUiMode !== PartyUiMode.FAINT_SWITCH && - globalScene.findModifier( - m => - m instanceof SwitchEffectTransferModifier && - (m as SwitchEffectTransferModifier).pokemonId === globalScene.getPlayerField()[this.fieldIndex].id, - ); - - const moveHistory = globalScene.getPlayerField()[this.fieldIndex].getMoveHistory(); - const isBatonPassMove = - this.partyUiMode === PartyUiMode.FAINT_SWITCH && - moveHistory.length && - allMoves[moveHistory[moveHistory.length - 1].move].getAttrs(ForceSwitchOutAttr)[0]?.isBatonPass() && - moveHistory[moveHistory.length - 1].result === MoveResult.SUCCESS; - - // isBatonPassMove and allowBatonModifierSwitch shouldn't ever be true - // at the same time, because they both explicitly check for a mutually - // exclusive partyUiMode. But better safe than sorry. - this.options.push( - isBatonPassMove && !allowBatonModifierSwitch ? PartyOption.PASS_BATON : PartyOption.SEND_OUT, - ); - if (allowBatonModifierSwitch && !isBatonPassMove) { - // the BATON modifier gives an extra switch option for - // pokemon-command switches, allowing buffs to be optionally passed - this.options.push(PartyOption.PASS_BATON); - } - } - break; - case PartyUiMode.REVIVAL_BLESSING: - this.options.push(PartyOption.REVIVE); - break; - case PartyUiMode.MODIFIER: - this.options.push(PartyOption.APPLY); - break; - case PartyUiMode.TM_MODIFIER: - this.options.push(PartyOption.TEACH); - break; - case PartyUiMode.MODIFIER_TRANSFER: - this.options.push(PartyOption.TRANSFER); - break; - case PartyUiMode.SPLICE: - if (this.transferMode) { - if (this.cursor !== this.transferCursor) { - this.options.push(PartyOption.SPLICE); - } - } else { - this.options.push(PartyOption.APPLY); - } - break; - case PartyUiMode.RELEASE: - this.options.push(PartyOption.RELEASE); - break; - case PartyUiMode.CHECK: - if (globalScene.getCurrentPhase() instanceof SelectModifierPhase) { - formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); - for (let i = 0; i < formChangeItemModifiers.length; i++) { - this.options.push(PartyOption.FORM_CHANGE_ITEM + i); - } - } - break; - case PartyUiMode.SELECT: - this.options.push(PartyOption.SELECT); - break; - } - - this.options.push(PartyOption.SUMMARY); - this.options.push(PartyOption.POKEDEX); - this.options.push(PartyOption.RENAME); - - if ( - pokemonEvolutions.hasOwnProperty(pokemon.species.speciesId) || - (pokemon.isFusion() && - pokemon.fusionSpecies && - pokemonEvolutions.hasOwnProperty(pokemon.fusionSpecies.speciesId)) - ) { - this.options.push(PartyOption.UNPAUSE_EVOLUTION); - } - - if (this.partyUiMode === PartyUiMode.SWITCH) { - if (pokemon.isFusion()) { - this.options.push(PartyOption.UNSPLICE); - } - this.options.push(PartyOption.RELEASE); - } else if (this.partyUiMode === PartyUiMode.SPLICE && pokemon.isFusion()) { - this.options.push(PartyOption.UNSPLICE); - } - } else if (this.partyUiMode === PartyUiMode.MOVE_MODIFIER) { - for (let m = 0; m < pokemon.moveset.length; m++) { - this.options.push(PartyOption.MOVE_1 + m); - } - } else if (this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER) { - const learnableMoves = pokemon.getLearnableLevelMoves(); - for (let m = 0; m < learnableMoves.length; m++) { - this.options.push(m); - } - } else { - for (let im = 0; im < itemModifiers.length; im++) { - this.options.push(im); - } - if (itemModifiers.length > 1) { - this.options.push(PartyOption.ALL); - } + this.options.push(PartyOption.UNPAUSE_EVOLUTION); } + } + private addCancelAndScrollOptions(): void { this.optionsScrollTotal = this.options.length; - let optionStartIndex = this.optionsScrollCursor; - let optionEndIndex = Math.min( + const optionStartIndex = this.optionsScrollCursor; + const optionEndIndex = Math.min( this.optionsScrollTotal, optionStartIndex + (!optionStartIndex || this.optionsScrollCursor + 8 >= this.optionsScrollTotal ? 8 : 7), ); @@ -1145,14 +1253,122 @@ export default class PartyUiHandler extends MessageUiHandler { } this.options.push(PartyOption.CANCEL); + } + + updateOptions(): void { + const pokemon = globalScene.getPlayerParty()[this.cursor]; + + if (this.options.length) { + this.options.splice(0, this.options.length); + this.optionsContainer.removeAll(true); + this.eraseOptionsCursor(); + } + + switch (this.partyUiMode) { + case PartyUiMode.MOVE_MODIFIER: + this.updateOptionsWithMoveModifierMode(pokemon); + break; + case PartyUiMode.REMEMBER_MOVE_MODIFIER: + this.updateOptionsWithRememberMoveModifierMode(pokemon); + break; + case PartyUiMode.MODIFIER_TRANSFER: + if (!this.transferMode) { + this.updateOptionsWithModifierTransferMode(pokemon); + } else { + this.options.push(PartyOption.TRANSFER); + this.addCommonOptions(pokemon); + } + break; + // TODO: This still needs to be broken up. + // It could use a rework differentiating different kind of switches + // to treat baton passing separately from switching on faint. + case PartyUiMode.SWITCH: + case PartyUiMode.FAINT_SWITCH: + case PartyUiMode.POST_BATTLE_SWITCH: + if (this.cursor >= globalScene.currentBattle.getBattlerCount()) { + const allowBatonModifierSwitch = this.allowBatonModifierSwitch(); + const isBatonPassMove = this.isBatonPassMove(); + + // isBatonPassMove and allowBatonModifierSwitch shouldn't ever be true + // at the same time, because they both explicitly check for a mutually + // exclusive partyUiMode. But better safe than sorry. + this.options.push( + isBatonPassMove && !allowBatonModifierSwitch ? PartyOption.PASS_BATON : PartyOption.SEND_OUT, + ); + if (allowBatonModifierSwitch && !isBatonPassMove) { + // the BATON modifier gives an extra switch option for + // pokemon-command switches, allowing buffs to be optionally passed + this.options.push(PartyOption.PASS_BATON); + } + } + this.addCommonOptions(pokemon); + if (this.partyUiMode === PartyUiMode.SWITCH) { + if (pokemon.isFusion()) { + this.options.push(PartyOption.UNSPLICE); + } + this.options.push(PartyOption.RELEASE); + } + break; + case PartyUiMode.REVIVAL_BLESSING: + this.options.push(PartyOption.REVIVE); + this.addCommonOptions(pokemon); + break; + case PartyUiMode.MODIFIER: + this.options.push(PartyOption.APPLY); + this.addCommonOptions(pokemon); + break; + case PartyUiMode.TM_MODIFIER: + this.options.push(PartyOption.TEACH); + this.addCommonOptions(pokemon); + break; + case PartyUiMode.SPLICE: + if (this.transferMode) { + if (this.cursor !== this.transferCursor) { + this.options.push(PartyOption.SPLICE); + } + } else { + this.options.push(PartyOption.APPLY); + } + this.addCommonOptions(pokemon); + if (pokemon.isFusion()) { + this.options.push(PartyOption.UNSPLICE); + } + break; + case PartyUiMode.RELEASE: + this.options.push(PartyOption.RELEASE); + this.addCommonOptions(pokemon); + break; + case PartyUiMode.CHECK: + if (globalScene.getCurrentPhase() instanceof SelectModifierPhase) { + const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); + for (let i = 0; i < formChangeItemModifiers.length; i++) { + this.options.push(PartyOption.FORM_CHANGE_ITEM + i); + } + } + this.addCommonOptions(pokemon); + break; + case PartyUiMode.SELECT: + this.options.push(PartyOption.SELECT); + this.addCommonOptions(pokemon); + break; + } + + // Generic, these are applied to all Modes + this.addCancelAndScrollOptions(); + + this.updateOptionsWindow(); + } + + private updateOptionsWindow(): void { + const pokemon = globalScene.getPlayerParty()[this.cursor]; this.optionsBg = addWindow(0, 0, 0, 16 * this.options.length + 13); this.optionsBg.setOrigin(1, 1); this.optionsContainer.add(this.optionsBg); - optionStartIndex = 0; - optionEndIndex = this.options.length; + const optionStartIndex = 0; + const optionEndIndex = this.options.length; let widestOptionWidth = 0; const optionTexts: BBCodeText[] = []; @@ -1185,6 +1401,7 @@ export default class PartyUiHandler extends MessageUiHandler { } break; default: + const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); if (formChangeItemModifiers && option >= PartyOption.FORM_CHANGE_ITEM) { const modifier = formChangeItemModifiers[option - PartyOption.FORM_CHANGE_ITEM]; optionName = `${modifier.active ? i18next.t("partyUiHandler:DEACTIVATE") : i18next.t("partyUiHandler:ACTIVATE")} ${modifier.type.name}`; @@ -1200,6 +1417,7 @@ export default class PartyUiHandler extends MessageUiHandler { break; } } else if (this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER) { + const learnableLevelMoves = pokemon.getLearnableLevelMoves(); const move = learnableLevelMoves[option]; optionName = allMoves[move].name; altText = !pokemon @@ -1209,6 +1427,7 @@ export default class PartyUiHandler extends MessageUiHandler { } else if (option === PartyOption.ALL) { optionName = i18next.t("partyUiHandler:ALL"); } else { + const itemModifiers = this.getItemModifiers(pokemon); const itemModifier = itemModifiers[option]; optionName = itemModifier.type.name; } @@ -1222,6 +1441,7 @@ export default class PartyUiHandler extends MessageUiHandler { optionText.setOrigin(0, 0); /** For every item that has stack bigger than 1, display the current quantity selection */ + const itemModifiers = this.getItemModifiers(pokemon); const itemModifier = itemModifiers[option]; if ( this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER && From a98f89759169201b671e1f17c973dce81af28bab Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Tue, 27 May 2025 05:02:39 -0700 Subject: [PATCH 12/71] [Bug] Fix Dipplin's weight (was mistakenly set to the lbs value) --- src/data/pokemon-species.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index 6f05d17db6f..5c97f360094 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -3121,7 +3121,7 @@ export function initSpecies() { ), new PokemonSpecies(Species.WALKING_WAKE, 9, false, false, false, "Paradox Pokémon", PokemonType.WATER, PokemonType.DRAGON, 3.5, 280, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 590, 99, 83, 91, 125, 83, 109, 10, 0, 295, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Gouging Fire and Raging Bolt new PokemonSpecies(Species.IRON_LEAVES, 9, false, false, false, "Paradox Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 1.5, 125, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 590, 90, 130, 88, 70, 108, 104, 10, 0, 295, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Iron Boulder and Iron Crown - new PokemonSpecies(Species.DIPPLIN, 9, false, false, false, "Candy Apple Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 9.7, Abilities.SUPERSWEET_SYRUP, Abilities.GLUTTONY, Abilities.STICKY_HOLD, 485, 80, 80, 110, 95, 80, 40, 45, 50, 170, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(Species.DIPPLIN, 9, false, false, false, "Candy Apple Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 4.4, Abilities.SUPERSWEET_SYRUP, Abilities.GLUTTONY, Abilities.STICKY_HOLD, 485, 80, 80, 110, 95, 80, 40, 45, 50, 170, GrowthRate.ERRATIC, 50, false), new PokemonSpecies(Species.POLTCHAGEIST, 9, false, false, false, "Matcha Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, GrowthRate.SLOW, null, false, false, new PokemonForm("Counterfeit Form", "counterfeit", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, null, true), new PokemonForm("Artisan Form", "artisan", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, null, false, true), From 68dddbc4246aeedea3c8fdb506263c9c217caf08 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Tue, 27 May 2025 07:50:54 -0700 Subject: [PATCH 13/71] [Dev] Enable Biome checking of `pokemon.ts` (#5720) * [Dev] Enable biome parsing of `pokemon.ts` * Apply unsafe fixes * Add + apply rule disallowing the use of the `integer` type alias * Fix typo in comment; remove unnecessary `!!` * Re-apply Biome after merge * Re-apply Biome "unsafe" fixes after merge * Fix import * Add comment to `getFusionIconAtlasKey` too --- biome.jsonc | 20 +- .../the-pokemon-salesman-encounter.ts | 26 +- src/data/trainers/TrainerPartyTemplate.ts | 18 +- src/field/pokemon.ts | 2765 +++++------------ src/phases/revival-blessing-phase.ts | 2 +- src/ui/login-form-ui-handler.ts | 6 +- 6 files changed, 891 insertions(+), 1946 deletions(-) diff --git a/biome.jsonc b/biome.jsonc index 3385614635c..40301b3e0bc 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -32,7 +32,6 @@ // TODO: these files are too big and complex, ignore them until their respective refactors "src/data/moves/move.ts", "src/data/abilities/ability.ts", - "src/field/pokemon.ts", // this file is just too big: "src/data/balance/tms.ts" @@ -58,7 +57,7 @@ }, "style": { "noVar": "error", - "useEnumInitializers": "off", // large enums like Moves/Species would make this cumbersome + "useEnumInitializers": "off", // large enums like Moves/Species would make this cumbersome "useBlockStatements": "error", "useConst": "error", "useImportType": "error", @@ -73,9 +72,9 @@ }, "suspicious": { "noDoubleEquals": "error", - // While this would be a nice rule to enable, the current structure of the codebase makes this infeasible + // While this would be a nice rule to enable, the current structure of the codebase makes this infeasible // due to being used for move/ability `args` params and save data-related code. - // This can likely be enabled for all non-utils files once these are eventually reworked, but until then we leave it off. + // This can likely be enabled for all non-utils files once these are eventually reworked, but until then we leave it off. "noExplicitAny": "off", "noAssignInExpressions": "off", "noPrototypeBuiltins": "off", @@ -92,6 +91,19 @@ "noUselessSwitchCase": "off", // Explicit > Implicit "noUselessConstructor": "warn", // TODO: Refactor and make this an error "noBannedTypes": "warn" // TODO: Refactor and make this an error + }, + "nursery": { + "noRestrictedTypes": { + "level": "error", + "options": { + "types": { + "integer": { + "message": "This is an alias for 'number' that can provide false impressions of what values can actually be contained in this variable. Use 'number' instead.", + "use": "number" + } + } + } + } } } }, diff --git a/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts b/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts index 25798de3b4a..50b9c2da78c 100644 --- a/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts @@ -3,7 +3,7 @@ import { transitionMysteryEncounterIntroVisuals, updatePlayerMoney, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { isNullOrUndefined, NumberHolder, randSeedInt, randSeedItem } from "#app/utils/common"; +import { isNullOrUndefined, randSeedInt, randSeedItem } from "#app/utils/common"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { globalScene } from "#app/global-scene"; import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; @@ -88,7 +88,7 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = MysteryEncounterBui const r = randSeedInt(SHINY_MAGIKARP_WEIGHT); - let validEventEncounters = timedEventManager + const validEventEncounters = timedEventManager .getEventEncounters() .filter( s => @@ -111,22 +111,26 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = MysteryEncounterBui if ( r === 0 || ((isNullOrUndefined(species.abilityHidden) || species.abilityHidden === Abilities.NONE) && - (validEventEncounters.length === 0)) + validEventEncounters.length === 0) ) { // If you roll 1%, give shiny Magikarp with random variant species = getPokemonSpecies(Species.MAGIKARP); pokemon = new PlayerPokemon(species, 5, 2, undefined, undefined, true); - } - else if ( - (validEventEncounters.length > 0 && (r <= EVENT_THRESHOLD || - (isNullOrUndefined(species.abilityHidden) || species.abilityHidden === Abilities.NONE))) + } else if ( + validEventEncounters.length > 0 && + (r <= EVENT_THRESHOLD || isNullOrUndefined(species.abilityHidden) || species.abilityHidden === Abilities.NONE) ) { tries = 0; do { // If you roll 20%, give event encounter with 3 extra shiny rolls and its HA, if it has one const enc = randSeedItem(validEventEncounters); species = getPokemonSpecies(enc.species); - pokemon = new PlayerPokemon(species, 5, species.abilityHidden === Abilities.NONE ? undefined : 2, enc.formIndex); + pokemon = new PlayerPokemon( + species, + 5, + species.abilityHidden === Abilities.NONE ? undefined : 2, + enc.formIndex, + ); pokemon.trySetShinySeed(); pokemon.trySetShinySeed(); pokemon.trySetShinySeed(); @@ -145,15 +149,13 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = MysteryEncounterBui pokemon.trySetShinySeed(); pokemon.trySetShinySeed(); pokemon.trySetShinySeed(); - } - else { + } else { // If there's, and this would never happen, no eligible event encounters with a hidden ability, just do Magikarp species = getPokemonSpecies(Species.MAGIKARP); pokemon = new PlayerPokemon(species, 5, 2, undefined, undefined, true); } } - } - else { + } else { pokemon = new PlayerPokemon(species, 5, 2, species.formIndex); } pokemon.generateAndPopulateMoveset(); diff --git a/src/data/trainers/TrainerPartyTemplate.ts b/src/data/trainers/TrainerPartyTemplate.ts index ccc494218e9..86201589276 100644 --- a/src/data/trainers/TrainerPartyTemplate.ts +++ b/src/data/trainers/TrainerPartyTemplate.ts @@ -224,16 +224,16 @@ export const trainerPartyTemplates = { */ export function getEvilGruntPartyTemplate(): TrainerPartyTemplate { const waveIndex = globalScene.currentBattle?.waveIndex; - if (waveIndex <= ClassicFixedBossWaves.EVIL_GRUNT_1){ + if (waveIndex <= ClassicFixedBossWaves.EVIL_GRUNT_1) { return trainerPartyTemplates.TWO_AVG; } - if (waveIndex <= ClassicFixedBossWaves.EVIL_GRUNT_2){ + if (waveIndex <= ClassicFixedBossWaves.EVIL_GRUNT_2) { return trainerPartyTemplates.THREE_AVG; } - if (waveIndex <= ClassicFixedBossWaves.EVIL_GRUNT_3){ + if (waveIndex <= ClassicFixedBossWaves.EVIL_GRUNT_3) { return trainerPartyTemplates.TWO_AVG_ONE_STRONG; } - if (waveIndex <= ClassicFixedBossWaves.EVIL_ADMIN_1){ + if (waveIndex <= ClassicFixedBossWaves.EVIL_ADMIN_1) { return trainerPartyTemplates.GYM_LEADER_4; // 3avg 1 strong 1 stronger } return trainerPartyTemplates.GYM_LEADER_5; // 3 avg 2 strong 1 stronger @@ -251,7 +251,7 @@ export function getGymLeaderPartyTemplate() { switch (gameMode.modeId) { case GameModes.DAILY: if (currentBattle?.waveIndex <= 20) { - return trainerPartyTemplates.GYM_LEADER_2 + return trainerPartyTemplates.GYM_LEADER_2; } return trainerPartyTemplates.GYM_LEADER_3; case GameModes.CHALLENGE: // In the future, there may be a ChallengeType to call here. For now, use classic's. @@ -259,13 +259,15 @@ export function getGymLeaderPartyTemplate() { if (currentBattle?.waveIndex <= 20) { return trainerPartyTemplates.GYM_LEADER_1; // 1 avg 1 strong } - else if (currentBattle?.waveIndex <= 30) { + if (currentBattle?.waveIndex <= 30) { return trainerPartyTemplates.GYM_LEADER_2; // 1 avg 1 strong 1 stronger } - else if (currentBattle?.waveIndex <= 60) { // 50 and 60 + // 50 and 60 + if (currentBattle?.waveIndex <= 60) { return trainerPartyTemplates.GYM_LEADER_3; // 2 avg 1 strong 1 stronger } - else if (currentBattle?.waveIndex <= 90) { // 80 and 90 + // 80 and 90 + if (currentBattle?.waveIndex <= 90) { return trainerPartyTemplates.GYM_LEADER_4; // 3 avg 1 strong 1 stronger } // 110+ diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 62ec8081c5d..85b003517a6 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -5,10 +5,7 @@ import { globalScene } from "#app/global-scene"; import type { Variant } from "#app/sprites/variant"; import { populateVariantColors, variantColorCache } from "#app/sprites/variant"; import { variantData } from "#app/sprites/variant"; -import BattleInfo, { - PlayerBattleInfo, - EnemyBattleInfo, -} from "#app/ui/battle-info"; +import BattleInfo, { PlayerBattleInfo, EnemyBattleInfo } from "#app/ui/battle-info"; import type Move from "#app/data/moves/move"; import { HighCritAttr, @@ -50,11 +47,26 @@ import { getPokemonSpecies, getPokemonSpeciesForm, } from "#app/data/pokemon-species"; +import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters"; import { - getStarterValueFriendshipCap, - speciesStarterCosts, -} from "#app/data/balance/starters"; -import { NumberHolder, randSeedInt, getIvsFromId, BooleanHolder, randSeedItem, isNullOrUndefined, getEnumValues, toDmgValue, fixedInt, rgbaToInt, rgbHexToRgba, rgbToHsv, deltaRgb, isBetween, type nil, type Constructor, randSeedIntRange } from "#app/utils/common"; + NumberHolder, + randSeedInt, + getIvsFromId, + BooleanHolder, + randSeedItem, + isNullOrUndefined, + getEnumValues, + toDmgValue, + fixedInt, + rgbaToInt, + rgbHexToRgba, + rgbToHsv, + deltaRgb, + isBetween, + type nil, + type Constructor, + randSeedIntRange, +} from "#app/utils/common"; import type { TypeDamageMultiplier } from "#app/data/type"; import { getTypeDamageMultiplier, getTypeRgb } from "#app/data/type"; import { PokemonType } from "#enums/pokemon-type"; @@ -92,20 +104,13 @@ import { import { PokeballType } from "#enums/pokeball"; import { Gender } from "#app/data/gender"; import { Status, getRandomStatus } from "#app/data/status-effect"; -import type { - SpeciesFormEvolution, - SpeciesEvolutionCondition, -} from "#app/data/balance/pokemon-evolutions"; +import type { SpeciesFormEvolution, SpeciesEvolutionCondition } from "#app/data/balance/pokemon-evolutions"; import { pokemonEvolutions, pokemonPrevolutions, FusionSpeciesFormEvolution, } from "#app/data/balance/pokemon-evolutions"; -import { - reverseCompatibleTms, - tmSpecies, - tmPoolTiers, -} from "#app/data/balance/tms"; +import { reverseCompatibleTms, tmSpecies, tmPoolTiers } from "#app/data/balance/tms"; import { BattlerTag, BattlerTagLapseType, @@ -128,11 +133,7 @@ import { type GrudgeTag, } from "../data/battler-tags"; import { WeatherType } from "#enums/weather-type"; -import { - ArenaTagSide, - NoCritTag, - WeakenMoveScreenTag, -} from "#app/data/arena-tag"; +import { ArenaTagSide, NoCritTag, WeakenMoveScreenTag } from "#app/data/arena-tag"; import type { SuppressAbilitiesTag } from "#app/data/arena-tag"; import type { Ability } from "#app/data/abilities/ability-class"; import type { AbAttr } from "#app/data/abilities/ab-attrs/ab-attr"; @@ -171,7 +172,8 @@ import { MoveTypeChangeAbAttr, FullHpResistTypeAbAttr, applyCheckTrappedAbAttrs, - CheckTrappedAbAttr, InfiltratorAbAttr, + CheckTrappedAbAttr, + InfiltratorAbAttr, AlliedFieldDamageReductionAbAttr, PostDamageAbAttr, applyPostDamageAbAttrs, @@ -196,25 +198,18 @@ import type { PartyOption } from "#app/ui/party-ui-handler"; import PartyUiHandler, { PartyUiMode } from "#app/ui/party-ui-handler"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; import type { LevelMoves } from "#app/data/balance/pokemon-level-moves"; -import { - EVOLVE_MOVE, - RELEARN_MOVE, -} from "#app/data/balance/pokemon-level-moves"; +import { EVOLVE_MOVE, RELEARN_MOVE } from "#app/data/balance/pokemon-level-moves"; import { achvs } from "#app/system/achv"; import type { StarterDataEntry, StarterMoveset } from "#app/system/game-data"; import { DexAttr } from "#app/system/game-data"; -import { - QuantizerCelebi, - argbFromRgba, - rgbaFromArgb, -} from "@material/material-color-utilities"; +import { QuantizerCelebi, argbFromRgba, rgbaFromArgb } from "@material/material-color-utilities"; import { getNatureStatMultiplier } from "#app/data/nature"; import type { SpeciesFormChange } from "#app/data/pokemon-forms"; import { SpeciesFormChangeActiveTrigger, SpeciesFormChangeLapseTeraTrigger, SpeciesFormChangeMoveLearnedTrigger, - SpeciesFormChangePostMoveTrigger + SpeciesFormChangePostMoveTrigger, } from "#app/data/pokemon-forms"; import { TerrainType } from "#app/data/terrain"; import type { TrainerSlot } from "#enums/trainer-slot"; @@ -298,10 +293,10 @@ type damageParams = { simulated?: boolean; /** If defined, used in place of calculated effectiveness values */ effectiveness?: number; -} +}; /** Type for the parameters of {@linkcode Pokemon#getBaseDamage | getBaseDamage} */ -type getBaseDamageParams = Omit +type getBaseDamageParams = Omit; /** Type for the parameters of {@linkcode Pokemon#getAttackDamage | getAttackDamage} */ type getAttackDamageParams = Omit; @@ -413,7 +408,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.pokeball = dataSource?.pokeball || PokeballType.POKEBALL; this.level = level; - this.abilityIndex = abilityIndex ?? this.generateAbilityIndex() + this.abilityIndex = abilityIndex ?? this.generateAbilityIndex(); if (formIndex !== undefined) { this.formIndex = formIndex; @@ -427,8 +422,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (variant !== undefined) { this.variant = variant; } - this.exp = - dataSource?.exp || getLevelTotalExp(this.level, species.growthRate); + this.exp = dataSource?.exp || getLevelTotalExp(this.level, species.growthRate); this.levelExp = dataSource?.levelExp || 0; if (dataSource) { @@ -444,18 +438,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.nickname = dataSource.nickname; this.moveset = dataSource.moveset; this.status = dataSource.status!; // TODO: is this bang correct? - this.friendship = - dataSource.friendship !== undefined - ? dataSource.friendship - : this.species.baseFriendship; + this.friendship = dataSource.friendship ?? this.species.baseFriendship; this.metLevel = dataSource.metLevel || 5; this.luck = dataSource.luck; this.metBiome = dataSource.metBiome; this.metSpecies = - dataSource.metSpecies ?? - (this.metBiome !== -1 - ? this.species.speciesId - : this.species.getRootSpeciesId(true)); + dataSource.metSpecies ?? (this.metBiome !== -1 ? this.species.speciesId : this.species.getRootSpeciesId(true)); this.metWave = dataSource.metWave ?? (this.metBiome === -1 ? -1 : 0); this.pauseEvolutions = dataSource.pauseEvolutions; this.pokerus = !!dataSource.pokerus; @@ -475,9 +463,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.fusionCustomPokemonData = dataSource.fusionCustomPokemonData; this.fusionTeraType = dataSource.fusionTeraType; this.usedTMs = dataSource.usedTMs ?? []; - this.customPokemonData = new CustomPokemonData( - dataSource.customPokemonData, - ); + this.customPokemonData = new CustomPokemonData(dataSource.customPokemonData); this.teraType = dataSource.teraType; this.isTerastallized = dataSource.isTerastallized; this.stellarTypesBoosted = dataSource.stellarTypesBoosted ?? []; @@ -490,12 +476,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } if (this.formIndex === undefined) { - this.formIndex = globalScene.getSpeciesFormIndex( - species, - this.gender, - this.nature, - this.isPlayer(), - ); + this.formIndex = globalScene.getSpeciesFormIndex(species, this.gender, this.nature, this.isPlayer()); } if (this.shiny === undefined) { @@ -514,19 +495,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.friendship = species.baseFriendship; this.metLevel = level; - this.metBiome = globalScene.currentBattle - ? globalScene.arena.biomeType - : -1; + this.metBiome = globalScene.currentBattle ? globalScene.arena.biomeType : -1; this.metSpecies = species.speciesId; - this.metWave = globalScene.currentBattle - ? globalScene.currentBattle.waveIndex - : -1; + this.metWave = globalScene.currentBattle ? globalScene.currentBattle.waveIndex : -1; this.pokerus = false; if (level > 1) { - const fused = new BooleanHolder( - globalScene.gameMode.isSplicedOnly, - ); + const fused = new BooleanHolder(globalScene.gameMode.isSplicedOnly); if (!fused.value && !this.isPlayer() && !this.hasTrainer()) { globalScene.applyModifier(EnemyFusionChanceModifier, false, fused); } @@ -536,9 +511,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.generateFusionSpecies(); } } - this.luck = - (this.shiny ? this.variant + 1 : 0) + - (this.fusionShiny ? this.fusionVariant + 1 : 0); + this.luck = (this.shiny ? this.variant + 1 : 0) + (this.fusionShiny ? this.fusionVariant + 1 : 0); this.fusionLuck = this.luck; this.teraType = randSeedItem(this.getTypes(false, false, true)); @@ -558,15 +531,16 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!dataSource) { this.calculateStats(); } - } /** - * @param {boolean} useIllusion - Whether we want the fake name or the real name of the Pokemon (for Illusion ability). + * @param useIllusion - Whether we want the fake name or the real name of the Pokemon (for Illusion ability). */ - getNameToRender(useIllusion: boolean = true) { - const name: string = (!useIllusion && this.summonData.illusion) ? this.summonData.illusion.basePokemon.name : this.name; - const nickname: string = (!useIllusion && this.summonData.illusion) ? this.summonData.illusion.basePokemon.nickname : this.nickname; + getNameToRender(useIllusion = true) { + const name: string = + !useIllusion && this.summonData.illusion ? this.summonData.illusion.basePokemon.name : this.name; + const nickname: string = + !useIllusion && this.summonData.illusion ? this.summonData.illusion.basePokemon.nickname : this.nickname; try { if (nickname) { return decodeURIComponent(escape(atob(nickname))); @@ -578,12 +552,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } - getPokeball(useIllusion = false){ - if(useIllusion){ - return this.summonData.illusion?.pokeball ?? this.pokeball - } else { - return this.pokeball + getPokeball(useIllusion = false) { + if (useIllusion) { + return this.summonData.illusion?.pokeball ?? this.pokeball; } + return this.pokeball; } init(): void { @@ -645,10 +618,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns `true` if the pokemon is fainted */ public isFainted(checkStatus = false): boolean { - return ( - this.hp <= 0 && - (!checkStatus || this.status?.effect === StatusEffect.FAINT) - ); + return this.hp <= 0 && (!checkStatus || this.status?.effect === StatusEffect.FAINT); } /** @@ -666,11 +636,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ public isAllowedInChallenge(): boolean { const challengeAllowed = new BooleanHolder(true); - applyChallenges( - ChallengeType.POKEMON_IN_BATTLE, - this, - challengeAllowed, - ); + applyChallenges(ChallengeType.POKEMON_IN_BATTLE, this, challengeAllowed); return challengeAllowed.value; } @@ -691,12 +657,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { let ret = 0n; ret |= this.gender !== Gender.FEMALE ? DexAttr.MALE : DexAttr.FEMALE; ret |= !this.shiny ? DexAttr.NON_SHINY : DexAttr.SHINY; - ret |= - this.variant >= 2 - ? DexAttr.VARIANT_3 - : this.variant === 1 - ? DexAttr.VARIANT_2 - : DexAttr.DEFAULT_VARIANT; + ret |= this.variant >= 2 ? DexAttr.VARIANT_3 : this.variant === 1 ? DexAttr.VARIANT_2 : DexAttr.DEFAULT_VARIANT; ret |= globalScene.gameData.getFormAttr(this.formIndex); return ret; } @@ -722,17 +683,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** Generate `abilityIndex` based on species and hidden ability if not pre-defined. */ private generateAbilityIndex(): number { - // Roll for hidden ability chance, applying any ability charms for enemy mons - const hiddenAbilityChance = new NumberHolder( - BASE_HIDDEN_ABILITY_CHANCE, - ); + const hiddenAbilityChance = new NumberHolder(BASE_HIDDEN_ABILITY_CHANCE); if (!this.hasTrainer()) { - globalScene.applyModifiers( - HiddenAbilityRateBoosterModifier, - true, - hiddenAbilityChance, - ); + globalScene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance); } // If the roll succeeded and we have one, use HA; otherwise pick a random ability @@ -745,8 +699,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return this.species.ability2 !== this.species.ability1 ? randSeedInt(2) : 0; } - - /** * Generate an illusion of the last pokemon in the party, as other wild pokemon in the area. */ @@ -764,7 +716,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { shiny: this.shiny, variant: this.variant, fusionShiny: this.fusionShiny, - fusionVariant: this.fusionVariant + fusionVariant: this.fusionVariant, }, species: speciesId, formIndex: pokemon.formIndex, @@ -772,7 +724,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { pokeball: pokemon.pokeball, fusionFormIndex: pokemon.fusionFormIndex, fusionSpecies: pokemon.fusionSpecies || undefined, - fusionGender: pokemon.fusionGender + fusionGender: pokemon.fusionGender, }; this.name = pokemon.name; @@ -787,7 +739,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.loadAssets(false, true).then(() => this.playAnim()); this.updateInfo(); } else { - const randomIllusion: PokemonSpecies = globalScene.arena.randomSpecies(globalScene.currentBattle.waveIndex, this.level); + const randomIllusion: PokemonSpecies = globalScene.arena.randomSpecies( + globalScene.currentBattle.waveIndex, + this.level, + ); this.summonData.illusion = { basePokemon: { @@ -796,12 +751,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { shiny: this.shiny, variant: this.variant, fusionShiny: this.fusionShiny, - fusionVariant: this.fusionVariant + fusionVariant: this.fusionVariant, }, species: randomIllusion.speciesId, formIndex: randomIllusion.formIndex, gender: this.gender, - pokeball: this.pokeball + pokeball: this.pokeball, }; this.name = randomIllusion.name; @@ -813,15 +768,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { breakIllusion(): boolean { if (!this.summonData.illusion) { return false; - } else { - this.name = this.summonData.illusion.basePokemon.name; - this.nickname = this.summonData.illusion.basePokemon.nickname; - this.shiny = this.summonData.illusion.basePokemon.shiny; - this.variant = this.summonData.illusion.basePokemon.variant; - this.fusionVariant = this.summonData.illusion.basePokemon.fusionVariant; - this.fusionShiny = this.summonData.illusion.basePokemon.fusionShiny; - this.summonData.illusion = null; } + this.name = this.summonData.illusion.basePokemon.name; + this.nickname = this.summonData.illusion.basePokemon.nickname; + this.shiny = this.summonData.illusion.basePokemon.shiny; + this.variant = this.summonData.illusion.basePokemon.variant; + this.fusionVariant = this.summonData.illusion.basePokemon.fusionVariant; + this.fusionShiny = this.summonData.illusion.basePokemon.fusionShiny; + this.summonData.illusion = null; if (this.isOnField()) { globalScene.playSound("PRSFX- Transform"); } @@ -842,9 +796,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { abstract getBattlerIndex(): BattlerIndex; /** -   * @param useIllusion - Whether we want the illusion or not. -   */ - async loadAssets(ignoreOverride = true, useIllusion: boolean = false): Promise { + * @param useIllusion - Whether we want the illusion or not. + */ + async loadAssets(ignoreOverride = true, useIllusion = false): Promise { /** Promises that are loading assets and can be run concurrently. */ const loadPromises: Promise[] = []; // Assets for moves @@ -857,7 +811,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.getGender(useIllusion) === Gender.FEMALE, formIndex, this.isShiny(useIllusion), - this.getVariant(useIllusion) + this.getVariant(useIllusion), ), ); @@ -868,15 +822,24 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ); } if (this.getFusionSpeciesForm()) { - const fusionFormIndex = useIllusion && this.summonData.illusion ? this.summonData.illusion.fusionFormIndex : this.fusionFormIndex; - const fusionShiny = !useIllusion && this.summonData.illusion?.basePokemon ? this.summonData.illusion.basePokemon.fusionShiny : this.fusionShiny; - const fusionVariant = !useIllusion && this.summonData.illusion?.basePokemon ? this.summonData.illusion.basePokemon.fusionVariant : this.fusionVariant; - loadPromises.push(this.getFusionSpeciesForm(false, useIllusion).loadAssets( - this.getFusionGender(false, useIllusion) === Gender.FEMALE, - fusionFormIndex, - fusionShiny, - fusionVariant - )); + const fusionFormIndex = + useIllusion && this.summonData.illusion ? this.summonData.illusion.fusionFormIndex : this.fusionFormIndex; + const fusionShiny = + !useIllusion && this.summonData.illusion?.basePokemon + ? this.summonData.illusion.basePokemon.fusionShiny + : this.fusionShiny; + const fusionVariant = + !useIllusion && this.summonData.illusion?.basePokemon + ? this.summonData.illusion.basePokemon.fusionVariant + : this.fusionVariant; + loadPromises.push( + this.getFusionSpeciesForm(false, useIllusion).loadAssets( + this.getFusionGender(false, useIllusion) === Gender.FEMALE, + fusionFormIndex, + fusionShiny, + fusionVariant, + ), + ); globalScene.loadPokemonAtlas( this.getFusionBattleSpriteKey(true, ignoreOverride), this.getFusionBattleSpriteAtlasPath(true, ignoreOverride), @@ -884,7 +847,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } if (this.isShiny(true)) { - loadPromises.push(populateVariantColors(this, false, ignoreOverride)) + loadPromises.push(populateVariantColors(this, false, ignoreOverride)); if (this.isPlayer()) { loadPromises.push(populateVariantColors(this, true, ignoreOverride)); } @@ -894,7 +857,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // This must be initiated before we queue loading, otherwise the load could have finished before // we reach the line of code that adds the listener, causing a deadlock. - const waitOnLoadPromise = new Promise(resolve => globalScene.load.once(Phaser.Loader.Events.COMPLETE, resolve)); + const waitOnLoadPromise = new Promise(resolve => + globalScene.load.once(Phaser.Loader.Events.COMPLETE, resolve), + ); if (!globalScene.load.isLoading()) { globalScene.load.start(); @@ -966,11 +931,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param useExpSprite should the experimental sprite be used * @param battleSpritePath the filename of the sprite */ - async populateVariantColorCache( - cacheKey: string, - useExpSprite: boolean, - battleSpritePath: string, - ) { + async populateVariantColorCache(cacheKey: string, useExpSprite: boolean, battleSpritePath: string) { const spritePath = `./images/pokemon/variant/${useExpSprite ? "exp/" : ""}${battleSpritePath}.json`; return globalScene .cachedFetch(spritePath) @@ -989,13 +950,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return res.json(); }) .catch(error => { - return this.fallbackVariantColor( - cacheKey, - spritePath, - useExpSprite, - battleSpritePath, - error, - ); + return this.fallbackVariantColor(cacheKey, spritePath, useExpSprite, battleSpritePath, error); }) .then(c => { if (!isNullOrUndefined(c)) { @@ -1005,10 +960,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } getFormKey(): string { - if ( - !this.species.forms.length || - this.species.forms.length <= this.formIndex - ) { + if (!this.species.forms.length || this.species.forms.length <= this.formIndex) { return ""; } return this.species.forms[this.formIndex].formKey; @@ -1018,10 +970,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!this.fusionSpecies) { return null; } - if ( - !this.fusionSpecies.forms.length || - this.fusionSpecies.forms.length <= this.fusionFormIndex - ) { + if (!this.fusionSpecies.forms.length || this.fusionSpecies.forms.length <= this.fusionFormIndex) { return ""; } return this.fusionSpecies.forms[this.fusionFormIndex].formKey; @@ -1033,10 +982,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } getBattleSpriteAtlasPath(back?: boolean, ignoreOverride?: boolean): string { - const spriteId = this.getBattleSpriteId(back, ignoreOverride).replace( - /\_{2}/g, - "/", - ); + const spriteId = this.getBattleSpriteId(back, ignoreOverride).replace(/\_{2}/g, "/"); return `${/_[1-3]$/.test(spriteId) ? "variant/" : ""}${spriteId}`; } @@ -1046,7 +992,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.getGender(ignoreOverride, true) === Gender.FEMALE, formIndex, this.shiny, - this.variant + this.variant, ); } @@ -1062,7 +1008,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { formIndex, this.shiny, this.variant, - back + back, ); } @@ -1071,7 +1017,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.getGender(ignoreOverride) === Gender.FEMALE, this.formIndex, this.summonData.illusion?.basePokemon.shiny ?? this.shiny, - this.summonData.illusion?.basePokemon.variant ?? this.variant + this.summonData.illusion?.basePokemon.variant ?? this.variant, ); } @@ -1085,7 +1031,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.getFusionGender(ignoreOverride, true) === Gender.FEMALE, fusionFormIndex, this.fusionShiny, - this.fusionVariant + this.fusionVariant, ); } @@ -1101,7 +1047,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { fusionFormIndex, this.fusionShiny, this.fusionVariant, - back + back, ); } @@ -1109,55 +1055,67 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return `pkmn__${this.getFusionBattleSpriteId(back, ignoreOverride)}`; } - getFusionBattleSpriteAtlasPath( - back?: boolean, - ignoreOverride?: boolean, - ): string { - return this.getFusionBattleSpriteId(back, ignoreOverride).replace( - /\_{2}/g, - "/", - ); + getFusionBattleSpriteAtlasPath(back?: boolean, ignoreOverride?: boolean): string { + return this.getFusionBattleSpriteId(back, ignoreOverride).replace(/\_{2}/g, "/"); } - getIconAtlasKey(ignoreOverride?: boolean, useIllusion: boolean = true): string { - const formIndex = useIllusion && this.summonData.illusion?.formIndex ? this.summonData.illusion?.formIndex : this.formIndex; - const variant = !useIllusion && !!this.summonData.illusion ? this.summonData.illusion?.basePokemon.variant : this.variant; + getIconAtlasKey(ignoreOverride = false, useIllusion = true): string { + // TODO: confirm the correct behavior here (is it intentional that the check fails if `illusion.formIndex` is `0`?) + const formIndex = + useIllusion && this.summonData.illusion?.formIndex ? this.summonData.illusion.formIndex : this.formIndex; + const variant = + !useIllusion && this.summonData.illusion ? this.summonData.illusion.basePokemon.variant : this.variant; return this.getSpeciesForm(ignoreOverride, useIllusion).getIconAtlasKey( formIndex, this.isBaseShiny(useIllusion), - variant + variant, ); } - getFusionIconAtlasKey(ignoreOverride?: boolean, useIllusion: boolean = true): string { - const fusionFormIndex = useIllusion && this.summonData.illusion?.fusionFormIndex ? this.summonData.illusion?.fusionFormIndex : this.fusionFormIndex; - const fusionVariant = !useIllusion && !!this.summonData.illusion ? this.summonData.illusion?.basePokemon.fusionVariant : this.fusionVariant; + getFusionIconAtlasKey(ignoreOverride = false, useIllusion = true): string { + // TODO: confirm the correct behavior here (is it intentional that the check fails if `illusion.fusionFormIndex` is `0`?) + const fusionFormIndex = + useIllusion && this.summonData.illusion?.fusionFormIndex + ? this.summonData.illusion.fusionFormIndex + : this.fusionFormIndex; + const fusionVariant = + !useIllusion && this.summonData.illusion + ? this.summonData.illusion.basePokemon.fusionVariant + : this.fusionVariant; return this.getFusionSpeciesForm(ignoreOverride, useIllusion).getIconAtlasKey( fusionFormIndex, this.isFusionShiny(), - fusionVariant + fusionVariant, ); } - getIconId(ignoreOverride?: boolean, useIllusion: boolean = true): string { - const formIndex = useIllusion && this.summonData.illusion?.formIndex ? this.summonData.illusion?.formIndex : this.formIndex; - const variant = !useIllusion && !!this.summonData.illusion ? this.summonData.illusion?.basePokemon.variant : this.variant; + getIconId(ignoreOverride?: boolean, useIllusion = true): string { + const formIndex = + useIllusion && this.summonData.illusion?.formIndex ? this.summonData.illusion?.formIndex : this.formIndex; + const variant = + !useIllusion && !!this.summonData.illusion ? this.summonData.illusion?.basePokemon.variant : this.variant; return this.getSpeciesForm(ignoreOverride, useIllusion).getIconId( this.getGender(ignoreOverride, useIllusion) === Gender.FEMALE, formIndex, this.isBaseShiny(), - variant + variant, ); } - getFusionIconId(ignoreOverride?: boolean, useIllusion: boolean = true): string { - const fusionFormIndex = useIllusion && this.summonData.illusion?.fusionFormIndex ? this.summonData.illusion?.fusionFormIndex : this.fusionFormIndex; - const fusionVariant = !useIllusion && !!this.summonData.illusion ? this.summonData.illusion?.basePokemon.fusionVariant : this.fusionVariant; + getFusionIconId(ignoreOverride?: boolean, useIllusion = true): string { + const fusionFormIndex = + useIllusion && this.summonData.illusion?.fusionFormIndex + ? this.summonData.illusion?.fusionFormIndex + : this.fusionFormIndex; + const fusionVariant = + !useIllusion && !!this.summonData.illusion + ? this.summonData.illusion?.basePokemon.fusionVariant + : this.fusionVariant; return this.getFusionSpeciesForm(ignoreOverride, useIllusion).getIconId( this.getFusionGender(ignoreOverride, useIllusion) === Gender.FEMALE, fusionFormIndex, this.isFusionShiny(), - fusionVariant + fusionVariant, ); } @@ -1167,12 +1125,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * This overrides `useIllusion` if `true`. * @param useIllusion - `true` to use the speciesForm of the illusion; default `false`. */ - getSpeciesForm(ignoreOverride: boolean = false, useIllusion: boolean = false): PokemonSpeciesForm { + getSpeciesForm(ignoreOverride = false, useIllusion = false): PokemonSpeciesForm { if (!ignoreOverride && this.summonData.speciesForm) { return this.summonData.speciesForm; } - const species: PokemonSpecies = useIllusion && this.summonData.illusion ? getPokemonSpecies(this.summonData.illusion.species) : this.species; + const species: PokemonSpecies = + useIllusion && this.summonData.illusion ? getPokemonSpecies(this.summonData.illusion.species) : this.species; const formIndex = useIllusion && this.summonData.illusion ? this.summonData.illusion.formIndex : this.formIndex; if (species.forms && species.forms.length > 0) { @@ -1185,17 +1144,16 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** * @param {boolean} useIllusion - Whether we want the fusionSpeciesForm of the illusion or not. */ - getFusionSpeciesForm(ignoreOverride?: boolean, useIllusion: boolean = false): PokemonSpeciesForm { - const fusionSpecies: PokemonSpecies = useIllusion && this.summonData.illusion ? this.summonData.illusion.fusionSpecies! : this.fusionSpecies!; - const fusionFormIndex = useIllusion && this.summonData.illusion ? this.summonData.illusion.fusionFormIndex! : this.fusionFormIndex; + getFusionSpeciesForm(ignoreOverride?: boolean, useIllusion = false): PokemonSpeciesForm { + const fusionSpecies: PokemonSpecies = + useIllusion && this.summonData.illusion ? this.summonData.illusion.fusionSpecies! : this.fusionSpecies!; + const fusionFormIndex = + useIllusion && this.summonData.illusion ? this.summonData.illusion.fusionFormIndex! : this.fusionFormIndex; if (!ignoreOverride && this.summonData.fusionSpeciesForm) { return this.summonData.fusionSpeciesForm; } - if ( - !fusionSpecies?.forms?.length || - fusionFormIndex >= fusionSpecies?.forms.length - ) { + if (!fusionSpecies?.forms?.length || fusionFormIndex >= fusionSpecies?.forms.length) { return fusionSpecies; } return fusionSpecies?.forms[fusionFormIndex]; @@ -1206,9 +1164,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } getTintSprite(): Phaser.GameObjects.Sprite | null { - return !this.maskEnabled - ? (this.getAt(1) as Phaser.GameObjects.Sprite) - : this.maskSprite; + return !this.maskEnabled ? (this.getAt(1) as Phaser.GameObjects.Sprite) : this.maskSprite; } getSpriteScale(): number { @@ -1289,20 +1245,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param animConfig {@linkcode String} to pass to {@linkcode Phaser.GameObjects.Sprite.play} * @returns true if the sprite was able to be animated */ - tryPlaySprite( - sprite: Phaser.GameObjects.Sprite, - tintSprite: Phaser.GameObjects.Sprite, - key: string, - ): boolean { + tryPlaySprite(sprite: Phaser.GameObjects.Sprite, tintSprite: Phaser.GameObjects.Sprite, key: string): boolean { // Catch errors when trying to play an animation that doesn't exist try { sprite.play(key); tintSprite.play(key); } catch (error: unknown) { - console.error( - `Couldn't play animation for '${key}'!\nIs the image for this Pokemon missing?\n`, - error, - ); + console.error(`Couldn't play animation for '${key}'!\nIs the image for this Pokemon missing?\n`, error); return false; } @@ -1311,11 +1260,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } playAnim(): void { - this.tryPlaySprite( - this.getSprite(), - this.getTintSprite()!, - this.getBattleSpriteKey(), - ); // TODO: is the bag correct? + this.tryPlaySprite(this.getSprite(), this.getTintSprite()!, this.getBattleSpriteKey()); // TODO: is the bang correct? } getFieldPositionOffset(): [number, number] { @@ -1353,30 +1298,23 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // During the Pokemon's MoveEffect phase, the offset is removed to put the Pokemon "in focus" const currentPhase = globalScene.getCurrentPhase(); - if ( - currentPhase instanceof MoveEffectPhase && - currentPhase.getPokemon() === this - ) { + if (currentPhase instanceof MoveEffectPhase && currentPhase.getPokemon() === this) { return false; } return true; - } else { - return false; } + return false; } /** If this Pokemon has a Substitute on the field, removes its sprite from the field. */ destroySubstitute(): void { const substitute = this.getTag(SubstituteTag); - if (substitute && substitute.sprite) { + if (substitute?.sprite) { substitute.sprite.destroy(); } } - setFieldPosition( - fieldPosition: FieldPosition, - duration?: number, - ): Promise { + setFieldPosition(fieldPosition: FieldPosition, duration?: number): Promise { return new Promise(resolve => { if (fieldPosition === this.fieldPosition) { resolve(); @@ -1441,10 +1379,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns the numeric value of the desired {@linkcode Stat} */ getStat(stat: PermanentStat, bypassSummonData = true): number { - if ( - !bypassSummonData && - this.summonData.stats[stat] !== 0 - ) { + if (!bypassSummonData && this.summonData.stats[stat] !== 0) { return this.summonData.stats[stat]; } return this.stats[stat]; @@ -1518,9 +1453,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const critBoostTag = source.getTag(CritBoostTag); if (critBoostTag) { if (critBoostTag instanceof DragonCheerTag) { - critStage.value += critBoostTag.typesOnAdd.includes(PokemonType.DRAGON) - ? 2 - : 1; + critStage.value += critBoostTag.typesOnAdd.includes(PokemonType.DRAGON) ? 2 : 1; } else { critStage.value += 2; } @@ -1571,57 +1504,37 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ): number { const statValue = new NumberHolder(this.getStat(stat, false)); if (!ignoreHeldItems) { - globalScene.applyModifiers( - StatBoosterModifier, - this.isPlayer(), - this, - stat, - statValue, - ); + globalScene.applyModifiers(StatBoosterModifier, this.isPlayer(), this, stat, statValue); } // The Ruin abilities here are never ignored, but they reveal themselves on summon anyway const fieldApplied = new BooleanHolder(false); for (const pokemon of globalScene.getField(true)) { - applyFieldStatMultiplierAbAttrs( - FieldMultiplyStatAbAttr, - pokemon, - stat, - statValue, - this, - fieldApplied, - simulated, - ); + applyFieldStatMultiplierAbAttrs(FieldMultiplyStatAbAttr, pokemon, stat, statValue, this, fieldApplied, simulated); if (fieldApplied.value) { break; } } if (!ignoreAbility) { - applyStatMultiplierAbAttrs( - StatMultiplierAbAttr, - this, - stat, - statValue, - simulated, - ); + applyStatMultiplierAbAttrs(StatMultiplierAbAttr, this, stat, statValue, simulated); } const ally = this.getAlly(); if (!isNullOrUndefined(ally)) { - applyAllyStatMultiplierAbAttrs(AllyStatMultiplierAbAttr, ally, stat, statValue, simulated, this, move?.hasFlag(MoveFlags.IGNORE_ABILITIES) || ignoreAllyAbility); + applyAllyStatMultiplierAbAttrs( + AllyStatMultiplierAbAttr, + ally, + stat, + statValue, + simulated, + this, + move?.hasFlag(MoveFlags.IGNORE_ABILITIES) || ignoreAllyAbility, + ); } let ret = statValue.value * - this.getStatStageMultiplier( - stat, - opponent, - move, - ignoreOppAbility, - isCritical, - simulated, - ignoreHeldItems, - ); + this.getStatStageMultiplier(stat, opponent, move, ignoreOppAbility, isCritical, simulated, ignoreHeldItems); switch (stat) { case Stat.ATK: @@ -1630,31 +1543,23 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } break; case Stat.DEF: - if ( - this.isOfType(PokemonType.ICE) && - globalScene.arena.weather?.weatherType === WeatherType.SNOW - ) { + if (this.isOfType(PokemonType.ICE) && globalScene.arena.weather?.weatherType === WeatherType.SNOW) { ret *= 1.5; } break; case Stat.SPATK: break; case Stat.SPDEF: - if ( - this.isOfType(PokemonType.ROCK) && - globalScene.arena.weather?.weatherType === WeatherType.SANDSTORM - ) { + if (this.isOfType(PokemonType.ROCK) && globalScene.arena.weather?.weatherType === WeatherType.SANDSTORM) { ret *= 1.5; } break; - case Stat.SPD: + case Stat.SPD: { const side = this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; if (globalScene.arena.getTagOnSide(ArenaTagType.TAILWIND, side)) { ret *= 2; } - if ( - globalScene.arena.getTagOnSide(ArenaTagType.GRASS_WATER_PLEDGE, side) - ) { + if (globalScene.arena.getTagOnSide(ArenaTagType.GRASS_WATER_PLEDGE, side)) { ret >>= 2; } @@ -1664,19 +1569,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.status && this.status.effect === StatusEffect.PARALYSIS) { ret >>= 1; } - if ( - this.getTag(BattlerTagType.UNBURDEN) && - this.hasAbility(Abilities.UNBURDEN) - ) { + if (this.getTag(BattlerTagType.UNBURDEN) && this.hasAbility(Abilities.UNBURDEN)) { ret *= 2; } break; + } } const highestStatBoost = this.findTag( - t => - t instanceof HighestStatBoostTag && - (t as HighestStatBoostTag).stat === stat, + t => t instanceof HighestStatBoostTag && (t as HighestStatBoostTag).stat === stat, ) as HighestStatBoostTag; if (highestStatBoost) { ret *= highestStatBoost.multiplier; @@ -1694,18 +1595,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const baseStats = this.calculateBaseStats(); // Using base stats, calculate and store stats one by one for (const s of PERMANENT_STATS) { - const statHolder = new NumberHolder( - Math.floor((2 * baseStats[s] + this.ivs[s]) * this.level * 0.01), - ); + const statHolder = new NumberHolder(Math.floor((2 * baseStats[s] + this.ivs[s]) * this.level * 0.01)); if (s === Stat.HP) { statHolder.value = statHolder.value + this.level + 10; - globalScene.applyModifier( - PokemonIncrementingStatModifier, - this.isPlayer(), - this, - s, - statHolder, - ); + globalScene.applyModifier(PokemonIncrementingStatModifier, this.isPlayer(), this, s, statHolder); if (this.hasAbility(Abilities.WONDER_GUARD, false, true)) { statHolder.value = 1; } @@ -1719,37 +1612,18 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } else { statHolder.value += 5; - const natureStatMultiplier = new NumberHolder( - getNatureStatMultiplier(this.getNature(), s), - ); - globalScene.applyModifier( - PokemonNatureWeightModifier, - this.isPlayer(), - this, - natureStatMultiplier, - ); + const natureStatMultiplier = new NumberHolder(getNatureStatMultiplier(this.getNature(), s)); + globalScene.applyModifier(PokemonNatureWeightModifier, this.isPlayer(), this, natureStatMultiplier); if (natureStatMultiplier.value !== 1) { statHolder.value = Math.max( - Math[natureStatMultiplier.value > 1 ? "ceil" : "floor"]( - statHolder.value * natureStatMultiplier.value, - ), + Math[natureStatMultiplier.value > 1 ? "ceil" : "floor"](statHolder.value * natureStatMultiplier.value), 1, ); } - globalScene.applyModifier( - PokemonIncrementingStatModifier, - this.isPlayer(), - this, - s, - statHolder, - ); + globalScene.applyModifier(PokemonIncrementingStatModifier, this.isPlayer(), this, s, statHolder); } - statHolder.value = Phaser.Math.Clamp( - statHolder.value, - 1, - Number.MAX_SAFE_INTEGER, - ); + statHolder.value = Phaser.Math.Clamp(statHolder.value, 1, Number.MAX_SAFE_INTEGER); this.setStat(s, statHolder.value); } @@ -1757,32 +1631,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { calculateBaseStats(): number[] { const baseStats = this.getSpeciesForm(true).baseStats.slice(0); - applyChallenges( - ChallengeType.FLIP_STAT, - this, - baseStats, - ); + applyChallenges(ChallengeType.FLIP_STAT, this, baseStats); // Shuckle Juice - globalScene.applyModifiers( - PokemonBaseStatTotalModifier, - this.isPlayer(), - this, - baseStats, - ); + globalScene.applyModifiers(PokemonBaseStatTotalModifier, this.isPlayer(), this, baseStats); // Old Gateau - globalScene.applyModifiers( - PokemonBaseStatFlatModifier, - this.isPlayer(), - this, - baseStats, - ); + globalScene.applyModifiers(PokemonBaseStatFlatModifier, this.isPlayer(), this, baseStats); if (this.isFusion()) { const fusionBaseStats = this.getFusionSpeciesForm(true).baseStats; - applyChallenges( - ChallengeType.FLIP_STAT, - this, - fusionBaseStats, - ); + applyChallenges(ChallengeType.FLIP_STAT, this, fusionBaseStats); for (const s of PERMANENT_STATS) { baseStats[s] = Math.ceil((baseStats[s] + fusionBaseStats[s]) / 2); @@ -1793,20 +1649,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } // Vitamins - globalScene.applyModifiers( - BaseStatModifier, - this.isPlayer(), - this, - baseStats, - ); + globalScene.applyModifiers(BaseStatModifier, this.isPlayer(), this, baseStats); return baseStats; } getNature(): Nature { - return this.customPokemonData.nature !== -1 - ? this.customPokemonData.nature - : this.nature; + return this.customPokemonData.nature !== -1 ? this.customPokemonData.nature : this.nature; } setNature(nature: Nature): void { @@ -1841,9 +1690,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } getHpRatio(precise = false): number { - return precise - ? this.hp / this.getMaxHp() - : Math.round((this.hp / this.getMaxHp()) * 100) / 100; + return precise ? this.hp / this.getMaxHp() : Math.round((this.hp / this.getMaxHp()) * 100) / 100; } generateGender(): void { @@ -1860,54 +1707,56 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * @param {boolean} useIllusion - Whether we want the fake or real gender (illusion ability). + * @param useIllusion - Whether we want the fake or real gender (illusion ability). */ - getGender(ignoreOverride?: boolean, useIllusion: boolean = false): Gender { + getGender(ignoreOverride?: boolean, useIllusion = false): Gender { if (useIllusion && this.summonData.illusion) { return this.summonData.illusion.gender; - } else if (!ignoreOverride && !isNullOrUndefined(this.summonData.gender)) { + } + if (!ignoreOverride && !isNullOrUndefined(this.summonData.gender)) { return this.summonData.gender; } return this.gender; } /** - * @param {boolean} useIllusion - Whether we want the fake or real gender (illusion ability). + * @param useIllusion - Whether we want the fake or real gender (illusion ability). */ - getFusionGender(ignoreOverride?: boolean, useIllusion: boolean = false): Gender { + getFusionGender(ignoreOverride?: boolean, useIllusion = false): Gender { if (useIllusion && this.summonData.illusion?.fusionGender) { return this.summonData.illusion.fusionGender; - } else if (!ignoreOverride && !isNullOrUndefined(this.summonData.fusionGender)) { + } + if (!ignoreOverride && !isNullOrUndefined(this.summonData.fusionGender)) { return this.summonData.fusionGender; } return this.fusionGender; } /** - * @param {boolean} useIllusion - Whether we want the fake or real shininess (illusion ability). + * @param useIllusion - Whether we want the fake or real shininess (illusion ability). */ - isShiny(useIllusion: boolean = false): boolean { + isShiny(useIllusion = false): boolean { if (!useIllusion && this.summonData.illusion) { - return this.summonData.illusion.basePokemon?.shiny || (this.summonData.illusion.fusionSpecies && this.summonData.illusion.basePokemon?.fusionShiny) || false; - } else { - return this.shiny || (this.isFusion(useIllusion) && this.fusionShiny); + return !!( + this.summonData.illusion.basePokemon?.shiny || + (this.summonData.illusion.fusionSpecies && this.summonData.illusion.basePokemon?.fusionShiny) + ); } + return this.shiny || (this.isFusion(useIllusion) && this.fusionShiny); } - isBaseShiny(useIllusion: boolean = false){ + isBaseShiny(useIllusion = false) { if (!useIllusion && this.summonData.illusion) { return !!this.summonData.illusion.basePokemon?.shiny; - } else { - return this.shiny; } + return this.shiny; } - isFusionShiny(useIllusion: boolean = false){ + isFusionShiny(useIllusion = false) { if (!useIllusion && this.summonData.illusion) { return !!this.summonData.illusion.basePokemon?.fusionShiny; - } else { - return this.isFusion(useIllusion) && this.fusionShiny; } + return this.isFusion(useIllusion) && this.fusionShiny; } /** @@ -1915,34 +1764,33 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param useIllusion - Whether we want the fake or real shininess (illusion ability). * @returns `true` if the {@linkcode Pokemon} is shiny and the fusion is shiny as well, `false` otherwise */ - isDoubleShiny(useIllusion: boolean = false): boolean { + isDoubleShiny(useIllusion = false): boolean { if (!useIllusion && this.summonData.illusion?.basePokemon) { - return this.isFusion(false) && this.summonData.illusion.basePokemon.shiny && this.summonData.illusion.basePokemon.fusionShiny; - } else { - return this.isFusion(useIllusion) && this.shiny && this.fusionShiny; + return ( + this.isFusion(false) && + this.summonData.illusion.basePokemon.shiny && + this.summonData.illusion.basePokemon.fusionShiny + ); } + return this.isFusion(useIllusion) && this.shiny && this.fusionShiny; } /** - * @param {boolean} useIllusion - Whether we want the fake or real variant (illusion ability). + * @param useIllusion - Whether we want the fake or real variant (illusion ability). */ - getVariant(useIllusion: boolean = false): Variant { + getVariant(useIllusion = false): Variant { if (!useIllusion && this.summonData.illusion) { return !this.isFusion(false) - ? this.summonData.illusion.basePokemon!.variant - : Math.max(this.variant, this.fusionVariant) as Variant; - } else { - return !this.isFusion(true) - ? this.variant - : Math.max(this.variant, this.fusionVariant) as Variant; + ? this.summonData.illusion.basePokemon!.variant + : (Math.max(this.variant, this.fusionVariant) as Variant); } + return !this.isFusion(true) ? this.variant : (Math.max(this.variant, this.fusionVariant) as Variant); } getBaseVariant(doubleShiny: boolean): Variant { if (doubleShiny) { return this.summonData.illusion?.basePokemon?.variant ?? this.variant; } - return this.getVariant(); } @@ -1950,7 +1798,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return this.luck + (this.isFusion() ? this.fusionLuck : 0); } - isFusion(useIllusion: boolean = false): boolean { + isFusion(useIllusion = false): boolean { if (useIllusion && this.summonData.illusion) { return !!this.summonData.illusion.fusionSpecies; } @@ -1958,12 +1806,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * @param {boolean} useIllusion - Whether we want the fake name or the real name of the Pokemon (for Illusion ability). + * @param useIllusion - Whether we want the fake name or the real name of the Pokemon (for Illusion ability). */ - getName(useIllusion: boolean = false): string { - return (!useIllusion && this.summonData.illusion?.basePokemon) - ? this.summonData.illusion.basePokemon.name - : this.name; + getName(useIllusion = false): string { + return !useIllusion && this.summonData.illusion?.basePokemon + ? this.summonData.illusion.basePokemon.name + : this.name; } /** @@ -1983,22 +1831,19 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ hasSpecies(species: Species, formKey?: string): boolean { if (isNullOrUndefined(formKey)) { - return ( - this.species.speciesId === species || - this.fusionSpecies?.speciesId === species - ); + return this.species.speciesId === species || this.fusionSpecies?.speciesId === species; } - return (this.species.speciesId === species && this.getFormKey() === formKey) || (this.fusionSpecies?.speciesId === species && this.getFusionFormKey() === formKey); + return ( + (this.species.speciesId === species && this.getFormKey() === formKey) || + (this.fusionSpecies?.speciesId === species && this.getFusionFormKey() === formKey) + ); } abstract isBoss(): boolean; getMoveset(ignoreOverride?: boolean): PokemonMove[] { - const ret = - !ignoreOverride && this.summonData.moveset - ? this.summonData.moveset - : this.moveset; + const ret = !ignoreOverride && this.summonData.moveset ? this.summonData.moveset : this.moveset; // Overrides moveset based on arrays specified in overrides.ts let overrideArray: Moves | Array = this.isPlayer() @@ -2013,10 +1858,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } overrideArray.forEach((move: Moves, index: number) => { const ppUsed = this.moveset[index]?.ppUsed ?? 0; - this.moveset[index] = new PokemonMove( - move, - Math.min(ppUsed, allMoves[move].pp), - ); + this.moveset[index] = new PokemonMove(move, Math.min(ppUsed, allMoves[move].pp)); }); } @@ -2033,9 +1875,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { getUnlockedEggMoves(): Moves[] { const moves: Moves[] = []; const species = - this.metSpecies in speciesEggMoves - ? this.metSpecies - : this.getSpeciesForm(true).getRootSpeciesId(true); + this.metSpecies in speciesEggMoves ? this.metSpecies : this.getSpeciesForm(true).getRootSpeciesId(true); if (species in speciesEggMoves) { for (let i = 0; i < 4; i++) { if (globalScene.gameData.starterData[species].eggMoves & (1 << i)) { @@ -2057,17 +1897,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ public getLearnableLevelMoves(): Moves[] { let levelMoves = this.getLevelMoves(1, true, false, true).map(lm => lm[1]); - if ( - this.metBiome === -1 && - !globalScene.gameMode.isFreshStartChallenge() && - !globalScene.gameMode.isDaily - ) { + if (this.metBiome === -1 && !globalScene.gameMode.isFreshStartChallenge() && !globalScene.gameMode.isDaily) { levelMoves = this.getUnlockedEggMoves().concat(levelMoves); } if (Array.isArray(this.usedTMs) && this.usedTMs.length > 0) { - levelMoves = this.usedTMs - .filter(m => !levelMoves.includes(m)) - .concat(levelMoves); + levelMoves = this.usedTMs.filter(m => !levelMoves.includes(m)).concat(levelMoves); } levelMoves = levelMoves.filter(lm => !this.moveset.some(m => m.moveId === lm)); return levelMoves; @@ -2083,9 +1917,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ public getTypes( includeTeraType = false, - forDefend: boolean = false, - ignoreOverride: boolean = false, - useIllusion: boolean = false + forDefend = false, + ignoreOverride = false, + useIllusion = false, ): PokemonType[] { const types: PokemonType[] = []; @@ -2100,7 +1934,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } if (!types.length || !includeTeraType) { - if ( !ignoreOverride && this.summonData.types && @@ -2145,10 +1978,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { secondType = fusionType1; } - if ( - secondType === PokemonType.UNKNOWN && - isNullOrUndefined(fusionType2) - ) { + if (secondType === PokemonType.UNKNOWN && isNullOrUndefined(fusionType2)) { // If second pokemon was monotype and shared its primary type secondType = customTypes && @@ -2187,11 +2017,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } // check type added to Pokemon from moves like Forest's Curse or Trick Or Treat - if ( - !ignoreOverride && - this.summonData.addedType && - !types.includes(this.summonData.addedType) - ) { + if (!ignoreOverride && this.summonData.addedType && !types.includes(this.summonData.addedType)) { types.push(this.summonData.addedType); } @@ -2211,15 +2037,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param ignoreOverride - If `true`, ignore ability changing effects; Default: `false` * @returns `true` if the Pokemon's type matches */ - public isOfType( - type: PokemonType, - includeTeraType = true, - forDefend = false, - ignoreOverride = false, - ): boolean { - return this.getTypes(includeTeraType, forDefend, ignoreOverride).some( - t => t === type, - ); + public isOfType(type: PokemonType, includeTeraType = true, forDefend = false, ignoreOverride = false): boolean { + return this.getTypes(includeTeraType, forDefend, ignoreOverride).some(t => t === type); } /** @@ -2241,27 +2060,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return allAbilities[Overrides.OPP_ABILITY_OVERRIDE]; } if (this.isFusion()) { - if ( - !isNullOrUndefined(this.fusionCustomPokemonData?.ability) && - this.fusionCustomPokemonData.ability !== -1 - ) { + if (!isNullOrUndefined(this.fusionCustomPokemonData?.ability) && this.fusionCustomPokemonData.ability !== -1) { return allAbilities[this.fusionCustomPokemonData.ability]; } - return allAbilities[ - this.getFusionSpeciesForm(ignoreOverride).getAbility( - this.fusionAbilityIndex, - ) - ]; + return allAbilities[this.getFusionSpeciesForm(ignoreOverride).getAbility(this.fusionAbilityIndex)]; } - if ( - !isNullOrUndefined(this.customPokemonData.ability) && - this.customPokemonData.ability !== -1 - ) { + if (!isNullOrUndefined(this.customPokemonData.ability) && this.customPokemonData.ability !== -1) { return allAbilities[this.customPokemonData.ability]; } - let abilityId = this.getSpeciesForm(ignoreOverride).getAbility( - this.abilityIndex, - ); + let abilityId = this.getSpeciesForm(ignoreOverride).getAbility(this.abilityIndex); if (abilityId === Abilities.NONE) { abilityId = this.species.ability1; } @@ -2282,10 +2089,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (Overrides.OPP_PASSIVE_ABILITY_OVERRIDE && !this.isPlayer()) { return allAbilities[Overrides.OPP_PASSIVE_ABILITY_OVERRIDE]; } - if ( - !isNullOrUndefined(this.customPokemonData.passive) && - this.customPokemonData.passive !== -1 - ) { + if (!isNullOrUndefined(this.customPokemonData.passive) && this.customPokemonData.passive !== -1) { return allAbilities[this.customPokemonData.passive]; } @@ -2309,9 +2113,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const abilityAttrs: T[] = []; if (!canApply || this.canApplyAbility()) { - abilityAttrs.push( - ...this.getAbility(ignoreOverride).getAttrs(attrType), - ); + abilityAttrs.push(...this.getAbility(ignoreOverride).getAttrs(attrType)); } if (!canApply || this.canApplyAbility(true)) { @@ -2361,11 +2163,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return false; } if ( - ((Overrides.PASSIVE_ABILITY_OVERRIDE !== Abilities.NONE || - Overrides.HAS_PASSIVE_ABILITY_OVERRIDE) && + ((Overrides.PASSIVE_ABILITY_OVERRIDE !== Abilities.NONE || Overrides.HAS_PASSIVE_ABILITY_OVERRIDE) && this.isPlayer()) || - ((Overrides.OPP_PASSIVE_ABILITY_OVERRIDE !== Abilities.NONE || - Overrides.OPP_HAS_PASSIVE_ABILITY_OVERRIDE) && + ((Overrides.OPP_PASSIVE_ABILITY_OVERRIDE !== Abilities.NONE || Overrides.OPP_HAS_PASSIVE_ABILITY_OVERRIDE) && !this.isPlayer()) ) { return true; @@ -2402,35 +2202,17 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return false; } const arena = globalScene?.arena; - if ( - arena.ignoreAbilities && - arena.ignoringEffectSource !== this.getBattlerIndex() && - ability.isIgnorable - ) { + if (arena.ignoreAbilities && arena.ignoringEffectSource !== this.getBattlerIndex() && ability.isIgnorable) { return false; } - if ( - this.summonData.abilitySuppressed && - ability.isSuppressable - ) { + if (this.summonData.abilitySuppressed && ability.isSuppressable) { return false; } - const suppressAbilitiesTag = arena.getTag( - ArenaTagType.NEUTRALIZING_GAS, - ) as SuppressAbilitiesTag; + const suppressAbilitiesTag = arena.getTag(ArenaTagType.NEUTRALIZING_GAS) as SuppressAbilitiesTag; const suppressOffField = ability.hasAttr(PreSummonAbAttr); - if ( - (this.isOnField() || suppressOffField) && - suppressAbilitiesTag && - !suppressAbilitiesTag.isBeingRemoved() - ) { - const thisAbilitySuppressing = ability.hasAttr( - PreLeaveFieldRemoveSuppressAbilitiesSourceAbAttr, - ); - const hasSuppressingAbility = this.hasAbilityWithAttr( - PreLeaveFieldRemoveSuppressAbilitiesSourceAbAttr, - false, - ); + if ((this.isOnField() || suppressOffField) && suppressAbilitiesTag && !suppressAbilitiesTag.isBeingRemoved()) { + const thisAbilitySuppressing = ability.hasAttr(PreLeaveFieldRemoveSuppressAbilitiesSourceAbAttr); + const hasSuppressingAbility = this.hasAbilityWithAttr(PreLeaveFieldRemoveSuppressAbilitiesSourceAbAttr, false); // Neutralizing gas is up - suppress abilities unless they are unsuppressable or this pokemon is responsible for the gas // (Balance decided that the other ability of a neutralizing gas pokemon should not be neutralized) // If the ability itself is neutralizing gas, don't suppress it (handled through arena tag) @@ -2442,10 +2224,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return false; } } - return ( - (this.hp > 0 || ability.isBypassFaint) && - !ability.conditions.find(condition => !condition(this)) - ); + return (this.hp > 0 || ability.isBypassFaint) && !ability.conditions.find(condition => !condition(this)); } /** @@ -2457,22 +2236,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param ignoreOverride Whether to ignore ability changing effects; default `false` * @returns `true` if the ability is present and active */ - public hasAbility( - ability: Abilities, - canApply = true, - ignoreOverride = false, - ): boolean { - if ( - this.getAbility(ignoreOverride).id === ability && - (!canApply || this.canApplyAbility()) - ) { + public hasAbility(ability: Abilities, canApply = true, ignoreOverride = false): boolean { + if (this.getAbility(ignoreOverride).id === ability && (!canApply || this.canApplyAbility())) { return true; } - if ( - this.getPassiveAbility().id === ability && - this.hasPassive() && - (!canApply || this.canApplyAbility(true)) - ) { + if (this.getPassiveAbility().id === ability && this.hasPassive() && (!canApply || this.canApplyAbility(true))) { return true; } return false; @@ -2488,22 +2256,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param ignoreOverride Whether to ignore ability changing effects; default `false` * @returns `true` if an ability with the given {@linkcode AbAttr} is present and active */ - public hasAbilityWithAttr( - attrType: Constructor, - canApply = true, - ignoreOverride = false, - ): boolean { - if ( - (!canApply || this.canApplyAbility()) && - this.getAbility(ignoreOverride).hasAttr(attrType) - ) { + public hasAbilityWithAttr(attrType: Constructor, canApply = true, ignoreOverride = false): boolean { + if ((!canApply || this.canApplyAbility()) && this.getAbility(ignoreOverride).hasAttr(attrType)) { return true; } - if ( - this.hasPassive() && - (!canApply || this.canApplyAbility(true)) && - this.getPassiveAbility().hasAttr(attrType) - ) { + if (this.hasPassive() && (!canApply || this.canApplyAbility(true)) && this.getPassiveAbility().hasAttr(attrType)) { return true; } return false; @@ -2536,10 +2293,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return PokemonType.STELLAR; } if (this.hasSpecies(Species.OGERPON)) { - const ogerponForm = - this.species.speciesId === Species.OGERPON - ? this.formIndex - : this.fusionFormIndex; + const ogerponForm = this.species.speciesId === Species.OGERPON ? this.formIndex : this.fusionFormIndex; switch (ogerponForm) { case 0: case 4: @@ -2579,10 +2333,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param simulated - If `true`, applies abilities via simulated calls. * @returns `true` if the pokemon is trapped */ - public isTrapped( - trappedAbMessages: string[] = [], - simulated = true, - ): boolean { + public isTrapped(trappedAbMessages: string[] = [], simulated = true): boolean { const commandedTag = this.getTag(BattlerTagType.COMMANDED); if (commandedTag?.getSourcePokemon()?.isActive(true)) { return true; @@ -2597,22 +2348,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * Contains opposing Pokemon (Enemy/Player Pokemon) depending on perspective * Afterwards, it filters out Pokemon that have been switched out of the field so trapped abilities/moves do not trigger */ - const opposingFieldUnfiltered = this.isPlayer() - ? globalScene.getEnemyField() - : globalScene.getPlayerField(); - const opposingField = opposingFieldUnfiltered.filter( - enemyPkm => enemyPkm.switchOutStatus === false, - ); + const opposingFieldUnfiltered = this.isPlayer() ? globalScene.getEnemyField() : globalScene.getPlayerField(); + const opposingField = opposingFieldUnfiltered.filter(enemyPkm => enemyPkm.switchOutStatus === false); for (const opponent of opposingField) { - applyCheckTrappedAbAttrs( - CheckTrappedAbAttr, - opponent, - trappedByAbility, - this, - trappedAbMessages, - simulated, - ); + applyCheckTrappedAbAttrs(CheckTrappedAbAttr, opponent, trappedByAbility, this, trappedAbMessages, simulated); } const side = this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; @@ -2634,26 +2374,19 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const moveTypeHolder = new NumberHolder(move.type); applyMoveAttrs(VariableMoveTypeAttr, this, null, move, moveTypeHolder); - applyPreAttackAbAttrs( - MoveTypeChangeAbAttr, - this, - null, - move, - simulated, - moveTypeHolder - ); + applyPreAttackAbAttrs(MoveTypeChangeAbAttr, this, null, move, simulated, moveTypeHolder); // If the user is terastallized and the move is tera blast, or tera starstorm that is stellar type, // then bypass the check for ion deluge and electrify - if (this.isTerastallized && (move.id === Moves.TERA_BLAST || move.id === Moves.TERA_STARSTORM && moveTypeHolder.value === PokemonType.STELLAR)) { + if ( + this.isTerastallized && + (move.id === Moves.TERA_BLAST || + (move.id === Moves.TERA_STARSTORM && moveTypeHolder.value === PokemonType.STELLAR)) + ) { return moveTypeHolder.value as PokemonType; } - globalScene.arena.applyTags( - ArenaTagType.ION_DELUGE, - simulated, - moveTypeHolder, - ); + globalScene.arena.applyTags(ArenaTagType.ION_DELUGE, simulated, moveTypeHolder); if (this.getTag(BattlerTagType.ELECTRIFIED)) { moveTypeHolder.value = PokemonType.ELECTRIC; } @@ -2678,7 +2411,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ignoreAbility = false, simulated = true, cancelled?: BooleanHolder, - useIllusion: boolean = false + useIllusion = false, ): TypeDamageMultiplier { if (!isNullOrUndefined(this.turnData?.moveEffectiveness)) { return this.turnData?.moveEffectiveness; @@ -2690,28 +2423,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const moveType = source.getMoveType(move); const typeMultiplier = new NumberHolder( - move.category !== MoveCategory.STATUS || - move.hasAttr(RespectAttackTypeImmunityAttr) - ? this.getAttackTypeEffectiveness( - moveType, - source, - false, - simulated, - move, - useIllusion - ) - : 1); - - applyMoveAttrs( - VariableMoveTypeMultiplierAttr, - source, - this, - move, - typeMultiplier, + move.category !== MoveCategory.STATUS || move.hasAttr(RespectAttackTypeImmunityAttr) + ? this.getAttackTypeEffectiveness(moveType, source, false, simulated, move, useIllusion) + : 1, ); - if ( - this.getTypes(true, true).find(t => move.isTypeImmune(source, this, t)) - ) { + + applyMoveAttrs(VariableMoveTypeMultiplierAttr, source, this, move, typeMultiplier); + if (this.getTypes(true, true).find(t => move.isTypeImmune(source, this, t))) { typeMultiplier.value = 0; } @@ -2721,52 +2439,23 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const cancelledHolder = cancelled ?? new BooleanHolder(false); if (!ignoreAbility) { - applyPreDefendAbAttrs( - TypeImmunityAbAttr, - this, - source, - move, - cancelledHolder, - simulated, - typeMultiplier, - ); + applyPreDefendAbAttrs(TypeImmunityAbAttr, this, source, move, cancelledHolder, simulated, typeMultiplier); if (!cancelledHolder.value) { - applyPreDefendAbAttrs( - MoveImmunityAbAttr, - this, - source, - move, - cancelledHolder, - simulated, - typeMultiplier, - ); + applyPreDefendAbAttrs(MoveImmunityAbAttr, this, source, move, cancelledHolder, simulated, typeMultiplier); } if (!cancelledHolder.value) { - const defendingSidePlayField = this.isPlayer() - ? globalScene.getPlayerField() - : globalScene.getEnemyField(); + const defendingSidePlayField = this.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField(); defendingSidePlayField.forEach(p => - applyPreDefendAbAttrs( - FieldPriorityMoveImmunityAbAttr, - p, - source, - move, - cancelledHolder, - ), + applyPreDefendAbAttrs(FieldPriorityMoveImmunityAbAttr, p, source, move, cancelledHolder), ); } } - const immuneTags = this.findTags( - tag => tag instanceof TypeImmuneTag && tag.immuneType === moveType, - ); + const immuneTags = this.findTags(tag => tag instanceof TypeImmuneTag && tag.immuneType === moveType); for (const tag of immuneTags) { - if ( - move && - !move.getAttrs(HitsTagAttr).some(attr => attr.tagType === tag.tagType) - ) { + if (move && !move.getAttrs(HitsTagAttr).some(attr => attr.tagType === tag.tagType)) { typeMultiplier.value = 0; break; } @@ -2774,27 +2463,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // Apply Tera Shell's effect to attacks after all immunities are accounted for if (!ignoreAbility && move.category !== MoveCategory.STATUS) { - applyPreDefendAbAttrs( - FullHpResistTypeAbAttr, - this, - source, - move, - cancelledHolder, - simulated, - typeMultiplier, - ); + applyPreDefendAbAttrs(FullHpResistTypeAbAttr, this, source, move, cancelledHolder, simulated, typeMultiplier); } - if ( - move.category === MoveCategory.STATUS && - move.hitsSubstitute(source, this) - ) { + if (move.category === MoveCategory.STATUS && move.hitsSubstitute(source, this)) { typeMultiplier.value = 0; } - return ( - !cancelledHolder.value ? typeMultiplier.value : 0 - ) as TypeDamageMultiplier; + return (!cancelledHolder.value ? typeMultiplier.value : 0) as TypeDamageMultiplier; } /** @@ -2810,10 +2486,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { getAttackTypeEffectiveness( moveType: PokemonType, source?: Pokemon, - ignoreStrongWinds: boolean = false, - simulated: boolean = true, + ignoreStrongWinds = false, + simulated = true, move?: Move, - useIllusion: boolean = false + useIllusion = false, ): TypeDamageMultiplier { if (moveType === PokemonType.STELLAR) { return this.isTerastallized ? 2 : 1; @@ -2823,10 +2499,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // Handle flying v ground type immunity without removing flying type so effective types are still effective // Related to https://github.com/pagefaultgames/pokerogue/issues/524 - if ( - moveType === PokemonType.GROUND && - (this.isGrounded() || arena.hasTag(ArenaTagType.GRAVITY)) - ) { + if (moveType === PokemonType.GROUND && (this.isGrounded() || arena.hasTag(ArenaTagType.GRAVITY))) { const flyingIndex = types.indexOf(PokemonType.FLYING); if (flyingIndex > -1) { types.splice(flyingIndex, 1); @@ -2835,37 +2508,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { let multiplier = types .map(defType => { - const multiplier = new NumberHolder( - getTypeDamageMultiplier(moveType, defType), - ); - applyChallenges( - ChallengeType.TYPE_EFFECTIVENESS, - multiplier, - ); + const multiplier = new NumberHolder(getTypeDamageMultiplier(moveType, defType)); + applyChallenges(ChallengeType.TYPE_EFFECTIVENESS, multiplier); if (move) { - applyMoveAttrs( - VariableMoveTypeChartAttr, - null, - this, - move, - multiplier, - defType, - ); + applyMoveAttrs(VariableMoveTypeChartAttr, null, this, move, multiplier, defType); } if (source) { const ignoreImmunity = new BooleanHolder(false); - if ( - source.isActive(true) && - source.hasAbilityWithAttr(IgnoreTypeImmunityAbAttr) - ) { - applyAbAttrs( - IgnoreTypeImmunityAbAttr, - source, - ignoreImmunity, - simulated, - moveType, - defType, - ); + if (source.isActive(true) && source.hasAbilityWithAttr(IgnoreTypeImmunityAbAttr)) { + applyAbAttrs(IgnoreTypeImmunityAbAttr, source, ignoreImmunity, simulated, moveType, defType); } if (ignoreImmunity.value) { if (multiplier.value === 0) { @@ -2873,9 +2524,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } - const exposedTags = this.findTags( - tag => tag instanceof ExposedTag, - ) as ExposedTag[]; + const exposedTags = this.findTags(tag => tag instanceof ExposedTag) as ExposedTag[]; if (exposedTags.some(t => t.ignoreImmunity(defType, moveType))) { if (multiplier.value === 0) { return 1; @@ -2886,13 +2535,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { }) .reduce((acc, cur) => acc * cur, 1) as TypeDamageMultiplier; - const typeMultiplierAgainstFlying = new NumberHolder( - getTypeDamageMultiplier(moveType, PokemonType.FLYING), - ); - applyChallenges( - ChallengeType.TYPE_EFFECTIVENESS, - typeMultiplierAgainstFlying, - ); + const typeMultiplierAgainstFlying = new NumberHolder(getTypeDamageMultiplier(moveType, PokemonType.FLYING)); + applyChallenges(ChallengeType.TYPE_EFFECTIVENESS, typeMultiplierAgainstFlying); // Handle strong winds lowering effectiveness of types super effective against pure flying if ( !ignoreStrongWinds && @@ -2921,27 +2565,25 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const enemyTypes = opponent.getTypes(true, true, false, true); /** Is this Pokemon faster than the opponent? */ const outspeed = - (this.isActive(true) - ? this.getEffectiveStat(Stat.SPD, opponent) - : this.getStat(Stat.SPD, false)) >= + (this.isActive(true) ? this.getEffectiveStat(Stat.SPD, opponent) : this.getStat(Stat.SPD, false)) >= opponent.getEffectiveStat(Stat.SPD, this); /** * Based on how effective this Pokemon's types are offensively against the opponent's types. * This score is increased by 25 percent if this Pokemon is faster than the opponent. */ - let atkScore = opponent.getAttackTypeEffectiveness(types[0], this, false, true, undefined, true) * (outspeed ? 1.25 : 1); + let atkScore = + opponent.getAttackTypeEffectiveness(types[0], this, false, true, undefined, true) * (outspeed ? 1.25 : 1); /** * Based on how effectively this Pokemon defends against the opponent's types. * This score cannot be higher than 4. */ - let defScore = - 1 / - Math.max(this.getAttackTypeEffectiveness(enemyTypes[0], opponent), 0.25); + let defScore = 1 / Math.max(this.getAttackTypeEffectiveness(enemyTypes[0], opponent), 0.25); if (types.length > 1) { atkScore *= opponent.getAttackTypeEffectiveness(types[1], this); } if (enemyTypes.length > 1) { - defScore *= (1 / Math.max(this.getAttackTypeEffectiveness(enemyTypes[1], opponent, false, false, undefined, true), 0.25)); + defScore *= + 1 / Math.max(this.getAttackTypeEffectiveness(enemyTypes[1], opponent, false, false, undefined, true), 0.25); } /** * Based on this Pokemon's HP ratio compared to that of the opponent. @@ -2962,38 +2604,26 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if ( !e.item && this.level >= e.level && - (isNullOrUndefined(e.preFormKey) || - this.getFormKey() === e.preFormKey) + (isNullOrUndefined(e.preFormKey) || this.getFormKey() === e.preFormKey) ) { - if ( - e.condition === null || - (e.condition as SpeciesEvolutionCondition).predicate(this) - ) { + if (e.condition === null || (e.condition as SpeciesEvolutionCondition).predicate(this)) { return e; } } } } - if ( - this.isFusion() && - this.fusionSpecies && - pokemonEvolutions.hasOwnProperty(this.fusionSpecies.speciesId) - ) { - const fusionEvolutions = pokemonEvolutions[ - this.fusionSpecies.speciesId - ].map(e => new FusionSpeciesFormEvolution(this.species.speciesId, e)); + if (this.isFusion() && this.fusionSpecies && pokemonEvolutions.hasOwnProperty(this.fusionSpecies.speciesId)) { + const fusionEvolutions = pokemonEvolutions[this.fusionSpecies.speciesId].map( + e => new FusionSpeciesFormEvolution(this.species.speciesId, e), + ); for (const fe of fusionEvolutions) { if ( !fe.item && this.level >= fe.level && - (isNullOrUndefined(fe.preFormKey) || - this.getFusionFormKey() === fe.preFormKey) + (isNullOrUndefined(fe.preFormKey) || this.getFusionFormKey() === fe.preFormKey) ) { - if ( - fe.condition === null || - (fe.condition as SpeciesEvolutionCondition).predicate(this) - ) { + if (fe.condition === null || (fe.condition as SpeciesEvolutionCondition).predicate(this)) { return fe; } } @@ -3023,10 +2653,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!startingLevel) { startingLevel = this.level; } - if ( - learnSituation === LearnMoveSituation.EVOLUTION_FUSED && - this.fusionSpecies - ) { + if (learnSituation === LearnMoveSituation.EVOLUTION_FUSED && this.fusionSpecies) { // For fusion evolutions, get ONLY the moves of the component mon that evolved levelMoves = this.getFusionSpeciesForm(true) .getLevelMoves() @@ -3046,10 +2673,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ); for (let e = 0; e < evolutionChain.length; e++) { // TODO: Might need to pass specific form index in simulated evolution chain - const speciesLevelMoves = getPokemonSpeciesForm( - evolutionChain[e][0], - this.formIndex, - ).getLevelMoves(); + const speciesLevelMoves = getPokemonSpeciesForm(evolutionChain[e][0], this.formIndex).getLevelMoves(); if (includeRelearnerMoves) { levelMoves.push(...speciesLevelMoves); } else { @@ -3057,9 +2681,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ...speciesLevelMoves.filter( lm => (includeEvolutionMoves && lm[0] === EVOLVE_MOVE) || - ((!e || lm[0] > 1) && - (e === evolutionChain.length - 1 || - lm[0] <= evolutionChain[e + 1][1])), + ((!e || lm[0] > 1) && (e === evolutionChain.length - 1 || lm[0] <= evolutionChain[e + 1][1])), ), ); } @@ -3074,19 +2696,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { lm[0] > 0, ); } - if ( - this.fusionSpecies && - learnSituation !== LearnMoveSituation.EVOLUTION_FUSED_BASE - ) { + if (this.fusionSpecies && learnSituation !== LearnMoveSituation.EVOLUTION_FUSED_BASE) { // For fusion evolutions, get ONLY the moves of the component mon that evolved if (simulateEvolutionChain) { - const fusionEvolutionChain = - this.fusionSpecies.getSimulatedEvolutionChain( - this.level, - this.hasTrainer(), - this.isBoss(), - this.isPlayer(), - ); + const fusionEvolutionChain = this.fusionSpecies.getSimulatedEvolutionChain( + this.level, + this.hasTrainer(), + this.isBoss(), + this.isPlayer(), + ); for (let e = 0; e < fusionEvolutionChain.length; e++) { // TODO: Might need to pass specific form index in simulated evolution chain const speciesLevelMoves = getPokemonSpeciesForm( @@ -3096,9 +2714,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (includeRelearnerMoves) { levelMoves.push( ...speciesLevelMoves.filter( - lm => - (includeEvolutionMoves && lm[0] === EVOLVE_MOVE) || - lm[0] !== EVOLVE_MOVE, + lm => (includeEvolutionMoves && lm[0] === EVOLVE_MOVE) || lm[0] !== EVOLVE_MOVE, ), ); } else { @@ -3107,8 +2723,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { lm => (includeEvolutionMoves && lm[0] === EVOLVE_MOVE) || ((!e || lm[0] > 1) && - (e === fusionEvolutionChain.length - 1 || - lm[0] <= fusionEvolutionChain[e + 1][1])), + (e === fusionEvolutionChain.length - 1 || lm[0] <= fusionEvolutionChain[e + 1][1])), ), ); } @@ -3127,9 +2742,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } } - levelMoves.sort((lma: [number, number], lmb: [number, number]) => - lma[0] > lmb[0] ? 1 : lma[0] < lmb[0] ? -1 : 0, - ); + levelMoves.sort((lma: [number, number], lmb: [number, number]) => (lma[0] > lmb[0] ? 1 : lma[0] < lmb[0] ? -1 : 0)); /** * Filter out moves not within the correct level range(s) @@ -3141,10 +2754,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const isRelearner = level < startingLevel; const allowedEvolutionMove = level === 0 && includeEvolutionMoves; - return ( - !(level > this.level) && - (includeRelearnerMoves || !isRelearner || allowedEvolutionMove) - ); + return !(level > this.level) && (includeRelearnerMoves || !isRelearner || allowedEvolutionMove); }); /** @@ -3210,10 +2820,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ trySetShiny(thresholdOverride?: number): boolean { // Shiny Pokemon should not spawn in the end biome in endless - if ( - globalScene.gameMode.isEndless && - globalScene.arena.biomeType === Biome.END - ) { + if (globalScene.gameMode.isEndless && globalScene.arena.biomeType === Biome.END) { return false; } @@ -3233,11 +2840,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } if (!this.hasTrainer()) { - globalScene.applyModifiers( - ShinyRateBoosterModifier, - true, - shinyThreshold, - ); + globalScene.applyModifiers(ShinyRateBoosterModifier, true, shinyThreshold); } } else { shinyThreshold.value = thresholdOverride; @@ -3262,10 +2865,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param applyModifiersToOverride If {@linkcode thresholdOverride} is set and this is true, will apply Shiny Charm and event modifiers to {@linkcode thresholdOverride} * @returns `true` if the Pokemon has been set as a shiny, `false` otherwise */ - public trySetShinySeed( - thresholdOverride?: number, - applyModifiersToOverride?: boolean, - ): boolean { + public trySetShinySeed(thresholdOverride?: number, applyModifiersToOverride?: boolean): boolean { if (!this.shiny) { const shinyThreshold = new NumberHolder(BASE_SHINY_CHANCE); if (thresholdOverride === undefined || applyModifiersToOverride) { @@ -3275,13 +2875,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (timedEventManager.isEventActive()) { shinyThreshold.value *= timedEventManager.getShinyMultiplier(); } - globalScene.applyModifiers( - ShinyRateBoosterModifier, - true, - shinyThreshold, - ); - } - else { + globalScene.applyModifiers(ShinyRateBoosterModifier, true, shinyThreshold); + } else { shinyThreshold.value = thresholdOverride; } @@ -3291,8 +2886,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.shiny) { this.variant = this.variant ?? 0; this.variant = Math.max(this.generateShinyVariant(), this.variant) as Variant; // Don't set a variant lower than the current one - this.luck = - this.variant + 1 + (this.fusionShiny ? this.fusionVariant + 1 : 0); + this.luck = this.variant + 1 + (this.fusionShiny ? this.fusionVariant + 1 : 0); this.initShinySparkle(); } @@ -3318,8 +2912,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // Checks if there is no variant data for both the index or index with form if ( !this.shiny || - (!variantData.hasOwnProperty(variantDataIndex) && - !variantData.hasOwnProperty(this.species.speciesId)) + (!variantData.hasOwnProperty(variantDataIndex) && !variantData.hasOwnProperty(this.species.speciesId)) ) { return 0; } @@ -3349,10 +2942,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param applyModifiersToOverride If {@linkcode thresholdOverride} is set and this is true, will apply Ability Charm to {@linkcode thresholdOverride} * @returns `true` if the Pokemon has been set to have its hidden ability, `false` otherwise */ - public tryRerollHiddenAbilitySeed( - thresholdOverride?: number, - applyModifiersToOverride?: boolean, - ): boolean { + public tryRerollHiddenAbilitySeed(thresholdOverride?: number, applyModifiersToOverride?: boolean): boolean { if (!this.species.abilityHidden) { return false; } @@ -3362,11 +2952,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { haThreshold.value = thresholdOverride; } if (!this.hasTrainer()) { - globalScene.applyModifiers( - HiddenAbilityRateBoosterModifier, - true, - haThreshold, - ); + globalScene.applyModifiers(HiddenAbilityRateBoosterModifier, true, haThreshold); } } else { haThreshold.value = thresholdOverride; @@ -3380,15 +2966,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } public generateFusionSpecies(forStarter?: boolean): void { - const hiddenAbilityChance = new NumberHolder( - BASE_HIDDEN_ABILITY_CHANCE, - ); + const hiddenAbilityChance = new NumberHolder(BASE_HIDDEN_ABILITY_CHANCE); if (!this.hasTrainer()) { - globalScene.applyModifiers( - HiddenAbilityRateBoosterModifier, - true, - hiddenAbilityChance, - ); + globalScene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance); } const hasHiddenAbility = !randSeedInt(hiddenAbilityChance.value); @@ -3411,30 +2991,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { let fusionOverride: PokemonSpecies | undefined = undefined; - if ( - forStarter && - this instanceof PlayerPokemon && - Overrides.STARTER_FUSION_SPECIES_OVERRIDE - ) { - fusionOverride = getPokemonSpecies( - Overrides.STARTER_FUSION_SPECIES_OVERRIDE, - ); - } else if ( - this instanceof EnemyPokemon && - Overrides.OPP_FUSION_SPECIES_OVERRIDE - ) { + if (forStarter && this instanceof PlayerPokemon && Overrides.STARTER_FUSION_SPECIES_OVERRIDE) { + fusionOverride = getPokemonSpecies(Overrides.STARTER_FUSION_SPECIES_OVERRIDE); + } else if (this instanceof EnemyPokemon && Overrides.OPP_FUSION_SPECIES_OVERRIDE) { fusionOverride = getPokemonSpecies(Overrides.OPP_FUSION_SPECIES_OVERRIDE); } this.fusionSpecies = fusionOverride ?? - globalScene.randomSpecies( - globalScene.currentBattle?.waveIndex || 0, - this.level, - false, - filter, - true, - ); + globalScene.randomSpecies(globalScene.currentBattle?.waveIndex || 0, this.level, false, filter, true); this.fusionAbilityIndex = this.fusionSpecies.abilityHidden && hasHiddenAbility ? 2 @@ -3486,10 +3051,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { let movePool: [Moves, number][] = []; const allLevelMoves = this.getLevelMoves(1, true, true); if (!allLevelMoves) { - console.warn( - "Error encountered trying to generate moveset for:", - this.species.name, - ); + console.warn("Error encountered trying to generate moveset for:", this.species.name); return; } @@ -3504,13 +3066,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { weight = 50; } // Assume level 1 moves with 80+ BP are "move reminder" moves and bump their weight. Trainers use actual relearn moves. - if (weight === 1 && allMoves[levelMove[1]].power >= 80 || weight === RELEARN_MOVE && this.hasTrainer()) { + if ((weight === 1 && allMoves[levelMove[1]].power >= 80) || (weight === RELEARN_MOVE && this.hasTrainer())) { weight = 40; } - if ( - !movePool.some(m => m[0] === levelMove[1]) && - !allMoves[levelMove[1]].name.endsWith(" (N)") - ) { + if (!movePool.some(m => m[0] === levelMove[1]) && !allMoves[levelMove[1]].name.endsWith(" (N)")) { movePool.push([levelMove[1], weight]); } } @@ -3531,30 +3090,17 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { compatible = true; break; } - } else if ( - p === this.species.speciesId || - (this.fusionSpecies && p === this.fusionSpecies.speciesId) - ) { + } else if (p === this.species.speciesId || (this.fusionSpecies && p === this.fusionSpecies.speciesId)) { compatible = true; break; } } - if ( - compatible && - !movePool.some(m => m[0] === moveId) && - !allMoves[moveId].name.endsWith(" (N)") - ) { + if (compatible && !movePool.some(m => m[0] === moveId) && !allMoves[moveId].name.endsWith(" (N)")) { if (tmPoolTiers[moveId] === ModifierTier.COMMON && this.level >= 15) { movePool.push([moveId, 4]); - } else if ( - tmPoolTiers[moveId] === ModifierTier.GREAT && - this.level >= 30 - ) { + } else if (tmPoolTiers[moveId] === ModifierTier.GREAT && this.level >= 30) { movePool.push([moveId, 8]); - } else if ( - tmPoolTiers[moveId] === ModifierTier.ULTRA && - this.level >= 50 - ) { + } else if (tmPoolTiers[moveId] === ModifierTier.ULTRA && this.level >= 50) { movePool.push([moveId, 14]); } } @@ -3564,10 +3110,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.level >= 60) { for (let i = 0; i < 3; i++) { const moveId = speciesEggMoves[this.species.getRootSpeciesId()][i]; - if ( - !movePool.some(m => m[0] === moveId) && - !allMoves[moveId].name.endsWith(" (N)") - ) { + if (!movePool.some(m => m[0] === moveId) && !allMoves[moveId].name.endsWith(" (N)")) { movePool.push([moveId, 40]); } } @@ -3583,17 +3126,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } if (this.fusionSpecies) { for (let i = 0; i < 3; i++) { - const moveId = - speciesEggMoves[this.fusionSpecies.getRootSpeciesId()][i]; - if ( - !movePool.some(m => m[0] === moveId) && - !allMoves[moveId].name.endsWith(" (N)") - ) { + const moveId = speciesEggMoves[this.fusionSpecies.getRootSpeciesId()][i]; + if (!movePool.some(m => m[0] === moveId) && !allMoves[moveId].name.endsWith(" (N)")) { movePool.push([moveId, 40]); } } - const moveId = - speciesEggMoves[this.fusionSpecies.getRootSpeciesId()][3]; + const moveId = speciesEggMoves[this.fusionSpecies.getRootSpeciesId()][3]; // No rare egg moves before e4 if ( this.level >= 170 && @@ -3612,35 +3150,21 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { movePool = movePool.filter(m => !allMoves[m[0]].hasAttr(SacrificialAttr) && !allMoves[m[0]].hasAttr(HpSplitAttr)); } // No one gets Memento or Final Gambit - movePool = movePool.filter( - m => !allMoves[m[0]].hasAttr(SacrificialAttrOnHit), - ); + movePool = movePool.filter(m => !allMoves[m[0]].hasAttr(SacrificialAttrOnHit)); if (this.hasTrainer()) { // Trainers never get OHKO moves movePool = movePool.filter(m => !allMoves[m[0]].hasAttr(OneHitKOAttr)); // Half the weight of self KO moves - movePool = movePool.map(m => [ - m[0], - m[1] * (allMoves[m[0]].hasAttr(SacrificialAttr) ? 0.5 : 1), - ]); + movePool = movePool.map(m => [m[0], m[1] * (allMoves[m[0]].hasAttr(SacrificialAttr) ? 0.5 : 1)]); // Trainers get a weight bump to stat buffing moves movePool = movePool.map(m => [ m[0], - m[1] * - (allMoves[m[0]] - .getAttrs(StatStageChangeAttr) - .some(a => a.stages > 1 && a.selfTarget) - ? 1.25 - : 1), + m[1] * (allMoves[m[0]].getAttrs(StatStageChangeAttr).some(a => a.stages > 1 && a.selfTarget) ? 1.25 : 1), ]); // Trainers get a weight decrease to multiturn moves movePool = movePool.map(m => [ m[0], - m[1] * - (!!allMoves[m[0]].isChargingMove() || - !!allMoves[m[0]].hasAttr(RechargeAttr) - ? 0.7 - : 1), + m[1] * (!!allMoves[m[0]].isChargingMove() || !!allMoves[m[0]].hasAttr(RechargeAttr) ? 0.7 : 1), ]); } @@ -3648,10 +3172,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // Caps max power at 90 to avoid something like hyper beam ruining the stats. // This is a pretty soft weighting factor, although it is scaled with the weight multiplier. const maxPower = Math.min( - movePool.reduce( - (v, m) => Math.max(allMoves[m[0]].calculateEffectivePower(), v), - 40, - ), + movePool.reduce((v, m) => Math.max(allMoves[m[0]].calculateEffectivePower(), v), 40), 90, ); movePool = movePool.map(m => [ @@ -3659,10 +3180,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { m[1] * (allMoves[m[0]].category === MoveCategory.STATUS ? 1 - : Math.max( - Math.min(allMoves[m[0]].calculateEffectivePower() / maxPower, 1), - 0.5, - )), + : Math.max(Math.min(allMoves[m[0]].calculateEffectivePower() / maxPower, 1), 0.5)), ]); // Weight damaging moves against the lower stat. This uses a non-linear relationship. @@ -3670,16 +3188,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // One third weight at ~1.58x higher, one quarter weight at ~1.73x higher, one fifth at ~1.87x, and one tenth at ~2.35x higher. const atk = this.getStat(Stat.ATK); const spAtk = this.getStat(Stat.SPATK); - const worseCategory: MoveCategory = - atk > spAtk ? MoveCategory.SPECIAL : MoveCategory.PHYSICAL; - const statRatio = - worseCategory === MoveCategory.PHYSICAL ? atk / spAtk : spAtk / atk; + const worseCategory: MoveCategory = atk > spAtk ? MoveCategory.SPECIAL : MoveCategory.PHYSICAL; + const statRatio = worseCategory === MoveCategory.PHYSICAL ? atk / spAtk : spAtk / atk; movePool = movePool.map(m => [ m[0], - m[1] * - (allMoves[m[0]].category === worseCategory - ? Math.min(Math.pow(statRatio, 3) * 1.3, 1) - : 1), + m[1] * (allMoves[m[0]].category === worseCategory ? Math.min(Math.pow(statRatio, 3) * 1.3, 1) : 1), ]); /** The higher this is the more the game weights towards higher level moves. At `0` all moves are equal weight. */ @@ -3687,16 +3200,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.isBoss()) { weightMultiplier += 0.4; } - const baseWeights: [Moves, number][] = movePool.map(m => [ - m[0], - Math.ceil(Math.pow(m[1], weightMultiplier) * 100), - ]); + const baseWeights: [Moves, number][] = movePool.map(m => [m[0], Math.ceil(Math.pow(m[1], weightMultiplier) * 100)]); // All Pokemon force a STAB move first const stabMovePool = baseWeights.filter( - m => - allMoves[m[0]].category !== MoveCategory.STATUS && - this.isOfType(allMoves[m[0]].type), + m => allMoves[m[0]].category !== MoveCategory.STATUS && this.isOfType(allMoves[m[0]].type), ); if (stabMovePool.length) { @@ -3709,41 +3217,32 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.moveset.push(new PokemonMove(stabMovePool[index][0], 0, 0)); } - while ( - baseWeights.length > this.moveset.length && - this.moveset.length < 4 - ) { + while (baseWeights.length > this.moveset.length && this.moveset.length < 4) { if (this.hasTrainer()) { // Sqrt the weight of any damaging moves with overlapping types. This is about a 0.05 - 0.1 multiplier. // Other damaging moves 2x weight if 0-1 damaging moves, 0.5x if 2, 0.125x if 3. These weights get 20x if STAB. // Status moves remain unchanged on weight, this encourages 1-2 movePool = baseWeights - .filter(m => !this.moveset.some( - mo => - m[0] === mo.moveId || - (allMoves[m[0]].hasAttr(SacrificialAttr) && mo.getMove().hasAttr(SacrificialAttr)) // Only one self-KO move allowed - )) + .filter( + m => + !this.moveset.some( + mo => + m[0] === mo.moveId || + (allMoves[m[0]].hasAttr(SacrificialAttr) && mo.getMove().hasAttr(SacrificialAttr)), // Only one self-KO move allowed + ), + ) .map(m => { let ret: number; if ( this.moveset.some( - mo => - mo.getMove().category !== MoveCategory.STATUS && - mo.getMove().type === allMoves[m[0]].type, + mo => mo.getMove().category !== MoveCategory.STATUS && mo.getMove().type === allMoves[m[0]].type, ) ) { ret = Math.ceil(Math.sqrt(m[1])); } else if (allMoves[m[0]].category !== MoveCategory.STATUS) { ret = Math.ceil( (m[1] / - Math.max( - Math.pow( - 4, - this.moveset.filter(mo => (mo.getMove().power ?? 0) > 1) - .length, - ) / 8, - 0.5, - )) * + Math.max(Math.pow(4, this.moveset.filter(mo => (mo.getMove().power ?? 0) > 1).length) / 8, 0.5)) * (this.isOfType(allMoves[m[0]].type) ? 20 : 1), ); } else { @@ -3753,11 +3252,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { }); } else { // Non-trainer pokemon just use normal weights - movePool = baseWeights.filter(m => !this.moveset.some( - mo => - m[0] === mo.moveId || - (allMoves[m[0]].hasAttr(SacrificialAttr) && mo.getMove().hasAttr(SacrificialAttr)) // Only one self-KO move allowed - )); + movePool = baseWeights.filter( + m => + !this.moveset.some( + mo => + m[0] === mo.moveId || + (allMoves[m[0]].hasAttr(SacrificialAttr) && mo.getMove().hasAttr(SacrificialAttr)), // Only one self-KO move allowed + ), + ); } const totalWeight = movePool.reduce((v, m) => v + m[1], 0); let rand = randSeedInt(totalWeight); @@ -3774,18 +3276,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { !globalScene.currentBattle?.isBattleMysteryEncounter() || !globalScene.currentBattle?.mysteryEncounter ) { - globalScene.triggerPokemonFormChange( - this, - SpeciesFormChangeMoveLearnedTrigger, - ); + globalScene.triggerPokemonFormChange(this, SpeciesFormChangeMoveLearnedTrigger); } } public trySelectMove(moveIndex: number, ignorePp?: boolean): boolean { - const move = - this.getMoveset().length > moveIndex - ? this.getMoveset()[moveIndex] - : null; + const move = this.getMoveset().length > moveIndex ? this.getMoveset()[moveIndex] : null; return move?.isUsable(this, ignorePp) ?? false; } @@ -3794,11 +3290,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const otherBattleInfo = globalScene.fieldUI .getAll() .slice(0, 4) - .filter( - ui => - ui instanceof BattleInfo && - (ui as BattleInfo) instanceof PlayerBattleInfo === this.isPlayer(), - ) + .filter(ui => ui instanceof BattleInfo && (ui as BattleInfo) instanceof PlayerBattleInfo === this.isPlayer()) .find(() => true); if (!otherBattleInfo || !this.getFieldIndex()) { globalScene.fieldUI.sendToBack(this.battleInfo); @@ -3806,10 +3298,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } else { globalScene.fieldUI.moveAbove(this.battleInfo, otherBattleInfo); } - this.battleInfo.setX( - this.battleInfo.x + - (this.isPlayer() ? 150 : !this.isBoss() ? -150 : -198), - ); + this.battleInfo.setX(this.battleInfo.x + (this.isPlayer() ? 150 : !this.isBoss() ? -150 : -198)); this.battleInfo.setVisible(true); if (this.isPlayer()) { this.battleInfo.expMaskRect.x += 150; @@ -3825,7 +3314,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { hideInfo(): Promise { return new Promise(resolve => { - if (this.battleInfo && this.battleInfo.visible) { + if (this.battleInfo?.visible) { globalScene.tweens.add({ targets: [this.battleInfo, this.battleInfo.expMaskRect], x: this.isPlayer() ? "+=150" : `-=${!this.isBoss() ? 150 : 246}`, @@ -3836,10 +3325,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.battleInfo.expMaskRect.x -= 150; } this.battleInfo.setVisible(false); - this.battleInfo.setX( - this.battleInfo.x - - (this.isPlayer() ? 150 : !this.isBoss() ? -150 : -198), - ); + this.battleInfo.setX(this.battleInfo.x - (this.isPlayer() ? 150 : !this.isBoss() ? -150 : -198)); resolve(); }, }); @@ -3886,25 +3372,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const maxExpLevel = globalScene.getMaxExpLevel(ignoreLevelCap); const initialExp = this.exp; this.exp += exp; - while ( - this.level < maxExpLevel && - this.exp >= getLevelTotalExp(this.level + 1, this.species.growthRate) - ) { + while (this.level < maxExpLevel && this.exp >= getLevelTotalExp(this.level + 1, this.species.growthRate)) { this.level++; } if (this.level >= maxExpLevel) { - console.log( - initialExp, - this.exp, - getLevelTotalExp(this.level, this.species.growthRate), - ); - this.exp = Math.max( - getLevelTotalExp(this.level, this.species.growthRate), - initialExp, - ); + console.log(initialExp, this.exp, getLevelTotalExp(this.level, this.species.growthRate)); + this.exp = Math.max(getLevelTotalExp(this.level, this.species.growthRate), initialExp); } - this.levelExp = - this.exp - getLevelTotalExp(this.level, this.species.growthRate); + this.levelExp = this.exp - getLevelTotalExp(this.level, this.species.growthRate); } /** @@ -3918,7 +3393,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { getOpponent(targetIndex: number): Pokemon | null { const ret = this.getOpponents()[targetIndex]; - if (ret.summonData) { // TODO: why does this check for summonData and can we remove it? + // TODO: why does this check for summonData and can we remove it? + if (ret.summonData) { return ret; } return null; @@ -3930,11 +3406,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param onField - whether to also check if the pokemon is currently on the field (defaults to true) */ getOpponents(onField = true): Pokemon[] { - return ( - (this.isPlayer() - ? globalScene.getEnemyField() - : globalScene.getPlayerField()) as Pokemon[] - ).filter(p => p.isActive(onField)); + return ((this.isPlayer() ? globalScene.getEnemyField() : globalScene.getPlayerField()) as Pokemon[]).filter(p => + p.isActive(onField), + ); } getOpponentDescriptor(): string { @@ -3942,17 +3416,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (opponents.length === 1) { return opponents[0].name; } - return this.isPlayer() - ? i18next.t("arenaTag:opposingTeam") - : i18next.t("arenaTag:yourTeam"); + return this.isPlayer() ? i18next.t("arenaTag:opposingTeam") : i18next.t("arenaTag:yourTeam"); } getAlly(): Pokemon | undefined { - return ( - this.isPlayer() - ? globalScene.getPlayerField() - : globalScene.getEnemyField() - )[this.getFieldIndex() ? 0 : 1]; + return (this.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField())[this.getFieldIndex() ? 0 : 1]; } /** @@ -3961,9 +3429,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns An array of Pokémon on the allied field. */ getAlliedField(): Pokemon[] { - return this instanceof PlayerPokemon - ? globalScene.getPlayerField() - : globalScene.getEnemyField(); + return this instanceof PlayerPokemon ? globalScene.getPlayerField() : globalScene.getEnemyField(); } /** @@ -4006,37 +3472,17 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } if (!ignoreOppAbility) { - applyAbAttrs( - IgnoreOpponentStatStagesAbAttr, - opponent, - null, - simulated, - stat, - ignoreStatStage, - ); + applyAbAttrs(IgnoreOpponentStatStagesAbAttr, opponent, null, simulated, stat, ignoreStatStage); } if (move) { - applyMoveAttrs( - IgnoreOpponentStatStagesAttr, - this, - opponent, - move, - ignoreStatStage, - ); + applyMoveAttrs(IgnoreOpponentStatStagesAttr, this, opponent, move, ignoreStatStage); } } if (!ignoreStatStage.value) { - const statStageMultiplier = new NumberHolder( - Math.max(2, 2 + statStage.value) / Math.max(2, 2 - statStage.value), - ); + const statStageMultiplier = new NumberHolder(Math.max(2, 2 + statStage.value) / Math.max(2, 2 - statStage.value)); if (!ignoreHeldItems) { - globalScene.applyModifiers( - TempStatStageBoosterModifier, - this.isPlayer(), - stat, - statStageMultiplier, - ); + globalScene.applyModifiers(TempStatStageBoosterModifier, this.isPlayer(), stat, statStageMultiplier); } return Math.min(statStageMultiplier.value, 4); } @@ -4060,47 +3506,18 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } const userAccStage = new NumberHolder(this.getStatStage(Stat.ACC)); - const targetEvaStage = new NumberHolder( - target.getStatStage(Stat.EVA), - ); + const targetEvaStage = new NumberHolder(target.getStatStage(Stat.EVA)); const ignoreAccStatStage = new BooleanHolder(false); const ignoreEvaStatStage = new BooleanHolder(false); - applyAbAttrs( - IgnoreOpponentStatStagesAbAttr, - target, - null, - false, - Stat.ACC, - ignoreAccStatStage, - ); - applyAbAttrs( - IgnoreOpponentStatStagesAbAttr, - this, - null, - false, - Stat.EVA, - ignoreEvaStatStage, - ); - applyMoveAttrs( - IgnoreOpponentStatStagesAttr, - this, - target, - sourceMove, - ignoreEvaStatStage, - ); + applyAbAttrs(IgnoreOpponentStatStagesAbAttr, target, null, false, Stat.ACC, ignoreAccStatStage); + applyAbAttrs(IgnoreOpponentStatStagesAbAttr, this, null, false, Stat.EVA, ignoreEvaStatStage); + applyMoveAttrs(IgnoreOpponentStatStagesAttr, this, target, sourceMove, ignoreEvaStatStage); - globalScene.applyModifiers( - TempStatStageBoosterModifier, - this.isPlayer(), - Stat.ACC, - userAccStage, - ); + globalScene.applyModifiers(TempStatStageBoosterModifier, this.isPlayer(), Stat.ACC, userAccStage); - userAccStage.value = ignoreAccStatStage.value - ? 0 - : Math.min(userAccStage.value, 6); + userAccStage.value = ignoreAccStatStage.value ? 0 : Math.min(userAccStage.value, 6); targetEvaStage.value = ignoreEvaStatStage.value ? 0 : targetEvaStage.value; if (target.findTag(t => t instanceof ExposedTag)) { @@ -4115,22 +3532,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { : 3 / (3 + Math.min(targetEvaStage.value - userAccStage.value, 6)); } - applyStatMultiplierAbAttrs( - StatMultiplierAbAttr, - this, - Stat.ACC, - accuracyMultiplier, - false, - sourceMove, - ); + applyStatMultiplierAbAttrs(StatMultiplierAbAttr, this, Stat.ACC, accuracyMultiplier, false, sourceMove); const evasionMultiplier = new NumberHolder(1); - applyStatMultiplierAbAttrs( - StatMultiplierAbAttr, - target, - Stat.EVA, - evasionMultiplier, - ); + applyStatMultiplierAbAttrs(StatMultiplierAbAttr, target, Stat.EVA, evasionMultiplier); const ally = this.getAlly(); if (!isNullOrUndefined(ally)) { @@ -4156,8 +3561,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param simulated - if `true`, suppresses changes to game state during calculation (defaults to `true`). * @returns The move's base damage against this Pokemon when used by the source Pokemon. */ - getBaseDamage( - { + getBaseDamage({ source, move, moveCategory, @@ -4166,8 +3570,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ignoreAllyAbility = false, ignoreSourceAllyAbility = false, isCritical = false, - simulated = true}: getBaseDamageParams - ): number { + simulated = true, + }: getBaseDamageParams): number { const isPhysical = moveCategory === MoveCategory.PHYSICAL; /** A base damage multiplier based on the source's level */ @@ -4216,25 +3620,16 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * The attack's base damage, as determined by the source's level, move power * and Attack stat as well as this Pokemon's Defense stat */ - const baseDamage = - (levelMultiplier * power * sourceAtk.value) / targetDef.value / 50 + 2; + const baseDamage = (levelMultiplier * power * sourceAtk.value) / targetDef.value / 50 + 2; /** Debug message for non-simulated calls (i.e. when damage is actually dealt) */ if (!simulated) { - console.log( - "base damage", - baseDamage, - move.name, - power, - sourceAtk.value, - targetDef.value, - ); + console.log("base damage", baseDamage, move.name, power, sourceAtk.value, targetDef.value); } return baseDamage; } - /** Determine the STAB multiplier for a move used against this pokemon. * * @param source - The attacking {@linkcode Pokemon} @@ -4258,31 +3653,20 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { stabMultiplier.value += 0.5; } - applyMoveAttrs( - CombinedPledgeStabBoostAttr, - source, - this, - move, - stabMultiplier, - ); + applyMoveAttrs(CombinedPledgeStabBoostAttr, source, this, move, stabMultiplier); if (!ignoreSourceAbility) { applyAbAttrs(StabBoostAbAttr, source, null, simulated, stabMultiplier); } - if ( - source.isTerastallized && - sourceTeraType === moveType && - moveType !== PokemonType.STELLAR - ) { + if (source.isTerastallized && sourceTeraType === moveType && moveType !== PokemonType.STELLAR) { stabMultiplier.value += 0.5; } if ( source.isTerastallized && source.getTeraType() === PokemonType.STELLAR && - (!source.stellarTypesBoosted.includes(moveType) || - source.hasSpecies(Species.TERAPAGOS)) + (!source.stellarTypesBoosted.includes(moveType) || source.hasSpecies(Species.TERAPAGOS)) ) { stabMultiplier.value += matchesSourceType ? 0.5 : 0.2; } @@ -4303,31 +3687,22 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param effectiveness If defined, used in place of calculated effectiveness values * @returns The {@linkcode DamageCalculationResult} */ - getAttackDamage( - { - source, - move, - ignoreAbility = false, - ignoreSourceAbility = false, - ignoreAllyAbility = false, - ignoreSourceAllyAbility = false, - isCritical = false, - simulated = true, - effectiveness}: getAttackDamageParams, - ): DamageCalculationResult { + getAttackDamage({ + source, + move, + ignoreAbility = false, + ignoreSourceAbility = false, + ignoreAllyAbility = false, + ignoreSourceAllyAbility = false, + isCritical = false, + simulated = true, + effectiveness, + }: getAttackDamageParams): DamageCalculationResult { const damage = new NumberHolder(0); - const defendingSide = this.isPlayer() - ? ArenaTagSide.PLAYER - : ArenaTagSide.ENEMY; + const defendingSide = this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; const variableCategory = new NumberHolder(move.category); - applyMoveAttrs( - VariableMoveCategoryAttr, - source, - this, - move, - variableCategory, - ); + applyMoveAttrs(VariableMoveCategoryAttr, source, this, move, variableCategory); const moveCategory = variableCategory.value as MoveCategory; /** The move's type after type-changing effects are applied */ @@ -4343,13 +3718,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * * Note that the source's abilities are not ignored here */ - const typeMultiplier = effectiveness ?? this.getMoveEffectiveness( - source, - move, - ignoreAbility, - simulated, - cancelled, - ); + const typeMultiplier = + effectiveness ?? this.getMoveEffectiveness(source, move, ignoreAbility, simulated, cancelled); const isPhysical = moveCategory === MoveCategory.PHYSICAL; @@ -4357,21 +3727,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const arenaAttackTypeMultiplier = new NumberHolder( globalScene.arena.getAttackTypeMultiplier(moveType, source.isGrounded()), ); - applyMoveAttrs( - IgnoreWeatherTypeDebuffAttr, - source, - this, - move, - arenaAttackTypeMultiplier, - ); + applyMoveAttrs(IgnoreWeatherTypeDebuffAttr, source, this, move, arenaAttackTypeMultiplier); const isTypeImmune = typeMultiplier * arenaAttackTypeMultiplier.value === 0; if (cancelled.value || isTypeImmune) { return { cancelled: cancelled.value, - result: - move.id === Moves.SHEER_COLD ? HitResult.IMMUNE : HitResult.NO_EFFECT, + result: move.id === Moves.SHEER_COLD ? HitResult.IMMUNE : HitResult.NO_EFFECT, damage: 0, }; } @@ -4389,9 +3752,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { null, multiLensMultiplier, ); - fixedDamage.value = toDmgValue( - fixedDamage.value * multiLensMultiplier.value, - ); + fixedDamage.value = toDmgValue(fixedDamage.value * multiLensMultiplier.value); return { cancelled: false, @@ -4468,10 +3829,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * A multiplier for random damage spread in the range [0.85, 1] * This is always 1 for simulated calls. */ - const randomMultiplier = simulated - ? 1 - : this.randBattleSeedIntRange(85, 100) / 100; - + const randomMultiplier = simulated ? 1 : this.randBattleSeedIntRange(85, 100) / 100; /** A damage multiplier for when the attack is of the attacker's type and/or Tera type. */ const stabMultiplier = this.calculateStabMultiplier(source, move, ignoreSourceAbility, simulated); @@ -4486,12 +3844,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ) { const burnDamageReductionCancelled = new BooleanHolder(false); if (!ignoreSourceAbility) { - applyAbAttrs( - BypassBurnDamageReductionAbAttr, - source, - burnDamageReductionCancelled, - simulated, - ); + applyAbAttrs(BypassBurnDamageReductionAbAttr, source, burnDamageReductionCancelled, simulated); } if (!burnDamageReductionCancelled.value) { burnMultiplier = 0.5; @@ -4504,13 +3857,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // Critical hits should bypass screens if (!isCritical) { globalScene.arena.applyTagsForSide( - WeakenMoveScreenTag, - defendingSide, - simulated, - source, - moveCategory, - screenMultiplier, - ); + WeakenMoveScreenTag, + defendingSide, + simulated, + source, + moveCategory, + screenMultiplier, + ); } /** @@ -4555,14 +3908,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** Doubles damage if the attacker has Tinted Lens and is using a resisted move */ if (!ignoreSourceAbility) { - applyPreAttackAbAttrs( - DamageBoostAbAttr, - source, - this, - move, - simulated, - damage, - ); + applyPreAttackAbAttrs(DamageBoostAbAttr, source, this, move, simulated, damage); } /** Apply the enemy's Damage and Resistance tokens */ @@ -4575,28 +3921,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** Apply this Pokemon's post-calc defensive modifiers (e.g. Fur Coat) */ if (!ignoreAbility) { - applyPreDefendAbAttrs( - ReceivedMoveDamageMultiplierAbAttr, - this, - source, - move, - cancelled, - simulated, - damage, - ); + applyPreDefendAbAttrs(ReceivedMoveDamageMultiplierAbAttr, this, source, move, cancelled, simulated, damage); const ally = this.getAlly(); /** Additionally apply friend guard damage reduction if ally has it. */ if (globalScene.currentBattle.double && !isNullOrUndefined(ally) && ally.isActive(true)) { - applyPreDefendAbAttrs( - AlliedFieldDamageReductionAbAttr, - ally, - source, - move, - cancelled, - simulated, - damage, - ); + applyPreDefendAbAttrs(AlliedFieldDamageReductionAbAttr, ally, source, move, cancelled, simulated, damage); } } @@ -4604,15 +3934,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { applyMoveAttrs(ModifiedDamageAttr, source, this, move, damage); if (this.isFullHp() && !ignoreAbility) { - applyPreDefendAbAttrs( - PreDefendFullHpEndureAbAttr, - this, - source, - move, - cancelled, - false, - damage, - ); + applyPreDefendAbAttrs(PreDefendFullHpEndureAbAttr, this, source, move, cancelled, false, damage); } // debug message for when damage is applied (i.e. not simulated) @@ -4641,8 +3963,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param move - The {@linkcode Move} being used * @param simulated - If `true`, suppresses changes to game state during calculation (defaults to `true`) * @returns whether the move critically hits the pokemon - */ - getCriticalHitResult(source: Pokemon, move: Move, simulated: boolean = true): boolean { + */ + getCriticalHitResult(source: Pokemon, move: Move, simulated = true): boolean { const defendingSide = this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; const noCritTag = globalScene.arena.getTagOnSide(NoCritTag, defendingSide); if (noCritTag || Overrides.NEVER_CRIT_OVERRIDE || move.hasAttr(FixedDamageAttr)) { @@ -4656,16 +3978,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { applyMoveAttrs(CritOnlyAttr, source, this, move, isCritical); applyAbAttrs(ConditionalCritAbAttr, source, null, simulated, isCritical, this, move); if (!isCritical.value) { - const critChance = [24, 8, 2, 1][ - Math.max(0, Math.min(this.getCritStage(source, move), 3)) - ]; + const critChance = [24, 8, 2, 1][Math.max(0, Math.min(this.getCritStage(source, move), 3))]; isCritical.value = critChance === 1 || !globalScene.randBattleSeedInt(critChance); } applyAbAttrs(BlockCritAbAttr, this, null, simulated, isCritical); return isCritical.value; - } /** @@ -4676,12 +3995,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param ignoreFaintPhas flag on whether to add FaintPhase if pokemon after applying damage faints * @returns integer representing damage dealt */ - damage( - damage: number, - _ignoreSegments = false, - preventEndure = false, - ignoreFaintPhase = false, - ): number { + damage(damage: number, _ignoreSegments = false, preventEndure = false, ignoreFaintPhase = false): number { if (this.isFainted()) { return 0; } @@ -4697,12 +4011,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { surviveDamage.value = this.lapseTag(BattlerTagType.ENDURE_TOKEN); } if (!surviveDamage.value) { - globalScene.applyModifiers( - SurviveDamageModifier, - this.isPlayer(), - this, - surviveDamage, - ); + globalScene.applyModifiers(SurviveDamageModifier, this.isPlayer(), this, surviveDamage); } if (surviveDamage.value) { damage = this.hp - 1; @@ -4720,9 +4029,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * Once the MoveEffectPhase is over (and calls it's .end() function, shiftPhase() will reset the PhaseQueueSplice via clearPhaseQueueSplice() ) */ globalScene.setPhaseQueueSplice(); - globalScene.unshiftPhase( - new FaintPhase(this.getBattlerIndex(), preventEndure), - ); + globalScene.unshiftPhase(new FaintPhase(this.getBattlerIndex(), preventEndure)); this.destroySubstitute(); this.lapseTag(BattlerTagType.COMMANDED); } @@ -4741,39 +4048,29 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param ignoreFaintPhase boolean to ignore adding a FaintPhase, passsed to damage() * @returns integer of damage done */ - damageAndUpdate(damage: number, + damageAndUpdate( + damage: number, { result = HitResult.EFFECTIVE, isCritical = false, ignoreSegments = false, ignoreFaintPhase = false, source = undefined, - }: - { - result?: DamageResult, - isCritical?: boolean, - ignoreSegments?: boolean, - ignoreFaintPhase?: boolean, - source?: Pokemon, - } = {} + }: { + result?: DamageResult; + isCritical?: boolean; + ignoreSegments?: boolean; + ignoreFaintPhase?: boolean; + source?: Pokemon; + } = {}, ): number { - const isIndirectDamage = [ HitResult.INDIRECT, HitResult.INDIRECT_KO ].includes(result); - const damagePhase = new DamageAnimPhase( - this.getBattlerIndex(), - damage, - result as DamageResult, - isCritical - ); + const isIndirectDamage = [HitResult.INDIRECT, HitResult.INDIRECT_KO].includes(result); + const damagePhase = new DamageAnimPhase(this.getBattlerIndex(), damage, result as DamageResult, isCritical); globalScene.unshiftPhase(damagePhase); if (this.switchOutStatus && source) { damage = 0; } - damage = this.damage( - damage, - ignoreSegments, - isIndirectDamage, - ignoreFaintPhase, - ); + damage = this.damage(damage, ignoreSegments, isIndirectDamage, ignoreFaintPhase); // Ensure the battle-info bar's HP is updated, though only if the battle info is visible // TODO: When battle-info UI is refactored, make this only update the HP bar if (this.battleInfo.visible) { @@ -4786,15 +4083,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * Multi-hits are handled in move-effect-phase.ts for PostDamageAbAttr */ if (!source || source.turnData.hitCount <= 1) { - applyPostDamageAbAttrs( - PostDamageAbAttr, - this, - damage, - this.hasPassive(), - false, - [], - source, - ); + applyPostDamageAbAttrs(PostDamageAbAttr, this, damage, this.hasPassive(), false, [], source); } return damage; } @@ -4810,13 +4099,28 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } isMax(): boolean { - const maxForms = [ SpeciesFormKey.GIGANTAMAX, SpeciesFormKey.GIGANTAMAX_RAPID, SpeciesFormKey.GIGANTAMAX_SINGLE, SpeciesFormKey.ETERNAMAX ] as string[]; - return maxForms.includes(this.getFormKey()) || (!!this.getFusionFormKey() && maxForms.includes(this.getFusionFormKey()!)); + const maxForms = [ + SpeciesFormKey.GIGANTAMAX, + SpeciesFormKey.GIGANTAMAX_RAPID, + SpeciesFormKey.GIGANTAMAX_SINGLE, + SpeciesFormKey.ETERNAMAX, + ] as string[]; + return ( + maxForms.includes(this.getFormKey()) || (!!this.getFusionFormKey() && maxForms.includes(this.getFusionFormKey()!)) + ); } isMega(): boolean { - const megaForms = [ SpeciesFormKey.MEGA, SpeciesFormKey.MEGA_X, SpeciesFormKey.MEGA_Y, SpeciesFormKey.PRIMAL ] as string[]; - return megaForms.includes(this.getFormKey()) || (!!this.getFusionFormKey() && megaForms.includes(this.getFusionFormKey()!)); + const megaForms = [ + SpeciesFormKey.MEGA, + SpeciesFormKey.MEGA_X, + SpeciesFormKey.MEGA_Y, + SpeciesFormKey.PRIMAL, + ] as string[]; + return ( + megaForms.includes(this.getFormKey()) || + (!!this.getFusionFormKey() && megaForms.includes(this.getFusionFormKey()!)) + ); } canAddTag(tagType: BattlerTagType): boolean { @@ -4827,35 +4131,17 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const stubTag = new BattlerTag(tagType, 0, 0); const cancelled = new BooleanHolder(false); - applyPreApplyBattlerTagAbAttrs( - BattlerTagImmunityAbAttr, - this, - stubTag, - cancelled, - true, - ); + applyPreApplyBattlerTagAbAttrs(BattlerTagImmunityAbAttr, this, stubTag, cancelled, true); const userField = this.getAlliedField(); userField.forEach(pokemon => - applyPreApplyBattlerTagAbAttrs( - UserFieldBattlerTagImmunityAbAttr, - pokemon, - stubTag, - cancelled, - true, - this, - ), + applyPreApplyBattlerTagAbAttrs(UserFieldBattlerTagImmunityAbAttr, pokemon, stubTag, cancelled, true, this), ); return !cancelled.value; } - addTag( - tagType: BattlerTagType, - turnCount = 0, - sourceMove?: Moves, - sourceId?: number, - ): boolean { + addTag(tagType: BattlerTagType, turnCount = 0, sourceMove?: Moves, sourceId?: number): boolean { const existingTag = this.getTag(tagType); if (existingTag) { existingTag.onOverlap(this); @@ -4865,25 +4151,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const newTag = getBattlerTag(tagType, turnCount, sourceMove!, sourceId!); // TODO: are the bangs correct? const cancelled = new BooleanHolder(false); - applyPreApplyBattlerTagAbAttrs( - BattlerTagImmunityAbAttr, - this, - newTag, - cancelled, - ); + applyPreApplyBattlerTagAbAttrs(BattlerTagImmunityAbAttr, this, newTag, cancelled); if (cancelled.value) { return false; } for (const pokemon of this.getAlliedField()) { - applyPreApplyBattlerTagAbAttrs( - UserFieldBattlerTagImmunityAbAttr, - pokemon, - newTag, - cancelled, - false, - this - ); + applyPreApplyBattlerTagAbAttrs(UserFieldBattlerTagImmunityAbAttr, pokemon, newTag, cancelled, false, this); if (cancelled.value) { return false; } @@ -4931,14 +4205,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const tags = this.summonData.tags; const tag = tags.find(t => t.tagType === tagType); if (!tag) { - return false + return false; } if (!tag.lapse(this, BattlerTagLapseType.CUSTOM)) { tag.onRemove(this); tags.splice(tags.indexOf(tag), 1); } - return true + return true; } /** @@ -4952,8 +4226,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { .filter( t => lapseType === BattlerTagLapseType.FAINT || - (t.lapseTypes.some(lType => lType === lapseType) && - !t.lapse(this, lapseType)), + (t.lapseTypes.some(lType => lType === lapseType) && !t.lapse(this, lapseType)), ) .forEach(t => { t.onRemove(this); @@ -4997,7 +4270,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (t.sourceId === sourceId) { t.sourceId = newSourceId; } - }) + }); } /** @@ -5057,21 +4330,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * * @see {@linkcode MoveRestrictionBattlerTag} */ - isMoveTargetRestricted( - moveId: Moves, - user: Pokemon, - target: Pokemon, - ): boolean { - for (const tag of this.findTags( - t => t instanceof MoveRestrictionBattlerTag, - )) { - if ( - (tag as MoveRestrictionBattlerTag).isMoveTargetRestricted( - moveId, - user, - target, - ) - ) { + isMoveTargetRestricted(moveId: Moves, user: Pokemon, target: Pokemon): boolean { + for (const tag of this.findTags(t => t instanceof MoveRestrictionBattlerTag)) { + if ((tag as MoveRestrictionBattlerTag).isMoveTargetRestricted(moveId, user, target)) { return (tag as MoveRestrictionBattlerTag) !== null; } } @@ -5086,26 +4347,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param target - {@linkcode Pokemon} the target of the move, optional and used when the target is a factor in the move's restricted status * @returns The first tag on this Pokemon that restricts the move, or `null` if the move is not restricted. */ - getRestrictingTag( - moveId: Moves, - user?: Pokemon, - target?: Pokemon, - ): MoveRestrictionBattlerTag | null { - for (const tag of this.findTags( - t => t instanceof MoveRestrictionBattlerTag, - )) { + getRestrictingTag(moveId: Moves, user?: Pokemon, target?: Pokemon): MoveRestrictionBattlerTag | null { + for (const tag of this.findTags(t => t instanceof MoveRestrictionBattlerTag)) { if ((tag as MoveRestrictionBattlerTag).isMoveRestricted(moveId, user)) { return tag as MoveRestrictionBattlerTag; } - if ( - user && - target && - (tag as MoveRestrictionBattlerTag).isMoveTargetRestricted( - moveId, - user, - target, - ) - ) { + if (user && target && (tag as MoveRestrictionBattlerTag).isMoveTargetRestricted(moveId, user, target)) { return tag as MoveRestrictionBattlerTag; } } @@ -5135,9 +4382,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { getLastXMoves(moveCount = 1): TurnMove[] { const moveHistory = this.getMoveHistory(); if (moveCount >= 0) { - return moveHistory - .slice(Math.max(moveHistory.length - moveCount, 0)) - .reverse(); + return moveHistory.slice(Math.max(moveHistory.length - moveCount, 0)).reverse(); } return moveHistory.slice(0).reverse(); } @@ -5163,39 +4408,24 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.loadAssets().then(() => { this.calculateStats(); globalScene.updateModifiers(this.isPlayer(), true); - Promise.all([this.updateInfo(), globalScene.updateFieldScale()]).then( - () => resolve(), - ); + Promise.all([this.updateInfo(), globalScene.updateFieldScale()]).then(() => resolve()); }); }); } - cry( - soundConfig?: Phaser.Types.Sound.SoundConfig, - sceneOverride?: BattleScene, - ): AnySound { + cry(soundConfig?: Phaser.Types.Sound.SoundConfig, sceneOverride?: BattleScene): AnySound { const scene = sceneOverride ?? globalScene; // TODO: is `sceneOverride` needed? const cry = this.getSpeciesForm(undefined, true).cry(soundConfig); let duration = cry.totalDuration * 1000; - if ( - this.fusionSpecies && - this.getSpeciesForm(undefined, true) !== this.getFusionSpeciesForm(undefined, true) - ) { + if (this.fusionSpecies && this.getSpeciesForm(undefined, true) !== this.getFusionSpeciesForm(undefined, true)) { let fusionCry = this.getFusionSpeciesForm(undefined, true).cry(soundConfig, true); duration = Math.min(duration, fusionCry.totalDuration * 1000); fusionCry.destroy(); scene.time.delayedCall(fixedInt(Math.ceil(duration * 0.4)), () => { try { - SoundFade.fadeOut( - scene, - cry, - fixedInt(Math.ceil(duration * 0.2)), - ); + SoundFade.fadeOut(scene, cry, fixedInt(Math.ceil(duration * 0.2))); fusionCry = this.getFusionSpeciesForm(undefined, true).cry( - Object.assign( - { seek: Math.max(fusionCry.totalDuration * 0.4, 0) }, - soundConfig, - ), + Object.assign({ seek: Math.max(fusionCry.totalDuration * 0.4, 0) }, soundConfig), ); SoundFade.fadeIn( scene, @@ -5215,10 +4445,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // biome-ignore lint: there are a ton of issues.. faintCry(callback: Function): void { - if ( - this.fusionSpecies && - this.getSpeciesForm() !== this.getFusionSpeciesForm() - ) { + if (this.fusionSpecies && this.getSpeciesForm() !== this.getFusionSpeciesForm()) { return this.fusionFaintCry(callback); } @@ -5238,32 +4465,31 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { sprite.anims.pause(); tintSprite?.anims.pause(); - let faintCryTimer: Phaser.Time.TimerEvent | null = - globalScene.time.addEvent({ - delay: fixedInt(delay), - repeat: -1, - callback: () => { - frameThreshold = sprite.anims.msPerFrame / rate; - frameProgress += delay; - while (frameProgress > frameThreshold) { - if (sprite.anims.duration) { - sprite.anims.nextFrame(); - tintSprite?.anims.nextFrame(); - } - frameProgress -= frameThreshold; + let faintCryTimer: Phaser.Time.TimerEvent | null = globalScene.time.addEvent({ + delay: fixedInt(delay), + repeat: -1, + callback: () => { + frameThreshold = sprite.anims.msPerFrame / rate; + frameProgress += delay; + while (frameProgress > frameThreshold) { + if (sprite.anims.duration) { + sprite.anims.nextFrame(); + tintSprite?.anims.nextFrame(); } - if (cry && !cry.pendingRemove) { - rate *= 0.99; - cry.setRate(rate); - } else { - faintCryTimer?.destroy(); - faintCryTimer = null; - if (callback) { - callback(); - } + frameProgress -= frameThreshold; + } + if (cry && !cry.pendingRemove) { + rate *= 0.99; + cry.setRate(rate); + } else { + faintCryTimer?.destroy(); + faintCryTimer = null; + if (callback) { + callback(); } - }, - }); + } + }, + }); // Failsafe globalScene.time.delayedCall(fixedInt(3000), () => { @@ -5323,61 +4549,53 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { sprite.anims.pause(); tintSprite?.anims.pause(); - let faintCryTimer: Phaser.Time.TimerEvent | null = - globalScene.time.addEvent({ - delay: fixedInt(delay), - repeat: -1, - callback: () => { - ++i; - frameThreshold = sprite.anims.msPerFrame / rate; - frameProgress += delay; - while (frameProgress > frameThreshold) { - if (sprite.anims.duration) { - sprite.anims.nextFrame(); - tintSprite?.anims.nextFrame(); - } - frameProgress -= frameThreshold; + let faintCryTimer: Phaser.Time.TimerEvent | null = globalScene.time.addEvent({ + delay: fixedInt(delay), + repeat: -1, + callback: () => { + ++i; + frameThreshold = sprite.anims.msPerFrame / rate; + frameProgress += delay; + while (frameProgress > frameThreshold) { + if (sprite.anims.duration) { + sprite.anims.nextFrame(); + tintSprite?.anims.nextFrame(); } - if (i === transitionIndex && fusionCryKey) { - SoundFade.fadeOut( - globalScene, - cry, - fixedInt(Math.ceil((duration / rate) * 0.2)), - ); - fusionCry = globalScene.playSound( - fusionCryKey, - Object.assign({ - seek: Math.max(fusionCry.totalDuration * 0.4, 0), - rate: rate, - }), - ); - SoundFade.fadeIn( - globalScene, - fusionCry, - fixedInt(Math.ceil((duration / rate) * 0.2)), - globalScene.masterVolume * globalScene.fieldVolume, - 0, - ); + frameProgress -= frameThreshold; + } + if (i === transitionIndex && fusionCryKey) { + SoundFade.fadeOut(globalScene, cry, fixedInt(Math.ceil((duration / rate) * 0.2))); + fusionCry = globalScene.playSound( + fusionCryKey, + Object.assign({ + seek: Math.max(fusionCry.totalDuration * 0.4, 0), + rate: rate, + }), + ); + SoundFade.fadeIn( + globalScene, + fusionCry, + fixedInt(Math.ceil((duration / rate) * 0.2)), + globalScene.masterVolume * globalScene.fieldVolume, + 0, + ); + } + rate *= 0.99; + if (cry && !cry.pendingRemove) { + cry.setRate(rate); + } + if (fusionCry && !fusionCry.pendingRemove) { + fusionCry.setRate(rate); + } + if ((!cry || cry.pendingRemove) && (!fusionCry || fusionCry.pendingRemove)) { + faintCryTimer?.destroy(); + faintCryTimer = null; + if (callback) { + callback(); } - rate *= 0.99; - if (cry && !cry.pendingRemove) { - cry.setRate(rate); - } - if (fusionCry && !fusionCry.pendingRemove) { - fusionCry.setRate(rate); - } - if ( - (!cry || cry.pendingRemove) && - (!fusionCry || fusionCry.pendingRemove) - ) { - faintCryTimer?.destroy(); - faintCryTimer = null; - if (callback) { - callback(); - } - } - }, - }); + } + }, + }); // Failsafe globalScene.time.delayedCall(fixedInt(3000), () => { @@ -5400,8 +4618,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { isOppositeGender(pokemon: Pokemon): boolean { return ( this.gender !== Gender.GENDERLESS && - pokemon.gender === - (this.gender === Gender.MALE ? Gender.FEMALE : Gender.MALE) + pokemon.gender === (this.gender === Gender.MALE ? Gender.FEMALE : Gender.MALE) ); } @@ -5409,11 +4626,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!effect || quiet) { return; } - const message = effect && this.status?.effect === effect - ? getStatusEffectOverlapText(effect ?? StatusEffect.NONE, getPokemonNameWithAffix(this)) - : i18next.t("abilityTriggers:moveImmunity", { - pokemonNameWithAffix: getPokemonNameWithAffix(this), - }); + const message = + effect && this.status?.effect === effect + ? getStatusEffectOverlapText(effect ?? StatusEffect.NONE, getPokemonNameWithAffix(this)) + : i18next.t("abilityTriggers:moveImmunity", { + pokemonNameWithAffix: getPokemonNameWithAffix(this), + }); globalScene.queueMessage(message); } @@ -5438,11 +4656,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.queueImmuneMessage(quiet, effect); return false; } - if ( - this.isGrounded() && - !ignoreField && - globalScene.arena.terrain?.terrainType === TerrainType.MISTY - ) { + if (this.isGrounded() && !ignoreField && globalScene.arena.terrain?.terrainType === TerrainType.MISTY) { this.queueImmuneMessage(quiet, effect); return false; } @@ -5452,7 +4666,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { switch (effect) { case StatusEffect.POISON: - case StatusEffect.TOXIC: + case StatusEffect.TOXIC: { // Check if the Pokemon is immune to Poison/Toxic or if the source pokemon is canceling the immunity const poisonImmunity = types.map(defType => { // Check if the Pokemon is not immune to Poison/Toxic @@ -5463,20 +4677,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // Check if the source Pokemon has an ability that cancels the Poison/Toxic immunity const cancelImmunity = new BooleanHolder(false); if (sourcePokemon) { - applyAbAttrs( - IgnoreTypeStatusEffectImmunityAbAttr, - sourcePokemon, - cancelImmunity, - false, - effect, - defType, - ); + applyAbAttrs(IgnoreTypeStatusEffectImmunityAbAttr, sourcePokemon, cancelImmunity, false, effect, defType); if (cancelImmunity.value) { return false; } } - return true; + return true; }); if (this.isOfType(PokemonType.POISON) || this.isOfType(PokemonType.STEEL)) { @@ -5486,6 +4693,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } break; + } case StatusEffect.PARALYSIS: if (this.isOfType(PokemonType.ELECTRIC)) { this.queueImmuneMessage(quiet, effect); @@ -5493,10 +4701,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } break; case StatusEffect.SLEEP: - if ( - this.isGrounded() && - globalScene.arena.terrain?.terrainType === TerrainType.ELECTRIC - ) { + if (this.isGrounded() && globalScene.arena.terrain?.terrainType === TerrainType.ELECTRIC) { this.queueImmuneMessage(quiet, effect); return false; } @@ -5506,9 +4711,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.isOfType(PokemonType.ICE) || (!ignoreField && globalScene?.arena?.weather?.weatherType && - [WeatherType.SUNNY, WeatherType.HARSH_SUN].includes( - globalScene.arena.weather.weatherType, - )) + [WeatherType.SUNNY, WeatherType.HARSH_SUN].includes(globalScene.arena.weather.weatherType)) ) { this.queueImmuneMessage(quiet, effect); return false; @@ -5523,13 +4726,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } const cancelled = new BooleanHolder(false); - applyPreSetStatusAbAttrs( - StatusEffectImmunityAbAttr, - this, - effect, - cancelled, - quiet, - ); + applyPreSetStatusAbAttrs(StatusEffectImmunityAbAttr, this, effect, cancelled, quiet); if (cancelled.value) { return false; } @@ -5540,8 +4737,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { pokemon, effect, cancelled, - quiet, this, sourcePokemon, - ) + quiet, + this, + sourcePokemon, + ); if (cancelled.value) { break; } @@ -5551,15 +4750,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return false; } - if ( - sourcePokemon && - sourcePokemon !== this && - this.isSafeguarded(sourcePokemon) - ) { - if(!quiet){ - globalScene.queueMessage( - i18next.t("moveTriggers:safeguard", { targetName: getPokemonNameWithAffix(this) - })); + if (sourcePokemon && sourcePokemon !== this && this.isSafeguarded(sourcePokemon)) { + if (!quiet) { + globalScene.queueMessage(i18next.t("moveTriggers:safeguard", { targetName: getPokemonNameWithAffix(this) })); } return false; } @@ -5600,13 +4793,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.resetStatus(false); } globalScene.unshiftPhase( - new ObtainStatusEffectPhase( - this.getBattlerIndex(), - effect, - turnsRemaining, - sourceText, - sourcePokemon, - ), + new ObtainStatusEffectPhase(this.getBattlerIndex(), effect, turnsRemaining, sourceText, sourcePokemon), ); return true; } @@ -5692,9 +4879,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns `true` if this Pokemon is protected by Safeguard; `false` otherwise. */ isSafeguarded(attacker: Pokemon): boolean { - const defendingSide = this.isPlayer() - ? ArenaTagSide.PLAYER - : ArenaTagSide.ENEMY; + const defendingSide = this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; if (globalScene.arena.getTagOnSide(ArenaTagType.SAFEGUARD, defendingSide)) { const bypassed = new BooleanHolder(false); if (attacker) { @@ -5712,18 +4897,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { public fieldSetup(resetSummonData?: boolean): void { this.setSwitchOutStatus(false); if (globalScene) { - globalScene.triggerPokemonFormChange( - this, - SpeciesFormChangePostMoveTrigger, - true, - ); + globalScene.triggerPokemonFormChange(this, SpeciesFormChangePostMoveTrigger, true); } // If this Pokemon has a Substitute when loading in, play an animation to add its sprite if (this.getTag(SubstituteTag)) { - globalScene.triggerPokemonBattleAnim( - this, - PokemonAnimType.SUBSTITUTE_ADD, - ); + globalScene.triggerPokemonBattleAnim(this, PokemonAnimType.SUBSTITUTE_ADD); this.getTag(SubstituteTag)!.sourceInFocus = false; } @@ -5753,7 +4931,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } this.summonData = new PokemonSummonData(); this.tempSummonData = new PokemonTempSummonData(); - this.summonData.illusion = illusion + this.summonData.illusion = illusion; this.updateInfo(); } @@ -5761,7 +4939,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * Reset a {@linkcode Pokemon}'s per-battle {@linkcode PokemonBattleData | battleData}, * as well as any transient {@linkcode PokemonWaveData | waveData} for the current wave. * Should be called once per arena transition (new biome/trainer battle/Mystery Encounter). - */ + */ resetBattleAndWaveData(): void { this.battleData = new PokemonBattleData(); this.resetWaveData(); @@ -5782,10 +4960,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.stellarTypesBoosted = []; if (wasTerastallized) { this.updateSpritePipelineData(); - globalScene.triggerPokemonFormChange( - this, - SpeciesFormChangeLapseTeraTrigger, - ); + globalScene.triggerPokemonFormChange(this, SpeciesFormChangeLapseTeraTrigger); } } @@ -5803,18 +4978,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { try { this.getSprite().play(this.getBattleSpriteKey()); } catch (err: unknown) { - console.error( - `Failed to play animation for ${this.getBattleSpriteKey()}`, - err, - ); + console.error(`Failed to play animation for ${this.getBattleSpriteKey()}`, err); } try { this.getTintSprite()?.play(this.getBattleSpriteKey()); } catch (err: unknown) { - console.error( - `Failed to play animation for ${this.getBattleSpriteKey()}`, - err, - ); + console.error(`Failed to play animation for ${this.getBattleSpriteKey()}`, err); } } @@ -5865,9 +5034,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.x * this.parentContainer.scale + this.parentContainer.x, this.y * this.parentContainer.scale + this.parentContainer.y, ); - this.maskSprite?.setScale( - this.getSpriteScale() * this.parentContainer.scale, - ); + this.maskSprite?.setScale(this.getSpriteScale() * this.parentContainer.scale); this.maskEnabled = true; } } @@ -5893,12 +5060,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { [this.getSprite(), this.getTintSprite()] .filter(s => !!s) .map(s => { - s.pipelineData[ - `spriteColors${ignoreOveride && this.summonData.speciesForm ? "Base" : ""}` - ] = []; - s.pipelineData[ - `fusionSpriteColors${ignoreOveride && this.summonData.speciesForm ? "Base" : ""}` - ] = []; + s.pipelineData[`spriteColors${ignoreOveride && this.summonData.speciesForm ? "Base" : ""}`] = []; + s.pipelineData[`fusionSpriteColors${ignoreOveride && this.summonData.speciesForm ? "Base" : ""}`] = []; }); return; } @@ -5913,12 +5076,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.variant, ); const backSpriteKey = speciesForm - .getSpriteKey( - this.getGender(ignoreOveride) === Gender.FEMALE, - speciesForm.formIndex, - this.shiny, - this.variant, - ) + .getSpriteKey(this.getGender(ignoreOveride) === Gender.FEMALE, speciesForm.formIndex, this.shiny, this.variant) .replace("pkmn__", "pkmn__back__"); const fusionSpriteKey = fusionSpeciesForm.getSpriteKey( this.getFusionGender(ignoreOveride) === Gender.FEMALE, @@ -5961,40 +5119,28 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const spriteColors: number[][] = []; const pixelData: Uint8ClampedArray[] = []; - [canvas, backCanvas, fusionCanvas, fusionBackCanvas].forEach( - (canv: HTMLCanvasElement, c: number) => { - const context = canv.getContext("2d"); - const frame = [ - sourceFrame, - sourceBackFrame, - fusionFrame, - fusionBackFrame, - ][c]; - canv.width = frame.width; - canv.height = frame.height; + [canvas, backCanvas, fusionCanvas, fusionBackCanvas].forEach((canv: HTMLCanvasElement, c: number) => { + const context = canv.getContext("2d"); + const frame = [sourceFrame, sourceBackFrame, fusionFrame, fusionBackFrame][c]; + canv.width = frame.width; + canv.height = frame.height; - if (context) { - context.drawImage( - [sourceImage, sourceBackImage, fusionImage, fusionBackImage][c], - frame.cutX, - frame.cutY, - frame.width, - frame.height, - 0, - 0, - frame.width, - frame.height, - ); - const imageData = context.getImageData( - frame.cutX, - frame.cutY, - frame.width, - frame.height, - ); - pixelData.push(imageData.data); - } - }, - ); + if (context) { + context.drawImage( + [sourceImage, sourceBackImage, fusionImage, fusionBackImage][c], + frame.cutX, + frame.cutY, + frame.width, + frame.height, + 0, + 0, + frame.width, + frame.height, + ); + const imageData = context.getImageData(frame.cutX, frame.cutY, frame.width, frame.height); + pixelData.push(imageData.data); + } + }); for (let f = 0; f < 2; f++) { const variantColors = variantColorCache[!f ? spriteKey : backSpriteKey]; @@ -6003,9 +5149,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { Object.keys(variantColors[this.variant]).forEach(k => { variantColorSet.set( rgbaToInt(Array.from(Object.values(rgbHexToRgba(k)))), - Array.from( - Object.values(rgbHexToRgba(variantColors[this.variant][k])), - ), + Array.from(Object.values(rgbHexToRgba(variantColors[this.variant][k]))), ); }); } @@ -6035,9 +5179,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const pixelColors: number[] = []; for (let f = 0; f < 2; f++) { for (let i = 0; i < pixelData[f].length; i += 4) { - const total = pixelData[f] - .slice(i, i + 3) - .reduce((total: number, value: number) => total + value, 0); + const total = pixelData[f].slice(i, i + 3).reduce((total: number, value: number) => total + value, 0); if (!total) { continue; } @@ -6054,29 +5196,18 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const fusionPixelColors: number[] = []; for (let f = 0; f < 2; f++) { - const variantColors = - variantColorCache[!f ? fusionSpriteKey : fusionBackSpriteKey]; + const variantColors = variantColorCache[!f ? fusionSpriteKey : fusionBackSpriteKey]; const variantColorSet = new Map(); - if ( - this.fusionShiny && - variantColors && - variantColors[this.fusionVariant] - ) { + if (this.fusionShiny && variantColors && variantColors[this.fusionVariant]) { for (const k of Object.keys(variantColors[this.fusionVariant])) { variantColorSet.set( rgbaToInt(Array.from(Object.values(rgbHexToRgba(k)))), - Array.from( - Object.values( - rgbHexToRgba(variantColors[this.fusionVariant][k]), - ), - ), + Array.from(Object.values(rgbHexToRgba(variantColors[this.fusionVariant][k]))), ); } } for (let i = 0; i < pixelData[2 + f].length; i += 4) { - const total = pixelData[2 + f] - .slice(i, i + 3) - .reduce((total: number, value: number) => total + value, 0); + const total = pixelData[2 + f].slice(i, i + 3).reduce((total: number, value: number) => total + value, 0); if (!total) { continue; } @@ -6124,101 +5255,94 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { paletteColors = paletteColors!; // erroneously tell TS compiler that paletteColors is defined! fusionPaletteColors = fusionPaletteColors!; // mischievously misinform TS compiler that fusionPaletteColors is defined! - const [palette, fusionPalette] = [paletteColors, fusionPaletteColors].map( - paletteColors => { - let keys = Array.from(paletteColors.keys()).sort( - (a: number, b: number) => - paletteColors.get(a)! < paletteColors.get(b)! ? 1 : -1, - ); - let rgbaColors: Map; - let hsvColors: Map; + const [palette, fusionPalette] = [paletteColors, fusionPaletteColors].map(paletteColors => { + let keys = Array.from(paletteColors.keys()).sort((a: number, b: number) => + paletteColors.get(a)! < paletteColors.get(b)! ? 1 : -1, + ); + let rgbaColors: Map; + let hsvColors: Map; - const mappedColors = new Map(); + const mappedColors = new Map(); - do { - mappedColors.clear(); + do { + mappedColors.clear(); - rgbaColors = keys.reduce((map: Map, k: number) => { - map.set(k, Object.values(rgbaFromArgb(k))); - return map; - }, new Map()); - hsvColors = Array.from(rgbaColors.keys()).reduce( - (map: Map, k: number) => { - const rgb = rgbaColors.get(k)!.slice(0, 3); - map.set(k, rgbToHsv(rgb[0], rgb[1], rgb[2])); - return map; - }, - new Map(), - ); + rgbaColors = keys.reduce((map: Map, k: number) => { + map.set(k, Object.values(rgbaFromArgb(k))); + return map; + }, new Map()); + hsvColors = Array.from(rgbaColors.keys()).reduce((map: Map, k: number) => { + const rgb = rgbaColors.get(k)!.slice(0, 3); + map.set(k, rgbToHsv(rgb[0], rgb[1], rgb[2])); + return map; + }, new Map()); - for (let c = keys.length - 1; c >= 0; c--) { - const hsv = hsvColors.get(keys[c])!; - for (let c2 = 0; c2 < c; c2++) { - const hsv2 = hsvColors.get(keys[c2])!; - const diff = Math.abs(hsv[0] - hsv2[0]); - if (diff < 30 || diff >= 330) { - if (mappedColors.has(keys[c])) { - mappedColors.get(keys[c])!.push(keys[c2]); - } else { - mappedColors.set(keys[c], [keys[c2]]); - } - break; + for (let c = keys.length - 1; c >= 0; c--) { + const hsv = hsvColors.get(keys[c])!; + for (let c2 = 0; c2 < c; c2++) { + const hsv2 = hsvColors.get(keys[c2])!; + const diff = Math.abs(hsv[0] - hsv2[0]); + if (diff < 30 || diff >= 330) { + if (mappedColors.has(keys[c])) { + mappedColors.get(keys[c])!.push(keys[c2]); + } else { + mappedColors.set(keys[c], [keys[c2]]); } + break; + } + } + } + + mappedColors.forEach((values: number[], key: number) => { + const keyColor = rgbaColors.get(key)!; + const valueColors = values.map(v => rgbaColors.get(v)!); + const color = keyColor.slice(0); + let count = paletteColors.get(key)!; + for (const value of values) { + const valueCount = paletteColors.get(value); + if (!valueCount) { + continue; + } + count += valueCount; + } + + for (let c = 0; c < 3; c++) { + color[c] *= paletteColors.get(key)! / count; + values.forEach((value: number, i: number) => { + if (paletteColors.has(value)) { + const valueCount = paletteColors.get(value)!; + color[c] += valueColors[i][c] * (valueCount / count); + } + }); + color[c] = Math.round(color[c]); + } + + paletteColors.delete(key); + for (const value of values) { + paletteColors.delete(value); + if (mappedColors.has(value)) { + mappedColors.delete(value); } } - mappedColors.forEach((values: number[], key: number) => { - const keyColor = rgbaColors.get(key)!; - const valueColors = values.map(v => rgbaColors.get(v)!); - const color = keyColor.slice(0); - let count = paletteColors.get(key)!; - for (const value of values) { - const valueCount = paletteColors.get(value); - if (!valueCount) { - continue; - } - count += valueCount; - } - - for (let c = 0; c < 3; c++) { - color[c] *= paletteColors.get(key)! / count; - values.forEach((value: number, i: number) => { - if (paletteColors.has(value)) { - const valueCount = paletteColors.get(value)!; - color[c] += valueColors[i][c] * (valueCount / count); - } - }); - color[c] = Math.round(color[c]); - } - - paletteColors.delete(key); - for (const value of values) { - paletteColors.delete(value); - if (mappedColors.has(value)) { - mappedColors.delete(value); - } - } - - paletteColors.set( - argbFromRgba({ - r: color[0], - g: color[1], - b: color[2], - a: color[3], - }), - count, - ); - }); - - keys = Array.from(paletteColors.keys()).sort( - (a: number, b: number) => - paletteColors.get(a)! < paletteColors.get(b)! ? 1 : -1, + paletteColors.set( + argbFromRgba({ + r: color[0], + g: color[1], + b: color[2], + a: color[3], + }), + count, ); - } while (mappedColors.size); + }); - return keys.map(c => Object.values(rgbaFromArgb(c))); - }, - ); + keys = Array.from(paletteColors.keys()).sort((a: number, b: number) => + paletteColors.get(a)! < paletteColors.get(b)! ? 1 : -1, + ); + } while (mappedColors.size); + + return keys.map(c => Object.values(rgbaFromArgb(c))); + }); const paletteDeltas: number[][] = []; @@ -6241,10 +5365,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const ratio = easeFunc(delta / 255); const color = [0, 0, 0, fusionSpriteColors[sc][3]]; for (let c = 0; c < 3; c++) { - color[c] = Math.round( - fusionSpriteColors[sc][c] * ratio + - fusionPalette[paletteIndex][c] * (1 - ratio), - ); + color[c] = Math.round(fusionSpriteColors[sc][c] * ratio + fusionPalette[paletteIndex][c] * (1 - ratio)); } fusionSpriteColors[sc] = color; } @@ -6253,12 +5374,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { [this.getSprite(), this.getTintSprite()] .filter(s => !!s) .map(s => { - s.pipelineData[ - `spriteColors${ignoreOveride && this.summonData.speciesForm ? "Base" : ""}` - ] = spriteColors; - s.pipelineData[ - `fusionSpriteColors${ignoreOveride && this.summonData.speciesForm ? "Base" : ""}` - ] = fusionSpriteColors; + s.pipelineData[`spriteColors${ignoreOveride && this.summonData.speciesForm ? "Base" : ""}`] = spriteColors; + s.pipelineData[`fusionSpriteColors${ignoreOveride && this.summonData.speciesForm ? "Base" : ""}`] = + fusionSpriteColors; }); canvas.remove(); @@ -6278,9 +5396,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns A random integer between {@linkcode min} and ({@linkcode min} + {@linkcode range} - 1) */ randBattleSeedInt(range: number, min = 0): number { - return globalScene.currentBattle - ? globalScene.randBattleSeedInt(range, min) - : randSeedInt(range, min); + return globalScene.currentBattle ? globalScene.randBattleSeedInt(range, min) : randSeedInt(range, min); } /** @@ -6290,9 +5406,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns a random integer between {@linkcode min} and {@linkcode max} inclusive */ randBattleSeedIntRange(min: number, max: number): number { - return globalScene.currentBattle - ? globalScene.randBattleSeedInt(max - min + 1, min) - : randSeedIntRange(min, max); + return globalScene.currentBattle ? globalScene.randBattleSeedInt(max - min + 1, min) : randSeedIntRange(min, max); } /** @@ -6320,11 +5434,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // Trigger abilities that activate upon leaving the field applyPreLeaveFieldAbAttrs(PreLeaveFieldAbAttr, this); this.setSwitchOutStatus(true); - globalScene.triggerPokemonFormChange( - this, - SpeciesFormChangeActiveTrigger, - true, - ); + globalScene.triggerPokemonFormChange(this, SpeciesFormChangeActiveTrigger, true); globalScene.field.remove(this, destroy); } @@ -6346,10 +5456,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { hasSameAbilityInRootForm(abilityIndex: number): boolean { const currentAbilityIndex = this.abilityIndex; const rootForm = getPokemonSpecies(this.species.getRootSpeciesId()); - return ( - rootForm.getAbility(abilityIndex) === - rootForm.getAbility(currentAbilityIndex) - ); + return rootForm.getAbility(abilityIndex) === rootForm.getAbility(currentAbilityIndex); } /** @@ -6378,23 +5485,20 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param forBattle If `false`, do not trigger in-battle effects (such as Unburden) from losing the item. For example, set this to `false` if the Pokemon is giving away the held item for a Mystery Encounter. Default is `true`. * @returns `true` if the item was removed successfully, `false` otherwise. */ - public loseHeldItem( - heldItem: PokemonHeldItemModifier, - forBattle = true, - ): boolean { + public loseHeldItem(heldItem: PokemonHeldItemModifier, forBattle = true): boolean { if (heldItem.pokemonId !== -1 && heldItem.pokemonId !== this.id) { return false; } - heldItem.stackCount--; - if (heldItem.stackCount <= 0) { - globalScene.removeModifier(heldItem, !this.isPlayer()); - } - if (forBattle) { - applyPostItemLostAbAttrs(PostItemLostAbAttr, this, false); - } + heldItem.stackCount--; + if (heldItem.stackCount <= 0) { + globalScene.removeModifier(heldItem, !this.isPlayer()); + } + if (forBattle) { + applyPostItemLostAbAttrs(PostItemLostAbAttr, this, false); + } - return true; + return true; } /** @@ -6403,11 +5507,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param berryType The type of berry being eaten. * @param updateHarvest Whether to track the berry for harvest; default `true`. */ - public recordEatenBerry(berryType: BerryType, updateHarvest: boolean = true) { + public recordEatenBerry(berryType: BerryType, updateHarvest = true) { this.battleData.hasEatenBerry = true; if (updateHarvest) { // Only track for harvest if we actually consumed the berry - this.battleData.berriesEaten.push(berryType) + this.battleData.berriesEaten.push(berryType); } this.turnData.berriesEaten.push(berryType); } @@ -6428,20 +5532,7 @@ export class PlayerPokemon extends Pokemon { nature?: Nature, dataSource?: Pokemon | PokemonData, ) { - super( - 106, - 148, - species, - level, - abilityIndex, - formIndex, - gender, - shiny, - variant, - ivs, - nature, - dataSource, - ); + super(106, 148, species, level, abilityIndex, formIndex, gender, shiny, variant, ivs, nature, dataSource); if (Overrides.STATUS_OVERRIDE) { this.status = new Status(Overrides.STATUS_OVERRIDE, 0, 4); @@ -6504,17 +5595,13 @@ export class PlayerPokemon extends Pokemon { if (Array.isArray(p)) { const [pkm, form] = p; if ( - (pkm === this.species.speciesId || - (this.fusionSpecies && pkm === this.fusionSpecies.speciesId)) && + (pkm === this.species.speciesId || (this.fusionSpecies && pkm === this.fusionSpecies.speciesId)) && form === this.getFormKey() ) { compatible = true; break; } - } else if ( - p === this.species.speciesId || - (this.fusionSpecies && p === this.fusionSpecies.speciesId) - ) { + } else if (p === this.species.speciesId || (this.fusionSpecies && p === this.fusionSpecies.speciesId)) { compatible = true; break; } @@ -6532,8 +5619,7 @@ export class PlayerPokemon extends Pokemon { if ( !this.getSpeciesForm().validateStarterMoveset( moveset, - globalScene.gameData.starterData[this.species.getRootSpeciesId()] - .eggMoves, + globalScene.gameData.starterData[this.species.getRootSpeciesId()].eggMoves, ) ) { return false; @@ -6559,18 +5645,10 @@ export class PlayerPokemon extends Pokemon { UiMode.PARTY, PartyUiMode.FAINT_SWITCH, this.getFieldIndex(), - (slotIndex: number, option: PartyOption) => { - if ( - slotIndex >= globalScene.currentBattle.getBattlerCount() && - slotIndex < 6 - ) { + (slotIndex: number, _option: PartyOption) => { + if (slotIndex >= globalScene.currentBattle.getBattlerCount() && slotIndex < 6) { globalScene.prependToPhase( - new SwitchSummonPhase( - switchType, - this.getFieldIndex(), - slotIndex, - false, - ), + new SwitchSummonPhase(switchType, this.getFieldIndex(), slotIndex, false), MoveEndPhase, ); } @@ -6584,23 +5662,13 @@ export class PlayerPokemon extends Pokemon { addFriendship(friendship: number): void { if (friendship > 0) { const starterSpeciesId = this.species.getRootSpeciesId(); - const fusionStarterSpeciesId = - this.isFusion() && this.fusionSpecies - ? this.fusionSpecies.getRootSpeciesId() - : 0; + const fusionStarterSpeciesId = this.isFusion() && this.fusionSpecies ? this.fusionSpecies.getRootSpeciesId() : 0; const starterData = [ globalScene.gameData.starterData[starterSpeciesId], - fusionStarterSpeciesId - ? globalScene.gameData.starterData[fusionStarterSpeciesId] - : null, + fusionStarterSpeciesId ? globalScene.gameData.starterData[fusionStarterSpeciesId] : null, ].filter(d => !!d); const amount = new NumberHolder(friendship); - globalScene.applyModifier( - PokemonFriendshipBoosterModifier, - true, - this, - amount, - ); + globalScene.applyModifier(PokemonFriendshipBoosterModifier, true, this, amount); const candyFriendshipMultiplier = globalScene.gameMode.isClassic ? timedEventManager.getClassicFriendshipMultiplier() : 1; @@ -6609,11 +5677,7 @@ export class PlayerPokemon extends Pokemon { ? 1.5 // Divide candy gain for fusions by 1.5 during events : 2 // 2 for fusions outside events : 1; // 1 for non-fused mons - const starterAmount = new NumberHolder( - Math.floor( - (amount.value * candyFriendshipMultiplier) / fusionReduction, - ), - ); + const starterAmount = new NumberHolder(Math.floor((amount.value * candyFriendshipMultiplier) / fusionReduction)); // Add friendship to this PlayerPokemon this.friendship = Math.min(this.friendship + amount.value, 255); @@ -6622,14 +5686,9 @@ export class PlayerPokemon extends Pokemon { } // Add to candy progress for this mon's starter species and its fused species (if it has one) starterData.forEach((sd: StarterDataEntry, i: number) => { - const speciesId = !i - ? starterSpeciesId - : (fusionStarterSpeciesId as Species); + const speciesId = !i ? starterSpeciesId : (fusionStarterSpeciesId as Species); sd.friendship = (sd.friendship || 0) + starterAmount.value; - if ( - sd.friendship >= - getStarterValueFriendshipCap(speciesStarterCosts[speciesId]) - ) { + if (sd.friendship >= getStarterValueFriendshipCap(speciesStarterCosts[speciesId])) { globalScene.gameData.addStarterCandy(getPokemonSpecies(speciesId), 1); sd.friendship = 0; } @@ -6640,9 +5699,7 @@ export class PlayerPokemon extends Pokemon { } } - getPossibleEvolution( - evolution: SpeciesFormEvolution | null, - ): Promise { + getPossibleEvolution(evolution: SpeciesFormEvolution | null): Promise { if (!evolution) { return new Promise(resolve => resolve(this)); } @@ -6657,9 +5714,7 @@ export class PlayerPokemon extends Pokemon { this.fusionFormIndex = evolution.evoFormKey !== null ? Math.max( - evolutionSpecies.forms.findIndex( - f => f.formKey === evolution.evoFormKey, - ), + evolutionSpecies.forms.findIndex(f => f.formKey === evolution.evoFormKey), 0, ) : this.fusionFormIndex; @@ -6681,9 +5736,7 @@ export class PlayerPokemon extends Pokemon { const formIndex = evolution.evoFormKey !== null && !isFusion ? Math.max( - evolutionSpecies.forms.findIndex( - f => f.formKey === evolution.evoFormKey, - ), + evolutionSpecies.forms.findIndex(f => f.formKey === evolution.evoFormKey), 0, ) : this.formIndex; @@ -6704,10 +5757,7 @@ export class PlayerPokemon extends Pokemon { }); } - evolve( - evolution: SpeciesFormEvolution | null, - preEvolution: PokemonSpeciesForm, - ): Promise { + evolve(evolution: SpeciesFormEvolution | null, preEvolution: PokemonSpeciesForm): Promise { if (!evolution) { return new Promise(resolve => resolve()); } @@ -6723,10 +5773,9 @@ export class PlayerPokemon extends Pokemon { } if (evolution.preFormKey !== null) { const formIndex = Math.max( - (!isFusion || !this.fusionSpecies - ? this.species - : this.fusionSpecies - ).forms.findIndex(f => f.formKey === evolution.evoFormKey), + (!isFusion || !this.fusionSpecies ? this.species : this.fusionSpecies).forms.findIndex( + f => f.formKey === evolution.evoFormKey, + ), 0, ); if (!isFusion) { @@ -6741,18 +5790,12 @@ export class PlayerPokemon extends Pokemon { const preEvoAbilityCount = preEvolution.getAbilityCount(); if ([0, 1, 2].includes(this.abilityIndex)) { // Handles cases where a Pokemon with 3 abilities evolves into a Pokemon with 2 abilities (ie: Eevee -> any Eeveelution) - if ( - this.abilityIndex === 2 && - preEvoAbilityCount === 3 && - abilityCount === 2 - ) { + if (this.abilityIndex === 2 && preEvoAbilityCount === 3 && abilityCount === 2) { this.abilityIndex = 1; } } else { // Prevent pokemon with an illegal ability value from breaking things - console.warn( - "this.abilityIndex is somehow an illegal value, please report this", - ); + console.warn("this.abilityIndex is somehow an illegal value, please report this"); console.warn(this.abilityIndex); this.abilityIndex = 0; } @@ -6761,17 +5804,11 @@ export class PlayerPokemon extends Pokemon { const abilityCount = this.getFusionSpeciesForm().getAbilityCount(); const preEvoAbilityCount = preEvolution.getAbilityCount(); if ([0, 1, 2].includes(this.fusionAbilityIndex)) { - if ( - this.fusionAbilityIndex === 2 && - preEvoAbilityCount === 3 && - abilityCount === 2 - ) { + if (this.fusionAbilityIndex === 2 && preEvoAbilityCount === 3 && abilityCount === 2) { this.fusionAbilityIndex = 1; } } else { - console.warn( - "this.fusionAbilityIndex is somehow an illegal value, please report this", - ); + console.warn("this.fusionAbilityIndex is somehow an illegal value, please report this"); console.warn(this.fusionAbilityIndex); this.fusionAbilityIndex = 0; } @@ -6785,22 +5822,15 @@ export class PlayerPokemon extends Pokemon { }); }; if (preEvolution.speciesId === Species.GIMMIGHOUL) { - const evotracker = - this.getHeldItems().filter(m => m instanceof EvoTrackerModifier)[0] ?? - null; + const evotracker = this.getHeldItems().filter(m => m instanceof EvoTrackerModifier)[0] ?? null; if (evotracker) { globalScene.removeModifier(evotracker); } } if (!globalScene.gameMode.isDaily || this.metBiome > -1) { - globalScene.gameData.updateSpeciesDexIvs( - this.species.speciesId, - this.ivs, - ); + globalScene.gameData.updateSpeciesDexIvs(this.species.speciesId, this.ivs); globalScene.gameData.setPokemonSeen(this, false); - globalScene.gameData - .setPokemonCaught(this, false) - .then(() => updateAndResolve()); + globalScene.gameData.setPokemonCaught(this, false).then(() => updateAndResolve()); } else { updateAndResolve(); } @@ -6811,10 +5841,7 @@ export class PlayerPokemon extends Pokemon { const isFusion = evolution instanceof FusionSpeciesFormEvolution; const evoSpecies = !isFusion ? this.species : this.fusionSpecies; - if ( - evoSpecies?.speciesId === Species.NINCADA && - evolution.speciesId === Species.NINJASK - ) { + if (evoSpecies?.speciesId === Species.NINCADA && evolution.speciesId === Species.NINJASK) { const newEvolution = pokemonEvolutions[evoSpecies.speciesId][1]; if (newEvolution.condition?.predicate(this)) { @@ -6850,12 +5877,7 @@ export class PlayerPokemon extends Pokemon { newPokemon.evoCounter = this.evoCounter; globalScene.getPlayerParty().push(newPokemon); - newPokemon.evolve( - !isFusion - ? newEvolution - : new FusionSpeciesFormEvolution(this.id, newEvolution), - evoSpecies, - ); + newPokemon.evolve(!isFusion ? newEvolution : new FusionSpeciesFormEvolution(this.id, newEvolution), evoSpecies); const modifiers = globalScene.findModifiers( m => m instanceof PokemonHeldItemModifier && m.pokemonId === this.id, true, @@ -6916,9 +5938,7 @@ export class PlayerPokemon extends Pokemon { }; if (!globalScene.gameMode.isDaily || this.metBiome > -1) { globalScene.gameData.setPokemonSeen(this, false); - globalScene.gameData - .setPokemonCaught(this, false) - .then(() => updateAndResolve()); + globalScene.gameData.setPokemonCaught(this, false).then(() => updateAndResolve()); } else { updateAndResolve(); } @@ -6953,8 +5973,7 @@ export class PlayerPokemon extends Pokemon { // Store the average HP% that each Pokemon has const maxHp = this.getMaxHp(); - const newHpPercent = - (pokemon.hp / pokemon.getMaxHp() + this.hp / maxHp) / 2; + const newHpPercent = (pokemon.hp / pokemon.getMaxHp() + this.hp / maxHp) / 2; this.generateName(); this.calculateStats(); @@ -6985,15 +6004,7 @@ export class PlayerPokemon extends Pokemon { true, ) as PokemonHeldItemModifier[]; for (const modifier of fusedPartyMemberHeldModifiers) { - globalScene.tryTransferHeldItemModifier( - modifier, - this, - false, - modifier.getStackCount(), - true, - true, - false, - ); + globalScene.tryTransferHeldItemModifier(modifier, this, false, modifier.getStackCount(), true, true, false); } globalScene.updateModifiers(true, true); globalScene.removePartyMemberModifiers(fusedPartyMemberIndex); @@ -7001,11 +6012,7 @@ export class PlayerPokemon extends Pokemon { const newPartyMemberIndex = globalScene.getPlayerParty().indexOf(this); pokemon .getMoveset(true) - .map((m: PokemonMove) => - globalScene.unshiftPhase( - new LearnMovePhase(newPartyMemberIndex, m.getMove().id), - ), - ); + .map((m: PokemonMove) => globalScene.unshiftPhase(new LearnMovePhase(newPartyMemberIndex, m.getMove().id))); pokemon.destroy(); this.updateFusionPalette(); } @@ -7107,17 +6114,13 @@ export class EnemyPokemon extends Pokemon { } } - this.luck = - (this.shiny ? this.variant + 1 : 0) + - (this.fusionShiny ? this.fusionVariant + 1 : 0); + this.luck = (this.shiny ? this.variant + 1 : 0) + (this.fusionShiny ? this.fusionVariant + 1 : 0); let prevolution: Species; let speciesId = species.speciesId; while ((prevolution = pokemonPrevolutions[speciesId])) { const evolution = pokemonEvolutions[prevolution].find( - pe => - pe.speciesId === speciesId && - (!pe.evoFormKey || pe.evoFormKey === this.getFormKey()), + pe => pe.speciesId === speciesId && (!pe.evoFormKey || pe.evoFormKey === this.getFormKey()), ); if (evolution?.condition?.enforceFunc) { evolution.condition.enforceFunc(this); @@ -7135,8 +6138,7 @@ export class EnemyPokemon extends Pokemon { } } - this.aiType = - boss || this.hasTrainer() ? AiType.SMART : AiType.SMART_RANDOM; + this.aiType = boss || this.hasTrainer() ? AiType.SMART : AiType.SMART_RANDOM; } initBattleInfo(): void { @@ -7160,12 +6162,7 @@ export class EnemyPokemon extends Pokemon { if (boss) { this.bossSegments = bossSegments || - globalScene.getEncounterBossSegments( - globalScene.currentBattle.waveIndex, - this.level, - this.species, - true, - ); + globalScene.getEncounterBossSegments(globalScene.currentBattle.waveIndex, this.level, this.species, true); this.bossSegmentIndex = this.bossSegments - 1; } else { this.bossSegments = 0; @@ -7219,12 +6216,14 @@ export class EnemyPokemon extends Pokemon { const queuedMove = moveQueue[0]; if (queuedMove) { const moveIndex = this.getMoveset().findIndex(m => m.moveId === queuedMove.move); - if ((moveIndex > -1 && this.getMoveset()[moveIndex].isUsable(this, queuedMove.ignorePP)) || queuedMove.virtual) { + if ( + (moveIndex > -1 && this.getMoveset()[moveIndex].isUsable(this, queuedMove.ignorePP)) || + queuedMove.virtual + ) { return queuedMove; - } else { - this.getMoveQueue().shift(); - return this.getNextMove(); } + this.getMoveQueue().shift(); + return this.getNextMove(); } } @@ -7248,11 +6247,13 @@ export class EnemyPokemon extends Pokemon { } } switch (this.aiType) { - case AiType.RANDOM: // No enemy should spawn with this AI type in-game + // No enemy should spawn with this AI type in-game + case AiType.RANDOM: { const moveId = movePool[globalScene.randBattleSeedInt(movePool.length)].moveId; return { move: moveId, targets: this.getNextTargets(moveId) }; + } case AiType.SMART_RANDOM: - case AiType.SMART: + case AiType.SMART: { /** * Search this Pokemon's move pool for moves that will KO an opposing target. * If there are any moves that can KO an opponent (i.e. a player Pokemon), @@ -7273,20 +6274,14 @@ export class EnemyPokemon extends Pokemon { .targets.map(ind => fieldPokemon[ind]) .filter(p => this.isPlayer() !== p.isPlayer()); // Only considers critical hits for crit-only moves or when this Pokemon is under the effect of Laser Focus - const isCritical = - move.hasAttr(CritOnlyAttr) || - !!this.getTag(BattlerTagType.ALWAYS_CRIT); + const isCritical = move.hasAttr(CritOnlyAttr) || !!this.getTag(BattlerTagType.ALWAYS_CRIT); return ( move.category !== MoveCategory.STATUS && moveTargets.some(p => { const doesNotFail = move.applyConditions(this, p, move) || - [ - Moves.SUCKER_PUNCH, - Moves.UPPER_HAND, - Moves.THUNDERCLAP, - ].includes(move.id); + [Moves.SUCKER_PUNCH, Moves.UPPER_HAND, Moves.THUNDERCLAP].includes(move.id); return ( doesNotFail && p.getAttackDamage({ @@ -7297,8 +6292,7 @@ export class EnemyPokemon extends Pokemon { ignoreAllyAbility: !p.getAlly()?.waveData.abilityRevealed, ignoreSourceAllyAbility: false, isCritical, - } - ).damage >= p.hp + }).damage >= p.hp ); }) ); @@ -7314,7 +6308,7 @@ export class EnemyPokemon extends Pokemon { * For more information on how benefit scores are calculated, see `docs/enemy-ai.md`. */ const moveScores = movePool.map(() => 0); - const moveTargets = Object.fromEntries(movePool.map(m => [ m.moveId, this.getNextTargets(m.moveId) ])); + const moveTargets = Object.fromEntries(movePool.map(m => [m.moveId, this.getNextTargets(m.moveId)])); for (const m in movePool) { const pokemonMove = movePool[m]; const move = pokemonMove.getMove(); @@ -7335,8 +6329,7 @@ export class EnemyPokemon extends Pokemon { */ let targetScore = move.getUserBenefitScore(this, target, move) + - move.getTargetBenefitScore(this, target, move) * - (mt < BattlerIndex.ENEMY === this.isPlayer() ? 1 : -1); + move.getTargetBenefitScore(this, target, move) * (mt < BattlerIndex.ENEMY === this.isPlayer() ? 1 : -1); if (Number.isNaN(targetScore)) { console.error(`Move ${move.name} returned score of NaN`); targetScore = 0; @@ -7346,27 +6339,23 @@ export class EnemyPokemon extends Pokemon { * target score to -20 */ if ( - (move.name.endsWith(" (N)") || - !move.applyConditions(this, target, move)) && - ![ - Moves.SUCKER_PUNCH, - Moves.UPPER_HAND, - Moves.THUNDERCLAP, - ].includes(move.id) + (move.name.endsWith(" (N)") || !move.applyConditions(this, target, move)) && + ![Moves.SUCKER_PUNCH, Moves.UPPER_HAND, Moves.THUNDERCLAP].includes(move.id) ) { targetScore = -20; } else if (move instanceof AttackMove) { /** * Attack moves are given extra multipliers to their base benefit score based on * the move's type effectiveness against the target and whether the move is a STAB move. - */ + */ const effectiveness = target.getMoveEffectiveness( this, move, !target.waveData.abilityRevealed, undefined, undefined, - true); + true, + ); if (target.isPlayer() !== this.isPlayer()) { targetScore *= effectiveness; @@ -7405,18 +6394,14 @@ export class EnemyPokemon extends Pokemon { let r = 0; if (this.aiType === AiType.SMART_RANDOM) { // Has a 5/8 chance to select the best move, and a 3/8 chance to advance to the next best move (and repeat this roll) - while ( - r < sortedMovePool.length - 1 && - globalScene.randBattleSeedInt(8) >= 5 - ) { + while (r < sortedMovePool.length - 1 && globalScene.randBattleSeedInt(8) >= 5) { r++; } } else if (this.aiType === AiType.SMART) { // The chance to advance to the next best move increases when the compared moves' scores are closer to each other. while ( r < sortedMovePool.length - 1 && - moveScores[movePool.indexOf(sortedMovePool[r + 1])] / - moveScores[movePool.indexOf(sortedMovePool[r])] >= + moveScores[movePool.indexOf(sortedMovePool[r + 1])] / moveScores[movePool.indexOf(sortedMovePool[r])] >= 0 && globalScene.randBattleSeedInt(100) < Math.round( @@ -7428,8 +6413,14 @@ export class EnemyPokemon extends Pokemon { r++; } } - console.log(movePool.map(m => m.getName()), moveScores, r, sortedMovePool.map(m => m.getName())); + console.log( + movePool.map(m => m.getName()), + moveScores, + r, + sortedMovePool.map(m => m.getName()), + ); return { move: sortedMovePool[r]!.moveId, targets: moveTargets[sortedMovePool[r]!.moveId] }; + } } } @@ -7446,9 +6437,7 @@ export class EnemyPokemon extends Pokemon { */ getNextTargets(moveId: Moves): BattlerIndex[] { const moveTargets = getMoveTargets(this, moveId); - const targets = globalScene - .getField(true) - .filter(p => moveTargets.targets.indexOf(p.getBattlerIndex()) > -1); + const targets = globalScene.getField(true).filter(p => moveTargets.targets.indexOf(p.getBattlerIndex()) > -1); // If the move is multi-target, return all targets' indexes if (moveTargets.multiple) { return targets.map(p => p.getBattlerIndex()); @@ -7462,8 +6451,7 @@ export class EnemyPokemon extends Pokemon { */ const benefitScores = targets.map(p => [ p.getBattlerIndex(), - move.getTargetBenefitScore(this, p, move) * - (p.isPlayer() === this.isPlayer() ? 1 : -1), + move.getTargetBenefitScore(this, p, move) * (p.isPlayer() === this.isPlayer() ? 1 : -1), ]); const sortedBenefitScores = benefitScores.slice(0); @@ -7494,9 +6482,7 @@ export class EnemyPokemon extends Pokemon { } // Remove any targets whose weights are less than half the max of the target weights from consideration - const benefitCutoffIndex = targetWeights.findIndex( - s => s < targetWeights[0] / 2, - ); + const benefitCutoffIndex = targetWeights.findIndex(s => s < targetWeights[0] / 2); if (benefitCutoffIndex > -1) { targetWeights = targetWeights.slice(0, benefitCutoffIndex); } @@ -7555,12 +6541,7 @@ export class EnemyPokemon extends Pokemon { return 0; } - damage( - damage: number, - ignoreSegments = false, - preventEndure = false, - ignoreFaintPhase = false, - ): number { + damage(damage: number, ignoreSegments = false, preventEndure = false, ignoreFaintPhase = false): number { if (this.isFainted()) { return 0; } @@ -7579,16 +6560,13 @@ export class EnemyPokemon extends Pokemon { while ( segmentsBypassed < this.bossSegmentIndex && this.canBypassBossSegments(segmentsBypassed + 1) && - damage - hpRemainder >= - Math.round(segmentSize * Math.pow(2, segmentsBypassed + 1)) + damage - hpRemainder >= Math.round(segmentSize * Math.pow(2, segmentsBypassed + 1)) ) { segmentsBypassed++; //console.log('damage', damage, 'segment', segmentsBypassed + 1, 'segment size', segmentSize, 'damage needed', Math.round(segmentSize * Math.pow(2, segmentsBypassed + 1))); } - damage = toDmgValue( - this.hp - hpThreshold + segmentSize * segmentsBypassed, - ); + damage = toDmgValue(this.hp - hpThreshold + segmentSize * segmentsBypassed); clearedBossSegmentIndex = s - segmentsBypassed; } break; @@ -7603,12 +6581,7 @@ export class EnemyPokemon extends Pokemon { } } - const ret = super.damage( - damage, - ignoreSegments, - preventEndure, - ignoreFaintPhase, - ); + const ret = super.damage(damage, ignoreSegments, preventEndure, ignoreFaintPhase); if (this.isBoss()) { if (ignoreSegments) { @@ -7642,17 +6615,10 @@ export class EnemyPokemon extends Pokemon { * @param segmentIndex index of the segment to get down to (0 = no shield left, 1 = 1 shield left, etc.) */ handleBossSegmentCleared(segmentIndex: number): void { - while ( - this.bossSegmentIndex > 0 && - segmentIndex - 1 < this.bossSegmentIndex - ) { + while (this.bossSegmentIndex > 0 && segmentIndex - 1 < this.bossSegmentIndex) { // Filter out already maxed out stat stages and weigh the rest based on existing stats - const leftoverStats = EFFECTIVE_STATS.filter( - (s: EffectiveStat) => this.getStatStage(s) < 6, - ); - const statWeights = leftoverStats.map((s: EffectiveStat) => - this.getStat(s, false), - ); + const leftoverStats = EFFECTIVE_STATS.filter((s: EffectiveStat) => this.getStatStage(s) < 6); + const statWeights = leftoverStats.map((s: EffectiveStat) => this.getStat(s, false)); let boostedStat: EffectiveStat; const statThresholds: number[] = []; @@ -7684,14 +6650,7 @@ export class EnemyPokemon extends Pokemon { } globalScene.unshiftPhase( - new StatStageChangePhase( - this.getBattlerIndex(), - true, - [boostedStat!], - stages, - true, - true, - ), + new StatStageChangePhase(this.getBattlerIndex(), true, [boostedStat!], stages, true, true), ); this.bossSegmentIndex--; } @@ -7745,11 +6704,7 @@ export class EnemyPokemon extends Pokemon { newPokemon.setVisible(false); ret = newPokemon; - globalScene.triggerPokemonFormChange( - newPokemon, - SpeciesFormChangeActiveTrigger, - true, - ); + globalScene.triggerPokemonFormChange(newPokemon, SpeciesFormChangeActiveTrigger, true); } return ret; @@ -7789,7 +6744,7 @@ interface IllusionData { /** The fusionGender of the illusion if it's a fusion */ fusionGender?: Gender; /** The level of the illusion (not used currently) */ - level?: number + level?: number; } export interface TurnMove { @@ -7838,7 +6793,7 @@ export class PokemonSummonData { /** Data pertaining to this pokemon's illusion. */ public illusion: IllusionData | null = null; - public illusionBroken: boolean = false; + public illusionBroken = false; /** Array containing all berries eaten in the last turn; used by {@linkcode Abilities.CUD_CHEW} */ public berriesEatenLast: BerryType[] = []; @@ -7875,15 +6830,15 @@ export class PokemonSummonData { } } - // TODO: Merge this inside `summmonData` but exclude from save if/when a save data serializer is added +// TODO: Merge this inside `summmonData` but exclude from save if/when a save data serializer is added export class PokemonTempSummonData { /** * The number of turns this pokemon has spent without switching out. * Only currently used for positioning the battle cursor. */ - turnCount: number = 1; + turnCount = 1; - /** + /** * The number of turns this pokemon has spent in the active position since the start of the wave * without switching out. * Reset on switch and new wave, but not stored in `SummonData` to avoid being written to the save file. @@ -7892,7 +6847,6 @@ export class PokemonTempSummonData { * {@linkcode Moves.FAKE_OUT | Fake Out} and {@linkcode Moves.FIRST_IMPRESSION | First Impression}). */ waveTurnCount = 1; - } /** @@ -7903,7 +6857,7 @@ export class PokemonBattleData { /** Counter tracking direct hits this Pokemon has received during this battle; used for {@linkcode Moves.RAGE_FIST} */ public hitCount = 0; /** Whether this Pokemon has eaten a berry this battle; used for {@linkcode Moves.BELCH} */ - public hasEatenBerry: boolean = false; + public hasEatenBerry = false; /** Array containing all berries eaten and not yet recovered during this current battle; used by {@linkcode Abilities.HARVEST} */ public berriesEaten: BerryType[] = []; @@ -7927,7 +6881,7 @@ export class PokemonWaveData { * A set of all the abilities this {@linkcode Pokemon} has used in this wave. * Used to track once per battle conditions, as well as (hopefully) by the updated AI for move effectiveness. */ - public abilitiesApplied: Set = new Set; + public abilitiesApplied: Set = new Set(); /** Whether the pokemon's ability has been revealed or not */ public abilityRevealed = false; } @@ -7967,8 +6921,8 @@ export class PokemonTurnData { * All berries eaten by this pokemon in this turn. * Saved into {@linkcode PokemonSummonData | SummonData} by {@linkcode Abilities.CUD_CHEW} on turn end. * @see {@linkcode PokemonSummonData.berriesEatenLast} - */ - public berriesEaten: BerryType[] = [] + */ + public berriesEaten: BerryType[] = []; } export enum AiType { @@ -8045,13 +6999,7 @@ export class PokemonMove { */ public maxPpOverride?: number; - constructor( - moveId: Moves, - ppUsed = 0, - ppUp = 0, - virtual = false, - maxPpOverride?: number, - ) { + constructor(moveId: Moves, ppUsed = 0, ppUp = 0, virtual = false, maxPpOverride?: number) { this.moveId = moveId; this.ppUsed = ppUsed; this.ppUp = ppUp; @@ -8063,21 +7011,13 @@ export class PokemonMove { * Checks whether the move can be selected or performed by a Pokemon, without consideration for the move's targets. * The move is unusable if it is out of PP, restricted by an effect, or unimplemented. * - * @param {Pokemon} pokemon {@linkcode Pokemon} that would be using this move - * @param {boolean} ignorePp If `true`, skips the PP check - * @param {boolean} ignoreRestrictionTags If `true`, skips the check for move restriction tags (see {@link MoveRestrictionBattlerTag}) + * @param pokemon - {@linkcode Pokemon} that would be using this move + * @param ignorePp - If `true`, skips the PP check + * @param ignoreRestrictionTags - If `true`, skips the check for move restriction tags (see {@link MoveRestrictionBattlerTag}) * @returns `true` if the move can be selected and used by the Pokemon, otherwise `false`. */ - isUsable( - pokemon: Pokemon, - ignorePp = false, - ignoreRestrictionTags = false, - ): boolean { - if ( - this.moveId && - !ignoreRestrictionTags && - pokemon.isMoveRestricted(this.moveId, pokemon) - ) { + isUsable(pokemon: Pokemon, ignorePp = false, ignoreRestrictionTags = false): boolean { + if (this.moveId && !ignoreRestrictionTags && pokemon.isMoveRestricted(this.moveId, pokemon)) { return false; } @@ -8085,9 +7025,7 @@ export class PokemonMove { return false; } - return ( - ignorePp || this.ppUsed < this.getMovePp() || this.getMove().pp === -1 - ); + return ignorePp || this.ppUsed < this.getMovePp() || this.getMove().pp === -1; } getMove(): Move { @@ -8098,15 +7036,12 @@ export class PokemonMove { * Sets {@link ppUsed} for this move and ensures the value does not exceed {@link getMovePp} * @param count Amount of PP to use */ - usePp(count: number = 1) { + usePp(count = 1) { this.ppUsed = Math.min(this.ppUsed + count, this.getMovePp()); } getMovePp(): number { - return ( - this.maxPpOverride || - this.getMove().pp + this.ppUp * toDmgValue(this.getMove().pp / 5) - ); + return this.maxPpOverride || this.getMove().pp + this.ppUp * toDmgValue(this.getMove().pp / 5); } getPpRatio(): number { @@ -8123,12 +7058,6 @@ export class PokemonMove { * @returns A valid {@linkcode PokemonMove} object */ static loadMove(source: PokemonMove | any): PokemonMove { - return new PokemonMove( - source.moveId, - source.ppUsed, - source.ppUp, - source.virtual, - source.maxPpOverride, - ); + return new PokemonMove(source.moveId, source.ppUsed, source.ppUp, source.virtual, source.maxPpOverride); } } diff --git a/src/phases/revival-blessing-phase.ts b/src/phases/revival-blessing-phase.ts index 598d9109abc..428acaf9ed4 100644 --- a/src/phases/revival-blessing-phase.ts +++ b/src/phases/revival-blessing-phase.ts @@ -24,7 +24,7 @@ export class RevivalBlessingPhase extends BattlePhase { UiMode.PARTY, PartyUiMode.REVIVAL_BLESSING, this.user.getFieldIndex(), - (slotIndex: integer, _option: PartyOption) => { + (slotIndex: number, _option: PartyOption) => { if (slotIndex >= 0 && slotIndex < 6) { const pokemon = globalScene.getPlayerParty()[slotIndex]; if (!pokemon || !pokemon.isFainted()) { diff --git a/src/ui/login-form-ui-handler.ts b/src/ui/login-form-ui-handler.ts index 714a9b39771..5c48cf55753 100644 --- a/src/ui/login-form-ui-handler.ts +++ b/src/ui/login-form-ui-handler.ts @@ -151,9 +151,9 @@ export default class LoginFormUiHandler extends FormModalUiHandler { // Prevent overlapping overrides on action modification this.submitAction = originalLoginAction; this.sanitizeInputs(); - globalScene.ui.setMode(UiMode.LOADING, { buttonActions: [] }); + globalScene.ui.setMode(UiMode.LOADING, { buttonActions: [] }); const onFail = error => { - globalScene.ui.setMode(UiMode.LOGIN_FORM, Object.assign(config, { errorMessage: error?.trim() })); + globalScene.ui.setMode(UiMode.LOGIN_FORM, Object.assign(config, { errorMessage: error?.trim() })); globalScene.ui.playError(); }; if (!this.inputs[0].text) { @@ -243,7 +243,7 @@ export default class LoginFormUiHandler extends FormModalUiHandler { }, }); } - globalScene.ui.setOverlayMode(UiMode.OPTION_SELECT, { + globalScene.ui.setOverlayMode(UiMode.OPTION_SELECT, { options: options, delay: 1000, }); From 6c676f1f11215a23826432bd552be5cd22c1195e Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Tue, 27 May 2025 15:41:06 -0500 Subject: [PATCH 14/71] [Misc] Add decrypt-save.js utility script (#5731) * Add decrypt-save.js * Update scripts/decrypt-save.js Co-authored-by: Amani H. <109637146+xsn34kzx@users.noreply.github.com> --------- Co-authored-by: Amani H. <109637146+xsn34kzx@users.noreply.github.com> --- scripts/decrypt-save.js | 149 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 scripts/decrypt-save.js diff --git a/scripts/decrypt-save.js b/scripts/decrypt-save.js new file mode 100644 index 00000000000..a7239a40df6 --- /dev/null +++ b/scripts/decrypt-save.js @@ -0,0 +1,149 @@ +import pkg from "crypto-js"; +const { AES, enc } = pkg; +// biome-ignore lint: This is how you import fs from node +import * as fs from "node:fs"; + +const SAVE_KEY = "x0i2O7WRiANTqPmZ"; + +/** + * A map of condensed keynames to their associated full names + * NOTE: Update this if `src/system/game-data#systemShortKeys` ever changes! + */ +const systemShortKeys = { + seenAttr: "$sa", + caughtAttr: "$ca", + natureAttr: "$na", + seenCount: "$s", + caughtCount: "$c", + hatchedCount: "$hc", + ivs: "$i", + moveset: "$m", + eggMoves: "$em", + candyCount: "$x", + friendship: "$f", + abilityAttr: "$a", + passiveAttr: "$pa", + valueReduction: "$vr", + classicWinCount: "$wc", +}; + +/** + * Replace the shortened key names with their full names + * @param {string} dataStr - The string to convert + * @returns {string} The string with shortened keynames replaced with full names + */ +function convertSystemDataStr(dataStr) { + const fromKeys = Object.values(systemShortKeys); + const toKeys = Object.keys(systemShortKeys); + for (const k in fromKeys) { + dataStr = dataStr.replace(new RegExp(`${fromKeys[k].replace("$", "\\$")}`, "g"), toKeys[k]); + } + + return dataStr; +} + +/** + * Decrypt a save + * @param {string} path - The path to the encrypted save file + * @returns {string} The decrypted save data + */ +function decryptSave(path) { + // Check if the file exists + if (!fs.existsSync(path)) { + console.error(`File not found: ${path}`); + process.exit(1); + } + let fileData; + try { + fileData = fs.readFileSync(path, "utf8"); + } catch (e) { + switch (e.code) { + case "ENOENT": + console.error(`File not found: ${path}`); + break; + case "EACCES": + console.error(`Could not open ${path}: Permission denied`); + break; + case "EISDIR": + console.error(`Unable to read ${path} as it is a directory`); + break; + default: + console.error(`Error reading file: ${e.message}`); + } + process.exit(1); + } + return convertSystemDataStr(AES.decrypt(fileData, SAVE_KEY).toString(enc.Utf8)); +} + +/* Print the usage message and exits */ +function printUsage() { + console.log(` +Usage: node decrypt-save.js [save-file] + +Arguments: + file-path Path to the encrypted save file to decrypt. + save-file Path to where the decrypted data should be written. If not provided, the decrypted data will be printed to the console. + +Options: + -h, --help Show this help message and exit. + +Description: + This script decrypts an encrypted pokerogue save file +`); +} + +/** + * Write `data` to `filePath`, gracefully communicating errors that arise + * @param {string} filePath + * @param {string} data + */ +function writeToFile(filePath, data) { + try { + fs.writeFileSync(filePath, data); + } catch (e) { + switch (e.code) { + case "EACCES": + console.error(`Could not open ${filePath}: Permission denied`); + break; + case "EISDIR": + console.error(`Unable to write to ${filePath} as it is a directory`); + break; + default: + console.error(`Error writing file: ${e.message}`); + } + process.exit(1); + } +} + +function main() { + let args = process.argv.slice(2); + // Get options + const options = args.filter(arg => arg.startsWith("-")); + // get args + args = args.filter(arg => !arg.startsWith("-")); + + if (args.length === 0 || options.includes("-h") || options.includes("--help") || args.length > 2) { + printUsage(); + process.exit(0); + } + // If the user provided a second argument, check if the file exists already and refuse to write to it. + if (args.length === 2) { + const destPath = args[1]; + if (fs.existsSync(destPath)) { + console.error(`Refusing to overwrite ${destPath}`); + process.exit(1); + } + } + + // Otherwise, commence decryption. + const decrypt = decryptSave(args[0]); + + if (args.length === 1) { + process.stdout.write(decrypt); + process.exit(0); + } + + writeToFile(destPath, decrypt); +} + +main(); From 2deced5565c92e5f9d99a6cd8fbb683d767ce105 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Tue, 27 May 2025 16:46:56 -0500 Subject: [PATCH 15/71] [Bug][Move] Allow gastro acid to suppress passives if main ability is unsuppressable (#5854) * Allow gastro acid to suppress passives if main ability is unsuppressable * Update gastro_acid.test.ts * Update src/data/moves/move.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Add test to ensure unsuppressable main ability is not suppressed --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/data/moves/move.ts | 2 +- test/moves/gastro_acid.test.ts | 29 ++++++++++++++++++++++++++--- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index 31ad3337926..8a0da5f35c2 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -7521,7 +7521,7 @@ export class SuppressAbilitiesAttr extends MoveEffectAttr { /** Causes the effect to fail when the target's ability is unsupressable or already suppressed. */ getCondition(): MoveConditionFunc { - return (user, target, move) => target.getAbility().isSuppressable && !target.summonData.abilitySuppressed; + return (_user, target, _move) => !target.summonData.abilitySuppressed && (target.getAbility().isSuppressable || (target.hasPassive() && target.getPassiveAbility().isSuppressable)); } } diff --git a/test/moves/gastro_acid.test.ts b/test/moves/gastro_acid.test.ts index 8247d29c0a0..333619d16db 100644 --- a/test/moves/gastro_acid.test.ts +++ b/test/moves/gastro_acid.test.ts @@ -25,7 +25,7 @@ describe("Moves - Gastro Acid", () => { game.override.battleStyle("double"); game.override.startingLevel(1); game.override.enemyLevel(100); - game.override.ability(Abilities.NONE); + game.override.ability(Abilities.BALL_FETCH); game.override.moveset([Moves.GASTRO_ACID, Moves.WATER_GUN, Moves.SPLASH, Moves.CORE_ENFORCER]); game.override.enemySpecies(Species.BIDOOF); game.override.enemyMoveset(Moves.SPLASH); @@ -40,7 +40,7 @@ describe("Moves - Gastro Acid", () => { * - player mon 1 should have dealt damage, player mon 2 should have not */ - await game.startBattle(); + await game.classicMode.startBattle(); game.move.select(Moves.GASTRO_ACID, 0, BattlerIndex.ENEMY); game.move.select(Moves.SPLASH, 1); @@ -63,7 +63,7 @@ describe("Moves - Gastro Acid", () => { it("fails if used on an enemy with an already-suppressed ability", async () => { game.override.battleStyle("single"); - await game.startBattle(); + await game.classicMode.startBattle(); game.move.select(Moves.CORE_ENFORCER); // Force player to be slower to enable Core Enforcer to proc its suppression effect @@ -77,4 +77,27 @@ describe("Moves - Gastro Acid", () => { expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); + + it("should suppress the passive of a target even if its main ability is unsuppressable and not suppress main abli", async () => { + game.override + .enemyAbility(Abilities.COMATOSE) + .enemyPassiveAbility(Abilities.WATER_ABSORB) + .moveset([Moves.SPLASH, Moves.GASTRO_ACID, Moves.WATER_GUN]); + await game.classicMode.startBattle([Species.MAGIKARP]); + + const enemyPokemon = game.scene.getEnemyPokemon(); + + game.move.select(Moves.GASTRO_ACID); + await game.toNextTurn(); + expect(enemyPokemon?.summonData.abilitySuppressed).toBe(true); + + game.move.select(Moves.WATER_GUN); + await game.toNextTurn(); + expect(enemyPokemon?.getHpRatio()).toBeLessThan(1); + + game.move.select(Moves.SPORE); + await game.phaseInterceptor.to("BerryPhase"); + + expect(enemyPokemon?.status?.effect).toBeFalsy(); + }); }); From c236996a02f581f9fd54c873d4aba5cfd4836eeb Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Wed, 28 May 2025 00:08:49 +0200 Subject: [PATCH 16/71] [UI/UX] [Localization] starterInfoText adjustments and clean up (#5859) * starterInfoText adjustments and clean up * starterInfoText adjustments and clean up * Update starter-select-ui-handler.ts * Update starter-select-ui-handler.ts --------- Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com> --- src/ui/starter-select-ui-handler.ts | 41 +++++++++++++++-------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 80acac6a6b4..a971ba86479 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -108,17 +108,21 @@ const languageSettings: { [key: string]: LanguageSetting } = { instructionTextSize: "38px", }, de: { - starterInfoTextSize: "48px", + starterInfoTextSize: "54px", instructionTextSize: "35px", - starterInfoXPos: 33, + starterInfoXPos: 35, }, "es-ES": { - starterInfoTextSize: "52px", - instructionTextSize: "35px", + starterInfoTextSize: "50px", + instructionTextSize: "38px", + starterInfoYOffset: 0.5, + starterInfoXPos: 38, }, "es-MX": { - starterInfoTextSize: "52px", - instructionTextSize: "35px", + starterInfoTextSize: "50px", + instructionTextSize: "38px", + starterInfoYOffset: 0.5, + starterInfoXPos: 38, }, fr: { starterInfoTextSize: "54px", @@ -128,21 +132,16 @@ const languageSettings: { [key: string]: LanguageSetting } = { starterInfoTextSize: "56px", instructionTextSize: "38px", }, - pt_BR: { - starterInfoTextSize: "47px", - instructionTextSize: "38px", + "pt-BR": { + starterInfoTextSize: "48px", + instructionTextSize: "42px", + starterInfoYOffset: 0.5, starterInfoXPos: 33, }, zh: { - starterInfoTextSize: "47px", - instructionTextSize: "38px", - starterInfoYOffset: 1, - starterInfoXPos: 24, - }, - pt: { - starterInfoTextSize: "48px", - instructionTextSize: "42px", - starterInfoXPos: 33, + starterInfoTextSize: "56px", + instructionTextSize: "36px", + starterInfoXPos: 26, }, ko: { starterInfoTextSize: "60px", @@ -156,9 +155,11 @@ const languageSettings: { [key: string]: LanguageSetting } = { starterInfoYOffset: 0.5, starterInfoXPos: 33, }, - "ca-ES": { - starterInfoTextSize: "52px", + ca: { + starterInfoTextSize: "48px", instructionTextSize: "38px", + starterInfoYOffset: 0.5, + starterInfoXPos: 29, }, }; From d5789105f344abd6b6234d2b14410d03ae91e4bf Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Wed, 28 May 2025 12:29:03 -0500 Subject: [PATCH 17/71] [Refactor][UI/UX] Cleanup battle-info ui code (#5696) * Create battle-info directory and move battle-info.ts to it * Move player and enemy battle info to their own files * Move subclass specific parts of constructor to subclass constructor * Fixup mock gameobject methods to match phaser gameobject returns * Make statOrder specific to subclass * Create getShinyDescriptor function in utils * Move icon construction to its own function * Cleanup enemybattleinfo constructor to use chaining * Make flyout exclusive to EnemyBattleInfo * Move EnemyPokemon specific init Logic to its class * Break up initInfo into different methods * Remove hp bar segment dividers from base battle info * Move setMini to pokemoninfo * Breakup updateInfo into smaller parts * Remove hp info handling from base updateInfo * Use phaser object chaining methods * Add some docs * Add missing chain usage * Use getShinyDescriptor in pokemon-info-container * Minor cleanup of updatePokemonExp * Fixup setSizeToFrame mock * Ensure pokemon hp numbers are not visible during stat display * Update src/utils/common.ts Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com> * Make summary-ui-handler use new shinyDescriptor method * Remove `undefined` parameter pass Co-authored-by: Amani H. <109637146+xsn34kzx@users.noreply.github.com> * Address kev's review comments Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Ensure hp number display fades in/out * Ensure ribbon and caught indicator fade with stat display * Update src/ui/battle-info/battle-info.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Move construction of stats and type icons to their own methods * Make setPositionRelative return this * Improve doc comment on paddingX param * Fix mock sprite's setPositionRelative --------- Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com> Co-authored-by: Amani H. <109637146+xsn34kzx@users.noreply.github.com> Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/field/pokemon.ts | 31 +- src/main.ts | 2 +- src/typings/phaser/index.d.ts | 12 +- src/ui-inputs.ts | 2 +- src/ui/battle-flyout.ts | 4 +- src/ui/battle-info.ts | 986 ------------------ src/ui/battle-info/battle-info.ts | 688 ++++++++++++ src/ui/battle-info/enemy-battle-info.ts | 235 +++++ src/ui/battle-info/player-battle-info.ts | 242 +++++ src/ui/fight-ui-handler.ts | 6 +- src/ui/pokemon-info-container.ts | 27 +- src/ui/summary-ui-handler.ts | 26 +- src/utils/common.ts | 16 + test/testUtils/mocks/mockGameObject.ts | 1 + .../mocks/mocksContainer/mockContainer.ts | 187 ++-- .../mocks/mocksContainer/mockGraphics.ts | 53 +- .../mocks/mocksContainer/mockRectangle.ts | 42 +- .../mocks/mocksContainer/mockSprite.ts | 153 +-- .../mocks/mocksContainer/mockText.ts | 104 +- test/testUtils/testFileInitialization.ts | 4 +- 20 files changed, 1602 insertions(+), 1219 deletions(-) delete mode 100644 src/ui/battle-info.ts create mode 100644 src/ui/battle-info/battle-info.ts create mode 100644 src/ui/battle-info/enemy-battle-info.ts create mode 100644 src/ui/battle-info/player-battle-info.ts diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 85b003517a6..329ba06fd09 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -5,7 +5,9 @@ import { globalScene } from "#app/global-scene"; import type { Variant } from "#app/sprites/variant"; import { populateVariantColors, variantColorCache } from "#app/sprites/variant"; import { variantData } from "#app/sprites/variant"; -import BattleInfo, { PlayerBattleInfo, EnemyBattleInfo } from "#app/ui/battle-info"; +import BattleInfo from "#app/ui/battle-info/battle-info"; +import { EnemyBattleInfo } from "#app/ui/battle-info/enemy-battle-info"; +import { PlayerBattleInfo } from "#app/ui/battle-info/player-battle-info"; import type Move from "#app/data/moves/move"; import { HighCritAttr, @@ -3347,22 +3349,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return this.battleInfo.updateInfo(this, instant); } - /** - * Show or hide the type effectiveness multiplier window - * Passing undefined will hide the window - */ - updateEffectiveness(effectiveness?: string) { - this.battleInfo.updateEffectiveness(effectiveness); - } - toggleStats(visible: boolean): void { this.battleInfo.toggleStats(visible); } - toggleFlyout(visible: boolean): void { - this.battleInfo.toggleFlyout(visible); - } - /** * Adds experience to this PlayerPokemon, subject to wave based level caps. * @param exp The amount of experience to add @@ -5518,6 +5508,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } export class PlayerPokemon extends Pokemon { + protected battleInfo: PlayerBattleInfo; public compatibleTms: Moves[]; constructor( @@ -6038,6 +6029,7 @@ export class PlayerPokemon extends Pokemon { } export class EnemyPokemon extends Pokemon { + protected battleInfo: EnemyBattleInfo; public trainerSlot: TrainerSlot; public aiType: AiType; public bossSegments: number; @@ -6709,6 +6701,19 @@ export class EnemyPokemon extends Pokemon { return ret; } + + + /** + * Show or hide the type effectiveness multiplier window + * Passing undefined will hide the window + */ + updateEffectiveness(effectiveness?: string) { + this.battleInfo.updateEffectiveness(effectiveness); + } + + toggleFlyout(visible: boolean): void { + this.battleInfo.toggleFlyout(visible); + } } /** diff --git a/src/main.ts b/src/main.ts index 7db663d14c7..38bfcbe5636 100644 --- a/src/main.ts +++ b/src/main.ts @@ -29,7 +29,7 @@ window.addEventListener("unhandledrejection", event => { const setPositionRelative = function (guideObject: Phaser.GameObjects.GameObject, x: number, y: number) { const offsetX = guideObject.width * (-0.5 + (0.5 - guideObject.originX)); const offsetY = guideObject.height * (-0.5 + (0.5 - guideObject.originY)); - this.setPosition(guideObject.x + offsetX + x, guideObject.y + offsetY + y); + return this.setPosition(guideObject.x + offsetX + x, guideObject.y + offsetY + y); }; Phaser.GameObjects.Container.prototype.setPositionRelative = setPositionRelative; diff --git a/src/typings/phaser/index.d.ts b/src/typings/phaser/index.d.ts index f3665768cec..26fbcff75bd 100644 --- a/src/typings/phaser/index.d.ts +++ b/src/typings/phaser/index.d.ts @@ -20,37 +20,37 @@ declare module "phaser" { /** * Sets this object's position relative to another object with a given offset */ - setPositionRelative(guideObject: any, x: number, y: number): void; + setPositionRelative(guideObject: any, x: number, y: number): this; } interface Sprite { /** * Sets this object's position relative to another object with a given offset */ - setPositionRelative(guideObject: any, x: number, y: number): void; + setPositionRelative(guideObject: any, x: number, y: number): this; } interface Image { /** * Sets this object's position relative to another object with a given offset */ - setPositionRelative(guideObject: any, x: number, y: number): void; + setPositionRelative(guideObject: any, x: number, y: number): this; } interface NineSlice { /** * Sets this object's position relative to another object with a given offset */ - setPositionRelative(guideObject: any, x: number, y: number): void; + setPositionRelative(guideObject: any, x: number, y: number): this; } interface Text { /** * Sets this object's position relative to another object with a given offset */ - setPositionRelative(guideObject: any, x: number, y: number): void; + setPositionRelative(guideObject: any, x: number, y: number): this; } interface Rectangle { /** * Sets this object's position relative to another object with a given offset */ - setPositionRelative(guideObject: any, x: number, y: number): void; + setPositionRelative(guideObject: any, x: number, y: number): this; } } diff --git a/src/ui-inputs.ts b/src/ui-inputs.ts index 0c13cdb9512..e4f11e1c93c 100644 --- a/src/ui-inputs.ts +++ b/src/ui-inputs.ts @@ -161,7 +161,7 @@ export class UiInputs { buttonInfo(pressed = true): void { if (globalScene.showMovesetFlyout) { - for (const p of globalScene.getField().filter(p => p?.isActive(true))) { + for (const p of globalScene.getEnemyField().filter(p => p?.isActive(true))) { p.toggleFlyout(pressed); } } diff --git a/src/ui/battle-flyout.ts b/src/ui/battle-flyout.ts index e590bebcf5a..f8ef5fc1ec4 100644 --- a/src/ui/battle-flyout.ts +++ b/src/ui/battle-flyout.ts @@ -1,4 +1,4 @@ -import type { default as Pokemon } from "../field/pokemon"; +import type { EnemyPokemon, default as Pokemon } from "../field/pokemon"; import { addTextObject, TextStyle } from "./text"; import { fixedInt } from "#app/utils/common"; import { globalScene } from "#app/global-scene"; @@ -126,7 +126,7 @@ export default class BattleFlyout extends Phaser.GameObjects.Container { * Links the given {@linkcode Pokemon} and subscribes to the {@linkcode BattleSceneEventType.MOVE_USED} event * @param pokemon {@linkcode Pokemon} to link to this flyout */ - initInfo(pokemon: Pokemon) { + initInfo(pokemon: EnemyPokemon) { this.pokemon = pokemon; this.name = `Flyout ${getPokemonNameWithAffix(this.pokemon)}`; diff --git a/src/ui/battle-info.ts b/src/ui/battle-info.ts deleted file mode 100644 index 2822e8364ec..00000000000 --- a/src/ui/battle-info.ts +++ /dev/null @@ -1,986 +0,0 @@ -import type { EnemyPokemon, default as Pokemon } from "../field/pokemon"; -import { getLevelTotalExp, getLevelRelExp } from "../data/exp"; -import { getLocalizedSpriteKey, fixedInt } from "#app/utils/common"; -import { addTextObject, TextStyle } from "./text"; -import { getGenderSymbol, getGenderColor, Gender } from "../data/gender"; -import { StatusEffect } from "#enums/status-effect"; -import { globalScene } from "#app/global-scene"; -import { getTypeRgb } from "#app/data/type"; -import { PokemonType } from "#enums/pokemon-type"; -import { getVariantTint } from "#app/sprites/variant"; -import { Stat } from "#enums/stat"; -import BattleFlyout from "./battle-flyout"; -import { WindowVariant, addWindow } from "./ui-theme"; -import i18next from "i18next"; -import { ExpGainsSpeed } from "#app/enums/exp-gains-speed"; - -export default class BattleInfo extends Phaser.GameObjects.Container { - public static readonly EXP_GAINS_DURATION_BASE = 1650; - - private baseY: number; - - private player: boolean; - private mini: boolean; - private boss: boolean; - private bossSegments: number; - private offset: boolean; - private lastName: string | null; - private lastTeraType: PokemonType; - private lastStatus: StatusEffect; - private lastHp: number; - private lastMaxHp: number; - private lastHpFrame: string | null; - private lastExp: number; - private lastLevelExp: number; - private lastLevel: number; - private lastLevelCapped: boolean; - private lastStats: string; - - private box: Phaser.GameObjects.Sprite; - private nameText: Phaser.GameObjects.Text; - private genderText: Phaser.GameObjects.Text; - private ownedIcon: Phaser.GameObjects.Sprite; - private championRibbon: Phaser.GameObjects.Sprite; - private teraIcon: Phaser.GameObjects.Sprite; - private shinyIcon: Phaser.GameObjects.Sprite; - private fusionShinyIcon: Phaser.GameObjects.Sprite; - private splicedIcon: Phaser.GameObjects.Sprite; - private statusIndicator: Phaser.GameObjects.Sprite; - private levelContainer: Phaser.GameObjects.Container; - private hpBar: Phaser.GameObjects.Image; - private hpBarSegmentDividers: Phaser.GameObjects.Rectangle[]; - private levelNumbersContainer: Phaser.GameObjects.Container; - private hpNumbersContainer: Phaser.GameObjects.Container; - private type1Icon: Phaser.GameObjects.Sprite; - private type2Icon: Phaser.GameObjects.Sprite; - private type3Icon: Phaser.GameObjects.Sprite; - private expBar: Phaser.GameObjects.Image; - - // #region Type effectiveness hint objects - private effectivenessContainer: Phaser.GameObjects.Container; - private effectivenessWindow: Phaser.GameObjects.NineSlice; - private effectivenessText: Phaser.GameObjects.Text; - private currentEffectiveness?: string; - // #endregion - - public expMaskRect: Phaser.GameObjects.Graphics; - - private statsContainer: Phaser.GameObjects.Container; - private statsBox: Phaser.GameObjects.Sprite; - private statValuesContainer: Phaser.GameObjects.Container; - private statNumbers: Phaser.GameObjects.Sprite[]; - - public flyoutMenu?: BattleFlyout; - - private statOrder: Stat[]; - private readonly statOrderPlayer = [Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.ACC, Stat.EVA, Stat.SPD]; - private readonly statOrderEnemy = [Stat.HP, Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.ACC, Stat.EVA, Stat.SPD]; - - constructor(x: number, y: number, player: boolean) { - super(globalScene, x, y); - this.baseY = y; - this.player = player; - this.mini = !player; - this.boss = false; - this.offset = false; - this.lastName = null; - this.lastTeraType = PokemonType.UNKNOWN; - this.lastStatus = StatusEffect.NONE; - this.lastHp = -1; - this.lastMaxHp = -1; - this.lastHpFrame = null; - this.lastExp = -1; - this.lastLevelExp = -1; - this.lastLevel = -1; - - // Initially invisible and shown via Pokemon.showInfo - this.setVisible(false); - - this.box = globalScene.add.sprite(0, 0, this.getTextureName()); - this.box.setName("box"); - this.box.setOrigin(1, 0.5); - this.add(this.box); - - this.nameText = addTextObject(player ? -115 : -124, player ? -15.2 : -11.2, "", TextStyle.BATTLE_INFO); - this.nameText.setName("text_name"); - this.nameText.setOrigin(0, 0); - this.add(this.nameText); - - this.genderText = addTextObject(0, 0, "", TextStyle.BATTLE_INFO); - this.genderText.setName("text_gender"); - this.genderText.setOrigin(0, 0); - this.genderText.setPositionRelative(this.nameText, 0, 2); - this.add(this.genderText); - - if (!this.player) { - this.ownedIcon = globalScene.add.sprite(0, 0, "icon_owned"); - this.ownedIcon.setName("icon_owned"); - this.ownedIcon.setVisible(false); - this.ownedIcon.setOrigin(0, 0); - this.ownedIcon.setPositionRelative(this.nameText, 0, 11.75); - this.add(this.ownedIcon); - - this.championRibbon = globalScene.add.sprite(0, 0, "champion_ribbon"); - this.championRibbon.setName("icon_champion_ribbon"); - this.championRibbon.setVisible(false); - this.championRibbon.setOrigin(0, 0); - this.championRibbon.setPositionRelative(this.nameText, 8, 11.75); - this.add(this.championRibbon); - } - - this.teraIcon = globalScene.add.sprite(0, 0, "icon_tera"); - this.teraIcon.setName("icon_tera"); - this.teraIcon.setVisible(false); - this.teraIcon.setOrigin(0, 0); - this.teraIcon.setScale(0.5); - this.teraIcon.setPositionRelative(this.nameText, 0, 2); - this.teraIcon.setInteractive(new Phaser.Geom.Rectangle(0, 0, 12, 15), Phaser.Geom.Rectangle.Contains); - this.add(this.teraIcon); - - this.shinyIcon = globalScene.add.sprite(0, 0, "shiny_star"); - this.shinyIcon.setName("icon_shiny"); - this.shinyIcon.setVisible(false); - this.shinyIcon.setOrigin(0, 0); - this.shinyIcon.setScale(0.5); - this.shinyIcon.setPositionRelative(this.nameText, 0, 2); - this.shinyIcon.setInteractive(new Phaser.Geom.Rectangle(0, 0, 12, 15), Phaser.Geom.Rectangle.Contains); - this.add(this.shinyIcon); - - this.fusionShinyIcon = globalScene.add.sprite(0, 0, "shiny_star_2"); - this.fusionShinyIcon.setName("icon_fusion_shiny"); - this.fusionShinyIcon.setVisible(false); - this.fusionShinyIcon.setOrigin(0, 0); - this.fusionShinyIcon.setScale(0.5); - this.fusionShinyIcon.setPosition(this.shinyIcon.x, this.shinyIcon.y); - this.add(this.fusionShinyIcon); - - this.splicedIcon = globalScene.add.sprite(0, 0, "icon_spliced"); - this.splicedIcon.setName("icon_spliced"); - this.splicedIcon.setVisible(false); - this.splicedIcon.setOrigin(0, 0); - this.splicedIcon.setScale(0.5); - this.splicedIcon.setPositionRelative(this.nameText, 0, 2); - this.splicedIcon.setInteractive(new Phaser.Geom.Rectangle(0, 0, 12, 15), Phaser.Geom.Rectangle.Contains); - this.add(this.splicedIcon); - - this.statusIndicator = globalScene.add.sprite(0, 0, getLocalizedSpriteKey("statuses")); - this.statusIndicator.setName("icon_status"); - this.statusIndicator.setVisible(false); - this.statusIndicator.setOrigin(0, 0); - this.statusIndicator.setPositionRelative(this.nameText, 0, 11.5); - this.add(this.statusIndicator); - - this.levelContainer = globalScene.add.container(player ? -41 : -50, player ? -10 : -5); - this.levelContainer.setName("container_level"); - this.add(this.levelContainer); - - const levelOverlay = globalScene.add.image(0, 0, "overlay_lv"); - this.levelContainer.add(levelOverlay); - - this.hpBar = globalScene.add.image(player ? -61 : -71, player ? -1 : 4.5, "overlay_hp"); - this.hpBar.setName("hp_bar"); - this.hpBar.setOrigin(0); - this.add(this.hpBar); - - this.hpBarSegmentDividers = []; - - this.levelNumbersContainer = globalScene.add.container(9.5, globalScene.uiTheme ? 0 : -0.5); - this.levelNumbersContainer.setName("container_level"); - this.levelContainer.add(this.levelNumbersContainer); - - if (this.player) { - this.hpNumbersContainer = globalScene.add.container(-15, 10); - this.hpNumbersContainer.setName("container_hp"); - this.add(this.hpNumbersContainer); - - const expBar = globalScene.add.image(-98, 18, "overlay_exp"); - expBar.setName("overlay_exp"); - expBar.setOrigin(0); - this.add(expBar); - - const expMaskRect = globalScene.make.graphics({}); - expMaskRect.setScale(6); - expMaskRect.fillStyle(0xffffff); - expMaskRect.beginPath(); - expMaskRect.fillRect(127, 126, 85, 2); - - const expMask = expMaskRect.createGeometryMask(); - - expBar.setMask(expMask); - - this.expBar = expBar; - this.expMaskRect = expMaskRect; - } - - this.statsContainer = globalScene.add.container(0, 0); - this.statsContainer.setName("container_stats"); - this.statsContainer.setAlpha(0); - this.add(this.statsContainer); - - this.statsBox = globalScene.add.sprite(0, 0, `${this.getTextureName()}_stats`); - this.statsBox.setName("box_stats"); - this.statsBox.setOrigin(1, 0.5); - this.statsContainer.add(this.statsBox); - - const statLabels: Phaser.GameObjects.Sprite[] = []; - this.statNumbers = []; - - this.statValuesContainer = globalScene.add.container(0, 0); - this.statsContainer.add(this.statValuesContainer); - - // this gives us a different starting location from the left of the label and padding between stats for a player vs enemy - // since the player won't have HP to show, it doesn't need to change from the current version - const startingX = this.player ? -this.statsBox.width + 8 : -this.statsBox.width + 5; - const paddingX = this.player ? 4 : 2; - const statOverflow = this.player ? 1 : 0; - this.statOrder = this.player ? this.statOrderPlayer : this.statOrderEnemy; // this tells us whether or not to use the player or enemy battle stat order - - this.statOrder.map((s, i) => { - // we do a check for i > statOverflow to see when the stat labels go onto the next column - // For enemies, we have HP (i=0) by itself then a new column, so we check for i > 0 - // For players, we don't have HP, so we start with i = 0 and i = 1 for our first column, and so need to check for i > 1 - const statX = - i > statOverflow - ? this.statNumbers[Math.max(i - 2, 0)].x + this.statNumbers[Math.max(i - 2, 0)].width + paddingX - : startingX; // we have the Math.max(i - 2, 0) in there so for i===1 to not return a negative number; since this is now based on anything >0 instead of >1, we need to allow for i-2 < 0 - - const baseY = -this.statsBox.height / 2 + 4; // this is the baseline for the y-axis - let statY: number; // this will be the y-axis placement for the labels - if (this.statOrder[i] === Stat.SPD || this.statOrder[i] === Stat.HP) { - statY = baseY + 5; - } else { - statY = baseY + (!!(i % 2) === this.player ? 10 : 0); // we compare i % 2 against this.player to tell us where to place the label; because this.battleStatOrder for enemies has HP, this.battleStatOrder[1]=ATK, but for players this.battleStatOrder[0]=ATK, so this comparing i % 2 to this.player fixes this issue for us - } - - const statLabel = globalScene.add.sprite(statX, statY, "pbinfo_stat", Stat[s]); - statLabel.setName("icon_stat_label_" + i.toString()); - statLabel.setOrigin(0, 0); - statLabels.push(statLabel); - this.statValuesContainer.add(statLabel); - - const statNumber = globalScene.add.sprite( - statX + statLabel.width, - statY, - "pbinfo_stat_numbers", - this.statOrder[i] !== Stat.HP ? "3" : "empty", - ); - statNumber.setName("icon_stat_number_" + i.toString()); - statNumber.setOrigin(0, 0); - this.statNumbers.push(statNumber); - this.statValuesContainer.add(statNumber); - - if (this.statOrder[i] === Stat.HP) { - statLabel.setVisible(false); - statNumber.setVisible(false); - } - }); - - if (!this.player) { - this.flyoutMenu = new BattleFlyout(this.player); - this.add(this.flyoutMenu); - - this.moveBelow(this.flyoutMenu, this.box); - } - - this.type1Icon = globalScene.add.sprite( - player ? -139 : -15, - player ? -17 : -15.5, - `pbinfo_${player ? "player" : "enemy"}_type1`, - ); - this.type1Icon.setName("icon_type_1"); - this.type1Icon.setOrigin(0, 0); - this.add(this.type1Icon); - - this.type2Icon = globalScene.add.sprite( - player ? -139 : -15, - player ? -1 : -2.5, - `pbinfo_${player ? "player" : "enemy"}_type2`, - ); - this.type2Icon.setName("icon_type_2"); - this.type2Icon.setOrigin(0, 0); - this.add(this.type2Icon); - - this.type3Icon = globalScene.add.sprite( - player ? -154 : 0, - player ? -17 : -15.5, - `pbinfo_${player ? "player" : "enemy"}_type`, - ); - this.type3Icon.setName("icon_type_3"); - this.type3Icon.setOrigin(0, 0); - this.add(this.type3Icon); - - if (!this.player) { - this.effectivenessContainer = globalScene.add.container(0, 0); - this.effectivenessContainer.setPositionRelative(this.type1Icon, 22, 4); - this.effectivenessContainer.setVisible(false); - this.add(this.effectivenessContainer); - - this.effectivenessText = addTextObject(5, 4.5, "", TextStyle.BATTLE_INFO); - this.effectivenessWindow = addWindow(0, 0, 0, 20, undefined, false, undefined, undefined, WindowVariant.XTHIN); - - this.effectivenessContainer.add(this.effectivenessWindow); - this.effectivenessContainer.add(this.effectivenessText); - } - } - - getStatsValueContainer(): Phaser.GameObjects.Container { - return this.statValuesContainer; - } - - initInfo(pokemon: Pokemon) { - this.updateNameText(pokemon); - const nameTextWidth = this.nameText.displayWidth; - - this.name = pokemon.getNameToRender(); - this.box.name = pokemon.getNameToRender(); - - this.flyoutMenu?.initInfo(pokemon); - - this.genderText.setText(getGenderSymbol(pokemon.gender)); - this.genderText.setColor(getGenderColor(pokemon.gender)); - this.genderText.setPositionRelative(this.nameText, nameTextWidth, 0); - - this.lastTeraType = pokemon.getTeraType(); - - this.teraIcon.setPositionRelative(this.nameText, nameTextWidth + this.genderText.displayWidth + 1, 2); - this.teraIcon.setVisible(pokemon.isTerastallized); - this.teraIcon.on("pointerover", () => { - if (pokemon.isTerastallized) { - globalScene.ui.showTooltip( - "", - i18next.t("fightUiHandler:teraHover", { - type: i18next.t(`pokemonInfo:Type.${PokemonType[this.lastTeraType]}`), - }), - ); - } - }); - this.teraIcon.on("pointerout", () => globalScene.ui.hideTooltip()); - - const isFusion = pokemon.isFusion(true); - - this.splicedIcon.setPositionRelative( - this.nameText, - nameTextWidth + this.genderText.displayWidth + 1 + (this.teraIcon.visible ? this.teraIcon.displayWidth + 1 : 0), - 2.5, - ); - this.splicedIcon.setVisible(isFusion); - if (this.splicedIcon.visible) { - this.splicedIcon.on("pointerover", () => - globalScene.ui.showTooltip( - "", - `${pokemon.species.getName(pokemon.formIndex)}/${pokemon.fusionSpecies?.getName(pokemon.fusionFormIndex)}`, - ), - ); - this.splicedIcon.on("pointerout", () => globalScene.ui.hideTooltip()); - } - - const doubleShiny = isFusion && pokemon.shiny && pokemon.fusionShiny; - const baseVariant = !doubleShiny ? pokemon.getVariant(true) : pokemon.variant; - - this.shinyIcon.setPositionRelative( - this.nameText, - nameTextWidth + - this.genderText.displayWidth + - 1 + - (this.teraIcon.visible ? this.teraIcon.displayWidth + 1 : 0) + - (this.splicedIcon.visible ? this.splicedIcon.displayWidth + 1 : 0), - 2.5, - ); - this.shinyIcon.setTexture(`shiny_star${doubleShiny ? "_1" : ""}`); - this.shinyIcon.setVisible(pokemon.isShiny()); - this.shinyIcon.setTint(getVariantTint(baseVariant)); - if (this.shinyIcon.visible) { - const shinyDescriptor = - doubleShiny || baseVariant - ? `${baseVariant === 2 ? i18next.t("common:epicShiny") : baseVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}${doubleShiny ? `/${pokemon.fusionVariant === 2 ? i18next.t("common:epicShiny") : pokemon.fusionVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}` : ""}` - : ""; - this.shinyIcon.on("pointerover", () => - globalScene.ui.showTooltip( - "", - `${i18next.t("common:shinyOnHover")}${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`, - ), - ); - this.shinyIcon.on("pointerout", () => globalScene.ui.hideTooltip()); - } - - this.fusionShinyIcon.setPosition(this.shinyIcon.x, this.shinyIcon.y); - this.fusionShinyIcon.setVisible(doubleShiny); - if (isFusion) { - this.fusionShinyIcon.setTint(getVariantTint(pokemon.fusionVariant)); - } - - if (!this.player) { - if (this.nameText.visible) { - this.nameText.on("pointerover", () => - globalScene.ui.showTooltip( - "", - i18next.t("battleInfo:generation", { - generation: i18next.t(`starterSelectUiHandler:gen${pokemon.species.generation}`), - }), - ), - ); - this.nameText.on("pointerout", () => globalScene.ui.hideTooltip()); - } - - const dexEntry = globalScene.gameData.dexData[pokemon.species.speciesId]; - this.ownedIcon.setVisible(!!dexEntry.caughtAttr); - const opponentPokemonDexAttr = pokemon.getDexAttr(); - if (globalScene.gameMode.isClassic) { - if ( - globalScene.gameData.starterData[pokemon.species.getRootSpeciesId()].classicWinCount > 0 && - globalScene.gameData.starterData[pokemon.species.getRootSpeciesId(true)].classicWinCount > 0 - ) { - this.championRibbon.setVisible(true); - } - } - - // Check if Player owns all genders and forms of the Pokemon - const missingDexAttrs = (dexEntry.caughtAttr & opponentPokemonDexAttr) < opponentPokemonDexAttr; - - const ownedAbilityAttrs = globalScene.gameData.starterData[pokemon.species.getRootSpeciesId()].abilityAttr; - - // Check if the player owns ability for the root form - const playerOwnsThisAbility = pokemon.checkIfPlayerHasAbilityOfStarter(ownedAbilityAttrs); - - if (missingDexAttrs || !playerOwnsThisAbility) { - this.ownedIcon.setTint(0x808080); - } - - if (this.boss) { - this.updateBossSegmentDividers(pokemon as EnemyPokemon); - } - } - - this.hpBar.setScale(pokemon.getHpRatio(true), 1); - this.lastHpFrame = this.hpBar.scaleX > 0.5 ? "high" : this.hpBar.scaleX > 0.25 ? "medium" : "low"; - this.hpBar.setFrame(this.lastHpFrame); - if (this.player) { - this.setHpNumbers(pokemon.hp, pokemon.getMaxHp()); - } - this.lastHp = pokemon.hp; - this.lastMaxHp = pokemon.getMaxHp(); - - this.setLevel(pokemon.level); - this.lastLevel = pokemon.level; - - this.shinyIcon.setVisible(pokemon.isShiny()); - - const types = pokemon.getTypes(true, false, undefined, true); - this.type1Icon.setTexture(`pbinfo_${this.player ? "player" : "enemy"}_type${types.length > 1 ? "1" : ""}`); - this.type1Icon.setFrame(PokemonType[types[0]].toLowerCase()); - this.type2Icon.setVisible(types.length > 1); - this.type3Icon.setVisible(types.length > 2); - if (types.length > 1) { - this.type2Icon.setFrame(PokemonType[types[1]].toLowerCase()); - } - if (types.length > 2) { - this.type3Icon.setFrame(PokemonType[types[2]].toLowerCase()); - } - - if (this.player) { - this.expMaskRect.x = (pokemon.levelExp / getLevelTotalExp(pokemon.level, pokemon.species.growthRate)) * 510; - this.lastExp = pokemon.exp; - this.lastLevelExp = pokemon.levelExp; - - this.statValuesContainer.setPosition(8, 7); - } - - const stats = this.statOrder.map(() => 0); - - this.lastStats = stats.join(""); - this.updateStats(stats); - } - - getTextureName(): string { - return `pbinfo_${this.player ? "player" : "enemy"}${!this.player && this.boss ? "_boss" : this.mini ? "_mini" : ""}`; - } - - setMini(mini: boolean): void { - if (this.mini === mini) { - return; - } - - this.mini = mini; - - this.box.setTexture(this.getTextureName()); - this.statsBox.setTexture(`${this.getTextureName()}_stats`); - - if (this.player) { - this.y -= 12 * (mini ? 1 : -1); - this.baseY = this.y; - } - - const offsetElements = [ - this.nameText, - this.genderText, - this.teraIcon, - this.splicedIcon, - this.shinyIcon, - this.statusIndicator, - this.levelContainer, - ]; - offsetElements.forEach(el => (el.y += 1.5 * (mini ? -1 : 1))); - - [this.type1Icon, this.type2Icon, this.type3Icon].forEach(el => { - el.x += 4 * (mini ? 1 : -1); - el.y += -8 * (mini ? 1 : -1); - }); - - this.statValuesContainer.x += 2 * (mini ? 1 : -1); - this.statValuesContainer.y += -7 * (mini ? 1 : -1); - - const toggledElements = [this.hpNumbersContainer, this.expBar]; - toggledElements.forEach(el => el.setVisible(!mini)); - } - - toggleStats(visible: boolean): void { - globalScene.tweens.add({ - targets: this.statsContainer, - duration: fixedInt(125), - ease: "Sine.easeInOut", - alpha: visible ? 1 : 0, - }); - } - - updateBossSegments(pokemon: EnemyPokemon): void { - const boss = !!pokemon.bossSegments; - - if (boss !== this.boss) { - this.boss = boss; - - [ - this.nameText, - this.genderText, - this.teraIcon, - this.splicedIcon, - this.shinyIcon, - this.ownedIcon, - this.championRibbon, - this.statusIndicator, - this.statValuesContainer, - ].map(e => (e.x += 48 * (boss ? -1 : 1))); - this.hpBar.x += 38 * (boss ? -1 : 1); - this.hpBar.y += 2 * (this.boss ? -1 : 1); - this.levelContainer.x += 2 * (boss ? -1 : 1); - this.hpBar.setTexture(`overlay_hp${boss ? "_boss" : ""}`); - this.box.setTexture(this.getTextureName()); - this.statsBox.setTexture(`${this.getTextureName()}_stats`); - } - - this.bossSegments = boss ? pokemon.bossSegments : 0; - this.updateBossSegmentDividers(pokemon); - } - - updateBossSegmentDividers(pokemon: EnemyPokemon): void { - while (this.hpBarSegmentDividers.length) { - this.hpBarSegmentDividers.pop()?.destroy(); - } - - if (this.boss && this.bossSegments > 1) { - const uiTheme = globalScene.uiTheme; - const maxHp = pokemon.getMaxHp(); - for (let s = 1; s < this.bossSegments; s++) { - const dividerX = (Math.round((maxHp / this.bossSegments) * s) / maxHp) * this.hpBar.width; - const divider = globalScene.add.rectangle( - 0, - 0, - 1, - this.hpBar.height - (uiTheme ? 0 : 1), - pokemon.bossSegmentIndex >= s ? 0xffffff : 0x404040, - ); - divider.setOrigin(0.5, 0); - divider.setName("hpBar_divider_" + s.toString()); - this.add(divider); - this.moveBelow(divider as Phaser.GameObjects.GameObject, this.statsContainer); - - divider.setPositionRelative(this.hpBar, dividerX, uiTheme ? 0 : 1); - this.hpBarSegmentDividers.push(divider); - } - } - } - - setOffset(offset: boolean): void { - if (this.offset === offset) { - return; - } - - this.offset = offset; - - this.x += 10 * (this.offset === this.player ? 1 : -1); - this.y += 27 * (this.offset ? 1 : -1); - this.baseY = this.y; - } - - updateInfo(pokemon: Pokemon, instant?: boolean): Promise { - return new Promise(resolve => { - if (!globalScene) { - return resolve(); - } - - const gender = pokemon.summonData.illusion?.gender ?? pokemon.gender; - - this.genderText.setText(getGenderSymbol(gender)); - this.genderText.setColor(getGenderColor(gender)); - - const nameUpdated = this.lastName !== pokemon.getNameToRender(); - - if (nameUpdated) { - this.updateNameText(pokemon); - this.genderText.setPositionRelative(this.nameText, this.nameText.displayWidth, 0); - } - - const teraType = pokemon.isTerastallized ? pokemon.getTeraType() : PokemonType.UNKNOWN; - const teraTypeUpdated = this.lastTeraType !== teraType; - - if (teraTypeUpdated) { - this.teraIcon.setVisible(teraType !== PokemonType.UNKNOWN); - this.teraIcon.setPositionRelative( - this.nameText, - this.nameText.displayWidth + this.genderText.displayWidth + 1, - 2, - ); - this.teraIcon.setTintFill(Phaser.Display.Color.GetColor(...getTypeRgb(teraType))); - this.lastTeraType = teraType; - } - - const isFusion = pokemon.isFusion(true); - - if (nameUpdated || teraTypeUpdated) { - this.splicedIcon.setVisible(isFusion); - - this.teraIcon.setPositionRelative( - this.nameText, - this.nameText.displayWidth + this.genderText.displayWidth + 1, - 2, - ); - this.splicedIcon.setPositionRelative( - this.nameText, - this.nameText.displayWidth + - this.genderText.displayWidth + - 1 + - (this.teraIcon.visible ? this.teraIcon.displayWidth + 1 : 0), - 1.5, - ); - this.shinyIcon.setPositionRelative( - this.nameText, - this.nameText.displayWidth + - this.genderText.displayWidth + - 1 + - (this.teraIcon.visible ? this.teraIcon.displayWidth + 1 : 0) + - (this.splicedIcon.visible ? this.splicedIcon.displayWidth + 1 : 0), - 2.5, - ); - } - - if (this.lastStatus !== (pokemon.status?.effect || StatusEffect.NONE)) { - this.lastStatus = pokemon.status?.effect || StatusEffect.NONE; - - if (this.lastStatus !== StatusEffect.NONE) { - this.statusIndicator.setFrame(StatusEffect[this.lastStatus].toLowerCase()); - } - - const offsetX = !this.player ? (this.ownedIcon.visible ? 8 : 0) + (this.championRibbon.visible ? 8 : 0) : 0; - this.statusIndicator.setPositionRelative(this.nameText, offsetX, 11.5); - - this.statusIndicator.setVisible(!!this.lastStatus); - } - - const types = pokemon.getTypes(true, false, undefined, true); - this.type1Icon.setTexture(`pbinfo_${this.player ? "player" : "enemy"}_type${types.length > 1 ? "1" : ""}`); - this.type1Icon.setFrame(PokemonType[types[0]].toLowerCase()); - this.type2Icon.setVisible(types.length > 1); - this.type3Icon.setVisible(types.length > 2); - if (types.length > 1) { - this.type2Icon.setFrame(PokemonType[types[1]].toLowerCase()); - } - if (types.length > 2) { - this.type3Icon.setFrame(PokemonType[types[2]].toLowerCase()); - } - - const updateHpFrame = () => { - const hpFrame = this.hpBar.scaleX > 0.5 ? "high" : this.hpBar.scaleX > 0.25 ? "medium" : "low"; - if (hpFrame !== this.lastHpFrame) { - this.hpBar.setFrame(hpFrame); - this.lastHpFrame = hpFrame; - } - }; - - const updatePokemonHp = () => { - let duration = !instant ? Phaser.Math.Clamp(Math.abs(this.lastHp - pokemon.hp) * 5, 250, 5000) : 0; - const speed = globalScene.hpBarSpeed; - if (speed) { - duration = speed >= 3 ? 0 : duration / Math.pow(2, speed); - } - globalScene.tweens.add({ - targets: this.hpBar, - ease: "Sine.easeOut", - scaleX: pokemon.getHpRatio(true), - duration: duration, - onUpdate: () => { - if (this.player && this.lastHp !== pokemon.hp) { - const tweenHp = Math.ceil(this.hpBar.scaleX * pokemon.getMaxHp()); - this.setHpNumbers(tweenHp, pokemon.getMaxHp()); - this.lastHp = tweenHp; - } - - updateHpFrame(); - }, - onComplete: () => { - updateHpFrame(); - // If, after tweening, the hp is different from the original (due to rounding), force the hp number display - // to update to the correct value. - if (this.player && this.lastHp !== pokemon.hp) { - this.setHpNumbers(pokemon.hp, pokemon.getMaxHp()); - this.lastHp = pokemon.hp; - } - resolve(); - }, - }); - if (!this.player) { - this.lastHp = pokemon.hp; - } - this.lastMaxHp = pokemon.getMaxHp(); - }; - - if (this.player) { - const isLevelCapped = pokemon.level >= globalScene.getMaxExpLevel(); - - if (this.lastExp !== pokemon.exp || this.lastLevel !== pokemon.level) { - const originalResolve = resolve; - const durationMultipler = Math.max( - Phaser.Tweens.Builders.GetEaseFunction("Cubic.easeIn")( - 1 - Math.min(pokemon.level - this.lastLevel, 10) / 10, - ), - 0.1, - ); - resolve = () => this.updatePokemonExp(pokemon, false, durationMultipler).then(() => originalResolve()); - } else if (isLevelCapped !== this.lastLevelCapped) { - this.setLevel(pokemon.level); - } - - this.lastLevelCapped = isLevelCapped; - } - - if (this.lastHp !== pokemon.hp || this.lastMaxHp !== pokemon.getMaxHp()) { - return updatePokemonHp(); - } - if (!this.player && this.lastLevel !== pokemon.level) { - this.setLevel(pokemon.level); - this.lastLevel = pokemon.level; - } - - const stats = pokemon.getStatStages(); - const statsStr = stats.join(""); - - if (this.lastStats !== statsStr) { - this.updateStats(stats); - this.lastStats = statsStr; - } - - this.shinyIcon.setVisible(pokemon.isShiny(true)); - - const doubleShiny = isFusion && pokemon.shiny && pokemon.fusionShiny; - const baseVariant = !doubleShiny ? pokemon.getVariant(true) : pokemon.variant; - this.shinyIcon.setTint(getVariantTint(baseVariant)); - - this.fusionShinyIcon.setVisible(doubleShiny); - if (isFusion) { - this.fusionShinyIcon.setTint(getVariantTint(pokemon.fusionVariant)); - } - this.fusionShinyIcon.setPosition(this.shinyIcon.x, this.shinyIcon.y); - - resolve(); - }); - } - - updateNameText(pokemon: Pokemon): void { - let displayName = pokemon.getNameToRender().replace(/[♂♀]/g, ""); - let nameTextWidth: number; - - const nameSizeTest = addTextObject(0, 0, displayName, TextStyle.BATTLE_INFO); - nameTextWidth = nameSizeTest.displayWidth; - - const gender = pokemon.summonData.illusion?.gender ?? pokemon.gender; - while ( - nameTextWidth > - (this.player || !this.boss ? 60 : 98) - - ((gender !== Gender.GENDERLESS ? 6 : 0) + - (pokemon.fusionSpecies ? 8 : 0) + - (pokemon.isShiny() ? 8 : 0) + - (Math.min(pokemon.level.toString().length, 3) - 3) * 8) - ) { - displayName = `${displayName.slice(0, displayName.endsWith(".") ? -2 : -1).trimEnd()}.`; - nameSizeTest.setText(displayName); - nameTextWidth = nameSizeTest.displayWidth; - } - - nameSizeTest.destroy(); - - this.nameText.setText(displayName); - this.lastName = pokemon.getNameToRender(); - - if (this.nameText.visible) { - this.nameText.setInteractive( - new Phaser.Geom.Rectangle(0, 0, this.nameText.width, this.nameText.height), - Phaser.Geom.Rectangle.Contains, - ); - } - } - - updatePokemonExp(pokemon: Pokemon, instant?: boolean, levelDurationMultiplier = 1): Promise { - return new Promise(resolve => { - const levelUp = this.lastLevel < pokemon.level; - const relLevelExp = getLevelRelExp(this.lastLevel + 1, pokemon.species.growthRate); - const levelExp = levelUp ? relLevelExp : pokemon.levelExp; - let ratio = relLevelExp ? levelExp / relLevelExp : 0; - if (this.lastLevel >= globalScene.getMaxExpLevel(true)) { - if (levelUp) { - ratio = 1; - } else { - ratio = 0; - } - instant = true; - } - const durationMultiplier = Phaser.Tweens.Builders.GetEaseFunction("Sine.easeIn")( - 1 - Math.max(this.lastLevel - 100, 0) / 150, - ); - let duration = - this.visible && !instant - ? ((levelExp - this.lastLevelExp) / relLevelExp) * - BattleInfo.EXP_GAINS_DURATION_BASE * - durationMultiplier * - levelDurationMultiplier - : 0; - const speed = globalScene.expGainsSpeed; - if (speed && speed >= ExpGainsSpeed.DEFAULT) { - duration = speed >= ExpGainsSpeed.SKIP ? ExpGainsSpeed.DEFAULT : duration / Math.pow(2, speed); - } - if (ratio === 1) { - this.lastLevelExp = 0; - this.lastLevel++; - } else { - this.lastExp = pokemon.exp; - this.lastLevelExp = pokemon.levelExp; - } - if (duration) { - globalScene.playSound("se/exp"); - } - globalScene.tweens.add({ - targets: this.expMaskRect, - ease: "Sine.easeIn", - x: ratio * 510, - duration: duration, - onComplete: () => { - if (!globalScene) { - return resolve(); - } - if (duration) { - globalScene.sound.stopByKey("se/exp"); - } - if (ratio === 1) { - globalScene.playSound("se/level_up"); - this.setLevel(this.lastLevel); - globalScene.time.delayedCall(500 * levelDurationMultiplier, () => { - this.expMaskRect.x = 0; - this.updateInfo(pokemon, instant).then(() => resolve()); - }); - return; - } - resolve(); - }, - }); - }); - } - - setLevel(level: number): void { - const isCapped = level >= globalScene.getMaxExpLevel(); - this.levelNumbersContainer.removeAll(true); - const levelStr = level.toString(); - for (let i = 0; i < levelStr.length; i++) { - this.levelNumbersContainer.add( - globalScene.add.image(i * 8, 0, `numbers${isCapped && this.player ? "_red" : ""}`, levelStr[i]), - ); - } - this.levelContainer.setX((this.player ? -41 : -50) - 8 * Math.max(levelStr.length - 3, 0)); - } - - setHpNumbers(hp: number, maxHp: number): void { - if (!this.player || !globalScene) { - return; - } - this.hpNumbersContainer.removeAll(true); - const hpStr = hp.toString(); - const maxHpStr = maxHp.toString(); - let offset = 0; - for (let i = maxHpStr.length - 1; i >= 0; i--) { - this.hpNumbersContainer.add(globalScene.add.image(offset++ * -8, 0, "numbers", maxHpStr[i])); - } - this.hpNumbersContainer.add(globalScene.add.image(offset++ * -8, 0, "numbers", "/")); - for (let i = hpStr.length - 1; i >= 0; i--) { - this.hpNumbersContainer.add(globalScene.add.image(offset++ * -8, 0, "numbers", hpStr[i])); - } - } - - updateStats(stats: number[]): void { - this.statOrder.map((s, i) => { - if (s !== Stat.HP) { - this.statNumbers[i].setFrame(stats[s - 1].toString()); - } - }); - } - - /** - * Request the flyoutMenu to toggle if available and hides or shows the effectiveness window where necessary - */ - toggleFlyout(visible: boolean): void { - this.flyoutMenu?.toggleFlyout(visible); - - if (visible) { - this.effectivenessContainer?.setVisible(false); - } else { - this.updateEffectiveness(this.currentEffectiveness); - } - } - - /** - * Show or hide the type effectiveness multiplier window - * Passing undefined will hide the window - */ - updateEffectiveness(effectiveness?: string) { - if (this.player) { - return; - } - this.currentEffectiveness = effectiveness; - - if (!globalScene.typeHints || effectiveness === undefined || this.flyoutMenu?.flyoutVisible) { - this.effectivenessContainer.setVisible(false); - return; - } - - this.effectivenessText.setText(effectiveness); - this.effectivenessWindow.width = 10 + this.effectivenessText.displayWidth; - this.effectivenessContainer.setVisible(true); - } - - getBaseY(): number { - return this.baseY; - } - - resetY(): void { - this.y = this.baseY; - } -} - -export class PlayerBattleInfo extends BattleInfo { - constructor() { - super(Math.floor(globalScene.game.canvas.width / 6) - 10, -72, true); - } -} - -export class EnemyBattleInfo extends BattleInfo { - constructor() { - super(140, -141, false); - } - - setMini(_mini: boolean): void {} // Always mini -} diff --git a/src/ui/battle-info/battle-info.ts b/src/ui/battle-info/battle-info.ts new file mode 100644 index 00000000000..71596bf0f43 --- /dev/null +++ b/src/ui/battle-info/battle-info.ts @@ -0,0 +1,688 @@ +import type { default as Pokemon } from "../../field/pokemon"; +import { getLocalizedSpriteKey, fixedInt, getShinyDescriptor } from "#app/utils/common"; +import { addTextObject, TextStyle } from "../text"; +import { getGenderSymbol, getGenderColor, Gender } from "../../data/gender"; +import { StatusEffect } from "#enums/status-effect"; +import { globalScene } from "#app/global-scene"; +import { getTypeRgb } from "#app/data/type"; +import { PokemonType } from "#enums/pokemon-type"; +import { getVariantTint } from "#app/sprites/variant"; +import { Stat } from "#enums/stat"; +import i18next from "i18next"; + +/** + * Parameters influencing the position of elements within the battle info container + */ +export type BattleInfoParamList = { + /** X offset for the name text*/ + nameTextX: number; + /** Y offset for the name text */ + nameTextY: number; + /** X offset for the level container */ + levelContainerX: number; + /** Y offset for the level container */ + levelContainerY: number; + /** X offset for the hp bar */ + hpBarX: number; + /** Y offset for the hp bar */ + hpBarY: number; + /** Parameters for the stat box container */ + statBox: { + /** The starting offset from the left of the label for the entries in the stat box */ + xOffset: number; + /** The X padding between each number column */ + paddingX: number; + /** The index of the stat entries at which paddingX is used instead of startingX */ + statOverflow: number; + }; +}; + +export default abstract class BattleInfo extends Phaser.GameObjects.Container { + public static readonly EXP_GAINS_DURATION_BASE = 1650; + + protected baseY: number; + protected baseLvContainerX: number; + + protected player: boolean; + protected mini: boolean; + protected boss: boolean; + protected bossSegments: number; + protected offset: boolean; + protected lastName: string | null; + protected lastTeraType: PokemonType; + protected lastStatus: StatusEffect; + protected lastHp: number; + protected lastMaxHp: number; + protected lastHpFrame: string | null; + protected lastExp: number; + protected lastLevelExp: number; + protected lastLevel: number; + protected lastLevelCapped: boolean; + protected lastStats: string; + + protected box: Phaser.GameObjects.Sprite; + protected nameText: Phaser.GameObjects.Text; + protected genderText: Phaser.GameObjects.Text; + protected teraIcon: Phaser.GameObjects.Sprite; + protected shinyIcon: Phaser.GameObjects.Sprite; + protected fusionShinyIcon: Phaser.GameObjects.Sprite; + protected splicedIcon: Phaser.GameObjects.Sprite; + protected statusIndicator: Phaser.GameObjects.Sprite; + protected levelContainer: Phaser.GameObjects.Container; + protected hpBar: Phaser.GameObjects.Image; + protected levelNumbersContainer: Phaser.GameObjects.Container; + protected type1Icon: Phaser.GameObjects.Sprite; + protected type2Icon: Phaser.GameObjects.Sprite; + protected type3Icon: Phaser.GameObjects.Sprite; + protected expBar: Phaser.GameObjects.Image; + + public expMaskRect: Phaser.GameObjects.Graphics; + + protected statsContainer: Phaser.GameObjects.Container; + protected statsBox: Phaser.GameObjects.Sprite; + protected statValuesContainer: Phaser.GameObjects.Container; + protected statNumbers: Phaser.GameObjects.Sprite[]; + + get statOrder(): Stat[] { + return []; + } + + /** Helper method used by the constructor to create the tera and shiny icons next to the name */ + private constructIcons() { + const hitArea = new Phaser.Geom.Rectangle(0, 0, 12, 15); + const hitCallback = Phaser.Geom.Rectangle.Contains; + + this.teraIcon = globalScene.add + .sprite(0, 0, "icon_tera") + .setName("icon_tera") + .setVisible(false) + .setOrigin(0) + .setScale(0.5) + .setInteractive(hitArea, hitCallback) + .setPositionRelative(this.nameText, 0, 2); + + this.shinyIcon = globalScene.add + .sprite(0, 0, "shiny_star") + .setName("icon_shiny") + .setVisible(false) + .setOrigin(0) + .setScale(0.5) + .setInteractive(hitArea, hitCallback) + .setPositionRelative(this.nameText, 0, 2); + + this.fusionShinyIcon = globalScene.add + .sprite(0, 0, "shiny_star_2") + .setName("icon_fusion_shiny") + .setVisible(false) + .setOrigin(0) + .setScale(0.5) + .copyPosition(this.shinyIcon); + + this.splicedIcon = globalScene.add + .sprite(0, 0, "icon_spliced") + .setName("icon_spliced") + .setVisible(false) + .setOrigin(0) + .setScale(0.5) + .setInteractive(hitArea, hitCallback) + .setPositionRelative(this.nameText, 0, 2); + + this.add([this.teraIcon, this.shinyIcon, this.fusionShinyIcon, this.splicedIcon]); + } + + /** + * Submethod of the constructor that creates and adds the stats container to the battle info + */ + protected constructStatContainer({ xOffset, paddingX, statOverflow }: BattleInfoParamList["statBox"]): void { + this.statsContainer = globalScene.add.container(0, 0).setName("container_stats").setAlpha(0); + this.add(this.statsContainer); + + this.statsBox = globalScene.add + .sprite(0, 0, `${this.getTextureName()}_stats`) + .setName("box_stats") + .setOrigin(1, 0.5); + this.statsContainer.add(this.statsBox); + + const statLabels: Phaser.GameObjects.Sprite[] = []; + this.statNumbers = []; + + this.statValuesContainer = globalScene.add.container(); + this.statsContainer.add(this.statValuesContainer); + + const startingX = -this.statsBox.width + xOffset; + + // this gives us a different starting location from the left of the label and padding between stats for a player vs enemy + // since the player won't have HP to show, it doesn't need to change from the current version + + for (const [i, s] of this.statOrder.entries()) { + const isHp = s === Stat.HP; + // we do a check for i > statOverflow to see when the stat labels go onto the next column + // For enemies, we have HP (i=0) by itself then a new column, so we check for i > 0 + // For players, we don't have HP, so we start with i = 0 and i = 1 for our first column, and so need to check for i > 1 + const statX = + i > statOverflow + ? this.statNumbers[Math.max(i - 2, 0)].x + this.statNumbers[Math.max(i - 2, 0)].width + paddingX + : startingX; // we have the Math.max(i - 2, 0) in there so for i===1 to not return a negative number; since this is now based on anything >0 instead of >1, we need to allow for i-2 < 0 + + let statY = -this.statsBox.height / 2 + 4; // this is the baseline for the y-axis + if (isHp || s === Stat.SPD) { + statY += 5; + } else if (this.player === !!(i % 2)) { + // we compare i % 2 against this.player to tell us where to place the label + // because this.battleStatOrder for enemies has HP, this.battleStatOrder[1]=ATK, but for players + // this.battleStatOrder[0]=ATK, so this comparing i % 2 to this.player fixes this issue for us + statY += 10; + } + + const statLabel = globalScene.add + .sprite(statX, statY, "pbinfo_stat", Stat[s]) + .setName("icon_stat_label_" + i.toString()) + .setOrigin(0); + statLabels.push(statLabel); + this.statValuesContainer.add(statLabel); + + const statNumber = globalScene.add + .sprite(statX + statLabel.width, statY, "pbinfo_stat_numbers", !isHp ? "3" : "empty") + .setName("icon_stat_number_" + i.toString()) + .setOrigin(0); + this.statNumbers.push(statNumber); + this.statValuesContainer.add(statNumber); + + if (isHp) { + statLabel.setVisible(false); + statNumber.setVisible(false); + } + } + } + + /** + * Submethod of the constructor that creates and adds the pokemon type icons to the battle info + */ + protected abstract constructTypeIcons(): void; + + /** + * @param x - The x position of the battle info container + * @param y - The y position of the battle info container + * @param player - Whether this battle info belongs to a player or an enemy + * @param posParams - The parameters influencing the position of elements within the battle info container + */ + constructor(x: number, y: number, player: boolean, posParams: BattleInfoParamList) { + super(globalScene, x, y); + this.baseY = y; + this.player = player; + this.mini = !player; + this.boss = false; + this.offset = false; + this.lastName = null; + this.lastTeraType = PokemonType.UNKNOWN; + this.lastStatus = StatusEffect.NONE; + this.lastHp = -1; + this.lastMaxHp = -1; + this.lastHpFrame = null; + this.lastExp = -1; + this.lastLevelExp = -1; + this.lastLevel = -1; + this.baseLvContainerX = posParams.levelContainerX; + + // Initially invisible and shown via Pokemon.showInfo + this.setVisible(false); + + this.box = globalScene.add.sprite(0, 0, this.getTextureName()).setName("box").setOrigin(1, 0.5); + this.add(this.box); + + this.nameText = addTextObject(player ? -115 : -124, player ? -15.2 : -11.2, "", TextStyle.BATTLE_INFO) + .setName("text_name") + .setOrigin(0); + this.add(this.nameText); + + this.genderText = addTextObject(0, 0, "", TextStyle.BATTLE_INFO) + .setName("text_gender") + .setOrigin(0) + .setPositionRelative(this.nameText, 0, 2); + this.add(this.genderText); + + this.constructIcons(); + + this.statusIndicator = globalScene.add + .sprite(0, 0, getLocalizedSpriteKey("statuses")) + .setName("icon_status") + .setVisible(false) + .setOrigin(0) + .setPositionRelative(this.nameText, 0, 11.5); + this.add(this.statusIndicator); + + this.levelContainer = globalScene.add + .container(posParams.levelContainerX, posParams.levelContainerY) + .setName("container_level"); + this.add(this.levelContainer); + + const levelOverlay = globalScene.add.image(0, 0, "overlay_lv"); + this.levelContainer.add(levelOverlay); + + this.hpBar = globalScene.add.image(posParams.hpBarX, posParams.hpBarY, "overlay_hp").setName("hp_bar").setOrigin(0); + this.add(this.hpBar); + + this.levelNumbersContainer = globalScene.add + .container(9.5, globalScene.uiTheme ? 0 : -0.5) + .setName("container_level"); + this.levelContainer.add(this.levelNumbersContainer); + + this.constructStatContainer(posParams.statBox); + + this.constructTypeIcons(); + } + + getStatsValueContainer(): Phaser.GameObjects.Container { + return this.statValuesContainer; + } + + //#region Initialization methods + + initSplicedIcon(pokemon: Pokemon, baseWidth: number) { + this.splicedIcon.setPositionRelative( + this.nameText, + baseWidth + this.genderText.displayWidth + 1 + (this.teraIcon.visible ? this.teraIcon.displayWidth + 1 : 0), + 2.5, + ); + this.splicedIcon.setVisible(pokemon.isFusion(true)); + if (!this.splicedIcon.visible) { + return; + } + this.splicedIcon + .on("pointerover", () => + globalScene.ui.showTooltip( + "", + `${pokemon.species.getName(pokemon.formIndex)}/${pokemon.fusionSpecies?.getName(pokemon.fusionFormIndex)}`, + ), + ) + .on("pointerout", () => globalScene.ui.hideTooltip()); + } + + /** + * Called by {@linkcode initInfo} to initialize the shiny icon + * @param pokemon - The pokemon object attached to this battle info + * @param baseXOffset - The x offset to use for the shiny icon + * @param doubleShiny - Whether the pokemon is shiny and its fusion species is also shiny + */ + protected initShinyIcon(pokemon: Pokemon, xOffset: number, doubleShiny: boolean) { + const baseVariant = !doubleShiny ? pokemon.getVariant(true) : pokemon.variant; + + this.shinyIcon.setPositionRelative( + this.nameText, + xOffset + + this.genderText.displayWidth + + 1 + + (this.teraIcon.visible ? this.teraIcon.displayWidth + 1 : 0) + + (this.splicedIcon.visible ? this.splicedIcon.displayWidth + 1 : 0), + 2.5, + ); + this.shinyIcon + .setTexture(`shiny_star${doubleShiny ? "_1" : ""}`) + .setVisible(pokemon.isShiny()) + .setTint(getVariantTint(baseVariant)); + + if (!this.shinyIcon.visible) { + return; + } + + let shinyDescriptor = ""; + if (doubleShiny || baseVariant) { + shinyDescriptor = " (" + getShinyDescriptor(baseVariant); + if (doubleShiny) { + shinyDescriptor += "/" + getShinyDescriptor(pokemon.fusionVariant); + } + shinyDescriptor += ")"; + } + + this.shinyIcon + .on("pointerover", () => globalScene.ui.showTooltip("", i18next.t("common:shinyOnHover") + shinyDescriptor)) + .on("pointerout", () => globalScene.ui.hideTooltip()); + } + + initInfo(pokemon: Pokemon) { + this.updateNameText(pokemon); + const nameTextWidth = this.nameText.displayWidth; + + this.name = pokemon.getNameToRender(); + this.box.name = pokemon.getNameToRender(); + + this.genderText + .setText(getGenderSymbol(pokemon.gender)) + .setColor(getGenderColor(pokemon.gender)) + .setPositionRelative(this.nameText, nameTextWidth, 0); + + this.lastTeraType = pokemon.getTeraType(); + + this.teraIcon + .setVisible(pokemon.isTerastallized) + .on("pointerover", () => { + if (pokemon.isTerastallized) { + globalScene.ui.showTooltip( + "", + i18next.t("fightUiHandler:teraHover", { + type: i18next.t(`pokemonInfo:Type.${PokemonType[this.lastTeraType]}`), + }), + ); + } + }) + .on("pointerout", () => globalScene.ui.hideTooltip()) + .setPositionRelative(this.nameText, nameTextWidth + this.genderText.displayWidth + 1, 2); + + const isFusion = pokemon.isFusion(true); + this.initSplicedIcon(pokemon, nameTextWidth); + + const doubleShiny = isFusion && pokemon.shiny && pokemon.fusionShiny; + this.initShinyIcon(pokemon, nameTextWidth, doubleShiny); + + this.fusionShinyIcon.setVisible(doubleShiny).copyPosition(this.shinyIcon); + if (isFusion) { + this.fusionShinyIcon.setTint(getVariantTint(pokemon.fusionVariant)); + } + + this.hpBar.setScale(pokemon.getHpRatio(true), 1); + this.lastHpFrame = this.hpBar.scaleX > 0.5 ? "high" : this.hpBar.scaleX > 0.25 ? "medium" : "low"; + this.hpBar.setFrame(this.lastHpFrame); + this.lastHp = pokemon.hp; + this.lastMaxHp = pokemon.getMaxHp(); + + this.setLevel(pokemon.level); + this.lastLevel = pokemon.level; + + this.shinyIcon.setVisible(pokemon.isShiny()); + + this.setTypes(pokemon.getTypes(true, false, undefined, true)); + + const stats = this.statOrder.map(() => 0); + + this.lastStats = stats.join(""); + this.updateStats(stats); + } + //#endregion + + /** + * Return the texture name of the battle info box + */ + abstract getTextureName(): string; + + setMini(_mini: boolean): void {} + + toggleStats(visible: boolean): void { + globalScene.tweens.add({ + targets: this.statsContainer, + duration: fixedInt(125), + ease: "Sine.easeInOut", + alpha: visible ? 1 : 0, + }); + } + + setOffset(offset: boolean): void { + if (this.offset === offset) { + return; + } + + this.offset = offset; + + this.x += 10 * (this.offset === this.player ? 1 : -1); + this.y += 27 * (this.offset ? 1 : -1); + this.baseY = this.y; + } + + //#region Update methods and helpers + + /** + * Update the status icon to match the pokemon's current status + * @param pokemon - The pokemon object attached to this battle info + * @param xOffset - The offset from the name text + */ + updateStatusIcon(pokemon: Pokemon, xOffset = 0) { + if (this.lastStatus !== (pokemon.status?.effect || StatusEffect.NONE)) { + this.lastStatus = pokemon.status?.effect || StatusEffect.NONE; + + if (this.lastStatus !== StatusEffect.NONE) { + this.statusIndicator.setFrame(StatusEffect[this.lastStatus].toLowerCase()); + } + + this.statusIndicator.setVisible(!!this.lastStatus).setPositionRelative(this.nameText, xOffset, 11.5); + } + } + + /** Update the pokemon name inside the container */ + protected updateName(name: string): boolean { + if (this.lastName === name) { + return false; + } + this.nameText.setText(name).setPositionRelative(this.box, -this.nameText.displayWidth, 0); + this.lastName = name; + + return true; + } + + protected updateTeraType(ty: PokemonType): boolean { + if (this.lastTeraType === ty) { + return false; + } + + this.teraIcon + .setVisible(ty !== PokemonType.UNKNOWN) + .setTintFill(Phaser.Display.Color.GetColor(...getTypeRgb(ty))) + .setPositionRelative(this.nameText, this.nameText.displayWidth + this.genderText.displayWidth + 1, 2); + this.lastTeraType = ty; + + return true; + } + + /** + * Update the type icons to match the pokemon's types + */ + setTypes(types: PokemonType[]): void { + this.type1Icon + .setTexture(`pbinfo_${this.player ? "player" : "enemy"}_type${types.length > 1 ? "1" : ""}`) + .setFrame(PokemonType[types[0]].toLowerCase()); + this.type2Icon.setVisible(types.length > 1); + this.type3Icon.setVisible(types.length > 2); + if (types.length > 1) { + this.type2Icon.setFrame(PokemonType[types[1]].toLowerCase()); + } + if (types.length > 2) { + this.type3Icon.setFrame(PokemonType[types[2]].toLowerCase()); + } + } + + /** + * Called by {@linkcode updateInfo} to update the position of the tera, spliced, and shiny icons + * @param isFusion - Whether the pokemon is a fusion or not + */ + protected updateIconDisplay(isFusion: boolean): void { + this.teraIcon.setPositionRelative(this.nameText, this.nameText.displayWidth + this.genderText.displayWidth + 1, 2); + this.splicedIcon + .setVisible(isFusion) + .setPositionRelative( + this.nameText, + this.nameText.displayWidth + + this.genderText.displayWidth + + 1 + + (this.teraIcon.visible ? this.teraIcon.displayWidth + 1 : 0), + 1.5, + ); + this.shinyIcon.setPositionRelative( + this.nameText, + this.nameText.displayWidth + + this.genderText.displayWidth + + 1 + + (this.teraIcon.visible ? this.teraIcon.displayWidth + 1 : 0) + + (this.splicedIcon.visible ? this.splicedIcon.displayWidth + 1 : 0), + 2.5, + ); + } + + //#region Hp Bar Display handling + /** + * Called every time the hp frame is updated by the tween + * @param pokemon - The pokemon object attached to this battle info + */ + protected updateHpFrame(): void { + const hpFrame = this.hpBar.scaleX > 0.5 ? "high" : this.hpBar.scaleX > 0.25 ? "medium" : "low"; + if (hpFrame !== this.lastHpFrame) { + this.hpBar.setFrame(hpFrame); + this.lastHpFrame = hpFrame; + } + } + + /** + * Called by every frame in the hp animation tween created in {@linkcode updatePokemonHp} + * @param _pokemon - The pokemon the battle-info bar belongs to + */ + protected onHpTweenUpdate(_pokemon: Pokemon): void { + this.updateHpFrame(); + } + + /** Update the pokemonHp bar */ + protected updatePokemonHp(pokemon: Pokemon, resolve: (r: void | PromiseLike) => void, instant?: boolean): void { + let duration = !instant ? Phaser.Math.Clamp(Math.abs(this.lastHp - pokemon.hp) * 5, 250, 5000) : 0; + const speed = globalScene.hpBarSpeed; + if (speed) { + duration = speed >= 3 ? 0 : duration / Math.pow(2, speed); + } + globalScene.tweens.add({ + targets: this.hpBar, + ease: "Sine.easeOut", + scaleX: pokemon.getHpRatio(true), + duration: duration, + onUpdate: () => { + this.onHpTweenUpdate(pokemon); + }, + onComplete: () => { + this.updateHpFrame(); + resolve(); + }, + }); + this.lastMaxHp = pokemon.getMaxHp(); + } + + //#endregion + + async updateInfo(pokemon: Pokemon, instant?: boolean): Promise { + let resolve: (r: void | PromiseLike) => void = () => {}; + const promise = new Promise(r => (resolve = r)); + if (!globalScene) { + return resolve(); + } + + const gender: Gender = pokemon.summonData?.illusion?.gender ?? pokemon.gender; + + this.genderText.setText(getGenderSymbol(gender)).setColor(getGenderColor(gender)); + + const nameUpdated = this.updateName(pokemon.getNameToRender()); + + const teraTypeUpdated = this.updateTeraType(pokemon.isTerastallized ? pokemon.getTeraType() : PokemonType.UNKNOWN); + + const isFusion = pokemon.isFusion(true); + + if (nameUpdated || teraTypeUpdated) { + this.updateIconDisplay(isFusion); + } + + this.updateStatusIcon(pokemon); + + if (this.lastHp !== pokemon.hp || this.lastMaxHp !== pokemon.getMaxHp()) { + return this.updatePokemonHp(pokemon, resolve, instant); + } + if (!this.player && this.lastLevel !== pokemon.level) { + this.setLevel(pokemon.level); + this.lastLevel = pokemon.level; + } + + const stats = pokemon.getStatStages(); + const statsStr = stats.join(""); + + if (this.lastStats !== statsStr) { + this.updateStats(stats); + this.lastStats = statsStr; + } + + this.shinyIcon.setVisible(pokemon.isShiny(true)); + + const doubleShiny = isFusion && pokemon.shiny && pokemon.fusionShiny; + const baseVariant = !doubleShiny ? pokemon.getVariant(true) : pokemon.variant; + this.shinyIcon.setTint(getVariantTint(baseVariant)); + + this.fusionShinyIcon.setVisible(doubleShiny).setPosition(this.shinyIcon.x, this.shinyIcon.y); + if (isFusion) { + this.fusionShinyIcon.setTint(getVariantTint(pokemon.fusionVariant)); + } + + resolve(); + await promise; + } + //#endregion + + updateNameText(pokemon: Pokemon): void { + let displayName = pokemon.getNameToRender().replace(/[♂♀]/g, ""); + let nameTextWidth: number; + + const nameSizeTest = addTextObject(0, 0, displayName, TextStyle.BATTLE_INFO); + nameTextWidth = nameSizeTest.displayWidth; + + const gender = pokemon.summonData.illusion?.gender ?? pokemon.gender; + while ( + nameTextWidth > + (this.player || !this.boss ? 60 : 98) - + ((gender !== Gender.GENDERLESS ? 6 : 0) + + (pokemon.fusionSpecies ? 8 : 0) + + (pokemon.isShiny() ? 8 : 0) + + (Math.min(pokemon.level.toString().length, 3) - 3) * 8) + ) { + displayName = `${displayName.slice(0, displayName.endsWith(".") ? -2 : -1).trimEnd()}.`; + nameSizeTest.setText(displayName); + nameTextWidth = nameSizeTest.displayWidth; + } + + nameSizeTest.destroy(); + + this.nameText.setText(displayName); + this.lastName = pokemon.getNameToRender(); + + if (this.nameText.visible) { + this.nameText.setInteractive( + new Phaser.Geom.Rectangle(0, 0, this.nameText.width, this.nameText.height), + Phaser.Geom.Rectangle.Contains, + ); + } + } + + /** + * Set the level numbers container to display the provided level + * + * @remarks + * The numbers in the pokemon's level uses images for each number rather than a text object with a special font. + * This method sets the images for each digit of the level number and then positions the level container based + * on the number of digits. + * + * @param level - The level to display + * @param textureKey - The texture key for the level numbers + */ + setLevel(level: number, textureKey: "numbers" | "numbers_red" = "numbers"): void { + this.levelNumbersContainer.removeAll(true); + const levelStr = level.toString(); + for (let i = 0; i < levelStr.length; i++) { + this.levelNumbersContainer.add(globalScene.add.image(i * 8, 0, textureKey, levelStr[i])); + } + this.levelContainer.setX(this.baseLvContainerX - 8 * Math.max(levelStr.length - 3, 0)); + } + + updateStats(stats: number[]): void { + for (const [i, s] of this.statOrder.entries()) { + if (s !== Stat.HP) { + this.statNumbers[i].setFrame(stats[s - 1].toString()); + } + } + } + + getBaseY(): number { + return this.baseY; + } + + resetY(): void { + this.y = this.baseY; + } +} diff --git a/src/ui/battle-info/enemy-battle-info.ts b/src/ui/battle-info/enemy-battle-info.ts new file mode 100644 index 00000000000..e8f5434dcf2 --- /dev/null +++ b/src/ui/battle-info/enemy-battle-info.ts @@ -0,0 +1,235 @@ +import { globalScene } from "#app/global-scene"; +import BattleFlyout from "../battle-flyout"; +import { addTextObject, TextStyle } from "#app/ui/text"; +import { addWindow, WindowVariant } from "#app/ui/ui-theme"; +import { Stat } from "#enums/stat"; +import i18next from "i18next"; +import type { EnemyPokemon } from "#app/field/pokemon"; +import type { GameObjects } from "phaser"; +import BattleInfo from "./battle-info"; +import type { BattleInfoParamList } from "./battle-info"; + +export class EnemyBattleInfo extends BattleInfo { + protected player: false = false; + protected championRibbon: Phaser.GameObjects.Sprite; + protected ownedIcon: Phaser.GameObjects.Sprite; + protected flyoutMenu: BattleFlyout; + + protected hpBarSegmentDividers: GameObjects.Rectangle[] = []; + + // #region Type effectiveness hint objects + protected effectivenessContainer: Phaser.GameObjects.Container; + protected effectivenessWindow: Phaser.GameObjects.NineSlice; + protected effectivenessText: Phaser.GameObjects.Text; + protected currentEffectiveness?: string; + // #endregion + + override get statOrder(): Stat[] { + return [Stat.HP, Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.ACC, Stat.EVA, Stat.SPD]; + } + + override getTextureName(): string { + return this.boss ? "pbinfo_enemy_boss_mini" : "pbinfo_enemy_mini"; + } + + override constructTypeIcons(): void { + this.type1Icon = globalScene.add.sprite(-15, -15.5, "pbinfo_enemy_type1").setName("icon_type_1").setOrigin(0); + this.type2Icon = globalScene.add.sprite(-15, -2.5, "pbinfo_enemy_type2").setName("icon_type_2").setOrigin(0); + this.type3Icon = globalScene.add.sprite(0, 15.5, "pbinfo_enemy_type3").setName("icon_type_3").setOrigin(0); + this.add([this.type1Icon, this.type2Icon, this.type3Icon]); + } + + constructor() { + const posParams: BattleInfoParamList = { + nameTextX: -124, + nameTextY: -11.2, + levelContainerX: -50, + levelContainerY: -5, + hpBarX: -71, + hpBarY: 4.5, + statBox: { + xOffset: 5, + paddingX: 2, + statOverflow: 0, + }, + }; + + super(140, -141, false, posParams); + + this.ownedIcon = globalScene.add + .sprite(0, 0, "icon_owned") + .setName("icon_owned") + .setVisible(false) + .setOrigin(0, 0) + .setPositionRelative(this.nameText, 0, 11.75); + + this.championRibbon = globalScene.add + .sprite(0, 0, "champion_ribbon") + .setName("icon_champion_ribbon") + .setVisible(false) + .setOrigin(0, 0) + .setPositionRelative(this.nameText, 8, 11.75); + // Ensure these two icons are positioned below the stats container + this.addAt([this.ownedIcon, this.championRibbon], this.getIndex(this.statsContainer)); + + this.flyoutMenu = new BattleFlyout(this.player); + this.add(this.flyoutMenu); + + this.moveBelow(this.flyoutMenu, this.box); + + this.effectivenessContainer = globalScene.add + .container(0, 0) + .setVisible(false) + .setPositionRelative(this.type1Icon, 22, 4); + this.add(this.effectivenessContainer); + + this.effectivenessText = addTextObject(5, 4.5, "", TextStyle.BATTLE_INFO); + this.effectivenessWindow = addWindow(0, 0, 0, 20, undefined, false, undefined, undefined, WindowVariant.XTHIN); + + this.effectivenessContainer.add([this.effectivenessWindow, this.effectivenessText]); + } + + override initInfo(pokemon: EnemyPokemon): void { + this.flyoutMenu.initInfo(pokemon); + super.initInfo(pokemon); + + if (this.nameText.visible) { + this.nameText + .on("pointerover", () => + globalScene.ui.showTooltip( + "", + i18next.t("battleInfo:generation", { + generation: i18next.t(`starterSelectUiHandler:gen${pokemon.species.generation}`), + }), + ), + ) + .on("pointerout", () => globalScene.ui.hideTooltip()); + } + + const dexEntry = globalScene.gameData.dexData[pokemon.species.speciesId]; + this.ownedIcon.setVisible(!!dexEntry.caughtAttr); + const opponentPokemonDexAttr = pokemon.getDexAttr(); + if ( + globalScene.gameMode.isClassic && + globalScene.gameData.starterData[pokemon.species.getRootSpeciesId()].classicWinCount > 0 && + globalScene.gameData.starterData[pokemon.species.getRootSpeciesId(true)].classicWinCount > 0 + ) { + this.championRibbon.setVisible(true); + } + + // Check if Player owns all genders and forms of the Pokemon + const missingDexAttrs = (dexEntry.caughtAttr & opponentPokemonDexAttr) < opponentPokemonDexAttr; + + const ownedAbilityAttrs = globalScene.gameData.starterData[pokemon.species.getRootSpeciesId()].abilityAttr; + + // Check if the player owns ability for the root form + const playerOwnsThisAbility = pokemon.checkIfPlayerHasAbilityOfStarter(ownedAbilityAttrs); + + if (missingDexAttrs || !playerOwnsThisAbility) { + this.ownedIcon.setTint(0x808080); + } + + if (this.boss) { + this.updateBossSegmentDividers(pokemon as EnemyPokemon); + } + } + + /** + * Show or hide the type effectiveness multiplier window + * Passing undefined will hide the window + */ + updateEffectiveness(effectiveness?: string) { + this.currentEffectiveness = effectiveness; + + if (!globalScene.typeHints || effectiveness === undefined || this.flyoutMenu.flyoutVisible) { + this.effectivenessContainer.setVisible(false); + return; + } + + this.effectivenessText.setText(effectiveness); + this.effectivenessWindow.width = 10 + this.effectivenessText.displayWidth; + this.effectivenessContainer.setVisible(true); + } + + /** + * Request the flyoutMenu to toggle if available and hides or shows the effectiveness window where necessary + */ + toggleFlyout(visible: boolean): void { + this.flyoutMenu.toggleFlyout(visible); + + if (visible) { + this.effectivenessContainer.setVisible(false); + } else { + this.updateEffectiveness(this.currentEffectiveness); + } + } + + updateBossSegments(pokemon: EnemyPokemon): void { + const boss = !!pokemon.bossSegments; + + if (boss !== this.boss) { + this.boss = boss; + + [ + this.nameText, + this.genderText, + this.teraIcon, + this.splicedIcon, + this.shinyIcon, + this.ownedIcon, + this.championRibbon, + this.statusIndicator, + this.levelContainer, + this.statValuesContainer, + ].map(e => (e.x += 48 * (boss ? -1 : 1))); + this.hpBar.x += 38 * (boss ? -1 : 1); + this.hpBar.y += 2 * (this.boss ? -1 : 1); + this.hpBar.setTexture(`overlay_hp${boss ? "_boss" : ""}`); + this.box.setTexture(this.getTextureName()); + this.statsBox.setTexture(`${this.getTextureName()}_stats`); + } + + this.bossSegments = boss ? pokemon.bossSegments : 0; + this.updateBossSegmentDividers(pokemon); + } + + updateBossSegmentDividers(pokemon: EnemyPokemon): void { + while (this.hpBarSegmentDividers.length) { + this.hpBarSegmentDividers.pop()?.destroy(); + } + + if (this.boss && this.bossSegments > 1) { + const uiTheme = globalScene.uiTheme; + const maxHp = pokemon.getMaxHp(); + for (let s = 1; s < this.bossSegments; s++) { + const dividerX = (Math.round((maxHp / this.bossSegments) * s) / maxHp) * this.hpBar.width; + const divider = globalScene.add.rectangle( + 0, + 0, + 1, + this.hpBar.height - (uiTheme ? 0 : 1), + pokemon.bossSegmentIndex >= s ? 0xffffff : 0x404040, + ); + divider.setOrigin(0.5, 0).setName("hpBar_divider_" + s.toString()); + this.add(divider); + this.moveBelow(divider as Phaser.GameObjects.GameObject, this.statsContainer); + + divider.setPositionRelative(this.hpBar, dividerX, uiTheme ? 0 : 1); + this.hpBarSegmentDividers.push(divider); + } + } + } + + override updateStatusIcon(pokemon: EnemyPokemon): void { + super.updateStatusIcon(pokemon, (this.ownedIcon.visible ? 8 : 0) + (this.championRibbon.visible ? 8 : 0)); + } + + protected override updatePokemonHp( + pokemon: EnemyPokemon, + resolve: (r: void | PromiseLike) => void, + instant?: boolean, + ): void { + super.updatePokemonHp(pokemon, resolve, instant); + this.lastHp = pokemon.hp; + } +} diff --git a/src/ui/battle-info/player-battle-info.ts b/src/ui/battle-info/player-battle-info.ts new file mode 100644 index 00000000000..634f89b7922 --- /dev/null +++ b/src/ui/battle-info/player-battle-info.ts @@ -0,0 +1,242 @@ +import { getLevelRelExp, getLevelTotalExp } from "#app/data/exp"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import { globalScene } from "#app/global-scene"; +import { ExpGainsSpeed } from "#enums/exp-gains-speed"; +import { Stat } from "#enums/stat"; +import BattleInfo from "./battle-info"; +import type { BattleInfoParamList } from "./battle-info"; + +export class PlayerBattleInfo extends BattleInfo { + protected player: true = true; + protected hpNumbersContainer: Phaser.GameObjects.Container; + + override get statOrder(): Stat[] { + return [Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.ACC, Stat.EVA, Stat.SPD]; + } + + override getTextureName(): string { + return this.mini ? "pbinfo_player_mini" : "pbinfo_player"; + } + + override constructTypeIcons(): void { + this.type1Icon = globalScene.add.sprite(-139, -17, "pbinfo_player_type1").setName("icon_type_1").setOrigin(0); + this.type2Icon = globalScene.add.sprite(-139, -1, "pbinfo_player_type2").setName("icon_type_2").setOrigin(0); + this.type3Icon = globalScene.add.sprite(-154, -17, "pbinfo_player_type3").setName("icon_type_3").setOrigin(0); + this.add([this.type1Icon, this.type2Icon, this.type3Icon]); + } + + constructor() { + const posParams: BattleInfoParamList = { + nameTextX: -115, + nameTextY: -15.2, + levelContainerX: -41, + levelContainerY: -10, + hpBarX: -61, + hpBarY: -1, + statBox: { + xOffset: 8, + paddingX: 4, + statOverflow: 1, + }, + }; + super(Math.floor(globalScene.game.canvas.width / 6) - 10, -72, true, posParams); + + this.hpNumbersContainer = globalScene.add.container(-15, 10).setName("container_hp"); + + // hp number container must be beneath the stat container for overlay to display properly + this.addAt(this.hpNumbersContainer, this.getIndex(this.statsContainer)); + + const expBar = globalScene.add.image(-98, 18, "overlay_exp").setName("overlay_exp").setOrigin(0); + this.add(expBar); + + const expMaskRect = globalScene.make + .graphics({}) + .setScale(6) + .fillStyle(0xffffff) + .beginPath() + .fillRect(127, 126, 85, 2); + + const expMask = expMaskRect.createGeometryMask(); + + expBar.setMask(expMask); + + this.expBar = expBar; + this.expMaskRect = expMaskRect; + } + + override initInfo(pokemon: PlayerPokemon): void { + super.initInfo(pokemon); + this.setHpNumbers(pokemon.hp, pokemon.getMaxHp()); + this.expMaskRect.x = (pokemon.levelExp / getLevelTotalExp(pokemon.level, pokemon.species.growthRate)) * 510; + this.lastExp = pokemon.exp; + this.lastLevelExp = pokemon.levelExp; + + this.statValuesContainer.setPosition(8, 7); + } + + override setMini(mini: boolean): void { + if (this.mini === mini) { + return; + } + + this.mini = mini; + + this.box.setTexture(this.getTextureName()); + this.statsBox.setTexture(`${this.getTextureName()}_stats`); + + if (this.player) { + this.y -= 12 * (mini ? 1 : -1); + this.baseY = this.y; + } + + const offsetElements = [ + this.nameText, + this.genderText, + this.teraIcon, + this.splicedIcon, + this.shinyIcon, + this.statusIndicator, + this.levelContainer, + ]; + offsetElements.forEach(el => (el.y += 1.5 * (mini ? -1 : 1))); + + [this.type1Icon, this.type2Icon, this.type3Icon].forEach(el => { + el.x += 4 * (mini ? 1 : -1); + el.y += -8 * (mini ? 1 : -1); + }); + + this.statValuesContainer.x += 2 * (mini ? 1 : -1); + this.statValuesContainer.y += -7 * (mini ? 1 : -1); + + const toggledElements = [this.hpNumbersContainer, this.expBar]; + toggledElements.forEach(el => el.setVisible(!mini)); + } + + /** + * Updates the Hp Number text (that is the "HP/Max HP" text that appears below the player's health bar) + * while the health bar is tweening. + * @param pokemon - The Pokemon the health bar belongs to. + */ + protected override onHpTweenUpdate(pokemon: PlayerPokemon): void { + const tweenHp = Math.ceil(this.hpBar.scaleX * pokemon.getMaxHp()); + this.setHpNumbers(tweenHp, pokemon.getMaxHp()); + this.lastHp = tweenHp; + this.updateHpFrame(); + } + + updatePokemonExp(pokemon: PlayerPokemon, instant?: boolean, levelDurationMultiplier = 1): Promise { + const levelUp = this.lastLevel < pokemon.level; + const relLevelExp = getLevelRelExp(this.lastLevel + 1, pokemon.species.growthRate); + const levelExp = levelUp ? relLevelExp : pokemon.levelExp; + let ratio = relLevelExp ? levelExp / relLevelExp : 0; + if (this.lastLevel >= globalScene.getMaxExpLevel(true)) { + ratio = levelUp ? 1 : 0; + instant = true; + } + const durationMultiplier = Phaser.Tweens.Builders.GetEaseFunction("Sine.easeIn")( + 1 - Math.max(this.lastLevel - 100, 0) / 150, + ); + let duration = + this.visible && !instant + ? ((levelExp - this.lastLevelExp) / relLevelExp) * + BattleInfo.EXP_GAINS_DURATION_BASE * + durationMultiplier * + levelDurationMultiplier + : 0; + const speed = globalScene.expGainsSpeed; + if (speed && speed >= ExpGainsSpeed.DEFAULT) { + duration = speed >= ExpGainsSpeed.SKIP ? ExpGainsSpeed.DEFAULT : duration / Math.pow(2, speed); + } + if (ratio === 1) { + this.lastLevelExp = 0; + this.lastLevel++; + } else { + this.lastExp = pokemon.exp; + this.lastLevelExp = pokemon.levelExp; + } + if (duration) { + globalScene.playSound("se/exp"); + } + return new Promise(resolve => { + globalScene.tweens.add({ + targets: this.expMaskRect, + ease: "Sine.easeIn", + x: ratio * 510, + duration: duration, + onComplete: () => { + if (!globalScene) { + return resolve(); + } + if (duration) { + globalScene.sound.stopByKey("se/exp"); + } + if (ratio === 1) { + globalScene.playSound("se/level_up"); + this.setLevel(this.lastLevel); + globalScene.time.delayedCall(500 * levelDurationMultiplier, () => { + this.expMaskRect.x = 0; + this.updateInfo(pokemon, instant).then(() => resolve()); + }); + return; + } + resolve(); + }, + }); + }); + } + + /** + * Updates the info on the info bar. + * + * In addition to performing all the steps of {@linkcode BattleInfo.updateInfo}, + * it also updates the EXP Bar + */ + override async updateInfo(pokemon: PlayerPokemon, instant?: boolean): Promise { + await super.updateInfo(pokemon, instant); + const isLevelCapped = pokemon.level >= globalScene.getMaxExpLevel(); + const oldLevelCapped = this.lastLevelCapped; + this.lastLevelCapped = isLevelCapped; + + if (this.lastExp !== pokemon.exp || this.lastLevel !== pokemon.level) { + const durationMultipler = Math.max( + Phaser.Tweens.Builders.GetEaseFunction("Cubic.easeIn")(1 - Math.min(pokemon.level - this.lastLevel, 10) / 10), + 0.1, + ); + await this.updatePokemonExp(pokemon, false, durationMultipler); + } else if (isLevelCapped !== oldLevelCapped) { + this.setLevel(pokemon.level); + } + } + + /** + * Set the HP numbers text, that is the "HP/Max HP" text that appears below the player's health bar. + * @param hp - The current HP of the player. + * @param maxHp - The maximum HP of the player. + */ + setHpNumbers(hp: number, maxHp: number): void { + if (!globalScene) { + return; + } + this.hpNumbersContainer.removeAll(true); + const hpStr = hp.toString(); + const maxHpStr = maxHp.toString(); + let offset = 0; + for (let i = maxHpStr.length - 1; i >= 0; i--) { + this.hpNumbersContainer.add(globalScene.add.image(offset++ * -8, 0, "numbers", maxHpStr[i])); + } + this.hpNumbersContainer.add(globalScene.add.image(offset++ * -8, 0, "numbers", "/")); + for (let i = hpStr.length - 1; i >= 0; i--) { + this.hpNumbersContainer.add(globalScene.add.image(offset++ * -8, 0, "numbers", hpStr[i])); + } + } + + /** + * Set the level numbers container to display the provided level + * + * Overrides the default implementation to handle displaying level capped numbers in red. + * @param level - The level to display + */ + override setLevel(level: number): void { + super.setLevel(level, level >= globalScene.getMaxExpLevel() ? "numbers_red" : "numbers"); + } +} diff --git a/src/ui/fight-ui-handler.ts b/src/ui/fight-ui-handler.ts index 5a0978a934d..6dbbcd47300 100644 --- a/src/ui/fight-ui-handler.ts +++ b/src/ui/fight-ui-handler.ts @@ -10,7 +10,7 @@ import { getLocalizedSpriteKey, fixedInt, padInt } from "#app/utils/common"; import { MoveCategory } from "#enums/MoveCategory"; import i18next from "i18next"; import { Button } from "#enums/buttons"; -import type { PokemonMove } from "#app/field/pokemon"; +import type { EnemyPokemon, PokemonMove } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import type { CommandPhase } from "#app/phases/command-phase"; import MoveInfoOverlay from "./move-info-overlay"; @@ -279,7 +279,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { this.moveInfoOverlay.show(pokemonMove.getMove()); pokemon.getOpponents().forEach(opponent => { - opponent.updateEffectiveness(this.getEffectivenessText(pokemon, opponent, pokemonMove)); + (opponent as EnemyPokemon).updateEffectiveness(this.getEffectivenessText(pokemon, opponent, pokemonMove)); }); } @@ -391,7 +391,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { const opponents = (globalScene.getCurrentPhase() as CommandPhase).getPokemon().getOpponents(); opponents.forEach(opponent => { - opponent.updateEffectiveness(undefined); + (opponent as EnemyPokemon).updateEffectiveness(); }); } diff --git a/src/ui/pokemon-info-container.ts b/src/ui/pokemon-info-container.ts index 18b5d2384ef..d8012a58875 100644 --- a/src/ui/pokemon-info-container.ts +++ b/src/ui/pokemon-info-container.ts @@ -8,7 +8,7 @@ import type Pokemon from "../field/pokemon"; import i18next from "i18next"; import type { DexEntry, StarterDataEntry } from "../system/game-data"; import { DexAttr } from "../system/game-data"; -import { fixedInt } from "#app/utils/common"; +import { fixedInt, getShinyDescriptor } from "#app/utils/common"; import ConfirmUiHandler from "./confirm-ui-handler"; import { StatsContainer } from "./stats-container"; import { TextStyle, addBBCodeTextObject, addTextObject, getTextColor } from "./text"; @@ -343,18 +343,19 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { this.pokemonShinyIcon.setVisible(pokemon.isShiny()); this.pokemonShinyIcon.setTint(getVariantTint(baseVariant)); if (this.pokemonShinyIcon.visible) { - const shinyDescriptor = - doubleShiny || baseVariant - ? `${baseVariant === 2 ? i18next.t("common:epicShiny") : baseVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}${doubleShiny ? `/${pokemon.fusionVariant === 2 ? i18next.t("common:epicShiny") : pokemon.fusionVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}` : ""}` - : ""; - this.pokemonShinyIcon.on("pointerover", () => - globalScene.ui.showTooltip( - "", - `${i18next.t("common:shinyOnHover")}${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`, - true, - ), - ); - this.pokemonShinyIcon.on("pointerout", () => globalScene.ui.hideTooltip()); + let shinyDescriptor = ""; + if (doubleShiny || baseVariant) { + shinyDescriptor = " (" + getShinyDescriptor(baseVariant); + if (doubleShiny) { + shinyDescriptor += "/" + getShinyDescriptor(pokemon.fusionVariant); + } + shinyDescriptor += ")"; + } + this.pokemonShinyIcon + .on("pointerover", () => + globalScene.ui.showTooltip("", i18next.t("common:shinyOnHover") + shinyDescriptor, true), + ) + .on("pointerout", () => globalScene.ui.hideTooltip()); const newShiny = BigInt(1 << (pokemon.shiny ? 1 : 0)); const newVariant = BigInt(1 << (pokemon.variant + 4)); diff --git a/src/ui/summary-ui-handler.ts b/src/ui/summary-ui-handler.ts index f93a1826b3e..24e790f7c61 100644 --- a/src/ui/summary-ui-handler.ts +++ b/src/ui/summary-ui-handler.ts @@ -11,6 +11,7 @@ import { isNullOrUndefined, toReadableString, formatStat, + getShinyDescriptor, } from "#app/utils/common"; import type { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters"; @@ -444,18 +445,19 @@ export default class SummaryUiHandler extends UiHandler { this.shinyIcon.setVisible(this.pokemon.isShiny(false)); this.shinyIcon.setTint(getVariantTint(baseVariant)); if (this.shinyIcon.visible) { - const shinyDescriptor = - doubleShiny || baseVariant - ? `${baseVariant === 2 ? i18next.t("common:epicShiny") : baseVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}${doubleShiny ? `/${this.pokemon.fusionVariant === 2 ? i18next.t("common:epicShiny") : this.pokemon.fusionVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}` : ""}` - : ""; - this.shinyIcon.on("pointerover", () => - globalScene.ui.showTooltip( - "", - `${i18next.t("common:shinyOnHover")}${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`, - true, - ), - ); - this.shinyIcon.on("pointerout", () => globalScene.ui.hideTooltip()); + let shinyDescriptor = ""; + if (doubleShiny || baseVariant) { + shinyDescriptor = " (" + getShinyDescriptor(baseVariant); + if (doubleShiny) { + shinyDescriptor += "/" + getShinyDescriptor(this.pokemon.fusionVariant); + } + shinyDescriptor += ")"; + } + this.shinyIcon + .on("pointerover", () => + globalScene.ui.showTooltip("", i18next.t("common:shinyOnHover") + shinyDescriptor, true), + ) + .on("pointerout", () => globalScene.ui.hideTooltip()); } this.fusionShinyIcon.setPosition(this.shinyIcon.x, this.shinyIcon.y); diff --git a/src/utils/common.ts b/src/utils/common.ts index b9111578e2f..a018b49da3c 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -2,6 +2,7 @@ import { MoneyFormat } from "#enums/money-format"; import { Moves } from "#enums/moves"; import i18next from "i18next"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; +import type { Variant } from "#app/sprites/variant"; export type nil = null | undefined; @@ -576,3 +577,18 @@ export function animationFileName(move: Moves): string { export function camelCaseToKebabCase(str: string): string { return str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, (s, o) => (o ? "-" : "") + s.toLowerCase()); } + +/** Get the localized shiny descriptor for the provided variant + * @param variant - The variant to get the shiny descriptor for + * @returns The localized shiny descriptor + */ +export function getShinyDescriptor(variant: Variant): string { + switch (variant) { + case 2: + return i18next.t("common:epicShiny"); + case 1: + return i18next.t("common:rareShiny"); + case 0: + return i18next.t("common:commonShiny"); + } +} diff --git a/test/testUtils/mocks/mockGameObject.ts b/test/testUtils/mocks/mockGameObject.ts index 4c243ec9ca1..0dff7c48c73 100644 --- a/test/testUtils/mocks/mockGameObject.ts +++ b/test/testUtils/mocks/mockGameObject.ts @@ -1,3 +1,4 @@ export interface MockGameObject { name: string; + destroy?(): void; } diff --git a/test/testUtils/mocks/mocksContainer/mockContainer.ts b/test/testUtils/mocks/mocksContainer/mockContainer.ts index 5e739fbe3cc..e116e7d151a 100644 --- a/test/testUtils/mocks/mocksContainer/mockContainer.ts +++ b/test/testUtils/mocks/mocksContainer/mockContainer.ts @@ -2,199 +2,253 @@ import type MockTextureManager from "#test/testUtils/mocks/mockTextureManager"; import type { MockGameObject } from "../mockGameObject"; export default class MockContainer implements MockGameObject { - protected x; - protected y; + protected x: number; + protected y: number; protected scene; - protected width; - protected height; - protected visible; - private alpha; + protected width: number; + protected height: number; + protected visible: boolean; + private alpha: number; private style; public frame; protected textureManager; public list: MockGameObject[] = []; public name: string; - constructor(textureManager: MockTextureManager, x, y) { + constructor(textureManager: MockTextureManager, x: number, y: number) { this.x = x; this.y = y; this.frame = {}; this.textureManager = textureManager; } - setVisible(visible) { + setVisible(visible: boolean): this { this.visible = visible; + return this; } - once(_event, _callback, _source) {} + once(_event, _callback, _source): this { + return this; + } - off(_event, _callback, _source) {} + off(_event, _callback, _source): this { + return this; + } - removeFromDisplayList() { + removeFromDisplayList(): this { // same as remove or destroy + return this; } - removeBetween(_startIndex, _endIndex, _destroyChild) { + removeBetween(_startIndex, _endIndex, _destroyChild): this { // Removes multiple children across an index range + return this; } addedToScene() { // This callback is invoked when this Game Object is added to a Scene. } - setSize(_width, _height) { + setSize(_width: number, _height: number): this { // Sets the size of this Game Object. + return this; } - setMask() { + setMask(): this { /// Sets the mask that this Game Object will use to render with. + return this; } - setPositionRelative(_source, _x, _y) { + setPositionRelative(_source, _x, _y): this { /// Sets the position of this Game Object to be a relative position from the source Game Object. + return this; } - setInteractive = () => null; + setInteractive(): this { + return this; + } - setOrigin(x, y) { + setOrigin(x = 0.5, y = x): this { this.x = x; this.y = y; + return this; } - setAlpha(alpha) { + setAlpha(alpha = 1): this { this.alpha = alpha; + return this; } - setFrame(_frame, _updateSize?: boolean, _updateOrigin?: boolean) { + setFrame(_frame, _updateSize?: boolean, _updateOrigin?: boolean): this { // Sets the frame this Game Object will use to render with. + return this; } - setScale(_scale) { + setScale(_x = 1, _y = _x): this { // Sets the scale of this Game Object. + return this; } - setPosition(x, y) { + setPosition(x = 0, y = x, _z = 0, _w = 0): this { this.x = x; this.y = y; + return this; } - setX(x) { + setX(x = 0): this { this.x = x; + return this; } - setY(y) { + setY(y = 0): this { this.y = y; + return this; } destroy() { this.list = []; } - setShadow(_shadowXpos, _shadowYpos, _shadowColor) { + setShadow(_shadowXpos, _shadowYpos, _shadowColor): this { // Sets the shadow settings for this Game Object. + return this; } - setLineSpacing(_lineSpacing) { + setLineSpacing(_lineSpacing): this { // Sets the line spacing value of this Game Object. + return this; } - setText(_text) { + setText(_text): this { // Sets the text this Game Object will display. + return this; } - setAngle(_angle) { + setAngle(_angle): this { // Sets the angle of this Game Object. + return this; } - setShadowOffset(_offsetX, _offsetY) { + setShadowOffset(_offsetX, _offsetY): this { // Sets the shadow offset values. + return this; } setWordWrapWidth(_width) { // Sets the width (in pixels) to use for wrapping lines. } - setFontSize(_fontSize) { + setFontSize(_fontSize): this { // Sets the font size of this Game Object. + return this; } getBounds() { return { width: this.width, height: this.height }; } - setColor(_color) { + setColor(_color): this { // Sets the tint of this Game Object. + return this; } - setShadowColor(_color) { + setShadowColor(_color): this { // Sets the shadow color. + return this; } - setTint(_color) { + setTint(_color: this) { // Sets the tint of this Game Object. + return this; } - setStrokeStyle(_thickness, _color) { + setStrokeStyle(_thickness, _color): this { // Sets the stroke style for the graphics. return this; } - setDepth(_depth) { - // Sets the depth of this Game Object. + setDepth(_depth): this { + // Sets the depth of this Game Object.\ + return this; } - setTexture(_texture) { - // Sets the texture this Game Object will use to render with. + setTexture(_texture): this { + // Sets the texture this Game Object will use to render with.\ + return this; } - clearTint() { - // Clears any previously set tint. + clearTint(): this { + // Clears any previously set tint.\ + return this; } - sendToBack() { - // Sends this Game Object to the back of its parent's display list. + sendToBack(): this { + // Sends this Game Object to the back of its parent's display list.\ + return this; } - moveTo(_obj) { - // Moves this Game Object to the given index in the list. + moveTo(_obj): this { + // Moves this Game Object to the given index in the list.\ + return this; } - moveAbove(_obj) { + moveAbove(_obj): this { // Moves this Game Object to be above the given Game Object in the display list. + return this; } - moveBelow(_obj) { + moveBelow(_obj): this { // Moves this Game Object to be below the given Game Object in the display list. + return this; } - setName(name: string) { + setName(name: string): this { this.name = name; + return this; } - bringToTop(_obj) { + bringToTop(_obj): this { // Brings this Game Object to the top of its parents display list. + return this; } - on(_event, _callback, _source) {} + on(_event, _callback, _source): this { + return this; + } - add(obj) { + add(...obj: MockGameObject[]): this { // Adds a child to this Game Object. - this.list.push(obj); + this.list.push(...obj); + return this; } - removeAll() { + removeAll(): this { // Removes all Game Objects from this Container. this.list = []; + return this; } - addAt(obj, index) { + addAt(obj: MockGameObject | MockGameObject[], index = 0): this { // Adds a Game Object to this Container at the given index. - this.list.splice(index, 0, obj); + if (!Array.isArray(obj)) { + obj = [obj]; + } + this.list.splice(index, 0, ...obj); + return this; } - remove(obj) { - const index = this.list.indexOf(obj); - if (index !== -1) { - this.list.splice(index, 1); + remove(obj: MockGameObject | MockGameObject[], destroyChild = false): this { + if (!Array.isArray(obj)) { + obj = [obj]; } + for (const item of obj) { + const index = this.list.indexOf(item); + if (index !== -1) { + this.list.splice(index, 1); + } + if (destroyChild) { + item.destroy?.(); + } + } + return this; } getIndex(obj) { @@ -210,15 +264,28 @@ export default class MockContainer implements MockGameObject { return this.list; } - getByName(key: string) { + getByName(key: string): MockGameObject | null { return this.list.find(v => v.name === key) ?? new MockContainer(this.textureManager, 0, 0); } - disableInteractive = () => null; + disableInteractive(): this { + return this; + } - each(method) { + each(method): this { for (const item of this.list) { method(item); } + return this; + } + + copyPosition(source: { x?: number; y?: number }): this { + if (source.x !== undefined) { + this.x = source.x; + } + if (source.y !== undefined) { + this.y = source.y; + } + return this; } } diff --git a/test/testUtils/mocks/mocksContainer/mockGraphics.ts b/test/testUtils/mocks/mocksContainer/mockGraphics.ts index ebf84e935e3..1650d2f9f60 100644 --- a/test/testUtils/mocks/mocksContainer/mockGraphics.ts +++ b/test/testUtils/mocks/mocksContainer/mockGraphics.ts @@ -8,57 +8,76 @@ export default class MockGraphics implements MockGameObject { this.scene = textureManager.scene; } - fillStyle(_color) { + fillStyle(_color): this { // Sets the fill style to be used by the fill methods. + return this; } - beginPath() { + beginPath(): this { // Starts a new path by emptying the list of sub-paths. Call this method when you want to create a new path. + return this; } - fillRect(_x, _y, _width, _height) { + fillRect(_x, _y, _width, _height): this { // Adds a rectangle shape to the path which is filled when you call fill(). + return this; } - createGeometryMask() { + createGeometryMask(): this { // Creates a geometry mask. + return this; } - setOrigin(_x, _y) {} + setOrigin(_x, _y): this { + return this; + } - setAlpha(_alpha) {} + setAlpha(_alpha): this { + return this; + } - setVisible(_visible) {} + setVisible(_visible): this { + return this; + } - setName(_name) {} + setName(_name) { + return this; + } - once(_event, _callback, _source) {} + once(_event, _callback, _source) { + return this; + } - removeFromDisplayList() { + removeFromDisplayList(): this { // same as remove or destroy + return this; } addedToScene() { // This callback is invoked when this Game Object is added to a Scene. } - setPositionRelative(_source, _x, _y) { + setPositionRelative(_source, _x, _y): this { /// Sets the position of this Game Object to be a relative position from the source Game Object. + return this; } destroy() { this.list = []; } - setScale(_scale) { - // Sets the scale of this Game Object. + setScale(_scale): this { + return this; } - off(_event, _callback, _source) {} + off(_event, _callback, _source): this { + return this; + } - add(obj) { + add(obj): this { // Adds a child to this Game Object. this.list.push(obj); + return this; } removeAll() { @@ -90,4 +109,8 @@ export default class MockGraphics implements MockGameObject { getAll() { return this.list; } + + copyPosition(_source): this { + return this; + } } diff --git a/test/testUtils/mocks/mocksContainer/mockRectangle.ts b/test/testUtils/mocks/mocksContainer/mockRectangle.ts index 7bdf343759d..f9a92c41904 100644 --- a/test/testUtils/mocks/mocksContainer/mockRectangle.ts +++ b/test/testUtils/mocks/mocksContainer/mockRectangle.ts @@ -10,34 +10,47 @@ export default class MockRectangle implements MockGameObject { this.fillColor = fillColor; this.scene = textureManager.scene; } - setOrigin(_x, _y) {} + setOrigin(_x, _y): this { + return this; + } - setAlpha(_alpha) {} - setVisible(_visible) {} + setAlpha(_alpha): this { + return this; + } + setVisible(_visible): this { + return this; + } - setName(_name) {} + setName(_name): this { + return this; + } - once(_event, _callback, _source) {} + once(_event, _callback, _source): this { + return this; + } - removeFromDisplayList() { + removeFromDisplayList(): this { // same as remove or destroy + return this; } addedToScene() { // This callback is invoked when this Game Object is added to a Scene. } - setPositionRelative(_source, _x, _y) { + setPositionRelative(_source, _x, _y): this { /// Sets the position of this Game Object to be a relative position from the source Game Object. + return this; } destroy() { this.list = []; } - add(obj) { + add(obj): this { // Adds a child to this Game Object. this.list.push(obj); + return this; } removeAll() { @@ -45,16 +58,18 @@ export default class MockRectangle implements MockGameObject { this.list = []; } - addAt(obj, index) { + addAt(obj, index): this { // Adds a Game Object to this Container at the given index. this.list.splice(index, 0, obj); + return this; } - remove(obj) { + remove(obj): this { const index = this.list.indexOf(obj); if (index !== -1) { this.list.splice(index, 1); } + return this; } getIndex(obj) { @@ -69,9 +84,12 @@ export default class MockRectangle implements MockGameObject { getAll() { return this.list; } - setScale(_scale) { + setScale(_scale): this { // return this.phaserText.setScale(scale); + return this; } - off() {} + off(): this { + return this; + } } diff --git a/test/testUtils/mocks/mocksContainer/mockSprite.ts b/test/testUtils/mocks/mocksContainer/mockSprite.ts index dcc3588f127..b8ccfcced1f 100644 --- a/test/testUtils/mocks/mocksContainer/mockSprite.ts +++ b/test/testUtils/mocks/mocksContainer/mockSprite.ts @@ -1,6 +1,5 @@ import Phaser from "phaser"; import type { MockGameObject } from "../mockGameObject"; -import Sprite = Phaser.GameObjects.Sprite; import Frame = Phaser.Textures.Frame; export default class MockSprite implements MockGameObject { @@ -21,7 +20,9 @@ export default class MockSprite implements MockGameObject { Phaser.GameObjects.Sprite.prototype.setInteractive = this.setInteractive; // @ts-ignore Phaser.GameObjects.Sprite.prototype.setTexture = this.setTexture; + // @ts-ignore Phaser.GameObjects.Sprite.prototype.setSizeToFrame = this.setSizeToFrame; + // @ts-ignore Phaser.GameObjects.Sprite.prototype.setFrame = this.setFrame; // Phaser.GameObjects.Sprite.prototype.disable = this.disable; @@ -37,46 +38,55 @@ export default class MockSprite implements MockGameObject { }; } - setTexture(_key: string, _frame?: string | number) { + setTexture(_key: string, _frame?: string | number): this { return this; } - setSizeToFrame(_frame?: boolean | Frame): Sprite { - return {} as Sprite; + setSizeToFrame(_frame?: boolean | Frame): this { + return this; } - setPipeline(obj) { + setPipeline(obj): this { // Sets the pipeline of this Game Object. - return this.phaserSprite.setPipeline(obj); + this.phaserSprite.setPipeline(obj); + return this; } - off(_event, _callback, _source) {} + off(_event, _callback, _source): this { + return this; + } - setTintFill(color) { + setTintFill(color): this { // Sets the tint fill color. - return this.phaserSprite.setTintFill(color); + this.phaserSprite.setTintFill(color); + return this; } - setScale(scale) { - return this.phaserSprite.setScale(scale); + setScale(scale = 1): this { + this.phaserSprite.setScale(scale); + return this; } - setOrigin(x, y) { - return this.phaserSprite.setOrigin(x, y); + setOrigin(x = 0.5, y = x): this { + this.phaserSprite.setOrigin(x, y); + return this; } - setSize(width, height) { + setSize(width, height): this { // Sets the size of this Game Object. - return this.phaserSprite.setSize(width, height); + this.phaserSprite.setSize(width, height); + return this; } - once(event, callback, source) { - return this.phaserSprite.once(event, callback, source); + once(event, callback, source): this { + this.phaserSprite.once(event, callback, source); + return this; } - removeFromDisplayList() { + removeFromDisplayList(): this { // same as remove or destroy - return this.phaserSprite.removeFromDisplayList(); + this.phaserSprite.removeFromDisplayList(); + return this; } addedToScene() { @@ -84,97 +94,117 @@ export default class MockSprite implements MockGameObject { return this.phaserSprite.addedToScene(); } - setVisible(visible) { - return this.phaserSprite.setVisible(visible); + setVisible(visible): this { + this.phaserSprite.setVisible(visible); + return this; } - setPosition(x, y) { - return this.phaserSprite.setPosition(x, y); + setPosition(x, y): this { + this.phaserSprite.setPosition(x, y); + return this; } - setRotation(radians) { - return this.phaserSprite.setRotation(radians); + setRotation(radians): this { + this.phaserSprite.setRotation(radians); + return this; } - stop() { - return this.phaserSprite.stop(); + stop(): this { + this.phaserSprite.stop(); + return this; } - setInteractive = () => null; - - on(event, callback, source) { - return this.phaserSprite.on(event, callback, source); + setInteractive(): this { + return this; } - setAlpha(alpha) { - return this.phaserSprite.setAlpha(alpha); + on(event, callback, source): this { + this.phaserSprite.on(event, callback, source); + return this; } - setTint(color) { + setAlpha(alpha): this { + this.phaserSprite.setAlpha(alpha); + return this; + } + + setTint(color): this { // Sets the tint of this Game Object. - return this.phaserSprite.setTint(color); + this.phaserSprite.setTint(color); + return this; } - setFrame(frame, _updateSize?: boolean, _updateOrigin?: boolean) { + setFrame(frame, _updateSize?: boolean, _updateOrigin?: boolean): this { // Sets the frame this Game Object will use to render with. this.frame = frame; - return frame; + return this; } - setPositionRelative(source, x, y) { + setPositionRelative(source, x, y): this { /// Sets the position of this Game Object to be a relative position from the source Game Object. - return this.phaserSprite.setPositionRelative(source, x, y); + this.phaserSprite.setPositionRelative(source, x, y); + return this; } - setY(y) { - return this.phaserSprite.setY(y); + setY(y: number): this { + this.phaserSprite.setY(y); + return this; } - setCrop(x, y, width, height) { + setCrop(x: number, y: number, width: number, height: number): this { // Sets the crop size of this Game Object. - return this.phaserSprite.setCrop(x, y, width, height); + this.phaserSprite.setCrop(x, y, width, height); + return this; } - clearTint() { + clearTint(): this { // Clears any previously set tint. - return this.phaserSprite.clearTint(); + this.phaserSprite.clearTint(); + return this; } - disableInteractive() { + disableInteractive(): this { // Disables Interactive features of this Game Object. - return null; + return this; } apply() { - return this.phaserSprite.apply(); + this.phaserSprite.apply(); + return this; } - play() { + play(): this { // return this.phaserSprite.play(); return this; } - setPipelineData(key, value) { + setPipelineData(key: string, value: any): this { this.pipelineData[key] = value; + return this; } destroy() { return this.phaserSprite.destroy(); } - setName(name) { - return this.phaserSprite.setName(name); + setName(name: string): this { + this.phaserSprite.setName(name); + return this; } - setAngle(angle) { - return this.phaserSprite.setAngle(angle); + setAngle(angle): this { + this.phaserSprite.setAngle(angle); + return this; } - setMask() {} + setMask(): this { + return this; + } - add(obj) { + add(obj): this { // Adds a child to this Game Object. this.list.push(obj); + return this; } removeAll() { @@ -182,16 +212,18 @@ export default class MockSprite implements MockGameObject { this.list = []; } - addAt(obj, index) { + addAt(obj, index): this { // Adds a Game Object to this Container at the given index. this.list.splice(index, 0, obj); + return this; } - remove(obj) { + remove(obj): this { const index = this.list.indexOf(obj); if (index !== -1) { this.list.splice(index, 1); } + return this; } getIndex(obj) { @@ -206,4 +238,9 @@ export default class MockSprite implements MockGameObject { getAll() { return this.list; } + + copyPosition(obj): this { + this.phaserSprite.copyPosition(obj); + return this; + } } diff --git a/test/testUtils/mocks/mocksContainer/mockText.ts b/test/testUtils/mocks/mocksContainer/mockText.ts index 1f3f0ad792f..dc648616fe6 100644 --- a/test/testUtils/mocks/mocksContainer/mockText.ts +++ b/test/testUtils/mocks/mocksContainer/mockText.ts @@ -107,42 +107,51 @@ export default class MockText implements MockGameObject { } } - setScale(_scale) { + setScale(_scale): this { // return this.phaserText.setScale(scale); + return this; } - setShadow(_shadowXpos, _shadowYpos, _shadowColor) { + setShadow(_shadowXpos, _shadowYpos, _shadowColor): this { // Sets the shadow settings for this Game Object. // return this.phaserText.setShadow(shadowXpos, shadowYpos, shadowColor); + return this; } - setLineSpacing(_lineSpacing) { + setLineSpacing(_lineSpacing): this { // Sets the line spacing value of this Game Object. // return this.phaserText.setLineSpacing(lineSpacing); + return this; } - setOrigin(_x, _y) { + setOrigin(_x, _y): this { // return this.phaserText.setOrigin(x, y); + return this; } - once(_event, _callback, _source) { + once(_event, _callback, _source): this { // return this.phaserText.once(event, callback, source); + return this; } off(_event, _callback, _obj) {} removedFromScene() {} - addToDisplayList() {} - - setStroke(_color, _thickness) { - // Sets the stroke color and thickness. - // return this.phaserText.setStroke(color, thickness); + addToDisplayList(): this { + return this; } - removeFromDisplayList() { + setStroke(_color, _thickness): this { + // Sets the stroke color and thickness. + // return this.phaserText.setStroke(color, thickness); + return this; + } + + removeFromDisplayList(): this { // same as remove or destroy // return this.phaserText.removeFromDisplayList(); + return this; } addedToScene() { @@ -154,12 +163,14 @@ export default class MockText implements MockGameObject { // return this.phaserText.setVisible(visible); } - setY(_y) { + setY(_y): this { // return this.phaserText.setY(y); + return this; } - setX(_x) { + setX(_x): this { // return this.phaserText.setX(x); + return this; } /** @@ -169,27 +180,33 @@ export default class MockText implements MockGameObject { * @param z The z position of this Game Object. Default 0. * @param w The w position of this Game Object. Default 0. */ - setPosition(_x?: number, _y?: number, _z?: number, _w?: number) {} + setPosition(_x?: number, _y?: number, _z?: number, _w?: number): this { + return this; + } - setText(text) { + setText(text): this { // Sets the text this Game Object will display. // return this.phaserText.setText\(text); this.text = text; + return this; } - setAngle(_angle) { + setAngle(_angle): this { // Sets the angle of this Game Object. // return this.phaserText.setAngle(angle); + return this; } - setPositionRelative(_source, _x, _y) { + setPositionRelative(_source, _x, _y): this { /// Sets the position of this Game Object to be a relative position from the source Game Object. // return this.phaserText.setPositionRelative(source, x, y); + return this; } - setShadowOffset(_offsetX, _offsetY) { + setShadowOffset(_offsetX, _offsetY): this { // Sets the shadow offset values. // return this.phaserText.setShadowOffset(offsetX, offsetY); + return this; } setWordWrapWidth(width) { @@ -197,9 +214,10 @@ export default class MockText implements MockGameObject { this.wordWrapWidth = width; } - setFontSize(_fontSize) { + setFontSize(_fontSize): this { // Sets the font size of this Game Object. // return this.phaserText.setFontSize(fontSize); + return this; } getBounds() { @@ -209,25 +227,31 @@ export default class MockText implements MockGameObject { }; } - setColor(color: string) { + setColor(color: string): this { this.color = color; + return this; } - setInteractive = () => null; + setInteractive(): this { + return this; + } - setShadowColor(_color) { + setShadowColor(_color): this { // Sets the shadow color. // return this.phaserText.setShadowColor(color); + return this; } - setTint(_color) { + setTint(_color): this { // Sets the tint of this Game Object. // return this.phaserText.setTint(color); + return this; } - setStrokeStyle(_thickness, _color) { + setStrokeStyle(_thickness, _color): this { // Sets the stroke style for the graphics. // return this.phaserText.setStrokeStyle(thickness, color); + return this; } destroy() { @@ -235,20 +259,24 @@ export default class MockText implements MockGameObject { this.list = []; } - setAlpha(_alpha) { + setAlpha(_alpha): this { // return this.phaserText.setAlpha(alpha); + return this; } - setName(name: string) { + setName(name: string): this { this.name = name; + return this; } - setAlign(_align) { + setAlign(_align): this { // return this.phaserText.setAlign(align); + return this; } - setMask() { + setMask(): this { /// Sets the mask that this Game Object will use to render with. + return this; } getBottomLeft() { @@ -265,37 +293,43 @@ export default class MockText implements MockGameObject { }; } - disableInteractive() { + disableInteractive(): this { // Disables interaction with this Game Object. + return this; } - clearTint() { + clearTint(): this { // Clears tint on this Game Object. + return this; } - add(obj) { + add(obj): this { // Adds a child to this Game Object. this.list.push(obj); + return this; } - removeAll() { + removeAll(): this { // Removes all Game Objects from this Container. this.list = []; + return this; } - addAt(obj, index) { + addAt(obj, index): this { // Adds a Game Object to this Container at the given index. this.list.splice(index, 0, obj); + return this; } - remove(obj) { + remove(obj): this { const index = this.list.indexOf(obj); if (index !== -1) { this.list.splice(index, 1); } + return this; } - getIndex(obj) { + getIndex(obj): number { const index = this.list.indexOf(obj); return index || -1; } diff --git a/test/testUtils/testFileInitialization.ts b/test/testUtils/testFileInitialization.ts index 15635289e6f..ba90cba7d5b 100644 --- a/test/testUtils/testFileInitialization.ts +++ b/test/testUtils/testFileInitialization.ts @@ -70,10 +70,10 @@ export function initTestFile() { * @param x The relative x position * @param y The relative y position */ - const setPositionRelative = function (guideObject: any, x: number, y: number) { + const setPositionRelative = function (guideObject: any, x: number, y: number): any { const offsetX = guideObject.width * (-0.5 + (0.5 - guideObject.originX)); const offsetY = guideObject.height * (-0.5 + (0.5 - guideObject.originY)); - this.setPosition(guideObject.x + offsetX + x, guideObject.y + offsetY + y); + return this.setPosition(guideObject.x + offsetX + x, guideObject.y + offsetY + y); }; Phaser.GameObjects.Container.prototype.setPositionRelative = setPositionRelative; From d8c00616fc155fdf5a6b90a48a2cc3bb65c80819 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Wed, 28 May 2025 20:00:54 -0500 Subject: [PATCH 18/71] [Test] Add iterate, fix each method in mock container (#5882) --- .../mocks/mocksContainer/mockContainer.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/test/testUtils/mocks/mocksContainer/mockContainer.ts b/test/testUtils/mocks/mocksContainer/mockContainer.ts index e116e7d151a..b392e61f9f7 100644 --- a/test/testUtils/mocks/mocksContainer/mockContainer.ts +++ b/test/testUtils/mocks/mocksContainer/mockContainer.ts @@ -272,9 +272,24 @@ export default class MockContainer implements MockGameObject { return this; } - each(method): this { + // biome-ignore lint/complexity/noBannedTypes: This matches the signature of the method it mocks + each(callback: Function, context?: object, ...args: any[]): this { + if (context !== undefined) { + callback = callback.bind(context); + } + for (const item of this.list.slice()) { + callback(item, ...args); + } + return this; + } + + // biome-ignore lint/complexity/noBannedTypes: This matches the signature of the method it mocks + iterate(callback: Function, context?: object, ...args: any[]): this { + if (context !== undefined) { + callback = callback.bind(context); + } for (const item of this.list) { - method(item); + callback(item, ...args); } return this; } From 86fa3198fd897b3aafbcba7abf5d4dc6e972738e Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Wed, 28 May 2025 21:47:27 -0500 Subject: [PATCH 19/71] [Test] Fix mock text to make it compatible with method chaining (#5884) --- test/testUtils/mocks/mocksContainer/mockText.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/test/testUtils/mocks/mocksContainer/mockText.ts b/test/testUtils/mocks/mocksContainer/mockText.ts index dc648616fe6..8f72cd0d34f 100644 --- a/test/testUtils/mocks/mocksContainer/mockText.ts +++ b/test/testUtils/mocks/mocksContainer/mockText.ts @@ -159,8 +159,8 @@ export default class MockText implements MockGameObject { // return this.phaserText.addedToScene(); } - setVisible(_visible) { - // return this.phaserText.setVisible(visible); + setVisible(_visible): this { + return this; } setY(_y): this { @@ -209,9 +209,10 @@ export default class MockText implements MockGameObject { return this; } - setWordWrapWidth(width) { + setWordWrapWidth(width): this { // Sets the width (in pixels) to use for wrapping lines. this.wordWrapWidth = width; + return this; } setFontSize(_fontSize): this { @@ -351,5 +352,6 @@ export default class MockText implements MockGameObject { return this.runWordWrap(this.text).split("\n"); } + // biome-ignore lint/complexity/noBannedTypes: This matches the signature of the class this mocks on(_event: string | symbol, _fn: Function, _context?: any) {} } From f9e6785c351d07e7f2a7e11299831aff476c6db4 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Wed, 28 May 2025 22:18:06 -0500 Subject: [PATCH 20/71] [Test] Fix mocks' add method to match phaser signature (#5885) --- test/testUtils/mocks/mocksContainer/mockContainer.ts | 9 ++++++--- test/testUtils/mocks/mocksContainer/mockRectangle.ts | 8 ++++++-- test/testUtils/mocks/mocksContainer/mockSprite.ts | 8 ++++++-- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/test/testUtils/mocks/mocksContainer/mockContainer.ts b/test/testUtils/mocks/mocksContainer/mockContainer.ts index b392e61f9f7..883c3856c26 100644 --- a/test/testUtils/mocks/mocksContainer/mockContainer.ts +++ b/test/testUtils/mocks/mocksContainer/mockContainer.ts @@ -214,9 +214,12 @@ export default class MockContainer implements MockGameObject { return this; } - add(...obj: MockGameObject[]): this { - // Adds a child to this Game Object. - this.list.push(...obj); + add(obj: MockGameObject | MockGameObject[]): this { + if (Array.isArray(obj)) { + this.list.push(...obj); + } else { + this.list.push(obj); + } return this; } diff --git a/test/testUtils/mocks/mocksContainer/mockRectangle.ts b/test/testUtils/mocks/mocksContainer/mockRectangle.ts index f9a92c41904..c11af824c56 100644 --- a/test/testUtils/mocks/mocksContainer/mockRectangle.ts +++ b/test/testUtils/mocks/mocksContainer/mockRectangle.ts @@ -47,9 +47,13 @@ export default class MockRectangle implements MockGameObject { this.list = []; } - add(obj): this { + add(obj: MockGameObject | MockGameObject[]): this { // Adds a child to this Game Object. - this.list.push(obj); + if (Array.isArray(obj)) { + this.list.push(...obj); + } else { + this.list.push(obj); + } return this; } diff --git a/test/testUtils/mocks/mocksContainer/mockSprite.ts b/test/testUtils/mocks/mocksContainer/mockSprite.ts index b8ccfcced1f..ad70b6ced07 100644 --- a/test/testUtils/mocks/mocksContainer/mockSprite.ts +++ b/test/testUtils/mocks/mocksContainer/mockSprite.ts @@ -201,9 +201,13 @@ export default class MockSprite implements MockGameObject { return this; } - add(obj): this { + add(obj: MockGameObject | MockGameObject[]): this { // Adds a child to this Game Object. - this.list.push(obj); + if (Array.isArray(obj)) { + this.list.push(...obj); + } else { + this.list.push(obj); + } return this; } From 8fcb33d11aab3586e452ed02a668774677f65239 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Thu, 29 May 2025 19:11:53 -0500 Subject: [PATCH 21/71] [Bug] Fix improperly named sprite key for enemy boss' battle UI (#5888) --- src/ui/battle-info/battle-info.ts | 2 +- src/ui/battle-info/enemy-battle-info.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ui/battle-info/battle-info.ts b/src/ui/battle-info/battle-info.ts index 71596bf0f43..7e6cc12bd3d 100644 --- a/src/ui/battle-info/battle-info.ts +++ b/src/ui/battle-info/battle-info.ts @@ -230,7 +230,7 @@ export default abstract class BattleInfo extends Phaser.GameObjects.Container { this.box = globalScene.add.sprite(0, 0, this.getTextureName()).setName("box").setOrigin(1, 0.5); this.add(this.box); - this.nameText = addTextObject(player ? -115 : -124, player ? -15.2 : -11.2, "", TextStyle.BATTLE_INFO) + this.nameText = addTextObject(posParams.nameTextX, posParams.nameTextY, "", TextStyle.BATTLE_INFO) .setName("text_name") .setOrigin(0); this.add(this.nameText); diff --git a/src/ui/battle-info/enemy-battle-info.ts b/src/ui/battle-info/enemy-battle-info.ts index e8f5434dcf2..7c16f01ac38 100644 --- a/src/ui/battle-info/enemy-battle-info.ts +++ b/src/ui/battle-info/enemy-battle-info.ts @@ -29,7 +29,7 @@ export class EnemyBattleInfo extends BattleInfo { } override getTextureName(): string { - return this.boss ? "pbinfo_enemy_boss_mini" : "pbinfo_enemy_mini"; + return this.boss ? "pbinfo_enemy_boss" : "pbinfo_enemy_mini"; } override constructTypeIcons(): void { From 14e01c3da12e1fa6cabdb87259eaef0bec9c8cbb Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Thu, 29 May 2025 22:27:39 -0500 Subject: [PATCH 22/71] [Test] Add missing methods to many mocks (#5891) --- test/testUtils/mocks/mockGameObject.ts | 3 +++ test/testUtils/mocks/mockVideoGameObject.ts | 17 +++++++++++++---- .../mocks/mocksContainer/mockContainer.ts | 6 ++++++ .../mocks/mocksContainer/mockGraphics.ts | 6 ++++++ .../mocks/mocksContainer/mockRectangle.ts | 6 ++++++ .../mocks/mocksContainer/mockSprite.ts | 6 ++++++ test/testUtils/mocks/mocksContainer/mockText.ts | 5 +++++ .../mocks/mocksContainer/mockTexture.ts | 11 +++++++++++ 8 files changed, 56 insertions(+), 4 deletions(-) diff --git a/test/testUtils/mocks/mockGameObject.ts b/test/testUtils/mocks/mockGameObject.ts index 0dff7c48c73..1e156b99d21 100644 --- a/test/testUtils/mocks/mockGameObject.ts +++ b/test/testUtils/mocks/mockGameObject.ts @@ -1,4 +1,7 @@ export interface MockGameObject { name: string; + active: boolean; destroy?(): void; + setActive(active: boolean): this; + setName(name: string): this; } diff --git a/test/testUtils/mocks/mockVideoGameObject.ts b/test/testUtils/mocks/mockVideoGameObject.ts index 65a5c37b244..1789229b1c7 100644 --- a/test/testUtils/mocks/mockVideoGameObject.ts +++ b/test/testUtils/mocks/mockVideoGameObject.ts @@ -3,11 +3,20 @@ import type { MockGameObject } from "./mockGameObject"; /** Mocks video-related stuff */ export class MockVideoGameObject implements MockGameObject { public name: string; + public active = true; public play = () => null; public stop = () => this; - public setOrigin = () => null; - public setScale = () => null; - public setVisible = () => null; - public setLoop = () => null; + public setOrigin = () => this; + public setScale = () => this; + public setVisible = () => this; + public setLoop = () => this; + public setName = (name: string) => { + this.name = name; + return this; + }; + public setActive = (active: boolean) => { + this.active = active; + return this; + }; } diff --git a/test/testUtils/mocks/mocksContainer/mockContainer.ts b/test/testUtils/mocks/mocksContainer/mockContainer.ts index 883c3856c26..f1371643ce3 100644 --- a/test/testUtils/mocks/mocksContainer/mockContainer.ts +++ b/test/testUtils/mocks/mocksContainer/mockContainer.ts @@ -14,6 +14,7 @@ export default class MockContainer implements MockGameObject { protected textureManager; public list: MockGameObject[] = []; public name: string; + public active = true; constructor(textureManager: MockTextureManager, x: number, y: number) { this.x = x; @@ -306,4 +307,9 @@ export default class MockContainer implements MockGameObject { } return this; } + + setActive(active: boolean): this { + this.active = active; + return this; + } } diff --git a/test/testUtils/mocks/mocksContainer/mockGraphics.ts b/test/testUtils/mocks/mocksContainer/mockGraphics.ts index 1650d2f9f60..cd43bb3a877 100644 --- a/test/testUtils/mocks/mocksContainer/mockGraphics.ts +++ b/test/testUtils/mocks/mocksContainer/mockGraphics.ts @@ -4,6 +4,7 @@ export default class MockGraphics implements MockGameObject { private scene; public list: MockGameObject[] = []; public name: string; + public active = true; constructor(textureManager, _config) { this.scene = textureManager.scene; } @@ -113,4 +114,9 @@ export default class MockGraphics implements MockGameObject { copyPosition(_source): this { return this; } + + setActive(active: boolean): this { + this.active = active; + return this; + } } diff --git a/test/testUtils/mocks/mocksContainer/mockRectangle.ts b/test/testUtils/mocks/mocksContainer/mockRectangle.ts index c11af824c56..7f54a0e255f 100644 --- a/test/testUtils/mocks/mocksContainer/mockRectangle.ts +++ b/test/testUtils/mocks/mocksContainer/mockRectangle.ts @@ -5,6 +5,7 @@ export default class MockRectangle implements MockGameObject { private scene; public list: MockGameObject[] = []; public name: string; + public active = true; constructor(textureManager, _x, _y, _width, _height, fillColor) { this.fillColor = fillColor; @@ -96,4 +97,9 @@ export default class MockRectangle implements MockGameObject { off(): this { return this; } + + setActive(active: boolean): this { + this.active = active; + return this; + } } diff --git a/test/testUtils/mocks/mocksContainer/mockSprite.ts b/test/testUtils/mocks/mocksContainer/mockSprite.ts index ad70b6ced07..df36b3a29fd 100644 --- a/test/testUtils/mocks/mocksContainer/mockSprite.ts +++ b/test/testUtils/mocks/mocksContainer/mockSprite.ts @@ -13,6 +13,7 @@ export default class MockSprite implements MockGameObject { public anims; public list: MockGameObject[] = []; public name: string; + public active = true; constructor(textureManager, x, y, texture) { this.textureManager = textureManager; this.scene = textureManager.scene; @@ -247,4 +248,9 @@ export default class MockSprite implements MockGameObject { this.phaserSprite.copyPosition(obj); return this; } + + setActive(active: boolean): this { + this.phaserSprite.setActive(active); + return this; + } } diff --git a/test/testUtils/mocks/mocksContainer/mockText.ts b/test/testUtils/mocks/mocksContainer/mockText.ts index 8f72cd0d34f..2345ff70c0d 100644 --- a/test/testUtils/mocks/mocksContainer/mockText.ts +++ b/test/testUtils/mocks/mocksContainer/mockText.ts @@ -12,6 +12,7 @@ export default class MockText implements MockGameObject { public text = ""; public name: string; public color?: string; + public active = true; constructor(textureManager, _x, _y, _content, _styleOptions) { this.scene = textureManager.scene; @@ -354,4 +355,8 @@ export default class MockText implements MockGameObject { // biome-ignore lint/complexity/noBannedTypes: This matches the signature of the class this mocks on(_event: string | symbol, _fn: Function, _context?: any) {} + + setActive(_active: boolean): this { + return this; + } } diff --git a/test/testUtils/mocks/mocksContainer/mockTexture.ts b/test/testUtils/mocks/mocksContainer/mockTexture.ts index eb8b70902fa..3b01f9ab4ea 100644 --- a/test/testUtils/mocks/mocksContainer/mockTexture.ts +++ b/test/testUtils/mocks/mocksContainer/mockTexture.ts @@ -12,6 +12,7 @@ export default class MockTexture implements MockGameObject { public frames: object; public firstFrame: string; public name: string; + public active: boolean; constructor(manager, key: string, source) { this.manager = manager; @@ -39,4 +40,14 @@ export default class MockTexture implements MockGameObject { getSourceImage() { return null; } + + setActive(active: boolean): this { + this.active = active; + return this; + } + + setName(name: string): this { + this.name = name; + return this; + } } From ff6f9131ae50da6002a7114a721bea1d727a8dde Mon Sep 17 00:00:00 2001 From: Jimmybald1 <122436263+Jimmybald1@users.noreply.github.com> Date: Fri, 30 May 2025 05:39:55 +0200 Subject: [PATCH 23/71] [Dev] Fixed biome override not working for Daily Mode (#5776) --- src/game-mode.ts | 10 +++++++--- src/overrides.ts | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/game-mode.ts b/src/game-mode.ts index ec7171b0024..97398d2b0a9 100644 --- a/src/game-mode.ts +++ b/src/game-mode.ts @@ -7,7 +7,7 @@ import type PokemonSpecies from "./data/pokemon-species"; import { allSpecies } from "./data/pokemon-species"; import type { Arena } from "./field/arena"; import Overrides from "#app/overrides"; -import { randSeedInt, randSeedItem } from "#app/utils/common"; +import { isNullOrUndefined, randSeedInt, randSeedItem } from "#app/utils/common"; import { Biome } from "#enums/biome"; import { Species } from "#enums/species"; import { Challenges } from "./enums/challenges"; @@ -124,16 +124,20 @@ export class GameMode implements GameModeConfig { /** * @returns either: - * - random biome for Daily mode * - override from overrides.ts + * - random biome for Daily mode * - Town */ getStartingBiome(): Biome { + if (!isNullOrUndefined(Overrides.STARTING_BIOME_OVERRIDE)) { + return Overrides.STARTING_BIOME_OVERRIDE; + } + switch (this.modeId) { case GameModes.DAILY: return getDailyStartingBiome(); default: - return Overrides.STARTING_BIOME_OVERRIDE || Biome.TOWN; + return Biome.TOWN; } } diff --git a/src/overrides.ts b/src/overrides.ts index 5bbd29b355f..95c758d7c43 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -73,7 +73,7 @@ class DefaultOverrides { */ readonly BATTLE_STYLE_OVERRIDE: BattleStyle | null = null; readonly STARTING_WAVE_OVERRIDE: number = 0; - readonly STARTING_BIOME_OVERRIDE: Biome = Biome.TOWN; + readonly STARTING_BIOME_OVERRIDE: Biome | null = null; readonly ARENA_TINT_OVERRIDE: TimeOfDay | null = null; /** Multiplies XP gained by this value including 0. Set to null to ignore the override. */ readonly XP_MULTIPLIER_OVERRIDE: number | null = null; From 901ed7324770e7a8d94cd13f78b5d20796b36ed4 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Thu, 29 May 2025 22:51:36 -0500 Subject: [PATCH 24/71] Cleanup evolution scene handler --- src/ui/evolution-scene-handler.ts | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/ui/evolution-scene-handler.ts b/src/ui/evolution-scene-handler.ts index cea91ce4e2c..7372fc6f2b5 100644 --- a/src/ui/evolution-scene-handler.ts +++ b/src/ui/evolution-scene-handler.ts @@ -22,18 +22,12 @@ export default class EvolutionSceneHandler extends MessageUiHandler { const ui = this.getUi(); this.evolutionContainer = globalScene.add.container(0, -globalScene.game.canvas.height / 6); - ui.add(this.evolutionContainer); - const messageBg = globalScene.add.sprite(0, 0, "bg", globalScene.windowType); - messageBg.setOrigin(0, 1); - messageBg.setVisible(false); - ui.add(messageBg); + const messageBg = globalScene.add.sprite(0, 0, "bg", globalScene.windowType).setOrigin(0, 1).setVisible(false); this.messageBg = messageBg; - this.messageContainer = globalScene.add.container(12, -39); - this.messageContainer.setVisible(false); - ui.add(this.messageContainer); + this.messageContainer = globalScene.add.container(12, -39).setVisible(false); const message = addTextObject(0, 0, "", TextStyle.MESSAGE, { maxLines: 2, @@ -43,6 +37,8 @@ export default class EvolutionSceneHandler extends MessageUiHandler { }); this.messageContainer.add(message); + ui.add([this.evolutionContainer, this.messageBg, this.messageContainer]); + this.message = message; this.initPromptSprite(this.messageContainer); @@ -52,10 +48,8 @@ export default class EvolutionSceneHandler extends MessageUiHandler { super.show(_args); globalScene.ui.bringToTop(this.evolutionContainer); - globalScene.ui.bringToTop(this.messageBg); - globalScene.ui.bringToTop(this.messageContainer); - this.messageBg.setVisible(true); - this.messageContainer.setVisible(true); + globalScene.ui.bringToTop(this.messageBg.setVisible(true)); + globalScene.ui.bringToTop(this.messageContainer.setVisible(true)); return true; } From d5f7665b15ef923d102b18c2e812edd73604c372 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Fri, 30 May 2025 12:24:05 -0700 Subject: [PATCH 25/71] [Test] Update test utils (#5848) * [Test] Add/update test utils - Add `FieldHelper` which has methods to mock a pokemon's ability or force a pokemon to be Terastallized - Add `MoveHelper#use` which can be used to remove the need for setting pokemon move overrides by modifying the moveset of the pokemon - Add `MoveHelper#selectEnemyMove` to make an enemy pokemon select a specific move - Add `MoveHelper#forceEnemyMove` which modifies the pokemon's moveset and then uses `selectEnemyMove` - Fix `GameManager#toNextTurn` to work correctly in double battles - Add `GameManager#toEndOfTurn` which advances to the end of the turn * Update some tests - Disable broken Good As Gold test and add `.edgeCase` to Good As Gold - Fix Powder test - Update some tests to demonstrate new methods --- src/data/abilities/ability.ts | 7 +- test/abilities/good_as_gold.test.ts | 32 ++++---- test/moves/alluring_voice.test.ts | 10 +-- test/moves/chloroblast.test.ts | 15 ++-- test/moves/powder.test.ts | 17 ++-- test/testUtils/gameManager.ts | 30 ++++--- test/testUtils/helpers/field-helper.ts | 87 +++++++++++++++++++++ test/testUtils/helpers/moveHelper.ts | 104 ++++++++++++++++++++++++- 8 files changed, 252 insertions(+), 50 deletions(-) create mode 100644 test/testUtils/helpers/field-helper.ts diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index b677dd2bd11..f49863639f0 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -7425,7 +7425,12 @@ export function initAbilities() { .uncopiable() .attr(NoTransformAbilityAbAttr), new Ability(Abilities.GOOD_AS_GOLD, 9) - .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.category === MoveCategory.STATUS && ![ MoveTarget.ENEMY_SIDE, MoveTarget.BOTH_SIDES, MoveTarget.USER_SIDE ].includes(move.moveTarget)) + .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => + pokemon !== attacker + && move.category === MoveCategory.STATUS + && ![ MoveTarget.ENEMY_SIDE, MoveTarget.BOTH_SIDES, MoveTarget.USER_SIDE ].includes(move.moveTarget) + ) + .edgeCase() // Heal Bell should not cure the status of a Pokemon with Good As Gold .ignorable(), new Ability(Abilities.VESSEL_OF_RUIN, 9) .attr(FieldMultiplyStatAbAttr, Stat.SPATK, 0.75) diff --git a/test/abilities/good_as_gold.test.ts b/test/abilities/good_as_gold.test.ts index 09bdaafb11f..9b1d582f64c 100644 --- a/test/abilities/good_as_gold.test.ts +++ b/test/abilities/good_as_gold.test.ts @@ -1,6 +1,6 @@ import { BattlerIndex } from "#app/battle"; -import { allAbilities } from "#app/data/data-lists"; import { ArenaTagSide } from "#app/data/arena-tag"; +import { allAbilities } from "#app/data/data-lists"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Stat } from "#app/enums/stat"; @@ -107,35 +107,33 @@ describe("Abilities - Good As Gold", () => { expect(game.scene.getPlayerField()[1].getTag(BattlerTagType.HELPING_HAND)).toBeUndefined(); }); - it("should block the ally's heal bell, but only if the good as gold user is on the field", async () => { - game.override.battleStyle("double"); - game.override.moveset([Moves.HEAL_BELL, Moves.SPLASH]); - game.override.statusEffect(StatusEffect.BURN); - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS, Species.ABRA]); - const [good_as_gold, ball_fetch] = game.scene.getPlayerField(); - - // Force second pokemon to have ball fetch to isolate to a single mon. - vi.spyOn(ball_fetch, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]); + // TODO: re-enable when heal bell is fixed + it.todo("should block the ally's heal bell, but only if the good as gold user is on the field", async () => { + game.override.battleStyle("double").statusEffect(StatusEffect.BURN); + await game.classicMode.startBattle([Species.MILOTIC, Species.FEEBAS, Species.ABRA]); + const [milotic, feebas, abra] = game.scene.getPlayerParty(); + game.field.mockAbility(milotic, Abilities.GOOD_AS_GOLD); + game.field.mockAbility(feebas, Abilities.BALL_FETCH); + game.field.mockAbility(abra, Abilities.BALL_FETCH); // turn 1 - game.move.select(Moves.SPLASH, 0); - game.move.select(Moves.HEAL_BELL, 1); + game.move.use(Moves.SPLASH, 0); + game.move.use(Moves.HEAL_BELL, 1); await game.toNextTurn(); - expect(good_as_gold.status?.effect).toBe(StatusEffect.BURN); + expect(milotic.status?.effect).toBe(StatusEffect.BURN); game.doSwitchPokemon(2); - game.move.select(Moves.HEAL_BELL, 0); + game.move.use(Moves.HEAL_BELL, 1); await game.toNextTurn(); - expect(good_as_gold.status?.effect).toBeUndefined(); + expect(milotic.status?.effect).toBeUndefined(); }); it("should not block field targeted effects like rain dance", async () => { game.override.battleStyle("single"); game.override.enemyMoveset([Moves.RAIN_DANCE]); - game.override.weather(WeatherType.NONE); await game.classicMode.startBattle([Species.MAGIKARP]); - game.move.select(Moves.SPLASH, 0); + game.move.use(Moves.SPLASH, 0); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.RAIN); diff --git a/test/moves/alluring_voice.test.ts b/test/moves/alluring_voice.test.ts index 240e008f311..9265c5f970d 100644 --- a/test/moves/alluring_voice.test.ts +++ b/test/moves/alluring_voice.test.ts @@ -29,20 +29,18 @@ describe("Moves - Alluring Voice", () => { .disableCrits() .enemySpecies(Species.MAGIKARP) .enemyAbility(Abilities.ICE_SCALES) - .enemyMoveset([Moves.HOWL]) + .enemyMoveset(Moves.HOWL) .startingLevel(10) .enemyLevel(10) - .starterSpecies(Species.FEEBAS) - .ability(Abilities.BALL_FETCH) - .moveset([Moves.ALLURING_VOICE]); + .ability(Abilities.BALL_FETCH); }); it("should confuse the opponent if their stat stages were raised", async () => { - await game.classicMode.startBattle(); + await game.classicMode.startBattle([Species.FEEBAS]); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.ALLURING_VOICE); + game.move.use(Moves.ALLURING_VOICE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to(BerryPhase); diff --git a/test/moves/chloroblast.test.ts b/test/moves/chloroblast.test.ts index 175227bbd5e..b2130da83eb 100644 --- a/test/moves/chloroblast.test.ts +++ b/test/moves/chloroblast.test.ts @@ -1,3 +1,4 @@ +import { MoveResult } from "#app/field/pokemon"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -22,21 +23,23 @@ describe("Moves - Chloroblast", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.CHLOROBLAST]) .ability(Abilities.BALL_FETCH) .battleStyle("single") .disableCrits() .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.PROTECT); + .enemyAbility(Abilities.BALL_FETCH); }); it("should not deal recoil damage if the opponent uses protect", async () => { await game.classicMode.startBattle([Species.FEEBAS]); - game.move.select(Moves.CHLOROBLAST); - await game.phaseInterceptor.to("BerryPhase"); + game.move.use(Moves.CHLOROBLAST); + await game.move.forceEnemyMove(Moves.PROTECT); + await game.toEndOfTurn(); - expect(game.scene.getPlayerPokemon()!.isFullHp()).toBe(true); + const player = game.field.getPlayerPokemon(); + + expect(player.isFullHp()).toBe(true); + expect(player.getLastXMoves()[0]).toMatchObject({ result: MoveResult.MISS, move: Moves.CHLOROBLAST }); }); }); diff --git a/test/moves/powder.test.ts b/test/moves/powder.test.ts index 457beb60f91..c6114db3ff1 100644 --- a/test/moves/powder.test.ts +++ b/test/moves/powder.test.ts @@ -1,15 +1,15 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#test/testUtils/gameManager"; +import { BattlerIndex } from "#app/battle"; +import { MoveResult, PokemonMove } from "#app/field/pokemon"; +import { BerryPhase } from "#app/phases/berry-phase"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; -import { BerryPhase } from "#app/phases/berry-phase"; -import { MoveResult, PokemonMove } from "#app/field/pokemon"; import { PokemonType } from "#enums/pokemon-type"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; +import { Species } from "#enums/species"; import { StatusEffect } from "#enums/status-effect"; -import { BattlerIndex } from "#app/battle"; +import GameManager from "#test/testUtils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Powder", () => { let phaserGame: Phaser.Game; @@ -161,7 +161,6 @@ describe("Moves - Powder", () => { game.move.select(Moves.ROAR, 0, BattlerIndex.ENEMY_2); game.move.select(Moves.SPLASH, 1); await game.toNextTurn(); - await game.toNextTurn(); // Requires game.toNextTurn() twice due to double battle // Turn 2: Enemy should activate Powder twice: From using Ember, and from copying Fiery Dance via Dancer playerPokemon.hp = playerPokemon.getMaxHp(); diff --git a/test/testUtils/gameManager.ts b/test/testUtils/gameManager.ts index 8dd90decf1a..07cea3b1328 100644 --- a/test/testUtils/gameManager.ts +++ b/test/testUtils/gameManager.ts @@ -5,6 +5,7 @@ import { getMoveTargets } from "#app/data/moves/move"; import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import Trainer from "#app/field/trainer"; import { GameModes, getGameMode } from "#app/game-mode"; +import { globalScene } from "#app/global-scene"; import { ModifierTypeOption, modifierTypes } from "#app/modifier/modifier-type"; import overrides from "#app/overrides"; import { CheckSwitchPhase } from "#app/phases/check-switch-phase"; @@ -22,15 +23,13 @@ import { TitlePhase } from "#app/phases/title-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; import { TurnStartPhase } from "#app/phases/turn-start-phase"; -import ErrorInterceptor from "#test/testUtils/errorInterceptor"; -import type InputsHandler from "#test/testUtils/inputsHandler"; import type BallUiHandler from "#app/ui/ball-ui-handler"; import type BattleMessageUiHandler from "#app/ui/battle-message-ui-handler"; import type CommandUiHandler from "#app/ui/command-ui-handler"; import type ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import type PartyUiHandler from "#app/ui/party-ui-handler"; +import type StarterSelectUiHandler from "#app/ui/starter-select-ui-handler"; import type TargetSelectUiHandler from "#app/ui/target-select-ui-handler"; -import { UiMode } from "#enums/ui-mode"; import { isNullOrUndefined } from "#app/utils/common"; import { BattleStyle } from "#enums/battle-style"; import { Button } from "#enums/buttons"; @@ -40,24 +39,26 @@ import type { Moves } from "#enums/moves"; import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PlayerGender } from "#enums/player-gender"; import type { Species } from "#enums/species"; +import { UiMode } from "#enums/ui-mode"; +import ErrorInterceptor from "#test/testUtils/errorInterceptor"; import { generateStarter, waitUntil } from "#test/testUtils/gameManagerUtils"; import GameWrapper from "#test/testUtils/gameWrapper"; import { ChallengeModeHelper } from "#test/testUtils/helpers/challengeModeHelper"; import { ClassicModeHelper } from "#test/testUtils/helpers/classicModeHelper"; import { DailyModeHelper } from "#test/testUtils/helpers/dailyModeHelper"; +import { FieldHelper } from "#test/testUtils/helpers/field-helper"; import { ModifierHelper } from "#test/testUtils/helpers/modifiersHelper"; import { MoveHelper } from "#test/testUtils/helpers/moveHelper"; import { OverridesHelper } from "#test/testUtils/helpers/overridesHelper"; import { ReloadHelper } from "#test/testUtils/helpers/reloadHelper"; import { SettingsHelper } from "#test/testUtils/helpers/settingsHelper"; +import type InputsHandler from "#test/testUtils/inputsHandler"; +import { MockFetch } from "#test/testUtils/mocks/mockFetch"; import PhaseInterceptor from "#test/testUtils/phaseInterceptor"; import TextInterceptor from "#test/testUtils/TextInterceptor"; import { AES, enc } from "crypto-js"; import fs from "node:fs"; import { expect, vi } from "vitest"; -import { globalScene } from "#app/global-scene"; -import type StarterSelectUiHandler from "#app/ui/starter-select-ui-handler"; -import { MockFetch } from "#test/testUtils/mocks/mockFetch"; /** * Class to manage the game state and transitions between phases. @@ -76,6 +77,7 @@ export default class GameManager { public readonly settings: SettingsHelper; public readonly reload: ReloadHelper; public readonly modifiers: ModifierHelper; + public readonly field: FieldHelper; /** * Creates an instance of GameManager. @@ -123,6 +125,7 @@ export default class GameManager { this.settings = new SettingsHelper(this); this.reload = new ReloadHelper(this); this.modifiers = new ModifierHelper(this); + this.field = new FieldHelper(this); this.override.sanitizeOverrides(); // Disables Mystery Encounters on all tests (can be overridden at test level) @@ -383,6 +386,7 @@ export default class GameManager { * @param moveId - The {@linkcode Moves | move} the enemy will use * @param target - The {@linkcode BattlerIndex} of the target against which the enemy will use the given move; * will use normal target selection priorities if omitted. + * @deprecated Use {@linkcode MoveHelper.forceEnemyMove} or {@linkcode MoveHelper.selectEnemyMove} */ async forceEnemyMove(moveId: Moves, target?: BattlerIndex) { // Wait for the next EnemyCommandPhase to start @@ -417,9 +421,15 @@ export default class GameManager { }; } - /** Transition to the next upcoming {@linkcode CommandPhase} */ + /** Transition to the first {@linkcode CommandPhase} of the next turn. */ async toNextTurn() { - await this.phaseInterceptor.to(CommandPhase); + await this.phaseInterceptor.to("TurnInitPhase"); + await this.phaseInterceptor.to("CommandPhase"); + } + + /** Transition to the {@linkcode TurnEndPhase | end of the current turn}. */ + async toEndOfTurn() { + await this.phaseInterceptor.to("TurnEndPhase"); } /** @@ -541,8 +551,8 @@ export default class GameManager { } /** - * Select a pokemon from the party menu during the given phase. - * Only really handles the basic case of "navigate to party slot and press Action twice" - + * Select a pokemon from the party menu during the given phase. + * Only really handles the basic case of "navigate to party slot and press Action twice" - * any menus that come up afterwards are ignored and must be handled separately by the caller. * @param slot - The 0-indexed position of the pokemon in your party to switch to * @param inPhase - Which phase to expect the selection to occur in. Defaults to `SwitchPhase` diff --git a/test/testUtils/helpers/field-helper.ts b/test/testUtils/helpers/field-helper.ts new file mode 100644 index 00000000000..6d762853cad --- /dev/null +++ b/test/testUtils/helpers/field-helper.ts @@ -0,0 +1,87 @@ +// -- start tsdoc imports -- +// biome-ignore lint/correctness/noUnusedImports: TSDoc import +import type { globalScene } from "#app/global-scene"; +// -- end tsdoc imports -- + +import type { BattlerIndex } from "#app/battle"; +import type { Ability } from "#app/data/abilities/ability-class"; +import { allAbilities } from "#app/data/data-lists"; +import type Pokemon from "#app/field/pokemon"; +import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; +import type { Abilities } from "#enums/abilities"; +import type { PokemonType } from "#enums/pokemon-type"; +import { Stat } from "#enums/stat"; +import { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; +import { expect, type MockInstance, vi } from "vitest"; + +/** Helper to manage pokemon */ +export class FieldHelper extends GameManagerHelper { + /** + * Passthrough for {@linkcode globalScene.getPlayerPokemon} that adds an `undefined` check for + * the Pokemon so that the return type for the function doesn't have `undefined`. + * This removes the need to add a `!` like when calling `game.scene.getPlayerPokemon()!`. + * @param includeSwitching Whether a pokemon that is currently switching out is valid, default `true` + * @returns The first {@linkcode PlayerPokemon} that is {@linkcode globalScene.getPlayerField on the field} + * and {@linkcode PlayerPokemon.isActive is active} + * (aka {@linkcode PlayerPokemon.isAllowedInBattle is allowed in battle}). + */ + public getPlayerPokemon(includeSwitching = true): PlayerPokemon { + const pokemon = this.game.scene.getPlayerPokemon(includeSwitching); + expect(pokemon).toBeDefined(); + return pokemon!; + } + + /** + * Passthrough for {@linkcode globalScene.getEnemyPokemon} that adds an `undefined` check for + * the Pokemon so that the return type for the function doesn't have `undefined`. + * This removes the need to add a `!` like when calling `game.scene.getEnemyPokemon()!`. + * @param includeSwitching Whether a pokemon that is currently switching out is valid, default `true` + * @returns The first {@linkcode EnemyPokemon} that is {@linkcode globalScene.getEnemyField on the field} + * and {@linkcode EnemyPokemon.isActive is active} + * (aka {@linkcode EnemyPokemon.isAllowedInBattle is allowed in battle}). + */ + public getEnemyPokemon(includeSwitching = true): EnemyPokemon { + const pokemon = this.game.scene.getEnemyPokemon(includeSwitching); + expect(pokemon).toBeDefined(); + return pokemon!; + } + + /** + * @returns The {@linkcode BattlerIndex | indexes} of Pokemon on the field in order of decreasing Speed. + * Speed ties are returned in increasing order of index. + * + * Note: Trick Room does not modify the speed of Pokemon on the field. + */ + public getSpeedOrder(): BattlerIndex[] { + return this.game.scene + .getField(true) + .sort((pA, pB) => pB.getEffectiveStat(Stat.SPD) - pA.getEffectiveStat(Stat.SPD)) + .map(p => p.getBattlerIndex()); + } + + /** + * Mocks a pokemon's ability, overriding its existing ability (takes precedence over global overrides) + * @param pokemon - The pokemon to mock the ability of + * @param ability - The ability to be mocked + * @returns A {@linkcode MockInstance} object + * @see {@linkcode vi.spyOn} + * @see https://vitest.dev/api/mock#mockreturnvalue + */ + public mockAbility(pokemon: Pokemon, ability: Abilities): MockInstance<(baseOnly?: boolean) => Ability> { + return vi.spyOn(pokemon, "getAbility").mockReturnValue(allAbilities[ability]); + } + + /** + * Forces a pokemon to be terastallized. Defaults to the pokemon's primary type if not specified. + * + * This function only mocks the Pokemon's tera-related variables; it does NOT activate any tera-related abilities. + * + * @param pokemon - The pokemon to terastallize. + * @param teraType - (optional) The {@linkcode PokemonType} to terastallize it as. + */ + public forceTera(pokemon: Pokemon, teraType?: PokemonType): void { + vi.spyOn(pokemon, "isTerastallized", "get").mockReturnValue(true); + teraType ??= pokemon.getSpeciesForm(true).type1; + vi.spyOn(pokemon, "teraType", "get").mockReturnValue(teraType); + } +} diff --git a/test/testUtils/helpers/moveHelper.ts b/test/testUtils/helpers/moveHelper.ts index 269cf65ea56..ab10486867d 100644 --- a/test/testUtils/helpers/moveHelper.ts +++ b/test/testUtils/helpers/moveHelper.ts @@ -1,14 +1,16 @@ import type { BattlerIndex } from "#app/battle"; +import { getMoveTargets } from "#app/data/moves/move"; import { Button } from "#app/enums/buttons"; import type Pokemon from "#app/field/pokemon"; import { PokemonMove } from "#app/field/pokemon"; import Overrides from "#app/overrides"; import type { CommandPhase } from "#app/phases/command-phase"; +import type { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; import { LearnMovePhase } from "#app/phases/learn-move-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Command } from "#app/ui/command-ui-handler"; -import { UiMode } from "#enums/ui-mode"; import { Moves } from "#enums/moves"; +import { UiMode } from "#enums/ui-mode"; import { getMovePosition } from "#test/testUtils/gameManagerUtils"; import { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; import { vi } from "vitest"; @@ -92,6 +94,35 @@ export class MoveHelper extends GameManagerHelper { } } + /** + * Modifies a player pokemon's moveset to contain only the selected move and then + * selects it to be used during the next {@linkcode CommandPhase}. + * + * Warning: Will disable the player moveset override if it is enabled! + * + * Note: If you need to check for changes in the player's moveset as part of the test, it may be + * best to use {@linkcode changeMoveset} and {@linkcode select} instead. + * @param moveId - the move to use + * @param pkmIndex - the pokemon index. Relevant for double-battles only (defaults to 0) + * @param targetIndex - (optional) The {@linkcode BattlerIndex} of the Pokemon to target for single-target moves, or `null` if a manual call to `selectTarget()` is required + * @param useTera - If `true`, the Pokemon also chooses to Terastallize. This does not require a Tera Orb. Default: `false`. + */ + public use(moveId: Moves, pkmIndex: 0 | 1 = 0, targetIndex?: BattlerIndex | null, useTera = false): void { + if ([Overrides.MOVESET_OVERRIDE].flat().length > 0) { + vi.spyOn(Overrides, "MOVESET_OVERRIDE", "get").mockReturnValue([]); + console.warn("Warning: `use` overwrites the Pokemon's moveset and disables the player moveset override!"); + } + + const pokemon = this.game.scene.getPlayerField()[pkmIndex]; + pokemon.moveset = [new PokemonMove(moveId)]; + + if (useTera) { + this.selectWithTera(moveId, pkmIndex, targetIndex); + return; + } + this.select(moveId, pkmIndex, targetIndex); + } + /** * Forces the Paralysis or Freeze status to activate on the next move by temporarily mocking {@linkcode Overrides.STATUS_ACTIVATION_OVERRIDE}, * advancing to the next `MovePhase`, and then resetting the override to `null` @@ -132,6 +163,77 @@ export class MoveHelper extends GameManagerHelper { console.log(`Pokemon ${pokemon.species.name}'s moveset manually set to ${movesetStr} (=[${moveset.join(", ")}])!`); } + /** + * Forces the next enemy selecting a move to use the given move in its moveset + * against the given target (if applicable). + * @param moveId The {@linkcode MoveId | move} the enemy will use + * @param target (Optional) the {@linkcode BattlerIndex | target} which the enemy will use the given move against + */ + public async selectEnemyMove(moveId: Moves, target?: BattlerIndex) { + // Wait for the next EnemyCommandPhase to start + await this.game.phaseInterceptor.to("EnemyCommandPhase", false); + const enemy = + this.game.scene.getEnemyField()[(this.game.scene.getCurrentPhase() as EnemyCommandPhase).getFieldIndex()]; + const legalTargets = getMoveTargets(enemy, moveId); + + vi.spyOn(enemy, "getNextMove").mockReturnValueOnce({ + move: moveId, + targets: + target !== undefined && !legalTargets.multiple && legalTargets.targets.includes(target) + ? [target] + : enemy.getNextTargets(moveId), + }); + + /** + * Run the EnemyCommandPhase to completion. + * This allows this function to be called consecutively to + * force a move for each enemy in a double battle. + */ + await this.game.phaseInterceptor.to("EnemyCommandPhase"); + } + + /** + * Forces the next enemy selecting a move to use the given move against the given target (if applicable). + * + * Warning: Overwrites the pokemon's moveset and disables the moveset override! + * + * Note: If you need to check for changes in the enemy's moveset as part of the test, it may be + * best to use {@linkcode changeMoveset} and {@linkcode selectEnemyMove} instead. + * @param moveId The {@linkcode MoveId | move} the enemy will use + * @param target (Optional) the {@linkcode BattlerIndex | target} which the enemy will use the given move against + */ + public async forceEnemyMove(moveId: Moves, target?: BattlerIndex) { + // Wait for the next EnemyCommandPhase to start + await this.game.phaseInterceptor.to("EnemyCommandPhase", false); + + const enemy = + this.game.scene.getEnemyField()[(this.game.scene.getCurrentPhase() as EnemyCommandPhase).getFieldIndex()]; + + if ([Overrides.OPP_MOVESET_OVERRIDE].flat().length > 0) { + vi.spyOn(Overrides, "OPP_MOVESET_OVERRIDE", "get").mockReturnValue([]); + console.warn( + "Warning: `forceEnemyMove` overwrites the Pokemon's moveset and disables the enemy moveset override!", + ); + } + enemy.moveset = [new PokemonMove(moveId)]; + const legalTargets = getMoveTargets(enemy, moveId); + + vi.spyOn(enemy, "getNextMove").mockReturnValueOnce({ + move: moveId, + targets: + target !== undefined && !legalTargets.multiple && legalTargets.targets.includes(target) + ? [target] + : enemy.getNextTargets(moveId), + }); + + /** + * Run the EnemyCommandPhase to completion. + * This allows this function to be called consecutively to + * force a move for each enemy in a double battle. + */ + await this.game.phaseInterceptor.to("EnemyCommandPhase"); + } + /** * Simulates learning a move for a player pokemon. * @param move The {@linkcode Moves} being learnt From 5eeff184071cd28bc522355e6c330c9ffe116a22 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Fri, 30 May 2025 14:35:38 -0500 Subject: [PATCH 26/71] [GitHub] Fix gh action path filter (#5904) * Fix test workflow syntax to use negation properly * Add missing id and comparison check in tests.yml * Fix missing curly brace --- .github/test-filters.yml | 14 +++++--------- .github/workflows/tests.yml | 3 ++- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/.github/test-filters.yml b/.github/test-filters.yml index 89f4322adea..fc52e85082c 100644 --- a/.github/test-filters.yml +++ b/.github/test-filters.yml @@ -1,7 +1,8 @@ all: - - "src/**" - - "test/**" - - "public/**" + # Negations syntax from https://github.com/dorny/paths-filter/issues/184#issuecomment-2786521554 + - "src/**/!(*.{md,py,sh,gitkeep,gitignore})" + - "test/**/!(*.{md,py,sh,gitkeep,gitignore})" + - "public/**/!(*.{md,py,sh,gitkeep,gitignore})" # Workflows that can impact tests - ".github/workflows/test*.yml" - ".github/test-filters.yml" @@ -11,9 +12,4 @@ all: - "vite*" # vite.config.ts, vite.vitest.config.ts, vitest.workspace.ts - "tsconfig*.json" # tsconfig.json tweaking can impact compilation - "global.d.ts" - - ".env*" - # Blanket negations for files that cannot impact tests - - "!**/*.py" # No .py files - - "!**/*.sh" # No .sh files - - "!**/*.md" # No .md files - - "!**/.git*" # .gitkeep and family + - ".env*" \ No newline at end of file diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f04a1987eff..f9d26b5568a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -25,6 +25,7 @@ jobs: - name: checkout uses: actions/checkout@v4 - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 + id: filter with: filters: .github/test-filters.yml @@ -39,4 +40,4 @@ jobs: project: main shard: ${{ matrix.shard }} totalShards: 10 - skip: ${{ needs.check-path-change-filter.outputs.all == 'false'}} + skip: ${{ needs.check-path-change-filter.outputs.all != 'true'}} From e1be360e74467fa3ec7804580228891fb8c16b25 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Fri, 30 May 2025 16:42:12 -0500 Subject: [PATCH 27/71] [GitHub] Change total shard numbers and change job name (#5905) --- .github/workflows/test-shard-template.yml | 9 +++++---- .github/workflows/tests.yml | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test-shard-template.yml b/.github/workflows/test-shard-template.yml index a1146cb3497..98836bd335a 100644 --- a/.github/workflows/test-shard-template.yml +++ b/.github/workflows/test-shard-template.yml @@ -19,19 +19,20 @@ on: jobs: test: - name: Shard ${{ inputs.shard }} of ${{ inputs.totalShards }} + # We can't use dynmically named jobs until https://github.com/orgs/community/discussions/13261 is implemented + name: Shard runs-on: ubuntu-latest if: ${{ !inputs.skip }} steps: - name: Check out Git repository uses: actions/checkout@v4.2.2 with: - submodules: 'recursive' + submodules: "recursive" - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version-file: '.nvmrc' - cache: 'npm' + node-version-file: ".nvmrc" + cache: "npm" - name: Install Node.js dependencies run: npm ci - name: Run tests diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f9d26b5568a..c3b9666caa9 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -34,10 +34,10 @@ jobs: needs: check-path-change-filter strategy: matrix: - shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + shard: [1, 2, 3, 4, 5] uses: ./.github/workflows/test-shard-template.yml with: project: main shard: ${{ matrix.shard }} - totalShards: 10 + totalShards: 5 skip: ${{ needs.check-path-change-filter.outputs.all != 'true'}} From ed0251ea9055cd0c321cbe2d1865cc22f6993100 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Fri, 30 May 2025 18:08:52 -0500 Subject: [PATCH 28/71] [Refactor] Cleanup egg-counter-container (#5892) --- src/ui/egg-counter-container.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/ui/egg-counter-container.ts b/src/ui/egg-counter-container.ts index 7bec7c97480..7bb32189681 100644 --- a/src/ui/egg-counter-container.ts +++ b/src/ui/egg-counter-container.ts @@ -43,14 +43,13 @@ export default class EggCounterContainer extends Phaser.GameObjects.Container { this.add(this.eggCountWindow); - const eggSprite = globalScene.add.sprite(19, 18, "egg", "egg_0"); - eggSprite.setScale(0.32); + const eggSprite = globalScene.add.sprite(19, 18, "egg", "egg_0").setScale(0.32); - this.eggCountText = addTextObject(28, 13, `${this.eggCount}`, TextStyle.MESSAGE, { fontSize: "66px" }); - this.eggCountText.setName("text-egg-count"); + this.eggCountText = addTextObject(28, 13, `${this.eggCount}`, TextStyle.MESSAGE, { fontSize: "66px" }).setName( + "text-egg-count", + ); - this.add(eggSprite); - this.add(this.eggCountText); + this.add([eggSprite, this.eggCountText]); } /** From 9a60cc9c716b043764270f6b160d5302663f521e Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Fri, 30 May 2025 18:12:35 -0500 Subject: [PATCH 29/71] [Refactor] Cleanup filter bar (#5896) * Cleanup filter bar * Move DropDownColumn to its own file --------- Co-authored-by: Amani H. <109637146+xsn34kzx@users.noreply.github.com> --- src/enums/drop-down-column.ts | 9 +++++++++ src/ui/filter-bar.ts | 19 +++---------------- src/ui/pokedex-ui-handler.ts | 3 ++- src/ui/starter-select-ui-handler.ts | 3 ++- test/ui/pokedex.test.ts | 2 +- 5 files changed, 17 insertions(+), 19 deletions(-) create mode 100644 src/enums/drop-down-column.ts diff --git a/src/enums/drop-down-column.ts b/src/enums/drop-down-column.ts new file mode 100644 index 00000000000..b413d1f0bf4 --- /dev/null +++ b/src/enums/drop-down-column.ts @@ -0,0 +1,9 @@ +export enum DropDownColumn { + GEN, + TYPES, + BIOME, + CAUGHT, + UNLOCKS, + MISC, + SORT +} diff --git a/src/ui/filter-bar.ts b/src/ui/filter-bar.ts index 2aade130ed1..622488c04cd 100644 --- a/src/ui/filter-bar.ts +++ b/src/ui/filter-bar.ts @@ -5,16 +5,7 @@ import { addTextObject, getTextColor, TextStyle } from "./text"; import type { UiTheme } from "#enums/ui-theme"; import { addWindow, WindowVariant } from "./ui-theme"; import { globalScene } from "#app/global-scene"; - -export enum DropDownColumn { - GEN, - TYPES, - BIOME, - CAUGHT, - UNLOCKS, - MISC, - SORT, -} +import type { DropDownColumn } from "#enums/drop-down-column"; export class FilterBar extends Phaser.GameObjects.Container { private window: Phaser.GameObjects.NineSlice; @@ -49,13 +40,9 @@ export class FilterBar extends Phaser.GameObjects.Container { this.cursorOffset = cursorOffset; this.window = addWindow(0, 0, width, height, false, false, undefined, undefined, WindowVariant.THIN); - this.add(this.window); - this.cursorObj = globalScene.add.image(1, 1, "cursor"); - this.cursorObj.setScale(0.5); - this.cursorObj.setVisible(false); - this.cursorObj.setOrigin(0, 0); - this.add(this.cursorObj); + this.cursorObj = globalScene.add.image(1, 1, "cursor").setScale(0.5).setVisible(false).setOrigin(0); + this.add([this.window, this.cursorObj]); } /** diff --git a/src/ui/pokedex-ui-handler.ts b/src/ui/pokedex-ui-handler.ts index 08fe5d7442f..179d5b4664b 100644 --- a/src/ui/pokedex-ui-handler.ts +++ b/src/ui/pokedex-ui-handler.ts @@ -23,7 +23,8 @@ import type { Species } from "#enums/species"; import { Button } from "#enums/buttons"; import { DropDown, DropDownLabel, DropDownOption, DropDownState, DropDownType, SortCriteria } from "#app/ui/dropdown"; import { PokedexMonContainer } from "#app/ui/pokedex-mon-container"; -import { DropDownColumn, FilterBar } from "#app/ui/filter-bar"; +import { FilterBar } from "#app/ui/filter-bar"; +import { DropDownColumn } from "#enums/drop-down-column"; import { ScrollBar } from "#app/ui/scroll-bar"; import { Abilities } from "#enums/abilities"; import { diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index a971ba86479..ff2298f268d 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -53,7 +53,8 @@ import { Button } from "#enums/buttons"; import { EggSourceType } from "#enums/egg-source-types"; import { DropDown, DropDownLabel, DropDownOption, DropDownState, DropDownType, SortCriteria } from "#app/ui/dropdown"; import { StarterContainer } from "#app/ui/starter-container"; -import { DropDownColumn, FilterBar } from "#app/ui/filter-bar"; +import { FilterBar } from "#app/ui/filter-bar"; +import { DropDownColumn } from "#enums/drop-down-column"; import { ScrollBar } from "#app/ui/scroll-bar"; import { SelectChallengePhase } from "#app/phases/select-challenge-phase"; import { EncounterPhase } from "#app/phases/encounter-phase"; diff --git a/test/ui/pokedex.test.ts b/test/ui/pokedex.test.ts index ff5ca116ba8..007fc43c3b9 100644 --- a/test/ui/pokedex.test.ts +++ b/test/ui/pokedex.test.ts @@ -8,7 +8,7 @@ import { Abilities } from "#enums/abilities"; import { Species } from "#enums/species"; import { allSpecies, getPokemonSpecies, type PokemonForm } from "#app/data/pokemon-species"; import { Button } from "#enums/buttons"; -import { DropDownColumn } from "#app/ui/filter-bar"; +import { DropDownColumn } from "#enums/drop-down-column"; import type PokemonSpecies from "#app/data/pokemon-species"; import { PokemonType } from "#enums/pokemon-type"; import { UiMode } from "#enums/ui-mode"; From a33638a7a36b01935e40ea876532c770b53f0994 Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Fri, 30 May 2025 19:50:25 -0400 Subject: [PATCH 30/71] [Test] Remove deprecated test funcs (#5906) * Removed `game.startBattle` * Removed `game.forceEnemyMove` * Removed near-unused learn move macro --- test/abilities/aroma_veil.test.ts | 6 +-- test/abilities/battery.test.ts | 6 +-- test/abilities/commander.test.ts | 12 ++--- test/abilities/costar.test.ts | 4 +- test/abilities/cud_chew.test.ts | 4 +- test/abilities/dancer.test.ts | 4 +- test/abilities/desolate-land.test.ts | 12 ++--- test/abilities/flower_gift.test.ts | 8 +-- test/abilities/flower_veil.test.ts | 14 ++--- test/abilities/forecast.test.ts | 14 ++--- test/abilities/friend_guard.test.ts | 24 ++++----- test/abilities/good_as_gold.test.ts | 4 +- test/abilities/gorilla_tactics.test.ts | 6 +-- test/abilities/gulp_missile.test.ts | 4 +- test/abilities/harvest.test.ts | 24 ++++----- test/abilities/heatproof.test.ts | 4 +- test/abilities/hyper_cutter.test.ts | 2 +- test/abilities/libero.test.ts | 30 +++++------ test/abilities/magic_bounce.test.ts | 12 ++--- test/abilities/magic_guard.test.ts | 38 +++++++------- test/abilities/mimicry.test.ts | 8 +-- test/abilities/mirror_armor.test.ts | 42 +++++++-------- test/abilities/moxie.test.ts | 4 +- test/abilities/mycelium_might.test.ts | 6 +-- test/abilities/neutralizing_gas.test.ts | 8 +-- test/abilities/pastel_veil.test.ts | 4 +- test/abilities/perish_body.test.ts | 10 ++-- test/abilities/power_spot.test.ts | 6 +-- test/abilities/protean.test.ts | 30 +++++------ test/abilities/quick_draw.test.ts | 6 +-- test/abilities/sand_veil.test.ts | 2 +- test/abilities/schooling.test.ts | 2 +- test/abilities/screen_cleaner.test.ts | 6 +-- test/abilities/shields_down.test.ts | 12 ++--- test/abilities/simple.test.ts | 2 +- test/abilities/stakeout.test.ts | 8 +-- test/abilities/stall.test.ts | 6 +-- test/abilities/sturdy.test.ts | 8 +-- test/abilities/supreme_overlord.test.ts | 2 +- test/abilities/sweet_veil.test.ts | 8 +-- test/abilities/unburden.test.ts | 16 +++--- test/abilities/wimp_out.test.ts | 4 +- test/abilities/wind_power.test.ts | 8 +-- test/abilities/wonder_skin.test.ts | 4 +- test/abilities/zero_to_hero.test.ts | 8 +-- test/arena/weather_fog.test.ts | 2 +- test/battle/battle-order.test.ts | 10 ++-- test/battle/battle.test.ts | 22 ++++---- test/battle/double_battle.test.ts | 2 +- test/battle/special_battle.test.ts | 18 +++---- test/daily_mode.test.ts | 2 +- test/evolution.test.ts | 6 +-- test/items/dire_hit.test.ts | 4 +- test/items/exp_booster.test.ts | 2 +- test/items/leek.test.ts | 12 ++--- test/items/leftovers.test.ts | 2 +- test/items/light_ball.test.ts | 4 +- test/items/metal_powder.test.ts | 8 +-- test/items/scope_lens.test.ts | 2 +- test/moves/astonish.test.ts | 2 +- test/moves/beat_up.test.ts | 4 +- test/moves/belly_drum.test.ts | 8 +-- test/moves/chilly_reception.test.ts | 2 +- test/moves/clangorous_soul.test.ts | 8 +-- test/moves/crafty_shield.test.ts | 8 +-- test/moves/defog.test.ts | 6 +-- test/moves/disable.test.ts | 4 +- test/moves/double_team.test.ts | 2 +- test/moves/dragon_tail.test.ts | 10 ++-- test/moves/dynamax_cannon.test.ts | 16 +++--- test/moves/encore.test.ts | 2 +- test/moves/fairy_lock.test.ts | 32 +++++------ test/moves/fillet_away.test.ts | 8 +-- test/moves/flame_burst.test.ts | 8 +-- test/moves/flower_shield.test.ts | 8 +-- test/moves/fly.test.ts | 4 +- test/moves/follow_me.test.ts | 16 +++--- test/moves/foresight.test.ts | 4 +- test/moves/fusion_bolt.test.ts | 2 +- test/moves/fusion_flare.test.ts | 2 +- test/moves/fusion_flare_bolt.test.ts | 2 +- test/moves/growth.test.ts | 2 +- test/moves/grudge.test.ts | 8 +-- test/moves/guard_split.test.ts | 4 +- test/moves/hard_press.test.ts | 8 +-- test/moves/haze.test.ts | 2 +- test/moves/hyper_beam.test.ts | 2 +- test/moves/imprison.test.ts | 12 ++--- test/moves/instruct.test.ts | 60 ++++++++++----------- test/moves/jaw_lock.test.ts | 10 ++-- test/moves/last-resort.test.ts | 8 +-- test/moves/lucky_chant.test.ts | 6 +-- test/moves/lunar_blessing.test.ts | 4 +- test/moves/magic_coat.test.ts | 18 +++---- test/moves/magnet_rise.test.ts | 4 +- test/moves/make_it_rain.test.ts | 8 +-- test/moves/mat_block.test.ts | 6 +-- test/moves/metal_burst.test.ts | 8 +-- test/moves/mirror_move.test.ts | 4 +- test/moves/multi_target.test.ts | 4 +- test/moves/parting_shot.test.ts | 20 ++++--- test/moves/plasma_fists.test.ts | 4 +- test/moves/pledge_moves.test.ts | 8 +-- test/moves/powder.test.ts | 12 ++--- test/moves/power_split.test.ts | 4 +- test/moves/purify.test.ts | 4 +- test/moves/quash.test.ts | 16 +++--- test/moves/rage_fist.test.ts | 8 +-- test/moves/rage_powder.test.ts | 8 +-- test/moves/reflect_type.test.ts | 6 +-- test/moves/retaliate.test.ts | 2 +- test/moves/revival_blessing.test.ts | 4 +- test/moves/rollout.test.ts | 2 +- test/moves/round.test.ts | 4 +- test/moves/secret_power.test.ts | 4 +- test/moves/shell_trap.test.ts | 10 ++-- test/moves/speed_swap.test.ts | 2 +- test/moves/spikes.test.ts | 6 +-- test/moves/spit_up.test.ts | 12 ++--- test/moves/spotlight.test.ts | 8 +-- test/moves/stockpile.test.ts | 4 +- test/moves/swallow.test.ts | 12 ++--- test/moves/tackle.test.ts | 4 +- test/moves/tail_whip.test.ts | 2 +- test/moves/taunt.test.ts | 4 +- test/moves/telekinesis.test.ts | 4 +- test/moves/thousand_arrows.test.ts | 6 +-- test/moves/thunder_wave.test.ts | 10 ++-- test/moves/torment.test.ts | 6 +-- test/moves/whirlwind.test.ts | 26 ++++----- test/moves/wide_guard.test.ts | 8 +-- test/phases/learn-move-phase.test.ts | 68 +----------------------- test/testUtils/gameManager.ts | 70 ------------------------- test/testUtils/helpers/moveHelper.ts | 37 ------------- test/ui/type-hints.test.ts | 4 +- 135 files changed, 563 insertions(+), 730 deletions(-) diff --git a/test/abilities/aroma_veil.test.ts b/test/abilities/aroma_veil.test.ts index 38683bcb1e3..aeec33eccf7 100644 --- a/test/abilities/aroma_veil.test.ts +++ b/test/abilities/aroma_veil.test.ts @@ -40,7 +40,7 @@ describe("Moves - Aroma Veil", () => { game.move.select(Moves.GROWL); game.move.select(Moves.GROWL); - await game.forceEnemyMove(Moves.HEAL_BLOCK); + await game.move.selectEnemyMove(Moves.HEAL_BLOCK); await game.toNextTurn(); party.forEach(p => { expect(p.getTag(BattlerTagType.HEAL_BLOCK)).toBeUndefined(); @@ -54,8 +54,8 @@ describe("Moves - Aroma Veil", () => { game.move.select(Moves.GROWL); game.move.select(Moves.GROWL, 1); - await game.forceEnemyMove(Moves.IMPRISON, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.IMPRISON, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); expect(game.scene.arena.getTag(ArenaTagType.IMPRISON)).toBeDefined(); party.forEach(p => { diff --git a/test/abilities/battery.test.ts b/test/abilities/battery.test.ts index 251ca6ccf16..123889c24af 100644 --- a/test/abilities/battery.test.ts +++ b/test/abilities/battery.test.ts @@ -39,7 +39,7 @@ describe("Abilities - Battery", () => { vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.startBattle([Species.PIKACHU, Species.CHARJABUG]); + await game.classicMode.startBattle([Species.PIKACHU, Species.CHARJABUG]); game.move.select(Moves.DAZZLING_GLEAM); game.move.select(Moves.SPLASH, 1); @@ -54,7 +54,7 @@ describe("Abilities - Battery", () => { vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.startBattle([Species.PIKACHU, Species.CHARJABUG]); + await game.classicMode.startBattle([Species.PIKACHU, Species.CHARJABUG]); game.move.select(Moves.BREAKING_SWIPE); game.move.select(Moves.SPLASH, 1); @@ -69,7 +69,7 @@ describe("Abilities - Battery", () => { vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.startBattle([Species.CHARJABUG, Species.PIKACHU]); + await game.classicMode.startBattle([Species.CHARJABUG, Species.PIKACHU]); game.move.select(Moves.DAZZLING_GLEAM); game.move.select(Moves.SPLASH, 1); diff --git a/test/abilities/commander.test.ts b/test/abilities/commander.test.ts index 0e6cb1b9208..0fddb8e9bf6 100644 --- a/test/abilities/commander.test.ts +++ b/test/abilities/commander.test.ts @@ -59,8 +59,8 @@ describe("Abilities - Commander", () => { expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); // Force both enemies to target the Tatsugiri - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); await game.phaseInterceptor.to("BerryPhase", false); game.scene.getEnemyField().forEach(enemy => expect(enemy.getLastXMoves(1)[0].result).toBe(MoveResult.MISS)); @@ -100,8 +100,8 @@ describe("Abilities - Commander", () => { expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER]); @@ -183,8 +183,8 @@ describe("Abilities - Commander", () => { expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); - await game.forceEnemyMove(Moves.WHIRLWIND, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.WHIRLWIND, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.SPLASH); // Test may time out here if Whirlwind forced out a Pokemon await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/abilities/costar.test.ts b/test/abilities/costar.test.ts index 7b1e362689d..02d607c2e9f 100644 --- a/test/abilities/costar.test.ts +++ b/test/abilities/costar.test.ts @@ -33,7 +33,7 @@ describe("Abilities - COSTAR", () => { test("ability copies positive stat stages", async () => { game.override.enemyAbility(Abilities.BALL_FETCH); - await game.startBattle([Species.MAGIKARP, Species.MAGIKARP, Species.FLAMIGO]); + await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP, Species.FLAMIGO]); let [leftPokemon, rightPokemon] = game.scene.getPlayerField(); @@ -58,7 +58,7 @@ describe("Abilities - COSTAR", () => { test("ability copies negative stat stages", async () => { game.override.enemyAbility(Abilities.INTIMIDATE); - await game.startBattle([Species.MAGIKARP, Species.MAGIKARP, Species.FLAMIGO]); + await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP, Species.FLAMIGO]); let [leftPokemon, rightPokemon] = game.scene.getPlayerField(); diff --git a/test/abilities/cud_chew.test.ts b/test/abilities/cud_chew.test.ts index 2f65ac5fd97..60205b62b70 100644 --- a/test/abilities/cud_chew.test.ts +++ b/test/abilities/cud_chew.test.ts @@ -76,7 +76,7 @@ describe("Abilities - Cud Chew", () => { farigiraf.hp = farigiraf.getMaxHp() / 2 - 1; game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); // doesn't trigger since cud chew hasn't eaten berry yet @@ -86,7 +86,7 @@ describe("Abilities - Cud Chew", () => { // get heal pulsed back to full before the cud chew proc game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.HEAL_PULSE); + await game.move.selectEnemyMove(Moves.HEAL_PULSE); await game.phaseInterceptor.to("TurnEndPhase"); // globalScene.queueAbilityDisplay should be called twice: diff --git a/test/abilities/dancer.test.ts b/test/abilities/dancer.test.ts index cdd1e3221e9..b85fc7bdcd4 100644 --- a/test/abilities/dancer.test.ts +++ b/test/abilities/dancer.test.ts @@ -77,8 +77,8 @@ describe("Abilities - Dancer", () => { game.move.select(Moves.REVELATION_DANCE, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2); game.move.select(Moves.FIERY_DANCE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2); - await game.forceEnemyMove(Moves.INSTRUCT, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.MIRROR_MOVE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.INSTRUCT, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.MIRROR_MOVE, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MovePhase"); // Oricorio rev dance await game.phaseInterceptor.to("MovePhase"); // Feebas fiery dance diff --git a/test/abilities/desolate-land.test.ts b/test/abilities/desolate-land.test.ts index 697bd0a4c48..da2c285e38f 100644 --- a/test/abilities/desolate-land.test.ts +++ b/test/abilities/desolate-land.test.ts @@ -50,8 +50,8 @@ describe("Abilities - Desolate Land", () => { game.move.select(Moves.SPLASH, 0, 2); game.move.select(Moves.SPLASH, 1, 2); - await game.forceEnemyMove(Moves.ROAR, 0); - await game.forceEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.ROAR, 0); + await game.move.selectEnemyMove(Moves.SPLASH, 1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -66,8 +66,8 @@ describe("Abilities - Desolate Land", () => { game.move.select(Moves.SPLASH, 0, 2); game.move.select(Moves.SPLASH, 1, 2); - await game.forceEnemyMove(Moves.ROAR, 1); - await game.forceEnemyMove(Moves.SPLASH, 0); + await game.move.selectEnemyMove(Moves.ROAR, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 0); await game.phaseInterceptor.to("TurnEndPhase"); @@ -103,8 +103,8 @@ describe("Abilities - Desolate Land", () => { game.move.select(Moves.SPLASH, 0, 2); game.move.select(Moves.SPLASH, 1, 2); - await game.forceEnemyMove(Moves.MEMENTO, 0); - await game.forceEnemyMove(Moves.MEMENTO, 1); + await game.move.selectEnemyMove(Moves.MEMENTO, 0); + await game.move.selectEnemyMove(Moves.MEMENTO, 1); await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/abilities/flower_gift.test.ts b/test/abilities/flower_gift.test.ts index f2b32dc4c80..df8830bca6d 100644 --- a/test/abilities/flower_gift.test.ts +++ b/test/abilities/flower_gift.test.ts @@ -67,8 +67,8 @@ describe("Abilities - Flower Gift", () => { // turn 1 game.move.select(Moves.SUNNY_DAY, 0); game.move.select(ally_move, 1, ally_target); - await game.forceEnemyMove(enemy_move, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(enemy_move, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.SPLASH); // Ensure sunny day is used last. await game.setTurnOrder([attacker_index, target_index, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER]); await game.phaseInterceptor.to(TurnEndPhase); @@ -79,8 +79,8 @@ describe("Abilities - Flower Gift", () => { // turn 2. Make target use recover to reset hp calculation. game.move.select(Moves.SPLASH, 0, target_index); game.move.select(ally_move, 1, ally_target); - await game.forceEnemyMove(enemy_move, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(enemy_move, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, target_index, attacker_index]); await game.phaseInterceptor.to(TurnEndPhase); const damageWithGift = initialHp - target.hp; diff --git a/test/abilities/flower_veil.test.ts b/test/abilities/flower_veil.test.ts index ce45906c4a9..7f51414d8a5 100644 --- a/test/abilities/flower_veil.test.ts +++ b/test/abilities/flower_veil.test.ts @@ -49,7 +49,7 @@ describe("Abilities - Flower Veil", () => { await game.classicMode.startBattle([Species.BULBASAUR]); const user = game.scene.getPlayerPokemon()!; game.move.select(Moves.REST); - await game.forceEnemyMove(Moves.TACKLE); + await game.move.selectEnemyMove(Moves.TACKLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); expect(user.status?.effect).toBe(StatusEffect.SLEEP); @@ -57,7 +57,7 @@ describe("Abilities - Flower Veil", () => { // remove sleep status so we can get burn from the orb user.resetStatus(); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); expect(user.status?.effect).toBe(StatusEffect.BURN); }); @@ -71,8 +71,8 @@ describe("Abilities - Flower Veil", () => { vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]); game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.YAWN, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.YAWN, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.YAWN, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.YAWN, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); const user = game.scene.getPlayerPokemon()!; @@ -86,7 +86,7 @@ describe("Abilities - Flower Veil", () => { await game.classicMode.startBattle([Species.BULBASAUR]); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.THUNDER_WAVE); + await game.move.selectEnemyMove(Moves.THUNDER_WAVE); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); vi.spyOn(allMoves[Moves.THUNDER_WAVE], "accuracy", "get").mockClear(); @@ -101,8 +101,8 @@ describe("Abilities - Flower Veil", () => { vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]); game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.THUNDER_WAVE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.THUNDER_WAVE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.THUNDER_WAVE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.THUNDER_WAVE, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); expect(user.status?.effect).toBe(StatusEffect.PARALYSIS); expect(ally.status?.effect).toBe(StatusEffect.PARALYSIS); diff --git a/test/abilities/forecast.test.ts b/test/abilities/forecast.test.ts index 03b5d993a54..f2aa350ef37 100644 --- a/test/abilities/forecast.test.ts +++ b/test/abilities/forecast.test.ts @@ -30,7 +30,7 @@ describe("Abilities - Forecast", () => { */ const testWeatherFormChange = async (game: GameManager, weather: WeatherType, form: number, initialForm?: number) => { game.override.weather(weather).starterForms({ [Species.CASTFORM]: initialForm }); - await game.startBattle([Species.CASTFORM]); + await game.classicMode.startBattle([Species.CASTFORM]); game.move.select(Moves.SPLASH); @@ -44,7 +44,7 @@ describe("Abilities - Forecast", () => { */ const testRevertFormAgainstAbility = async (game: GameManager, ability: Abilities) => { game.override.starterForms({ [Species.CASTFORM]: SUNNY_FORM }).enemyAbility(ability); - await game.startBattle([Species.CASTFORM]); + await game.classicMode.startBattle([Species.CASTFORM]); game.move.select(Moves.SPLASH); @@ -81,7 +81,7 @@ describe("Abilities - Forecast", () => { [Species.GROUDON]: 1, [Species.RAYQUAZA]: 1, }); - await game.startBattle([ + await game.classicMode.startBattle([ Species.CASTFORM, Species.FEEBAS, Species.KYOGRE, @@ -201,7 +201,7 @@ describe("Abilities - Forecast", () => { it("has no effect on Pokémon other than Castform", async () => { game.override.enemyAbility(Abilities.FORECAST).enemySpecies(Species.SHUCKLE); - await game.startBattle([Species.CASTFORM]); + await game.classicMode.startBattle([Species.CASTFORM]); game.move.select(Moves.RAIN_DANCE); await game.phaseInterceptor.to(TurnEndPhase); @@ -212,7 +212,7 @@ describe("Abilities - Forecast", () => { it("reverts to Normal Form when Forecast is suppressed, changes form to match the weather when it regains it", async () => { game.override.enemyMoveset([Moves.GASTRO_ACID]).weather(WeatherType.RAIN); - await game.startBattle([Species.CASTFORM, Species.PIKACHU]); + await game.classicMode.startBattle([Species.CASTFORM, Species.PIKACHU]); const castform = game.scene.getPlayerPokemon()!; expect(castform.formIndex).toBe(RAINY_FORM); @@ -243,7 +243,7 @@ describe("Abilities - Forecast", () => { it("does not change Castform's form until after Stealth Rock deals damage", async () => { game.override.weather(WeatherType.RAIN).enemyMoveset([Moves.STEALTH_ROCK]); - await game.startBattle([Species.PIKACHU, Species.CASTFORM]); + await game.classicMode.startBattle([Species.PIKACHU, Species.CASTFORM]); // First turn - set up stealth rock game.move.select(Moves.SPLASH); @@ -267,7 +267,7 @@ describe("Abilities - Forecast", () => { it("should be in Normal Form after the user is switched out", async () => { game.override.weather(WeatherType.RAIN); - await game.startBattle([Species.CASTFORM, Species.MAGIKARP]); + await game.classicMode.startBattle([Species.CASTFORM, Species.MAGIKARP]); const castform = game.scene.getPlayerPokemon()!; expect(castform.formIndex).toBe(RAINY_FORM); diff --git a/test/abilities/friend_guard.test.ts b/test/abilities/friend_guard.test.ts index 0afe678b175..350ff737c58 100644 --- a/test/abilities/friend_guard.test.ts +++ b/test/abilities/friend_guard.test.ts @@ -43,8 +43,8 @@ describe("Moves - Friend Guard", () => { game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); // Get the last return value from `getAttackDamage` @@ -60,8 +60,8 @@ describe("Moves - Friend Guard", () => { game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); // Get the last return value from `getAttackDamage` @@ -83,8 +83,8 @@ describe("Moves - Friend Guard", () => { game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); const turn1Damage = spy.mock.results[spy.mock.results.length - 1].value.damage; @@ -93,8 +93,8 @@ describe("Moves - Friend Guard", () => { game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); const turn2Damage = spy.mock.results[spy.mock.results.length - 1].value.damage; @@ -109,8 +109,8 @@ describe("Moves - Friend Guard", () => { game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.DRAGON_RAGE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.DRAGON_RAGE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); const turn1Damage = spy.mock.results[spy.mock.results.length - 1].value.damage; @@ -120,8 +120,8 @@ describe("Moves - Friend Guard", () => { game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.DRAGON_RAGE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.DRAGON_RAGE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); const turn2Damage = spy.mock.results[spy.mock.results.length - 1].value.damage; diff --git a/test/abilities/good_as_gold.test.ts b/test/abilities/good_as_gold.test.ts index 9b1d582f64c..adb54810381 100644 --- a/test/abilities/good_as_gold.test.ts +++ b/test/abilities/good_as_gold.test.ts @@ -74,8 +74,8 @@ describe("Abilities - Good As Gold", () => { game.move.select(Moves.SWORDS_DANCE, 0); game.move.select(Moves.SAFEGUARD, 1); - await game.forceEnemyMove(Moves.STEALTH_ROCK); - await game.forceEnemyMove(Moves.HAZE); + await game.move.selectEnemyMove(Moves.STEALTH_ROCK); + await game.move.selectEnemyMove(Moves.HAZE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); expect(good_as_gold.getAbility().id).toBe(Abilities.GOOD_AS_GOLD); diff --git a/test/abilities/gorilla_tactics.test.ts b/test/abilities/gorilla_tactics.test.ts index edaf1669809..06f0c1d0e3d 100644 --- a/test/abilities/gorilla_tactics.test.ts +++ b/test/abilities/gorilla_tactics.test.ts @@ -39,7 +39,7 @@ describe("Abilities - Gorilla Tactics", () => { const initialAtkStat = darmanitan.getStat(Stat.ATK); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); @@ -57,13 +57,13 @@ describe("Abilities - Gorilla Tactics", () => { // First turn, lock move to Growl game.move.select(Moves.GROWL); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); // Second turn, Growl is interrupted by Disable await game.toNextTurn(); game.move.select(Moves.GROWL); - await game.forceEnemyMove(Moves.DISABLE); + await game.move.selectEnemyMove(Moves.DISABLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/abilities/gulp_missile.test.ts b/test/abilities/gulp_missile.test.ts index 4db2ae4190d..64cd106cc5e 100644 --- a/test/abilities/gulp_missile.test.ts +++ b/test/abilities/gulp_missile.test.ts @@ -241,13 +241,13 @@ describe("Abilities - Gulp Missile", () => { await game.classicMode.startBattle([Species.CRAMORANT]); game.move.select(Moves.SURF); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!.formIndex).toBe(GULPING_FORM); game.move.select(Moves.SUBSTITUTE); - await game.forceEnemyMove(Moves.POWER_TRIP); + await game.move.selectEnemyMove(Moves.POWER_TRIP); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); diff --git a/test/abilities/harvest.test.ts b/test/abilities/harvest.test.ts index 23c0ed9088c..36b1b879598 100644 --- a/test/abilities/harvest.test.ts +++ b/test/abilities/harvest.test.ts @@ -61,7 +61,7 @@ describe("Abilities - Harvest", () => { await game.classicMode.startBattle([Species.FEEBAS]); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.NUZZLE); + await game.move.selectEnemyMove(Moves.NUZZLE); await game.phaseInterceptor.to("BerryPhase"); expect(getPlayerBerries()).toHaveLength(0); expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toHaveLength(1); @@ -87,7 +87,7 @@ describe("Abilities - Harvest", () => { // Chug a few berries without harvest (should get tracked) game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.NUZZLE); + await game.move.selectEnemyMove(Moves.NUZZLE); await game.toNextTurn(); expect(milotic.battleData.berriesEaten).toEqual(expect.arrayContaining([BerryType.ENIGMA, BerryType.LUM])); @@ -98,7 +98,7 @@ describe("Abilities - Harvest", () => { vi.spyOn(PostTurnRestoreBerryAbAttr.prototype, "canApplyPostTurn").mockReturnValueOnce(false); game.override.ability(Abilities.HARVEST); game.move.select(Moves.GASTRO_ACID); - await game.forceEnemyMove(Moves.NUZZLE); + await game.move.selectEnemyMove(Moves.NUZZLE); await game.toNextTurn(); @@ -109,7 +109,7 @@ describe("Abilities - Harvest", () => { // proc a high roll and we _should_ get a berry back! game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); expect(milotic.battleData.berriesEaten).toHaveLength(3); @@ -126,7 +126,7 @@ describe("Abilities - Harvest", () => { regieleki.hp = 1; game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to("TurnEndPhase"); @@ -154,7 +154,7 @@ describe("Abilities - Harvest", () => { regieleki.hp = regieleki.getMaxHp() / 4 + 1; game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SUPER_FANG); + await game.move.selectEnemyMove(Moves.SUPER_FANG); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); @@ -165,7 +165,7 @@ describe("Abilities - Harvest", () => { // heal up so harvest doesn't proc and kill enemy game.move.select(Moves.EARTHQUAKE); - await game.forceEnemyMove(Moves.HEAL_PULSE); + await game.move.selectEnemyMove(Moves.HEAL_PULSE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextWave(); @@ -191,7 +191,7 @@ describe("Abilities - Harvest", () => { feebas.battleData.berriesEaten = [BerryType.LUM, BerryType.STARF]; game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("BerryPhase"); // Force RNG roll to hit the first berry we find that matches. @@ -219,7 +219,7 @@ describe("Abilities - Harvest", () => { player.battleData.berriesEaten = [BerryType.LUM, BerryType.STARF]; game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expectBerriesContaining(...initBerries); @@ -231,7 +231,7 @@ describe("Abilities - Harvest", () => { await game.classicMode.startBattle([Species.FEEBAS]); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.INCINERATE); + await game.move.selectEnemyMove(Moves.INCINERATE); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]); @@ -242,7 +242,7 @@ describe("Abilities - Harvest", () => { await game.classicMode.startBattle([Species.FEEBAS]); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.KNOCK_OFF); + await game.move.selectEnemyMove(Moves.KNOCK_OFF); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]); @@ -308,7 +308,7 @@ describe("Abilities - Harvest", () => { // steal a sitrus and immediately consume it game.move.select(Moves.FALSE_SWIPE); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(player.battleData.berriesEaten).toEqual([BerryType.SITRUS]); diff --git a/test/abilities/heatproof.test.ts b/test/abilities/heatproof.test.ts index 016237bb02f..0bec7e4a3db 100644 --- a/test/abilities/heatproof.test.ts +++ b/test/abilities/heatproof.test.ts @@ -38,7 +38,7 @@ describe("Abilities - Heatproof", () => { }); it("reduces Fire type damage by half", async () => { - await game.startBattle(); + await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; const initialHP = 1000; @@ -61,7 +61,7 @@ describe("Abilities - Heatproof", () => { it("reduces Burn damage by half", async () => { game.override.enemyStatusEffect(StatusEffect.BURN).enemySpecies(Species.ABRA); - await game.startBattle(); + await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; diff --git a/test/abilities/hyper_cutter.test.ts b/test/abilities/hyper_cutter.test.ts index 99a9db28025..76b66c2990e 100644 --- a/test/abilities/hyper_cutter.test.ts +++ b/test/abilities/hyper_cutter.test.ts @@ -34,7 +34,7 @@ describe("Abilities - Hyper Cutter", () => { // Reference Link: https://bulbapedia.bulbagarden.net/wiki/Hyper_Cutter_(Ability) it("only prevents ATK drops", async () => { - await game.startBattle(); + await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; diff --git a/test/abilities/libero.test.ts b/test/abilities/libero.test.ts index a6942b18aad..ea4e288bdb0 100644 --- a/test/abilities/libero.test.ts +++ b/test/abilities/libero.test.ts @@ -39,7 +39,7 @@ describe("Abilities - Libero", () => { test("ability applies and changes a pokemon's type", async () => { game.override.moveset([Moves.SPLASH]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -54,7 +54,7 @@ describe("Abilities - Libero", () => { test.skip("ability applies only once per switch in", async () => { game.override.moveset([Moves.SPLASH, Moves.AGILITY]); - await game.startBattle([Species.MAGIKARP, Species.BULBASAUR]); + await game.classicMode.startBattle([Species.MAGIKARP, Species.BULBASAUR]); let leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -90,7 +90,7 @@ describe("Abilities - Libero", () => { test("ability applies correctly even if the pokemon's move has a variable type", async () => { game.override.moveset([Moves.WEATHER_BALL]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -110,7 +110,7 @@ describe("Abilities - Libero", () => { game.override.moveset([Moves.TACKLE]); game.override.passiveAbility(Abilities.REFRIGERATE); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -128,7 +128,7 @@ describe("Abilities - Libero", () => { test("ability applies correctly even if the pokemon's move calls another move", async () => { game.override.moveset([Moves.NATURE_POWER]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -143,7 +143,7 @@ describe("Abilities - Libero", () => { test("ability applies correctly even if the pokemon's move is delayed / charging", async () => { game.override.moveset([Moves.DIG]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -158,7 +158,7 @@ describe("Abilities - Libero", () => { game.override.moveset([Moves.TACKLE]); game.override.enemyMoveset(Moves.SPLASH); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -176,7 +176,7 @@ describe("Abilities - Libero", () => { game.override.moveset([Moves.TACKLE]); game.override.enemyMoveset([Moves.PROTECT, Moves.PROTECT, Moves.PROTECT, Moves.PROTECT]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -191,7 +191,7 @@ describe("Abilities - Libero", () => { game.override.moveset([Moves.TACKLE]); game.override.enemySpecies(Species.GASTLY); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -205,7 +205,7 @@ describe("Abilities - Libero", () => { test("ability is not applied if pokemon's type is the same as the move's type", async () => { game.override.moveset([Moves.SPLASH]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -220,7 +220,7 @@ describe("Abilities - Libero", () => { test("ability is not applied if pokemon is terastallized", async () => { game.override.moveset([Moves.SPLASH]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -236,7 +236,7 @@ describe("Abilities - Libero", () => { test("ability is not applied if pokemon uses struggle", async () => { game.override.moveset([Moves.STRUGGLE]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -250,7 +250,7 @@ describe("Abilities - Libero", () => { test("ability is not applied if the pokemon's move fails", async () => { game.override.moveset([Moves.BURN_UP]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -265,7 +265,7 @@ describe("Abilities - Libero", () => { game.override.moveset([Moves.TRICK_OR_TREAT]); game.override.enemySpecies(Species.GASTLY); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -279,7 +279,7 @@ describe("Abilities - Libero", () => { test("ability applies correctly and the pokemon curses itself", async () => { game.override.moveset([Moves.CURSE]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); diff --git a/test/abilities/magic_bounce.test.ts b/test/abilities/magic_bounce.test.ts index 78e4114724c..be1ad2b413a 100644 --- a/test/abilities/magic_bounce.test.ts +++ b/test/abilities/magic_bounce.test.ts @@ -52,7 +52,7 @@ describe("Abilities - Magic Bounce", () => { game.override.enemyMoveset([Moves.FLY]); game.move.select(Moves.GROWL); - await game.forceEnemyMove(Moves.FLY); + await game.move.selectEnemyMove(Moves.FLY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); @@ -183,7 +183,7 @@ describe("Abilities - Magic Bounce", () => { // turn 1 game.move.select(Moves.ENCORE); - await game.forceEnemyMove(Moves.TACKLE); + await game.move.selectEnemyMove(Moves.TACKLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(Moves.TACKLE); @@ -209,7 +209,7 @@ describe("Abilities - Magic Bounce", () => { // turn 1 game.move.select(Moves.GROWL); - await game.forceEnemyMove(Moves.TACKLE); + await game.move.selectEnemyMove(Moves.TACKLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); @@ -218,7 +218,7 @@ describe("Abilities - Magic Bounce", () => { // turn 2 game.move.select(Moves.ENCORE); - await game.forceEnemyMove(Moves.TACKLE); + await game.move.selectEnemyMove(Moves.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase"); expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(Moves.TACKLE); @@ -254,7 +254,7 @@ describe("Abilities - Magic Bounce", () => { vi.spyOn(stomping_tantrum, "calculateBattlePower"); game.move.select(Moves.SPORE); - await game.forceEnemyMove(Moves.CHARM); + await game.move.selectEnemyMove(Moves.CHARM); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.getLastXMoves(1)[0].result).toBe("success"); @@ -346,7 +346,7 @@ describe("Abilities - Magic Bounce", () => { game.override.moveset([Moves.TOXIC, Moves.CHARM]); await game.classicMode.startBattle([Species.BULBASAUR]); game.move.select(Moves.TOXIC); - await game.forceEnemyMove(Moves.FLY); + await game.move.selectEnemyMove(Moves.FLY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.TOXIC); diff --git a/test/abilities/magic_guard.test.ts b/test/abilities/magic_guard.test.ts index 96a9f4dab74..61d06a74c58 100644 --- a/test/abilities/magic_guard.test.ts +++ b/test/abilities/magic_guard.test.ts @@ -46,7 +46,7 @@ describe("Abilities - Magic Guard", () => { it("ability should prevent damage caused by weather", async () => { game.override.weather(WeatherType.SANDSTORM); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -70,7 +70,7 @@ describe("Abilities - Magic Guard", () => { //Toxic keeps track of the turn counters -> important that Magic Guard keeps track of post-Toxic turns game.override.statusEffect(StatusEffect.POISON); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -91,7 +91,7 @@ describe("Abilities - Magic Guard", () => { game.override.enemyMoveset([Moves.WORRY_SEED, Moves.WORRY_SEED, Moves.WORRY_SEED, Moves.WORRY_SEED]); game.override.statusEffect(StatusEffect.POISON); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -110,7 +110,7 @@ describe("Abilities - Magic Guard", () => { game.override.enemyStatusEffect(StatusEffect.BURN); game.override.enemyAbility(Abilities.MAGIC_GUARD); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); game.move.select(Moves.SPLASH); @@ -132,7 +132,7 @@ describe("Abilities - Magic Guard", () => { game.override.enemyStatusEffect(StatusEffect.TOXIC); game.override.enemyAbility(Abilities.MAGIC_GUARD); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); game.move.select(Moves.SPLASH); @@ -159,7 +159,7 @@ describe("Abilities - Magic Guard", () => { const newTag = getArenaTag(ArenaTagType.SPIKES, 5, Moves.SPIKES, 0, 0, ArenaTagSide.BOTH)!; game.scene.arena.tags.push(newTag); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; game.move.select(Moves.SPLASH); @@ -184,7 +184,7 @@ describe("Abilities - Magic Guard", () => { game.scene.arena.tags.push(playerTag); game.scene.arena.tags.push(enemyTag); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; game.move.select(Moves.SPLASH); @@ -206,7 +206,7 @@ describe("Abilities - Magic Guard", () => { }); it("Magic Guard prevents against damage from volatile status effects", async () => { - await game.startBattle([Species.DUSKULL]); + await game.classicMode.startBattle([Species.DUSKULL]); game.override.moveset([Moves.CURSE]); game.override.enemyAbility(Abilities.MAGIC_GUARD); @@ -231,7 +231,7 @@ describe("Abilities - Magic Guard", () => { it("Magic Guard prevents crash damage", async () => { game.override.moveset([Moves.HIGH_JUMP_KICK]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -249,7 +249,7 @@ describe("Abilities - Magic Guard", () => { it("Magic Guard prevents damage from recoil", async () => { game.override.moveset([Moves.TAKE_DOWN]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -266,7 +266,7 @@ describe("Abilities - Magic Guard", () => { it("Magic Guard does not prevent damage from Struggle's recoil", async () => { game.override.moveset([Moves.STRUGGLE]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -284,7 +284,7 @@ describe("Abilities - Magic Guard", () => { //This tests different move attributes than the recoil tests above it("Magic Guard prevents self-damage from attacking moves", async () => { game.override.moveset([Moves.STEEL_BEAM]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -301,7 +301,7 @@ describe("Abilities - Magic Guard", () => { /* it("Magic Guard does not prevent self-damage from confusion", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); game.move.select(Moves.CHARM); @@ -311,7 +311,7 @@ describe("Abilities - Magic Guard", () => { it("Magic Guard does not prevent self-damage from non-attacking moves", async () => { game.override.moveset([Moves.BELLY_DRUM]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -333,7 +333,7 @@ describe("Abilities - Magic Guard", () => { game.override.enemyMoveset([Moves.SPORE, Moves.SPORE, Moves.SPORE, Moves.SPORE]); game.override.enemyAbility(Abilities.BAD_DREAMS); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -355,7 +355,7 @@ describe("Abilities - Magic Guard", () => { game.override.moveset([Moves.TACKLE]); game.override.enemyAbility(Abilities.AFTERMATH); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -379,7 +379,7 @@ describe("Abilities - Magic Guard", () => { game.override.moveset([Moves.TACKLE]); game.override.enemyAbility(Abilities.IRON_BARBS); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -402,7 +402,7 @@ describe("Abilities - Magic Guard", () => { game.override.moveset([Moves.ABSORB]); game.override.enemyAbility(Abilities.LIQUID_OOZE); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -425,7 +425,7 @@ describe("Abilities - Magic Guard", () => { game.override.passiveAbility(Abilities.SOLAR_POWER); game.override.weather(WeatherType.SUNNY); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; game.move.select(Moves.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); diff --git a/test/abilities/mimicry.test.ts b/test/abilities/mimicry.test.ts index 598f5790aa8..de196ffc939 100644 --- a/test/abilities/mimicry.test.ts +++ b/test/abilities/mimicry.test.ts @@ -55,7 +55,7 @@ describe("Abilities - Mimicry", () => { const playerPokemon = game.scene.getPlayerPokemon(); game.move.select(Moves.TRANSFORM); - await game.forceEnemyMove(Moves.PSYCHIC_TERRAIN); + await game.move.selectEnemyMove(Moves.PSYCHIC_TERRAIN); await game.toNextTurn(); expect(playerPokemon?.getTypes().includes(PokemonType.PSYCHIC)).toBe(true); @@ -64,7 +64,7 @@ describe("Abilities - Mimicry", () => { } game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); expect(playerPokemon?.getTypes().includes(PokemonType.ELECTRIC)).toBe(true); }); @@ -75,13 +75,13 @@ describe("Abilities - Mimicry", () => { const playerPokemon = game.scene.getPlayerPokemon(); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.FORESTS_CURSE); + await game.move.selectEnemyMove(Moves.FORESTS_CURSE); await game.toNextTurn(); expect(playerPokemon?.summonData.addedType).toBe(PokemonType.GRASS); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.GRASSY_TERRAIN); + await game.move.selectEnemyMove(Moves.GRASSY_TERRAIN); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon?.summonData.addedType).toBeNull(); diff --git a/test/abilities/mirror_armor.test.ts b/test/abilities/mirror_armor.test.ts index bd61f39ba75..5f9c63531d4 100644 --- a/test/abilities/mirror_armor.test.ts +++ b/test/abilities/mirror_armor.test.ts @@ -46,7 +46,7 @@ describe("Ability - Mirror Armor", () => { // Enemy has intimidate, enemy should lose -1 atk game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); @@ -63,7 +63,7 @@ describe("Ability - Mirror Armor", () => { // Enemy has intimidate, enemy should lose -1 atk game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.toNextTurn(); expect(userPokemon.getStatStage(Stat.ATK)).toBe(-1); @@ -82,8 +82,8 @@ describe("Ability - Mirror Armor", () => { // Enemy has intimidate, enemy should lose -2 atk each game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); await game.toNextTurn(); expect(enemy1.getStatStage(Stat.ATK)).toBe(-2); @@ -104,8 +104,8 @@ describe("Ability - Mirror Armor", () => { // Enemy has intimidate, enemy should lose -1 atk game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); await game.toNextTurn(); expect(enemy1.getStatStage(Stat.ATK)).toBe(0); @@ -124,7 +124,7 @@ describe("Ability - Mirror Armor", () => { // Enemy has intimidate and uses tickle, enemy receives -2 atk and -1 defense game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(-1); @@ -144,8 +144,8 @@ describe("Ability - Mirror Armor", () => { game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER_2); await game.toNextTurn(); expect(player1.getStatStage(Stat.ATK)).toBe(0); @@ -168,7 +168,7 @@ describe("Ability - Mirror Armor", () => { // Enemy has intimidate and uses tickle, enemy receives -2 atk and -1 defense game.move.select(Moves.TICKLE); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.toNextTurn(); expect(userPokemon.getStatStage(Stat.DEF)).toBe(-1); @@ -187,7 +187,7 @@ describe("Ability - Mirror Armor", () => { // Enemy has intimidate and uses tickle, enemy has white smoke, no one loses stats game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); @@ -206,7 +206,7 @@ describe("Ability - Mirror Armor", () => { // Enemy has intimidate and uses tickle, enemy has white smoke, no one loses stats game.move.select(Moves.TICKLE); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); @@ -224,7 +224,7 @@ describe("Ability - Mirror Armor", () => { // Enemy uses octolock, player loses stats at end of turn game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.OCTOLOCK, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.OCTOLOCK, BattlerIndex.PLAYER); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); @@ -242,7 +242,7 @@ describe("Ability - Mirror Armor", () => { // Player uses octolock, enemy loses stats at end of turn game.move.select(Moves.OCTOLOCK); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.toNextTurn(); expect(userPokemon.getStatStage(Stat.DEF)).toBe(0); @@ -261,7 +261,7 @@ describe("Ability - Mirror Armor", () => { const userPokemon = game.scene.getPlayerPokemon()!; game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.toNextTurn(); expect(userPokemon.getStatStage(Stat.ATK)).toBe(-1); @@ -276,11 +276,11 @@ describe("Ability - Mirror Armor", () => { const userPokemon = game.scene.getPlayerPokemon()!; game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.STICKY_WEB, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.STICKY_WEB, BattlerIndex.PLAYER); await game.toNextTurn(); game.doSwitchPokemon(1); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.toNextTurn(); expect(userPokemon.getStatStage(Stat.SPD)).toBe(0); @@ -297,14 +297,14 @@ describe("Ability - Mirror Armor", () => { game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.STICKY_WEB, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.STICKY_WEB, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); await game.toNextTurn(); game.doSwitchPokemon(2); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); await game.toNextTurn(); expect(enemy1.getStatStage(Stat.SPD)).toBe(-1); diff --git a/test/abilities/moxie.test.ts b/test/abilities/moxie.test.ts index bccdeda2b93..d4e1927e077 100644 --- a/test/abilities/moxie.test.ts +++ b/test/abilities/moxie.test.ts @@ -38,7 +38,7 @@ describe("Abilities - Moxie", () => { it("should raise ATK stat stage by 1 when winning a battle", async () => { const moveToUse = Moves.AERIAL_ACE; - await game.startBattle([Species.MIGHTYENA, Species.MIGHTYENA]); + await game.classicMode.startBattle([Species.MIGHTYENA, Species.MIGHTYENA]); const playerPokemon = game.scene.getPlayerPokemon()!; @@ -56,7 +56,7 @@ describe("Abilities - Moxie", () => { async () => { game.override.battleStyle("double"); const moveToUse = Moves.AERIAL_ACE; - await game.startBattle([Species.MIGHTYENA, Species.MIGHTYENA]); + await game.classicMode.startBattle([Species.MIGHTYENA, Species.MIGHTYENA]); const [firstPokemon, secondPokemon] = game.scene.getPlayerField(); diff --git a/test/abilities/mycelium_might.test.ts b/test/abilities/mycelium_might.test.ts index 4a5700045fa..18465f9b64e 100644 --- a/test/abilities/mycelium_might.test.ts +++ b/test/abilities/mycelium_might.test.ts @@ -41,7 +41,7 @@ describe("Abilities - Mycelium Might", () => { **/ it("will move last in its priority bracket and ignore protective abilities", async () => { - await game.startBattle([Species.REGIELEKI]); + await game.classicMode.startBattle([Species.REGIELEKI]); const enemyPokemon = game.scene.getEnemyPokemon(); const playerIndex = game.scene.getPlayerPokemon()?.getBattlerIndex(); @@ -65,7 +65,7 @@ describe("Abilities - Mycelium Might", () => { it("will still go first if a status move that is in a higher priority bracket than the opponent's move is used", async () => { game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - await game.startBattle([Species.REGIELEKI]); + await game.classicMode.startBattle([Species.REGIELEKI]); const enemyPokemon = game.scene.getEnemyPokemon(); const playerIndex = game.scene.getPlayerPokemon()?.getBattlerIndex(); @@ -87,7 +87,7 @@ describe("Abilities - Mycelium Might", () => { }, 20000); it("will not affect non-status moves", async () => { - await game.startBattle([Species.REGIELEKI]); + await game.classicMode.startBattle([Species.REGIELEKI]); const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); diff --git a/test/abilities/neutralizing_gas.test.ts b/test/abilities/neutralizing_gas.test.ts index 979583b7d97..cf19f36c9d0 100644 --- a/test/abilities/neutralizing_gas.test.ts +++ b/test/abilities/neutralizing_gas.test.ts @@ -110,16 +110,16 @@ describe("Abilities - Neutralizing Gas", () => { await game.classicMode.startBattle([Species.ACCELGOR, Species.ACCELGOR]); game.move.select(Moves.SPLASH, 0); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.ENTRAINMENT, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.ENTRAINMENT, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeDefined(); // Now one neut gas user is left game.move.select(Moves.SPLASH, 0); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.ENTRAINMENT, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.ENTRAINMENT, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeUndefined(); // No neut gas users are left diff --git a/test/abilities/pastel_veil.test.ts b/test/abilities/pastel_veil.test.ts index 4ae9763c4a6..21da1d1353d 100644 --- a/test/abilities/pastel_veil.test.ts +++ b/test/abilities/pastel_veil.test.ts @@ -34,7 +34,7 @@ describe("Abilities - Pastel Veil", () => { }); it("prevents the user and its allies from being afflicted by poison", async () => { - await game.startBattle([Species.MAGIKARP, Species.GALAR_PONYTA]); + await game.classicMode.startBattle([Species.MAGIKARP, Species.GALAR_PONYTA]); const ponyta = game.scene.getPlayerField()[1]; const magikarp = game.scene.getPlayerField()[0]; ponyta.abilityIndex = 1; @@ -50,7 +50,7 @@ describe("Abilities - Pastel Veil", () => { }); it("it heals the poisoned status condition of allies if user is sent out into battle", async () => { - await game.startBattle([Species.MAGIKARP, Species.FEEBAS, Species.GALAR_PONYTA]); + await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS, Species.GALAR_PONYTA]); const ponyta = game.scene.getPlayerParty()[2]; const magikarp = game.scene.getPlayerField()[0]; ponyta.abilityIndex = 1; diff --git a/test/abilities/perish_body.test.ts b/test/abilities/perish_body.test.ts index 27e76cb52ad..140e087843c 100644 --- a/test/abilities/perish_body.test.ts +++ b/test/abilities/perish_body.test.ts @@ -64,14 +64,14 @@ describe("Abilities - Perish Song", () => { const magikarp = game.scene.getEnemyPokemon(); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.PERISH_SONG); + await game.move.selectEnemyMove(Moves.PERISH_SONG); await game.toNextTurn(); expect(feebas?.summonData.tags[0].turnCount).toBe(3); expect(magikarp?.summonData.tags[0].turnCount).toBe(3); game.doSwitchPokemon(1); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); const cursola = game.scene.getPlayerPokemon(); @@ -79,7 +79,7 @@ describe("Abilities - Perish Song", () => { expect(magikarp?.summonData.tags[0].turnCount).toBe(2); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.AQUA_JET); + await game.move.selectEnemyMove(Moves.AQUA_JET); await game.toNextTurn(); expect(cursola?.summonData.tags.length).toBe(0); @@ -94,7 +94,7 @@ describe("Abilities - Perish Song", () => { const cursola = game.scene.getPlayerPokemon(); game.move.select(Moves.WHIRLWIND); - await game.forceEnemyMove(Moves.PERISH_SONG); + await game.move.selectEnemyMove(Moves.PERISH_SONG); await game.toNextTurn(); const magikarp = game.scene.getEnemyPokemon(); @@ -102,7 +102,7 @@ describe("Abilities - Perish Song", () => { expect(magikarp?.summonData.tags.length).toBe(0); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.AQUA_JET); + await game.move.selectEnemyMove(Moves.AQUA_JET); await game.toNextTurn(); expect(cursola?.summonData.tags[0].turnCount).toBe(2); diff --git a/test/abilities/power_spot.test.ts b/test/abilities/power_spot.test.ts index c3accdb04f8..0a062537202 100644 --- a/test/abilities/power_spot.test.ts +++ b/test/abilities/power_spot.test.ts @@ -39,7 +39,7 @@ describe("Abilities - Power Spot", () => { vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.startBattle([Species.REGIELEKI, Species.STONJOURNER]); + await game.classicMode.startBattle([Species.REGIELEKI, Species.STONJOURNER]); game.move.select(Moves.DAZZLING_GLEAM); game.move.select(Moves.SPLASH, 1); await game.phaseInterceptor.to(MoveEffectPhase); @@ -53,7 +53,7 @@ describe("Abilities - Power Spot", () => { vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.startBattle([Species.REGIELEKI, Species.STONJOURNER]); + await game.classicMode.startBattle([Species.REGIELEKI, Species.STONJOURNER]); game.move.select(Moves.BREAKING_SWIPE); game.move.select(Moves.SPLASH, 1); await game.phaseInterceptor.to(MoveEffectPhase); @@ -67,7 +67,7 @@ describe("Abilities - Power Spot", () => { vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.startBattle([Species.STONJOURNER, Species.REGIELEKI]); + await game.classicMode.startBattle([Species.STONJOURNER, Species.REGIELEKI]); game.move.select(Moves.BREAKING_SWIPE); game.move.select(Moves.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); diff --git a/test/abilities/protean.test.ts b/test/abilities/protean.test.ts index 8e6b69dabd6..bfe6dd32282 100644 --- a/test/abilities/protean.test.ts +++ b/test/abilities/protean.test.ts @@ -39,7 +39,7 @@ describe("Abilities - Protean", () => { test("ability applies and changes a pokemon's type", async () => { game.override.moveset([Moves.SPLASH]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -54,7 +54,7 @@ describe("Abilities - Protean", () => { test.skip("ability applies only once per switch in", async () => { game.override.moveset([Moves.SPLASH, Moves.AGILITY]); - await game.startBattle([Species.MAGIKARP, Species.BULBASAUR]); + await game.classicMode.startBattle([Species.MAGIKARP, Species.BULBASAUR]); let leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -90,7 +90,7 @@ describe("Abilities - Protean", () => { test("ability applies correctly even if the pokemon's move has a variable type", async () => { game.override.moveset([Moves.WEATHER_BALL]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -110,7 +110,7 @@ describe("Abilities - Protean", () => { game.override.moveset([Moves.TACKLE]); game.override.passiveAbility(Abilities.REFRIGERATE); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -128,7 +128,7 @@ describe("Abilities - Protean", () => { test("ability applies correctly even if the pokemon's move calls another move", async () => { game.override.moveset([Moves.NATURE_POWER]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -143,7 +143,7 @@ describe("Abilities - Protean", () => { test("ability applies correctly even if the pokemon's move is delayed / charging", async () => { game.override.moveset([Moves.DIG]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -158,7 +158,7 @@ describe("Abilities - Protean", () => { game.override.moveset([Moves.TACKLE]); game.override.enemyMoveset(Moves.SPLASH); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -176,7 +176,7 @@ describe("Abilities - Protean", () => { game.override.moveset([Moves.TACKLE]); game.override.enemyMoveset([Moves.PROTECT, Moves.PROTECT, Moves.PROTECT, Moves.PROTECT]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -191,7 +191,7 @@ describe("Abilities - Protean", () => { game.override.moveset([Moves.TACKLE]); game.override.enemySpecies(Species.GASTLY); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -205,7 +205,7 @@ describe("Abilities - Protean", () => { test("ability is not applied if pokemon's type is the same as the move's type", async () => { game.override.moveset([Moves.SPLASH]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -220,7 +220,7 @@ describe("Abilities - Protean", () => { test("ability is not applied if pokemon is terastallized", async () => { game.override.moveset([Moves.SPLASH]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -236,7 +236,7 @@ describe("Abilities - Protean", () => { test("ability is not applied if pokemon uses struggle", async () => { game.override.moveset([Moves.STRUGGLE]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -250,7 +250,7 @@ describe("Abilities - Protean", () => { test("ability is not applied if the pokemon's move fails", async () => { game.override.moveset([Moves.BURN_UP]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -265,7 +265,7 @@ describe("Abilities - Protean", () => { game.override.moveset([Moves.TRICK_OR_TREAT]); game.override.enemySpecies(Species.GASTLY); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); @@ -279,7 +279,7 @@ describe("Abilities - Protean", () => { test("ability applies correctly and the pokemon curses itself", async () => { game.override.moveset([Moves.CURSE]); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); diff --git a/test/abilities/quick_draw.test.ts b/test/abilities/quick_draw.test.ts index 79a29b0ce77..e761d236a93 100644 --- a/test/abilities/quick_draw.test.ts +++ b/test/abilities/quick_draw.test.ts @@ -41,7 +41,7 @@ describe("Abilities - Quick Draw", () => { }); test("makes pokemon going first in its priority bracket", async () => { - await game.startBattle(); + await game.classicMode.startBattle(); const pokemon = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -63,7 +63,7 @@ describe("Abilities - Quick Draw", () => { retry: 5, }, async () => { - await game.startBattle(); + await game.classicMode.startBattle(); const pokemon = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -83,7 +83,7 @@ describe("Abilities - Quick Draw", () => { test("does not increase priority", async () => { game.override.enemyMoveset([Moves.EXTREME_SPEED]); - await game.startBattle(); + await game.classicMode.startBattle(); const pokemon = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; diff --git a/test/abilities/sand_veil.test.ts b/test/abilities/sand_veil.test.ts index b82c79c681b..116850e1e5a 100644 --- a/test/abilities/sand_veil.test.ts +++ b/test/abilities/sand_veil.test.ts @@ -38,7 +38,7 @@ describe("Abilities - Sand Veil", () => { }); test("ability should increase the evasiveness of the source", async () => { - await game.startBattle([Species.SNORLAX, Species.BLISSEY]); + await game.classicMode.startBattle([Species.SNORLAX, Species.BLISSEY]); const leadPokemon = game.scene.getPlayerField(); diff --git a/test/abilities/schooling.test.ts b/test/abilities/schooling.test.ts index 803b4d2062a..ac4e3c837c5 100644 --- a/test/abilities/schooling.test.ts +++ b/test/abilities/schooling.test.ts @@ -39,7 +39,7 @@ describe("Abilities - SCHOOLING", () => { [Species.WISHIWASHI]: schoolForm, }); - await game.startBattle([Species.MAGIKARP, Species.WISHIWASHI]); + await game.classicMode.startBattle([Species.MAGIKARP, Species.WISHIWASHI]); const wishiwashi = game.scene.getPlayerParty().find(p => p.species.speciesId === Species.WISHIWASHI)!; expect(wishiwashi).not.toBe(undefined); diff --git a/test/abilities/screen_cleaner.test.ts b/test/abilities/screen_cleaner.test.ts index 840291f6420..ea99ba00f87 100644 --- a/test/abilities/screen_cleaner.test.ts +++ b/test/abilities/screen_cleaner.test.ts @@ -33,7 +33,7 @@ describe("Abilities - Screen Cleaner", () => { game.override.moveset([Moves.HAIL]); game.override.enemyMoveset([Moves.AURORA_VEIL, Moves.AURORA_VEIL, Moves.AURORA_VEIL, Moves.AURORA_VEIL]); - await game.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); game.move.select(Moves.HAIL); await game.phaseInterceptor.to(TurnEndPhase); @@ -50,7 +50,7 @@ describe("Abilities - Screen Cleaner", () => { it("removes Light Screen", async () => { game.override.enemyMoveset([Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN]); - await game.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); game.move.select(Moves.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); @@ -67,7 +67,7 @@ describe("Abilities - Screen Cleaner", () => { it("removes Reflect", async () => { game.override.enemyMoveset([Moves.REFLECT, Moves.REFLECT, Moves.REFLECT, Moves.REFLECT]); - await game.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); game.move.select(Moves.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); diff --git a/test/abilities/shields_down.test.ts b/test/abilities/shields_down.test.ts index 2f9d2fb1f97..444b1fabf73 100644 --- a/test/abilities/shields_down.test.ts +++ b/test/abilities/shields_down.test.ts @@ -76,7 +76,7 @@ describe("Abilities - SHIELDS DOWN", () => { await game.classicMode.startBattle([Species.MINIOR]); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPORE); + await game.move.selectEnemyMove(Moves.SPORE); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.getPlayerPokemon()!.status).toBe(undefined); @@ -115,12 +115,12 @@ describe("Abilities - SHIELDS DOWN", () => { // turn 1 game.move.select(Moves.GRAVITY); - await game.forceEnemyMove(Moves.TOXIC_SPIKES); + await game.move.selectEnemyMove(Moves.TOXIC_SPIKES); await game.toNextTurn(); // turn 2 game.doSwitchPokemon(1); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(Species.MINIOR); @@ -134,7 +134,7 @@ describe("Abilities - SHIELDS DOWN", () => { await game.classicMode.startBattle([Species.MAGIKARP, Species.MINIOR]); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.YAWN); + await game.move.selectEnemyMove(Moves.YAWN); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.getPlayerPokemon()!.findTag(tag => tag.tagType === BattlerTagType.DROWSY)).toBe(undefined); @@ -146,7 +146,7 @@ describe("Abilities - SHIELDS DOWN", () => { await game.classicMode.startBattle([Species.MINIOR]); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.CONFUSE_RAY); + await game.move.selectEnemyMove(Moves.CONFUSE_RAY); await game.phaseInterceptor.to(TurnEndPhase); @@ -162,7 +162,7 @@ describe("Abilities - SHIELDS DOWN", () => { await game.classicMode.startBattle([Species.MINIOR]); game.move.select(Moves.SPORE); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.SLEEP); diff --git a/test/abilities/simple.test.ts b/test/abilities/simple.test.ts index 1f084b1bf4c..cf3a692a7b0 100644 --- a/test/abilities/simple.test.ts +++ b/test/abilities/simple.test.ts @@ -31,7 +31,7 @@ describe("Abilities - Simple", () => { }); it("should double stat changes when applied", async () => { - await game.startBattle([Species.SLOWBRO]); + await game.classicMode.startBattle([Species.SLOWBRO]); const enemyPokemon = game.scene.getEnemyPokemon()!; diff --git a/test/abilities/stakeout.test.ts b/test/abilities/stakeout.test.ts index 8a2231bba0b..d986046a7e1 100644 --- a/test/abilities/stakeout.test.ts +++ b/test/abilities/stakeout.test.ts @@ -42,7 +42,7 @@ describe("Abilities - Stakeout", () => { const [enemy1] = game.scene.getEnemyParty(); game.move.select(Moves.SURF); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); const damage1 = enemy1.getInverseHp(); enemy1.hp = enemy1.getMaxHp(); @@ -65,17 +65,17 @@ describe("Abilities - Stakeout", () => { const [enemy1] = game.scene.getEnemyParty(); game.move.select(Moves.SURF); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); const damage1 = enemy1.getInverseHp(); enemy1.hp = enemy1.getMaxHp(); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.FLIP_TURN); + await game.move.selectEnemyMove(Moves.FLIP_TURN); await game.toNextTurn(); game.move.select(Moves.SURF); - await game.forceEnemyMove(Moves.FLIP_TURN); + await game.move.selectEnemyMove(Moves.FLIP_TURN); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); diff --git a/test/abilities/stall.test.ts b/test/abilities/stall.test.ts index 68b3fdedcd8..5c17f71c48d 100644 --- a/test/abilities/stall.test.ts +++ b/test/abilities/stall.test.ts @@ -37,7 +37,7 @@ describe("Abilities - Stall", () => { **/ it("Pokemon with Stall should move last in its priority bracket regardless of speed", async () => { - await game.startBattle([Species.SHUCKLE]); + await game.classicMode.startBattle([Species.SHUCKLE]); const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); @@ -55,7 +55,7 @@ describe("Abilities - Stall", () => { }, 20000); it("Pokemon with Stall will go first if a move that is in a higher priority bracket than the opponent's move is used", async () => { - await game.startBattle([Species.SHUCKLE]); + await game.classicMode.startBattle([Species.SHUCKLE]); const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); @@ -74,7 +74,7 @@ describe("Abilities - Stall", () => { it("If both Pokemon have stall and use the same move, speed is used to determine who goes first.", async () => { game.override.ability(Abilities.STALL); - await game.startBattle([Species.SHUCKLE]); + await game.classicMode.startBattle([Species.SHUCKLE]); const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); diff --git a/test/abilities/sturdy.test.ts b/test/abilities/sturdy.test.ts index bda8c6d1e35..dbdd1b4570e 100644 --- a/test/abilities/sturdy.test.ts +++ b/test/abilities/sturdy.test.ts @@ -36,14 +36,14 @@ describe("Abilities - Sturdy", () => { }); test("Sturdy activates when user is at full HP", async () => { - await game.startBattle(); + await game.classicMode.startBattle(); game.move.select(Moves.CLOSE_COMBAT); await game.phaseInterceptor.to(MoveEndPhase); expect(game.scene.getEnemyParty()[0].hp).toBe(1); }); test("Sturdy doesn't activate when user is not at full HP", async () => { - await game.startBattle(); + await game.classicMode.startBattle(); const enemyPokemon: EnemyPokemon = game.scene.getEnemyParty()[0]; enemyPokemon.hp = enemyPokemon.getMaxHp() - 1; @@ -56,7 +56,7 @@ describe("Abilities - Sturdy", () => { }); test("Sturdy pokemon should be immune to OHKO moves", async () => { - await game.startBattle(); + await game.classicMode.startBattle(); game.move.select(Moves.FISSURE); await game.phaseInterceptor.to(MoveEndPhase); @@ -67,7 +67,7 @@ describe("Abilities - Sturdy", () => { test("Sturdy is ignored by pokemon with `Abilities.MOLD_BREAKER`", async () => { game.override.ability(Abilities.MOLD_BREAKER); - await game.startBattle(); + await game.classicMode.startBattle(); game.move.select(Moves.CLOSE_COMBAT); await game.phaseInterceptor.to(DamageAnimPhase); diff --git a/test/abilities/supreme_overlord.test.ts b/test/abilities/supreme_overlord.test.ts index 6cc52de64bf..4c0be80daea 100644 --- a/test/abilities/supreme_overlord.test.ts +++ b/test/abilities/supreme_overlord.test.ts @@ -44,7 +44,7 @@ describe("Abilities - Supreme Overlord", () => { }); it("should increase Power by 20% if 2 Pokemon are fainted in the party", async () => { - await game.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); game.move.select(Moves.EXPLOSION); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); diff --git a/test/abilities/sweet_veil.test.ts b/test/abilities/sweet_veil.test.ts index e609aa6e7d2..80d7165619f 100644 --- a/test/abilities/sweet_veil.test.ts +++ b/test/abilities/sweet_veil.test.ts @@ -33,7 +33,7 @@ describe("Abilities - Sweet Veil", () => { }); it("prevents the user and its allies from falling asleep", async () => { - await game.startBattle([Species.SWIRLIX, Species.MAGIKARP]); + await game.classicMode.startBattle([Species.SWIRLIX, Species.MAGIKARP]); game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); @@ -45,7 +45,7 @@ describe("Abilities - Sweet Veil", () => { it("causes Rest to fail when used by the user or its allies", async () => { game.override.enemyMoveset(Moves.SPLASH); - await game.startBattle([Species.SWIRLIX, Species.MAGIKARP]); + await game.classicMode.startBattle([Species.SWIRLIX, Species.MAGIKARP]); game.move.select(Moves.SPLASH); game.move.select(Moves.REST, 1); @@ -57,7 +57,7 @@ describe("Abilities - Sweet Veil", () => { it("causes Yawn to fail if used on the user or its allies", async () => { game.override.enemyMoveset([Moves.YAWN, Moves.YAWN, Moves.YAWN, Moves.YAWN]); - await game.startBattle([Species.SWIRLIX, Species.MAGIKARP]); + await game.classicMode.startBattle([Species.SWIRLIX, Species.MAGIKARP]); game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); @@ -73,7 +73,7 @@ describe("Abilities - Sweet Veil", () => { game.override.startingLevel(5); game.override.enemyMoveset(Moves.SPLASH); - await game.startBattle([Species.SHUCKLE, Species.SHUCKLE, Species.SWIRLIX]); + await game.classicMode.startBattle([Species.SHUCKLE, Species.SHUCKLE, Species.SWIRLIX]); game.move.select(Moves.SPLASH); game.move.select(Moves.YAWN, 1, BattlerIndex.PLAYER); diff --git a/test/abilities/unburden.test.ts b/test/abilities/unburden.test.ts index ff28c3b6a09..ea4f84545aa 100644 --- a/test/abilities/unburden.test.ts +++ b/test/abilities/unburden.test.ts @@ -244,8 +244,8 @@ describe("Abilities - Unburden", () => { // Turn 1: Treecko gets hit by False Swipe and eats Sitrus Berry, activating Unburden game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.FALSE_SWIPE, 0); - await game.forceEnemyMove(Moves.FALSE_SWIPE, 0); + await game.move.selectEnemyMove(Moves.FALSE_SWIPE, 0); + await game.move.selectEnemyMove(Moves.FALSE_SWIPE, 0); await game.phaseInterceptor.to("TurnEndPhase"); expect(getHeldItemCount(treecko)).toBeLessThan(playerHeldItems); @@ -302,7 +302,7 @@ describe("Abilities - Unburden", () => { // Turn 1: Get hit by False Swipe and eat Sitrus Berry, activating Unburden game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.FALSE_SWIPE); + await game.move.selectEnemyMove(Moves.FALSE_SWIPE); await game.toNextTurn(); expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItems); @@ -310,7 +310,7 @@ describe("Abilities - Unburden", () => { // Turn 2: Get hit by Worry Seed, deactivating Unburden game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.WORRY_SEED); + await game.move.selectEnemyMove(Moves.WORRY_SEED); await game.toNextTurn(); expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItems); @@ -343,13 +343,13 @@ describe("Abilities - Unburden", () => { const initialSpeed = treecko.getStat(Stat.SPD); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.THIEF); + await game.move.selectEnemyMove(Moves.THIEF); game.doSelectPartyPokemon(1); await game.toNextTurn(); game.doRevivePokemon(1); game.doSwitchPokemon(1); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!).toBe(treecko); @@ -372,8 +372,8 @@ describe("Abilities - Unburden", () => { game.move.select(Moves.SPLASH); game.move.select(Moves.REVIVAL_BLESSING, 1); - await game.forceEnemyMove(Moves.THIEF, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.THIEF, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2]); game.doSelectPartyPokemon(0, "RevivalBlessingPhase"); await game.toNextTurn(); diff --git a/test/abilities/wimp_out.test.ts b/test/abilities/wimp_out.test.ts index 67885a82163..32a627f20f9 100644 --- a/test/abilities/wimp_out.test.ts +++ b/test/abilities/wimp_out.test.ts @@ -544,8 +544,8 @@ describe("Abilities - Wimp Out", () => { // turn 1 game.move.select(Moves.DRAGON_ENERGY, 0); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH); - await game.forceEnemyMove(Moves.ENDURE); + await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.ENDURE); await game.phaseInterceptor.to("SelectModifierPhase"); expect(game.scene.currentBattle.waveIndex).toBe(wave + 1); diff --git a/test/abilities/wind_power.test.ts b/test/abilities/wind_power.test.ts index 66c72d454ab..11585520c73 100644 --- a/test/abilities/wind_power.test.ts +++ b/test/abilities/wind_power.test.ts @@ -31,7 +31,7 @@ describe("Abilities - Wind Power", () => { }); it("it becomes charged when hit by wind moves", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const shiftry = game.scene.getEnemyPokemon()!; expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined(); @@ -46,7 +46,7 @@ describe("Abilities - Wind Power", () => { game.override.ability(Abilities.WIND_POWER); game.override.enemySpecies(Species.MAGIKARP); - await game.startBattle([Species.SHIFTRY]); + await game.classicMode.startBattle([Species.SHIFTRY]); const shiftry = game.scene.getPlayerPokemon()!; expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined(); @@ -61,7 +61,7 @@ describe("Abilities - Wind Power", () => { game.override.enemySpecies(Species.MAGIKARP); game.override.ability(Abilities.WIND_POWER); - await game.startBattle([Species.SHIFTRY]); + await game.classicMode.startBattle([Species.SHIFTRY]); const magikarp = game.scene.getEnemyPokemon()!; const shiftry = game.scene.getPlayerPokemon()!; @@ -79,7 +79,7 @@ describe("Abilities - Wind Power", () => { it("does not interact with Sandstorm", async () => { game.override.enemySpecies(Species.MAGIKARP); - await game.startBattle([Species.SHIFTRY]); + await game.classicMode.startBattle([Species.SHIFTRY]); const shiftry = game.scene.getPlayerPokemon()!; expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined(); diff --git a/test/abilities/wonder_skin.test.ts b/test/abilities/wonder_skin.test.ts index fd4cc77bd1c..cb5dd4e117f 100644 --- a/test/abilities/wonder_skin.test.ts +++ b/test/abilities/wonder_skin.test.ts @@ -36,7 +36,7 @@ describe("Abilities - Wonder Skin", () => { vi.spyOn(moveToCheck, "calculateBattleAccuracy"); - await game.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([Species.PIKACHU]); game.move.select(Moves.CHARM); await game.phaseInterceptor.to(MoveEffectPhase); @@ -48,7 +48,7 @@ describe("Abilities - Wonder Skin", () => { vi.spyOn(moveToCheck, "calculateBattleAccuracy"); - await game.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([Species.PIKACHU]); game.move.select(Moves.TACKLE); await game.phaseInterceptor.to(MoveEffectPhase); diff --git a/test/abilities/zero_to_hero.test.ts b/test/abilities/zero_to_hero.test.ts index 2cdc516dc6b..c159d007765 100644 --- a/test/abilities/zero_to_hero.test.ts +++ b/test/abilities/zero_to_hero.test.ts @@ -39,7 +39,7 @@ describe("Abilities - ZERO TO HERO", () => { [Species.PALAFIN]: heroForm, }); - await game.startBattle([Species.FEEBAS, Species.PALAFIN, Species.PALAFIN]); + await game.classicMode.startBattle([Species.FEEBAS, Species.PALAFIN, Species.PALAFIN]); const palafin1 = game.scene.getPlayerParty()[1]; const palafin2 = game.scene.getPlayerParty()[2]; @@ -61,7 +61,7 @@ describe("Abilities - ZERO TO HERO", () => { }); it("should swap to Hero form when switching out during a battle", async () => { - await game.startBattle([Species.PALAFIN, Species.FEEBAS]); + await game.classicMode.startBattle([Species.PALAFIN, Species.FEEBAS]); const palafin = game.scene.getPlayerPokemon()!; expect(palafin.formIndex).toBe(baseForm); @@ -72,7 +72,7 @@ describe("Abilities - ZERO TO HERO", () => { }); it("should not swap to Hero form if switching due to faint", async () => { - await game.startBattle([Species.PALAFIN, Species.FEEBAS]); + await game.classicMode.startBattle([Species.PALAFIN, Species.FEEBAS]); const palafin = game.scene.getPlayerPokemon()!; expect(palafin.formIndex).toBe(baseForm); @@ -89,7 +89,7 @@ describe("Abilities - ZERO TO HERO", () => { [Species.PALAFIN]: heroForm, }); - await game.startBattle([Species.PALAFIN, Species.FEEBAS]); + await game.classicMode.startBattle([Species.PALAFIN, Species.FEEBAS]); const palafin = game.scene.getPlayerPokemon()!; expect(palafin.formIndex).toBe(heroForm); diff --git a/test/arena/weather_fog.test.ts b/test/arena/weather_fog.test.ts index ae41c9d14e8..69f167b8cf1 100644 --- a/test/arena/weather_fog.test.ts +++ b/test/arena/weather_fog.test.ts @@ -37,7 +37,7 @@ describe("Weather - Fog", () => { vi.spyOn(moveToCheck, "calculateBattleAccuracy"); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); game.move.select(Moves.TACKLE); await game.phaseInterceptor.to(MoveEffectPhase); diff --git a/test/battle/battle-order.test.ts b/test/battle/battle-order.test.ts index 43fa1e59c14..876730169f9 100644 --- a/test/battle/battle-order.test.ts +++ b/test/battle/battle-order.test.ts @@ -32,7 +32,7 @@ describe("Battle order", () => { }); it("opponent faster than player 50 vs 150", async () => { - await game.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([Species.BULBASAUR]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -51,7 +51,7 @@ describe("Battle order", () => { }, 20000); it("Player faster than opponent 150 vs 50", async () => { - await game.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([Species.BULBASAUR]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -71,7 +71,7 @@ describe("Battle order", () => { it("double - both opponents faster than player 50/50 vs 150/150", async () => { game.override.battleStyle("double"); - await game.startBattle([Species.BULBASAUR, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.BULBASAUR, Species.BLASTOISE]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); @@ -95,7 +95,7 @@ describe("Battle order", () => { it("double - speed tie except 1 - 100/100 vs 100/150", async () => { game.override.battleStyle("double"); - await game.startBattle([Species.BULBASAUR, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.BULBASAUR, Species.BLASTOISE]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); @@ -119,7 +119,7 @@ describe("Battle order", () => { it("double - speed tie 100/150 vs 100/150", async () => { game.override.battleStyle("double"); - await game.startBattle([Species.BULBASAUR, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.BULBASAUR, Species.BLASTOISE]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); diff --git a/test/battle/battle.test.ts b/test/battle/battle.test.ts index e980984580e..8c4315dcabc 100644 --- a/test/battle/battle.test.ts +++ b/test/battle/battle.test.ts @@ -85,7 +85,7 @@ describe("Test Battle Phase", () => { }, 20000); it("newGame one-liner", async () => { - await game.startBattle(); + await game.classicMode.startBattle(); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); @@ -98,7 +98,7 @@ describe("Test Battle Phase", () => { game.override.moveset([Moves.TACKLE]); game.override.enemyAbility(Abilities.HYDRATION); game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - await game.startBattle(); + await game.classicMode.startBattle(); game.move.select(Moves.TACKLE); await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(SelectModifierPhase, false); }, 20000); @@ -112,7 +112,7 @@ describe("Test Battle Phase", () => { game.override.enemyAbility(Abilities.HYDRATION); game.override.enemyMoveset([Moves.TAIL_WHIP, Moves.TAIL_WHIP, Moves.TAIL_WHIP, Moves.TAIL_WHIP]); game.override.battleStyle("single"); - await game.startBattle(); + await game.classicMode.startBattle(); game.move.select(Moves.TACKLE); await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(TurnInitPhase, false); }, 20000); @@ -127,7 +127,7 @@ describe("Test Battle Phase", () => { }, 20000); it("start battle with selected team", async () => { - await game.startBattle([Species.CHARIZARD, Species.CHANSEY, Species.MEW]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.CHANSEY, Species.MEW]); expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.CHARIZARD); expect(game.scene.getPlayerParty()[1].species.speciesId).toBe(Species.CHANSEY); expect(game.scene.getPlayerParty()[2].species.speciesId).toBe(Species.MEW); @@ -207,7 +207,7 @@ describe("Test Battle Phase", () => { game.override.enemySpecies(Species.MIGHTYENA); game.override.enemyAbility(Abilities.HYDRATION); game.override.ability(Abilities.HYDRATION); - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); @@ -217,7 +217,7 @@ describe("Test Battle Phase", () => { game.override.enemySpecies(Species.MIGHTYENA); game.override.enemyAbility(Abilities.HYDRATION); game.override.ability(Abilities.HYDRATION); - await game.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([Species.BLASTOISE]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); @@ -228,7 +228,7 @@ describe("Test Battle Phase", () => { game.override.enemyAbility(Abilities.HYDRATION); game.override.ability(Abilities.HYDRATION); game.override.startingWave(3); - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); @@ -239,7 +239,7 @@ describe("Test Battle Phase", () => { game.override.enemyAbility(Abilities.HYDRATION); game.override.ability(Abilities.HYDRATION); game.override.startingWave(3); - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD, Species.DARKRAI, Species.GABITE]); + await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD, Species.DARKRAI, Species.GABITE]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); @@ -255,7 +255,7 @@ describe("Test Battle Phase", () => { game.override.startingWave(3); game.override.moveset([moveToUse]); game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - await game.startBattle([Species.DARMANITAN, Species.CHARIZARD]); + await game.classicMode.startBattle([Species.DARMANITAN, Species.CHARIZARD]); game.move.select(moveToUse); await game.phaseInterceptor.to(DamageAnimPhase, false); @@ -275,7 +275,7 @@ describe("Test Battle Phase", () => { game.override.startingWave(3); game.override.moveset([moveToUse]); game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - await game.startBattle(); + await game.classicMode.startBattle(); const turn = game.scene.currentBattle.turn; game.move.select(moveToUse); await game.toNextTurn(); @@ -318,7 +318,7 @@ describe("Test Battle Phase", () => { .enemyMoveset(Moves.SPLASH) .startingHeldItems([{ name: "TEMP_STAT_STAGE_BOOSTER", type: Stat.ACC }]); - await game.startBattle(); + await game.classicMode.startBattle(); game.scene.getPlayerPokemon()!.hp = 1; game.move.select(moveToUse); diff --git a/test/battle/double_battle.test.ts b/test/battle/double_battle.test.ts index a30d55aac3d..99c52ea5add 100644 --- a/test/battle/double_battle.test.ts +++ b/test/battle/double_battle.test.ts @@ -34,7 +34,7 @@ describe("Double Battles", () => { // (There were bugs that either only summon one when can summon two, player stuck in switchPhase etc) it("3v2 edge case: player summons 2 pokemon on the next battle after being fainted and revived", async () => { game.override.battleStyle("double").enemyMoveset(Moves.SPLASH).moveset(Moves.SPLASH); - await game.startBattle([Species.BULBASAUR, Species.CHARIZARD, Species.SQUIRTLE]); + await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARIZARD, Species.SQUIRTLE]); game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH, 1); diff --git a/test/battle/special_battle.test.ts b/test/battle/special_battle.test.ts index 163f23e488d..6f4034cd8cd 100644 --- a/test/battle/special_battle.test.ts +++ b/test/battle/special_battle.test.ts @@ -33,63 +33,63 @@ describe("Test Battle Phase", () => { it("startBattle 2vs1 boss", async () => { game.override.battleStyle("single").startingWave(10); - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs2 boss", async () => { game.override.battleStyle("double").startingWave(10); - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs2 trainer", async () => { game.override.battleStyle("double").startingWave(5); - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs1 trainer", async () => { game.override.battleStyle("single").startingWave(5); - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs1 rival", async () => { game.override.battleStyle("single").startingWave(8); - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs2 rival", async () => { game.override.battleStyle("double").startingWave(8); - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 1vs1 trainer", async () => { game.override.battleStyle("single").startingWave(5); - await game.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([Species.BLASTOISE]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs2 trainer", async () => { game.override.battleStyle("double").startingWave(5); - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 4vs2 trainer", async () => { game.override.battleStyle("double").startingWave(5); - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD, Species.DARKRAI, Species.GABITE]); + await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD, Species.DARKRAI, Species.GABITE]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); diff --git a/test/daily_mode.test.ts b/test/daily_mode.test.ts index a7f5784087a..a5901da4821 100644 --- a/test/daily_mode.test.ts +++ b/test/daily_mode.test.ts @@ -30,7 +30,7 @@ describe("Daily Mode", () => { }); it("should initialize properly", async () => { - await game.dailyMode.runToSummon(); + await game.dailyMode.startBattle(); const party = game.scene.getPlayerParty(); expect(party).toHaveLength(3); diff --git a/test/evolution.test.ts b/test/evolution.test.ts index 4f91cd99382..a453d744da8 100644 --- a/test/evolution.test.ts +++ b/test/evolution.test.ts @@ -110,7 +110,7 @@ describe("Evolution", () => { .startingLevel(16) .enemyLevel(50); - await game.startBattle([Species.TOTODILE]); + await game.classicMode.startBattle([Species.TOTODILE]); const totodile = game.scene.getPlayerPokemon()!; const hpBefore = totodile.hp; @@ -138,7 +138,7 @@ describe("Evolution", () => { .startingLevel(13) .enemyLevel(30); - await game.startBattle([Species.CYNDAQUIL]); + await game.classicMode.startBattle([Species.CYNDAQUIL]); const cyndaquil = game.scene.getPlayerPokemon()!; cyndaquil.hp = Math.floor(cyndaquil.getMaxHp() / 2); @@ -171,7 +171,7 @@ describe("Evolution", () => { * If the value is 0, it's a 3 family maushold, whereas if the value is * 1, 2 or 3, it's a 4 family maushold */ - await game.startBattle([Species.TANDEMAUS]); // starts us off with a tandemaus + await game.classicMode.startBattle([Species.TANDEMAUS]); // starts us off with a tandemaus const playerPokemon = game.scene.getPlayerPokemon()!; playerPokemon.level = 25; // tandemaus evolves at level 25 vi.spyOn(Utils, "randSeedInt").mockReturnValue(0); // setting the random generator to be 0 to force a three family maushold diff --git a/test/items/dire_hit.test.ts b/test/items/dire_hit.test.ts index 6e20bc723e5..e848bceb514 100644 --- a/test/items/dire_hit.test.ts +++ b/test/items/dire_hit.test.ts @@ -40,7 +40,7 @@ describe("Items - Dire Hit", () => { }, 20000); it("should raise CRIT stage by 1", async () => { - await game.startBattle([Species.GASTLY]); + await game.classicMode.startBattle([Species.GASTLY]); const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -56,7 +56,7 @@ describe("Items - Dire Hit", () => { it("should renew how many battles are left of existing DIRE_HIT when picking up new DIRE_HIT", async () => { game.override.itemRewards([{ name: "DIRE_HIT" }]); - await game.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([Species.PIKACHU]); game.move.select(Moves.SPLASH); diff --git a/test/items/exp_booster.test.ts b/test/items/exp_booster.test.ts index ec7528c3b23..106574b6849 100644 --- a/test/items/exp_booster.test.ts +++ b/test/items/exp_booster.test.ts @@ -29,7 +29,7 @@ describe("EXP Modifier Items", () => { it("EXP booster items stack multiplicatively", async () => { game.override.startingHeldItems([{ name: "LUCKY_EGG", count: 3 }, { name: "GOLDEN_EGG" }]); - await game.startBattle(); + await game.classicMode.startBattle(); const partyMember = game.scene.getPlayerPokemon()!; partyMember.exp = 100; diff --git a/test/items/leek.test.ts b/test/items/leek.test.ts index 9bde2c86339..7a6975f6dae 100644 --- a/test/items/leek.test.ts +++ b/test/items/leek.test.ts @@ -32,7 +32,7 @@ describe("Items - Leek", () => { }); it("should raise CRIT stage by 2 when held by FARFETCHD", async () => { - await game.startBattle([Species.FARFETCHD]); + await game.classicMode.startBattle([Species.FARFETCHD]); const enemyMember = game.scene.getEnemyPokemon()!; @@ -46,7 +46,7 @@ describe("Items - Leek", () => { }, 20000); it("should raise CRIT stage by 2 when held by GALAR_FARFETCHD", async () => { - await game.startBattle([Species.GALAR_FARFETCHD]); + await game.classicMode.startBattle([Species.GALAR_FARFETCHD]); const enemyMember = game.scene.getEnemyPokemon()!; @@ -60,7 +60,7 @@ describe("Items - Leek", () => { }, 20000); it("should raise CRIT stage by 2 when held by SIRFETCHD", async () => { - await game.startBattle([Species.SIRFETCHD]); + await game.classicMode.startBattle([Species.SIRFETCHD]); const enemyMember = game.scene.getEnemyPokemon()!; @@ -77,7 +77,7 @@ describe("Items - Leek", () => { // Randomly choose from the Farfetch'd line const species = [Species.FARFETCHD, Species.GALAR_FARFETCHD, Species.SIRFETCHD]; - await game.startBattle([species[randInt(species.length)], Species.PIKACHU]); + await game.classicMode.startBattle([species[randInt(species.length)], Species.PIKACHU]); const [partyMember, ally] = game.scene.getPlayerParty(); @@ -105,7 +105,7 @@ describe("Items - Leek", () => { // Randomly choose from the Farfetch'd line const species = [Species.FARFETCHD, Species.GALAR_FARFETCHD, Species.SIRFETCHD]; - await game.startBattle([Species.PIKACHU, species[randInt(species.length)]]); + await game.classicMode.startBattle([Species.PIKACHU, species[randInt(species.length)]]); const [partyMember, ally] = game.scene.getPlayerParty(); @@ -130,7 +130,7 @@ describe("Items - Leek", () => { }, 20000); it("should not raise CRIT stage when held by a Pokemon outside of FARFETCHD line", async () => { - await game.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([Species.PIKACHU]); const enemyMember = game.scene.getEnemyPokemon()!; diff --git a/test/items/leftovers.test.ts b/test/items/leftovers.test.ts index 19739703f19..f4825c2b721 100644 --- a/test/items/leftovers.test.ts +++ b/test/items/leftovers.test.ts @@ -34,7 +34,7 @@ describe("Items - Leftovers", () => { }); it("leftovers works", async () => { - await game.startBattle([Species.ARCANINE]); + await game.classicMode.startBattle([Species.ARCANINE]); // Make sure leftovers are there expect(game.scene.modifiers[0].type.id).toBe("LEFTOVERS"); diff --git a/test/items/light_ball.test.ts b/test/items/light_ball.test.ts index cdcffe810fa..214f6f624e6 100644 --- a/test/items/light_ball.test.ts +++ b/test/items/light_ball.test.ts @@ -150,7 +150,7 @@ describe("Items - Light Ball", () => { }, 20000); it("LIGHT_BALL held by fused PIKACHU (part)", async () => { - await game.startBattle([Species.MAROWAK, Species.PIKACHU]); + await game.classicMode.startBattle([Species.MAROWAK, Species.PIKACHU]); const partyMember = game.scene.getPlayerParty()[0]; const ally = game.scene.getPlayerParty()[1]; @@ -189,7 +189,7 @@ describe("Items - Light Ball", () => { }, 20000); it("LIGHT_BALL not held by PIKACHU", async () => { - await game.startBattle([Species.MAROWAK]); + await game.classicMode.startBattle([Species.MAROWAK]); const partyMember = game.scene.getPlayerParty()[0]; diff --git a/test/items/metal_powder.test.ts b/test/items/metal_powder.test.ts index e924d75fce9..a9a81072622 100644 --- a/test/items/metal_powder.test.ts +++ b/test/items/metal_powder.test.ts @@ -82,7 +82,7 @@ describe("Items - Metal Powder", () => { }); it("METAL_POWDER held by DITTO", async () => { - await game.startBattle([Species.DITTO]); + await game.classicMode.startBattle([Species.DITTO]); const partyMember = game.scene.getPlayerParty()[0]; @@ -105,7 +105,7 @@ describe("Items - Metal Powder", () => { }, 20000); it("METAL_POWDER held by fused DITTO (base)", async () => { - await game.startBattle([Species.DITTO, Species.MAROWAK]); + await game.classicMode.startBattle([Species.DITTO, Species.MAROWAK]); const partyMember = game.scene.getPlayerParty()[0]; const ally = game.scene.getPlayerParty()[1]; @@ -138,7 +138,7 @@ describe("Items - Metal Powder", () => { }, 20000); it("METAL_POWDER held by fused DITTO (part)", async () => { - await game.startBattle([Species.MAROWAK, Species.DITTO]); + await game.classicMode.startBattle([Species.MAROWAK, Species.DITTO]); const partyMember = game.scene.getPlayerParty()[0]; const ally = game.scene.getPlayerParty()[1]; @@ -171,7 +171,7 @@ describe("Items - Metal Powder", () => { }, 20000); it("METAL_POWDER not held by DITTO", async () => { - await game.startBattle([Species.MAROWAK]); + await game.classicMode.startBattle([Species.MAROWAK]); const partyMember = game.scene.getPlayerParty()[0]; diff --git a/test/items/scope_lens.test.ts b/test/items/scope_lens.test.ts index f67966ea3c9..c8061ea3696 100644 --- a/test/items/scope_lens.test.ts +++ b/test/items/scope_lens.test.ts @@ -31,7 +31,7 @@ describe("Items - Scope Lens", () => { }, 20000); it("should raise CRIT stage by 1", async () => { - await game.startBattle([Species.GASTLY]); + await game.classicMode.startBattle([Species.GASTLY]); const enemyPokemon = game.scene.getEnemyPokemon()!; diff --git a/test/moves/astonish.test.ts b/test/moves/astonish.test.ts index accddcd545d..daa9b0bb878 100644 --- a/test/moves/astonish.test.ts +++ b/test/moves/astonish.test.ts @@ -39,7 +39,7 @@ describe("Moves - Astonish", () => { }); test("move effect should cancel the target's move on the turn it applies", async () => { - await game.startBattle([Species.MEOWSCARADA]); + await game.classicMode.startBattle([Species.MEOWSCARADA]); const leadPokemon = game.scene.getPlayerPokemon()!; diff --git a/test/moves/beat_up.test.ts b/test/moves/beat_up.test.ts index ad6cad40d32..09166dafb9d 100644 --- a/test/moves/beat_up.test.ts +++ b/test/moves/beat_up.test.ts @@ -35,7 +35,7 @@ describe("Moves - Beat Up", () => { }); it("should hit once for each healthy player Pokemon", async () => { - await game.startBattle([ + await game.classicMode.startBattle([ Species.MAGIKARP, Species.BULBASAUR, Species.CHARMANDER, @@ -63,7 +63,7 @@ describe("Moves - Beat Up", () => { }); it("should not count player Pokemon with status effects towards hit count", async () => { - await game.startBattle([ + await game.classicMode.startBattle([ Species.MAGIKARP, Species.BULBASAUR, Species.CHARMANDER, diff --git a/test/moves/belly_drum.test.ts b/test/moves/belly_drum.test.ts index 8ee1026bf20..9deff207446 100644 --- a/test/moves/belly_drum.test.ts +++ b/test/moves/belly_drum.test.ts @@ -42,7 +42,7 @@ describe("Moves - BELLY DRUM", () => { // Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/Belly_Drum_(move) test("raises the user's ATK stat stage to its max, at the cost of 1/2 of its maximum HP", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); @@ -55,7 +55,7 @@ describe("Moves - BELLY DRUM", () => { }); test("will still take effect if an uninvolved stat stage is at max", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); @@ -73,7 +73,7 @@ describe("Moves - BELLY DRUM", () => { }); test("fails if the pokemon's ATK stat stage is at its maximum", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -87,7 +87,7 @@ describe("Moves - BELLY DRUM", () => { }); test("fails if the user's health is less than 1/2", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); diff --git a/test/moves/chilly_reception.test.ts b/test/moves/chilly_reception.test.ts index 56da5dd400c..1c6c5ce127e 100644 --- a/test/moves/chilly_reception.test.ts +++ b/test/moves/chilly_reception.test.ts @@ -77,7 +77,7 @@ describe("Moves - Chilly Reception", () => { await game.classicMode.startBattle([Species.SLOWKING, Species.MEOWTH]); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.TACKLE); + await game.move.selectEnemyMove(Moves.TACKLE); await game.phaseInterceptor.to("BerryPhase", false); expect(game.scene.arena.weather?.weatherType).toBe(undefined); diff --git a/test/moves/clangorous_soul.test.ts b/test/moves/clangorous_soul.test.ts index 56f19a0e088..c7165a0a881 100644 --- a/test/moves/clangorous_soul.test.ts +++ b/test/moves/clangorous_soul.test.ts @@ -38,7 +38,7 @@ describe("Moves - Clangorous Soul", () => { //Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/Clangorous_Soul_(move) it("raises the user's ATK, DEF, SPATK, SPDEF, and SPD stat stages by 1 each at the cost of 1/3 of its maximum HP", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO); @@ -55,7 +55,7 @@ describe("Moves - Clangorous Soul", () => { }); it("will still take effect if one or more of the involved stat stages are not at max", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO); @@ -78,7 +78,7 @@ describe("Moves - Clangorous Soul", () => { }); it("fails if all stat stages involved are at max", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -100,7 +100,7 @@ describe("Moves - Clangorous Soul", () => { }); it("fails if the user's health is less than 1/3", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO); diff --git a/test/moves/crafty_shield.test.ts b/test/moves/crafty_shield.test.ts index c61e6d3848a..ec4c87fa060 100644 --- a/test/moves/crafty_shield.test.ts +++ b/test/moves/crafty_shield.test.ts @@ -39,7 +39,7 @@ describe("Moves - Crafty Shield", () => { }); test("should protect the user and allies from status moves", async () => { - await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); @@ -57,7 +57,7 @@ describe("Moves - Crafty Shield", () => { test("should not protect the user and allies from attack moves", async () => { game.override.enemyMoveset([Moves.TACKLE]); - await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); @@ -76,7 +76,7 @@ describe("Moves - Crafty Shield", () => { game.override.enemySpecies(Species.DUSCLOPS); game.override.enemyMoveset([Moves.CURSE]); - await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); @@ -92,7 +92,7 @@ describe("Moves - Crafty Shield", () => { }); test("should not block allies' self-targeted moves", async () => { - await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); diff --git a/test/moves/defog.test.ts b/test/moves/defog.test.ts index 58631150b6f..87c3845d55c 100644 --- a/test/moves/defog.test.ts +++ b/test/moves/defog.test.ts @@ -39,7 +39,7 @@ describe("Moves - Defog", () => { const enemyPokemon = game.scene.getEnemyField(); game.move.select(Moves.SAFEGUARD); - await game.forceEnemyMove(Moves.DEFOG); + await game.move.selectEnemyMove(Moves.DEFOG); await game.phaseInterceptor.to("BerryPhase"); expect(playerPokemon[0].isSafeguarded(enemyPokemon[0])).toBe(false); @@ -53,12 +53,12 @@ describe("Moves - Defog", () => { const playerPokemon = game.scene.getPlayerField(); game.move.select(Moves.MIST); - await game.forceEnemyMove(Moves.DEFOG); + await game.move.selectEnemyMove(Moves.DEFOG); await game.toNextTurn(); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.GROWL); + await game.move.selectEnemyMove(Moves.GROWL); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/moves/disable.test.ts b/test/moves/disable.test.ts index d21716145a4..5b2b687bd5d 100644 --- a/test/moves/disable.test.ts +++ b/test/moves/disable.test.ts @@ -139,12 +139,12 @@ describe("Moves - Disable", () => { const enemyMon = game.scene.getEnemyPokemon()!; game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); game.move.select(Moves.DISABLE); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); diff --git a/test/moves/double_team.test.ts b/test/moves/double_team.test.ts index 8eac6be11f4..b97fb1a338e 100644 --- a/test/moves/double_team.test.ts +++ b/test/moves/double_team.test.ts @@ -33,7 +33,7 @@ describe("Moves - Double Team", () => { }); it("raises the user's EVA stat stage by 1", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const ally = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; diff --git a/test/moves/dragon_tail.test.ts b/test/moves/dragon_tail.test.ts index 0e7cd04d078..409ce7e28f8 100644 --- a/test/moves/dragon_tail.test.ts +++ b/test/moves/dragon_tail.test.ts @@ -206,7 +206,7 @@ describe("Moves - Dragon Tail", () => { return min; }); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.DRAGON_TAIL); + await game.move.selectEnemyMove(Moves.DRAGON_TAIL); await game.toNextTurn(); expect(bulbasaur.isOnField()).toBe(false); @@ -260,7 +260,7 @@ describe("Moves - Dragon Tail", () => { eevee.status = new Status(StatusEffect.FAINT); expect(eevee.isFainted()).toBe(true); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); // Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted @@ -268,7 +268,7 @@ describe("Moves - Dragon Tail", () => { return min; }); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.DRAGON_TAIL); + await game.move.selectEnemyMove(Moves.DRAGON_TAIL); await game.toNextTurn(); expect(lapras.isOnField()).toBe(false); @@ -289,7 +289,7 @@ describe("Moves - Dragon Tail", () => { eevee.status = new Status(StatusEffect.FAINT); expect(eevee.isFainted()).toBe(true); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); // Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted @@ -297,7 +297,7 @@ describe("Moves - Dragon Tail", () => { return min; }); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.DRAGON_TAIL); + await game.move.selectEnemyMove(Moves.DRAGON_TAIL); await game.toNextTurn(); expect(lapras.isOnField()).toBe(true); diff --git a/test/moves/dynamax_cannon.test.ts b/test/moves/dynamax_cannon.test.ts index 6c4f1a321e3..62004e62778 100644 --- a/test/moves/dynamax_cannon.test.ts +++ b/test/moves/dynamax_cannon.test.ts @@ -45,7 +45,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 100 power against an enemy below level cap", async () => { game.override.enemyLevel(1); - await game.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([Species.ETERNATUS]); game.move.select(dynamaxCannon.id); @@ -57,7 +57,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 100 power against an enemy at level cap", async () => { game.override.enemyLevel(10); - await game.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([Species.ETERNATUS]); game.move.select(dynamaxCannon.id); @@ -69,7 +69,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 120 power against an enemy 1% above level cap", async () => { game.override.enemyLevel(101); - await game.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([Species.ETERNATUS]); game.move.select(dynamaxCannon.id); @@ -84,7 +84,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 140 power against an enemy 2% above level capp", async () => { game.override.enemyLevel(102); - await game.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([Species.ETERNATUS]); game.move.select(dynamaxCannon.id); @@ -99,7 +99,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 160 power against an enemy 3% above level cap", async () => { game.override.enemyLevel(103); - await game.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([Species.ETERNATUS]); game.move.select(dynamaxCannon.id); @@ -114,7 +114,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 180 power against an enemy 4% above level cap", async () => { game.override.enemyLevel(104); - await game.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([Species.ETERNATUS]); game.move.select(dynamaxCannon.id); @@ -129,7 +129,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 200 power against an enemy 5% above level cap", async () => { game.override.enemyLevel(105); - await game.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([Species.ETERNATUS]); game.move.select(dynamaxCannon.id); @@ -144,7 +144,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 200 power against an enemy way above level cap", async () => { game.override.enemyLevel(999); - await game.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([Species.ETERNATUS]); game.move.select(dynamaxCannon.id); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); diff --git a/test/moves/encore.test.ts b/test/moves/encore.test.ts index 519e7860c04..f941328fc90 100644 --- a/test/moves/encore.test.ts +++ b/test/moves/encore.test.ts @@ -42,7 +42,7 @@ describe("Moves - Encore", () => { const enemyPokemon = game.scene.getEnemyPokemon()!; game.move.select(Moves.ENCORE); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); expect(enemyPokemon.getTag(BattlerTagType.ENCORE)).toBeDefined(); diff --git a/test/moves/fairy_lock.test.ts b/test/moves/fairy_lock.test.ts index e967221bcae..faffdee2304 100644 --- a/test/moves/fairy_lock.test.ts +++ b/test/moves/fairy_lock.test.ts @@ -40,8 +40,8 @@ describe("Moves - Fairy Lock", () => { game.move.select(Moves.FAIRY_LOCK); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined(); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.ENEMY)).toBeDefined(); @@ -50,8 +50,8 @@ describe("Moves - Fairy Lock", () => { game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); expect(playerPokemon[0].isTrapped()).toEqual(true); expect(playerPokemon[1].isTrapped()).toEqual(true); @@ -70,8 +70,8 @@ describe("Moves - Fairy Lock", () => { game.move.select(Moves.FAIRY_LOCK); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined(); @@ -84,8 +84,8 @@ describe("Moves - Fairy Lock", () => { game.move.select(Moves.SPLASH); game.doSwitchPokemon(2); - await game.forceEnemyMove(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); await game.toNextTurn(); @@ -98,8 +98,8 @@ describe("Moves - Fairy Lock", () => { game.move.select(Moves.FAIRY_LOCK); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined(); @@ -108,9 +108,9 @@ describe("Moves - Fairy Lock", () => { await game.toNextTurn(); game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.WHIRLWIND, 0); + await game.move.selectEnemyMove(Moves.WHIRLWIND, 0); game.doSelectPartyPokemon(2); - await game.forceEnemyMove(Moves.WHIRLWIND, 1); + await game.move.selectEnemyMove(Moves.WHIRLWIND, 1); game.doSelectPartyPokemon(2); await game.phaseInterceptor.to("BerryPhase"); await game.toNextTurn(); @@ -126,8 +126,8 @@ describe("Moves - Fairy Lock", () => { game.move.select(Moves.FAIRY_LOCK); game.move.select(Moves.MEMENTO, 1); game.doSelectPartyPokemon(2); - await game.forceEnemyMove(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined(); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.ENEMY)).toBeDefined(); @@ -135,8 +135,8 @@ describe("Moves - Fairy Lock", () => { await game.toNextTurn(); game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(Moves.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerField()[0].isTrapped()).toEqual(true); expect(game.scene.getPlayerField()[1].isTrapped()).toEqual(true); diff --git a/test/moves/fillet_away.test.ts b/test/moves/fillet_away.test.ts index 477cdf76fc7..9de237b28a1 100644 --- a/test/moves/fillet_away.test.ts +++ b/test/moves/fillet_away.test.ts @@ -39,7 +39,7 @@ describe("Moves - FILLET AWAY", () => { //Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/fillet_away_(move) test("raises the user's ATK, SPATK, and SPD stat stages by 2 each, at the cost of 1/2 of its maximum HP", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); @@ -54,7 +54,7 @@ describe("Moves - FILLET AWAY", () => { }); test("still takes effect if one or more of the involved stat stages are not at max", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); @@ -73,7 +73,7 @@ describe("Moves - FILLET AWAY", () => { }); test("fails if all stat stages involved are at max", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -91,7 +91,7 @@ describe("Moves - FILLET AWAY", () => { }); test("fails if the user's health is less than 1/2", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); diff --git a/test/moves/flame_burst.test.ts b/test/moves/flame_burst.test.ts index fb92537a238..963b0f04a9a 100644 --- a/test/moves/flame_burst.test.ts +++ b/test/moves/flame_burst.test.ts @@ -46,7 +46,7 @@ describe("Moves - Flame Burst", () => { }); it("inflicts damage to the target's ally equal to 1/16 of its max HP", async () => { - await game.startBattle([Species.PIKACHU, Species.PIKACHU]); + await game.classicMode.startBattle([Species.PIKACHU, Species.PIKACHU]); const [leftEnemy, rightEnemy] = game.scene.getEnemyField(); game.move.select(Moves.FLAME_BURST, 0, leftEnemy.getBattlerIndex()); @@ -60,7 +60,7 @@ describe("Moves - Flame Burst", () => { it("does not inflict damage to the target's ally if the target was not affected by Flame Burst", async () => { game.override.enemyAbility(Abilities.FLASH_FIRE); - await game.startBattle([Species.PIKACHU, Species.PIKACHU]); + await game.classicMode.startBattle([Species.PIKACHU, Species.PIKACHU]); const [leftEnemy, rightEnemy] = game.scene.getEnemyField(); game.move.select(Moves.FLAME_BURST, 0, leftEnemy.getBattlerIndex()); @@ -72,7 +72,7 @@ describe("Moves - Flame Burst", () => { }); it("does not interact with the target ally's abilities", async () => { - await game.startBattle([Species.PIKACHU, Species.PIKACHU]); + await game.classicMode.startBattle([Species.PIKACHU, Species.PIKACHU]); const [leftEnemy, rightEnemy] = game.scene.getEnemyField(); vi.spyOn(rightEnemy, "getAbility").mockReturnValue(allAbilities[Abilities.FLASH_FIRE]); @@ -86,7 +86,7 @@ describe("Moves - Flame Burst", () => { }); it("effect damage is prevented by Magic Guard", async () => { - await game.startBattle([Species.PIKACHU, Species.PIKACHU]); + await game.classicMode.startBattle([Species.PIKACHU, Species.PIKACHU]); const [leftEnemy, rightEnemy] = game.scene.getEnemyField(); vi.spyOn(rightEnemy, "getAbility").mockReturnValue(allAbilities[Abilities.MAGIC_GUARD]); diff --git a/test/moves/flower_shield.test.ts b/test/moves/flower_shield.test.ts index 4840c6f018f..d95ef6299b7 100644 --- a/test/moves/flower_shield.test.ts +++ b/test/moves/flower_shield.test.ts @@ -36,7 +36,7 @@ describe("Moves - Flower Shield", () => { it("raises DEF stat stage by 1 for all Grass-type Pokemon on the field by one stage - single battle", async () => { game.override.enemySpecies(Species.CHERRIM); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const cherrim = game.scene.getEnemyPokemon()!; const magikarp = game.scene.getPlayerPokemon()!; @@ -53,7 +53,7 @@ describe("Moves - Flower Shield", () => { it("raises DEF stat stage by 1 for all Grass-type Pokemon on the field by one stage - double battle", async () => { game.override.enemySpecies(Species.MAGIKARP).startingBiome(Biome.GRASS).battleStyle("double"); - await game.startBattle([Species.CHERRIM, Species.MAGIKARP]); + await game.classicMode.startBattle([Species.CHERRIM, Species.MAGIKARP]); const field = game.scene.getField(true); const grassPokemons = field.filter(p => p.getTypes().includes(PokemonType.GRASS)); @@ -78,7 +78,7 @@ describe("Moves - Flower Shield", () => { game.override.enemyMoveset([Moves.DIG, Moves.DIG, Moves.DIG, Moves.DIG]); game.override.enemyLevel(50); - await game.startBattle([Species.CHERRIM]); + await game.classicMode.startBattle([Species.CHERRIM]); const paras = game.scene.getEnemyPokemon()!; const cherrim = game.scene.getPlayerPokemon()!; @@ -97,7 +97,7 @@ describe("Moves - Flower Shield", () => { it("does nothing if there are no Grass-type Pokemon on the field", async () => { game.override.enemySpecies(Species.MAGIKARP); - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const enemy = game.scene.getEnemyPokemon()!; const ally = game.scene.getPlayerPokemon()!; diff --git a/test/moves/fly.test.ts b/test/moves/fly.test.ts index 74f8bc4a770..81d04f53ff8 100644 --- a/test/moves/fly.test.ts +++ b/test/moves/fly.test.ts @@ -104,10 +104,10 @@ describe("Moves - Fly", () => { game.move.select(Moves.FLY); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); - await game.forceEnemyMove(Moves.GRAVITY); + await game.move.selectEnemyMove(Moves.GRAVITY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/moves/follow_me.test.ts b/test/moves/follow_me.test.ts index 68c4f111bb1..228a835b17d 100644 --- a/test/moves/follow_me.test.ts +++ b/test/moves/follow_me.test.ts @@ -43,8 +43,8 @@ describe("Moves - Follow Me", () => { game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY); // Force both enemies to target the player Pokemon that did not use Follow Me - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to(TurnEndPhase, false); @@ -61,8 +61,8 @@ describe("Moves - Follow Me", () => { game.move.select(Moves.FOLLOW_ME, 1); // Each player is targeted by an enemy - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to(TurnEndPhase, false); @@ -84,8 +84,8 @@ describe("Moves - Follow Me", () => { game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); // Target doesn't need to be specified if the move is self-targeted - await game.forceEnemyMove(Moves.FOLLOW_ME); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.FOLLOW_ME); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to(TurnEndPhase, false); @@ -104,8 +104,8 @@ describe("Moves - Follow Me", () => { game.move.select(Moves.SNIPE_SHOT, 0, BattlerIndex.ENEMY); game.move.select(Moves.SNIPE_SHOT, 1, BattlerIndex.ENEMY_2); - await game.forceEnemyMove(Moves.FOLLOW_ME); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.FOLLOW_ME); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to(TurnEndPhase, false); diff --git a/test/moves/foresight.test.ts b/test/moves/foresight.test.ts index d33a00bf136..82a39eceae5 100644 --- a/test/moves/foresight.test.ts +++ b/test/moves/foresight.test.ts @@ -31,7 +31,7 @@ describe("Moves - Foresight", () => { }); it("should allow Normal and Fighting moves to hit Ghost types", async () => { - await game.startBattle(); + await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; @@ -55,7 +55,7 @@ describe("Moves - Foresight", () => { it("should ignore target's evasiveness boosts", async () => { game.override.enemyMoveset([Moves.MINIMIZE]); - await game.startBattle(); + await game.classicMode.startBattle(); const pokemon = game.scene.getPlayerPokemon()!; vi.spyOn(pokemon, "getAccuracyMultiplier"); diff --git a/test/moves/fusion_bolt.test.ts b/test/moves/fusion_bolt.test.ts index 33498a857a9..5e515a3bc47 100644 --- a/test/moves/fusion_bolt.test.ts +++ b/test/moves/fusion_bolt.test.ts @@ -36,7 +36,7 @@ describe("Moves - Fusion Bolt", () => { }); it("should not make contact", async () => { - await game.startBattle([Species.ZEKROM]); + await game.classicMode.startBattle([Species.ZEKROM]); const partyMember = game.scene.getPlayerPokemon()!; const initialHp = partyMember.hp; diff --git a/test/moves/fusion_flare.test.ts b/test/moves/fusion_flare.test.ts index 61bb126a75a..b947b9e7f7e 100644 --- a/test/moves/fusion_flare.test.ts +++ b/test/moves/fusion_flare.test.ts @@ -36,7 +36,7 @@ describe("Moves - Fusion Flare", () => { }); it("should thaw freeze status condition", async () => { - await game.startBattle([Species.RESHIRAM]); + await game.classicMode.startBattle([Species.RESHIRAM]); const partyMember = game.scene.getPlayerPokemon()!; diff --git a/test/moves/fusion_flare_bolt.test.ts b/test/moves/fusion_flare_bolt.test.ts index da2d48a7cdb..1d248e09510 100644 --- a/test/moves/fusion_flare_bolt.test.ts +++ b/test/moves/fusion_flare_bolt.test.ts @@ -138,7 +138,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }, 20000); it("FUSION_FLARE should double power of subsequent FUSION_BOLT if moves are aimed at allies", async () => { - await game.startBattle([Species.ZEKROM, Species.RESHIRAM]); + await game.classicMode.startBattle([Species.ZEKROM, Species.RESHIRAM]); game.move.select(fusionBolt.id, 0, BattlerIndex.PLAYER_2); game.move.select(fusionFlare.id, 1, BattlerIndex.PLAYER); diff --git a/test/moves/growth.test.ts b/test/moves/growth.test.ts index 37cd84638ba..2e3ebfcde52 100644 --- a/test/moves/growth.test.ts +++ b/test/moves/growth.test.ts @@ -32,7 +32,7 @@ describe("Moves - Growth", () => { }); it("should raise SPATK stat stage by 1", async () => { - await game.startBattle([Species.MIGHTYENA]); + await game.classicMode.startBattle([Species.MIGHTYENA]); const playerPokemon = game.scene.getPlayerPokemon()!; diff --git a/test/moves/grudge.test.ts b/test/moves/grudge.test.ts index ecde5351d6d..48bb79c5f02 100644 --- a/test/moves/grudge.test.ts +++ b/test/moves/grudge.test.ts @@ -37,7 +37,7 @@ describe("Moves - Grudge", () => { const playerPokemon = game.scene.getPlayerPokemon(); game.move.select(Moves.EMBER); - await game.forceEnemyMove(Moves.GRUDGE); + await game.move.selectEnemyMove(Moves.GRUDGE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); @@ -51,12 +51,12 @@ describe("Moves - Grudge", () => { const playerPokemon = game.scene.getPlayerPokemon(); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.GRUDGE); + await game.move.selectEnemyMove(Moves.GRUDGE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); game.move.select(Moves.EMBER); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase"); @@ -78,7 +78,7 @@ describe("Moves - Grudge", () => { const playerPokemon = game.scene.getPlayerPokemon(); game.move.select(Moves.FALSE_SWIPE); - await game.forceEnemyMove(Moves.GRUDGE); + await game.move.selectEnemyMove(Moves.GRUDGE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/moves/guard_split.test.ts b/test/moves/guard_split.test.ts index d182e94b203..0f5c69c7d85 100644 --- a/test/moves/guard_split.test.ts +++ b/test/moves/guard_split.test.ts @@ -34,7 +34,7 @@ describe("Moves - Guard Split", () => { it("should average the user's DEF and SPDEF stats with those of the target", async () => { game.override.enemyMoveset(Moves.SPLASH); - await game.startBattle([Species.INDEEDEE]); + await game.classicMode.startBattle([Species.INDEEDEE]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -54,7 +54,7 @@ describe("Moves - Guard Split", () => { it("should be idempotent", async () => { game.override.enemyMoveset([Moves.GUARD_SPLIT]); - await game.startBattle([Species.INDEEDEE]); + await game.classicMode.startBattle([Species.INDEEDEE]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; diff --git a/test/moves/hard_press.test.ts b/test/moves/hard_press.test.ts index e1a01c0109d..12cf049a022 100644 --- a/test/moves/hard_press.test.ts +++ b/test/moves/hard_press.test.ts @@ -37,7 +37,7 @@ describe("Moves - Hard Press", () => { }); it("should return 100 power if target HP ratio is at 100%", async () => { - await game.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([Species.PIKACHU]); game.move.select(Moves.HARD_PRESS); await game.phaseInterceptor.to(MoveEffectPhase); @@ -46,7 +46,7 @@ describe("Moves - Hard Press", () => { }); it("should return 50 power if target HP ratio is at 50%", async () => { - await game.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([Species.PIKACHU]); const targetHpRatio = 0.5; const enemy = game.scene.getEnemyPokemon()!; @@ -59,7 +59,7 @@ describe("Moves - Hard Press", () => { }); it("should return 1 power if target HP ratio is at 1%", async () => { - await game.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([Species.PIKACHU]); const targetHpRatio = 0.01; const enemy = game.scene.getEnemyPokemon()!; @@ -72,7 +72,7 @@ describe("Moves - Hard Press", () => { }); it("should return 1 power if target HP ratio is less than 1%", async () => { - await game.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([Species.PIKACHU]); const targetHpRatio = 0.005; const enemy = game.scene.getEnemyPokemon()!; diff --git a/test/moves/haze.test.ts b/test/moves/haze.test.ts index 4ddb6d1c7c5..33d4fe2dfda 100644 --- a/test/moves/haze.test.ts +++ b/test/moves/haze.test.ts @@ -36,7 +36,7 @@ describe("Moves - Haze", () => { }); it("should reset all stat changes of all Pokemon on field", async () => { - await game.startBattle([Species.RATTATA]); + await game.classicMode.startBattle([Species.RATTATA]); const user = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; diff --git a/test/moves/hyper_beam.test.ts b/test/moves/hyper_beam.test.ts index e6b3955ef0d..a4cbf7d9245 100644 --- a/test/moves/hyper_beam.test.ts +++ b/test/moves/hyper_beam.test.ts @@ -38,7 +38,7 @@ describe("Moves - Hyper Beam", () => { }); it("should force the user to recharge on the next turn (and only that turn)", async () => { - await game.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([Species.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; diff --git a/test/moves/imprison.test.ts b/test/moves/imprison.test.ts index cefbaa52cad..dfa3b3ad757 100644 --- a/test/moves/imprison.test.ts +++ b/test/moves/imprison.test.ts @@ -36,7 +36,7 @@ describe("Moves - Imprison", () => { const playerPokemon = game.scene.getPlayerPokemon()!; game.move.select(Moves.TRANSFORM); - await game.forceEnemyMove(Moves.IMPRISON); + await game.move.selectEnemyMove(Moves.IMPRISON); await game.toNextTurn(); const playerMoveset = playerPokemon.getMoveset().map(x => x?.moveId); const enemyMoveset = game.scene @@ -51,7 +51,7 @@ describe("Moves - Imprison", () => { // Second turn, Imprison forces Struggle to occur game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); const move1 = playerPokemon.getLastXMoves(1)[0]!; expect(move1.move).toBe(Moves.STRUGGLE); @@ -63,7 +63,7 @@ describe("Moves - Imprison", () => { const playerPokemon1 = game.scene.getPlayerPokemon()!; game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.IMPRISON); + await game.move.selectEnemyMove(Moves.IMPRISON); await game.toNextTurn(); const imprisonArenaTag = game.scene.arena.getTag(ArenaTagType.IMPRISON); const imprisonBattlerTag1 = playerPokemon1.getTag(BattlerTagType.IMPRISON); @@ -72,7 +72,7 @@ describe("Moves - Imprison", () => { // Second turn, Imprison forces Struggle to occur game.doSwitchPokemon(1); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); const playerPokemon2 = game.scene.getPlayerPokemon()!; const imprisonBattlerTag2 = playerPokemon2.getTag(BattlerTagType.IMPRISON); @@ -87,12 +87,12 @@ describe("Moves - Imprison", () => { const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; game.move.select(Moves.IMPRISON); - await game.forceEnemyMove(Moves.GROWL); + await game.move.selectEnemyMove(Moves.GROWL); await game.toNextTurn(); expect(game.scene.arena.getTag(ArenaTagType.IMPRISON)).toBeDefined(); expect(enemyPokemon.getTag(BattlerTagType.IMPRISON)).toBeDefined(); game.doSwitchPokemon(1); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); expect(playerPokemon.isActive(true)).toBeFalsy(); expect(game.scene.arena.getTag(ArenaTagType.IMPRISON)).toBeUndefined(); diff --git a/test/moves/instruct.test.ts b/test/moves/instruct.test.ts index dd25db4ec90..719349760dc 100644 --- a/test/moves/instruct.test.ts +++ b/test/moves/instruct.test.ts @@ -48,7 +48,7 @@ describe("Moves - Instruct", () => { game.move.changeMoveset(enemy, Moves.SONIC_BOOM); game.move.select(Moves.INSTRUCT); - await game.forceEnemyMove(Moves.SONIC_BOOM); + await game.move.selectEnemyMove(Moves.SONIC_BOOM); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("MovePhase"); // enemy attacks us @@ -75,12 +75,12 @@ describe("Moves - Instruct", () => { game.move.changeMoveset(enemy, [Moves.SONIC_BOOM, Moves.SUBSTITUTE]); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SUBSTITUTE); + await game.move.selectEnemyMove(Moves.SUBSTITUTE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); game.move.select(Moves.INSTRUCT); - await game.forceEnemyMove(Moves.SONIC_BOOM); + await game.move.selectEnemyMove(Moves.SONIC_BOOM); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase", false); @@ -169,7 +169,7 @@ describe("Moves - Instruct", () => { moveUsed.ppUsed = moveUsed.getMovePp() - 1; game.move.select(Moves.INSTRUCT); - await game.forceEnemyMove(Moves.HIDDEN_POWER); + await game.move.selectEnemyMove(Moves.HIDDEN_POWER); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase", false); @@ -210,8 +210,8 @@ describe("Moves - Instruct", () => { game.move.select(Moves.SPLASH, BattlerIndex.PLAYER); game.move.select(Moves.FIERY_DANCE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); - await game.forceEnemyMove(Moves.INSTRUCT, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.INSTRUCT, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); @@ -248,7 +248,7 @@ describe("Moves - Instruct", () => { await game.classicMode.startBattle([Species.AMOONGUSS]); game.move.select(Moves.INSTRUCT); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("TurnEndPhase", false); @@ -265,7 +265,7 @@ describe("Moves - Instruct", () => { game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); game.move.select(Moves.DISABLE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); - await game.forceEnemyMove(Moves.SONIC_BOOM, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SONIC_BOOM, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("TurnEndPhase", false); @@ -311,7 +311,7 @@ describe("Moves - Instruct", () => { ]; game.move.select(Moves.INSTRUCT); - await game.forceEnemyMove(Moves.HYPER_BEAM); + await game.move.selectEnemyMove(Moves.HYPER_BEAM); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); @@ -326,23 +326,21 @@ describe("Moves - Instruct", () => { }); it("should not repeat move since forgotten by target", async () => { - game.override.enemyLevel(5).xpMultiplier(0).enemySpecies(Species.WURMPLE).enemyMoveset(Moves.INSTRUCT); + game.override.enemyMoveset(Moves.INSTRUCT); await game.classicMode.startBattle([Species.REGIELEKI]); const regieleki = game.scene.getPlayerPokemon()!; - // fill out moveset with random moves - game.move.changeMoveset(regieleki, [Moves.ELECTRO_DRIFT, Moves.SPLASH, Moves.ICE_BEAM, Moves.ANCIENT_POWER]); - - game.move.select(Moves.ELECTRO_DRIFT); - await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); - await game.phaseInterceptor.to("FaintPhase"); - await game.move.learnMove(Moves.ELECTROWEB); - await game.toNextWave(); + regieleki.pushMoveHistory({ + move: Moves.ELECTRO_DRIFT, + targets: [BattlerIndex.PLAYER], + result: MoveResult.SUCCESS, + virtual: false, + }); game.move.select(Moves.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); - await game.phaseInterceptor.to("TurnEndPhase", false); - expect(game.scene.getEnemyField()[0].getLastXMoves()[0].result).toBe(MoveResult.FAIL); + await game.toEndOfTurn(); + expect(game.field.getEnemyPokemon().getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should disregard priority of instructed move on use", async () => { @@ -360,7 +358,7 @@ describe("Moves - Instruct", () => { ]; game.move.select(Moves.INSTRUCT); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("TurnEndPhase", false); // lucario instructed enemy whirlwind at 0 priority to switch itself out @@ -379,8 +377,8 @@ describe("Moves - Instruct", () => { game.move.select(Moves.QUICK_ATTACK, BattlerIndex.PLAYER, BattlerIndex.ENEMY); // succeeds due to terrain no game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.SPLASH); - await game.forceEnemyMove(Moves.PSYCHIC_TERRAIN); + await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.PSYCHIC_TERRAIN); await game.toNextTurn(); game.move.select(Moves.SPLASH, BattlerIndex.PLAYER); @@ -404,8 +402,8 @@ describe("Moves - Instruct", () => { game.move.select(Moves.VINE_WHIP, BattlerIndex.PLAYER, BattlerIndex.ENEMY); game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.SPLASH); - await game.forceEnemyMove(Moves.PSYCHIC_TERRAIN); + await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.PSYCHIC_TERRAIN); await game.toNextTurn(); game.move.select(Moves.SPLASH, BattlerIndex.PLAYER); @@ -515,14 +513,14 @@ describe("Moves - Instruct", () => { game.move.select(Moves.SPLASH, BattlerIndex.PLAYER); game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); - await game.forceEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); @@ -531,8 +529,8 @@ describe("Moves - Instruct", () => { await game.toNextTurn(); game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); - await game.forceEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2]); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/moves/jaw_lock.test.ts b/test/moves/jaw_lock.test.ts index 71896dc3b62..85750b6efda 100644 --- a/test/moves/jaw_lock.test.ts +++ b/test/moves/jaw_lock.test.ts @@ -40,7 +40,7 @@ describe("Moves - Jaw Lock", () => { }); it("should trap the move's user and target", async () => { - await game.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([Species.BULBASAUR]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -61,7 +61,7 @@ describe("Moves - Jaw Lock", () => { it("should not trap either pokemon if the target faints", async () => { game.override.enemyLevel(1); - await game.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([Species.BULBASAUR]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -86,7 +86,7 @@ describe("Moves - Jaw Lock", () => { }); it("should only trap the user until the target faints", async () => { - await game.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([Species.BULBASAUR]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -109,7 +109,7 @@ describe("Moves - Jaw Lock", () => { it("should not trap other targets after the first target is trapped", async () => { game.override.battleStyle("double"); - await game.startBattle([Species.CHARMANDER, Species.BULBASAUR]); + await game.classicMode.startBattle([Species.CHARMANDER, Species.BULBASAUR]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); @@ -138,7 +138,7 @@ describe("Moves - Jaw Lock", () => { it("should not trap either pokemon if the target is protected", async () => { game.override.enemyMoveset([Moves.PROTECT]); - await game.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([Species.BULBASAUR]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; diff --git a/test/moves/last-resort.test.ts b/test/moves/last-resort.test.ts index a7b462f3ca4..65b50bc4e89 100644 --- a/test/moves/last-resort.test.ts +++ b/test/moves/last-resort.test.ts @@ -86,11 +86,11 @@ describe("Moves - Last Resort", () => { // use mirror move normally to trigger absorb virtually game.move.select(Moves.MIRROR_MOVE); - await game.forceEnemyMove(Moves.ABSORB); + await game.move.selectEnemyMove(Moves.ABSORB); await game.toNextTurn(); game.move.select(Moves.LAST_RESORT); - await game.forceEnemyMove(Moves.SWORDS_DANCE); // goes first to proc dancer ahead of time + await game.move.selectEnemyMove(Moves.SWORDS_DANCE); // goes first to proc dancer ahead of time await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); expectLastResortFail(); @@ -154,10 +154,10 @@ describe("Moves - Last Resort", () => { // ensure enemy last resort succeeds game.move.select(Moves.MIRROR_MOVE); - await game.forceEnemyMove(Moves.ABSORB); + await game.move.selectEnemyMove(Moves.ABSORB); await game.phaseInterceptor.to("TurnEndPhase"); game.move.select(Moves.MIRROR_MOVE); - await game.forceEnemyMove(Moves.LAST_RESORT); + await game.move.selectEnemyMove(Moves.LAST_RESORT); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/moves/lucky_chant.test.ts b/test/moves/lucky_chant.test.ts index e2a28a7bbe3..9fa6ff43eab 100644 --- a/test/moves/lucky_chant.test.ts +++ b/test/moves/lucky_chant.test.ts @@ -35,7 +35,7 @@ describe("Moves - Lucky Chant", () => { }); it("should prevent critical hits from moves", async () => { - await game.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([Species.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; @@ -56,7 +56,7 @@ describe("Moves - Lucky Chant", () => { it("should prevent critical hits against the user's ally", async () => { game.override.battleStyle("double"); - await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); const playerPokemon = game.scene.getPlayerField(); @@ -79,7 +79,7 @@ describe("Moves - Lucky Chant", () => { it("should prevent critical hits from field effects", async () => { game.override.enemyMoveset([Moves.TACKLE]); - await game.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([Species.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; diff --git a/test/moves/lunar_blessing.test.ts b/test/moves/lunar_blessing.test.ts index ee35107fccd..5021a47ff7f 100644 --- a/test/moves/lunar_blessing.test.ts +++ b/test/moves/lunar_blessing.test.ts @@ -33,7 +33,7 @@ describe("Moves - Lunar Blessing", () => { }); it("should restore 25% HP of the user and its ally", async () => { - await game.startBattle([Species.RATTATA, Species.RATTATA]); + await game.classicMode.startBattle([Species.RATTATA, Species.RATTATA]); const [leftPlayer, rightPlayer] = game.scene.getPlayerField(); vi.spyOn(leftPlayer, "getMaxHp").mockReturnValue(100); @@ -61,7 +61,7 @@ describe("Moves - Lunar Blessing", () => { it("should cure status effect of the user and its ally", async () => { game.override.statusEffect(StatusEffect.BURN); - await game.startBattle([Species.RATTATA, Species.RATTATA]); + await game.classicMode.startBattle([Species.RATTATA, Species.RATTATA]); const [leftPlayer, rightPlayer] = game.scene.getPlayerField(); vi.spyOn(leftPlayer, "resetStatus"); diff --git a/test/moves/magic_coat.test.ts b/test/moves/magic_coat.test.ts index 4e0bd7f0a98..ad0bd47d7cf 100644 --- a/test/moves/magic_coat.test.ts +++ b/test/moves/magic_coat.test.ts @@ -62,12 +62,12 @@ describe("Moves - Magic Coat", () => { // turn 1 game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.MAGIC_COAT); + await game.move.selectEnemyMove(Moves.MAGIC_COAT); await game.toNextTurn(); // turn 2 game.move.select(Moves.GROWL); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(-1); }); @@ -102,8 +102,8 @@ describe("Moves - Magic Coat", () => { game.move.select(Moves.GROWL, 0); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH); - await game.forceEnemyMove(Moves.MAGIC_COAT); + await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.MAGIC_COAT); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerField().every(p => p.getStatStage(Stat.ATK) === -1)).toBeTruthy(); @@ -129,8 +129,8 @@ describe("Moves - Magic Coat", () => { game.move.select(Moves.MAGIC_COAT, 0); game.move.select(Moves.GROWL, 1); - await game.forceEnemyMove(Moves.MAGIC_COAT); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.MAGIC_COAT); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyField()[0].getStatStage(Stat.ATK)).toBe(0); @@ -192,12 +192,12 @@ describe("Moves - Magic Coat", () => { // turn 1 game.move.select(Moves.GROWL); - await game.forceEnemyMove(Moves.MAGIC_COAT); + await game.move.selectEnemyMove(Moves.MAGIC_COAT); await game.toNextTurn(); // turn 2 game.move.select(Moves.ENCORE); - await game.forceEnemyMove(Moves.TACKLE); + await game.move.selectEnemyMove(Moves.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase"); expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(Moves.TACKLE); @@ -233,7 +233,7 @@ describe("Moves - Magic Coat", () => { vi.spyOn(stomping_tantrum, "calculateBattlePower"); game.move.select(Moves.SPORE); - await game.forceEnemyMove(Moves.CHARM); + await game.move.selectEnemyMove(Moves.CHARM); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.getLastXMoves(1)[0].result).toBe("success"); diff --git a/test/moves/magnet_rise.test.ts b/test/moves/magnet_rise.test.ts index 62ad0c88091..3f15a109f11 100644 --- a/test/moves/magnet_rise.test.ts +++ b/test/moves/magnet_rise.test.ts @@ -33,7 +33,7 @@ describe("Moves - Magnet Rise", () => { }); it("MAGNET RISE", async () => { - await game.startBattle(); + await game.classicMode.startBattle(); const startingHp = game.scene.getPlayerParty()[0].hp; game.move.select(moveToUse); @@ -44,7 +44,7 @@ describe("Moves - Magnet Rise", () => { }, 20000); it("MAGNET RISE - Gravity", async () => { - await game.startBattle(); + await game.classicMode.startBattle(); const startingHp = game.scene.getPlayerParty()[0].hp; game.move.select(moveToUse); diff --git a/test/moves/make_it_rain.test.ts b/test/moves/make_it_rain.test.ts index 4d94537bcec..b897304662d 100644 --- a/test/moves/make_it_rain.test.ts +++ b/test/moves/make_it_rain.test.ts @@ -34,7 +34,7 @@ describe("Moves - Make It Rain", () => { }); it("should only lower SPATK stat stage by 1 once in a double battle", async () => { - await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); const playerPokemon = game.scene.getPlayerPokemon()!; @@ -50,7 +50,7 @@ describe("Moves - Make It Rain", () => { game.override.enemyLevel(1); // ensures the enemy will faint game.override.battleStyle("single"); - await game.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([Species.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -66,7 +66,7 @@ describe("Moves - Make It Rain", () => { it("should reduce Sp. Atk. once after KOing two enemies", async () => { game.override.enemyLevel(1); // ensures the enemy will faint - await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyField(); @@ -81,7 +81,7 @@ describe("Moves - Make It Rain", () => { }); it("should lower SPATK stat stage by 1 if it only hits the second target", async () => { - await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); const playerPokemon = game.scene.getPlayerPokemon()!; diff --git a/test/moves/mat_block.test.ts b/test/moves/mat_block.test.ts index 9ed0f497af9..3e7958d665b 100644 --- a/test/moves/mat_block.test.ts +++ b/test/moves/mat_block.test.ts @@ -39,7 +39,7 @@ describe("Moves - Mat Block", () => { }); test("should protect the user and allies from attack moves", async () => { - await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); @@ -57,7 +57,7 @@ describe("Moves - Mat Block", () => { test("should not protect the user and allies from status moves", async () => { game.override.enemyMoveset([Moves.GROWL]); - await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); @@ -73,7 +73,7 @@ describe("Moves - Mat Block", () => { }); test("should fail when used after the first turn", async () => { - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); const leadPokemon = game.scene.getPlayerField(); diff --git a/test/moves/metal_burst.test.ts b/test/moves/metal_burst.test.ts index 7fa5434dc58..cadcbe07a0d 100644 --- a/test/moves/metal_burst.test.ts +++ b/test/moves/metal_burst.test.ts @@ -42,8 +42,8 @@ describe("Moves - Metal Burst", () => { game.move.select(Moves.METAL_BURST); game.move.select(Moves.FISSURE, 1, BattlerIndex.ENEMY); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2]); @@ -63,8 +63,8 @@ describe("Moves - Metal Burst", () => { game.move.select(Moves.METAL_BURST); game.move.select(Moves.PRECIPICE_BLADES, 1); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2]); diff --git a/test/moves/mirror_move.test.ts b/test/moves/mirror_move.test.ts index 438c594d839..6a73e3a1f05 100644 --- a/test/moves/mirror_move.test.ts +++ b/test/moves/mirror_move.test.ts @@ -40,8 +40,8 @@ describe("Moves - Mirror Move", () => { game.move.select(Moves.MIRROR_MOVE, 0, BattlerIndex.ENEMY); // target's last move is Tackle, enemy should receive damage from Mirror Move copying Tackle game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.GROWL, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.GROWL, BattlerIndex.PLAYER_2); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER]); await game.toNextTurn(); diff --git a/test/moves/multi_target.test.ts b/test/moves/multi_target.test.ts index ad47d540a14..af98c9a89f4 100644 --- a/test/moves/multi_target.test.ts +++ b/test/moves/multi_target.test.ts @@ -36,7 +36,7 @@ describe("Multi-target damage reduction", () => { }); it("should reduce d.gleam damage when multiple enemies but not tackle", async () => { - await game.startBattle([Species.MAGIKARP, Species.FEEBAS]); + await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); const [enemy1, enemy2] = game.scene.getEnemyField(); @@ -76,7 +76,7 @@ describe("Multi-target damage reduction", () => { }); it("should reduce earthquake when more than one pokemon other than user is not fainted", async () => { - await game.startBattle([Species.MAGIKARP, Species.FEEBAS]); + await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); const player2 = game.scene.getPlayerParty()[1]; const [enemy1, enemy2] = game.scene.getEnemyField(); diff --git a/test/moves/parting_shot.test.ts b/test/moves/parting_shot.test.ts index a65c1a5b3a5..26f8790d3b9 100644 --- a/test/moves/parting_shot.test.ts +++ b/test/moves/parting_shot.test.ts @@ -35,7 +35,7 @@ describe("Moves - Parting Shot", () => { test("Parting Shot when buffed by prankster should fail against dark types", async () => { game.override.enemySpecies(Species.POOCHYENA).ability(Abilities.PRANKSTER); - await game.startBattle([Species.MURKROW, Species.MEOWTH]); + await game.classicMode.startBattle([Species.MURKROW, Species.MEOWTH]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon).toBeDefined(); @@ -50,7 +50,7 @@ describe("Moves - Parting Shot", () => { test("Parting shot should fail against good as gold ability", async () => { game.override.enemySpecies(Species.GHOLDENGO).enemyAbility(Abilities.GOOD_AS_GOLD); - await game.startBattle([Species.MURKROW, Species.MEOWTH]); + await game.classicMode.startBattle([Species.MURKROW, Species.MEOWTH]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon).toBeDefined(); @@ -68,7 +68,13 @@ describe("Moves - Parting Shot", () => { "Parting shot should fail if target is -6/-6 de-buffed", async () => { game.override.moveset([Moves.PARTING_SHOT, Moves.MEMENTO, Moves.SPLASH]); - await game.startBattle([Species.MEOWTH, Species.MEOWTH, Species.MEOWTH, Species.MURKROW, Species.ABRA]); + await game.classicMode.startBattle([ + Species.MEOWTH, + Species.MEOWTH, + Species.MEOWTH, + Species.MURKROW, + Species.ABRA, + ]); // use Memento 3 times to debuff enemy game.move.select(Moves.MEMENTO); @@ -111,7 +117,7 @@ describe("Moves - Parting Shot", () => { "Parting shot shouldn't allow switch out when mist is active", async () => { game.override.enemySpecies(Species.ALTARIA).enemyAbility(Abilities.NONE).enemyMoveset([Moves.MIST]); - await game.startBattle([Species.SNORLAX, Species.MEOWTH]); + await game.classicMode.startBattle([Species.SNORLAX, Species.MEOWTH]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon).toBeDefined(); @@ -130,7 +136,7 @@ describe("Moves - Parting Shot", () => { "Parting shot shouldn't allow switch out against clear body ability", async () => { game.override.enemySpecies(Species.TENTACOOL).enemyAbility(Abilities.CLEAR_BODY); - await game.startBattle([Species.SNORLAX, Species.MEOWTH]); + await game.classicMode.startBattle([Species.SNORLAX, Species.MEOWTH]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon).toBeDefined(); @@ -148,7 +154,7 @@ describe("Moves - Parting Shot", () => { // TODO: fix this bug to pass the test! "Parting shot should de-buff and not fail if no party available to switch - party size 1", async () => { - await game.startBattle([Species.MURKROW]); + await game.classicMode.startBattle([Species.MURKROW]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon).toBeDefined(); @@ -166,7 +172,7 @@ describe("Moves - Parting Shot", () => { // TODO: fix this bug to pass the test! "Parting shot regularly not fail if no party available to switch - party fainted", async () => { - await game.startBattle([Species.MURKROW, Species.MEOWTH]); + await game.classicMode.startBattle([Species.MURKROW, Species.MEOWTH]); game.move.select(Moves.SPLASH); // intentionally kill party pokemon, switch to second slot (now 1 party mon is fainted) diff --git a/test/moves/plasma_fists.test.ts b/test/moves/plasma_fists.test.ts index b6a5ceaed68..0c3412d8e60 100644 --- a/test/moves/plasma_fists.test.ts +++ b/test/moves/plasma_fists.test.ts @@ -42,8 +42,8 @@ describe("Moves - Plasma Fists", () => { game.move.select(Moves.PLASMA_FISTS, 0, BattlerIndex.ENEMY); game.move.select(Moves.TACKLE, 1, BattlerIndex.ENEMY_2); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); diff --git a/test/moves/pledge_moves.test.ts b/test/moves/pledge_moves.test.ts index 9dbf2b4cb02..6c66c4bbe2d 100644 --- a/test/moves/pledge_moves.test.ts +++ b/test/moves/pledge_moves.test.ts @@ -256,8 +256,8 @@ describe("Moves - Pledge Moves", () => { game.move.select(Moves.FIRE_PLEDGE, 0, BattlerIndex.ENEMY); game.move.select(Moves.GRASS_PLEDGE, 1, BattlerIndex.ENEMY_2); - await game.forceEnemyMove(Moves.SPORE, BattlerIndex.PLAYER_2); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPORE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2]); @@ -290,8 +290,8 @@ describe("Moves - Pledge Moves", () => { game.move.select(Moves.WATER_PLEDGE, 0, BattlerIndex.ENEMY); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH); - await game.forceEnemyMove(Moves.FOLLOW_ME); + await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.FOLLOW_ME); await game.phaseInterceptor.to("BerryPhase", false); diff --git a/test/moves/powder.test.ts b/test/moves/powder.test.ts index c6114db3ff1..b65525109ad 100644 --- a/test/moves/powder.test.ts +++ b/test/moves/powder.test.ts @@ -233,8 +233,8 @@ describe("Moves - Powder", () => { game.move.select(Moves.POWDER, 0, BattlerIndex.ENEMY); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.GRASS_PLEDGE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.GRASS_PLEDGE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(BerryPhase, false); @@ -250,8 +250,8 @@ describe("Moves - Powder", () => { game.move.select(Moves.POWDER, 0, BattlerIndex.ENEMY); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.WATER_PLEDGE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.WATER_PLEDGE, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to(BerryPhase, false); @@ -267,8 +267,8 @@ describe("Moves - Powder", () => { game.move.select(Moves.POWDER, 0, BattlerIndex.ENEMY); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.WATER_PLEDGE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.WATER_PLEDGE, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/power_split.test.ts b/test/moves/power_split.test.ts index f15275fce9e..ca712f0a64e 100644 --- a/test/moves/power_split.test.ts +++ b/test/moves/power_split.test.ts @@ -34,7 +34,7 @@ describe("Moves - Power Split", () => { it("should average the user's ATK and SPATK stats with those of the target", async () => { game.override.enemyMoveset(Moves.SPLASH); - await game.startBattle([Species.INDEEDEE]); + await game.classicMode.startBattle([Species.INDEEDEE]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -54,7 +54,7 @@ describe("Moves - Power Split", () => { it("should be idempotent", async () => { game.override.enemyMoveset([Moves.POWER_SPLIT]); - await game.startBattle([Species.INDEEDEE]); + await game.classicMode.startBattle([Species.INDEEDEE]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; diff --git a/test/moves/purify.test.ts b/test/moves/purify.test.ts index 191539d8cec..0439ba39108 100644 --- a/test/moves/purify.test.ts +++ b/test/moves/purify.test.ts @@ -37,7 +37,7 @@ describe("Moves - Purify", () => { }); test("Purify heals opponent status effect and restores user hp", async () => { - await game.startBattle(); + await game.classicMode.startBattle(); const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; const playerPokemon: PlayerPokemon = game.scene.getPlayerPokemon()!; @@ -54,7 +54,7 @@ describe("Moves - Purify", () => { }); test("Purify does not heal if opponent doesnt have any status effect", async () => { - await game.startBattle(); + await game.classicMode.startBattle(); const playerPokemon: PlayerPokemon = game.scene.getPlayerPokemon()!; diff --git a/test/moves/quash.test.ts b/test/moves/quash.test.ts index 5bf8271320b..f242dafe365 100644 --- a/test/moves/quash.test.ts +++ b/test/moves/quash.test.ts @@ -39,8 +39,8 @@ describe("Moves - Quash", () => { game.move.select(Moves.QUASH, 0, BattlerIndex.PLAYER_2); game.move.select(Moves.SUNNY_DAY, 1); - await game.forceEnemyMove(Moves.SPLASH); - await game.forceEnemyMove(Moves.RAIN_DANCE); + await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.RAIN_DANCE); await game.phaseInterceptor.to("TurnEndPhase", false); // will be sunny if player_2 moved last because of quash, rainy otherwise @@ -67,8 +67,8 @@ describe("Moves - Quash", () => { game.move.select(Moves.RAIN_DANCE, 0); game.move.select(Moves.SUNNY_DAY, 1); - await game.forceEnemyMove(Moves.QUASH, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.QUASH, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.QUASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.QUASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("TurnEndPhase", false); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SUNNY); @@ -81,15 +81,15 @@ describe("Moves - Quash", () => { game.move.select(Moves.SPLASH, 0); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.TRICK_ROOM); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.TRICK_ROOM); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("TurnInitPhase"); // both users are quashed - accelgor should move last w/ TR so rain should be up at end of turn game.move.select(Moves.RAIN_DANCE, 0); game.move.select(Moves.SUNNY_DAY, 1); - await game.forceEnemyMove(Moves.QUASH, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.QUASH, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(Moves.QUASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.QUASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("TurnEndPhase", false); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.RAIN); diff --git a/test/moves/rage_fist.test.ts b/test/moves/rage_fist.test.ts index 0aabb717f1b..9e5810039a8 100644 --- a/test/moves/rage_fist.test.ts +++ b/test/moves/rage_fist.test.ts @@ -75,7 +75,7 @@ describe("Moves - Rage Fist", () => { await game.classicMode.startBattle([Species.REGIROCK]); game.move.select(Moves.SUBSTITUTE); - await game.forceEnemyMove(Moves.DOUBLE_KICK); + await game.move.selectEnemyMove(Moves.DOUBLE_KICK); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); @@ -84,12 +84,12 @@ describe("Moves - Rage Fist", () => { // remove substitute and get confused game.move.select(Moves.TIDY_UP); - await game.forceEnemyMove(Moves.CONFUSE_RAY); + await game.move.selectEnemyMove(Moves.CONFUSE_RAY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); game.move.select(Moves.RAGE_FIST); - await game.forceEnemyMove(Moves.CONFUSE_RAY); + await game.move.selectEnemyMove(Moves.CONFUSE_RAY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceConfusionActivation(true); await game.toNextTurn(); @@ -123,7 +123,7 @@ describe("Moves - Rage Fist", () => { // beat up a magikarp game.move.select(Moves.RAGE_FIST); - await game.forceEnemyMove(Moves.DOUBLE_KICK); + await game.move.selectEnemyMove(Moves.DOUBLE_KICK); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/moves/rage_powder.test.ts b/test/moves/rage_powder.test.ts index 284b558f842..206fd590896 100644 --- a/test/moves/rage_powder.test.ts +++ b/test/moves/rage_powder.test.ts @@ -38,8 +38,8 @@ describe("Moves - Rage Powder", () => { game.move.select(Moves.QUICK_ATTACK, 0, BattlerIndex.ENEMY); game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); - await game.forceEnemyMove(Moves.RAGE_POWDER); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.RAGE_POWDER); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("BerryPhase", false); @@ -61,8 +61,8 @@ describe("Moves - Rage Powder", () => { game.move.select(Moves.QUICK_ATTACK, 0, BattlerIndex.ENEMY); game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); - await game.forceEnemyMove(Moves.RAGE_POWDER); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.RAGE_POWDER); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("BerryPhase", false); diff --git a/test/moves/reflect_type.test.ts b/test/moves/reflect_type.test.ts index efd58bfeadf..63772aa746f 100644 --- a/test/moves/reflect_type.test.ts +++ b/test/moves/reflect_type.test.ts @@ -37,17 +37,17 @@ describe("Moves - Reflect Type", () => { const enemyPokemon = game.scene.getEnemyPokemon(); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.BURN_UP); + await game.move.selectEnemyMove(Moves.BURN_UP); await game.toNextTurn(); game.move.select(Moves.FORESTS_CURSE); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); expect(enemyPokemon?.getTypes().includes(PokemonType.UNKNOWN)).toBe(true); expect(enemyPokemon?.getTypes().includes(PokemonType.GRASS)).toBe(true); game.move.select(Moves.REFLECT_TYPE); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon?.getTypes()[0]).toBe(PokemonType.NORMAL); expect(playerPokemon?.getTypes().includes(PokemonType.GRASS)).toBe(true); diff --git a/test/moves/retaliate.test.ts b/test/moves/retaliate.test.ts index 81ea353a120..40f31635d9b 100644 --- a/test/moves/retaliate.test.ts +++ b/test/moves/retaliate.test.ts @@ -37,7 +37,7 @@ describe("Moves - Retaliate", () => { it("increases power if ally died previous turn", async () => { vi.spyOn(retaliate, "calculateBattlePower"); - await game.startBattle([Species.ABRA, Species.COBALION]); + await game.classicMode.startBattle([Species.ABRA, Species.COBALION]); game.move.select(Moves.RETALIATE); await game.phaseInterceptor.to("TurnEndPhase"); expect(retaliate.calculateBattlePower).toHaveLastReturnedWith(70); diff --git a/test/moves/revival_blessing.test.ts b/test/moves/revival_blessing.test.ts index b36cd43eb83..ded18e3ffb8 100644 --- a/test/moves/revival_blessing.test.ts +++ b/test/moves/revival_blessing.test.ts @@ -98,8 +98,8 @@ describe("Moves - Revival Blessing", () => { game.move.select(Moves.SPLASH); game.move.select(Moves.REVIVAL_BLESSING, 1); - await game.forceEnemyMove(Moves.FISSURE, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.FISSURE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2]); await game.phaseInterceptor.to("MoveEndPhase"); diff --git a/test/moves/rollout.test.ts b/test/moves/rollout.test.ts index dab9ef67596..dafa72dd5fa 100644 --- a/test/moves/rollout.test.ts +++ b/test/moves/rollout.test.ts @@ -42,7 +42,7 @@ describe("Moves - Rollout", () => { const turns = 6; const dmgHistory: number[] = []; - await game.startBattle(); + await game.classicMode.startBattle(); const playerPkm = game.scene.getPlayerParty()[0]; vi.spyOn(playerPkm, "stats", "get").mockReturnValue([500000, 1, 1, 1, 1, 1]); // HP, ATK, DEF, SPATK, SPDEF, SPD diff --git a/test/moves/round.test.ts b/test/moves/round.test.ts index 43e505705ae..ccdf4cbf089 100644 --- a/test/moves/round.test.ts +++ b/test/moves/round.test.ts @@ -45,8 +45,8 @@ describe("Moves - Round", () => { game.move.select(Moves.ROUND, 0, BattlerIndex.ENEMY); game.move.select(Moves.ROUND, 1, BattlerIndex.ENEMY_2); - await game.forceEnemyMove(Moves.ROUND, BattlerIndex.PLAYER); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.ROUND, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(Moves.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY]); diff --git a/test/moves/secret_power.test.ts b/test/moves/secret_power.test.ts index f6870c5ed1d..99945002b8d 100644 --- a/test/moves/secret_power.test.ts +++ b/test/moves/secret_power.test.ts @@ -49,13 +49,13 @@ describe("Moves - Secret Power", () => { // No Terrain + Biome.VOLCANO --> Burn game.move.select(Moves.SECRET_POWER); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyPokemon.status?.effect).toBe(StatusEffect.BURN); // Misty Terrain --> SpAtk -1 game.move.select(Moves.SECRET_POWER); - await game.forceEnemyMove(Moves.MISTY_TERRAIN); + await game.move.selectEnemyMove(Moves.MISTY_TERRAIN); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyPokemon.getStatStage(Stat.SPATK)).toBe(-1); }); diff --git a/test/moves/shell_trap.test.ts b/test/moves/shell_trap.test.ts index 313d02b4d73..2aa4712152d 100644 --- a/test/moves/shell_trap.test.ts +++ b/test/moves/shell_trap.test.ts @@ -38,7 +38,7 @@ describe("Moves - Shell Trap", () => { }); it("should activate after the user is hit by a physical attack", async () => { - await game.startBattle([Species.CHARIZARD, Species.TURTONATOR]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.TURTONATOR]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); @@ -61,7 +61,7 @@ describe("Moves - Shell Trap", () => { it("should fail if the user is only hit by special attacks", async () => { game.override.enemyMoveset([Moves.SWIFT]); - await game.startBattle([Species.CHARIZARD, Species.TURTONATOR]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.TURTONATOR]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); @@ -84,7 +84,7 @@ describe("Moves - Shell Trap", () => { it("should fail if the user isn't hit with any attack", async () => { game.override.enemyMoveset(Moves.SPLASH); - await game.startBattle([Species.CHARIZARD, Species.TURTONATOR]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.TURTONATOR]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); @@ -107,7 +107,7 @@ describe("Moves - Shell Trap", () => { it("should not activate from an ally's attack", async () => { game.override.enemyMoveset(Moves.SPLASH); - await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); @@ -131,7 +131,7 @@ describe("Moves - Shell Trap", () => { game.override.battleStyle("single"); vi.spyOn(allMoves[Moves.RAZOR_LEAF], "priority", "get").mockReturnValue(-4); - await game.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([Species.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; diff --git a/test/moves/speed_swap.test.ts b/test/moves/speed_swap.test.ts index 2b010885e34..f2be761b64e 100644 --- a/test/moves/speed_swap.test.ts +++ b/test/moves/speed_swap.test.ts @@ -34,7 +34,7 @@ describe("Moves - Speed Swap", () => { }); it("should swap the user's SPD and the target's SPD stats", async () => { - await game.startBattle([Species.INDEEDEE]); + await game.classicMode.startBattle([Species.INDEEDEE]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; diff --git a/test/moves/spikes.test.ts b/test/moves/spikes.test.ts index 3dfa398d7d6..f37b54a2904 100644 --- a/test/moves/spikes.test.ts +++ b/test/moves/spikes.test.ts @@ -32,7 +32,7 @@ describe("Moves - Spikes", () => { }); it("should not damage the team that set them", async () => { - await game.startBattle([Species.MIGHTYENA, Species.POOCHYENA]); + await game.classicMode.startBattle([Species.MIGHTYENA, Species.POOCHYENA]); game.move.select(Moves.SPIKES); await game.toNextTurn(); @@ -52,7 +52,7 @@ describe("Moves - Spikes", () => { it("should damage opposing pokemon that are forced to switch in", async () => { game.override.startingWave(5); - await game.startBattle([Species.MIGHTYENA, Species.POOCHYENA]); + await game.classicMode.startBattle([Species.MIGHTYENA, Species.POOCHYENA]); game.move.select(Moves.SPIKES); await game.toNextTurn(); @@ -66,7 +66,7 @@ describe("Moves - Spikes", () => { it("should damage opposing pokemon that choose to switch in", async () => { game.override.startingWave(5); - await game.startBattle([Species.MIGHTYENA, Species.POOCHYENA]); + await game.classicMode.startBattle([Species.MIGHTYENA, Species.POOCHYENA]); game.move.select(Moves.SPIKES); await game.toNextTurn(); diff --git a/test/moves/spit_up.test.ts b/test/moves/spit_up.test.ts index 7197d9b75c3..b11d74da64a 100644 --- a/test/moves/spit_up.test.ts +++ b/test/moves/spit_up.test.ts @@ -50,7 +50,7 @@ describe("Moves - Spit Up", () => { const stacksToSetup = 1; const expectedPower = 100; - await game.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([Species.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; pokemon.addTag(BattlerTagType.STOCKPILING); @@ -72,7 +72,7 @@ describe("Moves - Spit Up", () => { const stacksToSetup = 2; const expectedPower = 200; - await game.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([Species.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; pokemon.addTag(BattlerTagType.STOCKPILING); @@ -95,7 +95,7 @@ describe("Moves - Spit Up", () => { const stacksToSetup = 3; const expectedPower = 300; - await game.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([Species.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; pokemon.addTag(BattlerTagType.STOCKPILING); @@ -117,7 +117,7 @@ describe("Moves - Spit Up", () => { }); it("fails without stacks", async () => { - await game.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([Species.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; @@ -138,7 +138,7 @@ describe("Moves - Spit Up", () => { describe("restores stat boosts granted by stacks", () => { it("decreases stats based on stored values (both boosts equal)", async () => { - await game.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([Species.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; pokemon.addTag(BattlerTagType.STOCKPILING); @@ -169,7 +169,7 @@ describe("Moves - Spit Up", () => { }); it("decreases stats based on stored values (different boosts)", async () => { - await game.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([Species.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; pokemon.addTag(BattlerTagType.STOCKPILING); diff --git a/test/moves/spotlight.test.ts b/test/moves/spotlight.test.ts index 2c4f652e408..e617682bdd5 100644 --- a/test/moves/spotlight.test.ts +++ b/test/moves/spotlight.test.ts @@ -39,8 +39,8 @@ describe("Moves - Spotlight", () => { game.move.select(Moves.SPOTLIGHT, 0, BattlerIndex.ENEMY); game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); - await game.forceEnemyMove(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to(TurnEndPhase, false); @@ -56,8 +56,8 @@ describe("Moves - Spotlight", () => { game.move.select(Moves.SPOTLIGHT, 0, BattlerIndex.ENEMY); game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); - await game.forceEnemyMove(Moves.SPLASH); - await game.forceEnemyMove(Moves.FOLLOW_ME); + await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.FOLLOW_ME); await game.phaseInterceptor.to("BerryPhase", false); diff --git a/test/moves/stockpile.test.ts b/test/moves/stockpile.test.ts index 4b8f51c32b2..196a1d8ca9a 100644 --- a/test/moves/stockpile.test.ts +++ b/test/moves/stockpile.test.ts @@ -39,7 +39,7 @@ describe("Moves - Stockpile", () => { }); it("gains a stockpile stack and raises user's DEF and SPDEF stat stages by 1 on each use, fails at max stacks (3)", async () => { - await game.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([Species.ABOMASNOW]); const user = game.scene.getPlayerPokemon()!; @@ -83,7 +83,7 @@ describe("Moves - Stockpile", () => { }); it("gains a stockpile stack even if user's DEF and SPDEF stat stages are at +6", async () => { - await game.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([Species.ABOMASNOW]); const user = game.scene.getPlayerPokemon()!; diff --git a/test/moves/swallow.test.ts b/test/moves/swallow.test.ts index d548522068b..cff9daaf97a 100644 --- a/test/moves/swallow.test.ts +++ b/test/moves/swallow.test.ts @@ -43,7 +43,7 @@ describe("Moves - Swallow", () => { const stacksToSetup = 1; const expectedHeal = 25; - await game.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([Species.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; vi.spyOn(pokemon, "getMaxHp").mockReturnValue(100); @@ -70,7 +70,7 @@ describe("Moves - Swallow", () => { const stacksToSetup = 2; const expectedHeal = 50; - await game.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([Species.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; vi.spyOn(pokemon, "getMaxHp").mockReturnValue(100); @@ -98,7 +98,7 @@ describe("Moves - Swallow", () => { const stacksToSetup = 3; const expectedHeal = 100; - await game.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([Species.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; vi.spyOn(pokemon, "getMaxHp").mockReturnValue(100); @@ -125,7 +125,7 @@ describe("Moves - Swallow", () => { }); it("fails without stacks", async () => { - await game.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([Species.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; @@ -144,7 +144,7 @@ describe("Moves - Swallow", () => { describe("restores stat stage boosts granted by stacks", () => { it("decreases stats based on stored values (both boosts equal)", async () => { - await game.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([Species.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; pokemon.addTag(BattlerTagType.STOCKPILING); @@ -173,7 +173,7 @@ describe("Moves - Swallow", () => { }); it("lower stat stages based on stored values (different boosts)", async () => { - await game.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([Species.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; pokemon.addTag(BattlerTagType.STOCKPILING); diff --git a/test/moves/tackle.test.ts b/test/moves/tackle.test.ts index 162836cd181..5fd8ba589fc 100644 --- a/test/moves/tackle.test.ts +++ b/test/moves/tackle.test.ts @@ -36,7 +36,7 @@ describe("Moves - Tackle", () => { it("TACKLE against ghost", async () => { const moveToUse = Moves.TACKLE; game.override.enemySpecies(Species.GENGAR); - await game.startBattle([Species.MIGHTYENA]); + await game.classicMode.startBattle([Species.MIGHTYENA]); const hpOpponent = game.scene.currentBattle.enemyParty[0].hp; game.move.select(moveToUse); await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(TurnEndPhase); @@ -46,7 +46,7 @@ describe("Moves - Tackle", () => { it("TACKLE against not resistant", async () => { const moveToUse = Moves.TACKLE; - await game.startBattle([Species.MIGHTYENA]); + await game.classicMode.startBattle([Species.MIGHTYENA]); game.scene.currentBattle.enemyParty[0].stats[Stat.DEF] = 50; game.scene.getPlayerParty()[0].stats[Stat.ATK] = 50; diff --git a/test/moves/tail_whip.test.ts b/test/moves/tail_whip.test.ts index 2d3ade2691d..d15864dd671 100644 --- a/test/moves/tail_whip.test.ts +++ b/test/moves/tail_whip.test.ts @@ -36,7 +36,7 @@ describe("Moves - Tail whip", () => { it("should lower DEF stat stage by 1", async () => { const moveToUse = Moves.TAIL_WHIP; - await game.startBattle([Species.MIGHTYENA, Species.MIGHTYENA]); + await game.classicMode.startBattle([Species.MIGHTYENA, Species.MIGHTYENA]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); diff --git a/test/moves/taunt.test.ts b/test/moves/taunt.test.ts index e0bb13c61fb..bcb4789f888 100644 --- a/test/moves/taunt.test.ts +++ b/test/moves/taunt.test.ts @@ -37,7 +37,7 @@ describe("Moves - Taunt", () => { // First turn, Player Pokemon succeeds using Growl without Taunt game.move.select(Moves.GROWL); - await game.forceEnemyMove(Moves.TAUNT); + await game.move.selectEnemyMove(Moves.TAUNT); await game.toNextTurn(); const move1 = playerPokemon.getLastXMoves(1)[0]!; expect(move1.move).toBe(Moves.GROWL); @@ -46,7 +46,7 @@ describe("Moves - Taunt", () => { // Second turn, Taunt forces Struggle to occur game.move.select(Moves.GROWL); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); const move2 = playerPokemon.getLastXMoves(1)[0]!; expect(move2.move).toBe(Moves.STRUGGLE); diff --git a/test/moves/telekinesis.test.ts b/test/moves/telekinesis.test.ts index e889926b5c8..e5a21e915fa 100644 --- a/test/moves/telekinesis.test.ts +++ b/test/moves/telekinesis.test.ts @@ -106,7 +106,7 @@ describe("Moves - Telekinesis", () => { const enemyOpponent = game.scene.getEnemyPokemon()!; game.move.select(Moves.TELEKINESIS); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyOpponent.getTag(BattlerTagType.TELEKINESIS)).toBeDefined(); expect(enemyOpponent.getTag(BattlerTagType.FLOATING)).toBeDefined(); @@ -114,7 +114,7 @@ describe("Moves - Telekinesis", () => { await game.toNextTurn(); vi.spyOn(allMoves[Moves.MUD_SHOT], "accuracy", "get").mockReturnValue(0); game.move.select(Moves.MUD_SHOT); - await game.forceEnemyMove(Moves.INGRAIN); + await game.move.selectEnemyMove(Moves.INGRAIN); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyOpponent.getTag(BattlerTagType.TELEKINESIS)).toBeDefined(); expect(enemyOpponent.getTag(BattlerTagType.INGRAIN)).toBeDefined(); diff --git a/test/moves/thousand_arrows.test.ts b/test/moves/thousand_arrows.test.ts index 7259fda8560..39bc8617767 100644 --- a/test/moves/thousand_arrows.test.ts +++ b/test/moves/thousand_arrows.test.ts @@ -33,7 +33,7 @@ describe("Moves - Thousand Arrows", () => { }); it("move should hit and ground Flying-type targets", async () => { - await game.startBattle([Species.ILLUMISE]); + await game.classicMode.startBattle([Species.ILLUMISE]); const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -53,7 +53,7 @@ describe("Moves - Thousand Arrows", () => { game.override.enemySpecies(Species.SNORLAX); game.override.enemyAbility(Abilities.LEVITATE); - await game.startBattle([Species.ILLUMISE]); + await game.classicMode.startBattle([Species.ILLUMISE]); const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -72,7 +72,7 @@ describe("Moves - Thousand Arrows", () => { it("move should hit and ground targets under the effects of Magnet Rise", async () => { game.override.enemySpecies(Species.SNORLAX); - await game.startBattle([Species.ILLUMISE]); + await game.classicMode.startBattle([Species.ILLUMISE]); const enemyPokemon = game.scene.getEnemyPokemon()!; diff --git a/test/moves/thunder_wave.test.ts b/test/moves/thunder_wave.test.ts index abfb5828d3b..326d7ecbdc0 100644 --- a/test/moves/thunder_wave.test.ts +++ b/test/moves/thunder_wave.test.ts @@ -34,7 +34,7 @@ describe("Moves - Thunder Wave", () => { it("paralyzes non-statused Pokemon that are not Ground types", async () => { game.override.enemySpecies(Species.MAGIKARP); - await game.startBattle(); + await game.classicMode.startBattle(); const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; @@ -47,7 +47,7 @@ describe("Moves - Thunder Wave", () => { it("does not paralyze if the Pokemon is a Ground-type", async () => { game.override.enemySpecies(Species.DIGLETT); - await game.startBattle(); + await game.classicMode.startBattle(); const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; @@ -60,7 +60,7 @@ describe("Moves - Thunder Wave", () => { it("does not paralyze if the Pokemon already has a status effect", async () => { game.override.enemySpecies(Species.MAGIKARP).enemyStatusEffect(StatusEffect.BURN); - await game.startBattle(); + await game.classicMode.startBattle(); const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; @@ -73,7 +73,7 @@ describe("Moves - Thunder Wave", () => { it("affects Ground types if the user has Normalize", async () => { game.override.ability(Abilities.NORMALIZE).enemySpecies(Species.DIGLETT); - await game.startBattle(); + await game.classicMode.startBattle(); const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; @@ -86,7 +86,7 @@ describe("Moves - Thunder Wave", () => { it("does not affect Ghost types if the user has Normalize", async () => { game.override.ability(Abilities.NORMALIZE).enemySpecies(Species.HAUNTER); - await game.startBattle(); + await game.classicMode.startBattle(); const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; diff --git a/test/moves/torment.test.ts b/test/moves/torment.test.ts index d06837d2806..d11de46bf10 100644 --- a/test/moves/torment.test.ts +++ b/test/moves/torment.test.ts @@ -40,7 +40,7 @@ describe("Moves - Torment", () => { // First turn, Player Pokemon uses Tackle successfully game.move.select(Moves.TACKLE); - await game.forceEnemyMove(Moves.TORMENT); + await game.move.selectEnemyMove(Moves.TORMENT); await game.toNextTurn(); const move1 = playerPokemon.getLastXMoves(1)[0]!; expect(move1.move).toBe(Moves.TACKLE); @@ -49,14 +49,14 @@ describe("Moves - Torment", () => { // Second turn, Torment forces Struggle to occur game.move.select(Moves.TACKLE); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); const move2 = playerPokemon.getLastXMoves(1)[0]!; expect(move2.move).toBe(Moves.STRUGGLE); // Third turn, Tackle can be used. game.move.select(Moves.TACKLE); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); const move3 = playerPokemon.getLastXMoves(1)[0]!; expect(move3.move).toBe(Moves.TACKLE); diff --git a/test/moves/whirlwind.test.ts b/test/moves/whirlwind.test.ts index 67ffb77612c..3558f968c66 100644 --- a/test/moves/whirlwind.test.ts +++ b/test/moves/whirlwind.test.ts @@ -51,7 +51,7 @@ describe("Moves - Whirlwind", () => { const staraptor = game.scene.getPlayerPokemon()!; game.move.select(move); - await game.forceEnemyMove(Moves.WHIRLWIND); + await game.move.selectEnemyMove(Moves.WHIRLWIND); await game.phaseInterceptor.to("BerryPhase", false); @@ -69,7 +69,7 @@ describe("Moves - Whirlwind", () => { return min; }); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.WHIRLWIND); + await game.move.selectEnemyMove(Moves.WHIRLWIND); await game.toNextTurn(); expect(bulbasaur.isOnField()).toBe(false); @@ -81,7 +81,7 @@ describe("Moves - Whirlwind", () => { return min + 1; }); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.WHIRLWIND); + await game.move.selectEnemyMove(Moves.WHIRLWIND); await game.toNextTurn(); expect(bulbasaur.isOnField()).toBe(false); @@ -101,7 +101,7 @@ describe("Moves - Whirlwind", () => { return min; }); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.WHIRLWIND); + await game.move.selectEnemyMove(Moves.WHIRLWIND); await game.toNextTurn(); expect(lapras.isOnField()).toBe(false); @@ -120,7 +120,7 @@ describe("Moves - Whirlwind", () => { eevee.status = new Status(StatusEffect.FAINT); expect(eevee.isFainted()).toBe(true); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); // Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted @@ -128,7 +128,7 @@ describe("Moves - Whirlwind", () => { return min; }); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.WHIRLWIND); + await game.move.selectEnemyMove(Moves.WHIRLWIND); await game.toNextTurn(); expect(lapras.isOnField()).toBe(false); @@ -147,7 +147,7 @@ describe("Moves - Whirlwind", () => { eevee.status = new Status(StatusEffect.FAINT); expect(eevee.isFainted()).toBe(true); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); // Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted @@ -155,7 +155,7 @@ describe("Moves - Whirlwind", () => { return min; }); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.WHIRLWIND); + await game.move.selectEnemyMove(Moves.WHIRLWIND); await game.toNextTurn(); expect(lapras.isOnField()).toBe(true); @@ -184,7 +184,7 @@ describe("Moves - Whirlwind", () => { // Player uses Whirlwind; opponent uses Splash game.move.select(Moves.WHIRLWIND); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); // Verify that the failure message is displayed for Whirlwind @@ -214,8 +214,8 @@ describe("Moves - Whirlwind", () => { game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH); - await game.forceEnemyMove(Moves.MEMENTO); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.MEMENTO); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); // Get the enemy pokemon id so we can check if is the same after switch. @@ -225,8 +225,8 @@ describe("Moves - Whirlwind", () => { game.move.select(Moves.WHIRLWIND, 0, BattlerIndex.ENEMY); game.move.select(Moves.SPLASH, 1); - await game.forceEnemyMove(Moves.SPLASH); - await game.forceEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.SPLASH); await game.toNextTurn(); diff --git a/test/moves/wide_guard.test.ts b/test/moves/wide_guard.test.ts index 85ebad806d7..08357476e5e 100644 --- a/test/moves/wide_guard.test.ts +++ b/test/moves/wide_guard.test.ts @@ -38,7 +38,7 @@ describe("Moves - Wide Guard", () => { }); test("should protect the user and allies from multi-target attack moves", async () => { - await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); @@ -56,7 +56,7 @@ describe("Moves - Wide Guard", () => { test("should protect the user and allies from multi-target status moves", async () => { game.override.enemyMoveset([Moves.GROWL]); - await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); @@ -74,7 +74,7 @@ describe("Moves - Wide Guard", () => { test("should not protect the user and allies from single-target moves", async () => { game.override.enemyMoveset([Moves.TACKLE]); - await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); @@ -92,7 +92,7 @@ describe("Moves - Wide Guard", () => { test("should protect the user from its ally's multi-target move", async () => { game.override.enemyMoveset([Moves.SPLASH]); - await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); diff --git a/test/phases/learn-move-phase.test.ts b/test/phases/learn-move-phase.test.ts index 019b833d386..b8b718a9669 100644 --- a/test/phases/learn-move-phase.test.ts +++ b/test/phases/learn-move-phase.test.ts @@ -56,9 +56,7 @@ describe("Learn Move Phase", () => { game.scene.ui.processInput(Button.ACTION); }); game.onNextPrompt("LearnMovePhase", UiMode.SUMMARY, () => { - for (let x = 0; x < moveSlotNum; x++) { - game.scene.ui.processInput(Button.DOWN); - } + game.scene.ui.setCursor(moveSlotNum); game.scene.ui.processInput(Button.ACTION); }); await game.phaseInterceptor.to(LearnMovePhase); @@ -88,9 +86,7 @@ describe("Learn Move Phase", () => { game.scene.ui.processInput(Button.ACTION); }); game.onNextPrompt("LearnMovePhase", UiMode.SUMMARY, () => { - for (let x = 0; x < 4; x++) { - game.scene.ui.processInput(Button.DOWN); // moves down 4 times to the 5th move slot - } + game.scene.ui.setCursor(4); game.scene.ui.processInput(Button.ACTION); }); game.onNextPrompt("LearnMovePhase", UiMode.CONFIRM, () => { @@ -102,64 +98,4 @@ describe("Learn Move Phase", () => { expect(bulbasaur.level).toBeGreaterThanOrEqual(levelReq); expect(bulbasaur.getMoveset().map(m => m?.moveId)).toEqual(prevMoveset); }); - - it("macro should add moves in free slots normally", async () => { - await game.classicMode.startBattle([Species.BULBASAUR]); - const bulbasaur = game.scene.getPlayerPokemon()!; - - game.move.changeMoveset(bulbasaur, [Moves.SPLASH, Moves.ABSORB, Moves.ACID]); - game.move.select(Moves.SPLASH); - await game.move.learnMove(Moves.SACRED_FIRE, 0, 1); - expect(bulbasaur.getMoveset().map(m => m?.moveId)).toEqual([ - Moves.SPLASH, - Moves.ABSORB, - Moves.ACID, - Moves.SACRED_FIRE, - ]); - }); - - it("macro should replace moves", async () => { - await game.classicMode.startBattle([Species.BULBASAUR]); - const bulbasaur = game.scene.getPlayerPokemon()!; - - game.move.changeMoveset(bulbasaur, [Moves.SPLASH, Moves.ABSORB, Moves.ACID, Moves.VINE_WHIP]); - game.move.select(Moves.SPLASH); - await game.move.learnMove(Moves.SACRED_FIRE, 0, 1); - expect(bulbasaur.getMoveset().map(m => m?.moveId)).toEqual([ - Moves.SPLASH, - Moves.SACRED_FIRE, - Moves.ACID, - Moves.VINE_WHIP, - ]); - }); - - it("macro should allow for cancelling move learning", async () => { - await game.classicMode.startBattle([Species.BULBASAUR]); - const bulbasaur = game.scene.getPlayerPokemon()!; - - game.move.changeMoveset(bulbasaur, [Moves.SPLASH, Moves.ABSORB, Moves.ACID, Moves.VINE_WHIP]); - game.move.select(Moves.SPLASH); - await game.move.learnMove(Moves.SACRED_FIRE, 0, 4); - expect(bulbasaur.getMoveset().map(m => m?.moveId)).toEqual([ - Moves.SPLASH, - Moves.ABSORB, - Moves.ACID, - Moves.VINE_WHIP, - ]); - }); - - it("macro works on off-field party members", async () => { - await game.classicMode.startBattle([Species.BULBASAUR, Species.SQUIRTLE]); - const squirtle = game.scene.getPlayerParty()[1]!; - - game.move.changeMoveset(squirtle, [Moves.SPLASH, Moves.WATER_GUN, Moves.FREEZE_DRY, Moves.GROWL]); - game.move.select(Moves.TACKLE); - await game.move.learnMove(Moves.SHELL_SMASH, 1, 0); - expect(squirtle.getMoveset().map(m => m?.moveId)).toEqual([ - Moves.SHELL_SMASH, - Moves.WATER_GUN, - Moves.FREEZE_DRY, - Moves.GROWL, - ]); - }); }); diff --git a/test/testUtils/gameManager.ts b/test/testUtils/gameManager.ts index 07cea3b1328..39b6000e308 100644 --- a/test/testUtils/gameManager.ts +++ b/test/testUtils/gameManager.ts @@ -1,7 +1,6 @@ import { updateUserInfo } from "#app/account"; import { BattlerIndex } from "#app/battle"; import BattleScene from "#app/battle-scene"; -import { getMoveTargets } from "#app/data/moves/move"; import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import Trainer from "#app/field/trainer"; import { GameModes, getGameMode } from "#app/game-mode"; @@ -11,7 +10,6 @@ import overrides from "#app/overrides"; import { CheckSwitchPhase } from "#app/phases/check-switch-phase"; import { CommandPhase } from "#app/phases/command-phase"; import { EncounterPhase } from "#app/phases/encounter-phase"; -import { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; import { FaintPhase } from "#app/phases/faint-phase"; import { LoginPhase } from "#app/phases/login-phase"; import { MovePhase } from "#app/phases/move-phase"; @@ -31,11 +29,9 @@ import type PartyUiHandler from "#app/ui/party-ui-handler"; import type StarterSelectUiHandler from "#app/ui/starter-select-ui-handler"; import type TargetSelectUiHandler from "#app/ui/target-select-ui-handler"; import { isNullOrUndefined } from "#app/utils/common"; -import { BattleStyle } from "#enums/battle-style"; import { Button } from "#enums/buttons"; import { ExpGainsSpeed } from "#enums/exp-gains-speed"; import { ExpNotification } from "#enums/exp-notification"; -import type { Moves } from "#enums/moves"; import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PlayerGender } from "#enums/player-gender"; import type { Species } from "#enums/species"; @@ -274,42 +270,6 @@ export default class GameManager { } } - /** - * @deprecated Use `game.classicMode.startBattle()` or `game.dailyMode.startBattle()` instead - * - * Transitions to the start of a battle. - * @param species - Optional array of species to start the battle with. - * @returns A promise that resolves when the battle is started. - */ - async startBattle(species?: Species[]) { - await this.classicMode.runToSummon(species); - - if (this.scene.battleStyle === BattleStyle.SWITCH) { - this.onNextPrompt( - "CheckSwitchPhase", - UiMode.CONFIRM, - () => { - this.setMode(UiMode.MESSAGE); - this.endPhase(); - }, - () => this.isCurrentPhase(CommandPhase) || this.isCurrentPhase(TurnInitPhase), - ); - - this.onNextPrompt( - "CheckSwitchPhase", - UiMode.CONFIRM, - () => { - this.setMode(UiMode.MESSAGE); - this.endPhase(); - }, - () => this.isCurrentPhase(CommandPhase) || this.isCurrentPhase(TurnInitPhase), - ); - } - - await this.phaseInterceptor.to(CommandPhase); - console.log("==================[New Turn]=================="); - } - /** * Emulate a player's target selection after a move is chosen, usually called automatically by {@linkcode MoveHelper.select}. * Will trigger during the next {@linkcode SelectTargetPhase} @@ -380,36 +340,6 @@ export default class GameManager { ); } - /** - * Forces the next enemy selecting a move to use the given move in its moveset against the - * given target (if applicable). - * @param moveId - The {@linkcode Moves | move} the enemy will use - * @param target - The {@linkcode BattlerIndex} of the target against which the enemy will use the given move; - * will use normal target selection priorities if omitted. - * @deprecated Use {@linkcode MoveHelper.forceEnemyMove} or {@linkcode MoveHelper.selectEnemyMove} - */ - async forceEnemyMove(moveId: Moves, target?: BattlerIndex) { - // Wait for the next EnemyCommandPhase to start - await this.phaseInterceptor.to(EnemyCommandPhase, false); - const enemy = this.scene.getEnemyField()[(this.scene.getCurrentPhase() as EnemyCommandPhase).getFieldIndex()]; - const legalTargets = getMoveTargets(enemy, moveId); - - vi.spyOn(enemy, "getNextMove").mockReturnValueOnce({ - move: moveId, - targets: - target !== undefined && !legalTargets.multiple && legalTargets.targets.includes(target) - ? [target] - : enemy.getNextTargets(moveId), - }); - - /** - * Run the EnemyCommandPhase to completion. - * This allows this function to be called consecutively to - * force a move for each enemy in a double battle. - */ - await this.phaseInterceptor.to(EnemyCommandPhase); - } - forceEnemyToSwitch() { const originalMatchupScore = Trainer.prototype.getPartyMemberMatchupScores; Trainer.prototype.getPartyMemberMatchupScores = () => { diff --git a/test/testUtils/helpers/moveHelper.ts b/test/testUtils/helpers/moveHelper.ts index ab10486867d..b3cdffeb636 100644 --- a/test/testUtils/helpers/moveHelper.ts +++ b/test/testUtils/helpers/moveHelper.ts @@ -1,12 +1,10 @@ import type { BattlerIndex } from "#app/battle"; import { getMoveTargets } from "#app/data/moves/move"; -import { Button } from "#app/enums/buttons"; import type Pokemon from "#app/field/pokemon"; import { PokemonMove } from "#app/field/pokemon"; import Overrides from "#app/overrides"; import type { CommandPhase } from "#app/phases/command-phase"; import type { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; -import { LearnMovePhase } from "#app/phases/learn-move-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Command } from "#app/ui/command-ui-handler"; import { Moves } from "#enums/moves"; @@ -233,39 +231,4 @@ export class MoveHelper extends GameManagerHelper { */ await this.game.phaseInterceptor.to("EnemyCommandPhase"); } - - /** - * Simulates learning a move for a player pokemon. - * @param move The {@linkcode Moves} being learnt - * @param partyIndex The party position of the {@linkcode PlayerPokemon} learning the move (defaults to 0) - * @param moveSlotIndex The INDEX (0-4) of the move slot to replace if existent move slots are full; - * defaults to 0 (first slot) and 4 aborts the procedure - * @returns a promise that resolves once the move has been successfully learnt - */ - public async learnMove(move: Moves | number, partyIndex = 0, moveSlotIndex = 0) { - return new Promise(async (resolve, reject) => { - this.game.scene.pushPhase(new LearnMovePhase(partyIndex, move)); - - // if slots are full, queue up inputs to replace existing moves - if (this.game.scene.getPlayerParty()[partyIndex].moveset.filter(m => m).length === 4) { - this.game.onNextPrompt("LearnMovePhase", UiMode.CONFIRM, () => { - this.game.scene.ui.processInput(Button.ACTION); // "Should a move be forgotten and replaced with XXX?" - }); - this.game.onNextPrompt("LearnMovePhase", UiMode.SUMMARY, () => { - for (let x = 0; x < (moveSlotIndex ?? 0); x++) { - this.game.scene.ui.processInput(Button.DOWN); // Scrolling in summary pane to move position - } - this.game.scene.ui.processInput(Button.ACTION); - if (moveSlotIndex === 4) { - this.game.onNextPrompt("LearnMovePhase", UiMode.CONFIRM, () => { - this.game.scene.ui.processInput(Button.ACTION); // "Give up on learning XXX?" - }); - } - }); - } - - await this.game.phaseInterceptor.to(LearnMovePhase).catch(e => reject(e)); - resolve(); - }); - } } diff --git a/test/ui/type-hints.test.ts b/test/ui/type-hints.test.ts index 2051af76754..b32f5ed9b88 100644 --- a/test/ui/type-hints.test.ts +++ b/test/ui/type-hints.test.ts @@ -99,8 +99,8 @@ describe("UI - Type Hints", () => { // Use soak to change type of remaining abra to water game.move.select(Moves.SOAK, 1); - await game.forceEnemyMove(Moves.SPLASH); - await game.forceEnemyMove(Moves.TELEPORT); + await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(Moves.TELEPORT); await game.toNextTurn(); game.onNextPrompt("CommandPhase", UiMode.COMMAND, () => { From ccd9480240ea26285683fb997fcb1af67e3d4a9b Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Sat, 31 May 2025 01:54:17 +0200 Subject: [PATCH 31/71] [Localization] Secondary pending languages inclusion (#5903) * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Update mysterious-chest-dialogue.json * Update mysterious-chest-dialogue.json * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Update i18n.ts * Update settings.ts * Update settings-display-ui-handler.ts * Update starter-select-ui-handler.ts * Update i18n.ts * Update i18n.ts * Update settings.ts * Update settings-display-ui-handler.ts * Update i18n.ts * Update starter-select-ui-handler.ts * Update utils.ts * Update utils.ts * Add files via upload * Rename statuses_dk.json to statuses_da.json * Update statuses_da.json * Update and rename types_dk.json to types_da.json * Rename statuses_dk.png to statuses_da.png * Rename types_dk.png to types_da.png * Delete src/locales/dk directory * Add files via upload * Apply suggestions from code review * Delete src/locales/da directory * Delete src/locales/tr directory * Update i18n.ts * Update i18n.ts * Update utils.ts * Main -> Beta (1.1.6) (#4751) * Comment out startGame call on manifest fetch failure * [Hotfix] Fix status damage triggering before berry usage (#4732) * [Hotfix] Fix Eternatus egg tier (#4734) * [Hotfix] Fix manifest getting loaded before the game is initialized (#4739) * fix locales path for offline builds (#4739) * [Sprite] Hotfix cut off Binacle sprite (#4741) * [Sprite][hotfix] Fixed cropping on 658 static greninja and ash greninja (#4743) * [Sprite][hotfix] Fixed cropping on static greninja and ash greninja * [Hotfix] Fix crash when Mist would block a stat drop (#4746) --------- Co-authored-by: Frederico Santos Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com> Co-authored-by: chaosgrimmon <31082757+chaosgrimmon@users.noreply.github.com> Co-authored-by: pom-eranian * Update settings-display-ui-handler.ts * Delete src/utils.ts * Update common.ts * Delete src/utils.ts * Update common.ts * Romanian workspace (#25) * Russian workspace (#26) * Update settings-display-ui-handler.ts * Update settings-display-ui-handler.ts * Update settings.ts * Update settings-display-ui-handler.ts * Update i18n.ts * Update settings.ts * Update settings-display-ui-handler.ts * Update common.ts * Update and rename statuses_ca-ES.json to statuses_ca.json * Update and rename types_ca-ES.json to types_ca.json * Add files via upload * Delete public/images/statuses_ca-ES.png * Delete public/images/types_ca-ES.png * Update locales submodule --------- Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> Co-authored-by: Frederico Santos Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com> Co-authored-by: chaosgrimmon <31082757+chaosgrimmon@users.noreply.github.com> Co-authored-by: pom-eranian Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- .../{statuses_ca-ES.json => statuses_ca.json} | 2 +- .../{statuses_ca-ES.png => statuses_ca.png} | Bin public/images/statuses_da.json | 188 ++++++++ public/images/statuses_da.png | Bin 0 -> 2355 bytes public/images/statuses_ro.json | 188 ++++++++ public/images/statuses_ro.png | Bin 0 -> 2111 bytes public/images/statuses_ru.json | 188 ++++++++ public/images/statuses_ru.png | Bin 0 -> 2091 bytes public/images/statuses_tr.json | 188 ++++++++ public/images/statuses_tr.png | Bin 0 -> 441 bytes .../{types_ca-ES.json => types_ca.json} | 2 +- .../images/{types_ca-ES.png => types_ca.png} | Bin public/images/types_da.json | 440 ++++++++++++++++++ public/images/types_da.png | Bin 0 -> 6247 bytes public/images/types_ro.json | 440 ++++++++++++++++++ public/images/types_ro.png | Bin 0 -> 6536 bytes public/images/types_ru.json | 440 ++++++++++++++++++ public/images/types_ru.png | Bin 0 -> 7570 bytes public/images/types_tr.json | 440 ++++++++++++++++++ public/images/types_tr.png | Bin 0 -> 4467 bytes public/locales | 2 +- src/plugins/i18n.ts | 6 +- src/system/settings/settings.ts | 44 +- .../settings/settings-display-ui-handler.ts | 64 ++- src/ui/starter-select-ui-handler.ts | 18 + src/utils/common.ts | 6 +- 26 files changed, 2615 insertions(+), 41 deletions(-) rename public/images/{statuses_ca-ES.json => statuses_ca.json} (98%) rename public/images/{statuses_ca-ES.png => statuses_ca.png} (100%) create mode 100644 public/images/statuses_da.json create mode 100644 public/images/statuses_da.png create mode 100644 public/images/statuses_ro.json create mode 100644 public/images/statuses_ro.png create mode 100644 public/images/statuses_ru.json create mode 100644 public/images/statuses_ru.png create mode 100644 public/images/statuses_tr.json create mode 100644 public/images/statuses_tr.png rename public/images/{types_ca-ES.json => types_ca.json} (99%) rename public/images/{types_ca-ES.png => types_ca.png} (100%) create mode 100644 public/images/types_da.json create mode 100644 public/images/types_da.png create mode 100644 public/images/types_ro.json create mode 100644 public/images/types_ro.png create mode 100644 public/images/types_ru.json create mode 100644 public/images/types_ru.png create mode 100644 public/images/types_tr.json create mode 100644 public/images/types_tr.png diff --git a/public/images/statuses_ca-ES.json b/public/images/statuses_ca.json similarity index 98% rename from public/images/statuses_ca-ES.json rename to public/images/statuses_ca.json index be1b78e0e41..6ff0f74a73b 100644 --- a/public/images/statuses_ca-ES.json +++ b/public/images/statuses_ca.json @@ -1,7 +1,7 @@ { "textures": [ { - "image": "statuses_ca_ES.png", + "image": "statuses_ca.png", "format": "RGBA8888", "size": { "w": 22, diff --git a/public/images/statuses_ca-ES.png b/public/images/statuses_ca.png similarity index 100% rename from public/images/statuses_ca-ES.png rename to public/images/statuses_ca.png diff --git a/public/images/statuses_da.json b/public/images/statuses_da.json new file mode 100644 index 00000000000..b9bf56324de --- /dev/null +++ b/public/images/statuses_da.json @@ -0,0 +1,188 @@ +{ + "textures": [ + { + "image": "statuses_da.png", + "format": "RGBA8888", + "size": { + "w": 22, + "h": 64 + }, + "scale": 1, + "frames": [ + { + "filename": "pokerus", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 22, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 22, + "h": 8 + }, + "frame": { + "x": 0, + "y": 0, + "w": 22, + "h": 8 + } + }, + { + "filename": "burn", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 8, + "w": 20, + "h": 8 + } + }, + { + "filename": "faint", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 16, + "w": 20, + "h": 8 + } + }, + { + "filename": "freeze", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 24, + "w": 20, + "h": 8 + } + }, + { + "filename": "paralysis", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 32, + "w": 20, + "h": 8 + } + }, + { + "filename": "poison", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 40, + "w": 20, + "h": 8 + } + }, + { + "filename": "sleep", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 48, + "w": 20, + "h": 8 + } + }, + { + "filename": "toxic", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 56, + "w": 20, + "h": 8 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:37686e85605d17b806f22d43081c1139:70535ffee63ba61b3397d8470c2c8982:e6649238c018d3630e55681417c698ca$" + } +} diff --git a/public/images/statuses_da.png b/public/images/statuses_da.png new file mode 100644 index 0000000000000000000000000000000000000000..02780bddd98699e74c276fb44903db9426131710 GIT binary patch literal 2355 zcmbVO4Nwzj8eULZOG}jzY)5HbR-{ze>~07NSq&5uEEEHpq=*MrH@jcRmLwap3kg5Q z!z$L=TA|QVs)82g^!%f>)+?kvn7KLTwEk7mwos-WwfIx82UW)Qyt^;_WNJs--tFw} z_wDZUJ@51WeDCb$W!cY$h0YE|5F{)!LuY{FEO@p;7xf_o_;CK3U(R831%Sk*qsoKAd6BxPKGT45^4s8yhDTC==dv!@|*@+ zk)$W}PA#zV8RafuEYCKvYINejpfwj~ zp$)nv6Sm-!2D3_%lO_na+bwe^$^=&-L8;Yhf|L_-ISvuHSmuxz5AG1>O)}_!$hvr^ z#0w78&&ZgC5=nzWrQ$D1zAX-Iq?{(naj0J4cuU#6pmG&Wk#|91!ElVk{3e)VX^Y^pGtgb$&J+T|=_tg|KoDuI zU=v)>FjSW~rb4f$GaaJDI9QOW(_qkJ8P9XHQlYS@fgIq;W>$@Ji3$=oTQ~|=vPwB4 zXOmz#GL!3d0$bwG>*RV4uBSLEnN`9fGbgJ_oM9CTJef_RaF#W*fJ>CCEfhPsKF7tw zeZ|=RZyx_{^A`l2!HY0eWfS|s2#P0WHXa?T0h(d`wXMNee^LR5O}yss5rN<5!8onk z3LxpPq@?4BLm|Cvhyj_=@o12ZrH^Ff!8oMoL(1g|0B=5|7qd(@cjNZXJ z13zs4UL3g`+xKluIPyV9X;gbqYIIE~*OBl_oT9fdwi(YqboN}uU{Ov>aJ=g5hqg0s z9te56qG>Sk)SUL9cv<`tOBd#B{`;Age=GQUd-BWG##6@|rhGKRp&S}Mpj%)$ydz)u zac3-QsG8OwQ?;MZ%4z|}!jS4w*LOdq?73K18&mc9(7ZcQ%dNvNf_8UIeujyd-k)Ep?n4grh+p1sOi)~uqI-7R>wE_L+ z_kCaK3;*;=-y_`nbVc-VXF+N77qa!M&e%RW($tuK$-Ag={)0^~9ozKa%cH5`&DR?` zg~*MwzyDjhxE_Q6 zJU8SidZsLVmT%=#{k7KD7x#fbOkL64e|&MpY~A4<>$?rl737B-v!YuSgRA3@K920v zh0MP-T9wXg4t-gwT5vP$#K_jcx`7=xw-&`8dA4`xQ*Tt!mAYY{_H2u-Hxhhh>W&Vj z+nisV0FO?!^eOfRZG3Tl>z$;Vn;MUC*>yM9ro`44?`uh@0SgBTiVL*T?Nw`9f;&$x zS~A4_Yw3&NAcfgnbLF1MLSb(OJXC@R-BcKGN&6_x)G zcNs!`pEzU#>|@?7aS@PxSoPAss#2%bADz3-yEZTA)a%5XH&Tp3aq9Uhi43juR(6eC z+;Vw}d#HP;*=X)+T0OVF_S4&4Yc$WFoc{c2@BRzoL;qfV>*BgwmHCFoE5SYf-^T}%*dD}oAw zRytS@Y!$UCDk@0v0y`9|9Yj1Thw)%U!TYFHisG~zj*PapPTiTe@9lfv`~Lgi%*cpo z?gK{*1OUKY6{d`0=b`MF;@XdWkH(gtW2XUR*lZdA+`Jsa1=x^3902;P92V5 zgo%ghi8!2RGm$JB0AxWn62+2m28_cK3}!j>@aS;}H0b3}jGvmXCKY(1A#5RqYZgXm zv4u&PR1XCOf-)Pz5}0rX1#KpynMQ1KsFN3A*N$x%0y`m0k{k+l2n2QNNKipgIOxao z=VAh}5Dbv=1pa)fP&^3~@&y4fKL8epxO@S^_eVrhu={~nX_P)5iBg7k%VNLeP$I*S z2n<`TR-RSFBd7#eAeBmCz7Q4)xh#T9rKN9tI^&W0Zkp41^hUFrslpG9!mr zO}k7mkxp7O-R&mUVXzG)VF8ctFsT!$$DBAanKE_?*JChl#7(%Fp;@fJi6s*WhM*IP zf1!3Bzb1fnty=Ar@kU)tCZ`CR30c6J(e02oqG@dkiNjGiO(ato9?A_~GtP^@59 zJ5i?=YBi!V(+q0HaFtRHu@>_T20aqbM+5vsQa)GeC&syYf3bv%Vp0hgm!M)kCXU16 z#Qr_^l?0aTh-=S%{r|i_gEFvng&NxqgpZjrmD_6fJ=v^|en z=~`z7&IaWv>XTRcM~qQkbDacpKg8Md=zw6Upantq&TP3f@MILz_EkerR{Mt2 zoZ%R0JRO^XZ@;*U4%`l&xVTG^d`D*SJ$7&Ng{HpbB+s>Z9{S0FTv=O&W<_b;ydfQ; zkEV{>JkRS;U0I{4H&9lXHuL1&^jWv7X4*&h!$Qx=g6tXJtL}>)SE+9r=0eqjnp68` z{#M0qwa9`}=Zt?JI8;|#9&-w#A4FZwy=i$lI-t{YTIlyNp zZoAycpFcKR>mq634=k^#b_qRW)jSzpUeo(g>#?(!LpQcA^NG!W=o-}8yxp}X)n~VF zg?I#^EzG|fp0j`Yj|o3FN*|UK+;DB$dh&|N?dy5t_LNfBZ?zvDk?kF_GA?1*og>Ay zRbBykJ4!2?n^!%+%FZ7timcDOGH3AQ)owRkfcoc)1J~YPqnm5lImBn=-nA|5WKJ*OL3U}=Dj;xSen<7@<4yf5J&vuOe{CKBSOeN3!t=8a|8Zk+$Ma`tM>nQU z`_iBGSl_$j*$dsbp>fG4wnUS*Hp|Yk>5n;WkH6ShGU~h(*JvEScvVP*vS?~-+Fv5i BAo>6R literal 0 HcmV?d00001 diff --git a/public/images/statuses_ru.json b/public/images/statuses_ru.json new file mode 100644 index 00000000000..5e4790b2874 --- /dev/null +++ b/public/images/statuses_ru.json @@ -0,0 +1,188 @@ +{ + "textures": [ + { + "image": "statuses_ru.png", + "format": "RGBA8888", + "size": { + "w": 22, + "h": 64 + }, + "scale": 1, + "frames": [ + { + "filename": "pokerus", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 22, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 22, + "h": 8 + }, + "frame": { + "x": 0, + "y": 0, + "w": 22, + "h": 8 + } + }, + { + "filename": "burn", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 8, + "w": 20, + "h": 8 + } + }, + { + "filename": "faint", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 16, + "w": 20, + "h": 8 + } + }, + { + "filename": "freeze", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 24, + "w": 20, + "h": 8 + } + }, + { + "filename": "paralysis", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 32, + "w": 20, + "h": 8 + } + }, + { + "filename": "poison", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 40, + "w": 20, + "h": 8 + } + }, + { + "filename": "sleep", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 48, + "w": 20, + "h": 8 + } + }, + { + "filename": "toxic", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 20, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 20, + "h": 8 + }, + "frame": { + "x": 0, + "y": 56, + "w": 20, + "h": 8 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:37686e85605d17b806f22d43081c1139:70535ffee63ba61b3397d8470c2c8982:e6649238c018d3630e55681417c698ca$" + } +} diff --git a/public/images/statuses_ru.png b/public/images/statuses_ru.png new file mode 100644 index 0000000000000000000000000000000000000000..1da8b66a4f8be4867fe00ade4eed9bbd67e0e449 GIT binary patch literal 2091 zcmbVN2~ZPP7~ZHwjp7L6fmU5Z#RHPv4G_peB1c4UNI;GOkE+XNlkAW^OcoNninfX( z$XF1m7ebL*McYE7RjgPnU=g)C7AjD+BI1p8s@PiFZa6a9(Q)dVdHb&KegFM-V~l2w zvv9l+008I62vsaUj^TUo5GVdS3D3O14@23A`DOqZHp<=w!1kTv0ANr%8K1-@siRPw zp(L1=NhTy#isjJ&5H!omVt5L{fysoPq!psBs%jBPY89eHKQ*jo!w3TzvD`$&E!V{3 z%TsW}%xg3I}kW?z>5n^*X&0$tCZT9GAP!VR_M6w*o(4d_WOJ-6zg^1U* z*93}n(9-5UH}MXGtQZR+64-814^WFcaBQl{*dttvLxho_2%0nVSj2&44GhPa4a{q( z9mg*T;9aX$J7m047m9L-Fmtohcr*GO@=CNhKAk0?Si;Ptns8!v8n32@-5M4RGZ7fa znBp16*dM5vewD$nFmQSzNoyI4dBzKHLWOaJLL`NyzG7G|M*QPpDT*Lo{1=9MacV|O z>e63@llr56@JmoWTeKL5y%DU%Q5|EVFy2;@!t?~h(s~i-@E{t-7#R~Um{-lGM+>zY zjik*SM&m@JN+IISm5`(s^_O7;=I;lK310*kYcXFRu^dMN#ByCgKyorJ*JX)OkVCw*P4dogB4$5}8F5u)c^^@cQpc)cNe_4S$n{nxslvllA0AI_J* zed>63_=V%;B53}(GV$-yG(liC01S8#sS1ftT6eZ^3ioO7$n_ssH*EFVa{BoGxvF03qP;Oii?^mEN;9sIKOL0$yZ-;MU!feg=MnBnz83y zqGxWm)l^>oJWs8Q0!I|%(UcG@Z%3-p<;4Obl;T z6|DElY9AN3`I@c6Z|h`lc%`+JscdBv3rE~x-N(%hJhi9wuRCWuKXbmdf6|kN%K6Bo z<^!WIJ?OrM5A{oT%G0M6L!N8W8k6)#L)VsZ6O;ve3u8+Yy%tVbJO@1tg{RJHvDyZ} zi;6zXUFTD56W z33t11H3wz1E6+C{$$9K)8g=f^`IDb<`>!q>uKX!DeC9k2wbHiB>q?We@Tkp`wIb(kbvSJLmK4Z=-oxl+~les_s^V{&~YJjfp_P! zWlj5XJ4(#9)AS>iGDjC=W6RwZZE0#~TCcAtb!&4M01_x7%KzeP1y+B2_I7G_xHE-s8-)5{aFy1?zvW;$NS#fE(5J*QH>;TO# zqj-;m3y@V^jDKUiXB4T~am+que5?h|bD2QvJlYc8%_G~aG}z~@!Q2dSmt873PQXLU zg+O|T!QM`p^A|K=@Suc&?b@)04> jC;!H^NCF;OJ`4N>xriuwM360I00000NkvXXu0mjf67avU literal 0 HcmV?d00001 diff --git a/public/images/types_ca-ES.json b/public/images/types_ca.json similarity index 99% rename from public/images/types_ca-ES.json rename to public/images/types_ca.json index fa3abaaf259..aaa04fbad36 100644 --- a/public/images/types_ca-ES.json +++ b/public/images/types_ca.json @@ -1,7 +1,7 @@ { "textures": [ { - "image": "types_ca-ES.png", + "image": "types_ca.png", "format": "RGBA8888", "size": { "w": 32, diff --git a/public/images/types_ca-ES.png b/public/images/types_ca.png similarity index 100% rename from public/images/types_ca-ES.png rename to public/images/types_ca.png diff --git a/public/images/types_da.json b/public/images/types_da.json new file mode 100644 index 00000000000..d1c01de1e0e --- /dev/null +++ b/public/images/types_da.json @@ -0,0 +1,440 @@ +{ + "textures": [ + { + "image": "types_da.png", + "format": "RGBA8888", + "size": { + "w": 32, + "h": 280 + }, + "scale": 1, + "frames": [ + { + "filename": "unknown", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + } + }, + { + "filename": "bug", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 14, + "w": 32, + "h": 14 + } + }, + { + "filename": "dark", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 28, + "w": 32, + "h": 14 + } + }, + { + "filename": "dragon", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 42, + "w": 32, + "h": 14 + } + }, + { + "filename": "electric", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 56, + "w": 32, + "h": 14 + } + }, + { + "filename": "fairy", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 70, + "w": 32, + "h": 14 + } + }, + { + "filename": "fighting", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 84, + "w": 32, + "h": 14 + } + }, + { + "filename": "fire", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 98, + "w": 32, + "h": 14 + } + }, + { + "filename": "flying", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 112, + "w": 32, + "h": 14 + } + }, + { + "filename": "ghost", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 126, + "w": 32, + "h": 14 + } + }, + { + "filename": "grass", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 140, + "w": 32, + "h": 14 + } + }, + { + "filename": "ground", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 154, + "w": 32, + "h": 14 + } + }, + { + "filename": "ice", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 168, + "w": 32, + "h": 14 + } + }, + { + "filename": "normal", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 182, + "w": 32, + "h": 14 + } + }, + { + "filename": "poison", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 196, + "w": 32, + "h": 14 + } + }, + { + "filename": "psychic", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 210, + "w": 32, + "h": 14 + } + }, + { + "filename": "rock", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 224, + "w": 32, + "h": 14 + } + }, + { + "filename": "steel", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 238, + "w": 32, + "h": 14 + } + }, + { + "filename": "water", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 252, + "w": 32, + "h": 14 + } + }, + { + "filename": "stellar", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 266, + "w": 32, + "h": 14 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:f14cf47d9a8f1d40c8e03aa6ba00fff3:6fc4227b57a95d429a1faad4280f7ec8:5961efbfbf4c56b8745347e7a663a32f$" + } +} diff --git a/public/images/types_da.png b/public/images/types_da.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b7af8967aef2e29fa68d2dd0cecfaf99562458 GIT binary patch literal 6247 zcmb_h2{@E**MDr4BBZRTF?JfWn=uSoi|iCCGG@k@FoUs|B_X?_ERi)^{X;}4A|hF% z4TU765;aJO@6q;u-}n2!%lBU2T-RLpnfv*jbAIRC=iKMHu8FZQ+sD6IVlw~${6_or zt-uum032eQHh>aQb}kHDcs=*qvjAX=@cNenxR@md02`0cZR~vPOic)6riUtt!gQvp z26%XaXaLaE4)7$A-KahgXDW@(AVO#EG(aJA3K43HHAR?u>QP!2)tQHJR0K@@H23<}eqrSvy&sy@kw zN`#^iC=3jt4nrYqkT?PgN5EiI5GVoy@dIkgq|jXg{{gCQgF+FoNCFb~cTlikC?p@! zzXems1Q({a2MG+9?m?na;hqc{6!JTX1U;rZ(;IXQvO|AoVQNY+Vz7Kj3^LV7p9lpb zR;AM^1Q!>q8pT;n9p*wsAYgbj1_#4q)bTJf6@fycDM%zjP3@PyK9lUbey+dtDWE0n=x-2ZDkVEz9Y;V&yXU_>nN z;8;JqLzhJRDY?_Nesm&*Nd~F@sfu?-<6K-QYA_0wiUX-)Ffcq8;{ros5h#)x+C>e4 zqG-a`8v``)qvt?jJ!R`5W3YH6Sq+1PA*g69%o&YwhN+|RXc!qm#h}s7U^=OPtNq>1 z4^r?yDf|`t@5N5oPhXEF@TXsEs@HD@kni^!StP%IO&o+SQynAMS@YW7z9jR z9fyWtaVQc_jjBc_vkv>qGx*16nZX_o*OgtZLFea zh&B@3JuvC*wY;xEeBwj>!r+Nuw`;*)Ucb!Y2Da7*N9uBYTyB-RANqD$Tx_ogF{>XUg40+k7{{hcoBcmhF z_gu>q^l+$h1tkK3aC~(~`6Y(qfY?at{Ln-!p|dP->-p_+c4fe$N173@%+GX%boXh2 zJGqw?@1a^LD@TPY=Q%zqb`MDi*dK{{dF_+XmWLCFrq^O4{+hfQ#m?F^dJa`ueyrf> zBTZSXs&1_q@^mN51wx}!>;fwpvPa!G8g9L<-EVe2?u5YxG^e}QFuGSPXPZ~mXF_Fd z8TWm}=ip}|xEy!%VAq8K0GQr*u185bB>|+8aNMrW?{=ypX4g*X5Wuc_Nl0p;H=sg- zGQzqr_cZN9wV>UtJyLgF<7fI`BwEwprs<7W;a?21BQzFj$m2~mln^vBzpKKVq@36g z)Z3Rf6&F;edU{S#MB#eNeWYXSAPS#g#M>7Ca0%Em93Al$nUM|S7~r0eGY_v0B%37V zz#p^Zayjicix~~4Pj1JH3rlZ-nKv2r2y?&E|8-F5@)^x7y;<#%JIJt`J5mpXD+Fb;-?YQ-lKpXb!H zQEpe(q5_m32%E;CIJ78^jZoR{aqICVMZtthe!0XBN`6^?n$EJ$8?vPFMuKDLU`Z7H zKuC$)=1FsHs*RrUyp5jjrcc(!NOzeB zc{tuY?0MYXQs6j?t4M0gsY<6!>bT~Km3T-tJ*7dwdN1yC%(1@ZGNgsmv(Y?hQ+$~Z34~)y=`&Z)qc~3&v)ox z^wk8tsi{kesDmpqJlWO|t^+z4`t0^oc4u}2U=!bU^<(^D5foHx$=}d$+2p|XY;6ZO zo8~WxT7{8~(^o_HugpjV$F5G$JP04g>I=**y&-VD8TlKMZA?Pq!mxj#NAY!VF_jAG z+?w5eYNcq*E(b3Pc)seJxvu4<`uV{NsD6FjT)FXcA0lstWeA7Y_4yc<>1oXm@t-~8 z!{X~Zk7OW=6l7YPk(}>^Cto)fjvV>yI(f}q^)V|p;{7fsS-ZPKB5(5YCvR`GNif)Q zg!5#&y@o`FN&(e*G7R0*Q&9I=uti2RD?*k4P?P=1mSG#=Kq^6U`s>uJy5b zw+ynm<#OIk1&8aFik&OkRplVODOYp5t|=sJIs@(QyNFa!{C31qc#~b3Sy23|MC;={ zb&5i->b=+|Pg&;N^1^G7+&RQ~;^u&8RE_t z1H-dv#%@tj@yGGo``EWhx?zHA7SVmpw0*w)4=kdsDvPI6GG~T8^|oGL;nDC*x3x^# z&AKR)DS$se7T)#w%Ncy06N~@w`wn84?@A~HcjAr$XWiX*M_(L%bodxUvc}F?S1DTl zO*=R61#uKl`eH+8^-Su+yRe)58n;P{8!2&!AJGs9s4Yp! ztRL#d18=pXoVudT&>^1Hl8)8(n~ zXiYYT6F93zbBIWOD_*W3$-bSvJ8bGwF9UU<3H2Uoh_@Xu+)E|Ov*S#rbz9LRb+szc zV!!M=g^i*MZCWoGc_O1!qS0okJ*s~SDV{>Z z)BIUBdO|ytS||3Ll;vk1Nbb^tkIm~xvlrFNxRtFgS}g9D0CL9%*oMpY`fZ&^#~!NG zxrnjgdn?IrqK!~+n^psF<8@$DwzgXUhh6hS%E`=xDn*XH(wdjUP8|!I&yc=zWA+s> ziNNDXJ$VOO`0yEPA7|>Lfj4FwkcT5Zk3Cq}8E`GH$Grz`q_%wWh}uWlGy`4mic3K@ zSgt=PiTZLu)-9$fFG{OGB1F@!II>Zc#*kS}+W7wMxiv;FY4>h{XO?}dV}&>x_RYC( z0iv;wCv#^t(CZ?gKQ~12o1METBx9AOwK1WdnLl2r^Ef)zy@^|lva7UR-{fuc3?I19 z=_zoN4;eUMhJBg6iK0C`PDhq!qx*}(0`Cv{p)^X~4Qx|f={D)0Oynt!Eo)kO!8BaK zGIzw8?&Q=$m+QRvB83J=BmsU-{I{%n8Ay6M= zIh?tTx$1Cof*uz?uW(`SQjvFuFVk4F4|hQ(*jhd4%M*QrCgD?0LPI-iy7mXQL|l<( z?*#gItgfV6U@6%n72BixK?~brM6#_K`4&EwA~kn2xo#m(?8QJCcU_@*YmnFlAcjX( z3%xqE{DeP9D>&3^ZLxSp`}RVr2FvCfwz4&N!kZ?nh%N+J&(?6HbpYOWOMN1f^VWpBjqMZ@0D~_4@F`5-JYfV_^!Cvy+$h&a0J=ST2090M&_ z^kp2^&?0d%@{VTLnJT?RDHcOS2-&=|8W#iGcJa8UT*&SATaDnY=%PKJjES)@jafL| zCfe1Vuw&s&2*aj%&VB@Jyy1=>VO=Gji!bIb=PBka_P#XSm#uxZWz{DvdGx|s>DsU$ z@S32~)o>|~BidV@?D45RNxe(>1vrwGzlMwret}*|p23xiWQ5y#UAoZDh91|UJNZRe z(Vc2)b2BYN?z(4}&=U5J#I;_yzB`E%*lTw*>jC^Y&iqN7Y~%HD(J=+R{rt?cu4wdiYCtuvo^{-N)^NG=*OgC)vs}60n_2vwEWFlei!mGJHB+>WLKRi%nF>8)b!<<9|3~^>|9u6Y>r#au4CTnF zbam*{9gAua@7XAqm0?r4qC{n(eVm=>VGWlEhdUY)y|u+U57YUKpCVN5^kdp4@!%rM z+qf+d!N1~7-ByV@`@$O4(miWyyq?)7hWrD zEP3P`Zk2p}U(y%8nwGbVQAoZGSJz)U?m1PLHYWwjJMBB}rvq~led3&3-FY;NiEf*d zHwh!TFsPk#nhnK1xz&8Hd)yG_1*axARXl3lT*hrT9N4BS2~&Epy`rKrlE0wxnA$0y ztitw$^fC2DKR7#mCQjpsd{uH>cw<6X&vb6O3FtE6_~QIaWtin6xuSisdL-Cf)_|}3 zTR1zdFnApO^@|7>P!<*HI$EVYB$1kA7wXD9EC_j^ig|47n6~!JeBqi*jau?Pk72+! zpRz-F;3jo9%@nb^$j{UrV-MKq} zTdXJ-uu5Kuxw4~n%k0b4f%Kb%mBd^7o}0ClogTFz-e#+5RuQ%qaG?>?24n2jBb-J7 zsI%epp=lS5Z~&csqcyy1%o4vi@ba@Xf?b&f=(T@)ma{W>h8e2U{w-$z zVYKAU!pY@?d4uq5ilp477)=zi1EGHdXA}l3en@Qif^nTec z`^FP@w(S9K!=>UEm6V#G?ABU8#&JOXoH7ljxls(CA8{A^M+GcXE-{V+olZUx8cVk^XtVmUo#=gr9k)evu zs_UhmtL(%may?wWS=C2q)RZzhAIfZ;J1{9jIf|C-P&6g3q8 z;*@#Mxcw**NjO-xc2#@jSxHpJh)T8oXi9{}(S#O$hwDb<$iPg$OxG#=e*jXju^j*a literal 0 HcmV?d00001 diff --git a/public/images/types_ro.json b/public/images/types_ro.json new file mode 100644 index 00000000000..efdbeba38a0 --- /dev/null +++ b/public/images/types_ro.json @@ -0,0 +1,440 @@ +{ + "textures": [ + { + "image": "types_ro.png", + "format": "RGBA8888", + "size": { + "w": 32, + "h": 280 + }, + "scale": 1, + "frames": [ + { + "filename": "unknown", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + } + }, + { + "filename": "bug", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 14, + "w": 32, + "h": 14 + } + }, + { + "filename": "dark", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 28, + "w": 32, + "h": 14 + } + }, + { + "filename": "dragon", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 42, + "w": 32, + "h": 14 + } + }, + { + "filename": "electric", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 56, + "w": 32, + "h": 14 + } + }, + { + "filename": "fairy", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 70, + "w": 32, + "h": 14 + } + }, + { + "filename": "fighting", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 84, + "w": 32, + "h": 14 + } + }, + { + "filename": "fire", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 98, + "w": 32, + "h": 14 + } + }, + { + "filename": "flying", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 112, + "w": 32, + "h": 14 + } + }, + { + "filename": "ghost", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 126, + "w": 32, + "h": 14 + } + }, + { + "filename": "grass", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 140, + "w": 32, + "h": 14 + } + }, + { + "filename": "ground", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 154, + "w": 32, + "h": 14 + } + }, + { + "filename": "ice", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 168, + "w": 32, + "h": 14 + } + }, + { + "filename": "normal", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 182, + "w": 32, + "h": 14 + } + }, + { + "filename": "poison", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 196, + "w": 32, + "h": 14 + } + }, + { + "filename": "psychic", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 210, + "w": 32, + "h": 14 + } + }, + { + "filename": "rock", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 224, + "w": 32, + "h": 14 + } + }, + { + "filename": "steel", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 238, + "w": 32, + "h": 14 + } + }, + { + "filename": "water", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 252, + "w": 32, + "h": 14 + } + }, + { + "filename": "stellar", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 266, + "w": 32, + "h": 14 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:f14cf47d9a8f1d40c8e03aa6ba00fff3:6fc4227b57a95d429a1faad4280f7ec8:5961efbfbf4c56b8745347e7a663a32f$" + } +} diff --git a/public/images/types_ro.png b/public/images/types_ro.png new file mode 100644 index 0000000000000000000000000000000000000000..35b09a37035c42476115e2bbf166650358cc5a92 GIT binary patch literal 6536 zcmb_h2{@E(+a60P8WKvh$Ql~6kD0MmhLUEAY)N@%4VeXF7o##!A{8OKM3H@aQS>UZ zlk6o@M2eE^{ExP8`QP{ZzW+P^IgUB*`?;Ue*sWzoGb_=(&cDj!?htE##7l$Ei#Qw zp=)_DIRF|2(lzknkf~?rTm=gKv?EJTaiY9ZQNfX>r)Z5P!iXG0x`X3EA6NP@ACd*t z=L{7`Q#8<5(DlLt4w!Td& zu5<;o76w9vqYw((I4w8^hC`tCC?H^PZ756|3P(aB-DQj6_+8VbkZa8MWmiaP6;2;aad&N#B4p>MtC}-PQS9a2gd# zccwGxEUp`Xh5y2G9N1j8n*;kVT>rZL4*`JG5{bWJ{3#bE^H&Hru8{{I<3~dN6zyi= z&7nih>27RyS1R4e1E8t2s)mC%bfuHIY*!05+xh249sNmJ!O&1)x3wdS#`bhm|2sIH zK<3i*6cI243Iaz!U`Pu%8jnQa5eUuI&4Yc164^9IhWG!50(*>gekBoa$aZGC0)YW`$Zsr&M7#;hjZ0=x=_Uj{ML@BZ zqazKErckjs3I++m;K)=63W-8PuxN@lL>o<|qj6*$8OtF5v?s8s?yLLy)1C&{BT*PM znhrxlFxnUz1cyRlAQUu(2Em}P3=9QJr)y(TKkbjWIs$z~cK)yZ0QLVjg+IOQ0~EOd z8|U_;JNA=L|Cl*D>VNM<8k-7G{hKM4g4AX(Xc!0$;0HmGQ7Aw(iUEP6VF)q?$-ux6 zG+pRwV*oC`_Z%=;P1!feFf0{=qQfC%Dw+YoA^^!`BozbErqiip3Y9{}Fc|;BS{qBI z!%=hy771rSXlN7;fm;EPX9$4eTTWR8C*}YD}CQ-pbGy@lS2QBx*OT!UlXUmkPJAP zfq+nP+CYh5P-F-NrcH-vYvZU$92P^vp@5e9YvO1e9)$Ik`fGoKJ zXR+==`wR#qX>CH-XWe)!CAl zEMf7=fXJeR*%OZsvO zRCQ~?KM=TK8-5CJpuEYiP5AcpxsEHBK=vI6x&8w&g0c1=ALp1<_HkKsk*+wxL^pL)f5B~mWf{DJPo`o7z^0Tf-i$J$i7d505HFcfaL_u$2V#%dE` zErrMa0V(^$1pMS1v0i?|SIodS-*8XV*FSU2=<5mxhTS%LGN!I&OhidC6K};BG2!9g z4t!9-nO&<${MrWB(2-ex8HDCg8yAey^Wg{`6@jf@7PJqO#qaKwl8Vi9p3G_)`ymX} zladw=tZlK~t2QEUD#Oa@s2}j!94sGBI&@5dW#uH*uUc~5sQT-kq$H-+S!K_ zouH&8g+uGu@~y+V6->}t>IR9$Aq$9^*Ys&2<0{w&)OdGNwZVpJURy3zsC<%fG3`ZR z=2q`1^N6$7lo#t8Ph1TYj+wf?rHnKGBCS-a6hKTV>v|_Q?AyJNO_0Zl_eb>v<1GnH zHFAH2MW2!yA$3e%m^>p^IpkLf3)$i)IaxpBP}7sJ=9ULq zh*xwO_rjHE2*FF&)+I<{1YZjm-oI8bafr*zq=^rGdOPQnIp`JVr4gs^S?9-$Myr{b zO836{ohA!v?Ri?b@t{3RHn7>aMtsM_OmUbHUVbaG^Zs~y+4?*deW$#fT>kPiL>D45 zY>e7*mv+?1cG%W5>>_F0z9c`qC+zj&@8LR%(wDU~OKLjR3Zw?-pJhF`zZv8#atqIxH2C~$~-_qN^SQ&cYuY5AF6}ZUf+q_F~>`cA6z2h>oXWL?nnHXk^@L9<% zANcKkkdyAEBJyJAK<6^VXG)vZA;$9i+f${=uU_q8t|NwHwcnCM?rR2)aU}TU?4#(X z4b99rwZMowymRT*5|S;_rMsdc=T)l=#iBE_#24B>fwe=sQ>aP`^6#tdM%~bG1+I26dZr7<_vS5-GOqPQU+DUzSvky zvr=bz8AKZ8N+ss*&1&v?!v}#*^zE+?0cN>H5L%ta20nONOzNRIUfp#ty1T{6GD6Vq z)K;_M7wYy!hx$cz)O*tvla;GPTI(L`Lud1*&h~{JsY%_p&#ie^!SzSeX)(^zXIu@l zQT(rl9W%Iv%Dg2wI>(eBiW%ly=gPs$&U z#GU^m^u%qv*2IG^VI4;nEbuNQl|UO#!0T%9KBTDLU}fX8U7@6R z2R6g+t(!zmT9)-Z4g$Gn*{Tp9MN4tq#=DFU?R_!WMC&RK@>S++yo%f1So%bgB_nyy zx=woaNi!TKQG{cEoNdkG8zEU;n}W_iuvW?e_a$~t^}^mCFy<8*H1U^Dwy5o~S!i#Z ztvEWdM$}#;qOF^Crfcnao11zspG{$k(#p)F2Ba?CF3rA^E>iR;Y5Ji1DP;=&68-vJ zuHvAXRL1D2z<@!azcWvEd1nTA?b#er*s;RV!kIO>X6e5b%DUi&Z-q5zyo}y>m8i-> z?bsgE3gM8I(+U}}37Tm|OA(rBOL{&ZvmNv0IDHU~BKB(!`dTM{V;4K~>)%%2yG#l~GSC3F@S8EbdmajsJzjWam z=;U@4!v*7%DdJxA)^Ps8L&8OFO0R9f^h~J#?asWNv?PzgC}N&eQu7m;+4cABb-JX3 zZ{;|fTv1wsk~`%X62fyvbTDqupIdY+fAofqmCzT99j7+ z)8djKT$*?A(tFa%=g45c65{Ys3Vsf|b^Yi*Wu(RZy`4GN=$wrM$+trty>O3n!=)3{ zlgjcqyZ76I+Zj;L3#845w)WV-@0k{{=F-$t2&2fS`>G&|7Ez-F9P_K|ffK`q3;S+x zmR}k(n_DXT9IUFp1kIcY**_xh+vMaGTI8^c6CS}94$Ir@F}B!TinU367JThMJLdpB zpE!)Iv5n5lE`YHz12VJaiO>WQ&<)+#wIGZj@69%w#7!@6+<1`nAx$bigsC0~Shaq6 z?R^<8v7MK(Y&83<&AW8ZHO{st&-bc?2ZdF4nKe%BZf~;;nX|fbB?bgeJ)C~{GG$ND zglW-Gl;Fc#qxFmXqXePY=D?D%vNXP@g{sax4Szgwcljn+wsM9QY=>87c3&2M#!~f6 z$RC4ctO7az&T>n!z{-TYnst7i<&oQ$!d36?TMiFP)umz%EtB~~s~$m4k>sc26IKkA zL1e1k+4lDjGA6vbVr6+;SCTkrOsD@!h;VFTJ-O+~+ircZ*)<<|scE|r)hQ2?F{Zgr zjD);^OYR{x(i=wl*og4919^M6DcQQzVj0(*ynFsyePI;%D~pl0hZ)uh@DsR%YGWRL zSp40v>v?+}Yr*GvH%V(_;;p4$FE0t5dIJ&6CmOli?YKf3uANqplTb!I=+A8O1}HJm zdrTe>O{HVY`n59$j}vFWBO+iWPVvRO5rej=(S-uN(5($R=zw{D@6$U^^lx1%^mFR5 z&4kobcBL%k7vBP}h=HoIZ`^&F0b`eQ$FtCH<3HNe%e}qJ&W6ky_QN zp0?JqK>jmk!MqUK>g9|n@g-%u zn{BEC3tT*{dSWjH)tx!I*{}7QNHKD=ti%W?7v>G_f7kC+2WsUEWG!vWa3&UQz#i)n zer}8=sUDm3__A<;i$y9~B1`TT(|2%d z6sb!P0NVYX-Ki;A=&<{{`+Q#?|CFY=goMQC4j6UV&^D#jz|`^>|=z-QPqCSwHOMj9W&cVO`|d;70{ z?ej=}BQtD2bEf;5+t%y0+E^}d9d%zc<%;tT@me!GnYg#nxf252g zNRRn97jeDhar{udRoby0&VlEAyfit$rR;e{iJ9kZp-59?Ypzc9 zHJk}lzDF0>xwspta^}TUmGV(%$s}*{Kz?@vKidLLiWQVO;WT7S*x*Tu@QF*6{hb-z z*87y34JFNq=jc2OgRkaP9mXRR@s&dczuF%g~%F8IaOjXACJ`>H=`705-c zoV*vc`}xYfhAjRTgI2dR)TlgPvUFB}N=zsDoTwGpV(?pIcemH;nz@SP4VFPYAl?(1 z$fr%vl3u&6vVvwti~9?I3*mdB1$m_@n?PA6eYRte82om1zmsaWH9slUo`ZWEQr|b@ zEo2y}_tW%;^HP^7sNc4k4~Qrc12qN88eUqNB(A@#sbOXr{h{^lI-dj~RF2=K9^@l2 z4Z#HUtKi$s2jqOhE<}vK$aC%QG-q2?SLC}wYCqNKO*7EC{)djBD|{o!!eNP&EJmom z^?ODiReRMmGuI0 zwq_z#^_7jlJJ(S)QhZ6g=!${=U<5z5A%Eoe#%3|&PLf_N?7)6@_p6RcuO#h?wk&?h z<_m>{L5abuk{}*G{ra|ew}<1)bjN_HpoW=^Ge!Y^gO?5Zr8^{g1EhRiWnrX6kDUum zedJNyIc>1US!D_JevrHWB^B|Ls`e7yI_+fqr-di5&+n&ftg4oLg)Ir&lxfW>Vd{dQ z*5#l%nZPEM`yigt8c&MjoZq76@1kWH1Ee_7m7B~-YJ=+QAVWhh=N^J?BEwUE4n2i@ znt9H|OEvmj9kb2znM=G8Pv?lOQ-58l*BivOsOCR3%TEu!j%cv4;H0BVD|VOJI~b2% zQY%4IEn5qH?~W*1t+_tAiD&8gVpH4MU|=|R`Wee(#}jqUO%O$O%|?6L(z}2aTAg0N z93m>JCH(diyC++2R<89sxo+BeS)}FmOXoTe2QmrKjmYc0mUGzdN>$;mDZPQw%cd@Q z9TmRUmYvkkNi3E;1%t9sdo)U=bgYa%F8R${4!j33?DED>`Do7TJ?#>FB?x-H;sLxX zF5XJpEU76Nla?9ruv8j&$tsfod_^30k|RFU-`UPT?9I9}mot0eu6lQWiJT6|E_M;D ztE~bqjpC0=r6(!AzJL!(8dA=(%}v!6sTPvD`lV?a#2XA;FI$0qvP-BcCBT23$@^6K zFB0|-WM0+<$;Phx0tO3$=2sTsn^oW1AOhZKj;xyu8DT^XeLzkZTbds>L8uL5Kv$R9 zeZ0@xQf^(&y0OM4e0p|#KG%q!vSh0^tSGV+uq^wb3!kbUeRJkQ)2E6GwZm$cP2pq> zSadZ1_q0ss>%`zMQ@aJK?nm@3L+`U6!Ku5hTCjlY4@;0ted{Rb2wZ78y zw|bQkZH-n`Q^lsU{YNa~#@f|L`~HZ0wcQ2#)iqmirwGWJVf@NS2W7@unR>O-o5k;u zu;@vdoGa|pizkj%-Wy-2VCSo}EYEt*DlOBBR>q)a<(=7GS5}1Bo7gBtu?C^lZzU#1 LBtrK7-_HFH=U70Y literal 0 HcmV?d00001 diff --git a/public/images/types_ru.json b/public/images/types_ru.json new file mode 100644 index 00000000000..536a0e31929 --- /dev/null +++ b/public/images/types_ru.json @@ -0,0 +1,440 @@ +{ + "textures": [ + { + "image": "types_ru.png", + "format": "RGBA8888", + "size": { + "w": 32, + "h": 280 + }, + "scale": 1, + "frames": [ + { + "filename": "unknown", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + } + }, + { + "filename": "bug", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 14, + "w": 32, + "h": 14 + } + }, + { + "filename": "dark", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 28, + "w": 32, + "h": 14 + } + }, + { + "filename": "dragon", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 42, + "w": 32, + "h": 14 + } + }, + { + "filename": "electric", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 56, + "w": 32, + "h": 14 + } + }, + { + "filename": "fairy", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 70, + "w": 32, + "h": 14 + } + }, + { + "filename": "fighting", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 84, + "w": 32, + "h": 14 + } + }, + { + "filename": "fire", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 98, + "w": 32, + "h": 14 + } + }, + { + "filename": "flying", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 112, + "w": 32, + "h": 14 + } + }, + { + "filename": "ghost", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 126, + "w": 32, + "h": 14 + } + }, + { + "filename": "grass", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 140, + "w": 32, + "h": 14 + } + }, + { + "filename": "ground", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 154, + "w": 32, + "h": 14 + } + }, + { + "filename": "ice", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 168, + "w": 32, + "h": 14 + } + }, + { + "filename": "normal", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 182, + "w": 32, + "h": 14 + } + }, + { + "filename": "poison", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 196, + "w": 32, + "h": 14 + } + }, + { + "filename": "psychic", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 210, + "w": 32, + "h": 14 + } + }, + { + "filename": "rock", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 224, + "w": 32, + "h": 14 + } + }, + { + "filename": "steel", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 238, + "w": 32, + "h": 14 + } + }, + { + "filename": "water", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 252, + "w": 32, + "h": 14 + } + }, + { + "filename": "stellar", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 266, + "w": 32, + "h": 14 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:f14cf47d9a8f1d40c8e03aa6ba00fff3:6fc4227b57a95d429a1faad4280f7ec8:5961efbfbf4c56b8745347e7a663a32f$" + } +} diff --git a/public/images/types_ru.png b/public/images/types_ru.png new file mode 100644 index 0000000000000000000000000000000000000000..571e162e8dc9f3da298566982b2634402f9ff570 GIT binary patch literal 7570 zcmcgx2{@E%`+uo$D!V9COe1T??8A(N7;;V|OGwFU7ACVbGZ?98AyOli7E6jsX+xIE z8cBudBs(RgMPn&MlK(p`zVm(m(|68y{g=5e@B6&ZbMN=>zMuQL#JRdSD$doO3jlzk z(`tJ+=nV$|nS}~+(8_ArNEGz?g}2&A002sNq<=C=%avdNFkheP;VtxbUPGpG*=8V( z8$dS`v3U?R0IaYU@jz-YT?h}L2QoQUh{57=1e{5;LU<9J(atO#^u$3x=dpohyp1H=LkU&k|WUjA;F$5pz@hKA(P92 zOC^E<+z_D^06B2&OuZl82!w9*f5h`|utVfC%t9vPC%n>=e{za0V*Z3wdNM=GBir%mppeV= z;Br|%u;cn8if}tSxRDo=L*s@CjHMoYC#TzkLb??Ki^k%SXaW*L@W7(UXgnE@UXI3+ z(dcia&RiOk5k5moK%%iojD-h8fgwSNTP}s(4^jxjG*AfsB{7XkW^nmz5Xu0P4F=Lt zJWe12K9g6n9hb%BLy95ma9^!(b|yP<1VWHQr90VMAs`pbm`oZOOQc$$Nkj~iL8F35 z5QE1fNtgh0B!p@jgGi+Y&;sy3`0csW5GmB8{NJjM#-&0s{-KpXrO{|0iH^i#&rVJ!UtJ@lq$7~21&#dEHG3e9)m>FaRg)l4j+Id z;Vf`SDw>YR;R1-X06Gl;m*$!biGfT4rPXDHzDHIsC>S7DR`#_ixJR8<~L15Qc$#x@{no z^1moj)Xz*8fT921a5@7MfF(hYqtl60Bms{{BT3i*EE0#t;YdV~Mup(_!|^{eoM1u5 z5r5SGe{T5qkWzy{P9Pn+4^fDpxr`1rZLzYHCoL8Vy`K|0joKrE6@#S@Sql}bYrusFJf zIR>O-iKL%|jwtPiXmc_i^ZydMzjTE}Ab}8s@kpWtoq+@y5FS7r21F7-EDjqGK%?QQ z=Ksx=pSAY?Qxwdk`iD7x#KG6>|3$*3n3w^`&$Ivc(e}Ti?=MsI_wKHL=`jD-Df-%c zzjaR3zc$rx-}c|C)AB16~k%*Fhl+!Rv4Ncp+{)2mq8p}so) zhgtW>7BoOhmot+)^f5F0(>YLs<3p4E2h_xK08mwTvbXgRrPgnXboFdWo9=8WUcfG{ zJ{fAlx!iEzf=%Npn!Kyt9b(*TwON)Gr~BygzN}0GnECCi3w2?g0hSCkMItNi7t98l z>@E8<%(n@xmudU04}0$^-+*CMv(C>eX6msXcTV-bFCFX@G?acUsoB#T*jI1)D#H5J zcI#J@Rv#A+?D%MfuR=HOl+2nn*VW=>N^&=}%=~a~=YlW0ignTXPf%8ww2|4HVn)`q zZ2>Ai=S`x++VU>2^fZT{jXG4ZGBC9M0}5UKZe@R0g8?+N>Z_}S8U(`<0c}rH;-c~M zQS~TNVnHfsn~O7`5hu|JyrRg_-#|+D@FV$_UAJ%B?(rkxjwlvB zZ09o!VEwi8RBZzL(zb!L z`|IU7^z}y%sGMAR(X<4MFq{zlZbi8tJG{p=%4m*XNl^zfVx3{17W z$y*Q=>!;`gOQIC+&L1UOZVs$%hs@dIk^+7D*HUFldpn837nJ$f>mde5~OrfrCwzwMEdW?A6jDu>W7?TM@= zhdb&|E=C6HFMjZD)h19SB-)l0G)Qs2(V*tzwJ<-QnN>Y!Z&Dkg?<cp0hn&LqX-q_!n!Ngo`ESa_t2DFY1rDvuSAw*I)_RMMZZ# zD{PA8u1v3+9)fnbNi8pb92}n*S)RyanN4%nO*6WcWa3Fz<$90h4IjW3YQh3 zdp(MVRUGn%7UU3$AE?K{0-B4H#q|ukrM>%A$hOO^surU~Sw=->&+H z%@f#Q_1nW6GW|z>#;nSa=59}ct`fNh7$Krk30$Ku$@#B{8Z*8w9+YUsL}qG=pS_OiuseB zoYvNDkAqmH%;LMtFJB1VDF42&a{rc;D>)hMZ}&Z5J-tJJ3iIW*r)L<4w|)Wa?pGBw z$6L7!B1fMz4Aj88u=TXZ;!Rm#jHKwP}b$9msrgJr9 z!Kzg69^;C&R<&`StLu!1p5KenUDz%5GJUl71tjFMcZQF;iMDIxGBM&#dH;%&>2Eko zij%@?I6EHsWU`iK#L8tTvP*1Kf1h7fF?ES(91%;w&7Wl$d68kB8ljAzdVvC0JpCO? z$NJ2QMiUdIi(QJ#O_WHXWp#6EmxMgOnM4U`HhAvov3P%{as8AyJmJ|L7|Mo*tBnVM z(b0HQmmO1xr3pn8F@?1V_dud$06mwes9727xwlcDmyrj>v90N?Qjy+bzYeY6p; z@3|lSVZ+AG;DMO1?t)cNPhJvPUE;nWZ2Qf*(*Q7~DAeYjVtVvi&59`;7CyQ%>Wfct z(>szkk~sfe#Mpr=J00o!4>}Ud(qIi<013HcSrucJe_LDc`UxMB4ytl%idg?fQZJ~t z8d-f*j%dQ#lJSy)jFKF3sERrED))@maE4|DS$rJ1MFy*Ku0na0Oa`uE(4wI@6I)%R z3%Hi4%-Pw|m{~W$g>9?r;U`foJwK{UZ-aN+Xk-_ucA*+mn<&tlq+QsoV{D@vMO^bk9r`tzzSf+@5=bHUC)N*ckW(aORkr%myA6v>AK6f%C?X-+pTw1CP>C(&Rkwpi67tf`|Bso z22lnFeCK|4cqjKpBS%l`T-3WcYsr?+9~;c8S?q7w(|=i^tj@*1`|fccqs_6hlYYhL z>n6%tuAVFg+umLLHKXx!x2M2-#ktplD$A@@kJoOB9v+EwoR&;(x~QI5kgeTyu;AVX z&x0d18Pnpo)DyIzms!-wv8lE!$y1b=0>CG{hOai=Yalmv4hifZ zc`ku?#R@k;`<6MmF=>>#hC@R0<^Zp^_HPnzE$venI-@I)vDxnSYx+TeGwujAvOMCZ%c zRQeYYB`ylJBRu*1^qT~)11%j-wsS;WaMziFfp8betC%Yhr>?JTSYBFQ;opBb&B|qQ zw^=Y%^6Bt%PlY5+86bJAV5!H3+0DfEoaSAJ56jlrCL+6eU5Y7V1)$TgNj_SaWiAQ6 z{zL}uv4OUgA_<2*?e?^}kbm!Os`hY5#Q`;Fj}p)})}1iC`h3Mf!^eJxo@WnLbi``) zzYqprb64poYG%ryIh4opNnkG_k8{j&XkuVtiAr!)TDolcaU@K(gl9 z%T>FNhKQ;2+?sn@tU88&9c*w|3oLD4w{2;*Mx#-0+y%r?|0&5;1jk%`}?TZMd1`oc> z)k3@37icxEW``(?pYELlw1h-e`YcE_GcDfrYP^1)bVfcFr;cJtN?8Lj)+MF(P8vH$ zCN)2_4+-9RA>dK+_$k3VbFpNHXLRI?q^d@xL1V9otdXHpd@7IEsIbGbOC_mP99@<+ zaO2XiMAZb=yV^pP`sLlx56=0B`Bk?$9%l8GB>~s#_K0$AZm6vsSAJ88?LVMZ`5{Bo zCX;5Vc5wZR10q($I$za>_5&uz8E1O@&HZ*_-amywA5PI;cRu9h?i8M?=<~&IFpm{s ziCz7tOROK;X^3`$3Fy>zNE?DFn?snwt~?U*%KxBi1}TDJ%qaZnq* z1X;p9TF|HHe)L#rxJPv4QL{Sp{Nz$cPJM7ycE-j_B_dCKG7QEVE!lmj`phj~%P|Y( zo)BBlb!M8^vh)3#7EM0nL+8B9nfLp=HBYt7;bi+1!wk)2KUbWm#2Efs9cxzKs&Rj4 z+~c4(08f`SKZTydx!$de$Asq?KkK=rG<4>{as?k^QC@8A9^F`|K|eb$G?j|$R2=l1 zICR)(aog14n=l>HRfc)Vq*>6X#9nmvf~n0{HdHk7wGa9Z9&b}{^qTK;Em%TOiZCVW zlttVgIZOsBULI3C;pc|?%qemuAb-L0d)!IDjwJG{(2SpeTAwr))OA@PNRdB?Fq#|=@w z<0TS1C9#*btY7?IQ<`IK?}mtjH(@R}%N_3Xw@aRy2j4o+w0Q4wz4uuiYTLATdy94P zvz63NEK|k$>fY*N)900y zZKCT_R=&NC$Mv6`oV7~+?{dA#HBju61w#A`B*D7N zB60}JK&FYc{8Ggqedua+k3e>-^f0;vxIy4VSj- zgUAu5J$-^_C*x~*Wsg6PEcuLGw~&YlelRx2qmf#jHm z!p5Qprc2k)&Z})k2(~T)o(ThSSgqqri|dv-kJoNoqm8d+w)I6<--x?-VbC`|4KQ;a zhp~RE16JO*aa)CWmyqXRBTngN7Cva^+`!?L?WTIs{k|yxAYJfQK3XRi75#Kthr!;z zrcrtN6LI9M28fn<4Oh2Uux3?5QX}zUzuhtD05b^UH+-Yy>dsC!-_+uU)py**MEgF z$zdjk>hrq|Z(M%s^h=z=#_;LWRk`T`b5~2?1{V3ACh^~WBJy=u%^4Y+0Xxq^qs~

4oN6_d$h(=No=`(HwA?WO-Ub)vY~UtQ(D G`@aB6|Ab5c literal 0 HcmV?d00001 diff --git a/public/images/types_tr.json b/public/images/types_tr.json new file mode 100644 index 00000000000..ee82cce3fb4 --- /dev/null +++ b/public/images/types_tr.json @@ -0,0 +1,440 @@ +{ + "textures": [ + { + "image": "types_tr.png", + "format": "RGBA8888", + "size": { + "w": 32, + "h": 280 + }, + "scale": 1, + "frames": [ + { + "filename": "unknown", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + } + }, + { + "filename": "bug", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 14, + "w": 32, + "h": 14 + } + }, + { + "filename": "dark", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 28, + "w": 32, + "h": 14 + } + }, + { + "filename": "dragon", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 42, + "w": 32, + "h": 14 + } + }, + { + "filename": "electric", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 56, + "w": 32, + "h": 14 + } + }, + { + "filename": "fairy", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 70, + "w": 32, + "h": 14 + } + }, + { + "filename": "fighting", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 84, + "w": 32, + "h": 14 + } + }, + { + "filename": "fire", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 98, + "w": 32, + "h": 14 + } + }, + { + "filename": "flying", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 112, + "w": 32, + "h": 14 + } + }, + { + "filename": "ghost", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 126, + "w": 32, + "h": 14 + } + }, + { + "filename": "grass", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 140, + "w": 32, + "h": 14 + } + }, + { + "filename": "ground", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 154, + "w": 32, + "h": 14 + } + }, + { + "filename": "ice", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 168, + "w": 32, + "h": 14 + } + }, + { + "filename": "normal", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 182, + "w": 32, + "h": 14 + } + }, + { + "filename": "poison", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 196, + "w": 32, + "h": 14 + } + }, + { + "filename": "psychic", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 210, + "w": 32, + "h": 14 + } + }, + { + "filename": "rock", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 224, + "w": 32, + "h": 14 + } + }, + { + "filename": "steel", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 238, + "w": 32, + "h": 14 + } + }, + { + "filename": "water", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 252, + "w": 32, + "h": 14 + } + }, + { + "filename": "stellar", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 266, + "w": 32, + "h": 14 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:f14cf47d9a8f1d40c8e03aa6ba00fff3:6fc4227b57a95d429a1faad4280f7ec8:5961efbfbf4c56b8745347e7a663a32f$" + } +} diff --git a/public/images/types_tr.png b/public/images/types_tr.png new file mode 100644 index 0000000000000000000000000000000000000000..8b644f1041c4236c9e729b30c529149e209a286c GIT binary patch literal 4467 zcmV-(5sdDMP)Px`6G=otRCt`tU4Kwj*PZ`dd|iK}*^=FMf@w@19aKQ6Lh@$$l@@Ai16bm~240OR z?a2C^^+$F$8LSE+;i?d48<5y!qG2 z4nAzXdvPj3#3+Rc2s=~dZYcmds_}3t@GJpaU+P4an~(q~L^W0A+@L%MjyL}rC-?0e z7dIgROx9e`z7WMkldg%z$$k4^0KkJwbF^gP3T1x;6jatKZhE$V39NDGA zKhBV9V(dK}uXhr9DHLQ4Sg-aUk64^cX4@)IS_wnJH~>IH^DsieI22@w1LgG!*WTsX zxAH=y(izoLbq*+IprLsf0F*j5%b=zUC}toOj6*0Ghlb{1&-&6bsA5t|5Dh#}!-A{< zOJ+yMmPN*?1mige_>|I4S>BEFg8qdlnnh!x(f;ERb2lto8mlD>jr&Fo9{?;`{Dcnw zXxvu|W7kir$?L~^wFIyrJAf%)`NADFTD$|ea_K$!X}Ec3na=7 zQ`4W)l7-VJo-=ntLiFs0hG7^!LI^=mnhyUUgb;&tr|R7eNp~tC-Kn%1zQUJN2vB znPVNh1R>I^u9+EeZpth#k^ycv+|WLV8<9v^2Rz*LqP3fl60o4<5Csx-3EZHnC$jS_ z0gZM;yBbF)+zqH_(Gh^iP?cjRA8qrxGFkgV6jNJsS)23Pn#<;HShF}zOBQMl4M%pv zBUkn8hTr%*!$*!>C8OFfwOH`8wG9Q4RnAwx(COaw@VHqyf}*)c`O@L_4IM8$@>F3V<&G z%ee)jQYNJU0Phm0*m;#^T(@c|rf-=Jz#O4yhO0oB0k`zCGOs7nk@ZKRe<2!g>Lvme zC$^fq;mY(4TC(usi7n=Cc;(P@S^~Ix@l%HH%Ax1TZ-2U1hksl-^c*qv6lL6g-zhC_ zI%;b_HhV7ioO{dGE(+XZ>9K8I7TI|QK$S&7P@XyfVDZJ0epovmu1hf=t%xrQ+#?*B zOjkJonmV`60W%ZD5xru@P8HI<;IY|rrD@~!#$!h@t`d0ZsMsk5z=F!iT$a8e^$=WiRhxUairmgoqZO+?z-!pf^;#v1=$->^Di;-)?o@e!38)iIX_(;#Q zB>bOxp0FT2&l2OKBE2^#T-O1ksmIpdI=zv$?H!w~cNY9HHyd6S^=G>q5$eBpr^G+!(i>x%u3k*w-J^-PwHw=8+FnqlS3HfPjhYtVfJxGYLV#Tj+ziY$# z`b7YM%x|qg>YQb$uU{mUSv{F81*<0wfI0wx?%%u=kr(l5LcKBlF)s64O*Wo~bR|rk zvrHJVNKaRa@5p*a;+Rvy+S0;~k4Q9@-b87?p`KSvdW6 zlertFJ@lBCEcCs$$J`AMkq#{ZEH?5D-yzaLj-B42!#@s@4q{aH72STj;l^ZhVwOIU zius`=tIcvEy=XXT02`B=Q2InF0H9^tX;a-3#W2k{rr>^llt=>c$B( zK(R5oX>8=%%;*7o8YxFXM+^X^NVS~uoKgU+A#GEqqO$O#WYg_d0%-uzq?=-6aufbN zWZyAG91BMPwv-8K<_3|iSAW8F;Ejf{NB-xBlB_l>s~o4<5pk{oe3ppeNAy|ZjfMep zH+&?Nq$Lac8wSkX@WY`xEdksyYn|cyaHx(P{I3=r{_){Z9WmOT&eHpYMcdO^r0wY} z>*2OLmXqo6vWye;2UdwSj+PTS^RjJwI?MjNVd-~fp)4>5rQexl<9LWTRq(d9 zr8xhY!^nRIC=1L%{xd*h@7n<22ucNIfjO4F8*CXU3(RqJLOW`CbttL;RN*KAk6TGM zKOhl&RFO@$TZg=!n=K!_NY6(VS(0y4S)|8zD6^FXr+p!cnXJjBf|gf@%-ygwp?Ak71j?(dfT(Qo%<*WT6aYICUgn*uj5_K7+`u~Q-C=$%q?-N-3BW4H zWR@TrL|X!-(~v(40DHRGHmf(GX8{X-@`)y+Dzq;|G5yc$d-}fr`N-4vDa-Xdec!)3 z^7Q=&*WS?*z~}G$isAd<+B@W6yPnStKe+Y|G4}4+uK!y!1;yoPjeL5_%c8cMzME~U z;1gQwx}dS8&8ARLT#mBRB9xUD*^Y_0#+Eh|6qkG2N;BYwl9GH+jyhAZtt>090jL-NYN=J#vu#GK0b3H)z`Vegg_h9AJD_q&NxqHe z+f*J8$3p)?8aX@WLp4%_?09OztWOLoQf>t_~YAhdx>K& zSnmHPN0wO5O@1h8oo8P>Y)kQL19br4=*SHZC9SjUb|<+zWp#xCu#Q!tr+U=xwShW3 zl(Y^Z)OlD*0*J;jMW{0c$WyoBv*3DZ#wycMhC0ok{iLJao#ZT?$c};^pcR0q?)=1( zO*B#I-0WCc`$816d+=x4obMj|nYkMV;#X?PLhpqaBhMTD@)bSL8-Dj64TJph6*Btb zDINY1yYc}TBe_4+e{Bc=(>trJ*Ve)F;CaeXndd}0BAM^swh+}MJ#M}ayo{Qp$E|l8 z$BkfmXSJt}Os~S9;Jh-b@FzHoEBpzTu?#9YB0YNs23|JbX{3=X001Hpdv(tD<)tSq z0jtEP4P0qh&@|U@b~3#Re}Z!}VxybhS&fRkTIumhyA#@4~}=5Dwl{!uMi*mB{&&E4=OY10zG6r;%S-6Ur$6TonV)FX0ndqSWzfG6sZ6fP!mgk9NB+_2 zn<;w!(doDS=5BcQT|IY76TfU2zO(NV(sJymxAr99?7M^*wM|EEzi-i06lDSc^2$TV z$uG0olVJbmhF@$N)QXw;E1b3D^neg^4JEBLH?ryN!sQ^?BtXR1{?@aeRQn zb%3oQHK1HhepysC=Ajh8XNj0w8O^PttE17}4Re>5Y01LT-HqmMc=(u}-Eh&@4a0Z% z7$H@f{#WbpF+z-t9ePGj;aCTbF28|_KpCk^I3(}NGPebajLTFaRAW15XB6&*LrJB z5{BAq&E4?c!Wu1E_+xvG`ES3wo=tQdoclNKKbH2TPhEbO`0{j1{Pa(Ej`5@RM*wED z1ICdv&E$XIY!~*Ef9I&wM^aew1*p@pmKZ+I{3hX0yhC-`_ex;oH|CNIpZhN<$^vl& zA#yHoZ121=*ZP8q|C{#`wjB7{I)jB`Pxc5k+{VC^y2J+^GIBhfW(&*Ecx!3832H<7k(80;Q!pm z(!qTC=Q|KSnhpS%(ba}EesgYZA3TdS{zPmCux9=}5$-*#nSamNLX`aYY%7rD$H)Gm z_3t11G63MpU$0}u558t|I5Nc#V9-o`A%GA57Wg8g@cF;sKT_`o09=b*XukWthV_B9 zmh4N*3*v02`Kd|TFM>!9t_1`qz}W+)PU4aTTYxwni}2A*%&0aUV%7y*n6@4B0BnE5 z`CG`1XPN;3WebB?A6N@tdT=e$@`3<>zRqT(j40&02#^Im=ZabJvZBWzhlZ& z0Km7C&0l#kivIPKa37#)9-S@z4T9KnryU$E1pvff82bk8G|8$yb6PB7F8uz0!?Blh z8Q8gTA%5&zwBc!D{a^jzcjj)G`TYu87Cwr*-_zOj;fvB^A6=ed$#dTSJ^qC2R{L|G zjOlguziRwHWRS#5j^)tn0000EWmrjOO-%qQ00008000000002eQ = [ unicodeRange: rangesByLanguage.chinese, }), extraOptions: { sizeAdjust: "70%", format: "woff2" }, - only: ["en", "es", "fr", "it", "de", "zh", "pt", "ko", "ca"], + only: ["en", "es", "fr", "it", "de", "zh", "pt", "ko", "ca", "da", "tr", "ro", "ru"], }, { face: new FontFace("pkmnems", "url(./fonts/unifont-15.1.05.subset.woff2)", { unicodeRange: rangesByLanguage.chinese, }), extraOptions: { format: "woff2" }, - only: ["en", "es", "fr", "it", "de", "zh", "pt", "ko", "ca"], + only: ["en", "es", "fr", "it", "de", "zh", "pt", "ko", "ca", "da", "tr", "ro", "ru"], }, // japanese { @@ -174,7 +174,7 @@ export async function initI18n(): Promise { "es-MX": ["es-ES", "en"], default: ["en"], }, - supportedLngs: ["en", "es-ES", "es-MX", "fr", "it", "de", "zh-CN", "zh-TW", "pt-BR", "ko", "ja", "ca-ES"], + supportedLngs: ["en", "es-ES", "es-MX", "fr", "it", "de", "zh-CN", "zh-TW", "pt-BR", "ko", "ja", "ca", "da", "tr", "ro", "ru"], backend: { loadPath(lng: string, [ns]: string[]) { let fileName: string; diff --git a/src/system/settings/settings.ts b/src/system/settings/settings.ts index 8bbba267bd6..8a0e4f8cdc0 100644 --- a/src/system/settings/settings.ts +++ b/src/system/settings/settings.ts @@ -921,10 +921,6 @@ export function setSetting(setting: string, value: number): boolean { label: "Español (LATAM)", handler: () => changeLocaleHandler("es-MX"), }, - { - label: "Italiano", - handler: () => changeLocaleHandler("it"), - }, { label: "Français", handler: () => changeLocaleHandler("fr"), @@ -933,18 +929,14 @@ export function setSetting(setting: string, value: number): boolean { label: "Deutsch", handler: () => changeLocaleHandler("de"), }, + { + label: "Italiano", + handler: () => changeLocaleHandler("it"), + }, { label: "Português (BR)", handler: () => changeLocaleHandler("pt-BR"), }, - { - label: "简体中文", - handler: () => changeLocaleHandler("zh-CN"), - }, - { - label: "繁體中文", - handler: () => changeLocaleHandler("zh-TW"), - }, { label: "한국어", handler: () => changeLocaleHandler("ko"), @@ -954,8 +946,32 @@ export function setSetting(setting: string, value: number): boolean { handler: () => changeLocaleHandler("ja"), }, { - label: "Català", - handler: () => changeLocaleHandler("ca-ES"), + label: "简体中文", + handler: () => changeLocaleHandler("zh-CN"), + }, + { + label: "繁體中文", + handler: () => changeLocaleHandler("zh-TW"), + }, + { + label: "Català (Needs Help)", + handler: () => changeLocaleHandler("ca"), + }, + { + label: "Türkçe (Needs Help)", + handler: () => changeLocaleHandler("tr") + }, + { + label: "Русский (Needs Help)", + handler: () => changeLocaleHandler("ru"), + }, + { + label: "Dansk (Needs Help)", + handler: () => changeLocaleHandler("da") + }, + { + label: "Română (Needs Help)", + handler: () => changeLocaleHandler("ro") }, { label: i18next.t("settings:back"), diff --git a/src/ui/settings/settings-display-ui-handler.ts b/src/ui/settings/settings-display-ui-handler.ts index 4878bae72cb..0636bd25567 100644 --- a/src/ui/settings/settings-display-ui-handler.ts +++ b/src/ui/settings/settings-display-ui-handler.ts @@ -39,12 +39,6 @@ export default class SettingsDisplayUiHandler extends AbstractSettingsUiHandler label: "Español (LATAM)", }; break; - case "it": - this.settings[languageIndex].options[0] = { - value: "Italiano", - label: "Italiano", - }; - break; case "fr": this.settings[languageIndex].options[0] = { value: "Français", @@ -57,24 +51,18 @@ export default class SettingsDisplayUiHandler extends AbstractSettingsUiHandler label: "Deutsch", }; break; + case "it": + this.settings[languageIndex].options[0] = { + value: "Italiano", + label: "Italiano", + }; + break; case "pt-BR": this.settings[languageIndex].options[0] = { value: "Português (BR)", label: "Português (BR)", }; break; - case "zh-CN": - this.settings[languageIndex].options[0] = { - value: "简体中文", - label: "简体中文", - }; - break; - case "zh-TW": - this.settings[languageIndex].options[0] = { - value: "繁體中文", - label: "繁體中文", - }; - break; case "ko": case "ko-KR": this.settings[languageIndex].options[0] = { @@ -88,10 +76,46 @@ export default class SettingsDisplayUiHandler extends AbstractSettingsUiHandler label: "日本語", }; break; - case "ca-ES": + case "zh-CN": + this.settings[languageIndex].options[0] = { + value: "简体中文", + label: "简体中文", + }; + break; + case "zh-TW": + this.settings[languageIndex].options[0] = { + value: "繁體中文", + label: "繁體中文", + }; + break; + case "ca": this.settings[languageIndex].options[0] = { value: "Català", - label: "Català", + label: "Català (Needs Help)", + }; + break; + case "tr": + this.settings[languageIndex].options[0] = { + value: "Türkçe", + label: "Türkçe (Needs Help)", + }; + break; + case "ru": + this.settings[languageIndex].options[0] = { + value: "Русский", + label: "Русский (Needs Help)", + }; + break; + case "da": + this.settings[languageIndex].options[0] = { + value: "Dansk", + label: "Dansk (Needs Help)", + }; + break; + case "ro": + this.settings[languageIndex].options[0] = { + value: "Română", + label: "Română (Needs Help)", }; break; default: diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index ff2298f268d..945ddaa6ed4 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -162,6 +162,24 @@ const languageSettings: { [key: string]: LanguageSetting } = { starterInfoYOffset: 0.5, starterInfoXPos: 29, }, + da:{ + starterInfoTextSize: "56px", + instructionTextSize: "38px", + }, + tr:{ + starterInfoTextSize: "56px", + instructionTextSize: "38px", + }, + ro:{ + starterInfoTextSize: "56px", + instructionTextSize: "38px", + }, + ru: { + starterInfoTextSize: "46px", + instructionTextSize: "38px", + starterInfoYOffset: 0.5, + starterInfoXPos: 26, + }, }; const valueReductionMax = 2; diff --git a/src/utils/common.ts b/src/utils/common.ts index a018b49da3c..1c7ea60da16 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -435,14 +435,18 @@ export function hasAllLocalizedSprites(lang?: string): boolean { case "es-ES": case "es-MX": case "fr": + case "da": case "de": case "it": case "zh-CN": case "zh-TW": case "pt-BR": + case "ro": + case "tr": case "ko": case "ja": - case "ca-ES": + case "ca": + case "ru": return true; default: return false; From 831381e4ce7adf712cb6cf5b0854893e5775fc1d Mon Sep 17 00:00:00 2001 From: SmhMyHead <191356399+SmhMyHead@users.noreply.github.com> Date: Sat, 31 May 2025 17:54:02 +0200 Subject: [PATCH 32/71] [UI/UIX] Default cursor to new move when learning a move (#5908) --- src/ui/summary-ui-handler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/summary-ui-handler.ts b/src/ui/summary-ui-handler.ts index 24e790f7c61..a6f640b436f 100644 --- a/src/ui/summary-ui-handler.ts +++ b/src/ui/summary-ui-handler.ts @@ -1239,7 +1239,7 @@ export default class SummaryUiHandler extends UiHandler { this.moveSelect = true; this.extraMoveRowContainer.setVisible(true); this.selectedMoveIndex = -1; - this.setCursor(0); + this.setCursor(this.summaryUiMode === SummaryUiMode.LEARN_MOVE ? 4 : 0); this.showMoveEffect(); } From 7859fea26b77cc9e93ffbc879da3439928c4367c Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Sun, 1 Jun 2025 21:37:47 +0200 Subject: [PATCH 33/71] [i18n] Translatable Game Speed values (#5916) --- public/locales | 2 +- src/system/settings/settings.ts | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/public/locales b/public/locales index 88c60b6f8d5..4dab23d6a78 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 88c60b6f8d5babfb0c157b31ceff22486712295c +Subproject commit 4dab23d6a78b6cf32db43c9953e3c2000f448007 diff --git a/src/system/settings/settings.ts b/src/system/settings/settings.ts index 8a0e4f8cdc0..69abc669870 100644 --- a/src/system/settings/settings.ts +++ b/src/system/settings/settings.ts @@ -193,35 +193,35 @@ export const Setting: Array = [ options: [ { value: "1", - label: "1x", + label: i18next.t("settings:gameSpeed1x"), }, { value: "1.25", - label: "1.25x", + label: i18next.t("settings:gameSpeed1_25x"), }, { value: "1.5", - label: "1.5x", + label: i18next.t("settings:gameSpeed1_5x"), }, { value: "2", - label: "2x", + label: i18next.t("settings:gameSpeed2x"), }, { value: "2.5", - label: "2.5x", + label: i18next.t("settings:gameSpeed2_5x"), }, { value: "3", - label: "3x", + label: i18next.t("settings:gameSpeed3x"), }, { value: "4", - label: "4x", + label: i18next.t("settings:gameSpeed4x"), }, { value: "5", - label: "5x", + label: i18next.t("settings:gameSpeed5x"), }, ], default: 3, From 369b3307cdc46317a65a4ad1707399090a29ed2c Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Mon, 2 Jun 2025 00:40:57 +0200 Subject: [PATCH 34/71] [UI/UX] Moves menu position adjustments (#5917) --- src/ui/fight-ui-handler.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ui/fight-ui-handler.ts b/src/ui/fight-ui-handler.ts index 6dbbcd47300..208e627023b 100644 --- a/src/ui/fight-ui-handler.ts +++ b/src/ui/fight-ui-handler.ts @@ -292,7 +292,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { this.accuracyText.setVisible(hasMove); this.moveCategoryIcon.setVisible(hasMove); - this.cursorObj.setPosition(13 + (cursor % 2 === 1 ? 100 : 0), -31 + (cursor >= 2 ? 15 : 0)); + this.cursorObj.setPosition(13 + (cursor % 2 === 1 ? 114 : 0), -31 + (cursor >= 2 ? 15 : 0)); return changed; } @@ -322,7 +322,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { const moveset = pokemon.getMoveset(); for (let moveIndex = 0; moveIndex < 4; moveIndex++) { - const moveText = addTextObject(moveIndex % 2 === 0 ? 0 : 100, moveIndex < 2 ? 0 : 16, "-", TextStyle.WINDOW); + const moveText = addTextObject(moveIndex % 2 === 0 ? 0 : 114, moveIndex < 2 ? 0 : 16, "-", TextStyle.WINDOW); moveText.setName("text-empty-move"); if (moveIndex < moveset.length) { From cdda539ac5609c1f0fa5da0114ee51d5bff82bf5 Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Sun, 1 Jun 2025 18:45:30 -0400 Subject: [PATCH 35/71] [Test] Remove redundant entries and `Array.fill()` in moveset overrides (#5907) * Removed unneeded duplicate entries from movesets * Removed `array.fill` in moveset overrides * Reverted accidental changes --- test/abilities/aura_break.test.ts | 11 ++++++----- test/abilities/contrary.test.ts | 5 +---- test/abilities/ice_face.test.ts | 11 ++++------- test/abilities/libero.test.ts | 14 +++++++------- test/abilities/mycelium_might.test.ts | 18 ++++++++++-------- test/abilities/power_construct.test.ts | 9 +++++---- test/abilities/protean.test.ts | 14 +++++++------- test/abilities/sand_veil.test.ts | 16 +++++++++------- test/abilities/schooling.test.ts | 5 +---- test/abilities/screen_cleaner.test.ts | 7 +++---- test/abilities/stall.test.ts | 13 +++++++------ test/abilities/sweet_veil.test.ts | 13 +++++++------ test/abilities/synchronize.test.ts | 5 +---- test/abilities/unseen_fist.test.ts | 16 ++++++++-------- test/battle/inverse_battle.test.ts | 4 +--- test/battle/special_battle.test.ts | 13 +++++++------ test/items/leek.test.ts | 2 +- test/items/leftovers.test.ts | 17 +++++++++-------- test/moves/astonish.test.ts | 15 ++++++++------- test/moves/aurora_veil.test.ts | 17 +++++++++-------- test/moves/chilly_reception.test.ts | 9 +++------ test/moves/double_team.test.ts | 15 ++++++++------- test/moves/dynamax_cannon.test.ts | 10 ++++++++-- test/moves/flower_shield.test.ts | 4 +--- test/moves/freezy_frost.test.ts | 4 ++-- test/moves/fusion_bolt.test.ts | 19 +++++++++---------- test/moves/fusion_flare.test.ts | 17 ++++++++--------- test/moves/fusion_flare_bolt.test.ts | 23 +++++++++++------------ test/moves/light_screen.test.ts | 15 ++++++++------- test/moves/magnet_rise.test.ts | 15 ++++++++------- test/moves/powder.test.ts | 6 +++--- test/moves/reflect.test.ts | 15 ++++++++------- test/moves/retaliate.test.ts | 2 +- test/moves/swallow.test.ts | 17 ++++++++--------- test/moves/tackle.test.ts | 15 ++++++++------- test/moves/throat_chop.test.ts | 4 ++-- test/moves/tidy_up.test.ts | 15 +++++---------- 37 files changed, 212 insertions(+), 218 deletions(-) diff --git a/test/abilities/aura_break.test.ts b/test/abilities/aura_break.test.ts index f88d7d875bf..5b2211d7b3c 100644 --- a/test/abilities/aura_break.test.ts +++ b/test/abilities/aura_break.test.ts @@ -24,11 +24,12 @@ describe("Abilities - Aura Break", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.moveset([Moves.MOONBLAST, Moves.DARK_PULSE, Moves.MOONBLAST, Moves.DARK_PULSE]); - game.override.enemyMoveset(Moves.SPLASH); - game.override.enemyAbility(Abilities.AURA_BREAK); - game.override.enemySpecies(Species.SHUCKLE); + game.override + .battleStyle("single") + .moveset([Moves.MOONBLAST, Moves.DARK_PULSE]) + .enemyMoveset(Moves.SPLASH) + .enemyAbility(Abilities.AURA_BREAK) + .enemySpecies(Species.SHUCKLE); }); it("reverses the effect of Fairy Aura", async () => { diff --git a/test/abilities/contrary.test.ts b/test/abilities/contrary.test.ts index 929d620c232..99c5208f561 100644 --- a/test/abilities/contrary.test.ts +++ b/test/abilities/contrary.test.ts @@ -54,10 +54,7 @@ describe("Abilities - Contrary", () => { }); it("should block negative effects", async () => { - game.override - .enemyPassiveAbility(Abilities.CLEAR_BODY) - .enemyMoveset([Moves.HOWL, Moves.HOWL, Moves.HOWL, Moves.HOWL]) - .moveset([Moves.SPLASH]); + game.override.enemyPassiveAbility(Abilities.CLEAR_BODY).enemyMoveset(Moves.HOWL).moveset([Moves.SPLASH]); await game.classicMode.startBattle([Species.SLOWBRO]); const enemyPokemon = game.scene.getEnemyPokemon()!; diff --git a/test/abilities/ice_face.test.ts b/test/abilities/ice_face.test.ts index 38269c29af1..cb9530fe355 100644 --- a/test/abilities/ice_face.test.ts +++ b/test/abilities/ice_face.test.ts @@ -106,8 +106,7 @@ describe("Abilities - Ice Face", () => { }); it("transforms to Ice Face when Hail or Snow starts", async () => { - game.override.moveset([Moves.QUICK_ATTACK]); - game.override.enemyMoveset([Moves.HAIL, Moves.HAIL, Moves.HAIL, Moves.HAIL]); + game.override.moveset([Moves.QUICK_ATTACK]).enemyMoveset(Moves.HAIL); await game.classicMode.startBattle([Species.MAGIKARP]); @@ -128,8 +127,7 @@ describe("Abilities - Ice Face", () => { }); it("transforms to Ice Face when summoned on arena with active Snow or Hail", async () => { - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - game.override.moveset([Moves.SNOWSCAPE]); + game.override.enemyMoveset(Moves.TACKLE).moveset([Moves.SNOWSCAPE]); await game.classicMode.startBattle([Species.EISCUE, Species.NINJASK]); @@ -155,8 +153,7 @@ describe("Abilities - Ice Face", () => { }); it("will not revert to its Ice Face if there is already Hail when it changes into Noice", async () => { - game.override.enemySpecies(Species.SHUCKLE); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + game.override.enemySpecies(Species.SHUCKLE).enemyMoveset(Moves.TACKLE); await game.classicMode.startBattle([Species.EISCUE]); @@ -175,7 +172,7 @@ describe("Abilities - Ice Face", () => { }); it("persists form change when switched out", async () => { - game.override.enemyMoveset([Moves.QUICK_ATTACK, Moves.QUICK_ATTACK, Moves.QUICK_ATTACK, Moves.QUICK_ATTACK]); + game.override.enemyMoveset(Moves.QUICK_ATTACK); await game.classicMode.startBattle([Species.EISCUE, Species.MAGIKARP]); diff --git a/test/abilities/libero.test.ts b/test/abilities/libero.test.ts index ea4e288bdb0..a099e6ff047 100644 --- a/test/abilities/libero.test.ts +++ b/test/abilities/libero.test.ts @@ -29,11 +29,12 @@ describe("Abilities - Libero", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.ability(Abilities.LIBERO); - game.override.startingLevel(100); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyMoveset([Moves.ENDURE, Moves.ENDURE, Moves.ENDURE, Moves.ENDURE]); + game.override + .battleStyle("single") + .ability(Abilities.LIBERO) + .startingLevel(100) + .enemySpecies(Species.RATTATA) + .enemyMoveset(Moves.ENDURE); }); test("ability applies and changes a pokemon's type", async () => { @@ -173,8 +174,7 @@ describe("Abilities - Libero", () => { }); test("ability applies correctly even if the pokemon's move is protected against", async () => { - game.override.moveset([Moves.TACKLE]); - game.override.enemyMoveset([Moves.PROTECT, Moves.PROTECT, Moves.PROTECT, Moves.PROTECT]); + game.override.moveset([Moves.TACKLE]).enemyMoveset(Moves.PROTECT); await game.classicMode.startBattle([Species.MAGIKARP]); diff --git a/test/abilities/mycelium_might.test.ts b/test/abilities/mycelium_might.test.ts index 18465f9b64e..9c898063201 100644 --- a/test/abilities/mycelium_might.test.ts +++ b/test/abilities/mycelium_might.test.ts @@ -24,13 +24,15 @@ describe("Abilities - Mycelium Might", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.disableCrits(); - game.override.enemySpecies(Species.SHUCKLE); - game.override.enemyAbility(Abilities.CLEAR_BODY); - game.override.enemyMoveset([Moves.QUICK_ATTACK, Moves.QUICK_ATTACK, Moves.QUICK_ATTACK, Moves.QUICK_ATTACK]); - game.override.ability(Abilities.MYCELIUM_MIGHT); - game.override.moveset([Moves.QUICK_ATTACK, Moves.BABY_DOLL_EYES]); + game.override + .battleStyle("single") + .disableCrits() + .enemySpecies(Species.SHUCKLE) + .enemyAbility(Abilities.CLEAR_BODY) + + .enemyMoveset(Moves.QUICK_ATTACK) + .ability(Abilities.MYCELIUM_MIGHT) + .moveset([Moves.QUICK_ATTACK, Moves.BABY_DOLL_EYES]); }); /** @@ -64,7 +66,7 @@ describe("Abilities - Mycelium Might", () => { }, 20000); it("will still go first if a status move that is in a higher priority bracket than the opponent's move is used", async () => { - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + game.override.enemyMoveset(Moves.TACKLE); await game.classicMode.startBattle([Species.REGIELEKI]); const enemyPokemon = game.scene.getEnemyPokemon(); diff --git a/test/abilities/power_construct.test.ts b/test/abilities/power_construct.test.ts index 0ff90a2c0df..67005f5c87e 100644 --- a/test/abilities/power_construct.test.ts +++ b/test/abilities/power_construct.test.ts @@ -25,10 +25,11 @@ describe("Abilities - POWER CONSTRUCT", () => { beforeEach(() => { game = new GameManager(phaserGame); const moveToUse = Moves.SPLASH; - game.override.battleStyle("single"); - game.override.ability(Abilities.POWER_CONSTRUCT); - game.override.moveset([moveToUse]); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + game.override + .battleStyle("single") + .ability(Abilities.POWER_CONSTRUCT) + .moveset([moveToUse]) + .enemyMoveset(Moves.TACKLE); }); test("check if fainted 50% Power Construct Pokemon switches to base form on arena reset", async () => { diff --git a/test/abilities/protean.test.ts b/test/abilities/protean.test.ts index bfe6dd32282..e868be8e231 100644 --- a/test/abilities/protean.test.ts +++ b/test/abilities/protean.test.ts @@ -29,11 +29,12 @@ describe("Abilities - Protean", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.ability(Abilities.PROTEAN); - game.override.startingLevel(100); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyMoveset([Moves.ENDURE, Moves.ENDURE, Moves.ENDURE, Moves.ENDURE]); + game.override + .battleStyle("single") + .ability(Abilities.PROTEAN) + .startingLevel(100) + .enemySpecies(Species.RATTATA) + .enemyMoveset(Moves.ENDURE); }); test("ability applies and changes a pokemon's type", async () => { @@ -173,8 +174,7 @@ describe("Abilities - Protean", () => { }); test("ability applies correctly even if the pokemon's move is protected against", async () => { - game.override.moveset([Moves.TACKLE]); - game.override.enemyMoveset([Moves.PROTECT, Moves.PROTECT, Moves.PROTECT, Moves.PROTECT]); + game.override.moveset([Moves.TACKLE]).enemyMoveset(Moves.PROTECT); await game.classicMode.startBattle([Species.MAGIKARP]); diff --git a/test/abilities/sand_veil.test.ts b/test/abilities/sand_veil.test.ts index 116850e1e5a..a74538fef16 100644 --- a/test/abilities/sand_veil.test.ts +++ b/test/abilities/sand_veil.test.ts @@ -28,13 +28,15 @@ describe("Abilities - Sand Veil", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.moveset([Moves.SPLASH]); - game.override.enemySpecies(Species.MEOWSCARADA); - game.override.enemyAbility(Abilities.INSOMNIA); - game.override.enemyMoveset([Moves.TWISTER, Moves.TWISTER, Moves.TWISTER, Moves.TWISTER]); - game.override.startingLevel(100); - game.override.enemyLevel(100); - game.override.weather(WeatherType.SANDSTORM).battleStyle("double"); + game.override + .moveset([Moves.SPLASH]) + .enemySpecies(Species.MEOWSCARADA) + .enemyAbility(Abilities.INSOMNIA) + .enemyMoveset(Moves.TWISTER) + .startingLevel(100) + .enemyLevel(100) + .weather(WeatherType.SANDSTORM) + .battleStyle("double"); }); test("ability should increase the evasiveness of the source", async () => { diff --git a/test/abilities/schooling.test.ts b/test/abilities/schooling.test.ts index ac4e3c837c5..a94b76e38ff 100644 --- a/test/abilities/schooling.test.ts +++ b/test/abilities/schooling.test.ts @@ -25,10 +25,7 @@ describe("Abilities - SCHOOLING", () => { beforeEach(() => { game = new GameManager(phaserGame); const moveToUse = Moves.SPLASH; - game.override.battleStyle("single"); - game.override.ability(Abilities.SCHOOLING); - game.override.moveset([moveToUse]); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + game.override.battleStyle("single").ability(Abilities.SCHOOLING).moveset([moveToUse]).enemyMoveset(Moves.TACKLE); }); test("check if fainted pokemon switches to base form on arena reset", async () => { diff --git a/test/abilities/screen_cleaner.test.ts b/test/abilities/screen_cleaner.test.ts index ea99ba00f87..f96f7bf99e2 100644 --- a/test/abilities/screen_cleaner.test.ts +++ b/test/abilities/screen_cleaner.test.ts @@ -30,8 +30,7 @@ describe("Abilities - Screen Cleaner", () => { }); it("removes Aurora Veil", async () => { - game.override.moveset([Moves.HAIL]); - game.override.enemyMoveset([Moves.AURORA_VEIL, Moves.AURORA_VEIL, Moves.AURORA_VEIL, Moves.AURORA_VEIL]); + game.override.moveset([Moves.HAIL]).enemyMoveset(Moves.AURORA_VEIL); await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); @@ -48,7 +47,7 @@ describe("Abilities - Screen Cleaner", () => { }); it("removes Light Screen", async () => { - game.override.enemyMoveset([Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN]); + game.override.enemyMoveset(Moves.LIGHT_SCREEN); await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); @@ -65,7 +64,7 @@ describe("Abilities - Screen Cleaner", () => { }); it("removes Reflect", async () => { - game.override.enemyMoveset([Moves.REFLECT, Moves.REFLECT, Moves.REFLECT, Moves.REFLECT]); + game.override.enemyMoveset(Moves.REFLECT); await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); diff --git a/test/abilities/stall.test.ts b/test/abilities/stall.test.ts index 5c17f71c48d..6e6fe04a183 100644 --- a/test/abilities/stall.test.ts +++ b/test/abilities/stall.test.ts @@ -22,12 +22,13 @@ describe("Abilities - Stall", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.disableCrits(); - game.override.enemySpecies(Species.REGIELEKI); - game.override.enemyAbility(Abilities.STALL); - game.override.enemyMoveset([Moves.QUICK_ATTACK, Moves.QUICK_ATTACK, Moves.QUICK_ATTACK, Moves.QUICK_ATTACK]); - game.override.moveset([Moves.QUICK_ATTACK, Moves.TACKLE]); + game.override + .battleStyle("single") + .disableCrits() + .enemySpecies(Species.REGIELEKI) + .enemyAbility(Abilities.STALL) + .enemyMoveset(Moves.QUICK_ATTACK) + .moveset([Moves.QUICK_ATTACK, Moves.TACKLE]); }); /** diff --git a/test/abilities/sweet_veil.test.ts b/test/abilities/sweet_veil.test.ts index 80d7165619f..e294938acd4 100644 --- a/test/abilities/sweet_veil.test.ts +++ b/test/abilities/sweet_veil.test.ts @@ -25,11 +25,12 @@ describe("Abilities - Sweet Veil", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("double"); - game.override.moveset([Moves.SPLASH, Moves.REST, Moves.YAWN]); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyAbility(Abilities.BALL_FETCH); - game.override.enemyMoveset([Moves.POWDER, Moves.POWDER, Moves.POWDER, Moves.POWDER]); + game.override + .battleStyle("double") + .moveset([Moves.SPLASH, Moves.REST, Moves.YAWN]) + .enemySpecies(Species.MAGIKARP) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(Moves.POWDER); }); it("prevents the user and its allies from falling asleep", async () => { @@ -56,7 +57,7 @@ describe("Abilities - Sweet Veil", () => { }); it("causes Yawn to fail if used on the user or its allies", async () => { - game.override.enemyMoveset([Moves.YAWN, Moves.YAWN, Moves.YAWN, Moves.YAWN]); + game.override.enemyMoveset(Moves.YAWN); await game.classicMode.startBattle([Species.SWIRLIX, Species.MAGIKARP]); game.move.select(Moves.SPLASH); diff --git a/test/abilities/synchronize.test.ts b/test/abilities/synchronize.test.ts index 783201d7a5b..e781d55fe10 100644 --- a/test/abilities/synchronize.test.ts +++ b/test/abilities/synchronize.test.ts @@ -66,10 +66,7 @@ describe("Abilities - Synchronize", () => { }); it("does not trigger when Pokemon is statused by Toxic Spikes", async () => { - game.override - .ability(Abilities.SYNCHRONIZE) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Array(4).fill(Moves.TOXIC_SPIKES)); + game.override.ability(Abilities.SYNCHRONIZE).enemyAbility(Abilities.BALL_FETCH).enemyMoveset(Moves.TOXIC_SPIKES); await game.classicMode.startBattle([Species.FEEBAS, Species.MILOTIC]); diff --git a/test/abilities/unseen_fist.test.ts b/test/abilities/unseen_fist.test.ts index 6c14e82fc39..d78ce8c5bbf 100644 --- a/test/abilities/unseen_fist.test.ts +++ b/test/abilities/unseen_fist.test.ts @@ -24,12 +24,13 @@ describe("Abilities - Unseen Fist", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.starterSpecies(Species.URSHIFU); - game.override.enemySpecies(Species.SNORLAX); - game.override.enemyMoveset([Moves.PROTECT, Moves.PROTECT, Moves.PROTECT, Moves.PROTECT]); - game.override.startingLevel(100); - game.override.enemyLevel(100); + game.override + .battleStyle("single") + .starterSpecies(Species.URSHIFU) + .enemySpecies(Species.SNORLAX) + .enemyMoveset(Moves.PROTECT) + .startingLevel(100) + .enemyLevel(100); }); it("should cause a contact move to ignore Protect", async () => @@ -73,8 +74,7 @@ async function testUnseenFistHitResult( protectMove: Moves, shouldSucceed = true, ): Promise { - game.override.moveset([attackMove]); - game.override.enemyMoveset([protectMove, protectMove, protectMove, protectMove]); + game.override.moveset([attackMove]).enemyMoveset(protectMove); await game.classicMode.startBattle(); diff --git a/test/battle/inverse_battle.test.ts b/test/battle/inverse_battle.test.ts index 799442bb603..168df0b9505 100644 --- a/test/battle/inverse_battle.test.ts +++ b/test/battle/inverse_battle.test.ts @@ -188,9 +188,7 @@ describe("Inverse Battle", () => { }); it("Conversion 2 should change the type to the resistive type - Conversion 2 against Dragonite", async () => { - game.override - .moveset([Moves.CONVERSION_2]) - .enemyMoveset([Moves.DRAGON_CLAW, Moves.DRAGON_CLAW, Moves.DRAGON_CLAW, Moves.DRAGON_CLAW]); + game.override.moveset([Moves.CONVERSION_2]).enemyMoveset(Moves.DRAGON_CLAW); await game.challengeMode.startBattle(); diff --git a/test/battle/special_battle.test.ts b/test/battle/special_battle.test.ts index 6f4034cd8cd..8d75e530ca6 100644 --- a/test/battle/special_battle.test.ts +++ b/test/battle/special_battle.test.ts @@ -23,12 +23,13 @@ describe("Test Battle Phase", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.enemySpecies(Species.RATTATA); - game.override.startingLevel(2000); - game.override.moveset([Moves.TACKLE]); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.ability(Abilities.HYDRATION); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + game.override + .enemySpecies(Species.RATTATA) + .startingLevel(2000) + .moveset([Moves.TACKLE]) + .enemyAbility(Abilities.HYDRATION) + .ability(Abilities.HYDRATION) + .enemyMoveset(Moves.TACKLE); }); it("startBattle 2vs1 boss", async () => { diff --git a/test/items/leek.test.ts b/test/items/leek.test.ts index 7a6975f6dae..be2aa73299c 100644 --- a/test/items/leek.test.ts +++ b/test/items/leek.test.ts @@ -25,7 +25,7 @@ describe("Items - Leek", () => { game.override .enemySpecies(Species.MAGIKARP) - .enemyMoveset([Moves.SPLASH, Moves.SPLASH, Moves.SPLASH, Moves.SPLASH]) + .enemyMoveset(Moves.SPLASH) .startingHeldItems([{ name: "LEEK" }]) .moveset([Moves.TACKLE]) .battleStyle("single"); diff --git a/test/items/leftovers.test.ts b/test/items/leftovers.test.ts index f4825c2b721..a31b711eb63 100644 --- a/test/items/leftovers.test.ts +++ b/test/items/leftovers.test.ts @@ -23,14 +23,15 @@ describe("Items - Leftovers", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.startingLevel(2000); - game.override.ability(Abilities.UNNERVE); - game.override.moveset([Moves.SPLASH]); - game.override.enemySpecies(Species.SHUCKLE); - game.override.enemyAbility(Abilities.UNNERVE); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - game.override.startingHeldItems([{ name: "LEFTOVERS", count: 1 }]); + game.override + .battleStyle("single") + .startingLevel(2000) + .ability(Abilities.UNNERVE) + .moveset([Moves.SPLASH]) + .enemySpecies(Species.SHUCKLE) + .enemyAbility(Abilities.UNNERVE) + .enemyMoveset(Moves.TACKLE) + .startingHeldItems([{ name: "LEFTOVERS", count: 1 }]); }); it("leftovers works", async () => { diff --git a/test/moves/astonish.test.ts b/test/moves/astonish.test.ts index daa9b0bb878..c07b0d7d2c5 100644 --- a/test/moves/astonish.test.ts +++ b/test/moves/astonish.test.ts @@ -27,13 +27,14 @@ describe("Moves - Astonish", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.moveset([Moves.ASTONISH, Moves.SPLASH]); - game.override.enemySpecies(Species.BLASTOISE); - game.override.enemyAbility(Abilities.INSOMNIA); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - game.override.startingLevel(100); - game.override.enemyLevel(100); + game.override + .battleStyle("single") + .moveset([Moves.ASTONISH, Moves.SPLASH]) + .enemySpecies(Species.BLASTOISE) + .enemyAbility(Abilities.INSOMNIA) + .enemyMoveset(Moves.TACKLE) + .startingLevel(100) + .enemyLevel(100); vi.spyOn(allMoves[Moves.ASTONISH], "chance", "get").mockReturnValue(100); }); diff --git a/test/moves/aurora_veil.test.ts b/test/moves/aurora_veil.test.ts index 96e74ec5a9e..76569ac4a0e 100644 --- a/test/moves/aurora_veil.test.ts +++ b/test/moves/aurora_veil.test.ts @@ -36,14 +36,15 @@ describe("Moves - Aurora Veil", () => { beforeEach(() => { game = new GameManager(phaserGame); globalScene = game.scene; - game.override.battleStyle("single"); - game.override.ability(Abilities.NONE); - game.override.moveset([Moves.ABSORB, Moves.ROCK_SLIDE, Moves.TACKLE]); - game.override.enemyLevel(100); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyMoveset([Moves.AURORA_VEIL, Moves.AURORA_VEIL, Moves.AURORA_VEIL, Moves.AURORA_VEIL]); - game.override.disableCrits(); - game.override.weather(WeatherType.HAIL); + game.override + .battleStyle("single") + .ability(Abilities.BALL_FETCH) + .moveset([Moves.ABSORB, Moves.ROCK_SLIDE, Moves.TACKLE]) + .enemyLevel(100) + .enemySpecies(Species.MAGIKARP) + .enemyMoveset(Moves.AURORA_VEIL) + .disableCrits() + .weather(WeatherType.HAIL); }); it("reduces damage of physical attacks by half in a single battle", async () => { diff --git a/test/moves/chilly_reception.test.ts b/test/moves/chilly_reception.test.ts index 1c6c5ce127e..2c04e0e7313 100644 --- a/test/moves/chilly_reception.test.ts +++ b/test/moves/chilly_reception.test.ts @@ -26,7 +26,7 @@ describe("Moves - Chilly Reception", () => { game.override .battleStyle("single") .moveset([Moves.CHILLY_RECEPTION, Moves.SNOWSCAPE]) - .enemyMoveset(Array(4).fill(Moves.SPLASH)) + .enemyMoveset(Moves.SPLASH) .enemyAbility(Abilities.BALL_FETCH) .ability(Abilities.BALL_FETCH); }); @@ -69,10 +69,7 @@ describe("Moves - Chilly Reception", () => { // enemy uses another move and weather doesn't change it("check case - enemy not selecting chilly reception doesn't change weather ", async () => { - game.override - .battleStyle("single") - .enemyMoveset([Moves.CHILLY_RECEPTION, Moves.TACKLE]) - .moveset(Array(4).fill(Moves.SPLASH)); + game.override.battleStyle("single").enemyMoveset([Moves.CHILLY_RECEPTION, Moves.TACKLE]).moveset(Moves.SPLASH); await game.classicMode.startBattle([Species.SLOWKING, Species.MEOWTH]); @@ -87,7 +84,7 @@ describe("Moves - Chilly Reception", () => { game.override .battleStyle("single") .startingWave(8) - .enemyMoveset(Array(4).fill(Moves.CHILLY_RECEPTION)) + .enemyMoveset(Moves.CHILLY_RECEPTION) .enemySpecies(Species.MAGIKARP) .moveset([Moves.SPLASH, Moves.THUNDERBOLT]); diff --git a/test/moves/double_team.test.ts b/test/moves/double_team.test.ts index b97fb1a338e..aa07ee5f688 100644 --- a/test/moves/double_team.test.ts +++ b/test/moves/double_team.test.ts @@ -23,13 +23,14 @@ describe("Moves - Double Team", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.moveset([Moves.DOUBLE_TEAM]); - game.override.disableCrits(); - game.override.ability(Abilities.BALL_FETCH); - game.override.enemySpecies(Species.SHUCKLE); - game.override.enemyAbility(Abilities.BALL_FETCH); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + game.override + .battleStyle("single") + .moveset([Moves.DOUBLE_TEAM]) + .disableCrits() + .ability(Abilities.BALL_FETCH) + .enemySpecies(Species.SHUCKLE) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(Moves.TACKLE); }); it("raises the user's EVA stat stage by 1", async () => { diff --git a/test/moves/dynamax_cannon.test.ts b/test/moves/dynamax_cannon.test.ts index 62004e62778..19a15225653 100644 --- a/test/moves/dynamax_cannon.test.ts +++ b/test/moves/dynamax_cannon.test.ts @@ -29,8 +29,14 @@ describe("Moves - Dynamax Cannon", () => { dynamaxCannon = allMoves[Moves.DYNAMAX_CANNON]; game = new GameManager(phaserGame); - game.override.moveset([dynamaxCannon.id]); - game.override.startingLevel(200); + game.override + .moveset(Moves.DYNAMAX_CANNON) + .startingLevel(200) + .levelCap(10) + .battleStyle("single") + .disableCrits() + .enemySpecies(Species.MAGIKARP) + .enemyMoveset(Moves.SPLASH); // Note that, for Waves 1-10, the level cap is 10 game.override.startingWave(1); diff --git a/test/moves/flower_shield.test.ts b/test/moves/flower_shield.test.ts index d95ef6299b7..30a367f873d 100644 --- a/test/moves/flower_shield.test.ts +++ b/test/moves/flower_shield.test.ts @@ -74,9 +74,7 @@ describe("Moves - Flower Shield", () => { * See semi-vulnerable state tags. {@linkcode SemiInvulnerableTag} */ it("does not raise DEF stat stage for a Pokemon in semi-vulnerable state", async () => { - game.override.enemySpecies(Species.PARAS); - game.override.enemyMoveset([Moves.DIG, Moves.DIG, Moves.DIG, Moves.DIG]); - game.override.enemyLevel(50); + game.override.enemySpecies(Species.PARAS).enemyMoveset(Moves.DIG).enemyLevel(50); await game.classicMode.startBattle([Species.CHERRIM]); const paras = game.scene.getEnemyPokemon()!; diff --git a/test/moves/freezy_frost.test.ts b/test/moves/freezy_frost.test.ts index 7cee9bfb372..2b2e06bfe74 100644 --- a/test/moves/freezy_frost.test.ts +++ b/test/moves/freezy_frost.test.ts @@ -27,7 +27,7 @@ describe("Moves - Freezy Frost", () => { .battleStyle("single") .enemySpecies(Species.RATTATA) .enemyLevel(100) - .enemyMoveset([Moves.HOWL, Moves.HOWL, Moves.HOWL, Moves.HOWL]) + .enemyMoveset(Moves.HOWL) .enemyAbility(Abilities.BALL_FETCH) .startingLevel(100) .moveset([Moves.FREEZY_FROST, Moves.HOWL, Moves.SPLASH]) @@ -55,7 +55,7 @@ describe("Moves - Freezy Frost", () => { }); it("should clear all stat changes even when enemy uses the move", async () => { - game.override.enemyMoveset([Moves.FREEZY_FROST, Moves.FREEZY_FROST, Moves.FREEZY_FROST, Moves.FREEZY_FROST]); + game.override.enemyMoveset(Moves.FREEZY_FROST); await game.classicMode.startBattle([Species.SHUCKLE]); // Shuckle for slower Howl on first turn so Freezy Frost doesn't affect it. const user = game.scene.getPlayerPokemon()!; diff --git a/test/moves/fusion_bolt.test.ts b/test/moves/fusion_bolt.test.ts index 5e515a3bc47..3fc8dae1b85 100644 --- a/test/moves/fusion_bolt.test.ts +++ b/test/moves/fusion_bolt.test.ts @@ -23,16 +23,15 @@ describe("Moves - Fusion Bolt", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.moveset([fusionBolt]); - game.override.startingLevel(1); - - game.override.enemySpecies(Species.RESHIRAM); - game.override.enemyAbility(Abilities.ROUGH_SKIN); - game.override.enemyMoveset([Moves.SPLASH, Moves.SPLASH, Moves.SPLASH, Moves.SPLASH]); - - game.override.battleStyle("single"); - game.override.startingWave(97); - game.override.disableCrits(); + game.override + .moveset([fusionBolt]) + .startingLevel(1) + .enemySpecies(Species.RESHIRAM) + .enemyAbility(Abilities.ROUGH_SKIN) + .enemyMoveset(Moves.SPLASH) + .battleStyle("single") + .startingWave(97) + .disableCrits(); }); it("should not make contact", async () => { diff --git a/test/moves/fusion_flare.test.ts b/test/moves/fusion_flare.test.ts index b947b9e7f7e..9f16b94da5c 100644 --- a/test/moves/fusion_flare.test.ts +++ b/test/moves/fusion_flare.test.ts @@ -24,15 +24,14 @@ describe("Moves - Fusion Flare", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.moveset([fusionFlare]); - game.override.startingLevel(1); - - game.override.enemySpecies(Species.RATTATA); - game.override.enemyMoveset([Moves.REST, Moves.REST, Moves.REST, Moves.REST]); - - game.override.battleStyle("single"); - game.override.startingWave(97); - game.override.disableCrits(); + game.override + .moveset([fusionFlare]) + .startingLevel(1) + .enemySpecies(Species.RATTATA) + .enemyMoveset(Moves.REST) + .battleStyle("single") + .startingWave(97) + .disableCrits(); }); it("should thaw freeze status condition", async () => { diff --git a/test/moves/fusion_flare_bolt.test.ts b/test/moves/fusion_flare_bolt.test.ts index 1d248e09510..2b66a1a6d2f 100644 --- a/test/moves/fusion_flare_bolt.test.ts +++ b/test/moves/fusion_flare_bolt.test.ts @@ -33,15 +33,14 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { fusionFlare = allMoves[Moves.FUSION_FLARE]; fusionBolt = allMoves[Moves.FUSION_BOLT]; game = new GameManager(phaserGame); - game.override.moveset([fusionFlare.id, fusionBolt.id]); - game.override.startingLevel(1); - - game.override.enemySpecies(Species.RESHIRAM); - game.override.enemyMoveset([Moves.REST, Moves.REST, Moves.REST, Moves.REST]); - - game.override.battleStyle("double"); - game.override.startingWave(97); - game.override.disableCrits(); + game.override + .moveset([fusionFlare.id, fusionBolt.id]) + .startingLevel(1) + .enemySpecies(Species.RESHIRAM) + .enemyMoveset(Moves.REST) + .battleStyle("double") + .startingWave(97) + .disableCrits(); vi.spyOn(fusionFlare, "calculateBattlePower"); vi.spyOn(fusionBolt, "calculateBattlePower"); @@ -113,7 +112,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }, 20000); it("FUSION_FLARE should not double power of subsequent FUSION_BOLT if a move succeeded in between", async () => { - game.override.enemyMoveset([Moves.SPLASH, Moves.SPLASH, Moves.SPLASH, Moves.SPLASH]); + game.override.enemyMoveset(Moves.SPLASH); await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); game.move.select(fusionFlare.id, 0, BattlerIndex.ENEMY); @@ -158,7 +157,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }, 20000); it("FUSION_FLARE and FUSION_BOLT alternating throughout turn should double power of subsequent moves", async () => { - game.override.enemyMoveset([fusionFlare.id, fusionFlare.id, fusionFlare.id, fusionFlare.id]); + game.override.enemyMoveset(fusionFlare.id); await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); const party = game.scene.getPlayerParty(); @@ -212,7 +211,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }, 20000); it("FUSION_FLARE and FUSION_BOLT alternating throughout turn should double power of subsequent moves if moves are aimed at allies", async () => { - game.override.enemyMoveset([fusionFlare.id, fusionFlare.id, fusionFlare.id, fusionFlare.id]); + game.override.enemyMoveset(fusionFlare.id); await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); const party = game.scene.getPlayerParty(); diff --git a/test/moves/light_screen.test.ts b/test/moves/light_screen.test.ts index 93d51ad7372..6ce51da68cd 100644 --- a/test/moves/light_screen.test.ts +++ b/test/moves/light_screen.test.ts @@ -35,13 +35,14 @@ describe("Moves - Light Screen", () => { beforeEach(() => { game = new GameManager(phaserGame); globalScene = game.scene; - game.override.battleStyle("single"); - game.override.ability(Abilities.NONE); - game.override.moveset([Moves.ABSORB, Moves.DAZZLING_GLEAM, Moves.TACKLE]); - game.override.enemyLevel(100); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyMoveset([Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN]); - game.override.disableCrits(); + game.override + .battleStyle("single") + .ability(Abilities.BALL_FETCH) + .moveset([Moves.ABSORB, Moves.DAZZLING_GLEAM, Moves.TACKLE]) + .enemyLevel(100) + .enemySpecies(Species.MAGIKARP) + .enemyMoveset(Moves.LIGHT_SCREEN) + .disableCrits(); }); it("reduces damage of special attacks by half in a single battle", async () => { diff --git a/test/moves/magnet_rise.test.ts b/test/moves/magnet_rise.test.ts index 3f15a109f11..5d5ae91c4fe 100644 --- a/test/moves/magnet_rise.test.ts +++ b/test/moves/magnet_rise.test.ts @@ -23,13 +23,14 @@ describe("Moves - Magnet Rise", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - game.override.starterSpecies(Species.MAGNEZONE); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyMoveset([Moves.DRILL_RUN, Moves.DRILL_RUN, Moves.DRILL_RUN, Moves.DRILL_RUN]); - game.override.disableCrits(); - game.override.enemyLevel(1); - game.override.moveset([moveToUse, Moves.SPLASH, Moves.GRAVITY, Moves.BATON_PASS]); + game.override + .battleStyle("single") + .starterSpecies(Species.MAGNEZONE) + .enemySpecies(Species.RATTATA) + .enemyMoveset(Moves.DRILL_RUN) + .disableCrits() + .enemyLevel(1) + .moveset([moveToUse, Moves.SPLASH, Moves.GRAVITY, Moves.BATON_PASS]); }); it("MAGNET RISE", async () => { diff --git a/test/moves/powder.test.ts b/test/moves/powder.test.ts index b65525109ad..f076923d746 100644 --- a/test/moves/powder.test.ts +++ b/test/moves/powder.test.ts @@ -120,7 +120,7 @@ describe("Moves - Powder", () => { }); it("should not prevent the target from thawing out with Flame Wheel", async () => { - game.override.enemyMoveset(Array(4).fill(Moves.FLAME_WHEEL)).enemyStatusEffect(StatusEffect.FREEZE); + game.override.enemyMoveset(Moves.FLAME_WHEEL).enemyStatusEffect(StatusEffect.FREEZE); await game.classicMode.startBattle([Species.CHARIZARD]); @@ -198,7 +198,7 @@ describe("Moves - Powder", () => { }); it("should cancel Revelation Dance if it becomes a Fire-type move", async () => { - game.override.enemySpecies(Species.CHARIZARD).enemyMoveset(Array(4).fill(Moves.REVELATION_DANCE)); + game.override.enemySpecies(Species.CHARIZARD).enemyMoveset(Moves.REVELATION_DANCE); await game.classicMode.startBattle([Species.CHARIZARD]); @@ -212,7 +212,7 @@ describe("Moves - Powder", () => { }); it("should cancel Shell Trap and damage the target, even if the move would fail", async () => { - game.override.enemyMoveset(Array(4).fill(Moves.SHELL_TRAP)); + game.override.enemyMoveset(Moves.SHELL_TRAP); await game.classicMode.startBattle([Species.CHARIZARD]); diff --git a/test/moves/reflect.test.ts b/test/moves/reflect.test.ts index 268d9ebb71b..191a1a45a09 100644 --- a/test/moves/reflect.test.ts +++ b/test/moves/reflect.test.ts @@ -35,13 +35,14 @@ describe("Moves - Reflect", () => { beforeEach(() => { game = new GameManager(phaserGame); globalScene = game.scene; - game.override.battleStyle("single"); - game.override.ability(Abilities.NONE); - game.override.moveset([Moves.ABSORB, Moves.ROCK_SLIDE, Moves.TACKLE]); - game.override.enemyLevel(100); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyMoveset([Moves.REFLECT, Moves.REFLECT, Moves.REFLECT, Moves.REFLECT]); - game.override.disableCrits(); + game.override + .battleStyle("single") + .ability(Abilities.NONE) + .moveset([Moves.ABSORB, Moves.ROCK_SLIDE, Moves.TACKLE]) + .enemyLevel(100) + .enemySpecies(Species.MAGIKARP) + .enemyMoveset(Moves.REFLECT) + .disableCrits(); }); it("reduces damage of physical attacks by half in a single battle", async () => { diff --git a/test/moves/retaliate.test.ts b/test/moves/retaliate.test.ts index 40f31635d9b..24d0cd542cb 100644 --- a/test/moves/retaliate.test.ts +++ b/test/moves/retaliate.test.ts @@ -28,7 +28,7 @@ describe("Moves - Retaliate", () => { game.override .battleStyle("single") .enemySpecies(Species.SNORLAX) - .enemyMoveset([Moves.RETALIATE, Moves.RETALIATE, Moves.RETALIATE, Moves.RETALIATE]) + .enemyMoveset(Moves.RETALIATE) .enemyLevel(100) .moveset([Moves.RETALIATE, Moves.SPLASH]) .startingLevel(80) diff --git a/test/moves/swallow.test.ts b/test/moves/swallow.test.ts index cff9daaf97a..6a2fa8840ea 100644 --- a/test/moves/swallow.test.ts +++ b/test/moves/swallow.test.ts @@ -27,15 +27,14 @@ describe("Moves - Swallow", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single"); - - game.override.enemySpecies(Species.RATTATA); - game.override.enemyMoveset(Moves.SPLASH); - game.override.enemyAbility(Abilities.NONE); - game.override.enemyLevel(2000); - - game.override.moveset([Moves.SWALLOW, Moves.SWALLOW, Moves.SWALLOW, Moves.SWALLOW]); - game.override.ability(Abilities.NONE); + game.override + .battleStyle("single") + .enemySpecies(Species.RATTATA) + .enemyMoveset(Moves.SPLASH) + .enemyAbility(Abilities.NONE) + .enemyLevel(2000) + .moveset(Moves.SWALLOW) + .ability(Abilities.NONE); }); describe("consumes all stockpile stacks to heal (scaling with stacks)", () => { diff --git a/test/moves/tackle.test.ts b/test/moves/tackle.test.ts index 5fd8ba589fc..ecd8750d17f 100644 --- a/test/moves/tackle.test.ts +++ b/test/moves/tackle.test.ts @@ -24,13 +24,14 @@ describe("Moves - Tackle", () => { beforeEach(() => { game = new GameManager(phaserGame); const moveToUse = Moves.TACKLE; - game.override.battleStyle("single"); - game.override.enemySpecies(Species.MAGIKARP); - game.override.startingLevel(1); - game.override.startingWave(97); - game.override.moveset([moveToUse]); - game.override.enemyMoveset([Moves.GROWTH, Moves.GROWTH, Moves.GROWTH, Moves.GROWTH]); - game.override.disableCrits(); + game.override + .battleStyle("single") + .enemySpecies(Species.MAGIKARP) + .startingLevel(1) + .startingWave(97) + .moveset([moveToUse]) + .enemyMoveset(Moves.GROWTH) + .disableCrits(); }); it("TACKLE against ghost", async () => { diff --git a/test/moves/throat_chop.test.ts b/test/moves/throat_chop.test.ts index aaae9c0f5bb..8e504633707 100644 --- a/test/moves/throat_chop.test.ts +++ b/test/moves/throat_chop.test.ts @@ -23,11 +23,11 @@ describe("Moves - Throat Chop", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Array(4).fill(Moves.GROWL)) + .moveset(Moves.GROWL) .battleStyle("single") .ability(Abilities.BALL_FETCH) .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Array(4).fill(Moves.THROAT_CHOP)) + .enemyMoveset(Moves.THROAT_CHOP) .enemySpecies(Species.MAGIKARP); }); diff --git a/test/moves/tidy_up.test.ts b/test/moves/tidy_up.test.ts index ba7a1e07959..103b2d0a1c5 100644 --- a/test/moves/tidy_up.test.ts +++ b/test/moves/tidy_up.test.ts @@ -37,8 +37,7 @@ describe("Moves - Tidy Up", () => { }); it("spikes are cleared", async () => { - game.override.moveset([Moves.SPIKES, Moves.TIDY_UP]); - game.override.enemyMoveset([Moves.SPIKES, Moves.SPIKES, Moves.SPIKES, Moves.SPIKES]); + game.override.moveset([Moves.SPIKES, Moves.TIDY_UP]).enemyMoveset(Moves.SPIKES); await game.classicMode.startBattle(); game.move.select(Moves.SPIKES); @@ -49,8 +48,7 @@ describe("Moves - Tidy Up", () => { }, 20000); it("stealth rocks are cleared", async () => { - game.override.moveset([Moves.STEALTH_ROCK, Moves.TIDY_UP]); - game.override.enemyMoveset([Moves.STEALTH_ROCK, Moves.STEALTH_ROCK, Moves.STEALTH_ROCK, Moves.STEALTH_ROCK]); + game.override.moveset([Moves.STEALTH_ROCK, Moves.TIDY_UP]).enemyMoveset(Moves.STEALTH_ROCK); await game.classicMode.startBattle(); game.move.select(Moves.STEALTH_ROCK); @@ -61,8 +59,7 @@ describe("Moves - Tidy Up", () => { }, 20000); it("toxic spikes are cleared", async () => { - game.override.moveset([Moves.TOXIC_SPIKES, Moves.TIDY_UP]); - game.override.enemyMoveset([Moves.TOXIC_SPIKES, Moves.TOXIC_SPIKES, Moves.TOXIC_SPIKES, Moves.TOXIC_SPIKES]); + game.override.moveset([Moves.TOXIC_SPIKES, Moves.TIDY_UP]).enemyMoveset(Moves.TOXIC_SPIKES); await game.classicMode.startBattle(); game.move.select(Moves.TOXIC_SPIKES); @@ -73,8 +70,7 @@ describe("Moves - Tidy Up", () => { }, 20000); it("sticky webs are cleared", async () => { - game.override.moveset([Moves.STICKY_WEB, Moves.TIDY_UP]); - game.override.enemyMoveset([Moves.STICKY_WEB, Moves.STICKY_WEB, Moves.STICKY_WEB, Moves.STICKY_WEB]); + game.override.moveset([Moves.STICKY_WEB, Moves.TIDY_UP]).enemyMoveset(Moves.STICKY_WEB); await game.classicMode.startBattle(); @@ -86,8 +82,7 @@ describe("Moves - Tidy Up", () => { }, 20000); it("substitutes are cleared", async () => { - game.override.moveset([Moves.SUBSTITUTE, Moves.TIDY_UP]); - game.override.enemyMoveset([Moves.SUBSTITUTE, Moves.SUBSTITUTE, Moves.SUBSTITUTE, Moves.SUBSTITUTE]); + game.override.moveset([Moves.SUBSTITUTE, Moves.TIDY_UP]).enemyMoveset(Moves.SUBSTITUTE); await game.classicMode.startBattle(); From 88b8e05ee82c286bc5cdd55ed6d06cbb71a461a9 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sun, 1 Jun 2025 16:18:15 -0700 Subject: [PATCH 36/71] [Test] Add extra logging to flaky Last Respects test --- test/moves/last_respects.test.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/moves/last_respects.test.ts b/test/moves/last_respects.test.ts index 89c4896ae56..b9b958869fb 100644 --- a/test/moves/last_respects.test.ts +++ b/test/moves/last_respects.test.ts @@ -167,7 +167,10 @@ describe("Moves - Last Respects", () => { game.move.select(Moves.LAST_RESPECTS); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("MoveEndPhase"); - expect(move.calculateBattlePower).toHaveLastReturnedWith(basePower); + expect( + move.calculateBattlePower, + `Enemy: ${game.field.getEnemyPokemon()}\nPlayer: ${game.field.getPlayerPokemon()}`, + ).toHaveLastReturnedWith(basePower); }); it("should reset playerFaints count if we enter new trainer battle", async () => { From 9f892b906ca6020d3e9c21cfdbe3e6242732a994 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Mon, 2 Jun 2025 07:59:10 -0500 Subject: [PATCH 37/71] [Beta][Bug][UI/UX] Fix name position and types not being updated in battle info (#5913) Fix name position and types not being updated in battle info --- src/ui/battle-info/battle-info.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/ui/battle-info/battle-info.ts b/src/ui/battle-info/battle-info.ts index 7e6cc12bd3d..e67000bb243 100644 --- a/src/ui/battle-info/battle-info.ts +++ b/src/ui/battle-info/battle-info.ts @@ -447,12 +447,14 @@ export default abstract class BattleInfo extends Phaser.GameObjects.Container { } /** Update the pokemon name inside the container */ - protected updateName(name: string): boolean { + protected updateName(pokemon: Pokemon): boolean { + const name = pokemon.getNameToRender(); if (this.lastName === name) { return false; } - this.nameText.setText(name).setPositionRelative(this.box, -this.nameText.displayWidth, 0); - this.lastName = name; + + this.updateNameText(pokemon); + this.genderText.setPositionRelative(this.nameText, this.nameText.displayWidth, 0); return true; } @@ -572,7 +574,7 @@ export default abstract class BattleInfo extends Phaser.GameObjects.Container { this.genderText.setText(getGenderSymbol(gender)).setColor(getGenderColor(gender)); - const nameUpdated = this.updateName(pokemon.getNameToRender()); + const nameUpdated = this.updateName(pokemon); const teraTypeUpdated = this.updateTeraType(pokemon.isTerastallized ? pokemon.getTeraType() : PokemonType.UNKNOWN); @@ -584,6 +586,8 @@ export default abstract class BattleInfo extends Phaser.GameObjects.Container { this.updateStatusIcon(pokemon); + this.setTypes(pokemon.getTypes(true, false, undefined, true)); + if (this.lastHp !== pokemon.hp || this.lastMaxHp !== pokemon.getMaxHp()) { return this.updatePokemonHp(pokemon, resolve, instant); } From ea64024e0992198400b6f30d7753cc77184ffec3 Mon Sep 17 00:00:00 2001 From: Madmadness65 <59298170+Madmadness65@users.noreply.github.com> Date: Mon, 2 Jun 2025 09:32:34 -0500 Subject: [PATCH 38/71] [P3 Bug] Remove Expert Breeder trainer type from ME egg source (#5893) Remove Expert Breeder trainer type from ME eggs It effectively duplicated the text in the egg source text box, and overflowed the visual text box as a result. --- .../encounters/the-expert-pokemon-breeder-encounter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts index 15063bc2763..74cda6fd205 100644 --- a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts @@ -581,7 +581,7 @@ function calculateEggRewardsForPokemon(pokemon: PlayerPokemon): [number, number] } function getEggOptions(commonEggs: number, rareEggs: number) { - const eggDescription = i18next.t(`${namespace}:title`) + ":\n" + i18next.t(trainerNameKey); + const eggDescription = i18next.t(`${namespace}:title`); const eggOptions: IEggOptions[] = []; if (commonEggs > 0) { From 7cd89cd4f7f7d70b4fc665ad954b9719a6278ceb Mon Sep 17 00:00:00 2001 From: damocleas Date: Mon, 2 Jun 2025 14:33:39 -0400 Subject: [PATCH 39/71] Update Discord Invite Link --- src/ui/menu-ui-handler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/menu-ui-handler.ts b/src/ui/menu-ui-handler.ts index 7f0cd4d6a78..cc684111617 100644 --- a/src/ui/menu-ui-handler.ts +++ b/src/ui/menu-ui-handler.ts @@ -33,7 +33,7 @@ enum MenuOptions { } let wikiUrl = "https://wiki.pokerogue.net/start"; -const discordUrl = "https://discord.gg/uWpTfdKG49"; +const discordUrl = "https://discord.gg/pokerogue"; const githubUrl = "https://github.com/pagefaultgames/pokerogue"; const redditUrl = "https://www.reddit.com/r/pokerogue"; const donateUrl = "https://github.com/sponsors/pagefaultgames"; From 1b038c5a11180adc2b868132e2c47be72c2fc272 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Mon, 2 Jun 2025 14:16:06 -0700 Subject: [PATCH 40/71] [Test] Fix flaky test logging --- test/moves/last_respects.test.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/test/moves/last_respects.test.ts b/test/moves/last_respects.test.ts index b9b958869fb..4fe9864546e 100644 --- a/test/moves/last_respects.test.ts +++ b/test/moves/last_respects.test.ts @@ -167,10 +167,12 @@ describe("Moves - Last Respects", () => { game.move.select(Moves.LAST_RESPECTS); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("MoveEndPhase"); - expect( - move.calculateBattlePower, - `Enemy: ${game.field.getEnemyPokemon()}\nPlayer: ${game.field.getPlayerPokemon()}`, - ).toHaveLastReturnedWith(basePower); + + const enemy = game.field.getEnemyPokemon(); + const player = game.field.getPlayerPokemon(); + const items = `Player items: ${player.getHeldItems()} | Enemy Items: ${enemy.getHeldItems()} |`; + + expect(move.calculateBattlePower, items).toHaveLastReturnedWith(1); }); it("should reset playerFaints count if we enter new trainer battle", async () => { From 6586790768e507c14995f564d6f1e9b7aef67417 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Mon, 2 Jun 2025 16:12:45 -0700 Subject: [PATCH 41/71] [Test] Fix Last Respects test --- test/moves/last_respects.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/moves/last_respects.test.ts b/test/moves/last_respects.test.ts index 4fe9864546e..e271a5dec62 100644 --- a/test/moves/last_respects.test.ts +++ b/test/moves/last_respects.test.ts @@ -172,7 +172,7 @@ describe("Moves - Last Respects", () => { const player = game.field.getPlayerPokemon(); const items = `Player items: ${player.getHeldItems()} | Enemy Items: ${enemy.getHeldItems()} |`; - expect(move.calculateBattlePower, items).toHaveLastReturnedWith(1); + expect(move.calculateBattlePower, items).toHaveLastReturnedWith(50); }); it("should reset playerFaints count if we enter new trainer battle", async () => { From a26a93098059597e779e932e636061f75a680206 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Mon, 2 Jun 2025 17:00:23 -0700 Subject: [PATCH 42/71] Fix Version Number 1.9.4 -> 1.9.5 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 66400b14459..3e82c45af62 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pokemon-rogue-battle", - "version": "1.9.4", + "version": "1.9.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pokemon-rogue-battle", - "version": "1.9.4", + "version": "1.9.5", "hasInstallScript": true, "dependencies": { "@material/material-color-utilities": "^0.2.7", diff --git a/package.json b/package.json index 7d1ba35154a..ce41dfc2a05 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pokemon-rogue-battle", "private": true, - "version": "1.9.4", + "version": "1.9.5", "type": "module", "scripts": { "start": "vite", From 9dcb904649474b9ccec52b7d1251ee731b5edabf Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Wed, 4 Jun 2025 14:54:27 -0700 Subject: [PATCH 43/71] [Misc] Improve enum naming (#5933) * Rename `Abilities` to `AbilityId` * Rename `abilities.ts` to `ability-id.ts` * Rename `Moves` to `MoveId` * Rename `moves.ts` to `move-id.ts` * Rename `Species` to `SpeciesId` * Rename `species.ts` to `species-id.ts` * Rename `Biome` to `BiomeId` * Rename `biome.ts` to `biome-id.ts` * Replace `Abilities` with `AbilityId` in comments * Replace `Biome` with `BiomeId` in comments * Replace `Moves` with `MoveId` in comments * Replace `Species` with `SpeciesId` in comments --- src/battle-scene.ts | 120 +- src/battle.ts | 184 +- src/data/abilities/ability-class.ts | 8 +- src/data/abilities/ability.ts | 784 +- src/data/arena-tag.ts | 108 +- src/data/balance/biomes.ts | 8172 +- src/data/balance/egg-moves.ts | 1154 +- src/data/balance/passives.ts | 2170 +- src/data/balance/pokemon-evolutions.ts | 2118 +- src/data/balance/pokemon-level-moves.ts | 39722 ++--- src/data/balance/signature-species.ts | 152 +- src/data/balance/special-species-groups.ts | 64 +- src/data/balance/species-egg-tiers.ts | 1140 +- src/data/balance/starters.ts | 1142 +- src/data/balance/tms.ts | 136096 +++++++-------- src/data/battle-anims.ts | 32 +- src/data/battler-tags.ts | 354 +- src/data/challenge.ts | 34 +- src/data/custom-pokemon-data.ts | 6 +- src/data/daily-run.ts | 82 +- src/data/egg.ts | 38 +- src/data/moves/invalid-moves.ts | 482 +- src/data/moves/move.ts | 2596 +- .../encounters/a-trainers-test-encounter.ts | 12 +- .../encounters/absolute-avarice-encounter.ts | 26 +- .../an-offer-you-cant-refuse-encounter.ts | 8 +- .../encounters/bug-type-superfan-encounter.ts | 186 +- .../encounters/clowning-around-encounter.ts | 58 +- .../encounters/dancing-lessons-encounter.ts | 76 +- .../encounters/dark-deal-encounter.ts | 126 +- .../encounters/delibirdy-encounter.ts | 10 +- .../department-store-sale-encounter.ts | 4 +- .../encounters/fiery-fallout-encounter.ts | 26 +- .../encounters/fun-and-games-encounter.ts | 6 +- .../global-trade-system-encounter.ts | 60 +- .../encounters/lost-at-sea-encounter.ts | 10 +- .../encounters/mysterious-chest-encounter.ts | 10 +- .../shady-vitamin-dealer-encounter.ts | 4 +- .../slumbering-snorlax-encounter.ts | 30 +- .../teleporting-hijinks-encounter.ts | 13 +- .../the-expert-pokemon-breeder-encounter.ts | 112 +- .../the-pokemon-salesman-encounter.ts | 16 +- .../encounters/the-strong-stuff-encounter.ts | 18 +- .../the-winstrate-challenge-encounter.ts | 62 +- .../encounters/trash-to-treasure-encounter.ts | 16 +- .../encounters/uncommon-breed-encounter.ts | 8 +- .../encounters/weird-dream-encounter.ts | 98 +- .../mystery-encounter-option.ts | 4 +- .../mystery-encounter-requirements.ts | 31 +- .../mystery-encounters/mystery-encounters.ts | 228 +- .../can-learn-move-requirement.ts | 12 +- .../requirements/requirement-groups.ts | 175 +- .../utils/encounter-phase-utils.ts | 40 +- .../utils/encounter-pokemon-utils.ts | 74 +- src/data/pokemon-forms.ts | 856 +- src/data/pokemon-species.ts | 3718 +- src/data/trainers/evil-admin-trainer-pools.ts | 659 +- src/data/trainers/trainer-config.ts | 2962 +- src/data/trainers/typedefs.ts | 4 +- src/data/weather.ts | 38 +- src/enums/MoveFlags.ts | 24 +- src/enums/{abilities.ts => ability-id.ts} | 2 +- src/enums/{biome.ts => biome-id.ts} | 2 +- src/enums/{moves.ts => move-id.ts} | 2 +- src/enums/{species.ts => species-id.ts} | 2 +- src/field/arena.ts | 282 +- src/field/mystery-encounter-intro.ts | 6 +- src/field/pokemon.ts | 198 +- src/field/trainer.ts | 16 +- src/game-mode.ts | 16 +- src/loading-scene.ts | 6 +- src/modifier/modifier-type.ts | 137 +- src/modifier/modifier.ts | 44 +- src/overrides.ts | 42 +- src/phases/berry-phase.ts | 2 +- src/phases/command-phase.ts | 22 +- src/phases/encounter-phase.ts | 10 +- src/phases/enemy-command-phase.ts | 4 +- src/phases/learn-move-phase.ts | 8 +- src/phases/load-move-anim-phase.ts | 4 +- src/phases/move-effect-phase.ts | 20 +- src/phases/move-phase.ts | 34 +- src/phases/pokemon-anim-phase.ts | 4 +- src/phases/pokemon-transform-phase.ts | 4 +- src/phases/select-biome-phase.ts | 14 +- src/phases/select-starter-phase.ts | 4 +- src/phases/switch-biome-phase.ts | 6 +- src/phases/trainer-victory-phase.ts | 4 +- src/phases/turn-start-phase.ts | 4 +- src/sprites/pokemon-asset-loader.ts | 4 +- src/system/arena-data.ts | 4 +- src/system/egg-data.ts | 4 +- src/system/game-data.ts | 82 +- src/system/pokemon-data.ts | 16 +- .../version_migration/versions/v1_8_3.ts | 4 +- .../version_migration/versions/v1_9_0.ts | 4 +- src/timed-event-manager.ts | 300 +- src/ui/battle-flyout.ts | 4 +- src/ui/candy-bar.ts | 6 +- src/ui/command-ui-handler.ts | 4 +- src/ui/party-ui-handler.ts | 17 +- src/ui/pokedex-page-ui-handler.ts | 60 +- src/ui/pokedex-ui-handler.ts | 20 +- src/ui/pokemon-hatch-info-container.ts | 4 +- src/ui/run-info-ui-handler.ts | 4 +- src/ui/starter-select-ui-handler.ts | 28 +- src/ui/target-select-ui-handler.ts | 6 +- src/ui/title-ui-handler.ts | 4 +- src/utils/common.ts | 6 +- test/abilities/ability_duplication.test.ts | 22 +- test/abilities/ability_timing.test.ts | 12 +- test/abilities/analytic.test.ts | 36 +- test/abilities/arena_trap.test.ts | 40 +- test/abilities/aroma_veil.test.ts | 34 +- test/abilities/aura_break.test.ts | 38 +- test/abilities/battery.test.ts | 38 +- test/abilities/battle_bond.test.ts | 28 +- test/abilities/beast_boost.test.ts | 30 +- test/abilities/commander.test.ts | 76 +- test/abilities/competitive.test.ts | 28 +- test/abilities/contrary.test.ts | 28 +- test/abilities/corrosion.test.ts | 20 +- test/abilities/costar.test.ts | 28 +- test/abilities/cud_chew.test.ts | 92 +- test/abilities/dancer.test.ts | 44 +- test/abilities/defiant.test.ts | 28 +- test/abilities/desolate-land.test.ts | 77 +- test/abilities/disguise.test.ts | 64 +- test/abilities/dry_skin.test.ts | 48 +- test/abilities/early_bird.test.ts | 36 +- test/abilities/flash_fire.test.ts | 64 +- test/abilities/flower_gift.test.ts | 87 +- test/abilities/flower_veil.test.ts | 110 +- test/abilities/forecast.test.ts | 116 +- test/abilities/friend_guard.test.ts | 78 +- test/abilities/good_as_gold.test.ts | 82 +- test/abilities/gorilla_tactics.test.ts | 38 +- test/abilities/gulp_missile.test.ts | 110 +- test/abilities/harvest.test.ts | 122 +- test/abilities/healer.test.ts | 44 +- test/abilities/heatproof.test.ts | 28 +- test/abilities/honey_gather.test.ts | 28 +- test/abilities/hustle.test.ts | 36 +- test/abilities/hyper_cutter.test.ts | 28 +- test/abilities/ice_face.test.ts | 88 +- test/abilities/illuminate.test.ts | 14 +- test/abilities/illusion.test.ts | 64 +- test/abilities/immunity.test.ts | 28 +- test/abilities/imposter.test.ts | 58 +- test/abilities/infiltrator.test.ts | 52 +- test/abilities/insomnia.test.ts | 28 +- test/abilities/intimidate.test.ts | 38 +- test/abilities/intrepid_sword.test.ts | 12 +- test/abilities/libero.test.ts | 160 +- test/abilities/lightningrod.test.ts | 62 +- test/abilities/limber.test.ts | 28 +- test/abilities/magic_bounce.test.ts | 216 +- test/abilities/magic_guard.test.ts | 136 +- test/abilities/magma_armor.test.ts | 28 +- test/abilities/mimicry.test.ts | 48 +- test/abilities/mirror_armor.test.ts | 174 +- test/abilities/mold_breaker.test.ts | 26 +- test/abilities/moody.test.ts | 22 +- test/abilities/moxie.test.ts | 24 +- test/abilities/mummy.test.ts | 30 +- test/abilities/mycelium_might.test.ts | 30 +- test/abilities/neutralizing_gas.test.ts | 96 +- test/abilities/no_guard.test.ts | 20 +- .../abilities/normal-move-type-change.test.ts | 64 +- test/abilities/normalize.test.ts | 60 +- test/abilities/oblivious.test.ts | 42 +- test/abilities/own_tempo.test.ts | 28 +- test/abilities/parental_bond.test.ts | 158 +- test/abilities/pastel_veil.test.ts | 32 +- test/abilities/perish_body.test.ts | 54 +- test/abilities/power_construct.test.ts | 28 +- test/abilities/power_spot.test.ts | 38 +- test/abilities/protean.test.ts | 160 +- test/abilities/protosynthesis.test.ts | 24 +- test/abilities/quick_draw.test.ts | 34 +- test/abilities/sand_spit.test.ts | 30 +- test/abilities/sand_veil.test.ts | 28 +- test/abilities/sap_sipper.test.ts | 50 +- test/abilities/schooling.test.ts | 18 +- test/abilities/screen_cleaner.test.ts | 28 +- test/abilities/seed_sower.test.ts | 30 +- test/abilities/serene_grace.test.ts | 22 +- test/abilities/sheer_force.test.ts | 68 +- test/abilities/shield_dust.test.ts | 20 +- test/abilities/shields_down.test.ts | 102 +- test/abilities/simple.test.ts | 16 +- test/abilities/speed_boost.test.ts | 40 +- test/abilities/stakeout.test.ts | 40 +- test/abilities/stall.test.ts | 28 +- test/abilities/steely_spirit.test.ts | 48 +- test/abilities/storm_drain.test.ts | 62 +- test/abilities/sturdy.test.ts | 26 +- test/abilities/super_luck.test.ts | 20 +- test/abilities/supreme_overlord.test.ts | 66 +- test/abilities/sweet_veil.test.ts | 48 +- test/abilities/synchronize.test.ts | 34 +- test/abilities/tera_shell.test.ts | 46 +- test/abilities/thermal_exchange.test.ts | 28 +- test/abilities/trace.test.ts | 28 +- test/abilities/unburden.test.ts | 138 +- test/abilities/unseen_fist.test.ts | 34 +- test/abilities/victory_star.test.ts | 26 +- test/abilities/vital_spirit.test.ts | 28 +- test/abilities/volt_absorb.test.ts | 36 +- test/abilities/wandering_spirit.test.ts | 40 +- test/abilities/water_bubble.test.ts | 28 +- test/abilities/water_veil.test.ts | 28 +- test/abilities/wimp_out.test.ts | 264 +- test/abilities/wind_power.test.ts | 40 +- test/abilities/wind_rider.test.ts | 42 +- test/abilities/wonder_skin.test.ts | 40 +- test/abilities/zen_mode.test.ts | 36 +- test/abilities/zero_to_hero.test.ts | 30 +- test/arena/arena_gravity.test.ts | 58 +- test/arena/grassy_terrain.test.ts | 34 +- test/arena/weather_fog.test.ts | 22 +- test/arena/weather_hail.test.ts | 24 +- test/arena/weather_sandstorm.test.ts | 36 +- test/arena/weather_strong_winds.test.ts | 42 +- test/battle/ability_swap.test.ts | 44 +- test/battle/battle-order.test.ts | 40 +- test/battle/battle.test.ts | 120 +- test/battle/damage_calculation.test.ts | 54 +- test/battle/double_battle.test.ts | 28 +- test/battle/inverse_battle.test.ts | 74 +- test/battle/special_battle.test.ts | 34 +- test/battlerTags/substitute.test.ts | 26 +- test/boss-pokemon.test.ts | 50 +- test/daily_mode.test.ts | 18 +- test/data/status_effect.test.ts | 52 +- test/eggs/egg.test.ts | 36 +- test/eggs/manaphy-egg.test.ts | 18 +- test/endless_boss.test.ts | 34 +- test/enemy_command.test.ts | 22 +- test/escape-calculations.test.ts | 18 +- test/evolution.test.ts | 54 +- test/field/pokemon.test.ts | 50 +- test/final_boss.test.ts | 58 +- test/imports.test.ts | 2 +- test/internals.test.ts | 14 +- test/items/dire_hit.test.ts | 18 +- .../double_battle_chance_booster.test.ts | 10 +- test/items/eviolite.test.ts | 24 +- test/items/exp_booster.test.ts | 6 +- test/items/grip_claw.test.ts | 36 +- test/items/leek.test.ts | 38 +- test/items/leftovers.test.ts | 20 +- test/items/light_ball.test.ts | 12 +- test/items/lock_capsule.test.ts | 8 +- test/items/metal_powder.test.ts | 12 +- test/items/multi_lens.test.ts | 96 +- test/items/mystical_rock.test.ts | 22 +- test/items/quick_powder.test.ts | 12 +- test/items/reviver_seed.test.ts | 88 +- test/items/scope_lens.test.ts | 14 +- test/items/temp_stat_stage_booster.test.ts | 40 +- test/items/thick_club.test.ts | 20 +- test/items/toxic_orb.test.ts | 20 +- test/moves/after_you.test.ts | 30 +- test/moves/alluring_voice.test.ts | 18 +- test/moves/aromatherapy.test.ts | 32 +- test/moves/assist.test.ts | 60 +- test/moves/astonish.test.ts | 22 +- test/moves/aurora_veil.test.ts | 46 +- test/moves/autotomize.test.ts | 38 +- test/moves/baddy_bad.test.ts | 22 +- test/moves/baneful_bunker.test.ts | 28 +- test/moves/baton_pass.test.ts | 48 +- test/moves/beak_blast.test.ts | 54 +- test/moves/beat_up.test.ts | 42 +- test/moves/belly_drum.test.ts | 32 +- test/moves/burning_jealousy.test.ts | 40 +- test/moves/camouflage.test.ts | 20 +- test/moves/ceaseless_edge.test.ts | 32 +- test/moves/chilly_reception.test.ts | 56 +- test/moves/chloroblast.test.ts | 20 +- test/moves/clangorous_soul.test.ts | 28 +- test/moves/copycat.test.ts | 42 +- test/moves/crafty_shield.test.ts | 44 +- test/moves/defog.test.ts | 32 +- test/moves/destiny_bond.test.ts | 58 +- test/moves/diamond_storm.test.ts | 20 +- test/moves/dig.test.ts | 44 +- test/moves/disable.test.ts | 70 +- test/moves/dive.test.ts | 52 +- test/moves/doodle.test.ts | 40 +- test/moves/double_team.test.ts | 20 +- test/moves/dragon_cheer.test.ts | 34 +- test/moves/dragon_rage.test.ts | 36 +- test/moves/dragon_tail.test.ts | 104 +- test/moves/dynamax_cannon.test.ts | 32 +- test/moves/effectiveness.test.ts | 48 +- test/moves/electrify.test.ts | 24 +- test/moves/electro_shot.test.ts | 30 +- test/moves/encore.test.ts | 54 +- test/moves/endure.test.ts | 44 +- test/moves/entrainment.test.ts | 28 +- test/moves/fairy_lock.test.ts | 96 +- test/moves/fake_out.test.ts | 34 +- test/moves/false_swipe.test.ts | 24 +- test/moves/fell_stinger.test.ts | 78 +- test/moves/fillet_away.test.ts | 28 +- test/moves/fissure.test.ts | 28 +- test/moves/flame_burst.test.ts | 46 +- test/moves/flower_shield.test.ts | 42 +- test/moves/fly.test.ts | 50 +- test/moves/focus_punch.test.ts | 42 +- test/moves/follow_me.test.ts | 62 +- test/moves/foresight.test.ts | 26 +- test/moves/forests_curse.test.ts | 22 +- test/moves/freeze_dry.test.ts | 104 +- test/moves/freezy_frost.test.ts | 42 +- test/moves/fusion_bolt.test.ts | 16 +- test/moves/fusion_flare.test.ts | 12 +- test/moves/fusion_flare_bolt.test.ts | 28 +- test/moves/future_sight.test.ts | 20 +- test/moves/gastro_acid.test.ts | 42 +- test/moves/geomancy.test.ts | 26 +- test/moves/gigaton_hammer.test.ts | 20 +- test/moves/glaive_rush.test.ts | 62 +- test/moves/growth.test.ts | 18 +- test/moves/grudge.test.ts | 50 +- test/moves/guard_split.test.ts | 28 +- test/moves/guard_swap.test.ts | 20 +- test/moves/hard_press.test.ts | 34 +- test/moves/haze.test.ts | 24 +- test/moves/heal_bell.test.ts | 32 +- test/moves/heal_block.test.ts | 52 +- test/moves/heart_swap.test.ts | 20 +- test/moves/hyper_beam.test.ts | 24 +- test/moves/imprison.test.ts | 44 +- test/moves/instruct.test.ts | 328 +- test/moves/jaw_lock.test.ts | 42 +- test/moves/lash_out.test.ts | 24 +- test/moves/last-resort.test.ts | 90 +- test/moves/last_respects.test.ts | 82 +- test/moves/light_screen.test.ts | 36 +- test/moves/lucky_chant.test.ts | 40 +- test/moves/lunar_blessing.test.ts | 28 +- test/moves/lunar_dance.test.ts | 32 +- test/moves/magic_coat.test.ts | 182 +- test/moves/magnet_rise.test.ts | 16 +- test/moves/make_it_rain.test.ts | 36 +- test/moves/mat_block.test.ts | 38 +- test/moves/metal_burst.test.ts | 36 +- test/moves/metronome.test.ts | 44 +- test/moves/miracle_eye.test.ts | 18 +- test/moves/mirror_move.test.ts | 44 +- test/moves/mist.test.ts | 22 +- test/moves/moongeist_beam.test.ts | 30 +- test/moves/multi_target.test.ts | 38 +- test/moves/nightmare.test.ts | 20 +- test/moves/obstruct.test.ts | 34 +- test/moves/octolock.test.ts | 56 +- test/moves/order_up.test.ts | 30 +- test/moves/parting_shot.test.ts | 78 +- test/moves/plasma_fists.test.ts | 36 +- test/moves/pledge_moves.test.ts | 120 +- test/moves/pollen_puff.test.ts | 30 +- test/moves/powder.test.ts | 126 +- test/moves/power_shift.test.ts | 20 +- test/moves/power_split.test.ts | 28 +- test/moves/power_swap.test.ts | 20 +- test/moves/power_trick.test.ts | 38 +- test/moves/protect.test.ts | 44 +- test/moves/psycho_shift.test.ts | 20 +- test/moves/purify.test.ts | 16 +- test/moves/quash.test.ts | 64 +- test/moves/quick_guard.test.ts | 44 +- test/moves/rage_fist.test.ts | 78 +- test/moves/rage_powder.test.ts | 34 +- test/moves/reflect.test.ts | 40 +- test/moves/reflect_type.test.ts | 28 +- test/moves/relic_song.test.ts | 30 +- test/moves/retaliate.test.ts | 18 +- test/moves/revival_blessing.test.ts | 62 +- test/moves/role_play.test.ts | 28 +- test/moves/rollout.test.ts | 22 +- test/moves/roost.test.ts | 54 +- test/moves/round.test.ts | 28 +- test/moves/safeguard.test.ts | 52 +- test/moves/scale_shot.test.ts | 28 +- test/moves/secret_power.test.ts | 50 +- test/moves/shed_tail.test.ts | 22 +- test/moves/shell_side_arm.test.ts | 34 +- test/moves/shell_trap.test.ts | 48 +- test/moves/simple_beam.test.ts | 22 +- test/moves/sketch.test.ts | 56 +- test/moves/skill_swap.test.ts | 32 +- test/moves/sleep_talk.test.ts | 36 +- test/moves/solar_beam.test.ts | 32 +- test/moves/sparkly_swirl.test.ts | 30 +- test/moves/spectral_thief.test.ts | 52 +- test/moves/speed_swap.test.ts | 20 +- test/moves/spikes.test.ts | 42 +- test/moves/spit_up.test.ts | 46 +- test/moves/spotlight.test.ts | 32 +- test/moves/steamroller.test.ts | 18 +- test/moves/stockpile.test.ts | 28 +- test/moves/struggle.test.ts | 28 +- test/moves/substitute.test.ts | 224 +- test/moves/swallow.test.ts | 46 +- test/moves/synchronoise.test.ts | 20 +- test/moves/syrup_bomb.test.ts | 34 +- test/moves/tackle.test.ts | 20 +- test/moves/tail_whip.test.ts | 20 +- test/moves/tailwind.test.ts | 34 +- test/moves/tar_shot.test.ts | 44 +- test/moves/taunt.test.ts | 28 +- test/moves/telekinesis.test.ts | 68 +- test/moves/tera_blast.test.ts | 68 +- test/moves/tera_starstorm.test.ts | 38 +- test/moves/thousand_arrows.test.ts | 32 +- test/moves/throat_chop.test.ts | 22 +- test/moves/thunder_wave.test.ts | 32 +- test/moves/tidy_up.test.ts | 50 +- test/moves/torment.test.ts | 36 +- test/moves/toxic.test.ts | 46 +- test/moves/toxic_spikes.test.ts | 54 +- test/moves/transform.test.ts | 62 +- test/moves/trick_or_treat.test.ts | 22 +- test/moves/triple_arrows.test.ts | 28 +- test/moves/u_turn.test.ts | 42 +- test/moves/upper_hand.test.ts | 40 +- test/moves/whirlwind.test.ts | 98 +- test/moves/wide_guard.test.ts | 44 +- test/moves/will_o_wisp.test.ts | 22 +- .../a-trainers-test-encounter.test.ts | 12 +- .../absolute-avarice-encounter.test.ts | 28 +- ...an-offer-you-cant-refuse-encounter.test.ts | 36 +- .../berries-abound-encounter.test.ts | 16 +- .../bug-type-superfan-encounter.test.ts | 225 +- .../clowning-around-encounter.test.ts | 82 +- .../dancing-lessons-encounter.test.ts | 36 +- .../encounters/delibirdy-encounter.test.ts | 10 +- .../department-store-sale-encounter.test.ts | 14 +- .../encounters/field-trip-encounter.test.ts | 14 +- .../fiery-fallout-encounter.test.ts | 40 +- .../fight-or-flight-encounter.test.ts | 14 +- .../fun-and-games-encounter.test.ts | 26 +- .../global-trade-system-encounter.test.ts | 16 +- .../encounters/lost-at-sea-encounter.test.ts | 28 +- .../mysterious-challengers-encounter.test.ts | 14 +- .../encounters/part-timer-encounter.test.ts | 18 +- .../encounters/safari-zone.test.ts | 20 +- .../teleporting-hijinks-encounter.test.ts | 35 +- .../the-expert-breeder-encounter.test.ts | 14 +- .../the-pokemon-salesman-encounter.test.ts | 14 +- .../the-strong-stuff-encounter.test.ts | 42 +- .../the-winstrate-challenge-encounter.test.ts | 68 +- .../trash-to-treasure-encounter.test.ts | 30 +- .../uncommon-breed-encounter.test.ts | 24 +- .../encounters/weird-dream-encounter.test.ts | 10 +- .../mystery-encounter-utils.test.ts | 58 +- .../mystery-encounter.test.ts | 6 +- test/phases/form-change-phase.test.ts | 20 +- test/phases/frenzy-move-reset.test.ts | 18 +- test/phases/game-over-phase.test.ts | 28 +- test/phases/learn-move-phase.test.ts | 26 +- test/phases/mystery-encounter-phase.test.ts | 14 +- test/phases/select-modifier-phase.test.ts | 46 +- test/reload.test.ts | 22 +- test/system/game_data.test.ts | 10 +- test/testUtils/gameManager.ts | 6 +- test/testUtils/gameManagerUtils.ts | 16 +- test/testUtils/helpers/challengeModeHelper.ts | 6 +- test/testUtils/helpers/classicModeHelper.ts | 6 +- test/testUtils/helpers/field-helper.ts | 4 +- test/testUtils/helpers/moveHelper.ts | 18 +- test/testUtils/helpers/overridesHelper.ts | 94 +- test/ui/battle_info.test.ts | 18 +- test/ui/pokedex.test.ts | 106 +- test/ui/starter-select.test.ts | 26 +- test/ui/transfer-item.test.ts | 14 +- test/ui/type-hints.test.ts | 34 +- 480 files changed, 112129 insertions(+), 111981 deletions(-) rename src/enums/{abilities.ts => ability-id.ts} (99%) rename src/enums/{biome.ts => biome-id.ts} (95%) rename src/enums/{moves.ts => move-id.ts} (99%) rename src/enums/{species.ts => species-id.ts} (99%) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index cbaf07d579c..34d26b3975c 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -129,12 +129,12 @@ import { ArenaFlyout } from "#app/ui/arena-flyout"; import { EaseType } from "#enums/ease-type"; import { BattleSpec } from "#enums/battle-spec"; import { BattleStyle } from "#enums/battle-style"; -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import type { ExpNotification } from "#enums/exp-notification"; import { MoneyFormat } from "#enums/money-format"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { PlayerGender } from "#enums/player-gender"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { UiTheme } from "#enums/ui-theme"; import { TimedEventManager } from "#app/timed-event-manager"; import type { PokemonAnimType } from "#enums/pokemon-anim-type"; @@ -707,14 +707,14 @@ export default class BattleScene extends SceneBase { ui.setup(); - const defaultMoves = [Moves.TACKLE, Moves.TAIL_WHIP, Moves.FOCUS_ENERGY, Moves.STRUGGLE]; + const defaultMoves = [MoveId.TACKLE, MoveId.TAIL_WHIP, MoveId.FOCUS_ENERGY, MoveId.STRUGGLE]; Promise.all([ Promise.all(loadPokemonAssets), initCommonAnims().then(() => loadCommonAnimAssets(true)), - Promise.all([Moves.TACKLE, Moves.TAIL_WHIP, Moves.FOCUS_ENERGY, Moves.STRUGGLE].map(m => initMoveAnim(m))).then( - () => loadMoveAnimAssets(defaultMoves, true), - ), + Promise.all( + [MoveId.TACKLE, MoveId.TAIL_WHIP, MoveId.FOCUS_ENERGY, MoveId.STRUGGLE].map(m => initMoveAnim(m)), + ).then(() => loadMoveAnimAssets(defaultMoves, true)), this.initStarterColors(), ]).then(() => { this.pushPhase(new LoginPhase()); @@ -1225,7 +1225,7 @@ export default class BattleScene extends SceneBase { [this.luckLabelText, this.luckText].map(t => t.setVisible(false)); - this.newArena(Overrides.STARTING_BIOME_OVERRIDE || Biome.TOWN); + this.newArena(Overrides.STARTING_BIOME_OVERRIDE || BiomeId.TOWN); this.field.setVisible(true); @@ -1501,7 +1501,7 @@ export default class BattleScene extends SceneBase { pokemon.resetTera(); applyPostBattleInitAbAttrs(PostBattleInitAbAttr, pokemon); if ( - pokemon.hasSpecies(Species.TERAPAGOS) || + pokemon.hasSpecies(SpeciesId.TERAPAGOS) || (this.gameMode.isClassic && this.currentBattle.waveIndex > 180 && this.currentBattle.waveIndex <= 190) ) { this.arena.playerTerasUsed = 0; @@ -1532,8 +1532,8 @@ export default class BattleScene extends SceneBase { return this.currentBattle; } - newArena(biome: Biome, playerFaints?: number): Arena { - this.arena = new Arena(biome, Biome[biome].toLowerCase(), playerFaints); + newArena(biome: BiomeId, playerFaints?: number): Arena { + this.arena = new Arena(biome, BiomeId[biome].toLowerCase(), playerFaints); this.eventTarget.dispatchEvent(new NewArenaEvent()); this.arenaBg.pipelineData = { @@ -1599,7 +1599,7 @@ export default class BattleScene extends SceneBase { !isNullOrUndefined(this.currentBattle.trainer) && this.currentBattle.trainer.config.hasSpecialtyType() ) { - if (species.speciesId === Species.WORMADAM) { + if (species.speciesId === SpeciesId.WORMADAM) { switch (this.currentBattle.trainer.config.specialtyType) { case PokemonType.GROUND: return 1; // Sandy Cloak @@ -1609,7 +1609,7 @@ export default class BattleScene extends SceneBase { return 0; // Plant Cloak } } - if (species.speciesId === Species.ROTOM) { + if (species.speciesId === SpeciesId.ROTOM) { switch (this.currentBattle.trainer.config.specialtyType) { case PokemonType.FLYING: return 4; // Fan Rotom @@ -1625,7 +1625,7 @@ export default class BattleScene extends SceneBase { return 3; // Frost Rotom } } - if (species.speciesId === Species.ORICORIO) { + if (species.speciesId === SpeciesId.ORICORIO) { switch (this.currentBattle.trainer.config.specialtyType) { case PokemonType.GHOST: return 3; // Sensu Style @@ -1637,7 +1637,7 @@ export default class BattleScene extends SceneBase { return 2; // Pa'u Style } } - if (species.speciesId === Species.PALDEA_TAUROS) { + if (species.speciesId === SpeciesId.PALDEA_TAUROS) { switch (this.currentBattle.trainer.config.specialtyType) { case PokemonType.FIRE: return 1; // Blaze Breed @@ -1645,41 +1645,41 @@ export default class BattleScene extends SceneBase { return 2; // Aqua Breed } } - if (species.speciesId === Species.SILVALLY || species.speciesId === Species.ARCEUS) { + if (species.speciesId === SpeciesId.SILVALLY || species.speciesId === SpeciesId.ARCEUS) { // Would probably never happen, but might as well return this.currentBattle.trainer.config.specialtyType; } } switch (species.speciesId) { - case Species.UNOWN: - case Species.SHELLOS: - case Species.GASTRODON: - case Species.BASCULIN: - case Species.DEERLING: - case Species.SAWSBUCK: - case Species.SCATTERBUG: - case Species.SPEWPA: - case Species.VIVILLON: - case Species.FLABEBE: - case Species.FLOETTE: - case Species.FLORGES: - case Species.FURFROU: - case Species.PUMPKABOO: - case Species.GOURGEIST: - case Species.ORICORIO: - case Species.MAGEARNA: - case Species.ZARUDE: - case Species.SQUAWKABILLY: - case Species.TATSUGIRI: - case Species.PALDEA_TAUROS: + case SpeciesId.UNOWN: + case SpeciesId.SHELLOS: + case SpeciesId.GASTRODON: + case SpeciesId.BASCULIN: + case SpeciesId.DEERLING: + case SpeciesId.SAWSBUCK: + case SpeciesId.SCATTERBUG: + case SpeciesId.SPEWPA: + case SpeciesId.VIVILLON: + case SpeciesId.FLABEBE: + case SpeciesId.FLOETTE: + case SpeciesId.FLORGES: + case SpeciesId.FURFROU: + case SpeciesId.PUMPKABOO: + case SpeciesId.GOURGEIST: + case SpeciesId.ORICORIO: + case SpeciesId.MAGEARNA: + case SpeciesId.ZARUDE: + case SpeciesId.SQUAWKABILLY: + case SpeciesId.TATSUGIRI: + case SpeciesId.PALDEA_TAUROS: return randSeedInt(species.forms.length); - case Species.PIKACHU: + case SpeciesId.PIKACHU: if (this.currentBattle?.battleType === BattleType.TRAINER && this.currentBattle?.waveIndex < 30) { return 0; // Ban Cosplay and Partner Pika from Trainers before wave 30 } return randSeedInt(8); - case Species.EEVEE: + case SpeciesId.EEVEE: if ( this.currentBattle?.battleType === BattleType.TRAINER && this.currentBattle?.waveIndex < 30 && @@ -1688,27 +1688,27 @@ export default class BattleScene extends SceneBase { return 0; // No Partner Eevee for Wave 12 Preschoolers } return randSeedInt(2); - case Species.FROAKIE: - case Species.FROGADIER: - case Species.GRENINJA: + case SpeciesId.FROAKIE: + case SpeciesId.FROGADIER: + case SpeciesId.GRENINJA: if (this.currentBattle?.battleType === BattleType.TRAINER && !isEggPhase) { return 0; // Don't give trainers Battle Bond Greninja, Froakie or Frogadier } return randSeedInt(2); - case Species.URSHIFU: + case SpeciesId.URSHIFU: return randSeedInt(2); - case Species.ZYGARDE: + case SpeciesId.ZYGARDE: return randSeedInt(4); - case Species.MINIOR: + case SpeciesId.MINIOR: return randSeedInt(7); - case Species.ALCREMIE: + case SpeciesId.ALCREMIE: return randSeedInt(9); - case Species.MEOWSTIC: - case Species.INDEEDEE: - case Species.BASCULEGION: - case Species.OINKOLOGNE: + case SpeciesId.MEOWSTIC: + case SpeciesId.INDEEDEE: + case SpeciesId.BASCULEGION: + case SpeciesId.OINKOLOGNE: return gender === Gender.FEMALE ? 1 : 0; - case Species.TOXTRICITY: { + case SpeciesId.TOXTRICITY: { const lowkeyNatures = [ Nature.LONELY, Nature.BOLD, @@ -1728,7 +1728,7 @@ export default class BattleScene extends SceneBase { } return 0; } - case Species.GIMMIGHOUL: + case SpeciesId.GIMMIGHOUL: // Chest form can only be found in Mysterious Chest Encounter, if this is a game mode with MEs if (this.gameMode.hasMysteryEncounters && !isEggPhase) { return 1; // Wandering form @@ -1738,10 +1738,10 @@ export default class BattleScene extends SceneBase { if (ignoreArena) { switch (species.speciesId) { - case Species.BURMY: - case Species.WORMADAM: - case Species.ROTOM: - case Species.LYCANROC: + case SpeciesId.BURMY: + case SpeciesId.WORMADAM: + case SpeciesId.ROTOM: + case SpeciesId.LYCANROC: return randSeedInt(species.forms.length); } return 0; @@ -2172,10 +2172,10 @@ export default class BattleScene extends SceneBase { return filteredSpecies[randSeedInt(filteredSpecies.length)]; } - generateRandomBiome(waveIndex: number): Biome { + generateRandomBiome(waveIndex: number): BiomeId { const relWave = waveIndex % 250; - const biomes = getEnumValues(Biome).filter(b => b !== Biome.TOWN && b !== Biome.END); - const maxDepth = biomeDepths[Biome.END][0] - 2; + const biomes = getEnumValues(BiomeId).filter(b => b !== BiomeId.TOWN && b !== BiomeId.END); + const maxDepth = biomeDepths[BiomeId.END][0] - 2; const depthWeights = new Array(maxDepth + 1) .fill(null) .map((_, i: number) => ((1 - Math.min(Math.abs(i / (maxDepth - 1) - relWave / 250) + 0.25, 1)) / 0.75) * 250); @@ -3475,7 +3475,7 @@ export default class BattleScene extends SceneBase { fc => fc.findTrigger(formChangeTriggerType) && fc.canChange(pokemon), ); let matchingFormChange: SpeciesFormChange | null; - if (pokemon.species.speciesId === Species.NECROZMA && matchingFormChangeOpts.length > 1) { + if (pokemon.species.speciesId === SpeciesId.NECROZMA && matchingFormChangeOpts.length > 1) { // Ultra Necrozma is changing its form back, so we need to figure out into which form it devolves. const formChangeItemModifiers = ( this.findModifiers( diff --git a/src/battle.ts b/src/battle.ts index 07e520d6bc0..8e63a680c06 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -19,10 +19,10 @@ import type { EnemyPokemon, PlayerPokemon, TurnMove } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattleSpec } from "#enums/battle-spec"; -import type { Moves } from "#enums/moves"; +import type { MoveId } from "#enums/move-id"; import { PlayerGender } from "#enums/player-gender"; import { MusicPreference } from "#app/system/settings/settings"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { TrainerType } from "#enums/trainer-type"; import i18next from "#app/plugins/i18n"; import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; @@ -78,7 +78,7 @@ export default class Battle { public battleScore = 0; public postBattleLoot: PokemonHeldItemModifier[] = []; public escapeAttempts = 0; - public lastMove: Moves; + public lastMove: MoveId; public battleSeed: string = randomString(16, true); private battleSeedState: string | null = null; public moneyScattered = 0; @@ -264,14 +264,14 @@ export default class Battle { if (pokemon.species.legendary || pokemon.species.subLegendary || pokemon.species.mythical) { if (globalScene.musicPreference === MusicPreference.GENFIVE) { switch (pokemon.species.speciesId) { - case Species.REGIROCK: - case Species.REGICE: - case Species.REGISTEEL: - case Species.REGIGIGAS: - case Species.REGIDRAGO: - case Species.REGIELEKI: + case SpeciesId.REGIROCK: + case SpeciesId.REGICE: + case SpeciesId.REGISTEEL: + case SpeciesId.REGIGIGAS: + case SpeciesId.REGIDRAGO: + case SpeciesId.REGIELEKI: return "battle_legendary_regis_g5"; - case Species.KYUREM: + case SpeciesId.KYUREM: return "battle_legendary_kyurem"; default: if (pokemon.species.legendary) { @@ -282,80 +282,80 @@ export default class Battle { } if (globalScene.musicPreference === MusicPreference.ALLGENS) { switch (pokemon.species.speciesId) { - case Species.ARTICUNO: - case Species.ZAPDOS: - case Species.MOLTRES: - case Species.MEWTWO: - case Species.MEW: + case SpeciesId.ARTICUNO: + case SpeciesId.ZAPDOS: + case SpeciesId.MOLTRES: + case SpeciesId.MEWTWO: + case SpeciesId.MEW: return "battle_legendary_kanto"; - case Species.RAIKOU: + case SpeciesId.RAIKOU: return "battle_legendary_raikou"; - case Species.ENTEI: + case SpeciesId.ENTEI: return "battle_legendary_entei"; - case Species.SUICUNE: + case SpeciesId.SUICUNE: return "battle_legendary_suicune"; - case Species.LUGIA: + case SpeciesId.LUGIA: return "battle_legendary_lugia"; - case Species.HO_OH: + case SpeciesId.HO_OH: return "battle_legendary_ho_oh"; - case Species.REGIROCK: - case Species.REGICE: - case Species.REGISTEEL: - case Species.REGIGIGAS: - case Species.REGIDRAGO: - case Species.REGIELEKI: + case SpeciesId.REGIROCK: + case SpeciesId.REGICE: + case SpeciesId.REGISTEEL: + case SpeciesId.REGIGIGAS: + case SpeciesId.REGIDRAGO: + case SpeciesId.REGIELEKI: return "battle_legendary_regis_g6"; - case Species.GROUDON: - case Species.KYOGRE: + case SpeciesId.GROUDON: + case SpeciesId.KYOGRE: return "battle_legendary_gro_kyo"; - case Species.RAYQUAZA: + case SpeciesId.RAYQUAZA: return "battle_legendary_rayquaza"; - case Species.DEOXYS: + case SpeciesId.DEOXYS: return "battle_legendary_deoxys"; - case Species.UXIE: - case Species.MESPRIT: - case Species.AZELF: + case SpeciesId.UXIE: + case SpeciesId.MESPRIT: + case SpeciesId.AZELF: return "battle_legendary_lake_trio"; - case Species.HEATRAN: - case Species.CRESSELIA: - case Species.DARKRAI: - case Species.SHAYMIN: + case SpeciesId.HEATRAN: + case SpeciesId.CRESSELIA: + case SpeciesId.DARKRAI: + case SpeciesId.SHAYMIN: return "battle_legendary_sinnoh"; - case Species.DIALGA: - case Species.PALKIA: + case SpeciesId.DIALGA: + case SpeciesId.PALKIA: if (pokemon.species.getFormSpriteKey(pokemon.formIndex) === SpeciesFormKey.ORIGIN) { return "battle_legendary_origin_forme"; } return "battle_legendary_dia_pal"; - case Species.GIRATINA: + case SpeciesId.GIRATINA: return "battle_legendary_giratina"; - case Species.ARCEUS: + case SpeciesId.ARCEUS: return "battle_legendary_arceus"; - case Species.COBALION: - case Species.TERRAKION: - case Species.VIRIZION: - case Species.KELDEO: - case Species.TORNADUS: - case Species.LANDORUS: - case Species.THUNDURUS: - case Species.MELOETTA: - case Species.GENESECT: + case SpeciesId.COBALION: + case SpeciesId.TERRAKION: + case SpeciesId.VIRIZION: + case SpeciesId.KELDEO: + case SpeciesId.TORNADUS: + case SpeciesId.LANDORUS: + case SpeciesId.THUNDURUS: + case SpeciesId.MELOETTA: + case SpeciesId.GENESECT: return "battle_legendary_unova"; - case Species.KYUREM: + case SpeciesId.KYUREM: return "battle_legendary_kyurem"; - case Species.XERNEAS: - case Species.YVELTAL: - case Species.ZYGARDE: + case SpeciesId.XERNEAS: + case SpeciesId.YVELTAL: + case SpeciesId.ZYGARDE: return "battle_legendary_xern_yvel"; - case Species.TAPU_KOKO: - case Species.TAPU_LELE: - case Species.TAPU_BULU: - case Species.TAPU_FINI: + case SpeciesId.TAPU_KOKO: + case SpeciesId.TAPU_LELE: + case SpeciesId.TAPU_BULU: + case SpeciesId.TAPU_FINI: return "battle_legendary_tapu"; - case Species.SOLGALEO: - case Species.LUNALA: + case SpeciesId.SOLGALEO: + case SpeciesId.LUNALA: return "battle_legendary_sol_lun"; - case Species.NECROZMA: + case SpeciesId.NECROZMA: switch (pokemon.getFormKey()) { case "dusk-mane": case "dawn-wings": @@ -365,50 +365,50 @@ export default class Battle { default: return "battle_legendary_sol_lun"; } - case Species.NIHILEGO: - case Species.PHEROMOSA: - case Species.BUZZWOLE: - case Species.XURKITREE: - case Species.CELESTEELA: - case Species.KARTANA: - case Species.GUZZLORD: - case Species.POIPOLE: - case Species.NAGANADEL: - case Species.STAKATAKA: - case Species.BLACEPHALON: + case SpeciesId.NIHILEGO: + case SpeciesId.PHEROMOSA: + case SpeciesId.BUZZWOLE: + case SpeciesId.XURKITREE: + case SpeciesId.CELESTEELA: + case SpeciesId.KARTANA: + case SpeciesId.GUZZLORD: + case SpeciesId.POIPOLE: + case SpeciesId.NAGANADEL: + case SpeciesId.STAKATAKA: + case SpeciesId.BLACEPHALON: return "battle_legendary_ub"; - case Species.ZACIAN: - case Species.ZAMAZENTA: + case SpeciesId.ZACIAN: + case SpeciesId.ZAMAZENTA: return "battle_legendary_zac_zam"; - case Species.GLASTRIER: - case Species.SPECTRIER: + case SpeciesId.GLASTRIER: + case SpeciesId.SPECTRIER: return "battle_legendary_glas_spec"; - case Species.CALYREX: + case SpeciesId.CALYREX: if (pokemon.getFormKey() === "ice" || pokemon.getFormKey() === "shadow") { return "battle_legendary_riders"; } return "battle_legendary_calyrex"; - case Species.GALAR_ARTICUNO: - case Species.GALAR_ZAPDOS: - case Species.GALAR_MOLTRES: + case SpeciesId.GALAR_ARTICUNO: + case SpeciesId.GALAR_ZAPDOS: + case SpeciesId.GALAR_MOLTRES: return "battle_legendary_birds_galar"; - case Species.WO_CHIEN: - case Species.CHIEN_PAO: - case Species.TING_LU: - case Species.CHI_YU: + case SpeciesId.WO_CHIEN: + case SpeciesId.CHIEN_PAO: + case SpeciesId.TING_LU: + case SpeciesId.CHI_YU: return "battle_legendary_ruinous"; - case Species.KORAIDON: - case Species.MIRAIDON: + case SpeciesId.KORAIDON: + case SpeciesId.MIRAIDON: return "battle_legendary_kor_mir"; - case Species.OKIDOGI: - case Species.MUNKIDORI: - case Species.FEZANDIPITI: + case SpeciesId.OKIDOGI: + case SpeciesId.MUNKIDORI: + case SpeciesId.FEZANDIPITI: return "battle_legendary_loyal_three"; - case Species.OGERPON: + case SpeciesId.OGERPON: return "battle_legendary_ogerpon"; - case Species.TERAPAGOS: + case SpeciesId.TERAPAGOS: return "battle_legendary_terapagos"; - case Species.PECHARUNT: + case SpeciesId.PECHARUNT: return "battle_legendary_pecharunt"; default: if (pokemon.species.legendary) { diff --git a/src/data/abilities/ability-class.ts b/src/data/abilities/ability-class.ts index 387c5fb328b..9da83a32c4d 100644 --- a/src/data/abilities/ability-class.ts +++ b/src/data/abilities/ability-class.ts @@ -1,4 +1,4 @@ -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import type { AbAttrCondition } from "#app/@types/ability-types"; import type { AbAttr } from "#app/data/abilities/ab-attrs/ab-attr"; import i18next from "i18next"; @@ -6,7 +6,7 @@ import type { Localizable } from "#app/interfaces/locales"; import type { Constructor } from "#app/utils/common"; export class Ability implements Localizable { - public id: Abilities; + public id: AbilityId; private nameAppend: string; public name: string; @@ -20,7 +20,7 @@ export class Ability implements Localizable { public attrs: AbAttr[]; public conditions: AbAttrCondition[]; - constructor(id: Abilities, generation: number) { + constructor(id: AbilityId, generation: number) { this.id = id; this.nameAppend = ""; @@ -39,7 +39,7 @@ export class Ability implements Localizable { return this.isCopiable && this.isReplaceable; } localize(): void { - const i18nKey = Abilities[this.id] + const i18nKey = AbilityId[this.id] .split("_") .filter(f => f) .map((f, i) => (i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase())) diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index f49863639f0..8f5f267f7ef 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -50,11 +50,11 @@ import { PokemonType } from "#enums/pokemon-type"; import { PokemonAnimType } from "#enums/pokemon-anim-type"; import { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { SwitchType } from "#enums/switch-type"; import { MoveFlags } from "#enums/MoveFlags"; import { MoveTarget } from "#enums/MoveTarget"; @@ -868,7 +868,7 @@ export class EffectSporeAbAttr extends PostDefendContactApplyStatusEffectAbAttr } override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { - return !(attacker.hasAbility(Abilities.OVERCOAT) || attacker.isOfType(PokemonType.GRASS)) + return !(attacker.hasAbility(AbilityId.OVERCOAT) || attacker.isOfType(PokemonType.GRASS)) && super.canApplyPostDefend(pokemon, passive, simulated, attacker, move, hitResult, args); } @@ -1029,9 +1029,9 @@ export class PostDefendAbilitySwapAbAttr extends PostDefendAbAttr { } export class PostDefendAbilityGiveAbAttr extends PostDefendAbAttr { - private ability: Abilities; + private ability: AbilityId; - constructor(ability: Abilities) { + constructor(ability: AbilityId) { super(); this.ability = ability; } @@ -1139,13 +1139,13 @@ export class MoveEffectChanceMultiplierAbAttr extends AbAttr { } override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - const exceptMoves = [ Moves.ORDER_UP, Moves.ELECTRO_SHOT ]; + const exceptMoves = [ MoveId.ORDER_UP, MoveId.ELECTRO_SHOT ]; return !((args[0] as NumberHolder).value <= 0 || exceptMoves.includes((args[1] as Move).id)); } /** * @param args [0]: {@linkcode NumberHolder} Move additional effect chance. Has to be higher than or equal to 0. - * [1]: {@linkcode Moves } Move used by the ability user. + * [1]: {@linkcode MoveId } Move used by the ability user. */ override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { (args[0] as NumberHolder).value *= this.chanceMultiplier; @@ -1249,7 +1249,7 @@ export class MoveTypeChangeAbAttr extends PreAttackAbAttr { * * Can be applied if: * - The ability's condition is met, e.g. pixilate only boosts normal moves, - * - The move is not forbidden from having its type changed by an ability, e.g. {@linkcode Moves.MULTI_ATTACK} + * - The move is not forbidden from having its type changed by an ability, e.g. {@linkcode MoveId.MULTI_ATTACK} * - The user is not terastallized and using tera blast * - The user is not a terastallized terapagos with tera stellar using tera starstorm * @param pokemon - The pokemon that has the move type changing ability and is using the attacking move @@ -1264,8 +1264,8 @@ export class MoveTypeChangeAbAttr extends PreAttackAbAttr { return (!this.condition || this.condition(pokemon, _defender, move)) && !noAbilityTypeOverrideMoves.has(move.id) && (!pokemon.isTerastallized || - (move.id !== Moves.TERA_BLAST && - (move.id !== Moves.TERA_STARSTORM || pokemon.getTeraType() !== PokemonType.STELLAR || !pokemon.hasSpecies(Species.TERAPAGOS)))); + (move.id !== MoveId.TERA_BLAST && + (move.id !== MoveId.TERA_STARSTORM || pokemon.getTeraType() !== PokemonType.STELLAR || !pokemon.hasSpecies(SpeciesId.TERAPAGOS)))); } /** @@ -1296,7 +1296,7 @@ export class PokemonTypeChangeAbAttr extends PreAttackAbAttr { override canApplyPreAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon | null, move: Move, args: any[]): boolean { if (!pokemon.isTerastallized && - move.id !== Moves.STRUGGLE && + move.id !== MoveId.STRUGGLE && /** * Skip moves that call other moves because these moves generate a following move that will trigger this ability attribute * @see {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_call_other_moves} @@ -2574,7 +2574,7 @@ export class PostSummonCopyAbilityAbAttr extends PostSummonAbAttr { if ( !target!.getAbility().isCopiable && // Wonder Guard is normally uncopiable so has the attribute, but Trace specifically can copy it - !(pokemon.hasAbility(Abilities.TRACE) && target!.getAbility().id === Abilities.WONDER_GUARD) + !(pokemon.hasAbility(AbilityId.TRACE) && target!.getAbility().id === AbilityId.WONDER_GUARD) ) { return false; } @@ -2679,7 +2679,7 @@ export class PostSummonCopyAllyStatsAbAttr extends PostSummonAbAttr { } /** - * Attribute used by {@linkcode Abilities.IMPOSTER} to transform into a random opposing pokemon on entry. + * Attribute used by {@linkcode AbilityId.IMPOSTER} to transform into a random opposing pokemon on entry. */ export class PostSummonTransformAbAttr extends PostSummonAbAttr { constructor() { @@ -2767,17 +2767,17 @@ export class PostSummonWeatherSuppressedFormChangeAbAttr extends PostSummonAbAtt * @extends PostSummonAbAttr */ export class PostSummonFormChangeByWeatherAbAttr extends PostSummonAbAttr { - private ability: Abilities; + private ability: AbilityId; - constructor(ability: Abilities) { + constructor(ability: AbilityId) { super(true); this.ability = ability; } override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - const isCastformWithForecast = (pokemon.species.speciesId === Species.CASTFORM && this.ability === Abilities.FORECAST); - const isCherrimWithFlowerGift = (pokemon.species.speciesId === Species.CHERRIM && this.ability === Abilities.FLOWER_GIFT); + const isCastformWithForecast = (pokemon.species.speciesId === SpeciesId.CASTFORM && this.ability === AbilityId.FORECAST); + const isCherrimWithFlowerGift = (pokemon.species.speciesId === SpeciesId.CHERRIM && this.ability === AbilityId.FLOWER_GIFT); return isCastformWithForecast || isCherrimWithFlowerGift; } @@ -2815,7 +2815,7 @@ export class CommanderAbAttr extends AbAttr { // TODO: Should this work with X + Dondozo fusions? const ally = pokemon.getAlly(); - return globalScene.currentBattle?.double && !isNullOrUndefined(ally) && ally.species.speciesId === Species.DONDOZO + return globalScene.currentBattle?.double && !isNullOrUndefined(ally) && ally.species.speciesId === SpeciesId.DONDOZO && !(ally.isFainted() || ally.getTag(BattlerTagType.COMMANDED)); } @@ -2826,7 +2826,7 @@ export class CommanderAbAttr extends AbAttr { // Play an animation of the source jumping into the ally Dondozo's mouth globalScene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.COMMANDER_APPLY); // Apply boosts from this effect to the ally Dondozo - pokemon.getAlly()?.addTag(BattlerTagType.COMMANDED, 0, Moves.NONE, pokemon.id); + pokemon.getAlly()?.addTag(BattlerTagType.COMMANDED, 0, MoveId.NONE, pokemon.id); // Cancel the source Pokemon's next move (if a move is queued) globalScene.tryRemovePhase((phase) => phase instanceof MovePhase && phase.pokemon === pokemon); } @@ -2880,33 +2880,33 @@ export class PreSwitchOutClearWeatherAbAttr extends PreSwitchOutAbAttr { switch (weatherType) { case WeatherType.HARSH_SUN: if ( - pokemon.hasAbility(Abilities.DESOLATE_LAND) && + pokemon.hasAbility(AbilityId.DESOLATE_LAND) && globalScene .getField(true) .filter((p) => p !== pokemon) - .filter((p) => p.hasAbility(Abilities.DESOLATE_LAND)).length === 0 + .filter((p) => p.hasAbility(AbilityId.DESOLATE_LAND)).length === 0 ) { turnOffWeather = true; } break; case WeatherType.HEAVY_RAIN: if ( - pokemon.hasAbility(Abilities.PRIMORDIAL_SEA) && + pokemon.hasAbility(AbilityId.PRIMORDIAL_SEA) && globalScene .getField(true) .filter((p) => p !== pokemon) - .filter((p) => p.hasAbility(Abilities.PRIMORDIAL_SEA)).length === 0 + .filter((p) => p.hasAbility(AbilityId.PRIMORDIAL_SEA)).length === 0 ) { turnOffWeather = true; } break; case WeatherType.STRONG_WINDS: if ( - pokemon.hasAbility(Abilities.DELTA_STREAM) && + pokemon.hasAbility(AbilityId.DELTA_STREAM) && globalScene .getField(true) .filter((p) => p !== pokemon) - .filter((p) => p.hasAbility(Abilities.DELTA_STREAM)).length === 0 + .filter((p) => p.hasAbility(AbilityId.DELTA_STREAM)).length === 0 ) { turnOffWeather = true; } @@ -2990,20 +2990,20 @@ export class PreLeaveFieldClearWeatherAbAttr extends PreLeaveFieldAbAttr { // Clear weather only if user's ability matches the weather and no other pokemon has the ability. switch (weatherType) { case (WeatherType.HARSH_SUN): - if (pokemon.hasAbility(Abilities.DESOLATE_LAND) - && globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.DESOLATE_LAND)).length === 0) { + if (pokemon.hasAbility(AbilityId.DESOLATE_LAND) + && globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(AbilityId.DESOLATE_LAND)).length === 0) { return true; } break; case (WeatherType.HEAVY_RAIN): - if (pokemon.hasAbility(Abilities.PRIMORDIAL_SEA) - && globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.PRIMORDIAL_SEA)).length === 0) { + if (pokemon.hasAbility(AbilityId.PRIMORDIAL_SEA) + && globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(AbilityId.PRIMORDIAL_SEA)).length === 0) { return true; } break; case (WeatherType.STRONG_WINDS): - if (pokemon.hasAbility(Abilities.DELTA_STREAM) - && globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.DELTA_STREAM)).length === 0) { + if (pokemon.hasAbility(AbilityId.DELTA_STREAM) + && globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(AbilityId.DELTA_STREAM)).length === 0) { return true; } break; @@ -3024,7 +3024,7 @@ export class PreLeaveFieldClearWeatherAbAttr extends PreLeaveFieldAbAttr { } /** - * Updates the active {@linkcode SuppressAbilitiesTag} when a pokemon with {@linkcode Abilities.NEUTRALIZING_GAS} leaves the field + * Updates the active {@linkcode SuppressAbilitiesTag} when a pokemon with {@linkcode AbilityId.NEUTRALIZING_GAS} leaves the field */ export class PreLeaveFieldRemoveSuppressAbilitiesSourceAbAttr extends PreLeaveFieldAbAttr { constructor() { @@ -3261,7 +3261,7 @@ export class UserFieldStatusEffectImmunityAbAttr extends PreSetStatusEffectImmun /** * Conditionally provides immunity to status effects to the user's field. * - * Used by {@linkcode Abilities.FLOWER_VEIL | Flower Veil}. + * Used by {@linkcode AbilityId.FLOWER_VEIL | Flower Veil}. * @extends UserFieldStatusEffectImmunityAbAttr * */ @@ -3297,7 +3297,7 @@ export class ConditionalUserFieldStatusEffectImmunityAbAttr extends UserFieldSta /** * Conditionally provides immunity to stat drop effects to the user's field. * - * Used by {@linkcode Abilities.FLOWER_VEIL | Flower Veil}. + * Used by {@linkcode AbilityId.FLOWER_VEIL | Flower Veil}. */ export class ConditionalUserFieldProtectStatAbAttr extends PreStatStageChangeAbAttr { /** {@linkcode BattleStat} to protect or `undefined` if **all** {@linkcode BattleStat} are protected */ @@ -3676,7 +3676,7 @@ function getSheerForceHitDisableAbCondition(): AbAttrCondition { } /** `true` if the last move's chance is above 0 and the last attacker's ability is sheer force */ - const SheerForceAffected = allMoves[lastReceivedAttack.move].chance >= 0 && lastAttacker.hasAbility(Abilities.SHEER_FORCE); + const SheerForceAffected = allMoves[lastReceivedAttack.move].chance >= 0 && lastAttacker.hasAbility(AbilityId.SHEER_FORCE); return !SheerForceAffected; }; @@ -3712,7 +3712,7 @@ function getAnticipationCondition(): AbAttrCondition { return true; } // edge case for hidden power, type is computed - if (move.getMove().id === Moves.HIDDEN_POWER) { + if (move.getMove().id === MoveId.HIDDEN_POWER) { const iv_val = Math.floor(((opponent.ivs[Stat.HP] & 1) + (opponent.ivs[Stat.ATK] & 1) * 2 + (opponent.ivs[Stat.DEF] & 1) * 4 @@ -3740,10 +3740,10 @@ function getAnticipationCondition(): AbAttrCondition { * Creates an ability condition that causes the ability to fail if that ability * has already been used by that pokemon that battle. It requires an ability to * be specified due to current limitations in how conditions on abilities work. - * @param {Abilities} ability The ability to check if it's already been applied + * @param {AbilityId} ability The ability to check if it's already been applied * @returns {AbAttrCondition} The condition */ -function getOncePerBattleCondition(ability: Abilities): AbAttrCondition { +function getOncePerBattleCondition(ability: AbilityId): AbAttrCondition { return (pokemon: Pokemon) => { return !pokemon.waveData.abilitiesApplied.has(ability); }; @@ -3764,7 +3764,7 @@ export class ForewarnAbAttr extends PostSummonAbAttr { movePower = 1; } else if (move?.getMove().hasAttr(OneHitKOAttr)) { movePower = 150; - } else if (move?.getMove().id === Moves.COUNTER || move?.getMove().id === Moves.MIRROR_COAT || move?.getMove().id === Moves.METAL_BURST) { + } else if (move?.getMove().id === MoveId.COUNTER || move?.getMove().id === MoveId.MIRROR_COAT || move?.getMove().id === MoveId.METAL_BURST) { movePower = 120; } else if (move?.getMove().power === -1) { movePower = 80; @@ -3813,10 +3813,10 @@ export class PostWeatherChangeAbAttr extends AbAttr { * @extends PostWeatherChangeAbAttr */ export class PostWeatherChangeFormChangeAbAttr extends PostWeatherChangeAbAttr { - private ability: Abilities; + private ability: AbilityId; private formRevertingWeathers: WeatherType[]; - constructor(ability: Abilities, formRevertingWeathers: WeatherType[]) { + constructor(ability: AbilityId, formRevertingWeathers: WeatherType[]) { super(false); this.ability = ability; @@ -3824,8 +3824,8 @@ export class PostWeatherChangeFormChangeAbAttr extends PostWeatherChangeAbAttr { } override canApplyPostWeatherChange(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: WeatherType, args: any[]): boolean { - const isCastformWithForecast = (pokemon.species.speciesId === Species.CASTFORM && this.ability === Abilities.FORECAST); - const isCherrimWithFlowerGift = (pokemon.species.speciesId === Species.CHERRIM && this.ability === Abilities.FLOWER_GIFT); + const isCastformWithForecast = (pokemon.species.speciesId === SpeciesId.CASTFORM && this.ability === AbilityId.FORECAST); + const isCherrimWithFlowerGift = (pokemon.species.speciesId === SpeciesId.CHERRIM && this.ability === AbilityId.FLOWER_GIFT); return isCastformWithForecast || isCherrimWithFlowerGift; } @@ -4067,7 +4067,7 @@ export class PostTurnResetStatusAbAttr extends PostTurnAbAttr { /** * Attribute to try and restore eaten berries after the turn ends. - * Used by {@linkcode Abilities.HARVEST}. + * Used by {@linkcode AbilityId.HARVEST}. */ export class PostTurnRestoreBerryAbAttr extends PostTurnAbAttr { /** @@ -4150,7 +4150,7 @@ export class PostTurnRestoreBerryAbAttr extends PostTurnAbAttr { /** * Attribute to track and re-trigger last turn's berries at the end of the `BerryPhase`. - * Used by {@linkcode Abilities.CUD_CHEW}. + * Used by {@linkcode AbilityId.CUD_CHEW}. */ export class RepeatBerryNextTurnAbAttr extends PostTurnAbAttr { /** @@ -4212,7 +4212,7 @@ export class RepeatBerryNextTurnAbAttr extends PostTurnAbAttr { } /** - * Attribute used for {@linkcode Abilities.MOODY} to randomly raise and lower stats at turn end. + * Attribute used for {@linkcode AbilityId.MOODY} to randomly raise and lower stats at turn end. */ export class MoodyAbAttr extends PostTurnAbAttr { constructor() { @@ -4302,7 +4302,7 @@ export class PostTurnFormChangeAbAttr extends PostTurnAbAttr { */ export class PostTurnHurtIfSleepingAbAttr extends PostTurnAbAttr { override canApplyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - return pokemon.getOpponents().some(opp => (opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(Abilities.COMATOSE)) && !opp.hasAbilityWithAttr(BlockNonDirectDamageAbAttr) && !opp.switchOutStatus); + return pokemon.getOpponents().some(opp => (opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(AbilityId.COMATOSE)) && !opp.hasAbilityWithAttr(BlockNonDirectDamageAbAttr) && !opp.switchOutStatus); } /** * Deals damage to all sleeping opponents equal to 1/8 of their max hp (min 1) @@ -4313,7 +4313,7 @@ export class PostTurnHurtIfSleepingAbAttr extends PostTurnAbAttr { */ override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { for (const opp of pokemon.getOpponents()) { - if ((opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(Abilities.COMATOSE)) && !opp.hasAbilityWithAttr(BlockNonDirectDamageAbAttr) && !opp.switchOutStatus) { + if ((opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(AbilityId.COMATOSE)) && !opp.hasAbilityWithAttr(BlockNonDirectDamageAbAttr) && !opp.switchOutStatus) { if (!simulated) { opp.damageAndUpdate(toDmgValue(opp.getMaxHp() / 8), { result: HitResult.INDIRECT }); globalScene.queueMessage(i18next.t("abilityTriggers:badDreams", { pokemonName: getPokemonNameWithAffix(opp) })); @@ -4579,7 +4579,7 @@ export class DoubleBerryEffectAbAttr extends AbAttr { /** * Attribute to prevent opposing berry use while on the field. - * Used by {@linkcode Abilities.UNNERVE}, {@linkcode Abilities.AS_ONE_GLASTRIER} and {@linkcode Abilities.AS_ONE_SPECTRIER} + * Used by {@linkcode AbilityId.UNNERVE}, {@linkcode AbilityId.AS_ONE_GLASTRIER} and {@linkcode AbilityId.AS_ONE_SPECTRIER} */ export class PreventBerryUseAbAttr extends AbAttr { /** @@ -4680,7 +4680,7 @@ export class ArenaTrapAbAttr extends CheckTrappedAbAttr { override canApplyCheckTrapped(pokemon: Pokemon, passive: boolean, simulated: boolean, trapped: BooleanHolder, otherPokemon: Pokemon, args: any[]): boolean { return this.arenaTrapCondition(pokemon, otherPokemon) && !(otherPokemon.getTypes(true).includes(PokemonType.GHOST) || (otherPokemon.getTypes(true).includes(PokemonType.STELLAR) && otherPokemon.getTypes().includes(PokemonType.GHOST))) - && !otherPokemon.hasAbility(Abilities.RUN_AWAY); + && !otherPokemon.hasAbility(AbilityId.RUN_AWAY); } /** @@ -4856,7 +4856,7 @@ export class RedirectMoveAbAttr extends AbAttr { */ override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - if (!this.canRedirect(args[0] as Moves, args[2] as Pokemon)) { + if (!this.canRedirect(args[0] as MoveId, args[2] as Pokemon)) { return false; } const target = args[1] as NumberHolder; @@ -4870,7 +4870,7 @@ export class RedirectMoveAbAttr extends AbAttr { target.value = newTarget; } - canRedirect(moveId: Moves, user: Pokemon): boolean { + canRedirect(moveId: MoveId, user: Pokemon): boolean { const move = allMoves[moveId]; return !![ MoveTarget.NEAR_OTHER, MoveTarget.OTHER ].find(t => move.moveTarget === t); } @@ -4884,7 +4884,7 @@ export class RedirectTypeMoveAbAttr extends RedirectMoveAbAttr { this.type = type; } - canRedirect(moveId: Moves, user: Pokemon): boolean { + canRedirect(moveId: MoveId, user: Pokemon): boolean { return super.canRedirect(moveId, user) && user.getMoveType(allMoves[moveId]) === this.type; } } @@ -5050,7 +5050,7 @@ export class InfiltratorAbAttr extends AbAttr { /** * Attribute implementing the effects of {@link https://bulbapedia.bulbagarden.net/wiki/Magic_Bounce_(ability) | Magic Bounce}. * Allows the source to bounce back {@linkcode MoveFlags.REFLECTABLE | Reflectable} - * moves as if the user had used {@linkcode Moves.MAGIC_COAT | Magic Coat}. + * moves as if the user had used {@linkcode MoveId.MAGIC_COAT | Magic Coat}. */ export class ReflectStatusMoveAbAttr extends AbAttr { } @@ -5273,7 +5273,7 @@ export class IllusionPreSummonAbAttr extends PreSummonAbAttr { // Illusion will also not activate if the Pokémon with Illusion is Terastallized and the last Pokémon in the party is Ogerpon or Terapagos. if ( lastPokemon === pokemon || - ((speciesId === Species.OGERPON || speciesId === Species.TERAPAGOS) && (lastPokemon.isTerastallized || pokemon.isTerastallized)) + ((speciesId === SpeciesId.OGERPON || speciesId === SpeciesId.TERAPAGOS) && (lastPokemon.isTerastallized || pokemon.isTerastallized)) ) { return false; } @@ -5731,7 +5731,7 @@ export class PostDamageForceSwitchAbAttr extends PostDamageAbAttr { source?: Pokemon): boolean { const moveHistory = pokemon.getMoveHistory(); // Will not activate when the Pokémon's HP is lowered by cutting its own HP - const fordbiddenAttackingMoves = [ Moves.BELLY_DRUM, Moves.SUBSTITUTE, Moves.CURSE, Moves.PAIN_SPLIT ]; + const fordbiddenAttackingMoves = [ MoveId.BELLY_DRUM, MoveId.SUBSTITUTE, MoveId.CURSE, MoveId.PAIN_SPLIT ]; if (moveHistory.length > 0) { const lastMoveUsed = moveHistory[moveHistory.length - 1]; if (fordbiddenAttackingMoves.includes(lastMoveUsed.move)) { @@ -5740,17 +5740,17 @@ export class PostDamageForceSwitchAbAttr extends PostDamageAbAttr { } // Dragon Tail and Circle Throw switch out Pokémon before the Ability activates. - const fordbiddenDefendingMoves = [ Moves.DRAGON_TAIL, Moves.CIRCLE_THROW ]; + const fordbiddenDefendingMoves = [ MoveId.DRAGON_TAIL, MoveId.CIRCLE_THROW ]; if (source) { const enemyMoveHistory = source.getMoveHistory(); if (enemyMoveHistory.length > 0) { const enemyLastMoveUsed = enemyMoveHistory[enemyMoveHistory.length - 1]; // Will not activate if the Pokémon's HP falls below half while it is in the air during Sky Drop. - if (fordbiddenDefendingMoves.includes(enemyLastMoveUsed.move) || enemyLastMoveUsed.move === Moves.SKY_DROP && enemyLastMoveUsed.result === MoveResult.OTHER) { + if (fordbiddenDefendingMoves.includes(enemyLastMoveUsed.move) || enemyLastMoveUsed.move === MoveId.SKY_DROP && enemyLastMoveUsed.result === MoveResult.OTHER) { return false; // Will not activate if the Pokémon's HP falls below half by a move affected by Sheer Force. // TODO: Make this use the sheer force disable condition - } else if (allMoves[enemyLastMoveUsed.move].chance >= 0 && source.hasAbility(Abilities.SHEER_FORCE)) { + } else if (allMoves[enemyLastMoveUsed.move].chance >= 0 && source.hasAbility(AbilityId.SHEER_FORCE)) { return false; // Activate only after the last hit of multistrike moves } else if (source.turnData.hitsLeft > 1) { @@ -6423,237 +6423,237 @@ function setAbilityRevealed(pokemon: Pokemon): void { */ function getPokemonWithWeatherBasedForms() { return globalScene.getField(true).filter(p => - (p.hasAbility(Abilities.FORECAST) && p.species.speciesId === Species.CASTFORM) - || (p.hasAbility(Abilities.FLOWER_GIFT) && p.species.speciesId === Species.CHERRIM) + (p.hasAbility(AbilityId.FORECAST) && p.species.speciesId === SpeciesId.CASTFORM) + || (p.hasAbility(AbilityId.FLOWER_GIFT) && p.species.speciesId === SpeciesId.CHERRIM) ); } export function initAbilities() { allAbilities.push( - new Ability(Abilities.NONE, 3), - new Ability(Abilities.STENCH, 3) + new Ability(AbilityId.NONE, 3), + new Ability(AbilityId.STENCH, 3) .attr(PostAttackApplyBattlerTagAbAttr, false, (user, target, move) => !move.hasAttr(FlinchAttr) && !move.hitsSubstitute(user, target) ? 10 : 0, BattlerTagType.FLINCHED), - new Ability(Abilities.DRIZZLE, 3) + new Ability(AbilityId.DRIZZLE, 3) .attr(PostSummonWeatherChangeAbAttr, WeatherType.RAIN) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.RAIN), - new Ability(Abilities.SPEED_BOOST, 3) + new Ability(AbilityId.SPEED_BOOST, 3) .attr(SpeedBoostAbAttr), - new Ability(Abilities.BATTLE_ARMOR, 3) + new Ability(AbilityId.BATTLE_ARMOR, 3) .attr(BlockCritAbAttr) .ignorable(), - new Ability(Abilities.STURDY, 3) + new Ability(AbilityId.STURDY, 3) .attr(PreDefendFullHpEndureAbAttr) .attr(BlockOneHitKOAbAttr) .ignorable(), - new Ability(Abilities.DAMP, 3) + new Ability(AbilityId.DAMP, 3) .attr(FieldPreventExplosiveMovesAbAttr) .ignorable(), - new Ability(Abilities.LIMBER, 3) + new Ability(AbilityId.LIMBER, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.PARALYSIS) .attr(PostSummonHealStatusAbAttr, StatusEffect.PARALYSIS) .ignorable(), - new Ability(Abilities.SAND_VEIL, 3) + new Ability(AbilityId.SAND_VEIL, 3) .attr(StatMultiplierAbAttr, Stat.EVA, 1.2) .attr(BlockWeatherDamageAttr, WeatherType.SANDSTORM) .condition(getWeatherCondition(WeatherType.SANDSTORM)) .ignorable(), - new Ability(Abilities.STATIC, 3) + new Ability(AbilityId.STATIC, 3) .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.PARALYSIS) .bypassFaint(), - new Ability(Abilities.VOLT_ABSORB, 3) + new Ability(AbilityId.VOLT_ABSORB, 3) .attr(TypeImmunityHealAbAttr, PokemonType.ELECTRIC) .ignorable(), - new Ability(Abilities.WATER_ABSORB, 3) + new Ability(AbilityId.WATER_ABSORB, 3) .attr(TypeImmunityHealAbAttr, PokemonType.WATER) .ignorable(), - new Ability(Abilities.OBLIVIOUS, 3) + new Ability(AbilityId.OBLIVIOUS, 3) .attr(BattlerTagImmunityAbAttr, [ BattlerTagType.INFATUATED, BattlerTagType.TAUNT ]) .attr(PostSummonRemoveBattlerTagAbAttr, BattlerTagType.INFATUATED, BattlerTagType.TAUNT) .attr(IntimidateImmunityAbAttr) .ignorable(), - new Ability(Abilities.CLOUD_NINE, 3) + new Ability(AbilityId.CLOUD_NINE, 3) .attr(SuppressWeatherEffectAbAttr, true) .attr(PostSummonUnnamedMessageAbAttr, i18next.t("abilityTriggers:weatherEffectDisappeared")) .attr(PostSummonWeatherSuppressedFormChangeAbAttr) .attr(PostFaintUnsuppressedWeatherFormChangeAbAttr) .bypassFaint(), - new Ability(Abilities.COMPOUND_EYES, 3) + new Ability(AbilityId.COMPOUND_EYES, 3) .attr(StatMultiplierAbAttr, Stat.ACC, 1.3), - new Ability(Abilities.INSOMNIA, 3) + new Ability(AbilityId.INSOMNIA, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.SLEEP) .attr(PostSummonHealStatusAbAttr, StatusEffect.SLEEP) .attr(BattlerTagImmunityAbAttr, BattlerTagType.DROWSY) .ignorable(), - new Ability(Abilities.COLOR_CHANGE, 3) + new Ability(AbilityId.COLOR_CHANGE, 3) .attr(PostDefendTypeChangeAbAttr) .condition(getSheerForceHitDisableAbCondition()), - new Ability(Abilities.IMMUNITY, 3) + new Ability(AbilityId.IMMUNITY, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.POISON, StatusEffect.TOXIC) .attr(PostSummonHealStatusAbAttr, StatusEffect.POISON, StatusEffect.TOXIC) .ignorable(), - new Ability(Abilities.FLASH_FIRE, 3) + new Ability(AbilityId.FLASH_FIRE, 3) .attr(TypeImmunityAddBattlerTagAbAttr, PokemonType.FIRE, BattlerTagType.FIRE_BOOST, 1) .ignorable(), - new Ability(Abilities.SHIELD_DUST, 3) + new Ability(AbilityId.SHIELD_DUST, 3) .attr(IgnoreMoveEffectsAbAttr) .ignorable(), - new Ability(Abilities.OWN_TEMPO, 3) + new Ability(AbilityId.OWN_TEMPO, 3) .attr(BattlerTagImmunityAbAttr, BattlerTagType.CONFUSED) .attr(PostSummonRemoveBattlerTagAbAttr, BattlerTagType.CONFUSED) .attr(IntimidateImmunityAbAttr) .ignorable(), - new Ability(Abilities.SUCTION_CUPS, 3) + new Ability(AbilityId.SUCTION_CUPS, 3) .attr(ForceSwitchOutImmunityAbAttr) .ignorable(), - new Ability(Abilities.INTIMIDATE, 3) + new Ability(AbilityId.INTIMIDATE, 3) .attr(PostSummonStatStageChangeAbAttr, [ Stat.ATK ], -1, false, true), - new Ability(Abilities.SHADOW_TAG, 3) + new Ability(AbilityId.SHADOW_TAG, 3) .attr(ArenaTrapAbAttr, (user, target) => { - if (target.hasAbility(Abilities.SHADOW_TAG)) { + if (target.hasAbility(AbilityId.SHADOW_TAG)) { return false; } return true; }), - new Ability(Abilities.ROUGH_SKIN, 3) + new Ability(AbilityId.ROUGH_SKIN, 3) .attr(PostDefendContactDamageAbAttr, 8) .bypassFaint(), - new Ability(Abilities.WONDER_GUARD, 3) + new Ability(AbilityId.WONDER_GUARD, 3) .attr(NonSuperEffectiveImmunityAbAttr) .uncopiable() .ignorable(), - new Ability(Abilities.LEVITATE, 3) + new Ability(AbilityId.LEVITATE, 3) .attr(AttackTypeImmunityAbAttr, PokemonType.GROUND, (pokemon: Pokemon) => !pokemon.getTag(GroundedTag) && !globalScene.arena.getTag(ArenaTagType.GRAVITY)) .ignorable(), - new Ability(Abilities.EFFECT_SPORE, 3) + new Ability(AbilityId.EFFECT_SPORE, 3) .attr(EffectSporeAbAttr), - new Ability(Abilities.SYNCHRONIZE, 3) + new Ability(AbilityId.SYNCHRONIZE, 3) .attr(SyncEncounterNatureAbAttr) .attr(SynchronizeStatusAbAttr), - new Ability(Abilities.CLEAR_BODY, 3) + new Ability(AbilityId.CLEAR_BODY, 3) .attr(ProtectStatAbAttr) .ignorable(), - new Ability(Abilities.NATURAL_CURE, 3) + new Ability(AbilityId.NATURAL_CURE, 3) .attr(PreSwitchOutResetStatusAbAttr), - new Ability(Abilities.LIGHTNING_ROD, 3) + new Ability(AbilityId.LIGHTNING_ROD, 3) .attr(RedirectTypeMoveAbAttr, PokemonType.ELECTRIC) .attr(TypeImmunityStatStageChangeAbAttr, PokemonType.ELECTRIC, Stat.SPATK, 1) .ignorable(), - new Ability(Abilities.SERENE_GRACE, 3) + new Ability(AbilityId.SERENE_GRACE, 3) .attr(MoveEffectChanceMultiplierAbAttr, 2), - new Ability(Abilities.SWIFT_SWIM, 3) + new Ability(AbilityId.SWIFT_SWIM, 3) .attr(StatMultiplierAbAttr, Stat.SPD, 2) .condition(getWeatherCondition(WeatherType.RAIN, WeatherType.HEAVY_RAIN)), - new Ability(Abilities.CHLOROPHYLL, 3) + new Ability(AbilityId.CHLOROPHYLL, 3) .attr(StatMultiplierAbAttr, Stat.SPD, 2) .condition(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN)), - new Ability(Abilities.ILLUMINATE, 3) + new Ability(AbilityId.ILLUMINATE, 3) .attr(ProtectStatAbAttr, Stat.ACC) .attr(DoubleBattleChanceAbAttr) .attr(IgnoreOpponentStatStagesAbAttr, [ Stat.EVA ]) .ignorable(), - new Ability(Abilities.TRACE, 3) + new Ability(AbilityId.TRACE, 3) .attr(PostSummonCopyAbilityAbAttr) .uncopiable(), - new Ability(Abilities.HUGE_POWER, 3) + new Ability(AbilityId.HUGE_POWER, 3) .attr(StatMultiplierAbAttr, Stat.ATK, 2), - new Ability(Abilities.POISON_POINT, 3) + new Ability(AbilityId.POISON_POINT, 3) .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.POISON) .bypassFaint(), - new Ability(Abilities.INNER_FOCUS, 3) + new Ability(AbilityId.INNER_FOCUS, 3) .attr(BattlerTagImmunityAbAttr, BattlerTagType.FLINCHED) .attr(IntimidateImmunityAbAttr) .ignorable(), - new Ability(Abilities.MAGMA_ARMOR, 3) + new Ability(AbilityId.MAGMA_ARMOR, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.FREEZE) .attr(PostSummonHealStatusAbAttr, StatusEffect.FREEZE) .ignorable(), - new Ability(Abilities.WATER_VEIL, 3) + new Ability(AbilityId.WATER_VEIL, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.BURN) .attr(PostSummonHealStatusAbAttr, StatusEffect.BURN) .ignorable(), - new Ability(Abilities.MAGNET_PULL, 3) + new Ability(AbilityId.MAGNET_PULL, 3) .attr(ArenaTrapAbAttr, (user, target) => { if (target.getTypes(true).includes(PokemonType.STEEL) || (target.getTypes(true).includes(PokemonType.STELLAR) && target.getTypes().includes(PokemonType.STEEL))) { return true; } return false; }), - new Ability(Abilities.SOUNDPROOF, 3) + new Ability(AbilityId.SOUNDPROOF, 3) .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.hasFlag(MoveFlags.SOUND_BASED)) .ignorable(), - new Ability(Abilities.RAIN_DISH, 3) + new Ability(AbilityId.RAIN_DISH, 3) .attr(PostWeatherLapseHealAbAttr, 1, WeatherType.RAIN, WeatherType.HEAVY_RAIN), - new Ability(Abilities.SAND_STREAM, 3) + new Ability(AbilityId.SAND_STREAM, 3) .attr(PostSummonWeatherChangeAbAttr, WeatherType.SANDSTORM) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.SANDSTORM), - new Ability(Abilities.PRESSURE, 3) + new Ability(AbilityId.PRESSURE, 3) .attr(IncreasePpAbAttr) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonPressure", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })), - new Ability(Abilities.THICK_FAT, 3) + new Ability(AbilityId.THICK_FAT, 3) .attr(ReceivedTypeDamageMultiplierAbAttr, PokemonType.FIRE, 0.5) .attr(ReceivedTypeDamageMultiplierAbAttr, PokemonType.ICE, 0.5) .ignorable(), - new Ability(Abilities.EARLY_BIRD, 3) + new Ability(AbilityId.EARLY_BIRD, 3) .attr(ReduceStatusEffectDurationAbAttr, StatusEffect.SLEEP), - new Ability(Abilities.FLAME_BODY, 3) + new Ability(AbilityId.FLAME_BODY, 3) .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.BURN) .bypassFaint(), - new Ability(Abilities.RUN_AWAY, 3) + new Ability(AbilityId.RUN_AWAY, 3) .attr(RunSuccessAbAttr), - new Ability(Abilities.KEEN_EYE, 3) + new Ability(AbilityId.KEEN_EYE, 3) .attr(ProtectStatAbAttr, Stat.ACC) .ignorable(), - new Ability(Abilities.HYPER_CUTTER, 3) + new Ability(AbilityId.HYPER_CUTTER, 3) .attr(ProtectStatAbAttr, Stat.ATK) .ignorable(), - new Ability(Abilities.PICKUP, 3) + new Ability(AbilityId.PICKUP, 3) .attr(PostBattleLootAbAttr) .unsuppressable(), - new Ability(Abilities.TRUANT, 3) + new Ability(AbilityId.TRUANT, 3) .attr(PostSummonAddBattlerTagAbAttr, BattlerTagType.TRUANT, 1, false), - new Ability(Abilities.HUSTLE, 3) + new Ability(AbilityId.HUSTLE, 3) .attr(StatMultiplierAbAttr, Stat.ATK, 1.5) .attr(StatMultiplierAbAttr, Stat.ACC, 0.8, (_user, _target, move) => move.category === MoveCategory.PHYSICAL), - new Ability(Abilities.CUTE_CHARM, 3) + new Ability(AbilityId.CUTE_CHARM, 3) .attr(PostDefendContactApplyTagChanceAbAttr, 30, BattlerTagType.INFATUATED), - new Ability(Abilities.PLUS, 3) - .conditionalAttr(p => globalScene.currentBattle.double && [ Abilities.PLUS, Abilities.MINUS ].some(a => (p.getAlly()?.hasAbility(a) ?? false)), StatMultiplierAbAttr, Stat.SPATK, 1.5), - new Ability(Abilities.MINUS, 3) - .conditionalAttr(p => globalScene.currentBattle.double && [ Abilities.PLUS, Abilities.MINUS ].some(a => (p.getAlly()?.hasAbility(a) ?? false)), StatMultiplierAbAttr, Stat.SPATK, 1.5), - new Ability(Abilities.FORECAST, 3) + new Ability(AbilityId.PLUS, 3) + .conditionalAttr(p => globalScene.currentBattle.double && [ AbilityId.PLUS, AbilityId.MINUS ].some(a => (p.getAlly()?.hasAbility(a) ?? false)), StatMultiplierAbAttr, Stat.SPATK, 1.5), + new Ability(AbilityId.MINUS, 3) + .conditionalAttr(p => globalScene.currentBattle.double && [ AbilityId.PLUS, AbilityId.MINUS ].some(a => (p.getAlly()?.hasAbility(a) ?? false)), StatMultiplierAbAttr, Stat.SPATK, 1.5), + new Ability(AbilityId.FORECAST, 3) .uncopiable() .unreplaceable() .attr(NoFusionAbilityAbAttr) - .attr(PostSummonFormChangeByWeatherAbAttr, Abilities.FORECAST) - .attr(PostWeatherChangeFormChangeAbAttr, Abilities.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]), - new Ability(Abilities.STICKY_HOLD, 3) + .attr(PostSummonFormChangeByWeatherAbAttr, AbilityId.FORECAST) + .attr(PostWeatherChangeFormChangeAbAttr, AbilityId.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]), + new Ability(AbilityId.STICKY_HOLD, 3) .attr(BlockItemTheftAbAttr) .bypassFaint() .ignorable(), - new Ability(Abilities.SHED_SKIN, 3) + new Ability(AbilityId.SHED_SKIN, 3) .conditionalAttr(pokemon => !randSeedInt(3), PostTurnResetStatusAbAttr), - new Ability(Abilities.GUTS, 3) + new Ability(AbilityId.GUTS, 3) .attr(BypassBurnDamageReductionAbAttr) - .conditionalAttr(pokemon => !!pokemon.status || pokemon.hasAbility(Abilities.COMATOSE), StatMultiplierAbAttr, Stat.ATK, 1.5), - new Ability(Abilities.MARVEL_SCALE, 3) - .conditionalAttr(pokemon => !!pokemon.status || pokemon.hasAbility(Abilities.COMATOSE), StatMultiplierAbAttr, Stat.DEF, 1.5) + .conditionalAttr(pokemon => !!pokemon.status || pokemon.hasAbility(AbilityId.COMATOSE), StatMultiplierAbAttr, Stat.ATK, 1.5), + new Ability(AbilityId.MARVEL_SCALE, 3) + .conditionalAttr(pokemon => !!pokemon.status || pokemon.hasAbility(AbilityId.COMATOSE), StatMultiplierAbAttr, Stat.DEF, 1.5) .ignorable(), - new Ability(Abilities.LIQUID_OOZE, 3) + new Ability(AbilityId.LIQUID_OOZE, 3) .attr(ReverseDrainAbAttr), - new Ability(Abilities.OVERGROW, 3) + new Ability(AbilityId.OVERGROW, 3) .attr(LowHpMoveTypePowerBoostAbAttr, PokemonType.GRASS), - new Ability(Abilities.BLAZE, 3) + new Ability(AbilityId.BLAZE, 3) .attr(LowHpMoveTypePowerBoostAbAttr, PokemonType.FIRE), - new Ability(Abilities.TORRENT, 3) + new Ability(AbilityId.TORRENT, 3) .attr(LowHpMoveTypePowerBoostAbAttr, PokemonType.WATER), - new Ability(Abilities.SWARM, 3) + new Ability(AbilityId.SWARM, 3) .attr(LowHpMoveTypePowerBoostAbAttr, PokemonType.BUG), - new Ability(Abilities.ROCK_HEAD, 3) + new Ability(AbilityId.ROCK_HEAD, 3) .attr(BlockRecoilDamageAttr), - new Ability(Abilities.DROUGHT, 3) + new Ability(AbilityId.DROUGHT, 3) .attr(PostSummonWeatherChangeAbAttr, WeatherType.SUNNY) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.SUNNY), - new Ability(Abilities.ARENA_TRAP, 3) + new Ability(AbilityId.ARENA_TRAP, 3) .attr(ArenaTrapAbAttr, (user, target) => { if (target.isGrounded()) { return true; @@ -6661,246 +6661,246 @@ export function initAbilities() { return false; }) .attr(DoubleBattleChanceAbAttr), - new Ability(Abilities.VITAL_SPIRIT, 3) + new Ability(AbilityId.VITAL_SPIRIT, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.SLEEP) .attr(PostSummonHealStatusAbAttr, StatusEffect.SLEEP) .attr(BattlerTagImmunityAbAttr, BattlerTagType.DROWSY) .ignorable(), - new Ability(Abilities.WHITE_SMOKE, 3) + new Ability(AbilityId.WHITE_SMOKE, 3) .attr(ProtectStatAbAttr) .ignorable(), - new Ability(Abilities.PURE_POWER, 3) + new Ability(AbilityId.PURE_POWER, 3) .attr(StatMultiplierAbAttr, Stat.ATK, 2), - new Ability(Abilities.SHELL_ARMOR, 3) + new Ability(AbilityId.SHELL_ARMOR, 3) .attr(BlockCritAbAttr) .ignorable(), - new Ability(Abilities.AIR_LOCK, 3) + new Ability(AbilityId.AIR_LOCK, 3) .attr(SuppressWeatherEffectAbAttr, true) .attr(PostSummonUnnamedMessageAbAttr, i18next.t("abilityTriggers:weatherEffectDisappeared")) .attr(PostSummonWeatherSuppressedFormChangeAbAttr) .attr(PostFaintUnsuppressedWeatherFormChangeAbAttr) .bypassFaint(), - new Ability(Abilities.TANGLED_FEET, 4) + new Ability(AbilityId.TANGLED_FEET, 4) .conditionalAttr(pokemon => !!pokemon.getTag(BattlerTagType.CONFUSED), StatMultiplierAbAttr, Stat.EVA, 2) .ignorable(), - new Ability(Abilities.MOTOR_DRIVE, 4) + new Ability(AbilityId.MOTOR_DRIVE, 4) .attr(TypeImmunityStatStageChangeAbAttr, PokemonType.ELECTRIC, Stat.SPD, 1) .ignorable(), - new Ability(Abilities.RIVALRY, 4) + new Ability(AbilityId.RIVALRY, 4) .attr(MovePowerBoostAbAttr, (user, target, move) => user?.gender !== Gender.GENDERLESS && target?.gender !== Gender.GENDERLESS && user?.gender === target?.gender, 1.25, true) .attr(MovePowerBoostAbAttr, (user, target, move) => user?.gender !== Gender.GENDERLESS && target?.gender !== Gender.GENDERLESS && user?.gender !== target?.gender, 0.75), - new Ability(Abilities.STEADFAST, 4) + new Ability(AbilityId.STEADFAST, 4) .attr(FlinchStatStageChangeAbAttr, [ Stat.SPD ], 1), - new Ability(Abilities.SNOW_CLOAK, 4) + new Ability(AbilityId.SNOW_CLOAK, 4) .attr(StatMultiplierAbAttr, Stat.EVA, 1.2) .attr(BlockWeatherDamageAttr, WeatherType.HAIL) .condition(getWeatherCondition(WeatherType.HAIL, WeatherType.SNOW)) .ignorable(), - new Ability(Abilities.GLUTTONY, 4) + new Ability(AbilityId.GLUTTONY, 4) .attr(ReduceBerryUseThresholdAbAttr), - new Ability(Abilities.ANGER_POINT, 4) + new Ability(AbilityId.ANGER_POINT, 4) .attr(PostDefendCritStatStageChangeAbAttr, Stat.ATK, 6), - new Ability(Abilities.UNBURDEN, 4) + new Ability(AbilityId.UNBURDEN, 4) .attr(PostItemLostApplyBattlerTagAbAttr, BattlerTagType.UNBURDEN) .bypassFaint() // Allows reviver seed to activate Unburden .edgeCase(), // Should not restore Unburden boost if Pokemon loses then regains Unburden ability - new Ability(Abilities.HEATPROOF, 4) + new Ability(AbilityId.HEATPROOF, 4) .attr(ReceivedTypeDamageMultiplierAbAttr, PokemonType.FIRE, 0.5) .attr(ReduceBurnDamageAbAttr, 0.5) .ignorable(), - new Ability(Abilities.SIMPLE, 4) + new Ability(AbilityId.SIMPLE, 4) .attr(StatStageChangeMultiplierAbAttr, 2) .ignorable(), - new Ability(Abilities.DRY_SKIN, 4) + new Ability(AbilityId.DRY_SKIN, 4) .attr(PostWeatherLapseDamageAbAttr, 2, WeatherType.SUNNY, WeatherType.HARSH_SUN) .attr(PostWeatherLapseHealAbAttr, 2, WeatherType.RAIN, WeatherType.HEAVY_RAIN) .attr(ReceivedTypeDamageMultiplierAbAttr, PokemonType.FIRE, 1.25) .attr(TypeImmunityHealAbAttr, PokemonType.WATER) .ignorable(), - new Ability(Abilities.DOWNLOAD, 4) + new Ability(AbilityId.DOWNLOAD, 4) .attr(DownloadAbAttr), - new Ability(Abilities.IRON_FIST, 4) + new Ability(AbilityId.IRON_FIST, 4) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.PUNCHING_MOVE), 1.2), - new Ability(Abilities.POISON_HEAL, 4) + new Ability(AbilityId.POISON_HEAL, 4) .attr(PostTurnStatusHealAbAttr, StatusEffect.TOXIC, StatusEffect.POISON) .attr(BlockStatusDamageAbAttr, StatusEffect.TOXIC, StatusEffect.POISON), - new Ability(Abilities.ADAPTABILITY, 4) + new Ability(AbilityId.ADAPTABILITY, 4) .attr(StabBoostAbAttr), - new Ability(Abilities.SKILL_LINK, 4) + new Ability(AbilityId.SKILL_LINK, 4) .attr(MaxMultiHitAbAttr), - new Ability(Abilities.HYDRATION, 4) + new Ability(AbilityId.HYDRATION, 4) .attr(PostTurnResetStatusAbAttr) .condition(getWeatherCondition(WeatherType.RAIN, WeatherType.HEAVY_RAIN)), - new Ability(Abilities.SOLAR_POWER, 4) + new Ability(AbilityId.SOLAR_POWER, 4) .attr(PostWeatherLapseDamageAbAttr, 2, WeatherType.SUNNY, WeatherType.HARSH_SUN) .attr(StatMultiplierAbAttr, Stat.SPATK, 1.5) .condition(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN)), - new Ability(Abilities.QUICK_FEET, 4) + new Ability(AbilityId.QUICK_FEET, 4) .conditionalAttr(pokemon => pokemon.status ? pokemon.status.effect === StatusEffect.PARALYSIS : false, StatMultiplierAbAttr, Stat.SPD, 2) - .conditionalAttr(pokemon => !!pokemon.status || pokemon.hasAbility(Abilities.COMATOSE), StatMultiplierAbAttr, Stat.SPD, 1.5), - new Ability(Abilities.NORMALIZE, 4) + .conditionalAttr(pokemon => !!pokemon.status || pokemon.hasAbility(AbilityId.COMATOSE), StatMultiplierAbAttr, Stat.SPD, 1.5), + new Ability(AbilityId.NORMALIZE, 4) .attr(MoveTypeChangeAbAttr, PokemonType.NORMAL, 1.2), - new Ability(Abilities.SNIPER, 4) + new Ability(AbilityId.SNIPER, 4) .attr(MultCritAbAttr, 1.5), - new Ability(Abilities.MAGIC_GUARD, 4) + new Ability(AbilityId.MAGIC_GUARD, 4) .attr(BlockNonDirectDamageAbAttr), - new Ability(Abilities.NO_GUARD, 4) + new Ability(AbilityId.NO_GUARD, 4) .attr(AlwaysHitAbAttr) .attr(DoubleBattleChanceAbAttr), - new Ability(Abilities.STALL, 4) + new Ability(AbilityId.STALL, 4) .attr(ChangeMovePriorityAbAttr, (pokemon, move: Move) => true, -0.2), - new Ability(Abilities.TECHNICIAN, 4) + new Ability(AbilityId.TECHNICIAN, 4) .attr(MovePowerBoostAbAttr, (user, target, move) => { const power = new NumberHolder(move.power); applyMoveAttrs(VariablePowerAttr, user, target, move, power); return power.value <= 60; }, 1.5), - new Ability(Abilities.LEAF_GUARD, 4) + new Ability(AbilityId.LEAF_GUARD, 4) .attr(StatusEffectImmunityAbAttr) .condition(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN)) .ignorable(), - new Ability(Abilities.KLUTZ, 4) + new Ability(AbilityId.KLUTZ, 4) .unimplemented(), - new Ability(Abilities.MOLD_BREAKER, 4) + new Ability(AbilityId.MOLD_BREAKER, 4) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonMoldBreaker", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })) .attr(MoveAbilityBypassAbAttr), - new Ability(Abilities.SUPER_LUCK, 4) + new Ability(AbilityId.SUPER_LUCK, 4) .attr(BonusCritAbAttr), - new Ability(Abilities.AFTERMATH, 4) + new Ability(AbilityId.AFTERMATH, 4) .attr(PostFaintContactDamageAbAttr, 4) .bypassFaint(), - new Ability(Abilities.ANTICIPATION, 4) + new Ability(AbilityId.ANTICIPATION, 4) .conditionalAttr(getAnticipationCondition(), PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonAnticipation", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })), - new Ability(Abilities.FOREWARN, 4) + new Ability(AbilityId.FOREWARN, 4) .attr(ForewarnAbAttr), - new Ability(Abilities.UNAWARE, 4) + new Ability(AbilityId.UNAWARE, 4) .attr(IgnoreOpponentStatStagesAbAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.ACC, Stat.EVA ]) .ignorable(), - new Ability(Abilities.TINTED_LENS, 4) + new Ability(AbilityId.TINTED_LENS, 4) .attr(DamageBoostAbAttr, 2, (user, target, move) => (target?.getMoveEffectiveness(user!, move) ?? 1) <= 0.5), - new Ability(Abilities.FILTER, 4) + new Ability(AbilityId.FILTER, 4) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => target.getMoveEffectiveness(user, move) >= 2, 0.75) .ignorable(), - new Ability(Abilities.SLOW_START, 4) + new Ability(AbilityId.SLOW_START, 4) .attr(PostSummonAddBattlerTagAbAttr, BattlerTagType.SLOW_START, 5), - new Ability(Abilities.SCRAPPY, 4) + new Ability(AbilityId.SCRAPPY, 4) .attr(IgnoreTypeImmunityAbAttr, PokemonType.GHOST, [ PokemonType.NORMAL, PokemonType.FIGHTING ]) .attr(IntimidateImmunityAbAttr), - new Ability(Abilities.STORM_DRAIN, 4) + new Ability(AbilityId.STORM_DRAIN, 4) .attr(RedirectTypeMoveAbAttr, PokemonType.WATER) .attr(TypeImmunityStatStageChangeAbAttr, PokemonType.WATER, Stat.SPATK, 1) .ignorable(), - new Ability(Abilities.ICE_BODY, 4) + new Ability(AbilityId.ICE_BODY, 4) .attr(BlockWeatherDamageAttr, WeatherType.HAIL) .attr(PostWeatherLapseHealAbAttr, 1, WeatherType.HAIL, WeatherType.SNOW), - new Ability(Abilities.SOLID_ROCK, 4) + new Ability(AbilityId.SOLID_ROCK, 4) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => target.getMoveEffectiveness(user, move) >= 2, 0.75) .ignorable(), - new Ability(Abilities.SNOW_WARNING, 4) + new Ability(AbilityId.SNOW_WARNING, 4) .attr(PostSummonWeatherChangeAbAttr, WeatherType.SNOW) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.SNOW), - new Ability(Abilities.HONEY_GATHER, 4) + new Ability(AbilityId.HONEY_GATHER, 4) .attr(MoneyAbAttr) .unsuppressable(), - new Ability(Abilities.FRISK, 4) + new Ability(AbilityId.FRISK, 4) .attr(FriskAbAttr), - new Ability(Abilities.RECKLESS, 4) + new Ability(AbilityId.RECKLESS, 4) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.RECKLESS_MOVE), 1.2), - new Ability(Abilities.MULTITYPE, 4) + new Ability(AbilityId.MULTITYPE, 4) .attr(NoFusionAbilityAbAttr) .uncopiable() .unsuppressable() .unreplaceable(), - new Ability(Abilities.FLOWER_GIFT, 4) + new Ability(AbilityId.FLOWER_GIFT, 4) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY || WeatherType.HARSH_SUN), StatMultiplierAbAttr, Stat.ATK, 1.5) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY || WeatherType.HARSH_SUN), StatMultiplierAbAttr, Stat.SPDEF, 1.5) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY || WeatherType.HARSH_SUN), AllyStatMultiplierAbAttr, Stat.ATK, 1.5) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY || WeatherType.HARSH_SUN), AllyStatMultiplierAbAttr, Stat.SPDEF, 1.5) .attr(NoFusionAbilityAbAttr) - .attr(PostSummonFormChangeByWeatherAbAttr, Abilities.FLOWER_GIFT) - .attr(PostWeatherChangeFormChangeAbAttr, Abilities.FLOWER_GIFT, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG, WeatherType.HAIL, WeatherType.HEAVY_RAIN, WeatherType.SNOW, WeatherType.RAIN ]) + .attr(PostSummonFormChangeByWeatherAbAttr, AbilityId.FLOWER_GIFT) + .attr(PostWeatherChangeFormChangeAbAttr, AbilityId.FLOWER_GIFT, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG, WeatherType.HAIL, WeatherType.HEAVY_RAIN, WeatherType.SNOW, WeatherType.RAIN ]) .uncopiable() .unreplaceable() .ignorable(), - new Ability(Abilities.BAD_DREAMS, 4) + new Ability(AbilityId.BAD_DREAMS, 4) .attr(PostTurnHurtIfSleepingAbAttr), - new Ability(Abilities.PICKPOCKET, 5) + new Ability(AbilityId.PICKPOCKET, 5) .attr(PostDefendStealHeldItemAbAttr, (target, user, move) => move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user, target})) .condition(getSheerForceHitDisableAbCondition()), - new Ability(Abilities.SHEER_FORCE, 5) + new Ability(AbilityId.SHEER_FORCE, 5) .attr(MovePowerBoostAbAttr, (user, target, move) => move.chance >= 1, 1.3) .attr(MoveEffectChanceMultiplierAbAttr, 0), // This attribute does not seem to function - Should disable life orb, eject button, red card, kee/maranga berry if they get implemented - new Ability(Abilities.CONTRARY, 5) + new Ability(AbilityId.CONTRARY, 5) .attr(StatStageChangeMultiplierAbAttr, -1) .ignorable(), - new Ability(Abilities.UNNERVE, 5) + new Ability(AbilityId.UNNERVE, 5) .attr(PreventBerryUseAbAttr), - new Ability(Abilities.DEFIANT, 5) + new Ability(AbilityId.DEFIANT, 5) .attr(PostStatStageChangeStatStageChangeAbAttr, (target, statsChanged, stages) => stages < 0, [ Stat.ATK ], 2), - new Ability(Abilities.DEFEATIST, 5) + new Ability(AbilityId.DEFEATIST, 5) .attr(StatMultiplierAbAttr, Stat.ATK, 0.5) .attr(StatMultiplierAbAttr, Stat.SPATK, 0.5) .condition((pokemon) => pokemon.getHpRatio() <= 0.5), - new Ability(Abilities.CURSED_BODY, 5) + new Ability(AbilityId.CURSED_BODY, 5) .attr(PostDefendMoveDisableAbAttr, 30) .bypassFaint(), - new Ability(Abilities.HEALER, 5) + new Ability(AbilityId.HEALER, 5) .conditionalAttr(pokemon => !isNullOrUndefined(pokemon.getAlly()) && randSeedInt(10) < 3, PostTurnResetStatusAbAttr, true), - new Ability(Abilities.FRIEND_GUARD, 5) + new Ability(AbilityId.FRIEND_GUARD, 5) .attr(AlliedFieldDamageReductionAbAttr, 0.75) .ignorable(), - new Ability(Abilities.WEAK_ARMOR, 5) + new Ability(AbilityId.WEAK_ARMOR, 5) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.category === MoveCategory.PHYSICAL, Stat.DEF, -1) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.category === MoveCategory.PHYSICAL, Stat.SPD, 2), - new Ability(Abilities.HEAVY_METAL, 5) + new Ability(AbilityId.HEAVY_METAL, 5) .attr(WeightMultiplierAbAttr, 2) .ignorable(), - new Ability(Abilities.LIGHT_METAL, 5) + new Ability(AbilityId.LIGHT_METAL, 5) .attr(WeightMultiplierAbAttr, 0.5) .ignorable(), - new Ability(Abilities.MULTISCALE, 5) + new Ability(AbilityId.MULTISCALE, 5) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => target.isFullHp(), 0.5) .ignorable(), - new Ability(Abilities.TOXIC_BOOST, 5) + new Ability(AbilityId.TOXIC_BOOST, 5) .attr(MovePowerBoostAbAttr, (user, target, move) => move.category === MoveCategory.PHYSICAL && (user?.status?.effect === StatusEffect.POISON || user?.status?.effect === StatusEffect.TOXIC), 1.5), - new Ability(Abilities.FLARE_BOOST, 5) + new Ability(AbilityId.FLARE_BOOST, 5) .attr(MovePowerBoostAbAttr, (user, target, move) => move.category === MoveCategory.SPECIAL && user?.status?.effect === StatusEffect.BURN, 1.5), - new Ability(Abilities.HARVEST, 5) + new Ability(AbilityId.HARVEST, 5) .attr( PostTurnRestoreBerryAbAttr, /** Rate is doubled when under sun {@link https://dex.pokemonshowdown.com/abilities/harvest} */ (pokemon) => 0.5 * (getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN)(pokemon) ? 2 : 1) ) .edgeCase(), // Cannot recover berries used up by fling or natural gift (unimplemented) - new Ability(Abilities.TELEPATHY, 5) + new Ability(AbilityId.TELEPATHY, 5) .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon.getAlly() === attacker && move instanceof AttackMove) .ignorable(), - new Ability(Abilities.MOODY, 5) + new Ability(AbilityId.MOODY, 5) .attr(MoodyAbAttr), - new Ability(Abilities.OVERCOAT, 5) + new Ability(AbilityId.OVERCOAT, 5) .attr(BlockWeatherDamageAttr) .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.hasFlag(MoveFlags.POWDER_MOVE)) .ignorable(), - new Ability(Abilities.POISON_TOUCH, 5) + new Ability(AbilityId.POISON_TOUCH, 5) .attr(PostAttackContactApplyStatusEffectAbAttr, 30, StatusEffect.POISON), - new Ability(Abilities.REGENERATOR, 5) + new Ability(AbilityId.REGENERATOR, 5) .attr(PreSwitchOutHealAbAttr), - new Ability(Abilities.BIG_PECKS, 5) + new Ability(AbilityId.BIG_PECKS, 5) .attr(ProtectStatAbAttr, Stat.DEF) .ignorable(), - new Ability(Abilities.SAND_RUSH, 5) + new Ability(AbilityId.SAND_RUSH, 5) .attr(StatMultiplierAbAttr, Stat.SPD, 2) .attr(BlockWeatherDamageAttr, WeatherType.SANDSTORM) .condition(getWeatherCondition(WeatherType.SANDSTORM)), - new Ability(Abilities.WONDER_SKIN, 5) + new Ability(AbilityId.WONDER_SKIN, 5) .attr(WonderSkinAbAttr) .ignorable(), - new Ability(Abilities.ANALYTIC, 5) + new Ability(AbilityId.ANALYTIC, 5) .attr(MovePowerBoostAbAttr, (user, target, move) => { const movePhase = globalScene.findPhase((phase) => phase instanceof MovePhase && phase.pokemon.id !== user?.id); return isNullOrUndefined(movePhase); }, 1.3), - new Ability(Abilities.ILLUSION, 5) + new Ability(AbilityId.ILLUSION, 5) // The Pokemon generate an illusion if it's available .attr(IllusionPreSummonAbAttr, false) .attr(IllusionBreakAbAttr) @@ -6912,47 +6912,47 @@ export function initAbilities() { .conditionalAttr((pokemon) => pokemon.isAllowedInBattle(), IllusionPostBattleAbAttr, false) .uncopiable() .bypassFaint(), - new Ability(Abilities.IMPOSTER, 5) + new Ability(AbilityId.IMPOSTER, 5) .attr(PostSummonTransformAbAttr) .uncopiable(), - new Ability(Abilities.INFILTRATOR, 5) + new Ability(AbilityId.INFILTRATOR, 5) .attr(InfiltratorAbAttr) .partial(), // does not bypass Mist - new Ability(Abilities.MUMMY, 5) - .attr(PostDefendAbilityGiveAbAttr, Abilities.MUMMY) + new Ability(AbilityId.MUMMY, 5) + .attr(PostDefendAbilityGiveAbAttr, AbilityId.MUMMY) .bypassFaint(), - new Ability(Abilities.MOXIE, 5) + new Ability(AbilityId.MOXIE, 5) .attr(PostVictoryStatStageChangeAbAttr, Stat.ATK, 1), - new Ability(Abilities.JUSTIFIED, 5) + new Ability(AbilityId.JUSTIFIED, 5) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === PokemonType.DARK && move.category !== MoveCategory.STATUS, Stat.ATK, 1), - new Ability(Abilities.RATTLED, 5) + new Ability(AbilityId.RATTLED, 5) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => { const moveType = user.getMoveType(move); return move.category !== MoveCategory.STATUS && (moveType === PokemonType.DARK || moveType === PokemonType.BUG || moveType === PokemonType.GHOST); }, Stat.SPD, 1) .attr(PostIntimidateStatStageChangeAbAttr, [ Stat.SPD ], 1), - new Ability(Abilities.MAGIC_BOUNCE, 5) + new Ability(AbilityId.MAGIC_BOUNCE, 5) .attr(ReflectStatusMoveAbAttr) .ignorable() // Interactions with stomping tantrum, instruct, encore, and probably other moves that // rely on move history .edgeCase(), - new Ability(Abilities.SAP_SIPPER, 5) + new Ability(AbilityId.SAP_SIPPER, 5) .attr(TypeImmunityStatStageChangeAbAttr, PokemonType.GRASS, Stat.ATK, 1) .ignorable(), - new Ability(Abilities.PRANKSTER, 5) + new Ability(AbilityId.PRANKSTER, 5) .attr(ChangeMovePriorityAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS, 1), - new Ability(Abilities.SAND_FORCE, 5) + new Ability(AbilityId.SAND_FORCE, 5) .attr(MoveTypePowerBoostAbAttr, PokemonType.ROCK, 1.3) .attr(MoveTypePowerBoostAbAttr, PokemonType.GROUND, 1.3) .attr(MoveTypePowerBoostAbAttr, PokemonType.STEEL, 1.3) .attr(BlockWeatherDamageAttr, WeatherType.SANDSTORM) .condition(getWeatherCondition(WeatherType.SANDSTORM)), - new Ability(Abilities.IRON_BARBS, 5) + new Ability(AbilityId.IRON_BARBS, 5) .attr(PostDefendContactDamageAbAttr, 8) .bypassFaint(), - new Ability(Abilities.ZEN_MODE, 5) + new Ability(AbilityId.ZEN_MODE, 5) .attr(PostBattleInitFormChangeAbAttr, () => 0) .attr(PostSummonFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 1 : 0) .attr(PostTurnFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 1 : 0) @@ -6961,19 +6961,19 @@ export function initAbilities() { .unreplaceable() .unsuppressable() .bypassFaint(), - new Ability(Abilities.VICTORY_STAR, 5) + new Ability(AbilityId.VICTORY_STAR, 5) .attr(StatMultiplierAbAttr, Stat.ACC, 1.1) .attr(AllyStatMultiplierAbAttr, Stat.ACC, 1.1, false), - new Ability(Abilities.TURBOBLAZE, 5) + new Ability(AbilityId.TURBOBLAZE, 5) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonTurboblaze", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })) .attr(MoveAbilityBypassAbAttr), - new Ability(Abilities.TERAVOLT, 5) + new Ability(AbilityId.TERAVOLT, 5) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonTeravolt", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })) .attr(MoveAbilityBypassAbAttr), - new Ability(Abilities.AROMA_VEIL, 6) + new Ability(AbilityId.AROMA_VEIL, 6) .attr(UserFieldBattlerTagImmunityAbAttr, [ BattlerTagType.INFATUATED, BattlerTagType.TAUNT, BattlerTagType.DISABLED, BattlerTagType.TORMENT, BattlerTagType.HEAL_BLOCK ]) .ignorable(), - new Ability(Abilities.FLOWER_VEIL, 6) + new Ability(AbilityId.FLOWER_VEIL, 6) .attr(ConditionalUserFieldStatusEffectImmunityAbAttr, (target: Pokemon, source: Pokemon | null) => { return source ? target.getTypes().includes(PokemonType.GRASS) && target.id !== source.id : false; }) @@ -6987,95 +6987,95 @@ export function initAbilities() { return target.getTypes().includes(PokemonType.GRASS); }) .ignorable(), - new Ability(Abilities.CHEEK_POUCH, 6) + new Ability(AbilityId.CHEEK_POUCH, 6) .attr(HealFromBerryUseAbAttr, 1 / 3), - new Ability(Abilities.PROTEAN, 6) + new Ability(AbilityId.PROTEAN, 6) .attr(PokemonTypeChangeAbAttr), - //.condition((p) => !p.summonData.abilitiesApplied.includes(Abilities.PROTEAN)), //Gen 9 Implementation - new Ability(Abilities.FUR_COAT, 6) + //.condition((p) => !p.summonData.abilitiesApplied.includes(AbilityId.PROTEAN)), //Gen 9 Implementation + new Ability(AbilityId.FUR_COAT, 6) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.category === MoveCategory.PHYSICAL, 0.5) .ignorable(), - new Ability(Abilities.MAGICIAN, 6) + new Ability(AbilityId.MAGICIAN, 6) .attr(PostAttackStealHeldItemAbAttr), - new Ability(Abilities.BULLETPROOF, 6) + new Ability(AbilityId.BULLETPROOF, 6) .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.hasFlag(MoveFlags.BALLBOMB_MOVE)) .ignorable(), - new Ability(Abilities.COMPETITIVE, 6) + new Ability(AbilityId.COMPETITIVE, 6) .attr(PostStatStageChangeStatStageChangeAbAttr, (target, statsChanged, stages) => stages < 0, [ Stat.SPATK ], 2), - new Ability(Abilities.STRONG_JAW, 6) + new Ability(AbilityId.STRONG_JAW, 6) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.BITING_MOVE), 1.5), - new Ability(Abilities.REFRIGERATE, 6) + new Ability(AbilityId.REFRIGERATE, 6) .attr(MoveTypeChangeAbAttr, PokemonType.ICE, 1.2, (user, target, move) => move.type === PokemonType.NORMAL), - new Ability(Abilities.SWEET_VEIL, 6) + new Ability(AbilityId.SWEET_VEIL, 6) .attr(UserFieldStatusEffectImmunityAbAttr, StatusEffect.SLEEP) .attr(PostSummonUserFieldRemoveStatusEffectAbAttr, StatusEffect.SLEEP) .attr(UserFieldBattlerTagImmunityAbAttr, BattlerTagType.DROWSY) .ignorable() .partial(), // Mold Breaker ally should not be affected by Sweet Veil - new Ability(Abilities.STANCE_CHANGE, 6) + new Ability(AbilityId.STANCE_CHANGE, 6) .attr(NoFusionAbilityAbAttr) .uncopiable() .unreplaceable() .unsuppressable(), - new Ability(Abilities.GALE_WINGS, 6) + new Ability(AbilityId.GALE_WINGS, 6) .attr(ChangeMovePriorityAbAttr, (pokemon, move) => pokemon.isFullHp() && pokemon.getMoveType(move) === PokemonType.FLYING, 1), - new Ability(Abilities.MEGA_LAUNCHER, 6) + new Ability(AbilityId.MEGA_LAUNCHER, 6) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.PULSE_MOVE), 1.5), - new Ability(Abilities.GRASS_PELT, 6) + new Ability(AbilityId.GRASS_PELT, 6) .conditionalAttr(getTerrainCondition(TerrainType.GRASSY), StatMultiplierAbAttr, Stat.DEF, 1.5) .ignorable(), - new Ability(Abilities.SYMBIOSIS, 6) + new Ability(AbilityId.SYMBIOSIS, 6) .unimplemented(), - new Ability(Abilities.TOUGH_CLAWS, 6) + new Ability(AbilityId.TOUGH_CLAWS, 6) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.MAKES_CONTACT), 1.3), - new Ability(Abilities.PIXILATE, 6) + new Ability(AbilityId.PIXILATE, 6) .attr(MoveTypeChangeAbAttr, PokemonType.FAIRY, 1.2, (user, target, move) => move.type === PokemonType.NORMAL), - new Ability(Abilities.GOOEY, 6) + new Ability(AbilityId.GOOEY, 6) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.hasFlag(MoveFlags.MAKES_CONTACT), Stat.SPD, -1, false), - new Ability(Abilities.AERILATE, 6) + new Ability(AbilityId.AERILATE, 6) .attr(MoveTypeChangeAbAttr, PokemonType.FLYING, 1.2, (user, target, move) => move.type === PokemonType.NORMAL), - new Ability(Abilities.PARENTAL_BOND, 6) + new Ability(AbilityId.PARENTAL_BOND, 6) .attr(AddSecondStrikeAbAttr, 0.25), - new Ability(Abilities.DARK_AURA, 6) + new Ability(AbilityId.DARK_AURA, 6) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonDarkAura", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })) .attr(FieldMoveTypePowerBoostAbAttr, PokemonType.DARK, 4 / 3), - new Ability(Abilities.FAIRY_AURA, 6) + new Ability(AbilityId.FAIRY_AURA, 6) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonFairyAura", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })) .attr(FieldMoveTypePowerBoostAbAttr, PokemonType.FAIRY, 4 / 3), - new Ability(Abilities.AURA_BREAK, 6) + new Ability(AbilityId.AURA_BREAK, 6) .ignorable() - .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(Abilities.DARK_AURA)), FieldMoveTypePowerBoostAbAttr, PokemonType.DARK, 9 / 16) - .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(Abilities.FAIRY_AURA)), FieldMoveTypePowerBoostAbAttr, PokemonType.FAIRY, 9 / 16) - .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(Abilities.DARK_AURA) || p.hasAbility(Abilities.FAIRY_AURA)), + .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(AbilityId.DARK_AURA)), FieldMoveTypePowerBoostAbAttr, PokemonType.DARK, 9 / 16) + .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(AbilityId.FAIRY_AURA)), FieldMoveTypePowerBoostAbAttr, PokemonType.FAIRY, 9 / 16) + .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(AbilityId.DARK_AURA) || p.hasAbility(AbilityId.FAIRY_AURA)), PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonAuraBreak", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })), - new Ability(Abilities.PRIMORDIAL_SEA, 6) + new Ability(AbilityId.PRIMORDIAL_SEA, 6) .attr(PostSummonWeatherChangeAbAttr, WeatherType.HEAVY_RAIN) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.HEAVY_RAIN) .attr(PreLeaveFieldClearWeatherAbAttr) .bypassFaint(), - new Ability(Abilities.DESOLATE_LAND, 6) + new Ability(AbilityId.DESOLATE_LAND, 6) .attr(PostSummonWeatherChangeAbAttr, WeatherType.HARSH_SUN) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.HARSH_SUN) .attr(PreLeaveFieldClearWeatherAbAttr) .bypassFaint(), - new Ability(Abilities.DELTA_STREAM, 6) + new Ability(AbilityId.DELTA_STREAM, 6) .attr(PostSummonWeatherChangeAbAttr, WeatherType.STRONG_WINDS) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.STRONG_WINDS) .attr(PreLeaveFieldClearWeatherAbAttr) .bypassFaint(), - new Ability(Abilities.STAMINA, 7) + new Ability(AbilityId.STAMINA, 7) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, Stat.DEF, 1), - new Ability(Abilities.WIMP_OUT, 7) + new Ability(AbilityId.WIMP_OUT, 7) .attr(PostDamageForceSwitchAbAttr) .edgeCase(), // Should not trigger when hurting itself in confusion, causes Fake Out to fail turn 1 and succeed turn 2 if pokemon is switched out before battle start via playing in Switch Mode - new Ability(Abilities.EMERGENCY_EXIT, 7) + new Ability(AbilityId.EMERGENCY_EXIT, 7) .attr(PostDamageForceSwitchAbAttr) .edgeCase(), // Should not trigger when hurting itself in confusion, causes Fake Out to fail turn 1 and succeed turn 2 if pokemon is switched out before battle start via playing in Switch Mode - new Ability(Abilities.WATER_COMPACTION, 7) + new Ability(AbilityId.WATER_COMPACTION, 7) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === PokemonType.WATER && move.category !== MoveCategory.STATUS, Stat.DEF, 2), - new Ability(Abilities.MERCILESS, 7) + new Ability(AbilityId.MERCILESS, 7) .attr(ConditionalCritAbAttr, (user, target, move) => target?.status?.effect === StatusEffect.TOXIC || target?.status?.effect === StatusEffect.POISON), - new Ability(Abilities.SHIELDS_DOWN, 7) + new Ability(AbilityId.SHIELDS_DOWN, 7) .attr(PostBattleInitFormChangeAbAttr, () => 0) .attr(PostSummonFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0)) .attr(PostTurnFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0)) @@ -7087,33 +7087,33 @@ export function initAbilities() { .unreplaceable() .unsuppressable() .bypassFaint(), - new Ability(Abilities.STAKEOUT, 7) + new Ability(AbilityId.STAKEOUT, 7) .attr(MovePowerBoostAbAttr, (user, target, move) => !!target?.turnData.switchedInThisTurn, 2), - new Ability(Abilities.WATER_BUBBLE, 7) + new Ability(AbilityId.WATER_BUBBLE, 7) .attr(ReceivedTypeDamageMultiplierAbAttr, PokemonType.FIRE, 0.5) .attr(MoveTypePowerBoostAbAttr, PokemonType.WATER, 2) .attr(StatusEffectImmunityAbAttr, StatusEffect.BURN) .attr(PostSummonHealStatusAbAttr, StatusEffect.BURN) .ignorable(), - new Ability(Abilities.STEELWORKER, 7) + new Ability(AbilityId.STEELWORKER, 7) .attr(MoveTypePowerBoostAbAttr, PokemonType.STEEL), - new Ability(Abilities.BERSERK, 7) + new Ability(AbilityId.BERSERK, 7) .attr(PostDefendHpGatedStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, 0.5, [ Stat.SPATK ], 1) .condition(getSheerForceHitDisableAbCondition()), - new Ability(Abilities.SLUSH_RUSH, 7) + new Ability(AbilityId.SLUSH_RUSH, 7) .attr(StatMultiplierAbAttr, Stat.SPD, 2) .condition(getWeatherCondition(WeatherType.HAIL, WeatherType.SNOW)), - new Ability(Abilities.LONG_REACH, 7) + new Ability(AbilityId.LONG_REACH, 7) .attr(IgnoreContactAbAttr), - new Ability(Abilities.LIQUID_VOICE, 7) + new Ability(AbilityId.LIQUID_VOICE, 7) .attr(MoveTypeChangeAbAttr, PokemonType.WATER, 1, (user, target, move) => move.hasFlag(MoveFlags.SOUND_BASED)), - new Ability(Abilities.TRIAGE, 7) + new Ability(AbilityId.TRIAGE, 7) .attr(ChangeMovePriorityAbAttr, (pokemon, move) => move.hasFlag(MoveFlags.TRIAGE_MOVE), 3), - new Ability(Abilities.GALVANIZE, 7) + new Ability(AbilityId.GALVANIZE, 7) .attr(MoveTypeChangeAbAttr, PokemonType.ELECTRIC, 1.2, (_user, _target, move) => move.type === PokemonType.NORMAL), - new Ability(Abilities.SURGE_SURFER, 7) + new Ability(AbilityId.SURGE_SURFER, 7) .conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), StatMultiplierAbAttr, Stat.SPD, 2), - new Ability(Abilities.SCHOOLING, 7) + new Ability(AbilityId.SCHOOLING, 7) .attr(PostBattleInitFormChangeAbAttr, () => 0) .attr(PostSummonFormChangeAbAttr, p => p.level < 20 || p.getHpRatio() <= 0.25 ? 0 : 1) .attr(PostTurnFormChangeAbAttr, p => p.level < 20 || p.getHpRatio() <= 0.25 ? 0 : 1) @@ -7122,7 +7122,7 @@ export function initAbilities() { .unreplaceable() .unsuppressable() .bypassFaint(), - new Ability(Abilities.DISGUISE, 7) + new Ability(AbilityId.DISGUISE, 7) .attr(NoTransformAbilityAbAttr) .attr(NoFusionAbilityAbAttr) // Add BattlerTagType.DISGUISE if the pokemon is in its disguised form @@ -7137,7 +7137,7 @@ export function initAbilities() { .unsuppressable() .bypassFaint() .ignorable(), - new Ability(Abilities.BATTLE_BOND, 7) + new Ability(AbilityId.BATTLE_BOND, 7) .attr(PostVictoryFormChangeAbAttr, () => 2) .attr(PostBattleInitFormChangeAbAttr, () => 1) .attr(NoFusionAbilityAbAttr) @@ -7145,7 +7145,7 @@ export function initAbilities() { .unreplaceable() .unsuppressable() .bypassFaint(), - new Ability(Abilities.POWER_CONSTRUCT, 7) + new Ability(AbilityId.POWER_CONSTRUCT, 7) .conditionalAttr(pokemon => pokemon.formIndex === 2 || pokemon.formIndex === 4, PostBattleInitFormChangeAbAttr, () => 2) .conditionalAttr(pokemon => pokemon.formIndex === 3 || pokemon.formIndex === 5, PostBattleInitFormChangeAbAttr, () => 3) .conditionalAttr(pokemon => pokemon.formIndex === 2 || pokemon.formIndex === 4, PostSummonFormChangeAbAttr, p => p.getHpRatio() <= 0.5 || p.getFormKey() === "complete" ? 4 : 2) @@ -7157,43 +7157,43 @@ export function initAbilities() { .unreplaceable() .unsuppressable() .bypassFaint(), - new Ability(Abilities.CORROSION, 7) + new Ability(AbilityId.CORROSION, 7) .attr(IgnoreTypeStatusEffectImmunityAbAttr, [ StatusEffect.POISON, StatusEffect.TOXIC ], [ PokemonType.STEEL, PokemonType.POISON ]) .edgeCase(), // Should poison itself with toxic orb. - new Ability(Abilities.COMATOSE, 7) + new Ability(AbilityId.COMATOSE, 7) .attr(StatusEffectImmunityAbAttr, ...getNonVolatileStatusEffects()) .attr(BattlerTagImmunityAbAttr, BattlerTagType.DROWSY) .uncopiable() .unreplaceable() .unsuppressable(), - new Ability(Abilities.QUEENLY_MAJESTY, 7) + new Ability(AbilityId.QUEENLY_MAJESTY, 7) .attr(FieldPriorityMoveImmunityAbAttr) .ignorable(), - new Ability(Abilities.INNARDS_OUT, 7) + new Ability(AbilityId.INNARDS_OUT, 7) .attr(PostFaintHPDamageAbAttr) .bypassFaint(), - new Ability(Abilities.DANCER, 7) + new Ability(AbilityId.DANCER, 7) .attr(PostDancingMoveAbAttr), - new Ability(Abilities.BATTERY, 7) + new Ability(AbilityId.BATTERY, 7) .attr(AllyMoveCategoryPowerBoostAbAttr, [ MoveCategory.SPECIAL ], 1.3), - new Ability(Abilities.FLUFFY, 7) + new Ability(AbilityId.FLUFFY, 7) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user, target}), 0.5) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => user.getMoveType(move) === PokemonType.FIRE, 2) .ignorable(), - new Ability(Abilities.DAZZLING, 7) + new Ability(AbilityId.DAZZLING, 7) .attr(FieldPriorityMoveImmunityAbAttr) .ignorable(), - new Ability(Abilities.SOUL_HEART, 7) + new Ability(AbilityId.SOUL_HEART, 7) .attr(PostKnockOutStatStageChangeAbAttr, Stat.SPATK, 1), - new Ability(Abilities.TANGLING_HAIR, 7) + new Ability(AbilityId.TANGLING_HAIR, 7) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user, target}), Stat.SPD, -1, false), - new Ability(Abilities.RECEIVER, 7) + new Ability(AbilityId.RECEIVER, 7) .attr(CopyFaintedAllyAbilityAbAttr) .uncopiable(), - new Ability(Abilities.POWER_OF_ALCHEMY, 7) + new Ability(AbilityId.POWER_OF_ALCHEMY, 7) .attr(CopyFaintedAllyAbilityAbAttr) .uncopiable(), - new Ability(Abilities.BEAST_BOOST, 7) + new Ability(AbilityId.BEAST_BOOST, 7) .attr(PostVictoryStatStageChangeAbAttr, p => { let highestStat: EffectiveStat; let highestValue = 0; @@ -7206,47 +7206,47 @@ export function initAbilities() { } return highestStat!; }, 1), - new Ability(Abilities.RKS_SYSTEM, 7) + new Ability(AbilityId.RKS_SYSTEM, 7) .attr(NoFusionAbilityAbAttr) .uncopiable() .unreplaceable() .unsuppressable(), - new Ability(Abilities.ELECTRIC_SURGE, 7) + new Ability(AbilityId.ELECTRIC_SURGE, 7) .attr(PostSummonTerrainChangeAbAttr, TerrainType.ELECTRIC) .attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.ELECTRIC), - new Ability(Abilities.PSYCHIC_SURGE, 7) + new Ability(AbilityId.PSYCHIC_SURGE, 7) .attr(PostSummonTerrainChangeAbAttr, TerrainType.PSYCHIC) .attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.PSYCHIC), - new Ability(Abilities.MISTY_SURGE, 7) + new Ability(AbilityId.MISTY_SURGE, 7) .attr(PostSummonTerrainChangeAbAttr, TerrainType.MISTY) .attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.MISTY), - new Ability(Abilities.GRASSY_SURGE, 7) + new Ability(AbilityId.GRASSY_SURGE, 7) .attr(PostSummonTerrainChangeAbAttr, TerrainType.GRASSY) .attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.GRASSY), - new Ability(Abilities.FULL_METAL_BODY, 7) + new Ability(AbilityId.FULL_METAL_BODY, 7) .attr(ProtectStatAbAttr), - new Ability(Abilities.SHADOW_SHIELD, 7) + new Ability(AbilityId.SHADOW_SHIELD, 7) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => target.isFullHp(), 0.5), - new Ability(Abilities.PRISM_ARMOR, 7) + new Ability(AbilityId.PRISM_ARMOR, 7) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => target.getMoveEffectiveness(user, move) >= 2, 0.75), - new Ability(Abilities.NEUROFORCE, 7) + new Ability(AbilityId.NEUROFORCE, 7) .attr(MovePowerBoostAbAttr, (user, target, move) => (target?.getMoveEffectiveness(user!, move) ?? 1) >= 2, 1.25), - new Ability(Abilities.INTREPID_SWORD, 8) + new Ability(AbilityId.INTREPID_SWORD, 8) .attr(PostSummonStatStageChangeAbAttr, [ Stat.ATK ], 1, true), - new Ability(Abilities.DAUNTLESS_SHIELD, 8) + new Ability(AbilityId.DAUNTLESS_SHIELD, 8) .attr(PostSummonStatStageChangeAbAttr, [ Stat.DEF ], 1, true), - new Ability(Abilities.LIBERO, 8) + new Ability(AbilityId.LIBERO, 8) .attr(PokemonTypeChangeAbAttr), - //.condition((p) => !p.summonData.abilitiesApplied.includes(Abilities.LIBERO)), //Gen 9 Implementation - new Ability(Abilities.BALL_FETCH, 8) + //.condition((p) => !p.summonData.abilitiesApplied.includes(AbilityId.LIBERO)), //Gen 9 Implementation + new Ability(AbilityId.BALL_FETCH, 8) .attr(FetchBallAbAttr) - .condition(getOncePerBattleCondition(Abilities.BALL_FETCH)), - new Ability(Abilities.COTTON_DOWN, 8) + .condition(getOncePerBattleCondition(AbilityId.BALL_FETCH)), + new Ability(AbilityId.COTTON_DOWN, 8) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, Stat.SPD, -1, false, true) .bypassFaint(), - new Ability(Abilities.PROPELLER_TAIL, 8) + new Ability(AbilityId.PROPELLER_TAIL, 8) .attr(BlockRedirectAbAttr), - new Ability(Abilities.MIRROR_ARMOR, 8) + new Ability(AbilityId.MIRROR_ARMOR, 8) .attr(ReflectStatStageChangeAbAttr) .ignorable(), /** @@ -7255,34 +7255,34 @@ export function initAbilities() { * where Cramorant is fainted. * @see {@linkcode GulpMissileTagAttr} and {@linkcode GulpMissileTag} for Gulp Missile implementation */ - new Ability(Abilities.GULP_MISSILE, 8) + new Ability(AbilityId.GULP_MISSILE, 8) .attr(NoTransformAbilityAbAttr) .attr(NoFusionAbilityAbAttr) .unsuppressable() .uncopiable() .unreplaceable() .bypassFaint(), - new Ability(Abilities.STALWART, 8) + new Ability(AbilityId.STALWART, 8) .attr(BlockRedirectAbAttr), - new Ability(Abilities.STEAM_ENGINE, 8) + new Ability(AbilityId.STEAM_ENGINE, 8) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => { const moveType = user.getMoveType(move); return move.category !== MoveCategory.STATUS && (moveType === PokemonType.FIRE || moveType === PokemonType.WATER); }, Stat.SPD, 6), - new Ability(Abilities.PUNK_ROCK, 8) + new Ability(AbilityId.PUNK_ROCK, 8) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.SOUND_BASED), 1.3) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.hasFlag(MoveFlags.SOUND_BASED), 0.5) .ignorable(), - new Ability(Abilities.SAND_SPIT, 8) + new Ability(AbilityId.SAND_SPIT, 8) .attr(PostDefendWeatherChangeAbAttr, WeatherType.SANDSTORM, (target, user, move) => move.category !== MoveCategory.STATUS) .bypassFaint(), - new Ability(Abilities.ICE_SCALES, 8) + new Ability(AbilityId.ICE_SCALES, 8) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.category === MoveCategory.SPECIAL, 0.5) .ignorable(), - new Ability(Abilities.RIPEN, 8) + new Ability(AbilityId.RIPEN, 8) .attr(DoubleBerryEffectAbAttr), - new Ability(Abilities.ICE_FACE, 8) + new Ability(AbilityId.ICE_FACE, 8) .attr(NoTransformAbilityAbAttr) .attr(NoFusionAbilityAbAttr) // Add BattlerTagType.ICE_FACE if the pokemon is in ice face form @@ -7300,34 +7300,34 @@ export function initAbilities() { .unsuppressable() .bypassFaint() .ignorable(), - new Ability(Abilities.POWER_SPOT, 8) + new Ability(AbilityId.POWER_SPOT, 8) .attr(AllyMoveCategoryPowerBoostAbAttr, [ MoveCategory.SPECIAL, MoveCategory.PHYSICAL ], 1.3), - new Ability(Abilities.MIMICRY, 8) + new Ability(AbilityId.MIMICRY, 8) .attr(TerrainEventTypeChangeAbAttr), - new Ability(Abilities.SCREEN_CLEANER, 8) + new Ability(AbilityId.SCREEN_CLEANER, 8) .attr(PostSummonRemoveArenaTagAbAttr, [ ArenaTagType.AURORA_VEIL, ArenaTagType.LIGHT_SCREEN, ArenaTagType.REFLECT ]), - new Ability(Abilities.STEELY_SPIRIT, 8) + new Ability(AbilityId.STEELY_SPIRIT, 8) .attr(UserFieldMoveTypePowerBoostAbAttr, PokemonType.STEEL), - new Ability(Abilities.PERISH_BODY, 8) + new Ability(AbilityId.PERISH_BODY, 8) .attr(PostDefendPerishSongAbAttr, 4) .bypassFaint(), - new Ability(Abilities.WANDERING_SPIRIT, 8) + new Ability(AbilityId.WANDERING_SPIRIT, 8) .attr(PostDefendAbilitySwapAbAttr) .bypassFaint() .edgeCase(), // interacts incorrectly with rock head. It's meant to switch abilities before recoil would apply so that a pokemon with rock head would lose rock head first and still take the recoil - new Ability(Abilities.GORILLA_TACTICS, 8) + new Ability(AbilityId.GORILLA_TACTICS, 8) .attr(GorillaTacticsAbAttr), - new Ability(Abilities.NEUTRALIZING_GAS, 8) + new Ability(AbilityId.NEUTRALIZING_GAS, 8) .attr(PostSummonAddArenaTagAbAttr, true, ArenaTagType.NEUTRALIZING_GAS, 0) .attr(PreLeaveFieldRemoveSuppressAbilitiesSourceAbAttr) .uncopiable() .attr(NoTransformAbilityAbAttr) .bypassFaint(), - new Ability(Abilities.PASTEL_VEIL, 8) + new Ability(AbilityId.PASTEL_VEIL, 8) .attr(PostSummonUserFieldRemoveStatusEffectAbAttr, StatusEffect.POISON, StatusEffect.TOXIC) .attr(UserFieldStatusEffectImmunityAbAttr, StatusEffect.POISON, StatusEffect.TOXIC) .ignorable(), - new Ability(Abilities.HUNGER_SWITCH, 8) + new Ability(AbilityId.HUNGER_SWITCH, 8) .attr(PostTurnFormChangeAbAttr, p => p.getFormKey() ? 0 : 1) .attr(PostTurnFormChangeAbAttr, p => p.getFormKey() ? 1 : 0) .attr(NoTransformAbilityAbAttr) @@ -7335,69 +7335,69 @@ export function initAbilities() { .condition((pokemon) => !pokemon.isTerastallized) .uncopiable() .unreplaceable(), - new Ability(Abilities.QUICK_DRAW, 8) + new Ability(AbilityId.QUICK_DRAW, 8) .attr(BypassSpeedChanceAbAttr, 30), - new Ability(Abilities.UNSEEN_FIST, 8) + new Ability(AbilityId.UNSEEN_FIST, 8) .attr(IgnoreProtectOnContactAbAttr), - new Ability(Abilities.CURIOUS_MEDICINE, 8) + new Ability(AbilityId.CURIOUS_MEDICINE, 8) .attr(PostSummonClearAllyStatStagesAbAttr), - new Ability(Abilities.TRANSISTOR, 8) + new Ability(AbilityId.TRANSISTOR, 8) .attr(MoveTypePowerBoostAbAttr, PokemonType.ELECTRIC, 1.3), - new Ability(Abilities.DRAGONS_MAW, 8) + new Ability(AbilityId.DRAGONS_MAW, 8) .attr(MoveTypePowerBoostAbAttr, PokemonType.DRAGON), - new Ability(Abilities.CHILLING_NEIGH, 8) + new Ability(AbilityId.CHILLING_NEIGH, 8) .attr(PostVictoryStatStageChangeAbAttr, Stat.ATK, 1), - new Ability(Abilities.GRIM_NEIGH, 8) + new Ability(AbilityId.GRIM_NEIGH, 8) .attr(PostVictoryStatStageChangeAbAttr, Stat.SPATK, 1), - new Ability(Abilities.AS_ONE_GLASTRIER, 8) + new Ability(AbilityId.AS_ONE_GLASTRIER, 8) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonAsOneGlastrier", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })) .attr(PreventBerryUseAbAttr) .attr(PostVictoryStatStageChangeAbAttr, Stat.ATK, 1) .uncopiable() .unreplaceable() .unsuppressable(), - new Ability(Abilities.AS_ONE_SPECTRIER, 8) + new Ability(AbilityId.AS_ONE_SPECTRIER, 8) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonAsOneSpectrier", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })) .attr(PreventBerryUseAbAttr) .attr(PostVictoryStatStageChangeAbAttr, Stat.SPATK, 1) .uncopiable() .unreplaceable() .unsuppressable(), - new Ability(Abilities.LINGERING_AROMA, 9) - .attr(PostDefendAbilityGiveAbAttr, Abilities.LINGERING_AROMA) + new Ability(AbilityId.LINGERING_AROMA, 9) + .attr(PostDefendAbilityGiveAbAttr, AbilityId.LINGERING_AROMA) .bypassFaint(), - new Ability(Abilities.SEED_SOWER, 9) + new Ability(AbilityId.SEED_SOWER, 9) .attr(PostDefendTerrainChangeAbAttr, TerrainType.GRASSY) .bypassFaint(), - new Ability(Abilities.THERMAL_EXCHANGE, 9) + new Ability(AbilityId.THERMAL_EXCHANGE, 9) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === PokemonType.FIRE && move.category !== MoveCategory.STATUS, Stat.ATK, 1) .attr(StatusEffectImmunityAbAttr, StatusEffect.BURN) .attr(PostSummonHealStatusAbAttr, StatusEffect.BURN) .ignorable(), - new Ability(Abilities.ANGER_SHELL, 9) + new Ability(AbilityId.ANGER_SHELL, 9) .attr(PostDefendHpGatedStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, 0.5, [ Stat.ATK, Stat.SPATK, Stat.SPD ], 1) .attr(PostDefendHpGatedStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, 0.5, [ Stat.DEF, Stat.SPDEF ], -1) .condition(getSheerForceHitDisableAbCondition()), - new Ability(Abilities.PURIFYING_SALT, 9) + new Ability(AbilityId.PURIFYING_SALT, 9) .attr(StatusEffectImmunityAbAttr) .attr(ReceivedTypeDamageMultiplierAbAttr, PokemonType.GHOST, 0.5) .ignorable(), - new Ability(Abilities.WELL_BAKED_BODY, 9) + new Ability(AbilityId.WELL_BAKED_BODY, 9) .attr(TypeImmunityStatStageChangeAbAttr, PokemonType.FIRE, Stat.DEF, 2) .ignorable(), - new Ability(Abilities.WIND_RIDER, 9) + new Ability(AbilityId.WIND_RIDER, 9) .attr(MoveImmunityStatStageChangeAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.hasFlag(MoveFlags.WIND_MOVE) && move.category !== MoveCategory.STATUS, Stat.ATK, 1) .attr(PostSummonStatStageChangeOnArenaAbAttr, ArenaTagType.TAILWIND) .ignorable(), - new Ability(Abilities.GUARD_DOG, 9) + new Ability(AbilityId.GUARD_DOG, 9) .attr(PostIntimidateStatStageChangeAbAttr, [ Stat.ATK ], 1, true) .attr(ForceSwitchOutImmunityAbAttr) .ignorable(), - new Ability(Abilities.ROCKY_PAYLOAD, 9) + new Ability(AbilityId.ROCKY_PAYLOAD, 9) .attr(MoveTypePowerBoostAbAttr, PokemonType.ROCK), - new Ability(Abilities.WIND_POWER, 9) + new Ability(AbilityId.WIND_POWER, 9) .attr(PostDefendApplyBattlerTagAbAttr, (target, user, move) => move.hasFlag(MoveFlags.WIND_MOVE), BattlerTagType.CHARGED), - new Ability(Abilities.ZERO_TO_HERO, 9) + new Ability(AbilityId.ZERO_TO_HERO, 9) .uncopiable() .unreplaceable() .unsuppressable() @@ -7406,25 +7406,25 @@ export function initAbilities() { .attr(PostBattleInitFormChangeAbAttr, () => 0) .attr(PreSwitchOutFormChangeAbAttr, (pokemon) => !pokemon.isFainted() ? 1 : pokemon.formIndex) .bypassFaint(), - new Ability(Abilities.COMMANDER, 9) + new Ability(AbilityId.COMMANDER, 9) .attr(CommanderAbAttr) .attr(DoubleBattleChanceAbAttr) .uncopiable() .unreplaceable() .edgeCase(), // Encore, Frenzy, and other non-`TURN_END` tags don't lapse correctly on the commanding Pokemon. - new Ability(Abilities.ELECTROMORPHOSIS, 9) + new Ability(AbilityId.ELECTROMORPHOSIS, 9) .attr(PostDefendApplyBattlerTagAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, BattlerTagType.CHARGED), - new Ability(Abilities.PROTOSYNTHESIS, 9) + new Ability(AbilityId.PROTOSYNTHESIS, 9) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN), PostSummonAddBattlerTagAbAttr, BattlerTagType.PROTOSYNTHESIS, 0, true) .attr(PostWeatherChangeAddBattlerTagAttr, BattlerTagType.PROTOSYNTHESIS, 0, WeatherType.SUNNY, WeatherType.HARSH_SUN) .uncopiable() .attr(NoTransformAbilityAbAttr), - new Ability(Abilities.QUARK_DRIVE, 9) + new Ability(AbilityId.QUARK_DRIVE, 9) .conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), PostSummonAddBattlerTagAbAttr, BattlerTagType.QUARK_DRIVE, 0, true) .attr(PostTerrainChangeAddBattlerTagAttr, BattlerTagType.QUARK_DRIVE, 0, TerrainType.ELECTRIC) .uncopiable() .attr(NoTransformAbilityAbAttr), - new Ability(Abilities.GOOD_AS_GOLD, 9) + new Ability(AbilityId.GOOD_AS_GOLD, 9) .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.category === MoveCategory.STATUS @@ -7432,102 +7432,102 @@ export function initAbilities() { ) .edgeCase() // Heal Bell should not cure the status of a Pokemon with Good As Gold .ignorable(), - new Ability(Abilities.VESSEL_OF_RUIN, 9) + new Ability(AbilityId.VESSEL_OF_RUIN, 9) .attr(FieldMultiplyStatAbAttr, Stat.SPATK, 0.75) .attr(PostSummonMessageAbAttr, (user) => i18next.t("abilityTriggers:postSummonVesselOfRuin", { pokemonNameWithAffix: getPokemonNameWithAffix(user), statName: i18next.t(getStatKey(Stat.SPATK)) })) .ignorable(), - new Ability(Abilities.SWORD_OF_RUIN, 9) + new Ability(AbilityId.SWORD_OF_RUIN, 9) .attr(FieldMultiplyStatAbAttr, Stat.DEF, 0.75) .attr(PostSummonMessageAbAttr, (user) => i18next.t("abilityTriggers:postSummonSwordOfRuin", { pokemonNameWithAffix: getPokemonNameWithAffix(user), statName: i18next.t(getStatKey(Stat.DEF)) })), - new Ability(Abilities.TABLETS_OF_RUIN, 9) + new Ability(AbilityId.TABLETS_OF_RUIN, 9) .attr(FieldMultiplyStatAbAttr, Stat.ATK, 0.75) .attr(PostSummonMessageAbAttr, (user) => i18next.t("abilityTriggers:postSummonTabletsOfRuin", { pokemonNameWithAffix: getPokemonNameWithAffix(user), statName: i18next.t(getStatKey(Stat.ATK)) })) .ignorable(), - new Ability(Abilities.BEADS_OF_RUIN, 9) + new Ability(AbilityId.BEADS_OF_RUIN, 9) .attr(FieldMultiplyStatAbAttr, Stat.SPDEF, 0.75) .attr(PostSummonMessageAbAttr, (user) => i18next.t("abilityTriggers:postSummonBeadsOfRuin", { pokemonNameWithAffix: getPokemonNameWithAffix(user), statName: i18next.t(getStatKey(Stat.SPDEF)) })), - new Ability(Abilities.ORICHALCUM_PULSE, 9) + new Ability(AbilityId.ORICHALCUM_PULSE, 9) .attr(PostSummonWeatherChangeAbAttr, WeatherType.SUNNY) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.SUNNY) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN), StatMultiplierAbAttr, Stat.ATK, 4 / 3), - new Ability(Abilities.HADRON_ENGINE, 9) + new Ability(AbilityId.HADRON_ENGINE, 9) .attr(PostSummonTerrainChangeAbAttr, TerrainType.ELECTRIC) .attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.ELECTRIC) .conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), StatMultiplierAbAttr, Stat.SPATK, 4 / 3), - new Ability(Abilities.OPPORTUNIST, 9) + new Ability(AbilityId.OPPORTUNIST, 9) .attr(StatStageChangeCopyAbAttr), - new Ability(Abilities.CUD_CHEW, 9) + new Ability(AbilityId.CUD_CHEW, 9) .attr(RepeatBerryNextTurnAbAttr), - new Ability(Abilities.SHARPNESS, 9) + new Ability(AbilityId.SHARPNESS, 9) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.SLICING_MOVE), 1.5), - new Ability(Abilities.SUPREME_OVERLORD, 9) + new Ability(AbilityId.SUPREME_OVERLORD, 9) .attr(VariableMovePowerBoostAbAttr, (user, target, move) => 1 + 0.1 * Math.min(user.isPlayer() ? globalScene.arena.playerFaints : globalScene.currentBattle.enemyFaints, 5)) .partial(), // Should only boost once, on summon - new Ability(Abilities.COSTAR, 9) + new Ability(AbilityId.COSTAR, 9) .attr(PostSummonCopyAllyStatsAbAttr), - new Ability(Abilities.TOXIC_DEBRIS, 9) + new Ability(AbilityId.TOXIC_DEBRIS, 9) .attr(PostDefendApplyArenaTrapTagAbAttr, (target, user, move) => move.category === MoveCategory.PHYSICAL, ArenaTagType.TOXIC_SPIKES) .bypassFaint(), - new Ability(Abilities.ARMOR_TAIL, 9) + new Ability(AbilityId.ARMOR_TAIL, 9) .attr(FieldPriorityMoveImmunityAbAttr) .ignorable(), - new Ability(Abilities.EARTH_EATER, 9) + new Ability(AbilityId.EARTH_EATER, 9) .attr(TypeImmunityHealAbAttr, PokemonType.GROUND) .ignorable(), - new Ability(Abilities.MYCELIUM_MIGHT, 9) + new Ability(AbilityId.MYCELIUM_MIGHT, 9) .attr(ChangeMovePriorityAbAttr, (pokemon, move) => move.category === MoveCategory.STATUS, -0.2) .attr(PreventBypassSpeedChanceAbAttr, (pokemon, move) => move.category === MoveCategory.STATUS) .attr(MoveAbilityBypassAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS), - new Ability(Abilities.MINDS_EYE, 9) + new Ability(AbilityId.MINDS_EYE, 9) .attr(IgnoreTypeImmunityAbAttr, PokemonType.GHOST, [ PokemonType.NORMAL, PokemonType.FIGHTING ]) .attr(ProtectStatAbAttr, Stat.ACC) .attr(IgnoreOpponentStatStagesAbAttr, [ Stat.EVA ]) .ignorable(), - new Ability(Abilities.SUPERSWEET_SYRUP, 9) + new Ability(AbilityId.SUPERSWEET_SYRUP, 9) .attr(PostSummonStatStageChangeAbAttr, [ Stat.EVA ], -1), - new Ability(Abilities.HOSPITALITY, 9) + new Ability(AbilityId.HOSPITALITY, 9) .attr(PostSummonAllyHealAbAttr, 4, true), - new Ability(Abilities.TOXIC_CHAIN, 9) + new Ability(AbilityId.TOXIC_CHAIN, 9) .attr(PostAttackApplyStatusEffectAbAttr, false, 30, StatusEffect.TOXIC), - new Ability(Abilities.EMBODY_ASPECT_TEAL, 9) + new Ability(AbilityId.EMBODY_ASPECT_TEAL, 9) .attr(PostTeraFormChangeStatChangeAbAttr, [ Stat.SPD ], 1) .uncopiable() .unreplaceable() // TODO is this true? .attr(NoTransformAbilityAbAttr), - new Ability(Abilities.EMBODY_ASPECT_WELLSPRING, 9) + new Ability(AbilityId.EMBODY_ASPECT_WELLSPRING, 9) .attr(PostTeraFormChangeStatChangeAbAttr, [ Stat.SPDEF ], 1) .uncopiable() .unreplaceable() .attr(NoTransformAbilityAbAttr), - new Ability(Abilities.EMBODY_ASPECT_HEARTHFLAME, 9) + new Ability(AbilityId.EMBODY_ASPECT_HEARTHFLAME, 9) .attr(PostTeraFormChangeStatChangeAbAttr, [ Stat.ATK ], 1) .uncopiable() .unreplaceable() .attr(NoTransformAbilityAbAttr), - new Ability(Abilities.EMBODY_ASPECT_CORNERSTONE, 9) + new Ability(AbilityId.EMBODY_ASPECT_CORNERSTONE, 9) .attr(PostTeraFormChangeStatChangeAbAttr, [ Stat.DEF ], 1) .uncopiable() .unreplaceable() .attr(NoTransformAbilityAbAttr), - new Ability(Abilities.TERA_SHIFT, 9) + new Ability(AbilityId.TERA_SHIFT, 9) .attr(PostSummonFormChangeAbAttr, p => p.getFormKey() ? 0 : 1) .uncopiable() .unreplaceable() .unsuppressable() .attr(NoTransformAbilityAbAttr) .attr(NoFusionAbilityAbAttr), - new Ability(Abilities.TERA_SHELL, 9) + new Ability(AbilityId.TERA_SHELL, 9) .attr(FullHpResistTypeAbAttr) .uncopiable() .unreplaceable() .ignorable(), - new Ability(Abilities.TERAFORM_ZERO, 9) + new Ability(AbilityId.TERAFORM_ZERO, 9) .attr(ClearWeatherAbAttr, [ WeatherType.SUNNY, WeatherType.RAIN, WeatherType.SANDSTORM, WeatherType.HAIL, WeatherType.SNOW, WeatherType.FOG, WeatherType.HEAVY_RAIN, WeatherType.HARSH_SUN, WeatherType.STRONG_WINDS ]) .attr(ClearTerrainAbAttr, [ TerrainType.MISTY, TerrainType.ELECTRIC, TerrainType.GRASSY, TerrainType.PSYCHIC ]) .uncopiable() .unreplaceable() - .condition(getOncePerBattleCondition(Abilities.TERAFORM_ZERO)), - new Ability(Abilities.POISON_PUPPETEER, 9) + .condition(getOncePerBattleCondition(AbilityId.TERAFORM_ZERO)), + new Ability(AbilityId.POISON_PUPPETEER, 9) .uncopiable() .unreplaceable() // TODO is this true? .attr(ConfusionOnStatusEffectAbAttr, StatusEffect.POISON, StatusEffect.TOXIC) diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 1955b51e8e0..590319a01c0 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -22,10 +22,10 @@ import { import { Stat } from "#enums/stat"; import { CommonAnim, CommonBattleAnim } from "#app/data/battle-anims"; import i18next from "i18next"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; @@ -41,7 +41,7 @@ export abstract class ArenaTag { constructor( public tagType: ArenaTagType, public turnCount: number, - public sourceMove?: Moves, + public sourceMove?: MoveId, public sourceId?: number, public side: ArenaTagSide = ArenaTagSide.BOTH, ) {} @@ -116,7 +116,7 @@ export abstract class ArenaTag { */ export class MistTag extends ArenaTag { constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.MIST, turnCount, Moves.MIST, sourceId, side); + super(ArenaTagType.MIST, turnCount, MoveId.MIST, sourceId, side); } onAdd(arena: Arena, quiet = false): void { @@ -188,7 +188,7 @@ export class WeakenMoveScreenTag extends ArenaTag { constructor( tagType: ArenaTagType, turnCount: number, - sourceMove: Moves, + sourceMove: MoveId, sourceId: number, side: ArenaTagSide, weakenedCategories: MoveCategory[], @@ -230,11 +230,11 @@ export class WeakenMoveScreenTag extends ArenaTag { /** * Reduces the damage of physical moves. - * Used by {@linkcode Moves.REFLECT} + * Used by {@linkcode MoveId.REFLECT} */ class ReflectTag extends WeakenMoveScreenTag { constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.REFLECT, turnCount, Moves.REFLECT, sourceId, side, [MoveCategory.PHYSICAL]); + super(ArenaTagType.REFLECT, turnCount, MoveId.REFLECT, sourceId, side, [MoveCategory.PHYSICAL]); } onAdd(_arena: Arena, quiet = false): void { @@ -250,11 +250,11 @@ class ReflectTag extends WeakenMoveScreenTag { /** * Reduces the damage of special moves. - * Used by {@linkcode Moves.LIGHT_SCREEN} + * Used by {@linkcode MoveId.LIGHT_SCREEN} */ class LightScreenTag extends WeakenMoveScreenTag { constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.LIGHT_SCREEN, turnCount, Moves.LIGHT_SCREEN, sourceId, side, [MoveCategory.SPECIAL]); + super(ArenaTagType.LIGHT_SCREEN, turnCount, MoveId.LIGHT_SCREEN, sourceId, side, [MoveCategory.SPECIAL]); } onAdd(_arena: Arena, quiet = false): void { @@ -270,11 +270,11 @@ class LightScreenTag extends WeakenMoveScreenTag { /** * Reduces the damage of physical and special moves. - * Used by {@linkcode Moves.AURORA_VEIL} + * Used by {@linkcode MoveId.AURORA_VEIL} */ class AuroraVeilTag extends WeakenMoveScreenTag { constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.AURORA_VEIL, turnCount, Moves.AURORA_VEIL, sourceId, side, [ + super(ArenaTagType.AURORA_VEIL, turnCount, MoveId.AURORA_VEIL, sourceId, side, [ MoveCategory.SPECIAL, MoveCategory.PHYSICAL, ]); @@ -291,7 +291,7 @@ class AuroraVeilTag extends WeakenMoveScreenTag { } } -type ProtectConditionFunc = (arena: Arena, moveId: Moves) => boolean; +type ProtectConditionFunc = (arena: Arena, moveId: MoveId) => boolean; /** * Class to implement conditional team protection @@ -305,7 +305,7 @@ export class ConditionalProtectTag extends ArenaTag { constructor( tagType: ArenaTagType, - sourceMove: Moves, + sourceMove: MoveId, sourceId: number, side: ArenaTagSide, condition: ProtectConditionFunc, @@ -337,7 +337,7 @@ export class ConditionalProtectTag extends ArenaTag { * @param isProtected a {@linkcode BooleanHolder} used to flag if the move is protected against * @param _attacker the attacking {@linkcode Pokemon} * @param defender the defending {@linkcode Pokemon} - * @param moveId the {@linkcode Moves | identifier} for the move being used + * @param moveId the {@linkcode MoveId | identifier} for the move being used * @param ignoresProtectBypass a {@linkcode BooleanHolder} used to flag if a protection effect supercedes effects that ignore protection * @returns `true` if this tag protected against the attack; `false` otherwise */ @@ -347,7 +347,7 @@ export class ConditionalProtectTag extends ArenaTag { isProtected: BooleanHolder, _attacker: Pokemon, defender: Pokemon, - moveId: Moves, + moveId: MoveId, ignoresProtectBypass: BooleanHolder, ): boolean { if ((this.side === ArenaTagSide.PLAYER) === defender.isPlayer() && this.protectConditionFunc(arena, moveId)) { @@ -375,7 +375,7 @@ export class ConditionalProtectTag extends ArenaTag { * Condition function for {@link https://bulbapedia.bulbagarden.net/wiki/Quick_Guard_(move) Quick Guard's} * protection effect. * @param _arena {@linkcode Arena} The arena containing the protection effect - * @param moveId {@linkcode Moves} The move to check against this condition + * @param moveId {@linkcode MoveId} The move to check against this condition * @returns `true` if the incoming move's priority is greater than 0. * This includes moves with modified priorities from abilities (e.g. Prankster) */ @@ -398,7 +398,7 @@ const QuickGuardConditionFunc: ProtectConditionFunc = (_arena, moveId) => { */ class QuickGuardTag extends ConditionalProtectTag { constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.QUICK_GUARD, Moves.QUICK_GUARD, sourceId, side, QuickGuardConditionFunc); + super(ArenaTagType.QUICK_GUARD, MoveId.QUICK_GUARD, sourceId, side, QuickGuardConditionFunc); } } @@ -406,7 +406,7 @@ class QuickGuardTag extends ConditionalProtectTag { * Condition function for {@link https://bulbapedia.bulbagarden.net/wiki/Wide_Guard_(move) Wide Guard's} * protection effect. * @param _arena {@linkcode Arena} The arena containing the protection effect - * @param moveId {@linkcode Moves} The move to check against this condition + * @param moveId {@linkcode MoveId} The move to check against this condition * @returns `true` if the incoming move is multi-targeted (even if it's only used against one Pokemon). */ const WideGuardConditionFunc: ProtectConditionFunc = (_arena, moveId): boolean => { @@ -429,7 +429,7 @@ const WideGuardConditionFunc: ProtectConditionFunc = (_arena, moveId): boolean = */ class WideGuardTag extends ConditionalProtectTag { constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.WIDE_GUARD, Moves.WIDE_GUARD, sourceId, side, WideGuardConditionFunc); + super(ArenaTagType.WIDE_GUARD, MoveId.WIDE_GUARD, sourceId, side, WideGuardConditionFunc); } } @@ -437,7 +437,7 @@ class WideGuardTag extends ConditionalProtectTag { * Condition function for {@link https://bulbapedia.bulbagarden.net/wiki/Mat_Block_(move) Mat Block's} * protection effect. * @param _arena {@linkcode Arena} The arena containing the protection effect. - * @param moveId {@linkcode Moves} The move to check against this condition. + * @param moveId {@linkcode MoveId} The move to check against this condition. * @returns `true` if the incoming move is not a Status move. */ const MatBlockConditionFunc: ProtectConditionFunc = (_arena, moveId): boolean => { @@ -451,7 +451,7 @@ const MatBlockConditionFunc: ProtectConditionFunc = (_arena, moveId): boolean => */ class MatBlockTag extends ConditionalProtectTag { constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.MAT_BLOCK, Moves.MAT_BLOCK, sourceId, side, MatBlockConditionFunc); + super(ArenaTagType.MAT_BLOCK, MoveId.MAT_BLOCK, sourceId, side, MatBlockConditionFunc); } onAdd(_arena: Arena) { @@ -474,7 +474,7 @@ class MatBlockTag extends ConditionalProtectTag { * Condition function for {@link https://bulbapedia.bulbagarden.net/wiki/Crafty_Shield_(move) Crafty Shield's} * protection effect. * @param _arena {@linkcode Arena} The arena containing the protection effect - * @param moveId {@linkcode Moves} The move to check against this condition + * @param moveId {@linkcode MoveId} The move to check against this condition * @returns `true` if the incoming move is a Status move, is not a hazard, and does not target all * Pokemon or sides of the field. */ @@ -495,7 +495,7 @@ const CraftyShieldConditionFunc: ProtectConditionFunc = (_arena, moveId) => { */ class CraftyShieldTag extends ConditionalProtectTag { constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.CRAFTY_SHIELD, Moves.CRAFTY_SHIELD, sourceId, side, CraftyShieldConditionFunc, true); + super(ArenaTagType.CRAFTY_SHIELD, MoveId.CRAFTY_SHIELD, sourceId, side, CraftyShieldConditionFunc, true); } } @@ -507,11 +507,11 @@ export class NoCritTag extends ArenaTag { /** * Constructor method for the NoCritTag class * @param turnCount `number` the number of turns this effect lasts - * @param sourceMove {@linkcode Moves} the move that created this effect + * @param sourceMove {@linkcode MoveId} the move that created this effect * @param sourceId `number` the ID of the {@linkcode Pokemon} that created this effect * @param side {@linkcode ArenaTagSide} the side to which this effect belongs */ - constructor(turnCount: number, sourceMove: Moves, sourceId: number, side: ArenaTagSide) { + constructor(turnCount: number, sourceMove: MoveId, sourceId: number, side: ArenaTagSide) { super(ArenaTagType.NO_CRIT, turnCount, sourceMove, sourceId, side); } @@ -546,7 +546,7 @@ class WishTag extends ArenaTag { private healHp: number; constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.WISH, turnCount, Moves.WISH, sourceId, side); + super(ArenaTagType.WISH, turnCount, MoveId.WISH, sourceId, side); } onAdd(_arena: Arena): void { @@ -588,7 +588,7 @@ export class WeakenMoveTypeTag extends ArenaTag { * @param sourceMove - The move that created the tag. * @param sourceId - The ID of the source of the tag. */ - constructor(tagType: ArenaTagType, turnCount: number, type: PokemonType, sourceMove: Moves, sourceId: number) { + constructor(tagType: ArenaTagType, turnCount: number, type: PokemonType, sourceMove: MoveId, sourceId: number) { super(tagType, turnCount, sourceMove, sourceId); this.weakenedType = type; @@ -617,7 +617,7 @@ export class WeakenMoveTypeTag extends ArenaTag { */ class MudSportTag extends WeakenMoveTypeTag { constructor(turnCount: number, sourceId: number) { - super(ArenaTagType.MUD_SPORT, turnCount, PokemonType.ELECTRIC, Moves.MUD_SPORT, sourceId); + super(ArenaTagType.MUD_SPORT, turnCount, PokemonType.ELECTRIC, MoveId.MUD_SPORT, sourceId); } onAdd(_arena: Arena): void { @@ -635,7 +635,7 @@ class MudSportTag extends WeakenMoveTypeTag { */ class WaterSportTag extends WeakenMoveTypeTag { constructor(turnCount: number, sourceId: number) { - super(ArenaTagType.WATER_SPORT, turnCount, PokemonType.FIRE, Moves.WATER_SPORT, sourceId); + super(ArenaTagType.WATER_SPORT, turnCount, PokemonType.FIRE, MoveId.WATER_SPORT, sourceId); } onAdd(_arena: Arena): void { @@ -653,7 +653,7 @@ class WaterSportTag extends WeakenMoveTypeTag { * Converts Normal-type moves to Electric type for the rest of the turn. */ export class IonDelugeTag extends ArenaTag { - constructor(sourceMove?: Moves) { + constructor(sourceMove?: MoveId) { super(ArenaTagType.ION_DELUGE, 1, sourceMove); } @@ -696,7 +696,7 @@ export class ArenaTrapTag extends ArenaTag { * @param side - The side (player or enemy) the tag affects. * @param maxLayers - The maximum amount of layers this tag can have. */ - constructor(tagType: ArenaTagType, sourceMove: Moves, sourceId: number, side: ArenaTagSide, maxLayers: number) { + constructor(tagType: ArenaTagType, sourceMove: MoveId, sourceId: number, side: ArenaTagSide, maxLayers: number) { super(tagType, 0, sourceMove, sourceId, side); this.layers = 1; @@ -750,7 +750,7 @@ export class ArenaTrapTag extends ArenaTag { */ class SpikesTag extends ArenaTrapTag { constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.SPIKES, Moves.SPIKES, sourceId, side, 3); + super(ArenaTagType.SPIKES, MoveId.SPIKES, sourceId, side, 3); } onAdd(arena: Arena, quiet = false): void { @@ -802,7 +802,7 @@ class ToxicSpikesTag extends ArenaTrapTag { private neutralized: boolean; constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.TOXIC_SPIKES, Moves.TOXIC_SPIKES, sourceId, side, 2); + super(ArenaTagType.TOXIC_SPIKES, MoveId.TOXIC_SPIKES, sourceId, side, 2); this.neutralized = false; } @@ -867,7 +867,7 @@ class ToxicSpikesTag extends ArenaTrapTag { } /** - * Arena Tag class for delayed attacks, such as {@linkcode Moves.FUTURE_SIGHT} or {@linkcode Moves.DOOM_DESIRE}. + * Arena Tag class for delayed attacks, such as {@linkcode MoveId.FUTURE_SIGHT} or {@linkcode MoveId.DOOM_DESIRE}. * Delays the attack's effect by a set amount of turns, usually 3 (including the turn the move is used), * and deals damage after the turn count is reached. */ @@ -876,7 +876,7 @@ export class DelayedAttackTag extends ArenaTag { constructor( tagType: ArenaTagType, - sourceMove: Moves | undefined, + sourceMove: MoveId | undefined, sourceId: number, targetIndex: BattlerIndex, side: ArenaTagSide = ArenaTagSide.BOTH, @@ -909,7 +909,7 @@ export class DelayedAttackTag extends ArenaTag { */ class StealthRockTag extends ArenaTrapTag { constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.STEALTH_ROCK, Moves.STEALTH_ROCK, sourceId, side, 1); + super(ArenaTagType.STEALTH_ROCK, MoveId.STEALTH_ROCK, sourceId, side, 1); } onAdd(arena: Arena, quiet = false): void { @@ -994,7 +994,7 @@ class StealthRockTag extends ArenaTrapTag { */ class StickyWebTag extends ArenaTrapTag { constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.STICKY_WEB, Moves.STICKY_WEB, sourceId, side, 1); + super(ArenaTagType.STICKY_WEB, MoveId.STICKY_WEB, sourceId, side, 1); } onAdd(arena: Arena, quiet = false): void { @@ -1055,7 +1055,7 @@ class StickyWebTag extends ArenaTrapTag { */ export class TrickRoomTag extends ArenaTag { constructor(turnCount: number, sourceId: number) { - super(ArenaTagType.TRICK_ROOM, turnCount, Moves.TRICK_ROOM, sourceId); + super(ArenaTagType.TRICK_ROOM, turnCount, MoveId.TRICK_ROOM, sourceId); } /** @@ -1090,11 +1090,11 @@ export class TrickRoomTag extends ArenaTag { /** * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Gravity_(move) Gravity}. * Grounds all Pokémon on the field, including Flying-types and those with - * {@linkcode Abilities.LEVITATE} for the duration of the arena tag, usually 5 turns. + * {@linkcode AbilityId.LEVITATE} for the duration of the arena tag, usually 5 turns. */ export class GravityTag extends ArenaTag { constructor(turnCount: number) { - super(ArenaTagType.GRAVITY, turnCount, Moves.GRAVITY); + super(ArenaTagType.GRAVITY, turnCount, MoveId.GRAVITY); } onAdd(_arena: Arena): void { @@ -1122,7 +1122,7 @@ export class GravityTag extends ArenaTag { */ class TailwindTag extends ArenaTag { constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.TAILWIND, turnCount, Moves.TAILWIND, sourceId, side); + super(ArenaTagType.TAILWIND, turnCount, MoveId.TAILWIND, sourceId, side); } onAdd(_arena: Arena, quiet = false): void { @@ -1139,7 +1139,7 @@ class TailwindTag extends ArenaTag { for (const pokemon of party) { // Apply the CHARGED tag to party members with the WIND_POWER ability - if (pokemon.hasAbility(Abilities.WIND_POWER) && !pokemon.getTag(BattlerTagType.CHARGED)) { + if (pokemon.hasAbility(AbilityId.WIND_POWER) && !pokemon.getTag(BattlerTagType.CHARGED)) { pokemon.addTag(BattlerTagType.CHARGED); globalScene.queueMessage( i18next.t("abilityTriggers:windPowerCharged", { @@ -1150,7 +1150,7 @@ class TailwindTag extends ArenaTag { } // Raise attack by one stage if party member has WIND_RIDER ability // TODO: Ability displays should be handled by the ability - if (pokemon.hasAbility(Abilities.WIND_RIDER)) { + if (pokemon.hasAbility(AbilityId.WIND_RIDER)) { globalScene.queueAbilityDisplay(pokemon, false, true); globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.ATK], 1, true)); globalScene.queueAbilityDisplay(pokemon, false, false); @@ -1171,11 +1171,11 @@ class TailwindTag extends ArenaTag { /** * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Happy_Hour_(move) Happy Hour}. - * Doubles the prize money from trainers and money moves like {@linkcode Moves.PAY_DAY} and {@linkcode Moves.MAKE_IT_RAIN}. + * Doubles the prize money from trainers and money moves like {@linkcode MoveId.PAY_DAY} and {@linkcode MoveId.MAKE_IT_RAIN}. */ class HappyHourTag extends ArenaTag { constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.HAPPY_HOUR, turnCount, Moves.HAPPY_HOUR, sourceId, side); + super(ArenaTagType.HAPPY_HOUR, turnCount, MoveId.HAPPY_HOUR, sourceId, side); } onAdd(_arena: Arena): void { @@ -1189,7 +1189,7 @@ class HappyHourTag extends ArenaTag { class SafeguardTag extends ArenaTag { constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.SAFEGUARD, turnCount, Moves.SAFEGUARD, sourceId, side); + super(ArenaTagType.SAFEGUARD, turnCount, MoveId.SAFEGUARD, sourceId, side); } onAdd(_arena: Arena): void { @@ -1221,7 +1221,7 @@ class NoneTag extends ArenaTag { */ class ImprisonTag extends ArenaTrapTag { constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.IMPRISON, Moves.IMPRISON, sourceId, side, 1); + super(ArenaTagType.IMPRISON, MoveId.IMPRISON, sourceId, side, 1); } /** @@ -1234,7 +1234,7 @@ class ImprisonTag extends ArenaTrapTag { const party = this.getAffectedPokemon(); party?.forEach((p: Pokemon) => { if (p.isAllowedInBattle()) { - p.addTag(BattlerTagType.IMPRISON, 1, Moves.IMPRISON, this.sourceId); + p.addTag(BattlerTagType.IMPRISON, 1, MoveId.IMPRISON, this.sourceId); } }); globalScene.queueMessage( @@ -1263,7 +1263,7 @@ class ImprisonTag extends ArenaTrapTag { override activateTrap(pokemon: Pokemon): boolean { const source = this.getSourcePokemon(); if (source?.isActive(true) && pokemon.isAllowedInBattle()) { - pokemon.addTag(BattlerTagType.IMPRISON, 1, Moves.IMPRISON, this.sourceId); + pokemon.addTag(BattlerTagType.IMPRISON, 1, MoveId.IMPRISON, this.sourceId); } return true; } @@ -1289,7 +1289,7 @@ class ImprisonTag extends ArenaTrapTag { */ class FireGrassPledgeTag extends ArenaTag { constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.FIRE_GRASS_PLEDGE, 4, Moves.FIRE_PLEDGE, sourceId, side); + super(ArenaTagType.FIRE_GRASS_PLEDGE, 4, MoveId.FIRE_PLEDGE, sourceId, side); } override onAdd(_arena: Arena): void { @@ -1334,7 +1334,7 @@ class FireGrassPledgeTag extends ArenaTag { */ class WaterFirePledgeTag extends ArenaTag { constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.WATER_FIRE_PLEDGE, 4, Moves.WATER_PLEDGE, sourceId, side); + super(ArenaTagType.WATER_FIRE_PLEDGE, 4, MoveId.WATER_PLEDGE, sourceId, side); } override onAdd(_arena: Arena): void { @@ -1368,7 +1368,7 @@ class WaterFirePledgeTag extends ArenaTag { */ class GrassWaterPledgeTag extends ArenaTag { constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.GRASS_WATER_PLEDGE, 4, Moves.GRASS_PLEDGE, sourceId, side); + super(ArenaTagType.GRASS_WATER_PLEDGE, 4, MoveId.GRASS_PLEDGE, sourceId, side); } override onAdd(_arena: Arena): void { @@ -1390,7 +1390,7 @@ class GrassWaterPledgeTag extends ArenaTag { */ export class FairyLockTag extends ArenaTag { constructor(turnCount: number, sourceId: number) { - super(ArenaTagType.FAIRY_LOCK, turnCount, Moves.FAIRY_LOCK, sourceId); + super(ArenaTagType.FAIRY_LOCK, turnCount, MoveId.FAIRY_LOCK, sourceId); } onAdd(_arena: Arena): void { @@ -1485,7 +1485,7 @@ export class SuppressAbilitiesTag extends ArenaTag { export function getArenaTag( tagType: ArenaTagType, turnCount: number, - sourceMove: Moves | undefined, + sourceMove: MoveId | undefined, sourceId: number, targetIndex?: BattlerIndex, side: ArenaTagSide = ArenaTagSide.BOTH, diff --git a/src/data/balance/biomes.ts b/src/data/balance/biomes.ts index 968164c7902..713ab9637ab 100644 --- a/src/data/balance/biomes.ts +++ b/src/data/balance/biomes.ts @@ -3,30 +3,30 @@ import { randSeedInt, getEnumValues } from "#app/utils/common"; import type { SpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; import i18next from "i18next"; -import { Biome } from "#enums/biome"; -import { Species } from "#enums/species"; +import { BiomeId } from "#enums/biome-id"; +import { SpeciesId } from "#enums/species-id"; import { TimeOfDay } from "#enums/time-of-day"; import { TrainerType } from "#enums/trainer-type"; // import beautify from "json-beautify"; -export function getBiomeName(biome: Biome | -1) { +export function getBiomeName(biome: BiomeId | -1) { if (biome === -1) { return i18next.t("biome:unknownLocation"); } switch (biome) { - case Biome.GRASS: + case BiomeId.GRASS: return i18next.t("biome:GRASS"); - case Biome.RUINS: + case BiomeId.RUINS: return i18next.t("biome:RUINS"); - case Biome.END: + case BiomeId.END: return i18next.t("biome:END"); default: - return i18next.t(`biome:${Biome[biome].toUpperCase()}`); + return i18next.t(`biome:${BiomeId[biome].toUpperCase()}`); } } interface BiomeLinks { - [key: number]: Biome | (Biome | [Biome, number])[] + [key: number]: BiomeId | (BiomeId | [BiomeId, number])[] } interface BiomeDepths { @@ -34,40 +34,40 @@ interface BiomeDepths { } export const biomeLinks: BiomeLinks = { - [Biome.TOWN]: Biome.PLAINS, - [Biome.PLAINS]: [ Biome.GRASS, Biome.METROPOLIS, Biome.LAKE ], - [Biome.GRASS]: Biome.TALL_GRASS, - [Biome.TALL_GRASS]: [ Biome.FOREST, Biome.CAVE ], - [Biome.SLUM]: [ Biome.CONSTRUCTION_SITE, [ Biome.SWAMP, 2 ]], - [Biome.FOREST]: [ Biome.JUNGLE, Biome.MEADOW ], - [Biome.SEA]: [ Biome.SEABED, Biome.ICE_CAVE ], - [Biome.SWAMP]: [ Biome.GRAVEYARD, Biome.TALL_GRASS ], - [Biome.BEACH]: [ Biome.SEA, [ Biome.ISLAND, 2 ]], - [Biome.LAKE]: [ Biome.BEACH, Biome.SWAMP, Biome.CONSTRUCTION_SITE ], - [Biome.SEABED]: [ Biome.CAVE, [ Biome.VOLCANO, 3 ]], - [Biome.MOUNTAIN]: [ Biome.VOLCANO, [ Biome.WASTELAND, 2 ], [ Biome.SPACE, 3 ]], - [Biome.BADLANDS]: [ Biome.DESERT, Biome.MOUNTAIN ], - [Biome.CAVE]: [ Biome.BADLANDS, Biome.LAKE, [ Biome.LABORATORY, 2 ]], - [Biome.DESERT]: [ Biome.RUINS, [ Biome.CONSTRUCTION_SITE, 2 ]], - [Biome.ICE_CAVE]: Biome.SNOWY_FOREST, - [Biome.MEADOW]: [ Biome.PLAINS, Biome.FAIRY_CAVE ], - [Biome.POWER_PLANT]: Biome.FACTORY, - [Biome.VOLCANO]: [ Biome.BEACH, [ Biome.ICE_CAVE, 3 ]], - [Biome.GRAVEYARD]: Biome.ABYSS, - [Biome.DOJO]: [ Biome.PLAINS, [ Biome.JUNGLE, 2 ], [ Biome.TEMPLE, 2 ]], - [Biome.FACTORY]: [ Biome.PLAINS, [ Biome.LABORATORY, 2 ]], - [Biome.RUINS]: [ Biome.MOUNTAIN, [ Biome.FOREST, 2 ]], - [Biome.WASTELAND]: Biome.BADLANDS, - [Biome.ABYSS]: [ Biome.CAVE, [ Biome.SPACE, 2 ], [ Biome.WASTELAND, 2 ]], - [Biome.SPACE]: Biome.RUINS, - [Biome.CONSTRUCTION_SITE]: [ Biome.POWER_PLANT, [ Biome.DOJO, 2 ]], - [Biome.JUNGLE]: [ Biome.TEMPLE ], - [Biome.FAIRY_CAVE]: [ Biome.ICE_CAVE, [ Biome.SPACE, 2 ]], - [Biome.TEMPLE]: [ Biome.DESERT, [ Biome.SWAMP, 2 ], [ Biome.RUINS, 2 ]], - [Biome.METROPOLIS]: Biome.SLUM, - [Biome.SNOWY_FOREST]: [ Biome.FOREST, [ Biome.MOUNTAIN, 2 ], [ Biome.LAKE, 2 ]], - [Biome.ISLAND]: Biome.SEA, - [Biome.LABORATORY]: Biome.CONSTRUCTION_SITE + [BiomeId.TOWN]: BiomeId.PLAINS, + [BiomeId.PLAINS]: [ BiomeId.GRASS, BiomeId.METROPOLIS, BiomeId.LAKE ], + [BiomeId.GRASS]: BiomeId.TALL_GRASS, + [BiomeId.TALL_GRASS]: [ BiomeId.FOREST, BiomeId.CAVE ], + [BiomeId.SLUM]: [ BiomeId.CONSTRUCTION_SITE, [ BiomeId.SWAMP, 2 ]], + [BiomeId.FOREST]: [ BiomeId.JUNGLE, BiomeId.MEADOW ], + [BiomeId.SEA]: [ BiomeId.SEABED, BiomeId.ICE_CAVE ], + [BiomeId.SWAMP]: [ BiomeId.GRAVEYARD, BiomeId.TALL_GRASS ], + [BiomeId.BEACH]: [ BiomeId.SEA, [ BiomeId.ISLAND, 2 ]], + [BiomeId.LAKE]: [ BiomeId.BEACH, BiomeId.SWAMP, BiomeId.CONSTRUCTION_SITE ], + [BiomeId.SEABED]: [ BiomeId.CAVE, [ BiomeId.VOLCANO, 3 ]], + [BiomeId.MOUNTAIN]: [ BiomeId.VOLCANO, [ BiomeId.WASTELAND, 2 ], [ BiomeId.SPACE, 3 ]], + [BiomeId.BADLANDS]: [ BiomeId.DESERT, BiomeId.MOUNTAIN ], + [BiomeId.CAVE]: [ BiomeId.BADLANDS, BiomeId.LAKE, [ BiomeId.LABORATORY, 2 ]], + [BiomeId.DESERT]: [ BiomeId.RUINS, [ BiomeId.CONSTRUCTION_SITE, 2 ]], + [BiomeId.ICE_CAVE]: BiomeId.SNOWY_FOREST, + [BiomeId.MEADOW]: [ BiomeId.PLAINS, BiomeId.FAIRY_CAVE ], + [BiomeId.POWER_PLANT]: BiomeId.FACTORY, + [BiomeId.VOLCANO]: [ BiomeId.BEACH, [ BiomeId.ICE_CAVE, 3 ]], + [BiomeId.GRAVEYARD]: BiomeId.ABYSS, + [BiomeId.DOJO]: [ BiomeId.PLAINS, [ BiomeId.JUNGLE, 2 ], [ BiomeId.TEMPLE, 2 ]], + [BiomeId.FACTORY]: [ BiomeId.PLAINS, [ BiomeId.LABORATORY, 2 ]], + [BiomeId.RUINS]: [ BiomeId.MOUNTAIN, [ BiomeId.FOREST, 2 ]], + [BiomeId.WASTELAND]: BiomeId.BADLANDS, + [BiomeId.ABYSS]: [ BiomeId.CAVE, [ BiomeId.SPACE, 2 ], [ BiomeId.WASTELAND, 2 ]], + [BiomeId.SPACE]: BiomeId.RUINS, + [BiomeId.CONSTRUCTION_SITE]: [ BiomeId.POWER_PLANT, [ BiomeId.DOJO, 2 ]], + [BiomeId.JUNGLE]: [ BiomeId.TEMPLE ], + [BiomeId.FAIRY_CAVE]: [ BiomeId.ICE_CAVE, [ BiomeId.SPACE, 2 ]], + [BiomeId.TEMPLE]: [ BiomeId.DESERT, [ BiomeId.SWAMP, 2 ], [ BiomeId.RUINS, 2 ]], + [BiomeId.METROPOLIS]: BiomeId.SLUM, + [BiomeId.SNOWY_FOREST]: [ BiomeId.FOREST, [ BiomeId.MOUNTAIN, 2 ], [ BiomeId.LAKE, 2 ]], + [BiomeId.ISLAND]: BiomeId.SEA, + [BiomeId.LABORATORY]: BiomeId.CONSTRUCTION_SITE }; export const biomeDepths: BiomeDepths = {}; @@ -84,14 +84,14 @@ export enum BiomePoolTier { BOSS_ULTRA_RARE } -export const uncatchableSpecies: Species[] = []; +export const uncatchableSpecies: SpeciesId[] = []; export interface SpeciesTree { - [key: number]: Species[] + [key: number]: SpeciesId[] } export interface PokemonPools { - [key: number]: (Species | SpeciesTree)[] + [key: number]: (SpeciesId | SpeciesTree)[] } export interface BiomeTierPokemonPools { @@ -103,7 +103,7 @@ export interface BiomePokemonPools { } export interface BiomeTierTod { - biome: Biome, + biome: BiomeId, tier: BiomePoolTier, tod: TimeOfDay[] } @@ -123,125 +123,125 @@ export interface BiomeTrainerPools { } export const biomePokemonPools: BiomePokemonPools = { - [Biome.TOWN]: { + [BiomeId.TOWN]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [ - { 1: [ Species.CATERPIE ], 7: [ Species.METAPOD ]}, - Species.SENTRET, - Species.LEDYBA, - Species.HOPPIP, - Species.SUNKERN, - Species.STARLY, - Species.PIDOVE, - Species.COTTONEE, - { 1: [ Species.SCATTERBUG ], 9: [ Species.SPEWPA ]}, - Species.YUNGOOS, - Species.SKWOVET + { 1: [ SpeciesId.CATERPIE ], 7: [ SpeciesId.METAPOD ]}, + SpeciesId.SENTRET, + SpeciesId.LEDYBA, + SpeciesId.HOPPIP, + SpeciesId.SUNKERN, + SpeciesId.STARLY, + SpeciesId.PIDOVE, + SpeciesId.COTTONEE, + { 1: [ SpeciesId.SCATTERBUG ], 9: [ SpeciesId.SPEWPA ]}, + SpeciesId.YUNGOOS, + SpeciesId.SKWOVET ], [TimeOfDay.DAY]: [ - { 1: [ Species.CATERPIE ], 7: [ Species.METAPOD ]}, - Species.SENTRET, - Species.HOPPIP, - Species.SUNKERN, - Species.SILCOON, - Species.STARLY, - Species.PIDOVE, - Species.COTTONEE, - { 1: [ Species.SCATTERBUG ], 9: [ Species.SPEWPA ]}, - Species.YUNGOOS, - Species.SKWOVET + { 1: [ SpeciesId.CATERPIE ], 7: [ SpeciesId.METAPOD ]}, + SpeciesId.SENTRET, + SpeciesId.HOPPIP, + SpeciesId.SUNKERN, + SpeciesId.SILCOON, + SpeciesId.STARLY, + SpeciesId.PIDOVE, + SpeciesId.COTTONEE, + { 1: [ SpeciesId.SCATTERBUG ], 9: [ SpeciesId.SPEWPA ]}, + SpeciesId.YUNGOOS, + SpeciesId.SKWOVET ], - [TimeOfDay.DUSK]: [{ 1: [ Species.WEEDLE ], 7: [ Species.KAKUNA ]}, Species.POOCHYENA, Species.PATRAT, Species.PURRLOIN, Species.BLIPBUG ], - [TimeOfDay.NIGHT]: [{ 1: [ Species.WEEDLE ], 7: [ Species.KAKUNA ]}, Species.HOOTHOOT, Species.SPINARAK, Species.POOCHYENA, Species.CASCOON, Species.PATRAT, Species.PURRLOIN, Species.BLIPBUG ], - [TimeOfDay.ALL]: [ Species.PIDGEY, Species.RATTATA, Species.SPEAROW, Species.ZIGZAGOON, Species.WURMPLE, Species.TAILLOW, Species.BIDOOF, Species.LILLIPUP, Species.FLETCHLING, Species.WOOLOO, Species.LECHONK ] + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.WEEDLE ], 7: [ SpeciesId.KAKUNA ]}, SpeciesId.POOCHYENA, SpeciesId.PATRAT, SpeciesId.PURRLOIN, SpeciesId.BLIPBUG ], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.WEEDLE ], 7: [ SpeciesId.KAKUNA ]}, SpeciesId.HOOTHOOT, SpeciesId.SPINARAK, SpeciesId.POOCHYENA, SpeciesId.CASCOON, SpeciesId.PATRAT, SpeciesId.PURRLOIN, SpeciesId.BLIPBUG ], + [TimeOfDay.ALL]: [ SpeciesId.PIDGEY, SpeciesId.RATTATA, SpeciesId.SPEAROW, SpeciesId.ZIGZAGOON, SpeciesId.WURMPLE, SpeciesId.TAILLOW, SpeciesId.BIDOOF, SpeciesId.LILLIPUP, SpeciesId.FLETCHLING, SpeciesId.WOOLOO, SpeciesId.LECHONK ] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [ Species.BELLSPROUT, Species.POOCHYENA, Species.LOTAD, Species.SKITTY, Species.COMBEE, Species.CHERUBI, Species.PATRAT, Species.MINCCINO, Species.PAWMI ], - [TimeOfDay.DAY]: [ Species.NIDORAN_F, Species.NIDORAN_M, Species.BELLSPROUT, Species.POOCHYENA, Species.LOTAD, Species.SKITTY, Species.COMBEE, Species.CHERUBI, Species.PATRAT, Species.MINCCINO, Species.PAWMI ], - [TimeOfDay.DUSK]: [ Species.EKANS, Species.ODDISH, Species.MEOWTH, Species.SPINARAK, Species.SEEDOT, Species.SHROOMISH, Species.KRICKETOT, Species.VENIPEDE ], - [TimeOfDay.NIGHT]: [ Species.EKANS, Species.ODDISH, Species.PARAS, Species.VENONAT, Species.MEOWTH, Species.SEEDOT, Species.SHROOMISH, Species.KRICKETOT, Species.VENIPEDE ], - [TimeOfDay.ALL]: [ Species.NINCADA, Species.WHISMUR, Species.FIDOUGH ] + [TimeOfDay.DAWN]: [ SpeciesId.BELLSPROUT, SpeciesId.POOCHYENA, SpeciesId.LOTAD, SpeciesId.SKITTY, SpeciesId.COMBEE, SpeciesId.CHERUBI, SpeciesId.PATRAT, SpeciesId.MINCCINO, SpeciesId.PAWMI ], + [TimeOfDay.DAY]: [ SpeciesId.NIDORAN_F, SpeciesId.NIDORAN_M, SpeciesId.BELLSPROUT, SpeciesId.POOCHYENA, SpeciesId.LOTAD, SpeciesId.SKITTY, SpeciesId.COMBEE, SpeciesId.CHERUBI, SpeciesId.PATRAT, SpeciesId.MINCCINO, SpeciesId.PAWMI ], + [TimeOfDay.DUSK]: [ SpeciesId.EKANS, SpeciesId.ODDISH, SpeciesId.MEOWTH, SpeciesId.SPINARAK, SpeciesId.SEEDOT, SpeciesId.SHROOMISH, SpeciesId.KRICKETOT, SpeciesId.VENIPEDE ], + [TimeOfDay.NIGHT]: [ SpeciesId.EKANS, SpeciesId.ODDISH, SpeciesId.PARAS, SpeciesId.VENONAT, SpeciesId.MEOWTH, SpeciesId.SEEDOT, SpeciesId.SHROOMISH, SpeciesId.KRICKETOT, SpeciesId.VENIPEDE ], + [TimeOfDay.ALL]: [ SpeciesId.NINCADA, SpeciesId.WHISMUR, SpeciesId.FIDOUGH ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [ Species.TANDEMAUS ], [TimeOfDay.DAY]: [ Species.TANDEMAUS ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ABRA, Species.SURSKIT, Species.ROOKIDEE ]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.EEVEE, Species.RALTS ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DITTO ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.TANDEMAUS ], [TimeOfDay.DAY]: [ SpeciesId.TANDEMAUS ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ABRA, SpeciesId.SURSKIT, SpeciesId.ROOKIDEE ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.EEVEE, SpeciesId.RALTS ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO ]}, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} }, - [Biome.PLAINS]: { + [BiomeId.PLAINS]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.SENTRET ], 15: [ Species.FURRET ]}, { 1: [ Species.YUNGOOS ], 30: [ Species.GUMSHOOS ]}, { 1: [ Species.SKWOVET ], 24: [ Species.GREEDENT ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.SENTRET ], 15: [ Species.FURRET ]}, { 1: [ Species.YUNGOOS ], 30: [ Species.GUMSHOOS ]}, { 1: [ Species.SKWOVET ], 24: [ Species.GREEDENT ]}], - [TimeOfDay.DUSK]: [{ 1: [ Species.MEOWTH ], 28: [ Species.PERSIAN ]}, { 1: [ Species.POOCHYENA ], 18: [ Species.MIGHTYENA ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.ZUBAT ], 22: [ Species.GOLBAT ]}, { 1: [ Species.MEOWTH ], 28: [ Species.PERSIAN ]}, { 1: [ Species.POOCHYENA ], 18: [ Species.MIGHTYENA ]}], - [TimeOfDay.ALL]: [{ 1: [ Species.ZIGZAGOON ], 20: [ Species.LINOONE ]}, { 1: [ Species.BIDOOF ], 15: [ Species.BIBAREL ]}, { 1: [ Species.LECHONK ], 18: [ Species.OINKOLOGNE ]}] + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.SENTRET ], 15: [ SpeciesId.FURRET ]}, { 1: [ SpeciesId.YUNGOOS ], 30: [ SpeciesId.GUMSHOOS ]}, { 1: [ SpeciesId.SKWOVET ], 24: [ SpeciesId.GREEDENT ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.SENTRET ], 15: [ SpeciesId.FURRET ]}, { 1: [ SpeciesId.YUNGOOS ], 30: [ SpeciesId.GUMSHOOS ]}, { 1: [ SpeciesId.SKWOVET ], 24: [ SpeciesId.GREEDENT ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.MEOWTH ], 28: [ SpeciesId.PERSIAN ]}, { 1: [ SpeciesId.POOCHYENA ], 18: [ SpeciesId.MIGHTYENA ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.ZUBAT ], 22: [ SpeciesId.GOLBAT ]}, { 1: [ SpeciesId.MEOWTH ], 28: [ SpeciesId.PERSIAN ]}, { 1: [ SpeciesId.POOCHYENA ], 18: [ SpeciesId.MIGHTYENA ]}], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.ZIGZAGOON ], 20: [ SpeciesId.LINOONE ]}, { 1: [ SpeciesId.BIDOOF ], 15: [ SpeciesId.BIBAREL ]}, { 1: [ SpeciesId.LECHONK ], 18: [ SpeciesId.OINKOLOGNE ]}] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [ - { 1: [ Species.DODUO ], 31: [ Species.DODRIO ]}, - { 1: [ Species.POOCHYENA ], 18: [ Species.MIGHTYENA ]}, - { 1: [ Species.STARLY ], 14: [ Species.STARAVIA ], 34: [ Species.STARAPTOR ]}, - { 1: [ Species.PIDOVE ], 21: [ Species.TRANQUILL ], 32: [ Species.UNFEZANT ]}, - { 1: [ Species.PAWMI ], 18: [ Species.PAWMO ], 32: [ Species.PAWMOT ]} + { 1: [ SpeciesId.DODUO ], 31: [ SpeciesId.DODRIO ]}, + { 1: [ SpeciesId.POOCHYENA ], 18: [ SpeciesId.MIGHTYENA ]}, + { 1: [ SpeciesId.STARLY ], 14: [ SpeciesId.STARAVIA ], 34: [ SpeciesId.STARAPTOR ]}, + { 1: [ SpeciesId.PIDOVE ], 21: [ SpeciesId.TRANQUILL ], 32: [ SpeciesId.UNFEZANT ]}, + { 1: [ SpeciesId.PAWMI ], 18: [ SpeciesId.PAWMO ], 32: [ SpeciesId.PAWMOT ]} ], [TimeOfDay.DAY]: [ - { 1: [ Species.DODUO ], 31: [ Species.DODRIO ]}, - { 1: [ Species.POOCHYENA ], 18: [ Species.MIGHTYENA ]}, - { 1: [ Species.STARLY ], 14: [ Species.STARAVIA ], 34: [ Species.STARAPTOR ]}, - { 1: [ Species.PIDOVE ], 21: [ Species.TRANQUILL ], 32: [ Species.UNFEZANT ]}, - { 1: [ Species.ROCKRUFF ], 25: [ Species.LYCANROC ]}, - { 1: [ Species.PAWMI ], 18: [ Species.PAWMO ], 32: [ Species.PAWMOT ]} + { 1: [ SpeciesId.DODUO ], 31: [ SpeciesId.DODRIO ]}, + { 1: [ SpeciesId.POOCHYENA ], 18: [ SpeciesId.MIGHTYENA ]}, + { 1: [ SpeciesId.STARLY ], 14: [ SpeciesId.STARAVIA ], 34: [ SpeciesId.STARAPTOR ]}, + { 1: [ SpeciesId.PIDOVE ], 21: [ SpeciesId.TRANQUILL ], 32: [ SpeciesId.UNFEZANT ]}, + { 1: [ SpeciesId.ROCKRUFF ], 25: [ SpeciesId.LYCANROC ]}, + { 1: [ SpeciesId.PAWMI ], 18: [ SpeciesId.PAWMO ], 32: [ SpeciesId.PAWMOT ]} ], - [TimeOfDay.DUSK]: [{ 1: [ Species.MANKEY ], 28: [ Species.PRIMEAPE ], 75: [ Species.ANNIHILAPE ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.MANKEY ], 28: [ Species.PRIMEAPE ], 75: [ Species.ANNIHILAPE ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.MANKEY ], 28: [ SpeciesId.PRIMEAPE ], 75: [ SpeciesId.ANNIHILAPE ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.MANKEY ], 28: [ SpeciesId.PRIMEAPE ], 75: [ SpeciesId.ANNIHILAPE ]}], [TimeOfDay.ALL]: [ - { 1: [ Species.PIDGEY ], 18: [ Species.PIDGEOTTO ], 36: [ Species.PIDGEOT ]}, - { 1: [ Species.SPEAROW ], 20: [ Species.FEAROW ]}, - Species.PIKACHU, - { 1: [ Species.FLETCHLING ], 17: [ Species.FLETCHINDER ], 35: [ Species.TALONFLAME ]} + { 1: [ SpeciesId.PIDGEY ], 18: [ SpeciesId.PIDGEOTTO ], 36: [ SpeciesId.PIDGEOT ]}, + { 1: [ SpeciesId.SPEAROW ], 20: [ SpeciesId.FEAROW ]}, + SpeciesId.PIKACHU, + { 1: [ SpeciesId.FLETCHLING ], 17: [ SpeciesId.FLETCHINDER ], 35: [ SpeciesId.TALONFLAME ]} ] }, [BiomePoolTier.RARE]: { - [TimeOfDay.DAWN]: [ Species.PALDEA_TAUROS ], - [TimeOfDay.DAY]: [ Species.PALDEA_TAUROS ], - [TimeOfDay.DUSK]: [{ 1: [ Species.SHINX ], 15: [ Species.LUXIO ], 30: [ Species.LUXRAY ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.SHINX ], 15: [ Species.LUXIO ], 30: [ Species.LUXRAY ]}], - [TimeOfDay.ALL]: [{ 1: [ Species.ABRA ], 16: [ Species.KADABRA ]}, { 1: [ Species.BUNEARY ], 20: [ Species.LOPUNNY ]}, { 1: [ Species.ROOKIDEE ], 18: [ Species.CORVISQUIRE ], 38: [ Species.CORVIKNIGHT ]}] + [TimeOfDay.DAWN]: [ SpeciesId.PALDEA_TAUROS ], + [TimeOfDay.DAY]: [ SpeciesId.PALDEA_TAUROS ], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.SHINX ], 15: [ SpeciesId.LUXIO ], 30: [ SpeciesId.LUXRAY ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.SHINX ], 15: [ SpeciesId.LUXIO ], 30: [ SpeciesId.LUXRAY ]}], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.ABRA ], 16: [ SpeciesId.KADABRA ]}, { 1: [ SpeciesId.BUNEARY ], 20: [ SpeciesId.LOPUNNY ]}, { 1: [ SpeciesId.ROOKIDEE ], 18: [ SpeciesId.CORVISQUIRE ], 38: [ SpeciesId.CORVIKNIGHT ]}] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.FARFETCHD, Species.LICKITUNG, Species.CHANSEY, Species.EEVEE, Species.SNORLAX, { 1: [ Species.DUNSPARCE ], 62: [ Species.DUDUNSPARCE ]}]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DITTO, Species.LATIAS, Species.LATIOS ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.FARFETCHD, SpeciesId.LICKITUNG, SpeciesId.CHANSEY, SpeciesId.EEVEE, SpeciesId.SNORLAX, { 1: [ SpeciesId.DUNSPARCE ], 62: [ SpeciesId.DUDUNSPARCE ]}]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO, SpeciesId.LATIAS, SpeciesId.LATIOS ]}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.DODRIO, Species.FURRET, Species.GUMSHOOS, Species.GREEDENT ], - [TimeOfDay.DAY]: [ Species.DODRIO, Species.FURRET, Species.GUMSHOOS, Species.GREEDENT ], - [TimeOfDay.DUSK]: [ Species.PERSIAN, Species.MIGHTYENA ], - [TimeOfDay.NIGHT]: [ Species.PERSIAN, Species.MIGHTYENA ], - [TimeOfDay.ALL]: [ Species.LINOONE, Species.BIBAREL, Species.LOPUNNY, Species.OINKOLOGNE ] + [TimeOfDay.DAWN]: [ SpeciesId.DODRIO, SpeciesId.FURRET, SpeciesId.GUMSHOOS, SpeciesId.GREEDENT ], + [TimeOfDay.DAY]: [ SpeciesId.DODRIO, SpeciesId.FURRET, SpeciesId.GUMSHOOS, SpeciesId.GREEDENT ], + [TimeOfDay.DUSK]: [ SpeciesId.PERSIAN, SpeciesId.MIGHTYENA ], + [TimeOfDay.NIGHT]: [ SpeciesId.PERSIAN, SpeciesId.MIGHTYENA ], + [TimeOfDay.ALL]: [ SpeciesId.LINOONE, SpeciesId.BIBAREL, SpeciesId.LOPUNNY, SpeciesId.OINKOLOGNE ] }, [BiomePoolTier.BOSS_RARE]: { - [TimeOfDay.DAWN]: [ Species.PAWMOT, Species.PALDEA_TAUROS ], - [TimeOfDay.DAY]: [ Species.LYCANROC, Species.PAWMOT, Species.PALDEA_TAUROS ], + [TimeOfDay.DAWN]: [ SpeciesId.PAWMOT, SpeciesId.PALDEA_TAUROS ], + [TimeOfDay.DAY]: [ SpeciesId.LYCANROC, SpeciesId.PAWMOT, SpeciesId.PALDEA_TAUROS ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.FARFETCHD, Species.SNORLAX, Species.LICKILICKY, Species.DUDUNSPARCE ] + [TimeOfDay.ALL]: [ SpeciesId.FARFETCHD, SpeciesId.SNORLAX, SpeciesId.LICKILICKY, SpeciesId.DUDUNSPARCE ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.LATIAS, Species.LATIOS ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.LATIAS, SpeciesId.LATIOS ]}, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} }, - [Biome.GRASS]: { + [BiomeId.GRASS]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.HOPPIP ], 18: [ Species.SKIPLOOM ]}, Species.SUNKERN, Species.COTTONEE, Species.PETILIL ], - [TimeOfDay.DAY]: [{ 1: [ Species.HOPPIP ], 18: [ Species.SKIPLOOM ]}, Species.SUNKERN, Species.COTTONEE, Species.PETILIL ], - [TimeOfDay.DUSK]: [{ 1: [ Species.SEEDOT ], 14: [ Species.NUZLEAF ]}, { 1: [ Species.SHROOMISH ], 23: [ Species.BRELOOM ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.SEEDOT ], 14: [ Species.NUZLEAF ]}, { 1: [ Species.SHROOMISH ], 23: [ Species.BRELOOM ]}], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.HOPPIP ], 18: [ SpeciesId.SKIPLOOM ]}, SpeciesId.SUNKERN, SpeciesId.COTTONEE, SpeciesId.PETILIL ], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.HOPPIP ], 18: [ SpeciesId.SKIPLOOM ]}, SpeciesId.SUNKERN, SpeciesId.COTTONEE, SpeciesId.PETILIL ], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.SEEDOT ], 14: [ SpeciesId.NUZLEAF ]}, { 1: [ SpeciesId.SHROOMISH ], 23: [ SpeciesId.BRELOOM ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.SEEDOT ], 14: [ SpeciesId.NUZLEAF ]}, { 1: [ SpeciesId.SHROOMISH ], 23: [ SpeciesId.BRELOOM ]}], [TimeOfDay.ALL]: [] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.COMBEE ], 21: [ Species.VESPIQUEN ]}, { 1: [ Species.CHERUBI ], 25: [ Species.CHERRIM ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.COMBEE ], 21: [ Species.VESPIQUEN ]}, { 1: [ Species.CHERUBI ], 25: [ Species.CHERRIM ]}], - [TimeOfDay.DUSK]: [{ 1: [ Species.FOONGUS ], 39: [ Species.AMOONGUSS ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.FOONGUS ], 39: [ Species.AMOONGUSS ]}], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.COMBEE ], 21: [ SpeciesId.VESPIQUEN ]}, { 1: [ SpeciesId.CHERUBI ], 25: [ SpeciesId.CHERRIM ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.COMBEE ], 21: [ SpeciesId.VESPIQUEN ]}, { 1: [ SpeciesId.CHERUBI ], 25: [ SpeciesId.CHERRIM ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ]}], [TimeOfDay.ALL]: [] }, [BiomePoolTier.RARE]: { @@ -249,185 +249,185 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ Species.BULBASAUR ], 16: [ Species.IVYSAUR ], 32: [ Species.VENUSAUR ]}, Species.GROWLITHE, { 1: [ Species.TURTWIG ], 18: [ Species.GROTLE ], 32: [ Species.TORTERRA ]}] + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.BULBASAUR ], 16: [ SpeciesId.IVYSAUR ], 32: [ SpeciesId.VENUSAUR ]}, SpeciesId.GROWLITHE, { 1: [ SpeciesId.TURTWIG ], 18: [ SpeciesId.GROTLE ], 32: [ SpeciesId.TORTERRA ]}] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.SUDOWOODO ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.VIRIZION ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ Species.JUMPLUFF, Species.SUNFLORA, Species.WHIMSICOTT ], [TimeOfDay.DAY]: [ Species.JUMPLUFF, Species.SUNFLORA, Species.WHIMSICOTT ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.VENUSAUR, Species.SUDOWOODO, Species.TORTERRA ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.VIRIZION ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SUDOWOODO ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.VIRIZION ]}, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.JUMPLUFF, SpeciesId.SUNFLORA, SpeciesId.WHIMSICOTT ], [TimeOfDay.DAY]: [ SpeciesId.JUMPLUFF, SpeciesId.SUNFLORA, SpeciesId.WHIMSICOTT ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.VENUSAUR, SpeciesId.SUDOWOODO, SpeciesId.TORTERRA ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.VIRIZION ]}, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} }, - [Biome.TALL_GRASS]: { + [BiomeId.TALL_GRASS]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.BOUNSWEET ], 18: [ Species.STEENEE ], 58: [ Species.TSAREENA ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.NIDORAN_F ], 16: [ Species.NIDORINA ]}, { 1: [ Species.NIDORAN_M ], 16: [ Species.NIDORINO ]}, { 1: [ Species.BOUNSWEET ], 18: [ Species.STEENEE ], 58: [ Species.TSAREENA ]}], - [TimeOfDay.DUSK]: [{ 1: [ Species.ODDISH ], 21: [ Species.GLOOM ]}, { 1: [ Species.KRICKETOT ], 10: [ Species.KRICKETUNE ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.ODDISH ], 21: [ Species.GLOOM ]}, { 1: [ Species.KRICKETOT ], 10: [ Species.KRICKETUNE ]}], - [TimeOfDay.ALL]: [{ 1: [ Species.NINCADA ], 20: [ Species.NINJASK ]}, { 1: [ Species.FOMANTIS ], 44: [ Species.LURANTIS ]}, { 1: [ Species.NYMBLE ], 24: [ Species.LOKIX ]}] + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.BOUNSWEET ], 18: [ SpeciesId.STEENEE ], 58: [ SpeciesId.TSAREENA ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.NIDORAN_F ], 16: [ SpeciesId.NIDORINA ]}, { 1: [ SpeciesId.NIDORAN_M ], 16: [ SpeciesId.NIDORINO ]}, { 1: [ SpeciesId.BOUNSWEET ], 18: [ SpeciesId.STEENEE ], 58: [ SpeciesId.TSAREENA ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.ODDISH ], 21: [ SpeciesId.GLOOM ]}, { 1: [ SpeciesId.KRICKETOT ], 10: [ SpeciesId.KRICKETUNE ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.ODDISH ], 21: [ SpeciesId.GLOOM ]}, { 1: [ SpeciesId.KRICKETOT ], 10: [ SpeciesId.KRICKETUNE ]}], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.NINCADA ], 20: [ SpeciesId.NINJASK ]}, { 1: [ SpeciesId.FOMANTIS ], 44: [ SpeciesId.LURANTIS ]}, { 1: [ SpeciesId.NYMBLE ], 24: [ SpeciesId.LOKIX ]}] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], - [TimeOfDay.NIGHT]: [{ 1: [ Species.PARAS ], 24: [ Species.PARASECT ]}, { 1: [ Species.VENONAT ], 31: [ Species.VENOMOTH ]}, { 1: [ Species.SPINARAK ], 22: [ Species.ARIADOS ]}], - [TimeOfDay.ALL]: [ Species.VULPIX ] + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.PARAS ], 24: [ SpeciesId.PARASECT ]}, { 1: [ SpeciesId.VENONAT ], 31: [ SpeciesId.VENOMOTH ]}, { 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ]}], + [TimeOfDay.ALL]: [ SpeciesId.VULPIX ] }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.PINSIR, { 1: [ Species.CHIKORITA ], 16: [ Species.BAYLEEF ], 32: [ Species.MEGANIUM ]}, { 1: [ Species.GIRAFARIG ], 62: [ Species.FARIGIRAF ]}, Species.ZANGOOSE, Species.KECLEON, Species.TROPIUS ] + [TimeOfDay.ALL]: [ SpeciesId.PINSIR, { 1: [ SpeciesId.CHIKORITA ], 16: [ SpeciesId.BAYLEEF ], 32: [ SpeciesId.MEGANIUM ]}, { 1: [ SpeciesId.GIRAFARIG ], 62: [ SpeciesId.FARIGIRAF ]}, SpeciesId.ZANGOOSE, SpeciesId.KECLEON, SpeciesId.TROPIUS ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.SCYTHER, Species.SHEDINJA, Species.ROTOM ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SCYTHER, SpeciesId.SHEDINJA, SpeciesId.ROTOM ]}, [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.TSAREENA ], - [TimeOfDay.DAY]: [ Species.NIDOQUEEN, Species.NIDOKING, Species.TSAREENA ], - [TimeOfDay.DUSK]: [ Species.VILEPLUME, Species.KRICKETUNE ], - [TimeOfDay.NIGHT]: [ Species.VILEPLUME, Species.KRICKETUNE ], - [TimeOfDay.ALL]: [ Species.NINJASK, Species.ZANGOOSE, Species.KECLEON, Species.LURANTIS, Species.LOKIX ] + [TimeOfDay.DAWN]: [ SpeciesId.TSAREENA ], + [TimeOfDay.DAY]: [ SpeciesId.NIDOQUEEN, SpeciesId.NIDOKING, SpeciesId.TSAREENA ], + [TimeOfDay.DUSK]: [ SpeciesId.VILEPLUME, SpeciesId.KRICKETUNE ], + [TimeOfDay.NIGHT]: [ SpeciesId.VILEPLUME, SpeciesId.KRICKETUNE ], + [TimeOfDay.ALL]: [ SpeciesId.NINJASK, SpeciesId.ZANGOOSE, SpeciesId.KECLEON, SpeciesId.LURANTIS, SpeciesId.LOKIX ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ Species.BELLOSSOM ], [TimeOfDay.DAY]: [ Species.BELLOSSOM ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.PINSIR, Species.MEGANIUM, Species.FARIGIRAF ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ROTOM ]}, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.BELLOSSOM ], [TimeOfDay.DAY]: [ SpeciesId.BELLOSSOM ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.PINSIR, SpeciesId.MEGANIUM, SpeciesId.FARIGIRAF ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM ]}, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} }, - [Biome.METROPOLIS]: { + [BiomeId.METROPOLIS]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.YAMPER ], 25: [ Species.BOLTUND ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.YAMPER ], 25: [ Species.BOLTUND ]}], - [TimeOfDay.DUSK]: [{ 1: [ Species.PATRAT ], 20: [ Species.WATCHOG ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.HOUNDOUR ], 24: [ Species.HOUNDOOM ]}, { 1: [ Species.PATRAT ], 20: [ Species.WATCHOG ]}], - [TimeOfDay.ALL]: [{ 1: [ Species.RATTATA ], 20: [ Species.RATICATE ]}, { 1: [ Species.ZIGZAGOON ], 20: [ Species.LINOONE ]}, { 1: [ Species.LILLIPUP ], 16: [ Species.HERDIER ], 32: [ Species.STOUTLAND ]}] + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.YAMPER ], 25: [ SpeciesId.BOLTUND ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.YAMPER ], 25: [ SpeciesId.BOLTUND ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.HOUNDOUR ], 24: [ SpeciesId.HOUNDOOM ]}, { 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ]}], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.RATTATA ], 20: [ SpeciesId.RATICATE ]}, { 1: [ SpeciesId.ZIGZAGOON ], 20: [ SpeciesId.LINOONE ]}, { 1: [ SpeciesId.LILLIPUP ], 16: [ SpeciesId.HERDIER ], 32: [ SpeciesId.STOUTLAND ]}] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.PATRAT ], 20: [ Species.WATCHOG ]}, Species.INDEEDEE ], - [TimeOfDay.DAY]: [{ 1: [ Species.PATRAT ], 20: [ Species.WATCHOG ]}, Species.INDEEDEE ], - [TimeOfDay.DUSK]: [{ 1: [ Species.ESPURR ], 25: [ Species.MEOWSTIC ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.ESPURR ], 25: [ Species.MEOWSTIC ]}], - [TimeOfDay.ALL]: [ Species.PIKACHU, { 1: [ Species.GLAMEOW ], 38: [ Species.PURUGLY ]}, Species.FURFROU, { 1: [ Species.FIDOUGH ], 26: [ Species.DACHSBUN ]}, Species.SQUAWKABILLY ] + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ]}, SpeciesId.INDEEDEE ], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ]}, SpeciesId.INDEEDEE ], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.ESPURR ], 25: [ SpeciesId.MEOWSTIC ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.ESPURR ], 25: [ SpeciesId.MEOWSTIC ]}], + [TimeOfDay.ALL]: [ SpeciesId.PIKACHU, { 1: [ SpeciesId.GLAMEOW ], 38: [ SpeciesId.PURUGLY ]}, SpeciesId.FURFROU, { 1: [ SpeciesId.FIDOUGH ], 26: [ SpeciesId.DACHSBUN ]}, SpeciesId.SQUAWKABILLY ] }, [BiomePoolTier.RARE]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.TANDEMAUS ], 25: [ Species.MAUSHOLD ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.TANDEMAUS ], 25: [ Species.MAUSHOLD ]}], - [TimeOfDay.DUSK]: [ Species.MORPEKO ], - [TimeOfDay.NIGHT]: [ Species.MORPEKO ], - [TimeOfDay.ALL]: [{ 1: [ Species.VAROOM ], 40: [ Species.REVAVROOM ]}] + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.TANDEMAUS ], 25: [ SpeciesId.MAUSHOLD ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.TANDEMAUS ], 25: [ SpeciesId.MAUSHOLD ]}], + [TimeOfDay.DUSK]: [ SpeciesId.MORPEKO ], + [TimeOfDay.NIGHT]: [ SpeciesId.MORPEKO ], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.VAROOM ], 40: [ SpeciesId.REVAVROOM ]}] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DITTO, Species.EEVEE, Species.SMEARGLE ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CASTFORM ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ Species.BOLTUND ], [TimeOfDay.DAY]: [ Species.BOLTUND ], [TimeOfDay.DUSK]: [ Species.MEOWSTIC ], [TimeOfDay.NIGHT]: [ Species.MEOWSTIC ], [TimeOfDay.ALL]: [ Species.STOUTLAND, Species.FURFROU, Species.DACHSBUN ]}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ Species.MAUSHOLD ], [TimeOfDay.DAY]: [ Species.MAUSHOLD ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CASTFORM, Species.REVAVROOM ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO, SpeciesId.EEVEE, SpeciesId.SMEARGLE ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CASTFORM ]}, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.BOLTUND ], [TimeOfDay.DAY]: [ SpeciesId.BOLTUND ], [TimeOfDay.DUSK]: [ SpeciesId.MEOWSTIC ], [TimeOfDay.NIGHT]: [ SpeciesId.MEOWSTIC ], [TimeOfDay.ALL]: [ SpeciesId.STOUTLAND, SpeciesId.FURFROU, SpeciesId.DACHSBUN ]}, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.MAUSHOLD ], [TimeOfDay.DAY]: [ SpeciesId.MAUSHOLD ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CASTFORM, SpeciesId.REVAVROOM ]}, [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} }, - [Biome.FOREST]: { + [BiomeId.FOREST]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [ - Species.BUTTERFREE, - { 1: [ Species.BELLSPROUT ], 21: [ Species.WEEPINBELL ]}, - { 1: [ Species.COMBEE ], 21: [ Species.VESPIQUEN ]}, - Species.PETILIL, - { 1: [ Species.DEERLING ], 34: [ Species.SAWSBUCK ]}, - Species.VIVILLON + SpeciesId.BUTTERFREE, + { 1: [ SpeciesId.BELLSPROUT ], 21: [ SpeciesId.WEEPINBELL ]}, + { 1: [ SpeciesId.COMBEE ], 21: [ SpeciesId.VESPIQUEN ]}, + SpeciesId.PETILIL, + { 1: [ SpeciesId.DEERLING ], 34: [ SpeciesId.SAWSBUCK ]}, + SpeciesId.VIVILLON ], [TimeOfDay.DAY]: [ - Species.BUTTERFREE, - { 1: [ Species.BELLSPROUT ], 21: [ Species.WEEPINBELL ]}, - Species.BEAUTIFLY, - { 1: [ Species.COMBEE ], 21: [ Species.VESPIQUEN ]}, - Species.PETILIL, - { 1: [ Species.DEERLING ], 34: [ Species.SAWSBUCK ]}, - Species.VIVILLON + SpeciesId.BUTTERFREE, + { 1: [ SpeciesId.BELLSPROUT ], 21: [ SpeciesId.WEEPINBELL ]}, + SpeciesId.BEAUTIFLY, + { 1: [ SpeciesId.COMBEE ], 21: [ SpeciesId.VESPIQUEN ]}, + SpeciesId.PETILIL, + { 1: [ SpeciesId.DEERLING ], 34: [ SpeciesId.SAWSBUCK ]}, + SpeciesId.VIVILLON ], [TimeOfDay.DUSK]: [ - Species.BEEDRILL, - { 1: [ Species.PINECO ], 31: [ Species.FORRETRESS ]}, - { 1: [ Species.SEEDOT ], 14: [ Species.NUZLEAF ]}, - { 1: [ Species.SHROOMISH ], 23: [ Species.BRELOOM ]}, - { 1: [ Species.VENIPEDE ], 22: [ Species.WHIRLIPEDE ], 30: [ Species.SCOLIPEDE ]} + SpeciesId.BEEDRILL, + { 1: [ SpeciesId.PINECO ], 31: [ SpeciesId.FORRETRESS ]}, + { 1: [ SpeciesId.SEEDOT ], 14: [ SpeciesId.NUZLEAF ]}, + { 1: [ SpeciesId.SHROOMISH ], 23: [ SpeciesId.BRELOOM ]}, + { 1: [ SpeciesId.VENIPEDE ], 22: [ SpeciesId.WHIRLIPEDE ], 30: [ SpeciesId.SCOLIPEDE ]} ], [TimeOfDay.NIGHT]: [ - Species.BEEDRILL, - { 1: [ Species.VENONAT ], 31: [ Species.VENOMOTH ]}, - { 1: [ Species.SPINARAK ], 22: [ Species.ARIADOS ]}, - { 1: [ Species.PINECO ], 31: [ Species.FORRETRESS ]}, - Species.DUSTOX, - { 1: [ Species.SEEDOT ], 14: [ Species.NUZLEAF ]}, - { 1: [ Species.SHROOMISH ], 23: [ Species.BRELOOM ]}, - { 1: [ Species.VENIPEDE ], 22: [ Species.WHIRLIPEDE ], 30: [ Species.SCOLIPEDE ]} + SpeciesId.BEEDRILL, + { 1: [ SpeciesId.VENONAT ], 31: [ SpeciesId.VENOMOTH ]}, + { 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ]}, + { 1: [ SpeciesId.PINECO ], 31: [ SpeciesId.FORRETRESS ]}, + SpeciesId.DUSTOX, + { 1: [ SpeciesId.SEEDOT ], 14: [ SpeciesId.NUZLEAF ]}, + { 1: [ SpeciesId.SHROOMISH ], 23: [ SpeciesId.BRELOOM ]}, + { 1: [ SpeciesId.VENIPEDE ], 22: [ SpeciesId.WHIRLIPEDE ], 30: [ SpeciesId.SCOLIPEDE ]} ], - [TimeOfDay.ALL]: [{ 1: [ Species.TAROUNTULA ], 15: [ Species.SPIDOPS ]}, { 1: [ Species.NYMBLE ], 24: [ Species.LOKIX ]}, { 1: [ Species.SHROODLE ], 28: [ Species.GRAFAIAI ]}] + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.TAROUNTULA ], 15: [ SpeciesId.SPIDOPS ]}, { 1: [ SpeciesId.NYMBLE ], 24: [ SpeciesId.LOKIX ]}, { 1: [ SpeciesId.SHROODLE ], 28: [ SpeciesId.GRAFAIAI ]}] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [ Species.ROSELIA, Species.MOTHIM, { 1: [ Species.SEWADDLE ], 20: [ Species.SWADLOON ], 30: [ Species.LEAVANNY ]}], - [TimeOfDay.DAY]: [ Species.ROSELIA, Species.MOTHIM, { 1: [ Species.SEWADDLE ], 20: [ Species.SWADLOON ], 30: [ Species.LEAVANNY ]}], - [TimeOfDay.DUSK]: [{ 1: [ Species.SPINARAK ], 22: [ Species.ARIADOS ]}, { 1: [ Species.DOTTLER ], 30: [ Species.ORBEETLE ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.HOOTHOOT ], 20: [ Species.NOCTOWL ]}, { 1: [ Species.ROCKRUFF ], 25: [ Species.LYCANROC ]}, { 1: [ Species.DOTTLER ], 30: [ Species.ORBEETLE ]}], + [TimeOfDay.DAWN]: [ SpeciesId.ROSELIA, SpeciesId.MOTHIM, { 1: [ SpeciesId.SEWADDLE ], 20: [ SpeciesId.SWADLOON ], 30: [ SpeciesId.LEAVANNY ]}], + [TimeOfDay.DAY]: [ SpeciesId.ROSELIA, SpeciesId.MOTHIM, { 1: [ SpeciesId.SEWADDLE ], 20: [ SpeciesId.SWADLOON ], 30: [ SpeciesId.LEAVANNY ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ]}, { 1: [ SpeciesId.DOTTLER ], 30: [ SpeciesId.ORBEETLE ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.HOOTHOOT ], 20: [ SpeciesId.NOCTOWL ]}, { 1: [ SpeciesId.ROCKRUFF ], 25: [ SpeciesId.LYCANROC ]}, { 1: [ SpeciesId.DOTTLER ], 30: [ SpeciesId.ORBEETLE ]}], [TimeOfDay.ALL]: [ - { 1: [ Species.EKANS ], 22: [ Species.ARBOK ]}, - { 1: [ Species.TEDDIURSA ], 30: [ Species.URSARING ]}, - { 1: [ Species.BURMY ], 20: [ Species.WORMADAM ]}, - { 1: [ Species.PANSAGE ], 30: [ Species.SIMISAGE ]} + { 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ]}, + { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ]}, + { 1: [ SpeciesId.BURMY ], 20: [ SpeciesId.WORMADAM ]}, + { 1: [ SpeciesId.PANSAGE ], 30: [ SpeciesId.SIMISAGE ]} ] }, [BiomePoolTier.RARE]: { - [TimeOfDay.DAWN]: [ Species.EXEGGCUTE, Species.STANTLER ], - [TimeOfDay.DAY]: [ Species.EXEGGCUTE, Species.STANTLER ], - [TimeOfDay.DUSK]: [ Species.SCYTHER ], - [TimeOfDay.NIGHT]: [ Species.SCYTHER ], + [TimeOfDay.DAWN]: [ SpeciesId.EXEGGCUTE, SpeciesId.STANTLER ], + [TimeOfDay.DAY]: [ SpeciesId.EXEGGCUTE, SpeciesId.STANTLER ], + [TimeOfDay.DUSK]: [ SpeciesId.SCYTHER ], + [TimeOfDay.NIGHT]: [ SpeciesId.SCYTHER ], [TimeOfDay.ALL]: [ - Species.HERACROSS, - { 1: [ Species.TREECKO ], 16: [ Species.GROVYLE ], 36: [ Species.SCEPTILE ]}, - Species.TROPIUS, - Species.KARRABLAST, - Species.SHELMET, - { 1: [ Species.CHESPIN ], 16: [ Species.QUILLADIN ], 36: [ Species.CHESNAUGHT ]}, - { 1: [ Species.ROWLET ], 17: [ Species.DARTRIX ], 34: [ Species.DECIDUEYE ]}, - Species.SQUAWKABILLY, - { 1: [ Species.TOEDSCOOL ], 30: [ Species.TOEDSCRUEL ]} + SpeciesId.HERACROSS, + { 1: [ SpeciesId.TREECKO ], 16: [ SpeciesId.GROVYLE ], 36: [ SpeciesId.SCEPTILE ]}, + SpeciesId.TROPIUS, + SpeciesId.KARRABLAST, + SpeciesId.SHELMET, + { 1: [ SpeciesId.CHESPIN ], 16: [ SpeciesId.QUILLADIN ], 36: [ SpeciesId.CHESNAUGHT ]}, + { 1: [ SpeciesId.ROWLET ], 17: [ SpeciesId.DARTRIX ], 34: [ SpeciesId.DECIDUEYE ]}, + SpeciesId.SQUAWKABILLY, + { 1: [ SpeciesId.TOEDSCOOL ], 30: [ SpeciesId.TOEDSCRUEL ]} ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ Species.BLOODMOON_URSALUNA ], [TimeOfDay.ALL]: [ Species.DURANT ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KARTANA, Species.WO_CHIEN ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ SpeciesId.BLOODMOON_URSALUNA ], [TimeOfDay.ALL]: [ SpeciesId.DURANT ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KARTANA, SpeciesId.WO_CHIEN ]}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.VICTREEBEL, Species.MOTHIM, Species.VESPIQUEN, Species.LILLIGANT, Species.SAWSBUCK ], - [TimeOfDay.DAY]: [ Species.VICTREEBEL, Species.BEAUTIFLY, Species.MOTHIM, Species.VESPIQUEN, Species.LILLIGANT, Species.SAWSBUCK ], - [TimeOfDay.DUSK]: [ Species.ARIADOS, Species.FORRETRESS, Species.SHIFTRY, Species.BRELOOM, Species.SCOLIPEDE, Species.ORBEETLE ], - [TimeOfDay.NIGHT]: [ Species.VENOMOTH, Species.NOCTOWL, Species.ARIADOS, Species.FORRETRESS, Species.DUSTOX, Species.SHIFTRY, Species.BRELOOM, Species.SCOLIPEDE, Species.ORBEETLE ], - [TimeOfDay.ALL]: [ Species.WORMADAM, Species.SIMISAGE, Species.SPIDOPS, Species.LOKIX, Species.GRAFAIAI ] + [TimeOfDay.DAWN]: [ SpeciesId.VICTREEBEL, SpeciesId.MOTHIM, SpeciesId.VESPIQUEN, SpeciesId.LILLIGANT, SpeciesId.SAWSBUCK ], + [TimeOfDay.DAY]: [ SpeciesId.VICTREEBEL, SpeciesId.BEAUTIFLY, SpeciesId.MOTHIM, SpeciesId.VESPIQUEN, SpeciesId.LILLIGANT, SpeciesId.SAWSBUCK ], + [TimeOfDay.DUSK]: [ SpeciesId.ARIADOS, SpeciesId.FORRETRESS, SpeciesId.SHIFTRY, SpeciesId.BRELOOM, SpeciesId.SCOLIPEDE, SpeciesId.ORBEETLE ], + [TimeOfDay.NIGHT]: [ SpeciesId.VENOMOTH, SpeciesId.NOCTOWL, SpeciesId.ARIADOS, SpeciesId.FORRETRESS, SpeciesId.DUSTOX, SpeciesId.SHIFTRY, SpeciesId.BRELOOM, SpeciesId.SCOLIPEDE, SpeciesId.ORBEETLE ], + [TimeOfDay.ALL]: [ SpeciesId.WORMADAM, SpeciesId.SIMISAGE, SpeciesId.SPIDOPS, SpeciesId.LOKIX, SpeciesId.GRAFAIAI ] }, [BiomePoolTier.BOSS_RARE]: { - [TimeOfDay.DAWN]: [ Species.STANTLER ], - [TimeOfDay.DAY]: [ Species.STANTLER ], + [TimeOfDay.DAWN]: [ SpeciesId.STANTLER ], + [TimeOfDay.DAY]: [ SpeciesId.STANTLER ], [TimeOfDay.DUSK]: [], - [TimeOfDay.NIGHT]: [ Species.LYCANROC, Species.BLOODMOON_URSALUNA ], - [TimeOfDay.ALL]: [ Species.HERACROSS, Species.SCEPTILE, Species.ESCAVALIER, Species.ACCELGOR, Species.DURANT, Species.CHESNAUGHT, Species.DECIDUEYE, Species.TOEDSCRUEL ] + [TimeOfDay.NIGHT]: [ SpeciesId.LYCANROC, SpeciesId.BLOODMOON_URSALUNA ], + [TimeOfDay.ALL]: [ SpeciesId.HERACROSS, SpeciesId.SCEPTILE, SpeciesId.ESCAVALIER, SpeciesId.ACCELGOR, SpeciesId.DURANT, SpeciesId.CHESNAUGHT, SpeciesId.DECIDUEYE, SpeciesId.TOEDSCRUEL ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KARTANA, Species.WO_CHIEN ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CALYREX ]} + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KARTANA, SpeciesId.WO_CHIEN ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CALYREX ]} }, - [Biome.SEA]: { + [BiomeId.SEA]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.SLOWPOKE ], 37: [ Species.SLOWBRO ]}, { 1: [ Species.WINGULL ], 25: [ Species.PELIPPER ]}, Species.CRAMORANT, { 1: [ Species.FINIZEN ], 38: [ Species.PALAFIN ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.SLOWPOKE ], 37: [ Species.SLOWBRO ]}, { 1: [ Species.WINGULL ], 25: [ Species.PELIPPER ]}, Species.CRAMORANT, { 1: [ Species.FINIZEN ], 38: [ Species.PALAFIN ]}], - [TimeOfDay.DUSK]: [{ 1: [ Species.INKAY ], 30: [ Species.MALAMAR ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.FINNEON ], 31: [ Species.LUMINEON ]}, { 1: [ Species.INKAY ], 30: [ Species.MALAMAR ]}], - [TimeOfDay.ALL]: [{ 1: [ Species.TENTACOOL ], 30: [ Species.TENTACRUEL ]}, { 1: [ Species.MAGIKARP ], 20: [ Species.GYARADOS ]}, { 1: [ Species.BUIZEL ], 26: [ Species.FLOATZEL ]}] + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ]}, { 1: [ SpeciesId.WINGULL ], 25: [ SpeciesId.PELIPPER ]}, SpeciesId.CRAMORANT, { 1: [ SpeciesId.FINIZEN ], 38: [ SpeciesId.PALAFIN ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ]}, { 1: [ SpeciesId.WINGULL ], 25: [ SpeciesId.PELIPPER ]}, SpeciesId.CRAMORANT, { 1: [ SpeciesId.FINIZEN ], 38: [ SpeciesId.PALAFIN ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.INKAY ], 30: [ SpeciesId.MALAMAR ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.FINNEON ], 31: [ SpeciesId.LUMINEON ]}, { 1: [ SpeciesId.INKAY ], 30: [ SpeciesId.MALAMAR ]}], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.TENTACOOL ], 30: [ SpeciesId.TENTACRUEL ]}, { 1: [ SpeciesId.MAGIKARP ], 20: [ SpeciesId.GYARADOS ]}, { 1: [ SpeciesId.BUIZEL ], 26: [ SpeciesId.FLOATZEL ]}] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.STARYU ], 30: [ Species.STARMIE ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.STARYU ], 30: [ Species.STARMIE ]}], - [TimeOfDay.DUSK]: [{ 1: [ Species.SLOWPOKE ], 37: [ Species.SLOWBRO ]}, Species.SHELLDER, { 1: [ Species.CARVANHA ], 30: [ Species.SHARPEDO ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.SLOWPOKE ], 37: [ Species.SLOWBRO ]}, Species.SHELLDER, { 1: [ Species.CHINCHOU ], 27: [ Species.LANTURN ]}, { 1: [ Species.CARVANHA ], 30: [ Species.SHARPEDO ]}], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.STARYU ], 30: [ SpeciesId.STARMIE ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.STARYU ], 30: [ SpeciesId.STARMIE ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ]}, SpeciesId.SHELLDER, { 1: [ SpeciesId.CARVANHA ], 30: [ SpeciesId.SHARPEDO ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ]}, SpeciesId.SHELLDER, { 1: [ SpeciesId.CHINCHOU ], 27: [ SpeciesId.LANTURN ]}, { 1: [ SpeciesId.CARVANHA ], 30: [ SpeciesId.SHARPEDO ]}], [TimeOfDay.ALL]: [ - { 1: [ Species.POLIWAG ], 25: [ Species.POLIWHIRL ]}, - { 1: [ Species.HORSEA ], 32: [ Species.SEADRA ]}, - { 1: [ Species.GOLDEEN ], 33: [ Species.SEAKING ]}, - { 1: [ Species.WAILMER ], 40: [ Species.WAILORD ]}, - { 1: [ Species.PANPOUR ], 30: [ Species.SIMIPOUR ]}, - { 1: [ Species.WATTREL ], 25: [ Species.KILOWATTREL ]} + { 1: [ SpeciesId.POLIWAG ], 25: [ SpeciesId.POLIWHIRL ]}, + { 1: [ SpeciesId.HORSEA ], 32: [ SpeciesId.SEADRA ]}, + { 1: [ SpeciesId.GOLDEEN ], 33: [ SpeciesId.SEAKING ]}, + { 1: [ SpeciesId.WAILMER ], 40: [ SpeciesId.WAILORD ]}, + { 1: [ SpeciesId.PANPOUR ], 30: [ SpeciesId.SIMIPOUR ]}, + { 1: [ SpeciesId.WATTREL ], 25: [ SpeciesId.KILOWATTREL ]} ] }, [BiomePoolTier.RARE]: { @@ -435,45 +435,45 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.LAPRAS, { 1: [ Species.PIPLUP ], 16: [ Species.PRINPLUP ], 36: [ Species.EMPOLEON ]}, { 1: [ Species.POPPLIO ], 17: [ Species.BRIONNE ], 34: [ Species.PRIMARINA ]}] + [TimeOfDay.ALL]: [ SpeciesId.LAPRAS, { 1: [ SpeciesId.PIPLUP ], 16: [ SpeciesId.PRINPLUP ], 36: [ SpeciesId.EMPOLEON ]}, { 1: [ SpeciesId.POPPLIO ], 17: [ SpeciesId.BRIONNE ], 34: [ SpeciesId.PRIMARINA ]}] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KINGDRA, Species.ROTOM, { 1: [ Species.TIRTOUGA ], 37: [ Species.CARRACOSTA ]}]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KINGDRA, SpeciesId.ROTOM, { 1: [ SpeciesId.TIRTOUGA ], 37: [ SpeciesId.CARRACOSTA ]}]}, [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.PELIPPER, Species.CRAMORANT, Species.PALAFIN ], - [TimeOfDay.DAY]: [ Species.PELIPPER, Species.CRAMORANT, Species.PALAFIN ], - [TimeOfDay.DUSK]: [ Species.SHARPEDO, Species.MALAMAR ], - [TimeOfDay.NIGHT]: [ Species.SHARPEDO, Species.LUMINEON, Species.MALAMAR ], - [TimeOfDay.ALL]: [ Species.TENTACRUEL, Species.FLOATZEL, Species.SIMIPOUR, Species.KILOWATTREL ] + [TimeOfDay.DAWN]: [ SpeciesId.PELIPPER, SpeciesId.CRAMORANT, SpeciesId.PALAFIN ], + [TimeOfDay.DAY]: [ SpeciesId.PELIPPER, SpeciesId.CRAMORANT, SpeciesId.PALAFIN ], + [TimeOfDay.DUSK]: [ SpeciesId.SHARPEDO, SpeciesId.MALAMAR ], + [TimeOfDay.NIGHT]: [ SpeciesId.SHARPEDO, SpeciesId.LUMINEON, SpeciesId.MALAMAR ], + [TimeOfDay.ALL]: [ SpeciesId.TENTACRUEL, SpeciesId.FLOATZEL, SpeciesId.SIMIPOUR, SpeciesId.KILOWATTREL ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KINGDRA, Species.EMPOLEON, Species.PRIMARINA ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ROTOM ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.LUGIA ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KINGDRA, SpeciesId.EMPOLEON, SpeciesId.PRIMARINA ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.LUGIA ]} }, - [Biome.SWAMP]: { + [BiomeId.SWAMP]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.WOOPER ], 20: [ Species.QUAGSIRE ]}, { 1: [ Species.LOTAD ], 14: [ Species.LOMBRE ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.WOOPER ], 20: [ Species.QUAGSIRE ]}, { 1: [ Species.LOTAD ], 14: [ Species.LOMBRE ]}], - [TimeOfDay.DUSK]: [{ 1: [ Species.EKANS ], 22: [ Species.ARBOK ]}, { 1: [ Species.PALDEA_WOOPER ], 20: [ Species.CLODSIRE ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.EKANS ], 22: [ Species.ARBOK ]}, { 1: [ Species.PALDEA_WOOPER ], 20: [ Species.CLODSIRE ]}], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.WOOPER ], 20: [ SpeciesId.QUAGSIRE ]}, { 1: [ SpeciesId.LOTAD ], 14: [ SpeciesId.LOMBRE ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.WOOPER ], 20: [ SpeciesId.QUAGSIRE ]}, { 1: [ SpeciesId.LOTAD ], 14: [ SpeciesId.LOMBRE ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ]}, { 1: [ SpeciesId.PALDEA_WOOPER ], 20: [ SpeciesId.CLODSIRE ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ]}, { 1: [ SpeciesId.PALDEA_WOOPER ], 20: [ SpeciesId.CLODSIRE ]}], [TimeOfDay.ALL]: [ - { 1: [ Species.POLIWAG ], 25: [ Species.POLIWHIRL ]}, - { 1: [ Species.GULPIN ], 26: [ Species.SWALOT ]}, - { 1: [ Species.SHELLOS ], 30: [ Species.GASTRODON ]}, - { 1: [ Species.TYMPOLE ], 25: [ Species.PALPITOAD ], 36: [ Species.SEISMITOAD ]} + { 1: [ SpeciesId.POLIWAG ], 25: [ SpeciesId.POLIWHIRL ]}, + { 1: [ SpeciesId.GULPIN ], 26: [ SpeciesId.SWALOT ]}, + { 1: [ SpeciesId.SHELLOS ], 30: [ SpeciesId.GASTRODON ]}, + { 1: [ SpeciesId.TYMPOLE ], 25: [ SpeciesId.PALPITOAD ], 36: [ SpeciesId.SEISMITOAD ]} ] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.EKANS ], 22: [ Species.ARBOK ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.EKANS ], 22: [ Species.ARBOK ]}], - [TimeOfDay.DUSK]: [{ 1: [ Species.CROAGUNK ], 37: [ Species.TOXICROAK ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.CROAGUNK ], 37: [ Species.TOXICROAK ]}], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.CROAGUNK ], 37: [ SpeciesId.TOXICROAK ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.CROAGUNK ], 37: [ SpeciesId.TOXICROAK ]}], [TimeOfDay.ALL]: [ - { 1: [ Species.PSYDUCK ], 33: [ Species.GOLDUCK ]}, - { 1: [ Species.BARBOACH ], 30: [ Species.WHISCASH ]}, - { 1: [ Species.SKORUPI ], 40: [ Species.DRAPION ]}, - Species.STUNFISK, - { 1: [ Species.MAREANIE ], 38: [ Species.TOXAPEX ]} + { 1: [ SpeciesId.PSYDUCK ], 33: [ SpeciesId.GOLDUCK ]}, + { 1: [ SpeciesId.BARBOACH ], 30: [ SpeciesId.WHISCASH ]}, + { 1: [ SpeciesId.SKORUPI ], 40: [ SpeciesId.DRAPION ]}, + SpeciesId.STUNFISK, + { 1: [ SpeciesId.MAREANIE ], 38: [ SpeciesId.TOXAPEX ]} ] }, [BiomePoolTier.RARE]: { @@ -481,46 +481,46 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ Species.TOTODILE ], 18: [ Species.CROCONAW ], 30: [ Species.FERALIGATR ]}, { 1: [ Species.MUDKIP ], 16: [ Species.MARSHTOMP ], 36: [ Species.SWAMPERT ]}] + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.TOTODILE ], 18: [ SpeciesId.CROCONAW ], 30: [ SpeciesId.FERALIGATR ]}, { 1: [ SpeciesId.MUDKIP ], 16: [ SpeciesId.MARSHTOMP ], 36: [ SpeciesId.SWAMPERT ]}] }, [BiomePoolTier.SUPER_RARE]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.GALAR_SLOWPOKE ], 40: [ Species.GALAR_SLOWBRO ]}, { 1: [ Species.HISUI_SLIGGOO ], 80: [ Species.HISUI_GOODRA ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.GALAR_SLOWPOKE ], 40: [ Species.GALAR_SLOWBRO ]}, { 1: [ Species.HISUI_SLIGGOO ], 80: [ Species.HISUI_GOODRA ]}], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.GALAR_SLOWPOKE ], 40: [ SpeciesId.GALAR_SLOWBRO ]}, { 1: [ SpeciesId.HISUI_SLIGGOO ], 80: [ SpeciesId.HISUI_GOODRA ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.GALAR_SLOWPOKE ], 40: [ SpeciesId.GALAR_SLOWBRO ]}, { 1: [ SpeciesId.HISUI_SLIGGOO ], 80: [ SpeciesId.HISUI_GOODRA ]}], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.POLITOED, Species.GALAR_STUNFISK ] + [TimeOfDay.ALL]: [ SpeciesId.POLITOED, SpeciesId.GALAR_STUNFISK ] }, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.AZELF, Species.POIPOLE ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AZELF, SpeciesId.POIPOLE ]}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.QUAGSIRE, Species.LUDICOLO ], - [TimeOfDay.DAY]: [ Species.QUAGSIRE, Species.LUDICOLO ], - [TimeOfDay.DUSK]: [ Species.ARBOK, Species.CLODSIRE ], - [TimeOfDay.NIGHT]: [ Species.ARBOK, Species.CLODSIRE ], - [TimeOfDay.ALL]: [ Species.POLIWRATH, Species.SWALOT, Species.WHISCASH, Species.GASTRODON, Species.SEISMITOAD, Species.STUNFISK, Species.TOXAPEX ] + [TimeOfDay.DAWN]: [ SpeciesId.QUAGSIRE, SpeciesId.LUDICOLO ], + [TimeOfDay.DAY]: [ SpeciesId.QUAGSIRE, SpeciesId.LUDICOLO ], + [TimeOfDay.DUSK]: [ SpeciesId.ARBOK, SpeciesId.CLODSIRE ], + [TimeOfDay.NIGHT]: [ SpeciesId.ARBOK, SpeciesId.CLODSIRE ], + [TimeOfDay.ALL]: [ SpeciesId.POLIWRATH, SpeciesId.SWALOT, SpeciesId.WHISCASH, SpeciesId.GASTRODON, SpeciesId.SEISMITOAD, SpeciesId.STUNFISK, SpeciesId.TOXAPEX ] }, [BiomePoolTier.BOSS_RARE]: { - [TimeOfDay.DAWN]: [ Species.GALAR_SLOWBRO, Species.GALAR_SLOWKING, Species.HISUI_GOODRA ], - [TimeOfDay.DAY]: [ Species.GALAR_SLOWBRO, Species.GALAR_SLOWKING, Species.HISUI_GOODRA ], + [TimeOfDay.DAWN]: [ SpeciesId.GALAR_SLOWBRO, SpeciesId.GALAR_SLOWKING, SpeciesId.HISUI_GOODRA ], + [TimeOfDay.DAY]: [ SpeciesId.GALAR_SLOWBRO, SpeciesId.GALAR_SLOWKING, SpeciesId.HISUI_GOODRA ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.FERALIGATR, Species.POLITOED, Species.SWAMPERT, Species.GALAR_STUNFISK ] + [TimeOfDay.ALL]: [ SpeciesId.FERALIGATR, SpeciesId.POLITOED, SpeciesId.SWAMPERT, SpeciesId.GALAR_STUNFISK ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.AZELF, Species.NAGANADEL ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AZELF, SpeciesId.NAGANADEL ]}, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} }, - [Biome.BEACH]: { + [BiomeId.BEACH]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.STARYU ], 30: [ Species.STARMIE ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.STARYU ], 30: [ Species.STARMIE ]}], - [TimeOfDay.DUSK]: [ Species.SHELLDER ], - [TimeOfDay.NIGHT]: [ Species.SHELLDER ], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.STARYU ], 30: [ SpeciesId.STARMIE ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.STARYU ], 30: [ SpeciesId.STARMIE ]}], + [TimeOfDay.DUSK]: [ SpeciesId.SHELLDER ], + [TimeOfDay.NIGHT]: [ SpeciesId.SHELLDER ], [TimeOfDay.ALL]: [ - { 1: [ Species.KRABBY ], 28: [ Species.KINGLER ]}, - { 1: [ Species.CORPHISH ], 30: [ Species.CRAWDAUNT ]}, - { 1: [ Species.DWEBBLE ], 34: [ Species.CRUSTLE ]}, - { 1: [ Species.BINACLE ], 39: [ Species.BARBARACLE ]}, - { 1: [ Species.MAREANIE ], 38: [ Species.TOXAPEX ]}, - { 1: [ Species.WIGLETT ], 26: [ Species.WUGTRIO ]} + { 1: [ SpeciesId.KRABBY ], 28: [ SpeciesId.KINGLER ]}, + { 1: [ SpeciesId.CORPHISH ], 30: [ SpeciesId.CRAWDAUNT ]}, + { 1: [ SpeciesId.DWEBBLE ], 34: [ SpeciesId.CRUSTLE ]}, + { 1: [ SpeciesId.BINACLE ], 39: [ SpeciesId.BARBARACLE ]}, + { 1: [ SpeciesId.MAREANIE ], 38: [ SpeciesId.TOXAPEX ]}, + { 1: [ SpeciesId.WIGLETT ], 26: [ SpeciesId.WUGTRIO ]} ] }, [BiomePoolTier.UNCOMMON]: { @@ -528,41 +528,41 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ Species.BURMY ], 20: [ Species.WORMADAM ]}, { 1: [ Species.CLAUNCHER ], 37: [ Species.CLAWITZER ]}, { 1: [ Species.SANDYGAST ], 42: [ Species.PALOSSAND ]}] + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.BURMY ], 20: [ SpeciesId.WORMADAM ]}, { 1: [ SpeciesId.CLAUNCHER ], 37: [ SpeciesId.CLAWITZER ]}, { 1: [ SpeciesId.SANDYGAST ], 42: [ SpeciesId.PALOSSAND ]}] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ Species.QUAXLY ], 16: [ Species.QUAXWELL ], 36: [ Species.QUAQUAVAL ]}, Species.TATSUGIRI ]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ Species.TIRTOUGA ], 37: [ Species.CARRACOSTA ]}]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CRESSELIA, Species.KELDEO, Species.TAPU_FINI ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.QUAXLY ], 16: [ SpeciesId.QUAXWELL ], 36: [ SpeciesId.QUAQUAVAL ]}, SpeciesId.TATSUGIRI ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.TIRTOUGA ], 37: [ SpeciesId.CARRACOSTA ]}]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CRESSELIA, SpeciesId.KELDEO, SpeciesId.TAPU_FINI ]}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.STARMIE ], - [TimeOfDay.DAY]: [ Species.STARMIE ], - [TimeOfDay.DUSK]: [ Species.CLOYSTER ], - [TimeOfDay.NIGHT]: [ Species.CLOYSTER ], - [TimeOfDay.ALL]: [ Species.KINGLER, Species.CRAWDAUNT, Species.WORMADAM, Species.CRUSTLE, Species.BARBARACLE, Species.CLAWITZER, Species.TOXAPEX, Species.PALOSSAND ] + [TimeOfDay.DAWN]: [ SpeciesId.STARMIE ], + [TimeOfDay.DAY]: [ SpeciesId.STARMIE ], + [TimeOfDay.DUSK]: [ SpeciesId.CLOYSTER ], + [TimeOfDay.NIGHT]: [ SpeciesId.CLOYSTER ], + [TimeOfDay.ALL]: [ SpeciesId.KINGLER, SpeciesId.CRAWDAUNT, SpeciesId.WORMADAM, SpeciesId.CRUSTLE, SpeciesId.BARBARACLE, SpeciesId.CLAWITZER, SpeciesId.TOXAPEX, SpeciesId.PALOSSAND ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CARRACOSTA, Species.QUAQUAVAL ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CRESSELIA, Species.KELDEO, Species.TAPU_FINI ]}, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CARRACOSTA, SpeciesId.QUAQUAVAL ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CRESSELIA, SpeciesId.KELDEO, SpeciesId.TAPU_FINI ]}, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} }, - [Biome.LAKE]: { + [BiomeId.LAKE]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.LOTAD ], 14: [ Species.LOMBRE ]}, { 1: [ Species.DUCKLETT ], 35: [ Species.SWANNA ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.LOTAD ], 14: [ Species.LOMBRE ]}, { 1: [ Species.DUCKLETT ], 35: [ Species.SWANNA ]}], - [TimeOfDay.DUSK]: [{ 1: [ Species.MARILL ], 18: [ Species.AZUMARILL ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.MARILL ], 18: [ Species.AZUMARILL ]}], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.LOTAD ], 14: [ SpeciesId.LOMBRE ]}, { 1: [ SpeciesId.DUCKLETT ], 35: [ SpeciesId.SWANNA ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.LOTAD ], 14: [ SpeciesId.LOMBRE ]}, { 1: [ SpeciesId.DUCKLETT ], 35: [ SpeciesId.SWANNA ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.MARILL ], 18: [ SpeciesId.AZUMARILL ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.MARILL ], 18: [ SpeciesId.AZUMARILL ]}], [TimeOfDay.ALL]: [ - { 1: [ Species.PSYDUCK ], 33: [ Species.GOLDUCK ]}, - { 1: [ Species.GOLDEEN ], 33: [ Species.SEAKING ]}, - { 1: [ Species.MAGIKARP ], 20: [ Species.GYARADOS ]}, - { 1: [ Species.CHEWTLE ], 22: [ Species.DREDNAW ]} + { 1: [ SpeciesId.PSYDUCK ], 33: [ SpeciesId.GOLDUCK ]}, + { 1: [ SpeciesId.GOLDEEN ], 33: [ SpeciesId.SEAKING ]}, + { 1: [ SpeciesId.MAGIKARP ], 20: [ SpeciesId.GYARADOS ]}, + { 1: [ SpeciesId.CHEWTLE ], 22: [ SpeciesId.DREDNAW ]} ] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.DEWPIDER ], 22: [ Species.ARAQUANID ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.DEWPIDER ], 22: [ Species.ARAQUANID ]}], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.DEWPIDER ], 22: [ SpeciesId.ARAQUANID ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.DEWPIDER ], 22: [ SpeciesId.ARAQUANID ]}], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ Species.SLOWPOKE ], 37: [ Species.SLOWBRO ]}, { 1: [ Species.WOOPER ], 20: [ Species.QUAGSIRE ]}, { 1: [ Species.SURSKIT ], 22: [ Species.MASQUERAIN ]}, Species.WISHIWASHI, Species.FLAMIGO ] + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ]}, { 1: [ SpeciesId.WOOPER ], 20: [ SpeciesId.QUAGSIRE ]}, { 1: [ SpeciesId.SURSKIT ], 22: [ SpeciesId.MASQUERAIN ]}, SpeciesId.WISHIWASHI, SpeciesId.FLAMIGO ] }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], @@ -570,39 +570,39 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.SQUIRTLE ], 16: [ Species.WARTORTLE ], 36: [ Species.BLASTOISE ]}, - { 1: [ Species.OSHAWOTT ], 17: [ Species.DEWOTT ], 36: [ Species.SAMUROTT ]}, - { 1: [ Species.FROAKIE ], 16: [ Species.FROGADIER ], 36: [ Species.GRENINJA ]}, - { 1: [ Species.SOBBLE ], 16: [ Species.DRIZZILE ], 35: [ Species.INTELEON ]} + { 1: [ SpeciesId.SQUIRTLE ], 16: [ SpeciesId.WARTORTLE ], 36: [ SpeciesId.BLASTOISE ]}, + { 1: [ SpeciesId.OSHAWOTT ], 17: [ SpeciesId.DEWOTT ], 36: [ SpeciesId.SAMUROTT ]}, + { 1: [ SpeciesId.FROAKIE ], 16: [ SpeciesId.FROGADIER ], 36: [ SpeciesId.GRENINJA ]}, + { 1: [ SpeciesId.SOBBLE ], 16: [ SpeciesId.DRIZZILE ], 35: [ SpeciesId.INTELEON ]} ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.VAPOREON, Species.SLOWKING ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.SUICUNE, Species.MESPRIT ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.VAPOREON, SpeciesId.SLOWKING ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SUICUNE, SpeciesId.MESPRIT ]}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.SWANNA, Species.ARAQUANID ], - [TimeOfDay.DAY]: [ Species.SWANNA, Species.ARAQUANID ], - [TimeOfDay.DUSK]: [ Species.AZUMARILL ], - [TimeOfDay.NIGHT]: [ Species.AZUMARILL ], - [TimeOfDay.ALL]: [ Species.GOLDUCK, Species.SLOWBRO, Species.SEAKING, Species.GYARADOS, Species.MASQUERAIN, Species.WISHIWASHI, Species.DREDNAW ] + [TimeOfDay.DAWN]: [ SpeciesId.SWANNA, SpeciesId.ARAQUANID ], + [TimeOfDay.DAY]: [ SpeciesId.SWANNA, SpeciesId.ARAQUANID ], + [TimeOfDay.DUSK]: [ SpeciesId.AZUMARILL ], + [TimeOfDay.NIGHT]: [ SpeciesId.AZUMARILL ], + [TimeOfDay.ALL]: [ SpeciesId.GOLDUCK, SpeciesId.SLOWBRO, SpeciesId.SEAKING, SpeciesId.GYARADOS, SpeciesId.MASQUERAIN, SpeciesId.WISHIWASHI, SpeciesId.DREDNAW ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.BLASTOISE, Species.VAPOREON, Species.SLOWKING, Species.SAMUROTT, Species.GRENINJA, Species.INTELEON ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.SUICUNE, Species.MESPRIT ]}, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLASTOISE, SpeciesId.VAPOREON, SpeciesId.SLOWKING, SpeciesId.SAMUROTT, SpeciesId.GRENINJA, SpeciesId.INTELEON ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SUICUNE, SpeciesId.MESPRIT ]}, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} }, - [Biome.SEABED]: { + [BiomeId.SEABED]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.CHINCHOU ], 27: [ Species.LANTURN ]}, - Species.REMORAID, - Species.CLAMPERL, - Species.BASCULIN, - { 1: [ Species.FRILLISH ], 40: [ Species.JELLICENT ]}, - { 1: [ Species.ARROKUDA ], 26: [ Species.BARRASKEWDA ]}, - Species.VELUZA + { 1: [ SpeciesId.CHINCHOU ], 27: [ SpeciesId.LANTURN ]}, + SpeciesId.REMORAID, + SpeciesId.CLAMPERL, + SpeciesId.BASCULIN, + { 1: [ SpeciesId.FRILLISH ], 40: [ SpeciesId.JELLICENT ]}, + { 1: [ SpeciesId.ARROKUDA ], 26: [ SpeciesId.BARRASKEWDA ]}, + SpeciesId.VELUZA ] }, [BiomePoolTier.UNCOMMON]: { @@ -611,14 +611,14 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.TENTACOOL ], 30: [ Species.TENTACRUEL ]}, - Species.SHELLDER, - { 1: [ Species.WAILMER ], 40: [ Species.WAILORD ]}, - Species.LUVDISC, - { 1: [ Species.SHELLOS ], 30: [ Species.GASTRODON ]}, - { 1: [ Species.SKRELP ], 48: [ Species.DRAGALGE ]}, - Species.PINCURCHIN, - Species.DONDOZO + { 1: [ SpeciesId.TENTACOOL ], 30: [ SpeciesId.TENTACRUEL ]}, + SpeciesId.SHELLDER, + { 1: [ SpeciesId.WAILMER ], 40: [ SpeciesId.WAILORD ]}, + SpeciesId.LUVDISC, + { 1: [ SpeciesId.SHELLOS ], 30: [ SpeciesId.GASTRODON ]}, + { 1: [ SpeciesId.SKRELP ], 48: [ SpeciesId.DRAGALGE ]}, + SpeciesId.PINCURCHIN, + SpeciesId.DONDOZO ] }, [BiomePoolTier.RARE]: { @@ -626,7 +626,7 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.QWILFISH, Species.CORSOLA, Species.OCTILLERY, { 1: [ Species.MANTYKE ], 52: [ Species.MANTINE ]}, Species.ALOMOMOLA, { 1: [ Species.TYNAMO ], 39: [ Species.EELEKTRIK ]}, Species.DHELMISE ] + [TimeOfDay.ALL]: [ SpeciesId.QWILFISH, SpeciesId.CORSOLA, SpeciesId.OCTILLERY, { 1: [ SpeciesId.MANTYKE ], 52: [ SpeciesId.MANTINE ]}, SpeciesId.ALOMOMOLA, { 1: [ SpeciesId.TYNAMO ], 39: [ SpeciesId.EELEKTRIK ]}, SpeciesId.DHELMISE ] }, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], @@ -634,88 +634,88 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.OMANYTE ], 40: [ Species.OMASTAR ]}, - { 1: [ Species.KABUTO ], 40: [ Species.KABUTOPS ]}, - Species.RELICANTH, - Species.PYUKUMUKU, - { 1: [ Species.GALAR_CORSOLA ], 38: [ Species.CURSOLA ]}, - Species.ARCTOVISH, - Species.HISUI_QWILFISH + { 1: [ SpeciesId.OMANYTE ], 40: [ SpeciesId.OMASTAR ]}, + { 1: [ SpeciesId.KABUTO ], 40: [ SpeciesId.KABUTOPS ]}, + SpeciesId.RELICANTH, + SpeciesId.PYUKUMUKU, + { 1: [ SpeciesId.GALAR_CORSOLA ], 38: [ SpeciesId.CURSOLA ]}, + SpeciesId.ARCTOVISH, + SpeciesId.HISUI_QWILFISH ] }, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.FEEBAS, Species.NIHILEGO ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.FEEBAS, SpeciesId.NIHILEGO ]}, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.LANTURN, Species.QWILFISH, Species.CORSOLA, Species.OCTILLERY, Species.MANTINE, Species.WAILORD, Species.HUNTAIL, Species.GOREBYSS, Species.LUVDISC, Species.JELLICENT, Species.ALOMOMOLA, Species.DRAGALGE, Species.BARRASKEWDA, Species.DONDOZO ] + [TimeOfDay.ALL]: [ SpeciesId.LANTURN, SpeciesId.QWILFISH, SpeciesId.CORSOLA, SpeciesId.OCTILLERY, SpeciesId.MANTINE, SpeciesId.WAILORD, SpeciesId.HUNTAIL, SpeciesId.GOREBYSS, SpeciesId.LUVDISC, SpeciesId.JELLICENT, SpeciesId.ALOMOMOLA, SpeciesId.DRAGALGE, SpeciesId.BARRASKEWDA, SpeciesId.DONDOZO ] }, [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.OMASTAR, Species.KABUTOPS, Species.RELICANTH, Species.EELEKTROSS, Species.PYUKUMUKU, Species.DHELMISE, Species.CURSOLA, Species.ARCTOVISH, Species.BASCULEGION, Species.OVERQWIL ] + [TimeOfDay.ALL]: [ SpeciesId.OMASTAR, SpeciesId.KABUTOPS, SpeciesId.RELICANTH, SpeciesId.EELEKTROSS, SpeciesId.PYUKUMUKU, SpeciesId.DHELMISE, SpeciesId.CURSOLA, SpeciesId.ARCTOVISH, SpeciesId.BASCULEGION, SpeciesId.OVERQWIL ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MILOTIC, Species.NIHILEGO ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KYOGRE ]} + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MILOTIC, SpeciesId.NIHILEGO ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KYOGRE ]} }, - [Biome.MOUNTAIN]: { + [BiomeId.MOUNTAIN]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [ - { 1: [ Species.TAILLOW ], 22: [ Species.SWELLOW ]}, - { 1: [ Species.SWABLU ], 35: [ Species.ALTARIA ]}, - { 1: [ Species.STARLY ], 14: [ Species.STARAVIA ], 34: [ Species.STARAPTOR ]}, - { 1: [ Species.PIDOVE ], 21: [ Species.TRANQUILL ], 32: [ Species.UNFEZANT ]}, - { 1: [ Species.FLETCHLING ], 17: [ Species.FLETCHINDER ], 35: [ Species.TALONFLAME ]} + { 1: [ SpeciesId.TAILLOW ], 22: [ SpeciesId.SWELLOW ]}, + { 1: [ SpeciesId.SWABLU ], 35: [ SpeciesId.ALTARIA ]}, + { 1: [ SpeciesId.STARLY ], 14: [ SpeciesId.STARAVIA ], 34: [ SpeciesId.STARAPTOR ]}, + { 1: [ SpeciesId.PIDOVE ], 21: [ SpeciesId.TRANQUILL ], 32: [ SpeciesId.UNFEZANT ]}, + { 1: [ SpeciesId.FLETCHLING ], 17: [ SpeciesId.FLETCHINDER ], 35: [ SpeciesId.TALONFLAME ]} ], [TimeOfDay.DAY]: [ - { 1: [ Species.TAILLOW ], 22: [ Species.SWELLOW ]}, - { 1: [ Species.SWABLU ], 35: [ Species.ALTARIA ]}, - { 1: [ Species.STARLY ], 14: [ Species.STARAVIA ], 34: [ Species.STARAPTOR ]}, - { 1: [ Species.PIDOVE ], 21: [ Species.TRANQUILL ], 32: [ Species.UNFEZANT ]}, - { 1: [ Species.FLETCHLING ], 17: [ Species.FLETCHINDER ], 35: [ Species.TALONFLAME ]} + { 1: [ SpeciesId.TAILLOW ], 22: [ SpeciesId.SWELLOW ]}, + { 1: [ SpeciesId.SWABLU ], 35: [ SpeciesId.ALTARIA ]}, + { 1: [ SpeciesId.STARLY ], 14: [ SpeciesId.STARAVIA ], 34: [ SpeciesId.STARAPTOR ]}, + { 1: [ SpeciesId.PIDOVE ], 21: [ SpeciesId.TRANQUILL ], 32: [ SpeciesId.UNFEZANT ]}, + { 1: [ SpeciesId.FLETCHLING ], 17: [ SpeciesId.FLETCHINDER ], 35: [ SpeciesId.TALONFLAME ]} ], - [TimeOfDay.DUSK]: [{ 1: [ Species.RHYHORN ], 42: [ Species.RHYDON ]}, { 1: [ Species.ARON ], 32: [ Species.LAIRON ], 42: [ Species.AGGRON ]}, { 1: [ Species.ROGGENROLA ], 25: [ Species.BOLDORE ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.RHYHORN ], 42: [ Species.RHYDON ]}, { 1: [ Species.ARON ], 32: [ Species.LAIRON ], 42: [ Species.AGGRON ]}, { 1: [ Species.ROGGENROLA ], 25: [ Species.BOLDORE ]}], - [TimeOfDay.ALL]: [{ 1: [ Species.PIDGEY ], 18: [ Species.PIDGEOTTO ], 36: [ Species.PIDGEOT ]}, { 1: [ Species.SPEAROW ], 20: [ Species.FEAROW ]}, { 1: [ Species.SKIDDO ], 32: [ Species.GOGOAT ]}] + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ]}, { 1: [ SpeciesId.ARON ], 32: [ SpeciesId.LAIRON ], 42: [ SpeciesId.AGGRON ]}, { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ]}, { 1: [ SpeciesId.ARON ], 32: [ SpeciesId.LAIRON ], 42: [ SpeciesId.AGGRON ]}, { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ]}], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.PIDGEY ], 18: [ SpeciesId.PIDGEOTTO ], 36: [ SpeciesId.PIDGEOT ]}, { 1: [ SpeciesId.SPEAROW ], 20: [ SpeciesId.FEAROW ]}, { 1: [ SpeciesId.SKIDDO ], 32: [ SpeciesId.GOGOAT ]}] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [ - { 1: [ Species.RHYHORN ], 42: [ Species.RHYDON ]}, - { 1: [ Species.ARON ], 32: [ Species.LAIRON ], 42: [ Species.AGGRON ]}, - { 1: [ Species.ROGGENROLA ], 25: [ Species.BOLDORE ]}, - { 1: [ Species.RUFFLET ], 54: [ Species.BRAVIARY ]}, - { 1: [ Species.ROOKIDEE ], 18: [ Species.CORVISQUIRE ], 38: [ Species.CORVIKNIGHT ]}, - { 1: [ Species.FLITTLE ], 35: [ Species.ESPATHRA ]}, - Species.BOMBIRDIER + { 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ]}, + { 1: [ SpeciesId.ARON ], 32: [ SpeciesId.LAIRON ], 42: [ SpeciesId.AGGRON ]}, + { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ]}, + { 1: [ SpeciesId.RUFFLET ], 54: [ SpeciesId.BRAVIARY ]}, + { 1: [ SpeciesId.ROOKIDEE ], 18: [ SpeciesId.CORVISQUIRE ], 38: [ SpeciesId.CORVIKNIGHT ]}, + { 1: [ SpeciesId.FLITTLE ], 35: [ SpeciesId.ESPATHRA ]}, + SpeciesId.BOMBIRDIER ], [TimeOfDay.DAY]: [ - { 1: [ Species.RHYHORN ], 42: [ Species.RHYDON ]}, - { 1: [ Species.ARON ], 32: [ Species.LAIRON ], 42: [ Species.AGGRON ]}, - { 1: [ Species.ROGGENROLA ], 25: [ Species.BOLDORE ]}, - { 1: [ Species.RUFFLET ], 54: [ Species.BRAVIARY ]}, - { 1: [ Species.ROOKIDEE ], 18: [ Species.CORVISQUIRE ], 38: [ Species.CORVIKNIGHT ]}, - { 1: [ Species.FLITTLE ], 35: [ Species.ESPATHRA ]}, - Species.BOMBIRDIER + { 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ]}, + { 1: [ SpeciesId.ARON ], 32: [ SpeciesId.LAIRON ], 42: [ SpeciesId.AGGRON ]}, + { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ]}, + { 1: [ SpeciesId.RUFFLET ], 54: [ SpeciesId.BRAVIARY ]}, + { 1: [ SpeciesId.ROOKIDEE ], 18: [ SpeciesId.CORVISQUIRE ], 38: [ SpeciesId.CORVIKNIGHT ]}, + { 1: [ SpeciesId.FLITTLE ], 35: [ SpeciesId.ESPATHRA ]}, + SpeciesId.BOMBIRDIER ], - [TimeOfDay.DUSK]: [{ 1: [ Species.VULLABY ], 54: [ Species.MANDIBUZZ ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.VULLABY ], 54: [ Species.MANDIBUZZ ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.VULLABY ], 54: [ SpeciesId.MANDIBUZZ ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.VULLABY ], 54: [ SpeciesId.MANDIBUZZ ]}], [TimeOfDay.ALL]: [ - { 1: [ Species.MACHOP ], 28: [ Species.MACHOKE ]}, - { 1: [ Species.GEODUDE ], 25: [ Species.GRAVELER ]}, - { 1: [ Species.NATU ], 25: [ Species.XATU ]}, - { 1: [ Species.SLUGMA ], 38: [ Species.MAGCARGO ]}, - { 1: [ Species.NACLI ], 24: [ Species.NACLSTACK ], 38: [ Species.GARGANACL ]} + { 1: [ SpeciesId.MACHOP ], 28: [ SpeciesId.MACHOKE ]}, + { 1: [ SpeciesId.GEODUDE ], 25: [ SpeciesId.GRAVELER ]}, + { 1: [ SpeciesId.NATU ], 25: [ SpeciesId.XATU ]}, + { 1: [ SpeciesId.SLUGMA ], 38: [ SpeciesId.MAGCARGO ]}, + { 1: [ SpeciesId.NACLI ], 24: [ SpeciesId.NACLSTACK ], 38: [ SpeciesId.GARGANACL ]} ] }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], - [TimeOfDay.NIGHT]: [ Species.MURKROW ], - [TimeOfDay.ALL]: [ Species.SKARMORY, { 1: [ Species.TORCHIC ], 16: [ Species.COMBUSKEN ], 36: [ Species.BLAZIKEN ]}, { 1: [ Species.SPOINK ], 32: [ Species.GRUMPIG ]}, Species.HAWLUCHA, Species.KLAWF ] + [TimeOfDay.NIGHT]: [ SpeciesId.MURKROW ], + [TimeOfDay.ALL]: [ SpeciesId.SKARMORY, { 1: [ SpeciesId.TORCHIC ], 16: [ SpeciesId.COMBUSKEN ], 36: [ SpeciesId.BLAZIKEN ]}, { 1: [ SpeciesId.SPOINK ], 32: [ SpeciesId.GRUMPIG ]}, SpeciesId.HAWLUCHA, SpeciesId.KLAWF ] }, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], @@ -723,95 +723,95 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.LARVITAR ], 30: [ Species.PUPITAR ]}, - { 1: [ Species.CRANIDOS ], 30: [ Species.RAMPARDOS ]}, - { 1: [ Species.SHIELDON ], 30: [ Species.BASTIODON ]}, - { 1: [ Species.GIBLE ], 24: [ Species.GABITE ], 48: [ Species.GARCHOMP ]}, - Species.ROTOM, - Species.ARCHEOPS, - { 1: [ Species.AXEW ], 38: [ Species.FRAXURE ]} + { 1: [ SpeciesId.LARVITAR ], 30: [ SpeciesId.PUPITAR ]}, + { 1: [ SpeciesId.CRANIDOS ], 30: [ SpeciesId.RAMPARDOS ]}, + { 1: [ SpeciesId.SHIELDON ], 30: [ SpeciesId.BASTIODON ]}, + { 1: [ SpeciesId.GIBLE ], 24: [ SpeciesId.GABITE ], 48: [ SpeciesId.GARCHOMP ]}, + SpeciesId.ROTOM, + SpeciesId.ARCHEOPS, + { 1: [ SpeciesId.AXEW ], 38: [ SpeciesId.FRAXURE ]} ] }, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.TORNADUS, Species.TING_LU, Species.OGERPON ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TORNADUS, SpeciesId.TING_LU, SpeciesId.OGERPON ]}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.SWELLOW, Species.ALTARIA, Species.STARAPTOR, Species.UNFEZANT, Species.BRAVIARY, Species.TALONFLAME, Species.CORVIKNIGHT, Species.ESPATHRA ], - [TimeOfDay.DAY]: [ Species.SWELLOW, Species.ALTARIA, Species.STARAPTOR, Species.UNFEZANT, Species.BRAVIARY, Species.TALONFLAME, Species.CORVIKNIGHT, Species.ESPATHRA ], - [TimeOfDay.DUSK]: [ Species.MANDIBUZZ ], - [TimeOfDay.NIGHT]: [ Species.MANDIBUZZ ], - [TimeOfDay.ALL]: [ Species.PIDGEOT, Species.FEAROW, Species.SKARMORY, Species.AGGRON, Species.GOGOAT, Species.GARGANACL ] + [TimeOfDay.DAWN]: [ SpeciesId.SWELLOW, SpeciesId.ALTARIA, SpeciesId.STARAPTOR, SpeciesId.UNFEZANT, SpeciesId.BRAVIARY, SpeciesId.TALONFLAME, SpeciesId.CORVIKNIGHT, SpeciesId.ESPATHRA ], + [TimeOfDay.DAY]: [ SpeciesId.SWELLOW, SpeciesId.ALTARIA, SpeciesId.STARAPTOR, SpeciesId.UNFEZANT, SpeciesId.BRAVIARY, SpeciesId.TALONFLAME, SpeciesId.CORVIKNIGHT, SpeciesId.ESPATHRA ], + [TimeOfDay.DUSK]: [ SpeciesId.MANDIBUZZ ], + [TimeOfDay.NIGHT]: [ SpeciesId.MANDIBUZZ ], + [TimeOfDay.ALL]: [ SpeciesId.PIDGEOT, SpeciesId.FEAROW, SpeciesId.SKARMORY, SpeciesId.AGGRON, SpeciesId.GOGOAT, SpeciesId.GARGANACL ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ Species.HISUI_BRAVIARY ], [TimeOfDay.DAY]: [ Species.HISUI_BRAVIARY ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.BLAZIKEN, Species.RAMPARDOS, Species.BASTIODON, Species.HAWLUCHA ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ROTOM, Species.TORNADUS, Species.TING_LU, Species.OGERPON ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.HO_OH ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.HISUI_BRAVIARY ], [TimeOfDay.DAY]: [ SpeciesId.HISUI_BRAVIARY ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLAZIKEN, SpeciesId.RAMPARDOS, SpeciesId.BASTIODON, SpeciesId.HAWLUCHA ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM, SpeciesId.TORNADUS, SpeciesId.TING_LU, SpeciesId.OGERPON ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HO_OH ]} }, - [Biome.BADLANDS]: { + [BiomeId.BADLANDS]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.PHANPY ], 25: [ Species.DONPHAN ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.PHANPY ], 25: [ Species.DONPHAN ]}], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.PHANPY ], 25: [ SpeciesId.DONPHAN ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.PHANPY ], 25: [ SpeciesId.DONPHAN ]}], [TimeOfDay.DUSK]: [], - [TimeOfDay.NIGHT]: [{ 1: [ Species.CUBONE ], 28: [ Species.MAROWAK ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.CUBONE ], 28: [ SpeciesId.MAROWAK ]}], [TimeOfDay.ALL]: [ - { 1: [ Species.DIGLETT ], 26: [ Species.DUGTRIO ]}, - { 1: [ Species.GEODUDE ], 25: [ Species.GRAVELER ]}, - { 1: [ Species.RHYHORN ], 42: [ Species.RHYDON ]}, - { 1: [ Species.DRILBUR ], 31: [ Species.EXCADRILL ]}, - { 1: [ Species.MUDBRAY ], 30: [ Species.MUDSDALE ]} + { 1: [ SpeciesId.DIGLETT ], 26: [ SpeciesId.DUGTRIO ]}, + { 1: [ SpeciesId.GEODUDE ], 25: [ SpeciesId.GRAVELER ]}, + { 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ]}, + { 1: [ SpeciesId.DRILBUR ], 31: [ SpeciesId.EXCADRILL ]}, + { 1: [ SpeciesId.MUDBRAY ], 30: [ SpeciesId.MUDSDALE ]} ] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.SIZZLIPEDE ], 28: [ Species.CENTISKORCH ]}, { 1: [ Species.CAPSAKID ], 30: [ Species.SCOVILLAIN ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.SIZZLIPEDE ], 28: [ Species.CENTISKORCH ]}, { 1: [ Species.CAPSAKID ], 30: [ Species.SCOVILLAIN ]}], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.SIZZLIPEDE ], 28: [ SpeciesId.CENTISKORCH ]}, { 1: [ SpeciesId.CAPSAKID ], 30: [ SpeciesId.SCOVILLAIN ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.SIZZLIPEDE ], 28: [ SpeciesId.CENTISKORCH ]}, { 1: [ SpeciesId.CAPSAKID ], 30: [ SpeciesId.SCOVILLAIN ]}], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.SANDSHREW ], 22: [ Species.SANDSLASH ]}, - { 1: [ Species.NUMEL ], 33: [ Species.CAMERUPT ]}, - { 1: [ Species.ROGGENROLA ], 25: [ Species.BOLDORE ]}, - { 1: [ Species.CUFANT ], 34: [ Species.COPPERAJAH ]} + { 1: [ SpeciesId.SANDSHREW ], 22: [ SpeciesId.SANDSLASH ]}, + { 1: [ SpeciesId.NUMEL ], 33: [ SpeciesId.CAMERUPT ]}, + { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ]}, + { 1: [ SpeciesId.CUFANT ], 34: [ SpeciesId.COPPERAJAH ]} ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ONIX, Species.GLIGAR, { 1: [ Species.POLTCHAGEIST ], 30: [ Species.SINISTCHA ]}]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ONIX, SpeciesId.GLIGAR, { 1: [ SpeciesId.POLTCHAGEIST ], 30: [ SpeciesId.SINISTCHA ]}]}, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.LANDORUS, Species.OKIDOGI ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.LANDORUS, SpeciesId.OKIDOGI ]}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.DONPHAN, Species.CENTISKORCH, Species.SCOVILLAIN ], - [TimeOfDay.DAY]: [ Species.DONPHAN, Species.CENTISKORCH, Species.SCOVILLAIN ], + [TimeOfDay.DAWN]: [ SpeciesId.DONPHAN, SpeciesId.CENTISKORCH, SpeciesId.SCOVILLAIN ], + [TimeOfDay.DAY]: [ SpeciesId.DONPHAN, SpeciesId.CENTISKORCH, SpeciesId.SCOVILLAIN ], [TimeOfDay.DUSK]: [], - [TimeOfDay.NIGHT]: [ Species.MAROWAK ], - [TimeOfDay.ALL]: [ Species.DUGTRIO, Species.GOLEM, Species.RHYPERIOR, Species.GLISCOR, Species.EXCADRILL, Species.MUDSDALE, Species.COPPERAJAH ] + [TimeOfDay.NIGHT]: [ SpeciesId.MAROWAK ], + [TimeOfDay.ALL]: [ SpeciesId.DUGTRIO, SpeciesId.GOLEM, SpeciesId.RHYPERIOR, SpeciesId.GLISCOR, SpeciesId.EXCADRILL, SpeciesId.MUDSDALE, SpeciesId.COPPERAJAH ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.STEELIX, Species.SINISTCHA ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.LANDORUS, Species.OKIDOGI ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GROUDON ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.STEELIX, SpeciesId.SINISTCHA ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.LANDORUS, SpeciesId.OKIDOGI ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GROUDON ]} }, - [Biome.CAVE]: { + [BiomeId.CAVE]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.ZUBAT ], 22: [ Species.GOLBAT ]}, - { 1: [ Species.PARAS ], 24: [ Species.PARASECT ]}, - { 1: [ Species.TEDDIURSA ], 30: [ Species.URSARING ]}, - { 1: [ Species.WHISMUR ], 20: [ Species.LOUDRED ], 40: [ Species.EXPLOUD ]}, - { 1: [ Species.ROGGENROLA ], 25: [ Species.BOLDORE ]}, - { 1: [ Species.WOOBAT ], 20: [ Species.SWOOBAT ]}, - { 1: [ Species.BUNNELBY ], 20: [ Species.DIGGERSBY ]}, - { 1: [ Species.NACLI ], 24: [ Species.NACLSTACK ], 38: [ Species.GARGANACL ]} + { 1: [ SpeciesId.ZUBAT ], 22: [ SpeciesId.GOLBAT ]}, + { 1: [ SpeciesId.PARAS ], 24: [ SpeciesId.PARASECT ]}, + { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ]}, + { 1: [ SpeciesId.WHISMUR ], 20: [ SpeciesId.LOUDRED ], 40: [ SpeciesId.EXPLOUD ]}, + { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ]}, + { 1: [ SpeciesId.WOOBAT ], 20: [ SpeciesId.SWOOBAT ]}, + { 1: [ SpeciesId.BUNNELBY ], 20: [ SpeciesId.DIGGERSBY ]}, + { 1: [ SpeciesId.NACLI ], 24: [ SpeciesId.NACLSTACK ], 38: [ SpeciesId.GARGANACL ]} ] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [{ 1: [ Species.ROCKRUFF ], 25: [ Species.LYCANROC ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.ROCKRUFF ], 25: [ SpeciesId.LYCANROC ]}], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.GEODUDE ], 25: [ Species.GRAVELER ]}, - { 1: [ Species.MAKUHITA ], 24: [ Species.HARIYAMA ]}, - Species.NOSEPASS, - { 1: [ Species.NOIBAT ], 48: [ Species.NOIVERN ]}, - { 1: [ Species.WIMPOD ], 30: [ Species.GOLISOPOD ]} + { 1: [ SpeciesId.GEODUDE ], 25: [ SpeciesId.GRAVELER ]}, + { 1: [ SpeciesId.MAKUHITA ], 24: [ SpeciesId.HARIYAMA ]}, + SpeciesId.NOSEPASS, + { 1: [ SpeciesId.NOIBAT ], 48: [ SpeciesId.NOIVERN ]}, + { 1: [ SpeciesId.WIMPOD ], 30: [ SpeciesId.GOLISOPOD ]} ] }, [BiomePoolTier.RARE]: { @@ -819,71 +819,71 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.ONIX, { 1: [ Species.FERROSEED ], 40: [ Species.FERROTHORN ]}, Species.CARBINK, { 1: [ Species.GLIMMET ], 35: [ Species.GLIMMORA ]}] + [TimeOfDay.ALL]: [ SpeciesId.ONIX, { 1: [ SpeciesId.FERROSEED ], 40: [ SpeciesId.FERROTHORN ]}, SpeciesId.CARBINK, { 1: [ SpeciesId.GLIMMET ], 35: [ SpeciesId.GLIMMORA ]}] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.SHUCKLE ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.UXIE ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SHUCKLE ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.UXIE ]}, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.PARASECT, Species.ONIX, Species.CROBAT, Species.URSARING, Species.EXPLOUD, Species.PROBOPASS, Species.GIGALITH, Species.SWOOBAT, Species.DIGGERSBY, Species.NOIVERN, Species.GOLISOPOD, Species.GARGANACL ] + [TimeOfDay.ALL]: [ SpeciesId.PARASECT, SpeciesId.ONIX, SpeciesId.CROBAT, SpeciesId.URSARING, SpeciesId.EXPLOUD, SpeciesId.PROBOPASS, SpeciesId.GIGALITH, SpeciesId.SWOOBAT, SpeciesId.DIGGERSBY, SpeciesId.NOIVERN, SpeciesId.GOLISOPOD, SpeciesId.GARGANACL ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ Species.LYCANROC ], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.SHUCKLE, Species.FERROTHORN, Species.GLIMMORA ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.UXIE ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.TERAPAGOS ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ SpeciesId.LYCANROC ], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SHUCKLE, SpeciesId.FERROTHORN, SpeciesId.GLIMMORA ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.UXIE ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TERAPAGOS ]} }, - [Biome.DESERT]: { + [BiomeId.DESERT]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [ Species.TRAPINCH, { 1: [ Species.HIPPOPOTAS ], 34: [ Species.HIPPOWDON ]}, { 1: [ Species.RELLOR ], 29: [ Species.RABSCA ]}], - [TimeOfDay.DAY]: [ Species.TRAPINCH, { 1: [ Species.HIPPOPOTAS ], 34: [ Species.HIPPOWDON ]}, { 1: [ Species.RELLOR ], 29: [ Species.RABSCA ]}], - [TimeOfDay.DUSK]: [{ 1: [ Species.CACNEA ], 32: [ Species.CACTURNE ]}, { 1: [ Species.SANDILE ], 29: [ Species.KROKOROK ], 40: [ Species.KROOKODILE ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.CACNEA ], 32: [ Species.CACTURNE ]}, { 1: [ Species.SANDILE ], 29: [ Species.KROKOROK ], 40: [ Species.KROOKODILE ]}], - [TimeOfDay.ALL]: [{ 1: [ Species.SANDSHREW ], 22: [ Species.SANDSLASH ]}, { 1: [ Species.SKORUPI ], 40: [ Species.DRAPION ]}, { 1: [ Species.SILICOBRA ], 36: [ Species.SANDACONDA ]}] + [TimeOfDay.DAWN]: [ SpeciesId.TRAPINCH, { 1: [ SpeciesId.HIPPOPOTAS ], 34: [ SpeciesId.HIPPOWDON ]}, { 1: [ SpeciesId.RELLOR ], 29: [ SpeciesId.RABSCA ]}], + [TimeOfDay.DAY]: [ SpeciesId.TRAPINCH, { 1: [ SpeciesId.HIPPOPOTAS ], 34: [ SpeciesId.HIPPOWDON ]}, { 1: [ SpeciesId.RELLOR ], 29: [ SpeciesId.RABSCA ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.CACNEA ], 32: [ SpeciesId.CACTURNE ]}, { 1: [ SpeciesId.SANDILE ], 29: [ SpeciesId.KROKOROK ], 40: [ SpeciesId.KROOKODILE ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.CACNEA ], 32: [ SpeciesId.CACTURNE ]}, { 1: [ SpeciesId.SANDILE ], 29: [ SpeciesId.KROKOROK ], 40: [ SpeciesId.KROOKODILE ]}], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.SANDSHREW ], 22: [ SpeciesId.SANDSLASH ]}, { 1: [ SpeciesId.SKORUPI ], 40: [ SpeciesId.DRAPION ]}, { 1: [ SpeciesId.SILICOBRA ], 36: [ SpeciesId.SANDACONDA ]}] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.SANDILE ], 29: [ Species.KROKOROK ], 40: [ Species.KROOKODILE ]}, Species.HELIOPTILE ], - [TimeOfDay.DAY]: [{ 1: [ Species.SANDILE ], 29: [ Species.KROKOROK ], 40: [ Species.KROOKODILE ]}, Species.HELIOPTILE ], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.SANDILE ], 29: [ SpeciesId.KROKOROK ], 40: [ SpeciesId.KROOKODILE ]}, SpeciesId.HELIOPTILE ], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.SANDILE ], 29: [ SpeciesId.KROKOROK ], 40: [ SpeciesId.KROOKODILE ]}, SpeciesId.HELIOPTILE ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.MARACTUS, { 1: [ Species.BRAMBLIN ], 30: [ Species.BRAMBLEGHAST ]}, Species.ORTHWORM ] + [TimeOfDay.ALL]: [ SpeciesId.MARACTUS, { 1: [ SpeciesId.BRAMBLIN ], 30: [ SpeciesId.BRAMBLEGHAST ]}, SpeciesId.ORTHWORM ] }, [BiomePoolTier.RARE]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.VIBRAVA ], 45: [ Species.FLYGON ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.VIBRAVA ], 45: [ Species.FLYGON ]}], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.VIBRAVA ], 45: [ SpeciesId.FLYGON ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.VIBRAVA ], 45: [ SpeciesId.FLYGON ]}], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ Species.DARUMAKA ], 35: [ Species.DARMANITAN ]}] + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.DARUMAKA ], 35: [ SpeciesId.DARMANITAN ]}] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ Species.LILEEP ], 40: [ Species.CRADILY ]}, { 1: [ Species.ANORITH ], 40: [ Species.ARMALDO ]}]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGIROCK, Species.TAPU_BULU, Species.PHEROMOSA ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.LILEEP ], 40: [ SpeciesId.CRADILY ]}, { 1: [ SpeciesId.ANORITH ], 40: [ SpeciesId.ARMALDO ]}]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIROCK, SpeciesId.TAPU_BULU, SpeciesId.PHEROMOSA ]}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.HIPPOWDON, Species.HELIOLISK, Species.RABSCA ], - [TimeOfDay.DAY]: [ Species.HIPPOWDON, Species.HELIOLISK, Species.RABSCA ], - [TimeOfDay.DUSK]: [ Species.CACTURNE, Species.KROOKODILE ], - [TimeOfDay.NIGHT]: [ Species.CACTURNE, Species.KROOKODILE ], - [TimeOfDay.ALL]: [ Species.SANDSLASH, Species.DRAPION, Species.DARMANITAN, Species.MARACTUS, Species.SANDACONDA, Species.BRAMBLEGHAST ] + [TimeOfDay.DAWN]: [ SpeciesId.HIPPOWDON, SpeciesId.HELIOLISK, SpeciesId.RABSCA ], + [TimeOfDay.DAY]: [ SpeciesId.HIPPOWDON, SpeciesId.HELIOLISK, SpeciesId.RABSCA ], + [TimeOfDay.DUSK]: [ SpeciesId.CACTURNE, SpeciesId.KROOKODILE ], + [TimeOfDay.NIGHT]: [ SpeciesId.CACTURNE, SpeciesId.KROOKODILE ], + [TimeOfDay.ALL]: [ SpeciesId.SANDSLASH, SpeciesId.DRAPION, SpeciesId.DARMANITAN, SpeciesId.MARACTUS, SpeciesId.SANDACONDA, SpeciesId.BRAMBLEGHAST ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CRADILY, Species.ARMALDO ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGIROCK, Species.TAPU_BULU, Species.PHEROMOSA ]}, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CRADILY, SpeciesId.ARMALDO ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIROCK, SpeciesId.TAPU_BULU, SpeciesId.PHEROMOSA ]}, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} }, - [Biome.ICE_CAVE]: { + [BiomeId.ICE_CAVE]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.SEEL ], 34: [ Species.DEWGONG ]}, - { 1: [ Species.SWINUB ], 33: [ Species.PILOSWINE ]}, - { 1: [ Species.SNOVER ], 40: [ Species.ABOMASNOW ]}, - { 1: [ Species.VANILLITE ], 35: [ Species.VANILLISH ], 47: [ Species.VANILLUXE ]}, - { 1: [ Species.CUBCHOO ], 37: [ Species.BEARTIC ]}, - { 1: [ Species.BERGMITE ], 37: [ Species.AVALUGG ]}, - Species.CRABRAWLER, - { 1: [ Species.SNOM ], 20: [ Species.FROSMOTH ]} + { 1: [ SpeciesId.SEEL ], 34: [ SpeciesId.DEWGONG ]}, + { 1: [ SpeciesId.SWINUB ], 33: [ SpeciesId.PILOSWINE ]}, + { 1: [ SpeciesId.SNOVER ], 40: [ SpeciesId.ABOMASNOW ]}, + { 1: [ SpeciesId.VANILLITE ], 35: [ SpeciesId.VANILLISH ], 47: [ SpeciesId.VANILLUXE ]}, + { 1: [ SpeciesId.CUBCHOO ], 37: [ SpeciesId.BEARTIC ]}, + { 1: [ SpeciesId.BERGMITE ], 37: [ SpeciesId.AVALUGG ]}, + SpeciesId.CRABRAWLER, + { 1: [ SpeciesId.SNOM ], 20: [ SpeciesId.FROSMOTH ]} ] }, [BiomePoolTier.UNCOMMON]: { @@ -892,186 +892,186 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - Species.SNEASEL, - { 1: [ Species.SNORUNT ], 42: [ Species.GLALIE ]}, - { 1: [ Species.SPHEAL ], 32: [ Species.SEALEO ], 44: [ Species.WALREIN ]}, - Species.EISCUE, - { 1: [ Species.CETODDLE ], 30: [ Species.CETITAN ]} + SpeciesId.SNEASEL, + { 1: [ SpeciesId.SNORUNT ], 42: [ SpeciesId.GLALIE ]}, + { 1: [ SpeciesId.SPHEAL ], 32: [ SpeciesId.SEALEO ], 44: [ SpeciesId.WALREIN ]}, + SpeciesId.EISCUE, + { 1: [ SpeciesId.CETODDLE ], 30: [ SpeciesId.CETITAN ]} ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.JYNX, Species.LAPRAS, Species.FROSLASS, Species.CRYOGONAL ]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DELIBIRD, Species.ROTOM, { 1: [ Species.AMAURA ], 59: [ Species.AURORUS ]}]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ARTICUNO, Species.REGICE ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.JYNX, SpeciesId.LAPRAS, SpeciesId.FROSLASS, SpeciesId.CRYOGONAL ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DELIBIRD, SpeciesId.ROTOM, { 1: [ SpeciesId.AMAURA ], 59: [ SpeciesId.AURORUS ]}]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ARTICUNO, SpeciesId.REGICE ]}, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.DEWGONG, Species.GLALIE, Species.WALREIN, Species.WEAVILE, Species.MAMOSWINE, Species.FROSLASS, Species.VANILLUXE, Species.BEARTIC, Species.CRYOGONAL, Species.AVALUGG, Species.CRABOMINABLE, Species.CETITAN ] + [TimeOfDay.ALL]: [ SpeciesId.DEWGONG, SpeciesId.GLALIE, SpeciesId.WALREIN, SpeciesId.WEAVILE, SpeciesId.MAMOSWINE, SpeciesId.FROSLASS, SpeciesId.VANILLUXE, SpeciesId.BEARTIC, SpeciesId.CRYOGONAL, SpeciesId.AVALUGG, SpeciesId.CRABOMINABLE, SpeciesId.CETITAN ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.JYNX, Species.LAPRAS, Species.GLACEON, Species.AURORUS ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ARTICUNO, Species.REGICE, Species.ROTOM ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KYUREM ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.JYNX, SpeciesId.LAPRAS, SpeciesId.GLACEON, SpeciesId.AURORUS ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ARTICUNO, SpeciesId.REGICE, SpeciesId.ROTOM ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KYUREM ]} }, - [Biome.MEADOW]: { + [BiomeId.MEADOW]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.LEDYBA ], 18: [ Species.LEDIAN ]}, Species.ROSELIA, Species.COTTONEE, Species.MINCCINO ], - [TimeOfDay.DAY]: [ Species.ROSELIA, Species.COTTONEE, Species.MINCCINO ], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.LEDYBA ], 18: [ SpeciesId.LEDIAN ]}, SpeciesId.ROSELIA, SpeciesId.COTTONEE, SpeciesId.MINCCINO ], + [TimeOfDay.DAY]: [ SpeciesId.ROSELIA, SpeciesId.COTTONEE, SpeciesId.MINCCINO ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.BLITZLE ], 27: [ Species.ZEBSTRIKA ]}, - { 1: [ Species.FLABEBE ], 19: [ Species.FLOETTE ]}, - { 1: [ Species.CUTIEFLY ], 25: [ Species.RIBOMBEE ]}, - { 1: [ Species.GOSSIFLEUR ], 20: [ Species.ELDEGOSS ]}, - { 1: [ Species.WOOLOO ], 24: [ Species.DUBWOOL ]} + { 1: [ SpeciesId.BLITZLE ], 27: [ SpeciesId.ZEBSTRIKA ]}, + { 1: [ SpeciesId.FLABEBE ], 19: [ SpeciesId.FLOETTE ]}, + { 1: [ SpeciesId.CUTIEFLY ], 25: [ SpeciesId.RIBOMBEE ]}, + { 1: [ SpeciesId.GOSSIFLEUR ], 20: [ SpeciesId.ELDEGOSS ]}, + { 1: [ SpeciesId.WOOLOO ], 24: [ SpeciesId.DUBWOOL ]} ] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [ - { 1: [ Species.PONYTA ], 40: [ Species.RAPIDASH ]}, - { 1: [ Species.SNUBBULL ], 23: [ Species.GRANBULL ]}, - { 1: [ Species.SKITTY ], 30: [ Species.DELCATTY ]}, - Species.BOUFFALANT, - { 1: [ Species.SMOLIV ], 25: [ Species.DOLLIV ], 35: [ Species.ARBOLIVA ]} + { 1: [ SpeciesId.PONYTA ], 40: [ SpeciesId.RAPIDASH ]}, + { 1: [ SpeciesId.SNUBBULL ], 23: [ SpeciesId.GRANBULL ]}, + { 1: [ SpeciesId.SKITTY ], 30: [ SpeciesId.DELCATTY ]}, + SpeciesId.BOUFFALANT, + { 1: [ SpeciesId.SMOLIV ], 25: [ SpeciesId.DOLLIV ], 35: [ SpeciesId.ARBOLIVA ]} ], [TimeOfDay.DAY]: [ - { 1: [ Species.PONYTA ], 40: [ Species.RAPIDASH ]}, - { 1: [ Species.SNUBBULL ], 23: [ Species.GRANBULL ]}, - { 1: [ Species.SKITTY ], 30: [ Species.DELCATTY ]}, - Species.BOUFFALANT, - { 1: [ Species.SMOLIV ], 25: [ Species.DOLLIV ], 35: [ Species.ARBOLIVA ]} + { 1: [ SpeciesId.PONYTA ], 40: [ SpeciesId.RAPIDASH ]}, + { 1: [ SpeciesId.SNUBBULL ], 23: [ SpeciesId.GRANBULL ]}, + { 1: [ SpeciesId.SKITTY ], 30: [ SpeciesId.DELCATTY ]}, + SpeciesId.BOUFFALANT, + { 1: [ SpeciesId.SMOLIV ], 25: [ SpeciesId.DOLLIV ], 35: [ SpeciesId.ARBOLIVA ]} ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.JIGGLYPUFF ], 30: [ Species.WIGGLYTUFF ]}, - { 1: [ Species.MAREEP ], 15: [ Species.FLAAFFY ], 30: [ Species.AMPHAROS ]}, - { 1: [ Species.RALTS ], 20: [ Species.KIRLIA ], 30: [ Species.GARDEVOIR ]}, - { 1: [ Species.GLAMEOW ], 38: [ Species.PURUGLY ]}, - Species.ORICORIO + { 1: [ SpeciesId.JIGGLYPUFF ], 30: [ SpeciesId.WIGGLYTUFF ]}, + { 1: [ SpeciesId.MAREEP ], 15: [ SpeciesId.FLAAFFY ], 30: [ SpeciesId.AMPHAROS ]}, + { 1: [ SpeciesId.RALTS ], 20: [ SpeciesId.KIRLIA ], 30: [ SpeciesId.GARDEVOIR ]}, + { 1: [ SpeciesId.GLAMEOW ], 38: [ SpeciesId.PURUGLY ]}, + SpeciesId.ORICORIO ] }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], - [TimeOfDay.NIGHT]: [ Species.VOLBEAT, Species.ILLUMISE ], - [TimeOfDay.ALL]: [ Species.TAUROS, Species.EEVEE, Species.MILTANK, Species.SPINDA, { 1: [ Species.APPLIN ], 30: [ Species.DIPPLIN ]}, { 1: [ Species.SPRIGATITO ], 16: [ Species.FLORAGATO ], 36: [ Species.MEOWSCARADA ]}] + [TimeOfDay.NIGHT]: [ SpeciesId.VOLBEAT, SpeciesId.ILLUMISE ], + [TimeOfDay.ALL]: [ SpeciesId.TAUROS, SpeciesId.EEVEE, SpeciesId.MILTANK, SpeciesId.SPINDA, { 1: [ SpeciesId.APPLIN ], 30: [ SpeciesId.DIPPLIN ]}, { 1: [ SpeciesId.SPRIGATITO ], 16: [ SpeciesId.FLORAGATO ], 36: [ SpeciesId.MEOWSCARADA ]}] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CHANSEY, Species.SYLVEON ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MELOETTA ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CHANSEY, SpeciesId.SYLVEON ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MELOETTA ]}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.LEDIAN, Species.GRANBULL, Species.DELCATTY, Species.ROSERADE, Species.CINCCINO, Species.BOUFFALANT, Species.ARBOLIVA ], - [TimeOfDay.DAY]: [ Species.GRANBULL, Species.DELCATTY, Species.ROSERADE, Species.CINCCINO, Species.BOUFFALANT, Species.ARBOLIVA ], + [TimeOfDay.DAWN]: [ SpeciesId.LEDIAN, SpeciesId.GRANBULL, SpeciesId.DELCATTY, SpeciesId.ROSERADE, SpeciesId.CINCCINO, SpeciesId.BOUFFALANT, SpeciesId.ARBOLIVA ], + [TimeOfDay.DAY]: [ SpeciesId.GRANBULL, SpeciesId.DELCATTY, SpeciesId.ROSERADE, SpeciesId.CINCCINO, SpeciesId.BOUFFALANT, SpeciesId.ARBOLIVA ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.TAUROS, Species.MILTANK, Species.GARDEVOIR, Species.PURUGLY, Species.ZEBSTRIKA, Species.FLORGES, Species.RIBOMBEE, Species.DUBWOOL ] + [TimeOfDay.ALL]: [ SpeciesId.TAUROS, SpeciesId.MILTANK, SpeciesId.GARDEVOIR, SpeciesId.PURUGLY, SpeciesId.ZEBSTRIKA, SpeciesId.FLORGES, SpeciesId.RIBOMBEE, SpeciesId.DUBWOOL ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ Species.HISUI_LILLIGANT ], [TimeOfDay.DAY]: [ Species.HISUI_LILLIGANT ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.BLISSEY, Species.SYLVEON, Species.FLAPPLE, Species.APPLETUN, Species.MEOWSCARADA, Species.HYDRAPPLE ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MELOETTA ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.SHAYMIN ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.HISUI_LILLIGANT ], [TimeOfDay.DAY]: [ SpeciesId.HISUI_LILLIGANT ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLISSEY, SpeciesId.SYLVEON, SpeciesId.FLAPPLE, SpeciesId.APPLETUN, SpeciesId.MEOWSCARADA, SpeciesId.HYDRAPPLE ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MELOETTA ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SHAYMIN ]} }, - [Biome.POWER_PLANT]: { + [BiomeId.POWER_PLANT]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - Species.PIKACHU, - { 1: [ Species.MAGNEMITE ], 30: [ Species.MAGNETON ]}, - { 1: [ Species.VOLTORB ], 30: [ Species.ELECTRODE ]}, - { 1: [ Species.ELECTRIKE ], 26: [ Species.MANECTRIC ]}, - { 1: [ Species.SHINX ], 15: [ Species.LUXIO ], 30: [ Species.LUXRAY ]}, - Species.DEDENNE, - { 1: [ Species.GRUBBIN ], 20: [ Species.CHARJABUG ]}, - { 1: [ Species.PAWMI ], 18: [ Species.PAWMO ], 32: [ Species.PAWMOT ]}, - { 1: [ Species.TADBULB ], 30: [ Species.BELLIBOLT ]} + SpeciesId.PIKACHU, + { 1: [ SpeciesId.MAGNEMITE ], 30: [ SpeciesId.MAGNETON ]}, + { 1: [ SpeciesId.VOLTORB ], 30: [ SpeciesId.ELECTRODE ]}, + { 1: [ SpeciesId.ELECTRIKE ], 26: [ SpeciesId.MANECTRIC ]}, + { 1: [ SpeciesId.SHINX ], 15: [ SpeciesId.LUXIO ], 30: [ SpeciesId.LUXRAY ]}, + SpeciesId.DEDENNE, + { 1: [ SpeciesId.GRUBBIN ], 20: [ SpeciesId.CHARJABUG ]}, + { 1: [ SpeciesId.PAWMI ], 18: [ SpeciesId.PAWMO ], 32: [ SpeciesId.PAWMOT ]}, + { 1: [ SpeciesId.TADBULB ], 30: [ SpeciesId.BELLIBOLT ]} ] }, - [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ELECTABUZZ, Species.PLUSLE, Species.MINUN, Species.PACHIRISU, Species.EMOLGA, Species.TOGEDEMARU ]}, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ Species.MAREEP ], 15: [ Species.FLAAFFY ]}]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.JOLTEON, Species.HISUI_VOLTORB ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.RAIKOU, Species.THUNDURUS, Species.XURKITREE, Species.ZERAORA, Species.REGIELEKI ]}, + [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ELECTABUZZ, SpeciesId.PLUSLE, SpeciesId.MINUN, SpeciesId.PACHIRISU, SpeciesId.EMOLGA, SpeciesId.TOGEDEMARU ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.MAREEP ], 15: [ SpeciesId.FLAAFFY ]}]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.JOLTEON, SpeciesId.HISUI_VOLTORB ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.RAIKOU, SpeciesId.THUNDURUS, SpeciesId.XURKITREE, SpeciesId.ZERAORA, SpeciesId.REGIELEKI ]}, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.RAICHU, Species.MANECTRIC, Species.LUXRAY, Species.MAGNEZONE, Species.ELECTIVIRE, Species.DEDENNE, Species.VIKAVOLT, Species.TOGEDEMARU, Species.PAWMOT, Species.BELLIBOLT ] + [TimeOfDay.ALL]: [ SpeciesId.RAICHU, SpeciesId.MANECTRIC, SpeciesId.LUXRAY, SpeciesId.MAGNEZONE, SpeciesId.ELECTIVIRE, SpeciesId.DEDENNE, SpeciesId.VIKAVOLT, SpeciesId.TOGEDEMARU, SpeciesId.PAWMOT, SpeciesId.BELLIBOLT ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.JOLTEON, Species.AMPHAROS, Species.HISUI_ELECTRODE ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ZAPDOS, Species.RAIKOU, Species.THUNDURUS, Species.XURKITREE, Species.ZERAORA, Species.REGIELEKI ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ZEKROM ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.JOLTEON, SpeciesId.AMPHAROS, SpeciesId.HISUI_ELECTRODE ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ZAPDOS, SpeciesId.RAIKOU, SpeciesId.THUNDURUS, SpeciesId.XURKITREE, SpeciesId.ZERAORA, SpeciesId.REGIELEKI ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ZEKROM ]} }, - [Biome.VOLCANO]: { + [BiomeId.VOLCANO]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - Species.VULPIX, - Species.GROWLITHE, - { 1: [ Species.PONYTA ], 40: [ Species.RAPIDASH ]}, - { 1: [ Species.SLUGMA ], 38: [ Species.MAGCARGO ]}, - { 1: [ Species.NUMEL ], 33: [ Species.CAMERUPT ]}, - { 1: [ Species.SALANDIT ], 33: [ Species.SALAZZLE ]}, - { 1: [ Species.ROLYCOLY ], 18: [ Species.CARKOL ], 34: [ Species.COALOSSAL ]} + SpeciesId.VULPIX, + SpeciesId.GROWLITHE, + { 1: [ SpeciesId.PONYTA ], 40: [ SpeciesId.RAPIDASH ]}, + { 1: [ SpeciesId.SLUGMA ], 38: [ SpeciesId.MAGCARGO ]}, + { 1: [ SpeciesId.NUMEL ], 33: [ SpeciesId.CAMERUPT ]}, + { 1: [ SpeciesId.SALANDIT ], 33: [ SpeciesId.SALAZZLE ]}, + { 1: [ SpeciesId.ROLYCOLY ], 18: [ SpeciesId.CARKOL ], 34: [ SpeciesId.COALOSSAL ]} ] }, - [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MAGMAR, Species.TORKOAL, { 1: [ Species.PANSEAR ], 30: [ Species.SIMISEAR ]}, Species.HEATMOR, Species.TURTONATOR ]}, + [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MAGMAR, SpeciesId.TORKOAL, { 1: [ SpeciesId.PANSEAR ], 30: [ SpeciesId.SIMISEAR ]}, SpeciesId.HEATMOR, SpeciesId.TURTONATOR ]}, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.CHARMANDER ], 16: [ Species.CHARMELEON ], 36: [ Species.CHARIZARD ]}, - { 1: [ Species.CYNDAQUIL ], 14: [ Species.QUILAVA ], 36: [ Species.TYPHLOSION ]}, - { 1: [ Species.CHIMCHAR ], 14: [ Species.MONFERNO ], 36: [ Species.INFERNAPE ]}, - { 1: [ Species.TEPIG ], 17: [ Species.PIGNITE ], 36: [ Species.EMBOAR ]}, - { 1: [ Species.FENNEKIN ], 16: [ Species.BRAIXEN ], 36: [ Species.DELPHOX ]}, - { 1: [ Species.LITTEN ], 17: [ Species.TORRACAT ], 34: [ Species.INCINEROAR ]}, - { 1: [ Species.SCORBUNNY ], 16: [ Species.RABOOT ], 35: [ Species.CINDERACE ]}, - { 1: [ Species.CHARCADET ], 30: [ Species.ARMAROUGE ]} + { 1: [ SpeciesId.CHARMANDER ], 16: [ SpeciesId.CHARMELEON ], 36: [ SpeciesId.CHARIZARD ]}, + { 1: [ SpeciesId.CYNDAQUIL ], 14: [ SpeciesId.QUILAVA ], 36: [ SpeciesId.TYPHLOSION ]}, + { 1: [ SpeciesId.CHIMCHAR ], 14: [ SpeciesId.MONFERNO ], 36: [ SpeciesId.INFERNAPE ]}, + { 1: [ SpeciesId.TEPIG ], 17: [ SpeciesId.PIGNITE ], 36: [ SpeciesId.EMBOAR ]}, + { 1: [ SpeciesId.FENNEKIN ], 16: [ SpeciesId.BRAIXEN ], 36: [ SpeciesId.DELPHOX ]}, + { 1: [ SpeciesId.LITTEN ], 17: [ SpeciesId.TORRACAT ], 34: [ SpeciesId.INCINEROAR ]}, + { 1: [ SpeciesId.SCORBUNNY ], 16: [ SpeciesId.RABOOT ], 35: [ SpeciesId.CINDERACE ]}, + { 1: [ SpeciesId.CHARCADET ], 30: [ SpeciesId.ARMAROUGE ]} ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.FLAREON, Species.ROTOM, { 1: [ Species.LARVESTA ], 59: [ Species.VOLCARONA ]}, Species.HISUI_GROWLITHE ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ENTEI, Species.HEATRAN, Species.VOLCANION, Species.CHI_YU ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.FLAREON, SpeciesId.ROTOM, { 1: [ SpeciesId.LARVESTA ], 59: [ SpeciesId.VOLCARONA ]}, SpeciesId.HISUI_GROWLITHE ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ENTEI, SpeciesId.HEATRAN, SpeciesId.VOLCANION, SpeciesId.CHI_YU ]}, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.NINETALES, Species.ARCANINE, Species.RAPIDASH, Species.MAGCARGO, Species.CAMERUPT, Species.TORKOAL, Species.MAGMORTAR, Species.SIMISEAR, Species.HEATMOR, Species.SALAZZLE, Species.TURTONATOR, Species.COALOSSAL ] + [TimeOfDay.ALL]: [ SpeciesId.NINETALES, SpeciesId.ARCANINE, SpeciesId.RAPIDASH, SpeciesId.MAGCARGO, SpeciesId.CAMERUPT, SpeciesId.TORKOAL, SpeciesId.MAGMORTAR, SpeciesId.SIMISEAR, SpeciesId.HEATMOR, SpeciesId.SALAZZLE, SpeciesId.TURTONATOR, SpeciesId.COALOSSAL ] }, [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.CHARIZARD, Species.FLAREON, Species.TYPHLOSION, Species.INFERNAPE, Species.EMBOAR, Species.VOLCARONA, Species.DELPHOX, Species.INCINEROAR, Species.CINDERACE, Species.ARMAROUGE, Species.HISUI_ARCANINE ] + [TimeOfDay.ALL]: [ SpeciesId.CHARIZARD, SpeciesId.FLAREON, SpeciesId.TYPHLOSION, SpeciesId.INFERNAPE, SpeciesId.EMBOAR, SpeciesId.VOLCARONA, SpeciesId.DELPHOX, SpeciesId.INCINEROAR, SpeciesId.CINDERACE, SpeciesId.ARMAROUGE, SpeciesId.HISUI_ARCANINE ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MOLTRES, Species.ENTEI, Species.ROTOM, Species.HEATRAN, Species.VOLCANION, Species.CHI_YU ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.RESHIRAM ]} + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MOLTRES, SpeciesId.ENTEI, SpeciesId.ROTOM, SpeciesId.HEATRAN, SpeciesId.VOLCANION, SpeciesId.CHI_YU ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.RESHIRAM ]} }, - [Biome.GRAVEYARD]: { + [BiomeId.GRAVEYARD]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.GASTLY ], 25: [ Species.HAUNTER ]}, - { 1: [ Species.SHUPPET ], 37: [ Species.BANETTE ]}, - { 1: [ Species.DUSKULL ], 37: [ Species.DUSCLOPS ]}, - { 1: [ Species.DRIFLOON ], 28: [ Species.DRIFBLIM ]}, - { 1: [ Species.LITWICK ], 41: [ Species.LAMPENT ]}, - Species.PHANTUMP, - Species.PUMPKABOO, - { 1: [ Species.GREAVARD ], 60: [ Species.HOUNDSTONE ]} + { 1: [ SpeciesId.GASTLY ], 25: [ SpeciesId.HAUNTER ]}, + { 1: [ SpeciesId.SHUPPET ], 37: [ SpeciesId.BANETTE ]}, + { 1: [ SpeciesId.DUSKULL ], 37: [ SpeciesId.DUSCLOPS ]}, + { 1: [ SpeciesId.DRIFLOON ], 28: [ SpeciesId.DRIFBLIM ]}, + { 1: [ SpeciesId.LITWICK ], 41: [ SpeciesId.LAMPENT ]}, + SpeciesId.PHANTUMP, + SpeciesId.PUMPKABOO, + { 1: [ SpeciesId.GREAVARD ], 60: [ SpeciesId.HOUNDSTONE ]} ] }, [BiomePoolTier.UNCOMMON]: { @@ -1079,34 +1079,34 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ Species.CUBONE ], 28: [ Species.MAROWAK ]}, { 1: [ Species.YAMASK ], 34: [ Species.COFAGRIGUS ]}, { 1: [ Species.SINISTEA ], 30: [ Species.POLTEAGEIST ]}] + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.CUBONE ], 28: [ SpeciesId.MAROWAK ]}, { 1: [ SpeciesId.YAMASK ], 34: [ SpeciesId.COFAGRIGUS ]}, { 1: [ SpeciesId.SINISTEA ], 30: [ SpeciesId.POLTEAGEIST ]}] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MISDREAVUS, Species.MIMIKYU, { 1: [ Species.FUECOCO ], 16: [ Species.CROCALOR ], 36: [ Species.SKELEDIRGE ]}, Species.CERULEDGE ]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.SPIRITOMB ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MARSHADOW, Species.SPECTRIER ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MISDREAVUS, SpeciesId.MIMIKYU, { 1: [ SpeciesId.FUECOCO ], 16: [ SpeciesId.CROCALOR ], 36: [ SpeciesId.SKELEDIRGE ]}, SpeciesId.CERULEDGE ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SPIRITOMB ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MARSHADOW, SpeciesId.SPECTRIER ]}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.MAROWAK ], - [TimeOfDay.DAY]: [ Species.MAROWAK ], - [TimeOfDay.DUSK]: [ Species.MAROWAK ], + [TimeOfDay.DAWN]: [ SpeciesId.MAROWAK ], + [TimeOfDay.DAY]: [ SpeciesId.MAROWAK ], + [TimeOfDay.DUSK]: [ SpeciesId.MAROWAK ], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.GENGAR, Species.BANETTE, Species.DRIFBLIM, Species.MISMAGIUS, Species.DUSKNOIR, Species.CHANDELURE, Species.TREVENANT, Species.GOURGEIST, Species.MIMIKYU, Species.POLTEAGEIST, Species.HOUNDSTONE ] + [TimeOfDay.ALL]: [ SpeciesId.GENGAR, SpeciesId.BANETTE, SpeciesId.DRIFBLIM, SpeciesId.MISMAGIUS, SpeciesId.DUSKNOIR, SpeciesId.CHANDELURE, SpeciesId.TREVENANT, SpeciesId.GOURGEIST, SpeciesId.MIMIKYU, SpeciesId.POLTEAGEIST, SpeciesId.HOUNDSTONE ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.SKELEDIRGE, Species.CERULEDGE, Species.HISUI_TYPHLOSION ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MARSHADOW, Species.SPECTRIER ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GIRATINA ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SKELEDIRGE, SpeciesId.CERULEDGE, SpeciesId.HISUI_TYPHLOSION ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MARSHADOW, SpeciesId.SPECTRIER ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GIRATINA ]} }, - [Biome.DOJO]: { + [BiomeId.DOJO]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.MANKEY ], 28: [ Species.PRIMEAPE ], 75: [ Species.ANNIHILAPE ]}, - { 1: [ Species.MAKUHITA ], 24: [ Species.HARIYAMA ]}, - { 1: [ Species.MEDITITE ], 37: [ Species.MEDICHAM ]}, - { 1: [ Species.STUFFUL ], 27: [ Species.BEWEAR ]}, - { 1: [ Species.CLOBBOPUS ], 55: [ Species.GRAPPLOCT ]} + { 1: [ SpeciesId.MANKEY ], 28: [ SpeciesId.PRIMEAPE ], 75: [ SpeciesId.ANNIHILAPE ]}, + { 1: [ SpeciesId.MAKUHITA ], 24: [ SpeciesId.HARIYAMA ]}, + { 1: [ SpeciesId.MEDITITE ], 37: [ SpeciesId.MEDICHAM ]}, + { 1: [ SpeciesId.STUFFUL ], 27: [ SpeciesId.BEWEAR ]}, + { 1: [ SpeciesId.CLOBBOPUS ], 55: [ SpeciesId.GRAPPLOCT ]} ] }, [BiomePoolTier.UNCOMMON]: { @@ -1114,58 +1114,58 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ Species.CROAGUNK ], 37: [ Species.TOXICROAK ]}, { 1: [ Species.SCRAGGY ], 39: [ Species.SCRAFTY ]}, { 1: [ Species.MIENFOO ], 50: [ Species.MIENSHAO ]}] + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.CROAGUNK ], 37: [ SpeciesId.TOXICROAK ]}, { 1: [ SpeciesId.SCRAGGY ], 39: [ SpeciesId.SCRAFTY ]}, { 1: [ SpeciesId.MIENFOO ], 50: [ SpeciesId.MIENSHAO ]}] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.HITMONLEE, Species.HITMONCHAN, Species.LUCARIO, Species.THROH, Species.SAWK, { 1: [ Species.PANCHAM ], 52: [ Species.PANGORO ]}]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.HITMONTOP, Species.GALLADE, Species.GALAR_FARFETCHD ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.TERRAKION, Species.KUBFU, Species.GALAR_ZAPDOS ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HITMONLEE, SpeciesId.HITMONCHAN, SpeciesId.LUCARIO, SpeciesId.THROH, SpeciesId.SAWK, { 1: [ SpeciesId.PANCHAM ], 52: [ SpeciesId.PANGORO ]}]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HITMONTOP, SpeciesId.GALLADE, SpeciesId.GALAR_FARFETCHD ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TERRAKION, SpeciesId.KUBFU, SpeciesId.GALAR_ZAPDOS ]}, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.HITMONLEE, Species.HITMONCHAN, Species.HARIYAMA, Species.MEDICHAM, Species.LUCARIO, Species.TOXICROAK, Species.THROH, Species.SAWK, Species.SCRAFTY, Species.MIENSHAO, Species.BEWEAR, Species.GRAPPLOCT, Species.ANNIHILAPE ] + [TimeOfDay.ALL]: [ SpeciesId.HITMONLEE, SpeciesId.HITMONCHAN, SpeciesId.HARIYAMA, SpeciesId.MEDICHAM, SpeciesId.LUCARIO, SpeciesId.TOXICROAK, SpeciesId.THROH, SpeciesId.SAWK, SpeciesId.SCRAFTY, SpeciesId.MIENSHAO, SpeciesId.BEWEAR, SpeciesId.GRAPPLOCT, SpeciesId.ANNIHILAPE ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.HITMONTOP, Species.GALLADE, Species.PANGORO, Species.SIRFETCHD, Species.HISUI_DECIDUEYE ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.TERRAKION, Species.URSHIFU ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ZAMAZENTA, Species.GALAR_ZAPDOS ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HITMONTOP, SpeciesId.GALLADE, SpeciesId.PANGORO, SpeciesId.SIRFETCHD, SpeciesId.HISUI_DECIDUEYE ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TERRAKION, SpeciesId.URSHIFU ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ZAMAZENTA, SpeciesId.GALAR_ZAPDOS ]} }, - [Biome.FACTORY]: { + [BiomeId.FACTORY]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.MACHOP ], 28: [ Species.MACHOKE ]}, - { 1: [ Species.MAGNEMITE ], 30: [ Species.MAGNETON ]}, - { 1: [ Species.VOLTORB ], 30: [ Species.ELECTRODE ]}, - { 1: [ Species.TIMBURR ], 25: [ Species.GURDURR ]}, - { 1: [ Species.KLINK ], 38: [ Species.KLANG ], 49: [ Species.KLINKLANG ]} + { 1: [ SpeciesId.MACHOP ], 28: [ SpeciesId.MACHOKE ]}, + { 1: [ SpeciesId.MAGNEMITE ], 30: [ SpeciesId.MAGNETON ]}, + { 1: [ SpeciesId.VOLTORB ], 30: [ SpeciesId.ELECTRODE ]}, + { 1: [ SpeciesId.TIMBURR ], 25: [ SpeciesId.GURDURR ]}, + { 1: [ SpeciesId.KLINK ], 38: [ SpeciesId.KLANG ], 49: [ SpeciesId.KLINKLANG ]} ] }, - [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ Species.BRONZOR ], 33: [ Species.BRONZONG ]}, Species.KLEFKI ]}, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ Species.PORYGON ], 30: [ Species.PORYGON2 ]}]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ Species.BELDUM ], 20: [ Species.METANG ], 45: [ Species.METAGROSS ]}]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GENESECT, Species.MAGEARNA ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KLINKLANG, Species.KLEFKI ]}, + [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.BRONZOR ], 33: [ SpeciesId.BRONZONG ]}, SpeciesId.KLEFKI ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.PORYGON ], 30: [ SpeciesId.PORYGON2 ]}]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.BELDUM ], 20: [ SpeciesId.METANG ], 45: [ SpeciesId.METAGROSS ]}]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GENESECT, SpeciesId.MAGEARNA ]}, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KLINKLANG, SpeciesId.KLEFKI ]}, [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GENESECT, Species.MAGEARNA ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GENESECT, SpeciesId.MAGEARNA ]}, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} }, - [Biome.RUINS]: { + [BiomeId.RUINS]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.DROWZEE ], 26: [ Species.HYPNO ]}, - { 1: [ Species.NATU ], 25: [ Species.XATU ]}, - Species.UNOWN, - { 1: [ Species.SPOINK ], 32: [ Species.GRUMPIG ]}, - { 1: [ Species.BALTOY ], 36: [ Species.CLAYDOL ]}, - { 1: [ Species.ELGYEM ], 42: [ Species.BEHEEYEM ]} + { 1: [ SpeciesId.DROWZEE ], 26: [ SpeciesId.HYPNO ]}, + { 1: [ SpeciesId.NATU ], 25: [ SpeciesId.XATU ]}, + SpeciesId.UNOWN, + { 1: [ SpeciesId.SPOINK ], 32: [ SpeciesId.GRUMPIG ]}, + { 1: [ SpeciesId.BALTOY ], 36: [ SpeciesId.CLAYDOL ]}, + { 1: [ SpeciesId.ELGYEM ], 42: [ SpeciesId.BEHEEYEM ]} ] }, [BiomePoolTier.UNCOMMON]: { @@ -1173,84 +1173,84 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ Species.ABRA ], 16: [ Species.KADABRA ]}, Species.SIGILYPH, { 1: [ Species.TINKATINK ], 24: [ Species.TINKATUFF ], 38: [ Species.TINKATON ]}] + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.ABRA ], 16: [ SpeciesId.KADABRA ]}, SpeciesId.SIGILYPH, { 1: [ SpeciesId.TINKATINK ], 24: [ SpeciesId.TINKATUFF ], 38: [ SpeciesId.TINKATON ]}] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MR_MIME, Species.WOBBUFFET, { 1: [ Species.GOTHITA ], 32: [ Species.GOTHORITA ], 41: [ Species.GOTHITELLE ]}, Species.STONJOURNER ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MR_MIME, SpeciesId.WOBBUFFET, { 1: [ SpeciesId.GOTHITA ], 32: [ SpeciesId.GOTHORITA ], 41: [ SpeciesId.GOTHITELLE ]}, SpeciesId.STONJOURNER ]}, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], - [TimeOfDay.DAY]: [ Species.ESPEON ], - [TimeOfDay.DUSK]: [{ 1: [ Species.GALAR_YAMASK ], 34: [ Species.RUNERIGUS ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.GALAR_YAMASK ], 34: [ Species.RUNERIGUS ]}], - [TimeOfDay.ALL]: [{ 1: [ Species.ARCHEN ], 37: [ Species.ARCHEOPS ]}] + [TimeOfDay.DAY]: [ SpeciesId.ESPEON ], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.GALAR_YAMASK ], 34: [ SpeciesId.RUNERIGUS ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.GALAR_YAMASK ], 34: [ SpeciesId.RUNERIGUS ]}], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.ARCHEN ], 37: [ SpeciesId.ARCHEOPS ]}] }, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGISTEEL, Species.FEZANDIPITI ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ALAKAZAM, Species.HYPNO, Species.XATU, Species.GRUMPIG, Species.CLAYDOL, Species.SIGILYPH, Species.GOTHITELLE, Species.BEHEEYEM, Species.TINKATON ]}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ Species.ESPEON ], [TimeOfDay.DUSK]: [ Species.RUNERIGUS ], [TimeOfDay.NIGHT]: [ Species.RUNERIGUS ], [TimeOfDay.ALL]: [ Species.MR_MIME, Species.WOBBUFFET, Species.ARCHEOPS ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGISTEEL, Species.FEZANDIPITI ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KORAIDON ]} + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGISTEEL, SpeciesId.FEZANDIPITI ]}, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ALAKAZAM, SpeciesId.HYPNO, SpeciesId.XATU, SpeciesId.GRUMPIG, SpeciesId.CLAYDOL, SpeciesId.SIGILYPH, SpeciesId.GOTHITELLE, SpeciesId.BEHEEYEM, SpeciesId.TINKATON ]}, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ SpeciesId.ESPEON ], [TimeOfDay.DUSK]: [ SpeciesId.RUNERIGUS ], [TimeOfDay.NIGHT]: [ SpeciesId.RUNERIGUS ], [TimeOfDay.ALL]: [ SpeciesId.MR_MIME, SpeciesId.WOBBUFFET, SpeciesId.ARCHEOPS ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGISTEEL, SpeciesId.FEZANDIPITI ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KORAIDON ]} }, - [Biome.WASTELAND]: { + [BiomeId.WASTELAND]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [ - { 1: [ Species.BAGON ], 30: [ Species.SHELGON ], 50: [ Species.SALAMENCE ]}, - { 1: [ Species.GOOMY ], 40: [ Species.SLIGGOO ], 80: [ Species.GOODRA ]}, - { 1: [ Species.JANGMO_O ], 35: [ Species.HAKAMO_O ], 45: [ Species.KOMMO_O ]} + { 1: [ SpeciesId.BAGON ], 30: [ SpeciesId.SHELGON ], 50: [ SpeciesId.SALAMENCE ]}, + { 1: [ SpeciesId.GOOMY ], 40: [ SpeciesId.SLIGGOO ], 80: [ SpeciesId.GOODRA ]}, + { 1: [ SpeciesId.JANGMO_O ], 35: [ SpeciesId.HAKAMO_O ], 45: [ SpeciesId.KOMMO_O ]} ], [TimeOfDay.DAY]: [ - { 1: [ Species.BAGON ], 30: [ Species.SHELGON ], 50: [ Species.SALAMENCE ]}, - { 1: [ Species.GOOMY ], 40: [ Species.SLIGGOO ], 80: [ Species.GOODRA ]}, - { 1: [ Species.JANGMO_O ], 35: [ Species.HAKAMO_O ], 45: [ Species.KOMMO_O ]} + { 1: [ SpeciesId.BAGON ], 30: [ SpeciesId.SHELGON ], 50: [ SpeciesId.SALAMENCE ]}, + { 1: [ SpeciesId.GOOMY ], 40: [ SpeciesId.SLIGGOO ], 80: [ SpeciesId.GOODRA ]}, + { 1: [ SpeciesId.JANGMO_O ], 35: [ SpeciesId.HAKAMO_O ], 45: [ SpeciesId.KOMMO_O ]} ], - [TimeOfDay.DUSK]: [{ 1: [ Species.LARVITAR ], 30: [ Species.PUPITAR ], 55: [ Species.TYRANITAR ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.LARVITAR ], 30: [ Species.PUPITAR ], 55: [ Species.TYRANITAR ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.LARVITAR ], 30: [ SpeciesId.PUPITAR ], 55: [ SpeciesId.TYRANITAR ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.LARVITAR ], 30: [ SpeciesId.PUPITAR ], 55: [ SpeciesId.TYRANITAR ]}], [TimeOfDay.ALL]: [ - { 1: [ Species.VIBRAVA ], 45: [ Species.FLYGON ]}, - { 1: [ Species.GIBLE ], 24: [ Species.GABITE ], 48: [ Species.GARCHOMP ]}, - { 1: [ Species.AXEW ], 38: [ Species.FRAXURE ], 48: [ Species.HAXORUS ]} + { 1: [ SpeciesId.VIBRAVA ], 45: [ SpeciesId.FLYGON ]}, + { 1: [ SpeciesId.GIBLE ], 24: [ SpeciesId.GABITE ], 48: [ SpeciesId.GARCHOMP ]}, + { 1: [ SpeciesId.AXEW ], 38: [ SpeciesId.FRAXURE ], 48: [ SpeciesId.HAXORUS ]} ] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [{ 1: [ Species.DEINO ], 50: [ Species.ZWEILOUS ], 64: [ Species.HYDREIGON ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.DEINO ], 50: [ Species.ZWEILOUS ], 64: [ Species.HYDREIGON ]}], - [TimeOfDay.ALL]: [{ 1: [ Species.SWABLU ], 35: [ Species.ALTARIA ]}, Species.DRAMPA, Species.CYCLIZAR ] + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.DEINO ], 50: [ SpeciesId.ZWEILOUS ], 64: [ SpeciesId.HYDREIGON ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.DEINO ], 50: [ SpeciesId.ZWEILOUS ], 64: [ SpeciesId.HYDREIGON ]}], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.SWABLU ], 35: [ SpeciesId.ALTARIA ]}, SpeciesId.DRAMPA, SpeciesId.CYCLIZAR ] }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [{ 1: [ Species.DREEPY ], 50: [ Species.DRAKLOAK ], 60: [ Species.DRAGAPULT ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.DREEPY ], 50: [ Species.DRAKLOAK ], 60: [ Species.DRAGAPULT ]}], - [TimeOfDay.ALL]: [{ 1: [ Species.DRATINI ], 30: [ Species.DRAGONAIR ], 55: [ Species.DRAGONITE ]}, { 1: [ Species.FRIGIBAX ], 35: [ Species.ARCTIBAX ], 54: [ Species.BAXCALIBUR ]}] + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.DREEPY ], 50: [ SpeciesId.DRAKLOAK ], 60: [ SpeciesId.DRAGAPULT ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.DREEPY ], 50: [ SpeciesId.DRAKLOAK ], 60: [ SpeciesId.DRAGAPULT ]}], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.DRATINI ], 30: [ SpeciesId.DRAGONAIR ], 55: [ SpeciesId.DRAGONITE ]}, { 1: [ SpeciesId.FRIGIBAX ], 35: [ SpeciesId.ARCTIBAX ], 54: [ SpeciesId.BAXCALIBUR ]}] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.AERODACTYL, Species.DRUDDIGON, { 1: [ Species.TYRUNT ], 59: [ Species.TYRANTRUM ]}, Species.DRACOZOLT, Species.DRACOVISH ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGIDRAGO ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AERODACTYL, SpeciesId.DRUDDIGON, { 1: [ SpeciesId.TYRUNT ], 59: [ SpeciesId.TYRANTRUM ]}, SpeciesId.DRACOZOLT, SpeciesId.DRACOVISH ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIDRAGO ]}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.SALAMENCE, Species.GOODRA, Species.KOMMO_O ], - [TimeOfDay.DAY]: [ Species.SALAMENCE, Species.GOODRA, Species.KOMMO_O ], - [TimeOfDay.DUSK]: [ Species.TYRANITAR, Species.DRAGAPULT ], - [TimeOfDay.NIGHT]: [ Species.TYRANITAR, Species.DRAGAPULT ], - [TimeOfDay.ALL]: [ Species.DRAGONITE, Species.FLYGON, Species.GARCHOMP, Species.HAXORUS, Species.DRAMPA, Species.BAXCALIBUR ] + [TimeOfDay.DAWN]: [ SpeciesId.SALAMENCE, SpeciesId.GOODRA, SpeciesId.KOMMO_O ], + [TimeOfDay.DAY]: [ SpeciesId.SALAMENCE, SpeciesId.GOODRA, SpeciesId.KOMMO_O ], + [TimeOfDay.DUSK]: [ SpeciesId.TYRANITAR, SpeciesId.DRAGAPULT ], + [TimeOfDay.NIGHT]: [ SpeciesId.TYRANITAR, SpeciesId.DRAGAPULT ], + [TimeOfDay.ALL]: [ SpeciesId.DRAGONITE, SpeciesId.FLYGON, SpeciesId.GARCHOMP, SpeciesId.HAXORUS, SpeciesId.DRAMPA, SpeciesId.BAXCALIBUR ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.AERODACTYL, Species.DRUDDIGON, Species.TYRANTRUM, Species.DRACOZOLT, Species.DRACOVISH ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGIDRAGO ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DIALGA ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AERODACTYL, SpeciesId.DRUDDIGON, SpeciesId.TYRANTRUM, SpeciesId.DRACOZOLT, SpeciesId.DRACOVISH ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIDRAGO ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DIALGA ]} }, - [Biome.ABYSS]: { + [BiomeId.ABYSS]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - Species.MURKROW, - { 1: [ Species.HOUNDOUR ], 24: [ Species.HOUNDOOM ]}, - Species.SABLEYE, - { 1: [ Species.PURRLOIN ], 20: [ Species.LIEPARD ]}, - { 1: [ Species.PAWNIARD ], 52: [ Species.BISHARP ], 64: [ Species.KINGAMBIT ]}, - { 1: [ Species.NICKIT ], 18: [ Species.THIEVUL ]}, - { 1: [ Species.IMPIDIMP ], 32: [ Species.MORGREM ], 42: [ Species.GRIMMSNARL ]}, - { 1: [ Species.MASCHIFF ], 30: [ Species.MABOSSTIFF ]} + SpeciesId.MURKROW, + { 1: [ SpeciesId.HOUNDOUR ], 24: [ SpeciesId.HOUNDOOM ]}, + SpeciesId.SABLEYE, + { 1: [ SpeciesId.PURRLOIN ], 20: [ SpeciesId.LIEPARD ]}, + { 1: [ SpeciesId.PAWNIARD ], 52: [ SpeciesId.BISHARP ], 64: [ SpeciesId.KINGAMBIT ]}, + { 1: [ SpeciesId.NICKIT ], 18: [ SpeciesId.THIEVUL ]}, + { 1: [ SpeciesId.IMPIDIMP ], 32: [ SpeciesId.MORGREM ], 42: [ SpeciesId.GRIMMSNARL ]}, + { 1: [ SpeciesId.MASCHIFF ], 30: [ SpeciesId.MABOSSTIFF ]} ] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, @@ -1259,55 +1259,55 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.ABSOL, Species.SPIRITOMB, { 1: [ Species.ZORUA ], 30: [ Species.ZOROARK ]}, { 1: [ Species.DEINO ], 50: [ Species.ZWEILOUS ], 64: [ Species.HYDREIGON ]}] + [TimeOfDay.ALL]: [ SpeciesId.ABSOL, SpeciesId.SPIRITOMB, { 1: [ SpeciesId.ZORUA ], 30: [ SpeciesId.ZOROARK ]}, { 1: [ SpeciesId.DEINO ], 50: [ SpeciesId.ZWEILOUS ], 64: [ SpeciesId.HYDREIGON ]}] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.UMBREON ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DARKRAI, Species.GALAR_MOLTRES ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.UMBREON ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DARKRAI, SpeciesId.GALAR_MOLTRES ]}, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.HOUNDOOM, Species.SABLEYE, Species.ABSOL, Species.HONCHKROW, Species.SPIRITOMB, Species.LIEPARD, Species.ZOROARK, Species.HYDREIGON, Species.THIEVUL, Species.GRIMMSNARL, Species.MABOSSTIFF, Species.KINGAMBIT ] + [TimeOfDay.ALL]: [ SpeciesId.HOUNDOOM, SpeciesId.SABLEYE, SpeciesId.ABSOL, SpeciesId.HONCHKROW, SpeciesId.SPIRITOMB, SpeciesId.LIEPARD, SpeciesId.ZOROARK, SpeciesId.HYDREIGON, SpeciesId.THIEVUL, SpeciesId.GRIMMSNARL, SpeciesId.MABOSSTIFF, SpeciesId.KINGAMBIT ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.UMBREON, Species.HISUI_SAMUROTT ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DARKRAI ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.PALKIA, Species.YVELTAL, Species.GALAR_MOLTRES ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.UMBREON, SpeciesId.HISUI_SAMUROTT ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DARKRAI ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.PALKIA, SpeciesId.YVELTAL, SpeciesId.GALAR_MOLTRES ]} }, - [Biome.SPACE]: { + [BiomeId.SPACE]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], - [TimeOfDay.DAY]: [ Species.SOLROCK ], + [TimeOfDay.DAY]: [ SpeciesId.SOLROCK ], [TimeOfDay.DUSK]: [], - [TimeOfDay.NIGHT]: [ Species.LUNATONE ], - [TimeOfDay.ALL]: [ Species.CLEFAIRY, { 1: [ Species.BRONZOR ], 33: [ Species.BRONZONG ]}, { 1: [ Species.MUNNA ], 30: [ Species.MUSHARNA ]}, Species.MINIOR ] + [TimeOfDay.NIGHT]: [ SpeciesId.LUNATONE ], + [TimeOfDay.ALL]: [ SpeciesId.CLEFAIRY, { 1: [ SpeciesId.BRONZOR ], 33: [ SpeciesId.BRONZONG ]}, { 1: [ SpeciesId.MUNNA ], 30: [ SpeciesId.MUSHARNA ]}, SpeciesId.MINIOR ] }, - [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ Species.BALTOY ], 36: [ Species.CLAYDOL ]}, { 1: [ Species.ELGYEM ], 42: [ Species.BEHEEYEM ]}]}, + [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.BALTOY ], 36: [ SpeciesId.CLAYDOL ]}, { 1: [ SpeciesId.ELGYEM ], 42: [ SpeciesId.BEHEEYEM ]}]}, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ Species.BELDUM ], 20: [ Species.METANG ], 45: [ Species.METAGROSS ]}, Species.SIGILYPH, { 1: [ Species.SOLOSIS ], 32: [ Species.DUOSION ], 41: [ Species.REUNICLUS ]}] + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.BELDUM ], 20: [ SpeciesId.METANG ], 45: [ SpeciesId.METAGROSS ]}, SpeciesId.SIGILYPH, { 1: [ SpeciesId.SOLOSIS ], 32: [ SpeciesId.DUOSION ], 41: [ SpeciesId.REUNICLUS ]}] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ Species.PORYGON ], 30: [ Species.PORYGON2 ]}]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ Species.COSMOG ], 43: [ Species.COSMOEM ]}, Species.CELESTEELA ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ Species.SOLROCK ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ Species.LUNATONE ], [TimeOfDay.ALL]: [ Species.CLEFABLE, Species.BRONZONG, Species.MUSHARNA, Species.REUNICLUS, Species.MINIOR ]}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.METAGROSS, Species.PORYGON_Z ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CELESTEELA ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ Species.SOLGALEO ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ Species.LUNALA ], [TimeOfDay.ALL]: [ Species.RAYQUAZA, Species.NECROZMA ]} + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.PORYGON ], 30: [ SpeciesId.PORYGON2 ]}]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.COSMOG ], 43: [ SpeciesId.COSMOEM ]}, SpeciesId.CELESTEELA ]}, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ SpeciesId.SOLROCK ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ SpeciesId.LUNATONE ], [TimeOfDay.ALL]: [ SpeciesId.CLEFABLE, SpeciesId.BRONZONG, SpeciesId.MUSHARNA, SpeciesId.REUNICLUS, SpeciesId.MINIOR ]}, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.METAGROSS, SpeciesId.PORYGON_Z ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CELESTEELA ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ SpeciesId.SOLGALEO ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ SpeciesId.LUNALA ], [TimeOfDay.ALL]: [ SpeciesId.RAYQUAZA, SpeciesId.NECROZMA ]} }, - [Biome.CONSTRUCTION_SITE]: { + [BiomeId.CONSTRUCTION_SITE]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.MACHOP ], 28: [ Species.MACHOKE ]}, - { 1: [ Species.MAGNEMITE ], 30: [ Species.MAGNETON ]}, - { 1: [ Species.DRILBUR ], 31: [ Species.EXCADRILL ]}, - { 1: [ Species.TIMBURR ], 25: [ Species.GURDURR ]} + { 1: [ SpeciesId.MACHOP ], 28: [ SpeciesId.MACHOKE ]}, + { 1: [ SpeciesId.MAGNEMITE ], 30: [ SpeciesId.MAGNETON ]}, + { 1: [ SpeciesId.DRILBUR ], 31: [ SpeciesId.EXCADRILL ]}, + { 1: [ SpeciesId.TIMBURR ], 25: [ SpeciesId.GURDURR ]} ] }, [BiomePoolTier.UNCOMMON]: { @@ -1316,92 +1316,92 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.GRIMER ], 38: [ Species.MUK ]}, - { 1: [ Species.KOFFING ], 35: [ Species.WEEZING ]}, - { 1: [ Species.RHYHORN ], 42: [ Species.RHYDON ]}, - { 1: [ Species.SCRAGGY ], 39: [ Species.SCRAFTY ]} + { 1: [ SpeciesId.GRIMER ], 38: [ SpeciesId.MUK ]}, + { 1: [ SpeciesId.KOFFING ], 35: [ SpeciesId.WEEZING ]}, + { 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ]}, + { 1: [ SpeciesId.SCRAGGY ], 39: [ SpeciesId.SCRAFTY ]} ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [{ 1: [ Species.GALAR_MEOWTH ], 28: [ Species.PERRSERKER ]}], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ONIX, Species.HITMONLEE, Species.HITMONCHAN, Species.DURALUDON ]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DITTO, Species.HITMONTOP ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.COBALION, Species.STAKATAKA ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MACHAMP, Species.CONKELDURR ]}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ Species.PERRSERKER ], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ARCHALUDON ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.COBALION, Species.STAKATAKA ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.GALAR_MEOWTH ], 28: [ SpeciesId.PERRSERKER ]}], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ONIX, SpeciesId.HITMONLEE, SpeciesId.HITMONCHAN, SpeciesId.DURALUDON ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO, SpeciesId.HITMONTOP ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.COBALION, SpeciesId.STAKATAKA ]}, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MACHAMP, SpeciesId.CONKELDURR ]}, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ SpeciesId.PERRSERKER ], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ARCHALUDON ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.COBALION, SpeciesId.STAKATAKA ]}, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} }, - [Biome.JUNGLE]: { + [BiomeId.JUNGLE]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [ Species.VESPIQUEN, { 1: [ Species.CHERUBI ], 25: [ Species.CHERRIM ]}, { 1: [ Species.SEWADDLE ], 20: [ Species.SWADLOON ], 30: [ Species.LEAVANNY ]}], - [TimeOfDay.DAY]: [ Species.VESPIQUEN, { 1: [ Species.CHERUBI ], 25: [ Species.CHERRIM ]}, { 1: [ Species.SEWADDLE ], 20: [ Species.SWADLOON ], 30: [ Species.LEAVANNY ]}], - [TimeOfDay.DUSK]: [ Species.SHROOMISH, { 1: [ Species.PURRLOIN ], 20: [ Species.LIEPARD ]}, { 1: [ Species.FOONGUS ], 39: [ Species.AMOONGUSS ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.SPINARAK ], 22: [ Species.ARIADOS ]}, Species.SHROOMISH, { 1: [ Species.PURRLOIN ], 20: [ Species.LIEPARD ]}, { 1: [ Species.FOONGUS ], 39: [ Species.AMOONGUSS ]}], - [TimeOfDay.ALL]: [ Species.AIPOM, { 1: [ Species.BLITZLE ], 27: [ Species.ZEBSTRIKA ]}, { 1: [ Species.PIKIPEK ], 14: [ Species.TRUMBEAK ], 28: [ Species.TOUCANNON ]}] + [TimeOfDay.DAWN]: [ SpeciesId.VESPIQUEN, { 1: [ SpeciesId.CHERUBI ], 25: [ SpeciesId.CHERRIM ]}, { 1: [ SpeciesId.SEWADDLE ], 20: [ SpeciesId.SWADLOON ], 30: [ SpeciesId.LEAVANNY ]}], + [TimeOfDay.DAY]: [ SpeciesId.VESPIQUEN, { 1: [ SpeciesId.CHERUBI ], 25: [ SpeciesId.CHERRIM ]}, { 1: [ SpeciesId.SEWADDLE ], 20: [ SpeciesId.SWADLOON ], 30: [ SpeciesId.LEAVANNY ]}], + [TimeOfDay.DUSK]: [ SpeciesId.SHROOMISH, { 1: [ SpeciesId.PURRLOIN ], 20: [ SpeciesId.LIEPARD ]}, { 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ]}, SpeciesId.SHROOMISH, { 1: [ SpeciesId.PURRLOIN ], 20: [ SpeciesId.LIEPARD ]}, { 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ]}], + [TimeOfDay.ALL]: [ SpeciesId.AIPOM, { 1: [ SpeciesId.BLITZLE ], 27: [ SpeciesId.ZEBSTRIKA ]}, { 1: [ SpeciesId.PIKIPEK ], 14: [ SpeciesId.TRUMBEAK ], 28: [ SpeciesId.TOUCANNON ]}] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [ Species.EXEGGCUTE, Species.TROPIUS, Species.COMBEE, Species.KOMALA ], - [TimeOfDay.DAY]: [ Species.EXEGGCUTE, Species.TROPIUS, Species.COMBEE, Species.KOMALA ], - [TimeOfDay.DUSK]: [ Species.TANGELA, { 1: [ Species.SPINARAK ], 22: [ Species.ARIADOS ]}, { 1: [ Species.PANCHAM ], 52: [ Species.PANGORO ]}], - [TimeOfDay.NIGHT]: [ Species.TANGELA, { 1: [ Species.PANCHAM ], 52: [ Species.PANGORO ]}], + [TimeOfDay.DAWN]: [ SpeciesId.EXEGGCUTE, SpeciesId.TROPIUS, SpeciesId.COMBEE, SpeciesId.KOMALA ], + [TimeOfDay.DAY]: [ SpeciesId.EXEGGCUTE, SpeciesId.TROPIUS, SpeciesId.COMBEE, SpeciesId.KOMALA ], + [TimeOfDay.DUSK]: [ SpeciesId.TANGELA, { 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ]}, { 1: [ SpeciesId.PANCHAM ], 52: [ SpeciesId.PANGORO ]}], + [TimeOfDay.NIGHT]: [ SpeciesId.TANGELA, { 1: [ SpeciesId.PANCHAM ], 52: [ SpeciesId.PANGORO ]}], [TimeOfDay.ALL]: [ - { 1: [ Species.PANSAGE ], 30: [ Species.SIMISAGE ]}, - { 1: [ Species.PANSEAR ], 30: [ Species.SIMISEAR ]}, - { 1: [ Species.PANPOUR ], 30: [ Species.SIMIPOUR ]}, - { 1: [ Species.JOLTIK ], 36: [ Species.GALVANTULA ]}, - { 1: [ Species.LITLEO ], 35: [ Species.PYROAR ]}, - { 1: [ Species.FOMANTIS ], 44: [ Species.LURANTIS ]}, - Species.FALINKS + { 1: [ SpeciesId.PANSAGE ], 30: [ SpeciesId.SIMISAGE ]}, + { 1: [ SpeciesId.PANSEAR ], 30: [ SpeciesId.SIMISEAR ]}, + { 1: [ SpeciesId.PANPOUR ], 30: [ SpeciesId.SIMIPOUR ]}, + { 1: [ SpeciesId.JOLTIK ], 36: [ SpeciesId.GALVANTULA ]}, + { 1: [ SpeciesId.LITLEO ], 35: [ SpeciesId.PYROAR ]}, + { 1: [ SpeciesId.FOMANTIS ], 44: [ SpeciesId.LURANTIS ]}, + SpeciesId.FALINKS ] }, [BiomePoolTier.RARE]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.FOONGUS ], 39: [ Species.AMOONGUSS ]}, Species.PASSIMIAN, { 1: [ Species.GALAR_PONYTA ], 40: [ Species.GALAR_RAPIDASH ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.FOONGUS ], 39: [ Species.AMOONGUSS ]}, Species.PASSIMIAN ], - [TimeOfDay.DUSK]: [ Species.ORANGURU ], - [TimeOfDay.NIGHT]: [ Species.ORANGURU ], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ]}, SpeciesId.PASSIMIAN, { 1: [ SpeciesId.GALAR_PONYTA ], 40: [ SpeciesId.GALAR_RAPIDASH ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ]}, SpeciesId.PASSIMIAN ], + [TimeOfDay.DUSK]: [ SpeciesId.ORANGURU ], + [TimeOfDay.NIGHT]: [ SpeciesId.ORANGURU ], [TimeOfDay.ALL]: [ - Species.SCYTHER, - Species.YANMA, - { 1: [ Species.SLAKOTH ], 18: [ Species.VIGOROTH ], 36: [ Species.SLAKING ]}, - Species.SEVIPER, - Species.CARNIVINE, - { 1: [ Species.SNIVY ], 17: [ Species.SERVINE ], 36: [ Species.SERPERIOR ]}, - { 1: [ Species.GROOKEY ], 16: [ Species.THWACKEY ], 35: [ Species.RILLABOOM ]} + SpeciesId.SCYTHER, + SpeciesId.YANMA, + { 1: [ SpeciesId.SLAKOTH ], 18: [ SpeciesId.VIGOROTH ], 36: [ SpeciesId.SLAKING ]}, + SpeciesId.SEVIPER, + SpeciesId.CARNIVINE, + { 1: [ SpeciesId.SNIVY ], 17: [ SpeciesId.SERVINE ], 36: [ SpeciesId.SERPERIOR ]}, + { 1: [ SpeciesId.GROOKEY ], 16: [ SpeciesId.THWACKEY ], 35: [ SpeciesId.RILLABOOM ]} ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KANGASKHAN, Species.CHATOT, Species.KLEAVOR ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.TAPU_LELE, Species.BUZZWOLE, Species.ZARUDE, Species.MUNKIDORI ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KANGASKHAN, SpeciesId.CHATOT, SpeciesId.KLEAVOR ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TAPU_LELE, SpeciesId.BUZZWOLE, SpeciesId.ZARUDE, SpeciesId.MUNKIDORI ]}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.EXEGGUTOR, Species.TROPIUS, Species.CHERRIM, Species.LEAVANNY, Species.KOMALA ], - [TimeOfDay.DAY]: [ Species.EXEGGUTOR, Species.TROPIUS, Species.CHERRIM, Species.LEAVANNY, Species.KOMALA ], - [TimeOfDay.DUSK]: [ Species.BRELOOM, Species.TANGROWTH, Species.AMOONGUSS, Species.PANGORO ], - [TimeOfDay.NIGHT]: [ Species.BRELOOM, Species.TANGROWTH, Species.AMOONGUSS, Species.PANGORO ], - [TimeOfDay.ALL]: [ Species.SEVIPER, Species.AMBIPOM, Species.CARNIVINE, Species.YANMEGA, Species.GALVANTULA, Species.PYROAR, Species.TOUCANNON, Species.LURANTIS, Species.FALINKS ] + [TimeOfDay.DAWN]: [ SpeciesId.EXEGGUTOR, SpeciesId.TROPIUS, SpeciesId.CHERRIM, SpeciesId.LEAVANNY, SpeciesId.KOMALA ], + [TimeOfDay.DAY]: [ SpeciesId.EXEGGUTOR, SpeciesId.TROPIUS, SpeciesId.CHERRIM, SpeciesId.LEAVANNY, SpeciesId.KOMALA ], + [TimeOfDay.DUSK]: [ SpeciesId.BRELOOM, SpeciesId.TANGROWTH, SpeciesId.AMOONGUSS, SpeciesId.PANGORO ], + [TimeOfDay.NIGHT]: [ SpeciesId.BRELOOM, SpeciesId.TANGROWTH, SpeciesId.AMOONGUSS, SpeciesId.PANGORO ], + [TimeOfDay.ALL]: [ SpeciesId.SEVIPER, SpeciesId.AMBIPOM, SpeciesId.CARNIVINE, SpeciesId.YANMEGA, SpeciesId.GALVANTULA, SpeciesId.PYROAR, SpeciesId.TOUCANNON, SpeciesId.LURANTIS, SpeciesId.FALINKS ] }, [BiomePoolTier.BOSS_RARE]: { - [TimeOfDay.DAWN]: [ Species.AMOONGUSS, Species.GALAR_RAPIDASH ], - [TimeOfDay.DAY]: [ Species.AMOONGUSS ], + [TimeOfDay.DAWN]: [ SpeciesId.AMOONGUSS, SpeciesId.GALAR_RAPIDASH ], + [TimeOfDay.DAY]: [ SpeciesId.AMOONGUSS ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.KANGASKHAN, Species.SCIZOR, Species.SLAKING, Species.LEAFEON, Species.SERPERIOR, Species.RILLABOOM ] + [TimeOfDay.ALL]: [ SpeciesId.KANGASKHAN, SpeciesId.SCIZOR, SpeciesId.SLAKING, SpeciesId.LEAFEON, SpeciesId.SERPERIOR, SpeciesId.RILLABOOM ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.TAPU_LELE, Species.BUZZWOLE, Species.ZARUDE, Species.MUNKIDORI ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KLEAVOR ]} + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TAPU_LELE, SpeciesId.BUZZWOLE, SpeciesId.ZARUDE, SpeciesId.MUNKIDORI ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KLEAVOR ]} }, - [Biome.FAIRY_CAVE]: { + [BiomeId.FAIRY_CAVE]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.JIGGLYPUFF ], 30: [ Species.WIGGLYTUFF ]}, - { 1: [ Species.MARILL ], 18: [ Species.AZUMARILL ]}, - Species.MAWILE, - { 1: [ Species.SPRITZEE ], 40: [ Species.AROMATISSE ]}, - { 1: [ Species.SWIRLIX ], 40: [ Species.SLURPUFF ]}, - { 1: [ Species.CUTIEFLY ], 25: [ Species.RIBOMBEE ]}, - { 1: [ Species.MORELULL ], 24: [ Species.SHIINOTIC ]}, - { 1: [ Species.MILCERY ], 30: [ Species.ALCREMIE ]} + { 1: [ SpeciesId.JIGGLYPUFF ], 30: [ SpeciesId.WIGGLYTUFF ]}, + { 1: [ SpeciesId.MARILL ], 18: [ SpeciesId.AZUMARILL ]}, + SpeciesId.MAWILE, + { 1: [ SpeciesId.SPRITZEE ], 40: [ SpeciesId.AROMATISSE ]}, + { 1: [ SpeciesId.SWIRLIX ], 40: [ SpeciesId.SLURPUFF ]}, + { 1: [ SpeciesId.CUTIEFLY ], 25: [ SpeciesId.RIBOMBEE ]}, + { 1: [ SpeciesId.MORELULL ], 24: [ SpeciesId.SHIINOTIC ]}, + { 1: [ SpeciesId.MILCERY ], 30: [ SpeciesId.ALCREMIE ]} ] }, [BiomePoolTier.UNCOMMON]: { @@ -1410,41 +1410,41 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - Species.CLEFAIRY, - Species.TOGETIC, - { 1: [ Species.RALTS ], 20: [ Species.KIRLIA ], 30: [ Species.GARDEVOIR ]}, - Species.CARBINK, - Species.COMFEY, - { 1: [ Species.HATENNA ], 32: [ Species.HATTREM ], 42: [ Species.HATTERENE ]} + SpeciesId.CLEFAIRY, + SpeciesId.TOGETIC, + { 1: [ SpeciesId.RALTS ], 20: [ SpeciesId.KIRLIA ], 30: [ SpeciesId.GARDEVOIR ]}, + SpeciesId.CARBINK, + SpeciesId.COMFEY, + { 1: [ SpeciesId.HATENNA ], 32: [ SpeciesId.HATTREM ], 42: [ SpeciesId.HATTERENE ]} ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.AUDINO, Species.ETERNAL_FLOETTE ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AUDINO, SpeciesId.ETERNAL_FLOETTE ]}, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DIANCIE, Species.ENAMORUS ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DIANCIE, SpeciesId.ENAMORUS ]}, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.WIGGLYTUFF, Species.MAWILE, Species.TOGEKISS, Species.AUDINO, Species.AROMATISSE, Species.SLURPUFF, Species.CARBINK, Species.RIBOMBEE, Species.SHIINOTIC, Species.COMFEY, Species.HATTERENE, Species.ALCREMIE ] + [TimeOfDay.ALL]: [ SpeciesId.WIGGLYTUFF, SpeciesId.MAWILE, SpeciesId.TOGEKISS, SpeciesId.AUDINO, SpeciesId.AROMATISSE, SpeciesId.SLURPUFF, SpeciesId.CARBINK, SpeciesId.RIBOMBEE, SpeciesId.SHIINOTIC, SpeciesId.COMFEY, SpeciesId.HATTERENE, SpeciesId.ALCREMIE ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ETERNAL_FLOETTE ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DIANCIE, Species.ENAMORUS ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.XERNEAS ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ETERNAL_FLOETTE ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DIANCIE, SpeciesId.ENAMORUS ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.XERNEAS ]} }, - [Biome.TEMPLE]: { + [BiomeId.TEMPLE]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.GASTLY ], 25: [ Species.HAUNTER ]}, - { 1: [ Species.NATU ], 25: [ Species.XATU ]}, - { 1: [ Species.DUSKULL ], 37: [ Species.DUSCLOPS ]}, - { 1: [ Species.YAMASK ], 34: [ Species.COFAGRIGUS ]}, - { 1: [ Species.GOLETT ], 43: [ Species.GOLURK ]}, - { 1: [ Species.HONEDGE ], 35: [ Species.DOUBLADE ]} + { 1: [ SpeciesId.GASTLY ], 25: [ SpeciesId.HAUNTER ]}, + { 1: [ SpeciesId.NATU ], 25: [ SpeciesId.XATU ]}, + { 1: [ SpeciesId.DUSKULL ], 37: [ SpeciesId.DUSCLOPS ]}, + { 1: [ SpeciesId.YAMASK ], 34: [ SpeciesId.COFAGRIGUS ]}, + { 1: [ SpeciesId.GOLETT ], 43: [ SpeciesId.GOLURK ]}, + { 1: [ SpeciesId.HONEDGE ], 35: [ SpeciesId.DOUBLADE ]} ] }, [BiomePoolTier.UNCOMMON]: { @@ -1453,181 +1453,181 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.CUBONE ], 28: [ Species.MAROWAK ]}, - { 1: [ Species.BALTOY ], 36: [ Species.CLAYDOL ]}, - { 1: [ Species.CHINGLING ], 20: [ Species.CHIMECHO ]}, - { 1: [ Species.SKORUPI ], 40: [ Species.DRAPION ]}, - { 1: [ Species.LITWICK ], 41: [ Species.LAMPENT ]} + { 1: [ SpeciesId.CUBONE ], 28: [ SpeciesId.MAROWAK ]}, + { 1: [ SpeciesId.BALTOY ], 36: [ SpeciesId.CLAYDOL ]}, + { 1: [ SpeciesId.CHINGLING ], 20: [ SpeciesId.CHIMECHO ]}, + { 1: [ SpeciesId.SKORUPI ], 40: [ SpeciesId.DRAPION ]}, + { 1: [ SpeciesId.LITWICK ], 41: [ SpeciesId.LAMPENT ]} ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ Species.GIMMIGHOUL ], 40: [ Species.GHOLDENGO ]}]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.GIMMIGHOUL ], 40: [ SpeciesId.GHOLDENGO ]}]}, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.HOOPA, Species.TAPU_KOKO ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CHIMECHO, Species.COFAGRIGUS, Species.GOLURK, Species.AEGISLASH ]}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GHOLDENGO ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.HOOPA, Species.TAPU_KOKO ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGIGIGAS ]} + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HOOPA, SpeciesId.TAPU_KOKO ]}, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CHIMECHO, SpeciesId.COFAGRIGUS, SpeciesId.GOLURK, SpeciesId.AEGISLASH ]}, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GHOLDENGO ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HOOPA, SpeciesId.TAPU_KOKO ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIGIGAS ]} }, - [Biome.SLUM]: { + [BiomeId.SLUM]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [{ 1: [ Species.PATRAT ], 20: [ Species.WATCHOG ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.PATRAT ], 20: [ Species.WATCHOG ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ]}], [TimeOfDay.ALL]: [ - { 1: [ Species.RATTATA ], 20: [ Species.RATICATE ]}, - { 1: [ Species.GRIMER ], 38: [ Species.MUK ]}, - { 1: [ Species.KOFFING ], 35: [ Species.WEEZING ]}, - { 1: [ Species.TRUBBISH ], 36: [ Species.GARBODOR ]} + { 1: [ SpeciesId.RATTATA ], 20: [ SpeciesId.RATICATE ]}, + { 1: [ SpeciesId.GRIMER ], 38: [ SpeciesId.MUK ]}, + { 1: [ SpeciesId.KOFFING ], 35: [ SpeciesId.WEEZING ]}, + { 1: [ SpeciesId.TRUBBISH ], 36: [ SpeciesId.GARBODOR ]} ] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [{ 1: [ Species.STUNKY ], 34: [ Species.SKUNTANK ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.STUNKY ], 34: [ Species.SKUNTANK ]}], - [TimeOfDay.ALL]: [{ 1: [ Species.BURMY ], 20: [ Species.WORMADAM ]}] + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.STUNKY ], 34: [ SpeciesId.SKUNTANK ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.STUNKY ], 34: [ SpeciesId.SKUNTANK ]}], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.BURMY ], 20: [ SpeciesId.WORMADAM ]}] }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [ Species.TOXTRICITY, { 1: [ Species.GALAR_LINOONE ], 65: [ Species.OBSTAGOON ]}, Species.GALAR_ZIGZAGOON ], - [TimeOfDay.NIGHT]: [ Species.TOXTRICITY, { 1: [ Species.GALAR_LINOONE ], 65: [ Species.OBSTAGOON ]}, Species.GALAR_ZIGZAGOON ], - [TimeOfDay.ALL]: [{ 1: [ Species.VAROOM ], 40: [ Species.REVAVROOM ]}] + [TimeOfDay.DUSK]: [ SpeciesId.TOXTRICITY, { 1: [ SpeciesId.GALAR_LINOONE ], 65: [ SpeciesId.OBSTAGOON ]}, SpeciesId.GALAR_ZIGZAGOON ], + [TimeOfDay.NIGHT]: [ SpeciesId.TOXTRICITY, { 1: [ SpeciesId.GALAR_LINOONE ], 65: [ SpeciesId.OBSTAGOON ]}, SpeciesId.GALAR_ZIGZAGOON ], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.VAROOM ], 40: [ SpeciesId.REVAVROOM ]}] }, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GUZZLORD ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ Species.SKUNTANK, Species.WATCHOG ], [TimeOfDay.NIGHT]: [ Species.SKUNTANK, Species.WATCHOG ], [TimeOfDay.ALL]: [ Species.MUK, Species.WEEZING, Species.WORMADAM, Species.GARBODOR ]}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ Species.TOXTRICITY, Species.OBSTAGOON ], [TimeOfDay.NIGHT]: [ Species.TOXTRICITY, Species.OBSTAGOON ], [TimeOfDay.ALL]: [ Species.REVAVROOM, Species.GALAR_WEEZING ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GUZZLORD ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GUZZLORD ]}, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ SpeciesId.SKUNTANK, SpeciesId.WATCHOG ], [TimeOfDay.NIGHT]: [ SpeciesId.SKUNTANK, SpeciesId.WATCHOG ], [TimeOfDay.ALL]: [ SpeciesId.MUK, SpeciesId.WEEZING, SpeciesId.WORMADAM, SpeciesId.GARBODOR ]}, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ SpeciesId.TOXTRICITY, SpeciesId.OBSTAGOON ], [TimeOfDay.NIGHT]: [ SpeciesId.TOXTRICITY, SpeciesId.OBSTAGOON ], [TimeOfDay.ALL]: [ SpeciesId.REVAVROOM, SpeciesId.GALAR_WEEZING ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GUZZLORD ]}, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} }, - [Biome.SNOWY_FOREST]: { + [BiomeId.SNOWY_FOREST]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [ Species.SNEASEL, { 1: [ Species.TEDDIURSA ], 30: [ Species.URSARING ]}, { 1: [ Species.SNOM ], 20: [ Species.FROSMOTH ]}], - [TimeOfDay.NIGHT]: [ Species.SNEASEL, { 1: [ Species.TEDDIURSA ], 30: [ Species.URSARING ]}, { 1: [ Species.SNOM ], 20: [ Species.FROSMOTH ]}], - [TimeOfDay.ALL]: [{ 1: [ Species.SWINUB ], 33: [ Species.PILOSWINE ]}, { 1: [ Species.SNOVER ], 40: [ Species.ABOMASNOW ]}, Species.EISCUE ] + [TimeOfDay.DUSK]: [ SpeciesId.SNEASEL, { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ]}, { 1: [ SpeciesId.SNOM ], 20: [ SpeciesId.FROSMOTH ]}], + [TimeOfDay.NIGHT]: [ SpeciesId.SNEASEL, { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ]}, { 1: [ SpeciesId.SNOM ], 20: [ SpeciesId.FROSMOTH ]}], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.SWINUB ], 33: [ SpeciesId.PILOSWINE ]}, { 1: [ SpeciesId.SNOVER ], 40: [ SpeciesId.ABOMASNOW ]}, SpeciesId.EISCUE ] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [ Species.SNEASEL, { 1: [ Species.TEDDIURSA ], 30: [ Species.URSARING ]}, Species.STANTLER ], - [TimeOfDay.DAY]: [ Species.SNEASEL, { 1: [ Species.TEDDIURSA ], 30: [ Species.URSARING ]}, Species.STANTLER ], + [TimeOfDay.DAWN]: [ SpeciesId.SNEASEL, { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ]}, SpeciesId.STANTLER ], + [TimeOfDay.DAY]: [ SpeciesId.SNEASEL, { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ]}, SpeciesId.STANTLER ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, [BiomePoolTier.RARE]: { - [TimeOfDay.DAWN]: [{ 1: [ Species.GALAR_DARUMAKA ], 30: [ Species.GALAR_DARMANITAN ]}], - [TimeOfDay.DAY]: [{ 1: [ Species.GALAR_DARUMAKA ], 30: [ Species.GALAR_DARMANITAN ]}], + [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.GALAR_DARUMAKA ], 30: [ SpeciesId.GALAR_DARMANITAN ]}], + [TimeOfDay.DAY]: [{ 1: [ SpeciesId.GALAR_DARUMAKA ], 30: [ SpeciesId.GALAR_DARMANITAN ]}], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.DELIBIRD, { 1: [ Species.ALOLA_SANDSHREW ], 30: [ Species.ALOLA_SANDSLASH ]}, { 1: [ Species.ALOLA_VULPIX ], 30: [ Species.ALOLA_NINETALES ]}] + [TimeOfDay.ALL]: [ SpeciesId.DELIBIRD, { 1: [ SpeciesId.ALOLA_SANDSHREW ], 30: [ SpeciesId.ALOLA_SANDSLASH ]}, { 1: [ SpeciesId.ALOLA_VULPIX ], 30: [ SpeciesId.ALOLA_NINETALES ]}] }, [BiomePoolTier.SUPER_RARE]: { - [TimeOfDay.DAWN]: [ Species.HISUI_SNEASEL ], - [TimeOfDay.DAY]: [ Species.HISUI_SNEASEL ], - [TimeOfDay.DUSK]: [{ 1: [ Species.HISUI_ZORUA ], 30: [ Species.HISUI_ZOROARK ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.HISUI_ZORUA ], 30: [ Species.HISUI_ZOROARK ]}], - [TimeOfDay.ALL]: [{ 1: [ Species.GALAR_MR_MIME ], 42: [ Species.MR_RIME ]}, Species.ARCTOZOLT, Species.HISUI_AVALUGG ] + [TimeOfDay.DAWN]: [ SpeciesId.HISUI_SNEASEL ], + [TimeOfDay.DAY]: [ SpeciesId.HISUI_SNEASEL ], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.HISUI_ZORUA ], 30: [ SpeciesId.HISUI_ZOROARK ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.HISUI_ZORUA ], 30: [ SpeciesId.HISUI_ZOROARK ]}], + [TimeOfDay.ALL]: [{ 1: [ SpeciesId.GALAR_MR_MIME ], 42: [ SpeciesId.MR_RIME ]}, SpeciesId.ARCTOZOLT, SpeciesId.HISUI_AVALUGG ] }, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GLASTRIER, Species.CHIEN_PAO, Species.GALAR_ARTICUNO ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ Species.WYRDEER ], [TimeOfDay.DAY]: [ Species.WYRDEER ], [TimeOfDay.DUSK]: [ Species.FROSMOTH ], [TimeOfDay.NIGHT]: [ Species.FROSMOTH ], [TimeOfDay.ALL]: [ Species.ABOMASNOW, Species.URSALUNA ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GLASTRIER, SpeciesId.CHIEN_PAO, SpeciesId.GALAR_ARTICUNO ]}, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.WYRDEER ], [TimeOfDay.DAY]: [ SpeciesId.WYRDEER ], [TimeOfDay.DUSK]: [ SpeciesId.FROSMOTH ], [TimeOfDay.NIGHT]: [ SpeciesId.FROSMOTH ], [TimeOfDay.ALL]: [ SpeciesId.ABOMASNOW, SpeciesId.URSALUNA ]}, [BiomePoolTier.BOSS_RARE]: { - [TimeOfDay.DAWN]: [ Species.SNEASLER, Species.GALAR_DARMANITAN ], - [TimeOfDay.DAY]: [ Species.SNEASLER, Species.GALAR_DARMANITAN ], - [TimeOfDay.DUSK]: [ Species.HISUI_ZOROARK ], - [TimeOfDay.NIGHT]: [ Species.HISUI_ZOROARK ], - [TimeOfDay.ALL]: [ Species.MR_RIME, Species.ARCTOZOLT, Species.ALOLA_SANDSLASH, Species.ALOLA_NINETALES ] + [TimeOfDay.DAWN]: [ SpeciesId.SNEASLER, SpeciesId.GALAR_DARMANITAN ], + [TimeOfDay.DAY]: [ SpeciesId.SNEASLER, SpeciesId.GALAR_DARMANITAN ], + [TimeOfDay.DUSK]: [ SpeciesId.HISUI_ZOROARK ], + [TimeOfDay.NIGHT]: [ SpeciesId.HISUI_ZOROARK ], + [TimeOfDay.ALL]: [ SpeciesId.MR_RIME, SpeciesId.ARCTOZOLT, SpeciesId.ALOLA_SANDSLASH, SpeciesId.ALOLA_NINETALES ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GLASTRIER, Species.CHIEN_PAO ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ZACIAN, Species.GALAR_ARTICUNO ]} + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GLASTRIER, SpeciesId.CHIEN_PAO ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ZACIAN, SpeciesId.GALAR_ARTICUNO ]} }, - [Biome.ISLAND]: { + [BiomeId.ISLAND]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [{ 1: [ Species.ALOLA_RATTATA ], 30: [ Species.ALOLA_RATICATE ]}, { 1: [ Species.ALOLA_MEOWTH ], 30: [ Species.ALOLA_PERSIAN ]}], - [TimeOfDay.NIGHT]: [{ 1: [ Species.ALOLA_RATTATA ], 30: [ Species.ALOLA_RATICATE ]}, { 1: [ Species.ALOLA_MEOWTH ], 30: [ Species.ALOLA_PERSIAN ]}], + [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.ALOLA_RATTATA ], 30: [ SpeciesId.ALOLA_RATICATE ]}, { 1: [ SpeciesId.ALOLA_MEOWTH ], 30: [ SpeciesId.ALOLA_PERSIAN ]}], + [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.ALOLA_RATTATA ], 30: [ SpeciesId.ALOLA_RATICATE ]}, { 1: [ SpeciesId.ALOLA_MEOWTH ], 30: [ SpeciesId.ALOLA_PERSIAN ]}], [TimeOfDay.ALL]: [ - Species.ORICORIO, - { 1: [ Species.ALOLA_SANDSHREW ], 30: [ Species.ALOLA_SANDSLASH ]}, - { 1: [ Species.ALOLA_VULPIX ], 30: [ Species.ALOLA_NINETALES ]}, - { 1: [ Species.ALOLA_DIGLETT ], 26: [ Species.ALOLA_DUGTRIO ]}, - { 1: [ Species.ALOLA_GEODUDE ], 25: [ Species.ALOLA_GRAVELER ], 40: [ Species.ALOLA_GOLEM ]}, - { 1: [ Species.ALOLA_GRIMER ], 38: [ Species.ALOLA_MUK ]} + SpeciesId.ORICORIO, + { 1: [ SpeciesId.ALOLA_SANDSHREW ], 30: [ SpeciesId.ALOLA_SANDSLASH ]}, + { 1: [ SpeciesId.ALOLA_VULPIX ], 30: [ SpeciesId.ALOLA_NINETALES ]}, + { 1: [ SpeciesId.ALOLA_DIGLETT ], 26: [ SpeciesId.ALOLA_DUGTRIO ]}, + { 1: [ SpeciesId.ALOLA_GEODUDE ], 25: [ SpeciesId.ALOLA_GRAVELER ], 40: [ SpeciesId.ALOLA_GOLEM ]}, + { 1: [ SpeciesId.ALOLA_GRIMER ], 38: [ SpeciesId.ALOLA_MUK ]} ] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [ Species.ALOLA_RAICHU, Species.ALOLA_EXEGGUTOR ], - [TimeOfDay.DAY]: [ Species.ALOLA_RAICHU, Species.ALOLA_EXEGGUTOR ], - [TimeOfDay.DUSK]: [ Species.ALOLA_MAROWAK ], - [TimeOfDay.NIGHT]: [ Species.ALOLA_MAROWAK ], - [TimeOfDay.ALL]: [ Species.BRUXISH ] + [TimeOfDay.DAWN]: [ SpeciesId.ALOLA_RAICHU, SpeciesId.ALOLA_EXEGGUTOR ], + [TimeOfDay.DAY]: [ SpeciesId.ALOLA_RAICHU, SpeciesId.ALOLA_EXEGGUTOR ], + [TimeOfDay.DUSK]: [ SpeciesId.ALOLA_MAROWAK ], + [TimeOfDay.NIGHT]: [ SpeciesId.ALOLA_MAROWAK ], + [TimeOfDay.ALL]: [ SpeciesId.BRUXISH ] }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.BLACEPHALON ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLACEPHALON ]}, [BiomePoolTier.BOSS]: { - [TimeOfDay.DAWN]: [ Species.ALOLA_RAICHU, Species.ALOLA_EXEGGUTOR ], - [TimeOfDay.DAY]: [ Species.ALOLA_RAICHU, Species.ALOLA_EXEGGUTOR ], - [TimeOfDay.DUSK]: [ Species.ALOLA_RATICATE, Species.ALOLA_PERSIAN, Species.ALOLA_MAROWAK ], - [TimeOfDay.NIGHT]: [ Species.ALOLA_RATICATE, Species.ALOLA_PERSIAN, Species.ALOLA_MAROWAK ], - [TimeOfDay.ALL]: [ Species.ORICORIO, Species.BRUXISH, Species.ALOLA_SANDSLASH, Species.ALOLA_NINETALES, Species.ALOLA_DUGTRIO, Species.ALOLA_GOLEM, Species.ALOLA_MUK ] + [TimeOfDay.DAWN]: [ SpeciesId.ALOLA_RAICHU, SpeciesId.ALOLA_EXEGGUTOR ], + [TimeOfDay.DAY]: [ SpeciesId.ALOLA_RAICHU, SpeciesId.ALOLA_EXEGGUTOR ], + [TimeOfDay.DUSK]: [ SpeciesId.ALOLA_RATICATE, SpeciesId.ALOLA_PERSIAN, SpeciesId.ALOLA_MAROWAK ], + [TimeOfDay.NIGHT]: [ SpeciesId.ALOLA_RATICATE, SpeciesId.ALOLA_PERSIAN, SpeciesId.ALOLA_MAROWAK ], + [TimeOfDay.ALL]: [ SpeciesId.ORICORIO, SpeciesId.BRUXISH, SpeciesId.ALOLA_SANDSLASH, SpeciesId.ALOLA_NINETALES, SpeciesId.ALOLA_DUGTRIO, SpeciesId.ALOLA_GOLEM, SpeciesId.ALOLA_MUK ] }, [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.BLACEPHALON ]}, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLACEPHALON ]}, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} }, - [Biome.LABORATORY]: { + [BiomeId.LABORATORY]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ Species.MAGNEMITE ], 30: [ Species.MAGNETON ]}, - { 1: [ Species.GRIMER ], 38: [ Species.MUK ]}, - { 1: [ Species.VOLTORB ], 30: [ Species.ELECTRODE ]}, - { 1: [ Species.BRONZOR ], 33: [ Species.BRONZONG ]}, - { 1: [ Species.KLINK ], 38: [ Species.KLANG ], 49: [ Species.KLINKLANG ]} + { 1: [ SpeciesId.MAGNEMITE ], 30: [ SpeciesId.MAGNETON ]}, + { 1: [ SpeciesId.GRIMER ], 38: [ SpeciesId.MUK ]}, + { 1: [ SpeciesId.VOLTORB ], 30: [ SpeciesId.ELECTRODE ]}, + { 1: [ SpeciesId.BRONZOR ], 33: [ SpeciesId.BRONZONG ]}, + { 1: [ SpeciesId.KLINK ], 38: [ SpeciesId.KLANG ], 49: [ SpeciesId.KLINKLANG ]} ] }, - [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ Species.SOLOSIS ], 32: [ Species.DUOSION ], 41: [ Species.REUNICLUS ]}]}, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DITTO, { 1: [ Species.PORYGON ], 30: [ Species.PORYGON2 ]}]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ROTOM ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.TYPE_NULL ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MUK, Species.ELECTRODE, Species.BRONZONG, Species.MAGNEZONE, Species.PORYGON_Z, Species.REUNICLUS, Species.KLINKLANG ]}, + [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.SOLOSIS ], 32: [ SpeciesId.DUOSION ], 41: [ SpeciesId.REUNICLUS ]}]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO, { 1: [ SpeciesId.PORYGON ], 30: [ SpeciesId.PORYGON2 ]}]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TYPE_NULL ]}, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MUK, SpeciesId.ELECTRODE, SpeciesId.BRONZONG, SpeciesId.MAGNEZONE, SpeciesId.PORYGON_Z, SpeciesId.REUNICLUS, SpeciesId.KLINKLANG ]}, [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ROTOM, Species.ZYGARDE, Species.SILVALLY ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MEWTWO, Species.MIRAIDON ]} + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM, SpeciesId.ZYGARDE, SpeciesId.SILVALLY ]}, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MEWTWO, SpeciesId.MIRAIDON ]} }, - [Biome.END]: { + [BiomeId.END]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS ] }, - [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ROARING_MOON, Species.IRON_VALIANT ]}, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.WALKING_WAKE, Species.IRON_LEAVES, Species.GOUGING_FIRE, Species.RAGING_BOLT, Species.IRON_BOULDER, Species.IRON_CROWN ]}, + [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROARING_MOON, SpeciesId.IRON_VALIANT ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.WALKING_WAKE, SpeciesId.IRON_LEAVES, SpeciesId.GOUGING_FIRE, SpeciesId.RAGING_BOLT, SpeciesId.IRON_BOULDER, SpeciesId.IRON_CROWN ]}, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ETERNATUS ]}, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ETERNATUS ]}, [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} @@ -1635,7 +1635,7 @@ export const biomePokemonPools: BiomePokemonPools = { }; export const biomeTrainerPools: BiomeTrainerPools = { - [Biome.TOWN]: { + [BiomeId.TOWN]: { [BiomePoolTier.COMMON]: [ TrainerType.YOUNGSTER ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1646,7 +1646,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.PLAINS]: { + [BiomeId.PLAINS]: { [BiomePoolTier.COMMON]: [ TrainerType.BREEDER, TrainerType.TWINS ], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.CYCLIST ], [BiomePoolTier.RARE]: [ TrainerType.BLACK_BELT ], @@ -1657,7 +1657,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.GRASS]: { + [BiomeId.GRASS]: { [BiomePoolTier.COMMON]: [ TrainerType.BREEDER, TrainerType.SCHOOL_KID ], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.POKEFAN ], [BiomePoolTier.RARE]: [ TrainerType.BLACK_BELT ], @@ -1668,7 +1668,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.TALL_GRASS]: { + [BiomeId.TALL_GRASS]: { [BiomePoolTier.COMMON]: [], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.BREEDER, TrainerType.RANGER ], [BiomePoolTier.RARE]: [], @@ -1679,7 +1679,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.METROPOLIS]: { + [BiomeId.METROPOLIS]: { [BiomePoolTier.COMMON]: [ TrainerType.BEAUTY, TrainerType.CLERK, TrainerType.CYCLIST, TrainerType.OFFICER, TrainerType.WAITER ], [BiomePoolTier.UNCOMMON]: [ TrainerType.BREEDER, TrainerType.DEPOT_AGENT, TrainerType.GUITARIST ], [BiomePoolTier.RARE]: [ TrainerType.ARTIST, TrainerType.RICH_KID ], @@ -1690,7 +1690,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.FOREST]: { + [BiomeId.FOREST]: { [BiomePoolTier.COMMON]: [ TrainerType.RANGER ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1701,7 +1701,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.SEA]: { + [BiomeId.SEA]: { [BiomePoolTier.COMMON]: [ TrainerType.SAILOR, TrainerType.SWIMMER ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1712,7 +1712,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.SWAMP]: { + [BiomeId.SWAMP]: { [BiomePoolTier.COMMON]: [ TrainerType.PARASOL_LADY ], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER ], [BiomePoolTier.RARE]: [ TrainerType.BLACK_BELT ], @@ -1723,7 +1723,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.BEACH]: { + [BiomeId.BEACH]: { [BiomePoolTier.COMMON]: [ TrainerType.FISHERMAN, TrainerType.SAILOR ], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.BREEDER ], [BiomePoolTier.RARE]: [ TrainerType.BLACK_BELT ], @@ -1734,7 +1734,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.LAKE]: { + [BiomeId.LAKE]: { [BiomePoolTier.COMMON]: [ TrainerType.BREEDER, TrainerType.FISHERMAN, TrainerType.PARASOL_LADY ], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER ], [BiomePoolTier.RARE]: [ TrainerType.BLACK_BELT ], @@ -1745,7 +1745,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.SEABED]: { + [BiomeId.SEABED]: { [BiomePoolTier.COMMON]: [], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1756,7 +1756,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.MOUNTAIN]: { + [BiomeId.MOUNTAIN]: { [BiomePoolTier.COMMON]: [ TrainerType.BACKPACKER, TrainerType.BLACK_BELT, TrainerType.HIKER ], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.PILOT ], [BiomePoolTier.RARE]: [], @@ -1767,7 +1767,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.BADLANDS]: { + [BiomeId.BADLANDS]: { [BiomePoolTier.COMMON]: [ TrainerType.BACKPACKER, TrainerType.HIKER ], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER ], [BiomePoolTier.RARE]: [], @@ -1778,7 +1778,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.CAVE]: { + [BiomeId.CAVE]: { [BiomePoolTier.COMMON]: [ TrainerType.BACKPACKER, TrainerType.HIKER ], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.BLACK_BELT ], [BiomePoolTier.RARE]: [], @@ -1789,7 +1789,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.DESERT]: { + [BiomeId.DESERT]: { [BiomePoolTier.COMMON]: [ TrainerType.BACKPACKER, TrainerType.SCIENTIST ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1800,7 +1800,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.ICE_CAVE]: { + [BiomeId.ICE_CAVE]: { [BiomePoolTier.COMMON]: [ TrainerType.SNOW_WORKER ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1811,7 +1811,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.MEADOW]: { + [BiomeId.MEADOW]: { [BiomePoolTier.COMMON]: [ TrainerType.BEAUTY, TrainerType.MUSICIAN, TrainerType.PARASOL_LADY ], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.BAKER, TrainerType.BREEDER, TrainerType.POKEFAN ], [BiomePoolTier.RARE]: [], @@ -1822,7 +1822,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.POWER_PLANT]: { + [BiomeId.POWER_PLANT]: { [BiomePoolTier.COMMON]: [ TrainerType.GUITARIST, TrainerType.WORKER ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1833,7 +1833,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.VOLCANO]: { + [BiomeId.VOLCANO]: { [BiomePoolTier.COMMON]: [ TrainerType.FIREBREATHER ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1844,7 +1844,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.GRAVEYARD]: { + [BiomeId.GRAVEYARD]: { [BiomePoolTier.COMMON]: [ TrainerType.PSYCHIC ], [BiomePoolTier.UNCOMMON]: [ TrainerType.HEX_MANIAC ], [BiomePoolTier.RARE]: [], @@ -1855,7 +1855,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.DOJO]: { + [BiomeId.DOJO]: { [BiomePoolTier.COMMON]: [ TrainerType.BLACK_BELT ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1866,7 +1866,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.FACTORY]: { + [BiomeId.FACTORY]: { [BiomePoolTier.COMMON]: [ TrainerType.WORKER ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1877,7 +1877,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.RUINS]: { + [BiomeId.RUINS]: { [BiomePoolTier.COMMON]: [ TrainerType.PSYCHIC, TrainerType.SCIENTIST ], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.BLACK_BELT, TrainerType.HEX_MANIAC ], [BiomePoolTier.RARE]: [], @@ -1888,7 +1888,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.WASTELAND]: { + [BiomeId.WASTELAND]: { [BiomePoolTier.COMMON]: [ TrainerType.VETERAN ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1899,7 +1899,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.ABYSS]: { + [BiomeId.ABYSS]: { [BiomePoolTier.COMMON]: [], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER ], [BiomePoolTier.RARE]: [], @@ -1910,7 +1910,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.SPACE]: { + [BiomeId.SPACE]: { [BiomePoolTier.COMMON]: [], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1921,7 +1921,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.CONSTRUCTION_SITE]: { + [BiomeId.CONSTRUCTION_SITE]: { [BiomePoolTier.COMMON]: [ TrainerType.OFFICER, TrainerType.WORKER ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1932,7 +1932,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.JUNGLE]: { + [BiomeId.JUNGLE]: { [BiomePoolTier.COMMON]: [ TrainerType.BACKPACKER, TrainerType.RANGER ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1943,7 +1943,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.FAIRY_CAVE]: { + [BiomeId.FAIRY_CAVE]: { [BiomePoolTier.COMMON]: [ TrainerType.BEAUTY ], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.BREEDER ], [BiomePoolTier.RARE]: [], @@ -1954,7 +1954,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.TEMPLE]: { + [BiomeId.TEMPLE]: { [BiomePoolTier.COMMON]: [], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER ], [BiomePoolTier.RARE]: [], @@ -1965,7 +1965,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.SLUM]: { + [BiomeId.SLUM]: { [BiomePoolTier.COMMON]: [ TrainerType.BIKER, TrainerType.OFFICER, TrainerType.ROUGHNECK ], [BiomePoolTier.UNCOMMON]: [ TrainerType.BAKER, TrainerType.HOOLIGANS ], [BiomePoolTier.RARE]: [], @@ -1976,7 +1976,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.SNOWY_FOREST]: { + [BiomeId.SNOWY_FOREST]: { [BiomePoolTier.COMMON]: [ TrainerType.SNOW_WORKER ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -1987,7 +1987,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.ISLAND]: { + [BiomeId.ISLAND]: { [BiomePoolTier.COMMON]: [ TrainerType.RICH_KID ], [BiomePoolTier.UNCOMMON]: [ TrainerType.RICH ], [BiomePoolTier.RARE]: [], @@ -1998,7 +1998,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.LABORATORY]: { + [BiomeId.LABORATORY]: { [BiomePoolTier.COMMON]: [], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -2009,7 +2009,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, - [Biome.END]: { + [BiomeId.END]: { [BiomePoolTier.COMMON]: [], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], @@ -2025,5226 +2025,5226 @@ export const biomeTrainerPools: BiomeTrainerPools = { // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: init methods are expected to have many lines. export function initBiomes() { const pokemonBiomes = [ - [ Species.BULBASAUR, PokemonType.GRASS, PokemonType.POISON, [ - [ Biome.GRASS, BiomePoolTier.RARE ] + [ SpeciesId.BULBASAUR, PokemonType.GRASS, PokemonType.POISON, [ + [ BiomeId.GRASS, BiomePoolTier.RARE ] ] ], - [ Species.IVYSAUR, PokemonType.GRASS, PokemonType.POISON, [ - [ Biome.GRASS, BiomePoolTier.RARE ] + [ SpeciesId.IVYSAUR, PokemonType.GRASS, PokemonType.POISON, [ + [ BiomeId.GRASS, BiomePoolTier.RARE ] ] ], - [ Species.VENUSAUR, PokemonType.GRASS, PokemonType.POISON, [ - [ Biome.GRASS, BiomePoolTier.RARE ], - [ Biome.GRASS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.VENUSAUR, PokemonType.GRASS, PokemonType.POISON, [ + [ BiomeId.GRASS, BiomePoolTier.RARE ], + [ BiomeId.GRASS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.CHARMANDER, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.CHARMANDER, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.CHARMELEON, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.CHARMELEON, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.CHARIZARD, PokemonType.FIRE, PokemonType.FLYING, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.CHARIZARD, PokemonType.FIRE, PokemonType.FLYING, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SQUIRTLE, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] + [ SpeciesId.SQUIRTLE, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.WARTORTLE, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] + [ SpeciesId.WARTORTLE, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.BLASTOISE, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.BLASTOISE, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.RARE ], + [ BiomeId.LAKE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.CATERPIE, PokemonType.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.CATERPIE, PokemonType.BUG, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.METAPOD, PokemonType.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.METAPOD, PokemonType.BUG, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BUTTERFREE, PokemonType.BUG, PokemonType.FLYING, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.BUTTERFREE, PokemonType.BUG, PokemonType.FLYING, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.WEEDLE, PokemonType.BUG, PokemonType.POISON, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.WEEDLE, PokemonType.BUG, PokemonType.POISON, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.KAKUNA, PokemonType.BUG, PokemonType.POISON, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.KAKUNA, PokemonType.BUG, PokemonType.POISON, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.BEEDRILL, PokemonType.BUG, PokemonType.POISON, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.BEEDRILL, PokemonType.BUG, PokemonType.POISON, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PIDGEY, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] + [ SpeciesId.PIDGEY, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON ], + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON ] ] ], - [ Species.PIDGEOTTO, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] + [ SpeciesId.PIDGEOTTO, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON ] ] ], - [ Species.PIDGEOT, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + [ SpeciesId.PIDGEOT, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON ], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS ] ] ], - [ Species.RATTATA, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.METROPOLIS, BiomePoolTier.COMMON ], - [ Biome.SLUM, BiomePoolTier.COMMON ] + [ SpeciesId.RATTATA, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON ], + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON ], + [ BiomeId.SLUM, BiomePoolTier.COMMON ] ] ], - [ Species.RATICATE, PokemonType.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON ], - [ Biome.SLUM, BiomePoolTier.COMMON ] + [ SpeciesId.RATICATE, PokemonType.NORMAL, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON ], + [ BiomeId.SLUM, BiomePoolTier.COMMON ] ] ], - [ Species.SPEAROW, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] + [ SpeciesId.SPEAROW, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON ], + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON ] ] ], - [ Species.FEAROW, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + [ SpeciesId.FEAROW, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON ], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS ] ] ], - [ Species.EKANS, PokemonType.POISON, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.FOREST, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.EKANS, PokemonType.POISON, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON ], + [ BiomeId.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ARBOK, PokemonType.POISON, -1, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.ARBOK, PokemonType.POISON, -1, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON ], + [ BiomeId.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PIKACHU, PokemonType.ELECTRIC, -1, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + [ SpeciesId.PIKACHU, PokemonType.ELECTRIC, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.RAICHU, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + [ SpeciesId.RAICHU, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.SANDSHREW, PokemonType.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.DESERT, BiomePoolTier.COMMON ] + [ SpeciesId.SANDSHREW, PokemonType.GROUND, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.UNCOMMON ], + [ BiomeId.DESERT, BiomePoolTier.COMMON ] ] ], - [ Species.SANDSLASH, PokemonType.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.DESERT, BiomePoolTier.COMMON ], - [ Biome.DESERT, BiomePoolTier.BOSS ] + [ SpeciesId.SANDSLASH, PokemonType.GROUND, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.UNCOMMON ], + [ BiomeId.DESERT, BiomePoolTier.COMMON ], + [ BiomeId.DESERT, BiomePoolTier.BOSS ] ] ], - [ Species.NIDORAN_F, PokemonType.POISON, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] + [ SpeciesId.NIDORAN_F, PokemonType.POISON, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] ] ], - [ Species.NIDORINA, PokemonType.POISON, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] + [ SpeciesId.NIDORINA, PokemonType.POISON, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] ] ], - [ Species.NIDOQUEEN, PokemonType.POISON, PokemonType.GROUND, [ - [ Biome.TALL_GRASS, BiomePoolTier.BOSS, TimeOfDay.DAY ] + [ SpeciesId.NIDOQUEEN, PokemonType.POISON, PokemonType.GROUND, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS, TimeOfDay.DAY ] ] ], - [ Species.NIDORAN_M, PokemonType.POISON, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] + [ SpeciesId.NIDORAN_M, PokemonType.POISON, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] ] ], - [ Species.NIDORINO, PokemonType.POISON, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] + [ SpeciesId.NIDORINO, PokemonType.POISON, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] ] ], - [ Species.NIDOKING, PokemonType.POISON, PokemonType.GROUND, [ - [ Biome.TALL_GRASS, BiomePoolTier.BOSS, TimeOfDay.DAY ] + [ SpeciesId.NIDOKING, PokemonType.POISON, PokemonType.GROUND, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS, TimeOfDay.DAY ] ] ], - [ Species.CLEFAIRY, PokemonType.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.SPACE, BiomePoolTier.COMMON ] + [ SpeciesId.CLEFAIRY, PokemonType.FAIRY, -1, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.SPACE, BiomePoolTier.COMMON ] ] ], - [ Species.CLEFABLE, PokemonType.FAIRY, -1, [ - [ Biome.SPACE, BiomePoolTier.BOSS ] + [ SpeciesId.CLEFABLE, PokemonType.FAIRY, -1, [ + [ BiomeId.SPACE, BiomePoolTier.BOSS ] ] ], - [ Species.VULPIX, PokemonType.FIRE, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.COMMON ] + [ SpeciesId.VULPIX, PokemonType.FIRE, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.UNCOMMON ], + [ BiomeId.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.NINETALES, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS ] + [ SpeciesId.NINETALES, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.JIGGLYPUFF, PokemonType.NORMAL, PokemonType.FAIRY, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.JIGGLYPUFF, PokemonType.NORMAL, PokemonType.FAIRY, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.WIGGLYTUFF, PokemonType.NORMAL, PokemonType.FAIRY, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.WIGGLYTUFF, PokemonType.NORMAL, PokemonType.FAIRY, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.ZUBAT, PokemonType.POISON, PokemonType.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.ZUBAT, PokemonType.POISON, PokemonType.FLYING, [ + [ BiomeId.PLAINS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ BiomeId.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.GOLBAT, PokemonType.POISON, PokemonType.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.GOLBAT, PokemonType.POISON, PokemonType.FLYING, [ + [ BiomeId.PLAINS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ BiomeId.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.ODDISH, PokemonType.GRASS, PokemonType.POISON, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.ODDISH, PokemonType.GRASS, PokemonType.POISON, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.GLOOM, PokemonType.GRASS, PokemonType.POISON, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.GLOOM, PokemonType.GRASS, PokemonType.POISON, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.VILEPLUME, PokemonType.GRASS, PokemonType.POISON, [ - [ Biome.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.VILEPLUME, PokemonType.GRASS, PokemonType.POISON, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PARAS, PokemonType.BUG, PokemonType.GRASS, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.PARAS, PokemonType.BUG, PokemonType.GRASS, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ BiomeId.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ BiomeId.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.PARASECT, PokemonType.BUG, PokemonType.GRASS, [ - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.PARASECT, PokemonType.BUG, PokemonType.GRASS, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ BiomeId.CAVE, BiomePoolTier.COMMON ], + [ BiomeId.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.VENONAT, PokemonType.BUG, PokemonType.POISON, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] + [ SpeciesId.VENONAT, PokemonType.BUG, PokemonType.POISON, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ BiomeId.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ BiomeId.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] ] ], - [ Species.VENOMOTH, PokemonType.BUG, PokemonType.POISON, [ - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] + [ SpeciesId.VENOMOTH, PokemonType.BUG, PokemonType.POISON, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ BiomeId.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ BiomeId.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] ] ], - [ Species.DIGLETT, PokemonType.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON ] + [ SpeciesId.DIGLETT, PokemonType.GROUND, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.COMMON ] ] ], - [ Species.DUGTRIO, PokemonType.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.BADLANDS, BiomePoolTier.BOSS ] + [ SpeciesId.DUGTRIO, PokemonType.GROUND, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.COMMON ], + [ BiomeId.BADLANDS, BiomePoolTier.BOSS ] ] ], - [ Species.MEOWTH, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.MEOWTH, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PERSIAN, PokemonType.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.PERSIAN, PokemonType.NORMAL, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PSYDUCK, PokemonType.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.LAKE, BiomePoolTier.COMMON ] + [ SpeciesId.PSYDUCK, PokemonType.WATER, -1, [ + [ BiomeId.SWAMP, BiomePoolTier.UNCOMMON ], + [ BiomeId.LAKE, BiomePoolTier.COMMON ] ] ], - [ Species.GOLDUCK, PokemonType.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.LAKE, BiomePoolTier.BOSS ] + [ SpeciesId.GOLDUCK, PokemonType.WATER, -1, [ + [ BiomeId.SWAMP, BiomePoolTier.UNCOMMON ], + [ BiomeId.LAKE, BiomePoolTier.COMMON ], + [ BiomeId.LAKE, BiomePoolTier.BOSS ] ] ], - [ Species.MANKEY, PokemonType.FIGHTING, -1, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.DOJO, BiomePoolTier.COMMON ] + [ SpeciesId.MANKEY, PokemonType.FIGHTING, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.DOJO, BiomePoolTier.COMMON ] ] ], - [ Species.PRIMEAPE, PokemonType.FIGHTING, -1, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.DOJO, BiomePoolTier.COMMON ] + [ SpeciesId.PRIMEAPE, PokemonType.FIGHTING, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.DOJO, BiomePoolTier.COMMON ] ] ], - [ Species.GROWLITHE, PokemonType.FIRE, -1, [ - [ Biome.GRASS, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.COMMON ] + [ SpeciesId.GROWLITHE, PokemonType.FIRE, -1, [ + [ BiomeId.GRASS, BiomePoolTier.RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.ARCANINE, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS ] + [ SpeciesId.ARCANINE, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.POLIWAG, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.COMMON ] + [ SpeciesId.POLIWAG, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON ], + [ BiomeId.SWAMP, BiomePoolTier.COMMON ] ] ], - [ Species.POLIWHIRL, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.COMMON ] + [ SpeciesId.POLIWHIRL, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON ], + [ BiomeId.SWAMP, BiomePoolTier.COMMON ] ] ], - [ Species.POLIWRATH, PokemonType.WATER, PokemonType.FIGHTING, [ - [ Biome.SWAMP, BiomePoolTier.BOSS ] + [ SpeciesId.POLIWRATH, PokemonType.WATER, PokemonType.FIGHTING, [ + [ BiomeId.SWAMP, BiomePoolTier.BOSS ] ] ], - [ Species.ABRA, PokemonType.PSYCHIC, -1, [ - [ Biome.TOWN, BiomePoolTier.RARE ], - [ Biome.PLAINS, BiomePoolTier.RARE ], - [ Biome.RUINS, BiomePoolTier.UNCOMMON ] + [ SpeciesId.ABRA, PokemonType.PSYCHIC, -1, [ + [ BiomeId.TOWN, BiomePoolTier.RARE ], + [ BiomeId.PLAINS, BiomePoolTier.RARE ], + [ BiomeId.RUINS, BiomePoolTier.UNCOMMON ] ] ], - [ Species.KADABRA, PokemonType.PSYCHIC, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE ], - [ Biome.RUINS, BiomePoolTier.UNCOMMON ] + [ SpeciesId.KADABRA, PokemonType.PSYCHIC, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.RARE ], + [ BiomeId.RUINS, BiomePoolTier.UNCOMMON ] ] ], - [ Species.ALAKAZAM, PokemonType.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.BOSS ] + [ SpeciesId.ALAKAZAM, PokemonType.PSYCHIC, -1, [ + [ BiomeId.RUINS, BiomePoolTier.BOSS ] ] ], - [ Species.MACHOP, PokemonType.FIGHTING, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] + [ SpeciesId.MACHOP, PokemonType.FIGHTING, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ BiomeId.FACTORY, BiomePoolTier.COMMON ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] ] ], - [ Species.MACHOKE, PokemonType.FIGHTING, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] + [ SpeciesId.MACHOKE, PokemonType.FIGHTING, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ BiomeId.FACTORY, BiomePoolTier.COMMON ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] ] ], - [ Species.MACHAMP, PokemonType.FIGHTING, -1, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] + [ SpeciesId.MACHAMP, PokemonType.FIGHTING, -1, [ + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] ] ], - [ Species.BELLSPROUT, PokemonType.GRASS, PokemonType.POISON, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.BELLSPROUT, PokemonType.GRASS, PokemonType.POISON, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.WEEPINBELL, PokemonType.GRASS, PokemonType.POISON, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.WEEPINBELL, PokemonType.GRASS, PokemonType.POISON, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VICTREEBEL, PokemonType.GRASS, PokemonType.POISON, [ - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.VICTREEBEL, PokemonType.GRASS, PokemonType.POISON, [ + [ BiomeId.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TENTACOOL, PokemonType.WATER, PokemonType.POISON, [ - [ Biome.SEA, BiomePoolTier.COMMON ], - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + [ SpeciesId.TENTACOOL, PokemonType.WATER, PokemonType.POISON, [ + [ BiomeId.SEA, BiomePoolTier.COMMON ], + [ BiomeId.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.TENTACRUEL, PokemonType.WATER, PokemonType.POISON, [ - [ Biome.SEA, BiomePoolTier.COMMON ], - [ Biome.SEA, BiomePoolTier.BOSS ], - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + [ SpeciesId.TENTACRUEL, PokemonType.WATER, PokemonType.POISON, [ + [ BiomeId.SEA, BiomePoolTier.COMMON ], + [ BiomeId.SEA, BiomePoolTier.BOSS ], + [ BiomeId.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GEODUDE, PokemonType.ROCK, PokemonType.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.GEODUDE, PokemonType.ROCK, PokemonType.GROUND, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ BiomeId.BADLANDS, BiomePoolTier.COMMON ], + [ BiomeId.CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GRAVELER, PokemonType.ROCK, PokemonType.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.GRAVELER, PokemonType.ROCK, PokemonType.GROUND, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ BiomeId.BADLANDS, BiomePoolTier.COMMON ], + [ BiomeId.CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GOLEM, PokemonType.ROCK, PokemonType.GROUND, [ - [ Biome.BADLANDS, BiomePoolTier.BOSS ] + [ SpeciesId.GOLEM, PokemonType.ROCK, PokemonType.GROUND, [ + [ BiomeId.BADLANDS, BiomePoolTier.BOSS ] ] ], - [ Species.PONYTA, PokemonType.FIRE, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.VOLCANO, BiomePoolTier.COMMON ] + [ SpeciesId.PONYTA, PokemonType.FIRE, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.RAPIDASH, PokemonType.FIRE, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.VOLCANO, BiomePoolTier.COMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] + [ SpeciesId.RAPIDASH, PokemonType.FIRE, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.VOLCANO, BiomePoolTier.COMMON ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.SLOWPOKE, PokemonType.WATER, PokemonType.PSYCHIC, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.LAKE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SLOWPOKE, PokemonType.WATER, PokemonType.PSYCHIC, [ + [ BiomeId.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.LAKE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SLOWBRO, PokemonType.WATER, PokemonType.PSYCHIC, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.LAKE, BiomePoolTier.UNCOMMON ], - [ Biome.LAKE, BiomePoolTier.BOSS ] + [ SpeciesId.SLOWBRO, PokemonType.WATER, PokemonType.PSYCHIC, [ + [ BiomeId.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.LAKE, BiomePoolTier.UNCOMMON ], + [ BiomeId.LAKE, BiomePoolTier.BOSS ] ] ], - [ Species.MAGNEMITE, PokemonType.ELECTRIC, PokemonType.STEEL, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ] + [ SpeciesId.MAGNEMITE, PokemonType.ELECTRIC, PokemonType.STEEL, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ], + [ BiomeId.FACTORY, BiomePoolTier.COMMON ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.COMMON ], + [ BiomeId.LABORATORY, BiomePoolTier.COMMON ] ] ], - [ Species.MAGNETON, PokemonType.ELECTRIC, PokemonType.STEEL, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ] + [ SpeciesId.MAGNETON, PokemonType.ELECTRIC, PokemonType.STEEL, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ], + [ BiomeId.FACTORY, BiomePoolTier.COMMON ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.COMMON ], + [ BiomeId.LABORATORY, BiomePoolTier.COMMON ] ] ], - [ Species.FARFETCHD, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], - [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.FARFETCHD, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.PLAINS, BiomePoolTier.SUPER_RARE ], + [ BiomeId.PLAINS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.DODUO, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.DODUO, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.DODRIO, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.DODRIO, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SEEL, PokemonType.WATER, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.SEEL, PokemonType.WATER, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.DEWGONG, PokemonType.WATER, PokemonType.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.DEWGONG, PokemonType.WATER, PokemonType.ICE, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.GRIMER, PokemonType.POISON, -1, [ - [ Biome.SLUM, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ] + [ SpeciesId.GRIMER, PokemonType.POISON, -1, [ + [ BiomeId.SLUM, BiomePoolTier.COMMON ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ], + [ BiomeId.LABORATORY, BiomePoolTier.COMMON ] ] ], - [ Species.MUK, PokemonType.POISON, -1, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ], - [ Biome.SLUM, BiomePoolTier.COMMON ], - [ Biome.SLUM, BiomePoolTier.BOSS ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.BOSS ] + [ SpeciesId.MUK, PokemonType.POISON, -1, [ + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ], + [ BiomeId.SLUM, BiomePoolTier.COMMON ], + [ BiomeId.SLUM, BiomePoolTier.BOSS ], + [ BiomeId.LABORATORY, BiomePoolTier.COMMON ], + [ BiomeId.LABORATORY, BiomePoolTier.BOSS ] ] ], - [ Species.SHELLDER, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.BEACH, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SHELLDER, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.BEACH, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CLOYSTER, PokemonType.WATER, PokemonType.ICE, [ - [ Biome.BEACH, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.CLOYSTER, PokemonType.WATER, PokemonType.ICE, [ + [ BiomeId.BEACH, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.GASTLY, PokemonType.GHOST, PokemonType.POISON, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ] + [ SpeciesId.GASTLY, PokemonType.GHOST, PokemonType.POISON, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.HAUNTER, PokemonType.GHOST, PokemonType.POISON, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ] + [ SpeciesId.HAUNTER, PokemonType.GHOST, PokemonType.POISON, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.GENGAR, PokemonType.GHOST, PokemonType.POISON, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + [ SpeciesId.GENGAR, PokemonType.GHOST, PokemonType.POISON, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.ONIX, PokemonType.ROCK, PokemonType.GROUND, [ - [ Biome.BADLANDS, BiomePoolTier.RARE ], - [ Biome.CAVE, BiomePoolTier.RARE ], - [ Biome.CAVE, BiomePoolTier.BOSS ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] + [ SpeciesId.ONIX, PokemonType.ROCK, PokemonType.GROUND, [ + [ BiomeId.BADLANDS, BiomePoolTier.RARE ], + [ BiomeId.CAVE, BiomePoolTier.RARE ], + [ BiomeId.CAVE, BiomePoolTier.BOSS ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.RARE ] ] ], - [ Species.DROWZEE, PokemonType.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.COMMON ] + [ SpeciesId.DROWZEE, PokemonType.PSYCHIC, -1, [ + [ BiomeId.RUINS, BiomePoolTier.COMMON ] ] ], - [ Species.HYPNO, PokemonType.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.RUINS, BiomePoolTier.BOSS ] + [ SpeciesId.HYPNO, PokemonType.PSYCHIC, -1, [ + [ BiomeId.RUINS, BiomePoolTier.COMMON ], + [ BiomeId.RUINS, BiomePoolTier.BOSS ] ] ], - [ Species.KRABBY, PokemonType.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.COMMON ] + [ SpeciesId.KRABBY, PokemonType.WATER, -1, [ + [ BiomeId.BEACH, BiomePoolTier.COMMON ] ] ], - [ Species.KINGLER, PokemonType.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.COMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ] + [ SpeciesId.KINGLER, PokemonType.WATER, -1, [ + [ BiomeId.BEACH, BiomePoolTier.COMMON ], + [ BiomeId.BEACH, BiomePoolTier.BOSS ] ] ], - [ Species.VOLTORB, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ] + [ SpeciesId.VOLTORB, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ], + [ BiomeId.FACTORY, BiomePoolTier.COMMON ], + [ BiomeId.LABORATORY, BiomePoolTier.COMMON ] ] ], - [ Species.ELECTRODE, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.BOSS ] + [ SpeciesId.ELECTRODE, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ], + [ BiomeId.FACTORY, BiomePoolTier.COMMON ], + [ BiomeId.LABORATORY, BiomePoolTier.COMMON ], + [ BiomeId.LABORATORY, BiomePoolTier.BOSS ] ] ], - [ Species.EXEGGCUTE, PokemonType.GRASS, PokemonType.PSYCHIC, [ - [ Biome.FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.EXEGGCUTE, PokemonType.GRASS, PokemonType.PSYCHIC, [ + [ BiomeId.FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.EXEGGUTOR, PokemonType.GRASS, PokemonType.PSYCHIC, [ - [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.EXEGGUTOR, PokemonType.GRASS, PokemonType.PSYCHIC, [ + [ BiomeId.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CUBONE, PokemonType.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.CUBONE, PokemonType.GROUND, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ BiomeId.GRAVEYARD, BiomePoolTier.UNCOMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.MAROWAK, PokemonType.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], - [ Biome.BADLANDS, BiomePoolTier.BOSS, TimeOfDay.NIGHT ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY, TimeOfDay.DUSK ]] + [ SpeciesId.MAROWAK, PokemonType.GROUND, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ BiomeId.GRAVEYARD, BiomePoolTier.UNCOMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.UNCOMMON ], + [ BiomeId.BADLANDS, BiomePoolTier.BOSS, TimeOfDay.NIGHT ], + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY, TimeOfDay.DUSK ]] ] ], - [ Species.HITMONLEE, PokemonType.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] + [ SpeciesId.HITMONLEE, PokemonType.FIGHTING, -1, [ + [ BiomeId.DOJO, BiomePoolTier.RARE ], + [ BiomeId.DOJO, BiomePoolTier.BOSS ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.RARE ] ] ], - [ Species.HITMONCHAN, PokemonType.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] + [ SpeciesId.HITMONCHAN, PokemonType.FIGHTING, -1, [ + [ BiomeId.DOJO, BiomePoolTier.RARE ], + [ BiomeId.DOJO, BiomePoolTier.BOSS ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.RARE ] ] ], - [ Species.LICKITUNG, PokemonType.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.LICKITUNG, PokemonType.NORMAL, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.KOFFING, PokemonType.POISON, -1, [ - [ Biome.SLUM, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.KOFFING, PokemonType.POISON, -1, [ + [ BiomeId.SLUM, BiomePoolTier.COMMON ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.WEEZING, PokemonType.POISON, -1, [ - [ Biome.SLUM, BiomePoolTier.COMMON ], - [ Biome.SLUM, BiomePoolTier.BOSS ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.WEEZING, PokemonType.POISON, -1, [ + [ BiomeId.SLUM, BiomePoolTier.COMMON ], + [ BiomeId.SLUM, BiomePoolTier.BOSS ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.RHYHORN, PokemonType.GROUND, PokemonType.ROCK, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.RHYHORN, PokemonType.GROUND, PokemonType.ROCK, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.BADLANDS, BiomePoolTier.COMMON ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.RHYDON, PokemonType.GROUND, PokemonType.ROCK, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.RHYDON, PokemonType.GROUND, PokemonType.ROCK, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.BADLANDS, BiomePoolTier.COMMON ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CHANSEY, PokemonType.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], - [ Biome.MEADOW, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.CHANSEY, PokemonType.NORMAL, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.SUPER_RARE ], + [ BiomeId.MEADOW, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.TANGELA, PokemonType.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.TANGELA, PokemonType.GRASS, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.KANGASKHAN, PokemonType.NORMAL, -1, [ - [ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.KANGASKHAN, PokemonType.NORMAL, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.SUPER_RARE ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HORSEA, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ] + [ SpeciesId.HORSEA, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SEADRA, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SEADRA, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GOLDEEN, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.SEA, BiomePoolTier.UNCOMMON ] + [ SpeciesId.GOLDEEN, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.COMMON ], + [ BiomeId.SEA, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SEAKING, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.LAKE, BiomePoolTier.BOSS ], - [ Biome.SEA, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SEAKING, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.COMMON ], + [ BiomeId.LAKE, BiomePoolTier.BOSS ], + [ BiomeId.SEA, BiomePoolTier.UNCOMMON ] ] ], - [ Species.STARYU, PokemonType.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.STARYU, PokemonType.WATER, -1, [ + [ BiomeId.BEACH, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.STARMIE, PokemonType.WATER, PokemonType.PSYCHIC, [ - [ Biome.BEACH, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.BEACH, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.STARMIE, PokemonType.WATER, PokemonType.PSYCHIC, [ + [ BiomeId.BEACH, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.BEACH, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.MR_MIME, PokemonType.PSYCHIC, PokemonType.FAIRY, [ - [ Biome.RUINS, BiomePoolTier.RARE ], - [ Biome.RUINS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.MR_MIME, PokemonType.PSYCHIC, PokemonType.FAIRY, [ + [ BiomeId.RUINS, BiomePoolTier.RARE ], + [ BiomeId.RUINS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SCYTHER, PokemonType.BUG, PokemonType.FLYING, [ - [ Biome.TALL_GRASS, BiomePoolTier.SUPER_RARE ], - [ Biome.FOREST, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.JUNGLE, BiomePoolTier.RARE ] + [ SpeciesId.SCYTHER, PokemonType.BUG, PokemonType.FLYING, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.SUPER_RARE ], + [ BiomeId.FOREST, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.JYNX, PokemonType.ICE, PokemonType.PSYCHIC, [ - [ Biome.ICE_CAVE, BiomePoolTier.RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.JYNX, PokemonType.ICE, PokemonType.PSYCHIC, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.RARE ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ELECTABUZZ, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] + [ SpeciesId.ELECTABUZZ, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.UNCOMMON ] ] ], - [ Species.MAGMAR, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ] + [ SpeciesId.MAGMAR, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.UNCOMMON ] ] ], - [ Species.PINSIR, PokemonType.BUG, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.PINSIR, PokemonType.BUG, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.RARE ], + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.TAUROS, PokemonType.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.RARE ], - [ Biome.MEADOW, BiomePoolTier.BOSS ] + [ SpeciesId.TAUROS, PokemonType.NORMAL, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.RARE ], + [ BiomeId.MEADOW, BiomePoolTier.BOSS ] ] ], - [ Species.MAGIKARP, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.COMMON ], - [ Biome.LAKE, BiomePoolTier.COMMON ] + [ SpeciesId.MAGIKARP, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.COMMON ], + [ BiomeId.LAKE, BiomePoolTier.COMMON ] ] ], - [ Species.GYARADOS, PokemonType.WATER, PokemonType.FLYING, [ - [ Biome.SEA, BiomePoolTier.COMMON ], - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.LAKE, BiomePoolTier.BOSS ] + [ SpeciesId.GYARADOS, PokemonType.WATER, PokemonType.FLYING, [ + [ BiomeId.SEA, BiomePoolTier.COMMON ], + [ BiomeId.LAKE, BiomePoolTier.COMMON ], + [ BiomeId.LAKE, BiomePoolTier.BOSS ] ] ], - [ Species.LAPRAS, PokemonType.WATER, PokemonType.ICE, [ - [ Biome.SEA, BiomePoolTier.RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.LAPRAS, PokemonType.WATER, PokemonType.ICE, [ + [ BiomeId.SEA, BiomePoolTier.RARE ], + [ BiomeId.ICE_CAVE, BiomePoolTier.RARE ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.DITTO, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.ULTRA_RARE ], - [ Biome.PLAINS, BiomePoolTier.ULTRA_RARE ], - [ Biome.METROPOLIS, BiomePoolTier.SUPER_RARE ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.SUPER_RARE ], - [ Biome.LABORATORY, BiomePoolTier.RARE ] + [ SpeciesId.DITTO, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.PLAINS, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.METROPOLIS, BiomePoolTier.SUPER_RARE ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.SUPER_RARE ], + [ BiomeId.LABORATORY, BiomePoolTier.RARE ] ] ], - [ Species.EEVEE, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.SUPER_RARE ], - [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], - [ Biome.METROPOLIS, BiomePoolTier.SUPER_RARE ], - [ Biome.MEADOW, BiomePoolTier.RARE ] + [ SpeciesId.EEVEE, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.SUPER_RARE ], + [ BiomeId.PLAINS, BiomePoolTier.SUPER_RARE ], + [ BiomeId.METROPOLIS, BiomePoolTier.SUPER_RARE ], + [ BiomeId.MEADOW, BiomePoolTier.RARE ] ] ], - [ Species.VAPOREON, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.SUPER_RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.VAPOREON, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.SUPER_RARE ], + [ BiomeId.LAKE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.JOLTEON, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.SUPER_RARE ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.JOLTEON, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.SUPER_RARE ], + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.FLAREON, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.FLAREON, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.SUPER_RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.PORYGON, PokemonType.NORMAL, -1, [ - [ Biome.FACTORY, BiomePoolTier.RARE ], - [ Biome.SPACE, BiomePoolTier.SUPER_RARE ], - [ Biome.LABORATORY, BiomePoolTier.RARE ] + [ SpeciesId.PORYGON, PokemonType.NORMAL, -1, [ + [ BiomeId.FACTORY, BiomePoolTier.RARE ], + [ BiomeId.SPACE, BiomePoolTier.SUPER_RARE ], + [ BiomeId.LABORATORY, BiomePoolTier.RARE ] ] ], - [ Species.OMANYTE, PokemonType.ROCK, PokemonType.WATER, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.OMANYTE, PokemonType.ROCK, PokemonType.WATER, [ + [ BiomeId.SEABED, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.OMASTAR, PokemonType.ROCK, PokemonType.WATER, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.OMASTAR, PokemonType.ROCK, PokemonType.WATER, [ + [ BiomeId.SEABED, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.KABUTO, PokemonType.ROCK, PokemonType.WATER, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.KABUTO, PokemonType.ROCK, PokemonType.WATER, [ + [ BiomeId.SEABED, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.KABUTOPS, PokemonType.ROCK, PokemonType.WATER, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.KABUTOPS, PokemonType.ROCK, PokemonType.WATER, [ + [ BiomeId.SEABED, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.AERODACTYL, PokemonType.ROCK, PokemonType.FLYING, [ - [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.AERODACTYL, PokemonType.ROCK, PokemonType.FLYING, [ + [ BiomeId.WASTELAND, BiomePoolTier.SUPER_RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SNORLAX, PokemonType.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], - [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.SNORLAX, PokemonType.NORMAL, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.SUPER_RARE ], + [ BiomeId.PLAINS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ARTICUNO, PokemonType.ICE, PokemonType.FLYING, [ - [ Biome.ICE_CAVE, BiomePoolTier.ULTRA_RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.ARTICUNO, PokemonType.ICE, PokemonType.FLYING, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.ZAPDOS, PokemonType.ELECTRIC, PokemonType.FLYING, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.ZAPDOS, PokemonType.ELECTRIC, PokemonType.FLYING, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.MOLTRES, PokemonType.FIRE, PokemonType.FLYING, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.MOLTRES, PokemonType.FIRE, PokemonType.FLYING, [ + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.DRATINI, PokemonType.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.RARE ] + [ SpeciesId.DRATINI, PokemonType.DRAGON, -1, [ + [ BiomeId.WASTELAND, BiomePoolTier.RARE ] ] ], - [ Species.DRAGONAIR, PokemonType.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.RARE ] + [ SpeciesId.DRAGONAIR, PokemonType.DRAGON, -1, [ + [ BiomeId.WASTELAND, BiomePoolTier.RARE ] ] ], - [ Species.DRAGONITE, PokemonType.DRAGON, PokemonType.FLYING, [ - [ Biome.WASTELAND, BiomePoolTier.RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS ] + [ SpeciesId.DRAGONITE, PokemonType.DRAGON, PokemonType.FLYING, [ + [ BiomeId.WASTELAND, BiomePoolTier.RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS ] ] ], - [ Species.MEWTWO, PokemonType.PSYCHIC, -1, [ - [ Biome.LABORATORY, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.MEWTWO, PokemonType.PSYCHIC, -1, [ + [ BiomeId.LABORATORY, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.MEW, PokemonType.PSYCHIC, -1, [ ] + [ SpeciesId.MEW, PokemonType.PSYCHIC, -1, [ ] ], - [ Species.CHIKORITA, PokemonType.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ] + [ SpeciesId.CHIKORITA, PokemonType.GRASS, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.RARE ] ] ], - [ Species.BAYLEEF, PokemonType.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ] + [ SpeciesId.BAYLEEF, PokemonType.GRASS, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.RARE ] ] ], - [ Species.MEGANIUM, PokemonType.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.MEGANIUM, PokemonType.GRASS, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.RARE ], + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.CYNDAQUIL, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.CYNDAQUIL, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.QUILAVA, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.QUILAVA, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.TYPHLOSION, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.TYPHLOSION, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.TOTODILE, PokemonType.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.RARE ] + [ SpeciesId.TOTODILE, PokemonType.WATER, -1, [ + [ BiomeId.SWAMP, BiomePoolTier.RARE ] ] ], - [ Species.CROCONAW, PokemonType.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.RARE ] + [ SpeciesId.CROCONAW, PokemonType.WATER, -1, [ + [ BiomeId.SWAMP, BiomePoolTier.RARE ] ] ], - [ Species.FERALIGATR, PokemonType.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.RARE ], - [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.FERALIGATR, PokemonType.WATER, -1, [ + [ BiomeId.SWAMP, BiomePoolTier.RARE ], + [ BiomeId.SWAMP, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SENTRET, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SENTRET, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.FURRET, PokemonType.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.FURRET, PokemonType.NORMAL, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HOOTHOOT, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ] + [ SpeciesId.HOOTHOOT, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ] ] ], - [ Species.NOCTOWL, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] + [ SpeciesId.NOCTOWL, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ BiomeId.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] ] ], - [ Species.LEDYBA, PokemonType.BUG, PokemonType.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.DAWN ], - [ Biome.MEADOW, BiomePoolTier.COMMON, TimeOfDay.DAWN ] + [ SpeciesId.LEDYBA, PokemonType.BUG, PokemonType.FLYING, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, TimeOfDay.DAWN ], + [ BiomeId.MEADOW, BiomePoolTier.COMMON, TimeOfDay.DAWN ] ] ], - [ Species.LEDIAN, PokemonType.BUG, PokemonType.FLYING, [ - [ Biome.MEADOW, BiomePoolTier.COMMON, TimeOfDay.DAWN ], - [ Biome.MEADOW, BiomePoolTier.BOSS, TimeOfDay.DAWN ] + [ SpeciesId.LEDIAN, PokemonType.BUG, PokemonType.FLYING, [ + [ BiomeId.MEADOW, BiomePoolTier.COMMON, TimeOfDay.DAWN ], + [ BiomeId.MEADOW, BiomePoolTier.BOSS, TimeOfDay.DAWN ] ] ], - [ Species.SPINARAK, PokemonType.BUG, PokemonType.POISON, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], - [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], - [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], - [ Biome.JUNGLE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] + [ SpeciesId.SPINARAK, PokemonType.BUG, PokemonType.POISON, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], + [ BiomeId.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ BiomeId.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], + [ BiomeId.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] ] ], - [ Species.ARIADOS, PokemonType.BUG, PokemonType.POISON, [ - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], - [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], - [ Biome.JUNGLE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] + [ SpeciesId.ARIADOS, PokemonType.BUG, PokemonType.POISON, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], + [ BiomeId.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ BiomeId.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] ] ], - [ Species.CROBAT, PokemonType.POISON, PokemonType.FLYING, [ - [ Biome.CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.CROBAT, PokemonType.POISON, PokemonType.FLYING, [ + [ BiomeId.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.CHINCHOU, PokemonType.WATER, PokemonType.ELECTRIC, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.SEABED, BiomePoolTier.COMMON ] + [ SpeciesId.CHINCHOU, PokemonType.WATER, PokemonType.ELECTRIC, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ BiomeId.SEABED, BiomePoolTier.COMMON ] ] ], - [ Species.LANTURN, PokemonType.WATER, PokemonType.ELECTRIC, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.SEABED, BiomePoolTier.COMMON ], - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ SpeciesId.LANTURN, PokemonType.WATER, PokemonType.ELECTRIC, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ BiomeId.SEABED, BiomePoolTier.COMMON ], + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.PICHU, PokemonType.ELECTRIC, -1, [ ] + [ SpeciesId.PICHU, PokemonType.ELECTRIC, -1, [ ] ], - [ Species.CLEFFA, PokemonType.FAIRY, -1, [ ] + [ SpeciesId.CLEFFA, PokemonType.FAIRY, -1, [ ] ], - [ Species.IGGLYBUFF, PokemonType.NORMAL, PokemonType.FAIRY, [ ] + [ SpeciesId.IGGLYBUFF, PokemonType.NORMAL, PokemonType.FAIRY, [ ] ], - [ Species.TOGEPI, PokemonType.FAIRY, -1, [ ] + [ SpeciesId.TOGEPI, PokemonType.FAIRY, -1, [ ] ], - [ Species.TOGETIC, PokemonType.FAIRY, PokemonType.FLYING, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.TOGETIC, PokemonType.FAIRY, PokemonType.FLYING, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.NATU, PokemonType.PSYCHIC, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ] + [ SpeciesId.NATU, PokemonType.PSYCHIC, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ BiomeId.RUINS, BiomePoolTier.COMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.XATU, PokemonType.PSYCHIC, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.RUINS, BiomePoolTier.BOSS ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ] + [ SpeciesId.XATU, PokemonType.PSYCHIC, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ BiomeId.RUINS, BiomePoolTier.COMMON ], + [ BiomeId.RUINS, BiomePoolTier.BOSS ], + [ BiomeId.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.MAREEP, PokemonType.ELECTRIC, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.RARE ] + [ SpeciesId.MAREEP, PokemonType.ELECTRIC, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ], + [ BiomeId.POWER_PLANT, BiomePoolTier.RARE ] ] ], - [ Species.FLAAFFY, PokemonType.ELECTRIC, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.RARE ] + [ SpeciesId.FLAAFFY, PokemonType.ELECTRIC, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ], + [ BiomeId.POWER_PLANT, BiomePoolTier.RARE ] ] ], - [ Species.AMPHAROS, PokemonType.ELECTRIC, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.AMPHAROS, PokemonType.ELECTRIC, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ], + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.BELLOSSOM, PokemonType.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.BELLOSSOM, PokemonType.GRASS, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.MARILL, PokemonType.WATER, PokemonType.FAIRY, [ - [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.MARILL, PokemonType.WATER, PokemonType.FAIRY, [ + [ BiomeId.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.AZUMARILL, PokemonType.WATER, PokemonType.FAIRY, [ - [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.LAKE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.AZUMARILL, PokemonType.WATER, PokemonType.FAIRY, [ + [ BiomeId.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.LAKE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.SUDOWOODO, PokemonType.ROCK, -1, [ - [ Biome.GRASS, BiomePoolTier.SUPER_RARE ], - [ Biome.GRASS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.SUDOWOODO, PokemonType.ROCK, -1, [ + [ BiomeId.GRASS, BiomePoolTier.SUPER_RARE ], + [ BiomeId.GRASS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.POLITOED, PokemonType.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.SUPER_RARE ], - [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.POLITOED, PokemonType.WATER, -1, [ + [ BiomeId.SWAMP, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SWAMP, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HOPPIP, PokemonType.GRASS, PokemonType.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.HOPPIP, PokemonType.GRASS, PokemonType.FLYING, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SKIPLOOM, PokemonType.GRASS, PokemonType.FLYING, [ - [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SKIPLOOM, PokemonType.GRASS, PokemonType.FLYING, [ + [ BiomeId.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.JUMPLUFF, PokemonType.GRASS, PokemonType.FLYING, [ - [ Biome.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.JUMPLUFF, PokemonType.GRASS, PokemonType.FLYING, [ + [ BiomeId.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.AIPOM, PokemonType.NORMAL, -1, [ - [ Biome.JUNGLE, BiomePoolTier.COMMON ] + [ SpeciesId.AIPOM, PokemonType.NORMAL, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.COMMON ] ] ], - [ Species.SUNKERN, PokemonType.GRASS, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SUNKERN, PokemonType.GRASS, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SUNFLORA, PokemonType.GRASS, -1, [ - [ Biome.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SUNFLORA, PokemonType.GRASS, -1, [ + [ BiomeId.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.YANMA, PokemonType.BUG, PokemonType.FLYING, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ] + [ SpeciesId.YANMA, PokemonType.BUG, PokemonType.FLYING, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.WOOPER, PokemonType.WATER, PokemonType.GROUND, [ - [ Biome.LAKE, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.WOOPER, PokemonType.WATER, PokemonType.GROUND, [ + [ BiomeId.LAKE, BiomePoolTier.UNCOMMON ], + [ BiomeId.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.QUAGSIRE, PokemonType.WATER, PokemonType.GROUND, [ - [ Biome.LAKE, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.QUAGSIRE, PokemonType.WATER, PokemonType.GROUND, [ + [ BiomeId.LAKE, BiomePoolTier.UNCOMMON ], + [ BiomeId.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ESPEON, PokemonType.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.SUPER_RARE, TimeOfDay.DAY ], - [ Biome.RUINS, BiomePoolTier.BOSS_RARE, TimeOfDay.DAY ] + [ SpeciesId.ESPEON, PokemonType.PSYCHIC, -1, [ + [ BiomeId.RUINS, BiomePoolTier.SUPER_RARE, TimeOfDay.DAY ], + [ BiomeId.RUINS, BiomePoolTier.BOSS_RARE, TimeOfDay.DAY ] ] ], - [ Species.UMBREON, PokemonType.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.SUPER_RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.UMBREON, PokemonType.DARK, -1, [ + [ BiomeId.ABYSS, BiomePoolTier.SUPER_RARE ], + [ BiomeId.ABYSS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.MURKROW, PokemonType.DARK, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE, TimeOfDay.NIGHT ], - [ Biome.ABYSS, BiomePoolTier.COMMON ] + [ SpeciesId.MURKROW, PokemonType.DARK, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.RARE, TimeOfDay.NIGHT ], + [ BiomeId.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.SLOWKING, PokemonType.WATER, PokemonType.PSYCHIC, [ - [ Biome.LAKE, BiomePoolTier.SUPER_RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.SLOWKING, PokemonType.WATER, PokemonType.PSYCHIC, [ + [ BiomeId.LAKE, BiomePoolTier.SUPER_RARE ], + [ BiomeId.LAKE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.MISDREAVUS, PokemonType.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.RARE ] + [ SpeciesId.MISDREAVUS, PokemonType.GHOST, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.RARE ] ] ], - [ Species.UNOWN, PokemonType.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.COMMON ] + [ SpeciesId.UNOWN, PokemonType.PSYCHIC, -1, [ + [ BiomeId.RUINS, BiomePoolTier.COMMON ] ] ], - [ Species.WOBBUFFET, PokemonType.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.RARE ], - [ Biome.RUINS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.WOBBUFFET, PokemonType.PSYCHIC, -1, [ + [ BiomeId.RUINS, BiomePoolTier.RARE ], + [ BiomeId.RUINS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GIRAFARIG, PokemonType.NORMAL, PokemonType.PSYCHIC, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ] + [ SpeciesId.GIRAFARIG, PokemonType.NORMAL, PokemonType.PSYCHIC, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.RARE ] ] ], - [ Species.PINECO, PokemonType.BUG, -1, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.PINECO, PokemonType.BUG, -1, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.FORRETRESS, PokemonType.BUG, PokemonType.STEEL, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.FORRETRESS, PokemonType.BUG, PokemonType.STEEL, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.DUNSPARCE, PokemonType.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.DUNSPARCE, PokemonType.NORMAL, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.GLIGAR, PokemonType.GROUND, PokemonType.FLYING, [ - [ Biome.BADLANDS, BiomePoolTier.RARE ] + [ SpeciesId.GLIGAR, PokemonType.GROUND, PokemonType.FLYING, [ + [ BiomeId.BADLANDS, BiomePoolTier.RARE ] ] ], - [ Species.STEELIX, PokemonType.STEEL, PokemonType.GROUND, [ - [ Biome.BADLANDS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.STEELIX, PokemonType.STEEL, PokemonType.GROUND, [ + [ BiomeId.BADLANDS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SNUBBULL, PokemonType.FAIRY, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SNUBBULL, PokemonType.FAIRY, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GRANBULL, PokemonType.FAIRY, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.GRANBULL, PokemonType.FAIRY, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.QWILFISH, PokemonType.WATER, PokemonType.POISON, [ - [ Biome.SEABED, BiomePoolTier.RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ SpeciesId.QWILFISH, PokemonType.WATER, PokemonType.POISON, [ + [ BiomeId.SEABED, BiomePoolTier.RARE ], + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.SCIZOR, PokemonType.BUG, PokemonType.STEEL, [ - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.SCIZOR, PokemonType.BUG, PokemonType.STEEL, [ + [ BiomeId.JUNGLE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SHUCKLE, PokemonType.BUG, PokemonType.ROCK, [ - [ Biome.CAVE, BiomePoolTier.SUPER_RARE ], - [ Biome.CAVE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.SHUCKLE, PokemonType.BUG, PokemonType.ROCK, [ + [ BiomeId.CAVE, BiomePoolTier.SUPER_RARE ], + [ BiomeId.CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HERACROSS, PokemonType.BUG, PokemonType.FIGHTING, [ - [ Biome.FOREST, BiomePoolTier.RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.HERACROSS, PokemonType.BUG, PokemonType.FIGHTING, [ + [ BiomeId.FOREST, BiomePoolTier.RARE ], + [ BiomeId.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SNEASEL, PokemonType.DARK, PokemonType.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SNEASEL, PokemonType.DARK, PokemonType.ICE, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TEDDIURSA, PokemonType.NORMAL, -1, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.TEDDIURSA, PokemonType.NORMAL, -1, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON ], + [ BiomeId.CAVE, BiomePoolTier.COMMON ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.URSARING, PokemonType.NORMAL, -1, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.URSARING, PokemonType.NORMAL, -1, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON ], + [ BiomeId.CAVE, BiomePoolTier.COMMON ], + [ BiomeId.CAVE, BiomePoolTier.BOSS ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SLUGMA, PokemonType.FIRE, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.COMMON ] + [ SpeciesId.SLUGMA, PokemonType.FIRE, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ BiomeId.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.MAGCARGO, PokemonType.FIRE, PokemonType.ROCK, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.COMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] + [ SpeciesId.MAGCARGO, PokemonType.FIRE, PokemonType.ROCK, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ BiomeId.VOLCANO, BiomePoolTier.COMMON ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.SWINUB, PokemonType.ICE, PokemonType.GROUND, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] + [ SpeciesId.SWINUB, PokemonType.ICE, PokemonType.GROUND, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.COMMON ] ] ], - [ Species.PILOSWINE, PokemonType.ICE, PokemonType.GROUND, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] + [ SpeciesId.PILOSWINE, PokemonType.ICE, PokemonType.GROUND, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.COMMON ] ] ], - [ Species.CORSOLA, PokemonType.WATER, PokemonType.ROCK, [ - [ Biome.SEABED, BiomePoolTier.RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ SpeciesId.CORSOLA, PokemonType.WATER, PokemonType.ROCK, [ + [ BiomeId.SEABED, BiomePoolTier.RARE ], + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.REMORAID, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.COMMON ] + [ SpeciesId.REMORAID, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.COMMON ] ] ], - [ Species.OCTILLERY, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ SpeciesId.OCTILLERY, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.RARE ], + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.DELIBIRD, PokemonType.ICE, PokemonType.FLYING, [ - [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ] + [ SpeciesId.DELIBIRD, PokemonType.ICE, PokemonType.FLYING, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.RARE ] ] ], - [ Species.MANTINE, PokemonType.WATER, PokemonType.FLYING, [ - [ Biome.SEABED, BiomePoolTier.RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ SpeciesId.MANTINE, PokemonType.WATER, PokemonType.FLYING, [ + [ BiomeId.SEABED, BiomePoolTier.RARE ], + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.SKARMORY, PokemonType.STEEL, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + [ SpeciesId.SKARMORY, PokemonType.STEEL, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.RARE ], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS ] ] ], - [ Species.HOUNDOUR, PokemonType.DARK, PokemonType.FIRE, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.ABYSS, BiomePoolTier.COMMON ] + [ SpeciesId.HOUNDOUR, PokemonType.DARK, PokemonType.FIRE, [ + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ BiomeId.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.HOUNDOOM, PokemonType.DARK, PokemonType.FIRE, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] + [ SpeciesId.HOUNDOOM, PokemonType.DARK, PokemonType.FIRE, [ + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ BiomeId.ABYSS, BiomePoolTier.COMMON ], + [ BiomeId.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.KINGDRA, PokemonType.WATER, PokemonType.DRAGON, [ - [ Biome.SEA, BiomePoolTier.SUPER_RARE ], - [ Biome.SEA, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.KINGDRA, PokemonType.WATER, PokemonType.DRAGON, [ + [ BiomeId.SEA, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SEA, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.PHANPY, PokemonType.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.PHANPY, PokemonType.GROUND, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.DONPHAN, PokemonType.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.DONPHAN, PokemonType.GROUND, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.PORYGON2, PokemonType.NORMAL, -1, [ - [ Biome.FACTORY, BiomePoolTier.RARE ], - [ Biome.SPACE, BiomePoolTier.SUPER_RARE ], - [ Biome.LABORATORY, BiomePoolTier.RARE ] + [ SpeciesId.PORYGON2, PokemonType.NORMAL, -1, [ + [ BiomeId.FACTORY, BiomePoolTier.RARE ], + [ BiomeId.SPACE, BiomePoolTier.SUPER_RARE ], + [ BiomeId.LABORATORY, BiomePoolTier.RARE ] ] ], - [ Species.STANTLER, PokemonType.NORMAL, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.STANTLER, PokemonType.NORMAL, -1, [ + [ BiomeId.FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SMEARGLE, PokemonType.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.SMEARGLE, PokemonType.NORMAL, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.TYROGUE, PokemonType.FIGHTING, -1, [ ] + [ SpeciesId.TYROGUE, PokemonType.FIGHTING, -1, [ ] ], - [ Species.HITMONTOP, PokemonType.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.SUPER_RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS_RARE ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.HITMONTOP, PokemonType.FIGHTING, -1, [ + [ BiomeId.DOJO, BiomePoolTier.SUPER_RARE ], + [ BiomeId.DOJO, BiomePoolTier.BOSS_RARE ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.SMOOCHUM, PokemonType.ICE, PokemonType.PSYCHIC, [ ] + [ SpeciesId.SMOOCHUM, PokemonType.ICE, PokemonType.PSYCHIC, [ ] ], - [ Species.ELEKID, PokemonType.ELECTRIC, -1, [ ] + [ SpeciesId.ELEKID, PokemonType.ELECTRIC, -1, [ ] ], - [ Species.MAGBY, PokemonType.FIRE, -1, [ ] + [ SpeciesId.MAGBY, PokemonType.FIRE, -1, [ ] ], - [ Species.MILTANK, PokemonType.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.RARE ], - [ Biome.MEADOW, BiomePoolTier.BOSS ] + [ SpeciesId.MILTANK, PokemonType.NORMAL, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.RARE ], + [ BiomeId.MEADOW, BiomePoolTier.BOSS ] ] ], - [ Species.BLISSEY, PokemonType.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.BLISSEY, PokemonType.NORMAL, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.RAIKOU, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.RAIKOU, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.ENTEI, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.ENTEI, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.SUICUNE, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.ULTRA_RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.SUICUNE, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.LAKE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.LARVITAR, PokemonType.ROCK, PokemonType.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.LARVITAR, PokemonType.ROCK, PokemonType.GROUND, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PUPITAR, PokemonType.ROCK, PokemonType.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.PUPITAR, PokemonType.ROCK, PokemonType.GROUND, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.TYRANITAR, PokemonType.ROCK, PokemonType.DARK, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.TYRANITAR, PokemonType.ROCK, PokemonType.DARK, [ + [ BiomeId.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.LUGIA, PokemonType.PSYCHIC, PokemonType.FLYING, [ - [ Biome.SEA, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.LUGIA, PokemonType.PSYCHIC, PokemonType.FLYING, [ + [ BiomeId.SEA, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.HO_OH, PokemonType.FIRE, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.HO_OH, PokemonType.FIRE, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.CELEBI, PokemonType.PSYCHIC, PokemonType.GRASS, [ ] + [ SpeciesId.CELEBI, PokemonType.PSYCHIC, PokemonType.GRASS, [ ] ], - [ Species.TREECKO, PokemonType.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE ] + [ SpeciesId.TREECKO, PokemonType.GRASS, -1, [ + [ BiomeId.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.GROVYLE, PokemonType.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE ] + [ SpeciesId.GROVYLE, PokemonType.GRASS, -1, [ + [ BiomeId.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.SCEPTILE, PokemonType.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.SCEPTILE, PokemonType.GRASS, -1, [ + [ BiomeId.FOREST, BiomePoolTier.RARE ], + [ BiomeId.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.TORCHIC, PokemonType.FIRE, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ] + [ SpeciesId.TORCHIC, PokemonType.FIRE, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.RARE ] ] ], - [ Species.COMBUSKEN, PokemonType.FIRE, PokemonType.FIGHTING, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ] + [ SpeciesId.COMBUSKEN, PokemonType.FIRE, PokemonType.FIGHTING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.RARE ] ] ], - [ Species.BLAZIKEN, PokemonType.FIRE, PokemonType.FIGHTING, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.BLAZIKEN, PokemonType.FIRE, PokemonType.FIGHTING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.RARE ], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.MUDKIP, PokemonType.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.RARE ] + [ SpeciesId.MUDKIP, PokemonType.WATER, -1, [ + [ BiomeId.SWAMP, BiomePoolTier.RARE ] ] ], - [ Species.MARSHTOMP, PokemonType.WATER, PokemonType.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.RARE ] + [ SpeciesId.MARSHTOMP, PokemonType.WATER, PokemonType.GROUND, [ + [ BiomeId.SWAMP, BiomePoolTier.RARE ] ] ], - [ Species.SWAMPERT, PokemonType.WATER, PokemonType.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.RARE ], - [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.SWAMPERT, PokemonType.WATER, PokemonType.GROUND, [ + [ BiomeId.SWAMP, BiomePoolTier.RARE ], + [ BiomeId.SWAMP, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.POOCHYENA, PokemonType.DARK, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.POOCHYENA, PokemonType.DARK, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.MIGHTYENA, PokemonType.DARK, -1, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.MIGHTYENA, PokemonType.DARK, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ZIGZAGOON, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.COMMON ], - [ Biome.METROPOLIS, BiomePoolTier.COMMON ] + [ SpeciesId.ZIGZAGOON, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON ], + [ BiomeId.PLAINS, BiomePoolTier.COMMON ], + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON ] ] ], - [ Species.LINOONE, PokemonType.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.BOSS ], - [ Biome.METROPOLIS, BiomePoolTier.COMMON ] + [ SpeciesId.LINOONE, PokemonType.NORMAL, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.COMMON ], + [ BiomeId.PLAINS, BiomePoolTier.BOSS ], + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON ] ] ], - [ Species.WURMPLE, PokemonType.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON ] + [ SpeciesId.WURMPLE, PokemonType.BUG, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON ] ] ], - [ Species.SILCOON, PokemonType.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.DAY ] + [ SpeciesId.SILCOON, PokemonType.BUG, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, TimeOfDay.DAY ] ] ], - [ Species.BEAUTIFLY, PokemonType.BUG, PokemonType.FLYING, [ - [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.DAY ], - [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.DAY ] + [ SpeciesId.BEAUTIFLY, PokemonType.BUG, PokemonType.FLYING, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON, TimeOfDay.DAY ], + [ BiomeId.FOREST, BiomePoolTier.BOSS, TimeOfDay.DAY ] ] ], - [ Species.CASCOON, PokemonType.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] + [ SpeciesId.CASCOON, PokemonType.BUG, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] ] ], - [ Species.DUSTOX, PokemonType.BUG, PokemonType.POISON, [ - [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] + [ SpeciesId.DUSTOX, PokemonType.BUG, PokemonType.POISON, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ BiomeId.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] ] ], - [ Species.LOTAD, PokemonType.WATER, PokemonType.GRASS, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.LOTAD, PokemonType.WATER, PokemonType.GRASS, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.LOMBRE, PokemonType.WATER, PokemonType.GRASS, [ - [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.LOMBRE, PokemonType.WATER, PokemonType.GRASS, [ + [ BiomeId.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.LUDICOLO, PokemonType.WATER, PokemonType.GRASS, [ - [ Biome.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.LUDICOLO, PokemonType.WATER, PokemonType.GRASS, [ + [ BiomeId.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SEEDOT, PokemonType.GRASS, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.SEEDOT, PokemonType.GRASS, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.NUZLEAF, PokemonType.GRASS, PokemonType.DARK, [ - [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.NUZLEAF, PokemonType.GRASS, PokemonType.DARK, [ + [ BiomeId.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SHIFTRY, PokemonType.GRASS, PokemonType.DARK, [ - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.SHIFTRY, PokemonType.GRASS, PokemonType.DARK, [ + [ BiomeId.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.TAILLOW, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.TAILLOW, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON ], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SWELLOW, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SWELLOW, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.WINGULL, PokemonType.WATER, PokemonType.FLYING, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.WINGULL, PokemonType.WATER, PokemonType.FLYING, [ + [ BiomeId.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.PELIPPER, PokemonType.WATER, PokemonType.FLYING, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.PELIPPER, PokemonType.WATER, PokemonType.FLYING, [ + [ BiomeId.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.RALTS, PokemonType.PSYCHIC, PokemonType.FAIRY, [ - [ Biome.TOWN, BiomePoolTier.SUPER_RARE ], - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.RALTS, PokemonType.PSYCHIC, PokemonType.FAIRY, [ + [ BiomeId.TOWN, BiomePoolTier.SUPER_RARE ], + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.KIRLIA, PokemonType.PSYCHIC, PokemonType.FAIRY, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.KIRLIA, PokemonType.PSYCHIC, PokemonType.FAIRY, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GARDEVOIR, PokemonType.PSYCHIC, PokemonType.FAIRY, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.MEADOW, BiomePoolTier.BOSS ], - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.GARDEVOIR, PokemonType.PSYCHIC, PokemonType.FAIRY, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ], + [ BiomeId.MEADOW, BiomePoolTier.BOSS ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SURSKIT, PokemonType.BUG, PokemonType.WATER, [ - [ Biome.TOWN, BiomePoolTier.RARE ], - [ Biome.LAKE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SURSKIT, PokemonType.BUG, PokemonType.WATER, [ + [ BiomeId.TOWN, BiomePoolTier.RARE ], + [ BiomeId.LAKE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.MASQUERAIN, PokemonType.BUG, PokemonType.FLYING, [ - [ Biome.LAKE, BiomePoolTier.UNCOMMON ], - [ Biome.LAKE, BiomePoolTier.BOSS ] + [ SpeciesId.MASQUERAIN, PokemonType.BUG, PokemonType.FLYING, [ + [ BiomeId.LAKE, BiomePoolTier.UNCOMMON ], + [ BiomeId.LAKE, BiomePoolTier.BOSS ] ] ], - [ Species.SHROOMISH, PokemonType.GRASS, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.SHROOMISH, PokemonType.GRASS, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.BRELOOM, PokemonType.GRASS, PokemonType.FIGHTING, [ - [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.BRELOOM, PokemonType.GRASS, PokemonType.FIGHTING, [ + [ BiomeId.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SLAKOTH, PokemonType.NORMAL, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ] + [ SpeciesId.SLAKOTH, PokemonType.NORMAL, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.VIGOROTH, PokemonType.NORMAL, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ] + [ SpeciesId.VIGOROTH, PokemonType.NORMAL, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.SLAKING, PokemonType.NORMAL, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.SLAKING, PokemonType.NORMAL, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.NINCADA, PokemonType.BUG, PokemonType.GROUND, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON ], - [ Biome.TALL_GRASS, BiomePoolTier.COMMON ] + [ SpeciesId.NINCADA, PokemonType.BUG, PokemonType.GROUND, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON ], + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON ] ] ], - [ Species.NINJASK, PokemonType.BUG, PokemonType.FLYING, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] + [ SpeciesId.NINJASK, PokemonType.BUG, PokemonType.FLYING, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON ], + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS ] ] ], - [ Species.SHEDINJA, PokemonType.BUG, PokemonType.GHOST, [ - [ Biome.TALL_GRASS, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.SHEDINJA, PokemonType.BUG, PokemonType.GHOST, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.WHISMUR, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.WHISMUR, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON ], + [ BiomeId.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.LOUDRED, PokemonType.NORMAL, -1, [ - [ Biome.CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.LOUDRED, PokemonType.NORMAL, -1, [ + [ BiomeId.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.EXPLOUD, PokemonType.NORMAL, -1, [ - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.EXPLOUD, PokemonType.NORMAL, -1, [ + [ BiomeId.CAVE, BiomePoolTier.COMMON ], + [ BiomeId.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.MAKUHITA, PokemonType.FIGHTING, -1, [ - [ Biome.CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.DOJO, BiomePoolTier.COMMON ] + [ SpeciesId.MAKUHITA, PokemonType.FIGHTING, -1, [ + [ BiomeId.CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.DOJO, BiomePoolTier.COMMON ] ] ], - [ Species.HARIYAMA, PokemonType.FIGHTING, -1, [ - [ Biome.CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.DOJO, BiomePoolTier.COMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ] + [ SpeciesId.HARIYAMA, PokemonType.FIGHTING, -1, [ + [ BiomeId.CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.DOJO, BiomePoolTier.COMMON ], + [ BiomeId.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.AZURILL, PokemonType.NORMAL, PokemonType.FAIRY, [ ] + [ SpeciesId.AZURILL, PokemonType.NORMAL, PokemonType.FAIRY, [ ] ], - [ Species.NOSEPASS, PokemonType.ROCK, -1, [ - [ Biome.CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.NOSEPASS, PokemonType.ROCK, -1, [ + [ BiomeId.CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SKITTY, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SKITTY, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.DELCATTY, PokemonType.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.DELCATTY, PokemonType.NORMAL, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SABLEYE, PokemonType.DARK, PokemonType.GHOST, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] + [ SpeciesId.SABLEYE, PokemonType.DARK, PokemonType.GHOST, [ + [ BiomeId.ABYSS, BiomePoolTier.COMMON ], + [ BiomeId.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.MAWILE, PokemonType.STEEL, PokemonType.FAIRY, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.MAWILE, PokemonType.STEEL, PokemonType.FAIRY, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.ARON, PokemonType.STEEL, PokemonType.ROCK, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.ARON, PokemonType.STEEL, PokemonType.ROCK, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.LAIRON, PokemonType.STEEL, PokemonType.ROCK, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.LAIRON, PokemonType.STEEL, PokemonType.ROCK, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.AGGRON, PokemonType.STEEL, PokemonType.ROCK, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + [ SpeciesId.AGGRON, PokemonType.STEEL, PokemonType.ROCK, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS ] ] ], - [ Species.MEDITITE, PokemonType.FIGHTING, PokemonType.PSYCHIC, [ - [ Biome.DOJO, BiomePoolTier.COMMON ] + [ SpeciesId.MEDITITE, PokemonType.FIGHTING, PokemonType.PSYCHIC, [ + [ BiomeId.DOJO, BiomePoolTier.COMMON ] ] ], - [ Species.MEDICHAM, PokemonType.FIGHTING, PokemonType.PSYCHIC, [ - [ Biome.DOJO, BiomePoolTier.COMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ] + [ SpeciesId.MEDICHAM, PokemonType.FIGHTING, PokemonType.PSYCHIC, [ + [ BiomeId.DOJO, BiomePoolTier.COMMON ], + [ BiomeId.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.ELECTRIKE, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + [ SpeciesId.ELECTRIKE, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.MANECTRIC, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + [ SpeciesId.MANECTRIC, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ], + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.PLUSLE, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] + [ SpeciesId.PLUSLE, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.UNCOMMON ] ] ], - [ Species.MINUN, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] + [ SpeciesId.MINUN, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.UNCOMMON ] ] ], - [ Species.VOLBEAT, PokemonType.BUG, -1, [ - [ Biome.MEADOW, BiomePoolTier.RARE, TimeOfDay.NIGHT ] + [ SpeciesId.VOLBEAT, PokemonType.BUG, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.RARE, TimeOfDay.NIGHT ] ] ], - [ Species.ILLUMISE, PokemonType.BUG, -1, [ - [ Biome.MEADOW, BiomePoolTier.RARE, TimeOfDay.NIGHT ] + [ SpeciesId.ILLUMISE, PokemonType.BUG, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.RARE, TimeOfDay.NIGHT ] ] ], - [ Species.ROSELIA, PokemonType.GRASS, PokemonType.POISON, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MEADOW, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.ROSELIA, PokemonType.GRASS, PokemonType.POISON, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MEADOW, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GULPIN, PokemonType.POISON, -1, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ] + [ SpeciesId.GULPIN, PokemonType.POISON, -1, [ + [ BiomeId.SWAMP, BiomePoolTier.COMMON ] ] ], - [ Species.SWALOT, PokemonType.POISON, -1, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ], - [ Biome.SWAMP, BiomePoolTier.BOSS ] + [ SpeciesId.SWALOT, PokemonType.POISON, -1, [ + [ BiomeId.SWAMP, BiomePoolTier.COMMON ], + [ BiomeId.SWAMP, BiomePoolTier.BOSS ] ] ], - [ Species.CARVANHA, PokemonType.WATER, PokemonType.DARK, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.CARVANHA, PokemonType.WATER, PokemonType.DARK, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SHARPEDO, PokemonType.WATER, PokemonType.DARK, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.SHARPEDO, PokemonType.WATER, PokemonType.DARK, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.WAILMER, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ], - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + [ SpeciesId.WAILMER, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON ], + [ BiomeId.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.WAILORD, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ], - [ Biome.SEABED, BiomePoolTier.UNCOMMON ], - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ SpeciesId.WAILORD, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON ], + [ BiomeId.SEABED, BiomePoolTier.UNCOMMON ], + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.NUMEL, PokemonType.FIRE, PokemonType.GROUND, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.COMMON ] + [ SpeciesId.NUMEL, PokemonType.FIRE, PokemonType.GROUND, [ + [ BiomeId.BADLANDS, BiomePoolTier.UNCOMMON ], + [ BiomeId.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.CAMERUPT, PokemonType.FIRE, PokemonType.GROUND, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.COMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] + [ SpeciesId.CAMERUPT, PokemonType.FIRE, PokemonType.GROUND, [ + [ BiomeId.BADLANDS, BiomePoolTier.UNCOMMON ], + [ BiomeId.VOLCANO, BiomePoolTier.COMMON ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.TORKOAL, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] + [ SpeciesId.TORKOAL, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.UNCOMMON ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.SPOINK, PokemonType.PSYCHIC, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ], - [ Biome.RUINS, BiomePoolTier.COMMON ] + [ SpeciesId.SPOINK, PokemonType.PSYCHIC, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.RARE ], + [ BiomeId.RUINS, BiomePoolTier.COMMON ] ] ], - [ Species.GRUMPIG, PokemonType.PSYCHIC, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ], - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.RUINS, BiomePoolTier.BOSS ] + [ SpeciesId.GRUMPIG, PokemonType.PSYCHIC, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.RARE ], + [ BiomeId.RUINS, BiomePoolTier.COMMON ], + [ BiomeId.RUINS, BiomePoolTier.BOSS ] ] ], - [ Species.SPINDA, PokemonType.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.RARE ] + [ SpeciesId.SPINDA, PokemonType.NORMAL, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.RARE ] ] ], - [ Species.TRAPINCH, PokemonType.GROUND, -1, [ - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.TRAPINCH, PokemonType.GROUND, -1, [ + [ BiomeId.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VIBRAVA, PokemonType.GROUND, PokemonType.DRAGON, [ - [ Biome.DESERT, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.WASTELAND, BiomePoolTier.COMMON ] + [ SpeciesId.VIBRAVA, PokemonType.GROUND, PokemonType.DRAGON, [ + [ BiomeId.DESERT, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.WASTELAND, BiomePoolTier.COMMON ] ] ], - [ Species.FLYGON, PokemonType.GROUND, PokemonType.DRAGON, [ - [ Biome.DESERT, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.WASTELAND, BiomePoolTier.COMMON ], - [ Biome.WASTELAND, BiomePoolTier.BOSS ] + [ SpeciesId.FLYGON, PokemonType.GROUND, PokemonType.DRAGON, [ + [ BiomeId.DESERT, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.WASTELAND, BiomePoolTier.COMMON ], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS ] ] ], - [ Species.CACNEA, PokemonType.GRASS, -1, [ - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.CACNEA, PokemonType.GRASS, -1, [ + [ BiomeId.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.CACTURNE, PokemonType.GRASS, PokemonType.DARK, [ - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.CACTURNE, PokemonType.GRASS, PokemonType.DARK, [ + [ BiomeId.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SWABLU, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SWABLU, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.WASTELAND, BiomePoolTier.UNCOMMON ] ] ], - [ Species.ALTARIA, PokemonType.DRAGON, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ] + [ SpeciesId.ALTARIA, PokemonType.DRAGON, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.WASTELAND, BiomePoolTier.UNCOMMON ] ] ], - [ Species.ZANGOOSE, PokemonType.NORMAL, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] + [ SpeciesId.ZANGOOSE, PokemonType.NORMAL, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.RARE ], + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS ] ] ], - [ Species.SEVIPER, PokemonType.POISON, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS ] + [ SpeciesId.SEVIPER, PokemonType.POISON, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.LUNATONE, PokemonType.ROCK, PokemonType.PSYCHIC, [ - [ Biome.SPACE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.SPACE, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] + [ SpeciesId.LUNATONE, PokemonType.ROCK, PokemonType.PSYCHIC, [ + [ BiomeId.SPACE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ BiomeId.SPACE, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] ] ], - [ Species.SOLROCK, PokemonType.ROCK, PokemonType.PSYCHIC, [ - [ Biome.SPACE, BiomePoolTier.COMMON, TimeOfDay.DAY ], - [ Biome.SPACE, BiomePoolTier.BOSS, TimeOfDay.DAY ] + [ SpeciesId.SOLROCK, PokemonType.ROCK, PokemonType.PSYCHIC, [ + [ BiomeId.SPACE, BiomePoolTier.COMMON, TimeOfDay.DAY ], + [ BiomeId.SPACE, BiomePoolTier.BOSS, TimeOfDay.DAY ] ] ], - [ Species.BARBOACH, PokemonType.WATER, PokemonType.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ] + [ SpeciesId.BARBOACH, PokemonType.WATER, PokemonType.GROUND, [ + [ BiomeId.SWAMP, BiomePoolTier.UNCOMMON ] ] ], - [ Species.WHISCASH, PokemonType.WATER, PokemonType.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.BOSS ] + [ SpeciesId.WHISCASH, PokemonType.WATER, PokemonType.GROUND, [ + [ BiomeId.SWAMP, BiomePoolTier.UNCOMMON ], + [ BiomeId.SWAMP, BiomePoolTier.BOSS ] ] ], - [ Species.CORPHISH, PokemonType.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.COMMON ] + [ SpeciesId.CORPHISH, PokemonType.WATER, -1, [ + [ BiomeId.BEACH, BiomePoolTier.COMMON ] ] ], - [ Species.CRAWDAUNT, PokemonType.WATER, PokemonType.DARK, [ - [ Biome.BEACH, BiomePoolTier.COMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ] + [ SpeciesId.CRAWDAUNT, PokemonType.WATER, PokemonType.DARK, [ + [ BiomeId.BEACH, BiomePoolTier.COMMON ], + [ BiomeId.BEACH, BiomePoolTier.BOSS ] ] ], - [ Species.BALTOY, PokemonType.GROUND, PokemonType.PSYCHIC, [ - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.SPACE, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.BALTOY, PokemonType.GROUND, PokemonType.PSYCHIC, [ + [ BiomeId.RUINS, BiomePoolTier.COMMON ], + [ BiomeId.SPACE, BiomePoolTier.UNCOMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CLAYDOL, PokemonType.GROUND, PokemonType.PSYCHIC, [ - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.RUINS, BiomePoolTier.BOSS ], - [ Biome.SPACE, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.CLAYDOL, PokemonType.GROUND, PokemonType.PSYCHIC, [ + [ BiomeId.RUINS, BiomePoolTier.COMMON ], + [ BiomeId.RUINS, BiomePoolTier.BOSS ], + [ BiomeId.SPACE, BiomePoolTier.UNCOMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.LILEEP, PokemonType.ROCK, PokemonType.GRASS, [ - [ Biome.DESERT, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.LILEEP, PokemonType.ROCK, PokemonType.GRASS, [ + [ BiomeId.DESERT, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.CRADILY, PokemonType.ROCK, PokemonType.GRASS, [ - [ Biome.DESERT, BiomePoolTier.SUPER_RARE ], - [ Biome.DESERT, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.CRADILY, PokemonType.ROCK, PokemonType.GRASS, [ + [ BiomeId.DESERT, BiomePoolTier.SUPER_RARE ], + [ BiomeId.DESERT, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ANORITH, PokemonType.ROCK, PokemonType.BUG, [ - [ Biome.DESERT, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.ANORITH, PokemonType.ROCK, PokemonType.BUG, [ + [ BiomeId.DESERT, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.ARMALDO, PokemonType.ROCK, PokemonType.BUG, [ - [ Biome.DESERT, BiomePoolTier.SUPER_RARE ], - [ Biome.DESERT, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.ARMALDO, PokemonType.ROCK, PokemonType.BUG, [ + [ BiomeId.DESERT, BiomePoolTier.SUPER_RARE ], + [ BiomeId.DESERT, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.FEEBAS, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.ULTRA_RARE ] + [ SpeciesId.FEEBAS, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.ULTRA_RARE ] ] ], - [ Species.MILOTIC, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.MILOTIC, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.CASTFORM, PokemonType.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.ULTRA_RARE ], - [ Biome.METROPOLIS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.CASTFORM, PokemonType.NORMAL, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.METROPOLIS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.KECLEON, PokemonType.NORMAL, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] + [ SpeciesId.KECLEON, PokemonType.NORMAL, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.RARE ], + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS ] ] ], - [ Species.SHUPPET, PokemonType.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] + [ SpeciesId.SHUPPET, PokemonType.GHOST, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ] ] ], - [ Species.BANETTE, PokemonType.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + [ SpeciesId.BANETTE, PokemonType.GHOST, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ], + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.DUSKULL, PokemonType.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ] + [ SpeciesId.DUSKULL, PokemonType.GHOST, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.DUSCLOPS, PokemonType.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ] + [ SpeciesId.DUSCLOPS, PokemonType.GHOST, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.TROPIUS, PokemonType.GRASS, PokemonType.FLYING, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ], - [ Biome.FOREST, BiomePoolTier.RARE ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.TROPIUS, PokemonType.GRASS, PokemonType.FLYING, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.RARE ], + [ BiomeId.FOREST, BiomePoolTier.RARE ], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CHIMECHO, PokemonType.PSYCHIC, -1, [ - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.BOSS ] + [ SpeciesId.CHIMECHO, PokemonType.PSYCHIC, -1, [ + [ BiomeId.TEMPLE, BiomePoolTier.UNCOMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.BOSS ] ] ], - [ Species.ABSOL, PokemonType.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] + [ SpeciesId.ABSOL, PokemonType.DARK, -1, [ + [ BiomeId.ABYSS, BiomePoolTier.RARE ], + [ BiomeId.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.WYNAUT, PokemonType.PSYCHIC, -1, [ ] + [ SpeciesId.WYNAUT, PokemonType.PSYCHIC, -1, [ ] ], - [ Species.SNORUNT, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SNORUNT, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GLALIE, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.GLALIE, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.SPHEAL, PokemonType.ICE, PokemonType.WATER, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SPHEAL, PokemonType.ICE, PokemonType.WATER, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SEALEO, PokemonType.ICE, PokemonType.WATER, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SEALEO, PokemonType.ICE, PokemonType.WATER, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.WALREIN, PokemonType.ICE, PokemonType.WATER, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.WALREIN, PokemonType.ICE, PokemonType.WATER, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.CLAMPERL, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.COMMON ] + [ SpeciesId.CLAMPERL, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.COMMON ] ] ], - [ Species.HUNTAIL, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ SpeciesId.HUNTAIL, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.GOREBYSS, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ SpeciesId.GOREBYSS, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.RELICANTH, PokemonType.WATER, PokemonType.ROCK, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.RELICANTH, PokemonType.WATER, PokemonType.ROCK, [ + [ BiomeId.SEABED, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.LUVDISC, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.UNCOMMON ], - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ SpeciesId.LUVDISC, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.UNCOMMON ], + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.BAGON, PokemonType.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.BAGON, PokemonType.DRAGON, -1, [ + [ BiomeId.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SHELGON, PokemonType.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SHELGON, PokemonType.DRAGON, -1, [ + [ BiomeId.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SALAMENCE, PokemonType.DRAGON, PokemonType.FLYING, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SALAMENCE, PokemonType.DRAGON, PokemonType.FLYING, [ + [ BiomeId.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BELDUM, PokemonType.STEEL, PokemonType.PSYCHIC, [ - [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ], - [ Biome.SPACE, BiomePoolTier.RARE ] + [ SpeciesId.BELDUM, PokemonType.STEEL, PokemonType.PSYCHIC, [ + [ BiomeId.FACTORY, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SPACE, BiomePoolTier.RARE ] ] ], - [ Species.METANG, PokemonType.STEEL, PokemonType.PSYCHIC, [ - [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ], - [ Biome.SPACE, BiomePoolTier.RARE ] + [ SpeciesId.METANG, PokemonType.STEEL, PokemonType.PSYCHIC, [ + [ BiomeId.FACTORY, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SPACE, BiomePoolTier.RARE ] ] ], - [ Species.METAGROSS, PokemonType.STEEL, PokemonType.PSYCHIC, [ - [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ], - [ Biome.SPACE, BiomePoolTier.RARE ], - [ Biome.SPACE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.METAGROSS, PokemonType.STEEL, PokemonType.PSYCHIC, [ + [ BiomeId.FACTORY, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SPACE, BiomePoolTier.RARE ], + [ BiomeId.SPACE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.REGIROCK, PokemonType.ROCK, -1, [ - [ Biome.DESERT, BiomePoolTier.ULTRA_RARE ], - [ Biome.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.REGIROCK, PokemonType.ROCK, -1, [ + [ BiomeId.DESERT, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.REGICE, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.ULTRA_RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.REGICE, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.REGISTEEL, PokemonType.STEEL, -1, [ - [ Biome.RUINS, BiomePoolTier.ULTRA_RARE ], - [ Biome.RUINS, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.REGISTEEL, PokemonType.STEEL, -1, [ + [ BiomeId.RUINS, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.RUINS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.LATIAS, PokemonType.DRAGON, PokemonType.PSYCHIC, [ - [ Biome.PLAINS, BiomePoolTier.ULTRA_RARE ], - [ Biome.PLAINS, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.LATIAS, PokemonType.DRAGON, PokemonType.PSYCHIC, [ + [ BiomeId.PLAINS, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.PLAINS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.LATIOS, PokemonType.DRAGON, PokemonType.PSYCHIC, [ - [ Biome.PLAINS, BiomePoolTier.ULTRA_RARE ], - [ Biome.PLAINS, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.LATIOS, PokemonType.DRAGON, PokemonType.PSYCHIC, [ + [ BiomeId.PLAINS, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.PLAINS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.KYOGRE, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.KYOGRE, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.GROUDON, PokemonType.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.GROUDON, PokemonType.GROUND, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.RAYQUAZA, PokemonType.DRAGON, PokemonType.FLYING, [ - [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.RAYQUAZA, PokemonType.DRAGON, PokemonType.FLYING, [ + [ BiomeId.SPACE, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.JIRACHI, PokemonType.STEEL, PokemonType.PSYCHIC, [ ] + [ SpeciesId.JIRACHI, PokemonType.STEEL, PokemonType.PSYCHIC, [ ] ], - [ Species.DEOXYS, PokemonType.PSYCHIC, -1, [ ] + [ SpeciesId.DEOXYS, PokemonType.PSYCHIC, -1, [ ] ], - [ Species.TURTWIG, PokemonType.GRASS, -1, [ - [ Biome.GRASS, BiomePoolTier.RARE ] + [ SpeciesId.TURTWIG, PokemonType.GRASS, -1, [ + [ BiomeId.GRASS, BiomePoolTier.RARE ] ] ], - [ Species.GROTLE, PokemonType.GRASS, -1, [ - [ Biome.GRASS, BiomePoolTier.RARE ] + [ SpeciesId.GROTLE, PokemonType.GRASS, -1, [ + [ BiomeId.GRASS, BiomePoolTier.RARE ] ] ], - [ Species.TORTERRA, PokemonType.GRASS, PokemonType.GROUND, [ - [ Biome.GRASS, BiomePoolTier.RARE ], - [ Biome.GRASS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.TORTERRA, PokemonType.GRASS, PokemonType.GROUND, [ + [ BiomeId.GRASS, BiomePoolTier.RARE ], + [ BiomeId.GRASS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.CHIMCHAR, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.CHIMCHAR, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.MONFERNO, PokemonType.FIRE, PokemonType.FIGHTING, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.MONFERNO, PokemonType.FIRE, PokemonType.FIGHTING, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.INFERNAPE, PokemonType.FIRE, PokemonType.FIGHTING, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.INFERNAPE, PokemonType.FIRE, PokemonType.FIGHTING, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.PIPLUP, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.RARE ] + [ SpeciesId.PIPLUP, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.RARE ] ] ], - [ Species.PRINPLUP, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.RARE ] + [ SpeciesId.PRINPLUP, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.RARE ] ] ], - [ Species.EMPOLEON, PokemonType.WATER, PokemonType.STEEL, [ - [ Biome.SEA, BiomePoolTier.RARE ], - [ Biome.SEA, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.EMPOLEON, PokemonType.WATER, PokemonType.STEEL, [ + [ BiomeId.SEA, BiomePoolTier.RARE ], + [ BiomeId.SEA, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.STARLY, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.STARLY, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.STARAVIA, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.STARAVIA, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.STARAPTOR, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.STARAPTOR, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BIDOOF, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.COMMON ] + [ SpeciesId.BIDOOF, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON ], + [ BiomeId.PLAINS, BiomePoolTier.COMMON ] ] ], - [ Species.BIBAREL, PokemonType.NORMAL, PokemonType.WATER, [ - [ Biome.PLAINS, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.BOSS ] + [ SpeciesId.BIBAREL, PokemonType.NORMAL, PokemonType.WATER, [ + [ BiomeId.PLAINS, BiomePoolTier.COMMON ], + [ BiomeId.PLAINS, BiomePoolTier.BOSS ] ] ], - [ Species.KRICKETOT, PokemonType.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.KRICKETOT, PokemonType.BUG, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.KRICKETUNE, PokemonType.BUG, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.KRICKETUNE, PokemonType.BUG, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SHINX, PokemonType.ELECTRIC, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + [ SpeciesId.SHINX, PokemonType.ELECTRIC, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.LUXIO, PokemonType.ELECTRIC, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + [ SpeciesId.LUXIO, PokemonType.ELECTRIC, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.LUXRAY, PokemonType.ELECTRIC, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + [ SpeciesId.LUXRAY, PokemonType.ELECTRIC, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ], + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.BUDEW, PokemonType.GRASS, PokemonType.POISON, [ ] + [ SpeciesId.BUDEW, PokemonType.GRASS, PokemonType.POISON, [ ] ], - [ Species.ROSERADE, PokemonType.GRASS, PokemonType.POISON, [ - [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.ROSERADE, PokemonType.GRASS, PokemonType.POISON, [ + [ BiomeId.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CRANIDOS, PokemonType.ROCK, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.CRANIDOS, PokemonType.ROCK, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.RAMPARDOS, PokemonType.ROCK, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.RAMPARDOS, PokemonType.ROCK, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SHIELDON, PokemonType.ROCK, PokemonType.STEEL, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.SHIELDON, PokemonType.ROCK, PokemonType.STEEL, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.BASTIODON, PokemonType.ROCK, PokemonType.STEEL, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.BASTIODON, PokemonType.ROCK, PokemonType.STEEL, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.BURMY, PokemonType.BUG, -1, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON ], - [ Biome.BEACH, BiomePoolTier.UNCOMMON ], - [ Biome.SLUM, BiomePoolTier.UNCOMMON ] + [ SpeciesId.BURMY, PokemonType.BUG, -1, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON ], + [ BiomeId.BEACH, BiomePoolTier.UNCOMMON ], + [ BiomeId.SLUM, BiomePoolTier.UNCOMMON ] ] ], - [ Species.WORMADAM, PokemonType.BUG, PokemonType.GRASS, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON ], - [ Biome.FOREST, BiomePoolTier.BOSS ], - [ Biome.BEACH, BiomePoolTier.UNCOMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ], - [ Biome.SLUM, BiomePoolTier.UNCOMMON ], - [ Biome.SLUM, BiomePoolTier.BOSS ] + [ SpeciesId.WORMADAM, PokemonType.BUG, PokemonType.GRASS, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON ], + [ BiomeId.FOREST, BiomePoolTier.BOSS ], + [ BiomeId.BEACH, BiomePoolTier.UNCOMMON ], + [ BiomeId.BEACH, BiomePoolTier.BOSS ], + [ BiomeId.SLUM, BiomePoolTier.UNCOMMON ], + [ BiomeId.SLUM, BiomePoolTier.BOSS ] ] ], - [ Species.MOTHIM, PokemonType.BUG, PokemonType.FLYING, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.MOTHIM, PokemonType.BUG, PokemonType.FLYING, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.COMBEE, PokemonType.BUG, PokemonType.FLYING, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.COMBEE, PokemonType.BUG, PokemonType.FLYING, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VESPIQUEN, PokemonType.BUG, PokemonType.FLYING, [ - [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.VESPIQUEN, PokemonType.BUG, PokemonType.FLYING, [ + [ BiomeId.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.PACHIRISU, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] + [ SpeciesId.PACHIRISU, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.UNCOMMON ] ] ], - [ Species.BUIZEL, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.COMMON ] + [ SpeciesId.BUIZEL, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.COMMON ] ] ], - [ Species.FLOATZEL, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.COMMON ], - [ Biome.SEA, BiomePoolTier.BOSS ] + [ SpeciesId.FLOATZEL, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.COMMON ], + [ BiomeId.SEA, BiomePoolTier.BOSS ] ] ], - [ Species.CHERUBI, PokemonType.GRASS, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.CHERUBI, PokemonType.GRASS, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CHERRIM, PokemonType.GRASS, -1, [ - [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.CHERRIM, PokemonType.GRASS, -1, [ + [ BiomeId.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SHELLOS, PokemonType.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ], - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SHELLOS, PokemonType.WATER, -1, [ + [ BiomeId.SWAMP, BiomePoolTier.COMMON ], + [ BiomeId.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GASTRODON, PokemonType.WATER, PokemonType.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ], - [ Biome.SWAMP, BiomePoolTier.BOSS ], - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + [ SpeciesId.GASTRODON, PokemonType.WATER, PokemonType.GROUND, [ + [ BiomeId.SWAMP, BiomePoolTier.COMMON ], + [ BiomeId.SWAMP, BiomePoolTier.BOSS ], + [ BiomeId.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.AMBIPOM, PokemonType.NORMAL, -1, [ - [ Biome.JUNGLE, BiomePoolTier.BOSS ] + [ SpeciesId.AMBIPOM, PokemonType.NORMAL, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.DRIFLOON, PokemonType.GHOST, PokemonType.FLYING, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] + [ SpeciesId.DRIFLOON, PokemonType.GHOST, PokemonType.FLYING, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ] ] ], - [ Species.DRIFBLIM, PokemonType.GHOST, PokemonType.FLYING, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + [ SpeciesId.DRIFBLIM, PokemonType.GHOST, PokemonType.FLYING, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ], + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.BUNEARY, PokemonType.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE ] + [ SpeciesId.BUNEARY, PokemonType.NORMAL, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.RARE ] ] ], - [ Species.LOPUNNY, PokemonType.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE ], - [ Biome.PLAINS, BiomePoolTier.BOSS ] + [ SpeciesId.LOPUNNY, PokemonType.NORMAL, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.RARE ], + [ BiomeId.PLAINS, BiomePoolTier.BOSS ] ] ], - [ Species.MISMAGIUS, PokemonType.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + [ SpeciesId.MISMAGIUS, PokemonType.GHOST, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.HONCHKROW, PokemonType.DARK, PokemonType.FLYING, [ - [ Biome.ABYSS, BiomePoolTier.BOSS ] + [ SpeciesId.HONCHKROW, PokemonType.DARK, PokemonType.FLYING, [ + [ BiomeId.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.GLAMEOW, PokemonType.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ] + [ SpeciesId.GLAMEOW, PokemonType.NORMAL, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ] ] ], - [ Species.PURUGLY, PokemonType.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.MEADOW, BiomePoolTier.BOSS ] + [ SpeciesId.PURUGLY, PokemonType.NORMAL, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ], + [ BiomeId.MEADOW, BiomePoolTier.BOSS ] ] ], - [ Species.CHINGLING, PokemonType.PSYCHIC, -1, [ - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.CHINGLING, PokemonType.PSYCHIC, -1, [ + [ BiomeId.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.STUNKY, PokemonType.POISON, PokemonType.DARK, [ - [ Biome.SLUM, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.STUNKY, PokemonType.POISON, PokemonType.DARK, [ + [ BiomeId.SLUM, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SKUNTANK, PokemonType.POISON, PokemonType.DARK, [ - [ Biome.SLUM, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SLUM, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.SKUNTANK, PokemonType.POISON, PokemonType.DARK, [ + [ BiomeId.SLUM, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SLUM, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.BRONZOR, PokemonType.STEEL, PokemonType.PSYCHIC, [ - [ Biome.FACTORY, BiomePoolTier.UNCOMMON ], - [ Biome.SPACE, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ] + [ SpeciesId.BRONZOR, PokemonType.STEEL, PokemonType.PSYCHIC, [ + [ BiomeId.FACTORY, BiomePoolTier.UNCOMMON ], + [ BiomeId.SPACE, BiomePoolTier.COMMON ], + [ BiomeId.LABORATORY, BiomePoolTier.COMMON ] ] ], - [ Species.BRONZONG, PokemonType.STEEL, PokemonType.PSYCHIC, [ - [ Biome.FACTORY, BiomePoolTier.UNCOMMON ], - [ Biome.SPACE, BiomePoolTier.COMMON ], - [ Biome.SPACE, BiomePoolTier.BOSS ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.BOSS ] + [ SpeciesId.BRONZONG, PokemonType.STEEL, PokemonType.PSYCHIC, [ + [ BiomeId.FACTORY, BiomePoolTier.UNCOMMON ], + [ BiomeId.SPACE, BiomePoolTier.COMMON ], + [ BiomeId.SPACE, BiomePoolTier.BOSS ], + [ BiomeId.LABORATORY, BiomePoolTier.COMMON ], + [ BiomeId.LABORATORY, BiomePoolTier.BOSS ] ] ], - [ Species.BONSLY, PokemonType.ROCK, -1, [ ] + [ SpeciesId.BONSLY, PokemonType.ROCK, -1, [ ] ], - [ Species.MIME_JR, PokemonType.PSYCHIC, PokemonType.FAIRY, [ ] + [ SpeciesId.MIME_JR, PokemonType.PSYCHIC, PokemonType.FAIRY, [ ] ], - [ Species.HAPPINY, PokemonType.NORMAL, -1, [ ] + [ SpeciesId.HAPPINY, PokemonType.NORMAL, -1, [ ] ], - [ Species.CHATOT, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.CHATOT, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.JUNGLE, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.SPIRITOMB, PokemonType.GHOST, PokemonType.DARK, [ - [ Biome.GRAVEYARD, BiomePoolTier.SUPER_RARE ], - [ Biome.ABYSS, BiomePoolTier.RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] + [ SpeciesId.SPIRITOMB, PokemonType.GHOST, PokemonType.DARK, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.SUPER_RARE ], + [ BiomeId.ABYSS, BiomePoolTier.RARE ], + [ BiomeId.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.GIBLE, PokemonType.DRAGON, PokemonType.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.COMMON ] + [ SpeciesId.GIBLE, PokemonType.DRAGON, PokemonType.GROUND, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.COMMON ] ] ], - [ Species.GABITE, PokemonType.DRAGON, PokemonType.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.COMMON ] + [ SpeciesId.GABITE, PokemonType.DRAGON, PokemonType.GROUND, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.COMMON ] ] ], - [ Species.GARCHOMP, PokemonType.DRAGON, PokemonType.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.COMMON ], - [ Biome.WASTELAND, BiomePoolTier.BOSS ] + [ SpeciesId.GARCHOMP, PokemonType.DRAGON, PokemonType.GROUND, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.COMMON ], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS ] ] ], - [ Species.MUNCHLAX, PokemonType.NORMAL, -1, [ ] + [ SpeciesId.MUNCHLAX, PokemonType.NORMAL, -1, [ ] ], - [ Species.RIOLU, PokemonType.FIGHTING, -1, [ ] + [ SpeciesId.RIOLU, PokemonType.FIGHTING, -1, [ ] ], - [ Species.LUCARIO, PokemonType.FIGHTING, PokemonType.STEEL, [ - [ Biome.DOJO, BiomePoolTier.RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS ] + [ SpeciesId.LUCARIO, PokemonType.FIGHTING, PokemonType.STEEL, [ + [ BiomeId.DOJO, BiomePoolTier.RARE ], + [ BiomeId.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.HIPPOPOTAS, PokemonType.GROUND, -1, [ - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.HIPPOPOTAS, PokemonType.GROUND, -1, [ + [ BiomeId.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HIPPOWDON, PokemonType.GROUND, -1, [ - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.HIPPOWDON, PokemonType.GROUND, -1, [ + [ BiomeId.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SKORUPI, PokemonType.POISON, PokemonType.BUG, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.DESERT, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SKORUPI, PokemonType.POISON, PokemonType.BUG, [ + [ BiomeId.SWAMP, BiomePoolTier.UNCOMMON ], + [ BiomeId.DESERT, BiomePoolTier.COMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.DRAPION, PokemonType.POISON, PokemonType.DARK, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.DESERT, BiomePoolTier.COMMON ], - [ Biome.DESERT, BiomePoolTier.BOSS ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.DRAPION, PokemonType.POISON, PokemonType.DARK, [ + [ BiomeId.SWAMP, BiomePoolTier.UNCOMMON ], + [ BiomeId.DESERT, BiomePoolTier.COMMON ], + [ BiomeId.DESERT, BiomePoolTier.BOSS ], + [ BiomeId.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CROAGUNK, PokemonType.POISON, PokemonType.FIGHTING, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.DOJO, BiomePoolTier.UNCOMMON ] + [ SpeciesId.CROAGUNK, PokemonType.POISON, PokemonType.FIGHTING, [ + [ BiomeId.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.DOJO, BiomePoolTier.UNCOMMON ] ] ], - [ Species.TOXICROAK, PokemonType.POISON, PokemonType.FIGHTING, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.DOJO, BiomePoolTier.UNCOMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ] + [ SpeciesId.TOXICROAK, PokemonType.POISON, PokemonType.FIGHTING, [ + [ BiomeId.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.DOJO, BiomePoolTier.UNCOMMON ], + [ BiomeId.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.CARNIVINE, PokemonType.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS ] + [ SpeciesId.CARNIVINE, PokemonType.GRASS, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.FINNEON, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] + [ SpeciesId.FINNEON, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] ] ], - [ Species.LUMINEON, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.SEA, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] + [ SpeciesId.LUMINEON, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ BiomeId.SEA, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] ] ], - [ Species.MANTYKE, PokemonType.WATER, PokemonType.FLYING, [ - [ Biome.SEABED, BiomePoolTier.RARE ] + [ SpeciesId.MANTYKE, PokemonType.WATER, PokemonType.FLYING, [ + [ BiomeId.SEABED, BiomePoolTier.RARE ] ] ], - [ Species.SNOVER, PokemonType.GRASS, PokemonType.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] + [ SpeciesId.SNOVER, PokemonType.GRASS, PokemonType.ICE, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.COMMON ] ] ], - [ Species.ABOMASNOW, PokemonType.GRASS, PokemonType.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS ] + [ SpeciesId.ABOMASNOW, PokemonType.GRASS, PokemonType.ICE, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.COMMON ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS ] ] ], - [ Species.WEAVILE, PokemonType.DARK, PokemonType.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.WEAVILE, PokemonType.DARK, PokemonType.ICE, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.MAGNEZONE, PokemonType.ELECTRIC, PokemonType.STEEL, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ], - [ Biome.LABORATORY, BiomePoolTier.BOSS ] + [ SpeciesId.MAGNEZONE, PokemonType.ELECTRIC, PokemonType.STEEL, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS ], + [ BiomeId.LABORATORY, BiomePoolTier.BOSS ] ] ], - [ Species.LICKILICKY, PokemonType.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.LICKILICKY, PokemonType.NORMAL, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.RHYPERIOR, PokemonType.GROUND, PokemonType.ROCK, [ - [ Biome.BADLANDS, BiomePoolTier.BOSS ] + [ SpeciesId.RHYPERIOR, PokemonType.GROUND, PokemonType.ROCK, [ + [ BiomeId.BADLANDS, BiomePoolTier.BOSS ] ] ], - [ Species.TANGROWTH, PokemonType.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.TANGROWTH, PokemonType.GRASS, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ELECTIVIRE, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + [ SpeciesId.ELECTIVIRE, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.MAGMORTAR, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS ] + [ SpeciesId.MAGMORTAR, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.TOGEKISS, PokemonType.FAIRY, PokemonType.FLYING, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.TOGEKISS, PokemonType.FAIRY, PokemonType.FLYING, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.YANMEGA, PokemonType.BUG, PokemonType.FLYING, [ - [ Biome.JUNGLE, BiomePoolTier.BOSS ] + [ SpeciesId.YANMEGA, PokemonType.BUG, PokemonType.FLYING, [ + [ BiomeId.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.LEAFEON, PokemonType.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.LEAFEON, PokemonType.GRASS, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GLACEON, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.GLACEON, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GLISCOR, PokemonType.GROUND, PokemonType.FLYING, [ - [ Biome.BADLANDS, BiomePoolTier.BOSS ] + [ SpeciesId.GLISCOR, PokemonType.GROUND, PokemonType.FLYING, [ + [ BiomeId.BADLANDS, BiomePoolTier.BOSS ] ] ], - [ Species.MAMOSWINE, PokemonType.ICE, PokemonType.GROUND, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.MAMOSWINE, PokemonType.ICE, PokemonType.GROUND, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.PORYGON_Z, PokemonType.NORMAL, -1, [ - [ Biome.SPACE, BiomePoolTier.BOSS_RARE ], - [ Biome.LABORATORY, BiomePoolTier.BOSS ] + [ SpeciesId.PORYGON_Z, PokemonType.NORMAL, -1, [ + [ BiomeId.SPACE, BiomePoolTier.BOSS_RARE ], + [ BiomeId.LABORATORY, BiomePoolTier.BOSS ] ] ], - [ Species.GALLADE, PokemonType.PSYCHIC, PokemonType.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.SUPER_RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.GALLADE, PokemonType.PSYCHIC, PokemonType.FIGHTING, [ + [ BiomeId.DOJO, BiomePoolTier.SUPER_RARE ], + [ BiomeId.DOJO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.PROBOPASS, PokemonType.ROCK, PokemonType.STEEL, [ - [ Biome.CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.PROBOPASS, PokemonType.ROCK, PokemonType.STEEL, [ + [ BiomeId.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.DUSKNOIR, PokemonType.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + [ SpeciesId.DUSKNOIR, PokemonType.GHOST, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.FROSLASS, PokemonType.ICE, PokemonType.GHOST, [ - [ Biome.ICE_CAVE, BiomePoolTier.RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.FROSLASS, PokemonType.ICE, PokemonType.GHOST, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.RARE ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.ROTOM, PokemonType.ELECTRIC, PokemonType.GHOST, [ - [ Biome.LABORATORY, BiomePoolTier.SUPER_RARE ], - [ Biome.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ], - [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ], - [ Biome.SEA, BiomePoolTier.SUPER_RARE ], - [ Biome.SEA, BiomePoolTier.BOSS_SUPER_RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_SUPER_RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ], - [ Biome.TALL_GRASS, BiomePoolTier.SUPER_RARE ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.ROTOM, PokemonType.ELECTRIC, PokemonType.GHOST, [ + [ BiomeId.LABORATORY, BiomePoolTier.SUPER_RARE ], + [ BiomeId.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.SUPER_RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ], + [ BiomeId.SEA, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SEA, BiomePoolTier.BOSS_SUPER_RARE ], + [ BiomeId.ICE_CAVE, BiomePoolTier.SUPER_RARE ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS_SUPER_RARE ], + [ BiomeId.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ], + [ BiomeId.TALL_GRASS, BiomePoolTier.SUPER_RARE ], + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.UXIE, PokemonType.PSYCHIC, -1, [ - [ Biome.CAVE, BiomePoolTier.ULTRA_RARE ], - [ Biome.CAVE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.UXIE, PokemonType.PSYCHIC, -1, [ + [ BiomeId.CAVE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.CAVE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.MESPRIT, PokemonType.PSYCHIC, -1, [ - [ Biome.LAKE, BiomePoolTier.ULTRA_RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.MESPRIT, PokemonType.PSYCHIC, -1, [ + [ BiomeId.LAKE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.LAKE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.AZELF, PokemonType.PSYCHIC, -1, [ - [ Biome.SWAMP, BiomePoolTier.ULTRA_RARE ], - [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.AZELF, PokemonType.PSYCHIC, -1, [ + [ BiomeId.SWAMP, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.SWAMP, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.DIALGA, PokemonType.STEEL, PokemonType.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.DIALGA, PokemonType.STEEL, PokemonType.DRAGON, [ + [ BiomeId.WASTELAND, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.PALKIA, PokemonType.WATER, PokemonType.DRAGON, [ - [ Biome.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.PALKIA, PokemonType.WATER, PokemonType.DRAGON, [ + [ BiomeId.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.HEATRAN, PokemonType.FIRE, PokemonType.STEEL, [ - [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.HEATRAN, PokemonType.FIRE, PokemonType.STEEL, [ + [ BiomeId.VOLCANO, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.REGIGIGAS, PokemonType.NORMAL, -1, [ - [ Biome.TEMPLE, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.REGIGIGAS, PokemonType.NORMAL, -1, [ + [ BiomeId.TEMPLE, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.GIRATINA, PokemonType.GHOST, PokemonType.DRAGON, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.GIRATINA, PokemonType.GHOST, PokemonType.DRAGON, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.CRESSELIA, PokemonType.PSYCHIC, -1, [ - [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ], - [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.CRESSELIA, PokemonType.PSYCHIC, -1, [ + [ BiomeId.BEACH, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.PHIONE, PokemonType.WATER, -1, [ ] + [ SpeciesId.PHIONE, PokemonType.WATER, -1, [ ] ], - [ Species.MANAPHY, PokemonType.WATER, -1, [ ] + [ SpeciesId.MANAPHY, PokemonType.WATER, -1, [ ] ], - [ Species.DARKRAI, PokemonType.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.ULTRA_RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.DARKRAI, PokemonType.DARK, -1, [ + [ BiomeId.ABYSS, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.ABYSS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.SHAYMIN, PokemonType.GRASS, -1, [ - [ Biome.MEADOW, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.SHAYMIN, PokemonType.GRASS, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.ARCEUS, PokemonType.NORMAL, -1, [ ] + [ SpeciesId.ARCEUS, PokemonType.NORMAL, -1, [ ] ], - [ Species.VICTINI, PokemonType.PSYCHIC, PokemonType.FIRE, [ ] + [ SpeciesId.VICTINI, PokemonType.PSYCHIC, PokemonType.FIRE, [ ] ], - [ Species.SNIVY, PokemonType.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ] + [ SpeciesId.SNIVY, PokemonType.GRASS, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.SERVINE, PokemonType.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ] + [ SpeciesId.SERVINE, PokemonType.GRASS, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.SERPERIOR, PokemonType.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.SERPERIOR, PokemonType.GRASS, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.TEPIG, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.TEPIG, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.PIGNITE, PokemonType.FIRE, PokemonType.FIGHTING, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.PIGNITE, PokemonType.FIRE, PokemonType.FIGHTING, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.EMBOAR, PokemonType.FIRE, PokemonType.FIGHTING, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.EMBOAR, PokemonType.FIRE, PokemonType.FIGHTING, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.OSHAWOTT, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] + [ SpeciesId.OSHAWOTT, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.DEWOTT, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] + [ SpeciesId.DEWOTT, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.SAMUROTT, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.SAMUROTT, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.RARE ], + [ BiomeId.LAKE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.PATRAT, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SLUM, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.PATRAT, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SLUM, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.WATCHOG, PokemonType.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SLUM, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SLUM, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.WATCHOG, PokemonType.NORMAL, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SLUM, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SLUM, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.LILLIPUP, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.METROPOLIS, BiomePoolTier.COMMON ] + [ SpeciesId.LILLIPUP, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON ], + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON ] ] ], - [ Species.HERDIER, PokemonType.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON ] + [ SpeciesId.HERDIER, PokemonType.NORMAL, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON ] ] ], - [ Species.STOUTLAND, PokemonType.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON ], - [ Biome.METROPOLIS, BiomePoolTier.BOSS ] + [ SpeciesId.STOUTLAND, PokemonType.NORMAL, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON ], + [ BiomeId.METROPOLIS, BiomePoolTier.BOSS ] ] ], - [ Species.PURRLOIN, PokemonType.DARK, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.PURRLOIN, PokemonType.DARK, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.ABYSS, BiomePoolTier.COMMON ], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.LIEPARD, PokemonType.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.ABYSS, BiomePoolTier.BOSS ], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.LIEPARD, PokemonType.DARK, -1, [ + [ BiomeId.ABYSS, BiomePoolTier.COMMON ], + [ BiomeId.ABYSS, BiomePoolTier.BOSS ], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PANSAGE, PokemonType.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.PANSAGE, PokemonType.GRASS, -1, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON ], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SIMISAGE, PokemonType.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON ], - [ Biome.FOREST, BiomePoolTier.BOSS ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SIMISAGE, PokemonType.GRASS, -1, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON ], + [ BiomeId.FOREST, BiomePoolTier.BOSS ], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.PANSEAR, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.PANSEAR, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.UNCOMMON ], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SIMISEAR, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SIMISEAR, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.UNCOMMON ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.PANPOUR, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.PANPOUR, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON ], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SIMIPOUR, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ], - [ Biome.SEA, BiomePoolTier.BOSS ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SIMIPOUR, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON ], + [ BiomeId.SEA, BiomePoolTier.BOSS ], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.MUNNA, PokemonType.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.COMMON ] + [ SpeciesId.MUNNA, PokemonType.PSYCHIC, -1, [ + [ BiomeId.SPACE, BiomePoolTier.COMMON ] ] ], - [ Species.MUSHARNA, PokemonType.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.COMMON ], - [ Biome.SPACE, BiomePoolTier.BOSS ] + [ SpeciesId.MUSHARNA, PokemonType.PSYCHIC, -1, [ + [ BiomeId.SPACE, BiomePoolTier.COMMON ], + [ BiomeId.SPACE, BiomePoolTier.BOSS ] ] ], - [ Species.PIDOVE, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.PIDOVE, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TRANQUILL, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.TRANQUILL, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.UNFEZANT, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.UNFEZANT, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BLITZLE, PokemonType.ELECTRIC, -1, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ], - [ Biome.JUNGLE, BiomePoolTier.COMMON ] + [ SpeciesId.BLITZLE, PokemonType.ELECTRIC, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.COMMON ], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON ] ] ], - [ Species.ZEBSTRIKA, PokemonType.ELECTRIC, -1, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ], - [ Biome.MEADOW, BiomePoolTier.BOSS ], - [ Biome.JUNGLE, BiomePoolTier.COMMON ] + [ SpeciesId.ZEBSTRIKA, PokemonType.ELECTRIC, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.COMMON ], + [ BiomeId.MEADOW, BiomePoolTier.BOSS ], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON ] ] ], - [ Species.ROGGENROLA, PokemonType.ROCK, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.ROGGENROLA, PokemonType.ROCK, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.BADLANDS, BiomePoolTier.UNCOMMON ], + [ BiomeId.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.BOLDORE, PokemonType.ROCK, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.BOLDORE, PokemonType.ROCK, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.BADLANDS, BiomePoolTier.UNCOMMON ], + [ BiomeId.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.GIGALITH, PokemonType.ROCK, -1, [ - [ Biome.CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.GIGALITH, PokemonType.ROCK, -1, [ + [ BiomeId.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.WOOBAT, PokemonType.PSYCHIC, PokemonType.FLYING, [ - [ Biome.CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.WOOBAT, PokemonType.PSYCHIC, PokemonType.FLYING, [ + [ BiomeId.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.SWOOBAT, PokemonType.PSYCHIC, PokemonType.FLYING, [ - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.SWOOBAT, PokemonType.PSYCHIC, PokemonType.FLYING, [ + [ BiomeId.CAVE, BiomePoolTier.COMMON ], + [ BiomeId.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.DRILBUR, PokemonType.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] + [ SpeciesId.DRILBUR, PokemonType.GROUND, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.COMMON ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] ] ], - [ Species.EXCADRILL, PokemonType.GROUND, PokemonType.STEEL, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.BADLANDS, BiomePoolTier.BOSS ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] + [ SpeciesId.EXCADRILL, PokemonType.GROUND, PokemonType.STEEL, [ + [ BiomeId.BADLANDS, BiomePoolTier.COMMON ], + [ BiomeId.BADLANDS, BiomePoolTier.BOSS ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] ] ], - [ Species.AUDINO, PokemonType.NORMAL, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.RARE ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.AUDINO, PokemonType.NORMAL, -1, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.RARE ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.TIMBURR, PokemonType.FIGHTING, -1, [ - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] + [ SpeciesId.TIMBURR, PokemonType.FIGHTING, -1, [ + [ BiomeId.FACTORY, BiomePoolTier.COMMON ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] ] ], - [ Species.GURDURR, PokemonType.FIGHTING, -1, [ - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] + [ SpeciesId.GURDURR, PokemonType.FIGHTING, -1, [ + [ BiomeId.FACTORY, BiomePoolTier.COMMON ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] ] ], - [ Species.CONKELDURR, PokemonType.FIGHTING, -1, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] + [ SpeciesId.CONKELDURR, PokemonType.FIGHTING, -1, [ + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] ] ], - [ Species.TYMPOLE, PokemonType.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ] + [ SpeciesId.TYMPOLE, PokemonType.WATER, -1, [ + [ BiomeId.SWAMP, BiomePoolTier.COMMON ] ] ], - [ Species.PALPITOAD, PokemonType.WATER, PokemonType.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ] + [ SpeciesId.PALPITOAD, PokemonType.WATER, PokemonType.GROUND, [ + [ BiomeId.SWAMP, BiomePoolTier.COMMON ] ] ], - [ Species.SEISMITOAD, PokemonType.WATER, PokemonType.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ], - [ Biome.SWAMP, BiomePoolTier.BOSS ] + [ SpeciesId.SEISMITOAD, PokemonType.WATER, PokemonType.GROUND, [ + [ BiomeId.SWAMP, BiomePoolTier.COMMON ], + [ BiomeId.SWAMP, BiomePoolTier.BOSS ] ] ], - [ Species.THROH, PokemonType.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS ] + [ SpeciesId.THROH, PokemonType.FIGHTING, -1, [ + [ BiomeId.DOJO, BiomePoolTier.RARE ], + [ BiomeId.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.SAWK, PokemonType.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS ] + [ SpeciesId.SAWK, PokemonType.FIGHTING, -1, [ + [ BiomeId.DOJO, BiomePoolTier.RARE ], + [ BiomeId.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.SEWADDLE, PokemonType.BUG, PokemonType.GRASS, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SEWADDLE, PokemonType.BUG, PokemonType.GRASS, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SWADLOON, PokemonType.BUG, PokemonType.GRASS, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SWADLOON, PokemonType.BUG, PokemonType.GRASS, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.LEAVANNY, PokemonType.BUG, PokemonType.GRASS, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.LEAVANNY, PokemonType.BUG, PokemonType.GRASS, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VENIPEDE, PokemonType.BUG, PokemonType.POISON, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.VENIPEDE, PokemonType.BUG, PokemonType.POISON, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.WHIRLIPEDE, PokemonType.BUG, PokemonType.POISON, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.WHIRLIPEDE, PokemonType.BUG, PokemonType.POISON, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SCOLIPEDE, PokemonType.BUG, PokemonType.POISON, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.SCOLIPEDE, PokemonType.BUG, PokemonType.POISON, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.COTTONEE, PokemonType.GRASS, PokemonType.FAIRY, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MEADOW, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.COTTONEE, PokemonType.GRASS, PokemonType.FAIRY, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MEADOW, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.WHIMSICOTT, PokemonType.GRASS, PokemonType.FAIRY, [ - [ Biome.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.WHIMSICOTT, PokemonType.GRASS, PokemonType.FAIRY, [ + [ BiomeId.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.PETILIL, PokemonType.GRASS, -1, [ - [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.PETILIL, PokemonType.GRASS, -1, [ + [ BiomeId.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.LILLIGANT, PokemonType.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.LILLIGANT, PokemonType.GRASS, -1, [ + [ BiomeId.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BASCULIN, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.COMMON ] + [ SpeciesId.BASCULIN, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.COMMON ] ] ], - [ Species.SANDILE, PokemonType.GROUND, PokemonType.DARK, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.SANDILE, PokemonType.GROUND, PokemonType.DARK, [ + [ BiomeId.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.KROKOROK, PokemonType.GROUND, PokemonType.DARK, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.KROKOROK, PokemonType.GROUND, PokemonType.DARK, [ + [ BiomeId.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.KROOKODILE, PokemonType.GROUND, PokemonType.DARK, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.KROOKODILE, PokemonType.GROUND, PokemonType.DARK, [ + [ BiomeId.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.DARUMAKA, PokemonType.FIRE, -1, [ - [ Biome.DESERT, BiomePoolTier.RARE ] + [ SpeciesId.DARUMAKA, PokemonType.FIRE, -1, [ + [ BiomeId.DESERT, BiomePoolTier.RARE ] ] ], - [ Species.DARMANITAN, PokemonType.FIRE, -1, [ - [ Biome.DESERT, BiomePoolTier.RARE ], - [ Biome.DESERT, BiomePoolTier.BOSS ] + [ SpeciesId.DARMANITAN, PokemonType.FIRE, -1, [ + [ BiomeId.DESERT, BiomePoolTier.RARE ], + [ BiomeId.DESERT, BiomePoolTier.BOSS ] ] ], - [ Species.MARACTUS, PokemonType.GRASS, -1, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON ], - [ Biome.DESERT, BiomePoolTier.BOSS ] + [ SpeciesId.MARACTUS, PokemonType.GRASS, -1, [ + [ BiomeId.DESERT, BiomePoolTier.UNCOMMON ], + [ BiomeId.DESERT, BiomePoolTier.BOSS ] ] ], - [ Species.DWEBBLE, PokemonType.BUG, PokemonType.ROCK, [ - [ Biome.BEACH, BiomePoolTier.COMMON ] + [ SpeciesId.DWEBBLE, PokemonType.BUG, PokemonType.ROCK, [ + [ BiomeId.BEACH, BiomePoolTier.COMMON ] ] ], - [ Species.CRUSTLE, PokemonType.BUG, PokemonType.ROCK, [ - [ Biome.BEACH, BiomePoolTier.COMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ] + [ SpeciesId.CRUSTLE, PokemonType.BUG, PokemonType.ROCK, [ + [ BiomeId.BEACH, BiomePoolTier.COMMON ], + [ BiomeId.BEACH, BiomePoolTier.BOSS ] ] ], - [ Species.SCRAGGY, PokemonType.DARK, PokemonType.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.UNCOMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SCRAGGY, PokemonType.DARK, PokemonType.FIGHTING, [ + [ BiomeId.DOJO, BiomePoolTier.UNCOMMON ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SCRAFTY, PokemonType.DARK, PokemonType.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.UNCOMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SCRAFTY, PokemonType.DARK, PokemonType.FIGHTING, [ + [ BiomeId.DOJO, BiomePoolTier.UNCOMMON ], + [ BiomeId.DOJO, BiomePoolTier.BOSS ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SIGILYPH, PokemonType.PSYCHIC, PokemonType.FLYING, [ - [ Biome.RUINS, BiomePoolTier.UNCOMMON ], - [ Biome.RUINS, BiomePoolTier.BOSS ], - [ Biome.SPACE, BiomePoolTier.RARE ] + [ SpeciesId.SIGILYPH, PokemonType.PSYCHIC, PokemonType.FLYING, [ + [ BiomeId.RUINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.RUINS, BiomePoolTier.BOSS ], + [ BiomeId.SPACE, BiomePoolTier.RARE ] ] ], - [ Species.YAMASK, PokemonType.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ] + [ SpeciesId.YAMASK, PokemonType.GHOST, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.UNCOMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.COFAGRIGUS, PokemonType.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.BOSS ] + [ SpeciesId.COFAGRIGUS, PokemonType.GHOST, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.UNCOMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.COMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.BOSS ] ] ], - [ Species.TIRTOUGA, PokemonType.WATER, PokemonType.ROCK, [ - [ Biome.SEA, BiomePoolTier.SUPER_RARE ], - [ Biome.BEACH, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.TIRTOUGA, PokemonType.WATER, PokemonType.ROCK, [ + [ BiomeId.SEA, BiomePoolTier.SUPER_RARE ], + [ BiomeId.BEACH, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.CARRACOSTA, PokemonType.WATER, PokemonType.ROCK, [ - [ Biome.SEA, BiomePoolTier.SUPER_RARE ], - [ Biome.BEACH, BiomePoolTier.SUPER_RARE ], - [ Biome.BEACH, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.CARRACOSTA, PokemonType.WATER, PokemonType.ROCK, [ + [ BiomeId.SEA, BiomePoolTier.SUPER_RARE ], + [ BiomeId.BEACH, BiomePoolTier.SUPER_RARE ], + [ BiomeId.BEACH, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ARCHEN, PokemonType.ROCK, PokemonType.FLYING, [ - [ Biome.RUINS, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.ARCHEN, PokemonType.ROCK, PokemonType.FLYING, [ + [ BiomeId.RUINS, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.ARCHEOPS, PokemonType.ROCK, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.RUINS, BiomePoolTier.SUPER_RARE ], - [ Biome.RUINS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.ARCHEOPS, PokemonType.ROCK, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ BiomeId.RUINS, BiomePoolTier.SUPER_RARE ], + [ BiomeId.RUINS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.TRUBBISH, PokemonType.POISON, -1, [ - [ Biome.SLUM, BiomePoolTier.COMMON ] + [ SpeciesId.TRUBBISH, PokemonType.POISON, -1, [ + [ BiomeId.SLUM, BiomePoolTier.COMMON ] ] ], - [ Species.GARBODOR, PokemonType.POISON, -1, [ - [ Biome.SLUM, BiomePoolTier.COMMON ], - [ Biome.SLUM, BiomePoolTier.BOSS ] + [ SpeciesId.GARBODOR, PokemonType.POISON, -1, [ + [ BiomeId.SLUM, BiomePoolTier.COMMON ], + [ BiomeId.SLUM, BiomePoolTier.BOSS ] ] ], - [ Species.ZORUA, PokemonType.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.RARE ] + [ SpeciesId.ZORUA, PokemonType.DARK, -1, [ + [ BiomeId.ABYSS, BiomePoolTier.RARE ] ] ], - [ Species.ZOROARK, PokemonType.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] + [ SpeciesId.ZOROARK, PokemonType.DARK, -1, [ + [ BiomeId.ABYSS, BiomePoolTier.RARE ], + [ BiomeId.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.MINCCINO, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MEADOW, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.MINCCINO, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MEADOW, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CINCCINO, PokemonType.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.CINCCINO, PokemonType.NORMAL, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GOTHITA, PokemonType.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.RARE ] + [ SpeciesId.GOTHITA, PokemonType.PSYCHIC, -1, [ + [ BiomeId.RUINS, BiomePoolTier.RARE ] ] ], - [ Species.GOTHORITA, PokemonType.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.RARE ] + [ SpeciesId.GOTHORITA, PokemonType.PSYCHIC, -1, [ + [ BiomeId.RUINS, BiomePoolTier.RARE ] ] ], - [ Species.GOTHITELLE, PokemonType.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.RARE ], - [ Biome.RUINS, BiomePoolTier.BOSS ] + [ SpeciesId.GOTHITELLE, PokemonType.PSYCHIC, -1, [ + [ BiomeId.RUINS, BiomePoolTier.RARE ], + [ BiomeId.RUINS, BiomePoolTier.BOSS ] ] ], - [ Species.SOLOSIS, PokemonType.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.RARE ], - [ Biome.LABORATORY, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SOLOSIS, PokemonType.PSYCHIC, -1, [ + [ BiomeId.SPACE, BiomePoolTier.RARE ], + [ BiomeId.LABORATORY, BiomePoolTier.UNCOMMON ] ] ], - [ Species.DUOSION, PokemonType.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.RARE ], - [ Biome.LABORATORY, BiomePoolTier.UNCOMMON ] + [ SpeciesId.DUOSION, PokemonType.PSYCHIC, -1, [ + [ BiomeId.SPACE, BiomePoolTier.RARE ], + [ BiomeId.LABORATORY, BiomePoolTier.UNCOMMON ] ] ], - [ Species.REUNICLUS, PokemonType.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.RARE ], - [ Biome.SPACE, BiomePoolTier.BOSS ], - [ Biome.LABORATORY, BiomePoolTier.UNCOMMON ], - [ Biome.LABORATORY, BiomePoolTier.BOSS ] + [ SpeciesId.REUNICLUS, PokemonType.PSYCHIC, -1, [ + [ BiomeId.SPACE, BiomePoolTier.RARE ], + [ BiomeId.SPACE, BiomePoolTier.BOSS ], + [ BiomeId.LABORATORY, BiomePoolTier.UNCOMMON ], + [ BiomeId.LABORATORY, BiomePoolTier.BOSS ] ] ], - [ Species.DUCKLETT, PokemonType.WATER, PokemonType.FLYING, [ - [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.DUCKLETT, PokemonType.WATER, PokemonType.FLYING, [ + [ BiomeId.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SWANNA, PokemonType.WATER, PokemonType.FLYING, [ - [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.LAKE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SWANNA, PokemonType.WATER, PokemonType.FLYING, [ + [ BiomeId.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.LAKE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VANILLITE, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.VANILLITE, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.VANILLISH, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.VANILLISH, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.VANILLUXE, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.VANILLUXE, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.DEERLING, PokemonType.NORMAL, PokemonType.GRASS, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.DEERLING, PokemonType.NORMAL, PokemonType.GRASS, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SAWSBUCK, PokemonType.NORMAL, PokemonType.GRASS, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SAWSBUCK, PokemonType.NORMAL, PokemonType.GRASS, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.EMOLGA, PokemonType.ELECTRIC, PokemonType.FLYING, [ - [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] + [ SpeciesId.EMOLGA, PokemonType.ELECTRIC, PokemonType.FLYING, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.UNCOMMON ] ] ], - [ Species.KARRABLAST, PokemonType.BUG, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE ] + [ SpeciesId.KARRABLAST, PokemonType.BUG, -1, [ + [ BiomeId.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.ESCAVALIER, PokemonType.BUG, PokemonType.STEEL, [ - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.ESCAVALIER, PokemonType.BUG, PokemonType.STEEL, [ + [ BiomeId.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.FOONGUS, PokemonType.GRASS, PokemonType.POISON, [ - [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.FOONGUS, PokemonType.GRASS, PokemonType.POISON, [ + [ BiomeId.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.AMOONGUSS, PokemonType.GRASS, PokemonType.POISON, [ - [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.AMOONGUSS, PokemonType.GRASS, PokemonType.POISON, [ + [ BiomeId.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.FRILLISH, PokemonType.WATER, PokemonType.GHOST, [ - [ Biome.SEABED, BiomePoolTier.COMMON ] + [ SpeciesId.FRILLISH, PokemonType.WATER, PokemonType.GHOST, [ + [ BiomeId.SEABED, BiomePoolTier.COMMON ] ] ], - [ Species.JELLICENT, PokemonType.WATER, PokemonType.GHOST, [ - [ Biome.SEABED, BiomePoolTier.COMMON ], - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ SpeciesId.JELLICENT, PokemonType.WATER, PokemonType.GHOST, [ + [ BiomeId.SEABED, BiomePoolTier.COMMON ], + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.ALOMOMOLA, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ SpeciesId.ALOMOMOLA, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.RARE ], + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.JOLTIK, PokemonType.BUG, PokemonType.ELECTRIC, [ - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.JOLTIK, PokemonType.BUG, PokemonType.ELECTRIC, [ + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GALVANTULA, PokemonType.BUG, PokemonType.ELECTRIC, [ - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], - [ Biome.JUNGLE, BiomePoolTier.BOSS ] + [ SpeciesId.GALVANTULA, PokemonType.BUG, PokemonType.ELECTRIC, [ + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.FERROSEED, PokemonType.GRASS, PokemonType.STEEL, [ - [ Biome.CAVE, BiomePoolTier.RARE ] + [ SpeciesId.FERROSEED, PokemonType.GRASS, PokemonType.STEEL, [ + [ BiomeId.CAVE, BiomePoolTier.RARE ] ] ], - [ Species.FERROTHORN, PokemonType.GRASS, PokemonType.STEEL, [ - [ Biome.CAVE, BiomePoolTier.RARE ], - [ Biome.CAVE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.FERROTHORN, PokemonType.GRASS, PokemonType.STEEL, [ + [ BiomeId.CAVE, BiomePoolTier.RARE ], + [ BiomeId.CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.KLINK, PokemonType.STEEL, -1, [ - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ] + [ SpeciesId.KLINK, PokemonType.STEEL, -1, [ + [ BiomeId.FACTORY, BiomePoolTier.COMMON ], + [ BiomeId.LABORATORY, BiomePoolTier.COMMON ] ] ], - [ Species.KLANG, PokemonType.STEEL, -1, [ - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ] + [ SpeciesId.KLANG, PokemonType.STEEL, -1, [ + [ BiomeId.FACTORY, BiomePoolTier.COMMON ], + [ BiomeId.LABORATORY, BiomePoolTier.COMMON ] ] ], - [ Species.KLINKLANG, PokemonType.STEEL, -1, [ - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.FACTORY, BiomePoolTier.BOSS ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.BOSS ] + [ SpeciesId.KLINKLANG, PokemonType.STEEL, -1, [ + [ BiomeId.FACTORY, BiomePoolTier.COMMON ], + [ BiomeId.FACTORY, BiomePoolTier.BOSS ], + [ BiomeId.LABORATORY, BiomePoolTier.COMMON ], + [ BiomeId.LABORATORY, BiomePoolTier.BOSS ] ] ], - [ Species.TYNAMO, PokemonType.ELECTRIC, -1, [ - [ Biome.SEABED, BiomePoolTier.RARE ] + [ SpeciesId.TYNAMO, PokemonType.ELECTRIC, -1, [ + [ BiomeId.SEABED, BiomePoolTier.RARE ] ] ], - [ Species.EELEKTRIK, PokemonType.ELECTRIC, -1, [ - [ Biome.SEABED, BiomePoolTier.RARE ] + [ SpeciesId.EELEKTRIK, PokemonType.ELECTRIC, -1, [ + [ BiomeId.SEABED, BiomePoolTier.RARE ] ] ], - [ Species.EELEKTROSS, PokemonType.ELECTRIC, -1, [ - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.EELEKTROSS, PokemonType.ELECTRIC, -1, [ + [ BiomeId.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ELGYEM, PokemonType.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.SPACE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.ELGYEM, PokemonType.PSYCHIC, -1, [ + [ BiomeId.RUINS, BiomePoolTier.COMMON ], + [ BiomeId.SPACE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.BEHEEYEM, PokemonType.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.RUINS, BiomePoolTier.BOSS ], - [ Biome.SPACE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.BEHEEYEM, PokemonType.PSYCHIC, -1, [ + [ BiomeId.RUINS, BiomePoolTier.COMMON ], + [ BiomeId.RUINS, BiomePoolTier.BOSS ], + [ BiomeId.SPACE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.LITWICK, PokemonType.GHOST, PokemonType.FIRE, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.LITWICK, PokemonType.GHOST, PokemonType.FIRE, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.LAMPENT, PokemonType.GHOST, PokemonType.FIRE, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.LAMPENT, PokemonType.GHOST, PokemonType.FIRE, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CHANDELURE, PokemonType.GHOST, PokemonType.FIRE, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + [ SpeciesId.CHANDELURE, PokemonType.GHOST, PokemonType.FIRE, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.AXEW, PokemonType.DRAGON, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.COMMON ] + [ SpeciesId.AXEW, PokemonType.DRAGON, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.COMMON ] ] ], - [ Species.FRAXURE, PokemonType.DRAGON, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.COMMON ] + [ SpeciesId.FRAXURE, PokemonType.DRAGON, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.COMMON ] ] ], - [ Species.HAXORUS, PokemonType.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON ], - [ Biome.WASTELAND, BiomePoolTier.BOSS ] + [ SpeciesId.HAXORUS, PokemonType.DRAGON, -1, [ + [ BiomeId.WASTELAND, BiomePoolTier.COMMON ], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS ] ] ], - [ Species.CUBCHOO, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.CUBCHOO, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.BEARTIC, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.BEARTIC, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.CRYOGONAL, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.CRYOGONAL, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.RARE ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.SHELMET, PokemonType.BUG, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE ] + [ SpeciesId.SHELMET, PokemonType.BUG, -1, [ + [ BiomeId.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.ACCELGOR, PokemonType.BUG, -1, [ - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.ACCELGOR, PokemonType.BUG, -1, [ + [ BiomeId.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.STUNFISK, PokemonType.GROUND, PokemonType.ELECTRIC, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.BOSS ] + [ SpeciesId.STUNFISK, PokemonType.GROUND, PokemonType.ELECTRIC, [ + [ BiomeId.SWAMP, BiomePoolTier.UNCOMMON ], + [ BiomeId.SWAMP, BiomePoolTier.BOSS ] ] ], - [ Species.MIENFOO, PokemonType.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.UNCOMMON ] + [ SpeciesId.MIENFOO, PokemonType.FIGHTING, -1, [ + [ BiomeId.DOJO, BiomePoolTier.UNCOMMON ] ] ], - [ Species.MIENSHAO, PokemonType.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.UNCOMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ] + [ SpeciesId.MIENSHAO, PokemonType.FIGHTING, -1, [ + [ BiomeId.DOJO, BiomePoolTier.UNCOMMON ], + [ BiomeId.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.DRUDDIGON, PokemonType.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.DRUDDIGON, PokemonType.DRAGON, -1, [ + [ BiomeId.WASTELAND, BiomePoolTier.SUPER_RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GOLETT, PokemonType.GROUND, PokemonType.GHOST, [ - [ Biome.TEMPLE, BiomePoolTier.COMMON ] + [ SpeciesId.GOLETT, PokemonType.GROUND, PokemonType.GHOST, [ + [ BiomeId.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.GOLURK, PokemonType.GROUND, PokemonType.GHOST, [ - [ Biome.TEMPLE, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.BOSS ] + [ SpeciesId.GOLURK, PokemonType.GROUND, PokemonType.GHOST, [ + [ BiomeId.TEMPLE, BiomePoolTier.COMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.BOSS ] ] ], - [ Species.PAWNIARD, PokemonType.DARK, PokemonType.STEEL, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ] + [ SpeciesId.PAWNIARD, PokemonType.DARK, PokemonType.STEEL, [ + [ BiomeId.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.BISHARP, PokemonType.DARK, PokemonType.STEEL, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ] + [ SpeciesId.BISHARP, PokemonType.DARK, PokemonType.STEEL, [ + [ BiomeId.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.BOUFFALANT, PokemonType.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.BOUFFALANT, PokemonType.NORMAL, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.RUFFLET, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.RUFFLET, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BRAVIARY, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.BRAVIARY, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VULLABY, PokemonType.DARK, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.VULLABY, PokemonType.DARK, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.MANDIBUZZ, PokemonType.DARK, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.MANDIBUZZ, PokemonType.DARK, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.HEATMOR, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] + [ SpeciesId.HEATMOR, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.UNCOMMON ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.DURANT, PokemonType.BUG, PokemonType.STEEL, [ - [ Biome.FOREST, BiomePoolTier.SUPER_RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.DURANT, PokemonType.BUG, PokemonType.STEEL, [ + [ BiomeId.FOREST, BiomePoolTier.SUPER_RARE ], + [ BiomeId.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.DEINO, PokemonType.DARK, PokemonType.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.ABYSS, BiomePoolTier.RARE ] + [ SpeciesId.DEINO, PokemonType.DARK, PokemonType.DRAGON, [ + [ BiomeId.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.ABYSS, BiomePoolTier.RARE ] ] ], - [ Species.ZWEILOUS, PokemonType.DARK, PokemonType.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.ABYSS, BiomePoolTier.RARE ] + [ SpeciesId.ZWEILOUS, PokemonType.DARK, PokemonType.DRAGON, [ + [ BiomeId.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.ABYSS, BiomePoolTier.RARE ] ] ], - [ Species.HYDREIGON, PokemonType.DARK, PokemonType.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.ABYSS, BiomePoolTier.RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] + [ SpeciesId.HYDREIGON, PokemonType.DARK, PokemonType.DRAGON, [ + [ BiomeId.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.ABYSS, BiomePoolTier.RARE ], + [ BiomeId.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.LARVESTA, PokemonType.BUG, PokemonType.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.LARVESTA, PokemonType.BUG, PokemonType.FIRE, [ + [ BiomeId.VOLCANO, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.VOLCARONA, PokemonType.BUG, PokemonType.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.VOLCARONA, PokemonType.BUG, PokemonType.FIRE, [ + [ BiomeId.VOLCANO, BiomePoolTier.SUPER_RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.COBALION, PokemonType.STEEL, PokemonType.FIGHTING, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.ULTRA_RARE ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.COBALION, PokemonType.STEEL, PokemonType.FIGHTING, [ + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.TERRAKION, PokemonType.ROCK, PokemonType.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.ULTRA_RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.TERRAKION, PokemonType.ROCK, PokemonType.FIGHTING, [ + [ BiomeId.DOJO, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.DOJO, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.VIRIZION, PokemonType.GRASS, PokemonType.FIGHTING, [ - [ Biome.GRASS, BiomePoolTier.ULTRA_RARE ], - [ Biome.GRASS, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.VIRIZION, PokemonType.GRASS, PokemonType.FIGHTING, [ + [ BiomeId.GRASS, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.GRASS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.TORNADUS, PokemonType.FLYING, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.TORNADUS, PokemonType.FLYING, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.THUNDURUS, PokemonType.ELECTRIC, PokemonType.FLYING, [ - [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.THUNDURUS, PokemonType.ELECTRIC, PokemonType.FLYING, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.RESHIRAM, PokemonType.DRAGON, PokemonType.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.RESHIRAM, PokemonType.DRAGON, PokemonType.FIRE, [ + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.ZEKROM, PokemonType.DRAGON, PokemonType.ELECTRIC, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.ZEKROM, PokemonType.DRAGON, PokemonType.ELECTRIC, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.LANDORUS, PokemonType.GROUND, PokemonType.FLYING, [ - [ Biome.BADLANDS, BiomePoolTier.ULTRA_RARE ], - [ Biome.BADLANDS, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.LANDORUS, PokemonType.GROUND, PokemonType.FLYING, [ + [ BiomeId.BADLANDS, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.BADLANDS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.KYUREM, PokemonType.DRAGON, PokemonType.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.KYUREM, PokemonType.DRAGON, PokemonType.ICE, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.KELDEO, PokemonType.WATER, PokemonType.FIGHTING, [ - [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ], - [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.KELDEO, PokemonType.WATER, PokemonType.FIGHTING, [ + [ BiomeId.BEACH, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.MELOETTA, PokemonType.NORMAL, PokemonType.PSYCHIC, [ - [ Biome.MEADOW, BiomePoolTier.ULTRA_RARE ], - [ Biome.MEADOW, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.MELOETTA, PokemonType.NORMAL, PokemonType.PSYCHIC, [ + [ BiomeId.MEADOW, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.MEADOW, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.GENESECT, PokemonType.BUG, PokemonType.STEEL, [ - [ Biome.FACTORY, BiomePoolTier.ULTRA_RARE ], - [ Biome.FACTORY, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.GENESECT, PokemonType.BUG, PokemonType.STEEL, [ + [ BiomeId.FACTORY, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.FACTORY, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.CHESPIN, PokemonType.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE ] + [ SpeciesId.CHESPIN, PokemonType.GRASS, -1, [ + [ BiomeId.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.QUILLADIN, PokemonType.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE ] + [ SpeciesId.QUILLADIN, PokemonType.GRASS, -1, [ + [ BiomeId.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.CHESNAUGHT, PokemonType.GRASS, PokemonType.FIGHTING, [ - [ Biome.FOREST, BiomePoolTier.RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.CHESNAUGHT, PokemonType.GRASS, PokemonType.FIGHTING, [ + [ BiomeId.FOREST, BiomePoolTier.RARE ], + [ BiomeId.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.FENNEKIN, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.FENNEKIN, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.BRAIXEN, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.BRAIXEN, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.DELPHOX, PokemonType.FIRE, PokemonType.PSYCHIC, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.DELPHOX, PokemonType.FIRE, PokemonType.PSYCHIC, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.FROAKIE, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] + [ SpeciesId.FROAKIE, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.FROGADIER, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] + [ SpeciesId.FROGADIER, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.GRENINJA, PokemonType.WATER, PokemonType.DARK, [ - [ Biome.LAKE, BiomePoolTier.RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.GRENINJA, PokemonType.WATER, PokemonType.DARK, [ + [ BiomeId.LAKE, BiomePoolTier.RARE ], + [ BiomeId.LAKE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.BUNNELBY, PokemonType.NORMAL, -1, [ - [ Biome.CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.BUNNELBY, PokemonType.NORMAL, -1, [ + [ BiomeId.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.DIGGERSBY, PokemonType.NORMAL, PokemonType.GROUND, [ - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.DIGGERSBY, PokemonType.NORMAL, PokemonType.GROUND, [ + [ BiomeId.CAVE, BiomePoolTier.COMMON ], + [ BiomeId.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.FLETCHLING, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.FLETCHLING, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON ], + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.FLETCHINDER, PokemonType.FIRE, PokemonType.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.FLETCHINDER, PokemonType.FIRE, PokemonType.FLYING, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TALONFLAME, PokemonType.FIRE, PokemonType.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.TALONFLAME, PokemonType.FIRE, PokemonType.FLYING, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SCATTERBUG, PokemonType.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SCATTERBUG, PokemonType.BUG, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SPEWPA, PokemonType.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SPEWPA, PokemonType.BUG, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VIVILLON, PokemonType.BUG, PokemonType.FLYING, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.VIVILLON, PokemonType.BUG, PokemonType.FLYING, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.LITLEO, PokemonType.FIRE, PokemonType.NORMAL, [ - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.LITLEO, PokemonType.FIRE, PokemonType.NORMAL, [ + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.PYROAR, PokemonType.FIRE, PokemonType.NORMAL, [ - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], - [ Biome.JUNGLE, BiomePoolTier.BOSS ] + [ SpeciesId.PYROAR, PokemonType.FIRE, PokemonType.NORMAL, [ + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.FLABEBE, PokemonType.FAIRY, -1, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ] + [ SpeciesId.FLABEBE, PokemonType.FAIRY, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.COMMON ] ] ], - [ Species.FLOETTE, PokemonType.FAIRY, -1, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ] + [ SpeciesId.FLOETTE, PokemonType.FAIRY, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.COMMON ] ] ], - [ Species.FLORGES, PokemonType.FAIRY, -1, [ - [ Biome.MEADOW, BiomePoolTier.BOSS ] + [ SpeciesId.FLORGES, PokemonType.FAIRY, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.BOSS ] ] ], - [ Species.SKIDDO, PokemonType.GRASS, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] + [ SpeciesId.SKIDDO, PokemonType.GRASS, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON ] ] ], - [ Species.GOGOAT, PokemonType.GRASS, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + [ SpeciesId.GOGOAT, PokemonType.GRASS, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON ], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS ] ] ], - [ Species.PANCHAM, PokemonType.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.RARE ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.PANCHAM, PokemonType.FIGHTING, -1, [ + [ BiomeId.DOJO, BiomePoolTier.RARE ], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PANGORO, PokemonType.FIGHTING, PokemonType.DARK, [ - [ Biome.DOJO, BiomePoolTier.RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS_RARE ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.PANGORO, PokemonType.FIGHTING, PokemonType.DARK, [ + [ BiomeId.DOJO, BiomePoolTier.RARE ], + [ BiomeId.DOJO, BiomePoolTier.BOSS_RARE ], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.FURFROU, PokemonType.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.METROPOLIS, BiomePoolTier.BOSS ] + [ SpeciesId.FURFROU, PokemonType.NORMAL, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ BiomeId.METROPOLIS, BiomePoolTier.BOSS ] ] ], - [ Species.ESPURR, PokemonType.PSYCHIC, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.ESPURR, PokemonType.PSYCHIC, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.MEOWSTIC, PokemonType.PSYCHIC, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.METROPOLIS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.MEOWSTIC, PokemonType.PSYCHIC, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.METROPOLIS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.HONEDGE, PokemonType.STEEL, PokemonType.GHOST, [ - [ Biome.TEMPLE, BiomePoolTier.COMMON ] + [ SpeciesId.HONEDGE, PokemonType.STEEL, PokemonType.GHOST, [ + [ BiomeId.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.DOUBLADE, PokemonType.STEEL, PokemonType.GHOST, [ - [ Biome.TEMPLE, BiomePoolTier.COMMON ] + [ SpeciesId.DOUBLADE, PokemonType.STEEL, PokemonType.GHOST, [ + [ BiomeId.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.AEGISLASH, PokemonType.STEEL, PokemonType.GHOST, [ - [ Biome.TEMPLE, BiomePoolTier.BOSS ] + [ SpeciesId.AEGISLASH, PokemonType.STEEL, PokemonType.GHOST, [ + [ BiomeId.TEMPLE, BiomePoolTier.BOSS ] ] ], - [ Species.SPRITZEE, PokemonType.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.SPRITZEE, PokemonType.FAIRY, -1, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.AROMATISSE, PokemonType.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.AROMATISSE, PokemonType.FAIRY, -1, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.SWIRLIX, PokemonType.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.SWIRLIX, PokemonType.FAIRY, -1, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.SLURPUFF, PokemonType.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.SLURPUFF, PokemonType.FAIRY, -1, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.INKAY, PokemonType.DARK, PokemonType.PSYCHIC, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.INKAY, PokemonType.DARK, PokemonType.PSYCHIC, [ + [ BiomeId.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.MALAMAR, PokemonType.DARK, PokemonType.PSYCHIC, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.MALAMAR, PokemonType.DARK, PokemonType.PSYCHIC, [ + [ BiomeId.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.BINACLE, PokemonType.ROCK, PokemonType.WATER, [ - [ Biome.BEACH, BiomePoolTier.COMMON ] + [ SpeciesId.BINACLE, PokemonType.ROCK, PokemonType.WATER, [ + [ BiomeId.BEACH, BiomePoolTier.COMMON ] ] ], - [ Species.BARBARACLE, PokemonType.ROCK, PokemonType.WATER, [ - [ Biome.BEACH, BiomePoolTier.COMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ] + [ SpeciesId.BARBARACLE, PokemonType.ROCK, PokemonType.WATER, [ + [ BiomeId.BEACH, BiomePoolTier.COMMON ], + [ BiomeId.BEACH, BiomePoolTier.BOSS ] ] ], - [ Species.SKRELP, PokemonType.POISON, PokemonType.WATER, [ - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SKRELP, PokemonType.POISON, PokemonType.WATER, [ + [ BiomeId.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.DRAGALGE, PokemonType.POISON, PokemonType.DRAGON, [ - [ Biome.SEABED, BiomePoolTier.UNCOMMON ], - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ SpeciesId.DRAGALGE, PokemonType.POISON, PokemonType.DRAGON, [ + [ BiomeId.SEABED, BiomePoolTier.UNCOMMON ], + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.CLAUNCHER, PokemonType.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.UNCOMMON ] + [ SpeciesId.CLAUNCHER, PokemonType.WATER, -1, [ + [ BiomeId.BEACH, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CLAWITZER, PokemonType.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.UNCOMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ] + [ SpeciesId.CLAWITZER, PokemonType.WATER, -1, [ + [ BiomeId.BEACH, BiomePoolTier.UNCOMMON ], + [ BiomeId.BEACH, BiomePoolTier.BOSS ] ] ], - [ Species.HELIOPTILE, PokemonType.ELECTRIC, PokemonType.NORMAL, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.HELIOPTILE, PokemonType.ELECTRIC, PokemonType.NORMAL, [ + [ BiomeId.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HELIOLISK, PokemonType.ELECTRIC, PokemonType.NORMAL, [ - [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.HELIOLISK, PokemonType.ELECTRIC, PokemonType.NORMAL, [ + [ BiomeId.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TYRUNT, PokemonType.ROCK, PokemonType.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.TYRUNT, PokemonType.ROCK, PokemonType.DRAGON, [ + [ BiomeId.WASTELAND, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.TYRANTRUM, PokemonType.ROCK, PokemonType.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.TYRANTRUM, PokemonType.ROCK, PokemonType.DRAGON, [ + [ BiomeId.WASTELAND, BiomePoolTier.SUPER_RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.AMAURA, PokemonType.ROCK, PokemonType.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.AMAURA, PokemonType.ROCK, PokemonType.ICE, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.AURORUS, PokemonType.ROCK, PokemonType.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.AURORUS, PokemonType.ROCK, PokemonType.ICE, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.SUPER_RARE ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SYLVEON, PokemonType.FAIRY, -1, [ - [ Biome.MEADOW, BiomePoolTier.SUPER_RARE ], - [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.SYLVEON, PokemonType.FAIRY, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.SUPER_RARE ], + [ BiomeId.MEADOW, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HAWLUCHA, PokemonType.FIGHTING, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.HAWLUCHA, PokemonType.FIGHTING, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.RARE ], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.DEDENNE, PokemonType.ELECTRIC, PokemonType.FAIRY, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + [ SpeciesId.DEDENNE, PokemonType.ELECTRIC, PokemonType.FAIRY, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ], + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.CARBINK, PokemonType.ROCK, PokemonType.FAIRY, [ - [ Biome.CAVE, BiomePoolTier.RARE ], - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.CARBINK, PokemonType.ROCK, PokemonType.FAIRY, [ + [ BiomeId.CAVE, BiomePoolTier.RARE ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.GOOMY, PokemonType.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.GOOMY, PokemonType.DRAGON, -1, [ + [ BiomeId.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SLIGGOO, PokemonType.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SLIGGOO, PokemonType.DRAGON, -1, [ + [ BiomeId.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GOODRA, PokemonType.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.GOODRA, PokemonType.DRAGON, -1, [ + [ BiomeId.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.KLEFKI, PokemonType.STEEL, PokemonType.FAIRY, [ - [ Biome.FACTORY, BiomePoolTier.UNCOMMON ], - [ Biome.FACTORY, BiomePoolTier.BOSS ] + [ SpeciesId.KLEFKI, PokemonType.STEEL, PokemonType.FAIRY, [ + [ BiomeId.FACTORY, BiomePoolTier.UNCOMMON ], + [ BiomeId.FACTORY, BiomePoolTier.BOSS ] ] ], - [ Species.PHANTUMP, PokemonType.GHOST, PokemonType.GRASS, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] + [ SpeciesId.PHANTUMP, PokemonType.GHOST, PokemonType.GRASS, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ] ] ], - [ Species.TREVENANT, PokemonType.GHOST, PokemonType.GRASS, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + [ SpeciesId.TREVENANT, PokemonType.GHOST, PokemonType.GRASS, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.PUMPKABOO, PokemonType.GHOST, PokemonType.GRASS, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] + [ SpeciesId.PUMPKABOO, PokemonType.GHOST, PokemonType.GRASS, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ] ] ], - [ Species.GOURGEIST, PokemonType.GHOST, PokemonType.GRASS, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + [ SpeciesId.GOURGEIST, PokemonType.GHOST, PokemonType.GRASS, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.BERGMITE, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.BERGMITE, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.AVALUGG, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.AVALUGG, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.NOIBAT, PokemonType.FLYING, PokemonType.DRAGON, [ - [ Biome.CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.NOIBAT, PokemonType.FLYING, PokemonType.DRAGON, [ + [ BiomeId.CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.NOIVERN, PokemonType.FLYING, PokemonType.DRAGON, [ - [ Biome.CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.NOIVERN, PokemonType.FLYING, PokemonType.DRAGON, [ + [ BiomeId.CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.XERNEAS, PokemonType.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.XERNEAS, PokemonType.FAIRY, -1, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.YVELTAL, PokemonType.DARK, PokemonType.FLYING, [ - [ Biome.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.YVELTAL, PokemonType.DARK, PokemonType.FLYING, [ + [ BiomeId.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.ZYGARDE, PokemonType.DRAGON, PokemonType.GROUND, [ - [ Biome.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.ZYGARDE, PokemonType.DRAGON, PokemonType.GROUND, [ + [ BiomeId.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.DIANCIE, PokemonType.ROCK, PokemonType.FAIRY, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.ULTRA_RARE ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.DIANCIE, PokemonType.ROCK, PokemonType.FAIRY, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.HOOPA, PokemonType.PSYCHIC, PokemonType.GHOST, [ - [ Biome.TEMPLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.HOOPA, PokemonType.PSYCHIC, PokemonType.GHOST, [ + [ BiomeId.TEMPLE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.VOLCANION, PokemonType.FIRE, PokemonType.WATER, [ - [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.VOLCANION, PokemonType.FIRE, PokemonType.WATER, [ + [ BiomeId.VOLCANO, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.ROWLET, PokemonType.GRASS, PokemonType.FLYING, [ - [ Biome.FOREST, BiomePoolTier.RARE ] + [ SpeciesId.ROWLET, PokemonType.GRASS, PokemonType.FLYING, [ + [ BiomeId.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.DARTRIX, PokemonType.GRASS, PokemonType.FLYING, [ - [ Biome.FOREST, BiomePoolTier.RARE ] + [ SpeciesId.DARTRIX, PokemonType.GRASS, PokemonType.FLYING, [ + [ BiomeId.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.DECIDUEYE, PokemonType.GRASS, PokemonType.GHOST, [ - [ Biome.FOREST, BiomePoolTier.RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.DECIDUEYE, PokemonType.GRASS, PokemonType.GHOST, [ + [ BiomeId.FOREST, BiomePoolTier.RARE ], + [ BiomeId.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.LITTEN, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.LITTEN, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.TORRACAT, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.TORRACAT, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.INCINEROAR, PokemonType.FIRE, PokemonType.DARK, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.INCINEROAR, PokemonType.FIRE, PokemonType.DARK, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.POPPLIO, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.RARE ] + [ SpeciesId.POPPLIO, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.RARE ] ] ], - [ Species.BRIONNE, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.RARE ] + [ SpeciesId.BRIONNE, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.RARE ] ] ], - [ Species.PRIMARINA, PokemonType.WATER, PokemonType.FAIRY, [ - [ Biome.SEA, BiomePoolTier.RARE ], - [ Biome.SEA, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.PRIMARINA, PokemonType.WATER, PokemonType.FAIRY, [ + [ BiomeId.SEA, BiomePoolTier.RARE ], + [ BiomeId.SEA, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.PIKIPEK, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.JUNGLE, BiomePoolTier.COMMON ] + [ SpeciesId.PIKIPEK, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.JUNGLE, BiomePoolTier.COMMON ] ] ], - [ Species.TRUMBEAK, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.JUNGLE, BiomePoolTier.COMMON ] + [ SpeciesId.TRUMBEAK, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.JUNGLE, BiomePoolTier.COMMON ] ] ], - [ Species.TOUCANNON, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.JUNGLE, BiomePoolTier.COMMON ], - [ Biome.JUNGLE, BiomePoolTier.BOSS ] + [ SpeciesId.TOUCANNON, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.JUNGLE, BiomePoolTier.COMMON ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.YUNGOOS, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.YUNGOOS, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GUMSHOOS, PokemonType.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.GUMSHOOS, PokemonType.NORMAL, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GRUBBIN, PokemonType.BUG, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + [ SpeciesId.GRUBBIN, PokemonType.BUG, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.CHARJABUG, PokemonType.BUG, PokemonType.ELECTRIC, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + [ SpeciesId.CHARJABUG, PokemonType.BUG, PokemonType.ELECTRIC, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.VIKAVOLT, PokemonType.BUG, PokemonType.ELECTRIC, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + [ SpeciesId.VIKAVOLT, PokemonType.BUG, PokemonType.ELECTRIC, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.CRABRAWLER, PokemonType.FIGHTING, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.CRABRAWLER, PokemonType.FIGHTING, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.CRABOMINABLE, PokemonType.FIGHTING, PokemonType.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.CRABOMINABLE, PokemonType.FIGHTING, PokemonType.ICE, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.ORICORIO, PokemonType.FIRE, PokemonType.FLYING, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.ISLAND, BiomePoolTier.BOSS ] + [ SpeciesId.ORICORIO, PokemonType.FIRE, PokemonType.FLYING, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ], + [ BiomeId.ISLAND, BiomePoolTier.COMMON ], + [ BiomeId.ISLAND, BiomePoolTier.BOSS ] ] ], - [ Species.CUTIEFLY, PokemonType.BUG, PokemonType.FAIRY, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.CUTIEFLY, PokemonType.BUG, PokemonType.FAIRY, [ + [ BiomeId.MEADOW, BiomePoolTier.COMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.RIBOMBEE, PokemonType.BUG, PokemonType.FAIRY, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ], - [ Biome.MEADOW, BiomePoolTier.BOSS ], - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.RIBOMBEE, PokemonType.BUG, PokemonType.FAIRY, [ + [ BiomeId.MEADOW, BiomePoolTier.COMMON ], + [ BiomeId.MEADOW, BiomePoolTier.BOSS ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.ROCKRUFF, PokemonType.ROCK, -1, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], - [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.CAVE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ] + [ SpeciesId.ROCKRUFF, PokemonType.ROCK, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ BiomeId.CAVE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ] ] ], - [ Species.LYCANROC, PokemonType.ROCK, -1, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], - [ Biome.PLAINS, BiomePoolTier.BOSS_RARE, TimeOfDay.DAY ], - [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE, TimeOfDay.NIGHT ], - [ Biome.CAVE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], - [ Biome.CAVE, BiomePoolTier.BOSS_RARE, TimeOfDay.DUSK ] + [ SpeciesId.LYCANROC, PokemonType.ROCK, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], + [ BiomeId.PLAINS, BiomePoolTier.BOSS_RARE, TimeOfDay.DAY ], + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ BiomeId.FOREST, BiomePoolTier.BOSS_RARE, TimeOfDay.NIGHT ], + [ BiomeId.CAVE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], + [ BiomeId.CAVE, BiomePoolTier.BOSS_RARE, TimeOfDay.DUSK ] ] ], - [ Species.WISHIWASHI, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.UNCOMMON ], - [ Biome.LAKE, BiomePoolTier.BOSS ] + [ SpeciesId.WISHIWASHI, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.UNCOMMON ], + [ BiomeId.LAKE, BiomePoolTier.BOSS ] ] ], - [ Species.MAREANIE, PokemonType.POISON, PokemonType.WATER, [ - [ Biome.BEACH, BiomePoolTier.COMMON ], - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ] + [ SpeciesId.MAREANIE, PokemonType.POISON, PokemonType.WATER, [ + [ BiomeId.BEACH, BiomePoolTier.COMMON ], + [ BiomeId.SWAMP, BiomePoolTier.UNCOMMON ] ] ], - [ Species.TOXAPEX, PokemonType.POISON, PokemonType.WATER, [ - [ Biome.BEACH, BiomePoolTier.COMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ], - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.BOSS ] + [ SpeciesId.TOXAPEX, PokemonType.POISON, PokemonType.WATER, [ + [ BiomeId.BEACH, BiomePoolTier.COMMON ], + [ BiomeId.BEACH, BiomePoolTier.BOSS ], + [ BiomeId.SWAMP, BiomePoolTier.UNCOMMON ], + [ BiomeId.SWAMP, BiomePoolTier.BOSS ] ] ], - [ Species.MUDBRAY, PokemonType.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON ] + [ SpeciesId.MUDBRAY, PokemonType.GROUND, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.COMMON ] ] ], - [ Species.MUDSDALE, PokemonType.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.BADLANDS, BiomePoolTier.BOSS ] + [ SpeciesId.MUDSDALE, PokemonType.GROUND, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.COMMON ], + [ BiomeId.BADLANDS, BiomePoolTier.BOSS ] ] ], - [ Species.DEWPIDER, PokemonType.WATER, PokemonType.BUG, [ - [ Biome.LAKE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.DEWPIDER, PokemonType.WATER, PokemonType.BUG, [ + [ BiomeId.LAKE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ARAQUANID, PokemonType.WATER, PokemonType.BUG, [ - [ Biome.LAKE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.LAKE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.ARAQUANID, PokemonType.WATER, PokemonType.BUG, [ + [ BiomeId.LAKE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.LAKE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.FOMANTIS, PokemonType.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.FOMANTIS, PokemonType.GRASS, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON ], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.LURANTIS, PokemonType.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], - [ Biome.JUNGLE, BiomePoolTier.BOSS ] + [ SpeciesId.LURANTIS, PokemonType.GRASS, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON ], + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS ], + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.MORELULL, PokemonType.GRASS, PokemonType.FAIRY, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.MORELULL, PokemonType.GRASS, PokemonType.FAIRY, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.SHIINOTIC, PokemonType.GRASS, PokemonType.FAIRY, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.SHIINOTIC, PokemonType.GRASS, PokemonType.FAIRY, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.SALANDIT, PokemonType.POISON, PokemonType.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.COMMON ] + [ SpeciesId.SALANDIT, PokemonType.POISON, PokemonType.FIRE, [ + [ BiomeId.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.SALAZZLE, PokemonType.POISON, PokemonType.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.COMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] + [ SpeciesId.SALAZZLE, PokemonType.POISON, PokemonType.FIRE, [ + [ BiomeId.VOLCANO, BiomePoolTier.COMMON ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.STUFFUL, PokemonType.NORMAL, PokemonType.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.COMMON ] + [ SpeciesId.STUFFUL, PokemonType.NORMAL, PokemonType.FIGHTING, [ + [ BiomeId.DOJO, BiomePoolTier.COMMON ] ] ], - [ Species.BEWEAR, PokemonType.NORMAL, PokemonType.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.COMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ] + [ SpeciesId.BEWEAR, PokemonType.NORMAL, PokemonType.FIGHTING, [ + [ BiomeId.DOJO, BiomePoolTier.COMMON ], + [ BiomeId.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.BOUNSWEET, PokemonType.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.BOUNSWEET, PokemonType.GRASS, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.STEENEE, PokemonType.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.STEENEE, PokemonType.GRASS, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TSAREENA, PokemonType.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.TSAREENA, PokemonType.GRASS, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.COMFEY, PokemonType.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.COMFEY, PokemonType.FAIRY, -1, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.ORANGURU, PokemonType.NORMAL, PokemonType.PSYCHIC, [ - [ Biome.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.ORANGURU, PokemonType.NORMAL, PokemonType.PSYCHIC, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PASSIMIAN, PokemonType.FIGHTING, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.PASSIMIAN, PokemonType.FIGHTING, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.WIMPOD, PokemonType.BUG, PokemonType.WATER, [ - [ Biome.CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.WIMPOD, PokemonType.BUG, PokemonType.WATER, [ + [ BiomeId.CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GOLISOPOD, PokemonType.BUG, PokemonType.WATER, [ - [ Biome.CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.GOLISOPOD, PokemonType.BUG, PokemonType.WATER, [ + [ BiomeId.CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.SANDYGAST, PokemonType.GHOST, PokemonType.GROUND, [ - [ Biome.BEACH, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SANDYGAST, PokemonType.GHOST, PokemonType.GROUND, [ + [ BiomeId.BEACH, BiomePoolTier.UNCOMMON ] ] ], - [ Species.PALOSSAND, PokemonType.GHOST, PokemonType.GROUND, [ - [ Biome.BEACH, BiomePoolTier.UNCOMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ] + [ SpeciesId.PALOSSAND, PokemonType.GHOST, PokemonType.GROUND, [ + [ BiomeId.BEACH, BiomePoolTier.UNCOMMON ], + [ BiomeId.BEACH, BiomePoolTier.BOSS ] ] ], - [ Species.PYUKUMUKU, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.PYUKUMUKU, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.TYPE_NULL, PokemonType.NORMAL, -1, [ - [ Biome.LABORATORY, BiomePoolTier.ULTRA_RARE ] + [ SpeciesId.TYPE_NULL, PokemonType.NORMAL, -1, [ + [ BiomeId.LABORATORY, BiomePoolTier.ULTRA_RARE ] ] ], - [ Species.SILVALLY, PokemonType.NORMAL, -1, [ - [ Biome.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.SILVALLY, PokemonType.NORMAL, -1, [ + [ BiomeId.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.MINIOR, PokemonType.ROCK, PokemonType.FLYING, [ - [ Biome.SPACE, BiomePoolTier.COMMON ], - [ Biome.SPACE, BiomePoolTier.BOSS ] + [ SpeciesId.MINIOR, PokemonType.ROCK, PokemonType.FLYING, [ + [ BiomeId.SPACE, BiomePoolTier.COMMON ], + [ BiomeId.SPACE, BiomePoolTier.BOSS ] ] ], - [ Species.KOMALA, PokemonType.NORMAL, -1, [ - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.KOMALA, PokemonType.NORMAL, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TURTONATOR, PokemonType.FIRE, PokemonType.DRAGON, [ - [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] + [ SpeciesId.TURTONATOR, PokemonType.FIRE, PokemonType.DRAGON, [ + [ BiomeId.VOLCANO, BiomePoolTier.UNCOMMON ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.TOGEDEMARU, PokemonType.ELECTRIC, PokemonType.STEEL, [ - [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + [ SpeciesId.TOGEDEMARU, PokemonType.ELECTRIC, PokemonType.STEEL, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.UNCOMMON ], + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.MIMIKYU, PokemonType.GHOST, PokemonType.FAIRY, [ - [ Biome.GRAVEYARD, BiomePoolTier.RARE ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + [ SpeciesId.MIMIKYU, PokemonType.GHOST, PokemonType.FAIRY, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.RARE ], + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.BRUXISH, PokemonType.WATER, PokemonType.PSYCHIC, [ - [ Biome.ISLAND, BiomePoolTier.UNCOMMON ], - [ Biome.ISLAND, BiomePoolTier.BOSS ] + [ SpeciesId.BRUXISH, PokemonType.WATER, PokemonType.PSYCHIC, [ + [ BiomeId.ISLAND, BiomePoolTier.UNCOMMON ], + [ BiomeId.ISLAND, BiomePoolTier.BOSS ] ] ], - [ Species.DRAMPA, PokemonType.NORMAL, PokemonType.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ], - [ Biome.WASTELAND, BiomePoolTier.BOSS ] + [ SpeciesId.DRAMPA, PokemonType.NORMAL, PokemonType.DRAGON, [ + [ BiomeId.WASTELAND, BiomePoolTier.UNCOMMON ], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS ] ] ], - [ Species.DHELMISE, PokemonType.GHOST, PokemonType.GRASS, [ - [ Biome.SEABED, BiomePoolTier.RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.DHELMISE, PokemonType.GHOST, PokemonType.GRASS, [ + [ BiomeId.SEABED, BiomePoolTier.RARE ], + [ BiomeId.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.JANGMO_O, PokemonType.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.JANGMO_O, PokemonType.DRAGON, -1, [ + [ BiomeId.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HAKAMO_O, PokemonType.DRAGON, PokemonType.FIGHTING, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.HAKAMO_O, PokemonType.DRAGON, PokemonType.FIGHTING, [ + [ BiomeId.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.KOMMO_O, PokemonType.DRAGON, PokemonType.FIGHTING, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.KOMMO_O, PokemonType.DRAGON, PokemonType.FIGHTING, [ + [ BiomeId.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TAPU_KOKO, PokemonType.ELECTRIC, PokemonType.FAIRY, [ - [ Biome.TEMPLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.TAPU_KOKO, PokemonType.ELECTRIC, PokemonType.FAIRY, [ + [ BiomeId.TEMPLE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.TAPU_LELE, PokemonType.PSYCHIC, PokemonType.FAIRY, [ - [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.TAPU_LELE, PokemonType.PSYCHIC, PokemonType.FAIRY, [ + [ BiomeId.JUNGLE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.TAPU_BULU, PokemonType.GRASS, PokemonType.FAIRY, [ - [ Biome.DESERT, BiomePoolTier.ULTRA_RARE ], - [ Biome.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.TAPU_BULU, PokemonType.GRASS, PokemonType.FAIRY, [ + [ BiomeId.DESERT, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.TAPU_FINI, PokemonType.WATER, PokemonType.FAIRY, [ - [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ], - [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.TAPU_FINI, PokemonType.WATER, PokemonType.FAIRY, [ + [ BiomeId.BEACH, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.COSMOG, PokemonType.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.ULTRA_RARE ] + [ SpeciesId.COSMOG, PokemonType.PSYCHIC, -1, [ + [ BiomeId.SPACE, BiomePoolTier.ULTRA_RARE ] ] ], - [ Species.COSMOEM, PokemonType.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.ULTRA_RARE ] + [ SpeciesId.COSMOEM, PokemonType.PSYCHIC, -1, [ + [ BiomeId.SPACE, BiomePoolTier.ULTRA_RARE ] ] ], - [ Species.SOLGALEO, PokemonType.PSYCHIC, PokemonType.STEEL, [ - [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE, TimeOfDay.DAY ] + [ SpeciesId.SOLGALEO, PokemonType.PSYCHIC, PokemonType.STEEL, [ + [ BiomeId.SPACE, BiomePoolTier.BOSS_ULTRA_RARE, TimeOfDay.DAY ] ] ], - [ Species.LUNALA, PokemonType.PSYCHIC, PokemonType.GHOST, [ - [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE, TimeOfDay.NIGHT ] + [ SpeciesId.LUNALA, PokemonType.PSYCHIC, PokemonType.GHOST, [ + [ BiomeId.SPACE, BiomePoolTier.BOSS_ULTRA_RARE, TimeOfDay.NIGHT ] ] ], - [ Species.NIHILEGO, PokemonType.ROCK, PokemonType.POISON, [ - [ Biome.SEABED, BiomePoolTier.ULTRA_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.NIHILEGO, PokemonType.ROCK, PokemonType.POISON, [ + [ BiomeId.SEABED, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.SEABED, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.BUZZWOLE, PokemonType.BUG, PokemonType.FIGHTING, [ - [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.BUZZWOLE, PokemonType.BUG, PokemonType.FIGHTING, [ + [ BiomeId.JUNGLE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.PHEROMOSA, PokemonType.BUG, PokemonType.FIGHTING, [ - [ Biome.DESERT, BiomePoolTier.ULTRA_RARE ], - [ Biome.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.PHEROMOSA, PokemonType.BUG, PokemonType.FIGHTING, [ + [ BiomeId.DESERT, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.XURKITREE, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.XURKITREE, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.CELESTEELA, PokemonType.STEEL, PokemonType.FLYING, [ - [ Biome.SPACE, BiomePoolTier.ULTRA_RARE ], - [ Biome.SPACE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.CELESTEELA, PokemonType.STEEL, PokemonType.FLYING, [ + [ BiomeId.SPACE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.SPACE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.KARTANA, PokemonType.GRASS, PokemonType.STEEL, [ - [ Biome.FOREST, BiomePoolTier.ULTRA_RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.KARTANA, PokemonType.GRASS, PokemonType.STEEL, [ + [ BiomeId.FOREST, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.FOREST, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.GUZZLORD, PokemonType.DARK, PokemonType.DRAGON, [ - [ Biome.SLUM, BiomePoolTier.ULTRA_RARE ], - [ Biome.SLUM, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.GUZZLORD, PokemonType.DARK, PokemonType.DRAGON, [ + [ BiomeId.SLUM, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.SLUM, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.NECROZMA, PokemonType.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.NECROZMA, PokemonType.PSYCHIC, -1, [ + [ BiomeId.SPACE, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.MAGEARNA, PokemonType.STEEL, PokemonType.FAIRY, [ - [ Biome.FACTORY, BiomePoolTier.ULTRA_RARE ], - [ Biome.FACTORY, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.MAGEARNA, PokemonType.STEEL, PokemonType.FAIRY, [ + [ BiomeId.FACTORY, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.FACTORY, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.MARSHADOW, PokemonType.FIGHTING, PokemonType.GHOST, [ - [ Biome.GRAVEYARD, BiomePoolTier.ULTRA_RARE ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.MARSHADOW, PokemonType.FIGHTING, PokemonType.GHOST, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.POIPOLE, PokemonType.POISON, -1, [ - [ Biome.SWAMP, BiomePoolTier.ULTRA_RARE ] + [ SpeciesId.POIPOLE, PokemonType.POISON, -1, [ + [ BiomeId.SWAMP, BiomePoolTier.ULTRA_RARE ] ] ], - [ Species.NAGANADEL, PokemonType.POISON, PokemonType.DRAGON, [ - [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.NAGANADEL, PokemonType.POISON, PokemonType.DRAGON, [ + [ BiomeId.SWAMP, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.STAKATAKA, PokemonType.ROCK, PokemonType.STEEL, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.ULTRA_RARE ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.STAKATAKA, PokemonType.ROCK, PokemonType.STEEL, [ + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.BLACEPHALON, PokemonType.FIRE, PokemonType.GHOST, [ - [ Biome.ISLAND, BiomePoolTier.ULTRA_RARE ], - [ Biome.ISLAND, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.BLACEPHALON, PokemonType.FIRE, PokemonType.GHOST, [ + [ BiomeId.ISLAND, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.ISLAND, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.ZERAORA, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.ZERAORA, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.MELTAN, PokemonType.STEEL, -1, [ ] + [ SpeciesId.MELTAN, PokemonType.STEEL, -1, [ ] ], - [ Species.MELMETAL, PokemonType.STEEL, -1, [ ] + [ SpeciesId.MELMETAL, PokemonType.STEEL, -1, [ ] ], - [ Species.GROOKEY, PokemonType.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ] + [ SpeciesId.GROOKEY, PokemonType.GRASS, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.THWACKEY, PokemonType.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ] + [ SpeciesId.THWACKEY, PokemonType.GRASS, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.RILLABOOM, PokemonType.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.RILLABOOM, PokemonType.GRASS, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SCORBUNNY, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.SCORBUNNY, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.RABOOT, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.RABOOT, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.CINDERACE, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.CINDERACE, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SOBBLE, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] + [ SpeciesId.SOBBLE, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.DRIZZILE, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] + [ SpeciesId.DRIZZILE, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.INTELEON, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.INTELEON, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.RARE ], + [ BiomeId.LAKE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SKWOVET, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SKWOVET, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GREEDENT, PokemonType.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.GREEDENT, PokemonType.NORMAL, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ROOKIDEE, PokemonType.FLYING, -1, [ - [ Biome.TOWN, BiomePoolTier.RARE ], - [ Biome.PLAINS, BiomePoolTier.RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.ROOKIDEE, PokemonType.FLYING, -1, [ + [ BiomeId.TOWN, BiomePoolTier.RARE ], + [ BiomeId.PLAINS, BiomePoolTier.RARE ], + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CORVISQUIRE, PokemonType.FLYING, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.CORVISQUIRE, PokemonType.FLYING, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.RARE ], + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CORVIKNIGHT, PokemonType.FLYING, PokemonType.STEEL, [ - [ Biome.PLAINS, BiomePoolTier.RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.CORVIKNIGHT, PokemonType.FLYING, PokemonType.STEEL, [ + [ BiomeId.PLAINS, BiomePoolTier.RARE ], + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BLIPBUG, PokemonType.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.BLIPBUG, PokemonType.BUG, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.DOTTLER, PokemonType.BUG, PokemonType.PSYCHIC, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.DOTTLER, PokemonType.BUG, PokemonType.PSYCHIC, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ORBEETLE, PokemonType.BUG, PokemonType.PSYCHIC, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.ORBEETLE, PokemonType.BUG, PokemonType.PSYCHIC, [ + [ BiomeId.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.NICKIT, PokemonType.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ] + [ SpeciesId.NICKIT, PokemonType.DARK, -1, [ + [ BiomeId.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.THIEVUL, PokemonType.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] + [ SpeciesId.THIEVUL, PokemonType.DARK, -1, [ + [ BiomeId.ABYSS, BiomePoolTier.COMMON ], + [ BiomeId.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.GOSSIFLEUR, PokemonType.GRASS, -1, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ] + [ SpeciesId.GOSSIFLEUR, PokemonType.GRASS, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.COMMON ] ] ], - [ Species.ELDEGOSS, PokemonType.GRASS, -1, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ] + [ SpeciesId.ELDEGOSS, PokemonType.GRASS, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.COMMON ] ] ], - [ Species.WOOLOO, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.MEADOW, BiomePoolTier.COMMON ] + [ SpeciesId.WOOLOO, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON ], + [ BiomeId.MEADOW, BiomePoolTier.COMMON ] ] ], - [ Species.DUBWOOL, PokemonType.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ], - [ Biome.MEADOW, BiomePoolTier.BOSS ] + [ SpeciesId.DUBWOOL, PokemonType.NORMAL, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.COMMON ], + [ BiomeId.MEADOW, BiomePoolTier.BOSS ] ] ], - [ Species.CHEWTLE, PokemonType.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.COMMON ] + [ SpeciesId.CHEWTLE, PokemonType.WATER, -1, [ + [ BiomeId.LAKE, BiomePoolTier.COMMON ] ] ], - [ Species.DREDNAW, PokemonType.WATER, PokemonType.ROCK, [ - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.LAKE, BiomePoolTier.BOSS ] + [ SpeciesId.DREDNAW, PokemonType.WATER, PokemonType.ROCK, [ + [ BiomeId.LAKE, BiomePoolTier.COMMON ], + [ BiomeId.LAKE, BiomePoolTier.BOSS ] ] ], - [ Species.YAMPER, PokemonType.ELECTRIC, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.YAMPER, PokemonType.ELECTRIC, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BOLTUND, PokemonType.ELECTRIC, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.METROPOLIS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.BOLTUND, PokemonType.ELECTRIC, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.METROPOLIS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ROLYCOLY, PokemonType.ROCK, -1, [ - [ Biome.VOLCANO, BiomePoolTier.COMMON ] + [ SpeciesId.ROLYCOLY, PokemonType.ROCK, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.CARKOL, PokemonType.ROCK, PokemonType.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.COMMON ] + [ SpeciesId.CARKOL, PokemonType.ROCK, PokemonType.FIRE, [ + [ BiomeId.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.COALOSSAL, PokemonType.ROCK, PokemonType.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.COMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] + [ SpeciesId.COALOSSAL, PokemonType.ROCK, PokemonType.FIRE, [ + [ BiomeId.VOLCANO, BiomePoolTier.COMMON ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.APPLIN, PokemonType.GRASS, PokemonType.DRAGON, [ - [ Biome.MEADOW, BiomePoolTier.RARE ] + [ SpeciesId.APPLIN, PokemonType.GRASS, PokemonType.DRAGON, [ + [ BiomeId.MEADOW, BiomePoolTier.RARE ] ] ], - [ Species.FLAPPLE, PokemonType.GRASS, PokemonType.DRAGON, [ - [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.FLAPPLE, PokemonType.GRASS, PokemonType.DRAGON, [ + [ BiomeId.MEADOW, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.APPLETUN, PokemonType.GRASS, PokemonType.DRAGON, [ - [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.APPLETUN, PokemonType.GRASS, PokemonType.DRAGON, [ + [ BiomeId.MEADOW, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SILICOBRA, PokemonType.GROUND, -1, [ - [ Biome.DESERT, BiomePoolTier.COMMON ] + [ SpeciesId.SILICOBRA, PokemonType.GROUND, -1, [ + [ BiomeId.DESERT, BiomePoolTier.COMMON ] ] ], - [ Species.SANDACONDA, PokemonType.GROUND, -1, [ - [ Biome.DESERT, BiomePoolTier.COMMON ], - [ Biome.DESERT, BiomePoolTier.BOSS ] + [ SpeciesId.SANDACONDA, PokemonType.GROUND, -1, [ + [ BiomeId.DESERT, BiomePoolTier.COMMON ], + [ BiomeId.DESERT, BiomePoolTier.BOSS ] ] ], - [ Species.CRAMORANT, PokemonType.FLYING, PokemonType.WATER, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.CRAMORANT, PokemonType.FLYING, PokemonType.WATER, [ + [ BiomeId.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ARROKUDA, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.COMMON ] + [ SpeciesId.ARROKUDA, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.COMMON ] ] ], - [ Species.BARRASKEWDA, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.COMMON ], - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ SpeciesId.BARRASKEWDA, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.COMMON ], + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.TOXEL, PokemonType.ELECTRIC, PokemonType.POISON, [ ] + [ SpeciesId.TOXEL, PokemonType.ELECTRIC, PokemonType.POISON, [ ] ], - [ Species.TOXTRICITY, PokemonType.ELECTRIC, PokemonType.POISON, [ - [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SLUM, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.TOXTRICITY, PokemonType.ELECTRIC, PokemonType.POISON, [ + [ BiomeId.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SLUM, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SIZZLIPEDE, PokemonType.FIRE, PokemonType.BUG, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SIZZLIPEDE, PokemonType.FIRE, PokemonType.BUG, [ + [ BiomeId.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CENTISKORCH, PokemonType.FIRE, PokemonType.BUG, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.CENTISKORCH, PokemonType.FIRE, PokemonType.BUG, [ + [ BiomeId.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CLOBBOPUS, PokemonType.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.COMMON ] + [ SpeciesId.CLOBBOPUS, PokemonType.FIGHTING, -1, [ + [ BiomeId.DOJO, BiomePoolTier.COMMON ] ] ], - [ Species.GRAPPLOCT, PokemonType.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.COMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ] + [ SpeciesId.GRAPPLOCT, PokemonType.FIGHTING, -1, [ + [ BiomeId.DOJO, BiomePoolTier.COMMON ], + [ BiomeId.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.SINISTEA, PokemonType.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ] + [ SpeciesId.SINISTEA, PokemonType.GHOST, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.UNCOMMON ] ] ], - [ Species.POLTEAGEIST, PokemonType.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + [ SpeciesId.POLTEAGEIST, PokemonType.GHOST, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.UNCOMMON ], + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.HATENNA, PokemonType.PSYCHIC, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.HATENNA, PokemonType.PSYCHIC, -1, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.HATTREM, PokemonType.PSYCHIC, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.HATTREM, PokemonType.PSYCHIC, -1, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.HATTERENE, PokemonType.PSYCHIC, PokemonType.FAIRY, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.HATTERENE, PokemonType.PSYCHIC, PokemonType.FAIRY, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.IMPIDIMP, PokemonType.DARK, PokemonType.FAIRY, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ] + [ SpeciesId.IMPIDIMP, PokemonType.DARK, PokemonType.FAIRY, [ + [ BiomeId.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.MORGREM, PokemonType.DARK, PokemonType.FAIRY, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ] + [ SpeciesId.MORGREM, PokemonType.DARK, PokemonType.FAIRY, [ + [ BiomeId.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.GRIMMSNARL, PokemonType.DARK, PokemonType.FAIRY, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] + [ SpeciesId.GRIMMSNARL, PokemonType.DARK, PokemonType.FAIRY, [ + [ BiomeId.ABYSS, BiomePoolTier.COMMON ], + [ BiomeId.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.OBSTAGOON, PokemonType.DARK, PokemonType.NORMAL, [ - [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SLUM, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.OBSTAGOON, PokemonType.DARK, PokemonType.NORMAL, [ + [ BiomeId.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SLUM, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PERRSERKER, PokemonType.STEEL, -1, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE, TimeOfDay.DUSK ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_RARE, TimeOfDay.DUSK ] + [ SpeciesId.PERRSERKER, PokemonType.STEEL, -1, [ + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.RARE, TimeOfDay.DUSK ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.BOSS_RARE, TimeOfDay.DUSK ] ] ], - [ Species.CURSOLA, PokemonType.GHOST, -1, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.CURSOLA, PokemonType.GHOST, -1, [ + [ BiomeId.SEABED, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SIRFETCHD, PokemonType.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.SIRFETCHD, PokemonType.FIGHTING, -1, [ + [ BiomeId.DOJO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.MR_RIME, PokemonType.ICE, PokemonType.PSYCHIC, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.MR_RIME, PokemonType.ICE, PokemonType.PSYCHIC, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.RUNERIGUS, PokemonType.GROUND, PokemonType.GHOST, [ - [ Biome.RUINS, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.RUINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.RUNERIGUS, PokemonType.GROUND, PokemonType.GHOST, [ + [ BiomeId.RUINS, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.RUINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.MILCERY, PokemonType.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.MILCERY, PokemonType.FAIRY, -1, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.ALCREMIE, PokemonType.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.ALCREMIE, PokemonType.FAIRY, -1, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.FALINKS, PokemonType.FIGHTING, -1, [ - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], - [ Biome.JUNGLE, BiomePoolTier.BOSS ] + [ SpeciesId.FALINKS, PokemonType.FIGHTING, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.UNCOMMON ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.PINCURCHIN, PokemonType.ELECTRIC, -1, [ - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + [ SpeciesId.PINCURCHIN, PokemonType.ELECTRIC, -1, [ + [ BiomeId.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SNOM, PokemonType.ICE, PokemonType.BUG, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.SNOM, PokemonType.ICE, PokemonType.BUG, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.FROSMOTH, PokemonType.ICE, PokemonType.BUG, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.FROSMOTH, PokemonType.ICE, PokemonType.BUG, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.STONJOURNER, PokemonType.ROCK, -1, [ - [ Biome.RUINS, BiomePoolTier.RARE ] + [ SpeciesId.STONJOURNER, PokemonType.ROCK, -1, [ + [ BiomeId.RUINS, BiomePoolTier.RARE ] ] ], - [ Species.EISCUE, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] + [ SpeciesId.EISCUE, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.COMMON ] ] ], - [ Species.INDEEDEE, PokemonType.PSYCHIC, PokemonType.NORMAL, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.INDEEDEE, PokemonType.PSYCHIC, PokemonType.NORMAL, [ + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.MORPEKO, PokemonType.ELECTRIC, PokemonType.DARK, [ - [ Biome.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.MORPEKO, PokemonType.ELECTRIC, PokemonType.DARK, [ + [ BiomeId.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.CUFANT, PokemonType.STEEL, -1, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ] + [ SpeciesId.CUFANT, PokemonType.STEEL, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.UNCOMMON ] ] ], - [ Species.COPPERAJAH, PokemonType.STEEL, -1, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.BADLANDS, BiomePoolTier.BOSS ] + [ SpeciesId.COPPERAJAH, PokemonType.STEEL, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.UNCOMMON ], + [ BiomeId.BADLANDS, BiomePoolTier.BOSS ] ] ], - [ Species.DRACOZOLT, PokemonType.ELECTRIC, PokemonType.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.DRACOZOLT, PokemonType.ELECTRIC, PokemonType.DRAGON, [ + [ BiomeId.WASTELAND, BiomePoolTier.SUPER_RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ARCTOZOLT, PokemonType.ELECTRIC, PokemonType.ICE, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.ARCTOZOLT, PokemonType.ELECTRIC, PokemonType.ICE, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.DRACOVISH, PokemonType.WATER, PokemonType.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.DRACOVISH, PokemonType.WATER, PokemonType.DRAGON, [ + [ BiomeId.WASTELAND, BiomePoolTier.SUPER_RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ARCTOVISH, PokemonType.WATER, PokemonType.ICE, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.ARCTOVISH, PokemonType.WATER, PokemonType.ICE, [ + [ BiomeId.SEABED, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.DURALUDON, PokemonType.STEEL, PokemonType.DRAGON, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] + [ SpeciesId.DURALUDON, PokemonType.STEEL, PokemonType.DRAGON, [ + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.RARE ] ] ], - [ Species.DREEPY, PokemonType.DRAGON, PokemonType.GHOST, [ - [ Biome.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.DREEPY, PokemonType.DRAGON, PokemonType.GHOST, [ + [ BiomeId.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.DRAKLOAK, PokemonType.DRAGON, PokemonType.GHOST, [ - [ Biome.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.DRAKLOAK, PokemonType.DRAGON, PokemonType.GHOST, [ + [ BiomeId.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.DRAGAPULT, PokemonType.DRAGON, PokemonType.GHOST, [ - [ Biome.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.DRAGAPULT, PokemonType.DRAGON, PokemonType.GHOST, [ + [ BiomeId.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ZACIAN, PokemonType.FAIRY, -1, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.ZACIAN, PokemonType.FAIRY, -1, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.ZAMAZENTA, PokemonType.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.ZAMAZENTA, PokemonType.FIGHTING, -1, [ + [ BiomeId.DOJO, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.ETERNATUS, PokemonType.POISON, PokemonType.DRAGON, [ - [ Biome.END, BiomePoolTier.BOSS ] + [ SpeciesId.ETERNATUS, PokemonType.POISON, PokemonType.DRAGON, [ + [ BiomeId.END, BiomePoolTier.BOSS ] ] ], - [ Species.KUBFU, PokemonType.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.ULTRA_RARE ] + [ SpeciesId.KUBFU, PokemonType.FIGHTING, -1, [ + [ BiomeId.DOJO, BiomePoolTier.ULTRA_RARE ] ] ], - [ Species.URSHIFU, PokemonType.FIGHTING, PokemonType.DARK, [ - [ Biome.DOJO, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.URSHIFU, PokemonType.FIGHTING, PokemonType.DARK, [ + [ BiomeId.DOJO, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.ZARUDE, PokemonType.DARK, PokemonType.GRASS, [ - [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.ZARUDE, PokemonType.DARK, PokemonType.GRASS, [ + [ BiomeId.JUNGLE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.REGIELEKI, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.REGIELEKI, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.REGIDRAGO, PokemonType.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.ULTRA_RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.REGIDRAGO, PokemonType.DRAGON, -1, [ + [ BiomeId.WASTELAND, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.GLASTRIER, PokemonType.ICE, -1, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.GLASTRIER, PokemonType.ICE, -1, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.SPECTRIER, PokemonType.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.ULTRA_RARE ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.SPECTRIER, PokemonType.GHOST, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.CALYREX, PokemonType.PSYCHIC, PokemonType.GRASS, [ - [ Biome.FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.CALYREX, PokemonType.PSYCHIC, PokemonType.GRASS, [ + [ BiomeId.FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.WYRDEER, PokemonType.NORMAL, PokemonType.PSYCHIC, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.WYRDEER, PokemonType.NORMAL, PokemonType.PSYCHIC, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.KLEAVOR, PokemonType.BUG, PokemonType.ROCK, [ - [ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.KLEAVOR, PokemonType.BUG, PokemonType.ROCK, [ + [ BiomeId.JUNGLE, BiomePoolTier.SUPER_RARE ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.URSALUNA, PokemonType.GROUND, PokemonType.NORMAL, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS ] + [ SpeciesId.URSALUNA, PokemonType.GROUND, PokemonType.NORMAL, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS ] ] ], - [ Species.BASCULEGION, PokemonType.WATER, PokemonType.GHOST, [ - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.BASCULEGION, PokemonType.WATER, PokemonType.GHOST, [ + [ BiomeId.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SNEASLER, PokemonType.FIGHTING, PokemonType.POISON, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SNEASLER, PokemonType.FIGHTING, PokemonType.POISON, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.OVERQWIL, PokemonType.DARK, PokemonType.POISON, [ - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.OVERQWIL, PokemonType.DARK, PokemonType.POISON, [ + [ BiomeId.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ENAMORUS, PokemonType.FAIRY, PokemonType.FLYING, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.ULTRA_RARE ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.ENAMORUS, PokemonType.FAIRY, PokemonType.FLYING, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.SPRIGATITO, PokemonType.GRASS, -1, [ - [ Biome.MEADOW, BiomePoolTier.RARE ] + [ SpeciesId.SPRIGATITO, PokemonType.GRASS, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.RARE ] ] ], - [ Species.FLORAGATO, PokemonType.GRASS, -1, [ - [ Biome.MEADOW, BiomePoolTier.RARE ] + [ SpeciesId.FLORAGATO, PokemonType.GRASS, -1, [ + [ BiomeId.MEADOW, BiomePoolTier.RARE ] ] ], - [ Species.MEOWSCARADA, PokemonType.GRASS, PokemonType.DARK, [ - [ Biome.MEADOW, BiomePoolTier.RARE ], - [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.MEOWSCARADA, PokemonType.GRASS, PokemonType.DARK, [ + [ BiomeId.MEADOW, BiomePoolTier.RARE ], + [ BiomeId.MEADOW, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.FUECOCO, PokemonType.FIRE, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.RARE ] + [ SpeciesId.FUECOCO, PokemonType.FIRE, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.RARE ] ] ], - [ Species.CROCALOR, PokemonType.FIRE, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.RARE ] + [ SpeciesId.CROCALOR, PokemonType.FIRE, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.RARE ] ] ], - [ Species.SKELEDIRGE, PokemonType.FIRE, PokemonType.GHOST, [ - [ Biome.GRAVEYARD, BiomePoolTier.RARE ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.SKELEDIRGE, PokemonType.FIRE, PokemonType.GHOST, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.RARE ], + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.QUAXLY, PokemonType.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.RARE ] + [ SpeciesId.QUAXLY, PokemonType.WATER, -1, [ + [ BiomeId.BEACH, BiomePoolTier.RARE ] ] ], - [ Species.QUAXWELL, PokemonType.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.RARE ] + [ SpeciesId.QUAXWELL, PokemonType.WATER, -1, [ + [ BiomeId.BEACH, BiomePoolTier.RARE ] ] ], - [ Species.QUAQUAVAL, PokemonType.WATER, PokemonType.FIGHTING, [ - [ Biome.BEACH, BiomePoolTier.RARE ], - [ Biome.BEACH, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.QUAQUAVAL, PokemonType.WATER, PokemonType.FIGHTING, [ + [ BiomeId.BEACH, BiomePoolTier.RARE ], + [ BiomeId.BEACH, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.LECHONK, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.COMMON ] + [ SpeciesId.LECHONK, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.COMMON ], + [ BiomeId.PLAINS, BiomePoolTier.COMMON ] ] ], - [ Species.OINKOLOGNE, PokemonType.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.BOSS ] + [ SpeciesId.OINKOLOGNE, PokemonType.NORMAL, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.COMMON ], + [ BiomeId.PLAINS, BiomePoolTier.BOSS ] ] ], - [ Species.TAROUNTULA, PokemonType.BUG, -1, [ - [ Biome.FOREST, BiomePoolTier.COMMON ] + [ SpeciesId.TAROUNTULA, PokemonType.BUG, -1, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON ] ] ], - [ Species.SPIDOPS, PokemonType.BUG, -1, [ - [ Biome.FOREST, BiomePoolTier.COMMON ], - [ Biome.FOREST, BiomePoolTier.BOSS ] + [ SpeciesId.SPIDOPS, PokemonType.BUG, -1, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON ], + [ BiomeId.FOREST, BiomePoolTier.BOSS ] ] ], - [ Species.NYMBLE, PokemonType.BUG, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], - [ Biome.FOREST, BiomePoolTier.COMMON ] + [ SpeciesId.NYMBLE, PokemonType.BUG, -1, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON ], + [ BiomeId.FOREST, BiomePoolTier.COMMON ] ] ], - [ Species.LOKIX, PokemonType.BUG, PokemonType.DARK, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ], - [ Biome.FOREST, BiomePoolTier.COMMON ], - [ Biome.FOREST, BiomePoolTier.BOSS ] + [ SpeciesId.LOKIX, PokemonType.BUG, PokemonType.DARK, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.COMMON ], + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS ], + [ BiomeId.FOREST, BiomePoolTier.COMMON ], + [ BiomeId.FOREST, BiomePoolTier.BOSS ] ] ], - [ Species.PAWMI, PokemonType.ELECTRIC, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + [ SpeciesId.PAWMI, PokemonType.ELECTRIC, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.PAWMO, PokemonType.ELECTRIC, PokemonType.FIGHTING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + [ SpeciesId.PAWMO, PokemonType.ELECTRIC, PokemonType.FIGHTING, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.PAWMOT, PokemonType.ELECTRIC, PokemonType.FIGHTING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.PLAINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + [ SpeciesId.PAWMOT, PokemonType.ELECTRIC, PokemonType.FIGHTING, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.PLAINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ], + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.TANDEMAUS, PokemonType.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.TANDEMAUS, PokemonType.NORMAL, -1, [ + [ BiomeId.TOWN, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.MAUSHOLD, PokemonType.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.METROPOLIS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.MAUSHOLD, PokemonType.NORMAL, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.METROPOLIS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.FIDOUGH, PokemonType.FAIRY, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON ], - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ] + [ SpeciesId.FIDOUGH, PokemonType.FAIRY, -1, [ + [ BiomeId.TOWN, BiomePoolTier.UNCOMMON ], + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON ] ] ], - [ Species.DACHSBUN, PokemonType.FAIRY, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.METROPOLIS, BiomePoolTier.BOSS ] + [ SpeciesId.DACHSBUN, PokemonType.FAIRY, -1, [ + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ BiomeId.METROPOLIS, BiomePoolTier.BOSS ] ] ], - [ Species.SMOLIV, PokemonType.GRASS, PokemonType.NORMAL, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SMOLIV, PokemonType.GRASS, PokemonType.NORMAL, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.DOLLIV, PokemonType.GRASS, PokemonType.NORMAL, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.DOLLIV, PokemonType.GRASS, PokemonType.NORMAL, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ARBOLIVA, PokemonType.GRASS, PokemonType.NORMAL, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.ARBOLIVA, PokemonType.GRASS, PokemonType.NORMAL, [ + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SQUAWKABILLY, PokemonType.NORMAL, PokemonType.FLYING, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.FOREST, BiomePoolTier.RARE ] + [ SpeciesId.SQUAWKABILLY, PokemonType.NORMAL, PokemonType.FLYING, [ + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ BiomeId.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.NACLI, PokemonType.ROCK, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.NACLI, PokemonType.ROCK, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ BiomeId.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.NACLSTACK, PokemonType.ROCK, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ] + [ SpeciesId.NACLSTACK, PokemonType.ROCK, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ BiomeId.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.GARGANACL, PokemonType.ROCK, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ], - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.GARGANACL, PokemonType.ROCK, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS ], + [ BiomeId.CAVE, BiomePoolTier.COMMON ], + [ BiomeId.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.CHARCADET, PokemonType.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] + [ SpeciesId.CHARCADET, PokemonType.FIRE, -1, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.ARMAROUGE, PokemonType.FIRE, PokemonType.PSYCHIC, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.ARMAROUGE, PokemonType.FIRE, PokemonType.PSYCHIC, [ + [ BiomeId.VOLCANO, BiomePoolTier.RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.CERULEDGE, PokemonType.FIRE, PokemonType.GHOST, [ - [ Biome.GRAVEYARD, BiomePoolTier.RARE ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.CERULEDGE, PokemonType.FIRE, PokemonType.GHOST, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.RARE ], + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.TADBULB, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + [ SpeciesId.TADBULB, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.BELLIBOLT, PokemonType.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + [ SpeciesId.BELLIBOLT, PokemonType.ELECTRIC, -1, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ], + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.WATTREL, PokemonType.ELECTRIC, PokemonType.FLYING, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ] + [ SpeciesId.WATTREL, PokemonType.ELECTRIC, PokemonType.FLYING, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON ] ] ], - [ Species.KILOWATTREL, PokemonType.ELECTRIC, PokemonType.FLYING, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ], - [ Biome.SEA, BiomePoolTier.BOSS ] + [ SpeciesId.KILOWATTREL, PokemonType.ELECTRIC, PokemonType.FLYING, [ + [ BiomeId.SEA, BiomePoolTier.UNCOMMON ], + [ BiomeId.SEA, BiomePoolTier.BOSS ] ] ], - [ Species.MASCHIFF, PokemonType.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ] + [ SpeciesId.MASCHIFF, PokemonType.DARK, -1, [ + [ BiomeId.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.MABOSSTIFF, PokemonType.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] + [ SpeciesId.MABOSSTIFF, PokemonType.DARK, -1, [ + [ BiomeId.ABYSS, BiomePoolTier.COMMON ], + [ BiomeId.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.SHROODLE, PokemonType.POISON, PokemonType.NORMAL, [ - [ Biome.FOREST, BiomePoolTier.COMMON ] + [ SpeciesId.SHROODLE, PokemonType.POISON, PokemonType.NORMAL, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON ] ] ], - [ Species.GRAFAIAI, PokemonType.POISON, PokemonType.NORMAL, [ - [ Biome.FOREST, BiomePoolTier.COMMON ], - [ Biome.FOREST, BiomePoolTier.BOSS ] + [ SpeciesId.GRAFAIAI, PokemonType.POISON, PokemonType.NORMAL, [ + [ BiomeId.FOREST, BiomePoolTier.COMMON ], + [ BiomeId.FOREST, BiomePoolTier.BOSS ] ] ], - [ Species.BRAMBLIN, PokemonType.GRASS, PokemonType.GHOST, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON ] + [ SpeciesId.BRAMBLIN, PokemonType.GRASS, PokemonType.GHOST, [ + [ BiomeId.DESERT, BiomePoolTier.UNCOMMON ] ] ], - [ Species.BRAMBLEGHAST, PokemonType.GRASS, PokemonType.GHOST, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON ], - [ Biome.DESERT, BiomePoolTier.BOSS ] + [ SpeciesId.BRAMBLEGHAST, PokemonType.GRASS, PokemonType.GHOST, [ + [ BiomeId.DESERT, BiomePoolTier.UNCOMMON ], + [ BiomeId.DESERT, BiomePoolTier.BOSS ] ] ], - [ Species.TOEDSCOOL, PokemonType.GROUND, PokemonType.GRASS, [ - [ Biome.FOREST, BiomePoolTier.RARE ] + [ SpeciesId.TOEDSCOOL, PokemonType.GROUND, PokemonType.GRASS, [ + [ BiomeId.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.TOEDSCRUEL, PokemonType.GROUND, PokemonType.GRASS, [ - [ Biome.FOREST, BiomePoolTier.RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.TOEDSCRUEL, PokemonType.GROUND, PokemonType.GRASS, [ + [ BiomeId.FOREST, BiomePoolTier.RARE ], + [ BiomeId.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.KLAWF, PokemonType.ROCK, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ] + [ SpeciesId.KLAWF, PokemonType.ROCK, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.RARE ] ] ], - [ Species.CAPSAKID, PokemonType.GRASS, -1, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.CAPSAKID, PokemonType.GRASS, -1, [ + [ BiomeId.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SCOVILLAIN, PokemonType.GRASS, PokemonType.FIRE, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.SCOVILLAIN, PokemonType.GRASS, PokemonType.FIRE, [ + [ BiomeId.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.RELLOR, PokemonType.BUG, -1, [ - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.RELLOR, PokemonType.BUG, -1, [ + [ BiomeId.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.RABSCA, PokemonType.BUG, PokemonType.PSYCHIC, [ - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.RABSCA, PokemonType.BUG, PokemonType.PSYCHIC, [ + [ BiomeId.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.FLITTLE, PokemonType.PSYCHIC, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.FLITTLE, PokemonType.PSYCHIC, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ESPATHRA, PokemonType.PSYCHIC, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.ESPATHRA, PokemonType.PSYCHIC, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TINKATINK, PokemonType.FAIRY, PokemonType.STEEL, [ - [ Biome.RUINS, BiomePoolTier.UNCOMMON ] + [ SpeciesId.TINKATINK, PokemonType.FAIRY, PokemonType.STEEL, [ + [ BiomeId.RUINS, BiomePoolTier.UNCOMMON ] ] ], - [ Species.TINKATUFF, PokemonType.FAIRY, PokemonType.STEEL, [ - [ Biome.RUINS, BiomePoolTier.UNCOMMON ] + [ SpeciesId.TINKATUFF, PokemonType.FAIRY, PokemonType.STEEL, [ + [ BiomeId.RUINS, BiomePoolTier.UNCOMMON ] ] ], - [ Species.TINKATON, PokemonType.FAIRY, PokemonType.STEEL, [ - [ Biome.RUINS, BiomePoolTier.UNCOMMON ], - [ Biome.RUINS, BiomePoolTier.BOSS ] + [ SpeciesId.TINKATON, PokemonType.FAIRY, PokemonType.STEEL, [ + [ BiomeId.RUINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.RUINS, BiomePoolTier.BOSS ] ] ], - [ Species.WIGLETT, PokemonType.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.COMMON ] + [ SpeciesId.WIGLETT, PokemonType.WATER, -1, [ + [ BiomeId.BEACH, BiomePoolTier.COMMON ] ] ], - [ Species.WUGTRIO, PokemonType.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.COMMON ] + [ SpeciesId.WUGTRIO, PokemonType.WATER, -1, [ + [ BiomeId.BEACH, BiomePoolTier.COMMON ] ] ], - [ Species.BOMBIRDIER, PokemonType.FLYING, PokemonType.DARK, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.BOMBIRDIER, PokemonType.FLYING, PokemonType.DARK, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.FINIZEN, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.FINIZEN, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.PALAFIN, PokemonType.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.PALAFIN, PokemonType.WATER, -1, [ + [ BiomeId.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VAROOM, PokemonType.STEEL, PokemonType.POISON, [ - [ Biome.METROPOLIS, BiomePoolTier.RARE ], - [ Biome.SLUM, BiomePoolTier.RARE ] + [ SpeciesId.VAROOM, PokemonType.STEEL, PokemonType.POISON, [ + [ BiomeId.METROPOLIS, BiomePoolTier.RARE ], + [ BiomeId.SLUM, BiomePoolTier.RARE ] ] ], - [ Species.REVAVROOM, PokemonType.STEEL, PokemonType.POISON, [ - [ Biome.METROPOLIS, BiomePoolTier.RARE ], - [ Biome.METROPOLIS, BiomePoolTier.BOSS_RARE ], - [ Biome.SLUM, BiomePoolTier.RARE ], - [ Biome.SLUM, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.REVAVROOM, PokemonType.STEEL, PokemonType.POISON, [ + [ BiomeId.METROPOLIS, BiomePoolTier.RARE ], + [ BiomeId.METROPOLIS, BiomePoolTier.BOSS_RARE ], + [ BiomeId.SLUM, BiomePoolTier.RARE ], + [ BiomeId.SLUM, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.CYCLIZAR, PokemonType.DRAGON, PokemonType.NORMAL, [ - [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ] + [ SpeciesId.CYCLIZAR, PokemonType.DRAGON, PokemonType.NORMAL, [ + [ BiomeId.WASTELAND, BiomePoolTier.UNCOMMON ] ] ], - [ Species.ORTHWORM, PokemonType.STEEL, -1, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON ] + [ SpeciesId.ORTHWORM, PokemonType.STEEL, -1, [ + [ BiomeId.DESERT, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GLIMMET, PokemonType.ROCK, PokemonType.POISON, [ - [ Biome.CAVE, BiomePoolTier.RARE ] + [ SpeciesId.GLIMMET, PokemonType.ROCK, PokemonType.POISON, [ + [ BiomeId.CAVE, BiomePoolTier.RARE ] ] ], - [ Species.GLIMMORA, PokemonType.ROCK, PokemonType.POISON, [ - [ Biome.CAVE, BiomePoolTier.RARE ], - [ Biome.CAVE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.GLIMMORA, PokemonType.ROCK, PokemonType.POISON, [ + [ BiomeId.CAVE, BiomePoolTier.RARE ], + [ BiomeId.CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GREAVARD, PokemonType.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] + [ SpeciesId.GREAVARD, PokemonType.GHOST, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ] ] ], - [ Species.HOUNDSTONE, PokemonType.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + [ SpeciesId.HOUNDSTONE, PokemonType.GHOST, -1, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ], + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.FLAMIGO, PokemonType.FLYING, PokemonType.FIGHTING, [ - [ Biome.LAKE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.FLAMIGO, PokemonType.FLYING, PokemonType.FIGHTING, [ + [ BiomeId.LAKE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CETODDLE, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] + [ SpeciesId.CETODDLE, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CETITAN, PokemonType.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ SpeciesId.CETITAN, PokemonType.ICE, -1, [ + [ BiomeId.ICE_CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.VELUZA, PokemonType.WATER, PokemonType.PSYCHIC, [ - [ Biome.SEABED, BiomePoolTier.COMMON ] + [ SpeciesId.VELUZA, PokemonType.WATER, PokemonType.PSYCHIC, [ + [ BiomeId.SEABED, BiomePoolTier.COMMON ] ] ], - [ Species.DONDOZO, PokemonType.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.UNCOMMON ], - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ SpeciesId.DONDOZO, PokemonType.WATER, -1, [ + [ BiomeId.SEABED, BiomePoolTier.UNCOMMON ], + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.TATSUGIRI, PokemonType.DRAGON, PokemonType.WATER, [ - [ Biome.BEACH, BiomePoolTier.RARE ] + [ SpeciesId.TATSUGIRI, PokemonType.DRAGON, PokemonType.WATER, [ + [ BiomeId.BEACH, BiomePoolTier.RARE ] ] ], - [ Species.ANNIHILAPE, PokemonType.FIGHTING, PokemonType.GHOST, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.DOJO, BiomePoolTier.COMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ] + [ SpeciesId.ANNIHILAPE, PokemonType.FIGHTING, PokemonType.GHOST, [ + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.DOJO, BiomePoolTier.COMMON ], + [ BiomeId.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.CLODSIRE, PokemonType.POISON, PokemonType.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.CLODSIRE, PokemonType.POISON, PokemonType.GROUND, [ + [ BiomeId.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.FARIGIRAF, PokemonType.NORMAL, PokemonType.PSYCHIC, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.FARIGIRAF, PokemonType.NORMAL, PokemonType.PSYCHIC, [ + [ BiomeId.TALL_GRASS, BiomePoolTier.RARE ], + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.DUDUNSPARCE, PokemonType.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], - [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.DUDUNSPARCE, PokemonType.NORMAL, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.SUPER_RARE ], + [ BiomeId.PLAINS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.KINGAMBIT, PokemonType.DARK, PokemonType.STEEL, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] + [ SpeciesId.KINGAMBIT, PokemonType.DARK, PokemonType.STEEL, [ + [ BiomeId.ABYSS, BiomePoolTier.COMMON ], + [ BiomeId.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.GREAT_TUSK, PokemonType.GROUND, PokemonType.FIGHTING, [ - [ Biome.END, BiomePoolTier.COMMON ] + [ SpeciesId.GREAT_TUSK, PokemonType.GROUND, PokemonType.FIGHTING, [ + [ BiomeId.END, BiomePoolTier.COMMON ] ] ], - [ Species.SCREAM_TAIL, PokemonType.FAIRY, PokemonType.PSYCHIC, [ - [ Biome.END, BiomePoolTier.COMMON ] + [ SpeciesId.SCREAM_TAIL, PokemonType.FAIRY, PokemonType.PSYCHIC, [ + [ BiomeId.END, BiomePoolTier.COMMON ] ] ], - [ Species.BRUTE_BONNET, PokemonType.GRASS, PokemonType.DARK, [ - [ Biome.END, BiomePoolTier.COMMON ] + [ SpeciesId.BRUTE_BONNET, PokemonType.GRASS, PokemonType.DARK, [ + [ BiomeId.END, BiomePoolTier.COMMON ] ] ], - [ Species.FLUTTER_MANE, PokemonType.GHOST, PokemonType.FAIRY, [ - [ Biome.END, BiomePoolTier.COMMON ] + [ SpeciesId.FLUTTER_MANE, PokemonType.GHOST, PokemonType.FAIRY, [ + [ BiomeId.END, BiomePoolTier.COMMON ] ] ], - [ Species.SLITHER_WING, PokemonType.BUG, PokemonType.FIGHTING, [ - [ Biome.END, BiomePoolTier.COMMON ] + [ SpeciesId.SLITHER_WING, PokemonType.BUG, PokemonType.FIGHTING, [ + [ BiomeId.END, BiomePoolTier.COMMON ] ] ], - [ Species.SANDY_SHOCKS, PokemonType.ELECTRIC, PokemonType.GROUND, [ - [ Biome.END, BiomePoolTier.COMMON ] + [ SpeciesId.SANDY_SHOCKS, PokemonType.ELECTRIC, PokemonType.GROUND, [ + [ BiomeId.END, BiomePoolTier.COMMON ] ] ], - [ Species.IRON_TREADS, PokemonType.GROUND, PokemonType.STEEL, [ - [ Biome.END, BiomePoolTier.COMMON ] + [ SpeciesId.IRON_TREADS, PokemonType.GROUND, PokemonType.STEEL, [ + [ BiomeId.END, BiomePoolTier.COMMON ] ] ], - [ Species.IRON_BUNDLE, PokemonType.ICE, PokemonType.WATER, [ - [ Biome.END, BiomePoolTier.COMMON ] + [ SpeciesId.IRON_BUNDLE, PokemonType.ICE, PokemonType.WATER, [ + [ BiomeId.END, BiomePoolTier.COMMON ] ] ], - [ Species.IRON_HANDS, PokemonType.FIGHTING, PokemonType.ELECTRIC, [ - [ Biome.END, BiomePoolTier.COMMON ] + [ SpeciesId.IRON_HANDS, PokemonType.FIGHTING, PokemonType.ELECTRIC, [ + [ BiomeId.END, BiomePoolTier.COMMON ] ] ], - [ Species.IRON_JUGULIS, PokemonType.DARK, PokemonType.FLYING, [ - [ Biome.END, BiomePoolTier.COMMON ] + [ SpeciesId.IRON_JUGULIS, PokemonType.DARK, PokemonType.FLYING, [ + [ BiomeId.END, BiomePoolTier.COMMON ] ] ], - [ Species.IRON_MOTH, PokemonType.FIRE, PokemonType.POISON, [ - [ Biome.END, BiomePoolTier.COMMON ] + [ SpeciesId.IRON_MOTH, PokemonType.FIRE, PokemonType.POISON, [ + [ BiomeId.END, BiomePoolTier.COMMON ] ] ], - [ Species.IRON_THORNS, PokemonType.ROCK, PokemonType.ELECTRIC, [ - [ Biome.END, BiomePoolTier.COMMON ] + [ SpeciesId.IRON_THORNS, PokemonType.ROCK, PokemonType.ELECTRIC, [ + [ BiomeId.END, BiomePoolTier.COMMON ] ] ], - [ Species.FRIGIBAX, PokemonType.DRAGON, PokemonType.ICE, [ - [ Biome.WASTELAND, BiomePoolTier.RARE ] + [ SpeciesId.FRIGIBAX, PokemonType.DRAGON, PokemonType.ICE, [ + [ BiomeId.WASTELAND, BiomePoolTier.RARE ] ] ], - [ Species.ARCTIBAX, PokemonType.DRAGON, PokemonType.ICE, [ - [ Biome.WASTELAND, BiomePoolTier.RARE ] + [ SpeciesId.ARCTIBAX, PokemonType.DRAGON, PokemonType.ICE, [ + [ BiomeId.WASTELAND, BiomePoolTier.RARE ] ] ], - [ Species.BAXCALIBUR, PokemonType.DRAGON, PokemonType.ICE, [ - [ Biome.WASTELAND, BiomePoolTier.RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS ] + [ SpeciesId.BAXCALIBUR, PokemonType.DRAGON, PokemonType.ICE, [ + [ BiomeId.WASTELAND, BiomePoolTier.RARE ], + [ BiomeId.WASTELAND, BiomePoolTier.BOSS ] ] ], - [ Species.GIMMIGHOUL, PokemonType.GHOST, -1, [ - [ Biome.TEMPLE, BiomePoolTier.RARE ] + [ SpeciesId.GIMMIGHOUL, PokemonType.GHOST, -1, [ + [ BiomeId.TEMPLE, BiomePoolTier.RARE ] ] ], - [ Species.GHOLDENGO, PokemonType.STEEL, PokemonType.GHOST, [ - [ Biome.TEMPLE, BiomePoolTier.RARE ], - [ Biome.TEMPLE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.GHOLDENGO, PokemonType.STEEL, PokemonType.GHOST, [ + [ BiomeId.TEMPLE, BiomePoolTier.RARE ], + [ BiomeId.TEMPLE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.WO_CHIEN, PokemonType.DARK, PokemonType.GRASS, [ - [ Biome.FOREST, BiomePoolTier.ULTRA_RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.WO_CHIEN, PokemonType.DARK, PokemonType.GRASS, [ + [ BiomeId.FOREST, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.FOREST, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.CHIEN_PAO, PokemonType.DARK, PokemonType.ICE, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.CHIEN_PAO, PokemonType.DARK, PokemonType.ICE, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.TING_LU, PokemonType.DARK, PokemonType.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.TING_LU, PokemonType.DARK, PokemonType.GROUND, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.CHI_YU, PokemonType.DARK, PokemonType.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.CHI_YU, PokemonType.DARK, PokemonType.FIRE, [ + [ BiomeId.VOLCANO, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.ROARING_MOON, PokemonType.DRAGON, PokemonType.DARK, [ - [ Biome.END, BiomePoolTier.UNCOMMON ] + [ SpeciesId.ROARING_MOON, PokemonType.DRAGON, PokemonType.DARK, [ + [ BiomeId.END, BiomePoolTier.UNCOMMON ] ] ], - [ Species.IRON_VALIANT, PokemonType.FAIRY, PokemonType.FIGHTING, [ - [ Biome.END, BiomePoolTier.UNCOMMON ] + [ SpeciesId.IRON_VALIANT, PokemonType.FAIRY, PokemonType.FIGHTING, [ + [ BiomeId.END, BiomePoolTier.UNCOMMON ] ] ], - [ Species.KORAIDON, PokemonType.FIGHTING, PokemonType.DRAGON, [ - [ Biome.RUINS, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.KORAIDON, PokemonType.FIGHTING, PokemonType.DRAGON, [ + [ BiomeId.RUINS, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.MIRAIDON, PokemonType.ELECTRIC, PokemonType.DRAGON, [ - [ Biome.LABORATORY, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.MIRAIDON, PokemonType.ELECTRIC, PokemonType.DRAGON, [ + [ BiomeId.LABORATORY, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.WALKING_WAKE, PokemonType.WATER, PokemonType.DRAGON, [ - [ Biome.END, BiomePoolTier.RARE ] + [ SpeciesId.WALKING_WAKE, PokemonType.WATER, PokemonType.DRAGON, [ + [ BiomeId.END, BiomePoolTier.RARE ] ] ], - [ Species.IRON_LEAVES, PokemonType.GRASS, PokemonType.PSYCHIC, [ - [ Biome.END, BiomePoolTier.RARE ] + [ SpeciesId.IRON_LEAVES, PokemonType.GRASS, PokemonType.PSYCHIC, [ + [ BiomeId.END, BiomePoolTier.RARE ] ] ], - [ Species.DIPPLIN, PokemonType.GRASS, PokemonType.DRAGON, [ - [ Biome.MEADOW, BiomePoolTier.RARE ] + [ SpeciesId.DIPPLIN, PokemonType.GRASS, PokemonType.DRAGON, [ + [ BiomeId.MEADOW, BiomePoolTier.RARE ] ] ], - [ Species.POLTCHAGEIST, PokemonType.GRASS, PokemonType.GHOST, [ - [ Biome.BADLANDS, BiomePoolTier.RARE ] + [ SpeciesId.POLTCHAGEIST, PokemonType.GRASS, PokemonType.GHOST, [ + [ BiomeId.BADLANDS, BiomePoolTier.RARE ] ] ], - [ Species.SINISTCHA, PokemonType.GRASS, PokemonType.GHOST, [ - [ Biome.BADLANDS, BiomePoolTier.RARE ], - [ Biome.BADLANDS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.SINISTCHA, PokemonType.GRASS, PokemonType.GHOST, [ + [ BiomeId.BADLANDS, BiomePoolTier.RARE ], + [ BiomeId.BADLANDS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.OKIDOGI, PokemonType.POISON, PokemonType.FIGHTING, [ - [ Biome.BADLANDS, BiomePoolTier.ULTRA_RARE ], - [ Biome.BADLANDS, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.OKIDOGI, PokemonType.POISON, PokemonType.FIGHTING, [ + [ BiomeId.BADLANDS, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.BADLANDS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.MUNKIDORI, PokemonType.POISON, PokemonType.PSYCHIC, [ - [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.MUNKIDORI, PokemonType.POISON, PokemonType.PSYCHIC, [ + [ BiomeId.JUNGLE, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.FEZANDIPITI, PokemonType.POISON, PokemonType.FAIRY, [ - [ Biome.RUINS, BiomePoolTier.ULTRA_RARE ], - [ Biome.RUINS, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.FEZANDIPITI, PokemonType.POISON, PokemonType.FAIRY, [ + [ BiomeId.RUINS, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.RUINS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.OGERPON, PokemonType.GRASS, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] + [ SpeciesId.OGERPON, PokemonType.GRASS, -1, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.ARCHALUDON, PokemonType.STEEL, PokemonType.DRAGON, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.ARCHALUDON, PokemonType.STEEL, PokemonType.DRAGON, [ + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HYDRAPPLE, PokemonType.GRASS, PokemonType.DRAGON, [ - [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.HYDRAPPLE, PokemonType.GRASS, PokemonType.DRAGON, [ + [ BiomeId.MEADOW, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GOUGING_FIRE, PokemonType.FIRE, PokemonType.DRAGON, [ - [ Biome.END, BiomePoolTier.RARE ] + [ SpeciesId.GOUGING_FIRE, PokemonType.FIRE, PokemonType.DRAGON, [ + [ BiomeId.END, BiomePoolTier.RARE ] ] ], - [ Species.RAGING_BOLT, PokemonType.ELECTRIC, PokemonType.DRAGON, [ - [ Biome.END, BiomePoolTier.RARE ] + [ SpeciesId.RAGING_BOLT, PokemonType.ELECTRIC, PokemonType.DRAGON, [ + [ BiomeId.END, BiomePoolTier.RARE ] ] ], - [ Species.IRON_BOULDER, PokemonType.ROCK, PokemonType.PSYCHIC, [ - [ Biome.END, BiomePoolTier.RARE ] + [ SpeciesId.IRON_BOULDER, PokemonType.ROCK, PokemonType.PSYCHIC, [ + [ BiomeId.END, BiomePoolTier.RARE ] ] ], - [ Species.IRON_CROWN, PokemonType.STEEL, PokemonType.PSYCHIC, [ - [ Biome.END, BiomePoolTier.RARE ] + [ SpeciesId.IRON_CROWN, PokemonType.STEEL, PokemonType.PSYCHIC, [ + [ BiomeId.END, BiomePoolTier.RARE ] ] ], - [ Species.TERAPAGOS, PokemonType.NORMAL, -1, [ - [ Biome.CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.TERAPAGOS, PokemonType.NORMAL, -1, [ + [ BiomeId.CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.PECHARUNT, PokemonType.POISON, PokemonType.GHOST, [ ] + [ SpeciesId.PECHARUNT, PokemonType.POISON, PokemonType.GHOST, [ ] ], - [ Species.ALOLA_RATTATA, PokemonType.DARK, PokemonType.NORMAL, [ - [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.ALOLA_RATTATA, PokemonType.DARK, PokemonType.NORMAL, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ALOLA_RATICATE, PokemonType.DARK, PokemonType.NORMAL, [ - [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.ALOLA_RATICATE, PokemonType.DARK, PokemonType.NORMAL, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ALOLA_RAICHU, PokemonType.ELECTRIC, PokemonType.PSYCHIC, [ - [ Biome.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.ALOLA_RAICHU, PokemonType.ELECTRIC, PokemonType.PSYCHIC, [ + [ BiomeId.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ALOLA_SANDSHREW, PokemonType.ICE, PokemonType.STEEL, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ] + [ SpeciesId.ALOLA_SANDSHREW, PokemonType.ICE, PokemonType.STEEL, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.RARE ] ] ], - [ Species.ALOLA_SANDSLASH, PokemonType.ICE, PokemonType.STEEL, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.ISLAND, BiomePoolTier.BOSS ], - [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.ALOLA_SANDSLASH, PokemonType.ICE, PokemonType.STEEL, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON ], + [ BiomeId.ISLAND, BiomePoolTier.BOSS ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.RARE ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ALOLA_VULPIX, PokemonType.ICE, -1, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ] + [ SpeciesId.ALOLA_VULPIX, PokemonType.ICE, -1, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.RARE ] ] ], - [ Species.ALOLA_NINETALES, PokemonType.ICE, PokemonType.FAIRY, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.ISLAND, BiomePoolTier.BOSS ], - [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.ALOLA_NINETALES, PokemonType.ICE, PokemonType.FAIRY, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON ], + [ BiomeId.ISLAND, BiomePoolTier.BOSS ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.RARE ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ALOLA_DIGLETT, PokemonType.GROUND, PokemonType.STEEL, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ] + [ SpeciesId.ALOLA_DIGLETT, PokemonType.GROUND, PokemonType.STEEL, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON ] ] ], - [ Species.ALOLA_DUGTRIO, PokemonType.GROUND, PokemonType.STEEL, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.ISLAND, BiomePoolTier.BOSS ] + [ SpeciesId.ALOLA_DUGTRIO, PokemonType.GROUND, PokemonType.STEEL, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON ], + [ BiomeId.ISLAND, BiomePoolTier.BOSS ] ] ], - [ Species.ALOLA_MEOWTH, PokemonType.DARK, -1, [ - [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.ALOLA_MEOWTH, PokemonType.DARK, -1, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ALOLA_PERSIAN, PokemonType.DARK, -1, [ - [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.ALOLA_PERSIAN, PokemonType.DARK, -1, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ALOLA_GEODUDE, PokemonType.ROCK, PokemonType.ELECTRIC, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ] + [ SpeciesId.ALOLA_GEODUDE, PokemonType.ROCK, PokemonType.ELECTRIC, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON ] ] ], - [ Species.ALOLA_GRAVELER, PokemonType.ROCK, PokemonType.ELECTRIC, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ] + [ SpeciesId.ALOLA_GRAVELER, PokemonType.ROCK, PokemonType.ELECTRIC, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON ] ] ], - [ Species.ALOLA_GOLEM, PokemonType.ROCK, PokemonType.ELECTRIC, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.ISLAND, BiomePoolTier.BOSS ] + [ SpeciesId.ALOLA_GOLEM, PokemonType.ROCK, PokemonType.ELECTRIC, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON ], + [ BiomeId.ISLAND, BiomePoolTier.BOSS ] ] ], - [ Species.ALOLA_GRIMER, PokemonType.POISON, PokemonType.DARK, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ] + [ SpeciesId.ALOLA_GRIMER, PokemonType.POISON, PokemonType.DARK, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON ] ] ], - [ Species.ALOLA_MUK, PokemonType.POISON, PokemonType.DARK, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.ISLAND, BiomePoolTier.BOSS ] + [ SpeciesId.ALOLA_MUK, PokemonType.POISON, PokemonType.DARK, [ + [ BiomeId.ISLAND, BiomePoolTier.COMMON ], + [ BiomeId.ISLAND, BiomePoolTier.BOSS ] ] ], - [ Species.ALOLA_EXEGGUTOR, PokemonType.GRASS, PokemonType.DRAGON, [ - [ Biome.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.ALOLA_EXEGGUTOR, PokemonType.GRASS, PokemonType.DRAGON, [ + [ BiomeId.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ALOLA_MAROWAK, PokemonType.FIRE, PokemonType.GHOST, [ - [ Biome.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.ALOLA_MAROWAK, PokemonType.FIRE, PokemonType.GHOST, [ + [ BiomeId.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ETERNAL_FLOETTE, PokemonType.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.RARE ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.ETERNAL_FLOETTE, PokemonType.FAIRY, -1, [ + [ BiomeId.FAIRY_CAVE, BiomePoolTier.RARE ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GALAR_MEOWTH, PokemonType.STEEL, -1, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE, TimeOfDay.DUSK ] + [ SpeciesId.GALAR_MEOWTH, PokemonType.STEEL, -1, [ + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.RARE, TimeOfDay.DUSK ] ] ], - [ Species.GALAR_PONYTA, PokemonType.PSYCHIC, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE, TimeOfDay.DAWN ] + [ SpeciesId.GALAR_PONYTA, PokemonType.PSYCHIC, -1, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE, TimeOfDay.DAWN ] ] ], - [ Species.GALAR_RAPIDASH, PokemonType.PSYCHIC, PokemonType.FAIRY, [ - [ Biome.JUNGLE, BiomePoolTier.RARE, TimeOfDay.DAWN ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE, TimeOfDay.DAWN ] + [ SpeciesId.GALAR_RAPIDASH, PokemonType.PSYCHIC, PokemonType.FAIRY, [ + [ BiomeId.JUNGLE, BiomePoolTier.RARE, TimeOfDay.DAWN ], + [ BiomeId.JUNGLE, BiomePoolTier.BOSS_RARE, TimeOfDay.DAWN ] ] ], - [ Species.GALAR_SLOWPOKE, PokemonType.PSYCHIC, -1, [ - [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.GALAR_SLOWPOKE, PokemonType.PSYCHIC, -1, [ + [ BiomeId.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GALAR_SLOWBRO, PokemonType.POISON, PokemonType.PSYCHIC, [ - [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.GALAR_SLOWBRO, PokemonType.POISON, PokemonType.PSYCHIC, [ + [ BiomeId.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GALAR_FARFETCHD, PokemonType.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.GALAR_FARFETCHD, PokemonType.FIGHTING, -1, [ + [ BiomeId.DOJO, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.GALAR_WEEZING, PokemonType.POISON, PokemonType.FAIRY, [ - [ Biome.SLUM, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.GALAR_WEEZING, PokemonType.POISON, PokemonType.FAIRY, [ + [ BiomeId.SLUM, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GALAR_MR_MIME, PokemonType.ICE, PokemonType.PSYCHIC, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.GALAR_MR_MIME, PokemonType.ICE, PokemonType.PSYCHIC, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.GALAR_ARTICUNO, PokemonType.PSYCHIC, PokemonType.FLYING, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.GALAR_ARTICUNO, PokemonType.PSYCHIC, PokemonType.FLYING, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.GALAR_ZAPDOS, PokemonType.FIGHTING, PokemonType.FLYING, [ - [ Biome.DOJO, BiomePoolTier.ULTRA_RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.GALAR_ZAPDOS, PokemonType.FIGHTING, PokemonType.FLYING, [ + [ BiomeId.DOJO, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.DOJO, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.GALAR_MOLTRES, PokemonType.DARK, PokemonType.FLYING, [ - [ Biome.ABYSS, BiomePoolTier.ULTRA_RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] + [ SpeciesId.GALAR_MOLTRES, PokemonType.DARK, PokemonType.FLYING, [ + [ BiomeId.ABYSS, BiomePoolTier.ULTRA_RARE ], + [ BiomeId.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.GALAR_SLOWKING, PokemonType.POISON, PokemonType.PSYCHIC, [ - [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.GALAR_SLOWKING, PokemonType.POISON, PokemonType.PSYCHIC, [ + [ BiomeId.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GALAR_CORSOLA, PokemonType.GHOST, -1, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.GALAR_CORSOLA, PokemonType.GHOST, -1, [ + [ BiomeId.SEABED, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.GALAR_ZIGZAGOON, PokemonType.DARK, PokemonType.NORMAL, [ - [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.GALAR_ZIGZAGOON, PokemonType.DARK, PokemonType.NORMAL, [ + [ BiomeId.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.GALAR_LINOONE, PokemonType.DARK, PokemonType.NORMAL, [ - [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.GALAR_LINOONE, PokemonType.DARK, PokemonType.NORMAL, [ + [ BiomeId.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.GALAR_DARUMAKA, PokemonType.ICE, -1, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.GALAR_DARUMAKA, PokemonType.ICE, -1, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GALAR_DARMANITAN, PokemonType.ICE, -1, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.GALAR_DARMANITAN, PokemonType.ICE, -1, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GALAR_YAMASK, PokemonType.GROUND, PokemonType.GHOST, [ - [ Biome.RUINS, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.GALAR_YAMASK, PokemonType.GROUND, PokemonType.GHOST, [ + [ BiomeId.RUINS, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.GALAR_STUNFISK, PokemonType.GROUND, PokemonType.STEEL, [ - [ Biome.SWAMP, BiomePoolTier.SUPER_RARE ], - [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.GALAR_STUNFISK, PokemonType.GROUND, PokemonType.STEEL, [ + [ BiomeId.SWAMP, BiomePoolTier.SUPER_RARE ], + [ BiomeId.SWAMP, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HISUI_GROWLITHE, PokemonType.FIRE, PokemonType.ROCK, [ - [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.HISUI_GROWLITHE, PokemonType.FIRE, PokemonType.ROCK, [ + [ BiomeId.VOLCANO, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.HISUI_ARCANINE, PokemonType.FIRE, PokemonType.ROCK, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.HISUI_ARCANINE, PokemonType.FIRE, PokemonType.ROCK, [ + [ BiomeId.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HISUI_VOLTORB, PokemonType.ELECTRIC, PokemonType.GRASS, [ - [ Biome.POWER_PLANT, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.HISUI_VOLTORB, PokemonType.ELECTRIC, PokemonType.GRASS, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.HISUI_ELECTRODE, PokemonType.ELECTRIC, PokemonType.GRASS, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.HISUI_ELECTRODE, PokemonType.ELECTRIC, PokemonType.GRASS, [ + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HISUI_TYPHLOSION, PokemonType.FIRE, PokemonType.GHOST, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.HISUI_TYPHLOSION, PokemonType.FIRE, PokemonType.GHOST, [ + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HISUI_QWILFISH, PokemonType.DARK, PokemonType.POISON, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.HISUI_QWILFISH, PokemonType.DARK, PokemonType.POISON, [ + [ BiomeId.SEABED, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.HISUI_SNEASEL, PokemonType.FIGHTING, PokemonType.POISON, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.HISUI_SNEASEL, PokemonType.FIGHTING, PokemonType.POISON, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HISUI_SAMUROTT, PokemonType.WATER, PokemonType.DARK, [ - [ Biome.ABYSS, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.HISUI_SAMUROTT, PokemonType.WATER, PokemonType.DARK, [ + [ BiomeId.ABYSS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HISUI_LILLIGANT, PokemonType.GRASS, PokemonType.FIGHTING, [ - [ Biome.MEADOW, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.HISUI_LILLIGANT, PokemonType.GRASS, PokemonType.FIGHTING, [ + [ BiomeId.MEADOW, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HISUI_ZORUA, PokemonType.NORMAL, PokemonType.GHOST, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.HISUI_ZORUA, PokemonType.NORMAL, PokemonType.GHOST, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.HISUI_ZOROARK, PokemonType.NORMAL, PokemonType.GHOST, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.HISUI_ZOROARK, PokemonType.NORMAL, PokemonType.GHOST, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.HISUI_BRAVIARY, PokemonType.PSYCHIC, PokemonType.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.HISUI_BRAVIARY, PokemonType.PSYCHIC, PokemonType.FLYING, [ + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HISUI_SLIGGOO, PokemonType.STEEL, PokemonType.DRAGON, [ - [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.HISUI_SLIGGOO, PokemonType.STEEL, PokemonType.DRAGON, [ + [ BiomeId.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HISUI_GOODRA, PokemonType.STEEL, PokemonType.DRAGON, [ - [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.HISUI_GOODRA, PokemonType.STEEL, PokemonType.DRAGON, [ + [ BiomeId.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HISUI_AVALUGG, PokemonType.ICE, PokemonType.ROCK, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ] + [ SpeciesId.HISUI_AVALUGG, PokemonType.ICE, PokemonType.ROCK, [ + [ BiomeId.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.HISUI_DECIDUEYE, PokemonType.GRASS, PokemonType.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.BOSS_RARE ] + [ SpeciesId.HISUI_DECIDUEYE, PokemonType.GRASS, PokemonType.FIGHTING, [ + [ BiomeId.DOJO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.PALDEA_TAUROS, PokemonType.FIGHTING, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], - [ Biome.PLAINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] + [ SpeciesId.PALDEA_TAUROS, PokemonType.FIGHTING, -1, [ + [ BiomeId.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], + [ BiomeId.PLAINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.PALDEA_WOOPER, PokemonType.POISON, PokemonType.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] + [ SpeciesId.PALDEA_WOOPER, PokemonType.POISON, PokemonType.GROUND, [ + [ BiomeId.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.BLOODMOON_URSALUNA, PokemonType.GROUND, PokemonType.NORMAL, [ - [ Biome.FOREST, BiomePoolTier.SUPER_RARE, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE, TimeOfDay.NIGHT ] + [ SpeciesId.BLOODMOON_URSALUNA, PokemonType.GROUND, PokemonType.NORMAL, [ + [ BiomeId.FOREST, BiomePoolTier.SUPER_RARE, TimeOfDay.NIGHT ], + [ BiomeId.FOREST, BiomePoolTier.BOSS_RARE, TimeOfDay.NIGHT ] ] ] ]; const trainerBiomes = [ [ TrainerType.ACE_TRAINER, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.GRASS, BiomePoolTier.UNCOMMON ], - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.BEACH, BiomePoolTier.UNCOMMON ], - [ Biome.LAKE, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.RUINS, BiomePoolTier.UNCOMMON ], - [ Biome.ABYSS, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.GRASS, BiomePoolTier.UNCOMMON ], + [ BiomeId.TALL_GRASS, BiomePoolTier.UNCOMMON ], + [ BiomeId.SWAMP, BiomePoolTier.UNCOMMON ], + [ BiomeId.BEACH, BiomePoolTier.UNCOMMON ], + [ BiomeId.LAKE, BiomePoolTier.UNCOMMON ], + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ BiomeId.BADLANDS, BiomePoolTier.UNCOMMON ], + [ BiomeId.CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ], + [ BiomeId.RUINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.ABYSS, BiomePoolTier.UNCOMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], [ TrainerType.ARTIST, [ - [ Biome.METROPOLIS, BiomePoolTier.RARE ] + [ BiomeId.METROPOLIS, BiomePoolTier.RARE ] ] ], [ TrainerType.BACKERS, []], [ TrainerType.BACKPACKER, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.JUNGLE, BiomePoolTier.COMMON ], - [ Biome.DESERT, BiomePoolTier.COMMON ] + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON ], + [ BiomeId.CAVE, BiomePoolTier.COMMON ], + [ BiomeId.BADLANDS, BiomePoolTier.COMMON ], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON ], + [ BiomeId.DESERT, BiomePoolTier.COMMON ] ] ], [ TrainerType.BAKER, [ - [ Biome.SLUM, BiomePoolTier.UNCOMMON ], - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ] + [ BiomeId.SLUM, BiomePoolTier.UNCOMMON ], + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ] ] ], [ TrainerType.BEAUTY, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON ], - [ Biome.MEADOW, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON ], + [ BiomeId.MEADOW, BiomePoolTier.COMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], [ TrainerType.BIKER, [ - [ Biome.SLUM, BiomePoolTier.COMMON ] + [ BiomeId.SLUM, BiomePoolTier.COMMON ] ] ], [ TrainerType.BLACK_BELT, [ - [ Biome.DOJO, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.RARE ], - [ Biome.GRASS, BiomePoolTier.RARE ], - [ Biome.SWAMP, BiomePoolTier.RARE ], - [ Biome.BEACH, BiomePoolTier.RARE ], - [ Biome.LAKE, BiomePoolTier.RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.RUINS, BiomePoolTier.UNCOMMON ] + [ BiomeId.DOJO, BiomePoolTier.COMMON ], + [ BiomeId.PLAINS, BiomePoolTier.RARE ], + [ BiomeId.GRASS, BiomePoolTier.RARE ], + [ BiomeId.SWAMP, BiomePoolTier.RARE ], + [ BiomeId.BEACH, BiomePoolTier.RARE ], + [ BiomeId.LAKE, BiomePoolTier.RARE ], + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON ], + [ BiomeId.CAVE, BiomePoolTier.UNCOMMON ], + [ BiomeId.RUINS, BiomePoolTier.UNCOMMON ] ] ], [ TrainerType.BREEDER, [ - [ Biome.PLAINS, BiomePoolTier.COMMON ], - [ Biome.GRASS, BiomePoolTier.COMMON ], - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON ], - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.BEACH, BiomePoolTier.UNCOMMON ], - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] + [ BiomeId.PLAINS, BiomePoolTier.COMMON ], + [ BiomeId.GRASS, BiomePoolTier.COMMON ], + [ BiomeId.TALL_GRASS, BiomePoolTier.UNCOMMON ], + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ BiomeId.BEACH, BiomePoolTier.UNCOMMON ], + [ BiomeId.LAKE, BiomePoolTier.COMMON ], + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] ] ], [ TrainerType.CLERK, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON ] + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON ] ] ], [ TrainerType.CYCLIST, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.METROPOLIS, BiomePoolTier.COMMON ] + [ BiomeId.PLAINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON ] ] ], [ TrainerType.DANCER, []], [ TrainerType.DEPOT_AGENT, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ] + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON ] ] ], [ TrainerType.DOCTOR, []], [ TrainerType.FIREBREATHER, [ - [ Biome.VOLCANO, BiomePoolTier.COMMON ] + [ BiomeId.VOLCANO, BiomePoolTier.COMMON ] ] ], [ TrainerType.FISHERMAN, [ - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.BEACH, BiomePoolTier.COMMON ] + [ BiomeId.LAKE, BiomePoolTier.COMMON ], + [ BiomeId.BEACH, BiomePoolTier.COMMON ] ] ], [ TrainerType.GUITARIST, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + [ BiomeId.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ] ] ], [ TrainerType.HARLEQUIN, []], [ TrainerType.HIKER, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.BADLANDS, BiomePoolTier.COMMON ] + [ BiomeId.MOUNTAIN, BiomePoolTier.COMMON ], + [ BiomeId.CAVE, BiomePoolTier.COMMON ], + [ BiomeId.BADLANDS, BiomePoolTier.COMMON ] ] ], [ TrainerType.HOOLIGANS, [ - [ Biome.SLUM, BiomePoolTier.UNCOMMON ] + [ BiomeId.SLUM, BiomePoolTier.UNCOMMON ] ] ], [ TrainerType.HOOPSTER, []], @@ -7253,402 +7253,402 @@ export function initBiomes() { [ TrainerType.LINEBACKER, []], [ TrainerType.MAID, []], [ TrainerType.MUSICIAN, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ] + [ BiomeId.MEADOW, BiomePoolTier.COMMON ] ] ], [ TrainerType.HEX_MANIAC, [ - [ Biome.RUINS, BiomePoolTier.UNCOMMON ], - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ] + [ BiomeId.RUINS, BiomePoolTier.UNCOMMON ], + [ BiomeId.GRAVEYARD, BiomePoolTier.UNCOMMON ] ] ], [ TrainerType.NURSERY_AIDE, []], [ TrainerType.OFFICER, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ], - [ Biome.SLUM, BiomePoolTier.COMMON ] + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.COMMON ], + [ BiomeId.SLUM, BiomePoolTier.COMMON ] ] ], [ TrainerType.PARASOL_LADY, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ], - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.MEADOW, BiomePoolTier.COMMON ] + [ BiomeId.SWAMP, BiomePoolTier.COMMON ], + [ BiomeId.LAKE, BiomePoolTier.COMMON ], + [ BiomeId.MEADOW, BiomePoolTier.COMMON ] ] ], [ TrainerType.PILOT, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ] + [ BiomeId.MOUNTAIN, BiomePoolTier.UNCOMMON ] ] ], [ TrainerType.POKEFAN, [ - [ Biome.GRASS, BiomePoolTier.UNCOMMON ], - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ] + [ BiomeId.GRASS, BiomePoolTier.UNCOMMON ], + [ BiomeId.MEADOW, BiomePoolTier.UNCOMMON ] ] ], [ TrainerType.PRESCHOOLER, []], [ TrainerType.PSYCHIC, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.RUINS, BiomePoolTier.COMMON ] + [ BiomeId.GRAVEYARD, BiomePoolTier.COMMON ], + [ BiomeId.RUINS, BiomePoolTier.COMMON ] ] ], [ TrainerType.RANGER, [ - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON ], - [ Biome.FOREST, BiomePoolTier.COMMON ], - [ Biome.JUNGLE, BiomePoolTier.COMMON ] + [ BiomeId.TALL_GRASS, BiomePoolTier.UNCOMMON ], + [ BiomeId.FOREST, BiomePoolTier.COMMON ], + [ BiomeId.JUNGLE, BiomePoolTier.COMMON ] ] ], [ TrainerType.RICH, [ - [ Biome.ISLAND, BiomePoolTier.UNCOMMON ] + [ BiomeId.ISLAND, BiomePoolTier.UNCOMMON ] ] ], [ TrainerType.RICH_KID, [ - [ Biome.METROPOLIS, BiomePoolTier.RARE ], - [ Biome.ISLAND, BiomePoolTier.COMMON ] + [ BiomeId.METROPOLIS, BiomePoolTier.RARE ], + [ BiomeId.ISLAND, BiomePoolTier.COMMON ] ] ], [ TrainerType.ROUGHNECK, [ - [ Biome.SLUM, BiomePoolTier.COMMON ] + [ BiomeId.SLUM, BiomePoolTier.COMMON ] ] ], [ TrainerType.SAILOR, [ - [ Biome.SEA, BiomePoolTier.COMMON ], - [ Biome.BEACH, BiomePoolTier.COMMON ] + [ BiomeId.SEA, BiomePoolTier.COMMON ], + [ BiomeId.BEACH, BiomePoolTier.COMMON ] ] ], [ TrainerType.SCIENTIST, [ - [ Biome.DESERT, BiomePoolTier.COMMON ], - [ Biome.RUINS, BiomePoolTier.COMMON ] + [ BiomeId.DESERT, BiomePoolTier.COMMON ], + [ BiomeId.RUINS, BiomePoolTier.COMMON ] ] ], [ TrainerType.SMASHER, []], [ TrainerType.SNOW_WORKER, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] + [ BiomeId.ICE_CAVE, BiomePoolTier.COMMON ], + [ BiomeId.SNOWY_FOREST, BiomePoolTier.COMMON ] ] ], [ TrainerType.STRIKER, []], [ TrainerType.SCHOOL_KID, [ - [ Biome.GRASS, BiomePoolTier.COMMON ] + [ BiomeId.GRASS, BiomePoolTier.COMMON ] ] ], [ TrainerType.SWIMMER, [ - [ Biome.SEA, BiomePoolTier.COMMON ] + [ BiomeId.SEA, BiomePoolTier.COMMON ] ] ], [ TrainerType.TWINS, [ - [ Biome.PLAINS, BiomePoolTier.COMMON ] + [ BiomeId.PLAINS, BiomePoolTier.COMMON ] ] ], [ TrainerType.VETERAN, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON ] + [ BiomeId.WASTELAND, BiomePoolTier.COMMON ] ] ], [ TrainerType.WAITER, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON ] + [ BiomeId.METROPOLIS, BiomePoolTier.COMMON ] ] ], [ TrainerType.WORKER, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] + [ BiomeId.POWER_PLANT, BiomePoolTier.COMMON ], + [ BiomeId.FACTORY, BiomePoolTier.COMMON ], + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] ] ], [ TrainerType.YOUNGSTER, [ - [ Biome.TOWN, BiomePoolTier.COMMON ] + [ BiomeId.TOWN, BiomePoolTier.COMMON ] ] ], [ TrainerType.BROCK, [ - [ Biome.CAVE, BiomePoolTier.BOSS ] + [ BiomeId.CAVE, BiomePoolTier.BOSS ] ] ], [ TrainerType.MISTY, [ - [ Biome.BEACH, BiomePoolTier.BOSS ] + [ BiomeId.BEACH, BiomePoolTier.BOSS ] ] ], [ TrainerType.LT_SURGE, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] ] ], [ TrainerType.ERIKA, [ - [ Biome.GRASS, BiomePoolTier.BOSS ] + [ BiomeId.GRASS, BiomePoolTier.BOSS ] ] ], [ TrainerType.JANINE, [ - [ Biome.SWAMP, BiomePoolTier.BOSS ] + [ BiomeId.SWAMP, BiomePoolTier.BOSS ] ] ], [ TrainerType.SABRINA, [ - [ Biome.RUINS, BiomePoolTier.BOSS ] + [ BiomeId.RUINS, BiomePoolTier.BOSS ] ] ], [ TrainerType.GIOVANNI, [ - [ Biome.LABORATORY, BiomePoolTier.BOSS ] + [ BiomeId.LABORATORY, BiomePoolTier.BOSS ] ] ], [ TrainerType.BLAINE, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS ] + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ] ] ], [ TrainerType.FALKNER, [ - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS ] ] ], [ TrainerType.BUGSY, [ - [ Biome.FOREST, BiomePoolTier.BOSS ] + [ BiomeId.FOREST, BiomePoolTier.BOSS ] ] ], [ TrainerType.WHITNEY, [ - [ Biome.METROPOLIS, BiomePoolTier.BOSS ] + [ BiomeId.METROPOLIS, BiomePoolTier.BOSS ] ] ], [ TrainerType.MORTY, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS ] ] ], [ TrainerType.CHUCK, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] ] ], [ TrainerType.JASMINE, [ - [ Biome.FACTORY, BiomePoolTier.BOSS ] + [ BiomeId.FACTORY, BiomePoolTier.BOSS ] ] ], [ TrainerType.PRYCE, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], [ TrainerType.CLAIR, [ - [ Biome.WASTELAND, BiomePoolTier.BOSS ] + [ BiomeId.WASTELAND, BiomePoolTier.BOSS ] ] ], [ TrainerType.ROXANNE, [ - [ Biome.CAVE, BiomePoolTier.BOSS ] + [ BiomeId.CAVE, BiomePoolTier.BOSS ] ] ], [ TrainerType.BRAWLY, [ - [ Biome.DOJO, BiomePoolTier.BOSS ] + [ BiomeId.DOJO, BiomePoolTier.BOSS ] ] ], [ TrainerType.WATTSON, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] + [ BiomeId.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] ] ], [ TrainerType.FLANNERY, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS ] + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ] ] ], [ TrainerType.NORMAN, [ - [ Biome.METROPOLIS, BiomePoolTier.BOSS ] + [ BiomeId.METROPOLIS, BiomePoolTier.BOSS ] ] ], [ TrainerType.WINONA, [ - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS ] ] ], [ TrainerType.TATE, [ - [ Biome.RUINS, BiomePoolTier.BOSS ] + [ BiomeId.RUINS, BiomePoolTier.BOSS ] ] ], [ TrainerType.LIZA, [ - [ Biome.RUINS, BiomePoolTier.BOSS ] + [ BiomeId.RUINS, BiomePoolTier.BOSS ] ] ], [ TrainerType.JUAN, [ - [ Biome.SEABED, BiomePoolTier.BOSS ] + [ BiomeId.SEABED, BiomePoolTier.BOSS ] ] ], [ TrainerType.ROARK, [ - [ Biome.CAVE, BiomePoolTier.BOSS ] + [ BiomeId.CAVE, BiomePoolTier.BOSS ] ] ], [ TrainerType.GARDENIA, [ - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS ] ] ], [ TrainerType.CRASHER_WAKE, [ - [ Biome.LAKE, BiomePoolTier.BOSS ] + [ BiomeId.LAKE, BiomePoolTier.BOSS ] ] ], [ TrainerType.MAYLENE, [ - [ Biome.DOJO, BiomePoolTier.BOSS ] + [ BiomeId.DOJO, BiomePoolTier.BOSS ] ] ], [ TrainerType.FANTINA, [ - [ Biome.TEMPLE, BiomePoolTier.BOSS ] + [ BiomeId.TEMPLE, BiomePoolTier.BOSS ] ] ], [ TrainerType.BYRON, [ - [ Biome.FACTORY, BiomePoolTier.BOSS ] + [ BiomeId.FACTORY, BiomePoolTier.BOSS ] ] ], [ TrainerType.CANDICE, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS ] + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS ] ] ], [ TrainerType.VOLKNER, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS ] ] ], [ TrainerType.CILAN, [ - [ Biome.PLAINS, BiomePoolTier.BOSS ] + [ BiomeId.PLAINS, BiomePoolTier.BOSS ] ] ], [ TrainerType.CHILI, [ - [ Biome.PLAINS, BiomePoolTier.BOSS ] + [ BiomeId.PLAINS, BiomePoolTier.BOSS ] ] ], [ TrainerType.CRESS, [ - [ Biome.PLAINS, BiomePoolTier.BOSS ] + [ BiomeId.PLAINS, BiomePoolTier.BOSS ] ] ], [ TrainerType.CHEREN, [ - [ Biome.PLAINS, BiomePoolTier.BOSS ] + [ BiomeId.PLAINS, BiomePoolTier.BOSS ] ] ], [ TrainerType.LENORA, [ - [ Biome.MEADOW, BiomePoolTier.BOSS ] + [ BiomeId.MEADOW, BiomePoolTier.BOSS ] ] ], [ TrainerType.ROXIE, [ - [ Biome.SWAMP, BiomePoolTier.BOSS ] + [ BiomeId.SWAMP, BiomePoolTier.BOSS ] ] ], [ TrainerType.BURGH, [ - [ Biome.FOREST, BiomePoolTier.BOSS ] + [ BiomeId.FOREST, BiomePoolTier.BOSS ] ] ], [ TrainerType.ELESA, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS ] ] ], [ TrainerType.CLAY, [ - [ Biome.BADLANDS, BiomePoolTier.BOSS ] + [ BiomeId.BADLANDS, BiomePoolTier.BOSS ] ] ], [ TrainerType.SKYLA, [ - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + [ BiomeId.MOUNTAIN, BiomePoolTier.BOSS ] ] ], [ TrainerType.BRYCEN, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], [ TrainerType.DRAYDEN, [ - [ Biome.WASTELAND, BiomePoolTier.BOSS ] + [ BiomeId.WASTELAND, BiomePoolTier.BOSS ] ] ], [ TrainerType.MARLON, [ - [ Biome.SEA, BiomePoolTier.BOSS ] + [ BiomeId.SEA, BiomePoolTier.BOSS ] ] ], [ TrainerType.VIOLA, [ - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS ] ] ], [ TrainerType.GRANT, [ - [ Biome.BADLANDS, BiomePoolTier.BOSS ] + [ BiomeId.BADLANDS, BiomePoolTier.BOSS ] ] ], [ TrainerType.KORRINA, [ - [ Biome.DOJO, BiomePoolTier.BOSS ] + [ BiomeId.DOJO, BiomePoolTier.BOSS ] ] ], [ TrainerType.RAMOS, [ - [ Biome.JUNGLE, BiomePoolTier.BOSS ] + [ BiomeId.JUNGLE, BiomePoolTier.BOSS ] ] ], [ TrainerType.CLEMONT, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + [ BiomeId.POWER_PLANT, BiomePoolTier.BOSS ] ] ], [ TrainerType.VALERIE, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], [ TrainerType.OLYMPIA, [ - [ Biome.SPACE, BiomePoolTier.BOSS ] + [ BiomeId.SPACE, BiomePoolTier.BOSS ] ] ], [ TrainerType.WULFRIC, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], [ TrainerType.MILO, [ - [ Biome.MEADOW, BiomePoolTier.BOSS ] + [ BiomeId.MEADOW, BiomePoolTier.BOSS ] ] ], [ TrainerType.NESSA, [ - [ Biome.ISLAND, BiomePoolTier.BOSS ] + [ BiomeId.ISLAND, BiomePoolTier.BOSS ] ] ], [ TrainerType.KABU, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS ] + [ BiomeId.VOLCANO, BiomePoolTier.BOSS ] ] ], [ TrainerType.BEA, [ - [ Biome.DOJO, BiomePoolTier.BOSS ] + [ BiomeId.DOJO, BiomePoolTier.BOSS ] ] ], [ TrainerType.ALLISTER, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS ] ] ], [ TrainerType.OPAL, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], [ TrainerType.BEDE, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], [ TrainerType.GORDIE, [ - [ Biome.DESERT, BiomePoolTier.BOSS ] + [ BiomeId.DESERT, BiomePoolTier.BOSS ] ] ], [ TrainerType.MELONY, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS ] + [ BiomeId.SNOWY_FOREST, BiomePoolTier.BOSS ] ] ], [ TrainerType.PIERS, [ - [ Biome.SLUM, BiomePoolTier.BOSS ] + [ BiomeId.SLUM, BiomePoolTier.BOSS ] ] ], [ TrainerType.MARNIE, [ - [ Biome.ABYSS, BiomePoolTier.BOSS ] + [ BiomeId.ABYSS, BiomePoolTier.BOSS ] ] ], [ TrainerType.RAIHAN, [ - [ Biome.WASTELAND, BiomePoolTier.BOSS ] + [ BiomeId.WASTELAND, BiomePoolTier.BOSS ] ] ], [ TrainerType.KATY, [ - [ Biome.FOREST, BiomePoolTier.BOSS ] + [ BiomeId.FOREST, BiomePoolTier.BOSS ] ] ], [ TrainerType.BRASSIUS, [ - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] + [ BiomeId.TALL_GRASS, BiomePoolTier.BOSS ] ] ], [ TrainerType.IONO, [ - [ Biome.METROPOLIS, BiomePoolTier.BOSS ] + [ BiomeId.METROPOLIS, BiomePoolTier.BOSS ] ] ], [ TrainerType.KOFU, [ - [ Biome.BEACH, BiomePoolTier.BOSS ] + [ BiomeId.BEACH, BiomePoolTier.BOSS ] ] ], [ TrainerType.LARRY, [ - [ Biome.METROPOLIS, BiomePoolTier.BOSS ] + [ BiomeId.METROPOLIS, BiomePoolTier.BOSS ] ] ], [ TrainerType.RYME, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + [ BiomeId.GRAVEYARD, BiomePoolTier.BOSS ] ] ], [ TrainerType.TULIP, [ - [ Biome.RUINS, BiomePoolTier.BOSS ] + [ BiomeId.RUINS, BiomePoolTier.BOSS ] ] ], [ TrainerType.GRUSHA, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + [ BiomeId.ICE_CAVE, BiomePoolTier.BOSS ] ] ], [ TrainerType.LORELEI, []], @@ -7704,21 +7704,21 @@ export function initBiomes() { [ TrainerType.RIVAL, []] ]; - biomeDepths[Biome.TOWN] = [ 0, 1 ]; + biomeDepths[BiomeId.TOWN] = [ 0, 1 ]; - const traverseBiome = (biome: Biome, depth: number) => { - if (biome === Biome.END) { - const biomeList = Object.keys(Biome).filter(key => !Number.isNaN(Number(key))); - biomeList.pop(); // Removes Biome.END from the list - const randIndex = randSeedInt(biomeList.length, 1); // Will never be Biome.TOWN - biome = Biome[biomeList[randIndex]]; + const traverseBiome = (biome: BiomeId, depth: number) => { + if (biome === BiomeId.END) { + const biomeList = Object.keys(BiomeId).filter(key => !Number.isNaN(Number(key))); + biomeList.pop(); // Removes BiomeId.END from the list + const randIndex = randSeedInt(biomeList.length, 1); // Will never be BiomeId.TOWN + biome = BiomeId[biomeList[randIndex]]; } - const linkedBiomes: (Biome | [ Biome, number ])[] = Array.isArray(biomeLinks[biome]) - ? biomeLinks[biome] as (Biome | [ Biome, number ])[] - : [ biomeLinks[biome] as Biome ]; + const linkedBiomes: (BiomeId | [ BiomeId, number ])[] = Array.isArray(biomeLinks[biome]) + ? biomeLinks[biome] as (BiomeId | [ BiomeId, number ])[] + : [ biomeLinks[biome] as BiomeId ]; for (const linkedBiomeEntry of linkedBiomes) { const linkedBiome = !Array.isArray(linkedBiomeEntry) - ? linkedBiomeEntry as Biome + ? linkedBiomeEntry as BiomeId : linkedBiomeEntry[0]; const biomeChance = !Array.isArray(linkedBiomeEntry) ? 1 @@ -7730,10 +7730,10 @@ export function initBiomes() { } }; - traverseBiome(Biome.TOWN, 0); - biomeDepths[Biome.END] = [ Object.values(biomeDepths).map(d => d[0]).reduce((max: number, value: number) => Math.max(max, value), 0) + 1, 1 ]; + traverseBiome(BiomeId.TOWN, 0); + biomeDepths[BiomeId.END] = [ Object.values(biomeDepths).map(d => d[0]).reduce((max: number, value: number) => Math.max(max, value), 0) + 1, 1 ]; - for (const biome of getEnumValues(Biome)) { + for (const biome of getEnumValues(BiomeId)) { biomePokemonPools[biome] = {}; biomeTrainerPools[biome] = {}; @@ -7748,14 +7748,14 @@ export function initBiomes() { } for (const pb of pokemonBiomes) { - const speciesId = pb[0] as Species; - const biomeEntries = pb[3] as (Biome | BiomePoolTier)[][]; + const speciesId = pb[0] as SpeciesId; + const biomeEntries = pb[3] as (BiomeId | BiomePoolTier)[][]; const speciesEvolutions: SpeciesFormEvolution[] = pokemonEvolutions.hasOwnProperty(speciesId) ? pokemonEvolutions[speciesId] : []; - if (!biomeEntries.filter(b => b[0] !== Biome.END).length && !speciesEvolutions.filter(es => !!((pokemonBiomes.find(p => p[0] === es.speciesId)!)[3] as any[]).filter(b => b[0] !== Biome.END).length).length) { // TODO: is the bang on the `find()` correct? + if (!biomeEntries.filter(b => b[0] !== BiomeId.END).length && !speciesEvolutions.filter(es => !!((pokemonBiomes.find(p => p[0] === es.speciesId)!)[3] as any[]).filter(b => b[0] !== BiomeId.END).length).length) { // TODO: is the bang on the `find()` correct? uncatchableSpecies.push(speciesId); } @@ -7772,7 +7772,7 @@ export function initBiomes() { : [ TimeOfDay.ALL ]; catchableSpecies[speciesId].push({ - biome: biome as Biome, + biome: biome as BiomeId, tier: tier as BiomePoolTier, tod: timesOfDay as TimeOfDay[] }); @@ -7788,7 +7788,7 @@ export function initBiomes() { let arrayIndex = 0; for (let t = 0; t < biomeTierPool.length; t++) { - const existingSpeciesIds = biomeTierPool[t] as unknown as Species[]; + const existingSpeciesIds = biomeTierPool[t] as unknown as SpeciesId[]; for (let es = 0; es < existingSpeciesIds.length; es++) { const existingSpeciesId = existingSpeciesIds[es]; if (pokemonEvolutions.hasOwnProperty(existingSpeciesId) && (pokemonEvolutions[existingSpeciesId] as SpeciesFormEvolution[]).find(ese => ese.speciesId === speciesId)) { @@ -7808,9 +7808,9 @@ export function initBiomes() { } if (treeIndex > -1) { - (biomeTierPool[treeIndex] as unknown as Species[]).splice(arrayIndex, 0, speciesId); + (biomeTierPool[treeIndex] as unknown as SpeciesId[]).splice(arrayIndex, 0, speciesId); } else { - (biomeTierPool as unknown as Species[][]).push([ speciesId ]); + (biomeTierPool as unknown as SpeciesId[][]).push([ speciesId ]); } } } @@ -7913,12 +7913,12 @@ export function initBiomes() { // } // } - // console.log(beautify(pokemonOutput, null, 2, 180).replace(/( | (?:\{ "\d+": \[ )?| "(?:.*?)": \[ |(?:,|\[) (?:"\w+": \[ |(?:\{ )?"\d+": \[ )?)"(\w+)"(?= |,|\n)/g, "$1Species.$2").replace(/"(\d+)": /g, "$1: ").replace(/((?: )|(?:(?!\n) "(?:.*?)": \{) |\[(?: .*? )?\], )"(\w+)"/g, "$1[TimeOfDay.$2]").replace(/( )"(.*?)"/g, "$1[BiomePoolTier.$2]").replace(/( )"(.*?)"/g, "$1[Biome.$2]")); - // console.log(beautify(trainerOutput, null, 2, 120).replace(/( | (?:\{ "\d+": \[ )?| "(?:.*?)": \[ |, (?:(?:\{ )?"\d+": \[ )?)"(.*?)"/g, "$1TrainerType.$2").replace(/"(\d+)": /g, "$1: ").replace(/( )"(.*?)"/g, "$1[BiomePoolTier.$2]").replace(/( )"(.*?)"/g, "$1[Biome.$2]")); + // console.log(beautify(pokemonOutput, null, 2, 180).replace(/( | (?:\{ "\d+": \[ )?| "(?:.*?)": \[ |(?:,|\[) (?:"\w+": \[ |(?:\{ )?"\d+": \[ )?)"(\w+)"(?= |,|\n)/g, "$1SpeciesId.$2").replace(/"(\d+)": /g, "$1: ").replace(/((?: )|(?:(?!\n) "(?:.*?)": \{) |\[(?: .*? )?\], )"(\w+)"/g, "$1[TimeOfDay.$2]").replace(/( )"(.*?)"/g, "$1[BiomePoolTier.$2]").replace(/( )"(.*?)"/g, "$1[BiomeId.$2]")); + // console.log(beautify(trainerOutput, null, 2, 120).replace(/( | (?:\{ "\d+": \[ )?| "(?:.*?)": \[ |, (?:(?:\{ )?"\d+": \[ )?)"(.*?)"/g, "$1TrainerType.$2").replace(/"(\d+)": /g, "$1: ").replace(/( )"(.*?)"/g, "$1[BiomePoolTier.$2]").replace(/( )"(.*?)"/g, "$1[BiomeId.$2]")); // } /*for (let pokemon of allSpecies) { - if (pokemon.speciesId >= Species.XERNEAS) + if (pokemon.speciesId >= SpeciesId.XERNEAS) break; pokemonBiomes[pokemon.speciesId - 1][0] = Species[pokemonBiomes[pokemon.speciesId - 1][0]]; pokemonBiomes[pokemon.speciesId - 1][1] = Type[pokemonBiomes[pokemon.speciesId - 1][1]]; diff --git a/src/data/balance/egg-moves.ts b/src/data/balance/egg-moves.ts index 73c6300166b..436e6bc6e76 100644 --- a/src/data/balance/egg-moves.ts +++ b/src/data/balance/egg-moves.ts @@ -1,594 +1,594 @@ import { allMoves } from "../data-lists"; import { getEnumKeys, getEnumValues } from "#app/utils/common"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; export const speciesEggMoves = { - [Species.BULBASAUR]: [ Moves.SAPPY_SEED, Moves.MALIGNANT_CHAIN, Moves.EARTH_POWER, Moves.MATCHA_GOTCHA ], - [Species.CHARMANDER]: [ Moves.DRAGON_DANCE, Moves.BITTER_BLADE, Moves.EARTH_POWER, Moves.OBLIVION_WING ], - [Species.SQUIRTLE]: [ Moves.FREEZE_DRY, Moves.ARMOR_CANNON, Moves.SHORE_UP, Moves.ORIGIN_PULSE ], - [Species.CATERPIE]: [ Moves.SANDSEAR_STORM, Moves.SILK_TRAP, Moves.TWIN_BEAM, Moves.BLEAKWIND_STORM ], - [Species.WEEDLE]: [ Moves.THOUSAND_ARROWS, Moves.NOXIOUS_TORQUE, Moves.ATTACK_ORDER, Moves.VICTORY_DANCE ], - [Species.PIDGEY]: [ Moves.BLEAKWIND_STORM, Moves.SANDSEAR_STORM, Moves.CALM_MIND, Moves.BOOMBURST ], - [Species.RATTATA]: [ Moves.HYPER_FANG, Moves.PSYCHIC_FANGS, Moves.FIRE_FANG, Moves.EXTREME_SPEED ], - [Species.SPEAROW]: [ Moves.FLOATY_FALL, Moves.EXTREME_SPEED, Moves.KNOCK_OFF, Moves.TRIPLE_ARROWS ], - [Species.EKANS]: [ Moves.NOXIOUS_TORQUE, Moves.DRAGON_DANCE, Moves.SLACK_OFF, Moves.SHED_TAIL ], - [Species.SANDSHREW]: [ Moves.HIGH_HORSEPOWER, Moves.DIRE_CLAW, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE ], - [Species.NIDORAN_F]: [ Moves.CALM_MIND, Moves.MOONLIGHT, Moves.MALIGNANT_CHAIN, Moves.SANDSEAR_STORM ], - [Species.NIDORAN_M]: [ Moves.DRAGON_DANCE, Moves.MOUNTAIN_GALE, Moves.NOXIOUS_TORQUE, Moves.PRECIPICE_BLADES ], - [Species.VULPIX]: [ Moves.MOONBLAST, Moves.INFERNAL_PARADE, Moves.MORNING_SUN, Moves.TAIL_GLOW ], - [Species.ZUBAT]: [ Moves.FLOATY_FALL, Moves.DIRE_CLAW, Moves.SWORDS_DANCE, Moves.COLLISION_COURSE ], - [Species.ODDISH]: [ Moves.SLUDGE_BOMB, Moves.FIERY_DANCE, Moves.STRENGTH_SAP, Moves.SPORE ], - [Species.PARAS]: [ Moves.LEECH_LIFE, Moves.HORN_LEECH, Moves.CRABHAMMER, Moves.SAPPY_SEED ], - [Species.VENONAT]: [ Moves.SLUDGE_BOMB, Moves.TOXIC_THREAD, Moves.EARTH_POWER, Moves.STORED_POWER ], - [Species.DIGLETT]: [ Moves.TRIPLE_DIVE, Moves.SWORDS_DANCE, Moves.TRIPLE_AXEL, Moves.HEADLONG_RUSH ], - [Species.MEOWTH]: [ Moves.HEART_STAMP, Moves.SWORDS_DANCE, Moves.SIZZLY_SLIDE, Moves.TAIL_SLAP ], - [Species.PSYDUCK]: [ Moves.FROST_BREATH, Moves.AQUA_STEP, Moves.MYSTICAL_POWER, Moves.BOUNCY_BUBBLE ], - [Species.MANKEY]: [ Moves.DRAIN_PUNCH, Moves.SLACK_OFF, Moves.METEOR_MASH, Moves.NO_RETREAT ], - [Species.GROWLITHE]: [ Moves.ZING_ZAP, Moves.PARTING_SHOT, Moves.MORNING_SUN, Moves.SACRED_FIRE ], - [Species.POLIWAG]: [ Moves.SLACK_OFF, Moves.WILDBOLT_STORM, Moves.DRAIN_PUNCH, Moves.SURGING_STRIKES ], - [Species.ABRA]: [ Moves.AURA_SPHERE, Moves.BADDY_BAD, Moves.ICE_BEAM, Moves.PSYSTRIKE ], - [Species.MACHOP]: [ Moves.COMBAT_TORQUE, Moves.METEOR_MASH, Moves.MOUNTAIN_GALE, Moves.FISSURE ], - [Species.BELLSPROUT]: [ Moves.SOLAR_BLADE, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.VICTORY_DANCE ], - [Species.TENTACOOL]: [ Moves.BANEFUL_BUNKER, Moves.MALIGNANT_CHAIN, Moves.BOUNCY_BUBBLE, Moves.STRENGTH_SAP ], - [Species.GEODUDE]: [ Moves.FLARE_BLITZ, Moves.HEAD_SMASH, Moves.SHORE_UP, Moves.SHELL_SMASH ], - [Species.PONYTA]: [ Moves.HEADLONG_RUSH, Moves.FIRE_LASH, Moves.SWORDS_DANCE, Moves.VOLT_TACKLE ], - [Species.SLOWPOKE]: [ Moves.SPLISHY_SPLASH, Moves.FROST_BREATH, Moves.SHED_TAIL, Moves.MYSTICAL_POWER ], - [Species.MAGNEMITE]: [ Moves.PARABOLIC_CHARGE, Moves.FLAMETHROWER, Moves.ICE_BEAM, Moves.THUNDERCLAP ], - [Species.FARFETCHD]: [ Moves.IVY_CUDGEL, Moves.TRIPLE_ARROWS, Moves.DRILL_RUN, Moves.VICTORY_DANCE ], - [Species.DODUO]: [ Moves.TRIPLE_AXEL, Moves.HYPER_DRILL, Moves.FLOATY_FALL, Moves.TRIPLE_ARROWS ], - [Species.SEEL]: [ Moves.FREEZE_DRY, Moves.BOUNCY_BUBBLE, Moves.SLACK_OFF, Moves.STEAM_ERUPTION ], - [Species.GRIMER]: [ Moves.SUCKER_PUNCH, Moves.CURSE, Moves.NOXIOUS_TORQUE, Moves.STRENGTH_SAP ], - [Species.SHELLDER]: [ Moves.ROCK_BLAST, Moves.WATER_SHURIKEN, Moves.BANEFUL_BUNKER, Moves.BONE_RUSH ], - [Species.GASTLY]: [ Moves.MALIGNANT_CHAIN, Moves.AURA_SPHERE, Moves.PARTING_SHOT, Moves.DARK_VOID ], - [Species.ONIX]: [ Moves.SHORE_UP, Moves.THOUSAND_WAVES, Moves.COIL, Moves.DIAMOND_STORM ], - [Species.DROWZEE]: [ Moves.BADDY_BAD, Moves.STRENGTH_SAP, Moves.LUMINA_CRASH, Moves.DARK_VOID ], - [Species.KRABBY]: [ Moves.DIRE_CLAW, Moves.DRAGON_HAMMER, Moves.IVY_CUDGEL, Moves.JET_PUNCH ], - [Species.VOLTORB]: [ Moves.NASTY_PLOT, Moves.FUSION_FLARE, Moves.FROST_BREATH, Moves.ELECTRO_DRIFT ], - [Species.EXEGGCUTE]: [ Moves.FICKLE_BEAM, Moves.APPLE_ACID, Moves.HEAT_WAVE, Moves.LUMINA_CRASH ], - [Species.CUBONE]: [ Moves.HEAD_SMASH, Moves.WOOD_HAMMER, Moves.SHADOW_SNEAK, Moves.BITTER_BLADE ], - [Species.LICKITUNG]: [ Moves.CRUSH_GRIP, Moves.FIRE_LASH, Moves.SLACK_OFF, Moves.MAGICAL_TORQUE ], - [Species.KOFFING]: [ Moves.SCALD, Moves.RECOVER, Moves.BODY_PRESS, Moves.MALIGNANT_CHAIN ], - [Species.RHYHORN]: [ Moves.SHORE_UP, Moves.ICE_HAMMER, Moves.ACCELEROCK, Moves.HEAD_SMASH ], - [Species.TANGELA]: [ Moves.NATURES_MADNESS, Moves.SNAP_TRAP, Moves.PARTING_SHOT, Moves.SAPPY_SEED ], - [Species.KANGASKHAN]: [ Moves.POWER_UP_PUNCH, Moves.TRAILBLAZE, Moves.COVET, Moves.SEISMIC_TOSS ], - [Species.HORSEA]: [ Moves.SNIPE_SHOT, Moves.TAKE_HEART, Moves.SHELL_SIDE_ARM, Moves.DRAGON_ENERGY ], - [Species.GOLDEEN]: [ Moves.GLACIAL_LANCE, Moves.SUPERCELL_SLAM, Moves.DRAGON_DANCE, Moves.FISHIOUS_REND ], - [Species.STARYU]: [ Moves.CALM_MIND, Moves.BOUNCY_BUBBLE, Moves.MOONBLAST, Moves.MYSTICAL_POWER ], - [Species.SCYTHER]: [ Moves.MIGHTY_CLEAVE, Moves.GEAR_GRIND, Moves.STORM_THROW, Moves.BITTER_BLADE ], - [Species.PINSIR]: [ Moves.HEADLONG_RUSH, Moves.LEECH_LIFE, Moves.CRUSH_GRIP, Moves.EXTREME_SPEED ], - [Species.TAUROS]: [ Moves.SWORDS_DANCE, Moves.FIRE_LASH, Moves.WICKED_TORQUE, Moves.COLLISION_COURSE ], - [Species.MAGIKARP]: [ Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.KNOCK_OFF, Moves.DRAGON_ASCENT ], - [Species.LAPRAS]: [ Moves.RECOVER, Moves.FREEZE_DRY, Moves.SCALD, Moves.SHELL_SMASH ], - [Species.DITTO]: [ Moves.MIMIC, Moves.SKETCH, Moves.METRONOME, Moves.IMPRISON ], - [Species.EEVEE]: [ Moves.WISH, Moves.NO_RETREAT, Moves.ZIPPY_ZAP, Moves.BOOMBURST ], - [Species.PORYGON]: [ Moves.THUNDERCLAP, Moves.AURA_SPHERE, Moves.FLAMETHROWER, Moves.TECHNO_BLAST ], - [Species.OMANYTE]: [ Moves.FREEZE_DRY, Moves.GIGA_DRAIN, Moves.POWER_GEM, Moves.STEAM_ERUPTION ], - [Species.KABUTO]: [ Moves.CEASELESS_EDGE, Moves.HIGH_HORSEPOWER, Moves.CRABHAMMER, Moves.MIGHTY_CLEAVE ], - [Species.AERODACTYL]: [ Moves.FLOATY_FALL, Moves.HIGH_HORSEPOWER, Moves.STONE_AXE, Moves.SWORDS_DANCE ], - [Species.ARTICUNO]: [ Moves.EARTH_POWER, Moves.CALM_MIND, Moves.AURORA_VEIL, Moves.AEROBLAST ], - [Species.ZAPDOS]: [ Moves.BLEAKWIND_STORM, Moves.CALM_MIND, Moves.SANDSEAR_STORM, Moves.ELECTRO_SHOT ], - [Species.MOLTRES]: [ Moves.EARTH_POWER, Moves.CALM_MIND, Moves.AEROBLAST, Moves.TORCH_SONG ], - [Species.DRATINI]: [ Moves.DRAGON_HAMMER, Moves.CRUSH_GRIP, Moves.FIRE_LASH, Moves.GIGATON_HAMMER ], - [Species.MEWTWO]: [ Moves.METEOR_MASH, Moves.MOONBLAST, Moves.THUNDEROUS_KICK, Moves.PHOTON_GEYSER ], - [Species.MEW]: [ Moves.PHOTON_GEYSER, Moves.MOONBLAST, Moves.ASTRAL_BARRAGE, Moves.SHELL_SMASH ], + [SpeciesId.BULBASAUR]: [ MoveId.SAPPY_SEED, MoveId.MALIGNANT_CHAIN, MoveId.EARTH_POWER, MoveId.MATCHA_GOTCHA ], + [SpeciesId.CHARMANDER]: [ MoveId.DRAGON_DANCE, MoveId.BITTER_BLADE, MoveId.EARTH_POWER, MoveId.OBLIVION_WING ], + [SpeciesId.SQUIRTLE]: [ MoveId.FREEZE_DRY, MoveId.ARMOR_CANNON, MoveId.SHORE_UP, MoveId.ORIGIN_PULSE ], + [SpeciesId.CATERPIE]: [ MoveId.SANDSEAR_STORM, MoveId.SILK_TRAP, MoveId.TWIN_BEAM, MoveId.BLEAKWIND_STORM ], + [SpeciesId.WEEDLE]: [ MoveId.THOUSAND_ARROWS, MoveId.NOXIOUS_TORQUE, MoveId.ATTACK_ORDER, MoveId.VICTORY_DANCE ], + [SpeciesId.PIDGEY]: [ MoveId.BLEAKWIND_STORM, MoveId.SANDSEAR_STORM, MoveId.CALM_MIND, MoveId.BOOMBURST ], + [SpeciesId.RATTATA]: [ MoveId.HYPER_FANG, MoveId.PSYCHIC_FANGS, MoveId.FIRE_FANG, MoveId.EXTREME_SPEED ], + [SpeciesId.SPEAROW]: [ MoveId.FLOATY_FALL, MoveId.EXTREME_SPEED, MoveId.KNOCK_OFF, MoveId.TRIPLE_ARROWS ], + [SpeciesId.EKANS]: [ MoveId.NOXIOUS_TORQUE, MoveId.DRAGON_DANCE, MoveId.SLACK_OFF, MoveId.SHED_TAIL ], + [SpeciesId.SANDSHREW]: [ MoveId.HIGH_HORSEPOWER, MoveId.DIRE_CLAW, MoveId.SHORE_UP, MoveId.MIGHTY_CLEAVE ], + [SpeciesId.NIDORAN_F]: [ MoveId.CALM_MIND, MoveId.MOONLIGHT, MoveId.MALIGNANT_CHAIN, MoveId.SANDSEAR_STORM ], + [SpeciesId.NIDORAN_M]: [ MoveId.DRAGON_DANCE, MoveId.MOUNTAIN_GALE, MoveId.NOXIOUS_TORQUE, MoveId.PRECIPICE_BLADES ], + [SpeciesId.VULPIX]: [ MoveId.MOONBLAST, MoveId.INFERNAL_PARADE, MoveId.MORNING_SUN, MoveId.TAIL_GLOW ], + [SpeciesId.ZUBAT]: [ MoveId.FLOATY_FALL, MoveId.DIRE_CLAW, MoveId.SWORDS_DANCE, MoveId.COLLISION_COURSE ], + [SpeciesId.ODDISH]: [ MoveId.SLUDGE_BOMB, MoveId.FIERY_DANCE, MoveId.STRENGTH_SAP, MoveId.SPORE ], + [SpeciesId.PARAS]: [ MoveId.LEECH_LIFE, MoveId.HORN_LEECH, MoveId.CRABHAMMER, MoveId.SAPPY_SEED ], + [SpeciesId.VENONAT]: [ MoveId.SLUDGE_BOMB, MoveId.TOXIC_THREAD, MoveId.EARTH_POWER, MoveId.STORED_POWER ], + [SpeciesId.DIGLETT]: [ MoveId.TRIPLE_DIVE, MoveId.SWORDS_DANCE, MoveId.TRIPLE_AXEL, MoveId.HEADLONG_RUSH ], + [SpeciesId.MEOWTH]: [ MoveId.HEART_STAMP, MoveId.SWORDS_DANCE, MoveId.SIZZLY_SLIDE, MoveId.TAIL_SLAP ], + [SpeciesId.PSYDUCK]: [ MoveId.FROST_BREATH, MoveId.AQUA_STEP, MoveId.MYSTICAL_POWER, MoveId.BOUNCY_BUBBLE ], + [SpeciesId.MANKEY]: [ MoveId.DRAIN_PUNCH, MoveId.SLACK_OFF, MoveId.METEOR_MASH, MoveId.NO_RETREAT ], + [SpeciesId.GROWLITHE]: [ MoveId.ZING_ZAP, MoveId.PARTING_SHOT, MoveId.MORNING_SUN, MoveId.SACRED_FIRE ], + [SpeciesId.POLIWAG]: [ MoveId.SLACK_OFF, MoveId.WILDBOLT_STORM, MoveId.DRAIN_PUNCH, MoveId.SURGING_STRIKES ], + [SpeciesId.ABRA]: [ MoveId.AURA_SPHERE, MoveId.BADDY_BAD, MoveId.ICE_BEAM, MoveId.PSYSTRIKE ], + [SpeciesId.MACHOP]: [ MoveId.COMBAT_TORQUE, MoveId.METEOR_MASH, MoveId.MOUNTAIN_GALE, MoveId.FISSURE ], + [SpeciesId.BELLSPROUT]: [ MoveId.SOLAR_BLADE, MoveId.STRENGTH_SAP, MoveId.FIRE_LASH, MoveId.VICTORY_DANCE ], + [SpeciesId.TENTACOOL]: [ MoveId.BANEFUL_BUNKER, MoveId.MALIGNANT_CHAIN, MoveId.BOUNCY_BUBBLE, MoveId.STRENGTH_SAP ], + [SpeciesId.GEODUDE]: [ MoveId.FLARE_BLITZ, MoveId.HEAD_SMASH, MoveId.SHORE_UP, MoveId.SHELL_SMASH ], + [SpeciesId.PONYTA]: [ MoveId.HEADLONG_RUSH, MoveId.FIRE_LASH, MoveId.SWORDS_DANCE, MoveId.VOLT_TACKLE ], + [SpeciesId.SLOWPOKE]: [ MoveId.SPLISHY_SPLASH, MoveId.FROST_BREATH, MoveId.SHED_TAIL, MoveId.MYSTICAL_POWER ], + [SpeciesId.MAGNEMITE]: [ MoveId.PARABOLIC_CHARGE, MoveId.FLAMETHROWER, MoveId.ICE_BEAM, MoveId.THUNDERCLAP ], + [SpeciesId.FARFETCHD]: [ MoveId.IVY_CUDGEL, MoveId.TRIPLE_ARROWS, MoveId.DRILL_RUN, MoveId.VICTORY_DANCE ], + [SpeciesId.DODUO]: [ MoveId.TRIPLE_AXEL, MoveId.HYPER_DRILL, MoveId.FLOATY_FALL, MoveId.TRIPLE_ARROWS ], + [SpeciesId.SEEL]: [ MoveId.FREEZE_DRY, MoveId.BOUNCY_BUBBLE, MoveId.SLACK_OFF, MoveId.STEAM_ERUPTION ], + [SpeciesId.GRIMER]: [ MoveId.SUCKER_PUNCH, MoveId.CURSE, MoveId.NOXIOUS_TORQUE, MoveId.STRENGTH_SAP ], + [SpeciesId.SHELLDER]: [ MoveId.ROCK_BLAST, MoveId.WATER_SHURIKEN, MoveId.BANEFUL_BUNKER, MoveId.BONE_RUSH ], + [SpeciesId.GASTLY]: [ MoveId.MALIGNANT_CHAIN, MoveId.AURA_SPHERE, MoveId.PARTING_SHOT, MoveId.DARK_VOID ], + [SpeciesId.ONIX]: [ MoveId.SHORE_UP, MoveId.THOUSAND_WAVES, MoveId.COIL, MoveId.DIAMOND_STORM ], + [SpeciesId.DROWZEE]: [ MoveId.BADDY_BAD, MoveId.STRENGTH_SAP, MoveId.LUMINA_CRASH, MoveId.DARK_VOID ], + [SpeciesId.KRABBY]: [ MoveId.DIRE_CLAW, MoveId.DRAGON_HAMMER, MoveId.IVY_CUDGEL, MoveId.JET_PUNCH ], + [SpeciesId.VOLTORB]: [ MoveId.NASTY_PLOT, MoveId.FUSION_FLARE, MoveId.FROST_BREATH, MoveId.ELECTRO_DRIFT ], + [SpeciesId.EXEGGCUTE]: [ MoveId.FICKLE_BEAM, MoveId.APPLE_ACID, MoveId.HEAT_WAVE, MoveId.LUMINA_CRASH ], + [SpeciesId.CUBONE]: [ MoveId.HEAD_SMASH, MoveId.WOOD_HAMMER, MoveId.SHADOW_SNEAK, MoveId.BITTER_BLADE ], + [SpeciesId.LICKITUNG]: [ MoveId.CRUSH_GRIP, MoveId.FIRE_LASH, MoveId.SLACK_OFF, MoveId.MAGICAL_TORQUE ], + [SpeciesId.KOFFING]: [ MoveId.SCALD, MoveId.RECOVER, MoveId.BODY_PRESS, MoveId.MALIGNANT_CHAIN ], + [SpeciesId.RHYHORN]: [ MoveId.SHORE_UP, MoveId.ICE_HAMMER, MoveId.ACCELEROCK, MoveId.HEAD_SMASH ], + [SpeciesId.TANGELA]: [ MoveId.NATURES_MADNESS, MoveId.SNAP_TRAP, MoveId.PARTING_SHOT, MoveId.SAPPY_SEED ], + [SpeciesId.KANGASKHAN]: [ MoveId.POWER_UP_PUNCH, MoveId.TRAILBLAZE, MoveId.COVET, MoveId.SEISMIC_TOSS ], + [SpeciesId.HORSEA]: [ MoveId.SNIPE_SHOT, MoveId.TAKE_HEART, MoveId.SHELL_SIDE_ARM, MoveId.DRAGON_ENERGY ], + [SpeciesId.GOLDEEN]: [ MoveId.GLACIAL_LANCE, MoveId.SUPERCELL_SLAM, MoveId.DRAGON_DANCE, MoveId.FISHIOUS_REND ], + [SpeciesId.STARYU]: [ MoveId.CALM_MIND, MoveId.BOUNCY_BUBBLE, MoveId.MOONBLAST, MoveId.MYSTICAL_POWER ], + [SpeciesId.SCYTHER]: [ MoveId.MIGHTY_CLEAVE, MoveId.GEAR_GRIND, MoveId.STORM_THROW, MoveId.BITTER_BLADE ], + [SpeciesId.PINSIR]: [ MoveId.HEADLONG_RUSH, MoveId.LEECH_LIFE, MoveId.CRUSH_GRIP, MoveId.EXTREME_SPEED ], + [SpeciesId.TAUROS]: [ MoveId.SWORDS_DANCE, MoveId.FIRE_LASH, MoveId.WICKED_TORQUE, MoveId.COLLISION_COURSE ], + [SpeciesId.MAGIKARP]: [ MoveId.FLIP_TURN, MoveId.ICE_SPINNER, MoveId.KNOCK_OFF, MoveId.DRAGON_ASCENT ], + [SpeciesId.LAPRAS]: [ MoveId.RECOVER, MoveId.FREEZE_DRY, MoveId.SCALD, MoveId.SHELL_SMASH ], + [SpeciesId.DITTO]: [ MoveId.MIMIC, MoveId.SKETCH, MoveId.METRONOME, MoveId.IMPRISON ], + [SpeciesId.EEVEE]: [ MoveId.WISH, MoveId.NO_RETREAT, MoveId.ZIPPY_ZAP, MoveId.BOOMBURST ], + [SpeciesId.PORYGON]: [ MoveId.THUNDERCLAP, MoveId.AURA_SPHERE, MoveId.FLAMETHROWER, MoveId.TECHNO_BLAST ], + [SpeciesId.OMANYTE]: [ MoveId.FREEZE_DRY, MoveId.GIGA_DRAIN, MoveId.POWER_GEM, MoveId.STEAM_ERUPTION ], + [SpeciesId.KABUTO]: [ MoveId.CEASELESS_EDGE, MoveId.HIGH_HORSEPOWER, MoveId.CRABHAMMER, MoveId.MIGHTY_CLEAVE ], + [SpeciesId.AERODACTYL]: [ MoveId.FLOATY_FALL, MoveId.HIGH_HORSEPOWER, MoveId.STONE_AXE, MoveId.SWORDS_DANCE ], + [SpeciesId.ARTICUNO]: [ MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.AURORA_VEIL, MoveId.AEROBLAST ], + [SpeciesId.ZAPDOS]: [ MoveId.BLEAKWIND_STORM, MoveId.CALM_MIND, MoveId.SANDSEAR_STORM, MoveId.ELECTRO_SHOT ], + [SpeciesId.MOLTRES]: [ MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.AEROBLAST, MoveId.TORCH_SONG ], + [SpeciesId.DRATINI]: [ MoveId.DRAGON_HAMMER, MoveId.CRUSH_GRIP, MoveId.FIRE_LASH, MoveId.GIGATON_HAMMER ], + [SpeciesId.MEWTWO]: [ MoveId.METEOR_MASH, MoveId.MOONBLAST, MoveId.THUNDEROUS_KICK, MoveId.PHOTON_GEYSER ], + [SpeciesId.MEW]: [ MoveId.PHOTON_GEYSER, MoveId.MOONBLAST, MoveId.ASTRAL_BARRAGE, MoveId.SHELL_SMASH ], - [Species.CHIKORITA]: [ Moves.SAPPY_SEED, Moves.STONE_AXE, Moves.DRAGON_DANCE, Moves.SPORE ], - [Species.CYNDAQUIL]: [ Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.FIERY_DANCE, Moves.ELECTRO_DRIFT ], - [Species.TOTODILE]: [ Moves.THUNDER_PUNCH, Moves.DRAGON_DANCE, Moves.PLAY_ROUGH, Moves.SURGING_STRIKES ], - [Species.SENTRET]: [ Moves.TIDY_UP, Moves.FAKE_OUT, Moves.NUZZLE, Moves.EXTREME_SPEED ], - [Species.HOOTHOOT]: [ Moves.TAKE_HEART, Moves.ESPER_WING, Moves.AEROBLAST, Moves.BOOMBURST ], - [Species.LEDYBA]: [ Moves.POLLEN_PUFF, Moves.MAT_BLOCK, Moves.PARTING_SHOT, Moves.SPORE ], - [Species.SPINARAK]: [ Moves.PARTING_SHOT, Moves.ATTACK_ORDER, Moves.GASTRO_ACID, Moves.STRENGTH_SAP ], - [Species.CHINCHOU]: [ Moves.THUNDERCLAP, Moves.BOUNCY_BUBBLE, Moves.THUNDER_CAGE, Moves.TAIL_GLOW ], - [Species.PICHU]: [ Moves.MOONBLAST, Moves.TRIPLE_AXEL, Moves.FIERY_DANCE, Moves.AURA_WHEEL ], - [Species.CLEFFA]: [ Moves.CALM_MIND, Moves.EARTH_POWER, Moves.WISH, Moves.LIGHT_OF_RUIN ], - [Species.IGGLYBUFF]: [ Moves.DRAIN_PUNCH, Moves.GRAV_APPLE, Moves.SOFT_BOILED, Moves.EXTREME_SPEED ], - [Species.TOGEPI]: [ Moves.SCORCHING_SANDS, Moves.SPLISHY_SPLASH, Moves.RELIC_SONG, Moves.FIERY_DANCE ], - [Species.NATU]: [ Moves.REVIVAL_BLESSING, Moves.NASTY_PLOT, Moves.MOONBLAST, Moves.OBLIVION_WING ], - [Species.MAREEP]: [ Moves.ICE_BEAM, Moves.PARABOLIC_CHARGE, Moves.CORE_ENFORCER, Moves.TAIL_GLOW ], - [Species.HOPPIP]: [ Moves.FLOATY_FALL, Moves.STRENGTH_SAP, Moves.SAPPY_SEED, Moves.SPORE ], - [Species.AIPOM]: [ Moves.ROCK_BLAST, Moves.STORM_THROW, Moves.FAKE_OUT, Moves.SWORDS_DANCE ], - [Species.SUNKERN]: [ Moves.SPORE, Moves.QUIVER_DANCE, Moves.FIERY_DANCE, Moves.HYDRO_STEAM ], - [Species.YANMA]: [ Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.HEAT_WAVE, Moves.BLEAKWIND_STORM ], - [Species.WOOPER]: [ Moves.SIZZLY_SLIDE, Moves.RECOVER, Moves.SHED_TAIL, Moves.SURGING_STRIKES ], - [Species.MURKROW]: [ Moves.TRIPLE_ARROWS, Moves.FLOATY_FALL, Moves.TIDY_UP, Moves.WICKED_BLOW ], - [Species.MISDREAVUS]: [ Moves.TAKE_HEART, Moves.MOONBLAST, Moves.AURA_SPHERE, Moves.MOONGEIST_BEAM ], - [Species.UNOWN]: [ Moves.NATURE_POWER, Moves.COSMIC_POWER, Moves.ANCIENT_POWER, Moves.MYSTICAL_POWER ], - [Species.GIRAFARIG]: [ Moves.MYSTICAL_POWER, Moves.NIGHT_DAZE, Moves.RECOVER, Moves.BOOMBURST ], - [Species.PINECO]: [ Moves.METAL_BURST, Moves.SHORE_UP, Moves.BODY_PRESS, Moves.DIAMOND_STORM ], - [Species.DUNSPARCE]: [ Moves.WICKED_TORQUE, Moves.MAGICAL_TORQUE, Moves.BLAZING_TORQUE, Moves.EXTREME_SPEED ], - [Species.GLIGAR]: [ Moves.FLOATY_FALL, Moves.THOUSAND_WAVES, Moves.SPIKY_SHIELD, Moves.MIGHTY_CLEAVE ], - [Species.SNUBBULL]: [ Moves.FACADE, Moves.HIGH_HORSEPOWER, Moves.SWORDS_DANCE, Moves.EXTREME_SPEED ], - [Species.QWILFISH]: [ Moves.BARB_BARRAGE, Moves.BANEFUL_BUNKER, Moves.RECOVER, Moves.FISHIOUS_REND ], - [Species.SHUCKLE]: [ Moves.STUFF_CHEEKS, Moves.HEAL_ORDER, Moves.BODY_PRESS, Moves.SALT_CURE ], - [Species.HERACROSS]: [ Moves.ROCK_BLAST, Moves.STORM_THROW, Moves.ICICLE_SPEAR, Moves.SCALE_SHOT ], - [Species.SNEASEL]: [ Moves.DIRE_CLAW, Moves.DARKEST_LARIAT, Moves.TRIPLE_AXEL, Moves.CLOSE_COMBAT ], - [Species.TEDDIURSA]: [ Moves.MOUNTAIN_GALE, Moves.FAKE_OUT, Moves.SLACK_OFF, Moves.PRECIPICE_BLADES ], - [Species.SLUGMA]: [ Moves.BURNING_BULWARK, Moves.POWER_GEM, Moves.SOLAR_BEAM, Moves.MAGMA_STORM ], - [Species.SWINUB]: [ Moves.SLACK_OFF, Moves.MOUNTAIN_GALE, Moves.STONE_AXE, Moves.PRECIPICE_BLADES ], - [Species.CORSOLA]: [ Moves.SCALD, Moves.FREEZE_DRY, Moves.STRENGTH_SAP, Moves.SALT_CURE ], - [Species.REMORAID]: [ Moves.WATER_SHURIKEN, Moves.TAKE_HEART, Moves.SHELL_SIDE_ARM, Moves.BOUNCY_BUBBLE ], - [Species.DELIBIRD]: [ Moves.BONEMERANG, Moves.FLOATY_FALL, Moves.VICTORY_DANCE, Moves.GLACIAL_LANCE ], - [Species.SKARMORY]: [ Moves.ROOST, Moves.BODY_PRESS, Moves.SPIKY_SHIELD, Moves.BEAK_BLAST ], - [Species.HOUNDOUR]: [ Moves.FIERY_WRATH, Moves.THUNDERBOLT, Moves.MOONBLAST, Moves.ARMOR_CANNON ], - [Species.PHANPY]: [ Moves.SHORE_UP, Moves.SWORDS_DANCE, Moves.MOUNTAIN_GALE, Moves.COLLISION_COURSE ], - [Species.STANTLER]: [ Moves.THUNDEROUS_KICK, Moves.PHOTON_GEYSER, Moves.SWORDS_DANCE, Moves.BOOMBURST ], - [Species.SMEARGLE]: [ Moves.CONVERSION, Moves.BURNING_BULWARK, Moves.SALT_CURE, Moves.DARK_VOID ], - [Species.TYROGUE]: [ Moves.VICTORY_DANCE, Moves.THUNDEROUS_KICK, Moves.METEOR_MASH, Moves.WICKED_BLOW ], - [Species.SMOOCHUM]: [ Moves.LUSTER_PURGE, Moves.AURA_SPHERE, Moves.FREEZE_DRY, Moves.QUIVER_DANCE ], - [Species.ELEKID]: [ Moves.FIRE_LASH, Moves.ZING_ZAP, Moves.MOUNTAIN_GALE, Moves.SHIFT_GEAR ], - [Species.MAGBY]: [ Moves.THUNDERCLAP, Moves.EARTH_POWER, Moves.ENERGY_BALL, Moves.BLUE_FLARE ], - [Species.MILTANK]: [ Moves.BODY_PRESS, Moves.BULK_UP, Moves.KNOCK_OFF, Moves.SIZZLY_SLIDE ], - [Species.RAIKOU]: [ Moves.PARABOLIC_CHARGE, Moves.NASTY_PLOT, Moves.FROST_BREATH, Moves.ELECTRO_DRIFT ], - [Species.ENTEI]: [ Moves.BURNING_BULWARK, Moves.DRAGON_DANCE, Moves.EARTHQUAKE, Moves.PYRO_BALL ], - [Species.SUICUNE]: [ Moves.RECOVER, Moves.NASTY_PLOT, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], - [Species.LARVITAR]: [ Moves.DRAGON_DANCE, Moves.MOUNTAIN_GALE, Moves.SHORE_UP, Moves.DIAMOND_STORM ], - [Species.LUGIA]: [ Moves.NASTY_PLOT, Moves.LUMINA_CRASH, Moves.AURA_SPHERE, Moves.OBLIVION_WING ], - [Species.HO_OH]: [ Moves.BRAVE_BIRD, Moves.DRAGON_DANCE, Moves.REVIVAL_BLESSING, Moves.BOLT_BEAK ], - [Species.CELEBI]: [ Moves.PHOTON_GEYSER, Moves.MATCHA_GOTCHA, Moves.REVIVAL_BLESSING, Moves.QUIVER_DANCE ], + [SpeciesId.CHIKORITA]: [ MoveId.SAPPY_SEED, MoveId.STONE_AXE, MoveId.DRAGON_DANCE, MoveId.SPORE ], + [SpeciesId.CYNDAQUIL]: [ MoveId.NASTY_PLOT, MoveId.EARTH_POWER, MoveId.FIERY_DANCE, MoveId.ELECTRO_DRIFT ], + [SpeciesId.TOTODILE]: [ MoveId.THUNDER_PUNCH, MoveId.DRAGON_DANCE, MoveId.PLAY_ROUGH, MoveId.SURGING_STRIKES ], + [SpeciesId.SENTRET]: [ MoveId.TIDY_UP, MoveId.FAKE_OUT, MoveId.NUZZLE, MoveId.EXTREME_SPEED ], + [SpeciesId.HOOTHOOT]: [ MoveId.TAKE_HEART, MoveId.ESPER_WING, MoveId.AEROBLAST, MoveId.BOOMBURST ], + [SpeciesId.LEDYBA]: [ MoveId.POLLEN_PUFF, MoveId.MAT_BLOCK, MoveId.PARTING_SHOT, MoveId.SPORE ], + [SpeciesId.SPINARAK]: [ MoveId.PARTING_SHOT, MoveId.ATTACK_ORDER, MoveId.GASTRO_ACID, MoveId.STRENGTH_SAP ], + [SpeciesId.CHINCHOU]: [ MoveId.THUNDERCLAP, MoveId.BOUNCY_BUBBLE, MoveId.THUNDER_CAGE, MoveId.TAIL_GLOW ], + [SpeciesId.PICHU]: [ MoveId.MOONBLAST, MoveId.TRIPLE_AXEL, MoveId.FIERY_DANCE, MoveId.AURA_WHEEL ], + [SpeciesId.CLEFFA]: [ MoveId.CALM_MIND, MoveId.EARTH_POWER, MoveId.WISH, MoveId.LIGHT_OF_RUIN ], + [SpeciesId.IGGLYBUFF]: [ MoveId.DRAIN_PUNCH, MoveId.GRAV_APPLE, MoveId.SOFT_BOILED, MoveId.EXTREME_SPEED ], + [SpeciesId.TOGEPI]: [ MoveId.SCORCHING_SANDS, MoveId.SPLISHY_SPLASH, MoveId.RELIC_SONG, MoveId.FIERY_DANCE ], + [SpeciesId.NATU]: [ MoveId.REVIVAL_BLESSING, MoveId.NASTY_PLOT, MoveId.MOONBLAST, MoveId.OBLIVION_WING ], + [SpeciesId.MAREEP]: [ MoveId.ICE_BEAM, MoveId.PARABOLIC_CHARGE, MoveId.CORE_ENFORCER, MoveId.TAIL_GLOW ], + [SpeciesId.HOPPIP]: [ MoveId.FLOATY_FALL, MoveId.STRENGTH_SAP, MoveId.SAPPY_SEED, MoveId.SPORE ], + [SpeciesId.AIPOM]: [ MoveId.ROCK_BLAST, MoveId.STORM_THROW, MoveId.FAKE_OUT, MoveId.SWORDS_DANCE ], + [SpeciesId.SUNKERN]: [ MoveId.SPORE, MoveId.QUIVER_DANCE, MoveId.FIERY_DANCE, MoveId.HYDRO_STEAM ], + [SpeciesId.YANMA]: [ MoveId.NASTY_PLOT, MoveId.EARTH_POWER, MoveId.HEAT_WAVE, MoveId.BLEAKWIND_STORM ], + [SpeciesId.WOOPER]: [ MoveId.SIZZLY_SLIDE, MoveId.RECOVER, MoveId.SHED_TAIL, MoveId.SURGING_STRIKES ], + [SpeciesId.MURKROW]: [ MoveId.TRIPLE_ARROWS, MoveId.FLOATY_FALL, MoveId.TIDY_UP, MoveId.WICKED_BLOW ], + [SpeciesId.MISDREAVUS]: [ MoveId.TAKE_HEART, MoveId.MOONBLAST, MoveId.AURA_SPHERE, MoveId.MOONGEIST_BEAM ], + [SpeciesId.UNOWN]: [ MoveId.NATURE_POWER, MoveId.COSMIC_POWER, MoveId.ANCIENT_POWER, MoveId.MYSTICAL_POWER ], + [SpeciesId.GIRAFARIG]: [ MoveId.MYSTICAL_POWER, MoveId.NIGHT_DAZE, MoveId.RECOVER, MoveId.BOOMBURST ], + [SpeciesId.PINECO]: [ MoveId.METAL_BURST, MoveId.SHORE_UP, MoveId.BODY_PRESS, MoveId.DIAMOND_STORM ], + [SpeciesId.DUNSPARCE]: [ MoveId.WICKED_TORQUE, MoveId.MAGICAL_TORQUE, MoveId.BLAZING_TORQUE, MoveId.EXTREME_SPEED ], + [SpeciesId.GLIGAR]: [ MoveId.FLOATY_FALL, MoveId.THOUSAND_WAVES, MoveId.SPIKY_SHIELD, MoveId.MIGHTY_CLEAVE ], + [SpeciesId.SNUBBULL]: [ MoveId.FACADE, MoveId.HIGH_HORSEPOWER, MoveId.SWORDS_DANCE, MoveId.EXTREME_SPEED ], + [SpeciesId.QWILFISH]: [ MoveId.BARB_BARRAGE, MoveId.BANEFUL_BUNKER, MoveId.RECOVER, MoveId.FISHIOUS_REND ], + [SpeciesId.SHUCKLE]: [ MoveId.STUFF_CHEEKS, MoveId.HEAL_ORDER, MoveId.BODY_PRESS, MoveId.SALT_CURE ], + [SpeciesId.HERACROSS]: [ MoveId.ROCK_BLAST, MoveId.STORM_THROW, MoveId.ICICLE_SPEAR, MoveId.SCALE_SHOT ], + [SpeciesId.SNEASEL]: [ MoveId.DIRE_CLAW, MoveId.DARKEST_LARIAT, MoveId.TRIPLE_AXEL, MoveId.CLOSE_COMBAT ], + [SpeciesId.TEDDIURSA]: [ MoveId.MOUNTAIN_GALE, MoveId.FAKE_OUT, MoveId.SLACK_OFF, MoveId.PRECIPICE_BLADES ], + [SpeciesId.SLUGMA]: [ MoveId.BURNING_BULWARK, MoveId.POWER_GEM, MoveId.SOLAR_BEAM, MoveId.MAGMA_STORM ], + [SpeciesId.SWINUB]: [ MoveId.SLACK_OFF, MoveId.MOUNTAIN_GALE, MoveId.STONE_AXE, MoveId.PRECIPICE_BLADES ], + [SpeciesId.CORSOLA]: [ MoveId.SCALD, MoveId.FREEZE_DRY, MoveId.STRENGTH_SAP, MoveId.SALT_CURE ], + [SpeciesId.REMORAID]: [ MoveId.WATER_SHURIKEN, MoveId.TAKE_HEART, MoveId.SHELL_SIDE_ARM, MoveId.BOUNCY_BUBBLE ], + [SpeciesId.DELIBIRD]: [ MoveId.BONEMERANG, MoveId.FLOATY_FALL, MoveId.VICTORY_DANCE, MoveId.GLACIAL_LANCE ], + [SpeciesId.SKARMORY]: [ MoveId.ROOST, MoveId.BODY_PRESS, MoveId.SPIKY_SHIELD, MoveId.BEAK_BLAST ], + [SpeciesId.HOUNDOUR]: [ MoveId.FIERY_WRATH, MoveId.THUNDERBOLT, MoveId.MOONBLAST, MoveId.ARMOR_CANNON ], + [SpeciesId.PHANPY]: [ MoveId.SHORE_UP, MoveId.SWORDS_DANCE, MoveId.MOUNTAIN_GALE, MoveId.COLLISION_COURSE ], + [SpeciesId.STANTLER]: [ MoveId.THUNDEROUS_KICK, MoveId.PHOTON_GEYSER, MoveId.SWORDS_DANCE, MoveId.BOOMBURST ], + [SpeciesId.SMEARGLE]: [ MoveId.CONVERSION, MoveId.BURNING_BULWARK, MoveId.SALT_CURE, MoveId.DARK_VOID ], + [SpeciesId.TYROGUE]: [ MoveId.VICTORY_DANCE, MoveId.THUNDEROUS_KICK, MoveId.METEOR_MASH, MoveId.WICKED_BLOW ], + [SpeciesId.SMOOCHUM]: [ MoveId.LUSTER_PURGE, MoveId.AURA_SPHERE, MoveId.FREEZE_DRY, MoveId.QUIVER_DANCE ], + [SpeciesId.ELEKID]: [ MoveId.FIRE_LASH, MoveId.ZING_ZAP, MoveId.MOUNTAIN_GALE, MoveId.SHIFT_GEAR ], + [SpeciesId.MAGBY]: [ MoveId.THUNDERCLAP, MoveId.EARTH_POWER, MoveId.ENERGY_BALL, MoveId.BLUE_FLARE ], + [SpeciesId.MILTANK]: [ MoveId.BODY_PRESS, MoveId.BULK_UP, MoveId.KNOCK_OFF, MoveId.SIZZLY_SLIDE ], + [SpeciesId.RAIKOU]: [ MoveId.PARABOLIC_CHARGE, MoveId.NASTY_PLOT, MoveId.FROST_BREATH, MoveId.ELECTRO_DRIFT ], + [SpeciesId.ENTEI]: [ MoveId.BURNING_BULWARK, MoveId.DRAGON_DANCE, MoveId.EARTHQUAKE, MoveId.PYRO_BALL ], + [SpeciesId.SUICUNE]: [ MoveId.RECOVER, MoveId.NASTY_PLOT, MoveId.FREEZE_DRY, MoveId.STEAM_ERUPTION ], + [SpeciesId.LARVITAR]: [ MoveId.DRAGON_DANCE, MoveId.MOUNTAIN_GALE, MoveId.SHORE_UP, MoveId.DIAMOND_STORM ], + [SpeciesId.LUGIA]: [ MoveId.NASTY_PLOT, MoveId.LUMINA_CRASH, MoveId.AURA_SPHERE, MoveId.OBLIVION_WING ], + [SpeciesId.HO_OH]: [ MoveId.BRAVE_BIRD, MoveId.DRAGON_DANCE, MoveId.REVIVAL_BLESSING, MoveId.BOLT_BEAK ], + [SpeciesId.CELEBI]: [ MoveId.PHOTON_GEYSER, MoveId.MATCHA_GOTCHA, MoveId.REVIVAL_BLESSING, MoveId.QUIVER_DANCE ], - [Species.TREECKO]: [ Moves.NASTY_PLOT, Moves.CORE_ENFORCER, Moves.FLAMETHROWER, Moves.SEED_FLARE ], - [Species.TORCHIC]: [ Moves.THUNDEROUS_KICK, Moves.ZING_ZAP, Moves.BURNING_BULWARK, Moves.PYRO_BALL ], - [Species.MUDKIP]: [ Moves.SHORE_UP, Moves.MOUNTAIN_GALE, Moves.AQUA_STEP, Moves.PRECIPICE_BLADES ], - [Species.POOCHYENA]: [ Moves.KNOCK_OFF, Moves.CLOSE_COMBAT, Moves.DIRE_CLAW, Moves.VICTORY_DANCE ], - [Species.ZIGZAGOON]: [ Moves.EXTREME_SPEED, Moves.NUZZLE, Moves.HIGH_HORSEPOWER, Moves.TIDY_UP ], - [Species.WURMPLE]: [ Moves.BATON_PASS, Moves.BLEAKWIND_STORM, Moves.STORED_POWER, Moves.MALIGNANT_CHAIN ], - [Species.LOTAD]: [ Moves.REVELATION_DANCE, Moves.APPLE_ACID, Moves.ICE_BEAM, Moves.QUIVER_DANCE ], - [Species.SEEDOT]: [ Moves.SWORDS_DANCE, Moves.SACRED_SWORD, Moves.KOWTOW_CLEAVE, Moves.BITTER_BLADE ], - [Species.TAILLOW]: [ Moves.BOOMBURST, Moves.FACADE, Moves.HEADLONG_RUSH, Moves.NO_RETREAT ], - [Species.WINGULL]: [ Moves.THUNDER, Moves.FLIP_TURN, Moves.CALM_MIND, Moves.STEAM_ERUPTION ], - [Species.RALTS]: [ Moves.PSYBLADE, Moves.BITTER_BLADE, Moves.NO_RETREAT, Moves.BOOMBURST ], - [Species.SURSKIT]: [ Moves.POLLEN_PUFF, Moves.FIERY_DANCE, Moves.BOUNCY_BUBBLE, Moves.AEROBLAST ], - [Species.SHROOMISH]: [ Moves.ACCELEROCK, Moves.TRAILBLAZE, Moves.STORM_THROW, Moves.SAPPY_SEED ], - [Species.SLAKOTH]: [ Moves.FACADE, Moves.DRAIN_PUNCH, Moves.KNOCK_OFF, Moves.SKILL_SWAP ], - [Species.NINCADA]: [ Moves.BULLDOZE, Moves.STICKY_WEB, Moves.SHADOW_BONE, Moves.SHELL_SMASH ], - [Species.WHISMUR]: [ Moves.ALLURING_VOICE, Moves.SHIFT_GEAR, Moves.SPARKLING_ARIA, Moves.TORCH_SONG ], - [Species.MAKUHITA]: [ Moves.COMBAT_TORQUE, Moves.SLACK_OFF, Moves.HEAT_CRASH, Moves.DOUBLE_IRON_BASH ], - [Species.AZURILL]: [ Moves.JET_PUNCH, Moves.MAGICAL_TORQUE, Moves.SWORDS_DANCE, Moves.SURGING_STRIKES ], - [Species.NOSEPASS]: [ Moves.SHORE_UP, Moves.BODY_PRESS, Moves.CALM_MIND, Moves.TACHYON_CUTTER ], - [Species.SKITTY]: [ Moves.THUNDEROUS_KICK, Moves.ENTRAINMENT, Moves.TIDY_UP, Moves.V_CREATE ], - [Species.SABLEYE]: [ Moves.RECOVER, Moves.TOPSY_TURVY, Moves.CURSE, Moves.SALT_CURE ], - [Species.MAWILE]: [ Moves.BULLET_PUNCH, Moves.HORN_LEECH, Moves.EARTHQUAKE, Moves.MAGICAL_TORQUE ], - [Species.ARON]: [ Moves.HEAD_SMASH, Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SALT_CURE ], - [Species.MEDITITE]: [ Moves.THUNDEROUS_KICK, Moves.SUCKER_PUNCH, Moves.BULLET_PUNCH, Moves.PHOTON_GEYSER ], - [Species.ELECTRIKE]: [ Moves.FROST_BREATH, Moves.HEAT_WAVE, Moves.NASTY_PLOT, Moves.ELECTRO_DRIFT ], - [Species.PLUSLE]: [ Moves.FLAMETHROWER, Moves.GLITZY_GLOW, Moves.SPLISHY_SPLASH, Moves.TAIL_GLOW ], - [Species.MINUN]: [ Moves.ICE_BEAM, Moves.BADDY_BAD, Moves.SPARKLY_SWIRL, Moves.TAIL_GLOW ], - [Species.VOLBEAT]: [ Moves.BATON_PASS, Moves.STICKY_WEB, Moves.DECORATE, Moves.VICTORY_DANCE ], - [Species.ILLUMISE]: [ Moves.PARTING_SHOT, Moves.GLITZY_GLOW, Moves.POWDER, Moves.QUIVER_DANCE ], - [Species.GULPIN]: [ Moves.MALIGNANT_CHAIN, Moves.EARTH_POWER, Moves.CALM_MIND, Moves.STRENGTH_SAP ], - [Species.CARVANHA]: [ Moves.THUNDER_FANG, Moves.GUNK_SHOT, Moves.OBSTRUCT, Moves.SURGING_STRIKES ], - [Species.WAILMER]: [ Moves.TAKE_HEART, Moves.COMEUPPANCE, Moves.SLACK_OFF, Moves.STEAM_ERUPTION ], - [Species.NUMEL]: [ Moves.TRICK_ROOM, Moves.ENERGY_BALL, Moves.SLACK_OFF, Moves.BLUE_FLARE ], - [Species.TORKOAL]: [ Moves.MORNING_SUN, Moves.BURNING_BULWARK, Moves.BODY_PRESS, Moves.HYDRO_STEAM ], - [Species.SPOINK]: [ Moves.AURA_SPHERE, Moves.MILK_DRINK, Moves.EXPANDING_FORCE, Moves.TAIL_GLOW ], - [Species.SPINDA]: [ Moves.SUPERPOWER, Moves.SLACK_OFF, Moves.FLEUR_CANNON, Moves.V_CREATE ], - [Species.TRAPINCH]: [ Moves.FIRE_LASH, Moves.DRAGON_DARTS, Moves.THOUSAND_ARROWS, Moves.DRAGON_ENERGY ], - [Species.CACNEA]: [ Moves.EARTH_POWER, Moves.CEASELESS_EDGE, Moves.NIGHT_DAZE, Moves.IVY_CUDGEL ], - [Species.SWABLU]: [ Moves.ROOST, Moves.NASTY_PLOT, Moves.FLOATY_FALL, Moves.BOOMBURST ], - [Species.ZANGOOSE]: [ Moves.FACADE, Moves.HIGH_HORSEPOWER, Moves.EXTREME_SPEED, Moves.TIDY_UP ], - [Species.SEVIPER]: [ Moves.ICE_BEAM, Moves.BITTER_BLADE, Moves.SUCKER_PUNCH, Moves.NO_RETREAT ], - [Species.LUNATONE]: [ Moves.REVELATION_DANCE, Moves.MOONGEIST_BEAM, Moves.SHELL_SMASH, Moves.LUMINA_CRASH ], - [Species.SOLROCK]: [ Moves.MIGHTY_CLEAVE, Moves.PHOTON_GEYSER, Moves.SHELL_SMASH, Moves.SACRED_FIRE ], - [Species.BARBOACH]: [ Moves.DRAGON_DANCE, Moves.ZING_ZAP, Moves.ICE_SPINNER, Moves.SURGING_STRIKES ], - [Species.CORPHISH]: [ Moves.CEASELESS_EDGE, Moves.SHELL_SIDE_ARM, Moves.SUCKER_PUNCH, Moves.JET_PUNCH ], - [Species.BALTOY]: [ Moves.RECOVER, Moves.GLARE, Moves.RUINATION, Moves.MYSTICAL_POWER ], - [Species.LILEEP]: [ Moves.POWER_GEM, Moves.SCALD, Moves.STRENGTH_SAP, Moves.SAPPY_SEED ], - [Species.ANORITH]: [ Moves.FIRST_IMPRESSION, Moves.LEECH_LIFE, Moves.DRAGON_DANCE, Moves.MIGHTY_CLEAVE ], - [Species.FEEBAS]: [ Moves.CALM_MIND, Moves.FREEZE_DRY, Moves.MOONBLAST, Moves.STEAM_ERUPTION ], - [Species.CASTFORM]: [ Moves.BOOMBURST, Moves.HYDRO_STEAM, Moves.ERUPTION, Moves.QUIVER_DANCE ], - [Species.KECLEON]: [ Moves.ZIPPY_ZAP, Moves.COIL, Moves.EXTREME_SPEED, Moves.MULTI_ATTACK ], - [Species.SHUPPET]: [ Moves.STORM_THROW, Moves.TIDY_UP, Moves.PARTING_SHOT, Moves.SPECTRAL_THIEF ], - [Species.DUSKULL]: [ Moves.BULK_UP, Moves.DRAIN_PUNCH, Moves.RECOVER, Moves.RAGE_FIST ], - [Species.TROPIUS]: [ Moves.STUFF_CHEEKS, Moves.EARTH_POWER, Moves.APPLE_ACID, Moves.SAPPY_SEED ], - [Species.ABSOL]: [ Moves.KOWTOW_CLEAVE, Moves.SACRED_SWORD, Moves.PSYBLADE, Moves.BITTER_BLADE ], - [Species.WYNAUT]: [ Moves.RECOVER, Moves.SHED_TAIL, Moves.TAUNT, Moves.COMEUPPANCE ], - [Species.SNORUNT]: [ Moves.SPARKLY_SWIRL, Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.BLOOD_MOON ], - [Species.SPHEAL]: [ Moves.FLIP_TURN, Moves.FREEZE_DRY, Moves.SLACK_OFF, Moves.STEAM_ERUPTION ], - [Species.CLAMPERL]: [ Moves.SHELL_SIDE_ARM, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], - [Species.RELICANTH]: [ Moves.DRAGON_DANCE, Moves.SHORE_UP, Moves.WAVE_CRASH, Moves.DIAMOND_STORM ], - [Species.LUVDISC]: [ Moves.BATON_PASS, Moves.HEART_SWAP, Moves.GLITZY_GLOW, Moves.REVIVAL_BLESSING ], - [Species.BAGON]: [ Moves.HEADLONG_RUSH, Moves.FIRE_LASH, Moves.DRAGON_DANCE, Moves.DRAGON_DARTS ], - [Species.BELDUM]: [ Moves.HEADLONG_RUSH, Moves.DRAIN_PUNCH, Moves.ICE_SPINNER, Moves.SHIFT_GEAR ], - [Species.REGIROCK]: [ Moves.STONE_AXE, Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SALT_CURE ], - [Species.REGICE]: [ Moves.EARTH_POWER, Moves.TAKE_HEART, Moves.RECOVER, Moves.FREEZE_DRY ], - [Species.REGISTEEL]: [ Moves.BODY_PRESS, Moves.SIZZLY_SLIDE, Moves.RECOVER, Moves.GIGATON_HAMMER ], - [Species.LATIAS]: [ Moves.CORE_ENFORCER, Moves.FUSION_FLARE, Moves.SPARKLY_SWIRL, Moves.MYSTICAL_POWER ], - [Species.LATIOS]: [ Moves.CORE_ENFORCER, Moves.BLUE_FLARE, Moves.NASTY_PLOT, Moves.TACHYON_CUTTER ], - [Species.KYOGRE]: [ Moves.RECOVER, Moves.HURRICANE, Moves.FREEZY_FROST, Moves.WILDBOLT_STORM ], - [Species.GROUDON]: [ Moves.STONE_AXE, Moves.SOLAR_BLADE, Moves.MORNING_SUN, Moves.SACRED_FIRE ], - [Species.RAYQUAZA]: [ Moves.V_CREATE, Moves.DRAGON_DARTS, Moves.CORE_ENFORCER, Moves.OBLIVION_WING ], - [Species.JIRACHI]: [ Moves.TACHYON_CUTTER, Moves.TRIPLE_ARROWS, Moves.ROCK_SLIDE, Moves.SHELL_SMASH ], - [Species.DEOXYS]: [ Moves.COLLISION_COURSE, Moves.FUSION_FLARE, Moves.PARTING_SHOT, Moves.LUMINA_CRASH ], + [SpeciesId.TREECKO]: [ MoveId.NASTY_PLOT, MoveId.CORE_ENFORCER, MoveId.FLAMETHROWER, MoveId.SEED_FLARE ], + [SpeciesId.TORCHIC]: [ MoveId.THUNDEROUS_KICK, MoveId.ZING_ZAP, MoveId.BURNING_BULWARK, MoveId.PYRO_BALL ], + [SpeciesId.MUDKIP]: [ MoveId.SHORE_UP, MoveId.MOUNTAIN_GALE, MoveId.AQUA_STEP, MoveId.PRECIPICE_BLADES ], + [SpeciesId.POOCHYENA]: [ MoveId.KNOCK_OFF, MoveId.CLOSE_COMBAT, MoveId.DIRE_CLAW, MoveId.VICTORY_DANCE ], + [SpeciesId.ZIGZAGOON]: [ MoveId.EXTREME_SPEED, MoveId.NUZZLE, MoveId.HIGH_HORSEPOWER, MoveId.TIDY_UP ], + [SpeciesId.WURMPLE]: [ MoveId.BATON_PASS, MoveId.BLEAKWIND_STORM, MoveId.STORED_POWER, MoveId.MALIGNANT_CHAIN ], + [SpeciesId.LOTAD]: [ MoveId.REVELATION_DANCE, MoveId.APPLE_ACID, MoveId.ICE_BEAM, MoveId.QUIVER_DANCE ], + [SpeciesId.SEEDOT]: [ MoveId.SWORDS_DANCE, MoveId.SACRED_SWORD, MoveId.KOWTOW_CLEAVE, MoveId.BITTER_BLADE ], + [SpeciesId.TAILLOW]: [ MoveId.BOOMBURST, MoveId.FACADE, MoveId.HEADLONG_RUSH, MoveId.NO_RETREAT ], + [SpeciesId.WINGULL]: [ MoveId.THUNDER, MoveId.FLIP_TURN, MoveId.CALM_MIND, MoveId.STEAM_ERUPTION ], + [SpeciesId.RALTS]: [ MoveId.PSYBLADE, MoveId.BITTER_BLADE, MoveId.NO_RETREAT, MoveId.BOOMBURST ], + [SpeciesId.SURSKIT]: [ MoveId.POLLEN_PUFF, MoveId.FIERY_DANCE, MoveId.BOUNCY_BUBBLE, MoveId.AEROBLAST ], + [SpeciesId.SHROOMISH]: [ MoveId.ACCELEROCK, MoveId.TRAILBLAZE, MoveId.STORM_THROW, MoveId.SAPPY_SEED ], + [SpeciesId.SLAKOTH]: [ MoveId.FACADE, MoveId.DRAIN_PUNCH, MoveId.KNOCK_OFF, MoveId.SKILL_SWAP ], + [SpeciesId.NINCADA]: [ MoveId.BULLDOZE, MoveId.STICKY_WEB, MoveId.SHADOW_BONE, MoveId.SHELL_SMASH ], + [SpeciesId.WHISMUR]: [ MoveId.ALLURING_VOICE, MoveId.SHIFT_GEAR, MoveId.SPARKLING_ARIA, MoveId.TORCH_SONG ], + [SpeciesId.MAKUHITA]: [ MoveId.COMBAT_TORQUE, MoveId.SLACK_OFF, MoveId.HEAT_CRASH, MoveId.DOUBLE_IRON_BASH ], + [SpeciesId.AZURILL]: [ MoveId.JET_PUNCH, MoveId.MAGICAL_TORQUE, MoveId.SWORDS_DANCE, MoveId.SURGING_STRIKES ], + [SpeciesId.NOSEPASS]: [ MoveId.SHORE_UP, MoveId.BODY_PRESS, MoveId.CALM_MIND, MoveId.TACHYON_CUTTER ], + [SpeciesId.SKITTY]: [ MoveId.THUNDEROUS_KICK, MoveId.ENTRAINMENT, MoveId.TIDY_UP, MoveId.V_CREATE ], + [SpeciesId.SABLEYE]: [ MoveId.RECOVER, MoveId.TOPSY_TURVY, MoveId.CURSE, MoveId.SALT_CURE ], + [SpeciesId.MAWILE]: [ MoveId.BULLET_PUNCH, MoveId.HORN_LEECH, MoveId.EARTHQUAKE, MoveId.MAGICAL_TORQUE ], + [SpeciesId.ARON]: [ MoveId.HEAD_SMASH, MoveId.BODY_PRESS, MoveId.SHORE_UP, MoveId.SALT_CURE ], + [SpeciesId.MEDITITE]: [ MoveId.THUNDEROUS_KICK, MoveId.SUCKER_PUNCH, MoveId.BULLET_PUNCH, MoveId.PHOTON_GEYSER ], + [SpeciesId.ELECTRIKE]: [ MoveId.FROST_BREATH, MoveId.HEAT_WAVE, MoveId.NASTY_PLOT, MoveId.ELECTRO_DRIFT ], + [SpeciesId.PLUSLE]: [ MoveId.FLAMETHROWER, MoveId.GLITZY_GLOW, MoveId.SPLISHY_SPLASH, MoveId.TAIL_GLOW ], + [SpeciesId.MINUN]: [ MoveId.ICE_BEAM, MoveId.BADDY_BAD, MoveId.SPARKLY_SWIRL, MoveId.TAIL_GLOW ], + [SpeciesId.VOLBEAT]: [ MoveId.BATON_PASS, MoveId.STICKY_WEB, MoveId.DECORATE, MoveId.VICTORY_DANCE ], + [SpeciesId.ILLUMISE]: [ MoveId.PARTING_SHOT, MoveId.GLITZY_GLOW, MoveId.POWDER, MoveId.QUIVER_DANCE ], + [SpeciesId.GULPIN]: [ MoveId.MALIGNANT_CHAIN, MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.STRENGTH_SAP ], + [SpeciesId.CARVANHA]: [ MoveId.THUNDER_FANG, MoveId.GUNK_SHOT, MoveId.OBSTRUCT, MoveId.SURGING_STRIKES ], + [SpeciesId.WAILMER]: [ MoveId.TAKE_HEART, MoveId.COMEUPPANCE, MoveId.SLACK_OFF, MoveId.STEAM_ERUPTION ], + [SpeciesId.NUMEL]: [ MoveId.TRICK_ROOM, MoveId.ENERGY_BALL, MoveId.SLACK_OFF, MoveId.BLUE_FLARE ], + [SpeciesId.TORKOAL]: [ MoveId.MORNING_SUN, MoveId.BURNING_BULWARK, MoveId.BODY_PRESS, MoveId.HYDRO_STEAM ], + [SpeciesId.SPOINK]: [ MoveId.AURA_SPHERE, MoveId.MILK_DRINK, MoveId.EXPANDING_FORCE, MoveId.TAIL_GLOW ], + [SpeciesId.SPINDA]: [ MoveId.SUPERPOWER, MoveId.SLACK_OFF, MoveId.FLEUR_CANNON, MoveId.V_CREATE ], + [SpeciesId.TRAPINCH]: [ MoveId.FIRE_LASH, MoveId.DRAGON_DARTS, MoveId.THOUSAND_ARROWS, MoveId.DRAGON_ENERGY ], + [SpeciesId.CACNEA]: [ MoveId.EARTH_POWER, MoveId.CEASELESS_EDGE, MoveId.NIGHT_DAZE, MoveId.IVY_CUDGEL ], + [SpeciesId.SWABLU]: [ MoveId.ROOST, MoveId.NASTY_PLOT, MoveId.FLOATY_FALL, MoveId.BOOMBURST ], + [SpeciesId.ZANGOOSE]: [ MoveId.FACADE, MoveId.HIGH_HORSEPOWER, MoveId.EXTREME_SPEED, MoveId.TIDY_UP ], + [SpeciesId.SEVIPER]: [ MoveId.ICE_BEAM, MoveId.BITTER_BLADE, MoveId.SUCKER_PUNCH, MoveId.NO_RETREAT ], + [SpeciesId.LUNATONE]: [ MoveId.REVELATION_DANCE, MoveId.MOONGEIST_BEAM, MoveId.SHELL_SMASH, MoveId.LUMINA_CRASH ], + [SpeciesId.SOLROCK]: [ MoveId.MIGHTY_CLEAVE, MoveId.PHOTON_GEYSER, MoveId.SHELL_SMASH, MoveId.SACRED_FIRE ], + [SpeciesId.BARBOACH]: [ MoveId.DRAGON_DANCE, MoveId.ZING_ZAP, MoveId.ICE_SPINNER, MoveId.SURGING_STRIKES ], + [SpeciesId.CORPHISH]: [ MoveId.CEASELESS_EDGE, MoveId.SHELL_SIDE_ARM, MoveId.SUCKER_PUNCH, MoveId.JET_PUNCH ], + [SpeciesId.BALTOY]: [ MoveId.RECOVER, MoveId.GLARE, MoveId.RUINATION, MoveId.MYSTICAL_POWER ], + [SpeciesId.LILEEP]: [ MoveId.POWER_GEM, MoveId.SCALD, MoveId.STRENGTH_SAP, MoveId.SAPPY_SEED ], + [SpeciesId.ANORITH]: [ MoveId.FIRST_IMPRESSION, MoveId.LEECH_LIFE, MoveId.DRAGON_DANCE, MoveId.MIGHTY_CLEAVE ], + [SpeciesId.FEEBAS]: [ MoveId.CALM_MIND, MoveId.FREEZE_DRY, MoveId.MOONBLAST, MoveId.STEAM_ERUPTION ], + [SpeciesId.CASTFORM]: [ MoveId.BOOMBURST, MoveId.HYDRO_STEAM, MoveId.ERUPTION, MoveId.QUIVER_DANCE ], + [SpeciesId.KECLEON]: [ MoveId.ZIPPY_ZAP, MoveId.COIL, MoveId.EXTREME_SPEED, MoveId.MULTI_ATTACK ], + [SpeciesId.SHUPPET]: [ MoveId.STORM_THROW, MoveId.TIDY_UP, MoveId.PARTING_SHOT, MoveId.SPECTRAL_THIEF ], + [SpeciesId.DUSKULL]: [ MoveId.BULK_UP, MoveId.DRAIN_PUNCH, MoveId.RECOVER, MoveId.RAGE_FIST ], + [SpeciesId.TROPIUS]: [ MoveId.STUFF_CHEEKS, MoveId.EARTH_POWER, MoveId.APPLE_ACID, MoveId.SAPPY_SEED ], + [SpeciesId.ABSOL]: [ MoveId.KOWTOW_CLEAVE, MoveId.SACRED_SWORD, MoveId.PSYBLADE, MoveId.BITTER_BLADE ], + [SpeciesId.WYNAUT]: [ MoveId.RECOVER, MoveId.SHED_TAIL, MoveId.TAUNT, MoveId.COMEUPPANCE ], + [SpeciesId.SNORUNT]: [ MoveId.SPARKLY_SWIRL, MoveId.NASTY_PLOT, MoveId.EARTH_POWER, MoveId.BLOOD_MOON ], + [SpeciesId.SPHEAL]: [ MoveId.FLIP_TURN, MoveId.FREEZE_DRY, MoveId.SLACK_OFF, MoveId.STEAM_ERUPTION ], + [SpeciesId.CLAMPERL]: [ MoveId.SHELL_SIDE_ARM, MoveId.BOUNCY_BUBBLE, MoveId.FREEZE_DRY, MoveId.STEAM_ERUPTION ], + [SpeciesId.RELICANTH]: [ MoveId.DRAGON_DANCE, MoveId.SHORE_UP, MoveId.WAVE_CRASH, MoveId.DIAMOND_STORM ], + [SpeciesId.LUVDISC]: [ MoveId.BATON_PASS, MoveId.HEART_SWAP, MoveId.GLITZY_GLOW, MoveId.REVIVAL_BLESSING ], + [SpeciesId.BAGON]: [ MoveId.HEADLONG_RUSH, MoveId.FIRE_LASH, MoveId.DRAGON_DANCE, MoveId.DRAGON_DARTS ], + [SpeciesId.BELDUM]: [ MoveId.HEADLONG_RUSH, MoveId.DRAIN_PUNCH, MoveId.ICE_SPINNER, MoveId.SHIFT_GEAR ], + [SpeciesId.REGIROCK]: [ MoveId.STONE_AXE, MoveId.BODY_PRESS, MoveId.SHORE_UP, MoveId.SALT_CURE ], + [SpeciesId.REGICE]: [ MoveId.EARTH_POWER, MoveId.TAKE_HEART, MoveId.RECOVER, MoveId.FREEZE_DRY ], + [SpeciesId.REGISTEEL]: [ MoveId.BODY_PRESS, MoveId.SIZZLY_SLIDE, MoveId.RECOVER, MoveId.GIGATON_HAMMER ], + [SpeciesId.LATIAS]: [ MoveId.CORE_ENFORCER, MoveId.FUSION_FLARE, MoveId.SPARKLY_SWIRL, MoveId.MYSTICAL_POWER ], + [SpeciesId.LATIOS]: [ MoveId.CORE_ENFORCER, MoveId.BLUE_FLARE, MoveId.NASTY_PLOT, MoveId.TACHYON_CUTTER ], + [SpeciesId.KYOGRE]: [ MoveId.RECOVER, MoveId.HURRICANE, MoveId.FREEZY_FROST, MoveId.WILDBOLT_STORM ], + [SpeciesId.GROUDON]: [ MoveId.STONE_AXE, MoveId.SOLAR_BLADE, MoveId.MORNING_SUN, MoveId.SACRED_FIRE ], + [SpeciesId.RAYQUAZA]: [ MoveId.V_CREATE, MoveId.DRAGON_DARTS, MoveId.CORE_ENFORCER, MoveId.OBLIVION_WING ], + [SpeciesId.JIRACHI]: [ MoveId.TACHYON_CUTTER, MoveId.TRIPLE_ARROWS, MoveId.ROCK_SLIDE, MoveId.SHELL_SMASH ], + [SpeciesId.DEOXYS]: [ MoveId.COLLISION_COURSE, MoveId.FUSION_FLARE, MoveId.PARTING_SHOT, MoveId.LUMINA_CRASH ], - [Species.TURTWIG]: [ Moves.SHELL_SMASH, Moves.MIGHTY_CLEAVE, Moves.ICE_SPINNER, Moves.SAPPY_SEED ], - [Species.CHIMCHAR]: [ Moves.THUNDERBOLT, Moves.SECRET_SWORD, Moves.TRIPLE_AXEL, Moves.SACRED_FIRE ], - [Species.PIPLUP]: [ Moves.KINGS_SHIELD, Moves.TACHYON_CUTTER, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], - [Species.STARLY]: [ Moves.SWORDS_DANCE, Moves.HEAD_CHARGE, Moves.FLARE_BLITZ, Moves.EXTREME_SPEED ], - [Species.BIDOOF]: [ Moves.EXTREME_SPEED, Moves.COSMIC_POWER, Moves.POWER_TRIP, Moves.AQUA_STEP ], - [Species.KRICKETOT]: [ Moves.BONEMERANG, Moves.VICTORY_DANCE, Moves.STONE_AXE, Moves.POPULATION_BOMB ], - [Species.SHINX]: [ Moves.FIRE_LASH, Moves.TRIPLE_AXEL, Moves.ZIPPY_ZAP, Moves.BOLT_STRIKE ], - [Species.BUDEW]: [ Moves.FIERY_DANCE, Moves.ACID_SPRAY, Moves.BOUNCY_BUBBLE, Moves.QUIVER_DANCE ], - [Species.CRANIDOS]: [ Moves.VOLT_TACKLE, Moves.ACCELEROCK, Moves.FLARE_BLITZ, Moves.SHIFT_GEAR ], - [Species.SHIELDON]: [ Moves.SHORE_UP, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.DIAMOND_STORM ], - [Species.BURMY]: [ Moves.FIERY_DANCE, Moves.DEFEND_ORDER, Moves.HEAL_ORDER, Moves.SAPPY_SEED ], - [Species.COMBEE]: [ Moves.SPORE, Moves.FLOATY_FALL, Moves.KINGS_SHIELD, Moves.VICTORY_DANCE ], - [Species.PACHIRISU]: [ Moves.FREEZY_FROST, Moves.SIZZLY_SLIDE, Moves.SLACK_OFF, Moves.THUNDER_CAGE ], - [Species.BUIZEL]: [ Moves.JET_PUNCH, Moves.TRIPLE_AXEL, Moves.SUPERCELL_SLAM, Moves.SURGING_STRIKES ], - [Species.CHERUBI]: [ Moves.SLEEP_POWDER, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.FLOWER_TRICK ], - [Species.SHELLOS]: [ Moves.BOUNCY_BUBBLE, Moves.SCORCHING_SANDS, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], - [Species.DRIFLOON]: [ Moves.PSYCHO_SHIFT, Moves.MIND_BLOWN, Moves.CALM_MIND, Moves.OBLIVION_WING ], - [Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.EXTREME_SPEED, Moves.THUNDEROUS_KICK, Moves.SWORDS_DANCE ], - [Species.GLAMEOW]: [ Moves.PARTING_SHOT, Moves.HIGH_HORSEPOWER, Moves.SWORDS_DANCE, Moves.EXTREME_SPEED ], - [Species.CHINGLING]: [ Moves.ALLURING_VOICE, Moves.EERIE_SPELL, Moves.TORCH_SONG, Moves.BOOMBURST ], - [Species.STUNKY]: [ Moves.CEASELESS_EDGE, Moves.FIRE_LASH, Moves.RECOVER, Moves.DIRE_CLAW ], - [Species.BRONZOR]: [ Moves.RECOVER, Moves.TACHYON_CUTTER, Moves.GLARE, Moves.LUMINA_CRASH ], - [Species.BONSLY]: [ Moves.ACCELEROCK, Moves.SWORDS_DANCE, Moves.STRENGTH_SAP, Moves.SAPPY_SEED ], - [Species.MIME_JR]: [ Moves.CHILLY_RECEPTION, Moves.MOONBLAST, Moves.FROST_BREATH, Moves.LUMINA_CRASH ], - [Species.HAPPINY]: [ Moves.COTTON_GUARD, Moves.SEISMIC_TOSS, Moves.SIZZLY_SLIDE, Moves.REVIVAL_BLESSING ], - [Species.CHATOT]: [ Moves.SPARKLING_ARIA, Moves.BOOMBURST, Moves.BATON_PASS, Moves.TORCH_SONG ], - [Species.SPIRITOMB]: [ Moves.PARTING_SHOT, Moves.BADDY_BAD, Moves.STRENGTH_SAP, Moves.SPECTRAL_THIEF ], - [Species.GIBLE]: [ Moves.METEOR_MASH, Moves.BITTER_BLADE, Moves.LANDS_WRATH, Moves.DRAGON_DANCE ], - [Species.MUNCHLAX]: [ Moves.STUFF_CHEEKS, Moves.GRAV_APPLE, Moves.SLACK_OFF, Moves.EXTREME_SPEED ], - [Species.RIOLU]: [ Moves.THUNDEROUS_KICK, Moves.TACHYON_CUTTER, Moves.TRIPLE_AXEL, Moves.SUNSTEEL_STRIKE ], - [Species.HIPPOPOTAS]: [ Moves.SHORE_UP, Moves.STONE_AXE, Moves.BULK_UP, Moves.SALT_CURE ], - [Species.SKORUPI]: [ Moves.COIL, Moves.DIRE_CLAW, Moves.CRABHAMMER, Moves.WICKED_BLOW ], - [Species.CROAGUNK]: [ Moves.DIRE_CLAW, Moves.TRIPLE_AXEL, Moves.THUNDEROUS_KICK, Moves.VICTORY_DANCE ], - [Species.CARNIVINE]: [ Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.COIL, Moves.SAPPY_SEED ], - [Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.SPLISHY_SPLASH, Moves.FREEZE_DRY, Moves.OBLIVION_WING ], - [Species.MANTYKE]: [ Moves.SPLISHY_SPLASH, Moves.FREEZY_FROST, Moves.NASTY_PLOT, Moves.OBLIVION_WING ], - [Species.SNOVER]: [ Moves.LANDS_WRATH, Moves.POWDER, Moves.CALM_MIND, Moves.MATCHA_GOTCHA ], - [Species.ROTOM]: [ Moves.STRENGTH_SAP, Moves.FIERY_DANCE, Moves.SPLISHY_SPLASH, Moves.ELECTRO_DRIFT ], - [Species.UXIE]: [ Moves.LUMINA_CRASH, Moves.AURA_SPHERE, Moves.RECOVER, Moves.TAIL_GLOW ], - [Species.MESPRIT]: [ Moves.PHOTON_GEYSER, Moves.AURA_SPHERE, Moves.RECOVER, Moves.TAIL_GLOW ], - [Species.AZELF]: [ Moves.PSYSTRIKE, Moves.AURA_SPHERE, Moves.ICE_BEAM, Moves.TAIL_GLOW ], - [Species.DIALGA]: [ Moves.CORE_ENFORCER, Moves.TAKE_HEART, Moves.RECOVER, Moves.MAKE_IT_RAIN ], - [Species.PALKIA]: [ Moves.MALIGNANT_CHAIN, Moves.TAKE_HEART, Moves.RECOVER, Moves.ORIGIN_PULSE ], - [Species.HEATRAN]: [ Moves.ENERGY_BALL, Moves.RECOVER, Moves.ERUPTION, Moves.TACHYON_CUTTER ], - [Species.REGIGIGAS]: [ Moves.SKILL_SWAP, Moves.RECOVER, Moves.EXTREME_SPEED, Moves.GIGATON_HAMMER ], - [Species.GIRATINA]: [ Moves.DRAGON_DANCE, Moves.SPECTRAL_THIEF, Moves.RECOVER, Moves.COLLISION_COURSE ], - [Species.CRESSELIA]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.SIZZLY_SLIDE, Moves.LUMINA_CRASH ], - [Species.PHIONE]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.STORED_POWER, Moves.ORIGIN_PULSE ], - [Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.FROST_BREATH, Moves.WILDBOLT_STORM, Moves.ORIGIN_PULSE ], - [Species.DARKRAI]: [ Moves.FIERY_WRATH, Moves.MOONBLAST, Moves.FIERY_DANCE, Moves.MAKE_IT_RAIN ], - [Species.SHAYMIN]: [ Moves.MATCHA_GOTCHA, Moves.FIERY_DANCE, Moves.AEROBLAST, Moves.QUIVER_DANCE ], - [Species.ARCEUS]: [ Moves.NO_RETREAT, Moves.COLLISION_COURSE, Moves.ASTRAL_BARRAGE, Moves.MULTI_ATTACK ], + [SpeciesId.TURTWIG]: [ MoveId.SHELL_SMASH, MoveId.MIGHTY_CLEAVE, MoveId.ICE_SPINNER, MoveId.SAPPY_SEED ], + [SpeciesId.CHIMCHAR]: [ MoveId.THUNDERBOLT, MoveId.SECRET_SWORD, MoveId.TRIPLE_AXEL, MoveId.SACRED_FIRE ], + [SpeciesId.PIPLUP]: [ MoveId.KINGS_SHIELD, MoveId.TACHYON_CUTTER, MoveId.FREEZE_DRY, MoveId.STEAM_ERUPTION ], + [SpeciesId.STARLY]: [ MoveId.SWORDS_DANCE, MoveId.HEAD_CHARGE, MoveId.FLARE_BLITZ, MoveId.EXTREME_SPEED ], + [SpeciesId.BIDOOF]: [ MoveId.EXTREME_SPEED, MoveId.COSMIC_POWER, MoveId.POWER_TRIP, MoveId.AQUA_STEP ], + [SpeciesId.KRICKETOT]: [ MoveId.BONEMERANG, MoveId.VICTORY_DANCE, MoveId.STONE_AXE, MoveId.POPULATION_BOMB ], + [SpeciesId.SHINX]: [ MoveId.FIRE_LASH, MoveId.TRIPLE_AXEL, MoveId.ZIPPY_ZAP, MoveId.BOLT_STRIKE ], + [SpeciesId.BUDEW]: [ MoveId.FIERY_DANCE, MoveId.ACID_SPRAY, MoveId.BOUNCY_BUBBLE, MoveId.QUIVER_DANCE ], + [SpeciesId.CRANIDOS]: [ MoveId.VOLT_TACKLE, MoveId.ACCELEROCK, MoveId.FLARE_BLITZ, MoveId.SHIFT_GEAR ], + [SpeciesId.SHIELDON]: [ MoveId.SHORE_UP, MoveId.BODY_PRESS, MoveId.KINGS_SHIELD, MoveId.DIAMOND_STORM ], + [SpeciesId.BURMY]: [ MoveId.FIERY_DANCE, MoveId.DEFEND_ORDER, MoveId.HEAL_ORDER, MoveId.SAPPY_SEED ], + [SpeciesId.COMBEE]: [ MoveId.SPORE, MoveId.FLOATY_FALL, MoveId.KINGS_SHIELD, MoveId.VICTORY_DANCE ], + [SpeciesId.PACHIRISU]: [ MoveId.FREEZY_FROST, MoveId.SIZZLY_SLIDE, MoveId.SLACK_OFF, MoveId.THUNDER_CAGE ], + [SpeciesId.BUIZEL]: [ MoveId.JET_PUNCH, MoveId.TRIPLE_AXEL, MoveId.SUPERCELL_SLAM, MoveId.SURGING_STRIKES ], + [SpeciesId.CHERUBI]: [ MoveId.SLEEP_POWDER, MoveId.STRENGTH_SAP, MoveId.FIRE_LASH, MoveId.FLOWER_TRICK ], + [SpeciesId.SHELLOS]: [ MoveId.BOUNCY_BUBBLE, MoveId.SCORCHING_SANDS, MoveId.FREEZE_DRY, MoveId.STEAM_ERUPTION ], + [SpeciesId.DRIFLOON]: [ MoveId.PSYCHO_SHIFT, MoveId.MIND_BLOWN, MoveId.CALM_MIND, MoveId.OBLIVION_WING ], + [SpeciesId.BUNEARY]: [ MoveId.TRIPLE_AXEL, MoveId.EXTREME_SPEED, MoveId.THUNDEROUS_KICK, MoveId.SWORDS_DANCE ], + [SpeciesId.GLAMEOW]: [ MoveId.PARTING_SHOT, MoveId.HIGH_HORSEPOWER, MoveId.SWORDS_DANCE, MoveId.EXTREME_SPEED ], + [SpeciesId.CHINGLING]: [ MoveId.ALLURING_VOICE, MoveId.EERIE_SPELL, MoveId.TORCH_SONG, MoveId.BOOMBURST ], + [SpeciesId.STUNKY]: [ MoveId.CEASELESS_EDGE, MoveId.FIRE_LASH, MoveId.RECOVER, MoveId.DIRE_CLAW ], + [SpeciesId.BRONZOR]: [ MoveId.RECOVER, MoveId.TACHYON_CUTTER, MoveId.GLARE, MoveId.LUMINA_CRASH ], + [SpeciesId.BONSLY]: [ MoveId.ACCELEROCK, MoveId.SWORDS_DANCE, MoveId.STRENGTH_SAP, MoveId.SAPPY_SEED ], + [SpeciesId.MIME_JR]: [ MoveId.CHILLY_RECEPTION, MoveId.MOONBLAST, MoveId.FROST_BREATH, MoveId.LUMINA_CRASH ], + [SpeciesId.HAPPINY]: [ MoveId.COTTON_GUARD, MoveId.SEISMIC_TOSS, MoveId.SIZZLY_SLIDE, MoveId.REVIVAL_BLESSING ], + [SpeciesId.CHATOT]: [ MoveId.SPARKLING_ARIA, MoveId.BOOMBURST, MoveId.BATON_PASS, MoveId.TORCH_SONG ], + [SpeciesId.SPIRITOMB]: [ MoveId.PARTING_SHOT, MoveId.BADDY_BAD, MoveId.STRENGTH_SAP, MoveId.SPECTRAL_THIEF ], + [SpeciesId.GIBLE]: [ MoveId.METEOR_MASH, MoveId.BITTER_BLADE, MoveId.LANDS_WRATH, MoveId.DRAGON_DANCE ], + [SpeciesId.MUNCHLAX]: [ MoveId.STUFF_CHEEKS, MoveId.GRAV_APPLE, MoveId.SLACK_OFF, MoveId.EXTREME_SPEED ], + [SpeciesId.RIOLU]: [ MoveId.THUNDEROUS_KICK, MoveId.TACHYON_CUTTER, MoveId.TRIPLE_AXEL, MoveId.SUNSTEEL_STRIKE ], + [SpeciesId.HIPPOPOTAS]: [ MoveId.SHORE_UP, MoveId.STONE_AXE, MoveId.BULK_UP, MoveId.SALT_CURE ], + [SpeciesId.SKORUPI]: [ MoveId.COIL, MoveId.DIRE_CLAW, MoveId.CRABHAMMER, MoveId.WICKED_BLOW ], + [SpeciesId.CROAGUNK]: [ MoveId.DIRE_CLAW, MoveId.TRIPLE_AXEL, MoveId.THUNDEROUS_KICK, MoveId.VICTORY_DANCE ], + [SpeciesId.CARNIVINE]: [ MoveId.STRENGTH_SAP, MoveId.FIRE_LASH, MoveId.COIL, MoveId.SAPPY_SEED ], + [SpeciesId.FINNEON]: [ MoveId.QUIVER_DANCE, MoveId.SPLISHY_SPLASH, MoveId.FREEZE_DRY, MoveId.OBLIVION_WING ], + [SpeciesId.MANTYKE]: [ MoveId.SPLISHY_SPLASH, MoveId.FREEZY_FROST, MoveId.NASTY_PLOT, MoveId.OBLIVION_WING ], + [SpeciesId.SNOVER]: [ MoveId.LANDS_WRATH, MoveId.POWDER, MoveId.CALM_MIND, MoveId.MATCHA_GOTCHA ], + [SpeciesId.ROTOM]: [ MoveId.STRENGTH_SAP, MoveId.FIERY_DANCE, MoveId.SPLISHY_SPLASH, MoveId.ELECTRO_DRIFT ], + [SpeciesId.UXIE]: [ MoveId.LUMINA_CRASH, MoveId.AURA_SPHERE, MoveId.RECOVER, MoveId.TAIL_GLOW ], + [SpeciesId.MESPRIT]: [ MoveId.PHOTON_GEYSER, MoveId.AURA_SPHERE, MoveId.RECOVER, MoveId.TAIL_GLOW ], + [SpeciesId.AZELF]: [ MoveId.PSYSTRIKE, MoveId.AURA_SPHERE, MoveId.ICE_BEAM, MoveId.TAIL_GLOW ], + [SpeciesId.DIALGA]: [ MoveId.CORE_ENFORCER, MoveId.TAKE_HEART, MoveId.RECOVER, MoveId.MAKE_IT_RAIN ], + [SpeciesId.PALKIA]: [ MoveId.MALIGNANT_CHAIN, MoveId.TAKE_HEART, MoveId.RECOVER, MoveId.ORIGIN_PULSE ], + [SpeciesId.HEATRAN]: [ MoveId.ENERGY_BALL, MoveId.RECOVER, MoveId.ERUPTION, MoveId.TACHYON_CUTTER ], + [SpeciesId.REGIGIGAS]: [ MoveId.SKILL_SWAP, MoveId.RECOVER, MoveId.EXTREME_SPEED, MoveId.GIGATON_HAMMER ], + [SpeciesId.GIRATINA]: [ MoveId.DRAGON_DANCE, MoveId.SPECTRAL_THIEF, MoveId.RECOVER, MoveId.COLLISION_COURSE ], + [SpeciesId.CRESSELIA]: [ MoveId.COSMIC_POWER, MoveId.BODY_PRESS, MoveId.SIZZLY_SLIDE, MoveId.LUMINA_CRASH ], + [SpeciesId.PHIONE]: [ MoveId.BOUNCY_BUBBLE, MoveId.FREEZE_DRY, MoveId.STORED_POWER, MoveId.ORIGIN_PULSE ], + [SpeciesId.MANAPHY]: [ MoveId.BOUNCY_BUBBLE, MoveId.FROST_BREATH, MoveId.WILDBOLT_STORM, MoveId.ORIGIN_PULSE ], + [SpeciesId.DARKRAI]: [ MoveId.FIERY_WRATH, MoveId.MOONBLAST, MoveId.FIERY_DANCE, MoveId.MAKE_IT_RAIN ], + [SpeciesId.SHAYMIN]: [ MoveId.MATCHA_GOTCHA, MoveId.FIERY_DANCE, MoveId.AEROBLAST, MoveId.QUIVER_DANCE ], + [SpeciesId.ARCEUS]: [ MoveId.NO_RETREAT, MoveId.COLLISION_COURSE, MoveId.ASTRAL_BARRAGE, MoveId.MULTI_ATTACK ], - [Species.VICTINI]: [ Moves.BLUE_FLARE, Moves.BOLT_STRIKE, Moves.LUSTER_PURGE, Moves.VICTORY_DANCE ], - [Species.SNIVY]: [ Moves.FLAMETHROWER, Moves.CLANGING_SCALES, Moves.MAKE_IT_RAIN, Moves.FLEUR_CANNON ], - [Species.TEPIG]: [ Moves.WAVE_CRASH, Moves.VOLT_TACKLE, Moves.AXE_KICK, Moves.VICTORY_DANCE ], - [Species.OSHAWOTT]: [ Moves.FREEZE_DRY, Moves.SHELL_SIDE_ARM, Moves.SACRED_SWORD, Moves.SHELL_SMASH ], - [Species.PATRAT]: [ Moves.FAKE_OUT, Moves.SWORDS_DANCE, Moves.DYNAMIC_PUNCH, Moves.EXTREME_SPEED ], - [Species.LILLIPUP]: [ Moves.CLOSE_COMBAT, Moves.BODY_SLAM, Moves.HIGH_HORSEPOWER, Moves.LAST_RESPECTS ], - [Species.PURRLOIN]: [ Moves.ENCORE, Moves.OBSTRUCT, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], - [Species.PANSAGE]: [ Moves.SWORDS_DANCE, Moves.FIRE_LASH, Moves.EARTHQUAKE, Moves.IVY_CUDGEL ], - [Species.PANSEAR]: [ Moves.NASTY_PLOT, Moves.HYDRO_STEAM, Moves.EARTH_POWER, Moves.ERUPTION ], - [Species.PANPOUR]: [ Moves.NASTY_PLOT, Moves.ENERGY_BALL, Moves.EARTH_POWER, Moves.WATER_SPOUT ], - [Species.MUNNA]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.LUNAR_BLESSING, Moves.MYSTICAL_POWER ], - [Species.PIDOVE]: [ Moves.SLASH, Moves.TIDY_UP, Moves.FLOATY_FALL, Moves.TRIPLE_ARROWS ], - [Species.BLITZLE]: [ Moves.HORN_LEECH, Moves.SWORDS_DANCE, Moves.FLARE_BLITZ, Moves.BOLT_STRIKE ], - [Species.ROGGENROLA]: [ Moves.BODY_PRESS, Moves.CURSE, Moves.SHORE_UP, Moves.DIAMOND_STORM ], - [Species.WOOBAT]: [ Moves.ESPER_WING, Moves.STORED_POWER, Moves.MYSTICAL_FIRE, Moves.OBLIVION_WING ], - [Species.DRILBUR]: [ Moves.METEOR_MASH, Moves.ICE_SPINNER, Moves.SHIFT_GEAR, Moves.THOUSAND_ARROWS ], - [Species.AUDINO]: [ Moves.TAKE_HEART, Moves.MOONBLAST, Moves.WISH, Moves.MATCHA_GOTCHA ], - [Species.TIMBURR]: [ Moves.MACH_PUNCH, Moves.DRAIN_PUNCH, Moves.ICE_HAMMER, Moves.DOUBLE_IRON_BASH ], - [Species.TYMPOLE]: [ Moves.JET_PUNCH, Moves.HIGH_HORSEPOWER, Moves.BULK_UP, Moves.SURGING_STRIKES ], - [Species.THROH]: [ Moves.MACH_PUNCH, Moves.SLACK_OFF, Moves.METEOR_MASH, Moves.RAGE_FIST ], - [Species.SAWK]: [ Moves.DRAIN_PUNCH, Moves.SUCKER_PUNCH, Moves.METEOR_MASH, Moves.VICTORY_DANCE ], - [Species.SEWADDLE]: [ Moves.STONE_AXE, Moves.PSYCHO_CUT, Moves.BITTER_BLADE, Moves.VICTORY_DANCE ], - [Species.VENIPEDE]: [ Moves.BANEFUL_BUNKER, Moves.LEECH_LIFE, Moves.NOXIOUS_TORQUE, Moves.POWER_TRIP ], - [Species.COTTONEE]: [ Moves.POLLEN_PUFF, Moves.PARTING_SHOT, Moves.SLEEP_POWDER, Moves.SEED_FLARE ], - [Species.PETILIL]: [ Moves.THUNDEROUS_KICK, Moves.SPARKLING_ARIA, Moves.FIERY_DANCE, Moves.FLOWER_TRICK ], - [Species.BASCULIN]: [ Moves.LAST_RESPECTS, Moves.CLOSE_COMBAT, Moves.SPLISHY_SPLASH, Moves.NO_RETREAT ], - [Species.SANDILE]: [ Moves.DIRE_CLAW, Moves.SUCKER_PUNCH, Moves.FIRE_LASH, Moves.HEADLONG_RUSH ], - [Species.DARUMAKA]: [ Moves.DRAIN_PUNCH, Moves.ZIPPY_ZAP, Moves.HEADLONG_RUSH, Moves.PYRO_BALL ], - [Species.MARACTUS]: [ Moves.EARTH_POWER, Moves.SIZZLY_SLIDE, Moves.FIERY_DANCE, Moves.QUIVER_DANCE ], - [Species.DWEBBLE]: [ Moves.CRABHAMMER, Moves.STONE_AXE, Moves.LEECH_LIFE, Moves.MIGHTY_CLEAVE ], - [Species.SCRAGGY]: [ Moves.SUCKER_PUNCH, Moves.BULLET_PUNCH, Moves.NOXIOUS_TORQUE, Moves.VICTORY_DANCE ], - [Species.SIGILYPH]: [ Moves.MOONBLAST, Moves.PSYCHO_SHIFT, Moves.ESPER_WING, Moves.OBLIVION_WING ], - [Species.YAMASK]: [ Moves.STRENGTH_SAP, Moves.GLARE, Moves.AURA_SPHERE, Moves.ASTRAL_BARRAGE ], - [Species.TIRTOUGA]: [ Moves.ICE_SPINNER, Moves.AQUA_STEP, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE ], - [Species.ARCHEN]: [ Moves.ROOST, Moves.EARTHQUAKE, Moves.FLOATY_FALL, Moves.MIGHTY_CLEAVE ], - [Species.TRUBBISH]: [ Moves.COIL, Moves.RECOVER, Moves.DIRE_CLAW, Moves.GIGATON_HAMMER ], - [Species.ZORUA]: [ Moves.MALIGNANT_CHAIN, Moves.MOONBLAST, Moves.SECRET_SWORD, Moves.FIERY_WRATH ], - [Species.MINCCINO]: [ Moves.ICICLE_SPEAR, Moves.TIDY_UP, Moves.KNOCK_OFF, Moves.POPULATION_BOMB ], - [Species.GOTHITA]: [ Moves.RECOVER, Moves.MOONBLAST, Moves.AURA_SPHERE, Moves.LUMINA_CRASH ], - [Species.SOLOSIS]: [ Moves.MIST_BALL, Moves.SPEED_SWAP, Moves.FLAMETHROWER, Moves.LIGHT_OF_RUIN ], - [Species.DUCKLETT]: [ Moves.SPLISHY_SPLASH, Moves.SANDSEAR_STORM, Moves.WILDBOLT_STORM, Moves.QUIVER_DANCE ], - [Species.VANILLITE]: [ Moves.EARTH_POWER, Moves.AURORA_VEIL, Moves.CALM_MIND, Moves.SPARKLY_SWIRL ], - [Species.DEERLING]: [ Moves.TIDY_UP, Moves.HEADBUTT, Moves.COMBAT_TORQUE, Moves.FLOWER_TRICK ], - [Species.EMOLGA]: [ Moves.ICICLE_CRASH, Moves.ZING_ZAP, Moves.FLOATY_FALL, Moves.ELECTRIFY ], - [Species.KARRABLAST]: [ Moves.LEECH_LIFE, Moves.BITTER_BLADE, Moves.OBSTRUCT, Moves.DOUBLE_IRON_BASH ], - [Species.FOONGUS]: [ Moves.POLLEN_PUFF, Moves.PARTING_SHOT, Moves.FOUL_PLAY, Moves.SAPPY_SEED ], - [Species.FRILLISH]: [ Moves.CALM_MIND, Moves.BUZZY_BUZZ, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], - [Species.ALOMOMOLA]: [ Moves.FLIP_TURN, Moves.HEART_SWAP, Moves.GLITZY_GLOW, Moves.REVIVAL_BLESSING ], - [Species.JOLTIK]: [ Moves.WILDBOLT_STORM, Moves.PARABOLIC_CHARGE, Moves.EARTH_POWER, Moves.QUIVER_DANCE ], - [Species.FERROSEED]: [ Moves.SYNTHESIS, Moves.CEASELESS_EDGE, Moves.SPIKY_SHIELD, Moves.SAPPY_SEED ], - [Species.KLINK]: [ Moves.TRIPLE_AXEL, Moves.HIGH_HORSEPOWER, Moves.RECOVER, Moves.AURA_WHEEL ], - [Species.TYNAMO]: [ Moves.SCALD, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.AURA_WHEEL ], - [Species.ELGYEM]: [ Moves.THUNDERCLAP, Moves.BADDY_BAD, Moves.AURA_SPHERE, Moves.PHOTON_GEYSER ], - [Species.LITWICK]: [ Moves.GIGA_DRAIN, Moves.EARTH_POWER, Moves.MOONBLAST, Moves.TORCH_SONG ], - [Species.AXEW]: [ Moves.STONE_AXE, Moves.DIRE_CLAW, Moves.BITTER_BLADE, Moves.GLAIVE_RUSH ], - [Species.CUBCHOO]: [ Moves.MOUNTAIN_GALE, Moves.AQUA_STEP, Moves.ICE_SHARD, Moves.COLLISION_COURSE ], - [Species.CRYOGONAL]: [ Moves.FREEZING_GLARE, Moves.AURORA_VEIL, Moves.NASTY_PLOT, Moves.ORIGIN_PULSE ], - [Species.SHELMET]: [ Moves.POWER_GEM, Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.STEAM_ERUPTION ], - [Species.STUNFISK]: [ Moves.THUNDERCLAP, Moves.SANDSEAR_STORM, Moves.STRENGTH_SAP, Moves.THUNDER_CAGE ], - [Species.MIENFOO]: [ Moves.GUNK_SHOT, Moves.SUPERCELL_SLAM, Moves.MOUNTAIN_GALE, Moves.WICKED_BLOW ], - [Species.DRUDDIGON]: [ Moves.FIRE_LASH, Moves.MORNING_SUN, Moves.DRAGON_DARTS, Moves.CLANGOROUS_SOUL ], - [Species.GOLETT]: [ Moves.SHIFT_GEAR, Moves.DRAIN_PUNCH, Moves.HEADLONG_RUSH, Moves.RAGE_FIST ], - [Species.PAWNIARD]: [ Moves.SUCKER_PUNCH, Moves.CEASELESS_EDGE, Moves.BITTER_BLADE, Moves.LAST_RESPECTS ], - [Species.BOUFFALANT]: [ Moves.HORN_LEECH, Moves.HIGH_JUMP_KICK, Moves.HEAD_SMASH, Moves.FLARE_BLITZ ], - [Species.RUFFLET]: [ Moves.FLOATY_FALL, Moves.AURA_SPHERE, Moves.NO_RETREAT, Moves.BOLT_BEAK ], - [Species.VULLABY]: [ Moves.FOUL_PLAY, Moves.BODY_PRESS, Moves.ROOST, Moves.RUINATION ], - [Species.HEATMOR]: [ Moves.EARTH_POWER, Moves.OVERHEAT, Moves.THUNDERBOLT, Moves.V_CREATE ], - [Species.DURANT]: [ Moves.HIGH_HORSEPOWER, Moves.FIRST_IMPRESSION, Moves.SWORDS_DANCE, Moves.BEHEMOTH_BASH ], - [Species.DEINO]: [ Moves.FIERY_WRATH, Moves.ESPER_WING, Moves.SLUDGE_BOMB, Moves.FICKLE_BEAM ], - [Species.LARVESTA]: [ Moves.THUNDERBOLT, Moves.DAZZLING_GLEAM, Moves.EARTH_POWER, Moves.HYDRO_STEAM ], - [Species.COBALION]: [ Moves.BEHEMOTH_BLADE, Moves.MIGHTY_CLEAVE, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ], - [Species.TERRAKION]: [ Moves.MIGHTY_CLEAVE, Moves.HEADLONG_RUSH, Moves.KNOCK_OFF, Moves.VICTORY_DANCE ], - [Species.VIRIZION]: [ Moves.SAPPY_SEED, Moves.PSYBLADE, Moves.STONE_AXE, Moves.VICTORY_DANCE ], - [Species.TORNADUS]: [ Moves.SANDSEAR_STORM, Moves.PARTING_SHOT, Moves.SPLISHY_SPLASH, Moves.OBLIVION_WING ], - [Species.THUNDURUS]: [ Moves.SANDSEAR_STORM, Moves.HURRICANE, Moves.FROST_BREATH, Moves.ELECTRO_SHOT ], - [Species.RESHIRAM]: [ Moves.ENERGY_BALL, Moves.TAKE_HEART, Moves.FICKLE_BEAM, Moves.ERUPTION ], - [Species.ZEKROM]: [ Moves.TRIPLE_AXEL, Moves.THUNDEROUS_KICK, Moves.DRAGON_HAMMER, Moves.DRAGON_ENERGY ], - [Species.LANDORUS]: [ Moves.STONE_AXE, Moves.FLOATY_FALL, Moves.ROOST, Moves.BLEAKWIND_STORM ], - [Species.KYUREM]: [ Moves.DRAGON_DARTS, Moves.GLACIAL_LANCE, Moves.NO_RETREAT, Moves.DRAGON_ENERGY ], - [Species.KELDEO]: [ Moves.BOUNCY_BUBBLE, Moves.THUNDERBOLT, Moves.ICE_BEAM, Moves.STEAM_ERUPTION ], - [Species.MELOETTA]: [ Moves.BODY_SLAM, Moves.PSYCHIC_NOISE, Moves.TRIPLE_ARROWS, Moves.TORCH_SONG ], - [Species.GENESECT]: [ Moves.EXTREME_SPEED, Moves.SHIFT_GEAR, Moves.BEHEMOTH_BASH, Moves.TACHYON_CUTTER ], + [SpeciesId.VICTINI]: [ MoveId.BLUE_FLARE, MoveId.BOLT_STRIKE, MoveId.LUSTER_PURGE, MoveId.VICTORY_DANCE ], + [SpeciesId.SNIVY]: [ MoveId.FLAMETHROWER, MoveId.CLANGING_SCALES, MoveId.MAKE_IT_RAIN, MoveId.FLEUR_CANNON ], + [SpeciesId.TEPIG]: [ MoveId.WAVE_CRASH, MoveId.VOLT_TACKLE, MoveId.AXE_KICK, MoveId.VICTORY_DANCE ], + [SpeciesId.OSHAWOTT]: [ MoveId.FREEZE_DRY, MoveId.SHELL_SIDE_ARM, MoveId.SACRED_SWORD, MoveId.SHELL_SMASH ], + [SpeciesId.PATRAT]: [ MoveId.FAKE_OUT, MoveId.SWORDS_DANCE, MoveId.DYNAMIC_PUNCH, MoveId.EXTREME_SPEED ], + [SpeciesId.LILLIPUP]: [ MoveId.CLOSE_COMBAT, MoveId.BODY_SLAM, MoveId.HIGH_HORSEPOWER, MoveId.LAST_RESPECTS ], + [SpeciesId.PURRLOIN]: [ MoveId.ENCORE, MoveId.OBSTRUCT, MoveId.PARTING_SHOT, MoveId.WICKED_BLOW ], + [SpeciesId.PANSAGE]: [ MoveId.SWORDS_DANCE, MoveId.FIRE_LASH, MoveId.EARTHQUAKE, MoveId.IVY_CUDGEL ], + [SpeciesId.PANSEAR]: [ MoveId.NASTY_PLOT, MoveId.HYDRO_STEAM, MoveId.EARTH_POWER, MoveId.ERUPTION ], + [SpeciesId.PANPOUR]: [ MoveId.NASTY_PLOT, MoveId.ENERGY_BALL, MoveId.EARTH_POWER, MoveId.WATER_SPOUT ], + [SpeciesId.MUNNA]: [ MoveId.COSMIC_POWER, MoveId.AURA_SPHERE, MoveId.LUNAR_BLESSING, MoveId.MYSTICAL_POWER ], + [SpeciesId.PIDOVE]: [ MoveId.SLASH, MoveId.TIDY_UP, MoveId.FLOATY_FALL, MoveId.TRIPLE_ARROWS ], + [SpeciesId.BLITZLE]: [ MoveId.HORN_LEECH, MoveId.SWORDS_DANCE, MoveId.FLARE_BLITZ, MoveId.BOLT_STRIKE ], + [SpeciesId.ROGGENROLA]: [ MoveId.BODY_PRESS, MoveId.CURSE, MoveId.SHORE_UP, MoveId.DIAMOND_STORM ], + [SpeciesId.WOOBAT]: [ MoveId.ESPER_WING, MoveId.STORED_POWER, MoveId.MYSTICAL_FIRE, MoveId.OBLIVION_WING ], + [SpeciesId.DRILBUR]: [ MoveId.METEOR_MASH, MoveId.ICE_SPINNER, MoveId.SHIFT_GEAR, MoveId.THOUSAND_ARROWS ], + [SpeciesId.AUDINO]: [ MoveId.TAKE_HEART, MoveId.MOONBLAST, MoveId.WISH, MoveId.MATCHA_GOTCHA ], + [SpeciesId.TIMBURR]: [ MoveId.MACH_PUNCH, MoveId.DRAIN_PUNCH, MoveId.ICE_HAMMER, MoveId.DOUBLE_IRON_BASH ], + [SpeciesId.TYMPOLE]: [ MoveId.JET_PUNCH, MoveId.HIGH_HORSEPOWER, MoveId.BULK_UP, MoveId.SURGING_STRIKES ], + [SpeciesId.THROH]: [ MoveId.MACH_PUNCH, MoveId.SLACK_OFF, MoveId.METEOR_MASH, MoveId.RAGE_FIST ], + [SpeciesId.SAWK]: [ MoveId.DRAIN_PUNCH, MoveId.SUCKER_PUNCH, MoveId.METEOR_MASH, MoveId.VICTORY_DANCE ], + [SpeciesId.SEWADDLE]: [ MoveId.STONE_AXE, MoveId.PSYCHO_CUT, MoveId.BITTER_BLADE, MoveId.VICTORY_DANCE ], + [SpeciesId.VENIPEDE]: [ MoveId.BANEFUL_BUNKER, MoveId.LEECH_LIFE, MoveId.NOXIOUS_TORQUE, MoveId.POWER_TRIP ], + [SpeciesId.COTTONEE]: [ MoveId.POLLEN_PUFF, MoveId.PARTING_SHOT, MoveId.SLEEP_POWDER, MoveId.SEED_FLARE ], + [SpeciesId.PETILIL]: [ MoveId.THUNDEROUS_KICK, MoveId.SPARKLING_ARIA, MoveId.FIERY_DANCE, MoveId.FLOWER_TRICK ], + [SpeciesId.BASCULIN]: [ MoveId.LAST_RESPECTS, MoveId.CLOSE_COMBAT, MoveId.SPLISHY_SPLASH, MoveId.NO_RETREAT ], + [SpeciesId.SANDILE]: [ MoveId.DIRE_CLAW, MoveId.SUCKER_PUNCH, MoveId.FIRE_LASH, MoveId.HEADLONG_RUSH ], + [SpeciesId.DARUMAKA]: [ MoveId.DRAIN_PUNCH, MoveId.ZIPPY_ZAP, MoveId.HEADLONG_RUSH, MoveId.PYRO_BALL ], + [SpeciesId.MARACTUS]: [ MoveId.EARTH_POWER, MoveId.SIZZLY_SLIDE, MoveId.FIERY_DANCE, MoveId.QUIVER_DANCE ], + [SpeciesId.DWEBBLE]: [ MoveId.CRABHAMMER, MoveId.STONE_AXE, MoveId.LEECH_LIFE, MoveId.MIGHTY_CLEAVE ], + [SpeciesId.SCRAGGY]: [ MoveId.SUCKER_PUNCH, MoveId.BULLET_PUNCH, MoveId.NOXIOUS_TORQUE, MoveId.VICTORY_DANCE ], + [SpeciesId.SIGILYPH]: [ MoveId.MOONBLAST, MoveId.PSYCHO_SHIFT, MoveId.ESPER_WING, MoveId.OBLIVION_WING ], + [SpeciesId.YAMASK]: [ MoveId.STRENGTH_SAP, MoveId.GLARE, MoveId.AURA_SPHERE, MoveId.ASTRAL_BARRAGE ], + [SpeciesId.TIRTOUGA]: [ MoveId.ICE_SPINNER, MoveId.AQUA_STEP, MoveId.SHORE_UP, MoveId.MIGHTY_CLEAVE ], + [SpeciesId.ARCHEN]: [ MoveId.ROOST, MoveId.EARTHQUAKE, MoveId.FLOATY_FALL, MoveId.MIGHTY_CLEAVE ], + [SpeciesId.TRUBBISH]: [ MoveId.COIL, MoveId.RECOVER, MoveId.DIRE_CLAW, MoveId.GIGATON_HAMMER ], + [SpeciesId.ZORUA]: [ MoveId.MALIGNANT_CHAIN, MoveId.MOONBLAST, MoveId.SECRET_SWORD, MoveId.FIERY_WRATH ], + [SpeciesId.MINCCINO]: [ MoveId.ICICLE_SPEAR, MoveId.TIDY_UP, MoveId.KNOCK_OFF, MoveId.POPULATION_BOMB ], + [SpeciesId.GOTHITA]: [ MoveId.RECOVER, MoveId.MOONBLAST, MoveId.AURA_SPHERE, MoveId.LUMINA_CRASH ], + [SpeciesId.SOLOSIS]: [ MoveId.MIST_BALL, MoveId.SPEED_SWAP, MoveId.FLAMETHROWER, MoveId.LIGHT_OF_RUIN ], + [SpeciesId.DUCKLETT]: [ MoveId.SPLISHY_SPLASH, MoveId.SANDSEAR_STORM, MoveId.WILDBOLT_STORM, MoveId.QUIVER_DANCE ], + [SpeciesId.VANILLITE]: [ MoveId.EARTH_POWER, MoveId.AURORA_VEIL, MoveId.CALM_MIND, MoveId.SPARKLY_SWIRL ], + [SpeciesId.DEERLING]: [ MoveId.TIDY_UP, MoveId.HEADBUTT, MoveId.COMBAT_TORQUE, MoveId.FLOWER_TRICK ], + [SpeciesId.EMOLGA]: [ MoveId.ICICLE_CRASH, MoveId.ZING_ZAP, MoveId.FLOATY_FALL, MoveId.ELECTRIFY ], + [SpeciesId.KARRABLAST]: [ MoveId.LEECH_LIFE, MoveId.BITTER_BLADE, MoveId.OBSTRUCT, MoveId.DOUBLE_IRON_BASH ], + [SpeciesId.FOONGUS]: [ MoveId.POLLEN_PUFF, MoveId.PARTING_SHOT, MoveId.FOUL_PLAY, MoveId.SAPPY_SEED ], + [SpeciesId.FRILLISH]: [ MoveId.CALM_MIND, MoveId.BUZZY_BUZZ, MoveId.FREEZE_DRY, MoveId.STEAM_ERUPTION ], + [SpeciesId.ALOMOMOLA]: [ MoveId.FLIP_TURN, MoveId.HEART_SWAP, MoveId.GLITZY_GLOW, MoveId.REVIVAL_BLESSING ], + [SpeciesId.JOLTIK]: [ MoveId.WILDBOLT_STORM, MoveId.PARABOLIC_CHARGE, MoveId.EARTH_POWER, MoveId.QUIVER_DANCE ], + [SpeciesId.FERROSEED]: [ MoveId.SYNTHESIS, MoveId.CEASELESS_EDGE, MoveId.SPIKY_SHIELD, MoveId.SAPPY_SEED ], + [SpeciesId.KLINK]: [ MoveId.TRIPLE_AXEL, MoveId.HIGH_HORSEPOWER, MoveId.RECOVER, MoveId.AURA_WHEEL ], + [SpeciesId.TYNAMO]: [ MoveId.SCALD, MoveId.STRENGTH_SAP, MoveId.FIRE_LASH, MoveId.AURA_WHEEL ], + [SpeciesId.ELGYEM]: [ MoveId.THUNDERCLAP, MoveId.BADDY_BAD, MoveId.AURA_SPHERE, MoveId.PHOTON_GEYSER ], + [SpeciesId.LITWICK]: [ MoveId.GIGA_DRAIN, MoveId.EARTH_POWER, MoveId.MOONBLAST, MoveId.TORCH_SONG ], + [SpeciesId.AXEW]: [ MoveId.STONE_AXE, MoveId.DIRE_CLAW, MoveId.BITTER_BLADE, MoveId.GLAIVE_RUSH ], + [SpeciesId.CUBCHOO]: [ MoveId.MOUNTAIN_GALE, MoveId.AQUA_STEP, MoveId.ICE_SHARD, MoveId.COLLISION_COURSE ], + [SpeciesId.CRYOGONAL]: [ MoveId.FREEZING_GLARE, MoveId.AURORA_VEIL, MoveId.NASTY_PLOT, MoveId.ORIGIN_PULSE ], + [SpeciesId.SHELMET]: [ MoveId.POWER_GEM, MoveId.NASTY_PLOT, MoveId.EARTH_POWER, MoveId.STEAM_ERUPTION ], + [SpeciesId.STUNFISK]: [ MoveId.THUNDERCLAP, MoveId.SANDSEAR_STORM, MoveId.STRENGTH_SAP, MoveId.THUNDER_CAGE ], + [SpeciesId.MIENFOO]: [ MoveId.GUNK_SHOT, MoveId.SUPERCELL_SLAM, MoveId.MOUNTAIN_GALE, MoveId.WICKED_BLOW ], + [SpeciesId.DRUDDIGON]: [ MoveId.FIRE_LASH, MoveId.MORNING_SUN, MoveId.DRAGON_DARTS, MoveId.CLANGOROUS_SOUL ], + [SpeciesId.GOLETT]: [ MoveId.SHIFT_GEAR, MoveId.DRAIN_PUNCH, MoveId.HEADLONG_RUSH, MoveId.RAGE_FIST ], + [SpeciesId.PAWNIARD]: [ MoveId.SUCKER_PUNCH, MoveId.CEASELESS_EDGE, MoveId.BITTER_BLADE, MoveId.LAST_RESPECTS ], + [SpeciesId.BOUFFALANT]: [ MoveId.HORN_LEECH, MoveId.HIGH_JUMP_KICK, MoveId.HEAD_SMASH, MoveId.FLARE_BLITZ ], + [SpeciesId.RUFFLET]: [ MoveId.FLOATY_FALL, MoveId.AURA_SPHERE, MoveId.NO_RETREAT, MoveId.BOLT_BEAK ], + [SpeciesId.VULLABY]: [ MoveId.FOUL_PLAY, MoveId.BODY_PRESS, MoveId.ROOST, MoveId.RUINATION ], + [SpeciesId.HEATMOR]: [ MoveId.EARTH_POWER, MoveId.OVERHEAT, MoveId.THUNDERBOLT, MoveId.V_CREATE ], + [SpeciesId.DURANT]: [ MoveId.HIGH_HORSEPOWER, MoveId.FIRST_IMPRESSION, MoveId.SWORDS_DANCE, MoveId.BEHEMOTH_BASH ], + [SpeciesId.DEINO]: [ MoveId.FIERY_WRATH, MoveId.ESPER_WING, MoveId.SLUDGE_BOMB, MoveId.FICKLE_BEAM ], + [SpeciesId.LARVESTA]: [ MoveId.THUNDERBOLT, MoveId.DAZZLING_GLEAM, MoveId.EARTH_POWER, MoveId.HYDRO_STEAM ], + [SpeciesId.COBALION]: [ MoveId.BEHEMOTH_BLADE, MoveId.MIGHTY_CLEAVE, MoveId.CEASELESS_EDGE, MoveId.VICTORY_DANCE ], + [SpeciesId.TERRAKION]: [ MoveId.MIGHTY_CLEAVE, MoveId.HEADLONG_RUSH, MoveId.KNOCK_OFF, MoveId.VICTORY_DANCE ], + [SpeciesId.VIRIZION]: [ MoveId.SAPPY_SEED, MoveId.PSYBLADE, MoveId.STONE_AXE, MoveId.VICTORY_DANCE ], + [SpeciesId.TORNADUS]: [ MoveId.SANDSEAR_STORM, MoveId.PARTING_SHOT, MoveId.SPLISHY_SPLASH, MoveId.OBLIVION_WING ], + [SpeciesId.THUNDURUS]: [ MoveId.SANDSEAR_STORM, MoveId.HURRICANE, MoveId.FROST_BREATH, MoveId.ELECTRO_SHOT ], + [SpeciesId.RESHIRAM]: [ MoveId.ENERGY_BALL, MoveId.TAKE_HEART, MoveId.FICKLE_BEAM, MoveId.ERUPTION ], + [SpeciesId.ZEKROM]: [ MoveId.TRIPLE_AXEL, MoveId.THUNDEROUS_KICK, MoveId.DRAGON_HAMMER, MoveId.DRAGON_ENERGY ], + [SpeciesId.LANDORUS]: [ MoveId.STONE_AXE, MoveId.FLOATY_FALL, MoveId.ROOST, MoveId.BLEAKWIND_STORM ], + [SpeciesId.KYUREM]: [ MoveId.DRAGON_DARTS, MoveId.GLACIAL_LANCE, MoveId.NO_RETREAT, MoveId.DRAGON_ENERGY ], + [SpeciesId.KELDEO]: [ MoveId.BOUNCY_BUBBLE, MoveId.THUNDERBOLT, MoveId.ICE_BEAM, MoveId.STEAM_ERUPTION ], + [SpeciesId.MELOETTA]: [ MoveId.BODY_SLAM, MoveId.PSYCHIC_NOISE, MoveId.TRIPLE_ARROWS, MoveId.TORCH_SONG ], + [SpeciesId.GENESECT]: [ MoveId.EXTREME_SPEED, MoveId.SHIFT_GEAR, MoveId.BEHEMOTH_BASH, MoveId.TACHYON_CUTTER ], - [Species.CHESPIN]: [ Moves.COMBAT_TORQUE, Moves.SYNTHESIS, Moves.CEASELESS_EDGE, Moves.SAPPY_SEED ], - [Species.FENNEKIN]: [ Moves.TWIN_BEAM, Moves.FIERY_DANCE, Moves.THUNDERBOLT, Moves.SPARKLY_SWIRL ], - [Species.FROAKIE]: [ Moves.MOONBLAST, Moves.SHELL_SIDE_ARM, Moves.FIERY_WRATH, Moves.STEAM_ERUPTION ], - [Species.BUNNELBY]: [ Moves.DRAIN_PUNCH, Moves.TIDY_UP, Moves.LANDS_WRATH, Moves.EXTREME_SPEED ], - [Species.FLETCHLING]: [ Moves.DRILL_RUN, Moves.BURNING_BULWARK, Moves.HEAD_SMASH, Moves.VOLT_TACKLE ], - [Species.SCATTERBUG]: [ Moves.FOCUS_BLAST, Moves.AFTER_YOU, Moves.DECORATE, Moves.BLIZZARD ], - [Species.LITLEO]: [ Moves.EARTH_POWER, Moves.NASTY_PLOT, Moves.BURNING_BULWARK, Moves.BLUE_FLARE ], - [Species.FLABEBE]: [ Moves.GLITZY_GLOW, Moves.MYSTICAL_FIRE, Moves.TAKE_HEART, Moves.SEED_FLARE ], - [Species.SKIDDO]: [ Moves.HIGH_HORSEPOWER, Moves.GRASSY_GLIDE, Moves.STONE_AXE, Moves.SAPPY_SEED ], - [Species.PANCHAM]: [ Moves.DRAIN_PUNCH, Moves.SUCKER_PUNCH, Moves.METEOR_MASH, Moves.WICKED_BLOW ], - [Species.FURFROU]: [ Moves.TIDY_UP, Moves.SLACK_OFF, Moves.COMBAT_TORQUE, Moves.MULTI_ATTACK ], - [Species.ESPURR]: [ Moves.LUSTER_PURGE, Moves.MOONBLAST, Moves.AURA_SPHERE, Moves.DARK_VOID ], - [Species.HONEDGE]: [ Moves.TACHYON_CUTTER, Moves.SHADOW_BONE, Moves.BITTER_BLADE, Moves.BEHEMOTH_BLADE ], - [Species.SPRITZEE]: [ Moves.SPEED_SWAP, Moves.REVIVAL_BLESSING, Moves.ROOST, Moves.TORCH_SONG ], - [Species.SWIRLIX]: [ Moves.BELLY_DRUM, Moves.HEADLONG_RUSH, Moves.MAGICAL_TORQUE, Moves.REVIVAL_BLESSING ], - [Species.INKAY]: [ Moves.POWER_TRIP, Moves.SPIN_OUT, Moves.RECOVER, Moves.PSYCHO_BOOST ], - [Species.BINACLE]: [ Moves.TRIPLE_AXEL, Moves.CRABHAMMER, Moves.DIRE_CLAW, Moves.MIGHTY_CLEAVE ], - [Species.SKRELP]: [ Moves.STRENGTH_SAP, Moves.TRICK_ROOM, Moves.CALM_MIND, Moves.CORE_ENFORCER ], - [Species.CLAUNCHER]: [ Moves.SHELL_SMASH, Moves.ARMOR_CANNON, Moves.ENERGY_BALL, Moves.ORIGIN_PULSE ], - [Species.HELIOPTILE]: [ Moves.WEATHER_BALL, Moves.HYDRO_STEAM, Moves.EARTH_POWER, Moves.BOOMBURST ], - [Species.TYRUNT]: [ Moves.DRAGON_HAMMER, Moves.FLARE_BLITZ, Moves.VOLT_TACKLE, Moves.SHIFT_GEAR ], - [Species.AMAURA]: [ Moves.RECOVER, Moves.TERA_STARSTORM, Moves.POWER_GEM, Moves.GEOMANCY ], - [Species.HAWLUCHA]: [ Moves.TRIPLE_AXEL, Moves.HIGH_HORSEPOWER, Moves.FLOATY_FALL, Moves.WICKED_BLOW ], - [Species.DEDENNE]: [ Moves.BOOMBURST, Moves.FAKE_OUT, Moves.NASTY_PLOT, Moves.REVIVAL_BLESSING ], - [Species.CARBINK]: [ Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SPARKLY_SWIRL, Moves.DIAMOND_STORM ], - [Species.GOOMY]: [ Moves.DRAGON_HAMMER, Moves.RECOVER, Moves.CALM_MIND, Moves.MAKE_IT_RAIN ], - [Species.KLEFKI]: [ Moves.HEAL_BELL, Moves.ENCORE, Moves.INSTRUCT, Moves.TOPSY_TURVY ], - [Species.PHANTUMP]: [ Moves.RAGE_FIST, Moves.SLEEP_POWDER, Moves.BULK_UP, Moves.SAPPY_SEED ], - [Species.PUMPKABOO]: [ Moves.SPIRIT_SHACKLE, Moves.FIRE_LASH, Moves.DIRE_CLAW, Moves.SAPPY_SEED ], - [Species.BERGMITE]: [ Moves.STONE_AXE, Moves.METAL_BURST, Moves.BODY_PRESS, Moves.GLACIAL_LANCE ], - [Species.NOIBAT]: [ Moves.AEROBLAST, Moves.OVERDRIVE, Moves.NASTY_PLOT, Moves.CLANGING_SCALES ], - [Species.XERNEAS]: [ Moves.EARTH_POWER, Moves.SPRINGTIDE_STORM, Moves.STORED_POWER, Moves.STRENGTH_SAP ], - [Species.YVELTAL]: [ Moves.SLUDGE_WAVE, Moves.POWER_TRIP, Moves.FIERY_WRATH, Moves.CLANGOROUS_SOUL ], - [Species.ZYGARDE]: [ Moves.DRAGON_DARTS, Moves.V_CREATE, Moves.CLANGOROUS_SOUL, Moves.HEAL_ORDER ], - [Species.DIANCIE]: [ Moves.MAGICAL_TORQUE, Moves.FIERY_DANCE, Moves.SHORE_UP, Moves.GEOMANCY ], - [Species.HOOPA]: [ Moves.PHOTON_GEYSER, Moves.SECRET_SWORD, Moves.FIERY_WRATH, Moves.SHELL_SMASH ], - [Species.VOLCANION]: [ Moves.HYDRO_STEAM, Moves.CALM_MIND, Moves.SEARING_SHOT, Moves.THUNDERCLAP ], - [Species.ETERNAL_FLOETTE]: [ Moves.MIND_BLOWN, Moves.CHLOROBLAST, Moves.LUSTER_PURGE, Moves.QUIVER_DANCE ], + [SpeciesId.CHESPIN]: [ MoveId.COMBAT_TORQUE, MoveId.SYNTHESIS, MoveId.CEASELESS_EDGE, MoveId.SAPPY_SEED ], + [SpeciesId.FENNEKIN]: [ MoveId.TWIN_BEAM, MoveId.FIERY_DANCE, MoveId.THUNDERBOLT, MoveId.SPARKLY_SWIRL ], + [SpeciesId.FROAKIE]: [ MoveId.MOONBLAST, MoveId.SHELL_SIDE_ARM, MoveId.FIERY_WRATH, MoveId.STEAM_ERUPTION ], + [SpeciesId.BUNNELBY]: [ MoveId.DRAIN_PUNCH, MoveId.TIDY_UP, MoveId.LANDS_WRATH, MoveId.EXTREME_SPEED ], + [SpeciesId.FLETCHLING]: [ MoveId.DRILL_RUN, MoveId.BURNING_BULWARK, MoveId.HEAD_SMASH, MoveId.VOLT_TACKLE ], + [SpeciesId.SCATTERBUG]: [ MoveId.FOCUS_BLAST, MoveId.AFTER_YOU, MoveId.DECORATE, MoveId.BLIZZARD ], + [SpeciesId.LITLEO]: [ MoveId.EARTH_POWER, MoveId.NASTY_PLOT, MoveId.BURNING_BULWARK, MoveId.BLUE_FLARE ], + [SpeciesId.FLABEBE]: [ MoveId.GLITZY_GLOW, MoveId.MYSTICAL_FIRE, MoveId.TAKE_HEART, MoveId.SEED_FLARE ], + [SpeciesId.SKIDDO]: [ MoveId.HIGH_HORSEPOWER, MoveId.GRASSY_GLIDE, MoveId.STONE_AXE, MoveId.SAPPY_SEED ], + [SpeciesId.PANCHAM]: [ MoveId.DRAIN_PUNCH, MoveId.SUCKER_PUNCH, MoveId.METEOR_MASH, MoveId.WICKED_BLOW ], + [SpeciesId.FURFROU]: [ MoveId.TIDY_UP, MoveId.SLACK_OFF, MoveId.COMBAT_TORQUE, MoveId.MULTI_ATTACK ], + [SpeciesId.ESPURR]: [ MoveId.LUSTER_PURGE, MoveId.MOONBLAST, MoveId.AURA_SPHERE, MoveId.DARK_VOID ], + [SpeciesId.HONEDGE]: [ MoveId.TACHYON_CUTTER, MoveId.SHADOW_BONE, MoveId.BITTER_BLADE, MoveId.BEHEMOTH_BLADE ], + [SpeciesId.SPRITZEE]: [ MoveId.SPEED_SWAP, MoveId.REVIVAL_BLESSING, MoveId.ROOST, MoveId.TORCH_SONG ], + [SpeciesId.SWIRLIX]: [ MoveId.BELLY_DRUM, MoveId.HEADLONG_RUSH, MoveId.MAGICAL_TORQUE, MoveId.REVIVAL_BLESSING ], + [SpeciesId.INKAY]: [ MoveId.POWER_TRIP, MoveId.SPIN_OUT, MoveId.RECOVER, MoveId.PSYCHO_BOOST ], + [SpeciesId.BINACLE]: [ MoveId.TRIPLE_AXEL, MoveId.CRABHAMMER, MoveId.DIRE_CLAW, MoveId.MIGHTY_CLEAVE ], + [SpeciesId.SKRELP]: [ MoveId.STRENGTH_SAP, MoveId.TRICK_ROOM, MoveId.CALM_MIND, MoveId.CORE_ENFORCER ], + [SpeciesId.CLAUNCHER]: [ MoveId.SHELL_SMASH, MoveId.ARMOR_CANNON, MoveId.ENERGY_BALL, MoveId.ORIGIN_PULSE ], + [SpeciesId.HELIOPTILE]: [ MoveId.WEATHER_BALL, MoveId.HYDRO_STEAM, MoveId.EARTH_POWER, MoveId.BOOMBURST ], + [SpeciesId.TYRUNT]: [ MoveId.DRAGON_HAMMER, MoveId.FLARE_BLITZ, MoveId.VOLT_TACKLE, MoveId.SHIFT_GEAR ], + [SpeciesId.AMAURA]: [ MoveId.RECOVER, MoveId.TERA_STARSTORM, MoveId.POWER_GEM, MoveId.GEOMANCY ], + [SpeciesId.HAWLUCHA]: [ MoveId.TRIPLE_AXEL, MoveId.HIGH_HORSEPOWER, MoveId.FLOATY_FALL, MoveId.WICKED_BLOW ], + [SpeciesId.DEDENNE]: [ MoveId.BOOMBURST, MoveId.FAKE_OUT, MoveId.NASTY_PLOT, MoveId.REVIVAL_BLESSING ], + [SpeciesId.CARBINK]: [ MoveId.BODY_PRESS, MoveId.SHORE_UP, MoveId.SPARKLY_SWIRL, MoveId.DIAMOND_STORM ], + [SpeciesId.GOOMY]: [ MoveId.DRAGON_HAMMER, MoveId.RECOVER, MoveId.CALM_MIND, MoveId.MAKE_IT_RAIN ], + [SpeciesId.KLEFKI]: [ MoveId.HEAL_BELL, MoveId.ENCORE, MoveId.INSTRUCT, MoveId.TOPSY_TURVY ], + [SpeciesId.PHANTUMP]: [ MoveId.RAGE_FIST, MoveId.SLEEP_POWDER, MoveId.BULK_UP, MoveId.SAPPY_SEED ], + [SpeciesId.PUMPKABOO]: [ MoveId.SPIRIT_SHACKLE, MoveId.FIRE_LASH, MoveId.DIRE_CLAW, MoveId.SAPPY_SEED ], + [SpeciesId.BERGMITE]: [ MoveId.STONE_AXE, MoveId.METAL_BURST, MoveId.BODY_PRESS, MoveId.GLACIAL_LANCE ], + [SpeciesId.NOIBAT]: [ MoveId.AEROBLAST, MoveId.OVERDRIVE, MoveId.NASTY_PLOT, MoveId.CLANGING_SCALES ], + [SpeciesId.XERNEAS]: [ MoveId.EARTH_POWER, MoveId.SPRINGTIDE_STORM, MoveId.STORED_POWER, MoveId.STRENGTH_SAP ], + [SpeciesId.YVELTAL]: [ MoveId.SLUDGE_WAVE, MoveId.POWER_TRIP, MoveId.FIERY_WRATH, MoveId.CLANGOROUS_SOUL ], + [SpeciesId.ZYGARDE]: [ MoveId.DRAGON_DARTS, MoveId.V_CREATE, MoveId.CLANGOROUS_SOUL, MoveId.HEAL_ORDER ], + [SpeciesId.DIANCIE]: [ MoveId.MAGICAL_TORQUE, MoveId.FIERY_DANCE, MoveId.SHORE_UP, MoveId.GEOMANCY ], + [SpeciesId.HOOPA]: [ MoveId.PHOTON_GEYSER, MoveId.SECRET_SWORD, MoveId.FIERY_WRATH, MoveId.SHELL_SMASH ], + [SpeciesId.VOLCANION]: [ MoveId.HYDRO_STEAM, MoveId.CALM_MIND, MoveId.SEARING_SHOT, MoveId.THUNDERCLAP ], + [SpeciesId.ETERNAL_FLOETTE]: [ MoveId.MIND_BLOWN, MoveId.CHLOROBLAST, MoveId.LUSTER_PURGE, MoveId.QUIVER_DANCE ], - [Species.ROWLET]: [ Moves.THOUSAND_ARROWS, Moves.SHADOW_BONE, Moves.FIRST_IMPRESSION, Moves.VICTORY_DANCE ], - [Species.LITTEN]: [ Moves.SUCKER_PUNCH, Moves.PARTING_SHOT, Moves.SLACK_OFF, Moves.SACRED_FIRE ], - [Species.POPPLIO]: [ Moves.PSYCHIC_NOISE, Moves.MOONLIGHT, Moves.OVERDRIVE, Moves.TORCH_SONG ], - [Species.PIKIPEK]: [ Moves.DUAL_WINGBEAT, Moves.BONE_RUSH, Moves.BURNING_BULWARK, Moves.POPULATION_BOMB ], - [Species.YUNGOOS]: [ Moves.EXTREME_SPEED, Moves.KNOCK_OFF, Moves.TIDY_UP, Moves.MULTI_ATTACK ], - [Species.GRUBBIN]: [ Moves.ICE_BEAM, Moves.EARTH_POWER, Moves.CALM_MIND, Moves.THUNDERCLAP ], - [Species.CRABRAWLER]: [ Moves.JET_PUNCH, Moves.SHORE_UP, Moves.MACH_PUNCH, Moves.SURGING_STRIKES ], - [Species.ORICORIO]: [ Moves.QUIVER_DANCE, Moves.FIERY_DANCE, Moves.THUNDERCLAP, Moves.OBLIVION_WING ], - [Species.CUTIEFLY]: [ Moves.STICKY_WEB, Moves.SLEEP_POWDER, Moves.HEAT_WAVE, Moves.SPARKLY_SWIRL ], - [Species.ROCKRUFF]: [ Moves.HIGH_HORSEPOWER, Moves.TIDY_UP, Moves.ICE_SPINNER, Moves.MIGHTY_CLEAVE ], - [Species.WISHIWASHI]: [ Moves.HEAL_ORDER, Moves.FREEZE_DRY, Moves.WATER_SHURIKEN, Moves.TAIL_GLOW ], - [Species.MAREANIE]: [ Moves.CEASELESS_EDGE, Moves.SIZZLY_SLIDE, Moves.BODY_PRESS, Moves.LEECH_SEED ], - [Species.MUDBRAY]: [ Moves.BODY_PRESS, Moves.YAWN, Moves.SHORE_UP, Moves.THOUSAND_WAVES ], - [Species.DEWPIDER]: [ Moves.AQUA_STEP, Moves.SILK_TRAP, Moves.SWORDS_DANCE, Moves.JET_PUNCH ], - [Species.FOMANTIS]: [ Moves.SUPERPOWER, Moves.HEADLONG_RUSH, Moves.ICE_HAMMER, Moves.BITTER_BLADE ], - [Species.MORELULL]: [ Moves.CALM_MIND, Moves.SAPPY_SEED, Moves.DRAINING_KISS, Moves.MATCHA_GOTCHA ], - [Species.SALANDIT]: [ Moves.SCALD, Moves.MALIGNANT_CHAIN, Moves.CORE_ENFORCER, Moves.ERUPTION ], - [Species.STUFFUL]: [ Moves.DRAIN_PUNCH, Moves.METEOR_MASH, Moves.TRIPLE_AXEL, Moves.RAGE_FIST ], - [Species.BOUNSWEET]: [ Moves.TRIPLE_AXEL, Moves.AQUA_STEP, Moves.THUNDEROUS_KICK, Moves.SAPPY_SEED ], - [Species.COMFEY]: [ Moves.REVIVAL_BLESSING, Moves.TAKE_HEART, Moves.STRENGTH_SAP, Moves.MATCHA_GOTCHA ], - [Species.ORANGURU]: [ Moves.JUNGLE_HEALING, Moves.YAWN, Moves.FOLLOW_ME, Moves.LUMINA_CRASH ], - [Species.PASSIMIAN]: [ Moves.PYRO_BALL, Moves.SUCKER_PUNCH, Moves.ZING_ZAP, Moves.VICTORY_DANCE ], - [Species.WIMPOD]: [ Moves.TRIPLE_AXEL, Moves.OBSTRUCT, Moves.JET_PUNCH, Moves.SURGING_STRIKES ], - [Species.SANDYGAST]: [ Moves.BITTER_MALICE, Moves.SPLISHY_SPLASH, Moves.TAKE_HEART, Moves.SALT_CURE ], - [Species.PYUKUMUKU]: [ Moves.COMEUPPANCE, Moves.BANEFUL_BUNKER, Moves.TOXIC_SPIKES, Moves.SALT_CURE ], - [Species.TYPE_NULL]: [ Moves.DIRE_CLAW, Moves.RECOVER, Moves.COMBAT_TORQUE, Moves.NO_RETREAT ], - [Species.MINIOR]: [ Moves.EARTH_POWER, Moves.FLOATY_FALL, Moves.TRI_ATTACK, Moves.DIAMOND_STORM ], - [Species.KOMALA]: [ Moves.SLACK_OFF, Moves.EXTREME_SPEED, Moves.KNOCK_OFF, Moves.COLLISION_COURSE ], - [Species.TURTONATOR]: [ Moves.BURNING_BULWARK, Moves.MORNING_SUN, Moves.BODY_PRESS, Moves.CORE_ENFORCER ], - [Species.TOGEDEMARU]: [ Moves.FAKE_OUT, Moves.METAL_BURST, Moves.METEOR_MASH, Moves.AURA_WHEEL ], - [Species.MIMIKYU]: [ Moves.SPIRIT_BREAK, Moves.TIDY_UP, Moves.FIRE_LASH, Moves.SPECTRAL_THIEF ], - [Species.BRUXISH]: [ Moves.PLAY_ROUGH, Moves.FIRE_FANG, Moves.DRAGON_DANCE, Moves.SURGING_STRIKES ], - [Species.DRAMPA]: [ Moves.SLACK_OFF, Moves.TRICK_ROOM, Moves.CORE_ENFORCER, Moves.BOOMBURST ], - [Species.DHELMISE]: [ Moves.SHADOW_BONE, Moves.IVY_CUDGEL, Moves.TRIPLE_DIVE, Moves.STRENGTH_SAP ], - [Species.JANGMO_O]: [ Moves.BODY_PRESS, Moves.SHELL_SIDE_ARM, Moves.SECRET_SWORD, Moves.GLAIVE_RUSH ], - [Species.TAPU_KOKO]: [ Moves.MAGICAL_TORQUE, Moves.TRIPLE_AXEL, Moves.SWORDS_DANCE, Moves.BOLT_STRIKE ], - [Species.TAPU_LELE]: [ Moves.MOONLIGHT, Moves.NASTY_PLOT, Moves.HEAT_WAVE, Moves.EXPANDING_FORCE ], - [Species.TAPU_BULU]: [ Moves.SAPPY_SEED, Moves.LANDS_WRATH, Moves.MAGICAL_TORQUE, Moves.VICTORY_DANCE ], - [Species.TAPU_FINI]: [ Moves.SPRINGTIDE_STORM, Moves.EARTH_POWER, Moves.RECOVER, Moves.QUIVER_DANCE ], - [Species.COSMOG]: [ Moves.PHOTON_GEYSER, Moves.PRECIPICE_BLADES, Moves.SACRED_FIRE, Moves.ASTRAL_BARRAGE ], - [Species.NIHILEGO]: [ Moves.STRENGTH_SAP, Moves.MALIGNANT_CHAIN, Moves.EARTH_POWER, Moves.QUIVER_DANCE ], - [Species.BUZZWOLE]: [ Moves.FIRST_IMPRESSION, Moves.COMBAT_TORQUE, Moves.ROCK_BLAST, Moves.DOUBLE_IRON_BASH ], - [Species.PHEROMOSA]: [ Moves.SECRET_SWORD, Moves.MAKE_IT_RAIN, Moves.ATTACK_ORDER, Moves.DIAMOND_STORM ], - [Species.XURKITREE]: [ Moves.FLAMETHROWER, Moves.GIGA_DRAIN, Moves.TAIL_GLOW, Moves.THUNDERCLAP ], - [Species.CELESTEELA]: [ Moves.RECOVER, Moves.BUZZY_BUZZ, Moves.EARTH_POWER, Moves.OBLIVION_WING ], - [Species.KARTANA]: [ Moves.MIGHTY_CLEAVE, Moves.DUAL_CHOP, Moves.BITTER_BLADE, Moves.BEHEMOTH_BLADE ], - [Species.GUZZLORD]: [ Moves.SUCKER_PUNCH, Moves.COMEUPPANCE, Moves.SLACK_OFF, Moves.SHED_TAIL ], - [Species.NECROZMA]: [ Moves.DYNAMAX_CANNON, Moves.SACRED_FIRE, Moves.ASTRAL_BARRAGE, Moves.CLANGOROUS_SOUL ], - [Species.MAGEARNA]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.MOONBLAST, Moves.MAKE_IT_RAIN ], - [Species.MARSHADOW]: [ Moves.POWER_UP_PUNCH, Moves.BONEMERANG, Moves.METEOR_MASH, Moves.TRIPLE_AXEL ], - [Species.POIPOLE]: [ Moves.MALIGNANT_CHAIN, Moves.ICE_BEAM, Moves.ARMOR_CANNON, Moves.CLANGING_SCALES ], - [Species.STAKATAKA]: [ Moves.HEAVY_SLAM, Moves.SHORE_UP, Moves.CURSE, Moves.SALT_CURE ], - [Species.BLACEPHALON]: [ Moves.STEEL_BEAM, Moves.MOONBLAST, Moves.CHLOROBLAST, Moves.MOONGEIST_BEAM ], - [Species.ZERAORA]: [ Moves.SWORDS_DANCE, Moves.U_TURN, Moves.COLLISION_COURSE, Moves.TRIPLE_AXEL ], - [Species.MELTAN]: [ Moves.BULLET_PUNCH, Moves.DRAIN_PUNCH, Moves.BULK_UP, Moves.PLASMA_FISTS ], - [Species.ALOLA_RATTATA]: [ Moves.FALSE_SURRENDER, Moves.PSYCHIC_FANGS, Moves.COIL, Moves.EXTREME_SPEED ], - [Species.ALOLA_SANDSHREW]: [ Moves.SPIKY_SHIELD, Moves.LIQUIDATION, Moves.SHIFT_GEAR, Moves.GLACIAL_LANCE ], - [Species.ALOLA_VULPIX]: [ Moves.MOONBLAST, Moves.GLARE, Moves.MYSTICAL_FIRE, Moves.REVIVAL_BLESSING ], - [Species.ALOLA_DIGLETT]: [ Moves.THOUSAND_WAVES, Moves.SWORDS_DANCE, Moves.TRIPLE_DIVE, Moves.PYRO_BALL ], - [Species.ALOLA_MEOWTH]: [ Moves.BADDY_BAD, Moves.BUZZY_BUZZ, Moves.PARTING_SHOT, Moves.MAKE_IT_RAIN ], - [Species.ALOLA_GEODUDE]: [ Moves.THOUSAND_WAVES, Moves.BULK_UP, Moves.STONE_AXE, Moves.EXTREME_SPEED ], - [Species.ALOLA_GRIMER]: [ Moves.SUCKER_PUNCH, Moves.BARB_BARRAGE, Moves.RECOVER, Moves.SURGING_STRIKES ], + [SpeciesId.ROWLET]: [ MoveId.THOUSAND_ARROWS, MoveId.SHADOW_BONE, MoveId.FIRST_IMPRESSION, MoveId.VICTORY_DANCE ], + [SpeciesId.LITTEN]: [ MoveId.SUCKER_PUNCH, MoveId.PARTING_SHOT, MoveId.SLACK_OFF, MoveId.SACRED_FIRE ], + [SpeciesId.POPPLIO]: [ MoveId.PSYCHIC_NOISE, MoveId.MOONLIGHT, MoveId.OVERDRIVE, MoveId.TORCH_SONG ], + [SpeciesId.PIKIPEK]: [ MoveId.DUAL_WINGBEAT, MoveId.BONE_RUSH, MoveId.BURNING_BULWARK, MoveId.POPULATION_BOMB ], + [SpeciesId.YUNGOOS]: [ MoveId.EXTREME_SPEED, MoveId.KNOCK_OFF, MoveId.TIDY_UP, MoveId.MULTI_ATTACK ], + [SpeciesId.GRUBBIN]: [ MoveId.ICE_BEAM, MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.THUNDERCLAP ], + [SpeciesId.CRABRAWLER]: [ MoveId.JET_PUNCH, MoveId.SHORE_UP, MoveId.MACH_PUNCH, MoveId.SURGING_STRIKES ], + [SpeciesId.ORICORIO]: [ MoveId.QUIVER_DANCE, MoveId.FIERY_DANCE, MoveId.THUNDERCLAP, MoveId.OBLIVION_WING ], + [SpeciesId.CUTIEFLY]: [ MoveId.STICKY_WEB, MoveId.SLEEP_POWDER, MoveId.HEAT_WAVE, MoveId.SPARKLY_SWIRL ], + [SpeciesId.ROCKRUFF]: [ MoveId.HIGH_HORSEPOWER, MoveId.TIDY_UP, MoveId.ICE_SPINNER, MoveId.MIGHTY_CLEAVE ], + [SpeciesId.WISHIWASHI]: [ MoveId.HEAL_ORDER, MoveId.FREEZE_DRY, MoveId.WATER_SHURIKEN, MoveId.TAIL_GLOW ], + [SpeciesId.MAREANIE]: [ MoveId.CEASELESS_EDGE, MoveId.SIZZLY_SLIDE, MoveId.BODY_PRESS, MoveId.LEECH_SEED ], + [SpeciesId.MUDBRAY]: [ MoveId.BODY_PRESS, MoveId.YAWN, MoveId.SHORE_UP, MoveId.THOUSAND_WAVES ], + [SpeciesId.DEWPIDER]: [ MoveId.AQUA_STEP, MoveId.SILK_TRAP, MoveId.SWORDS_DANCE, MoveId.JET_PUNCH ], + [SpeciesId.FOMANTIS]: [ MoveId.SUPERPOWER, MoveId.HEADLONG_RUSH, MoveId.ICE_HAMMER, MoveId.BITTER_BLADE ], + [SpeciesId.MORELULL]: [ MoveId.CALM_MIND, MoveId.SAPPY_SEED, MoveId.DRAINING_KISS, MoveId.MATCHA_GOTCHA ], + [SpeciesId.SALANDIT]: [ MoveId.SCALD, MoveId.MALIGNANT_CHAIN, MoveId.CORE_ENFORCER, MoveId.ERUPTION ], + [SpeciesId.STUFFUL]: [ MoveId.DRAIN_PUNCH, MoveId.METEOR_MASH, MoveId.TRIPLE_AXEL, MoveId.RAGE_FIST ], + [SpeciesId.BOUNSWEET]: [ MoveId.TRIPLE_AXEL, MoveId.AQUA_STEP, MoveId.THUNDEROUS_KICK, MoveId.SAPPY_SEED ], + [SpeciesId.COMFEY]: [ MoveId.REVIVAL_BLESSING, MoveId.TAKE_HEART, MoveId.STRENGTH_SAP, MoveId.MATCHA_GOTCHA ], + [SpeciesId.ORANGURU]: [ MoveId.JUNGLE_HEALING, MoveId.YAWN, MoveId.FOLLOW_ME, MoveId.LUMINA_CRASH ], + [SpeciesId.PASSIMIAN]: [ MoveId.PYRO_BALL, MoveId.SUCKER_PUNCH, MoveId.ZING_ZAP, MoveId.VICTORY_DANCE ], + [SpeciesId.WIMPOD]: [ MoveId.TRIPLE_AXEL, MoveId.OBSTRUCT, MoveId.JET_PUNCH, MoveId.SURGING_STRIKES ], + [SpeciesId.SANDYGAST]: [ MoveId.BITTER_MALICE, MoveId.SPLISHY_SPLASH, MoveId.TAKE_HEART, MoveId.SALT_CURE ], + [SpeciesId.PYUKUMUKU]: [ MoveId.COMEUPPANCE, MoveId.BANEFUL_BUNKER, MoveId.TOXIC_SPIKES, MoveId.SALT_CURE ], + [SpeciesId.TYPE_NULL]: [ MoveId.DIRE_CLAW, MoveId.RECOVER, MoveId.COMBAT_TORQUE, MoveId.NO_RETREAT ], + [SpeciesId.MINIOR]: [ MoveId.EARTH_POWER, MoveId.FLOATY_FALL, MoveId.TRI_ATTACK, MoveId.DIAMOND_STORM ], + [SpeciesId.KOMALA]: [ MoveId.SLACK_OFF, MoveId.EXTREME_SPEED, MoveId.KNOCK_OFF, MoveId.COLLISION_COURSE ], + [SpeciesId.TURTONATOR]: [ MoveId.BURNING_BULWARK, MoveId.MORNING_SUN, MoveId.BODY_PRESS, MoveId.CORE_ENFORCER ], + [SpeciesId.TOGEDEMARU]: [ MoveId.FAKE_OUT, MoveId.METAL_BURST, MoveId.METEOR_MASH, MoveId.AURA_WHEEL ], + [SpeciesId.MIMIKYU]: [ MoveId.SPIRIT_BREAK, MoveId.TIDY_UP, MoveId.FIRE_LASH, MoveId.SPECTRAL_THIEF ], + [SpeciesId.BRUXISH]: [ MoveId.PLAY_ROUGH, MoveId.FIRE_FANG, MoveId.DRAGON_DANCE, MoveId.SURGING_STRIKES ], + [SpeciesId.DRAMPA]: [ MoveId.SLACK_OFF, MoveId.TRICK_ROOM, MoveId.CORE_ENFORCER, MoveId.BOOMBURST ], + [SpeciesId.DHELMISE]: [ MoveId.SHADOW_BONE, MoveId.IVY_CUDGEL, MoveId.TRIPLE_DIVE, MoveId.STRENGTH_SAP ], + [SpeciesId.JANGMO_O]: [ MoveId.BODY_PRESS, MoveId.SHELL_SIDE_ARM, MoveId.SECRET_SWORD, MoveId.GLAIVE_RUSH ], + [SpeciesId.TAPU_KOKO]: [ MoveId.MAGICAL_TORQUE, MoveId.TRIPLE_AXEL, MoveId.SWORDS_DANCE, MoveId.BOLT_STRIKE ], + [SpeciesId.TAPU_LELE]: [ MoveId.MOONLIGHT, MoveId.NASTY_PLOT, MoveId.HEAT_WAVE, MoveId.EXPANDING_FORCE ], + [SpeciesId.TAPU_BULU]: [ MoveId.SAPPY_SEED, MoveId.LANDS_WRATH, MoveId.MAGICAL_TORQUE, MoveId.VICTORY_DANCE ], + [SpeciesId.TAPU_FINI]: [ MoveId.SPRINGTIDE_STORM, MoveId.EARTH_POWER, MoveId.RECOVER, MoveId.QUIVER_DANCE ], + [SpeciesId.COSMOG]: [ MoveId.PHOTON_GEYSER, MoveId.PRECIPICE_BLADES, MoveId.SACRED_FIRE, MoveId.ASTRAL_BARRAGE ], + [SpeciesId.NIHILEGO]: [ MoveId.STRENGTH_SAP, MoveId.MALIGNANT_CHAIN, MoveId.EARTH_POWER, MoveId.QUIVER_DANCE ], + [SpeciesId.BUZZWOLE]: [ MoveId.FIRST_IMPRESSION, MoveId.COMBAT_TORQUE, MoveId.ROCK_BLAST, MoveId.DOUBLE_IRON_BASH ], + [SpeciesId.PHEROMOSA]: [ MoveId.SECRET_SWORD, MoveId.MAKE_IT_RAIN, MoveId.ATTACK_ORDER, MoveId.DIAMOND_STORM ], + [SpeciesId.XURKITREE]: [ MoveId.FLAMETHROWER, MoveId.GIGA_DRAIN, MoveId.TAIL_GLOW, MoveId.THUNDERCLAP ], + [SpeciesId.CELESTEELA]: [ MoveId.RECOVER, MoveId.BUZZY_BUZZ, MoveId.EARTH_POWER, MoveId.OBLIVION_WING ], + [SpeciesId.KARTANA]: [ MoveId.MIGHTY_CLEAVE, MoveId.DUAL_CHOP, MoveId.BITTER_BLADE, MoveId.BEHEMOTH_BLADE ], + [SpeciesId.GUZZLORD]: [ MoveId.SUCKER_PUNCH, MoveId.COMEUPPANCE, MoveId.SLACK_OFF, MoveId.SHED_TAIL ], + [SpeciesId.NECROZMA]: [ MoveId.DYNAMAX_CANNON, MoveId.SACRED_FIRE, MoveId.ASTRAL_BARRAGE, MoveId.CLANGOROUS_SOUL ], + [SpeciesId.MAGEARNA]: [ MoveId.STRENGTH_SAP, MoveId.EARTH_POWER, MoveId.MOONBLAST, MoveId.MAKE_IT_RAIN ], + [SpeciesId.MARSHADOW]: [ MoveId.POWER_UP_PUNCH, MoveId.BONEMERANG, MoveId.METEOR_MASH, MoveId.TRIPLE_AXEL ], + [SpeciesId.POIPOLE]: [ MoveId.MALIGNANT_CHAIN, MoveId.ICE_BEAM, MoveId.ARMOR_CANNON, MoveId.CLANGING_SCALES ], + [SpeciesId.STAKATAKA]: [ MoveId.HEAVY_SLAM, MoveId.SHORE_UP, MoveId.CURSE, MoveId.SALT_CURE ], + [SpeciesId.BLACEPHALON]: [ MoveId.STEEL_BEAM, MoveId.MOONBLAST, MoveId.CHLOROBLAST, MoveId.MOONGEIST_BEAM ], + [SpeciesId.ZERAORA]: [ MoveId.SWORDS_DANCE, MoveId.U_TURN, MoveId.COLLISION_COURSE, MoveId.TRIPLE_AXEL ], + [SpeciesId.MELTAN]: [ MoveId.BULLET_PUNCH, MoveId.DRAIN_PUNCH, MoveId.BULK_UP, MoveId.PLASMA_FISTS ], + [SpeciesId.ALOLA_RATTATA]: [ MoveId.FALSE_SURRENDER, MoveId.PSYCHIC_FANGS, MoveId.COIL, MoveId.EXTREME_SPEED ], + [SpeciesId.ALOLA_SANDSHREW]: [ MoveId.SPIKY_SHIELD, MoveId.LIQUIDATION, MoveId.SHIFT_GEAR, MoveId.GLACIAL_LANCE ], + [SpeciesId.ALOLA_VULPIX]: [ MoveId.MOONBLAST, MoveId.GLARE, MoveId.MYSTICAL_FIRE, MoveId.REVIVAL_BLESSING ], + [SpeciesId.ALOLA_DIGLETT]: [ MoveId.THOUSAND_WAVES, MoveId.SWORDS_DANCE, MoveId.TRIPLE_DIVE, MoveId.PYRO_BALL ], + [SpeciesId.ALOLA_MEOWTH]: [ MoveId.BADDY_BAD, MoveId.BUZZY_BUZZ, MoveId.PARTING_SHOT, MoveId.MAKE_IT_RAIN ], + [SpeciesId.ALOLA_GEODUDE]: [ MoveId.THOUSAND_WAVES, MoveId.BULK_UP, MoveId.STONE_AXE, MoveId.EXTREME_SPEED ], + [SpeciesId.ALOLA_GRIMER]: [ MoveId.SUCKER_PUNCH, MoveId.BARB_BARRAGE, MoveId.RECOVER, MoveId.SURGING_STRIKES ], - [Species.GROOKEY]: [ Moves.ROCK_SLIDE, Moves.PLAY_ROUGH, Moves.GRASSY_GLIDE, Moves.CLANGOROUS_SOUL ], - [Species.SCORBUNNY]: [ Moves.EXTREME_SPEED, Moves.HIGH_JUMP_KICK, Moves.TRIPLE_AXEL, Moves.BOLT_STRIKE ], - [Species.SOBBLE]: [ Moves.AEROBLAST, Moves.FROST_BREATH, Moves.ENERGY_BALL, Moves.NASTY_PLOT ], - [Species.SKWOVET]: [ Moves.SUCKER_PUNCH, Moves.SLACK_OFF, Moves.COIL, Moves.POPULATION_BOMB ], - [Species.ROOKIDEE]: [ Moves.ROOST, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.BEHEMOTH_BASH ], - [Species.BLIPBUG]: [ Moves.HEAL_ORDER, Moves.LUSTER_PURGE, Moves.SLEEP_POWDER, Moves.TAIL_GLOW ], - [Species.NICKIT]: [ Moves.BADDY_BAD, Moves.FLAMETHROWER, Moves.SPARKLY_SWIRL, Moves.MAKE_IT_RAIN ], - [Species.GOSSIFLEUR]: [ Moves.PARTING_SHOT, Moves.STRENGTH_SAP, Moves.SAPPY_SEED, Moves.SEED_FLARE ], - [Species.WOOLOO]: [ Moves.NUZZLE, Moves.MILK_DRINK, Moves.BODY_PRESS, Moves.MULTI_ATTACK ], - [Species.CHEWTLE]: [ Moves.ICE_FANG, Moves.PSYCHIC_FANGS, Moves.SHELL_SMASH, Moves.MIGHTY_CLEAVE ], - [Species.YAMPER]: [ Moves.ICE_FANG, Moves.SWORDS_DANCE, Moves.THUNDER_FANG, Moves.BOLT_STRIKE ], - [Species.ROLYCOLY]: [ Moves.BITTER_BLADE, Moves.BODY_PRESS, Moves.BULK_UP, Moves.DIAMOND_STORM ], - [Species.APPLIN]: [ Moves.CORE_ENFORCER, Moves.COMBAT_TORQUE, Moves.SAPPY_SEED, Moves.MATCHA_GOTCHA ], - [Species.SILICOBRA]: [ Moves.SHORE_UP, Moves.SHED_TAIL, Moves.MOUNTAIN_GALE, Moves.THOUSAND_ARROWS ], - [Species.CRAMORANT]: [ Moves.APPLE_ACID, Moves.SURF, Moves.BOLT_BEAK, Moves.OBLIVION_WING ], - [Species.ARROKUDA]: [ Moves.SUPERCELL_SLAM, Moves.TRIPLE_DIVE, Moves.ICE_SPINNER, Moves.SWORDS_DANCE ], - [Species.TOXEL]: [ Moves.BUZZY_BUZZ, Moves.BUG_BUZZ, Moves.SPARKLING_ARIA, Moves.TORCH_SONG ], - [Species.SIZZLIPEDE]: [ Moves.BURNING_BULWARK, Moves.ZING_ZAP, Moves.FIRST_IMPRESSION, Moves.BITTER_BLADE ], - [Species.CLOBBOPUS]: [ Moves.STORM_THROW, Moves.JET_PUNCH, Moves.MACH_PUNCH, Moves.SURGING_STRIKES ], - [Species.SINISTEA]: [ Moves.SPLISHY_SPLASH, Moves.MATCHA_GOTCHA, Moves.DRAINING_KISS, Moves.MOONGEIST_BEAM ], - [Species.HATENNA]: [ Moves.RECOVER, Moves.MOONBLAST, Moves.BUZZY_BUZZ, Moves.TORCH_SONG ], - [Species.IMPIDIMP]: [ Moves.SLACK_OFF, Moves.PARTING_SHOT, Moves.OCTOLOCK, Moves.WICKED_BLOW ], - [Species.MILCERY]: [ Moves.MOONBLAST, Moves.CHILLY_RECEPTION, Moves.EARTH_POWER, Moves.GEOMANCY ], - [Species.FALINKS]: [ Moves.BATON_PASS, Moves.POWER_TRIP, Moves.COMBAT_TORQUE, Moves.HEAL_ORDER ], - [Species.PINCURCHIN]: [ Moves.TRICK_ROOM, Moves.VOLT_SWITCH, Moves.STRENGTH_SAP, Moves.THUNDERCLAP ], - [Species.SNOM]: [ Moves.FROST_BREATH, Moves.HEAL_ORDER, Moves.EARTH_POWER, Moves.SPORE ], - [Species.STONJOURNER]: [ Moves.BODY_PRESS, Moves.HELPING_HAND, Moves.ACCELEROCK, Moves.DIAMOND_STORM ], - [Species.EISCUE]: [ Moves.TRIPLE_AXEL, Moves.AQUA_STEP, Moves.AXE_KICK, Moves.SHELL_SMASH ], - [Species.INDEEDEE]: [ Moves.MATCHA_GOTCHA, Moves.EXPANDING_FORCE, Moves.MOONBLAST, Moves.REVIVAL_BLESSING ], - [Species.MORPEKO]: [ Moves.TRIPLE_AXEL, Moves.OBSTRUCT, Moves.SWORDS_DANCE, Moves.COLLISION_COURSE ], - [Species.CUFANT]: [ Moves.LIQUIDATION, Moves.CURSE, Moves.COMBAT_TORQUE, Moves.GIGATON_HAMMER ], - [Species.DRACOZOLT]: [ Moves.TRIPLE_AXEL, Moves.GUNK_SHOT, Moves.FIRE_LASH, Moves.DRAGON_DANCE ], - [Species.ARCTOZOLT]: [ Moves.MOUNTAIN_GALE, Moves.AQUA_STEP, Moves.HIGH_HORSEPOWER, Moves.SHIFT_GEAR ], - [Species.DRACOVISH]: [ Moves.TRIPLE_AXEL, Moves.DRAGON_HAMMER, Moves.THUNDER_FANG, Moves.DRAGON_DANCE ], - [Species.ARCTOVISH]: [ Moves.ICE_FANG, Moves.THUNDER_FANG, Moves.HIGH_HORSEPOWER, Moves.SHIFT_GEAR ], - [Species.DURALUDON]: [ Moves.CORE_ENFORCER, Moves.BODY_PRESS, Moves.RECOVER, Moves.TACHYON_CUTTER ], - [Species.DREEPY]: [ Moves.SHADOW_BONE, Moves.POWER_UP_PUNCH, Moves.FIRE_LASH, Moves.DIRE_CLAW ], - [Species.ZACIAN]: [ Moves.MAGICAL_TORQUE, Moves.MIGHTY_CLEAVE, Moves.BITTER_BLADE, Moves.PRECIPICE_BLADES ], - [Species.ZAMAZENTA]: [ Moves.BULK_UP, Moves.BODY_PRESS, Moves.SLACK_OFF, Moves.DIAMOND_STORM ], - [Species.ETERNATUS]: [ Moves.BODY_PRESS, Moves.NASTY_PLOT, Moves.MALIGNANT_CHAIN, Moves.DRAGON_ENERGY ], - [Species.KUBFU]: [ Moves.METEOR_MASH, Moves.DRAIN_PUNCH, Moves.JET_PUNCH, Moves.DRAGON_DANCE ], - [Species.ZARUDE]: [ Moves.SAPPY_SEED, Moves.MIGHTY_CLEAVE, Moves.WICKED_BLOW, Moves.VICTORY_DANCE ], - [Species.REGIELEKI]: [ Moves.NASTY_PLOT, Moves.ICE_BEAM, Moves.EARTH_POWER, Moves.ELECTRO_DRIFT ], - [Species.REGIDRAGO]: [ Moves.SHELL_SIDE_ARM, Moves.FLAMETHROWER, Moves.TAKE_HEART, Moves.DRAGON_DARTS ], - [Species.GLASTRIER]: [ Moves.SPEED_SWAP, Moves.SLACK_OFF, Moves.HIGH_HORSEPOWER, Moves.GLACIAL_LANCE ], - [Species.SPECTRIER]: [ Moves.EARTH_POWER, Moves.MOONLIGHT, Moves.AURA_SPHERE, Moves.ASTRAL_BARRAGE ], - [Species.CALYREX]: [ Moves.SAPPY_SEED, Moves.RECOVER, Moves.SECRET_SWORD, Moves.PHOTON_GEYSER ], - [Species.ENAMORUS]: [ Moves.AEROBLAST, Moves.THOUSAND_ARROWS, Moves.STORED_POWER, Moves.FLEUR_CANNON ], - [Species.GALAR_MEOWTH]: [ Moves.LIQUIDATION, Moves.HORN_LEECH, Moves.BULLET_PUNCH, Moves.BEHEMOTH_BASH ], - [Species.GALAR_PONYTA]: [ Moves.MAGICAL_TORQUE, Moves.EXTREME_SPEED, Moves.FLARE_BLITZ, Moves.PHOTON_GEYSER ], - [Species.GALAR_SLOWPOKE]: [ Moves.SHED_TAIL, Moves.BADDY_BAD, Moves.MOONBLAST, Moves.PHOTON_GEYSER ], - [Species.GALAR_FARFETCHD]: [ Moves.ROOST, Moves.SACRED_SWORD, Moves.KINGS_SHIELD, Moves.BEHEMOTH_BLADE ], - [Species.GALAR_ARTICUNO]: [ Moves.SECRET_SWORD, Moves.NIGHT_DAZE, Moves.ICE_BEAM, Moves.OBLIVION_WING ], - [Species.GALAR_ZAPDOS]: [ Moves.POISON_JAB, Moves.FLOATY_FALL, Moves.ROOST, Moves.BOLT_BEAK ], - [Species.GALAR_MOLTRES]: [ Moves.ROOST, Moves.SLUDGE_BOMB, Moves.FLAMETHROWER, Moves.OBLIVION_WING ], - [Species.GALAR_CORSOLA]: [ Moves.SHELL_SMASH, Moves.AURA_SPHERE, Moves.INFERNAL_PARADE, Moves.ASTRAL_BARRAGE ], - [Species.GALAR_ZIGZAGOON]: [ Moves.CEASELESS_EDGE, Moves.FACADE, Moves.PARTING_SHOT, Moves.EXTREME_SPEED ], - [Species.GALAR_DARUMAKA]: [ Moves.ICE_SPINNER, Moves.ZING_ZAP, Moves.DRAIN_PUNCH, Moves.PYRO_BALL ], - [Species.GALAR_YAMASK]: [ Moves.STRENGTH_SAP, Moves.DIRE_CLAW, Moves.THOUSAND_WAVES, Moves.SPECTRAL_THIEF ], - [Species.GALAR_STUNFISK]: [ Moves.SPIKY_SHIELD, Moves.THOUSAND_ARROWS, Moves.STRENGTH_SAP, Moves.DOUBLE_IRON_BASH ], - [Species.HISUI_GROWLITHE]: [ Moves.WAVE_CRASH, Moves.HEAD_SMASH, Moves.VOLT_TACKLE, Moves.DRAGON_DANCE ], - [Species.HISUI_VOLTORB]: [ Moves.FROST_BREATH, Moves.NASTY_PLOT, Moves.APPLE_ACID, Moves.ELECTRO_DRIFT ], - [Species.HISUI_QWILFISH]: [ Moves.CEASELESS_EDGE, Moves.BANEFUL_BUNKER, Moves.RECOVER, Moves.FISHIOUS_REND ], - [Species.HISUI_SNEASEL]: [ Moves.DRAIN_PUNCH, Moves.KNOCK_OFF, Moves.PSYCHIC_FANGS, Moves.TRIPLE_AXEL ], - [Species.HISUI_ZORUA]: [ Moves.MOONBLAST, Moves.SECRET_SWORD, Moves.PARTING_SHOT, Moves.BLOOD_MOON ], + [SpeciesId.GROOKEY]: [ MoveId.ROCK_SLIDE, MoveId.PLAY_ROUGH, MoveId.GRASSY_GLIDE, MoveId.CLANGOROUS_SOUL ], + [SpeciesId.SCORBUNNY]: [ MoveId.EXTREME_SPEED, MoveId.HIGH_JUMP_KICK, MoveId.TRIPLE_AXEL, MoveId.BOLT_STRIKE ], + [SpeciesId.SOBBLE]: [ MoveId.AEROBLAST, MoveId.FROST_BREATH, MoveId.ENERGY_BALL, MoveId.NASTY_PLOT ], + [SpeciesId.SKWOVET]: [ MoveId.SUCKER_PUNCH, MoveId.SLACK_OFF, MoveId.COIL, MoveId.POPULATION_BOMB ], + [SpeciesId.ROOKIDEE]: [ MoveId.ROOST, MoveId.BODY_PRESS, MoveId.KINGS_SHIELD, MoveId.BEHEMOTH_BASH ], + [SpeciesId.BLIPBUG]: [ MoveId.HEAL_ORDER, MoveId.LUSTER_PURGE, MoveId.SLEEP_POWDER, MoveId.TAIL_GLOW ], + [SpeciesId.NICKIT]: [ MoveId.BADDY_BAD, MoveId.FLAMETHROWER, MoveId.SPARKLY_SWIRL, MoveId.MAKE_IT_RAIN ], + [SpeciesId.GOSSIFLEUR]: [ MoveId.PARTING_SHOT, MoveId.STRENGTH_SAP, MoveId.SAPPY_SEED, MoveId.SEED_FLARE ], + [SpeciesId.WOOLOO]: [ MoveId.NUZZLE, MoveId.MILK_DRINK, MoveId.BODY_PRESS, MoveId.MULTI_ATTACK ], + [SpeciesId.CHEWTLE]: [ MoveId.ICE_FANG, MoveId.PSYCHIC_FANGS, MoveId.SHELL_SMASH, MoveId.MIGHTY_CLEAVE ], + [SpeciesId.YAMPER]: [ MoveId.ICE_FANG, MoveId.SWORDS_DANCE, MoveId.THUNDER_FANG, MoveId.BOLT_STRIKE ], + [SpeciesId.ROLYCOLY]: [ MoveId.BITTER_BLADE, MoveId.BODY_PRESS, MoveId.BULK_UP, MoveId.DIAMOND_STORM ], + [SpeciesId.APPLIN]: [ MoveId.CORE_ENFORCER, MoveId.COMBAT_TORQUE, MoveId.SAPPY_SEED, MoveId.MATCHA_GOTCHA ], + [SpeciesId.SILICOBRA]: [ MoveId.SHORE_UP, MoveId.SHED_TAIL, MoveId.MOUNTAIN_GALE, MoveId.THOUSAND_ARROWS ], + [SpeciesId.CRAMORANT]: [ MoveId.APPLE_ACID, MoveId.SURF, MoveId.BOLT_BEAK, MoveId.OBLIVION_WING ], + [SpeciesId.ARROKUDA]: [ MoveId.SUPERCELL_SLAM, MoveId.TRIPLE_DIVE, MoveId.ICE_SPINNER, MoveId.SWORDS_DANCE ], + [SpeciesId.TOXEL]: [ MoveId.BUZZY_BUZZ, MoveId.BUG_BUZZ, MoveId.SPARKLING_ARIA, MoveId.TORCH_SONG ], + [SpeciesId.SIZZLIPEDE]: [ MoveId.BURNING_BULWARK, MoveId.ZING_ZAP, MoveId.FIRST_IMPRESSION, MoveId.BITTER_BLADE ], + [SpeciesId.CLOBBOPUS]: [ MoveId.STORM_THROW, MoveId.JET_PUNCH, MoveId.MACH_PUNCH, MoveId.SURGING_STRIKES ], + [SpeciesId.SINISTEA]: [ MoveId.SPLISHY_SPLASH, MoveId.MATCHA_GOTCHA, MoveId.DRAINING_KISS, MoveId.MOONGEIST_BEAM ], + [SpeciesId.HATENNA]: [ MoveId.RECOVER, MoveId.MOONBLAST, MoveId.BUZZY_BUZZ, MoveId.TORCH_SONG ], + [SpeciesId.IMPIDIMP]: [ MoveId.SLACK_OFF, MoveId.PARTING_SHOT, MoveId.OCTOLOCK, MoveId.WICKED_BLOW ], + [SpeciesId.MILCERY]: [ MoveId.MOONBLAST, MoveId.CHILLY_RECEPTION, MoveId.EARTH_POWER, MoveId.GEOMANCY ], + [SpeciesId.FALINKS]: [ MoveId.BATON_PASS, MoveId.POWER_TRIP, MoveId.COMBAT_TORQUE, MoveId.HEAL_ORDER ], + [SpeciesId.PINCURCHIN]: [ MoveId.TRICK_ROOM, MoveId.VOLT_SWITCH, MoveId.STRENGTH_SAP, MoveId.THUNDERCLAP ], + [SpeciesId.SNOM]: [ MoveId.FROST_BREATH, MoveId.HEAL_ORDER, MoveId.EARTH_POWER, MoveId.SPORE ], + [SpeciesId.STONJOURNER]: [ MoveId.BODY_PRESS, MoveId.HELPING_HAND, MoveId.ACCELEROCK, MoveId.DIAMOND_STORM ], + [SpeciesId.EISCUE]: [ MoveId.TRIPLE_AXEL, MoveId.AQUA_STEP, MoveId.AXE_KICK, MoveId.SHELL_SMASH ], + [SpeciesId.INDEEDEE]: [ MoveId.MATCHA_GOTCHA, MoveId.EXPANDING_FORCE, MoveId.MOONBLAST, MoveId.REVIVAL_BLESSING ], + [SpeciesId.MORPEKO]: [ MoveId.TRIPLE_AXEL, MoveId.OBSTRUCT, MoveId.SWORDS_DANCE, MoveId.COLLISION_COURSE ], + [SpeciesId.CUFANT]: [ MoveId.LIQUIDATION, MoveId.CURSE, MoveId.COMBAT_TORQUE, MoveId.GIGATON_HAMMER ], + [SpeciesId.DRACOZOLT]: [ MoveId.TRIPLE_AXEL, MoveId.GUNK_SHOT, MoveId.FIRE_LASH, MoveId.DRAGON_DANCE ], + [SpeciesId.ARCTOZOLT]: [ MoveId.MOUNTAIN_GALE, MoveId.AQUA_STEP, MoveId.HIGH_HORSEPOWER, MoveId.SHIFT_GEAR ], + [SpeciesId.DRACOVISH]: [ MoveId.TRIPLE_AXEL, MoveId.DRAGON_HAMMER, MoveId.THUNDER_FANG, MoveId.DRAGON_DANCE ], + [SpeciesId.ARCTOVISH]: [ MoveId.ICE_FANG, MoveId.THUNDER_FANG, MoveId.HIGH_HORSEPOWER, MoveId.SHIFT_GEAR ], + [SpeciesId.DURALUDON]: [ MoveId.CORE_ENFORCER, MoveId.BODY_PRESS, MoveId.RECOVER, MoveId.TACHYON_CUTTER ], + [SpeciesId.DREEPY]: [ MoveId.SHADOW_BONE, MoveId.POWER_UP_PUNCH, MoveId.FIRE_LASH, MoveId.DIRE_CLAW ], + [SpeciesId.ZACIAN]: [ MoveId.MAGICAL_TORQUE, MoveId.MIGHTY_CLEAVE, MoveId.BITTER_BLADE, MoveId.PRECIPICE_BLADES ], + [SpeciesId.ZAMAZENTA]: [ MoveId.BULK_UP, MoveId.BODY_PRESS, MoveId.SLACK_OFF, MoveId.DIAMOND_STORM ], + [SpeciesId.ETERNATUS]: [ MoveId.BODY_PRESS, MoveId.NASTY_PLOT, MoveId.MALIGNANT_CHAIN, MoveId.DRAGON_ENERGY ], + [SpeciesId.KUBFU]: [ MoveId.METEOR_MASH, MoveId.DRAIN_PUNCH, MoveId.JET_PUNCH, MoveId.DRAGON_DANCE ], + [SpeciesId.ZARUDE]: [ MoveId.SAPPY_SEED, MoveId.MIGHTY_CLEAVE, MoveId.WICKED_BLOW, MoveId.VICTORY_DANCE ], + [SpeciesId.REGIELEKI]: [ MoveId.NASTY_PLOT, MoveId.ICE_BEAM, MoveId.EARTH_POWER, MoveId.ELECTRO_DRIFT ], + [SpeciesId.REGIDRAGO]: [ MoveId.SHELL_SIDE_ARM, MoveId.FLAMETHROWER, MoveId.TAKE_HEART, MoveId.DRAGON_DARTS ], + [SpeciesId.GLASTRIER]: [ MoveId.SPEED_SWAP, MoveId.SLACK_OFF, MoveId.HIGH_HORSEPOWER, MoveId.GLACIAL_LANCE ], + [SpeciesId.SPECTRIER]: [ MoveId.EARTH_POWER, MoveId.MOONLIGHT, MoveId.AURA_SPHERE, MoveId.ASTRAL_BARRAGE ], + [SpeciesId.CALYREX]: [ MoveId.SAPPY_SEED, MoveId.RECOVER, MoveId.SECRET_SWORD, MoveId.PHOTON_GEYSER ], + [SpeciesId.ENAMORUS]: [ MoveId.AEROBLAST, MoveId.THOUSAND_ARROWS, MoveId.STORED_POWER, MoveId.FLEUR_CANNON ], + [SpeciesId.GALAR_MEOWTH]: [ MoveId.LIQUIDATION, MoveId.HORN_LEECH, MoveId.BULLET_PUNCH, MoveId.BEHEMOTH_BASH ], + [SpeciesId.GALAR_PONYTA]: [ MoveId.MAGICAL_TORQUE, MoveId.EXTREME_SPEED, MoveId.FLARE_BLITZ, MoveId.PHOTON_GEYSER ], + [SpeciesId.GALAR_SLOWPOKE]: [ MoveId.SHED_TAIL, MoveId.BADDY_BAD, MoveId.MOONBLAST, MoveId.PHOTON_GEYSER ], + [SpeciesId.GALAR_FARFETCHD]: [ MoveId.ROOST, MoveId.SACRED_SWORD, MoveId.KINGS_SHIELD, MoveId.BEHEMOTH_BLADE ], + [SpeciesId.GALAR_ARTICUNO]: [ MoveId.SECRET_SWORD, MoveId.NIGHT_DAZE, MoveId.ICE_BEAM, MoveId.OBLIVION_WING ], + [SpeciesId.GALAR_ZAPDOS]: [ MoveId.POISON_JAB, MoveId.FLOATY_FALL, MoveId.ROOST, MoveId.BOLT_BEAK ], + [SpeciesId.GALAR_MOLTRES]: [ MoveId.ROOST, MoveId.SLUDGE_BOMB, MoveId.FLAMETHROWER, MoveId.OBLIVION_WING ], + [SpeciesId.GALAR_CORSOLA]: [ MoveId.SHELL_SMASH, MoveId.AURA_SPHERE, MoveId.INFERNAL_PARADE, MoveId.ASTRAL_BARRAGE ], + [SpeciesId.GALAR_ZIGZAGOON]: [ MoveId.CEASELESS_EDGE, MoveId.FACADE, MoveId.PARTING_SHOT, MoveId.EXTREME_SPEED ], + [SpeciesId.GALAR_DARUMAKA]: [ MoveId.ICE_SPINNER, MoveId.ZING_ZAP, MoveId.DRAIN_PUNCH, MoveId.PYRO_BALL ], + [SpeciesId.GALAR_YAMASK]: [ MoveId.STRENGTH_SAP, MoveId.DIRE_CLAW, MoveId.THOUSAND_WAVES, MoveId.SPECTRAL_THIEF ], + [SpeciesId.GALAR_STUNFISK]: [ MoveId.SPIKY_SHIELD, MoveId.THOUSAND_ARROWS, MoveId.STRENGTH_SAP, MoveId.DOUBLE_IRON_BASH ], + [SpeciesId.HISUI_GROWLITHE]: [ MoveId.WAVE_CRASH, MoveId.HEAD_SMASH, MoveId.VOLT_TACKLE, MoveId.DRAGON_DANCE ], + [SpeciesId.HISUI_VOLTORB]: [ MoveId.FROST_BREATH, MoveId.NASTY_PLOT, MoveId.APPLE_ACID, MoveId.ELECTRO_DRIFT ], + [SpeciesId.HISUI_QWILFISH]: [ MoveId.CEASELESS_EDGE, MoveId.BANEFUL_BUNKER, MoveId.RECOVER, MoveId.FISHIOUS_REND ], + [SpeciesId.HISUI_SNEASEL]: [ MoveId.DRAIN_PUNCH, MoveId.KNOCK_OFF, MoveId.PSYCHIC_FANGS, MoveId.TRIPLE_AXEL ], + [SpeciesId.HISUI_ZORUA]: [ MoveId.MOONBLAST, MoveId.SECRET_SWORD, MoveId.PARTING_SHOT, MoveId.BLOOD_MOON ], - [Species.SPRIGATITO]: [ Moves.FIRE_LASH, Moves.TRIPLE_AXEL, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ], - [Species.FUECOCO]: [ Moves.ALLURING_VOICE, Moves.SLACK_OFF, Moves.OVERDRIVE, Moves.MOONGEIST_BEAM ], - [Species.QUAXLY]: [ Moves.DRAGON_DANCE, Moves.TRIPLE_AXEL, Moves.POWER_TRIP, Moves.THUNDEROUS_KICK ], - [Species.LECHONK]: [ Moves.MILK_DRINK, Moves.PSYSHIELD_BASH, Moves.BLAZING_TORQUE, Moves.FILLET_AWAY ], - [Species.TAROUNTULA]: [ Moves.STONE_AXE, Moves.LEECH_LIFE, Moves.THIEF, Moves.SPORE ], - [Species.NYMBLE]: [ Moves.KNOCK_OFF, Moves.FELL_STINGER, Moves.ATTACK_ORDER, Moves.WICKED_BLOW ], - [Species.PAWMI]: [ Moves.DRAIN_PUNCH, Moves.METEOR_MASH, Moves.JET_PUNCH, Moves.PLASMA_FISTS ], - [Species.TANDEMAUS]: [ Moves.BATON_PASS, Moves.COVET, Moves.SIZZLY_SLIDE, Moves.REVIVAL_BLESSING ], - [Species.FIDOUGH]: [ Moves.SOFT_BOILED, Moves.HIGH_HORSEPOWER, Moves.SIZZLY_SLIDE, Moves.TIDY_UP ], - [Species.SMOLIV]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.CALM_MIND, Moves.BOOMBURST ], - [Species.SQUAWKABILLY]: [ Moves.PARTING_SHOT, Moves.EARTHQUAKE, Moves.FLARE_BLITZ, Moves.EXTREME_SPEED ], - [Species.NACLI]: [ Moves.BODY_PRESS, Moves.TOXIC, Moves.CURSE, Moves.DIAMOND_STORM ], - [Species.CHARCADET]: [ Moves.SACRED_SWORD, Moves.PHOTON_GEYSER, Moves.MOONBLAST, Moves.SPECTRAL_THIEF ], - [Species.TADBULB]: [ Moves.PARABOLIC_CHARGE, Moves.SCALD, Moves.EARTH_POWER, Moves.ELECTRO_SHOT ], - [Species.WATTREL]: [ Moves.NASTY_PLOT, Moves.SPLISHY_SPLASH, Moves.SANDSEAR_STORM, Moves.WILDBOLT_STORM ], - [Species.MASCHIFF]: [ Moves.PARTING_SHOT, Moves.COMBAT_TORQUE, Moves.PSYCHIC_FANGS, Moves.NO_RETREAT ], - [Species.SHROODLE]: [ Moves.GASTRO_ACID, Moves.PARTING_SHOT, Moves.TOXIC, Moves.SKETCH ], - [Species.BRAMBLIN]: [ Moves.TAILWIND, Moves.STRENGTH_SAP, Moves.FLOWER_TRICK, Moves.LAST_RESPECTS ], - [Species.TOEDSCOOL]: [ Moves.STRENGTH_SAP, Moves.TOPSY_TURVY, Moves.SAPPY_SEED, Moves.TAIL_GLOW ], - [Species.KLAWF]: [ Moves.CRABHAMMER, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE, Moves.SHELL_SMASH ], - [Species.CAPSAKID]: [ Moves.STRENGTH_SAP, Moves.APPLE_ACID, Moves.FROST_BREATH, Moves.TORCH_SONG ], - [Species.RELLOR]: [ Moves.HEAL_BLOCK, Moves.RECOVER, Moves.MAGIC_POWDER, Moves.LUMINA_CRASH ], - [Species.FLITTLE]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.ROOST, Moves.FIERY_DANCE ], - [Species.TINKATINK]: [ Moves.MAGICAL_TORQUE, Moves.PYRO_BALL, Moves.IVY_CUDGEL, Moves.SHIFT_GEAR ], - [Species.WIGLETT]: [ Moves.SHELL_SMASH, Moves.ICICLE_CRASH, Moves.SEED_BOMB, Moves.SURGING_STRIKES ], - [Species.BOMBIRDIER]: [ Moves.FLOATY_FALL, Moves.SWORDS_DANCE, Moves.SUCKER_PUNCH, Moves.MIGHTY_CLEAVE ], - [Species.FINIZEN]: [ Moves.TRIPLE_AXEL, Moves.DRAIN_PUNCH, Moves.HEADLONG_RUSH, Moves.SURGING_STRIKES ], - [Species.VAROOM]: [ Moves.COMBAT_TORQUE, Moves.U_TURN, Moves.BLAZING_TORQUE, Moves.NOXIOUS_TORQUE ], - [Species.CYCLIZAR]: [ Moves.PARTING_SHOT, Moves.FIRE_LASH, Moves.MAGICAL_TORQUE, Moves.GLAIVE_RUSH ], - [Species.ORTHWORM]: [ Moves.SIZZLY_SLIDE, Moves.COIL, Moves.BODY_PRESS, Moves.SHORE_UP ], - [Species.GLIMMET]: [ Moves.CALM_MIND, Moves.GIGA_DRAIN, Moves.FIERY_DANCE, Moves.MALIGNANT_CHAIN ], - [Species.GREAVARD]: [ Moves.SHADOW_BONE, Moves.SIZZLY_SLIDE, Moves.SHORE_UP, Moves.COLLISION_COURSE ], - [Species.FLAMIGO]: [ Moves.THUNDEROUS_KICK, Moves.TRIPLE_AXEL, Moves.FLOATY_FALL, Moves.VICTORY_DANCE ], - [Species.CETODDLE]: [ Moves.ZING_ZAP, Moves.HIGH_HORSEPOWER, Moves.SLACK_OFF, Moves.DRAGON_DANCE ], - [Species.VELUZA]: [ Moves.PSYBLADE, Moves.LEAF_BLADE, Moves.CEASELESS_EDGE, Moves.BITTER_BLADE ], - [Species.DONDOZO]: [ Moves.SOFT_BOILED, Moves.SIZZLY_SLIDE, Moves.BREAKING_SWIPE, Moves.SALT_CURE ], - [Species.TATSUGIRI]: [ Moves.SLUDGE_BOMB, Moves.FILLET_AWAY, Moves.CORE_ENFORCER, Moves.STEAM_ERUPTION ], - [Species.GREAT_TUSK]: [ Moves.STONE_AXE, Moves.MORNING_SUN, Moves.COLLISION_COURSE, Moves.SHIFT_GEAR ], - [Species.SCREAM_TAIL]: [ Moves.TORCH_SONG, Moves.GLITZY_GLOW, Moves.MOONLIGHT, Moves.SPARKLY_SWIRL ], - [Species.BRUTE_BONNET]: [ Moves.SAPPY_SEED, Moves.STRENGTH_SAP, Moves.EARTHQUAKE, Moves.WICKED_BLOW ], - [Species.FLUTTER_MANE]: [ Moves.MOONLIGHT, Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.MOONGEIST_BEAM ], - [Species.SLITHER_WING]: [ Moves.MIGHTY_CLEAVE, Moves.THUNDEROUS_KICK, Moves.FIRE_LASH, Moves.VICTORY_DANCE ], - [Species.SANDY_SHOCKS]: [ Moves.MORNING_SUN, Moves.ICE_BEAM, Moves.NASTY_PLOT, Moves.THUNDERCLAP ], - [Species.IRON_TREADS]: [ Moves.FUSION_BOLT, Moves.SHIFT_GEAR, Moves.SHORE_UP, Moves.SUNSTEEL_STRIKE ], - [Species.IRON_BUNDLE]: [ Moves.EARTH_POWER, Moves.SPLISHY_SPLASH, Moves.VOLT_SWITCH, Moves.NASTY_PLOT ], - [Species.IRON_HANDS]: [ Moves.DRAIN_PUNCH, Moves.BULK_UP, Moves.PLASMA_FISTS, Moves.ICE_HAMMER ], - [Species.IRON_JUGULIS]: [ Moves.FIERY_WRATH, Moves.ROOST, Moves.NASTY_PLOT, Moves.OBLIVION_WING ], - [Species.IRON_MOTH]: [ Moves.EARTH_POWER, Moves.SEARING_SHOT, Moves.MALIGNANT_CHAIN, Moves.QUIVER_DANCE ], - [Species.IRON_THORNS]: [ Moves.DIAMOND_STORM, Moves.SHORE_UP, Moves.SHIFT_GEAR, Moves.PLASMA_FISTS ], - [Species.FRIGIBAX]: [ Moves.BEHEMOTH_BLADE, Moves.DRAGON_DANCE, Moves.MOUNTAIN_GALE, Moves.PRECIPICE_BLADES ], - [Species.GIMMIGHOUL]: [ Moves.HAPPY_HOUR, Moves.AURA_SPHERE, Moves.SURF, Moves.ASTRAL_BARRAGE ], - [Species.WO_CHIEN]: [ Moves.SPORE, Moves.FIERY_WRATH, Moves.SAPPY_SEED, Moves.STRENGTH_SAP ], - [Species.CHIEN_PAO]: [ Moves.KNOCK_OFF, Moves.PARTING_SHOT, Moves.TRIPLE_AXEL, Moves.BITTER_BLADE ], - [Species.TING_LU]: [ Moves.SHORE_UP, Moves.CEASELESS_EDGE, Moves.SAPPY_SEED, Moves.PRECIPICE_BLADES ], - [Species.CHI_YU]: [ Moves.FIERY_WRATH, Moves.HYDRO_STEAM, Moves.MORNING_SUN, Moves.BLUE_FLARE ], - [Species.ROARING_MOON]: [ Moves.FIRE_LASH, Moves.DRAGON_HAMMER, Moves.METEOR_MASH, Moves.DRAGON_ASCENT ], - [Species.IRON_VALIANT]: [ Moves.PLASMA_FISTS, Moves.NO_RETREAT, Moves.SECRET_SWORD, Moves.MAGICAL_TORQUE ], - [Species.KORAIDON]: [ Moves.SUNSTEEL_STRIKE, Moves.SOLAR_BLADE, Moves.DRAGON_DARTS, Moves.BITTER_BLADE ], - [Species.MIRAIDON]: [ Moves.FROST_BREATH, Moves.WILDBOLT_STORM, Moves.SPACIAL_REND, Moves.RISING_VOLTAGE ], - [Species.WALKING_WAKE]: [ Moves.BOUNCY_BUBBLE, Moves.FUSION_FLARE, Moves.SLUDGE_WAVE, Moves.CORE_ENFORCER ], - [Species.IRON_LEAVES]: [ Moves.BITTER_BLADE, Moves.U_TURN, Moves.MIGHTY_CLEAVE, Moves.VICTORY_DANCE ], - [Species.POLTCHAGEIST]: [ Moves.PARABOLIC_CHARGE, Moves.BOUNCY_BUBBLE, Moves.LEECH_SEED, Moves.SPARKLY_SWIRL ], - [Species.OKIDOGI]: [ Moves.COMBAT_TORQUE, Moves.TIDY_UP, Moves.DIRE_CLAW, Moves.WICKED_BLOW ], - [Species.MUNKIDORI]: [ Moves.TWIN_BEAM, Moves.HEAT_WAVE, Moves.EARTH_POWER, Moves.MALIGNANT_CHAIN ], - [Species.FEZANDIPITI]: [ Moves.BARB_BARRAGE, Moves.BONEMERANG, Moves.TRIPLE_AXEL, Moves.VICTORY_DANCE ], - [Species.OGERPON]: [ Moves.SLEEP_POWDER, Moves.BONEMERANG, Moves.TRIPLE_AXEL, Moves.FLOWER_TRICK ], - [Species.GOUGING_FIRE]: [ Moves.EXTREME_SPEED, Moves.BULK_UP, Moves.SACRED_FIRE, Moves.GLAIVE_RUSH ], - [Species.RAGING_BOLT]: [ Moves.NASTY_PLOT, Moves.FLAMETHROWER, Moves.MORNING_SUN, Moves.ELECTRO_DRIFT ], - [Species.IRON_BOULDER]: [ Moves.PSYBLADE, Moves.KOWTOW_CLEAVE, Moves.STONE_AXE, Moves.BITTER_BLADE ], - [Species.IRON_CROWN]: [ Moves.NASTY_PLOT, Moves.SECRET_SWORD, Moves.PSYSTRIKE, Moves.ELECTRO_DRIFT ], - [Species.TERAPAGOS]: [ Moves.MOONBLAST, Moves.NASTY_PLOT, Moves.ASTRAL_BARRAGE, Moves.RECOVER ], - [Species.PECHARUNT]: [ Moves.TAKE_HEART, Moves.BODY_PRESS, Moves.SAPPY_SEED, Moves.ASTRAL_BARRAGE ], - [Species.PALDEA_TAUROS]: [ Moves.NO_RETREAT, Moves.BLAZING_TORQUE, Moves.AQUA_STEP, Moves.THUNDEROUS_KICK ], - [Species.PALDEA_WOOPER]: [ Moves.STONE_AXE, Moves.RECOVER, Moves.BANEFUL_BUNKER, Moves.BARB_BARRAGE ], - [Species.BLOODMOON_URSALUNA]: [ Moves.NASTY_PLOT, Moves.ROCK_POLISH, Moves.SANDSEAR_STORM, Moves.BOOMBURST ] + [SpeciesId.SPRIGATITO]: [ MoveId.FIRE_LASH, MoveId.TRIPLE_AXEL, MoveId.SUCKER_PUNCH, MoveId.WICKED_BLOW ], + [SpeciesId.FUECOCO]: [ MoveId.ALLURING_VOICE, MoveId.SLACK_OFF, MoveId.OVERDRIVE, MoveId.MOONGEIST_BEAM ], + [SpeciesId.QUAXLY]: [ MoveId.DRAGON_DANCE, MoveId.TRIPLE_AXEL, MoveId.POWER_TRIP, MoveId.THUNDEROUS_KICK ], + [SpeciesId.LECHONK]: [ MoveId.MILK_DRINK, MoveId.PSYSHIELD_BASH, MoveId.BLAZING_TORQUE, MoveId.FILLET_AWAY ], + [SpeciesId.TAROUNTULA]: [ MoveId.STONE_AXE, MoveId.LEECH_LIFE, MoveId.THIEF, MoveId.SPORE ], + [SpeciesId.NYMBLE]: [ MoveId.KNOCK_OFF, MoveId.FELL_STINGER, MoveId.ATTACK_ORDER, MoveId.WICKED_BLOW ], + [SpeciesId.PAWMI]: [ MoveId.DRAIN_PUNCH, MoveId.METEOR_MASH, MoveId.JET_PUNCH, MoveId.PLASMA_FISTS ], + [SpeciesId.TANDEMAUS]: [ MoveId.BATON_PASS, MoveId.COVET, MoveId.SIZZLY_SLIDE, MoveId.REVIVAL_BLESSING ], + [SpeciesId.FIDOUGH]: [ MoveId.SOFT_BOILED, MoveId.HIGH_HORSEPOWER, MoveId.SIZZLY_SLIDE, MoveId.TIDY_UP ], + [SpeciesId.SMOLIV]: [ MoveId.STRENGTH_SAP, MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.BOOMBURST ], + [SpeciesId.SQUAWKABILLY]: [ MoveId.PARTING_SHOT, MoveId.EARTHQUAKE, MoveId.FLARE_BLITZ, MoveId.EXTREME_SPEED ], + [SpeciesId.NACLI]: [ MoveId.BODY_PRESS, MoveId.TOXIC, MoveId.CURSE, MoveId.DIAMOND_STORM ], + [SpeciesId.CHARCADET]: [ MoveId.SACRED_SWORD, MoveId.PHOTON_GEYSER, MoveId.MOONBLAST, MoveId.SPECTRAL_THIEF ], + [SpeciesId.TADBULB]: [ MoveId.PARABOLIC_CHARGE, MoveId.SCALD, MoveId.EARTH_POWER, MoveId.ELECTRO_SHOT ], + [SpeciesId.WATTREL]: [ MoveId.NASTY_PLOT, MoveId.SPLISHY_SPLASH, MoveId.SANDSEAR_STORM, MoveId.WILDBOLT_STORM ], + [SpeciesId.MASCHIFF]: [ MoveId.PARTING_SHOT, MoveId.COMBAT_TORQUE, MoveId.PSYCHIC_FANGS, MoveId.NO_RETREAT ], + [SpeciesId.SHROODLE]: [ MoveId.GASTRO_ACID, MoveId.PARTING_SHOT, MoveId.TOXIC, MoveId.SKETCH ], + [SpeciesId.BRAMBLIN]: [ MoveId.TAILWIND, MoveId.STRENGTH_SAP, MoveId.FLOWER_TRICK, MoveId.LAST_RESPECTS ], + [SpeciesId.TOEDSCOOL]: [ MoveId.STRENGTH_SAP, MoveId.TOPSY_TURVY, MoveId.SAPPY_SEED, MoveId.TAIL_GLOW ], + [SpeciesId.KLAWF]: [ MoveId.CRABHAMMER, MoveId.SHORE_UP, MoveId.MIGHTY_CLEAVE, MoveId.SHELL_SMASH ], + [SpeciesId.CAPSAKID]: [ MoveId.STRENGTH_SAP, MoveId.APPLE_ACID, MoveId.FROST_BREATH, MoveId.TORCH_SONG ], + [SpeciesId.RELLOR]: [ MoveId.HEAL_BLOCK, MoveId.RECOVER, MoveId.MAGIC_POWDER, MoveId.LUMINA_CRASH ], + [SpeciesId.FLITTLE]: [ MoveId.COSMIC_POWER, MoveId.AURA_SPHERE, MoveId.ROOST, MoveId.FIERY_DANCE ], + [SpeciesId.TINKATINK]: [ MoveId.MAGICAL_TORQUE, MoveId.PYRO_BALL, MoveId.IVY_CUDGEL, MoveId.SHIFT_GEAR ], + [SpeciesId.WIGLETT]: [ MoveId.SHELL_SMASH, MoveId.ICICLE_CRASH, MoveId.SEED_BOMB, MoveId.SURGING_STRIKES ], + [SpeciesId.BOMBIRDIER]: [ MoveId.FLOATY_FALL, MoveId.SWORDS_DANCE, MoveId.SUCKER_PUNCH, MoveId.MIGHTY_CLEAVE ], + [SpeciesId.FINIZEN]: [ MoveId.TRIPLE_AXEL, MoveId.DRAIN_PUNCH, MoveId.HEADLONG_RUSH, MoveId.SURGING_STRIKES ], + [SpeciesId.VAROOM]: [ MoveId.COMBAT_TORQUE, MoveId.U_TURN, MoveId.BLAZING_TORQUE, MoveId.NOXIOUS_TORQUE ], + [SpeciesId.CYCLIZAR]: [ MoveId.PARTING_SHOT, MoveId.FIRE_LASH, MoveId.MAGICAL_TORQUE, MoveId.GLAIVE_RUSH ], + [SpeciesId.ORTHWORM]: [ MoveId.SIZZLY_SLIDE, MoveId.COIL, MoveId.BODY_PRESS, MoveId.SHORE_UP ], + [SpeciesId.GLIMMET]: [ MoveId.CALM_MIND, MoveId.GIGA_DRAIN, MoveId.FIERY_DANCE, MoveId.MALIGNANT_CHAIN ], + [SpeciesId.GREAVARD]: [ MoveId.SHADOW_BONE, MoveId.SIZZLY_SLIDE, MoveId.SHORE_UP, MoveId.COLLISION_COURSE ], + [SpeciesId.FLAMIGO]: [ MoveId.THUNDEROUS_KICK, MoveId.TRIPLE_AXEL, MoveId.FLOATY_FALL, MoveId.VICTORY_DANCE ], + [SpeciesId.CETODDLE]: [ MoveId.ZING_ZAP, MoveId.HIGH_HORSEPOWER, MoveId.SLACK_OFF, MoveId.DRAGON_DANCE ], + [SpeciesId.VELUZA]: [ MoveId.PSYBLADE, MoveId.LEAF_BLADE, MoveId.CEASELESS_EDGE, MoveId.BITTER_BLADE ], + [SpeciesId.DONDOZO]: [ MoveId.SOFT_BOILED, MoveId.SIZZLY_SLIDE, MoveId.BREAKING_SWIPE, MoveId.SALT_CURE ], + [SpeciesId.TATSUGIRI]: [ MoveId.SLUDGE_BOMB, MoveId.FILLET_AWAY, MoveId.CORE_ENFORCER, MoveId.STEAM_ERUPTION ], + [SpeciesId.GREAT_TUSK]: [ MoveId.STONE_AXE, MoveId.MORNING_SUN, MoveId.COLLISION_COURSE, MoveId.SHIFT_GEAR ], + [SpeciesId.SCREAM_TAIL]: [ MoveId.TORCH_SONG, MoveId.GLITZY_GLOW, MoveId.MOONLIGHT, MoveId.SPARKLY_SWIRL ], + [SpeciesId.BRUTE_BONNET]: [ MoveId.SAPPY_SEED, MoveId.STRENGTH_SAP, MoveId.EARTHQUAKE, MoveId.WICKED_BLOW ], + [SpeciesId.FLUTTER_MANE]: [ MoveId.MOONLIGHT, MoveId.NASTY_PLOT, MoveId.EARTH_POWER, MoveId.MOONGEIST_BEAM ], + [SpeciesId.SLITHER_WING]: [ MoveId.MIGHTY_CLEAVE, MoveId.THUNDEROUS_KICK, MoveId.FIRE_LASH, MoveId.VICTORY_DANCE ], + [SpeciesId.SANDY_SHOCKS]: [ MoveId.MORNING_SUN, MoveId.ICE_BEAM, MoveId.NASTY_PLOT, MoveId.THUNDERCLAP ], + [SpeciesId.IRON_TREADS]: [ MoveId.FUSION_BOLT, MoveId.SHIFT_GEAR, MoveId.SHORE_UP, MoveId.SUNSTEEL_STRIKE ], + [SpeciesId.IRON_BUNDLE]: [ MoveId.EARTH_POWER, MoveId.SPLISHY_SPLASH, MoveId.VOLT_SWITCH, MoveId.NASTY_PLOT ], + [SpeciesId.IRON_HANDS]: [ MoveId.DRAIN_PUNCH, MoveId.BULK_UP, MoveId.PLASMA_FISTS, MoveId.ICE_HAMMER ], + [SpeciesId.IRON_JUGULIS]: [ MoveId.FIERY_WRATH, MoveId.ROOST, MoveId.NASTY_PLOT, MoveId.OBLIVION_WING ], + [SpeciesId.IRON_MOTH]: [ MoveId.EARTH_POWER, MoveId.SEARING_SHOT, MoveId.MALIGNANT_CHAIN, MoveId.QUIVER_DANCE ], + [SpeciesId.IRON_THORNS]: [ MoveId.DIAMOND_STORM, MoveId.SHORE_UP, MoveId.SHIFT_GEAR, MoveId.PLASMA_FISTS ], + [SpeciesId.FRIGIBAX]: [ MoveId.BEHEMOTH_BLADE, MoveId.DRAGON_DANCE, MoveId.MOUNTAIN_GALE, MoveId.PRECIPICE_BLADES ], + [SpeciesId.GIMMIGHOUL]: [ MoveId.HAPPY_HOUR, MoveId.AURA_SPHERE, MoveId.SURF, MoveId.ASTRAL_BARRAGE ], + [SpeciesId.WO_CHIEN]: [ MoveId.SPORE, MoveId.FIERY_WRATH, MoveId.SAPPY_SEED, MoveId.STRENGTH_SAP ], + [SpeciesId.CHIEN_PAO]: [ MoveId.KNOCK_OFF, MoveId.PARTING_SHOT, MoveId.TRIPLE_AXEL, MoveId.BITTER_BLADE ], + [SpeciesId.TING_LU]: [ MoveId.SHORE_UP, MoveId.CEASELESS_EDGE, MoveId.SAPPY_SEED, MoveId.PRECIPICE_BLADES ], + [SpeciesId.CHI_YU]: [ MoveId.FIERY_WRATH, MoveId.HYDRO_STEAM, MoveId.MORNING_SUN, MoveId.BLUE_FLARE ], + [SpeciesId.ROARING_MOON]: [ MoveId.FIRE_LASH, MoveId.DRAGON_HAMMER, MoveId.METEOR_MASH, MoveId.DRAGON_ASCENT ], + [SpeciesId.IRON_VALIANT]: [ MoveId.PLASMA_FISTS, MoveId.NO_RETREAT, MoveId.SECRET_SWORD, MoveId.MAGICAL_TORQUE ], + [SpeciesId.KORAIDON]: [ MoveId.SUNSTEEL_STRIKE, MoveId.SOLAR_BLADE, MoveId.DRAGON_DARTS, MoveId.BITTER_BLADE ], + [SpeciesId.MIRAIDON]: [ MoveId.FROST_BREATH, MoveId.WILDBOLT_STORM, MoveId.SPACIAL_REND, MoveId.RISING_VOLTAGE ], + [SpeciesId.WALKING_WAKE]: [ MoveId.BOUNCY_BUBBLE, MoveId.FUSION_FLARE, MoveId.SLUDGE_WAVE, MoveId.CORE_ENFORCER ], + [SpeciesId.IRON_LEAVES]: [ MoveId.BITTER_BLADE, MoveId.U_TURN, MoveId.MIGHTY_CLEAVE, MoveId.VICTORY_DANCE ], + [SpeciesId.POLTCHAGEIST]: [ MoveId.PARABOLIC_CHARGE, MoveId.BOUNCY_BUBBLE, MoveId.LEECH_SEED, MoveId.SPARKLY_SWIRL ], + [SpeciesId.OKIDOGI]: [ MoveId.COMBAT_TORQUE, MoveId.TIDY_UP, MoveId.DIRE_CLAW, MoveId.WICKED_BLOW ], + [SpeciesId.MUNKIDORI]: [ MoveId.TWIN_BEAM, MoveId.HEAT_WAVE, MoveId.EARTH_POWER, MoveId.MALIGNANT_CHAIN ], + [SpeciesId.FEZANDIPITI]: [ MoveId.BARB_BARRAGE, MoveId.BONEMERANG, MoveId.TRIPLE_AXEL, MoveId.VICTORY_DANCE ], + [SpeciesId.OGERPON]: [ MoveId.SLEEP_POWDER, MoveId.BONEMERANG, MoveId.TRIPLE_AXEL, MoveId.FLOWER_TRICK ], + [SpeciesId.GOUGING_FIRE]: [ MoveId.EXTREME_SPEED, MoveId.BULK_UP, MoveId.SACRED_FIRE, MoveId.GLAIVE_RUSH ], + [SpeciesId.RAGING_BOLT]: [ MoveId.NASTY_PLOT, MoveId.FLAMETHROWER, MoveId.MORNING_SUN, MoveId.ELECTRO_DRIFT ], + [SpeciesId.IRON_BOULDER]: [ MoveId.PSYBLADE, MoveId.KOWTOW_CLEAVE, MoveId.STONE_AXE, MoveId.BITTER_BLADE ], + [SpeciesId.IRON_CROWN]: [ MoveId.NASTY_PLOT, MoveId.SECRET_SWORD, MoveId.PSYSTRIKE, MoveId.ELECTRO_DRIFT ], + [SpeciesId.TERAPAGOS]: [ MoveId.MOONBLAST, MoveId.NASTY_PLOT, MoveId.ASTRAL_BARRAGE, MoveId.RECOVER ], + [SpeciesId.PECHARUNT]: [ MoveId.TAKE_HEART, MoveId.BODY_PRESS, MoveId.SAPPY_SEED, MoveId.ASTRAL_BARRAGE ], + [SpeciesId.PALDEA_TAUROS]: [ MoveId.NO_RETREAT, MoveId.BLAZING_TORQUE, MoveId.AQUA_STEP, MoveId.THUNDEROUS_KICK ], + [SpeciesId.PALDEA_WOOPER]: [ MoveId.STONE_AXE, MoveId.RECOVER, MoveId.BANEFUL_BUNKER, MoveId.BARB_BARRAGE ], + [SpeciesId.BLOODMOON_URSALUNA]: [ MoveId.NASTY_PLOT, MoveId.ROCK_POLISH, MoveId.SANDSEAR_STORM, MoveId.BOOMBURST ] }; function parseEggMoves(content: string): void { let output = ""; - const speciesNames = getEnumKeys(Species); - const speciesValues = getEnumValues(Species); + const speciesNames = getEnumKeys(SpeciesId); + const speciesValues = getEnumValues(SpeciesId); const lines = content.split(/\n/g); for (const line of lines) { @@ -597,20 +597,20 @@ function parseEggMoves(content: string): void { const enumSpeciesName = cols[0].toUpperCase().replace(/[ -]/g, "_"); const species = speciesValues[speciesNames.findIndex(s => s === enumSpeciesName)]; - const eggMoves: Moves[] = []; + const eggMoves: MoveId[] = []; for (let m = 0; m < 4; m++) { const moveName = cols[m + 1].trim(); const moveIndex = moveName !== "N/A" ? moveNames.findIndex(mn => mn === moveName.toLowerCase()) : -1; - eggMoves.push(moveIndex > -1 ? moveIndex as Moves : Moves.NONE); + eggMoves.push(moveIndex > -1 ? moveIndex as MoveId : MoveId.NONE); if (moveIndex === -1) { console.warn(moveName, "could not be parsed"); } } - if (eggMoves.find(m => m !== Moves.NONE)) { - output += `[Species.${Species[species]}]: [ ${eggMoves.map(m => `Moves.${Moves[m]}`).join(", ")} ],\n`; + if (eggMoves.find(m => m !== MoveId.NONE)) { + output += `[SpeciesId.${SpeciesId[species]}]: [ ${eggMoves.map(m => `MoveId.${MoveId[m]}`).join(", ")} ],\n`; } } diff --git a/src/data/balance/passives.ts b/src/data/balance/passives.ts index 73310cc2116..80790b44735 100644 --- a/src/data/balance/passives.ts +++ b/src/data/balance/passives.ts @@ -1,8 +1,8 @@ -import { Abilities } from "#app/enums/abilities"; -import { Species } from "#app/enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { SpeciesId } from "#enums/species-id"; export interface PassiveAbilities { - [key: number]: Abilities + [key: number]: AbilityId } interface StarterPassiveAbilities { @@ -10,1094 +10,1094 @@ interface StarterPassiveAbilities { } export const starterPassiveAbilities: StarterPassiveAbilities = { - [Species.BULBASAUR]: { 0: Abilities.GRASSY_SURGE }, - [Species.IVYSAUR]: { 0: Abilities.GRASSY_SURGE }, - [Species.VENUSAUR]: { 0: Abilities.GRASSY_SURGE, 1: Abilities.SEED_SOWER, 2: Abilities.FLOWER_VEIL }, - [Species.CHARMANDER]: { 0: Abilities.SHEER_FORCE }, - [Species.CHARMELEON]: { 0: Abilities.BEAST_BOOST }, - [Species.CHARIZARD]: { 0: Abilities.BEAST_BOOST, 1: Abilities.LEVITATE, 2: Abilities.TURBOBLAZE, 3: Abilities.UNNERVE }, - [Species.SQUIRTLE]: { 0: Abilities.DAUNTLESS_SHIELD }, - [Species.WARTORTLE]: { 0: Abilities.DAUNTLESS_SHIELD }, - [Species.BLASTOISE]: { 0: Abilities.DAUNTLESS_SHIELD, 1: Abilities.BULLETPROOF, 2: Abilities.BULLETPROOF }, - [Species.CATERPIE]: { 0: Abilities.GLUTTONY }, - [Species.METAPOD]: { 0: Abilities.STURDY }, - [Species.BUTTERFREE]: { 0: Abilities.MAGICIAN, 1: Abilities.MAGICIAN }, - [Species.WEEDLE]: { 0: Abilities.POISON_TOUCH }, - [Species.KAKUNA]: { 0: Abilities.STURDY }, - [Species.BEEDRILL]: { 0: Abilities.ADAPTABILITY, 1: Abilities.TINTED_LENS }, - [Species.PIDGEY]: { 0: Abilities.SHEER_FORCE }, - [Species.PIDGEOTTO]: { 0: Abilities.SHEER_FORCE }, - [Species.PIDGEOT]: { 0: Abilities.SHEER_FORCE, 1: Abilities.SHEER_FORCE }, - [Species.RATTATA]: { 0: Abilities.STRONG_JAW }, - [Species.RATICATE]: { 0: Abilities.STRONG_JAW }, - [Species.SPEAROW]: { 0: Abilities.MOXIE }, - [Species.FEAROW]: { 0: Abilities.MOXIE }, - [Species.EKANS]: { 0: Abilities.REGENERATOR }, - [Species.ARBOK]: { 0: Abilities.REGENERATOR }, - [Species.SANDSHREW]: { 0: Abilities.TOUGH_CLAWS }, - [Species.SANDSLASH]: { 0: Abilities.TOUGH_CLAWS }, - [Species.NIDORAN_F]: { 0: Abilities.FLARE_BOOST }, - [Species.NIDORINA]: { 0: Abilities.FLARE_BOOST }, - [Species.NIDOQUEEN]: { 0: Abilities.FLARE_BOOST }, - [Species.NIDORAN_M]: { 0: Abilities.GUTS }, - [Species.NIDORINO]: { 0: Abilities.GUTS }, - [Species.NIDOKING]: { 0: Abilities.GUTS }, - [Species.VULPIX]: { 0: Abilities.FUR_COAT }, - [Species.NINETALES]: { 0: Abilities.FUR_COAT }, - [Species.ZUBAT]: { 0: Abilities.INTIMIDATE }, - [Species.GOLBAT]: { 0: Abilities.INTIMIDATE }, - [Species.CROBAT]: { 0: Abilities.INTIMIDATE }, - [Species.ODDISH]: { 0: Abilities.TRIAGE }, - [Species.GLOOM]: { 0: Abilities.TRIAGE }, - [Species.VILEPLUME]: { 0: Abilities.TRIAGE }, - [Species.BELLOSSOM]: { 0: Abilities.TRIAGE }, - [Species.PARAS]: { 0: Abilities.TRIAGE }, - [Species.PARASECT]: { 0: Abilities.TRIAGE }, - [Species.VENONAT]: { 0: Abilities.FLUFFY }, - [Species.VENOMOTH]: { 0: Abilities.SIMPLE }, - [Species.DIGLETT]: { 0: Abilities.STURDY }, - [Species.DUGTRIO]: { 0: Abilities.STURDY }, - [Species.MEOWTH]: { 0: Abilities.TOUGH_CLAWS, 1: Abilities.TOUGH_CLAWS }, - [Species.PERSIAN]: { 0: Abilities.TOUGH_CLAWS }, - [Species.PSYDUCK]: { 0: Abilities.SIMPLE }, - [Species.GOLDUCK]: { 0: Abilities.SIMPLE }, - [Species.MANKEY]: { 0: Abilities.IRON_FIST }, - [Species.PRIMEAPE]: { 0: Abilities.IRON_FIST }, - [Species.ANNIHILAPE]: { 0: Abilities.IRON_FIST }, - [Species.GROWLITHE]: { 0: Abilities.FLUFFY }, - [Species.ARCANINE]: { 0: Abilities.FLUFFY }, - [Species.POLIWAG]: { 0: Abilities.NO_GUARD }, - [Species.POLIWHIRL]: { 0: Abilities.NO_GUARD }, - [Species.POLIWRATH]: { 0: Abilities.NO_GUARD }, - [Species.POLITOED]: { 0: Abilities.NO_GUARD }, - [Species.ABRA]: { 0: Abilities.COMATOSE }, - [Species.KADABRA]: { 0: Abilities.MAGICIAN }, - [Species.ALAKAZAM]: { 0: Abilities.MAGICIAN, 1: Abilities.MAGICIAN }, - [Species.MACHOP]: { 0: Abilities.QUICK_FEET }, - [Species.MACHOKE]: { 0: Abilities.QUICK_FEET }, - [Species.MACHAMP]: { 0: Abilities.QUICK_FEET, 1: Abilities.QUICK_FEET }, - [Species.BELLSPROUT]: { 0: Abilities.FLOWER_GIFT }, - [Species.WEEPINBELL]: { 0: Abilities.FLOWER_GIFT }, - [Species.VICTREEBEL]: { 0: Abilities.FLOWER_GIFT }, - [Species.TENTACOOL]: { 0: Abilities.TOXIC_CHAIN }, - [Species.TENTACRUEL]: { 0: Abilities.TOXIC_CHAIN }, - [Species.GEODUDE]: { 0: Abilities.DRY_SKIN }, - [Species.GRAVELER]: { 0: Abilities.DRY_SKIN }, - [Species.GOLEM]: { 0: Abilities.DRY_SKIN }, - [Species.PONYTA]: { 0: Abilities.MAGIC_GUARD }, - [Species.RAPIDASH]: { 0: Abilities.MAGIC_GUARD }, - [Species.SLOWPOKE]: { 0: Abilities.UNAWARE }, - [Species.SLOWBRO]: { 0: Abilities.UNAWARE, 1: Abilities.REGENERATOR }, - [Species.SLOWKING]: { 0: Abilities.UNAWARE }, - [Species.MAGNEMITE]: { 0: Abilities.LEVITATE }, - [Species.MAGNETON]: { 0: Abilities.LEVITATE }, - [Species.MAGNEZONE]: { 0: Abilities.LEVITATE }, - [Species.FARFETCHD]: { 0: Abilities.SNIPER }, - [Species.DODUO]: { 0: Abilities.PARENTAL_BOND }, - [Species.DODRIO]: { 0: Abilities.PARENTAL_BOND }, - [Species.SEEL]: { 0: Abilities.WATER_BUBBLE }, - [Species.DEWGONG]: { 0: Abilities.WATER_BUBBLE }, - [Species.GRIMER]: { 0: Abilities.WATER_ABSORB }, - [Species.MUK]: { 0: Abilities.WATER_ABSORB }, - [Species.SHELLDER]: { 0: Abilities.STURDY }, - [Species.CLOYSTER]: { 0: Abilities.ICE_SCALES }, - [Species.GASTLY]: { 0: Abilities.SHADOW_SHIELD }, - [Species.HAUNTER]: { 0: Abilities.SHADOW_SHIELD }, - [Species.GENGAR]: { 0: Abilities.SHADOW_SHIELD, 1: Abilities.UNNERVE, 2: Abilities.GLUTTONY }, - [Species.ONIX]: { 0: Abilities.ROCKY_PAYLOAD }, - [Species.STEELIX]: { 0: Abilities.ROCKY_PAYLOAD, 1: Abilities.SAND_SPIT }, - [Species.DROWZEE]: { 0: Abilities.MAGICIAN }, - [Species.HYPNO]: { 0: Abilities.MAGICIAN }, - [Species.KRABBY]: { 0: Abilities.UNBURDEN }, - [Species.KINGLER]: { 0: Abilities.UNBURDEN, 1: Abilities.UNBURDEN }, - [Species.VOLTORB]: { 0: Abilities.TRANSISTOR }, - [Species.ELECTRODE]: { 0: Abilities.TRANSISTOR }, - [Species.EXEGGCUTE]: { 0: Abilities.RIPEN }, - [Species.EXEGGUTOR]: { 0: Abilities.RIPEN }, - [Species.ALOLA_EXEGGUTOR]: { 0: Abilities.UNBURDEN }, - [Species.CUBONE]: { 0: Abilities.PARENTAL_BOND }, - [Species.MAROWAK]: { 0: Abilities.PARENTAL_BOND }, - [Species.ALOLA_MAROWAK]: { 0: Abilities.PARENTAL_BOND }, - [Species.LICKITUNG]: { 0: Abilities.CHEEK_POUCH }, - [Species.LICKILICKY]: { 0: Abilities.CHEEK_POUCH }, - [Species.KOFFING]: { 0: Abilities.WHITE_SMOKE }, - [Species.WEEZING]: { 0: Abilities.PARENTAL_BOND }, - [Species.GALAR_WEEZING]: { 0: Abilities.PARENTAL_BOND }, - [Species.RHYHORN]: { 0: Abilities.SOLID_ROCK }, - [Species.RHYDON]: { 0: Abilities.SOLID_ROCK }, - [Species.RHYPERIOR]: { 0: Abilities.FILTER }, - [Species.TANGELA]: { 0: Abilities.SEED_SOWER }, - [Species.TANGROWTH]: { 0: Abilities.SEED_SOWER }, - [Species.KANGASKHAN]: { 0: Abilities.TECHNICIAN, 1: Abilities.TECHNICIAN }, - [Species.HORSEA]: { 0: Abilities.DRAGONS_MAW }, - [Species.SEADRA]: { 0: Abilities.DRAGONS_MAW }, - [Species.KINGDRA]: { 0: Abilities.MULTISCALE }, - [Species.GOLDEEN]: { 0: Abilities.MULTISCALE }, - [Species.SEAKING]: { 0: Abilities.MULTISCALE }, - [Species.STARYU]: { 0: Abilities.REGENERATOR }, - [Species.STARMIE]: { 0: Abilities.REGENERATOR }, - [Species.SCYTHER]: { 0: Abilities.TINTED_LENS }, - [Species.SCIZOR]: { 0: Abilities.TOUGH_CLAWS, 1: Abilities.TOUGH_CLAWS }, - [Species.KLEAVOR]: { 0: Abilities.WEAK_ARMOR }, - [Species.PINSIR]: { 0: Abilities.TINTED_LENS, 1: Abilities.MOLD_BREAKER }, - [Species.TAUROS]: { 0: Abilities.STAMINA }, - [Species.MAGIKARP]: { 0: Abilities.MULTISCALE }, - [Species.GYARADOS]: { 0: Abilities.MULTISCALE, 1: Abilities.MULTISCALE }, - [Species.LAPRAS]: { 0: Abilities.FILTER, 1: Abilities.FILTER }, - [Species.DITTO]: { 0: Abilities.ADAPTABILITY }, - [Species.EEVEE]: { 0: Abilities.PICKUP, 1: Abilities.PICKUP, 2: Abilities.FLUFFY }, - [Species.VAPOREON]: { 0: Abilities.REGENERATOR }, - [Species.JOLTEON]: { 0: Abilities.TRANSISTOR }, - [Species.FLAREON]: { 0: Abilities.FUR_COAT }, - [Species.ESPEON]: { 0: Abilities.MAGICIAN }, - [Species.UMBREON]: { 0: Abilities.TOXIC_CHAIN }, - [Species.LEAFEON]: { 0: Abilities.GRASSY_SURGE }, - [Species.GLACEON]: { 0: Abilities.SNOW_WARNING }, - [Species.SYLVEON]: { 0: Abilities.COMPETITIVE }, - [Species.PORYGON]: { 0: Abilities.TRANSISTOR }, - [Species.PORYGON2]: { 0: Abilities.TRANSISTOR }, - [Species.PORYGON_Z]: { 0: Abilities.PROTEAN }, - [Species.OMANYTE]: { 0: Abilities.STURDY }, - [Species.OMASTAR]: { 0: Abilities.STURDY }, - [Species.KABUTO]: { 0: Abilities.TOUGH_CLAWS }, - [Species.KABUTOPS]: { 0: Abilities.TOUGH_CLAWS }, - [Species.AERODACTYL]: { 0: Abilities.INTIMIDATE, 1: Abilities.ROCKY_PAYLOAD }, - [Species.ARTICUNO]: { 0: Abilities.SNOW_WARNING }, - [Species.ZAPDOS]: { 0: Abilities.DRIZZLE }, - [Species.MOLTRES]: { 0: Abilities.DROUGHT }, - [Species.DRATINI]: { 0: Abilities.MULTISCALE }, - [Species.DRAGONAIR]: { 0: Abilities.MULTISCALE }, - [Species.DRAGONITE]: { 0: Abilities.AERILATE }, - [Species.MEWTWO]: { 0: Abilities.NEUROFORCE, 1: Abilities.NEUROFORCE, 2: Abilities.NEUROFORCE }, - [Species.MEW]: { 0: Abilities.PROTEAN }, + [SpeciesId.BULBASAUR]: { 0: AbilityId.GRASSY_SURGE }, + [SpeciesId.IVYSAUR]: { 0: AbilityId.GRASSY_SURGE }, + [SpeciesId.VENUSAUR]: { 0: AbilityId.GRASSY_SURGE, 1: AbilityId.SEED_SOWER, 2: AbilityId.FLOWER_VEIL }, + [SpeciesId.CHARMANDER]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.CHARMELEON]: { 0: AbilityId.BEAST_BOOST }, + [SpeciesId.CHARIZARD]: { 0: AbilityId.BEAST_BOOST, 1: AbilityId.LEVITATE, 2: AbilityId.TURBOBLAZE, 3: AbilityId.UNNERVE }, + [SpeciesId.SQUIRTLE]: { 0: AbilityId.DAUNTLESS_SHIELD }, + [SpeciesId.WARTORTLE]: { 0: AbilityId.DAUNTLESS_SHIELD }, + [SpeciesId.BLASTOISE]: { 0: AbilityId.DAUNTLESS_SHIELD, 1: AbilityId.BULLETPROOF, 2: AbilityId.BULLETPROOF }, + [SpeciesId.CATERPIE]: { 0: AbilityId.GLUTTONY }, + [SpeciesId.METAPOD]: { 0: AbilityId.STURDY }, + [SpeciesId.BUTTERFREE]: { 0: AbilityId.MAGICIAN, 1: AbilityId.MAGICIAN }, + [SpeciesId.WEEDLE]: { 0: AbilityId.POISON_TOUCH }, + [SpeciesId.KAKUNA]: { 0: AbilityId.STURDY }, + [SpeciesId.BEEDRILL]: { 0: AbilityId.ADAPTABILITY, 1: AbilityId.TINTED_LENS }, + [SpeciesId.PIDGEY]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.PIDGEOTTO]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.PIDGEOT]: { 0: AbilityId.SHEER_FORCE, 1: AbilityId.SHEER_FORCE }, + [SpeciesId.RATTATA]: { 0: AbilityId.STRONG_JAW }, + [SpeciesId.RATICATE]: { 0: AbilityId.STRONG_JAW }, + [SpeciesId.SPEAROW]: { 0: AbilityId.MOXIE }, + [SpeciesId.FEAROW]: { 0: AbilityId.MOXIE }, + [SpeciesId.EKANS]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.ARBOK]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.SANDSHREW]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.SANDSLASH]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.NIDORAN_F]: { 0: AbilityId.FLARE_BOOST }, + [SpeciesId.NIDORINA]: { 0: AbilityId.FLARE_BOOST }, + [SpeciesId.NIDOQUEEN]: { 0: AbilityId.FLARE_BOOST }, + [SpeciesId.NIDORAN_M]: { 0: AbilityId.GUTS }, + [SpeciesId.NIDORINO]: { 0: AbilityId.GUTS }, + [SpeciesId.NIDOKING]: { 0: AbilityId.GUTS }, + [SpeciesId.VULPIX]: { 0: AbilityId.FUR_COAT }, + [SpeciesId.NINETALES]: { 0: AbilityId.FUR_COAT }, + [SpeciesId.ZUBAT]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.GOLBAT]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.CROBAT]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.ODDISH]: { 0: AbilityId.TRIAGE }, + [SpeciesId.GLOOM]: { 0: AbilityId.TRIAGE }, + [SpeciesId.VILEPLUME]: { 0: AbilityId.TRIAGE }, + [SpeciesId.BELLOSSOM]: { 0: AbilityId.TRIAGE }, + [SpeciesId.PARAS]: { 0: AbilityId.TRIAGE }, + [SpeciesId.PARASECT]: { 0: AbilityId.TRIAGE }, + [SpeciesId.VENONAT]: { 0: AbilityId.FLUFFY }, + [SpeciesId.VENOMOTH]: { 0: AbilityId.SIMPLE }, + [SpeciesId.DIGLETT]: { 0: AbilityId.STURDY }, + [SpeciesId.DUGTRIO]: { 0: AbilityId.STURDY }, + [SpeciesId.MEOWTH]: { 0: AbilityId.TOUGH_CLAWS, 1: AbilityId.TOUGH_CLAWS }, + [SpeciesId.PERSIAN]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.PSYDUCK]: { 0: AbilityId.SIMPLE }, + [SpeciesId.GOLDUCK]: { 0: AbilityId.SIMPLE }, + [SpeciesId.MANKEY]: { 0: AbilityId.IRON_FIST }, + [SpeciesId.PRIMEAPE]: { 0: AbilityId.IRON_FIST }, + [SpeciesId.ANNIHILAPE]: { 0: AbilityId.IRON_FIST }, + [SpeciesId.GROWLITHE]: { 0: AbilityId.FLUFFY }, + [SpeciesId.ARCANINE]: { 0: AbilityId.FLUFFY }, + [SpeciesId.POLIWAG]: { 0: AbilityId.NO_GUARD }, + [SpeciesId.POLIWHIRL]: { 0: AbilityId.NO_GUARD }, + [SpeciesId.POLIWRATH]: { 0: AbilityId.NO_GUARD }, + [SpeciesId.POLITOED]: { 0: AbilityId.NO_GUARD }, + [SpeciesId.ABRA]: { 0: AbilityId.COMATOSE }, + [SpeciesId.KADABRA]: { 0: AbilityId.MAGICIAN }, + [SpeciesId.ALAKAZAM]: { 0: AbilityId.MAGICIAN, 1: AbilityId.MAGICIAN }, + [SpeciesId.MACHOP]: { 0: AbilityId.QUICK_FEET }, + [SpeciesId.MACHOKE]: { 0: AbilityId.QUICK_FEET }, + [SpeciesId.MACHAMP]: { 0: AbilityId.QUICK_FEET, 1: AbilityId.QUICK_FEET }, + [SpeciesId.BELLSPROUT]: { 0: AbilityId.FLOWER_GIFT }, + [SpeciesId.WEEPINBELL]: { 0: AbilityId.FLOWER_GIFT }, + [SpeciesId.VICTREEBEL]: { 0: AbilityId.FLOWER_GIFT }, + [SpeciesId.TENTACOOL]: { 0: AbilityId.TOXIC_CHAIN }, + [SpeciesId.TENTACRUEL]: { 0: AbilityId.TOXIC_CHAIN }, + [SpeciesId.GEODUDE]: { 0: AbilityId.DRY_SKIN }, + [SpeciesId.GRAVELER]: { 0: AbilityId.DRY_SKIN }, + [SpeciesId.GOLEM]: { 0: AbilityId.DRY_SKIN }, + [SpeciesId.PONYTA]: { 0: AbilityId.MAGIC_GUARD }, + [SpeciesId.RAPIDASH]: { 0: AbilityId.MAGIC_GUARD }, + [SpeciesId.SLOWPOKE]: { 0: AbilityId.UNAWARE }, + [SpeciesId.SLOWBRO]: { 0: AbilityId.UNAWARE, 1: AbilityId.REGENERATOR }, + [SpeciesId.SLOWKING]: { 0: AbilityId.UNAWARE }, + [SpeciesId.MAGNEMITE]: { 0: AbilityId.LEVITATE }, + [SpeciesId.MAGNETON]: { 0: AbilityId.LEVITATE }, + [SpeciesId.MAGNEZONE]: { 0: AbilityId.LEVITATE }, + [SpeciesId.FARFETCHD]: { 0: AbilityId.SNIPER }, + [SpeciesId.DODUO]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.DODRIO]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.SEEL]: { 0: AbilityId.WATER_BUBBLE }, + [SpeciesId.DEWGONG]: { 0: AbilityId.WATER_BUBBLE }, + [SpeciesId.GRIMER]: { 0: AbilityId.WATER_ABSORB }, + [SpeciesId.MUK]: { 0: AbilityId.WATER_ABSORB }, + [SpeciesId.SHELLDER]: { 0: AbilityId.STURDY }, + [SpeciesId.CLOYSTER]: { 0: AbilityId.ICE_SCALES }, + [SpeciesId.GASTLY]: { 0: AbilityId.SHADOW_SHIELD }, + [SpeciesId.HAUNTER]: { 0: AbilityId.SHADOW_SHIELD }, + [SpeciesId.GENGAR]: { 0: AbilityId.SHADOW_SHIELD, 1: AbilityId.UNNERVE, 2: AbilityId.GLUTTONY }, + [SpeciesId.ONIX]: { 0: AbilityId.ROCKY_PAYLOAD }, + [SpeciesId.STEELIX]: { 0: AbilityId.ROCKY_PAYLOAD, 1: AbilityId.SAND_SPIT }, + [SpeciesId.DROWZEE]: { 0: AbilityId.MAGICIAN }, + [SpeciesId.HYPNO]: { 0: AbilityId.MAGICIAN }, + [SpeciesId.KRABBY]: { 0: AbilityId.UNBURDEN }, + [SpeciesId.KINGLER]: { 0: AbilityId.UNBURDEN, 1: AbilityId.UNBURDEN }, + [SpeciesId.VOLTORB]: { 0: AbilityId.TRANSISTOR }, + [SpeciesId.ELECTRODE]: { 0: AbilityId.TRANSISTOR }, + [SpeciesId.EXEGGCUTE]: { 0: AbilityId.RIPEN }, + [SpeciesId.EXEGGUTOR]: { 0: AbilityId.RIPEN }, + [SpeciesId.ALOLA_EXEGGUTOR]: { 0: AbilityId.UNBURDEN }, + [SpeciesId.CUBONE]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.MAROWAK]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.ALOLA_MAROWAK]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.LICKITUNG]: { 0: AbilityId.CHEEK_POUCH }, + [SpeciesId.LICKILICKY]: { 0: AbilityId.CHEEK_POUCH }, + [SpeciesId.KOFFING]: { 0: AbilityId.WHITE_SMOKE }, + [SpeciesId.WEEZING]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.GALAR_WEEZING]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.RHYHORN]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.RHYDON]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.RHYPERIOR]: { 0: AbilityId.FILTER }, + [SpeciesId.TANGELA]: { 0: AbilityId.SEED_SOWER }, + [SpeciesId.TANGROWTH]: { 0: AbilityId.SEED_SOWER }, + [SpeciesId.KANGASKHAN]: { 0: AbilityId.TECHNICIAN, 1: AbilityId.TECHNICIAN }, + [SpeciesId.HORSEA]: { 0: AbilityId.DRAGONS_MAW }, + [SpeciesId.SEADRA]: { 0: AbilityId.DRAGONS_MAW }, + [SpeciesId.KINGDRA]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.GOLDEEN]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.SEAKING]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.STARYU]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.STARMIE]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.SCYTHER]: { 0: AbilityId.TINTED_LENS }, + [SpeciesId.SCIZOR]: { 0: AbilityId.TOUGH_CLAWS, 1: AbilityId.TOUGH_CLAWS }, + [SpeciesId.KLEAVOR]: { 0: AbilityId.WEAK_ARMOR }, + [SpeciesId.PINSIR]: { 0: AbilityId.TINTED_LENS, 1: AbilityId.MOLD_BREAKER }, + [SpeciesId.TAUROS]: { 0: AbilityId.STAMINA }, + [SpeciesId.MAGIKARP]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.GYARADOS]: { 0: AbilityId.MULTISCALE, 1: AbilityId.MULTISCALE }, + [SpeciesId.LAPRAS]: { 0: AbilityId.FILTER, 1: AbilityId.FILTER }, + [SpeciesId.DITTO]: { 0: AbilityId.ADAPTABILITY }, + [SpeciesId.EEVEE]: { 0: AbilityId.PICKUP, 1: AbilityId.PICKUP, 2: AbilityId.FLUFFY }, + [SpeciesId.VAPOREON]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.JOLTEON]: { 0: AbilityId.TRANSISTOR }, + [SpeciesId.FLAREON]: { 0: AbilityId.FUR_COAT }, + [SpeciesId.ESPEON]: { 0: AbilityId.MAGICIAN }, + [SpeciesId.UMBREON]: { 0: AbilityId.TOXIC_CHAIN }, + [SpeciesId.LEAFEON]: { 0: AbilityId.GRASSY_SURGE }, + [SpeciesId.GLACEON]: { 0: AbilityId.SNOW_WARNING }, + [SpeciesId.SYLVEON]: { 0: AbilityId.COMPETITIVE }, + [SpeciesId.PORYGON]: { 0: AbilityId.TRANSISTOR }, + [SpeciesId.PORYGON2]: { 0: AbilityId.TRANSISTOR }, + [SpeciesId.PORYGON_Z]: { 0: AbilityId.PROTEAN }, + [SpeciesId.OMANYTE]: { 0: AbilityId.STURDY }, + [SpeciesId.OMASTAR]: { 0: AbilityId.STURDY }, + [SpeciesId.KABUTO]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.KABUTOPS]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.AERODACTYL]: { 0: AbilityId.INTIMIDATE, 1: AbilityId.ROCKY_PAYLOAD }, + [SpeciesId.ARTICUNO]: { 0: AbilityId.SNOW_WARNING }, + [SpeciesId.ZAPDOS]: { 0: AbilityId.DRIZZLE }, + [SpeciesId.MOLTRES]: { 0: AbilityId.DROUGHT }, + [SpeciesId.DRATINI]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.DRAGONAIR]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.DRAGONITE]: { 0: AbilityId.AERILATE }, + [SpeciesId.MEWTWO]: { 0: AbilityId.NEUROFORCE, 1: AbilityId.NEUROFORCE, 2: AbilityId.NEUROFORCE }, + [SpeciesId.MEW]: { 0: AbilityId.PROTEAN }, - [Species.CHIKORITA]: { 0: Abilities.CUTE_CHARM }, - [Species.BAYLEEF]: { 0: Abilities.THICK_FAT }, - [Species.MEGANIUM]: { 0: Abilities.THICK_FAT }, - [Species.CYNDAQUIL]: { 0: Abilities.WHITE_SMOKE }, - [Species.QUILAVA]: { 0: Abilities.DROUGHT }, - [Species.TYPHLOSION]: { 0: Abilities.DROUGHT }, - [Species.HISUI_TYPHLOSION]: { 0: Abilities.DROUGHT }, - [Species.TOTODILE]: { 0: Abilities.TOUGH_CLAWS }, - [Species.CROCONAW]: { 0: Abilities.TOUGH_CLAWS }, - [Species.FERALIGATR]: { 0: Abilities.TOUGH_CLAWS }, - [Species.SENTRET]: { 0: Abilities.PICKUP }, - [Species.FURRET]: { 0: Abilities.PICKUP }, - [Species.HOOTHOOT]: { 0: Abilities.AERILATE }, - [Species.NOCTOWL]: { 0: Abilities.AERILATE }, - [Species.LEDYBA]: { 0: Abilities.PRANKSTER }, - [Species.LEDIAN]: { 0: Abilities.PRANKSTER }, - [Species.SPINARAK]: { 0: Abilities.PRANKSTER }, - [Species.ARIADOS]: { 0: Abilities.PRANKSTER }, - [Species.CHINCHOU]: { 0: Abilities.REGENERATOR }, - [Species.LANTURN]: { 0: Abilities.REGENERATOR }, - [Species.PICHU]: { 0: Abilities.ELECTRIC_SURGE, 1: Abilities.STURDY }, - [Species.PIKACHU]: { 0: Abilities.ELECTRIC_SURGE, 1: Abilities.STURDY, 2: Abilities.COSTAR, 3: Abilities.IRON_FIST, 4: Abilities.QUEENLY_MAJESTY, 5: Abilities.MISTY_SURGE, 6: Abilities.TINTED_LENS, 7: Abilities.LIBERO, 8: Abilities.THICK_FAT }, - [Species.RAICHU]: { 0: Abilities.ELECTRIC_SURGE }, - [Species.ALOLA_RAICHU]: { 0: Abilities.ELECTRIC_SURGE }, - [Species.CLEFFA]: { 0: Abilities.PRANKSTER }, - [Species.CLEFAIRY]: { 0: Abilities.PRANKSTER }, - [Species.CLEFABLE]: { 0: Abilities.ANALYTIC }, - [Species.IGGLYBUFF]: { 0: Abilities.HUGE_POWER }, - [Species.JIGGLYPUFF]: { 0: Abilities.HUGE_POWER }, - [Species.WIGGLYTUFF]: { 0: Abilities.HUGE_POWER }, - [Species.TOGEPI]: { 0: Abilities.PIXILATE }, - [Species.TOGETIC]: { 0: Abilities.PIXILATE }, - [Species.TOGEKISS]: { 0: Abilities.PIXILATE }, - [Species.NATU]: { 0: Abilities.TINTED_LENS }, - [Species.XATU]: { 0: Abilities.SHEER_FORCE }, - [Species.MAREEP]: { 0: Abilities.ELECTROMORPHOSIS }, - [Species.FLAAFFY]: { 0: Abilities.ELECTROMORPHOSIS }, - [Species.AMPHAROS]: { 0: Abilities.ELECTROMORPHOSIS, 1: Abilities.ELECTROMORPHOSIS }, - [Species.HOPPIP]: { 0: Abilities.WIND_RIDER }, - [Species.SKIPLOOM]: { 0: Abilities.WIND_RIDER }, - [Species.JUMPLUFF]: { 0: Abilities.FLUFFY }, - [Species.AIPOM]: { 0: Abilities.SCRAPPY }, - [Species.AMBIPOM]: { 0: Abilities.SCRAPPY }, - [Species.SUNKERN]: { 0: Abilities.DROUGHT }, - [Species.SUNFLORA]: { 0: Abilities.DROUGHT }, - [Species.YANMA]: { 0: Abilities.TECHNICIAN }, - [Species.YANMEGA]: { 0: Abilities.SHEER_FORCE }, - [Species.WOOPER]: { 0: Abilities.WATER_VEIL }, - [Species.QUAGSIRE]: { 0: Abilities.COMATOSE }, - [Species.MURKROW]: { 0: Abilities.DARK_AURA }, - [Species.HONCHKROW]: { 0: Abilities.DARK_AURA }, - [Species.MISDREAVUS]: { 0: Abilities.BEADS_OF_RUIN }, - [Species.MISMAGIUS]: { 0: Abilities.BEADS_OF_RUIN }, - [Species.UNOWN]: { 0: Abilities.ADAPTABILITY, 1: Abilities.BEAST_BOOST, 2: Abilities.CONTRARY, 3: Abilities.DAZZLING, 4: Abilities.EMERGENCY_EXIT, 5: Abilities.FRIEND_GUARD, 6: Abilities.GOOD_AS_GOLD, 7: Abilities.HONEY_GATHER, 8: Abilities.IMPOSTER, 9: Abilities.JUSTIFIED, 10: Abilities.KLUTZ, 11: Abilities.LIBERO, 12: Abilities.MOODY, 13: Abilities.NEUTRALIZING_GAS, 14: Abilities.OPPORTUNIST, 15: Abilities.PICKUP, 16: Abilities.QUICK_DRAW, 17: Abilities.RUN_AWAY, 18: Abilities.SIMPLE, 19: Abilities.TRACE, 20: Abilities.UNNERVE, 21: Abilities.VICTORY_STAR, 22: Abilities.WANDERING_SPIRIT, 23: Abilities.FAIRY_AURA, 24: Abilities.DARK_AURA, 25: Abilities.AURA_BREAK, 26: Abilities.PURE_POWER, 27: Abilities.UNAWARE }, - [Species.GIRAFARIG]: { 0: Abilities.PARENTAL_BOND }, - [Species.FARIGIRAF]: { 0: Abilities.PARENTAL_BOND }, - [Species.PINECO]: { 0: Abilities.ROUGH_SKIN }, - [Species.FORRETRESS]: { 0: Abilities.IRON_BARBS }, - [Species.DUNSPARCE]: { 0: Abilities.UNAWARE }, - [Species.DUDUNSPARCE]: { 0: Abilities.UNAWARE, 1: Abilities.UNAWARE }, - [Species.GLIGAR]: { 0: Abilities.POISON_TOUCH }, - [Species.GLISCOR]: { 0: Abilities.TOXIC_BOOST }, - [Species.SNUBBULL]: { 0: Abilities.PIXILATE }, - [Species.GRANBULL]: { 0: Abilities.PIXILATE }, - [Species.QWILFISH]: { 0: Abilities.TOXIC_DEBRIS }, - [Species.SHUCKLE]: { 0: Abilities.HARVEST }, - [Species.HERACROSS]: { 0: Abilities.TECHNICIAN, 1: Abilities.TECHNICIAN }, - [Species.SNEASEL]: { 0: Abilities.TOUGH_CLAWS }, - [Species.WEAVILE]: { 0: Abilities.TOUGH_CLAWS }, - [Species.TEDDIURSA]: { 0: Abilities.RUN_AWAY }, - [Species.URSARING]: { 0: Abilities.THICK_FAT }, - [Species.URSALUNA]: { 0: Abilities.THICK_FAT }, - [Species.SLUGMA]: { 0: Abilities.DROUGHT }, - [Species.MAGCARGO]: { 0: Abilities.DESOLATE_LAND }, - [Species.SWINUB]: { 0: Abilities.UNAWARE }, - [Species.PILOSWINE]: { 0: Abilities.UNAWARE }, - [Species.MAMOSWINE]: { 0: Abilities.SLUSH_RUSH }, - [Species.CORSOLA]: { 0: Abilities.STORM_DRAIN }, - [Species.REMORAID]: { 0: Abilities.SIMPLE }, - [Species.OCTILLERY]: { 0: Abilities.SIMPLE }, - [Species.DELIBIRD]: { 0: Abilities.HUGE_POWER }, - [Species.SKARMORY]: { 0: Abilities.LIGHTNING_ROD }, - [Species.HOUNDOUR]: { 0: Abilities.BALL_FETCH }, - [Species.HOUNDOOM]: { 0: Abilities.LIGHTNING_ROD, 1: Abilities.LIGHTNING_ROD }, - [Species.PHANPY]: { 0: Abilities.STURDY }, - [Species.DONPHAN]: { 0: Abilities.SPEED_BOOST }, - [Species.STANTLER]: { 0: Abilities.SPEED_BOOST }, - [Species.WYRDEER]: { 0: Abilities.SPEED_BOOST }, - [Species.SMEARGLE]: { 0: Abilities.PRANKSTER }, - [Species.TYROGUE]: { 0: Abilities.DEFIANT }, - [Species.HITMONLEE]: { 0: Abilities.SHEER_FORCE }, - [Species.HITMONCHAN]: { 0: Abilities.MOXIE }, - [Species.HITMONTOP]: { 0: Abilities.SPEED_BOOST }, - [Species.SMOOCHUM]: { 0: Abilities.PSYCHIC_SURGE }, - [Species.JYNX]: { 0: Abilities.PSYCHIC_SURGE }, - [Species.ELEKID]: { 0: Abilities.SHEER_FORCE }, - [Species.ELECTABUZZ]: { 0: Abilities.SHEER_FORCE }, - [Species.ELECTIVIRE]: { 0: Abilities.SHEER_FORCE }, - [Species.MAGBY]: { 0: Abilities.SHEER_FORCE }, - [Species.MAGMAR]: { 0: Abilities.SHEER_FORCE }, - [Species.MAGMORTAR]: { 0: Abilities.SHEER_FORCE }, - [Species.MILTANK]: { 0: Abilities.STAMINA }, - [Species.RAIKOU]: { 0: Abilities.BEAST_BOOST }, - [Species.ENTEI]: { 0: Abilities.BEAST_BOOST }, - [Species.SUICUNE]: { 0: Abilities.BEAST_BOOST }, - [Species.LARVITAR]: { 0: Abilities.SOLID_ROCK }, - [Species.PUPITAR]: { 0: Abilities.SOLID_ROCK }, - [Species.TYRANITAR]: { 0: Abilities.SOLID_ROCK, 1: Abilities.SOLID_ROCK }, - [Species.LUGIA]: { 0: Abilities.DELTA_STREAM }, - [Species.HO_OH]: { 0: Abilities.MAGIC_GUARD }, - [Species.CELEBI]: { 0: Abilities.PSYCHIC_SURGE }, + [SpeciesId.CHIKORITA]: { 0: AbilityId.CUTE_CHARM }, + [SpeciesId.BAYLEEF]: { 0: AbilityId.THICK_FAT }, + [SpeciesId.MEGANIUM]: { 0: AbilityId.THICK_FAT }, + [SpeciesId.CYNDAQUIL]: { 0: AbilityId.WHITE_SMOKE }, + [SpeciesId.QUILAVA]: { 0: AbilityId.DROUGHT }, + [SpeciesId.TYPHLOSION]: { 0: AbilityId.DROUGHT }, + [SpeciesId.HISUI_TYPHLOSION]: { 0: AbilityId.DROUGHT }, + [SpeciesId.TOTODILE]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.CROCONAW]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.FERALIGATR]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.SENTRET]: { 0: AbilityId.PICKUP }, + [SpeciesId.FURRET]: { 0: AbilityId.PICKUP }, + [SpeciesId.HOOTHOOT]: { 0: AbilityId.AERILATE }, + [SpeciesId.NOCTOWL]: { 0: AbilityId.AERILATE }, + [SpeciesId.LEDYBA]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.LEDIAN]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.SPINARAK]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.ARIADOS]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.CHINCHOU]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.LANTURN]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.PICHU]: { 0: AbilityId.ELECTRIC_SURGE, 1: AbilityId.STURDY }, + [SpeciesId.PIKACHU]: { 0: AbilityId.ELECTRIC_SURGE, 1: AbilityId.STURDY, 2: AbilityId.COSTAR, 3: AbilityId.IRON_FIST, 4: AbilityId.QUEENLY_MAJESTY, 5: AbilityId.MISTY_SURGE, 6: AbilityId.TINTED_LENS, 7: AbilityId.LIBERO, 8: AbilityId.THICK_FAT }, + [SpeciesId.RAICHU]: { 0: AbilityId.ELECTRIC_SURGE }, + [SpeciesId.ALOLA_RAICHU]: { 0: AbilityId.ELECTRIC_SURGE }, + [SpeciesId.CLEFFA]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.CLEFAIRY]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.CLEFABLE]: { 0: AbilityId.ANALYTIC }, + [SpeciesId.IGGLYBUFF]: { 0: AbilityId.HUGE_POWER }, + [SpeciesId.JIGGLYPUFF]: { 0: AbilityId.HUGE_POWER }, + [SpeciesId.WIGGLYTUFF]: { 0: AbilityId.HUGE_POWER }, + [SpeciesId.TOGEPI]: { 0: AbilityId.PIXILATE }, + [SpeciesId.TOGETIC]: { 0: AbilityId.PIXILATE }, + [SpeciesId.TOGEKISS]: { 0: AbilityId.PIXILATE }, + [SpeciesId.NATU]: { 0: AbilityId.TINTED_LENS }, + [SpeciesId.XATU]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.MAREEP]: { 0: AbilityId.ELECTROMORPHOSIS }, + [SpeciesId.FLAAFFY]: { 0: AbilityId.ELECTROMORPHOSIS }, + [SpeciesId.AMPHAROS]: { 0: AbilityId.ELECTROMORPHOSIS, 1: AbilityId.ELECTROMORPHOSIS }, + [SpeciesId.HOPPIP]: { 0: AbilityId.WIND_RIDER }, + [SpeciesId.SKIPLOOM]: { 0: AbilityId.WIND_RIDER }, + [SpeciesId.JUMPLUFF]: { 0: AbilityId.FLUFFY }, + [SpeciesId.AIPOM]: { 0: AbilityId.SCRAPPY }, + [SpeciesId.AMBIPOM]: { 0: AbilityId.SCRAPPY }, + [SpeciesId.SUNKERN]: { 0: AbilityId.DROUGHT }, + [SpeciesId.SUNFLORA]: { 0: AbilityId.DROUGHT }, + [SpeciesId.YANMA]: { 0: AbilityId.TECHNICIAN }, + [SpeciesId.YANMEGA]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.WOOPER]: { 0: AbilityId.WATER_VEIL }, + [SpeciesId.QUAGSIRE]: { 0: AbilityId.COMATOSE }, + [SpeciesId.MURKROW]: { 0: AbilityId.DARK_AURA }, + [SpeciesId.HONCHKROW]: { 0: AbilityId.DARK_AURA }, + [SpeciesId.MISDREAVUS]: { 0: AbilityId.BEADS_OF_RUIN }, + [SpeciesId.MISMAGIUS]: { 0: AbilityId.BEADS_OF_RUIN }, + [SpeciesId.UNOWN]: { 0: AbilityId.ADAPTABILITY, 1: AbilityId.BEAST_BOOST, 2: AbilityId.CONTRARY, 3: AbilityId.DAZZLING, 4: AbilityId.EMERGENCY_EXIT, 5: AbilityId.FRIEND_GUARD, 6: AbilityId.GOOD_AS_GOLD, 7: AbilityId.HONEY_GATHER, 8: AbilityId.IMPOSTER, 9: AbilityId.JUSTIFIED, 10: AbilityId.KLUTZ, 11: AbilityId.LIBERO, 12: AbilityId.MOODY, 13: AbilityId.NEUTRALIZING_GAS, 14: AbilityId.OPPORTUNIST, 15: AbilityId.PICKUP, 16: AbilityId.QUICK_DRAW, 17: AbilityId.RUN_AWAY, 18: AbilityId.SIMPLE, 19: AbilityId.TRACE, 20: AbilityId.UNNERVE, 21: AbilityId.VICTORY_STAR, 22: AbilityId.WANDERING_SPIRIT, 23: AbilityId.FAIRY_AURA, 24: AbilityId.DARK_AURA, 25: AbilityId.AURA_BREAK, 26: AbilityId.PURE_POWER, 27: AbilityId.UNAWARE }, + [SpeciesId.GIRAFARIG]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.FARIGIRAF]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.PINECO]: { 0: AbilityId.ROUGH_SKIN }, + [SpeciesId.FORRETRESS]: { 0: AbilityId.IRON_BARBS }, + [SpeciesId.DUNSPARCE]: { 0: AbilityId.UNAWARE }, + [SpeciesId.DUDUNSPARCE]: { 0: AbilityId.UNAWARE, 1: AbilityId.UNAWARE }, + [SpeciesId.GLIGAR]: { 0: AbilityId.POISON_TOUCH }, + [SpeciesId.GLISCOR]: { 0: AbilityId.TOXIC_BOOST }, + [SpeciesId.SNUBBULL]: { 0: AbilityId.PIXILATE }, + [SpeciesId.GRANBULL]: { 0: AbilityId.PIXILATE }, + [SpeciesId.QWILFISH]: { 0: AbilityId.TOXIC_DEBRIS }, + [SpeciesId.SHUCKLE]: { 0: AbilityId.HARVEST }, + [SpeciesId.HERACROSS]: { 0: AbilityId.TECHNICIAN, 1: AbilityId.TECHNICIAN }, + [SpeciesId.SNEASEL]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.WEAVILE]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.TEDDIURSA]: { 0: AbilityId.RUN_AWAY }, + [SpeciesId.URSARING]: { 0: AbilityId.THICK_FAT }, + [SpeciesId.URSALUNA]: { 0: AbilityId.THICK_FAT }, + [SpeciesId.SLUGMA]: { 0: AbilityId.DROUGHT }, + [SpeciesId.MAGCARGO]: { 0: AbilityId.DESOLATE_LAND }, + [SpeciesId.SWINUB]: { 0: AbilityId.UNAWARE }, + [SpeciesId.PILOSWINE]: { 0: AbilityId.UNAWARE }, + [SpeciesId.MAMOSWINE]: { 0: AbilityId.SLUSH_RUSH }, + [SpeciesId.CORSOLA]: { 0: AbilityId.STORM_DRAIN }, + [SpeciesId.REMORAID]: { 0: AbilityId.SIMPLE }, + [SpeciesId.OCTILLERY]: { 0: AbilityId.SIMPLE }, + [SpeciesId.DELIBIRD]: { 0: AbilityId.HUGE_POWER }, + [SpeciesId.SKARMORY]: { 0: AbilityId.LIGHTNING_ROD }, + [SpeciesId.HOUNDOUR]: { 0: AbilityId.BALL_FETCH }, + [SpeciesId.HOUNDOOM]: { 0: AbilityId.LIGHTNING_ROD, 1: AbilityId.LIGHTNING_ROD }, + [SpeciesId.PHANPY]: { 0: AbilityId.STURDY }, + [SpeciesId.DONPHAN]: { 0: AbilityId.SPEED_BOOST }, + [SpeciesId.STANTLER]: { 0: AbilityId.SPEED_BOOST }, + [SpeciesId.WYRDEER]: { 0: AbilityId.SPEED_BOOST }, + [SpeciesId.SMEARGLE]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.TYROGUE]: { 0: AbilityId.DEFIANT }, + [SpeciesId.HITMONLEE]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.HITMONCHAN]: { 0: AbilityId.MOXIE }, + [SpeciesId.HITMONTOP]: { 0: AbilityId.SPEED_BOOST }, + [SpeciesId.SMOOCHUM]: { 0: AbilityId.PSYCHIC_SURGE }, + [SpeciesId.JYNX]: { 0: AbilityId.PSYCHIC_SURGE }, + [SpeciesId.ELEKID]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.ELECTABUZZ]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.ELECTIVIRE]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.MAGBY]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.MAGMAR]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.MAGMORTAR]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.MILTANK]: { 0: AbilityId.STAMINA }, + [SpeciesId.RAIKOU]: { 0: AbilityId.BEAST_BOOST }, + [SpeciesId.ENTEI]: { 0: AbilityId.BEAST_BOOST }, + [SpeciesId.SUICUNE]: { 0: AbilityId.BEAST_BOOST }, + [SpeciesId.LARVITAR]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.PUPITAR]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.TYRANITAR]: { 0: AbilityId.SOLID_ROCK, 1: AbilityId.SOLID_ROCK }, + [SpeciesId.LUGIA]: { 0: AbilityId.DELTA_STREAM }, + [SpeciesId.HO_OH]: { 0: AbilityId.MAGIC_GUARD }, + [SpeciesId.CELEBI]: { 0: AbilityId.PSYCHIC_SURGE }, - [Species.TREECKO]: { 0: Abilities.TINTED_LENS }, - [Species.GROVYLE]: { 0: Abilities.TINTED_LENS }, - [Species.SCEPTILE]: { 0: Abilities.TINTED_LENS, 1: Abilities.TINTED_LENS }, - [Species.TORCHIC]: { 0: Abilities.DEFIANT }, - [Species.COMBUSKEN]: { 0: Abilities.DEFIANT }, - [Species.BLAZIKEN]: { 0: Abilities.DEFIANT, 1: Abilities.DEFIANT }, - [Species.MUDKIP]: { 0: Abilities.REGENERATOR }, - [Species.MARSHTOMP]: { 0: Abilities.REGENERATOR }, - [Species.SWAMPERT]: { 0: Abilities.REGENERATOR, 1: Abilities.DRIZZLE }, - [Species.POOCHYENA]: { 0: Abilities.TOUGH_CLAWS }, - [Species.MIGHTYENA]: { 0: Abilities.TOUGH_CLAWS }, - [Species.ZIGZAGOON]: { 0: Abilities.RUN_AWAY }, - [Species.LINOONE]: { 0: Abilities.RUN_AWAY }, - [Species.WURMPLE]: { 0: Abilities.GLUTTONY }, - [Species.SILCOON]: { 0: Abilities.STURDY }, - [Species.BEAUTIFLY]: { 0: Abilities.SIMPLE }, - [Species.CASCOON]: { 0: Abilities.STURDY }, - [Species.DUSTOX]: { 0: Abilities.SIMPLE }, - [Species.LOTAD]: { 0: Abilities.DRIZZLE }, - [Species.LOMBRE]: { 0: Abilities.DRIZZLE }, - [Species.LUDICOLO]: { 0: Abilities.DRIZZLE }, - [Species.SEEDOT]: { 0: Abilities.STURDY }, - [Species.NUZLEAF]: { 0: Abilities.SHARPNESS }, - [Species.SHIFTRY]: { 0: Abilities.SHARPNESS }, - [Species.TAILLOW]: { 0: Abilities.AERILATE }, - [Species.SWELLOW]: { 0: Abilities.AERILATE }, - [Species.WINGULL]: { 0: Abilities.WATER_ABSORB }, - [Species.PELIPPER]: { 0: Abilities.SWIFT_SWIM }, - [Species.RALTS]: { 0: Abilities.NEUROFORCE }, - [Species.KIRLIA]: { 0: Abilities.NEUROFORCE }, - [Species.GARDEVOIR]: { 0: Abilities.NEUROFORCE, 1: Abilities.PSYCHIC_SURGE }, - [Species.GALLADE]: { 0: Abilities.NEUROFORCE, 1: Abilities.SHARPNESS }, - [Species.SURSKIT]: { 0: Abilities.WATER_BUBBLE }, - [Species.MASQUERAIN]: { 0: Abilities.WATER_BUBBLE }, - [Species.SHROOMISH]: { 0: Abilities.GUTS }, - [Species.BRELOOM]: { 0: Abilities.GUTS }, - [Species.SLAKOTH]: { 0: Abilities.GUTS }, - [Species.VIGOROTH]: { 0: Abilities.GUTS }, - [Species.SLAKING]: { 0: Abilities.GUTS }, - [Species.NINCADA]: { 0: Abilities.TECHNICIAN }, - [Species.NINJASK]: { 0: Abilities.TECHNICIAN }, - [Species.SHEDINJA]: { 0: Abilities.MAGIC_GUARD }, - [Species.WHISMUR]: { 0: Abilities.PUNK_ROCK }, - [Species.LOUDRED]: { 0: Abilities.PUNK_ROCK }, - [Species.EXPLOUD]: { 0: Abilities.PUNK_ROCK }, - [Species.MAKUHITA]: { 0: Abilities.STAMINA }, - [Species.HARIYAMA]: { 0: Abilities.STAMINA }, - [Species.AZURILL]: { 0: Abilities.MISTY_SURGE }, - [Species.MARILL]: { 0: Abilities.MISTY_SURGE }, - [Species.AZUMARILL]: { 0: Abilities.MISTY_SURGE }, - [Species.NOSEPASS]: { 0: Abilities.SOLID_ROCK }, - [Species.PROBOPASS]: { 0: Abilities.LEVITATE }, - [Species.SKITTY]: { 0: Abilities.SCRAPPY }, - [Species.DELCATTY]: { 0: Abilities.SCRAPPY }, - [Species.SABLEYE]: { 0: Abilities.UNNERVE, 1: Abilities.UNNERVE }, - [Species.MAWILE]: { 0: Abilities.ADAPTABILITY, 1: Abilities.INTIMIDATE }, - [Species.ARON]: { 0: Abilities.EARTH_EATER }, - [Species.LAIRON]: { 0: Abilities.EARTH_EATER }, - [Species.AGGRON]: { 0: Abilities.EARTH_EATER, 1: Abilities.ROCKY_PAYLOAD }, - [Species.MEDITITE]: { 0: Abilities.MINDS_EYE }, - [Species.MEDICHAM]: { 0: Abilities.MINDS_EYE, 1: Abilities.MINDS_EYE }, - [Species.ELECTRIKE]: { 0: Abilities.BALL_FETCH }, - [Species.MANECTRIC]: { 0: Abilities.FLASH_FIRE, 1: Abilities.FLASH_FIRE }, - [Species.PLUSLE]: { 0: Abilities.POWER_SPOT }, - [Species.MINUN]: { 0: Abilities.POWER_SPOT }, - [Species.VOLBEAT]: { 0: Abilities.HONEY_GATHER }, - [Species.ILLUMISE]: { 0: Abilities.HONEY_GATHER }, - [Species.GULPIN]: { 0: Abilities.EARTH_EATER }, - [Species.SWALOT]: { 0: Abilities.EARTH_EATER }, - [Species.CARVANHA]: { 0: Abilities.SHEER_FORCE }, - [Species.SHARPEDO]: { 0: Abilities.SHEER_FORCE, 1: Abilities.SPEED_BOOST }, - [Species.WAILMER]: { 0: Abilities.LEVITATE }, - [Species.WAILORD]: { 0: Abilities.LEVITATE }, - [Species.NUMEL]: { 0: Abilities.SOLID_ROCK }, - [Species.CAMERUPT]: { 0: Abilities.FUR_COAT, 1: Abilities.STAMINA }, - [Species.TORKOAL]: { 0: Abilities.ANALYTIC }, - [Species.SPOINK]: { 0: Abilities.PSYCHIC_SURGE }, - [Species.GRUMPIG]: { 0: Abilities.PSYCHIC_SURGE }, - [Species.SPINDA]: { 0: Abilities.SIMPLE }, - [Species.TRAPINCH]: { 0: Abilities.ADAPTABILITY }, - [Species.VIBRAVA]: { 0: Abilities.ADAPTABILITY }, - [Species.FLYGON]: { 0: Abilities.ADAPTABILITY }, - [Species.CACNEA]: { 0: Abilities.SAND_RUSH }, - [Species.CACTURNE]: { 0: Abilities.SAND_RUSH }, - [Species.SWABLU]: { 0: Abilities.FLUFFY }, - [Species.ALTARIA]: { 0: Abilities.FLUFFY, 1: Abilities.FLUFFY }, - [Species.ZANGOOSE]: { 0: Abilities.POISON_HEAL }, - [Species.SEVIPER]: { 0: Abilities.MULTISCALE }, - [Species.LUNATONE]: { 0: Abilities.SHADOW_SHIELD }, - [Species.SOLROCK]: { 0: Abilities.DROUGHT }, - [Species.BARBOACH]: { 0: Abilities.SIMPLE }, - [Species.WHISCASH]: { 0: Abilities.SIMPLE }, - [Species.CORPHISH]: { 0: Abilities.TOUGH_CLAWS }, - [Species.CRAWDAUNT]: { 0: Abilities.TOUGH_CLAWS }, - [Species.BALTOY]: { 0: Abilities.WELL_BAKED_BODY }, - [Species.CLAYDOL]: { 0: Abilities.WELL_BAKED_BODY }, - [Species.LILEEP]: { 0: Abilities.SEED_SOWER }, - [Species.CRADILY]: { 0: Abilities.SEED_SOWER }, - [Species.ANORITH]: { 0: Abilities.WATER_ABSORB }, - [Species.ARMALDO]: { 0: Abilities.WATER_ABSORB }, - [Species.FEEBAS]: { 0: Abilities.MULTISCALE }, - [Species.MILOTIC]: { 0: Abilities.MAGIC_GUARD }, - [Species.CASTFORM]: { 0: Abilities.ADAPTABILITY, 1: Abilities.ADAPTABILITY, 2: Abilities.ADAPTABILITY, 3: Abilities.ADAPTABILITY }, - [Species.KECLEON]: { 0: Abilities.ADAPTABILITY }, - [Species.SHUPPET]: { 0: Abilities.SHADOW_SHIELD }, - [Species.BANETTE]: { 0: Abilities.SHADOW_SHIELD, 1: Abilities.SHADOW_SHIELD }, - [Species.DUSKULL]: { 0: Abilities.UNNERVE }, - [Species.DUSCLOPS]: { 0: Abilities.UNNERVE }, - [Species.DUSKNOIR]: { 0: Abilities.UNNERVE }, - [Species.TROPIUS]: { 0: Abilities.RIPEN }, - [Species.ABSOL]: { 0: Abilities.SHARPNESS, 1: Abilities.SHARPNESS }, - [Species.WYNAUT]: { 0: Abilities.STURDY }, - [Species.WOBBUFFET]: { 0: Abilities.STURDY }, - [Species.SNORUNT]: { 0: Abilities.SNOW_WARNING }, - [Species.GLALIE]: { 0: Abilities.SNOW_WARNING, 1: Abilities.SNOW_WARNING }, - [Species.FROSLASS]: { 0: Abilities.SNOW_WARNING }, - [Species.SPHEAL]: { 0: Abilities.UNAWARE }, - [Species.SEALEO]: { 0: Abilities.UNAWARE }, - [Species.WALREIN]: { 0: Abilities.UNAWARE }, - [Species.CLAMPERL]: { 0: Abilities.DAUNTLESS_SHIELD }, - [Species.GOREBYSS]: { 0: Abilities.ARENA_TRAP }, - [Species.HUNTAIL]: { 0: Abilities.ARENA_TRAP }, - [Species.RELICANTH]: { 0: Abilities.PRIMORDIAL_SEA }, - [Species.LUVDISC]: { 0: Abilities.MULTISCALE }, - [Species.BAGON]: { 0: Abilities.INTIMIDATE }, - [Species.SHELGON]: { 0: Abilities.ANGER_SHELL }, - [Species.SALAMENCE]: { 0: Abilities.GALE_WINGS, 1: Abilities.ROCK_HEAD }, - [Species.BELDUM]: { 0: Abilities.LEVITATE }, - [Species.METANG]: { 0: Abilities.LEVITATE }, - [Species.METAGROSS]: { 0: Abilities.LEVITATE, 1: Abilities.FULL_METAL_BODY }, - [Species.REGIROCK]: { 0: Abilities.SAND_STREAM }, - [Species.REGICE]: { 0: Abilities.SNOW_WARNING }, - [Species.REGISTEEL]: { 0: Abilities.STEELY_SPIRIT }, - [Species.LATIAS]: { 0: Abilities.SPEED_BOOST, 1: Abilities.PRISM_ARMOR }, - [Species.LATIOS]: { 0: Abilities.SPEED_BOOST, 1: Abilities.TINTED_LENS }, - [Species.KYOGRE]: { 0: Abilities.MOLD_BREAKER, 1: Abilities.TERAVOLT }, - [Species.GROUDON]: { 0: Abilities.MOLD_BREAKER, 1: Abilities.TURBOBLAZE }, - [Species.RAYQUAZA]: { 0: Abilities.UNNERVE, 1: Abilities.UNNERVE }, - [Species.JIRACHI]: { 0: Abilities.COMATOSE }, - [Species.DEOXYS]: { 0: Abilities.PROTEAN, 1: Abilities.ADAPTABILITY, 2: Abilities.REGENERATOR, 3: Abilities.SHADOW_SHIELD }, + [SpeciesId.TREECKO]: { 0: AbilityId.TINTED_LENS }, + [SpeciesId.GROVYLE]: { 0: AbilityId.TINTED_LENS }, + [SpeciesId.SCEPTILE]: { 0: AbilityId.TINTED_LENS, 1: AbilityId.TINTED_LENS }, + [SpeciesId.TORCHIC]: { 0: AbilityId.DEFIANT }, + [SpeciesId.COMBUSKEN]: { 0: AbilityId.DEFIANT }, + [SpeciesId.BLAZIKEN]: { 0: AbilityId.DEFIANT, 1: AbilityId.DEFIANT }, + [SpeciesId.MUDKIP]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.MARSHTOMP]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.SWAMPERT]: { 0: AbilityId.REGENERATOR, 1: AbilityId.DRIZZLE }, + [SpeciesId.POOCHYENA]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.MIGHTYENA]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.ZIGZAGOON]: { 0: AbilityId.RUN_AWAY }, + [SpeciesId.LINOONE]: { 0: AbilityId.RUN_AWAY }, + [SpeciesId.WURMPLE]: { 0: AbilityId.GLUTTONY }, + [SpeciesId.SILCOON]: { 0: AbilityId.STURDY }, + [SpeciesId.BEAUTIFLY]: { 0: AbilityId.SIMPLE }, + [SpeciesId.CASCOON]: { 0: AbilityId.STURDY }, + [SpeciesId.DUSTOX]: { 0: AbilityId.SIMPLE }, + [SpeciesId.LOTAD]: { 0: AbilityId.DRIZZLE }, + [SpeciesId.LOMBRE]: { 0: AbilityId.DRIZZLE }, + [SpeciesId.LUDICOLO]: { 0: AbilityId.DRIZZLE }, + [SpeciesId.SEEDOT]: { 0: AbilityId.STURDY }, + [SpeciesId.NUZLEAF]: { 0: AbilityId.SHARPNESS }, + [SpeciesId.SHIFTRY]: { 0: AbilityId.SHARPNESS }, + [SpeciesId.TAILLOW]: { 0: AbilityId.AERILATE }, + [SpeciesId.SWELLOW]: { 0: AbilityId.AERILATE }, + [SpeciesId.WINGULL]: { 0: AbilityId.WATER_ABSORB }, + [SpeciesId.PELIPPER]: { 0: AbilityId.SWIFT_SWIM }, + [SpeciesId.RALTS]: { 0: AbilityId.NEUROFORCE }, + [SpeciesId.KIRLIA]: { 0: AbilityId.NEUROFORCE }, + [SpeciesId.GARDEVOIR]: { 0: AbilityId.NEUROFORCE, 1: AbilityId.PSYCHIC_SURGE }, + [SpeciesId.GALLADE]: { 0: AbilityId.NEUROFORCE, 1: AbilityId.SHARPNESS }, + [SpeciesId.SURSKIT]: { 0: AbilityId.WATER_BUBBLE }, + [SpeciesId.MASQUERAIN]: { 0: AbilityId.WATER_BUBBLE }, + [SpeciesId.SHROOMISH]: { 0: AbilityId.GUTS }, + [SpeciesId.BRELOOM]: { 0: AbilityId.GUTS }, + [SpeciesId.SLAKOTH]: { 0: AbilityId.GUTS }, + [SpeciesId.VIGOROTH]: { 0: AbilityId.GUTS }, + [SpeciesId.SLAKING]: { 0: AbilityId.GUTS }, + [SpeciesId.NINCADA]: { 0: AbilityId.TECHNICIAN }, + [SpeciesId.NINJASK]: { 0: AbilityId.TECHNICIAN }, + [SpeciesId.SHEDINJA]: { 0: AbilityId.MAGIC_GUARD }, + [SpeciesId.WHISMUR]: { 0: AbilityId.PUNK_ROCK }, + [SpeciesId.LOUDRED]: { 0: AbilityId.PUNK_ROCK }, + [SpeciesId.EXPLOUD]: { 0: AbilityId.PUNK_ROCK }, + [SpeciesId.MAKUHITA]: { 0: AbilityId.STAMINA }, + [SpeciesId.HARIYAMA]: { 0: AbilityId.STAMINA }, + [SpeciesId.AZURILL]: { 0: AbilityId.MISTY_SURGE }, + [SpeciesId.MARILL]: { 0: AbilityId.MISTY_SURGE }, + [SpeciesId.AZUMARILL]: { 0: AbilityId.MISTY_SURGE }, + [SpeciesId.NOSEPASS]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.PROBOPASS]: { 0: AbilityId.LEVITATE }, + [SpeciesId.SKITTY]: { 0: AbilityId.SCRAPPY }, + [SpeciesId.DELCATTY]: { 0: AbilityId.SCRAPPY }, + [SpeciesId.SABLEYE]: { 0: AbilityId.UNNERVE, 1: AbilityId.UNNERVE }, + [SpeciesId.MAWILE]: { 0: AbilityId.ADAPTABILITY, 1: AbilityId.INTIMIDATE }, + [SpeciesId.ARON]: { 0: AbilityId.EARTH_EATER }, + [SpeciesId.LAIRON]: { 0: AbilityId.EARTH_EATER }, + [SpeciesId.AGGRON]: { 0: AbilityId.EARTH_EATER, 1: AbilityId.ROCKY_PAYLOAD }, + [SpeciesId.MEDITITE]: { 0: AbilityId.MINDS_EYE }, + [SpeciesId.MEDICHAM]: { 0: AbilityId.MINDS_EYE, 1: AbilityId.MINDS_EYE }, + [SpeciesId.ELECTRIKE]: { 0: AbilityId.BALL_FETCH }, + [SpeciesId.MANECTRIC]: { 0: AbilityId.FLASH_FIRE, 1: AbilityId.FLASH_FIRE }, + [SpeciesId.PLUSLE]: { 0: AbilityId.POWER_SPOT }, + [SpeciesId.MINUN]: { 0: AbilityId.POWER_SPOT }, + [SpeciesId.VOLBEAT]: { 0: AbilityId.HONEY_GATHER }, + [SpeciesId.ILLUMISE]: { 0: AbilityId.HONEY_GATHER }, + [SpeciesId.GULPIN]: { 0: AbilityId.EARTH_EATER }, + [SpeciesId.SWALOT]: { 0: AbilityId.EARTH_EATER }, + [SpeciesId.CARVANHA]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.SHARPEDO]: { 0: AbilityId.SHEER_FORCE, 1: AbilityId.SPEED_BOOST }, + [SpeciesId.WAILMER]: { 0: AbilityId.LEVITATE }, + [SpeciesId.WAILORD]: { 0: AbilityId.LEVITATE }, + [SpeciesId.NUMEL]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.CAMERUPT]: { 0: AbilityId.FUR_COAT, 1: AbilityId.STAMINA }, + [SpeciesId.TORKOAL]: { 0: AbilityId.ANALYTIC }, + [SpeciesId.SPOINK]: { 0: AbilityId.PSYCHIC_SURGE }, + [SpeciesId.GRUMPIG]: { 0: AbilityId.PSYCHIC_SURGE }, + [SpeciesId.SPINDA]: { 0: AbilityId.SIMPLE }, + [SpeciesId.TRAPINCH]: { 0: AbilityId.ADAPTABILITY }, + [SpeciesId.VIBRAVA]: { 0: AbilityId.ADAPTABILITY }, + [SpeciesId.FLYGON]: { 0: AbilityId.ADAPTABILITY }, + [SpeciesId.CACNEA]: { 0: AbilityId.SAND_RUSH }, + [SpeciesId.CACTURNE]: { 0: AbilityId.SAND_RUSH }, + [SpeciesId.SWABLU]: { 0: AbilityId.FLUFFY }, + [SpeciesId.ALTARIA]: { 0: AbilityId.FLUFFY, 1: AbilityId.FLUFFY }, + [SpeciesId.ZANGOOSE]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.SEVIPER]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.LUNATONE]: { 0: AbilityId.SHADOW_SHIELD }, + [SpeciesId.SOLROCK]: { 0: AbilityId.DROUGHT }, + [SpeciesId.BARBOACH]: { 0: AbilityId.SIMPLE }, + [SpeciesId.WHISCASH]: { 0: AbilityId.SIMPLE }, + [SpeciesId.CORPHISH]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.CRAWDAUNT]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.BALTOY]: { 0: AbilityId.WELL_BAKED_BODY }, + [SpeciesId.CLAYDOL]: { 0: AbilityId.WELL_BAKED_BODY }, + [SpeciesId.LILEEP]: { 0: AbilityId.SEED_SOWER }, + [SpeciesId.CRADILY]: { 0: AbilityId.SEED_SOWER }, + [SpeciesId.ANORITH]: { 0: AbilityId.WATER_ABSORB }, + [SpeciesId.ARMALDO]: { 0: AbilityId.WATER_ABSORB }, + [SpeciesId.FEEBAS]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.MILOTIC]: { 0: AbilityId.MAGIC_GUARD }, + [SpeciesId.CASTFORM]: { 0: AbilityId.ADAPTABILITY, 1: AbilityId.ADAPTABILITY, 2: AbilityId.ADAPTABILITY, 3: AbilityId.ADAPTABILITY }, + [SpeciesId.KECLEON]: { 0: AbilityId.ADAPTABILITY }, + [SpeciesId.SHUPPET]: { 0: AbilityId.SHADOW_SHIELD }, + [SpeciesId.BANETTE]: { 0: AbilityId.SHADOW_SHIELD, 1: AbilityId.SHADOW_SHIELD }, + [SpeciesId.DUSKULL]: { 0: AbilityId.UNNERVE }, + [SpeciesId.DUSCLOPS]: { 0: AbilityId.UNNERVE }, + [SpeciesId.DUSKNOIR]: { 0: AbilityId.UNNERVE }, + [SpeciesId.TROPIUS]: { 0: AbilityId.RIPEN }, + [SpeciesId.ABSOL]: { 0: AbilityId.SHARPNESS, 1: AbilityId.SHARPNESS }, + [SpeciesId.WYNAUT]: { 0: AbilityId.STURDY }, + [SpeciesId.WOBBUFFET]: { 0: AbilityId.STURDY }, + [SpeciesId.SNORUNT]: { 0: AbilityId.SNOW_WARNING }, + [SpeciesId.GLALIE]: { 0: AbilityId.SNOW_WARNING, 1: AbilityId.SNOW_WARNING }, + [SpeciesId.FROSLASS]: { 0: AbilityId.SNOW_WARNING }, + [SpeciesId.SPHEAL]: { 0: AbilityId.UNAWARE }, + [SpeciesId.SEALEO]: { 0: AbilityId.UNAWARE }, + [SpeciesId.WALREIN]: { 0: AbilityId.UNAWARE }, + [SpeciesId.CLAMPERL]: { 0: AbilityId.DAUNTLESS_SHIELD }, + [SpeciesId.GOREBYSS]: { 0: AbilityId.ARENA_TRAP }, + [SpeciesId.HUNTAIL]: { 0: AbilityId.ARENA_TRAP }, + [SpeciesId.RELICANTH]: { 0: AbilityId.PRIMORDIAL_SEA }, + [SpeciesId.LUVDISC]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.BAGON]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.SHELGON]: { 0: AbilityId.ANGER_SHELL }, + [SpeciesId.SALAMENCE]: { 0: AbilityId.GALE_WINGS, 1: AbilityId.ROCK_HEAD }, + [SpeciesId.BELDUM]: { 0: AbilityId.LEVITATE }, + [SpeciesId.METANG]: { 0: AbilityId.LEVITATE }, + [SpeciesId.METAGROSS]: { 0: AbilityId.LEVITATE, 1: AbilityId.FULL_METAL_BODY }, + [SpeciesId.REGIROCK]: { 0: AbilityId.SAND_STREAM }, + [SpeciesId.REGICE]: { 0: AbilityId.SNOW_WARNING }, + [SpeciesId.REGISTEEL]: { 0: AbilityId.STEELY_SPIRIT }, + [SpeciesId.LATIAS]: { 0: AbilityId.SPEED_BOOST, 1: AbilityId.PRISM_ARMOR }, + [SpeciesId.LATIOS]: { 0: AbilityId.SPEED_BOOST, 1: AbilityId.TINTED_LENS }, + [SpeciesId.KYOGRE]: { 0: AbilityId.MOLD_BREAKER, 1: AbilityId.TERAVOLT }, + [SpeciesId.GROUDON]: { 0: AbilityId.MOLD_BREAKER, 1: AbilityId.TURBOBLAZE }, + [SpeciesId.RAYQUAZA]: { 0: AbilityId.UNNERVE, 1: AbilityId.UNNERVE }, + [SpeciesId.JIRACHI]: { 0: AbilityId.COMATOSE }, + [SpeciesId.DEOXYS]: { 0: AbilityId.PROTEAN, 1: AbilityId.ADAPTABILITY, 2: AbilityId.REGENERATOR, 3: AbilityId.SHADOW_SHIELD }, - [Species.TURTWIG]: { 0: Abilities.SOLID_ROCK }, - [Species.GROTLE]: { 0: Abilities.SOLID_ROCK }, - [Species.TORTERRA]: { 0: Abilities.THICK_FAT }, - [Species.CHIMCHAR]: { 0: Abilities.UNNERVE }, - [Species.MONFERNO]: { 0: Abilities.BEAST_BOOST }, - [Species.INFERNAPE]: { 0: Abilities.BEAST_BOOST }, - [Species.PIPLUP]: { 0: Abilities.CUTE_CHARM }, - [Species.PRINPLUP]: { 0: Abilities.DRIZZLE }, - [Species.EMPOLEON]: { 0: Abilities.DRIZZLE }, - [Species.STARLY]: { 0: Abilities.INTIMIDATE }, - [Species.STARAVIA]: { 0: Abilities.ROCK_HEAD }, - [Species.STARAPTOR]: { 0: Abilities.ROCK_HEAD }, - [Species.BIDOOF]: { 0: Abilities.SAP_SIPPER }, - [Species.BIBAREL]: { 0: Abilities.SAP_SIPPER }, - [Species.KRICKETOT]: { 0: Abilities.HONEY_GATHER }, - [Species.KRICKETUNE]: { 0: Abilities.SHARPNESS }, - [Species.SHINX]: { 0: Abilities.SPEED_BOOST }, - [Species.LUXIO]: { 0: Abilities.SPEED_BOOST }, - [Species.LUXRAY]: { 0: Abilities.SPEED_BOOST }, - [Species.BUDEW]: { 0: Abilities.SEED_SOWER }, - [Species.ROSELIA]: { 0: Abilities.GRASSY_SURGE }, - [Species.ROSERADE]: { 0: Abilities.GRASSY_SURGE }, - [Species.CRANIDOS]: { 0: Abilities.ROCK_HEAD }, - [Species.RAMPARDOS]: { 0: Abilities.ROCK_HEAD }, - [Species.SHIELDON]: { 0: Abilities.EARTH_EATER }, - [Species.BASTIODON]: { 0: Abilities.EARTH_EATER }, - [Species.BURMY]: { 0: Abilities.STURDY, 1: Abilities.STURDY, 2: Abilities.STURDY }, - [Species.WORMADAM]: { 0: Abilities.STURDY, 1: Abilities.STURDY, 2: Abilities.STURDY }, - [Species.MOTHIM]: { 0: Abilities.SPEED_BOOST }, - [Species.COMBEE]: { 0: Abilities.RUN_AWAY }, - [Species.VESPIQUEN]: { 0: Abilities.INTIMIDATE }, - [Species.PACHIRISU]: { 0: Abilities.HONEY_GATHER }, - [Species.BUIZEL]: { 0: Abilities.MOXIE }, - [Species.FLOATZEL]: { 0: Abilities.MOXIE }, - [Species.CHERUBI]: { 0: Abilities.DROUGHT }, - [Species.CHERRIM]: { 0: Abilities.ORICHALCUM_PULSE, 1: Abilities.ORICHALCUM_PULSE }, - [Species.SHELLOS]: { 0: Abilities.REGENERATOR, 1: Abilities.REGENERATOR }, - [Species.GASTRODON]: { 0: Abilities.REGENERATOR, 1: Abilities.REGENERATOR }, - [Species.DRIFLOON]: { 0: Abilities.MAGIC_GUARD }, - [Species.DRIFBLIM]: { 0: Abilities.MAGIC_GUARD }, - [Species.BUNEARY]: { 0: Abilities.ADAPTABILITY }, - [Species.LOPUNNY]: { 0: Abilities.ADAPTABILITY, 1: Abilities.ADAPTABILITY }, - [Species.GLAMEOW]: { 0: Abilities.INTIMIDATE }, - [Species.PURUGLY]: { 0: Abilities.INTIMIDATE }, - [Species.CHINGLING]: { 0: Abilities.PUNK_ROCK }, - [Species.CHIMECHO]: { 0: Abilities.PUNK_ROCK }, - [Species.STUNKY]: { 0: Abilities.NEUTRALIZING_GAS }, - [Species.SKUNTANK]: { 0: Abilities.NEUTRALIZING_GAS }, - [Species.BRONZOR]: { 0: Abilities.MIRROR_ARMOR }, - [Species.BRONZONG]: { 0: Abilities.MIRROR_ARMOR }, - [Species.BONSLY]: { 0: Abilities.SAP_SIPPER }, - [Species.SUDOWOODO]: { 0: Abilities.SAP_SIPPER }, - [Species.MIME_JR]: { 0: Abilities.PRANKSTER }, - [Species.MR_MIME]: { 0: Abilities.PRANKSTER }, - [Species.GALAR_MR_MIME]: { 0: Abilities.PRANKSTER }, - [Species.MR_RIME]: { 0: Abilities.PRANKSTER }, - [Species.HAPPINY]: { 0: Abilities.HOSPITALITY }, - [Species.CHANSEY]: { 0: Abilities.FRIEND_GUARD }, - [Species.BLISSEY]: { 0: Abilities.FUR_COAT }, - [Species.CHATOT]: { 0: Abilities.PUNK_ROCK }, - [Species.SPIRITOMB]: { 0: Abilities.VESSEL_OF_RUIN }, - [Species.GIBLE]: { 0: Abilities.ARENA_TRAP }, - [Species.GABITE]: { 0: Abilities.ARENA_TRAP }, - [Species.GARCHOMP]: { 0: Abilities.ARENA_TRAP, 1: Abilities.SAND_RUSH }, - [Species.MUNCHLAX]: { 0: Abilities.CHEEK_POUCH }, - [Species.SNORLAX]: { 0: Abilities.CHEEK_POUCH, 1: Abilities.RIPEN }, - [Species.RIOLU]: { 0: Abilities.MINDS_EYE }, - [Species.LUCARIO]: { 0: Abilities.MINDS_EYE, 1: Abilities.MINDS_EYE }, - [Species.HIPPOPOTAS]: { 0: Abilities.UNAWARE }, - [Species.HIPPOWDON]: { 0: Abilities.UNAWARE }, - [Species.SKORUPI]: { 0: Abilities.SUPER_LUCK }, - [Species.DRAPION]: { 0: Abilities.SUPER_LUCK }, - [Species.CROAGUNK]: { 0: Abilities.MOXIE }, - [Species.TOXICROAK]: { 0: Abilities.MOXIE }, - [Species.CARNIVINE]: { 0: Abilities.ARENA_TRAP }, - [Species.FINNEON]: { 0: Abilities.WATER_BUBBLE }, - [Species.LUMINEON]: { 0: Abilities.WATER_BUBBLE }, - [Species.MANTYKE]: { 0: Abilities.UNAWARE }, - [Species.MANTINE]: { 0: Abilities.UNAWARE }, - [Species.SNOVER]: { 0: Abilities.SLUSH_RUSH }, - [Species.ABOMASNOW]: { 0: Abilities.SLUSH_RUSH, 1: Abilities.SEED_SOWER }, - [Species.ROTOM]: { 0: Abilities.HADRON_ENGINE, 1: Abilities.HADRON_ENGINE, 2: Abilities.HADRON_ENGINE, 3: Abilities.HADRON_ENGINE, 4: Abilities.HADRON_ENGINE, 5: Abilities.HADRON_ENGINE }, - [Species.UXIE]: { 0: Abilities.ILLUSION }, - [Species.MESPRIT]: { 0: Abilities.MOODY }, - [Species.AZELF]: { 0: Abilities.NEUROFORCE }, - [Species.DIALGA]: { 0: Abilities.BERSERK, 1: Abilities.BERSERK }, - [Species.PALKIA]: { 0: Abilities.BERSERK, 1: Abilities.BERSERK }, - [Species.HEATRAN]: { 0: Abilities.EARTH_EATER }, - [Species.REGIGIGAS]: { 0: Abilities.SCRAPPY }, - [Species.GIRATINA]: { 0: Abilities.SHADOW_SHIELD, 1: Abilities.SHADOW_SHIELD }, - [Species.CRESSELIA]: { 0: Abilities.SHADOW_SHIELD }, - [Species.PHIONE]: { 0: Abilities.SIMPLE }, - [Species.MANAPHY]: { 0: Abilities.PRIMORDIAL_SEA }, - [Species.DARKRAI]: { 0: Abilities.UNNERVE }, - [Species.SHAYMIN]: { 0: Abilities.GRASSY_SURGE, 1: Abilities.DELTA_STREAM }, - [Species.ARCEUS]: { 0: Abilities.ADAPTABILITY, 1: Abilities.ADAPTABILITY, 2: Abilities.ADAPTABILITY, 3: Abilities.ADAPTABILITY, 4: Abilities.ADAPTABILITY, 5: Abilities.ADAPTABILITY, 6: Abilities.ADAPTABILITY, 7: Abilities.ADAPTABILITY, 8: Abilities.ADAPTABILITY, 9: Abilities.ADAPTABILITY, 10: Abilities.ADAPTABILITY, 11: Abilities.ADAPTABILITY, 12: Abilities.ADAPTABILITY, 13: Abilities.ADAPTABILITY, 14: Abilities.ADAPTABILITY, 15: Abilities.ADAPTABILITY, 16: Abilities.ADAPTABILITY, 17: Abilities.ADAPTABILITY }, + [SpeciesId.TURTWIG]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.GROTLE]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.TORTERRA]: { 0: AbilityId.THICK_FAT }, + [SpeciesId.CHIMCHAR]: { 0: AbilityId.UNNERVE }, + [SpeciesId.MONFERNO]: { 0: AbilityId.BEAST_BOOST }, + [SpeciesId.INFERNAPE]: { 0: AbilityId.BEAST_BOOST }, + [SpeciesId.PIPLUP]: { 0: AbilityId.CUTE_CHARM }, + [SpeciesId.PRINPLUP]: { 0: AbilityId.DRIZZLE }, + [SpeciesId.EMPOLEON]: { 0: AbilityId.DRIZZLE }, + [SpeciesId.STARLY]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.STARAVIA]: { 0: AbilityId.ROCK_HEAD }, + [SpeciesId.STARAPTOR]: { 0: AbilityId.ROCK_HEAD }, + [SpeciesId.BIDOOF]: { 0: AbilityId.SAP_SIPPER }, + [SpeciesId.BIBAREL]: { 0: AbilityId.SAP_SIPPER }, + [SpeciesId.KRICKETOT]: { 0: AbilityId.HONEY_GATHER }, + [SpeciesId.KRICKETUNE]: { 0: AbilityId.SHARPNESS }, + [SpeciesId.SHINX]: { 0: AbilityId.SPEED_BOOST }, + [SpeciesId.LUXIO]: { 0: AbilityId.SPEED_BOOST }, + [SpeciesId.LUXRAY]: { 0: AbilityId.SPEED_BOOST }, + [SpeciesId.BUDEW]: { 0: AbilityId.SEED_SOWER }, + [SpeciesId.ROSELIA]: { 0: AbilityId.GRASSY_SURGE }, + [SpeciesId.ROSERADE]: { 0: AbilityId.GRASSY_SURGE }, + [SpeciesId.CRANIDOS]: { 0: AbilityId.ROCK_HEAD }, + [SpeciesId.RAMPARDOS]: { 0: AbilityId.ROCK_HEAD }, + [SpeciesId.SHIELDON]: { 0: AbilityId.EARTH_EATER }, + [SpeciesId.BASTIODON]: { 0: AbilityId.EARTH_EATER }, + [SpeciesId.BURMY]: { 0: AbilityId.STURDY, 1: AbilityId.STURDY, 2: AbilityId.STURDY }, + [SpeciesId.WORMADAM]: { 0: AbilityId.STURDY, 1: AbilityId.STURDY, 2: AbilityId.STURDY }, + [SpeciesId.MOTHIM]: { 0: AbilityId.SPEED_BOOST }, + [SpeciesId.COMBEE]: { 0: AbilityId.RUN_AWAY }, + [SpeciesId.VESPIQUEN]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.PACHIRISU]: { 0: AbilityId.HONEY_GATHER }, + [SpeciesId.BUIZEL]: { 0: AbilityId.MOXIE }, + [SpeciesId.FLOATZEL]: { 0: AbilityId.MOXIE }, + [SpeciesId.CHERUBI]: { 0: AbilityId.DROUGHT }, + [SpeciesId.CHERRIM]: { 0: AbilityId.ORICHALCUM_PULSE, 1: AbilityId.ORICHALCUM_PULSE }, + [SpeciesId.SHELLOS]: { 0: AbilityId.REGENERATOR, 1: AbilityId.REGENERATOR }, + [SpeciesId.GASTRODON]: { 0: AbilityId.REGENERATOR, 1: AbilityId.REGENERATOR }, + [SpeciesId.DRIFLOON]: { 0: AbilityId.MAGIC_GUARD }, + [SpeciesId.DRIFBLIM]: { 0: AbilityId.MAGIC_GUARD }, + [SpeciesId.BUNEARY]: { 0: AbilityId.ADAPTABILITY }, + [SpeciesId.LOPUNNY]: { 0: AbilityId.ADAPTABILITY, 1: AbilityId.ADAPTABILITY }, + [SpeciesId.GLAMEOW]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.PURUGLY]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.CHINGLING]: { 0: AbilityId.PUNK_ROCK }, + [SpeciesId.CHIMECHO]: { 0: AbilityId.PUNK_ROCK }, + [SpeciesId.STUNKY]: { 0: AbilityId.NEUTRALIZING_GAS }, + [SpeciesId.SKUNTANK]: { 0: AbilityId.NEUTRALIZING_GAS }, + [SpeciesId.BRONZOR]: { 0: AbilityId.MIRROR_ARMOR }, + [SpeciesId.BRONZONG]: { 0: AbilityId.MIRROR_ARMOR }, + [SpeciesId.BONSLY]: { 0: AbilityId.SAP_SIPPER }, + [SpeciesId.SUDOWOODO]: { 0: AbilityId.SAP_SIPPER }, + [SpeciesId.MIME_JR]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.MR_MIME]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.GALAR_MR_MIME]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.MR_RIME]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.HAPPINY]: { 0: AbilityId.HOSPITALITY }, + [SpeciesId.CHANSEY]: { 0: AbilityId.FRIEND_GUARD }, + [SpeciesId.BLISSEY]: { 0: AbilityId.FUR_COAT }, + [SpeciesId.CHATOT]: { 0: AbilityId.PUNK_ROCK }, + [SpeciesId.SPIRITOMB]: { 0: AbilityId.VESSEL_OF_RUIN }, + [SpeciesId.GIBLE]: { 0: AbilityId.ARENA_TRAP }, + [SpeciesId.GABITE]: { 0: AbilityId.ARENA_TRAP }, + [SpeciesId.GARCHOMP]: { 0: AbilityId.ARENA_TRAP, 1: AbilityId.SAND_RUSH }, + [SpeciesId.MUNCHLAX]: { 0: AbilityId.CHEEK_POUCH }, + [SpeciesId.SNORLAX]: { 0: AbilityId.CHEEK_POUCH, 1: AbilityId.RIPEN }, + [SpeciesId.RIOLU]: { 0: AbilityId.MINDS_EYE }, + [SpeciesId.LUCARIO]: { 0: AbilityId.MINDS_EYE, 1: AbilityId.MINDS_EYE }, + [SpeciesId.HIPPOPOTAS]: { 0: AbilityId.UNAWARE }, + [SpeciesId.HIPPOWDON]: { 0: AbilityId.UNAWARE }, + [SpeciesId.SKORUPI]: { 0: AbilityId.SUPER_LUCK }, + [SpeciesId.DRAPION]: { 0: AbilityId.SUPER_LUCK }, + [SpeciesId.CROAGUNK]: { 0: AbilityId.MOXIE }, + [SpeciesId.TOXICROAK]: { 0: AbilityId.MOXIE }, + [SpeciesId.CARNIVINE]: { 0: AbilityId.ARENA_TRAP }, + [SpeciesId.FINNEON]: { 0: AbilityId.WATER_BUBBLE }, + [SpeciesId.LUMINEON]: { 0: AbilityId.WATER_BUBBLE }, + [SpeciesId.MANTYKE]: { 0: AbilityId.UNAWARE }, + [SpeciesId.MANTINE]: { 0: AbilityId.UNAWARE }, + [SpeciesId.SNOVER]: { 0: AbilityId.SLUSH_RUSH }, + [SpeciesId.ABOMASNOW]: { 0: AbilityId.SLUSH_RUSH, 1: AbilityId.SEED_SOWER }, + [SpeciesId.ROTOM]: { 0: AbilityId.HADRON_ENGINE, 1: AbilityId.HADRON_ENGINE, 2: AbilityId.HADRON_ENGINE, 3: AbilityId.HADRON_ENGINE, 4: AbilityId.HADRON_ENGINE, 5: AbilityId.HADRON_ENGINE }, + [SpeciesId.UXIE]: { 0: AbilityId.ILLUSION }, + [SpeciesId.MESPRIT]: { 0: AbilityId.MOODY }, + [SpeciesId.AZELF]: { 0: AbilityId.NEUROFORCE }, + [SpeciesId.DIALGA]: { 0: AbilityId.BERSERK, 1: AbilityId.BERSERK }, + [SpeciesId.PALKIA]: { 0: AbilityId.BERSERK, 1: AbilityId.BERSERK }, + [SpeciesId.HEATRAN]: { 0: AbilityId.EARTH_EATER }, + [SpeciesId.REGIGIGAS]: { 0: AbilityId.SCRAPPY }, + [SpeciesId.GIRATINA]: { 0: AbilityId.SHADOW_SHIELD, 1: AbilityId.SHADOW_SHIELD }, + [SpeciesId.CRESSELIA]: { 0: AbilityId.SHADOW_SHIELD }, + [SpeciesId.PHIONE]: { 0: AbilityId.SIMPLE }, + [SpeciesId.MANAPHY]: { 0: AbilityId.PRIMORDIAL_SEA }, + [SpeciesId.DARKRAI]: { 0: AbilityId.UNNERVE }, + [SpeciesId.SHAYMIN]: { 0: AbilityId.GRASSY_SURGE, 1: AbilityId.DELTA_STREAM }, + [SpeciesId.ARCEUS]: { 0: AbilityId.ADAPTABILITY, 1: AbilityId.ADAPTABILITY, 2: AbilityId.ADAPTABILITY, 3: AbilityId.ADAPTABILITY, 4: AbilityId.ADAPTABILITY, 5: AbilityId.ADAPTABILITY, 6: AbilityId.ADAPTABILITY, 7: AbilityId.ADAPTABILITY, 8: AbilityId.ADAPTABILITY, 9: AbilityId.ADAPTABILITY, 10: AbilityId.ADAPTABILITY, 11: AbilityId.ADAPTABILITY, 12: AbilityId.ADAPTABILITY, 13: AbilityId.ADAPTABILITY, 14: AbilityId.ADAPTABILITY, 15: AbilityId.ADAPTABILITY, 16: AbilityId.ADAPTABILITY, 17: AbilityId.ADAPTABILITY }, - [Species.VICTINI]: { 0: Abilities.SHEER_FORCE }, - [Species.SNIVY]: { 0: Abilities.MULTISCALE }, - [Species.SERVINE]: { 0: Abilities.MULTISCALE }, - [Species.SERPERIOR]: { 0: Abilities.MULTISCALE }, - [Species.TEPIG]: { 0: Abilities.GLUTTONY }, - [Species.PIGNITE]: { 0: Abilities.ROCK_HEAD }, - [Species.EMBOAR]: { 0: Abilities.ROCK_HEAD }, - [Species.OSHAWOTT]: { 0: Abilities.MOLD_BREAKER }, - [Species.DEWOTT]: { 0: Abilities.MOLD_BREAKER }, - [Species.SAMUROTT]: { 0: Abilities.LIGHTNING_ROD }, - [Species.HISUI_SAMUROTT]: { 0: Abilities.MOLD_BREAKER }, - [Species.PATRAT]: { 0: Abilities.NO_GUARD }, - [Species.WATCHOG]: { 0: Abilities.NO_GUARD }, - [Species.LILLIPUP]: { 0: Abilities.BALL_FETCH }, - [Species.HERDIER]: { 0: Abilities.FUR_COAT }, - [Species.STOUTLAND]: { 0: Abilities.FUR_COAT }, - [Species.PURRLOIN]: { 0: Abilities.PICKUP }, - [Species.LIEPARD]: { 0: Abilities.PICKUP }, - [Species.PANSAGE]: { 0: Abilities.WELL_BAKED_BODY }, - [Species.SIMISAGE]: { 0: Abilities.WELL_BAKED_BODY }, - [Species.PANSEAR]: { 0: Abilities.WATER_ABSORB }, - [Species.SIMISEAR]: { 0: Abilities.WATER_ABSORB }, - [Species.PANPOUR]: { 0: Abilities.SAP_SIPPER }, - [Species.SIMIPOUR]: { 0: Abilities.SAP_SIPPER }, - [Species.MUNNA]: { 0: Abilities.NEUTRALIZING_GAS }, - [Species.MUSHARNA]: { 0: Abilities.NEUTRALIZING_GAS }, - [Species.PIDOVE]: { 0: Abilities.SNIPER }, - [Species.TRANQUILL]: { 0: Abilities.SNIPER }, - [Species.UNFEZANT]: { 0: Abilities.SNIPER }, - [Species.BLITZLE]: { 0: Abilities.ELECTRIC_SURGE }, - [Species.ZEBSTRIKA]: { 0: Abilities.ELECTRIC_SURGE }, - [Species.ROGGENROLA]: { 0: Abilities.SOLID_ROCK }, - [Species.BOLDORE]: { 0: Abilities.SOLID_ROCK }, - [Species.GIGALITH]: { 0: Abilities.SOLID_ROCK }, - [Species.WOOBAT]: { 0: Abilities.OPPORTUNIST }, - [Species.SWOOBAT]: { 0: Abilities.OPPORTUNIST }, - [Species.DRILBUR]: { 0: Abilities.STURDY }, - [Species.EXCADRILL]: { 0: Abilities.STURDY }, - [Species.AUDINO]: { 0: Abilities.FRIEND_GUARD, 1: Abilities.FAIRY_AURA }, - [Species.TIMBURR]: { 0: Abilities.ROCKY_PAYLOAD }, - [Species.GURDURR]: { 0: Abilities.ROCKY_PAYLOAD }, - [Species.CONKELDURR]: { 0: Abilities.ROCKY_PAYLOAD }, - [Species.TYMPOLE]: { 0: Abilities.POISON_HEAL }, - [Species.PALPITOAD]: { 0: Abilities.POISON_HEAL }, - [Species.SEISMITOAD]: { 0: Abilities.POISON_HEAL }, - [Species.THROH]: { 0: Abilities.STAMINA }, - [Species.SAWK]: { 0: Abilities.SCRAPPY }, - [Species.SEWADDLE]: { 0: Abilities.SHIELD_DUST }, - [Species.SWADLOON]: { 0: Abilities.SHIELD_DUST }, - [Species.LEAVANNY]: { 0: Abilities.SHARPNESS }, - [Species.VENIPEDE]: { 0: Abilities.STAMINA }, - [Species.WHIRLIPEDE]: { 0: Abilities.STAMINA }, - [Species.SCOLIPEDE]: { 0: Abilities.STAMINA }, - [Species.COTTONEE]: { 0: Abilities.FLUFFY }, - [Species.WHIMSICOTT]: { 0: Abilities.FLUFFY }, - [Species.PETILIL]: { 0: Abilities.FLOWER_VEIL }, - [Species.LILLIGANT]: { 0: Abilities.GRASSY_SURGE }, - [Species.HISUI_LILLIGANT]: { 0: Abilities.FLOWER_VEIL }, - [Species.BASCULIN]: { 0: Abilities.ROCK_HEAD, 1: Abilities.RECKLESS, 2: Abilities.SUPREME_OVERLORD }, - [Species.BASCULEGION]: { 0: Abilities.SUPREME_OVERLORD, 1: Abilities.SUPREME_OVERLORD }, - [Species.SANDILE]: { 0: Abilities.TOUGH_CLAWS }, - [Species.KROKOROK]: { 0: Abilities.TOUGH_CLAWS }, - [Species.KROOKODILE]: { 0: Abilities.TOUGH_CLAWS }, - [Species.DARUMAKA]: { 0: Abilities.GORILLA_TACTICS }, - [Species.DARMANITAN]: { 0: Abilities.GORILLA_TACTICS, 1: Abilities.SOLID_ROCK }, - [Species.MARACTUS]: { 0: Abilities.WELL_BAKED_BODY }, - [Species.DWEBBLE]: { 0: Abilities.ROCKY_PAYLOAD }, - [Species.CRUSTLE]: { 0: Abilities.ROCKY_PAYLOAD }, - [Species.SCRAGGY]: { 0: Abilities.PROTEAN }, - [Species.SCRAFTY]: { 0: Abilities.PROTEAN }, - [Species.SIGILYPH]: { 0: Abilities.FLARE_BOOST }, - [Species.YAMASK]: { 0: Abilities.PURIFYING_SALT }, - [Species.COFAGRIGUS]: { 0: Abilities.PURIFYING_SALT }, - [Species.TIRTOUGA]: { 0: Abilities.WATER_ABSORB }, - [Species.CARRACOSTA]: { 0: Abilities.WATER_ABSORB }, - [Species.ARCHEN]: { 0: Abilities.MULTISCALE }, - [Species.ARCHEOPS]: { 0: Abilities.MULTISCALE }, - [Species.TRUBBISH]: { 0: Abilities.NEUTRALIZING_GAS }, - [Species.GARBODOR]: { 0: Abilities.NEUTRALIZING_GAS, 1: Abilities.NEUTRALIZING_GAS }, - [Species.ZORUA]: { 0: Abilities.ADAPTABILITY }, - [Species.ZOROARK]: { 0: Abilities.ADAPTABILITY }, - [Species.MINCCINO]: { 0: Abilities.FUR_COAT }, - [Species.CINCCINO]: { 0: Abilities.FUR_COAT }, - [Species.GOTHITA]: { 0: Abilities.UNNERVE }, - [Species.GOTHORITA]: { 0: Abilities.UNNERVE }, - [Species.GOTHITELLE]: { 0: Abilities.UNNERVE }, - [Species.SOLOSIS]: { 0: Abilities.PSYCHIC_SURGE }, - [Species.DUOSION]: { 0: Abilities.PSYCHIC_SURGE }, - [Species.REUNICLUS]: { 0: Abilities.PSYCHIC_SURGE }, - [Species.DUCKLETT]: { 0: Abilities.DRIZZLE }, - [Species.SWANNA]: { 0: Abilities.DRIZZLE }, - [Species.VANILLITE]: { 0: Abilities.REFRIGERATE }, - [Species.VANILLISH]: { 0: Abilities.REFRIGERATE }, - [Species.VANILLUXE]: { 0: Abilities.SLUSH_RUSH }, - [Species.DEERLING]: { 0: Abilities.FLOWER_VEIL, 1: Abilities.CUD_CHEW, 2: Abilities.HARVEST, 3: Abilities.FUR_COAT }, - [Species.SAWSBUCK]: { 0: Abilities.FLOWER_VEIL, 1: Abilities.CUD_CHEW, 2: Abilities.HARVEST, 3: Abilities.FUR_COAT }, - [Species.EMOLGA]: { 0: Abilities.SERENE_GRACE }, - [Species.KARRABLAST]: { 0: Abilities.QUICK_DRAW }, - [Species.ESCAVALIER]: { 0: Abilities.QUICK_DRAW }, - [Species.FOONGUS]: { 0: Abilities.MYCELIUM_MIGHT }, - [Species.AMOONGUSS]: { 0: Abilities.THICK_FAT }, - [Species.FRILLISH]: { 0: Abilities.POISON_HEAL }, - [Species.JELLICENT]: { 0: Abilities.POISON_HEAL }, - [Species.ALOMOMOLA]: { 0: Abilities.MULTISCALE }, - [Species.JOLTIK]: { 0: Abilities.TRANSISTOR }, - [Species.GALVANTULA]: { 0: Abilities.TRANSISTOR }, - [Species.FERROSEED]: { 0: Abilities.ROUGH_SKIN }, - [Species.FERROTHORN]: { 0: Abilities.ROUGH_SKIN }, - [Species.KLINK]: { 0: Abilities.STEELY_SPIRIT }, - [Species.KLANG]: { 0: Abilities.STEELY_SPIRIT }, - [Species.KLINKLANG]: { 0: Abilities.STEELY_SPIRIT }, - [Species.TYNAMO]: { 0: Abilities.POISON_HEAL }, - [Species.EELEKTRIK]: { 0: Abilities.POISON_HEAL }, - [Species.EELEKTROSS]: { 0: Abilities.POISON_HEAL }, - [Species.ELGYEM]: { 0: Abilities.BEADS_OF_RUIN }, - [Species.BEHEEYEM]: { 0: Abilities.BEADS_OF_RUIN }, - [Species.LITWICK]: { 0: Abilities.SHADOW_TAG }, - [Species.LAMPENT]: { 0: Abilities.SHADOW_TAG }, - [Species.CHANDELURE]: { 0: Abilities.SHADOW_TAG }, - [Species.AXEW]: { 0: Abilities.DRAGONS_MAW }, - [Species.FRAXURE]: { 0: Abilities.DRAGONS_MAW }, - [Species.HAXORUS]: { 0: Abilities.DRAGONS_MAW }, - [Species.CUBCHOO]: { 0: Abilities.FUR_COAT }, - [Species.BEARTIC]: { 0: Abilities.FUR_COAT }, - [Species.CRYOGONAL]: { 0: Abilities.SNOW_WARNING }, - [Species.SHELMET]: { 0: Abilities.STAMINA }, - [Species.ACCELGOR]: { 0: Abilities.PROTEAN }, - [Species.STUNFISK]: { 0: Abilities.STORM_DRAIN }, - [Species.MIENFOO]: { 0: Abilities.NO_GUARD }, - [Species.MIENSHAO]: { 0: Abilities.NO_GUARD }, - [Species.DRUDDIGON]: { 0: Abilities.INTIMIDATE }, - [Species.GOLETT]: { 0: Abilities.SHADOW_SHIELD }, - [Species.GOLURK]: { 0: Abilities.SHADOW_SHIELD }, - [Species.PAWNIARD]: { 0: Abilities.SWORD_OF_RUIN }, - [Species.BISHARP]: { 0: Abilities.SWORD_OF_RUIN }, - [Species.KINGAMBIT]: { 0: Abilities.SWORD_OF_RUIN }, - [Species.BOUFFALANT]: { 0: Abilities.ROCK_HEAD }, - [Species.RUFFLET]: { 0: Abilities.SPEED_BOOST }, - [Species.BRAVIARY]: { 0: Abilities.SPEED_BOOST }, - [Species.HISUI_BRAVIARY]: { 0: Abilities.SPEED_BOOST }, - [Species.VULLABY]: { 0: Abilities.THICK_FAT }, - [Species.MANDIBUZZ]: { 0: Abilities.THICK_FAT }, - [Species.HEATMOR]: { 0: Abilities.CONTRARY }, - [Species.DURANT]: { 0: Abilities.COMPOUND_EYES }, - [Species.DEINO]: { 0: Abilities.NO_GUARD }, - [Species.ZWEILOUS]: { 0: Abilities.NO_GUARD }, - [Species.HYDREIGON]: { 0: Abilities.PARENTAL_BOND }, - [Species.LARVESTA]: { 0: Abilities.FLASH_FIRE }, - [Species.VOLCARONA]: { 0: Abilities.DROUGHT }, - [Species.COBALION]: { 0: Abilities.INTREPID_SWORD }, - [Species.TERRAKION]: { 0: Abilities.ROCKY_PAYLOAD }, - [Species.VIRIZION]: { 0: Abilities.SHARPNESS }, - [Species.TORNADUS]: { 0: Abilities.DRIZZLE, 1: Abilities.DRIZZLE }, - [Species.THUNDURUS]: { 0: Abilities.DRIZZLE, 1: Abilities.DRIZZLE }, - [Species.RESHIRAM]: { 0: Abilities.ORICHALCUM_PULSE }, - [Species.ZEKROM]: { 0: Abilities.HADRON_ENGINE }, - [Species.LANDORUS]: { 0: Abilities.STORM_DRAIN, 1: Abilities.STORM_DRAIN }, - [Species.KYUREM]: { 0: Abilities.SNOW_WARNING, 1: Abilities.HADRON_ENGINE, 2: Abilities.ORICHALCUM_PULSE }, - [Species.KELDEO]: { 0: Abilities.GRIM_NEIGH, 1: Abilities.GRIM_NEIGH }, - [Species.MELOETTA]: { 0: Abilities.PUNK_ROCK, 1: Abilities.SCRAPPY }, - [Species.GENESECT]: { 0: Abilities.PROTEAN, 1: Abilities.PROTEAN, 2: Abilities.PROTEAN, 3: Abilities.PROTEAN, 4: Abilities.PROTEAN }, + [SpeciesId.VICTINI]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.SNIVY]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.SERVINE]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.SERPERIOR]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.TEPIG]: { 0: AbilityId.GLUTTONY }, + [SpeciesId.PIGNITE]: { 0: AbilityId.ROCK_HEAD }, + [SpeciesId.EMBOAR]: { 0: AbilityId.ROCK_HEAD }, + [SpeciesId.OSHAWOTT]: { 0: AbilityId.MOLD_BREAKER }, + [SpeciesId.DEWOTT]: { 0: AbilityId.MOLD_BREAKER }, + [SpeciesId.SAMUROTT]: { 0: AbilityId.LIGHTNING_ROD }, + [SpeciesId.HISUI_SAMUROTT]: { 0: AbilityId.MOLD_BREAKER }, + [SpeciesId.PATRAT]: { 0: AbilityId.NO_GUARD }, + [SpeciesId.WATCHOG]: { 0: AbilityId.NO_GUARD }, + [SpeciesId.LILLIPUP]: { 0: AbilityId.BALL_FETCH }, + [SpeciesId.HERDIER]: { 0: AbilityId.FUR_COAT }, + [SpeciesId.STOUTLAND]: { 0: AbilityId.FUR_COAT }, + [SpeciesId.PURRLOIN]: { 0: AbilityId.PICKUP }, + [SpeciesId.LIEPARD]: { 0: AbilityId.PICKUP }, + [SpeciesId.PANSAGE]: { 0: AbilityId.WELL_BAKED_BODY }, + [SpeciesId.SIMISAGE]: { 0: AbilityId.WELL_BAKED_BODY }, + [SpeciesId.PANSEAR]: { 0: AbilityId.WATER_ABSORB }, + [SpeciesId.SIMISEAR]: { 0: AbilityId.WATER_ABSORB }, + [SpeciesId.PANPOUR]: { 0: AbilityId.SAP_SIPPER }, + [SpeciesId.SIMIPOUR]: { 0: AbilityId.SAP_SIPPER }, + [SpeciesId.MUNNA]: { 0: AbilityId.NEUTRALIZING_GAS }, + [SpeciesId.MUSHARNA]: { 0: AbilityId.NEUTRALIZING_GAS }, + [SpeciesId.PIDOVE]: { 0: AbilityId.SNIPER }, + [SpeciesId.TRANQUILL]: { 0: AbilityId.SNIPER }, + [SpeciesId.UNFEZANT]: { 0: AbilityId.SNIPER }, + [SpeciesId.BLITZLE]: { 0: AbilityId.ELECTRIC_SURGE }, + [SpeciesId.ZEBSTRIKA]: { 0: AbilityId.ELECTRIC_SURGE }, + [SpeciesId.ROGGENROLA]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.BOLDORE]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.GIGALITH]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.WOOBAT]: { 0: AbilityId.OPPORTUNIST }, + [SpeciesId.SWOOBAT]: { 0: AbilityId.OPPORTUNIST }, + [SpeciesId.DRILBUR]: { 0: AbilityId.STURDY }, + [SpeciesId.EXCADRILL]: { 0: AbilityId.STURDY }, + [SpeciesId.AUDINO]: { 0: AbilityId.FRIEND_GUARD, 1: AbilityId.FAIRY_AURA }, + [SpeciesId.TIMBURR]: { 0: AbilityId.ROCKY_PAYLOAD }, + [SpeciesId.GURDURR]: { 0: AbilityId.ROCKY_PAYLOAD }, + [SpeciesId.CONKELDURR]: { 0: AbilityId.ROCKY_PAYLOAD }, + [SpeciesId.TYMPOLE]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.PALPITOAD]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.SEISMITOAD]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.THROH]: { 0: AbilityId.STAMINA }, + [SpeciesId.SAWK]: { 0: AbilityId.SCRAPPY }, + [SpeciesId.SEWADDLE]: { 0: AbilityId.SHIELD_DUST }, + [SpeciesId.SWADLOON]: { 0: AbilityId.SHIELD_DUST }, + [SpeciesId.LEAVANNY]: { 0: AbilityId.SHARPNESS }, + [SpeciesId.VENIPEDE]: { 0: AbilityId.STAMINA }, + [SpeciesId.WHIRLIPEDE]: { 0: AbilityId.STAMINA }, + [SpeciesId.SCOLIPEDE]: { 0: AbilityId.STAMINA }, + [SpeciesId.COTTONEE]: { 0: AbilityId.FLUFFY }, + [SpeciesId.WHIMSICOTT]: { 0: AbilityId.FLUFFY }, + [SpeciesId.PETILIL]: { 0: AbilityId.FLOWER_VEIL }, + [SpeciesId.LILLIGANT]: { 0: AbilityId.GRASSY_SURGE }, + [SpeciesId.HISUI_LILLIGANT]: { 0: AbilityId.FLOWER_VEIL }, + [SpeciesId.BASCULIN]: { 0: AbilityId.ROCK_HEAD, 1: AbilityId.RECKLESS, 2: AbilityId.SUPREME_OVERLORD }, + [SpeciesId.BASCULEGION]: { 0: AbilityId.SUPREME_OVERLORD, 1: AbilityId.SUPREME_OVERLORD }, + [SpeciesId.SANDILE]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.KROKOROK]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.KROOKODILE]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.DARUMAKA]: { 0: AbilityId.GORILLA_TACTICS }, + [SpeciesId.DARMANITAN]: { 0: AbilityId.GORILLA_TACTICS, 1: AbilityId.SOLID_ROCK }, + [SpeciesId.MARACTUS]: { 0: AbilityId.WELL_BAKED_BODY }, + [SpeciesId.DWEBBLE]: { 0: AbilityId.ROCKY_PAYLOAD }, + [SpeciesId.CRUSTLE]: { 0: AbilityId.ROCKY_PAYLOAD }, + [SpeciesId.SCRAGGY]: { 0: AbilityId.PROTEAN }, + [SpeciesId.SCRAFTY]: { 0: AbilityId.PROTEAN }, + [SpeciesId.SIGILYPH]: { 0: AbilityId.FLARE_BOOST }, + [SpeciesId.YAMASK]: { 0: AbilityId.PURIFYING_SALT }, + [SpeciesId.COFAGRIGUS]: { 0: AbilityId.PURIFYING_SALT }, + [SpeciesId.TIRTOUGA]: { 0: AbilityId.WATER_ABSORB }, + [SpeciesId.CARRACOSTA]: { 0: AbilityId.WATER_ABSORB }, + [SpeciesId.ARCHEN]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.ARCHEOPS]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.TRUBBISH]: { 0: AbilityId.NEUTRALIZING_GAS }, + [SpeciesId.GARBODOR]: { 0: AbilityId.NEUTRALIZING_GAS, 1: AbilityId.NEUTRALIZING_GAS }, + [SpeciesId.ZORUA]: { 0: AbilityId.ADAPTABILITY }, + [SpeciesId.ZOROARK]: { 0: AbilityId.ADAPTABILITY }, + [SpeciesId.MINCCINO]: { 0: AbilityId.FUR_COAT }, + [SpeciesId.CINCCINO]: { 0: AbilityId.FUR_COAT }, + [SpeciesId.GOTHITA]: { 0: AbilityId.UNNERVE }, + [SpeciesId.GOTHORITA]: { 0: AbilityId.UNNERVE }, + [SpeciesId.GOTHITELLE]: { 0: AbilityId.UNNERVE }, + [SpeciesId.SOLOSIS]: { 0: AbilityId.PSYCHIC_SURGE }, + [SpeciesId.DUOSION]: { 0: AbilityId.PSYCHIC_SURGE }, + [SpeciesId.REUNICLUS]: { 0: AbilityId.PSYCHIC_SURGE }, + [SpeciesId.DUCKLETT]: { 0: AbilityId.DRIZZLE }, + [SpeciesId.SWANNA]: { 0: AbilityId.DRIZZLE }, + [SpeciesId.VANILLITE]: { 0: AbilityId.REFRIGERATE }, + [SpeciesId.VANILLISH]: { 0: AbilityId.REFRIGERATE }, + [SpeciesId.VANILLUXE]: { 0: AbilityId.SLUSH_RUSH }, + [SpeciesId.DEERLING]: { 0: AbilityId.FLOWER_VEIL, 1: AbilityId.CUD_CHEW, 2: AbilityId.HARVEST, 3: AbilityId.FUR_COAT }, + [SpeciesId.SAWSBUCK]: { 0: AbilityId.FLOWER_VEIL, 1: AbilityId.CUD_CHEW, 2: AbilityId.HARVEST, 3: AbilityId.FUR_COAT }, + [SpeciesId.EMOLGA]: { 0: AbilityId.SERENE_GRACE }, + [SpeciesId.KARRABLAST]: { 0: AbilityId.QUICK_DRAW }, + [SpeciesId.ESCAVALIER]: { 0: AbilityId.QUICK_DRAW }, + [SpeciesId.FOONGUS]: { 0: AbilityId.MYCELIUM_MIGHT }, + [SpeciesId.AMOONGUSS]: { 0: AbilityId.THICK_FAT }, + [SpeciesId.FRILLISH]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.JELLICENT]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.ALOMOMOLA]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.JOLTIK]: { 0: AbilityId.TRANSISTOR }, + [SpeciesId.GALVANTULA]: { 0: AbilityId.TRANSISTOR }, + [SpeciesId.FERROSEED]: { 0: AbilityId.ROUGH_SKIN }, + [SpeciesId.FERROTHORN]: { 0: AbilityId.ROUGH_SKIN }, + [SpeciesId.KLINK]: { 0: AbilityId.STEELY_SPIRIT }, + [SpeciesId.KLANG]: { 0: AbilityId.STEELY_SPIRIT }, + [SpeciesId.KLINKLANG]: { 0: AbilityId.STEELY_SPIRIT }, + [SpeciesId.TYNAMO]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.EELEKTRIK]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.EELEKTROSS]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.ELGYEM]: { 0: AbilityId.BEADS_OF_RUIN }, + [SpeciesId.BEHEEYEM]: { 0: AbilityId.BEADS_OF_RUIN }, + [SpeciesId.LITWICK]: { 0: AbilityId.SHADOW_TAG }, + [SpeciesId.LAMPENT]: { 0: AbilityId.SHADOW_TAG }, + [SpeciesId.CHANDELURE]: { 0: AbilityId.SHADOW_TAG }, + [SpeciesId.AXEW]: { 0: AbilityId.DRAGONS_MAW }, + [SpeciesId.FRAXURE]: { 0: AbilityId.DRAGONS_MAW }, + [SpeciesId.HAXORUS]: { 0: AbilityId.DRAGONS_MAW }, + [SpeciesId.CUBCHOO]: { 0: AbilityId.FUR_COAT }, + [SpeciesId.BEARTIC]: { 0: AbilityId.FUR_COAT }, + [SpeciesId.CRYOGONAL]: { 0: AbilityId.SNOW_WARNING }, + [SpeciesId.SHELMET]: { 0: AbilityId.STAMINA }, + [SpeciesId.ACCELGOR]: { 0: AbilityId.PROTEAN }, + [SpeciesId.STUNFISK]: { 0: AbilityId.STORM_DRAIN }, + [SpeciesId.MIENFOO]: { 0: AbilityId.NO_GUARD }, + [SpeciesId.MIENSHAO]: { 0: AbilityId.NO_GUARD }, + [SpeciesId.DRUDDIGON]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.GOLETT]: { 0: AbilityId.SHADOW_SHIELD }, + [SpeciesId.GOLURK]: { 0: AbilityId.SHADOW_SHIELD }, + [SpeciesId.PAWNIARD]: { 0: AbilityId.SWORD_OF_RUIN }, + [SpeciesId.BISHARP]: { 0: AbilityId.SWORD_OF_RUIN }, + [SpeciesId.KINGAMBIT]: { 0: AbilityId.SWORD_OF_RUIN }, + [SpeciesId.BOUFFALANT]: { 0: AbilityId.ROCK_HEAD }, + [SpeciesId.RUFFLET]: { 0: AbilityId.SPEED_BOOST }, + [SpeciesId.BRAVIARY]: { 0: AbilityId.SPEED_BOOST }, + [SpeciesId.HISUI_BRAVIARY]: { 0: AbilityId.SPEED_BOOST }, + [SpeciesId.VULLABY]: { 0: AbilityId.THICK_FAT }, + [SpeciesId.MANDIBUZZ]: { 0: AbilityId.THICK_FAT }, + [SpeciesId.HEATMOR]: { 0: AbilityId.CONTRARY }, + [SpeciesId.DURANT]: { 0: AbilityId.COMPOUND_EYES }, + [SpeciesId.DEINO]: { 0: AbilityId.NO_GUARD }, + [SpeciesId.ZWEILOUS]: { 0: AbilityId.NO_GUARD }, + [SpeciesId.HYDREIGON]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.LARVESTA]: { 0: AbilityId.FLASH_FIRE }, + [SpeciesId.VOLCARONA]: { 0: AbilityId.DROUGHT }, + [SpeciesId.COBALION]: { 0: AbilityId.INTREPID_SWORD }, + [SpeciesId.TERRAKION]: { 0: AbilityId.ROCKY_PAYLOAD }, + [SpeciesId.VIRIZION]: { 0: AbilityId.SHARPNESS }, + [SpeciesId.TORNADUS]: { 0: AbilityId.DRIZZLE, 1: AbilityId.DRIZZLE }, + [SpeciesId.THUNDURUS]: { 0: AbilityId.DRIZZLE, 1: AbilityId.DRIZZLE }, + [SpeciesId.RESHIRAM]: { 0: AbilityId.ORICHALCUM_PULSE }, + [SpeciesId.ZEKROM]: { 0: AbilityId.HADRON_ENGINE }, + [SpeciesId.LANDORUS]: { 0: AbilityId.STORM_DRAIN, 1: AbilityId.STORM_DRAIN }, + [SpeciesId.KYUREM]: { 0: AbilityId.SNOW_WARNING, 1: AbilityId.HADRON_ENGINE, 2: AbilityId.ORICHALCUM_PULSE }, + [SpeciesId.KELDEO]: { 0: AbilityId.GRIM_NEIGH, 1: AbilityId.GRIM_NEIGH }, + [SpeciesId.MELOETTA]: { 0: AbilityId.PUNK_ROCK, 1: AbilityId.SCRAPPY }, + [SpeciesId.GENESECT]: { 0: AbilityId.PROTEAN, 1: AbilityId.PROTEAN, 2: AbilityId.PROTEAN, 3: AbilityId.PROTEAN, 4: AbilityId.PROTEAN }, - [Species.CHESPIN]: { 0: Abilities.ROUGH_SKIN }, - [Species.QUILLADIN]: { 0: Abilities.DAUNTLESS_SHIELD }, - [Species.CHESNAUGHT]: { 0: Abilities.DAUNTLESS_SHIELD }, - [Species.FENNEKIN]: { 0: Abilities.FLUFFY }, - [Species.BRAIXEN]: { 0: Abilities.PSYCHIC_SURGE }, - [Species.DELPHOX]: { 0: Abilities.PSYCHIC_SURGE }, - [Species.FROAKIE]: { 0: Abilities.STAKEOUT, 1: Abilities.STAKEOUT }, - [Species.FROGADIER]: { 0: Abilities.STAKEOUT, 1: Abilities.STAKEOUT }, - [Species.GRENINJA]: { 0: Abilities.STAKEOUT, 1: Abilities.STAKEOUT, 2: Abilities.STAKEOUT }, - [Species.BUNNELBY]: { 0: Abilities.INNER_FOCUS }, - [Species.DIGGERSBY]: { 0: Abilities.THICK_FAT }, - [Species.FLETCHLING]: { 0: Abilities.FLAME_BODY }, - [Species.FLETCHINDER]: { 0: Abilities.MAGIC_GUARD }, - [Species.TALONFLAME]: { 0: Abilities.MAGIC_GUARD }, - [Species.SCATTERBUG]: { 0: Abilities.RUN_AWAY, 1: Abilities.RUN_AWAY, 2: Abilities.RUN_AWAY, 3: Abilities.RUN_AWAY, 4: Abilities.RUN_AWAY, 5: Abilities.RUN_AWAY, 6: Abilities.RUN_AWAY, 7: Abilities.RUN_AWAY, 8: Abilities.RUN_AWAY, 9: Abilities.RUN_AWAY, 10: Abilities.RUN_AWAY, 11: Abilities.RUN_AWAY, 12: Abilities.RUN_AWAY, 13: Abilities.RUN_AWAY, 14: Abilities.RUN_AWAY, 15: Abilities.RUN_AWAY, 16: Abilities.RUN_AWAY, 17: Abilities.RUN_AWAY, 18: Abilities.RUN_AWAY, 19: Abilities.RUN_AWAY }, - [Species.SPEWPA]: { 0: Abilities.COMPOUND_EYES, 1: Abilities.COMPOUND_EYES, 2: Abilities.COMPOUND_EYES, 3: Abilities.COMPOUND_EYES, 4: Abilities.COMPOUND_EYES, 5: Abilities.COMPOUND_EYES, 6: Abilities.COMPOUND_EYES, 7: Abilities.COMPOUND_EYES, 8: Abilities.COMPOUND_EYES, 9: Abilities.COMPOUND_EYES, 10: Abilities.COMPOUND_EYES, 11: Abilities.COMPOUND_EYES, 12: Abilities.COMPOUND_EYES, 13: Abilities.COMPOUND_EYES, 14: Abilities.COMPOUND_EYES, 15: Abilities.COMPOUND_EYES, 16: Abilities.COMPOUND_EYES, 17: Abilities.COMPOUND_EYES, 18: Abilities.COMPOUND_EYES, 19: Abilities.COMPOUND_EYES }, - [Species.VIVILLON]: { 0: Abilities.PRANKSTER, 1: Abilities.PRANKSTER, 2: Abilities.PRANKSTER, 3: Abilities.PRANKSTER, 4: Abilities.PRANKSTER, 5: Abilities.PRANKSTER, 6: Abilities.PRANKSTER, 7: Abilities.PRANKSTER, 8: Abilities.PRANKSTER, 9: Abilities.PRANKSTER, 10: Abilities.PRANKSTER, 11: Abilities.PRANKSTER, 12: Abilities.PRANKSTER, 13: Abilities.PRANKSTER, 14: Abilities.PRANKSTER, 15: Abilities.PRANKSTER, 16: Abilities.PRANKSTER, 17: Abilities.PRANKSTER, 18: Abilities.PRANKSTER, 19: Abilities.PRANKSTER }, - [Species.LITLEO]: { 0: Abilities.BEAST_BOOST }, - [Species.PYROAR]: { 0: Abilities.BEAST_BOOST }, - [Species.FLABEBE]: { 0: Abilities.GRASSY_SURGE, 1: Abilities.GRASSY_SURGE, 2: Abilities.GRASSY_SURGE, 3: Abilities.GRASSY_SURGE, 4: Abilities.GRASSY_SURGE }, - [Species.FLOETTE]: { 0: Abilities.GRASSY_SURGE, 1: Abilities.GRASSY_SURGE, 2: Abilities.GRASSY_SURGE, 3: Abilities.GRASSY_SURGE, 4: Abilities.GRASSY_SURGE }, - [Species.FLORGES]: { 0: Abilities.GRASSY_SURGE, 1: Abilities.GRASSY_SURGE, 2: Abilities.GRASSY_SURGE, 3: Abilities.GRASSY_SURGE, 4: Abilities.GRASSY_SURGE }, - [Species.SKIDDO]: { 0: Abilities.SEED_SOWER }, - [Species.GOGOAT]: { 0: Abilities.SEED_SOWER }, - [Species.PANCHAM]: { 0: Abilities.TECHNICIAN }, - [Species.PANGORO]: { 0: Abilities.FUR_COAT }, - [Species.FURFROU]: { 0: Abilities.FLUFFY, 1: Abilities.FLUFFY, 2: Abilities.FLUFFY, 3: Abilities.FLUFFY, 4: Abilities.FLUFFY, 5: Abilities.FLUFFY, 6: Abilities.FLUFFY, 7: Abilities.FLUFFY, 8: Abilities.FLUFFY, 9: Abilities.FLUFFY }, - [Species.ESPURR]: { 0: Abilities.PRANKSTER }, - [Species.MEOWSTIC]: { 0: Abilities.FUR_COAT, 1: Abilities.NEUROFORCE }, - [Species.HONEDGE]: { 0: Abilities.SHARPNESS }, - [Species.DOUBLADE]: { 0: Abilities.SHARPNESS }, - [Species.AEGISLASH]: { 0: Abilities.SHARPNESS, 1: Abilities.SHARPNESS }, - [Species.SPRITZEE]: { 0: Abilities.FUR_COAT }, - [Species.AROMATISSE]: { 0: Abilities.FUR_COAT }, - [Species.SWIRLIX]: { 0: Abilities.RIPEN }, - [Species.SLURPUFF]: { 0: Abilities.RIPEN }, - [Species.INKAY]: { 0: Abilities.SHADOW_SHIELD }, - [Species.MALAMAR]: { 0: Abilities.SHADOW_SHIELD }, - [Species.BINACLE]: { 0: Abilities.SAP_SIPPER }, - [Species.BARBARACLE]: { 0: Abilities.SAP_SIPPER }, - [Species.SKRELP]: { 0: Abilities.WATER_BUBBLE }, - [Species.DRAGALGE]: { 0: Abilities.DRAGONS_MAW }, - [Species.CLAUNCHER]: { 0: Abilities.PROTEAN }, - [Species.CLAWITZER]: { 0: Abilities.PROTEAN }, - [Species.HELIOPTILE]: { 0: Abilities.PROTEAN }, - [Species.HELIOLISK]: { 0: Abilities.PROTEAN }, - [Species.TYRUNT]: { 0: Abilities.SHEER_FORCE }, - [Species.TYRANTRUM]: { 0: Abilities.SHEER_FORCE }, - [Species.AMAURA]: { 0: Abilities.ICE_SCALES }, - [Species.AURORUS]: { 0: Abilities.ICE_SCALES }, - [Species.HAWLUCHA]: { 0: Abilities.MOXIE }, - [Species.DEDENNE]: { 0: Abilities.PIXILATE }, - [Species.CARBINK]: { 0: Abilities.SOLID_ROCK }, - [Species.GOOMY]: { 0: Abilities.REGENERATOR }, - [Species.SLIGGOO]: { 0: Abilities.POISON_HEAL }, - [Species.GOODRA]: { 0: Abilities.POISON_HEAL }, - [Species.HISUI_SLIGGOO]: { 0: Abilities.REGENERATOR }, - [Species.HISUI_GOODRA]: { 0: Abilities.REGENERATOR }, - [Species.KLEFKI]: { 0: Abilities.LEVITATE }, - [Species.PHANTUMP]: { 0: Abilities.SHADOW_TAG }, - [Species.TREVENANT]: { 0: Abilities.SHADOW_TAG }, - [Species.PUMPKABOO]: { 0: Abilities.ILLUMINATE, 1: Abilities.ADAPTABILITY, 2: Abilities.WELL_BAKED_BODY, 3: Abilities.SEED_SOWER }, - [Species.GOURGEIST]: { 0: Abilities.ILLUMINATE, 1: Abilities.ADAPTABILITY, 2: Abilities.WELL_BAKED_BODY, 3: Abilities.SEED_SOWER }, - [Species.BERGMITE]: { 0: Abilities.ICE_SCALES }, - [Species.AVALUGG]: { 0: Abilities.ICE_SCALES }, - [Species.HISUI_AVALUGG]: { 0: Abilities.ICE_SCALES }, - [Species.NOIBAT]: { 0: Abilities.CHEEK_POUCH }, - [Species.NOIVERN]: { 0: Abilities.PUNK_ROCK }, - [Species.XERNEAS]: { 0: Abilities.HARVEST, 1: Abilities.HARVEST }, - [Species.YVELTAL]: { 0: Abilities.SOUL_HEART }, - [Species.ZYGARDE]: { 0: Abilities.UNNERVE, 1: Abilities.MOXIE, 2: Abilities.UNNERVE, 3: Abilities.MOXIE, 4: Abilities.ADAPTABILITY, 5: Abilities.ADAPTABILITY }, - [Species.DIANCIE]: { 0: Abilities.SOLID_ROCK, 1: Abilities.PRISM_ARMOR }, - [Species.HOOPA]: { 0: Abilities.OPPORTUNIST, 1: Abilities.OPPORTUNIST }, - [Species.VOLCANION]: { 0: Abilities.NEUTRALIZING_GAS }, - [Species.ETERNAL_FLOETTE]: { 0: Abilities.MAGIC_GUARD }, + [SpeciesId.CHESPIN]: { 0: AbilityId.ROUGH_SKIN }, + [SpeciesId.QUILLADIN]: { 0: AbilityId.DAUNTLESS_SHIELD }, + [SpeciesId.CHESNAUGHT]: { 0: AbilityId.DAUNTLESS_SHIELD }, + [SpeciesId.FENNEKIN]: { 0: AbilityId.FLUFFY }, + [SpeciesId.BRAIXEN]: { 0: AbilityId.PSYCHIC_SURGE }, + [SpeciesId.DELPHOX]: { 0: AbilityId.PSYCHIC_SURGE }, + [SpeciesId.FROAKIE]: { 0: AbilityId.STAKEOUT, 1: AbilityId.STAKEOUT }, + [SpeciesId.FROGADIER]: { 0: AbilityId.STAKEOUT, 1: AbilityId.STAKEOUT }, + [SpeciesId.GRENINJA]: { 0: AbilityId.STAKEOUT, 1: AbilityId.STAKEOUT, 2: AbilityId.STAKEOUT }, + [SpeciesId.BUNNELBY]: { 0: AbilityId.INNER_FOCUS }, + [SpeciesId.DIGGERSBY]: { 0: AbilityId.THICK_FAT }, + [SpeciesId.FLETCHLING]: { 0: AbilityId.FLAME_BODY }, + [SpeciesId.FLETCHINDER]: { 0: AbilityId.MAGIC_GUARD }, + [SpeciesId.TALONFLAME]: { 0: AbilityId.MAGIC_GUARD }, + [SpeciesId.SCATTERBUG]: { 0: AbilityId.RUN_AWAY, 1: AbilityId.RUN_AWAY, 2: AbilityId.RUN_AWAY, 3: AbilityId.RUN_AWAY, 4: AbilityId.RUN_AWAY, 5: AbilityId.RUN_AWAY, 6: AbilityId.RUN_AWAY, 7: AbilityId.RUN_AWAY, 8: AbilityId.RUN_AWAY, 9: AbilityId.RUN_AWAY, 10: AbilityId.RUN_AWAY, 11: AbilityId.RUN_AWAY, 12: AbilityId.RUN_AWAY, 13: AbilityId.RUN_AWAY, 14: AbilityId.RUN_AWAY, 15: AbilityId.RUN_AWAY, 16: AbilityId.RUN_AWAY, 17: AbilityId.RUN_AWAY, 18: AbilityId.RUN_AWAY, 19: AbilityId.RUN_AWAY }, + [SpeciesId.SPEWPA]: { 0: AbilityId.COMPOUND_EYES, 1: AbilityId.COMPOUND_EYES, 2: AbilityId.COMPOUND_EYES, 3: AbilityId.COMPOUND_EYES, 4: AbilityId.COMPOUND_EYES, 5: AbilityId.COMPOUND_EYES, 6: AbilityId.COMPOUND_EYES, 7: AbilityId.COMPOUND_EYES, 8: AbilityId.COMPOUND_EYES, 9: AbilityId.COMPOUND_EYES, 10: AbilityId.COMPOUND_EYES, 11: AbilityId.COMPOUND_EYES, 12: AbilityId.COMPOUND_EYES, 13: AbilityId.COMPOUND_EYES, 14: AbilityId.COMPOUND_EYES, 15: AbilityId.COMPOUND_EYES, 16: AbilityId.COMPOUND_EYES, 17: AbilityId.COMPOUND_EYES, 18: AbilityId.COMPOUND_EYES, 19: AbilityId.COMPOUND_EYES }, + [SpeciesId.VIVILLON]: { 0: AbilityId.PRANKSTER, 1: AbilityId.PRANKSTER, 2: AbilityId.PRANKSTER, 3: AbilityId.PRANKSTER, 4: AbilityId.PRANKSTER, 5: AbilityId.PRANKSTER, 6: AbilityId.PRANKSTER, 7: AbilityId.PRANKSTER, 8: AbilityId.PRANKSTER, 9: AbilityId.PRANKSTER, 10: AbilityId.PRANKSTER, 11: AbilityId.PRANKSTER, 12: AbilityId.PRANKSTER, 13: AbilityId.PRANKSTER, 14: AbilityId.PRANKSTER, 15: AbilityId.PRANKSTER, 16: AbilityId.PRANKSTER, 17: AbilityId.PRANKSTER, 18: AbilityId.PRANKSTER, 19: AbilityId.PRANKSTER }, + [SpeciesId.LITLEO]: { 0: AbilityId.BEAST_BOOST }, + [SpeciesId.PYROAR]: { 0: AbilityId.BEAST_BOOST }, + [SpeciesId.FLABEBE]: { 0: AbilityId.GRASSY_SURGE, 1: AbilityId.GRASSY_SURGE, 2: AbilityId.GRASSY_SURGE, 3: AbilityId.GRASSY_SURGE, 4: AbilityId.GRASSY_SURGE }, + [SpeciesId.FLOETTE]: { 0: AbilityId.GRASSY_SURGE, 1: AbilityId.GRASSY_SURGE, 2: AbilityId.GRASSY_SURGE, 3: AbilityId.GRASSY_SURGE, 4: AbilityId.GRASSY_SURGE }, + [SpeciesId.FLORGES]: { 0: AbilityId.GRASSY_SURGE, 1: AbilityId.GRASSY_SURGE, 2: AbilityId.GRASSY_SURGE, 3: AbilityId.GRASSY_SURGE, 4: AbilityId.GRASSY_SURGE }, + [SpeciesId.SKIDDO]: { 0: AbilityId.SEED_SOWER }, + [SpeciesId.GOGOAT]: { 0: AbilityId.SEED_SOWER }, + [SpeciesId.PANCHAM]: { 0: AbilityId.TECHNICIAN }, + [SpeciesId.PANGORO]: { 0: AbilityId.FUR_COAT }, + [SpeciesId.FURFROU]: { 0: AbilityId.FLUFFY, 1: AbilityId.FLUFFY, 2: AbilityId.FLUFFY, 3: AbilityId.FLUFFY, 4: AbilityId.FLUFFY, 5: AbilityId.FLUFFY, 6: AbilityId.FLUFFY, 7: AbilityId.FLUFFY, 8: AbilityId.FLUFFY, 9: AbilityId.FLUFFY }, + [SpeciesId.ESPURR]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.MEOWSTIC]: { 0: AbilityId.FUR_COAT, 1: AbilityId.NEUROFORCE }, + [SpeciesId.HONEDGE]: { 0: AbilityId.SHARPNESS }, + [SpeciesId.DOUBLADE]: { 0: AbilityId.SHARPNESS }, + [SpeciesId.AEGISLASH]: { 0: AbilityId.SHARPNESS, 1: AbilityId.SHARPNESS }, + [SpeciesId.SPRITZEE]: { 0: AbilityId.FUR_COAT }, + [SpeciesId.AROMATISSE]: { 0: AbilityId.FUR_COAT }, + [SpeciesId.SWIRLIX]: { 0: AbilityId.RIPEN }, + [SpeciesId.SLURPUFF]: { 0: AbilityId.RIPEN }, + [SpeciesId.INKAY]: { 0: AbilityId.SHADOW_SHIELD }, + [SpeciesId.MALAMAR]: { 0: AbilityId.SHADOW_SHIELD }, + [SpeciesId.BINACLE]: { 0: AbilityId.SAP_SIPPER }, + [SpeciesId.BARBARACLE]: { 0: AbilityId.SAP_SIPPER }, + [SpeciesId.SKRELP]: { 0: AbilityId.WATER_BUBBLE }, + [SpeciesId.DRAGALGE]: { 0: AbilityId.DRAGONS_MAW }, + [SpeciesId.CLAUNCHER]: { 0: AbilityId.PROTEAN }, + [SpeciesId.CLAWITZER]: { 0: AbilityId.PROTEAN }, + [SpeciesId.HELIOPTILE]: { 0: AbilityId.PROTEAN }, + [SpeciesId.HELIOLISK]: { 0: AbilityId.PROTEAN }, + [SpeciesId.TYRUNT]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.TYRANTRUM]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.AMAURA]: { 0: AbilityId.ICE_SCALES }, + [SpeciesId.AURORUS]: { 0: AbilityId.ICE_SCALES }, + [SpeciesId.HAWLUCHA]: { 0: AbilityId.MOXIE }, + [SpeciesId.DEDENNE]: { 0: AbilityId.PIXILATE }, + [SpeciesId.CARBINK]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.GOOMY]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.SLIGGOO]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.GOODRA]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.HISUI_SLIGGOO]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.HISUI_GOODRA]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.KLEFKI]: { 0: AbilityId.LEVITATE }, + [SpeciesId.PHANTUMP]: { 0: AbilityId.SHADOW_TAG }, + [SpeciesId.TREVENANT]: { 0: AbilityId.SHADOW_TAG }, + [SpeciesId.PUMPKABOO]: { 0: AbilityId.ILLUMINATE, 1: AbilityId.ADAPTABILITY, 2: AbilityId.WELL_BAKED_BODY, 3: AbilityId.SEED_SOWER }, + [SpeciesId.GOURGEIST]: { 0: AbilityId.ILLUMINATE, 1: AbilityId.ADAPTABILITY, 2: AbilityId.WELL_BAKED_BODY, 3: AbilityId.SEED_SOWER }, + [SpeciesId.BERGMITE]: { 0: AbilityId.ICE_SCALES }, + [SpeciesId.AVALUGG]: { 0: AbilityId.ICE_SCALES }, + [SpeciesId.HISUI_AVALUGG]: { 0: AbilityId.ICE_SCALES }, + [SpeciesId.NOIBAT]: { 0: AbilityId.CHEEK_POUCH }, + [SpeciesId.NOIVERN]: { 0: AbilityId.PUNK_ROCK }, + [SpeciesId.XERNEAS]: { 0: AbilityId.HARVEST, 1: AbilityId.HARVEST }, + [SpeciesId.YVELTAL]: { 0: AbilityId.SOUL_HEART }, + [SpeciesId.ZYGARDE]: { 0: AbilityId.UNNERVE, 1: AbilityId.MOXIE, 2: AbilityId.UNNERVE, 3: AbilityId.MOXIE, 4: AbilityId.ADAPTABILITY, 5: AbilityId.ADAPTABILITY }, + [SpeciesId.DIANCIE]: { 0: AbilityId.SOLID_ROCK, 1: AbilityId.PRISM_ARMOR }, + [SpeciesId.HOOPA]: { 0: AbilityId.OPPORTUNIST, 1: AbilityId.OPPORTUNIST }, + [SpeciesId.VOLCANION]: { 0: AbilityId.NEUTRALIZING_GAS }, + [SpeciesId.ETERNAL_FLOETTE]: { 0: AbilityId.MAGIC_GUARD }, - [Species.ROWLET]: { 0: Abilities.WIND_RIDER }, - [Species.DARTRIX]: { 0: Abilities.WIND_RIDER }, - [Species.DECIDUEYE]: { 0: Abilities.SNIPER }, - [Species.HISUI_DECIDUEYE]: { 0: Abilities.SNIPER }, - [Species.LITTEN]: { 0: Abilities.OPPORTUNIST }, - [Species.TORRACAT]: { 0: Abilities.OPPORTUNIST }, - [Species.INCINEROAR]: { 0: Abilities.OPPORTUNIST }, - [Species.POPPLIO]: { 0: Abilities.PUNK_ROCK }, - [Species.BRIONNE]: { 0: Abilities.PUNK_ROCK }, - [Species.PRIMARINA]: { 0: Abilities.PUNK_ROCK }, - [Species.PIKIPEK]: { 0: Abilities.TECHNICIAN }, - [Species.TRUMBEAK]: { 0: Abilities.TECHNICIAN }, - [Species.TOUCANNON]: { 0: Abilities.TECHNICIAN }, - [Species.YUNGOOS]: { 0: Abilities.TOUGH_CLAWS }, - [Species.GUMSHOOS]: { 0: Abilities.TOUGH_CLAWS }, - [Species.GRUBBIN]: { 0: Abilities.SHIELD_DUST }, - [Species.CHARJABUG]: { 0: Abilities.POWER_SPOT }, - [Species.VIKAVOLT]: { 0: Abilities.SPEED_BOOST }, - [Species.CRABRAWLER]: { 0: Abilities.WATER_BUBBLE }, - [Species.CRABOMINABLE]: { 0: Abilities.WATER_BUBBLE }, - [Species.ORICORIO]: { 0: Abilities.ADAPTABILITY, 1: Abilities.ADAPTABILITY, 2: Abilities.ADAPTABILITY, 3: Abilities.ADAPTABILITY }, - [Species.CUTIEFLY]: { 0: Abilities.PICKUP }, - [Species.RIBOMBEE]: { 0: Abilities.PICKUP }, - [Species.ROCKRUFF]: { 0: Abilities.PICKUP, 1: Abilities.PICKUP }, - [Species.LYCANROC]: { 0: Abilities.STURDY, 1: Abilities.INTIMIDATE, 2: Abilities.STAKEOUT }, - [Species.WISHIWASHI]: { 0: Abilities.REGENERATOR, 1: Abilities.REGENERATOR }, - [Species.MAREANIE]: { 0: Abilities.TOXIC_DEBRIS }, - [Species.TOXAPEX]: { 0: Abilities.TOXIC_DEBRIS }, - [Species.MUDBRAY]: { 0: Abilities.SAP_SIPPER }, - [Species.MUDSDALE]: { 0: Abilities.SAP_SIPPER }, - [Species.DEWPIDER]: { 0: Abilities.TINTED_LENS }, - [Species.ARAQUANID]: { 0: Abilities.TINTED_LENS }, - [Species.FOMANTIS]: { 0: Abilities.SHARPNESS }, - [Species.LURANTIS]: { 0: Abilities.SHARPNESS }, - [Species.MORELULL]: { 0: Abilities.TRIAGE }, - [Species.SHIINOTIC]: { 0: Abilities.TRIAGE }, - [Species.SALANDIT]: { 0: Abilities.PICKUP }, - [Species.SALAZZLE]: { 0: Abilities.DRAGONS_MAW }, - [Species.STUFFUL]: { 0: Abilities.SCRAPPY }, - [Species.BEWEAR]: { 0: Abilities.SCRAPPY }, - [Species.BOUNSWEET]: { 0: Abilities.SIMPLE }, - [Species.STEENEE]: { 0: Abilities.SIMPLE }, - [Species.TSAREENA]: { 0: Abilities.MOXIE }, - [Species.COMFEY]: { 0: Abilities.FRIEND_GUARD }, - [Species.ORANGURU]: { 0: Abilities.POWER_SPOT }, - [Species.PASSIMIAN]: { 0: Abilities.LIBERO }, - [Species.WIMPOD]: { 0: Abilities.REGENERATOR }, - [Species.GOLISOPOD]: { 0: Abilities.REGENERATOR }, - [Species.SANDYGAST]: { 0: Abilities.SAND_SPIT }, - [Species.PALOSSAND]: { 0: Abilities.SAND_SPIT }, - [Species.PYUKUMUKU]: { 0: Abilities.PURIFYING_SALT }, - [Species.TYPE_NULL]: { 0: Abilities.CLEAR_BODY }, - [Species.SILVALLY]: { 0: Abilities.ADAPTABILITY, 1: Abilities.ADAPTABILITY, 2: Abilities.ADAPTABILITY, 3: Abilities.ADAPTABILITY, 4: Abilities.ADAPTABILITY, 5: Abilities.ADAPTABILITY, 6: Abilities.ADAPTABILITY, 7: Abilities.ADAPTABILITY, 8: Abilities.ADAPTABILITY, 9: Abilities.ADAPTABILITY, 10: Abilities.ADAPTABILITY, 11: Abilities.ADAPTABILITY, 12: Abilities.ADAPTABILITY, 13: Abilities.ADAPTABILITY, 14: Abilities.ADAPTABILITY, 15: Abilities.ADAPTABILITY, 16: Abilities.ADAPTABILITY, 17: Abilities.ADAPTABILITY }, - [Species.MINIOR]: { 0: Abilities.STURDY, 1: Abilities.STURDY, 2: Abilities.STURDY, 3: Abilities.STURDY, 4: Abilities.STURDY, 5: Abilities.STURDY, 6: Abilities.STURDY, 7: Abilities.AERILATE, 8: Abilities.AERILATE, 9: Abilities.AERILATE, 10: Abilities.AERILATE, 11: Abilities.AERILATE, 12: Abilities.AERILATE, 13: Abilities.AERILATE }, - [Species.KOMALA]: { 0: Abilities.GUTS }, - [Species.TURTONATOR]: { 0: Abilities.DAUNTLESS_SHIELD }, - [Species.TOGEDEMARU]: { 0: Abilities.ROUGH_SKIN }, - [Species.MIMIKYU]: { 0: Abilities.TOUGH_CLAWS, 1: Abilities.TOUGH_CLAWS }, - [Species.BRUXISH]: { 0: Abilities.MULTISCALE }, - [Species.DRAMPA]: { 0: Abilities.THICK_FAT }, - [Species.DHELMISE]: { 0: Abilities.WATER_BUBBLE }, - [Species.JANGMO_O]: { 0: Abilities.DAUNTLESS_SHIELD }, - [Species.HAKAMO_O]: { 0: Abilities.DAUNTLESS_SHIELD }, - [Species.KOMMO_O]: { 0: Abilities.DAUNTLESS_SHIELD }, - [Species.TAPU_KOKO]: { 0: Abilities.DAUNTLESS_SHIELD }, - [Species.TAPU_LELE]: { 0: Abilities.BERSERK }, - [Species.TAPU_BULU]: { 0: Abilities.FLOWER_VEIL }, - [Species.TAPU_FINI]: { 0: Abilities.FAIRY_AURA }, - [Species.COSMOG]: { 0: Abilities.PICKUP }, - [Species.COSMOEM]: { 0: Abilities.POWER_SPOT }, - [Species.SOLGALEO]: { 0: Abilities.BEAST_BOOST }, - [Species.LUNALA]: { 0: Abilities.BEAST_BOOST }, - [Species.NIHILEGO]: { 0: Abilities.LEVITATE }, - [Species.BUZZWOLE]: { 0: Abilities.MOXIE }, - [Species.PHEROMOSA]: { 0: Abilities.TINTED_LENS }, - [Species.XURKITREE]: { 0: Abilities.TRANSISTOR }, - [Species.CELESTEELA]: { 0: Abilities.HEATPROOF }, - [Species.KARTANA]: { 0: Abilities.TECHNICIAN }, - [Species.GUZZLORD]: { 0: Abilities.POISON_HEAL }, - [Species.NECROZMA]: { 0: Abilities.BEAST_BOOST, 1: Abilities.FULL_METAL_BODY, 2: Abilities.SHADOW_SHIELD, 3: Abilities.UNNERVE }, - [Species.MAGEARNA]: { 0: Abilities.STEELY_SPIRIT, 1: Abilities.STEELY_SPIRIT }, - [Species.MARSHADOW]: { 0: Abilities.IRON_FIST }, - [Species.POIPOLE]: { 0: Abilities.LEVITATE }, - [Species.NAGANADEL]: { 0: Abilities.LEVITATE }, - [Species.STAKATAKA]: { 0: Abilities.SOLID_ROCK }, - [Species.BLACEPHALON]: { 0: Abilities.MAGIC_GUARD }, - [Species.ZERAORA]: { 0: Abilities.TOUGH_CLAWS }, - [Species.MELTAN]: { 0: Abilities.HEATPROOF }, - [Species.MELMETAL]: { 0: Abilities.HEATPROOF, 1: Abilities.FULL_METAL_BODY }, - [Species.ALOLA_RATTATA]: { 0: Abilities.ADAPTABILITY }, - [Species.ALOLA_RATICATE]: { 0: Abilities.ADAPTABILITY }, - [Species.ALOLA_SANDSHREW]: { 0: Abilities.ICE_SCALES }, - [Species.ALOLA_SANDSLASH]: { 0: Abilities.ICE_SCALES }, - [Species.ALOLA_VULPIX]: { 0: Abilities.ICE_BODY }, - [Species.ALOLA_NINETALES]: { 0: Abilities.ICE_BODY }, - [Species.ALOLA_DIGLETT]: { 0: Abilities.STURDY }, - [Species.ALOLA_DUGTRIO]: { 0: Abilities.STURDY }, - [Species.ALOLA_MEOWTH]: { 0: Abilities.DARK_AURA }, - [Species.ALOLA_PERSIAN]: { 0: Abilities.DARK_AURA }, - [Species.ALOLA_GEODUDE]: { 0: Abilities.DRY_SKIN }, - [Species.ALOLA_GRAVELER]: { 0: Abilities.DRY_SKIN }, - [Species.ALOLA_GOLEM]: { 0: Abilities.DRY_SKIN }, - [Species.ALOLA_GRIMER]: { 0: Abilities.TOXIC_DEBRIS }, - [Species.ALOLA_MUK]: { 0: Abilities.TOXIC_DEBRIS }, + [SpeciesId.ROWLET]: { 0: AbilityId.WIND_RIDER }, + [SpeciesId.DARTRIX]: { 0: AbilityId.WIND_RIDER }, + [SpeciesId.DECIDUEYE]: { 0: AbilityId.SNIPER }, + [SpeciesId.HISUI_DECIDUEYE]: { 0: AbilityId.SNIPER }, + [SpeciesId.LITTEN]: { 0: AbilityId.OPPORTUNIST }, + [SpeciesId.TORRACAT]: { 0: AbilityId.OPPORTUNIST }, + [SpeciesId.INCINEROAR]: { 0: AbilityId.OPPORTUNIST }, + [SpeciesId.POPPLIO]: { 0: AbilityId.PUNK_ROCK }, + [SpeciesId.BRIONNE]: { 0: AbilityId.PUNK_ROCK }, + [SpeciesId.PRIMARINA]: { 0: AbilityId.PUNK_ROCK }, + [SpeciesId.PIKIPEK]: { 0: AbilityId.TECHNICIAN }, + [SpeciesId.TRUMBEAK]: { 0: AbilityId.TECHNICIAN }, + [SpeciesId.TOUCANNON]: { 0: AbilityId.TECHNICIAN }, + [SpeciesId.YUNGOOS]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.GUMSHOOS]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.GRUBBIN]: { 0: AbilityId.SHIELD_DUST }, + [SpeciesId.CHARJABUG]: { 0: AbilityId.POWER_SPOT }, + [SpeciesId.VIKAVOLT]: { 0: AbilityId.SPEED_BOOST }, + [SpeciesId.CRABRAWLER]: { 0: AbilityId.WATER_BUBBLE }, + [SpeciesId.CRABOMINABLE]: { 0: AbilityId.WATER_BUBBLE }, + [SpeciesId.ORICORIO]: { 0: AbilityId.ADAPTABILITY, 1: AbilityId.ADAPTABILITY, 2: AbilityId.ADAPTABILITY, 3: AbilityId.ADAPTABILITY }, + [SpeciesId.CUTIEFLY]: { 0: AbilityId.PICKUP }, + [SpeciesId.RIBOMBEE]: { 0: AbilityId.PICKUP }, + [SpeciesId.ROCKRUFF]: { 0: AbilityId.PICKUP, 1: AbilityId.PICKUP }, + [SpeciesId.LYCANROC]: { 0: AbilityId.STURDY, 1: AbilityId.INTIMIDATE, 2: AbilityId.STAKEOUT }, + [SpeciesId.WISHIWASHI]: { 0: AbilityId.REGENERATOR, 1: AbilityId.REGENERATOR }, + [SpeciesId.MAREANIE]: { 0: AbilityId.TOXIC_DEBRIS }, + [SpeciesId.TOXAPEX]: { 0: AbilityId.TOXIC_DEBRIS }, + [SpeciesId.MUDBRAY]: { 0: AbilityId.SAP_SIPPER }, + [SpeciesId.MUDSDALE]: { 0: AbilityId.SAP_SIPPER }, + [SpeciesId.DEWPIDER]: { 0: AbilityId.TINTED_LENS }, + [SpeciesId.ARAQUANID]: { 0: AbilityId.TINTED_LENS }, + [SpeciesId.FOMANTIS]: { 0: AbilityId.SHARPNESS }, + [SpeciesId.LURANTIS]: { 0: AbilityId.SHARPNESS }, + [SpeciesId.MORELULL]: { 0: AbilityId.TRIAGE }, + [SpeciesId.SHIINOTIC]: { 0: AbilityId.TRIAGE }, + [SpeciesId.SALANDIT]: { 0: AbilityId.PICKUP }, + [SpeciesId.SALAZZLE]: { 0: AbilityId.DRAGONS_MAW }, + [SpeciesId.STUFFUL]: { 0: AbilityId.SCRAPPY }, + [SpeciesId.BEWEAR]: { 0: AbilityId.SCRAPPY }, + [SpeciesId.BOUNSWEET]: { 0: AbilityId.SIMPLE }, + [SpeciesId.STEENEE]: { 0: AbilityId.SIMPLE }, + [SpeciesId.TSAREENA]: { 0: AbilityId.MOXIE }, + [SpeciesId.COMFEY]: { 0: AbilityId.FRIEND_GUARD }, + [SpeciesId.ORANGURU]: { 0: AbilityId.POWER_SPOT }, + [SpeciesId.PASSIMIAN]: { 0: AbilityId.LIBERO }, + [SpeciesId.WIMPOD]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.GOLISOPOD]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.SANDYGAST]: { 0: AbilityId.SAND_SPIT }, + [SpeciesId.PALOSSAND]: { 0: AbilityId.SAND_SPIT }, + [SpeciesId.PYUKUMUKU]: { 0: AbilityId.PURIFYING_SALT }, + [SpeciesId.TYPE_NULL]: { 0: AbilityId.CLEAR_BODY }, + [SpeciesId.SILVALLY]: { 0: AbilityId.ADAPTABILITY, 1: AbilityId.ADAPTABILITY, 2: AbilityId.ADAPTABILITY, 3: AbilityId.ADAPTABILITY, 4: AbilityId.ADAPTABILITY, 5: AbilityId.ADAPTABILITY, 6: AbilityId.ADAPTABILITY, 7: AbilityId.ADAPTABILITY, 8: AbilityId.ADAPTABILITY, 9: AbilityId.ADAPTABILITY, 10: AbilityId.ADAPTABILITY, 11: AbilityId.ADAPTABILITY, 12: AbilityId.ADAPTABILITY, 13: AbilityId.ADAPTABILITY, 14: AbilityId.ADAPTABILITY, 15: AbilityId.ADAPTABILITY, 16: AbilityId.ADAPTABILITY, 17: AbilityId.ADAPTABILITY }, + [SpeciesId.MINIOR]: { 0: AbilityId.STURDY, 1: AbilityId.STURDY, 2: AbilityId.STURDY, 3: AbilityId.STURDY, 4: AbilityId.STURDY, 5: AbilityId.STURDY, 6: AbilityId.STURDY, 7: AbilityId.AERILATE, 8: AbilityId.AERILATE, 9: AbilityId.AERILATE, 10: AbilityId.AERILATE, 11: AbilityId.AERILATE, 12: AbilityId.AERILATE, 13: AbilityId.AERILATE }, + [SpeciesId.KOMALA]: { 0: AbilityId.GUTS }, + [SpeciesId.TURTONATOR]: { 0: AbilityId.DAUNTLESS_SHIELD }, + [SpeciesId.TOGEDEMARU]: { 0: AbilityId.ROUGH_SKIN }, + [SpeciesId.MIMIKYU]: { 0: AbilityId.TOUGH_CLAWS, 1: AbilityId.TOUGH_CLAWS }, + [SpeciesId.BRUXISH]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.DRAMPA]: { 0: AbilityId.THICK_FAT }, + [SpeciesId.DHELMISE]: { 0: AbilityId.WATER_BUBBLE }, + [SpeciesId.JANGMO_O]: { 0: AbilityId.DAUNTLESS_SHIELD }, + [SpeciesId.HAKAMO_O]: { 0: AbilityId.DAUNTLESS_SHIELD }, + [SpeciesId.KOMMO_O]: { 0: AbilityId.DAUNTLESS_SHIELD }, + [SpeciesId.TAPU_KOKO]: { 0: AbilityId.DAUNTLESS_SHIELD }, + [SpeciesId.TAPU_LELE]: { 0: AbilityId.BERSERK }, + [SpeciesId.TAPU_BULU]: { 0: AbilityId.FLOWER_VEIL }, + [SpeciesId.TAPU_FINI]: { 0: AbilityId.FAIRY_AURA }, + [SpeciesId.COSMOG]: { 0: AbilityId.PICKUP }, + [SpeciesId.COSMOEM]: { 0: AbilityId.POWER_SPOT }, + [SpeciesId.SOLGALEO]: { 0: AbilityId.BEAST_BOOST }, + [SpeciesId.LUNALA]: { 0: AbilityId.BEAST_BOOST }, + [SpeciesId.NIHILEGO]: { 0: AbilityId.LEVITATE }, + [SpeciesId.BUZZWOLE]: { 0: AbilityId.MOXIE }, + [SpeciesId.PHEROMOSA]: { 0: AbilityId.TINTED_LENS }, + [SpeciesId.XURKITREE]: { 0: AbilityId.TRANSISTOR }, + [SpeciesId.CELESTEELA]: { 0: AbilityId.HEATPROOF }, + [SpeciesId.KARTANA]: { 0: AbilityId.TECHNICIAN }, + [SpeciesId.GUZZLORD]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.NECROZMA]: { 0: AbilityId.BEAST_BOOST, 1: AbilityId.FULL_METAL_BODY, 2: AbilityId.SHADOW_SHIELD, 3: AbilityId.UNNERVE }, + [SpeciesId.MAGEARNA]: { 0: AbilityId.STEELY_SPIRIT, 1: AbilityId.STEELY_SPIRIT }, + [SpeciesId.MARSHADOW]: { 0: AbilityId.IRON_FIST }, + [SpeciesId.POIPOLE]: { 0: AbilityId.LEVITATE }, + [SpeciesId.NAGANADEL]: { 0: AbilityId.LEVITATE }, + [SpeciesId.STAKATAKA]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.BLACEPHALON]: { 0: AbilityId.MAGIC_GUARD }, + [SpeciesId.ZERAORA]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.MELTAN]: { 0: AbilityId.HEATPROOF }, + [SpeciesId.MELMETAL]: { 0: AbilityId.HEATPROOF, 1: AbilityId.FULL_METAL_BODY }, + [SpeciesId.ALOLA_RATTATA]: { 0: AbilityId.ADAPTABILITY }, + [SpeciesId.ALOLA_RATICATE]: { 0: AbilityId.ADAPTABILITY }, + [SpeciesId.ALOLA_SANDSHREW]: { 0: AbilityId.ICE_SCALES }, + [SpeciesId.ALOLA_SANDSLASH]: { 0: AbilityId.ICE_SCALES }, + [SpeciesId.ALOLA_VULPIX]: { 0: AbilityId.ICE_BODY }, + [SpeciesId.ALOLA_NINETALES]: { 0: AbilityId.ICE_BODY }, + [SpeciesId.ALOLA_DIGLETT]: { 0: AbilityId.STURDY }, + [SpeciesId.ALOLA_DUGTRIO]: { 0: AbilityId.STURDY }, + [SpeciesId.ALOLA_MEOWTH]: { 0: AbilityId.DARK_AURA }, + [SpeciesId.ALOLA_PERSIAN]: { 0: AbilityId.DARK_AURA }, + [SpeciesId.ALOLA_GEODUDE]: { 0: AbilityId.DRY_SKIN }, + [SpeciesId.ALOLA_GRAVELER]: { 0: AbilityId.DRY_SKIN }, + [SpeciesId.ALOLA_GOLEM]: { 0: AbilityId.DRY_SKIN }, + [SpeciesId.ALOLA_GRIMER]: { 0: AbilityId.TOXIC_DEBRIS }, + [SpeciesId.ALOLA_MUK]: { 0: AbilityId.TOXIC_DEBRIS }, - [Species.GROOKEY]: { 0: Abilities.PICKPOCKET }, - [Species.THWACKEY]: { 0: Abilities.PICKPOCKET }, - [Species.RILLABOOM]: { 0: Abilities.GRASS_PELT, 1: Abilities.GRASS_PELT }, - [Species.SCORBUNNY]: { 0: Abilities.SHEER_FORCE }, - [Species.RABOOT]: { 0: Abilities.SHEER_FORCE }, - [Species.CINDERACE]: { 0: Abilities.NO_GUARD, 1: Abilities.NO_GUARD }, - [Species.SOBBLE]: { 0: Abilities.SUPER_LUCK }, - [Species.DRIZZILE]: { 0: Abilities.SUPER_LUCK }, - [Species.INTELEON]: { 0: Abilities.SUPER_LUCK, 1: Abilities.SUPER_LUCK }, - [Species.SKWOVET]: { 0: Abilities.HARVEST }, - [Species.GREEDENT]: { 0: Abilities.HARVEST }, - [Species.ROOKIDEE]: { 0: Abilities.GALE_WINGS }, - [Species.CORVISQUIRE]: { 0: Abilities.GALE_WINGS }, - [Species.CORVIKNIGHT]: { 0: Abilities.IRON_BARBS, 1: Abilities.IRON_BARBS }, - [Species.BLIPBUG]: { 0: Abilities.RUN_AWAY }, - [Species.DOTTLER]: { 0: Abilities.PSYCHIC_SURGE }, - [Species.ORBEETLE]: { 0: Abilities.PSYCHIC_SURGE, 1: Abilities.PSYCHIC_SURGE }, - [Species.NICKIT]: { 0: Abilities.MAGICIAN }, - [Species.THIEVUL]: { 0: Abilities.MAGICIAN }, - [Species.GOSSIFLEUR]: { 0: Abilities.SEED_SOWER }, - [Species.ELDEGOSS]: { 0: Abilities.GRASSY_SURGE }, - [Species.WOOLOO]: { 0: Abilities.SCRAPPY }, - [Species.DUBWOOL]: { 0: Abilities.SCRAPPY }, - [Species.CHEWTLE]: { 0: Abilities.SOLID_ROCK }, - [Species.DREDNAW]: { 0: Abilities.SOLID_ROCK, 1: Abilities.SOLID_ROCK }, - [Species.YAMPER]: { 0: Abilities.PICKUP }, - [Species.BOLTUND]: { 0: Abilities.SHEER_FORCE }, - [Species.ROLYCOLY]: { 0: Abilities.SOLID_ROCK }, - [Species.CARKOL]: { 0: Abilities.SOLID_ROCK }, - [Species.COALOSSAL]: { 0: Abilities.SOLID_ROCK, 1: Abilities.SOLID_ROCK }, - [Species.APPLIN]: { 0: Abilities.STURDY }, - [Species.FLAPPLE]: { 0: Abilities.NO_GUARD, 1: Abilities.NO_GUARD }, - [Species.APPLETUN]: { 0: Abilities.WELL_BAKED_BODY, 1: Abilities.WELL_BAKED_BODY }, - [Species.DIPPLIN]: { 0: Abilities.PARENTAL_BOND }, - [Species.HYDRAPPLE]: { 0: Abilities.PARENTAL_BOND }, - [Species.SILICOBRA]: { 0: Abilities.SAND_RUSH }, - [Species.SANDACONDA]: { 0: Abilities.SAND_RUSH, 1: Abilities.SAND_RUSH }, - [Species.CRAMORANT]: { 0: Abilities.LIGHTNING_ROD, 1: Abilities.LIGHTNING_ROD, 2: Abilities.LIGHTNING_ROD }, - [Species.ARROKUDA]: { 0: Abilities.SPEED_BOOST }, - [Species.BARRASKEWDA]: { 0: Abilities.INTIMIDATE }, - [Species.TOXEL]: { 0: Abilities.ELECTRIC_SURGE }, - [Species.TOXTRICITY]: { 0: Abilities.ELECTRIC_SURGE, 1: Abilities.ELECTRIC_SURGE, 2: Abilities.ELECTRIC_SURGE }, - [Species.SIZZLIPEDE]: { 0: Abilities.HUSTLE }, - [Species.CENTISKORCH]: { 0: Abilities.HUSTLE, 1: Abilities.HUSTLE }, - [Species.CLOBBOPUS]: { 0: Abilities.WATER_BUBBLE }, - [Species.GRAPPLOCT]: { 0: Abilities.WATER_BUBBLE }, - [Species.SINISTEA]: { 0: Abilities.SHADOW_SHIELD, 1: Abilities.SHADOW_SHIELD }, - [Species.POLTEAGEIST]: { 0: Abilities.SHADOW_SHIELD, 1: Abilities.SHADOW_SHIELD }, - [Species.HATENNA]: { 0: Abilities.FAIRY_AURA }, - [Species.HATTREM]: { 0: Abilities.FAIRY_AURA }, - [Species.HATTERENE]: { 0: Abilities.FAIRY_AURA, 1: Abilities.FAIRY_AURA }, - [Species.IMPIDIMP]: { 0: Abilities.INTIMIDATE }, - [Species.MORGREM]: { 0: Abilities.INTIMIDATE }, - [Species.GRIMMSNARL]: { 0: Abilities.INTIMIDATE, 1: Abilities.INTIMIDATE }, - [Species.MILCERY]: { 0: Abilities.REGENERATOR }, - [Species.ALCREMIE]: { 0: Abilities.REGENERATOR, 1: Abilities.REGENERATOR, 2: Abilities.REGENERATOR, 3: Abilities.REGENERATOR, 4: Abilities.REGENERATOR, 5: Abilities.REGENERATOR, 6: Abilities.REGENERATOR, 7: Abilities.REGENERATOR, 8: Abilities.REGENERATOR, 9: Abilities.REGENERATOR }, - [Species.FALINKS]: { 0: Abilities.DAUNTLESS_SHIELD }, - [Species.PINCURCHIN]: { 0: Abilities.ELECTROMORPHOSIS }, - [Species.SNOM]: { 0: Abilities.SNOW_WARNING }, - [Species.FROSMOTH]: { 0: Abilities.SNOW_WARNING }, - [Species.STONJOURNER]: { 0: Abilities.STURDY }, - [Species.EISCUE]: { 0: Abilities.ICE_SCALES, 1: Abilities.ICE_SCALES }, - [Species.INDEEDEE]: { 0: Abilities.HOSPITALITY, 1: Abilities.FRIEND_GUARD }, - [Species.MORPEKO]: { 0: Abilities.MOODY, 1: Abilities.MOODY }, - [Species.CUFANT]: { 0: Abilities.EARTH_EATER }, - [Species.COPPERAJAH]: { 0: Abilities.EARTH_EATER, 1: Abilities.EARTH_EATER }, - [Species.DRACOZOLT]: { 0: Abilities.NO_GUARD }, - [Species.ARCTOZOLT]: { 0: Abilities.WATER_ABSORB }, - [Species.DRACOVISH]: { 0: Abilities.THERMAL_EXCHANGE }, - [Species.ARCTOVISH]: { 0: Abilities.STRONG_JAW }, - [Species.DURALUDON]: { 0: Abilities.FILTER, 1: Abilities.UNAWARE }, - [Species.ARCHALUDON]: { 0: Abilities.TRANSISTOR }, - [Species.DREEPY]: { 0: Abilities.TECHNICIAN }, - [Species.DRAKLOAK]: { 0: Abilities.PARENTAL_BOND }, - [Species.DRAGAPULT]: { 0: Abilities.PARENTAL_BOND }, - [Species.ZACIAN]: { 0: Abilities.UNNERVE, 1: Abilities.UNNERVE }, - [Species.ZAMAZENTA]: { 0: Abilities.UNNERVE, 1: Abilities.UNNERVE }, - [Species.ETERNATUS]: { 0: Abilities.NEUTRALIZING_GAS, 1: Abilities.NEUTRALIZING_GAS }, - [Species.KUBFU]: { 0: Abilities.IRON_FIST }, - [Species.URSHIFU]: { 0: Abilities.IRON_FIST, 1: Abilities.IRON_FIST, 2: Abilities.IRON_FIST, 3: Abilities.IRON_FIST }, - [Species.ZARUDE]: { 0: Abilities.TOUGH_CLAWS, 1: Abilities.TOUGH_CLAWS }, - [Species.REGIELEKI]: { 0: Abilities.ELECTRIC_SURGE }, - [Species.REGIDRAGO]: { 0: Abilities.MULTISCALE }, - [Species.GLASTRIER]: { 0: Abilities.FILTER }, - [Species.SPECTRIER]: { 0: Abilities.DAZZLING }, - [Species.CALYREX]: { 0: Abilities.HARVEST, 1: Abilities.FILTER, 2: Abilities.DAZZLING }, - [Species.ENAMORUS]: { 0: Abilities.FAIRY_AURA, 1: Abilities.FAIRY_AURA }, - [Species.GALAR_MEOWTH]: { 0: Abilities.UNBURDEN }, - [Species.PERRSERKER]: { 0: Abilities.UNBURDEN }, - [Species.GALAR_PONYTA]: { 0: Abilities.CHILLING_NEIGH }, - [Species.GALAR_RAPIDASH]: { 0: Abilities.CHILLING_NEIGH }, - [Species.GALAR_SLOWPOKE]: { 0: Abilities.OBLIVIOUS }, - [Species.GALAR_SLOWBRO]: { 0: Abilities.NEUROFORCE }, - [Species.GALAR_SLOWKING]: { 0: Abilities.INTIMIDATE }, - [Species.GALAR_FARFETCHD]: { 0: Abilities.STAKEOUT }, - [Species.SIRFETCHD]: { 0: Abilities.INTREPID_SWORD }, - [Species.GALAR_ARTICUNO]: { 0: Abilities.SERENE_GRACE }, - [Species.GALAR_ZAPDOS]: { 0: Abilities.TOUGH_CLAWS }, - [Species.GALAR_MOLTRES]: { 0: Abilities.DARK_AURA }, - [Species.GALAR_CORSOLA]: { 0: Abilities.SHADOW_SHIELD }, - [Species.CURSOLA]: { 0: Abilities.SHADOW_SHIELD }, - [Species.GALAR_ZIGZAGOON]: { 0: Abilities.POISON_HEAL }, - [Species.GALAR_LINOONE]: { 0: Abilities.POISON_HEAL }, - [Species.OBSTAGOON]: { 0: Abilities.POISON_HEAL }, - [Species.GALAR_DARUMAKA]: { 0: Abilities.FLASH_FIRE }, - [Species.GALAR_DARMANITAN]: { 0: Abilities.FLASH_FIRE, 1: Abilities.FLASH_FIRE }, - [Species.GALAR_YAMASK]: { 0: Abilities.TABLETS_OF_RUIN }, - [Species.RUNERIGUS]: { 0: Abilities.TABLETS_OF_RUIN }, - [Species.GALAR_STUNFISK]: { 0: Abilities.ARENA_TRAP }, - [Species.HISUI_GROWLITHE]: { 0: Abilities.RECKLESS }, - [Species.HISUI_ARCANINE]: { 0: Abilities.RECKLESS }, - [Species.HISUI_VOLTORB]: { 0: Abilities.TRANSISTOR }, - [Species.HISUI_ELECTRODE]: { 0: Abilities.TRANSISTOR }, - [Species.HISUI_QWILFISH]: { 0: Abilities.MERCILESS }, - [Species.OVERQWIL]: { 0: Abilities.MERCILESS }, - [Species.HISUI_SNEASEL]: { 0: Abilities.SCRAPPY }, - [Species.SNEASLER]: { 0: Abilities.SCRAPPY }, - [Species.HISUI_ZORUA]: { 0: Abilities.SHADOW_SHIELD }, - [Species.HISUI_ZOROARK]: { 0: Abilities.SHADOW_SHIELD }, + [SpeciesId.GROOKEY]: { 0: AbilityId.PICKPOCKET }, + [SpeciesId.THWACKEY]: { 0: AbilityId.PICKPOCKET }, + [SpeciesId.RILLABOOM]: { 0: AbilityId.GRASS_PELT, 1: AbilityId.GRASS_PELT }, + [SpeciesId.SCORBUNNY]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.RABOOT]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.CINDERACE]: { 0: AbilityId.NO_GUARD, 1: AbilityId.NO_GUARD }, + [SpeciesId.SOBBLE]: { 0: AbilityId.SUPER_LUCK }, + [SpeciesId.DRIZZILE]: { 0: AbilityId.SUPER_LUCK }, + [SpeciesId.INTELEON]: { 0: AbilityId.SUPER_LUCK, 1: AbilityId.SUPER_LUCK }, + [SpeciesId.SKWOVET]: { 0: AbilityId.HARVEST }, + [SpeciesId.GREEDENT]: { 0: AbilityId.HARVEST }, + [SpeciesId.ROOKIDEE]: { 0: AbilityId.GALE_WINGS }, + [SpeciesId.CORVISQUIRE]: { 0: AbilityId.GALE_WINGS }, + [SpeciesId.CORVIKNIGHT]: { 0: AbilityId.IRON_BARBS, 1: AbilityId.IRON_BARBS }, + [SpeciesId.BLIPBUG]: { 0: AbilityId.RUN_AWAY }, + [SpeciesId.DOTTLER]: { 0: AbilityId.PSYCHIC_SURGE }, + [SpeciesId.ORBEETLE]: { 0: AbilityId.PSYCHIC_SURGE, 1: AbilityId.PSYCHIC_SURGE }, + [SpeciesId.NICKIT]: { 0: AbilityId.MAGICIAN }, + [SpeciesId.THIEVUL]: { 0: AbilityId.MAGICIAN }, + [SpeciesId.GOSSIFLEUR]: { 0: AbilityId.SEED_SOWER }, + [SpeciesId.ELDEGOSS]: { 0: AbilityId.GRASSY_SURGE }, + [SpeciesId.WOOLOO]: { 0: AbilityId.SCRAPPY }, + [SpeciesId.DUBWOOL]: { 0: AbilityId.SCRAPPY }, + [SpeciesId.CHEWTLE]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.DREDNAW]: { 0: AbilityId.SOLID_ROCK, 1: AbilityId.SOLID_ROCK }, + [SpeciesId.YAMPER]: { 0: AbilityId.PICKUP }, + [SpeciesId.BOLTUND]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.ROLYCOLY]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.CARKOL]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.COALOSSAL]: { 0: AbilityId.SOLID_ROCK, 1: AbilityId.SOLID_ROCK }, + [SpeciesId.APPLIN]: { 0: AbilityId.STURDY }, + [SpeciesId.FLAPPLE]: { 0: AbilityId.NO_GUARD, 1: AbilityId.NO_GUARD }, + [SpeciesId.APPLETUN]: { 0: AbilityId.WELL_BAKED_BODY, 1: AbilityId.WELL_BAKED_BODY }, + [SpeciesId.DIPPLIN]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.HYDRAPPLE]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.SILICOBRA]: { 0: AbilityId.SAND_RUSH }, + [SpeciesId.SANDACONDA]: { 0: AbilityId.SAND_RUSH, 1: AbilityId.SAND_RUSH }, + [SpeciesId.CRAMORANT]: { 0: AbilityId.LIGHTNING_ROD, 1: AbilityId.LIGHTNING_ROD, 2: AbilityId.LIGHTNING_ROD }, + [SpeciesId.ARROKUDA]: { 0: AbilityId.SPEED_BOOST }, + [SpeciesId.BARRASKEWDA]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.TOXEL]: { 0: AbilityId.ELECTRIC_SURGE }, + [SpeciesId.TOXTRICITY]: { 0: AbilityId.ELECTRIC_SURGE, 1: AbilityId.ELECTRIC_SURGE, 2: AbilityId.ELECTRIC_SURGE }, + [SpeciesId.SIZZLIPEDE]: { 0: AbilityId.HUSTLE }, + [SpeciesId.CENTISKORCH]: { 0: AbilityId.HUSTLE, 1: AbilityId.HUSTLE }, + [SpeciesId.CLOBBOPUS]: { 0: AbilityId.WATER_BUBBLE }, + [SpeciesId.GRAPPLOCT]: { 0: AbilityId.WATER_BUBBLE }, + [SpeciesId.SINISTEA]: { 0: AbilityId.SHADOW_SHIELD, 1: AbilityId.SHADOW_SHIELD }, + [SpeciesId.POLTEAGEIST]: { 0: AbilityId.SHADOW_SHIELD, 1: AbilityId.SHADOW_SHIELD }, + [SpeciesId.HATENNA]: { 0: AbilityId.FAIRY_AURA }, + [SpeciesId.HATTREM]: { 0: AbilityId.FAIRY_AURA }, + [SpeciesId.HATTERENE]: { 0: AbilityId.FAIRY_AURA, 1: AbilityId.FAIRY_AURA }, + [SpeciesId.IMPIDIMP]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.MORGREM]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.GRIMMSNARL]: { 0: AbilityId.INTIMIDATE, 1: AbilityId.INTIMIDATE }, + [SpeciesId.MILCERY]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.ALCREMIE]: { 0: AbilityId.REGENERATOR, 1: AbilityId.REGENERATOR, 2: AbilityId.REGENERATOR, 3: AbilityId.REGENERATOR, 4: AbilityId.REGENERATOR, 5: AbilityId.REGENERATOR, 6: AbilityId.REGENERATOR, 7: AbilityId.REGENERATOR, 8: AbilityId.REGENERATOR, 9: AbilityId.REGENERATOR }, + [SpeciesId.FALINKS]: { 0: AbilityId.DAUNTLESS_SHIELD }, + [SpeciesId.PINCURCHIN]: { 0: AbilityId.ELECTROMORPHOSIS }, + [SpeciesId.SNOM]: { 0: AbilityId.SNOW_WARNING }, + [SpeciesId.FROSMOTH]: { 0: AbilityId.SNOW_WARNING }, + [SpeciesId.STONJOURNER]: { 0: AbilityId.STURDY }, + [SpeciesId.EISCUE]: { 0: AbilityId.ICE_SCALES, 1: AbilityId.ICE_SCALES }, + [SpeciesId.INDEEDEE]: { 0: AbilityId.HOSPITALITY, 1: AbilityId.FRIEND_GUARD }, + [SpeciesId.MORPEKO]: { 0: AbilityId.MOODY, 1: AbilityId.MOODY }, + [SpeciesId.CUFANT]: { 0: AbilityId.EARTH_EATER }, + [SpeciesId.COPPERAJAH]: { 0: AbilityId.EARTH_EATER, 1: AbilityId.EARTH_EATER }, + [SpeciesId.DRACOZOLT]: { 0: AbilityId.NO_GUARD }, + [SpeciesId.ARCTOZOLT]: { 0: AbilityId.WATER_ABSORB }, + [SpeciesId.DRACOVISH]: { 0: AbilityId.THERMAL_EXCHANGE }, + [SpeciesId.ARCTOVISH]: { 0: AbilityId.STRONG_JAW }, + [SpeciesId.DURALUDON]: { 0: AbilityId.FILTER, 1: AbilityId.UNAWARE }, + [SpeciesId.ARCHALUDON]: { 0: AbilityId.TRANSISTOR }, + [SpeciesId.DREEPY]: { 0: AbilityId.TECHNICIAN }, + [SpeciesId.DRAKLOAK]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.DRAGAPULT]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.ZACIAN]: { 0: AbilityId.UNNERVE, 1: AbilityId.UNNERVE }, + [SpeciesId.ZAMAZENTA]: { 0: AbilityId.UNNERVE, 1: AbilityId.UNNERVE }, + [SpeciesId.ETERNATUS]: { 0: AbilityId.NEUTRALIZING_GAS, 1: AbilityId.NEUTRALIZING_GAS }, + [SpeciesId.KUBFU]: { 0: AbilityId.IRON_FIST }, + [SpeciesId.URSHIFU]: { 0: AbilityId.IRON_FIST, 1: AbilityId.IRON_FIST, 2: AbilityId.IRON_FIST, 3: AbilityId.IRON_FIST }, + [SpeciesId.ZARUDE]: { 0: AbilityId.TOUGH_CLAWS, 1: AbilityId.TOUGH_CLAWS }, + [SpeciesId.REGIELEKI]: { 0: AbilityId.ELECTRIC_SURGE }, + [SpeciesId.REGIDRAGO]: { 0: AbilityId.MULTISCALE }, + [SpeciesId.GLASTRIER]: { 0: AbilityId.FILTER }, + [SpeciesId.SPECTRIER]: { 0: AbilityId.DAZZLING }, + [SpeciesId.CALYREX]: { 0: AbilityId.HARVEST, 1: AbilityId.FILTER, 2: AbilityId.DAZZLING }, + [SpeciesId.ENAMORUS]: { 0: AbilityId.FAIRY_AURA, 1: AbilityId.FAIRY_AURA }, + [SpeciesId.GALAR_MEOWTH]: { 0: AbilityId.UNBURDEN }, + [SpeciesId.PERRSERKER]: { 0: AbilityId.UNBURDEN }, + [SpeciesId.GALAR_PONYTA]: { 0: AbilityId.CHILLING_NEIGH }, + [SpeciesId.GALAR_RAPIDASH]: { 0: AbilityId.CHILLING_NEIGH }, + [SpeciesId.GALAR_SLOWPOKE]: { 0: AbilityId.OBLIVIOUS }, + [SpeciesId.GALAR_SLOWBRO]: { 0: AbilityId.NEUROFORCE }, + [SpeciesId.GALAR_SLOWKING]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.GALAR_FARFETCHD]: { 0: AbilityId.STAKEOUT }, + [SpeciesId.SIRFETCHD]: { 0: AbilityId.INTREPID_SWORD }, + [SpeciesId.GALAR_ARTICUNO]: { 0: AbilityId.SERENE_GRACE }, + [SpeciesId.GALAR_ZAPDOS]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.GALAR_MOLTRES]: { 0: AbilityId.DARK_AURA }, + [SpeciesId.GALAR_CORSOLA]: { 0: AbilityId.SHADOW_SHIELD }, + [SpeciesId.CURSOLA]: { 0: AbilityId.SHADOW_SHIELD }, + [SpeciesId.GALAR_ZIGZAGOON]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.GALAR_LINOONE]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.OBSTAGOON]: { 0: AbilityId.POISON_HEAL }, + [SpeciesId.GALAR_DARUMAKA]: { 0: AbilityId.FLASH_FIRE }, + [SpeciesId.GALAR_DARMANITAN]: { 0: AbilityId.FLASH_FIRE, 1: AbilityId.FLASH_FIRE }, + [SpeciesId.GALAR_YAMASK]: { 0: AbilityId.TABLETS_OF_RUIN }, + [SpeciesId.RUNERIGUS]: { 0: AbilityId.TABLETS_OF_RUIN }, + [SpeciesId.GALAR_STUNFISK]: { 0: AbilityId.ARENA_TRAP }, + [SpeciesId.HISUI_GROWLITHE]: { 0: AbilityId.RECKLESS }, + [SpeciesId.HISUI_ARCANINE]: { 0: AbilityId.RECKLESS }, + [SpeciesId.HISUI_VOLTORB]: { 0: AbilityId.TRANSISTOR }, + [SpeciesId.HISUI_ELECTRODE]: { 0: AbilityId.TRANSISTOR }, + [SpeciesId.HISUI_QWILFISH]: { 0: AbilityId.MERCILESS }, + [SpeciesId.OVERQWIL]: { 0: AbilityId.MERCILESS }, + [SpeciesId.HISUI_SNEASEL]: { 0: AbilityId.SCRAPPY }, + [SpeciesId.SNEASLER]: { 0: AbilityId.SCRAPPY }, + [SpeciesId.HISUI_ZORUA]: { 0: AbilityId.SHADOW_SHIELD }, + [SpeciesId.HISUI_ZOROARK]: { 0: AbilityId.SHADOW_SHIELD }, - [Species.SPRIGATITO]: { 0: Abilities.PICKUP }, - [Species.FLORAGATO]: { 0: Abilities.MAGICIAN }, - [Species.MEOWSCARADA]: { 0: Abilities.MAGICIAN }, - [Species.FUECOCO]: { 0: Abilities.GLUTTONY }, - [Species.CROCALOR]: { 0: Abilities.PUNK_ROCK }, - [Species.SKELEDIRGE]: { 0: Abilities.PUNK_ROCK }, - [Species.QUAXLY]: { 0: Abilities.OPPORTUNIST }, - [Species.QUAXWELL]: { 0: Abilities.OPPORTUNIST }, - [Species.QUAQUAVAL]: { 0: Abilities.OPPORTUNIST }, - [Species.LECHONK]: { 0: Abilities.SIMPLE }, - [Species.OINKOLOGNE]: { 0: Abilities.SIMPLE, 1: Abilities.SIMPLE }, - [Species.TAROUNTULA]: { 0: Abilities.HONEY_GATHER }, - [Species.SPIDOPS]: { 0: Abilities.HONEY_GATHER }, - [Species.NYMBLE]: { 0: Abilities.TECHNICIAN }, - [Species.LOKIX]: { 0: Abilities.GUTS }, - [Species.PAWMI]: { 0: Abilities.TRANSISTOR }, - [Species.PAWMO]: { 0: Abilities.TRANSISTOR }, - [Species.PAWMOT]: { 0: Abilities.TRANSISTOR }, - [Species.TANDEMAUS]: { 0: Abilities.FRIEND_GUARD }, - [Species.MAUSHOLD]: { 0: Abilities.SCRAPPY, 1: Abilities.SCRAPPY }, - [Species.FIDOUGH]: { 0: Abilities.WATER_ABSORB }, - [Species.DACHSBUN]: { 0: Abilities.WATER_ABSORB }, - [Species.SMOLIV]: { 0: Abilities.RIPEN }, - [Species.DOLLIV]: { 0: Abilities.RIPEN }, - [Species.ARBOLIVA]: { 0: Abilities.RIPEN }, - [Species.SQUAWKABILLY]: { 0: Abilities.MOXIE, 1: Abilities.MOXIE, 2: Abilities.MOXIE, 3: Abilities.MOXIE }, - [Species.NACLI]: { 0: Abilities.SOLID_ROCK }, - [Species.NACLSTACK]: { 0: Abilities.SOLID_ROCK }, - [Species.GARGANACL]: { 0: Abilities.SOLID_ROCK }, - [Species.CHARCADET]: { 0: Abilities.BATTLE_ARMOR }, - [Species.ARMAROUGE]: { 0: Abilities.PRISM_ARMOR }, - [Species.CERULEDGE]: { 0: Abilities.PRISM_ARMOR }, - [Species.TADBULB]: { 0: Abilities.LEVITATE }, - [Species.BELLIBOLT]: { 0: Abilities.STAMINA }, - [Species.WATTREL]: { 0: Abilities.SHEER_FORCE }, - [Species.KILOWATTREL]: { 0: Abilities.SHEER_FORCE }, - [Species.MASCHIFF]: { 0: Abilities.STRONG_JAW }, - [Species.MABOSSTIFF]: { 0: Abilities.STRONG_JAW }, - [Species.SHROODLE]: { 0: Abilities.CORROSION }, - [Species.GRAFAIAI]: { 0: Abilities.CORROSION }, - [Species.BRAMBLIN]: { 0: Abilities.WANDERING_SPIRIT }, - [Species.BRAMBLEGHAST]: { 0: Abilities.SHADOW_SHIELD }, - [Species.TOEDSCOOL]: { 0: Abilities.RUN_AWAY }, - [Species.TOEDSCRUEL]: { 0: Abilities.PRANKSTER }, - [Species.KLAWF]: { 0: Abilities.WATER_ABSORB }, - [Species.CAPSAKID]: { 0: Abilities.FLOWER_GIFT }, - [Species.SCOVILLAIN]: { 0: Abilities.PARENTAL_BOND }, - [Species.RELLOR]: { 0: Abilities.PRANKSTER }, - [Species.RABSCA]: { 0: Abilities.PRANKSTER }, - [Species.FLITTLE]: { 0: Abilities.DAZZLING }, - [Species.ESPATHRA]: { 0: Abilities.DAZZLING }, - [Species.TINKATINK]: { 0: Abilities.STEELWORKER }, - [Species.TINKATUFF]: { 0: Abilities.STEELWORKER }, - [Species.TINKATON]: { 0: Abilities.STEELWORKER }, - [Species.WIGLETT]: { 0: Abilities.STURDY }, - [Species.WUGTRIO]: { 0: Abilities.STURDY }, - [Species.BOMBIRDIER]: { 0: Abilities.UNBURDEN }, - [Species.FINIZEN]: { 0: Abilities.SWIFT_SWIM }, - [Species.PALAFIN]: { 0: Abilities.EMERGENCY_EXIT, 1: Abilities.IRON_FIST }, - [Species.VAROOM]: { 0: Abilities.LEVITATE }, - [Species.REVAVROOM]: { 0: Abilities.LEVITATE, 1: Abilities.DARK_AURA, 2: Abilities.FLASH_FIRE, 3: Abilities.MERCILESS, 4: Abilities.FILTER, 5: Abilities.SCRAPPY }, - [Species.CYCLIZAR]: { 0: Abilities.PROTEAN }, - [Species.ORTHWORM]: { 0: Abilities.REGENERATOR }, - [Species.GLIMMET]: { 0: Abilities.STURDY }, - [Species.GLIMMORA]: { 0: Abilities.TERA_SHELL }, - [Species.GREAVARD]: { 0: Abilities.UNAWARE }, - [Species.HOUNDSTONE]: { 0: Abilities.UNAWARE }, - [Species.FLAMIGO]: { 0: Abilities.MOXIE }, - [Species.CETODDLE]: { 0: Abilities.REFRIGERATE }, - [Species.CETITAN]: { 0: Abilities.REFRIGERATE }, - [Species.VELUZA]: { 0: Abilities.SUPER_LUCK }, - [Species.DONDOZO]: { 0: Abilities.DRAGONS_MAW }, - [Species.TATSUGIRI]: { 0: Abilities.FLUFFY, 1: Abilities.FLUFFY, 2: Abilities.FLUFFY }, - [Species.GREAT_TUSK]: { 0: Abilities.INTIMIDATE }, - [Species.SCREAM_TAIL]: { 0: Abilities.UNAWARE }, - [Species.BRUTE_BONNET]: { 0: Abilities.CHLOROPHYLL }, - [Species.FLUTTER_MANE]: { 0: Abilities.DAZZLING }, - [Species.SLITHER_WING]: { 0: Abilities.SCRAPPY }, - [Species.SANDY_SHOCKS]: { 0: Abilities.ELECTRIC_SURGE }, - [Species.IRON_TREADS]: { 0: Abilities.DAUNTLESS_SHIELD }, - [Species.IRON_BUNDLE]: { 0: Abilities.SNOW_WARNING }, - [Species.IRON_HANDS]: { 0: Abilities.IRON_FIST }, - [Species.IRON_JUGULIS]: { 0: Abilities.LIGHTNING_ROD }, - [Species.IRON_MOTH]: { 0: Abilities.LEVITATE }, - [Species.IRON_THORNS]: { 0: Abilities.SAND_STREAM }, - [Species.FRIGIBAX]: { 0: Abilities.INTIMIDATE }, - [Species.ARCTIBAX]: { 0: Abilities.INTIMIDATE }, - [Species.BAXCALIBUR]: { 0: Abilities.INTIMIDATE }, - [Species.GIMMIGHOUL]: { 0: Abilities.HONEY_GATHER, 1: Abilities.HONEY_GATHER }, - [Species.GHOLDENGO]: { 0: Abilities.HONEY_GATHER }, - [Species.WO_CHIEN]: { 0: Abilities.VESSEL_OF_RUIN }, - [Species.CHIEN_PAO]: { 0: Abilities.INTIMIDATE }, - [Species.TING_LU]: { 0: Abilities.STAMINA }, - [Species.CHI_YU]: { 0: Abilities.BERSERK }, - [Species.ROARING_MOON]: { 0: Abilities.INTIMIDATE }, - [Species.IRON_VALIANT]: { 0: Abilities.NEUROFORCE }, - [Species.KORAIDON]: { 0: Abilities.THERMAL_EXCHANGE }, - [Species.MIRAIDON]: { 0: Abilities.COMPOUND_EYES }, - [Species.WALKING_WAKE]: { 0: Abilities.BEAST_BOOST }, - [Species.IRON_LEAVES]: { 0: Abilities.SHARPNESS }, - [Species.POLTCHAGEIST]: { 0: Abilities.TRIAGE, 1: Abilities.TRIAGE }, - [Species.SINISTCHA]: { 0: Abilities.TRIAGE, 1: Abilities.TRIAGE }, - [Species.OKIDOGI]: { 0: Abilities.DARK_AURA }, - [Species.MUNKIDORI]: { 0: Abilities.MAGICIAN }, - [Species.FEZANDIPITI]: { 0: Abilities.PIXILATE }, - [Species.OGERPON]: { 0: Abilities.OPPORTUNIST, 1: Abilities.SUPER_LUCK, 2: Abilities.FLASH_FIRE, 3: Abilities.MAGIC_GUARD, 4: Abilities.OPPORTUNIST, 5: Abilities.SUPER_LUCK, 6: Abilities.FLASH_FIRE, 7: Abilities.MAGIC_GUARD }, - [Species.GOUGING_FIRE]: { 0: Abilities.BEAST_BOOST }, - [Species.RAGING_BOLT]: { 0: Abilities.BEAST_BOOST }, - [Species.IRON_BOULDER]: { 0: Abilities.SHARPNESS }, - [Species.IRON_CROWN]: { 0: Abilities.SHARPNESS }, - [Species.TERAPAGOS]: { 0: Abilities.SHIELD_DUST, 1: Abilities.SHIELD_DUST, 2: Abilities.SHIELD_DUST }, - [Species.PECHARUNT]: { 0: Abilities.TOXIC_CHAIN }, - [Species.PALDEA_TAUROS]: { 0: Abilities.STAMINA, 1: Abilities.ADAPTABILITY, 2: Abilities.ADAPTABILITY }, - [Species.PALDEA_WOOPER]: { 0: Abilities.POISON_TOUCH }, - [Species.CLODSIRE]: { 0: Abilities.THICK_FAT }, - [Species.BLOODMOON_URSALUNA]: { 0: Abilities.BERSERK } + [SpeciesId.SPRIGATITO]: { 0: AbilityId.PICKUP }, + [SpeciesId.FLORAGATO]: { 0: AbilityId.MAGICIAN }, + [SpeciesId.MEOWSCARADA]: { 0: AbilityId.MAGICIAN }, + [SpeciesId.FUECOCO]: { 0: AbilityId.GLUTTONY }, + [SpeciesId.CROCALOR]: { 0: AbilityId.PUNK_ROCK }, + [SpeciesId.SKELEDIRGE]: { 0: AbilityId.PUNK_ROCK }, + [SpeciesId.QUAXLY]: { 0: AbilityId.OPPORTUNIST }, + [SpeciesId.QUAXWELL]: { 0: AbilityId.OPPORTUNIST }, + [SpeciesId.QUAQUAVAL]: { 0: AbilityId.OPPORTUNIST }, + [SpeciesId.LECHONK]: { 0: AbilityId.SIMPLE }, + [SpeciesId.OINKOLOGNE]: { 0: AbilityId.SIMPLE, 1: AbilityId.SIMPLE }, + [SpeciesId.TAROUNTULA]: { 0: AbilityId.HONEY_GATHER }, + [SpeciesId.SPIDOPS]: { 0: AbilityId.HONEY_GATHER }, + [SpeciesId.NYMBLE]: { 0: AbilityId.TECHNICIAN }, + [SpeciesId.LOKIX]: { 0: AbilityId.GUTS }, + [SpeciesId.PAWMI]: { 0: AbilityId.TRANSISTOR }, + [SpeciesId.PAWMO]: { 0: AbilityId.TRANSISTOR }, + [SpeciesId.PAWMOT]: { 0: AbilityId.TRANSISTOR }, + [SpeciesId.TANDEMAUS]: { 0: AbilityId.FRIEND_GUARD }, + [SpeciesId.MAUSHOLD]: { 0: AbilityId.SCRAPPY, 1: AbilityId.SCRAPPY }, + [SpeciesId.FIDOUGH]: { 0: AbilityId.WATER_ABSORB }, + [SpeciesId.DACHSBUN]: { 0: AbilityId.WATER_ABSORB }, + [SpeciesId.SMOLIV]: { 0: AbilityId.RIPEN }, + [SpeciesId.DOLLIV]: { 0: AbilityId.RIPEN }, + [SpeciesId.ARBOLIVA]: { 0: AbilityId.RIPEN }, + [SpeciesId.SQUAWKABILLY]: { 0: AbilityId.MOXIE, 1: AbilityId.MOXIE, 2: AbilityId.MOXIE, 3: AbilityId.MOXIE }, + [SpeciesId.NACLI]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.NACLSTACK]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.GARGANACL]: { 0: AbilityId.SOLID_ROCK }, + [SpeciesId.CHARCADET]: { 0: AbilityId.BATTLE_ARMOR }, + [SpeciesId.ARMAROUGE]: { 0: AbilityId.PRISM_ARMOR }, + [SpeciesId.CERULEDGE]: { 0: AbilityId.PRISM_ARMOR }, + [SpeciesId.TADBULB]: { 0: AbilityId.LEVITATE }, + [SpeciesId.BELLIBOLT]: { 0: AbilityId.STAMINA }, + [SpeciesId.WATTREL]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.KILOWATTREL]: { 0: AbilityId.SHEER_FORCE }, + [SpeciesId.MASCHIFF]: { 0: AbilityId.STRONG_JAW }, + [SpeciesId.MABOSSTIFF]: { 0: AbilityId.STRONG_JAW }, + [SpeciesId.SHROODLE]: { 0: AbilityId.CORROSION }, + [SpeciesId.GRAFAIAI]: { 0: AbilityId.CORROSION }, + [SpeciesId.BRAMBLIN]: { 0: AbilityId.WANDERING_SPIRIT }, + [SpeciesId.BRAMBLEGHAST]: { 0: AbilityId.SHADOW_SHIELD }, + [SpeciesId.TOEDSCOOL]: { 0: AbilityId.RUN_AWAY }, + [SpeciesId.TOEDSCRUEL]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.KLAWF]: { 0: AbilityId.WATER_ABSORB }, + [SpeciesId.CAPSAKID]: { 0: AbilityId.FLOWER_GIFT }, + [SpeciesId.SCOVILLAIN]: { 0: AbilityId.PARENTAL_BOND }, + [SpeciesId.RELLOR]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.RABSCA]: { 0: AbilityId.PRANKSTER }, + [SpeciesId.FLITTLE]: { 0: AbilityId.DAZZLING }, + [SpeciesId.ESPATHRA]: { 0: AbilityId.DAZZLING }, + [SpeciesId.TINKATINK]: { 0: AbilityId.STEELWORKER }, + [SpeciesId.TINKATUFF]: { 0: AbilityId.STEELWORKER }, + [SpeciesId.TINKATON]: { 0: AbilityId.STEELWORKER }, + [SpeciesId.WIGLETT]: { 0: AbilityId.STURDY }, + [SpeciesId.WUGTRIO]: { 0: AbilityId.STURDY }, + [SpeciesId.BOMBIRDIER]: { 0: AbilityId.UNBURDEN }, + [SpeciesId.FINIZEN]: { 0: AbilityId.SWIFT_SWIM }, + [SpeciesId.PALAFIN]: { 0: AbilityId.EMERGENCY_EXIT, 1: AbilityId.IRON_FIST }, + [SpeciesId.VAROOM]: { 0: AbilityId.LEVITATE }, + [SpeciesId.REVAVROOM]: { 0: AbilityId.LEVITATE, 1: AbilityId.DARK_AURA, 2: AbilityId.FLASH_FIRE, 3: AbilityId.MERCILESS, 4: AbilityId.FILTER, 5: AbilityId.SCRAPPY }, + [SpeciesId.CYCLIZAR]: { 0: AbilityId.PROTEAN }, + [SpeciesId.ORTHWORM]: { 0: AbilityId.REGENERATOR }, + [SpeciesId.GLIMMET]: { 0: AbilityId.STURDY }, + [SpeciesId.GLIMMORA]: { 0: AbilityId.TERA_SHELL }, + [SpeciesId.GREAVARD]: { 0: AbilityId.UNAWARE }, + [SpeciesId.HOUNDSTONE]: { 0: AbilityId.UNAWARE }, + [SpeciesId.FLAMIGO]: { 0: AbilityId.MOXIE }, + [SpeciesId.CETODDLE]: { 0: AbilityId.REFRIGERATE }, + [SpeciesId.CETITAN]: { 0: AbilityId.REFRIGERATE }, + [SpeciesId.VELUZA]: { 0: AbilityId.SUPER_LUCK }, + [SpeciesId.DONDOZO]: { 0: AbilityId.DRAGONS_MAW }, + [SpeciesId.TATSUGIRI]: { 0: AbilityId.FLUFFY, 1: AbilityId.FLUFFY, 2: AbilityId.FLUFFY }, + [SpeciesId.GREAT_TUSK]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.SCREAM_TAIL]: { 0: AbilityId.UNAWARE }, + [SpeciesId.BRUTE_BONNET]: { 0: AbilityId.CHLOROPHYLL }, + [SpeciesId.FLUTTER_MANE]: { 0: AbilityId.DAZZLING }, + [SpeciesId.SLITHER_WING]: { 0: AbilityId.SCRAPPY }, + [SpeciesId.SANDY_SHOCKS]: { 0: AbilityId.ELECTRIC_SURGE }, + [SpeciesId.IRON_TREADS]: { 0: AbilityId.DAUNTLESS_SHIELD }, + [SpeciesId.IRON_BUNDLE]: { 0: AbilityId.SNOW_WARNING }, + [SpeciesId.IRON_HANDS]: { 0: AbilityId.IRON_FIST }, + [SpeciesId.IRON_JUGULIS]: { 0: AbilityId.LIGHTNING_ROD }, + [SpeciesId.IRON_MOTH]: { 0: AbilityId.LEVITATE }, + [SpeciesId.IRON_THORNS]: { 0: AbilityId.SAND_STREAM }, + [SpeciesId.FRIGIBAX]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.ARCTIBAX]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.BAXCALIBUR]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.GIMMIGHOUL]: { 0: AbilityId.HONEY_GATHER, 1: AbilityId.HONEY_GATHER }, + [SpeciesId.GHOLDENGO]: { 0: AbilityId.HONEY_GATHER }, + [SpeciesId.WO_CHIEN]: { 0: AbilityId.VESSEL_OF_RUIN }, + [SpeciesId.CHIEN_PAO]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.TING_LU]: { 0: AbilityId.STAMINA }, + [SpeciesId.CHI_YU]: { 0: AbilityId.BERSERK }, + [SpeciesId.ROARING_MOON]: { 0: AbilityId.INTIMIDATE }, + [SpeciesId.IRON_VALIANT]: { 0: AbilityId.NEUROFORCE }, + [SpeciesId.KORAIDON]: { 0: AbilityId.THERMAL_EXCHANGE }, + [SpeciesId.MIRAIDON]: { 0: AbilityId.COMPOUND_EYES }, + [SpeciesId.WALKING_WAKE]: { 0: AbilityId.BEAST_BOOST }, + [SpeciesId.IRON_LEAVES]: { 0: AbilityId.SHARPNESS }, + [SpeciesId.POLTCHAGEIST]: { 0: AbilityId.TRIAGE, 1: AbilityId.TRIAGE }, + [SpeciesId.SINISTCHA]: { 0: AbilityId.TRIAGE, 1: AbilityId.TRIAGE }, + [SpeciesId.OKIDOGI]: { 0: AbilityId.DARK_AURA }, + [SpeciesId.MUNKIDORI]: { 0: AbilityId.MAGICIAN }, + [SpeciesId.FEZANDIPITI]: { 0: AbilityId.PIXILATE }, + [SpeciesId.OGERPON]: { 0: AbilityId.OPPORTUNIST, 1: AbilityId.SUPER_LUCK, 2: AbilityId.FLASH_FIRE, 3: AbilityId.MAGIC_GUARD, 4: AbilityId.OPPORTUNIST, 5: AbilityId.SUPER_LUCK, 6: AbilityId.FLASH_FIRE, 7: AbilityId.MAGIC_GUARD }, + [SpeciesId.GOUGING_FIRE]: { 0: AbilityId.BEAST_BOOST }, + [SpeciesId.RAGING_BOLT]: { 0: AbilityId.BEAST_BOOST }, + [SpeciesId.IRON_BOULDER]: { 0: AbilityId.SHARPNESS }, + [SpeciesId.IRON_CROWN]: { 0: AbilityId.SHARPNESS }, + [SpeciesId.TERAPAGOS]: { 0: AbilityId.SHIELD_DUST, 1: AbilityId.SHIELD_DUST, 2: AbilityId.SHIELD_DUST }, + [SpeciesId.PECHARUNT]: { 0: AbilityId.TOXIC_CHAIN }, + [SpeciesId.PALDEA_TAUROS]: { 0: AbilityId.STAMINA, 1: AbilityId.ADAPTABILITY, 2: AbilityId.ADAPTABILITY }, + [SpeciesId.PALDEA_WOOPER]: { 0: AbilityId.POISON_TOUCH }, + [SpeciesId.CLODSIRE]: { 0: AbilityId.THICK_FAT }, + [SpeciesId.BLOODMOON_URSALUNA]: { 0: AbilityId.BERSERK } }; diff --git a/src/data/balance/pokemon-evolutions.ts b/src/data/balance/pokemon-evolutions.ts index cf1e4061987..298cf2d0719 100644 --- a/src/data/balance/pokemon-evolutions.ts +++ b/src/data/balance/pokemon-evolutions.ts @@ -6,9 +6,9 @@ import { PokemonType } from "#enums/pokemon-type"; import { randSeedInt } from "#app/utils/common"; import { WeatherType } from "#enums/weather-type"; import { Nature } from "#enums/nature"; -import { Biome } from "#enums/biome"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { BiomeId } from "#enums/biome-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { SpeciesFormKey } from "#enums/species-form-key"; import { TimeOfDay } from "#enums/time-of-day"; import { DamageMoneyRewardModifier, ExtraModifierModifier, MoneyMultiplierModifier, SpeciesStatBoosterModifier, TempExtraModifierModifier } from "#app/modifier/modifier"; @@ -77,16 +77,16 @@ export enum EvolutionItem { /** * Pokemon Evolution tuple type consisting of: - * @property 0 {@linkcode Species} The species of the Pokemon. + * @property 0 {@linkcode SpeciesId} The species of the Pokemon. * @property 1 {@linkcode number} The level at which the Pokemon evolves. */ -export type EvolutionLevel = [species: Species, level: number]; +export type EvolutionLevel = [species: SpeciesId, level: number]; export type EvolutionConditionPredicate = (p: Pokemon) => boolean; export type EvolutionConditionEnforceFunc = (p: Pokemon) => void; export class SpeciesFormEvolution { - public speciesId: Species; + public speciesId: SpeciesId; public preFormKey: string | null; public evoFormKey: string | null; public level: number; @@ -95,7 +95,7 @@ export class SpeciesFormEvolution { public wildDelay: SpeciesWildEvolutionDelay; public description = ""; - constructor(speciesId: Species, preFormKey: string | null, evoFormKey: string | null, level: number, item: EvolutionItem | null, condition: SpeciesEvolutionCondition | null, wildDelay?: SpeciesWildEvolutionDelay) { + constructor(speciesId: SpeciesId, preFormKey: string | null, evoFormKey: string | null, level: number, item: EvolutionItem | null, condition: SpeciesEvolutionCondition | null, wildDelay?: SpeciesWildEvolutionDelay) { if (!i18next.isInitialized) { initI18n(); } @@ -127,15 +127,15 @@ export class SpeciesFormEvolution { } export class SpeciesEvolution extends SpeciesFormEvolution { - constructor(speciesId: Species, level: number, item: EvolutionItem | null, condition: SpeciesEvolutionCondition | null, wildDelay?: SpeciesWildEvolutionDelay) { + constructor(speciesId: SpeciesId, level: number, item: EvolutionItem | null, condition: SpeciesEvolutionCondition | null, wildDelay?: SpeciesWildEvolutionDelay) { super(speciesId, null, null, level, item, condition, wildDelay); } } export class FusionSpeciesFormEvolution extends SpeciesFormEvolution { - public primarySpeciesId: Species; + public primarySpeciesId: SpeciesId; - constructor(primarySpeciesId: Species, evolution: SpeciesFormEvolution) { + constructor(primarySpeciesId: SpeciesId, evolution: SpeciesFormEvolution) { super(evolution.speciesId, evolution.preFormKey, evolution.evoFormKey, evolution.level, evolution.item, evolution.condition, evolution.wildDelay); this.primarySpeciesId = primarySpeciesId; @@ -181,11 +181,11 @@ class TimeOfDayEvolutionCondition extends SpeciesEvolutionCondition { } class MoveEvolutionCondition extends SpeciesEvolutionCondition { - public move: Moves; - constructor(move: Moves) { + public move: MoveId; + constructor(move: MoveId) { super(p => p.moveset.filter(m => m.moveId === move).length > 0); this.move = move; - const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join(""); + const moveKey = MoveId[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join(""); this.description = i18next.t("pokemonEvolutions:move", { move: i18next.t(`move:${moveKey}.name`) }); } } @@ -246,11 +246,11 @@ class PartyTypeEvolutionCondition extends SpeciesEvolutionCondition { } class CaughtEvolutionCondition extends SpeciesEvolutionCondition { - public species: Species; - constructor(species: Species) { + public species: SpeciesId; + constructor(species: SpeciesId) { super(() => !!globalScene.gameData.dexData[species].caughtAttr); this.species = species; - this.description = i18next.t("pokemonEvolutions:caught", { species: i18next.t(`pokemon:${Species[this.species].toLowerCase()}`) }); + this.description = i18next.t("pokemonEvolutions:caught", { species: i18next.t(`pokemon:${SpeciesId[this.species].toLowerCase()}`) }); } } @@ -283,12 +283,12 @@ class TreasureEvolutionCondition extends SpeciesEvolutionCondition { } class TyrogueEvolutionCondition extends SpeciesEvolutionCondition { - public move: Moves; - constructor(move: Moves) { + public move: MoveId; + constructor(move: MoveId) { super(p => - p.getMoveset(true).find(m => m && [ Moves.LOW_SWEEP, Moves.MACH_PUNCH, Moves.RAPID_SPIN ].includes(m.moveId))?.moveId === move); + p.getMoveset(true).find(m => m && [ MoveId.LOW_SWEEP, MoveId.MACH_PUNCH, MoveId.RAPID_SPIN ].includes(m.moveId))?.moveId === move); this.move = move; - const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join(""); + const moveKey = MoveId[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join(""); this.description = i18next.t("pokemonEvolutions:move", { move: i18next.t(`move:${moveKey}.name`) }); } } @@ -303,9 +303,9 @@ class NatureEvolutionCondition extends SpeciesEvolutionCondition { } class MoveTimeOfDayEvolutionCondition extends SpeciesEvolutionCondition { - public move: Moves; + public move: MoveId; public timesOfDay: TimeOfDay[]; - constructor(move: Moves, tod: "day" | "night") { + constructor(move: MoveId, tod: "day" | "night") { if (tod === "day") { super(p => p.moveset.filter(m => m.moveId === move).length > 0 && (globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)); this.move = move; @@ -318,14 +318,14 @@ class MoveTimeOfDayEvolutionCondition extends SpeciesEvolutionCondition { super(() => false); this.timesOfDay = []; } - const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join(""); + const moveKey = MoveId[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join(""); this.description = i18next.t("pokemonEvolutions:moveTimeOfDay", { move: i18next.t(`move:${moveKey}.name`), tod: i18next.t(`pokemonEvolutions:${tod}`) }); } } class BiomeEvolutionCondition extends SpeciesEvolutionCondition { - public biomes: Biome[]; - constructor(biomes: Biome[]) { + public biomes: BiomeId[]; + constructor(biomes: BiomeId[]) { super(() => biomes.filter(b => b === globalScene.arena.biomeType).length > 0); this.biomes = biomes; this.description = i18next.t("pokemonEvolutions:biome"); @@ -336,12 +336,12 @@ class DunsparceEvolutionCondition extends SpeciesEvolutionCondition { constructor() { super(p => { let ret = false; - if (p.moveset.filter(m => m.moveId === Moves.HYPER_DRILL).length > 0) { + if (p.moveset.filter(m => m.moveId === MoveId.HYPER_DRILL).length > 0) { globalScene.executeWithSeedOffset(() => ret = !randSeedInt(4), p.id); } return ret; }); - const moveKey = Moves[Moves.HYPER_DRILL].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join(""); + const moveKey = MoveId[MoveId.HYPER_DRILL].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join(""); this.description = i18next.t("pokemonEvolutions:move", { move: i18next.t(`move:${moveKey}.name`) }); } } @@ -361,1535 +361,1535 @@ interface PokemonEvolutions { } export const pokemonEvolutions: PokemonEvolutions = { - [Species.BULBASAUR]: [ - new SpeciesEvolution(Species.IVYSAUR, 16, null, null) + [SpeciesId.BULBASAUR]: [ + new SpeciesEvolution(SpeciesId.IVYSAUR, 16, null, null) ], - [Species.IVYSAUR]: [ - new SpeciesEvolution(Species.VENUSAUR, 32, null, null) + [SpeciesId.IVYSAUR]: [ + new SpeciesEvolution(SpeciesId.VENUSAUR, 32, null, null) ], - [Species.CHARMANDER]: [ - new SpeciesEvolution(Species.CHARMELEON, 16, null, null) + [SpeciesId.CHARMANDER]: [ + new SpeciesEvolution(SpeciesId.CHARMELEON, 16, null, null) ], - [Species.CHARMELEON]: [ - new SpeciesEvolution(Species.CHARIZARD, 36, null, null) + [SpeciesId.CHARMELEON]: [ + new SpeciesEvolution(SpeciesId.CHARIZARD, 36, null, null) ], - [Species.SQUIRTLE]: [ - new SpeciesEvolution(Species.WARTORTLE, 16, null, null) + [SpeciesId.SQUIRTLE]: [ + new SpeciesEvolution(SpeciesId.WARTORTLE, 16, null, null) ], - [Species.WARTORTLE]: [ - new SpeciesEvolution(Species.BLASTOISE, 36, null, null) + [SpeciesId.WARTORTLE]: [ + new SpeciesEvolution(SpeciesId.BLASTOISE, 36, null, null) ], - [Species.CATERPIE]: [ - new SpeciesEvolution(Species.METAPOD, 7, null, null) + [SpeciesId.CATERPIE]: [ + new SpeciesEvolution(SpeciesId.METAPOD, 7, null, null) ], - [Species.METAPOD]: [ - new SpeciesEvolution(Species.BUTTERFREE, 10, null, null) + [SpeciesId.METAPOD]: [ + new SpeciesEvolution(SpeciesId.BUTTERFREE, 10, null, null) ], - [Species.WEEDLE]: [ - new SpeciesEvolution(Species.KAKUNA, 7, null, null) + [SpeciesId.WEEDLE]: [ + new SpeciesEvolution(SpeciesId.KAKUNA, 7, null, null) ], - [Species.KAKUNA]: [ - new SpeciesEvolution(Species.BEEDRILL, 10, null, null) + [SpeciesId.KAKUNA]: [ + new SpeciesEvolution(SpeciesId.BEEDRILL, 10, null, null) ], - [Species.PIDGEY]: [ - new SpeciesEvolution(Species.PIDGEOTTO, 18, null, null) + [SpeciesId.PIDGEY]: [ + new SpeciesEvolution(SpeciesId.PIDGEOTTO, 18, null, null) ], - [Species.PIDGEOTTO]: [ - new SpeciesEvolution(Species.PIDGEOT, 36, null, null) + [SpeciesId.PIDGEOTTO]: [ + new SpeciesEvolution(SpeciesId.PIDGEOT, 36, null, null) ], - [Species.RATTATA]: [ - new SpeciesEvolution(Species.RATICATE, 20, null, null) + [SpeciesId.RATTATA]: [ + new SpeciesEvolution(SpeciesId.RATICATE, 20, null, null) ], - [Species.SPEAROW]: [ - new SpeciesEvolution(Species.FEAROW, 20, null, null) + [SpeciesId.SPEAROW]: [ + new SpeciesEvolution(SpeciesId.FEAROW, 20, null, null) ], - [Species.EKANS]: [ - new SpeciesEvolution(Species.ARBOK, 22, null, null) + [SpeciesId.EKANS]: [ + new SpeciesEvolution(SpeciesId.ARBOK, 22, null, null) ], - [Species.SANDSHREW]: [ - new SpeciesEvolution(Species.SANDSLASH, 22, null, null) + [SpeciesId.SANDSHREW]: [ + new SpeciesEvolution(SpeciesId.SANDSLASH, 22, null, null) ], - [Species.NIDORAN_F]: [ - new SpeciesEvolution(Species.NIDORINA, 16, null, null) + [SpeciesId.NIDORAN_F]: [ + new SpeciesEvolution(SpeciesId.NIDORINA, 16, null, null) ], - [Species.NIDORAN_M]: [ - new SpeciesEvolution(Species.NIDORINO, 16, null, null) + [SpeciesId.NIDORAN_M]: [ + new SpeciesEvolution(SpeciesId.NIDORINO, 16, null, null) ], - [Species.ZUBAT]: [ - new SpeciesEvolution(Species.GOLBAT, 22, null, null) + [SpeciesId.ZUBAT]: [ + new SpeciesEvolution(SpeciesId.GOLBAT, 22, null, null) ], - [Species.ODDISH]: [ - new SpeciesEvolution(Species.GLOOM, 21, null, null) + [SpeciesId.ODDISH]: [ + new SpeciesEvolution(SpeciesId.GLOOM, 21, null, null) ], - [Species.PARAS]: [ - new SpeciesEvolution(Species.PARASECT, 24, null, null) + [SpeciesId.PARAS]: [ + new SpeciesEvolution(SpeciesId.PARASECT, 24, null, null) ], - [Species.VENONAT]: [ - new SpeciesEvolution(Species.VENOMOTH, 31, null, null) + [SpeciesId.VENONAT]: [ + new SpeciesEvolution(SpeciesId.VENOMOTH, 31, null, null) ], - [Species.DIGLETT]: [ - new SpeciesEvolution(Species.DUGTRIO, 26, null, null) + [SpeciesId.DIGLETT]: [ + new SpeciesEvolution(SpeciesId.DUGTRIO, 26, null, null) ], - [Species.MEOWTH]: [ - new SpeciesFormEvolution(Species.PERSIAN, "", "", 28, null, null) + [SpeciesId.MEOWTH]: [ + new SpeciesFormEvolution(SpeciesId.PERSIAN, "", "", 28, null, null) ], - [Species.PSYDUCK]: [ - new SpeciesEvolution(Species.GOLDUCK, 33, null, null) + [SpeciesId.PSYDUCK]: [ + new SpeciesEvolution(SpeciesId.GOLDUCK, 33, null, null) ], - [Species.MANKEY]: [ - new SpeciesEvolution(Species.PRIMEAPE, 28, null, null) + [SpeciesId.MANKEY]: [ + new SpeciesEvolution(SpeciesId.PRIMEAPE, 28, null, null) ], - [Species.POLIWAG]: [ - new SpeciesEvolution(Species.POLIWHIRL, 25, null, null) + [SpeciesId.POLIWAG]: [ + new SpeciesEvolution(SpeciesId.POLIWHIRL, 25, null, null) ], - [Species.ABRA]: [ - new SpeciesEvolution(Species.KADABRA, 16, null, null) + [SpeciesId.ABRA]: [ + new SpeciesEvolution(SpeciesId.KADABRA, 16, null, null) ], - [Species.MACHOP]: [ - new SpeciesEvolution(Species.MACHOKE, 28, null, null) + [SpeciesId.MACHOP]: [ + new SpeciesEvolution(SpeciesId.MACHOKE, 28, null, null) ], - [Species.BELLSPROUT]: [ - new SpeciesEvolution(Species.WEEPINBELL, 21, null, null) + [SpeciesId.BELLSPROUT]: [ + new SpeciesEvolution(SpeciesId.WEEPINBELL, 21, null, null) ], - [Species.TENTACOOL]: [ - new SpeciesEvolution(Species.TENTACRUEL, 30, null, null) + [SpeciesId.TENTACOOL]: [ + new SpeciesEvolution(SpeciesId.TENTACRUEL, 30, null, null) ], - [Species.GEODUDE]: [ - new SpeciesEvolution(Species.GRAVELER, 25, null, null) + [SpeciesId.GEODUDE]: [ + new SpeciesEvolution(SpeciesId.GRAVELER, 25, null, null) ], - [Species.PONYTA]: [ - new SpeciesEvolution(Species.RAPIDASH, 40, null, null) + [SpeciesId.PONYTA]: [ + new SpeciesEvolution(SpeciesId.RAPIDASH, 40, null, null) ], - [Species.SLOWPOKE]: [ - new SpeciesEvolution(Species.SLOWBRO, 37, null, null), - new SpeciesEvolution(Species.SLOWKING, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.SLOWPOKE]: [ + new SpeciesEvolution(SpeciesId.SLOWBRO, 37, null, null), + new SpeciesEvolution(SpeciesId.SLOWKING, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.MAGNEMITE]: [ - new SpeciesEvolution(Species.MAGNETON, 30, null, null) + [SpeciesId.MAGNEMITE]: [ + new SpeciesEvolution(SpeciesId.MAGNETON, 30, null, null) ], - [Species.DODUO]: [ - new SpeciesEvolution(Species.DODRIO, 31, null, null) + [SpeciesId.DODUO]: [ + new SpeciesEvolution(SpeciesId.DODRIO, 31, null, null) ], - [Species.SEEL]: [ - new SpeciesEvolution(Species.DEWGONG, 34, null, null) + [SpeciesId.SEEL]: [ + new SpeciesEvolution(SpeciesId.DEWGONG, 34, null, null) ], - [Species.GRIMER]: [ - new SpeciesEvolution(Species.MUK, 38, null, null) + [SpeciesId.GRIMER]: [ + new SpeciesEvolution(SpeciesId.MUK, 38, null, null) ], - [Species.GASTLY]: [ - new SpeciesEvolution(Species.HAUNTER, 25, null, null) + [SpeciesId.GASTLY]: [ + new SpeciesEvolution(SpeciesId.HAUNTER, 25, null, null) ], - [Species.DROWZEE]: [ - new SpeciesEvolution(Species.HYPNO, 26, null, null) + [SpeciesId.DROWZEE]: [ + new SpeciesEvolution(SpeciesId.HYPNO, 26, null, null) ], - [Species.KRABBY]: [ - new SpeciesEvolution(Species.KINGLER, 28, null, null) + [SpeciesId.KRABBY]: [ + new SpeciesEvolution(SpeciesId.KINGLER, 28, null, null) ], - [Species.VOLTORB]: [ - new SpeciesEvolution(Species.ELECTRODE, 30, null, null) + [SpeciesId.VOLTORB]: [ + new SpeciesEvolution(SpeciesId.ELECTRODE, 30, null, null) ], - [Species.CUBONE]: [ - new SpeciesEvolution(Species.ALOLA_MAROWAK, 28, null, new TimeOfDayEvolutionCondition("night")), - new SpeciesEvolution(Species.MAROWAK, 28, null, new TimeOfDayEvolutionCondition("day")) + [SpeciesId.CUBONE]: [ + new SpeciesEvolution(SpeciesId.ALOLA_MAROWAK, 28, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(SpeciesId.MAROWAK, 28, null, new TimeOfDayEvolutionCondition("day")) ], - [Species.TYROGUE]: [ + [SpeciesId.TYROGUE]: [ /** * Custom: Evolves into Hitmonlee, Hitmonchan or Hitmontop at level 20 * if it knows Low Sweep, Mach Punch, or Rapid Spin, respectively. * If Tyrogue knows multiple of these moves, its evolution is based on * the first qualifying move in its moveset. */ - new SpeciesEvolution(Species.HITMONLEE, 20, null, new TyrogueEvolutionCondition(Moves.LOW_SWEEP)), - new SpeciesEvolution(Species.HITMONCHAN, 20, null, new TyrogueEvolutionCondition(Moves.MACH_PUNCH)), - new SpeciesEvolution(Species.HITMONTOP, 20, null, new TyrogueEvolutionCondition(Moves.RAPID_SPIN)), + new SpeciesEvolution(SpeciesId.HITMONLEE, 20, null, new TyrogueEvolutionCondition(MoveId.LOW_SWEEP)), + new SpeciesEvolution(SpeciesId.HITMONCHAN, 20, null, new TyrogueEvolutionCondition(MoveId.MACH_PUNCH)), + new SpeciesEvolution(SpeciesId.HITMONTOP, 20, null, new TyrogueEvolutionCondition(MoveId.RAPID_SPIN)), ], - [Species.KOFFING]: [ - new SpeciesEvolution(Species.GALAR_WEEZING, 35, null, new TimeOfDayEvolutionCondition("night")), - new SpeciesEvolution(Species.WEEZING, 35, null, new TimeOfDayEvolutionCondition("day")) + [SpeciesId.KOFFING]: [ + new SpeciesEvolution(SpeciesId.GALAR_WEEZING, 35, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(SpeciesId.WEEZING, 35, null, new TimeOfDayEvolutionCondition("day")) ], - [Species.RHYHORN]: [ - new SpeciesEvolution(Species.RHYDON, 42, null, null) + [SpeciesId.RHYHORN]: [ + new SpeciesEvolution(SpeciesId.RHYDON, 42, null, null) ], - [Species.HORSEA]: [ - new SpeciesEvolution(Species.SEADRA, 32, null, null) + [SpeciesId.HORSEA]: [ + new SpeciesEvolution(SpeciesId.SEADRA, 32, null, null) ], - [Species.GOLDEEN]: [ - new SpeciesEvolution(Species.SEAKING, 33, null, null) + [SpeciesId.GOLDEEN]: [ + new SpeciesEvolution(SpeciesId.SEAKING, 33, null, null) ], - [Species.SMOOCHUM]: [ - new SpeciesEvolution(Species.JYNX, 30, null, null) + [SpeciesId.SMOOCHUM]: [ + new SpeciesEvolution(SpeciesId.JYNX, 30, null, null) ], - [Species.ELEKID]: [ - new SpeciesEvolution(Species.ELECTABUZZ, 30, null, null) + [SpeciesId.ELEKID]: [ + new SpeciesEvolution(SpeciesId.ELECTABUZZ, 30, null, null) ], - [Species.MAGBY]: [ - new SpeciesEvolution(Species.MAGMAR, 30, null, null) + [SpeciesId.MAGBY]: [ + new SpeciesEvolution(SpeciesId.MAGMAR, 30, null, null) ], - [Species.MAGIKARP]: [ - new SpeciesEvolution(Species.GYARADOS, 20, null, null) + [SpeciesId.MAGIKARP]: [ + new SpeciesEvolution(SpeciesId.GYARADOS, 20, null, null) ], - [Species.OMANYTE]: [ - new SpeciesEvolution(Species.OMASTAR, 40, null, null) + [SpeciesId.OMANYTE]: [ + new SpeciesEvolution(SpeciesId.OMASTAR, 40, null, null) ], - [Species.KABUTO]: [ - new SpeciesEvolution(Species.KABUTOPS, 40, null, null) + [SpeciesId.KABUTO]: [ + new SpeciesEvolution(SpeciesId.KABUTOPS, 40, null, null) ], - [Species.DRATINI]: [ - new SpeciesEvolution(Species.DRAGONAIR, 30, null, null) + [SpeciesId.DRATINI]: [ + new SpeciesEvolution(SpeciesId.DRAGONAIR, 30, null, null) ], - [Species.DRAGONAIR]: [ - new SpeciesEvolution(Species.DRAGONITE, 55, null, null) + [SpeciesId.DRAGONAIR]: [ + new SpeciesEvolution(SpeciesId.DRAGONITE, 55, null, null) ], - [Species.CHIKORITA]: [ - new SpeciesEvolution(Species.BAYLEEF, 16, null, null) + [SpeciesId.CHIKORITA]: [ + new SpeciesEvolution(SpeciesId.BAYLEEF, 16, null, null) ], - [Species.BAYLEEF]: [ - new SpeciesEvolution(Species.MEGANIUM, 32, null, null) + [SpeciesId.BAYLEEF]: [ + new SpeciesEvolution(SpeciesId.MEGANIUM, 32, null, null) ], - [Species.CYNDAQUIL]: [ - new SpeciesEvolution(Species.QUILAVA, 14, null, null) + [SpeciesId.CYNDAQUIL]: [ + new SpeciesEvolution(SpeciesId.QUILAVA, 14, null, null) ], - [Species.QUILAVA]: [ - new SpeciesEvolution(Species.HISUI_TYPHLOSION, 36, null, new TimeOfDayEvolutionCondition("night")), - new SpeciesEvolution(Species.TYPHLOSION, 36, null, new TimeOfDayEvolutionCondition("day")) + [SpeciesId.QUILAVA]: [ + new SpeciesEvolution(SpeciesId.HISUI_TYPHLOSION, 36, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(SpeciesId.TYPHLOSION, 36, null, new TimeOfDayEvolutionCondition("day")) ], - [Species.TOTODILE]: [ - new SpeciesEvolution(Species.CROCONAW, 18, null, null) + [SpeciesId.TOTODILE]: [ + new SpeciesEvolution(SpeciesId.CROCONAW, 18, null, null) ], - [Species.CROCONAW]: [ - new SpeciesEvolution(Species.FERALIGATR, 30, null, null) + [SpeciesId.CROCONAW]: [ + new SpeciesEvolution(SpeciesId.FERALIGATR, 30, null, null) ], - [Species.SENTRET]: [ - new SpeciesEvolution(Species.FURRET, 15, null, null) + [SpeciesId.SENTRET]: [ + new SpeciesEvolution(SpeciesId.FURRET, 15, null, null) ], - [Species.HOOTHOOT]: [ - new SpeciesEvolution(Species.NOCTOWL, 20, null, null) + [SpeciesId.HOOTHOOT]: [ + new SpeciesEvolution(SpeciesId.NOCTOWL, 20, null, null) ], - [Species.LEDYBA]: [ - new SpeciesEvolution(Species.LEDIAN, 18, null, null) + [SpeciesId.LEDYBA]: [ + new SpeciesEvolution(SpeciesId.LEDIAN, 18, null, null) ], - [Species.SPINARAK]: [ - new SpeciesEvolution(Species.ARIADOS, 22, null, null) + [SpeciesId.SPINARAK]: [ + new SpeciesEvolution(SpeciesId.ARIADOS, 22, null, null) ], - [Species.CHINCHOU]: [ - new SpeciesEvolution(Species.LANTURN, 27, null, null) + [SpeciesId.CHINCHOU]: [ + new SpeciesEvolution(SpeciesId.LANTURN, 27, null, null) ], - [Species.NATU]: [ - new SpeciesEvolution(Species.XATU, 25, null, null) + [SpeciesId.NATU]: [ + new SpeciesEvolution(SpeciesId.XATU, 25, null, null) ], - [Species.MAREEP]: [ - new SpeciesEvolution(Species.FLAAFFY, 15, null, null) + [SpeciesId.MAREEP]: [ + new SpeciesEvolution(SpeciesId.FLAAFFY, 15, null, null) ], - [Species.FLAAFFY]: [ - new SpeciesEvolution(Species.AMPHAROS, 30, null, null) + [SpeciesId.FLAAFFY]: [ + new SpeciesEvolution(SpeciesId.AMPHAROS, 30, null, null) ], - [Species.MARILL]: [ - new SpeciesEvolution(Species.AZUMARILL, 18, null, null) + [SpeciesId.MARILL]: [ + new SpeciesEvolution(SpeciesId.AZUMARILL, 18, null, null) ], - [Species.HOPPIP]: [ - new SpeciesEvolution(Species.SKIPLOOM, 18, null, null) + [SpeciesId.HOPPIP]: [ + new SpeciesEvolution(SpeciesId.SKIPLOOM, 18, null, null) ], - [Species.SKIPLOOM]: [ - new SpeciesEvolution(Species.JUMPLUFF, 27, null, null) + [SpeciesId.SKIPLOOM]: [ + new SpeciesEvolution(SpeciesId.JUMPLUFF, 27, null, null) ], - [Species.WOOPER]: [ - new SpeciesEvolution(Species.QUAGSIRE, 20, null, null) + [SpeciesId.WOOPER]: [ + new SpeciesEvolution(SpeciesId.QUAGSIRE, 20, null, null) ], - [Species.WYNAUT]: [ - new SpeciesEvolution(Species.WOBBUFFET, 15, null, null) + [SpeciesId.WYNAUT]: [ + new SpeciesEvolution(SpeciesId.WOBBUFFET, 15, null, null) ], - [Species.PINECO]: [ - new SpeciesEvolution(Species.FORRETRESS, 31, null, null) + [SpeciesId.PINECO]: [ + new SpeciesEvolution(SpeciesId.FORRETRESS, 31, null, null) ], - [Species.SNUBBULL]: [ - new SpeciesEvolution(Species.GRANBULL, 23, null, null) + [SpeciesId.SNUBBULL]: [ + new SpeciesEvolution(SpeciesId.GRANBULL, 23, null, null) ], - [Species.TEDDIURSA]: [ - new SpeciesEvolution(Species.URSARING, 30, null, null) + [SpeciesId.TEDDIURSA]: [ + new SpeciesEvolution(SpeciesId.URSARING, 30, null, null) ], - [Species.SLUGMA]: [ - new SpeciesEvolution(Species.MAGCARGO, 38, null, null) + [SpeciesId.SLUGMA]: [ + new SpeciesEvolution(SpeciesId.MAGCARGO, 38, null, null) ], - [Species.SWINUB]: [ - new SpeciesEvolution(Species.PILOSWINE, 33, null, null) + [SpeciesId.SWINUB]: [ + new SpeciesEvolution(SpeciesId.PILOSWINE, 33, null, null) ], - [Species.REMORAID]: [ - new SpeciesEvolution(Species.OCTILLERY, 25, null, null) + [SpeciesId.REMORAID]: [ + new SpeciesEvolution(SpeciesId.OCTILLERY, 25, null, null) ], - [Species.HOUNDOUR]: [ - new SpeciesEvolution(Species.HOUNDOOM, 24, null, null) + [SpeciesId.HOUNDOUR]: [ + new SpeciesEvolution(SpeciesId.HOUNDOOM, 24, null, null) ], - [Species.PHANPY]: [ - new SpeciesEvolution(Species.DONPHAN, 25, null, null) + [SpeciesId.PHANPY]: [ + new SpeciesEvolution(SpeciesId.DONPHAN, 25, null, null) ], - [Species.LARVITAR]: [ - new SpeciesEvolution(Species.PUPITAR, 30, null, null) + [SpeciesId.LARVITAR]: [ + new SpeciesEvolution(SpeciesId.PUPITAR, 30, null, null) ], - [Species.PUPITAR]: [ - new SpeciesEvolution(Species.TYRANITAR, 55, null, null) + [SpeciesId.PUPITAR]: [ + new SpeciesEvolution(SpeciesId.TYRANITAR, 55, null, null) ], - [Species.TREECKO]: [ - new SpeciesEvolution(Species.GROVYLE, 16, null, null) + [SpeciesId.TREECKO]: [ + new SpeciesEvolution(SpeciesId.GROVYLE, 16, null, null) ], - [Species.GROVYLE]: [ - new SpeciesEvolution(Species.SCEPTILE, 36, null, null) + [SpeciesId.GROVYLE]: [ + new SpeciesEvolution(SpeciesId.SCEPTILE, 36, null, null) ], - [Species.TORCHIC]: [ - new SpeciesEvolution(Species.COMBUSKEN, 16, null, null) + [SpeciesId.TORCHIC]: [ + new SpeciesEvolution(SpeciesId.COMBUSKEN, 16, null, null) ], - [Species.COMBUSKEN]: [ - new SpeciesEvolution(Species.BLAZIKEN, 36, null, null) + [SpeciesId.COMBUSKEN]: [ + new SpeciesEvolution(SpeciesId.BLAZIKEN, 36, null, null) ], - [Species.MUDKIP]: [ - new SpeciesEvolution(Species.MARSHTOMP, 16, null, null) + [SpeciesId.MUDKIP]: [ + new SpeciesEvolution(SpeciesId.MARSHTOMP, 16, null, null) ], - [Species.MARSHTOMP]: [ - new SpeciesEvolution(Species.SWAMPERT, 36, null, null) + [SpeciesId.MARSHTOMP]: [ + new SpeciesEvolution(SpeciesId.SWAMPERT, 36, null, null) ], - [Species.POOCHYENA]: [ - new SpeciesEvolution(Species.MIGHTYENA, 18, null, null) + [SpeciesId.POOCHYENA]: [ + new SpeciesEvolution(SpeciesId.MIGHTYENA, 18, null, null) ], - [Species.ZIGZAGOON]: [ - new SpeciesEvolution(Species.LINOONE, 20, null, null) + [SpeciesId.ZIGZAGOON]: [ + new SpeciesEvolution(SpeciesId.LINOONE, 20, null, null) ], - [Species.WURMPLE]: [ - new SpeciesEvolution(Species.SILCOON, 7, null, new TimeOfDayEvolutionCondition("day")), - new SpeciesEvolution(Species.CASCOON, 7, null, new TimeOfDayEvolutionCondition("night")) + [SpeciesId.WURMPLE]: [ + new SpeciesEvolution(SpeciesId.SILCOON, 7, null, new TimeOfDayEvolutionCondition("day")), + new SpeciesEvolution(SpeciesId.CASCOON, 7, null, new TimeOfDayEvolutionCondition("night")) ], - [Species.SILCOON]: [ - new SpeciesEvolution(Species.BEAUTIFLY, 10, null, null) + [SpeciesId.SILCOON]: [ + new SpeciesEvolution(SpeciesId.BEAUTIFLY, 10, null, null) ], - [Species.CASCOON]: [ - new SpeciesEvolution(Species.DUSTOX, 10, null, null) + [SpeciesId.CASCOON]: [ + new SpeciesEvolution(SpeciesId.DUSTOX, 10, null, null) ], - [Species.LOTAD]: [ - new SpeciesEvolution(Species.LOMBRE, 14, null, null) + [SpeciesId.LOTAD]: [ + new SpeciesEvolution(SpeciesId.LOMBRE, 14, null, null) ], - [Species.SEEDOT]: [ - new SpeciesEvolution(Species.NUZLEAF, 14, null, null) + [SpeciesId.SEEDOT]: [ + new SpeciesEvolution(SpeciesId.NUZLEAF, 14, null, null) ], - [Species.TAILLOW]: [ - new SpeciesEvolution(Species.SWELLOW, 22, null, null) + [SpeciesId.TAILLOW]: [ + new SpeciesEvolution(SpeciesId.SWELLOW, 22, null, null) ], - [Species.WINGULL]: [ - new SpeciesEvolution(Species.PELIPPER, 25, null, null) + [SpeciesId.WINGULL]: [ + new SpeciesEvolution(SpeciesId.PELIPPER, 25, null, null) ], - [Species.RALTS]: [ - new SpeciesEvolution(Species.KIRLIA, 20, null, null) + [SpeciesId.RALTS]: [ + new SpeciesEvolution(SpeciesId.KIRLIA, 20, null, null) ], - [Species.KIRLIA]: [ - new SpeciesEvolution(Species.GARDEVOIR, 30, null, new GenderEvolutionCondition(Gender.FEMALE)), - new SpeciesEvolution(Species.GALLADE, 30, null, new GenderEvolutionCondition(Gender.MALE)) + [SpeciesId.KIRLIA]: [ + new SpeciesEvolution(SpeciesId.GARDEVOIR, 30, null, new GenderEvolutionCondition(Gender.FEMALE)), + new SpeciesEvolution(SpeciesId.GALLADE, 30, null, new GenderEvolutionCondition(Gender.MALE)) ], - [Species.SURSKIT]: [ - new SpeciesEvolution(Species.MASQUERAIN, 22, null, null) + [SpeciesId.SURSKIT]: [ + new SpeciesEvolution(SpeciesId.MASQUERAIN, 22, null, null) ], - [Species.SHROOMISH]: [ - new SpeciesEvolution(Species.BRELOOM, 23, null, null) + [SpeciesId.SHROOMISH]: [ + new SpeciesEvolution(SpeciesId.BRELOOM, 23, null, null) ], - [Species.SLAKOTH]: [ - new SpeciesEvolution(Species.VIGOROTH, 18, null, null) + [SpeciesId.SLAKOTH]: [ + new SpeciesEvolution(SpeciesId.VIGOROTH, 18, null, null) ], - [Species.VIGOROTH]: [ - new SpeciesEvolution(Species.SLAKING, 36, null, null) + [SpeciesId.VIGOROTH]: [ + new SpeciesEvolution(SpeciesId.SLAKING, 36, null, null) ], - [Species.NINCADA]: [ - new SpeciesEvolution(Species.NINJASK, 20, null, null), - new SpeciesEvolution(Species.SHEDINJA, 20, null, new ShedinjaEvolutionCondition()) + [SpeciesId.NINCADA]: [ + new SpeciesEvolution(SpeciesId.NINJASK, 20, null, null), + new SpeciesEvolution(SpeciesId.SHEDINJA, 20, null, new ShedinjaEvolutionCondition()) ], - [Species.WHISMUR]: [ - new SpeciesEvolution(Species.LOUDRED, 20, null, null) + [SpeciesId.WHISMUR]: [ + new SpeciesEvolution(SpeciesId.LOUDRED, 20, null, null) ], - [Species.LOUDRED]: [ - new SpeciesEvolution(Species.EXPLOUD, 40, null, null) + [SpeciesId.LOUDRED]: [ + new SpeciesEvolution(SpeciesId.EXPLOUD, 40, null, null) ], - [Species.MAKUHITA]: [ - new SpeciesEvolution(Species.HARIYAMA, 24, null, null) + [SpeciesId.MAKUHITA]: [ + new SpeciesEvolution(SpeciesId.HARIYAMA, 24, null, null) ], - [Species.ARON]: [ - new SpeciesEvolution(Species.LAIRON, 32, null, null) + [SpeciesId.ARON]: [ + new SpeciesEvolution(SpeciesId.LAIRON, 32, null, null) ], - [Species.LAIRON]: [ - new SpeciesEvolution(Species.AGGRON, 42, null, null) + [SpeciesId.LAIRON]: [ + new SpeciesEvolution(SpeciesId.AGGRON, 42, null, null) ], - [Species.MEDITITE]: [ - new SpeciesEvolution(Species.MEDICHAM, 37, null, null) + [SpeciesId.MEDITITE]: [ + new SpeciesEvolution(SpeciesId.MEDICHAM, 37, null, null) ], - [Species.ELECTRIKE]: [ - new SpeciesEvolution(Species.MANECTRIC, 26, null, null) + [SpeciesId.ELECTRIKE]: [ + new SpeciesEvolution(SpeciesId.MANECTRIC, 26, null, null) ], - [Species.GULPIN]: [ - new SpeciesEvolution(Species.SWALOT, 26, null, null) + [SpeciesId.GULPIN]: [ + new SpeciesEvolution(SpeciesId.SWALOT, 26, null, null) ], - [Species.CARVANHA]: [ - new SpeciesEvolution(Species.SHARPEDO, 30, null, null) + [SpeciesId.CARVANHA]: [ + new SpeciesEvolution(SpeciesId.SHARPEDO, 30, null, null) ], - [Species.WAILMER]: [ - new SpeciesEvolution(Species.WAILORD, 40, null, null) + [SpeciesId.WAILMER]: [ + new SpeciesEvolution(SpeciesId.WAILORD, 40, null, null) ], - [Species.NUMEL]: [ - new SpeciesEvolution(Species.CAMERUPT, 33, null, null) + [SpeciesId.NUMEL]: [ + new SpeciesEvolution(SpeciesId.CAMERUPT, 33, null, null) ], - [Species.SPOINK]: [ - new SpeciesEvolution(Species.GRUMPIG, 32, null, null) + [SpeciesId.SPOINK]: [ + new SpeciesEvolution(SpeciesId.GRUMPIG, 32, null, null) ], - [Species.TRAPINCH]: [ - new SpeciesEvolution(Species.VIBRAVA, 35, null, null) + [SpeciesId.TRAPINCH]: [ + new SpeciesEvolution(SpeciesId.VIBRAVA, 35, null, null) ], - [Species.VIBRAVA]: [ - new SpeciesEvolution(Species.FLYGON, 45, null, null) + [SpeciesId.VIBRAVA]: [ + new SpeciesEvolution(SpeciesId.FLYGON, 45, null, null) ], - [Species.CACNEA]: [ - new SpeciesEvolution(Species.CACTURNE, 32, null, null) + [SpeciesId.CACNEA]: [ + new SpeciesEvolution(SpeciesId.CACTURNE, 32, null, null) ], - [Species.SWABLU]: [ - new SpeciesEvolution(Species.ALTARIA, 35, null, null) + [SpeciesId.SWABLU]: [ + new SpeciesEvolution(SpeciesId.ALTARIA, 35, null, null) ], - [Species.BARBOACH]: [ - new SpeciesEvolution(Species.WHISCASH, 30, null, null) + [SpeciesId.BARBOACH]: [ + new SpeciesEvolution(SpeciesId.WHISCASH, 30, null, null) ], - [Species.CORPHISH]: [ - new SpeciesEvolution(Species.CRAWDAUNT, 30, null, null) + [SpeciesId.CORPHISH]: [ + new SpeciesEvolution(SpeciesId.CRAWDAUNT, 30, null, null) ], - [Species.BALTOY]: [ - new SpeciesEvolution(Species.CLAYDOL, 36, null, null) + [SpeciesId.BALTOY]: [ + new SpeciesEvolution(SpeciesId.CLAYDOL, 36, null, null) ], - [Species.LILEEP]: [ - new SpeciesEvolution(Species.CRADILY, 40, null, null) + [SpeciesId.LILEEP]: [ + new SpeciesEvolution(SpeciesId.CRADILY, 40, null, null) ], - [Species.ANORITH]: [ - new SpeciesEvolution(Species.ARMALDO, 40, null, null) + [SpeciesId.ANORITH]: [ + new SpeciesEvolution(SpeciesId.ARMALDO, 40, null, null) ], - [Species.SHUPPET]: [ - new SpeciesEvolution(Species.BANETTE, 37, null, null) + [SpeciesId.SHUPPET]: [ + new SpeciesEvolution(SpeciesId.BANETTE, 37, null, null) ], - [Species.DUSKULL]: [ - new SpeciesEvolution(Species.DUSCLOPS, 37, null, null) + [SpeciesId.DUSKULL]: [ + new SpeciesEvolution(SpeciesId.DUSCLOPS, 37, null, null) ], - [Species.SNORUNT]: [ - new SpeciesEvolution(Species.GLALIE, 42, null, new GenderEvolutionCondition(Gender.MALE)), - new SpeciesEvolution(Species.FROSLASS, 42, null, new GenderEvolutionCondition(Gender.FEMALE)) + [SpeciesId.SNORUNT]: [ + new SpeciesEvolution(SpeciesId.GLALIE, 42, null, new GenderEvolutionCondition(Gender.MALE)), + new SpeciesEvolution(SpeciesId.FROSLASS, 42, null, new GenderEvolutionCondition(Gender.FEMALE)) ], - [Species.SPHEAL]: [ - new SpeciesEvolution(Species.SEALEO, 32, null, null) + [SpeciesId.SPHEAL]: [ + new SpeciesEvolution(SpeciesId.SEALEO, 32, null, null) ], - [Species.SEALEO]: [ - new SpeciesEvolution(Species.WALREIN, 44, null, null) + [SpeciesId.SEALEO]: [ + new SpeciesEvolution(SpeciesId.WALREIN, 44, null, null) ], - [Species.BAGON]: [ - new SpeciesEvolution(Species.SHELGON, 30, null, null) + [SpeciesId.BAGON]: [ + new SpeciesEvolution(SpeciesId.SHELGON, 30, null, null) ], - [Species.SHELGON]: [ - new SpeciesEvolution(Species.SALAMENCE, 50, null, null) + [SpeciesId.SHELGON]: [ + new SpeciesEvolution(SpeciesId.SALAMENCE, 50, null, null) ], - [Species.BELDUM]: [ - new SpeciesEvolution(Species.METANG, 20, null, null) + [SpeciesId.BELDUM]: [ + new SpeciesEvolution(SpeciesId.METANG, 20, null, null) ], - [Species.METANG]: [ - new SpeciesEvolution(Species.METAGROSS, 45, null, null) + [SpeciesId.METANG]: [ + new SpeciesEvolution(SpeciesId.METAGROSS, 45, null, null) ], - [Species.TURTWIG]: [ - new SpeciesEvolution(Species.GROTLE, 18, null, null) + [SpeciesId.TURTWIG]: [ + new SpeciesEvolution(SpeciesId.GROTLE, 18, null, null) ], - [Species.GROTLE]: [ - new SpeciesEvolution(Species.TORTERRA, 32, null, null) + [SpeciesId.GROTLE]: [ + new SpeciesEvolution(SpeciesId.TORTERRA, 32, null, null) ], - [Species.CHIMCHAR]: [ - new SpeciesEvolution(Species.MONFERNO, 14, null, null) + [SpeciesId.CHIMCHAR]: [ + new SpeciesEvolution(SpeciesId.MONFERNO, 14, null, null) ], - [Species.MONFERNO]: [ - new SpeciesEvolution(Species.INFERNAPE, 36, null, null) + [SpeciesId.MONFERNO]: [ + new SpeciesEvolution(SpeciesId.INFERNAPE, 36, null, null) ], - [Species.PIPLUP]: [ - new SpeciesEvolution(Species.PRINPLUP, 16, null, null) + [SpeciesId.PIPLUP]: [ + new SpeciesEvolution(SpeciesId.PRINPLUP, 16, null, null) ], - [Species.PRINPLUP]: [ - new SpeciesEvolution(Species.EMPOLEON, 36, null, null) + [SpeciesId.PRINPLUP]: [ + new SpeciesEvolution(SpeciesId.EMPOLEON, 36, null, null) ], - [Species.STARLY]: [ - new SpeciesEvolution(Species.STARAVIA, 14, null, null) + [SpeciesId.STARLY]: [ + new SpeciesEvolution(SpeciesId.STARAVIA, 14, null, null) ], - [Species.STARAVIA]: [ - new SpeciesEvolution(Species.STARAPTOR, 34, null, null) + [SpeciesId.STARAVIA]: [ + new SpeciesEvolution(SpeciesId.STARAPTOR, 34, null, null) ], - [Species.BIDOOF]: [ - new SpeciesEvolution(Species.BIBAREL, 15, null, null) + [SpeciesId.BIDOOF]: [ + new SpeciesEvolution(SpeciesId.BIBAREL, 15, null, null) ], - [Species.KRICKETOT]: [ - new SpeciesEvolution(Species.KRICKETUNE, 10, null, null) + [SpeciesId.KRICKETOT]: [ + new SpeciesEvolution(SpeciesId.KRICKETUNE, 10, null, null) ], - [Species.SHINX]: [ - new SpeciesEvolution(Species.LUXIO, 15, null, null) + [SpeciesId.SHINX]: [ + new SpeciesEvolution(SpeciesId.LUXIO, 15, null, null) ], - [Species.LUXIO]: [ - new SpeciesEvolution(Species.LUXRAY, 30, null, null) + [SpeciesId.LUXIO]: [ + new SpeciesEvolution(SpeciesId.LUXRAY, 30, null, null) ], - [Species.CRANIDOS]: [ - new SpeciesEvolution(Species.RAMPARDOS, 30, null, null) + [SpeciesId.CRANIDOS]: [ + new SpeciesEvolution(SpeciesId.RAMPARDOS, 30, null, null) ], - [Species.SHIELDON]: [ - new SpeciesEvolution(Species.BASTIODON, 30, null, null) + [SpeciesId.SHIELDON]: [ + new SpeciesEvolution(SpeciesId.BASTIODON, 30, null, null) ], - [Species.BURMY]: [ - new SpeciesEvolution(Species.MOTHIM, 20, null, new GenderEvolutionCondition(Gender.MALE)), - new SpeciesEvolution(Species.WORMADAM, 20, null, new GenderEvolutionCondition(Gender.FEMALE)) + [SpeciesId.BURMY]: [ + new SpeciesEvolution(SpeciesId.MOTHIM, 20, null, new GenderEvolutionCondition(Gender.MALE)), + new SpeciesEvolution(SpeciesId.WORMADAM, 20, null, new GenderEvolutionCondition(Gender.FEMALE)) ], - [Species.COMBEE]: [ - new SpeciesEvolution(Species.VESPIQUEN, 21, null, new GenderEvolutionCondition(Gender.FEMALE)) + [SpeciesId.COMBEE]: [ + new SpeciesEvolution(SpeciesId.VESPIQUEN, 21, null, new GenderEvolutionCondition(Gender.FEMALE)) ], - [Species.BUIZEL]: [ - new SpeciesEvolution(Species.FLOATZEL, 26, null, null) + [SpeciesId.BUIZEL]: [ + new SpeciesEvolution(SpeciesId.FLOATZEL, 26, null, null) ], - [Species.CHERUBI]: [ - new SpeciesEvolution(Species.CHERRIM, 25, null, null) + [SpeciesId.CHERUBI]: [ + new SpeciesEvolution(SpeciesId.CHERRIM, 25, null, null) ], - [Species.SHELLOS]: [ - new SpeciesEvolution(Species.GASTRODON, 30, null, null) + [SpeciesId.SHELLOS]: [ + new SpeciesEvolution(SpeciesId.GASTRODON, 30, null, null) ], - [Species.DRIFLOON]: [ - new SpeciesEvolution(Species.DRIFBLIM, 28, null, null) + [SpeciesId.DRIFLOON]: [ + new SpeciesEvolution(SpeciesId.DRIFBLIM, 28, null, null) ], - [Species.GLAMEOW]: [ - new SpeciesEvolution(Species.PURUGLY, 38, null, null) + [SpeciesId.GLAMEOW]: [ + new SpeciesEvolution(SpeciesId.PURUGLY, 38, null, null) ], - [Species.STUNKY]: [ - new SpeciesEvolution(Species.SKUNTANK, 34, null, null) + [SpeciesId.STUNKY]: [ + new SpeciesEvolution(SpeciesId.SKUNTANK, 34, null, null) ], - [Species.BRONZOR]: [ - new SpeciesEvolution(Species.BRONZONG, 33, null, null) + [SpeciesId.BRONZOR]: [ + new SpeciesEvolution(SpeciesId.BRONZONG, 33, null, null) ], - [Species.GIBLE]: [ - new SpeciesEvolution(Species.GABITE, 24, null, null) + [SpeciesId.GIBLE]: [ + new SpeciesEvolution(SpeciesId.GABITE, 24, null, null) ], - [Species.GABITE]: [ - new SpeciesEvolution(Species.GARCHOMP, 48, null, null) + [SpeciesId.GABITE]: [ + new SpeciesEvolution(SpeciesId.GARCHOMP, 48, null, null) ], - [Species.HIPPOPOTAS]: [ - new SpeciesEvolution(Species.HIPPOWDON, 34, null, null) + [SpeciesId.HIPPOPOTAS]: [ + new SpeciesEvolution(SpeciesId.HIPPOWDON, 34, null, null) ], - [Species.SKORUPI]: [ - new SpeciesEvolution(Species.DRAPION, 40, null, null) + [SpeciesId.SKORUPI]: [ + new SpeciesEvolution(SpeciesId.DRAPION, 40, null, null) ], - [Species.CROAGUNK]: [ - new SpeciesEvolution(Species.TOXICROAK, 37, null, null) + [SpeciesId.CROAGUNK]: [ + new SpeciesEvolution(SpeciesId.TOXICROAK, 37, null, null) ], - [Species.FINNEON]: [ - new SpeciesEvolution(Species.LUMINEON, 31, null, null) + [SpeciesId.FINNEON]: [ + new SpeciesEvolution(SpeciesId.LUMINEON, 31, null, null) ], - [Species.MANTYKE]: [ - new SpeciesEvolution(Species.MANTINE, 32, null, new CaughtEvolutionCondition(Species.REMORAID), SpeciesWildEvolutionDelay.MEDIUM) + [SpeciesId.MANTYKE]: [ + new SpeciesEvolution(SpeciesId.MANTINE, 32, null, new CaughtEvolutionCondition(SpeciesId.REMORAID), SpeciesWildEvolutionDelay.MEDIUM) ], - [Species.SNOVER]: [ - new SpeciesEvolution(Species.ABOMASNOW, 40, null, null) + [SpeciesId.SNOVER]: [ + new SpeciesEvolution(SpeciesId.ABOMASNOW, 40, null, null) ], - [Species.SNIVY]: [ - new SpeciesEvolution(Species.SERVINE, 17, null, null) + [SpeciesId.SNIVY]: [ + new SpeciesEvolution(SpeciesId.SERVINE, 17, null, null) ], - [Species.SERVINE]: [ - new SpeciesEvolution(Species.SERPERIOR, 36, null, null) + [SpeciesId.SERVINE]: [ + new SpeciesEvolution(SpeciesId.SERPERIOR, 36, null, null) ], - [Species.TEPIG]: [ - new SpeciesEvolution(Species.PIGNITE, 17, null, null) + [SpeciesId.TEPIG]: [ + new SpeciesEvolution(SpeciesId.PIGNITE, 17, null, null) ], - [Species.PIGNITE]: [ - new SpeciesEvolution(Species.EMBOAR, 36, null, null) + [SpeciesId.PIGNITE]: [ + new SpeciesEvolution(SpeciesId.EMBOAR, 36, null, null) ], - [Species.OSHAWOTT]: [ - new SpeciesEvolution(Species.DEWOTT, 17, null, null) + [SpeciesId.OSHAWOTT]: [ + new SpeciesEvolution(SpeciesId.DEWOTT, 17, null, null) ], - [Species.DEWOTT]: [ - new SpeciesEvolution(Species.HISUI_SAMUROTT, 36, null, new TimeOfDayEvolutionCondition("night")), - new SpeciesEvolution(Species.SAMUROTT, 36, null, new TimeOfDayEvolutionCondition("day")) + [SpeciesId.DEWOTT]: [ + new SpeciesEvolution(SpeciesId.HISUI_SAMUROTT, 36, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(SpeciesId.SAMUROTT, 36, null, new TimeOfDayEvolutionCondition("day")) ], - [Species.PATRAT]: [ - new SpeciesEvolution(Species.WATCHOG, 20, null, null) + [SpeciesId.PATRAT]: [ + new SpeciesEvolution(SpeciesId.WATCHOG, 20, null, null) ], - [Species.LILLIPUP]: [ - new SpeciesEvolution(Species.HERDIER, 16, null, null) + [SpeciesId.LILLIPUP]: [ + new SpeciesEvolution(SpeciesId.HERDIER, 16, null, null) ], - [Species.HERDIER]: [ - new SpeciesEvolution(Species.STOUTLAND, 32, null, null) + [SpeciesId.HERDIER]: [ + new SpeciesEvolution(SpeciesId.STOUTLAND, 32, null, null) ], - [Species.PURRLOIN]: [ - new SpeciesEvolution(Species.LIEPARD, 20, null, null) + [SpeciesId.PURRLOIN]: [ + new SpeciesEvolution(SpeciesId.LIEPARD, 20, null, null) ], - [Species.PIDOVE]: [ - new SpeciesEvolution(Species.TRANQUILL, 21, null, null) + [SpeciesId.PIDOVE]: [ + new SpeciesEvolution(SpeciesId.TRANQUILL, 21, null, null) ], - [Species.TRANQUILL]: [ - new SpeciesEvolution(Species.UNFEZANT, 32, null, null) + [SpeciesId.TRANQUILL]: [ + new SpeciesEvolution(SpeciesId.UNFEZANT, 32, null, null) ], - [Species.BLITZLE]: [ - new SpeciesEvolution(Species.ZEBSTRIKA, 27, null, null) + [SpeciesId.BLITZLE]: [ + new SpeciesEvolution(SpeciesId.ZEBSTRIKA, 27, null, null) ], - [Species.ROGGENROLA]: [ - new SpeciesEvolution(Species.BOLDORE, 25, null, null) + [SpeciesId.ROGGENROLA]: [ + new SpeciesEvolution(SpeciesId.BOLDORE, 25, null, null) ], - [Species.DRILBUR]: [ - new SpeciesEvolution(Species.EXCADRILL, 31, null, null) + [SpeciesId.DRILBUR]: [ + new SpeciesEvolution(SpeciesId.EXCADRILL, 31, null, null) ], - [Species.TIMBURR]: [ - new SpeciesEvolution(Species.GURDURR, 25, null, null) + [SpeciesId.TIMBURR]: [ + new SpeciesEvolution(SpeciesId.GURDURR, 25, null, null) ], - [Species.TYMPOLE]: [ - new SpeciesEvolution(Species.PALPITOAD, 25, null, null) + [SpeciesId.TYMPOLE]: [ + new SpeciesEvolution(SpeciesId.PALPITOAD, 25, null, null) ], - [Species.PALPITOAD]: [ - new SpeciesEvolution(Species.SEISMITOAD, 36, null, null) + [SpeciesId.PALPITOAD]: [ + new SpeciesEvolution(SpeciesId.SEISMITOAD, 36, null, null) ], - [Species.SEWADDLE]: [ - new SpeciesEvolution(Species.SWADLOON, 20, null, null) + [SpeciesId.SEWADDLE]: [ + new SpeciesEvolution(SpeciesId.SWADLOON, 20, null, null) ], - [Species.VENIPEDE]: [ - new SpeciesEvolution(Species.WHIRLIPEDE, 22, null, null) + [SpeciesId.VENIPEDE]: [ + new SpeciesEvolution(SpeciesId.WHIRLIPEDE, 22, null, null) ], - [Species.WHIRLIPEDE]: [ - new SpeciesEvolution(Species.SCOLIPEDE, 30, null, null) + [SpeciesId.WHIRLIPEDE]: [ + new SpeciesEvolution(SpeciesId.SCOLIPEDE, 30, null, null) ], - [Species.SANDILE]: [ - new SpeciesEvolution(Species.KROKOROK, 29, null, null) + [SpeciesId.SANDILE]: [ + new SpeciesEvolution(SpeciesId.KROKOROK, 29, null, null) ], - [Species.KROKOROK]: [ - new SpeciesEvolution(Species.KROOKODILE, 40, null, null) + [SpeciesId.KROKOROK]: [ + new SpeciesEvolution(SpeciesId.KROOKODILE, 40, null, null) ], - [Species.DARUMAKA]: [ - new SpeciesEvolution(Species.DARMANITAN, 35, null, null) + [SpeciesId.DARUMAKA]: [ + new SpeciesEvolution(SpeciesId.DARMANITAN, 35, null, null) ], - [Species.DWEBBLE]: [ - new SpeciesEvolution(Species.CRUSTLE, 34, null, null) + [SpeciesId.DWEBBLE]: [ + new SpeciesEvolution(SpeciesId.CRUSTLE, 34, null, null) ], - [Species.SCRAGGY]: [ - new SpeciesEvolution(Species.SCRAFTY, 39, null, null) + [SpeciesId.SCRAGGY]: [ + new SpeciesEvolution(SpeciesId.SCRAFTY, 39, null, null) ], - [Species.YAMASK]: [ - new SpeciesEvolution(Species.COFAGRIGUS, 34, null, null) + [SpeciesId.YAMASK]: [ + new SpeciesEvolution(SpeciesId.COFAGRIGUS, 34, null, null) ], - [Species.TIRTOUGA]: [ - new SpeciesEvolution(Species.CARRACOSTA, 37, null, null) + [SpeciesId.TIRTOUGA]: [ + new SpeciesEvolution(SpeciesId.CARRACOSTA, 37, null, null) ], - [Species.ARCHEN]: [ - new SpeciesEvolution(Species.ARCHEOPS, 37, null, null) + [SpeciesId.ARCHEN]: [ + new SpeciesEvolution(SpeciesId.ARCHEOPS, 37, null, null) ], - [Species.TRUBBISH]: [ - new SpeciesEvolution(Species.GARBODOR, 36, null, null) + [SpeciesId.TRUBBISH]: [ + new SpeciesEvolution(SpeciesId.GARBODOR, 36, null, null) ], - [Species.ZORUA]: [ - new SpeciesEvolution(Species.ZOROARK, 30, null, null) + [SpeciesId.ZORUA]: [ + new SpeciesEvolution(SpeciesId.ZOROARK, 30, null, null) ], - [Species.GOTHITA]: [ - new SpeciesEvolution(Species.GOTHORITA, 32, null, null) + [SpeciesId.GOTHITA]: [ + new SpeciesEvolution(SpeciesId.GOTHORITA, 32, null, null) ], - [Species.GOTHORITA]: [ - new SpeciesEvolution(Species.GOTHITELLE, 41, null, null) + [SpeciesId.GOTHORITA]: [ + new SpeciesEvolution(SpeciesId.GOTHITELLE, 41, null, null) ], - [Species.SOLOSIS]: [ - new SpeciesEvolution(Species.DUOSION, 32, null, null) + [SpeciesId.SOLOSIS]: [ + new SpeciesEvolution(SpeciesId.DUOSION, 32, null, null) ], - [Species.DUOSION]: [ - new SpeciesEvolution(Species.REUNICLUS, 41, null, null) + [SpeciesId.DUOSION]: [ + new SpeciesEvolution(SpeciesId.REUNICLUS, 41, null, null) ], - [Species.DUCKLETT]: [ - new SpeciesEvolution(Species.SWANNA, 35, null, null) + [SpeciesId.DUCKLETT]: [ + new SpeciesEvolution(SpeciesId.SWANNA, 35, null, null) ], - [Species.VANILLITE]: [ - new SpeciesEvolution(Species.VANILLISH, 35, null, null) + [SpeciesId.VANILLITE]: [ + new SpeciesEvolution(SpeciesId.VANILLISH, 35, null, null) ], - [Species.VANILLISH]: [ - new SpeciesEvolution(Species.VANILLUXE, 47, null, null) + [SpeciesId.VANILLISH]: [ + new SpeciesEvolution(SpeciesId.VANILLUXE, 47, null, null) ], - [Species.DEERLING]: [ - new SpeciesEvolution(Species.SAWSBUCK, 34, null, null) + [SpeciesId.DEERLING]: [ + new SpeciesEvolution(SpeciesId.SAWSBUCK, 34, null, null) ], - [Species.FOONGUS]: [ - new SpeciesEvolution(Species.AMOONGUSS, 39, null, null) + [SpeciesId.FOONGUS]: [ + new SpeciesEvolution(SpeciesId.AMOONGUSS, 39, null, null) ], - [Species.FRILLISH]: [ - new SpeciesEvolution(Species.JELLICENT, 40, null, null) + [SpeciesId.FRILLISH]: [ + new SpeciesEvolution(SpeciesId.JELLICENT, 40, null, null) ], - [Species.JOLTIK]: [ - new SpeciesEvolution(Species.GALVANTULA, 36, null, null) + [SpeciesId.JOLTIK]: [ + new SpeciesEvolution(SpeciesId.GALVANTULA, 36, null, null) ], - [Species.FERROSEED]: [ - new SpeciesEvolution(Species.FERROTHORN, 40, null, null) + [SpeciesId.FERROSEED]: [ + new SpeciesEvolution(SpeciesId.FERROTHORN, 40, null, null) ], - [Species.KLINK]: [ - new SpeciesEvolution(Species.KLANG, 38, null, null) + [SpeciesId.KLINK]: [ + new SpeciesEvolution(SpeciesId.KLANG, 38, null, null) ], - [Species.KLANG]: [ - new SpeciesEvolution(Species.KLINKLANG, 49, null, null) + [SpeciesId.KLANG]: [ + new SpeciesEvolution(SpeciesId.KLINKLANG, 49, null, null) ], - [Species.TYNAMO]: [ - new SpeciesEvolution(Species.EELEKTRIK, 39, null, null) + [SpeciesId.TYNAMO]: [ + new SpeciesEvolution(SpeciesId.EELEKTRIK, 39, null, null) ], - [Species.ELGYEM]: [ - new SpeciesEvolution(Species.BEHEEYEM, 42, null, null) + [SpeciesId.ELGYEM]: [ + new SpeciesEvolution(SpeciesId.BEHEEYEM, 42, null, null) ], - [Species.LITWICK]: [ - new SpeciesEvolution(Species.LAMPENT, 41, null, null) + [SpeciesId.LITWICK]: [ + new SpeciesEvolution(SpeciesId.LAMPENT, 41, null, null) ], - [Species.AXEW]: [ - new SpeciesEvolution(Species.FRAXURE, 38, null, null) + [SpeciesId.AXEW]: [ + new SpeciesEvolution(SpeciesId.FRAXURE, 38, null, null) ], - [Species.FRAXURE]: [ - new SpeciesEvolution(Species.HAXORUS, 48, null, null) + [SpeciesId.FRAXURE]: [ + new SpeciesEvolution(SpeciesId.HAXORUS, 48, null, null) ], - [Species.CUBCHOO]: [ - new SpeciesEvolution(Species.BEARTIC, 37, null, null) + [SpeciesId.CUBCHOO]: [ + new SpeciesEvolution(SpeciesId.BEARTIC, 37, null, null) ], - [Species.MIENFOO]: [ - new SpeciesEvolution(Species.MIENSHAO, 50, null, null) + [SpeciesId.MIENFOO]: [ + new SpeciesEvolution(SpeciesId.MIENSHAO, 50, null, null) ], - [Species.GOLETT]: [ - new SpeciesEvolution(Species.GOLURK, 43, null, null) + [SpeciesId.GOLETT]: [ + new SpeciesEvolution(SpeciesId.GOLURK, 43, null, null) ], - [Species.PAWNIARD]: [ - new SpeciesEvolution(Species.BISHARP, 52, null, null) + [SpeciesId.PAWNIARD]: [ + new SpeciesEvolution(SpeciesId.BISHARP, 52, null, null) ], - [Species.BISHARP]: [ - new SpeciesEvolution(Species.KINGAMBIT, 1, EvolutionItem.LEADERS_CREST, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.BISHARP]: [ + new SpeciesEvolution(SpeciesId.KINGAMBIT, 1, EvolutionItem.LEADERS_CREST, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.RUFFLET]: [ - new SpeciesEvolution(Species.HISUI_BRAVIARY, 54, null, new TimeOfDayEvolutionCondition("night")), - new SpeciesEvolution(Species.BRAVIARY, 54, null, new TimeOfDayEvolutionCondition("day")) + [SpeciesId.RUFFLET]: [ + new SpeciesEvolution(SpeciesId.HISUI_BRAVIARY, 54, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(SpeciesId.BRAVIARY, 54, null, new TimeOfDayEvolutionCondition("day")) ], - [Species.VULLABY]: [ - new SpeciesEvolution(Species.MANDIBUZZ, 54, null, null) + [SpeciesId.VULLABY]: [ + new SpeciesEvolution(SpeciesId.MANDIBUZZ, 54, null, null) ], - [Species.DEINO]: [ - new SpeciesEvolution(Species.ZWEILOUS, 50, null, null) + [SpeciesId.DEINO]: [ + new SpeciesEvolution(SpeciesId.ZWEILOUS, 50, null, null) ], - [Species.ZWEILOUS]: [ - new SpeciesEvolution(Species.HYDREIGON, 64, null, null) + [SpeciesId.ZWEILOUS]: [ + new SpeciesEvolution(SpeciesId.HYDREIGON, 64, null, null) ], - [Species.LARVESTA]: [ - new SpeciesEvolution(Species.VOLCARONA, 59, null, null) + [SpeciesId.LARVESTA]: [ + new SpeciesEvolution(SpeciesId.VOLCARONA, 59, null, null) ], - [Species.CHESPIN]: [ - new SpeciesEvolution(Species.QUILLADIN, 16, null, null) + [SpeciesId.CHESPIN]: [ + new SpeciesEvolution(SpeciesId.QUILLADIN, 16, null, null) ], - [Species.QUILLADIN]: [ - new SpeciesEvolution(Species.CHESNAUGHT, 36, null, null) + [SpeciesId.QUILLADIN]: [ + new SpeciesEvolution(SpeciesId.CHESNAUGHT, 36, null, null) ], - [Species.FENNEKIN]: [ - new SpeciesEvolution(Species.BRAIXEN, 16, null, null) + [SpeciesId.FENNEKIN]: [ + new SpeciesEvolution(SpeciesId.BRAIXEN, 16, null, null) ], - [Species.BRAIXEN]: [ - new SpeciesEvolution(Species.DELPHOX, 36, null, null) + [SpeciesId.BRAIXEN]: [ + new SpeciesEvolution(SpeciesId.DELPHOX, 36, null, null) ], - [Species.FROAKIE]: [ - new SpeciesEvolution(Species.FROGADIER, 16, null, null) + [SpeciesId.FROAKIE]: [ + new SpeciesEvolution(SpeciesId.FROGADIER, 16, null, null) ], - [Species.FROGADIER]: [ - new SpeciesEvolution(Species.GRENINJA, 36, null, null) + [SpeciesId.FROGADIER]: [ + new SpeciesEvolution(SpeciesId.GRENINJA, 36, null, null) ], - [Species.BUNNELBY]: [ - new SpeciesEvolution(Species.DIGGERSBY, 20, null, null) + [SpeciesId.BUNNELBY]: [ + new SpeciesEvolution(SpeciesId.DIGGERSBY, 20, null, null) ], - [Species.FLETCHLING]: [ - new SpeciesEvolution(Species.FLETCHINDER, 17, null, null) + [SpeciesId.FLETCHLING]: [ + new SpeciesEvolution(SpeciesId.FLETCHINDER, 17, null, null) ], - [Species.FLETCHINDER]: [ - new SpeciesEvolution(Species.TALONFLAME, 35, null, null) + [SpeciesId.FLETCHINDER]: [ + new SpeciesEvolution(SpeciesId.TALONFLAME, 35, null, null) ], - [Species.SCATTERBUG]: [ - new SpeciesEvolution(Species.SPEWPA, 9, null, null) + [SpeciesId.SCATTERBUG]: [ + new SpeciesEvolution(SpeciesId.SPEWPA, 9, null, null) ], - [Species.SPEWPA]: [ - new SpeciesEvolution(Species.VIVILLON, 12, null, null) + [SpeciesId.SPEWPA]: [ + new SpeciesEvolution(SpeciesId.VIVILLON, 12, null, null) ], - [Species.LITLEO]: [ - new SpeciesEvolution(Species.PYROAR, 35, null, null) + [SpeciesId.LITLEO]: [ + new SpeciesEvolution(SpeciesId.PYROAR, 35, null, null) ], - [Species.FLABEBE]: [ - new SpeciesEvolution(Species.FLOETTE, 19, null, null) + [SpeciesId.FLABEBE]: [ + new SpeciesEvolution(SpeciesId.FLOETTE, 19, null, null) ], - [Species.SKIDDO]: [ - new SpeciesEvolution(Species.GOGOAT, 32, null, null) + [SpeciesId.SKIDDO]: [ + new SpeciesEvolution(SpeciesId.GOGOAT, 32, null, null) ], - [Species.PANCHAM]: [ - new SpeciesEvolution(Species.PANGORO, 32, null, new PartyTypeEvolutionCondition(PokemonType.DARK), SpeciesWildEvolutionDelay.MEDIUM) + [SpeciesId.PANCHAM]: [ + new SpeciesEvolution(SpeciesId.PANGORO, 32, null, new PartyTypeEvolutionCondition(PokemonType.DARK), SpeciesWildEvolutionDelay.MEDIUM) ], - [Species.ESPURR]: [ - new SpeciesFormEvolution(Species.MEOWSTIC, "", "female", 25, null, new GenderEvolutionCondition(Gender.FEMALE)), - new SpeciesFormEvolution(Species.MEOWSTIC, "", "", 25, null, new GenderEvolutionCondition(Gender.MALE)) + [SpeciesId.ESPURR]: [ + new SpeciesFormEvolution(SpeciesId.MEOWSTIC, "", "female", 25, null, new GenderEvolutionCondition(Gender.FEMALE)), + new SpeciesFormEvolution(SpeciesId.MEOWSTIC, "", "", 25, null, new GenderEvolutionCondition(Gender.MALE)) ], - [Species.HONEDGE]: [ - new SpeciesEvolution(Species.DOUBLADE, 35, null, null) + [SpeciesId.HONEDGE]: [ + new SpeciesEvolution(SpeciesId.DOUBLADE, 35, null, null) ], - [Species.INKAY]: [ - new SpeciesEvolution(Species.MALAMAR, 30, null, null) + [SpeciesId.INKAY]: [ + new SpeciesEvolution(SpeciesId.MALAMAR, 30, null, null) ], - [Species.BINACLE]: [ - new SpeciesEvolution(Species.BARBARACLE, 39, null, null) + [SpeciesId.BINACLE]: [ + new SpeciesEvolution(SpeciesId.BARBARACLE, 39, null, null) ], - [Species.SKRELP]: [ - new SpeciesEvolution(Species.DRAGALGE, 48, null, null) + [SpeciesId.SKRELP]: [ + new SpeciesEvolution(SpeciesId.DRAGALGE, 48, null, null) ], - [Species.CLAUNCHER]: [ - new SpeciesEvolution(Species.CLAWITZER, 37, null, null) + [SpeciesId.CLAUNCHER]: [ + new SpeciesEvolution(SpeciesId.CLAWITZER, 37, null, null) ], - [Species.TYRUNT]: [ - new SpeciesEvolution(Species.TYRANTRUM, 39, null, new TimeOfDayEvolutionCondition("day")) + [SpeciesId.TYRUNT]: [ + new SpeciesEvolution(SpeciesId.TYRANTRUM, 39, null, new TimeOfDayEvolutionCondition("day")) ], - [Species.AMAURA]: [ - new SpeciesEvolution(Species.AURORUS, 39, null, new TimeOfDayEvolutionCondition("night")) + [SpeciesId.AMAURA]: [ + new SpeciesEvolution(SpeciesId.AURORUS, 39, null, new TimeOfDayEvolutionCondition("night")) ], - [Species.GOOMY]: [ - new SpeciesEvolution(Species.HISUI_SLIGGOO, 40, null, new TimeOfDayEvolutionCondition("night")), - new SpeciesEvolution(Species.SLIGGOO, 40, null, new TimeOfDayEvolutionCondition("day")) + [SpeciesId.GOOMY]: [ + new SpeciesEvolution(SpeciesId.HISUI_SLIGGOO, 40, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(SpeciesId.SLIGGOO, 40, null, new TimeOfDayEvolutionCondition("day")) ], - [Species.SLIGGOO]: [ - new SpeciesEvolution(Species.GOODRA, 50, null, new WeatherEvolutionCondition([ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ]), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.SLIGGOO]: [ + new SpeciesEvolution(SpeciesId.GOODRA, 50, null, new WeatherEvolutionCondition([ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ]), SpeciesWildEvolutionDelay.LONG) ], - [Species.BERGMITE]: [ - new SpeciesEvolution(Species.HISUI_AVALUGG, 37, null, new TimeOfDayEvolutionCondition("night")), - new SpeciesEvolution(Species.AVALUGG, 37, null, new TimeOfDayEvolutionCondition("day")) + [SpeciesId.BERGMITE]: [ + new SpeciesEvolution(SpeciesId.HISUI_AVALUGG, 37, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(SpeciesId.AVALUGG, 37, null, new TimeOfDayEvolutionCondition("day")) ], - [Species.NOIBAT]: [ - new SpeciesEvolution(Species.NOIVERN, 48, null, null) + [SpeciesId.NOIBAT]: [ + new SpeciesEvolution(SpeciesId.NOIVERN, 48, null, null) ], - [Species.ROWLET]: [ - new SpeciesEvolution(Species.DARTRIX, 17, null, null) + [SpeciesId.ROWLET]: [ + new SpeciesEvolution(SpeciesId.DARTRIX, 17, null, null) ], - [Species.DARTRIX]: [ - new SpeciesEvolution(Species.HISUI_DECIDUEYE, 36, null, new TimeOfDayEvolutionCondition("night")), - new SpeciesEvolution(Species.DECIDUEYE, 34, null, new TimeOfDayEvolutionCondition("day")) + [SpeciesId.DARTRIX]: [ + new SpeciesEvolution(SpeciesId.HISUI_DECIDUEYE, 36, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(SpeciesId.DECIDUEYE, 34, null, new TimeOfDayEvolutionCondition("day")) ], - [Species.LITTEN]: [ - new SpeciesEvolution(Species.TORRACAT, 17, null, null) + [SpeciesId.LITTEN]: [ + new SpeciesEvolution(SpeciesId.TORRACAT, 17, null, null) ], - [Species.TORRACAT]: [ - new SpeciesEvolution(Species.INCINEROAR, 34, null, null) + [SpeciesId.TORRACAT]: [ + new SpeciesEvolution(SpeciesId.INCINEROAR, 34, null, null) ], - [Species.POPPLIO]: [ - new SpeciesEvolution(Species.BRIONNE, 17, null, null) + [SpeciesId.POPPLIO]: [ + new SpeciesEvolution(SpeciesId.BRIONNE, 17, null, null) ], - [Species.BRIONNE]: [ - new SpeciesEvolution(Species.PRIMARINA, 34, null, null) + [SpeciesId.BRIONNE]: [ + new SpeciesEvolution(SpeciesId.PRIMARINA, 34, null, null) ], - [Species.PIKIPEK]: [ - new SpeciesEvolution(Species.TRUMBEAK, 14, null, null) + [SpeciesId.PIKIPEK]: [ + new SpeciesEvolution(SpeciesId.TRUMBEAK, 14, null, null) ], - [Species.TRUMBEAK]: [ - new SpeciesEvolution(Species.TOUCANNON, 28, null, null) + [SpeciesId.TRUMBEAK]: [ + new SpeciesEvolution(SpeciesId.TOUCANNON, 28, null, null) ], - [Species.YUNGOOS]: [ - new SpeciesEvolution(Species.GUMSHOOS, 20, null, new TimeOfDayEvolutionCondition("day")) + [SpeciesId.YUNGOOS]: [ + new SpeciesEvolution(SpeciesId.GUMSHOOS, 20, null, new TimeOfDayEvolutionCondition("day")) ], - [Species.GRUBBIN]: [ - new SpeciesEvolution(Species.CHARJABUG, 20, null, null) + [SpeciesId.GRUBBIN]: [ + new SpeciesEvolution(SpeciesId.CHARJABUG, 20, null, null) ], - [Species.CUTIEFLY]: [ - new SpeciesEvolution(Species.RIBOMBEE, 25, null, null) + [SpeciesId.CUTIEFLY]: [ + new SpeciesEvolution(SpeciesId.RIBOMBEE, 25, null, null) ], - [Species.MAREANIE]: [ - new SpeciesEvolution(Species.TOXAPEX, 38, null, null) + [SpeciesId.MAREANIE]: [ + new SpeciesEvolution(SpeciesId.TOXAPEX, 38, null, null) ], - [Species.MUDBRAY]: [ - new SpeciesEvolution(Species.MUDSDALE, 30, null, null) + [SpeciesId.MUDBRAY]: [ + new SpeciesEvolution(SpeciesId.MUDSDALE, 30, null, null) ], - [Species.DEWPIDER]: [ - new SpeciesEvolution(Species.ARAQUANID, 22, null, null) + [SpeciesId.DEWPIDER]: [ + new SpeciesEvolution(SpeciesId.ARAQUANID, 22, null, null) ], - [Species.FOMANTIS]: [ - new SpeciesEvolution(Species.LURANTIS, 34, null, new TimeOfDayEvolutionCondition("day")) + [SpeciesId.FOMANTIS]: [ + new SpeciesEvolution(SpeciesId.LURANTIS, 34, null, new TimeOfDayEvolutionCondition("day")) ], - [Species.MORELULL]: [ - new SpeciesEvolution(Species.SHIINOTIC, 24, null, null) + [SpeciesId.MORELULL]: [ + new SpeciesEvolution(SpeciesId.SHIINOTIC, 24, null, null) ], - [Species.SALANDIT]: [ - new SpeciesEvolution(Species.SALAZZLE, 33, null, new GenderEvolutionCondition(Gender.FEMALE)) + [SpeciesId.SALANDIT]: [ + new SpeciesEvolution(SpeciesId.SALAZZLE, 33, null, new GenderEvolutionCondition(Gender.FEMALE)) ], - [Species.STUFFUL]: [ - new SpeciesEvolution(Species.BEWEAR, 27, null, null) + [SpeciesId.STUFFUL]: [ + new SpeciesEvolution(SpeciesId.BEWEAR, 27, null, null) ], - [Species.BOUNSWEET]: [ - new SpeciesEvolution(Species.STEENEE, 18, null, null) + [SpeciesId.BOUNSWEET]: [ + new SpeciesEvolution(SpeciesId.STEENEE, 18, null, null) ], - [Species.WIMPOD]: [ - new SpeciesEvolution(Species.GOLISOPOD, 30, null, null) + [SpeciesId.WIMPOD]: [ + new SpeciesEvolution(SpeciesId.GOLISOPOD, 30, null, null) ], - [Species.SANDYGAST]: [ - new SpeciesEvolution(Species.PALOSSAND, 42, null, null) + [SpeciesId.SANDYGAST]: [ + new SpeciesEvolution(SpeciesId.PALOSSAND, 42, null, null) ], - [Species.JANGMO_O]: [ - new SpeciesEvolution(Species.HAKAMO_O, 35, null, null) + [SpeciesId.JANGMO_O]: [ + new SpeciesEvolution(SpeciesId.HAKAMO_O, 35, null, null) ], - [Species.HAKAMO_O]: [ - new SpeciesEvolution(Species.KOMMO_O, 45, null, null) + [SpeciesId.HAKAMO_O]: [ + new SpeciesEvolution(SpeciesId.KOMMO_O, 45, null, null) ], - [Species.COSMOG]: [ - new SpeciesEvolution(Species.COSMOEM, 23, null, null) + [SpeciesId.COSMOG]: [ + new SpeciesEvolution(SpeciesId.COSMOEM, 23, null, null) ], - [Species.COSMOEM]: [ - new SpeciesEvolution(Species.SOLGALEO, 1, EvolutionItem.SUN_FLUTE, null, SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesEvolution(Species.LUNALA, 1, EvolutionItem.MOON_FLUTE, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.COSMOEM]: [ + new SpeciesEvolution(SpeciesId.SOLGALEO, 1, EvolutionItem.SUN_FLUTE, null, SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesEvolution(SpeciesId.LUNALA, 1, EvolutionItem.MOON_FLUTE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.MELTAN]: [ - new SpeciesEvolution(Species.MELMETAL, 48, null, null) + [SpeciesId.MELTAN]: [ + new SpeciesEvolution(SpeciesId.MELMETAL, 48, null, null) ], - [Species.ALOLA_RATTATA]: [ - new SpeciesEvolution(Species.ALOLA_RATICATE, 20, null, new TimeOfDayEvolutionCondition("night")) + [SpeciesId.ALOLA_RATTATA]: [ + new SpeciesEvolution(SpeciesId.ALOLA_RATICATE, 20, null, new TimeOfDayEvolutionCondition("night")) ], - [Species.ALOLA_DIGLETT]: [ - new SpeciesEvolution(Species.ALOLA_DUGTRIO, 26, null, null) + [SpeciesId.ALOLA_DIGLETT]: [ + new SpeciesEvolution(SpeciesId.ALOLA_DUGTRIO, 26, null, null) ], - [Species.ALOLA_GEODUDE]: [ - new SpeciesEvolution(Species.ALOLA_GRAVELER, 25, null, null) + [SpeciesId.ALOLA_GEODUDE]: [ + new SpeciesEvolution(SpeciesId.ALOLA_GRAVELER, 25, null, null) ], - [Species.ALOLA_GRIMER]: [ - new SpeciesEvolution(Species.ALOLA_MUK, 38, null, null) + [SpeciesId.ALOLA_GRIMER]: [ + new SpeciesEvolution(SpeciesId.ALOLA_MUK, 38, null, null) ], - [Species.GROOKEY]: [ - new SpeciesEvolution(Species.THWACKEY, 16, null, null) + [SpeciesId.GROOKEY]: [ + new SpeciesEvolution(SpeciesId.THWACKEY, 16, null, null) ], - [Species.THWACKEY]: [ - new SpeciesEvolution(Species.RILLABOOM, 35, null, null) + [SpeciesId.THWACKEY]: [ + new SpeciesEvolution(SpeciesId.RILLABOOM, 35, null, null) ], - [Species.SCORBUNNY]: [ - new SpeciesEvolution(Species.RABOOT, 16, null, null) + [SpeciesId.SCORBUNNY]: [ + new SpeciesEvolution(SpeciesId.RABOOT, 16, null, null) ], - [Species.RABOOT]: [ - new SpeciesEvolution(Species.CINDERACE, 35, null, null) + [SpeciesId.RABOOT]: [ + new SpeciesEvolution(SpeciesId.CINDERACE, 35, null, null) ], - [Species.SOBBLE]: [ - new SpeciesEvolution(Species.DRIZZILE, 16, null, null) + [SpeciesId.SOBBLE]: [ + new SpeciesEvolution(SpeciesId.DRIZZILE, 16, null, null) ], - [Species.DRIZZILE]: [ - new SpeciesEvolution(Species.INTELEON, 35, null, null) + [SpeciesId.DRIZZILE]: [ + new SpeciesEvolution(SpeciesId.INTELEON, 35, null, null) ], - [Species.SKWOVET]: [ - new SpeciesEvolution(Species.GREEDENT, 24, null, null) + [SpeciesId.SKWOVET]: [ + new SpeciesEvolution(SpeciesId.GREEDENT, 24, null, null) ], - [Species.ROOKIDEE]: [ - new SpeciesEvolution(Species.CORVISQUIRE, 18, null, null) + [SpeciesId.ROOKIDEE]: [ + new SpeciesEvolution(SpeciesId.CORVISQUIRE, 18, null, null) ], - [Species.CORVISQUIRE]: [ - new SpeciesEvolution(Species.CORVIKNIGHT, 38, null, null) + [SpeciesId.CORVISQUIRE]: [ + new SpeciesEvolution(SpeciesId.CORVIKNIGHT, 38, null, null) ], - [Species.BLIPBUG]: [ - new SpeciesEvolution(Species.DOTTLER, 10, null, null) + [SpeciesId.BLIPBUG]: [ + new SpeciesEvolution(SpeciesId.DOTTLER, 10, null, null) ], - [Species.DOTTLER]: [ - new SpeciesEvolution(Species.ORBEETLE, 30, null, null) + [SpeciesId.DOTTLER]: [ + new SpeciesEvolution(SpeciesId.ORBEETLE, 30, null, null) ], - [Species.NICKIT]: [ - new SpeciesEvolution(Species.THIEVUL, 18, null, null) + [SpeciesId.NICKIT]: [ + new SpeciesEvolution(SpeciesId.THIEVUL, 18, null, null) ], - [Species.GOSSIFLEUR]: [ - new SpeciesEvolution(Species.ELDEGOSS, 20, null, null) + [SpeciesId.GOSSIFLEUR]: [ + new SpeciesEvolution(SpeciesId.ELDEGOSS, 20, null, null) ], - [Species.WOOLOO]: [ - new SpeciesEvolution(Species.DUBWOOL, 24, null, null) + [SpeciesId.WOOLOO]: [ + new SpeciesEvolution(SpeciesId.DUBWOOL, 24, null, null) ], - [Species.CHEWTLE]: [ - new SpeciesEvolution(Species.DREDNAW, 22, null, null) + [SpeciesId.CHEWTLE]: [ + new SpeciesEvolution(SpeciesId.DREDNAW, 22, null, null) ], - [Species.YAMPER]: [ - new SpeciesEvolution(Species.BOLTUND, 25, null, null) + [SpeciesId.YAMPER]: [ + new SpeciesEvolution(SpeciesId.BOLTUND, 25, null, null) ], - [Species.ROLYCOLY]: [ - new SpeciesEvolution(Species.CARKOL, 18, null, null) + [SpeciesId.ROLYCOLY]: [ + new SpeciesEvolution(SpeciesId.CARKOL, 18, null, null) ], - [Species.CARKOL]: [ - new SpeciesEvolution(Species.COALOSSAL, 34, null, null) + [SpeciesId.CARKOL]: [ + new SpeciesEvolution(SpeciesId.COALOSSAL, 34, null, null) ], - [Species.SILICOBRA]: [ - new SpeciesEvolution(Species.SANDACONDA, 36, null, null) + [SpeciesId.SILICOBRA]: [ + new SpeciesEvolution(SpeciesId.SANDACONDA, 36, null, null) ], - [Species.ARROKUDA]: [ - new SpeciesEvolution(Species.BARRASKEWDA, 26, null, null) + [SpeciesId.ARROKUDA]: [ + new SpeciesEvolution(SpeciesId.BARRASKEWDA, 26, null, null) ], - [Species.TOXEL]: [ - new SpeciesFormEvolution(Species.TOXTRICITY, "", "lowkey", 30, null, + [SpeciesId.TOXEL]: [ + new SpeciesFormEvolution(SpeciesId.TOXTRICITY, "", "lowkey", 30, null, new NatureEvolutionCondition([ Nature.LONELY, Nature.BOLD, Nature.RELAXED, Nature.TIMID, Nature.SERIOUS, Nature.MODEST, Nature.MILD, Nature.QUIET, Nature.BASHFUL, Nature.CALM, Nature.GENTLE, Nature.CAREFUL ]) ), - new SpeciesFormEvolution(Species.TOXTRICITY, "", "amped", 30, null, null) + new SpeciesFormEvolution(SpeciesId.TOXTRICITY, "", "amped", 30, null, null) ], - [Species.SIZZLIPEDE]: [ - new SpeciesEvolution(Species.CENTISKORCH, 28, null, null) + [SpeciesId.SIZZLIPEDE]: [ + new SpeciesEvolution(SpeciesId.CENTISKORCH, 28, null, null) ], - [Species.HATENNA]: [ - new SpeciesEvolution(Species.HATTREM, 32, null, null) + [SpeciesId.HATENNA]: [ + new SpeciesEvolution(SpeciesId.HATTREM, 32, null, null) ], - [Species.HATTREM]: [ - new SpeciesEvolution(Species.HATTERENE, 42, null, null) + [SpeciesId.HATTREM]: [ + new SpeciesEvolution(SpeciesId.HATTERENE, 42, null, null) ], - [Species.IMPIDIMP]: [ - new SpeciesEvolution(Species.MORGREM, 32, null, null) + [SpeciesId.IMPIDIMP]: [ + new SpeciesEvolution(SpeciesId.MORGREM, 32, null, null) ], - [Species.MORGREM]: [ - new SpeciesEvolution(Species.GRIMMSNARL, 42, null, null) + [SpeciesId.MORGREM]: [ + new SpeciesEvolution(SpeciesId.GRIMMSNARL, 42, null, null) ], - [Species.CUFANT]: [ - new SpeciesEvolution(Species.COPPERAJAH, 34, null, null) + [SpeciesId.CUFANT]: [ + new SpeciesEvolution(SpeciesId.COPPERAJAH, 34, null, null) ], - [Species.DREEPY]: [ - new SpeciesEvolution(Species.DRAKLOAK, 50, null, null) + [SpeciesId.DREEPY]: [ + new SpeciesEvolution(SpeciesId.DRAKLOAK, 50, null, null) ], - [Species.DRAKLOAK]: [ - new SpeciesEvolution(Species.DRAGAPULT, 60, null, null) + [SpeciesId.DRAKLOAK]: [ + new SpeciesEvolution(SpeciesId.DRAGAPULT, 60, null, null) ], - [Species.GALAR_MEOWTH]: [ - new SpeciesEvolution(Species.PERRSERKER, 28, null, null) + [SpeciesId.GALAR_MEOWTH]: [ + new SpeciesEvolution(SpeciesId.PERRSERKER, 28, null, null) ], - [Species.GALAR_PONYTA]: [ - new SpeciesEvolution(Species.GALAR_RAPIDASH, 40, null, null) + [SpeciesId.GALAR_PONYTA]: [ + new SpeciesEvolution(SpeciesId.GALAR_RAPIDASH, 40, null, null) ], - [Species.GALAR_FARFETCHD]: [ - new SpeciesEvolution(Species.SIRFETCHD, 30, null, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.GALAR_FARFETCHD]: [ + new SpeciesEvolution(SpeciesId.SIRFETCHD, 30, null, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.GALAR_SLOWPOKE]: [ - new SpeciesEvolution(Species.GALAR_SLOWBRO, 1, EvolutionItem.GALARICA_CUFF, null, SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesEvolution(Species.GALAR_SLOWKING, 1, EvolutionItem.GALARICA_WREATH, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.GALAR_SLOWPOKE]: [ + new SpeciesEvolution(SpeciesId.GALAR_SLOWBRO, 1, EvolutionItem.GALARICA_CUFF, null, SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesEvolution(SpeciesId.GALAR_SLOWKING, 1, EvolutionItem.GALARICA_WREATH, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.GALAR_MR_MIME]: [ - new SpeciesEvolution(Species.MR_RIME, 42, null, null) + [SpeciesId.GALAR_MR_MIME]: [ + new SpeciesEvolution(SpeciesId.MR_RIME, 42, null, null) ], - [Species.GALAR_CORSOLA]: [ - new SpeciesEvolution(Species.CURSOLA, 38, null, null) + [SpeciesId.GALAR_CORSOLA]: [ + new SpeciesEvolution(SpeciesId.CURSOLA, 38, null, null) ], - [Species.GALAR_ZIGZAGOON]: [ - new SpeciesEvolution(Species.GALAR_LINOONE, 20, null, null) + [SpeciesId.GALAR_ZIGZAGOON]: [ + new SpeciesEvolution(SpeciesId.GALAR_LINOONE, 20, null, null) ], - [Species.GALAR_LINOONE]: [ - new SpeciesEvolution(Species.OBSTAGOON, 35, null, new TimeOfDayEvolutionCondition("night")) + [SpeciesId.GALAR_LINOONE]: [ + new SpeciesEvolution(SpeciesId.OBSTAGOON, 35, null, new TimeOfDayEvolutionCondition("night")) ], - [Species.GALAR_YAMASK]: [ - new SpeciesEvolution(Species.RUNERIGUS, 34, null, null) + [SpeciesId.GALAR_YAMASK]: [ + new SpeciesEvolution(SpeciesId.RUNERIGUS, 34, null, null) ], - [Species.HISUI_ZORUA]: [ - new SpeciesEvolution(Species.HISUI_ZOROARK, 30, null, null) + [SpeciesId.HISUI_ZORUA]: [ + new SpeciesEvolution(SpeciesId.HISUI_ZOROARK, 30, null, null) ], - [Species.HISUI_SLIGGOO]: [ - new SpeciesEvolution(Species.HISUI_GOODRA, 50, null, new WeatherEvolutionCondition([ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ]), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.HISUI_SLIGGOO]: [ + new SpeciesEvolution(SpeciesId.HISUI_GOODRA, 50, null, new WeatherEvolutionCondition([ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ]), SpeciesWildEvolutionDelay.LONG) ], - [Species.SPRIGATITO]: [ - new SpeciesEvolution(Species.FLORAGATO, 16, null, null) + [SpeciesId.SPRIGATITO]: [ + new SpeciesEvolution(SpeciesId.FLORAGATO, 16, null, null) ], - [Species.FLORAGATO]: [ - new SpeciesEvolution(Species.MEOWSCARADA, 36, null, null) + [SpeciesId.FLORAGATO]: [ + new SpeciesEvolution(SpeciesId.MEOWSCARADA, 36, null, null) ], - [Species.FUECOCO]: [ - new SpeciesEvolution(Species.CROCALOR, 16, null, null) + [SpeciesId.FUECOCO]: [ + new SpeciesEvolution(SpeciesId.CROCALOR, 16, null, null) ], - [Species.CROCALOR]: [ - new SpeciesEvolution(Species.SKELEDIRGE, 36, null, null) + [SpeciesId.CROCALOR]: [ + new SpeciesEvolution(SpeciesId.SKELEDIRGE, 36, null, null) ], - [Species.QUAXLY]: [ - new SpeciesEvolution(Species.QUAXWELL, 16, null, null) + [SpeciesId.QUAXLY]: [ + new SpeciesEvolution(SpeciesId.QUAXWELL, 16, null, null) ], - [Species.QUAXWELL]: [ - new SpeciesEvolution(Species.QUAQUAVAL, 36, null, null) + [SpeciesId.QUAXWELL]: [ + new SpeciesEvolution(SpeciesId.QUAQUAVAL, 36, null, null) ], - [Species.LECHONK]: [ - new SpeciesFormEvolution(Species.OINKOLOGNE, "", "female", 18, null, new GenderEvolutionCondition(Gender.FEMALE)), - new SpeciesFormEvolution(Species.OINKOLOGNE, "", "", 18, null, new GenderEvolutionCondition(Gender.MALE)) + [SpeciesId.LECHONK]: [ + new SpeciesFormEvolution(SpeciesId.OINKOLOGNE, "", "female", 18, null, new GenderEvolutionCondition(Gender.FEMALE)), + new SpeciesFormEvolution(SpeciesId.OINKOLOGNE, "", "", 18, null, new GenderEvolutionCondition(Gender.MALE)) ], - [Species.TAROUNTULA]: [ - new SpeciesEvolution(Species.SPIDOPS, 15, null, null) + [SpeciesId.TAROUNTULA]: [ + new SpeciesEvolution(SpeciesId.SPIDOPS, 15, null, null) ], - [Species.NYMBLE]: [ - new SpeciesEvolution(Species.LOKIX, 24, null, null) + [SpeciesId.NYMBLE]: [ + new SpeciesEvolution(SpeciesId.LOKIX, 24, null, null) ], - [Species.PAWMI]: [ - new SpeciesEvolution(Species.PAWMO, 18, null, null) + [SpeciesId.PAWMI]: [ + new SpeciesEvolution(SpeciesId.PAWMO, 18, null, null) ], - [Species.PAWMO]: [ - new SpeciesEvolution(Species.PAWMOT, 32, null, null) + [SpeciesId.PAWMO]: [ + new SpeciesEvolution(SpeciesId.PAWMOT, 32, null, null) ], - [Species.TANDEMAUS]: [ - new SpeciesFormEvolution(Species.MAUSHOLD, "", "three", 25, null, new TandemausEvolutionCondition()), - new SpeciesFormEvolution(Species.MAUSHOLD, "", "four", 25, null, null) + [SpeciesId.TANDEMAUS]: [ + new SpeciesFormEvolution(SpeciesId.MAUSHOLD, "", "three", 25, null, new TandemausEvolutionCondition()), + new SpeciesFormEvolution(SpeciesId.MAUSHOLD, "", "four", 25, null, null) ], - [Species.FIDOUGH]: [ - new SpeciesEvolution(Species.DACHSBUN, 26, null, null) + [SpeciesId.FIDOUGH]: [ + new SpeciesEvolution(SpeciesId.DACHSBUN, 26, null, null) ], - [Species.SMOLIV]: [ - new SpeciesEvolution(Species.DOLLIV, 25, null, null) + [SpeciesId.SMOLIV]: [ + new SpeciesEvolution(SpeciesId.DOLLIV, 25, null, null) ], - [Species.DOLLIV]: [ - new SpeciesEvolution(Species.ARBOLIVA, 35, null, null) + [SpeciesId.DOLLIV]: [ + new SpeciesEvolution(SpeciesId.ARBOLIVA, 35, null, null) ], - [Species.NACLI]: [ - new SpeciesEvolution(Species.NACLSTACK, 24, null, null) + [SpeciesId.NACLI]: [ + new SpeciesEvolution(SpeciesId.NACLSTACK, 24, null, null) ], - [Species.NACLSTACK]: [ - new SpeciesEvolution(Species.GARGANACL, 38, null, null) + [SpeciesId.NACLSTACK]: [ + new SpeciesEvolution(SpeciesId.GARGANACL, 38, null, null) ], - [Species.WATTREL]: [ - new SpeciesEvolution(Species.KILOWATTREL, 25, null, null) + [SpeciesId.WATTREL]: [ + new SpeciesEvolution(SpeciesId.KILOWATTREL, 25, null, null) ], - [Species.MASCHIFF]: [ - new SpeciesEvolution(Species.MABOSSTIFF, 30, null, null) + [SpeciesId.MASCHIFF]: [ + new SpeciesEvolution(SpeciesId.MABOSSTIFF, 30, null, null) ], - [Species.SHROODLE]: [ - new SpeciesEvolution(Species.GRAFAIAI, 28, null, null) + [SpeciesId.SHROODLE]: [ + new SpeciesEvolution(SpeciesId.GRAFAIAI, 28, null, null) ], - [Species.BRAMBLIN]: [ - new SpeciesEvolution(Species.BRAMBLEGHAST, 30, null, null) + [SpeciesId.BRAMBLIN]: [ + new SpeciesEvolution(SpeciesId.BRAMBLEGHAST, 30, null, null) ], - [Species.TOEDSCOOL]: [ - new SpeciesEvolution(Species.TOEDSCRUEL, 30, null, null) + [SpeciesId.TOEDSCOOL]: [ + new SpeciesEvolution(SpeciesId.TOEDSCRUEL, 30, null, null) ], - [Species.RELLOR]: [ - new SpeciesEvolution(Species.RABSCA, 29, null, null) + [SpeciesId.RELLOR]: [ + new SpeciesEvolution(SpeciesId.RABSCA, 29, null, null) ], - [Species.FLITTLE]: [ - new SpeciesEvolution(Species.ESPATHRA, 35, null, null) + [SpeciesId.FLITTLE]: [ + new SpeciesEvolution(SpeciesId.ESPATHRA, 35, null, null) ], - [Species.TINKATINK]: [ - new SpeciesEvolution(Species.TINKATUFF, 24, null, null) + [SpeciesId.TINKATINK]: [ + new SpeciesEvolution(SpeciesId.TINKATUFF, 24, null, null) ], - [Species.TINKATUFF]: [ - new SpeciesEvolution(Species.TINKATON, 38, null, null) + [SpeciesId.TINKATUFF]: [ + new SpeciesEvolution(SpeciesId.TINKATON, 38, null, null) ], - [Species.WIGLETT]: [ - new SpeciesEvolution(Species.WUGTRIO, 26, null, null) + [SpeciesId.WIGLETT]: [ + new SpeciesEvolution(SpeciesId.WUGTRIO, 26, null, null) ], - [Species.FINIZEN]: [ - new SpeciesEvolution(Species.PALAFIN, 38, null, null) + [SpeciesId.FINIZEN]: [ + new SpeciesEvolution(SpeciesId.PALAFIN, 38, null, null) ], - [Species.VAROOM]: [ - new SpeciesEvolution(Species.REVAVROOM, 40, null, null) + [SpeciesId.VAROOM]: [ + new SpeciesEvolution(SpeciesId.REVAVROOM, 40, null, null) ], - [Species.GLIMMET]: [ - new SpeciesEvolution(Species.GLIMMORA, 35, null, null) + [SpeciesId.GLIMMET]: [ + new SpeciesEvolution(SpeciesId.GLIMMORA, 35, null, null) ], - [Species.GREAVARD]: [ - new SpeciesEvolution(Species.HOUNDSTONE, 30, null, new TimeOfDayEvolutionCondition("night")) + [SpeciesId.GREAVARD]: [ + new SpeciesEvolution(SpeciesId.HOUNDSTONE, 30, null, new TimeOfDayEvolutionCondition("night")) ], - [Species.FRIGIBAX]: [ - new SpeciesEvolution(Species.ARCTIBAX, 35, null, null) + [SpeciesId.FRIGIBAX]: [ + new SpeciesEvolution(SpeciesId.ARCTIBAX, 35, null, null) ], - [Species.ARCTIBAX]: [ - new SpeciesEvolution(Species.BAXCALIBUR, 54, null, null) + [SpeciesId.ARCTIBAX]: [ + new SpeciesEvolution(SpeciesId.BAXCALIBUR, 54, null, null) ], - [Species.PALDEA_WOOPER]: [ - new SpeciesEvolution(Species.CLODSIRE, 20, null, null) + [SpeciesId.PALDEA_WOOPER]: [ + new SpeciesEvolution(SpeciesId.CLODSIRE, 20, null, null) ], - [Species.PIKACHU]: [ - new SpeciesFormEvolution(Species.ALOLA_RAICHU, "", "", 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALOLA_RAICHU, "partner", "", 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.RAICHU, "", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.RAICHU, "partner", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.PIKACHU]: [ + new SpeciesFormEvolution(SpeciesId.ALOLA_RAICHU, "", "", 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.ALOLA_RAICHU, "partner", "", 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.RAICHU, "", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.RAICHU, "partner", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.NIDORINA]: [ - new SpeciesEvolution(Species.NIDOQUEEN, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.NIDORINA]: [ + new SpeciesEvolution(SpeciesId.NIDOQUEEN, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.NIDORINO]: [ - new SpeciesEvolution(Species.NIDOKING, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.NIDORINO]: [ + new SpeciesEvolution(SpeciesId.NIDOKING, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.CLEFAIRY]: [ - new SpeciesEvolution(Species.CLEFABLE, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.CLEFAIRY]: [ + new SpeciesEvolution(SpeciesId.CLEFABLE, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.VULPIX]: [ - new SpeciesEvolution(Species.NINETALES, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.VULPIX]: [ + new SpeciesEvolution(SpeciesId.NINETALES, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.JIGGLYPUFF]: [ - new SpeciesEvolution(Species.WIGGLYTUFF, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.JIGGLYPUFF]: [ + new SpeciesEvolution(SpeciesId.WIGGLYTUFF, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.GLOOM]: [ - new SpeciesEvolution(Species.VILEPLUME, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesEvolution(Species.BELLOSSOM, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.GLOOM]: [ + new SpeciesEvolution(SpeciesId.VILEPLUME, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(SpeciesId.BELLOSSOM, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.GROWLITHE]: [ - new SpeciesEvolution(Species.ARCANINE, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.GROWLITHE]: [ + new SpeciesEvolution(SpeciesId.ARCANINE, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.POLIWHIRL]: [ - new SpeciesEvolution(Species.POLIWRATH, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesEvolution(Species.POLITOED, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.POLIWHIRL]: [ + new SpeciesEvolution(SpeciesId.POLIWRATH, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(SpeciesId.POLITOED, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.WEEPINBELL]: [ - new SpeciesEvolution(Species.VICTREEBEL, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.WEEPINBELL]: [ + new SpeciesEvolution(SpeciesId.VICTREEBEL, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.MAGNETON]: [ - new SpeciesEvolution(Species.MAGNEZONE, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.MAGNETON]: [ + new SpeciesEvolution(SpeciesId.MAGNEZONE, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.SHELLDER]: [ - new SpeciesEvolution(Species.CLOYSTER, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.SHELLDER]: [ + new SpeciesEvolution(SpeciesId.CLOYSTER, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.EXEGGCUTE]: [ - new SpeciesEvolution(Species.ALOLA_EXEGGUTOR, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesEvolution(Species.EXEGGUTOR, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.EXEGGCUTE]: [ + new SpeciesEvolution(SpeciesId.ALOLA_EXEGGUTOR, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(SpeciesId.EXEGGUTOR, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.TANGELA]: [ - new SpeciesEvolution(Species.TANGROWTH, 34, null, new MoveEvolutionCondition(Moves.ANCIENT_POWER), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.TANGELA]: [ + new SpeciesEvolution(SpeciesId.TANGROWTH, 34, null, new MoveEvolutionCondition(MoveId.ANCIENT_POWER), SpeciesWildEvolutionDelay.LONG) ], - [Species.LICKITUNG]: [ - new SpeciesEvolution(Species.LICKILICKY, 32, null, new MoveEvolutionCondition(Moves.ROLLOUT), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.LICKITUNG]: [ + new SpeciesEvolution(SpeciesId.LICKILICKY, 32, null, new MoveEvolutionCondition(MoveId.ROLLOUT), SpeciesWildEvolutionDelay.LONG) ], - [Species.STARYU]: [ - new SpeciesEvolution(Species.STARMIE, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.STARYU]: [ + new SpeciesEvolution(SpeciesId.STARMIE, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.EEVEE]: [ - new SpeciesFormEvolution(Species.SYLVEON, "", "", 1, null, new FriendshipMoveTypeEvolutionCondition(120, PokemonType.FAIRY), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.SYLVEON, "partner", "", 1, null, new FriendshipMoveTypeEvolutionCondition(120, PokemonType.FAIRY), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ESPEON, "", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "day"), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ESPEON, "partner", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "day"), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.UMBREON, "", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "night"), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.UMBREON, "partner", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "night"), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.VAPOREON, "", "", 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.VAPOREON, "partner", "", 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.JOLTEON, "", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.JOLTEON, "partner", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.FLAREON, "", "", 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.FLAREON, "partner", "", 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.LEAFEON, "", "", 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.LEAFEON, "partner", "", 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.GLACEON, "", "", 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.GLACEON, "partner", "", 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.EEVEE]: [ + new SpeciesFormEvolution(SpeciesId.SYLVEON, "", "", 1, null, new FriendshipMoveTypeEvolutionCondition(120, PokemonType.FAIRY), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.SYLVEON, "partner", "", 1, null, new FriendshipMoveTypeEvolutionCondition(120, PokemonType.FAIRY), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.ESPEON, "", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "day"), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.ESPEON, "partner", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "day"), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.UMBREON, "", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "night"), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.UMBREON, "partner", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "night"), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.VAPOREON, "", "", 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.VAPOREON, "partner", "", 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.JOLTEON, "", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.JOLTEON, "partner", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.FLAREON, "", "", 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.FLAREON, "partner", "", 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.LEAFEON, "", "", 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.LEAFEON, "partner", "", 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.GLACEON, "", "", 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.GLACEON, "partner", "", 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.TOGETIC]: [ - new SpeciesEvolution(Species.TOGEKISS, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.TOGETIC]: [ + new SpeciesEvolution(SpeciesId.TOGEKISS, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.AIPOM]: [ - new SpeciesEvolution(Species.AMBIPOM, 32, null, new MoveEvolutionCondition(Moves.DOUBLE_HIT), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.AIPOM]: [ + new SpeciesEvolution(SpeciesId.AMBIPOM, 32, null, new MoveEvolutionCondition(MoveId.DOUBLE_HIT), SpeciesWildEvolutionDelay.LONG) ], - [Species.SUNKERN]: [ - new SpeciesEvolution(Species.SUNFLORA, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.SUNKERN]: [ + new SpeciesEvolution(SpeciesId.SUNFLORA, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.YANMA]: [ - new SpeciesEvolution(Species.YANMEGA, 33, null, new MoveEvolutionCondition(Moves.ANCIENT_POWER), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.YANMA]: [ + new SpeciesEvolution(SpeciesId.YANMEGA, 33, null, new MoveEvolutionCondition(MoveId.ANCIENT_POWER), SpeciesWildEvolutionDelay.LONG) ], - [Species.MURKROW]: [ - new SpeciesEvolution(Species.HONCHKROW, 1, EvolutionItem.DUSK_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.MURKROW]: [ + new SpeciesEvolution(SpeciesId.HONCHKROW, 1, EvolutionItem.DUSK_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.MISDREAVUS]: [ - new SpeciesEvolution(Species.MISMAGIUS, 1, EvolutionItem.DUSK_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.MISDREAVUS]: [ + new SpeciesEvolution(SpeciesId.MISMAGIUS, 1, EvolutionItem.DUSK_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.GIRAFARIG]: [ - new SpeciesEvolution(Species.FARIGIRAF, 32, null, new MoveEvolutionCondition(Moves.TWIN_BEAM), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.GIRAFARIG]: [ + new SpeciesEvolution(SpeciesId.FARIGIRAF, 32, null, new MoveEvolutionCondition(MoveId.TWIN_BEAM), SpeciesWildEvolutionDelay.LONG) ], - [Species.DUNSPARCE]: [ - new SpeciesFormEvolution(Species.DUDUNSPARCE, "", "three-segment", 32, null, new DunsparceEvolutionCondition(), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.DUDUNSPARCE, "", "two-segment", 32, null, new MoveEvolutionCondition(Moves.HYPER_DRILL), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.DUNSPARCE]: [ + new SpeciesFormEvolution(SpeciesId.DUDUNSPARCE, "", "three-segment", 32, null, new DunsparceEvolutionCondition(), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.DUDUNSPARCE, "", "two-segment", 32, null, new MoveEvolutionCondition(MoveId.HYPER_DRILL), SpeciesWildEvolutionDelay.LONG) ], - [Species.GLIGAR]: [ - new SpeciesEvolution(Species.GLISCOR, 1, EvolutionItem.RAZOR_FANG, new TimeOfDayEvolutionCondition("night") /* Razor fang at night*/, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.GLIGAR]: [ + new SpeciesEvolution(SpeciesId.GLISCOR, 1, EvolutionItem.RAZOR_FANG, new TimeOfDayEvolutionCondition("night") /* Razor fang at night*/, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.SNEASEL]: [ - new SpeciesEvolution(Species.WEAVILE, 1, EvolutionItem.RAZOR_CLAW, new TimeOfDayEvolutionCondition("night") /* Razor claw at night*/, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.SNEASEL]: [ + new SpeciesEvolution(SpeciesId.WEAVILE, 1, EvolutionItem.RAZOR_CLAW, new TimeOfDayEvolutionCondition("night") /* Razor claw at night*/, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.URSARING]: [ - new SpeciesEvolution(Species.URSALUNA, 1, EvolutionItem.PEAT_BLOCK, null, SpeciesWildEvolutionDelay.VERY_LONG) //Ursaring does not evolve into Bloodmoon Ursaluna + [SpeciesId.URSARING]: [ + new SpeciesEvolution(SpeciesId.URSALUNA, 1, EvolutionItem.PEAT_BLOCK, null, SpeciesWildEvolutionDelay.VERY_LONG) //Ursaring does not evolve into Bloodmoon Ursaluna ], - [Species.PILOSWINE]: [ - new SpeciesEvolution(Species.MAMOSWINE, 1, null, new MoveEvolutionCondition(Moves.ANCIENT_POWER), SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.PILOSWINE]: [ + new SpeciesEvolution(SpeciesId.MAMOSWINE, 1, null, new MoveEvolutionCondition(MoveId.ANCIENT_POWER), SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.STANTLER]: [ - new SpeciesEvolution(Species.WYRDEER, 25, null, new MoveEvolutionCondition(Moves.PSYSHIELD_BASH), SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.STANTLER]: [ + new SpeciesEvolution(SpeciesId.WYRDEER, 25, null, new MoveEvolutionCondition(MoveId.PSYSHIELD_BASH), SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.LOMBRE]: [ - new SpeciesEvolution(Species.LUDICOLO, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.LOMBRE]: [ + new SpeciesEvolution(SpeciesId.LUDICOLO, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.NUZLEAF]: [ - new SpeciesEvolution(Species.SHIFTRY, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.NUZLEAF]: [ + new SpeciesEvolution(SpeciesId.SHIFTRY, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.NOSEPASS]: [ - new SpeciesEvolution(Species.PROBOPASS, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.NOSEPASS]: [ + new SpeciesEvolution(SpeciesId.PROBOPASS, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.SKITTY]: [ - new SpeciesEvolution(Species.DELCATTY, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.SKITTY]: [ + new SpeciesEvolution(SpeciesId.DELCATTY, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.ROSELIA]: [ - new SpeciesEvolution(Species.ROSERADE, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.ROSELIA]: [ + new SpeciesEvolution(SpeciesId.ROSERADE, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.BONSLY]: [ - new SpeciesEvolution(Species.SUDOWOODO, 1, null, new MoveEvolutionCondition(Moves.MIMIC), SpeciesWildEvolutionDelay.MEDIUM) + [SpeciesId.BONSLY]: [ + new SpeciesEvolution(SpeciesId.SUDOWOODO, 1, null, new MoveEvolutionCondition(MoveId.MIMIC), SpeciesWildEvolutionDelay.MEDIUM) ], - [Species.MIME_JR]: [ - new SpeciesEvolution(Species.GALAR_MR_MIME, 1, null, new MoveTimeOfDayEvolutionCondition(Moves.MIMIC, "night"), SpeciesWildEvolutionDelay.MEDIUM), - new SpeciesEvolution(Species.MR_MIME, 1, null, new MoveTimeOfDayEvolutionCondition(Moves.MIMIC, "day"), SpeciesWildEvolutionDelay.MEDIUM) + [SpeciesId.MIME_JR]: [ + new SpeciesEvolution(SpeciesId.GALAR_MR_MIME, 1, null, new MoveTimeOfDayEvolutionCondition(MoveId.MIMIC, "night"), SpeciesWildEvolutionDelay.MEDIUM), + new SpeciesEvolution(SpeciesId.MR_MIME, 1, null, new MoveTimeOfDayEvolutionCondition(MoveId.MIMIC, "day"), SpeciesWildEvolutionDelay.MEDIUM) ], - [Species.PANSAGE]: [ - new SpeciesEvolution(Species.SIMISAGE, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.PANSAGE]: [ + new SpeciesEvolution(SpeciesId.SIMISAGE, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.PANSEAR]: [ - new SpeciesEvolution(Species.SIMISEAR, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.PANSEAR]: [ + new SpeciesEvolution(SpeciesId.SIMISEAR, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.PANPOUR]: [ - new SpeciesEvolution(Species.SIMIPOUR, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.PANPOUR]: [ + new SpeciesEvolution(SpeciesId.SIMIPOUR, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.MUNNA]: [ - new SpeciesEvolution(Species.MUSHARNA, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.MUNNA]: [ + new SpeciesEvolution(SpeciesId.MUSHARNA, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.COTTONEE]: [ - new SpeciesEvolution(Species.WHIMSICOTT, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.COTTONEE]: [ + new SpeciesEvolution(SpeciesId.WHIMSICOTT, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.PETILIL]: [ - new SpeciesEvolution(Species.HISUI_LILLIGANT, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesEvolution(Species.LILLIGANT, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.PETILIL]: [ + new SpeciesEvolution(SpeciesId.HISUI_LILLIGANT, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(SpeciesId.LILLIGANT, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.BASCULIN]: [ - new SpeciesFormEvolution(Species.BASCULEGION, "white-striped", "female", 40, null, new GenderEvolutionCondition(Gender.FEMALE), SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesFormEvolution(Species.BASCULEGION, "white-striped", "male", 40, null, new GenderEvolutionCondition(Gender.MALE), SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.BASCULIN]: [ + new SpeciesFormEvolution(SpeciesId.BASCULEGION, "white-striped", "female", 40, null, new GenderEvolutionCondition(Gender.FEMALE), SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesFormEvolution(SpeciesId.BASCULEGION, "white-striped", "male", 40, null, new GenderEvolutionCondition(Gender.MALE), SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.MINCCINO]: [ - new SpeciesEvolution(Species.CINCCINO, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.MINCCINO]: [ + new SpeciesEvolution(SpeciesId.CINCCINO, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.EELEKTRIK]: [ - new SpeciesEvolution(Species.EELEKTROSS, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.EELEKTRIK]: [ + new SpeciesEvolution(SpeciesId.EELEKTROSS, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.LAMPENT]: [ - new SpeciesEvolution(Species.CHANDELURE, 1, EvolutionItem.DUSK_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.LAMPENT]: [ + new SpeciesEvolution(SpeciesId.CHANDELURE, 1, EvolutionItem.DUSK_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.FLOETTE]: [ - new SpeciesEvolution(Species.FLORGES, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.FLOETTE]: [ + new SpeciesEvolution(SpeciesId.FLORGES, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.DOUBLADE]: [ - new SpeciesEvolution(Species.AEGISLASH, 1, EvolutionItem.DUSK_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.DOUBLADE]: [ + new SpeciesEvolution(SpeciesId.AEGISLASH, 1, EvolutionItem.DUSK_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.HELIOPTILE]: [ - new SpeciesEvolution(Species.HELIOLISK, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.HELIOPTILE]: [ + new SpeciesEvolution(SpeciesId.HELIOLISK, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.CHARJABUG]: [ - new SpeciesEvolution(Species.VIKAVOLT, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.CHARJABUG]: [ + new SpeciesEvolution(SpeciesId.VIKAVOLT, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.CRABRAWLER]: [ - new SpeciesEvolution(Species.CRABOMINABLE, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.CRABRAWLER]: [ + new SpeciesEvolution(SpeciesId.CRABOMINABLE, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.ROCKRUFF]: [ - new SpeciesFormEvolution(Species.LYCANROC, "own-tempo", "dusk", 25, null, null), - new SpeciesFormEvolution(Species.LYCANROC, "", "midday", 25, null, new TimeOfDayEvolutionCondition("day")), - new SpeciesFormEvolution(Species.LYCANROC, "", "midnight", 25, null, new TimeOfDayEvolutionCondition("night")) + [SpeciesId.ROCKRUFF]: [ + new SpeciesFormEvolution(SpeciesId.LYCANROC, "own-tempo", "dusk", 25, null, null), + new SpeciesFormEvolution(SpeciesId.LYCANROC, "", "midday", 25, null, new TimeOfDayEvolutionCondition("day")), + new SpeciesFormEvolution(SpeciesId.LYCANROC, "", "midnight", 25, null, new TimeOfDayEvolutionCondition("night")) ], - [Species.STEENEE]: [ - new SpeciesEvolution(Species.TSAREENA, 28, null, new MoveEvolutionCondition(Moves.STOMP), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.STEENEE]: [ + new SpeciesEvolution(SpeciesId.TSAREENA, 28, null, new MoveEvolutionCondition(MoveId.STOMP), SpeciesWildEvolutionDelay.LONG) ], - [Species.POIPOLE]: [ - new SpeciesEvolution(Species.NAGANADEL, 1, null, new MoveEvolutionCondition(Moves.DRAGON_PULSE), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.POIPOLE]: [ + new SpeciesEvolution(SpeciesId.NAGANADEL, 1, null, new MoveEvolutionCondition(MoveId.DRAGON_PULSE), SpeciesWildEvolutionDelay.LONG) ], - [Species.ALOLA_SANDSHREW]: [ - new SpeciesEvolution(Species.ALOLA_SANDSLASH, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.ALOLA_SANDSHREW]: [ + new SpeciesEvolution(SpeciesId.ALOLA_SANDSLASH, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.ALOLA_VULPIX]: [ - new SpeciesEvolution(Species.ALOLA_NINETALES, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.ALOLA_VULPIX]: [ + new SpeciesEvolution(SpeciesId.ALOLA_NINETALES, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.APPLIN]: [ - new SpeciesEvolution(Species.DIPPLIN, 1, EvolutionItem.SYRUPY_APPLE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesEvolution(Species.FLAPPLE, 1, EvolutionItem.TART_APPLE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesEvolution(Species.APPLETUN, 1, EvolutionItem.SWEET_APPLE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.APPLIN]: [ + new SpeciesEvolution(SpeciesId.DIPPLIN, 1, EvolutionItem.SYRUPY_APPLE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(SpeciesId.FLAPPLE, 1, EvolutionItem.TART_APPLE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(SpeciesId.APPLETUN, 1, EvolutionItem.SWEET_APPLE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.CLOBBOPUS]: [ - new SpeciesEvolution(Species.GRAPPLOCT, 35, null, new MoveEvolutionCondition(Moves.TAUNT)/*Once Taunt is implemented, change evo level to 1 and delay to LONG*/) + [SpeciesId.CLOBBOPUS]: [ + new SpeciesEvolution(SpeciesId.GRAPPLOCT, 35, null, new MoveEvolutionCondition(MoveId.TAUNT)/*Once Taunt is implemented, change evo level to 1 and delay to LONG*/) ], - [Species.SINISTEA]: [ - new SpeciesFormEvolution(Species.POLTEAGEIST, "phony", "phony", 1, EvolutionItem.CRACKED_POT, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.POLTEAGEIST, "antique", "antique", 1, EvolutionItem.CHIPPED_POT, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.SINISTEA]: [ + new SpeciesFormEvolution(SpeciesId.POLTEAGEIST, "phony", "phony", 1, EvolutionItem.CRACKED_POT, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.POLTEAGEIST, "antique", "antique", 1, EvolutionItem.CHIPPED_POT, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.MILCERY]: [ - new SpeciesFormEvolution(Species.ALCREMIE, "", "vanilla-cream", 1, EvolutionItem.STRAWBERRY_SWEET, - new BiomeEvolutionCondition([ Biome.TOWN, Biome.PLAINS, Biome.GRASS, Biome.TALL_GRASS, Biome.METROPOLIS ]), + [SpeciesId.MILCERY]: [ + new SpeciesFormEvolution(SpeciesId.ALCREMIE, "", "vanilla-cream", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ BiomeId.TOWN, BiomeId.PLAINS, BiomeId.GRASS, BiomeId.TALL_GRASS, BiomeId.METROPOLIS ]), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "ruby-cream", 1, EvolutionItem.STRAWBERRY_SWEET, - new BiomeEvolutionCondition([ Biome.BADLANDS, Biome.VOLCANO, Biome.GRAVEYARD, Biome.FACTORY, Biome.SLUM ]), + new SpeciesFormEvolution(SpeciesId.ALCREMIE, "", "ruby-cream", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ BiomeId.BADLANDS, BiomeId.VOLCANO, BiomeId.GRAVEYARD, BiomeId.FACTORY, BiomeId.SLUM ]), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "matcha-cream", 1, EvolutionItem.STRAWBERRY_SWEET, - new BiomeEvolutionCondition([ Biome.FOREST, Biome.SWAMP, Biome.MEADOW, Biome.JUNGLE ]), + new SpeciesFormEvolution(SpeciesId.ALCREMIE, "", "matcha-cream", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ BiomeId.FOREST, BiomeId.SWAMP, BiomeId.MEADOW, BiomeId.JUNGLE ]), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "mint-cream", 1, EvolutionItem.STRAWBERRY_SWEET, - new BiomeEvolutionCondition([ Biome.SEA, Biome.BEACH, Biome.LAKE, Biome.SEABED ]), + new SpeciesFormEvolution(SpeciesId.ALCREMIE, "", "mint-cream", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ BiomeId.SEA, BiomeId.BEACH, BiomeId.LAKE, BiomeId.SEABED ]), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "lemon-cream", 1, EvolutionItem.STRAWBERRY_SWEET, - new BiomeEvolutionCondition([ Biome.DESERT, Biome.POWER_PLANT, Biome.DOJO, Biome.RUINS, Biome.CONSTRUCTION_SITE ]), + new SpeciesFormEvolution(SpeciesId.ALCREMIE, "", "lemon-cream", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ BiomeId.DESERT, BiomeId.POWER_PLANT, BiomeId.DOJO, BiomeId.RUINS, BiomeId.CONSTRUCTION_SITE ]), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "salted-cream", 1, EvolutionItem.STRAWBERRY_SWEET, - new BiomeEvolutionCondition([ Biome.MOUNTAIN, Biome.CAVE, Biome.ICE_CAVE, Biome.FAIRY_CAVE, Biome.SNOWY_FOREST ]), + new SpeciesFormEvolution(SpeciesId.ALCREMIE, "", "salted-cream", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ BiomeId.MOUNTAIN, BiomeId.CAVE, BiomeId.ICE_CAVE, BiomeId.FAIRY_CAVE, BiomeId.SNOWY_FOREST ]), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "ruby-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, - new BiomeEvolutionCondition([ Biome.WASTELAND, Biome.LABORATORY ]), + new SpeciesFormEvolution(SpeciesId.ALCREMIE, "", "ruby-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ BiomeId.WASTELAND, BiomeId.LABORATORY ]), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "caramel-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, - new BiomeEvolutionCondition([ Biome.TEMPLE, Biome.ISLAND ]), + new SpeciesFormEvolution(SpeciesId.ALCREMIE, "", "caramel-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ BiomeId.TEMPLE, BiomeId.ISLAND ]), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "rainbow-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, - new BiomeEvolutionCondition([ Biome.ABYSS, Biome.SPACE, Biome.END ]), + new SpeciesFormEvolution(SpeciesId.ALCREMIE, "", "rainbow-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ BiomeId.ABYSS, BiomeId.SPACE, BiomeId.END ]), SpeciesWildEvolutionDelay.LONG) ], - [Species.DURALUDON]: [ - new SpeciesFormEvolution(Species.ARCHALUDON, "", "", 1, EvolutionItem.METAL_ALLOY, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.DURALUDON]: [ + new SpeciesFormEvolution(SpeciesId.ARCHALUDON, "", "", 1, EvolutionItem.METAL_ALLOY, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.KUBFU]: [ - new SpeciesFormEvolution(Species.URSHIFU, "", "single-strike", 1, EvolutionItem.SCROLL_OF_DARKNESS, null, SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesFormEvolution(Species.URSHIFU, "", "rapid-strike", 1, EvolutionItem.SCROLL_OF_WATERS, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.KUBFU]: [ + new SpeciesFormEvolution(SpeciesId.URSHIFU, "", "single-strike", 1, EvolutionItem.SCROLL_OF_DARKNESS, null, SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesFormEvolution(SpeciesId.URSHIFU, "", "rapid-strike", 1, EvolutionItem.SCROLL_OF_WATERS, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.GALAR_DARUMAKA]: [ - new SpeciesEvolution(Species.GALAR_DARMANITAN, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.GALAR_DARUMAKA]: [ + new SpeciesEvolution(SpeciesId.GALAR_DARMANITAN, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.HISUI_GROWLITHE]: [ - new SpeciesEvolution(Species.HISUI_ARCANINE, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.HISUI_GROWLITHE]: [ + new SpeciesEvolution(SpeciesId.HISUI_ARCANINE, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.HISUI_VOLTORB]: [ - new SpeciesEvolution(Species.HISUI_ELECTRODE, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.HISUI_VOLTORB]: [ + new SpeciesEvolution(SpeciesId.HISUI_ELECTRODE, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.HISUI_QWILFISH]: [ - new SpeciesEvolution(Species.OVERQWIL, 28, null, new MoveEvolutionCondition(Moves.BARB_BARRAGE), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.HISUI_QWILFISH]: [ + new SpeciesEvolution(SpeciesId.OVERQWIL, 28, null, new MoveEvolutionCondition(MoveId.BARB_BARRAGE), SpeciesWildEvolutionDelay.LONG) ], - [Species.HISUI_SNEASEL]: [ - new SpeciesEvolution(Species.SNEASLER, 1, EvolutionItem.RAZOR_CLAW, new TimeOfDayEvolutionCondition("day") /* Razor claw at day*/, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.HISUI_SNEASEL]: [ + new SpeciesEvolution(SpeciesId.SNEASLER, 1, EvolutionItem.RAZOR_CLAW, new TimeOfDayEvolutionCondition("day") /* Razor claw at day*/, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.CHARCADET]: [ - new SpeciesEvolution(Species.ARMAROUGE, 1, EvolutionItem.AUSPICIOUS_ARMOR, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesEvolution(Species.CERULEDGE, 1, EvolutionItem.MALICIOUS_ARMOR, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.CHARCADET]: [ + new SpeciesEvolution(SpeciesId.ARMAROUGE, 1, EvolutionItem.AUSPICIOUS_ARMOR, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(SpeciesId.CERULEDGE, 1, EvolutionItem.MALICIOUS_ARMOR, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.TADBULB]: [ - new SpeciesEvolution(Species.BELLIBOLT, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.TADBULB]: [ + new SpeciesEvolution(SpeciesId.BELLIBOLT, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.CAPSAKID]: [ - new SpeciesEvolution(Species.SCOVILLAIN, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.CAPSAKID]: [ + new SpeciesEvolution(SpeciesId.SCOVILLAIN, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.CETODDLE]: [ - new SpeciesEvolution(Species.CETITAN, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.CETODDLE]: [ + new SpeciesEvolution(SpeciesId.CETITAN, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.POLTCHAGEIST]: [ - new SpeciesFormEvolution(Species.SINISTCHA, "counterfeit", "unremarkable", 1, EvolutionItem.UNREMARKABLE_TEACUP, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.SINISTCHA, "artisan", "masterpiece", 1, EvolutionItem.MASTERPIECE_TEACUP, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.POLTCHAGEIST]: [ + new SpeciesFormEvolution(SpeciesId.SINISTCHA, "counterfeit", "unremarkable", 1, EvolutionItem.UNREMARKABLE_TEACUP, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(SpeciesId.SINISTCHA, "artisan", "masterpiece", 1, EvolutionItem.MASTERPIECE_TEACUP, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.DIPPLIN]: [ - new SpeciesEvolution(Species.HYDRAPPLE, 1, null, new MoveEvolutionCondition(Moves.DRAGON_CHEER), SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.DIPPLIN]: [ + new SpeciesEvolution(SpeciesId.HYDRAPPLE, 1, null, new MoveEvolutionCondition(MoveId.DRAGON_CHEER), SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.KADABRA]: [ - new SpeciesEvolution(Species.ALAKAZAM, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.KADABRA]: [ + new SpeciesEvolution(SpeciesId.ALAKAZAM, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.MACHOKE]: [ - new SpeciesEvolution(Species.MACHAMP, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.MACHOKE]: [ + new SpeciesEvolution(SpeciesId.MACHAMP, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.GRAVELER]: [ - new SpeciesEvolution(Species.GOLEM, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.GRAVELER]: [ + new SpeciesEvolution(SpeciesId.GOLEM, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.HAUNTER]: [ - new SpeciesEvolution(Species.GENGAR, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.HAUNTER]: [ + new SpeciesEvolution(SpeciesId.GENGAR, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.ONIX]: [ - new SpeciesEvolution(Species.STEELIX, 1, EvolutionItem.LINKING_CORD, new MoveTypeEvolutionCondition(PokemonType.STEEL), SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.ONIX]: [ + new SpeciesEvolution(SpeciesId.STEELIX, 1, EvolutionItem.LINKING_CORD, new MoveTypeEvolutionCondition(PokemonType.STEEL), SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.RHYDON]: [ - new SpeciesEvolution(Species.RHYPERIOR, 1, EvolutionItem.PROTECTOR, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.RHYDON]: [ + new SpeciesEvolution(SpeciesId.RHYPERIOR, 1, EvolutionItem.PROTECTOR, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.SEADRA]: [ - new SpeciesEvolution(Species.KINGDRA, 1, EvolutionItem.DRAGON_SCALE, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.SEADRA]: [ + new SpeciesEvolution(SpeciesId.KINGDRA, 1, EvolutionItem.DRAGON_SCALE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.SCYTHER]: [ - new SpeciesEvolution(Species.SCIZOR, 1, EvolutionItem.LINKING_CORD, new MoveTypeEvolutionCondition(PokemonType.STEEL), SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesEvolution(Species.KLEAVOR, 1, EvolutionItem.BLACK_AUGURITE, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.SCYTHER]: [ + new SpeciesEvolution(SpeciesId.SCIZOR, 1, EvolutionItem.LINKING_CORD, new MoveTypeEvolutionCondition(PokemonType.STEEL), SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesEvolution(SpeciesId.KLEAVOR, 1, EvolutionItem.BLACK_AUGURITE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.ELECTABUZZ]: [ - new SpeciesEvolution(Species.ELECTIVIRE, 1, EvolutionItem.ELECTIRIZER, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.ELECTABUZZ]: [ + new SpeciesEvolution(SpeciesId.ELECTIVIRE, 1, EvolutionItem.ELECTIRIZER, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.MAGMAR]: [ - new SpeciesEvolution(Species.MAGMORTAR, 1, EvolutionItem.MAGMARIZER, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.MAGMAR]: [ + new SpeciesEvolution(SpeciesId.MAGMORTAR, 1, EvolutionItem.MAGMARIZER, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.PORYGON]: [ - new SpeciesEvolution(Species.PORYGON2, 1, EvolutionItem.UPGRADE, null, SpeciesWildEvolutionDelay.LONG) + [SpeciesId.PORYGON]: [ + new SpeciesEvolution(SpeciesId.PORYGON2, 1, EvolutionItem.UPGRADE, null, SpeciesWildEvolutionDelay.LONG) ], - [Species.PORYGON2]: [ - new SpeciesEvolution(Species.PORYGON_Z, 1, EvolutionItem.DUBIOUS_DISC, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.PORYGON2]: [ + new SpeciesEvolution(SpeciesId.PORYGON_Z, 1, EvolutionItem.DUBIOUS_DISC, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.FEEBAS]: [ - new SpeciesEvolution(Species.MILOTIC, 1, EvolutionItem.PRISM_SCALE, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.FEEBAS]: [ + new SpeciesEvolution(SpeciesId.MILOTIC, 1, EvolutionItem.PRISM_SCALE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.DUSCLOPS]: [ - new SpeciesEvolution(Species.DUSKNOIR, 1, EvolutionItem.REAPER_CLOTH, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.DUSCLOPS]: [ + new SpeciesEvolution(SpeciesId.DUSKNOIR, 1, EvolutionItem.REAPER_CLOTH, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.CLAMPERL]: [ + [SpeciesId.CLAMPERL]: [ // TODO: Change the SpeciesEvolutionConditions here to use a bespoke HeldItemEvolutionCondition after the modifier rework - new SpeciesEvolution(Species.HUNTAIL, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => p.getHeldItems().some(m => m instanceof SpeciesStatBoosterModifier && (m.type as SpeciesStatBoosterModifierType).key === "DEEP_SEA_TOOTH")), SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesEvolution(Species.GOREBYSS, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => p.getHeldItems().some(m => m instanceof SpeciesStatBoosterModifier && (m.type as SpeciesStatBoosterModifierType).key === "DEEP_SEA_SCALE")), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(SpeciesId.HUNTAIL, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => p.getHeldItems().some(m => m instanceof SpeciesStatBoosterModifier && (m.type as SpeciesStatBoosterModifierType).key === "DEEP_SEA_TOOTH")), SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesEvolution(SpeciesId.GOREBYSS, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => p.getHeldItems().some(m => m instanceof SpeciesStatBoosterModifier && (m.type as SpeciesStatBoosterModifierType).key === "DEEP_SEA_SCALE")), SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.BOLDORE]: [ - new SpeciesEvolution(Species.GIGALITH, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.BOLDORE]: [ + new SpeciesEvolution(SpeciesId.GIGALITH, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.GURDURR]: [ - new SpeciesEvolution(Species.CONKELDURR, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.GURDURR]: [ + new SpeciesEvolution(SpeciesId.CONKELDURR, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.KARRABLAST]: [ - new SpeciesEvolution(Species.ESCAVALIER, 1, EvolutionItem.LINKING_CORD, new CaughtEvolutionCondition(Species.SHELMET), SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.KARRABLAST]: [ + new SpeciesEvolution(SpeciesId.ESCAVALIER, 1, EvolutionItem.LINKING_CORD, new CaughtEvolutionCondition(SpeciesId.SHELMET), SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.SHELMET]: [ - new SpeciesEvolution(Species.ACCELGOR, 1, EvolutionItem.LINKING_CORD, new CaughtEvolutionCondition(Species.KARRABLAST), SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.SHELMET]: [ + new SpeciesEvolution(SpeciesId.ACCELGOR, 1, EvolutionItem.LINKING_CORD, new CaughtEvolutionCondition(SpeciesId.KARRABLAST), SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.SPRITZEE]: [ - new SpeciesEvolution(Species.AROMATISSE, 1, EvolutionItem.SACHET, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.SPRITZEE]: [ + new SpeciesEvolution(SpeciesId.AROMATISSE, 1, EvolutionItem.SACHET, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.SWIRLIX]: [ - new SpeciesEvolution(Species.SLURPUFF, 1, EvolutionItem.WHIPPED_DREAM, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.SWIRLIX]: [ + new SpeciesEvolution(SpeciesId.SLURPUFF, 1, EvolutionItem.WHIPPED_DREAM, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.PHANTUMP]: [ - new SpeciesEvolution(Species.TREVENANT, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.PHANTUMP]: [ + new SpeciesEvolution(SpeciesId.TREVENANT, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.PUMPKABOO]: [ - new SpeciesEvolution(Species.GOURGEIST, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.PUMPKABOO]: [ + new SpeciesEvolution(SpeciesId.GOURGEIST, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.ALOLA_GRAVELER]: [ - new SpeciesEvolution(Species.ALOLA_GOLEM, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.ALOLA_GRAVELER]: [ + new SpeciesEvolution(SpeciesId.ALOLA_GOLEM, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.PRIMEAPE]: [ - new SpeciesEvolution(Species.ANNIHILAPE, 35, null, new MoveEvolutionCondition(Moves.RAGE_FIST), SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.PRIMEAPE]: [ + new SpeciesEvolution(SpeciesId.ANNIHILAPE, 35, null, new MoveEvolutionCondition(MoveId.RAGE_FIST), SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.GOLBAT]: [ - new SpeciesEvolution(Species.CROBAT, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.GOLBAT]: [ + new SpeciesEvolution(SpeciesId.CROBAT, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.VERY_LONG) ], - [Species.CHANSEY]: [ - new SpeciesEvolution(Species.BLISSEY, 1, null, new FriendshipEvolutionCondition(200), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.CHANSEY]: [ + new SpeciesEvolution(SpeciesId.BLISSEY, 1, null, new FriendshipEvolutionCondition(200), SpeciesWildEvolutionDelay.LONG) ], - [Species.PICHU]: [ - new SpeciesFormEvolution(Species.PIKACHU, "spiky", "partner", 1, null, new FriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.SHORT), - new SpeciesFormEvolution(Species.PIKACHU, "", "", 1, null, new FriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.SHORT), + [SpeciesId.PICHU]: [ + new SpeciesFormEvolution(SpeciesId.PIKACHU, "spiky", "partner", 1, null, new FriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.SHORT), + new SpeciesFormEvolution(SpeciesId.PIKACHU, "", "", 1, null, new FriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.SHORT), ], - [Species.CLEFFA]: [ - new SpeciesEvolution(Species.CLEFAIRY, 1, null, new FriendshipEvolutionCondition(160), SpeciesWildEvolutionDelay.SHORT) + [SpeciesId.CLEFFA]: [ + new SpeciesEvolution(SpeciesId.CLEFAIRY, 1, null, new FriendshipEvolutionCondition(160), SpeciesWildEvolutionDelay.SHORT) ], - [Species.IGGLYBUFF]: [ - new SpeciesEvolution(Species.JIGGLYPUFF, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT) + [SpeciesId.IGGLYBUFF]: [ + new SpeciesEvolution(SpeciesId.JIGGLYPUFF, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT) ], - [Species.TOGEPI]: [ - new SpeciesEvolution(Species.TOGETIC, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT) + [SpeciesId.TOGEPI]: [ + new SpeciesEvolution(SpeciesId.TOGETIC, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT) ], - [Species.AZURILL]: [ - new SpeciesEvolution(Species.MARILL, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT) + [SpeciesId.AZURILL]: [ + new SpeciesEvolution(SpeciesId.MARILL, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT) ], - [Species.BUDEW]: [ - new SpeciesEvolution(Species.ROSELIA, 1, null, new FriendshipTimeOfDayEvolutionCondition(70, "day"), SpeciesWildEvolutionDelay.SHORT) + [SpeciesId.BUDEW]: [ + new SpeciesEvolution(SpeciesId.ROSELIA, 1, null, new FriendshipTimeOfDayEvolutionCondition(70, "day"), SpeciesWildEvolutionDelay.SHORT) ], - [Species.BUNEARY]: [ - new SpeciesEvolution(Species.LOPUNNY, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.MEDIUM) + [SpeciesId.BUNEARY]: [ + new SpeciesEvolution(SpeciesId.LOPUNNY, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.MEDIUM) ], - [Species.CHINGLING]: [ - new SpeciesEvolution(Species.CHIMECHO, 1, null, new FriendshipTimeOfDayEvolutionCondition(90, "night"), SpeciesWildEvolutionDelay.MEDIUM) + [SpeciesId.CHINGLING]: [ + new SpeciesEvolution(SpeciesId.CHIMECHO, 1, null, new FriendshipTimeOfDayEvolutionCondition(90, "night"), SpeciesWildEvolutionDelay.MEDIUM) ], - [Species.HAPPINY]: [ - new SpeciesEvolution(Species.CHANSEY, 1, null, new FriendshipEvolutionCondition(160), SpeciesWildEvolutionDelay.SHORT) + [SpeciesId.HAPPINY]: [ + new SpeciesEvolution(SpeciesId.CHANSEY, 1, null, new FriendshipEvolutionCondition(160), SpeciesWildEvolutionDelay.SHORT) ], - [Species.MUNCHLAX]: [ - new SpeciesEvolution(Species.SNORLAX, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.MUNCHLAX]: [ + new SpeciesEvolution(SpeciesId.SNORLAX, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) ], - [Species.RIOLU]: [ - new SpeciesEvolution(Species.LUCARIO, 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "day"), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.RIOLU]: [ + new SpeciesEvolution(SpeciesId.LUCARIO, 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "day"), SpeciesWildEvolutionDelay.LONG) ], - [Species.WOOBAT]: [ - new SpeciesEvolution(Species.SWOOBAT, 1, null, new FriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.MEDIUM) + [SpeciesId.WOOBAT]: [ + new SpeciesEvolution(SpeciesId.SWOOBAT, 1, null, new FriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.MEDIUM) ], - [Species.SWADLOON]: [ - new SpeciesEvolution(Species.LEAVANNY, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.SWADLOON]: [ + new SpeciesEvolution(SpeciesId.LEAVANNY, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) ], - [Species.TYPE_NULL]: [ - new SpeciesEvolution(Species.SILVALLY, 1, null, new FriendshipEvolutionCondition(100), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.TYPE_NULL]: [ + new SpeciesEvolution(SpeciesId.SILVALLY, 1, null, new FriendshipEvolutionCondition(100), SpeciesWildEvolutionDelay.LONG) ], - [Species.ALOLA_MEOWTH]: [ - new SpeciesEvolution(Species.ALOLA_PERSIAN, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) + [SpeciesId.ALOLA_MEOWTH]: [ + new SpeciesEvolution(SpeciesId.ALOLA_PERSIAN, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) ], - [Species.SNOM]: [ - new SpeciesEvolution(Species.FROSMOTH, 1, null, new FriendshipTimeOfDayEvolutionCondition(90, "night"), SpeciesWildEvolutionDelay.MEDIUM) + [SpeciesId.SNOM]: [ + new SpeciesEvolution(SpeciesId.FROSMOTH, 1, null, new FriendshipTimeOfDayEvolutionCondition(90, "night"), SpeciesWildEvolutionDelay.MEDIUM) ], - [Species.GIMMIGHOUL]: [ - new SpeciesFormEvolution(Species.GHOLDENGO, "chest", "", 1, null, new TreasureEvolutionCondition(), SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesFormEvolution(Species.GHOLDENGO, "roaming", "", 1, null, new TreasureEvolutionCondition(), SpeciesWildEvolutionDelay.VERY_LONG) + [SpeciesId.GIMMIGHOUL]: [ + new SpeciesFormEvolution(SpeciesId.GHOLDENGO, "chest", "", 1, null, new TreasureEvolutionCondition(), SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesFormEvolution(SpeciesId.GHOLDENGO, "roaming", "", 1, null, new TreasureEvolutionCondition(), SpeciesWildEvolutionDelay.VERY_LONG) ] }; interface PokemonPrevolutions { - [key: string]: Species + [key: string]: SpeciesId } export const pokemonPrevolutions: PokemonPrevolutions = {}; @@ -1903,7 +1903,7 @@ export function initPokemonPrevolutions(): void { if (ev.evoFormKey && megaFormKeys.indexOf(ev.evoFormKey) > -1) { continue; } - pokemonPrevolutions[ev.speciesId] = Number.parseInt(pk) as Species; + pokemonPrevolutions[ev.speciesId] = Number.parseInt(pk) as SpeciesId; } }); } diff --git a/src/data/balance/pokemon-level-moves.ts b/src/data/balance/pokemon-level-moves.ts index 0b0ba1b5f71..e8a0052da48 100644 --- a/src/data/balance/pokemon-level-moves.ts +++ b/src/data/balance/pokemon-level-moves.ts @@ -1,7 +1,7 @@ -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; -export type LevelMoves = ([number, Moves])[]; +export type LevelMoves = ([number, MoveId])[]; interface PokemonSpeciesLevelMoves { [key: number]: LevelMoves @@ -21,20001 +21,20001 @@ export const RELEARN_MOVE = -1; export const EVOLVE_MOVE = 0; export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { - [Species.BULBASAUR]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 3, Moves.VINE_WHIP ], - [ 6, Moves.GROWTH ], - [ 9, Moves.LEECH_SEED ], - [ 12, Moves.RAZOR_LEAF ], - [ 15, Moves.POISON_POWDER ], - [ 15, Moves.SLEEP_POWDER ], - [ 18, Moves.SEED_BOMB ], - [ 21, Moves.TAKE_DOWN ], - [ 24, Moves.SWEET_SCENT ], - [ 27, Moves.SYNTHESIS ], - [ 30, Moves.WORRY_SEED ], - [ 33, Moves.POWER_WHIP ], - [ 36, Moves.SOLAR_BEAM ], - ], - [Species.IVYSAUR]: [ - [ 1, Moves.VINE_WHIP ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.GROWTH ], - [ 9, Moves.LEECH_SEED ], - [ 12, Moves.RAZOR_LEAF ], - [ 15, Moves.POISON_POWDER ], - [ 15, Moves.SLEEP_POWDER ], - [ 20, Moves.SEED_BOMB ], - [ 25, Moves.TAKE_DOWN ], - [ 30, Moves.SWEET_SCENT ], - [ 35, Moves.SYNTHESIS ], - [ 40, Moves.WORRY_SEED ], - [ 45, Moves.POWER_WHIP ], - [ 50, Moves.SOLAR_BEAM ], - ], - [Species.VENUSAUR]: [ - [ EVOLVE_MOVE, Moves.PETAL_BLIZZARD ], - [ 1, Moves.GROWTH ], - [ 1, Moves.PETAL_DANCE ], - [ 1, Moves.VINE_WHIP ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 9, Moves.LEECH_SEED ], - [ 12, Moves.RAZOR_LEAF ], - [ 15, Moves.POISON_POWDER ], - [ 15, Moves.SLEEP_POWDER ], - [ 20, Moves.SEED_BOMB ], - [ 25, Moves.TAKE_DOWN ], - [ 30, Moves.SWEET_SCENT ], - [ 37, Moves.SYNTHESIS ], - [ 44, Moves.WORRY_SEED ], - [ 51, Moves.POWER_WHIP ], - [ 58, Moves.SOLAR_BEAM ], - ], - [Species.CHARMANDER]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 4, Moves.EMBER ], - [ 8, Moves.SMOKESCREEN ], - [ 12, Moves.DRAGON_BREATH ], - [ 17, Moves.FIRE_FANG ], - [ 20, Moves.SLASH ], - [ 24, Moves.FLAMETHROWER ], - [ 28, Moves.SCARY_FACE ], - [ 32, Moves.FIRE_SPIN ], - [ 36, Moves.INFERNO ], - [ 40, Moves.FLARE_BLITZ ], - ], - [Species.CHARMELEON]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 1, Moves.EMBER ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.FIRE_SPIN ], // Previous Stage Move - [ 12, Moves.DRAGON_BREATH ], - [ 19, Moves.FIRE_FANG ], - [ 24, Moves.SLASH ], - [ 30, Moves.FLAMETHROWER ], - [ 37, Moves.SCARY_FACE ], - [ 48, Moves.INFERNO ], - [ 54, Moves.FLARE_BLITZ ], - ], - [Species.CHARIZARD]: [ - [ EVOLVE_MOVE, Moves.AIR_SLASH ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 1, Moves.EMBER ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.HEAT_WAVE ], - [ 1, Moves.DRAGON_CLAW ], - [ 12, Moves.DRAGON_BREATH ], - [ 19, Moves.FIRE_FANG ], - [ 24, Moves.SLASH ], - [ 30, Moves.FLAMETHROWER ], - [ 39, Moves.SCARY_FACE ], - [ 46, Moves.FIRE_SPIN ], - [ 54, Moves.INFERNO ], - [ 62, Moves.FLARE_BLITZ ], - ], - [Species.SQUIRTLE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 3, Moves.WATER_GUN ], - [ 6, Moves.WITHDRAW ], - [ 9, Moves.RAPID_SPIN ], - [ 12, Moves.BITE ], - [ 15, Moves.WATER_PULSE ], - [ 18, Moves.PROTECT ], - [ 21, Moves.RAIN_DANCE ], - [ 24, Moves.AQUA_TAIL ], - [ 27, Moves.SHELL_SMASH ], - [ 30, Moves.IRON_DEFENSE ], - [ 33, Moves.HYDRO_PUMP ], - [ 36, Moves.WAVE_CRASH ], - ], - [Species.WARTORTLE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.WITHDRAW ], - [ 9, Moves.RAPID_SPIN ], - [ 12, Moves.BITE ], - [ 15, Moves.WATER_PULSE ], - [ 20, Moves.PROTECT ], - [ 25, Moves.RAIN_DANCE ], - [ 30, Moves.AQUA_TAIL ], - [ 35, Moves.SHELL_SMASH ], - [ 40, Moves.IRON_DEFENSE ], - [ 45, Moves.HYDRO_PUMP ], - [ 50, Moves.WAVE_CRASH ], - ], - [Species.BLASTOISE]: [ - [ EVOLVE_MOVE, Moves.FLASH_CANNON ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.WITHDRAW ], - [ 9, Moves.RAPID_SPIN ], - [ 12, Moves.BITE ], - [ 15, Moves.WATER_PULSE ], - [ 20, Moves.PROTECT ], - [ 25, Moves.RAIN_DANCE ], - [ 30, Moves.AQUA_TAIL ], - [ 35, Moves.SHELL_SMASH ], - [ 42, Moves.IRON_DEFENSE ], - [ 49, Moves.HYDRO_PUMP ], - [ 56, Moves.WAVE_CRASH ], - ], - [Species.CATERPIE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.STRING_SHOT ], - [ 9, Moves.BUG_BITE ], - ], - [Species.METAPOD]: [ - [ EVOLVE_MOVE, Moves.HARDEN ], - [ RELEARN_MOVE, Moves.TACKLE ], // Previous Stage Move - [ RELEARN_MOVE, Moves.STRING_SHOT ], // Previous Stage Move - [ RELEARN_MOVE, Moves.BUG_BITE ], // Previous Stage Move - [ 1, Moves.HARDEN ], - ], - [Species.BUTTERFREE]: [ - [ EVOLVE_MOVE, Moves.GUST ], - [ 1, Moves.TACKLE ], - [ 1, Moves.STRING_SHOT ], - [ 1, Moves.HARDEN ], - [ 1, Moves.BUG_BITE ], - [ 4, Moves.SUPERSONIC ], - [ 8, Moves.CONFUSION ], - [ 12, Moves.POISON_POWDER ], - [ 12, Moves.STUN_SPORE ], - [ 12, Moves.SLEEP_POWDER ], - [ 16, Moves.PSYBEAM ], - [ 20, Moves.WHIRLWIND ], - [ 24, Moves.AIR_SLASH ], - [ 28, Moves.SAFEGUARD ], - [ 32, Moves.BUG_BUZZ ], - [ 36, Moves.TAILWIND ], - [ 40, Moves.RAGE_POWDER ], - [ 44, Moves.QUIVER_DANCE ], - ], - [Species.WEEDLE]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.STRING_SHOT ], - [ 9, Moves.BUG_BITE ], - ], - [Species.KAKUNA]: [ - [ EVOLVE_MOVE, Moves.HARDEN ], - [ RELEARN_MOVE, Moves.POISON_STING ], // Previous Stage Move - [ RELEARN_MOVE, Moves.STRING_SHOT ], // Previous Stage Move - [ RELEARN_MOVE, Moves.BUG_BITE ], // Previous Stage Move - [ 1, Moves.HARDEN ], - ], - [Species.BEEDRILL]: [ - [ EVOLVE_MOVE, Moves.TWINEEDLE ], - [ 1, Moves.POISON_STING ], // Previous Stage Move - [ 1, Moves.STRING_SHOT ], // Previous Stage Move - [ 1, Moves.HARDEN ], // Previous Stage Move - [ 1, Moves.BUG_BITE ], // Previous Stage Move - [ 1, Moves.FURY_ATTACK ], - [ 11, Moves.FURY_CUTTER ], - [ 14, Moves.RAGE ], - [ 17, Moves.PURSUIT ], - [ 20, Moves.FOCUS_ENERGY ], - [ 23, Moves.VENOSHOCK ], - [ 26, Moves.ASSURANCE ], - [ 29, Moves.TOXIC_SPIKES ], - [ 32, Moves.PIN_MISSILE ], - [ 35, Moves.POISON_JAB ], - [ 38, Moves.AGILITY ], - [ 41, Moves.ENDEAVOR ], - [ 44, Moves.FELL_STINGER ], - ], - [Species.PIDGEY]: [ - [ 1, Moves.TACKLE ], - [ 5, Moves.SAND_ATTACK ], - [ 9, Moves.GUST ], - [ 13, Moves.QUICK_ATTACK ], - [ 17, Moves.WHIRLWIND ], - [ 21, Moves.TWISTER ], - [ 25, Moves.FEATHER_DANCE ], - [ 29, Moves.AGILITY ], - [ 33, Moves.WING_ATTACK ], - [ 37, Moves.ROOST ], - [ 41, Moves.TAILWIND ], - [ 45, Moves.AERIAL_ACE ], - [ 49, Moves.AIR_SLASH ], - [ 53, Moves.HURRICANE ], - ], - [Species.PIDGEOTTO]: [ - [ 1, Moves.GUST ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 5, Moves.SAND_ATTACK ], - [ 9, Moves.GUST ], - [ 13, Moves.QUICK_ATTACK ], - [ 17, Moves.WHIRLWIND ], - [ 22, Moves.TWISTER ], - [ 27, Moves.FEATHER_DANCE ], - [ 32, Moves.AGILITY ], - [ 37, Moves.WING_ATTACK ], - [ 42, Moves.ROOST ], - [ 47, Moves.TAILWIND ], - [ 52, Moves.AERIAL_ACE ], - [ 57, Moves.AIR_SLASH ], - [ 62, Moves.HURRICANE ], - ], - [Species.PIDGEOT]: [ - [ 1, Moves.GUST ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.HURRICANE ], - [ 5, Moves.SAND_ATTACK ], - [ 9, Moves.GUST ], - [ 17, Moves.WHIRLWIND ], - [ 22, Moves.TWISTER ], - [ 27, Moves.FEATHER_DANCE ], - [ 32, Moves.AGILITY ], - [ 38, Moves.WING_ATTACK ], - [ 44, Moves.ROOST ], - [ 50, Moves.TAILWIND ], - [ 56, Moves.AERIAL_ACE ], - [ 62, Moves.AIR_SLASH ], - [ 68, Moves.HURRICANE ], - ], - [Species.RATTATA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 4, Moves.QUICK_ATTACK ], - [ 7, Moves.FOCUS_ENERGY ], - [ 10, Moves.BITE ], - [ 13, Moves.LASER_FOCUS ], - [ 16, Moves.TAKE_DOWN ], - [ 19, Moves.ASSURANCE ], - [ 22, Moves.CRUNCH ], - [ 25, Moves.SUCKER_PUNCH ], - [ 28, Moves.SUPER_FANG ], - [ 31, Moves.DOUBLE_EDGE ], - [ 34, Moves.ENDEAVOR ], - ], - [Species.RATICATE]: [ - [ EVOLVE_MOVE, Moves.SCARY_FACE ], - [ 1, Moves.SWORDS_DANCE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.FOCUS_ENERGY ], - [ 10, Moves.BITE ], - [ 13, Moves.LASER_FOCUS ], - [ 16, Moves.TAKE_DOWN ], - [ 19, Moves.ASSURANCE ], - [ 24, Moves.CRUNCH ], - [ 29, Moves.SUCKER_PUNCH ], - [ 34, Moves.SUPER_FANG ], - [ 39, Moves.DOUBLE_EDGE ], - [ 44, Moves.ENDEAVOR ], - ], - [Species.SPEAROW]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.PECK ], - [ 4, Moves.LEER ], - [ 8, Moves.ASSURANCE ], - [ 11, Moves.FURY_ATTACK ], - [ 15, Moves.AERIAL_ACE ], - [ 18, Moves.WING_ATTACK ], - [ 22, Moves.TAKE_DOWN ], - [ 25, Moves.AGILITY ], - [ 29, Moves.FOCUS_ENERGY ], - [ 32, Moves.ROOST ], - [ 36, Moves.DRILL_PECK ], - ], - [Species.FEAROW]: [ - [ 1, Moves.LEER ], - [ 1, Moves.GROWL ], - [ 1, Moves.PECK ], - [ 1, Moves.ASSURANCE ], - [ 1, Moves.PLUCK ], - [ 1, Moves.DRILL_RUN ], - [ 1, Moves.PURSUIT ], - [ 4, Moves.LEER ], - [ 8, Moves.ASSURANCE ], - [ 11, Moves.FURY_ATTACK ], - [ 15, Moves.AERIAL_ACE ], - [ 18, Moves.WING_ATTACK ], - [ 23, Moves.TAKE_DOWN ], - [ 27, Moves.AGILITY ], - [ 32, Moves.FOCUS_ENERGY ], - [ 36, Moves.ROOST ], - [ 41, Moves.DRILL_PECK ], - ], - [Species.EKANS]: [ - [ 1, Moves.WRAP ], - [ 1, Moves.LEER ], - [ 4, Moves.POISON_STING ], - [ 9, Moves.BITE ], - [ 12, Moves.GLARE ], - [ 17, Moves.SCREECH ], - [ 20, Moves.ACID ], - [ 25, Moves.SWALLOW ], - [ 25, Moves.STOCKPILE ], - [ 25, Moves.SPIT_UP ], - [ 28, Moves.ACID_SPRAY ], - [ 33, Moves.SLUDGE_BOMB ], - [ 36, Moves.GASTRO_ACID ], - [ 38, Moves.BELCH ], - [ 41, Moves.HAZE ], - [ 44, Moves.COIL ], - [ 49, Moves.GUNK_SHOT ], - ], - [Species.ARBOK]: [ - [ EVOLVE_MOVE, Moves.CRUNCH ], - [ 1, Moves.WRAP ], - [ 1, Moves.POISON_STING ], - [ 1, Moves.LEER ], - [ 1, Moves.BITE ], - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.FIRE_FANG ], - [ 12, Moves.GLARE ], - [ 17, Moves.SCREECH ], - [ 20, Moves.ACID ], - [ 27, Moves.STOCKPILE ], - [ 27, Moves.SPIT_UP ], - [ 27, Moves.SWALLOW ], - [ 32, Moves.ACID_SPRAY ], - [ 39, Moves.SLUDGE_BOMB ], - [ 44, Moves.GASTRO_ACID ], - [ 48, Moves.BELCH ], - [ 51, Moves.HAZE ], - [ 56, Moves.COIL ], - [ 63, Moves.GUNK_SHOT ], - ], - [Species.PIKACHU]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.NUZZLE ], - [ 4, Moves.THUNDER_WAVE ], - [ 8, Moves.DOUBLE_TEAM ], - [ 12, Moves.ELECTRO_BALL ], - [ 16, Moves.FEINT ], - [ 20, Moves.SPARK ], - [ 24, Moves.AGILITY ], - [ 28, Moves.IRON_TAIL ], - [ 32, Moves.DISCHARGE ], - [ 36, Moves.THUNDERBOLT ], - [ 40, Moves.LIGHT_SCREEN ], - [ 44, Moves.THUNDER ], - [ 48, Moves.PIKA_PAPOW ], - ], - [Species.RAICHU]: [ - [ EVOLVE_MOVE, Moves.ZIPPY_ZAP ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.THUNDER ], - [ 1, Moves.AGILITY ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.LIGHT_SCREEN ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.SPARK ], - [ 1, Moves.IRON_TAIL ], - [ 1, Moves.FEINT ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.DISCHARGE ], - [ 1, Moves.ELECTRO_BALL ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.NUZZLE ], - [ 1, Moves.THUNDER_PUNCH ], - [ 5, Moves.THUNDERBOLT ], - [ 50, Moves.PIKA_PAPOW ], - ], - [Species.SANDSHREW]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.DEFENSE_CURL ], - [ 3, Moves.POISON_STING ], - [ 6, Moves.SAND_ATTACK ], - [ 9, Moves.ROLLOUT ], - [ 12, Moves.FURY_CUTTER ], - [ 15, Moves.RAPID_SPIN ], - [ 18, Moves.BULLDOZE ], - [ 21, Moves.SWIFT ], - [ 24, Moves.FURY_SWIPES ], - [ 27, Moves.AGILITY ], - [ 30, Moves.SLASH ], - [ 33, Moves.DIG ], - [ 36, Moves.GYRO_BALL ], - [ 39, Moves.SWORDS_DANCE ], - [ 42, Moves.SANDSTORM ], - [ 45, Moves.EARTHQUAKE ], - ], - [Species.SANDSLASH]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.POISON_STING ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.CRUSH_CLAW ], - [ 1, Moves.AGILITY ], // Previous Stage Move - [ 9, Moves.ROLLOUT ], - [ 12, Moves.FURY_CUTTER ], - [ 15, Moves.RAPID_SPIN ], - [ 18, Moves.BULLDOZE ], - [ 21, Moves.SWIFT ], - [ 26, Moves.FURY_SWIPES ], - [ 31, Moves.SAND_TOMB ], - [ 36, Moves.SLASH ], - [ 41, Moves.DIG ], - [ 46, Moves.GYRO_BALL ], - [ 51, Moves.SWORDS_DANCE ], - [ 56, Moves.SANDSTORM ], - [ 61, Moves.EARTHQUAKE ], - ], - [Species.NIDORAN_F]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.GROWL ], - [ 5, Moves.SCRATCH ], - [ 10, Moves.TAIL_WHIP ], - [ 15, Moves.FURY_SWIPES ], - [ 20, Moves.TOXIC_SPIKES ], - [ 25, Moves.DOUBLE_KICK ], - [ 30, Moves.BITE ], - [ 35, Moves.HELPING_HAND ], - [ 40, Moves.TOXIC ], - [ 45, Moves.FLATTER ], - [ 50, Moves.CRUNCH ], - [ 55, Moves.EARTH_POWER ], - ], - [Species.NIDORINA]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.POISON_STING ], - [ 1, Moves.GROWL ], - [ 15, Moves.FURY_SWIPES ], - [ 22, Moves.TOXIC_SPIKES ], - [ 29, Moves.DOUBLE_KICK ], - [ 36, Moves.BITE ], - [ 43, Moves.HELPING_HAND ], - [ 50, Moves.TOXIC ], - [ 57, Moves.FLATTER ], - [ 64, Moves.CRUNCH ], - [ 71, Moves.EARTH_POWER ], - ], - [Species.NIDOQUEEN]: [ - [ EVOLVE_MOVE, Moves.SUPERPOWER ], - [ 1, Moves.SLUDGE_WAVE ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.DOUBLE_KICK ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.POISON_STING ], - [ 1, Moves.BITE ], - [ 1, Moves.GROWL ], - [ 1, Moves.TOXIC ], - [ 1, Moves.FURY_SWIPES ], - [ 1, Moves.CRUNCH ], - [ 1, Moves.FLATTER ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.TOXIC_SPIKES ], - [ 1, Moves.EARTH_POWER ], - ], - [Species.NIDORAN_M]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.LEER ], - [ 5, Moves.PECK ], - [ 10, Moves.FOCUS_ENERGY ], - [ 15, Moves.FURY_ATTACK ], - [ 20, Moves.TOXIC_SPIKES ], - [ 25, Moves.DOUBLE_KICK ], - [ 30, Moves.HORN_ATTACK ], - [ 35, Moves.HELPING_HAND ], - [ 40, Moves.TOXIC ], - [ 45, Moves.FLATTER ], - [ 50, Moves.POISON_JAB ], - [ 55, Moves.EARTH_POWER ], - ], - [Species.NIDORINO]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 1, Moves.FOCUS_ENERGY ], - [ 15, Moves.FURY_ATTACK ], - [ 22, Moves.TOXIC_SPIKES ], - [ 29, Moves.DOUBLE_KICK ], - [ 36, Moves.HORN_ATTACK ], - [ 43, Moves.HELPING_HAND ], - [ 50, Moves.TOXIC ], - [ 57, Moves.FLATTER ], - [ 64, Moves.POISON_JAB ], - [ 71, Moves.EARTH_POWER ], - ], - [Species.NIDOKING]: [ - [ EVOLVE_MOVE, Moves.MEGAHORN ], - [ 1, Moves.SLUDGE_WAVE ], - [ 1, Moves.DOUBLE_KICK ], - [ 1, Moves.HORN_ATTACK ], - [ 1, Moves.FURY_ATTACK ], - [ 1, Moves.POISON_STING ], - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 1, Moves.TOXIC ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.FLATTER ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.TOXIC_SPIKES ], - [ 1, Moves.POISON_JAB ], - [ 1, Moves.EARTH_POWER ], - ], - [Species.CLEFAIRY]: [ - [ 1, Moves.POUND ], - [ 1, Moves.GROWL ], - [ 1, Moves.SING ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.SPLASH ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.DISARMING_VOICE ], - [ 1, Moves.SPOTLIGHT ], - [ 4, Moves.STORED_POWER ], - [ 8, Moves.ENCORE ], - [ 12, Moves.AFTER_YOU ], - [ 16, Moves.LIFE_DEW ], - [ 20, Moves.METRONOME ], - [ 24, Moves.MOONLIGHT ], - [ 28, Moves.GRAVITY ], - [ 32, Moves.METEOR_MASH ], - [ 36, Moves.FOLLOW_ME ], - [ 40, Moves.COSMIC_POWER ], - [ 44, Moves.MOONBLAST ], - [ 48, Moves.HEALING_WISH ], - ], - [Species.CLEFABLE]: [ - [ RELEARN_MOVE, Moves.POUND ], - [ RELEARN_MOVE, Moves.GROWL ], - [ RELEARN_MOVE, Moves.SING ], - [ RELEARN_MOVE, Moves.DEFENSE_CURL ], - [ RELEARN_MOVE, Moves.SPLASH ], - [ RELEARN_MOVE, Moves.SWEET_KISS ], - [ RELEARN_MOVE, Moves.CHARM ], - [ RELEARN_MOVE, Moves.ENCORE ], - [ RELEARN_MOVE, Moves.MOONLIGHT ], - [ RELEARN_MOVE, Moves.FOLLOW_ME ], - [ RELEARN_MOVE, Moves.COSMIC_POWER ], - [ RELEARN_MOVE, Moves.GRAVITY ], - [ RELEARN_MOVE, Moves.HEALING_WISH ], - [ RELEARN_MOVE, Moves.COPYCAT ], - [ RELEARN_MOVE, Moves.AFTER_YOU ], - [ RELEARN_MOVE, Moves.STORED_POWER ], - [ RELEARN_MOVE, Moves.DISARMING_VOICE ], - [ 1, Moves.METRONOME ], - [ 1, Moves.METEOR_MASH ], - [ 1, Moves.MOONBLAST ], - [ 1, Moves.LIFE_DEW ], - [ 1, Moves.SPOTLIGHT ], - ], - [Species.VULPIX]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.EMBER ], - [ 4, Moves.DISABLE ], - [ 8, Moves.QUICK_ATTACK ], - [ 12, Moves.SPITE ], - [ 16, Moves.INCINERATE ], - [ 20, Moves.CONFUSE_RAY ], - [ 24, Moves.WILL_O_WISP ], - [ 28, Moves.EXTRASENSORY ], - [ 32, Moves.FLAMETHROWER ], - [ 36, Moves.IMPRISON ], - [ 40, Moves.FIRE_SPIN ], - [ 44, Moves.SAFEGUARD ], - [ 48, Moves.INFERNO ], - [ 52, Moves.FIRE_BLAST ], - ], - [Species.NINETALES]: [ - [ RELEARN_MOVE, Moves.DISABLE ], - [ RELEARN_MOVE, Moves.EMBER ], - [ RELEARN_MOVE, Moves.FIRE_SPIN ], - [ RELEARN_MOVE, Moves.CONFUSE_RAY ], - [ RELEARN_MOVE, Moves.FIRE_BLAST ], - [ RELEARN_MOVE, Moves.SPITE ], - [ RELEARN_MOVE, Moves.SAFEGUARD ], - [ RELEARN_MOVE, Moves.WILL_O_WISP ], - [ RELEARN_MOVE, Moves.IMPRISON ], - [ RELEARN_MOVE, Moves.EXTRASENSORY ], - [ RELEARN_MOVE, Moves.NASTY_PLOT ], - [ RELEARN_MOVE, Moves.INCINERATE ], - [ RELEARN_MOVE, Moves.INFERNO ], - [ 1, Moves.FLAMETHROWER ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.QUICK_ATTACK ], - ], - [Species.JIGGLYPUFF]: [ - [ 1, Moves.POUND ], - [ 1, Moves.SING ], - [ 1, Moves.DISABLE ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.DISARMING_VOICE ], - [ 4, Moves.ECHOED_VOICE ], - [ 8, Moves.COVET ], - [ 12, Moves.STOCKPILE ], - [ 12, Moves.SPIT_UP ], - [ 12, Moves.SWALLOW ], - [ 16, Moves.ROUND ], - [ 20, Moves.REST ], - [ 24, Moves.BODY_SLAM ], - [ 28, Moves.MIMIC ], - [ 32, Moves.GYRO_BALL ], - [ 36, Moves.HYPER_VOICE ], - [ 44, Moves.DOUBLE_EDGE ], - ], - [Species.WIGGLYTUFF]: [ - [ 1, Moves.POUND ], - [ 1, Moves.BODY_SLAM ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.SING ], - [ 1, Moves.DISABLE ], - [ 1, Moves.MIMIC ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.REST ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.STOCKPILE ], - [ 1, Moves.SPIT_UP ], - [ 1, Moves.SWALLOW ], - [ 1, Moves.HYPER_VOICE ], - [ 1, Moves.COVET ], - [ 1, Moves.GYRO_BALL ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.ROUND ], - [ 1, Moves.ECHOED_VOICE ], - [ 1, Moves.DISARMING_VOICE ], - [ 5, Moves.PLAY_ROUGH ], - ], - [Species.ZUBAT]: [ - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.ABSORB ], - [ 5, Moves.ASTONISH ], - [ 10, Moves.MEAN_LOOK ], - [ 15, Moves.POISON_FANG ], - [ 20, Moves.QUICK_GUARD ], - [ 25, Moves.AIR_CUTTER ], - [ 30, Moves.BITE ], - [ 35, Moves.HAZE ], - [ 40, Moves.VENOSHOCK ], - [ 45, Moves.CONFUSE_RAY ], - [ 50, Moves.AIR_SLASH ], - [ 55, Moves.LEECH_LIFE ], - ], - [Species.GOLBAT]: [ - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.ABSORB ], - [ 1, Moves.SCREECH ], - [ 1, Moves.MEAN_LOOK ], - [ 1, Moves.ASTONISH ], - [ 15, Moves.POISON_FANG ], - [ 20, Moves.QUICK_GUARD ], - [ 27, Moves.AIR_CUTTER ], - [ 34, Moves.BITE ], - [ 41, Moves.HAZE ], - [ 48, Moves.VENOSHOCK ], - [ 55, Moves.CONFUSE_RAY ], - [ 62, Moves.AIR_SLASH ], - [ 69, Moves.LEECH_LIFE ], - ], - [Species.ODDISH]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.GROWTH ], - [ 4, Moves.ACID ], - [ 8, Moves.SWEET_SCENT ], - [ 12, Moves.MEGA_DRAIN ], - [ 14, Moves.POISON_POWDER ], - [ 16, Moves.STUN_SPORE ], - [ 18, Moves.SLEEP_POWDER ], - [ 20, Moves.GIGA_DRAIN ], - [ 24, Moves.TOXIC ], - [ 28, Moves.MOONBLAST ], - [ 32, Moves.GRASSY_TERRAIN ], - [ 36, Moves.MOONLIGHT ], - [ 40, Moves.PETAL_DANCE ], - ], - [Species.GLOOM]: [ - [ 1, Moves.ACID ], - [ 1, Moves.ABSORB ], - [ 1, Moves.GROWTH ], - [ 1, Moves.SWEET_SCENT ], - [ 12, Moves.MEGA_DRAIN ], - [ 14, Moves.POISON_POWDER ], - [ 16, Moves.STUN_SPORE ], - [ 18, Moves.SLEEP_POWDER ], - [ 20, Moves.GIGA_DRAIN ], - [ 26, Moves.TOXIC ], - [ 32, Moves.MOONBLAST ], - [ 38, Moves.GRASSY_TERRAIN ], - [ 44, Moves.MOONLIGHT ], - [ 50, Moves.PETAL_DANCE ], - ], - [Species.VILEPLUME]: [ - [ EVOLVE_MOVE, Moves.PETAL_BLIZZARD ], - [ 1, Moves.ACID ], - [ 1, Moves.ABSORB ], - [ 1, Moves.MEGA_DRAIN ], - [ 1, Moves.GROWTH ], - [ 1, Moves.POISON_POWDER ], - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.SLEEP_POWDER ], - [ 1, Moves.PETAL_DANCE ], - [ 1, Moves.TOXIC ], - [ 1, Moves.GIGA_DRAIN ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.MOONLIGHT ], - [ 1, Moves.AROMATHERAPY ], - [ 1, Moves.GRASSY_TERRAIN ], - [ 1, Moves.MOONBLAST ], - ], - [Species.PARAS]: [ - [ 1, Moves.SCRATCH ], - [ 6, Moves.POISON_POWDER ], - [ 6, Moves.STUN_SPORE ], - [ 11, Moves.ABSORB ], - [ 17, Moves.FURY_CUTTER ], - [ 22, Moves.SPORE ], - [ 27, Moves.SLASH ], - [ 33, Moves.GROWTH ], - [ 38, Moves.GIGA_DRAIN ], - [ 43, Moves.AROMATHERAPY ], - [ 49, Moves.RAGE_POWDER ], - [ 54, Moves.X_SCISSOR ], - ], - [Species.PARASECT]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.ABSORB ], - [ 1, Moves.POISON_POWDER ], - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.CROSS_POISON ], - [ 6, Moves.POISON_POWDER ], - [ 6, Moves.STUN_SPORE ], - [ 11, Moves.ABSORB ], - [ 17, Moves.FURY_CUTTER ], - [ 22, Moves.SPORE ], - [ 29, Moves.SLASH ], - [ 37, Moves.GROWTH ], - [ 44, Moves.GIGA_DRAIN ], - [ 51, Moves.AROMATHERAPY ], - [ 59, Moves.RAGE_POWDER ], - [ 66, Moves.X_SCISSOR ], - ], - [Species.VENONAT]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.DISABLE ], - [ 5, Moves.SUPERSONIC ], - [ 11, Moves.CONFUSION ], - [ 13, Moves.POISON_POWDER ], - [ 17, Moves.PSYBEAM ], - [ 23, Moves.STUN_SPORE ], - [ 25, Moves.BUG_BUZZ ], - [ 29, Moves.SLEEP_POWDER ], - [ 35, Moves.LEECH_LIFE ], - [ 37, Moves.ZEN_HEADBUTT ], - [ 41, Moves.POISON_FANG ], - [ 47, Moves.PSYCHIC ], - ], - [Species.VENOMOTH]: [ - [ EVOLVE_MOVE, Moves.AIR_SLASH ], - [ 1, Moves.TACKLE ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.DISABLE ], - [ 1, Moves.QUIVER_DANCE ], - [ 1, Moves.SILVER_WIND ], - [ 11, Moves.CONFUSION ], - [ 13, Moves.POISON_POWDER ], - [ 17, Moves.PSYBEAM ], - [ 23, Moves.STUN_SPORE ], - [ 25, Moves.BUG_BUZZ ], - [ 29, Moves.SLEEP_POWDER ], - [ 37, Moves.LEECH_LIFE ], - [ 41, Moves.ZEN_HEADBUTT ], - [ 47, Moves.POISON_FANG ], - [ 55, Moves.PSYCHIC ], - ], - [Species.DIGLETT]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.SAND_ATTACK ], - [ 4, Moves.GROWL ], - [ 8, Moves.ASTONISH ], - [ 12, Moves.MUD_SLAP ], - [ 16, Moves.BULLDOZE ], - [ 20, Moves.SUCKER_PUNCH ], - [ 24, Moves.SLASH ], - [ 28, Moves.SANDSTORM ], - [ 32, Moves.DIG ], - [ 36, Moves.EARTH_POWER ], - [ 40, Moves.EARTHQUAKE ], - [ 44, Moves.FISSURE ], - ], - [Species.DUGTRIO]: [ - [ EVOLVE_MOVE, Moves.SAND_TOMB ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.GROWL ], - [ 1, Moves.TRI_ATTACK ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.NIGHT_SLASH ], - [ 1, Moves.ROTOTILLER ], - [ 12, Moves.MUD_SLAP ], - [ 16, Moves.BULLDOZE ], - [ 20, Moves.SUCKER_PUNCH ], - [ 24, Moves.SLASH ], - [ 30, Moves.SANDSTORM ], - [ 36, Moves.DIG ], - [ 42, Moves.EARTH_POWER ], - [ 48, Moves.EARTHQUAKE ], - [ 54, Moves.FISSURE ], - ], - [Species.MEOWTH]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.FAKE_OUT ], - [ 4, Moves.FEINT ], - [ 8, Moves.SCRATCH ], - [ 12, Moves.PAY_DAY ], - [ 16, Moves.BITE ], - [ 20, Moves.TAUNT ], - [ 24, Moves.ASSURANCE ], - [ 29, Moves.FURY_SWIPES ], - [ 32, Moves.SCREECH ], - [ 36, Moves.SLASH ], - [ 40, Moves.NASTY_PLOT ], - [ 44, Moves.PLAY_ROUGH ], - ], - [Species.PERSIAN]: [ - [ EVOLVE_MOVE, Moves.POWER_GEM ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.FEINT ], - [ 1, Moves.SWITCHEROO ], - [ 12, Moves.PAY_DAY ], - [ 16, Moves.BITE ], - [ 20, Moves.TAUNT ], - [ 24, Moves.ASSURANCE ], - [ 31, Moves.FURY_SWIPES ], - [ 36, Moves.SCREECH ], - [ 42, Moves.SLASH ], - [ 48, Moves.NASTY_PLOT ], - [ 54, Moves.PLAY_ROUGH ], - ], - [Species.PSYDUCK]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_SPORT ], - [ 3, Moves.WATER_GUN ], - [ 6, Moves.CONFUSION ], - [ 9, Moves.FURY_SWIPES ], - [ 12, Moves.WATER_PULSE ], - [ 15, Moves.DISABLE ], - [ 18, Moves.ZEN_HEADBUTT ], - [ 21, Moves.SCREECH ], - [ 24, Moves.AQUA_TAIL ], - [ 27, Moves.SOAK ], - [ 30, Moves.PSYCH_UP ], - [ 34, Moves.AMNESIA ], - [ 39, Moves.WONDER_ROOM ], - ], - [Species.GOLDUCK]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.AQUA_JET ], - [ 1, Moves.WATER_SPORT ], - [ 1, Moves.ME_FIRST ], - [ 9, Moves.FURY_SWIPES ], - [ 12, Moves.WATER_PULSE ], - [ 15, Moves.DISABLE ], - [ 18, Moves.ZEN_HEADBUTT ], - [ 21, Moves.SCREECH ], - [ 24, Moves.AQUA_TAIL ], - [ 27, Moves.SOAK ], - [ 30, Moves.PSYCH_UP ], - [ 36, Moves.AMNESIA ], - [ 40, Moves.HYDRO_PUMP ], - [ 45, Moves.WONDER_ROOM ], - ], - [Species.MANKEY]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.COVET ], - [ 5, Moves.FURY_SWIPES ], - [ 8, Moves.LOW_KICK ], - [ 12, Moves.SEISMIC_TOSS ], - [ 17, Moves.SWAGGER ], - [ 22, Moves.CROSS_CHOP ], - [ 26, Moves.ASSURANCE ], - [ 29, Moves.THRASH ], - [ 33, Moves.CLOSE_COMBAT ], - [ 36, Moves.SCREECH ], - [ 40, Moves.STOMPING_TANTRUM ], - [ 44, Moves.OUTRAGE ], - [ 48, Moves.FINAL_GAMBIT ], - ], - [Species.PRIMEAPE]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.COVET ], // Previous Stage Move - [ 1, Moves.FLING ], - [ 5, Moves.FURY_SWIPES ], - [ 8, Moves.LOW_KICK ], - [ 15, Moves.SEISMIC_TOSS ], - [ 17, Moves.SWAGGER ], - [ 22, Moves.CROSS_CHOP ], - [ 26, Moves.ASSURANCE ], - [ 30, Moves.THRASH ], - [ 35, Moves.RAGE_FIST ], - [ 39, Moves.CLOSE_COMBAT ], - [ 44, Moves.SCREECH ], - [ 48, Moves.STOMPING_TANTRUM ], - [ 53, Moves.OUTRAGE ], - [ 57, Moves.FINAL_GAMBIT ], - ], - [Species.GROWLITHE]: [ - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 4, Moves.HOWL ], - [ 8, Moves.BITE ], - [ 12, Moves.FLAME_WHEEL ], - [ 16, Moves.HELPING_HAND ], - [ 20, Moves.AGILITY ], - [ 24, Moves.FIRE_FANG ], - [ 28, Moves.RETALIATE ], - [ 32, Moves.CRUNCH ], - [ 36, Moves.TAKE_DOWN ], - [ 40, Moves.FLAMETHROWER ], - [ 44, Moves.ROAR ], - [ 48, Moves.PLAY_ROUGH ], - [ 52, Moves.REVERSAL ], - [ 56, Moves.FLARE_BLITZ ], - ], - [Species.ARCANINE]: [ - [ EVOLVE_MOVE, Moves.EXTREME_SPEED ], - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.LEER ], - [ 1, Moves.BITE ], - [ 1, Moves.ROAR ], - [ 1, Moves.EMBER ], - [ 1, Moves.AGILITY ], - [ 1, Moves.FLAME_WHEEL ], - [ 1, Moves.REVERSAL ], - [ 1, Moves.CRUNCH ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.ODOR_SLEUTH ], - [ 1, Moves.HOWL ], - [ 1, Moves.FLARE_BLITZ ], - [ 1, Moves.FIRE_FANG ], - [ 1, Moves.RETALIATE ], - [ 1, Moves.PLAY_ROUGH ], - [ 5, Moves.FLAMETHROWER ], - ], - [Species.POLIWAG]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.HYPNOSIS ], - [ 1, Moves.WATER_SPORT ], - [ 6, Moves.POUND ], - [ 12, Moves.MUD_SHOT ], - [ 18, Moves.BUBBLE_BEAM ], - [ 24, Moves.RAIN_DANCE ], - [ 30, Moves.BODY_SLAM ], - [ 36, Moves.EARTH_POWER ], - [ 42, Moves.HYDRO_PUMP ], - [ 48, Moves.BELLY_DRUM ], - [ 54, Moves.DOUBLE_EDGE ], - ], - [Species.POLIWHIRL]: [ - [ 1, Moves.POUND ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.HYPNOSIS ], - [ 1, Moves.WATER_SPORT ], - [ 1, Moves.MUD_SHOT ], - [ 18, Moves.BUBBLE_BEAM ], - [ 24, Moves.RAIN_DANCE ], - [ 32, Moves.BODY_SLAM ], - [ 40, Moves.EARTH_POWER ], - [ 48, Moves.HYDRO_PUMP ], - [ 56, Moves.BELLY_DRUM ], - [ 66, Moves.DOUBLE_EDGE ], - ], - [Species.POLIWRATH]: [ - [ EVOLVE_MOVE, Moves.DYNAMIC_PUNCH ], - [ RELEARN_MOVE, Moves.POUND ], - [ RELEARN_MOVE, Moves.DOUBLE_EDGE ], - [ RELEARN_MOVE, Moves.WATER_GUN ], - [ RELEARN_MOVE, Moves.HYDRO_PUMP ], - [ RELEARN_MOVE, Moves.BELLY_DRUM ], - [ RELEARN_MOVE, Moves.RAIN_DANCE ], - [ RELEARN_MOVE, Moves.MUD_SHOT ], - [ RELEARN_MOVE, Moves.EARTH_POWER ], - [ RELEARN_MOVE, Moves.CIRCLE_THROW ], - [ 1, Moves.BUBBLE_BEAM ], - [ 1, Moves.BODY_SLAM ], - [ 1, Moves.HYPNOSIS ], - [ 1, Moves.WATER_SPORT ], - ], - [Species.ABRA]: [ - [ 1, Moves.TELEPORT ], - [ 1, Moves.CONFUSION ], // Custom - ], - [Species.KADABRA]: [ - [ EVOLVE_MOVE, Moves.PSYBEAM ], // LGPE - [ 1, Moves.CONFUSION ], // Previous Stage Move, Custom - [ 1, Moves.DISABLE ], - [ 1, Moves.TELEPORT ], - [ 1, Moves.KINESIS ], - [ 10, Moves.REFLECT ], - [ 15, Moves.ALLY_SWITCH ], - [ 20, Moves.PSYCHO_CUT ], - [ 25, Moves.RECOVER ], - [ 30, Moves.PSYSHOCK ], - [ 35, Moves.PSYCHIC ], - [ 40, Moves.ROLE_PLAY ], - [ 45, Moves.FUTURE_SIGHT ], - [ 50, Moves.CALM_MIND ], - ], - [Species.ALAKAZAM]: [ - [ 1, Moves.DISABLE ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.TELEPORT ], - [ 1, Moves.KINESIS ], - [ 5, Moves.PSYBEAM ], - [ 10, Moves.REFLECT ], - [ 15, Moves.ALLY_SWITCH ], - [ 20, Moves.PSYCHO_CUT ], - [ 25, Moves.RECOVER ], - [ 30, Moves.PSYSHOCK ], - [ 35, Moves.PSYCHIC ], - [ 40, Moves.ROLE_PLAY ], - [ 45, Moves.FUTURE_SIGHT ], - [ 50, Moves.CALM_MIND ], - ], - [Species.MACHOP]: [ - [ 1, Moves.LEER ], - [ 1, Moves.LOW_KICK ], - [ 4, Moves.FOCUS_ENERGY ], - [ 8, Moves.REVENGE ], - [ 12, Moves.LOW_SWEEP ], - [ 16, Moves.KNOCK_OFF ], - [ 20, Moves.SCARY_FACE ], - [ 24, Moves.VITAL_THROW ], - [ 29, Moves.STRENGTH ], - [ 32, Moves.DUAL_CHOP ], - [ 36, Moves.BULK_UP ], - [ 40, Moves.SEISMIC_TOSS ], - [ 44, Moves.DYNAMIC_PUNCH ], - [ 48, Moves.CROSS_CHOP ], - [ 52, Moves.DOUBLE_EDGE ], - ], - [Species.MACHOKE]: [ - [ 1, Moves.LEER ], - [ 1, Moves.LOW_KICK ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.REVENGE ], - [ 1, Moves.KARATE_CHOP ], - [ 12, Moves.LOW_SWEEP ], - [ 16, Moves.KNOCK_OFF ], - [ 20, Moves.SCARY_FACE ], - [ 24, Moves.VITAL_THROW ], - [ 31, Moves.STRENGTH ], - [ 36, Moves.DUAL_CHOP ], - [ 42, Moves.BULK_UP ], - [ 48, Moves.SEISMIC_TOSS ], - [ 54, Moves.DYNAMIC_PUNCH ], - [ 60, Moves.CROSS_CHOP ], - [ 66, Moves.DOUBLE_EDGE ], - ], - [Species.MACHAMP]: [ - [ 1, Moves.LEER ], - [ 1, Moves.LOW_KICK ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.REVENGE ], - [ 1, Moves.WIDE_GUARD ], - [ 1, Moves.KARATE_CHOP ], - [ 12, Moves.LOW_SWEEP ], - [ 16, Moves.KNOCK_OFF ], - [ 20, Moves.SCARY_FACE ], - [ 24, Moves.VITAL_THROW ], - [ 31, Moves.STRENGTH ], - [ 36, Moves.DUAL_CHOP ], - [ 42, Moves.BULK_UP ], - [ 48, Moves.SEISMIC_TOSS ], - [ 54, Moves.DYNAMIC_PUNCH ], - [ 60, Moves.CROSS_CHOP ], - [ 66, Moves.DOUBLE_EDGE ], - ], - [Species.BELLSPROUT]: [ - [ 1, Moves.VINE_WHIP ], - [ 7, Moves.GROWTH ], - [ 11, Moves.WRAP ], - [ 13, Moves.SLEEP_POWDER ], - [ 15, Moves.POISON_POWDER ], - [ 17, Moves.STUN_SPORE ], - [ 23, Moves.ACID ], - [ 27, Moves.KNOCK_OFF ], - [ 29, Moves.SWEET_SCENT ], - [ 35, Moves.GASTRO_ACID ], - [ 39, Moves.RAZOR_LEAF ], - [ 41, Moves.POISON_JAB ], - [ 47, Moves.SLAM ], - [ 52, Moves.POWER_WHIP ], - ], - [Species.WEEPINBELL]: [ - [ 1, Moves.VINE_WHIP ], - [ 1, Moves.WRAP ], - [ 1, Moves.GROWTH ], - [ 13, Moves.SLEEP_POWDER ], - [ 15, Moves.POISON_POWDER ], - [ 17, Moves.STUN_SPORE ], - [ 24, Moves.ACID ], - [ 29, Moves.KNOCK_OFF ], - [ 32, Moves.SWEET_SCENT ], - [ 39, Moves.GASTRO_ACID ], - [ 44, Moves.RAZOR_LEAF ], - [ 47, Moves.POISON_JAB ], - [ 54, Moves.SLAM ], - [ 58, Moves.POWER_WHIP ], - ], - [Species.VICTREEBEL]: [ - [ EVOLVE_MOVE, Moves.LEAF_STORM ], - [ RELEARN_MOVE, Moves.STOCKPILE ], - [ RELEARN_MOVE, Moves.SWALLOW ], - [ RELEARN_MOVE, Moves.SPIT_UP ], - [ RELEARN_MOVE, Moves.WRAP ], // Previous Stage Move - [ RELEARN_MOVE, Moves.GROWTH ], // Previous Stage Move - [ RELEARN_MOVE, Moves.ACID ], // Previous Stage Move - [ RELEARN_MOVE, Moves.KNOCK_OFF ], // Previous Stage Move - [ RELEARN_MOVE, Moves.GASTRO_ACID ], - [ RELEARN_MOVE, Moves.POISON_JAB ], // Previous Stage Move - [ RELEARN_MOVE, Moves.SLAM ], // Previous Stage Move - [ RELEARN_MOVE, Moves.POWER_WHIP ], - [ 1, Moves.VINE_WHIP ], - [ 1, Moves.SLEEP_POWDER ], - [ 1, Moves.POISON_POWDER ], // Previous Stage Move - [ 1, Moves.STUN_SPORE ], // Previous Stage Move - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.RAZOR_LEAF ], - [ 44, Moves.LEAF_BLADE ], - ], - [Species.TENTACOOL]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.WATER_GUN ], - [ 4, Moves.ACID ], - [ 8, Moves.WRAP ], - [ 12, Moves.SUPERSONIC ], - [ 16, Moves.WATER_PULSE ], - [ 20, Moves.SCREECH ], - [ 24, Moves.BUBBLE_BEAM ], - [ 28, Moves.HEX ], - [ 32, Moves.ACID_ARMOR ], - [ 36, Moves.POISON_JAB ], - [ 40, Moves.SURF ], - [ 44, Moves.SLUDGE_WAVE ], - [ 48, Moves.HYDRO_PUMP ], - ], - [Species.TENTACRUEL]: [ - [ 1, Moves.WRAP ], - [ 1, Moves.POISON_STING ], - [ 1, Moves.ACID ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.REFLECT_TYPE ], - [ 1, Moves.WRING_OUT ], - [ 12, Moves.SUPERSONIC ], - [ 16, Moves.WATER_PULSE ], - [ 20, Moves.SCREECH ], - [ 24, Moves.BUBBLE_BEAM ], - [ 28, Moves.HEX ], - [ 34, Moves.ACID_ARMOR ], - [ 40, Moves.POISON_JAB ], - [ 46, Moves.SURF ], - [ 52, Moves.SLUDGE_WAVE ], - [ 58, Moves.HYDRO_PUMP ], - ], - [Species.GEODUDE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.DEFENSE_CURL ], - [ 6, Moves.ROCK_POLISH ], - [ 10, Moves.ROLLOUT ], - [ 12, Moves.BULLDOZE ], - [ 16, Moves.ROCK_THROW ], - [ 18, Moves.SMACK_DOWN ], - [ 24, Moves.SELF_DESTRUCT ], - [ 28, Moves.STEALTH_ROCK ], - [ 30, Moves.ROCK_BLAST ], - [ 34, Moves.EARTHQUAKE ], - [ 36, Moves.EXPLOSION ], - [ 40, Moves.DOUBLE_EDGE ], - [ 42, Moves.STONE_EDGE ], - ], - [Species.GRAVELER]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.ROCK_POLISH ], - [ 10, Moves.ROLLOUT ], - [ 12, Moves.BULLDOZE ], - [ 16, Moves.ROCK_THROW ], - [ 18, Moves.SMACK_DOWN ], - [ 24, Moves.SELF_DESTRUCT ], - [ 30, Moves.STEALTH_ROCK ], - [ 34, Moves.ROCK_BLAST ], - [ 40, Moves.EARTHQUAKE ], - [ 44, Moves.EXPLOSION ], - [ 50, Moves.DOUBLE_EDGE ], - [ 54, Moves.STONE_EDGE ], - ], - [Species.GOLEM]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.ROCK_POLISH ], - [ 1, Moves.ROLLOUT ], // Previous Stage Move - [ 1, Moves.HEAVY_SLAM ], - [ 16, Moves.ROCK_THROW ], - [ 18, Moves.SMACK_DOWN ], - [ 22, Moves.BULLDOZE ], - [ 24, Moves.SELF_DESTRUCT ], - [ 30, Moves.STEALTH_ROCK ], - [ 34, Moves.ROCK_BLAST ], - [ 40, Moves.EARTHQUAKE ], - [ 44, Moves.EXPLOSION ], - [ 50, Moves.DOUBLE_EDGE ], - [ 54, Moves.STONE_EDGE ], - ], - [Species.PONYTA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 5, Moves.TAIL_WHIP ], - [ 10, Moves.EMBER ], - [ 15, Moves.FLAME_CHARGE ], - [ 20, Moves.AGILITY ], - [ 25, Moves.FLAME_WHEEL ], - [ 30, Moves.STOMP ], - [ 35, Moves.FIRE_SPIN ], - [ 41, Moves.TAKE_DOWN ], - [ 45, Moves.INFERNO ], - [ 50, Moves.FIRE_BLAST ], - [ 55, Moves.FLARE_BLITZ ], - ], - [Species.RAPIDASH]: [ - [ EVOLVE_MOVE, Moves.SMART_STRIKE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.EMBER ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.MEGAHORN ], - [ 1, Moves.POISON_JAB ], - [ 15, Moves.FLAME_CHARGE ], - [ 20, Moves.AGILITY ], - [ 25, Moves.FLAME_WHEEL ], - [ 30, Moves.STOMP ], - [ 35, Moves.FIRE_SPIN ], - [ 43, Moves.TAKE_DOWN ], - [ 49, Moves.INFERNO ], - [ 56, Moves.FIRE_BLAST ], - [ 63, Moves.FLARE_BLITZ ], - ], - [Species.SLOWPOKE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.CURSE ], - [ 3, Moves.GROWL ], - [ 6, Moves.WATER_GUN ], - [ 9, Moves.YAWN ], - [ 12, Moves.CONFUSION ], - [ 15, Moves.DISABLE ], - [ 18, Moves.WATER_PULSE ], - [ 21, Moves.HEADBUTT ], - [ 24, Moves.ZEN_HEADBUTT ], - [ 27, Moves.AMNESIA ], - [ 30, Moves.SURF ], - [ 33, Moves.SLACK_OFF ], - [ 36, Moves.PSYCHIC ], - [ 39, Moves.PSYCH_UP ], - [ 42, Moves.RAIN_DANCE ], - [ 45, Moves.HEAL_PULSE ], - ], - [Species.SLOWBRO]: [ - [ RELEARN_MOVE, Moves.FUTURE_SIGHT ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.CURSE ], - [ 9, Moves.YAWN ], - [ 12, Moves.CONFUSION ], - [ 15, Moves.DISABLE ], - [ 18, Moves.WATER_PULSE ], - [ 21, Moves.HEADBUTT ], - [ 24, Moves.ZEN_HEADBUTT ], - [ 27, Moves.AMNESIA ], - [ 30, Moves.SURF ], - [ 33, Moves.SLACK_OFF ], - [ 36, Moves.PSYCHIC ], - [ 41, Moves.PSYCH_UP ], - [ 46, Moves.RAIN_DANCE ], - [ 51, Moves.HEAL_PULSE ], - ], - [Species.MAGNEMITE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.THUNDER_SHOCK ], - [ 4, Moves.SUPERSONIC ], - [ 8, Moves.THUNDER_WAVE ], - [ 12, Moves.ELECTRO_BALL ], - [ 16, Moves.GYRO_BALL ], - [ 20, Moves.SPARK ], - [ 24, Moves.SCREECH ], - [ 28, Moves.MAGNET_RISE ], - [ 32, Moves.FLASH_CANNON ], - [ 36, Moves.DISCHARGE ], - [ 40, Moves.METAL_SOUND ], - [ 44, Moves.LIGHT_SCREEN ], - [ 48, Moves.LOCK_ON ], - [ 52, Moves.ZAP_CANNON ], - ], - [Species.MAGNETON]: [ - [ EVOLVE_MOVE, Moves.TRI_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.ELECTRIC_TERRAIN ], - [ 12, Moves.ELECTRO_BALL ], - [ 16, Moves.GYRO_BALL ], - [ 20, Moves.SPARK ], - [ 24, Moves.SCREECH ], - [ 28, Moves.MAGNET_RISE ], - [ 34, Moves.FLASH_CANNON ], - [ 40, Moves.DISCHARGE ], - [ 46, Moves.METAL_SOUND ], - [ 52, Moves.LIGHT_SCREEN ], - [ 58, Moves.LOCK_ON ], - [ 64, Moves.ZAP_CANNON ], - ], - [Species.FARFETCHD]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.PECK ], - [ 5, Moves.LEER ], - [ 10, Moves.FURY_CUTTER ], - [ 15, Moves.CUT ], - [ 20, Moves.AERIAL_ACE ], - [ 25, Moves.AIR_CUTTER ], - [ 30, Moves.KNOCK_OFF ], - [ 35, Moves.FALSE_SWIPE ], - [ 40, Moves.SLASH ], - [ 45, Moves.SWORDS_DANCE ], - [ 50, Moves.AIR_SLASH ], - [ 55, Moves.LEAF_BLADE ], - [ 60, Moves.AGILITY ], - [ 65, Moves.BRAVE_BIRD ], - ], - [Species.DODUO]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.PECK ], - [ 5, Moves.QUICK_ATTACK ], - [ 9, Moves.FURY_ATTACK ], - [ 14, Moves.PLUCK ], - [ 19, Moves.DOUBLE_HIT ], - [ 23, Moves.AGILITY ], - [ 27, Moves.UPROAR ], - [ 30, Moves.ACUPRESSURE ], - [ 33, Moves.SWORDS_DANCE ], - [ 36, Moves.DRILL_PECK ], - [ 39, Moves.ENDEAVOR ], - [ 43, Moves.THRASH ], - ], - [Species.DODRIO]: [ - [ EVOLVE_MOVE, Moves.TRI_ATTACK ], - [ 1, Moves.TRI_ATTACK ], - [ 1, Moves.GROWL ], - [ 1, Moves.PECK ], - [ 5, Moves.QUICK_ATTACK ], - [ 12, Moves.FURY_ATTACK ], - [ 15, Moves.PLUCK ], - [ 19, Moves.DOUBLE_HIT ], - [ 23, Moves.AGILITY ], - [ 26, Moves.UPROAR ], - [ 30, Moves.ACUPRESSURE ], - [ 34, Moves.SWORDS_DANCE ], - [ 38, Moves.DRILL_PECK ], - [ 43, Moves.ENDEAVOR ], - [ 50, Moves.THRASH ], - ], - [Species.SEEL]: [ - [ 1, Moves.HEADBUTT ], - [ 3, Moves.GROWL ], - [ 7, Moves.CHARM ], - [ 11, Moves.ICY_WIND ], - [ 13, Moves.ENCORE ], - [ 17, Moves.ICE_SHARD ], - [ 21, Moves.REST ], - [ 23, Moves.AQUA_RING ], - [ 27, Moves.AURORA_BEAM ], - [ 31, Moves.AQUA_JET ], - [ 33, Moves.BRINE ], - [ 37, Moves.TAKE_DOWN ], - [ 41, Moves.DIVE ], - [ 43, Moves.AQUA_TAIL ], - [ 47, Moves.ICE_BEAM ], - [ 51, Moves.SAFEGUARD ], - [ 53, Moves.SNOWSCAPE ], - ], - [Species.DEWGONG]: [ - [ EVOLVE_MOVE, Moves.SHEER_COLD ], - [ 1, Moves.HEADBUTT ], - [ 1, Moves.GROWL ], - [ 1, Moves.ICY_WIND ], - [ 1, Moves.CHARM ], - [ 1, Moves.SIGNAL_BEAM ], - [ 13, Moves.ENCORE ], - [ 17, Moves.ICE_SHARD ], - [ 21, Moves.REST ], - [ 23, Moves.AQUA_RING ], - [ 27, Moves.AURORA_BEAM ], - [ 31, Moves.AQUA_JET ], - [ 33, Moves.BRINE ], - [ 39, Moves.TAKE_DOWN ], - [ 45, Moves.DIVE ], - [ 49, Moves.AQUA_TAIL ], - [ 55, Moves.ICE_BEAM ], - [ 61, Moves.SAFEGUARD ], - [ 65, Moves.SNOWSCAPE ], - ], - [Species.GRIMER]: [ - [ 1, Moves.POUND ], - [ 1, Moves.POISON_GAS ], - [ 4, Moves.HARDEN ], - [ 7, Moves.MUD_SLAP ], - [ 12, Moves.DISABLE ], - [ 15, Moves.SLUDGE ], - [ 18, Moves.MUD_SHOT ], - [ 21, Moves.MINIMIZE ], - [ 26, Moves.TOXIC ], - [ 29, Moves.SLUDGE_BOMB ], - [ 32, Moves.SLUDGE_WAVE ], - [ 37, Moves.SCREECH ], - [ 40, Moves.GUNK_SHOT ], - [ 43, Moves.ACID_ARMOR ], - [ 46, Moves.BELCH ], - [ 48, Moves.MEMENTO ], - ], - [Species.MUK]: [ - [ 1, Moves.POUND ], - [ 1, Moves.HARDEN ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.MUD_SLAP ], - [ 12, Moves.DISABLE ], - [ 15, Moves.SLUDGE ], - [ 18, Moves.MUD_SHOT ], - [ 21, Moves.MINIMIZE ], - [ 26, Moves.TOXIC ], - [ 29, Moves.SLUDGE_BOMB ], - [ 32, Moves.SLUDGE_WAVE ], - [ 37, Moves.SCREECH ], - [ 40, Moves.GUNK_SHOT ], - [ 46, Moves.ACID_ARMOR ], - [ 52, Moves.BELCH ], - [ 57, Moves.MEMENTO ], - ], - [Species.SHELLDER]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.WATER_GUN ], - [ 4, Moves.WITHDRAW ], - [ 8, Moves.ICE_SHARD ], - [ 12, Moves.LEER ], - [ 16, Moves.WHIRLPOOL ], - [ 20, Moves.SUPERSONIC ], - [ 24, Moves.AURORA_BEAM ], - [ 28, Moves.PROTECT ], - [ 32, Moves.RAZOR_SHELL ], - [ 36, Moves.IRON_DEFENSE ], - [ 40, Moves.ICE_BEAM ], - [ 44, Moves.SHELL_SMASH ], - [ 48, Moves.HYDRO_PUMP ], - ], - [Species.CLOYSTER]: [ - [ EVOLVE_MOVE, Moves.ICICLE_SPEAR ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.HYDRO_PUMP ], - [ 1, Moves.ICE_BEAM ], - [ 1, Moves.AURORA_BEAM ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.PROTECT ], - [ 1, Moves.SPIKES ], - [ 1, Moves.WHIRLPOOL ], - [ 1, Moves.IRON_DEFENSE ], - [ 1, Moves.TOXIC_SPIKES ], - [ 1, Moves.ICE_SHARD ], - [ 1, Moves.SHELL_SMASH ], - [ 1, Moves.ICICLE_CRASH ], - [ 5, Moves.RAZOR_SHELL ], - ], - [Species.GASTLY]: [ - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.LICK ], - [ 1, Moves.ACID ], // Custom - [ 4, Moves.HYPNOSIS ], - [ 8, Moves.MEAN_LOOK ], - [ 12, Moves.PAYBACK ], - [ 16, Moves.SPITE ], - [ 20, Moves.CURSE ], - [ 24, Moves.HEX ], - [ 28, Moves.NIGHT_SHADE ], - [ 32, Moves.SUCKER_PUNCH ], - [ 36, Moves.DARK_PULSE ], - [ 40, Moves.SHADOW_BALL ], - [ 44, Moves.DESTINY_BOND ], - [ 48, Moves.DREAM_EATER ], - ], - [Species.HAUNTER]: [ - [ EVOLVE_MOVE, Moves.SHADOW_PUNCH ], - [ 1, Moves.HYPNOSIS ], - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.LICK ], - [ 1, Moves.ACID ], // Previous Stage Move, Custom - [ 1, Moves.MEAN_LOOK ], - [ 12, Moves.PAYBACK ], - [ 16, Moves.SPITE ], - [ 20, Moves.CURSE ], - [ 24, Moves.HEX ], - [ 30, Moves.NIGHT_SHADE ], - [ 36, Moves.SUCKER_PUNCH ], - [ 42, Moves.DARK_PULSE ], - [ 48, Moves.SHADOW_BALL ], - [ 54, Moves.DESTINY_BOND ], - [ 60, Moves.DREAM_EATER ], - ], - [Species.GENGAR]: [ - [ 1, Moves.HYPNOSIS ], - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.LICK ], - [ 1, Moves.ACID ], // Previous Stage Move, Custom - [ 1, Moves.PERISH_SONG ], - [ 1, Moves.MEAN_LOOK ], - [ 1, Moves.SHADOW_PUNCH ], - [ 1, Moves.REFLECT_TYPE ], - [ 12, Moves.PAYBACK ], - [ 16, Moves.SPITE ], - [ 20, Moves.CURSE ], - [ 24, Moves.HEX ], - [ 30, Moves.NIGHT_SHADE ], - [ 36, Moves.SUCKER_PUNCH ], - [ 42, Moves.DARK_PULSE ], - [ 48, Moves.SHADOW_BALL ], - [ 54, Moves.DESTINY_BOND ], - [ 60, Moves.DREAM_EATER ], - ], - [Species.ONIX]: [ - [ 1, Moves.BIND ], - [ 1, Moves.TACKLE ], - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.HARDEN ], - [ 1, Moves.MUD_SPORT ], - [ 4, Moves.SMACK_DOWN ], - [ 8, Moves.ROCK_POLISH ], - [ 12, Moves.DRAGON_BREATH ], - [ 16, Moves.CURSE ], - [ 20, Moves.ROCK_SLIDE ], - [ 22, Moves.GYRO_BALL ], // Custom, from USUM - [ 24, Moves.SCREECH ], - [ 28, Moves.SAND_TOMB ], - [ 32, Moves.STEALTH_ROCK ], - [ 36, Moves.SLAM ], - [ 40, Moves.SANDSTORM ], - [ 44, Moves.DIG ], - [ 48, Moves.IRON_TAIL ], - [ 52, Moves.STONE_EDGE ], - [ 56, Moves.DOUBLE_EDGE ], - ], - [Species.DROWZEE]: [ - [ 1, Moves.POUND ], - [ 1, Moves.HYPNOSIS ], - [ 5, Moves.DISABLE ], - [ 9, Moves.CONFUSION ], - [ 13, Moves.HEADBUTT ], - [ 17, Moves.POISON_GAS ], - [ 21, Moves.PSYBEAM ], - [ 25, Moves.PSYCH_UP ], - [ 29, Moves.ZEN_HEADBUTT ], - [ 33, Moves.SWAGGER ], - [ 37, Moves.PSYCHIC ], - [ 41, Moves.NASTY_PLOT ], - [ 45, Moves.PSYSHOCK ], - [ 49, Moves.FUTURE_SIGHT ], - ], - [Species.HYPNO]: [ - [ 1, Moves.POUND ], - [ 1, Moves.DISABLE ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.HYPNOSIS ], - [ 1, Moves.SWITCHEROO ], - [ 1, Moves.NIGHTMARE ], - [ 13, Moves.HEADBUTT ], - [ 17, Moves.POISON_GAS ], - [ 21, Moves.PSYBEAM ], - [ 25, Moves.PSYCH_UP ], - [ 32, Moves.ZEN_HEADBUTT ], - [ 37, Moves.SWAGGER ], - [ 42, Moves.PSYCHIC ], - [ 47, Moves.NASTY_PLOT ], - [ 51, Moves.PSYSHOCK ], - [ 56, Moves.FUTURE_SIGHT ], - ], - [Species.KRABBY]: [ - [ 1, Moves.LEER ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.MUD_SPORT ], - [ 4, Moves.HARDEN ], - [ 8, Moves.METAL_CLAW ], - [ 12, Moves.MUD_SHOT ], - [ 16, Moves.PROTECT ], - [ 20, Moves.BUBBLE_BEAM ], - [ 24, Moves.STOMP ], - [ 29, Moves.FLAIL ], - [ 32, Moves.RAZOR_SHELL ], - [ 36, Moves.SLAM ], - [ 40, Moves.SWORDS_DANCE ], - [ 44, Moves.CRABHAMMER ], - [ 48, Moves.GUILLOTINE ], - ], - [Species.KINGLER]: [ - [ 1, Moves.LEER ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.HARDEN ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.HAMMER_ARM ], - [ 1, Moves.WIDE_GUARD ], - [ 1, Moves.MUD_SPORT ], - [ 12, Moves.MUD_SHOT ], - [ 16, Moves.PROTECT ], - [ 20, Moves.BUBBLE_BEAM ], - [ 24, Moves.STOMP ], - [ 31, Moves.FLAIL ], - [ 36, Moves.RAZOR_SHELL ], - [ 42, Moves.SLAM ], - [ 48, Moves.SWORDS_DANCE ], - [ 54, Moves.CRABHAMMER ], - [ 60, Moves.GUILLOTINE ], - ], - [Species.VOLTORB]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.CHARGE ], - [ 4, Moves.THUNDER_SHOCK ], - [ 6, Moves.EERIE_IMPULSE ], - [ 9, Moves.SPARK ], - [ 11, Moves.ROLLOUT ], - [ 13, Moves.SCREECH ], - [ 16, Moves.CHARGE_BEAM ], - [ 20, Moves.SWIFT ], - [ 22, Moves.ELECTRO_BALL ], - [ 26, Moves.SELF_DESTRUCT ], - [ 29, Moves.LIGHT_SCREEN ], - [ 34, Moves.MAGNET_RISE ], - [ 37, Moves.DISCHARGE ], - [ 41, Moves.EXPLOSION ], - [ 46, Moves.GYRO_BALL ], - [ 50, Moves.MIRROR_COAT ], - ], - [Species.ELECTRODE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.CHARGE ], - [ 1, Moves.EERIE_IMPULSE ], - [ 1, Moves.MAGNETIC_FLUX ], - [ 9, Moves.SPARK ], - [ 11, Moves.ROLLOUT ], - [ 13, Moves.SCREECH ], - [ 16, Moves.CHARGE_BEAM ], - [ 20, Moves.SWIFT ], - [ 22, Moves.ELECTRO_BALL ], - [ 26, Moves.SELF_DESTRUCT ], - [ 29, Moves.LIGHT_SCREEN ], - [ 36, Moves.MAGNET_RISE ], - [ 41, Moves.DISCHARGE ], - [ 47, Moves.EXPLOSION ], - [ 54, Moves.GYRO_BALL ], - [ 58, Moves.MIRROR_COAT ], - ], - [Species.EXEGGCUTE]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.HYPNOSIS ], - [ 1, Moves.BARRAGE ], - [ 5, Moves.REFLECT ], - [ 10, Moves.LEECH_SEED ], - [ 15, Moves.MEGA_DRAIN ], - [ 20, Moves.CONFUSION ], - [ 25, Moves.SYNTHESIS ], - [ 30, Moves.BULLET_SEED ], - [ 35, Moves.GIGA_DRAIN ], - [ 40, Moves.EXTRASENSORY ], - [ 45, Moves.UPROAR ], - [ 50, Moves.WORRY_SEED ], - [ 55, Moves.SOLAR_BEAM ], - ], - [Species.EXEGGUTOR]: [ - [ EVOLVE_MOVE, Moves.STOMP ], - [ RELEARN_MOVE, Moves.GROWTH ], - [ 1, Moves.BARRAGE ], - [ 1, Moves.SEED_BOMB ], - [ 1, Moves.PSYSHOCK ], - [ 1, Moves.WOOD_HAMMER ], - [ 1, Moves.LEAF_STORM ], - [ 1, Moves.MEGA_DRAIN ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.SYNTHESIS ], - [ 1, Moves.BULLET_SEED ], - [ 1, Moves.GIGA_DRAIN ], - [ 1, Moves.EXTRASENSORY ], - [ 1, Moves.UPROAR ], - [ 1, Moves.WORRY_SEED ], - [ 1, Moves.SOLAR_BEAM ], - [ 1, Moves.ABSORB ], - [ 1, Moves.HYPNOSIS ], - [ 1, Moves.REFLECT ], - [ 1, Moves.LEECH_SEED ], - ], - [Species.CUBONE]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.MUD_SLAP ], - [ 4, Moves.TAIL_WHIP ], - [ 8, Moves.FALSE_SWIPE ], - [ 12, Moves.HEADBUTT ], - [ 16, Moves.RETALIATE ], - [ 20, Moves.FLING ], - [ 24, Moves.STOMPING_TANTRUM ], - [ 29, Moves.BONE_RUSH ], - [ 32, Moves.FOCUS_ENERGY ], - [ 36, Moves.ENDEAVOR ], - [ 40, Moves.BONEMERANG ], - [ 44, Moves.THRASH ], - [ 48, Moves.DOUBLE_EDGE ], - ], - [Species.MAROWAK]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.FALSE_SWIPE ], - [ 1, Moves.BONE_CLUB ], - [ 12, Moves.HEADBUTT ], - [ 16, Moves.RETALIATE ], - [ 20, Moves.FLING ], - [ 24, Moves.STOMPING_TANTRUM ], - [ 31, Moves.BONE_RUSH ], - [ 36, Moves.FOCUS_ENERGY ], - [ 42, Moves.ENDEAVOR ], - [ 48, Moves.BONEMERANG ], - [ 54, Moves.THRASH ], - [ 60, Moves.DOUBLE_EDGE ], - ], - [Species.HITMONLEE]: [ - [ EVOLVE_MOVE, Moves.BRICK_BREAK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.FEINT ], - [ 1, Moves.LOW_SWEEP ], - [ 1, Moves.JUMP_KICK ], - [ 1, Moves.ROLLING_KICK ], - [ 1, Moves.MACH_PUNCH ], // Previous Stage Move, Custom - [ 1, Moves.RAPID_SPIN ], // Previous Stage Move, Custom - [ 4, Moves.DOUBLE_KICK ], - [ 8, Moves.LOW_KICK ], - [ 12, Moves.ENDURE ], - [ 16, Moves.SUCKER_PUNCH ], - [ 21, Moves.WIDE_GUARD ], - [ 24, Moves.BLAZE_KICK ], - [ 28, Moves.FEINT ], - [ 32, Moves.MEGA_KICK ], - [ 36, Moves.CLOSE_COMBAT ], - [ 40, Moves.REVERSAL ], - [ 44, Moves.HIGH_JUMP_KICK ], - [ 50, Moves.AXE_KICK ], - ], - [Species.HITMONCHAN]: [ - [ EVOLVE_MOVE, Moves.DRAIN_PUNCH ], - [ 1, Moves.TACKLE ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.FEINT ], - [ 1, Moves.PURSUIT ], - [ 1, Moves.COMET_PUNCH ], - [ 1, Moves.LOW_SWEEP ], // Previous Stage Move, Custom - [ 1, Moves.RAPID_SPIN ], // Previous Stage Move, Custom - [ 4, Moves.MACH_PUNCH ], - [ 8, Moves.VACUUM_WAVE ], - [ 12, Moves.DETECT ], - [ 16, Moves.BULLET_PUNCH ], - [ 21, Moves.QUICK_GUARD ], - [ 24, Moves.THUNDER_PUNCH ], - [ 24, Moves.ICE_PUNCH ], - [ 24, Moves.FIRE_PUNCH ], - [ 28, Moves.AGILITY ], - [ 32, Moves.MEGA_PUNCH ], - [ 36, Moves.CLOSE_COMBAT ], - [ 40, Moves.COUNTER ], - [ 44, Moves.FOCUS_PUNCH ], - ], - [Species.LICKITUNG]: [ - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.LICK ], - [ 1, Moves.TACKLE ], // Custom - [ 6, Moves.REST ], - [ 12, Moves.SUPERSONIC ], - [ 18, Moves.WRAP ], - [ 24, Moves.DISABLE ], - [ 30, Moves.STOMP ], - [ 32, Moves.ROLLOUT ], - [ 36, Moves.KNOCK_OFF ], - [ 42, Moves.SCREECH ], - [ 48, Moves.SLAM ], - [ 54, Moves.POWER_WHIP ], - [ 60, Moves.BELLY_DRUM ], - ], - [Species.KOFFING]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.POISON_GAS ], - [ 4, Moves.SMOG ], - [ 8, Moves.SMOKESCREEN ], - [ 12, Moves.CLEAR_SMOG ], - [ 16, Moves.ASSURANCE ], - [ 20, Moves.SLUDGE ], - [ 24, Moves.HAZE ], - [ 28, Moves.SELF_DESTRUCT ], - [ 32, Moves.SLUDGE_BOMB ], - [ 36, Moves.TOXIC ], - [ 40, Moves.BELCH ], - [ 44, Moves.EXPLOSION ], - [ 48, Moves.MEMENTO ], - [ 52, Moves.DESTINY_BOND ], - ], - [Species.WEEZING]: [ - [ EVOLVE_MOVE, Moves.DOUBLE_HIT ], - [ 1, Moves.TACKLE ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.SMOG ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.HEAT_WAVE ], - [ 12, Moves.CLEAR_SMOG ], - [ 16, Moves.ASSURANCE ], - [ 20, Moves.SLUDGE ], - [ 24, Moves.HAZE ], - [ 28, Moves.SELF_DESTRUCT ], - [ 32, Moves.SLUDGE_BOMB ], - [ 38, Moves.TOXIC ], - [ 44, Moves.BELCH ], - [ 50, Moves.EXPLOSION ], - [ 56, Moves.MEMENTO ], - [ 62, Moves.DESTINY_BOND ], - ], - [Species.RHYHORN]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 5, Moves.SMACK_DOWN ], - [ 10, Moves.BULLDOZE ], - [ 15, Moves.HORN_ATTACK ], - [ 20, Moves.SCARY_FACE ], - [ 25, Moves.STOMP ], - [ 30, Moves.ROCK_BLAST ], - [ 35, Moves.DRILL_RUN ], - [ 40, Moves.TAKE_DOWN ], - [ 45, Moves.EARTHQUAKE ], - [ 50, Moves.STONE_EDGE ], - [ 55, Moves.MEGAHORN ], - [ 60, Moves.HORN_DRILL ], - ], - [Species.RHYDON]: [ - [ EVOLVE_MOVE, Moves.HAMMER_ARM ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.SMACK_DOWN ], - [ 1, Moves.BULLDOZE ], - [ 15, Moves.HORN_ATTACK ], - [ 20, Moves.SCARY_FACE ], - [ 25, Moves.STOMP ], - [ 30, Moves.ROCK_BLAST ], - [ 35, Moves.DRILL_RUN ], - [ 40, Moves.TAKE_DOWN ], - [ 47, Moves.EARTHQUAKE ], - [ 54, Moves.STONE_EDGE ], - [ 61, Moves.MEGAHORN ], - [ 68, Moves.HORN_DRILL ], - ], - [Species.CHANSEY]: [ - [ 1, Moves.POUND ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.COVET ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.DISARMING_VOICE ], - [ 4, Moves.TAIL_WHIP ], - [ 8, Moves.ECHOED_VOICE ], - [ 12, Moves.LIFE_DEW ], - [ 16, Moves.SING ], - [ 20, Moves.FLING ], - [ 24, Moves.TAKE_DOWN ], - [ 28, Moves.HEAL_PULSE ], - [ 32, Moves.HELPING_HAND ], - [ 36, Moves.LIGHT_SCREEN ], - [ 40, Moves.DOUBLE_EDGE ], - [ 44, Moves.SOFT_BOILED ], - [ 48, Moves.LAST_RESORT ], - [ 52, Moves.HEALING_WISH ], - ], - [Species.TANGELA]: [ - [ 1, Moves.BIND ], - [ 1, Moves.ABSORB ], - [ 1, Moves.CONSTRICT ], - [ 4, Moves.STUN_SPORE ], - [ 8, Moves.GROWTH ], - [ 12, Moves.MEGA_DRAIN ], - [ 16, Moves.VINE_WHIP ], - [ 20, Moves.POISON_POWDER ], - [ 24, Moves.DOUBLE_HIT ], - [ 28, Moves.KNOCK_OFF ], - [ 32, Moves.GIGA_DRAIN ], - [ 34, Moves.ANCIENT_POWER ], - [ 36, Moves.SLEEP_POWDER ], - [ 40, Moves.SLAM ], - [ 44, Moves.TICKLE ], - [ 48, Moves.POWER_WHIP ], - [ 52, Moves.INGRAIN ], - [ 56, Moves.GRASSY_TERRAIN ], - ], - [Species.KANGASKHAN]: [ - [ 1, Moves.POUND ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.COMET_PUNCH ], - [ 4, Moves.GROWL ], - [ 8, Moves.FAKE_OUT ], - [ 12, Moves.BITE ], - [ 16, Moves.STOMP ], - [ 20, Moves.FOCUS_ENERGY ], - [ 24, Moves.HEADBUTT ], - [ 28, Moves.SUCKER_PUNCH ], - [ 32, Moves.DOUBLE_HIT ], - [ 36, Moves.CRUNCH ], - [ 40, Moves.ENDURE ], - [ 44, Moves.REVERSAL ], - [ 48, Moves.OUTRAGE ], - [ 52, Moves.LAST_RESORT ], - ], - [Species.HORSEA]: [ - [ 1, Moves.LEER ], - [ 1, Moves.WATER_GUN ], - [ 5, Moves.SMOKESCREEN ], - [ 10, Moves.TWISTER ], - [ 15, Moves.FOCUS_ENERGY ], - [ 20, Moves.DRAGON_BREATH ], - [ 25, Moves.BUBBLE_BEAM ], - [ 30, Moves.AGILITY ], - [ 35, Moves.LASER_FOCUS ], - [ 40, Moves.DRAGON_PULSE ], - [ 45, Moves.HYDRO_PUMP ], - [ 50, Moves.DRAGON_DANCE ], - [ 55, Moves.RAIN_DANCE ], - ], - [Species.SEADRA]: [ - [ 1, Moves.LEER ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.TWISTER ], - [ 15, Moves.FOCUS_ENERGY ], - [ 20, Moves.DRAGON_BREATH ], - [ 25, Moves.BUBBLE_BEAM ], - [ 30, Moves.AGILITY ], - [ 37, Moves.LASER_FOCUS ], - [ 44, Moves.DRAGON_PULSE ], - [ 51, Moves.HYDRO_PUMP ], - [ 58, Moves.DRAGON_DANCE ], - [ 65, Moves.RAIN_DANCE ], - ], - [Species.GOLDEEN]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.PECK ], - [ 1, Moves.WATER_SPORT ], - [ 5, Moves.SUPERSONIC ], - [ 10, Moves.WATER_PULSE ], - [ 15, Moves.HORN_ATTACK ], - [ 20, Moves.AGILITY ], - [ 25, Moves.AQUA_RING ], - [ 30, Moves.FLAIL ], - [ 35, Moves.WATERFALL ], - [ 40, Moves.SOAK ], - [ 45, Moves.MEGAHORN ], - [ 50, Moves.HORN_DRILL ], - ], - [Species.SEAKING]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.WATER_SPORT ], - [ 1, Moves.PECK ], - [ 1, Moves.WATER_PULSE ], - [ 15, Moves.HORN_ATTACK ], - [ 20, Moves.AGILITY ], - [ 25, Moves.AQUA_RING ], - [ 30, Moves.FLAIL ], - [ 37, Moves.WATERFALL ], - [ 44, Moves.SOAK ], - [ 51, Moves.MEGAHORN ], - [ 58, Moves.HORN_DRILL ], - ], - [Species.STARYU]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 4, Moves.WATER_GUN ], - [ 8, Moves.CONFUSE_RAY ], - [ 12, Moves.RAPID_SPIN ], - [ 16, Moves.MINIMIZE ], - [ 20, Moves.SWIFT ], - [ 24, Moves.PSYBEAM ], - [ 28, Moves.BRINE ], - [ 32, Moves.LIGHT_SCREEN ], - [ 36, Moves.POWER_GEM ], - [ 40, Moves.PSYCHIC ], - [ 44, Moves.SURF ], - [ 48, Moves.RECOVER ], - [ 52, Moves.COSMIC_POWER ], - [ 56, Moves.HYDRO_PUMP ], - ], - [Species.STARMIE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.HYDRO_PUMP ], - [ 1, Moves.SURF ], - [ 1, Moves.PSYBEAM ], - [ 1, Moves.PSYCHIC ], - [ 1, Moves.RECOVER ], - [ 1, Moves.HARDEN ], - [ 1, Moves.MINIMIZE ], - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.LIGHT_SCREEN ], - [ 1, Moves.SWIFT ], - [ 1, Moves.SPOTLIGHT ], - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.COSMIC_POWER ], - [ 1, Moves.BRINE ], - [ 1, Moves.POWER_GEM ], - ], - [Species.MR_MIME]: [ - [ 1, Moves.POUND ], - [ 1, Moves.TICKLE ], // Previous Stage Move - [ 1, Moves.BATON_PASS ], - [ 1, Moves.ENCORE ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.POWER_SWAP ], - [ 1, Moves.GUARD_SWAP ], - [ 1, Moves.WIDE_GUARD ], - [ 1, Moves.QUICK_GUARD ], - [ 1, Moves.BARRIER ], - [ 12, Moves.CONFUSION ], - [ 16, Moves.ROLE_PLAY ], - [ 20, Moves.PROTECT ], - [ 24, Moves.RECYCLE ], - [ 28, Moves.PSYBEAM ], - [ 32, Moves.MIMIC ], - [ 36, Moves.LIGHT_SCREEN ], - [ 36, Moves.REFLECT ], - [ 36, Moves.SAFEGUARD ], - [ 40, Moves.SUCKER_PUNCH ], - [ 44, Moves.DAZZLING_GLEAM ], - [ 48, Moves.PSYCHIC ], - [ 52, Moves.TEETER_DANCE ], - ], - [Species.SCYTHER]: [ - [ 1, Moves.LEER ], - [ 1, Moves.QUICK_ATTACK ], - [ 4, Moves.FURY_CUTTER ], - [ 8, Moves.FALSE_SWIPE ], - [ 12, Moves.WING_ATTACK ], - [ 16, Moves.DOUBLE_TEAM ], - [ 20, Moves.DOUBLE_HIT ], - [ 24, Moves.SLASH ], - [ 28, Moves.FOCUS_ENERGY ], - [ 30, Moves.STEEL_WING ], // Custom - [ 32, Moves.AGILITY ], - [ 36, Moves.AIR_SLASH ], - [ 40, Moves.X_SCISSOR ], - [ 44, Moves.SWORDS_DANCE ], - ], - [Species.JYNX]: [ - [ 1, Moves.POUND ], - [ 1, Moves.LICK ], - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.COPYCAT ], - [ 12, Moves.CONFUSION ], - [ 16, Moves.COVET ], - [ 20, Moves.SING ], - [ 24, Moves.FAKE_TEARS ], - [ 28, Moves.ICE_PUNCH ], - [ 34, Moves.PSYCHIC ], - [ 40, Moves.LOVELY_KISS ], - [ 46, Moves.MEAN_LOOK ], - [ 52, Moves.PERISH_SONG ], - [ 58, Moves.BLIZZARD ], - ], - [Species.ELECTABUZZ]: [ - [ 1, Moves.LEER ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.CHARGE ], - [ 12, Moves.SWIFT ], - [ 16, Moves.SHOCK_WAVE ], - [ 20, Moves.THUNDER_WAVE ], - [ 24, Moves.SCREECH ], - [ 28, Moves.THUNDER_PUNCH ], - [ 34, Moves.DISCHARGE ], - [ 40, Moves.LOW_KICK ], - [ 46, Moves.THUNDERBOLT ], - [ 52, Moves.LIGHT_SCREEN ], - [ 58, Moves.THUNDER ], - [ 64, Moves.GIGA_IMPACT ], - ], - [Species.MAGMAR]: [ - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.SMOG ], - [ 12, Moves.CLEAR_SMOG ], - [ 16, Moves.FLAME_WHEEL ], - [ 20, Moves.CONFUSE_RAY ], - [ 24, Moves.SCARY_FACE ], - [ 28, Moves.FIRE_PUNCH ], - [ 34, Moves.LAVA_PLUME ], - [ 40, Moves.LOW_KICK ], - [ 46, Moves.FLAMETHROWER ], - [ 52, Moves.SUNNY_DAY ], - [ 58, Moves.FIRE_BLAST ], - [ 64, Moves.HYPER_BEAM ], - ], - [Species.PINSIR]: [ - [ 1, Moves.VISE_GRIP ], - [ 1, Moves.HARDEN ], - [ 4, Moves.FOCUS_ENERGY ], - [ 8, Moves.BIND ], - [ 12, Moves.SEISMIC_TOSS ], - [ 16, Moves.BUG_BITE ], - [ 20, Moves.STORM_THROW ], - [ 24, Moves.DOUBLE_HIT ], - [ 28, Moves.VITAL_THROW ], - [ 32, Moves.X_SCISSOR ], - [ 36, Moves.STRENGTH ], - [ 40, Moves.SWORDS_DANCE ], - [ 44, Moves.SUBMISSION ], - [ 48, Moves.GUILLOTINE ], - [ 52, Moves.SUPERPOWER ], - ], - [Species.TAUROS]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 5, Moves.WORK_UP ], - [ 10, Moves.PAYBACK ], - [ 15, Moves.ASSURANCE ], - [ 20, Moves.HORN_ATTACK ], - [ 25, Moves.SCARY_FACE ], - [ 30, Moves.ZEN_HEADBUTT ], - [ 35, Moves.RAGING_BULL ], - [ 40, Moves.REST ], - [ 45, Moves.SWAGGER ], - [ 50, Moves.THRASH ], - [ 55, Moves.DOUBLE_EDGE ], - [ 60, Moves.GIGA_IMPACT ], - ], - [Species.MAGIKARP]: [ - [ 1, Moves.SPLASH ], - [ 15, Moves.TACKLE ], - [ 25, Moves.FLAIL ], - ], - [Species.GYARADOS]: [ - [ EVOLVE_MOVE, Moves.BITE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.SPLASH ], - [ 1, Moves.FLAIL ], - [ 1, Moves.TWISTER ], - [ 4, Moves.WHIRLPOOL ], - [ 8, Moves.ICE_FANG ], - [ 12, Moves.BRINE ], - [ 16, Moves.SCARY_FACE ], - [ 21, Moves.WATERFALL ], - [ 24, Moves.CRUNCH ], - [ 28, Moves.RAIN_DANCE ], - [ 32, Moves.AQUA_TAIL ], - [ 36, Moves.DRAGON_DANCE ], - [ 40, Moves.HYDRO_PUMP ], - [ 44, Moves.HURRICANE ], - [ 48, Moves.THRASH ], - [ 52, Moves.HYPER_BEAM ], - ], - [Species.LAPRAS]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 5, Moves.SING ], - [ 10, Moves.MIST ], - [ 15, Moves.LIFE_DEW ], - [ 20, Moves.ICE_SHARD ], - [ 25, Moves.CONFUSE_RAY ], - [ 30, Moves.WATER_PULSE ], - [ 35, Moves.BRINE ], - [ 40, Moves.BODY_SLAM ], - [ 45, Moves.ICE_BEAM ], - [ 50, Moves.RAIN_DANCE ], - [ 55, Moves.HYDRO_PUMP ], - [ 60, Moves.PERISH_SONG ], - [ 65, Moves.SHEER_COLD ], - ], - [Species.DITTO]: [ - [ 1, Moves.TRANSFORM ], - ], - [Species.EEVEE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.COVET ], - [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.QUICK_ATTACK ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 20, Moves.SWIFT ], - [ 25, Moves.BITE ], - [ 30, Moves.COPYCAT ], - [ 35, Moves.BATON_PASS ], - [ 40, Moves.TAKE_DOWN ], - [ 45, Moves.CHARM ], - [ 50, Moves.DOUBLE_EDGE ], - [ 55, Moves.LAST_RESORT ], - [ 60, Moves.VEEVEE_VOLLEY ], - ], - [Species.VAPOREON]: [ - [ EVOLVE_MOVE, Moves.BOUNCY_BUBBLE ], - [ RELEARN_MOVE, Moves.VEEVEE_VOLLEY ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.BITE ], - [ 1, Moves.GROWL ], - [ 1, Moves.SWIFT ], - [ 1, Moves.CHARM ], - [ 1, Moves.BATON_PASS ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.COVET ], - [ 1, Moves.COPYCAT ], - [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.WATER_GUN ], - [ 15, Moves.QUICK_ATTACK ], - [ 20, Moves.BABY_DOLL_EYES ], - [ 25, Moves.HAZE ], - [ 30, Moves.WATER_PULSE ], - [ 35, Moves.AURORA_BEAM ], - [ 40, Moves.AQUA_RING ], - [ 45, Moves.MUDDY_WATER ], - [ 50, Moves.ACID_ARMOR ], - [ 55, Moves.HYDRO_PUMP ], - [ 60, Moves.LAST_RESORT ], - ], - [Species.JOLTEON]: [ - [ EVOLVE_MOVE, Moves.BUZZY_BUZZ ], - [ RELEARN_MOVE, Moves.VEEVEE_VOLLEY ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.BITE ], - [ 1, Moves.GROWL ], - [ 1, Moves.SWIFT ], - [ 1, Moves.CHARM ], - [ 1, Moves.BATON_PASS ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.COVET ], - [ 1, Moves.COPYCAT ], - [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.THUNDER_SHOCK ], - [ 15, Moves.QUICK_ATTACK ], - [ 20, Moves.BABY_DOLL_EYES ], - [ 25, Moves.THUNDER_WAVE ], - [ 30, Moves.DOUBLE_KICK ], - [ 35, Moves.THUNDER_FANG ], - [ 40, Moves.PIN_MISSILE ], - [ 45, Moves.DISCHARGE ], - [ 50, Moves.AGILITY ], - [ 55, Moves.THUNDER ], - [ 60, Moves.LAST_RESORT ], - ], - [Species.FLAREON]: [ - [ EVOLVE_MOVE, Moves.SIZZLY_SLIDE ], - [ RELEARN_MOVE, Moves.VEEVEE_VOLLEY ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.SWIFT ], - [ 1, Moves.CHARM ], - [ 1, Moves.BATON_PASS ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.COVET ], - [ 1, Moves.COPYCAT ], - [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.EMBER ], - [ 15, Moves.QUICK_ATTACK ], - [ 20, Moves.BABY_DOLL_EYES ], - [ 25, Moves.SMOG ], - [ 30, Moves.BITE ], - [ 35, Moves.FIRE_FANG ], - [ 40, Moves.FIRE_SPIN ], - [ 45, Moves.LAVA_PLUME ], - [ 50, Moves.SCARY_FACE ], - [ 55, Moves.FLARE_BLITZ ], - [ 60, Moves.LAST_RESORT ], - ], - [Species.PORYGON]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.CONVERSION ], - [ 5, Moves.RECYCLE ], - [ 10, Moves.MAGNET_RISE ], - [ 15, Moves.THUNDER_SHOCK ], - [ 20, Moves.PSYBEAM ], - [ 25, Moves.CONVERSION_2 ], - [ 30, Moves.AGILITY ], - [ 35, Moves.RECOVER ], - [ 40, Moves.DISCHARGE ], - [ 45, Moves.TRI_ATTACK ], - [ 50, Moves.MAGIC_COAT ], - [ 55, Moves.LOCK_ON ], - [ 60, Moves.ZAP_CANNON ], - ], - [Species.OMANYTE]: [ - [ 1, Moves.BIND ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.CONSTRICT ], - [ 5, Moves.ROLLOUT ], - [ 10, Moves.SAND_ATTACK ], - [ 15, Moves.WATER_GUN ], - [ 20, Moves.LEER ], - [ 25, Moves.MUD_SHOT ], - [ 30, Moves.ANCIENT_POWER ], - [ 35, Moves.BRINE ], - [ 41, Moves.PROTECT ], - [ 45, Moves.ROCK_BLAST ], - [ 50, Moves.SURF ], - [ 55, Moves.SHELL_SMASH ], - [ 60, Moves.HYDRO_PUMP ], - ], - [Species.OMASTAR]: [ - [ EVOLVE_MOVE, Moves.CRUNCH ], - [ 1, Moves.BIND ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.CONSTRICT ], - [ 1, Moves.SPIKE_CANNON ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.ROLLOUT ], - [ 15, Moves.WATER_GUN ], - [ 20, Moves.LEER ], - [ 25, Moves.MUD_SHOT ], - [ 30, Moves.ANCIENT_POWER ], - [ 35, Moves.BRINE ], - [ 43, Moves.PROTECT ], - [ 49, Moves.ROCK_BLAST ], - [ 56, Moves.SURF ], - [ 63, Moves.SHELL_SMASH ], - [ 70, Moves.HYDRO_PUMP ], - ], - [Species.KABUTO]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.HARDEN ], - [ 5, Moves.SCRATCH ], - [ 10, Moves.SAND_ATTACK ], - [ 15, Moves.AQUA_JET ], - [ 20, Moves.LEER ], - [ 25, Moves.MUD_SHOT ], - [ 30, Moves.ANCIENT_POWER ], - [ 35, Moves.BRINE ], - [ 41, Moves.PROTECT ], - [ 45, Moves.LEECH_LIFE ], - [ 50, Moves.LIQUIDATION ], - [ 55, Moves.METAL_SOUND ], - [ 60, Moves.STONE_EDGE ], - ], - [Species.KABUTOPS]: [ - [ EVOLVE_MOVE, Moves.SLASH ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.ABSORB ], - [ 1, Moves.HARDEN ], - [ 1, Moves.FEINT ], - [ 1, Moves.NIGHT_SLASH ], - [ 15, Moves.AQUA_JET ], - [ 20, Moves.LEER ], - [ 25, Moves.MUD_SHOT ], - [ 30, Moves.ANCIENT_POWER ], - [ 35, Moves.BRINE ], - [ 43, Moves.PROTECT ], - [ 49, Moves.LEECH_LIFE ], - [ 56, Moves.LIQUIDATION ], - [ 63, Moves.METAL_SOUND ], - [ 70, Moves.STONE_EDGE ], - ], - [Species.AERODACTYL]: [ - [ 1, Moves.BITE ], - [ 1, Moves.ANCIENT_POWER ], - [ 5, Moves.SUPERSONIC ], - [ 10, Moves.WING_ATTACK ], - [ 15, Moves.SCARY_FACE ], - [ 20, Moves.ROCK_SLIDE ], - [ 25, Moves.ROAR ], - [ 30, Moves.CRUNCH ], - [ 35, Moves.IRON_HEAD ], - [ 40, Moves.TAKE_DOWN ], - [ 45, Moves.STONE_EDGE ], - [ 50, Moves.AGILITY ], - [ 55, Moves.HYPER_BEAM ], - [ 60, Moves.GIGA_IMPACT ], - ], - [Species.SNORLAX]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.SCREECH ], - [ 1, Moves.ODOR_SLEUTH ], // Previous Stage Move - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.METRONOME ], - [ 1, Moves.LICK ], - [ 1, Moves.FLAIL ], - [ 1, Moves.STOCKPILE ], - [ 1, Moves.SWALLOW ], - [ 1, Moves.RECYCLE ], - [ 1, Moves.BLOCK ], - [ 1, Moves.COVET ], - [ 1, Moves.FLING ], - [ 1, Moves.LAST_RESORT ], - [ 12, Moves.YAWN ], - [ 16, Moves.BITE ], - [ 20, Moves.REST ], - [ 20, Moves.SNORE ], - [ 20, Moves.SLEEP_TALK ], - [ 24, Moves.CRUNCH ], - [ 28, Moves.BODY_SLAM ], - [ 32, Moves.HEAVY_SLAM ], - [ 36, Moves.AMNESIA ], - [ 40, Moves.HIGH_HORSEPOWER ], - [ 44, Moves.HAMMER_ARM ], - [ 48, Moves.BELLY_DRUM ], - [ 52, Moves.BELCH ], - [ 56, Moves.GIGA_IMPACT ], - ], - [Species.ARTICUNO]: [ - [ 1, Moves.GUST ], - [ 1, Moves.MIST ], - [ 5, Moves.POWDER_SNOW ], - [ 10, Moves.REFLECT ], - [ 15, Moves.ICE_SHARD ], - [ 20, Moves.AGILITY ], - [ 25, Moves.ANCIENT_POWER ], - [ 30, Moves.TAILWIND ], - [ 35, Moves.FREEZE_DRY ], - [ 40, Moves.ROOST ], - [ 45, Moves.ICE_BEAM ], - [ 50, Moves.SNOWSCAPE ], - [ 55, Moves.HURRICANE ], - [ 60, Moves.HAZE ], - [ 65, Moves.BLIZZARD ], - [ 70, Moves.SHEER_COLD ], - ], - [Species.ZAPDOS]: [ - [ 1, Moves.PECK ], - [ 1, Moves.THUNDER_WAVE ], - [ 5, Moves.THUNDER_SHOCK ], - [ 10, Moves.LIGHT_SCREEN ], - [ 15, Moves.PLUCK ], - [ 20, Moves.AGILITY ], - [ 25, Moves.ANCIENT_POWER ], - [ 30, Moves.CHARGE ], - [ 35, Moves.DRILL_PECK ], - [ 40, Moves.ROOST ], - [ 45, Moves.DISCHARGE ], - [ 50, Moves.RAIN_DANCE ], - [ 55, Moves.THUNDER ], - [ 60, Moves.DETECT ], - [ 65, Moves.MAGNETIC_FLUX ], - [ 70, Moves.ZAP_CANNON ], - ], - [Species.MOLTRES]: [ - [ 1, Moves.GUST ], - [ 1, Moves.LEER ], - [ 5, Moves.EMBER ], - [ 10, Moves.SAFEGUARD ], - [ 15, Moves.WING_ATTACK ], - [ 20, Moves.AGILITY ], - [ 25, Moves.ANCIENT_POWER ], - [ 30, Moves.INCINERATE ], - [ 35, Moves.AIR_SLASH ], - [ 40, Moves.ROOST ], - [ 45, Moves.HEAT_WAVE ], - [ 50, Moves.SUNNY_DAY ], - [ 55, Moves.HURRICANE ], - [ 60, Moves.ENDURE ], - [ 65, Moves.OVERHEAT ], - [ 70, Moves.SKY_ATTACK ], - ], - [Species.DRATINI]: [ - [ 1, Moves.WRAP ], - [ 1, Moves.LEER ], - [ 5, Moves.TWISTER ], - [ 10, Moves.THUNDER_WAVE ], - [ 15, Moves.DRAGON_TAIL ], - [ 20, Moves.AGILITY ], - [ 25, Moves.SLAM ], - [ 31, Moves.AQUA_TAIL ], - [ 35, Moves.DRAGON_RUSH ], - [ 40, Moves.SAFEGUARD ], - [ 45, Moves.RAIN_DANCE ], - [ 50, Moves.DRAGON_DANCE ], - [ 55, Moves.OUTRAGE ], - [ 60, Moves.HYPER_BEAM ], - ], - [Species.DRAGONAIR]: [ - [ 1, Moves.WRAP ], - [ 1, Moves.LEER ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.TWISTER ], - [ 15, Moves.DRAGON_TAIL ], - [ 20, Moves.AGILITY ], - [ 25, Moves.SLAM ], - [ 33, Moves.AQUA_TAIL ], - [ 39, Moves.DRAGON_RUSH ], - [ 46, Moves.SAFEGUARD ], - [ 53, Moves.RAIN_DANCE ], - [ 60, Moves.DRAGON_DANCE ], - [ 67, Moves.OUTRAGE ], - [ 74, Moves.HYPER_BEAM ], - ], - [Species.DRAGONITE]: [ - [ EVOLVE_MOVE, Moves.HURRICANE ], - [ 1, Moves.FIRE_PUNCH ], - [ 1, Moves.THUNDER_PUNCH ], - [ 1, Moves.WING_ATTACK ], - [ 1, Moves.WRAP ], - [ 1, Moves.LEER ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.TWISTER ], - [ 1, Moves.EXTREME_SPEED ], - [ 1, Moves.ROOST ], - [ 15, Moves.DRAGON_TAIL ], - [ 20, Moves.AGILITY ], - [ 25, Moves.SLAM ], - [ 33, Moves.AQUA_TAIL ], - [ 39, Moves.DRAGON_RUSH ], - [ 41, Moves.OUTRAGE ], - [ 46, Moves.SAFEGUARD ], - [ 53, Moves.RAIN_DANCE ], - [ 62, Moves.DRAGON_DANCE ], - [ 80, Moves.HYPER_BEAM ], - ], - [Species.MEWTWO]: [ - [ 1, Moves.DISABLE ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.SWIFT ], - [ 1, Moves.LIFE_DEW ], - [ 8, Moves.ANCIENT_POWER ], - [ 16, Moves.PSYCHO_CUT ], - [ 24, Moves.SAFEGUARD ], - [ 32, Moves.AMNESIA ], - [ 40, Moves.AURA_SPHERE ], - [ 48, Moves.PSYCHIC ], - [ 56, Moves.POWER_SWAP ], - [ 56, Moves.GUARD_SWAP ], - [ 64, Moves.MIST ], - [ 72, Moves.PSYSTRIKE ], - [ 80, Moves.RECOVER ], - [ 88, Moves.FUTURE_SIGHT ], - ], - [Species.MEW]: [ - [ 1, Moves.POUND ], - [ 1, Moves.REFLECT_TYPE ], - [ 10, Moves.AMNESIA ], - [ 20, Moves.BATON_PASS ], - [ 30, Moves.ANCIENT_POWER ], - [ 40, Moves.LIFE_DEW ], - [ 50, Moves.NASTY_PLOT ], - [ 60, Moves.METRONOME ], - [ 70, Moves.IMPRISON ], - [ 80, Moves.TRANSFORM ], - [ 90, Moves.AURA_SPHERE ], - [ 100, Moves.PSYCHIC ], - ], - [Species.CHIKORITA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 5, Moves.RAZOR_LEAF ], // Custom, moved from 6 to 5 - [ 9, Moves.POISON_POWDER ], - [ 12, Moves.SYNTHESIS ], - [ 17, Moves.REFLECT ], - [ 20, Moves.MAGICAL_LEAF ], - [ 23, Moves.LEECH_SEED ], - [ 28, Moves.SWEET_SCENT ], - [ 31, Moves.LIGHT_SCREEN ], - [ 34, Moves.BODY_SLAM ], - [ 39, Moves.SAFEGUARD ], - [ 42, Moves.GIGA_DRAIN ], - [ 45, Moves.SOLAR_BEAM ], - ], - [Species.BAYLEEF]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.RAZOR_LEAF ], - [ 1, Moves.POISON_POWDER ], - [ 12, Moves.SYNTHESIS ], - [ 18, Moves.REFLECT ], - [ 22, Moves.MAGICAL_LEAF ], - [ 26, Moves.LEECH_SEED ], - [ 32, Moves.SWEET_SCENT ], - [ 36, Moves.LIGHT_SCREEN ], - [ 40, Moves.BODY_SLAM ], - [ 46, Moves.SAFEGUARD ], - [ 50, Moves.GIGA_DRAIN ], - [ 54, Moves.SOLAR_BEAM ], - ], - [Species.MEGANIUM]: [ - [ EVOLVE_MOVE, Moves.PETAL_DANCE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.RAZOR_LEAF ], - [ 1, Moves.POISON_POWDER ], - [ 1, Moves.PETAL_BLIZZARD ], - [ 12, Moves.SYNTHESIS ], - [ 18, Moves.REFLECT ], - [ 22, Moves.MAGICAL_LEAF ], - [ 26, Moves.LEECH_SEED ], - [ 34, Moves.SWEET_SCENT ], - [ 40, Moves.LIGHT_SCREEN ], - [ 46, Moves.BODY_SLAM ], - [ 54, Moves.SAFEGUARD ], - [ 60, Moves.GIGA_DRAIN ], - [ 65, Moves.SOLAR_BEAM ], - ], - [Species.CYNDAQUIL]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 5, Moves.EMBER ], // Custom, moved from 10 to 5 - [ 10, Moves.SMOKESCREEN ], // Custom, moved from 6 to 10 - [ 13, Moves.QUICK_ATTACK ], - [ 19, Moves.FLAME_WHEEL ], - [ 22, Moves.DEFENSE_CURL ], - [ 28, Moves.FLAME_CHARGE ], - [ 31, Moves.SWIFT ], - [ 37, Moves.LAVA_PLUME ], - [ 40, Moves.FLAMETHROWER ], - [ 46, Moves.INFERNO ], - [ 49, Moves.ROLLOUT ], - [ 55, Moves.DOUBLE_EDGE ], - [ 58, Moves.OVERHEAT ], - [ 64, Moves.ERUPTION ], - ], - [Species.QUILAVA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.SMOKESCREEN ], - [ 10, Moves.EMBER ], - [ 13, Moves.QUICK_ATTACK ], - [ 20, Moves.FLAME_WHEEL ], - [ 24, Moves.DEFENSE_CURL ], - [ 31, Moves.SWIFT ], - [ 35, Moves.FLAME_CHARGE ], - [ 42, Moves.LAVA_PLUME ], - [ 46, Moves.FLAMETHROWER ], - [ 53, Moves.INFERNO ], - [ 57, Moves.ROLLOUT ], - [ 64, Moves.DOUBLE_EDGE ], - [ 68, Moves.OVERHEAT ], - [ 75, Moves.ERUPTION ], - ], - [Species.TYPHLOSION]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.ERUPTION ], - [ 1, Moves.GYRO_BALL ], - [ 13, Moves.QUICK_ATTACK ], - [ 20, Moves.FLAME_WHEEL ], - [ 24, Moves.DEFENSE_CURL ], - [ 31, Moves.SWIFT ], - [ 35, Moves.FLAME_CHARGE ], - [ 43, Moves.LAVA_PLUME ], - [ 48, Moves.FLAMETHROWER ], - [ 56, Moves.INFERNO ], - [ 61, Moves.ROLLOUT ], - [ 74, Moves.OVERHEAT ], - ], - [Species.TOTODILE]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 5, Moves.WATER_GUN ], // Custom, moved from 6 to 5 - [ 9, Moves.BITE ], - [ 13, Moves.SCARY_FACE ], - [ 19, Moves.ICE_FANG ], - [ 22, Moves.FLAIL ], - [ 27, Moves.CRUNCH ], - [ 30, Moves.SLASH ], - [ 33, Moves.SCREECH ], - [ 37, Moves.THRASH ], - [ 41, Moves.AQUA_TAIL ], - [ 45, Moves.SUPERPOWER ], - [ 50, Moves.HYDRO_PUMP ], - ], - [Species.CROCONAW]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.WATER_GUN ], - [ 13, Moves.BITE ], - [ 15, Moves.SCARY_FACE ], - [ 21, Moves.ICE_FANG ], - [ 24, Moves.FLAIL ], - [ 30, Moves.CRUNCH ], - [ 34, Moves.SLASH ], - [ 37, Moves.SCREECH ], - [ 42, Moves.THRASH ], - [ 47, Moves.AQUA_TAIL ], - [ 50, Moves.SUPERPOWER ], - [ 55, Moves.HYDRO_PUMP ], - ], - [Species.FERALIGATR]: [ - [ 1, Moves.AGILITY ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.WATER_GUN ], - [ 13, Moves.BITE ], - [ 15, Moves.SCARY_FACE ], - [ 21, Moves.ICE_FANG ], - [ 24, Moves.FLAIL ], - [ 32, Moves.CRUNCH ], - [ 37, Moves.SLASH ], - [ 44, Moves.SCREECH ], - [ 51, Moves.THRASH ], - [ 59, Moves.AQUA_TAIL ], - [ 65, Moves.SUPERPOWER ], - [ 70, Moves.HYDRO_PUMP ], - ], - [Species.SENTRET]: [ - [ 1, Moves.SCRATCH ], - [ 4, Moves.DEFENSE_CURL ], - [ 7, Moves.QUICK_ATTACK ], - [ 13, Moves.FURY_SWIPES ], - [ 16, Moves.HELPING_HAND ], - [ 19, Moves.FOLLOW_ME ], - [ 25, Moves.SLAM ], - [ 28, Moves.REST ], - [ 31, Moves.SUCKER_PUNCH ], - [ 36, Moves.AMNESIA ], - [ 39, Moves.BATON_PASS ], - [ 42, Moves.DOUBLE_EDGE ], - [ 47, Moves.HYPER_VOICE ], - ], - [Species.FURRET]: [ - [ EVOLVE_MOVE, Moves.AGILITY ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.COIL ], - [ 13, Moves.FURY_SWIPES ], - [ 17, Moves.HELPING_HAND ], - [ 21, Moves.FOLLOW_ME ], - [ 28, Moves.SLAM ], - [ 32, Moves.REST ], - [ 36, Moves.SUCKER_PUNCH ], - [ 42, Moves.AMNESIA ], - [ 46, Moves.BATON_PASS ], - [ 50, Moves.DOUBLE_EDGE ], - [ 56, Moves.HYPER_VOICE ], - ], - [Species.HOOTHOOT]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.PECK ], - [ 3, Moves.TACKLE ], - [ 6, Moves.ECHOED_VOICE ], - [ 9, Moves.CONFUSION ], - [ 12, Moves.REFLECT ], - [ 15, Moves.DEFOG ], - [ 18, Moves.AIR_SLASH ], - [ 21, Moves.EXTRASENSORY ], - [ 24, Moves.TAKE_DOWN ], - [ 27, Moves.UPROAR ], - [ 30, Moves.ROOST ], - [ 33, Moves.MOONBLAST ], - [ 36, Moves.HYPNOSIS ], - [ 39, Moves.DREAM_EATER ], - ], - [Species.NOCTOWL]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.PECK ], - [ 1, Moves.SKY_ATTACK ], - [ 1, Moves.ECHOED_VOICE ], - [ 9, Moves.CONFUSION ], - [ 12, Moves.REFLECT ], - [ 15, Moves.DEFOG ], - [ 18, Moves.AIR_SLASH ], - [ 23, Moves.EXTRASENSORY ], - [ 28, Moves.TAKE_DOWN ], - [ 33, Moves.UPROAR ], - [ 38, Moves.ROOST ], - [ 43, Moves.MOONBLAST ], - [ 48, Moves.HYPNOSIS ], - [ 53, Moves.DREAM_EATER ], - ], - [Species.LEDYBA]: [ - [ 1, Moves.TACKLE ], - [ 5, Moves.SUPERSONIC ], - [ 8, Moves.SWIFT ], - [ 12, Moves.LIGHT_SCREEN ], - [ 12, Moves.REFLECT ], - [ 12, Moves.SAFEGUARD ], - [ 15, Moves.MACH_PUNCH ], - [ 19, Moves.ROOST ], - [ 22, Moves.STRUGGLE_BUG ], - [ 26, Moves.BATON_PASS ], - [ 29, Moves.AGILITY ], - [ 33, Moves.BUG_BUZZ ], - [ 36, Moves.AIR_SLASH ], - [ 40, Moves.DOUBLE_EDGE ], - ], - [Species.LEDIAN]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.SWIFT ], - [ 5, Moves.SUPERSONIC ], - [ 12, Moves.LIGHT_SCREEN ], - [ 12, Moves.REFLECT ], - [ 12, Moves.SAFEGUARD ], - [ 15, Moves.MACH_PUNCH ], - [ 20, Moves.ROOST ], - [ 24, Moves.STRUGGLE_BUG ], - [ 29, Moves.BATON_PASS ], - [ 33, Moves.AGILITY ], - [ 38, Moves.BUG_BUZZ ], - [ 42, Moves.AIR_SLASH ], - [ 47, Moves.DOUBLE_EDGE ], - ], - [Species.SPINARAK]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.STRING_SHOT ], - [ 1, Moves.CONSTRICT ], - [ 5, Moves.ABSORB ], - [ 8, Moves.INFESTATION ], - [ 12, Moves.SCARY_FACE ], - [ 15, Moves.NIGHT_SHADE ], - [ 19, Moves.SHADOW_SNEAK ], - [ 22, Moves.FURY_SWIPES ], - [ 26, Moves.SUCKER_PUNCH ], - [ 29, Moves.AGILITY ], - [ 33, Moves.PIN_MISSILE ], - [ 36, Moves.PSYCHIC ], - [ 40, Moves.POISON_JAB ], - [ 44, Moves.CROSS_POISON ], - [ 47, Moves.STICKY_WEB ], - [ 51, Moves.TOXIC_THREAD ], - ], - [Species.ARIADOS]: [ - [ EVOLVE_MOVE, Moves.SWORDS_DANCE ], - [ 1, Moves.POISON_STING ], - [ 1, Moves.ABSORB ], - [ 1, Moves.STRING_SHOT ], - [ 1, Moves.CONSTRICT ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.BUG_BITE ], - [ 1, Moves.FELL_STINGER ], - [ 8, Moves.INFESTATION ], - [ 12, Moves.SCARY_FACE ], - [ 15, Moves.NIGHT_SHADE ], - [ 19, Moves.SHADOW_SNEAK ], - [ 23, Moves.FURY_SWIPES ], - [ 28, Moves.SUCKER_PUNCH ], - [ 31, Moves.AGILITY ], - [ 35, Moves.PIN_MISSILE ], - [ 41, Moves.PSYCHIC ], - [ 46, Moves.POISON_JAB ], - [ 50, Moves.CROSS_POISON ], - [ 54, Moves.STICKY_WEB ], - [ 59, Moves.TOXIC_THREAD ], - ], - [Species.CROBAT]: [ - [ EVOLVE_MOVE, Moves.CROSS_POISON ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.ABSORB ], - [ 1, Moves.TOXIC ], - [ 1, Moves.SCREECH ], - [ 1, Moves.MEAN_LOOK ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.TAILWIND ], - [ 15, Moves.POISON_FANG ], - [ 20, Moves.QUICK_GUARD ], - [ 27, Moves.AIR_CUTTER ], - [ 34, Moves.BITE ], - [ 41, Moves.HAZE ], - [ 48, Moves.VENOSHOCK ], - [ 55, Moves.CONFUSE_RAY ], - [ 62, Moves.AIR_SLASH ], - [ 69, Moves.LEECH_LIFE ], - ], - [Species.CHINCHOU]: [ - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.WATER_GUN ], - [ 4, Moves.ELECTRO_BALL ], - [ 8, Moves.THUNDER_WAVE ], - [ 12, Moves.BUBBLE_BEAM ], - [ 16, Moves.CONFUSE_RAY ], - [ 20, Moves.SPARK ], - [ 24, Moves.CHARGE ], - [ 28, Moves.DISCHARGE ], - [ 32, Moves.AQUA_RING ], - [ 36, Moves.FLAIL ], - [ 40, Moves.TAKE_DOWN ], - [ 44, Moves.HYDRO_PUMP ], - ], - [Species.LANTURN]: [ - [ EVOLVE_MOVE, Moves.STOCKPILE ], - [ EVOLVE_MOVE, Moves.SPIT_UP ], - [ EVOLVE_MOVE, Moves.SWALLOW ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.SPOTLIGHT ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.ELECTRO_BALL ], - [ 1, Moves.EERIE_IMPULSE ], - [ 12, Moves.BUBBLE_BEAM ], - [ 16, Moves.CONFUSE_RAY ], - [ 20, Moves.SPARK ], - [ 24, Moves.CHARGE ], - [ 30, Moves.DISCHARGE ], - [ 36, Moves.AQUA_RING ], - [ 42, Moves.FLAIL ], - [ 48, Moves.TAKE_DOWN ], - [ 54, Moves.HYDRO_PUMP ], - ], - [Species.PICHU]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.THUNDER_SHOCK ], - [ 4, Moves.PLAY_NICE ], - [ 8, Moves.SWEET_KISS ], - [ 12, Moves.NUZZLE ], - [ 16, Moves.NASTY_PLOT ], - [ 20, Moves.CHARM ], - ], - [Species.CLEFFA]: [ - [ 1, Moves.POUND ], - [ 1, Moves.SPLASH ], - [ 1, Moves.COPYCAT ], - [ 4, Moves.SING ], - [ 8, Moves.SWEET_KISS ], - [ 12, Moves.DISARMING_VOICE ], - [ 16, Moves.ENCORE ], - [ 20, Moves.CHARM ], - ], - [Species.IGGLYBUFF]: [ - [ 1, Moves.POUND ], - [ 1, Moves.SING ], - [ 1, Moves.COPYCAT ], - [ 4, Moves.DEFENSE_CURL ], - [ 8, Moves.SWEET_KISS ], - [ 12, Moves.DISARMING_VOICE ], - [ 16, Moves.DISABLE ], - [ 20, Moves.CHARM ], - ], - [Species.TOGEPI]: [ - [ 1, Moves.POUND ], - [ 1, Moves.GROWL ], - [ 4, Moves.SWEET_KISS ], - [ 8, Moves.LIFE_DEW ], - [ 12, Moves.CHARM ], - [ 16, Moves.ANCIENT_POWER ], - [ 20, Moves.YAWN ], - [ 24, Moves.METRONOME ], - [ 28, Moves.AFTER_YOU ], - [ 32, Moves.DOUBLE_EDGE ], - [ 36, Moves.SAFEGUARD ], - [ 40, Moves.FOLLOW_ME ], - [ 44, Moves.BATON_PASS ], - [ 48, Moves.LAST_RESORT ], - [ 52, Moves.WISH ], - ], - [Species.TOGETIC]: [ - [ EVOLVE_MOVE, Moves.FAIRY_WIND ], - [ 1, Moves.POUND ], - [ 1, Moves.GROWL ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.LIFE_DEW ], - [ 12, Moves.CHARM ], - [ 16, Moves.ANCIENT_POWER ], - [ 20, Moves.YAWN ], - [ 24, Moves.METRONOME ], - [ 28, Moves.AFTER_YOU ], - [ 32, Moves.DOUBLE_EDGE ], - [ 36, Moves.SAFEGUARD ], - [ 40, Moves.FOLLOW_ME ], - [ 44, Moves.BATON_PASS ], - [ 48, Moves.LAST_RESORT ], - [ 52, Moves.WISH ], - ], - [Species.NATU]: [ - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 5, Moves.STORED_POWER ], - [ 10, Moves.TELEPORT ], - [ 15, Moves.CONFUSE_RAY ], - [ 20, Moves.NIGHT_SHADE ], - [ 26, Moves.PSYCHO_SHIFT ], - [ 30, Moves.POWER_SWAP ], - [ 35, Moves.PSYCHIC ], - [ 35, Moves.GUARD_SWAP ], - [ 40, Moves.WISH ], - [ 45, Moves.FUTURE_SIGHT ], - ], - [Species.XATU]: [ - [ EVOLVE_MOVE, Moves.AIR_SLASH ], - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 1, Moves.TELEPORT ], - [ 1, Moves.TAILWIND ], - [ 1, Moves.STORED_POWER ], - [ 15, Moves.CONFUSE_RAY ], - [ 20, Moves.NIGHT_SHADE ], - [ 28, Moves.PSYCHO_SHIFT ], - [ 34, Moves.POWER_SWAP ], - [ 34, Moves.GUARD_SWAP ], - [ 41, Moves.PSYCHIC ], - [ 48, Moves.WISH ], - [ 55, Moves.FUTURE_SIGHT ], - ], - [Species.MAREEP]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 4, Moves.THUNDER_WAVE ], - [ 8, Moves.THUNDER_SHOCK ], - [ 11, Moves.COTTON_SPORE ], - [ 15, Moves.CHARGE ], - [ 18, Moves.TAKE_DOWN ], - [ 22, Moves.ELECTRO_BALL ], - [ 25, Moves.CONFUSE_RAY ], - [ 29, Moves.POWER_GEM ], - [ 32, Moves.DISCHARGE ], - [ 36, Moves.COTTON_GUARD ], - [ 39, Moves.DAZZLING_GLEAM ], - [ 43, Moves.LIGHT_SCREEN ], - [ 46, Moves.THUNDER ], - ], - [Species.FLAAFFY]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 6, Moves.THUNDER_SHOCK ], - [ 9, Moves.THUNDER_WAVE ], - [ 11, Moves.COTTON_SPORE ], - [ 16, Moves.CHARGE ], - [ 20, Moves.TAKE_DOWN ], - [ 25, Moves.ELECTRO_BALL ], - [ 29, Moves.CONFUSE_RAY ], - [ 34, Moves.POWER_GEM ], - [ 38, Moves.DISCHARGE ], - [ 43, Moves.COTTON_GUARD ], - [ 47, Moves.DAZZLING_GLEAM ], - [ 52, Moves.LIGHT_SCREEN ], - [ 56, Moves.THUNDER ], - ], - [Species.AMPHAROS]: [ - [ EVOLVE_MOVE, Moves.THUNDER_PUNCH ], - [ 1, Moves.FIRE_PUNCH ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.ZAP_CANNON ], - [ 1, Moves.DRAGON_PULSE ], - [ 1, Moves.MAGNETIC_FLUX ], - [ 1, Moves.ION_DELUGE ], - [ 11, Moves.COTTON_SPORE ], - [ 16, Moves.CHARGE ], - [ 20, Moves.TAKE_DOWN ], - [ 25, Moves.ELECTRO_BALL ], - [ 29, Moves.CONFUSE_RAY ], - [ 35, Moves.POWER_GEM ], - [ 40, Moves.DISCHARGE ], - [ 46, Moves.COTTON_GUARD ], - [ 51, Moves.DAZZLING_GLEAM ], - [ 57, Moves.LIGHT_SCREEN ], - [ 62, Moves.THUNDER ], - ], - [Species.BELLOSSOM]: [ - [ EVOLVE_MOVE, Moves.PETAL_BLIZZARD ], - [ 1, Moves.ACID ], - [ 1, Moves.ABSORB ], - [ 1, Moves.MEGA_DRAIN ], - [ 1, Moves.GROWTH ], - [ 1, Moves.POISON_POWDER ], - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.SLEEP_POWDER ], - [ 1, Moves.PETAL_DANCE ], - [ 1, Moves.TOXIC ], - [ 1, Moves.GIGA_DRAIN ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.MOONLIGHT ], - [ 1, Moves.QUIVER_DANCE ], - [ 1, Moves.GRASSY_TERRAIN ], - [ 1, Moves.MOONBLAST ], - ], - [Species.MARILL]: [ - [ 1, Moves.SPLASH ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.ROLLOUT ], - [ 1, Moves.HELPING_HAND ], - [ 6, Moves.BUBBLE_BEAM ], - [ 9, Moves.CHARM ], - [ 12, Moves.SLAM ], - [ 15, Moves.BOUNCE ], - [ 19, Moves.AQUA_TAIL ], - [ 21, Moves.PLAY_ROUGH ], - [ 24, Moves.AQUA_RING ], - [ 27, Moves.RAIN_DANCE ], - [ 30, Moves.HYDRO_PUMP ], - [ 33, Moves.DOUBLE_EDGE ], - [ 36, Moves.SUPERPOWER ], - ], - [Species.AZUMARILL]: [ - [ 1, Moves.SPLASH ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.ROLLOUT ], - [ 1, Moves.HELPING_HAND ], - [ 6, Moves.BUBBLE_BEAM ], - [ 9, Moves.CHARM ], - [ 12, Moves.SLAM ], - [ 15, Moves.BOUNCE ], - [ 21, Moves.AQUA_TAIL ], - [ 25, Moves.PLAY_ROUGH ], - [ 30, Moves.AQUA_RING ], - [ 35, Moves.RAIN_DANCE ], - [ 40, Moves.HYDRO_PUMP ], - [ 45, Moves.DOUBLE_EDGE ], - [ 50, Moves.SUPERPOWER ], - ], - [Species.SUDOWOODO]: [ - [ EVOLVE_MOVE, Moves.SLAM ], - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.TACKLE ], // Previous Stage Move, Custom - [ 1, Moves.FLAIL ], - [ 1, Moves.FAKE_TEARS ], - [ 1, Moves.HAMMER_ARM ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.STONE_EDGE ], - [ 1, Moves.WOOD_HAMMER ], - [ 12, Moves.BLOCK ], - [ 16, Moves.MIMIC ], - [ 20, Moves.ROCK_TOMB ], - [ 24, Moves.TEARFUL_LOOK ], - [ 28, Moves.SUCKER_PUNCH ], - [ 32, Moves.ROCK_SLIDE ], - [ 36, Moves.LOW_KICK ], - [ 40, Moves.COUNTER ], - [ 44, Moves.DOUBLE_EDGE ], - [ 48, Moves.HEAD_SMASH ], - ], - [Species.POLITOED]: [ - [ EVOLVE_MOVE, Moves.BOUNCE ], - [ RELEARN_MOVE, Moves.BODY_SLAM ], - [ RELEARN_MOVE, Moves.DOUBLE_EDGE ], - [ RELEARN_MOVE, Moves.WATER_GUN ], - [ RELEARN_MOVE, Moves.BUBBLE_BEAM ], - [ RELEARN_MOVE, Moves.HYPNOSIS ], - [ RELEARN_MOVE, Moves.PERISH_SONG ], - [ RELEARN_MOVE, Moves.SWAGGER ], - [ RELEARN_MOVE, Moves.HYPER_VOICE ], - [ RELEARN_MOVE, Moves.MUD_SHOT ], - [ RELEARN_MOVE, Moves.EARTH_POWER ], - [ 1, Moves.RAIN_DANCE ], - [ 1, Moves.HYDRO_PUMP ], - [ 1, Moves.BELLY_DRUM ], - [ 1, Moves.POUND ], - [ 1, Moves.WATER_SPORT ], // Previous Stage Move - ], - [Species.HOPPIP]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.SPLASH ], - [ 4, Moves.TAIL_WHIP ], - [ 6, Moves.ABSORB ], - [ 8, Moves.FAIRY_WIND ], - [ 10, Moves.POISON_POWDER ], - [ 10, Moves.STUN_SPORE ], - [ 10, Moves.SLEEP_POWDER ], - [ 12, Moves.BULLET_SEED ], - [ 15, Moves.SYNTHESIS ], - [ 19, Moves.LEECH_SEED ], - [ 22, Moves.MEGA_DRAIN ], - [ 24, Moves.ACROBATICS ], - [ 27, Moves.COTTON_SPORE ], - [ 29, Moves.U_TURN ], - [ 32, Moves.GIGA_DRAIN ], - [ 35, Moves.BOUNCE ], - [ 38, Moves.MEMENTO ], - ], - [Species.SKIPLOOM]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.ABSORB ], - [ 1, Moves.SPLASH ], - [ 1, Moves.SYNTHESIS ], - [ 8, Moves.TACKLE ], - [ 10, Moves.FAIRY_WIND ], - [ 12, Moves.POISON_POWDER ], - [ 12, Moves.STUN_SPORE ], - [ 12, Moves.SLEEP_POWDER ], - [ 15, Moves.BULLET_SEED ], - [ 20, Moves.LEECH_SEED ], - [ 24, Moves.MEGA_DRAIN ], - [ 28, Moves.ACROBATICS ], - [ 31, Moves.COTTON_SPORE ], - [ 34, Moves.U_TURN ], - [ 37, Moves.GIGA_DRAIN ], - [ 41, Moves.BOUNCE ], - [ 44, Moves.MEMENTO ], - ], - [Species.JUMPLUFF]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.ABSORB ], - [ 1, Moves.SPLASH ], - [ 1, Moves.SYNTHESIS ], - [ 8, Moves.TACKLE ], - [ 10, Moves.FAIRY_WIND ], - [ 12, Moves.POISON_POWDER ], - [ 12, Moves.STUN_SPORE ], - [ 12, Moves.SLEEP_POWDER ], - [ 15, Moves.BULLET_SEED ], - [ 20, Moves.LEECH_SEED ], - [ 24, Moves.MEGA_DRAIN ], - [ 30, Moves.ACROBATICS ], - [ 35, Moves.COTTON_SPORE ], - [ 39, Moves.U_TURN ], - [ 43, Moves.GIGA_DRAIN ], - [ 49, Moves.BOUNCE ], - [ 55, Moves.MEMENTO ], - ], - [Species.AIPOM]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.TAIL_WHIP ], - [ 4, Moves.SAND_ATTACK ], - [ 8, Moves.ASTONISH ], - [ 11, Moves.BATON_PASS ], - [ 15, Moves.TICKLE ], - [ 18, Moves.FURY_SWIPES ], - [ 22, Moves.SWIFT ], - [ 25, Moves.SCREECH ], - [ 29, Moves.AGILITY ], - [ 32, Moves.DOUBLE_HIT ], - [ 36, Moves.FLING ], - [ 39, Moves.NASTY_PLOT ], - [ 43, Moves.LAST_RESORT ], - ], - [Species.SUNKERN]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWTH ], - [ 7, Moves.ABSORB ], - [ 10, Moves.MEGA_DRAIN ], - [ 16, Moves.RAZOR_LEAF ], - [ 19, Moves.WORRY_SEED ], - [ 22, Moves.GIGA_DRAIN ], - [ 25, Moves.ENDEAVOR ], - [ 28, Moves.SYNTHESIS ], - [ 31, Moves.SOLAR_BEAM ], - [ 34, Moves.DOUBLE_EDGE ], - [ 36, Moves.SUNNY_DAY ], - [ 39, Moves.SEED_BOMB ], - ], - [Species.SUNFLORA]: [ - [ RELEARN_MOVE, Moves.SEED_BOMB ], // Previous Stage Move - [ 1, Moves.POUND ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWTH ], - [ 1, Moves.ENDEAVOR ], // Previous Stage Move - [ 1, Moves.SYNTHESIS ], // Previous Stage Move - [ 4, Moves.INGRAIN ], - [ 7, Moves.ABSORB ], - [ 10, Moves.MEGA_DRAIN ], - [ 13, Moves.LEECH_SEED ], - [ 16, Moves.RAZOR_LEAF ], - [ 19, Moves.WORRY_SEED ], - [ 22, Moves.GIGA_DRAIN ], - [ 25, Moves.BULLET_SEED ], - [ 28, Moves.PETAL_DANCE ], - [ 31, Moves.SOLAR_BEAM ], - [ 34, Moves.DOUBLE_EDGE ], - [ 39, Moves.SUNNY_DAY ], - [ 43, Moves.LEAF_STORM ], - [ 50, Moves.PETAL_BLIZZARD ], - ], - [Species.YANMA]: [ - [ 1, Moves.TACKLE ], - [ 6, Moves.QUICK_ATTACK ], - [ 11, Moves.DOUBLE_TEAM ], - [ 14, Moves.AIR_CUTTER ], - [ 17, Moves.DETECT ], - [ 22, Moves.SUPERSONIC ], - [ 27, Moves.UPROAR ], - [ 30, Moves.BUG_BITE ], - [ 33, Moves.ANCIENT_POWER ], - [ 38, Moves.HYPNOSIS ], - [ 43, Moves.WING_ATTACK ], - [ 46, Moves.SCREECH ], - [ 49, Moves.U_TURN ], - [ 54, Moves.AIR_SLASH ], - [ 57, Moves.BUG_BUZZ ], - ], - [Species.WOOPER]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_GUN ], - [ 4, Moves.RAIN_DANCE ], - [ 8, Moves.MUD_SHOT ], - [ 12, Moves.MIST ], - [ 12, Moves.HAZE ], - [ 16, Moves.SLAM ], - [ 21, Moves.YAWN ], - [ 24, Moves.AQUA_TAIL ], - [ 28, Moves.MUDDY_WATER ], - [ 32, Moves.AMNESIA ], - [ 36, Moves.TOXIC ], - [ 40, Moves.EARTHQUAKE ], - ], - [Species.QUAGSIRE]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.RAIN_DANCE ], - [ 1, Moves.MUD_SHOT ], - [ 12, Moves.MIST ], - [ 12, Moves.HAZE ], - [ 16, Moves.SLAM ], - [ 23, Moves.YAWN ], - [ 28, Moves.AQUA_TAIL ], - [ 34, Moves.MUDDY_WATER ], - [ 40, Moves.AMNESIA ], - [ 46, Moves.TOXIC ], - [ 52, Moves.EARTHQUAKE ], - ], - [Species.ESPEON]: [ - [ EVOLVE_MOVE, Moves.GLITZY_GLOW ], - [ RELEARN_MOVE, Moves.VEEVEE_VOLLEY ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.BITE ], - [ 1, Moves.GROWL ], - [ 1, Moves.CHARM ], - [ 1, Moves.BATON_PASS ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.COVET ], - [ 1, Moves.COPYCAT ], - [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.CONFUSION ], - [ 15, Moves.QUICK_ATTACK ], - [ 20, Moves.BABY_DOLL_EYES ], - [ 25, Moves.SWIFT ], - [ 30, Moves.PSYBEAM ], - [ 35, Moves.MORNING_SUN ], - [ 40, Moves.POWER_SWAP ], - [ 45, Moves.PSYCHIC ], - [ 50, Moves.PSYCH_UP ], - [ 55, Moves.FUTURE_SIGHT ], - [ 60, Moves.LAST_RESORT ], - ], - [Species.UMBREON]: [ - [ EVOLVE_MOVE, Moves.BADDY_BAD ], - [ RELEARN_MOVE, Moves.VEEVEE_VOLLEY ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.BITE ], - [ 1, Moves.GROWL ], - [ 1, Moves.SWIFT ], - [ 1, Moves.CHARM ], - [ 1, Moves.BATON_PASS ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.COVET ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.PURSUIT ], - [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.SNARL ], - [ 15, Moves.QUICK_ATTACK ], - [ 20, Moves.BABY_DOLL_EYES ], - [ 25, Moves.CONFUSE_RAY ], - [ 30, Moves.ASSURANCE ], - [ 35, Moves.MOONLIGHT ], - [ 40, Moves.GUARD_SWAP ], - [ 45, Moves.DARK_PULSE ], - [ 50, Moves.SCREECH ], - [ 55, Moves.MEAN_LOOK ], - [ 60, Moves.LAST_RESORT ], - ], - [Species.MURKROW]: [ - [ 1, Moves.PECK ], - [ 1, Moves.ASTONISH ], - [ 5, Moves.GUST ], - [ 11, Moves.HAZE ], - [ 15, Moves.WING_ATTACK ], - [ 21, Moves.NIGHT_SHADE ], - [ 25, Moves.ASSURANCE ], - [ 31, Moves.TAUNT ], - [ 35, Moves.MEAN_LOOK ], - [ 40, Moves.FOUL_PLAY ], - [ 50, Moves.SUCKER_PUNCH ], - [ 55, Moves.TORMENT ], - [ 60, Moves.QUASH ], - ], - [Species.SLOWKING]: [ - [ RELEARN_MOVE, Moves.FUTURE_SIGHT ], - [ RELEARN_MOVE, Moves.CHILLY_RECEPTION ], - [ 1, Moves.POWER_GEM ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.SWAGGER ], - [ 1, Moves.TACKLE ], - [ 1, Moves.CURSE ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 9, Moves.YAWN ], - [ 12, Moves.CONFUSION ], - [ 15, Moves.DISABLE ], - [ 18, Moves.WATER_PULSE ], - [ 21, Moves.HEADBUTT ], - [ 24, Moves.ZEN_HEADBUTT ], // Previous Stage Move, Galar Slowking Level - [ 27, Moves.AMNESIA ], - [ 30, Moves.SURF ], - [ 33, Moves.SLACK_OFF ], - [ 36, Moves.PSYCHIC ], - [ 39, Moves.PSYCH_UP ], - [ 42, Moves.RAIN_DANCE ], - [ 45, Moves.HEAL_PULSE ], - ], - [Species.MISDREAVUS]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.PSYWAVE ], - [ 10, Moves.ASTONISH ], - [ 14, Moves.CONFUSE_RAY ], - [ 19, Moves.MEAN_LOOK ], - [ 23, Moves.HEX ], - [ 28, Moves.PSYBEAM ], - [ 32, Moves.PAIN_SPLIT ], - [ 37, Moves.PAYBACK ], - [ 41, Moves.SHADOW_BALL ], - [ 46, Moves.PERISH_SONG ], - [ 50, Moves.POWER_GEM ], - ], - [Species.UNOWN]: [ - [ 1, Moves.HIDDEN_POWER ], - ], - [Species.WOBBUFFET]: [ - [ EVOLVE_MOVE, Moves.COUNTER ], - [ EVOLVE_MOVE, Moves.DESTINY_BOND ], - [ EVOLVE_MOVE, Moves.SAFEGUARD ], - [ EVOLVE_MOVE, Moves.MIRROR_COAT ], - [ 1, Moves.COUNTER ], - [ 1, Moves.DESTINY_BOND ], - [ 1, Moves.SAFEGUARD ], - [ 1, Moves.MIRROR_COAT ], - [ 1, Moves.AMNESIA ], - [ 1, Moves.SPLASH ], - [ 1, Moves.CHARM ], - [ 1, Moves.ENCORE ], - ], - [Species.GIRAFARIG]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.POWER_SWAP ], - [ 1, Moves.GUARD_SWAP ], - [ 5, Moves.CONFUSION ], - [ 10, Moves.ASSURANCE ], - [ 14, Moves.STOMP ], - [ 19, Moves.PSYBEAM ], - [ 23, Moves.AGILITY ], - [ 28, Moves.DOUBLE_HIT ], - [ 32, Moves.TWIN_BEAM ], - [ 37, Moves.CRUNCH ], - [ 41, Moves.BATON_PASS ], - [ 46, Moves.NASTY_PLOT ], - [ 50, Moves.PSYCHIC ], - ], - [Species.PINECO]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.PROTECT ], - [ 6, Moves.SELF_DESTRUCT ], - [ 9, Moves.BUG_BITE ], - [ 12, Moves.TAKE_DOWN ], - [ 17, Moves.RAPID_SPIN ], - [ 20, Moves.ROLLOUT ], - [ 23, Moves.CURSE ], - [ 28, Moves.SPIKES ], - [ 31, Moves.PAYBACK ], - [ 34, Moves.EXPLOSION ], - [ 39, Moves.IRON_DEFENSE ], - [ 42, Moves.GYRO_BALL ], - [ 45, Moves.DOUBLE_EDGE ], - ], - [Species.FORRETRESS]: [ - [ EVOLVE_MOVE, Moves.HEAVY_SLAM ], - [ 1, Moves.TACKLE ], - [ 1, Moves.SELF_DESTRUCT ], - [ 1, Moves.PROTECT ], - [ 1, Moves.ZAP_CANNON ], - [ 1, Moves.TOXIC_SPIKES ], - [ 1, Moves.MAGNET_RISE ], - [ 1, Moves.BUG_BITE ], - [ 1, Moves.MIRROR_SHOT ], - [ 12, Moves.TAKE_DOWN ], - [ 17, Moves.RAPID_SPIN ], - [ 20, Moves.ROLLOUT ], - [ 23, Moves.CURSE ], - [ 28, Moves.SPIKES ], - [ 32, Moves.PAYBACK ], - [ 36, Moves.EXPLOSION ], - [ 42, Moves.IRON_DEFENSE ], - [ 46, Moves.GYRO_BALL ], - [ 50, Moves.DOUBLE_EDGE ], - ], - [Species.DUNSPARCE]: [ - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.FLAIL ], - [ 1, Moves.TACKLE ], // Custom - [ 4, Moves.MUD_SLAP ], - [ 8, Moves.ROLLOUT ], - [ 12, Moves.GLARE ], - [ 16, Moves.SCREECH ], - [ 20, Moves.ANCIENT_POWER ], - [ 24, Moves.DRILL_RUN ], - [ 28, Moves.YAWN ], - [ 32, Moves.HYPER_DRILL ], - [ 36, Moves.ROOST ], - [ 40, Moves.DRAGON_RUSH ], - [ 44, Moves.COIL ], - [ 48, Moves.DOUBLE_EDGE ], - [ 52, Moves.ENDEAVOR ], - ], - [Species.GLIGAR]: [ - [ 1, Moves.POISON_STING ], - [ 4, Moves.SAND_ATTACK ], - [ 7, Moves.HARDEN ], - [ 10, Moves.KNOCK_OFF ], - [ 13, Moves.QUICK_ATTACK ], - [ 16, Moves.FURY_CUTTER ], - [ 19, Moves.POISON_TAIL ], - [ 22, Moves.ACROBATICS ], - [ 27, Moves.SLASH ], - [ 30, Moves.U_TURN ], - [ 35, Moves.SCREECH ], - [ 40, Moves.X_SCISSOR ], - [ 45, Moves.CRABHAMMER ], - [ 50, Moves.SWORDS_DANCE ], - ], - [Species.STEELIX]: [ - [ 1, Moves.BIND ], - [ 1, Moves.TACKLE ], - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.HARDEN ], - [ 1, Moves.MUD_SPORT ], - [ 1, Moves.CRUNCH ], - [ 1, Moves.ROCK_POLISH ], - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.FIRE_FANG ], - [ 4, Moves.SMACK_DOWN ], - [ 8, Moves.AUTOTOMIZE ], - [ 12, Moves.DRAGON_BREATH ], - [ 16, Moves.CURSE ], - [ 20, Moves.ROCK_SLIDE ], - [ 22, Moves.GYRO_BALL ], // Custom from USUM - [ 24, Moves.SCREECH ], - [ 28, Moves.SAND_TOMB ], - [ 32, Moves.STEALTH_ROCK ], - [ 36, Moves.SLAM ], - [ 40, Moves.SANDSTORM ], - [ 44, Moves.DIG ], - [ 48, Moves.IRON_TAIL ], - [ 52, Moves.STONE_EDGE ], - [ 56, Moves.DOUBLE_EDGE ], - [ 60, Moves.MAGNET_RISE ], - ], - [Species.SNUBBULL]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.SCARY_FACE ], - [ 1, Moves.CHARM ], - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.FIRE_FANG ], - [ 7, Moves.BITE ], - [ 13, Moves.LICK ], - [ 19, Moves.HEADBUTT ], - [ 25, Moves.ROAR ], - [ 31, Moves.LAST_RESORT ], - [ 37, Moves.PLAY_ROUGH ], - [ 43, Moves.PAYBACK ], - [ 49, Moves.CRUNCH ], - ], - [Species.GRANBULL]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.SCARY_FACE ], - [ 1, Moves.OUTRAGE ], - [ 1, Moves.CHARM ], - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.FIRE_FANG ], - [ 7, Moves.BITE ], - [ 13, Moves.LICK ], - [ 19, Moves.HEADBUTT ], - [ 27, Moves.ROAR ], - [ 35, Moves.LAST_RESORT ], - [ 43, Moves.PLAY_ROUGH ], - [ 51, Moves.PAYBACK ], - [ 59, Moves.CRUNCH ], - ], - [Species.QWILFISH]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.POISON_STING ], - [ 4, Moves.HARDEN ], - [ 8, Moves.WATER_GUN ], - [ 12, Moves.FELL_STINGER ], - [ 16, Moves.MINIMIZE ], - [ 20, Moves.SPIKES ], - [ 24, Moves.BRINE ], - [ 28, Moves.POISON_JAB ], - [ 32, Moves.PIN_MISSILE ], - [ 36, Moves.TOXIC_SPIKES ], - [ 40, Moves.STOCKPILE ], - [ 40, Moves.SPIT_UP ], - [ 44, Moves.TOXIC ], - [ 48, Moves.AQUA_TAIL ], - [ 52, Moves.ACUPRESSURE ], - [ 56, Moves.DESTINY_BOND ], - ], - [Species.SCIZOR]: [ - [ EVOLVE_MOVE, Moves.BULLET_PUNCH ], - [ 1, Moves.WING_ATTACK ], - [ 1, Moves.LEER ], - [ 1, Moves.AGILITY ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.FALSE_SWIPE ], - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.AIR_SLASH ], - [ 12, Moves.METAL_CLAW ], - [ 16, Moves.DOUBLE_TEAM ], - [ 20, Moves.DOUBLE_HIT ], - [ 24, Moves.SLASH ], - [ 28, Moves.FOCUS_ENERGY ], - [ 30, Moves.STEEL_WING ], // Custom - [ 32, Moves.IRON_DEFENSE ], - [ 36, Moves.IRON_HEAD ], - [ 40, Moves.X_SCISSOR ], - [ 44, Moves.SWORDS_DANCE ], - ], - [Species.SHUCKLE]: [ - [ 1, Moves.WRAP ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.BIDE ], - [ 1, Moves.CONSTRICT ], - [ 5, Moves.ROLLOUT ], - [ 10, Moves.STRUGGLE_BUG ], - [ 15, Moves.ROCK_THROW ], - [ 20, Moves.SAFEGUARD ], - [ 25, Moves.REST ], - [ 30, Moves.BUG_BITE ], - [ 35, Moves.GUARD_SPLIT ], - [ 35, Moves.POWER_SPLIT ], - [ 40, Moves.ROCK_SLIDE ], - [ 45, Moves.GASTRO_ACID ], - [ 50, Moves.STICKY_WEB ], - [ 55, Moves.POWER_TRICK ], - [ 60, Moves.STONE_EDGE ], - [ 65, Moves.SHELL_SMASH ], - ], - [Species.HERACROSS]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.ARM_THRUST ], - [ 5, Moves.FURY_ATTACK ], - [ 10, Moves.ENDURE ], - [ 15, Moves.AERIAL_ACE ], - [ 20, Moves.HORN_ATTACK ], - [ 25, Moves.COUNTER ], - [ 30, Moves.BRICK_BREAK ], - [ 35, Moves.PIN_MISSILE ], - [ 40, Moves.THROAT_CHOP ], - [ 45, Moves.THRASH ], - [ 50, Moves.SWORDS_DANCE ], - [ 55, Moves.MEGAHORN ], - [ 60, Moves.CLOSE_COMBAT ], - ], - [Species.SNEASEL]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 6, Moves.TAUNT ], - [ 12, Moves.QUICK_ATTACK ], - [ 18, Moves.METAL_CLAW ], - [ 24, Moves.ICY_WIND ], - [ 30, Moves.FURY_SWIPES ], - [ 36, Moves.HONE_CLAWS ], - [ 42, Moves.BEAT_UP ], - [ 48, Moves.AGILITY ], - [ 54, Moves.SCREECH ], - [ 60, Moves.SLASH ], - ], - [Species.TEDDIURSA]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LICK ], - [ 1, Moves.COVET ], - [ 1, Moves.FLING ], - [ 1, Moves.BABY_DOLL_EYES ], - [ 8, Moves.FURY_SWIPES ], - [ 13, Moves.PAYBACK ], - [ 17, Moves.SWEET_SCENT ], - [ 22, Moves.SLASH ], - [ 25, Moves.PLAY_NICE ], - [ 29, Moves.PLAY_ROUGH ], - [ 33, Moves.CHARM ], - [ 37, Moves.REST ], - [ 37, Moves.SNORE ], - [ 41, Moves.THRASH ], - ], - [Species.URSARING]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.LICK ], - [ 1, Moves.COVET ], - [ 1, Moves.FLING ], // Previous Stage Move - [ 1, Moves.BABY_DOLL_EYES ], // Previous Stage Move - [ 1, Moves.FAKE_TEARS ], - [ 1, Moves.CHARM ], // Previous Stage Move - [ 8, Moves.FURY_SWIPES ], - [ 13, Moves.PAYBACK ], - [ 17, Moves.SWEET_SCENT ], - [ 22, Moves.SLASH ], - [ 25, Moves.PLAY_NICE ], - [ 29, Moves.PLAY_ROUGH ], - [ 35, Moves.SCARY_FACE ], - [ 41, Moves.REST ], - [ 41, Moves.SNORE ], - [ 48, Moves.HIGH_HORSEPOWER ], - [ 56, Moves.THRASH ], - [ 64, Moves.HAMMER_ARM ], - ], - [Species.SLUGMA]: [ - [ 1, Moves.SMOG ], - [ 1, Moves.YAWN ], - [ 5, Moves.EMBER ], // Custom, Moved from Level 6 to 5 - [ 8, Moves.ROCK_THROW ], - [ 13, Moves.HARDEN ], - [ 20, Moves.CLEAR_SMOG ], - [ 22, Moves.ANCIENT_POWER ], - [ 27, Moves.INCINERATE ], - [ 29, Moves.ROCK_SLIDE ], - [ 34, Moves.LAVA_PLUME ], - [ 36, Moves.AMNESIA ], - [ 41, Moves.BODY_SLAM ], - [ 43, Moves.RECOVER ], - [ 48, Moves.FLAMETHROWER ], - [ 50, Moves.EARTH_POWER ], - ], - [Species.MAGCARGO]: [ - [ EVOLVE_MOVE, Moves.SHELL_SMASH ], - [ 1, Moves.EMBER ], - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.SMOG ], - [ 1, Moves.YAWN ], - [ 1, Moves.EARTH_POWER ], - [ 13, Moves.HARDEN ], - [ 20, Moves.CLEAR_SMOG ], - [ 22, Moves.ANCIENT_POWER ], - [ 27, Moves.INCINERATE ], - [ 29, Moves.ROCK_SLIDE ], - [ 34, Moves.LAVA_PLUME ], - [ 36, Moves.AMNESIA ], - [ 43, Moves.BODY_SLAM ], - [ 47, Moves.RECOVER ], - [ 54, Moves.FLAMETHROWER ], - ], - [Species.SWINUB]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.ODOR_SLEUTH ], - [ 5, Moves.POWDER_SNOW ], - [ 10, Moves.FLAIL ], - [ 15, Moves.ICE_SHARD ], - [ 20, Moves.MIST ], - [ 25, Moves.ENDURE ], - [ 30, Moves.ICY_WIND ], - [ 35, Moves.AMNESIA ], - [ 40, Moves.TAKE_DOWN ], - [ 45, Moves.EARTHQUAKE ], - [ 50, Moves.BLIZZARD ], - ], - [Species.PILOSWINE]: [ - [ EVOLVE_MOVE, Moves.ICE_FANG ], - [ 1, Moves.TACKLE ], - [ 1, Moves.FLAIL ], - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.ODOR_SLEUTH ], - [ 1, Moves.ANCIENT_POWER ], - [ 15, Moves.ICE_SHARD ], - [ 20, Moves.MIST ], - [ 25, Moves.ENDURE ], - [ 30, Moves.ICY_WIND ], - [ 37, Moves.AMNESIA ], - [ 44, Moves.TAKE_DOWN ], - [ 51, Moves.EARTHQUAKE ], - [ 58, Moves.BLIZZARD ], - [ 65, Moves.THRASH ], - ], - [Species.CORSOLA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 5, Moves.WATER_GUN ], - [ 10, Moves.AQUA_RING ], - [ 15, Moves.ENDURE ], - [ 20, Moves.ANCIENT_POWER ], - [ 25, Moves.BUBBLE_BEAM ], - [ 30, Moves.FLAIL ], - [ 35, Moves.LIFE_DEW ], - [ 40, Moves.POWER_GEM ], - [ 45, Moves.EARTH_POWER ], - [ 50, Moves.RECOVER ], - [ 55, Moves.MIRROR_COAT ], - ], - [Species.REMORAID]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.HELPING_HAND ], - [ 4, Moves.WATER_PULSE ], - [ 8, Moves.FOCUS_ENERGY ], - [ 12, Moves.PSYBEAM ], - [ 16, Moves.AURORA_BEAM ], - [ 20, Moves.BUBBLE_BEAM ], - [ 24, Moves.LOCK_ON ], - [ 28, Moves.BULLET_SEED ], - [ 32, Moves.ICE_BEAM ], - [ 36, Moves.HYDRO_PUMP ], - [ 40, Moves.SOAK ], - [ 44, Moves.HYPER_BEAM ], - ], - [Species.OCTILLERY]: [ - [ EVOLVE_MOVE, Moves.OCTAZOOKA ], - [ 1, Moves.WRAP ], - [ 1, Moves.CONSTRICT ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.ROCK_BLAST ], - [ 1, Moves.WATER_PULSE ], - [ 1, Moves.GUNK_SHOT ], - [ 12, Moves.PSYBEAM ], - [ 16, Moves.AURORA_BEAM ], - [ 20, Moves.BUBBLE_BEAM ], - [ 24, Moves.LOCK_ON ], - [ 30, Moves.BULLET_SEED ], - [ 36, Moves.ICE_BEAM ], - [ 42, Moves.HYDRO_PUMP ], - [ 48, Moves.SOAK ], - [ 54, Moves.HYPER_BEAM ], - ], - [Species.DELIBIRD]: [ // Given a custom level up learnset - [ 1, Moves.PRESENT ], - [ 1, Moves.METRONOME ], - [ 5, Moves.FAKE_OUT ], - [ 5, Moves.POWDER_SNOW ], - [ 6, Moves.MIST ], - [ 10, Moves.ICE_SHARD ], - [ 15, Moves.AERIAL_ACE ], - [ 20, Moves.ICY_WIND ], - [ 25, Moves.DRILL_PECK ], - [ 30, Moves.ICE_PUNCH ], - [ 35, Moves.HAZE ], - [ 40, Moves.AIR_SLASH ], - [ 45, Moves.TAILWIND ], - [ 50, Moves.SNOWSCAPE ], - [ 55, Moves.BLIZZARD ], - [ 60, Moves.BRAVE_BIRD ], - ], - [Species.MANTINE]: [ - [ 1, Moves.WING_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.PSYBEAM ], - [ 1, Moves.SIGNAL_BEAM ], - [ 1, Moves.BULLET_SEED ], - [ 1, Moves.ROOST ], - [ 12, Moves.WATER_PULSE ], - [ 16, Moves.WIDE_GUARD ], - [ 20, Moves.AGILITY ], - [ 24, Moves.BUBBLE_BEAM ], - [ 28, Moves.HEADBUTT ], - [ 32, Moves.AIR_SLASH ], - [ 36, Moves.AQUA_RING ], - [ 40, Moves.BOUNCE ], - [ 44, Moves.TAKE_DOWN ], - [ 48, Moves.HYDRO_PUMP ], - ], - [Species.SKARMORY]: [ - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 4, Moves.SAND_ATTACK ], - [ 8, Moves.FURY_ATTACK ], - [ 12, Moves.METAL_CLAW ], - [ 16, Moves.AGILITY ], - [ 20, Moves.WING_ATTACK ], - [ 24, Moves.SLASH ], - [ 28, Moves.STEEL_WING ], - [ 32, Moves.PAYBACK ], - [ 36, Moves.DRILL_PECK ], - [ 40, Moves.METAL_SOUND ], - [ 44, Moves.SPIKES ], - [ 48, Moves.IRON_DEFENSE ], - [ 52, Moves.BRAVE_BIRD ], - ], - [Species.HOUNDOUR]: [ - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 4, Moves.HOWL ], - [ 8, Moves.SMOG ], - [ 13, Moves.ROAR ], - [ 16, Moves.BITE ], - [ 20, Moves.INCINERATE ], - [ 25, Moves.BEAT_UP ], - [ 28, Moves.FIRE_FANG ], - [ 32, Moves.TORMENT ], - [ 37, Moves.COMEUPPANCE ], - [ 40, Moves.FOUL_PLAY ], - [ 44, Moves.FLAMETHROWER ], - [ 49, Moves.CRUNCH ], - [ 52, Moves.NASTY_PLOT ], - [ 56, Moves.INFERNO ], - ], - [Species.HOUNDOOM]: [ - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 1, Moves.SMOG ], - [ 1, Moves.HOWL ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.THUNDER_FANG ], - [ 13, Moves.ROAR ], - [ 16, Moves.BITE ], - [ 20, Moves.INCINERATE ], - [ 26, Moves.BEAT_UP ], - [ 30, Moves.FIRE_FANG ], - [ 35, Moves.TORMENT ], - [ 41, Moves.COMEUPPANCE ], - [ 45, Moves.FOUL_PLAY ], - [ 50, Moves.FLAMETHROWER ], - [ 56, Moves.CRUNCH ], - [ 62, Moves.INFERNO ], - ], - [Species.KINGDRA]: [ - [ RELEARN_MOVE, Moves.LASER_FOCUS ], // Previous Stage Move - [ 1, Moves.LEER ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.TWISTER ], - [ 1, Moves.WHIRLPOOL ], - [ 1, Moves.YAWN ], - [ 15, Moves.FOCUS_ENERGY ], - [ 20, Moves.DRAGON_BREATH ], - [ 25, Moves.BUBBLE_BEAM ], - [ 30, Moves.AGILITY ], - [ 37, Moves.WATER_PULSE ], - [ 44, Moves.DRAGON_PULSE ], - [ 51, Moves.HYDRO_PUMP ], - [ 58, Moves.DRAGON_DANCE ], - [ 65, Moves.RAIN_DANCE ], - [ 72, Moves.WAVE_CRASH ], - ], - [Species.PHANPY]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.ODOR_SLEUTH ], - [ 6, Moves.FLAIL ], - [ 10, Moves.ROLLOUT ], - [ 15, Moves.BULLDOZE ], - [ 19, Moves.ENDURE ], - [ 24, Moves.SLAM ], - [ 28, Moves.TAKE_DOWN ], - [ 33, Moves.CHARM ], - [ 37, Moves.LAST_RESORT ], - [ 42, Moves.DOUBLE_EDGE ], - ], - [Species.DONPHAN]: [ - [ EVOLVE_MOVE, Moves.FURY_ATTACK ], - [ 1, Moves.TACKLE ], // Previous Stage Move - [ 1, Moves.GROWL ], - [ 1, Moves.HORN_ATTACK ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.ODOR_SLEUTH ], // Previous Stage Move - [ 1, Moves.FLAIL ], // Previous Stage Move - [ 1, Moves.ENDURE ], // Previous Stage Move - [ 1, Moves.TAKE_DOWN ], // Previous Stage Move - [ 1, Moves.CHARM ], // Previous Stage Move - [ 1, Moves.LAST_RESORT ], // Previous Stage Move - [ 1, Moves.DOUBLE_EDGE ], // Previous Stage Move - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.FIRE_FANG ], - [ 1, Moves.BULLDOZE ], - [ 6, Moves.RAPID_SPIN ], - [ 10, Moves.ROLLOUT ], - [ 15, Moves.ASSURANCE ], - [ 19, Moves.KNOCK_OFF ], - [ 24, Moves.SLAM ], - [ 30, Moves.STOMPING_TANTRUM ], - [ 37, Moves.SCARY_FACE ], - [ 43, Moves.EARTHQUAKE ], - [ 50, Moves.GIGA_IMPACT ], - ], - [Species.PORYGON2]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.CONVERSION ], - [ 1, Moves.RECYCLE ], - [ 1, Moves.MAGNET_RISE ], - [ 1, Moves.MAGIC_COAT ], // Previous Stage Move - [ 15, Moves.THUNDER_SHOCK ], - [ 20, Moves.PSYBEAM ], - [ 25, Moves.CONVERSION_2 ], - [ 30, Moves.AGILITY ], - [ 35, Moves.RECOVER ], - [ 40, Moves.DISCHARGE ], - [ 45, Moves.TRI_ATTACK ], - [ 50, Moves.LOCK_ON ], - [ 55, Moves.ZAP_CANNON ], - [ 60, Moves.HYPER_BEAM ], - ], - [Species.STANTLER]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.ME_FIRST ], - [ 3, Moves.LEER ], - [ 7, Moves.ASTONISH ], - [ 10, Moves.HYPNOSIS ], - [ 13, Moves.STOMP ], - [ 16, Moves.SAND_ATTACK ], - [ 21, Moves.TAKE_DOWN ], - [ 23, Moves.CONFUSE_RAY ], - [ 25, Moves.PSYSHIELD_BASH ], - [ 27, Moves.CALM_MIND ], - [ 32, Moves.ROLE_PLAY ], - [ 37, Moves.ZEN_HEADBUTT ], - [ 49, Moves.IMPRISON ], - [ 55, Moves.DOUBLE_EDGE ], + [SpeciesId.BULBASAUR]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 3, MoveId.VINE_WHIP ], + [ 6, MoveId.GROWTH ], + [ 9, MoveId.LEECH_SEED ], + [ 12, MoveId.RAZOR_LEAF ], + [ 15, MoveId.POISON_POWDER ], + [ 15, MoveId.SLEEP_POWDER ], + [ 18, MoveId.SEED_BOMB ], + [ 21, MoveId.TAKE_DOWN ], + [ 24, MoveId.SWEET_SCENT ], + [ 27, MoveId.SYNTHESIS ], + [ 30, MoveId.WORRY_SEED ], + [ 33, MoveId.POWER_WHIP ], + [ 36, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.IVYSAUR]: [ + [ 1, MoveId.VINE_WHIP ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.GROWTH ], + [ 9, MoveId.LEECH_SEED ], + [ 12, MoveId.RAZOR_LEAF ], + [ 15, MoveId.POISON_POWDER ], + [ 15, MoveId.SLEEP_POWDER ], + [ 20, MoveId.SEED_BOMB ], + [ 25, MoveId.TAKE_DOWN ], + [ 30, MoveId.SWEET_SCENT ], + [ 35, MoveId.SYNTHESIS ], + [ 40, MoveId.WORRY_SEED ], + [ 45, MoveId.POWER_WHIP ], + [ 50, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.VENUSAUR]: [ + [ EVOLVE_MOVE, MoveId.PETAL_BLIZZARD ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.PETAL_DANCE ], + [ 1, MoveId.VINE_WHIP ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 9, MoveId.LEECH_SEED ], + [ 12, MoveId.RAZOR_LEAF ], + [ 15, MoveId.POISON_POWDER ], + [ 15, MoveId.SLEEP_POWDER ], + [ 20, MoveId.SEED_BOMB ], + [ 25, MoveId.TAKE_DOWN ], + [ 30, MoveId.SWEET_SCENT ], + [ 37, MoveId.SYNTHESIS ], + [ 44, MoveId.WORRY_SEED ], + [ 51, MoveId.POWER_WHIP ], + [ 58, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.CHARMANDER]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 4, MoveId.EMBER ], + [ 8, MoveId.SMOKESCREEN ], + [ 12, MoveId.DRAGON_BREATH ], + [ 17, MoveId.FIRE_FANG ], + [ 20, MoveId.SLASH ], + [ 24, MoveId.FLAMETHROWER ], + [ 28, MoveId.SCARY_FACE ], + [ 32, MoveId.FIRE_SPIN ], + [ 36, MoveId.INFERNO ], + [ 40, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.CHARMELEON]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.FIRE_SPIN ], // Previous Stage Move + [ 12, MoveId.DRAGON_BREATH ], + [ 19, MoveId.FIRE_FANG ], + [ 24, MoveId.SLASH ], + [ 30, MoveId.FLAMETHROWER ], + [ 37, MoveId.SCARY_FACE ], + [ 48, MoveId.INFERNO ], + [ 54, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.CHARIZARD]: [ + [ EVOLVE_MOVE, MoveId.AIR_SLASH ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.HEAT_WAVE ], + [ 1, MoveId.DRAGON_CLAW ], + [ 12, MoveId.DRAGON_BREATH ], + [ 19, MoveId.FIRE_FANG ], + [ 24, MoveId.SLASH ], + [ 30, MoveId.FLAMETHROWER ], + [ 39, MoveId.SCARY_FACE ], + [ 46, MoveId.FIRE_SPIN ], + [ 54, MoveId.INFERNO ], + [ 62, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.SQUIRTLE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 3, MoveId.WATER_GUN ], + [ 6, MoveId.WITHDRAW ], + [ 9, MoveId.RAPID_SPIN ], + [ 12, MoveId.BITE ], + [ 15, MoveId.WATER_PULSE ], + [ 18, MoveId.PROTECT ], + [ 21, MoveId.RAIN_DANCE ], + [ 24, MoveId.AQUA_TAIL ], + [ 27, MoveId.SHELL_SMASH ], + [ 30, MoveId.IRON_DEFENSE ], + [ 33, MoveId.HYDRO_PUMP ], + [ 36, MoveId.WAVE_CRASH ], + ], + [SpeciesId.WARTORTLE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.WITHDRAW ], + [ 9, MoveId.RAPID_SPIN ], + [ 12, MoveId.BITE ], + [ 15, MoveId.WATER_PULSE ], + [ 20, MoveId.PROTECT ], + [ 25, MoveId.RAIN_DANCE ], + [ 30, MoveId.AQUA_TAIL ], + [ 35, MoveId.SHELL_SMASH ], + [ 40, MoveId.IRON_DEFENSE ], + [ 45, MoveId.HYDRO_PUMP ], + [ 50, MoveId.WAVE_CRASH ], + ], + [SpeciesId.BLASTOISE]: [ + [ EVOLVE_MOVE, MoveId.FLASH_CANNON ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.WITHDRAW ], + [ 9, MoveId.RAPID_SPIN ], + [ 12, MoveId.BITE ], + [ 15, MoveId.WATER_PULSE ], + [ 20, MoveId.PROTECT ], + [ 25, MoveId.RAIN_DANCE ], + [ 30, MoveId.AQUA_TAIL ], + [ 35, MoveId.SHELL_SMASH ], + [ 42, MoveId.IRON_DEFENSE ], + [ 49, MoveId.HYDRO_PUMP ], + [ 56, MoveId.WAVE_CRASH ], + ], + [SpeciesId.CATERPIE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.STRING_SHOT ], + [ 9, MoveId.BUG_BITE ], + ], + [SpeciesId.METAPOD]: [ + [ EVOLVE_MOVE, MoveId.HARDEN ], + [ RELEARN_MOVE, MoveId.TACKLE ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.STRING_SHOT ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.BUG_BITE ], // Previous Stage Move + [ 1, MoveId.HARDEN ], + ], + [SpeciesId.BUTTERFREE]: [ + [ EVOLVE_MOVE, MoveId.GUST ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.STRING_SHOT ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.BUG_BITE ], + [ 4, MoveId.SUPERSONIC ], + [ 8, MoveId.CONFUSION ], + [ 12, MoveId.POISON_POWDER ], + [ 12, MoveId.STUN_SPORE ], + [ 12, MoveId.SLEEP_POWDER ], + [ 16, MoveId.PSYBEAM ], + [ 20, MoveId.WHIRLWIND ], + [ 24, MoveId.AIR_SLASH ], + [ 28, MoveId.SAFEGUARD ], + [ 32, MoveId.BUG_BUZZ ], + [ 36, MoveId.TAILWIND ], + [ 40, MoveId.RAGE_POWDER ], + [ 44, MoveId.QUIVER_DANCE ], + ], + [SpeciesId.WEEDLE]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.STRING_SHOT ], + [ 9, MoveId.BUG_BITE ], + ], + [SpeciesId.KAKUNA]: [ + [ EVOLVE_MOVE, MoveId.HARDEN ], + [ RELEARN_MOVE, MoveId.POISON_STING ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.STRING_SHOT ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.BUG_BITE ], // Previous Stage Move + [ 1, MoveId.HARDEN ], + ], + [SpeciesId.BEEDRILL]: [ + [ EVOLVE_MOVE, MoveId.TWINEEDLE ], + [ 1, MoveId.POISON_STING ], // Previous Stage Move + [ 1, MoveId.STRING_SHOT ], // Previous Stage Move + [ 1, MoveId.HARDEN ], // Previous Stage Move + [ 1, MoveId.BUG_BITE ], // Previous Stage Move + [ 1, MoveId.FURY_ATTACK ], + [ 11, MoveId.FURY_CUTTER ], + [ 14, MoveId.RAGE ], + [ 17, MoveId.PURSUIT ], + [ 20, MoveId.FOCUS_ENERGY ], + [ 23, MoveId.VENOSHOCK ], + [ 26, MoveId.ASSURANCE ], + [ 29, MoveId.TOXIC_SPIKES ], + [ 32, MoveId.PIN_MISSILE ], + [ 35, MoveId.POISON_JAB ], + [ 38, MoveId.AGILITY ], + [ 41, MoveId.ENDEAVOR ], + [ 44, MoveId.FELL_STINGER ], + ], + [SpeciesId.PIDGEY]: [ + [ 1, MoveId.TACKLE ], + [ 5, MoveId.SAND_ATTACK ], + [ 9, MoveId.GUST ], + [ 13, MoveId.QUICK_ATTACK ], + [ 17, MoveId.WHIRLWIND ], + [ 21, MoveId.TWISTER ], + [ 25, MoveId.FEATHER_DANCE ], + [ 29, MoveId.AGILITY ], + [ 33, MoveId.WING_ATTACK ], + [ 37, MoveId.ROOST ], + [ 41, MoveId.TAILWIND ], + [ 45, MoveId.AERIAL_ACE ], + [ 49, MoveId.AIR_SLASH ], + [ 53, MoveId.HURRICANE ], + ], + [SpeciesId.PIDGEOTTO]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 5, MoveId.SAND_ATTACK ], + [ 9, MoveId.GUST ], + [ 13, MoveId.QUICK_ATTACK ], + [ 17, MoveId.WHIRLWIND ], + [ 22, MoveId.TWISTER ], + [ 27, MoveId.FEATHER_DANCE ], + [ 32, MoveId.AGILITY ], + [ 37, MoveId.WING_ATTACK ], + [ 42, MoveId.ROOST ], + [ 47, MoveId.TAILWIND ], + [ 52, MoveId.AERIAL_ACE ], + [ 57, MoveId.AIR_SLASH ], + [ 62, MoveId.HURRICANE ], + ], + [SpeciesId.PIDGEOT]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.HURRICANE ], + [ 5, MoveId.SAND_ATTACK ], + [ 9, MoveId.GUST ], + [ 17, MoveId.WHIRLWIND ], + [ 22, MoveId.TWISTER ], + [ 27, MoveId.FEATHER_DANCE ], + [ 32, MoveId.AGILITY ], + [ 38, MoveId.WING_ATTACK ], + [ 44, MoveId.ROOST ], + [ 50, MoveId.TAILWIND ], + [ 56, MoveId.AERIAL_ACE ], + [ 62, MoveId.AIR_SLASH ], + [ 68, MoveId.HURRICANE ], + ], + [SpeciesId.RATTATA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 4, MoveId.QUICK_ATTACK ], + [ 7, MoveId.FOCUS_ENERGY ], + [ 10, MoveId.BITE ], + [ 13, MoveId.LASER_FOCUS ], + [ 16, MoveId.TAKE_DOWN ], + [ 19, MoveId.ASSURANCE ], + [ 22, MoveId.CRUNCH ], + [ 25, MoveId.SUCKER_PUNCH ], + [ 28, MoveId.SUPER_FANG ], + [ 31, MoveId.DOUBLE_EDGE ], + [ 34, MoveId.ENDEAVOR ], + ], + [SpeciesId.RATICATE]: [ + [ EVOLVE_MOVE, MoveId.SCARY_FACE ], + [ 1, MoveId.SWORDS_DANCE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 10, MoveId.BITE ], + [ 13, MoveId.LASER_FOCUS ], + [ 16, MoveId.TAKE_DOWN ], + [ 19, MoveId.ASSURANCE ], + [ 24, MoveId.CRUNCH ], + [ 29, MoveId.SUCKER_PUNCH ], + [ 34, MoveId.SUPER_FANG ], + [ 39, MoveId.DOUBLE_EDGE ], + [ 44, MoveId.ENDEAVOR ], + ], + [SpeciesId.SPEAROW]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.PECK ], + [ 4, MoveId.LEER ], + [ 8, MoveId.ASSURANCE ], + [ 11, MoveId.FURY_ATTACK ], + [ 15, MoveId.AERIAL_ACE ], + [ 18, MoveId.WING_ATTACK ], + [ 22, MoveId.TAKE_DOWN ], + [ 25, MoveId.AGILITY ], + [ 29, MoveId.FOCUS_ENERGY ], + [ 32, MoveId.ROOST ], + [ 36, MoveId.DRILL_PECK ], + ], + [SpeciesId.FEAROW]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.PECK ], + [ 1, MoveId.ASSURANCE ], + [ 1, MoveId.PLUCK ], + [ 1, MoveId.DRILL_RUN ], + [ 1, MoveId.PURSUIT ], + [ 4, MoveId.LEER ], + [ 8, MoveId.ASSURANCE ], + [ 11, MoveId.FURY_ATTACK ], + [ 15, MoveId.AERIAL_ACE ], + [ 18, MoveId.WING_ATTACK ], + [ 23, MoveId.TAKE_DOWN ], + [ 27, MoveId.AGILITY ], + [ 32, MoveId.FOCUS_ENERGY ], + [ 36, MoveId.ROOST ], + [ 41, MoveId.DRILL_PECK ], + ], + [SpeciesId.EKANS]: [ + [ 1, MoveId.WRAP ], + [ 1, MoveId.LEER ], + [ 4, MoveId.POISON_STING ], + [ 9, MoveId.BITE ], + [ 12, MoveId.GLARE ], + [ 17, MoveId.SCREECH ], + [ 20, MoveId.ACID ], + [ 25, MoveId.SWALLOW ], + [ 25, MoveId.STOCKPILE ], + [ 25, MoveId.SPIT_UP ], + [ 28, MoveId.ACID_SPRAY ], + [ 33, MoveId.SLUDGE_BOMB ], + [ 36, MoveId.GASTRO_ACID ], + [ 38, MoveId.BELCH ], + [ 41, MoveId.HAZE ], + [ 44, MoveId.COIL ], + [ 49, MoveId.GUNK_SHOT ], + ], + [SpeciesId.ARBOK]: [ + [ EVOLVE_MOVE, MoveId.CRUNCH ], + [ 1, MoveId.WRAP ], + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.LEER ], + [ 1, MoveId.BITE ], + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.FIRE_FANG ], + [ 12, MoveId.GLARE ], + [ 17, MoveId.SCREECH ], + [ 20, MoveId.ACID ], + [ 27, MoveId.STOCKPILE ], + [ 27, MoveId.SPIT_UP ], + [ 27, MoveId.SWALLOW ], + [ 32, MoveId.ACID_SPRAY ], + [ 39, MoveId.SLUDGE_BOMB ], + [ 44, MoveId.GASTRO_ACID ], + [ 48, MoveId.BELCH ], + [ 51, MoveId.HAZE ], + [ 56, MoveId.COIL ], + [ 63, MoveId.GUNK_SHOT ], + ], + [SpeciesId.PIKACHU]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.NUZZLE ], + [ 4, MoveId.THUNDER_WAVE ], + [ 8, MoveId.DOUBLE_TEAM ], + [ 12, MoveId.ELECTRO_BALL ], + [ 16, MoveId.FEINT ], + [ 20, MoveId.SPARK ], + [ 24, MoveId.AGILITY ], + [ 28, MoveId.IRON_TAIL ], + [ 32, MoveId.DISCHARGE ], + [ 36, MoveId.THUNDERBOLT ], + [ 40, MoveId.LIGHT_SCREEN ], + [ 44, MoveId.THUNDER ], + [ 48, MoveId.PIKA_PAPOW ], + ], + [SpeciesId.RAICHU]: [ + [ EVOLVE_MOVE, MoveId.ZIPPY_ZAP ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.THUNDER ], + [ 1, MoveId.AGILITY ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.LIGHT_SCREEN ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.SPARK ], + [ 1, MoveId.IRON_TAIL ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.DISCHARGE ], + [ 1, MoveId.ELECTRO_BALL ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.NUZZLE ], + [ 1, MoveId.THUNDER_PUNCH ], + [ 5, MoveId.THUNDERBOLT ], + [ 50, MoveId.PIKA_PAPOW ], + ], + [SpeciesId.SANDSHREW]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.DEFENSE_CURL ], + [ 3, MoveId.POISON_STING ], + [ 6, MoveId.SAND_ATTACK ], + [ 9, MoveId.ROLLOUT ], + [ 12, MoveId.FURY_CUTTER ], + [ 15, MoveId.RAPID_SPIN ], + [ 18, MoveId.BULLDOZE ], + [ 21, MoveId.SWIFT ], + [ 24, MoveId.FURY_SWIPES ], + [ 27, MoveId.AGILITY ], + [ 30, MoveId.SLASH ], + [ 33, MoveId.DIG ], + [ 36, MoveId.GYRO_BALL ], + [ 39, MoveId.SWORDS_DANCE ], + [ 42, MoveId.SANDSTORM ], + [ 45, MoveId.EARTHQUAKE ], + ], + [SpeciesId.SANDSLASH]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.CRUSH_CLAW ], + [ 1, MoveId.AGILITY ], // Previous Stage Move + [ 9, MoveId.ROLLOUT ], + [ 12, MoveId.FURY_CUTTER ], + [ 15, MoveId.RAPID_SPIN ], + [ 18, MoveId.BULLDOZE ], + [ 21, MoveId.SWIFT ], + [ 26, MoveId.FURY_SWIPES ], + [ 31, MoveId.SAND_TOMB ], + [ 36, MoveId.SLASH ], + [ 41, MoveId.DIG ], + [ 46, MoveId.GYRO_BALL ], + [ 51, MoveId.SWORDS_DANCE ], + [ 56, MoveId.SANDSTORM ], + [ 61, MoveId.EARTHQUAKE ], + ], + [SpeciesId.NIDORAN_F]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.GROWL ], + [ 5, MoveId.SCRATCH ], + [ 10, MoveId.TAIL_WHIP ], + [ 15, MoveId.FURY_SWIPES ], + [ 20, MoveId.TOXIC_SPIKES ], + [ 25, MoveId.DOUBLE_KICK ], + [ 30, MoveId.BITE ], + [ 35, MoveId.HELPING_HAND ], + [ 40, MoveId.TOXIC ], + [ 45, MoveId.FLATTER ], + [ 50, MoveId.CRUNCH ], + [ 55, MoveId.EARTH_POWER ], + ], + [SpeciesId.NIDORINA]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.GROWL ], + [ 15, MoveId.FURY_SWIPES ], + [ 22, MoveId.TOXIC_SPIKES ], + [ 29, MoveId.DOUBLE_KICK ], + [ 36, MoveId.BITE ], + [ 43, MoveId.HELPING_HAND ], + [ 50, MoveId.TOXIC ], + [ 57, MoveId.FLATTER ], + [ 64, MoveId.CRUNCH ], + [ 71, MoveId.EARTH_POWER ], + ], + [SpeciesId.NIDOQUEEN]: [ + [ EVOLVE_MOVE, MoveId.SUPERPOWER ], + [ 1, MoveId.SLUDGE_WAVE ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.DOUBLE_KICK ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.BITE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.TOXIC ], + [ 1, MoveId.FURY_SWIPES ], + [ 1, MoveId.CRUNCH ], + [ 1, MoveId.FLATTER ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.TOXIC_SPIKES ], + [ 1, MoveId.EARTH_POWER ], + ], + [SpeciesId.NIDORAN_M]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.LEER ], + [ 5, MoveId.PECK ], + [ 10, MoveId.FOCUS_ENERGY ], + [ 15, MoveId.FURY_ATTACK ], + [ 20, MoveId.TOXIC_SPIKES ], + [ 25, MoveId.DOUBLE_KICK ], + [ 30, MoveId.HORN_ATTACK ], + [ 35, MoveId.HELPING_HAND ], + [ 40, MoveId.TOXIC ], + [ 45, MoveId.FLATTER ], + [ 50, MoveId.POISON_JAB ], + [ 55, MoveId.EARTH_POWER ], + ], + [SpeciesId.NIDORINO]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 15, MoveId.FURY_ATTACK ], + [ 22, MoveId.TOXIC_SPIKES ], + [ 29, MoveId.DOUBLE_KICK ], + [ 36, MoveId.HORN_ATTACK ], + [ 43, MoveId.HELPING_HAND ], + [ 50, MoveId.TOXIC ], + [ 57, MoveId.FLATTER ], + [ 64, MoveId.POISON_JAB ], + [ 71, MoveId.EARTH_POWER ], + ], + [SpeciesId.NIDOKING]: [ + [ EVOLVE_MOVE, MoveId.MEGAHORN ], + [ 1, MoveId.SLUDGE_WAVE ], + [ 1, MoveId.DOUBLE_KICK ], + [ 1, MoveId.HORN_ATTACK ], + [ 1, MoveId.FURY_ATTACK ], + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 1, MoveId.TOXIC ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.FLATTER ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.TOXIC_SPIKES ], + [ 1, MoveId.POISON_JAB ], + [ 1, MoveId.EARTH_POWER ], + ], + [SpeciesId.CLEFAIRY]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.SING ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.DISARMING_VOICE ], + [ 1, MoveId.SPOTLIGHT ], + [ 4, MoveId.STORED_POWER ], + [ 8, MoveId.ENCORE ], + [ 12, MoveId.AFTER_YOU ], + [ 16, MoveId.LIFE_DEW ], + [ 20, MoveId.METRONOME ], + [ 24, MoveId.MOONLIGHT ], + [ 28, MoveId.GRAVITY ], + [ 32, MoveId.METEOR_MASH ], + [ 36, MoveId.FOLLOW_ME ], + [ 40, MoveId.COSMIC_POWER ], + [ 44, MoveId.MOONBLAST ], + [ 48, MoveId.HEALING_WISH ], + ], + [SpeciesId.CLEFABLE]: [ + [ RELEARN_MOVE, MoveId.POUND ], + [ RELEARN_MOVE, MoveId.GROWL ], + [ RELEARN_MOVE, MoveId.SING ], + [ RELEARN_MOVE, MoveId.DEFENSE_CURL ], + [ RELEARN_MOVE, MoveId.SPLASH ], + [ RELEARN_MOVE, MoveId.SWEET_KISS ], + [ RELEARN_MOVE, MoveId.CHARM ], + [ RELEARN_MOVE, MoveId.ENCORE ], + [ RELEARN_MOVE, MoveId.MOONLIGHT ], + [ RELEARN_MOVE, MoveId.FOLLOW_ME ], + [ RELEARN_MOVE, MoveId.COSMIC_POWER ], + [ RELEARN_MOVE, MoveId.GRAVITY ], + [ RELEARN_MOVE, MoveId.HEALING_WISH ], + [ RELEARN_MOVE, MoveId.COPYCAT ], + [ RELEARN_MOVE, MoveId.AFTER_YOU ], + [ RELEARN_MOVE, MoveId.STORED_POWER ], + [ RELEARN_MOVE, MoveId.DISARMING_VOICE ], + [ 1, MoveId.METRONOME ], + [ 1, MoveId.METEOR_MASH ], + [ 1, MoveId.MOONBLAST ], + [ 1, MoveId.LIFE_DEW ], + [ 1, MoveId.SPOTLIGHT ], + ], + [SpeciesId.VULPIX]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.EMBER ], + [ 4, MoveId.DISABLE ], + [ 8, MoveId.QUICK_ATTACK ], + [ 12, MoveId.SPITE ], + [ 16, MoveId.INCINERATE ], + [ 20, MoveId.CONFUSE_RAY ], + [ 24, MoveId.WILL_O_WISP ], + [ 28, MoveId.EXTRASENSORY ], + [ 32, MoveId.FLAMETHROWER ], + [ 36, MoveId.IMPRISON ], + [ 40, MoveId.FIRE_SPIN ], + [ 44, MoveId.SAFEGUARD ], + [ 48, MoveId.INFERNO ], + [ 52, MoveId.FIRE_BLAST ], + ], + [SpeciesId.NINETALES]: [ + [ RELEARN_MOVE, MoveId.DISABLE ], + [ RELEARN_MOVE, MoveId.EMBER ], + [ RELEARN_MOVE, MoveId.FIRE_SPIN ], + [ RELEARN_MOVE, MoveId.CONFUSE_RAY ], + [ RELEARN_MOVE, MoveId.FIRE_BLAST ], + [ RELEARN_MOVE, MoveId.SPITE ], + [ RELEARN_MOVE, MoveId.SAFEGUARD ], + [ RELEARN_MOVE, MoveId.WILL_O_WISP ], + [ RELEARN_MOVE, MoveId.IMPRISON ], + [ RELEARN_MOVE, MoveId.EXTRASENSORY ], + [ RELEARN_MOVE, MoveId.NASTY_PLOT ], + [ RELEARN_MOVE, MoveId.INCINERATE ], + [ RELEARN_MOVE, MoveId.INFERNO ], + [ 1, MoveId.FLAMETHROWER ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.QUICK_ATTACK ], + ], + [SpeciesId.JIGGLYPUFF]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.SING ], + [ 1, MoveId.DISABLE ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.DISARMING_VOICE ], + [ 4, MoveId.ECHOED_VOICE ], + [ 8, MoveId.COVET ], + [ 12, MoveId.STOCKPILE ], + [ 12, MoveId.SPIT_UP ], + [ 12, MoveId.SWALLOW ], + [ 16, MoveId.ROUND ], + [ 20, MoveId.REST ], + [ 24, MoveId.BODY_SLAM ], + [ 28, MoveId.MIMIC ], + [ 32, MoveId.GYRO_BALL ], + [ 36, MoveId.HYPER_VOICE ], + [ 44, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.WIGGLYTUFF]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.BODY_SLAM ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.SING ], + [ 1, MoveId.DISABLE ], + [ 1, MoveId.MIMIC ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.REST ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.STOCKPILE ], + [ 1, MoveId.SPIT_UP ], + [ 1, MoveId.SWALLOW ], + [ 1, MoveId.HYPER_VOICE ], + [ 1, MoveId.COVET ], + [ 1, MoveId.GYRO_BALL ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.ROUND ], + [ 1, MoveId.ECHOED_VOICE ], + [ 1, MoveId.DISARMING_VOICE ], + [ 5, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.ZUBAT]: [ + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.ABSORB ], + [ 5, MoveId.ASTONISH ], + [ 10, MoveId.MEAN_LOOK ], + [ 15, MoveId.POISON_FANG ], + [ 20, MoveId.QUICK_GUARD ], + [ 25, MoveId.AIR_CUTTER ], + [ 30, MoveId.BITE ], + [ 35, MoveId.HAZE ], + [ 40, MoveId.VENOSHOCK ], + [ 45, MoveId.CONFUSE_RAY ], + [ 50, MoveId.AIR_SLASH ], + [ 55, MoveId.LEECH_LIFE ], + ], + [SpeciesId.GOLBAT]: [ + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.SCREECH ], + [ 1, MoveId.MEAN_LOOK ], + [ 1, MoveId.ASTONISH ], + [ 15, MoveId.POISON_FANG ], + [ 20, MoveId.QUICK_GUARD ], + [ 27, MoveId.AIR_CUTTER ], + [ 34, MoveId.BITE ], + [ 41, MoveId.HAZE ], + [ 48, MoveId.VENOSHOCK ], + [ 55, MoveId.CONFUSE_RAY ], + [ 62, MoveId.AIR_SLASH ], + [ 69, MoveId.LEECH_LIFE ], + ], + [SpeciesId.ODDISH]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.GROWTH ], + [ 4, MoveId.ACID ], + [ 8, MoveId.SWEET_SCENT ], + [ 12, MoveId.MEGA_DRAIN ], + [ 14, MoveId.POISON_POWDER ], + [ 16, MoveId.STUN_SPORE ], + [ 18, MoveId.SLEEP_POWDER ], + [ 20, MoveId.GIGA_DRAIN ], + [ 24, MoveId.TOXIC ], + [ 28, MoveId.MOONBLAST ], + [ 32, MoveId.GRASSY_TERRAIN ], + [ 36, MoveId.MOONLIGHT ], + [ 40, MoveId.PETAL_DANCE ], + ], + [SpeciesId.GLOOM]: [ + [ 1, MoveId.ACID ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.SWEET_SCENT ], + [ 12, MoveId.MEGA_DRAIN ], + [ 14, MoveId.POISON_POWDER ], + [ 16, MoveId.STUN_SPORE ], + [ 18, MoveId.SLEEP_POWDER ], + [ 20, MoveId.GIGA_DRAIN ], + [ 26, MoveId.TOXIC ], + [ 32, MoveId.MOONBLAST ], + [ 38, MoveId.GRASSY_TERRAIN ], + [ 44, MoveId.MOONLIGHT ], + [ 50, MoveId.PETAL_DANCE ], + ], + [SpeciesId.VILEPLUME]: [ + [ EVOLVE_MOVE, MoveId.PETAL_BLIZZARD ], + [ 1, MoveId.ACID ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.MEGA_DRAIN ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.POISON_POWDER ], + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.SLEEP_POWDER ], + [ 1, MoveId.PETAL_DANCE ], + [ 1, MoveId.TOXIC ], + [ 1, MoveId.GIGA_DRAIN ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.MOONLIGHT ], + [ 1, MoveId.AROMATHERAPY ], + [ 1, MoveId.GRASSY_TERRAIN ], + [ 1, MoveId.MOONBLAST ], + ], + [SpeciesId.PARAS]: [ + [ 1, MoveId.SCRATCH ], + [ 6, MoveId.POISON_POWDER ], + [ 6, MoveId.STUN_SPORE ], + [ 11, MoveId.ABSORB ], + [ 17, MoveId.FURY_CUTTER ], + [ 22, MoveId.SPORE ], + [ 27, MoveId.SLASH ], + [ 33, MoveId.GROWTH ], + [ 38, MoveId.GIGA_DRAIN ], + [ 43, MoveId.AROMATHERAPY ], + [ 49, MoveId.RAGE_POWDER ], + [ 54, MoveId.X_SCISSOR ], + ], + [SpeciesId.PARASECT]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.POISON_POWDER ], + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.CROSS_POISON ], + [ 6, MoveId.POISON_POWDER ], + [ 6, MoveId.STUN_SPORE ], + [ 11, MoveId.ABSORB ], + [ 17, MoveId.FURY_CUTTER ], + [ 22, MoveId.SPORE ], + [ 29, MoveId.SLASH ], + [ 37, MoveId.GROWTH ], + [ 44, MoveId.GIGA_DRAIN ], + [ 51, MoveId.AROMATHERAPY ], + [ 59, MoveId.RAGE_POWDER ], + [ 66, MoveId.X_SCISSOR ], + ], + [SpeciesId.VENONAT]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DISABLE ], + [ 5, MoveId.SUPERSONIC ], + [ 11, MoveId.CONFUSION ], + [ 13, MoveId.POISON_POWDER ], + [ 17, MoveId.PSYBEAM ], + [ 23, MoveId.STUN_SPORE ], + [ 25, MoveId.BUG_BUZZ ], + [ 29, MoveId.SLEEP_POWDER ], + [ 35, MoveId.LEECH_LIFE ], + [ 37, MoveId.ZEN_HEADBUTT ], + [ 41, MoveId.POISON_FANG ], + [ 47, MoveId.PSYCHIC ], + ], + [SpeciesId.VENOMOTH]: [ + [ EVOLVE_MOVE, MoveId.AIR_SLASH ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.DISABLE ], + [ 1, MoveId.QUIVER_DANCE ], + [ 1, MoveId.SILVER_WIND ], + [ 11, MoveId.CONFUSION ], + [ 13, MoveId.POISON_POWDER ], + [ 17, MoveId.PSYBEAM ], + [ 23, MoveId.STUN_SPORE ], + [ 25, MoveId.BUG_BUZZ ], + [ 29, MoveId.SLEEP_POWDER ], + [ 37, MoveId.LEECH_LIFE ], + [ 41, MoveId.ZEN_HEADBUTT ], + [ 47, MoveId.POISON_FANG ], + [ 55, MoveId.PSYCHIC ], + ], + [SpeciesId.DIGLETT]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.SAND_ATTACK ], + [ 4, MoveId.GROWL ], + [ 8, MoveId.ASTONISH ], + [ 12, MoveId.MUD_SLAP ], + [ 16, MoveId.BULLDOZE ], + [ 20, MoveId.SUCKER_PUNCH ], + [ 24, MoveId.SLASH ], + [ 28, MoveId.SANDSTORM ], + [ 32, MoveId.DIG ], + [ 36, MoveId.EARTH_POWER ], + [ 40, MoveId.EARTHQUAKE ], + [ 44, MoveId.FISSURE ], + ], + [SpeciesId.DUGTRIO]: [ + [ EVOLVE_MOVE, MoveId.SAND_TOMB ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.TRI_ATTACK ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.NIGHT_SLASH ], + [ 1, MoveId.ROTOTILLER ], + [ 12, MoveId.MUD_SLAP ], + [ 16, MoveId.BULLDOZE ], + [ 20, MoveId.SUCKER_PUNCH ], + [ 24, MoveId.SLASH ], + [ 30, MoveId.SANDSTORM ], + [ 36, MoveId.DIG ], + [ 42, MoveId.EARTH_POWER ], + [ 48, MoveId.EARTHQUAKE ], + [ 54, MoveId.FISSURE ], + ], + [SpeciesId.MEOWTH]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.FAKE_OUT ], + [ 4, MoveId.FEINT ], + [ 8, MoveId.SCRATCH ], + [ 12, MoveId.PAY_DAY ], + [ 16, MoveId.BITE ], + [ 20, MoveId.TAUNT ], + [ 24, MoveId.ASSURANCE ], + [ 29, MoveId.FURY_SWIPES ], + [ 32, MoveId.SCREECH ], + [ 36, MoveId.SLASH ], + [ 40, MoveId.NASTY_PLOT ], + [ 44, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.PERSIAN]: [ + [ EVOLVE_MOVE, MoveId.POWER_GEM ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.SWITCHEROO ], + [ 12, MoveId.PAY_DAY ], + [ 16, MoveId.BITE ], + [ 20, MoveId.TAUNT ], + [ 24, MoveId.ASSURANCE ], + [ 31, MoveId.FURY_SWIPES ], + [ 36, MoveId.SCREECH ], + [ 42, MoveId.SLASH ], + [ 48, MoveId.NASTY_PLOT ], + [ 54, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.PSYDUCK]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_SPORT ], + [ 3, MoveId.WATER_GUN ], + [ 6, MoveId.CONFUSION ], + [ 9, MoveId.FURY_SWIPES ], + [ 12, MoveId.WATER_PULSE ], + [ 15, MoveId.DISABLE ], + [ 18, MoveId.ZEN_HEADBUTT ], + [ 21, MoveId.SCREECH ], + [ 24, MoveId.AQUA_TAIL ], + [ 27, MoveId.SOAK ], + [ 30, MoveId.PSYCH_UP ], + [ 34, MoveId.AMNESIA ], + [ 39, MoveId.WONDER_ROOM ], + ], + [SpeciesId.GOLDUCK]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.AQUA_JET ], + [ 1, MoveId.WATER_SPORT ], + [ 1, MoveId.ME_FIRST ], + [ 9, MoveId.FURY_SWIPES ], + [ 12, MoveId.WATER_PULSE ], + [ 15, MoveId.DISABLE ], + [ 18, MoveId.ZEN_HEADBUTT ], + [ 21, MoveId.SCREECH ], + [ 24, MoveId.AQUA_TAIL ], + [ 27, MoveId.SOAK ], + [ 30, MoveId.PSYCH_UP ], + [ 36, MoveId.AMNESIA ], + [ 40, MoveId.HYDRO_PUMP ], + [ 45, MoveId.WONDER_ROOM ], + ], + [SpeciesId.MANKEY]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.COVET ], + [ 5, MoveId.FURY_SWIPES ], + [ 8, MoveId.LOW_KICK ], + [ 12, MoveId.SEISMIC_TOSS ], + [ 17, MoveId.SWAGGER ], + [ 22, MoveId.CROSS_CHOP ], + [ 26, MoveId.ASSURANCE ], + [ 29, MoveId.THRASH ], + [ 33, MoveId.CLOSE_COMBAT ], + [ 36, MoveId.SCREECH ], + [ 40, MoveId.STOMPING_TANTRUM ], + [ 44, MoveId.OUTRAGE ], + [ 48, MoveId.FINAL_GAMBIT ], + ], + [SpeciesId.PRIMEAPE]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.COVET ], // Previous Stage Move + [ 1, MoveId.FLING ], + [ 5, MoveId.FURY_SWIPES ], + [ 8, MoveId.LOW_KICK ], + [ 15, MoveId.SEISMIC_TOSS ], + [ 17, MoveId.SWAGGER ], + [ 22, MoveId.CROSS_CHOP ], + [ 26, MoveId.ASSURANCE ], + [ 30, MoveId.THRASH ], + [ 35, MoveId.RAGE_FIST ], + [ 39, MoveId.CLOSE_COMBAT ], + [ 44, MoveId.SCREECH ], + [ 48, MoveId.STOMPING_TANTRUM ], + [ 53, MoveId.OUTRAGE ], + [ 57, MoveId.FINAL_GAMBIT ], + ], + [SpeciesId.GROWLITHE]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 4, MoveId.HOWL ], + [ 8, MoveId.BITE ], + [ 12, MoveId.FLAME_WHEEL ], + [ 16, MoveId.HELPING_HAND ], + [ 20, MoveId.AGILITY ], + [ 24, MoveId.FIRE_FANG ], + [ 28, MoveId.RETALIATE ], + [ 32, MoveId.CRUNCH ], + [ 36, MoveId.TAKE_DOWN ], + [ 40, MoveId.FLAMETHROWER ], + [ 44, MoveId.ROAR ], + [ 48, MoveId.PLAY_ROUGH ], + [ 52, MoveId.REVERSAL ], + [ 56, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.ARCANINE]: [ + [ EVOLVE_MOVE, MoveId.EXTREME_SPEED ], + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.LEER ], + [ 1, MoveId.BITE ], + [ 1, MoveId.ROAR ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.AGILITY ], + [ 1, MoveId.FLAME_WHEEL ], + [ 1, MoveId.REVERSAL ], + [ 1, MoveId.CRUNCH ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.ODOR_SLEUTH ], + [ 1, MoveId.HOWL ], + [ 1, MoveId.FLARE_BLITZ ], + [ 1, MoveId.FIRE_FANG ], + [ 1, MoveId.RETALIATE ], + [ 1, MoveId.PLAY_ROUGH ], + [ 5, MoveId.FLAMETHROWER ], + ], + [SpeciesId.POLIWAG]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.HYPNOSIS ], + [ 1, MoveId.WATER_SPORT ], + [ 6, MoveId.POUND ], + [ 12, MoveId.MUD_SHOT ], + [ 18, MoveId.BUBBLE_BEAM ], + [ 24, MoveId.RAIN_DANCE ], + [ 30, MoveId.BODY_SLAM ], + [ 36, MoveId.EARTH_POWER ], + [ 42, MoveId.HYDRO_PUMP ], + [ 48, MoveId.BELLY_DRUM ], + [ 54, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.POLIWHIRL]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.HYPNOSIS ], + [ 1, MoveId.WATER_SPORT ], + [ 1, MoveId.MUD_SHOT ], + [ 18, MoveId.BUBBLE_BEAM ], + [ 24, MoveId.RAIN_DANCE ], + [ 32, MoveId.BODY_SLAM ], + [ 40, MoveId.EARTH_POWER ], + [ 48, MoveId.HYDRO_PUMP ], + [ 56, MoveId.BELLY_DRUM ], + [ 66, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.POLIWRATH]: [ + [ EVOLVE_MOVE, MoveId.DYNAMIC_PUNCH ], + [ RELEARN_MOVE, MoveId.POUND ], + [ RELEARN_MOVE, MoveId.DOUBLE_EDGE ], + [ RELEARN_MOVE, MoveId.WATER_GUN ], + [ RELEARN_MOVE, MoveId.HYDRO_PUMP ], + [ RELEARN_MOVE, MoveId.BELLY_DRUM ], + [ RELEARN_MOVE, MoveId.RAIN_DANCE ], + [ RELEARN_MOVE, MoveId.MUD_SHOT ], + [ RELEARN_MOVE, MoveId.EARTH_POWER ], + [ RELEARN_MOVE, MoveId.CIRCLE_THROW ], + [ 1, MoveId.BUBBLE_BEAM ], + [ 1, MoveId.BODY_SLAM ], + [ 1, MoveId.HYPNOSIS ], + [ 1, MoveId.WATER_SPORT ], + ], + [SpeciesId.ABRA]: [ + [ 1, MoveId.TELEPORT ], + [ 1, MoveId.CONFUSION ], // Custom + ], + [SpeciesId.KADABRA]: [ + [ EVOLVE_MOVE, MoveId.PSYBEAM ], // LGPE + [ 1, MoveId.CONFUSION ], // Previous Stage Move, Custom + [ 1, MoveId.DISABLE ], + [ 1, MoveId.TELEPORT ], + [ 1, MoveId.KINESIS ], + [ 10, MoveId.REFLECT ], + [ 15, MoveId.ALLY_SWITCH ], + [ 20, MoveId.PSYCHO_CUT ], + [ 25, MoveId.RECOVER ], + [ 30, MoveId.PSYSHOCK ], + [ 35, MoveId.PSYCHIC ], + [ 40, MoveId.ROLE_PLAY ], + [ 45, MoveId.FUTURE_SIGHT ], + [ 50, MoveId.CALM_MIND ], + ], + [SpeciesId.ALAKAZAM]: [ + [ 1, MoveId.DISABLE ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.TELEPORT ], + [ 1, MoveId.KINESIS ], + [ 5, MoveId.PSYBEAM ], + [ 10, MoveId.REFLECT ], + [ 15, MoveId.ALLY_SWITCH ], + [ 20, MoveId.PSYCHO_CUT ], + [ 25, MoveId.RECOVER ], + [ 30, MoveId.PSYSHOCK ], + [ 35, MoveId.PSYCHIC ], + [ 40, MoveId.ROLE_PLAY ], + [ 45, MoveId.FUTURE_SIGHT ], + [ 50, MoveId.CALM_MIND ], + ], + [SpeciesId.MACHOP]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.LOW_KICK ], + [ 4, MoveId.FOCUS_ENERGY ], + [ 8, MoveId.REVENGE ], + [ 12, MoveId.LOW_SWEEP ], + [ 16, MoveId.KNOCK_OFF ], + [ 20, MoveId.SCARY_FACE ], + [ 24, MoveId.VITAL_THROW ], + [ 29, MoveId.STRENGTH ], + [ 32, MoveId.DUAL_CHOP ], + [ 36, MoveId.BULK_UP ], + [ 40, MoveId.SEISMIC_TOSS ], + [ 44, MoveId.DYNAMIC_PUNCH ], + [ 48, MoveId.CROSS_CHOP ], + [ 52, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.MACHOKE]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.LOW_KICK ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.REVENGE ], + [ 1, MoveId.KARATE_CHOP ], + [ 12, MoveId.LOW_SWEEP ], + [ 16, MoveId.KNOCK_OFF ], + [ 20, MoveId.SCARY_FACE ], + [ 24, MoveId.VITAL_THROW ], + [ 31, MoveId.STRENGTH ], + [ 36, MoveId.DUAL_CHOP ], + [ 42, MoveId.BULK_UP ], + [ 48, MoveId.SEISMIC_TOSS ], + [ 54, MoveId.DYNAMIC_PUNCH ], + [ 60, MoveId.CROSS_CHOP ], + [ 66, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.MACHAMP]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.LOW_KICK ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.REVENGE ], + [ 1, MoveId.WIDE_GUARD ], + [ 1, MoveId.KARATE_CHOP ], + [ 12, MoveId.LOW_SWEEP ], + [ 16, MoveId.KNOCK_OFF ], + [ 20, MoveId.SCARY_FACE ], + [ 24, MoveId.VITAL_THROW ], + [ 31, MoveId.STRENGTH ], + [ 36, MoveId.DUAL_CHOP ], + [ 42, MoveId.BULK_UP ], + [ 48, MoveId.SEISMIC_TOSS ], + [ 54, MoveId.DYNAMIC_PUNCH ], + [ 60, MoveId.CROSS_CHOP ], + [ 66, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.BELLSPROUT]: [ + [ 1, MoveId.VINE_WHIP ], + [ 7, MoveId.GROWTH ], + [ 11, MoveId.WRAP ], + [ 13, MoveId.SLEEP_POWDER ], + [ 15, MoveId.POISON_POWDER ], + [ 17, MoveId.STUN_SPORE ], + [ 23, MoveId.ACID ], + [ 27, MoveId.KNOCK_OFF ], + [ 29, MoveId.SWEET_SCENT ], + [ 35, MoveId.GASTRO_ACID ], + [ 39, MoveId.RAZOR_LEAF ], + [ 41, MoveId.POISON_JAB ], + [ 47, MoveId.SLAM ], + [ 52, MoveId.POWER_WHIP ], + ], + [SpeciesId.WEEPINBELL]: [ + [ 1, MoveId.VINE_WHIP ], + [ 1, MoveId.WRAP ], + [ 1, MoveId.GROWTH ], + [ 13, MoveId.SLEEP_POWDER ], + [ 15, MoveId.POISON_POWDER ], + [ 17, MoveId.STUN_SPORE ], + [ 24, MoveId.ACID ], + [ 29, MoveId.KNOCK_OFF ], + [ 32, MoveId.SWEET_SCENT ], + [ 39, MoveId.GASTRO_ACID ], + [ 44, MoveId.RAZOR_LEAF ], + [ 47, MoveId.POISON_JAB ], + [ 54, MoveId.SLAM ], + [ 58, MoveId.POWER_WHIP ], + ], + [SpeciesId.VICTREEBEL]: [ + [ EVOLVE_MOVE, MoveId.LEAF_STORM ], + [ RELEARN_MOVE, MoveId.STOCKPILE ], + [ RELEARN_MOVE, MoveId.SWALLOW ], + [ RELEARN_MOVE, MoveId.SPIT_UP ], + [ RELEARN_MOVE, MoveId.WRAP ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.GROWTH ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.ACID ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.KNOCK_OFF ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.GASTRO_ACID ], + [ RELEARN_MOVE, MoveId.POISON_JAB ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.SLAM ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.POWER_WHIP ], + [ 1, MoveId.VINE_WHIP ], + [ 1, MoveId.SLEEP_POWDER ], + [ 1, MoveId.POISON_POWDER ], // Previous Stage Move + [ 1, MoveId.STUN_SPORE ], // Previous Stage Move + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.RAZOR_LEAF ], + [ 44, MoveId.LEAF_BLADE ], + ], + [SpeciesId.TENTACOOL]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.WATER_GUN ], + [ 4, MoveId.ACID ], + [ 8, MoveId.WRAP ], + [ 12, MoveId.SUPERSONIC ], + [ 16, MoveId.WATER_PULSE ], + [ 20, MoveId.SCREECH ], + [ 24, MoveId.BUBBLE_BEAM ], + [ 28, MoveId.HEX ], + [ 32, MoveId.ACID_ARMOR ], + [ 36, MoveId.POISON_JAB ], + [ 40, MoveId.SURF ], + [ 44, MoveId.SLUDGE_WAVE ], + [ 48, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.TENTACRUEL]: [ + [ 1, MoveId.WRAP ], + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.ACID ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.REFLECT_TYPE ], + [ 1, MoveId.WRING_OUT ], + [ 12, MoveId.SUPERSONIC ], + [ 16, MoveId.WATER_PULSE ], + [ 20, MoveId.SCREECH ], + [ 24, MoveId.BUBBLE_BEAM ], + [ 28, MoveId.HEX ], + [ 34, MoveId.ACID_ARMOR ], + [ 40, MoveId.POISON_JAB ], + [ 46, MoveId.SURF ], + [ 52, MoveId.SLUDGE_WAVE ], + [ 58, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.GEODUDE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DEFENSE_CURL ], + [ 6, MoveId.ROCK_POLISH ], + [ 10, MoveId.ROLLOUT ], + [ 12, MoveId.BULLDOZE ], + [ 16, MoveId.ROCK_THROW ], + [ 18, MoveId.SMACK_DOWN ], + [ 24, MoveId.SELF_DESTRUCT ], + [ 28, MoveId.STEALTH_ROCK ], + [ 30, MoveId.ROCK_BLAST ], + [ 34, MoveId.EARTHQUAKE ], + [ 36, MoveId.EXPLOSION ], + [ 40, MoveId.DOUBLE_EDGE ], + [ 42, MoveId.STONE_EDGE ], + ], + [SpeciesId.GRAVELER]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.ROCK_POLISH ], + [ 10, MoveId.ROLLOUT ], + [ 12, MoveId.BULLDOZE ], + [ 16, MoveId.ROCK_THROW ], + [ 18, MoveId.SMACK_DOWN ], + [ 24, MoveId.SELF_DESTRUCT ], + [ 30, MoveId.STEALTH_ROCK ], + [ 34, MoveId.ROCK_BLAST ], + [ 40, MoveId.EARTHQUAKE ], + [ 44, MoveId.EXPLOSION ], + [ 50, MoveId.DOUBLE_EDGE ], + [ 54, MoveId.STONE_EDGE ], + ], + [SpeciesId.GOLEM]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.ROCK_POLISH ], + [ 1, MoveId.ROLLOUT ], // Previous Stage Move + [ 1, MoveId.HEAVY_SLAM ], + [ 16, MoveId.ROCK_THROW ], + [ 18, MoveId.SMACK_DOWN ], + [ 22, MoveId.BULLDOZE ], + [ 24, MoveId.SELF_DESTRUCT ], + [ 30, MoveId.STEALTH_ROCK ], + [ 34, MoveId.ROCK_BLAST ], + [ 40, MoveId.EARTHQUAKE ], + [ 44, MoveId.EXPLOSION ], + [ 50, MoveId.DOUBLE_EDGE ], + [ 54, MoveId.STONE_EDGE ], + ], + [SpeciesId.PONYTA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 5, MoveId.TAIL_WHIP ], + [ 10, MoveId.EMBER ], + [ 15, MoveId.FLAME_CHARGE ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.FLAME_WHEEL ], + [ 30, MoveId.STOMP ], + [ 35, MoveId.FIRE_SPIN ], + [ 41, MoveId.TAKE_DOWN ], + [ 45, MoveId.INFERNO ], + [ 50, MoveId.FIRE_BLAST ], + [ 55, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.RAPIDASH]: [ + [ EVOLVE_MOVE, MoveId.SMART_STRIKE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.MEGAHORN ], + [ 1, MoveId.POISON_JAB ], + [ 15, MoveId.FLAME_CHARGE ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.FLAME_WHEEL ], + [ 30, MoveId.STOMP ], + [ 35, MoveId.FIRE_SPIN ], + [ 43, MoveId.TAKE_DOWN ], + [ 49, MoveId.INFERNO ], + [ 56, MoveId.FIRE_BLAST ], + [ 63, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.SLOWPOKE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.CURSE ], + [ 3, MoveId.GROWL ], + [ 6, MoveId.WATER_GUN ], + [ 9, MoveId.YAWN ], + [ 12, MoveId.CONFUSION ], + [ 15, MoveId.DISABLE ], + [ 18, MoveId.WATER_PULSE ], + [ 21, MoveId.HEADBUTT ], + [ 24, MoveId.ZEN_HEADBUTT ], + [ 27, MoveId.AMNESIA ], + [ 30, MoveId.SURF ], + [ 33, MoveId.SLACK_OFF ], + [ 36, MoveId.PSYCHIC ], + [ 39, MoveId.PSYCH_UP ], + [ 42, MoveId.RAIN_DANCE ], + [ 45, MoveId.HEAL_PULSE ], + ], + [SpeciesId.SLOWBRO]: [ + [ RELEARN_MOVE, MoveId.FUTURE_SIGHT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.CURSE ], + [ 9, MoveId.YAWN ], + [ 12, MoveId.CONFUSION ], + [ 15, MoveId.DISABLE ], + [ 18, MoveId.WATER_PULSE ], + [ 21, MoveId.HEADBUTT ], + [ 24, MoveId.ZEN_HEADBUTT ], + [ 27, MoveId.AMNESIA ], + [ 30, MoveId.SURF ], + [ 33, MoveId.SLACK_OFF ], + [ 36, MoveId.PSYCHIC ], + [ 41, MoveId.PSYCH_UP ], + [ 46, MoveId.RAIN_DANCE ], + [ 51, MoveId.HEAL_PULSE ], + ], + [SpeciesId.MAGNEMITE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 4, MoveId.SUPERSONIC ], + [ 8, MoveId.THUNDER_WAVE ], + [ 12, MoveId.ELECTRO_BALL ], + [ 16, MoveId.GYRO_BALL ], + [ 20, MoveId.SPARK ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.MAGNET_RISE ], + [ 32, MoveId.FLASH_CANNON ], + [ 36, MoveId.DISCHARGE ], + [ 40, MoveId.METAL_SOUND ], + [ 44, MoveId.LIGHT_SCREEN ], + [ 48, MoveId.LOCK_ON ], + [ 52, MoveId.ZAP_CANNON ], + ], + [SpeciesId.MAGNETON]: [ + [ EVOLVE_MOVE, MoveId.TRI_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.ELECTRIC_TERRAIN ], + [ 12, MoveId.ELECTRO_BALL ], + [ 16, MoveId.GYRO_BALL ], + [ 20, MoveId.SPARK ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.MAGNET_RISE ], + [ 34, MoveId.FLASH_CANNON ], + [ 40, MoveId.DISCHARGE ], + [ 46, MoveId.METAL_SOUND ], + [ 52, MoveId.LIGHT_SCREEN ], + [ 58, MoveId.LOCK_ON ], + [ 64, MoveId.ZAP_CANNON ], + ], + [SpeciesId.FARFETCHD]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.PECK ], + [ 5, MoveId.LEER ], + [ 10, MoveId.FURY_CUTTER ], + [ 15, MoveId.CUT ], + [ 20, MoveId.AERIAL_ACE ], + [ 25, MoveId.AIR_CUTTER ], + [ 30, MoveId.KNOCK_OFF ], + [ 35, MoveId.FALSE_SWIPE ], + [ 40, MoveId.SLASH ], + [ 45, MoveId.SWORDS_DANCE ], + [ 50, MoveId.AIR_SLASH ], + [ 55, MoveId.LEAF_BLADE ], + [ 60, MoveId.AGILITY ], + [ 65, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.DODUO]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.PECK ], + [ 5, MoveId.QUICK_ATTACK ], + [ 9, MoveId.FURY_ATTACK ], + [ 14, MoveId.PLUCK ], + [ 19, MoveId.DOUBLE_HIT ], + [ 23, MoveId.AGILITY ], + [ 27, MoveId.UPROAR ], + [ 30, MoveId.ACUPRESSURE ], + [ 33, MoveId.SWORDS_DANCE ], + [ 36, MoveId.DRILL_PECK ], + [ 39, MoveId.ENDEAVOR ], + [ 43, MoveId.THRASH ], + ], + [SpeciesId.DODRIO]: [ + [ EVOLVE_MOVE, MoveId.TRI_ATTACK ], + [ 1, MoveId.TRI_ATTACK ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.PECK ], + [ 5, MoveId.QUICK_ATTACK ], + [ 12, MoveId.FURY_ATTACK ], + [ 15, MoveId.PLUCK ], + [ 19, MoveId.DOUBLE_HIT ], + [ 23, MoveId.AGILITY ], + [ 26, MoveId.UPROAR ], + [ 30, MoveId.ACUPRESSURE ], + [ 34, MoveId.SWORDS_DANCE ], + [ 38, MoveId.DRILL_PECK ], + [ 43, MoveId.ENDEAVOR ], + [ 50, MoveId.THRASH ], + ], + [SpeciesId.SEEL]: [ + [ 1, MoveId.HEADBUTT ], + [ 3, MoveId.GROWL ], + [ 7, MoveId.CHARM ], + [ 11, MoveId.ICY_WIND ], + [ 13, MoveId.ENCORE ], + [ 17, MoveId.ICE_SHARD ], + [ 21, MoveId.REST ], + [ 23, MoveId.AQUA_RING ], + [ 27, MoveId.AURORA_BEAM ], + [ 31, MoveId.AQUA_JET ], + [ 33, MoveId.BRINE ], + [ 37, MoveId.TAKE_DOWN ], + [ 41, MoveId.DIVE ], + [ 43, MoveId.AQUA_TAIL ], + [ 47, MoveId.ICE_BEAM ], + [ 51, MoveId.SAFEGUARD ], + [ 53, MoveId.SNOWSCAPE ], + ], + [SpeciesId.DEWGONG]: [ + [ EVOLVE_MOVE, MoveId.SHEER_COLD ], + [ 1, MoveId.HEADBUTT ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.ICY_WIND ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.SIGNAL_BEAM ], + [ 13, MoveId.ENCORE ], + [ 17, MoveId.ICE_SHARD ], + [ 21, MoveId.REST ], + [ 23, MoveId.AQUA_RING ], + [ 27, MoveId.AURORA_BEAM ], + [ 31, MoveId.AQUA_JET ], + [ 33, MoveId.BRINE ], + [ 39, MoveId.TAKE_DOWN ], + [ 45, MoveId.DIVE ], + [ 49, MoveId.AQUA_TAIL ], + [ 55, MoveId.ICE_BEAM ], + [ 61, MoveId.SAFEGUARD ], + [ 65, MoveId.SNOWSCAPE ], + ], + [SpeciesId.GRIMER]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.POISON_GAS ], + [ 4, MoveId.HARDEN ], + [ 7, MoveId.MUD_SLAP ], + [ 12, MoveId.DISABLE ], + [ 15, MoveId.SLUDGE ], + [ 18, MoveId.MUD_SHOT ], + [ 21, MoveId.MINIMIZE ], + [ 26, MoveId.TOXIC ], + [ 29, MoveId.SLUDGE_BOMB ], + [ 32, MoveId.SLUDGE_WAVE ], + [ 37, MoveId.SCREECH ], + [ 40, MoveId.GUNK_SHOT ], + [ 43, MoveId.ACID_ARMOR ], + [ 46, MoveId.BELCH ], + [ 48, MoveId.MEMENTO ], + ], + [SpeciesId.MUK]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.MUD_SLAP ], + [ 12, MoveId.DISABLE ], + [ 15, MoveId.SLUDGE ], + [ 18, MoveId.MUD_SHOT ], + [ 21, MoveId.MINIMIZE ], + [ 26, MoveId.TOXIC ], + [ 29, MoveId.SLUDGE_BOMB ], + [ 32, MoveId.SLUDGE_WAVE ], + [ 37, MoveId.SCREECH ], + [ 40, MoveId.GUNK_SHOT ], + [ 46, MoveId.ACID_ARMOR ], + [ 52, MoveId.BELCH ], + [ 57, MoveId.MEMENTO ], + ], + [SpeciesId.SHELLDER]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WATER_GUN ], + [ 4, MoveId.WITHDRAW ], + [ 8, MoveId.ICE_SHARD ], + [ 12, MoveId.LEER ], + [ 16, MoveId.WHIRLPOOL ], + [ 20, MoveId.SUPERSONIC ], + [ 24, MoveId.AURORA_BEAM ], + [ 28, MoveId.PROTECT ], + [ 32, MoveId.RAZOR_SHELL ], + [ 36, MoveId.IRON_DEFENSE ], + [ 40, MoveId.ICE_BEAM ], + [ 44, MoveId.SHELL_SMASH ], + [ 48, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.CLOYSTER]: [ + [ EVOLVE_MOVE, MoveId.ICICLE_SPEAR ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.HYDRO_PUMP ], + [ 1, MoveId.ICE_BEAM ], + [ 1, MoveId.AURORA_BEAM ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.SPIKES ], + [ 1, MoveId.WHIRLPOOL ], + [ 1, MoveId.IRON_DEFENSE ], + [ 1, MoveId.TOXIC_SPIKES ], + [ 1, MoveId.ICE_SHARD ], + [ 1, MoveId.SHELL_SMASH ], + [ 1, MoveId.ICICLE_CRASH ], + [ 5, MoveId.RAZOR_SHELL ], + ], + [SpeciesId.GASTLY]: [ + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.LICK ], + [ 1, MoveId.ACID ], // Custom + [ 4, MoveId.HYPNOSIS ], + [ 8, MoveId.MEAN_LOOK ], + [ 12, MoveId.PAYBACK ], + [ 16, MoveId.SPITE ], + [ 20, MoveId.CURSE ], + [ 24, MoveId.HEX ], + [ 28, MoveId.NIGHT_SHADE ], + [ 32, MoveId.SUCKER_PUNCH ], + [ 36, MoveId.DARK_PULSE ], + [ 40, MoveId.SHADOW_BALL ], + [ 44, MoveId.DESTINY_BOND ], + [ 48, MoveId.DREAM_EATER ], + ], + [SpeciesId.HAUNTER]: [ + [ EVOLVE_MOVE, MoveId.SHADOW_PUNCH ], + [ 1, MoveId.HYPNOSIS ], + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.LICK ], + [ 1, MoveId.ACID ], // Previous Stage Move, Custom + [ 1, MoveId.MEAN_LOOK ], + [ 12, MoveId.PAYBACK ], + [ 16, MoveId.SPITE ], + [ 20, MoveId.CURSE ], + [ 24, MoveId.HEX ], + [ 30, MoveId.NIGHT_SHADE ], + [ 36, MoveId.SUCKER_PUNCH ], + [ 42, MoveId.DARK_PULSE ], + [ 48, MoveId.SHADOW_BALL ], + [ 54, MoveId.DESTINY_BOND ], + [ 60, MoveId.DREAM_EATER ], + ], + [SpeciesId.GENGAR]: [ + [ 1, MoveId.HYPNOSIS ], + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.LICK ], + [ 1, MoveId.ACID ], // Previous Stage Move, Custom + [ 1, MoveId.PERISH_SONG ], + [ 1, MoveId.MEAN_LOOK ], + [ 1, MoveId.SHADOW_PUNCH ], + [ 1, MoveId.REFLECT_TYPE ], + [ 12, MoveId.PAYBACK ], + [ 16, MoveId.SPITE ], + [ 20, MoveId.CURSE ], + [ 24, MoveId.HEX ], + [ 30, MoveId.NIGHT_SHADE ], + [ 36, MoveId.SUCKER_PUNCH ], + [ 42, MoveId.DARK_PULSE ], + [ 48, MoveId.SHADOW_BALL ], + [ 54, MoveId.DESTINY_BOND ], + [ 60, MoveId.DREAM_EATER ], + ], + [SpeciesId.ONIX]: [ + [ 1, MoveId.BIND ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.MUD_SPORT ], + [ 4, MoveId.SMACK_DOWN ], + [ 8, MoveId.ROCK_POLISH ], + [ 12, MoveId.DRAGON_BREATH ], + [ 16, MoveId.CURSE ], + [ 20, MoveId.ROCK_SLIDE ], + [ 22, MoveId.GYRO_BALL ], // Custom, from USUM + [ 24, MoveId.SCREECH ], + [ 28, MoveId.SAND_TOMB ], + [ 32, MoveId.STEALTH_ROCK ], + [ 36, MoveId.SLAM ], + [ 40, MoveId.SANDSTORM ], + [ 44, MoveId.DIG ], + [ 48, MoveId.IRON_TAIL ], + [ 52, MoveId.STONE_EDGE ], + [ 56, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.DROWZEE]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.HYPNOSIS ], + [ 5, MoveId.DISABLE ], + [ 9, MoveId.CONFUSION ], + [ 13, MoveId.HEADBUTT ], + [ 17, MoveId.POISON_GAS ], + [ 21, MoveId.PSYBEAM ], + [ 25, MoveId.PSYCH_UP ], + [ 29, MoveId.ZEN_HEADBUTT ], + [ 33, MoveId.SWAGGER ], + [ 37, MoveId.PSYCHIC ], + [ 41, MoveId.NASTY_PLOT ], + [ 45, MoveId.PSYSHOCK ], + [ 49, MoveId.FUTURE_SIGHT ], + ], + [SpeciesId.HYPNO]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.DISABLE ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.HYPNOSIS ], + [ 1, MoveId.SWITCHEROO ], + [ 1, MoveId.NIGHTMARE ], + [ 13, MoveId.HEADBUTT ], + [ 17, MoveId.POISON_GAS ], + [ 21, MoveId.PSYBEAM ], + [ 25, MoveId.PSYCH_UP ], + [ 32, MoveId.ZEN_HEADBUTT ], + [ 37, MoveId.SWAGGER ], + [ 42, MoveId.PSYCHIC ], + [ 47, MoveId.NASTY_PLOT ], + [ 51, MoveId.PSYSHOCK ], + [ 56, MoveId.FUTURE_SIGHT ], + ], + [SpeciesId.KRABBY]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.MUD_SPORT ], + [ 4, MoveId.HARDEN ], + [ 8, MoveId.METAL_CLAW ], + [ 12, MoveId.MUD_SHOT ], + [ 16, MoveId.PROTECT ], + [ 20, MoveId.BUBBLE_BEAM ], + [ 24, MoveId.STOMP ], + [ 29, MoveId.FLAIL ], + [ 32, MoveId.RAZOR_SHELL ], + [ 36, MoveId.SLAM ], + [ 40, MoveId.SWORDS_DANCE ], + [ 44, MoveId.CRABHAMMER ], + [ 48, MoveId.GUILLOTINE ], + ], + [SpeciesId.KINGLER]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.HAMMER_ARM ], + [ 1, MoveId.WIDE_GUARD ], + [ 1, MoveId.MUD_SPORT ], + [ 12, MoveId.MUD_SHOT ], + [ 16, MoveId.PROTECT ], + [ 20, MoveId.BUBBLE_BEAM ], + [ 24, MoveId.STOMP ], + [ 31, MoveId.FLAIL ], + [ 36, MoveId.RAZOR_SHELL ], + [ 42, MoveId.SLAM ], + [ 48, MoveId.SWORDS_DANCE ], + [ 54, MoveId.CRABHAMMER ], + [ 60, MoveId.GUILLOTINE ], + ], + [SpeciesId.VOLTORB]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.CHARGE ], + [ 4, MoveId.THUNDER_SHOCK ], + [ 6, MoveId.EERIE_IMPULSE ], + [ 9, MoveId.SPARK ], + [ 11, MoveId.ROLLOUT ], + [ 13, MoveId.SCREECH ], + [ 16, MoveId.CHARGE_BEAM ], + [ 20, MoveId.SWIFT ], + [ 22, MoveId.ELECTRO_BALL ], + [ 26, MoveId.SELF_DESTRUCT ], + [ 29, MoveId.LIGHT_SCREEN ], + [ 34, MoveId.MAGNET_RISE ], + [ 37, MoveId.DISCHARGE ], + [ 41, MoveId.EXPLOSION ], + [ 46, MoveId.GYRO_BALL ], + [ 50, MoveId.MIRROR_COAT ], + ], + [SpeciesId.ELECTRODE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.CHARGE ], + [ 1, MoveId.EERIE_IMPULSE ], + [ 1, MoveId.MAGNETIC_FLUX ], + [ 9, MoveId.SPARK ], + [ 11, MoveId.ROLLOUT ], + [ 13, MoveId.SCREECH ], + [ 16, MoveId.CHARGE_BEAM ], + [ 20, MoveId.SWIFT ], + [ 22, MoveId.ELECTRO_BALL ], + [ 26, MoveId.SELF_DESTRUCT ], + [ 29, MoveId.LIGHT_SCREEN ], + [ 36, MoveId.MAGNET_RISE ], + [ 41, MoveId.DISCHARGE ], + [ 47, MoveId.EXPLOSION ], + [ 54, MoveId.GYRO_BALL ], + [ 58, MoveId.MIRROR_COAT ], + ], + [SpeciesId.EXEGGCUTE]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.HYPNOSIS ], + [ 1, MoveId.BARRAGE ], + [ 5, MoveId.REFLECT ], + [ 10, MoveId.LEECH_SEED ], + [ 15, MoveId.MEGA_DRAIN ], + [ 20, MoveId.CONFUSION ], + [ 25, MoveId.SYNTHESIS ], + [ 30, MoveId.BULLET_SEED ], + [ 35, MoveId.GIGA_DRAIN ], + [ 40, MoveId.EXTRASENSORY ], + [ 45, MoveId.UPROAR ], + [ 50, MoveId.WORRY_SEED ], + [ 55, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.EXEGGUTOR]: [ + [ EVOLVE_MOVE, MoveId.STOMP ], + [ RELEARN_MOVE, MoveId.GROWTH ], + [ 1, MoveId.BARRAGE ], + [ 1, MoveId.SEED_BOMB ], + [ 1, MoveId.PSYSHOCK ], + [ 1, MoveId.WOOD_HAMMER ], + [ 1, MoveId.LEAF_STORM ], + [ 1, MoveId.MEGA_DRAIN ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.SYNTHESIS ], + [ 1, MoveId.BULLET_SEED ], + [ 1, MoveId.GIGA_DRAIN ], + [ 1, MoveId.EXTRASENSORY ], + [ 1, MoveId.UPROAR ], + [ 1, MoveId.WORRY_SEED ], + [ 1, MoveId.SOLAR_BEAM ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.HYPNOSIS ], + [ 1, MoveId.REFLECT ], + [ 1, MoveId.LEECH_SEED ], + ], + [SpeciesId.CUBONE]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.MUD_SLAP ], + [ 4, MoveId.TAIL_WHIP ], + [ 8, MoveId.FALSE_SWIPE ], + [ 12, MoveId.HEADBUTT ], + [ 16, MoveId.RETALIATE ], + [ 20, MoveId.FLING ], + [ 24, MoveId.STOMPING_TANTRUM ], + [ 29, MoveId.BONE_RUSH ], + [ 32, MoveId.FOCUS_ENERGY ], + [ 36, MoveId.ENDEAVOR ], + [ 40, MoveId.BONEMERANG ], + [ 44, MoveId.THRASH ], + [ 48, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.MAROWAK]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.FALSE_SWIPE ], + [ 1, MoveId.BONE_CLUB ], + [ 12, MoveId.HEADBUTT ], + [ 16, MoveId.RETALIATE ], + [ 20, MoveId.FLING ], + [ 24, MoveId.STOMPING_TANTRUM ], + [ 31, MoveId.BONE_RUSH ], + [ 36, MoveId.FOCUS_ENERGY ], + [ 42, MoveId.ENDEAVOR ], + [ 48, MoveId.BONEMERANG ], + [ 54, MoveId.THRASH ], + [ 60, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.HITMONLEE]: [ + [ EVOLVE_MOVE, MoveId.BRICK_BREAK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.LOW_SWEEP ], + [ 1, MoveId.JUMP_KICK ], + [ 1, MoveId.ROLLING_KICK ], + [ 1, MoveId.MACH_PUNCH ], // Previous Stage Move, Custom + [ 1, MoveId.RAPID_SPIN ], // Previous Stage Move, Custom + [ 4, MoveId.DOUBLE_KICK ], + [ 8, MoveId.LOW_KICK ], + [ 12, MoveId.ENDURE ], + [ 16, MoveId.SUCKER_PUNCH ], + [ 21, MoveId.WIDE_GUARD ], + [ 24, MoveId.BLAZE_KICK ], + [ 28, MoveId.FEINT ], + [ 32, MoveId.MEGA_KICK ], + [ 36, MoveId.CLOSE_COMBAT ], + [ 40, MoveId.REVERSAL ], + [ 44, MoveId.HIGH_JUMP_KICK ], + [ 50, MoveId.AXE_KICK ], + ], + [SpeciesId.HITMONCHAN]: [ + [ EVOLVE_MOVE, MoveId.DRAIN_PUNCH ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.PURSUIT ], + [ 1, MoveId.COMET_PUNCH ], + [ 1, MoveId.LOW_SWEEP ], // Previous Stage Move, Custom + [ 1, MoveId.RAPID_SPIN ], // Previous Stage Move, Custom + [ 4, MoveId.MACH_PUNCH ], + [ 8, MoveId.VACUUM_WAVE ], + [ 12, MoveId.DETECT ], + [ 16, MoveId.BULLET_PUNCH ], + [ 21, MoveId.QUICK_GUARD ], + [ 24, MoveId.THUNDER_PUNCH ], + [ 24, MoveId.ICE_PUNCH ], + [ 24, MoveId.FIRE_PUNCH ], + [ 28, MoveId.AGILITY ], + [ 32, MoveId.MEGA_PUNCH ], + [ 36, MoveId.CLOSE_COMBAT ], + [ 40, MoveId.COUNTER ], + [ 44, MoveId.FOCUS_PUNCH ], + ], + [SpeciesId.LICKITUNG]: [ + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.LICK ], + [ 1, MoveId.TACKLE ], // Custom + [ 6, MoveId.REST ], + [ 12, MoveId.SUPERSONIC ], + [ 18, MoveId.WRAP ], + [ 24, MoveId.DISABLE ], + [ 30, MoveId.STOMP ], + [ 32, MoveId.ROLLOUT ], + [ 36, MoveId.KNOCK_OFF ], + [ 42, MoveId.SCREECH ], + [ 48, MoveId.SLAM ], + [ 54, MoveId.POWER_WHIP ], + [ 60, MoveId.BELLY_DRUM ], + ], + [SpeciesId.KOFFING]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.POISON_GAS ], + [ 4, MoveId.SMOG ], + [ 8, MoveId.SMOKESCREEN ], + [ 12, MoveId.CLEAR_SMOG ], + [ 16, MoveId.ASSURANCE ], + [ 20, MoveId.SLUDGE ], + [ 24, MoveId.HAZE ], + [ 28, MoveId.SELF_DESTRUCT ], + [ 32, MoveId.SLUDGE_BOMB ], + [ 36, MoveId.TOXIC ], + [ 40, MoveId.BELCH ], + [ 44, MoveId.EXPLOSION ], + [ 48, MoveId.MEMENTO ], + [ 52, MoveId.DESTINY_BOND ], + ], + [SpeciesId.WEEZING]: [ + [ EVOLVE_MOVE, MoveId.DOUBLE_HIT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.SMOG ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.HEAT_WAVE ], + [ 12, MoveId.CLEAR_SMOG ], + [ 16, MoveId.ASSURANCE ], + [ 20, MoveId.SLUDGE ], + [ 24, MoveId.HAZE ], + [ 28, MoveId.SELF_DESTRUCT ], + [ 32, MoveId.SLUDGE_BOMB ], + [ 38, MoveId.TOXIC ], + [ 44, MoveId.BELCH ], + [ 50, MoveId.EXPLOSION ], + [ 56, MoveId.MEMENTO ], + [ 62, MoveId.DESTINY_BOND ], + ], + [SpeciesId.RHYHORN]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 5, MoveId.SMACK_DOWN ], + [ 10, MoveId.BULLDOZE ], + [ 15, MoveId.HORN_ATTACK ], + [ 20, MoveId.SCARY_FACE ], + [ 25, MoveId.STOMP ], + [ 30, MoveId.ROCK_BLAST ], + [ 35, MoveId.DRILL_RUN ], + [ 40, MoveId.TAKE_DOWN ], + [ 45, MoveId.EARTHQUAKE ], + [ 50, MoveId.STONE_EDGE ], + [ 55, MoveId.MEGAHORN ], + [ 60, MoveId.HORN_DRILL ], + ], + [SpeciesId.RHYDON]: [ + [ EVOLVE_MOVE, MoveId.HAMMER_ARM ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.SMACK_DOWN ], + [ 1, MoveId.BULLDOZE ], + [ 15, MoveId.HORN_ATTACK ], + [ 20, MoveId.SCARY_FACE ], + [ 25, MoveId.STOMP ], + [ 30, MoveId.ROCK_BLAST ], + [ 35, MoveId.DRILL_RUN ], + [ 40, MoveId.TAKE_DOWN ], + [ 47, MoveId.EARTHQUAKE ], + [ 54, MoveId.STONE_EDGE ], + [ 61, MoveId.MEGAHORN ], + [ 68, MoveId.HORN_DRILL ], + ], + [SpeciesId.CHANSEY]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.COVET ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.DISARMING_VOICE ], + [ 4, MoveId.TAIL_WHIP ], + [ 8, MoveId.ECHOED_VOICE ], + [ 12, MoveId.LIFE_DEW ], + [ 16, MoveId.SING ], + [ 20, MoveId.FLING ], + [ 24, MoveId.TAKE_DOWN ], + [ 28, MoveId.HEAL_PULSE ], + [ 32, MoveId.HELPING_HAND ], + [ 36, MoveId.LIGHT_SCREEN ], + [ 40, MoveId.DOUBLE_EDGE ], + [ 44, MoveId.SOFT_BOILED ], + [ 48, MoveId.LAST_RESORT ], + [ 52, MoveId.HEALING_WISH ], + ], + [SpeciesId.TANGELA]: [ + [ 1, MoveId.BIND ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.CONSTRICT ], + [ 4, MoveId.STUN_SPORE ], + [ 8, MoveId.GROWTH ], + [ 12, MoveId.MEGA_DRAIN ], + [ 16, MoveId.VINE_WHIP ], + [ 20, MoveId.POISON_POWDER ], + [ 24, MoveId.DOUBLE_HIT ], + [ 28, MoveId.KNOCK_OFF ], + [ 32, MoveId.GIGA_DRAIN ], + [ 34, MoveId.ANCIENT_POWER ], + [ 36, MoveId.SLEEP_POWDER ], + [ 40, MoveId.SLAM ], + [ 44, MoveId.TICKLE ], + [ 48, MoveId.POWER_WHIP ], + [ 52, MoveId.INGRAIN ], + [ 56, MoveId.GRASSY_TERRAIN ], + ], + [SpeciesId.KANGASKHAN]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.COMET_PUNCH ], + [ 4, MoveId.GROWL ], + [ 8, MoveId.FAKE_OUT ], + [ 12, MoveId.BITE ], + [ 16, MoveId.STOMP ], + [ 20, MoveId.FOCUS_ENERGY ], + [ 24, MoveId.HEADBUTT ], + [ 28, MoveId.SUCKER_PUNCH ], + [ 32, MoveId.DOUBLE_HIT ], + [ 36, MoveId.CRUNCH ], + [ 40, MoveId.ENDURE ], + [ 44, MoveId.REVERSAL ], + [ 48, MoveId.OUTRAGE ], + [ 52, MoveId.LAST_RESORT ], + ], + [SpeciesId.HORSEA]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.WATER_GUN ], + [ 5, MoveId.SMOKESCREEN ], + [ 10, MoveId.TWISTER ], + [ 15, MoveId.FOCUS_ENERGY ], + [ 20, MoveId.DRAGON_BREATH ], + [ 25, MoveId.BUBBLE_BEAM ], + [ 30, MoveId.AGILITY ], + [ 35, MoveId.LASER_FOCUS ], + [ 40, MoveId.DRAGON_PULSE ], + [ 45, MoveId.HYDRO_PUMP ], + [ 50, MoveId.DRAGON_DANCE ], + [ 55, MoveId.RAIN_DANCE ], + ], + [SpeciesId.SEADRA]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.TWISTER ], + [ 15, MoveId.FOCUS_ENERGY ], + [ 20, MoveId.DRAGON_BREATH ], + [ 25, MoveId.BUBBLE_BEAM ], + [ 30, MoveId.AGILITY ], + [ 37, MoveId.LASER_FOCUS ], + [ 44, MoveId.DRAGON_PULSE ], + [ 51, MoveId.HYDRO_PUMP ], + [ 58, MoveId.DRAGON_DANCE ], + [ 65, MoveId.RAIN_DANCE ], + ], + [SpeciesId.GOLDEEN]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.PECK ], + [ 1, MoveId.WATER_SPORT ], + [ 5, MoveId.SUPERSONIC ], + [ 10, MoveId.WATER_PULSE ], + [ 15, MoveId.HORN_ATTACK ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.AQUA_RING ], + [ 30, MoveId.FLAIL ], + [ 35, MoveId.WATERFALL ], + [ 40, MoveId.SOAK ], + [ 45, MoveId.MEGAHORN ], + [ 50, MoveId.HORN_DRILL ], + ], + [SpeciesId.SEAKING]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.WATER_SPORT ], + [ 1, MoveId.PECK ], + [ 1, MoveId.WATER_PULSE ], + [ 15, MoveId.HORN_ATTACK ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.AQUA_RING ], + [ 30, MoveId.FLAIL ], + [ 37, MoveId.WATERFALL ], + [ 44, MoveId.SOAK ], + [ 51, MoveId.MEGAHORN ], + [ 58, MoveId.HORN_DRILL ], + ], + [SpeciesId.STARYU]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 4, MoveId.WATER_GUN ], + [ 8, MoveId.CONFUSE_RAY ], + [ 12, MoveId.RAPID_SPIN ], + [ 16, MoveId.MINIMIZE ], + [ 20, MoveId.SWIFT ], + [ 24, MoveId.PSYBEAM ], + [ 28, MoveId.BRINE ], + [ 32, MoveId.LIGHT_SCREEN ], + [ 36, MoveId.POWER_GEM ], + [ 40, MoveId.PSYCHIC ], + [ 44, MoveId.SURF ], + [ 48, MoveId.RECOVER ], + [ 52, MoveId.COSMIC_POWER ], + [ 56, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.STARMIE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.HYDRO_PUMP ], + [ 1, MoveId.SURF ], + [ 1, MoveId.PSYBEAM ], + [ 1, MoveId.PSYCHIC ], + [ 1, MoveId.RECOVER ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.MINIMIZE ], + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.LIGHT_SCREEN ], + [ 1, MoveId.SWIFT ], + [ 1, MoveId.SPOTLIGHT ], + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.COSMIC_POWER ], + [ 1, MoveId.BRINE ], + [ 1, MoveId.POWER_GEM ], + ], + [SpeciesId.MR_MIME]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.TICKLE ], // Previous Stage Move + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.ENCORE ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.POWER_SWAP ], + [ 1, MoveId.GUARD_SWAP ], + [ 1, MoveId.WIDE_GUARD ], + [ 1, MoveId.QUICK_GUARD ], + [ 1, MoveId.BARRIER ], + [ 12, MoveId.CONFUSION ], + [ 16, MoveId.ROLE_PLAY ], + [ 20, MoveId.PROTECT ], + [ 24, MoveId.RECYCLE ], + [ 28, MoveId.PSYBEAM ], + [ 32, MoveId.MIMIC ], + [ 36, MoveId.LIGHT_SCREEN ], + [ 36, MoveId.REFLECT ], + [ 36, MoveId.SAFEGUARD ], + [ 40, MoveId.SUCKER_PUNCH ], + [ 44, MoveId.DAZZLING_GLEAM ], + [ 48, MoveId.PSYCHIC ], + [ 52, MoveId.TEETER_DANCE ], + ], + [SpeciesId.SCYTHER]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 4, MoveId.FURY_CUTTER ], + [ 8, MoveId.FALSE_SWIPE ], + [ 12, MoveId.WING_ATTACK ], + [ 16, MoveId.DOUBLE_TEAM ], + [ 20, MoveId.DOUBLE_HIT ], + [ 24, MoveId.SLASH ], + [ 28, MoveId.FOCUS_ENERGY ], + [ 30, MoveId.STEEL_WING ], // Custom + [ 32, MoveId.AGILITY ], + [ 36, MoveId.AIR_SLASH ], + [ 40, MoveId.X_SCISSOR ], + [ 44, MoveId.SWORDS_DANCE ], + ], + [SpeciesId.JYNX]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.LICK ], + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.COPYCAT ], + [ 12, MoveId.CONFUSION ], + [ 16, MoveId.COVET ], + [ 20, MoveId.SING ], + [ 24, MoveId.FAKE_TEARS ], + [ 28, MoveId.ICE_PUNCH ], + [ 34, MoveId.PSYCHIC ], + [ 40, MoveId.LOVELY_KISS ], + [ 46, MoveId.MEAN_LOOK ], + [ 52, MoveId.PERISH_SONG ], + [ 58, MoveId.BLIZZARD ], + ], + [SpeciesId.ELECTABUZZ]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.CHARGE ], + [ 12, MoveId.SWIFT ], + [ 16, MoveId.SHOCK_WAVE ], + [ 20, MoveId.THUNDER_WAVE ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.THUNDER_PUNCH ], + [ 34, MoveId.DISCHARGE ], + [ 40, MoveId.LOW_KICK ], + [ 46, MoveId.THUNDERBOLT ], + [ 52, MoveId.LIGHT_SCREEN ], + [ 58, MoveId.THUNDER ], + [ 64, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.MAGMAR]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.SMOG ], + [ 12, MoveId.CLEAR_SMOG ], + [ 16, MoveId.FLAME_WHEEL ], + [ 20, MoveId.CONFUSE_RAY ], + [ 24, MoveId.SCARY_FACE ], + [ 28, MoveId.FIRE_PUNCH ], + [ 34, MoveId.LAVA_PLUME ], + [ 40, MoveId.LOW_KICK ], + [ 46, MoveId.FLAMETHROWER ], + [ 52, MoveId.SUNNY_DAY ], + [ 58, MoveId.FIRE_BLAST ], + [ 64, MoveId.HYPER_BEAM ], + ], + [SpeciesId.PINSIR]: [ + [ 1, MoveId.VISE_GRIP ], + [ 1, MoveId.HARDEN ], + [ 4, MoveId.FOCUS_ENERGY ], + [ 8, MoveId.BIND ], + [ 12, MoveId.SEISMIC_TOSS ], + [ 16, MoveId.BUG_BITE ], + [ 20, MoveId.STORM_THROW ], + [ 24, MoveId.DOUBLE_HIT ], + [ 28, MoveId.VITAL_THROW ], + [ 32, MoveId.X_SCISSOR ], + [ 36, MoveId.STRENGTH ], + [ 40, MoveId.SWORDS_DANCE ], + [ 44, MoveId.SUBMISSION ], + [ 48, MoveId.GUILLOTINE ], + [ 52, MoveId.SUPERPOWER ], + ], + [SpeciesId.TAUROS]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 5, MoveId.WORK_UP ], + [ 10, MoveId.PAYBACK ], + [ 15, MoveId.ASSURANCE ], + [ 20, MoveId.HORN_ATTACK ], + [ 25, MoveId.SCARY_FACE ], + [ 30, MoveId.ZEN_HEADBUTT ], + [ 35, MoveId.RAGING_BULL ], + [ 40, MoveId.REST ], + [ 45, MoveId.SWAGGER ], + [ 50, MoveId.THRASH ], + [ 55, MoveId.DOUBLE_EDGE ], + [ 60, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.MAGIKARP]: [ + [ 1, MoveId.SPLASH ], + [ 15, MoveId.TACKLE ], + [ 25, MoveId.FLAIL ], + ], + [SpeciesId.GYARADOS]: [ + [ EVOLVE_MOVE, MoveId.BITE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.TWISTER ], + [ 4, MoveId.WHIRLPOOL ], + [ 8, MoveId.ICE_FANG ], + [ 12, MoveId.BRINE ], + [ 16, MoveId.SCARY_FACE ], + [ 21, MoveId.WATERFALL ], + [ 24, MoveId.CRUNCH ], + [ 28, MoveId.RAIN_DANCE ], + [ 32, MoveId.AQUA_TAIL ], + [ 36, MoveId.DRAGON_DANCE ], + [ 40, MoveId.HYDRO_PUMP ], + [ 44, MoveId.HURRICANE ], + [ 48, MoveId.THRASH ], + [ 52, MoveId.HYPER_BEAM ], + ], + [SpeciesId.LAPRAS]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 5, MoveId.SING ], + [ 10, MoveId.MIST ], + [ 15, MoveId.LIFE_DEW ], + [ 20, MoveId.ICE_SHARD ], + [ 25, MoveId.CONFUSE_RAY ], + [ 30, MoveId.WATER_PULSE ], + [ 35, MoveId.BRINE ], + [ 40, MoveId.BODY_SLAM ], + [ 45, MoveId.ICE_BEAM ], + [ 50, MoveId.RAIN_DANCE ], + [ 55, MoveId.HYDRO_PUMP ], + [ 60, MoveId.PERISH_SONG ], + [ 65, MoveId.SHEER_COLD ], + ], + [SpeciesId.DITTO]: [ + [ 1, MoveId.TRANSFORM ], + ], + [SpeciesId.EEVEE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.COVET ], + [ 5, MoveId.SAND_ATTACK ], + [ 10, MoveId.QUICK_ATTACK ], + [ 15, MoveId.BABY_DOLL_EYES ], + [ 20, MoveId.SWIFT ], + [ 25, MoveId.BITE ], + [ 30, MoveId.COPYCAT ], + [ 35, MoveId.BATON_PASS ], + [ 40, MoveId.TAKE_DOWN ], + [ 45, MoveId.CHARM ], + [ 50, MoveId.DOUBLE_EDGE ], + [ 55, MoveId.LAST_RESORT ], + [ 60, MoveId.VEEVEE_VOLLEY ], + ], + [SpeciesId.VAPOREON]: [ + [ EVOLVE_MOVE, MoveId.BOUNCY_BUBBLE ], + [ RELEARN_MOVE, MoveId.VEEVEE_VOLLEY ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.BITE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.SWIFT ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.COVET ], + [ 1, MoveId.COPYCAT ], + [ 5, MoveId.SAND_ATTACK ], + [ 10, MoveId.WATER_GUN ], + [ 15, MoveId.QUICK_ATTACK ], + [ 20, MoveId.BABY_DOLL_EYES ], + [ 25, MoveId.HAZE ], + [ 30, MoveId.WATER_PULSE ], + [ 35, MoveId.AURORA_BEAM ], + [ 40, MoveId.AQUA_RING ], + [ 45, MoveId.MUDDY_WATER ], + [ 50, MoveId.ACID_ARMOR ], + [ 55, MoveId.HYDRO_PUMP ], + [ 60, MoveId.LAST_RESORT ], + ], + [SpeciesId.JOLTEON]: [ + [ EVOLVE_MOVE, MoveId.BUZZY_BUZZ ], + [ RELEARN_MOVE, MoveId.VEEVEE_VOLLEY ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.BITE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.SWIFT ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.COVET ], + [ 1, MoveId.COPYCAT ], + [ 5, MoveId.SAND_ATTACK ], + [ 10, MoveId.THUNDER_SHOCK ], + [ 15, MoveId.QUICK_ATTACK ], + [ 20, MoveId.BABY_DOLL_EYES ], + [ 25, MoveId.THUNDER_WAVE ], + [ 30, MoveId.DOUBLE_KICK ], + [ 35, MoveId.THUNDER_FANG ], + [ 40, MoveId.PIN_MISSILE ], + [ 45, MoveId.DISCHARGE ], + [ 50, MoveId.AGILITY ], + [ 55, MoveId.THUNDER ], + [ 60, MoveId.LAST_RESORT ], + ], + [SpeciesId.FLAREON]: [ + [ EVOLVE_MOVE, MoveId.SIZZLY_SLIDE ], + [ RELEARN_MOVE, MoveId.VEEVEE_VOLLEY ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.SWIFT ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.COVET ], + [ 1, MoveId.COPYCAT ], + [ 5, MoveId.SAND_ATTACK ], + [ 10, MoveId.EMBER ], + [ 15, MoveId.QUICK_ATTACK ], + [ 20, MoveId.BABY_DOLL_EYES ], + [ 25, MoveId.SMOG ], + [ 30, MoveId.BITE ], + [ 35, MoveId.FIRE_FANG ], + [ 40, MoveId.FIRE_SPIN ], + [ 45, MoveId.LAVA_PLUME ], + [ 50, MoveId.SCARY_FACE ], + [ 55, MoveId.FLARE_BLITZ ], + [ 60, MoveId.LAST_RESORT ], + ], + [SpeciesId.PORYGON]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.CONVERSION ], + [ 5, MoveId.RECYCLE ], + [ 10, MoveId.MAGNET_RISE ], + [ 15, MoveId.THUNDER_SHOCK ], + [ 20, MoveId.PSYBEAM ], + [ 25, MoveId.CONVERSION_2 ], + [ 30, MoveId.AGILITY ], + [ 35, MoveId.RECOVER ], + [ 40, MoveId.DISCHARGE ], + [ 45, MoveId.TRI_ATTACK ], + [ 50, MoveId.MAGIC_COAT ], + [ 55, MoveId.LOCK_ON ], + [ 60, MoveId.ZAP_CANNON ], + ], + [SpeciesId.OMANYTE]: [ + [ 1, MoveId.BIND ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.CONSTRICT ], + [ 5, MoveId.ROLLOUT ], + [ 10, MoveId.SAND_ATTACK ], + [ 15, MoveId.WATER_GUN ], + [ 20, MoveId.LEER ], + [ 25, MoveId.MUD_SHOT ], + [ 30, MoveId.ANCIENT_POWER ], + [ 35, MoveId.BRINE ], + [ 41, MoveId.PROTECT ], + [ 45, MoveId.ROCK_BLAST ], + [ 50, MoveId.SURF ], + [ 55, MoveId.SHELL_SMASH ], + [ 60, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.OMASTAR]: [ + [ EVOLVE_MOVE, MoveId.CRUNCH ], + [ 1, MoveId.BIND ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.CONSTRICT ], + [ 1, MoveId.SPIKE_CANNON ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.ROLLOUT ], + [ 15, MoveId.WATER_GUN ], + [ 20, MoveId.LEER ], + [ 25, MoveId.MUD_SHOT ], + [ 30, MoveId.ANCIENT_POWER ], + [ 35, MoveId.BRINE ], + [ 43, MoveId.PROTECT ], + [ 49, MoveId.ROCK_BLAST ], + [ 56, MoveId.SURF ], + [ 63, MoveId.SHELL_SMASH ], + [ 70, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.KABUTO]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.HARDEN ], + [ 5, MoveId.SCRATCH ], + [ 10, MoveId.SAND_ATTACK ], + [ 15, MoveId.AQUA_JET ], + [ 20, MoveId.LEER ], + [ 25, MoveId.MUD_SHOT ], + [ 30, MoveId.ANCIENT_POWER ], + [ 35, MoveId.BRINE ], + [ 41, MoveId.PROTECT ], + [ 45, MoveId.LEECH_LIFE ], + [ 50, MoveId.LIQUIDATION ], + [ 55, MoveId.METAL_SOUND ], + [ 60, MoveId.STONE_EDGE ], + ], + [SpeciesId.KABUTOPS]: [ + [ EVOLVE_MOVE, MoveId.SLASH ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.NIGHT_SLASH ], + [ 15, MoveId.AQUA_JET ], + [ 20, MoveId.LEER ], + [ 25, MoveId.MUD_SHOT ], + [ 30, MoveId.ANCIENT_POWER ], + [ 35, MoveId.BRINE ], + [ 43, MoveId.PROTECT ], + [ 49, MoveId.LEECH_LIFE ], + [ 56, MoveId.LIQUIDATION ], + [ 63, MoveId.METAL_SOUND ], + [ 70, MoveId.STONE_EDGE ], + ], + [SpeciesId.AERODACTYL]: [ + [ 1, MoveId.BITE ], + [ 1, MoveId.ANCIENT_POWER ], + [ 5, MoveId.SUPERSONIC ], + [ 10, MoveId.WING_ATTACK ], + [ 15, MoveId.SCARY_FACE ], + [ 20, MoveId.ROCK_SLIDE ], + [ 25, MoveId.ROAR ], + [ 30, MoveId.CRUNCH ], + [ 35, MoveId.IRON_HEAD ], + [ 40, MoveId.TAKE_DOWN ], + [ 45, MoveId.STONE_EDGE ], + [ 50, MoveId.AGILITY ], + [ 55, MoveId.HYPER_BEAM ], + [ 60, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.SNORLAX]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SCREECH ], + [ 1, MoveId.ODOR_SLEUTH ], // Previous Stage Move + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.METRONOME ], + [ 1, MoveId.LICK ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.STOCKPILE ], + [ 1, MoveId.SWALLOW ], + [ 1, MoveId.RECYCLE ], + [ 1, MoveId.BLOCK ], + [ 1, MoveId.COVET ], + [ 1, MoveId.FLING ], + [ 1, MoveId.LAST_RESORT ], + [ 12, MoveId.YAWN ], + [ 16, MoveId.BITE ], + [ 20, MoveId.REST ], + [ 20, MoveId.SNORE ], + [ 20, MoveId.SLEEP_TALK ], + [ 24, MoveId.CRUNCH ], + [ 28, MoveId.BODY_SLAM ], + [ 32, MoveId.HEAVY_SLAM ], + [ 36, MoveId.AMNESIA ], + [ 40, MoveId.HIGH_HORSEPOWER ], + [ 44, MoveId.HAMMER_ARM ], + [ 48, MoveId.BELLY_DRUM ], + [ 52, MoveId.BELCH ], + [ 56, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.ARTICUNO]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.MIST ], + [ 5, MoveId.POWDER_SNOW ], + [ 10, MoveId.REFLECT ], + [ 15, MoveId.ICE_SHARD ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.ANCIENT_POWER ], + [ 30, MoveId.TAILWIND ], + [ 35, MoveId.FREEZE_DRY ], + [ 40, MoveId.ROOST ], + [ 45, MoveId.ICE_BEAM ], + [ 50, MoveId.SNOWSCAPE ], + [ 55, MoveId.HURRICANE ], + [ 60, MoveId.HAZE ], + [ 65, MoveId.BLIZZARD ], + [ 70, MoveId.SHEER_COLD ], + ], + [SpeciesId.ZAPDOS]: [ + [ 1, MoveId.PECK ], + [ 1, MoveId.THUNDER_WAVE ], + [ 5, MoveId.THUNDER_SHOCK ], + [ 10, MoveId.LIGHT_SCREEN ], + [ 15, MoveId.PLUCK ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.ANCIENT_POWER ], + [ 30, MoveId.CHARGE ], + [ 35, MoveId.DRILL_PECK ], + [ 40, MoveId.ROOST ], + [ 45, MoveId.DISCHARGE ], + [ 50, MoveId.RAIN_DANCE ], + [ 55, MoveId.THUNDER ], + [ 60, MoveId.DETECT ], + [ 65, MoveId.MAGNETIC_FLUX ], + [ 70, MoveId.ZAP_CANNON ], + ], + [SpeciesId.MOLTRES]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.LEER ], + [ 5, MoveId.EMBER ], + [ 10, MoveId.SAFEGUARD ], + [ 15, MoveId.WING_ATTACK ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.ANCIENT_POWER ], + [ 30, MoveId.INCINERATE ], + [ 35, MoveId.AIR_SLASH ], + [ 40, MoveId.ROOST ], + [ 45, MoveId.HEAT_WAVE ], + [ 50, MoveId.SUNNY_DAY ], + [ 55, MoveId.HURRICANE ], + [ 60, MoveId.ENDURE ], + [ 65, MoveId.OVERHEAT ], + [ 70, MoveId.SKY_ATTACK ], + ], + [SpeciesId.DRATINI]: [ + [ 1, MoveId.WRAP ], + [ 1, MoveId.LEER ], + [ 5, MoveId.TWISTER ], + [ 10, MoveId.THUNDER_WAVE ], + [ 15, MoveId.DRAGON_TAIL ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.SLAM ], + [ 31, MoveId.AQUA_TAIL ], + [ 35, MoveId.DRAGON_RUSH ], + [ 40, MoveId.SAFEGUARD ], + [ 45, MoveId.RAIN_DANCE ], + [ 50, MoveId.DRAGON_DANCE ], + [ 55, MoveId.OUTRAGE ], + [ 60, MoveId.HYPER_BEAM ], + ], + [SpeciesId.DRAGONAIR]: [ + [ 1, MoveId.WRAP ], + [ 1, MoveId.LEER ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.TWISTER ], + [ 15, MoveId.DRAGON_TAIL ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.SLAM ], + [ 33, MoveId.AQUA_TAIL ], + [ 39, MoveId.DRAGON_RUSH ], + [ 46, MoveId.SAFEGUARD ], + [ 53, MoveId.RAIN_DANCE ], + [ 60, MoveId.DRAGON_DANCE ], + [ 67, MoveId.OUTRAGE ], + [ 74, MoveId.HYPER_BEAM ], + ], + [SpeciesId.DRAGONITE]: [ + [ EVOLVE_MOVE, MoveId.HURRICANE ], + [ 1, MoveId.FIRE_PUNCH ], + [ 1, MoveId.THUNDER_PUNCH ], + [ 1, MoveId.WING_ATTACK ], + [ 1, MoveId.WRAP ], + [ 1, MoveId.LEER ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.TWISTER ], + [ 1, MoveId.EXTREME_SPEED ], + [ 1, MoveId.ROOST ], + [ 15, MoveId.DRAGON_TAIL ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.SLAM ], + [ 33, MoveId.AQUA_TAIL ], + [ 39, MoveId.DRAGON_RUSH ], + [ 41, MoveId.OUTRAGE ], + [ 46, MoveId.SAFEGUARD ], + [ 53, MoveId.RAIN_DANCE ], + [ 62, MoveId.DRAGON_DANCE ], + [ 80, MoveId.HYPER_BEAM ], + ], + [SpeciesId.MEWTWO]: [ + [ 1, MoveId.DISABLE ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.SWIFT ], + [ 1, MoveId.LIFE_DEW ], + [ 8, MoveId.ANCIENT_POWER ], + [ 16, MoveId.PSYCHO_CUT ], + [ 24, MoveId.SAFEGUARD ], + [ 32, MoveId.AMNESIA ], + [ 40, MoveId.AURA_SPHERE ], + [ 48, MoveId.PSYCHIC ], + [ 56, MoveId.POWER_SWAP ], + [ 56, MoveId.GUARD_SWAP ], + [ 64, MoveId.MIST ], + [ 72, MoveId.PSYSTRIKE ], + [ 80, MoveId.RECOVER ], + [ 88, MoveId.FUTURE_SIGHT ], + ], + [SpeciesId.MEW]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.REFLECT_TYPE ], + [ 10, MoveId.AMNESIA ], + [ 20, MoveId.BATON_PASS ], + [ 30, MoveId.ANCIENT_POWER ], + [ 40, MoveId.LIFE_DEW ], + [ 50, MoveId.NASTY_PLOT ], + [ 60, MoveId.METRONOME ], + [ 70, MoveId.IMPRISON ], + [ 80, MoveId.TRANSFORM ], + [ 90, MoveId.AURA_SPHERE ], + [ 100, MoveId.PSYCHIC ], + ], + [SpeciesId.CHIKORITA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 5, MoveId.RAZOR_LEAF ], // Custom, moved from 6 to 5 + [ 9, MoveId.POISON_POWDER ], + [ 12, MoveId.SYNTHESIS ], + [ 17, MoveId.REFLECT ], + [ 20, MoveId.MAGICAL_LEAF ], + [ 23, MoveId.LEECH_SEED ], + [ 28, MoveId.SWEET_SCENT ], + [ 31, MoveId.LIGHT_SCREEN ], + [ 34, MoveId.BODY_SLAM ], + [ 39, MoveId.SAFEGUARD ], + [ 42, MoveId.GIGA_DRAIN ], + [ 45, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.BAYLEEF]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.RAZOR_LEAF ], + [ 1, MoveId.POISON_POWDER ], + [ 12, MoveId.SYNTHESIS ], + [ 18, MoveId.REFLECT ], + [ 22, MoveId.MAGICAL_LEAF ], + [ 26, MoveId.LEECH_SEED ], + [ 32, MoveId.SWEET_SCENT ], + [ 36, MoveId.LIGHT_SCREEN ], + [ 40, MoveId.BODY_SLAM ], + [ 46, MoveId.SAFEGUARD ], + [ 50, MoveId.GIGA_DRAIN ], + [ 54, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.MEGANIUM]: [ + [ EVOLVE_MOVE, MoveId.PETAL_DANCE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.RAZOR_LEAF ], + [ 1, MoveId.POISON_POWDER ], + [ 1, MoveId.PETAL_BLIZZARD ], + [ 12, MoveId.SYNTHESIS ], + [ 18, MoveId.REFLECT ], + [ 22, MoveId.MAGICAL_LEAF ], + [ 26, MoveId.LEECH_SEED ], + [ 34, MoveId.SWEET_SCENT ], + [ 40, MoveId.LIGHT_SCREEN ], + [ 46, MoveId.BODY_SLAM ], + [ 54, MoveId.SAFEGUARD ], + [ 60, MoveId.GIGA_DRAIN ], + [ 65, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.CYNDAQUIL]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 5, MoveId.EMBER ], // Custom, moved from 10 to 5 + [ 10, MoveId.SMOKESCREEN ], // Custom, moved from 6 to 10 + [ 13, MoveId.QUICK_ATTACK ], + [ 19, MoveId.FLAME_WHEEL ], + [ 22, MoveId.DEFENSE_CURL ], + [ 28, MoveId.FLAME_CHARGE ], + [ 31, MoveId.SWIFT ], + [ 37, MoveId.LAVA_PLUME ], + [ 40, MoveId.FLAMETHROWER ], + [ 46, MoveId.INFERNO ], + [ 49, MoveId.ROLLOUT ], + [ 55, MoveId.DOUBLE_EDGE ], + [ 58, MoveId.OVERHEAT ], + [ 64, MoveId.ERUPTION ], + ], + [SpeciesId.QUILAVA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.SMOKESCREEN ], + [ 10, MoveId.EMBER ], + [ 13, MoveId.QUICK_ATTACK ], + [ 20, MoveId.FLAME_WHEEL ], + [ 24, MoveId.DEFENSE_CURL ], + [ 31, MoveId.SWIFT ], + [ 35, MoveId.FLAME_CHARGE ], + [ 42, MoveId.LAVA_PLUME ], + [ 46, MoveId.FLAMETHROWER ], + [ 53, MoveId.INFERNO ], + [ 57, MoveId.ROLLOUT ], + [ 64, MoveId.DOUBLE_EDGE ], + [ 68, MoveId.OVERHEAT ], + [ 75, MoveId.ERUPTION ], + ], + [SpeciesId.TYPHLOSION]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.ERUPTION ], + [ 1, MoveId.GYRO_BALL ], + [ 13, MoveId.QUICK_ATTACK ], + [ 20, MoveId.FLAME_WHEEL ], + [ 24, MoveId.DEFENSE_CURL ], + [ 31, MoveId.SWIFT ], + [ 35, MoveId.FLAME_CHARGE ], + [ 43, MoveId.LAVA_PLUME ], + [ 48, MoveId.FLAMETHROWER ], + [ 56, MoveId.INFERNO ], + [ 61, MoveId.ROLLOUT ], + [ 74, MoveId.OVERHEAT ], + ], + [SpeciesId.TOTODILE]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 5, MoveId.WATER_GUN ], // Custom, moved from 6 to 5 + [ 9, MoveId.BITE ], + [ 13, MoveId.SCARY_FACE ], + [ 19, MoveId.ICE_FANG ], + [ 22, MoveId.FLAIL ], + [ 27, MoveId.CRUNCH ], + [ 30, MoveId.SLASH ], + [ 33, MoveId.SCREECH ], + [ 37, MoveId.THRASH ], + [ 41, MoveId.AQUA_TAIL ], + [ 45, MoveId.SUPERPOWER ], + [ 50, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.CROCONAW]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.WATER_GUN ], + [ 13, MoveId.BITE ], + [ 15, MoveId.SCARY_FACE ], + [ 21, MoveId.ICE_FANG ], + [ 24, MoveId.FLAIL ], + [ 30, MoveId.CRUNCH ], + [ 34, MoveId.SLASH ], + [ 37, MoveId.SCREECH ], + [ 42, MoveId.THRASH ], + [ 47, MoveId.AQUA_TAIL ], + [ 50, MoveId.SUPERPOWER ], + [ 55, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.FERALIGATR]: [ + [ 1, MoveId.AGILITY ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.WATER_GUN ], + [ 13, MoveId.BITE ], + [ 15, MoveId.SCARY_FACE ], + [ 21, MoveId.ICE_FANG ], + [ 24, MoveId.FLAIL ], + [ 32, MoveId.CRUNCH ], + [ 37, MoveId.SLASH ], + [ 44, MoveId.SCREECH ], + [ 51, MoveId.THRASH ], + [ 59, MoveId.AQUA_TAIL ], + [ 65, MoveId.SUPERPOWER ], + [ 70, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.SENTRET]: [ + [ 1, MoveId.SCRATCH ], + [ 4, MoveId.DEFENSE_CURL ], + [ 7, MoveId.QUICK_ATTACK ], + [ 13, MoveId.FURY_SWIPES ], + [ 16, MoveId.HELPING_HAND ], + [ 19, MoveId.FOLLOW_ME ], + [ 25, MoveId.SLAM ], + [ 28, MoveId.REST ], + [ 31, MoveId.SUCKER_PUNCH ], + [ 36, MoveId.AMNESIA ], + [ 39, MoveId.BATON_PASS ], + [ 42, MoveId.DOUBLE_EDGE ], + [ 47, MoveId.HYPER_VOICE ], + ], + [SpeciesId.FURRET]: [ + [ EVOLVE_MOVE, MoveId.AGILITY ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.COIL ], + [ 13, MoveId.FURY_SWIPES ], + [ 17, MoveId.HELPING_HAND ], + [ 21, MoveId.FOLLOW_ME ], + [ 28, MoveId.SLAM ], + [ 32, MoveId.REST ], + [ 36, MoveId.SUCKER_PUNCH ], + [ 42, MoveId.AMNESIA ], + [ 46, MoveId.BATON_PASS ], + [ 50, MoveId.DOUBLE_EDGE ], + [ 56, MoveId.HYPER_VOICE ], + ], + [SpeciesId.HOOTHOOT]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.PECK ], + [ 3, MoveId.TACKLE ], + [ 6, MoveId.ECHOED_VOICE ], + [ 9, MoveId.CONFUSION ], + [ 12, MoveId.REFLECT ], + [ 15, MoveId.DEFOG ], + [ 18, MoveId.AIR_SLASH ], + [ 21, MoveId.EXTRASENSORY ], + [ 24, MoveId.TAKE_DOWN ], + [ 27, MoveId.UPROAR ], + [ 30, MoveId.ROOST ], + [ 33, MoveId.MOONBLAST ], + [ 36, MoveId.HYPNOSIS ], + [ 39, MoveId.DREAM_EATER ], + ], + [SpeciesId.NOCTOWL]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.PECK ], + [ 1, MoveId.SKY_ATTACK ], + [ 1, MoveId.ECHOED_VOICE ], + [ 9, MoveId.CONFUSION ], + [ 12, MoveId.REFLECT ], + [ 15, MoveId.DEFOG ], + [ 18, MoveId.AIR_SLASH ], + [ 23, MoveId.EXTRASENSORY ], + [ 28, MoveId.TAKE_DOWN ], + [ 33, MoveId.UPROAR ], + [ 38, MoveId.ROOST ], + [ 43, MoveId.MOONBLAST ], + [ 48, MoveId.HYPNOSIS ], + [ 53, MoveId.DREAM_EATER ], + ], + [SpeciesId.LEDYBA]: [ + [ 1, MoveId.TACKLE ], + [ 5, MoveId.SUPERSONIC ], + [ 8, MoveId.SWIFT ], + [ 12, MoveId.LIGHT_SCREEN ], + [ 12, MoveId.REFLECT ], + [ 12, MoveId.SAFEGUARD ], + [ 15, MoveId.MACH_PUNCH ], + [ 19, MoveId.ROOST ], + [ 22, MoveId.STRUGGLE_BUG ], + [ 26, MoveId.BATON_PASS ], + [ 29, MoveId.AGILITY ], + [ 33, MoveId.BUG_BUZZ ], + [ 36, MoveId.AIR_SLASH ], + [ 40, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.LEDIAN]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.SWIFT ], + [ 5, MoveId.SUPERSONIC ], + [ 12, MoveId.LIGHT_SCREEN ], + [ 12, MoveId.REFLECT ], + [ 12, MoveId.SAFEGUARD ], + [ 15, MoveId.MACH_PUNCH ], + [ 20, MoveId.ROOST ], + [ 24, MoveId.STRUGGLE_BUG ], + [ 29, MoveId.BATON_PASS ], + [ 33, MoveId.AGILITY ], + [ 38, MoveId.BUG_BUZZ ], + [ 42, MoveId.AIR_SLASH ], + [ 47, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.SPINARAK]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.STRING_SHOT ], + [ 1, MoveId.CONSTRICT ], + [ 5, MoveId.ABSORB ], + [ 8, MoveId.INFESTATION ], + [ 12, MoveId.SCARY_FACE ], + [ 15, MoveId.NIGHT_SHADE ], + [ 19, MoveId.SHADOW_SNEAK ], + [ 22, MoveId.FURY_SWIPES ], + [ 26, MoveId.SUCKER_PUNCH ], + [ 29, MoveId.AGILITY ], + [ 33, MoveId.PIN_MISSILE ], + [ 36, MoveId.PSYCHIC ], + [ 40, MoveId.POISON_JAB ], + [ 44, MoveId.CROSS_POISON ], + [ 47, MoveId.STICKY_WEB ], + [ 51, MoveId.TOXIC_THREAD ], + ], + [SpeciesId.ARIADOS]: [ + [ EVOLVE_MOVE, MoveId.SWORDS_DANCE ], + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.STRING_SHOT ], + [ 1, MoveId.CONSTRICT ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.BUG_BITE ], + [ 1, MoveId.FELL_STINGER ], + [ 8, MoveId.INFESTATION ], + [ 12, MoveId.SCARY_FACE ], + [ 15, MoveId.NIGHT_SHADE ], + [ 19, MoveId.SHADOW_SNEAK ], + [ 23, MoveId.FURY_SWIPES ], + [ 28, MoveId.SUCKER_PUNCH ], + [ 31, MoveId.AGILITY ], + [ 35, MoveId.PIN_MISSILE ], + [ 41, MoveId.PSYCHIC ], + [ 46, MoveId.POISON_JAB ], + [ 50, MoveId.CROSS_POISON ], + [ 54, MoveId.STICKY_WEB ], + [ 59, MoveId.TOXIC_THREAD ], + ], + [SpeciesId.CROBAT]: [ + [ EVOLVE_MOVE, MoveId.CROSS_POISON ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.TOXIC ], + [ 1, MoveId.SCREECH ], + [ 1, MoveId.MEAN_LOOK ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.TAILWIND ], + [ 15, MoveId.POISON_FANG ], + [ 20, MoveId.QUICK_GUARD ], + [ 27, MoveId.AIR_CUTTER ], + [ 34, MoveId.BITE ], + [ 41, MoveId.HAZE ], + [ 48, MoveId.VENOSHOCK ], + [ 55, MoveId.CONFUSE_RAY ], + [ 62, MoveId.AIR_SLASH ], + [ 69, MoveId.LEECH_LIFE ], + ], + [SpeciesId.CHINCHOU]: [ + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.WATER_GUN ], + [ 4, MoveId.ELECTRO_BALL ], + [ 8, MoveId.THUNDER_WAVE ], + [ 12, MoveId.BUBBLE_BEAM ], + [ 16, MoveId.CONFUSE_RAY ], + [ 20, MoveId.SPARK ], + [ 24, MoveId.CHARGE ], + [ 28, MoveId.DISCHARGE ], + [ 32, MoveId.AQUA_RING ], + [ 36, MoveId.FLAIL ], + [ 40, MoveId.TAKE_DOWN ], + [ 44, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.LANTURN]: [ + [ EVOLVE_MOVE, MoveId.STOCKPILE ], + [ EVOLVE_MOVE, MoveId.SPIT_UP ], + [ EVOLVE_MOVE, MoveId.SWALLOW ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.SPOTLIGHT ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.ELECTRO_BALL ], + [ 1, MoveId.EERIE_IMPULSE ], + [ 12, MoveId.BUBBLE_BEAM ], + [ 16, MoveId.CONFUSE_RAY ], + [ 20, MoveId.SPARK ], + [ 24, MoveId.CHARGE ], + [ 30, MoveId.DISCHARGE ], + [ 36, MoveId.AQUA_RING ], + [ 42, MoveId.FLAIL ], + [ 48, MoveId.TAKE_DOWN ], + [ 54, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.PICHU]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 4, MoveId.PLAY_NICE ], + [ 8, MoveId.SWEET_KISS ], + [ 12, MoveId.NUZZLE ], + [ 16, MoveId.NASTY_PLOT ], + [ 20, MoveId.CHARM ], + ], + [SpeciesId.CLEFFA]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.COPYCAT ], + [ 4, MoveId.SING ], + [ 8, MoveId.SWEET_KISS ], + [ 12, MoveId.DISARMING_VOICE ], + [ 16, MoveId.ENCORE ], + [ 20, MoveId.CHARM ], + ], + [SpeciesId.IGGLYBUFF]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.SING ], + [ 1, MoveId.COPYCAT ], + [ 4, MoveId.DEFENSE_CURL ], + [ 8, MoveId.SWEET_KISS ], + [ 12, MoveId.DISARMING_VOICE ], + [ 16, MoveId.DISABLE ], + [ 20, MoveId.CHARM ], + ], + [SpeciesId.TOGEPI]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.GROWL ], + [ 4, MoveId.SWEET_KISS ], + [ 8, MoveId.LIFE_DEW ], + [ 12, MoveId.CHARM ], + [ 16, MoveId.ANCIENT_POWER ], + [ 20, MoveId.YAWN ], + [ 24, MoveId.METRONOME ], + [ 28, MoveId.AFTER_YOU ], + [ 32, MoveId.DOUBLE_EDGE ], + [ 36, MoveId.SAFEGUARD ], + [ 40, MoveId.FOLLOW_ME ], + [ 44, MoveId.BATON_PASS ], + [ 48, MoveId.LAST_RESORT ], + [ 52, MoveId.WISH ], + ], + [SpeciesId.TOGETIC]: [ + [ EVOLVE_MOVE, MoveId.FAIRY_WIND ], + [ 1, MoveId.POUND ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.LIFE_DEW ], + [ 12, MoveId.CHARM ], + [ 16, MoveId.ANCIENT_POWER ], + [ 20, MoveId.YAWN ], + [ 24, MoveId.METRONOME ], + [ 28, MoveId.AFTER_YOU ], + [ 32, MoveId.DOUBLE_EDGE ], + [ 36, MoveId.SAFEGUARD ], + [ 40, MoveId.FOLLOW_ME ], + [ 44, MoveId.BATON_PASS ], + [ 48, MoveId.LAST_RESORT ], + [ 52, MoveId.WISH ], + ], + [SpeciesId.NATU]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 5, MoveId.STORED_POWER ], + [ 10, MoveId.TELEPORT ], + [ 15, MoveId.CONFUSE_RAY ], + [ 20, MoveId.NIGHT_SHADE ], + [ 26, MoveId.PSYCHO_SHIFT ], + [ 30, MoveId.POWER_SWAP ], + [ 35, MoveId.PSYCHIC ], + [ 35, MoveId.GUARD_SWAP ], + [ 40, MoveId.WISH ], + [ 45, MoveId.FUTURE_SIGHT ], + ], + [SpeciesId.XATU]: [ + [ EVOLVE_MOVE, MoveId.AIR_SLASH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 1, MoveId.TELEPORT ], + [ 1, MoveId.TAILWIND ], + [ 1, MoveId.STORED_POWER ], + [ 15, MoveId.CONFUSE_RAY ], + [ 20, MoveId.NIGHT_SHADE ], + [ 28, MoveId.PSYCHO_SHIFT ], + [ 34, MoveId.POWER_SWAP ], + [ 34, MoveId.GUARD_SWAP ], + [ 41, MoveId.PSYCHIC ], + [ 48, MoveId.WISH ], + [ 55, MoveId.FUTURE_SIGHT ], + ], + [SpeciesId.MAREEP]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 4, MoveId.THUNDER_WAVE ], + [ 8, MoveId.THUNDER_SHOCK ], + [ 11, MoveId.COTTON_SPORE ], + [ 15, MoveId.CHARGE ], + [ 18, MoveId.TAKE_DOWN ], + [ 22, MoveId.ELECTRO_BALL ], + [ 25, MoveId.CONFUSE_RAY ], + [ 29, MoveId.POWER_GEM ], + [ 32, MoveId.DISCHARGE ], + [ 36, MoveId.COTTON_GUARD ], + [ 39, MoveId.DAZZLING_GLEAM ], + [ 43, MoveId.LIGHT_SCREEN ], + [ 46, MoveId.THUNDER ], + ], + [SpeciesId.FLAAFFY]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 6, MoveId.THUNDER_SHOCK ], + [ 9, MoveId.THUNDER_WAVE ], + [ 11, MoveId.COTTON_SPORE ], + [ 16, MoveId.CHARGE ], + [ 20, MoveId.TAKE_DOWN ], + [ 25, MoveId.ELECTRO_BALL ], + [ 29, MoveId.CONFUSE_RAY ], + [ 34, MoveId.POWER_GEM ], + [ 38, MoveId.DISCHARGE ], + [ 43, MoveId.COTTON_GUARD ], + [ 47, MoveId.DAZZLING_GLEAM ], + [ 52, MoveId.LIGHT_SCREEN ], + [ 56, MoveId.THUNDER ], + ], + [SpeciesId.AMPHAROS]: [ + [ EVOLVE_MOVE, MoveId.THUNDER_PUNCH ], + [ 1, MoveId.FIRE_PUNCH ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.ZAP_CANNON ], + [ 1, MoveId.DRAGON_PULSE ], + [ 1, MoveId.MAGNETIC_FLUX ], + [ 1, MoveId.ION_DELUGE ], + [ 11, MoveId.COTTON_SPORE ], + [ 16, MoveId.CHARGE ], + [ 20, MoveId.TAKE_DOWN ], + [ 25, MoveId.ELECTRO_BALL ], + [ 29, MoveId.CONFUSE_RAY ], + [ 35, MoveId.POWER_GEM ], + [ 40, MoveId.DISCHARGE ], + [ 46, MoveId.COTTON_GUARD ], + [ 51, MoveId.DAZZLING_GLEAM ], + [ 57, MoveId.LIGHT_SCREEN ], + [ 62, MoveId.THUNDER ], + ], + [SpeciesId.BELLOSSOM]: [ + [ EVOLVE_MOVE, MoveId.PETAL_BLIZZARD ], + [ 1, MoveId.ACID ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.MEGA_DRAIN ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.POISON_POWDER ], + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.SLEEP_POWDER ], + [ 1, MoveId.PETAL_DANCE ], + [ 1, MoveId.TOXIC ], + [ 1, MoveId.GIGA_DRAIN ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.MOONLIGHT ], + [ 1, MoveId.QUIVER_DANCE ], + [ 1, MoveId.GRASSY_TERRAIN ], + [ 1, MoveId.MOONBLAST ], + ], + [SpeciesId.MARILL]: [ + [ 1, MoveId.SPLASH ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.ROLLOUT ], + [ 1, MoveId.HELPING_HAND ], + [ 6, MoveId.BUBBLE_BEAM ], + [ 9, MoveId.CHARM ], + [ 12, MoveId.SLAM ], + [ 15, MoveId.BOUNCE ], + [ 19, MoveId.AQUA_TAIL ], + [ 21, MoveId.PLAY_ROUGH ], + [ 24, MoveId.AQUA_RING ], + [ 27, MoveId.RAIN_DANCE ], + [ 30, MoveId.HYDRO_PUMP ], + [ 33, MoveId.DOUBLE_EDGE ], + [ 36, MoveId.SUPERPOWER ], + ], + [SpeciesId.AZUMARILL]: [ + [ 1, MoveId.SPLASH ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.ROLLOUT ], + [ 1, MoveId.HELPING_HAND ], + [ 6, MoveId.BUBBLE_BEAM ], + [ 9, MoveId.CHARM ], + [ 12, MoveId.SLAM ], + [ 15, MoveId.BOUNCE ], + [ 21, MoveId.AQUA_TAIL ], + [ 25, MoveId.PLAY_ROUGH ], + [ 30, MoveId.AQUA_RING ], + [ 35, MoveId.RAIN_DANCE ], + [ 40, MoveId.HYDRO_PUMP ], + [ 45, MoveId.DOUBLE_EDGE ], + [ 50, MoveId.SUPERPOWER ], + ], + [SpeciesId.SUDOWOODO]: [ + [ EVOLVE_MOVE, MoveId.SLAM ], + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.TACKLE ], // Previous Stage Move, Custom + [ 1, MoveId.FLAIL ], + [ 1, MoveId.FAKE_TEARS ], + [ 1, MoveId.HAMMER_ARM ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.STONE_EDGE ], + [ 1, MoveId.WOOD_HAMMER ], + [ 12, MoveId.BLOCK ], + [ 16, MoveId.MIMIC ], + [ 20, MoveId.ROCK_TOMB ], + [ 24, MoveId.TEARFUL_LOOK ], + [ 28, MoveId.SUCKER_PUNCH ], + [ 32, MoveId.ROCK_SLIDE ], + [ 36, MoveId.LOW_KICK ], + [ 40, MoveId.COUNTER ], + [ 44, MoveId.DOUBLE_EDGE ], + [ 48, MoveId.HEAD_SMASH ], + ], + [SpeciesId.POLITOED]: [ + [ EVOLVE_MOVE, MoveId.BOUNCE ], + [ RELEARN_MOVE, MoveId.BODY_SLAM ], + [ RELEARN_MOVE, MoveId.DOUBLE_EDGE ], + [ RELEARN_MOVE, MoveId.WATER_GUN ], + [ RELEARN_MOVE, MoveId.BUBBLE_BEAM ], + [ RELEARN_MOVE, MoveId.HYPNOSIS ], + [ RELEARN_MOVE, MoveId.PERISH_SONG ], + [ RELEARN_MOVE, MoveId.SWAGGER ], + [ RELEARN_MOVE, MoveId.HYPER_VOICE ], + [ RELEARN_MOVE, MoveId.MUD_SHOT ], + [ RELEARN_MOVE, MoveId.EARTH_POWER ], + [ 1, MoveId.RAIN_DANCE ], + [ 1, MoveId.HYDRO_PUMP ], + [ 1, MoveId.BELLY_DRUM ], + [ 1, MoveId.POUND ], + [ 1, MoveId.WATER_SPORT ], // Previous Stage Move + ], + [SpeciesId.HOPPIP]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SPLASH ], + [ 4, MoveId.TAIL_WHIP ], + [ 6, MoveId.ABSORB ], + [ 8, MoveId.FAIRY_WIND ], + [ 10, MoveId.POISON_POWDER ], + [ 10, MoveId.STUN_SPORE ], + [ 10, MoveId.SLEEP_POWDER ], + [ 12, MoveId.BULLET_SEED ], + [ 15, MoveId.SYNTHESIS ], + [ 19, MoveId.LEECH_SEED ], + [ 22, MoveId.MEGA_DRAIN ], + [ 24, MoveId.ACROBATICS ], + [ 27, MoveId.COTTON_SPORE ], + [ 29, MoveId.U_TURN ], + [ 32, MoveId.GIGA_DRAIN ], + [ 35, MoveId.BOUNCE ], + [ 38, MoveId.MEMENTO ], + ], + [SpeciesId.SKIPLOOM]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.SYNTHESIS ], + [ 8, MoveId.TACKLE ], + [ 10, MoveId.FAIRY_WIND ], + [ 12, MoveId.POISON_POWDER ], + [ 12, MoveId.STUN_SPORE ], + [ 12, MoveId.SLEEP_POWDER ], + [ 15, MoveId.BULLET_SEED ], + [ 20, MoveId.LEECH_SEED ], + [ 24, MoveId.MEGA_DRAIN ], + [ 28, MoveId.ACROBATICS ], + [ 31, MoveId.COTTON_SPORE ], + [ 34, MoveId.U_TURN ], + [ 37, MoveId.GIGA_DRAIN ], + [ 41, MoveId.BOUNCE ], + [ 44, MoveId.MEMENTO ], + ], + [SpeciesId.JUMPLUFF]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.SYNTHESIS ], + [ 8, MoveId.TACKLE ], + [ 10, MoveId.FAIRY_WIND ], + [ 12, MoveId.POISON_POWDER ], + [ 12, MoveId.STUN_SPORE ], + [ 12, MoveId.SLEEP_POWDER ], + [ 15, MoveId.BULLET_SEED ], + [ 20, MoveId.LEECH_SEED ], + [ 24, MoveId.MEGA_DRAIN ], + [ 30, MoveId.ACROBATICS ], + [ 35, MoveId.COTTON_SPORE ], + [ 39, MoveId.U_TURN ], + [ 43, MoveId.GIGA_DRAIN ], + [ 49, MoveId.BOUNCE ], + [ 55, MoveId.MEMENTO ], + ], + [SpeciesId.AIPOM]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.TAIL_WHIP ], + [ 4, MoveId.SAND_ATTACK ], + [ 8, MoveId.ASTONISH ], + [ 11, MoveId.BATON_PASS ], + [ 15, MoveId.TICKLE ], + [ 18, MoveId.FURY_SWIPES ], + [ 22, MoveId.SWIFT ], + [ 25, MoveId.SCREECH ], + [ 29, MoveId.AGILITY ], + [ 32, MoveId.DOUBLE_HIT ], + [ 36, MoveId.FLING ], + [ 39, MoveId.NASTY_PLOT ], + [ 43, MoveId.LAST_RESORT ], + ], + [SpeciesId.SUNKERN]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWTH ], + [ 7, MoveId.ABSORB ], + [ 10, MoveId.MEGA_DRAIN ], + [ 16, MoveId.RAZOR_LEAF ], + [ 19, MoveId.WORRY_SEED ], + [ 22, MoveId.GIGA_DRAIN ], + [ 25, MoveId.ENDEAVOR ], + [ 28, MoveId.SYNTHESIS ], + [ 31, MoveId.SOLAR_BEAM ], + [ 34, MoveId.DOUBLE_EDGE ], + [ 36, MoveId.SUNNY_DAY ], + [ 39, MoveId.SEED_BOMB ], + ], + [SpeciesId.SUNFLORA]: [ + [ RELEARN_MOVE, MoveId.SEED_BOMB ], // Previous Stage Move + [ 1, MoveId.POUND ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.ENDEAVOR ], // Previous Stage Move + [ 1, MoveId.SYNTHESIS ], // Previous Stage Move + [ 4, MoveId.INGRAIN ], + [ 7, MoveId.ABSORB ], + [ 10, MoveId.MEGA_DRAIN ], + [ 13, MoveId.LEECH_SEED ], + [ 16, MoveId.RAZOR_LEAF ], + [ 19, MoveId.WORRY_SEED ], + [ 22, MoveId.GIGA_DRAIN ], + [ 25, MoveId.BULLET_SEED ], + [ 28, MoveId.PETAL_DANCE ], + [ 31, MoveId.SOLAR_BEAM ], + [ 34, MoveId.DOUBLE_EDGE ], + [ 39, MoveId.SUNNY_DAY ], + [ 43, MoveId.LEAF_STORM ], + [ 50, MoveId.PETAL_BLIZZARD ], + ], + [SpeciesId.YANMA]: [ + [ 1, MoveId.TACKLE ], + [ 6, MoveId.QUICK_ATTACK ], + [ 11, MoveId.DOUBLE_TEAM ], + [ 14, MoveId.AIR_CUTTER ], + [ 17, MoveId.DETECT ], + [ 22, MoveId.SUPERSONIC ], + [ 27, MoveId.UPROAR ], + [ 30, MoveId.BUG_BITE ], + [ 33, MoveId.ANCIENT_POWER ], + [ 38, MoveId.HYPNOSIS ], + [ 43, MoveId.WING_ATTACK ], + [ 46, MoveId.SCREECH ], + [ 49, MoveId.U_TURN ], + [ 54, MoveId.AIR_SLASH ], + [ 57, MoveId.BUG_BUZZ ], + ], + [SpeciesId.WOOPER]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_GUN ], + [ 4, MoveId.RAIN_DANCE ], + [ 8, MoveId.MUD_SHOT ], + [ 12, MoveId.MIST ], + [ 12, MoveId.HAZE ], + [ 16, MoveId.SLAM ], + [ 21, MoveId.YAWN ], + [ 24, MoveId.AQUA_TAIL ], + [ 28, MoveId.MUDDY_WATER ], + [ 32, MoveId.AMNESIA ], + [ 36, MoveId.TOXIC ], + [ 40, MoveId.EARTHQUAKE ], + ], + [SpeciesId.QUAGSIRE]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.RAIN_DANCE ], + [ 1, MoveId.MUD_SHOT ], + [ 12, MoveId.MIST ], + [ 12, MoveId.HAZE ], + [ 16, MoveId.SLAM ], + [ 23, MoveId.YAWN ], + [ 28, MoveId.AQUA_TAIL ], + [ 34, MoveId.MUDDY_WATER ], + [ 40, MoveId.AMNESIA ], + [ 46, MoveId.TOXIC ], + [ 52, MoveId.EARTHQUAKE ], + ], + [SpeciesId.ESPEON]: [ + [ EVOLVE_MOVE, MoveId.GLITZY_GLOW ], + [ RELEARN_MOVE, MoveId.VEEVEE_VOLLEY ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.BITE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.COVET ], + [ 1, MoveId.COPYCAT ], + [ 5, MoveId.SAND_ATTACK ], + [ 10, MoveId.CONFUSION ], + [ 15, MoveId.QUICK_ATTACK ], + [ 20, MoveId.BABY_DOLL_EYES ], + [ 25, MoveId.SWIFT ], + [ 30, MoveId.PSYBEAM ], + [ 35, MoveId.MORNING_SUN ], + [ 40, MoveId.POWER_SWAP ], + [ 45, MoveId.PSYCHIC ], + [ 50, MoveId.PSYCH_UP ], + [ 55, MoveId.FUTURE_SIGHT ], + [ 60, MoveId.LAST_RESORT ], + ], + [SpeciesId.UMBREON]: [ + [ EVOLVE_MOVE, MoveId.BADDY_BAD ], + [ RELEARN_MOVE, MoveId.VEEVEE_VOLLEY ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.BITE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.SWIFT ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.COVET ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.PURSUIT ], + [ 5, MoveId.SAND_ATTACK ], + [ 10, MoveId.SNARL ], + [ 15, MoveId.QUICK_ATTACK ], + [ 20, MoveId.BABY_DOLL_EYES ], + [ 25, MoveId.CONFUSE_RAY ], + [ 30, MoveId.ASSURANCE ], + [ 35, MoveId.MOONLIGHT ], + [ 40, MoveId.GUARD_SWAP ], + [ 45, MoveId.DARK_PULSE ], + [ 50, MoveId.SCREECH ], + [ 55, MoveId.MEAN_LOOK ], + [ 60, MoveId.LAST_RESORT ], + ], + [SpeciesId.MURKROW]: [ + [ 1, MoveId.PECK ], + [ 1, MoveId.ASTONISH ], + [ 5, MoveId.GUST ], + [ 11, MoveId.HAZE ], + [ 15, MoveId.WING_ATTACK ], + [ 21, MoveId.NIGHT_SHADE ], + [ 25, MoveId.ASSURANCE ], + [ 31, MoveId.TAUNT ], + [ 35, MoveId.MEAN_LOOK ], + [ 40, MoveId.FOUL_PLAY ], + [ 50, MoveId.SUCKER_PUNCH ], + [ 55, MoveId.TORMENT ], + [ 60, MoveId.QUASH ], + ], + [SpeciesId.SLOWKING]: [ + [ RELEARN_MOVE, MoveId.FUTURE_SIGHT ], + [ RELEARN_MOVE, MoveId.CHILLY_RECEPTION ], + [ 1, MoveId.POWER_GEM ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.SWAGGER ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.CURSE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 9, MoveId.YAWN ], + [ 12, MoveId.CONFUSION ], + [ 15, MoveId.DISABLE ], + [ 18, MoveId.WATER_PULSE ], + [ 21, MoveId.HEADBUTT ], + [ 24, MoveId.ZEN_HEADBUTT ], // Previous Stage Move, Galar Slowking Level + [ 27, MoveId.AMNESIA ], + [ 30, MoveId.SURF ], + [ 33, MoveId.SLACK_OFF ], + [ 36, MoveId.PSYCHIC ], + [ 39, MoveId.PSYCH_UP ], + [ 42, MoveId.RAIN_DANCE ], + [ 45, MoveId.HEAL_PULSE ], + ], + [SpeciesId.MISDREAVUS]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.PSYWAVE ], + [ 10, MoveId.ASTONISH ], + [ 14, MoveId.CONFUSE_RAY ], + [ 19, MoveId.MEAN_LOOK ], + [ 23, MoveId.HEX ], + [ 28, MoveId.PSYBEAM ], + [ 32, MoveId.PAIN_SPLIT ], + [ 37, MoveId.PAYBACK ], + [ 41, MoveId.SHADOW_BALL ], + [ 46, MoveId.PERISH_SONG ], + [ 50, MoveId.POWER_GEM ], + ], + [SpeciesId.UNOWN]: [ + [ 1, MoveId.HIDDEN_POWER ], + ], + [SpeciesId.WOBBUFFET]: [ + [ EVOLVE_MOVE, MoveId.COUNTER ], + [ EVOLVE_MOVE, MoveId.DESTINY_BOND ], + [ EVOLVE_MOVE, MoveId.SAFEGUARD ], + [ EVOLVE_MOVE, MoveId.MIRROR_COAT ], + [ 1, MoveId.COUNTER ], + [ 1, MoveId.DESTINY_BOND ], + [ 1, MoveId.SAFEGUARD ], + [ 1, MoveId.MIRROR_COAT ], + [ 1, MoveId.AMNESIA ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.ENCORE ], + ], + [SpeciesId.GIRAFARIG]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.POWER_SWAP ], + [ 1, MoveId.GUARD_SWAP ], + [ 5, MoveId.CONFUSION ], + [ 10, MoveId.ASSURANCE ], + [ 14, MoveId.STOMP ], + [ 19, MoveId.PSYBEAM ], + [ 23, MoveId.AGILITY ], + [ 28, MoveId.DOUBLE_HIT ], + [ 32, MoveId.TWIN_BEAM ], + [ 37, MoveId.CRUNCH ], + [ 41, MoveId.BATON_PASS ], + [ 46, MoveId.NASTY_PLOT ], + [ 50, MoveId.PSYCHIC ], + ], + [SpeciesId.PINECO]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.PROTECT ], + [ 6, MoveId.SELF_DESTRUCT ], + [ 9, MoveId.BUG_BITE ], + [ 12, MoveId.TAKE_DOWN ], + [ 17, MoveId.RAPID_SPIN ], + [ 20, MoveId.ROLLOUT ], + [ 23, MoveId.CURSE ], + [ 28, MoveId.SPIKES ], + [ 31, MoveId.PAYBACK ], + [ 34, MoveId.EXPLOSION ], + [ 39, MoveId.IRON_DEFENSE ], + [ 42, MoveId.GYRO_BALL ], + [ 45, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.FORRETRESS]: [ + [ EVOLVE_MOVE, MoveId.HEAVY_SLAM ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SELF_DESTRUCT ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.ZAP_CANNON ], + [ 1, MoveId.TOXIC_SPIKES ], + [ 1, MoveId.MAGNET_RISE ], + [ 1, MoveId.BUG_BITE ], + [ 1, MoveId.MIRROR_SHOT ], + [ 12, MoveId.TAKE_DOWN ], + [ 17, MoveId.RAPID_SPIN ], + [ 20, MoveId.ROLLOUT ], + [ 23, MoveId.CURSE ], + [ 28, MoveId.SPIKES ], + [ 32, MoveId.PAYBACK ], + [ 36, MoveId.EXPLOSION ], + [ 42, MoveId.IRON_DEFENSE ], + [ 46, MoveId.GYRO_BALL ], + [ 50, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.DUNSPARCE]: [ + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.TACKLE ], // Custom + [ 4, MoveId.MUD_SLAP ], + [ 8, MoveId.ROLLOUT ], + [ 12, MoveId.GLARE ], + [ 16, MoveId.SCREECH ], + [ 20, MoveId.ANCIENT_POWER ], + [ 24, MoveId.DRILL_RUN ], + [ 28, MoveId.YAWN ], + [ 32, MoveId.HYPER_DRILL ], + [ 36, MoveId.ROOST ], + [ 40, MoveId.DRAGON_RUSH ], + [ 44, MoveId.COIL ], + [ 48, MoveId.DOUBLE_EDGE ], + [ 52, MoveId.ENDEAVOR ], + ], + [SpeciesId.GLIGAR]: [ + [ 1, MoveId.POISON_STING ], + [ 4, MoveId.SAND_ATTACK ], + [ 7, MoveId.HARDEN ], + [ 10, MoveId.KNOCK_OFF ], + [ 13, MoveId.QUICK_ATTACK ], + [ 16, MoveId.FURY_CUTTER ], + [ 19, MoveId.POISON_TAIL ], + [ 22, MoveId.ACROBATICS ], + [ 27, MoveId.SLASH ], + [ 30, MoveId.U_TURN ], + [ 35, MoveId.SCREECH ], + [ 40, MoveId.X_SCISSOR ], + [ 45, MoveId.CRABHAMMER ], + [ 50, MoveId.SWORDS_DANCE ], + ], + [SpeciesId.STEELIX]: [ + [ 1, MoveId.BIND ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.MUD_SPORT ], + [ 1, MoveId.CRUNCH ], + [ 1, MoveId.ROCK_POLISH ], + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.FIRE_FANG ], + [ 4, MoveId.SMACK_DOWN ], + [ 8, MoveId.AUTOTOMIZE ], + [ 12, MoveId.DRAGON_BREATH ], + [ 16, MoveId.CURSE ], + [ 20, MoveId.ROCK_SLIDE ], + [ 22, MoveId.GYRO_BALL ], // Custom from USUM + [ 24, MoveId.SCREECH ], + [ 28, MoveId.SAND_TOMB ], + [ 32, MoveId.STEALTH_ROCK ], + [ 36, MoveId.SLAM ], + [ 40, MoveId.SANDSTORM ], + [ 44, MoveId.DIG ], + [ 48, MoveId.IRON_TAIL ], + [ 52, MoveId.STONE_EDGE ], + [ 56, MoveId.DOUBLE_EDGE ], + [ 60, MoveId.MAGNET_RISE ], + ], + [SpeciesId.SNUBBULL]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.SCARY_FACE ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.FIRE_FANG ], + [ 7, MoveId.BITE ], + [ 13, MoveId.LICK ], + [ 19, MoveId.HEADBUTT ], + [ 25, MoveId.ROAR ], + [ 31, MoveId.LAST_RESORT ], + [ 37, MoveId.PLAY_ROUGH ], + [ 43, MoveId.PAYBACK ], + [ 49, MoveId.CRUNCH ], + ], + [SpeciesId.GRANBULL]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.SCARY_FACE ], + [ 1, MoveId.OUTRAGE ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.FIRE_FANG ], + [ 7, MoveId.BITE ], + [ 13, MoveId.LICK ], + [ 19, MoveId.HEADBUTT ], + [ 27, MoveId.ROAR ], + [ 35, MoveId.LAST_RESORT ], + [ 43, MoveId.PLAY_ROUGH ], + [ 51, MoveId.PAYBACK ], + [ 59, MoveId.CRUNCH ], + ], + [SpeciesId.QWILFISH]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.POISON_STING ], + [ 4, MoveId.HARDEN ], + [ 8, MoveId.WATER_GUN ], + [ 12, MoveId.FELL_STINGER ], + [ 16, MoveId.MINIMIZE ], + [ 20, MoveId.SPIKES ], + [ 24, MoveId.BRINE ], + [ 28, MoveId.POISON_JAB ], + [ 32, MoveId.PIN_MISSILE ], + [ 36, MoveId.TOXIC_SPIKES ], + [ 40, MoveId.STOCKPILE ], + [ 40, MoveId.SPIT_UP ], + [ 44, MoveId.TOXIC ], + [ 48, MoveId.AQUA_TAIL ], + [ 52, MoveId.ACUPRESSURE ], + [ 56, MoveId.DESTINY_BOND ], + ], + [SpeciesId.SCIZOR]: [ + [ EVOLVE_MOVE, MoveId.BULLET_PUNCH ], + [ 1, MoveId.WING_ATTACK ], + [ 1, MoveId.LEER ], + [ 1, MoveId.AGILITY ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.FALSE_SWIPE ], + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.AIR_SLASH ], + [ 12, MoveId.METAL_CLAW ], + [ 16, MoveId.DOUBLE_TEAM ], + [ 20, MoveId.DOUBLE_HIT ], + [ 24, MoveId.SLASH ], + [ 28, MoveId.FOCUS_ENERGY ], + [ 30, MoveId.STEEL_WING ], // Custom + [ 32, MoveId.IRON_DEFENSE ], + [ 36, MoveId.IRON_HEAD ], + [ 40, MoveId.X_SCISSOR ], + [ 44, MoveId.SWORDS_DANCE ], + ], + [SpeciesId.SHUCKLE]: [ + [ 1, MoveId.WRAP ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.BIDE ], + [ 1, MoveId.CONSTRICT ], + [ 5, MoveId.ROLLOUT ], + [ 10, MoveId.STRUGGLE_BUG ], + [ 15, MoveId.ROCK_THROW ], + [ 20, MoveId.SAFEGUARD ], + [ 25, MoveId.REST ], + [ 30, MoveId.BUG_BITE ], + [ 35, MoveId.GUARD_SPLIT ], + [ 35, MoveId.POWER_SPLIT ], + [ 40, MoveId.ROCK_SLIDE ], + [ 45, MoveId.GASTRO_ACID ], + [ 50, MoveId.STICKY_WEB ], + [ 55, MoveId.POWER_TRICK ], + [ 60, MoveId.STONE_EDGE ], + [ 65, MoveId.SHELL_SMASH ], + ], + [SpeciesId.HERACROSS]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.ARM_THRUST ], + [ 5, MoveId.FURY_ATTACK ], + [ 10, MoveId.ENDURE ], + [ 15, MoveId.AERIAL_ACE ], + [ 20, MoveId.HORN_ATTACK ], + [ 25, MoveId.COUNTER ], + [ 30, MoveId.BRICK_BREAK ], + [ 35, MoveId.PIN_MISSILE ], + [ 40, MoveId.THROAT_CHOP ], + [ 45, MoveId.THRASH ], + [ 50, MoveId.SWORDS_DANCE ], + [ 55, MoveId.MEGAHORN ], + [ 60, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.SNEASEL]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 6, MoveId.TAUNT ], + [ 12, MoveId.QUICK_ATTACK ], + [ 18, MoveId.METAL_CLAW ], + [ 24, MoveId.ICY_WIND ], + [ 30, MoveId.FURY_SWIPES ], + [ 36, MoveId.HONE_CLAWS ], + [ 42, MoveId.BEAT_UP ], + [ 48, MoveId.AGILITY ], + [ 54, MoveId.SCREECH ], + [ 60, MoveId.SLASH ], + ], + [SpeciesId.TEDDIURSA]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LICK ], + [ 1, MoveId.COVET ], + [ 1, MoveId.FLING ], + [ 1, MoveId.BABY_DOLL_EYES ], + [ 8, MoveId.FURY_SWIPES ], + [ 13, MoveId.PAYBACK ], + [ 17, MoveId.SWEET_SCENT ], + [ 22, MoveId.SLASH ], + [ 25, MoveId.PLAY_NICE ], + [ 29, MoveId.PLAY_ROUGH ], + [ 33, MoveId.CHARM ], + [ 37, MoveId.REST ], + [ 37, MoveId.SNORE ], + [ 41, MoveId.THRASH ], + ], + [SpeciesId.URSARING]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.LICK ], + [ 1, MoveId.COVET ], + [ 1, MoveId.FLING ], // Previous Stage Move + [ 1, MoveId.BABY_DOLL_EYES ], // Previous Stage Move + [ 1, MoveId.FAKE_TEARS ], + [ 1, MoveId.CHARM ], // Previous Stage Move + [ 8, MoveId.FURY_SWIPES ], + [ 13, MoveId.PAYBACK ], + [ 17, MoveId.SWEET_SCENT ], + [ 22, MoveId.SLASH ], + [ 25, MoveId.PLAY_NICE ], + [ 29, MoveId.PLAY_ROUGH ], + [ 35, MoveId.SCARY_FACE ], + [ 41, MoveId.REST ], + [ 41, MoveId.SNORE ], + [ 48, MoveId.HIGH_HORSEPOWER ], + [ 56, MoveId.THRASH ], + [ 64, MoveId.HAMMER_ARM ], + ], + [SpeciesId.SLUGMA]: [ + [ 1, MoveId.SMOG ], + [ 1, MoveId.YAWN ], + [ 5, MoveId.EMBER ], // Custom, Moved from Level 6 to 5 + [ 8, MoveId.ROCK_THROW ], + [ 13, MoveId.HARDEN ], + [ 20, MoveId.CLEAR_SMOG ], + [ 22, MoveId.ANCIENT_POWER ], + [ 27, MoveId.INCINERATE ], + [ 29, MoveId.ROCK_SLIDE ], + [ 34, MoveId.LAVA_PLUME ], + [ 36, MoveId.AMNESIA ], + [ 41, MoveId.BODY_SLAM ], + [ 43, MoveId.RECOVER ], + [ 48, MoveId.FLAMETHROWER ], + [ 50, MoveId.EARTH_POWER ], + ], + [SpeciesId.MAGCARGO]: [ + [ EVOLVE_MOVE, MoveId.SHELL_SMASH ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.SMOG ], + [ 1, MoveId.YAWN ], + [ 1, MoveId.EARTH_POWER ], + [ 13, MoveId.HARDEN ], + [ 20, MoveId.CLEAR_SMOG ], + [ 22, MoveId.ANCIENT_POWER ], + [ 27, MoveId.INCINERATE ], + [ 29, MoveId.ROCK_SLIDE ], + [ 34, MoveId.LAVA_PLUME ], + [ 36, MoveId.AMNESIA ], + [ 43, MoveId.BODY_SLAM ], + [ 47, MoveId.RECOVER ], + [ 54, MoveId.FLAMETHROWER ], + ], + [SpeciesId.SWINUB]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.ODOR_SLEUTH ], + [ 5, MoveId.POWDER_SNOW ], + [ 10, MoveId.FLAIL ], + [ 15, MoveId.ICE_SHARD ], + [ 20, MoveId.MIST ], + [ 25, MoveId.ENDURE ], + [ 30, MoveId.ICY_WIND ], + [ 35, MoveId.AMNESIA ], + [ 40, MoveId.TAKE_DOWN ], + [ 45, MoveId.EARTHQUAKE ], + [ 50, MoveId.BLIZZARD ], + ], + [SpeciesId.PILOSWINE]: [ + [ EVOLVE_MOVE, MoveId.ICE_FANG ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.ODOR_SLEUTH ], + [ 1, MoveId.ANCIENT_POWER ], + [ 15, MoveId.ICE_SHARD ], + [ 20, MoveId.MIST ], + [ 25, MoveId.ENDURE ], + [ 30, MoveId.ICY_WIND ], + [ 37, MoveId.AMNESIA ], + [ 44, MoveId.TAKE_DOWN ], + [ 51, MoveId.EARTHQUAKE ], + [ 58, MoveId.BLIZZARD ], + [ 65, MoveId.THRASH ], + ], + [SpeciesId.CORSOLA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 5, MoveId.WATER_GUN ], + [ 10, MoveId.AQUA_RING ], + [ 15, MoveId.ENDURE ], + [ 20, MoveId.ANCIENT_POWER ], + [ 25, MoveId.BUBBLE_BEAM ], + [ 30, MoveId.FLAIL ], + [ 35, MoveId.LIFE_DEW ], + [ 40, MoveId.POWER_GEM ], + [ 45, MoveId.EARTH_POWER ], + [ 50, MoveId.RECOVER ], + [ 55, MoveId.MIRROR_COAT ], + ], + [SpeciesId.REMORAID]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.HELPING_HAND ], + [ 4, MoveId.WATER_PULSE ], + [ 8, MoveId.FOCUS_ENERGY ], + [ 12, MoveId.PSYBEAM ], + [ 16, MoveId.AURORA_BEAM ], + [ 20, MoveId.BUBBLE_BEAM ], + [ 24, MoveId.LOCK_ON ], + [ 28, MoveId.BULLET_SEED ], + [ 32, MoveId.ICE_BEAM ], + [ 36, MoveId.HYDRO_PUMP ], + [ 40, MoveId.SOAK ], + [ 44, MoveId.HYPER_BEAM ], + ], + [SpeciesId.OCTILLERY]: [ + [ EVOLVE_MOVE, MoveId.OCTAZOOKA ], + [ 1, MoveId.WRAP ], + [ 1, MoveId.CONSTRICT ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.ROCK_BLAST ], + [ 1, MoveId.WATER_PULSE ], + [ 1, MoveId.GUNK_SHOT ], + [ 12, MoveId.PSYBEAM ], + [ 16, MoveId.AURORA_BEAM ], + [ 20, MoveId.BUBBLE_BEAM ], + [ 24, MoveId.LOCK_ON ], + [ 30, MoveId.BULLET_SEED ], + [ 36, MoveId.ICE_BEAM ], + [ 42, MoveId.HYDRO_PUMP ], + [ 48, MoveId.SOAK ], + [ 54, MoveId.HYPER_BEAM ], + ], + [SpeciesId.DELIBIRD]: [ // Given a custom level up learnset + [ 1, MoveId.PRESENT ], + [ 1, MoveId.METRONOME ], + [ 5, MoveId.FAKE_OUT ], + [ 5, MoveId.POWDER_SNOW ], + [ 6, MoveId.MIST ], + [ 10, MoveId.ICE_SHARD ], + [ 15, MoveId.AERIAL_ACE ], + [ 20, MoveId.ICY_WIND ], + [ 25, MoveId.DRILL_PECK ], + [ 30, MoveId.ICE_PUNCH ], + [ 35, MoveId.HAZE ], + [ 40, MoveId.AIR_SLASH ], + [ 45, MoveId.TAILWIND ], + [ 50, MoveId.SNOWSCAPE ], + [ 55, MoveId.BLIZZARD ], + [ 60, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.MANTINE]: [ + [ 1, MoveId.WING_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.PSYBEAM ], + [ 1, MoveId.SIGNAL_BEAM ], + [ 1, MoveId.BULLET_SEED ], + [ 1, MoveId.ROOST ], + [ 12, MoveId.WATER_PULSE ], + [ 16, MoveId.WIDE_GUARD ], + [ 20, MoveId.AGILITY ], + [ 24, MoveId.BUBBLE_BEAM ], + [ 28, MoveId.HEADBUTT ], + [ 32, MoveId.AIR_SLASH ], + [ 36, MoveId.AQUA_RING ], + [ 40, MoveId.BOUNCE ], + [ 44, MoveId.TAKE_DOWN ], + [ 48, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.SKARMORY]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 4, MoveId.SAND_ATTACK ], + [ 8, MoveId.FURY_ATTACK ], + [ 12, MoveId.METAL_CLAW ], + [ 16, MoveId.AGILITY ], + [ 20, MoveId.WING_ATTACK ], + [ 24, MoveId.SLASH ], + [ 28, MoveId.STEEL_WING ], + [ 32, MoveId.PAYBACK ], + [ 36, MoveId.DRILL_PECK ], + [ 40, MoveId.METAL_SOUND ], + [ 44, MoveId.SPIKES ], + [ 48, MoveId.IRON_DEFENSE ], + [ 52, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.HOUNDOUR]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 4, MoveId.HOWL ], + [ 8, MoveId.SMOG ], + [ 13, MoveId.ROAR ], + [ 16, MoveId.BITE ], + [ 20, MoveId.INCINERATE ], + [ 25, MoveId.BEAT_UP ], + [ 28, MoveId.FIRE_FANG ], + [ 32, MoveId.TORMENT ], + [ 37, MoveId.COMEUPPANCE ], + [ 40, MoveId.FOUL_PLAY ], + [ 44, MoveId.FLAMETHROWER ], + [ 49, MoveId.CRUNCH ], + [ 52, MoveId.NASTY_PLOT ], + [ 56, MoveId.INFERNO ], + ], + [SpeciesId.HOUNDOOM]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.SMOG ], + [ 1, MoveId.HOWL ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.THUNDER_FANG ], + [ 13, MoveId.ROAR ], + [ 16, MoveId.BITE ], + [ 20, MoveId.INCINERATE ], + [ 26, MoveId.BEAT_UP ], + [ 30, MoveId.FIRE_FANG ], + [ 35, MoveId.TORMENT ], + [ 41, MoveId.COMEUPPANCE ], + [ 45, MoveId.FOUL_PLAY ], + [ 50, MoveId.FLAMETHROWER ], + [ 56, MoveId.CRUNCH ], + [ 62, MoveId.INFERNO ], + ], + [SpeciesId.KINGDRA]: [ + [ RELEARN_MOVE, MoveId.LASER_FOCUS ], // Previous Stage Move + [ 1, MoveId.LEER ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.TWISTER ], + [ 1, MoveId.WHIRLPOOL ], + [ 1, MoveId.YAWN ], + [ 15, MoveId.FOCUS_ENERGY ], + [ 20, MoveId.DRAGON_BREATH ], + [ 25, MoveId.BUBBLE_BEAM ], + [ 30, MoveId.AGILITY ], + [ 37, MoveId.WATER_PULSE ], + [ 44, MoveId.DRAGON_PULSE ], + [ 51, MoveId.HYDRO_PUMP ], + [ 58, MoveId.DRAGON_DANCE ], + [ 65, MoveId.RAIN_DANCE ], + [ 72, MoveId.WAVE_CRASH ], + ], + [SpeciesId.PHANPY]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.ODOR_SLEUTH ], + [ 6, MoveId.FLAIL ], + [ 10, MoveId.ROLLOUT ], + [ 15, MoveId.BULLDOZE ], + [ 19, MoveId.ENDURE ], + [ 24, MoveId.SLAM ], + [ 28, MoveId.TAKE_DOWN ], + [ 33, MoveId.CHARM ], + [ 37, MoveId.LAST_RESORT ], + [ 42, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.DONPHAN]: [ + [ EVOLVE_MOVE, MoveId.FURY_ATTACK ], + [ 1, MoveId.TACKLE ], // Previous Stage Move + [ 1, MoveId.GROWL ], + [ 1, MoveId.HORN_ATTACK ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.ODOR_SLEUTH ], // Previous Stage Move + [ 1, MoveId.FLAIL ], // Previous Stage Move + [ 1, MoveId.ENDURE ], // Previous Stage Move + [ 1, MoveId.TAKE_DOWN ], // Previous Stage Move + [ 1, MoveId.CHARM ], // Previous Stage Move + [ 1, MoveId.LAST_RESORT ], // Previous Stage Move + [ 1, MoveId.DOUBLE_EDGE ], // Previous Stage Move + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.FIRE_FANG ], + [ 1, MoveId.BULLDOZE ], + [ 6, MoveId.RAPID_SPIN ], + [ 10, MoveId.ROLLOUT ], + [ 15, MoveId.ASSURANCE ], + [ 19, MoveId.KNOCK_OFF ], + [ 24, MoveId.SLAM ], + [ 30, MoveId.STOMPING_TANTRUM ], + [ 37, MoveId.SCARY_FACE ], + [ 43, MoveId.EARTHQUAKE ], + [ 50, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.PORYGON2]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.CONVERSION ], + [ 1, MoveId.RECYCLE ], + [ 1, MoveId.MAGNET_RISE ], + [ 1, MoveId.MAGIC_COAT ], // Previous Stage Move + [ 15, MoveId.THUNDER_SHOCK ], + [ 20, MoveId.PSYBEAM ], + [ 25, MoveId.CONVERSION_2 ], + [ 30, MoveId.AGILITY ], + [ 35, MoveId.RECOVER ], + [ 40, MoveId.DISCHARGE ], + [ 45, MoveId.TRI_ATTACK ], + [ 50, MoveId.LOCK_ON ], + [ 55, MoveId.ZAP_CANNON ], + [ 60, MoveId.HYPER_BEAM ], + ], + [SpeciesId.STANTLER]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.ME_FIRST ], + [ 3, MoveId.LEER ], + [ 7, MoveId.ASTONISH ], + [ 10, MoveId.HYPNOSIS ], + [ 13, MoveId.STOMP ], + [ 16, MoveId.SAND_ATTACK ], + [ 21, MoveId.TAKE_DOWN ], + [ 23, MoveId.CONFUSE_RAY ], + [ 25, MoveId.PSYSHIELD_BASH ], + [ 27, MoveId.CALM_MIND ], + [ 32, MoveId.ROLE_PLAY ], + [ 37, MoveId.ZEN_HEADBUTT ], + [ 49, MoveId.IMPRISON ], + [ 55, MoveId.DOUBLE_EDGE ], ], // Reverting Smeargle back to pre gen9 implementation, to make it less dependent on access to Memory Mushrooms - [Species.SMEARGLE]: [ - [ 1, Moves.SKETCH ], - [ 11, Moves.SKETCH ], - [ 21, Moves.SKETCH ], - [ 31, Moves.SKETCH ], - [ 41, Moves.SKETCH ], - [ 51, Moves.SKETCH ], - [ 61, Moves.SKETCH ], - [ 71, Moves.SKETCH ], - [ 81, Moves.SKETCH ], - [ 91, Moves.SKETCH ], - ], - [Species.TYROGUE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.HELPING_HAND ], - [ 10, Moves.LOW_SWEEP ], // Custom - [ 10, Moves.MACH_PUNCH ], // Custom - [ 10, Moves.RAPID_SPIN ], // Custom - ], - [Species.HITMONTOP]: [ - [ EVOLVE_MOVE, Moves.TRIPLE_KICK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.FEINT ], - [ 1, Moves.PURSUIT ], - [ 1, Moves.ROLLING_KICK ], - [ 1, Moves.LOW_SWEEP ], // Previous Stage Move, Custom - [ 1, Moves.MACH_PUNCH ], // Previous Stage Move, Custom - [ 4, Moves.QUICK_ATTACK ], - [ 8, Moves.GYRO_BALL ], - [ 12, Moves.DETECT ], - [ 16, Moves.REVENGE ], - [ 21, Moves.WIDE_GUARD ], - [ 21, Moves.QUICK_GUARD ], - [ 24, Moves.SUCKER_PUNCH ], - [ 28, Moves.AGILITY ], - [ 32, Moves.DIG ], - [ 36, Moves.CLOSE_COMBAT ], - [ 40, Moves.COUNTER ], - [ 44, Moves.ENDEAVOR ], - ], - [Species.SMOOCHUM]: [ - [ 1, Moves.POUND ], - [ 1, Moves.LICK ], - [ 4, Moves.POWDER_SNOW ], - [ 8, Moves.COPYCAT ], - [ 12, Moves.CONFUSION ], - [ 16, Moves.COVET ], - [ 20, Moves.SING ], - [ 24, Moves.FAKE_TEARS ], - [ 28, Moves.ICE_PUNCH ], - [ 32, Moves.PSYCHIC ], - [ 36, Moves.SWEET_KISS ], - [ 40, Moves.MEAN_LOOK ], - [ 44, Moves.PERISH_SONG ], - [ 48, Moves.BLIZZARD ], - ], - [Species.ELEKID]: [ - [ 1, Moves.LEER ], - [ 1, Moves.QUICK_ATTACK ], - [ 4, Moves.THUNDER_SHOCK ], - [ 8, Moves.CHARGE ], - [ 12, Moves.SWIFT ], - [ 16, Moves.SHOCK_WAVE ], - [ 20, Moves.THUNDER_WAVE ], - [ 24, Moves.SCREECH ], - [ 28, Moves.THUNDER_PUNCH ], - [ 32, Moves.DISCHARGE ], - [ 36, Moves.LOW_KICK ], - [ 40, Moves.THUNDERBOLT ], - [ 44, Moves.LIGHT_SCREEN ], - [ 48, Moves.THUNDER ], - ], - [Species.MAGBY]: [ - [ 1, Moves.LEER ], - [ 1, Moves.SMOG ], - [ 4, Moves.EMBER ], - [ 8, Moves.SMOKESCREEN ], - [ 12, Moves.CLEAR_SMOG ], - [ 16, Moves.FLAME_WHEEL ], - [ 20, Moves.CONFUSE_RAY ], - [ 24, Moves.SCARY_FACE ], - [ 28, Moves.FIRE_PUNCH ], - [ 32, Moves.LAVA_PLUME ], - [ 36, Moves.LOW_KICK ], - [ 40, Moves.FLAMETHROWER ], - [ 44, Moves.SUNNY_DAY ], - [ 48, Moves.FIRE_BLAST ], - ], - [Species.MILTANK]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 5, Moves.ROLLOUT ], - [ 10, Moves.DEFENSE_CURL ], - [ 15, Moves.STOMP ], - [ 20, Moves.HEAL_BELL ], - [ 25, Moves.HEADBUTT ], - [ 30, Moves.ZEN_HEADBUTT ], - [ 35, Moves.MILK_DRINK ], - [ 40, Moves.BODY_SLAM ], - [ 45, Moves.PLAY_ROUGH ], - [ 50, Moves.CHARM ], - [ 55, Moves.HIGH_HORSEPOWER ], - ], - [Species.BLISSEY]: [ - [ 1, Moves.POUND ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.COVET ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.DISARMING_VOICE ], - [ 4, Moves.TAIL_WHIP ], - [ 8, Moves.ECHOED_VOICE ], - [ 12, Moves.LIFE_DEW ], - [ 16, Moves.SING ], - [ 20, Moves.FLING ], - [ 24, Moves.TAKE_DOWN ], - [ 28, Moves.HEAL_PULSE ], - [ 32, Moves.HELPING_HAND ], - [ 36, Moves.LIGHT_SCREEN ], - [ 40, Moves.DOUBLE_EDGE ], - [ 44, Moves.SOFT_BOILED ], - [ 48, Moves.LAST_RESORT ], - [ 52, Moves.HEALING_WISH ], - ], - [Species.RAIKOU]: [ - [ 1, Moves.LEER ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.EXTREME_SPEED ], - [ 1, Moves.CHARGE ], - [ 6, Moves.SPARK ], - [ 12, Moves.BITE ], - [ 18, Moves.CALM_MIND ], - [ 24, Moves.ROAR ], - [ 30, Moves.THUNDER_FANG ], - [ 36, Moves.HOWL ], - [ 42, Moves.CRUNCH ], - [ 48, Moves.EXTRASENSORY ], - [ 54, Moves.DISCHARGE ], - [ 60, Moves.REFLECT ], - [ 66, Moves.RAIN_DANCE ], - [ 72, Moves.THUNDER ], - [ 78, Moves.ZAP_CANNON ], - ], - [Species.ENTEI]: [ - [ RELEARN_MOVE, Moves.SACRED_FIRE ], - [ RELEARN_MOVE, Moves.EXTREME_SPEED ], - [ 1, Moves.STOMP ], - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 1, Moves.SMOKESCREEN ], - [ 6, Moves.FLAME_WHEEL ], - [ 12, Moves.BITE ], - [ 18, Moves.CALM_MIND ], - [ 24, Moves.ROAR ], - [ 30, Moves.FIRE_FANG ], - [ 36, Moves.SCARY_FACE ], - [ 42, Moves.CRUNCH ], - [ 48, Moves.EXTRASENSORY ], - [ 54, Moves.LAVA_PLUME ], - [ 60, Moves.SWAGGER ], - [ 66, Moves.SUNNY_DAY ], - [ 72, Moves.FIRE_BLAST ], - [ 78, Moves.ERUPTION ], - ], - [Species.SUICUNE]: [ - [ RELEARN_MOVE, Moves.EXTREME_SPEED ], - [ RELEARN_MOVE, Moves.SHEER_COLD ], - [ 1, Moves.GUST ], - [ 1, Moves.LEER ], - [ 1, Moves.MIST ], - [ 1, Moves.WATER_GUN ], - [ 6, Moves.WATER_PULSE ], - [ 12, Moves.BITE ], - [ 18, Moves.CALM_MIND ], - [ 24, Moves.ROAR ], - [ 30, Moves.ICE_FANG ], - [ 36, Moves.TAILWIND ], - [ 42, Moves.CRUNCH ], - [ 48, Moves.EXTRASENSORY ], - [ 54, Moves.SURF ], - [ 60, Moves.MIRROR_COAT ], - [ 66, Moves.RAIN_DANCE ], - [ 72, Moves.HYDRO_PUMP ], - [ 78, Moves.BLIZZARD ], - ], - [Species.LARVITAR]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 3, Moves.ROCK_THROW ], - [ 6, Moves.PAYBACK ], - [ 9, Moves.BITE ], - [ 12, Moves.SCARY_FACE ], - [ 15, Moves.ROCK_SLIDE ], - [ 18, Moves.STOMPING_TANTRUM ], - [ 21, Moves.SCREECH ], - [ 24, Moves.SMACK_DOWN ], - [ 27, Moves.CRUNCH ], - [ 31, Moves.EARTHQUAKE ], - [ 33, Moves.STONE_EDGE ], - [ 36, Moves.THRASH ], - [ 39, Moves.SANDSTORM ], - [ 42, Moves.HYPER_BEAM ], - ], - [Species.PUPITAR]: [ - [ EVOLVE_MOVE, Moves.IRON_DEFENSE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.PAYBACK ], - [ 9, Moves.BITE ], - [ 12, Moves.SCARY_FACE ], - [ 15, Moves.ROCK_SLIDE ], - [ 18, Moves.STOMPING_TANTRUM ], - [ 21, Moves.SCREECH ], - [ 24, Moves.SMACK_DOWN ], - [ 27, Moves.CRUNCH ], - [ 33, Moves.EARTHQUAKE ], - [ 37, Moves.STONE_EDGE ], - [ 42, Moves.THRASH ], - [ 47, Moves.SANDSTORM ], - [ 52, Moves.HYPER_BEAM ], - ], - [Species.TYRANITAR]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.IRON_DEFENSE ], - [ 1, Moves.PAYBACK ], - [ 1, Moves.DARK_PULSE ], - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.FIRE_FANG ], - [ 9, Moves.BITE ], - [ 12, Moves.SCARY_FACE ], - [ 15, Moves.ROCK_SLIDE ], - [ 18, Moves.STOMPING_TANTRUM ], - [ 21, Moves.SCREECH ], - [ 24, Moves.SMACK_DOWN ], - [ 27, Moves.CRUNCH ], - [ 33, Moves.EARTHQUAKE ], - [ 37, Moves.STONE_EDGE ], - [ 42, Moves.THRASH ], - [ 47, Moves.SANDSTORM ], - [ 52, Moves.HYPER_BEAM ], - [ 59, Moves.GIGA_IMPACT ], - ], - [Species.LUGIA]: [ - [ RELEARN_MOVE, Moves.DRAGON_RUSH ], - [ 1, Moves.GUST ], - [ 1, Moves.WHIRLWIND ], - [ 1, Moves.ANCIENT_POWER ], - [ 1, Moves.WEATHER_BALL ], - [ 9, Moves.MIST ], - [ 18, Moves.SAFEGUARD ], - [ 27, Moves.CALM_MIND ], - [ 36, Moves.EXTRASENSORY ], - [ 45, Moves.RECOVER ], - [ 54, Moves.AEROBLAST ], - [ 63, Moves.RAIN_DANCE ], - [ 72, Moves.HYDRO_PUMP ], - [ 81, Moves.FUTURE_SIGHT ], - [ 90, Moves.SKY_ATTACK ], - ], - [Species.HO_OH]: [ - [ 1, Moves.GUST ], - [ 1, Moves.WHIRLWIND ], - [ 1, Moves.ANCIENT_POWER ], - [ 1, Moves.WEATHER_BALL ], - [ 9, Moves.LIFE_DEW ], - [ 18, Moves.SAFEGUARD ], - [ 27, Moves.CALM_MIND ], - [ 36, Moves.EXTRASENSORY ], - [ 45, Moves.RECOVER ], - [ 54, Moves.SACRED_FIRE ], - [ 63, Moves.SUNNY_DAY ], - [ 72, Moves.FIRE_BLAST ], - [ 81, Moves.FUTURE_SIGHT ], - [ 90, Moves.SKY_ATTACK ], - [ 99, Moves.OVERHEAT ], - ], - [Species.CELEBI]: [ - [ 1, Moves.CONFUSION ], - [ 1, Moves.HEAL_BELL ], - [ 10, Moves.MAGICAL_LEAF ], - [ 20, Moves.BATON_PASS ], - [ 30, Moves.ANCIENT_POWER ], - [ 40, Moves.LIFE_DEW ], - [ 50, Moves.LEECH_SEED ], - [ 55, Moves.HEAL_BLOCK ], - [ 60, Moves.RECOVER ], - [ 70, Moves.FUTURE_SIGHT ], - [ 80, Moves.HEALING_WISH ], - [ 90, Moves.LEAF_STORM ], - [ 100, Moves.PERISH_SONG ], - ], - [Species.TREECKO]: [ - [ 1, Moves.POUND ], - [ 1, Moves.LEER ], - [ 3, Moves.LEAFAGE ], - [ 6, Moves.QUICK_ATTACK ], - [ 9, Moves.MEGA_DRAIN ], - [ 12, Moves.DETECT ], - [ 15, Moves.QUICK_GUARD ], - [ 18, Moves.ASSURANCE ], - [ 21, Moves.GIGA_DRAIN ], - [ 24, Moves.SLAM ], - [ 27, Moves.DOUBLE_TEAM ], - [ 30, Moves.ENERGY_BALL ], - [ 33, Moves.SCREECH ], - [ 36, Moves.ENDEAVOR ], - [ 39, Moves.LEAF_STORM ], - ], - [Species.GROVYLE]: [ - [ RELEARN_MOVE, Moves.FALSE_SWIPE ], - [ RELEARN_MOVE, Moves.FURY_CUTTER ], - [ RELEARN_MOVE, Moves.X_SCISSOR ], - [ RELEARN_MOVE, Moves.ENERGY_BALL ], - [ 1, Moves.POUND ], - [ 1, Moves.LEER ], - [ 1, Moves.LEAFAGE ], - [ 1, Moves.QUICK_ATTACK ], - [ 9, Moves.MEGA_DRAIN ], - [ 12, Moves.DETECT ], - [ 15, Moves.QUICK_GUARD ], - [ 20, Moves.ASSURANCE ], - [ 25, Moves.GIGA_DRAIN ], - [ 30, Moves.SLAM ], - [ 35, Moves.DOUBLE_TEAM ], - [ 40, Moves.LEAF_BLADE ], - [ 45, Moves.SCREECH ], - [ 50, Moves.ENDEAVOR ], - [ 55, Moves.LEAF_STORM ], - ], - [Species.SCEPTILE]: [ - [ EVOLVE_MOVE, Moves.LEAF_BLADE ], - [ RELEARN_MOVE, Moves.FALSE_SWIPE ], - [ RELEARN_MOVE, Moves.FURY_CUTTER ], - [ RELEARN_MOVE, Moves.X_SCISSOR ], - [ RELEARN_MOVE, Moves.ENERGY_BALL ], - [ RELEARN_MOVE, Moves.SHED_TAIL ], - [ 1, Moves.POUND ], - [ 1, Moves.LEER ], - [ 1, Moves.LEAFAGE ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.DUAL_CHOP ], - [ 5, Moves.MEGA_DRAIN ], - [ 12, Moves.DETECT ], - [ 15, Moves.QUICK_GUARD ], - [ 20, Moves.ASSURANCE ], - [ 25, Moves.GIGA_DRAIN ], - [ 30, Moves.SLAM ], - [ 35, Moves.DOUBLE_TEAM ], - [ 42, Moves.SCREECH ], - [ 49, Moves.ENDEAVOR ], - [ 56, Moves.LEAF_STORM ], - ], - [Species.TORCHIC]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 3, Moves.EMBER ], - [ 6, Moves.QUICK_ATTACK ], - [ 9, Moves.FLAME_CHARGE ], - [ 12, Moves.DETECT ], - [ 15, Moves.SAND_ATTACK ], - [ 18, Moves.AERIAL_ACE ], - [ 21, Moves.SLASH ], - [ 24, Moves.BOUNCE ], - [ 27, Moves.FOCUS_ENERGY ], - [ 30, Moves.FLAMETHROWER ], - [ 33, Moves.FEATHER_DANCE ], - [ 36, Moves.REVERSAL ], - [ 39, Moves.FLARE_BLITZ ], - ], - [Species.COMBUSKEN]: [ - [ EVOLVE_MOVE, Moves.DOUBLE_KICK ], - [ RELEARN_MOVE, Moves.FLAMETHROWER ], - [ RELEARN_MOVE, Moves.FEATHER_DANCE ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 1, Moves.EMBER ], - [ 1, Moves.QUICK_ATTACK ], - [ 9, Moves.FLAME_CHARGE ], - [ 12, Moves.DETECT ], - [ 15, Moves.SAND_ATTACK ], - [ 20, Moves.AERIAL_ACE ], - [ 25, Moves.SLASH ], - [ 30, Moves.BOUNCE ], - [ 35, Moves.FOCUS_ENERGY ], - [ 40, Moves.BLAZE_KICK ], - [ 45, Moves.BULK_UP ], - [ 50, Moves.REVERSAL ], - [ 55, Moves.FLARE_BLITZ ], - ], - [Species.BLAZIKEN]: [ - [ EVOLVE_MOVE, Moves.BLAZE_KICK ], - [ RELEARN_MOVE, Moves.FIRE_PUNCH ], - [ RELEARN_MOVE, Moves.EMBER ], - [ RELEARN_MOVE, Moves.FLAMETHROWER ], - [ RELEARN_MOVE, Moves.FEATHER_DANCE ], - [ 1, Moves.DOUBLE_KICK ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 1, Moves.QUICK_ATTACK ], - [ 9, Moves.FLAME_CHARGE ], - [ 12, Moves.DETECT ], - [ 15, Moves.SAND_ATTACK ], - [ 20, Moves.AERIAL_ACE ], - [ 25, Moves.SLASH ], - [ 30, Moves.BOUNCE ], - [ 35, Moves.FOCUS_ENERGY ], - [ 42, Moves.BULK_UP ], - [ 49, Moves.REVERSAL ], - [ 56, Moves.FLARE_BLITZ ], - [ 63, Moves.BRAVE_BIRD ], - ], - [Species.MUDKIP]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 3, Moves.WATER_GUN ], - [ 6, Moves.ROCK_SMASH ], - [ 9, Moves.ROCK_THROW ], - [ 12, Moves.PROTECT ], - [ 15, Moves.SUPERSONIC ], - [ 18, Moves.WATER_PULSE ], - [ 21, Moves.ROCK_SLIDE ], - [ 24, Moves.TAKE_DOWN ], - [ 27, Moves.AMNESIA ], - [ 30, Moves.SURF ], - [ 33, Moves.SCREECH ], - [ 36, Moves.ENDEAVOR ], - [ 39, Moves.HYDRO_PUMP ], - ], - [Species.MARSHTOMP]: [ - [ EVOLVE_MOVE, Moves.MUD_SHOT ], - [ RELEARN_MOVE, Moves.SURF ], // Previous Stage Move - [ RELEARN_MOVE, Moves.ROCK_SMASH ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 9, Moves.ROCK_THROW ], - [ 12, Moves.PROTECT ], - [ 15, Moves.SUPERSONIC ], - [ 20, Moves.WATER_PULSE ], - [ 25, Moves.ROCK_SLIDE ], - [ 30, Moves.TAKE_DOWN ], - [ 35, Moves.AMNESIA ], - [ 40, Moves.MUDDY_WATER ], - [ 45, Moves.SCREECH ], - [ 50, Moves.ENDEAVOR ], - [ 55, Moves.HYDRO_PUMP ], - ], - [Species.SWAMPERT]: [ - [ RELEARN_MOVE, Moves.SURF ], - [ RELEARN_MOVE, Moves.EARTHQUAKE ], - [ RELEARN_MOVE, Moves.ROCK_SMASH ], - [ RELEARN_MOVE, Moves.HAMMER_ARM ], - [ 1, Moves.MUD_SHOT ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 9, Moves.ROCK_THROW ], - [ 12, Moves.PROTECT ], - [ 15, Moves.SUPERSONIC ], - [ 20, Moves.WATER_PULSE ], - [ 25, Moves.ROCK_SLIDE ], - [ 30, Moves.TAKE_DOWN ], - [ 35, Moves.AMNESIA ], - [ 42, Moves.MUDDY_WATER ], - [ 49, Moves.SCREECH ], - [ 56, Moves.ENDEAVOR ], - [ 63, Moves.HYDRO_PUMP ], - ], - [Species.POOCHYENA]: [ - [ 1, Moves.TACKLE ], - [ 4, Moves.HOWL ], - [ 7, Moves.SAND_ATTACK ], - [ 10, Moves.BITE ], - [ 13, Moves.LEER ], - [ 16, Moves.ROAR ], - [ 19, Moves.SWAGGER ], - [ 22, Moves.ASSURANCE ], - [ 25, Moves.SCARY_FACE ], - [ 28, Moves.TAUNT ], - [ 31, Moves.CRUNCH ], - [ 34, Moves.YAWN ], - [ 36, Moves.TAKE_DOWN ], - [ 40, Moves.SUCKER_PUNCH ], - [ 44, Moves.PLAY_ROUGH ], - ], - [Species.MIGHTYENA]: [ - [ EVOLVE_MOVE, Moves.SNARL ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.BITE ], - [ 1, Moves.THIEF ], - [ 1, Moves.CRUNCH ], - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.FIRE_FANG ], - [ 13, Moves.LEER ], - [ 13, Moves.HOWL ], - [ 16, Moves.ROAR ], - [ 20, Moves.SWAGGER ], - [ 24, Moves.ASSURANCE ], - [ 28, Moves.SCARY_FACE ], - [ 36, Moves.TAUNT ], - [ 44, Moves.YAWN ], - [ 48, Moves.TAKE_DOWN ], - [ 52, Moves.SUCKER_PUNCH ], - [ 56, Moves.PLAY_ROUGH ], - ], - [Species.ZIGZAGOON]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 3, Moves.SAND_ATTACK ], - [ 6, Moves.TAIL_WHIP ], - [ 9, Moves.COVET ], - [ 12, Moves.HEADBUTT ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 18, Moves.PIN_MISSILE ], - [ 21, Moves.REST ], - [ 24, Moves.TAKE_DOWN ], - [ 27, Moves.FLING ], - [ 30, Moves.FLAIL ], - [ 33, Moves.BELLY_DRUM ], - [ 36, Moves.DOUBLE_EDGE ], - ], - [Species.LINOONE]: [ - [ EVOLVE_MOVE, Moves.SLASH ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.PIN_MISSILE ], - [ 1, Moves.GROWL ], - [ 1, Moves.SWITCHEROO ], - [ 1, Moves.BABY_DOLL_EYES ], - [ 1, Moves.ROTOTILLER ], - [ 9, Moves.COVET ], - [ 12, Moves.HEADBUTT ], - [ 15, Moves.HONE_CLAWS ], - [ 18, Moves.FURY_SWIPES ], - [ 23, Moves.REST ], - [ 28, Moves.TAKE_DOWN ], - [ 33, Moves.FLING ], - [ 38, Moves.FLAIL ], - [ 43, Moves.BELLY_DRUM ], - [ 48, Moves.DOUBLE_EDGE ], - ], - [Species.WURMPLE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.STRING_SHOT ], - [ 5, Moves.POISON_STING ], - [ 15, Moves.BUG_BITE ], - ], - [Species.SILCOON]: [ - [ EVOLVE_MOVE, Moves.HARDEN ], - [ RELEARN_MOVE, Moves.TACKLE ], // Previous Stage Move - [ RELEARN_MOVE, Moves.STRING_SHOT ], // Previous Stage Move - [ RELEARN_MOVE, Moves.POISON_STING ], // Previous Stage Move - [ RELEARN_MOVE, Moves.BUG_BITE ], // Previous Stage Move - [ 1, Moves.HARDEN ], - ], - [Species.BEAUTIFLY]: [ - [ EVOLVE_MOVE, Moves.GUST ], - [ 1, Moves.TACKLE ], // Previous Stage Move - [ 1, Moves.BUG_BITE ], - [ 1, Moves.GUST ], - [ 1, Moves.HARDEN ], - [ 1, Moves.STRING_SHOT ], - [ 1, Moves.POISON_STING ], - [ 12, Moves.ABSORB ], - [ 15, Moves.STUN_SPORE ], - [ 17, Moves.MORNING_SUN ], - [ 20, Moves.AIR_CUTTER ], - [ 22, Moves.MEGA_DRAIN ], - [ 25, Moves.LEECH_LIFE ], - [ 27, Moves.ATTRACT ], - [ 30, Moves.WHIRLWIND ], - [ 32, Moves.GIGA_DRAIN ], - [ 35, Moves.BUG_BUZZ ], - [ 37, Moves.PROTECT ], - [ 40, Moves.QUIVER_DANCE ], - ], - [Species.CASCOON]: [ - [ EVOLVE_MOVE, Moves.HARDEN ], - [ RELEARN_MOVE, Moves.TACKLE ], // Previous Stage Move - [ RELEARN_MOVE, Moves.STRING_SHOT ], // Previous Stage Move - [ RELEARN_MOVE, Moves.POISON_STING ], // Previous Stage Move - [ RELEARN_MOVE, Moves.BUG_BITE ], // Previous Stage Move - [ 1, Moves.HARDEN ], - ], - [Species.DUSTOX]: [ - [ EVOLVE_MOVE, Moves.GUST ], - [ 1, Moves.TACKLE ], // Previous Stage Move - [ 1, Moves.BUG_BITE ], - [ 1, Moves.GUST ], - [ 1, Moves.HARDEN ], - [ 1, Moves.STRING_SHOT ], - [ 1, Moves.POISON_STING ], - [ 12, Moves.CONFUSION ], - [ 15, Moves.POISON_POWDER ], - [ 17, Moves.MOONLIGHT ], - [ 20, Moves.VENOSHOCK ], - [ 22, Moves.PSYBEAM ], - [ 25, Moves.LEECH_LIFE ], - [ 27, Moves.LIGHT_SCREEN ], - [ 30, Moves.WHIRLWIND ], - [ 32, Moves.TOXIC ], - [ 35, Moves.BUG_BUZZ ], - [ 37, Moves.PROTECT ], - [ 40, Moves.QUIVER_DANCE ], - ], - [Species.LOTAD]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.ASTONISH ], - [ 3, Moves.ABSORB ], - [ 6, Moves.WATER_GUN ], - [ 9, Moves.MIST ], - [ 12, Moves.MEGA_DRAIN ], - [ 16, Moves.FLAIL ], - [ 20, Moves.BUBBLE_BEAM ], - [ 24, Moves.LEECH_SEED ], - [ 28, Moves.GIGA_DRAIN ], - [ 33, Moves.RAIN_DANCE ], - [ 38, Moves.ZEN_HEADBUTT ], - [ 43, Moves.ENERGY_BALL ], - ], - [Species.LOMBRE]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.ABSORB ], - [ 1, Moves.FLAIL ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.RAIN_DANCE ], // Previous Stage Move - [ 1, Moves.KNOCK_OFF ], - [ 1, Moves.TEETER_DANCE ], - [ 1, Moves.ASTONISH ], - [ 9, Moves.MIST ], - [ 12, Moves.MEGA_DRAIN ], - [ 18, Moves.FURY_SWIPES ], - [ 24, Moves.BUBBLE_BEAM ], - [ 30, Moves.LEECH_SEED ], - [ 36, Moves.GIGA_DRAIN ], - [ 50, Moves.ZEN_HEADBUTT ], - [ 57, Moves.ENERGY_BALL ], - [ 64, Moves.HYDRO_PUMP ], - ], - [Species.LUDICOLO]: [ - [ RELEARN_MOVE, Moves.GROWL ], - [ RELEARN_MOVE, Moves.MIST ], - [ RELEARN_MOVE, Moves.WATER_GUN ], - [ RELEARN_MOVE, Moves.HYDRO_PUMP ], - [ RELEARN_MOVE, Moves.ABSORB ], - [ RELEARN_MOVE, Moves.MEGA_DRAIN ], - [ RELEARN_MOVE, Moves.FURY_SWIPES ], - [ RELEARN_MOVE, Moves.FLAIL ], - [ RELEARN_MOVE, Moves.KNOCK_OFF ], - [ RELEARN_MOVE, Moves.TEETER_DANCE ], - [ RELEARN_MOVE, Moves.ASTONISH ], - [ RELEARN_MOVE, Moves.ENERGY_BALL ], - [ RELEARN_MOVE, Moves.ZEN_HEADBUTT ], - [ RELEARN_MOVE, Moves.LEECH_SEED ], // Previous Stage Move - [ RELEARN_MOVE, Moves.GIGA_DRAIN ], // Previous Stage Move - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.BUBBLE_BEAM ], - [ 1, Moves.RAIN_DANCE ], - ], - [Species.SEEDOT]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.BIDE ], - [ 3, Moves.ABSORB ], - [ 6, Moves.ASTONISH ], - [ 9, Moves.GROWTH ], - [ 12, Moves.ROLLOUT ], - [ 15, Moves.MEGA_DRAIN ], - [ 18, Moves.PAYBACK ], - [ 21, Moves.HEADBUTT ], - [ 24, Moves.SUNNY_DAY ], - [ 27, Moves.SYNTHESIS ], - [ 30, Moves.SUCKER_PUNCH ], - [ 33, Moves.EXPLOSION ], - ], - [Species.NUZLEAF]: [ - [ EVOLVE_MOVE, Moves.RAZOR_LEAF ], - [ 1, Moves.AIR_CUTTER ], - [ 1, Moves.TORMENT ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.SWAGGER ], - [ 1, Moves.EXPLOSION ], - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.BIDE ], // Previous Stage Move - [ 1, Moves.ABSORB ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.HEADBUTT ], // Previous Stage Move - [ 9, Moves.GROWTH ], - [ 12, Moves.ROLLOUT ], - [ 18, Moves.MEGA_DRAIN ], - [ 24, Moves.PAYBACK ], - [ 30, Moves.SYNTHESIS ], - [ 36, Moves.SUNNY_DAY ], - [ 43, Moves.EXTRASENSORY ], - [ 50, Moves.SUCKER_PUNCH ], - [ 57, Moves.LEAF_BLADE ], - ], - [Species.SHIFTRY]: [ - [ EVOLVE_MOVE, Moves.LEAF_BLADE ], - [ RELEARN_MOVE, Moves.WHIRLWIND ], - [ RELEARN_MOVE, Moves.TACKLE ], - [ RELEARN_MOVE, Moves.BIDE ], // Previous Stage Move - [ RELEARN_MOVE, Moves.ABSORB ], - [ RELEARN_MOVE, Moves.MEGA_DRAIN ], - [ RELEARN_MOVE, Moves.GROWTH ], - [ RELEARN_MOVE, Moves.RAZOR_LEAF ], - [ RELEARN_MOVE, Moves.HARDEN ], - [ RELEARN_MOVE, Moves.HEADBUTT ], // Previous Stage Move - [ RELEARN_MOVE, Moves.EXPLOSION ], - [ RELEARN_MOVE, Moves.ROLLOUT ], - [ RELEARN_MOVE, Moves.SWAGGER ], - [ RELEARN_MOVE, Moves.SYNTHESIS ], - [ RELEARN_MOVE, Moves.BEAT_UP ], - [ RELEARN_MOVE, Moves.FAKE_OUT ], - [ RELEARN_MOVE, Moves.TORMENT ], - [ RELEARN_MOVE, Moves.ASTONISH ], - [ RELEARN_MOVE, Moves.EXTRASENSORY ], - [ RELEARN_MOVE, Moves.SUCKER_PUNCH ], - [ 1, Moves.AIR_CUTTER ], - [ 1, Moves.HURRICANE ], - [ 1, Moves.PAYBACK ], - [ 1, Moves.SUNNY_DAY ], - ], - [Species.TAILLOW]: [ - [ 1, Moves.PECK ], - [ 1, Moves.GROWL ], - [ 5, Moves.FOCUS_ENERGY ], - [ 9, Moves.QUICK_ATTACK ], - [ 13, Moves.WING_ATTACK ], - [ 17, Moves.DOUBLE_TEAM ], - [ 21, Moves.AERIAL_ACE ], - [ 25, Moves.QUICK_GUARD ], - [ 29, Moves.AGILITY ], - [ 33, Moves.AIR_SLASH ], - [ 37, Moves.ENDEAVOR ], - [ 41, Moves.BRAVE_BIRD ], - [ 45, Moves.REVERSAL ], - ], - [Species.SWELLOW]: [ - [ 1, Moves.BRAVE_BIRD ], - [ 1, Moves.AIR_SLASH ], - [ 1, Moves.PLUCK ], - [ 1, Moves.PECK ], - [ 1, Moves.GROWL ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.QUICK_ATTACK ], - [ 13, Moves.WING_ATTACK ], - [ 17, Moves.DOUBLE_TEAM ], - [ 21, Moves.AERIAL_ACE ], - [ 27, Moves.QUICK_GUARD ], - [ 33, Moves.AGILITY ], - [ 45, Moves.ENDEAVOR ], - [ 51, Moves.BRAVE_BIRD ], - [ 57, Moves.REVERSAL ], - ], - [Species.WINGULL]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 5, Moves.QUICK_ATTACK ], - [ 10, Moves.SUPERSONIC ], - [ 15, Moves.WING_ATTACK ], - [ 20, Moves.WATER_PULSE ], - [ 26, Moves.AGILITY ], - [ 30, Moves.AIR_SLASH ], - [ 35, Moves.MIST ], - [ 40, Moves.ROOST ], - [ 45, Moves.HURRICANE ], - ], - [Species.PELIPPER]: [ - [ 1, Moves.PROTECT ], - [ 1, Moves.SOAK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.AGILITY ], - [ 1, Moves.AIR_SLASH ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.TAILWIND ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.WATER_SPORT ], - [ 15, Moves.WING_ATTACK ], - [ 20, Moves.WATER_PULSE ], - [ 28, Moves.STOCKPILE ], - [ 28, Moves.SPIT_UP ], - [ 28, Moves.SWALLOW ], - [ 34, Moves.FLING ], - [ 41, Moves.MIST ], - [ 48, Moves.ROOST ], - [ 55, Moves.HURRICANE ], - [ 62, Moves.HYDRO_PUMP ], - ], - [Species.RALTS]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.DISARMING_VOICE ], - [ 3, Moves.DOUBLE_TEAM ], - [ 6, Moves.CONFUSION ], - [ 9, Moves.HYPNOSIS ], - [ 12, Moves.DRAINING_KISS ], - [ 15, Moves.TELEPORT ], - [ 18, Moves.PSYBEAM ], - [ 21, Moves.LIFE_DEW ], - [ 24, Moves.CHARM ], - [ 27, Moves.CALM_MIND ], - [ 30, Moves.PSYCHIC ], - [ 33, Moves.HEAL_PULSE ], - [ 36, Moves.DREAM_EATER ], - [ 39, Moves.FUTURE_SIGHT ], - ], - [Species.KIRLIA]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.DISARMING_VOICE ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.CONFUSION ], - [ 9, Moves.HYPNOSIS ], - [ 12, Moves.DRAINING_KISS ], - [ 15, Moves.TELEPORT ], - [ 18, Moves.PSYBEAM ], - [ 23, Moves.LIFE_DEW ], - [ 28, Moves.CHARM ], - [ 33, Moves.CALM_MIND ], - [ 38, Moves.PSYCHIC ], - [ 43, Moves.HEAL_PULSE ], - [ 48, Moves.DREAM_EATER ], - [ 53, Moves.FUTURE_SIGHT ], - ], - [Species.GARDEVOIR]: [ - [ EVOLVE_MOVE, Moves.DAZZLING_GLEAM ], - [ 1, Moves.MISTY_TERRAIN ], - [ 1, Moves.HEALING_WISH ], - [ 1, Moves.CHARM ], - [ 1, Moves.MYSTICAL_FIRE ], - [ 1, Moves.HEAL_PULSE ], - [ 1, Moves.GROWL ], - [ 1, Moves.DISARMING_VOICE ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.CONFUSION ], - [ 9, Moves.HYPNOSIS ], - [ 12, Moves.DRAINING_KISS ], - [ 15, Moves.TELEPORT ], - [ 18, Moves.PSYBEAM ], - [ 23, Moves.LIFE_DEW ], - [ 28, Moves.WISH ], - [ 35, Moves.CALM_MIND ], - [ 42, Moves.PSYCHIC ], - [ 49, Moves.MOONBLAST ], - [ 56, Moves.DREAM_EATER ], - [ 63, Moves.FUTURE_SIGHT ], - ], - [Species.SURSKIT]: [ - [ 1, Moves.WATER_GUN ], - [ 6, Moves.QUICK_ATTACK ], - [ 9, Moves.SWEET_SCENT ], - [ 14, Moves.SOAK ], - [ 17, Moves.BUBBLE_BEAM ], - [ 22, Moves.AGILITY ], - [ 25, Moves.MIST ], - [ 25, Moves.HAZE ], - [ 35, Moves.BATON_PASS ], - [ 38, Moves.STICKY_WEB ], - ], - [Species.MASQUERAIN]: [ - [ RELEARN_MOVE, Moves.BATON_PASS ], // Previous Stage Move - [ RELEARN_MOVE, Moves.STICKY_WEB ], // Previous Stage Move - [ 1, Moves.WHIRLWIND ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.SOAK ], - [ 1, Moves.BUBBLE_BEAM ], // Previous Stage Move - [ 1, Moves.AGILITY ], // Previous Stage Move - [ 1, Moves.MIST ], // Previous Stage Move - [ 1, Moves.HAZE ], // Previous Stage Move - [ 1, Moves.OMINOUS_WIND ], - [ 17, Moves.GUST ], - [ 22, Moves.SCARY_FACE ], - [ 22, Moves.AIR_CUTTER ], - [ 26, Moves.STUN_SPORE ], - [ 32, Moves.AIR_SLASH ], - [ 38, Moves.GIGA_DRAIN ], - [ 44, Moves.BUG_BUZZ ], - [ 52, Moves.QUIVER_DANCE ], - ], - [Species.SHROOMISH]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.TACKLE ], - [ 5, Moves.STUN_SPORE ], - [ 8, Moves.LEECH_SEED ], - [ 12, Moves.MEGA_DRAIN ], - [ 15, Moves.HEADBUTT ], - [ 19, Moves.POISON_POWDER ], - [ 26, Moves.GIGA_DRAIN ], - [ 29, Moves.GROWTH ], - [ 33, Moves.TOXIC ], - [ 36, Moves.SEED_BOMB ], - [ 40, Moves.SPORE ], - ], - [Species.BRELOOM]: [ - [ EVOLVE_MOVE, Moves.MACH_PUNCH ], - [ RELEARN_MOVE, Moves.SPORE ], - [ 1, Moves.POISON_POWDER ], - [ 1, Moves.GIGA_DRAIN ], // Previous Stage Move - [ 1, Moves.GROWTH ], - [ 1, Moves.TOXIC ], - [ 1, Moves.ABSORB ], - [ 1, Moves.TACKLE ], - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.LEECH_SEED ], - [ 12, Moves.MEGA_DRAIN ], - [ 15, Moves.HEADBUTT ], - [ 19, Moves.FEINT ], - [ 22, Moves.COUNTER ], - [ 28, Moves.FORCE_PALM ], - [ 33, Moves.WORRY_SEED ], - [ 39, Moves.BRICK_BREAK ], - [ 44, Moves.SEED_BOMB ], - [ 50, Moves.DYNAMIC_PUNCH ], - [ 55, Moves.FOCUS_PUNCH ], - ], - [Species.SLAKOTH]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.YAWN ], - [ 6, Moves.ENCORE ], - [ 9, Moves.SLACK_OFF ], - [ 14, Moves.HEADBUTT ], - [ 17, Moves.AMNESIA ], - [ 22, Moves.COVET ], - [ 25, Moves.THROAT_CHOP ], - [ 30, Moves.COUNTER ], - [ 33, Moves.FLAIL ], - [ 38, Moves.PLAY_ROUGH ], - ], - [Species.VIGOROTH]: [ - [ RELEARN_MOVE, Moves.PLAY_ROUGH ], // Previous Stage Move - [ 1, Moves.SCRATCH ], - [ 1, Moves.YAWN ], // Previous Stage Move - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.SLACK_OFF ], // Previous Stage Move - [ 1, Moves.ENCORE ], - [ 1, Moves.HEADBUTT ], // Previous Stage Move - [ 1, Moves.AMNESIA ], // Previous Stage Move - [ 1, Moves.COVET ], // Previous Stage Move - [ 1, Moves.FLAIL ], // Previous Stage Move - [ 1, Moves.UPROAR ], - [ 14, Moves.FURY_SWIPES ], - [ 17, Moves.ENDURE ], - [ 23, Moves.SLASH ], - [ 27, Moves.THROAT_CHOP ], - [ 33, Moves.COUNTER ], - [ 37, Moves.FOCUS_PUNCH ], - [ 43, Moves.REVERSAL ], - ], - [Species.SLAKING]: [ - [ EVOLVE_MOVE, Moves.SWAGGER ], - [ RELEARN_MOVE, Moves.PLAY_ROUGH ], // Previous Stage Move - [ RELEARN_MOVE, Moves.FOCUS_PUNCH ], // Previous Stage Move - [ 1, Moves.SUCKER_PUNCH ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.YAWN ], - [ 1, Moves.FOCUS_ENERGY ], // Previous Stage Move - [ 1, Moves.ENCORE ], - [ 1, Moves.SLACK_OFF ], - [ 1, Moves.UPROAR ], // Previous Stage Move - [ 1, Moves.FURY_SWIPES ], // Previous Stage Move - [ 1, Moves.ENDURE ], // Previous Stage Move - [ 1, Moves.HEADBUTT ], // Previous Stage Move - [ 1, Moves.SLASH ], // Previous Stage Move - [ 1, Moves.REVERSAL ], // Previous Stage Move - [ 17, Moves.AMNESIA ], - [ 23, Moves.COVET ], - [ 27, Moves.THROAT_CHOP ], - [ 33, Moves.COUNTER ], - [ 39, Moves.FLAIL ], - [ 45, Moves.FLING ], - [ 52, Moves.MEGA_KICK ], - [ 63, Moves.HAMMER_ARM ], - ], - [Species.NINCADA]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.SAND_ATTACK ], - [ 5, Moves.HARDEN ], - [ 10, Moves.FALSE_SWIPE ], - [ 15, Moves.MUD_SLAP ], - [ 21, Moves.ABSORB ], - [ 25, Moves.METAL_CLAW ], - [ 30, Moves.FURY_SWIPES ], - [ 35, Moves.MIND_READER ], - [ 40, Moves.DIG ], - ], - [Species.NINJASK]: [ - [ EVOLVE_MOVE, Moves.DOUBLE_TEAM ], - [ EVOLVE_MOVE, Moves.SCREECH ], - [ EVOLVE_MOVE, Moves.FURY_CUTTER ], - [ 1, Moves.BATON_PASS ], - [ 1, Moves.AERIAL_ACE ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.DIG ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.HARDEN ], - [ 1, Moves.FALSE_SWIPE ], - [ 15, Moves.AGILITY ], - [ 23, Moves.ABSORB ], - [ 29, Moves.BUG_BITE ], - [ 36, Moves.FURY_SWIPES ], - [ 43, Moves.MIND_READER ], - [ 50, Moves.SLASH ], - [ 57, Moves.SWORDS_DANCE ], - [ 64, Moves.X_SCISSOR ], - ], - [Species.SHEDINJA]: [ - [ 1, Moves.SHADOW_CLAW ], - [ 1, Moves.GRUDGE ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.DIG ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.HARDEN ], - [ 1, Moves.FALSE_SWIPE ], - [ 15, Moves.CONFUSE_RAY ], - [ 23, Moves.ABSORB ], - [ 29, Moves.SHADOW_SNEAK ], - [ 36, Moves.FURY_SWIPES ], - [ 43, Moves.MIND_READER ], - [ 50, Moves.SHADOW_BALL ], - [ 57, Moves.SPITE ], - [ 64, Moves.PHANTOM_FORCE ], - ], - [Species.WHISMUR]: [ - [ 1, Moves.ASTONISH ], - [ 1, Moves.POUND ], - [ 5, Moves.ECHOED_VOICE ], - [ 10, Moves.HOWL ], - [ 15, Moves.REST ], - [ 15, Moves.SLEEP_TALK ], - [ 21, Moves.STOMP ], - [ 25, Moves.ROAR ], - [ 30, Moves.SUPERSONIC ], - [ 35, Moves.UPROAR ], - [ 40, Moves.SCREECH ], - [ 45, Moves.HYPER_VOICE ], - ], - [Species.LOUDRED]: [ - [ EVOLVE_MOVE, Moves.BITE ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.POUND ], - [ 1, Moves.ECHOED_VOICE ], - [ 1, Moves.HOWL ], - [ 15, Moves.REST ], - [ 15, Moves.SLEEP_TALK ], - [ 23, Moves.STOMP ], - [ 29, Moves.ROAR ], - [ 36, Moves.SUPERSONIC ], - [ 43, Moves.UPROAR ], - [ 50, Moves.SCREECH ], - [ 57, Moves.HYPER_VOICE ], - ], - [Species.EXPLOUD]: [ - [ EVOLVE_MOVE, Moves.CRUNCH ], - [ 1, Moves.BITE ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.FIRE_FANG ], - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.POUND ], - [ 1, Moves.ECHOED_VOICE ], - [ 1, Moves.HOWL ], - [ 15, Moves.REST ], - [ 15, Moves.SLEEP_TALK ], - [ 23, Moves.STOMP ], - [ 29, Moves.ROAR ], - [ 36, Moves.SUPERSONIC ], - [ 45, Moves.UPROAR ], - [ 54, Moves.SCREECH ], - [ 63, Moves.HYPER_VOICE ], - [ 72, Moves.BOOMBURST ], - [ 81, Moves.HYPER_BEAM ], - ], - [Species.MAKUHITA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.FOCUS_ENERGY ], - [ 4, Moves.SAND_ATTACK ], - [ 7, Moves.ARM_THRUST ], - [ 10, Moves.FAKE_OUT ], - [ 13, Moves.FORCE_PALM ], - [ 16, Moves.WHIRLWIND ], - [ 19, Moves.KNOCK_OFF ], - [ 22, Moves.BULK_UP ], - [ 25, Moves.BELLY_DRUM ], - [ 28, Moves.DETECT ], - [ 31, Moves.SEISMIC_TOSS ], - [ 34, Moves.FOCUS_PUNCH ], - [ 37, Moves.ENDURE ], - [ 40, Moves.CLOSE_COMBAT ], - [ 43, Moves.REVERSAL ], - [ 46, Moves.HEAVY_SLAM ], - ], - [Species.HARIYAMA]: [ - [ 1, Moves.BRINE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.SAND_ATTACK ], // Previous Stage Move - [ 1, Moves.ARM_THRUST ], - [ 10, Moves.FAKE_OUT ], - [ 13, Moves.FORCE_PALM ], - [ 16, Moves.WHIRLWIND ], - [ 19, Moves.KNOCK_OFF ], - [ 22, Moves.BULK_UP ], - [ 26, Moves.BELLY_DRUM ], - [ 30, Moves.DETECT ], - [ 34, Moves.SEISMIC_TOSS ], - [ 38, Moves.FOCUS_PUNCH ], - [ 42, Moves.ENDURE ], - [ 46, Moves.CLOSE_COMBAT ], - [ 50, Moves.REVERSAL ], - [ 54, Moves.HEAVY_SLAM ], - [ 60, Moves.HEADLONG_RUSH ], - ], - [Species.AZURILL]: [ - [ 1, Moves.SPLASH ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.TAIL_WHIP ], - [ 3, Moves.HELPING_HAND ], - [ 6, Moves.BUBBLE_BEAM ], - [ 9, Moves.CHARM ], - [ 12, Moves.SLAM ], - [ 15, Moves.BOUNCE ], - ], - [Species.NOSEPASS]: [ - [ 1, Moves.TACKLE ], - [ 4, Moves.HARDEN ], - [ 7, Moves.BLOCK ], - [ 10, Moves.ROCK_THROW ], - [ 13, Moves.THUNDER_WAVE ], - [ 16, Moves.REST ], - [ 19, Moves.SPARK ], - [ 22, Moves.ROCK_SLIDE ], - [ 25, Moves.POWER_GEM ], - [ 28, Moves.ROCK_BLAST ], - [ 31, Moves.DISCHARGE ], - [ 34, Moves.SANDSTORM ], - [ 37, Moves.EARTH_POWER ], - [ 40, Moves.STONE_EDGE ], - [ 43, Moves.LOCK_ON ], - [ 43, Moves.ZAP_CANNON ], - ], - [Species.SKITTY]: [ - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.GROWL ], - [ 1, Moves.TAIL_WHIP ], - [ 4, Moves.TACKLE ], - [ 7, Moves.SING ], - [ 10, Moves.ATTRACT ], - [ 13, Moves.DISARMING_VOICE ], - [ 16, Moves.FURY_SWIPES ], - [ 19, Moves.COPYCAT ], - [ 22, Moves.PAYBACK ], - [ 25, Moves.CHARM ], - [ 31, Moves.FACADE ], - [ 34, Moves.COVET ], - [ 37, Moves.HEAL_BELL ], - [ 40, Moves.DOUBLE_EDGE ], - [ 43, Moves.BABY_DOLL_EYES ], - [ 46, Moves.PLAY_ROUGH ], - ], - [Species.DELCATTY]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.TACKLE ], - [ 1, Moves.SING ], - [ 1, Moves.ATTRACT ], - [ 1, Moves.DISARMING_VOICE ], - [ 1, Moves.FURY_SWIPES ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.PAYBACK ], - [ 1, Moves.CHARM ], - [ 1, Moves.FACADE ], - [ 1, Moves.COVET ], - [ 1, Moves.HEAL_BELL ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.BABY_DOLL_EYES ], - [ 1, Moves.PLAY_ROUGH ], - ], - [Species.SABLEYE]: [ - [ 1, Moves.LEER ], - [ 1, Moves.SCRATCH ], - [ 3, Moves.ASTONISH ], - [ 9, Moves.SHADOW_SNEAK ], - [ 12, Moves.FAKE_OUT ], - [ 15, Moves.DISABLE ], - [ 18, Moves.DETECT ], - [ 21, Moves.NIGHT_SHADE ], - [ 24, Moves.FURY_SWIPES ], - [ 27, Moves.KNOCK_OFF ], - [ 30, Moves.QUASH ], - [ 33, Moves.SHADOW_CLAW ], - [ 36, Moves.MEAN_LOOK ], - [ 39, Moves.POWER_GEM ], - [ 42, Moves.ZEN_HEADBUTT ], - [ 45, Moves.SHADOW_BALL ], - [ 48, Moves.FOUL_PLAY ], - ], - [Species.MAWILE]: [ - [ 1, Moves.ASTONISH ], - [ 1, Moves.GROWL ], - [ 4, Moves.FAIRY_WIND ], - [ 8, Moves.BATON_PASS ], - [ 12, Moves.BITE ], - [ 16, Moves.STOCKPILE ], - [ 16, Moves.SPIT_UP ], - [ 16, Moves.SWALLOW ], - [ 20, Moves.SUCKER_PUNCH ], - [ 24, Moves.IRON_DEFENSE ], - [ 28, Moves.CRUNCH ], - [ 32, Moves.SWEET_SCENT ], - [ 36, Moves.IRON_HEAD ], - [ 40, Moves.TAUNT ], - [ 44, Moves.FAKE_TEARS ], - [ 48, Moves.PLAY_ROUGH ], - ], - [Species.ARON]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 4, Moves.METAL_CLAW ], - [ 8, Moves.ROCK_TOMB ], - [ 12, Moves.ROAR ], - [ 16, Moves.HEADBUTT ], - [ 20, Moves.PROTECT ], - [ 24, Moves.ROCK_SLIDE ], - [ 28, Moves.IRON_HEAD ], - [ 33, Moves.METAL_SOUND ], - [ 36, Moves.TAKE_DOWN ], - [ 40, Moves.AUTOTOMIZE ], - [ 44, Moves.IRON_TAIL ], - [ 48, Moves.IRON_DEFENSE ], - [ 52, Moves.HEAVY_SLAM ], - [ 56, Moves.DOUBLE_EDGE ], - [ 60, Moves.METAL_BURST ], - ], - [Species.LAIRON]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.ROCK_TOMB ], - [ 12, Moves.ROAR ], - [ 16, Moves.HEADBUTT ], - [ 20, Moves.PROTECT ], - [ 24, Moves.ROCK_SLIDE ], - [ 28, Moves.IRON_HEAD ], - [ 35, Moves.METAL_SOUND ], - [ 40, Moves.TAKE_DOWN ], - [ 46, Moves.AUTOTOMIZE ], - [ 52, Moves.IRON_TAIL ], - [ 58, Moves.IRON_DEFENSE ], - [ 64, Moves.HEAVY_SLAM ], - [ 70, Moves.DOUBLE_EDGE ], - [ 76, Moves.METAL_BURST ], - ], - [Species.AGGRON]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.ROCK_TOMB ], - [ 12, Moves.ROAR ], - [ 16, Moves.HEADBUTT ], - [ 20, Moves.PROTECT ], - [ 24, Moves.ROCK_SLIDE ], - [ 28, Moves.IRON_HEAD ], - [ 35, Moves.METAL_SOUND ], - [ 40, Moves.TAKE_DOWN ], - [ 48, Moves.AUTOTOMIZE ], - [ 56, Moves.IRON_TAIL ], - [ 64, Moves.IRON_DEFENSE ], - [ 72, Moves.HEAVY_SLAM ], - [ 80, Moves.DOUBLE_EDGE ], - [ 88, Moves.METAL_BURST ], - ], - [Species.MEDITITE]: [ - [ 1, Moves.CONFUSION ], - [ 1, Moves.WORK_UP ], - [ 1, Moves.BIDE ], - [ 9, Moves.DETECT ], - [ 12, Moves.ENDURE ], - [ 15, Moves.FEINT ], - [ 17, Moves.FORCE_PALM ], - [ 20, Moves.PSYBEAM ], - [ 23, Moves.CALM_MIND ], - [ 25, Moves.ZEN_HEADBUTT ], - [ 28, Moves.HIGH_JUMP_KICK ], - [ 31, Moves.PSYCH_UP ], - [ 33, Moves.ACUPRESSURE ], - [ 36, Moves.POWER_TRICK ], - [ 39, Moves.REVERSAL ], - [ 41, Moves.RECOVER ], - [ 44, Moves.COUNTER ], - ], - [Species.MEDICHAM]: [ - [ 1, Moves.FIRE_PUNCH ], - [ 1, Moves.ICE_PUNCH ], - [ 1, Moves.THUNDER_PUNCH ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.DETECT ], - [ 1, Moves.WORK_UP ], - [ 1, Moves.BIDE ], - [ 1, Moves.REVERSAL ], // Previous Stage Move - [ 12, Moves.ENDURE ], - [ 15, Moves.FEINT ], - [ 17, Moves.FORCE_PALM ], - [ 20, Moves.PSYBEAM ], - [ 23, Moves.CALM_MIND ], - [ 25, Moves.ZEN_HEADBUTT ], - [ 28, Moves.HIGH_JUMP_KICK ], - [ 31, Moves.PSYCH_UP ], - [ 33, Moves.ACUPRESSURE ], - [ 36, Moves.POWER_TRICK ], - [ 47, Moves.RECOVER ], - [ 53, Moves.COUNTER ], - [ 53, Moves.AXE_KICK ], - ], - [Species.ELECTRIKE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.THUNDER_WAVE ], - [ 4, Moves.LEER ], - [ 8, Moves.HOWL ], - [ 12, Moves.QUICK_ATTACK ], - [ 16, Moves.SHOCK_WAVE ], - [ 20, Moves.BITE ], - [ 24, Moves.THUNDER_FANG ], - [ 28, Moves.ROAR ], - [ 32, Moves.DISCHARGE ], - [ 36, Moves.CHARGE ], - [ 40, Moves.WILD_CHARGE ], - [ 44, Moves.THUNDER ], - ], - [Species.MANECTRIC]: [ - [ 1, Moves.FIRE_FANG ], - [ 1, Moves.TACKLE ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.LEER ], - [ 1, Moves.HOWL ], - [ 12, Moves.QUICK_ATTACK ], - [ 16, Moves.SHOCK_WAVE ], - [ 20, Moves.BITE ], - [ 24, Moves.THUNDER_FANG ], - [ 30, Moves.ROAR ], - [ 36, Moves.DISCHARGE ], - [ 42, Moves.CHARGE ], - [ 48, Moves.WILD_CHARGE ], - [ 54, Moves.THUNDER ], - [ 60, Moves.ELECTRIC_TERRAIN ], - ], - [Species.PLUSLE]: [ - [ RELEARN_MOVE, Moves.NUZZLE ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.QUICK_ATTACK ], - [ 4, Moves.HELPING_HAND ], - [ 7, Moves.SPARK ], - [ 10, Moves.ENCORE ], - [ 13, Moves.SWITCHEROO ], - [ 16, Moves.SWIFT ], - [ 19, Moves.ELECTRO_BALL ], - [ 22, Moves.COPYCAT ], - [ 26, Moves.CHARGE ], - [ 31, Moves.DISCHARGE ], - [ 34, Moves.BATON_PASS ], - [ 37, Moves.AGILITY ], - [ 40, Moves.LAST_RESORT ], - [ 43, Moves.THUNDER ], - [ 46, Moves.NASTY_PLOT ], - [ 49, Moves.ENTRAINMENT ], - ], - [Species.MINUN]: [ - [ RELEARN_MOVE, Moves.NUZZLE ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.QUICK_ATTACK ], - [ 4, Moves.HELPING_HAND ], - [ 7, Moves.SPARK ], - [ 10, Moves.ENCORE ], - [ 13, Moves.SWITCHEROO ], - [ 16, Moves.SWIFT ], - [ 19, Moves.ELECTRO_BALL ], - [ 22, Moves.COPYCAT ], - [ 26, Moves.CHARGE ], - [ 31, Moves.DISCHARGE ], - [ 34, Moves.BATON_PASS ], - [ 37, Moves.AGILITY ], - [ 40, Moves.LAST_RESORT ], - [ 43, Moves.THUNDER ], - [ 46, Moves.NASTY_PLOT ], - [ 49, Moves.ENTRAINMENT ], - ], - [Species.VOLBEAT]: [ - [ 1, Moves.FLASH ], - [ 1, Moves.TACKLE ], - [ 5, Moves.DOUBLE_TEAM ], - [ 8, Moves.CONFUSE_RAY ], - [ 12, Moves.QUICK_ATTACK ], - [ 15, Moves.STRUGGLE_BUG ], - [ 19, Moves.MOONLIGHT ], - [ 22, Moves.TAIL_GLOW ], - [ 26, Moves.PROTECT ], - [ 29, Moves.ZEN_HEADBUTT ], - [ 33, Moves.HELPING_HAND ], - [ 36, Moves.BUG_BUZZ ], - [ 40, Moves.PLAY_ROUGH ], - [ 43, Moves.DOUBLE_EDGE ], - [ 47, Moves.INFESTATION ], - ], - [Species.ILLUMISE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.PLAY_NICE ], - [ 5, Moves.SWEET_SCENT ], - [ 9, Moves.CHARM ], - [ 12, Moves.QUICK_ATTACK ], - [ 15, Moves.STRUGGLE_BUG ], - [ 19, Moves.MOONLIGHT ], - [ 22, Moves.WISH ], - [ 26, Moves.ENCORE ], - [ 29, Moves.FLATTER ], - [ 33, Moves.ZEN_HEADBUTT ], - [ 36, Moves.HELPING_HAND ], - [ 40, Moves.BUG_BUZZ ], - [ 43, Moves.PLAY_ROUGH ], - [ 47, Moves.INFESTATION ], - ], - [Species.ROSELIA]: [ - [ EVOLVE_MOVE, Moves.POISON_STING ], - [ 1, Moves.ABSORB ], - [ 1, Moves.GROWTH ], - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.WORRY_SEED ], - [ 5, Moves.MEGA_DRAIN ], - [ 10, Moves.LEECH_SEED ], - [ 15, Moves.MAGICAL_LEAF ], - [ 20, Moves.TOXIC_SPIKES ], - [ 25, Moves.SWEET_SCENT ], - [ 30, Moves.GIGA_DRAIN ], - [ 35, Moves.SYNTHESIS ], - [ 40, Moves.TOXIC ], - [ 45, Moves.PETAL_BLIZZARD ], - [ 50, Moves.AROMATHERAPY ], - [ 55, Moves.INGRAIN ], - [ 60, Moves.PETAL_DANCE ], - ], - [Species.GULPIN]: [ - [ 1, Moves.POUND ], - [ 5, Moves.YAWN ], - [ 8, Moves.POISON_GAS ], - [ 10, Moves.SLUDGE ], - [ 12, Moves.AMNESIA ], - [ 17, Moves.ACID_SPRAY ], - [ 20, Moves.ENCORE ], - [ 25, Moves.TOXIC ], - [ 28, Moves.STOCKPILE ], - [ 28, Moves.SPIT_UP ], - [ 28, Moves.SWALLOW ], - [ 33, Moves.SLUDGE_BOMB ], - [ 36, Moves.GASTRO_ACID ], - [ 41, Moves.BELCH ], - [ 44, Moves.PAIN_SPLIT ], - [ 49, Moves.GUNK_SHOT ], - ], - [Species.SWALOT]: [ - [ EVOLVE_MOVE, Moves.BODY_SLAM ], - [ 1, Moves.GUNK_SHOT ], - [ 1, Moves.POUND ], - [ 1, Moves.YAWN ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.WRING_OUT ], - [ 1, Moves.SLUDGE ], - [ 1, Moves.PAIN_SPLIT ], // Previous Stage Move - [ 12, Moves.AMNESIA ], - [ 17, Moves.ACID_SPRAY ], - [ 20, Moves.ENCORE ], - [ 25, Moves.TOXIC ], - [ 30, Moves.STOCKPILE ], - [ 30, Moves.SPIT_UP ], - [ 30, Moves.SWALLOW ], - [ 37, Moves.SLUDGE_BOMB ], - [ 42, Moves.GASTRO_ACID ], - [ 49, Moves.BELCH ], - ], - [Species.CARVANHA]: [ - [ 1, Moves.AQUA_JET ], - [ 1, Moves.LEER ], - [ 4, Moves.POISON_FANG ], - [ 8, Moves.FOCUS_ENERGY ], - [ 12, Moves.SCARY_FACE ], - [ 16, Moves.BITE ], - [ 20, Moves.ICE_FANG ], - [ 24, Moves.SCREECH ], - [ 28, Moves.SWAGGER ], - [ 32, Moves.CRUNCH ], - [ 36, Moves.AGILITY ], - [ 40, Moves.LIQUIDATION ], - [ 44, Moves.TAKE_DOWN ], - ], - [Species.SHARPEDO]: [ - [ EVOLVE_MOVE, Moves.SLASH ], - [ 1, Moves.NIGHT_SLASH ], - [ 1, Moves.AQUA_JET ], - [ 1, Moves.LEER ], - [ 1, Moves.POISON_FANG ], - [ 1, Moves.FOCUS_ENERGY ], - [ 12, Moves.SCARY_FACE ], - [ 16, Moves.BITE ], - [ 20, Moves.ICE_FANG ], - [ 24, Moves.SCREECH ], - [ 28, Moves.SWAGGER ], - [ 34, Moves.CRUNCH ], - [ 40, Moves.AGILITY ], - [ 46, Moves.LIQUIDATION ], - [ 52, Moves.TAKE_DOWN ], - ], - [Species.WAILMER]: [ - [ 1, Moves.SPLASH ], - [ 1, Moves.TACKLE ], // Custom - [ 3, Moves.GROWL ], - [ 6, Moves.ASTONISH ], - [ 12, Moves.WATER_GUN ], - [ 15, Moves.MIST ], - [ 18, Moves.WATER_PULSE ], - [ 21, Moves.HEAVY_SLAM ], - [ 24, Moves.BRINE ], - [ 27, Moves.WHIRLPOOL ], - [ 30, Moves.DIVE ], - [ 33, Moves.BOUNCE ], - [ 36, Moves.BODY_SLAM ], - [ 39, Moves.REST ], - [ 42, Moves.AMNESIA ], - [ 45, Moves.HYDRO_PUMP ], - [ 48, Moves.WATER_SPOUT ], - ], - [Species.WAILORD]: [ - [ 1, Moves.SOAK ], - [ 1, Moves.NOBLE_ROAR ], - [ 1, Moves.SPLASH ], - [ 1, Moves.TACKLE ], // Previous Stage Move, Custom - [ 1, Moves.GROWL ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.WATER_GUN ], - [ 15, Moves.MIST ], - [ 18, Moves.WATER_PULSE ], - [ 21, Moves.HEAVY_SLAM ], - [ 24, Moves.BRINE ], - [ 27, Moves.WHIRLPOOL ], - [ 30, Moves.DIVE ], - [ 33, Moves.BOUNCE ], - [ 36, Moves.BODY_SLAM ], - [ 39, Moves.REST ], - [ 44, Moves.AMNESIA ], - [ 49, Moves.HYDRO_PUMP ], - [ 54, Moves.WATER_SPOUT ], - ], - [Species.NUMEL]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.TACKLE ], - [ 5, Moves.EMBER ], - [ 8, Moves.FOCUS_ENERGY ], - [ 12, Moves.BULLDOZE ], - [ 15, Moves.INCINERATE ], - [ 19, Moves.AMNESIA ], - [ 22, Moves.LAVA_PLUME ], - [ 26, Moves.EARTH_POWER ], - [ 29, Moves.CURSE ], - [ 31, Moves.TAKE_DOWN ], - [ 40, Moves.EARTHQUAKE ], - [ 43, Moves.FLAMETHROWER ], - [ 47, Moves.DOUBLE_EDGE ], - ], - [Species.CAMERUPT]: [ - [ EVOLVE_MOVE, Moves.ROCK_SLIDE ], - [ RELEARN_MOVE, Moves.FLAMETHROWER ], // Previous Stage Move - [ RELEARN_MOVE, Moves.DOUBLE_EDGE ], // Previous Stage Move - [ 1, Moves.FISSURE ], - [ 1, Moves.ERUPTION ], - [ 1, Moves.GROWL ], - [ 1, Moves.TACKLE ], - [ 1, Moves.EMBER ], - [ 1, Moves.FOCUS_ENERGY ], - [ 12, Moves.BULLDOZE ], - [ 15, Moves.INCINERATE ], - [ 19, Moves.AMNESIA ], - [ 22, Moves.LAVA_PLUME ], - [ 26, Moves.EARTH_POWER ], - [ 29, Moves.CURSE ], - [ 31, Moves.TAKE_DOWN ], - [ 39, Moves.YAWN ], - [ 46, Moves.EARTHQUAKE ], - ], - [Species.TORKOAL]: [ - [ 1, Moves.SMOG ], - [ 1, Moves.EMBER ], - [ 4, Moves.WITHDRAW ], - [ 8, Moves.RAPID_SPIN ], - [ 12, Moves.SMOKESCREEN ], - [ 16, Moves.CLEAR_SMOG ], - [ 20, Moves.FLAME_WHEEL ], - [ 24, Moves.PROTECT ], - [ 28, Moves.LAVA_PLUME ], - [ 32, Moves.BODY_SLAM ], - [ 36, Moves.IRON_DEFENSE ], - [ 40, Moves.FLAMETHROWER ], - [ 44, Moves.CURSE ], - [ 48, Moves.HEAT_WAVE ], - [ 52, Moves.AMNESIA ], - [ 56, Moves.INFERNO ], - [ 60, Moves.SHELL_SMASH ], - [ 64, Moves.ERUPTION ], - ], - [Species.SPOINK]: [ - [ 1, Moves.SPLASH ], - [ 5, Moves.CONFUSION ], // Custom, Moved from Level 7 to 5 - [ 10, Moves.GROWL ], - [ 14, Moves.PSYBEAM ], - [ 18, Moves.PSYCH_UP ], - [ 22, Moves.CONFUSE_RAY ], - [ 29, Moves.REST ], - [ 29, Moves.POWER_GEM ], - [ 33, Moves.SNORE ], - [ 38, Moves.PSYSHOCK ], - [ 40, Moves.PAYBACK ], - [ 44, Moves.PSYCHIC ], - [ 50, Moves.BOUNCE ], - ], - [Species.GRUMPIG]: [ - [ EVOLVE_MOVE, Moves.TEETER_DANCE ], - [ 1, Moves.BELCH ], - [ 1, Moves.SPLASH ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.GROWL ], // Previous Stage Move - [ 1, Moves.PSYBEAM ], - [ 18, Moves.PSYCH_UP ], - [ 22, Moves.CONFUSE_RAY ], - [ 26, Moves.ZEN_HEADBUTT ], - [ 29, Moves.POWER_GEM ], - [ 35, Moves.REST ], - [ 35, Moves.SNORE ], - [ 42, Moves.PSYSHOCK ], - [ 46, Moves.PAYBACK ], - [ 52, Moves.PSYCHIC ], - [ 60, Moves.BOUNCE ], - ], - [Species.SPINDA]: [ - [ 1, Moves.TACKLE ], - [ 5, Moves.COPYCAT ], - [ 10, Moves.DIZZY_PUNCH ], - [ 14, Moves.PSYBEAM ], - [ 19, Moves.HYPNOSIS ], - [ 23, Moves.BODY_SLAM ], - [ 28, Moves.SUCKER_PUNCH ], - [ 32, Moves.TEETER_DANCE ], - [ 37, Moves.UPROAR ], - [ 41, Moves.PSYCH_UP ], - [ 46, Moves.DOUBLE_EDGE ], - [ 50, Moves.FLAIL ], - [ 55, Moves.THRASH ], - ], - [Species.TRAPINCH]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.BIDE ], - [ 1, Moves.FEINT_ATTACK ], - [ 8, Moves.BITE ], - [ 12, Moves.MUD_SLAP ], - [ 16, Moves.SAND_TOMB ], - [ 20, Moves.BULLDOZE ], - [ 24, Moves.DIG ], - [ 28, Moves.CRUNCH ], - [ 32, Moves.SANDSTORM ], - [ 36, Moves.EARTH_POWER ], - [ 40, Moves.EARTHQUAKE ], - [ 44, Moves.SUPERPOWER ], - [ 48, Moves.FISSURE ], - ], - [Species.VIBRAVA]: [ - [ EVOLVE_MOVE, Moves.DRAGON_BREATH ], - [ RELEARN_MOVE, Moves.SUPERSONIC ], - [ RELEARN_MOVE, Moves.FISSURE ], - [ RELEARN_MOVE, Moves.CRUNCH ], - [ RELEARN_MOVE, Moves.SUPERPOWER ], - [ RELEARN_MOVE, Moves.ASTONISH ], - [ RELEARN_MOVE, Moves.BULLDOZE ], - [ 1, Moves.DIG ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.BITE ], - [ 1, Moves.BIDE ], - [ 1, Moves.FEINT_ATTACK ], - [ 12, Moves.MUD_SLAP ], - [ 16, Moves.SAND_TOMB ], - [ 20, Moves.DRAGON_TAIL ], - [ 24, Moves.SCREECH ], - [ 28, Moves.BUG_BUZZ ], - [ 32, Moves.SANDSTORM ], - [ 38, Moves.EARTH_POWER ], - [ 44, Moves.EARTHQUAKE ], - [ 50, Moves.UPROAR ], - [ 56, Moves.DRAGON_RUSH ], - [ 62, Moves.BOOMBURST ], - ], - [Species.FLYGON]: [ - [ EVOLVE_MOVE, Moves.DRAGON_CLAW ], - [ RELEARN_MOVE, Moves.BITE ], - [ RELEARN_MOVE, Moves.FISSURE ], - [ RELEARN_MOVE, Moves.DIG ], - [ RELEARN_MOVE, Moves.CRUNCH ], - [ RELEARN_MOVE, Moves.SUPERPOWER ], - [ RELEARN_MOVE, Moves.ASTONISH ], - [ RELEARN_MOVE, Moves.DRAGON_DANCE ], - [ RELEARN_MOVE, Moves.FEINT ], - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.BULLDOZE ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.BIDE ], - [ 1, Moves.FEINT_ATTACK ], - [ 12, Moves.MUD_SLAP ], - [ 16, Moves.SAND_TOMB ], - [ 20, Moves.DRAGON_TAIL ], - [ 24, Moves.SCREECH ], - [ 28, Moves.BUG_BUZZ ], - [ 32, Moves.SANDSTORM ], - [ 38, Moves.EARTH_POWER ], - [ 44, Moves.EARTHQUAKE ], - [ 52, Moves.UPROAR ], - [ 60, Moves.DRAGON_RUSH ], - [ 68, Moves.BOOMBURST ], - ], - [Species.CACNEA]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.LEER ], - [ 4, Moves.ABSORB ], - [ 7, Moves.GROWTH ], - [ 10, Moves.LEECH_SEED ], - [ 13, Moves.SAND_ATTACK ], - [ 16, Moves.BULLET_SEED ], - [ 19, Moves.POWER_TRIP ], - [ 22, Moves.INGRAIN ], - [ 26, Moves.PAYBACK ], - [ 30, Moves.SPIKES ], - [ 34, Moves.SUCKER_PUNCH ], - [ 38, Moves.PIN_MISSILE ], - [ 42, Moves.ENERGY_BALL ], - [ 46, Moves.COTTON_SPORE ], - [ 50, Moves.SANDSTORM ], - [ 54, Moves.DESTINY_BOND ], - ], - [Species.CACTURNE]: [ - [ EVOLVE_MOVE, Moves.SPIKY_SHIELD ], - [ 1, Moves.DESTINY_BOND ], - [ 1, Moves.POISON_STING ], - [ 1, Moves.LEER ], - [ 1, Moves.ABSORB ], - [ 1, Moves.GROWTH ], - [ 10, Moves.LEECH_SEED ], - [ 13, Moves.SAND_ATTACK ], - [ 16, Moves.BULLET_SEED ], - [ 19, Moves.POWER_TRIP ], - [ 22, Moves.INGRAIN ], - [ 26, Moves.PAYBACK ], - [ 30, Moves.SPIKES ], - [ 35, Moves.SUCKER_PUNCH ], - [ 38, Moves.PIN_MISSILE ], - [ 44, Moves.ENERGY_BALL ], - [ 49, Moves.COTTON_SPORE ], - [ 54, Moves.SANDSTORM ], - ], - [Species.SWABLU]: [ - [ 1, Moves.PECK ], - [ 1, Moves.GROWL ], - [ 4, Moves.DISARMING_VOICE ], - [ 8, Moves.MIST ], - [ 12, Moves.FURY_ATTACK ], - [ 16, Moves.ROUND ], - [ 20, Moves.DRAGON_BREATH ], - [ 24, Moves.SAFEGUARD ], - [ 28, Moves.SING ], - [ 32, Moves.COTTON_GUARD ], - [ 36, Moves.TAKE_DOWN ], - [ 40, Moves.MOONBLAST ], - [ 44, Moves.PERISH_SONG ], - ], - [Species.ALTARIA]: [ - [ EVOLVE_MOVE, Moves.DRAGON_PULSE ], - [ 1, Moves.PLUCK ], - [ 1, Moves.PECK ], - [ 1, Moves.GROWL ], - [ 1, Moves.DISARMING_VOICE ], - [ 1, Moves.MIST ], - [ 12, Moves.FURY_ATTACK ], - [ 16, Moves.ROUND ], - [ 20, Moves.DRAGON_BREATH ], - [ 24, Moves.SAFEGUARD ], - [ 28, Moves.SING ], - [ 32, Moves.COTTON_GUARD ], - [ 38, Moves.TAKE_DOWN ], - [ 44, Moves.MOONBLAST ], - [ 50, Moves.PERISH_SONG ], - [ 56, Moves.SKY_ATTACK ], - ], - [Species.ZANGOOSE]: [ - [ RELEARN_MOVE, Moves.DOUBLE_KICK ], - [ RELEARN_MOVE, Moves.DISABLE ], - [ RELEARN_MOVE, Moves.COUNTER ], - [ RELEARN_MOVE, Moves.FURY_SWIPES ], - [ RELEARN_MOVE, Moves.CURSE ], - [ RELEARN_MOVE, Moves.FLAIL ], - [ RELEARN_MOVE, Moves.BELLY_DRUM ], - [ RELEARN_MOVE, Moves.FEINT ], - [ RELEARN_MOVE, Moves.NIGHT_SLASH ], - [ RELEARN_MOVE, Moves.DOUBLE_HIT ], - [ RELEARN_MOVE, Moves.QUICK_GUARD ], - [ RELEARN_MOVE, Moves.FINAL_GAMBIT ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 5, Moves.QUICK_ATTACK ], - [ 8, Moves.FURY_CUTTER ], - [ 12, Moves.METAL_CLAW ], - [ 15, Moves.HONE_CLAWS ], - [ 19, Moves.SLASH ], - [ 22, Moves.POWER_TRIP ], - [ 26, Moves.CRUSH_CLAW ], - [ 29, Moves.FALSE_SWIPE ], - [ 33, Moves.SWITCHEROO ], - [ 36, Moves.DETECT ], - [ 40, Moves.X_SCISSOR ], - [ 43, Moves.TAUNT ], - [ 47, Moves.SWORDS_DANCE ], - [ 50, Moves.CLOSE_COMBAT ], - ], - [Species.SEVIPER]: [ - [ 1, Moves.WRAP ], - [ 1, Moves.SWAGGER ], - [ 4, Moves.BITE ], - [ 6, Moves.LICK ], - [ 9, Moves.POISON_TAIL ], - [ 11, Moves.FEINT ], - [ 14, Moves.SCREECH ], - [ 19, Moves.GLARE ], - [ 21, Moves.POISON_FANG ], - [ 24, Moves.VENOSHOCK ], - [ 29, Moves.GASTRO_ACID ], - [ 31, Moves.POISON_JAB ], - [ 34, Moves.HAZE ], - [ 39, Moves.CRUNCH ], - [ 41, Moves.BELCH ], - [ 44, Moves.COIL ], - [ 46, Moves.SLUDGE_BOMB ], - ], - [Species.LUNATONE]: [ - [ 1, Moves.MOONBLAST ], - [ 1, Moves.MOONLIGHT ], - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.ROCK_THROW ], - [ 5, Moves.HYPNOSIS ], - [ 10, Moves.ROCK_POLISH ], - [ 15, Moves.ROCK_SLIDE ], - [ 20, Moves.PSYSHOCK ], - [ 25, Moves.COSMIC_POWER ], - [ 30, Moves.PSYCHIC ], - [ 35, Moves.STONE_EDGE ], - [ 40, Moves.FUTURE_SIGHT ], - [ 45, Moves.MAGIC_ROOM ], - [ 50, Moves.EXPLOSION ], - ], - [Species.SOLROCK]: [ - [ 1, Moves.FLARE_BLITZ ], - [ 1, Moves.MORNING_SUN ], - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.ROCK_THROW ], - [ 5, Moves.HYPNOSIS ], - [ 10, Moves.ROCK_POLISH ], - [ 15, Moves.ROCK_SLIDE ], - [ 20, Moves.ZEN_HEADBUTT ], - [ 25, Moves.COSMIC_POWER ], - [ 30, Moves.PSYCHIC ], - [ 35, Moves.STONE_EDGE ], - [ 40, Moves.SOLAR_BEAM ], - [ 45, Moves.WONDER_ROOM ], - [ 50, Moves.EXPLOSION ], - ], - [Species.BARBOACH]: [ - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.WATER_GUN ], - [ 6, Moves.REST ], - [ 6, Moves.SNORE ], - [ 12, Moves.WATER_PULSE ], - [ 18, Moves.AMNESIA ], - [ 24, Moves.AQUA_TAIL ], - [ 31, Moves.MUDDY_WATER ], - [ 36, Moves.EARTHQUAKE ], - [ 42, Moves.FUTURE_SIGHT ], - [ 48, Moves.FISSURE ], - ], - [Species.WHISCASH]: [ - [ EVOLVE_MOVE, Moves.THRASH ], - [ 1, Moves.BELCH ], - [ 1, Moves.ZEN_HEADBUTT ], - [ 1, Moves.TICKLE ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.REST ], - [ 1, Moves.SNORE ], - [ 12, Moves.WATER_PULSE ], - [ 18, Moves.AMNESIA ], - [ 24, Moves.AQUA_TAIL ], - [ 33, Moves.MUDDY_WATER ], - [ 40, Moves.EARTHQUAKE ], - [ 48, Moves.FUTURE_SIGHT ], - [ 56, Moves.FISSURE ], - ], - [Species.CORPHISH]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.HARDEN ], - [ 4, Moves.LEER ], - [ 8, Moves.TAUNT ], - [ 12, Moves.BUBBLE_BEAM ], - [ 16, Moves.KNOCK_OFF ], - [ 20, Moves.DOUBLE_HIT ], - [ 24, Moves.PROTECT ], - [ 28, Moves.NIGHT_SLASH ], - [ 32, Moves.RAZOR_SHELL ], - [ 36, Moves.SWORDS_DANCE ], - [ 40, Moves.CRUNCH ], - [ 44, Moves.CRABHAMMER ], - [ 48, Moves.ENDEAVOR ], - [ 52, Moves.GUILLOTINE ], - ], - [Species.CRAWDAUNT]: [ - [ EVOLVE_MOVE, Moves.SWIFT ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.HARDEN ], - [ 1, Moves.LEER ], - [ 1, Moves.TAUNT ], - [ 12, Moves.BUBBLE_BEAM ], - [ 16, Moves.KNOCK_OFF ], - [ 20, Moves.DOUBLE_HIT ], - [ 24, Moves.PROTECT ], - [ 28, Moves.NIGHT_SLASH ], - [ 34, Moves.RAZOR_SHELL ], - [ 40, Moves.SWORDS_DANCE ], - [ 46, Moves.CRUNCH ], - [ 52, Moves.CRABHAMMER ], - [ 58, Moves.ENDEAVOR ], - [ 64, Moves.GUILLOTINE ], - ], - [Species.BALTOY]: [ - [ 1, Moves.HARDEN ], - [ 1, Moves.MUD_SLAP ], - [ 3, Moves.RAPID_SPIN ], - [ 6, Moves.CONFUSION ], - [ 9, Moves.ROCK_TOMB ], - [ 12, Moves.POWER_TRICK ], - [ 15, Moves.PSYBEAM ], - [ 18, Moves.ANCIENT_POWER ], - [ 21, Moves.IMPRISON ], - [ 24, Moves.COSMIC_POWER ], - [ 27, Moves.EXTRASENSORY ], - [ 30, Moves.EARTH_POWER ], - [ 33, Moves.SELF_DESTRUCT ], - [ 36, Moves.GUARD_SPLIT ], - [ 36, Moves.POWER_SPLIT ], - [ 39, Moves.SANDSTORM ], - [ 42, Moves.EXPLOSION ], - ], - [Species.CLAYDOL]: [ - [ EVOLVE_MOVE, Moves.HYPER_BEAM ], - [ 1, Moves.TELEPORT ], - [ 1, Moves.HARDEN ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.CONFUSION ], - [ 9, Moves.ROCK_TOMB ], - [ 12, Moves.POWER_TRICK ], - [ 15, Moves.PSYBEAM ], - [ 18, Moves.ANCIENT_POWER ], - [ 21, Moves.IMPRISON ], - [ 24, Moves.COSMIC_POWER ], - [ 27, Moves.EXTRASENSORY ], - [ 30, Moves.EARTH_POWER ], - [ 33, Moves.SELF_DESTRUCT ], - [ 38, Moves.GUARD_SPLIT ], - [ 38, Moves.POWER_SPLIT ], - [ 43, Moves.SANDSTORM ], - [ 48, Moves.EXPLOSION ], - ], - [Species.LILEEP]: [ - [ 1, Moves.WRAP ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.CONSTRICT ], - [ 4, Moves.ACID ], - [ 8, Moves.CONFUSE_RAY ], - [ 12, Moves.INGRAIN ], - [ 16, Moves.ANCIENT_POWER ], - [ 20, Moves.MEGA_DRAIN ], - [ 24, Moves.BRINE ], - [ 28, Moves.AMNESIA ], - [ 32, Moves.GASTRO_ACID ], - [ 36, Moves.GIGA_DRAIN ], - [ 41, Moves.STOCKPILE ], - [ 41, Moves.SPIT_UP ], - [ 41, Moves.SWALLOW ], - [ 44, Moves.ENERGY_BALL ], - ], - [Species.CRADILY]: [ - [ 1, Moves.LEECH_SEED ], - [ 1, Moves.WRAP ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.CONSTRICT ], - [ 1, Moves.ACID ], - [ 1, Moves.CONFUSE_RAY ], - [ 12, Moves.INGRAIN ], - [ 16, Moves.ANCIENT_POWER ], - [ 20, Moves.MEGA_DRAIN ], - [ 24, Moves.BRINE ], - [ 28, Moves.AMNESIA ], - [ 32, Moves.GASTRO_ACID ], - [ 36, Moves.GIGA_DRAIN ], - [ 43, Moves.STOCKPILE ], - [ 43, Moves.SPIT_UP ], - [ 43, Moves.SWALLOW ], - [ 48, Moves.ENERGY_BALL ], - ], - [Species.ANORITH]: [ - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.HARDEN ], - [ 4, Moves.WATER_GUN ], - [ 8, Moves.SMACK_DOWN ], - [ 12, Moves.METAL_CLAW ], - [ 16, Moves.ANCIENT_POWER ], - [ 20, Moves.BUG_BITE ], - [ 24, Moves.BRINE ], - [ 28, Moves.SLASH ], - [ 32, Moves.CRUSH_CLAW ], - [ 36, Moves.ROCK_BLAST ], - [ 41, Moves.PROTECT ], - [ 44, Moves.X_SCISSOR ], - ], - [Species.ARMALDO]: [ - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.HARDEN ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.SMACK_DOWN ], - [ 12, Moves.METAL_CLAW ], - [ 16, Moves.ANCIENT_POWER ], - [ 20, Moves.BUG_BITE ], - [ 24, Moves.BRINE ], - [ 28, Moves.SLASH ], - [ 32, Moves.CRUSH_CLAW ], - [ 36, Moves.ROCK_BLAST ], - [ 43, Moves.PROTECT ], - [ 48, Moves.X_SCISSOR ], - ], - [Species.FEEBAS]: [ - [ 1, Moves.SPLASH ], - [ 15, Moves.TACKLE ], - [ 25, Moves.FLAIL ], - ], - [Species.MILOTIC]: [ - [ EVOLVE_MOVE, Moves.WATER_PULSE ], - [ 1, Moves.FLAIL ], - [ 1, Moves.SPLASH ], - [ 1, Moves.TACKLE ], - [ 1, Moves.WRAP ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.WATER_SPORT ], - [ 4, Moves.DISARMING_VOICE ], - [ 8, Moves.TWISTER ], - [ 12, Moves.AQUA_RING ], - [ 16, Moves.ATTRACT ], - [ 20, Moves.LIFE_DEW ], - [ 24, Moves.DRAGON_TAIL ], - [ 28, Moves.RECOVER ], - [ 32, Moves.AQUA_TAIL ], - [ 36, Moves.SAFEGUARD ], - [ 40, Moves.SURF ], - [ 44, Moves.RAIN_DANCE ], - [ 48, Moves.COIL ], - [ 52, Moves.HYDRO_PUMP ], - ], - [Species.CASTFORM]: [ - [ 1, Moves.TACKLE ], - [ 10, Moves.WATER_GUN ], - [ 10, Moves.EMBER ], - [ 10, Moves.POWDER_SNOW ], - [ 15, Moves.HEADBUTT ], - [ 20, Moves.RAIN_DANCE ], - [ 20, Moves.SUNNY_DAY ], - [ 20, Moves.HAIL ], - [ 25, Moves.WEATHER_BALL ], - [ 35, Moves.HYDRO_PUMP ], - [ 35, Moves.FIRE_BLAST ], - [ 35, Moves.BLIZZARD ], - [ 45, Moves.HURRICANE ], - ], - [Species.KECLEON]: [ - [ 1, Moves.THIEF ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.LICK ], - [ 1, Moves.SCRATCH ], - [ 4, Moves.BIND ], - [ 7, Moves.SHADOW_SNEAK ], - [ 10, Moves.FEINT ], - [ 13, Moves.FURY_SWIPES ], - [ 16, Moves.DISABLE ], - [ 18, Moves.PSYBEAM ], - [ 21, Moves.ANCIENT_POWER ], - [ 25, Moves.SLASH ], - [ 30, Moves.DETECT ], - [ 33, Moves.SHADOW_CLAW ], - [ 38, Moves.SCREECH ], - [ 42, Moves.SUBSTITUTE ], - [ 46, Moves.SUCKER_PUNCH ], - [ 50, Moves.FOUL_PLAY ], - ], - [Species.SHUPPET]: [ - [ 1, Moves.ASTONISH ], - [ 1, Moves.PURSUIT ], // Custom - [ 4, Moves.SCREECH ], - [ 7, Moves.NIGHT_SHADE ], - [ 10, Moves.SPITE ], - [ 16, Moves.WILL_O_WISP ], - [ 19, Moves.SHADOW_SNEAK ], - [ 22, Moves.HEX ], - [ 26, Moves.CURSE ], - [ 30, Moves.SHADOW_BALL ], - [ 34, Moves.ROLE_PLAY ], - [ 38, Moves.SUCKER_PUNCH ], - [ 42, Moves.TRICK ], - [ 48, Moves.PHANTOM_FORCE ], - ], - [Species.BANETTE]: [ - [ EVOLVE_MOVE, Moves.KNOCK_OFF ], - [ 1, Moves.ASTONISH ], // Previous Stage Move - [ 1, Moves.PURSUIT ], // Previous Stage Move, Custom - [ 1, Moves.SCREECH ], - [ 1, Moves.NIGHT_SHADE ], - [ 1, Moves.SPITE ], - [ 16, Moves.WILL_O_WISP ], - [ 19, Moves.SHADOW_SNEAK ], - [ 22, Moves.HEX ], - [ 26, Moves.CURSE ], - [ 30, Moves.SHADOW_BALL ], - [ 34, Moves.ROLE_PLAY ], - [ 40, Moves.SUCKER_PUNCH ], - [ 46, Moves.TRICK ], - [ 53, Moves.PHANTOM_FORCE ], - ], - [Species.DUSKULL]: [ - [ 1, Moves.ASTONISH ], - [ 1, Moves.LEER ], - [ 1, Moves.PURSUIT ], // Custom - [ 4, Moves.DISABLE ], - [ 8, Moves.SHADOW_SNEAK ], - [ 12, Moves.CONFUSE_RAY ], - [ 16, Moves.NIGHT_SHADE ], - [ 20, Moves.PAYBACK ], - [ 24, Moves.WILL_O_WISP ], - [ 28, Moves.MEAN_LOOK ], - [ 32, Moves.HEX ], - [ 36, Moves.CURSE ], - [ 40, Moves.SHADOW_BALL ], - [ 44, Moves.FUTURE_SIGHT ], - ], - [Species.DUSCLOPS]: [ - [ EVOLVE_MOVE, Moves.SHADOW_PUNCH ], - [ 1, Moves.FIRE_PUNCH ], - [ 1, Moves.ICE_PUNCH ], - [ 1, Moves.THUNDER_PUNCH ], - [ 1, Moves.GRAVITY ], - [ 1, Moves.BIND ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.LEER ], - [ 1, Moves.PURSUIT ], // Previous Stage Move, Custom - [ 1, Moves.DISABLE ], - [ 1, Moves.SHADOW_SNEAK ], - [ 12, Moves.CONFUSE_RAY ], - [ 16, Moves.NIGHT_SHADE ], - [ 20, Moves.PAYBACK ], - [ 24, Moves.WILL_O_WISP ], - [ 28, Moves.MEAN_LOOK ], - [ 32, Moves.HEX ], - [ 36, Moves.CURSE ], - [ 42, Moves.SHADOW_BALL ], - [ 48, Moves.FUTURE_SIGHT ], - ], - [Species.TROPIUS]: [ - [ 1, Moves.LEAF_STORM ], - [ 1, Moves.GUST ], - [ 1, Moves.LEER ], - [ 1, Moves.GROWTH ], - [ 1, Moves.RAZOR_LEAF ], - [ 6, Moves.SWEET_SCENT ], - [ 10, Moves.STOMP ], - [ 16, Moves.MAGICAL_LEAF ], - [ 21, Moves.WHIRLWIND ], - [ 30, Moves.WIDE_GUARD ], - [ 36, Moves.AIR_SLASH ], - [ 41, Moves.BODY_SLAM ], - [ 46, Moves.OUTRAGE ], - [ 50, Moves.SYNTHESIS ], - [ 56, Moves.SOLAR_BEAM ], - ], - [Species.CHIMECHO]: [ - [ 1, Moves.HEALING_WISH ], - [ 1, Moves.LAST_RESORT ], // Previous Stage Move - [ 1, Moves.ENTRAINMENT ], // Previous Stage Move - [ 1, Moves.WRAP ], - [ 1, Moves.PSYWAVE ], // Previous Stage Move, Custom - [ 1, Moves.GROWL ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.SYNCHRONOISE ], - [ 13, Moves.YAWN ], - [ 16, Moves.STORED_POWER ], - [ 19, Moves.TAKE_DOWN ], - [ 22, Moves.EXTRASENSORY ], - [ 27, Moves.HEAL_BELL ], - [ 32, Moves.UPROAR ], - [ 37, Moves.SAFEGUARD ], - [ 42, Moves.DOUBLE_EDGE ], - [ 47, Moves.HEAL_PULSE ], - ], - [Species.ABSOL]: [ - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.LEER ], - [ 5, Moves.DOUBLE_TEAM ], - [ 10, Moves.KNOCK_OFF ], - [ 15, Moves.DETECT ], - [ 20, Moves.TAUNT ], - [ 25, Moves.SLASH ], - [ 30, Moves.NIGHT_SLASH ], - [ 35, Moves.FOCUS_ENERGY ], - [ 40, Moves.SUCKER_PUNCH ], - [ 45, Moves.SWORDS_DANCE ], - [ 50, Moves.FUTURE_SIGHT ], - [ 55, Moves.PERISH_SONG ], - ], - [Species.WYNAUT]: [ - [ 1, Moves.COUNTER ], - [ 1, Moves.MIRROR_COAT ], - [ 1, Moves.SAFEGUARD ], - [ 1, Moves.DESTINY_BOND ], - [ 1, Moves.SPLASH ], - [ 1, Moves.CHARM ], - [ 1, Moves.ENCORE ], - [ 1, Moves.AMNESIA ], - ], - [Species.SNORUNT]: [ - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.HEADBUTT ], - [ 5, Moves.LEER ], - [ 10, Moves.DOUBLE_TEAM ], - [ 15, Moves.ICE_SHARD ], - [ 20, Moves.PROTECT ], - [ 25, Moves.ICY_WIND ], - [ 30, Moves.FROST_BREATH ], - [ 35, Moves.BITE ], - [ 40, Moves.ICE_FANG ], - [ 45, Moves.SNOWSCAPE ], - [ 50, Moves.WEATHER_BALL ], - [ 55, Moves.CRUNCH ], - [ 60, Moves.BLIZZARD ], - ], - [Species.GLALIE]: [ - [ EVOLVE_MOVE, Moves.FREEZE_DRY ], - [ 1, Moves.SHEER_COLD ], - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.HEADBUTT ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.LEER ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.ICE_BALL ], - [ 15, Moves.ICE_SHARD ], - [ 20, Moves.PROTECT ], - [ 25, Moves.ICY_WIND ], - [ 30, Moves.FROST_BREATH ], - [ 35, Moves.BITE ], - [ 40, Moves.ICE_FANG ], - [ 47, Moves.SNOWSCAPE ], - [ 54, Moves.WEATHER_BALL ], - [ 61, Moves.CRUNCH ], - [ 68, Moves.BLIZZARD ], - ], - [Species.SPHEAL]: [ - [ 1, Moves.ROLLOUT ], - [ 1, Moves.DEFENSE_CURL ], - [ 4, Moves.GROWL ], - [ 8, Moves.WATER_GUN ], - [ 12, Moves.POWDER_SNOW ], - [ 16, Moves.REST ], - [ 20, Moves.SNORE ], - [ 24, Moves.BRINE ], - [ 28, Moves.AURORA_BEAM ], - [ 33, Moves.ENCORE ], - [ 36, Moves.BODY_SLAM ], - [ 40, Moves.SURF ], - [ 44, Moves.BLIZZARD ], - [ 48, Moves.HAIL ], - [ 52, Moves.SHEER_COLD ], - ], - [Species.SEALEO]: [ - [ EVOLVE_MOVE, Moves.SWAGGER ], - [ 1, Moves.ROLLOUT ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 12, Moves.POWDER_SNOW ], - [ 16, Moves.REST ], - [ 20, Moves.SNORE ], - [ 24, Moves.BRINE ], - [ 28, Moves.AURORA_BEAM ], - [ 35, Moves.ENCORE ], - [ 40, Moves.BODY_SLAM ], - [ 46, Moves.SURF ], - [ 52, Moves.BLIZZARD ], - [ 58, Moves.HAIL ], - [ 64, Moves.SHEER_COLD ], - ], - [Species.WALREIN]: [ - [ 1, Moves.SWAGGER ], - [ 1, Moves.CRUNCH ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.ROLLOUT ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 12, Moves.POWDER_SNOW ], - [ 16, Moves.REST ], - [ 20, Moves.SNORE ], - [ 24, Moves.BRINE ], - [ 28, Moves.AURORA_BEAM ], - [ 35, Moves.ENCORE ], - [ 40, Moves.BODY_SLAM ], - [ 48, Moves.SURF ], - [ 56, Moves.BLIZZARD ], - [ 64, Moves.HAIL ], - [ 72, Moves.SHEER_COLD ], - ], - [Species.CLAMPERL]: [ - [ 1, Moves.CLAMP ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.WHIRLPOOL ], - [ 1, Moves.IRON_DEFENSE ], - [ 50, Moves.SHELL_SMASH ], - ], - [Species.HUNTAIL]: [ - [ 1, Moves.CLAMP ], // Previous Stage Move - [ 1, Moves.WATER_GUN ], - [ 1, Moves.IRON_DEFENSE ], - [ 1, Moves.SHELL_SMASH ], - [ 1, Moves.WHIRLPOOL ], - [ 1, Moves.BITE ], - [ 5, Moves.SCREECH ], - [ 9, Moves.SCARY_FACE ], - [ 11, Moves.RAIN_DANCE ], - [ 14, Moves.WATER_PULSE ], - [ 16, Moves.ICE_FANG ], - [ 19, Moves.BRINE ], - [ 23, Moves.SUCKER_PUNCH ], - [ 26, Moves.DIVE ], - [ 29, Moves.BATON_PASS ], - [ 34, Moves.CRUNCH ], - [ 39, Moves.AQUA_TAIL ], - [ 45, Moves.COIL ], - [ 50, Moves.HYDRO_PUMP ], - ], - [Species.GOREBYSS]: [ - [ 1, Moves.CLAMP ], // Previous Stage Move - [ 1, Moves.WATER_GUN ], - [ 1, Moves.IRON_DEFENSE ], - [ 1, Moves.SHELL_SMASH ], - [ 1, Moves.WHIRLPOOL ], - [ 1, Moves.CONFUSION ], - [ 5, Moves.RAIN_DANCE ], - [ 9, Moves.AGILITY ], - [ 11, Moves.DRAINING_KISS ], - [ 14, Moves.WATER_PULSE ], - [ 16, Moves.AMNESIA ], - [ 19, Moves.AQUA_RING ], - [ 23, Moves.SAFEGUARD ], - [ 26, Moves.DIVE ], - [ 29, Moves.BATON_PASS ], - [ 34, Moves.PSYCHIC ], - [ 39, Moves.AQUA_TAIL ], - [ 45, Moves.COIL ], - [ 50, Moves.HYDRO_PUMP ], - ], - [Species.RELICANTH]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 5, Moves.WATER_GUN ], - [ 10, Moves.ANCIENT_POWER ], - [ 15, Moves.YAWN ], - [ 20, Moves.DIVE ], - [ 25, Moves.TAKE_DOWN ], - [ 30, Moves.AQUA_TAIL ], - [ 35, Moves.REST ], - [ 40, Moves.FLAIL ], - [ 45, Moves.HYDRO_PUMP ], - [ 50, Moves.DOUBLE_EDGE ], - [ 55, Moves.HEAD_SMASH ], - ], - [Species.LUVDISC]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.CHARM ], - [ 4, Moves.WATER_GUN ], - [ 7, Moves.AGILITY ], - [ 13, Moves.WISH ], - [ 17, Moves.WATER_PULSE ], - [ 20, Moves.ATTRACT ], - [ 22, Moves.DRAINING_KISS ], - [ 26, Moves.FLAIL ], - [ 31, Moves.SWEET_KISS ], - [ 34, Moves.TAKE_DOWN ], - [ 37, Moves.BABY_DOLL_EYES ], - [ 40, Moves.AQUA_RING ], - [ 42, Moves.SOAK ], - [ 46, Moves.HYDRO_PUMP ], - [ 49, Moves.SAFEGUARD ], - ], - [Species.BAGON]: [ - [ 1, Moves.EMBER ], - [ 1, Moves.LEER ], - [ 5, Moves.BITE ], - [ 10, Moves.DRAGON_BREATH ], - [ 15, Moves.HEADBUTT ], - [ 20, Moves.SCARY_FACE ], - [ 25, Moves.CRUNCH ], - [ 31, Moves.DRAGON_CLAW ], - [ 35, Moves.ZEN_HEADBUTT ], - [ 40, Moves.FOCUS_ENERGY ], - [ 45, Moves.FLAMETHROWER ], - [ 50, Moves.OUTRAGE ], - [ 55, Moves.DOUBLE_EDGE ], - ], - [Species.SHELGON]: [ - [ EVOLVE_MOVE, Moves.PROTECT ], - [ 1, Moves.EMBER ], - [ 1, Moves.LEER ], - [ 1, Moves.BITE ], - [ 1, Moves.DRAGON_BREATH ], - [ 15, Moves.HEADBUTT ], - [ 20, Moves.SCARY_FACE ], - [ 25, Moves.CRUNCH ], - [ 33, Moves.DRAGON_CLAW ], - [ 39, Moves.ZEN_HEADBUTT ], - [ 46, Moves.FOCUS_ENERGY ], - [ 53, Moves.FLAMETHROWER ], - [ 60, Moves.OUTRAGE ], - [ 67, Moves.DOUBLE_EDGE ], - ], - [Species.SALAMENCE]: [ - [ EVOLVE_MOVE, Moves.FLY ], - [ RELEARN_MOVE, Moves.OUTRAGE ], // Previous Stage Move - [ 1, Moves.PROTECT ], - [ 1, Moves.DRAGON_TAIL ], - [ 1, Moves.DUAL_WINGBEAT ], - [ 1, Moves.ROOST ], - [ 1, Moves.EMBER ], - [ 1, Moves.LEER ], - [ 1, Moves.BITE ], - [ 1, Moves.DRAGON_BREATH ], - [ 15, Moves.HEADBUTT ], - [ 20, Moves.SCARY_FACE ], - [ 25, Moves.CRUNCH ], - [ 33, Moves.DRAGON_CLAW ], - [ 39, Moves.ZEN_HEADBUTT ], - [ 46, Moves.FOCUS_ENERGY ], - [ 55, Moves.FLAMETHROWER ], - [ 73, Moves.DOUBLE_EDGE ], - ], - [Species.BELDUM]: [ - [ 1, Moves.TACKLE ], - ], - [Species.METANG]: [ - [ EVOLVE_MOVE, Moves.CONFUSION ], - [ EVOLVE_MOVE, Moves.METAL_CLAW ], - [ 1, Moves.TACKLE ], - [ 1, Moves.BULLET_PUNCH ], - [ 1, Moves.HONE_CLAWS ], - [ 6, Moves.ZEN_HEADBUTT ], - [ 12, Moves.MAGNET_RISE ], - [ 18, Moves.FLASH_CANNON ], - [ 26, Moves.TAKE_DOWN ], - [ 34, Moves.PSYCHIC ], - [ 42, Moves.SCARY_FACE ], - [ 50, Moves.METEOR_MASH ], - [ 58, Moves.IRON_DEFENSE ], - [ 66, Moves.AGILITY ], - [ 74, Moves.HYPER_BEAM ], - ], - [Species.METAGROSS]: [ - [ EVOLVE_MOVE, Moves.HAMMER_ARM ], - [ RELEARN_MOVE, Moves.EXPLOSION ], - [ RELEARN_MOVE, Moves.HONE_CLAWS ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.BULLET_PUNCH ], - [ 1, Moves.TACKLE ], - [ 6, Moves.ZEN_HEADBUTT ], - [ 12, Moves.MAGNET_RISE ], - [ 16, Moves.FLASH_CANNON ], - [ 26, Moves.TAKE_DOWN ], - [ 34, Moves.PSYCHIC ], - [ 42, Moves.SCARY_FACE ], - [ 52, Moves.METEOR_MASH ], - [ 62, Moves.IRON_DEFENSE ], - [ 72, Moves.AGILITY ], - [ 82, Moves.HYPER_BEAM ], - ], - [Species.REGIROCK]: [ - [ 1, Moves.CHARGE_BEAM ], - [ 1, Moves.ROCK_THROW ], - [ 6, Moves.BULLDOZE ], - [ 12, Moves.ANCIENT_POWER ], - [ 18, Moves.STOMP ], - [ 24, Moves.ROCK_SLIDE ], - [ 30, Moves.CURSE ], - [ 36, Moves.IRON_DEFENSE ], - [ 42, Moves.HAMMER_ARM ], - [ 48, Moves.STONE_EDGE ], - [ 54, Moves.SUPERPOWER ], - [ 60, Moves.LOCK_ON ], - [ 66, Moves.ZAP_CANNON ], - [ 72, Moves.HYPER_BEAM ], - [ 78, Moves.EXPLOSION ], - ], - [Species.REGICE]: [ - [ 1, Moves.CHARGE_BEAM ], - [ 1, Moves.ICY_WIND ], - [ 6, Moves.BULLDOZE ], - [ 12, Moves.ANCIENT_POWER ], - [ 18, Moves.STOMP ], - [ 24, Moves.ICE_BEAM ], - [ 30, Moves.CURSE ], - [ 36, Moves.AMNESIA ], - [ 42, Moves.HAMMER_ARM ], - [ 48, Moves.BLIZZARD ], - [ 54, Moves.SUPERPOWER ], - [ 60, Moves.LOCK_ON ], - [ 66, Moves.ZAP_CANNON ], - [ 72, Moves.HYPER_BEAM ], - [ 78, Moves.EXPLOSION ], - ], - [Species.REGISTEEL]: [ - [ 1, Moves.CHARGE_BEAM ], - [ 1, Moves.METAL_CLAW ], - [ 6, Moves.BULLDOZE ], - [ 12, Moves.ANCIENT_POWER ], - [ 18, Moves.STOMP ], - [ 24, Moves.IRON_HEAD ], - [ 24, Moves.FLASH_CANNON ], - [ 30, Moves.CURSE ], - [ 36, Moves.AMNESIA ], - [ 36, Moves.IRON_DEFENSE ], - [ 42, Moves.HAMMER_ARM ], - [ 48, Moves.HEAVY_SLAM ], - [ 54, Moves.SUPERPOWER ], - [ 60, Moves.LOCK_ON ], - [ 66, Moves.ZAP_CANNON ], - [ 72, Moves.HYPER_BEAM ], - [ 78, Moves.EXPLOSION ], - ], - [Species.LATIAS]: [ - [ 1, Moves.STORED_POWER ], - [ 1, Moves.CHARM ], - [ 1, Moves.PSYWAVE ], - [ 5, Moves.HELPING_HAND ], - [ 10, Moves.RECOVER ], - [ 15, Moves.CONFUSION ], - [ 20, Moves.TAILWIND ], - [ 25, Moves.DRAGON_BREATH ], - [ 30, Moves.WISH ], - [ 35, Moves.MIST_BALL ], - [ 40, Moves.ZEN_HEADBUTT ], - [ 45, Moves.DRAGON_PULSE ], - [ 50, Moves.HEAL_PULSE ], - [ 55, Moves.REFLECT_TYPE ], - [ 60, Moves.PSYCHIC ], - [ 65, Moves.GUARD_SPLIT ], - [ 70, Moves.HEALING_WISH ], - ], - [Species.LATIOS]: [ - [ 1, Moves.STORED_POWER ], - [ 1, Moves.DRAGON_DANCE ], - [ 1, Moves.HEAL_BLOCK ], - [ 1, Moves.PSYWAVE ], - [ 5, Moves.HELPING_HAND ], - [ 10, Moves.RECOVER ], - [ 15, Moves.CONFUSION ], - [ 20, Moves.TAILWIND ], - [ 25, Moves.DRAGON_BREATH ], - [ 30, Moves.ALLY_SWITCH ], - [ 35, Moves.LUSTER_PURGE ], - [ 40, Moves.ZEN_HEADBUTT ], - [ 45, Moves.DRAGON_PULSE ], - [ 50, Moves.HEAL_PULSE ], - [ 55, Moves.SIMPLE_BEAM ], - [ 60, Moves.PSYCHIC ], - [ 65, Moves.POWER_SPLIT ], - [ 70, Moves.MEMENTO ], - ], - [Species.KYOGRE]: [ - [ 1, Moves.ORIGIN_PULSE ], - [ 1, Moves.WATER_PULSE ], - [ 1, Moves.ANCIENT_POWER ], - [ 1, Moves.BODY_SLAM ], - [ 1, Moves.SCARY_FACE ], - [ 9, Moves.AQUA_TAIL ], - [ 18, Moves.CALM_MIND ], - [ 27, Moves.MUDDY_WATER ], - [ 36, Moves.ICE_BEAM ], - [ 45, Moves.SHEER_COLD ], - [ 54, Moves.AQUA_RING ], - [ 72, Moves.HYDRO_PUMP ], - [ 81, Moves.DOUBLE_EDGE ], - [ 90, Moves.WATER_SPOUT ], - ], - [Species.GROUDON]: [ - [ 1, Moves.PRECIPICE_BLADES ], - [ 1, Moves.MUD_SHOT ], - [ 1, Moves.ANCIENT_POWER ], - [ 1, Moves.LAVA_PLUME ], - [ 1, Moves.SCARY_FACE ], - [ 9, Moves.EARTH_POWER ], - [ 18, Moves.BULK_UP ], - [ 27, Moves.EARTHQUAKE ], - [ 36, Moves.HAMMER_ARM ], - [ 45, Moves.FISSURE ], - [ 54, Moves.REST ], - [ 72, Moves.FIRE_BLAST ], - [ 81, Moves.SOLAR_BEAM ], - [ 90, Moves.ERUPTION ], - ], - [Species.RAYQUAZA]: [ - [ 1, Moves.DRAGON_ASCENT ], - [ 1, Moves.TWISTER ], - [ 1, Moves.ANCIENT_POWER ], - [ 1, Moves.AIR_SLASH ], - [ 1, Moves.SCARY_FACE ], - [ 9, Moves.CRUNCH ], - [ 18, Moves.DRAGON_DANCE ], - [ 27, Moves.EXTREME_SPEED ], - [ 36, Moves.DRAGON_PULSE ], - [ 45, Moves.HYPER_VOICE ], - [ 54, Moves.REST ], - [ 63, Moves.FLY ], - [ 72, Moves.HURRICANE ], - [ 81, Moves.OUTRAGE ], - [ 90, Moves.HYPER_BEAM ], - ], - [Species.JIRACHI]: [ - [ 1, Moves.CONFUSION ], - [ 1, Moves.WISH ], - [ 7, Moves.SWIFT ], - [ 21, Moves.LIFE_DEW ], - [ 28, Moves.ZEN_HEADBUTT ], - [ 35, Moves.GRAVITY ], - [ 42, Moves.PSYCHIC ], - [ 49, Moves.METEOR_MASH ], - [ 56, Moves.HEALING_WISH ], - [ 63, Moves.REST ], - [ 70, Moves.FUTURE_SIGHT ], - [ 77, Moves.DOUBLE_EDGE ], - [ 84, Moves.COSMIC_POWER ], - [ 91, Moves.LAST_RESORT ], - [ 98, Moves.DOOM_DESIRE ], - ], - [Species.DEOXYS]: [ - [ 1, Moves.CONFUSION ], // Custom - [ 1, Moves.LEER ], - [ 1, Moves.WRAP ], - [ 7, Moves.NIGHT_SHADE ], - [ 13, Moves.TELEPORT ], - [ 19, Moves.KNOCK_OFF ], - [ 25, Moves.PSYSHOCK ], - [ 31, Moves.PSYCHIC ], - [ 37, Moves.GRAVITY ], - [ 43, Moves.SKILL_SWAP ], - [ 49, Moves.ZEN_HEADBUTT ], - [ 55, Moves.COSMIC_POWER ], - [ 61, Moves.RECOVER ], - [ 67, Moves.PSYCHO_BOOST ], - [ 73, Moves.HYPER_BEAM ], - ], - [Species.TURTWIG]: [ - [ 1, Moves.TACKLE ], - [ 5, Moves.WITHDRAW ], - [ 5, Moves.LEAFAGE ], // Custom, moved from 10 to 5, BDSP - [ 9, Moves.GROWTH ], // Fill empty moveslot, from BDSP level 6 - [ 13, Moves.RAZOR_LEAF ], - [ 17, Moves.CURSE ], - [ 21, Moves.BITE ], - [ 25, Moves.MEGA_DRAIN ], - [ 29, Moves.LEECH_SEED ], - [ 33, Moves.SYNTHESIS ], - [ 37, Moves.CRUNCH ], - [ 41, Moves.GIGA_DRAIN ], - [ 45, Moves.LEAF_STORM ], - ], - [Species.GROTLE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.ABSORB ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.LEAFAGE ], - [ 1, Moves.GROWTH ], // Previous Stage Move - [ 13, Moves.RAZOR_LEAF ], - [ 17, Moves.CURSE ], - [ 22, Moves.BITE ], - [ 27, Moves.MEGA_DRAIN ], - [ 32, Moves.LEECH_SEED ], - [ 37, Moves.SYNTHESIS ], - [ 42, Moves.CRUNCH ], - [ 47, Moves.GIGA_DRAIN ], - [ 52, Moves.LEAF_STORM ], - ], - [Species.TORTERRA]: [ - [ EVOLVE_MOVE, Moves.EARTHQUAKE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.ABSORB ], - [ 1, Moves.LEAFAGE ], - [ 1, Moves.GROWTH ], // Previous Stage Move - [ 1, Moves.RAZOR_LEAF ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.WOOD_HAMMER ], - [ 17, Moves.CURSE ], - [ 22, Moves.BITE ], - [ 27, Moves.MEGA_DRAIN ], - [ 33, Moves.LEECH_SEED ], - [ 39, Moves.SYNTHESIS ], - [ 45, Moves.CRUNCH ], - [ 51, Moves.GIGA_DRAIN ], - [ 57, Moves.LEAF_STORM ], - [ 63, Moves.HEADLONG_RUSH ], - ], - [Species.CHIMCHAR]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 5, Moves.EMBER ], // Custom, moved from 7 to 5 - [ 9, Moves.TAUNT ], - [ 15, Moves.FURY_SWIPES ], - [ 17, Moves.FLAME_WHEEL ], - [ 23, Moves.NASTY_PLOT ], - [ 25, Moves.TORMENT ], - [ 31, Moves.FACADE ], - [ 33, Moves.FIRE_SPIN ], - [ 39, Moves.ACROBATICS ], - [ 41, Moves.SLACK_OFF ], - [ 47, Moves.FLAMETHROWER ], - ], - [Species.MONFERNO]: [ - [ EVOLVE_MOVE, Moves.MACH_PUNCH ], - [ RELEARN_MOVE, Moves.NASTY_PLOT ], // Previous Stage Move - [ RELEARN_MOVE, Moves.FACADE ], // Previous Stage Move - [ RELEARN_MOVE, Moves.FLAMETHROWER ], // Previous Stage Move - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 9, Moves.TAUNT ], - [ 16, Moves.FURY_SWIPES ], - [ 19, Moves.FLAME_WHEEL ], - [ 26, Moves.FEINT ], - [ 29, Moves.TORMENT ], - [ 36, Moves.CLOSE_COMBAT ], - [ 39, Moves.FIRE_SPIN ], - [ 46, Moves.ACROBATICS ], - [ 49, Moves.SLACK_OFF ], - [ 56, Moves.FLARE_BLITZ ], - ], - [Species.INFERNAPE]: [ - [ EVOLVE_MOVE, Moves.CLOSE_COMBAT ], - [ RELEARN_MOVE, Moves.TAUNT ], - [ RELEARN_MOVE, Moves.NASTY_PLOT ], // Previous Stage Move - [ RELEARN_MOVE, Moves.FACADE ], // Previous Stage Move - [ RELEARN_MOVE, Moves.SLACK_OFF ], - [ RELEARN_MOVE, Moves.FLAMETHROWER ], // Previous Stage Move - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 1, Moves.MACH_PUNCH ], - [ 16, Moves.FURY_SWIPES ], - [ 19, Moves.FLAME_WHEEL ], - [ 26, Moves.FEINT ], - [ 29, Moves.TORMENT ], - [ 42, Moves.FIRE_SPIN ], - [ 47, Moves.FLARE_BLITZ ], - [ 52, Moves.ACROBATICS ], - [ 58, Moves.CALM_MIND ], - [ 65, Moves.RAGING_FURY ], - ], - [Species.PIPLUP]: [ - [ 1, Moves.POUND ], - [ 4, Moves.GROWL ], - [ 5, Moves.WATER_GUN ], // Custom, moved from 8 to 5 - [ 11, Moves.CHARM ], - [ 15, Moves.PECK ], - [ 18, Moves.BUBBLE_BEAM ], - [ 22, Moves.SWAGGER ], - [ 25, Moves.FURY_ATTACK ], - [ 29, Moves.BRINE ], - [ 32, Moves.WHIRLPOOL ], - [ 36, Moves.MIST ], - [ 39, Moves.DRILL_PECK ], - [ 43, Moves.HYDRO_PUMP ], - ], - [Species.PRINPLUP]: [ - [ EVOLVE_MOVE, Moves.METAL_CLAW ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.CHARM ], // Previous Stage Move - [ 15, Moves.PECK ], - [ 19, Moves.BUBBLE_BEAM ], - [ 24, Moves.SWAGGER ], - [ 28, Moves.FURY_ATTACK ], - [ 33, Moves.BRINE ], - [ 37, Moves.WHIRLPOOL ], - [ 42, Moves.MIST ], - [ 46, Moves.DRILL_PECK ], - [ 50, Moves.HYDRO_PUMP ], - ], - [Species.EMPOLEON]: [ - [ EVOLVE_MOVE, Moves.AQUA_JET ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.CHARM ], // Previous Stage Move - [ 1, Moves.METAL_CLAW ], - [ 11, Moves.SWORDS_DANCE ], - [ 15, Moves.PECK ], - [ 19, Moves.BUBBLE_BEAM ], - [ 24, Moves.SWAGGER ], - [ 28, Moves.FURY_ATTACK ], - [ 33, Moves.BRINE ], - [ 39, Moves.WHIRLPOOL ], - [ 46, Moves.MIST ], - [ 52, Moves.DRILL_PECK ], - [ 59, Moves.HYDRO_PUMP ], - [ 66, Moves.WAVE_CRASH ], - ], - [Species.STARLY]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 5, Moves.QUICK_ATTACK ], - [ 9, Moves.WING_ATTACK ], - [ 13, Moves.DOUBLE_TEAM ], - [ 17, Moves.ENDEAVOR ], - [ 21, Moves.WHIRLWIND ], - [ 25, Moves.AERIAL_ACE ], - [ 29, Moves.TAKE_DOWN ], - [ 33, Moves.AGILITY ], - [ 37, Moves.BRAVE_BIRD ], - [ 41, Moves.FINAL_GAMBIT ], - ], - [Species.STARAVIA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.QUICK_ATTACK ], - [ 9, Moves.WING_ATTACK ], - [ 13, Moves.DOUBLE_TEAM ], - [ 18, Moves.ENDEAVOR ], - [ 23, Moves.WHIRLWIND ], - [ 28, Moves.AERIAL_ACE ], - [ 33, Moves.TAKE_DOWN ], - [ 38, Moves.AGILITY ], - [ 43, Moves.BRAVE_BIRD ], - [ 48, Moves.FINAL_GAMBIT ], - ], - [Species.STARAPTOR]: [ - [ EVOLVE_MOVE, Moves.CLOSE_COMBAT ], - [ 1, Moves.WING_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.QUICK_ATTACK ], - [ 13, Moves.DOUBLE_TEAM ], - [ 18, Moves.ENDEAVOR ], - [ 23, Moves.WHIRLWIND ], - [ 28, Moves.AERIAL_ACE ], - [ 33, Moves.TAKE_DOWN ], - [ 41, Moves.AGILITY ], - [ 49, Moves.BRAVE_BIRD ], - [ 57, Moves.FINAL_GAMBIT ], - ], - [Species.BIDOOF]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 5, Moves.DEFENSE_CURL ], - [ 9, Moves.ROLLOUT ], - [ 13, Moves.HEADBUTT ], - [ 17, Moves.HYPER_FANG ], - [ 21, Moves.YAWN ], - [ 25, Moves.CRUNCH ], - [ 29, Moves.TAKE_DOWN ], - [ 33, Moves.SUPER_FANG ], - [ 37, Moves.SWORDS_DANCE ], - [ 41, Moves.AMNESIA ], - [ 45, Moves.SUPERPOWER ], - [ 49, Moves.CURSE ], - ], - [Species.BIBAREL]: [ - [ EVOLVE_MOVE, Moves.WATER_GUN ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.AQUA_JET ], - [ 1, Moves.ROTOTILLER ], - [ 5, Moves.DEFENSE_CURL ], - [ 9, Moves.ROLLOUT ], - [ 13, Moves.HEADBUTT ], - [ 18, Moves.HYPER_FANG ], - [ 23, Moves.YAWN ], - [ 28, Moves.CRUNCH ], - [ 33, Moves.TAKE_DOWN ], - [ 38, Moves.SUPER_FANG ], - [ 43, Moves.SWORDS_DANCE ], - [ 48, Moves.AMNESIA ], - [ 53, Moves.SUPERPOWER ], - [ 58, Moves.CURSE ], - ], - [Species.KRICKETOT]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.BIDE ], - [ 6, Moves.STRUGGLE_BUG ], - [ 16, Moves.BUG_BITE ], - ], - [Species.KRICKETUNE]: [ - [ EVOLVE_MOVE, Moves.FURY_CUTTER ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.BIDE ], - [ 1, Moves.STRUGGLE_BUG ], // Previous Stage Move - [ 1, Moves.BUG_BITE ], // Previous Stage Move - [ 14, Moves.ABSORB ], - [ 18, Moves.SING ], - [ 22, Moves.FOCUS_ENERGY ], - [ 26, Moves.SLASH ], - [ 30, Moves.X_SCISSOR ], - [ 34, Moves.SCREECH ], - [ 36, Moves.FELL_STINGER ], - [ 38, Moves.TAUNT ], - [ 42, Moves.NIGHT_SLASH ], - [ 44, Moves.STICKY_WEB ], - [ 46, Moves.BUG_BUZZ ], - [ 50, Moves.PERISH_SONG ], - ], - [Species.SHINX]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 4, Moves.THUNDER_SHOCK ], - [ 8, Moves.CHARGE ], - [ 12, Moves.BITE ], - [ 16, Moves.SPARK ], - [ 20, Moves.ROAR ], - [ 24, Moves.VOLT_SWITCH ], - [ 28, Moves.SCARY_FACE ], - [ 32, Moves.THUNDER_WAVE ], - [ 36, Moves.CRUNCH ], - [ 40, Moves.DISCHARGE ], - [ 44, Moves.SWAGGER ], - [ 48, Moves.WILD_CHARGE ], - ], - [Species.LUXIO]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.CHARGE ], - [ 12, Moves.BITE ], - [ 18, Moves.SPARK ], - [ 24, Moves.ROAR ], - [ 31, Moves.VOLT_SWITCH ], - [ 36, Moves.SCARY_FACE ], - [ 42, Moves.THUNDER_WAVE ], - [ 48, Moves.CRUNCH ], - [ 54, Moves.DISCHARGE ], - [ 60, Moves.SWAGGER ], - [ 68, Moves.WILD_CHARGE ], - ], - [Species.LUXRAY]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.CHARGE ], - [ 1, Moves.ELECTRIC_TERRAIN ], - [ 12, Moves.BITE ], - [ 18, Moves.SPARK ], - [ 24, Moves.ROAR ], - [ 33, Moves.VOLT_SWITCH ], - [ 40, Moves.SCARY_FACE ], - [ 48, Moves.THUNDER_WAVE ], - [ 56, Moves.CRUNCH ], - [ 64, Moves.DISCHARGE ], - [ 72, Moves.SWAGGER ], - [ 80, Moves.WILD_CHARGE ], - ], - [Species.BUDEW]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.GROWTH ], - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.WORRY_SEED ], - ], - [Species.ROSERADE]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.ABSORB ], - [ 1, Moves.MEGA_DRAIN ], - [ 1, Moves.LEECH_SEED ], - [ 1, Moves.GROWTH ], - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.PETAL_DANCE ], - [ 1, Moves.TOXIC ], - [ 1, Moves.GIGA_DRAIN ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.SYNTHESIS ], - [ 1, Moves.INGRAIN ], - [ 1, Moves.AROMATHERAPY ], - [ 1, Moves.MAGICAL_LEAF ], - [ 1, Moves.WORRY_SEED ], - [ 1, Moves.TOXIC_SPIKES ], - [ 1, Moves.PETAL_BLIZZARD ], - [ 1, Moves.GRASSY_TERRAIN ], - [ 1, Moves.VENOM_DRENCH ], - ], - [Species.CRANIDOS]: [ - [ 1, Moves.HEADBUTT ], - [ 1, Moves.LEER ], - [ 6, Moves.FOCUS_ENERGY ], - [ 10, Moves.PURSUIT ], - [ 15, Moves.TAKE_DOWN ], - [ 19, Moves.SCARY_FACE ], - [ 24, Moves.ASSURANCE ], - [ 28, Moves.CHIP_AWAY ], - [ 33, Moves.ANCIENT_POWER ], - [ 37, Moves.ZEN_HEADBUTT ], - [ 42, Moves.SCREECH ], - [ 46, Moves.HEAD_SMASH ], - ], - [Species.RAMPARDOS]: [ - [ EVOLVE_MOVE, Moves.ENDEAVOR ], - [ 1, Moves.HEADBUTT ], - [ 1, Moves.LEER ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.PURSUIT ], - [ 15, Moves.TAKE_DOWN ], - [ 19, Moves.SCARY_FACE ], - [ 24, Moves.ASSURANCE ], - [ 28, Moves.CHIP_AWAY ], - [ 36, Moves.ANCIENT_POWER ], - [ 43, Moves.ZEN_HEADBUTT ], - [ 51, Moves.SCREECH ], - [ 58, Moves.HEAD_SMASH ], - ], - [Species.SHIELDON]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.PROTECT ], - [ 6, Moves.TAUNT ], - [ 10, Moves.METAL_SOUND ], - [ 15, Moves.TAKE_DOWN ], - [ 19, Moves.IRON_DEFENSE ], - [ 24, Moves.SWAGGER ], - [ 28, Moves.ANCIENT_POWER ], - [ 33, Moves.ENDURE ], - [ 37, Moves.METAL_BURST ], - [ 42, Moves.IRON_HEAD ], - [ 46, Moves.HEAVY_SLAM ], - ], - [Species.BASTIODON]: [ - [ EVOLVE_MOVE, Moves.BLOCK ], - [ RELEARN_MOVE, Moves.WIDE_GUARD ], - [ 1, Moves.TACKLE ], - [ 1, Moves.PROTECT ], - [ 1, Moves.TAUNT ], - [ 1, Moves.METAL_SOUND ], - [ 15, Moves.TAKE_DOWN ], - [ 19, Moves.IRON_DEFENSE ], - [ 24, Moves.SWAGGER ], - [ 28, Moves.ANCIENT_POWER ], - [ 36, Moves.ENDURE ], - [ 43, Moves.METAL_BURST ], - [ 51, Moves.IRON_HEAD ], - [ 58, Moves.HEAVY_SLAM ], - ], - [Species.BURMY]: [ - [ 1, Moves.PROTECT ], - [ 1, Moves.STRUGGLE_BUG ], // Custom - [ 10, Moves.TACKLE ], - [ 15, Moves.BUG_BITE ], - [ 20, Moves.STRING_SHOT ], - ], - [Species.WORMADAM]: [ - [ EVOLVE_MOVE, Moves.QUIVER_DANCE ], - [ 1, Moves.STRUGGLE_BUG ], // Previous Stage Move, Custom - [ 1, Moves.TACKLE ], - [ 1, Moves.PROTECT ], - [ 1, Moves.SUCKER_PUNCH ], - [ 1, Moves.BUG_BITE ], - [ 1, Moves.PROTECT ], - [ 10, Moves.TACKLE ], - [ 20, Moves.STRING_SHOT ], - [ 23, Moves.CONFUSION ], - [ 26, Moves.RAZOR_LEAF ], - [ 29, Moves.GROWTH ], - [ 32, Moves.PSYBEAM ], - [ 35, Moves.INFESTATION ], - [ 38, Moves.FLAIL ], - [ 41, Moves.ATTRACT ], - [ 44, Moves.PSYCHIC ], - [ 47, Moves.LEAF_STORM ], - [ 50, Moves.BUG_BUZZ ], - ], - [Species.MOTHIM]: [ - [ EVOLVE_MOVE, Moves.QUIVER_DANCE ], - [ 1, Moves.STRUGGLE_BUG ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.PROTECT ], - [ 1, Moves.BUG_BITE ], - [ 10, Moves.PROTECT ], - [ 15, Moves.BUG_BITE ], - [ 20, Moves.STRING_SHOT ], - [ 23, Moves.CONFUSION ], - [ 26, Moves.GUST ], - [ 29, Moves.POISON_POWDER ], - [ 32, Moves.PSYBEAM ], - [ 35, Moves.ROOST ], - [ 38, Moves.STRUGGLE_BUG ], - [ 41, Moves.AIR_SLASH ], - [ 44, Moves.PSYCHIC ], - [ 47, Moves.LUNGE ], - [ 50, Moves.BUG_BUZZ ], - ], - [Species.COMBEE]: [ - [ 1, Moves.GUST ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.BUG_BITE ], - [ 1, Moves.STRUGGLE_BUG ], - ], - [Species.VESPIQUEN]: [ - [ EVOLVE_MOVE, Moves.SLASH ], - [ 1, Moves.GUST ], - [ 1, Moves.POISON_STING ], - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.BUG_BITE ], - [ 1, Moves.STRUGGLE_BUG ], - [ 4, Moves.FURY_CUTTER ], - [ 8, Moves.AROMATIC_MIST ], - [ 12, Moves.FELL_STINGER ], - [ 16, Moves.FURY_SWIPES ], - [ 20, Moves.SWAGGER ], - [ 24, Moves.ROOST ], - [ 28, Moves.AIR_SLASH ], - [ 32, Moves.POWER_GEM ], - [ 36, Moves.TOXIC ], - [ 40, Moves.ATTACK_ORDER ], - [ 40, Moves.DEFEND_ORDER ], - [ 40, Moves.HEAL_ORDER ], - [ 44, Moves.DESTINY_BOND ], - ], - [Species.PACHIRISU]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.BIDE ], - [ 5, Moves.QUICK_ATTACK ], - [ 9, Moves.CHARM ], - [ 13, Moves.SPARK ], - [ 17, Moves.ENDURE ], - [ 19, Moves.NUZZLE ], - [ 21, Moves.SWIFT ], - [ 25, Moves.ELECTRO_BALL ], - [ 29, Moves.SWEET_KISS ], - [ 33, Moves.THUNDER_WAVE ], - [ 37, Moves.SUPER_FANG ], - [ 41, Moves.DISCHARGE ], - [ 45, Moves.LAST_RESORT ], - [ 49, Moves.THUNDER ], - ], - [Species.BUIZEL]: [ - [ 1, Moves.TACKLE ], - [ 4, Moves.GROWL ], - [ 7, Moves.SOAK ], - [ 11, Moves.QUICK_ATTACK ], - [ 15, Moves.WATER_GUN ], - [ 18, Moves.BITE ], - [ 21, Moves.SWIFT ], - [ 24, Moves.AQUA_JET ], - [ 27, Moves.DOUBLE_HIT ], - [ 31, Moves.WHIRLPOOL ], - [ 35, Moves.LIQUIDATION ], - [ 38, Moves.AQUA_TAIL ], - [ 41, Moves.AGILITY ], - [ 45, Moves.HYDRO_PUMP ], - [ 49, Moves.WAVE_CRASH ], - ], - [Species.FLOATZEL]: [ - [ 1, Moves.TACKLE ], // Previous Stage Move - [ 1, Moves.GROWL ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.CRUNCH ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.SOAK ], - [ 15, Moves.WATER_GUN ], - [ 18, Moves.BITE ], - [ 21, Moves.SWIFT ], - [ 24, Moves.AQUA_JET ], - [ 29, Moves.DOUBLE_HIT ], - [ 35, Moves.WHIRLPOOL ], - [ 41, Moves.LIQUIDATION ], - [ 46, Moves.AQUA_TAIL ], - [ 51, Moves.AGILITY ], - [ 57, Moves.HYDRO_PUMP ], - [ 62, Moves.WAVE_CRASH ], - ], - [Species.CHERUBI]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.MORNING_SUN ], - [ 5, Moves.LEAFAGE ], - [ 10, Moves.GROWTH ], - [ 15, Moves.HELPING_HAND ], - [ 20, Moves.MAGICAL_LEAF ], - [ 26, Moves.LEECH_SEED ], - [ 30, Moves.TAKE_DOWN ], - [ 35, Moves.PETAL_BLIZZARD ], - [ 40, Moves.WORRY_SEED ], - [ 45, Moves.SOLAR_BEAM ], - ], - [Species.CHERRIM]: [ - [ EVOLVE_MOVE, Moves.SUNNY_DAY ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWTH ], - [ 1, Moves.MORNING_SUN ], - [ 1, Moves.FLOWER_SHIELD ], - [ 1, Moves.LEAFAGE ], - [ 15, Moves.HELPING_HAND ], - [ 20, Moves.MAGICAL_LEAF ], - [ 28, Moves.LEECH_SEED ], - [ 34, Moves.TAKE_DOWN ], - [ 41, Moves.PETAL_BLIZZARD ], - [ 48, Moves.WORRY_SEED ], - [ 55, Moves.SOLAR_BEAM ], - [ 62, Moves.PETAL_DANCE ], - ], - [Species.SHELLOS]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.MUD_SLAP ], - [ 5, Moves.HARDEN ], - [ 10, Moves.RECOVER ], - [ 15, Moves.WATER_PULSE ], - [ 20, Moves.ANCIENT_POWER ], - [ 25, Moves.BODY_SLAM ], - [ 31, Moves.MUDDY_WATER ], - [ 35, Moves.EARTH_POWER ], - [ 40, Moves.RAIN_DANCE ], - [ 45, Moves.MEMENTO ], - ], - [Species.GASTRODON]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.RECOVER ], - [ 1, Moves.HARDEN ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.MUD_SPORT ], - [ 15, Moves.WATER_PULSE ], - [ 20, Moves.ANCIENT_POWER ], - [ 25, Moves.BODY_SLAM ], - [ 33, Moves.MUDDY_WATER ], - [ 39, Moves.EARTH_POWER ], - [ 46, Moves.RAIN_DANCE ], - [ 53, Moves.MEMENTO ], - ], - [Species.AMBIPOM]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.ASTONISH ], - [ 11, Moves.BATON_PASS ], - [ 15, Moves.TICKLE ], - [ 18, Moves.FURY_SWIPES ], - [ 22, Moves.SWIFT ], - [ 25, Moves.SCREECH ], - [ 29, Moves.AGILITY ], - [ 32, Moves.DOUBLE_HIT ], - [ 36, Moves.FLING ], - [ 39, Moves.NASTY_PLOT ], - [ 43, Moves.LAST_RESORT ], - ], - [Species.DRIFLOON]: [ - [ 1, Moves.MINIMIZE ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.CONSTRICT ], - [ 4, Moves.GUST ], - [ 8, Moves.FOCUS_ENERGY ], - [ 12, Moves.PAYBACK ], - [ 16, Moves.HEX ], - [ 20, Moves.SHADOW_BALL ], - [ 24, Moves.STOCKPILE ], - [ 24, Moves.SPIT_UP ], - [ 24, Moves.SWALLOW ], - [ 29, Moves.SELF_DESTRUCT ], - [ 32, Moves.DESTINY_BOND ], - [ 36, Moves.BATON_PASS ], - [ 40, Moves.TAILWIND ], - [ 44, Moves.EXPLOSION ], - ], - [Species.DRIFBLIM]: [ - [ EVOLVE_MOVE, Moves.PHANTOM_FORCE ], - [ 1, Moves.GUST ], - [ 1, Moves.MINIMIZE ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.CONSTRICT ], - [ 1, Moves.STRENGTH_SAP ], - [ 12, Moves.PAYBACK ], - [ 16, Moves.HEX ], - [ 20, Moves.SHADOW_BALL ], - [ 24, Moves.STOCKPILE ], - [ 24, Moves.SPIT_UP ], - [ 24, Moves.SWALLOW ], - [ 31, Moves.SELF_DESTRUCT ], - [ 36, Moves.DESTINY_BOND ], - [ 42, Moves.BATON_PASS ], - [ 48, Moves.TAILWIND ], - [ 54, Moves.EXPLOSION ], - ], - [Species.BUNEARY]: [ - [ 1, Moves.FRUSTRATION ], - [ 1, Moves.POUND ], - [ 1, Moves.SPLASH ], - [ 4, Moves.DEFENSE_CURL ], - [ 8, Moves.BABY_DOLL_EYES ], - [ 12, Moves.AFTER_YOU ], - [ 16, Moves.QUICK_ATTACK ], - [ 20, Moves.DOUBLE_KICK ], - [ 24, Moves.CHARM ], - [ 28, Moves.BATON_PASS ], - [ 32, Moves.HEADBUTT ], - [ 36, Moves.AGILITY ], - [ 40, Moves.ENTRAINMENT ], - [ 44, Moves.FLATTER ], - [ 48, Moves.BOUNCE ], - [ 52, Moves.HEALING_WISH ], - ], - [Species.LOPUNNY]: [ - [ EVOLVE_MOVE, Moves.RETURN ], - [ 1, Moves.FRUSTRATION ], // Previous Stage Move - [ 1, Moves.POUND ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.SPLASH ], - [ 1, Moves.MIRROR_COAT ], - [ 1, Moves.MAGIC_COAT ], - [ 1, Moves.BABY_DOLL_EYES ], - [ 1, Moves.ROTOTILLER ], - [ 12, Moves.AFTER_YOU ], - [ 16, Moves.QUICK_ATTACK ], - [ 20, Moves.DOUBLE_KICK ], - [ 24, Moves.CHARM ], - [ 28, Moves.BATON_PASS ], - [ 32, Moves.HEADBUTT ], - [ 36, Moves.AGILITY ], - [ 40, Moves.ENTRAINMENT ], - [ 44, Moves.FLATTER ], - [ 48, Moves.BOUNCE ], - [ 52, Moves.HEALING_WISH ], - [ 56, Moves.HIGH_JUMP_KICK ], - ], - [Species.MISMAGIUS]: [ + [SpeciesId.SMEARGLE]: [ + [ 1, MoveId.SKETCH ], + [ 11, MoveId.SKETCH ], + [ 21, MoveId.SKETCH ], + [ 31, MoveId.SKETCH ], + [ 41, MoveId.SKETCH ], + [ 51, MoveId.SKETCH ], + [ 61, MoveId.SKETCH ], + [ 71, MoveId.SKETCH ], + [ 81, MoveId.SKETCH ], + [ 91, MoveId.SKETCH ], + ], + [SpeciesId.TYROGUE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.HELPING_HAND ], + [ 10, MoveId.LOW_SWEEP ], // Custom + [ 10, MoveId.MACH_PUNCH ], // Custom + [ 10, MoveId.RAPID_SPIN ], // Custom + ], + [SpeciesId.HITMONTOP]: [ + [ EVOLVE_MOVE, MoveId.TRIPLE_KICK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.PURSUIT ], + [ 1, MoveId.ROLLING_KICK ], + [ 1, MoveId.LOW_SWEEP ], // Previous Stage Move, Custom + [ 1, MoveId.MACH_PUNCH ], // Previous Stage Move, Custom + [ 4, MoveId.QUICK_ATTACK ], + [ 8, MoveId.GYRO_BALL ], + [ 12, MoveId.DETECT ], + [ 16, MoveId.REVENGE ], + [ 21, MoveId.WIDE_GUARD ], + [ 21, MoveId.QUICK_GUARD ], + [ 24, MoveId.SUCKER_PUNCH ], + [ 28, MoveId.AGILITY ], + [ 32, MoveId.DIG ], + [ 36, MoveId.CLOSE_COMBAT ], + [ 40, MoveId.COUNTER ], + [ 44, MoveId.ENDEAVOR ], + ], + [SpeciesId.SMOOCHUM]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.LICK ], + [ 4, MoveId.POWDER_SNOW ], + [ 8, MoveId.COPYCAT ], + [ 12, MoveId.CONFUSION ], + [ 16, MoveId.COVET ], + [ 20, MoveId.SING ], + [ 24, MoveId.FAKE_TEARS ], + [ 28, MoveId.ICE_PUNCH ], + [ 32, MoveId.PSYCHIC ], + [ 36, MoveId.SWEET_KISS ], + [ 40, MoveId.MEAN_LOOK ], + [ 44, MoveId.PERISH_SONG ], + [ 48, MoveId.BLIZZARD ], + ], + [SpeciesId.ELEKID]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 4, MoveId.THUNDER_SHOCK ], + [ 8, MoveId.CHARGE ], + [ 12, MoveId.SWIFT ], + [ 16, MoveId.SHOCK_WAVE ], + [ 20, MoveId.THUNDER_WAVE ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.THUNDER_PUNCH ], + [ 32, MoveId.DISCHARGE ], + [ 36, MoveId.LOW_KICK ], + [ 40, MoveId.THUNDERBOLT ], + [ 44, MoveId.LIGHT_SCREEN ], + [ 48, MoveId.THUNDER ], + ], + [SpeciesId.MAGBY]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.SMOG ], + [ 4, MoveId.EMBER ], + [ 8, MoveId.SMOKESCREEN ], + [ 12, MoveId.CLEAR_SMOG ], + [ 16, MoveId.FLAME_WHEEL ], + [ 20, MoveId.CONFUSE_RAY ], + [ 24, MoveId.SCARY_FACE ], + [ 28, MoveId.FIRE_PUNCH ], + [ 32, MoveId.LAVA_PLUME ], + [ 36, MoveId.LOW_KICK ], + [ 40, MoveId.FLAMETHROWER ], + [ 44, MoveId.SUNNY_DAY ], + [ 48, MoveId.FIRE_BLAST ], + ], + [SpeciesId.MILTANK]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 5, MoveId.ROLLOUT ], + [ 10, MoveId.DEFENSE_CURL ], + [ 15, MoveId.STOMP ], + [ 20, MoveId.HEAL_BELL ], + [ 25, MoveId.HEADBUTT ], + [ 30, MoveId.ZEN_HEADBUTT ], + [ 35, MoveId.MILK_DRINK ], + [ 40, MoveId.BODY_SLAM ], + [ 45, MoveId.PLAY_ROUGH ], + [ 50, MoveId.CHARM ], + [ 55, MoveId.HIGH_HORSEPOWER ], + ], + [SpeciesId.BLISSEY]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.COVET ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.DISARMING_VOICE ], + [ 4, MoveId.TAIL_WHIP ], + [ 8, MoveId.ECHOED_VOICE ], + [ 12, MoveId.LIFE_DEW ], + [ 16, MoveId.SING ], + [ 20, MoveId.FLING ], + [ 24, MoveId.TAKE_DOWN ], + [ 28, MoveId.HEAL_PULSE ], + [ 32, MoveId.HELPING_HAND ], + [ 36, MoveId.LIGHT_SCREEN ], + [ 40, MoveId.DOUBLE_EDGE ], + [ 44, MoveId.SOFT_BOILED ], + [ 48, MoveId.LAST_RESORT ], + [ 52, MoveId.HEALING_WISH ], + ], + [SpeciesId.RAIKOU]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.EXTREME_SPEED ], + [ 1, MoveId.CHARGE ], + [ 6, MoveId.SPARK ], + [ 12, MoveId.BITE ], + [ 18, MoveId.CALM_MIND ], + [ 24, MoveId.ROAR ], + [ 30, MoveId.THUNDER_FANG ], + [ 36, MoveId.HOWL ], + [ 42, MoveId.CRUNCH ], + [ 48, MoveId.EXTRASENSORY ], + [ 54, MoveId.DISCHARGE ], + [ 60, MoveId.REFLECT ], + [ 66, MoveId.RAIN_DANCE ], + [ 72, MoveId.THUNDER ], + [ 78, MoveId.ZAP_CANNON ], + ], + [SpeciesId.ENTEI]: [ + [ RELEARN_MOVE, MoveId.SACRED_FIRE ], + [ RELEARN_MOVE, MoveId.EXTREME_SPEED ], + [ 1, MoveId.STOMP ], + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.SMOKESCREEN ], + [ 6, MoveId.FLAME_WHEEL ], + [ 12, MoveId.BITE ], + [ 18, MoveId.CALM_MIND ], + [ 24, MoveId.ROAR ], + [ 30, MoveId.FIRE_FANG ], + [ 36, MoveId.SCARY_FACE ], + [ 42, MoveId.CRUNCH ], + [ 48, MoveId.EXTRASENSORY ], + [ 54, MoveId.LAVA_PLUME ], + [ 60, MoveId.SWAGGER ], + [ 66, MoveId.SUNNY_DAY ], + [ 72, MoveId.FIRE_BLAST ], + [ 78, MoveId.ERUPTION ], + ], + [SpeciesId.SUICUNE]: [ + [ RELEARN_MOVE, MoveId.EXTREME_SPEED ], + [ RELEARN_MOVE, MoveId.SHEER_COLD ], + [ 1, MoveId.GUST ], + [ 1, MoveId.LEER ], + [ 1, MoveId.MIST ], + [ 1, MoveId.WATER_GUN ], + [ 6, MoveId.WATER_PULSE ], + [ 12, MoveId.BITE ], + [ 18, MoveId.CALM_MIND ], + [ 24, MoveId.ROAR ], + [ 30, MoveId.ICE_FANG ], + [ 36, MoveId.TAILWIND ], + [ 42, MoveId.CRUNCH ], + [ 48, MoveId.EXTRASENSORY ], + [ 54, MoveId.SURF ], + [ 60, MoveId.MIRROR_COAT ], + [ 66, MoveId.RAIN_DANCE ], + [ 72, MoveId.HYDRO_PUMP ], + [ 78, MoveId.BLIZZARD ], + ], + [SpeciesId.LARVITAR]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 3, MoveId.ROCK_THROW ], + [ 6, MoveId.PAYBACK ], + [ 9, MoveId.BITE ], + [ 12, MoveId.SCARY_FACE ], + [ 15, MoveId.ROCK_SLIDE ], + [ 18, MoveId.STOMPING_TANTRUM ], + [ 21, MoveId.SCREECH ], + [ 24, MoveId.SMACK_DOWN ], + [ 27, MoveId.CRUNCH ], + [ 31, MoveId.EARTHQUAKE ], + [ 33, MoveId.STONE_EDGE ], + [ 36, MoveId.THRASH ], + [ 39, MoveId.SANDSTORM ], + [ 42, MoveId.HYPER_BEAM ], + ], + [SpeciesId.PUPITAR]: [ + [ EVOLVE_MOVE, MoveId.IRON_DEFENSE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.PAYBACK ], + [ 9, MoveId.BITE ], + [ 12, MoveId.SCARY_FACE ], + [ 15, MoveId.ROCK_SLIDE ], + [ 18, MoveId.STOMPING_TANTRUM ], + [ 21, MoveId.SCREECH ], + [ 24, MoveId.SMACK_DOWN ], + [ 27, MoveId.CRUNCH ], + [ 33, MoveId.EARTHQUAKE ], + [ 37, MoveId.STONE_EDGE ], + [ 42, MoveId.THRASH ], + [ 47, MoveId.SANDSTORM ], + [ 52, MoveId.HYPER_BEAM ], + ], + [SpeciesId.TYRANITAR]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.IRON_DEFENSE ], + [ 1, MoveId.PAYBACK ], + [ 1, MoveId.DARK_PULSE ], + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.FIRE_FANG ], + [ 9, MoveId.BITE ], + [ 12, MoveId.SCARY_FACE ], + [ 15, MoveId.ROCK_SLIDE ], + [ 18, MoveId.STOMPING_TANTRUM ], + [ 21, MoveId.SCREECH ], + [ 24, MoveId.SMACK_DOWN ], + [ 27, MoveId.CRUNCH ], + [ 33, MoveId.EARTHQUAKE ], + [ 37, MoveId.STONE_EDGE ], + [ 42, MoveId.THRASH ], + [ 47, MoveId.SANDSTORM ], + [ 52, MoveId.HYPER_BEAM ], + [ 59, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.LUGIA]: [ + [ RELEARN_MOVE, MoveId.DRAGON_RUSH ], + [ 1, MoveId.GUST ], + [ 1, MoveId.WHIRLWIND ], + [ 1, MoveId.ANCIENT_POWER ], + [ 1, MoveId.WEATHER_BALL ], + [ 9, MoveId.MIST ], + [ 18, MoveId.SAFEGUARD ], + [ 27, MoveId.CALM_MIND ], + [ 36, MoveId.EXTRASENSORY ], + [ 45, MoveId.RECOVER ], + [ 54, MoveId.AEROBLAST ], + [ 63, MoveId.RAIN_DANCE ], + [ 72, MoveId.HYDRO_PUMP ], + [ 81, MoveId.FUTURE_SIGHT ], + [ 90, MoveId.SKY_ATTACK ], + ], + [SpeciesId.HO_OH]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.WHIRLWIND ], + [ 1, MoveId.ANCIENT_POWER ], + [ 1, MoveId.WEATHER_BALL ], + [ 9, MoveId.LIFE_DEW ], + [ 18, MoveId.SAFEGUARD ], + [ 27, MoveId.CALM_MIND ], + [ 36, MoveId.EXTRASENSORY ], + [ 45, MoveId.RECOVER ], + [ 54, MoveId.SACRED_FIRE ], + [ 63, MoveId.SUNNY_DAY ], + [ 72, MoveId.FIRE_BLAST ], + [ 81, MoveId.FUTURE_SIGHT ], + [ 90, MoveId.SKY_ATTACK ], + [ 99, MoveId.OVERHEAT ], + ], + [SpeciesId.CELEBI]: [ + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.HEAL_BELL ], + [ 10, MoveId.MAGICAL_LEAF ], + [ 20, MoveId.BATON_PASS ], + [ 30, MoveId.ANCIENT_POWER ], + [ 40, MoveId.LIFE_DEW ], + [ 50, MoveId.LEECH_SEED ], + [ 55, MoveId.HEAL_BLOCK ], + [ 60, MoveId.RECOVER ], + [ 70, MoveId.FUTURE_SIGHT ], + [ 80, MoveId.HEALING_WISH ], + [ 90, MoveId.LEAF_STORM ], + [ 100, MoveId.PERISH_SONG ], + ], + [SpeciesId.TREECKO]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.LEER ], + [ 3, MoveId.LEAFAGE ], + [ 6, MoveId.QUICK_ATTACK ], + [ 9, MoveId.MEGA_DRAIN ], + [ 12, MoveId.DETECT ], + [ 15, MoveId.QUICK_GUARD ], + [ 18, MoveId.ASSURANCE ], + [ 21, MoveId.GIGA_DRAIN ], + [ 24, MoveId.SLAM ], + [ 27, MoveId.DOUBLE_TEAM ], + [ 30, MoveId.ENERGY_BALL ], + [ 33, MoveId.SCREECH ], + [ 36, MoveId.ENDEAVOR ], + [ 39, MoveId.LEAF_STORM ], + ], + [SpeciesId.GROVYLE]: [ + [ RELEARN_MOVE, MoveId.FALSE_SWIPE ], + [ RELEARN_MOVE, MoveId.FURY_CUTTER ], + [ RELEARN_MOVE, MoveId.X_SCISSOR ], + [ RELEARN_MOVE, MoveId.ENERGY_BALL ], + [ 1, MoveId.POUND ], + [ 1, MoveId.LEER ], + [ 1, MoveId.LEAFAGE ], + [ 1, MoveId.QUICK_ATTACK ], + [ 9, MoveId.MEGA_DRAIN ], + [ 12, MoveId.DETECT ], + [ 15, MoveId.QUICK_GUARD ], + [ 20, MoveId.ASSURANCE ], + [ 25, MoveId.GIGA_DRAIN ], + [ 30, MoveId.SLAM ], + [ 35, MoveId.DOUBLE_TEAM ], + [ 40, MoveId.LEAF_BLADE ], + [ 45, MoveId.SCREECH ], + [ 50, MoveId.ENDEAVOR ], + [ 55, MoveId.LEAF_STORM ], + ], + [SpeciesId.SCEPTILE]: [ + [ EVOLVE_MOVE, MoveId.LEAF_BLADE ], + [ RELEARN_MOVE, MoveId.FALSE_SWIPE ], + [ RELEARN_MOVE, MoveId.FURY_CUTTER ], + [ RELEARN_MOVE, MoveId.X_SCISSOR ], + [ RELEARN_MOVE, MoveId.ENERGY_BALL ], + [ RELEARN_MOVE, MoveId.SHED_TAIL ], + [ 1, MoveId.POUND ], + [ 1, MoveId.LEER ], + [ 1, MoveId.LEAFAGE ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.DUAL_CHOP ], + [ 5, MoveId.MEGA_DRAIN ], + [ 12, MoveId.DETECT ], + [ 15, MoveId.QUICK_GUARD ], + [ 20, MoveId.ASSURANCE ], + [ 25, MoveId.GIGA_DRAIN ], + [ 30, MoveId.SLAM ], + [ 35, MoveId.DOUBLE_TEAM ], + [ 42, MoveId.SCREECH ], + [ 49, MoveId.ENDEAVOR ], + [ 56, MoveId.LEAF_STORM ], + ], + [SpeciesId.TORCHIC]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 3, MoveId.EMBER ], + [ 6, MoveId.QUICK_ATTACK ], + [ 9, MoveId.FLAME_CHARGE ], + [ 12, MoveId.DETECT ], + [ 15, MoveId.SAND_ATTACK ], + [ 18, MoveId.AERIAL_ACE ], + [ 21, MoveId.SLASH ], + [ 24, MoveId.BOUNCE ], + [ 27, MoveId.FOCUS_ENERGY ], + [ 30, MoveId.FLAMETHROWER ], + [ 33, MoveId.FEATHER_DANCE ], + [ 36, MoveId.REVERSAL ], + [ 39, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.COMBUSKEN]: [ + [ EVOLVE_MOVE, MoveId.DOUBLE_KICK ], + [ RELEARN_MOVE, MoveId.FLAMETHROWER ], + [ RELEARN_MOVE, MoveId.FEATHER_DANCE ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 9, MoveId.FLAME_CHARGE ], + [ 12, MoveId.DETECT ], + [ 15, MoveId.SAND_ATTACK ], + [ 20, MoveId.AERIAL_ACE ], + [ 25, MoveId.SLASH ], + [ 30, MoveId.BOUNCE ], + [ 35, MoveId.FOCUS_ENERGY ], + [ 40, MoveId.BLAZE_KICK ], + [ 45, MoveId.BULK_UP ], + [ 50, MoveId.REVERSAL ], + [ 55, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.BLAZIKEN]: [ + [ EVOLVE_MOVE, MoveId.BLAZE_KICK ], + [ RELEARN_MOVE, MoveId.FIRE_PUNCH ], + [ RELEARN_MOVE, MoveId.EMBER ], + [ RELEARN_MOVE, MoveId.FLAMETHROWER ], + [ RELEARN_MOVE, MoveId.FEATHER_DANCE ], + [ 1, MoveId.DOUBLE_KICK ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.QUICK_ATTACK ], + [ 9, MoveId.FLAME_CHARGE ], + [ 12, MoveId.DETECT ], + [ 15, MoveId.SAND_ATTACK ], + [ 20, MoveId.AERIAL_ACE ], + [ 25, MoveId.SLASH ], + [ 30, MoveId.BOUNCE ], + [ 35, MoveId.FOCUS_ENERGY ], + [ 42, MoveId.BULK_UP ], + [ 49, MoveId.REVERSAL ], + [ 56, MoveId.FLARE_BLITZ ], + [ 63, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.MUDKIP]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 3, MoveId.WATER_GUN ], + [ 6, MoveId.ROCK_SMASH ], + [ 9, MoveId.ROCK_THROW ], + [ 12, MoveId.PROTECT ], + [ 15, MoveId.SUPERSONIC ], + [ 18, MoveId.WATER_PULSE ], + [ 21, MoveId.ROCK_SLIDE ], + [ 24, MoveId.TAKE_DOWN ], + [ 27, MoveId.AMNESIA ], + [ 30, MoveId.SURF ], + [ 33, MoveId.SCREECH ], + [ 36, MoveId.ENDEAVOR ], + [ 39, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.MARSHTOMP]: [ + [ EVOLVE_MOVE, MoveId.MUD_SHOT ], + [ RELEARN_MOVE, MoveId.SURF ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.ROCK_SMASH ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 9, MoveId.ROCK_THROW ], + [ 12, MoveId.PROTECT ], + [ 15, MoveId.SUPERSONIC ], + [ 20, MoveId.WATER_PULSE ], + [ 25, MoveId.ROCK_SLIDE ], + [ 30, MoveId.TAKE_DOWN ], + [ 35, MoveId.AMNESIA ], + [ 40, MoveId.MUDDY_WATER ], + [ 45, MoveId.SCREECH ], + [ 50, MoveId.ENDEAVOR ], + [ 55, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.SWAMPERT]: [ + [ RELEARN_MOVE, MoveId.SURF ], + [ RELEARN_MOVE, MoveId.EARTHQUAKE ], + [ RELEARN_MOVE, MoveId.ROCK_SMASH ], + [ RELEARN_MOVE, MoveId.HAMMER_ARM ], + [ 1, MoveId.MUD_SHOT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 9, MoveId.ROCK_THROW ], + [ 12, MoveId.PROTECT ], + [ 15, MoveId.SUPERSONIC ], + [ 20, MoveId.WATER_PULSE ], + [ 25, MoveId.ROCK_SLIDE ], + [ 30, MoveId.TAKE_DOWN ], + [ 35, MoveId.AMNESIA ], + [ 42, MoveId.MUDDY_WATER ], + [ 49, MoveId.SCREECH ], + [ 56, MoveId.ENDEAVOR ], + [ 63, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.POOCHYENA]: [ + [ 1, MoveId.TACKLE ], + [ 4, MoveId.HOWL ], + [ 7, MoveId.SAND_ATTACK ], + [ 10, MoveId.BITE ], + [ 13, MoveId.LEER ], + [ 16, MoveId.ROAR ], + [ 19, MoveId.SWAGGER ], + [ 22, MoveId.ASSURANCE ], + [ 25, MoveId.SCARY_FACE ], + [ 28, MoveId.TAUNT ], + [ 31, MoveId.CRUNCH ], + [ 34, MoveId.YAWN ], + [ 36, MoveId.TAKE_DOWN ], + [ 40, MoveId.SUCKER_PUNCH ], + [ 44, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.MIGHTYENA]: [ + [ EVOLVE_MOVE, MoveId.SNARL ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.BITE ], + [ 1, MoveId.THIEF ], + [ 1, MoveId.CRUNCH ], + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.FIRE_FANG ], + [ 13, MoveId.LEER ], + [ 13, MoveId.HOWL ], + [ 16, MoveId.ROAR ], + [ 20, MoveId.SWAGGER ], + [ 24, MoveId.ASSURANCE ], + [ 28, MoveId.SCARY_FACE ], + [ 36, MoveId.TAUNT ], + [ 44, MoveId.YAWN ], + [ 48, MoveId.TAKE_DOWN ], + [ 52, MoveId.SUCKER_PUNCH ], + [ 56, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.ZIGZAGOON]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 3, MoveId.SAND_ATTACK ], + [ 6, MoveId.TAIL_WHIP ], + [ 9, MoveId.COVET ], + [ 12, MoveId.HEADBUTT ], + [ 15, MoveId.BABY_DOLL_EYES ], + [ 18, MoveId.PIN_MISSILE ], + [ 21, MoveId.REST ], + [ 24, MoveId.TAKE_DOWN ], + [ 27, MoveId.FLING ], + [ 30, MoveId.FLAIL ], + [ 33, MoveId.BELLY_DRUM ], + [ 36, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.LINOONE]: [ + [ EVOLVE_MOVE, MoveId.SLASH ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.PIN_MISSILE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.SWITCHEROO ], + [ 1, MoveId.BABY_DOLL_EYES ], + [ 1, MoveId.ROTOTILLER ], + [ 9, MoveId.COVET ], + [ 12, MoveId.HEADBUTT ], + [ 15, MoveId.HONE_CLAWS ], + [ 18, MoveId.FURY_SWIPES ], + [ 23, MoveId.REST ], + [ 28, MoveId.TAKE_DOWN ], + [ 33, MoveId.FLING ], + [ 38, MoveId.FLAIL ], + [ 43, MoveId.BELLY_DRUM ], + [ 48, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.WURMPLE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.STRING_SHOT ], + [ 5, MoveId.POISON_STING ], + [ 15, MoveId.BUG_BITE ], + ], + [SpeciesId.SILCOON]: [ + [ EVOLVE_MOVE, MoveId.HARDEN ], + [ RELEARN_MOVE, MoveId.TACKLE ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.STRING_SHOT ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.POISON_STING ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.BUG_BITE ], // Previous Stage Move + [ 1, MoveId.HARDEN ], + ], + [SpeciesId.BEAUTIFLY]: [ + [ EVOLVE_MOVE, MoveId.GUST ], + [ 1, MoveId.TACKLE ], // Previous Stage Move + [ 1, MoveId.BUG_BITE ], + [ 1, MoveId.GUST ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.STRING_SHOT ], + [ 1, MoveId.POISON_STING ], + [ 12, MoveId.ABSORB ], + [ 15, MoveId.STUN_SPORE ], + [ 17, MoveId.MORNING_SUN ], + [ 20, MoveId.AIR_CUTTER ], + [ 22, MoveId.MEGA_DRAIN ], + [ 25, MoveId.LEECH_LIFE ], + [ 27, MoveId.ATTRACT ], + [ 30, MoveId.WHIRLWIND ], + [ 32, MoveId.GIGA_DRAIN ], + [ 35, MoveId.BUG_BUZZ ], + [ 37, MoveId.PROTECT ], + [ 40, MoveId.QUIVER_DANCE ], + ], + [SpeciesId.CASCOON]: [ + [ EVOLVE_MOVE, MoveId.HARDEN ], + [ RELEARN_MOVE, MoveId.TACKLE ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.STRING_SHOT ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.POISON_STING ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.BUG_BITE ], // Previous Stage Move + [ 1, MoveId.HARDEN ], + ], + [SpeciesId.DUSTOX]: [ + [ EVOLVE_MOVE, MoveId.GUST ], + [ 1, MoveId.TACKLE ], // Previous Stage Move + [ 1, MoveId.BUG_BITE ], + [ 1, MoveId.GUST ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.STRING_SHOT ], + [ 1, MoveId.POISON_STING ], + [ 12, MoveId.CONFUSION ], + [ 15, MoveId.POISON_POWDER ], + [ 17, MoveId.MOONLIGHT ], + [ 20, MoveId.VENOSHOCK ], + [ 22, MoveId.PSYBEAM ], + [ 25, MoveId.LEECH_LIFE ], + [ 27, MoveId.LIGHT_SCREEN ], + [ 30, MoveId.WHIRLWIND ], + [ 32, MoveId.TOXIC ], + [ 35, MoveId.BUG_BUZZ ], + [ 37, MoveId.PROTECT ], + [ 40, MoveId.QUIVER_DANCE ], + ], + [SpeciesId.LOTAD]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.ASTONISH ], + [ 3, MoveId.ABSORB ], + [ 6, MoveId.WATER_GUN ], + [ 9, MoveId.MIST ], + [ 12, MoveId.MEGA_DRAIN ], + [ 16, MoveId.FLAIL ], + [ 20, MoveId.BUBBLE_BEAM ], + [ 24, MoveId.LEECH_SEED ], + [ 28, MoveId.GIGA_DRAIN ], + [ 33, MoveId.RAIN_DANCE ], + [ 38, MoveId.ZEN_HEADBUTT ], + [ 43, MoveId.ENERGY_BALL ], + ], + [SpeciesId.LOMBRE]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.RAIN_DANCE ], // Previous Stage Move + [ 1, MoveId.KNOCK_OFF ], + [ 1, MoveId.TEETER_DANCE ], + [ 1, MoveId.ASTONISH ], + [ 9, MoveId.MIST ], + [ 12, MoveId.MEGA_DRAIN ], + [ 18, MoveId.FURY_SWIPES ], + [ 24, MoveId.BUBBLE_BEAM ], + [ 30, MoveId.LEECH_SEED ], + [ 36, MoveId.GIGA_DRAIN ], + [ 50, MoveId.ZEN_HEADBUTT ], + [ 57, MoveId.ENERGY_BALL ], + [ 64, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.LUDICOLO]: [ + [ RELEARN_MOVE, MoveId.GROWL ], + [ RELEARN_MOVE, MoveId.MIST ], + [ RELEARN_MOVE, MoveId.WATER_GUN ], + [ RELEARN_MOVE, MoveId.HYDRO_PUMP ], + [ RELEARN_MOVE, MoveId.ABSORB ], + [ RELEARN_MOVE, MoveId.MEGA_DRAIN ], + [ RELEARN_MOVE, MoveId.FURY_SWIPES ], + [ RELEARN_MOVE, MoveId.FLAIL ], + [ RELEARN_MOVE, MoveId.KNOCK_OFF ], + [ RELEARN_MOVE, MoveId.TEETER_DANCE ], + [ RELEARN_MOVE, MoveId.ASTONISH ], + [ RELEARN_MOVE, MoveId.ENERGY_BALL ], + [ RELEARN_MOVE, MoveId.ZEN_HEADBUTT ], + [ RELEARN_MOVE, MoveId.LEECH_SEED ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.GIGA_DRAIN ], // Previous Stage Move + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.BUBBLE_BEAM ], + [ 1, MoveId.RAIN_DANCE ], + ], + [SpeciesId.SEEDOT]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.BIDE ], + [ 3, MoveId.ABSORB ], + [ 6, MoveId.ASTONISH ], + [ 9, MoveId.GROWTH ], + [ 12, MoveId.ROLLOUT ], + [ 15, MoveId.MEGA_DRAIN ], + [ 18, MoveId.PAYBACK ], + [ 21, MoveId.HEADBUTT ], + [ 24, MoveId.SUNNY_DAY ], + [ 27, MoveId.SYNTHESIS ], + [ 30, MoveId.SUCKER_PUNCH ], + [ 33, MoveId.EXPLOSION ], + ], + [SpeciesId.NUZLEAF]: [ + [ EVOLVE_MOVE, MoveId.RAZOR_LEAF ], + [ 1, MoveId.AIR_CUTTER ], + [ 1, MoveId.TORMENT ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.SWAGGER ], + [ 1, MoveId.EXPLOSION ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.BIDE ], // Previous Stage Move + [ 1, MoveId.ABSORB ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.HEADBUTT ], // Previous Stage Move + [ 9, MoveId.GROWTH ], + [ 12, MoveId.ROLLOUT ], + [ 18, MoveId.MEGA_DRAIN ], + [ 24, MoveId.PAYBACK ], + [ 30, MoveId.SYNTHESIS ], + [ 36, MoveId.SUNNY_DAY ], + [ 43, MoveId.EXTRASENSORY ], + [ 50, MoveId.SUCKER_PUNCH ], + [ 57, MoveId.LEAF_BLADE ], + ], + [SpeciesId.SHIFTRY]: [ + [ EVOLVE_MOVE, MoveId.LEAF_BLADE ], + [ RELEARN_MOVE, MoveId.WHIRLWIND ], + [ RELEARN_MOVE, MoveId.TACKLE ], + [ RELEARN_MOVE, MoveId.BIDE ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.ABSORB ], + [ RELEARN_MOVE, MoveId.MEGA_DRAIN ], + [ RELEARN_MOVE, MoveId.GROWTH ], + [ RELEARN_MOVE, MoveId.RAZOR_LEAF ], + [ RELEARN_MOVE, MoveId.HARDEN ], + [ RELEARN_MOVE, MoveId.HEADBUTT ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.EXPLOSION ], + [ RELEARN_MOVE, MoveId.ROLLOUT ], + [ RELEARN_MOVE, MoveId.SWAGGER ], + [ RELEARN_MOVE, MoveId.SYNTHESIS ], + [ RELEARN_MOVE, MoveId.BEAT_UP ], + [ RELEARN_MOVE, MoveId.FAKE_OUT ], + [ RELEARN_MOVE, MoveId.TORMENT ], + [ RELEARN_MOVE, MoveId.ASTONISH ], + [ RELEARN_MOVE, MoveId.EXTRASENSORY ], + [ RELEARN_MOVE, MoveId.SUCKER_PUNCH ], + [ 1, MoveId.AIR_CUTTER ], + [ 1, MoveId.HURRICANE ], + [ 1, MoveId.PAYBACK ], + [ 1, MoveId.SUNNY_DAY ], + ], + [SpeciesId.TAILLOW]: [ + [ 1, MoveId.PECK ], + [ 1, MoveId.GROWL ], + [ 5, MoveId.FOCUS_ENERGY ], + [ 9, MoveId.QUICK_ATTACK ], + [ 13, MoveId.WING_ATTACK ], + [ 17, MoveId.DOUBLE_TEAM ], + [ 21, MoveId.AERIAL_ACE ], + [ 25, MoveId.QUICK_GUARD ], + [ 29, MoveId.AGILITY ], + [ 33, MoveId.AIR_SLASH ], + [ 37, MoveId.ENDEAVOR ], + [ 41, MoveId.BRAVE_BIRD ], + [ 45, MoveId.REVERSAL ], + ], + [SpeciesId.SWELLOW]: [ + [ 1, MoveId.BRAVE_BIRD ], + [ 1, MoveId.AIR_SLASH ], + [ 1, MoveId.PLUCK ], + [ 1, MoveId.PECK ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.QUICK_ATTACK ], + [ 13, MoveId.WING_ATTACK ], + [ 17, MoveId.DOUBLE_TEAM ], + [ 21, MoveId.AERIAL_ACE ], + [ 27, MoveId.QUICK_GUARD ], + [ 33, MoveId.AGILITY ], + [ 45, MoveId.ENDEAVOR ], + [ 51, MoveId.BRAVE_BIRD ], + [ 57, MoveId.REVERSAL ], + ], + [SpeciesId.WINGULL]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 5, MoveId.QUICK_ATTACK ], + [ 10, MoveId.SUPERSONIC ], + [ 15, MoveId.WING_ATTACK ], + [ 20, MoveId.WATER_PULSE ], + [ 26, MoveId.AGILITY ], + [ 30, MoveId.AIR_SLASH ], + [ 35, MoveId.MIST ], + [ 40, MoveId.ROOST ], + [ 45, MoveId.HURRICANE ], + ], + [SpeciesId.PELIPPER]: [ + [ 1, MoveId.PROTECT ], + [ 1, MoveId.SOAK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.AGILITY ], + [ 1, MoveId.AIR_SLASH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.TAILWIND ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.WATER_SPORT ], + [ 15, MoveId.WING_ATTACK ], + [ 20, MoveId.WATER_PULSE ], + [ 28, MoveId.STOCKPILE ], + [ 28, MoveId.SPIT_UP ], + [ 28, MoveId.SWALLOW ], + [ 34, MoveId.FLING ], + [ 41, MoveId.MIST ], + [ 48, MoveId.ROOST ], + [ 55, MoveId.HURRICANE ], + [ 62, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.RALTS]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.DISARMING_VOICE ], + [ 3, MoveId.DOUBLE_TEAM ], + [ 6, MoveId.CONFUSION ], + [ 9, MoveId.HYPNOSIS ], + [ 12, MoveId.DRAINING_KISS ], + [ 15, MoveId.TELEPORT ], + [ 18, MoveId.PSYBEAM ], + [ 21, MoveId.LIFE_DEW ], + [ 24, MoveId.CHARM ], + [ 27, MoveId.CALM_MIND ], + [ 30, MoveId.PSYCHIC ], + [ 33, MoveId.HEAL_PULSE ], + [ 36, MoveId.DREAM_EATER ], + [ 39, MoveId.FUTURE_SIGHT ], + ], + [SpeciesId.KIRLIA]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.DISARMING_VOICE ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.CONFUSION ], + [ 9, MoveId.HYPNOSIS ], + [ 12, MoveId.DRAINING_KISS ], + [ 15, MoveId.TELEPORT ], + [ 18, MoveId.PSYBEAM ], + [ 23, MoveId.LIFE_DEW ], + [ 28, MoveId.CHARM ], + [ 33, MoveId.CALM_MIND ], + [ 38, MoveId.PSYCHIC ], + [ 43, MoveId.HEAL_PULSE ], + [ 48, MoveId.DREAM_EATER ], + [ 53, MoveId.FUTURE_SIGHT ], + ], + [SpeciesId.GARDEVOIR]: [ + [ EVOLVE_MOVE, MoveId.DAZZLING_GLEAM ], + [ 1, MoveId.MISTY_TERRAIN ], + [ 1, MoveId.HEALING_WISH ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.MYSTICAL_FIRE ], + [ 1, MoveId.HEAL_PULSE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.DISARMING_VOICE ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.CONFUSION ], + [ 9, MoveId.HYPNOSIS ], + [ 12, MoveId.DRAINING_KISS ], + [ 15, MoveId.TELEPORT ], + [ 18, MoveId.PSYBEAM ], + [ 23, MoveId.LIFE_DEW ], + [ 28, MoveId.WISH ], + [ 35, MoveId.CALM_MIND ], + [ 42, MoveId.PSYCHIC ], + [ 49, MoveId.MOONBLAST ], + [ 56, MoveId.DREAM_EATER ], + [ 63, MoveId.FUTURE_SIGHT ], + ], + [SpeciesId.SURSKIT]: [ + [ 1, MoveId.WATER_GUN ], + [ 6, MoveId.QUICK_ATTACK ], + [ 9, MoveId.SWEET_SCENT ], + [ 14, MoveId.SOAK ], + [ 17, MoveId.BUBBLE_BEAM ], + [ 22, MoveId.AGILITY ], + [ 25, MoveId.MIST ], + [ 25, MoveId.HAZE ], + [ 35, MoveId.BATON_PASS ], + [ 38, MoveId.STICKY_WEB ], + ], + [SpeciesId.MASQUERAIN]: [ + [ RELEARN_MOVE, MoveId.BATON_PASS ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.STICKY_WEB ], // Previous Stage Move + [ 1, MoveId.WHIRLWIND ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.SOAK ], + [ 1, MoveId.BUBBLE_BEAM ], // Previous Stage Move + [ 1, MoveId.AGILITY ], // Previous Stage Move + [ 1, MoveId.MIST ], // Previous Stage Move + [ 1, MoveId.HAZE ], // Previous Stage Move + [ 1, MoveId.OMINOUS_WIND ], + [ 17, MoveId.GUST ], + [ 22, MoveId.SCARY_FACE ], + [ 22, MoveId.AIR_CUTTER ], + [ 26, MoveId.STUN_SPORE ], + [ 32, MoveId.AIR_SLASH ], + [ 38, MoveId.GIGA_DRAIN ], + [ 44, MoveId.BUG_BUZZ ], + [ 52, MoveId.QUIVER_DANCE ], + ], + [SpeciesId.SHROOMISH]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.TACKLE ], + [ 5, MoveId.STUN_SPORE ], + [ 8, MoveId.LEECH_SEED ], + [ 12, MoveId.MEGA_DRAIN ], + [ 15, MoveId.HEADBUTT ], + [ 19, MoveId.POISON_POWDER ], + [ 26, MoveId.GIGA_DRAIN ], + [ 29, MoveId.GROWTH ], + [ 33, MoveId.TOXIC ], + [ 36, MoveId.SEED_BOMB ], + [ 40, MoveId.SPORE ], + ], + [SpeciesId.BRELOOM]: [ + [ EVOLVE_MOVE, MoveId.MACH_PUNCH ], + [ RELEARN_MOVE, MoveId.SPORE ], + [ 1, MoveId.POISON_POWDER ], + [ 1, MoveId.GIGA_DRAIN ], // Previous Stage Move + [ 1, MoveId.GROWTH ], + [ 1, MoveId.TOXIC ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.LEECH_SEED ], + [ 12, MoveId.MEGA_DRAIN ], + [ 15, MoveId.HEADBUTT ], + [ 19, MoveId.FEINT ], + [ 22, MoveId.COUNTER ], + [ 28, MoveId.FORCE_PALM ], + [ 33, MoveId.WORRY_SEED ], + [ 39, MoveId.BRICK_BREAK ], + [ 44, MoveId.SEED_BOMB ], + [ 50, MoveId.DYNAMIC_PUNCH ], + [ 55, MoveId.FOCUS_PUNCH ], + ], + [SpeciesId.SLAKOTH]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.YAWN ], + [ 6, MoveId.ENCORE ], + [ 9, MoveId.SLACK_OFF ], + [ 14, MoveId.HEADBUTT ], + [ 17, MoveId.AMNESIA ], + [ 22, MoveId.COVET ], + [ 25, MoveId.THROAT_CHOP ], + [ 30, MoveId.COUNTER ], + [ 33, MoveId.FLAIL ], + [ 38, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.VIGOROTH]: [ + [ RELEARN_MOVE, MoveId.PLAY_ROUGH ], // Previous Stage Move + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.YAWN ], // Previous Stage Move + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.SLACK_OFF ], // Previous Stage Move + [ 1, MoveId.ENCORE ], + [ 1, MoveId.HEADBUTT ], // Previous Stage Move + [ 1, MoveId.AMNESIA ], // Previous Stage Move + [ 1, MoveId.COVET ], // Previous Stage Move + [ 1, MoveId.FLAIL ], // Previous Stage Move + [ 1, MoveId.UPROAR ], + [ 14, MoveId.FURY_SWIPES ], + [ 17, MoveId.ENDURE ], + [ 23, MoveId.SLASH ], + [ 27, MoveId.THROAT_CHOP ], + [ 33, MoveId.COUNTER ], + [ 37, MoveId.FOCUS_PUNCH ], + [ 43, MoveId.REVERSAL ], + ], + [SpeciesId.SLAKING]: [ + [ EVOLVE_MOVE, MoveId.SWAGGER ], + [ RELEARN_MOVE, MoveId.PLAY_ROUGH ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.FOCUS_PUNCH ], // Previous Stage Move + [ 1, MoveId.SUCKER_PUNCH ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.YAWN ], + [ 1, MoveId.FOCUS_ENERGY ], // Previous Stage Move + [ 1, MoveId.ENCORE ], + [ 1, MoveId.SLACK_OFF ], + [ 1, MoveId.UPROAR ], // Previous Stage Move + [ 1, MoveId.FURY_SWIPES ], // Previous Stage Move + [ 1, MoveId.ENDURE ], // Previous Stage Move + [ 1, MoveId.HEADBUTT ], // Previous Stage Move + [ 1, MoveId.SLASH ], // Previous Stage Move + [ 1, MoveId.REVERSAL ], // Previous Stage Move + [ 17, MoveId.AMNESIA ], + [ 23, MoveId.COVET ], + [ 27, MoveId.THROAT_CHOP ], + [ 33, MoveId.COUNTER ], + [ 39, MoveId.FLAIL ], + [ 45, MoveId.FLING ], + [ 52, MoveId.MEGA_KICK ], + [ 63, MoveId.HAMMER_ARM ], + ], + [SpeciesId.NINCADA]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.SAND_ATTACK ], + [ 5, MoveId.HARDEN ], + [ 10, MoveId.FALSE_SWIPE ], + [ 15, MoveId.MUD_SLAP ], + [ 21, MoveId.ABSORB ], + [ 25, MoveId.METAL_CLAW ], + [ 30, MoveId.FURY_SWIPES ], + [ 35, MoveId.MIND_READER ], + [ 40, MoveId.DIG ], + ], + [SpeciesId.NINJASK]: [ + [ EVOLVE_MOVE, MoveId.DOUBLE_TEAM ], + [ EVOLVE_MOVE, MoveId.SCREECH ], + [ EVOLVE_MOVE, MoveId.FURY_CUTTER ], + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.AERIAL_ACE ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.DIG ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.FALSE_SWIPE ], + [ 15, MoveId.AGILITY ], + [ 23, MoveId.ABSORB ], + [ 29, MoveId.BUG_BITE ], + [ 36, MoveId.FURY_SWIPES ], + [ 43, MoveId.MIND_READER ], + [ 50, MoveId.SLASH ], + [ 57, MoveId.SWORDS_DANCE ], + [ 64, MoveId.X_SCISSOR ], + ], + [SpeciesId.SHEDINJA]: [ + [ 1, MoveId.SHADOW_CLAW ], + [ 1, MoveId.GRUDGE ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.DIG ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.FALSE_SWIPE ], + [ 15, MoveId.CONFUSE_RAY ], + [ 23, MoveId.ABSORB ], + [ 29, MoveId.SHADOW_SNEAK ], + [ 36, MoveId.FURY_SWIPES ], + [ 43, MoveId.MIND_READER ], + [ 50, MoveId.SHADOW_BALL ], + [ 57, MoveId.SPITE ], + [ 64, MoveId.PHANTOM_FORCE ], + ], + [SpeciesId.WHISMUR]: [ + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.POUND ], + [ 5, MoveId.ECHOED_VOICE ], + [ 10, MoveId.HOWL ], + [ 15, MoveId.REST ], + [ 15, MoveId.SLEEP_TALK ], + [ 21, MoveId.STOMP ], + [ 25, MoveId.ROAR ], + [ 30, MoveId.SUPERSONIC ], + [ 35, MoveId.UPROAR ], + [ 40, MoveId.SCREECH ], + [ 45, MoveId.HYPER_VOICE ], + ], + [SpeciesId.LOUDRED]: [ + [ EVOLVE_MOVE, MoveId.BITE ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.POUND ], + [ 1, MoveId.ECHOED_VOICE ], + [ 1, MoveId.HOWL ], + [ 15, MoveId.REST ], + [ 15, MoveId.SLEEP_TALK ], + [ 23, MoveId.STOMP ], + [ 29, MoveId.ROAR ], + [ 36, MoveId.SUPERSONIC ], + [ 43, MoveId.UPROAR ], + [ 50, MoveId.SCREECH ], + [ 57, MoveId.HYPER_VOICE ], + ], + [SpeciesId.EXPLOUD]: [ + [ EVOLVE_MOVE, MoveId.CRUNCH ], + [ 1, MoveId.BITE ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.FIRE_FANG ], + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.POUND ], + [ 1, MoveId.ECHOED_VOICE ], + [ 1, MoveId.HOWL ], + [ 15, MoveId.REST ], + [ 15, MoveId.SLEEP_TALK ], + [ 23, MoveId.STOMP ], + [ 29, MoveId.ROAR ], + [ 36, MoveId.SUPERSONIC ], + [ 45, MoveId.UPROAR ], + [ 54, MoveId.SCREECH ], + [ 63, MoveId.HYPER_VOICE ], + [ 72, MoveId.BOOMBURST ], + [ 81, MoveId.HYPER_BEAM ], + ], + [SpeciesId.MAKUHITA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 4, MoveId.SAND_ATTACK ], + [ 7, MoveId.ARM_THRUST ], + [ 10, MoveId.FAKE_OUT ], + [ 13, MoveId.FORCE_PALM ], + [ 16, MoveId.WHIRLWIND ], + [ 19, MoveId.KNOCK_OFF ], + [ 22, MoveId.BULK_UP ], + [ 25, MoveId.BELLY_DRUM ], + [ 28, MoveId.DETECT ], + [ 31, MoveId.SEISMIC_TOSS ], + [ 34, MoveId.FOCUS_PUNCH ], + [ 37, MoveId.ENDURE ], + [ 40, MoveId.CLOSE_COMBAT ], + [ 43, MoveId.REVERSAL ], + [ 46, MoveId.HEAVY_SLAM ], + ], + [SpeciesId.HARIYAMA]: [ + [ 1, MoveId.BRINE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.SAND_ATTACK ], // Previous Stage Move + [ 1, MoveId.ARM_THRUST ], + [ 10, MoveId.FAKE_OUT ], + [ 13, MoveId.FORCE_PALM ], + [ 16, MoveId.WHIRLWIND ], + [ 19, MoveId.KNOCK_OFF ], + [ 22, MoveId.BULK_UP ], + [ 26, MoveId.BELLY_DRUM ], + [ 30, MoveId.DETECT ], + [ 34, MoveId.SEISMIC_TOSS ], + [ 38, MoveId.FOCUS_PUNCH ], + [ 42, MoveId.ENDURE ], + [ 46, MoveId.CLOSE_COMBAT ], + [ 50, MoveId.REVERSAL ], + [ 54, MoveId.HEAVY_SLAM ], + [ 60, MoveId.HEADLONG_RUSH ], + ], + [SpeciesId.AZURILL]: [ + [ 1, MoveId.SPLASH ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.TAIL_WHIP ], + [ 3, MoveId.HELPING_HAND ], + [ 6, MoveId.BUBBLE_BEAM ], + [ 9, MoveId.CHARM ], + [ 12, MoveId.SLAM ], + [ 15, MoveId.BOUNCE ], + ], + [SpeciesId.NOSEPASS]: [ + [ 1, MoveId.TACKLE ], + [ 4, MoveId.HARDEN ], + [ 7, MoveId.BLOCK ], + [ 10, MoveId.ROCK_THROW ], + [ 13, MoveId.THUNDER_WAVE ], + [ 16, MoveId.REST ], + [ 19, MoveId.SPARK ], + [ 22, MoveId.ROCK_SLIDE ], + [ 25, MoveId.POWER_GEM ], + [ 28, MoveId.ROCK_BLAST ], + [ 31, MoveId.DISCHARGE ], + [ 34, MoveId.SANDSTORM ], + [ 37, MoveId.EARTH_POWER ], + [ 40, MoveId.STONE_EDGE ], + [ 43, MoveId.LOCK_ON ], + [ 43, MoveId.ZAP_CANNON ], + ], + [SpeciesId.SKITTY]: [ + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.TAIL_WHIP ], + [ 4, MoveId.TACKLE ], + [ 7, MoveId.SING ], + [ 10, MoveId.ATTRACT ], + [ 13, MoveId.DISARMING_VOICE ], + [ 16, MoveId.FURY_SWIPES ], + [ 19, MoveId.COPYCAT ], + [ 22, MoveId.PAYBACK ], + [ 25, MoveId.CHARM ], + [ 31, MoveId.FACADE ], + [ 34, MoveId.COVET ], + [ 37, MoveId.HEAL_BELL ], + [ 40, MoveId.DOUBLE_EDGE ], + [ 43, MoveId.BABY_DOLL_EYES ], + [ 46, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.DELCATTY]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SING ], + [ 1, MoveId.ATTRACT ], + [ 1, MoveId.DISARMING_VOICE ], + [ 1, MoveId.FURY_SWIPES ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.PAYBACK ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.FACADE ], + [ 1, MoveId.COVET ], + [ 1, MoveId.HEAL_BELL ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.BABY_DOLL_EYES ], + [ 1, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.SABLEYE]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.SCRATCH ], + [ 3, MoveId.ASTONISH ], + [ 9, MoveId.SHADOW_SNEAK ], + [ 12, MoveId.FAKE_OUT ], + [ 15, MoveId.DISABLE ], + [ 18, MoveId.DETECT ], + [ 21, MoveId.NIGHT_SHADE ], + [ 24, MoveId.FURY_SWIPES ], + [ 27, MoveId.KNOCK_OFF ], + [ 30, MoveId.QUASH ], + [ 33, MoveId.SHADOW_CLAW ], + [ 36, MoveId.MEAN_LOOK ], + [ 39, MoveId.POWER_GEM ], + [ 42, MoveId.ZEN_HEADBUTT ], + [ 45, MoveId.SHADOW_BALL ], + [ 48, MoveId.FOUL_PLAY ], + ], + [SpeciesId.MAWILE]: [ + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.GROWL ], + [ 4, MoveId.FAIRY_WIND ], + [ 8, MoveId.BATON_PASS ], + [ 12, MoveId.BITE ], + [ 16, MoveId.STOCKPILE ], + [ 16, MoveId.SPIT_UP ], + [ 16, MoveId.SWALLOW ], + [ 20, MoveId.SUCKER_PUNCH ], + [ 24, MoveId.IRON_DEFENSE ], + [ 28, MoveId.CRUNCH ], + [ 32, MoveId.SWEET_SCENT ], + [ 36, MoveId.IRON_HEAD ], + [ 40, MoveId.TAUNT ], + [ 44, MoveId.FAKE_TEARS ], + [ 48, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.ARON]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 4, MoveId.METAL_CLAW ], + [ 8, MoveId.ROCK_TOMB ], + [ 12, MoveId.ROAR ], + [ 16, MoveId.HEADBUTT ], + [ 20, MoveId.PROTECT ], + [ 24, MoveId.ROCK_SLIDE ], + [ 28, MoveId.IRON_HEAD ], + [ 33, MoveId.METAL_SOUND ], + [ 36, MoveId.TAKE_DOWN ], + [ 40, MoveId.AUTOTOMIZE ], + [ 44, MoveId.IRON_TAIL ], + [ 48, MoveId.IRON_DEFENSE ], + [ 52, MoveId.HEAVY_SLAM ], + [ 56, MoveId.DOUBLE_EDGE ], + [ 60, MoveId.METAL_BURST ], + ], + [SpeciesId.LAIRON]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.ROCK_TOMB ], + [ 12, MoveId.ROAR ], + [ 16, MoveId.HEADBUTT ], + [ 20, MoveId.PROTECT ], + [ 24, MoveId.ROCK_SLIDE ], + [ 28, MoveId.IRON_HEAD ], + [ 35, MoveId.METAL_SOUND ], + [ 40, MoveId.TAKE_DOWN ], + [ 46, MoveId.AUTOTOMIZE ], + [ 52, MoveId.IRON_TAIL ], + [ 58, MoveId.IRON_DEFENSE ], + [ 64, MoveId.HEAVY_SLAM ], + [ 70, MoveId.DOUBLE_EDGE ], + [ 76, MoveId.METAL_BURST ], + ], + [SpeciesId.AGGRON]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.ROCK_TOMB ], + [ 12, MoveId.ROAR ], + [ 16, MoveId.HEADBUTT ], + [ 20, MoveId.PROTECT ], + [ 24, MoveId.ROCK_SLIDE ], + [ 28, MoveId.IRON_HEAD ], + [ 35, MoveId.METAL_SOUND ], + [ 40, MoveId.TAKE_DOWN ], + [ 48, MoveId.AUTOTOMIZE ], + [ 56, MoveId.IRON_TAIL ], + [ 64, MoveId.IRON_DEFENSE ], + [ 72, MoveId.HEAVY_SLAM ], + [ 80, MoveId.DOUBLE_EDGE ], + [ 88, MoveId.METAL_BURST ], + ], + [SpeciesId.MEDITITE]: [ + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.WORK_UP ], + [ 1, MoveId.BIDE ], + [ 9, MoveId.DETECT ], + [ 12, MoveId.ENDURE ], + [ 15, MoveId.FEINT ], + [ 17, MoveId.FORCE_PALM ], + [ 20, MoveId.PSYBEAM ], + [ 23, MoveId.CALM_MIND ], + [ 25, MoveId.ZEN_HEADBUTT ], + [ 28, MoveId.HIGH_JUMP_KICK ], + [ 31, MoveId.PSYCH_UP ], + [ 33, MoveId.ACUPRESSURE ], + [ 36, MoveId.POWER_TRICK ], + [ 39, MoveId.REVERSAL ], + [ 41, MoveId.RECOVER ], + [ 44, MoveId.COUNTER ], + ], + [SpeciesId.MEDICHAM]: [ + [ 1, MoveId.FIRE_PUNCH ], + [ 1, MoveId.ICE_PUNCH ], + [ 1, MoveId.THUNDER_PUNCH ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.DETECT ], + [ 1, MoveId.WORK_UP ], + [ 1, MoveId.BIDE ], + [ 1, MoveId.REVERSAL ], // Previous Stage Move + [ 12, MoveId.ENDURE ], + [ 15, MoveId.FEINT ], + [ 17, MoveId.FORCE_PALM ], + [ 20, MoveId.PSYBEAM ], + [ 23, MoveId.CALM_MIND ], + [ 25, MoveId.ZEN_HEADBUTT ], + [ 28, MoveId.HIGH_JUMP_KICK ], + [ 31, MoveId.PSYCH_UP ], + [ 33, MoveId.ACUPRESSURE ], + [ 36, MoveId.POWER_TRICK ], + [ 47, MoveId.RECOVER ], + [ 53, MoveId.COUNTER ], + [ 53, MoveId.AXE_KICK ], + ], + [SpeciesId.ELECTRIKE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.THUNDER_WAVE ], + [ 4, MoveId.LEER ], + [ 8, MoveId.HOWL ], + [ 12, MoveId.QUICK_ATTACK ], + [ 16, MoveId.SHOCK_WAVE ], + [ 20, MoveId.BITE ], + [ 24, MoveId.THUNDER_FANG ], + [ 28, MoveId.ROAR ], + [ 32, MoveId.DISCHARGE ], + [ 36, MoveId.CHARGE ], + [ 40, MoveId.WILD_CHARGE ], + [ 44, MoveId.THUNDER ], + ], + [SpeciesId.MANECTRIC]: [ + [ 1, MoveId.FIRE_FANG ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.HOWL ], + [ 12, MoveId.QUICK_ATTACK ], + [ 16, MoveId.SHOCK_WAVE ], + [ 20, MoveId.BITE ], + [ 24, MoveId.THUNDER_FANG ], + [ 30, MoveId.ROAR ], + [ 36, MoveId.DISCHARGE ], + [ 42, MoveId.CHARGE ], + [ 48, MoveId.WILD_CHARGE ], + [ 54, MoveId.THUNDER ], + [ 60, MoveId.ELECTRIC_TERRAIN ], + ], + [SpeciesId.PLUSLE]: [ + [ RELEARN_MOVE, MoveId.NUZZLE ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.QUICK_ATTACK ], + [ 4, MoveId.HELPING_HAND ], + [ 7, MoveId.SPARK ], + [ 10, MoveId.ENCORE ], + [ 13, MoveId.SWITCHEROO ], + [ 16, MoveId.SWIFT ], + [ 19, MoveId.ELECTRO_BALL ], + [ 22, MoveId.COPYCAT ], + [ 26, MoveId.CHARGE ], + [ 31, MoveId.DISCHARGE ], + [ 34, MoveId.BATON_PASS ], + [ 37, MoveId.AGILITY ], + [ 40, MoveId.LAST_RESORT ], + [ 43, MoveId.THUNDER ], + [ 46, MoveId.NASTY_PLOT ], + [ 49, MoveId.ENTRAINMENT ], + ], + [SpeciesId.MINUN]: [ + [ RELEARN_MOVE, MoveId.NUZZLE ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.QUICK_ATTACK ], + [ 4, MoveId.HELPING_HAND ], + [ 7, MoveId.SPARK ], + [ 10, MoveId.ENCORE ], + [ 13, MoveId.SWITCHEROO ], + [ 16, MoveId.SWIFT ], + [ 19, MoveId.ELECTRO_BALL ], + [ 22, MoveId.COPYCAT ], + [ 26, MoveId.CHARGE ], + [ 31, MoveId.DISCHARGE ], + [ 34, MoveId.BATON_PASS ], + [ 37, MoveId.AGILITY ], + [ 40, MoveId.LAST_RESORT ], + [ 43, MoveId.THUNDER ], + [ 46, MoveId.NASTY_PLOT ], + [ 49, MoveId.ENTRAINMENT ], + ], + [SpeciesId.VOLBEAT]: [ + [ 1, MoveId.FLASH ], + [ 1, MoveId.TACKLE ], + [ 5, MoveId.DOUBLE_TEAM ], + [ 8, MoveId.CONFUSE_RAY ], + [ 12, MoveId.QUICK_ATTACK ], + [ 15, MoveId.STRUGGLE_BUG ], + [ 19, MoveId.MOONLIGHT ], + [ 22, MoveId.TAIL_GLOW ], + [ 26, MoveId.PROTECT ], + [ 29, MoveId.ZEN_HEADBUTT ], + [ 33, MoveId.HELPING_HAND ], + [ 36, MoveId.BUG_BUZZ ], + [ 40, MoveId.PLAY_ROUGH ], + [ 43, MoveId.DOUBLE_EDGE ], + [ 47, MoveId.INFESTATION ], + ], + [SpeciesId.ILLUMISE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.PLAY_NICE ], + [ 5, MoveId.SWEET_SCENT ], + [ 9, MoveId.CHARM ], + [ 12, MoveId.QUICK_ATTACK ], + [ 15, MoveId.STRUGGLE_BUG ], + [ 19, MoveId.MOONLIGHT ], + [ 22, MoveId.WISH ], + [ 26, MoveId.ENCORE ], + [ 29, MoveId.FLATTER ], + [ 33, MoveId.ZEN_HEADBUTT ], + [ 36, MoveId.HELPING_HAND ], + [ 40, MoveId.BUG_BUZZ ], + [ 43, MoveId.PLAY_ROUGH ], + [ 47, MoveId.INFESTATION ], + ], + [SpeciesId.ROSELIA]: [ + [ EVOLVE_MOVE, MoveId.POISON_STING ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.WORRY_SEED ], + [ 5, MoveId.MEGA_DRAIN ], + [ 10, MoveId.LEECH_SEED ], + [ 15, MoveId.MAGICAL_LEAF ], + [ 20, MoveId.TOXIC_SPIKES ], + [ 25, MoveId.SWEET_SCENT ], + [ 30, MoveId.GIGA_DRAIN ], + [ 35, MoveId.SYNTHESIS ], + [ 40, MoveId.TOXIC ], + [ 45, MoveId.PETAL_BLIZZARD ], + [ 50, MoveId.AROMATHERAPY ], + [ 55, MoveId.INGRAIN ], + [ 60, MoveId.PETAL_DANCE ], + ], + [SpeciesId.GULPIN]: [ + [ 1, MoveId.POUND ], + [ 5, MoveId.YAWN ], + [ 8, MoveId.POISON_GAS ], + [ 10, MoveId.SLUDGE ], + [ 12, MoveId.AMNESIA ], + [ 17, MoveId.ACID_SPRAY ], + [ 20, MoveId.ENCORE ], + [ 25, MoveId.TOXIC ], + [ 28, MoveId.STOCKPILE ], + [ 28, MoveId.SPIT_UP ], + [ 28, MoveId.SWALLOW ], + [ 33, MoveId.SLUDGE_BOMB ], + [ 36, MoveId.GASTRO_ACID ], + [ 41, MoveId.BELCH ], + [ 44, MoveId.PAIN_SPLIT ], + [ 49, MoveId.GUNK_SHOT ], + ], + [SpeciesId.SWALOT]: [ + [ EVOLVE_MOVE, MoveId.BODY_SLAM ], + [ 1, MoveId.GUNK_SHOT ], + [ 1, MoveId.POUND ], + [ 1, MoveId.YAWN ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.WRING_OUT ], + [ 1, MoveId.SLUDGE ], + [ 1, MoveId.PAIN_SPLIT ], // Previous Stage Move + [ 12, MoveId.AMNESIA ], + [ 17, MoveId.ACID_SPRAY ], + [ 20, MoveId.ENCORE ], + [ 25, MoveId.TOXIC ], + [ 30, MoveId.STOCKPILE ], + [ 30, MoveId.SPIT_UP ], + [ 30, MoveId.SWALLOW ], + [ 37, MoveId.SLUDGE_BOMB ], + [ 42, MoveId.GASTRO_ACID ], + [ 49, MoveId.BELCH ], + ], + [SpeciesId.CARVANHA]: [ + [ 1, MoveId.AQUA_JET ], + [ 1, MoveId.LEER ], + [ 4, MoveId.POISON_FANG ], + [ 8, MoveId.FOCUS_ENERGY ], + [ 12, MoveId.SCARY_FACE ], + [ 16, MoveId.BITE ], + [ 20, MoveId.ICE_FANG ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.SWAGGER ], + [ 32, MoveId.CRUNCH ], + [ 36, MoveId.AGILITY ], + [ 40, MoveId.LIQUIDATION ], + [ 44, MoveId.TAKE_DOWN ], + ], + [SpeciesId.SHARPEDO]: [ + [ EVOLVE_MOVE, MoveId.SLASH ], + [ 1, MoveId.NIGHT_SLASH ], + [ 1, MoveId.AQUA_JET ], + [ 1, MoveId.LEER ], + [ 1, MoveId.POISON_FANG ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 12, MoveId.SCARY_FACE ], + [ 16, MoveId.BITE ], + [ 20, MoveId.ICE_FANG ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.SWAGGER ], + [ 34, MoveId.CRUNCH ], + [ 40, MoveId.AGILITY ], + [ 46, MoveId.LIQUIDATION ], + [ 52, MoveId.TAKE_DOWN ], + ], + [SpeciesId.WAILMER]: [ + [ 1, MoveId.SPLASH ], + [ 1, MoveId.TACKLE ], // Custom + [ 3, MoveId.GROWL ], + [ 6, MoveId.ASTONISH ], + [ 12, MoveId.WATER_GUN ], + [ 15, MoveId.MIST ], + [ 18, MoveId.WATER_PULSE ], + [ 21, MoveId.HEAVY_SLAM ], + [ 24, MoveId.BRINE ], + [ 27, MoveId.WHIRLPOOL ], + [ 30, MoveId.DIVE ], + [ 33, MoveId.BOUNCE ], + [ 36, MoveId.BODY_SLAM ], + [ 39, MoveId.REST ], + [ 42, MoveId.AMNESIA ], + [ 45, MoveId.HYDRO_PUMP ], + [ 48, MoveId.WATER_SPOUT ], + ], + [SpeciesId.WAILORD]: [ + [ 1, MoveId.SOAK ], + [ 1, MoveId.NOBLE_ROAR ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.TACKLE ], // Previous Stage Move, Custom + [ 1, MoveId.GROWL ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.WATER_GUN ], + [ 15, MoveId.MIST ], + [ 18, MoveId.WATER_PULSE ], + [ 21, MoveId.HEAVY_SLAM ], + [ 24, MoveId.BRINE ], + [ 27, MoveId.WHIRLPOOL ], + [ 30, MoveId.DIVE ], + [ 33, MoveId.BOUNCE ], + [ 36, MoveId.BODY_SLAM ], + [ 39, MoveId.REST ], + [ 44, MoveId.AMNESIA ], + [ 49, MoveId.HYDRO_PUMP ], + [ 54, MoveId.WATER_SPOUT ], + ], + [SpeciesId.NUMEL]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.TACKLE ], + [ 5, MoveId.EMBER ], + [ 8, MoveId.FOCUS_ENERGY ], + [ 12, MoveId.BULLDOZE ], + [ 15, MoveId.INCINERATE ], + [ 19, MoveId.AMNESIA ], + [ 22, MoveId.LAVA_PLUME ], + [ 26, MoveId.EARTH_POWER ], + [ 29, MoveId.CURSE ], + [ 31, MoveId.TAKE_DOWN ], + [ 40, MoveId.EARTHQUAKE ], + [ 43, MoveId.FLAMETHROWER ], + [ 47, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.CAMERUPT]: [ + [ EVOLVE_MOVE, MoveId.ROCK_SLIDE ], + [ RELEARN_MOVE, MoveId.FLAMETHROWER ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.DOUBLE_EDGE ], // Previous Stage Move + [ 1, MoveId.FISSURE ], + [ 1, MoveId.ERUPTION ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 12, MoveId.BULLDOZE ], + [ 15, MoveId.INCINERATE ], + [ 19, MoveId.AMNESIA ], + [ 22, MoveId.LAVA_PLUME ], + [ 26, MoveId.EARTH_POWER ], + [ 29, MoveId.CURSE ], + [ 31, MoveId.TAKE_DOWN ], + [ 39, MoveId.YAWN ], + [ 46, MoveId.EARTHQUAKE ], + ], + [SpeciesId.TORKOAL]: [ + [ 1, MoveId.SMOG ], + [ 1, MoveId.EMBER ], + [ 4, MoveId.WITHDRAW ], + [ 8, MoveId.RAPID_SPIN ], + [ 12, MoveId.SMOKESCREEN ], + [ 16, MoveId.CLEAR_SMOG ], + [ 20, MoveId.FLAME_WHEEL ], + [ 24, MoveId.PROTECT ], + [ 28, MoveId.LAVA_PLUME ], + [ 32, MoveId.BODY_SLAM ], + [ 36, MoveId.IRON_DEFENSE ], + [ 40, MoveId.FLAMETHROWER ], + [ 44, MoveId.CURSE ], + [ 48, MoveId.HEAT_WAVE ], + [ 52, MoveId.AMNESIA ], + [ 56, MoveId.INFERNO ], + [ 60, MoveId.SHELL_SMASH ], + [ 64, MoveId.ERUPTION ], + ], + [SpeciesId.SPOINK]: [ + [ 1, MoveId.SPLASH ], + [ 5, MoveId.CONFUSION ], // Custom, Moved from Level 7 to 5 + [ 10, MoveId.GROWL ], + [ 14, MoveId.PSYBEAM ], + [ 18, MoveId.PSYCH_UP ], + [ 22, MoveId.CONFUSE_RAY ], + [ 29, MoveId.REST ], + [ 29, MoveId.POWER_GEM ], + [ 33, MoveId.SNORE ], + [ 38, MoveId.PSYSHOCK ], + [ 40, MoveId.PAYBACK ], + [ 44, MoveId.PSYCHIC ], + [ 50, MoveId.BOUNCE ], + ], + [SpeciesId.GRUMPIG]: [ + [ EVOLVE_MOVE, MoveId.TEETER_DANCE ], + [ 1, MoveId.BELCH ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.GROWL ], // Previous Stage Move + [ 1, MoveId.PSYBEAM ], + [ 18, MoveId.PSYCH_UP ], + [ 22, MoveId.CONFUSE_RAY ], + [ 26, MoveId.ZEN_HEADBUTT ], + [ 29, MoveId.POWER_GEM ], + [ 35, MoveId.REST ], + [ 35, MoveId.SNORE ], + [ 42, MoveId.PSYSHOCK ], + [ 46, MoveId.PAYBACK ], + [ 52, MoveId.PSYCHIC ], + [ 60, MoveId.BOUNCE ], + ], + [SpeciesId.SPINDA]: [ + [ 1, MoveId.TACKLE ], + [ 5, MoveId.COPYCAT ], + [ 10, MoveId.DIZZY_PUNCH ], + [ 14, MoveId.PSYBEAM ], + [ 19, MoveId.HYPNOSIS ], + [ 23, MoveId.BODY_SLAM ], + [ 28, MoveId.SUCKER_PUNCH ], + [ 32, MoveId.TEETER_DANCE ], + [ 37, MoveId.UPROAR ], + [ 41, MoveId.PSYCH_UP ], + [ 46, MoveId.DOUBLE_EDGE ], + [ 50, MoveId.FLAIL ], + [ 55, MoveId.THRASH ], + ], + [SpeciesId.TRAPINCH]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.BIDE ], + [ 1, MoveId.FEINT_ATTACK ], + [ 8, MoveId.BITE ], + [ 12, MoveId.MUD_SLAP ], + [ 16, MoveId.SAND_TOMB ], + [ 20, MoveId.BULLDOZE ], + [ 24, MoveId.DIG ], + [ 28, MoveId.CRUNCH ], + [ 32, MoveId.SANDSTORM ], + [ 36, MoveId.EARTH_POWER ], + [ 40, MoveId.EARTHQUAKE ], + [ 44, MoveId.SUPERPOWER ], + [ 48, MoveId.FISSURE ], + ], + [SpeciesId.VIBRAVA]: [ + [ EVOLVE_MOVE, MoveId.DRAGON_BREATH ], + [ RELEARN_MOVE, MoveId.SUPERSONIC ], + [ RELEARN_MOVE, MoveId.FISSURE ], + [ RELEARN_MOVE, MoveId.CRUNCH ], + [ RELEARN_MOVE, MoveId.SUPERPOWER ], + [ RELEARN_MOVE, MoveId.ASTONISH ], + [ RELEARN_MOVE, MoveId.BULLDOZE ], + [ 1, MoveId.DIG ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.BITE ], + [ 1, MoveId.BIDE ], + [ 1, MoveId.FEINT_ATTACK ], + [ 12, MoveId.MUD_SLAP ], + [ 16, MoveId.SAND_TOMB ], + [ 20, MoveId.DRAGON_TAIL ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.BUG_BUZZ ], + [ 32, MoveId.SANDSTORM ], + [ 38, MoveId.EARTH_POWER ], + [ 44, MoveId.EARTHQUAKE ], + [ 50, MoveId.UPROAR ], + [ 56, MoveId.DRAGON_RUSH ], + [ 62, MoveId.BOOMBURST ], + ], + [SpeciesId.FLYGON]: [ + [ EVOLVE_MOVE, MoveId.DRAGON_CLAW ], + [ RELEARN_MOVE, MoveId.BITE ], + [ RELEARN_MOVE, MoveId.FISSURE ], + [ RELEARN_MOVE, MoveId.DIG ], + [ RELEARN_MOVE, MoveId.CRUNCH ], + [ RELEARN_MOVE, MoveId.SUPERPOWER ], + [ RELEARN_MOVE, MoveId.ASTONISH ], + [ RELEARN_MOVE, MoveId.DRAGON_DANCE ], + [ RELEARN_MOVE, MoveId.FEINT ], + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.BULLDOZE ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.BIDE ], + [ 1, MoveId.FEINT_ATTACK ], + [ 12, MoveId.MUD_SLAP ], + [ 16, MoveId.SAND_TOMB ], + [ 20, MoveId.DRAGON_TAIL ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.BUG_BUZZ ], + [ 32, MoveId.SANDSTORM ], + [ 38, MoveId.EARTH_POWER ], + [ 44, MoveId.EARTHQUAKE ], + [ 52, MoveId.UPROAR ], + [ 60, MoveId.DRAGON_RUSH ], + [ 68, MoveId.BOOMBURST ], + ], + [SpeciesId.CACNEA]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.LEER ], + [ 4, MoveId.ABSORB ], + [ 7, MoveId.GROWTH ], + [ 10, MoveId.LEECH_SEED ], + [ 13, MoveId.SAND_ATTACK ], + [ 16, MoveId.BULLET_SEED ], + [ 19, MoveId.POWER_TRIP ], + [ 22, MoveId.INGRAIN ], + [ 26, MoveId.PAYBACK ], + [ 30, MoveId.SPIKES ], + [ 34, MoveId.SUCKER_PUNCH ], + [ 38, MoveId.PIN_MISSILE ], + [ 42, MoveId.ENERGY_BALL ], + [ 46, MoveId.COTTON_SPORE ], + [ 50, MoveId.SANDSTORM ], + [ 54, MoveId.DESTINY_BOND ], + ], + [SpeciesId.CACTURNE]: [ + [ EVOLVE_MOVE, MoveId.SPIKY_SHIELD ], + [ 1, MoveId.DESTINY_BOND ], + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.LEER ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.GROWTH ], + [ 10, MoveId.LEECH_SEED ], + [ 13, MoveId.SAND_ATTACK ], + [ 16, MoveId.BULLET_SEED ], + [ 19, MoveId.POWER_TRIP ], + [ 22, MoveId.INGRAIN ], + [ 26, MoveId.PAYBACK ], + [ 30, MoveId.SPIKES ], + [ 35, MoveId.SUCKER_PUNCH ], + [ 38, MoveId.PIN_MISSILE ], + [ 44, MoveId.ENERGY_BALL ], + [ 49, MoveId.COTTON_SPORE ], + [ 54, MoveId.SANDSTORM ], + ], + [SpeciesId.SWABLU]: [ + [ 1, MoveId.PECK ], + [ 1, MoveId.GROWL ], + [ 4, MoveId.DISARMING_VOICE ], + [ 8, MoveId.MIST ], + [ 12, MoveId.FURY_ATTACK ], + [ 16, MoveId.ROUND ], + [ 20, MoveId.DRAGON_BREATH ], + [ 24, MoveId.SAFEGUARD ], + [ 28, MoveId.SING ], + [ 32, MoveId.COTTON_GUARD ], + [ 36, MoveId.TAKE_DOWN ], + [ 40, MoveId.MOONBLAST ], + [ 44, MoveId.PERISH_SONG ], + ], + [SpeciesId.ALTARIA]: [ + [ EVOLVE_MOVE, MoveId.DRAGON_PULSE ], + [ 1, MoveId.PLUCK ], + [ 1, MoveId.PECK ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.DISARMING_VOICE ], + [ 1, MoveId.MIST ], + [ 12, MoveId.FURY_ATTACK ], + [ 16, MoveId.ROUND ], + [ 20, MoveId.DRAGON_BREATH ], + [ 24, MoveId.SAFEGUARD ], + [ 28, MoveId.SING ], + [ 32, MoveId.COTTON_GUARD ], + [ 38, MoveId.TAKE_DOWN ], + [ 44, MoveId.MOONBLAST ], + [ 50, MoveId.PERISH_SONG ], + [ 56, MoveId.SKY_ATTACK ], + ], + [SpeciesId.ZANGOOSE]: [ + [ RELEARN_MOVE, MoveId.DOUBLE_KICK ], + [ RELEARN_MOVE, MoveId.DISABLE ], + [ RELEARN_MOVE, MoveId.COUNTER ], + [ RELEARN_MOVE, MoveId.FURY_SWIPES ], + [ RELEARN_MOVE, MoveId.CURSE ], + [ RELEARN_MOVE, MoveId.FLAIL ], + [ RELEARN_MOVE, MoveId.BELLY_DRUM ], + [ RELEARN_MOVE, MoveId.FEINT ], + [ RELEARN_MOVE, MoveId.NIGHT_SLASH ], + [ RELEARN_MOVE, MoveId.DOUBLE_HIT ], + [ RELEARN_MOVE, MoveId.QUICK_GUARD ], + [ RELEARN_MOVE, MoveId.FINAL_GAMBIT ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 5, MoveId.QUICK_ATTACK ], + [ 8, MoveId.FURY_CUTTER ], + [ 12, MoveId.METAL_CLAW ], + [ 15, MoveId.HONE_CLAWS ], + [ 19, MoveId.SLASH ], + [ 22, MoveId.POWER_TRIP ], + [ 26, MoveId.CRUSH_CLAW ], + [ 29, MoveId.FALSE_SWIPE ], + [ 33, MoveId.SWITCHEROO ], + [ 36, MoveId.DETECT ], + [ 40, MoveId.X_SCISSOR ], + [ 43, MoveId.TAUNT ], + [ 47, MoveId.SWORDS_DANCE ], + [ 50, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.SEVIPER]: [ + [ 1, MoveId.WRAP ], + [ 1, MoveId.SWAGGER ], + [ 4, MoveId.BITE ], + [ 6, MoveId.LICK ], + [ 9, MoveId.POISON_TAIL ], + [ 11, MoveId.FEINT ], + [ 14, MoveId.SCREECH ], + [ 19, MoveId.GLARE ], + [ 21, MoveId.POISON_FANG ], + [ 24, MoveId.VENOSHOCK ], + [ 29, MoveId.GASTRO_ACID ], + [ 31, MoveId.POISON_JAB ], + [ 34, MoveId.HAZE ], + [ 39, MoveId.CRUNCH ], + [ 41, MoveId.BELCH ], + [ 44, MoveId.COIL ], + [ 46, MoveId.SLUDGE_BOMB ], + ], + [SpeciesId.LUNATONE]: [ + [ 1, MoveId.MOONBLAST ], + [ 1, MoveId.MOONLIGHT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.ROCK_THROW ], + [ 5, MoveId.HYPNOSIS ], + [ 10, MoveId.ROCK_POLISH ], + [ 15, MoveId.ROCK_SLIDE ], + [ 20, MoveId.PSYSHOCK ], + [ 25, MoveId.COSMIC_POWER ], + [ 30, MoveId.PSYCHIC ], + [ 35, MoveId.STONE_EDGE ], + [ 40, MoveId.FUTURE_SIGHT ], + [ 45, MoveId.MAGIC_ROOM ], + [ 50, MoveId.EXPLOSION ], + ], + [SpeciesId.SOLROCK]: [ + [ 1, MoveId.FLARE_BLITZ ], + [ 1, MoveId.MORNING_SUN ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.ROCK_THROW ], + [ 5, MoveId.HYPNOSIS ], + [ 10, MoveId.ROCK_POLISH ], + [ 15, MoveId.ROCK_SLIDE ], + [ 20, MoveId.ZEN_HEADBUTT ], + [ 25, MoveId.COSMIC_POWER ], + [ 30, MoveId.PSYCHIC ], + [ 35, MoveId.STONE_EDGE ], + [ 40, MoveId.SOLAR_BEAM ], + [ 45, MoveId.WONDER_ROOM ], + [ 50, MoveId.EXPLOSION ], + ], + [SpeciesId.BARBOACH]: [ + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.WATER_GUN ], + [ 6, MoveId.REST ], + [ 6, MoveId.SNORE ], + [ 12, MoveId.WATER_PULSE ], + [ 18, MoveId.AMNESIA ], + [ 24, MoveId.AQUA_TAIL ], + [ 31, MoveId.MUDDY_WATER ], + [ 36, MoveId.EARTHQUAKE ], + [ 42, MoveId.FUTURE_SIGHT ], + [ 48, MoveId.FISSURE ], + ], + [SpeciesId.WHISCASH]: [ + [ EVOLVE_MOVE, MoveId.THRASH ], + [ 1, MoveId.BELCH ], + [ 1, MoveId.ZEN_HEADBUTT ], + [ 1, MoveId.TICKLE ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.REST ], + [ 1, MoveId.SNORE ], + [ 12, MoveId.WATER_PULSE ], + [ 18, MoveId.AMNESIA ], + [ 24, MoveId.AQUA_TAIL ], + [ 33, MoveId.MUDDY_WATER ], + [ 40, MoveId.EARTHQUAKE ], + [ 48, MoveId.FUTURE_SIGHT ], + [ 56, MoveId.FISSURE ], + ], + [SpeciesId.CORPHISH]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.HARDEN ], + [ 4, MoveId.LEER ], + [ 8, MoveId.TAUNT ], + [ 12, MoveId.BUBBLE_BEAM ], + [ 16, MoveId.KNOCK_OFF ], + [ 20, MoveId.DOUBLE_HIT ], + [ 24, MoveId.PROTECT ], + [ 28, MoveId.NIGHT_SLASH ], + [ 32, MoveId.RAZOR_SHELL ], + [ 36, MoveId.SWORDS_DANCE ], + [ 40, MoveId.CRUNCH ], + [ 44, MoveId.CRABHAMMER ], + [ 48, MoveId.ENDEAVOR ], + [ 52, MoveId.GUILLOTINE ], + ], + [SpeciesId.CRAWDAUNT]: [ + [ EVOLVE_MOVE, MoveId.SWIFT ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.LEER ], + [ 1, MoveId.TAUNT ], + [ 12, MoveId.BUBBLE_BEAM ], + [ 16, MoveId.KNOCK_OFF ], + [ 20, MoveId.DOUBLE_HIT ], + [ 24, MoveId.PROTECT ], + [ 28, MoveId.NIGHT_SLASH ], + [ 34, MoveId.RAZOR_SHELL ], + [ 40, MoveId.SWORDS_DANCE ], + [ 46, MoveId.CRUNCH ], + [ 52, MoveId.CRABHAMMER ], + [ 58, MoveId.ENDEAVOR ], + [ 64, MoveId.GUILLOTINE ], + ], + [SpeciesId.BALTOY]: [ + [ 1, MoveId.HARDEN ], + [ 1, MoveId.MUD_SLAP ], + [ 3, MoveId.RAPID_SPIN ], + [ 6, MoveId.CONFUSION ], + [ 9, MoveId.ROCK_TOMB ], + [ 12, MoveId.POWER_TRICK ], + [ 15, MoveId.PSYBEAM ], + [ 18, MoveId.ANCIENT_POWER ], + [ 21, MoveId.IMPRISON ], + [ 24, MoveId.COSMIC_POWER ], + [ 27, MoveId.EXTRASENSORY ], + [ 30, MoveId.EARTH_POWER ], + [ 33, MoveId.SELF_DESTRUCT ], + [ 36, MoveId.GUARD_SPLIT ], + [ 36, MoveId.POWER_SPLIT ], + [ 39, MoveId.SANDSTORM ], + [ 42, MoveId.EXPLOSION ], + ], + [SpeciesId.CLAYDOL]: [ + [ EVOLVE_MOVE, MoveId.HYPER_BEAM ], + [ 1, MoveId.TELEPORT ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.CONFUSION ], + [ 9, MoveId.ROCK_TOMB ], + [ 12, MoveId.POWER_TRICK ], + [ 15, MoveId.PSYBEAM ], + [ 18, MoveId.ANCIENT_POWER ], + [ 21, MoveId.IMPRISON ], + [ 24, MoveId.COSMIC_POWER ], + [ 27, MoveId.EXTRASENSORY ], + [ 30, MoveId.EARTH_POWER ], + [ 33, MoveId.SELF_DESTRUCT ], + [ 38, MoveId.GUARD_SPLIT ], + [ 38, MoveId.POWER_SPLIT ], + [ 43, MoveId.SANDSTORM ], + [ 48, MoveId.EXPLOSION ], + ], + [SpeciesId.LILEEP]: [ + [ 1, MoveId.WRAP ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.CONSTRICT ], + [ 4, MoveId.ACID ], + [ 8, MoveId.CONFUSE_RAY ], + [ 12, MoveId.INGRAIN ], + [ 16, MoveId.ANCIENT_POWER ], + [ 20, MoveId.MEGA_DRAIN ], + [ 24, MoveId.BRINE ], + [ 28, MoveId.AMNESIA ], + [ 32, MoveId.GASTRO_ACID ], + [ 36, MoveId.GIGA_DRAIN ], + [ 41, MoveId.STOCKPILE ], + [ 41, MoveId.SPIT_UP ], + [ 41, MoveId.SWALLOW ], + [ 44, MoveId.ENERGY_BALL ], + ], + [SpeciesId.CRADILY]: [ + [ 1, MoveId.LEECH_SEED ], + [ 1, MoveId.WRAP ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.CONSTRICT ], + [ 1, MoveId.ACID ], + [ 1, MoveId.CONFUSE_RAY ], + [ 12, MoveId.INGRAIN ], + [ 16, MoveId.ANCIENT_POWER ], + [ 20, MoveId.MEGA_DRAIN ], + [ 24, MoveId.BRINE ], + [ 28, MoveId.AMNESIA ], + [ 32, MoveId.GASTRO_ACID ], + [ 36, MoveId.GIGA_DRAIN ], + [ 43, MoveId.STOCKPILE ], + [ 43, MoveId.SPIT_UP ], + [ 43, MoveId.SWALLOW ], + [ 48, MoveId.ENERGY_BALL ], + ], + [SpeciesId.ANORITH]: [ + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.HARDEN ], + [ 4, MoveId.WATER_GUN ], + [ 8, MoveId.SMACK_DOWN ], + [ 12, MoveId.METAL_CLAW ], + [ 16, MoveId.ANCIENT_POWER ], + [ 20, MoveId.BUG_BITE ], + [ 24, MoveId.BRINE ], + [ 28, MoveId.SLASH ], + [ 32, MoveId.CRUSH_CLAW ], + [ 36, MoveId.ROCK_BLAST ], + [ 41, MoveId.PROTECT ], + [ 44, MoveId.X_SCISSOR ], + ], + [SpeciesId.ARMALDO]: [ + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.SMACK_DOWN ], + [ 12, MoveId.METAL_CLAW ], + [ 16, MoveId.ANCIENT_POWER ], + [ 20, MoveId.BUG_BITE ], + [ 24, MoveId.BRINE ], + [ 28, MoveId.SLASH ], + [ 32, MoveId.CRUSH_CLAW ], + [ 36, MoveId.ROCK_BLAST ], + [ 43, MoveId.PROTECT ], + [ 48, MoveId.X_SCISSOR ], + ], + [SpeciesId.FEEBAS]: [ + [ 1, MoveId.SPLASH ], + [ 15, MoveId.TACKLE ], + [ 25, MoveId.FLAIL ], + ], + [SpeciesId.MILOTIC]: [ + [ EVOLVE_MOVE, MoveId.WATER_PULSE ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WRAP ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.WATER_SPORT ], + [ 4, MoveId.DISARMING_VOICE ], + [ 8, MoveId.TWISTER ], + [ 12, MoveId.AQUA_RING ], + [ 16, MoveId.ATTRACT ], + [ 20, MoveId.LIFE_DEW ], + [ 24, MoveId.DRAGON_TAIL ], + [ 28, MoveId.RECOVER ], + [ 32, MoveId.AQUA_TAIL ], + [ 36, MoveId.SAFEGUARD ], + [ 40, MoveId.SURF ], + [ 44, MoveId.RAIN_DANCE ], + [ 48, MoveId.COIL ], + [ 52, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.CASTFORM]: [ + [ 1, MoveId.TACKLE ], + [ 10, MoveId.WATER_GUN ], + [ 10, MoveId.EMBER ], + [ 10, MoveId.POWDER_SNOW ], + [ 15, MoveId.HEADBUTT ], + [ 20, MoveId.RAIN_DANCE ], + [ 20, MoveId.SUNNY_DAY ], + [ 20, MoveId.HAIL ], + [ 25, MoveId.WEATHER_BALL ], + [ 35, MoveId.HYDRO_PUMP ], + [ 35, MoveId.FIRE_BLAST ], + [ 35, MoveId.BLIZZARD ], + [ 45, MoveId.HURRICANE ], + ], + [SpeciesId.KECLEON]: [ + [ 1, MoveId.THIEF ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.LICK ], + [ 1, MoveId.SCRATCH ], + [ 4, MoveId.BIND ], + [ 7, MoveId.SHADOW_SNEAK ], + [ 10, MoveId.FEINT ], + [ 13, MoveId.FURY_SWIPES ], + [ 16, MoveId.DISABLE ], + [ 18, MoveId.PSYBEAM ], + [ 21, MoveId.ANCIENT_POWER ], + [ 25, MoveId.SLASH ], + [ 30, MoveId.DETECT ], + [ 33, MoveId.SHADOW_CLAW ], + [ 38, MoveId.SCREECH ], + [ 42, MoveId.SUBSTITUTE ], + [ 46, MoveId.SUCKER_PUNCH ], + [ 50, MoveId.FOUL_PLAY ], + ], + [SpeciesId.SHUPPET]: [ + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.PURSUIT ], // Custom + [ 4, MoveId.SCREECH ], + [ 7, MoveId.NIGHT_SHADE ], + [ 10, MoveId.SPITE ], + [ 16, MoveId.WILL_O_WISP ], + [ 19, MoveId.SHADOW_SNEAK ], + [ 22, MoveId.HEX ], + [ 26, MoveId.CURSE ], + [ 30, MoveId.SHADOW_BALL ], + [ 34, MoveId.ROLE_PLAY ], + [ 38, MoveId.SUCKER_PUNCH ], + [ 42, MoveId.TRICK ], + [ 48, MoveId.PHANTOM_FORCE ], + ], + [SpeciesId.BANETTE]: [ + [ EVOLVE_MOVE, MoveId.KNOCK_OFF ], + [ 1, MoveId.ASTONISH ], // Previous Stage Move + [ 1, MoveId.PURSUIT ], // Previous Stage Move, Custom + [ 1, MoveId.SCREECH ], + [ 1, MoveId.NIGHT_SHADE ], + [ 1, MoveId.SPITE ], + [ 16, MoveId.WILL_O_WISP ], + [ 19, MoveId.SHADOW_SNEAK ], + [ 22, MoveId.HEX ], + [ 26, MoveId.CURSE ], + [ 30, MoveId.SHADOW_BALL ], + [ 34, MoveId.ROLE_PLAY ], + [ 40, MoveId.SUCKER_PUNCH ], + [ 46, MoveId.TRICK ], + [ 53, MoveId.PHANTOM_FORCE ], + ], + [SpeciesId.DUSKULL]: [ + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PURSUIT ], // Custom + [ 4, MoveId.DISABLE ], + [ 8, MoveId.SHADOW_SNEAK ], + [ 12, MoveId.CONFUSE_RAY ], + [ 16, MoveId.NIGHT_SHADE ], + [ 20, MoveId.PAYBACK ], + [ 24, MoveId.WILL_O_WISP ], + [ 28, MoveId.MEAN_LOOK ], + [ 32, MoveId.HEX ], + [ 36, MoveId.CURSE ], + [ 40, MoveId.SHADOW_BALL ], + [ 44, MoveId.FUTURE_SIGHT ], + ], + [SpeciesId.DUSCLOPS]: [ + [ EVOLVE_MOVE, MoveId.SHADOW_PUNCH ], + [ 1, MoveId.FIRE_PUNCH ], + [ 1, MoveId.ICE_PUNCH ], + [ 1, MoveId.THUNDER_PUNCH ], + [ 1, MoveId.GRAVITY ], + [ 1, MoveId.BIND ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PURSUIT ], // Previous Stage Move, Custom + [ 1, MoveId.DISABLE ], + [ 1, MoveId.SHADOW_SNEAK ], + [ 12, MoveId.CONFUSE_RAY ], + [ 16, MoveId.NIGHT_SHADE ], + [ 20, MoveId.PAYBACK ], + [ 24, MoveId.WILL_O_WISP ], + [ 28, MoveId.MEAN_LOOK ], + [ 32, MoveId.HEX ], + [ 36, MoveId.CURSE ], + [ 42, MoveId.SHADOW_BALL ], + [ 48, MoveId.FUTURE_SIGHT ], + ], + [SpeciesId.TROPIUS]: [ + [ 1, MoveId.LEAF_STORM ], + [ 1, MoveId.GUST ], + [ 1, MoveId.LEER ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.RAZOR_LEAF ], + [ 6, MoveId.SWEET_SCENT ], + [ 10, MoveId.STOMP ], + [ 16, MoveId.MAGICAL_LEAF ], + [ 21, MoveId.WHIRLWIND ], + [ 30, MoveId.WIDE_GUARD ], + [ 36, MoveId.AIR_SLASH ], + [ 41, MoveId.BODY_SLAM ], + [ 46, MoveId.OUTRAGE ], + [ 50, MoveId.SYNTHESIS ], + [ 56, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.CHIMECHO]: [ + [ 1, MoveId.HEALING_WISH ], + [ 1, MoveId.LAST_RESORT ], // Previous Stage Move + [ 1, MoveId.ENTRAINMENT ], // Previous Stage Move + [ 1, MoveId.WRAP ], + [ 1, MoveId.PSYWAVE ], // Previous Stage Move, Custom + [ 1, MoveId.GROWL ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.SYNCHRONOISE ], + [ 13, MoveId.YAWN ], + [ 16, MoveId.STORED_POWER ], + [ 19, MoveId.TAKE_DOWN ], + [ 22, MoveId.EXTRASENSORY ], + [ 27, MoveId.HEAL_BELL ], + [ 32, MoveId.UPROAR ], + [ 37, MoveId.SAFEGUARD ], + [ 42, MoveId.DOUBLE_EDGE ], + [ 47, MoveId.HEAL_PULSE ], + ], + [SpeciesId.ABSOL]: [ + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.LEER ], + [ 5, MoveId.DOUBLE_TEAM ], + [ 10, MoveId.KNOCK_OFF ], + [ 15, MoveId.DETECT ], + [ 20, MoveId.TAUNT ], + [ 25, MoveId.SLASH ], + [ 30, MoveId.NIGHT_SLASH ], + [ 35, MoveId.FOCUS_ENERGY ], + [ 40, MoveId.SUCKER_PUNCH ], + [ 45, MoveId.SWORDS_DANCE ], + [ 50, MoveId.FUTURE_SIGHT ], + [ 55, MoveId.PERISH_SONG ], + ], + [SpeciesId.WYNAUT]: [ + [ 1, MoveId.COUNTER ], + [ 1, MoveId.MIRROR_COAT ], + [ 1, MoveId.SAFEGUARD ], + [ 1, MoveId.DESTINY_BOND ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.ENCORE ], + [ 1, MoveId.AMNESIA ], + ], + [SpeciesId.SNORUNT]: [ + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.HEADBUTT ], + [ 5, MoveId.LEER ], + [ 10, MoveId.DOUBLE_TEAM ], + [ 15, MoveId.ICE_SHARD ], + [ 20, MoveId.PROTECT ], + [ 25, MoveId.ICY_WIND ], + [ 30, MoveId.FROST_BREATH ], + [ 35, MoveId.BITE ], + [ 40, MoveId.ICE_FANG ], + [ 45, MoveId.SNOWSCAPE ], + [ 50, MoveId.WEATHER_BALL ], + [ 55, MoveId.CRUNCH ], + [ 60, MoveId.BLIZZARD ], + ], + [SpeciesId.GLALIE]: [ + [ EVOLVE_MOVE, MoveId.FREEZE_DRY ], + [ 1, MoveId.SHEER_COLD ], + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.HEADBUTT ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.ICE_BALL ], + [ 15, MoveId.ICE_SHARD ], + [ 20, MoveId.PROTECT ], + [ 25, MoveId.ICY_WIND ], + [ 30, MoveId.FROST_BREATH ], + [ 35, MoveId.BITE ], + [ 40, MoveId.ICE_FANG ], + [ 47, MoveId.SNOWSCAPE ], + [ 54, MoveId.WEATHER_BALL ], + [ 61, MoveId.CRUNCH ], + [ 68, MoveId.BLIZZARD ], + ], + [SpeciesId.SPHEAL]: [ + [ 1, MoveId.ROLLOUT ], + [ 1, MoveId.DEFENSE_CURL ], + [ 4, MoveId.GROWL ], + [ 8, MoveId.WATER_GUN ], + [ 12, MoveId.POWDER_SNOW ], + [ 16, MoveId.REST ], + [ 20, MoveId.SNORE ], + [ 24, MoveId.BRINE ], + [ 28, MoveId.AURORA_BEAM ], + [ 33, MoveId.ENCORE ], + [ 36, MoveId.BODY_SLAM ], + [ 40, MoveId.SURF ], + [ 44, MoveId.BLIZZARD ], + [ 48, MoveId.HAIL ], + [ 52, MoveId.SHEER_COLD ], + ], + [SpeciesId.SEALEO]: [ + [ EVOLVE_MOVE, MoveId.SWAGGER ], + [ 1, MoveId.ROLLOUT ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 12, MoveId.POWDER_SNOW ], + [ 16, MoveId.REST ], + [ 20, MoveId.SNORE ], + [ 24, MoveId.BRINE ], + [ 28, MoveId.AURORA_BEAM ], + [ 35, MoveId.ENCORE ], + [ 40, MoveId.BODY_SLAM ], + [ 46, MoveId.SURF ], + [ 52, MoveId.BLIZZARD ], + [ 58, MoveId.HAIL ], + [ 64, MoveId.SHEER_COLD ], + ], + [SpeciesId.WALREIN]: [ + [ 1, MoveId.SWAGGER ], + [ 1, MoveId.CRUNCH ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.ROLLOUT ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 12, MoveId.POWDER_SNOW ], + [ 16, MoveId.REST ], + [ 20, MoveId.SNORE ], + [ 24, MoveId.BRINE ], + [ 28, MoveId.AURORA_BEAM ], + [ 35, MoveId.ENCORE ], + [ 40, MoveId.BODY_SLAM ], + [ 48, MoveId.SURF ], + [ 56, MoveId.BLIZZARD ], + [ 64, MoveId.HAIL ], + [ 72, MoveId.SHEER_COLD ], + ], + [SpeciesId.CLAMPERL]: [ + [ 1, MoveId.CLAMP ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.WHIRLPOOL ], + [ 1, MoveId.IRON_DEFENSE ], + [ 50, MoveId.SHELL_SMASH ], + ], + [SpeciesId.HUNTAIL]: [ + [ 1, MoveId.CLAMP ], // Previous Stage Move + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.IRON_DEFENSE ], + [ 1, MoveId.SHELL_SMASH ], + [ 1, MoveId.WHIRLPOOL ], + [ 1, MoveId.BITE ], + [ 5, MoveId.SCREECH ], + [ 9, MoveId.SCARY_FACE ], + [ 11, MoveId.RAIN_DANCE ], + [ 14, MoveId.WATER_PULSE ], + [ 16, MoveId.ICE_FANG ], + [ 19, MoveId.BRINE ], + [ 23, MoveId.SUCKER_PUNCH ], + [ 26, MoveId.DIVE ], + [ 29, MoveId.BATON_PASS ], + [ 34, MoveId.CRUNCH ], + [ 39, MoveId.AQUA_TAIL ], + [ 45, MoveId.COIL ], + [ 50, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.GOREBYSS]: [ + [ 1, MoveId.CLAMP ], // Previous Stage Move + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.IRON_DEFENSE ], + [ 1, MoveId.SHELL_SMASH ], + [ 1, MoveId.WHIRLPOOL ], + [ 1, MoveId.CONFUSION ], + [ 5, MoveId.RAIN_DANCE ], + [ 9, MoveId.AGILITY ], + [ 11, MoveId.DRAINING_KISS ], + [ 14, MoveId.WATER_PULSE ], + [ 16, MoveId.AMNESIA ], + [ 19, MoveId.AQUA_RING ], + [ 23, MoveId.SAFEGUARD ], + [ 26, MoveId.DIVE ], + [ 29, MoveId.BATON_PASS ], + [ 34, MoveId.PSYCHIC ], + [ 39, MoveId.AQUA_TAIL ], + [ 45, MoveId.COIL ], + [ 50, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.RELICANTH]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 5, MoveId.WATER_GUN ], + [ 10, MoveId.ANCIENT_POWER ], + [ 15, MoveId.YAWN ], + [ 20, MoveId.DIVE ], + [ 25, MoveId.TAKE_DOWN ], + [ 30, MoveId.AQUA_TAIL ], + [ 35, MoveId.REST ], + [ 40, MoveId.FLAIL ], + [ 45, MoveId.HYDRO_PUMP ], + [ 50, MoveId.DOUBLE_EDGE ], + [ 55, MoveId.HEAD_SMASH ], + ], + [SpeciesId.LUVDISC]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.CHARM ], + [ 4, MoveId.WATER_GUN ], + [ 7, MoveId.AGILITY ], + [ 13, MoveId.WISH ], + [ 17, MoveId.WATER_PULSE ], + [ 20, MoveId.ATTRACT ], + [ 22, MoveId.DRAINING_KISS ], + [ 26, MoveId.FLAIL ], + [ 31, MoveId.SWEET_KISS ], + [ 34, MoveId.TAKE_DOWN ], + [ 37, MoveId.BABY_DOLL_EYES ], + [ 40, MoveId.AQUA_RING ], + [ 42, MoveId.SOAK ], + [ 46, MoveId.HYDRO_PUMP ], + [ 49, MoveId.SAFEGUARD ], + ], + [SpeciesId.BAGON]: [ + [ 1, MoveId.EMBER ], + [ 1, MoveId.LEER ], + [ 5, MoveId.BITE ], + [ 10, MoveId.DRAGON_BREATH ], + [ 15, MoveId.HEADBUTT ], + [ 20, MoveId.SCARY_FACE ], + [ 25, MoveId.CRUNCH ], + [ 31, MoveId.DRAGON_CLAW ], + [ 35, MoveId.ZEN_HEADBUTT ], + [ 40, MoveId.FOCUS_ENERGY ], + [ 45, MoveId.FLAMETHROWER ], + [ 50, MoveId.OUTRAGE ], + [ 55, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.SHELGON]: [ + [ EVOLVE_MOVE, MoveId.PROTECT ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.LEER ], + [ 1, MoveId.BITE ], + [ 1, MoveId.DRAGON_BREATH ], + [ 15, MoveId.HEADBUTT ], + [ 20, MoveId.SCARY_FACE ], + [ 25, MoveId.CRUNCH ], + [ 33, MoveId.DRAGON_CLAW ], + [ 39, MoveId.ZEN_HEADBUTT ], + [ 46, MoveId.FOCUS_ENERGY ], + [ 53, MoveId.FLAMETHROWER ], + [ 60, MoveId.OUTRAGE ], + [ 67, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.SALAMENCE]: [ + [ EVOLVE_MOVE, MoveId.FLY ], + [ RELEARN_MOVE, MoveId.OUTRAGE ], // Previous Stage Move + [ 1, MoveId.PROTECT ], + [ 1, MoveId.DRAGON_TAIL ], + [ 1, MoveId.DUAL_WINGBEAT ], + [ 1, MoveId.ROOST ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.LEER ], + [ 1, MoveId.BITE ], + [ 1, MoveId.DRAGON_BREATH ], + [ 15, MoveId.HEADBUTT ], + [ 20, MoveId.SCARY_FACE ], + [ 25, MoveId.CRUNCH ], + [ 33, MoveId.DRAGON_CLAW ], + [ 39, MoveId.ZEN_HEADBUTT ], + [ 46, MoveId.FOCUS_ENERGY ], + [ 55, MoveId.FLAMETHROWER ], + [ 73, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.BELDUM]: [ + [ 1, MoveId.TACKLE ], + ], + [SpeciesId.METANG]: [ + [ EVOLVE_MOVE, MoveId.CONFUSION ], + [ EVOLVE_MOVE, MoveId.METAL_CLAW ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.BULLET_PUNCH ], + [ 1, MoveId.HONE_CLAWS ], + [ 6, MoveId.ZEN_HEADBUTT ], + [ 12, MoveId.MAGNET_RISE ], + [ 18, MoveId.FLASH_CANNON ], + [ 26, MoveId.TAKE_DOWN ], + [ 34, MoveId.PSYCHIC ], + [ 42, MoveId.SCARY_FACE ], + [ 50, MoveId.METEOR_MASH ], + [ 58, MoveId.IRON_DEFENSE ], + [ 66, MoveId.AGILITY ], + [ 74, MoveId.HYPER_BEAM ], + ], + [SpeciesId.METAGROSS]: [ + [ EVOLVE_MOVE, MoveId.HAMMER_ARM ], + [ RELEARN_MOVE, MoveId.EXPLOSION ], + [ RELEARN_MOVE, MoveId.HONE_CLAWS ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.BULLET_PUNCH ], + [ 1, MoveId.TACKLE ], + [ 6, MoveId.ZEN_HEADBUTT ], + [ 12, MoveId.MAGNET_RISE ], + [ 16, MoveId.FLASH_CANNON ], + [ 26, MoveId.TAKE_DOWN ], + [ 34, MoveId.PSYCHIC ], + [ 42, MoveId.SCARY_FACE ], + [ 52, MoveId.METEOR_MASH ], + [ 62, MoveId.IRON_DEFENSE ], + [ 72, MoveId.AGILITY ], + [ 82, MoveId.HYPER_BEAM ], + ], + [SpeciesId.REGIROCK]: [ + [ 1, MoveId.CHARGE_BEAM ], + [ 1, MoveId.ROCK_THROW ], + [ 6, MoveId.BULLDOZE ], + [ 12, MoveId.ANCIENT_POWER ], + [ 18, MoveId.STOMP ], + [ 24, MoveId.ROCK_SLIDE ], + [ 30, MoveId.CURSE ], + [ 36, MoveId.IRON_DEFENSE ], + [ 42, MoveId.HAMMER_ARM ], + [ 48, MoveId.STONE_EDGE ], + [ 54, MoveId.SUPERPOWER ], + [ 60, MoveId.LOCK_ON ], + [ 66, MoveId.ZAP_CANNON ], + [ 72, MoveId.HYPER_BEAM ], + [ 78, MoveId.EXPLOSION ], + ], + [SpeciesId.REGICE]: [ + [ 1, MoveId.CHARGE_BEAM ], + [ 1, MoveId.ICY_WIND ], + [ 6, MoveId.BULLDOZE ], + [ 12, MoveId.ANCIENT_POWER ], + [ 18, MoveId.STOMP ], + [ 24, MoveId.ICE_BEAM ], + [ 30, MoveId.CURSE ], + [ 36, MoveId.AMNESIA ], + [ 42, MoveId.HAMMER_ARM ], + [ 48, MoveId.BLIZZARD ], + [ 54, MoveId.SUPERPOWER ], + [ 60, MoveId.LOCK_ON ], + [ 66, MoveId.ZAP_CANNON ], + [ 72, MoveId.HYPER_BEAM ], + [ 78, MoveId.EXPLOSION ], + ], + [SpeciesId.REGISTEEL]: [ + [ 1, MoveId.CHARGE_BEAM ], + [ 1, MoveId.METAL_CLAW ], + [ 6, MoveId.BULLDOZE ], + [ 12, MoveId.ANCIENT_POWER ], + [ 18, MoveId.STOMP ], + [ 24, MoveId.IRON_HEAD ], + [ 24, MoveId.FLASH_CANNON ], + [ 30, MoveId.CURSE ], + [ 36, MoveId.AMNESIA ], + [ 36, MoveId.IRON_DEFENSE ], + [ 42, MoveId.HAMMER_ARM ], + [ 48, MoveId.HEAVY_SLAM ], + [ 54, MoveId.SUPERPOWER ], + [ 60, MoveId.LOCK_ON ], + [ 66, MoveId.ZAP_CANNON ], + [ 72, MoveId.HYPER_BEAM ], + [ 78, MoveId.EXPLOSION ], + ], + [SpeciesId.LATIAS]: [ + [ 1, MoveId.STORED_POWER ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.PSYWAVE ], + [ 5, MoveId.HELPING_HAND ], + [ 10, MoveId.RECOVER ], + [ 15, MoveId.CONFUSION ], + [ 20, MoveId.TAILWIND ], + [ 25, MoveId.DRAGON_BREATH ], + [ 30, MoveId.WISH ], + [ 35, MoveId.MIST_BALL ], + [ 40, MoveId.ZEN_HEADBUTT ], + [ 45, MoveId.DRAGON_PULSE ], + [ 50, MoveId.HEAL_PULSE ], + [ 55, MoveId.REFLECT_TYPE ], + [ 60, MoveId.PSYCHIC ], + [ 65, MoveId.GUARD_SPLIT ], + [ 70, MoveId.HEALING_WISH ], + ], + [SpeciesId.LATIOS]: [ + [ 1, MoveId.STORED_POWER ], + [ 1, MoveId.DRAGON_DANCE ], + [ 1, MoveId.HEAL_BLOCK ], + [ 1, MoveId.PSYWAVE ], + [ 5, MoveId.HELPING_HAND ], + [ 10, MoveId.RECOVER ], + [ 15, MoveId.CONFUSION ], + [ 20, MoveId.TAILWIND ], + [ 25, MoveId.DRAGON_BREATH ], + [ 30, MoveId.ALLY_SWITCH ], + [ 35, MoveId.LUSTER_PURGE ], + [ 40, MoveId.ZEN_HEADBUTT ], + [ 45, MoveId.DRAGON_PULSE ], + [ 50, MoveId.HEAL_PULSE ], + [ 55, MoveId.SIMPLE_BEAM ], + [ 60, MoveId.PSYCHIC ], + [ 65, MoveId.POWER_SPLIT ], + [ 70, MoveId.MEMENTO ], + ], + [SpeciesId.KYOGRE]: [ + [ 1, MoveId.ORIGIN_PULSE ], + [ 1, MoveId.WATER_PULSE ], + [ 1, MoveId.ANCIENT_POWER ], + [ 1, MoveId.BODY_SLAM ], + [ 1, MoveId.SCARY_FACE ], + [ 9, MoveId.AQUA_TAIL ], + [ 18, MoveId.CALM_MIND ], + [ 27, MoveId.MUDDY_WATER ], + [ 36, MoveId.ICE_BEAM ], + [ 45, MoveId.SHEER_COLD ], + [ 54, MoveId.AQUA_RING ], + [ 72, MoveId.HYDRO_PUMP ], + [ 81, MoveId.DOUBLE_EDGE ], + [ 90, MoveId.WATER_SPOUT ], + ], + [SpeciesId.GROUDON]: [ + [ 1, MoveId.PRECIPICE_BLADES ], + [ 1, MoveId.MUD_SHOT ], + [ 1, MoveId.ANCIENT_POWER ], + [ 1, MoveId.LAVA_PLUME ], + [ 1, MoveId.SCARY_FACE ], + [ 9, MoveId.EARTH_POWER ], + [ 18, MoveId.BULK_UP ], + [ 27, MoveId.EARTHQUAKE ], + [ 36, MoveId.HAMMER_ARM ], + [ 45, MoveId.FISSURE ], + [ 54, MoveId.REST ], + [ 72, MoveId.FIRE_BLAST ], + [ 81, MoveId.SOLAR_BEAM ], + [ 90, MoveId.ERUPTION ], + ], + [SpeciesId.RAYQUAZA]: [ + [ 1, MoveId.DRAGON_ASCENT ], + [ 1, MoveId.TWISTER ], + [ 1, MoveId.ANCIENT_POWER ], + [ 1, MoveId.AIR_SLASH ], + [ 1, MoveId.SCARY_FACE ], + [ 9, MoveId.CRUNCH ], + [ 18, MoveId.DRAGON_DANCE ], + [ 27, MoveId.EXTREME_SPEED ], + [ 36, MoveId.DRAGON_PULSE ], + [ 45, MoveId.HYPER_VOICE ], + [ 54, MoveId.REST ], + [ 63, MoveId.FLY ], + [ 72, MoveId.HURRICANE ], + [ 81, MoveId.OUTRAGE ], + [ 90, MoveId.HYPER_BEAM ], + ], + [SpeciesId.JIRACHI]: [ + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.WISH ], + [ 7, MoveId.SWIFT ], + [ 21, MoveId.LIFE_DEW ], + [ 28, MoveId.ZEN_HEADBUTT ], + [ 35, MoveId.GRAVITY ], + [ 42, MoveId.PSYCHIC ], + [ 49, MoveId.METEOR_MASH ], + [ 56, MoveId.HEALING_WISH ], + [ 63, MoveId.REST ], + [ 70, MoveId.FUTURE_SIGHT ], + [ 77, MoveId.DOUBLE_EDGE ], + [ 84, MoveId.COSMIC_POWER ], + [ 91, MoveId.LAST_RESORT ], + [ 98, MoveId.DOOM_DESIRE ], + ], + [SpeciesId.DEOXYS]: [ + [ 1, MoveId.CONFUSION ], // Custom + [ 1, MoveId.LEER ], + [ 1, MoveId.WRAP ], + [ 7, MoveId.NIGHT_SHADE ], + [ 13, MoveId.TELEPORT ], + [ 19, MoveId.KNOCK_OFF ], + [ 25, MoveId.PSYSHOCK ], + [ 31, MoveId.PSYCHIC ], + [ 37, MoveId.GRAVITY ], + [ 43, MoveId.SKILL_SWAP ], + [ 49, MoveId.ZEN_HEADBUTT ], + [ 55, MoveId.COSMIC_POWER ], + [ 61, MoveId.RECOVER ], + [ 67, MoveId.PSYCHO_BOOST ], + [ 73, MoveId.HYPER_BEAM ], + ], + [SpeciesId.TURTWIG]: [ + [ 1, MoveId.TACKLE ], + [ 5, MoveId.WITHDRAW ], + [ 5, MoveId.LEAFAGE ], // Custom, moved from 10 to 5, BDSP + [ 9, MoveId.GROWTH ], // Fill empty moveslot, from BDSP level 6 + [ 13, MoveId.RAZOR_LEAF ], + [ 17, MoveId.CURSE ], + [ 21, MoveId.BITE ], + [ 25, MoveId.MEGA_DRAIN ], + [ 29, MoveId.LEECH_SEED ], + [ 33, MoveId.SYNTHESIS ], + [ 37, MoveId.CRUNCH ], + [ 41, MoveId.GIGA_DRAIN ], + [ 45, MoveId.LEAF_STORM ], + ], + [SpeciesId.GROTLE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.LEAFAGE ], + [ 1, MoveId.GROWTH ], // Previous Stage Move + [ 13, MoveId.RAZOR_LEAF ], + [ 17, MoveId.CURSE ], + [ 22, MoveId.BITE ], + [ 27, MoveId.MEGA_DRAIN ], + [ 32, MoveId.LEECH_SEED ], + [ 37, MoveId.SYNTHESIS ], + [ 42, MoveId.CRUNCH ], + [ 47, MoveId.GIGA_DRAIN ], + [ 52, MoveId.LEAF_STORM ], + ], + [SpeciesId.TORTERRA]: [ + [ EVOLVE_MOVE, MoveId.EARTHQUAKE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.LEAFAGE ], + [ 1, MoveId.GROWTH ], // Previous Stage Move + [ 1, MoveId.RAZOR_LEAF ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.WOOD_HAMMER ], + [ 17, MoveId.CURSE ], + [ 22, MoveId.BITE ], + [ 27, MoveId.MEGA_DRAIN ], + [ 33, MoveId.LEECH_SEED ], + [ 39, MoveId.SYNTHESIS ], + [ 45, MoveId.CRUNCH ], + [ 51, MoveId.GIGA_DRAIN ], + [ 57, MoveId.LEAF_STORM ], + [ 63, MoveId.HEADLONG_RUSH ], + ], + [SpeciesId.CHIMCHAR]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 5, MoveId.EMBER ], // Custom, moved from 7 to 5 + [ 9, MoveId.TAUNT ], + [ 15, MoveId.FURY_SWIPES ], + [ 17, MoveId.FLAME_WHEEL ], + [ 23, MoveId.NASTY_PLOT ], + [ 25, MoveId.TORMENT ], + [ 31, MoveId.FACADE ], + [ 33, MoveId.FIRE_SPIN ], + [ 39, MoveId.ACROBATICS ], + [ 41, MoveId.SLACK_OFF ], + [ 47, MoveId.FLAMETHROWER ], + ], + [SpeciesId.MONFERNO]: [ + [ EVOLVE_MOVE, MoveId.MACH_PUNCH ], + [ RELEARN_MOVE, MoveId.NASTY_PLOT ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.FACADE ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.FLAMETHROWER ], // Previous Stage Move + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 9, MoveId.TAUNT ], + [ 16, MoveId.FURY_SWIPES ], + [ 19, MoveId.FLAME_WHEEL ], + [ 26, MoveId.FEINT ], + [ 29, MoveId.TORMENT ], + [ 36, MoveId.CLOSE_COMBAT ], + [ 39, MoveId.FIRE_SPIN ], + [ 46, MoveId.ACROBATICS ], + [ 49, MoveId.SLACK_OFF ], + [ 56, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.INFERNAPE]: [ + [ EVOLVE_MOVE, MoveId.CLOSE_COMBAT ], + [ RELEARN_MOVE, MoveId.TAUNT ], + [ RELEARN_MOVE, MoveId.NASTY_PLOT ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.FACADE ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.SLACK_OFF ], + [ RELEARN_MOVE, MoveId.FLAMETHROWER ], // Previous Stage Move + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.MACH_PUNCH ], + [ 16, MoveId.FURY_SWIPES ], + [ 19, MoveId.FLAME_WHEEL ], + [ 26, MoveId.FEINT ], + [ 29, MoveId.TORMENT ], + [ 42, MoveId.FIRE_SPIN ], + [ 47, MoveId.FLARE_BLITZ ], + [ 52, MoveId.ACROBATICS ], + [ 58, MoveId.CALM_MIND ], + [ 65, MoveId.RAGING_FURY ], + ], + [SpeciesId.PIPLUP]: [ + [ 1, MoveId.POUND ], + [ 4, MoveId.GROWL ], + [ 5, MoveId.WATER_GUN ], // Custom, moved from 8 to 5 + [ 11, MoveId.CHARM ], + [ 15, MoveId.PECK ], + [ 18, MoveId.BUBBLE_BEAM ], + [ 22, MoveId.SWAGGER ], + [ 25, MoveId.FURY_ATTACK ], + [ 29, MoveId.BRINE ], + [ 32, MoveId.WHIRLPOOL ], + [ 36, MoveId.MIST ], + [ 39, MoveId.DRILL_PECK ], + [ 43, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.PRINPLUP]: [ + [ EVOLVE_MOVE, MoveId.METAL_CLAW ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.CHARM ], // Previous Stage Move + [ 15, MoveId.PECK ], + [ 19, MoveId.BUBBLE_BEAM ], + [ 24, MoveId.SWAGGER ], + [ 28, MoveId.FURY_ATTACK ], + [ 33, MoveId.BRINE ], + [ 37, MoveId.WHIRLPOOL ], + [ 42, MoveId.MIST ], + [ 46, MoveId.DRILL_PECK ], + [ 50, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.EMPOLEON]: [ + [ EVOLVE_MOVE, MoveId.AQUA_JET ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.CHARM ], // Previous Stage Move + [ 1, MoveId.METAL_CLAW ], + [ 11, MoveId.SWORDS_DANCE ], + [ 15, MoveId.PECK ], + [ 19, MoveId.BUBBLE_BEAM ], + [ 24, MoveId.SWAGGER ], + [ 28, MoveId.FURY_ATTACK ], + [ 33, MoveId.BRINE ], + [ 39, MoveId.WHIRLPOOL ], + [ 46, MoveId.MIST ], + [ 52, MoveId.DRILL_PECK ], + [ 59, MoveId.HYDRO_PUMP ], + [ 66, MoveId.WAVE_CRASH ], + ], + [SpeciesId.STARLY]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 5, MoveId.QUICK_ATTACK ], + [ 9, MoveId.WING_ATTACK ], + [ 13, MoveId.DOUBLE_TEAM ], + [ 17, MoveId.ENDEAVOR ], + [ 21, MoveId.WHIRLWIND ], + [ 25, MoveId.AERIAL_ACE ], + [ 29, MoveId.TAKE_DOWN ], + [ 33, MoveId.AGILITY ], + [ 37, MoveId.BRAVE_BIRD ], + [ 41, MoveId.FINAL_GAMBIT ], + ], + [SpeciesId.STARAVIA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.QUICK_ATTACK ], + [ 9, MoveId.WING_ATTACK ], + [ 13, MoveId.DOUBLE_TEAM ], + [ 18, MoveId.ENDEAVOR ], + [ 23, MoveId.WHIRLWIND ], + [ 28, MoveId.AERIAL_ACE ], + [ 33, MoveId.TAKE_DOWN ], + [ 38, MoveId.AGILITY ], + [ 43, MoveId.BRAVE_BIRD ], + [ 48, MoveId.FINAL_GAMBIT ], + ], + [SpeciesId.STARAPTOR]: [ + [ EVOLVE_MOVE, MoveId.CLOSE_COMBAT ], + [ 1, MoveId.WING_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.QUICK_ATTACK ], + [ 13, MoveId.DOUBLE_TEAM ], + [ 18, MoveId.ENDEAVOR ], + [ 23, MoveId.WHIRLWIND ], + [ 28, MoveId.AERIAL_ACE ], + [ 33, MoveId.TAKE_DOWN ], + [ 41, MoveId.AGILITY ], + [ 49, MoveId.BRAVE_BIRD ], + [ 57, MoveId.FINAL_GAMBIT ], + ], + [SpeciesId.BIDOOF]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 5, MoveId.DEFENSE_CURL ], + [ 9, MoveId.ROLLOUT ], + [ 13, MoveId.HEADBUTT ], + [ 17, MoveId.HYPER_FANG ], + [ 21, MoveId.YAWN ], + [ 25, MoveId.CRUNCH ], + [ 29, MoveId.TAKE_DOWN ], + [ 33, MoveId.SUPER_FANG ], + [ 37, MoveId.SWORDS_DANCE ], + [ 41, MoveId.AMNESIA ], + [ 45, MoveId.SUPERPOWER ], + [ 49, MoveId.CURSE ], + ], + [SpeciesId.BIBAREL]: [ + [ EVOLVE_MOVE, MoveId.WATER_GUN ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.AQUA_JET ], + [ 1, MoveId.ROTOTILLER ], + [ 5, MoveId.DEFENSE_CURL ], + [ 9, MoveId.ROLLOUT ], + [ 13, MoveId.HEADBUTT ], + [ 18, MoveId.HYPER_FANG ], + [ 23, MoveId.YAWN ], + [ 28, MoveId.CRUNCH ], + [ 33, MoveId.TAKE_DOWN ], + [ 38, MoveId.SUPER_FANG ], + [ 43, MoveId.SWORDS_DANCE ], + [ 48, MoveId.AMNESIA ], + [ 53, MoveId.SUPERPOWER ], + [ 58, MoveId.CURSE ], + ], + [SpeciesId.KRICKETOT]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.BIDE ], + [ 6, MoveId.STRUGGLE_BUG ], + [ 16, MoveId.BUG_BITE ], + ], + [SpeciesId.KRICKETUNE]: [ + [ EVOLVE_MOVE, MoveId.FURY_CUTTER ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.BIDE ], + [ 1, MoveId.STRUGGLE_BUG ], // Previous Stage Move + [ 1, MoveId.BUG_BITE ], // Previous Stage Move + [ 14, MoveId.ABSORB ], + [ 18, MoveId.SING ], + [ 22, MoveId.FOCUS_ENERGY ], + [ 26, MoveId.SLASH ], + [ 30, MoveId.X_SCISSOR ], + [ 34, MoveId.SCREECH ], + [ 36, MoveId.FELL_STINGER ], + [ 38, MoveId.TAUNT ], + [ 42, MoveId.NIGHT_SLASH ], + [ 44, MoveId.STICKY_WEB ], + [ 46, MoveId.BUG_BUZZ ], + [ 50, MoveId.PERISH_SONG ], + ], + [SpeciesId.SHINX]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 4, MoveId.THUNDER_SHOCK ], + [ 8, MoveId.CHARGE ], + [ 12, MoveId.BITE ], + [ 16, MoveId.SPARK ], + [ 20, MoveId.ROAR ], + [ 24, MoveId.VOLT_SWITCH ], + [ 28, MoveId.SCARY_FACE ], + [ 32, MoveId.THUNDER_WAVE ], + [ 36, MoveId.CRUNCH ], + [ 40, MoveId.DISCHARGE ], + [ 44, MoveId.SWAGGER ], + [ 48, MoveId.WILD_CHARGE ], + ], + [SpeciesId.LUXIO]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.CHARGE ], + [ 12, MoveId.BITE ], + [ 18, MoveId.SPARK ], + [ 24, MoveId.ROAR ], + [ 31, MoveId.VOLT_SWITCH ], + [ 36, MoveId.SCARY_FACE ], + [ 42, MoveId.THUNDER_WAVE ], + [ 48, MoveId.CRUNCH ], + [ 54, MoveId.DISCHARGE ], + [ 60, MoveId.SWAGGER ], + [ 68, MoveId.WILD_CHARGE ], + ], + [SpeciesId.LUXRAY]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.CHARGE ], + [ 1, MoveId.ELECTRIC_TERRAIN ], + [ 12, MoveId.BITE ], + [ 18, MoveId.SPARK ], + [ 24, MoveId.ROAR ], + [ 33, MoveId.VOLT_SWITCH ], + [ 40, MoveId.SCARY_FACE ], + [ 48, MoveId.THUNDER_WAVE ], + [ 56, MoveId.CRUNCH ], + [ 64, MoveId.DISCHARGE ], + [ 72, MoveId.SWAGGER ], + [ 80, MoveId.WILD_CHARGE ], + ], + [SpeciesId.BUDEW]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.WORRY_SEED ], + ], + [SpeciesId.ROSERADE]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.MEGA_DRAIN ], + [ 1, MoveId.LEECH_SEED ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.PETAL_DANCE ], + [ 1, MoveId.TOXIC ], + [ 1, MoveId.GIGA_DRAIN ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.SYNTHESIS ], + [ 1, MoveId.INGRAIN ], + [ 1, MoveId.AROMATHERAPY ], + [ 1, MoveId.MAGICAL_LEAF ], + [ 1, MoveId.WORRY_SEED ], + [ 1, MoveId.TOXIC_SPIKES ], + [ 1, MoveId.PETAL_BLIZZARD ], + [ 1, MoveId.GRASSY_TERRAIN ], + [ 1, MoveId.VENOM_DRENCH ], + ], + [SpeciesId.CRANIDOS]: [ + [ 1, MoveId.HEADBUTT ], + [ 1, MoveId.LEER ], + [ 6, MoveId.FOCUS_ENERGY ], + [ 10, MoveId.PURSUIT ], + [ 15, MoveId.TAKE_DOWN ], + [ 19, MoveId.SCARY_FACE ], + [ 24, MoveId.ASSURANCE ], + [ 28, MoveId.CHIP_AWAY ], + [ 33, MoveId.ANCIENT_POWER ], + [ 37, MoveId.ZEN_HEADBUTT ], + [ 42, MoveId.SCREECH ], + [ 46, MoveId.HEAD_SMASH ], + ], + [SpeciesId.RAMPARDOS]: [ + [ EVOLVE_MOVE, MoveId.ENDEAVOR ], + [ 1, MoveId.HEADBUTT ], + [ 1, MoveId.LEER ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.PURSUIT ], + [ 15, MoveId.TAKE_DOWN ], + [ 19, MoveId.SCARY_FACE ], + [ 24, MoveId.ASSURANCE ], + [ 28, MoveId.CHIP_AWAY ], + [ 36, MoveId.ANCIENT_POWER ], + [ 43, MoveId.ZEN_HEADBUTT ], + [ 51, MoveId.SCREECH ], + [ 58, MoveId.HEAD_SMASH ], + ], + [SpeciesId.SHIELDON]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.PROTECT ], + [ 6, MoveId.TAUNT ], + [ 10, MoveId.METAL_SOUND ], + [ 15, MoveId.TAKE_DOWN ], + [ 19, MoveId.IRON_DEFENSE ], + [ 24, MoveId.SWAGGER ], + [ 28, MoveId.ANCIENT_POWER ], + [ 33, MoveId.ENDURE ], + [ 37, MoveId.METAL_BURST ], + [ 42, MoveId.IRON_HEAD ], + [ 46, MoveId.HEAVY_SLAM ], + ], + [SpeciesId.BASTIODON]: [ + [ EVOLVE_MOVE, MoveId.BLOCK ], + [ RELEARN_MOVE, MoveId.WIDE_GUARD ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.TAUNT ], + [ 1, MoveId.METAL_SOUND ], + [ 15, MoveId.TAKE_DOWN ], + [ 19, MoveId.IRON_DEFENSE ], + [ 24, MoveId.SWAGGER ], + [ 28, MoveId.ANCIENT_POWER ], + [ 36, MoveId.ENDURE ], + [ 43, MoveId.METAL_BURST ], + [ 51, MoveId.IRON_HEAD ], + [ 58, MoveId.HEAVY_SLAM ], + ], + [SpeciesId.BURMY]: [ + [ 1, MoveId.PROTECT ], + [ 1, MoveId.STRUGGLE_BUG ], // Custom + [ 10, MoveId.TACKLE ], + [ 15, MoveId.BUG_BITE ], + [ 20, MoveId.STRING_SHOT ], + ], + [SpeciesId.WORMADAM]: [ + [ EVOLVE_MOVE, MoveId.QUIVER_DANCE ], + [ 1, MoveId.STRUGGLE_BUG ], // Previous Stage Move, Custom + [ 1, MoveId.TACKLE ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.SUCKER_PUNCH ], + [ 1, MoveId.BUG_BITE ], + [ 1, MoveId.PROTECT ], + [ 10, MoveId.TACKLE ], + [ 20, MoveId.STRING_SHOT ], + [ 23, MoveId.CONFUSION ], + [ 26, MoveId.RAZOR_LEAF ], + [ 29, MoveId.GROWTH ], + [ 32, MoveId.PSYBEAM ], + [ 35, MoveId.INFESTATION ], + [ 38, MoveId.FLAIL ], + [ 41, MoveId.ATTRACT ], + [ 44, MoveId.PSYCHIC ], + [ 47, MoveId.LEAF_STORM ], + [ 50, MoveId.BUG_BUZZ ], + ], + [SpeciesId.MOTHIM]: [ + [ EVOLVE_MOVE, MoveId.QUIVER_DANCE ], + [ 1, MoveId.STRUGGLE_BUG ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.BUG_BITE ], + [ 10, MoveId.PROTECT ], + [ 15, MoveId.BUG_BITE ], + [ 20, MoveId.STRING_SHOT ], + [ 23, MoveId.CONFUSION ], + [ 26, MoveId.GUST ], + [ 29, MoveId.POISON_POWDER ], + [ 32, MoveId.PSYBEAM ], + [ 35, MoveId.ROOST ], + [ 38, MoveId.STRUGGLE_BUG ], + [ 41, MoveId.AIR_SLASH ], + [ 44, MoveId.PSYCHIC ], + [ 47, MoveId.LUNGE ], + [ 50, MoveId.BUG_BUZZ ], + ], + [SpeciesId.COMBEE]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.BUG_BITE ], + [ 1, MoveId.STRUGGLE_BUG ], + ], + [SpeciesId.VESPIQUEN]: [ + [ EVOLVE_MOVE, MoveId.SLASH ], + [ 1, MoveId.GUST ], + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.BUG_BITE ], + [ 1, MoveId.STRUGGLE_BUG ], + [ 4, MoveId.FURY_CUTTER ], + [ 8, MoveId.AROMATIC_MIST ], + [ 12, MoveId.FELL_STINGER ], + [ 16, MoveId.FURY_SWIPES ], + [ 20, MoveId.SWAGGER ], + [ 24, MoveId.ROOST ], + [ 28, MoveId.AIR_SLASH ], + [ 32, MoveId.POWER_GEM ], + [ 36, MoveId.TOXIC ], + [ 40, MoveId.ATTACK_ORDER ], + [ 40, MoveId.DEFEND_ORDER ], + [ 40, MoveId.HEAL_ORDER ], + [ 44, MoveId.DESTINY_BOND ], + ], + [SpeciesId.PACHIRISU]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.BIDE ], + [ 5, MoveId.QUICK_ATTACK ], + [ 9, MoveId.CHARM ], + [ 13, MoveId.SPARK ], + [ 17, MoveId.ENDURE ], + [ 19, MoveId.NUZZLE ], + [ 21, MoveId.SWIFT ], + [ 25, MoveId.ELECTRO_BALL ], + [ 29, MoveId.SWEET_KISS ], + [ 33, MoveId.THUNDER_WAVE ], + [ 37, MoveId.SUPER_FANG ], + [ 41, MoveId.DISCHARGE ], + [ 45, MoveId.LAST_RESORT ], + [ 49, MoveId.THUNDER ], + ], + [SpeciesId.BUIZEL]: [ + [ 1, MoveId.TACKLE ], + [ 4, MoveId.GROWL ], + [ 7, MoveId.SOAK ], + [ 11, MoveId.QUICK_ATTACK ], + [ 15, MoveId.WATER_GUN ], + [ 18, MoveId.BITE ], + [ 21, MoveId.SWIFT ], + [ 24, MoveId.AQUA_JET ], + [ 27, MoveId.DOUBLE_HIT ], + [ 31, MoveId.WHIRLPOOL ], + [ 35, MoveId.LIQUIDATION ], + [ 38, MoveId.AQUA_TAIL ], + [ 41, MoveId.AGILITY ], + [ 45, MoveId.HYDRO_PUMP ], + [ 49, MoveId.WAVE_CRASH ], + ], + [SpeciesId.FLOATZEL]: [ + [ 1, MoveId.TACKLE ], // Previous Stage Move + [ 1, MoveId.GROWL ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.CRUNCH ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.SOAK ], + [ 15, MoveId.WATER_GUN ], + [ 18, MoveId.BITE ], + [ 21, MoveId.SWIFT ], + [ 24, MoveId.AQUA_JET ], + [ 29, MoveId.DOUBLE_HIT ], + [ 35, MoveId.WHIRLPOOL ], + [ 41, MoveId.LIQUIDATION ], + [ 46, MoveId.AQUA_TAIL ], + [ 51, MoveId.AGILITY ], + [ 57, MoveId.HYDRO_PUMP ], + [ 62, MoveId.WAVE_CRASH ], + ], + [SpeciesId.CHERUBI]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.MORNING_SUN ], + [ 5, MoveId.LEAFAGE ], + [ 10, MoveId.GROWTH ], + [ 15, MoveId.HELPING_HAND ], + [ 20, MoveId.MAGICAL_LEAF ], + [ 26, MoveId.LEECH_SEED ], + [ 30, MoveId.TAKE_DOWN ], + [ 35, MoveId.PETAL_BLIZZARD ], + [ 40, MoveId.WORRY_SEED ], + [ 45, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.CHERRIM]: [ + [ EVOLVE_MOVE, MoveId.SUNNY_DAY ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.MORNING_SUN ], + [ 1, MoveId.FLOWER_SHIELD ], + [ 1, MoveId.LEAFAGE ], + [ 15, MoveId.HELPING_HAND ], + [ 20, MoveId.MAGICAL_LEAF ], + [ 28, MoveId.LEECH_SEED ], + [ 34, MoveId.TAKE_DOWN ], + [ 41, MoveId.PETAL_BLIZZARD ], + [ 48, MoveId.WORRY_SEED ], + [ 55, MoveId.SOLAR_BEAM ], + [ 62, MoveId.PETAL_DANCE ], + ], + [SpeciesId.SHELLOS]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.MUD_SLAP ], + [ 5, MoveId.HARDEN ], + [ 10, MoveId.RECOVER ], + [ 15, MoveId.WATER_PULSE ], + [ 20, MoveId.ANCIENT_POWER ], + [ 25, MoveId.BODY_SLAM ], + [ 31, MoveId.MUDDY_WATER ], + [ 35, MoveId.EARTH_POWER ], + [ 40, MoveId.RAIN_DANCE ], + [ 45, MoveId.MEMENTO ], + ], + [SpeciesId.GASTRODON]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.RECOVER ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.MUD_SPORT ], + [ 15, MoveId.WATER_PULSE ], + [ 20, MoveId.ANCIENT_POWER ], + [ 25, MoveId.BODY_SLAM ], + [ 33, MoveId.MUDDY_WATER ], + [ 39, MoveId.EARTH_POWER ], + [ 46, MoveId.RAIN_DANCE ], + [ 53, MoveId.MEMENTO ], + ], + [SpeciesId.AMBIPOM]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.ASTONISH ], + [ 11, MoveId.BATON_PASS ], + [ 15, MoveId.TICKLE ], + [ 18, MoveId.FURY_SWIPES ], + [ 22, MoveId.SWIFT ], + [ 25, MoveId.SCREECH ], + [ 29, MoveId.AGILITY ], + [ 32, MoveId.DOUBLE_HIT ], + [ 36, MoveId.FLING ], + [ 39, MoveId.NASTY_PLOT ], + [ 43, MoveId.LAST_RESORT ], + ], + [SpeciesId.DRIFLOON]: [ + [ 1, MoveId.MINIMIZE ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.CONSTRICT ], + [ 4, MoveId.GUST ], + [ 8, MoveId.FOCUS_ENERGY ], + [ 12, MoveId.PAYBACK ], + [ 16, MoveId.HEX ], + [ 20, MoveId.SHADOW_BALL ], + [ 24, MoveId.STOCKPILE ], + [ 24, MoveId.SPIT_UP ], + [ 24, MoveId.SWALLOW ], + [ 29, MoveId.SELF_DESTRUCT ], + [ 32, MoveId.DESTINY_BOND ], + [ 36, MoveId.BATON_PASS ], + [ 40, MoveId.TAILWIND ], + [ 44, MoveId.EXPLOSION ], + ], + [SpeciesId.DRIFBLIM]: [ + [ EVOLVE_MOVE, MoveId.PHANTOM_FORCE ], + [ 1, MoveId.GUST ], + [ 1, MoveId.MINIMIZE ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.CONSTRICT ], + [ 1, MoveId.STRENGTH_SAP ], + [ 12, MoveId.PAYBACK ], + [ 16, MoveId.HEX ], + [ 20, MoveId.SHADOW_BALL ], + [ 24, MoveId.STOCKPILE ], + [ 24, MoveId.SPIT_UP ], + [ 24, MoveId.SWALLOW ], + [ 31, MoveId.SELF_DESTRUCT ], + [ 36, MoveId.DESTINY_BOND ], + [ 42, MoveId.BATON_PASS ], + [ 48, MoveId.TAILWIND ], + [ 54, MoveId.EXPLOSION ], + ], + [SpeciesId.BUNEARY]: [ + [ 1, MoveId.FRUSTRATION ], + [ 1, MoveId.POUND ], + [ 1, MoveId.SPLASH ], + [ 4, MoveId.DEFENSE_CURL ], + [ 8, MoveId.BABY_DOLL_EYES ], + [ 12, MoveId.AFTER_YOU ], + [ 16, MoveId.QUICK_ATTACK ], + [ 20, MoveId.DOUBLE_KICK ], + [ 24, MoveId.CHARM ], + [ 28, MoveId.BATON_PASS ], + [ 32, MoveId.HEADBUTT ], + [ 36, MoveId.AGILITY ], + [ 40, MoveId.ENTRAINMENT ], + [ 44, MoveId.FLATTER ], + [ 48, MoveId.BOUNCE ], + [ 52, MoveId.HEALING_WISH ], + ], + [SpeciesId.LOPUNNY]: [ + [ EVOLVE_MOVE, MoveId.RETURN ], + [ 1, MoveId.FRUSTRATION ], // Previous Stage Move + [ 1, MoveId.POUND ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.MIRROR_COAT ], + [ 1, MoveId.MAGIC_COAT ], + [ 1, MoveId.BABY_DOLL_EYES ], + [ 1, MoveId.ROTOTILLER ], + [ 12, MoveId.AFTER_YOU ], + [ 16, MoveId.QUICK_ATTACK ], + [ 20, MoveId.DOUBLE_KICK ], + [ 24, MoveId.CHARM ], + [ 28, MoveId.BATON_PASS ], + [ 32, MoveId.HEADBUTT ], + [ 36, MoveId.AGILITY ], + [ 40, MoveId.ENTRAINMENT ], + [ 44, MoveId.FLATTER ], + [ 48, MoveId.BOUNCE ], + [ 52, MoveId.HEALING_WISH ], + [ 56, MoveId.HIGH_JUMP_KICK ], + ], + [SpeciesId.MISMAGIUS]: [ // Previous Stage Relearn Learnset - [ RELEARN_MOVE, Moves.CONFUSION ], - [ RELEARN_MOVE, Moves.CONFUSE_RAY ], - [ RELEARN_MOVE, Moves.MEAN_LOOK ], - [ RELEARN_MOVE, Moves.HEX ], - [ RELEARN_MOVE, Moves.PSYBEAM ], - [ RELEARN_MOVE, Moves.PAIN_SPLIT ], - [ RELEARN_MOVE, Moves.PAYBACK ], - [ RELEARN_MOVE, Moves.SHADOW_BALL ], - [ RELEARN_MOVE, Moves.PERISH_SONG ], - [ 1, Moves.GROWL ], - [ 1, Moves.SPITE ], - [ 1, Moves.PSYWAVE ], - [ 1, Moves.LUCKY_CHANT ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.MAGICAL_LEAF ], - [ 1, Moves.POWER_GEM ], - [ 1, Moves.PHANTOM_FORCE ], - [ 1, Moves.MYSTICAL_FIRE ], - ], - [Species.HONCHKROW]: [ - [ 1, Moves.PECK ], // Previous Stage Move - [ 1, Moves.ASTONISH ], - [ 1, Moves.GUST ], // Previous Stage Move - [ 1, Moves.HAZE ], - [ 1, Moves.WING_ATTACK ], - [ 1, Moves.NIGHT_SHADE ], // Previous Stage Move - [ 1, Moves.ASSURANCE ], // Previous Stage Move - [ 1, Moves.TAUNT ], // Previous Stage Move - [ 1, Moves.MEAN_LOOK ], // Previous Stage Move - [ 1, Moves.SUCKER_PUNCH ], - [ 1, Moves.NIGHT_SLASH ], - [ 1, Moves.TORMENT ], // Previous Stage Move - [ 1, Moves.QUASH ], - [ 1, Moves.PURSUIT ], - [ 25, Moves.SWAGGER ], - [ 35, Moves.NASTY_PLOT ], - [ 45, Moves.FOUL_PLAY ], - [ 55, Moves.DARK_PULSE ], - [ 65, Moves.COMEUPPANCE ], - ], - [Species.GLAMEOW]: [ - [ 1, Moves.FAKE_OUT ], - [ 5, Moves.SCRATCH ], - [ 8, Moves.GROWL ], - [ 13, Moves.HYPNOSIS ], - [ 17, Moves.AERIAL_ACE ], - [ 20, Moves.FURY_SWIPES ], - [ 25, Moves.CHARM ], - [ 29, Moves.TAUNT ], - [ 32, Moves.RETALIATE ], - [ 37, Moves.SLASH ], - [ 41, Moves.SUCKER_PUNCH ], - [ 44, Moves.ATTRACT ], - [ 48, Moves.HONE_CLAWS ], - [ 50, Moves.PLAY_ROUGH ], - ], - [Species.PURUGLY]: [ - [ EVOLVE_MOVE, Moves.SWAGGER ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.PLAY_ROUGH ], - [ 1, Moves.SUCKER_PUNCH ], - [ 1, Moves.GROWL ], - [ 1, Moves.FAKE_OUT ], - [ 13, Moves.HYPNOSIS ], - [ 17, Moves.AERIAL_ACE ], - [ 20, Moves.FURY_SWIPES ], - [ 25, Moves.CHARM ], - [ 29, Moves.TAUNT ], - [ 32, Moves.RETALIATE ], - [ 37, Moves.SLASH ], - [ 45, Moves.BODY_SLAM ], - [ 52, Moves.ATTRACT ], - [ 60, Moves.HONE_CLAWS ], - ], - [Species.CHINGLING]: [ - [ 1, Moves.WRAP ], - [ 1, Moves.PSYWAVE ], // Custom - [ 4, Moves.GROWL ], - [ 7, Moves.ASTONISH ], - [ 10, Moves.CONFUSION ], - [ 13, Moves.YAWN ], - [ 16, Moves.LAST_RESORT ], - [ 19, Moves.ENTRAINMENT ], - [ 32, Moves.UPROAR ], - ], - [Species.STUNKY]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.POISON_GAS ], - [ 3, Moves.FEINT ], - [ 6, Moves.SMOKESCREEN ], - [ 9, Moves.ACID_SPRAY ], - [ 12, Moves.FURY_SWIPES ], - [ 15, Moves.FOCUS_ENERGY ], - [ 18, Moves.BITE ], - [ 21, Moves.VENOSHOCK ], - [ 24, Moves.SCREECH ], - [ 27, Moves.TOXIC ], - [ 30, Moves.SUCKER_PUNCH ], - [ 33, Moves.MEMENTO ], - [ 36, Moves.NIGHT_SLASH ], - [ 39, Moves.BELCH ], - [ 42, Moves.EXPLOSION ], - ], - [Species.SKUNTANK]: [ - [ EVOLVE_MOVE, Moves.FLAMETHROWER ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.FEINT ], - [ 1, Moves.ACID_SPRAY ], // Previous Stage Move - [ 12, Moves.FURY_SWIPES ], - [ 15, Moves.FOCUS_ENERGY ], - [ 18, Moves.BITE ], - [ 21, Moves.VENOSHOCK ], - [ 24, Moves.SCREECH ], - [ 27, Moves.TOXIC ], - [ 30, Moves.SUCKER_PUNCH ], - [ 33, Moves.MEMENTO ], - [ 38, Moves.NIGHT_SLASH ], - [ 43, Moves.BELCH ], - [ 48, Moves.EXPLOSION ], - ], - [Species.BRONZOR]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.CONFUSION ], - [ 4, Moves.CONFUSE_RAY ], - [ 8, Moves.PAYBACK ], - [ 12, Moves.IMPRISON ], - [ 16, Moves.GYRO_BALL ], - [ 20, Moves.HYPNOSIS ], - [ 24, Moves.SAFEGUARD ], - [ 28, Moves.EXTRASENSORY ], - [ 32, Moves.HEAVY_SLAM ], - [ 36, Moves.IRON_DEFENSE ], - [ 40, Moves.METAL_SOUND ], - [ 44, Moves.FUTURE_SIGHT ], - [ 45, Moves.HEAL_BLOCK ], - ], - [Species.BRONZONG]: [ - [ EVOLVE_MOVE, Moves.BLOCK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.SUNNY_DAY ], - [ 1, Moves.WEATHER_BALL ], - [ 1, Moves.PAYBACK ], - [ 12, Moves.IMPRISON ], - [ 16, Moves.GYRO_BALL ], - [ 20, Moves.HYPNOSIS ], - [ 24, Moves.SAFEGUARD ], - [ 28, Moves.EXTRASENSORY ], - [ 32, Moves.HEAVY_SLAM ], - [ 38, Moves.IRON_DEFENSE ], - [ 44, Moves.METAL_SOUND ], - [ 50, Moves.FUTURE_SIGHT ], - [ 52, Moves.HEAL_BLOCK ], - [ 56, Moves.RAIN_DANCE ], - ], - [Species.BONSLY]: [ - [ 1, Moves.FAKE_TEARS ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.TACKLE ], // Custom - [ 4, Moves.FLAIL ], - [ 8, Moves.ROCK_THROW ], - [ 12, Moves.BLOCK ], - [ 16, Moves.MIMIC ], - [ 20, Moves.ROCK_TOMB ], - [ 24, Moves.TEARFUL_LOOK ], - [ 28, Moves.SUCKER_PUNCH ], - [ 32, Moves.ROCK_SLIDE ], - [ 36, Moves.LOW_KICK ], - [ 40, Moves.COUNTER ], - [ 44, Moves.DOUBLE_EDGE ], - ], - [Species.MIME_JR]: [ - [ 1, Moves.POUND ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.BARRIER ], - [ 1, Moves.TICKLE ], //USUM - [ 4, Moves.BATON_PASS ], - [ 8, Moves.ENCORE ], - [ 12, Moves.CONFUSION ], - [ 16, Moves.MIMIC ], // Custom, swapped with Role Play to be closer to USUM - [ 20, Moves.PROTECT ], - [ 24, Moves.RECYCLE ], - [ 28, Moves.PSYBEAM ], - [ 32, Moves.ROLE_PLAY ], // Custom, swapped with Mimic - [ 36, Moves.LIGHT_SCREEN ], - [ 36, Moves.REFLECT ], - [ 36, Moves.SAFEGUARD ], - [ 40, Moves.SUCKER_PUNCH ], - [ 44, Moves.DAZZLING_GLEAM ], - [ 48, Moves.PSYCHIC ], - [ 52, Moves.TEETER_DANCE ], - ], - [Species.HAPPINY]: [ - [ 1, Moves.POUND ], - [ 1, Moves.COPYCAT ], - [ 4, Moves.DEFENSE_CURL ], - [ 8, Moves.SWEET_KISS ], - [ 12, Moves.DISARMING_VOICE ], - [ 16, Moves.COVET ], - [ 20, Moves.CHARM ], - ], - [Species.CHATOT]: [ - [ 1, Moves.PECK ], - [ 1, Moves.TAUNT ], - [ 1, Moves.HYPER_VOICE ], - [ 1, Moves.CHATTER ], - [ 1, Moves.CONFIDE ], - [ 5, Moves.GROWL ], - [ 9, Moves.MIRROR_MOVE ], - [ 13, Moves.SING ], - [ 17, Moves.FURY_ATTACK ], - [ 29, Moves.ROUND ], - [ 33, Moves.MIMIC ], - [ 37, Moves.ECHOED_VOICE ], - [ 41, Moves.ROOST ], - [ 45, Moves.UPROAR ], - [ 49, Moves.SYNCHRONOISE ], - [ 50, Moves.FEATHER_DANCE ], - ], - [Species.SPIRITOMB]: [ - [ 1, Moves.NIGHT_SHADE ], - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.PURSUIT ], - [ 5, Moves.SHADOW_SNEAK ], - [ 10, Moves.SPITE ], - [ 15, Moves.PAYBACK ], - [ 20, Moves.NASTY_PLOT ], - [ 25, Moves.HEX ], - [ 30, Moves.MEMENTO ], - [ 35, Moves.SUCKER_PUNCH ], - [ 40, Moves.CURSE ], - [ 45, Moves.SHADOW_BALL ], - [ 50, Moves.DARK_PULSE ], - [ 55, Moves.HYPNOSIS ], - [ 60, Moves.DREAM_EATER ], - ], - [Species.GIBLE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.SAND_TOMB ], - [ 6, Moves.SAND_ATTACK ], - [ 12, Moves.DRAGON_BREATH ], - [ 18, Moves.BULLDOZE ], - [ 25, Moves.BITE ], - [ 30, Moves.SLASH ], - [ 36, Moves.DRAGON_CLAW ], - [ 42, Moves.DIG ], - [ 48, Moves.SANDSTORM ], - [ 54, Moves.TAKE_DOWN ], - [ 60, Moves.DRAGON_RUSH ], - ], - [Species.GABITE]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.SAND_TOMB ], - [ 1, Moves.DUAL_CHOP ], - [ 18, Moves.BULLDOZE ], - [ 27, Moves.BITE ], - [ 34, Moves.SLASH ], - [ 42, Moves.DRAGON_CLAW ], - [ 50, Moves.DIG ], - [ 58, Moves.SANDSTORM ], - [ 66, Moves.TAKE_DOWN ], - [ 74, Moves.DRAGON_RUSH ], - ], - [Species.GARCHOMP]: [ - [ EVOLVE_MOVE, Moves.CRUNCH ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.SAND_TOMB ], - [ 1, Moves.DUAL_CHOP ], - [ 18, Moves.BULLDOZE ], - [ 27, Moves.BITE ], - [ 34, Moves.SLASH ], - [ 42, Moves.DRAGON_CLAW ], - [ 52, Moves.DIG ], - [ 62, Moves.SANDSTORM ], - [ 72, Moves.TAKE_DOWN ], - [ 82, Moves.DRAGON_RUSH ], - ], - [Species.MUNCHLAX]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LICK ], - [ 1, Moves.ODOR_SLEUTH ], - [ 4, Moves.DEFENSE_CURL ], - [ 8, Moves.RECYCLE ], - [ 12, Moves.COVET ], - [ 16, Moves.BITE ], - [ 20, Moves.STOCKPILE ], - [ 20, Moves.SWALLOW ], - [ 24, Moves.SCREECH ], - [ 28, Moves.BODY_SLAM ], - [ 32, Moves.FLING ], - [ 36, Moves.AMNESIA ], - [ 40, Moves.METRONOME ], - [ 44, Moves.FLAIL ], - [ 48, Moves.BELLY_DRUM ], - [ 52, Moves.LAST_RESORT ], - ], - [Species.RIOLU]: [ - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.ENDURE ], - [ 4, Moves.FEINT ], - [ 8, Moves.METAL_CLAW ], - [ 12, Moves.COUNTER ], - [ 16, Moves.WORK_UP ], - [ 20, Moves.ROCK_SMASH ], - [ 24, Moves.VACUUM_WAVE ], - [ 28, Moves.SCREECH ], - [ 32, Moves.QUICK_GUARD ], - [ 36, Moves.FORCE_PALM ], - [ 40, Moves.SWORDS_DANCE ], - [ 44, Moves.HELPING_HAND ], - [ 48, Moves.COPYCAT ], - [ 52, Moves.FINAL_GAMBIT ], - [ 56, Moves.REVERSAL ], - ], - [Species.LUCARIO]: [ - [ EVOLVE_MOVE, Moves.AURA_SPHERE ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.ENDURE ], // Previous Stage Move - [ 1, Moves.SCREECH ], - [ 1, Moves.REVERSAL ], - [ 1, Moves.DETECT ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.ROCK_SMASH ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.FEINT ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.VACUUM_WAVE ], - [ 1, Moves.FINAL_GAMBIT ], - [ 1, Moves.LIFE_DEW ], - [ 12, Moves.COUNTER ], - [ 16, Moves.WORK_UP ], - [ 20, Moves.FORCE_PALM ], - [ 24, Moves.CALM_MIND ], - [ 28, Moves.METAL_SOUND ], - [ 32, Moves.QUICK_GUARD ], - [ 36, Moves.BONE_RUSH ], - [ 40, Moves.SWORDS_DANCE ], - [ 44, Moves.HEAL_PULSE ], - [ 48, Moves.METEOR_MASH ], - [ 52, Moves.DRAGON_PULSE ], - [ 56, Moves.EXTREME_SPEED ], - [ 60, Moves.CLOSE_COMBAT ], - ], - [Species.HIPPOPOTAS]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 4, Moves.BITE ], - [ 8, Moves.YAWN ], - [ 12, Moves.SAND_TOMB ], - [ 16, Moves.DIG ], - [ 20, Moves.CRUNCH ], - [ 24, Moves.SANDSTORM ], - [ 28, Moves.TAKE_DOWN ], - [ 32, Moves.ROAR ], - [ 36, Moves.REST ], - [ 40, Moves.EARTHQUAKE ], - [ 44, Moves.DOUBLE_EDGE ], - [ 48, Moves.FISSURE ], - [ 52, Moves.SLACK_OFF ], - ], - [Species.HIPPOWDON]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.BITE ], - [ 1, Moves.YAWN ], - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.FIRE_FANG ], - [ 12, Moves.SAND_TOMB ], - [ 16, Moves.DIG ], - [ 20, Moves.CRUNCH ], - [ 24, Moves.SANDSTORM ], - [ 28, Moves.TAKE_DOWN ], - [ 32, Moves.ROAR ], - [ 38, Moves.REST ], - [ 44, Moves.EARTHQUAKE ], - [ 50, Moves.DOUBLE_EDGE ], - [ 56, Moves.FISSURE ], - [ 62, Moves.SLACK_OFF ], - ], - [Species.SKORUPI]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.LEER ], - [ 3, Moves.HONE_CLAWS ], - [ 6, Moves.FELL_STINGER ], - [ 9, Moves.POISON_FANG ], - [ 12, Moves.BITE ], - [ 15, Moves.TOXIC_SPIKES ], - [ 18, Moves.BUG_BITE ], - [ 21, Moves.VENOSHOCK ], - [ 24, Moves.KNOCK_OFF ], - [ 27, Moves.SCARY_FACE ], - [ 30, Moves.PIN_MISSILE ], - [ 33, Moves.TOXIC ], - [ 36, Moves.NIGHT_SLASH ], - [ 39, Moves.CROSS_POISON ], - [ 42, Moves.X_SCISSOR ], - [ 45, Moves.ACUPRESSURE ], - [ 48, Moves.CRUNCH ], - ], - [Species.DRAPION]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.LEER ], - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.FIRE_FANG ], - [ 1, Moves.HONE_CLAWS ], - [ 1, Moves.FELL_STINGER ], - [ 9, Moves.POISON_FANG ], - [ 12, Moves.BITE ], - [ 15, Moves.TOXIC_SPIKES ], - [ 18, Moves.BUG_BITE ], - [ 21, Moves.VENOSHOCK ], - [ 24, Moves.KNOCK_OFF ], - [ 27, Moves.SCARY_FACE ], - [ 30, Moves.PIN_MISSILE ], - [ 33, Moves.TOXIC ], - [ 36, Moves.NIGHT_SLASH ], - [ 39, Moves.CROSS_POISON ], - [ 44, Moves.X_SCISSOR ], - [ 49, Moves.ACUPRESSURE ], - [ 54, Moves.CRUNCH ], - ], - [Species.CROAGUNK]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.MUD_SLAP ], - [ 4, Moves.ASTONISH ], - [ 8, Moves.TAUNT ], - [ 12, Moves.FLATTER ], - [ 16, Moves.LOW_KICK ], - [ 20, Moves.VENOSHOCK ], - [ 24, Moves.SUCKER_PUNCH ], - [ 28, Moves.SWAGGER ], - [ 32, Moves.POISON_JAB ], - [ 36, Moves.TOXIC ], - [ 40, Moves.NASTY_PLOT ], - [ 44, Moves.SLUDGE_BOMB ], - [ 48, Moves.BELCH ], - ], - [Species.TOXICROAK]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.TAUNT ], - [ 1, Moves.ASTONISH ], - [ 12, Moves.FLATTER ], - [ 16, Moves.LOW_KICK ], - [ 20, Moves.VENOSHOCK ], - [ 24, Moves.SUCKER_PUNCH ], - [ 28, Moves.SWAGGER ], - [ 32, Moves.POISON_JAB ], - [ 36, Moves.TOXIC ], - [ 42, Moves.NASTY_PLOT ], - [ 48, Moves.SLUDGE_BOMB ], - [ 54, Moves.BELCH ], - ], - [Species.CARNIVINE]: [ - [ 1, Moves.BIND ], - [ 1, Moves.GROWTH ], - [ 1, Moves.LEAFAGE ], // Custom - [ 7, Moves.BITE ], - [ 11, Moves.VINE_WHIP ], - [ 17, Moves.SWEET_SCENT ], - [ 21, Moves.INGRAIN ], - [ 27, Moves.GRASS_KNOT ], - [ 31, Moves.LEAF_TORNADO ], - [ 37, Moves.STOCKPILE ], - [ 37, Moves.SPIT_UP ], - [ 37, Moves.SWALLOW ], - [ 41, Moves.CRUNCH ], - [ 47, Moves.SEED_BOMB ], - [ 50, Moves.POWER_WHIP ], - ], - [Species.FINNEON]: [ - [ 1, Moves.POUND ], - [ 6, Moves.WATER_GUN ], - [ 13, Moves.RAIN_DANCE ], - [ 17, Moves.GUST ], - [ 22, Moves.WATER_PULSE ], - [ 26, Moves.ATTRACT ], - [ 29, Moves.SAFEGUARD ], - [ 33, Moves.AQUA_RING ], - [ 38, Moves.WHIRLPOOL ], - [ 42, Moves.U_TURN ], - [ 45, Moves.BOUNCE ], - [ 49, Moves.TAILWIND ], - [ 54, Moves.SOAK ], - ], - [Species.LUMINEON]: [ - [ 1, Moves.POUND ], - [ 1, Moves.GUST ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.SOAK ], - [ 13, Moves.RAIN_DANCE ], - [ 22, Moves.WATER_PULSE ], - [ 26, Moves.ATTRACT ], - [ 29, Moves.SAFEGUARD ], - [ 35, Moves.AQUA_RING ], - [ 42, Moves.WHIRLPOOL ], - [ 48, Moves.U_TURN ], - [ 53, Moves.BOUNCE ], - [ 59, Moves.TAILWIND ], - ], - [Species.MANTYKE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.WATER_GUN ], - [ 4, Moves.SUPERSONIC ], - [ 8, Moves.WING_ATTACK ], - [ 12, Moves.WATER_PULSE ], - [ 16, Moves.WIDE_GUARD ], - [ 20, Moves.AGILITY ], - [ 24, Moves.BUBBLE_BEAM ], - [ 28, Moves.HEADBUTT ], - [ 32, Moves.AIR_SLASH ], - [ 36, Moves.AQUA_RING ], - [ 40, Moves.BOUNCE ], - [ 44, Moves.TAKE_DOWN ], - [ 48, Moves.HYDRO_PUMP ], - ], - [Species.SNOVER]: [ - [ 1, Moves.LEER ], - [ 1, Moves.POWDER_SNOW ], - [ 5, Moves.LEAFAGE ], - [ 10, Moves.MIST ], - [ 15, Moves.ICE_SHARD ], - [ 20, Moves.RAZOR_LEAF ], - [ 25, Moves.ICY_WIND ], - [ 30, Moves.SWAGGER ], - [ 35, Moves.INGRAIN ], - [ 41, Moves.WOOD_HAMMER ], - [ 45, Moves.BLIZZARD ], - [ 50, Moves.SHEER_COLD ], - ], - [Species.ABOMASNOW]: [ - [ EVOLVE_MOVE, Moves.ICE_PUNCH ], - [ 1, Moves.LEER ], - [ 1, Moves.MIST ], - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.LEAFAGE ], - [ 1, Moves.AURORA_VEIL ], - [ 15, Moves.ICE_SHARD ], - [ 20, Moves.RAZOR_LEAF ], - [ 25, Moves.ICY_WIND ], - [ 30, Moves.SWAGGER ], - [ 35, Moves.INGRAIN ], - [ 43, Moves.WOOD_HAMMER ], - [ 49, Moves.BLIZZARD ], - [ 56, Moves.SHEER_COLD ], - ], - [Species.WEAVILE]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.AGILITY ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.SLASH ], - [ 1, Moves.BEAT_UP ], - [ 1, Moves.TAUNT ], - [ 1, Moves.ASSURANCE ], - [ 1, Moves.ICE_SHARD ], - [ 1, Moves.EMBARGO ], - [ 18, Moves.METAL_CLAW ], - [ 24, Moves.ICY_WIND ], - [ 30, Moves.FURY_SWIPES ], - [ 36, Moves.HONE_CLAWS ], - [ 42, Moves.FLING ], - [ 48, Moves.NASTY_PLOT ], - [ 54, Moves.SCREECH ], - [ 60, Moves.NIGHT_SLASH ], - [ 66, Moves.DARK_PULSE ], - ], - [Species.MAGNEZONE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.BARRIER ], - [ 1, Moves.TRI_ATTACK ], - [ 1, Moves.MIRROR_COAT ], - [ 1, Moves.MAGNETIC_FLUX ], - [ 1, Moves.ELECTRIC_TERRAIN ], - [ 12, Moves.ELECTRO_BALL ], - [ 16, Moves.GYRO_BALL ], - [ 20, Moves.SPARK ], - [ 24, Moves.SCREECH ], - [ 28, Moves.MAGNET_RISE ], - [ 34, Moves.FLASH_CANNON ], - [ 40, Moves.DISCHARGE ], - [ 46, Moves.METAL_SOUND ], - [ 52, Moves.LIGHT_SCREEN ], - [ 58, Moves.LOCK_ON ], - [ 64, Moves.ZAP_CANNON ], - ], - [Species.LICKILICKY]: [ - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.LICK ], - [ 1, Moves.TACKLE ], // Previous Stage Move, Custom - [ 1, Moves.ROLLOUT ], - [ 1, Moves.WRING_OUT ], - [ 6, Moves.REST ], - [ 18, Moves.WRAP ], - [ 24, Moves.DISABLE ], - [ 30, Moves.STOMP ], - [ 36, Moves.KNOCK_OFF ], - [ 42, Moves.SCREECH ], - [ 48, Moves.SLAM ], - [ 54, Moves.POWER_WHIP ], - [ 60, Moves.BELLY_DRUM ], - ], - [Species.RHYPERIOR]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.HAMMER_ARM ], - [ 1, Moves.SMACK_DOWN ], - [ 1, Moves.BULLDOZE ], - [ 15, Moves.HORN_ATTACK ], - [ 20, Moves.SCARY_FACE ], - [ 25, Moves.STOMP ], - [ 30, Moves.ROCK_BLAST ], - [ 35, Moves.DRILL_RUN ], - [ 40, Moves.TAKE_DOWN ], - [ 47, Moves.EARTHQUAKE ], - [ 54, Moves.STONE_EDGE ], - [ 61, Moves.MEGAHORN ], - [ 68, Moves.HORN_DRILL ], - [ 75, Moves.ROCK_WRECKER ], - ], - [Species.TANGROWTH]: [ - [ 1, Moves.BIND ], - [ 1, Moves.ABSORB ], - [ 1, Moves.GROWTH ], - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.BLOCK ], - [ 1, Moves.CONSTRICT ], - [ 12, Moves.MEGA_DRAIN ], - [ 16, Moves.VINE_WHIP ], - [ 20, Moves.POISON_POWDER ], - [ 24, Moves.DOUBLE_HIT ], - [ 28, Moves.KNOCK_OFF ], - [ 32, Moves.GIGA_DRAIN ], - [ 34, Moves.ANCIENT_POWER ], - [ 36, Moves.SLEEP_POWDER ], - [ 40, Moves.SLAM ], - [ 44, Moves.TICKLE ], - [ 48, Moves.POWER_WHIP ], - [ 52, Moves.INGRAIN ], - [ 56, Moves.GRASSY_TERRAIN ], - ], - [Species.ELECTIVIRE]: [ - [ 1, Moves.LEER ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.CHARGE ], - [ 1, Moves.ION_DELUGE ], - [ 12, Moves.SWIFT ], - [ 16, Moves.SHOCK_WAVE ], - [ 20, Moves.THUNDER_WAVE ], - [ 24, Moves.SCREECH ], - [ 28, Moves.THUNDER_PUNCH ], - [ 34, Moves.DISCHARGE ], - [ 40, Moves.LOW_KICK ], - [ 46, Moves.THUNDERBOLT ], - [ 52, Moves.LIGHT_SCREEN ], - [ 58, Moves.THUNDER ], - [ 64, Moves.GIGA_IMPACT ], - ], - [Species.MAGMORTAR]: [ - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.SMOG ], - [ 12, Moves.CLEAR_SMOG ], - [ 16, Moves.FLAME_WHEEL ], - [ 20, Moves.CONFUSE_RAY ], - [ 24, Moves.SCARY_FACE ], - [ 28, Moves.FIRE_PUNCH ], - [ 34, Moves.LAVA_PLUME ], - [ 40, Moves.LOW_KICK ], - [ 46, Moves.FLAMETHROWER ], - [ 52, Moves.SUNNY_DAY ], - [ 58, Moves.FIRE_BLAST ], - [ 64, Moves.HYPER_BEAM ], - ], - [Species.TOGEKISS]: [ - [ EVOLVE_MOVE, Moves.AIR_SLASH ], - [ 1, Moves.POUND ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.GROWL ], - [ 1, Moves.METRONOME ], - [ 1, Moves.SKY_ATTACK ], - [ 1, Moves.TRI_ATTACK ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.SAFEGUARD ], - [ 1, Moves.BATON_PASS ], - [ 1, Moves.EXTREME_SPEED ], - [ 1, Moves.ANCIENT_POWER ], - [ 1, Moves.FOLLOW_ME ], - [ 1, Moves.WISH ], - [ 1, Moves.YAWN ], - [ 1, Moves.LAST_RESORT ], - [ 1, Moves.AURA_SPHERE ], - [ 1, Moves.AFTER_YOU ], - [ 1, Moves.FAIRY_WIND ], - [ 1, Moves.LIFE_DEW ], - ], - [Species.YANMEGA]: [ - [ RELEARN_MOVE, Moves.HYPNOSIS ], - [ 1, Moves.TACKLE ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.AIR_CUTTER ], // Previous Stage Move - [ 1, Moves.NIGHT_SLASH ], - [ 1, Moves.WING_ATTACK ], // Previous Stage Move - [ 1, Moves.AIR_SLASH ], - [ 1, Moves.BUG_BUZZ ], - [ 14, Moves.QUICK_ATTACK ], - [ 17, Moves.DETECT ], - [ 22, Moves.SUPERSONIC ], - [ 27, Moves.UPROAR ], - [ 30, Moves.BUG_BITE ], - [ 33, Moves.ANCIENT_POWER ], - [ 38, Moves.FEINT ], - [ 43, Moves.SLASH ], - [ 46, Moves.SCREECH ], - [ 49, Moves.U_TURN ], - ], - [Species.LEAFEON]: [ - [ EVOLVE_MOVE, Moves.SAPPY_SEED ], - [ RELEARN_MOVE, Moves.VEEVEE_VOLLEY ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.BITE ], - [ 1, Moves.GROWL ], - [ 1, Moves.SWIFT ], - [ 1, Moves.CHARM ], - [ 1, Moves.BATON_PASS ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.COVET ], - [ 1, Moves.COPYCAT ], - [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.RAZOR_LEAF ], - [ 15, Moves.QUICK_ATTACK ], - [ 20, Moves.BABY_DOLL_EYES ], - [ 25, Moves.LEECH_SEED ], - [ 30, Moves.MAGICAL_LEAF ], - [ 35, Moves.SYNTHESIS ], - [ 40, Moves.SUNNY_DAY ], - [ 45, Moves.GIGA_DRAIN ], - [ 50, Moves.SWORDS_DANCE ], - [ 55, Moves.LEAF_BLADE ], - [ 60, Moves.LAST_RESORT ], - ], - [Species.GLACEON]: [ - [ EVOLVE_MOVE, Moves.FREEZY_FROST ], - [ RELEARN_MOVE, Moves.VEEVEE_VOLLEY ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.SWIFT ], - [ 1, Moves.CHARM ], - [ 1, Moves.BATON_PASS ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.COVET ], - [ 1, Moves.COPYCAT ], - [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.ICY_WIND ], - [ 15, Moves.QUICK_ATTACK ], - [ 20, Moves.BABY_DOLL_EYES ], - [ 25, Moves.ICE_SHARD ], - [ 30, Moves.BITE ], - [ 35, Moves.ICE_FANG ], - [ 40, Moves.SNOWSCAPE ], - [ 45, Moves.FREEZE_DRY ], - [ 50, Moves.MIRROR_COAT ], - [ 55, Moves.BLIZZARD ], - [ 60, Moves.LAST_RESORT ], - ], - [Species.GLISCOR]: [ - [ 1, Moves.POISON_STING ], // Previous Stage Move - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.HARDEN ], - [ 1, Moves.POISON_TAIL ], // Previous Stage Move - [ 1, Moves.SLASH ], // Previous Stage Move - [ 1, Moves.POISON_JAB ], - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.FIRE_FANG ], - [ 13, Moves.QUICK_ATTACK ], - [ 16, Moves.FURY_CUTTER ], - [ 19, Moves.KNOCK_OFF ], - [ 22, Moves.ACROBATICS ], - [ 27, Moves.NIGHT_SLASH ], - [ 30, Moves.U_TURN ], - [ 35, Moves.SCREECH ], - [ 40, Moves.X_SCISSOR ], - [ 45, Moves.CRABHAMMER ], - [ 50, Moves.SWORDS_DANCE ], - ], - [Species.MAMOSWINE]: [ - [ EVOLVE_MOVE, Moves.DOUBLE_HIT ], - [ 1, Moves.TACKLE ], - [ 1, Moves.FLAIL ], - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.ODOR_SLEUTH ], - [ 1, Moves.ANCIENT_POWER ], - [ 1, Moves.ICE_FANG ], - [ 15, Moves.ICE_SHARD ], - [ 20, Moves.MIST ], - [ 25, Moves.ENDURE ], - [ 30, Moves.ICY_WIND ], - [ 37, Moves.AMNESIA ], - [ 44, Moves.TAKE_DOWN ], - [ 51, Moves.EARTHQUAKE ], - [ 58, Moves.BLIZZARD ], - [ 65, Moves.THRASH ], - ], - [Species.PORYGON_Z]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.CONVERSION ], - [ 1, Moves.RECYCLE ], - [ 1, Moves.MAGNET_RISE ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.TRICK_ROOM ], - [ 15, Moves.THUNDER_SHOCK ], - [ 20, Moves.PSYBEAM ], - [ 25, Moves.CONVERSION_2 ], - [ 30, Moves.AGILITY ], - [ 35, Moves.RECOVER ], - [ 40, Moves.DISCHARGE ], - [ 45, Moves.TRI_ATTACK ], - [ 50, Moves.MAGIC_COAT ], - [ 55, Moves.LOCK_ON ], - [ 60, Moves.ZAP_CANNON ], - [ 65, Moves.HYPER_BEAM ], - ], - [Species.GALLADE]: [ - [ EVOLVE_MOVE, Moves.SLASH ], - [ 1, Moves.LEER ], - [ 1, Moves.GROWL ], - [ 1, Moves.PSYBEAM ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.PSYCHIC ], - [ 1, Moves.HYPNOSIS ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.DREAM_EATER ], - [ 1, Moves.CHARM ], - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.FUTURE_SIGHT ], - [ 1, Moves.IMPRISON ], - [ 1, Moves.CALM_MIND ], - [ 1, Moves.LEAF_BLADE ], - [ 1, Moves.NIGHT_SLASH ], - [ 1, Moves.SACRED_SWORD ], - [ 1, Moves.DISARMING_VOICE ], - [ 1, Moves.DRAINING_KISS ], - [ 1, Moves.LIFE_DEW ], - [ 1, Moves.AQUA_CUTTER ], - [ 9, Moves.HELPING_HAND ], - [ 12, Moves.FEINT ], - [ 15, Moves.TELEPORT ], - [ 18, Moves.AERIAL_ACE ], - [ 23, Moves.FALSE_SWIPE ], - [ 28, Moves.PROTECT ], - [ 35, Moves.SWORDS_DANCE ], - [ 42, Moves.PSYCHO_CUT ], - [ 49, Moves.HEAL_PULSE ], - [ 56, Moves.WIDE_GUARD ], - [ 56, Moves.QUICK_GUARD ], - [ 63, Moves.CLOSE_COMBAT ], - ], - [Species.PROBOPASS]: [ - [ EVOLVE_MOVE, Moves.TRI_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], // Previous Stage Move - [ 1, Moves.IRON_DEFENSE ], - [ 1, Moves.BLOCK ], - [ 1, Moves.ROCK_THROW ], // Previous Stage Move - [ 1, Moves.GRAVITY ], - [ 1, Moves.MAGNET_RISE ], - [ 1, Moves.WIDE_GUARD ], - [ 1, Moves.MAGNETIC_FLUX ], - [ 13, Moves.THUNDER_WAVE ], - [ 16, Moves.REST ], - [ 19, Moves.SPARK ], - [ 22, Moves.ROCK_SLIDE ], - [ 25, Moves.POWER_GEM ], - [ 28, Moves.ROCK_BLAST ], - [ 31, Moves.DISCHARGE ], - [ 34, Moves.SANDSTORM ], - [ 37, Moves.EARTH_POWER ], - [ 40, Moves.STONE_EDGE ], - [ 43, Moves.ZAP_CANNON ], - [ 43, Moves.LOCK_ON ], - ], - [Species.DUSKNOIR]: [ - [ 1, Moves.FIRE_PUNCH ], - [ 1, Moves.ICE_PUNCH ], - [ 1, Moves.THUNDER_PUNCH ], - [ 1, Moves.BIND ], - [ 1, Moves.LEER ], - [ 1, Moves.DISABLE ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.PURSUIT ], // Previous Stage Move, Custom - [ 1, Moves.SHADOW_PUNCH ], - [ 1, Moves.GRAVITY ], - [ 1, Moves.SHADOW_SNEAK ], - [ 12, Moves.CONFUSE_RAY ], - [ 16, Moves.NIGHT_SHADE ], - [ 20, Moves.PAYBACK ], - [ 24, Moves.WILL_O_WISP ], - [ 28, Moves.MEAN_LOOK ], - [ 32, Moves.HEX ], - [ 36, Moves.CURSE ], - [ 42, Moves.SHADOW_BALL ], - [ 48, Moves.FUTURE_SIGHT ], - [ 54, Moves.DESTINY_BOND ], - ], - [Species.FROSLASS]: [ - [ EVOLVE_MOVE, Moves.HEX ], - [ 1, Moves.HEADBUTT ], - [ 1, Moves.LEER ], - [ 1, Moves.BITE ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.PROTECT ], - [ 1, Moves.DESTINY_BOND ], - [ 1, Moves.WEATHER_BALL ], // Previous Stage Move - [ 1, Moves.CRUNCH ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.OMINOUS_WIND ], - [ 15, Moves.ICE_SHARD ], - [ 20, Moves.DRAINING_KISS ], - [ 25, Moves.ICY_WIND ], - [ 30, Moves.FROST_BREATH ], - [ 35, Moves.CONFUSE_RAY ], - [ 40, Moves.SNOWSCAPE ], - [ 47, Moves.WILL_O_WISP ], - [ 54, Moves.AURORA_VEIL ], - [ 61, Moves.SHADOW_BALL ], - [ 68, Moves.BLIZZARD ], - ], - [Species.ROTOM]: [ - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.ASTONISH ], - [ 5, Moves.THUNDER_SHOCK ], - [ 10, Moves.CONFUSE_RAY ], - [ 15, Moves.CHARGE ], - [ 20, Moves.ELECTRO_BALL ], - [ 25, Moves.THUNDER_WAVE ], - [ 30, Moves.SHOCK_WAVE ], - [ 35, Moves.HEX ], - [ 40, Moves.SUBSTITUTE ], - [ 45, Moves.TRICK ], - [ 50, Moves.DISCHARGE ], - [ 55, Moves.UPROAR ], - ], - [Species.UXIE]: [ - [ RELEARN_MOVE, Moves.TRI_ATTACK ], - [ RELEARN_MOVE, Moves.SNORE ], - [ RELEARN_MOVE, Moves.SAFEGUARD ], - [ RELEARN_MOVE, Moves.IRON_TAIL ], - [ RELEARN_MOVE, Moves.PSYCHO_CUT ], - [ RELEARN_MOVE, Moves.WONDER_ROOM ], - [ RELEARN_MOVE, Moves.MAGIC_ROOM ], - [ RELEARN_MOVE, Moves.ROUND ], - [ RELEARN_MOVE, Moves.ALLY_SWITCH ], - [ RELEARN_MOVE, Moves.EXPANDING_FORCE ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.REST ], - [ 7, Moves.SWIFT ], - [ 14, Moves.ENDURE ], - [ 21, Moves.PSYBEAM ], - [ 28, Moves.IMPRISON ], - [ 35, Moves.EXTRASENSORY ], - [ 42, Moves.AMNESIA ], - [ 49, Moves.PSYCHIC ], - [ 56, Moves.YAWN ], - [ 63, Moves.FUTURE_SIGHT ], - [ 70, Moves.FLAIL ], - [ 77, Moves.MEMENTO ], - [ 84, Moves.MYSTICAL_POWER ], - ], - [Species.MESPRIT]: [ - [ RELEARN_MOVE, Moves.TRI_ATTACK ], - [ RELEARN_MOVE, Moves.SNORE ], - [ RELEARN_MOVE, Moves.SAFEGUARD ], - [ RELEARN_MOVE, Moves.IRON_TAIL ], - [ RELEARN_MOVE, Moves.PSYCHO_CUT ], - [ RELEARN_MOVE, Moves.WONDER_ROOM ], - [ RELEARN_MOVE, Moves.MAGIC_ROOM ], - [ RELEARN_MOVE, Moves.ROUND ], - [ RELEARN_MOVE, Moves.ALLY_SWITCH ], - [ RELEARN_MOVE, Moves.EXPANDING_FORCE ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.REST ], - [ 7, Moves.SWIFT ], - [ 14, Moves.PROTECT ], - [ 21, Moves.PSYBEAM ], - [ 28, Moves.IMPRISON ], - [ 35, Moves.EXTRASENSORY ], - [ 42, Moves.CHARM ], - [ 49, Moves.PSYCHIC ], - [ 56, Moves.FLATTER ], - [ 63, Moves.FUTURE_SIGHT ], - [ 70, Moves.COPYCAT ], - [ 77, Moves.HEALING_WISH ], - [ 84, Moves.MYSTICAL_POWER ], - ], - [Species.AZELF]: [ - [ RELEARN_MOVE, Moves.SELF_DESTRUCT ], - [ RELEARN_MOVE, Moves.TRI_ATTACK ], - [ RELEARN_MOVE, Moves.SNORE ], - [ RELEARN_MOVE, Moves.SAFEGUARD ], - [ RELEARN_MOVE, Moves.IRON_TAIL ], - [ RELEARN_MOVE, Moves.PAYBACK ], - [ RELEARN_MOVE, Moves.ASSURANCE ], - [ RELEARN_MOVE, Moves.PSYCHO_CUT ], - [ RELEARN_MOVE, Moves.WONDER_ROOM ], - [ RELEARN_MOVE, Moves.MAGIC_ROOM ], - [ RELEARN_MOVE, Moves.ROUND ], - [ RELEARN_MOVE, Moves.ALLY_SWITCH ], - [ RELEARN_MOVE, Moves.EXPANDING_FORCE ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.REST ], - [ 7, Moves.SWIFT ], - [ 14, Moves.DETECT ], - [ 21, Moves.PSYBEAM ], - [ 28, Moves.IMPRISON ], - [ 35, Moves.EXTRASENSORY ], - [ 42, Moves.NASTY_PLOT ], - [ 49, Moves.PSYCHIC ], - [ 56, Moves.UPROAR ], - [ 63, Moves.FUTURE_SIGHT ], - [ 70, Moves.LAST_RESORT ], - [ 77, Moves.EXPLOSION ], - [ 84, Moves.MYSTICAL_POWER ], - ], - [Species.DIALGA]: [ - [ 1, Moves.SCARY_FACE ], - [ 1, Moves.METAL_CLAW ], - [ 8, Moves.DRAGON_BREATH ], - [ 16, Moves.ANCIENT_POWER ], - [ 24, Moves.SLASH ], - [ 32, Moves.FLASH_CANNON ], - [ 40, Moves.DRAGON_CLAW ], - [ 48, Moves.AURA_SPHERE ], - [ 56, Moves.POWER_GEM ], - [ 64, Moves.METAL_BURST ], - [ 72, Moves.EARTH_POWER ], - [ 80, Moves.IRON_TAIL ], - [ 88, Moves.ROAR_OF_TIME ], - ], - [Species.PALKIA]: [ - [ 1, Moves.SCARY_FACE ], - [ 1, Moves.WATER_PULSE ], - [ 8, Moves.DRAGON_BREATH ], - [ 16, Moves.ANCIENT_POWER ], - [ 24, Moves.SLASH ], - [ 32, Moves.AQUA_RING ], - [ 48, Moves.AURA_SPHERE ], - [ 56, Moves.POWER_GEM ], - [ 64, Moves.AQUA_TAIL ], - [ 72, Moves.EARTH_POWER ], - [ 80, Moves.SPACIAL_REND ], - [ 88, Moves.HYDRO_PUMP ], - ], - [Species.HEATRAN]: [ - [ 1, Moves.LEER ], - [ 1, Moves.FIRE_SPIN ], - [ 6, Moves.METAL_CLAW ], - [ 12, Moves.ANCIENT_POWER ], - [ 18, Moves.FIRE_FANG ], - [ 24, Moves.SCARY_FACE ], - [ 30, Moves.IRON_HEAD ], - [ 36, Moves.CRUNCH ], - [ 42, Moves.LAVA_PLUME ], - [ 48, Moves.METAL_SOUND ], - [ 54, Moves.EARTH_POWER ], - [ 60, Moves.HEAT_WAVE ], - [ 66, Moves.STONE_EDGE ], - [ 72, Moves.MAGMA_STORM ], - ], - [Species.REGIGIGAS]: [ - [ 1, Moves.POUND ], - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.DIZZY_PUNCH ], - [ 1, Moves.FORESIGHT ], - [ 6, Moves.PAYBACK ], - [ 12, Moves.REVENGE ], - [ 18, Moves.STOMP ], - [ 24, Moves.PROTECT ], - [ 30, Moves.KNOCK_OFF ], - [ 36, Moves.MEGA_PUNCH ], - [ 42, Moves.BODY_PRESS ], - [ 48, Moves.WIDE_GUARD ], - [ 54, Moves.ZEN_HEADBUTT ], - [ 60, Moves.HEAVY_SLAM ], - [ 66, Moves.HAMMER_ARM ], - [ 72, Moves.GIGA_IMPACT ], - [ 78, Moves.CRUSH_GRIP ], - ], - [Species.GIRATINA]: [ - [ 1, Moves.SHADOW_SNEAK ], - [ 1, Moves.DEFOG ], - [ 1, Moves.DRAGON_BREATH ], //USUM - [ 7, Moves.OMINOUS_WIND ], //USUM - [ 14, Moves.ANCIENT_POWER ], - [ 21, Moves.HEX ], - [ 28, Moves.SLASH ], - [ 35, Moves.SCARY_FACE ], - [ 42, Moves.SHADOW_CLAW ], - [ 49, Moves.PAIN_SPLIT ], - [ 56, Moves.AURA_SPHERE ], - [ 63, Moves.DRAGON_CLAW ], - [ 70, Moves.EARTH_POWER ], - [ 77, Moves.SHADOW_FORCE ], - [ 84, Moves.DESTINY_BOND ], - ], - [Species.CRESSELIA]: [ - [ 1, Moves.CONFUSION ], - [ 1, Moves.DOUBLE_TEAM ], - [ 6, Moves.MIST ], - [ 12, Moves.AURORA_BEAM ], - [ 18, Moves.PSYBEAM ], - [ 24, Moves.ALLY_SWITCH ], - [ 30, Moves.SLASH ], - [ 36, Moves.PSYCHO_CUT ], - [ 42, Moves.MOONLIGHT ], - [ 48, Moves.SAFEGUARD ], - [ 54, Moves.PSYCHIC ], - [ 60, Moves.MOONBLAST ], - [ 66, Moves.FUTURE_SIGHT ], - [ 72, Moves.LUNAR_DANCE ], - [ 72, Moves.LUNAR_BLESSING ], - ], - [Species.PHIONE]: [ - [ 1, Moves.WATER_GUN ], - [ 9, Moves.CHARM ], - [ 16, Moves.SUPERSONIC ], - [ 24, Moves.BUBBLE_BEAM ], - [ 31, Moves.ACID_ARMOR ], - [ 39, Moves.WHIRLPOOL ], - [ 46, Moves.WATER_PULSE ], - [ 54, Moves.AQUA_RING ], - [ 61, Moves.DIVE ], - [ 69, Moves.RAIN_DANCE ], - [ 75, Moves.TAKE_HEART ], - ], - [Species.MANAPHY]: [ - [ 1, Moves.HEART_SWAP ], - [ 1, Moves.TAIL_GLOW ], - [ 1, Moves.WATER_GUN ], - [ 9, Moves.CHARM ], - [ 16, Moves.SUPERSONIC ], - [ 24, Moves.BUBBLE_BEAM ], - [ 31, Moves.ACID_ARMOR ], - [ 39, Moves.WHIRLPOOL ], - [ 46, Moves.WATER_PULSE ], - [ 54, Moves.AQUA_RING ], - [ 61, Moves.DIVE ], - [ 69, Moves.RAIN_DANCE ], - [ 76, Moves.TAKE_HEART ], - ], - [Species.DARKRAI]: [ - [ 1, Moves.DISABLE ], - [ 1, Moves.OMINOUS_WIND ], - [ 1, Moves.PURSUIT ], // Custom - [ 11, Moves.QUICK_ATTACK ], - [ 20, Moves.HYPNOSIS ], - [ 29, Moves.SUCKER_PUNCH ], - [ 38, Moves.NIGHT_SHADE ], - [ 47, Moves.DOUBLE_TEAM ], - [ 57, Moves.HAZE ], - [ 66, Moves.DARK_VOID ], - [ 75, Moves.NASTY_PLOT ], - [ 84, Moves.DREAM_EATER ], - [ 93, Moves.DARK_PULSE ], - ], - [Species.SHAYMIN]: [ - [ 1, Moves.LEAFAGE ], // Custom - [ 1, Moves.GROWTH ], - [ 10, Moves.MAGICAL_LEAF ], - [ 19, Moves.LEECH_SEED ], - [ 28, Moves.SYNTHESIS ], - [ 37, Moves.SWEET_SCENT ], - [ 46, Moves.NATURAL_GIFT ], - [ 55, Moves.WORRY_SEED ], - [ 64, Moves.AROMATHERAPY ], - [ 73, Moves.ENERGY_BALL ], - [ 82, Moves.SWEET_KISS ], - [ 91, Moves.HEALING_WISH ], - [ 100, Moves.SEED_FLARE ], - ], - [Species.ARCEUS]: [ - [ 1, Moves.SEISMIC_TOSS ], - [ 1, Moves.COSMIC_POWER ], - [ 1, Moves.PUNISHMENT ], - [ 10, Moves.GRAVITY ], - [ 20, Moves.EARTH_POWER ], - [ 30, Moves.HYPER_VOICE ], - [ 40, Moves.EXTREME_SPEED ], - [ 50, Moves.HEALING_WISH ], - [ 60, Moves.FUTURE_SIGHT ], - [ 70, Moves.RECOVER ], - [ 80, Moves.HYPER_BEAM ], - [ 90, Moves.PERISH_SONG ], - [ 100, Moves.JUDGMENT ], - ], - [Species.VICTINI]: [ - [ 1, Moves.CONFUSION ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.FLAME_CHARGE ], - [ 1, Moves.V_CREATE ], - [ 7, Moves.WORK_UP ], - [ 14, Moves.INCINERATE ], - [ 21, Moves.STORED_POWER ], - [ 28, Moves.HEADBUTT ], - [ 35, Moves.ENDURE ], - [ 42, Moves.ZEN_HEADBUTT ], - [ 49, Moves.INFERNO ], - [ 56, Moves.REVERSAL ], - [ 63, Moves.SEARING_SHOT ], - [ 70, Moves.DOUBLE_EDGE ], - [ 77, Moves.FLARE_BLITZ ], - [ 84, Moves.OVERHEAT ], - [ 91, Moves.FINAL_GAMBIT ], - ], - [Species.SNIVY]: [ - [ 1, Moves.TACKLE ], - [ 4, Moves.LEER ], - [ 5, Moves.VINE_WHIP ], // Custom, moved from 7 to 5 - [ 10, Moves.WRAP ], - [ 13, Moves.GROWTH ], - [ 16, Moves.MAGICAL_LEAF ], - [ 19, Moves.LEECH_SEED ], - [ 22, Moves.MEGA_DRAIN ], - [ 25, Moves.SLAM ], - [ 28, Moves.LEAF_BLADE ], - [ 31, Moves.COIL ], - [ 34, Moves.GIGA_DRAIN ], - [ 37, Moves.GASTRO_ACID ], - [ 40, Moves.LEAF_STORM ], - ], - [Species.SERVINE]: [ - [ 1, Moves.VINE_WHIP ], - [ 1, Moves.TACKLE ], - [ 1, Moves.WRAP ], - [ 1, Moves.LEER ], - [ 13, Moves.GROWTH ], - [ 16, Moves.MAGICAL_LEAF ], - [ 20, Moves.LEECH_SEED ], - [ 24, Moves.MEGA_DRAIN ], - [ 28, Moves.SLAM ], - [ 32, Moves.LEAF_BLADE ], - [ 36, Moves.COIL ], - [ 40, Moves.GIGA_DRAIN ], - [ 44, Moves.GASTRO_ACID ], - [ 48, Moves.LEAF_STORM ], - ], - [Species.SERPERIOR]: [ - [ 1, Moves.VINE_WHIP ], - [ 1, Moves.TACKLE ], - [ 1, Moves.WRAP ], - [ 1, Moves.LEER ], - [ 13, Moves.GROWTH ], - [ 16, Moves.MAGICAL_LEAF ], - [ 20, Moves.LEECH_SEED ], - [ 24, Moves.MEGA_DRAIN ], - [ 28, Moves.SLAM ], - [ 32, Moves.LEAF_BLADE ], - [ 38, Moves.COIL ], - [ 44, Moves.GIGA_DRAIN ], - [ 50, Moves.GASTRO_ACID ], - [ 56, Moves.LEAF_STORM ], - ], - [Species.TEPIG]: [ - [ 1, Moves.TACKLE ], - [ 3, Moves.TAIL_WHIP ], - [ 5, Moves.EMBER ], // Custom, moved from 7 to 5 - [ 9, Moves.ENDURE ], - [ 13, Moves.DEFENSE_CURL ], - [ 15, Moves.FLAME_CHARGE ], - [ 19, Moves.SMOG ], - [ 21, Moves.ROLLOUT ], - [ 25, Moves.TAKE_DOWN ], - [ 27, Moves.HEAT_CRASH ], - [ 31, Moves.ASSURANCE ], - [ 33, Moves.FLAMETHROWER ], - [ 37, Moves.HEAD_SMASH ], - [ 39, Moves.ROAR ], - [ 43, Moves.FLARE_BLITZ ], - ], - [Species.PIGNITE]: [ - [ EVOLVE_MOVE, Moves.ARM_THRUST ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.EMBER ], - [ 1, Moves.ENDURE ], - [ 13, Moves.DEFENSE_CURL ], - [ 15, Moves.FLAME_CHARGE ], - [ 20, Moves.SMOG ], - [ 23, Moves.ROLLOUT ], - [ 28, Moves.TAKE_DOWN ], - [ 31, Moves.HEAT_CRASH ], - [ 36, Moves.ASSURANCE ], - [ 39, Moves.FLAMETHROWER ], - [ 44, Moves.HEAD_SMASH ], - [ 47, Moves.ROAR ], - [ 52, Moves.FLARE_BLITZ ], - ], - [Species.EMBOAR]: [ - [ RELEARN_MOVE, Moves.ENDURE ], - [ RELEARN_MOVE, Moves.HAMMER_ARM ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.EMBER ], - [ 1, Moves.ARM_THRUST ], - [ 13, Moves.DEFENSE_CURL ], - [ 15, Moves.FLAME_CHARGE ], - [ 20, Moves.SMOG ], - [ 23, Moves.ROLLOUT ], - [ 28, Moves.TAKE_DOWN ], - [ 31, Moves.HEAT_CRASH ], - [ 38, Moves.ASSURANCE ], - [ 43, Moves.FLAMETHROWER ], - [ 50, Moves.HEAD_SMASH ], - [ 55, Moves.ROAR ], - [ 62, Moves.FLARE_BLITZ ], - ], - [Species.OSHAWOTT]: [ - [ 1, Moves.TACKLE ], - [ 5, Moves.TAIL_WHIP ], - [ 5, Moves.WATER_GUN ], // Custom, moved from 7 to 5 - [ 11, Moves.SOAK ], - [ 13, Moves.FOCUS_ENERGY ], - [ 17, Moves.RAZOR_SHELL ], - [ 19, Moves.FURY_CUTTER ], - [ 23, Moves.WATER_PULSE ], - [ 25, Moves.AERIAL_ACE ], - [ 29, Moves.AQUA_JET ], - [ 31, Moves.ENCORE ], - [ 35, Moves.AQUA_TAIL ], - [ 37, Moves.RETALIATE ], - [ 41, Moves.SWORDS_DANCE ], - [ 43, Moves.HYDRO_PUMP ], - ], - [Species.DEWOTT]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.SOAK ], - [ 13, Moves.FOCUS_ENERGY ], - [ 18, Moves.RAZOR_SHELL ], - [ 21, Moves.FURY_CUTTER ], - [ 26, Moves.WATER_PULSE ], - [ 29, Moves.AERIAL_ACE ], - [ 34, Moves.AQUA_JET ], - [ 37, Moves.ENCORE ], - [ 42, Moves.AQUA_TAIL ], - [ 45, Moves.RETALIATE ], - [ 50, Moves.SWORDS_DANCE ], - [ 53, Moves.HYDRO_PUMP ], - ], - [Species.SAMUROTT]: [ - [ EVOLVE_MOVE, Moves.SLASH ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.MEGAHORN ], - [ 1, Moves.SOAK ], - [ 13, Moves.FOCUS_ENERGY ], - [ 18, Moves.RAZOR_SHELL ], - [ 21, Moves.FURY_CUTTER ], - [ 25, Moves.WATER_PULSE ], - [ 29, Moves.AERIAL_ACE ], - [ 34, Moves.AQUA_JET ], - [ 39, Moves.ENCORE ], - [ 46, Moves.AQUA_TAIL ], - [ 51, Moves.RETALIATE ], - [ 58, Moves.SWORDS_DANCE ], - [ 63, Moves.HYDRO_PUMP ], - ], - [Species.PATRAT]: [ - [ 1, Moves.TACKLE ], - [ 3, Moves.LEER ], - [ 6, Moves.BITE ], - [ 8, Moves.BIDE ], - [ 11, Moves.DETECT ], - [ 13, Moves.SAND_ATTACK ], - [ 16, Moves.CRUNCH ], - [ 18, Moves.HYPNOSIS ], - [ 21, Moves.SUPER_FANG ], - [ 23, Moves.AFTER_YOU ], - [ 26, Moves.FOCUS_ENERGY ], - [ 28, Moves.WORK_UP ], - [ 31, Moves.HYPER_FANG ], - [ 33, Moves.NASTY_PLOT ], - [ 36, Moves.MEAN_LOOK ], - [ 38, Moves.BATON_PASS ], - [ 41, Moves.SLAM ], - ], - [Species.WATCHOG]: [ - [ EVOLVE_MOVE, Moves.CONFUSE_RAY ], - [ RELEARN_MOVE, Moves.WORK_UP ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.BITE ], - [ 1, Moves.LOW_KICK ], - [ 1, Moves.ROTOTILLER ], - [ 8, Moves.BIDE ], - [ 11, Moves.DETECT ], - [ 13, Moves.SAND_ATTACK ], - [ 16, Moves.CRUNCH ], - [ 18, Moves.HYPNOSIS ], - [ 22, Moves.SUPER_FANG ], - [ 25, Moves.AFTER_YOU ], - [ 29, Moves.FOCUS_ENERGY ], - [ 32, Moves.PSYCH_UP ], - [ 36, Moves.HYPER_FANG ], - [ 39, Moves.NASTY_PLOT ], - [ 43, Moves.MEAN_LOOK ], - [ 46, Moves.BATON_PASS ], - [ 50, Moves.SLAM ], - ], - [Species.LILLIPUP]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 4, Moves.WORK_UP ], - [ 8, Moves.BITE ], - [ 12, Moves.RETALIATE ], - [ 17, Moves.BABY_DOLL_EYES ], - [ 20, Moves.PLAY_ROUGH ], - [ 24, Moves.CRUNCH ], - [ 28, Moves.TAKE_DOWN ], - [ 32, Moves.HELPING_HAND ], - [ 36, Moves.REVERSAL ], - [ 40, Moves.ROAR ], - [ 44, Moves.LAST_RESORT ], - [ 48, Moves.GIGA_IMPACT ], - ], - [Species.HERDIER]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.BITE ], - [ 1, Moves.WORK_UP ], - [ 12, Moves.RETALIATE ], - [ 19, Moves.BABY_DOLL_EYES ], - [ 24, Moves.PLAY_ROUGH ], - [ 30, Moves.CRUNCH ], - [ 36, Moves.TAKE_DOWN ], - [ 42, Moves.HELPING_HAND ], - [ 48, Moves.REVERSAL ], - [ 54, Moves.ROAR ], - [ 60, Moves.LAST_RESORT ], - [ 66, Moves.GIGA_IMPACT ], - ], - [Species.STOUTLAND]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.BITE ], - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.FIRE_FANG ], - [ 1, Moves.WORK_UP ], - [ 12, Moves.RETALIATE ], - [ 19, Moves.BABY_DOLL_EYES ], - [ 24, Moves.PLAY_ROUGH ], - [ 30, Moves.CRUNCH ], - [ 38, Moves.TAKE_DOWN ], - [ 46, Moves.HELPING_HAND ], - [ 54, Moves.REVERSAL ], - [ 62, Moves.ROAR ], - [ 70, Moves.LAST_RESORT ], - [ 78, Moves.GIGA_IMPACT ], - ], - [Species.PURRLOIN]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 4, Moves.SAND_ATTACK ], - [ 5, Moves.FAKE_OUT ], - [ 12, Moves.FURY_SWIPES ], - [ 16, Moves.TORMENT ], - [ 21, Moves.ASSURANCE ], - [ 24, Moves.HONE_CLAWS ], - [ 28, Moves.SUCKER_PUNCH ], - [ 32, Moves.NASTY_PLOT ], - [ 36, Moves.NIGHT_SLASH ], - [ 40, Moves.PLAY_ROUGH ], - ], - [Species.LIEPARD]: [ - [ 1, Moves.ASSIST ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.GROWL ], - [ 1, Moves.FAKE_OUT ], - [ 12, Moves.FURY_SWIPES ], - [ 16, Moves.TORMENT ], - [ 23, Moves.ASSURANCE ], - [ 28, Moves.HONE_CLAWS ], - [ 34, Moves.SUCKER_PUNCH ], - [ 40, Moves.NASTY_PLOT ], - [ 46, Moves.NIGHT_SLASH ], - [ 52, Moves.PLAY_ROUGH ], - ], - [Species.PANSAGE]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.PLAY_NICE ], - [ 4, Moves.LEER ], - [ 7, Moves.LICK ], - [ 10, Moves.VINE_WHIP ], - [ 13, Moves.FURY_SWIPES ], - [ 16, Moves.LEECH_SEED ], - [ 19, Moves.BITE ], - [ 22, Moves.SEED_BOMB ], - [ 25, Moves.TORMENT ], - [ 28, Moves.FLING ], - [ 31, Moves.ACROBATICS ], - [ 34, Moves.GRASS_KNOT ], - [ 37, Moves.RECYCLE ], - [ 40, Moves.NATURAL_GIFT ], - [ 43, Moves.CRUNCH ], - ], - [Species.SIMISAGE]: [ + [ RELEARN_MOVE, MoveId.CONFUSION ], + [ RELEARN_MOVE, MoveId.CONFUSE_RAY ], + [ RELEARN_MOVE, MoveId.MEAN_LOOK ], + [ RELEARN_MOVE, MoveId.HEX ], + [ RELEARN_MOVE, MoveId.PSYBEAM ], + [ RELEARN_MOVE, MoveId.PAIN_SPLIT ], + [ RELEARN_MOVE, MoveId.PAYBACK ], + [ RELEARN_MOVE, MoveId.SHADOW_BALL ], + [ RELEARN_MOVE, MoveId.PERISH_SONG ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.SPITE ], + [ 1, MoveId.PSYWAVE ], + [ 1, MoveId.LUCKY_CHANT ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.MAGICAL_LEAF ], + [ 1, MoveId.POWER_GEM ], + [ 1, MoveId.PHANTOM_FORCE ], + [ 1, MoveId.MYSTICAL_FIRE ], + ], + [SpeciesId.HONCHKROW]: [ + [ 1, MoveId.PECK ], // Previous Stage Move + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.GUST ], // Previous Stage Move + [ 1, MoveId.HAZE ], + [ 1, MoveId.WING_ATTACK ], + [ 1, MoveId.NIGHT_SHADE ], // Previous Stage Move + [ 1, MoveId.ASSURANCE ], // Previous Stage Move + [ 1, MoveId.TAUNT ], // Previous Stage Move + [ 1, MoveId.MEAN_LOOK ], // Previous Stage Move + [ 1, MoveId.SUCKER_PUNCH ], + [ 1, MoveId.NIGHT_SLASH ], + [ 1, MoveId.TORMENT ], // Previous Stage Move + [ 1, MoveId.QUASH ], + [ 1, MoveId.PURSUIT ], + [ 25, MoveId.SWAGGER ], + [ 35, MoveId.NASTY_PLOT ], + [ 45, MoveId.FOUL_PLAY ], + [ 55, MoveId.DARK_PULSE ], + [ 65, MoveId.COMEUPPANCE ], + ], + [SpeciesId.GLAMEOW]: [ + [ 1, MoveId.FAKE_OUT ], + [ 5, MoveId.SCRATCH ], + [ 8, MoveId.GROWL ], + [ 13, MoveId.HYPNOSIS ], + [ 17, MoveId.AERIAL_ACE ], + [ 20, MoveId.FURY_SWIPES ], + [ 25, MoveId.CHARM ], + [ 29, MoveId.TAUNT ], + [ 32, MoveId.RETALIATE ], + [ 37, MoveId.SLASH ], + [ 41, MoveId.SUCKER_PUNCH ], + [ 44, MoveId.ATTRACT ], + [ 48, MoveId.HONE_CLAWS ], + [ 50, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.PURUGLY]: [ + [ EVOLVE_MOVE, MoveId.SWAGGER ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.PLAY_ROUGH ], + [ 1, MoveId.SUCKER_PUNCH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.FAKE_OUT ], + [ 13, MoveId.HYPNOSIS ], + [ 17, MoveId.AERIAL_ACE ], + [ 20, MoveId.FURY_SWIPES ], + [ 25, MoveId.CHARM ], + [ 29, MoveId.TAUNT ], + [ 32, MoveId.RETALIATE ], + [ 37, MoveId.SLASH ], + [ 45, MoveId.BODY_SLAM ], + [ 52, MoveId.ATTRACT ], + [ 60, MoveId.HONE_CLAWS ], + ], + [SpeciesId.CHINGLING]: [ + [ 1, MoveId.WRAP ], + [ 1, MoveId.PSYWAVE ], // Custom + [ 4, MoveId.GROWL ], + [ 7, MoveId.ASTONISH ], + [ 10, MoveId.CONFUSION ], + [ 13, MoveId.YAWN ], + [ 16, MoveId.LAST_RESORT ], + [ 19, MoveId.ENTRAINMENT ], + [ 32, MoveId.UPROAR ], + ], + [SpeciesId.STUNKY]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.POISON_GAS ], + [ 3, MoveId.FEINT ], + [ 6, MoveId.SMOKESCREEN ], + [ 9, MoveId.ACID_SPRAY ], + [ 12, MoveId.FURY_SWIPES ], + [ 15, MoveId.FOCUS_ENERGY ], + [ 18, MoveId.BITE ], + [ 21, MoveId.VENOSHOCK ], + [ 24, MoveId.SCREECH ], + [ 27, MoveId.TOXIC ], + [ 30, MoveId.SUCKER_PUNCH ], + [ 33, MoveId.MEMENTO ], + [ 36, MoveId.NIGHT_SLASH ], + [ 39, MoveId.BELCH ], + [ 42, MoveId.EXPLOSION ], + ], + [SpeciesId.SKUNTANK]: [ + [ EVOLVE_MOVE, MoveId.FLAMETHROWER ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.ACID_SPRAY ], // Previous Stage Move + [ 12, MoveId.FURY_SWIPES ], + [ 15, MoveId.FOCUS_ENERGY ], + [ 18, MoveId.BITE ], + [ 21, MoveId.VENOSHOCK ], + [ 24, MoveId.SCREECH ], + [ 27, MoveId.TOXIC ], + [ 30, MoveId.SUCKER_PUNCH ], + [ 33, MoveId.MEMENTO ], + [ 38, MoveId.NIGHT_SLASH ], + [ 43, MoveId.BELCH ], + [ 48, MoveId.EXPLOSION ], + ], + [SpeciesId.BRONZOR]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.CONFUSION ], + [ 4, MoveId.CONFUSE_RAY ], + [ 8, MoveId.PAYBACK ], + [ 12, MoveId.IMPRISON ], + [ 16, MoveId.GYRO_BALL ], + [ 20, MoveId.HYPNOSIS ], + [ 24, MoveId.SAFEGUARD ], + [ 28, MoveId.EXTRASENSORY ], + [ 32, MoveId.HEAVY_SLAM ], + [ 36, MoveId.IRON_DEFENSE ], + [ 40, MoveId.METAL_SOUND ], + [ 44, MoveId.FUTURE_SIGHT ], + [ 45, MoveId.HEAL_BLOCK ], + ], + [SpeciesId.BRONZONG]: [ + [ EVOLVE_MOVE, MoveId.BLOCK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.SUNNY_DAY ], + [ 1, MoveId.WEATHER_BALL ], + [ 1, MoveId.PAYBACK ], + [ 12, MoveId.IMPRISON ], + [ 16, MoveId.GYRO_BALL ], + [ 20, MoveId.HYPNOSIS ], + [ 24, MoveId.SAFEGUARD ], + [ 28, MoveId.EXTRASENSORY ], + [ 32, MoveId.HEAVY_SLAM ], + [ 38, MoveId.IRON_DEFENSE ], + [ 44, MoveId.METAL_SOUND ], + [ 50, MoveId.FUTURE_SIGHT ], + [ 52, MoveId.HEAL_BLOCK ], + [ 56, MoveId.RAIN_DANCE ], + ], + [SpeciesId.BONSLY]: [ + [ 1, MoveId.FAKE_TEARS ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.TACKLE ], // Custom + [ 4, MoveId.FLAIL ], + [ 8, MoveId.ROCK_THROW ], + [ 12, MoveId.BLOCK ], + [ 16, MoveId.MIMIC ], + [ 20, MoveId.ROCK_TOMB ], + [ 24, MoveId.TEARFUL_LOOK ], + [ 28, MoveId.SUCKER_PUNCH ], + [ 32, MoveId.ROCK_SLIDE ], + [ 36, MoveId.LOW_KICK ], + [ 40, MoveId.COUNTER ], + [ 44, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.MIME_JR]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.BARRIER ], + [ 1, MoveId.TICKLE ], //USUM + [ 4, MoveId.BATON_PASS ], + [ 8, MoveId.ENCORE ], + [ 12, MoveId.CONFUSION ], + [ 16, MoveId.MIMIC ], // Custom, swapped with Role Play to be closer to USUM + [ 20, MoveId.PROTECT ], + [ 24, MoveId.RECYCLE ], + [ 28, MoveId.PSYBEAM ], + [ 32, MoveId.ROLE_PLAY ], // Custom, swapped with Mimic + [ 36, MoveId.LIGHT_SCREEN ], + [ 36, MoveId.REFLECT ], + [ 36, MoveId.SAFEGUARD ], + [ 40, MoveId.SUCKER_PUNCH ], + [ 44, MoveId.DAZZLING_GLEAM ], + [ 48, MoveId.PSYCHIC ], + [ 52, MoveId.TEETER_DANCE ], + ], + [SpeciesId.HAPPINY]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.COPYCAT ], + [ 4, MoveId.DEFENSE_CURL ], + [ 8, MoveId.SWEET_KISS ], + [ 12, MoveId.DISARMING_VOICE ], + [ 16, MoveId.COVET ], + [ 20, MoveId.CHARM ], + ], + [SpeciesId.CHATOT]: [ + [ 1, MoveId.PECK ], + [ 1, MoveId.TAUNT ], + [ 1, MoveId.HYPER_VOICE ], + [ 1, MoveId.CHATTER ], + [ 1, MoveId.CONFIDE ], + [ 5, MoveId.GROWL ], + [ 9, MoveId.MIRROR_MOVE ], + [ 13, MoveId.SING ], + [ 17, MoveId.FURY_ATTACK ], + [ 29, MoveId.ROUND ], + [ 33, MoveId.MIMIC ], + [ 37, MoveId.ECHOED_VOICE ], + [ 41, MoveId.ROOST ], + [ 45, MoveId.UPROAR ], + [ 49, MoveId.SYNCHRONOISE ], + [ 50, MoveId.FEATHER_DANCE ], + ], + [SpeciesId.SPIRITOMB]: [ + [ 1, MoveId.NIGHT_SHADE ], + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.PURSUIT ], + [ 5, MoveId.SHADOW_SNEAK ], + [ 10, MoveId.SPITE ], + [ 15, MoveId.PAYBACK ], + [ 20, MoveId.NASTY_PLOT ], + [ 25, MoveId.HEX ], + [ 30, MoveId.MEMENTO ], + [ 35, MoveId.SUCKER_PUNCH ], + [ 40, MoveId.CURSE ], + [ 45, MoveId.SHADOW_BALL ], + [ 50, MoveId.DARK_PULSE ], + [ 55, MoveId.HYPNOSIS ], + [ 60, MoveId.DREAM_EATER ], + ], + [SpeciesId.GIBLE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SAND_TOMB ], + [ 6, MoveId.SAND_ATTACK ], + [ 12, MoveId.DRAGON_BREATH ], + [ 18, MoveId.BULLDOZE ], + [ 25, MoveId.BITE ], + [ 30, MoveId.SLASH ], + [ 36, MoveId.DRAGON_CLAW ], + [ 42, MoveId.DIG ], + [ 48, MoveId.SANDSTORM ], + [ 54, MoveId.TAKE_DOWN ], + [ 60, MoveId.DRAGON_RUSH ], + ], + [SpeciesId.GABITE]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.SAND_TOMB ], + [ 1, MoveId.DUAL_CHOP ], + [ 18, MoveId.BULLDOZE ], + [ 27, MoveId.BITE ], + [ 34, MoveId.SLASH ], + [ 42, MoveId.DRAGON_CLAW ], + [ 50, MoveId.DIG ], + [ 58, MoveId.SANDSTORM ], + [ 66, MoveId.TAKE_DOWN ], + [ 74, MoveId.DRAGON_RUSH ], + ], + [SpeciesId.GARCHOMP]: [ + [ EVOLVE_MOVE, MoveId.CRUNCH ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.SAND_TOMB ], + [ 1, MoveId.DUAL_CHOP ], + [ 18, MoveId.BULLDOZE ], + [ 27, MoveId.BITE ], + [ 34, MoveId.SLASH ], + [ 42, MoveId.DRAGON_CLAW ], + [ 52, MoveId.DIG ], + [ 62, MoveId.SANDSTORM ], + [ 72, MoveId.TAKE_DOWN ], + [ 82, MoveId.DRAGON_RUSH ], + ], + [SpeciesId.MUNCHLAX]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LICK ], + [ 1, MoveId.ODOR_SLEUTH ], + [ 4, MoveId.DEFENSE_CURL ], + [ 8, MoveId.RECYCLE ], + [ 12, MoveId.COVET ], + [ 16, MoveId.BITE ], + [ 20, MoveId.STOCKPILE ], + [ 20, MoveId.SWALLOW ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.BODY_SLAM ], + [ 32, MoveId.FLING ], + [ 36, MoveId.AMNESIA ], + [ 40, MoveId.METRONOME ], + [ 44, MoveId.FLAIL ], + [ 48, MoveId.BELLY_DRUM ], + [ 52, MoveId.LAST_RESORT ], + ], + [SpeciesId.RIOLU]: [ + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.ENDURE ], + [ 4, MoveId.FEINT ], + [ 8, MoveId.METAL_CLAW ], + [ 12, MoveId.COUNTER ], + [ 16, MoveId.WORK_UP ], + [ 20, MoveId.ROCK_SMASH ], + [ 24, MoveId.VACUUM_WAVE ], + [ 28, MoveId.SCREECH ], + [ 32, MoveId.QUICK_GUARD ], + [ 36, MoveId.FORCE_PALM ], + [ 40, MoveId.SWORDS_DANCE ], + [ 44, MoveId.HELPING_HAND ], + [ 48, MoveId.COPYCAT ], + [ 52, MoveId.FINAL_GAMBIT ], + [ 56, MoveId.REVERSAL ], + ], + [SpeciesId.LUCARIO]: [ + [ EVOLVE_MOVE, MoveId.AURA_SPHERE ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.ENDURE ], // Previous Stage Move + [ 1, MoveId.SCREECH ], + [ 1, MoveId.REVERSAL ], + [ 1, MoveId.DETECT ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.ROCK_SMASH ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.VACUUM_WAVE ], + [ 1, MoveId.FINAL_GAMBIT ], + [ 1, MoveId.LIFE_DEW ], + [ 12, MoveId.COUNTER ], + [ 16, MoveId.WORK_UP ], + [ 20, MoveId.FORCE_PALM ], + [ 24, MoveId.CALM_MIND ], + [ 28, MoveId.METAL_SOUND ], + [ 32, MoveId.QUICK_GUARD ], + [ 36, MoveId.BONE_RUSH ], + [ 40, MoveId.SWORDS_DANCE ], + [ 44, MoveId.HEAL_PULSE ], + [ 48, MoveId.METEOR_MASH ], + [ 52, MoveId.DRAGON_PULSE ], + [ 56, MoveId.EXTREME_SPEED ], + [ 60, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.HIPPOPOTAS]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 4, MoveId.BITE ], + [ 8, MoveId.YAWN ], + [ 12, MoveId.SAND_TOMB ], + [ 16, MoveId.DIG ], + [ 20, MoveId.CRUNCH ], + [ 24, MoveId.SANDSTORM ], + [ 28, MoveId.TAKE_DOWN ], + [ 32, MoveId.ROAR ], + [ 36, MoveId.REST ], + [ 40, MoveId.EARTHQUAKE ], + [ 44, MoveId.DOUBLE_EDGE ], + [ 48, MoveId.FISSURE ], + [ 52, MoveId.SLACK_OFF ], + ], + [SpeciesId.HIPPOWDON]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.BITE ], + [ 1, MoveId.YAWN ], + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.FIRE_FANG ], + [ 12, MoveId.SAND_TOMB ], + [ 16, MoveId.DIG ], + [ 20, MoveId.CRUNCH ], + [ 24, MoveId.SANDSTORM ], + [ 28, MoveId.TAKE_DOWN ], + [ 32, MoveId.ROAR ], + [ 38, MoveId.REST ], + [ 44, MoveId.EARTHQUAKE ], + [ 50, MoveId.DOUBLE_EDGE ], + [ 56, MoveId.FISSURE ], + [ 62, MoveId.SLACK_OFF ], + ], + [SpeciesId.SKORUPI]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.LEER ], + [ 3, MoveId.HONE_CLAWS ], + [ 6, MoveId.FELL_STINGER ], + [ 9, MoveId.POISON_FANG ], + [ 12, MoveId.BITE ], + [ 15, MoveId.TOXIC_SPIKES ], + [ 18, MoveId.BUG_BITE ], + [ 21, MoveId.VENOSHOCK ], + [ 24, MoveId.KNOCK_OFF ], + [ 27, MoveId.SCARY_FACE ], + [ 30, MoveId.PIN_MISSILE ], + [ 33, MoveId.TOXIC ], + [ 36, MoveId.NIGHT_SLASH ], + [ 39, MoveId.CROSS_POISON ], + [ 42, MoveId.X_SCISSOR ], + [ 45, MoveId.ACUPRESSURE ], + [ 48, MoveId.CRUNCH ], + ], + [SpeciesId.DRAPION]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.LEER ], + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.FIRE_FANG ], + [ 1, MoveId.HONE_CLAWS ], + [ 1, MoveId.FELL_STINGER ], + [ 9, MoveId.POISON_FANG ], + [ 12, MoveId.BITE ], + [ 15, MoveId.TOXIC_SPIKES ], + [ 18, MoveId.BUG_BITE ], + [ 21, MoveId.VENOSHOCK ], + [ 24, MoveId.KNOCK_OFF ], + [ 27, MoveId.SCARY_FACE ], + [ 30, MoveId.PIN_MISSILE ], + [ 33, MoveId.TOXIC ], + [ 36, MoveId.NIGHT_SLASH ], + [ 39, MoveId.CROSS_POISON ], + [ 44, MoveId.X_SCISSOR ], + [ 49, MoveId.ACUPRESSURE ], + [ 54, MoveId.CRUNCH ], + ], + [SpeciesId.CROAGUNK]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.MUD_SLAP ], + [ 4, MoveId.ASTONISH ], + [ 8, MoveId.TAUNT ], + [ 12, MoveId.FLATTER ], + [ 16, MoveId.LOW_KICK ], + [ 20, MoveId.VENOSHOCK ], + [ 24, MoveId.SUCKER_PUNCH ], + [ 28, MoveId.SWAGGER ], + [ 32, MoveId.POISON_JAB ], + [ 36, MoveId.TOXIC ], + [ 40, MoveId.NASTY_PLOT ], + [ 44, MoveId.SLUDGE_BOMB ], + [ 48, MoveId.BELCH ], + ], + [SpeciesId.TOXICROAK]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.TAUNT ], + [ 1, MoveId.ASTONISH ], + [ 12, MoveId.FLATTER ], + [ 16, MoveId.LOW_KICK ], + [ 20, MoveId.VENOSHOCK ], + [ 24, MoveId.SUCKER_PUNCH ], + [ 28, MoveId.SWAGGER ], + [ 32, MoveId.POISON_JAB ], + [ 36, MoveId.TOXIC ], + [ 42, MoveId.NASTY_PLOT ], + [ 48, MoveId.SLUDGE_BOMB ], + [ 54, MoveId.BELCH ], + ], + [SpeciesId.CARNIVINE]: [ + [ 1, MoveId.BIND ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.LEAFAGE ], // Custom + [ 7, MoveId.BITE ], + [ 11, MoveId.VINE_WHIP ], + [ 17, MoveId.SWEET_SCENT ], + [ 21, MoveId.INGRAIN ], + [ 27, MoveId.GRASS_KNOT ], + [ 31, MoveId.LEAF_TORNADO ], + [ 37, MoveId.STOCKPILE ], + [ 37, MoveId.SPIT_UP ], + [ 37, MoveId.SWALLOW ], + [ 41, MoveId.CRUNCH ], + [ 47, MoveId.SEED_BOMB ], + [ 50, MoveId.POWER_WHIP ], + ], + [SpeciesId.FINNEON]: [ + [ 1, MoveId.POUND ], + [ 6, MoveId.WATER_GUN ], + [ 13, MoveId.RAIN_DANCE ], + [ 17, MoveId.GUST ], + [ 22, MoveId.WATER_PULSE ], + [ 26, MoveId.ATTRACT ], + [ 29, MoveId.SAFEGUARD ], + [ 33, MoveId.AQUA_RING ], + [ 38, MoveId.WHIRLPOOL ], + [ 42, MoveId.U_TURN ], + [ 45, MoveId.BOUNCE ], + [ 49, MoveId.TAILWIND ], + [ 54, MoveId.SOAK ], + ], + [SpeciesId.LUMINEON]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.GUST ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.SOAK ], + [ 13, MoveId.RAIN_DANCE ], + [ 22, MoveId.WATER_PULSE ], + [ 26, MoveId.ATTRACT ], + [ 29, MoveId.SAFEGUARD ], + [ 35, MoveId.AQUA_RING ], + [ 42, MoveId.WHIRLPOOL ], + [ 48, MoveId.U_TURN ], + [ 53, MoveId.BOUNCE ], + [ 59, MoveId.TAILWIND ], + ], + [SpeciesId.MANTYKE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WATER_GUN ], + [ 4, MoveId.SUPERSONIC ], + [ 8, MoveId.WING_ATTACK ], + [ 12, MoveId.WATER_PULSE ], + [ 16, MoveId.WIDE_GUARD ], + [ 20, MoveId.AGILITY ], + [ 24, MoveId.BUBBLE_BEAM ], + [ 28, MoveId.HEADBUTT ], + [ 32, MoveId.AIR_SLASH ], + [ 36, MoveId.AQUA_RING ], + [ 40, MoveId.BOUNCE ], + [ 44, MoveId.TAKE_DOWN ], + [ 48, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.SNOVER]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.POWDER_SNOW ], + [ 5, MoveId.LEAFAGE ], + [ 10, MoveId.MIST ], + [ 15, MoveId.ICE_SHARD ], + [ 20, MoveId.RAZOR_LEAF ], + [ 25, MoveId.ICY_WIND ], + [ 30, MoveId.SWAGGER ], + [ 35, MoveId.INGRAIN ], + [ 41, MoveId.WOOD_HAMMER ], + [ 45, MoveId.BLIZZARD ], + [ 50, MoveId.SHEER_COLD ], + ], + [SpeciesId.ABOMASNOW]: [ + [ EVOLVE_MOVE, MoveId.ICE_PUNCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.MIST ], + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.LEAFAGE ], + [ 1, MoveId.AURORA_VEIL ], + [ 15, MoveId.ICE_SHARD ], + [ 20, MoveId.RAZOR_LEAF ], + [ 25, MoveId.ICY_WIND ], + [ 30, MoveId.SWAGGER ], + [ 35, MoveId.INGRAIN ], + [ 43, MoveId.WOOD_HAMMER ], + [ 49, MoveId.BLIZZARD ], + [ 56, MoveId.SHEER_COLD ], + ], + [SpeciesId.WEAVILE]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.AGILITY ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.SLASH ], + [ 1, MoveId.BEAT_UP ], + [ 1, MoveId.TAUNT ], + [ 1, MoveId.ASSURANCE ], + [ 1, MoveId.ICE_SHARD ], + [ 1, MoveId.EMBARGO ], + [ 18, MoveId.METAL_CLAW ], + [ 24, MoveId.ICY_WIND ], + [ 30, MoveId.FURY_SWIPES ], + [ 36, MoveId.HONE_CLAWS ], + [ 42, MoveId.FLING ], + [ 48, MoveId.NASTY_PLOT ], + [ 54, MoveId.SCREECH ], + [ 60, MoveId.NIGHT_SLASH ], + [ 66, MoveId.DARK_PULSE ], + ], + [SpeciesId.MAGNEZONE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.BARRIER ], + [ 1, MoveId.TRI_ATTACK ], + [ 1, MoveId.MIRROR_COAT ], + [ 1, MoveId.MAGNETIC_FLUX ], + [ 1, MoveId.ELECTRIC_TERRAIN ], + [ 12, MoveId.ELECTRO_BALL ], + [ 16, MoveId.GYRO_BALL ], + [ 20, MoveId.SPARK ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.MAGNET_RISE ], + [ 34, MoveId.FLASH_CANNON ], + [ 40, MoveId.DISCHARGE ], + [ 46, MoveId.METAL_SOUND ], + [ 52, MoveId.LIGHT_SCREEN ], + [ 58, MoveId.LOCK_ON ], + [ 64, MoveId.ZAP_CANNON ], + ], + [SpeciesId.LICKILICKY]: [ + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.LICK ], + [ 1, MoveId.TACKLE ], // Previous Stage Move, Custom + [ 1, MoveId.ROLLOUT ], + [ 1, MoveId.WRING_OUT ], + [ 6, MoveId.REST ], + [ 18, MoveId.WRAP ], + [ 24, MoveId.DISABLE ], + [ 30, MoveId.STOMP ], + [ 36, MoveId.KNOCK_OFF ], + [ 42, MoveId.SCREECH ], + [ 48, MoveId.SLAM ], + [ 54, MoveId.POWER_WHIP ], + [ 60, MoveId.BELLY_DRUM ], + ], + [SpeciesId.RHYPERIOR]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.HAMMER_ARM ], + [ 1, MoveId.SMACK_DOWN ], + [ 1, MoveId.BULLDOZE ], + [ 15, MoveId.HORN_ATTACK ], + [ 20, MoveId.SCARY_FACE ], + [ 25, MoveId.STOMP ], + [ 30, MoveId.ROCK_BLAST ], + [ 35, MoveId.DRILL_RUN ], + [ 40, MoveId.TAKE_DOWN ], + [ 47, MoveId.EARTHQUAKE ], + [ 54, MoveId.STONE_EDGE ], + [ 61, MoveId.MEGAHORN ], + [ 68, MoveId.HORN_DRILL ], + [ 75, MoveId.ROCK_WRECKER ], + ], + [SpeciesId.TANGROWTH]: [ + [ 1, MoveId.BIND ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.BLOCK ], + [ 1, MoveId.CONSTRICT ], + [ 12, MoveId.MEGA_DRAIN ], + [ 16, MoveId.VINE_WHIP ], + [ 20, MoveId.POISON_POWDER ], + [ 24, MoveId.DOUBLE_HIT ], + [ 28, MoveId.KNOCK_OFF ], + [ 32, MoveId.GIGA_DRAIN ], + [ 34, MoveId.ANCIENT_POWER ], + [ 36, MoveId.SLEEP_POWDER ], + [ 40, MoveId.SLAM ], + [ 44, MoveId.TICKLE ], + [ 48, MoveId.POWER_WHIP ], + [ 52, MoveId.INGRAIN ], + [ 56, MoveId.GRASSY_TERRAIN ], + ], + [SpeciesId.ELECTIVIRE]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.CHARGE ], + [ 1, MoveId.ION_DELUGE ], + [ 12, MoveId.SWIFT ], + [ 16, MoveId.SHOCK_WAVE ], + [ 20, MoveId.THUNDER_WAVE ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.THUNDER_PUNCH ], + [ 34, MoveId.DISCHARGE ], + [ 40, MoveId.LOW_KICK ], + [ 46, MoveId.THUNDERBOLT ], + [ 52, MoveId.LIGHT_SCREEN ], + [ 58, MoveId.THUNDER ], + [ 64, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.MAGMORTAR]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.SMOG ], + [ 12, MoveId.CLEAR_SMOG ], + [ 16, MoveId.FLAME_WHEEL ], + [ 20, MoveId.CONFUSE_RAY ], + [ 24, MoveId.SCARY_FACE ], + [ 28, MoveId.FIRE_PUNCH ], + [ 34, MoveId.LAVA_PLUME ], + [ 40, MoveId.LOW_KICK ], + [ 46, MoveId.FLAMETHROWER ], + [ 52, MoveId.SUNNY_DAY ], + [ 58, MoveId.FIRE_BLAST ], + [ 64, MoveId.HYPER_BEAM ], + ], + [SpeciesId.TOGEKISS]: [ + [ EVOLVE_MOVE, MoveId.AIR_SLASH ], + [ 1, MoveId.POUND ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.METRONOME ], + [ 1, MoveId.SKY_ATTACK ], + [ 1, MoveId.TRI_ATTACK ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.SAFEGUARD ], + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.EXTREME_SPEED ], + [ 1, MoveId.ANCIENT_POWER ], + [ 1, MoveId.FOLLOW_ME ], + [ 1, MoveId.WISH ], + [ 1, MoveId.YAWN ], + [ 1, MoveId.LAST_RESORT ], + [ 1, MoveId.AURA_SPHERE ], + [ 1, MoveId.AFTER_YOU ], + [ 1, MoveId.FAIRY_WIND ], + [ 1, MoveId.LIFE_DEW ], + ], + [SpeciesId.YANMEGA]: [ + [ RELEARN_MOVE, MoveId.HYPNOSIS ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.AIR_CUTTER ], // Previous Stage Move + [ 1, MoveId.NIGHT_SLASH ], + [ 1, MoveId.WING_ATTACK ], // Previous Stage Move + [ 1, MoveId.AIR_SLASH ], + [ 1, MoveId.BUG_BUZZ ], + [ 14, MoveId.QUICK_ATTACK ], + [ 17, MoveId.DETECT ], + [ 22, MoveId.SUPERSONIC ], + [ 27, MoveId.UPROAR ], + [ 30, MoveId.BUG_BITE ], + [ 33, MoveId.ANCIENT_POWER ], + [ 38, MoveId.FEINT ], + [ 43, MoveId.SLASH ], + [ 46, MoveId.SCREECH ], + [ 49, MoveId.U_TURN ], + ], + [SpeciesId.LEAFEON]: [ + [ EVOLVE_MOVE, MoveId.SAPPY_SEED ], + [ RELEARN_MOVE, MoveId.VEEVEE_VOLLEY ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.BITE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.SWIFT ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.COVET ], + [ 1, MoveId.COPYCAT ], + [ 5, MoveId.SAND_ATTACK ], + [ 10, MoveId.RAZOR_LEAF ], + [ 15, MoveId.QUICK_ATTACK ], + [ 20, MoveId.BABY_DOLL_EYES ], + [ 25, MoveId.LEECH_SEED ], + [ 30, MoveId.MAGICAL_LEAF ], + [ 35, MoveId.SYNTHESIS ], + [ 40, MoveId.SUNNY_DAY ], + [ 45, MoveId.GIGA_DRAIN ], + [ 50, MoveId.SWORDS_DANCE ], + [ 55, MoveId.LEAF_BLADE ], + [ 60, MoveId.LAST_RESORT ], + ], + [SpeciesId.GLACEON]: [ + [ EVOLVE_MOVE, MoveId.FREEZY_FROST ], + [ RELEARN_MOVE, MoveId.VEEVEE_VOLLEY ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.SWIFT ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.COVET ], + [ 1, MoveId.COPYCAT ], + [ 5, MoveId.SAND_ATTACK ], + [ 10, MoveId.ICY_WIND ], + [ 15, MoveId.QUICK_ATTACK ], + [ 20, MoveId.BABY_DOLL_EYES ], + [ 25, MoveId.ICE_SHARD ], + [ 30, MoveId.BITE ], + [ 35, MoveId.ICE_FANG ], + [ 40, MoveId.SNOWSCAPE ], + [ 45, MoveId.FREEZE_DRY ], + [ 50, MoveId.MIRROR_COAT ], + [ 55, MoveId.BLIZZARD ], + [ 60, MoveId.LAST_RESORT ], + ], + [SpeciesId.GLISCOR]: [ + [ 1, MoveId.POISON_STING ], // Previous Stage Move + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.POISON_TAIL ], // Previous Stage Move + [ 1, MoveId.SLASH ], // Previous Stage Move + [ 1, MoveId.POISON_JAB ], + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.FIRE_FANG ], + [ 13, MoveId.QUICK_ATTACK ], + [ 16, MoveId.FURY_CUTTER ], + [ 19, MoveId.KNOCK_OFF ], + [ 22, MoveId.ACROBATICS ], + [ 27, MoveId.NIGHT_SLASH ], + [ 30, MoveId.U_TURN ], + [ 35, MoveId.SCREECH ], + [ 40, MoveId.X_SCISSOR ], + [ 45, MoveId.CRABHAMMER ], + [ 50, MoveId.SWORDS_DANCE ], + ], + [SpeciesId.MAMOSWINE]: [ + [ EVOLVE_MOVE, MoveId.DOUBLE_HIT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.ODOR_SLEUTH ], + [ 1, MoveId.ANCIENT_POWER ], + [ 1, MoveId.ICE_FANG ], + [ 15, MoveId.ICE_SHARD ], + [ 20, MoveId.MIST ], + [ 25, MoveId.ENDURE ], + [ 30, MoveId.ICY_WIND ], + [ 37, MoveId.AMNESIA ], + [ 44, MoveId.TAKE_DOWN ], + [ 51, MoveId.EARTHQUAKE ], + [ 58, MoveId.BLIZZARD ], + [ 65, MoveId.THRASH ], + ], + [SpeciesId.PORYGON_Z]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.CONVERSION ], + [ 1, MoveId.RECYCLE ], + [ 1, MoveId.MAGNET_RISE ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.TRICK_ROOM ], + [ 15, MoveId.THUNDER_SHOCK ], + [ 20, MoveId.PSYBEAM ], + [ 25, MoveId.CONVERSION_2 ], + [ 30, MoveId.AGILITY ], + [ 35, MoveId.RECOVER ], + [ 40, MoveId.DISCHARGE ], + [ 45, MoveId.TRI_ATTACK ], + [ 50, MoveId.MAGIC_COAT ], + [ 55, MoveId.LOCK_ON ], + [ 60, MoveId.ZAP_CANNON ], + [ 65, MoveId.HYPER_BEAM ], + ], + [SpeciesId.GALLADE]: [ + [ EVOLVE_MOVE, MoveId.SLASH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.PSYBEAM ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.PSYCHIC ], + [ 1, MoveId.HYPNOSIS ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.DREAM_EATER ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.FUTURE_SIGHT ], + [ 1, MoveId.IMPRISON ], + [ 1, MoveId.CALM_MIND ], + [ 1, MoveId.LEAF_BLADE ], + [ 1, MoveId.NIGHT_SLASH ], + [ 1, MoveId.SACRED_SWORD ], + [ 1, MoveId.DISARMING_VOICE ], + [ 1, MoveId.DRAINING_KISS ], + [ 1, MoveId.LIFE_DEW ], + [ 1, MoveId.AQUA_CUTTER ], + [ 9, MoveId.HELPING_HAND ], + [ 12, MoveId.FEINT ], + [ 15, MoveId.TELEPORT ], + [ 18, MoveId.AERIAL_ACE ], + [ 23, MoveId.FALSE_SWIPE ], + [ 28, MoveId.PROTECT ], + [ 35, MoveId.SWORDS_DANCE ], + [ 42, MoveId.PSYCHO_CUT ], + [ 49, MoveId.HEAL_PULSE ], + [ 56, MoveId.WIDE_GUARD ], + [ 56, MoveId.QUICK_GUARD ], + [ 63, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.PROBOPASS]: [ + [ EVOLVE_MOVE, MoveId.TRI_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], // Previous Stage Move + [ 1, MoveId.IRON_DEFENSE ], + [ 1, MoveId.BLOCK ], + [ 1, MoveId.ROCK_THROW ], // Previous Stage Move + [ 1, MoveId.GRAVITY ], + [ 1, MoveId.MAGNET_RISE ], + [ 1, MoveId.WIDE_GUARD ], + [ 1, MoveId.MAGNETIC_FLUX ], + [ 13, MoveId.THUNDER_WAVE ], + [ 16, MoveId.REST ], + [ 19, MoveId.SPARK ], + [ 22, MoveId.ROCK_SLIDE ], + [ 25, MoveId.POWER_GEM ], + [ 28, MoveId.ROCK_BLAST ], + [ 31, MoveId.DISCHARGE ], + [ 34, MoveId.SANDSTORM ], + [ 37, MoveId.EARTH_POWER ], + [ 40, MoveId.STONE_EDGE ], + [ 43, MoveId.ZAP_CANNON ], + [ 43, MoveId.LOCK_ON ], + ], + [SpeciesId.DUSKNOIR]: [ + [ 1, MoveId.FIRE_PUNCH ], + [ 1, MoveId.ICE_PUNCH ], + [ 1, MoveId.THUNDER_PUNCH ], + [ 1, MoveId.BIND ], + [ 1, MoveId.LEER ], + [ 1, MoveId.DISABLE ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.PURSUIT ], // Previous Stage Move, Custom + [ 1, MoveId.SHADOW_PUNCH ], + [ 1, MoveId.GRAVITY ], + [ 1, MoveId.SHADOW_SNEAK ], + [ 12, MoveId.CONFUSE_RAY ], + [ 16, MoveId.NIGHT_SHADE ], + [ 20, MoveId.PAYBACK ], + [ 24, MoveId.WILL_O_WISP ], + [ 28, MoveId.MEAN_LOOK ], + [ 32, MoveId.HEX ], + [ 36, MoveId.CURSE ], + [ 42, MoveId.SHADOW_BALL ], + [ 48, MoveId.FUTURE_SIGHT ], + [ 54, MoveId.DESTINY_BOND ], + ], + [SpeciesId.FROSLASS]: [ + [ EVOLVE_MOVE, MoveId.HEX ], + [ 1, MoveId.HEADBUTT ], + [ 1, MoveId.LEER ], + [ 1, MoveId.BITE ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.DESTINY_BOND ], + [ 1, MoveId.WEATHER_BALL ], // Previous Stage Move + [ 1, MoveId.CRUNCH ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.OMINOUS_WIND ], + [ 15, MoveId.ICE_SHARD ], + [ 20, MoveId.DRAINING_KISS ], + [ 25, MoveId.ICY_WIND ], + [ 30, MoveId.FROST_BREATH ], + [ 35, MoveId.CONFUSE_RAY ], + [ 40, MoveId.SNOWSCAPE ], + [ 47, MoveId.WILL_O_WISP ], + [ 54, MoveId.AURORA_VEIL ], + [ 61, MoveId.SHADOW_BALL ], + [ 68, MoveId.BLIZZARD ], + ], + [SpeciesId.ROTOM]: [ + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.ASTONISH ], + [ 5, MoveId.THUNDER_SHOCK ], + [ 10, MoveId.CONFUSE_RAY ], + [ 15, MoveId.CHARGE ], + [ 20, MoveId.ELECTRO_BALL ], + [ 25, MoveId.THUNDER_WAVE ], + [ 30, MoveId.SHOCK_WAVE ], + [ 35, MoveId.HEX ], + [ 40, MoveId.SUBSTITUTE ], + [ 45, MoveId.TRICK ], + [ 50, MoveId.DISCHARGE ], + [ 55, MoveId.UPROAR ], + ], + [SpeciesId.UXIE]: [ + [ RELEARN_MOVE, MoveId.TRI_ATTACK ], + [ RELEARN_MOVE, MoveId.SNORE ], + [ RELEARN_MOVE, MoveId.SAFEGUARD ], + [ RELEARN_MOVE, MoveId.IRON_TAIL ], + [ RELEARN_MOVE, MoveId.PSYCHO_CUT ], + [ RELEARN_MOVE, MoveId.WONDER_ROOM ], + [ RELEARN_MOVE, MoveId.MAGIC_ROOM ], + [ RELEARN_MOVE, MoveId.ROUND ], + [ RELEARN_MOVE, MoveId.ALLY_SWITCH ], + [ RELEARN_MOVE, MoveId.EXPANDING_FORCE ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.REST ], + [ 7, MoveId.SWIFT ], + [ 14, MoveId.ENDURE ], + [ 21, MoveId.PSYBEAM ], + [ 28, MoveId.IMPRISON ], + [ 35, MoveId.EXTRASENSORY ], + [ 42, MoveId.AMNESIA ], + [ 49, MoveId.PSYCHIC ], + [ 56, MoveId.YAWN ], + [ 63, MoveId.FUTURE_SIGHT ], + [ 70, MoveId.FLAIL ], + [ 77, MoveId.MEMENTO ], + [ 84, MoveId.MYSTICAL_POWER ], + ], + [SpeciesId.MESPRIT]: [ + [ RELEARN_MOVE, MoveId.TRI_ATTACK ], + [ RELEARN_MOVE, MoveId.SNORE ], + [ RELEARN_MOVE, MoveId.SAFEGUARD ], + [ RELEARN_MOVE, MoveId.IRON_TAIL ], + [ RELEARN_MOVE, MoveId.PSYCHO_CUT ], + [ RELEARN_MOVE, MoveId.WONDER_ROOM ], + [ RELEARN_MOVE, MoveId.MAGIC_ROOM ], + [ RELEARN_MOVE, MoveId.ROUND ], + [ RELEARN_MOVE, MoveId.ALLY_SWITCH ], + [ RELEARN_MOVE, MoveId.EXPANDING_FORCE ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.REST ], + [ 7, MoveId.SWIFT ], + [ 14, MoveId.PROTECT ], + [ 21, MoveId.PSYBEAM ], + [ 28, MoveId.IMPRISON ], + [ 35, MoveId.EXTRASENSORY ], + [ 42, MoveId.CHARM ], + [ 49, MoveId.PSYCHIC ], + [ 56, MoveId.FLATTER ], + [ 63, MoveId.FUTURE_SIGHT ], + [ 70, MoveId.COPYCAT ], + [ 77, MoveId.HEALING_WISH ], + [ 84, MoveId.MYSTICAL_POWER ], + ], + [SpeciesId.AZELF]: [ + [ RELEARN_MOVE, MoveId.SELF_DESTRUCT ], + [ RELEARN_MOVE, MoveId.TRI_ATTACK ], + [ RELEARN_MOVE, MoveId.SNORE ], + [ RELEARN_MOVE, MoveId.SAFEGUARD ], + [ RELEARN_MOVE, MoveId.IRON_TAIL ], + [ RELEARN_MOVE, MoveId.PAYBACK ], + [ RELEARN_MOVE, MoveId.ASSURANCE ], + [ RELEARN_MOVE, MoveId.PSYCHO_CUT ], + [ RELEARN_MOVE, MoveId.WONDER_ROOM ], + [ RELEARN_MOVE, MoveId.MAGIC_ROOM ], + [ RELEARN_MOVE, MoveId.ROUND ], + [ RELEARN_MOVE, MoveId.ALLY_SWITCH ], + [ RELEARN_MOVE, MoveId.EXPANDING_FORCE ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.REST ], + [ 7, MoveId.SWIFT ], + [ 14, MoveId.DETECT ], + [ 21, MoveId.PSYBEAM ], + [ 28, MoveId.IMPRISON ], + [ 35, MoveId.EXTRASENSORY ], + [ 42, MoveId.NASTY_PLOT ], + [ 49, MoveId.PSYCHIC ], + [ 56, MoveId.UPROAR ], + [ 63, MoveId.FUTURE_SIGHT ], + [ 70, MoveId.LAST_RESORT ], + [ 77, MoveId.EXPLOSION ], + [ 84, MoveId.MYSTICAL_POWER ], + ], + [SpeciesId.DIALGA]: [ + [ 1, MoveId.SCARY_FACE ], + [ 1, MoveId.METAL_CLAW ], + [ 8, MoveId.DRAGON_BREATH ], + [ 16, MoveId.ANCIENT_POWER ], + [ 24, MoveId.SLASH ], + [ 32, MoveId.FLASH_CANNON ], + [ 40, MoveId.DRAGON_CLAW ], + [ 48, MoveId.AURA_SPHERE ], + [ 56, MoveId.POWER_GEM ], + [ 64, MoveId.METAL_BURST ], + [ 72, MoveId.EARTH_POWER ], + [ 80, MoveId.IRON_TAIL ], + [ 88, MoveId.ROAR_OF_TIME ], + ], + [SpeciesId.PALKIA]: [ + [ 1, MoveId.SCARY_FACE ], + [ 1, MoveId.WATER_PULSE ], + [ 8, MoveId.DRAGON_BREATH ], + [ 16, MoveId.ANCIENT_POWER ], + [ 24, MoveId.SLASH ], + [ 32, MoveId.AQUA_RING ], + [ 48, MoveId.AURA_SPHERE ], + [ 56, MoveId.POWER_GEM ], + [ 64, MoveId.AQUA_TAIL ], + [ 72, MoveId.EARTH_POWER ], + [ 80, MoveId.SPACIAL_REND ], + [ 88, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.HEATRAN]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.FIRE_SPIN ], + [ 6, MoveId.METAL_CLAW ], + [ 12, MoveId.ANCIENT_POWER ], + [ 18, MoveId.FIRE_FANG ], + [ 24, MoveId.SCARY_FACE ], + [ 30, MoveId.IRON_HEAD ], + [ 36, MoveId.CRUNCH ], + [ 42, MoveId.LAVA_PLUME ], + [ 48, MoveId.METAL_SOUND ], + [ 54, MoveId.EARTH_POWER ], + [ 60, MoveId.HEAT_WAVE ], + [ 66, MoveId.STONE_EDGE ], + [ 72, MoveId.MAGMA_STORM ], + ], + [SpeciesId.REGIGIGAS]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.DIZZY_PUNCH ], + [ 1, MoveId.FORESIGHT ], + [ 6, MoveId.PAYBACK ], + [ 12, MoveId.REVENGE ], + [ 18, MoveId.STOMP ], + [ 24, MoveId.PROTECT ], + [ 30, MoveId.KNOCK_OFF ], + [ 36, MoveId.MEGA_PUNCH ], + [ 42, MoveId.BODY_PRESS ], + [ 48, MoveId.WIDE_GUARD ], + [ 54, MoveId.ZEN_HEADBUTT ], + [ 60, MoveId.HEAVY_SLAM ], + [ 66, MoveId.HAMMER_ARM ], + [ 72, MoveId.GIGA_IMPACT ], + [ 78, MoveId.CRUSH_GRIP ], + ], + [SpeciesId.GIRATINA]: [ + [ 1, MoveId.SHADOW_SNEAK ], + [ 1, MoveId.DEFOG ], + [ 1, MoveId.DRAGON_BREATH ], //USUM + [ 7, MoveId.OMINOUS_WIND ], //USUM + [ 14, MoveId.ANCIENT_POWER ], + [ 21, MoveId.HEX ], + [ 28, MoveId.SLASH ], + [ 35, MoveId.SCARY_FACE ], + [ 42, MoveId.SHADOW_CLAW ], + [ 49, MoveId.PAIN_SPLIT ], + [ 56, MoveId.AURA_SPHERE ], + [ 63, MoveId.DRAGON_CLAW ], + [ 70, MoveId.EARTH_POWER ], + [ 77, MoveId.SHADOW_FORCE ], + [ 84, MoveId.DESTINY_BOND ], + ], + [SpeciesId.CRESSELIA]: [ + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 6, MoveId.MIST ], + [ 12, MoveId.AURORA_BEAM ], + [ 18, MoveId.PSYBEAM ], + [ 24, MoveId.ALLY_SWITCH ], + [ 30, MoveId.SLASH ], + [ 36, MoveId.PSYCHO_CUT ], + [ 42, MoveId.MOONLIGHT ], + [ 48, MoveId.SAFEGUARD ], + [ 54, MoveId.PSYCHIC ], + [ 60, MoveId.MOONBLAST ], + [ 66, MoveId.FUTURE_SIGHT ], + [ 72, MoveId.LUNAR_DANCE ], + [ 72, MoveId.LUNAR_BLESSING ], + ], + [SpeciesId.PHIONE]: [ + [ 1, MoveId.WATER_GUN ], + [ 9, MoveId.CHARM ], + [ 16, MoveId.SUPERSONIC ], + [ 24, MoveId.BUBBLE_BEAM ], + [ 31, MoveId.ACID_ARMOR ], + [ 39, MoveId.WHIRLPOOL ], + [ 46, MoveId.WATER_PULSE ], + [ 54, MoveId.AQUA_RING ], + [ 61, MoveId.DIVE ], + [ 69, MoveId.RAIN_DANCE ], + [ 75, MoveId.TAKE_HEART ], + ], + [SpeciesId.MANAPHY]: [ + [ 1, MoveId.HEART_SWAP ], + [ 1, MoveId.TAIL_GLOW ], + [ 1, MoveId.WATER_GUN ], + [ 9, MoveId.CHARM ], + [ 16, MoveId.SUPERSONIC ], + [ 24, MoveId.BUBBLE_BEAM ], + [ 31, MoveId.ACID_ARMOR ], + [ 39, MoveId.WHIRLPOOL ], + [ 46, MoveId.WATER_PULSE ], + [ 54, MoveId.AQUA_RING ], + [ 61, MoveId.DIVE ], + [ 69, MoveId.RAIN_DANCE ], + [ 76, MoveId.TAKE_HEART ], + ], + [SpeciesId.DARKRAI]: [ + [ 1, MoveId.DISABLE ], + [ 1, MoveId.OMINOUS_WIND ], + [ 1, MoveId.PURSUIT ], // Custom + [ 11, MoveId.QUICK_ATTACK ], + [ 20, MoveId.HYPNOSIS ], + [ 29, MoveId.SUCKER_PUNCH ], + [ 38, MoveId.NIGHT_SHADE ], + [ 47, MoveId.DOUBLE_TEAM ], + [ 57, MoveId.HAZE ], + [ 66, MoveId.DARK_VOID ], + [ 75, MoveId.NASTY_PLOT ], + [ 84, MoveId.DREAM_EATER ], + [ 93, MoveId.DARK_PULSE ], + ], + [SpeciesId.SHAYMIN]: [ + [ 1, MoveId.LEAFAGE ], // Custom + [ 1, MoveId.GROWTH ], + [ 10, MoveId.MAGICAL_LEAF ], + [ 19, MoveId.LEECH_SEED ], + [ 28, MoveId.SYNTHESIS ], + [ 37, MoveId.SWEET_SCENT ], + [ 46, MoveId.NATURAL_GIFT ], + [ 55, MoveId.WORRY_SEED ], + [ 64, MoveId.AROMATHERAPY ], + [ 73, MoveId.ENERGY_BALL ], + [ 82, MoveId.SWEET_KISS ], + [ 91, MoveId.HEALING_WISH ], + [ 100, MoveId.SEED_FLARE ], + ], + [SpeciesId.ARCEUS]: [ + [ 1, MoveId.SEISMIC_TOSS ], + [ 1, MoveId.COSMIC_POWER ], + [ 1, MoveId.PUNISHMENT ], + [ 10, MoveId.GRAVITY ], + [ 20, MoveId.EARTH_POWER ], + [ 30, MoveId.HYPER_VOICE ], + [ 40, MoveId.EXTREME_SPEED ], + [ 50, MoveId.HEALING_WISH ], + [ 60, MoveId.FUTURE_SIGHT ], + [ 70, MoveId.RECOVER ], + [ 80, MoveId.HYPER_BEAM ], + [ 90, MoveId.PERISH_SONG ], + [ 100, MoveId.JUDGMENT ], + ], + [SpeciesId.VICTINI]: [ + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.FLAME_CHARGE ], + [ 1, MoveId.V_CREATE ], + [ 7, MoveId.WORK_UP ], + [ 14, MoveId.INCINERATE ], + [ 21, MoveId.STORED_POWER ], + [ 28, MoveId.HEADBUTT ], + [ 35, MoveId.ENDURE ], + [ 42, MoveId.ZEN_HEADBUTT ], + [ 49, MoveId.INFERNO ], + [ 56, MoveId.REVERSAL ], + [ 63, MoveId.SEARING_SHOT ], + [ 70, MoveId.DOUBLE_EDGE ], + [ 77, MoveId.FLARE_BLITZ ], + [ 84, MoveId.OVERHEAT ], + [ 91, MoveId.FINAL_GAMBIT ], + ], + [SpeciesId.SNIVY]: [ + [ 1, MoveId.TACKLE ], + [ 4, MoveId.LEER ], + [ 5, MoveId.VINE_WHIP ], // Custom, moved from 7 to 5 + [ 10, MoveId.WRAP ], + [ 13, MoveId.GROWTH ], + [ 16, MoveId.MAGICAL_LEAF ], + [ 19, MoveId.LEECH_SEED ], + [ 22, MoveId.MEGA_DRAIN ], + [ 25, MoveId.SLAM ], + [ 28, MoveId.LEAF_BLADE ], + [ 31, MoveId.COIL ], + [ 34, MoveId.GIGA_DRAIN ], + [ 37, MoveId.GASTRO_ACID ], + [ 40, MoveId.LEAF_STORM ], + ], + [SpeciesId.SERVINE]: [ + [ 1, MoveId.VINE_WHIP ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WRAP ], + [ 1, MoveId.LEER ], + [ 13, MoveId.GROWTH ], + [ 16, MoveId.MAGICAL_LEAF ], + [ 20, MoveId.LEECH_SEED ], + [ 24, MoveId.MEGA_DRAIN ], + [ 28, MoveId.SLAM ], + [ 32, MoveId.LEAF_BLADE ], + [ 36, MoveId.COIL ], + [ 40, MoveId.GIGA_DRAIN ], + [ 44, MoveId.GASTRO_ACID ], + [ 48, MoveId.LEAF_STORM ], + ], + [SpeciesId.SERPERIOR]: [ + [ 1, MoveId.VINE_WHIP ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WRAP ], + [ 1, MoveId.LEER ], + [ 13, MoveId.GROWTH ], + [ 16, MoveId.MAGICAL_LEAF ], + [ 20, MoveId.LEECH_SEED ], + [ 24, MoveId.MEGA_DRAIN ], + [ 28, MoveId.SLAM ], + [ 32, MoveId.LEAF_BLADE ], + [ 38, MoveId.COIL ], + [ 44, MoveId.GIGA_DRAIN ], + [ 50, MoveId.GASTRO_ACID ], + [ 56, MoveId.LEAF_STORM ], + ], + [SpeciesId.TEPIG]: [ + [ 1, MoveId.TACKLE ], + [ 3, MoveId.TAIL_WHIP ], + [ 5, MoveId.EMBER ], // Custom, moved from 7 to 5 + [ 9, MoveId.ENDURE ], + [ 13, MoveId.DEFENSE_CURL ], + [ 15, MoveId.FLAME_CHARGE ], + [ 19, MoveId.SMOG ], + [ 21, MoveId.ROLLOUT ], + [ 25, MoveId.TAKE_DOWN ], + [ 27, MoveId.HEAT_CRASH ], + [ 31, MoveId.ASSURANCE ], + [ 33, MoveId.FLAMETHROWER ], + [ 37, MoveId.HEAD_SMASH ], + [ 39, MoveId.ROAR ], + [ 43, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.PIGNITE]: [ + [ EVOLVE_MOVE, MoveId.ARM_THRUST ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.ENDURE ], + [ 13, MoveId.DEFENSE_CURL ], + [ 15, MoveId.FLAME_CHARGE ], + [ 20, MoveId.SMOG ], + [ 23, MoveId.ROLLOUT ], + [ 28, MoveId.TAKE_DOWN ], + [ 31, MoveId.HEAT_CRASH ], + [ 36, MoveId.ASSURANCE ], + [ 39, MoveId.FLAMETHROWER ], + [ 44, MoveId.HEAD_SMASH ], + [ 47, MoveId.ROAR ], + [ 52, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.EMBOAR]: [ + [ RELEARN_MOVE, MoveId.ENDURE ], + [ RELEARN_MOVE, MoveId.HAMMER_ARM ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.ARM_THRUST ], + [ 13, MoveId.DEFENSE_CURL ], + [ 15, MoveId.FLAME_CHARGE ], + [ 20, MoveId.SMOG ], + [ 23, MoveId.ROLLOUT ], + [ 28, MoveId.TAKE_DOWN ], + [ 31, MoveId.HEAT_CRASH ], + [ 38, MoveId.ASSURANCE ], + [ 43, MoveId.FLAMETHROWER ], + [ 50, MoveId.HEAD_SMASH ], + [ 55, MoveId.ROAR ], + [ 62, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.OSHAWOTT]: [ + [ 1, MoveId.TACKLE ], + [ 5, MoveId.TAIL_WHIP ], + [ 5, MoveId.WATER_GUN ], // Custom, moved from 7 to 5 + [ 11, MoveId.SOAK ], + [ 13, MoveId.FOCUS_ENERGY ], + [ 17, MoveId.RAZOR_SHELL ], + [ 19, MoveId.FURY_CUTTER ], + [ 23, MoveId.WATER_PULSE ], + [ 25, MoveId.AERIAL_ACE ], + [ 29, MoveId.AQUA_JET ], + [ 31, MoveId.ENCORE ], + [ 35, MoveId.AQUA_TAIL ], + [ 37, MoveId.RETALIATE ], + [ 41, MoveId.SWORDS_DANCE ], + [ 43, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.DEWOTT]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.SOAK ], + [ 13, MoveId.FOCUS_ENERGY ], + [ 18, MoveId.RAZOR_SHELL ], + [ 21, MoveId.FURY_CUTTER ], + [ 26, MoveId.WATER_PULSE ], + [ 29, MoveId.AERIAL_ACE ], + [ 34, MoveId.AQUA_JET ], + [ 37, MoveId.ENCORE ], + [ 42, MoveId.AQUA_TAIL ], + [ 45, MoveId.RETALIATE ], + [ 50, MoveId.SWORDS_DANCE ], + [ 53, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.SAMUROTT]: [ + [ EVOLVE_MOVE, MoveId.SLASH ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.MEGAHORN ], + [ 1, MoveId.SOAK ], + [ 13, MoveId.FOCUS_ENERGY ], + [ 18, MoveId.RAZOR_SHELL ], + [ 21, MoveId.FURY_CUTTER ], + [ 25, MoveId.WATER_PULSE ], + [ 29, MoveId.AERIAL_ACE ], + [ 34, MoveId.AQUA_JET ], + [ 39, MoveId.ENCORE ], + [ 46, MoveId.AQUA_TAIL ], + [ 51, MoveId.RETALIATE ], + [ 58, MoveId.SWORDS_DANCE ], + [ 63, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.PATRAT]: [ + [ 1, MoveId.TACKLE ], + [ 3, MoveId.LEER ], + [ 6, MoveId.BITE ], + [ 8, MoveId.BIDE ], + [ 11, MoveId.DETECT ], + [ 13, MoveId.SAND_ATTACK ], + [ 16, MoveId.CRUNCH ], + [ 18, MoveId.HYPNOSIS ], + [ 21, MoveId.SUPER_FANG ], + [ 23, MoveId.AFTER_YOU ], + [ 26, MoveId.FOCUS_ENERGY ], + [ 28, MoveId.WORK_UP ], + [ 31, MoveId.HYPER_FANG ], + [ 33, MoveId.NASTY_PLOT ], + [ 36, MoveId.MEAN_LOOK ], + [ 38, MoveId.BATON_PASS ], + [ 41, MoveId.SLAM ], + ], + [SpeciesId.WATCHOG]: [ + [ EVOLVE_MOVE, MoveId.CONFUSE_RAY ], + [ RELEARN_MOVE, MoveId.WORK_UP ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.BITE ], + [ 1, MoveId.LOW_KICK ], + [ 1, MoveId.ROTOTILLER ], + [ 8, MoveId.BIDE ], + [ 11, MoveId.DETECT ], + [ 13, MoveId.SAND_ATTACK ], + [ 16, MoveId.CRUNCH ], + [ 18, MoveId.HYPNOSIS ], + [ 22, MoveId.SUPER_FANG ], + [ 25, MoveId.AFTER_YOU ], + [ 29, MoveId.FOCUS_ENERGY ], + [ 32, MoveId.PSYCH_UP ], + [ 36, MoveId.HYPER_FANG ], + [ 39, MoveId.NASTY_PLOT ], + [ 43, MoveId.MEAN_LOOK ], + [ 46, MoveId.BATON_PASS ], + [ 50, MoveId.SLAM ], + ], + [SpeciesId.LILLIPUP]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 4, MoveId.WORK_UP ], + [ 8, MoveId.BITE ], + [ 12, MoveId.RETALIATE ], + [ 17, MoveId.BABY_DOLL_EYES ], + [ 20, MoveId.PLAY_ROUGH ], + [ 24, MoveId.CRUNCH ], + [ 28, MoveId.TAKE_DOWN ], + [ 32, MoveId.HELPING_HAND ], + [ 36, MoveId.REVERSAL ], + [ 40, MoveId.ROAR ], + [ 44, MoveId.LAST_RESORT ], + [ 48, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.HERDIER]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.BITE ], + [ 1, MoveId.WORK_UP ], + [ 12, MoveId.RETALIATE ], + [ 19, MoveId.BABY_DOLL_EYES ], + [ 24, MoveId.PLAY_ROUGH ], + [ 30, MoveId.CRUNCH ], + [ 36, MoveId.TAKE_DOWN ], + [ 42, MoveId.HELPING_HAND ], + [ 48, MoveId.REVERSAL ], + [ 54, MoveId.ROAR ], + [ 60, MoveId.LAST_RESORT ], + [ 66, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.STOUTLAND]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.BITE ], + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.FIRE_FANG ], + [ 1, MoveId.WORK_UP ], + [ 12, MoveId.RETALIATE ], + [ 19, MoveId.BABY_DOLL_EYES ], + [ 24, MoveId.PLAY_ROUGH ], + [ 30, MoveId.CRUNCH ], + [ 38, MoveId.TAKE_DOWN ], + [ 46, MoveId.HELPING_HAND ], + [ 54, MoveId.REVERSAL ], + [ 62, MoveId.ROAR ], + [ 70, MoveId.LAST_RESORT ], + [ 78, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.PURRLOIN]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 4, MoveId.SAND_ATTACK ], + [ 5, MoveId.FAKE_OUT ], + [ 12, MoveId.FURY_SWIPES ], + [ 16, MoveId.TORMENT ], + [ 21, MoveId.ASSURANCE ], + [ 24, MoveId.HONE_CLAWS ], + [ 28, MoveId.SUCKER_PUNCH ], + [ 32, MoveId.NASTY_PLOT ], + [ 36, MoveId.NIGHT_SLASH ], + [ 40, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.LIEPARD]: [ + [ 1, MoveId.ASSIST ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.FAKE_OUT ], + [ 12, MoveId.FURY_SWIPES ], + [ 16, MoveId.TORMENT ], + [ 23, MoveId.ASSURANCE ], + [ 28, MoveId.HONE_CLAWS ], + [ 34, MoveId.SUCKER_PUNCH ], + [ 40, MoveId.NASTY_PLOT ], + [ 46, MoveId.NIGHT_SLASH ], + [ 52, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.PANSAGE]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.PLAY_NICE ], + [ 4, MoveId.LEER ], + [ 7, MoveId.LICK ], + [ 10, MoveId.VINE_WHIP ], + [ 13, MoveId.FURY_SWIPES ], + [ 16, MoveId.LEECH_SEED ], + [ 19, MoveId.BITE ], + [ 22, MoveId.SEED_BOMB ], + [ 25, MoveId.TORMENT ], + [ 28, MoveId.FLING ], + [ 31, MoveId.ACROBATICS ], + [ 34, MoveId.GRASS_KNOT ], + [ 37, MoveId.RECYCLE ], + [ 40, MoveId.NATURAL_GIFT ], + [ 43, MoveId.CRUNCH ], + ], + [SpeciesId.SIMISAGE]: [ // Previous Stage Relearn Learnset - [ RELEARN_MOVE, Moves.SCRATCH ], - [ RELEARN_MOVE, Moves.PLAY_NICE ], - [ RELEARN_MOVE, Moves.VINE_WHIP ], - [ RELEARN_MOVE, Moves.LEECH_SEED ], - [ RELEARN_MOVE, Moves.BITE ], - [ RELEARN_MOVE, Moves.TORMENT ], - [ RELEARN_MOVE, Moves.FLING ], - [ RELEARN_MOVE, Moves.ACROBATICS ], - [ RELEARN_MOVE, Moves.GRASS_KNOT ], - [ RELEARN_MOVE, Moves.RECYCLE ], - [ RELEARN_MOVE, Moves.NATURAL_GIFT ], - [ RELEARN_MOVE, Moves.CRUNCH ], - [ 1, Moves.LEER ], - [ 1, Moves.LICK ], - [ 1, Moves.FURY_SWIPES ], - [ 1, Moves.SEED_BOMB ], + [ RELEARN_MOVE, MoveId.SCRATCH ], + [ RELEARN_MOVE, MoveId.PLAY_NICE ], + [ RELEARN_MOVE, MoveId.VINE_WHIP ], + [ RELEARN_MOVE, MoveId.LEECH_SEED ], + [ RELEARN_MOVE, MoveId.BITE ], + [ RELEARN_MOVE, MoveId.TORMENT ], + [ RELEARN_MOVE, MoveId.FLING ], + [ RELEARN_MOVE, MoveId.ACROBATICS ], + [ RELEARN_MOVE, MoveId.GRASS_KNOT ], + [ RELEARN_MOVE, MoveId.RECYCLE ], + [ RELEARN_MOVE, MoveId.NATURAL_GIFT ], + [ RELEARN_MOVE, MoveId.CRUNCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.LICK ], + [ 1, MoveId.FURY_SWIPES ], + [ 1, MoveId.SEED_BOMB ], ], - [Species.PANSEAR]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.PLAY_NICE ], - [ 4, Moves.LEER ], - [ 7, Moves.LICK ], - [ 10, Moves.INCINERATE ], - [ 13, Moves.FURY_SWIPES ], - [ 16, Moves.YAWN ], - [ 19, Moves.BITE ], - [ 22, Moves.FLAME_BURST ], - [ 25, Moves.AMNESIA ], - [ 28, Moves.FLING ], - [ 31, Moves.ACROBATICS ], - [ 34, Moves.FIRE_BLAST ], - [ 37, Moves.RECYCLE ], - [ 40, Moves.NATURAL_GIFT ], - [ 43, Moves.CRUNCH ], + [SpeciesId.PANSEAR]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.PLAY_NICE ], + [ 4, MoveId.LEER ], + [ 7, MoveId.LICK ], + [ 10, MoveId.INCINERATE ], + [ 13, MoveId.FURY_SWIPES ], + [ 16, MoveId.YAWN ], + [ 19, MoveId.BITE ], + [ 22, MoveId.FLAME_BURST ], + [ 25, MoveId.AMNESIA ], + [ 28, MoveId.FLING ], + [ 31, MoveId.ACROBATICS ], + [ 34, MoveId.FIRE_BLAST ], + [ 37, MoveId.RECYCLE ], + [ 40, MoveId.NATURAL_GIFT ], + [ 43, MoveId.CRUNCH ], ], - [Species.SIMISEAR]: [ + [SpeciesId.SIMISEAR]: [ // Previous Stage Relearn Learnset - [ RELEARN_MOVE, Moves.SCRATCH ], - [ RELEARN_MOVE, Moves.PLAY_NICE ], - [ RELEARN_MOVE, Moves.INCINERATE ], - [ RELEARN_MOVE, Moves.YAWN ], - [ RELEARN_MOVE, Moves.BITE ], - [ RELEARN_MOVE, Moves.AMNESIA ], - [ RELEARN_MOVE, Moves.FLING ], - [ RELEARN_MOVE, Moves.ACROBATICS ], - [ RELEARN_MOVE, Moves.FIRE_BLAST ], - [ RELEARN_MOVE, Moves.RECYCLE ], - [ RELEARN_MOVE, Moves.NATURAL_GIFT ], - [ RELEARN_MOVE, Moves.CRUNCH ], - [ 1, Moves.LEER ], - [ 1, Moves.LICK ], - [ 1, Moves.FURY_SWIPES ], - [ 1, Moves.FLAME_BURST ], + [ RELEARN_MOVE, MoveId.SCRATCH ], + [ RELEARN_MOVE, MoveId.PLAY_NICE ], + [ RELEARN_MOVE, MoveId.INCINERATE ], + [ RELEARN_MOVE, MoveId.YAWN ], + [ RELEARN_MOVE, MoveId.BITE ], + [ RELEARN_MOVE, MoveId.AMNESIA ], + [ RELEARN_MOVE, MoveId.FLING ], + [ RELEARN_MOVE, MoveId.ACROBATICS ], + [ RELEARN_MOVE, MoveId.FIRE_BLAST ], + [ RELEARN_MOVE, MoveId.RECYCLE ], + [ RELEARN_MOVE, MoveId.NATURAL_GIFT ], + [ RELEARN_MOVE, MoveId.CRUNCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.LICK ], + [ 1, MoveId.FURY_SWIPES ], + [ 1, MoveId.FLAME_BURST ], ], - [Species.PANPOUR]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.PLAY_NICE ], - [ 4, Moves.LEER ], - [ 7, Moves.LICK ], - [ 10, Moves.WATER_GUN ], - [ 13, Moves.FURY_SWIPES ], - [ 16, Moves.WATER_SPORT ], - [ 19, Moves.BITE ], - [ 22, Moves.SCALD ], - [ 25, Moves.TAUNT ], - [ 28, Moves.FLING ], - [ 31, Moves.ACROBATICS ], - [ 34, Moves.BRINE ], - [ 37, Moves.RECYCLE ], - [ 40, Moves.NATURAL_GIFT ], - [ 43, Moves.CRUNCH ], + [SpeciesId.PANPOUR]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.PLAY_NICE ], + [ 4, MoveId.LEER ], + [ 7, MoveId.LICK ], + [ 10, MoveId.WATER_GUN ], + [ 13, MoveId.FURY_SWIPES ], + [ 16, MoveId.WATER_SPORT ], + [ 19, MoveId.BITE ], + [ 22, MoveId.SCALD ], + [ 25, MoveId.TAUNT ], + [ 28, MoveId.FLING ], + [ 31, MoveId.ACROBATICS ], + [ 34, MoveId.BRINE ], + [ 37, MoveId.RECYCLE ], + [ 40, MoveId.NATURAL_GIFT ], + [ 43, MoveId.CRUNCH ], ], - [Species.SIMIPOUR]: [ + [SpeciesId.SIMIPOUR]: [ // Previous Stage Relearn Learnset - [ RELEARN_MOVE, Moves.SCRATCH ], - [ RELEARN_MOVE, Moves.PLAY_NICE ], - [ RELEARN_MOVE, Moves.WATER_GUN ], - [ RELEARN_MOVE, Moves.WATER_SPORT ], - [ RELEARN_MOVE, Moves.BITE ], - [ RELEARN_MOVE, Moves.TAUNT ], - [ RELEARN_MOVE, Moves.FLING ], - [ RELEARN_MOVE, Moves.ACROBATICS ], - [ RELEARN_MOVE, Moves.BRINE ], - [ RELEARN_MOVE, Moves.RECYCLE ], - [ RELEARN_MOVE, Moves.NATURAL_GIFT ], - [ RELEARN_MOVE, Moves.CRUNCH ], - [ 1, Moves.LEER ], - [ 1, Moves.LICK ], - [ 1, Moves.FURY_SWIPES ], - [ 1, Moves.SCALD ], - ], - [Species.MUNNA]: [ - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.STORED_POWER ], - [ 1, Moves.PSYWAVE ], - [ 4, Moves.HYPNOSIS ], - [ 8, Moves.PSYBEAM ], - [ 12, Moves.IMPRISON ], - [ 16, Moves.MOONLIGHT ], - [ 20, Moves.MAGIC_COAT ], - [ 24, Moves.ZEN_HEADBUTT ], - [ 28, Moves.CALM_MIND ], - [ 32, Moves.YAWN ], - [ 36, Moves.PSYCHIC ], - [ 40, Moves.MOONBLAST ], - [ 44, Moves.DREAM_EATER ], - [ 48, Moves.FUTURE_SIGHT ], - [ 52, Moves.WONDER_ROOM ], - ], - [Species.MUSHARNA]: [ - [ 1, Moves.PSYWAVE ], // Previous Stage Move - [ 1, Moves.PSYBEAM ], - [ 1, Moves.PSYCHIC ], - [ 1, Moves.HYPNOSIS ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.LUCKY_CHANT ], - [ 1, Moves.DREAM_EATER ], - [ 1, Moves.MOONLIGHT ], - [ 1, Moves.FUTURE_SIGHT ], - [ 1, Moves.MAGIC_COAT ], - [ 1, Moves.YAWN ], - [ 1, Moves.IMPRISON ], - [ 1, Moves.CALM_MIND ], - [ 1, Moves.ZEN_HEADBUTT ], - [ 1, Moves.WONDER_ROOM ], - [ 1, Moves.STORED_POWER ], - [ 1, Moves.MOONBLAST ], - [ 1, Moves.PSYCHIC_TERRAIN ], - ], - [Species.PIDOVE]: [ - [ 1, Moves.GUST ], - [ 1, Moves.GROWL ], - [ 4, Moves.LEER ], - [ 8, Moves.QUICK_ATTACK ], - [ 12, Moves.TAUNT ], - [ 16, Moves.AIR_CUTTER ], - [ 20, Moves.SWAGGER ], - [ 24, Moves.FEATHER_DANCE ], - [ 28, Moves.DETECT ], - [ 32, Moves.AIR_SLASH ], - [ 36, Moves.ROOST ], - [ 40, Moves.TAILWIND ], - [ 44, Moves.SKY_ATTACK ], - ], - [Species.TRANQUILL]: [ - [ 1, Moves.GUST ], - [ 1, Moves.LEER ], - [ 1, Moves.GROWL ], - [ 1, Moves.QUICK_ATTACK ], - [ 12, Moves.TAUNT ], - [ 16, Moves.AIR_CUTTER ], - [ 20, Moves.SWAGGER ], - [ 26, Moves.FEATHER_DANCE ], - [ 34, Moves.DETECT ], - [ 38, Moves.AIR_SLASH ], - [ 44, Moves.ROOST ], - [ 50, Moves.TAILWIND ], - [ 56, Moves.SKY_ATTACK ], - ], - [Species.UNFEZANT]: [ - [ 1, Moves.GUST ], - [ 1, Moves.LEER ], - [ 1, Moves.GROWL ], - [ 1, Moves.QUICK_ATTACK ], - [ 12, Moves.TAUNT ], - [ 16, Moves.AIR_CUTTER ], - [ 20, Moves.SWAGGER ], - [ 26, Moves.FEATHER_DANCE ], - [ 36, Moves.DETECT ], - [ 42, Moves.AIR_SLASH ], - [ 50, Moves.ROOST ], - [ 58, Moves.TAILWIND ], - [ 66, Moves.SKY_ATTACK ], - ], - [Species.BLITZLE]: [ - [ 1, Moves.QUICK_ATTACK ], - [ 4, Moves.TAIL_WHIP ], - [ 8, Moves.CHARGE ], - [ 11, Moves.SHOCK_WAVE ], - [ 15, Moves.THUNDER_WAVE ], - [ 18, Moves.FLAME_CHARGE ], - [ 22, Moves.SPARK ], - [ 25, Moves.STOMP ], - [ 29, Moves.DISCHARGE ], - [ 33, Moves.AGILITY ], - [ 35, Moves.WILD_CHARGE ], - [ 40, Moves.THRASH ], - ], - [Species.ZEBSTRIKA]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.CHARGE ], - [ 1, Moves.ION_DELUGE ], - [ 11, Moves.SHOCK_WAVE ], - [ 18, Moves.FLAME_CHARGE ], - [ 25, Moves.SPARK ], - [ 31, Moves.STOMP ], - [ 36, Moves.DISCHARGE ], - [ 42, Moves.AGILITY ], - [ 47, Moves.WILD_CHARGE ], - [ 53, Moves.THRASH ], - ], - [Species.ROGGENROLA]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 4, Moves.HARDEN ], - [ 8, Moves.STEALTH_ROCK ], - [ 12, Moves.MUD_SLAP ], - [ 16, Moves.SMACK_DOWN ], - [ 20, Moves.IRON_DEFENSE ], - [ 24, Moves.HEADBUTT ], - [ 28, Moves.ROCK_SLIDE ], - [ 32, Moves.ROCK_BLAST ], - [ 36, Moves.SANDSTORM ], - [ 40, Moves.STONE_EDGE ], - [ 44, Moves.EXPLOSION ], - ], - [Species.BOLDORE]: [ - [ EVOLVE_MOVE, Moves.POWER_GEM ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.STEALTH_ROCK ], - [ 12, Moves.MUD_SLAP ], - [ 16, Moves.SMACK_DOWN ], - [ 20, Moves.IRON_DEFENSE ], - [ 24, Moves.HEADBUTT ], - [ 30, Moves.ROCK_SLIDE ], - [ 36, Moves.ROCK_BLAST ], - [ 42, Moves.SANDSTORM ], - [ 48, Moves.STONE_EDGE ], - [ 54, Moves.EXPLOSION ], - ], - [Species.GIGALITH]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.POWER_GEM ], - [ 1, Moves.STEALTH_ROCK ], - [ 12, Moves.MUD_SLAP ], - [ 16, Moves.SMACK_DOWN ], - [ 20, Moves.IRON_DEFENSE ], - [ 24, Moves.HEADBUTT ], - [ 30, Moves.ROCK_SLIDE ], - [ 36, Moves.ROCK_BLAST ], - [ 42, Moves.SANDSTORM ], - [ 48, Moves.STONE_EDGE ], - [ 54, Moves.EXPLOSION ], - ], - [Species.WOOBAT]: [ - [ 1, Moves.GUST ], - [ 1, Moves.ATTRACT ], - [ 5, Moves.CONFUSION ], - [ 10, Moves.ENDEAVOR ], - [ 15, Moves.AIR_CUTTER ], - [ 20, Moves.IMPRISON ], - [ 25, Moves.ASSURANCE ], - [ 30, Moves.AMNESIA ], - [ 35, Moves.AIR_SLASH ], - [ 40, Moves.PSYCHIC ], - [ 45, Moves.CALM_MIND ], - [ 50, Moves.FUTURE_SIGHT ], - [ 55, Moves.SIMPLE_BEAM ], - ], - [Species.SWOOBAT]: [ - [ 1, Moves.GUST ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.ATTRACT ], - [ 1, Moves.ENDEAVOR ], - [ 15, Moves.AIR_CUTTER ], - [ 20, Moves.IMPRISON ], - [ 25, Moves.ASSURANCE ], - [ 30, Moves.AMNESIA ], - [ 35, Moves.AIR_SLASH ], - [ 40, Moves.PSYCHIC ], - [ 45, Moves.CALM_MIND ], - [ 50, Moves.FUTURE_SIGHT ], - [ 55, Moves.SIMPLE_BEAM ], - ], - [Species.DRILBUR]: [ - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.MUD_SPORT ], - [ 4, Moves.SCRATCH ], - [ 8, Moves.HONE_CLAWS ], - [ 12, Moves.FURY_SWIPES ], - [ 16, Moves.METAL_CLAW ], - [ 20, Moves.SANDSTORM ], - [ 24, Moves.CRUSH_CLAW ], - [ 28, Moves.ROCK_SLIDE ], - [ 32, Moves.DIG ], - [ 36, Moves.SWORDS_DANCE ], - [ 40, Moves.DRILL_RUN ], - [ 44, Moves.EARTHQUAKE ], - [ 48, Moves.FISSURE ], - ], - [Species.EXCADRILL]: [ - [ EVOLVE_MOVE, Moves.HORN_DRILL ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.MUD_SPORT ], - [ 1, Moves.ROTOTILLER ], - [ 1, Moves.HONE_CLAWS ], - [ 12, Moves.FURY_SWIPES ], - [ 16, Moves.METAL_CLAW ], - [ 20, Moves.SANDSTORM ], - [ 24, Moves.CRUSH_CLAW ], - [ 28, Moves.ROCK_SLIDE ], - [ 34, Moves.DIG ], - [ 40, Moves.SWORDS_DANCE ], - [ 46, Moves.DRILL_RUN ], - [ 52, Moves.EARTHQUAKE ], - [ 58, Moves.FISSURE ], - ], - [Species.AUDINO]: [ - [ 1, Moves.POUND ], - [ 1, Moves.PLAY_NICE ], - [ 4, Moves.DISARMING_VOICE ], - [ 9, Moves.BABY_DOLL_EYES ], - [ 12, Moves.HELPING_HAND ], - [ 16, Moves.GROWL ], - [ 20, Moves.ZEN_HEADBUTT ], - [ 24, Moves.LIFE_DEW ], - [ 28, Moves.AFTER_YOU ], - [ 32, Moves.TAKE_DOWN ], - [ 36, Moves.SIMPLE_BEAM ], - [ 40, Moves.HYPER_VOICE ], - [ 44, Moves.HEAL_PULSE ], - [ 48, Moves.DOUBLE_EDGE ], - [ 52, Moves.ENTRAINMENT ], - [ 56, Moves.MISTY_TERRAIN ], - [ 60, Moves.LAST_RESORT ], - ], - [Species.TIMBURR]: [ - [ 1, Moves.POUND ], - [ 1, Moves.LEER ], - [ 4, Moves.LOW_KICK ], - [ 8, Moves.ROCK_THROW ], - [ 12, Moves.FOCUS_ENERGY ], - [ 16, Moves.BULK_UP ], - [ 20, Moves.ROCK_SLIDE ], - [ 24, Moves.SLAM ], - [ 28, Moves.SCARY_FACE ], - [ 32, Moves.DYNAMIC_PUNCH ], - [ 36, Moves.HAMMER_ARM ], - [ 40, Moves.STONE_EDGE ], - [ 44, Moves.SUPERPOWER ], - [ 48, Moves.FOCUS_PUNCH ], - ], - [Species.GURDURR]: [ - [ 1, Moves.POUND ], - [ 1, Moves.LEER ], - [ 1, Moves.LOW_KICK ], - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.BIDE ], - [ 12, Moves.FOCUS_ENERGY ], - [ 16, Moves.BULK_UP ], - [ 20, Moves.ROCK_SLIDE ], - [ 24, Moves.SLAM ], - [ 30, Moves.SCARY_FACE ], - [ 36, Moves.DYNAMIC_PUNCH ], - [ 42, Moves.HAMMER_ARM ], - [ 48, Moves.STONE_EDGE ], - [ 54, Moves.SUPERPOWER ], - [ 60, Moves.FOCUS_PUNCH ], - ], - [Species.CONKELDURR]: [ - [ 1, Moves.POUND ], - [ 1, Moves.LEER ], - [ 1, Moves.LOW_KICK ], - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.BIDE ], - [ 12, Moves.FOCUS_ENERGY ], - [ 16, Moves.BULK_UP ], - [ 20, Moves.ROCK_SLIDE ], - [ 24, Moves.SLAM ], - [ 30, Moves.SCARY_FACE ], - [ 36, Moves.DYNAMIC_PUNCH ], - [ 42, Moves.HAMMER_ARM ], - [ 48, Moves.STONE_EDGE ], - [ 54, Moves.SUPERPOWER ], - [ 60, Moves.FOCUS_PUNCH ], - ], - [Species.TYMPOLE]: [ - [ 1, Moves.BUBBLE ], //USUM - [ 1, Moves.GROWL ], - [ 1, Moves.ECHOED_VOICE ], - [ 4, Moves.ACID ], - [ 8, Moves.SUPERSONIC ], - [ 12, Moves.MUD_SHOT ], - [ 16, Moves.ROUND ], - [ 20, Moves.BUBBLE_BEAM ], - [ 24, Moves.FLAIL ], - [ 28, Moves.UPROAR ], - [ 32, Moves.AQUA_RING ], - [ 36, Moves.HYPER_VOICE ], - [ 40, Moves.MUDDY_WATER ], - [ 44, Moves.RAIN_DANCE ], - [ 48, Moves.HYDRO_PUMP ], - ], - [Species.PALPITOAD]: [ - [ 1, Moves.BUBBLE ], //USUM - [ 1, Moves.GROWL ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.ACID ], - [ 1, Moves.ECHOED_VOICE ], - [ 12, Moves.MUD_SHOT ], - [ 16, Moves.ROUND ], - [ 20, Moves.BUBBLE_BEAM ], - [ 24, Moves.FLAIL ], - [ 30, Moves.UPROAR ], - [ 37, Moves.AQUA_RING ], - [ 42, Moves.HYPER_VOICE ], - [ 48, Moves.MUDDY_WATER ], - [ 54, Moves.RAIN_DANCE ], - [ 60, Moves.HYDRO_PUMP ], - ], - [Species.SEISMITOAD]: [ - [ EVOLVE_MOVE, Moves.DRAIN_PUNCH ], - [ 1, Moves.BUBBLE ], //USUM - [ 1, Moves.GROWL ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.ACID ], - [ 1, Moves.GASTRO_ACID ], - [ 1, Moves.ECHOED_VOICE ], - [ 12, Moves.MUD_SHOT ], - [ 16, Moves.ROUND ], - [ 20, Moves.BUBBLE_BEAM ], - [ 24, Moves.FLAIL ], - [ 30, Moves.UPROAR ], - [ 39, Moves.AQUA_RING ], - [ 46, Moves.HYPER_VOICE ], - [ 54, Moves.MUDDY_WATER ], - [ 62, Moves.RAIN_DANCE ], - [ 70, Moves.HYDRO_PUMP ], - ], - [Species.THROH]: [ - [ 1, Moves.ROCK_SMASH ], // Custom - [ 1, Moves.LEER ], - [ 1, Moves.BIDE ], - [ 1, Moves.MAT_BLOCK ], - [ 1, Moves.BIND ], - [ 5, Moves.FOCUS_ENERGY ], - [ 10, Moves.CIRCLE_THROW ], - [ 15, Moves.WIDE_GUARD ], - [ 20, Moves.REVENGE ], - [ 25, Moves.BULK_UP ], - [ 30, Moves.STORM_THROW ], - [ 35, Moves.VITAL_THROW ], - [ 40, Moves.SEISMIC_TOSS ], - [ 45, Moves.ENDURE ], - [ 50, Moves.REVERSAL ], - [ 55, Moves.SUPERPOWER ], - ], - [Species.SAWK]: [ - [ 1, Moves.LEER ], - [ 1, Moves.ROCK_SMASH ], - [ 1, Moves.BIDE ], - [ 5, Moves.FOCUS_ENERGY ], - [ 10, Moves.DOUBLE_KICK ], - [ 15, Moves.QUICK_GUARD ], - [ 20, Moves.LOW_SWEEP ], - [ 25, Moves.BULK_UP ], - [ 30, Moves.RETALIATE ], - [ 35, Moves.BRICK_BREAK ], - [ 40, Moves.COUNTER ], - [ 45, Moves.ENDURE ], - [ 50, Moves.REVERSAL ], - [ 55, Moves.CLOSE_COMBAT ], - ], - [Species.SEWADDLE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.STRING_SHOT ], - [ 8, Moves.BUG_BITE ], - [ 15, Moves.RAZOR_LEAF ], - [ 22, Moves.STRUGGLE_BUG ], - [ 29, Moves.ENDURE ], - [ 31, Moves.STICKY_WEB ], - [ 36, Moves.BUG_BUZZ ], - [ 43, Moves.FLAIL ], - ], - [Species.SWADLOON]: [ - [ EVOLVE_MOVE, Moves.PROTECT ], - [ 1, Moves.TACKLE ], - [ 1, Moves.RAZOR_LEAF ], - [ 1, Moves.STRING_SHOT ], - [ 1, Moves.BUG_BITE ], - [ 1, Moves.GRASS_WHISTLE ], - [ 22, Moves.STRUGGLE_BUG ], - [ 29, Moves.ENDURE ], - [ 31, Moves.STICKY_WEB ], - [ 36, Moves.BUG_BUZZ ], - [ 43, Moves.FLAIL ], - ], - [Species.LEAVANNY]: [ - [ EVOLVE_MOVE, Moves.SLASH ], - [ RELEARN_MOVE, Moves.BUG_BITE ], - [ RELEARN_MOVE, Moves.STICKY_WEB ], // Previous Stage Move - [ RELEARN_MOVE, Moves.BUG_BUZZ ], // Previous Stage Move - [ 1, Moves.PROTECT ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.RAZOR_LEAF ], - [ 1, Moves.STRING_SHOT ], - [ 1, Moves.GRASS_WHISTLE ], // Previous Stage Move - [ 1, Moves.ENDURE ], // Previous Stage Move - [ 1, Moves.FLAIL ], // Previous Stage Move - [ 1, Moves.FALSE_SWIPE ], - [ 22, Moves.STRUGGLE_BUG ], - [ 29, Moves.FELL_STINGER ], - [ 32, Moves.HELPING_HAND ], - [ 36, Moves.LEAF_BLADE ], - [ 39, Moves.X_SCISSOR ], - [ 43, Moves.ENTRAINMENT ], - [ 46, Moves.SWORDS_DANCE ], - [ 50, Moves.LEAF_STORM ], - ], - [Species.VENIPEDE]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.DEFENSE_CURL ], - [ 4, Moves.ROLLOUT ], - [ 8, Moves.PROTECT ], - [ 12, Moves.POISON_TAIL ], - [ 16, Moves.SCREECH ], - [ 20, Moves.BUG_BITE ], - [ 24, Moves.VENOSHOCK ], - [ 28, Moves.TAKE_DOWN ], - [ 32, Moves.AGILITY ], - [ 36, Moves.TOXIC ], - [ 40, Moves.VENOM_DRENCH ], - [ 44, Moves.DOUBLE_EDGE ], - ], - [Species.WHIRLIPEDE]: [ - [ EVOLVE_MOVE, Moves.IRON_DEFENSE ], - [ 1, Moves.POISON_STING ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.PROTECT ], - [ 1, Moves.ROLLOUT ], - [ 12, Moves.POISON_TAIL ], - [ 16, Moves.SCREECH ], - [ 20, Moves.BUG_BITE ], - [ 26, Moves.VENOSHOCK ], - [ 32, Moves.TAKE_DOWN ], - [ 38, Moves.AGILITY ], - [ 44, Moves.TOXIC ], - [ 50, Moves.VENOM_DRENCH ], - [ 56, Moves.DOUBLE_EDGE ], - ], - [Species.SCOLIPEDE]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.PROTECT ], - [ 1, Moves.ROLLOUT ], - [ 1, Moves.BATON_PASS ], - [ 1, Moves.IRON_DEFENSE ], - [ 12, Moves.POISON_TAIL ], - [ 16, Moves.SCREECH ], - [ 20, Moves.BUG_BITE ], - [ 26, Moves.VENOSHOCK ], - [ 34, Moves.TAKE_DOWN ], - [ 42, Moves.AGILITY ], - [ 50, Moves.TOXIC ], - [ 58, Moves.VENOM_DRENCH ], - [ 66, Moves.DOUBLE_EDGE ], - [ 74, Moves.MEGAHORN ], - ], - [Species.COTTONEE]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.HELPING_HAND ], - [ 3, Moves.FAIRY_WIND ], - [ 6, Moves.STUN_SPORE ], - [ 12, Moves.MEGA_DRAIN ], - [ 15, Moves.RAZOR_LEAF ], - [ 18, Moves.GROWTH ], - [ 21, Moves.POISON_POWDER ], - [ 24, Moves.GIGA_DRAIN ], - [ 27, Moves.CHARM ], - [ 30, Moves.LEECH_SEED ], - [ 33, Moves.COTTON_SPORE ], - [ 36, Moves.ENERGY_BALL ], - [ 39, Moves.SUNNY_DAY ], - [ 42, Moves.ENDEAVOR ], - [ 45, Moves.COTTON_GUARD ], - [ 48, Moves.SOLAR_BEAM ], - ], - [Species.WHIMSICOTT]: [ - [ 1, Moves.GUST ], - [ 1, Moves.ABSORB ], - [ 1, Moves.MEGA_DRAIN ], - [ 1, Moves.LEECH_SEED ], - [ 1, Moves.GROWTH ], - [ 1, Moves.RAZOR_LEAF ], - [ 1, Moves.SOLAR_BEAM ], - [ 1, Moves.POISON_POWDER ], - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.COTTON_SPORE ], - [ 1, Moves.GIGA_DRAIN ], - [ 1, Moves.CHARM ], - [ 1, Moves.SUNNY_DAY ], - [ 1, Moves.MEMENTO ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.ENDEAVOR ], - [ 1, Moves.TAILWIND ], - [ 1, Moves.ENERGY_BALL ], - [ 1, Moves.COTTON_GUARD ], - [ 1, Moves.HURRICANE ], - [ 1, Moves.FAIRY_WIND ], - [ 1, Moves.MOONBLAST ], - ], - [Species.PETILIL]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.GROWTH ], - [ 3, Moves.HELPING_HAND ], - [ 6, Moves.STUN_SPORE ], - [ 9, Moves.MEGA_DRAIN ], - [ 12, Moves.CHARM ], - [ 15, Moves.MAGICAL_LEAF ], - [ 18, Moves.SLEEP_POWDER ], - [ 21, Moves.GIGA_DRAIN ], - [ 24, Moves.LEECH_SEED ], - [ 27, Moves.AFTER_YOU ], - [ 30, Moves.ENERGY_BALL ], - [ 33, Moves.SYNTHESIS ], - [ 36, Moves.SUNNY_DAY ], - [ 39, Moves.ENTRAINMENT ], - [ 42, Moves.LEAF_STORM ], - ], - [Species.LILLIGANT]: [ - [ EVOLVE_MOVE, Moves.PETAL_DANCE ], - [ 1, Moves.ABSORB ], - [ 1, Moves.MEGA_DRAIN ], - [ 1, Moves.LEECH_SEED ], - [ 1, Moves.GROWTH ], - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.SLEEP_POWDER ], - [ 1, Moves.GIGA_DRAIN ], - [ 1, Moves.CHARM ], - [ 1, Moves.SYNTHESIS ], - [ 1, Moves.SUNNY_DAY ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.TEETER_DANCE ], - [ 1, Moves.ENERGY_BALL ], - [ 1, Moves.LEAF_STORM ], - [ 1, Moves.QUIVER_DANCE ], - [ 1, Moves.ENTRAINMENT ], - [ 1, Moves.AFTER_YOU ], - [ 1, Moves.PETAL_BLIZZARD ], - [ 5, Moves.MAGICAL_LEAF ], - ], - [Species.BASCULIN]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_GUN ], - [ 4, Moves.TACKLE ], - [ 8, Moves.FLAIL ], - [ 12, Moves.AQUA_JET ], - [ 16, Moves.BITE ], - [ 20, Moves.SCARY_FACE ], - [ 24, Moves.HEADBUTT ], - [ 28, Moves.SOAK ], - [ 32, Moves.CRUNCH ], - [ 36, Moves.TAKE_DOWN ], - [ 40, Moves.FINAL_GAMBIT ], - [ 44, Moves.WAVE_CRASH ], - [ 48, Moves.THRASH ], - [ 52, Moves.DOUBLE_EDGE ], - [ 56, Moves.HEAD_SMASH ], - ], - [Species.SANDILE]: [ - [ 1, Moves.LEER ], - [ 1, Moves.POWER_TRIP ], - [ 3, Moves.SAND_ATTACK ], - [ 6, Moves.HONE_CLAWS ], - [ 9, Moves.SAND_TOMB ], - [ 12, Moves.SCARY_FACE ], - [ 15, Moves.BITE ], - [ 18, Moves.TORMENT ], - [ 21, Moves.DIG ], - [ 24, Moves.SWAGGER ], - [ 27, Moves.CRUNCH ], - [ 30, Moves.SANDSTORM ], - [ 33, Moves.FOUL_PLAY ], - [ 36, Moves.EARTHQUAKE ], - [ 39, Moves.THRASH ], - ], - [Species.KROKOROK]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.LEER ], - [ 1, Moves.HONE_CLAWS ], - [ 1, Moves.POWER_TRIP ], - [ 9, Moves.SAND_TOMB ], - [ 12, Moves.SCARY_FACE ], - [ 15, Moves.BITE ], - [ 18, Moves.TORMENT ], - [ 21, Moves.DIG ], - [ 24, Moves.SWAGGER ], - [ 27, Moves.CRUNCH ], - [ 32, Moves.SANDSTORM ], - [ 35, Moves.FOUL_PLAY ], - [ 42, Moves.EARTHQUAKE ], - [ 47, Moves.THRASH ], - ], - [Species.KROOKODILE]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.LEER ], - [ 1, Moves.HONE_CLAWS ], - [ 1, Moves.POWER_TRIP ], - [ 9, Moves.SAND_TOMB ], - [ 12, Moves.SCARY_FACE ], - [ 15, Moves.BITE ], - [ 18, Moves.TORMENT ], - [ 21, Moves.DIG ], - [ 24, Moves.SWAGGER ], - [ 27, Moves.CRUNCH ], - [ 32, Moves.SANDSTORM ], - [ 35, Moves.FOUL_PLAY ], - [ 44, Moves.EARTHQUAKE ], - [ 51, Moves.THRASH ], - [ 58, Moves.OUTRAGE ], - ], - [Species.DARUMAKA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.EMBER ], - [ 4, Moves.TAUNT ], - [ 8, Moves.BITE ], - [ 12, Moves.INCINERATE ], - [ 16, Moves.WORK_UP ], - [ 20, Moves.FIRE_FANG ], - [ 24, Moves.HEADBUTT ], - [ 28, Moves.FIRE_PUNCH ], - [ 32, Moves.UPROAR ], - [ 36, Moves.BELLY_DRUM ], - [ 40, Moves.FLARE_BLITZ ], - [ 44, Moves.THRASH ], - [ 48, Moves.SUPERPOWER ], - ], - [Species.DARMANITAN]: [ - [ EVOLVE_MOVE, Moves.HAMMER_ARM ], - [ 1, Moves.TACKLE ], - [ 1, Moves.BITE ], - [ 1, Moves.EMBER ], - [ 1, Moves.TAUNT ], - [ 12, Moves.INCINERATE ], - [ 16, Moves.WORK_UP ], - [ 20, Moves.FIRE_FANG ], - [ 24, Moves.HEADBUTT ], - [ 28, Moves.FIRE_PUNCH ], - [ 32, Moves.UPROAR ], - [ 38, Moves.BELLY_DRUM ], - [ 44, Moves.FLARE_BLITZ ], - [ 50, Moves.THRASH ], - [ 56, Moves.SUPERPOWER ], - ], - [Species.MARACTUS]: [ - [ 1, Moves.PECK ], - [ 1, Moves.ABSORB ], - [ 1, Moves.INGRAIN ], - [ 1, Moves.AFTER_YOU ], - [ 1, Moves.SPIKY_SHIELD ], - [ 4, Moves.GROWTH ], - [ 8, Moves.MEGA_DRAIN ], - [ 12, Moves.LEECH_SEED ], - [ 16, Moves.SUCKER_PUNCH ], - [ 20, Moves.PIN_MISSILE ], - [ 24, Moves.GIGA_DRAIN ], - [ 28, Moves.SWEET_SCENT ], - [ 32, Moves.SYNTHESIS ], - [ 36, Moves.PETAL_BLIZZARD ], - [ 40, Moves.COTTON_SPORE ], - [ 44, Moves.SUNNY_DAY ], - [ 48, Moves.SOLAR_BEAM ], - [ 52, Moves.ACUPRESSURE ], - [ 56, Moves.PETAL_DANCE ], - [ 60, Moves.COTTON_GUARD ], - ], - [Species.DWEBBLE]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.FURY_CUTTER ], - [ 4, Moves.WITHDRAW ], - [ 8, Moves.SMACK_DOWN ], - [ 12, Moves.BUG_BITE ], - [ 16, Moves.FLAIL ], - [ 20, Moves.SLASH ], - [ 24, Moves.ROCK_SLIDE ], - [ 28, Moves.STEALTH_ROCK ], - [ 32, Moves.ROCK_BLAST ], - [ 36, Moves.X_SCISSOR ], - [ 40, Moves.ROCK_POLISH ], - [ 44, Moves.SHELL_SMASH ], - [ 48, Moves.ROCK_WRECKER ], - ], - [Species.CRUSTLE]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.SMACK_DOWN ], - [ 12, Moves.BUG_BITE ], - [ 16, Moves.FLAIL ], - [ 20, Moves.SLASH ], - [ 24, Moves.ROCK_SLIDE ], - [ 28, Moves.STEALTH_ROCK ], - [ 32, Moves.ROCK_BLAST ], - [ 38, Moves.X_SCISSOR ], - [ 44, Moves.ROCK_POLISH ], - [ 50, Moves.SHELL_SMASH ], - [ 56, Moves.ROCK_WRECKER ], - ], - [Species.SCRAGGY]: [ - [ 1, Moves.LEER ], - [ 1, Moves.LOW_KICK ], - [ 4, Moves.PAYBACK ], - [ 8, Moves.HEADBUTT ], - [ 12, Moves.SAND_ATTACK ], - [ 16, Moves.FACADE ], - [ 20, Moves.PROTECT ], - [ 24, Moves.BEAT_UP ], - [ 28, Moves.SCARY_FACE ], - [ 32, Moves.BRICK_BREAK ], - [ 36, Moves.SWAGGER ], - [ 40, Moves.CRUNCH ], - [ 44, Moves.HIGH_JUMP_KICK ], - [ 48, Moves.FOCUS_PUNCH ], - [ 52, Moves.HEAD_SMASH ], - ], - [Species.SCRAFTY]: [ - [ 1, Moves.HEADBUTT ], - [ 1, Moves.LEER ], - [ 1, Moves.LOW_KICK ], - [ 1, Moves.PAYBACK ], - [ 1, Moves.FEINT_ATTACK ], - [ 12, Moves.SAND_ATTACK ], - [ 16, Moves.FACADE ], - [ 20, Moves.PROTECT ], - [ 24, Moves.BEAT_UP ], - [ 28, Moves.SCARY_FACE ], - [ 32, Moves.BRICK_BREAK ], - [ 36, Moves.SWAGGER ], - [ 42, Moves.CRUNCH ], - [ 48, Moves.HIGH_JUMP_KICK ], - [ 54, Moves.FOCUS_PUNCH ], - [ 60, Moves.HEAD_SMASH ], - ], - [Species.SIGILYPH]: [ - [ 1, Moves.GUST ], - [ 1, Moves.CONFUSION ], - [ 5, Moves.GRAVITY ], - [ 10, Moves.HYPNOSIS ], - [ 15, Moves.AIR_CUTTER ], - [ 20, Moves.PSYBEAM ], - [ 25, Moves.WHIRLWIND ], - [ 30, Moves.COSMIC_POWER ], - [ 35, Moves.AIR_SLASH ], - [ 40, Moves.PSYCHIC ], - [ 45, Moves.TAILWIND ], - [ 50, Moves.LIGHT_SCREEN ], - [ 50, Moves.REFLECT ], - [ 55, Moves.SKY_ATTACK ], - [ 60, Moves.SKILL_SWAP ], - ], - [Species.YAMASK]: [ - [ 1, Moves.PROTECT ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.HEAL_BLOCK ], - [ 4, Moves.HAZE ], - [ 8, Moves.NIGHT_SHADE ], - [ 12, Moves.DISABLE ], - [ 16, Moves.WILL_O_WISP ], - [ 20, Moves.CRAFTY_SHIELD ], - [ 24, Moves.HEX ], - [ 28, Moves.MEAN_LOOK ], - [ 32, Moves.GRUDGE ], - [ 36, Moves.CURSE ], - [ 40, Moves.SHADOW_BALL ], - [ 44, Moves.DARK_PULSE ], - [ 48, Moves.GUARD_SPLIT ], - [ 48, Moves.POWER_SPLIT ], - [ 52, Moves.DESTINY_BOND ], - ], - [Species.COFAGRIGUS]: [ - [ EVOLVE_MOVE, Moves.SHADOW_CLAW ], - [ 1, Moves.NIGHT_SHADE ], - [ 1, Moves.HAZE ], - [ 1, Moves.PROTECT ], - [ 1, Moves.SCARY_FACE ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.HEAL_BLOCK ], - [ 12, Moves.DISABLE ], - [ 16, Moves.WILL_O_WISP ], - [ 20, Moves.CRAFTY_SHIELD ], - [ 24, Moves.HEX ], - [ 28, Moves.MEAN_LOOK ], - [ 32, Moves.GRUDGE ], - [ 38, Moves.CURSE ], - [ 44, Moves.SHADOW_BALL ], - [ 50, Moves.DARK_PULSE ], - [ 56, Moves.GUARD_SPLIT ], - [ 56, Moves.POWER_SPLIT ], - [ 62, Moves.DESTINY_BOND ], - ], - [Species.TIRTOUGA]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.BIDE ], - [ 3, Moves.PROTECT ], - [ 6, Moves.AQUA_JET ], - [ 9, Moves.SMACK_DOWN ], - [ 12, Moves.ANCIENT_POWER ], - [ 15, Moves.BITE ], - [ 18, Moves.WIDE_GUARD ], - [ 21, Moves.BRINE ], - [ 24, Moves.ROCK_SLIDE ], - [ 27, Moves.CRUNCH ], - [ 30, Moves.CURSE ], - [ 33, Moves.IRON_DEFENSE ], - [ 36, Moves.AQUA_TAIL ], - [ 39, Moves.RAIN_DANCE ], - [ 42, Moves.HYDRO_PUMP ], - [ 45, Moves.SHELL_SMASH ], - ], - [Species.CARRACOSTA]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.PROTECT ], - [ 1, Moves.AQUA_JET ], - [ 1, Moves.BIDE ], - [ 9, Moves.SMACK_DOWN ], - [ 12, Moves.ANCIENT_POWER ], - [ 15, Moves.BITE ], - [ 18, Moves.WIDE_GUARD ], - [ 21, Moves.BRINE ], - [ 24, Moves.ROCK_SLIDE ], - [ 27, Moves.CRUNCH ], - [ 30, Moves.CURSE ], - [ 33, Moves.IRON_DEFENSE ], - [ 36, Moves.AQUA_TAIL ], - [ 41, Moves.RAIN_DANCE ], - [ 46, Moves.HYDRO_PUMP ], - [ 51, Moves.SHELL_SMASH ], - ], - [Species.ARCHEN]: [ - [ 1, Moves.LEER ], - [ 1, Moves.QUICK_ATTACK ], - [ 3, Moves.ROCK_THROW ], - [ 6, Moves.WING_ATTACK ], - [ 9, Moves.DRAGON_BREATH ], - [ 12, Moves.ANCIENT_POWER ], - [ 15, Moves.PLUCK ], - [ 18, Moves.QUICK_GUARD ], - [ 21, Moves.U_TURN ], - [ 24, Moves.ROCK_SLIDE ], - [ 27, Moves.SCARY_FACE ], - [ 30, Moves.CRUNCH ], - [ 33, Moves.AGILITY ], - [ 36, Moves.TAILWIND ], - [ 39, Moves.DRAGON_CLAW ], - [ 42, Moves.THRASH ], - [ 45, Moves.ENDEAVOR ], - ], - [Species.ARCHEOPS]: [ - [ 1, Moves.WING_ATTACK ], - [ 1, Moves.LEER ], - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.QUICK_ATTACK ], - [ 9, Moves.DRAGON_BREATH ], - [ 12, Moves.ANCIENT_POWER ], - [ 15, Moves.PLUCK ], - [ 18, Moves.QUICK_GUARD ], - [ 21, Moves.U_TURN ], - [ 24, Moves.ROCK_SLIDE ], - [ 27, Moves.SCARY_FACE ], - [ 30, Moves.CRUNCH ], - [ 33, Moves.AGILITY ], - [ 36, Moves.TAILWIND ], - [ 41, Moves.DRAGON_CLAW ], - [ 46, Moves.THRASH ], - [ 51, Moves.ENDEAVOR ], - ], - [Species.TRUBBISH]: [ - [ 1, Moves.POUND ], - [ 1, Moves.POISON_GAS ], - [ 3, Moves.RECYCLE ], - [ 6, Moves.ACID_SPRAY ], - [ 9, Moves.AMNESIA ], - [ 12, Moves.CLEAR_SMOG ], - [ 15, Moves.TOXIC_SPIKES ], - [ 18, Moves.SLUDGE ], - [ 21, Moves.STOCKPILE ], - [ 21, Moves.SWALLOW ], - [ 24, Moves.TAKE_DOWN ], - [ 27, Moves.SLUDGE_BOMB ], - [ 30, Moves.TOXIC ], - [ 33, Moves.BELCH ], - [ 37, Moves.PAIN_SPLIT ], - [ 39, Moves.GUNK_SHOT ], - [ 42, Moves.EXPLOSION ], - ], - [Species.GARBODOR]: [ - [ 1, Moves.POUND ], - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.RECYCLE ], - [ 1, Moves.ACID_SPRAY ], - [ 9, Moves.AMNESIA ], - [ 12, Moves.CLEAR_SMOG ], - [ 15, Moves.TOXIC_SPIKES ], - [ 18, Moves.SLUDGE ], - [ 21, Moves.STOCKPILE ], - [ 21, Moves.SWALLOW ], - [ 24, Moves.BODY_SLAM ], - [ 27, Moves.SLUDGE_BOMB ], - [ 30, Moves.TOXIC ], - [ 33, Moves.BELCH ], - [ 39, Moves.PAIN_SPLIT ], - [ 43, Moves.GUNK_SHOT ], - [ 48, Moves.EXPLOSION ], - ], - [Species.ZORUA]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 4, Moves.TORMENT ], - [ 8, Moves.HONE_CLAWS ], - [ 12, Moves.FURY_SWIPES ], - [ 16, Moves.SCARY_FACE ], - [ 20, Moves.TAUNT ], - [ 24, Moves.KNOCK_OFF ], - [ 28, Moves.FAKE_TEARS ], - [ 32, Moves.AGILITY ], - [ 36, Moves.IMPRISON ], - [ 40, Moves.NIGHT_DAZE ], - [ 44, Moves.NASTY_PLOT ], - [ 48, Moves.FOUL_PLAY ], - ], - [Species.ZOROARK]: [ - [ EVOLVE_MOVE, Moves.NIGHT_SLASH ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.TORMENT ], - [ 1, Moves.U_TURN ], - [ 1, Moves.HONE_CLAWS ], - [ 1, Moves.SCARY_FACE ], // Previous Stage Move - [ 1, Moves.PURSUIT ], - [ 12, Moves.FURY_SWIPES ], - [ 20, Moves.TAUNT ], - [ 24, Moves.KNOCK_OFF ], - [ 28, Moves.FAKE_TEARS ], - [ 34, Moves.AGILITY ], - [ 40, Moves.IMPRISON ], - [ 46, Moves.NIGHT_DAZE ], - [ 52, Moves.NASTY_PLOT ], - [ 58, Moves.FOUL_PLAY ], - ], - [Species.MINCCINO]: [ - [ 1, Moves.POUND ], - [ 1, Moves.BABY_DOLL_EYES ], - [ 4, Moves.HELPING_HAND ], - [ 8, Moves.ECHOED_VOICE ], - [ 12, Moves.SING ], - [ 16, Moves.CHARM ], - [ 20, Moves.SWIFT ], - [ 24, Moves.ENCORE ], - [ 28, Moves.AFTER_YOU ], - [ 32, Moves.TAIL_SLAP ], - [ 36, Moves.TICKLE ], - [ 40, Moves.SLAM ], - [ 44, Moves.HYPER_VOICE ], - [ 48, Moves.LAST_RESORT ], - ], - [Species.CINCCINO]: [ - [ EVOLVE_MOVE, Moves.TAIL_SLAP ], - [ RELEARN_MOVE, Moves.SLAM ], - [ RELEARN_MOVE, Moves.SWIFT ], - [ RELEARN_MOVE, Moves.ENCORE ], - [ RELEARN_MOVE, Moves.HELPING_HAND ], - [ RELEARN_MOVE, Moves.HYPER_VOICE ], - [ RELEARN_MOVE, Moves.TICKLE ], - [ RELEARN_MOVE, Moves.ROCK_BLAST ], - [ RELEARN_MOVE, Moves.LAST_RESORT ], - [ RELEARN_MOVE, Moves.AFTER_YOU ], - [ RELEARN_MOVE, Moves.ECHOED_VOICE ], - [ RELEARN_MOVE, Moves.BABY_DOLL_EYES ], - [ 1, Moves.BULLET_SEED ], - [ 1, Moves.SING ], - [ 1, Moves.CHARM ], - [ 1, Moves.POUND ], - ], - [Species.GOTHITA]: [ - [ 1, Moves.POUND ], - [ 1, Moves.CONFUSION ], - [ 4, Moves.PLAY_NICE ], - [ 8, Moves.TICKLE ], - [ 12, Moves.PSYBEAM ], - [ 16, Moves.CHARM ], - [ 20, Moves.PSYSHOCK ], - [ 24, Moves.HYPNOSIS ], - [ 28, Moves.FAKE_TEARS ], - [ 33, Moves.PSYCH_UP ], - [ 34, Moves.HEAL_BLOCK ], - [ 36, Moves.PSYCHIC ], - [ 40, Moves.FLATTER ], - [ 44, Moves.FUTURE_SIGHT ], - [ 48, Moves.MAGIC_ROOM ], - ], - [Species.GOTHORITA]: [ - [ 1, Moves.POUND ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.TICKLE ], - [ 1, Moves.PLAY_NICE ], - [ 12, Moves.PSYBEAM ], - [ 16, Moves.CHARM ], - [ 20, Moves.PSYSHOCK ], - [ 24, Moves.HYPNOSIS ], - [ 28, Moves.FAKE_TEARS ], - [ 34, Moves.HEAL_BLOCK ], - [ 35, Moves.PSYCH_UP ], - [ 40, Moves.PSYCHIC ], // Previous Stage Move, Gothitelle Level - [ 46, Moves.FLATTER ], - [ 52, Moves.FUTURE_SIGHT ], - [ 58, Moves.MAGIC_ROOM ], - ], - [Species.GOTHITELLE]: [ - [ 1, Moves.POUND ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.TICKLE ], - [ 1, Moves.PLAY_NICE ], - [ 12, Moves.PSYBEAM ], - [ 16, Moves.CHARM ], - [ 20, Moves.PSYSHOCK ], - [ 24, Moves.HYPNOSIS ], - [ 28, Moves.FAKE_TEARS ], - [ 34, Moves.HEAL_BLOCK ], - [ 35, Moves.PSYCH_UP ], - [ 40, Moves.PSYCHIC ], - [ 48, Moves.FLATTER ], - [ 56, Moves.FUTURE_SIGHT ], - [ 64, Moves.MAGIC_ROOM ], - ], - [Species.SOLOSIS]: [ - [ 1, Moves.CONFUSION ], - [ 1, Moves.PROTECT ], - [ 1, Moves.PSYWAVE ], - [ 4, Moves.RECOVER ], - [ 8, Moves.ENDEAVOR ], - [ 12, Moves.PSYBEAM ], - [ 16, Moves.CHARM ], - [ 20, Moves.PSYSHOCK ], - [ 24, Moves.LIGHT_SCREEN ], - [ 24, Moves.REFLECT ], - [ 28, Moves.ALLY_SWITCH ], - [ 33, Moves.PAIN_SPLIT ], - [ 36, Moves.PSYCHIC ], - [ 40, Moves.SKILL_SWAP ], - [ 44, Moves.FUTURE_SIGHT ], - [ 46, Moves.HEAL_BLOCK ], - [ 48, Moves.WONDER_ROOM ], - ], - [Species.DUOSION]: [ - [ 1, Moves.CONFUSION ], - [ 1, Moves.RECOVER ], - [ 1, Moves.PSYWAVE ], - [ 1, Moves.PROTECT ], - [ 1, Moves.ENDEAVOR ], - [ 1, Moves.SNATCH ], - [ 12, Moves.PSYBEAM ], - [ 16, Moves.CHARM ], - [ 20, Moves.PSYSHOCK ], - [ 24, Moves.LIGHT_SCREEN ], - [ 24, Moves.REFLECT ], - [ 28, Moves.ALLY_SWITCH ], - [ 35, Moves.PAIN_SPLIT ], - [ 40, Moves.PSYCHIC ], - [ 46, Moves.SKILL_SWAP ], - [ 50, Moves.HEAL_BLOCK ], - [ 52, Moves.FUTURE_SIGHT ], - [ 58, Moves.WONDER_ROOM ], - ], - [Species.REUNICLUS]: [ - [ EVOLVE_MOVE, Moves.HAMMER_ARM ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.RECOVER ], - [ 1, Moves.PROTECT ], - [ 1, Moves.ENDEAVOR ], - [ 1, Moves.DIZZY_PUNCH ], - [ 1, Moves.PSYWAVE ], - [ 1, Moves.SNATCH ], - [ 12, Moves.PSYBEAM ], - [ 16, Moves.CHARM ], - [ 20, Moves.PSYSHOCK ], - [ 24, Moves.LIGHT_SCREEN ], - [ 24, Moves.REFLECT ], - [ 28, Moves.ALLY_SWITCH ], - [ 35, Moves.PAIN_SPLIT ], - [ 40, Moves.PSYCHIC ], - [ 48, Moves.SKILL_SWAP ], - [ 54, Moves.HEAL_BLOCK ], - [ 56, Moves.FUTURE_SIGHT ], - [ 64, Moves.WONDER_ROOM ], - ], - [Species.DUCKLETT]: [ - [ 1, Moves.WATER_GUN ], - [ 6, Moves.DEFOG ], - [ 9, Moves.WING_ATTACK ], - [ 13, Moves.WATER_PULSE ], - [ 15, Moves.AERIAL_ACE ], - [ 19, Moves.BUBBLE_BEAM ], - [ 21, Moves.FEATHER_DANCE ], - [ 24, Moves.AQUA_RING ], - [ 27, Moves.AIR_SLASH ], - [ 30, Moves.ROOST ], - [ 34, Moves.RAIN_DANCE ], - [ 37, Moves.TAILWIND ], - [ 41, Moves.BRAVE_BIRD ], - [ 46, Moves.HURRICANE ], - ], - [Species.SWANNA]: [ - [ 1, Moves.WING_ATTACK ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.DEFOG ], - [ 13, Moves.WATER_PULSE ], - [ 15, Moves.AERIAL_ACE ], - [ 19, Moves.BUBBLE_BEAM ], - [ 21, Moves.FEATHER_DANCE ], - [ 24, Moves.AQUA_RING ], - [ 27, Moves.AIR_SLASH ], - [ 30, Moves.ROOST ], - [ 34, Moves.RAIN_DANCE ], - [ 40, Moves.TAILWIND ], - [ 47, Moves.BRAVE_BIRD ], - [ 55, Moves.HURRICANE ], - ], - [Species.VANILLITE]: [ - [ 1, Moves.HARDEN ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.POWDER_SNOW ], // Custom - [ 4, Moves.TAUNT ], - [ 8, Moves.MIST ], - [ 12, Moves.ICY_WIND ], - [ 16, Moves.AVALANCHE ], - [ 20, Moves.HAIL ], - [ 24, Moves.ICICLE_SPEAR ], - [ 28, Moves.UPROAR ], - [ 32, Moves.ACID_ARMOR ], - [ 36, Moves.MIRROR_COAT ], - [ 40, Moves.ICE_BEAM ], - [ 44, Moves.BLIZZARD ], - [ 48, Moves.SHEER_COLD ], - ], - [Species.VANILLISH]: [ - [ 1, Moves.MIST ], - [ 1, Moves.HARDEN ], - [ 1, Moves.TAUNT ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.POWDER_SNOW ], // Previous Stage Move, Custom - [ 12, Moves.ICY_WIND ], - [ 16, Moves.AVALANCHE ], - [ 20, Moves.HAIL ], - [ 24, Moves.ICICLE_SPEAR ], - [ 28, Moves.UPROAR ], - [ 32, Moves.ACID_ARMOR ], - [ 38, Moves.MIRROR_COAT ], - [ 44, Moves.ICE_BEAM ], - [ 50, Moves.BLIZZARD ], - [ 56, Moves.SHEER_COLD ], - ], - [Species.VANILLUXE]: [ - [ 1, Moves.MIST ], - [ 1, Moves.HARDEN ], - [ 1, Moves.TAUNT ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.POWDER_SNOW ], // Previous Stage Move, Custom - [ 1, Moves.WEATHER_BALL ], - [ 1, Moves.ICICLE_CRASH ], - [ 1, Moves.FREEZE_DRY ], - [ 12, Moves.ICY_WIND ], - [ 16, Moves.AVALANCHE ], - [ 20, Moves.HAIL ], - [ 24, Moves.ICICLE_SPEAR ], - [ 28, Moves.UPROAR ], - [ 32, Moves.ACID_ARMOR ], - [ 38, Moves.MIRROR_COAT ], - [ 44, Moves.ICE_BEAM ], - [ 52, Moves.BLIZZARD ], - [ 60, Moves.SHEER_COLD ], - ], - [Species.DEERLING]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.CAMOUFLAGE ], - [ 4, Moves.GROWL ], - [ 7, Moves.SAND_ATTACK ], - [ 10, Moves.DOUBLE_KICK ], - [ 13, Moves.LEECH_SEED ], - [ 16, Moves.BULLET_SEED ], - [ 20, Moves.TAKE_DOWN ], - [ 24, Moves.ZEN_HEADBUTT ], - [ 28, Moves.ENERGY_BALL ], - [ 32, Moves.CHARM ], - [ 37, Moves.DOUBLE_EDGE ], - [ 42, Moves.SOLAR_BEAM ], - ], - [Species.SAWSBUCK]: [ - [ EVOLVE_MOVE, Moves.HORN_LEECH ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.CAMOUFLAGE ], - [ 1, Moves.MEGAHORN ], - [ 10, Moves.DOUBLE_KICK ], - [ 13, Moves.LEECH_SEED ], - [ 16, Moves.BULLET_SEED ], - [ 20, Moves.TAKE_DOWN ], - [ 24, Moves.ZEN_HEADBUTT ], - [ 28, Moves.ENERGY_BALL ], - [ 36, Moves.CHARM ], - [ 44, Moves.DOUBLE_EDGE ], - [ 52, Moves.SOLAR_BEAM ], - ], - [Species.EMOLGA]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.NUZZLE ], - [ 5, Moves.DOUBLE_TEAM ], - [ 10, Moves.QUICK_ATTACK ], - [ 15, Moves.THUNDER_SHOCK ], - [ 20, Moves.CHARGE ], - [ 25, Moves.ACROBATICS ], - [ 30, Moves.SPARK ], - [ 35, Moves.ENCORE ], - [ 40, Moves.VOLT_SWITCH ], - [ 45, Moves.LIGHT_SCREEN ], - [ 50, Moves.DISCHARGE ], - [ 55, Moves.AGILITY ], - ], - [Species.KARRABLAST]: [ - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 4, Moves.FURY_CUTTER ], - [ 8, Moves.ENDURE ], - [ 12, Moves.FALSE_SWIPE ], - [ 16, Moves.ACID_SPRAY ], - [ 20, Moves.HEADBUTT ], - [ 24, Moves.FLAIL ], - [ 28, Moves.SCARY_FACE ], - [ 32, Moves.X_SCISSOR ], - [ 36, Moves.SWORDS_DANCE ], - [ 40, Moves.TAKE_DOWN ], - [ 44, Moves.BUG_BUZZ ], - [ 48, Moves.DOUBLE_EDGE ], - ], - [Species.ESCAVALIER]: [ - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 1, Moves.FLAIL ], - [ 1, Moves.SCARY_FACE ], - [ 1, Moves.ENDURE ], - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.QUICK_GUARD ], - [ 1, Moves.FELL_STINGER ], - [ 1, Moves.TWINEEDLE ], - [ 12, Moves.FALSE_SWIPE ], - [ 16, Moves.ACID_SPRAY ], - [ 20, Moves.HEADBUTT ], - [ 24, Moves.REVERSAL ], - [ 28, Moves.IRON_DEFENSE ], - [ 32, Moves.X_SCISSOR ], - [ 36, Moves.SWORDS_DANCE ], - [ 40, Moves.IRON_HEAD ], - [ 44, Moves.BUG_BUZZ ], - [ 48, Moves.GIGA_IMPACT ], - [ 52, Moves.METAL_BURST ], - ], - [Species.FOONGUS]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.ASTONISH ], - [ 4, Moves.GROWTH ], - [ 8, Moves.STUN_SPORE ], - [ 12, Moves.MEGA_DRAIN ], - [ 16, Moves.SYNTHESIS ], - [ 20, Moves.CLEAR_SMOG ], - [ 24, Moves.SWEET_SCENT ], - [ 28, Moves.GIGA_DRAIN ], - [ 32, Moves.INGRAIN ], - [ 36, Moves.TOXIC ], - [ 40, Moves.RAGE_POWDER ], - [ 44, Moves.SOLAR_BEAM ], - [ 48, Moves.SPORE ], - ], - [Species.AMOONGUSS]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.GROWTH ], - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.BIDE ], - [ 12, Moves.MEGA_DRAIN ], - [ 16, Moves.SYNTHESIS ], - [ 20, Moves.CLEAR_SMOG ], - [ 24, Moves.SWEET_SCENT ], - [ 28, Moves.GIGA_DRAIN ], - [ 32, Moves.INGRAIN ], - [ 36, Moves.TOXIC ], - [ 42, Moves.RAGE_POWDER ], - [ 48, Moves.SOLAR_BEAM ], - [ 54, Moves.SPORE ], - ], - [Species.FRILLISH]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.ABSORB ], - [ 1, Moves.WATER_SPORT ], - [ 4, Moves.POISON_STING ], - [ 8, Moves.NIGHT_SHADE ], - [ 12, Moves.WATER_PULSE ], - [ 16, Moves.RAIN_DANCE ], - [ 20, Moves.HEX ], - [ 24, Moves.BRINE ], - [ 28, Moves.RECOVER ], - [ 32, Moves.SHADOW_BALL ], - [ 36, Moves.WHIRLPOOL ], - [ 41, Moves.HYDRO_PUMP ], - [ 44, Moves.DESTINY_BOND ], - [ 48, Moves.WATER_SPOUT ], - ], - [Species.JELLICENT]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.WATER_SPORT ], - [ 1, Moves.WRING_OUT ], - [ 1, Moves.ABSORB ], - [ 1, Moves.NIGHT_SHADE ], - [ 1, Moves.ACID_ARMOR ], - [ 12, Moves.WATER_PULSE ], - [ 16, Moves.RAIN_DANCE ], - [ 20, Moves.HEX ], - [ 24, Moves.BRINE ], - [ 28, Moves.RECOVER ], - [ 32, Moves.SHADOW_BALL ], - [ 36, Moves.WHIRLPOOL ], - [ 43, Moves.HYDRO_PUMP ], - [ 48, Moves.DESTINY_BOND ], - [ 54, Moves.WATER_SPOUT ], - ], - [Species.ALOMOMOLA]: [ - [ 1, Moves.POUND ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.WATER_SPORT ], - [ 5, Moves.AQUA_RING ], - [ 9, Moves.AQUA_JET ], - [ 13, Moves.HELPING_HAND ], - [ 13, Moves.WIDE_GUARD ], - [ 21, Moves.PROTECT ], - [ 25, Moves.WATER_PULSE ], - [ 29, Moves.HEALING_WISH ], - [ 33, Moves.SOAK ], - [ 37, Moves.WISH ], - [ 41, Moves.BRINE ], - [ 45, Moves.SAFEGUARD ], - [ 49, Moves.WHIRLPOOL ], - [ 55, Moves.HYDRO_PUMP ], - ], - [Species.JOLTIK]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.SPIDER_WEB ], - [ 4, Moves.ELECTROWEB ], - [ 8, Moves.BUG_BITE ], - [ 12, Moves.STRING_SHOT ], - [ 16, Moves.THUNDER_WAVE ], - [ 20, Moves.ELECTRO_BALL ], - [ 24, Moves.AGILITY ], - [ 28, Moves.SUCKER_PUNCH ], - [ 32, Moves.SLASH ], - [ 37, Moves.DISCHARGE ], - [ 40, Moves.SCREECH ], - [ 44, Moves.GASTRO_ACID ], - [ 48, Moves.BUG_BUZZ ], - ], - [Species.GALVANTULA]: [ - [ EVOLVE_MOVE, Moves.STICKY_WEB ], - [ 1, Moves.ABSORB ], - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.BUG_BITE ], - [ 1, Moves.ELECTROWEB ], - [ 1, Moves.SPIDER_WEB ], - [ 12, Moves.STRING_SHOT ], - [ 16, Moves.THUNDER_WAVE ], - [ 20, Moves.ELECTRO_BALL ], - [ 24, Moves.AGILITY ], - [ 28, Moves.SUCKER_PUNCH ], - [ 32, Moves.SLASH ], - [ 39, Moves.DISCHARGE ], - [ 44, Moves.SCREECH ], - [ 50, Moves.GASTRO_ACID ], - [ 56, Moves.BUG_BUZZ ], - ], - [Species.FERROSEED]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 5, Moves.METAL_CLAW ], - [ 10, Moves.PIN_MISSILE ], - [ 15, Moves.INGRAIN ], - [ 20, Moves.FLASH_CANNON ], - [ 25, Moves.IRON_HEAD ], - [ 30, Moves.SELF_DESTRUCT ], - [ 35, Moves.IRON_DEFENSE ], - [ 41, Moves.CURSE ], - [ 45, Moves.GYRO_BALL ], - [ 50, Moves.EXPLOSION ], - ], - [Species.FERROTHORN]: [ - [ EVOLVE_MOVE, Moves.POWER_WHIP ], - [ 1, Moves.TACKLE ], - [ 1, Moves.PIN_MISSILE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.ROCK_CLIMB ], - [ 15, Moves.INGRAIN ], - [ 20, Moves.FLASH_CANNON ], - [ 25, Moves.IRON_HEAD ], - [ 30, Moves.SELF_DESTRUCT ], - [ 35, Moves.IRON_DEFENSE ], - [ 43, Moves.CURSE ], - [ 49, Moves.GYRO_BALL ], - [ 56, Moves.EXPLOSION ], - ], - [Species.KLINK]: [ - [ 1, Moves.VISE_GRIP ], - [ 1, Moves.THUNDER_SHOCK ], - [ 4, Moves.BIND ], - [ 8, Moves.CHARGE ], - [ 12, Moves.CHARGE_BEAM ], - [ 16, Moves.METAL_SOUND ], - [ 20, Moves.AUTOTOMIZE ], - [ 24, Moves.DISCHARGE ], - [ 28, Moves.SCREECH ], - [ 32, Moves.GEAR_GRIND ], - [ 36, Moves.LOCK_ON ], - [ 40, Moves.SHIFT_GEAR ], - [ 44, Moves.ZAP_CANNON ], - [ 48, Moves.HYPER_BEAM ], - ], - [Species.KLANG]: [ - [ 1, Moves.VISE_GRIP ], - [ 1, Moves.BIND ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.CHARGE ], - [ 12, Moves.CHARGE_BEAM ], - [ 16, Moves.METAL_SOUND ], - [ 20, Moves.AUTOTOMIZE ], - [ 24, Moves.DISCHARGE ], - [ 28, Moves.SCREECH ], - [ 32, Moves.GEAR_GRIND ], - [ 36, Moves.LOCK_ON ], - [ 42, Moves.SHIFT_GEAR ], - [ 48, Moves.ZAP_CANNON ], - [ 54, Moves.HYPER_BEAM ], - ], - [Species.KLINKLANG]: [ - [ 1, Moves.VISE_GRIP ], - [ 1, Moves.BIND ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.CHARGE ], - [ 1, Moves.MAGNETIC_FLUX ], - [ 1, Moves.GEAR_UP ], - [ 12, Moves.CHARGE_BEAM ], - [ 16, Moves.METAL_SOUND ], - [ 20, Moves.AUTOTOMIZE ], - [ 24, Moves.DISCHARGE ], - [ 28, Moves.SCREECH ], - [ 32, Moves.GEAR_GRIND ], - [ 36, Moves.LOCK_ON ], - [ 42, Moves.SHIFT_GEAR ], - [ 48, Moves.ZAP_CANNON ], - [ 56, Moves.HYPER_BEAM ], - [ 64, Moves.ELECTRIC_TERRAIN ], - ], - [Species.TYNAMO]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.SPARK ], - [ 1, Moves.CHARGE_BEAM ], - ], - [Species.EELEKTRIK]: [ - [ EVOLVE_MOVE, Moves.CRUNCH ], - [ 1, Moves.TACKLE ], // Previous Stage Move - [ 1, Moves.HEADBUTT ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.SPARK ], - [ 1, Moves.CHARGE_BEAM ], - [ 1, Moves.ION_DELUGE ], - [ 9, Moves.BIND ], - [ 19, Moves.ACID ], - [ 29, Moves.DISCHARGE ], - [ 44, Moves.THUNDERBOLT ], - [ 49, Moves.ACID_SPRAY ], - [ 54, Moves.COIL ], - [ 59, Moves.WILD_CHARGE ], - [ 64, Moves.GASTRO_ACID ], - [ 69, Moves.ZAP_CANNON ], - [ 74, Moves.THRASH ], - ], - [Species.EELEKTROSS]: [ - [ RELEARN_MOVE, Moves.THUNDERBOLT ], // Previous Stage Move - [ RELEARN_MOVE, Moves.ACID_SPRAY ], // Previous Stage Move - [ 1, Moves.TACKLE ], // Previous Stage Move - [ 1, Moves.HEADBUTT ], - [ 1, Moves.THUNDER_WAVE ], // Previous Stage Move - [ 1, Moves.SPARK ], // Previous Stage Move - [ 1, Moves.CHARGE_BEAM ], // Previous Stage Move - [ 1, Moves.ION_DELUGE ], // Previous Stage Move - [ 1, Moves.BIND ], // Previous Stage Move - [ 1, Moves.THRASH ], - [ 1, Moves.ACID ], - [ 1, Moves.ZAP_CANNON ], - [ 1, Moves.CRUNCH ], - [ 1, Moves.CRUSH_CLAW ], - [ 1, Moves.GASTRO_ACID ], - [ 1, Moves.DISCHARGE ], - [ 1, Moves.COIL ], - [ 5, Moves.WILD_CHARGE ], - ], - [Species.ELGYEM]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.CONFUSION ], - [ 6, Moves.IMPRISON ], - [ 8, Moves.HEAL_BLOCK ], - [ 12, Moves.TELEPORT ], - [ 18, Moves.PSYBEAM ], - [ 24, Moves.GUARD_SPLIT ], - [ 24, Moves.POWER_SPLIT ], - [ 30, Moves.HEADBUTT ], - [ 36, Moves.ZEN_HEADBUTT ], - [ 43, Moves.RECOVER ], - [ 48, Moves.CALM_MIND ], - [ 54, Moves.WONDER_ROOM ], - [ 60, Moves.PSYCHIC ], - ], - [Species.BEHEEYEM]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.SYNCHRONOISE ], - [ 1, Moves.TELEPORT ], - [ 1, Moves.IMPRISON ], - [ 1, Moves.PSYCHIC_TERRAIN ], - [ 8, Moves.HEAL_BLOCK ], - [ 18, Moves.PSYBEAM ], - [ 24, Moves.GUARD_SPLIT ], - [ 24, Moves.POWER_SPLIT ], - [ 30, Moves.HEADBUTT ], - [ 36, Moves.ZEN_HEADBUTT ], - [ 45, Moves.RECOVER ], - [ 52, Moves.CALM_MIND ], - [ 60, Moves.WONDER_ROOM ], - [ 68, Moves.PSYCHIC ], - ], - [Species.LITWICK]: [ - [ 1, Moves.SMOG ], - [ 1, Moves.ASTONISH ], - [ 4, Moves.EMBER ], - [ 8, Moves.MINIMIZE ], - [ 12, Moves.CONFUSE_RAY ], - [ 16, Moves.HEX ], - [ 20, Moves.WILL_O_WISP ], - [ 24, Moves.FIRE_SPIN ], - [ 28, Moves.NIGHT_SHADE ], - [ 32, Moves.CURSE ], - [ 36, Moves.SHADOW_BALL ], - [ 40, Moves.INFERNO ], - [ 44, Moves.IMPRISON ], - [ 48, Moves.PAIN_SPLIT ], - [ 52, Moves.OVERHEAT ], - [ 56, Moves.MEMENTO ], - ], - [Species.LAMPENT]: [ - [ 1, Moves.EMBER ], - [ 1, Moves.MINIMIZE ], - [ 1, Moves.SMOG ], - [ 1, Moves.ASTONISH ], - [ 12, Moves.CONFUSE_RAY ], - [ 16, Moves.HEX ], - [ 20, Moves.WILL_O_WISP ], - [ 24, Moves.FIRE_SPIN ], - [ 28, Moves.NIGHT_SHADE ], - [ 32, Moves.CURSE ], - [ 36, Moves.SHADOW_BALL ], - [ 40, Moves.INFERNO ], - [ 46, Moves.IMPRISON ], - [ 52, Moves.PAIN_SPLIT ], - [ 58, Moves.OVERHEAT ], - [ 64, Moves.MEMENTO ], - ], - [Species.CHANDELURE]: [ - [ 1, Moves.EMBER ], - [ 1, Moves.FIRE_SPIN ], - [ 1, Moves.NIGHT_SHADE ], - [ 1, Moves.MINIMIZE ], - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.SMOG ], - [ 1, Moves.CURSE ], - [ 1, Moves.PAIN_SPLIT ], - [ 1, Moves.SHADOW_BALL ], - [ 1, Moves.WILL_O_WISP ], - [ 1, Moves.MEMENTO ], - [ 1, Moves.IMPRISON ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.OVERHEAT ], - [ 1, Moves.HEX ], - [ 1, Moves.INFERNO ], - ], - [Species.AXEW]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 3, Moves.BITE ], - [ 6, Moves.FALSE_SWIPE ], - [ 9, Moves.ASSURANCE ], - [ 12, Moves.TAUNT ], - [ 15, Moves.SLASH ], - [ 18, Moves.DRAGON_CLAW ], - [ 21, Moves.SCARY_FACE ], - [ 24, Moves.CRUNCH ], - [ 27, Moves.DRAGON_DANCE ], - [ 30, Moves.DUAL_CHOP ], - [ 33, Moves.FOCUS_ENERGY ], - [ 36, Moves.DRAGON_PULSE ], - [ 39, Moves.SWORDS_DANCE ], - [ 42, Moves.OUTRAGE ], - [ 45, Moves.GUILLOTINE ], - [ 48, Moves.GIGA_IMPACT ], - ], - [Species.FRAXURE]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.BITE ], - [ 1, Moves.FALSE_SWIPE ], - [ 1, Moves.DUAL_CHOP ], - [ 9, Moves.ASSURANCE ], - [ 12, Moves.TAUNT ], - [ 15, Moves.SLASH ], - [ 18, Moves.DRAGON_CLAW ], - [ 21, Moves.SCARY_FACE ], - [ 24, Moves.CRUNCH ], - [ 27, Moves.DRAGON_DANCE ], - [ 30, Moves.BREAKING_SWIPE ], - [ 33, Moves.FOCUS_ENERGY ], - [ 36, Moves.DRAGON_PULSE ], - [ 41, Moves.SWORDS_DANCE ], - [ 46, Moves.OUTRAGE ], - [ 51, Moves.GUILLOTINE ], - [ 56, Moves.GIGA_IMPACT ], - ], - [Species.HAXORUS]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.BITE ], - [ 1, Moves.FALSE_SWIPE ], - [ 1, Moves.DUAL_CHOP ], - [ 9, Moves.ASSURANCE ], - [ 12, Moves.TAUNT ], - [ 15, Moves.SLASH ], - [ 18, Moves.DRAGON_CLAW ], - [ 21, Moves.SCARY_FACE ], - [ 24, Moves.CRUNCH ], - [ 27, Moves.DRAGON_DANCE ], - [ 30, Moves.BREAKING_SWIPE ], - [ 33, Moves.FOCUS_ENERGY ], - [ 36, Moves.DRAGON_PULSE ], - [ 41, Moves.SWORDS_DANCE ], - [ 46, Moves.OUTRAGE ], - [ 53, Moves.GUILLOTINE ], - [ 60, Moves.GIGA_IMPACT ], - ], - [Species.CUBCHOO]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.POWDER_SNOW ], - [ 3, Moves.ENDURE ], - [ 6, Moves.FURY_SWIPES ], - [ 9, Moves.ICY_WIND ], - [ 12, Moves.PLAY_NICE ], - [ 15, Moves.BRINE ], - [ 18, Moves.FROST_BREATH ], - [ 21, Moves.SLASH ], - [ 24, Moves.FLAIL ], - [ 27, Moves.CHARM ], - [ 30, Moves.SNOWSCAPE ], - [ 33, Moves.THRASH ], - [ 36, Moves.REST ], - [ 39, Moves.BLIZZARD ], - [ 42, Moves.SHEER_COLD ], - ], - [Species.BEARTIC]: [ - [ EVOLVE_MOVE, Moves.ICICLE_CRASH ], - [ 1, Moves.GROWL ], - [ 1, Moves.FURY_SWIPES ], - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.ENDURE ], - [ 1, Moves.CHARM ], - [ 1, Moves.AQUA_JET ], - [ 1, Moves.BIDE ], - [ 9, Moves.ICY_WIND ], - [ 12, Moves.PLAY_NICE ], - [ 15, Moves.BRINE ], - [ 18, Moves.FROST_BREATH ], - [ 21, Moves.SLASH ], - [ 24, Moves.FLAIL ], - [ 27, Moves.SWAGGER ], - [ 30, Moves.SNOWSCAPE ], - [ 33, Moves.THRASH ], - [ 36, Moves.REST ], - [ 41, Moves.BLIZZARD ], - [ 46, Moves.SHEER_COLD ], - [ 51, Moves.SUPERPOWER ], - ], - [Species.CRYOGONAL]: [ - [ 1, Moves.BIND ], - [ 1, Moves.ICE_SHARD ], - [ 4, Moves.CONFUSE_RAY ], - [ 8, Moves.RAPID_SPIN ], - [ 12, Moves.ICY_WIND ], - [ 16, Moves.MIST ], - [ 16, Moves.HAZE ], - [ 20, Moves.ANCIENT_POWER ], - [ 24, Moves.AURORA_BEAM ], - [ 28, Moves.SLASH ], - [ 32, Moves.NIGHT_SLASH ], - [ 36, Moves.FREEZE_DRY ], - [ 40, Moves.LIGHT_SCREEN ], - [ 40, Moves.REFLECT ], - [ 44, Moves.RECOVER ], - [ 48, Moves.ICE_BEAM ], - [ 52, Moves.ACID_ARMOR ], - [ 56, Moves.SOLAR_BEAM ], - [ 60, Moves.SHEER_COLD ], - ], - [Species.SHELMET]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.PROTECT ], - [ 4, Moves.ACID ], - [ 8, Moves.CURSE ], - [ 12, Moves.MEGA_DRAIN ], - [ 16, Moves.STRUGGLE_BUG ], - [ 20, Moves.YAWN ], - [ 24, Moves.ACID_ARMOR ], - [ 28, Moves.GIGA_DRAIN ], - [ 32, Moves.GUARD_SWAP ], - [ 36, Moves.BODY_SLAM ], - [ 40, Moves.RECOVER ], - [ 44, Moves.BUG_BUZZ ], - [ 48, Moves.FINAL_GAMBIT ], - ], - [Species.ACCELGOR]: [ - [ 1, Moves.BODY_SLAM ], - [ 1, Moves.ACID ], - [ 1, Moves.ABSORB ], - [ 1, Moves.PROTECT ], // Previous Stage Move - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.ACID_ARMOR ], - [ 1, Moves.CURSE ], - [ 1, Moves.YAWN ], - [ 1, Moves.GUARD_SWAP ], - [ 1, Moves.ACID_SPRAY ], - [ 1, Moves.WATER_SHURIKEN ], - [ 12, Moves.MEGA_DRAIN ], - [ 16, Moves.STRUGGLE_BUG ], - [ 20, Moves.SWIFT ], - [ 24, Moves.AGILITY ], - [ 28, Moves.GIGA_DRAIN ], - [ 32, Moves.POWER_SWAP ], - [ 36, Moves.U_TURN ], - [ 40, Moves.RECOVER ], - [ 44, Moves.BUG_BUZZ ], - [ 48, Moves.FINAL_GAMBIT ], - [ 52, Moves.TOXIC ], - ], - [Species.STUNFISK]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.MUD_SPORT ], - [ 5, Moves.ENDURE ], - [ 10, Moves.MUD_SHOT ], - [ 15, Moves.REVENGE ], - [ 20, Moves.CHARGE ], - [ 25, Moves.SUCKER_PUNCH ], - [ 30, Moves.ELECTRIC_TERRAIN ], - [ 35, Moves.BOUNCE ], - [ 40, Moves.MUDDY_WATER ], - [ 45, Moves.DISCHARGE ], - [ 50, Moves.FLAIL ], - [ 55, Moves.FISSURE ], - ], - [Species.MIENFOO]: [ - [ 1, Moves.POUND ], - [ 1, Moves.DETECT ], - [ 5, Moves.FAKE_OUT ], - [ 10, Moves.REVERSAL ], - [ 15, Moves.FURY_SWIPES ], - [ 20, Moves.QUICK_GUARD ], - [ 25, Moves.FORCE_PALM ], - [ 30, Moves.U_TURN ], - [ 35, Moves.DRAIN_PUNCH ], - [ 40, Moves.HONE_CLAWS ], - [ 45, Moves.AURA_SPHERE ], - [ 51, Moves.BOUNCE ], - [ 55, Moves.CALM_MIND ], - [ 60, Moves.HIGH_JUMP_KICK ], - ], - [Species.MIENSHAO]: [ - [ 1, Moves.POUND ], - [ 1, Moves.REVERSAL ], - [ 1, Moves.DETECT ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.QUICK_GUARD ], - [ 15, Moves.FURY_SWIPES ], - [ 20, Moves.WIDE_GUARD ], - [ 25, Moves.FORCE_PALM ], - [ 30, Moves.U_TURN ], - [ 35, Moves.DRAIN_PUNCH ], - [ 40, Moves.HONE_CLAWS ], - [ 45, Moves.AURA_SPHERE ], - [ 53, Moves.BOUNCE ], - [ 59, Moves.CALM_MIND ], - [ 66, Moves.HIGH_JUMP_KICK ], - ], - [Species.DRUDDIGON]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 5, Moves.BITE ], - [ 10, Moves.DRAGON_TAIL ], - [ 15, Moves.METAL_CLAW ], - [ 20, Moves.SCARY_FACE ], - [ 25, Moves.SLASH ], - [ 30, Moves.DRAGON_CLAW ], - [ 35, Moves.HONE_CLAWS ], - [ 40, Moves.CRUNCH ], - [ 45, Moves.IRON_HEAD ], - [ 50, Moves.OUTRAGE ], - [ 55, Moves.SUPERPOWER ], - ], - [Species.GOLETT]: [ - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.ASTONISH ], - [ 4, Moves.DEFENSE_CURL ], - [ 8, Moves.POUND ], - [ 12, Moves.SHADOW_PUNCH ], - [ 16, Moves.CURSE ], - [ 20, Moves.NIGHT_SHADE ], - [ 24, Moves.STOMPING_TANTRUM ], - [ 28, Moves.IRON_DEFENSE ], - [ 32, Moves.MEGA_PUNCH ], - [ 36, Moves.SHADOW_BALL ], - [ 40, Moves.HEAVY_SLAM ], - [ 44, Moves.PHANTOM_FORCE ], - [ 48, Moves.HAMMER_ARM ], - [ 52, Moves.EARTHQUAKE ], - [ 56, Moves.DYNAMIC_PUNCH ], - ], - [Species.GOLURK]: [ - [ RELEARN_MOVE, Moves.MUD_SLAP ], - [ RELEARN_MOVE, Moves.FOCUS_PUNCH ], - [ 1, Moves.POUND ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.HIGH_HORSEPOWER ], - [ 12, Moves.SHADOW_PUNCH ], - [ 16, Moves.CURSE ], - [ 20, Moves.NIGHT_SHADE ], - [ 24, Moves.STOMPING_TANTRUM ], - [ 28, Moves.IRON_DEFENSE ], - [ 32, Moves.MEGA_PUNCH ], - [ 36, Moves.SHADOW_BALL ], - [ 40, Moves.HEAVY_SLAM ], - [ 46, Moves.PHANTOM_FORCE ], - [ 52, Moves.HAMMER_ARM ], - [ 58, Moves.EARTHQUAKE ], - [ 64, Moves.DYNAMIC_PUNCH ], - ], - [Species.PAWNIARD]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 5, Moves.FURY_CUTTER ], - [ 10, Moves.METAL_CLAW ], - [ 15, Moves.TORMENT ], - [ 20, Moves.SCARY_FACE ], - [ 25, Moves.ASSURANCE ], - [ 30, Moves.METAL_SOUND ], - [ 35, Moves.SLASH ], - [ 40, Moves.NIGHT_SLASH ], - [ 45, Moves.IRON_DEFENSE ], - [ 50, Moves.RETALIATE ], - [ 55, Moves.IRON_HEAD ], - [ 60, Moves.SWORDS_DANCE ], - [ 65, Moves.GUILLOTINE ], - ], - [Species.BISHARP]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.METAL_BURST ], - [ 15, Moves.TORMENT ], - [ 20, Moves.SCARY_FACE ], - [ 25, Moves.ASSURANCE ], - [ 30, Moves.METAL_SOUND ], - [ 35, Moves.SLASH ], - [ 40, Moves.NIGHT_SLASH ], - [ 45, Moves.IRON_DEFENSE ], - [ 50, Moves.RETALIATE ], - [ 57, Moves.IRON_HEAD ], - [ 64, Moves.SWORDS_DANCE ], - [ 71, Moves.GUILLOTINE ], - ], - [Species.BOUFFALANT]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.PURSUIT ], - [ 5, Moves.FOCUS_ENERGY ], - [ 10, Moves.FURY_ATTACK ], - [ 15, Moves.REVENGE ], - [ 20, Moves.SCARY_FACE ], - [ 25, Moves.HORN_ATTACK ], - [ 30, Moves.REVERSAL ], - [ 35, Moves.THROAT_CHOP ], - [ 40, Moves.HEAD_CHARGE ], - [ 45, Moves.SWORDS_DANCE ], - [ 50, Moves.MEGAHORN ], - [ 55, Moves.GIGA_IMPACT ], - ], - [Species.RUFFLET]: [ - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 6, Moves.HONE_CLAWS ], - [ 12, Moves.WING_ATTACK ], - [ 18, Moves.TAILWIND ], - [ 24, Moves.SCARY_FACE ], - [ 30, Moves.AERIAL_ACE ], - [ 36, Moves.SLASH ], - [ 42, Moves.WHIRLWIND ], - [ 48, Moves.CRUSH_CLAW ], - [ 55, Moves.AIR_SLASH ], - [ 60, Moves.DEFOG ], - [ 66, Moves.THRASH ], - [ 72, Moves.BRAVE_BIRD ], - ], - [Species.BRAVIARY]: [ - [ EVOLVE_MOVE, Moves.SUPERPOWER ], - [ RELEARN_MOVE, Moves.BRAVE_BIRD ], // Previous Stage Move - [ 1, Moves.WING_ATTACK ], - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 1, Moves.SKY_ATTACK ], - [ 1, Moves.HONE_CLAWS ], - [ 18, Moves.TAILWIND ], - [ 24, Moves.SCARY_FACE ], - [ 30, Moves.AERIAL_ACE ], - [ 36, Moves.SLASH ], - [ 42, Moves.WHIRLWIND ], - [ 48, Moves.CRUSH_CLAW ], - [ 57, Moves.AIR_SLASH ], - [ 64, Moves.DEFOG ], - [ 72, Moves.THRASH ], - ], - [Species.VULLABY]: [ - [ 1, Moves.GUST ], - [ 1, Moves.LEER ], - [ 6, Moves.FLATTER ], - [ 12, Moves.PLUCK ], - [ 18, Moves.TAILWIND ], - [ 24, Moves.KNOCK_OFF ], - [ 30, Moves.IRON_DEFENSE ], - [ 36, Moves.WHIRLWIND ], - [ 42, Moves.AIR_SLASH ], - [ 48, Moves.DARK_PULSE ], - [ 54, Moves.NASTY_PLOT ], - [ 60, Moves.DEFOG ], - [ 66, Moves.ATTRACT ], - [ 72, Moves.BRAVE_BIRD ], - ], - [Species.MANDIBUZZ]: [ - [ EVOLVE_MOVE, Moves.BONE_RUSH ], - [ 1, Moves.GUST ], - [ 1, Moves.LEER ], - [ 1, Moves.TOXIC ], - [ 1, Moves.SKY_ATTACK ], - [ 1, Moves.FLATTER ], - [ 1, Moves.PLUCK ], - [ 18, Moves.TAILWIND ], - [ 24, Moves.KNOCK_OFF ], - [ 30, Moves.IRON_DEFENSE ], - [ 36, Moves.WHIRLWIND ], - [ 42, Moves.AIR_SLASH ], - [ 48, Moves.DARK_PULSE ], - [ 57, Moves.NASTY_PLOT ], - [ 64, Moves.DEFOG ], - [ 72, Moves.ATTRACT ], - [ 80, Moves.BRAVE_BIRD ], - ], - [Species.HEATMOR]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LICK ], - [ 5, Moves.FURY_SWIPES ], - [ 10, Moves.INCINERATE ], - [ 15, Moves.BUG_BITE ], - [ 20, Moves.STOCKPILE ], - [ 20, Moves.SPIT_UP ], - [ 20, Moves.SWALLOW ], - [ 25, Moves.SLASH ], - [ 30, Moves.BIND ], - [ 35, Moves.FIRE_LASH ], - [ 40, Moves.HONE_CLAWS ], - [ 45, Moves.AMNESIA ], - [ 50, Moves.FIRE_SPIN ], - [ 55, Moves.INFERNO ], - [ 60, Moves.FLARE_BLITZ ], - ], - [Species.DURANT]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.FURY_CUTTER ], - [ 4, Moves.VISE_GRIP ], - [ 8, Moves.METAL_CLAW ], - [ 12, Moves.BEAT_UP ], - [ 16, Moves.BUG_BITE ], - [ 20, Moves.BITE ], - [ 24, Moves.AGILITY ], - [ 28, Moves.DIG ], - [ 32, Moves.X_SCISSOR ], - [ 36, Moves.CRUNCH ], - [ 40, Moves.METAL_SOUND ], - [ 44, Moves.IRON_HEAD ], - [ 48, Moves.ENTRAINMENT ], - [ 52, Moves.IRON_DEFENSE ], - [ 56, Moves.GUILLOTINE ], - ], - [Species.DEINO]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.FOCUS_ENERGY ], - [ 4, Moves.DRAGON_BREATH ], - [ 8, Moves.BITE ], - [ 12, Moves.ROAR ], - [ 16, Moves.ASSURANCE ], - [ 20, Moves.HEADBUTT ], - [ 24, Moves.WORK_UP ], - [ 28, Moves.SLAM ], - [ 32, Moves.CRUNCH ], - [ 36, Moves.SCARY_FACE ], - [ 40, Moves.DRAGON_PULSE ], - [ 44, Moves.BODY_SLAM ], - [ 48, Moves.HYPER_VOICE ], - [ 52, Moves.DRAGON_RUSH ], - [ 56, Moves.NASTY_PLOT ], - [ 60, Moves.OUTRAGE ], - ], - [Species.ZWEILOUS]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.BITE ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.DOUBLE_HIT ], - [ 12, Moves.ROAR ], - [ 16, Moves.ASSURANCE ], - [ 20, Moves.HEADBUTT ], - [ 24, Moves.WORK_UP ], - [ 28, Moves.SLAM ], - [ 32, Moves.CRUNCH ], - [ 36, Moves.SCARY_FACE ], - [ 40, Moves.DRAGON_PULSE ], - [ 44, Moves.BODY_SLAM ], - [ 48, Moves.HYPER_VOICE ], - [ 54, Moves.DRAGON_RUSH ], - [ 60, Moves.NASTY_PLOT ], - [ 66, Moves.OUTRAGE ], - ], - [Species.HYDREIGON]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.BITE ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.TRI_ATTACK ], - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.DOUBLE_HIT ], - [ 12, Moves.ROAR ], - [ 16, Moves.ASSURANCE ], - [ 20, Moves.HEADBUTT ], - [ 24, Moves.WORK_UP ], - [ 28, Moves.SLAM ], - [ 32, Moves.CRUNCH ], - [ 36, Moves.SCARY_FACE ], - [ 40, Moves.DRAGON_PULSE ], - [ 44, Moves.BODY_SLAM ], - [ 48, Moves.HYPER_VOICE ], - [ 54, Moves.DRAGON_RUSH ], - [ 60, Moves.NASTY_PLOT ], - [ 68, Moves.OUTRAGE ], - [ 76, Moves.HYPER_BEAM ], - ], - [Species.LARVESTA]: [ - [ 1, Moves.EMBER ], - [ 1, Moves.STRING_SHOT ], - [ 6, Moves.FLAME_CHARGE ], - [ 12, Moves.STRUGGLE_BUG ], - [ 18, Moves.FLAME_WHEEL ], - [ 24, Moves.BUG_BITE ], - [ 30, Moves.SCREECH ], - [ 36, Moves.LEECH_LIFE ], - [ 42, Moves.BUG_BUZZ ], - [ 48, Moves.TAKE_DOWN ], - [ 54, Moves.AMNESIA ], - [ 60, Moves.DOUBLE_EDGE ], - [ 66, Moves.FLARE_BLITZ ], - ], - [Species.VOLCARONA]: [ - [ EVOLVE_MOVE, Moves.QUIVER_DANCE ], - [ 1, Moves.GUST ], - [ 1, Moves.WHIRLWIND ], - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.EMBER ], - [ 1, Moves.STRING_SHOT ], - [ 1, Moves.FIRE_SPIN ], - [ 1, Moves.FLARE_BLITZ ], - [ 1, Moves.FLAME_CHARGE ], - [ 1, Moves.STRUGGLE_BUG ], - [ 1, Moves.FIERY_DANCE ], - [ 18, Moves.FLAME_WHEEL ], - [ 24, Moves.BUG_BITE ], - [ 30, Moves.SCREECH ], - [ 36, Moves.LEECH_LIFE ], - [ 42, Moves.BUG_BUZZ ], - [ 48, Moves.HEAT_WAVE ], - [ 54, Moves.AMNESIA ], - [ 62, Moves.HURRICANE ], - [ 70, Moves.FIRE_BLAST ], - [ 78, Moves.RAGE_POWDER ], - ], - [Species.COBALION]: [ - [ 1, Moves.LEER ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.WORK_UP ], - [ 7, Moves.METAL_CLAW ], - [ 14, Moves.QUICK_GUARD ], - [ 21, Moves.DOUBLE_KICK ], - [ 28, Moves.RETALIATE ], - [ 35, Moves.METAL_BURST ], - [ 42, Moves.TAKE_DOWN ], - [ 49, Moves.SACRED_SWORD ], - [ 56, Moves.SWORDS_DANCE ], - [ 63, Moves.IRON_HEAD ], - [ 70, Moves.CLOSE_COMBAT ], - ], - [Species.TERRAKION]: [ - [ 1, Moves.LEER ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.WORK_UP ], - [ 7, Moves.SMACK_DOWN ], - [ 14, Moves.QUICK_GUARD ], - [ 21, Moves.DOUBLE_KICK ], - [ 28, Moves.RETALIATE ], - [ 35, Moves.ROCK_SLIDE ], - [ 42, Moves.TAKE_DOWN ], - [ 49, Moves.SACRED_SWORD ], - [ 56, Moves.SWORDS_DANCE ], - [ 63, Moves.STONE_EDGE ], - [ 70, Moves.CLOSE_COMBAT ], - ], - [Species.VIRIZION]: [ - [ RELEARN_MOVE, Moves.TAKE_DOWN ], - [ 1, Moves.LEER ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.WORK_UP ], - [ 7, Moves.MAGICAL_LEAF ], - [ 14, Moves.QUICK_GUARD ], - [ 21, Moves.DOUBLE_KICK ], - [ 28, Moves.RETALIATE ], - [ 35, Moves.GIGA_DRAIN ], - [ 42, Moves.TAKE_DOWN ], - [ 49, Moves.SACRED_SWORD ], - [ 56, Moves.SWORDS_DANCE ], - [ 63, Moves.LEAF_BLADE ], - [ 70, Moves.CLOSE_COMBAT ], - ], - [Species.TORNADUS]: [ - [ 1, Moves.GUST ], - [ 1, Moves.ASTONISH ], - [ 5, Moves.LEER ], - [ 10, Moves.SWAGGER ], - [ 15, Moves.BITE ], - [ 20, Moves.AIR_CUTTER ], - [ 25, Moves.AGILITY ], - [ 30, Moves.TAILWIND ], - [ 35, Moves.AIR_SLASH ], - [ 40, Moves.CRUNCH ], - [ 45, Moves.EXTRASENSORY ], - [ 50, Moves.UPROAR ], - [ 55, Moves.HAMMER_ARM ], - [ 60, Moves.RAIN_DANCE ], - [ 65, Moves.HURRICANE ], - [ 70, Moves.THRASH ], - [ 77, Moves.BLEAKWIND_STORM ], - ], - [Species.THUNDURUS]: [ - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.ASTONISH ], - [ 5, Moves.LEER ], - [ 10, Moves.SWAGGER ], - [ 15, Moves.BITE ], - [ 20, Moves.SHOCK_WAVE ], - [ 25, Moves.AGILITY ], - [ 30, Moves.CHARGE ], - [ 31, Moves.HEAL_BLOCK ], - [ 35, Moves.VOLT_SWITCH ], - [ 40, Moves.CRUNCH ], - [ 45, Moves.DISCHARGE ], - [ 50, Moves.UPROAR ], - [ 55, Moves.HAMMER_ARM ], - [ 60, Moves.RAIN_DANCE ], - [ 65, Moves.THUNDER ], - [ 70, Moves.THRASH ], - [ 75, Moves.WILDBOLT_STORM ], - ], - [Species.RESHIRAM]: [ - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.ANCIENT_POWER ], - [ 1, Moves.FIRE_FANG ], - [ 1, Moves.NOBLE_ROAR ], - [ 8, Moves.SLASH ], - [ 16, Moves.CRUNCH ], - [ 24, Moves.EXTRASENSORY ], - [ 32, Moves.DRAGON_PULSE ], - [ 40, Moves.FLAMETHROWER ], - [ 48, Moves.FUSION_FLARE ], - [ 56, Moves.HYPER_VOICE ], - [ 64, Moves.FIRE_BLAST ], - [ 72, Moves.IMPRISON ], - [ 80, Moves.OUTRAGE ], - [ 88, Moves.BLUE_FLARE ], - ], - [Species.ZEKROM]: [ - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.ANCIENT_POWER ], - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.NOBLE_ROAR ], - [ 8, Moves.SLASH ], - [ 16, Moves.CRUNCH ], - [ 24, Moves.ZEN_HEADBUTT ], - [ 32, Moves.DRAGON_CLAW ], - [ 40, Moves.THUNDERBOLT ], - [ 48, Moves.FUSION_BOLT ], - [ 56, Moves.HYPER_VOICE ], - [ 64, Moves.THUNDER ], - [ 72, Moves.IMPRISON ], - [ 80, Moves.OUTRAGE ], - [ 88, Moves.BOLT_STRIKE ], - ], - [Species.LANDORUS]: [ - [ 1, Moves.SAND_TOMB ], - [ 1, Moves.SMACK_DOWN ], - [ 5, Moves.LEER ], - [ 10, Moves.BLOCK ], - [ 15, Moves.BULLDOZE ], - [ 20, Moves.ROCK_TOMB ], - [ 30, Moves.IMPRISON ], - [ 35, Moves.ROCK_SLIDE ], - [ 40, Moves.EARTH_POWER ], - [ 45, Moves.EXTRASENSORY ], - [ 50, Moves.STONE_EDGE ], - [ 55, Moves.HAMMER_ARM ], - [ 60, Moves.SANDSTORM ], - [ 65, Moves.EARTHQUAKE ], - [ 70, Moves.OUTRAGE ], - [ 75, Moves.FISSURE ], - [ 80, Moves.SANDSEAR_STORM ], - ], - [Species.KYUREM]: [ - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.ANCIENT_POWER ], - [ 1, Moves.NOBLE_ROAR ], - [ 1, Moves.FREEZE_DRY ], - [ 8, Moves.SLASH ], - [ 16, Moves.ENDEAVOR ], - [ 24, Moves.DRAGON_PULSE ], - [ 32, Moves.ICE_BEAM ], - [ 40, Moves.HYPER_VOICE ], - [ 48, Moves.SCARY_FACE ], - [ 56, Moves.BLIZZARD ], - [ 64, Moves.IMPRISON ], - [ 72, Moves.OUTRAGE ], - [ 80, Moves.GLACIATE ], - [ 88, Moves.SHEER_COLD ], - ], - [Species.KELDEO]: [ - [ 1, Moves.LEER ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.AQUA_JET ], - [ 1, Moves.WORK_UP ], - [ 1, Moves.SECRET_SWORD ], - [ 7, Moves.BUBBLE_BEAM ], - [ 14, Moves.QUICK_GUARD ], - [ 21, Moves.DOUBLE_KICK ], - [ 28, Moves.RETALIATE ], - [ 35, Moves.AQUA_TAIL ], - [ 42, Moves.TAKE_DOWN ], - [ 49, Moves.SACRED_SWORD ], - [ 56, Moves.SWORDS_DANCE ], - [ 63, Moves.HYDRO_PUMP ], - [ 70, Moves.CLOSE_COMBAT ], - ], - [Species.MELOETTA]: [ - [ 1, Moves.SING ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.ROUND ], - [ 21, Moves.TEETER_DANCE ], - [ 26, Moves.ACROBATICS ], - [ 31, Moves.PSYBEAM ], - [ 36, Moves.ECHOED_VOICE ], - [ 43, Moves.U_TURN ], - [ 50, Moves.RELIC_SONG ], - [ 57, Moves.PSYCHIC ], - [ 64, Moves.HYPER_VOICE ], - [ 71, Moves.ROLE_PLAY ], - [ 78, Moves.CLOSE_COMBAT ], - [ 85, Moves.PERISH_SONG ], - ], - [Species.GENESECT]: [ - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.FURY_CUTTER ], - [ 7, Moves.SCREECH ], - [ 14, Moves.METAL_CLAW ], - [ 21, Moves.FELL_STINGER ], - [ 28, Moves.FLAME_CHARGE ], - [ 35, Moves.METAL_SOUND ], - [ 42, Moves.X_SCISSOR ], - [ 49, Moves.MAGNET_RISE ], - [ 56, Moves.BUG_BUZZ ], - [ 63, Moves.SIMPLE_BEAM ], - [ 70, Moves.ZAP_CANNON ], - [ 77, Moves.LOCK_ON ], - [ 84, Moves.TECHNO_BLAST ], - [ 91, Moves.SELF_DESTRUCT ], - ], - [Species.CHESPIN]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.VINE_WHIP ], - [ 8, Moves.ROLLOUT ], - [ 11, Moves.BITE ], - [ 15, Moves.LEECH_SEED ], - [ 18, Moves.PIN_MISSILE ], - [ 27, Moves.TAKE_DOWN ], - [ 32, Moves.SEED_BOMB ], - [ 35, Moves.MUD_SHOT ], - [ 42, Moves.BODY_SLAM ], - [ 45, Moves.PAIN_SPLIT ], - [ 48, Moves.WOOD_HAMMER ], - ], - [Species.QUILLADIN]: [ - [ EVOLVE_MOVE, Moves.NEEDLE_ARM ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.VINE_WHIP ], - [ 8, Moves.ROLLOUT ], - [ 11, Moves.BITE ], - [ 15, Moves.LEECH_SEED ], - [ 20, Moves.SEED_BOMB ], - [ 24, Moves.PIN_MISSILE ], - [ 29, Moves.TAKE_DOWN ], - [ 34, Moves.MUD_SHOT ], - [ 38, Moves.BULK_UP ], - [ 43, Moves.BODY_SLAM ], - [ 47, Moves.PAIN_SPLIT ], - [ 53, Moves.WOOD_HAMMER ], - ], - [Species.CHESNAUGHT]: [ - [ EVOLVE_MOVE, Moves.SPIKY_SHIELD ], - [ 1, Moves.VINE_WHIP ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.ROLLOUT ], - [ 1, Moves.HAMMER_ARM ], - [ 1, Moves.FEINT ], - [ 1, Moves.NEEDLE_ARM ], - [ 11, Moves.BITE ], - [ 15, Moves.LEECH_SEED ], - [ 19, Moves.PIN_MISSILE ], - [ 29, Moves.TAKE_DOWN ], - [ 35, Moves.SEED_BOMB ], - [ 41, Moves.MUD_SHOT ], - [ 48, Moves.BULK_UP ], - [ 54, Moves.BODY_SLAM ], - [ 60, Moves.PAIN_SPLIT ], - [ 66, Moves.WOOD_HAMMER ], - [ 78, Moves.GIGA_IMPACT ], - ], - [Species.FENNEKIN]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.TAIL_WHIP ], - [ 5, Moves.EMBER ], - [ 11, Moves.HOWL ], - [ 14, Moves.FLAME_CHARGE ], - [ 17, Moves.PSYBEAM ], - [ 20, Moves.FIRE_SPIN ], - [ 25, Moves.LIGHT_SCREEN ], - [ 31, Moves.PSYSHOCK ], - [ 35, Moves.FLAMETHROWER ], - [ 38, Moves.WILL_O_WISP ], - [ 41, Moves.PSYCHIC ], - [ 43, Moves.SUNNY_DAY ], - [ 48, Moves.FIRE_BLAST ], - ], - [Species.BRAIXEN]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.EMBER ], - [ 11, Moves.HOWL ], - [ 14, Moves.FLAME_CHARGE ], - [ 18, Moves.PSYBEAM ], - [ 22, Moves.FIRE_SPIN ], - [ 28, Moves.LIGHT_SCREEN ], - [ 36, Moves.PSYSHOCK ], - [ 41, Moves.FLAMETHROWER ], - [ 45, Moves.WILL_O_WISP ], - [ 49, Moves.PSYCHIC ], - [ 52, Moves.SUNNY_DAY ], - [ 56, Moves.MAGIC_ROOM ], - [ 59, Moves.FIRE_BLAST ], - ], - [Species.DELPHOX]: [ - [ EVOLVE_MOVE, Moves.MYSTICAL_FIRE ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.EMBER ], - [ 1, Moves.SHADOW_BALL ], - [ 1, Moves.FUTURE_SIGHT ], - [ 1, Moves.ROLE_PLAY ], - [ 1, Moves.HOWL ], - [ 1, Moves.SWITCHEROO ], - [ 14, Moves.FLAME_CHARGE ], - [ 18, Moves.PSYBEAM ], - [ 22, Moves.FIRE_SPIN ], - [ 28, Moves.LIGHT_SCREEN ], - [ 38, Moves.PSYSHOCK ], - [ 45, Moves.FLAMETHROWER ], - [ 51, Moves.WILL_O_WISP ], - [ 57, Moves.PSYCHIC ], - [ 62, Moves.SUNNY_DAY ], - [ 68, Moves.MAGIC_ROOM ], - [ 74, Moves.FIRE_BLAST ], - ], - [Species.FROAKIE]: [ - [ 1, Moves.POUND ], - [ 1, Moves.GROWL ], - [ 5, Moves.WATER_GUN ], - [ 8, Moves.QUICK_ATTACK ], - [ 10, Moves.LICK ], - [ 14, Moves.WATER_PULSE ], - [ 18, Moves.SMOKESCREEN ], - [ 21, Moves.ROUND ], - [ 25, Moves.FLING ], - [ 29, Moves.SMACK_DOWN ], - [ 35, Moves.SUBSTITUTE ], - [ 39, Moves.BOUNCE ], - [ 43, Moves.DOUBLE_TEAM ], - [ 48, Moves.HYDRO_PUMP ], - ], - [Species.FROGADIER]: [ - [ 1, Moves.POUND ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 8, Moves.QUICK_ATTACK ], - [ 10, Moves.LICK ], - [ 14, Moves.WATER_PULSE ], - [ 19, Moves.SMOKESCREEN ], - [ 23, Moves.ROUND ], - [ 28, Moves.FLING ], - [ 33, Moves.SMACK_DOWN ], - [ 40, Moves.SUBSTITUTE ], - [ 45, Moves.BOUNCE ], - [ 50, Moves.DOUBLE_TEAM ], - [ 56, Moves.HYDRO_PUMP ], - ], - [Species.GRENINJA]: [ - [ EVOLVE_MOVE, Moves.WATER_SHURIKEN ], - [ 1, Moves.POUND ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.ROUND ], // Previous Stage Move - [ 1, Moves.FLING ], // Previous Stage Move - [ 1, Moves.SMACK_DOWN ], // Previous Stage Move - [ 1, Moves.BOUNCE ], // Previous Stage Move - [ 1, Moves.HAZE ], - [ 1, Moves.MAT_BLOCK ], - [ 1, Moves.ROLE_PLAY ], - [ 1, Moves.NIGHT_SLASH ], - [ 10, Moves.LICK ], - [ 14, Moves.WATER_PULSE ], - [ 19, Moves.SMOKESCREEN ], - [ 23, Moves.SHADOW_SNEAK ], - [ 28, Moves.SPIKES ], - [ 33, Moves.AERIAL_ACE ], - [ 42, Moves.SUBSTITUTE ], - [ 49, Moves.EXTRASENSORY ], - [ 56, Moves.DOUBLE_TEAM ], - [ 68, Moves.HYDRO_PUMP ], - ], - [Species.BUNNELBY]: [ - [ 1, Moves.LEER ], - [ 1, Moves.MUD_SLAP ], - [ 3, Moves.TACKLE ], - [ 6, Moves.LASER_FOCUS ], - [ 9, Moves.QUICK_ATTACK ], - [ 12, Moves.MUD_SHOT ], - [ 15, Moves.FLAIL ], - [ 18, Moves.DOUBLE_KICK ], - [ 21, Moves.BULLDOZE ], - [ 24, Moves.DIG ], - [ 27, Moves.BOUNCE ], - [ 30, Moves.TAKE_DOWN ], - [ 33, Moves.SWORDS_DANCE ], - [ 36, Moves.EARTHQUAKE ], - [ 39, Moves.SUPER_FANG ], - ], - [Species.DIGGERSBY]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.LASER_FOCUS ], - [ 1, Moves.ROTOTILLER ], - [ 9, Moves.QUICK_ATTACK ], - [ 12, Moves.MUD_SHOT ], - [ 15, Moves.FLAIL ], - [ 18, Moves.DOUBLE_KICK ], - [ 23, Moves.BULLDOZE ], - [ 28, Moves.DIG ], - [ 33, Moves.BOUNCE ], - [ 38, Moves.TAKE_DOWN ], - [ 43, Moves.SWORDS_DANCE ], - [ 48, Moves.EARTHQUAKE ], - [ 53, Moves.SUPER_FANG ], - [ 58, Moves.HAMMER_ARM ], - ], - [Species.FLETCHLING]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.PECK ], - [ 5, Moves.QUICK_ATTACK ], - [ 10, Moves.EMBER ], - [ 15, Moves.FLAIL ], - [ 20, Moves.ACROBATICS ], - [ 25, Moves.AGILITY ], - [ 30, Moves.AERIAL_ACE ], - [ 35, Moves.TAILWIND ], - [ 40, Moves.STEEL_WING ], - [ 45, Moves.ROOST ], - [ 50, Moves.FLY ], - ], - [Species.FLETCHINDER]: [ - [ EVOLVE_MOVE, Moves.FLAME_CHARGE ], - [ 1, Moves.GROWL ], - [ 1, Moves.EMBER ], - [ 1, Moves.PECK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.FEINT ], - [ 15, Moves.FLAIL ], - [ 22, Moves.ACROBATICS ], - [ 29, Moves.AGILITY ], - [ 36, Moves.AERIAL_ACE ], - [ 43, Moves.TAILWIND ], - [ 50, Moves.STEEL_WING ], - [ 57, Moves.ROOST ], - [ 64, Moves.FLY ], - ], - [Species.TALONFLAME]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.EMBER ], - [ 1, Moves.PECK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.FEINT ], - [ 1, Moves.FLARE_BLITZ ], - [ 1, Moves.FLAME_CHARGE ], - [ 15, Moves.FLAIL ], - [ 22, Moves.ACROBATICS ], - [ 29, Moves.AGILITY ], - [ 38, Moves.AERIAL_ACE ], - [ 47, Moves.TAILWIND ], - [ 56, Moves.STEEL_WING ], - [ 65, Moves.ROOST ], - [ 74, Moves.FLY ], - [ 83, Moves.BRAVE_BIRD ], - ], - [Species.SCATTERBUG]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.STRING_SHOT ], - [ 6, Moves.STUN_SPORE ], - [ 15, Moves.BUG_BITE ], - ], - [Species.SPEWPA]: [ - [ EVOLVE_MOVE, Moves.PROTECT ], - [ RELEARN_MOVE, Moves.TACKLE ], // Previous Stage Move - [ RELEARN_MOVE, Moves.STRING_SHOT ], // Previous Stage Move - [ RELEARN_MOVE, Moves.STUN_SPORE ], // Previous Stage Move - [ RELEARN_MOVE, Moves.BUG_BITE ], // Previous Stage Move - [ 1, Moves.HARDEN ], - ], - [Species.VIVILLON]: [ - [ EVOLVE_MOVE, Moves.GUST ], - [ 1, Moves.PROTECT ], // Previous Stage Move - [ 1, Moves.TACKLE ], // Previous Stage Move - [ 1, Moves.STRING_SHOT ], // Previous Stage Move - [ 1, Moves.HARDEN ], // Previous Stage Move - [ 1, Moves.BUG_BITE ], // Previous Stage Move - [ 1, Moves.POISON_POWDER ], - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.SLEEP_POWDER ], - [ 1, Moves.STRUGGLE_BUG ], - [ 1, Moves.POWDER ], - [ 12, Moves.LIGHT_SCREEN ], - [ 17, Moves.PSYBEAM ], - [ 21, Moves.SUPERSONIC ], - [ 25, Moves.DRAINING_KISS ], - [ 31, Moves.SAFEGUARD ], - [ 35, Moves.BUG_BUZZ ], - [ 45, Moves.QUIVER_DANCE ], - [ 50, Moves.HURRICANE ], - ], - [Species.LITLEO]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 5, Moves.EMBER ], - [ 8, Moves.WORK_UP ], - [ 11, Moves.HEADBUTT ], - [ 15, Moves.NOBLE_ROAR ], - [ 20, Moves.TAKE_DOWN ], - [ 23, Moves.FIRE_FANG ], - [ 28, Moves.ENDEAVOR ], - [ 33, Moves.ECHOED_VOICE ], - [ 36, Moves.FLAMETHROWER ], - [ 39, Moves.CRUNCH ], - [ 43, Moves.HYPER_VOICE ], - [ 46, Moves.INCINERATE ], - [ 50, Moves.OVERHEAT ], - ], - [Species.PYROAR]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 1, Moves.HYPER_BEAM ], - [ 1, Moves.WORK_UP ], - [ 11, Moves.HEADBUTT ], - [ 15, Moves.NOBLE_ROAR ], - [ 20, Moves.TAKE_DOWN ], - [ 23, Moves.FIRE_FANG ], - [ 28, Moves.ENDEAVOR ], - [ 33, Moves.ECHOED_VOICE ], - [ 38, Moves.FLAMETHROWER ], - [ 42, Moves.CRUNCH ], - [ 48, Moves.HYPER_VOICE ], - [ 51, Moves.INCINERATE ], - [ 57, Moves.OVERHEAT ], - ], - [Species.FLABEBE]: [ - [ 1, Moves.VINE_WHIP ], - [ 1, Moves.TACKLE ], - [ 6, Moves.FAIRY_WIND ], - [ 10, Moves.SAFEGUARD ], - [ 15, Moves.RAZOR_LEAF ], - [ 20, Moves.WISH ], - [ 22, Moves.MAGICAL_LEAF ], - [ 24, Moves.GRASSY_TERRAIN ], - [ 28, Moves.PETAL_BLIZZARD ], - [ 33, Moves.SYNTHESIS ], - [ 37, Moves.MISTY_TERRAIN ], - [ 41, Moves.MOONBLAST ], - [ 45, Moves.PETAL_DANCE ], - [ 48, Moves.SOLAR_BEAM ], - ], - [Species.FLOETTE]: [ - [ 1, Moves.VINE_WHIP ], - [ 1, Moves.TACKLE ], - [ 1, Moves.FAIRY_WIND ], - [ 10, Moves.SAFEGUARD ], - [ 15, Moves.RAZOR_LEAF ], - [ 20, Moves.WISH ], - [ 25, Moves.MAGICAL_LEAF ], - [ 27, Moves.GRASSY_TERRAIN ], - [ 33, Moves.PETAL_BLIZZARD ], - [ 38, Moves.SYNTHESIS ], - [ 43, Moves.MISTY_TERRAIN ], - [ 46, Moves.MOONBLAST ], - [ 51, Moves.PETAL_DANCE ], - [ 58, Moves.SOLAR_BEAM ], - ], - [Species.FLORGES]: [ - [ 1, Moves.VINE_WHIP ], // Previous Stage Move - [ 1, Moves.TACKLE ], // Previous Stage Move - [ 1, Moves.FAIRY_WIND ], // Previous Stage Move - [ 1, Moves.RAZOR_LEAF ], // Previous Stage Move - [ 1, Moves.SOLAR_BEAM ], - [ 1, Moves.PETAL_DANCE ], - [ 1, Moves.SAFEGUARD ], - [ 1, Moves.SYNTHESIS ], - [ 1, Moves.WISH ], - [ 1, Moves.LUCKY_CHANT ], - [ 1, Moves.MAGICAL_LEAF ], - [ 1, Moves.GRASS_KNOT ], - [ 1, Moves.PETAL_BLIZZARD ], - [ 1, Moves.DISARMING_VOICE ], - [ 1, Moves.GRASSY_TERRAIN ], - [ 1, Moves.MISTY_TERRAIN ], - [ 5, Moves.MOONBLAST ], - ], - [Species.SKIDDO]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWTH ], - [ 7, Moves.VINE_WHIP ], - [ 9, Moves.TAIL_WHIP ], - [ 12, Moves.LEECH_SEED ], - [ 13, Moves.RAZOR_LEAF ], - [ 16, Moves.WORRY_SEED ], - [ 20, Moves.SYNTHESIS ], - [ 22, Moves.TAKE_DOWN ], - [ 26, Moves.BULLDOZE ], - [ 30, Moves.SEED_BOMB ], - [ 34, Moves.BULK_UP ], - [ 38, Moves.DOUBLE_EDGE ], - [ 42, Moves.HORN_LEECH ], - [ 45, Moves.LEAF_BLADE ], - ], - [Species.GOGOAT]: [ - [ EVOLVE_MOVE, Moves.AERIAL_ACE ], - [ 1, Moves.VINE_WHIP ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWTH ], - [ 1, Moves.EARTHQUAKE ], - [ 12, Moves.LEECH_SEED ], - [ 13, Moves.RAZOR_LEAF ], - [ 16, Moves.WORRY_SEED ], - [ 20, Moves.SYNTHESIS ], - [ 22, Moves.TAKE_DOWN ], - [ 26, Moves.BULLDOZE ], - [ 30, Moves.SEED_BOMB ], - [ 34, Moves.BULK_UP ], - [ 40, Moves.DOUBLE_EDGE ], - [ 47, Moves.HORN_LEECH ], - [ 55, Moves.LEAF_BLADE ], - [ 58, Moves.MILK_DRINK ], - ], - [Species.PANCHAM]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 4, Moves.ARM_THRUST ], - [ 8, Moves.TAUNT ], - [ 12, Moves.CIRCLE_THROW ], - [ 16, Moves.LOW_SWEEP ], - [ 20, Moves.WORK_UP ], - [ 24, Moves.SLASH ], - [ 28, Moves.VITAL_THROW ], - [ 33, Moves.CRUNCH ], - [ 36, Moves.BODY_SLAM ], - [ 40, Moves.PARTING_SHOT ], - [ 44, Moves.ENTRAINMENT ], - ], - [Species.PANGORO]: [ - [ EVOLVE_MOVE, Moves.NIGHT_SLASH ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.TAUNT ], - [ 1, Moves.ARM_THRUST ], - [ 1, Moves.BULLET_PUNCH ], - [ 12, Moves.CIRCLE_THROW ], - [ 16, Moves.LOW_SWEEP ], - [ 20, Moves.WORK_UP ], - [ 24, Moves.SLASH ], - [ 28, Moves.VITAL_THROW ], - [ 35, Moves.CRUNCH ], - [ 40, Moves.BODY_SLAM ], - [ 46, Moves.PARTING_SHOT ], - [ 52, Moves.ENTRAINMENT ], - [ 58, Moves.HAMMER_ARM ], - ], - [Species.FURFROU]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 5, Moves.SAND_ATTACK ], - [ 9, Moves.BABY_DOLL_EYES ], - [ 12, Moves.HEADBUTT ], - [ 15, Moves.TAIL_WHIP ], - [ 22, Moves.BITE ], - [ 27, Moves.ODOR_SLEUTH ], - [ 33, Moves.RETALIATE ], - [ 35, Moves.TAKE_DOWN ], - [ 38, Moves.CHARM ], - [ 42, Moves.SUCKER_PUNCH ], - [ 48, Moves.COTTON_GUARD ], - ], - [Species.ESPURR]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 3, Moves.FAKE_OUT ], - [ 6, Moves.DISARMING_VOICE ], - [ 9, Moves.CONFUSION ], - [ 18, Moves.COVET ], - [ 21, Moves.PSYBEAM ], - [ 30, Moves.LIGHT_SCREEN ], - [ 30, Moves.REFLECT ], - [ 33, Moves.PSYSHOCK ], - ], - [Species.MEOWSTIC]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.MEAN_LOOK ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.DISARMING_VOICE ], - [ 9, Moves.CONFUSION ], - [ 12, Moves.HELPING_HAND ], - [ 15, Moves.CHARM ], - [ 18, Moves.COVET ], - [ 21, Moves.PSYBEAM ], - [ 24, Moves.SUCKER_PUNCH ], - [ 29, Moves.ROLE_PLAY ], - [ 34, Moves.LIGHT_SCREEN ], - [ 34, Moves.REFLECT ], - [ 39, Moves.PSYSHOCK ], - [ 44, Moves.IMPRISON ], - [ 49, Moves.QUICK_GUARD ], - [ 54, Moves.PSYCHIC ], - [ 59, Moves.MISTY_TERRAIN ], - ], - [Species.HONEDGE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.FURY_CUTTER ], - [ 4, Moves.SHADOW_SNEAK ], - [ 8, Moves.AUTOTOMIZE ], - [ 12, Moves.AERIAL_ACE ], - [ 16, Moves.METAL_SOUND ], - [ 20, Moves.SLASH ], - [ 24, Moves.NIGHT_SLASH ], - [ 28, Moves.RETALIATE ], - [ 32, Moves.IRON_DEFENSE ], - [ 36, Moves.IRON_HEAD ], - [ 40, Moves.POWER_TRICK ], - [ 44, Moves.SWORDS_DANCE ], - [ 48, Moves.SACRED_SWORD ], - ], - [Species.DOUBLADE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.SHADOW_SNEAK ], - [ 1, Moves.AUTOTOMIZE ], - [ 12, Moves.AERIAL_ACE ], - [ 16, Moves.METAL_SOUND ], - [ 20, Moves.SLASH ], - [ 24, Moves.NIGHT_SLASH ], - [ 28, Moves.RETALIATE ], - [ 32, Moves.IRON_DEFENSE ], - [ 38, Moves.IRON_HEAD ], - [ 44, Moves.POWER_TRICK ], - [ 50, Moves.SWORDS_DANCE ], - [ 56, Moves.SACRED_SWORD ], - ], - [Species.AEGISLASH]: [ - [ EVOLVE_MOVE, Moves.KINGS_SHIELD ], - [ 1, Moves.SWORDS_DANCE ], - [ 1, Moves.PURSUIT ], - [ 1, Moves.TACKLE ], - [ 1, Moves.SLASH ], - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.METAL_SOUND ], - [ 1, Moves.AERIAL_ACE ], - [ 1, Moves.IRON_DEFENSE ], - [ 1, Moves.POWER_TRICK ], - [ 1, Moves.NIGHT_SLASH ], - [ 1, Moves.SHADOW_SNEAK ], - [ 1, Moves.IRON_HEAD ], - [ 1, Moves.HEAD_SMASH ], - [ 1, Moves.AUTOTOMIZE ], - [ 1, Moves.RETALIATE ], - [ 1, Moves.SACRED_SWORD ], - ], - [Species.SPRITZEE]: [ - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.FAIRY_WIND ], - [ 3, Moves.SWEET_KISS ], - [ 6, Moves.ECHOED_VOICE ], - [ 9, Moves.DRAINING_KISS ], - [ 12, Moves.AROMATHERAPY ], - [ 18, Moves.ATTRACT ], - [ 21, Moves.FLAIL ], - [ 24, Moves.MISTY_TERRAIN ], - [ 27, Moves.PSYCHIC ], - [ 30, Moves.CHARM ], - [ 33, Moves.CALM_MIND ], - [ 36, Moves.MOONBLAST ], - [ 39, Moves.SKILL_SWAP ], - ], - [Species.AROMATISSE]: [ - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.ECHOED_VOICE ], - [ 1, Moves.HEAL_PULSE ], - [ 1, Moves.FAIRY_WIND ], - [ 1, Moves.AROMATIC_MIST ], - [ 9, Moves.DISARMING_VOICE ], - [ 12, Moves.AROMATHERAPY ], - [ 15, Moves.DRAINING_KISS ], - [ 18, Moves.ATTRACT ], - [ 21, Moves.FLAIL ], - [ 24, Moves.MISTY_TERRAIN ], - [ 27, Moves.PSYCHIC ], - [ 30, Moves.CHARM ], - [ 33, Moves.CALM_MIND ], - [ 36, Moves.MOONBLAST ], - [ 39, Moves.SKILL_SWAP ], - [ 42, Moves.PSYCH_UP ], - ], - [Species.SWIRLIX]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.SWEET_SCENT ], - [ 3, Moves.PLAY_NICE ], - [ 6, Moves.FAIRY_WIND ], - [ 9, Moves.AROMATHERAPY ], - [ 12, Moves.DRAINING_KISS ], - [ 15, Moves.FAKE_TEARS ], - [ 18, Moves.ROUND ], - [ 21, Moves.STRING_SHOT ], - [ 24, Moves.COTTON_SPORE ], - [ 27, Moves.ENERGY_BALL ], - [ 30, Moves.WISH ], - [ 33, Moves.PLAY_ROUGH ], - [ 36, Moves.COTTON_GUARD ], - [ 39, Moves.ENDEAVOR ], - ], - [Species.SLURPUFF]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.FAIRY_WIND ], - [ 1, Moves.PLAY_NICE ], - [ 9, Moves.AROMATHERAPY ], - [ 12, Moves.DRAINING_KISS ], - [ 15, Moves.FAKE_TEARS ], - [ 18, Moves.ROUND ], - [ 21, Moves.STRING_SHOT ], - [ 24, Moves.COTTON_SPORE ], - [ 27, Moves.ENERGY_BALL ], - [ 30, Moves.WISH ], - [ 33, Moves.PLAY_ROUGH ], - [ 36, Moves.COTTON_GUARD ], - [ 39, Moves.ENDEAVOR ], - [ 42, Moves.STICKY_WEB ], - ], - [Species.INKAY]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.PECK ], - [ 1, Moves.CONSTRICT ], - [ 3, Moves.HYPNOSIS ], - [ 6, Moves.WRAP ], - [ 9, Moves.PAYBACK ], - [ 12, Moves.PLUCK ], - [ 15, Moves.PSYBEAM ], - [ 18, Moves.SWAGGER ], - [ 21, Moves.SLASH ], - [ 24, Moves.NIGHT_SLASH ], - [ 27, Moves.PSYCHO_CUT ], - [ 31, Moves.SWITCHEROO ], - [ 33, Moves.FOUL_PLAY ], - [ 36, Moves.TOPSY_TURVY ], - [ 39, Moves.SUPERPOWER ], - ], - [Species.MALAMAR]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.WRAP ], - [ 1, Moves.PECK ], - [ 1, Moves.CONSTRICT ], - [ 1, Moves.HYPNOSIS ], - [ 1, Moves.REVERSAL ], - [ 9, Moves.PAYBACK ], - [ 12, Moves.PLUCK ], - [ 15, Moves.PSYBEAM ], - [ 18, Moves.SWAGGER ], - [ 21, Moves.SLASH ], - [ 24, Moves.NIGHT_SLASH ], - [ 27, Moves.PSYCHO_CUT ], - [ 33, Moves.SWITCHEROO ], - [ 37, Moves.FOUL_PLAY ], - [ 42, Moves.TOPSY_TURVY ], - [ 47, Moves.SUPERPOWER ], - ], - [Species.BINACLE]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.MUD_SLAP ], - [ 4, Moves.WITHDRAW ], - [ 8, Moves.WATER_GUN ], - [ 12, Moves.FURY_CUTTER ], - [ 16, Moves.FURY_SWIPES ], - [ 20, Moves.ANCIENT_POWER ], - [ 24, Moves.ROCK_POLISH ], - [ 28, Moves.SLASH ], - [ 32, Moves.HONE_CLAWS ], - [ 36, Moves.RAZOR_SHELL ], - [ 40, Moves.SHELL_SMASH ], - [ 44, Moves.CROSS_CHOP ], - ], - [Species.BARBARACLE]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.SKULL_BASH ], - [ 1, Moves.MUD_SLAP ], - [ 12, Moves.FURY_CUTTER ], - [ 16, Moves.FURY_SWIPES ], - [ 20, Moves.ANCIENT_POWER ], - [ 24, Moves.ROCK_POLISH ], - [ 28, Moves.SLASH ], - [ 32, Moves.HONE_CLAWS ], - [ 36, Moves.RAZOR_SHELL ], - [ 42, Moves.SHELL_SMASH ], - [ 48, Moves.CROSS_CHOP ], - [ 54, Moves.STONE_EDGE ], - ], - [Species.SKRELP]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.SMOKESCREEN ], - [ 5, Moves.ACID ], - [ 10, Moves.WATER_GUN ], - [ 15, Moves.TAIL_WHIP ], - [ 20, Moves.DOUBLE_TEAM ], - [ 25, Moves.POISON_TAIL ], - [ 30, Moves.WATER_PULSE ], - [ 35, Moves.TOXIC ], - [ 40, Moves.DRAGON_PULSE ], - [ 45, Moves.AQUA_TAIL ], - [ 50, Moves.SLUDGE_BOMB ], - [ 55, Moves.HYDRO_PUMP ], - ], - [Species.DRAGALGE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.ACID ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.FEINT_ATTACK ], - [ 15, Moves.TAIL_WHIP ], - [ 20, Moves.DOUBLE_TEAM ], - [ 25, Moves.POISON_TAIL ], - [ 30, Moves.WATER_PULSE ], - [ 35, Moves.TOXIC ], - [ 40, Moves.DRAGON_PULSE ], - [ 45, Moves.AQUA_TAIL ], - [ 52, Moves.SLUDGE_BOMB ], - [ 59, Moves.HYDRO_PUMP ], - [ 66, Moves.OUTRAGE ], - ], - [Species.CLAUNCHER]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.SPLASH ], - [ 10, Moves.FLAIL ], - [ 15, Moves.AQUA_JET ], - [ 20, Moves.SMACK_DOWN ], - [ 25, Moves.HONE_CLAWS ], - [ 30, Moves.WATER_PULSE ], - [ 35, Moves.SWORDS_DANCE ], - [ 40, Moves.AURA_SPHERE ], - [ 45, Moves.BOUNCE ], - [ 50, Moves.MUDDY_WATER ], - [ 55, Moves.CRABHAMMER ], - ], - [Species.CLAWITZER]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.SPLASH ], - [ 1, Moves.FLAIL ], - [ 1, Moves.DARK_PULSE ], - [ 1, Moves.DRAGON_PULSE ], - [ 1, Moves.HEAL_PULSE ], - [ 15, Moves.AQUA_JET ], - [ 20, Moves.SMACK_DOWN ], - [ 25, Moves.HONE_CLAWS ], - [ 30, Moves.WATER_PULSE ], - [ 35, Moves.SWORDS_DANCE ], - [ 42, Moves.AURA_SPHERE ], - [ 49, Moves.BOUNCE ], - [ 56, Moves.MUDDY_WATER ], - [ 63, Moves.CRABHAMMER ], - ], - [Species.HELIOPTILE]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.MUD_SLAP ], - [ 4, Moves.POUND ], - [ 8, Moves.THUNDER_SHOCK ], - [ 12, Moves.QUICK_ATTACK ], - [ 16, Moves.CHARGE ], - [ 20, Moves.BULLDOZE ], - [ 24, Moves.VOLT_SWITCH ], - [ 28, Moves.PARABOLIC_CHARGE ], - [ 32, Moves.THUNDER_WAVE ], - [ 36, Moves.THUNDERBOLT ], - [ 40, Moves.ELECTRIFY ], - [ 44, Moves.THUNDER ], - ], - [Species.HELIOLISK]: [ - [ 1, Moves.POUND ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.RAZOR_WIND ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.THUNDERBOLT ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.THUNDER ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.CHARGE ], - [ 1, Moves.DISCHARGE ], - [ 1, Moves.VOLT_SWITCH ], - [ 1, Moves.BULLDOZE ], - [ 1, Moves.PARABOLIC_CHARGE ], - [ 1, Moves.ELECTRIFY ], - [ 1, Moves.EERIE_IMPULSE ], - ], - [Species.TYRUNT]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 4, Moves.ROAR ], - [ 8, Moves.ANCIENT_POWER ], - [ 12, Moves.CHARM ], - [ 16, Moves.BITE ], - [ 20, Moves.DRAGON_TAIL ], - [ 24, Moves.STOMP ], - [ 28, Moves.ROCK_SLIDE ], - [ 32, Moves.CRUNCH ], - [ 36, Moves.DRAGON_CLAW ], - [ 40, Moves.THRASH ], - [ 44, Moves.EARTHQUAKE ], - [ 48, Moves.HORN_DRILL ], - ], - [Species.TYRANTRUM]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.ROAR ], - [ 1, Moves.ANCIENT_POWER ], - [ 12, Moves.CHARM ], - [ 16, Moves.BITE ], - [ 20, Moves.DRAGON_TAIL ], - [ 24, Moves.STOMP ], - [ 28, Moves.ROCK_SLIDE ], - [ 32, Moves.CRUNCH ], - [ 36, Moves.DRAGON_CLAW ], - [ 42, Moves.THRASH ], - [ 48, Moves.EARTHQUAKE ], - [ 54, Moves.HORN_DRILL ], - [ 60, Moves.GIGA_IMPACT ], - [ 66, Moves.HEAD_SMASH ], - ], - [Species.AMAURA]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.POWDER_SNOW ], - [ 4, Moves.ENCORE ], - [ 8, Moves.ANCIENT_POWER ], - [ 12, Moves.ICY_WIND ], - [ 16, Moves.ROUND ], - [ 20, Moves.MIST ], - [ 24, Moves.AURORA_BEAM ], - [ 28, Moves.THUNDER_WAVE ], - [ 32, Moves.NATURE_POWER ], - [ 36, Moves.FREEZE_DRY ], - [ 40, Moves.ICE_BEAM ], - [ 44, Moves.LIGHT_SCREEN ], - [ 48, Moves.HAIL ], - [ 52, Moves.BLIZZARD ], - [ 56, Moves.HYPER_BEAM ], - ], - [Species.AURORUS]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.ENCORE ], - [ 1, Moves.ANCIENT_POWER ], - [ 12, Moves.ICY_WIND ], - [ 16, Moves.ROUND ], - [ 20, Moves.MIST ], - [ 24, Moves.AURORA_BEAM ], - [ 28, Moves.THUNDER_WAVE ], - [ 32, Moves.NATURE_POWER ], - [ 36, Moves.FREEZE_DRY ], - [ 42, Moves.ICE_BEAM ], - [ 48, Moves.LIGHT_SCREEN ], - [ 54, Moves.HAIL ], - [ 60, Moves.BLIZZARD ], - [ 66, Moves.HYPER_BEAM ], - ], - [Species.SYLVEON]: [ - [ EVOLVE_MOVE, Moves.SPARKLY_SWIRL ], - [ RELEARN_MOVE, Moves.VEEVEE_VOLLEY ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.BITE ], - [ 1, Moves.GROWL ], - [ 1, Moves.CHARM ], - [ 1, Moves.BATON_PASS ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.COVET ], - [ 1, Moves.COPYCAT ], - [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.DISARMING_VOICE ], - [ 15, Moves.QUICK_ATTACK ], - [ 20, Moves.BABY_DOLL_EYES ], - [ 25, Moves.SWIFT ], - [ 30, Moves.LIGHT_SCREEN ], - [ 35, Moves.DRAINING_KISS ], - [ 40, Moves.MISTY_TERRAIN ], - [ 45, Moves.SKILL_SWAP ], - [ 50, Moves.PSYCH_UP ], - [ 55, Moves.MOONBLAST ], - [ 60, Moves.LAST_RESORT ], - ], - [Species.HAWLUCHA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.HONE_CLAWS ], - [ 4, Moves.WING_ATTACK ], - [ 8, Moves.DETECT ], - [ 12, Moves.AERIAL_ACE ], - [ 16, Moves.ENCORE ], - [ 20, Moves.FEATHER_DANCE ], - [ 24, Moves.BRICK_BREAK ], - [ 28, Moves.BOUNCE ], - [ 32, Moves.TAUNT ], - [ 36, Moves.ROOST ], - [ 40, Moves.SWORDS_DANCE ], - [ 44, Moves.FLYING_PRESS ], - [ 48, Moves.HIGH_JUMP_KICK ], - [ 52, Moves.ENDEAVOR ], - [ 56, Moves.SKY_ATTACK ], - ], - [Species.DEDENNE]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.NUZZLE ], - [ 5, Moves.TACKLE ], - [ 10, Moves.CHARGE ], - [ 15, Moves.THUNDER_SHOCK ], - [ 20, Moves.CHARM ], - [ 25, Moves.PARABOLIC_CHARGE ], - [ 30, Moves.VOLT_SWITCH ], - [ 35, Moves.REST ], - [ 35, Moves.SNORE ], - [ 40, Moves.DISCHARGE ], - [ 45, Moves.PLAY_ROUGH ], - [ 50, Moves.SUPER_FANG ], - [ 55, Moves.ENTRAINMENT ], - [ 60, Moves.THUNDER ], - ], - [Species.CARBINK]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 5, Moves.GUARD_SPLIT ], - [ 10, Moves.SMACK_DOWN ], - [ 15, Moves.FLAIL ], - [ 20, Moves.ANCIENT_POWER ], - [ 25, Moves.ROCK_POLISH ], - [ 30, Moves.LIGHT_SCREEN ], - [ 35, Moves.ROCK_SLIDE ], - [ 40, Moves.SKILL_SWAP ], - [ 45, Moves.POWER_GEM ], - [ 50, Moves.STEALTH_ROCK ], - [ 55, Moves.MOONBLAST ], - [ 60, Moves.STONE_EDGE ], - ], - [Species.GOOMY]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.ABSORB ], - [ 5, Moves.WATER_GUN ], - [ 10, Moves.DRAGON_BREATH ], - [ 15, Moves.PROTECT ], - [ 20, Moves.FLAIL ], - [ 25, Moves.WATER_PULSE ], - [ 30, Moves.RAIN_DANCE ], - [ 35, Moves.DRAGON_PULSE ], - [ 41, Moves.CURSE ], - [ 45, Moves.BODY_SLAM ], - [ 50, Moves.MUDDY_WATER ], - ], - [Species.SLIGGOO]: [ - [ EVOLVE_MOVE, Moves.ACID_SPRAY ], - [ 1, Moves.TACKLE ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.ABSORB ], - [ 1, Moves.ACID_ARMOR ], - [ 1, Moves.DRAGON_BREATH ], - [ 15, Moves.PROTECT ], - [ 20, Moves.FLAIL ], - [ 25, Moves.WATER_PULSE ], - [ 30, Moves.RAIN_DANCE ], - [ 35, Moves.DRAGON_PULSE ], - [ 43, Moves.CURSE ], - [ 49, Moves.BODY_SLAM ], - [ 56, Moves.MUDDY_WATER ], - ], - [Species.GOODRA]: [ - [ EVOLVE_MOVE, Moves.AQUA_TAIL ], - [ 1, Moves.TACKLE ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.ABSORB ], - [ 1, Moves.ACID_ARMOR ], // Previous Stage Move - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.POISON_TAIL ], - [ 1, Moves.FEINT ], - [ 1, Moves.ACID_SPRAY ], - [ 1, Moves.TEARFUL_LOOK ], - [ 15, Moves.PROTECT ], - [ 20, Moves.FLAIL ], - [ 25, Moves.WATER_PULSE ], - [ 30, Moves.RAIN_DANCE ], - [ 35, Moves.DRAGON_PULSE ], // Previous Stage Move, NatDex / Hisui Goodra Level - [ 43, Moves.CURSE ], - [ 49, Moves.BODY_SLAM ], - [ 58, Moves.MUDDY_WATER ], - [ 67, Moves.POWER_WHIP ], - ], - [Species.KLEFKI]: [ - [ 1, Moves.ASTONISH ], - [ 4, Moves.TACKLE ], - [ 8, Moves.FAIRY_WIND ], - [ 12, Moves.TORMENT ], - [ 16, Moves.FAIRY_LOCK ], - [ 20, Moves.METAL_SOUND ], - [ 24, Moves.DRAINING_KISS ], - [ 28, Moves.RECYCLE ], - [ 32, Moves.IMPRISON ], - [ 36, Moves.FLASH_CANNON ], - [ 40, Moves.PLAY_ROUGH ], - [ 44, Moves.MAGIC_ROOM ], - [ 48, Moves.FOUL_PLAY ], - [ 50, Moves.HEAL_BLOCK ], - [ 52, Moves.LAST_RESORT ], - ], - [Species.PHANTUMP]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.ASTONISH ], - [ 4, Moves.BRANCH_POKE ], - [ 8, Moves.LEECH_SEED ], - [ 12, Moves.CONFUSE_RAY ], - [ 16, Moves.WILL_O_WISP ], - [ 20, Moves.HEX ], - [ 24, Moves.GROWTH ], - [ 28, Moves.HORN_LEECH ], - [ 32, Moves.CURSE ], - [ 36, Moves.PHANTOM_FORCE ], - [ 40, Moves.INGRAIN ], - [ 44, Moves.WOOD_HAMMER ], - [ 48, Moves.DESTINY_BOND ], - [ 52, Moves.FORESTS_CURSE ], - ], - [Species.TREVENANT]: [ - [ EVOLVE_MOVE, Moves.SHADOW_CLAW ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEECH_SEED ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.BRANCH_POKE ], - [ 12, Moves.CONFUSE_RAY ], - [ 16, Moves.WILL_O_WISP ], - [ 20, Moves.HEX ], - [ 24, Moves.GROWTH ], - [ 28, Moves.HORN_LEECH ], - [ 32, Moves.CURSE ], - [ 36, Moves.PHANTOM_FORCE ], - [ 40, Moves.INGRAIN ], - [ 44, Moves.WOOD_HAMMER ], - [ 48, Moves.DESTINY_BOND ], - [ 52, Moves.FORESTS_CURSE ], - ], - [Species.PUMPKABOO]: [ - [ 1, Moves.ASTONISH ], - [ 1, Moves.TRICK_OR_TREAT ], - [ 1, Moves.LEAFAGE ], // Custom - [ 4, Moves.SHADOW_SNEAK ], - [ 8, Moves.CONFUSE_RAY ], - [ 12, Moves.RAZOR_LEAF ], - [ 16, Moves.LEECH_SEED ], - [ 20, Moves.BULLET_SEED ], - [ 24, Moves.SCARY_FACE ], - [ 28, Moves.WORRY_SEED ], - [ 32, Moves.SEED_BOMB ], - [ 36, Moves.SHADOW_BALL ], - [ 40, Moves.TRICK ], - [ 44, Moves.PAIN_SPLIT ], - ], - [Species.GOURGEIST]: [ - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.EXPLOSION ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.LEAFAGE ], // Previous Stage Move, Custom - [ 1, Moves.SHADOW_SNEAK ], - [ 1, Moves.TRICK_OR_TREAT ], - [ 1, Moves.MOONBLAST ], - [ 12, Moves.RAZOR_LEAF ], - [ 16, Moves.LEECH_SEED ], - [ 20, Moves.BULLET_SEED ], - [ 24, Moves.SCARY_FACE ], - [ 28, Moves.WORRY_SEED ], - [ 32, Moves.SEED_BOMB ], - [ 36, Moves.SHADOW_BALL ], - [ 40, Moves.TRICK ], - [ 44, Moves.PAIN_SPLIT ], - [ 48, Moves.PHANTOM_FORCE ], - ], - [Species.BERGMITE]: [ - [ 1, Moves.HARDEN ], - [ 1, Moves.RAPID_SPIN ], - [ 3, Moves.TACKLE ], - [ 6, Moves.POWDER_SNOW ], - [ 9, Moves.CURSE ], - [ 12, Moves.ICY_WIND ], - [ 15, Moves.PROTECT ], - [ 18, Moves.AVALANCHE ], - [ 21, Moves.BITE ], - [ 24, Moves.ICE_FANG ], - [ 27, Moves.IRON_DEFENSE ], - [ 30, Moves.RECOVER ], - [ 33, Moves.CRUNCH ], - [ 36, Moves.TAKE_DOWN ], - [ 39, Moves.BLIZZARD ], - [ 42, Moves.DOUBLE_EDGE ], - ], - [Species.AVALUGG]: [ - [ EVOLVE_MOVE, Moves.BODY_SLAM ], - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.WIDE_GUARD ], - [ 9, Moves.CURSE ], - [ 12, Moves.ICY_WIND ], - [ 15, Moves.PROTECT ], - [ 18, Moves.AVALANCHE ], - [ 21, Moves.BITE ], - [ 24, Moves.ICE_FANG ], - [ 27, Moves.IRON_DEFENSE ], - [ 30, Moves.RECOVER ], - [ 33, Moves.CRUNCH ], - [ 36, Moves.TAKE_DOWN ], - [ 41, Moves.BLIZZARD ], - [ 46, Moves.DOUBLE_EDGE ], - [ 51, Moves.ICICLE_CRASH ], - ], - [Species.NOIBAT]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.ABSORB ], - [ 4, Moves.GUST ], - [ 8, Moves.SUPERSONIC ], - [ 12, Moves.DOUBLE_TEAM ], - [ 16, Moves.WING_ATTACK ], - [ 20, Moves.BITE ], - [ 24, Moves.AIR_CUTTER ], - [ 28, Moves.WHIRLWIND ], - [ 32, Moves.SUPER_FANG ], - [ 36, Moves.AIR_SLASH ], - [ 40, Moves.SCREECH ], - [ 44, Moves.ROOST ], - [ 49, Moves.TAILWIND ], - [ 52, Moves.HURRICANE ], - ], - [Species.NOIVERN]: [ - [ EVOLVE_MOVE, Moves.DRAGON_PULSE ], - [ 1, Moves.GUST ], - [ 1, Moves.TACKLE ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.ABSORB ], - [ 1, Moves.MOONLIGHT ], - [ 12, Moves.DOUBLE_TEAM ], - [ 16, Moves.WING_ATTACK ], - [ 20, Moves.BITE ], - [ 24, Moves.AIR_CUTTER ], - [ 28, Moves.WHIRLWIND ], - [ 32, Moves.SUPER_FANG ], - [ 36, Moves.AIR_SLASH ], - [ 40, Moves.SCREECH ], - [ 44, Moves.ROOST ], - [ 51, Moves.TAILWIND ], - [ 56, Moves.HURRICANE ], - [ 62, Moves.BOOMBURST ], - ], - [Species.XERNEAS]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GRAVITY ], - [ 5, Moves.LIGHT_SCREEN ], - [ 10, Moves.AURORA_BEAM ], - [ 15, Moves.NATURE_POWER ], - [ 20, Moves.NIGHT_SLASH ], - [ 25, Moves.AROMATHERAPY ], - [ 30, Moves.PSYCH_UP ], - [ 35, Moves.HORN_LEECH ], - [ 40, Moves.MISTY_TERRAIN ], - [ 45, Moves.INGRAIN ], - [ 50, Moves.TAKE_DOWN ], - [ 55, Moves.GEOMANCY ], - [ 60, Moves.MOONBLAST ], - [ 65, Moves.HEAL_PULSE ], - [ 70, Moves.MEGAHORN ], - [ 75, Moves.CLOSE_COMBAT ], - [ 80, Moves.OUTRAGE ], - [ 85, Moves.GIGA_IMPACT ], - ], - [Species.YVELTAL]: [ - [ 1, Moves.GUST ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.RAZOR_WIND ], - [ 5, Moves.TAUNT ], - [ 10, Moves.SNARL ], - [ 15, Moves.DISABLE ], - [ 20, Moves.SUCKER_PUNCH ], - [ 25, Moves.TAILWIND ], - [ 30, Moves.ROOST ], - [ 35, Moves.AIR_SLASH ], - [ 40, Moves.DARK_PULSE ], - [ 45, Moves.PSYCHIC ], - [ 50, Moves.OBLIVION_WING ], - [ 55, Moves.PHANTOM_FORCE ], - [ 60, Moves.FOUL_PLAY ], - [ 65, Moves.DRAGON_RUSH ], - [ 70, Moves.HURRICANE ], - [ 75, Moves.FOCUS_BLAST ], - [ 80, Moves.SKY_ATTACK ], - [ 85, Moves.HYPER_BEAM ], - ], - [Species.ZYGARDE]: [ - [ 1, Moves.BIND ], - [ 1, Moves.BITE ], - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.BULLDOZE ], - [ 1, Moves.THOUSAND_ARROWS ], - [ 1, Moves.THOUSAND_WAVES ], - [ 1, Moves.CORE_ENFORCER ], - [ 8, Moves.HAZE ], - [ 16, Moves.DIG ], - [ 24, Moves.SAFEGUARD ], - [ 32, Moves.CRUNCH ], - [ 40, Moves.DRAGON_PULSE ], - [ 48, Moves.LANDS_WRATH ], - [ 56, Moves.GLARE ], - [ 64, Moves.SANDSTORM ], - [ 72, Moves.COIL ], - [ 80, Moves.EARTHQUAKE ], - [ 88, Moves.OUTRAGE ], - ], - [Species.DIANCIE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.DIAMOND_STORM ], - [ 7, Moves.GUARD_SPLIT ], - [ 14, Moves.SMACK_DOWN ], - [ 21, Moves.FLAIL ], - [ 28, Moves.ANCIENT_POWER ], - [ 35, Moves.ROCK_POLISH ], - [ 42, Moves.LIGHT_SCREEN ], - [ 49, Moves.ROCK_SLIDE ], - [ 56, Moves.SKILL_SWAP ], - [ 63, Moves.POWER_GEM ], - [ 70, Moves.STEALTH_ROCK ], - [ 77, Moves.MOONBLAST ], - [ 84, Moves.STONE_EDGE ], - ], - [Species.HOOPA]: [ - [ 1, Moves.CONFUSION ], - [ 1, Moves.DESTINY_BOND ], - [ 1, Moves.ALLY_SWITCH ], - [ 6, Moves.ASTONISH ], - [ 10, Moves.TRICK ], - [ 15, Moves.LIGHT_SCREEN ], - [ 19, Moves.PSYBEAM ], - [ 25, Moves.SKILL_SWAP ], - [ 29, Moves.GUARD_SPLIT ], - [ 29, Moves.POWER_SPLIT ], - [ 35, Moves.PHANTOM_FORCE ], - [ 46, Moves.ZEN_HEADBUTT ], - [ 50, Moves.TRICK_ROOM ], - [ 50, Moves.WONDER_ROOM ], - [ 55, Moves.SHADOW_BALL ], - [ 68, Moves.NASTY_PLOT ], - [ 75, Moves.PSYCHIC ], - [ 85, Moves.HYPERSPACE_HOLE ], - ], - [Species.VOLCANION]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.FIRE_SPIN ], - [ 1, Moves.STEAM_ERUPTION ], - [ 6, Moves.LEER ], - [ 12, Moves.WEATHER_BALL ], - [ 18, Moves.FLAME_CHARGE ], - [ 24, Moves.WATER_PULSE ], - [ 30, Moves.SCARY_FACE ], - [ 36, Moves.INCINERATE ], - [ 42, Moves.STOMP ], - [ 48, Moves.SCALD ], - [ 54, Moves.TAKE_DOWN ], - [ 60, Moves.MIST ], - [ 60, Moves.HAZE ], - [ 66, Moves.HYDRO_PUMP ], - [ 78, Moves.FLARE_BLITZ ], - [ 84, Moves.OVERHEAT ], - [ 90, Moves.EXPLOSION ], - ], - [Species.ROWLET]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 3, Moves.LEAFAGE ], - [ 6, Moves.ASTONISH ], - [ 9, Moves.PECK ], - [ 12, Moves.SHADOW_SNEAK ], - [ 15, Moves.RAZOR_LEAF ], - [ 18, Moves.SYNTHESIS ], - [ 21, Moves.PLUCK ], - [ 24, Moves.NASTY_PLOT ], - [ 27, Moves.SUCKER_PUNCH ], - [ 30, Moves.LEAF_BLADE ], - [ 33, Moves.FEATHER_DANCE ], - [ 36, Moves.BRAVE_BIRD ], - ], - [Species.DARTRIX]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.LEAFAGE ], - [ 9, Moves.PECK ], - [ 12, Moves.SHADOW_SNEAK ], - [ 15, Moves.RAZOR_LEAF ], - [ 20, Moves.SYNTHESIS ], - [ 25, Moves.PLUCK ], - [ 30, Moves.NASTY_PLOT ], - [ 35, Moves.SUCKER_PUNCH ], - [ 40, Moves.LEAF_BLADE ], - [ 45, Moves.FEATHER_DANCE ], - [ 50, Moves.BRAVE_BIRD ], - ], - [Species.DECIDUEYE]: [ - [ EVOLVE_MOVE, Moves.SPIRIT_SHACKLE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.SPITE ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.U_TURN ], - [ 1, Moves.LEAF_STORM ], - [ 1, Moves.PHANTOM_FORCE ], - [ 1, Moves.LEAFAGE ], - [ 9, Moves.PECK ], - [ 12, Moves.SHADOW_SNEAK ], - [ 15, Moves.RAZOR_LEAF ], - [ 20, Moves.SYNTHESIS ], - [ 25, Moves.PLUCK ], - [ 30, Moves.NASTY_PLOT ], - [ 37, Moves.SUCKER_PUNCH ], - [ 44, Moves.LEAF_BLADE ], - [ 51, Moves.FEATHER_DANCE ], - [ 58, Moves.BRAVE_BIRD ], - ], - [Species.LITTEN]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 3, Moves.EMBER ], - [ 6, Moves.LICK ], - [ 9, Moves.ROAR ], - [ 12, Moves.FURY_SWIPES ], - [ 15, Moves.BITE ], - [ 18, Moves.DOUBLE_KICK ], - [ 21, Moves.FIRE_FANG ], - [ 24, Moves.SCARY_FACE ], - [ 27, Moves.SWAGGER ], - [ 30, Moves.FLAMETHROWER ], - [ 33, Moves.THRASH ], - [ 36, Moves.FLARE_BLITZ ], - ], - [Species.TORRACAT]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 1, Moves.EMBER ], - [ 1, Moves.LICK ], - [ 9, Moves.ROAR ], - [ 12, Moves.FURY_SWIPES ], - [ 15, Moves.BITE ], - [ 20, Moves.DOUBLE_KICK ], - [ 25, Moves.FIRE_FANG ], - [ 30, Moves.SCARY_FACE ], - [ 35, Moves.SWAGGER ], - [ 40, Moves.FLAMETHROWER ], - [ 45, Moves.THRASH ], - [ 50, Moves.FLARE_BLITZ ], - ], - [Species.INCINEROAR]: [ - [ EVOLVE_MOVE, Moves.DARKEST_LARIAT ], - [ RELEARN_MOVE, Moves.SCRATCH ], - [ RELEARN_MOVE, Moves.GROWL ], - [ RELEARN_MOVE, Moves.THROAT_CHOP ], - [ 1, Moves.EMBER ], - [ 1, Moves.LICK ], - [ 1, Moves.CROSS_CHOP ], - [ 1, Moves.BULK_UP ], - [ 9, Moves.ROAR ], - [ 12, Moves.FURY_SWIPES ], - [ 15, Moves.BITE ], - [ 20, Moves.DOUBLE_KICK ], - [ 25, Moves.FIRE_FANG ], - [ 30, Moves.SCARY_FACE ], - [ 32, Moves.SWAGGER ], - [ 44, Moves.FLAMETHROWER ], - [ 51, Moves.THRASH ], - [ 58, Moves.FLARE_BLITZ ], - ], - [Species.POPPLIO]: [ - [ 1, Moves.POUND ], - [ 1, Moves.GROWL ], - [ 3, Moves.WATER_GUN ], - [ 6, Moves.DISARMING_VOICE ], - [ 9, Moves.AQUA_JET ], - [ 12, Moves.BABY_DOLL_EYES ], - [ 15, Moves.ICY_WIND ], - [ 18, Moves.SING ], - [ 21, Moves.BUBBLE_BEAM ], - [ 24, Moves.ENCORE ], - [ 27, Moves.MISTY_TERRAIN ], - [ 30, Moves.HYPER_VOICE ], - [ 33, Moves.MOONBLAST ], - [ 36, Moves.HYDRO_PUMP ], - ], - [Species.BRIONNE]: [ - [ 1, Moves.POUND ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.DISARMING_VOICE ], - [ 9, Moves.AQUA_JET ], - [ 12, Moves.BABY_DOLL_EYES ], - [ 15, Moves.ICY_WIND ], - [ 20, Moves.SING ], - [ 25, Moves.BUBBLE_BEAM ], - [ 30, Moves.ENCORE ], - [ 35, Moves.MISTY_TERRAIN ], - [ 40, Moves.HYPER_VOICE ], - [ 45, Moves.MOONBLAST ], - [ 50, Moves.HYDRO_PUMP ], - ], - [Species.PRIMARINA]: [ - [ EVOLVE_MOVE, Moves.SPARKLING_ARIA ], - [ 1, Moves.POUND ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.DISARMING_VOICE ], - [ 9, Moves.AQUA_JET ], - [ 12, Moves.BABY_DOLL_EYES ], - [ 15, Moves.ICY_WIND ], - [ 20, Moves.SING ], - [ 25, Moves.BUBBLE_BEAM ], - [ 30, Moves.ENCORE ], - [ 37, Moves.MISTY_TERRAIN ], - [ 44, Moves.HYPER_VOICE ], - [ 51, Moves.MOONBLAST ], - [ 58, Moves.HYDRO_PUMP ], - ], - [Species.PIKIPEK]: [ - [ 1, Moves.PECK ], - [ 3, Moves.GROWL ], - [ 7, Moves.ECHOED_VOICE ], - [ 9, Moves.ROCK_SMASH ], - [ 13, Moves.SUPERSONIC ], - [ 15, Moves.PLUCK ], - [ 19, Moves.ROOST ], - [ 21, Moves.FURY_ATTACK ], - [ 25, Moves.SCREECH ], - [ 27, Moves.DRILL_PECK ], - [ 31, Moves.BULLET_SEED ], - [ 33, Moves.FEATHER_DANCE ], - [ 37, Moves.HYPER_VOICE ], - ], - [Species.TRUMBEAK]: [ - [ RELEARN_MOVE, Moves.ECHOED_VOICE ], - [ 1, Moves.GROWL ], - [ 1, Moves.PECK ], - [ 1, Moves.ROCK_SMASH ], - [ 1, Moves.ROCK_BLAST ], - [ 13, Moves.SUPERSONIC ], - [ 16, Moves.PLUCK ], - [ 21, Moves.ROOST ], - [ 24, Moves.FURY_ATTACK ], - [ 29, Moves.SCREECH ], - [ 32, Moves.DRILL_PECK ], - [ 37, Moves.BULLET_SEED ], - [ 40, Moves.FEATHER_DANCE ], - [ 45, Moves.HYPER_VOICE ], - ], - [Species.TOUCANNON]: [ - [ EVOLVE_MOVE, Moves.BEAK_BLAST ], - [ 1, Moves.GROWL ], - [ 1, Moves.PECK ], - [ 1, Moves.ROCK_SMASH ], - [ 1, Moves.ROCK_BLAST ], - [ 1, Moves.ECHOED_VOICE ], - [ 13, Moves.SUPERSONIC ], - [ 16, Moves.PLUCK ], - [ 21, Moves.ROOST ], - [ 24, Moves.FURY_ATTACK ], - [ 30, Moves.SCREECH ], - [ 34, Moves.DRILL_PECK ], - [ 40, Moves.BULLET_SEED ], - [ 44, Moves.FEATHER_DANCE ], - [ 50, Moves.HYPER_VOICE ], - ], - [Species.YUNGOOS]: [ - [ 1, Moves.TACKLE ], - [ 3, Moves.LEER ], - [ 7, Moves.PAYBACK ], - [ 10, Moves.SAND_ATTACK ], - [ 13, Moves.WORK_UP ], - [ 19, Moves.BITE ], - [ 22, Moves.MUD_SLAP ], - [ 25, Moves.SUPER_FANG ], - [ 28, Moves.TAKE_DOWN ], - [ 31, Moves.SCARY_FACE ], - [ 34, Moves.CRUNCH ], - [ 37, Moves.YAWN ], - [ 40, Moves.THRASH ], - [ 43, Moves.REST ], - ], - [Species.GUMSHOOS]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.PAYBACK ], - [ 1, Moves.PURSUIT ], - [ 13, Moves.WORK_UP ], - [ 19, Moves.BITE ], - [ 23, Moves.MUD_SLAP ], - [ 27, Moves.SUPER_FANG ], - [ 31, Moves.TAKE_DOWN ], - [ 35, Moves.SCARY_FACE ], - [ 39, Moves.CRUNCH ], - [ 43, Moves.YAWN ], - [ 47, Moves.THRASH ], - [ 52, Moves.REST ], - ], - [Species.GRUBBIN]: [ - [ 1, Moves.VISE_GRIP ], - [ 1, Moves.MUD_SLAP ], - [ 5, Moves.STRING_SHOT ], - [ 10, Moves.BUG_BITE ], - [ 15, Moves.BITE ], - [ 21, Moves.SPARK ], - [ 25, Moves.STICKY_WEB ], - [ 30, Moves.X_SCISSOR ], - [ 35, Moves.CRUNCH ], - [ 40, Moves.DIG ], - ], - [Species.CHARJABUG]: [ - [ EVOLVE_MOVE, Moves.CHARGE ], - [ 1, Moves.VISE_GRIP ], - [ 1, Moves.STRING_SHOT ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.BUG_BITE ], - [ 15, Moves.BITE ], - [ 23, Moves.SPARK ], - [ 29, Moves.STICKY_WEB ], - [ 36, Moves.X_SCISSOR ], - [ 43, Moves.CRUNCH ], - [ 50, Moves.DIG ], - [ 57, Moves.IRON_DEFENSE ], - [ 64, Moves.DISCHARGE ], - ], - [Species.VIKAVOLT]: [ - [ EVOLVE_MOVE, Moves.THUNDERBOLT ], - [ RELEARN_MOVE, Moves.VISE_GRIP ], - [ RELEARN_MOVE, Moves.DIG ], - [ RELEARN_MOVE, Moves.MUD_SLAP ], - [ RELEARN_MOVE, Moves.IRON_DEFENSE ], - [ RELEARN_MOVE, Moves.X_SCISSOR ], - [ RELEARN_MOVE, Moves.BUG_BITE ], - [ 1, Moves.CHARGE ], - [ 1, Moves.CRUNCH ], - [ 1, Moves.DISCHARGE ], - [ 1, Moves.STRING_SHOT ], - [ 15, Moves.BITE ], - [ 23, Moves.SPARK ], - [ 29, Moves.STICKY_WEB ], - [ 36, Moves.BUG_BUZZ ], - [ 43, Moves.GUILLOTINE ], - [ 50, Moves.FLY ], - [ 57, Moves.AGILITY ], - [ 64, Moves.ZAP_CANNON ], - ], - [Species.CRABRAWLER]: [ - [ 1, Moves.BUBBLE ], - [ 1, Moves.VISE_GRIP ], - [ 5, Moves.ROCK_SMASH ], - [ 9, Moves.LEER ], - [ 13, Moves.BUBBLE_BEAM ], - [ 17, Moves.PROTECT ], - [ 22, Moves.BRICK_BREAK ], - [ 25, Moves.SLAM ], - [ 29, Moves.PAYBACK ], - [ 33, Moves.REVERSAL ], - [ 37, Moves.CRABHAMMER ], - [ 42, Moves.IRON_DEFENSE ], - [ 45, Moves.DYNAMIC_PUNCH ], - [ 49, Moves.CLOSE_COMBAT ], - ], - [Species.CRABOMINABLE]: [ - [ EVOLVE_MOVE, Moves.ICE_PUNCH ], - [ RELEARN_MOVE, Moves.CRABHAMMER ], // Previous Stage Move - [ 1, Moves.VISE_GRIP ], // Previous Stage Move - [ 1, Moves.LEER ], - [ 1, Moves.PROTECT ], - [ 1, Moves.ROCK_SMASH ], - [ 1, Moves.BUBBLE ], - [ 1, Moves.PURSUIT ], - [ 1, Moves.PAYBACK ], // Previous Stage Move - [ 17, Moves.BUBBLE_BEAM ], - [ 22, Moves.BRICK_BREAK ], - [ 25, Moves.SLAM ], - [ 29, Moves.AVALANCHE ], - [ 33, Moves.REVERSAL ], - [ 37, Moves.ICE_HAMMER ], - [ 42, Moves.IRON_DEFENSE ], - [ 45, Moves.DYNAMIC_PUNCH ], - [ 49, Moves.CLOSE_COMBAT ], - ], - [Species.ORICORIO]: [ - [ 1, Moves.POUND ], - [ 4, Moves.GROWL ], - [ 6, Moves.PECK ], - [ 10, Moves.HELPING_HAND ], - [ 13, Moves.AIR_CUTTER ], - [ 16, Moves.BATON_PASS ], - [ 20, Moves.FEATHER_DANCE ], - [ 23, Moves.ACROBATICS ], - [ 26, Moves.TEETER_DANCE ], - [ 30, Moves.ROOST ], - [ 33, Moves.FLATTER ], - [ 36, Moves.AIR_SLASH ], - [ 40, Moves.REVELATION_DANCE ], - [ 43, Moves.AGILITY ], - [ 47, Moves.HURRICANE ], - ], - [Species.CUTIEFLY]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.FAIRY_WIND ], - [ 6, Moves.STUN_SPORE ], - [ 12, Moves.SWEET_SCENT ], - [ 18, Moves.DRAINING_KISS ], - [ 24, Moves.STRUGGLE_BUG ], - [ 30, Moves.COVET ], - [ 36, Moves.SWITCHEROO ], - [ 42, Moves.DAZZLING_GLEAM ], - [ 48, Moves.BUG_BUZZ ], - [ 54, Moves.QUIVER_DANCE ], - ], - [Species.RIBOMBEE]: [ - [ EVOLVE_MOVE, Moves.POLLEN_PUFF ], - [ 1, Moves.ABSORB ], - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.FAIRY_WIND ], - [ 18, Moves.DRAINING_KISS ], - [ 24, Moves.STRUGGLE_BUG ], - [ 32, Moves.COVET ], - [ 40, Moves.SWITCHEROO ], - [ 48, Moves.DAZZLING_GLEAM ], - [ 56, Moves.BUG_BUZZ ], - [ 64, Moves.QUIVER_DANCE ], - ], - [Species.ROCKRUFF]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 4, Moves.SAND_ATTACK ], - [ 8, Moves.DOUBLE_TEAM ], - [ 12, Moves.ROCK_THROW ], - [ 16, Moves.HOWL ], - [ 20, Moves.BITE ], - [ 24, Moves.ROCK_TOMB ], - [ 28, Moves.ROAR ], - [ 32, Moves.ROCK_SLIDE ], - [ 36, Moves.CRUNCH ], - [ 40, Moves.SCARY_FACE ], - [ 44, Moves.STEALTH_ROCK ], - [ 48, Moves.STONE_EDGE ], - ], - [Species.LYCANROC]: [ - [ EVOLVE_MOVE, Moves.SUCKER_PUNCH ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.QUICK_GUARD ], - [ 1, Moves.ACCELEROCK ], - [ 12, Moves.ROCK_THROW ], - [ 16, Moves.HOWL ], - [ 20, Moves.BITE ], - [ 24, Moves.ROCK_TOMB ], - [ 30, Moves.ROAR ], - [ 36, Moves.ROCK_SLIDE ], - [ 42, Moves.CRUNCH ], - [ 48, Moves.SCARY_FACE ], - [ 54, Moves.STEALTH_ROCK ], - [ 60, Moves.STONE_EDGE ], - ], - [Species.WISHIWASHI]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 4, Moves.HELPING_HAND ], - [ 8, Moves.BEAT_UP ], - [ 12, Moves.BRINE ], - [ 16, Moves.TEARFUL_LOOK ], - [ 20, Moves.DIVE ], - [ 24, Moves.SOAK ], - [ 28, Moves.UPROAR ], - [ 32, Moves.AQUA_TAIL ], - [ 36, Moves.AQUA_RING ], - [ 40, Moves.ENDEAVOR ], - [ 44, Moves.HYDRO_PUMP ], - [ 48, Moves.DOUBLE_EDGE ], - ], - [Species.MAREANIE]: [ - [ 1, Moves.POISON_STING ], - [ 1, Moves.PECK ], - [ 5, Moves.WIDE_GUARD ], - [ 10, Moves.BITE ], - [ 15, Moves.VENOSHOCK ], - [ 20, Moves.RECOVER ], - [ 25, Moves.PIN_MISSILE ], - [ 30, Moves.TOXIC_SPIKES ], - [ 35, Moves.LIQUIDATION ], - [ 40, Moves.ACID_SPRAY ], - [ 45, Moves.POISON_JAB ], - [ 50, Moves.TOXIC ], - ], - [Species.TOXAPEX]: [ - [ EVOLVE_MOVE, Moves.BANEFUL_BUNKER ], - [ 1, Moves.POISON_STING ], - [ 1, Moves.BITE ], - [ 1, Moves.PECK ], - [ 1, Moves.WIDE_GUARD ], - [ 15, Moves.VENOSHOCK ], - [ 20, Moves.RECOVER ], - [ 25, Moves.PIN_MISSILE ], - [ 30, Moves.TOXIC_SPIKES ], - [ 35, Moves.LIQUIDATION ], - [ 42, Moves.ACID_SPRAY ], - [ 49, Moves.POISON_JAB ], - [ 56, Moves.TOXIC ], - ], - [Species.MUDBRAY]: [ - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.ROCK_SMASH ], - [ 4, Moves.IRON_DEFENSE ], - [ 8, Moves.DOUBLE_KICK ], - [ 12, Moves.BULLDOZE ], - [ 16, Moves.STOMP ], - [ 20, Moves.STRENGTH ], - [ 24, Moves.COUNTER ], - [ 28, Moves.HIGH_HORSEPOWER ], - [ 32, Moves.HEAVY_SLAM ], - [ 36, Moves.EARTHQUAKE ], - [ 40, Moves.MEGA_KICK ], - [ 44, Moves.SUPERPOWER ], - ], - [Species.MUDSDALE]: [ - [ 1, Moves.DOUBLE_KICK ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.ROCK_SMASH ], - [ 1, Moves.IRON_DEFENSE ], - [ 12, Moves.BULLDOZE ], - [ 16, Moves.STOMP ], - [ 20, Moves.STRENGTH ], - [ 24, Moves.COUNTER ], - [ 28, Moves.HIGH_HORSEPOWER ], - [ 34, Moves.HEAVY_SLAM ], - [ 40, Moves.EARTHQUAKE ], - [ 46, Moves.MEGA_KICK ], - [ 52, Moves.SUPERPOWER ], - ], - [Species.DEWPIDER]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.INFESTATION ], - [ 1, Moves.WATER_SPORT ], - [ 4, Moves.BUG_BITE ], - [ 8, Moves.BITE ], - [ 12, Moves.BUBBLE_BEAM ], - [ 16, Moves.AQUA_RING ], - [ 20, Moves.HEADBUTT ], - [ 24, Moves.CRUNCH ], - [ 28, Moves.SOAK ], - [ 32, Moves.ENTRAINMENT ], - [ 36, Moves.LUNGE ], - [ 40, Moves.LIQUIDATION ], - [ 44, Moves.LEECH_LIFE ], - [ 48, Moves.MIRROR_COAT ], - ], - [Species.ARAQUANID]: [ - [ 1, Moves.BITE ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.BUG_BITE ], - [ 1, Moves.WIDE_GUARD ], - [ 1, Moves.INFESTATION ], - [ 1, Moves.WATER_SPORT ], // Previous Stage Move - [ 1, Moves.SPIDER_WEB ], - [ 12, Moves.BUBBLE_BEAM ], - [ 16, Moves.AQUA_RING ], - [ 20, Moves.HEADBUTT ], - [ 26, Moves.CRUNCH ], - [ 32, Moves.SOAK ], - [ 38, Moves.ENTRAINMENT ], - [ 44, Moves.LUNGE ], - [ 50, Moves.LIQUIDATION ], - [ 56, Moves.LEECH_LIFE ], - [ 62, Moves.MIRROR_COAT ], - ], - [Species.FOMANTIS]: [ - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.LEAFAGE ], - [ 5, Moves.GROWTH ], - [ 10, Moves.INGRAIN ], - [ 15, Moves.RAZOR_LEAF ], - [ 20, Moves.SWEET_SCENT ], - [ 25, Moves.SLASH ], - [ 30, Moves.X_SCISSOR ], - [ 35, Moves.SYNTHESIS ], - [ 40, Moves.LEAF_BLADE ], - [ 45, Moves.SUNNY_DAY ], - [ 50, Moves.SOLAR_BEAM ], - ], - [Species.LURANTIS]: [ - [ EVOLVE_MOVE, Moves.PETAL_BLIZZARD ], - [ 1, Moves.GROWTH ], - [ 1, Moves.SOLAR_BEAM ], - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.INGRAIN ], - [ 1, Moves.NIGHT_SLASH ], - [ 1, Moves.LEAFAGE ], - [ 1, Moves.DUAL_CHOP ], - [ 15, Moves.RAZOR_LEAF ], - [ 20, Moves.SWEET_SCENT ], - [ 25, Moves.SLASH ], - [ 30, Moves.X_SCISSOR ], - [ 37, Moves.SYNTHESIS ], - [ 44, Moves.LEAF_BLADE ], - [ 51, Moves.SUNNY_DAY ], - [ 63, Moves.SOLAR_BLADE ], - ], - [Species.MORELULL]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.ASTONISH ], - [ 4, Moves.CONFUSE_RAY ], - [ 8, Moves.INGRAIN ], - [ 12, Moves.MEGA_DRAIN ], - [ 16, Moves.SLEEP_POWDER ], - [ 20, Moves.MOONLIGHT ], - [ 25, Moves.STRENGTH_SAP ], - [ 28, Moves.GIGA_DRAIN ], - [ 32, Moves.DAZZLING_GLEAM ], - [ 36, Moves.SPORE ], - [ 40, Moves.MOONBLAST ], - [ 44, Moves.DREAM_EATER ], - ], - [Species.SHIINOTIC]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.INGRAIN ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.FLASH ], - [ 12, Moves.MEGA_DRAIN ], - [ 16, Moves.SLEEP_POWDER ], - [ 20, Moves.MOONLIGHT ], - [ 27, Moves.STRENGTH_SAP ], - [ 32, Moves.GIGA_DRAIN ], - [ 38, Moves.DAZZLING_GLEAM ], - [ 44, Moves.SPORE ], - [ 50, Moves.MOONBLAST ], - [ 56, Moves.DREAM_EATER ], - ], - [Species.SALANDIT]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.POISON_GAS ], - [ 5, Moves.SMOG ], - [ 10, Moves.EMBER ], - [ 15, Moves.POISON_FANG ], - [ 20, Moves.SWEET_SCENT ], - [ 25, Moves.NASTY_PLOT ], - [ 30, Moves.INCINERATE ], - [ 35, Moves.VENOSHOCK ], - [ 40, Moves.DRAGON_PULSE ], - [ 45, Moves.FLAMETHROWER ], - [ 50, Moves.TOXIC ], - [ 55, Moves.ENDEAVOR ], - ], - [Species.SALAZZLE]: [ - [ EVOLVE_MOVE, Moves.FIRE_LASH ], - [ 1, Moves.POUND ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.DISABLE ], - [ 1, Moves.EMBER ], - [ 1, Moves.SMOG ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.SWAGGER ], - [ 1, Moves.ENCORE ], - [ 1, Moves.TORMENT ], - [ 1, Moves.KNOCK_OFF ], - [ 1, Moves.ENDEAVOR ], - [ 1, Moves.CAPTIVATE ], - [ 15, Moves.POISON_FANG ], - [ 20, Moves.SWEET_SCENT ], - [ 25, Moves.NASTY_PLOT ], - [ 30, Moves.INCINERATE ], - [ 37, Moves.VENOSHOCK ], - [ 44, Moves.DRAGON_PULSE ], - [ 51, Moves.FLAMETHROWER ], - [ 58, Moves.TOXIC ], - ], - [Species.STUFFUL]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 4, Moves.BABY_DOLL_EYES ], - [ 8, Moves.PAYBACK ], - [ 12, Moves.BRUTAL_SWING ], - [ 16, Moves.ENDURE ], - [ 20, Moves.STRENGTH ], - [ 24, Moves.TAKE_DOWN ], - [ 28, Moves.FLAIL ], - [ 32, Moves.HAMMER_ARM ], - [ 36, Moves.THRASH ], - [ 40, Moves.PAIN_SPLIT ], - [ 44, Moves.DOUBLE_EDGE ], - [ 48, Moves.SUPERPOWER ], - ], - [Species.BEWEAR]: [ - [ EVOLVE_MOVE, Moves.BIND ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.PAYBACK ], - [ 1, Moves.BABY_DOLL_EYES ], - [ 12, Moves.BRUTAL_SWING ], - [ 16, Moves.ENDURE ], - [ 20, Moves.STRENGTH ], - [ 24, Moves.TAKE_DOWN ], - [ 30, Moves.FLAIL ], - [ 36, Moves.HAMMER_ARM ], - [ 42, Moves.THRASH ], - [ 48, Moves.PAIN_SPLIT ], - [ 54, Moves.DOUBLE_EDGE ], - [ 60, Moves.SUPERPOWER ], - ], - [Species.BOUNSWEET]: [ - [ 1, Moves.SPLASH ], - [ 1, Moves.LEAFAGE ], // Custom - [ 4, Moves.PLAY_NICE ], - [ 8, Moves.RAPID_SPIN ], - [ 12, Moves.RAZOR_LEAF ], - [ 16, Moves.SWEET_SCENT ], - [ 20, Moves.MAGICAL_LEAF ], - [ 24, Moves.FLAIL ], - [ 28, Moves.TEETER_DANCE ], - [ 32, Moves.AROMATIC_MIST ], - ], - [Species.STEENEE]: [ - [ 1, Moves.LEAFAGE ], // Previous Stage Move, Custom - [ 1, Moves.RAZOR_LEAF ], - [ 1, Moves.SPLASH ], - [ 1, Moves.FLAIL ], - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.PLAY_NICE ], - [ 16, Moves.SWEET_SCENT ], - [ 22, Moves.MAGICAL_LEAF ], - [ 28, Moves.STOMP ], - [ 34, Moves.TEETER_DANCE ], - [ 40, Moves.AROMATIC_MIST ], - [ 46, Moves.LEAF_STORM ], - ], - [Species.TSAREENA]: [ - [ EVOLVE_MOVE, Moves.TROP_KICK ], - [ 1, Moves.LEAFAGE ], // Previous Stage Move, Custom - [ 1, Moves.RAZOR_LEAF ], - [ 1, Moves.SPLASH ], - [ 1, Moves.FLAIL ], - [ 1, Moves.SWAGGER ], - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.POWER_WHIP ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.PUNISHMENT ], - [ 16, Moves.SWEET_SCENT ], - [ 22, Moves.MAGICAL_LEAF ], - [ 28, Moves.STOMP ], - [ 34, Moves.TEETER_DANCE ], - [ 40, Moves.AROMATIC_MIST ], - [ 46, Moves.LEAF_STORM ], - [ 58, Moves.HIGH_JUMP_KICK ], - ], - [Species.COMFEY]: [ - [ 1, Moves.WRAP ], - [ 1, Moves.GROWTH ], - [ 3, Moves.VINE_WHIP ], - [ 6, Moves.HELPING_HAND ], - [ 9, Moves.DRAINING_KISS ], - [ 12, Moves.FLOWER_SHIELD ], - [ 15, Moves.MAGICAL_LEAF ], - [ 18, Moves.SYNTHESIS ], - [ 21, Moves.LEECH_SEED ], - [ 24, Moves.GRASS_KNOT ], - [ 27, Moves.SWEET_KISS ], - [ 30, Moves.FLORAL_HEALING ], - [ 33, Moves.PETAL_BLIZZARD ], - [ 36, Moves.AROMATHERAPY ], - [ 39, Moves.PLAY_ROUGH ], - [ 42, Moves.SWEET_SCENT ], - [ 45, Moves.PETAL_DANCE ], - [ 48, Moves.GRASSY_TERRAIN ], - ], - [Species.ORANGURU]: [ - [ 1, Moves.CONFUSION ], - [ 1, Moves.TAUNT ], - [ 5, Moves.AFTER_YOU ], - [ 10, Moves.CALM_MIND ], - [ 15, Moves.STORED_POWER ], - [ 20, Moves.PSYCH_UP ], - [ 25, Moves.QUASH ], - [ 30, Moves.NASTY_PLOT ], - [ 35, Moves.ZEN_HEADBUTT ], - [ 40, Moves.TRICK_ROOM ], - [ 45, Moves.PSYCHIC ], - [ 50, Moves.INSTRUCT ], - [ 55, Moves.FOUL_PLAY ], - [ 60, Moves.FUTURE_SIGHT ], - ], - [Species.PASSIMIAN]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 5, Moves.ROCK_SMASH ], - [ 10, Moves.FOCUS_ENERGY ], - [ 15, Moves.BEAT_UP ], - [ 20, Moves.SCARY_FACE ], - [ 25, Moves.TAKE_DOWN ], - [ 30, Moves.FLING ], - [ 35, Moves.BULK_UP ], - [ 40, Moves.THRASH ], - [ 45, Moves.DOUBLE_EDGE ], - [ 50, Moves.CLOSE_COMBAT ], - [ 55, Moves.REVERSAL ], - [ 60, Moves.GIGA_IMPACT ], - ], - [Species.WIMPOD]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.STRUGGLE_BUG ], - ], - [Species.GOLISOPOD]: [ - [ EVOLVE_MOVE, Moves.FIRST_IMPRESSION ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.SPITE ], - [ 1, Moves.STRUGGLE_BUG ], - [ 4, Moves.ROCK_SMASH ], - [ 8, Moves.FURY_CUTTER ], - [ 12, Moves.MUD_SHOT ], - [ 16, Moves.BUG_BITE ], - [ 20, Moves.IRON_DEFENSE ], - [ 24, Moves.SUCKER_PUNCH ], - [ 28, Moves.SLASH ], - [ 32, Moves.RAZOR_SHELL ], - [ 36, Moves.PIN_MISSILE ], - [ 40, Moves.SWORDS_DANCE ], - [ 44, Moves.LIQUIDATION ], - ], - [Species.SANDYGAST]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.HARDEN ], - [ 5, Moves.ASTONISH ], - [ 10, Moves.SAND_TOMB ], - [ 15, Moves.MEGA_DRAIN ], - [ 20, Moves.SAND_ATTACK ], - [ 25, Moves.BULLDOZE ], - [ 30, Moves.HYPNOSIS ], - [ 35, Moves.GIGA_DRAIN ], - [ 40, Moves.IRON_DEFENSE ], - [ 45, Moves.SHADOW_BALL ], - [ 50, Moves.EARTH_POWER ], - [ 55, Moves.SHORE_UP ], - [ 60, Moves.SANDSTORM ], - ], - [Species.PALOSSAND]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.HARDEN ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.SAND_TOMB ], - [ 15, Moves.MEGA_DRAIN ], - [ 20, Moves.SAND_ATTACK ], - [ 25, Moves.BULLDOZE ], - [ 30, Moves.HYPNOSIS ], - [ 35, Moves.GIGA_DRAIN ], - [ 40, Moves.IRON_DEFENSE ], - [ 47, Moves.SHADOW_BALL ], - [ 54, Moves.EARTH_POWER ], - [ 61, Moves.SHORE_UP ], - [ 68, Moves.SANDSTORM ], - ], - [Species.PYUKUMUKU]: [ - [ 1, Moves.COUNTER ], // Custom, Moved from Level 20 to 1 - [ 1, Moves.HARDEN ], - [ 1, Moves.BATON_PASS ], - [ 1, Moves.BIDE ], - [ 1, Moves.MUD_SPORT ], - [ 1, Moves.WATER_SPORT ], - [ 5, Moves.HELPING_HAND ], - [ 10, Moves.TAUNT ], - [ 15, Moves.SAFEGUARD ], - [ 20, Moves.MIRROR_COAT ], // Custom - [ 25, Moves.PURIFY ], - [ 30, Moves.CURSE ], - [ 35, Moves.GASTRO_ACID ], - [ 40, Moves.PAIN_SPLIT ], - [ 45, Moves.RECOVER ], - [ 50, Moves.SOAK ], - [ 55, Moves.TOXIC ], - [ 60, Moves.MEMENTO ], - ], - [Species.TYPE_NULL]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.IMPRISON ], - [ 5, Moves.AERIAL_ACE ], - [ 10, Moves.SCARY_FACE ], - [ 15, Moves.DOUBLE_HIT ], - [ 20, Moves.METAL_SOUND ], - [ 25, Moves.CRUSH_CLAW ], - [ 30, Moves.AIR_SLASH ], - [ 35, Moves.TRI_ATTACK ], - [ 40, Moves.X_SCISSOR ], - [ 45, Moves.IRON_HEAD ], - [ 50, Moves.TAKE_DOWN ], - [ 55, Moves.DOUBLE_EDGE ], - [ 60, Moves.HEAL_BLOCK ], - ], - [Species.SILVALLY]: [ - [ EVOLVE_MOVE, Moves.MULTI_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.BITE ], - [ 1, Moves.EXPLOSION ], - [ 1, Moves.SCARY_FACE ], - [ 1, Moves.IMPRISON ], - [ 1, Moves.POISON_FANG ], - [ 1, Moves.AERIAL_ACE ], - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.FIRE_FANG ], - [ 1, Moves.IRON_HEAD ], - [ 1, Moves.HEAL_BLOCK ], - [ 15, Moves.DOUBLE_HIT ], - [ 20, Moves.METAL_SOUND ], - [ 25, Moves.CRUSH_CLAW ], - [ 30, Moves.AIR_SLASH ], - [ 35, Moves.TRI_ATTACK ], - [ 40, Moves.X_SCISSOR ], - [ 45, Moves.CRUNCH ], - [ 50, Moves.TAKE_DOWN ], - [ 55, Moves.DOUBLE_EDGE ], - [ 60, Moves.PARTING_SHOT ], - ], - [Species.MINIOR]: [ - [ 1, Moves.TACKLE ], - [ 3, Moves.DEFENSE_CURL ], - [ 8, Moves.ROLLOUT ], - [ 10, Moves.CONFUSE_RAY ], - [ 15, Moves.SWIFT ], - [ 17, Moves.ANCIENT_POWER ], - [ 22, Moves.SELF_DESTRUCT ], - [ 24, Moves.STEALTH_ROCK ], - [ 29, Moves.TAKE_DOWN ], - [ 31, Moves.AUTOTOMIZE ], - [ 36, Moves.COSMIC_POWER ], - [ 38, Moves.POWER_GEM ], - [ 43, Moves.DOUBLE_EDGE ], - [ 45, Moves.SHELL_SMASH ], - [ 50, Moves.EXPLOSION ], - ], - [Species.KOMALA]: [ - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.ROLLOUT ], - [ 6, Moves.STOCKPILE ], - [ 6, Moves.SPIT_UP ], - [ 6, Moves.SWALLOW ], - [ 11, Moves.RAPID_SPIN ], - [ 16, Moves.YAWN ], - [ 21, Moves.SLAM ], - [ 26, Moves.FLAIL ], - [ 31, Moves.SUCKER_PUNCH ], - [ 36, Moves.PSYCH_UP ], - [ 41, Moves.WOOD_HAMMER ], - [ 46, Moves.THRASH ], - ], - [Species.TURTONATOR]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.SMOG ], - [ 4, Moves.EMBER ], - [ 8, Moves.PROTECT ], - [ 12, Moves.ENDURE ], - [ 16, Moves.FLAIL ], - [ 20, Moves.INCINERATE ], - [ 24, Moves.IRON_DEFENSE ], - [ 28, Moves.DRAGON_PULSE ], - [ 32, Moves.BODY_SLAM ], - [ 36, Moves.FLAMETHROWER ], - [ 40, Moves.SHELL_TRAP ], - [ 44, Moves.SHELL_SMASH ], - [ 48, Moves.OVERHEAT ], - [ 52, Moves.EXPLOSION ], - ], - [Species.TOGEDEMARU]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.NUZZLE ], - [ 5, Moves.DEFENSE_CURL ], - [ 10, Moves.CHARGE ], - [ 15, Moves.THUNDER_SHOCK ], - [ 20, Moves.FELL_STINGER ], - [ 25, Moves.SPARK ], - [ 30, Moves.PIN_MISSILE ], - [ 35, Moves.MAGNET_RISE ], - [ 40, Moves.ZING_ZAP ], - [ 45, Moves.DISCHARGE ], - [ 50, Moves.ELECTRIC_TERRAIN ], - [ 55, Moves.WILD_CHARGE ], - [ 60, Moves.SPIKY_SHIELD ], - ], - [Species.MIMIKYU]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.SPLASH ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.WOOD_HAMMER ], - [ 6, Moves.SHADOW_SNEAK ], - [ 12, Moves.DOUBLE_TEAM ], - [ 18, Moves.BABY_DOLL_EYES ], - [ 24, Moves.MIMIC ], - [ 30, Moves.HONE_CLAWS ], - [ 36, Moves.SLASH ], - [ 42, Moves.SHADOW_CLAW ], - [ 48, Moves.CHARM ], - [ 54, Moves.PLAY_ROUGH ], - [ 60, Moves.PAIN_SPLIT ], - ], - [Species.BRUXISH]: [ - [ 1, Moves.WATER_GUN ], - [ 4, Moves.ASTONISH ], - [ 9, Moves.CONFUSION ], - [ 12, Moves.BITE ], - [ 17, Moves.AQUA_JET ], - [ 20, Moves.DISABLE ], - [ 25, Moves.PSYSHOCK ], - [ 28, Moves.CRUNCH ], - [ 33, Moves.AQUA_TAIL ], - [ 36, Moves.SCREECH ], - [ 41, Moves.PSYCHIC_FANGS ], - [ 44, Moves.WAVE_CRASH ], - ], - [Species.DRAMPA]: [ - [ 1, Moves.ECHOED_VOICE ], - [ 1, Moves.PLAY_NICE ], - [ 5, Moves.TWISTER ], - [ 10, Moves.PROTECT ], - [ 15, Moves.GLARE ], - [ 20, Moves.SAFEGUARD ], - [ 25, Moves.DRAGON_BREATH ], - [ 30, Moves.EXTRASENSORY ], - [ 35, Moves.DRAGON_PULSE ], - [ 40, Moves.LIGHT_SCREEN ], - [ 45, Moves.FLY ], - [ 50, Moves.HYPER_VOICE ], - [ 55, Moves.OUTRAGE ], - ], - [Species.DHELMISE]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.RAPID_SPIN ], - [ 4, Moves.ASTONISH ], - [ 8, Moves.WRAP ], - [ 12, Moves.MEGA_DRAIN ], - [ 16, Moves.GROWTH ], - [ 20, Moves.GYRO_BALL ], - [ 24, Moves.SWITCHEROO ], - [ 28, Moves.GIGA_DRAIN ], - [ 32, Moves.WHIRLPOOL ], - [ 36, Moves.HEAVY_SLAM ], - [ 40, Moves.SLAM ], - [ 44, Moves.SHADOW_BALL ], - [ 48, Moves.METAL_SOUND ], - [ 52, Moves.ANCHOR_SHOT ], - [ 56, Moves.ENERGY_BALL ], - [ 60, Moves.PHANTOM_FORCE ], - [ 64, Moves.POWER_WHIP ], - ], - [Species.JANGMO_O]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 4, Moves.PROTECT ], - [ 8, Moves.DRAGON_TAIL ], - [ 12, Moves.SCARY_FACE ], - [ 16, Moves.HEADBUTT ], - [ 20, Moves.WORK_UP ], - [ 24, Moves.SCREECH ], - [ 28, Moves.IRON_DEFENSE ], - [ 32, Moves.DRAGON_CLAW ], - [ 36, Moves.NOBLE_ROAR ], - [ 40, Moves.DRAGON_DANCE ], - [ 44, Moves.OUTRAGE ], - ], - [Species.HAKAMO_O]: [ - [ EVOLVE_MOVE, Moves.SKY_UPPERCUT ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.PROTECT ], - [ 1, Moves.DRAGON_TAIL ], - [ 1, Moves.BIDE ], - [ 12, Moves.SCARY_FACE ], - [ 16, Moves.HEADBUTT ], - [ 20, Moves.WORK_UP ], - [ 24, Moves.SCREECH ], - [ 28, Moves.IRON_DEFENSE ], - [ 32, Moves.DRAGON_CLAW ], - [ 38, Moves.NOBLE_ROAR ], - [ 44, Moves.DRAGON_DANCE ], - [ 50, Moves.OUTRAGE ], - [ 56, Moves.CLOSE_COMBAT ], - ], - [Species.KOMMO_O]: [ - [ EVOLVE_MOVE, Moves.CLANGING_SCALES ], - [ RELEARN_MOVE, Moves.BELLY_DRUM ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.PROTECT ], - [ 1, Moves.DRAGON_TAIL ], - [ 1, Moves.BIDE ], - [ 1, Moves.SKY_UPPERCUT ], - [ 12, Moves.SCARY_FACE ], - [ 16, Moves.HEADBUTT ], - [ 20, Moves.WORK_UP ], - [ 24, Moves.SCREECH ], - [ 28, Moves.IRON_DEFENSE ], - [ 32, Moves.DRAGON_CLAW ], - [ 38, Moves.NOBLE_ROAR ], - [ 44, Moves.DRAGON_DANCE ], - [ 52, Moves.OUTRAGE ], - [ 60, Moves.CLOSE_COMBAT ], - [ 68, Moves.CLANGOROUS_SOUL ], - [ 76, Moves.BOOMBURST ], - ], - [Species.TAPU_KOKO]: [ - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.QUICK_ATTACK ], - [ 5, Moves.WITHDRAW ], - [ 10, Moves.FAIRY_WIND ], - [ 15, Moves.FALSE_SWIPE ], - [ 20, Moves.SPARK ], - [ 25, Moves.SHOCK_WAVE ], - [ 30, Moves.CHARGE ], - [ 35, Moves.AGILITY ], - [ 40, Moves.SCREECH ], - [ 45, Moves.DISCHARGE ], - [ 50, Moves.MEAN_LOOK ], - [ 55, Moves.NATURES_MADNESS ], - [ 60, Moves.WILD_CHARGE ], - [ 65, Moves.BRAVE_BIRD ], - [ 70, Moves.POWER_SWAP ], - [ 75, Moves.ELECTRIC_TERRAIN ], - ], - [Species.TAPU_LELE]: [ - [ 1, Moves.CONFUSION ], - [ 1, Moves.ASTONISH ], - [ 5, Moves.WITHDRAW ], - [ 10, Moves.AROMATHERAPY ], - [ 15, Moves.DRAINING_KISS ], - [ 20, Moves.PSYBEAM ], - [ 25, Moves.FLATTER ], - [ 30, Moves.AROMATIC_MIST ], - [ 35, Moves.SWEET_SCENT ], - [ 40, Moves.EXTRASENSORY ], - [ 45, Moves.PSYSHOCK ], - [ 50, Moves.MEAN_LOOK ], - [ 55, Moves.NATURES_MADNESS ], - [ 60, Moves.MOONBLAST ], - [ 65, Moves.TICKLE ], - [ 70, Moves.SKILL_SWAP ], - [ 75, Moves.PSYCHIC_TERRAIN ], - ], - [Species.TAPU_BULU]: [ - [ 1, Moves.ROCK_SMASH ], - [ 1, Moves.LEAFAGE ], - [ 5, Moves.WITHDRAW ], - [ 10, Moves.DISABLE ], - [ 15, Moves.LEECH_SEED ], - [ 20, Moves.MEGA_DRAIN ], - [ 25, Moves.WHIRLWIND ], - [ 30, Moves.HORN_ATTACK ], - [ 35, Moves.SCARY_FACE ], - [ 40, Moves.HORN_LEECH ], - [ 45, Moves.ZEN_HEADBUTT ], - [ 50, Moves.MEAN_LOOK ], - [ 55, Moves.NATURES_MADNESS ], - [ 60, Moves.WOOD_HAMMER ], - [ 65, Moves.MEGAHORN ], - [ 70, Moves.SKULL_BASH ], - [ 75, Moves.GRASSY_TERRAIN ], - ], - [Species.TAPU_FINI]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.DISARMING_VOICE ], - [ 5, Moves.WITHDRAW ], - [ 10, Moves.MIST ], - [ 10, Moves.HAZE ], - [ 15, Moves.AQUA_RING ], - [ 20, Moves.WATER_PULSE ], - [ 25, Moves.BRINE ], - [ 30, Moves.DEFOG ], - [ 35, Moves.HEAL_PULSE ], - [ 40, Moves.SURF ], - [ 45, Moves.MUDDY_WATER ], - [ 50, Moves.MEAN_LOOK ], - [ 55, Moves.NATURES_MADNESS ], - [ 60, Moves.MOONBLAST ], - [ 65, Moves.HYDRO_PUMP ], - [ 70, Moves.SOAK ], - [ 75, Moves.MISTY_TERRAIN ], - ], - [Species.COSMOG]: [ - [ 1, Moves.TELEPORT ], - [ 1, Moves.SPLASH ], - [ 1, Moves.STORED_POWER ], // Custom - ], - [Species.COSMOEM]: [ - [ EVOLVE_MOVE, Moves.COSMIC_POWER ], - [ 1, Moves.TELEPORT ], - [ 1, Moves.SPLASH ], // Previous Stage Move - [ 1, Moves.STORED_POWER ], // Previous Stage Move, Custom - ], - [Species.SOLGALEO]: [ - [ EVOLVE_MOVE, Moves.SUNSTEEL_STRIKE ], - [ 1, Moves.TELEPORT ], - [ 1, Moves.SPLASH ], // Previous Stage Move - [ 1, Moves.STORED_POWER ], // Previous Stage Move, Custom - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.COSMIC_POWER ], - [ 1, Moves.NOBLE_ROAR ], - [ 1, Moves.WAKE_UP_SLAP ], - [ 7, Moves.IRON_HEAD ], - [ 14, Moves.METAL_SOUND ], - [ 21, Moves.ZEN_HEADBUTT ], - [ 28, Moves.FLASH_CANNON ], - [ 35, Moves.MORNING_SUN ], - [ 42, Moves.CRUNCH ], - [ 49, Moves.METAL_BURST ], - [ 56, Moves.WILD_CHARGE ], - [ 63, Moves.SOLAR_BEAM ], - [ 70, Moves.FLARE_BLITZ ], - [ 77, Moves.WIDE_GUARD ], - [ 84, Moves.GIGA_IMPACT ], - ], - [Species.LUNALA]: [ - [ EVOLVE_MOVE, Moves.MOONGEIST_BEAM ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.HYPNOSIS ], - [ 1, Moves.TELEPORT ], - [ 1, Moves.SPLASH ], // Previous Stage Move - [ 1, Moves.STORED_POWER ], // Previous Stage Move, Custom - [ 1, Moves.COSMIC_POWER ], - [ 7, Moves.NIGHT_SHADE ], - [ 14, Moves.CONFUSE_RAY ], - [ 21, Moves.AIR_SLASH ], - [ 28, Moves.SHADOW_BALL ], - [ 35, Moves.MOONLIGHT ], - [ 42, Moves.NIGHT_DAZE ], - [ 49, Moves.MAGIC_COAT ], - [ 56, Moves.MOONBLAST ], - [ 63, Moves.PHANTOM_FORCE ], - [ 70, Moves.DREAM_EATER ], - [ 77, Moves.WIDE_GUARD ], - [ 84, Moves.HYPER_BEAM ], - ], - [Species.NIHILEGO]: [ - [ 1, Moves.POUND ], - [ 1, Moves.WRAP ], - [ 1, Moves.CONSTRICT ], - [ 5, Moves.ACID ], - [ 10, Moves.TICKLE ], - [ 15, Moves.ACID_SPRAY ], - [ 20, Moves.CLEAR_SMOG ], - [ 25, Moves.GUARD_SPLIT ], - [ 25, Moves.POWER_SPLIT ], - [ 30, Moves.VENOSHOCK ], - [ 35, Moves.HEADBUTT ], - [ 40, Moves.TOXIC_SPIKES ], - [ 45, Moves.VENOM_DRENCH ], - [ 50, Moves.POWER_GEM ], - [ 55, Moves.STEALTH_ROCK ], - [ 60, Moves.MIRROR_COAT ], - [ 65, Moves.WONDER_ROOM ], - [ 70, Moves.HEAD_SMASH ], - ], - [Species.BUZZWOLE]: [ - [ 1, Moves.HARDEN ], - [ 1, Moves.POWER_UP_PUNCH ], - [ 5, Moves.TAUNT ], - [ 10, Moves.FELL_STINGER ], - [ 15, Moves.VITAL_THROW ], - [ 20, Moves.BULK_UP ], - [ 25, Moves.ENDURE ], - [ 30, Moves.REVERSAL ], - [ 35, Moves.MEGA_PUNCH ], - [ 40, Moves.LUNGE ], - [ 45, Moves.FOCUS_ENERGY ], - [ 50, Moves.DYNAMIC_PUNCH ], - [ 55, Moves.COUNTER ], - [ 60, Moves.HAMMER_ARM ], - [ 65, Moves.SUPERPOWER ], - [ 70, Moves.FOCUS_PUNCH ], - ], - [Species.PHEROMOSA]: [ - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.FEINT ], - [ 5, Moves.LEER ], - [ 10, Moves.QUICK_GUARD ], - [ 15, Moves.BUG_BITE ], - [ 20, Moves.LOW_KICK ], - [ 25, Moves.DOUBLE_KICK ], - [ 30, Moves.TRIPLE_KICK ], - [ 35, Moves.STOMP ], - [ 40, Moves.AGILITY ], - [ 45, Moves.LUNGE ], - [ 50, Moves.BOUNCE ], - [ 55, Moves.SPEED_SWAP ], - [ 60, Moves.BUG_BUZZ ], - [ 65, Moves.QUIVER_DANCE ], - [ 70, Moves.HIGH_JUMP_KICK ], - ], - [Species.XURKITREE]: [ - [ 1, Moves.WRAP ], - [ 1, Moves.THUNDER_SHOCK ], - [ 5, Moves.CHARGE ], - [ 10, Moves.THUNDER_WAVE ], - [ 15, Moves.INGRAIN ], - [ 20, Moves.SPARK ], - [ 25, Moves.SHOCK_WAVE ], - [ 30, Moves.HYPNOSIS ], - [ 35, Moves.EERIE_IMPULSE ], - [ 40, Moves.THUNDER_PUNCH ], - [ 45, Moves.DISCHARGE ], - [ 50, Moves.MAGNET_RISE ], - [ 55, Moves.THUNDERBOLT ], - [ 60, Moves.ELECTRIC_TERRAIN ], - [ 65, Moves.POWER_WHIP ], - [ 70, Moves.ZAP_CANNON ], - ], - [Species.CELESTEELA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.ABSORB ], - [ 5, Moves.HARDEN ], - [ 10, Moves.WIDE_GUARD ], - [ 15, Moves.MEGA_DRAIN ], - [ 20, Moves.SMACK_DOWN ], - [ 25, Moves.INGRAIN ], - [ 30, Moves.AUTOTOMIZE ], - [ 35, Moves.GIGA_DRAIN ], - [ 40, Moves.FLASH_CANNON ], - [ 45, Moves.METAL_SOUND ], - [ 50, Moves.IRON_DEFENSE ], - [ 55, Moves.LEECH_SEED ], - [ 60, Moves.HEAVY_SLAM ], - [ 65, Moves.DOUBLE_EDGE ], - [ 70, Moves.SKULL_BASH ], - ], - [Species.KARTANA]: [ - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.VACUUM_WAVE ], - [ 5, Moves.RAZOR_LEAF ], - [ 10, Moves.FALSE_SWIPE ], - [ 15, Moves.CUT ], - [ 20, Moves.AIR_CUTTER ], - [ 25, Moves.AERIAL_ACE ], - [ 30, Moves.DETECT ], - [ 35, Moves.NIGHT_SLASH ], - [ 40, Moves.SYNTHESIS ], - [ 45, Moves.LASER_FOCUS ], - [ 50, Moves.DEFOG ], - [ 55, Moves.LEAF_BLADE ], - [ 60, Moves.SACRED_SWORD ], - [ 65, Moves.SWORDS_DANCE ], - [ 70, Moves.GUILLOTINE ], - ], - [Species.GUZZLORD]: [ - [ 1, Moves.BITE ], - [ 1, Moves.DRAGON_TAIL ], - [ 5, Moves.STOCKPILE ], - [ 5, Moves.SWALLOW ], - [ 10, Moves.KNOCK_OFF ], - [ 15, Moves.STOMP ], - [ 20, Moves.STOMPING_TANTRUM ], - [ 25, Moves.WIDE_GUARD ], - [ 30, Moves.CRUNCH ], - [ 35, Moves.BODY_SLAM ], - [ 40, Moves.GASTRO_ACID ], - [ 45, Moves.HAMMER_ARM ], - [ 50, Moves.HEAVY_SLAM ], - [ 55, Moves.DRAGON_RUSH ], - [ 60, Moves.BELCH ], - [ 65, Moves.THRASH ], - [ 70, Moves.GIGA_IMPACT ], - ], - [Species.NECROZMA]: [ - [ 1, Moves.CONFUSION ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.MORNING_SUN ], - [ 1, Moves.MOONLIGHT ], - [ 1, Moves.GRAVITY ], - [ 1, Moves.CHARGE_BEAM ], - [ 1, Moves.MIRROR_SHOT ], - [ 8, Moves.STEALTH_ROCK ], - [ 16, Moves.SLASH ], - [ 24, Moves.NIGHT_SLASH ], - [ 32, Moves.PSYCHO_CUT ], - [ 40, Moves.STORED_POWER ], - [ 48, Moves.ROCK_BLAST ], - [ 56, Moves.IRON_DEFENSE ], - [ 64, Moves.POWER_GEM ], - [ 72, Moves.PHOTON_GEYSER ], - [ 80, Moves.AUTOTOMIZE ], - [ 88, Moves.PRISMATIC_LASER ], - ], - [Species.MAGEARNA]: [ - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.GYRO_BALL ], - [ 1, Moves.DISARMING_VOICE ], // Custom - [ 1, Moves.CRAFTY_SHIELD ], - [ 1, Moves.GEAR_UP ], - [ 6, Moves.DEFENSE_CURL ], - [ 12, Moves.ROLLOUT ], - [ 18, Moves.IRON_DEFENSE ], - [ 24, Moves.MAGNETIC_FLUX ], - [ 30, Moves.PSYBEAM ], - [ 36, Moves.AURORA_BEAM ], - [ 42, Moves.LOCK_ON ], - [ 48, Moves.SHIFT_GEAR ], - [ 54, Moves.TRICK ], - [ 60, Moves.IRON_HEAD ], - [ 66, Moves.AURA_SPHERE ], - [ 72, Moves.FLASH_CANNON ], - [ 78, Moves.PAIN_SPLIT ], - [ 84, Moves.ZAP_CANNON ], - [ 90, Moves.FLEUR_CANNON ], - ], - [Species.MARSHADOW]: [ - [ 1, Moves.FIRE_PUNCH ], - [ 1, Moves.ICE_PUNCH ], - [ 1, Moves.THUNDER_PUNCH ], - [ 1, Moves.COUNTER ], - [ 1, Moves.FEINT ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.SHADOW_SNEAK ], - [ 1, Moves.PURSUIT ], - [ 9, Moves.ROLE_PLAY ], - [ 18, Moves.SHADOW_PUNCH ], - [ 27, Moves.FORCE_PALM ], - [ 36, Moves.ASSURANCE ], - [ 45, Moves.SUCKER_PUNCH ], - [ 54, Moves.DRAIN_PUNCH ], - [ 63, Moves.PSYCH_UP ], - [ 72, Moves.SPECTRAL_THIEF ], - [ 81, Moves.LASER_FOCUS ], - [ 90, Moves.ENDEAVOR ], - [ 99, Moves.CLOSE_COMBAT ], - ], - [Species.POIPOLE]: [ - [ RELEARN_MOVE, Moves.DRAGON_PULSE ], // Custom, made relearn - [ 1, Moves.GROWL ], - [ 1, Moves.ACID ], - [ 1, Moves.PECK ], - [ 1, Moves.HELPING_HAND ], - [ 7, Moves.FURY_ATTACK ], - [ 14, Moves.FELL_STINGER ], - [ 21, Moves.CHARM ], - [ 28, Moves.VENOSHOCK ], - [ 35, Moves.VENOM_DRENCH ], - [ 42, Moves.NASTY_PLOT ], - [ 49, Moves.POISON_JAB ], - [ 56, Moves.GASTRO_ACID ], - [ 63, Moves.TOXIC ], - ], - [Species.NAGANADEL]: [ - [ EVOLVE_MOVE, Moves.AIR_CUTTER ], - [ 1, Moves.GROWL ], - [ 1, Moves.ACID ], - [ 1, Moves.PECK ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.AIR_SLASH ], - [ 1, Moves.DRAGON_PULSE ], - [ 7, Moves.FURY_ATTACK ], - [ 14, Moves.FELL_STINGER ], - [ 21, Moves.CHARM ], - [ 28, Moves.VENOSHOCK ], - [ 35, Moves.VENOM_DRENCH ], - [ 42, Moves.NASTY_PLOT ], - [ 49, Moves.POISON_JAB ], - [ 56, Moves.GASTRO_ACID ], - [ 63, Moves.TOXIC ], - [ 70, Moves.DRAGON_RUSH ], - ], - [Species.STAKATAKA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 5, Moves.ROCK_THROW ], - [ 10, Moves.PROTECT ], - [ 15, Moves.STOMP ], - [ 20, Moves.BLOCK ], - [ 25, Moves.ROCK_SLIDE ], - [ 30, Moves.WIDE_GUARD ], - [ 35, Moves.AUTOTOMIZE ], - [ 40, Moves.ROCK_BLAST ], - [ 45, Moves.MAGNET_RISE ], - [ 50, Moves.IRON_DEFENSE ], - [ 55, Moves.IRON_HEAD ], - [ 60, Moves.TAKE_DOWN ], - [ 65, Moves.STEALTH_ROCK ], - [ 70, Moves.DOUBLE_EDGE ], - ], - [Species.BLACEPHALON]: [ - [ 1, Moves.FIRE_SPIN ], - [ 1, Moves.ASTONISH ], - [ 5, Moves.LIGHT_SCREEN ], - [ 10, Moves.EMBER ], - [ 15, Moves.NIGHT_SHADE ], - [ 20, Moves.CONFUSE_RAY ], - [ 25, Moves.MAGIC_COAT ], - [ 30, Moves.INCINERATE ], - [ 35, Moves.HYPNOSIS ], - [ 40, Moves.MYSTICAL_FIRE ], - [ 45, Moves.SHADOW_BALL ], - [ 50, Moves.CALM_MIND ], - [ 55, Moves.WILL_O_WISP ], - [ 60, Moves.TRICK ], - [ 65, Moves.FIRE_BLAST ], - [ 70, Moves.MIND_BLOWN ], - ], - [Species.ZERAORA]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.SPARK ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.SNARL ], - [ 1, Moves.POWER_UP_PUNCH ], - [ 8, Moves.FURY_SWIPES ], - [ 16, Moves.QUICK_GUARD ], - [ 24, Moves.SLASH ], - [ 32, Moves.VOLT_SWITCH ], - [ 40, Moves.CHARGE ], - [ 48, Moves.THUNDER_PUNCH ], - [ 56, Moves.HONE_CLAWS ], - [ 64, Moves.DISCHARGE ], - [ 72, Moves.WILD_CHARGE ], - [ 80, Moves.AGILITY ], - [ 88, Moves.PLASMA_FISTS ], - [ 96, Moves.CLOSE_COMBAT ], - ], - [Species.MELTAN]: [ - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.HARDEN ], - [ 8, Moves.TAIL_WHIP ], - [ 16, Moves.HEADBUTT ], - [ 24, Moves.THUNDER_WAVE ], - [ 32, Moves.ACID_ARMOR ], - [ 40, Moves.FLASH_CANNON ], - ], - [Species.MELMETAL]: [ - [ EVOLVE_MOVE, Moves.THUNDER_PUNCH ], - [ 1, Moves.HEADBUTT ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.HARDEN ], - [ 24, Moves.THUNDER_WAVE ], - [ 32, Moves.ACID_ARMOR ], - [ 40, Moves.FLASH_CANNON ], - [ 48, Moves.MEGA_PUNCH ], - [ 56, Moves.PROTECT ], - [ 64, Moves.DISCHARGE ], - [ 72, Moves.DYNAMIC_PUNCH ], - [ 80, Moves.SUPERPOWER ], - [ 88, Moves.DOUBLE_IRON_BASH ], - [ 96, Moves.HYPER_BEAM ], - ], - [Species.GROOKEY]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 5, Moves.BRANCH_POKE ], // Custom, moved from 6 to 5 - [ 8, Moves.TAUNT ], - [ 12, Moves.RAZOR_LEAF ], - [ 17, Moves.SCREECH ], - [ 20, Moves.KNOCK_OFF ], - [ 24, Moves.SLAM ], - [ 28, Moves.UPROAR ], - [ 32, Moves.WOOD_HAMMER ], - [ 36, Moves.ENDEAVOR ], - ], - [Species.THWACKEY]: [ - [ EVOLVE_MOVE, Moves.DOUBLE_HIT ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 1, Moves.TAUNT ], - [ 1, Moves.BRANCH_POKE ], - [ 12, Moves.RAZOR_LEAF ], - [ 19, Moves.SCREECH ], - [ 24, Moves.KNOCK_OFF ], - [ 30, Moves.SLAM ], - [ 36, Moves.UPROAR ], - [ 42, Moves.WOOD_HAMMER ], - [ 48, Moves.ENDEAVOR ], - ], - [Species.RILLABOOM]: [ - [ EVOLVE_MOVE, Moves.DRUM_BEATING ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 1, Moves.TAUNT ], - [ 1, Moves.DOUBLE_HIT ], - [ 1, Moves.NOBLE_ROAR ], - [ 1, Moves.GRASSY_TERRAIN ], - [ 1, Moves.BRANCH_POKE ], - [ 12, Moves.RAZOR_LEAF ], - [ 19, Moves.SCREECH ], - [ 24, Moves.KNOCK_OFF ], - [ 30, Moves.SLAM ], - [ 38, Moves.UPROAR ], - [ 46, Moves.WOOD_HAMMER ], - [ 54, Moves.ENDEAVOR ], - [ 62, Moves.BOOMBURST ], - ], - [Species.SCORBUNNY]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 5, Moves.EMBER ], // Custom, moved from 6 to 5 - [ 8, Moves.QUICK_ATTACK ], - [ 12, Moves.DOUBLE_KICK ], - [ 17, Moves.FLAME_CHARGE ], - [ 20, Moves.AGILITY ], - [ 24, Moves.HEADBUTT ], - [ 28, Moves.COUNTER ], - [ 32, Moves.BOUNCE ], - [ 36, Moves.DOUBLE_EDGE ], - ], - [Species.RABOOT]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.EMBER ], - [ 1, Moves.QUICK_ATTACK ], - [ 12, Moves.DOUBLE_KICK ], - [ 19, Moves.FLAME_CHARGE ], - [ 24, Moves.AGILITY ], - [ 30, Moves.HEADBUTT ], - [ 36, Moves.COUNTER ], - [ 42, Moves.BOUNCE ], - [ 48, Moves.DOUBLE_EDGE ], - ], - [Species.CINDERACE]: [ - [ EVOLVE_MOVE, Moves.PYRO_BALL ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.EMBER ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.FEINT ], - [ 12, Moves.DOUBLE_KICK ], - [ 19, Moves.FLAME_CHARGE ], - [ 24, Moves.AGILITY ], - [ 30, Moves.HEADBUTT ], - [ 38, Moves.COUNTER ], - [ 46, Moves.BOUNCE ], - [ 54, Moves.DOUBLE_EDGE ], - [ 62, Moves.COURT_CHANGE ], - ], - [Species.SOBBLE]: [ - [ 1, Moves.POUND ], - [ 1, Moves.GROWL ], - [ 5, Moves.WATER_GUN ], // Custom, moved from 6 to 5 - [ 8, Moves.BIND ], - [ 12, Moves.WATER_PULSE ], - [ 17, Moves.TEARFUL_LOOK ], - [ 20, Moves.SUCKER_PUNCH ], - [ 24, Moves.U_TURN ], - [ 28, Moves.LIQUIDATION ], - [ 32, Moves.SOAK ], - [ 36, Moves.RAIN_DANCE ], - ], - [Species.DRIZZILE]: [ - [ 1, Moves.POUND ], - [ 1, Moves.BIND ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 12, Moves.WATER_PULSE ], - [ 19, Moves.TEARFUL_LOOK ], - [ 24, Moves.SUCKER_PUNCH ], - [ 30, Moves.U_TURN ], - [ 36, Moves.LIQUIDATION ], - [ 42, Moves.SOAK ], - [ 48, Moves.RAIN_DANCE ], - ], - [Species.INTELEON]: [ - [ EVOLVE_MOVE, Moves.SNIPE_SHOT ], - [ 1, Moves.POUND ], - [ 1, Moves.BIND ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.ACROBATICS ], - [ 12, Moves.WATER_PULSE ], - [ 19, Moves.TEARFUL_LOOK ], - [ 24, Moves.SUCKER_PUNCH ], - [ 30, Moves.U_TURN ], - [ 38, Moves.LIQUIDATION ], - [ 46, Moves.SOAK ], - [ 54, Moves.RAIN_DANCE ], - [ 62, Moves.HYDRO_PUMP ], - ], - [Species.SKWOVET]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 5, Moves.BITE ], - [ 10, Moves.STUFF_CHEEKS ], - [ 15, Moves.STOCKPILE ], - [ 15, Moves.SPIT_UP ], - [ 15, Moves.SWALLOW ], - [ 20, Moves.BODY_SLAM ], - [ 25, Moves.REST ], - [ 30, Moves.COUNTER ], - [ 35, Moves.BULLET_SEED ], - [ 40, Moves.SUPER_FANG ], - [ 45, Moves.BELCH ], - ], - [Species.GREEDENT]: [ - [ EVOLVE_MOVE, Moves.COVET ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.BITE ], - [ 1, Moves.STUFF_CHEEKS ], - [ 15, Moves.STOCKPILE ], - [ 15, Moves.SPIT_UP ], - [ 15, Moves.SWALLOW ], - [ 20, Moves.BODY_SLAM ], - [ 27, Moves.REST ], - [ 34, Moves.COUNTER ], - [ 41, Moves.BULLET_SEED ], - [ 48, Moves.SUPER_FANG ], - [ 55, Moves.BELCH ], - ], - [Species.ROOKIDEE]: [ - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 4, Moves.POWER_TRIP ], - [ 8, Moves.HONE_CLAWS ], - [ 12, Moves.FURY_ATTACK ], - [ 16, Moves.PLUCK ], - [ 20, Moves.TAUNT ], - [ 24, Moves.SCARY_FACE ], - [ 28, Moves.DRILL_PECK ], - [ 32, Moves.SWAGGER ], - [ 36, Moves.BRAVE_BIRD ], - ], - [Species.CORVISQUIRE]: [ - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 1, Moves.HONE_CLAWS ], - [ 1, Moves.POWER_TRIP ], - [ 12, Moves.FURY_ATTACK ], - [ 16, Moves.PLUCK ], - [ 22, Moves.TAUNT ], - [ 28, Moves.SCARY_FACE ], - [ 34, Moves.DRILL_PECK ], - [ 40, Moves.SWAGGER ], - [ 46, Moves.BRAVE_BIRD ], - ], - [Species.CORVIKNIGHT]: [ - [ EVOLVE_MOVE, Moves.STEEL_WING ], - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 1, Moves.SCREECH ], - [ 1, Moves.METAL_SOUND ], - [ 1, Moves.IRON_DEFENSE ], - [ 1, Moves.HONE_CLAWS ], - [ 1, Moves.POWER_TRIP ], - [ 12, Moves.FURY_ATTACK ], - [ 16, Moves.PLUCK ], - [ 22, Moves.TAUNT ], - [ 28, Moves.SCARY_FACE ], - [ 34, Moves.DRILL_PECK ], - [ 42, Moves.SWAGGER ], - [ 50, Moves.BRAVE_BIRD ], - ], - [Species.BLIPBUG]: [ - [ 1, Moves.STRUGGLE_BUG ], - ], - [Species.DOTTLER]: [ - [ EVOLVE_MOVE, Moves.CONFUSION ], - [ EVOLVE_MOVE, Moves.LIGHT_SCREEN ], - [ EVOLVE_MOVE, Moves.REFLECT ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.LIGHT_SCREEN ], - [ 1, Moves.REFLECT ], - [ 1, Moves.STRUGGLE_BUG ], - ], - [Species.ORBEETLE]: [ - [ 1, Moves.CONFUSION ], - [ 1, Moves.LIGHT_SCREEN ], - [ 1, Moves.REFLECT ], - [ 1, Moves.STRUGGLE_BUG ], - [ 4, Moves.CONFUSE_RAY ], - [ 8, Moves.MAGIC_COAT ], - [ 12, Moves.AGILITY ], - [ 16, Moves.PSYBEAM ], - [ 20, Moves.HYPNOSIS ], - [ 24, Moves.ALLY_SWITCH ], - [ 28, Moves.BUG_BUZZ ], - [ 32, Moves.MIRROR_COAT ], - [ 36, Moves.PSYCHIC ], - [ 40, Moves.AFTER_YOU ], - [ 44, Moves.CALM_MIND ], - [ 48, Moves.PSYCHIC_TERRAIN ], - ], - [Species.NICKIT]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.QUICK_ATTACK ], - [ 4, Moves.BEAT_UP ], - [ 8, Moves.HONE_CLAWS ], - [ 12, Moves.SNARL ], - [ 16, Moves.ASSURANCE ], - [ 20, Moves.NASTY_PLOT ], - [ 24, Moves.SUCKER_PUNCH ], - [ 28, Moves.NIGHT_SLASH ], - [ 32, Moves.TAIL_SLAP ], - [ 36, Moves.FOUL_PLAY ], - ], - [Species.THIEVUL]: [ - [ EVOLVE_MOVE, Moves.THIEF ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.BEAT_UP ], - [ 1, Moves.HONE_CLAWS ], - [ 12, Moves.SNARL ], - [ 16, Moves.ASSURANCE ], - [ 22, Moves.NASTY_PLOT ], - [ 28, Moves.SUCKER_PUNCH ], - [ 34, Moves.NIGHT_SLASH ], - [ 40, Moves.TAIL_SLAP ], - [ 46, Moves.FOUL_PLAY ], - [ 52, Moves.PARTING_SHOT ], - ], - [Species.GOSSIFLEUR]: [ - [ 1, Moves.SING ], - [ 1, Moves.LEAFAGE ], - [ 4, Moves.RAPID_SPIN ], - [ 8, Moves.SWEET_SCENT ], - [ 12, Moves.RAZOR_LEAF ], - [ 16, Moves.ROUND ], - [ 21, Moves.LEAF_TORNADO ], - [ 24, Moves.SYNTHESIS ], - [ 28, Moves.HYPER_VOICE ], - [ 32, Moves.AROMATHERAPY ], - [ 36, Moves.LEAF_STORM ], - ], - [Species.ELDEGOSS]: [ - [ EVOLVE_MOVE, Moves.COTTON_SPORE ], - [ 1, Moves.SING ], - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.LEAFAGE ], - [ 12, Moves.RAZOR_LEAF ], - [ 16, Moves.ROUND ], - [ 23, Moves.LEAF_TORNADO ], - [ 28, Moves.SYNTHESIS ], - [ 34, Moves.HYPER_VOICE ], - [ 40, Moves.AROMATHERAPY ], - [ 46, Moves.LEAF_STORM ], - [ 52, Moves.COTTON_GUARD ], - ], - [Species.WOOLOO]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 4, Moves.DEFENSE_CURL ], - [ 8, Moves.COPYCAT ], - [ 12, Moves.GUARD_SPLIT ], - [ 16, Moves.DOUBLE_KICK ], - [ 21, Moves.HEADBUTT ], - [ 25, Moves.TAKE_DOWN ], - [ 28, Moves.GUARD_SWAP ], - [ 32, Moves.REVERSAL ], - [ 36, Moves.COTTON_GUARD ], - [ 40, Moves.DOUBLE_EDGE ], - ], - [Species.DUBWOOL]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.COPYCAT ], - [ 12, Moves.GUARD_SPLIT ], - [ 16, Moves.DOUBLE_KICK ], - [ 21, Moves.HEADBUTT ], - [ 27, Moves.TAKE_DOWN ], - [ 32, Moves.GUARD_SWAP ], - [ 38, Moves.REVERSAL ], - [ 44, Moves.COTTON_GUARD ], - [ 50, Moves.DOUBLE_EDGE ], - [ 56, Moves.LAST_RESORT ], - ], - [Species.CHEWTLE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.WATER_GUN ], - [ 7, Moves.BITE ], - [ 14, Moves.PROTECT ], - [ 21, Moves.HEADBUTT ], - [ 28, Moves.COUNTER ], - [ 35, Moves.JAW_LOCK ], - [ 42, Moves.LIQUIDATION ], - [ 49, Moves.BODY_SLAM ], - ], - [Species.DREDNAW]: [ - [ EVOLVE_MOVE, Moves.ROCK_TOMB ], - [ 1, Moves.TACKLE ], - [ 1, Moves.BITE ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.PROTECT ], - [ 1, Moves.CRUNCH ], - [ 1, Moves.ROCK_POLISH ], - [ 1, Moves.RAZOR_SHELL ], - [ 21, Moves.HEADBUTT ], - [ 30, Moves.COUNTER ], - [ 39, Moves.JAW_LOCK ], - [ 48, Moves.LIQUIDATION ], - [ 57, Moves.BODY_SLAM ], - [ 66, Moves.HEAD_SMASH ], - ], - [Species.YAMPER]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 5, Moves.NUZZLE ], - [ 10, Moves.BITE ], - [ 15, Moves.ROAR ], - [ 20, Moves.SPARK ], - [ 26, Moves.CHARM ], - [ 30, Moves.CRUNCH ], - [ 35, Moves.CHARGE ], - [ 40, Moves.WILD_CHARGE ], - [ 45, Moves.PLAY_ROUGH ], - ], - [Species.BOLTUND]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.BITE ], - [ 1, Moves.ELECTRIFY ], - [ 1, Moves.NUZZLE ], - [ 15, Moves.ROAR ], - [ 20, Moves.SPARK ], - [ 28, Moves.CHARM ], - [ 34, Moves.CRUNCH ], - [ 41, Moves.CHARGE ], - [ 48, Moves.WILD_CHARGE ], - [ 55, Moves.PLAY_ROUGH ], - [ 62, Moves.ELECTRIC_TERRAIN ], - ], - [Species.ROLYCOLY]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.SMOKESCREEN ], - [ 5, Moves.RAPID_SPIN ], - [ 10, Moves.SMACK_DOWN ], - [ 15, Moves.ROCK_POLISH ], - [ 20, Moves.ANCIENT_POWER ], - [ 25, Moves.INCINERATE ], - [ 30, Moves.STEALTH_ROCK ], - [ 35, Moves.HEAT_CRASH ], - [ 40, Moves.ROCK_BLAST ], - ], - [Species.CARKOL]: [ - [ EVOLVE_MOVE, Moves.FLAME_CHARGE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.SMACK_DOWN ], - [ 15, Moves.ROCK_POLISH ], - [ 20, Moves.ANCIENT_POWER ], - [ 27, Moves.INCINERATE ], - [ 35, Moves.STEALTH_ROCK ], - [ 41, Moves.HEAT_CRASH ], - [ 48, Moves.ROCK_BLAST ], - [ 55, Moves.STONE_EDGE ], - ], - [Species.COALOSSAL]: [ - [ EVOLVE_MOVE, Moves.TAR_SHOT ], - [ 1, Moves.TACKLE ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.SMACK_DOWN ], - [ 1, Moves.FLAME_CHARGE ], - [ 15, Moves.ROCK_POLISH ], - [ 20, Moves.ANCIENT_POWER ], - [ 27, Moves.INCINERATE ], - [ 37, Moves.STEALTH_ROCK ], - [ 45, Moves.HEAT_CRASH ], - [ 54, Moves.ROCK_BLAST ], - [ 63, Moves.STONE_EDGE ], - ], - [Species.APPLIN]: [ - [ 1, Moves.WITHDRAW ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.LEAFAGE ], // Custom - ], - [Species.FLAPPLE]: [ - [ EVOLVE_MOVE, Moves.WING_ATTACK ], - [ 1, Moves.LEAFAGE ], // Previous Stage Move, Custom - [ 1, Moves.GROWTH ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.TWISTER ], - [ 1, Moves.RECYCLE ], - [ 1, Moves.ASTONISH ], - [ 4, Moves.ACID_SPRAY ], - [ 8, Moves.ACROBATICS ], - [ 12, Moves.LEECH_SEED ], - [ 16, Moves.PROTECT ], - [ 20, Moves.DRAGON_BREATH ], - [ 24, Moves.DRAGON_DANCE ], - [ 28, Moves.DRAGON_PULSE ], - [ 32, Moves.GRAV_APPLE ], - [ 36, Moves.IRON_DEFENSE ], - [ 40, Moves.FLY ], - [ 44, Moves.DRAGON_RUSH ], - ], - [Species.APPLETUN]: [ - [ EVOLVE_MOVE, Moves.HEADBUTT ], - [ 1, Moves.LEAFAGE ], // Previous Stage Move, Custom - [ 1, Moves.GROWTH ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.RECYCLE ], - [ 1, Moves.ASTONISH ], - [ 4, Moves.CURSE ], - [ 8, Moves.STOMP ], - [ 12, Moves.LEECH_SEED ], - [ 16, Moves.PROTECT ], - [ 20, Moves.BULLET_SEED ], - [ 24, Moves.RECOVER ], - [ 28, Moves.APPLE_ACID ], - [ 32, Moves.BODY_SLAM ], - [ 36, Moves.IRON_DEFENSE ], - [ 40, Moves.DRAGON_PULSE ], - [ 44, Moves.ENERGY_BALL ], - ], - [Species.SILICOBRA]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.WRAP ], - [ 1, Moves.MUD_SLAP ], // Custom - [ 5, Moves.MINIMIZE ], - [ 10, Moves.BRUTAL_SWING ], - [ 15, Moves.BULLDOZE ], - [ 20, Moves.HEADBUTT ], - [ 25, Moves.GLARE ], - [ 30, Moves.DIG ], - [ 35, Moves.SANDSTORM ], - [ 40, Moves.SLAM ], - [ 45, Moves.COIL ], - [ 50, Moves.SAND_TOMB ], - ], - [Species.SANDACONDA]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.WRAP ], - [ 1, Moves.MUD_SLAP ], // Previous Stage Move, Custom - [ 1, Moves.MINIMIZE ], - [ 1, Moves.BRUTAL_SWING ], - [ 15, Moves.BULLDOZE ], - [ 20, Moves.HEADBUTT ], - [ 25, Moves.GLARE ], - [ 30, Moves.DIG ], - [ 35, Moves.SANDSTORM ], - [ 42, Moves.SLAM ], - [ 49, Moves.COIL ], - [ 51, Moves.SAND_TOMB ], - ], - [Species.CRAMORANT]: [ - [ RELEARN_MOVE, Moves.BELCH ], - [ 1, Moves.PECK ], - [ 1, Moves.STOCKPILE ], - [ 1, Moves.SPIT_UP ], - [ 1, Moves.SWALLOW ], - [ 7, Moves.WATER_GUN ], - [ 14, Moves.FURY_ATTACK ], - [ 21, Moves.PLUCK ], - [ 28, Moves.DIVE ], - [ 35, Moves.DRILL_PECK ], - [ 42, Moves.AMNESIA ], - [ 49, Moves.THRASH ], - [ 56, Moves.HYDRO_PUMP ], - ], - [Species.ARROKUDA]: [ - [ 1, Moves.PECK ], - [ 1, Moves.AQUA_JET ], - [ 6, Moves.FURY_ATTACK ], - [ 12, Moves.BITE ], - [ 18, Moves.AGILITY ], - [ 24, Moves.DIVE ], - [ 30, Moves.FOCUS_ENERGY ], - [ 36, Moves.CRUNCH ], - [ 42, Moves.LIQUIDATION ], - [ 48, Moves.DOUBLE_EDGE ], - ], - [Species.BARRASKEWDA]: [ - [ 1, Moves.FURY_ATTACK ], - [ 1, Moves.BITE ], - [ 1, Moves.PECK ], - [ 1, Moves.AQUA_JET ], - [ 1, Moves.THROAT_CHOP ], - [ 18, Moves.AGILITY ], - [ 24, Moves.DIVE ], - [ 32, Moves.FOCUS_ENERGY ], - [ 40, Moves.CRUNCH ], - [ 48, Moves.LIQUIDATION ], - [ 56, Moves.DOUBLE_EDGE ], - ], - [Species.TOXEL]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.ACID ], - [ 1, Moves.FLAIL ], - [ 1, Moves.BELCH ], - [ 1, Moves.NUZZLE ], - [ 1, Moves.TEARFUL_LOOK ], - ], - [Species.TOXTRICITY]: [ - [ EVOLVE_MOVE, Moves.SPARK ], - [ 1, Moves.LEER ], - [ 1, Moves.GROWL ], - [ 1, Moves.ACID ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.FLAIL ], - [ 1, Moves.ACID_SPRAY ], - [ 1, Moves.BELCH ], - [ 1, Moves.NOBLE_ROAR ], - [ 1, Moves.NUZZLE ], - [ 1, Moves.TEARFUL_LOOK ], - [ 4, Moves.CHARGE ], - [ 8, Moves.SHOCK_WAVE ], - [ 12, Moves.SCARY_FACE ], - [ 16, Moves.TAUNT ], - [ 24, Moves.SCREECH ], - [ 28, Moves.SWAGGER ], - [ 32, Moves.TOXIC ], - [ 36, Moves.DISCHARGE ], - [ 40, Moves.POISON_JAB ], - [ 44, Moves.OVERDRIVE ], - [ 48, Moves.BOOMBURST ], - [ 52, Moves.SHIFT_GEAR ], - ], - [Species.SIZZLIPEDE]: [ - [ 1, Moves.EMBER ], - [ 1, Moves.SMOKESCREEN ], - [ 5, Moves.WRAP ], - [ 10, Moves.BITE ], - [ 15, Moves.FLAME_WHEEL ], - [ 20, Moves.BUG_BITE ], - [ 25, Moves.COIL ], - [ 30, Moves.SLAM ], - [ 35, Moves.FIRE_SPIN ], - [ 40, Moves.CRUNCH ], - [ 45, Moves.FIRE_LASH ], - [ 50, Moves.LUNGE ], - [ 55, Moves.BURN_UP ], - ], - [Species.CENTISKORCH]: [ - [ 1, Moves.WRAP ], - [ 1, Moves.BITE ], - [ 1, Moves.EMBER ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.INFERNO ], - [ 15, Moves.FLAME_WHEEL ], - [ 20, Moves.BUG_BITE ], - [ 25, Moves.COIL ], - [ 32, Moves.SLAM ], - [ 39, Moves.FIRE_SPIN ], - [ 46, Moves.CRUNCH ], - [ 53, Moves.FIRE_LASH ], - [ 60, Moves.LUNGE ], - [ 67, Moves.BURN_UP ], - ], - [Species.CLOBBOPUS]: [ - [ 1, Moves.LEER ], - [ 1, Moves.ROCK_SMASH ], - [ 5, Moves.FEINT ], - [ 10, Moves.BIND ], - [ 15, Moves.DETECT ], - [ 20, Moves.BRICK_BREAK ], - [ 25, Moves.BULK_UP ], - [ 30, Moves.SUBMISSION ], - [ 35, Moves.TAUNT ], - [ 40, Moves.REVERSAL ], - [ 45, Moves.SUPERPOWER ], - ], - [Species.GRAPPLOCT]: [ - [ EVOLVE_MOVE, Moves.OCTOLOCK ], - [ 1, Moves.BIND ], - [ 1, Moves.LEER ], - [ 1, Moves.OCTAZOOKA ], - [ 1, Moves.ROCK_SMASH ], - [ 1, Moves.FEINT ], - [ 15, Moves.DETECT ], - [ 20, Moves.BRICK_BREAK ], - [ 25, Moves.BULK_UP ], - [ 30, Moves.SUBMISSION ], - [ 35, Moves.TAUNT ], - [ 40, Moves.REVERSAL ], - [ 45, Moves.SUPERPOWER ], - [ 50, Moves.TOPSY_TURVY ], - ], - [Species.SINISTEA]: [ - [ 1, Moves.WITHDRAW ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.ABSORB ], // Custom - [ 6, Moves.AROMATIC_MIST ], - [ 12, Moves.MEGA_DRAIN ], - [ 24, Moves.SUCKER_PUNCH ], - [ 30, Moves.SWEET_SCENT ], - [ 36, Moves.GIGA_DRAIN ], - [ 42, Moves.NASTY_PLOT ], - [ 48, Moves.SHADOW_BALL ], - [ 54, Moves.MEMENTO ], - [ 60, Moves.SHELL_SMASH ], - ], - [Species.POLTEAGEIST]: [ - [ EVOLVE_MOVE, Moves.TEATIME ], - [ 1, Moves.ABSORB ], // Previous Stage Move, Custom - [ 1, Moves.MEGA_DRAIN ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.AROMATIC_MIST ], - [ 1, Moves.STRENGTH_SAP ], - [ 18, Moves.PROTECT ], - [ 24, Moves.SUCKER_PUNCH ], - [ 30, Moves.SWEET_SCENT ], - [ 36, Moves.GIGA_DRAIN ], - [ 42, Moves.NASTY_PLOT ], - [ 48, Moves.SHADOW_BALL ], - [ 54, Moves.MEMENTO ], - [ 60, Moves.SHELL_SMASH ], - [ 66, Moves.CURSE ], - ], - [Species.HATENNA]: [ - [ 1, Moves.CONFUSION ], - [ 1, Moves.PLAY_NICE ], - [ 5, Moves.LIFE_DEW ], - [ 10, Moves.DISARMING_VOICE ], - [ 15, Moves.AROMATIC_MIST ], - [ 20, Moves.PSYBEAM ], - [ 25, Moves.HEAL_PULSE ], - [ 30, Moves.DAZZLING_GLEAM ], - [ 35, Moves.CALM_MIND ], - [ 40, Moves.PSYCHIC ], - [ 45, Moves.HEALING_WISH ], - ], - [Species.HATTREM]: [ - [ EVOLVE_MOVE, Moves.BRUTAL_SWING ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.DISARMING_VOICE ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.LIFE_DEW ], - [ 15, Moves.AROMATIC_MIST ], - [ 20, Moves.PSYBEAM ], - [ 25, Moves.HEAL_PULSE ], - [ 30, Moves.DAZZLING_GLEAM ], - [ 37, Moves.CALM_MIND ], - [ 44, Moves.PSYCHIC ], - [ 51, Moves.HEALING_WISH ], - ], - [Species.HATTERENE]: [ - [ EVOLVE_MOVE, Moves.PSYCHO_CUT ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.DISARMING_VOICE ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.BRUTAL_SWING ], - [ 1, Moves.LIFE_DEW ], - [ 15, Moves.AROMATIC_MIST ], - [ 20, Moves.PSYBEAM ], - [ 25, Moves.HEAL_PULSE ], - [ 30, Moves.DAZZLING_GLEAM ], - [ 37, Moves.CALM_MIND ], - [ 46, Moves.PSYCHIC ], - [ 55, Moves.HEALING_WISH ], - [ 64, Moves.MAGIC_POWDER ], - ], - [Species.IMPIDIMP]: [ - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.CONFIDE ], - [ 4, Moves.BITE ], - [ 8, Moves.FLATTER ], - [ 12, Moves.FAKE_TEARS ], - [ 16, Moves.ASSURANCE ], - [ 20, Moves.SWAGGER ], - [ 24, Moves.SUCKER_PUNCH ], - [ 28, Moves.TORMENT ], - [ 33, Moves.DARK_PULSE ], - [ 36, Moves.NASTY_PLOT ], - [ 40, Moves.PLAY_ROUGH ], - [ 44, Moves.FOUL_PLAY ], - ], - [Species.MORGREM]: [ - [ EVOLVE_MOVE, Moves.FALSE_SURRENDER ], - [ 1, Moves.BITE ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.FLATTER ], - [ 1, Moves.CONFIDE ], - [ 12, Moves.FAKE_TEARS ], - [ 16, Moves.ASSURANCE ], - [ 20, Moves.SWAGGER ], - [ 24, Moves.SUCKER_PUNCH ], - [ 28, Moves.TORMENT ], - [ 35, Moves.DARK_PULSE ], - [ 40, Moves.NASTY_PLOT ], - [ 46, Moves.PLAY_ROUGH ], - [ 52, Moves.FOUL_PLAY ], - ], - [Species.GRIMMSNARL]: [ - [ EVOLVE_MOVE, Moves.SPIRIT_BREAK ], - [ 1, Moves.BITE ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.FLATTER ], - [ 1, Moves.BULK_UP ], - [ 1, Moves.CONFIDE ], - [ 1, Moves.FALSE_SURRENDER ], - [ 12, Moves.FAKE_TEARS ], - [ 16, Moves.ASSURANCE ], - [ 20, Moves.SWAGGER ], - [ 24, Moves.SUCKER_PUNCH ], - [ 28, Moves.TORMENT ], - [ 35, Moves.DARK_PULSE ], - [ 40, Moves.NASTY_PLOT ], - [ 48, Moves.PLAY_ROUGH ], - [ 56, Moves.FOUL_PLAY ], - [ 64, Moves.HAMMER_ARM ], - ], - [Species.OBSTAGOON]: [ - [ EVOLVE_MOVE, Moves.OBSTRUCT ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.PIN_MISSILE ], - [ 1, Moves.LEER ], - [ 1, Moves.SUBMISSION ], - [ 1, Moves.LICK ], - [ 1, Moves.CROSS_CHOP ], - [ 1, Moves.NIGHT_SLASH ], - [ 1, Moves.SWITCHEROO ], - [ 1, Moves.BABY_DOLL_EYES ], - [ 9, Moves.SNARL ], - [ 12, Moves.HEADBUTT ], - [ 15, Moves.HONE_CLAWS ], - [ 18, Moves.FURY_SWIPES ], - [ 23, Moves.REST ], - [ 28, Moves.TAKE_DOWN ], - [ 35, Moves.SCARY_FACE ], - [ 42, Moves.COUNTER ], - [ 49, Moves.TAUNT ], - [ 56, Moves.DOUBLE_EDGE ], - ], - [Species.PERRSERKER]: [ - [ EVOLVE_MOVE, Moves.IRON_HEAD ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.IRON_DEFENSE ], - [ 1, Moves.METAL_BURST ], - [ 1, Moves.HONE_CLAWS ], - [ 12, Moves.PAY_DAY ], - [ 16, Moves.METAL_CLAW ], - [ 20, Moves.TAUNT ], - [ 24, Moves.SWAGGER ], - [ 31, Moves.FURY_SWIPES ], - [ 36, Moves.SCREECH ], - [ 42, Moves.SLASH ], - [ 48, Moves.METAL_SOUND ], - [ 54, Moves.THRASH ], - ], - [Species.CURSOLA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.DISABLE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.PERISH_SONG ], - [ 1, Moves.ASTONISH ], - [ 15, Moves.SPITE ], - [ 20, Moves.ANCIENT_POWER ], - [ 25, Moves.HEX ], - [ 30, Moves.CURSE ], - [ 35, Moves.STRENGTH_SAP ], - [ 40, Moves.POWER_GEM ], - [ 45, Moves.NIGHT_SHADE ], - [ 50, Moves.GRUDGE ], - [ 55, Moves.MIRROR_COAT ], - ], - [Species.SIRFETCHD]: [ - [ EVOLVE_MOVE, Moves.IRON_DEFENSE ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.FIRST_IMPRESSION ], - [ 15, Moves.ROCK_SMASH ], - [ 20, Moves.BRUTAL_SWING ], - [ 25, Moves.DETECT ], - [ 30, Moves.KNOCK_OFF ], - [ 35, Moves.DEFOG ], - [ 40, Moves.BRICK_BREAK ], - [ 45, Moves.SWORDS_DANCE ], - [ 50, Moves.SLAM ], - [ 55, Moves.LEAF_BLADE ], - [ 60, Moves.FINAL_GAMBIT ], - [ 65, Moves.BRAVE_BIRD ], - [ 70, Moves.METEOR_ASSAULT ], - ], - [Species.MR_RIME]: [ - [ 1, Moves.POUND ], - [ 1, Moves.BARRIER ], // Previous Stage Move - [ 1, Moves.TICKLE ], // Previous Stage Move - [ 1, Moves.MIMIC ], - [ 1, Moves.LIGHT_SCREEN ], - [ 1, Moves.REFLECT ], - [ 1, Moves.PROTECT ], - [ 1, Moves.SAFEGUARD ], - [ 1, Moves.BATON_PASS ], - [ 1, Moves.ENCORE ], - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.ROLE_PLAY ], - [ 1, Moves.RECYCLE ], - [ 1, Moves.SLACK_OFF ], - [ 1, Moves.FAKE_TEARS ], - [ 1, Moves.BLOCK ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.ICE_SHARD ], - [ 1, Moves.AFTER_YOU ], - [ 1, Moves.MISTY_TERRAIN ], - [ 1, Moves.DAZZLING_GLEAM ], - [ 12, Moves.CONFUSION ], - [ 16, Moves.ALLY_SWITCH ], - [ 20, Moves.ICY_WIND ], - [ 24, Moves.DOUBLE_KICK ], - [ 28, Moves.PSYBEAM ], - [ 32, Moves.HYPNOSIS ], - [ 36, Moves.MIRROR_COAT ], - [ 40, Moves.SUCKER_PUNCH ], - [ 44, Moves.FREEZE_DRY ], - [ 48, Moves.PSYCHIC ], - [ 52, Moves.TEETER_DANCE ], - ], - [Species.RUNERIGUS]: [ - [ EVOLVE_MOVE, Moves.SHADOW_CLAW ], - [ 1, Moves.NIGHT_SHADE ], - [ 1, Moves.HAZE ], - [ 1, Moves.PROTECT ], - [ 1, Moves.SCARY_FACE ], - [ 1, Moves.ASTONISH ], - [ 12, Moves.DISABLE ], - [ 16, Moves.BRUTAL_SWING ], - [ 20, Moves.CRAFTY_SHIELD ], - [ 24, Moves.HEX ], - [ 28, Moves.MEAN_LOOK ], - [ 32, Moves.SLAM ], - [ 38, Moves.CURSE ], - [ 44, Moves.SHADOW_BALL ], - [ 50, Moves.EARTHQUAKE ], - [ 56, Moves.GUARD_SPLIT ], - [ 56, Moves.POWER_SPLIT ], - [ 62, Moves.DESTINY_BOND ], - ], - [Species.MILCERY]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.AROMATIC_MIST ], - [ 5, Moves.SWEET_KISS ], - [ 10, Moves.SWEET_SCENT ], - [ 15, Moves.DRAINING_KISS ], - [ 20, Moves.AROMATHERAPY ], - [ 25, Moves.ATTRACT ], - [ 30, Moves.ACID_ARMOR ], - [ 35, Moves.DAZZLING_GLEAM ], - [ 40, Moves.RECOVER ], - [ 45, Moves.MISTY_TERRAIN ], - [ 50, Moves.ENTRAINMENT ], - ], - [Species.ALCREMIE]: [ - [ EVOLVE_MOVE, Moves.DECORATE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.AROMATIC_MIST ], - [ 15, Moves.DRAINING_KISS ], - [ 20, Moves.AROMATHERAPY ], - [ 25, Moves.ATTRACT ], - [ 30, Moves.ACID_ARMOR ], - [ 35, Moves.DAZZLING_GLEAM ], - [ 40, Moves.RECOVER ], - [ 45, Moves.MISTY_TERRAIN ], - [ 50, Moves.ENTRAINMENT ], - ], - [Species.FALINKS]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.PROTECT ], - [ 5, Moves.ROCK_SMASH ], - [ 10, Moves.FOCUS_ENERGY ], - [ 15, Moves.HEADBUTT ], - [ 20, Moves.BULK_UP ], - [ 25, Moves.ENDURE ], - [ 30, Moves.REVERSAL ], - [ 35, Moves.FIRST_IMPRESSION ], - [ 40, Moves.NO_RETREAT ], - [ 45, Moves.IRON_DEFENSE ], - [ 50, Moves.CLOSE_COMBAT ], - [ 55, Moves.MEGAHORN ], - [ 60, Moves.COUNTER ], - ], - [Species.PINCURCHIN]: [ - [ 1, Moves.PECK ], - [ 1, Moves.THUNDER_SHOCK ], - [ 5, Moves.WATER_GUN ], - [ 10, Moves.CHARGE ], - [ 15, Moves.FURY_ATTACK ], - [ 20, Moves.SPARK ], - [ 25, Moves.BUBBLE_BEAM ], - [ 30, Moves.RECOVER ], - [ 35, Moves.CURSE ], - [ 40, Moves.ELECTRIC_TERRAIN ], - [ 45, Moves.POISON_JAB ], - [ 50, Moves.ZING_ZAP ], - [ 55, Moves.ACUPRESSURE ], - [ 60, Moves.DISCHARGE ], - ], - [Species.SNOM]: [ - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.STRUGGLE_BUG ], - ], - [Species.FROSMOTH]: [ - [ EVOLVE_MOVE, Moves.ICY_WIND ], - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.ATTRACT ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.STRUGGLE_BUG ], - [ 4, Moves.STUN_SPORE ], - [ 8, Moves.INFESTATION ], - [ 12, Moves.MIST ], - [ 16, Moves.DEFOG ], - [ 21, Moves.FEATHER_DANCE ], - [ 24, Moves.AURORA_BEAM ], - [ 28, Moves.SNOWSCAPE ], - [ 32, Moves.BUG_BUZZ ], - [ 36, Moves.AURORA_VEIL ], - [ 40, Moves.BLIZZARD ], - [ 44, Moves.TAILWIND ], - [ 48, Moves.WIDE_GUARD ], - [ 52, Moves.QUIVER_DANCE ], - ], - [Species.STONJOURNER]: [ - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.BLOCK ], - [ 6, Moves.ROCK_POLISH ], - [ 12, Moves.ROCK_TOMB ], - [ 18, Moves.GRAVITY ], - [ 24, Moves.STOMP ], - [ 30, Moves.STEALTH_ROCK ], - [ 36, Moves.ROCK_SLIDE ], - [ 42, Moves.BODY_SLAM ], - [ 48, Moves.WIDE_GUARD ], - [ 54, Moves.HEAVY_SLAM ], - [ 60, Moves.STONE_EDGE ], - [ 66, Moves.MEGA_KICK ], - ], - [Species.EISCUE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.POWDER_SNOW ], - [ 6, Moves.MIST ], - [ 12, Moves.WEATHER_BALL ], - [ 18, Moves.ICY_WIND ], - [ 24, Moves.HEADBUTT ], - [ 30, Moves.AMNESIA ], - [ 36, Moves.FREEZE_DRY ], - [ 42, Moves.SNOWSCAPE ], - [ 48, Moves.AURORA_VEIL ], - [ 54, Moves.SURF ], - [ 60, Moves.BLIZZARD ], - ], - [Species.INDEEDEE]: [ - [ 1, Moves.STORED_POWER ], - [ 1, Moves.PLAY_NICE ], - [ 5, Moves.ENCORE ], - [ 10, Moves.DISARMING_VOICE ], - [ 15, Moves.PSYBEAM ], - [ 20, Moves.HELPING_HAND ], - [ 25, Moves.AFTER_YOU ], - [ 30, Moves.HEALING_WISH ], - [ 35, Moves.PSYCHIC ], - [ 40, Moves.CALM_MIND ], - [ 45, Moves.POWER_SPLIT ], - [ 50, Moves.PSYCHIC_TERRAIN ], - [ 55, Moves.LAST_RESORT ], - ], - [Species.MORPEKO]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.THUNDER_SHOCK ], - [ 5, Moves.LEER ], - [ 10, Moves.POWER_TRIP ], - [ 15, Moves.QUICK_ATTACK ], - [ 20, Moves.FLATTER ], - [ 25, Moves.BITE ], - [ 30, Moves.SPARK ], - [ 35, Moves.TORMENT ], - [ 40, Moves.AGILITY ], - [ 45, Moves.BULLET_SEED ], - [ 50, Moves.CRUNCH ], - [ 55, Moves.AURA_WHEEL ], - [ 60, Moves.THRASH ], - ], - [Species.CUFANT]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 5, Moves.ROLLOUT ], - [ 10, Moves.ROCK_SMASH ], - [ 15, Moves.BULLDOZE ], - [ 20, Moves.STOMP ], - [ 25, Moves.IRON_DEFENSE ], - [ 30, Moves.DIG ], - [ 35, Moves.STRENGTH ], - [ 40, Moves.IRON_HEAD ], - [ 45, Moves.PLAY_ROUGH ], - [ 50, Moves.HIGH_HORSEPOWER ], - [ 55, Moves.SUPERPOWER ], - ], - [Species.COPPERAJAH]: [ - [ EVOLVE_MOVE, Moves.HEAVY_SLAM ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.ROLLOUT ], - [ 1, Moves.ROCK_SMASH ], - [ 15, Moves.BULLDOZE ], - [ 20, Moves.STOMP ], - [ 25, Moves.IRON_DEFENSE ], - [ 30, Moves.DIG ], - [ 37, Moves.STRENGTH ], - [ 44, Moves.IRON_HEAD ], - [ 51, Moves.PLAY_ROUGH ], - [ 58, Moves.HIGH_HORSEPOWER ], - [ 65, Moves.SUPERPOWER ], - ], - [Species.DRACOZOLT]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.THUNDER_SHOCK ], - [ 7, Moves.CHARGE ], - [ 14, Moves.AERIAL_ACE ], - [ 21, Moves.ANCIENT_POWER ], - [ 28, Moves.PLUCK ], - [ 35, Moves.DRAGON_TAIL ], - [ 42, Moves.STOMP ], - [ 49, Moves.SLAM ], - [ 56, Moves.DISCHARGE ], - [ 63, Moves.BOLT_BEAK ], - [ 70, Moves.DRAGON_PULSE ], - [ 77, Moves.DRAGON_RUSH ], - ], - [Species.ARCTOZOLT]: [ - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.POWDER_SNOW ], - [ 7, Moves.CHARGE ], - [ 14, Moves.ECHOED_VOICE ], - [ 21, Moves.ANCIENT_POWER ], - [ 28, Moves.PLUCK ], - [ 35, Moves.AVALANCHE ], - [ 42, Moves.FREEZE_DRY ], - [ 49, Moves.SLAM ], - [ 56, Moves.DISCHARGE ], - [ 63, Moves.BOLT_BEAK ], - [ 70, Moves.ICICLE_CRASH ], - [ 77, Moves.BLIZZARD ], - ], - [Species.DRACOVISH]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.WATER_GUN ], - [ 7, Moves.PROTECT ], - [ 14, Moves.BRUTAL_SWING ], - [ 21, Moves.ANCIENT_POWER ], - [ 28, Moves.BITE ], - [ 35, Moves.DRAGON_BREATH ], - [ 42, Moves.STOMP ], - [ 49, Moves.SUPER_FANG ], - [ 56, Moves.CRUNCH ], - [ 63, Moves.FISHIOUS_REND ], - [ 70, Moves.DRAGON_PULSE ], - [ 77, Moves.DRAGON_RUSH ], - ], - [Species.ARCTOVISH]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.POWDER_SNOW ], - [ 7, Moves.PROTECT ], - [ 14, Moves.ICY_WIND ], - [ 21, Moves.ANCIENT_POWER ], - [ 28, Moves.BITE ], - [ 35, Moves.AURORA_VEIL ], - [ 42, Moves.FREEZE_DRY ], - [ 49, Moves.SUPER_FANG ], - [ 56, Moves.CRUNCH ], - [ 63, Moves.FISHIOUS_REND ], - [ 70, Moves.ICICLE_CRASH ], - [ 77, Moves.BLIZZARD ], - ], - [Species.DURALUDON]: [ - [ 1, Moves.LEER ], - [ 1, Moves.METAL_CLAW ], - [ 6, Moves.ROCK_SMASH ], - [ 12, Moves.HONE_CLAWS ], - [ 18, Moves.METAL_SOUND ], - [ 24, Moves.BREAKING_SWIPE ], - [ 30, Moves.DRAGON_TAIL ], - [ 36, Moves.IRON_DEFENSE ], - [ 42, Moves.LASER_FOCUS ], - [ 48, Moves.DRAGON_CLAW ], - [ 54, Moves.FLASH_CANNON ], - [ 60, Moves.METAL_BURST ], - [ 66, Moves.HYPER_BEAM ], - ], - [Species.DREEPY]: [ - [ 1, Moves.BITE ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.INFESTATION ], - ], - [Species.DRAKLOAK]: [ - [ EVOLVE_MOVE, Moves.DRAGON_PULSE ], - [ 1, Moves.BITE ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.INFESTATION ], - [ 6, Moves.LOCK_ON ], - [ 12, Moves.ASSURANCE ], - [ 18, Moves.HEX ], - [ 24, Moves.AGILITY ], - [ 30, Moves.DOUBLE_HIT ], - [ 36, Moves.U_TURN ], - [ 42, Moves.DRAGON_DANCE ], - [ 48, Moves.PHANTOM_FORCE ], - [ 54, Moves.TAKE_DOWN ], - [ 61, Moves.DRAGON_RUSH ], - [ 66, Moves.DOUBLE_EDGE ], - [ 72, Moves.LAST_RESORT ], - ], - [Species.DRAGAPULT]: [ - [ EVOLVE_MOVE, Moves.DRAGON_DARTS ], - [ RELEARN_MOVE, Moves.DRAGON_PULSE ], // Previous Stage Move - [ 1, Moves.BITE ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.INFESTATION ], - [ 6, Moves.LOCK_ON ], - [ 12, Moves.ASSURANCE ], - [ 18, Moves.HEX ], - [ 24, Moves.AGILITY ], - [ 30, Moves.DOUBLE_HIT ], - [ 36, Moves.U_TURN ], - [ 42, Moves.DRAGON_DANCE ], - [ 48, Moves.PHANTOM_FORCE ], - [ 54, Moves.TAKE_DOWN ], - [ 63, Moves.DRAGON_RUSH ], - [ 70, Moves.DOUBLE_EDGE ], - [ 78, Moves.LAST_RESORT ], - ], - [Species.ZACIAN]: [ - [ 1, Moves.BITE ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.HOWL ], - [ 1, Moves.QUICK_GUARD ], - [ 1, Moves.SACRED_SWORD ], - [ 11, Moves.SLASH ], - [ 22, Moves.SWORDS_DANCE ], - [ 33, Moves.IRON_HEAD ], - [ 44, Moves.NOBLE_ROAR ], - [ 55, Moves.CRUNCH ], - [ 66, Moves.MOONBLAST ], - [ 77, Moves.CLOSE_COMBAT ], - [ 88, Moves.GIGA_IMPACT ], - ], - [Species.ZAMAZENTA]: [ - [ 1, Moves.BITE ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.HOWL ], - [ 1, Moves.WIDE_GUARD ], - [ 11, Moves.SLASH ], - [ 22, Moves.IRON_DEFENSE ], - [ 33, Moves.IRON_HEAD ], - [ 44, Moves.METAL_BURST ], - [ 55, Moves.CRUNCH ], - [ 66, Moves.MOONBLAST ], - [ 77, Moves.CLOSE_COMBAT ], - [ 88, Moves.GIGA_IMPACT ], - ], - [Species.ETERNATUS]: [ - [ 1, Moves.AGILITY ], - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.POISON_TAIL ], - [ 1, Moves.DRAGON_TAIL ], - [ 8, Moves.TOXIC ], - [ 16, Moves.VENOSHOCK ], - [ 24, Moves.DRAGON_DANCE ], - [ 32, Moves.CROSS_POISON ], - [ 40, Moves.DRAGON_PULSE ], - [ 48, Moves.FLAMETHROWER ], - [ 56, Moves.DYNAMAX_CANNON ], - [ 64, Moves.COSMIC_POWER ], - [ 72, Moves.RECOVER ], - [ 80, Moves.HYPER_BEAM ], - [ 88, Moves.OUTRAGE ], - ], - [Species.KUBFU]: [ - [ 1, Moves.LEER ], - [ 1, Moves.ROCK_SMASH ], - [ 4, Moves.ENDURE ], - [ 8, Moves.FOCUS_ENERGY ], - [ 12, Moves.AERIAL_ACE ], - [ 16, Moves.SCARY_FACE ], - [ 20, Moves.HEADBUTT ], - [ 24, Moves.BRICK_BREAK ], - [ 28, Moves.DETECT ], - [ 32, Moves.BULK_UP ], - [ 36, Moves.IRON_HEAD ], - [ 40, Moves.DYNAMIC_PUNCH ], - [ 44, Moves.COUNTER ], - [ 48, Moves.CLOSE_COMBAT ], - [ 52, Moves.FOCUS_PUNCH ], - ], - [Species.URSHIFU]: [ - [ EVOLVE_MOVE, Moves.WICKED_BLOW ], - [ 1, Moves.LEER ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.ENDURE ], - [ 1, Moves.ROCK_SMASH ], - [ 1, Moves.SUCKER_PUNCH ], - [ 12, Moves.AERIAL_ACE ], - [ 16, Moves.SCARY_FACE ], - [ 20, Moves.HEADBUTT ], - [ 24, Moves.BRICK_BREAK ], - [ 28, Moves.DETECT ], - [ 32, Moves.BULK_UP ], - [ 36, Moves.IRON_HEAD ], - [ 40, Moves.DYNAMIC_PUNCH ], - [ 44, Moves.COUNTER ], - [ 48, Moves.CLOSE_COMBAT ], - [ 52, Moves.FOCUS_PUNCH ], - ], - [Species.ZARUDE]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.BIND ], - [ 6, Moves.LEER ], - [ 12, Moves.VINE_WHIP ], - [ 18, Moves.GROWTH ], - [ 24, Moves.FURY_SWIPES ], - [ 30, Moves.SCARY_FACE ], - [ 36, Moves.GRASS_KNOT ], - [ 42, Moves.BITE ], - [ 48, Moves.U_TURN ], - [ 54, Moves.SWAGGER ], - [ 60, Moves.ENERGY_BALL ], - [ 66, Moves.SYNTHESIS ], - [ 72, Moves.HAMMER_ARM ], - [ 78, Moves.THRASH ], - [ 84, Moves.POWER_WHIP ], - [ 90, Moves.JUNGLE_HEALING ], - ], - [Species.REGIELEKI]: [ - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.RAPID_SPIN ], - [ 6, Moves.ELECTROWEB ], - [ 12, Moves.ANCIENT_POWER ], - [ 18, Moves.SHOCK_WAVE ], - [ 24, Moves.THUNDER_WAVE ], - [ 30, Moves.EXTREME_SPEED ], - [ 36, Moves.THUNDER_CAGE ], - [ 42, Moves.THUNDERBOLT ], - [ 48, Moves.MAGNET_RISE ], - [ 54, Moves.THRASH ], - [ 60, Moves.LOCK_ON ], - [ 66, Moves.ZAP_CANNON ], - [ 72, Moves.HYPER_BEAM ], - [ 78, Moves.EXPLOSION ], - ], - [Species.REGIDRAGO]: [ - [ 1, Moves.TWISTER ], - [ 6, Moves.BITE ], - [ 12, Moves.ANCIENT_POWER ], - [ 18, Moves.DRAGON_BREATH ], - [ 30, Moves.CRUNCH ], - [ 36, Moves.DRAGON_CLAW ], - [ 42, Moves.HAMMER_ARM ], - [ 48, Moves.DRAGON_DANCE ], - [ 54, Moves.THRASH ], - [ 60, Moves.FOCUS_ENERGY ], - [ 66, Moves.DRAGON_ENERGY ], - [ 72, Moves.HYPER_BEAM ], - [ 78, Moves.EXPLOSION ], - ], - [Species.GLASTRIER]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 6, Moves.DOUBLE_KICK ], - [ 12, Moves.AVALANCHE ], - [ 18, Moves.STOMP ], - [ 24, Moves.TORMENT ], - [ 30, Moves.MIST ], - [ 36, Moves.ICICLE_CRASH ], - [ 42, Moves.TAKE_DOWN ], - [ 48, Moves.IRON_DEFENSE ], - [ 54, Moves.THRASH ], - [ 60, Moves.TAUNT ], - [ 66, Moves.DOUBLE_EDGE ], - [ 72, Moves.SWORDS_DANCE ], - ], - [Species.SPECTRIER]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 6, Moves.DOUBLE_KICK ], - [ 12, Moves.HEX ], - [ 18, Moves.STOMP ], - [ 24, Moves.CONFUSE_RAY ], - [ 30, Moves.HAZE ], - [ 36, Moves.SHADOW_BALL ], - [ 42, Moves.TAKE_DOWN ], - [ 48, Moves.AGILITY ], - [ 54, Moves.THRASH ], - [ 60, Moves.DISABLE ], - [ 66, Moves.DOUBLE_EDGE ], - [ 72, Moves.NASTY_PLOT ], - ], - [Species.CALYREX]: [ - [ 1, Moves.POUND ], - [ 1, Moves.MEGA_DRAIN ], - [ 1, Moves.GROWTH ], - [ 1, Moves.CONFUSION ], - [ 8, Moves.LIFE_DEW ], - [ 16, Moves.GIGA_DRAIN ], - [ 24, Moves.PSYSHOCK ], - [ 32, Moves.HELPING_HAND ], - [ 40, Moves.GRASSY_TERRAIN ], - [ 40, Moves.PSYCHIC_TERRAIN ], - [ 48, Moves.ENERGY_BALL ], - [ 56, Moves.PSYCHIC ], - [ 64, Moves.LEECH_SEED ], - [ 72, Moves.HEAL_PULSE ], - [ 80, Moves.SOLAR_BEAM ], - [ 88, Moves.FUTURE_SIGHT ], - ], - [Species.WYRDEER]: [ - [ EVOLVE_MOVE, Moves.PSYSHIELD_BASH ], - [ 1, Moves.TACKLE ], - [ 1, Moves.ME_FIRST ], // Previous Stage Move - [ 3, Moves.LEER ], - [ 7, Moves.ASTONISH ], - [ 10, Moves.HYPNOSIS ], - [ 13, Moves.STOMP ], - [ 16, Moves.SAND_ATTACK ], - [ 21, Moves.TAKE_DOWN ], - [ 23, Moves.CONFUSE_RAY ], - [ 27, Moves.CALM_MIND ], - [ 32, Moves.ROLE_PLAY ], - [ 37, Moves.ZEN_HEADBUTT ], - [ 49, Moves.IMPRISON ], - [ 55, Moves.DOUBLE_EDGE ], - [ 62, Moves.MEGAHORN ], - ], - [Species.KLEAVOR]: [ - [ EVOLVE_MOVE, Moves.STONE_AXE ], - [ 1, Moves.WING_ATTACK ], // Previous Stage Move - [ 1, Moves.AIR_SLASH ], // Previous Stage Move - [ 1, Moves.LEER ], - [ 1, Moves.QUICK_ATTACK ], - [ 4, Moves.FURY_CUTTER ], - [ 8, Moves.FALSE_SWIPE ], - [ 12, Moves.SMACK_DOWN ], - [ 16, Moves.DOUBLE_TEAM ], - [ 20, Moves.DOUBLE_HIT ], - [ 24, Moves.SLASH ], - [ 28, Moves.FOCUS_ENERGY ], - [ 30, Moves.STEEL_WING ], // Custom - [ 32, Moves.AGILITY ], - [ 36, Moves.ROCK_SLIDE ], - [ 40, Moves.X_SCISSOR ], - [ 44, Moves.SWORDS_DANCE ], - ], - [Species.URSALUNA]: [ - [ EVOLVE_MOVE, Moves.HEADLONG_RUSH ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.LICK ], - [ 1, Moves.COVET ], - [ 1, Moves.FLING ], // Previous Stage Move - [ 1, Moves.BABY_DOLL_EYES ], // Previous Stage Move - [ 1, Moves.FAKE_TEARS ], - [ 1, Moves.CHARM ], // Previous Stage Moves - [ 8, Moves.FURY_SWIPES ], - [ 13, Moves.PAYBACK ], - [ 17, Moves.SWEET_SCENT ], - [ 22, Moves.SLASH ], - [ 25, Moves.PLAY_NICE ], - [ 29, Moves.PLAY_ROUGH ], - [ 35, Moves.SCARY_FACE ], - [ 41, Moves.REST ], - [ 41, Moves.SNORE ], - [ 48, Moves.HIGH_HORSEPOWER ], - [ 56, Moves.THRASH ], - [ 64, Moves.HAMMER_ARM ], - ], - [Species.BASCULEGION]: [ - [ RELEARN_MOVE, Moves.FINAL_GAMBIT ], // Previous Stage Move, White Stripe currently shares moveset with other forms - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.SHADOW_BALL ], - [ 1, Moves.PHANTOM_FORCE ], - [ 4, Moves.TACKLE ], - [ 8, Moves.FLAIL ], - [ 12, Moves.AQUA_JET ], - [ 16, Moves.BITE ], - [ 20, Moves.SCARY_FACE ], - [ 24, Moves.HEADBUTT ], - [ 28, Moves.SOAK ], - [ 32, Moves.CRUNCH ], - [ 36, Moves.TAKE_DOWN ], - [ 40, Moves.UPROAR ], - [ 44, Moves.WAVE_CRASH ], - [ 48, Moves.THRASH ], - [ 52, Moves.DOUBLE_EDGE ], - [ 56, Moves.HEAD_SMASH ], - ], - [Species.SNEASLER]: [ - [ EVOLVE_MOVE, Moves.DIRE_CLAW ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.ROCK_SMASH ], - [ 1, Moves.FLING ], - [ 6, Moves.TAUNT ], - [ 12, Moves.QUICK_ATTACK ], - [ 18, Moves.METAL_CLAW ], - [ 24, Moves.POISON_JAB ], - [ 30, Moves.BRICK_BREAK ], - [ 36, Moves.HONE_CLAWS ], - [ 42, Moves.SLASH ], - [ 48, Moves.AGILITY ], - [ 54, Moves.SCREECH ], - [ 60, Moves.CLOSE_COMBAT ], - ], - [Species.OVERQWIL]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.POISON_STING ], - [ 4, Moves.HARDEN ], - [ 8, Moves.BITE ], - [ 12, Moves.FELL_STINGER ], - [ 16, Moves.MINIMIZE ], - [ 20, Moves.SPIKES ], - [ 24, Moves.BRINE ], - [ 28, Moves.BARB_BARRAGE ], - [ 32, Moves.PIN_MISSILE ], - [ 36, Moves.TOXIC_SPIKES ], - [ 40, Moves.STOCKPILE ], - [ 40, Moves.SPIT_UP ], - [ 44, Moves.TOXIC ], - [ 48, Moves.CRUNCH ], - [ 52, Moves.ACUPRESSURE ], - [ 56, Moves.DESTINY_BOND ], - ], - [Species.ENAMORUS]: [ - [ 1, Moves.ASTONISH ], - [ 1, Moves.FAIRY_WIND ], - [ 5, Moves.TORMENT ], - [ 10, Moves.FLATTER ], - [ 15, Moves.TWISTER ], - [ 20, Moves.DRAINING_KISS ], - [ 25, Moves.IRON_DEFENSE ], - [ 30, Moves.IMPRISON ], - [ 35, Moves.MYSTICAL_FIRE ], - [ 40, Moves.DAZZLING_GLEAM ], - [ 45, Moves.EXTRASENSORY ], - [ 50, Moves.UPROAR ], - [ 55, Moves.SUPERPOWER ], - [ 60, Moves.HEALING_WISH ], - [ 65, Moves.MOONBLAST ], - [ 70, Moves.OUTRAGE ], - [ 75, Moves.SPRINGTIDE_STORM ], - ], - [Species.SPRIGATITO]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.LEAFAGE ], - [ 7, Moves.BITE ], - [ 10, Moves.HONE_CLAWS ], - [ 13, Moves.MAGICAL_LEAF ], - [ 15, Moves.QUICK_ATTACK ], - [ 17, Moves.SEED_BOMB ], - [ 21, Moves.U_TURN ], - [ 25, Moves.WORRY_SEED ], - [ 28, Moves.SLASH ], - [ 32, Moves.ENERGY_BALL ], - [ 36, Moves.PLAY_ROUGH ], - ], - [Species.FLORAGATO]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.LEAFAGE ], - [ 7, Moves.BITE ], - [ 10, Moves.HONE_CLAWS ], - [ 13, Moves.MAGICAL_LEAF ], - [ 15, Moves.QUICK_ATTACK ], - [ 20, Moves.SEED_BOMB ], - [ 24, Moves.U_TURN ], - [ 28, Moves.WORRY_SEED ], - [ 33, Moves.SLASH ], - [ 38, Moves.ENERGY_BALL ], - [ 42, Moves.PLAY_ROUGH ], - [ 46, Moves.LEAF_STORM ], - ], - [Species.MEOWSCARADA]: [ - [ EVOLVE_MOVE, Moves.FLOWER_TRICK ], - [ RELEARN_MOVE, Moves.DOUBLE_TEAM ], - [ RELEARN_MOVE, Moves.TRICK ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.LEAFAGE ], - [ 7, Moves.BITE ], - [ 10, Moves.HONE_CLAWS ], - [ 13, Moves.MAGICAL_LEAF ], - [ 15, Moves.QUICK_ATTACK ], - [ 20, Moves.SEED_BOMB ], - [ 24, Moves.U_TURN ], - [ 29, Moves.WORRY_SEED ], - [ 33, Moves.SLASH ], - [ 38, Moves.NIGHT_SLASH ], - [ 42, Moves.ENERGY_BALL ], - [ 47, Moves.PLAY_ROUGH ], - [ 52, Moves.KNOCK_OFF ], - [ 58, Moves.GRASSY_TERRAIN ], - [ 64, Moves.LEAF_STORM ], - ], - [Species.FUECOCO]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 7, Moves.ROUND ], - [ 12, Moves.BITE ], - [ 15, Moves.INCINERATE ], - [ 17, Moves.YAWN ], - [ 21, Moves.SNARL ], - [ 25, Moves.ROAR ], - [ 28, Moves.FLAMETHROWER ], - [ 32, Moves.HYPER_VOICE ], - [ 36, Moves.FIRE_BLAST ], - ], - [Species.CROCALOR]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 7, Moves.LICK ], - [ 10, Moves.ROUND ], - [ 12, Moves.BITE ], - [ 15, Moves.YAWN ], - [ 17, Moves.INCINERATE ], - [ 24, Moves.SNARL ], - [ 28, Moves.ROAR ], - [ 32, Moves.FLAMETHROWER ], - [ 38, Moves.HYPER_VOICE ], - [ 42, Moves.WILL_O_WISP ], - [ 47, Moves.FIRE_BLAST ], - ], - [Species.SKELEDIRGE]: [ - [ EVOLVE_MOVE, Moves.TORCH_SONG ], - [ RELEARN_MOVE, Moves.SING ], - [ RELEARN_MOVE, Moves.YAWN ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 7, Moves.LICK ], - [ 10, Moves.ROUND ], - [ 12, Moves.SCARY_FACE ], - [ 15, Moves.BITE ], - [ 17, Moves.INCINERATE ], - [ 24, Moves.SNARL ], - [ 28, Moves.ROAR ], - [ 32, Moves.FLAMETHROWER ], - [ 38, Moves.SHADOW_BALL ], - [ 42, Moves.HYPER_VOICE ], - [ 47, Moves.WILL_O_WISP ], - [ 47, Moves.HEX ], - [ 58, Moves.FIRE_BLAST ], - [ 64, Moves.OVERHEAT ], - ], - [Species.QUAXLY]: [ - [ 1, Moves.POUND ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 7, Moves.WORK_UP ], - [ 10, Moves.WING_ATTACK ], - [ 13, Moves.AQUA_JET ], - [ 17, Moves.DOUBLE_HIT ], - [ 21, Moves.AQUA_CUTTER ], - [ 24, Moves.AIR_SLASH ], - [ 28, Moves.FOCUS_ENERGY ], - [ 31, Moves.ACROBATICS ], - [ 35, Moves.LIQUIDATION ], - ], - [Species.QUAXWELL]: [ - [ 1, Moves.POUND ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.DOUBLE_HIT ], - [ 7, Moves.WORK_UP ], - [ 10, Moves.WING_ATTACK ], - [ 13, Moves.AQUA_JET ], - [ 17, Moves.WATER_PULSE ], - [ 19, Moves.LOW_SWEEP ], - [ 23, Moves.AQUA_CUTTER ], - [ 27, Moves.AIR_SLASH ], - [ 32, Moves.FOCUS_ENERGY ], - [ 38, Moves.ACROBATICS ], - [ 43, Moves.LIQUIDATION ], - [ 48, Moves.FEATHER_DANCE ], - ], - [Species.QUAQUAVAL]: [ - [ EVOLVE_MOVE, Moves.AQUA_STEP ], - [ RELEARN_MOVE, Moves.COUNTER ], - [ 1, Moves.POUND ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.DOUBLE_HIT ], - [ 7, Moves.WORK_UP ], - [ 10, Moves.WING_ATTACK ], - [ 13, Moves.AQUA_JET ], - [ 17, Moves.WATER_PULSE ], - [ 17, Moves.LOW_SWEEP ], - [ 21, Moves.AQUA_CUTTER ], - [ 27, Moves.AIR_SLASH ], - [ 32, Moves.FOCUS_ENERGY ], - [ 38, Moves.MEGA_KICK ], - [ 43, Moves.ACROBATICS ], - [ 47, Moves.LIQUIDATION ], - [ 52, Moves.FEATHER_DANCE ], - [ 58, Moves.CLOSE_COMBAT ], - [ 64, Moves.WAVE_CRASH ], - ], - [Species.LECHONK]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 5, Moves.DISARMING_VOICE ], - [ 8, Moves.ECHOED_VOICE ], - [ 12, Moves.MUD_SHOT ], - [ 15, Moves.COVET ], - [ 17, Moves.DIG ], - [ 21, Moves.HEADBUTT ], - [ 24, Moves.YAWN ], - [ 27, Moves.TAKE_DOWN ], - [ 30, Moves.WORK_UP ], - [ 32, Moves.UPROAR ], - [ 35, Moves.DOUBLE_EDGE ], - ], - [Species.OINKOLOGNE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 5, Moves.DISARMING_VOICE ], - [ 8, Moves.ECHOED_VOICE ], - [ 12, Moves.MUD_SHOT ], - [ 15, Moves.COVET ], - [ 17, Moves.DIG ], - [ 23, Moves.HEADBUTT ], - [ 26, Moves.TAKE_DOWN ], - [ 27, Moves.YAWN ], - [ 34, Moves.WORK_UP ], - [ 38, Moves.UPROAR ], - [ 42, Moves.DOUBLE_EDGE ], - [ 48, Moves.EARTH_POWER ], - [ 54, Moves.BELCH ], - ], - [Species.TAROUNTULA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.STRING_SHOT ], - [ 5, Moves.STRUGGLE_BUG ], - [ 8, Moves.ASSURANCE ], - [ 11, Moves.FEINT ], - [ 14, Moves.BUG_BITE ], - [ 18, Moves.BLOCK ], - [ 22, Moves.COUNTER ], - [ 25, Moves.HEADBUTT ], - [ 29, Moves.STICKY_WEB ], - [ 33, Moves.GASTRO_ACID ], - [ 36, Moves.CIRCLE_THROW ], - [ 40, Moves.THROAT_CHOP ], - [ 44, Moves.SKITTER_SMACK ], - ], - [Species.SPIDOPS]: [ - [ EVOLVE_MOVE, Moves.SILK_TRAP ], - [ 1, Moves.TACKLE ], - [ 1, Moves.STRING_SHOT ], - [ 5, Moves.STRUGGLE_BUG ], - [ 8, Moves.ASSURANCE ], - [ 11, Moves.FEINT ], - [ 14, Moves.BUG_BITE ], - [ 19, Moves.BLOCK ], - [ 24, Moves.COUNTER ], - [ 28, Moves.HEADBUTT ], - [ 33, Moves.STICKY_WEB ], - [ 37, Moves.GASTRO_ACID ], - [ 41, Moves.CIRCLE_THROW ], - [ 45, Moves.THROAT_CHOP ], - [ 49, Moves.SKITTER_SMACK ], - ], - [Species.NYMBLE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 4, Moves.STRUGGLE_BUG ], - [ 6, Moves.ASTONISH ], - [ 9, Moves.ASSURANCE ], - [ 11, Moves.DOUBLE_KICK ], - [ 14, Moves.SCREECH ], - [ 18, Moves.ENDURE ], - [ 22, Moves.BUG_BITE ], - [ 26, Moves.FEINT ], - [ 30, Moves.AGILITY ], - [ 38, Moves.SUCKER_PUNCH ], - [ 41, Moves.FIRST_IMPRESSION ], - ], - [Species.LOKIX]: [ - [ EVOLVE_MOVE, Moves.LUNGE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.LOW_KICK ], - [ 1, Moves.DETECT ], - [ 4, Moves.STRUGGLE_BUG ], - [ 6, Moves.ASTONISH ], - [ 9, Moves.ASSURANCE ], - [ 11, Moves.DOUBLE_KICK ], - [ 14, Moves.SCREECH ], - [ 18, Moves.ENDURE ], - [ 22, Moves.BUG_BITE ], - [ 28, Moves.FEINT ], - [ 32, Moves.AGILITY ], - [ 36, Moves.THROAT_CHOP ], - [ 40, Moves.SUCKER_PUNCH ], - [ 44, Moves.FIRST_IMPRESSION ], - [ 48, Moves.BOUNCE ], - [ 53, Moves.AXE_KICK ], - ], - [Species.PAWMI]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 3, Moves.THUNDER_SHOCK ], - [ 6, Moves.QUICK_ATTACK ], - [ 8, Moves.CHARGE ], - [ 12, Moves.NUZZLE ], - [ 15, Moves.DIG ], - [ 19, Moves.BITE ], - [ 23, Moves.SPARK ], - [ 27, Moves.THUNDER_WAVE ], - [ 31, Moves.ENTRAINMENT ], - [ 35, Moves.SLAM ], - [ 38, Moves.DISCHARGE ], - [ 40, Moves.AGILITY ], - [ 44, Moves.WILD_CHARGE ], - ], - [Species.PAWMO]: [ - [ EVOLVE_MOVE, Moves.ARM_THRUST ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 3, Moves.THUNDER_SHOCK ], - [ 6, Moves.QUICK_ATTACK ], - [ 8, Moves.CHARGE ], - [ 12, Moves.NUZZLE ], - [ 15, Moves.DIG ], - [ 19, Moves.BITE ], - [ 23, Moves.SPARK ], - [ 27, Moves.THUNDER_WAVE ], - [ 32, Moves.SLAM ], - [ 38, Moves.ENTRAINMENT ], - [ 42, Moves.DISCHARGE ], - [ 46, Moves.AGILITY ], - [ 52, Moves.WILD_CHARGE ], - ], - [Species.PAWMOT]: [ - [ EVOLVE_MOVE, Moves.REVIVAL_BLESSING ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 1, Moves.WILD_CHARGE ], - [ 3, Moves.THUNDER_SHOCK ], - [ 6, Moves.QUICK_ATTACK ], - [ 8, Moves.CHARGE ], - [ 12, Moves.NUZZLE ], - [ 15, Moves.DIG ], - [ 19, Moves.BITE ], - [ 23, Moves.SPARK ], - [ 25, Moves.ARM_THRUST ], - [ 29, Moves.THUNDER_WAVE ], - [ 33, Moves.SLAM ], - [ 39, Moves.ENTRAINMENT ], - [ 44, Moves.CLOSE_COMBAT ], - [ 49, Moves.DISCHARGE ], - [ 54, Moves.AGILITY ], - [ 60, Moves.DOUBLE_SHOCK ], - ], - [Species.TANDEMAUS]: [ - [ 1, Moves.POUND ], - [ 1, Moves.BABY_DOLL_EYES ], - [ 5, Moves.ECHOED_VOICE ], - [ 8, Moves.HELPING_HAND ], - [ 11, Moves.SUPER_FANG ], - [ 14, Moves.DOUBLE_HIT ], - [ 18, Moves.BULLET_SEED ], - [ 22, Moves.ENCORE ], - [ 26, Moves.PLAY_ROUGH ], - [ 30, Moves.HYPER_VOICE ], - [ 33, Moves.CHARM ], - [ 37, Moves.BEAT_UP ], - [ 41, Moves.COPYCAT ], - [ 46, Moves.POPULATION_BOMB ], - ], - [Species.MAUSHOLD]: [ - [ 1, Moves.POUND ], - [ 1, Moves.FOLLOW_ME ], - [ 1, Moves.BABY_DOLL_EYES ], - [ 1, Moves.TIDY_UP ], - [ 5, Moves.ECHOED_VOICE ], - [ 8, Moves.HELPING_HAND ], - [ 11, Moves.SUPER_FANG ], - [ 14, Moves.DOUBLE_HIT ], - [ 18, Moves.BULLET_SEED ], - [ 22, Moves.ENCORE ], - [ 29, Moves.PLAY_ROUGH ], - [ 33, Moves.HYPER_VOICE ], - [ 37, Moves.CHARM ], - [ 41, Moves.BEAT_UP ], - [ 46, Moves.COPYCAT ], - [ 53, Moves.POPULATION_BOMB ], - ], - [Species.FIDOUGH]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 3, Moves.LICK ], - [ 6, Moves.TAIL_WHIP ], - [ 8, Moves.COVET ], - [ 11, Moves.BITE ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 18, Moves.PLAY_ROUGH ], - [ 22, Moves.WORK_UP ], - [ 26, Moves.BATON_PASS ], - [ 30, Moves.ROAR ], - [ 33, Moves.DOUBLE_EDGE ], - [ 36, Moves.CHARM ], - [ 40, Moves.CRUNCH ], - [ 45, Moves.LAST_RESORT ], - ], - [Species.DACHSBUN]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 3, Moves.LICK ], - [ 6, Moves.TAIL_WHIP ], - [ 8, Moves.COVET ], - [ 11, Moves.BITE ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 18, Moves.PLAY_ROUGH ], - [ 22, Moves.WORK_UP ], - [ 29, Moves.BATON_PASS ], - [ 33, Moves.ROAR ], - [ 38, Moves.DOUBLE_EDGE ], - [ 42, Moves.CHARM ], - [ 47, Moves.CRUNCH ], - [ 53, Moves.LAST_RESORT ], - ], - [Species.SMOLIV]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.SWEET_SCENT ], - [ 5, Moves.ABSORB ], - [ 7, Moves.GROWTH ], - [ 10, Moves.RAZOR_LEAF ], - [ 13, Moves.HELPING_HAND ], - [ 16, Moves.FLAIL ], - [ 20, Moves.MEGA_DRAIN ], - [ 23, Moves.GRASSY_TERRAIN ], - [ 27, Moves.SEED_BOMB ], - [ 30, Moves.ENERGY_BALL ], - [ 34, Moves.LEECH_SEED ], - [ 38, Moves.TERRAIN_PULSE ], - ], - [Species.DOLLIV]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.SWEET_SCENT ], - [ 5, Moves.ABSORB ], - [ 7, Moves.GROWTH ], - [ 10, Moves.RAZOR_LEAF ], - [ 13, Moves.HELPING_HAND ], - [ 16, Moves.FLAIL ], - [ 20, Moves.MEGA_DRAIN ], - [ 23, Moves.GRASSY_TERRAIN ], - [ 29, Moves.SEED_BOMB ], - [ 34, Moves.ENERGY_BALL ], - [ 37, Moves.LEECH_SEED ], - [ 42, Moves.TERRAIN_PULSE ], - ], - [Species.ARBOLIVA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.SAFEGUARD ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.MIRROR_COAT ], - [ 5, Moves.ABSORB ], - [ 7, Moves.GROWTH ], - [ 10, Moves.RAZOR_LEAF ], - [ 13, Moves.HELPING_HAND ], - [ 16, Moves.FLAIL ], - [ 20, Moves.MEGA_DRAIN ], - [ 23, Moves.GRASSY_TERRAIN ], - [ 29, Moves.SEED_BOMB ], - [ 34, Moves.ENERGY_BALL ], - [ 39, Moves.LEECH_SEED ], - [ 46, Moves.TERRAIN_PULSE ], - [ 52, Moves.PETAL_BLIZZARD ], - [ 58, Moves.PETAL_DANCE ], - ], - [Species.SQUAWKABILLY]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.PECK ], - [ 1, Moves.MIMIC ], - [ 6, Moves.QUICK_ATTACK ], - [ 10, Moves.TORMENT ], - [ 13, Moves.AERIAL_ACE ], - [ 17, Moves.FURY_ATTACK ], - [ 20, Moves.TAUNT ], - [ 24, Moves.UPROAR ], - [ 27, Moves.COPYCAT ], - [ 30, Moves.FLY ], - [ 34, Moves.FACADE ], - [ 38, Moves.SWAGGER ], - [ 42, Moves.BRAVE_BIRD ], - [ 47, Moves.ROOST ], - [ 52, Moves.REVERSAL ], - ], - [Species.NACLI]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 5, Moves.ROCK_THROW ], - [ 7, Moves.MUD_SHOT ], - [ 10, Moves.SMACK_DOWN ], - [ 13, Moves.ROCK_POLISH ], - [ 16, Moves.HEADBUTT ], - [ 20, Moves.IRON_DEFENSE ], - [ 25, Moves.RECOVER ], - [ 30, Moves.ROCK_SLIDE ], - [ 33, Moves.STEALTH_ROCK ], - [ 35, Moves.HEAVY_SLAM ], - [ 40, Moves.EARTHQUAKE ], - [ 45, Moves.STONE_EDGE ], - ], - [Species.NACLSTACK]: [ - [ EVOLVE_MOVE, Moves.SALT_CURE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 5, Moves.ROCK_THROW ], - [ 7, Moves.MUD_SHOT ], - [ 10, Moves.SMACK_DOWN ], - [ 13, Moves.ROCK_POLISH ], - [ 16, Moves.HEADBUTT ], - [ 20, Moves.IRON_DEFENSE ], - [ 30, Moves.RECOVER ], - [ 34, Moves.ROCK_SLIDE ], - [ 38, Moves.STEALTH_ROCK ], - [ 41, Moves.HEAVY_SLAM ], - [ 45, Moves.EARTHQUAKE ], - [ 51, Moves.STONE_EDGE ], - ], - [Species.GARGANACL]: [ - [ EVOLVE_MOVE, Moves.HAMMER_ARM ], - [ RELEARN_MOVE, Moves.IRON_DEFENSE ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.BLOCK ], - [ 1, Moves.ROCK_BLAST ], - [ 1, Moves.SMACK_DOWN ], // Previous Stage Move - [ 1, Moves.WIDE_GUARD ], - [ 5, Moves.ROCK_THROW ], - [ 7, Moves.MUD_SHOT ], - [ 10, Moves.ROCK_TOMB ], - [ 13, Moves.ROCK_POLISH ], - [ 16, Moves.HEADBUTT ], - [ 24, Moves.SALT_CURE ], - [ 30, Moves.RECOVER ], - [ 34, Moves.ROCK_SLIDE ], - [ 40, Moves.STEALTH_ROCK ], - [ 44, Moves.HEAVY_SLAM ], - [ 49, Moves.EARTHQUAKE ], - [ 54, Moves.STONE_EDGE ], - [ 60, Moves.EXPLOSION ], - ], - [Species.CHARCADET]: [ - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 1, Moves.ASTONISH ], - [ 8, Moves.CLEAR_SMOG ], - [ 12, Moves.FIRE_SPIN ], - [ 16, Moves.WILL_O_WISP ], - [ 20, Moves.NIGHT_SHADE ], - [ 24, Moves.FLAME_CHARGE ], - [ 28, Moves.INCINERATE ], - [ 32, Moves.LAVA_PLUME ], - ], - [Species.ARMAROUGE]: [ - [ EVOLVE_MOVE, Moves.PSYSHOCK ], - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.WIDE_GUARD ], - [ 1, Moves.MYSTICAL_FIRE ], - [ 8, Moves.CLEAR_SMOG ], - [ 12, Moves.FIRE_SPIN ], - [ 16, Moves.WILL_O_WISP ], - [ 20, Moves.NIGHT_SHADE ], - [ 24, Moves.FLAME_CHARGE ], - [ 28, Moves.INCINERATE ], - [ 32, Moves.LAVA_PLUME ], - [ 37, Moves.CALM_MIND ], - [ 42, Moves.ALLY_SWITCH ], - [ 48, Moves.FLAMETHROWER ], - [ 56, Moves.EXPANDING_FORCE ], - [ 62, Moves.ARMOR_CANNON ], - ], - [Species.CERULEDGE]: [ - [ EVOLVE_MOVE, Moves.SHADOW_CLAW ], - [ RELEARN_MOVE, Moves.NIGHT_SLASH ], - [ RELEARN_MOVE, Moves.SHADOW_SNEAK ], - [ RELEARN_MOVE, Moves.QUICK_GUARD ], - [ RELEARN_MOVE, Moves.SOLAR_BLADE ], - [ 1, Moves.EMBER ], - [ 1, Moves.LEER ], - [ 1, Moves.ASTONISH ], - [ 8, Moves.CLEAR_SMOG ], - [ 12, Moves.FIRE_SPIN ], - [ 16, Moves.WILL_O_WISP ], - [ 20, Moves.NIGHT_SHADE ], - [ 24, Moves.FLAME_CHARGE ], - [ 28, Moves.INCINERATE ], - [ 32, Moves.LAVA_PLUME ], - [ 37, Moves.SWORDS_DANCE ], - [ 42, Moves.ALLY_SWITCH ], - [ 48, Moves.BITTER_BLADE ], - [ 56, Moves.PSYCHO_CUT ], - [ 62, Moves.FLARE_BLITZ ], - ], - [Species.TADBULB]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.MUD_SLAP ], - [ 7, Moves.THUNDER_SHOCK ], - [ 11, Moves.WATER_GUN ], - [ 17, Moves.CHARGE ], - [ 21, Moves.SPARK ], - [ 24, Moves.MUD_SHOT ], - [ 25, Moves.FLAIL ], - [ 32, Moves.DISCHARGE ], - [ 36, Moves.WEATHER_BALL ], - [ 40, Moves.ELECTRIC_TERRAIN ], - [ 45, Moves.SUCKER_PUNCH ], - [ 50, Moves.ZAP_CANNON ], - ], - [Species.BELLIBOLT]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.SLACK_OFF ], - [ 7, Moves.THUNDER_SHOCK ], - [ 11, Moves.WATER_GUN ], - [ 17, Moves.CHARGE ], - [ 21, Moves.SPARK ], - [ 24, Moves.MUD_SHOT ], - [ 25, Moves.FLAIL ], - [ 32, Moves.DISCHARGE ], - [ 36, Moves.WEATHER_BALL ], - [ 40, Moves.ELECTRIC_TERRAIN ], - [ 45, Moves.SUCKER_PUNCH ], - [ 50, Moves.ZAP_CANNON ], - ], - [Species.WATTREL]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.PECK ], - [ 4, Moves.THUNDER_SHOCK ], - [ 7, Moves.QUICK_ATTACK ], - [ 11, Moves.PLUCK ], - [ 15, Moves.SPARK ], - [ 19, Moves.UPROAR ], - [ 23, Moves.ROOST ], - [ 27, Moves.DUAL_WINGBEAT ], - [ 32, Moves.AGILITY ], - [ 37, Moves.VOLT_SWITCH ], - [ 43, Moves.DISCHARGE ], - ], - [Species.KILOWATTREL]: [ - [ EVOLVE_MOVE, Moves.ELECTRO_BALL ], - [ 1, Moves.GROWL ], - [ 1, Moves.PECK ], - [ 4, Moves.THUNDER_SHOCK ], - [ 7, Moves.QUICK_ATTACK ], - [ 11, Moves.PLUCK ], - [ 15, Moves.SPARK ], - [ 19, Moves.UPROAR ], - [ 24, Moves.ROOST ], - [ 30, Moves.DUAL_WINGBEAT ], - [ 36, Moves.AGILITY ], - [ 43, Moves.VOLT_SWITCH ], - [ 48, Moves.DISCHARGE ], - [ 55, Moves.HURRICANE ], - ], - [Species.MASCHIFF]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.SCARY_FACE ], - [ 4, Moves.LICK ], - [ 7, Moves.SNARL ], - [ 10, Moves.HONE_CLAWS ], - [ 14, Moves.BITE ], - [ 18, Moves.ROAR ], - [ 22, Moves.HEADBUTT ], - [ 26, Moves.PAYBACK ], - [ 31, Moves.CRUNCH ], - [ 35, Moves.SWAGGER ], - [ 39, Moves.REVERSAL ], - [ 43, Moves.JAW_LOCK ], - [ 49, Moves.DOUBLE_EDGE ], - ], - [Species.MABOSSTIFF]: [ - [ EVOLVE_MOVE, Moves.COMEUPPANCE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.SCARY_FACE ], - [ 4, Moves.LICK ], - [ 7, Moves.SNARL ], - [ 10, Moves.HONE_CLAWS ], - [ 14, Moves.BITE ], - [ 18, Moves.ROAR ], - [ 22, Moves.HEADBUTT ], - [ 26, Moves.PAYBACK ], - [ 34, Moves.CRUNCH ], - [ 39, Moves.SWAGGER ], - [ 43, Moves.REVERSAL ], - [ 48, Moves.JAW_LOCK ], - [ 55, Moves.DOUBLE_EDGE ], - [ 60, Moves.OUTRAGE ], - ], - [Species.SHROODLE]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 5, Moves.ACID_SPRAY ], - [ 8, Moves.BITE ], - [ 8, Moves.FURY_SWIPES ], - [ 11, Moves.SWITCHEROO ], - [ 14, Moves.POISON_FANG ], - [ 18, Moves.FLATTER ], - [ 21, Moves.SLASH ], - [ 25, Moves.U_TURN ], - [ 29, Moves.POISON_JAB ], - [ 33, Moves.TAUNT ], - [ 36, Moves.SUBSTITUTE ], - [ 40, Moves.KNOCK_OFF ], - [ 45, Moves.GUNK_SHOT ], - ], - [Species.GRAFAIAI]: [ - [ EVOLVE_MOVE, Moves.DOODLE ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.BITE ], // Previous Stage Move - [ 5, Moves.ACID_SPRAY ], - [ 8, Moves.FURY_SWIPES ], - [ 11, Moves.SWITCHEROO ], - [ 14, Moves.POISON_FANG ], - [ 18, Moves.FLATTER ], - [ 21, Moves.SLASH ], - [ 25, Moves.U_TURN ], - [ 33, Moves.POISON_JAB ], - [ 37, Moves.TAUNT ], - [ 40, Moves.SUBSTITUTE ], - [ 45, Moves.KNOCK_OFF ], - [ 51, Moves.GUNK_SHOT ], - ], - [Species.BRAMBLIN]: [ - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.ROLLOUT ], - [ 1, Moves.ASTONISH ], - [ 5, Moves.ABSORB ], - [ 9, Moves.RAPID_SPIN ], - [ 13, Moves.BULLET_SEED ], - [ 17, Moves.INFESTATION ], - [ 21, Moves.HEX ], - [ 25, Moves.MEGA_DRAIN ], - [ 29, Moves.DISABLE ], - [ 35, Moves.PHANTOM_FORCE ], - [ 40, Moves.GIGA_DRAIN ], - [ 45, Moves.CURSE ], - [ 50, Moves.PAIN_SPLIT ], - [ 55, Moves.POWER_WHIP ], - ], - [Species.BRAMBLEGHAST]: [ - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.ROLLOUT ], - [ 1, Moves.ASTONISH ], - [ 5, Moves.ABSORB ], - [ 9, Moves.RAPID_SPIN ], - [ 13, Moves.BULLET_SEED ], - [ 17, Moves.INFESTATION ], - [ 21, Moves.HEX ], - [ 25, Moves.MEGA_DRAIN ], - [ 29, Moves.DISABLE ], - [ 35, Moves.PHANTOM_FORCE ], - [ 40, Moves.GIGA_DRAIN ], - [ 45, Moves.CURSE ], - [ 50, Moves.PAIN_SPLIT ], - [ 55, Moves.POWER_WHIP ], - ], - [Species.TOEDSCOOL]: [ - [ 1, Moves.WRAP ], - [ 1, Moves.MUD_SLAP ], - [ 4, Moves.ABSORB ], - [ 8, Moves.POISON_POWDER ], - [ 8, Moves.STUN_SPORE ], - [ 12, Moves.SUPERSONIC ], - [ 15, Moves.TACKLE ], - [ 16, Moves.MEGA_DRAIN ], - [ 20, Moves.SCREECH ], - [ 24, Moves.MUD_SHOT ], - [ 28, Moves.HEX ], - [ 32, Moves.SEED_BOMB ], - [ 36, Moves.SPORE ], - [ 40, Moves.GROWTH ], - [ 44, Moves.GIGA_DRAIN ], - [ 48, Moves.EARTH_POWER ], - [ 52, Moves.POWER_WHIP ], - ], - [Species.TOEDSCRUEL]: [ - [ 1, Moves.WRAP ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.REFLECT_TYPE ], - [ 4, Moves.ABSORB ], - [ 8, Moves.POISON_POWDER ], - [ 8, Moves.STUN_SPORE ], - [ 12, Moves.SUPERSONIC ], - [ 15, Moves.TACKLE ], - [ 16, Moves.MEGA_DRAIN ], - [ 20, Moves.SCREECH ], - [ 24, Moves.MUD_SHOT ], - [ 28, Moves.HEX ], - [ 34, Moves.SEED_BOMB ], - [ 40, Moves.SPORE ], - [ 44, Moves.GROWTH ], - [ 48, Moves.GIGA_DRAIN ], - [ 54, Moves.EARTH_POWER ], - [ 58, Moves.POWER_WHIP ], - ], - [Species.KLAWF]: [ - [ 1, Moves.ROCK_THROW ], - [ 6, Moves.HARDEN ], - [ 9, Moves.ROCK_SMASH ], - [ 13, Moves.ROCK_TOMB ], - [ 17, Moves.METAL_CLAW ], - [ 21, Moves.PROTECT ], - [ 24, Moves.ROCK_BLAST ], - [ 29, Moves.X_SCISSOR ], - [ 33, Moves.SWORDS_DANCE ], - [ 37, Moves.FLAIL ], - [ 42, Moves.ROCK_SLIDE ], - [ 47, Moves.HIGH_HORSEPOWER ], - [ 51, Moves.IRON_DEFENSE ], - [ 56, Moves.GUILLOTINE ], - ], - [Species.CAPSAKID]: [ - [ 1, Moves.LEER ], - [ 1, Moves.LEAFAGE ], - [ 4, Moves.BITE ], - [ 10, Moves.GROWTH ], - [ 13, Moves.RAZOR_LEAF ], - [ 17, Moves.SUNNY_DAY ], - [ 21, Moves.BULLET_SEED ], - [ 24, Moves.HEADBUTT ], - [ 28, Moves.ZEN_HEADBUTT ], - [ 38, Moves.CRUNCH ], - [ 44, Moves.SEED_BOMB ], - [ 48, Moves.SOLAR_BEAM ], - ], - [Species.SCOVILLAIN]: [ - [ EVOLVE_MOVE, Moves.FLAMETHROWER ], - [ EVOLVE_MOVE, Moves.SPICY_EXTRACT ], - [ 1, Moves.LEER ], - [ 1, Moves.FIRE_FANG ], - [ 1, Moves.LEAFAGE ], - [ 4, Moves.BITE ], - [ 10, Moves.GROWTH ], - [ 13, Moves.RAZOR_LEAF ], - [ 17, Moves.SUNNY_DAY ], - [ 21, Moves.BULLET_SEED ], - [ 24, Moves.HEADBUTT ], - [ 28, Moves.ZEN_HEADBUTT ], - [ 33, Moves.WORRY_SEED ], - [ 38, Moves.CRUNCH ], - [ 44, Moves.SEED_BOMB ], - [ 48, Moves.SOLAR_BEAM ], - [ 48, Moves.OVERHEAT ], - ], - [Species.RELLOR]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.DEFENSE_CURL ], - [ 4, Moves.SAND_ATTACK ], - [ 7, Moves.STRUGGLE_BUG ], - [ 11, Moves.ROLLOUT ], - [ 15, Moves.MUD_SHOT ], - [ 20, Moves.BUG_BITE ], - [ 24, Moves.TAKE_DOWN ], - [ 29, Moves.DIG ], - [ 35, Moves.LUNGE ], - ], - [Species.RABSCA]: [ - [ EVOLVE_MOVE, Moves.REVIVAL_BLESSING ], - [ RELEARN_MOVE, Moves.SAFEGUARD ], - [ RELEARN_MOVE, Moves.PSYCH_UP ], - [ 1, Moves.TACKLE ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.MUD_SHOT ], // Previous Stage Move - [ 1, Moves.DIG ], // Previous Stage Move - [ 4, Moves.SAND_ATTACK ], - [ 7, Moves.STRUGGLE_BUG ], - [ 11, Moves.ROLLOUT ], - [ 15, Moves.PSYBEAM ], - [ 20, Moves.BUG_BITE ], - [ 24, Moves.TAKE_DOWN ], - [ 29, Moves.EXTRASENSORY ], - [ 35, Moves.LUNGE ], - [ 40, Moves.POWER_SWAP ], - [ 40, Moves.GUARD_SWAP ], - [ 40, Moves.SPEED_SWAP ], - [ 45, Moves.BUG_BUZZ ], - [ 50, Moves.PSYCHIC ], - ], - [Species.FLITTLE]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.PECK ], - [ 5, Moves.CONFUSION ], - [ 8, Moves.BABY_DOLL_EYES ], - [ 11, Moves.DISARMING_VOICE ], - [ 15, Moves.QUICK_ATTACK ], - [ 19, Moves.PSYBEAM ], - [ 24, Moves.PLUCK ], - [ 29, Moves.AGILITY ], - [ 34, Moves.UPROAR ], - ], - [Species.ESPATHRA]: [ - [ EVOLVE_MOVE, Moves.LUMINA_CRASH ], - [ 1, Moves.GROWL ], - [ 1, Moves.PECK ], - [ 1, Moves.DRILL_PECK ], - [ 1, Moves.FEATHER_DANCE ], - [ 5, Moves.CONFUSION ], - [ 8, Moves.BABY_DOLL_EYES ], - [ 11, Moves.DISARMING_VOICE ], - [ 15, Moves.QUICK_ATTACK ], - [ 19, Moves.PSYBEAM ], - [ 24, Moves.PLUCK ], - [ 29, Moves.AGILITY ], - [ 34, Moves.UPROAR ], - [ 43, Moves.DAZZLING_GLEAM ], - [ 49, Moves.PSYCHIC ], - [ 54, Moves.LAST_RESORT ], - ], - [Species.TINKATINK]: [ - [ 1, Moves.ASTONISH ], - [ 1, Moves.FAIRY_WIND ], - [ 5, Moves.BABY_DOLL_EYES ], - [ 8, Moves.METAL_CLAW ], - [ 11, Moves.COVET ], - [ 14, Moves.ROCK_SMASH ], - [ 17, Moves.DRAINING_KISS ], - [ 21, Moves.SWEET_KISS ], - [ 24, Moves.BRUTAL_SWING ], - [ 27, Moves.SLAM ], - [ 31, Moves.FLASH_CANNON ], - [ 35, Moves.PLAY_ROUGH ], - [ 39, Moves.FAKE_OUT ], - [ 43, Moves.FLATTER ], - [ 47, Moves.SKITTER_SMACK ], - [ 52, Moves.KNOCK_OFF ], - ], - [Species.TINKATUFF]: [ - [ 1, Moves.ASTONISH ], - [ 1, Moves.FAIRY_WIND ], - [ 5, Moves.BABY_DOLL_EYES ], - [ 8, Moves.METAL_CLAW ], - [ 11, Moves.COVET ], - [ 14, Moves.ROCK_SMASH ], - [ 17, Moves.DRAINING_KISS ], - [ 21, Moves.SWEET_KISS ], - [ 24, Moves.BRUTAL_SWING ], - [ 27, Moves.SLAM ], - [ 31, Moves.FLASH_CANNON ], - [ 35, Moves.PLAY_ROUGH ], - [ 39, Moves.FAKE_OUT ], - [ 43, Moves.FLATTER ], - [ 47, Moves.SKITTER_SMACK ], - [ 52, Moves.KNOCK_OFF ], - ], - [Species.TINKATON]: [ - [ EVOLVE_MOVE, Moves.GIGATON_HAMMER ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.FAIRY_WIND ], - [ 5, Moves.BABY_DOLL_EYES ], - [ 8, Moves.METAL_CLAW ], - [ 11, Moves.COVET ], - [ 14, Moves.ROCK_SMASH ], - [ 17, Moves.DRAINING_KISS ], - [ 21, Moves.SWEET_KISS ], - [ 24, Moves.BRUTAL_SWING ], - [ 27, Moves.SLAM ], - [ 31, Moves.FLASH_CANNON ], - [ 35, Moves.PLAY_ROUGH ], - [ 39, Moves.FAKE_OUT ], - [ 43, Moves.FLATTER ], - [ 47, Moves.SKITTER_SMACK ], - [ 52, Moves.KNOCK_OFF ], - ], - [Species.WIGLETT]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.WATER_GUN ], - [ 4, Moves.MUD_SLAP ], - [ 8, Moves.WRAP ], - [ 12, Moves.AQUA_JET ], - [ 20, Moves.SLAM ], - [ 20, Moves.WATER_PULSE ], - [ 24, Moves.HEADBUTT ], - [ 28, Moves.DIG ], - [ 32, Moves.SUCKER_PUNCH ], - [ 36, Moves.THROAT_CHOP ], - [ 40, Moves.LIQUIDATION ], - ], - [Species.WUGTRIO]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.WRAP ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.MUD_SLAP ], - [ 12, Moves.AQUA_JET ], - [ 16, Moves.SLAM ], - [ 20, Moves.WATER_PULSE ], - [ 24, Moves.HEADBUTT ], - [ 30, Moves.TRIPLE_DIVE ], - [ 36, Moves.DIG ], - [ 42, Moves.SUCKER_PUNCH ], - [ 48, Moves.THROAT_CHOP ], - [ 54, Moves.LIQUIDATION ], - ], - [Species.BOMBIRDIER]: [ - [ 1, Moves.WING_ATTACK ], - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 1, Moves.MEMENTO ], - [ 1, Moves.HONE_CLAWS ], - [ 7, Moves.THIEF ], - [ 11, Moves.ROCK_THROW ], - [ 16, Moves.WHIRLWIND ], - [ 20, Moves.PLUCK ], - [ 24, Moves.TORMENT ], - [ 29, Moves.ROCK_TOMB ], - [ 36, Moves.PAYBACK ], - [ 42, Moves.DUAL_WINGBEAT ], - [ 47, Moves.ROCK_SLIDE ], - [ 53, Moves.KNOCK_OFF ], - [ 60, Moves.PARTING_SHOT ], - ], - [Species.FINIZEN]: [ - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.WATER_GUN ], - [ 7, Moves.ASTONISH ], - [ 10, Moves.FOCUS_ENERGY ], - [ 13, Moves.AQUA_JET ], - [ 17, Moves.DOUBLE_HIT ], - [ 21, Moves.DIVE ], - [ 25, Moves.CHARM ], - [ 29, Moves.ACROBATICS ], - [ 34, Moves.ENCORE ], - [ 39, Moves.AQUA_TAIL ], - [ 44, Moves.MIST ], - [ 50, Moves.HYDRO_PUMP ], - ], - [Species.PALAFIN]: [ - [ EVOLVE_MOVE, Moves.FLIP_TURN ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.JET_PUNCH ], - [ 7, Moves.ASTONISH ], - [ 10, Moves.FOCUS_ENERGY ], - [ 13, Moves.AQUA_JET ], - [ 17, Moves.DOUBLE_HIT ], - [ 21, Moves.DIVE ], - [ 25, Moves.CHARM ], - [ 29, Moves.ACROBATICS ], - [ 34, Moves.ENCORE ], - [ 39, Moves.AQUA_TAIL ], - [ 44, Moves.MIST ], - [ 50, Moves.HYDRO_PUMP ], - [ 55, Moves.FOCUS_PUNCH ], - [ 61, Moves.WAVE_CRASH ], - ], - [Species.VAROOM]: [ - [ 1, Moves.LICK ], - [ 1, Moves.POISON_GAS ], - [ 4, Moves.SMOG ], - [ 7, Moves.TAUNT ], - [ 10, Moves.ASSURANCE ], - [ 13, Moves.SLUDGE ], - [ 17, Moves.GYRO_BALL ], - [ 21, Moves.HEADBUTT ], - [ 25, Moves.SCREECH ], - [ 28, Moves.IRON_HEAD ], - [ 32, Moves.SWAGGER ], - [ 36, Moves.POISON_JAB ], - [ 41, Moves.UPROAR ], - [ 46, Moves.SPIN_OUT ], - [ 50, Moves.GUNK_SHOT ], - ], - [Species.REVAVROOM]: [ - [ EVOLVE_MOVE, Moves.SHIFT_GEAR ], - [ 1, Moves.LICK ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.MAGNET_RISE ], - [ 4, Moves.SMOG ], - [ 7, Moves.TAUNT ], - [ 10, Moves.ASSURANCE ], - [ 13, Moves.SLUDGE ], - [ 17, Moves.GYRO_BALL ], - [ 21, Moves.HEADBUTT ], - [ 25, Moves.SCREECH ], - [ 28, Moves.IRON_HEAD ], - [ 32, Moves.SWAGGER ], - [ 36, Moves.POISON_JAB ], - [ 46, Moves.UPROAR ], - [ 52, Moves.SPIN_OUT ], - [ 58, Moves.GUNK_SHOT ], - ], - [Species.CYCLIZAR]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 7, Moves.RAPID_SPIN ], - [ 11, Moves.TAUNT ], - [ 14, Moves.BREAKING_SWIPE ], - [ 18, Moves.QUICK_ATTACK ], - [ 23, Moves.BITE ], - [ 27, Moves.U_TURN ], - [ 31, Moves.SHED_TAIL ], - [ 36, Moves.DRAGON_CLAW ], - [ 40, Moves.SHIFT_GEAR ], - [ 45, Moves.DRAGON_PULSE ], - [ 51, Moves.DOUBLE_EDGE ], - [ 57, Moves.DRAGON_RUSH ], - ], - [Species.ORTHWORM]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.WRAP ], - [ 1, Moves.HARDEN ], - [ 7, Moves.MUD_SLAP ], - [ 12, Moves.SMACK_DOWN ], - [ 16, Moves.BULLDOZE ], - [ 21, Moves.IRON_HEAD ], - [ 26, Moves.TAKE_DOWN ], - [ 30, Moves.DIG ], - [ 34, Moves.SANDSTORM ], - [ 38, Moves.IRON_DEFENSE ], - [ 43, Moves.IRON_TAIL ], - [ 47, Moves.EARTHQUAKE ], - [ 52, Moves.SHED_TAIL ], - ], - [Species.GLIMMET]: [ - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.HARDEN ], - [ 1, Moves.SMACK_DOWN ], - [ 7, Moves.ACID_SPRAY ], - [ 11, Moves.ANCIENT_POWER ], - [ 15, Moves.ROCK_POLISH ], - [ 18, Moves.STEALTH_ROCK ], - [ 22, Moves.VENOSHOCK ], - [ 26, Moves.SANDSTORM ], - [ 29, Moves.SELF_DESTRUCT ], - [ 33, Moves.ROCK_SLIDE ], - [ 37, Moves.POWER_GEM ], - [ 41, Moves.ACID_ARMOR ], - [ 46, Moves.SLUDGE_WAVE ], - ], - [Species.GLIMMORA]: [ - [ EVOLVE_MOVE, Moves.MORTAL_SPIN ], - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.HARDEN ], - [ 1, Moves.TOXIC_SPIKES ], - [ 1, Moves.SMACK_DOWN ], - [ 1, Moves.SPIKY_SHIELD ], - [ 7, Moves.ACID_SPRAY ], - [ 11, Moves.ANCIENT_POWER ], - [ 15, Moves.ROCK_POLISH ], - [ 18, Moves.STEALTH_ROCK ], - [ 22, Moves.VENOSHOCK ], - [ 26, Moves.SANDSTORM ], - [ 29, Moves.SELF_DESTRUCT ], - [ 33, Moves.ROCK_SLIDE ], - [ 39, Moves.POWER_GEM ], - [ 44, Moves.ACID_ARMOR ], - [ 50, Moves.SLUDGE_WAVE ], - ], - [Species.GREAVARD]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 3, Moves.LICK ], - [ 6, Moves.TAIL_WHIP ], - [ 6, Moves.BITE ], - [ 9, Moves.ROAR ], - [ 12, Moves.HEADBUTT ], - [ 16, Moves.DIG ], - [ 24, Moves.REST ], - [ 28, Moves.CRUNCH ], - [ 32, Moves.PLAY_ROUGH ], - [ 37, Moves.HELPING_HAND ], - [ 41, Moves.PHANTOM_FORCE ], - [ 46, Moves.CHARM ], - [ 52, Moves.DOUBLE_EDGE ], - ], - [Species.HOUNDSTONE]: [ - [ EVOLVE_MOVE, Moves.LAST_RESPECTS ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 3, Moves.LICK ], - [ 6, Moves.TAIL_WHIP ], - [ 6, Moves.BITE ], - [ 9, Moves.ROAR ], - [ 12, Moves.HEADBUTT ], - [ 16, Moves.DIG ], - [ 24, Moves.REST ], - [ 28, Moves.CRUNCH ], - [ 36, Moves.PLAY_ROUGH ], - [ 41, Moves.HELPING_HAND ], - [ 46, Moves.PHANTOM_FORCE ], - [ 51, Moves.CHARM ], - [ 58, Moves.DOUBLE_EDGE ], - ], - [Species.FLAMIGO]: [ - [ 1, Moves.PECK ], - [ 1, Moves.COPYCAT ], - [ 5, Moves.DOUBLE_KICK ], - [ 9, Moves.DETECT ], - [ 12, Moves.WING_ATTACK ], - [ 15, Moves.FOCUS_ENERGY ], - [ 18, Moves.LOW_KICK ], - [ 21, Moves.FEINT ], - [ 27, Moves.PAYBACK ], - [ 31, Moves.ROOST ], - [ 35, Moves.AIR_SLASH ], - [ 39, Moves.MEGA_KICK ], - [ 44, Moves.WIDE_GUARD ], - [ 48, Moves.THROAT_CHOP ], - [ 54, Moves.BRAVE_BIRD ], - ], - [Species.CETODDLE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.POWDER_SNOW ], - [ 6, Moves.GROWL ], - [ 9, Moves.ECHOED_VOICE ], - [ 12, Moves.ICE_SHARD ], - [ 15, Moves.REST ], - [ 19, Moves.TAKE_DOWN ], - [ 25, Moves.FLAIL ], - [ 27, Moves.AVALANCHE ], - [ 31, Moves.BOUNCE ], - [ 36, Moves.BODY_SLAM ], - [ 40, Moves.AMNESIA ], - [ 44, Moves.ICE_SPINNER ], - [ 49, Moves.DOUBLE_EDGE ], - [ 53, Moves.BLIZZARD ], - ], - [Species.CETITAN]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.POWDER_SNOW ], - [ 6, Moves.GROWL ], - [ 9, Moves.ECHOED_VOICE ], - [ 12, Moves.ICE_SHARD ], - [ 15, Moves.REST ], - [ 19, Moves.TAKE_DOWN ], - [ 25, Moves.FLAIL ], - [ 27, Moves.AVALANCHE ], - [ 31, Moves.BOUNCE ], - [ 36, Moves.BODY_SLAM ], - [ 40, Moves.AMNESIA ], - [ 44, Moves.ICE_SPINNER ], - [ 49, Moves.DOUBLE_EDGE ], - [ 53, Moves.BLIZZARD ], - ], - [Species.VELUZA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.AQUA_JET ], - [ 7, Moves.PLUCK ], - [ 11, Moves.WATER_PULSE ], - [ 15, Moves.FOCUS_ENERGY ], - [ 20, Moves.SLASH ], - [ 25, Moves.AQUA_CUTTER ], - [ 30, Moves.FILLET_AWAY ], - [ 35, Moves.NIGHT_SLASH ], - [ 40, Moves.PSYCHO_CUT ], - [ 45, Moves.LIQUIDATION ], - [ 50, Moves.CRUNCH ], - [ 55, Moves.FINAL_GAMBIT ], - ], - [Species.DONDOZO]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.WATER_GUN ], - [ 5, Moves.TICKLE ], - [ 10, Moves.FLAIL ], - [ 15, Moves.REST ], - [ 15, Moves.SLEEP_TALK ], - [ 20, Moves.DIVE ], - [ 25, Moves.NOBLE_ROAR ], - [ 30, Moves.SOAK ], - [ 35, Moves.BODY_SLAM ], - [ 40, Moves.AQUA_TAIL ], - [ 45, Moves.RAIN_DANCE ], - [ 50, Moves.ORDER_UP ], - [ 55, Moves.HEAVY_SLAM ], - [ 60, Moves.DOUBLE_EDGE ], - [ 65, Moves.WAVE_CRASH ], - ], - [Species.TATSUGIRI]: [ - [ 1, Moves.WATER_GUN ], - [ 1, Moves.SPLASH ], - [ 6, Moves.HARDEN ], - [ 12, Moves.HELPING_HAND ], - [ 17, Moves.WATER_PULSE ], - [ 23, Moves.SOAK ], - [ 28, Moves.TAUNT ], - [ 34, Moves.MEMENTO ], - [ 39, Moves.MUDDY_WATER ], - [ 43, Moves.NASTY_PLOT ], - [ 47, Moves.MIRROR_COAT ], - [ 52, Moves.DRAGON_PULSE ], - ], - [Species.ANNIHILAPE]: [ - [ EVOLVE_MOVE, Moves.SHADOW_PUNCH ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.COUNTER ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.COVET ], // Previous Stage Move - [ 1, Moves.FLING ], - [ 5, Moves.FURY_SWIPES ], - [ 8, Moves.LOW_KICK ], - [ 12, Moves.SEISMIC_TOSS ], - [ 17, Moves.SWAGGER ], - [ 22, Moves.CROSS_CHOP ], - [ 26, Moves.ASSURANCE ], - [ 30, Moves.THRASH ], - [ 35, Moves.RAGE_FIST ], - [ 39, Moves.CLOSE_COMBAT ], - [ 44, Moves.SCREECH ], - [ 48, Moves.STOMPING_TANTRUM ], - [ 53, Moves.OUTRAGE ], - [ 57, Moves.FINAL_GAMBIT ], - ], - [Species.CLODSIRE]: [ - [ EVOLVE_MOVE, Moves.AMNESIA ], - [ 1, Moves.TACKLE ], // Previous Stage Move - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.POISON_STING ], - [ 4, Moves.TOXIC_SPIKES ], - [ 8, Moves.MUD_SHOT ], - [ 12, Moves.POISON_TAIL ], - [ 16, Moves.SLAM ], - [ 21, Moves.YAWN ], - [ 24, Moves.POISON_JAB ], - [ 30, Moves.SLUDGE_WAVE ], - [ 36, Moves.MEGAHORN ], - [ 40, Moves.TOXIC ], - [ 48, Moves.EARTHQUAKE ], - ], - [Species.FARIGIRAF]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.POWER_SWAP ], - [ 1, Moves.GUARD_SWAP ], - [ 5, Moves.CONFUSION ], - [ 10, Moves.ASSURANCE ], - [ 14, Moves.STOMP ], - [ 19, Moves.PSYBEAM ], - [ 23, Moves.AGILITY ], - [ 28, Moves.DOUBLE_HIT ], - [ 32, Moves.TWIN_BEAM ], - [ 37, Moves.CRUNCH ], - [ 41, Moves.BATON_PASS ], - [ 46, Moves.NASTY_PLOT ], - [ 50, Moves.PSYCHIC ], - ], - [Species.DUDUNSPARCE]: [ - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.FLAIL ], - [ 1, Moves.TACKLE ], // Previous Stage Move, Custom - [ 4, Moves.MUD_SLAP ], - [ 8, Moves.ROLLOUT ], - [ 12, Moves.GLARE ], - [ 16, Moves.SCREECH ], - [ 20, Moves.ANCIENT_POWER ], - [ 24, Moves.DRILL_RUN ], - [ 28, Moves.YAWN ], - [ 32, Moves.HYPER_DRILL ], - [ 36, Moves.ROOST ], - [ 40, Moves.DRAGON_RUSH ], - [ 44, Moves.COIL ], - [ 48, Moves.DOUBLE_EDGE ], - [ 52, Moves.ENDEAVOR ], - [ 56, Moves.HURRICANE ], - [ 62, Moves.BOOMBURST ], - ], - [Species.KINGAMBIT]: [ - [ EVOLVE_MOVE, Moves.KOWTOW_CLEAVE ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.METAL_BURST ], - [ 15, Moves.TORMENT ], - [ 20, Moves.SCARY_FACE ], - [ 25, Moves.ASSURANCE ], - [ 30, Moves.METAL_SOUND ], - [ 35, Moves.SLASH ], - [ 40, Moves.NIGHT_SLASH ], - [ 45, Moves.IRON_DEFENSE ], - [ 50, Moves.RETALIATE ], - [ 57, Moves.IRON_HEAD ], - [ 64, Moves.SWORDS_DANCE ], - [ 71, Moves.GUILLOTINE ], - ], - [Species.GREAT_TUSK]: [ - [ 1, Moves.HORN_ATTACK ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.ROLLOUT ], - [ 1, Moves.SUNNY_DAY ], - [ 7, Moves.BULLDOZE ], - [ 14, Moves.TAUNT ], - [ 21, Moves.RAPID_SPIN ], - [ 28, Moves.BRICK_BREAK ], - [ 35, Moves.STOMPING_TANTRUM ], - [ 42, Moves.KNOCK_OFF ], - [ 49, Moves.EARTHQUAKE ], - [ 56, Moves.GIGA_IMPACT ], - [ 63, Moves.CLOSE_COMBAT ], - [ 70, Moves.ENDEAVOR ], - [ 77, Moves.MEGAHORN ], - [ 84, Moves.HEAD_SMASH ], - [ 91, Moves.HEADLONG_RUSH ], - ], - [Species.SCREAM_TAIL]: [ - [ RELEARN_MOVE, Moves.SUNNY_DAY ], - [ 1, Moves.POUND ], - [ 1, Moves.SING ], - [ 1, Moves.DISABLE ], - [ 7, Moves.HOWL ], - [ 14, Moves.NOBLE_ROAR ], - [ 21, Moves.BITE ], - [ 28, Moves.BODY_SLAM ], - [ 35, Moves.REST ], - [ 42, Moves.PLAY_ROUGH ], - [ 49, Moves.HYPER_VOICE ], - [ 56, Moves.PSYCHIC_FANGS ], - [ 63, Moves.CRUNCH ], - [ 70, Moves.WISH ], - [ 77, Moves.GYRO_BALL ], - [ 84, Moves.PERISH_SONG ], - [ 91, Moves.BOOMBURST ], - ], - [Species.BRUTE_BONNET]: [ - [ RELEARN_MOVE, Moves.SUNNY_DAY ], - [ 1, Moves.ABSORB ], - [ 1, Moves.GROWTH ], - [ 1, Moves.ASTONISH ], - [ 7, Moves.STUN_SPORE ], - [ 14, Moves.MEGA_DRAIN ], - [ 21, Moves.SYNTHESIS ], - [ 28, Moves.CLEAR_SMOG ], - [ 35, Moves.PAYBACK ], - [ 42, Moves.THRASH ], - [ 49, Moves.GIGA_DRAIN ], - [ 56, Moves.SUCKER_PUNCH ], - [ 63, Moves.SPORE ], - [ 70, Moves.INGRAIN ], - [ 77, Moves.RAGE_POWDER ], - [ 91, Moves.SOLAR_BEAM ], - ], - [Species.FLUTTER_MANE]: [ - [ RELEARN_MOVE, Moves.SUNNY_DAY ], - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.SPITE ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.PSYBEAM ], // Custom, moved from 7 to 1 - [ 14, Moves.MEAN_LOOK ], - [ 21, Moves.MEMENTO ], - [ 28, Moves.WISH ], - [ 35, Moves.DAZZLING_GLEAM ], - [ 42, Moves.SHADOW_BALL ], - [ 49, Moves.MYSTICAL_FIRE ], - [ 56, Moves.POWER_GEM ], - [ 63, Moves.PSYSHOCK ], - [ 70, Moves.PHANTOM_FORCE ], - [ 77, Moves.PAIN_SPLIT ], - [ 84, Moves.MOONBLAST ], - [ 91, Moves.PERISH_SONG ], - ], - [Species.SLITHER_WING]: [ - [ RELEARN_MOVE, Moves.SUNNY_DAY ], - [ 1, Moves.GUST ], - [ 1, Moves.EMBER ], - [ 1, Moves.BUG_BITE ], - [ 7, Moves.POISON_POWDER ], - [ 7, Moves.STUN_SPORE ], - [ 14, Moves.FLAME_CHARGE ], - [ 21, Moves.STOMP ], - [ 28, Moves.LOW_SWEEP ], - [ 35, Moves.MORNING_SUN ], - [ 42, Moves.LUNGE ], - [ 49, Moves.SUPERPOWER ], - [ 56, Moves.BULK_UP ], - [ 63, Moves.DUAL_WINGBEAT ], - [ 70, Moves.FIRST_IMPRESSION ], - [ 77, Moves.WHIRLWIND ], - [ 84, Moves.LEECH_LIFE ], - [ 91, Moves.THRASH ], - ], - [Species.SANDY_SHOCKS]: [ - [ RELEARN_MOVE, Moves.SUNNY_DAY ], - [ 1, Moves.SUPERSONIC ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.ELECTRIC_TERRAIN ], - [ 7, Moves.SPARK ], - [ 14, Moves.BULLDOZE ], - [ 21, Moves.CHARGE_BEAM ], - [ 28, Moves.TRI_ATTACK ], - [ 35, Moves.SCREECH ], - [ 42, Moves.HEAVY_SLAM ], - [ 49, Moves.METAL_SOUND ], - [ 56, Moves.DISCHARGE ], - [ 63, Moves.EARTH_POWER ], - [ 70, Moves.MIRROR_COAT ], - [ 77, Moves.GRAVITY ], - [ 84, Moves.ZAP_CANNON ], - [ 91, Moves.MAGNETIC_FLUX ], - ], - [Species.IRON_TREADS]: [ - [ 1, Moves.HORN_ATTACK ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.ROLLOUT ], - [ 1, Moves.ELECTRIC_TERRAIN ], - [ 7, Moves.BULLDOZE ], - [ 21, Moves.RAPID_SPIN ], - [ 28, Moves.IRON_HEAD ], - [ 35, Moves.STOMPING_TANTRUM ], - [ 42, Moves.KNOCK_OFF ], - [ 49, Moves.EARTHQUAKE ], - [ 56, Moves.HEAVY_SLAM ], - [ 63, Moves.WILD_CHARGE ], - [ 70, Moves.ENDEAVOR ], - [ 77, Moves.MEGAHORN ], - [ 84, Moves.GIGA_IMPACT ], - [ 91, Moves.STEEL_ROLLER ], - ], - [Species.IRON_BUNDLE]: [ - [ RELEARN_MOVE, Moves.ELECTRIC_TERRAIN ], - [ 1, Moves.PRESENT ], - [ 1, Moves.WATER_GUN ], // Custom - [ 7, Moves.POWDER_SNOW ], - [ 14, Moves.WHIRLPOOL ], - [ 21, Moves.TAKE_DOWN ], - [ 28, Moves.DRILL_PECK ], - [ 35, Moves.HELPING_HAND ], - [ 42, Moves.FREEZE_DRY ], - [ 49, Moves.FLIP_TURN ], - [ 56, Moves.ICE_BEAM ], - [ 63, Moves.AGILITY ], - [ 70, Moves.SNOWSCAPE ], - [ 77, Moves.HYDRO_PUMP ], - [ 84, Moves.AURORA_VEIL ], - [ 91, Moves.BLIZZARD ], - ], - [Species.IRON_HANDS]: [ - [ RELEARN_MOVE, Moves.ELECTRIC_TERRAIN ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.ARM_THRUST ], - [ 7, Moves.FAKE_OUT ], - [ 14, Moves.WHIRLWIND ], - [ 21, Moves.THUNDER_PUNCH ], - [ 28, Moves.SLAM ], - [ 35, Moves.FORCE_PALM ], - [ 42, Moves.SEISMIC_TOSS ], - [ 49, Moves.CHARGE ], - [ 56, Moves.WILD_CHARGE ], - [ 63, Moves.CLOSE_COMBAT ], - [ 70, Moves.DETECT ], - [ 77, Moves.HEAVY_SLAM ], - [ 84, Moves.BELLY_DRUM ], - [ 91, Moves.FOCUS_PUNCH ], - ], - [Species.IRON_JUGULIS]: [ - [ RELEARN_MOVE, Moves.ELECTRIC_TERRAIN ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.TRI_ATTACK ], - [ 1, Moves.AIR_CUTTER ], - [ 1, Moves.WORK_UP ], - [ 1, Moves.ELECTRIC_TERRAIN ], - [ 7, Moves.ROAR ], - [ 14, Moves.ASSURANCE ], - [ 21, Moves.DRAGON_BREATH ], - [ 28, Moves.SNARL ], - [ 35, Moves.CRUNCH ], - [ 42, Moves.HYPER_VOICE ], - [ 56, Moves.AIR_SLASH ], - [ 63, Moves.KNOCK_OFF ], - [ 70, Moves.DARK_PULSE ], - [ 77, Moves.OUTRAGE ], - [ 84, Moves.DRAGON_PULSE ], - [ 91, Moves.HYPER_BEAM ], - ], - [Species.IRON_MOTH]: [ - [ RELEARN_MOVE, Moves.ELECTRIC_TERRAIN ], - [ 1, Moves.GUST ], - [ 1, Moves.WHIRLWIND ], - [ 1, Moves.EMBER ], - [ 1, Moves.ACID_SPRAY ], - [ 7, Moves.STRUGGLE_BUG ], - [ 14, Moves.FIRE_SPIN ], - [ 21, Moves.TAKE_DOWN ], - [ 28, Moves.LUNGE ], - [ 35, Moves.SCREECH ], - [ 42, Moves.DISCHARGE ], - [ 49, Moves.SLUDGE_WAVE ], - [ 56, Moves.FIERY_DANCE ], - [ 63, Moves.METAL_SOUND ], - [ 70, Moves.MORNING_SUN ], - [ 77, Moves.HURRICANE ], - [ 84, Moves.BUG_BUZZ ], - [ 91, Moves.OVERHEAT ], - ], - [Species.IRON_THORNS]: [ - [ RELEARN_MOVE, Moves.ELECTRIC_TERRAIN ], - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.IRON_DEFENSE ], - [ 1, Moves.THUNDER_FANG ], - [ 1, Moves.ICE_FANG ], - [ 1, Moves.FIRE_FANG ], - [ 7, Moves.SCREECH ], - [ 21, Moves.ROCK_TOMB ], - [ 28, Moves.BITE ], - [ 35, Moves.CHARGE ], - [ 42, Moves.ROCK_SLIDE ], - [ 49, Moves.SANDSTORM ], - [ 56, Moves.WILD_CHARGE ], - [ 63, Moves.PIN_MISSILE ], - [ 70, Moves.EARTHQUAKE ], - [ 77, Moves.STEALTH_ROCK ], - [ 84, Moves.STONE_EDGE ], - [ 91, Moves.GIGA_IMPACT ], - ], - [Species.FRIGIBAX]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.DRAGON_TAIL ], - [ 6, Moves.ICY_WIND ], - [ 12, Moves.DRAGON_BREATH ], - [ 18, Moves.FOCUS_ENERGY ], - [ 24, Moves.BITE ], - [ 29, Moves.ICE_FANG ], - [ 32, Moves.DRAGON_CLAW ], - [ 36, Moves.TAKE_DOWN ], - [ 40, Moves.ICE_BEAM ], - [ 44, Moves.CRUNCH ], - [ 48, Moves.ICICLE_CRASH ], - ], - [Species.ARCTIBAX]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.DRAGON_TAIL ], - [ 6, Moves.ICY_WIND ], - [ 12, Moves.DRAGON_BREATH ], - [ 18, Moves.FOCUS_ENERGY ], - [ 24, Moves.BITE ], - [ 29, Moves.ICE_FANG ], - [ 32, Moves.DRAGON_CLAW ], // Previous Stage Move, Frigibax Level - [ 40, Moves.TAKE_DOWN ], - [ 45, Moves.ICE_BEAM ], - [ 50, Moves.CRUNCH ], - [ 55, Moves.ICICLE_CRASH ], - ], - [Species.BAXCALIBUR]: [ - [ EVOLVE_MOVE, Moves.GLAIVE_RUSH ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.ICE_SHARD ], - [ 1, Moves.DRAGON_TAIL ], - [ 1, Moves.BREAKING_SWIPE ], - [ 1, Moves.SNOWSCAPE ], - [ 6, Moves.ICY_WIND ], - [ 12, Moves.DRAGON_BREATH ], - [ 18, Moves.FOCUS_ENERGY ], - [ 24, Moves.BITE ], - [ 29, Moves.ICE_FANG ], - [ 35, Moves.DRAGON_CLAW ], - [ 42, Moves.TAKE_DOWN ], - [ 48, Moves.ICE_BEAM ], - [ 55, Moves.CRUNCH ], - [ 62, Moves.ICICLE_CRASH ], - ], - [Species.GIMMIGHOUL]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.ASTONISH ], - ], - [Species.GHOLDENGO]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.ASTONISH ], - [ 7, Moves.NIGHT_SHADE ], - [ 14, Moves.CONFUSE_RAY ], - [ 21, Moves.SUBSTITUTE ], - [ 28, Moves.METAL_SOUND ], - [ 35, Moves.SHADOW_BALL ], - [ 42, Moves.RECOVER ], - [ 49, Moves.POWER_GEM ], - [ 56, Moves.MAKE_IT_RAIN ], - [ 63, Moves.NASTY_PLOT ], - [ 70, Moves.MEMENTO ], - ], - [Species.WO_CHIEN]: [ - [ 1, Moves.ABSORB ], - [ 1, Moves.SPITE ], - [ 1, Moves.MEAN_LOOK ], - [ 5, Moves.TICKLE ], - [ 10, Moves.PAYBACK ], - [ 15, Moves.POISON_POWDER ], - [ 15, Moves.STUN_SPORE ], - [ 20, Moves.MEGA_DRAIN ], - [ 25, Moves.LEECH_SEED ], - [ 30, Moves.GROWTH ], - [ 35, Moves.INGRAIN ], - [ 40, Moves.DARK_PULSE ], - [ 45, Moves.GIGA_DRAIN ], - [ 50, Moves.RUINATION ], - [ 55, Moves.FOUL_PLAY ], - [ 60, Moves.POWER_WHIP ], - [ 65, Moves.GRASSY_TERRAIN ], - [ 70, Moves.KNOCK_OFF ], - [ 75, Moves.LEAF_STORM ], - ], - [Species.CHIEN_PAO]: [ - [ 1, Moves.SPITE ], - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.MEAN_LOOK ], - [ 5, Moves.ICY_WIND ], - [ 10, Moves.PAYBACK ], - [ 15, Moves.MIST ], - [ 15, Moves.HAZE ], - [ 20, Moves.ICE_SHARD ], - [ 25, Moves.SWORDS_DANCE ], - [ 30, Moves.SNOWSCAPE ], - [ 35, Moves.NIGHT_SLASH ], - [ 40, Moves.DARK_PULSE ], - [ 45, Moves.ICICLE_CRASH ], - [ 50, Moves.RUINATION ], - [ 55, Moves.SUCKER_PUNCH ], - [ 60, Moves.SACRED_SWORD ], - [ 65, Moves.RECOVER ], - [ 70, Moves.THROAT_CHOP ], - [ 75, Moves.SHEER_COLD ], - ], - [Species.TING_LU]: [ - [ 1, Moves.SPITE ], - [ 1, Moves.MEAN_LOOK ], - [ 1, Moves.SAND_TOMB ], - [ 5, Moves.SPIKES ], - [ 10, Moves.PAYBACK ], - [ 15, Moves.STOMP ], - [ 20, Moves.BULLDOZE ], - [ 25, Moves.WHIRLWIND ], - [ 30, Moves.TAUNT ], - [ 35, Moves.THRASH ], - [ 40, Moves.DARK_PULSE ], - [ 45, Moves.STOMPING_TANTRUM ], - [ 50, Moves.RUINATION ], - [ 55, Moves.THROAT_CHOP ], - [ 60, Moves.ROCK_SLIDE ], - [ 65, Moves.MEMENTO ], - [ 70, Moves.EARTHQUAKE ], - [ 75, Moves.FISSURE ], - ], - [Species.CHI_YU]: [ - [ 1, Moves.EMBER ], - [ 1, Moves.SPITE ], - [ 1, Moves.MEAN_LOOK ], - [ 5, Moves.FLAME_WHEEL ], - [ 10, Moves.PAYBACK ], - [ 15, Moves.WILL_O_WISP ], - [ 20, Moves.FLAME_CHARGE ], - [ 25, Moves.INCINERATE ], - [ 30, Moves.CONFUSE_RAY ], - [ 35, Moves.NASTY_PLOT ], - [ 40, Moves.DARK_PULSE ], - [ 45, Moves.LAVA_PLUME ], - [ 50, Moves.RUINATION ], - [ 55, Moves.BOUNCE ], - [ 60, Moves.SWAGGER ], - [ 65, Moves.INFERNO ], - [ 70, Moves.MEMENTO ], - [ 75, Moves.OVERHEAT ], - ], - [Species.ROARING_MOON]: [ - [ RELEARN_MOVE, Moves.SUNNY_DAY ], - [ RELEARN_MOVE, Moves.JAW_LOCK ], - [ RELEARN_MOVE, Moves.BREAKING_SWIPE ], - [ RELEARN_MOVE, Moves.SCALE_SHOT ], - [ 1, Moves.LEER ], - [ 1, Moves.BITE ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.DRAGON_BREATH ], - [ 7, Moves.INCINERATE ], - [ 14, Moves.HEADBUTT ], - [ 21, Moves.SCARY_FACE ], - [ 28, Moves.DRAGON_CLAW ], - [ 35, Moves.ZEN_HEADBUTT ], - [ 42, Moves.FLAMETHROWER ], - [ 49, Moves.NIGHT_SLASH ], - [ 56, Moves.DRAGON_DANCE ], - [ 63, Moves.DRAGON_RUSH ], - [ 70, Moves.FLY ], - [ 77, Moves.THROAT_CHOP ], - [ 84, Moves.ROOST ], - [ 91, Moves.DOUBLE_EDGE ], - ], - [Species.IRON_VALIANT]: [ - [ RELEARN_MOVE, Moves.ELECTRIC_TERRAIN ], - [ 1, Moves.DISABLE ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.FURY_CUTTER ], - [ 1, Moves.SHADOW_SNEAK ], - [ 7, Moves.HYPNOSIS ], - [ 14, Moves.FEINT ], - [ 21, Moves.FUTURE_SIGHT ], - [ 28, Moves.DAZZLING_GLEAM ], - [ 35, Moves.PSYCHO_CUT ], - [ 42, Moves.NIGHT_SLASH ], - [ 49, Moves.LEAF_BLADE ], - [ 56, Moves.MOONBLAST ], - [ 63, Moves.CLOSE_COMBAT ], - [ 70, Moves.KNOCK_OFF ], - [ 77, Moves.DESTINY_BOND ], - [ 84, Moves.WIDE_GUARD ], - [ 84, Moves.QUICK_GUARD ], - [ 91, Moves.SPIRIT_BREAK ], - ], - [Species.KORAIDON]: [ - [ 1, Moves.SUNNY_DAY ], - [ 1, Moves.BREAKING_SWIPE ], - [ 7, Moves.ROCK_SMASH ], - [ 14, Moves.ANCIENT_POWER ], - [ 21, Moves.DRAIN_PUNCH ], - [ 28, Moves.BRICK_BREAK ], - [ 35, Moves.AGILITY ], - [ 42, Moves.DRAGON_CLAW ], - [ 49, Moves.FLAMETHROWER ], - [ 56, Moves.COLLISION_COURSE ], - [ 63, Moves.SCREECH ], - [ 70, Moves.COUNTER ], - [ 77, Moves.OUTRAGE ], - [ 84, Moves.CLOSE_COMBAT ], - [ 91, Moves.FLARE_BLITZ ], - [ 98, Moves.GIGA_IMPACT ], - ], - [Species.MIRAIDON]: [ - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.ELECTRIC_TERRAIN ], - [ 7, Moves.SHOCK_WAVE ], - [ 14, Moves.CHARGE ], - [ 21, Moves.PARABOLIC_CHARGE ], - [ 28, Moves.DISCHARGE ], - [ 35, Moves.AGILITY ], - [ 42, Moves.DRAGON_PULSE ], - [ 56, Moves.ELECTRO_DRIFT ], - [ 63, Moves.METAL_SOUND ], - [ 70, Moves.MIRROR_COAT ], - [ 77, Moves.OUTRAGE ], - [ 84, Moves.THUNDER ], - [ 91, Moves.OVERHEAT ], - [ 98, Moves.HYPER_BEAM ], - ], - [Species.WALKING_WAKE]: [ - [ RELEARN_MOVE, Moves.SUNNY_DAY ], - [ RELEARN_MOVE, Moves.HONE_CLAWS ], - [ 1, Moves.LEER ], - [ 1, Moves.ROAR ], - [ 1, Moves.TWISTER ], - [ 1, Moves.AQUA_JET ], - [ 7, Moves.BITE ], - [ 14, Moves.WATER_PULSE ], - [ 21, Moves.NOBLE_ROAR ], - [ 28, Moves.DRAGON_BREATH ], - [ 35, Moves.BREAKING_SWIPE ], - [ 42, Moves.DRAGON_RUSH ], - [ 56, Moves.HYDRO_STEAM ], - [ 63, Moves.DRAGON_PULSE ], - [ 70, Moves.OUTRAGE ], - [ 77, Moves.FLAMETHROWER ], - [ 84, Moves.HYDRO_PUMP ], - ], - [Species.IRON_LEAVES]: [ - [ RELEARN_MOVE, Moves.ELECTRIC_TERRAIN ], - [ RELEARN_MOVE, Moves.QUASH ], - [ 1, Moves.LEER ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.WORK_UP ], - [ 7, Moves.MAGICAL_LEAF ], - [ 14, Moves.RETALIATE ], - [ 21, Moves.QUICK_GUARD ], - [ 28, Moves.NIGHT_SLASH ], - [ 35, Moves.SWORDS_DANCE ], - [ 42, Moves.SACRED_SWORD ], - [ 49, Moves.LEAF_BLADE ], - [ 56, Moves.PSYBLADE ], - [ 63, Moves.CLOSE_COMBAT ], - [ 70, Moves.IMPRISON ], - [ 77, Moves.MEGAHORN ], - [ 84, Moves.ALLY_SWITCH ], - [ 91, Moves.SOLAR_BLADE ], - ], - [Species.DIPPLIN]: [ - [ EVOLVE_MOVE, Moves.DOUBLE_HIT ], - [ RELEARN_MOVE, Moves.DRAGON_CHEER ], // Custom - [ 1, Moves.LEAFAGE ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.RECYCLE ], - [ 1, Moves.ASTONISH ], - [ 4, Moves.DRAGON_TAIL ], - [ 8, Moves.GROWTH ], - [ 12, Moves.DRAGON_BREATH ], - [ 16, Moves.PROTECT ], - [ 20, Moves.BULLET_SEED ], - [ 28, Moves.SYRUP_BOMB ], - [ 32, Moves.DRAGON_PULSE ], - [ 36, Moves.RECOVER ], - [ 40, Moves.ENERGY_BALL ], - [ 44, Moves.SUBSTITUTE ], - ], - [Species.POLTCHAGEIST]: [ - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.ASTONISH ], - [ 5, Moves.ABSORB ], // Custom, Moved from Level 6 to 5 - [ 12, Moves.LIFE_DEW ], - [ 18, Moves.FOUL_PLAY ], - [ 24, Moves.MEGA_DRAIN ], - [ 30, Moves.HEX ], - [ 36, Moves.RAGE_POWDER ], - [ 42, Moves.GIGA_DRAIN ], - [ 48, Moves.SHADOW_BALL ], - [ 54, Moves.MEMENTO ], - [ 60, Moves.LEAF_STORM ], - ], - [Species.SINISTCHA]: [ - [ EVOLVE_MOVE, Moves.MATCHA_GOTCHA ], - [ RELEARN_MOVE, Moves.GIGA_DRAIN ], // Previous Stage Move - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.ASTONISH ], - [ 6, Moves.ABSORB ], - [ 12, Moves.LIFE_DEW ], - [ 18, Moves.FOUL_PLAY ], - [ 24, Moves.MEGA_DRAIN ], - [ 30, Moves.HEX ], - [ 36, Moves.RAGE_POWDER ], - [ 42, Moves.STRENGTH_SAP ], - [ 48, Moves.SHADOW_BALL ], - [ 54, Moves.MEMENTO ], - [ 60, Moves.LEAF_STORM ], - ], - [Species.OKIDOGI]: [ - [ 1, Moves.BITE ], - [ 1, Moves.LOW_KICK ], - [ 1, Moves.BULK_UP ], - [ 8, Moves.HOWL ], - [ 16, Moves.POISON_FANG ], - [ 24, Moves.FORCE_PALM ], - [ 32, Moves.COUNTER ], - [ 40, Moves.POISON_JAB ], - [ 48, Moves.BRUTAL_SWING ], - [ 56, Moves.CRUNCH ], - [ 64, Moves.SUPERPOWER ], - [ 72, Moves.GIGA_IMPACT ], - ], - [Species.MUNKIDORI]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.FLATTER ], - [ 8, Moves.HELPING_HAND ], - [ 16, Moves.PSYBEAM ], - [ 24, Moves.CLEAR_SMOG ], - [ 32, Moves.POISON_JAB ], - [ 40, Moves.PSYCHIC ], - [ 48, Moves.SLUDGE_WAVE ], - [ 56, Moves.NASTY_PLOT ], - [ 64, Moves.FUTURE_SIGHT ], - [ 72, Moves.PARTING_SHOT ], - ], - [Species.FEZANDIPITI]: [ - [ 1, Moves.DOUBLE_KICK ], - [ 1, Moves.PECK ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.DISARMING_VOICE ], - [ 8, Moves.QUICK_ATTACK ], - [ 16, Moves.ATTRACT ], - [ 24, Moves.WING_ATTACK ], - [ 32, Moves.CROSS_POISON ], - [ 40, Moves.TAIL_SLAP ], - [ 48, Moves.BEAT_UP ], - [ 56, Moves.SWAGGER ], - [ 56, Moves.FLATTER ], - [ 64, Moves.ROOST ], - [ 72, Moves.MOONBLAST ], - ], - [Species.OGERPON]: [ - [ RELEARN_MOVE, Moves.DOUBLE_KICK ], - [ RELEARN_MOVE, Moves.COUNTER ], - [ RELEARN_MOVE, Moves.RETALIATE ], - [ RELEARN_MOVE, Moves.HORN_LEECH ], - [ 1, Moves.VINE_WHIP ], - [ 1, Moves.LEECH_SEED ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.FOLLOW_ME ], - [ 6, Moves.FOCUS_ENERGY ], - [ 12, Moves.GROWTH ], - [ 18, Moves.SLAM ], - [ 24, Moves.LOW_SWEEP ], - [ 30, Moves.IVY_CUDGEL ], - [ 36, Moves.THROAT_CHOP ], - [ 42, Moves.SYNTHESIS ], - [ 48, Moves.SPIKY_SHIELD ], - [ 54, Moves.POWER_WHIP ], - [ 60, Moves.SUPERPOWER ], - [ 66, Moves.WOOD_HAMMER ], - ], - [Species.ARCHALUDON]: [ - [ EVOLVE_MOVE, Moves.ELECTRO_SHOT ], - [ RELEARN_MOVE, Moves.LASER_FOCUS ], // Previous Stage Move - [ 1, Moves.LEER ], - [ 1, Moves.METAL_CLAW ], - [ 6, Moves.ROCK_SMASH ], - [ 12, Moves.HONE_CLAWS ], - [ 18, Moves.METAL_SOUND ], - [ 24, Moves.BREAKING_SWIPE ], - [ 30, Moves.DRAGON_TAIL ], - [ 36, Moves.IRON_DEFENSE ], - [ 42, Moves.FOCUS_ENERGY ], - [ 48, Moves.DRAGON_CLAW ], - [ 54, Moves.FLASH_CANNON ], - [ 60, Moves.METAL_BURST ], - [ 66, Moves.HYPER_BEAM ], - ], - [Species.HYDRAPPLE]: [ - [ EVOLVE_MOVE, Moves.FICKLE_BEAM ], - [ RELEARN_MOVE, Moves.YAWN ], - [ RELEARN_MOVE, Moves.DOUBLE_HIT ], - [ RELEARN_MOVE, Moves.INFESTATION ], - [ RELEARN_MOVE, Moves.DRAGON_CHEER ], // Previous Stage Move, Custom - [ 1, Moves.LEAFAGE ], // Previous Stage Move, Custom - [ 1, Moves.WITHDRAW ], - [ 1, Moves.SWEET_SCENT ], - [ 1, Moves.RECYCLE ], - [ 1, Moves.ASTONISH ], - [ 4, Moves.DRAGON_TAIL ], - [ 8, Moves.GROWTH ], - [ 12, Moves.DRAGON_BREATH ], - [ 16, Moves.PROTECT ], - [ 20, Moves.BULLET_SEED ], - [ 28, Moves.SYRUP_BOMB ], - [ 32, Moves.DRAGON_PULSE ], - [ 36, Moves.RECOVER ], - [ 40, Moves.ENERGY_BALL ], - [ 44, Moves.SUBSTITUTE ], - [ 54, Moves.POWER_WHIP ], - ], - [Species.GOUGING_FIRE]: [ - [ RELEARN_MOVE, Moves.DOUBLE_KICK ], - [ RELEARN_MOVE, Moves.ANCIENT_POWER ], - [ RELEARN_MOVE, Moves.NOBLE_ROAR ], - [ 1, Moves.STOMP ], - [ 1, Moves.LEER ], - [ 1, Moves.INCINERATE ], - [ 1, Moves.SUNNY_DAY ], - [ 7, Moves.FIRE_FANG ], - [ 14, Moves.HOWL ], - [ 21, Moves.BITE ], - [ 28, Moves.DRAGON_CLAW ], - [ 35, Moves.CRUSH_CLAW ], - [ 42, Moves.MORNING_SUN ], - [ 49, Moves.BURNING_BULWARK ], - [ 56, Moves.DRAGON_RUSH ], - [ 63, Moves.FIRE_BLAST ], - [ 70, Moves.LAVA_PLUME ], - [ 77, Moves.OUTRAGE ], - [ 84, Moves.FLARE_BLITZ ], - [ 91, Moves.RAGING_FURY ], - ], - [Species.RAGING_BOLT]: [ - [ RELEARN_MOVE, Moves.ANCIENT_POWER ], - [ 1, Moves.TWISTER ], - [ 1, Moves.SUNNY_DAY ], - [ 1, Moves.SHOCK_WAVE ], - [ 1, Moves.STOMP ], - [ 7, Moves.CHARGE ], - [ 14, Moves.DRAGON_BREATH ], - [ 21, Moves.ELECTRIC_TERRAIN ], - [ 28, Moves.DISCHARGE ], - [ 35, Moves.DRAGON_TAIL ], - [ 42, Moves.CALM_MIND ], - [ 49, Moves.THUNDERCLAP ], - [ 56, Moves.DRAGON_HAMMER ], - [ 63, Moves.RISING_VOLTAGE ], - [ 70, Moves.DRAGON_PULSE ], - [ 77, Moves.ZAP_CANNON ], - [ 84, Moves.BODY_PRESS ], - [ 91, Moves.THUNDER ], - ], - [Species.IRON_BOULDER]: [ - [ 1, Moves.HORN_ATTACK ], - [ 1, Moves.LEER ], - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.ELECTRIC_TERRAIN ], - [ 7, Moves.QUICK_ATTACK ], - [ 14, Moves.SLASH ], - [ 21, Moves.AGILITY ], - [ 28, Moves.PSYCHO_CUT ], - [ 35, Moves.COUNTER ], - [ 42, Moves.ROCK_TOMB ], - [ 49, Moves.SACRED_SWORD ], - [ 56, Moves.MIGHTY_CLEAVE ], - [ 63, Moves.SWORDS_DANCE ], - [ 70, Moves.MEGAHORN ], - [ 77, Moves.QUICK_GUARD ], - [ 84, Moves.STONE_EDGE ], - [ 91, Moves.GIGA_IMPACT ], - ], - [Species.IRON_CROWN]: [ - [ 1, Moves.LEER ], - [ 1, Moves.ELECTRIC_TERRAIN ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.METAL_CLAW ], - [ 7, Moves.SMART_STRIKE ], - [ 14, Moves.SLASH ], - [ 21, Moves.IRON_DEFENSE ], - [ 28, Moves.PSYSHOCK ], - [ 35, Moves.PSYCHO_CUT ], - [ 42, Moves.FLASH_CANNON ], - [ 49, Moves.SACRED_SWORD ], - [ 56, Moves.TACHYON_CUTTER ], - [ 63, Moves.FUTURE_SIGHT ], - [ 70, Moves.VOLT_SWITCH ], - [ 77, Moves.QUICK_GUARD ], - [ 84, Moves.METAL_BURST ], - [ 91, Moves.HYPER_BEAM ], - ], - [Species.TERAPAGOS]: [ - [ 1, Moves.WITHDRAW ], - [ 1, Moves.TRI_ATTACK ], - [ 1, Moves.RAPID_SPIN ], - [ 10, Moves.ANCIENT_POWER ], - [ 20, Moves.HEADBUTT ], - [ 30, Moves.PROTECT ], - [ 40, Moves.EARTH_POWER ], - [ 50, Moves.HEAVY_SLAM ], - [ 60, Moves.TERA_STARSTORM ], - [ 70, Moves.DOUBLE_EDGE ], - [ 80, Moves.ROCK_POLISH ], - [ 90, Moves.GYRO_BALL ], - ], - [Species.PECHARUNT]: [ - [ RELEARN_MOVE, Moves.DEFENSE_CURL ], - [ RELEARN_MOVE, Moves.ROLLOUT ], - [ RELEARN_MOVE, Moves.MEAN_LOOK ], - [ 1, Moves.SMOG ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.MEMENTO ], - [ 1, Moves.ASTONISH ], - [ 8, Moves.WITHDRAW ], - [ 16, Moves.DESTINY_BOND ], - [ 24, Moves.FAKE_TEARS ], - [ 32, Moves.PARTING_SHOT ], - [ 40, Moves.SHADOW_BALL ], - [ 48, Moves.MALIGNANT_CHAIN ], - [ 56, Moves.TOXIC ], - [ 64, Moves.NASTY_PLOT ], - [ 72, Moves.RECOVER ], - ], - [Species.ALOLA_RATTATA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 4, Moves.QUICK_ATTACK ], - [ 7, Moves.FOCUS_ENERGY ], - [ 10, Moves.BITE ], - [ 13, Moves.PURSUIT ], - [ 16, Moves.HYPER_FANG ], - [ 19, Moves.ASSURANCE ], - [ 22, Moves.CRUNCH ], - [ 25, Moves.SUCKER_PUNCH ], - [ 28, Moves.SUPER_FANG ], - [ 31, Moves.DOUBLE_EDGE ], - [ 34, Moves.ENDEAVOR ], - ], - [Species.ALOLA_RATICATE]: [ - [ EVOLVE_MOVE, Moves.SCARY_FACE ], - [ 1, Moves.SWORDS_DANCE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.FOCUS_ENERGY ], - [ 10, Moves.BITE ], - [ 13, Moves.PURSUIT ], - [ 16, Moves.HYPER_FANG ], - [ 19, Moves.ASSURANCE ], - [ 24, Moves.CRUNCH ], - [ 29, Moves.SUCKER_PUNCH ], - [ 34, Moves.SUPER_FANG ], - [ 39, Moves.DOUBLE_EDGE ], - [ 44, Moves.ENDEAVOR ], - ], - [Species.ALOLA_RAICHU]: [ - [ EVOLVE_MOVE, Moves.PSYCHIC ], - [ EVOLVE_MOVE, Moves.ZIPPY_ZAP ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.THUNDER_WAVE ], - [ 1, Moves.THUNDER ], - [ 1, Moves.AGILITY ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.LIGHT_SCREEN ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.SPARK ], - [ 1, Moves.IRON_TAIL ], - [ 1, Moves.FEINT ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.DISCHARGE ], - [ 1, Moves.ELECTRO_BALL ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.NUZZLE ], - [ 5, Moves.THUNDERBOLT ], - [ 50, Moves.PIKA_PAPOW ], - ], - [Species.ALOLA_SANDSHREW]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.DEFENSE_CURL ], - [ 3, Moves.MIST ], - [ 6, Moves.POWDER_SNOW ], - [ 9, Moves.ROLLOUT ], - [ 12, Moves.FURY_CUTTER ], - [ 15, Moves.RAPID_SPIN ], - [ 18, Moves.METAL_CLAW ], - [ 21, Moves.SWIFT ], - [ 24, Moves.FURY_SWIPES ], - [ 27, Moves.IRON_DEFENSE ], - [ 30, Moves.SLASH ], - [ 33, Moves.IRON_HEAD ], - [ 36, Moves.GYRO_BALL ], - [ 39, Moves.SWORDS_DANCE ], - [ 42, Moves.SNOWSCAPE ], - [ 45, Moves.BLIZZARD ], - ], - [Species.ALOLA_SANDSLASH]: [ - [ EVOLVE_MOVE, Moves.ICICLE_SPEAR ], - [ RELEARN_MOVE, Moves.SCRATCH ], - [ RELEARN_MOVE, Moves.MIST ], - [ RELEARN_MOVE, Moves.BLIZZARD ], - [ RELEARN_MOVE, Moves.DEFENSE_CURL ], - [ RELEARN_MOVE, Moves.SWIFT ], - [ RELEARN_MOVE, Moves.FURY_SWIPES ], - [ RELEARN_MOVE, Moves.POWDER_SNOW ], - [ RELEARN_MOVE, Moves.ROLLOUT ], - [ RELEARN_MOVE, Moves.FURY_CUTTER ], - [ RELEARN_MOVE, Moves.RAPID_SPIN ], - [ RELEARN_MOVE, Moves.IRON_DEFENSE ], - [ RELEARN_MOVE, Moves.GYRO_BALL ], - [ RELEARN_MOVE, Moves.METAL_BURST ], - [ RELEARN_MOVE, Moves.IRON_HEAD ], - [ RELEARN_MOVE, Moves.SNOWSCAPE ], - [ 1, Moves.ICICLE_CRASH ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.SLASH ], - [ 1, Moves.SWORDS_DANCE ], - [ 1, Moves.ICE_BALL ], - ], - [Species.ALOLA_VULPIX]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.POWDER_SNOW ], - [ 4, Moves.DISABLE ], - [ 8, Moves.ICE_SHARD ], - [ 12, Moves.SPITE ], - [ 16, Moves.ICY_WIND ], - [ 20, Moves.CONFUSE_RAY ], - [ 24, Moves.AURORA_BEAM ], - [ 28, Moves.EXTRASENSORY ], - [ 32, Moves.ICE_BEAM ], - [ 36, Moves.IMPRISON ], - [ 40, Moves.MIST ], - [ 44, Moves.AURORA_VEIL ], - [ 48, Moves.FREEZE_DRY ], - [ 52, Moves.BLIZZARD ], - ], - [Species.ALOLA_NINETALES]: [ - [ EVOLVE_MOVE, Moves.DAZZLING_GLEAM ], - [ RELEARN_MOVE, Moves.DISABLE ], - [ RELEARN_MOVE, Moves.MIST ], - [ RELEARN_MOVE, Moves.ICE_BEAM ], - [ RELEARN_MOVE, Moves.AURORA_BEAM ], - [ RELEARN_MOVE, Moves.CONFUSE_RAY ], - [ RELEARN_MOVE, Moves.SPITE ], - [ RELEARN_MOVE, Moves.POWDER_SNOW ], - [ RELEARN_MOVE, Moves.EXTRASENSORY ], - [ RELEARN_MOVE, Moves.NASTY_PLOT ], - [ RELEARN_MOVE, Moves.ICE_SHARD ], - [ RELEARN_MOVE, Moves.FREEZE_DRY ], - [ RELEARN_MOVE, Moves.AURORA_VEIL ], - [ 1, Moves.ICY_WIND ], - [ 1, Moves.IMPRISON ], - [ 1, Moves.BLIZZARD ], - [ 1, Moves.TAIL_WHIP ], - ], - [Species.ALOLA_DIGLETT]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.METAL_CLAW ], - [ 4, Moves.GROWL ], - [ 8, Moves.ASTONISH ], - [ 12, Moves.MUD_SLAP ], - [ 16, Moves.BULLDOZE ], - [ 20, Moves.SUCKER_PUNCH ], - [ 24, Moves.IRON_HEAD ], - [ 28, Moves.SANDSTORM ], - [ 32, Moves.DIG ], - [ 36, Moves.EARTH_POWER ], - [ 40, Moves.EARTHQUAKE ], - [ 44, Moves.FISSURE ], - ], - [Species.ALOLA_DUGTRIO]: [ - [ EVOLVE_MOVE, Moves.SAND_TOMB ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.GROWL ], - [ 1, Moves.TRI_ATTACK ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.ASTONISH ], - [ 1, Moves.NIGHT_SLASH ], - [ 1, Moves.ROTOTILLER ], - [ 12, Moves.MUD_SLAP ], - [ 16, Moves.BULLDOZE ], - [ 20, Moves.SUCKER_PUNCH ], - [ 24, Moves.IRON_HEAD ], - [ 30, Moves.SANDSTORM ], - [ 36, Moves.DIG ], - [ 42, Moves.EARTH_POWER ], - [ 48, Moves.EARTHQUAKE ], - [ 54, Moves.FISSURE ], - ], - [Species.ALOLA_MEOWTH]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.FAKE_OUT ], - [ 4, Moves.FEINT ], - [ 8, Moves.SCRATCH ], - [ 12, Moves.PAY_DAY ], - [ 16, Moves.BITE ], - [ 20, Moves.TAUNT ], - [ 24, Moves.ASSURANCE ], - [ 29, Moves.FURY_SWIPES ], - [ 32, Moves.SCREECH ], - [ 36, Moves.NIGHT_SLASH ], - [ 40, Moves.NASTY_PLOT ], - [ 44, Moves.PLAY_ROUGH ], - ], - [Species.ALOLA_PERSIAN]: [ - [ EVOLVE_MOVE, Moves.POWER_GEM ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.GROWL ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.FEINT ], - [ 1, Moves.SWITCHEROO ], - [ 1, Moves.QUASH ], - [ 12, Moves.PAY_DAY ], - [ 16, Moves.BITE ], - [ 20, Moves.TAUNT ], - [ 24, Moves.ASSURANCE ], - [ 31, Moves.FURY_SWIPES ], - [ 36, Moves.SCREECH ], - [ 42, Moves.NIGHT_SLASH ], - [ 48, Moves.NASTY_PLOT ], - [ 54, Moves.PLAY_ROUGH ], - ], - [Species.ALOLA_GEODUDE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.DEFENSE_CURL ], - [ 4, Moves.CHARGE ], - [ 6, Moves.ROCK_POLISH ], - [ 10, Moves.ROLLOUT ], - [ 12, Moves.SPARK ], - [ 16, Moves.ROCK_THROW ], - [ 18, Moves.SMACK_DOWN ], - [ 22, Moves.THUNDER_PUNCH ], - [ 24, Moves.SELF_DESTRUCT ], - [ 28, Moves.STEALTH_ROCK ], - [ 30, Moves.ROCK_BLAST ], - [ 34, Moves.DISCHARGE ], - [ 36, Moves.EXPLOSION ], - [ 40, Moves.DOUBLE_EDGE ], - [ 42, Moves.STONE_EDGE ], - ], - [Species.ALOLA_GRAVELER]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.CHARGE ], - [ 1, Moves.ROCK_POLISH ], - [ 10, Moves.ROLLOUT ], - [ 12, Moves.SPARK ], - [ 16, Moves.ROCK_THROW ], - [ 18, Moves.SMACK_DOWN ], - [ 22, Moves.THUNDER_PUNCH ], - [ 24, Moves.SELF_DESTRUCT ], - [ 30, Moves.STEALTH_ROCK ], - [ 34, Moves.ROCK_BLAST ], - [ 40, Moves.DISCHARGE ], - [ 44, Moves.EXPLOSION ], - [ 50, Moves.DOUBLE_EDGE ], - [ 54, Moves.STONE_EDGE ], - ], - [Species.ALOLA_GOLEM]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.DEFENSE_CURL ], - [ 1, Moves.CHARGE ], - [ 1, Moves.ROCK_POLISH ], - [ 1, Moves.ROLLOUT ], // Previous Stage Move - [ 1, Moves.HEAVY_SLAM ], - [ 12, Moves.SPARK ], - [ 16, Moves.ROCK_THROW ], - [ 18, Moves.SMACK_DOWN ], - [ 22, Moves.THUNDER_PUNCH ], - [ 24, Moves.SELF_DESTRUCT ], - [ 30, Moves.STEALTH_ROCK ], - [ 34, Moves.ROCK_BLAST ], - [ 40, Moves.DISCHARGE ], - [ 44, Moves.EXPLOSION ], - [ 50, Moves.DOUBLE_EDGE ], - [ 54, Moves.STONE_EDGE ], - ], - [Species.ALOLA_GRIMER]: [ - [ 1, Moves.POUND ], - [ 1, Moves.POISON_GAS ], - [ 4, Moves.HARDEN ], - [ 7, Moves.BITE ], - [ 12, Moves.DISABLE ], - [ 15, Moves.ACID_SPRAY ], - [ 18, Moves.POISON_FANG ], - [ 21, Moves.MINIMIZE ], - [ 26, Moves.TOXIC ], - [ 29, Moves.KNOCK_OFF ], - [ 32, Moves.CRUNCH ], - [ 37, Moves.SCREECH ], - [ 40, Moves.GUNK_SHOT ], - [ 43, Moves.ACID_ARMOR ], - [ 46, Moves.BELCH ], - [ 48, Moves.MEMENTO ], - ], - [Species.ALOLA_MUK]: [ - [ 1, Moves.POUND ], - [ 1, Moves.BITE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.POISON_GAS ], - [ 12, Moves.DISABLE ], - [ 15, Moves.ACID_SPRAY ], - [ 18, Moves.POISON_FANG ], - [ 21, Moves.MINIMIZE ], - [ 26, Moves.TOXIC ], - [ 29, Moves.KNOCK_OFF ], - [ 32, Moves.CRUNCH ], - [ 37, Moves.SCREECH ], - [ 40, Moves.GUNK_SHOT ], - [ 46, Moves.ACID_ARMOR ], - [ 52, Moves.BELCH ], - [ 57, Moves.MEMENTO ], - ], - [Species.ALOLA_EXEGGUTOR]: [ - [ EVOLVE_MOVE, Moves.DRAGON_HAMMER ], - [ RELEARN_MOVE, Moves.GROWTH ], - [ 1, Moves.BARRAGE ], - [ 1, Moves.SEED_BOMB ], - [ 1, Moves.PSYSHOCK ], - [ 1, Moves.WOOD_HAMMER ], - [ 1, Moves.LEAF_STORM ], - [ 1, Moves.MEGA_DRAIN ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.SYNTHESIS ], - [ 1, Moves.BULLET_SEED ], - [ 1, Moves.GIGA_DRAIN ], - [ 1, Moves.EXTRASENSORY ], - [ 1, Moves.UPROAR ], - [ 1, Moves.WORRY_SEED ], - [ 1, Moves.SOLAR_BEAM ], - [ 1, Moves.ABSORB ], - [ 1, Moves.HYPNOSIS ], - [ 1, Moves.REFLECT ], - [ 1, Moves.LEECH_SEED ], - ], - [Species.ALOLA_MAROWAK]: [ - [ EVOLVE_MOVE, Moves.SHADOW_BONE ], - [ 1, Moves.BONE_CLUB ], - [ 1, Moves.HEADBUTT ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.FIRE_SPIN ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.FALSE_SWIPE ], - [ 1, Moves.RETALIATE ], - [ 12, Moves.FLAME_WHEEL ], - [ 16, Moves.HEX ], - [ 20, Moves.FLING ], - [ 24, Moves.STOMPING_TANTRUM ], - [ 31, Moves.BONE_RUSH ], - [ 36, Moves.WILL_O_WISP ], - [ 42, Moves.ENDEAVOR ], - [ 48, Moves.BONEMERANG ], - [ 54, Moves.THRASH ], - [ 60, Moves.FLARE_BLITZ ], - ], - [Species.ETERNAL_FLOETTE]: [ - [ 1, Moves.VINE_WHIP ], - [ 1, Moves.TACKLE ], - [ 1, Moves.FAIRY_WIND ], - [ 10, Moves.LUCKY_CHANT ], - [ 15, Moves.RAZOR_LEAF ], - [ 20, Moves.WISH ], - [ 25, Moves.MAGICAL_LEAF ], - [ 27, Moves.GRASSY_TERRAIN ], - [ 33, Moves.PETAL_BLIZZARD ], - [ 38, Moves.AROMATHERAPY ], - [ 43, Moves.MISTY_TERRAIN ], - [ 46, Moves.MOONBLAST ], - [ 50, Moves.LIGHT_OF_RUIN ], - [ 51, Moves.PETAL_DANCE ], - [ 58, Moves.SOLAR_BEAM ], - ], - [Species.GALAR_MEOWTH]: [ - [ 1, Moves.GROWL ], - [ 1, Moves.FAKE_OUT ], - [ 4, Moves.HONE_CLAWS ], - [ 8, Moves.SCRATCH ], - [ 12, Moves.PAY_DAY ], - [ 16, Moves.METAL_CLAW ], - [ 20, Moves.TAUNT ], - [ 24, Moves.SWAGGER ], - [ 29, Moves.FURY_SWIPES ], - [ 32, Moves.SCREECH ], - [ 36, Moves.SLASH ], - [ 40, Moves.METAL_SOUND ], - [ 44, Moves.THRASH ], - ], - [Species.GALAR_PONYTA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 5, Moves.TAIL_WHIP ], - [ 10, Moves.CONFUSION ], - [ 15, Moves.FAIRY_WIND ], - [ 20, Moves.AGILITY ], - [ 25, Moves.PSYBEAM ], - [ 30, Moves.STOMP ], - [ 35, Moves.HEAL_PULSE ], - [ 41, Moves.TAKE_DOWN ], - [ 45, Moves.DAZZLING_GLEAM ], - [ 50, Moves.PSYCHIC ], - [ 55, Moves.HEALING_WISH ], - ], - [Species.GALAR_RAPIDASH]: [ - [ EVOLVE_MOVE, Moves.PSYCHO_CUT ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.MEGAHORN ], - [ 15, Moves.FAIRY_WIND ], - [ 20, Moves.AGILITY ], - [ 25, Moves.PSYBEAM ], - [ 30, Moves.STOMP ], - [ 35, Moves.HEAL_PULSE ], - [ 43, Moves.TAKE_DOWN ], - [ 49, Moves.DAZZLING_GLEAM ], - [ 56, Moves.PSYCHIC ], - [ 63, Moves.HEALING_WISH ], - ], - [Species.GALAR_SLOWPOKE]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.CURSE ], - [ 3, Moves.GROWL ], - [ 6, Moves.ACID ], - [ 9, Moves.YAWN ], - [ 12, Moves.CONFUSION ], - [ 15, Moves.DISABLE ], - [ 18, Moves.WATER_PULSE ], - [ 21, Moves.HEADBUTT ], - [ 24, Moves.ZEN_HEADBUTT ], - [ 27, Moves.AMNESIA ], - [ 30, Moves.SURF ], - [ 33, Moves.SLACK_OFF ], - [ 36, Moves.PSYCHIC ], - [ 39, Moves.PSYCH_UP ], - [ 42, Moves.RAIN_DANCE ], - [ 45, Moves.HEAL_PULSE ], - ], - [Species.GALAR_SLOWBRO]: [ - [ EVOLVE_MOVE, Moves.SHELL_SIDE_ARM ], - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.ACID ], - [ 1, Moves.WITHDRAW ], - [ 1, Moves.CURSE ], - [ 9, Moves.YAWN ], - [ 12, Moves.CONFUSION ], - [ 15, Moves.DISABLE ], - [ 18, Moves.WATER_PULSE ], - [ 21, Moves.HEADBUTT ], - [ 24, Moves.ZEN_HEADBUTT ], - [ 27, Moves.AMNESIA ], - [ 30, Moves.SURF ], - [ 33, Moves.SLACK_OFF ], - [ 36, Moves.PSYCHIC ], - [ 39, Moves.PSYCH_UP ], - [ 42, Moves.RAIN_DANCE ], - [ 45, Moves.HEAL_PULSE ], - ], - [Species.GALAR_FARFETCHD]: [ - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.PECK ], - [ 5, Moves.LEER ], - [ 10, Moves.FURY_CUTTER ], - [ 15, Moves.ROCK_SMASH ], - [ 20, Moves.BRUTAL_SWING ], - [ 25, Moves.DETECT ], - [ 30, Moves.KNOCK_OFF ], - [ 35, Moves.DEFOG ], - [ 40, Moves.BRICK_BREAK ], - [ 45, Moves.SWORDS_DANCE ], - [ 50, Moves.SLAM ], - [ 55, Moves.LEAF_BLADE ], - [ 60, Moves.FINAL_GAMBIT ], - [ 65, Moves.BRAVE_BIRD ], - ], - [Species.GALAR_WEEZING]: [ - [ EVOLVE_MOVE, Moves.DOUBLE_HIT ], - [ 1, Moves.TACKLE ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.HAZE ], - [ 1, Moves.SMOG ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.HEAT_WAVE ], - [ 1, Moves.DEFOG ], - [ 1, Moves.AROMATIC_MIST ], - [ 1, Moves.STRANGE_STEAM ], - [ 12, Moves.CLEAR_SMOG ], - [ 16, Moves.ASSURANCE ], - [ 20, Moves.SLUDGE ], - [ 24, Moves.FAIRY_WIND ], - [ 28, Moves.SELF_DESTRUCT ], - [ 32, Moves.SLUDGE_BOMB ], - [ 38, Moves.TOXIC ], - [ 44, Moves.BELCH ], - [ 50, Moves.EXPLOSION ], - [ 56, Moves.MEMENTO ], - [ 62, Moves.DESTINY_BOND ], - [ 68, Moves.MISTY_TERRAIN ], - ], - [Species.GALAR_MR_MIME]: [ - [ 1, Moves.POUND ], - [ 1, Moves.BARRIER ], // Previous Stage Move - [ 1, Moves.TICKLE ], // Previous Stage Move - [ 1, Moves.MIMIC ], - [ 1, Moves.LIGHT_SCREEN ], - [ 1, Moves.REFLECT ], - [ 1, Moves.PROTECT ], - [ 1, Moves.SAFEGUARD ], - [ 1, Moves.BATON_PASS ], - [ 1, Moves.ENCORE ], - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.ROLE_PLAY ], - [ 1, Moves.RECYCLE ], - [ 1, Moves.COPYCAT ], - [ 1, Moves.ICE_SHARD ], - [ 1, Moves.MISTY_TERRAIN ], - [ 1, Moves.DAZZLING_GLEAM ], - [ 12, Moves.CONFUSION ], - [ 16, Moves.ALLY_SWITCH ], - [ 20, Moves.ICY_WIND ], - [ 24, Moves.DOUBLE_KICK ], - [ 28, Moves.PSYBEAM ], - [ 32, Moves.HYPNOSIS ], - [ 36, Moves.MIRROR_COAT ], - [ 40, Moves.SUCKER_PUNCH ], - [ 44, Moves.FREEZE_DRY ], - [ 48, Moves.PSYCHIC ], - [ 52, Moves.TEETER_DANCE ], - ], - [Species.GALAR_ARTICUNO]: [ - [ 1, Moves.GUST ], - [ 5, Moves.CONFUSION ], - [ 10, Moves.REFLECT ], - [ 15, Moves.HYPNOSIS ], - [ 20, Moves.AGILITY ], - [ 25, Moves.ANCIENT_POWER ], - [ 30, Moves.TAILWIND ], - [ 35, Moves.PSYCHO_CUT ], - [ 40, Moves.RECOVER ], - [ 45, Moves.FREEZING_GLARE ], - [ 50, Moves.DREAM_EATER ], - [ 55, Moves.HURRICANE ], - [ 60, Moves.DOUBLE_TEAM ], - [ 65, Moves.FUTURE_SIGHT ], - [ 70, Moves.TRICK_ROOM ], - ], - [Species.GALAR_ZAPDOS]: [ - [ 1, Moves.PECK ], - [ 1, Moves.FOCUS_ENERGY ], - [ 5, Moves.ROCK_SMASH ], - [ 10, Moves.LIGHT_SCREEN ], - [ 15, Moves.PLUCK ], - [ 20, Moves.AGILITY ], - [ 25, Moves.ANCIENT_POWER ], - [ 30, Moves.BRICK_BREAK ], - [ 35, Moves.DRILL_PECK ], - [ 40, Moves.QUICK_GUARD ], - [ 45, Moves.THUNDEROUS_KICK ], - [ 50, Moves.BULK_UP ], - [ 55, Moves.COUNTER ], - [ 60, Moves.DETECT ], - [ 65, Moves.CLOSE_COMBAT ], - [ 70, Moves.REVERSAL ], - ], - [Species.GALAR_MOLTRES]: [ - [ 1, Moves.GUST ], - [ 1, Moves.LEER ], - [ 5, Moves.PAYBACK ], - [ 10, Moves.SAFEGUARD ], - [ 15, Moves.WING_ATTACK ], - [ 20, Moves.AGILITY ], - [ 25, Moves.ANCIENT_POWER ], - [ 30, Moves.SUCKER_PUNCH ], - [ 35, Moves.AIR_SLASH ], - [ 40, Moves.AFTER_YOU ], - [ 45, Moves.FIERY_WRATH ], - [ 50, Moves.NASTY_PLOT ], - [ 55, Moves.HURRICANE ], - [ 60, Moves.ENDURE ], - [ 65, Moves.MEMENTO ], - [ 70, Moves.SKY_ATTACK ], - ], - [Species.GALAR_SLOWKING]: [ - [ EVOLVE_MOVE, Moves.EERIE_SPELL ], - [ RELEARN_MOVE, Moves.FUTURE_SIGHT ], - [ RELEARN_MOVE, Moves.CHILLY_RECEPTION ], - [ RELEARN_MOVE, Moves.TOXIC ], - [ 1, Moves.POWER_GEM ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.SWAGGER ], - [ 1, Moves.TACKLE ], - [ 1, Moves.CURSE ], - [ 1, Moves.GROWL ], - [ 1, Moves.ACID ], - [ 9, Moves.YAWN ], - [ 12, Moves.CONFUSION ], - [ 15, Moves.DISABLE ], - [ 18, Moves.WATER_PULSE ], - [ 21, Moves.HEADBUTT ], - [ 24, Moves.ZEN_HEADBUTT ], - [ 27, Moves.AMNESIA ], - [ 30, Moves.SURF ], - [ 33, Moves.SLACK_OFF ], - [ 36, Moves.PSYCHIC ], - [ 39, Moves.PSYCH_UP ], - [ 42, Moves.RAIN_DANCE ], - [ 45, Moves.HEAL_PULSE ], - ], - [Species.GALAR_CORSOLA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 5, Moves.ASTONISH ], - [ 10, Moves.DISABLE ], - [ 15, Moves.SPITE ], - [ 20, Moves.ANCIENT_POWER ], - [ 25, Moves.HEX ], - [ 30, Moves.CURSE ], - [ 35, Moves.STRENGTH_SAP ], - [ 40, Moves.POWER_GEM ], - [ 45, Moves.NIGHT_SHADE ], - [ 50, Moves.GRUDGE ], - [ 55, Moves.MIRROR_COAT ], - ], - [Species.GALAR_ZIGZAGOON]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 3, Moves.SAND_ATTACK ], - [ 6, Moves.LICK ], - [ 9, Moves.SNARL ], - [ 12, Moves.HEADBUTT ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 18, Moves.PIN_MISSILE ], - [ 21, Moves.REST ], - [ 24, Moves.TAKE_DOWN ], - [ 27, Moves.SCARY_FACE ], - [ 30, Moves.COUNTER ], - [ 33, Moves.TAUNT ], - [ 36, Moves.DOUBLE_EDGE ], - ], - [Species.GALAR_LINOONE]: [ - [ EVOLVE_MOVE, Moves.NIGHT_SLASH ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.PIN_MISSILE ], - [ 1, Moves.LEER ], - [ 1, Moves.LICK ], - [ 1, Moves.SWITCHEROO ], - [ 1, Moves.BABY_DOLL_EYES ], - [ 9, Moves.SNARL ], - [ 12, Moves.HEADBUTT ], - [ 15, Moves.HONE_CLAWS ], - [ 18, Moves.FURY_SWIPES ], - [ 23, Moves.REST ], - [ 28, Moves.TAKE_DOWN ], - [ 33, Moves.SCARY_FACE ], - [ 38, Moves.COUNTER ], - [ 43, Moves.TAUNT ], - [ 48, Moves.DOUBLE_EDGE ], - ], - [Species.GALAR_DARUMAKA]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.POWDER_SNOW ], - [ 4, Moves.TAUNT ], - [ 8, Moves.BITE ], - [ 12, Moves.AVALANCHE ], - [ 16, Moves.WORK_UP ], - [ 20, Moves.ICE_FANG ], - [ 24, Moves.HEADBUTT ], - [ 28, Moves.ICE_PUNCH ], - [ 32, Moves.UPROAR ], - [ 36, Moves.BELLY_DRUM ], - [ 40, Moves.BLIZZARD ], - [ 44, Moves.THRASH ], - [ 48, Moves.SUPERPOWER ], - ], - [Species.GALAR_DARMANITAN]: [ - [ EVOLVE_MOVE, Moves.ICICLE_CRASH ], - [ 1, Moves.TACKLE ], - [ 1, Moves.BITE ], - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.TAUNT ], - [ 12, Moves.AVALANCHE ], - [ 16, Moves.WORK_UP ], - [ 20, Moves.ICE_FANG ], - [ 24, Moves.HEADBUTT ], - [ 28, Moves.ICE_PUNCH ], - [ 32, Moves.UPROAR ], - [ 38, Moves.BELLY_DRUM ], - [ 44, Moves.BLIZZARD ], - [ 50, Moves.THRASH ], - [ 56, Moves.SUPERPOWER ], - ], - [Species.GALAR_YAMASK]: [ - [ 1, Moves.PROTECT ], - [ 1, Moves.ASTONISH ], - [ 4, Moves.HAZE ], - [ 8, Moves.NIGHT_SHADE ], - [ 12, Moves.DISABLE ], - [ 16, Moves.BRUTAL_SWING ], - [ 20, Moves.CRAFTY_SHIELD ], - [ 24, Moves.HEX ], - [ 28, Moves.MEAN_LOOK ], - [ 32, Moves.SLAM ], - [ 36, Moves.CURSE ], - [ 40, Moves.SHADOW_BALL ], - [ 44, Moves.EARTHQUAKE ], - [ 48, Moves.GUARD_SPLIT ], - [ 48, Moves.POWER_SPLIT ], - [ 52, Moves.DESTINY_BOND ], - ], - [Species.GALAR_STUNFISK]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.MUD_SLAP ], - [ 1, Moves.METAL_CLAW ], - [ 5, Moves.ENDURE ], - [ 10, Moves.MUD_SHOT ], - [ 15, Moves.REVENGE ], - [ 20, Moves.METAL_SOUND ], - [ 25, Moves.SUCKER_PUNCH ], - [ 30, Moves.IRON_DEFENSE ], - [ 35, Moves.BOUNCE ], - [ 40, Moves.MUDDY_WATER ], - [ 45, Moves.SNAP_TRAP ], - [ 50, Moves.FLAIL ], - [ 55, Moves.FISSURE ], - ], - [Species.HISUI_GROWLITHE]: [ - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 4, Moves.HOWL ], - [ 8, Moves.BITE ], - [ 12, Moves.FLAME_WHEEL ], - [ 16, Moves.HELPING_HAND ], - [ 24, Moves.FIRE_FANG ], - [ 28, Moves.RETALIATE ], - [ 32, Moves.CRUNCH ], - [ 36, Moves.TAKE_DOWN ], - [ 40, Moves.FLAMETHROWER ], - [ 44, Moves.ROAR ], - [ 48, Moves.ROCK_SLIDE ], - [ 52, Moves.REVERSAL ], - [ 56, Moves.FLARE_BLITZ ], - ], - [Species.HISUI_ARCANINE]: [ - [ EVOLVE_MOVE, Moves.EXTREME_SPEED ], - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.LEER ], - [ 1, Moves.BITE ], - [ 1, Moves.ROAR ], - [ 1, Moves.EMBER ], - [ 1, Moves.ROCK_THROW ], - [ 1, Moves.AGILITY ], - [ 1, Moves.ROCK_SLIDE ], - [ 1, Moves.FLAME_WHEEL ], - [ 1, Moves.REVERSAL ], - [ 1, Moves.CRUNCH ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.HOWL ], - [ 1, Moves.FLARE_BLITZ ], - [ 1, Moves.FIRE_FANG ], - [ 1, Moves.RETALIATE ], - [ 5, Moves.FLAMETHROWER ], - [ 64, Moves.RAGING_FURY ], - ], - [Species.HISUI_VOLTORB]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.CHARGE ], - [ 4, Moves.THUNDER_SHOCK ], - [ 6, Moves.STUN_SPORE ], - [ 9, Moves.BULLET_SEED ], - [ 11, Moves.ROLLOUT ], - [ 13, Moves.SCREECH ], - [ 16, Moves.CHARGE_BEAM ], - [ 20, Moves.SWIFT ], - [ 22, Moves.ELECTRO_BALL ], - [ 26, Moves.SELF_DESTRUCT ], - [ 29, Moves.ENERGY_BALL ], - [ 34, Moves.SEED_BOMB ], - [ 34, Moves.DISCHARGE ], - [ 41, Moves.EXPLOSION ], - [ 46, Moves.GYRO_BALL ], - [ 50, Moves.GRASSY_TERRAIN ], - ], - [Species.HISUI_ELECTRODE]: [ - [ EVOLVE_MOVE, Moves.CHLOROBLAST ], - [ 1, Moves.TACKLE ], - [ 1, Moves.CHARGE ], - [ 4, Moves.THUNDER_SHOCK ], - [ 6, Moves.STUN_SPORE ], - [ 9, Moves.BULLET_SEED ], - [ 11, Moves.ROLLOUT ], - [ 13, Moves.SCREECH ], - [ 16, Moves.CHARGE_BEAM ], - [ 20, Moves.SWIFT ], - [ 22, Moves.ELECTRO_BALL ], - [ 26, Moves.SELF_DESTRUCT ], - [ 29, Moves.ENERGY_BALL ], - [ 34, Moves.SEED_BOMB ], - [ 34, Moves.DISCHARGE ], - [ 41, Moves.EXPLOSION ], - [ 46, Moves.GYRO_BALL ], - [ 50, Moves.GRASSY_TERRAIN ], - ], - [Species.HISUI_TYPHLOSION]: [ - [ EVOLVE_MOVE, Moves.INFERNAL_PARADE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.LEER ], - [ 1, Moves.EMBER ], - [ 1, Moves.SMOKESCREEN ], - [ 1, Moves.ERUPTION ], - [ 1, Moves.GYRO_BALL ], - [ 13, Moves.QUICK_ATTACK ], - [ 20, Moves.FLAME_WHEEL ], - [ 24, Moves.DEFENSE_CURL ], - [ 31, Moves.SWIFT ], - [ 35, Moves.FLAME_CHARGE ], - [ 43, Moves.LAVA_PLUME ], - [ 48, Moves.FLAMETHROWER ], - [ 56, Moves.INFERNO ], - [ 61, Moves.ROLLOUT ], - [ 74, Moves.OVERHEAT ], - ], - [Species.HISUI_QWILFISH]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.POISON_STING ], - [ 4, Moves.HARDEN ], - [ 8, Moves.BITE ], - [ 12, Moves.FELL_STINGER ], - [ 16, Moves.MINIMIZE ], - [ 20, Moves.SPIKES ], - [ 24, Moves.BRINE ], - [ 28, Moves.BARB_BARRAGE ], - [ 32, Moves.PIN_MISSILE ], - [ 36, Moves.TOXIC_SPIKES ], - [ 40, Moves.STOCKPILE ], - [ 40, Moves.SPIT_UP ], - [ 44, Moves.TOXIC ], - [ 48, Moves.CRUNCH ], - [ 52, Moves.ACUPRESSURE ], - [ 56, Moves.DESTINY_BOND ], - ], - [Species.HISUI_SNEASEL]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.ROCK_SMASH ], - [ 6, Moves.TAUNT ], - [ 12, Moves.QUICK_ATTACK ], - [ 18, Moves.METAL_CLAW ], - [ 24, Moves.POISON_JAB ], - [ 30, Moves.BRICK_BREAK ], - [ 36, Moves.HONE_CLAWS ], - [ 42, Moves.SLASH ], - [ 48, Moves.AGILITY ], - [ 54, Moves.SCREECH ], - [ 60, Moves.CLOSE_COMBAT ], - ], - [Species.HISUI_SAMUROTT]: [ - [ EVOLVE_MOVE, Moves.CEASELESS_EDGE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.SOAK ], // Previous Stage Move - [ 1, Moves.SLASH ], - [ 1, Moves.MEGAHORN ], - [ 1, Moves.SUCKER_PUNCH ], - [ 13, Moves.FOCUS_ENERGY ], - [ 18, Moves.RAZOR_SHELL ], - [ 21, Moves.FURY_CUTTER ], - [ 25, Moves.WATER_PULSE ], - [ 29, Moves.AERIAL_ACE ], - [ 34, Moves.AQUA_JET ], - [ 39, Moves.ENCORE ], - [ 46, Moves.AQUA_TAIL ], - [ 51, Moves.RETALIATE ], - [ 58, Moves.SWORDS_DANCE ], - [ 63, Moves.HYDRO_PUMP ], - ], - [Species.HISUI_LILLIGANT]: [ - [ EVOLVE_MOVE, Moves.VICTORY_DANCE ], - [ 1, Moves.MEGA_KICK ], - [ 1, Moves.ABSORB ], - [ 1, Moves.MEGA_DRAIN ], - [ 1, Moves.LEECH_SEED ], - [ 1, Moves.GROWTH ], - [ 1, Moves.STUN_SPORE ], - [ 1, Moves.SLEEP_POWDER ], - [ 1, Moves.GIGA_DRAIN ], - [ 1, Moves.CHARM ], // Previous Stage Move - [ 1, Moves.SYNTHESIS ], - [ 1, Moves.SUNNY_DAY ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.TEETER_DANCE ], - [ 1, Moves.MAGICAL_LEAF ], - [ 1, Moves.LEAF_BLADE ], - [ 1, Moves.ENERGY_BALL ], - [ 1, Moves.DEFOG ], - [ 1, Moves.LEAF_STORM ], - [ 1, Moves.ENTRAINMENT ], - [ 1, Moves.AFTER_YOU ], - [ 1, Moves.PETAL_BLIZZARD ], - [ 1, Moves.SOLAR_BLADE ], - [ 5, Moves.AXE_KICK ], - ], - [Species.HISUI_ZORUA]: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 4, Moves.TORMENT ], - [ 8, Moves.HONE_CLAWS ], - [ 12, Moves.SHADOW_SNEAK ], - [ 16, Moves.CURSE ], - [ 20, Moves.TAUNT ], - [ 24, Moves.KNOCK_OFF ], - [ 28, Moves.SPITE ], - [ 32, Moves.AGILITY ], - [ 36, Moves.SHADOW_BALL ], - [ 40, Moves.BITTER_MALICE ], - [ 44, Moves.NASTY_PLOT ], - [ 48, Moves.FOUL_PLAY ], - ], - [Species.HISUI_ZOROARK]: [ - [ EVOLVE_MOVE, Moves.SHADOW_CLAW ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.TORMENT ], - [ 1, Moves.U_TURN ], - [ 1, Moves.HONE_CLAWS ], - [ 12, Moves.SHADOW_SNEAK ], - [ 16, Moves.CURSE ], - [ 20, Moves.TAUNT ], - [ 24, Moves.KNOCK_OFF ], - [ 28, Moves.SPITE ], - [ 34, Moves.AGILITY ], - [ 40, Moves.SHADOW_BALL ], - [ 46, Moves.BITTER_MALICE ], - [ 52, Moves.NASTY_PLOT ], - [ 58, Moves.FOUL_PLAY ], - ], - [Species.HISUI_BRAVIARY]: [ - [ EVOLVE_MOVE, Moves.ESPER_WING ], - [ RELEARN_MOVE, Moves.BRAVE_BIRD ], // Previous Stage Move - [ 1, Moves.WING_ATTACK ], - [ 1, Moves.LEER ], - [ 1, Moves.PECK ], - [ 1, Moves.SKY_ATTACK ], - [ 1, Moves.SUPERPOWER ], - [ 1, Moves.HONE_CLAWS ], - [ 18, Moves.TAILWIND ], - [ 24, Moves.SCARY_FACE ], - [ 30, Moves.AERIAL_ACE ], - [ 36, Moves.SLASH ], - [ 42, Moves.WHIRLWIND ], - [ 48, Moves.CRUSH_CLAW ], - [ 57, Moves.AIR_SLASH ], - [ 64, Moves.DEFOG ], - [ 72, Moves.THRASH ], - [ 80, Moves.HURRICANE ], - ], - [Species.HISUI_SLIGGOO]: [ - [ EVOLVE_MOVE, Moves.SHELTER ], - [ 1, Moves.TACKLE ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.ABSORB ], - [ 1, Moves.ACID_ARMOR ], - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.BODY_SLAM ], // Previous Stage Move - [ 15, Moves.PROTECT ], - [ 20, Moves.FLAIL ], - [ 25, Moves.WATER_PULSE ], - [ 30, Moves.RAIN_DANCE ], - [ 35, Moves.DRAGON_PULSE ], - [ 43, Moves.CURSE ], - [ 49, Moves.IRON_HEAD ], - [ 56, Moves.MUDDY_WATER ], - ], - [Species.HISUI_GOODRA]: [ - [ EVOLVE_MOVE, Moves.IRON_TAIL ], - [ 1, Moves.TACKLE ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.ABSORB ], - [ 1, Moves.ACID_ARMOR ], // Previous Stage Move - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.FEINT ], - [ 1, Moves.ACID_SPRAY ], - [ 1, Moves.TEARFUL_LOOK ], - [ 1, Moves.SHELTER ], - [ 15, Moves.PROTECT ], - [ 20, Moves.FLAIL ], - [ 25, Moves.WATER_PULSE ], - [ 30, Moves.RAIN_DANCE ], - [ 35, Moves.DRAGON_PULSE ], - [ 43, Moves.CURSE ], - [ 49, Moves.BODY_SLAM ], - [ 49, Moves.IRON_HEAD ], - [ 58, Moves.MUDDY_WATER ], - [ 67, Moves.HEAVY_SLAM ], - ], - [Species.HISUI_AVALUGG]: [ - [ EVOLVE_MOVE, Moves.ROCK_SLIDE ], - [ 1, Moves.TACKLE ], - [ 1, Moves.HARDEN ], - [ 1, Moves.POWDER_SNOW ], - [ 1, Moves.RAPID_SPIN ], - [ 1, Moves.WIDE_GUARD ], - [ 9, Moves.CURSE ], - [ 12, Moves.ICY_WIND ], - [ 15, Moves.PROTECT ], - [ 18, Moves.AVALANCHE ], - [ 21, Moves.BITE ], - [ 24, Moves.ICE_FANG ], - [ 27, Moves.IRON_DEFENSE ], - [ 30, Moves.RECOVER ], - [ 33, Moves.CRUNCH ], - [ 36, Moves.TAKE_DOWN ], - [ 41, Moves.BLIZZARD ], - [ 46, Moves.DOUBLE_EDGE ], - [ 51, Moves.STONE_EDGE ], - [ 61, Moves.MOUNTAIN_GALE ], - ], - [Species.HISUI_DECIDUEYE]: [ - [ EVOLVE_MOVE, Moves.TRIPLE_ARROWS ], - [ RELEARN_MOVE, Moves.NASTY_PLOT ], // Previous Stage Move - [ 1, Moves.TACKLE ], - [ 1, Moves.GROWL ], - [ 1, Moves.U_TURN ], - [ 1, Moves.ASTONISH ], // Previous Stage Move - [ 1, Moves.LEAF_STORM ], - [ 1, Moves.LEAFAGE ], - [ 9, Moves.PECK ], - [ 12, Moves.SHADOW_SNEAK ], - [ 15, Moves.RAZOR_LEAF ], - [ 20, Moves.SYNTHESIS ], - [ 25, Moves.PLUCK ], - [ 30, Moves.BULK_UP ], - [ 37, Moves.SUCKER_PUNCH ], - [ 44, Moves.LEAF_BLADE ], - [ 51, Moves.FEATHER_DANCE ], - [ 58, Moves.BRAVE_BIRD ], - ], - [Species.PALDEA_TAUROS]: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 5, Moves.WORK_UP ], - [ 10, Moves.DOUBLE_KICK ], - [ 15, Moves.ASSURANCE ], - [ 20, Moves.HEADBUTT ], - [ 25, Moves.SCARY_FACE ], - [ 30, Moves.ZEN_HEADBUTT ], - [ 35, Moves.RAGING_BULL ], - [ 40, Moves.REST ], - [ 45, Moves.SWAGGER ], - [ 50, Moves.THRASH ], - [ 55, Moves.DOUBLE_EDGE ], - [ 60, Moves.CLOSE_COMBAT ], - ], - [Species.PALDEA_WOOPER]: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.MUD_SHOT ], - [ 4, Moves.TACKLE ], - [ 8, Moves.POISON_TAIL ], - [ 12, Moves.TOXIC_SPIKES ], - [ 16, Moves.SLAM ], - [ 21, Moves.YAWN ], - [ 24, Moves.POISON_JAB ], - [ 28, Moves.SLUDGE_WAVE ], - [ 32, Moves.AMNESIA ], - [ 36, Moves.TOXIC ], - [ 40, Moves.EARTHQUAKE ], - ], - [Species.BLOODMOON_URSALUNA]: [ - [ RELEARN_MOVE, Moves.MOONLIGHT ], - [ 1, Moves.HEADLONG_RUSH ], - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.LICK ], - [ 8, Moves.FURY_SWIPES ], - [ 13, Moves.PAYBACK ], - [ 17, Moves.HARDEN ], - [ 22, Moves.SLASH ], - [ 25, Moves.PLAY_NICE ], - [ 35, Moves.SCARY_FACE ], - [ 41, Moves.REST ], - [ 41, Moves.SNORE ], - [ 48, Moves.EARTH_POWER ], - [ 56, Moves.MOONBLAST ], - [ 64, Moves.HAMMER_ARM ], - [ 70, Moves.BLOOD_MOON ], + [ RELEARN_MOVE, MoveId.SCRATCH ], + [ RELEARN_MOVE, MoveId.PLAY_NICE ], + [ RELEARN_MOVE, MoveId.WATER_GUN ], + [ RELEARN_MOVE, MoveId.WATER_SPORT ], + [ RELEARN_MOVE, MoveId.BITE ], + [ RELEARN_MOVE, MoveId.TAUNT ], + [ RELEARN_MOVE, MoveId.FLING ], + [ RELEARN_MOVE, MoveId.ACROBATICS ], + [ RELEARN_MOVE, MoveId.BRINE ], + [ RELEARN_MOVE, MoveId.RECYCLE ], + [ RELEARN_MOVE, MoveId.NATURAL_GIFT ], + [ RELEARN_MOVE, MoveId.CRUNCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.LICK ], + [ 1, MoveId.FURY_SWIPES ], + [ 1, MoveId.SCALD ], + ], + [SpeciesId.MUNNA]: [ + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.STORED_POWER ], + [ 1, MoveId.PSYWAVE ], + [ 4, MoveId.HYPNOSIS ], + [ 8, MoveId.PSYBEAM ], + [ 12, MoveId.IMPRISON ], + [ 16, MoveId.MOONLIGHT ], + [ 20, MoveId.MAGIC_COAT ], + [ 24, MoveId.ZEN_HEADBUTT ], + [ 28, MoveId.CALM_MIND ], + [ 32, MoveId.YAWN ], + [ 36, MoveId.PSYCHIC ], + [ 40, MoveId.MOONBLAST ], + [ 44, MoveId.DREAM_EATER ], + [ 48, MoveId.FUTURE_SIGHT ], + [ 52, MoveId.WONDER_ROOM ], + ], + [SpeciesId.MUSHARNA]: [ + [ 1, MoveId.PSYWAVE ], // Previous Stage Move + [ 1, MoveId.PSYBEAM ], + [ 1, MoveId.PSYCHIC ], + [ 1, MoveId.HYPNOSIS ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.LUCKY_CHANT ], + [ 1, MoveId.DREAM_EATER ], + [ 1, MoveId.MOONLIGHT ], + [ 1, MoveId.FUTURE_SIGHT ], + [ 1, MoveId.MAGIC_COAT ], + [ 1, MoveId.YAWN ], + [ 1, MoveId.IMPRISON ], + [ 1, MoveId.CALM_MIND ], + [ 1, MoveId.ZEN_HEADBUTT ], + [ 1, MoveId.WONDER_ROOM ], + [ 1, MoveId.STORED_POWER ], + [ 1, MoveId.MOONBLAST ], + [ 1, MoveId.PSYCHIC_TERRAIN ], + ], + [SpeciesId.PIDOVE]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.GROWL ], + [ 4, MoveId.LEER ], + [ 8, MoveId.QUICK_ATTACK ], + [ 12, MoveId.TAUNT ], + [ 16, MoveId.AIR_CUTTER ], + [ 20, MoveId.SWAGGER ], + [ 24, MoveId.FEATHER_DANCE ], + [ 28, MoveId.DETECT ], + [ 32, MoveId.AIR_SLASH ], + [ 36, MoveId.ROOST ], + [ 40, MoveId.TAILWIND ], + [ 44, MoveId.SKY_ATTACK ], + ], + [SpeciesId.TRANQUILL]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.LEER ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.QUICK_ATTACK ], + [ 12, MoveId.TAUNT ], + [ 16, MoveId.AIR_CUTTER ], + [ 20, MoveId.SWAGGER ], + [ 26, MoveId.FEATHER_DANCE ], + [ 34, MoveId.DETECT ], + [ 38, MoveId.AIR_SLASH ], + [ 44, MoveId.ROOST ], + [ 50, MoveId.TAILWIND ], + [ 56, MoveId.SKY_ATTACK ], + ], + [SpeciesId.UNFEZANT]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.LEER ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.QUICK_ATTACK ], + [ 12, MoveId.TAUNT ], + [ 16, MoveId.AIR_CUTTER ], + [ 20, MoveId.SWAGGER ], + [ 26, MoveId.FEATHER_DANCE ], + [ 36, MoveId.DETECT ], + [ 42, MoveId.AIR_SLASH ], + [ 50, MoveId.ROOST ], + [ 58, MoveId.TAILWIND ], + [ 66, MoveId.SKY_ATTACK ], + ], + [SpeciesId.BLITZLE]: [ + [ 1, MoveId.QUICK_ATTACK ], + [ 4, MoveId.TAIL_WHIP ], + [ 8, MoveId.CHARGE ], + [ 11, MoveId.SHOCK_WAVE ], + [ 15, MoveId.THUNDER_WAVE ], + [ 18, MoveId.FLAME_CHARGE ], + [ 22, MoveId.SPARK ], + [ 25, MoveId.STOMP ], + [ 29, MoveId.DISCHARGE ], + [ 33, MoveId.AGILITY ], + [ 35, MoveId.WILD_CHARGE ], + [ 40, MoveId.THRASH ], + ], + [SpeciesId.ZEBSTRIKA]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.CHARGE ], + [ 1, MoveId.ION_DELUGE ], + [ 11, MoveId.SHOCK_WAVE ], + [ 18, MoveId.FLAME_CHARGE ], + [ 25, MoveId.SPARK ], + [ 31, MoveId.STOMP ], + [ 36, MoveId.DISCHARGE ], + [ 42, MoveId.AGILITY ], + [ 47, MoveId.WILD_CHARGE ], + [ 53, MoveId.THRASH ], + ], + [SpeciesId.ROGGENROLA]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 4, MoveId.HARDEN ], + [ 8, MoveId.STEALTH_ROCK ], + [ 12, MoveId.MUD_SLAP ], + [ 16, MoveId.SMACK_DOWN ], + [ 20, MoveId.IRON_DEFENSE ], + [ 24, MoveId.HEADBUTT ], + [ 28, MoveId.ROCK_SLIDE ], + [ 32, MoveId.ROCK_BLAST ], + [ 36, MoveId.SANDSTORM ], + [ 40, MoveId.STONE_EDGE ], + [ 44, MoveId.EXPLOSION ], + ], + [SpeciesId.BOLDORE]: [ + [ EVOLVE_MOVE, MoveId.POWER_GEM ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.STEALTH_ROCK ], + [ 12, MoveId.MUD_SLAP ], + [ 16, MoveId.SMACK_DOWN ], + [ 20, MoveId.IRON_DEFENSE ], + [ 24, MoveId.HEADBUTT ], + [ 30, MoveId.ROCK_SLIDE ], + [ 36, MoveId.ROCK_BLAST ], + [ 42, MoveId.SANDSTORM ], + [ 48, MoveId.STONE_EDGE ], + [ 54, MoveId.EXPLOSION ], + ], + [SpeciesId.GIGALITH]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.POWER_GEM ], + [ 1, MoveId.STEALTH_ROCK ], + [ 12, MoveId.MUD_SLAP ], + [ 16, MoveId.SMACK_DOWN ], + [ 20, MoveId.IRON_DEFENSE ], + [ 24, MoveId.HEADBUTT ], + [ 30, MoveId.ROCK_SLIDE ], + [ 36, MoveId.ROCK_BLAST ], + [ 42, MoveId.SANDSTORM ], + [ 48, MoveId.STONE_EDGE ], + [ 54, MoveId.EXPLOSION ], + ], + [SpeciesId.WOOBAT]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.ATTRACT ], + [ 5, MoveId.CONFUSION ], + [ 10, MoveId.ENDEAVOR ], + [ 15, MoveId.AIR_CUTTER ], + [ 20, MoveId.IMPRISON ], + [ 25, MoveId.ASSURANCE ], + [ 30, MoveId.AMNESIA ], + [ 35, MoveId.AIR_SLASH ], + [ 40, MoveId.PSYCHIC ], + [ 45, MoveId.CALM_MIND ], + [ 50, MoveId.FUTURE_SIGHT ], + [ 55, MoveId.SIMPLE_BEAM ], + ], + [SpeciesId.SWOOBAT]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.ATTRACT ], + [ 1, MoveId.ENDEAVOR ], + [ 15, MoveId.AIR_CUTTER ], + [ 20, MoveId.IMPRISON ], + [ 25, MoveId.ASSURANCE ], + [ 30, MoveId.AMNESIA ], + [ 35, MoveId.AIR_SLASH ], + [ 40, MoveId.PSYCHIC ], + [ 45, MoveId.CALM_MIND ], + [ 50, MoveId.FUTURE_SIGHT ], + [ 55, MoveId.SIMPLE_BEAM ], + ], + [SpeciesId.DRILBUR]: [ + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.MUD_SPORT ], + [ 4, MoveId.SCRATCH ], + [ 8, MoveId.HONE_CLAWS ], + [ 12, MoveId.FURY_SWIPES ], + [ 16, MoveId.METAL_CLAW ], + [ 20, MoveId.SANDSTORM ], + [ 24, MoveId.CRUSH_CLAW ], + [ 28, MoveId.ROCK_SLIDE ], + [ 32, MoveId.DIG ], + [ 36, MoveId.SWORDS_DANCE ], + [ 40, MoveId.DRILL_RUN ], + [ 44, MoveId.EARTHQUAKE ], + [ 48, MoveId.FISSURE ], + ], + [SpeciesId.EXCADRILL]: [ + [ EVOLVE_MOVE, MoveId.HORN_DRILL ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.MUD_SPORT ], + [ 1, MoveId.ROTOTILLER ], + [ 1, MoveId.HONE_CLAWS ], + [ 12, MoveId.FURY_SWIPES ], + [ 16, MoveId.METAL_CLAW ], + [ 20, MoveId.SANDSTORM ], + [ 24, MoveId.CRUSH_CLAW ], + [ 28, MoveId.ROCK_SLIDE ], + [ 34, MoveId.DIG ], + [ 40, MoveId.SWORDS_DANCE ], + [ 46, MoveId.DRILL_RUN ], + [ 52, MoveId.EARTHQUAKE ], + [ 58, MoveId.FISSURE ], + ], + [SpeciesId.AUDINO]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.PLAY_NICE ], + [ 4, MoveId.DISARMING_VOICE ], + [ 9, MoveId.BABY_DOLL_EYES ], + [ 12, MoveId.HELPING_HAND ], + [ 16, MoveId.GROWL ], + [ 20, MoveId.ZEN_HEADBUTT ], + [ 24, MoveId.LIFE_DEW ], + [ 28, MoveId.AFTER_YOU ], + [ 32, MoveId.TAKE_DOWN ], + [ 36, MoveId.SIMPLE_BEAM ], + [ 40, MoveId.HYPER_VOICE ], + [ 44, MoveId.HEAL_PULSE ], + [ 48, MoveId.DOUBLE_EDGE ], + [ 52, MoveId.ENTRAINMENT ], + [ 56, MoveId.MISTY_TERRAIN ], + [ 60, MoveId.LAST_RESORT ], + ], + [SpeciesId.TIMBURR]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.LEER ], + [ 4, MoveId.LOW_KICK ], + [ 8, MoveId.ROCK_THROW ], + [ 12, MoveId.FOCUS_ENERGY ], + [ 16, MoveId.BULK_UP ], + [ 20, MoveId.ROCK_SLIDE ], + [ 24, MoveId.SLAM ], + [ 28, MoveId.SCARY_FACE ], + [ 32, MoveId.DYNAMIC_PUNCH ], + [ 36, MoveId.HAMMER_ARM ], + [ 40, MoveId.STONE_EDGE ], + [ 44, MoveId.SUPERPOWER ], + [ 48, MoveId.FOCUS_PUNCH ], + ], + [SpeciesId.GURDURR]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.LEER ], + [ 1, MoveId.LOW_KICK ], + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.BIDE ], + [ 12, MoveId.FOCUS_ENERGY ], + [ 16, MoveId.BULK_UP ], + [ 20, MoveId.ROCK_SLIDE ], + [ 24, MoveId.SLAM ], + [ 30, MoveId.SCARY_FACE ], + [ 36, MoveId.DYNAMIC_PUNCH ], + [ 42, MoveId.HAMMER_ARM ], + [ 48, MoveId.STONE_EDGE ], + [ 54, MoveId.SUPERPOWER ], + [ 60, MoveId.FOCUS_PUNCH ], + ], + [SpeciesId.CONKELDURR]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.LEER ], + [ 1, MoveId.LOW_KICK ], + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.BIDE ], + [ 12, MoveId.FOCUS_ENERGY ], + [ 16, MoveId.BULK_UP ], + [ 20, MoveId.ROCK_SLIDE ], + [ 24, MoveId.SLAM ], + [ 30, MoveId.SCARY_FACE ], + [ 36, MoveId.DYNAMIC_PUNCH ], + [ 42, MoveId.HAMMER_ARM ], + [ 48, MoveId.STONE_EDGE ], + [ 54, MoveId.SUPERPOWER ], + [ 60, MoveId.FOCUS_PUNCH ], + ], + [SpeciesId.TYMPOLE]: [ + [ 1, MoveId.BUBBLE ], //USUM + [ 1, MoveId.GROWL ], + [ 1, MoveId.ECHOED_VOICE ], + [ 4, MoveId.ACID ], + [ 8, MoveId.SUPERSONIC ], + [ 12, MoveId.MUD_SHOT ], + [ 16, MoveId.ROUND ], + [ 20, MoveId.BUBBLE_BEAM ], + [ 24, MoveId.FLAIL ], + [ 28, MoveId.UPROAR ], + [ 32, MoveId.AQUA_RING ], + [ 36, MoveId.HYPER_VOICE ], + [ 40, MoveId.MUDDY_WATER ], + [ 44, MoveId.RAIN_DANCE ], + [ 48, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.PALPITOAD]: [ + [ 1, MoveId.BUBBLE ], //USUM + [ 1, MoveId.GROWL ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.ACID ], + [ 1, MoveId.ECHOED_VOICE ], + [ 12, MoveId.MUD_SHOT ], + [ 16, MoveId.ROUND ], + [ 20, MoveId.BUBBLE_BEAM ], + [ 24, MoveId.FLAIL ], + [ 30, MoveId.UPROAR ], + [ 37, MoveId.AQUA_RING ], + [ 42, MoveId.HYPER_VOICE ], + [ 48, MoveId.MUDDY_WATER ], + [ 54, MoveId.RAIN_DANCE ], + [ 60, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.SEISMITOAD]: [ + [ EVOLVE_MOVE, MoveId.DRAIN_PUNCH ], + [ 1, MoveId.BUBBLE ], //USUM + [ 1, MoveId.GROWL ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.ACID ], + [ 1, MoveId.GASTRO_ACID ], + [ 1, MoveId.ECHOED_VOICE ], + [ 12, MoveId.MUD_SHOT ], + [ 16, MoveId.ROUND ], + [ 20, MoveId.BUBBLE_BEAM ], + [ 24, MoveId.FLAIL ], + [ 30, MoveId.UPROAR ], + [ 39, MoveId.AQUA_RING ], + [ 46, MoveId.HYPER_VOICE ], + [ 54, MoveId.MUDDY_WATER ], + [ 62, MoveId.RAIN_DANCE ], + [ 70, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.THROH]: [ + [ 1, MoveId.ROCK_SMASH ], // Custom + [ 1, MoveId.LEER ], + [ 1, MoveId.BIDE ], + [ 1, MoveId.MAT_BLOCK ], + [ 1, MoveId.BIND ], + [ 5, MoveId.FOCUS_ENERGY ], + [ 10, MoveId.CIRCLE_THROW ], + [ 15, MoveId.WIDE_GUARD ], + [ 20, MoveId.REVENGE ], + [ 25, MoveId.BULK_UP ], + [ 30, MoveId.STORM_THROW ], + [ 35, MoveId.VITAL_THROW ], + [ 40, MoveId.SEISMIC_TOSS ], + [ 45, MoveId.ENDURE ], + [ 50, MoveId.REVERSAL ], + [ 55, MoveId.SUPERPOWER ], + ], + [SpeciesId.SAWK]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.ROCK_SMASH ], + [ 1, MoveId.BIDE ], + [ 5, MoveId.FOCUS_ENERGY ], + [ 10, MoveId.DOUBLE_KICK ], + [ 15, MoveId.QUICK_GUARD ], + [ 20, MoveId.LOW_SWEEP ], + [ 25, MoveId.BULK_UP ], + [ 30, MoveId.RETALIATE ], + [ 35, MoveId.BRICK_BREAK ], + [ 40, MoveId.COUNTER ], + [ 45, MoveId.ENDURE ], + [ 50, MoveId.REVERSAL ], + [ 55, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.SEWADDLE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.STRING_SHOT ], + [ 8, MoveId.BUG_BITE ], + [ 15, MoveId.RAZOR_LEAF ], + [ 22, MoveId.STRUGGLE_BUG ], + [ 29, MoveId.ENDURE ], + [ 31, MoveId.STICKY_WEB ], + [ 36, MoveId.BUG_BUZZ ], + [ 43, MoveId.FLAIL ], + ], + [SpeciesId.SWADLOON]: [ + [ EVOLVE_MOVE, MoveId.PROTECT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.RAZOR_LEAF ], + [ 1, MoveId.STRING_SHOT ], + [ 1, MoveId.BUG_BITE ], + [ 1, MoveId.GRASS_WHISTLE ], + [ 22, MoveId.STRUGGLE_BUG ], + [ 29, MoveId.ENDURE ], + [ 31, MoveId.STICKY_WEB ], + [ 36, MoveId.BUG_BUZZ ], + [ 43, MoveId.FLAIL ], + ], + [SpeciesId.LEAVANNY]: [ + [ EVOLVE_MOVE, MoveId.SLASH ], + [ RELEARN_MOVE, MoveId.BUG_BITE ], + [ RELEARN_MOVE, MoveId.STICKY_WEB ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.BUG_BUZZ ], // Previous Stage Move + [ 1, MoveId.PROTECT ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.RAZOR_LEAF ], + [ 1, MoveId.STRING_SHOT ], + [ 1, MoveId.GRASS_WHISTLE ], // Previous Stage Move + [ 1, MoveId.ENDURE ], // Previous Stage Move + [ 1, MoveId.FLAIL ], // Previous Stage Move + [ 1, MoveId.FALSE_SWIPE ], + [ 22, MoveId.STRUGGLE_BUG ], + [ 29, MoveId.FELL_STINGER ], + [ 32, MoveId.HELPING_HAND ], + [ 36, MoveId.LEAF_BLADE ], + [ 39, MoveId.X_SCISSOR ], + [ 43, MoveId.ENTRAINMENT ], + [ 46, MoveId.SWORDS_DANCE ], + [ 50, MoveId.LEAF_STORM ], + ], + [SpeciesId.VENIPEDE]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.DEFENSE_CURL ], + [ 4, MoveId.ROLLOUT ], + [ 8, MoveId.PROTECT ], + [ 12, MoveId.POISON_TAIL ], + [ 16, MoveId.SCREECH ], + [ 20, MoveId.BUG_BITE ], + [ 24, MoveId.VENOSHOCK ], + [ 28, MoveId.TAKE_DOWN ], + [ 32, MoveId.AGILITY ], + [ 36, MoveId.TOXIC ], + [ 40, MoveId.VENOM_DRENCH ], + [ 44, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.WHIRLIPEDE]: [ + [ EVOLVE_MOVE, MoveId.IRON_DEFENSE ], + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.ROLLOUT ], + [ 12, MoveId.POISON_TAIL ], + [ 16, MoveId.SCREECH ], + [ 20, MoveId.BUG_BITE ], + [ 26, MoveId.VENOSHOCK ], + [ 32, MoveId.TAKE_DOWN ], + [ 38, MoveId.AGILITY ], + [ 44, MoveId.TOXIC ], + [ 50, MoveId.VENOM_DRENCH ], + [ 56, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.SCOLIPEDE]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.ROLLOUT ], + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.IRON_DEFENSE ], + [ 12, MoveId.POISON_TAIL ], + [ 16, MoveId.SCREECH ], + [ 20, MoveId.BUG_BITE ], + [ 26, MoveId.VENOSHOCK ], + [ 34, MoveId.TAKE_DOWN ], + [ 42, MoveId.AGILITY ], + [ 50, MoveId.TOXIC ], + [ 58, MoveId.VENOM_DRENCH ], + [ 66, MoveId.DOUBLE_EDGE ], + [ 74, MoveId.MEGAHORN ], + ], + [SpeciesId.COTTONEE]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.HELPING_HAND ], + [ 3, MoveId.FAIRY_WIND ], + [ 6, MoveId.STUN_SPORE ], + [ 12, MoveId.MEGA_DRAIN ], + [ 15, MoveId.RAZOR_LEAF ], + [ 18, MoveId.GROWTH ], + [ 21, MoveId.POISON_POWDER ], + [ 24, MoveId.GIGA_DRAIN ], + [ 27, MoveId.CHARM ], + [ 30, MoveId.LEECH_SEED ], + [ 33, MoveId.COTTON_SPORE ], + [ 36, MoveId.ENERGY_BALL ], + [ 39, MoveId.SUNNY_DAY ], + [ 42, MoveId.ENDEAVOR ], + [ 45, MoveId.COTTON_GUARD ], + [ 48, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.WHIMSICOTT]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.MEGA_DRAIN ], + [ 1, MoveId.LEECH_SEED ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.RAZOR_LEAF ], + [ 1, MoveId.SOLAR_BEAM ], + [ 1, MoveId.POISON_POWDER ], + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.COTTON_SPORE ], + [ 1, MoveId.GIGA_DRAIN ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.SUNNY_DAY ], + [ 1, MoveId.MEMENTO ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.ENDEAVOR ], + [ 1, MoveId.TAILWIND ], + [ 1, MoveId.ENERGY_BALL ], + [ 1, MoveId.COTTON_GUARD ], + [ 1, MoveId.HURRICANE ], + [ 1, MoveId.FAIRY_WIND ], + [ 1, MoveId.MOONBLAST ], + ], + [SpeciesId.PETILIL]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.GROWTH ], + [ 3, MoveId.HELPING_HAND ], + [ 6, MoveId.STUN_SPORE ], + [ 9, MoveId.MEGA_DRAIN ], + [ 12, MoveId.CHARM ], + [ 15, MoveId.MAGICAL_LEAF ], + [ 18, MoveId.SLEEP_POWDER ], + [ 21, MoveId.GIGA_DRAIN ], + [ 24, MoveId.LEECH_SEED ], + [ 27, MoveId.AFTER_YOU ], + [ 30, MoveId.ENERGY_BALL ], + [ 33, MoveId.SYNTHESIS ], + [ 36, MoveId.SUNNY_DAY ], + [ 39, MoveId.ENTRAINMENT ], + [ 42, MoveId.LEAF_STORM ], + ], + [SpeciesId.LILLIGANT]: [ + [ EVOLVE_MOVE, MoveId.PETAL_DANCE ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.MEGA_DRAIN ], + [ 1, MoveId.LEECH_SEED ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.SLEEP_POWDER ], + [ 1, MoveId.GIGA_DRAIN ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.SYNTHESIS ], + [ 1, MoveId.SUNNY_DAY ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.TEETER_DANCE ], + [ 1, MoveId.ENERGY_BALL ], + [ 1, MoveId.LEAF_STORM ], + [ 1, MoveId.QUIVER_DANCE ], + [ 1, MoveId.ENTRAINMENT ], + [ 1, MoveId.AFTER_YOU ], + [ 1, MoveId.PETAL_BLIZZARD ], + [ 5, MoveId.MAGICAL_LEAF ], + ], + [SpeciesId.BASCULIN]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_GUN ], + [ 4, MoveId.TACKLE ], + [ 8, MoveId.FLAIL ], + [ 12, MoveId.AQUA_JET ], + [ 16, MoveId.BITE ], + [ 20, MoveId.SCARY_FACE ], + [ 24, MoveId.HEADBUTT ], + [ 28, MoveId.SOAK ], + [ 32, MoveId.CRUNCH ], + [ 36, MoveId.TAKE_DOWN ], + [ 40, MoveId.FINAL_GAMBIT ], + [ 44, MoveId.WAVE_CRASH ], + [ 48, MoveId.THRASH ], + [ 52, MoveId.DOUBLE_EDGE ], + [ 56, MoveId.HEAD_SMASH ], + ], + [SpeciesId.SANDILE]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.POWER_TRIP ], + [ 3, MoveId.SAND_ATTACK ], + [ 6, MoveId.HONE_CLAWS ], + [ 9, MoveId.SAND_TOMB ], + [ 12, MoveId.SCARY_FACE ], + [ 15, MoveId.BITE ], + [ 18, MoveId.TORMENT ], + [ 21, MoveId.DIG ], + [ 24, MoveId.SWAGGER ], + [ 27, MoveId.CRUNCH ], + [ 30, MoveId.SANDSTORM ], + [ 33, MoveId.FOUL_PLAY ], + [ 36, MoveId.EARTHQUAKE ], + [ 39, MoveId.THRASH ], + ], + [SpeciesId.KROKOROK]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.LEER ], + [ 1, MoveId.HONE_CLAWS ], + [ 1, MoveId.POWER_TRIP ], + [ 9, MoveId.SAND_TOMB ], + [ 12, MoveId.SCARY_FACE ], + [ 15, MoveId.BITE ], + [ 18, MoveId.TORMENT ], + [ 21, MoveId.DIG ], + [ 24, MoveId.SWAGGER ], + [ 27, MoveId.CRUNCH ], + [ 32, MoveId.SANDSTORM ], + [ 35, MoveId.FOUL_PLAY ], + [ 42, MoveId.EARTHQUAKE ], + [ 47, MoveId.THRASH ], + ], + [SpeciesId.KROOKODILE]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.LEER ], + [ 1, MoveId.HONE_CLAWS ], + [ 1, MoveId.POWER_TRIP ], + [ 9, MoveId.SAND_TOMB ], + [ 12, MoveId.SCARY_FACE ], + [ 15, MoveId.BITE ], + [ 18, MoveId.TORMENT ], + [ 21, MoveId.DIG ], + [ 24, MoveId.SWAGGER ], + [ 27, MoveId.CRUNCH ], + [ 32, MoveId.SANDSTORM ], + [ 35, MoveId.FOUL_PLAY ], + [ 44, MoveId.EARTHQUAKE ], + [ 51, MoveId.THRASH ], + [ 58, MoveId.OUTRAGE ], + ], + [SpeciesId.DARUMAKA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.EMBER ], + [ 4, MoveId.TAUNT ], + [ 8, MoveId.BITE ], + [ 12, MoveId.INCINERATE ], + [ 16, MoveId.WORK_UP ], + [ 20, MoveId.FIRE_FANG ], + [ 24, MoveId.HEADBUTT ], + [ 28, MoveId.FIRE_PUNCH ], + [ 32, MoveId.UPROAR ], + [ 36, MoveId.BELLY_DRUM ], + [ 40, MoveId.FLARE_BLITZ ], + [ 44, MoveId.THRASH ], + [ 48, MoveId.SUPERPOWER ], + ], + [SpeciesId.DARMANITAN]: [ + [ EVOLVE_MOVE, MoveId.HAMMER_ARM ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.BITE ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.TAUNT ], + [ 12, MoveId.INCINERATE ], + [ 16, MoveId.WORK_UP ], + [ 20, MoveId.FIRE_FANG ], + [ 24, MoveId.HEADBUTT ], + [ 28, MoveId.FIRE_PUNCH ], + [ 32, MoveId.UPROAR ], + [ 38, MoveId.BELLY_DRUM ], + [ 44, MoveId.FLARE_BLITZ ], + [ 50, MoveId.THRASH ], + [ 56, MoveId.SUPERPOWER ], + ], + [SpeciesId.MARACTUS]: [ + [ 1, MoveId.PECK ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.INGRAIN ], + [ 1, MoveId.AFTER_YOU ], + [ 1, MoveId.SPIKY_SHIELD ], + [ 4, MoveId.GROWTH ], + [ 8, MoveId.MEGA_DRAIN ], + [ 12, MoveId.LEECH_SEED ], + [ 16, MoveId.SUCKER_PUNCH ], + [ 20, MoveId.PIN_MISSILE ], + [ 24, MoveId.GIGA_DRAIN ], + [ 28, MoveId.SWEET_SCENT ], + [ 32, MoveId.SYNTHESIS ], + [ 36, MoveId.PETAL_BLIZZARD ], + [ 40, MoveId.COTTON_SPORE ], + [ 44, MoveId.SUNNY_DAY ], + [ 48, MoveId.SOLAR_BEAM ], + [ 52, MoveId.ACUPRESSURE ], + [ 56, MoveId.PETAL_DANCE ], + [ 60, MoveId.COTTON_GUARD ], + ], + [SpeciesId.DWEBBLE]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.FURY_CUTTER ], + [ 4, MoveId.WITHDRAW ], + [ 8, MoveId.SMACK_DOWN ], + [ 12, MoveId.BUG_BITE ], + [ 16, MoveId.FLAIL ], + [ 20, MoveId.SLASH ], + [ 24, MoveId.ROCK_SLIDE ], + [ 28, MoveId.STEALTH_ROCK ], + [ 32, MoveId.ROCK_BLAST ], + [ 36, MoveId.X_SCISSOR ], + [ 40, MoveId.ROCK_POLISH ], + [ 44, MoveId.SHELL_SMASH ], + [ 48, MoveId.ROCK_WRECKER ], + ], + [SpeciesId.CRUSTLE]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.SMACK_DOWN ], + [ 12, MoveId.BUG_BITE ], + [ 16, MoveId.FLAIL ], + [ 20, MoveId.SLASH ], + [ 24, MoveId.ROCK_SLIDE ], + [ 28, MoveId.STEALTH_ROCK ], + [ 32, MoveId.ROCK_BLAST ], + [ 38, MoveId.X_SCISSOR ], + [ 44, MoveId.ROCK_POLISH ], + [ 50, MoveId.SHELL_SMASH ], + [ 56, MoveId.ROCK_WRECKER ], + ], + [SpeciesId.SCRAGGY]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.LOW_KICK ], + [ 4, MoveId.PAYBACK ], + [ 8, MoveId.HEADBUTT ], + [ 12, MoveId.SAND_ATTACK ], + [ 16, MoveId.FACADE ], + [ 20, MoveId.PROTECT ], + [ 24, MoveId.BEAT_UP ], + [ 28, MoveId.SCARY_FACE ], + [ 32, MoveId.BRICK_BREAK ], + [ 36, MoveId.SWAGGER ], + [ 40, MoveId.CRUNCH ], + [ 44, MoveId.HIGH_JUMP_KICK ], + [ 48, MoveId.FOCUS_PUNCH ], + [ 52, MoveId.HEAD_SMASH ], + ], + [SpeciesId.SCRAFTY]: [ + [ 1, MoveId.HEADBUTT ], + [ 1, MoveId.LEER ], + [ 1, MoveId.LOW_KICK ], + [ 1, MoveId.PAYBACK ], + [ 1, MoveId.FEINT_ATTACK ], + [ 12, MoveId.SAND_ATTACK ], + [ 16, MoveId.FACADE ], + [ 20, MoveId.PROTECT ], + [ 24, MoveId.BEAT_UP ], + [ 28, MoveId.SCARY_FACE ], + [ 32, MoveId.BRICK_BREAK ], + [ 36, MoveId.SWAGGER ], + [ 42, MoveId.CRUNCH ], + [ 48, MoveId.HIGH_JUMP_KICK ], + [ 54, MoveId.FOCUS_PUNCH ], + [ 60, MoveId.HEAD_SMASH ], + ], + [SpeciesId.SIGILYPH]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.CONFUSION ], + [ 5, MoveId.GRAVITY ], + [ 10, MoveId.HYPNOSIS ], + [ 15, MoveId.AIR_CUTTER ], + [ 20, MoveId.PSYBEAM ], + [ 25, MoveId.WHIRLWIND ], + [ 30, MoveId.COSMIC_POWER ], + [ 35, MoveId.AIR_SLASH ], + [ 40, MoveId.PSYCHIC ], + [ 45, MoveId.TAILWIND ], + [ 50, MoveId.LIGHT_SCREEN ], + [ 50, MoveId.REFLECT ], + [ 55, MoveId.SKY_ATTACK ], + [ 60, MoveId.SKILL_SWAP ], + ], + [SpeciesId.YAMASK]: [ + [ 1, MoveId.PROTECT ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.HEAL_BLOCK ], + [ 4, MoveId.HAZE ], + [ 8, MoveId.NIGHT_SHADE ], + [ 12, MoveId.DISABLE ], + [ 16, MoveId.WILL_O_WISP ], + [ 20, MoveId.CRAFTY_SHIELD ], + [ 24, MoveId.HEX ], + [ 28, MoveId.MEAN_LOOK ], + [ 32, MoveId.GRUDGE ], + [ 36, MoveId.CURSE ], + [ 40, MoveId.SHADOW_BALL ], + [ 44, MoveId.DARK_PULSE ], + [ 48, MoveId.GUARD_SPLIT ], + [ 48, MoveId.POWER_SPLIT ], + [ 52, MoveId.DESTINY_BOND ], + ], + [SpeciesId.COFAGRIGUS]: [ + [ EVOLVE_MOVE, MoveId.SHADOW_CLAW ], + [ 1, MoveId.NIGHT_SHADE ], + [ 1, MoveId.HAZE ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.SCARY_FACE ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.HEAL_BLOCK ], + [ 12, MoveId.DISABLE ], + [ 16, MoveId.WILL_O_WISP ], + [ 20, MoveId.CRAFTY_SHIELD ], + [ 24, MoveId.HEX ], + [ 28, MoveId.MEAN_LOOK ], + [ 32, MoveId.GRUDGE ], + [ 38, MoveId.CURSE ], + [ 44, MoveId.SHADOW_BALL ], + [ 50, MoveId.DARK_PULSE ], + [ 56, MoveId.GUARD_SPLIT ], + [ 56, MoveId.POWER_SPLIT ], + [ 62, MoveId.DESTINY_BOND ], + ], + [SpeciesId.TIRTOUGA]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.BIDE ], + [ 3, MoveId.PROTECT ], + [ 6, MoveId.AQUA_JET ], + [ 9, MoveId.SMACK_DOWN ], + [ 12, MoveId.ANCIENT_POWER ], + [ 15, MoveId.BITE ], + [ 18, MoveId.WIDE_GUARD ], + [ 21, MoveId.BRINE ], + [ 24, MoveId.ROCK_SLIDE ], + [ 27, MoveId.CRUNCH ], + [ 30, MoveId.CURSE ], + [ 33, MoveId.IRON_DEFENSE ], + [ 36, MoveId.AQUA_TAIL ], + [ 39, MoveId.RAIN_DANCE ], + [ 42, MoveId.HYDRO_PUMP ], + [ 45, MoveId.SHELL_SMASH ], + ], + [SpeciesId.CARRACOSTA]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.AQUA_JET ], + [ 1, MoveId.BIDE ], + [ 9, MoveId.SMACK_DOWN ], + [ 12, MoveId.ANCIENT_POWER ], + [ 15, MoveId.BITE ], + [ 18, MoveId.WIDE_GUARD ], + [ 21, MoveId.BRINE ], + [ 24, MoveId.ROCK_SLIDE ], + [ 27, MoveId.CRUNCH ], + [ 30, MoveId.CURSE ], + [ 33, MoveId.IRON_DEFENSE ], + [ 36, MoveId.AQUA_TAIL ], + [ 41, MoveId.RAIN_DANCE ], + [ 46, MoveId.HYDRO_PUMP ], + [ 51, MoveId.SHELL_SMASH ], + ], + [SpeciesId.ARCHEN]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 3, MoveId.ROCK_THROW ], + [ 6, MoveId.WING_ATTACK ], + [ 9, MoveId.DRAGON_BREATH ], + [ 12, MoveId.ANCIENT_POWER ], + [ 15, MoveId.PLUCK ], + [ 18, MoveId.QUICK_GUARD ], + [ 21, MoveId.U_TURN ], + [ 24, MoveId.ROCK_SLIDE ], + [ 27, MoveId.SCARY_FACE ], + [ 30, MoveId.CRUNCH ], + [ 33, MoveId.AGILITY ], + [ 36, MoveId.TAILWIND ], + [ 39, MoveId.DRAGON_CLAW ], + [ 42, MoveId.THRASH ], + [ 45, MoveId.ENDEAVOR ], + ], + [SpeciesId.ARCHEOPS]: [ + [ 1, MoveId.WING_ATTACK ], + [ 1, MoveId.LEER ], + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.QUICK_ATTACK ], + [ 9, MoveId.DRAGON_BREATH ], + [ 12, MoveId.ANCIENT_POWER ], + [ 15, MoveId.PLUCK ], + [ 18, MoveId.QUICK_GUARD ], + [ 21, MoveId.U_TURN ], + [ 24, MoveId.ROCK_SLIDE ], + [ 27, MoveId.SCARY_FACE ], + [ 30, MoveId.CRUNCH ], + [ 33, MoveId.AGILITY ], + [ 36, MoveId.TAILWIND ], + [ 41, MoveId.DRAGON_CLAW ], + [ 46, MoveId.THRASH ], + [ 51, MoveId.ENDEAVOR ], + ], + [SpeciesId.TRUBBISH]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.POISON_GAS ], + [ 3, MoveId.RECYCLE ], + [ 6, MoveId.ACID_SPRAY ], + [ 9, MoveId.AMNESIA ], + [ 12, MoveId.CLEAR_SMOG ], + [ 15, MoveId.TOXIC_SPIKES ], + [ 18, MoveId.SLUDGE ], + [ 21, MoveId.STOCKPILE ], + [ 21, MoveId.SWALLOW ], + [ 24, MoveId.TAKE_DOWN ], + [ 27, MoveId.SLUDGE_BOMB ], + [ 30, MoveId.TOXIC ], + [ 33, MoveId.BELCH ], + [ 37, MoveId.PAIN_SPLIT ], + [ 39, MoveId.GUNK_SHOT ], + [ 42, MoveId.EXPLOSION ], + ], + [SpeciesId.GARBODOR]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.RECYCLE ], + [ 1, MoveId.ACID_SPRAY ], + [ 9, MoveId.AMNESIA ], + [ 12, MoveId.CLEAR_SMOG ], + [ 15, MoveId.TOXIC_SPIKES ], + [ 18, MoveId.SLUDGE ], + [ 21, MoveId.STOCKPILE ], + [ 21, MoveId.SWALLOW ], + [ 24, MoveId.BODY_SLAM ], + [ 27, MoveId.SLUDGE_BOMB ], + [ 30, MoveId.TOXIC ], + [ 33, MoveId.BELCH ], + [ 39, MoveId.PAIN_SPLIT ], + [ 43, MoveId.GUNK_SHOT ], + [ 48, MoveId.EXPLOSION ], + ], + [SpeciesId.ZORUA]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 4, MoveId.TORMENT ], + [ 8, MoveId.HONE_CLAWS ], + [ 12, MoveId.FURY_SWIPES ], + [ 16, MoveId.SCARY_FACE ], + [ 20, MoveId.TAUNT ], + [ 24, MoveId.KNOCK_OFF ], + [ 28, MoveId.FAKE_TEARS ], + [ 32, MoveId.AGILITY ], + [ 36, MoveId.IMPRISON ], + [ 40, MoveId.NIGHT_DAZE ], + [ 44, MoveId.NASTY_PLOT ], + [ 48, MoveId.FOUL_PLAY ], + ], + [SpeciesId.ZOROARK]: [ + [ EVOLVE_MOVE, MoveId.NIGHT_SLASH ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.TORMENT ], + [ 1, MoveId.U_TURN ], + [ 1, MoveId.HONE_CLAWS ], + [ 1, MoveId.SCARY_FACE ], // Previous Stage Move + [ 1, MoveId.PURSUIT ], + [ 12, MoveId.FURY_SWIPES ], + [ 20, MoveId.TAUNT ], + [ 24, MoveId.KNOCK_OFF ], + [ 28, MoveId.FAKE_TEARS ], + [ 34, MoveId.AGILITY ], + [ 40, MoveId.IMPRISON ], + [ 46, MoveId.NIGHT_DAZE ], + [ 52, MoveId.NASTY_PLOT ], + [ 58, MoveId.FOUL_PLAY ], + ], + [SpeciesId.MINCCINO]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.BABY_DOLL_EYES ], + [ 4, MoveId.HELPING_HAND ], + [ 8, MoveId.ECHOED_VOICE ], + [ 12, MoveId.SING ], + [ 16, MoveId.CHARM ], + [ 20, MoveId.SWIFT ], + [ 24, MoveId.ENCORE ], + [ 28, MoveId.AFTER_YOU ], + [ 32, MoveId.TAIL_SLAP ], + [ 36, MoveId.TICKLE ], + [ 40, MoveId.SLAM ], + [ 44, MoveId.HYPER_VOICE ], + [ 48, MoveId.LAST_RESORT ], + ], + [SpeciesId.CINCCINO]: [ + [ EVOLVE_MOVE, MoveId.TAIL_SLAP ], + [ RELEARN_MOVE, MoveId.SLAM ], + [ RELEARN_MOVE, MoveId.SWIFT ], + [ RELEARN_MOVE, MoveId.ENCORE ], + [ RELEARN_MOVE, MoveId.HELPING_HAND ], + [ RELEARN_MOVE, MoveId.HYPER_VOICE ], + [ RELEARN_MOVE, MoveId.TICKLE ], + [ RELEARN_MOVE, MoveId.ROCK_BLAST ], + [ RELEARN_MOVE, MoveId.LAST_RESORT ], + [ RELEARN_MOVE, MoveId.AFTER_YOU ], + [ RELEARN_MOVE, MoveId.ECHOED_VOICE ], + [ RELEARN_MOVE, MoveId.BABY_DOLL_EYES ], + [ 1, MoveId.BULLET_SEED ], + [ 1, MoveId.SING ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.POUND ], + ], + [SpeciesId.GOTHITA]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.CONFUSION ], + [ 4, MoveId.PLAY_NICE ], + [ 8, MoveId.TICKLE ], + [ 12, MoveId.PSYBEAM ], + [ 16, MoveId.CHARM ], + [ 20, MoveId.PSYSHOCK ], + [ 24, MoveId.HYPNOSIS ], + [ 28, MoveId.FAKE_TEARS ], + [ 33, MoveId.PSYCH_UP ], + [ 34, MoveId.HEAL_BLOCK ], + [ 36, MoveId.PSYCHIC ], + [ 40, MoveId.FLATTER ], + [ 44, MoveId.FUTURE_SIGHT ], + [ 48, MoveId.MAGIC_ROOM ], + ], + [SpeciesId.GOTHORITA]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.TICKLE ], + [ 1, MoveId.PLAY_NICE ], + [ 12, MoveId.PSYBEAM ], + [ 16, MoveId.CHARM ], + [ 20, MoveId.PSYSHOCK ], + [ 24, MoveId.HYPNOSIS ], + [ 28, MoveId.FAKE_TEARS ], + [ 34, MoveId.HEAL_BLOCK ], + [ 35, MoveId.PSYCH_UP ], + [ 40, MoveId.PSYCHIC ], // Previous Stage Move, Gothitelle Level + [ 46, MoveId.FLATTER ], + [ 52, MoveId.FUTURE_SIGHT ], + [ 58, MoveId.MAGIC_ROOM ], + ], + [SpeciesId.GOTHITELLE]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.TICKLE ], + [ 1, MoveId.PLAY_NICE ], + [ 12, MoveId.PSYBEAM ], + [ 16, MoveId.CHARM ], + [ 20, MoveId.PSYSHOCK ], + [ 24, MoveId.HYPNOSIS ], + [ 28, MoveId.FAKE_TEARS ], + [ 34, MoveId.HEAL_BLOCK ], + [ 35, MoveId.PSYCH_UP ], + [ 40, MoveId.PSYCHIC ], + [ 48, MoveId.FLATTER ], + [ 56, MoveId.FUTURE_SIGHT ], + [ 64, MoveId.MAGIC_ROOM ], + ], + [SpeciesId.SOLOSIS]: [ + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.PSYWAVE ], + [ 4, MoveId.RECOVER ], + [ 8, MoveId.ENDEAVOR ], + [ 12, MoveId.PSYBEAM ], + [ 16, MoveId.CHARM ], + [ 20, MoveId.PSYSHOCK ], + [ 24, MoveId.LIGHT_SCREEN ], + [ 24, MoveId.REFLECT ], + [ 28, MoveId.ALLY_SWITCH ], + [ 33, MoveId.PAIN_SPLIT ], + [ 36, MoveId.PSYCHIC ], + [ 40, MoveId.SKILL_SWAP ], + [ 44, MoveId.FUTURE_SIGHT ], + [ 46, MoveId.HEAL_BLOCK ], + [ 48, MoveId.WONDER_ROOM ], + ], + [SpeciesId.DUOSION]: [ + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.RECOVER ], + [ 1, MoveId.PSYWAVE ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.ENDEAVOR ], + [ 1, MoveId.SNATCH ], + [ 12, MoveId.PSYBEAM ], + [ 16, MoveId.CHARM ], + [ 20, MoveId.PSYSHOCK ], + [ 24, MoveId.LIGHT_SCREEN ], + [ 24, MoveId.REFLECT ], + [ 28, MoveId.ALLY_SWITCH ], + [ 35, MoveId.PAIN_SPLIT ], + [ 40, MoveId.PSYCHIC ], + [ 46, MoveId.SKILL_SWAP ], + [ 50, MoveId.HEAL_BLOCK ], + [ 52, MoveId.FUTURE_SIGHT ], + [ 58, MoveId.WONDER_ROOM ], + ], + [SpeciesId.REUNICLUS]: [ + [ EVOLVE_MOVE, MoveId.HAMMER_ARM ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.RECOVER ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.ENDEAVOR ], + [ 1, MoveId.DIZZY_PUNCH ], + [ 1, MoveId.PSYWAVE ], + [ 1, MoveId.SNATCH ], + [ 12, MoveId.PSYBEAM ], + [ 16, MoveId.CHARM ], + [ 20, MoveId.PSYSHOCK ], + [ 24, MoveId.LIGHT_SCREEN ], + [ 24, MoveId.REFLECT ], + [ 28, MoveId.ALLY_SWITCH ], + [ 35, MoveId.PAIN_SPLIT ], + [ 40, MoveId.PSYCHIC ], + [ 48, MoveId.SKILL_SWAP ], + [ 54, MoveId.HEAL_BLOCK ], + [ 56, MoveId.FUTURE_SIGHT ], + [ 64, MoveId.WONDER_ROOM ], + ], + [SpeciesId.DUCKLETT]: [ + [ 1, MoveId.WATER_GUN ], + [ 6, MoveId.DEFOG ], + [ 9, MoveId.WING_ATTACK ], + [ 13, MoveId.WATER_PULSE ], + [ 15, MoveId.AERIAL_ACE ], + [ 19, MoveId.BUBBLE_BEAM ], + [ 21, MoveId.FEATHER_DANCE ], + [ 24, MoveId.AQUA_RING ], + [ 27, MoveId.AIR_SLASH ], + [ 30, MoveId.ROOST ], + [ 34, MoveId.RAIN_DANCE ], + [ 37, MoveId.TAILWIND ], + [ 41, MoveId.BRAVE_BIRD ], + [ 46, MoveId.HURRICANE ], + ], + [SpeciesId.SWANNA]: [ + [ 1, MoveId.WING_ATTACK ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.DEFOG ], + [ 13, MoveId.WATER_PULSE ], + [ 15, MoveId.AERIAL_ACE ], + [ 19, MoveId.BUBBLE_BEAM ], + [ 21, MoveId.FEATHER_DANCE ], + [ 24, MoveId.AQUA_RING ], + [ 27, MoveId.AIR_SLASH ], + [ 30, MoveId.ROOST ], + [ 34, MoveId.RAIN_DANCE ], + [ 40, MoveId.TAILWIND ], + [ 47, MoveId.BRAVE_BIRD ], + [ 55, MoveId.HURRICANE ], + ], + [SpeciesId.VANILLITE]: [ + [ 1, MoveId.HARDEN ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.POWDER_SNOW ], // Custom + [ 4, MoveId.TAUNT ], + [ 8, MoveId.MIST ], + [ 12, MoveId.ICY_WIND ], + [ 16, MoveId.AVALANCHE ], + [ 20, MoveId.HAIL ], + [ 24, MoveId.ICICLE_SPEAR ], + [ 28, MoveId.UPROAR ], + [ 32, MoveId.ACID_ARMOR ], + [ 36, MoveId.MIRROR_COAT ], + [ 40, MoveId.ICE_BEAM ], + [ 44, MoveId.BLIZZARD ], + [ 48, MoveId.SHEER_COLD ], + ], + [SpeciesId.VANILLISH]: [ + [ 1, MoveId.MIST ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.TAUNT ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.POWDER_SNOW ], // Previous Stage Move, Custom + [ 12, MoveId.ICY_WIND ], + [ 16, MoveId.AVALANCHE ], + [ 20, MoveId.HAIL ], + [ 24, MoveId.ICICLE_SPEAR ], + [ 28, MoveId.UPROAR ], + [ 32, MoveId.ACID_ARMOR ], + [ 38, MoveId.MIRROR_COAT ], + [ 44, MoveId.ICE_BEAM ], + [ 50, MoveId.BLIZZARD ], + [ 56, MoveId.SHEER_COLD ], + ], + [SpeciesId.VANILLUXE]: [ + [ 1, MoveId.MIST ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.TAUNT ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.POWDER_SNOW ], // Previous Stage Move, Custom + [ 1, MoveId.WEATHER_BALL ], + [ 1, MoveId.ICICLE_CRASH ], + [ 1, MoveId.FREEZE_DRY ], + [ 12, MoveId.ICY_WIND ], + [ 16, MoveId.AVALANCHE ], + [ 20, MoveId.HAIL ], + [ 24, MoveId.ICICLE_SPEAR ], + [ 28, MoveId.UPROAR ], + [ 32, MoveId.ACID_ARMOR ], + [ 38, MoveId.MIRROR_COAT ], + [ 44, MoveId.ICE_BEAM ], + [ 52, MoveId.BLIZZARD ], + [ 60, MoveId.SHEER_COLD ], + ], + [SpeciesId.DEERLING]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.CAMOUFLAGE ], + [ 4, MoveId.GROWL ], + [ 7, MoveId.SAND_ATTACK ], + [ 10, MoveId.DOUBLE_KICK ], + [ 13, MoveId.LEECH_SEED ], + [ 16, MoveId.BULLET_SEED ], + [ 20, MoveId.TAKE_DOWN ], + [ 24, MoveId.ZEN_HEADBUTT ], + [ 28, MoveId.ENERGY_BALL ], + [ 32, MoveId.CHARM ], + [ 37, MoveId.DOUBLE_EDGE ], + [ 42, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.SAWSBUCK]: [ + [ EVOLVE_MOVE, MoveId.HORN_LEECH ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.CAMOUFLAGE ], + [ 1, MoveId.MEGAHORN ], + [ 10, MoveId.DOUBLE_KICK ], + [ 13, MoveId.LEECH_SEED ], + [ 16, MoveId.BULLET_SEED ], + [ 20, MoveId.TAKE_DOWN ], + [ 24, MoveId.ZEN_HEADBUTT ], + [ 28, MoveId.ENERGY_BALL ], + [ 36, MoveId.CHARM ], + [ 44, MoveId.DOUBLE_EDGE ], + [ 52, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.EMOLGA]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.NUZZLE ], + [ 5, MoveId.DOUBLE_TEAM ], + [ 10, MoveId.QUICK_ATTACK ], + [ 15, MoveId.THUNDER_SHOCK ], + [ 20, MoveId.CHARGE ], + [ 25, MoveId.ACROBATICS ], + [ 30, MoveId.SPARK ], + [ 35, MoveId.ENCORE ], + [ 40, MoveId.VOLT_SWITCH ], + [ 45, MoveId.LIGHT_SCREEN ], + [ 50, MoveId.DISCHARGE ], + [ 55, MoveId.AGILITY ], + ], + [SpeciesId.KARRABLAST]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 4, MoveId.FURY_CUTTER ], + [ 8, MoveId.ENDURE ], + [ 12, MoveId.FALSE_SWIPE ], + [ 16, MoveId.ACID_SPRAY ], + [ 20, MoveId.HEADBUTT ], + [ 24, MoveId.FLAIL ], + [ 28, MoveId.SCARY_FACE ], + [ 32, MoveId.X_SCISSOR ], + [ 36, MoveId.SWORDS_DANCE ], + [ 40, MoveId.TAKE_DOWN ], + [ 44, MoveId.BUG_BUZZ ], + [ 48, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.ESCAVALIER]: [ + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.SCARY_FACE ], + [ 1, MoveId.ENDURE ], + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.QUICK_GUARD ], + [ 1, MoveId.FELL_STINGER ], + [ 1, MoveId.TWINEEDLE ], + [ 12, MoveId.FALSE_SWIPE ], + [ 16, MoveId.ACID_SPRAY ], + [ 20, MoveId.HEADBUTT ], + [ 24, MoveId.REVERSAL ], + [ 28, MoveId.IRON_DEFENSE ], + [ 32, MoveId.X_SCISSOR ], + [ 36, MoveId.SWORDS_DANCE ], + [ 40, MoveId.IRON_HEAD ], + [ 44, MoveId.BUG_BUZZ ], + [ 48, MoveId.GIGA_IMPACT ], + [ 52, MoveId.METAL_BURST ], + ], + [SpeciesId.FOONGUS]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.ASTONISH ], + [ 4, MoveId.GROWTH ], + [ 8, MoveId.STUN_SPORE ], + [ 12, MoveId.MEGA_DRAIN ], + [ 16, MoveId.SYNTHESIS ], + [ 20, MoveId.CLEAR_SMOG ], + [ 24, MoveId.SWEET_SCENT ], + [ 28, MoveId.GIGA_DRAIN ], + [ 32, MoveId.INGRAIN ], + [ 36, MoveId.TOXIC ], + [ 40, MoveId.RAGE_POWDER ], + [ 44, MoveId.SOLAR_BEAM ], + [ 48, MoveId.SPORE ], + ], + [SpeciesId.AMOONGUSS]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.BIDE ], + [ 12, MoveId.MEGA_DRAIN ], + [ 16, MoveId.SYNTHESIS ], + [ 20, MoveId.CLEAR_SMOG ], + [ 24, MoveId.SWEET_SCENT ], + [ 28, MoveId.GIGA_DRAIN ], + [ 32, MoveId.INGRAIN ], + [ 36, MoveId.TOXIC ], + [ 42, MoveId.RAGE_POWDER ], + [ 48, MoveId.SOLAR_BEAM ], + [ 54, MoveId.SPORE ], + ], + [SpeciesId.FRILLISH]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.WATER_SPORT ], + [ 4, MoveId.POISON_STING ], + [ 8, MoveId.NIGHT_SHADE ], + [ 12, MoveId.WATER_PULSE ], + [ 16, MoveId.RAIN_DANCE ], + [ 20, MoveId.HEX ], + [ 24, MoveId.BRINE ], + [ 28, MoveId.RECOVER ], + [ 32, MoveId.SHADOW_BALL ], + [ 36, MoveId.WHIRLPOOL ], + [ 41, MoveId.HYDRO_PUMP ], + [ 44, MoveId.DESTINY_BOND ], + [ 48, MoveId.WATER_SPOUT ], + ], + [SpeciesId.JELLICENT]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.WATER_SPORT ], + [ 1, MoveId.WRING_OUT ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.NIGHT_SHADE ], + [ 1, MoveId.ACID_ARMOR ], + [ 12, MoveId.WATER_PULSE ], + [ 16, MoveId.RAIN_DANCE ], + [ 20, MoveId.HEX ], + [ 24, MoveId.BRINE ], + [ 28, MoveId.RECOVER ], + [ 32, MoveId.SHADOW_BALL ], + [ 36, MoveId.WHIRLPOOL ], + [ 43, MoveId.HYDRO_PUMP ], + [ 48, MoveId.DESTINY_BOND ], + [ 54, MoveId.WATER_SPOUT ], + ], + [SpeciesId.ALOMOMOLA]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.WATER_SPORT ], + [ 5, MoveId.AQUA_RING ], + [ 9, MoveId.AQUA_JET ], + [ 13, MoveId.HELPING_HAND ], + [ 13, MoveId.WIDE_GUARD ], + [ 21, MoveId.PROTECT ], + [ 25, MoveId.WATER_PULSE ], + [ 29, MoveId.HEALING_WISH ], + [ 33, MoveId.SOAK ], + [ 37, MoveId.WISH ], + [ 41, MoveId.BRINE ], + [ 45, MoveId.SAFEGUARD ], + [ 49, MoveId.WHIRLPOOL ], + [ 55, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.JOLTIK]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.SPIDER_WEB ], + [ 4, MoveId.ELECTROWEB ], + [ 8, MoveId.BUG_BITE ], + [ 12, MoveId.STRING_SHOT ], + [ 16, MoveId.THUNDER_WAVE ], + [ 20, MoveId.ELECTRO_BALL ], + [ 24, MoveId.AGILITY ], + [ 28, MoveId.SUCKER_PUNCH ], + [ 32, MoveId.SLASH ], + [ 37, MoveId.DISCHARGE ], + [ 40, MoveId.SCREECH ], + [ 44, MoveId.GASTRO_ACID ], + [ 48, MoveId.BUG_BUZZ ], + ], + [SpeciesId.GALVANTULA]: [ + [ EVOLVE_MOVE, MoveId.STICKY_WEB ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.BUG_BITE ], + [ 1, MoveId.ELECTROWEB ], + [ 1, MoveId.SPIDER_WEB ], + [ 12, MoveId.STRING_SHOT ], + [ 16, MoveId.THUNDER_WAVE ], + [ 20, MoveId.ELECTRO_BALL ], + [ 24, MoveId.AGILITY ], + [ 28, MoveId.SUCKER_PUNCH ], + [ 32, MoveId.SLASH ], + [ 39, MoveId.DISCHARGE ], + [ 44, MoveId.SCREECH ], + [ 50, MoveId.GASTRO_ACID ], + [ 56, MoveId.BUG_BUZZ ], + ], + [SpeciesId.FERROSEED]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 5, MoveId.METAL_CLAW ], + [ 10, MoveId.PIN_MISSILE ], + [ 15, MoveId.INGRAIN ], + [ 20, MoveId.FLASH_CANNON ], + [ 25, MoveId.IRON_HEAD ], + [ 30, MoveId.SELF_DESTRUCT ], + [ 35, MoveId.IRON_DEFENSE ], + [ 41, MoveId.CURSE ], + [ 45, MoveId.GYRO_BALL ], + [ 50, MoveId.EXPLOSION ], + ], + [SpeciesId.FERROTHORN]: [ + [ EVOLVE_MOVE, MoveId.POWER_WHIP ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.PIN_MISSILE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.ROCK_CLIMB ], + [ 15, MoveId.INGRAIN ], + [ 20, MoveId.FLASH_CANNON ], + [ 25, MoveId.IRON_HEAD ], + [ 30, MoveId.SELF_DESTRUCT ], + [ 35, MoveId.IRON_DEFENSE ], + [ 43, MoveId.CURSE ], + [ 49, MoveId.GYRO_BALL ], + [ 56, MoveId.EXPLOSION ], + ], + [SpeciesId.KLINK]: [ + [ 1, MoveId.VISE_GRIP ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 4, MoveId.BIND ], + [ 8, MoveId.CHARGE ], + [ 12, MoveId.CHARGE_BEAM ], + [ 16, MoveId.METAL_SOUND ], + [ 20, MoveId.AUTOTOMIZE ], + [ 24, MoveId.DISCHARGE ], + [ 28, MoveId.SCREECH ], + [ 32, MoveId.GEAR_GRIND ], + [ 36, MoveId.LOCK_ON ], + [ 40, MoveId.SHIFT_GEAR ], + [ 44, MoveId.ZAP_CANNON ], + [ 48, MoveId.HYPER_BEAM ], + ], + [SpeciesId.KLANG]: [ + [ 1, MoveId.VISE_GRIP ], + [ 1, MoveId.BIND ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.CHARGE ], + [ 12, MoveId.CHARGE_BEAM ], + [ 16, MoveId.METAL_SOUND ], + [ 20, MoveId.AUTOTOMIZE ], + [ 24, MoveId.DISCHARGE ], + [ 28, MoveId.SCREECH ], + [ 32, MoveId.GEAR_GRIND ], + [ 36, MoveId.LOCK_ON ], + [ 42, MoveId.SHIFT_GEAR ], + [ 48, MoveId.ZAP_CANNON ], + [ 54, MoveId.HYPER_BEAM ], + ], + [SpeciesId.KLINKLANG]: [ + [ 1, MoveId.VISE_GRIP ], + [ 1, MoveId.BIND ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.CHARGE ], + [ 1, MoveId.MAGNETIC_FLUX ], + [ 1, MoveId.GEAR_UP ], + [ 12, MoveId.CHARGE_BEAM ], + [ 16, MoveId.METAL_SOUND ], + [ 20, MoveId.AUTOTOMIZE ], + [ 24, MoveId.DISCHARGE ], + [ 28, MoveId.SCREECH ], + [ 32, MoveId.GEAR_GRIND ], + [ 36, MoveId.LOCK_ON ], + [ 42, MoveId.SHIFT_GEAR ], + [ 48, MoveId.ZAP_CANNON ], + [ 56, MoveId.HYPER_BEAM ], + [ 64, MoveId.ELECTRIC_TERRAIN ], + ], + [SpeciesId.TYNAMO]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.SPARK ], + [ 1, MoveId.CHARGE_BEAM ], + ], + [SpeciesId.EELEKTRIK]: [ + [ EVOLVE_MOVE, MoveId.CRUNCH ], + [ 1, MoveId.TACKLE ], // Previous Stage Move + [ 1, MoveId.HEADBUTT ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.SPARK ], + [ 1, MoveId.CHARGE_BEAM ], + [ 1, MoveId.ION_DELUGE ], + [ 9, MoveId.BIND ], + [ 19, MoveId.ACID ], + [ 29, MoveId.DISCHARGE ], + [ 44, MoveId.THUNDERBOLT ], + [ 49, MoveId.ACID_SPRAY ], + [ 54, MoveId.COIL ], + [ 59, MoveId.WILD_CHARGE ], + [ 64, MoveId.GASTRO_ACID ], + [ 69, MoveId.ZAP_CANNON ], + [ 74, MoveId.THRASH ], + ], + [SpeciesId.EELEKTROSS]: [ + [ RELEARN_MOVE, MoveId.THUNDERBOLT ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.ACID_SPRAY ], // Previous Stage Move + [ 1, MoveId.TACKLE ], // Previous Stage Move + [ 1, MoveId.HEADBUTT ], + [ 1, MoveId.THUNDER_WAVE ], // Previous Stage Move + [ 1, MoveId.SPARK ], // Previous Stage Move + [ 1, MoveId.CHARGE_BEAM ], // Previous Stage Move + [ 1, MoveId.ION_DELUGE ], // Previous Stage Move + [ 1, MoveId.BIND ], // Previous Stage Move + [ 1, MoveId.THRASH ], + [ 1, MoveId.ACID ], + [ 1, MoveId.ZAP_CANNON ], + [ 1, MoveId.CRUNCH ], + [ 1, MoveId.CRUSH_CLAW ], + [ 1, MoveId.GASTRO_ACID ], + [ 1, MoveId.DISCHARGE ], + [ 1, MoveId.COIL ], + [ 5, MoveId.WILD_CHARGE ], + ], + [SpeciesId.ELGYEM]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.CONFUSION ], + [ 6, MoveId.IMPRISON ], + [ 8, MoveId.HEAL_BLOCK ], + [ 12, MoveId.TELEPORT ], + [ 18, MoveId.PSYBEAM ], + [ 24, MoveId.GUARD_SPLIT ], + [ 24, MoveId.POWER_SPLIT ], + [ 30, MoveId.HEADBUTT ], + [ 36, MoveId.ZEN_HEADBUTT ], + [ 43, MoveId.RECOVER ], + [ 48, MoveId.CALM_MIND ], + [ 54, MoveId.WONDER_ROOM ], + [ 60, MoveId.PSYCHIC ], + ], + [SpeciesId.BEHEEYEM]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.SYNCHRONOISE ], + [ 1, MoveId.TELEPORT ], + [ 1, MoveId.IMPRISON ], + [ 1, MoveId.PSYCHIC_TERRAIN ], + [ 8, MoveId.HEAL_BLOCK ], + [ 18, MoveId.PSYBEAM ], + [ 24, MoveId.GUARD_SPLIT ], + [ 24, MoveId.POWER_SPLIT ], + [ 30, MoveId.HEADBUTT ], + [ 36, MoveId.ZEN_HEADBUTT ], + [ 45, MoveId.RECOVER ], + [ 52, MoveId.CALM_MIND ], + [ 60, MoveId.WONDER_ROOM ], + [ 68, MoveId.PSYCHIC ], + ], + [SpeciesId.LITWICK]: [ + [ 1, MoveId.SMOG ], + [ 1, MoveId.ASTONISH ], + [ 4, MoveId.EMBER ], + [ 8, MoveId.MINIMIZE ], + [ 12, MoveId.CONFUSE_RAY ], + [ 16, MoveId.HEX ], + [ 20, MoveId.WILL_O_WISP ], + [ 24, MoveId.FIRE_SPIN ], + [ 28, MoveId.NIGHT_SHADE ], + [ 32, MoveId.CURSE ], + [ 36, MoveId.SHADOW_BALL ], + [ 40, MoveId.INFERNO ], + [ 44, MoveId.IMPRISON ], + [ 48, MoveId.PAIN_SPLIT ], + [ 52, MoveId.OVERHEAT ], + [ 56, MoveId.MEMENTO ], + ], + [SpeciesId.LAMPENT]: [ + [ 1, MoveId.EMBER ], + [ 1, MoveId.MINIMIZE ], + [ 1, MoveId.SMOG ], + [ 1, MoveId.ASTONISH ], + [ 12, MoveId.CONFUSE_RAY ], + [ 16, MoveId.HEX ], + [ 20, MoveId.WILL_O_WISP ], + [ 24, MoveId.FIRE_SPIN ], + [ 28, MoveId.NIGHT_SHADE ], + [ 32, MoveId.CURSE ], + [ 36, MoveId.SHADOW_BALL ], + [ 40, MoveId.INFERNO ], + [ 46, MoveId.IMPRISON ], + [ 52, MoveId.PAIN_SPLIT ], + [ 58, MoveId.OVERHEAT ], + [ 64, MoveId.MEMENTO ], + ], + [SpeciesId.CHANDELURE]: [ + [ 1, MoveId.EMBER ], + [ 1, MoveId.FIRE_SPIN ], + [ 1, MoveId.NIGHT_SHADE ], + [ 1, MoveId.MINIMIZE ], + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.SMOG ], + [ 1, MoveId.CURSE ], + [ 1, MoveId.PAIN_SPLIT ], + [ 1, MoveId.SHADOW_BALL ], + [ 1, MoveId.WILL_O_WISP ], + [ 1, MoveId.MEMENTO ], + [ 1, MoveId.IMPRISON ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.OVERHEAT ], + [ 1, MoveId.HEX ], + [ 1, MoveId.INFERNO ], + ], + [SpeciesId.AXEW]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 3, MoveId.BITE ], + [ 6, MoveId.FALSE_SWIPE ], + [ 9, MoveId.ASSURANCE ], + [ 12, MoveId.TAUNT ], + [ 15, MoveId.SLASH ], + [ 18, MoveId.DRAGON_CLAW ], + [ 21, MoveId.SCARY_FACE ], + [ 24, MoveId.CRUNCH ], + [ 27, MoveId.DRAGON_DANCE ], + [ 30, MoveId.DUAL_CHOP ], + [ 33, MoveId.FOCUS_ENERGY ], + [ 36, MoveId.DRAGON_PULSE ], + [ 39, MoveId.SWORDS_DANCE ], + [ 42, MoveId.OUTRAGE ], + [ 45, MoveId.GUILLOTINE ], + [ 48, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.FRAXURE]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.BITE ], + [ 1, MoveId.FALSE_SWIPE ], + [ 1, MoveId.DUAL_CHOP ], + [ 9, MoveId.ASSURANCE ], + [ 12, MoveId.TAUNT ], + [ 15, MoveId.SLASH ], + [ 18, MoveId.DRAGON_CLAW ], + [ 21, MoveId.SCARY_FACE ], + [ 24, MoveId.CRUNCH ], + [ 27, MoveId.DRAGON_DANCE ], + [ 30, MoveId.BREAKING_SWIPE ], + [ 33, MoveId.FOCUS_ENERGY ], + [ 36, MoveId.DRAGON_PULSE ], + [ 41, MoveId.SWORDS_DANCE ], + [ 46, MoveId.OUTRAGE ], + [ 51, MoveId.GUILLOTINE ], + [ 56, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.HAXORUS]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.BITE ], + [ 1, MoveId.FALSE_SWIPE ], + [ 1, MoveId.DUAL_CHOP ], + [ 9, MoveId.ASSURANCE ], + [ 12, MoveId.TAUNT ], + [ 15, MoveId.SLASH ], + [ 18, MoveId.DRAGON_CLAW ], + [ 21, MoveId.SCARY_FACE ], + [ 24, MoveId.CRUNCH ], + [ 27, MoveId.DRAGON_DANCE ], + [ 30, MoveId.BREAKING_SWIPE ], + [ 33, MoveId.FOCUS_ENERGY ], + [ 36, MoveId.DRAGON_PULSE ], + [ 41, MoveId.SWORDS_DANCE ], + [ 46, MoveId.OUTRAGE ], + [ 53, MoveId.GUILLOTINE ], + [ 60, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.CUBCHOO]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.POWDER_SNOW ], + [ 3, MoveId.ENDURE ], + [ 6, MoveId.FURY_SWIPES ], + [ 9, MoveId.ICY_WIND ], + [ 12, MoveId.PLAY_NICE ], + [ 15, MoveId.BRINE ], + [ 18, MoveId.FROST_BREATH ], + [ 21, MoveId.SLASH ], + [ 24, MoveId.FLAIL ], + [ 27, MoveId.CHARM ], + [ 30, MoveId.SNOWSCAPE ], + [ 33, MoveId.THRASH ], + [ 36, MoveId.REST ], + [ 39, MoveId.BLIZZARD ], + [ 42, MoveId.SHEER_COLD ], + ], + [SpeciesId.BEARTIC]: [ + [ EVOLVE_MOVE, MoveId.ICICLE_CRASH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.FURY_SWIPES ], + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.ENDURE ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.AQUA_JET ], + [ 1, MoveId.BIDE ], + [ 9, MoveId.ICY_WIND ], + [ 12, MoveId.PLAY_NICE ], + [ 15, MoveId.BRINE ], + [ 18, MoveId.FROST_BREATH ], + [ 21, MoveId.SLASH ], + [ 24, MoveId.FLAIL ], + [ 27, MoveId.SWAGGER ], + [ 30, MoveId.SNOWSCAPE ], + [ 33, MoveId.THRASH ], + [ 36, MoveId.REST ], + [ 41, MoveId.BLIZZARD ], + [ 46, MoveId.SHEER_COLD ], + [ 51, MoveId.SUPERPOWER ], + ], + [SpeciesId.CRYOGONAL]: [ + [ 1, MoveId.BIND ], + [ 1, MoveId.ICE_SHARD ], + [ 4, MoveId.CONFUSE_RAY ], + [ 8, MoveId.RAPID_SPIN ], + [ 12, MoveId.ICY_WIND ], + [ 16, MoveId.MIST ], + [ 16, MoveId.HAZE ], + [ 20, MoveId.ANCIENT_POWER ], + [ 24, MoveId.AURORA_BEAM ], + [ 28, MoveId.SLASH ], + [ 32, MoveId.NIGHT_SLASH ], + [ 36, MoveId.FREEZE_DRY ], + [ 40, MoveId.LIGHT_SCREEN ], + [ 40, MoveId.REFLECT ], + [ 44, MoveId.RECOVER ], + [ 48, MoveId.ICE_BEAM ], + [ 52, MoveId.ACID_ARMOR ], + [ 56, MoveId.SOLAR_BEAM ], + [ 60, MoveId.SHEER_COLD ], + ], + [SpeciesId.SHELMET]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.PROTECT ], + [ 4, MoveId.ACID ], + [ 8, MoveId.CURSE ], + [ 12, MoveId.MEGA_DRAIN ], + [ 16, MoveId.STRUGGLE_BUG ], + [ 20, MoveId.YAWN ], + [ 24, MoveId.ACID_ARMOR ], + [ 28, MoveId.GIGA_DRAIN ], + [ 32, MoveId.GUARD_SWAP ], + [ 36, MoveId.BODY_SLAM ], + [ 40, MoveId.RECOVER ], + [ 44, MoveId.BUG_BUZZ ], + [ 48, MoveId.FINAL_GAMBIT ], + ], + [SpeciesId.ACCELGOR]: [ + [ 1, MoveId.BODY_SLAM ], + [ 1, MoveId.ACID ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.PROTECT ], // Previous Stage Move + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.ACID_ARMOR ], + [ 1, MoveId.CURSE ], + [ 1, MoveId.YAWN ], + [ 1, MoveId.GUARD_SWAP ], + [ 1, MoveId.ACID_SPRAY ], + [ 1, MoveId.WATER_SHURIKEN ], + [ 12, MoveId.MEGA_DRAIN ], + [ 16, MoveId.STRUGGLE_BUG ], + [ 20, MoveId.SWIFT ], + [ 24, MoveId.AGILITY ], + [ 28, MoveId.GIGA_DRAIN ], + [ 32, MoveId.POWER_SWAP ], + [ 36, MoveId.U_TURN ], + [ 40, MoveId.RECOVER ], + [ 44, MoveId.BUG_BUZZ ], + [ 48, MoveId.FINAL_GAMBIT ], + [ 52, MoveId.TOXIC ], + ], + [SpeciesId.STUNFISK]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.MUD_SPORT ], + [ 5, MoveId.ENDURE ], + [ 10, MoveId.MUD_SHOT ], + [ 15, MoveId.REVENGE ], + [ 20, MoveId.CHARGE ], + [ 25, MoveId.SUCKER_PUNCH ], + [ 30, MoveId.ELECTRIC_TERRAIN ], + [ 35, MoveId.BOUNCE ], + [ 40, MoveId.MUDDY_WATER ], + [ 45, MoveId.DISCHARGE ], + [ 50, MoveId.FLAIL ], + [ 55, MoveId.FISSURE ], + ], + [SpeciesId.MIENFOO]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.DETECT ], + [ 5, MoveId.FAKE_OUT ], + [ 10, MoveId.REVERSAL ], + [ 15, MoveId.FURY_SWIPES ], + [ 20, MoveId.QUICK_GUARD ], + [ 25, MoveId.FORCE_PALM ], + [ 30, MoveId.U_TURN ], + [ 35, MoveId.DRAIN_PUNCH ], + [ 40, MoveId.HONE_CLAWS ], + [ 45, MoveId.AURA_SPHERE ], + [ 51, MoveId.BOUNCE ], + [ 55, MoveId.CALM_MIND ], + [ 60, MoveId.HIGH_JUMP_KICK ], + ], + [SpeciesId.MIENSHAO]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.REVERSAL ], + [ 1, MoveId.DETECT ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.QUICK_GUARD ], + [ 15, MoveId.FURY_SWIPES ], + [ 20, MoveId.WIDE_GUARD ], + [ 25, MoveId.FORCE_PALM ], + [ 30, MoveId.U_TURN ], + [ 35, MoveId.DRAIN_PUNCH ], + [ 40, MoveId.HONE_CLAWS ], + [ 45, MoveId.AURA_SPHERE ], + [ 53, MoveId.BOUNCE ], + [ 59, MoveId.CALM_MIND ], + [ 66, MoveId.HIGH_JUMP_KICK ], + ], + [SpeciesId.DRUDDIGON]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 5, MoveId.BITE ], + [ 10, MoveId.DRAGON_TAIL ], + [ 15, MoveId.METAL_CLAW ], + [ 20, MoveId.SCARY_FACE ], + [ 25, MoveId.SLASH ], + [ 30, MoveId.DRAGON_CLAW ], + [ 35, MoveId.HONE_CLAWS ], + [ 40, MoveId.CRUNCH ], + [ 45, MoveId.IRON_HEAD ], + [ 50, MoveId.OUTRAGE ], + [ 55, MoveId.SUPERPOWER ], + ], + [SpeciesId.GOLETT]: [ + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.ASTONISH ], + [ 4, MoveId.DEFENSE_CURL ], + [ 8, MoveId.POUND ], + [ 12, MoveId.SHADOW_PUNCH ], + [ 16, MoveId.CURSE ], + [ 20, MoveId.NIGHT_SHADE ], + [ 24, MoveId.STOMPING_TANTRUM ], + [ 28, MoveId.IRON_DEFENSE ], + [ 32, MoveId.MEGA_PUNCH ], + [ 36, MoveId.SHADOW_BALL ], + [ 40, MoveId.HEAVY_SLAM ], + [ 44, MoveId.PHANTOM_FORCE ], + [ 48, MoveId.HAMMER_ARM ], + [ 52, MoveId.EARTHQUAKE ], + [ 56, MoveId.DYNAMIC_PUNCH ], + ], + [SpeciesId.GOLURK]: [ + [ RELEARN_MOVE, MoveId.MUD_SLAP ], + [ RELEARN_MOVE, MoveId.FOCUS_PUNCH ], + [ 1, MoveId.POUND ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.HIGH_HORSEPOWER ], + [ 12, MoveId.SHADOW_PUNCH ], + [ 16, MoveId.CURSE ], + [ 20, MoveId.NIGHT_SHADE ], + [ 24, MoveId.STOMPING_TANTRUM ], + [ 28, MoveId.IRON_DEFENSE ], + [ 32, MoveId.MEGA_PUNCH ], + [ 36, MoveId.SHADOW_BALL ], + [ 40, MoveId.HEAVY_SLAM ], + [ 46, MoveId.PHANTOM_FORCE ], + [ 52, MoveId.HAMMER_ARM ], + [ 58, MoveId.EARTHQUAKE ], + [ 64, MoveId.DYNAMIC_PUNCH ], + ], + [SpeciesId.PAWNIARD]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 5, MoveId.FURY_CUTTER ], + [ 10, MoveId.METAL_CLAW ], + [ 15, MoveId.TORMENT ], + [ 20, MoveId.SCARY_FACE ], + [ 25, MoveId.ASSURANCE ], + [ 30, MoveId.METAL_SOUND ], + [ 35, MoveId.SLASH ], + [ 40, MoveId.NIGHT_SLASH ], + [ 45, MoveId.IRON_DEFENSE ], + [ 50, MoveId.RETALIATE ], + [ 55, MoveId.IRON_HEAD ], + [ 60, MoveId.SWORDS_DANCE ], + [ 65, MoveId.GUILLOTINE ], + ], + [SpeciesId.BISHARP]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.METAL_BURST ], + [ 15, MoveId.TORMENT ], + [ 20, MoveId.SCARY_FACE ], + [ 25, MoveId.ASSURANCE ], + [ 30, MoveId.METAL_SOUND ], + [ 35, MoveId.SLASH ], + [ 40, MoveId.NIGHT_SLASH ], + [ 45, MoveId.IRON_DEFENSE ], + [ 50, MoveId.RETALIATE ], + [ 57, MoveId.IRON_HEAD ], + [ 64, MoveId.SWORDS_DANCE ], + [ 71, MoveId.GUILLOTINE ], + ], + [SpeciesId.BOUFFALANT]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PURSUIT ], + [ 5, MoveId.FOCUS_ENERGY ], + [ 10, MoveId.FURY_ATTACK ], + [ 15, MoveId.REVENGE ], + [ 20, MoveId.SCARY_FACE ], + [ 25, MoveId.HORN_ATTACK ], + [ 30, MoveId.REVERSAL ], + [ 35, MoveId.THROAT_CHOP ], + [ 40, MoveId.HEAD_CHARGE ], + [ 45, MoveId.SWORDS_DANCE ], + [ 50, MoveId.MEGAHORN ], + [ 55, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.RUFFLET]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 6, MoveId.HONE_CLAWS ], + [ 12, MoveId.WING_ATTACK ], + [ 18, MoveId.TAILWIND ], + [ 24, MoveId.SCARY_FACE ], + [ 30, MoveId.AERIAL_ACE ], + [ 36, MoveId.SLASH ], + [ 42, MoveId.WHIRLWIND ], + [ 48, MoveId.CRUSH_CLAW ], + [ 55, MoveId.AIR_SLASH ], + [ 60, MoveId.DEFOG ], + [ 66, MoveId.THRASH ], + [ 72, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.BRAVIARY]: [ + [ EVOLVE_MOVE, MoveId.SUPERPOWER ], + [ RELEARN_MOVE, MoveId.BRAVE_BIRD ], // Previous Stage Move + [ 1, MoveId.WING_ATTACK ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 1, MoveId.SKY_ATTACK ], + [ 1, MoveId.HONE_CLAWS ], + [ 18, MoveId.TAILWIND ], + [ 24, MoveId.SCARY_FACE ], + [ 30, MoveId.AERIAL_ACE ], + [ 36, MoveId.SLASH ], + [ 42, MoveId.WHIRLWIND ], + [ 48, MoveId.CRUSH_CLAW ], + [ 57, MoveId.AIR_SLASH ], + [ 64, MoveId.DEFOG ], + [ 72, MoveId.THRASH ], + ], + [SpeciesId.VULLABY]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.LEER ], + [ 6, MoveId.FLATTER ], + [ 12, MoveId.PLUCK ], + [ 18, MoveId.TAILWIND ], + [ 24, MoveId.KNOCK_OFF ], + [ 30, MoveId.IRON_DEFENSE ], + [ 36, MoveId.WHIRLWIND ], + [ 42, MoveId.AIR_SLASH ], + [ 48, MoveId.DARK_PULSE ], + [ 54, MoveId.NASTY_PLOT ], + [ 60, MoveId.DEFOG ], + [ 66, MoveId.ATTRACT ], + [ 72, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.MANDIBUZZ]: [ + [ EVOLVE_MOVE, MoveId.BONE_RUSH ], + [ 1, MoveId.GUST ], + [ 1, MoveId.LEER ], + [ 1, MoveId.TOXIC ], + [ 1, MoveId.SKY_ATTACK ], + [ 1, MoveId.FLATTER ], + [ 1, MoveId.PLUCK ], + [ 18, MoveId.TAILWIND ], + [ 24, MoveId.KNOCK_OFF ], + [ 30, MoveId.IRON_DEFENSE ], + [ 36, MoveId.WHIRLWIND ], + [ 42, MoveId.AIR_SLASH ], + [ 48, MoveId.DARK_PULSE ], + [ 57, MoveId.NASTY_PLOT ], + [ 64, MoveId.DEFOG ], + [ 72, MoveId.ATTRACT ], + [ 80, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.HEATMOR]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LICK ], + [ 5, MoveId.FURY_SWIPES ], + [ 10, MoveId.INCINERATE ], + [ 15, MoveId.BUG_BITE ], + [ 20, MoveId.STOCKPILE ], + [ 20, MoveId.SPIT_UP ], + [ 20, MoveId.SWALLOW ], + [ 25, MoveId.SLASH ], + [ 30, MoveId.BIND ], + [ 35, MoveId.FIRE_LASH ], + [ 40, MoveId.HONE_CLAWS ], + [ 45, MoveId.AMNESIA ], + [ 50, MoveId.FIRE_SPIN ], + [ 55, MoveId.INFERNO ], + [ 60, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.DURANT]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.FURY_CUTTER ], + [ 4, MoveId.VISE_GRIP ], + [ 8, MoveId.METAL_CLAW ], + [ 12, MoveId.BEAT_UP ], + [ 16, MoveId.BUG_BITE ], + [ 20, MoveId.BITE ], + [ 24, MoveId.AGILITY ], + [ 28, MoveId.DIG ], + [ 32, MoveId.X_SCISSOR ], + [ 36, MoveId.CRUNCH ], + [ 40, MoveId.METAL_SOUND ], + [ 44, MoveId.IRON_HEAD ], + [ 48, MoveId.ENTRAINMENT ], + [ 52, MoveId.IRON_DEFENSE ], + [ 56, MoveId.GUILLOTINE ], + ], + [SpeciesId.DEINO]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 4, MoveId.DRAGON_BREATH ], + [ 8, MoveId.BITE ], + [ 12, MoveId.ROAR ], + [ 16, MoveId.ASSURANCE ], + [ 20, MoveId.HEADBUTT ], + [ 24, MoveId.WORK_UP ], + [ 28, MoveId.SLAM ], + [ 32, MoveId.CRUNCH ], + [ 36, MoveId.SCARY_FACE ], + [ 40, MoveId.DRAGON_PULSE ], + [ 44, MoveId.BODY_SLAM ], + [ 48, MoveId.HYPER_VOICE ], + [ 52, MoveId.DRAGON_RUSH ], + [ 56, MoveId.NASTY_PLOT ], + [ 60, MoveId.OUTRAGE ], + ], + [SpeciesId.ZWEILOUS]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.BITE ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.DOUBLE_HIT ], + [ 12, MoveId.ROAR ], + [ 16, MoveId.ASSURANCE ], + [ 20, MoveId.HEADBUTT ], + [ 24, MoveId.WORK_UP ], + [ 28, MoveId.SLAM ], + [ 32, MoveId.CRUNCH ], + [ 36, MoveId.SCARY_FACE ], + [ 40, MoveId.DRAGON_PULSE ], + [ 44, MoveId.BODY_SLAM ], + [ 48, MoveId.HYPER_VOICE ], + [ 54, MoveId.DRAGON_RUSH ], + [ 60, MoveId.NASTY_PLOT ], + [ 66, MoveId.OUTRAGE ], + ], + [SpeciesId.HYDREIGON]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.BITE ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.TRI_ATTACK ], + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.DOUBLE_HIT ], + [ 12, MoveId.ROAR ], + [ 16, MoveId.ASSURANCE ], + [ 20, MoveId.HEADBUTT ], + [ 24, MoveId.WORK_UP ], + [ 28, MoveId.SLAM ], + [ 32, MoveId.CRUNCH ], + [ 36, MoveId.SCARY_FACE ], + [ 40, MoveId.DRAGON_PULSE ], + [ 44, MoveId.BODY_SLAM ], + [ 48, MoveId.HYPER_VOICE ], + [ 54, MoveId.DRAGON_RUSH ], + [ 60, MoveId.NASTY_PLOT ], + [ 68, MoveId.OUTRAGE ], + [ 76, MoveId.HYPER_BEAM ], + ], + [SpeciesId.LARVESTA]: [ + [ 1, MoveId.EMBER ], + [ 1, MoveId.STRING_SHOT ], + [ 6, MoveId.FLAME_CHARGE ], + [ 12, MoveId.STRUGGLE_BUG ], + [ 18, MoveId.FLAME_WHEEL ], + [ 24, MoveId.BUG_BITE ], + [ 30, MoveId.SCREECH ], + [ 36, MoveId.LEECH_LIFE ], + [ 42, MoveId.BUG_BUZZ ], + [ 48, MoveId.TAKE_DOWN ], + [ 54, MoveId.AMNESIA ], + [ 60, MoveId.DOUBLE_EDGE ], + [ 66, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.VOLCARONA]: [ + [ EVOLVE_MOVE, MoveId.QUIVER_DANCE ], + [ 1, MoveId.GUST ], + [ 1, MoveId.WHIRLWIND ], + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.STRING_SHOT ], + [ 1, MoveId.FIRE_SPIN ], + [ 1, MoveId.FLARE_BLITZ ], + [ 1, MoveId.FLAME_CHARGE ], + [ 1, MoveId.STRUGGLE_BUG ], + [ 1, MoveId.FIERY_DANCE ], + [ 18, MoveId.FLAME_WHEEL ], + [ 24, MoveId.BUG_BITE ], + [ 30, MoveId.SCREECH ], + [ 36, MoveId.LEECH_LIFE ], + [ 42, MoveId.BUG_BUZZ ], + [ 48, MoveId.HEAT_WAVE ], + [ 54, MoveId.AMNESIA ], + [ 62, MoveId.HURRICANE ], + [ 70, MoveId.FIRE_BLAST ], + [ 78, MoveId.RAGE_POWDER ], + ], + [SpeciesId.COBALION]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.WORK_UP ], + [ 7, MoveId.METAL_CLAW ], + [ 14, MoveId.QUICK_GUARD ], + [ 21, MoveId.DOUBLE_KICK ], + [ 28, MoveId.RETALIATE ], + [ 35, MoveId.METAL_BURST ], + [ 42, MoveId.TAKE_DOWN ], + [ 49, MoveId.SACRED_SWORD ], + [ 56, MoveId.SWORDS_DANCE ], + [ 63, MoveId.IRON_HEAD ], + [ 70, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.TERRAKION]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.WORK_UP ], + [ 7, MoveId.SMACK_DOWN ], + [ 14, MoveId.QUICK_GUARD ], + [ 21, MoveId.DOUBLE_KICK ], + [ 28, MoveId.RETALIATE ], + [ 35, MoveId.ROCK_SLIDE ], + [ 42, MoveId.TAKE_DOWN ], + [ 49, MoveId.SACRED_SWORD ], + [ 56, MoveId.SWORDS_DANCE ], + [ 63, MoveId.STONE_EDGE ], + [ 70, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.VIRIZION]: [ + [ RELEARN_MOVE, MoveId.TAKE_DOWN ], + [ 1, MoveId.LEER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.WORK_UP ], + [ 7, MoveId.MAGICAL_LEAF ], + [ 14, MoveId.QUICK_GUARD ], + [ 21, MoveId.DOUBLE_KICK ], + [ 28, MoveId.RETALIATE ], + [ 35, MoveId.GIGA_DRAIN ], + [ 42, MoveId.TAKE_DOWN ], + [ 49, MoveId.SACRED_SWORD ], + [ 56, MoveId.SWORDS_DANCE ], + [ 63, MoveId.LEAF_BLADE ], + [ 70, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.TORNADUS]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.ASTONISH ], + [ 5, MoveId.LEER ], + [ 10, MoveId.SWAGGER ], + [ 15, MoveId.BITE ], + [ 20, MoveId.AIR_CUTTER ], + [ 25, MoveId.AGILITY ], + [ 30, MoveId.TAILWIND ], + [ 35, MoveId.AIR_SLASH ], + [ 40, MoveId.CRUNCH ], + [ 45, MoveId.EXTRASENSORY ], + [ 50, MoveId.UPROAR ], + [ 55, MoveId.HAMMER_ARM ], + [ 60, MoveId.RAIN_DANCE ], + [ 65, MoveId.HURRICANE ], + [ 70, MoveId.THRASH ], + [ 77, MoveId.BLEAKWIND_STORM ], + ], + [SpeciesId.THUNDURUS]: [ + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.ASTONISH ], + [ 5, MoveId.LEER ], + [ 10, MoveId.SWAGGER ], + [ 15, MoveId.BITE ], + [ 20, MoveId.SHOCK_WAVE ], + [ 25, MoveId.AGILITY ], + [ 30, MoveId.CHARGE ], + [ 31, MoveId.HEAL_BLOCK ], + [ 35, MoveId.VOLT_SWITCH ], + [ 40, MoveId.CRUNCH ], + [ 45, MoveId.DISCHARGE ], + [ 50, MoveId.UPROAR ], + [ 55, MoveId.HAMMER_ARM ], + [ 60, MoveId.RAIN_DANCE ], + [ 65, MoveId.THUNDER ], + [ 70, MoveId.THRASH ], + [ 75, MoveId.WILDBOLT_STORM ], + ], + [SpeciesId.RESHIRAM]: [ + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.ANCIENT_POWER ], + [ 1, MoveId.FIRE_FANG ], + [ 1, MoveId.NOBLE_ROAR ], + [ 8, MoveId.SLASH ], + [ 16, MoveId.CRUNCH ], + [ 24, MoveId.EXTRASENSORY ], + [ 32, MoveId.DRAGON_PULSE ], + [ 40, MoveId.FLAMETHROWER ], + [ 48, MoveId.FUSION_FLARE ], + [ 56, MoveId.HYPER_VOICE ], + [ 64, MoveId.FIRE_BLAST ], + [ 72, MoveId.IMPRISON ], + [ 80, MoveId.OUTRAGE ], + [ 88, MoveId.BLUE_FLARE ], + ], + [SpeciesId.ZEKROM]: [ + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.ANCIENT_POWER ], + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.NOBLE_ROAR ], + [ 8, MoveId.SLASH ], + [ 16, MoveId.CRUNCH ], + [ 24, MoveId.ZEN_HEADBUTT ], + [ 32, MoveId.DRAGON_CLAW ], + [ 40, MoveId.THUNDERBOLT ], + [ 48, MoveId.FUSION_BOLT ], + [ 56, MoveId.HYPER_VOICE ], + [ 64, MoveId.THUNDER ], + [ 72, MoveId.IMPRISON ], + [ 80, MoveId.OUTRAGE ], + [ 88, MoveId.BOLT_STRIKE ], + ], + [SpeciesId.LANDORUS]: [ + [ 1, MoveId.SAND_TOMB ], + [ 1, MoveId.SMACK_DOWN ], + [ 5, MoveId.LEER ], + [ 10, MoveId.BLOCK ], + [ 15, MoveId.BULLDOZE ], + [ 20, MoveId.ROCK_TOMB ], + [ 30, MoveId.IMPRISON ], + [ 35, MoveId.ROCK_SLIDE ], + [ 40, MoveId.EARTH_POWER ], + [ 45, MoveId.EXTRASENSORY ], + [ 50, MoveId.STONE_EDGE ], + [ 55, MoveId.HAMMER_ARM ], + [ 60, MoveId.SANDSTORM ], + [ 65, MoveId.EARTHQUAKE ], + [ 70, MoveId.OUTRAGE ], + [ 75, MoveId.FISSURE ], + [ 80, MoveId.SANDSEAR_STORM ], + ], + [SpeciesId.KYUREM]: [ + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.ANCIENT_POWER ], + [ 1, MoveId.NOBLE_ROAR ], + [ 1, MoveId.FREEZE_DRY ], + [ 8, MoveId.SLASH ], + [ 16, MoveId.ENDEAVOR ], + [ 24, MoveId.DRAGON_PULSE ], + [ 32, MoveId.ICE_BEAM ], + [ 40, MoveId.HYPER_VOICE ], + [ 48, MoveId.SCARY_FACE ], + [ 56, MoveId.BLIZZARD ], + [ 64, MoveId.IMPRISON ], + [ 72, MoveId.OUTRAGE ], + [ 80, MoveId.GLACIATE ], + [ 88, MoveId.SHEER_COLD ], + ], + [SpeciesId.KELDEO]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.AQUA_JET ], + [ 1, MoveId.WORK_UP ], + [ 1, MoveId.SECRET_SWORD ], + [ 7, MoveId.BUBBLE_BEAM ], + [ 14, MoveId.QUICK_GUARD ], + [ 21, MoveId.DOUBLE_KICK ], + [ 28, MoveId.RETALIATE ], + [ 35, MoveId.AQUA_TAIL ], + [ 42, MoveId.TAKE_DOWN ], + [ 49, MoveId.SACRED_SWORD ], + [ 56, MoveId.SWORDS_DANCE ], + [ 63, MoveId.HYDRO_PUMP ], + [ 70, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.MELOETTA]: [ + [ 1, MoveId.SING ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.ROUND ], + [ 21, MoveId.TEETER_DANCE ], + [ 26, MoveId.ACROBATICS ], + [ 31, MoveId.PSYBEAM ], + [ 36, MoveId.ECHOED_VOICE ], + [ 43, MoveId.U_TURN ], + [ 50, MoveId.RELIC_SONG ], + [ 57, MoveId.PSYCHIC ], + [ 64, MoveId.HYPER_VOICE ], + [ 71, MoveId.ROLE_PLAY ], + [ 78, MoveId.CLOSE_COMBAT ], + [ 85, MoveId.PERISH_SONG ], + ], + [SpeciesId.GENESECT]: [ + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.FURY_CUTTER ], + [ 7, MoveId.SCREECH ], + [ 14, MoveId.METAL_CLAW ], + [ 21, MoveId.FELL_STINGER ], + [ 28, MoveId.FLAME_CHARGE ], + [ 35, MoveId.METAL_SOUND ], + [ 42, MoveId.X_SCISSOR ], + [ 49, MoveId.MAGNET_RISE ], + [ 56, MoveId.BUG_BUZZ ], + [ 63, MoveId.SIMPLE_BEAM ], + [ 70, MoveId.ZAP_CANNON ], + [ 77, MoveId.LOCK_ON ], + [ 84, MoveId.TECHNO_BLAST ], + [ 91, MoveId.SELF_DESTRUCT ], + ], + [SpeciesId.CHESPIN]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.VINE_WHIP ], + [ 8, MoveId.ROLLOUT ], + [ 11, MoveId.BITE ], + [ 15, MoveId.LEECH_SEED ], + [ 18, MoveId.PIN_MISSILE ], + [ 27, MoveId.TAKE_DOWN ], + [ 32, MoveId.SEED_BOMB ], + [ 35, MoveId.MUD_SHOT ], + [ 42, MoveId.BODY_SLAM ], + [ 45, MoveId.PAIN_SPLIT ], + [ 48, MoveId.WOOD_HAMMER ], + ], + [SpeciesId.QUILLADIN]: [ + [ EVOLVE_MOVE, MoveId.NEEDLE_ARM ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.VINE_WHIP ], + [ 8, MoveId.ROLLOUT ], + [ 11, MoveId.BITE ], + [ 15, MoveId.LEECH_SEED ], + [ 20, MoveId.SEED_BOMB ], + [ 24, MoveId.PIN_MISSILE ], + [ 29, MoveId.TAKE_DOWN ], + [ 34, MoveId.MUD_SHOT ], + [ 38, MoveId.BULK_UP ], + [ 43, MoveId.BODY_SLAM ], + [ 47, MoveId.PAIN_SPLIT ], + [ 53, MoveId.WOOD_HAMMER ], + ], + [SpeciesId.CHESNAUGHT]: [ + [ EVOLVE_MOVE, MoveId.SPIKY_SHIELD ], + [ 1, MoveId.VINE_WHIP ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.ROLLOUT ], + [ 1, MoveId.HAMMER_ARM ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.NEEDLE_ARM ], + [ 11, MoveId.BITE ], + [ 15, MoveId.LEECH_SEED ], + [ 19, MoveId.PIN_MISSILE ], + [ 29, MoveId.TAKE_DOWN ], + [ 35, MoveId.SEED_BOMB ], + [ 41, MoveId.MUD_SHOT ], + [ 48, MoveId.BULK_UP ], + [ 54, MoveId.BODY_SLAM ], + [ 60, MoveId.PAIN_SPLIT ], + [ 66, MoveId.WOOD_HAMMER ], + [ 78, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.FENNEKIN]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.TAIL_WHIP ], + [ 5, MoveId.EMBER ], + [ 11, MoveId.HOWL ], + [ 14, MoveId.FLAME_CHARGE ], + [ 17, MoveId.PSYBEAM ], + [ 20, MoveId.FIRE_SPIN ], + [ 25, MoveId.LIGHT_SCREEN ], + [ 31, MoveId.PSYSHOCK ], + [ 35, MoveId.FLAMETHROWER ], + [ 38, MoveId.WILL_O_WISP ], + [ 41, MoveId.PSYCHIC ], + [ 43, MoveId.SUNNY_DAY ], + [ 48, MoveId.FIRE_BLAST ], + ], + [SpeciesId.BRAIXEN]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.EMBER ], + [ 11, MoveId.HOWL ], + [ 14, MoveId.FLAME_CHARGE ], + [ 18, MoveId.PSYBEAM ], + [ 22, MoveId.FIRE_SPIN ], + [ 28, MoveId.LIGHT_SCREEN ], + [ 36, MoveId.PSYSHOCK ], + [ 41, MoveId.FLAMETHROWER ], + [ 45, MoveId.WILL_O_WISP ], + [ 49, MoveId.PSYCHIC ], + [ 52, MoveId.SUNNY_DAY ], + [ 56, MoveId.MAGIC_ROOM ], + [ 59, MoveId.FIRE_BLAST ], + ], + [SpeciesId.DELPHOX]: [ + [ EVOLVE_MOVE, MoveId.MYSTICAL_FIRE ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.SHADOW_BALL ], + [ 1, MoveId.FUTURE_SIGHT ], + [ 1, MoveId.ROLE_PLAY ], + [ 1, MoveId.HOWL ], + [ 1, MoveId.SWITCHEROO ], + [ 14, MoveId.FLAME_CHARGE ], + [ 18, MoveId.PSYBEAM ], + [ 22, MoveId.FIRE_SPIN ], + [ 28, MoveId.LIGHT_SCREEN ], + [ 38, MoveId.PSYSHOCK ], + [ 45, MoveId.FLAMETHROWER ], + [ 51, MoveId.WILL_O_WISP ], + [ 57, MoveId.PSYCHIC ], + [ 62, MoveId.SUNNY_DAY ], + [ 68, MoveId.MAGIC_ROOM ], + [ 74, MoveId.FIRE_BLAST ], + ], + [SpeciesId.FROAKIE]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.GROWL ], + [ 5, MoveId.WATER_GUN ], + [ 8, MoveId.QUICK_ATTACK ], + [ 10, MoveId.LICK ], + [ 14, MoveId.WATER_PULSE ], + [ 18, MoveId.SMOKESCREEN ], + [ 21, MoveId.ROUND ], + [ 25, MoveId.FLING ], + [ 29, MoveId.SMACK_DOWN ], + [ 35, MoveId.SUBSTITUTE ], + [ 39, MoveId.BOUNCE ], + [ 43, MoveId.DOUBLE_TEAM ], + [ 48, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.FROGADIER]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 8, MoveId.QUICK_ATTACK ], + [ 10, MoveId.LICK ], + [ 14, MoveId.WATER_PULSE ], + [ 19, MoveId.SMOKESCREEN ], + [ 23, MoveId.ROUND ], + [ 28, MoveId.FLING ], + [ 33, MoveId.SMACK_DOWN ], + [ 40, MoveId.SUBSTITUTE ], + [ 45, MoveId.BOUNCE ], + [ 50, MoveId.DOUBLE_TEAM ], + [ 56, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.GRENINJA]: [ + [ EVOLVE_MOVE, MoveId.WATER_SHURIKEN ], + [ 1, MoveId.POUND ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.ROUND ], // Previous Stage Move + [ 1, MoveId.FLING ], // Previous Stage Move + [ 1, MoveId.SMACK_DOWN ], // Previous Stage Move + [ 1, MoveId.BOUNCE ], // Previous Stage Move + [ 1, MoveId.HAZE ], + [ 1, MoveId.MAT_BLOCK ], + [ 1, MoveId.ROLE_PLAY ], + [ 1, MoveId.NIGHT_SLASH ], + [ 10, MoveId.LICK ], + [ 14, MoveId.WATER_PULSE ], + [ 19, MoveId.SMOKESCREEN ], + [ 23, MoveId.SHADOW_SNEAK ], + [ 28, MoveId.SPIKES ], + [ 33, MoveId.AERIAL_ACE ], + [ 42, MoveId.SUBSTITUTE ], + [ 49, MoveId.EXTRASENSORY ], + [ 56, MoveId.DOUBLE_TEAM ], + [ 68, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.BUNNELBY]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.MUD_SLAP ], + [ 3, MoveId.TACKLE ], + [ 6, MoveId.LASER_FOCUS ], + [ 9, MoveId.QUICK_ATTACK ], + [ 12, MoveId.MUD_SHOT ], + [ 15, MoveId.FLAIL ], + [ 18, MoveId.DOUBLE_KICK ], + [ 21, MoveId.BULLDOZE ], + [ 24, MoveId.DIG ], + [ 27, MoveId.BOUNCE ], + [ 30, MoveId.TAKE_DOWN ], + [ 33, MoveId.SWORDS_DANCE ], + [ 36, MoveId.EARTHQUAKE ], + [ 39, MoveId.SUPER_FANG ], + ], + [SpeciesId.DIGGERSBY]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.LASER_FOCUS ], + [ 1, MoveId.ROTOTILLER ], + [ 9, MoveId.QUICK_ATTACK ], + [ 12, MoveId.MUD_SHOT ], + [ 15, MoveId.FLAIL ], + [ 18, MoveId.DOUBLE_KICK ], + [ 23, MoveId.BULLDOZE ], + [ 28, MoveId.DIG ], + [ 33, MoveId.BOUNCE ], + [ 38, MoveId.TAKE_DOWN ], + [ 43, MoveId.SWORDS_DANCE ], + [ 48, MoveId.EARTHQUAKE ], + [ 53, MoveId.SUPER_FANG ], + [ 58, MoveId.HAMMER_ARM ], + ], + [SpeciesId.FLETCHLING]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.PECK ], + [ 5, MoveId.QUICK_ATTACK ], + [ 10, MoveId.EMBER ], + [ 15, MoveId.FLAIL ], + [ 20, MoveId.ACROBATICS ], + [ 25, MoveId.AGILITY ], + [ 30, MoveId.AERIAL_ACE ], + [ 35, MoveId.TAILWIND ], + [ 40, MoveId.STEEL_WING ], + [ 45, MoveId.ROOST ], + [ 50, MoveId.FLY ], + ], + [SpeciesId.FLETCHINDER]: [ + [ EVOLVE_MOVE, MoveId.FLAME_CHARGE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.PECK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.FEINT ], + [ 15, MoveId.FLAIL ], + [ 22, MoveId.ACROBATICS ], + [ 29, MoveId.AGILITY ], + [ 36, MoveId.AERIAL_ACE ], + [ 43, MoveId.TAILWIND ], + [ 50, MoveId.STEEL_WING ], + [ 57, MoveId.ROOST ], + [ 64, MoveId.FLY ], + ], + [SpeciesId.TALONFLAME]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.PECK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.FLARE_BLITZ ], + [ 1, MoveId.FLAME_CHARGE ], + [ 15, MoveId.FLAIL ], + [ 22, MoveId.ACROBATICS ], + [ 29, MoveId.AGILITY ], + [ 38, MoveId.AERIAL_ACE ], + [ 47, MoveId.TAILWIND ], + [ 56, MoveId.STEEL_WING ], + [ 65, MoveId.ROOST ], + [ 74, MoveId.FLY ], + [ 83, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.SCATTERBUG]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.STRING_SHOT ], + [ 6, MoveId.STUN_SPORE ], + [ 15, MoveId.BUG_BITE ], + ], + [SpeciesId.SPEWPA]: [ + [ EVOLVE_MOVE, MoveId.PROTECT ], + [ RELEARN_MOVE, MoveId.TACKLE ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.STRING_SHOT ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.STUN_SPORE ], // Previous Stage Move + [ RELEARN_MOVE, MoveId.BUG_BITE ], // Previous Stage Move + [ 1, MoveId.HARDEN ], + ], + [SpeciesId.VIVILLON]: [ + [ EVOLVE_MOVE, MoveId.GUST ], + [ 1, MoveId.PROTECT ], // Previous Stage Move + [ 1, MoveId.TACKLE ], // Previous Stage Move + [ 1, MoveId.STRING_SHOT ], // Previous Stage Move + [ 1, MoveId.HARDEN ], // Previous Stage Move + [ 1, MoveId.BUG_BITE ], // Previous Stage Move + [ 1, MoveId.POISON_POWDER ], + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.SLEEP_POWDER ], + [ 1, MoveId.STRUGGLE_BUG ], + [ 1, MoveId.POWDER ], + [ 12, MoveId.LIGHT_SCREEN ], + [ 17, MoveId.PSYBEAM ], + [ 21, MoveId.SUPERSONIC ], + [ 25, MoveId.DRAINING_KISS ], + [ 31, MoveId.SAFEGUARD ], + [ 35, MoveId.BUG_BUZZ ], + [ 45, MoveId.QUIVER_DANCE ], + [ 50, MoveId.HURRICANE ], + ], + [SpeciesId.LITLEO]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 5, MoveId.EMBER ], + [ 8, MoveId.WORK_UP ], + [ 11, MoveId.HEADBUTT ], + [ 15, MoveId.NOBLE_ROAR ], + [ 20, MoveId.TAKE_DOWN ], + [ 23, MoveId.FIRE_FANG ], + [ 28, MoveId.ENDEAVOR ], + [ 33, MoveId.ECHOED_VOICE ], + [ 36, MoveId.FLAMETHROWER ], + [ 39, MoveId.CRUNCH ], + [ 43, MoveId.HYPER_VOICE ], + [ 46, MoveId.INCINERATE ], + [ 50, MoveId.OVERHEAT ], + ], + [SpeciesId.PYROAR]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.HYPER_BEAM ], + [ 1, MoveId.WORK_UP ], + [ 11, MoveId.HEADBUTT ], + [ 15, MoveId.NOBLE_ROAR ], + [ 20, MoveId.TAKE_DOWN ], + [ 23, MoveId.FIRE_FANG ], + [ 28, MoveId.ENDEAVOR ], + [ 33, MoveId.ECHOED_VOICE ], + [ 38, MoveId.FLAMETHROWER ], + [ 42, MoveId.CRUNCH ], + [ 48, MoveId.HYPER_VOICE ], + [ 51, MoveId.INCINERATE ], + [ 57, MoveId.OVERHEAT ], + ], + [SpeciesId.FLABEBE]: [ + [ 1, MoveId.VINE_WHIP ], + [ 1, MoveId.TACKLE ], + [ 6, MoveId.FAIRY_WIND ], + [ 10, MoveId.SAFEGUARD ], + [ 15, MoveId.RAZOR_LEAF ], + [ 20, MoveId.WISH ], + [ 22, MoveId.MAGICAL_LEAF ], + [ 24, MoveId.GRASSY_TERRAIN ], + [ 28, MoveId.PETAL_BLIZZARD ], + [ 33, MoveId.SYNTHESIS ], + [ 37, MoveId.MISTY_TERRAIN ], + [ 41, MoveId.MOONBLAST ], + [ 45, MoveId.PETAL_DANCE ], + [ 48, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.FLOETTE]: [ + [ 1, MoveId.VINE_WHIP ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.FAIRY_WIND ], + [ 10, MoveId.SAFEGUARD ], + [ 15, MoveId.RAZOR_LEAF ], + [ 20, MoveId.WISH ], + [ 25, MoveId.MAGICAL_LEAF ], + [ 27, MoveId.GRASSY_TERRAIN ], + [ 33, MoveId.PETAL_BLIZZARD ], + [ 38, MoveId.SYNTHESIS ], + [ 43, MoveId.MISTY_TERRAIN ], + [ 46, MoveId.MOONBLAST ], + [ 51, MoveId.PETAL_DANCE ], + [ 58, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.FLORGES]: [ + [ 1, MoveId.VINE_WHIP ], // Previous Stage Move + [ 1, MoveId.TACKLE ], // Previous Stage Move + [ 1, MoveId.FAIRY_WIND ], // Previous Stage Move + [ 1, MoveId.RAZOR_LEAF ], // Previous Stage Move + [ 1, MoveId.SOLAR_BEAM ], + [ 1, MoveId.PETAL_DANCE ], + [ 1, MoveId.SAFEGUARD ], + [ 1, MoveId.SYNTHESIS ], + [ 1, MoveId.WISH ], + [ 1, MoveId.LUCKY_CHANT ], + [ 1, MoveId.MAGICAL_LEAF ], + [ 1, MoveId.GRASS_KNOT ], + [ 1, MoveId.PETAL_BLIZZARD ], + [ 1, MoveId.DISARMING_VOICE ], + [ 1, MoveId.GRASSY_TERRAIN ], + [ 1, MoveId.MISTY_TERRAIN ], + [ 5, MoveId.MOONBLAST ], + ], + [SpeciesId.SKIDDO]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWTH ], + [ 7, MoveId.VINE_WHIP ], + [ 9, MoveId.TAIL_WHIP ], + [ 12, MoveId.LEECH_SEED ], + [ 13, MoveId.RAZOR_LEAF ], + [ 16, MoveId.WORRY_SEED ], + [ 20, MoveId.SYNTHESIS ], + [ 22, MoveId.TAKE_DOWN ], + [ 26, MoveId.BULLDOZE ], + [ 30, MoveId.SEED_BOMB ], + [ 34, MoveId.BULK_UP ], + [ 38, MoveId.DOUBLE_EDGE ], + [ 42, MoveId.HORN_LEECH ], + [ 45, MoveId.LEAF_BLADE ], + ], + [SpeciesId.GOGOAT]: [ + [ EVOLVE_MOVE, MoveId.AERIAL_ACE ], + [ 1, MoveId.VINE_WHIP ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.EARTHQUAKE ], + [ 12, MoveId.LEECH_SEED ], + [ 13, MoveId.RAZOR_LEAF ], + [ 16, MoveId.WORRY_SEED ], + [ 20, MoveId.SYNTHESIS ], + [ 22, MoveId.TAKE_DOWN ], + [ 26, MoveId.BULLDOZE ], + [ 30, MoveId.SEED_BOMB ], + [ 34, MoveId.BULK_UP ], + [ 40, MoveId.DOUBLE_EDGE ], + [ 47, MoveId.HORN_LEECH ], + [ 55, MoveId.LEAF_BLADE ], + [ 58, MoveId.MILK_DRINK ], + ], + [SpeciesId.PANCHAM]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 4, MoveId.ARM_THRUST ], + [ 8, MoveId.TAUNT ], + [ 12, MoveId.CIRCLE_THROW ], + [ 16, MoveId.LOW_SWEEP ], + [ 20, MoveId.WORK_UP ], + [ 24, MoveId.SLASH ], + [ 28, MoveId.VITAL_THROW ], + [ 33, MoveId.CRUNCH ], + [ 36, MoveId.BODY_SLAM ], + [ 40, MoveId.PARTING_SHOT ], + [ 44, MoveId.ENTRAINMENT ], + ], + [SpeciesId.PANGORO]: [ + [ EVOLVE_MOVE, MoveId.NIGHT_SLASH ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.TAUNT ], + [ 1, MoveId.ARM_THRUST ], + [ 1, MoveId.BULLET_PUNCH ], + [ 12, MoveId.CIRCLE_THROW ], + [ 16, MoveId.LOW_SWEEP ], + [ 20, MoveId.WORK_UP ], + [ 24, MoveId.SLASH ], + [ 28, MoveId.VITAL_THROW ], + [ 35, MoveId.CRUNCH ], + [ 40, MoveId.BODY_SLAM ], + [ 46, MoveId.PARTING_SHOT ], + [ 52, MoveId.ENTRAINMENT ], + [ 58, MoveId.HAMMER_ARM ], + ], + [SpeciesId.FURFROU]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 5, MoveId.SAND_ATTACK ], + [ 9, MoveId.BABY_DOLL_EYES ], + [ 12, MoveId.HEADBUTT ], + [ 15, MoveId.TAIL_WHIP ], + [ 22, MoveId.BITE ], + [ 27, MoveId.ODOR_SLEUTH ], + [ 33, MoveId.RETALIATE ], + [ 35, MoveId.TAKE_DOWN ], + [ 38, MoveId.CHARM ], + [ 42, MoveId.SUCKER_PUNCH ], + [ 48, MoveId.COTTON_GUARD ], + ], + [SpeciesId.ESPURR]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 3, MoveId.FAKE_OUT ], + [ 6, MoveId.DISARMING_VOICE ], + [ 9, MoveId.CONFUSION ], + [ 18, MoveId.COVET ], + [ 21, MoveId.PSYBEAM ], + [ 30, MoveId.LIGHT_SCREEN ], + [ 30, MoveId.REFLECT ], + [ 33, MoveId.PSYSHOCK ], + ], + [SpeciesId.MEOWSTIC]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.MEAN_LOOK ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.DISARMING_VOICE ], + [ 9, MoveId.CONFUSION ], + [ 12, MoveId.HELPING_HAND ], + [ 15, MoveId.CHARM ], + [ 18, MoveId.COVET ], + [ 21, MoveId.PSYBEAM ], + [ 24, MoveId.SUCKER_PUNCH ], + [ 29, MoveId.ROLE_PLAY ], + [ 34, MoveId.LIGHT_SCREEN ], + [ 34, MoveId.REFLECT ], + [ 39, MoveId.PSYSHOCK ], + [ 44, MoveId.IMPRISON ], + [ 49, MoveId.QUICK_GUARD ], + [ 54, MoveId.PSYCHIC ], + [ 59, MoveId.MISTY_TERRAIN ], + ], + [SpeciesId.HONEDGE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.FURY_CUTTER ], + [ 4, MoveId.SHADOW_SNEAK ], + [ 8, MoveId.AUTOTOMIZE ], + [ 12, MoveId.AERIAL_ACE ], + [ 16, MoveId.METAL_SOUND ], + [ 20, MoveId.SLASH ], + [ 24, MoveId.NIGHT_SLASH ], + [ 28, MoveId.RETALIATE ], + [ 32, MoveId.IRON_DEFENSE ], + [ 36, MoveId.IRON_HEAD ], + [ 40, MoveId.POWER_TRICK ], + [ 44, MoveId.SWORDS_DANCE ], + [ 48, MoveId.SACRED_SWORD ], + ], + [SpeciesId.DOUBLADE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.SHADOW_SNEAK ], + [ 1, MoveId.AUTOTOMIZE ], + [ 12, MoveId.AERIAL_ACE ], + [ 16, MoveId.METAL_SOUND ], + [ 20, MoveId.SLASH ], + [ 24, MoveId.NIGHT_SLASH ], + [ 28, MoveId.RETALIATE ], + [ 32, MoveId.IRON_DEFENSE ], + [ 38, MoveId.IRON_HEAD ], + [ 44, MoveId.POWER_TRICK ], + [ 50, MoveId.SWORDS_DANCE ], + [ 56, MoveId.SACRED_SWORD ], + ], + [SpeciesId.AEGISLASH]: [ + [ EVOLVE_MOVE, MoveId.KINGS_SHIELD ], + [ 1, MoveId.SWORDS_DANCE ], + [ 1, MoveId.PURSUIT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SLASH ], + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.METAL_SOUND ], + [ 1, MoveId.AERIAL_ACE ], + [ 1, MoveId.IRON_DEFENSE ], + [ 1, MoveId.POWER_TRICK ], + [ 1, MoveId.NIGHT_SLASH ], + [ 1, MoveId.SHADOW_SNEAK ], + [ 1, MoveId.IRON_HEAD ], + [ 1, MoveId.HEAD_SMASH ], + [ 1, MoveId.AUTOTOMIZE ], + [ 1, MoveId.RETALIATE ], + [ 1, MoveId.SACRED_SWORD ], + ], + [SpeciesId.SPRITZEE]: [ + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.FAIRY_WIND ], + [ 3, MoveId.SWEET_KISS ], + [ 6, MoveId.ECHOED_VOICE ], + [ 9, MoveId.DRAINING_KISS ], + [ 12, MoveId.AROMATHERAPY ], + [ 18, MoveId.ATTRACT ], + [ 21, MoveId.FLAIL ], + [ 24, MoveId.MISTY_TERRAIN ], + [ 27, MoveId.PSYCHIC ], + [ 30, MoveId.CHARM ], + [ 33, MoveId.CALM_MIND ], + [ 36, MoveId.MOONBLAST ], + [ 39, MoveId.SKILL_SWAP ], + ], + [SpeciesId.AROMATISSE]: [ + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.ECHOED_VOICE ], + [ 1, MoveId.HEAL_PULSE ], + [ 1, MoveId.FAIRY_WIND ], + [ 1, MoveId.AROMATIC_MIST ], + [ 9, MoveId.DISARMING_VOICE ], + [ 12, MoveId.AROMATHERAPY ], + [ 15, MoveId.DRAINING_KISS ], + [ 18, MoveId.ATTRACT ], + [ 21, MoveId.FLAIL ], + [ 24, MoveId.MISTY_TERRAIN ], + [ 27, MoveId.PSYCHIC ], + [ 30, MoveId.CHARM ], + [ 33, MoveId.CALM_MIND ], + [ 36, MoveId.MOONBLAST ], + [ 39, MoveId.SKILL_SWAP ], + [ 42, MoveId.PSYCH_UP ], + ], + [SpeciesId.SWIRLIX]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SWEET_SCENT ], + [ 3, MoveId.PLAY_NICE ], + [ 6, MoveId.FAIRY_WIND ], + [ 9, MoveId.AROMATHERAPY ], + [ 12, MoveId.DRAINING_KISS ], + [ 15, MoveId.FAKE_TEARS ], + [ 18, MoveId.ROUND ], + [ 21, MoveId.STRING_SHOT ], + [ 24, MoveId.COTTON_SPORE ], + [ 27, MoveId.ENERGY_BALL ], + [ 30, MoveId.WISH ], + [ 33, MoveId.PLAY_ROUGH ], + [ 36, MoveId.COTTON_GUARD ], + [ 39, MoveId.ENDEAVOR ], + ], + [SpeciesId.SLURPUFF]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.FAIRY_WIND ], + [ 1, MoveId.PLAY_NICE ], + [ 9, MoveId.AROMATHERAPY ], + [ 12, MoveId.DRAINING_KISS ], + [ 15, MoveId.FAKE_TEARS ], + [ 18, MoveId.ROUND ], + [ 21, MoveId.STRING_SHOT ], + [ 24, MoveId.COTTON_SPORE ], + [ 27, MoveId.ENERGY_BALL ], + [ 30, MoveId.WISH ], + [ 33, MoveId.PLAY_ROUGH ], + [ 36, MoveId.COTTON_GUARD ], + [ 39, MoveId.ENDEAVOR ], + [ 42, MoveId.STICKY_WEB ], + ], + [SpeciesId.INKAY]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.PECK ], + [ 1, MoveId.CONSTRICT ], + [ 3, MoveId.HYPNOSIS ], + [ 6, MoveId.WRAP ], + [ 9, MoveId.PAYBACK ], + [ 12, MoveId.PLUCK ], + [ 15, MoveId.PSYBEAM ], + [ 18, MoveId.SWAGGER ], + [ 21, MoveId.SLASH ], + [ 24, MoveId.NIGHT_SLASH ], + [ 27, MoveId.PSYCHO_CUT ], + [ 31, MoveId.SWITCHEROO ], + [ 33, MoveId.FOUL_PLAY ], + [ 36, MoveId.TOPSY_TURVY ], + [ 39, MoveId.SUPERPOWER ], + ], + [SpeciesId.MALAMAR]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WRAP ], + [ 1, MoveId.PECK ], + [ 1, MoveId.CONSTRICT ], + [ 1, MoveId.HYPNOSIS ], + [ 1, MoveId.REVERSAL ], + [ 9, MoveId.PAYBACK ], + [ 12, MoveId.PLUCK ], + [ 15, MoveId.PSYBEAM ], + [ 18, MoveId.SWAGGER ], + [ 21, MoveId.SLASH ], + [ 24, MoveId.NIGHT_SLASH ], + [ 27, MoveId.PSYCHO_CUT ], + [ 33, MoveId.SWITCHEROO ], + [ 37, MoveId.FOUL_PLAY ], + [ 42, MoveId.TOPSY_TURVY ], + [ 47, MoveId.SUPERPOWER ], + ], + [SpeciesId.BINACLE]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.MUD_SLAP ], + [ 4, MoveId.WITHDRAW ], + [ 8, MoveId.WATER_GUN ], + [ 12, MoveId.FURY_CUTTER ], + [ 16, MoveId.FURY_SWIPES ], + [ 20, MoveId.ANCIENT_POWER ], + [ 24, MoveId.ROCK_POLISH ], + [ 28, MoveId.SLASH ], + [ 32, MoveId.HONE_CLAWS ], + [ 36, MoveId.RAZOR_SHELL ], + [ 40, MoveId.SHELL_SMASH ], + [ 44, MoveId.CROSS_CHOP ], + ], + [SpeciesId.BARBARACLE]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.SKULL_BASH ], + [ 1, MoveId.MUD_SLAP ], + [ 12, MoveId.FURY_CUTTER ], + [ 16, MoveId.FURY_SWIPES ], + [ 20, MoveId.ANCIENT_POWER ], + [ 24, MoveId.ROCK_POLISH ], + [ 28, MoveId.SLASH ], + [ 32, MoveId.HONE_CLAWS ], + [ 36, MoveId.RAZOR_SHELL ], + [ 42, MoveId.SHELL_SMASH ], + [ 48, MoveId.CROSS_CHOP ], + [ 54, MoveId.STONE_EDGE ], + ], + [SpeciesId.SKRELP]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SMOKESCREEN ], + [ 5, MoveId.ACID ], + [ 10, MoveId.WATER_GUN ], + [ 15, MoveId.TAIL_WHIP ], + [ 20, MoveId.DOUBLE_TEAM ], + [ 25, MoveId.POISON_TAIL ], + [ 30, MoveId.WATER_PULSE ], + [ 35, MoveId.TOXIC ], + [ 40, MoveId.DRAGON_PULSE ], + [ 45, MoveId.AQUA_TAIL ], + [ 50, MoveId.SLUDGE_BOMB ], + [ 55, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.DRAGALGE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.ACID ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.FEINT_ATTACK ], + [ 15, MoveId.TAIL_WHIP ], + [ 20, MoveId.DOUBLE_TEAM ], + [ 25, MoveId.POISON_TAIL ], + [ 30, MoveId.WATER_PULSE ], + [ 35, MoveId.TOXIC ], + [ 40, MoveId.DRAGON_PULSE ], + [ 45, MoveId.AQUA_TAIL ], + [ 52, MoveId.SLUDGE_BOMB ], + [ 59, MoveId.HYDRO_PUMP ], + [ 66, MoveId.OUTRAGE ], + ], + [SpeciesId.CLAUNCHER]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.SPLASH ], + [ 10, MoveId.FLAIL ], + [ 15, MoveId.AQUA_JET ], + [ 20, MoveId.SMACK_DOWN ], + [ 25, MoveId.HONE_CLAWS ], + [ 30, MoveId.WATER_PULSE ], + [ 35, MoveId.SWORDS_DANCE ], + [ 40, MoveId.AURA_SPHERE ], + [ 45, MoveId.BOUNCE ], + [ 50, MoveId.MUDDY_WATER ], + [ 55, MoveId.CRABHAMMER ], + ], + [SpeciesId.CLAWITZER]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.DARK_PULSE ], + [ 1, MoveId.DRAGON_PULSE ], + [ 1, MoveId.HEAL_PULSE ], + [ 15, MoveId.AQUA_JET ], + [ 20, MoveId.SMACK_DOWN ], + [ 25, MoveId.HONE_CLAWS ], + [ 30, MoveId.WATER_PULSE ], + [ 35, MoveId.SWORDS_DANCE ], + [ 42, MoveId.AURA_SPHERE ], + [ 49, MoveId.BOUNCE ], + [ 56, MoveId.MUDDY_WATER ], + [ 63, MoveId.CRABHAMMER ], + ], + [SpeciesId.HELIOPTILE]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.MUD_SLAP ], + [ 4, MoveId.POUND ], + [ 8, MoveId.THUNDER_SHOCK ], + [ 12, MoveId.QUICK_ATTACK ], + [ 16, MoveId.CHARGE ], + [ 20, MoveId.BULLDOZE ], + [ 24, MoveId.VOLT_SWITCH ], + [ 28, MoveId.PARABOLIC_CHARGE ], + [ 32, MoveId.THUNDER_WAVE ], + [ 36, MoveId.THUNDERBOLT ], + [ 40, MoveId.ELECTRIFY ], + [ 44, MoveId.THUNDER ], + ], + [SpeciesId.HELIOLISK]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.RAZOR_WIND ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.THUNDERBOLT ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.THUNDER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.CHARGE ], + [ 1, MoveId.DISCHARGE ], + [ 1, MoveId.VOLT_SWITCH ], + [ 1, MoveId.BULLDOZE ], + [ 1, MoveId.PARABOLIC_CHARGE ], + [ 1, MoveId.ELECTRIFY ], + [ 1, MoveId.EERIE_IMPULSE ], + ], + [SpeciesId.TYRUNT]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 4, MoveId.ROAR ], + [ 8, MoveId.ANCIENT_POWER ], + [ 12, MoveId.CHARM ], + [ 16, MoveId.BITE ], + [ 20, MoveId.DRAGON_TAIL ], + [ 24, MoveId.STOMP ], + [ 28, MoveId.ROCK_SLIDE ], + [ 32, MoveId.CRUNCH ], + [ 36, MoveId.DRAGON_CLAW ], + [ 40, MoveId.THRASH ], + [ 44, MoveId.EARTHQUAKE ], + [ 48, MoveId.HORN_DRILL ], + ], + [SpeciesId.TYRANTRUM]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.ROAR ], + [ 1, MoveId.ANCIENT_POWER ], + [ 12, MoveId.CHARM ], + [ 16, MoveId.BITE ], + [ 20, MoveId.DRAGON_TAIL ], + [ 24, MoveId.STOMP ], + [ 28, MoveId.ROCK_SLIDE ], + [ 32, MoveId.CRUNCH ], + [ 36, MoveId.DRAGON_CLAW ], + [ 42, MoveId.THRASH ], + [ 48, MoveId.EARTHQUAKE ], + [ 54, MoveId.HORN_DRILL ], + [ 60, MoveId.GIGA_IMPACT ], + [ 66, MoveId.HEAD_SMASH ], + ], + [SpeciesId.AMAURA]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.POWDER_SNOW ], + [ 4, MoveId.ENCORE ], + [ 8, MoveId.ANCIENT_POWER ], + [ 12, MoveId.ICY_WIND ], + [ 16, MoveId.ROUND ], + [ 20, MoveId.MIST ], + [ 24, MoveId.AURORA_BEAM ], + [ 28, MoveId.THUNDER_WAVE ], + [ 32, MoveId.NATURE_POWER ], + [ 36, MoveId.FREEZE_DRY ], + [ 40, MoveId.ICE_BEAM ], + [ 44, MoveId.LIGHT_SCREEN ], + [ 48, MoveId.HAIL ], + [ 52, MoveId.BLIZZARD ], + [ 56, MoveId.HYPER_BEAM ], + ], + [SpeciesId.AURORUS]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.ENCORE ], + [ 1, MoveId.ANCIENT_POWER ], + [ 12, MoveId.ICY_WIND ], + [ 16, MoveId.ROUND ], + [ 20, MoveId.MIST ], + [ 24, MoveId.AURORA_BEAM ], + [ 28, MoveId.THUNDER_WAVE ], + [ 32, MoveId.NATURE_POWER ], + [ 36, MoveId.FREEZE_DRY ], + [ 42, MoveId.ICE_BEAM ], + [ 48, MoveId.LIGHT_SCREEN ], + [ 54, MoveId.HAIL ], + [ 60, MoveId.BLIZZARD ], + [ 66, MoveId.HYPER_BEAM ], + ], + [SpeciesId.SYLVEON]: [ + [ EVOLVE_MOVE, MoveId.SPARKLY_SWIRL ], + [ RELEARN_MOVE, MoveId.VEEVEE_VOLLEY ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.BITE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.COVET ], + [ 1, MoveId.COPYCAT ], + [ 5, MoveId.SAND_ATTACK ], + [ 10, MoveId.DISARMING_VOICE ], + [ 15, MoveId.QUICK_ATTACK ], + [ 20, MoveId.BABY_DOLL_EYES ], + [ 25, MoveId.SWIFT ], + [ 30, MoveId.LIGHT_SCREEN ], + [ 35, MoveId.DRAINING_KISS ], + [ 40, MoveId.MISTY_TERRAIN ], + [ 45, MoveId.SKILL_SWAP ], + [ 50, MoveId.PSYCH_UP ], + [ 55, MoveId.MOONBLAST ], + [ 60, MoveId.LAST_RESORT ], + ], + [SpeciesId.HAWLUCHA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HONE_CLAWS ], + [ 4, MoveId.WING_ATTACK ], + [ 8, MoveId.DETECT ], + [ 12, MoveId.AERIAL_ACE ], + [ 16, MoveId.ENCORE ], + [ 20, MoveId.FEATHER_DANCE ], + [ 24, MoveId.BRICK_BREAK ], + [ 28, MoveId.BOUNCE ], + [ 32, MoveId.TAUNT ], + [ 36, MoveId.ROOST ], + [ 40, MoveId.SWORDS_DANCE ], + [ 44, MoveId.FLYING_PRESS ], + [ 48, MoveId.HIGH_JUMP_KICK ], + [ 52, MoveId.ENDEAVOR ], + [ 56, MoveId.SKY_ATTACK ], + ], + [SpeciesId.DEDENNE]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.NUZZLE ], + [ 5, MoveId.TACKLE ], + [ 10, MoveId.CHARGE ], + [ 15, MoveId.THUNDER_SHOCK ], + [ 20, MoveId.CHARM ], + [ 25, MoveId.PARABOLIC_CHARGE ], + [ 30, MoveId.VOLT_SWITCH ], + [ 35, MoveId.REST ], + [ 35, MoveId.SNORE ], + [ 40, MoveId.DISCHARGE ], + [ 45, MoveId.PLAY_ROUGH ], + [ 50, MoveId.SUPER_FANG ], + [ 55, MoveId.ENTRAINMENT ], + [ 60, MoveId.THUNDER ], + ], + [SpeciesId.CARBINK]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 5, MoveId.GUARD_SPLIT ], + [ 10, MoveId.SMACK_DOWN ], + [ 15, MoveId.FLAIL ], + [ 20, MoveId.ANCIENT_POWER ], + [ 25, MoveId.ROCK_POLISH ], + [ 30, MoveId.LIGHT_SCREEN ], + [ 35, MoveId.ROCK_SLIDE ], + [ 40, MoveId.SKILL_SWAP ], + [ 45, MoveId.POWER_GEM ], + [ 50, MoveId.STEALTH_ROCK ], + [ 55, MoveId.MOONBLAST ], + [ 60, MoveId.STONE_EDGE ], + ], + [SpeciesId.GOOMY]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.ABSORB ], + [ 5, MoveId.WATER_GUN ], + [ 10, MoveId.DRAGON_BREATH ], + [ 15, MoveId.PROTECT ], + [ 20, MoveId.FLAIL ], + [ 25, MoveId.WATER_PULSE ], + [ 30, MoveId.RAIN_DANCE ], + [ 35, MoveId.DRAGON_PULSE ], + [ 41, MoveId.CURSE ], + [ 45, MoveId.BODY_SLAM ], + [ 50, MoveId.MUDDY_WATER ], + ], + [SpeciesId.SLIGGOO]: [ + [ EVOLVE_MOVE, MoveId.ACID_SPRAY ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.ACID_ARMOR ], + [ 1, MoveId.DRAGON_BREATH ], + [ 15, MoveId.PROTECT ], + [ 20, MoveId.FLAIL ], + [ 25, MoveId.WATER_PULSE ], + [ 30, MoveId.RAIN_DANCE ], + [ 35, MoveId.DRAGON_PULSE ], + [ 43, MoveId.CURSE ], + [ 49, MoveId.BODY_SLAM ], + [ 56, MoveId.MUDDY_WATER ], + ], + [SpeciesId.GOODRA]: [ + [ EVOLVE_MOVE, MoveId.AQUA_TAIL ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.ACID_ARMOR ], // Previous Stage Move + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.POISON_TAIL ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.ACID_SPRAY ], + [ 1, MoveId.TEARFUL_LOOK ], + [ 15, MoveId.PROTECT ], + [ 20, MoveId.FLAIL ], + [ 25, MoveId.WATER_PULSE ], + [ 30, MoveId.RAIN_DANCE ], + [ 35, MoveId.DRAGON_PULSE ], // Previous Stage Move, NatDex / Hisui Goodra Level + [ 43, MoveId.CURSE ], + [ 49, MoveId.BODY_SLAM ], + [ 58, MoveId.MUDDY_WATER ], + [ 67, MoveId.POWER_WHIP ], + ], + [SpeciesId.KLEFKI]: [ + [ 1, MoveId.ASTONISH ], + [ 4, MoveId.TACKLE ], + [ 8, MoveId.FAIRY_WIND ], + [ 12, MoveId.TORMENT ], + [ 16, MoveId.FAIRY_LOCK ], + [ 20, MoveId.METAL_SOUND ], + [ 24, MoveId.DRAINING_KISS ], + [ 28, MoveId.RECYCLE ], + [ 32, MoveId.IMPRISON ], + [ 36, MoveId.FLASH_CANNON ], + [ 40, MoveId.PLAY_ROUGH ], + [ 44, MoveId.MAGIC_ROOM ], + [ 48, MoveId.FOUL_PLAY ], + [ 50, MoveId.HEAL_BLOCK ], + [ 52, MoveId.LAST_RESORT ], + ], + [SpeciesId.PHANTUMP]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.ASTONISH ], + [ 4, MoveId.BRANCH_POKE ], + [ 8, MoveId.LEECH_SEED ], + [ 12, MoveId.CONFUSE_RAY ], + [ 16, MoveId.WILL_O_WISP ], + [ 20, MoveId.HEX ], + [ 24, MoveId.GROWTH ], + [ 28, MoveId.HORN_LEECH ], + [ 32, MoveId.CURSE ], + [ 36, MoveId.PHANTOM_FORCE ], + [ 40, MoveId.INGRAIN ], + [ 44, MoveId.WOOD_HAMMER ], + [ 48, MoveId.DESTINY_BOND ], + [ 52, MoveId.FORESTS_CURSE ], + ], + [SpeciesId.TREVENANT]: [ + [ EVOLVE_MOVE, MoveId.SHADOW_CLAW ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEECH_SEED ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.BRANCH_POKE ], + [ 12, MoveId.CONFUSE_RAY ], + [ 16, MoveId.WILL_O_WISP ], + [ 20, MoveId.HEX ], + [ 24, MoveId.GROWTH ], + [ 28, MoveId.HORN_LEECH ], + [ 32, MoveId.CURSE ], + [ 36, MoveId.PHANTOM_FORCE ], + [ 40, MoveId.INGRAIN ], + [ 44, MoveId.WOOD_HAMMER ], + [ 48, MoveId.DESTINY_BOND ], + [ 52, MoveId.FORESTS_CURSE ], + ], + [SpeciesId.PUMPKABOO]: [ + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.TRICK_OR_TREAT ], + [ 1, MoveId.LEAFAGE ], // Custom + [ 4, MoveId.SHADOW_SNEAK ], + [ 8, MoveId.CONFUSE_RAY ], + [ 12, MoveId.RAZOR_LEAF ], + [ 16, MoveId.LEECH_SEED ], + [ 20, MoveId.BULLET_SEED ], + [ 24, MoveId.SCARY_FACE ], + [ 28, MoveId.WORRY_SEED ], + [ 32, MoveId.SEED_BOMB ], + [ 36, MoveId.SHADOW_BALL ], + [ 40, MoveId.TRICK ], + [ 44, MoveId.PAIN_SPLIT ], + ], + [SpeciesId.GOURGEIST]: [ + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.EXPLOSION ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.LEAFAGE ], // Previous Stage Move, Custom + [ 1, MoveId.SHADOW_SNEAK ], + [ 1, MoveId.TRICK_OR_TREAT ], + [ 1, MoveId.MOONBLAST ], + [ 12, MoveId.RAZOR_LEAF ], + [ 16, MoveId.LEECH_SEED ], + [ 20, MoveId.BULLET_SEED ], + [ 24, MoveId.SCARY_FACE ], + [ 28, MoveId.WORRY_SEED ], + [ 32, MoveId.SEED_BOMB ], + [ 36, MoveId.SHADOW_BALL ], + [ 40, MoveId.TRICK ], + [ 44, MoveId.PAIN_SPLIT ], + [ 48, MoveId.PHANTOM_FORCE ], + ], + [SpeciesId.BERGMITE]: [ + [ 1, MoveId.HARDEN ], + [ 1, MoveId.RAPID_SPIN ], + [ 3, MoveId.TACKLE ], + [ 6, MoveId.POWDER_SNOW ], + [ 9, MoveId.CURSE ], + [ 12, MoveId.ICY_WIND ], + [ 15, MoveId.PROTECT ], + [ 18, MoveId.AVALANCHE ], + [ 21, MoveId.BITE ], + [ 24, MoveId.ICE_FANG ], + [ 27, MoveId.IRON_DEFENSE ], + [ 30, MoveId.RECOVER ], + [ 33, MoveId.CRUNCH ], + [ 36, MoveId.TAKE_DOWN ], + [ 39, MoveId.BLIZZARD ], + [ 42, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.AVALUGG]: [ + [ EVOLVE_MOVE, MoveId.BODY_SLAM ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.WIDE_GUARD ], + [ 9, MoveId.CURSE ], + [ 12, MoveId.ICY_WIND ], + [ 15, MoveId.PROTECT ], + [ 18, MoveId.AVALANCHE ], + [ 21, MoveId.BITE ], + [ 24, MoveId.ICE_FANG ], + [ 27, MoveId.IRON_DEFENSE ], + [ 30, MoveId.RECOVER ], + [ 33, MoveId.CRUNCH ], + [ 36, MoveId.TAKE_DOWN ], + [ 41, MoveId.BLIZZARD ], + [ 46, MoveId.DOUBLE_EDGE ], + [ 51, MoveId.ICICLE_CRASH ], + ], + [SpeciesId.NOIBAT]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.ABSORB ], + [ 4, MoveId.GUST ], + [ 8, MoveId.SUPERSONIC ], + [ 12, MoveId.DOUBLE_TEAM ], + [ 16, MoveId.WING_ATTACK ], + [ 20, MoveId.BITE ], + [ 24, MoveId.AIR_CUTTER ], + [ 28, MoveId.WHIRLWIND ], + [ 32, MoveId.SUPER_FANG ], + [ 36, MoveId.AIR_SLASH ], + [ 40, MoveId.SCREECH ], + [ 44, MoveId.ROOST ], + [ 49, MoveId.TAILWIND ], + [ 52, MoveId.HURRICANE ], + ], + [SpeciesId.NOIVERN]: [ + [ EVOLVE_MOVE, MoveId.DRAGON_PULSE ], + [ 1, MoveId.GUST ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.MOONLIGHT ], + [ 12, MoveId.DOUBLE_TEAM ], + [ 16, MoveId.WING_ATTACK ], + [ 20, MoveId.BITE ], + [ 24, MoveId.AIR_CUTTER ], + [ 28, MoveId.WHIRLWIND ], + [ 32, MoveId.SUPER_FANG ], + [ 36, MoveId.AIR_SLASH ], + [ 40, MoveId.SCREECH ], + [ 44, MoveId.ROOST ], + [ 51, MoveId.TAILWIND ], + [ 56, MoveId.HURRICANE ], + [ 62, MoveId.BOOMBURST ], + ], + [SpeciesId.XERNEAS]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GRAVITY ], + [ 5, MoveId.LIGHT_SCREEN ], + [ 10, MoveId.AURORA_BEAM ], + [ 15, MoveId.NATURE_POWER ], + [ 20, MoveId.NIGHT_SLASH ], + [ 25, MoveId.AROMATHERAPY ], + [ 30, MoveId.PSYCH_UP ], + [ 35, MoveId.HORN_LEECH ], + [ 40, MoveId.MISTY_TERRAIN ], + [ 45, MoveId.INGRAIN ], + [ 50, MoveId.TAKE_DOWN ], + [ 55, MoveId.GEOMANCY ], + [ 60, MoveId.MOONBLAST ], + [ 65, MoveId.HEAL_PULSE ], + [ 70, MoveId.MEGAHORN ], + [ 75, MoveId.CLOSE_COMBAT ], + [ 80, MoveId.OUTRAGE ], + [ 85, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.YVELTAL]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.RAZOR_WIND ], + [ 5, MoveId.TAUNT ], + [ 10, MoveId.SNARL ], + [ 15, MoveId.DISABLE ], + [ 20, MoveId.SUCKER_PUNCH ], + [ 25, MoveId.TAILWIND ], + [ 30, MoveId.ROOST ], + [ 35, MoveId.AIR_SLASH ], + [ 40, MoveId.DARK_PULSE ], + [ 45, MoveId.PSYCHIC ], + [ 50, MoveId.OBLIVION_WING ], + [ 55, MoveId.PHANTOM_FORCE ], + [ 60, MoveId.FOUL_PLAY ], + [ 65, MoveId.DRAGON_RUSH ], + [ 70, MoveId.HURRICANE ], + [ 75, MoveId.FOCUS_BLAST ], + [ 80, MoveId.SKY_ATTACK ], + [ 85, MoveId.HYPER_BEAM ], + ], + [SpeciesId.ZYGARDE]: [ + [ 1, MoveId.BIND ], + [ 1, MoveId.BITE ], + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.BULLDOZE ], + [ 1, MoveId.THOUSAND_ARROWS ], + [ 1, MoveId.THOUSAND_WAVES ], + [ 1, MoveId.CORE_ENFORCER ], + [ 8, MoveId.HAZE ], + [ 16, MoveId.DIG ], + [ 24, MoveId.SAFEGUARD ], + [ 32, MoveId.CRUNCH ], + [ 40, MoveId.DRAGON_PULSE ], + [ 48, MoveId.LANDS_WRATH ], + [ 56, MoveId.GLARE ], + [ 64, MoveId.SANDSTORM ], + [ 72, MoveId.COIL ], + [ 80, MoveId.EARTHQUAKE ], + [ 88, MoveId.OUTRAGE ], + ], + [SpeciesId.DIANCIE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.DIAMOND_STORM ], + [ 7, MoveId.GUARD_SPLIT ], + [ 14, MoveId.SMACK_DOWN ], + [ 21, MoveId.FLAIL ], + [ 28, MoveId.ANCIENT_POWER ], + [ 35, MoveId.ROCK_POLISH ], + [ 42, MoveId.LIGHT_SCREEN ], + [ 49, MoveId.ROCK_SLIDE ], + [ 56, MoveId.SKILL_SWAP ], + [ 63, MoveId.POWER_GEM ], + [ 70, MoveId.STEALTH_ROCK ], + [ 77, MoveId.MOONBLAST ], + [ 84, MoveId.STONE_EDGE ], + ], + [SpeciesId.HOOPA]: [ + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.DESTINY_BOND ], + [ 1, MoveId.ALLY_SWITCH ], + [ 6, MoveId.ASTONISH ], + [ 10, MoveId.TRICK ], + [ 15, MoveId.LIGHT_SCREEN ], + [ 19, MoveId.PSYBEAM ], + [ 25, MoveId.SKILL_SWAP ], + [ 29, MoveId.GUARD_SPLIT ], + [ 29, MoveId.POWER_SPLIT ], + [ 35, MoveId.PHANTOM_FORCE ], + [ 46, MoveId.ZEN_HEADBUTT ], + [ 50, MoveId.TRICK_ROOM ], + [ 50, MoveId.WONDER_ROOM ], + [ 55, MoveId.SHADOW_BALL ], + [ 68, MoveId.NASTY_PLOT ], + [ 75, MoveId.PSYCHIC ], + [ 85, MoveId.HYPERSPACE_HOLE ], + ], + [SpeciesId.VOLCANION]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.FIRE_SPIN ], + [ 1, MoveId.STEAM_ERUPTION ], + [ 6, MoveId.LEER ], + [ 12, MoveId.WEATHER_BALL ], + [ 18, MoveId.FLAME_CHARGE ], + [ 24, MoveId.WATER_PULSE ], + [ 30, MoveId.SCARY_FACE ], + [ 36, MoveId.INCINERATE ], + [ 42, MoveId.STOMP ], + [ 48, MoveId.SCALD ], + [ 54, MoveId.TAKE_DOWN ], + [ 60, MoveId.MIST ], + [ 60, MoveId.HAZE ], + [ 66, MoveId.HYDRO_PUMP ], + [ 78, MoveId.FLARE_BLITZ ], + [ 84, MoveId.OVERHEAT ], + [ 90, MoveId.EXPLOSION ], + ], + [SpeciesId.ROWLET]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 3, MoveId.LEAFAGE ], + [ 6, MoveId.ASTONISH ], + [ 9, MoveId.PECK ], + [ 12, MoveId.SHADOW_SNEAK ], + [ 15, MoveId.RAZOR_LEAF ], + [ 18, MoveId.SYNTHESIS ], + [ 21, MoveId.PLUCK ], + [ 24, MoveId.NASTY_PLOT ], + [ 27, MoveId.SUCKER_PUNCH ], + [ 30, MoveId.LEAF_BLADE ], + [ 33, MoveId.FEATHER_DANCE ], + [ 36, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.DARTRIX]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.LEAFAGE ], + [ 9, MoveId.PECK ], + [ 12, MoveId.SHADOW_SNEAK ], + [ 15, MoveId.RAZOR_LEAF ], + [ 20, MoveId.SYNTHESIS ], + [ 25, MoveId.PLUCK ], + [ 30, MoveId.NASTY_PLOT ], + [ 35, MoveId.SUCKER_PUNCH ], + [ 40, MoveId.LEAF_BLADE ], + [ 45, MoveId.FEATHER_DANCE ], + [ 50, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.DECIDUEYE]: [ + [ EVOLVE_MOVE, MoveId.SPIRIT_SHACKLE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.SPITE ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.U_TURN ], + [ 1, MoveId.LEAF_STORM ], + [ 1, MoveId.PHANTOM_FORCE ], + [ 1, MoveId.LEAFAGE ], + [ 9, MoveId.PECK ], + [ 12, MoveId.SHADOW_SNEAK ], + [ 15, MoveId.RAZOR_LEAF ], + [ 20, MoveId.SYNTHESIS ], + [ 25, MoveId.PLUCK ], + [ 30, MoveId.NASTY_PLOT ], + [ 37, MoveId.SUCKER_PUNCH ], + [ 44, MoveId.LEAF_BLADE ], + [ 51, MoveId.FEATHER_DANCE ], + [ 58, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.LITTEN]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 3, MoveId.EMBER ], + [ 6, MoveId.LICK ], + [ 9, MoveId.ROAR ], + [ 12, MoveId.FURY_SWIPES ], + [ 15, MoveId.BITE ], + [ 18, MoveId.DOUBLE_KICK ], + [ 21, MoveId.FIRE_FANG ], + [ 24, MoveId.SCARY_FACE ], + [ 27, MoveId.SWAGGER ], + [ 30, MoveId.FLAMETHROWER ], + [ 33, MoveId.THRASH ], + [ 36, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.TORRACAT]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.LICK ], + [ 9, MoveId.ROAR ], + [ 12, MoveId.FURY_SWIPES ], + [ 15, MoveId.BITE ], + [ 20, MoveId.DOUBLE_KICK ], + [ 25, MoveId.FIRE_FANG ], + [ 30, MoveId.SCARY_FACE ], + [ 35, MoveId.SWAGGER ], + [ 40, MoveId.FLAMETHROWER ], + [ 45, MoveId.THRASH ], + [ 50, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.INCINEROAR]: [ + [ EVOLVE_MOVE, MoveId.DARKEST_LARIAT ], + [ RELEARN_MOVE, MoveId.SCRATCH ], + [ RELEARN_MOVE, MoveId.GROWL ], + [ RELEARN_MOVE, MoveId.THROAT_CHOP ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.LICK ], + [ 1, MoveId.CROSS_CHOP ], + [ 1, MoveId.BULK_UP ], + [ 9, MoveId.ROAR ], + [ 12, MoveId.FURY_SWIPES ], + [ 15, MoveId.BITE ], + [ 20, MoveId.DOUBLE_KICK ], + [ 25, MoveId.FIRE_FANG ], + [ 30, MoveId.SCARY_FACE ], + [ 32, MoveId.SWAGGER ], + [ 44, MoveId.FLAMETHROWER ], + [ 51, MoveId.THRASH ], + [ 58, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.POPPLIO]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.GROWL ], + [ 3, MoveId.WATER_GUN ], + [ 6, MoveId.DISARMING_VOICE ], + [ 9, MoveId.AQUA_JET ], + [ 12, MoveId.BABY_DOLL_EYES ], + [ 15, MoveId.ICY_WIND ], + [ 18, MoveId.SING ], + [ 21, MoveId.BUBBLE_BEAM ], + [ 24, MoveId.ENCORE ], + [ 27, MoveId.MISTY_TERRAIN ], + [ 30, MoveId.HYPER_VOICE ], + [ 33, MoveId.MOONBLAST ], + [ 36, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.BRIONNE]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.DISARMING_VOICE ], + [ 9, MoveId.AQUA_JET ], + [ 12, MoveId.BABY_DOLL_EYES ], + [ 15, MoveId.ICY_WIND ], + [ 20, MoveId.SING ], + [ 25, MoveId.BUBBLE_BEAM ], + [ 30, MoveId.ENCORE ], + [ 35, MoveId.MISTY_TERRAIN ], + [ 40, MoveId.HYPER_VOICE ], + [ 45, MoveId.MOONBLAST ], + [ 50, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.PRIMARINA]: [ + [ EVOLVE_MOVE, MoveId.SPARKLING_ARIA ], + [ 1, MoveId.POUND ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.DISARMING_VOICE ], + [ 9, MoveId.AQUA_JET ], + [ 12, MoveId.BABY_DOLL_EYES ], + [ 15, MoveId.ICY_WIND ], + [ 20, MoveId.SING ], + [ 25, MoveId.BUBBLE_BEAM ], + [ 30, MoveId.ENCORE ], + [ 37, MoveId.MISTY_TERRAIN ], + [ 44, MoveId.HYPER_VOICE ], + [ 51, MoveId.MOONBLAST ], + [ 58, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.PIKIPEK]: [ + [ 1, MoveId.PECK ], + [ 3, MoveId.GROWL ], + [ 7, MoveId.ECHOED_VOICE ], + [ 9, MoveId.ROCK_SMASH ], + [ 13, MoveId.SUPERSONIC ], + [ 15, MoveId.PLUCK ], + [ 19, MoveId.ROOST ], + [ 21, MoveId.FURY_ATTACK ], + [ 25, MoveId.SCREECH ], + [ 27, MoveId.DRILL_PECK ], + [ 31, MoveId.BULLET_SEED ], + [ 33, MoveId.FEATHER_DANCE ], + [ 37, MoveId.HYPER_VOICE ], + ], + [SpeciesId.TRUMBEAK]: [ + [ RELEARN_MOVE, MoveId.ECHOED_VOICE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.PECK ], + [ 1, MoveId.ROCK_SMASH ], + [ 1, MoveId.ROCK_BLAST ], + [ 13, MoveId.SUPERSONIC ], + [ 16, MoveId.PLUCK ], + [ 21, MoveId.ROOST ], + [ 24, MoveId.FURY_ATTACK ], + [ 29, MoveId.SCREECH ], + [ 32, MoveId.DRILL_PECK ], + [ 37, MoveId.BULLET_SEED ], + [ 40, MoveId.FEATHER_DANCE ], + [ 45, MoveId.HYPER_VOICE ], + ], + [SpeciesId.TOUCANNON]: [ + [ EVOLVE_MOVE, MoveId.BEAK_BLAST ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.PECK ], + [ 1, MoveId.ROCK_SMASH ], + [ 1, MoveId.ROCK_BLAST ], + [ 1, MoveId.ECHOED_VOICE ], + [ 13, MoveId.SUPERSONIC ], + [ 16, MoveId.PLUCK ], + [ 21, MoveId.ROOST ], + [ 24, MoveId.FURY_ATTACK ], + [ 30, MoveId.SCREECH ], + [ 34, MoveId.DRILL_PECK ], + [ 40, MoveId.BULLET_SEED ], + [ 44, MoveId.FEATHER_DANCE ], + [ 50, MoveId.HYPER_VOICE ], + ], + [SpeciesId.YUNGOOS]: [ + [ 1, MoveId.TACKLE ], + [ 3, MoveId.LEER ], + [ 7, MoveId.PAYBACK ], + [ 10, MoveId.SAND_ATTACK ], + [ 13, MoveId.WORK_UP ], + [ 19, MoveId.BITE ], + [ 22, MoveId.MUD_SLAP ], + [ 25, MoveId.SUPER_FANG ], + [ 28, MoveId.TAKE_DOWN ], + [ 31, MoveId.SCARY_FACE ], + [ 34, MoveId.CRUNCH ], + [ 37, MoveId.YAWN ], + [ 40, MoveId.THRASH ], + [ 43, MoveId.REST ], + ], + [SpeciesId.GUMSHOOS]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PAYBACK ], + [ 1, MoveId.PURSUIT ], + [ 13, MoveId.WORK_UP ], + [ 19, MoveId.BITE ], + [ 23, MoveId.MUD_SLAP ], + [ 27, MoveId.SUPER_FANG ], + [ 31, MoveId.TAKE_DOWN ], + [ 35, MoveId.SCARY_FACE ], + [ 39, MoveId.CRUNCH ], + [ 43, MoveId.YAWN ], + [ 47, MoveId.THRASH ], + [ 52, MoveId.REST ], + ], + [SpeciesId.GRUBBIN]: [ + [ 1, MoveId.VISE_GRIP ], + [ 1, MoveId.MUD_SLAP ], + [ 5, MoveId.STRING_SHOT ], + [ 10, MoveId.BUG_BITE ], + [ 15, MoveId.BITE ], + [ 21, MoveId.SPARK ], + [ 25, MoveId.STICKY_WEB ], + [ 30, MoveId.X_SCISSOR ], + [ 35, MoveId.CRUNCH ], + [ 40, MoveId.DIG ], + ], + [SpeciesId.CHARJABUG]: [ + [ EVOLVE_MOVE, MoveId.CHARGE ], + [ 1, MoveId.VISE_GRIP ], + [ 1, MoveId.STRING_SHOT ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.BUG_BITE ], + [ 15, MoveId.BITE ], + [ 23, MoveId.SPARK ], + [ 29, MoveId.STICKY_WEB ], + [ 36, MoveId.X_SCISSOR ], + [ 43, MoveId.CRUNCH ], + [ 50, MoveId.DIG ], + [ 57, MoveId.IRON_DEFENSE ], + [ 64, MoveId.DISCHARGE ], + ], + [SpeciesId.VIKAVOLT]: [ + [ EVOLVE_MOVE, MoveId.THUNDERBOLT ], + [ RELEARN_MOVE, MoveId.VISE_GRIP ], + [ RELEARN_MOVE, MoveId.DIG ], + [ RELEARN_MOVE, MoveId.MUD_SLAP ], + [ RELEARN_MOVE, MoveId.IRON_DEFENSE ], + [ RELEARN_MOVE, MoveId.X_SCISSOR ], + [ RELEARN_MOVE, MoveId.BUG_BITE ], + [ 1, MoveId.CHARGE ], + [ 1, MoveId.CRUNCH ], + [ 1, MoveId.DISCHARGE ], + [ 1, MoveId.STRING_SHOT ], + [ 15, MoveId.BITE ], + [ 23, MoveId.SPARK ], + [ 29, MoveId.STICKY_WEB ], + [ 36, MoveId.BUG_BUZZ ], + [ 43, MoveId.GUILLOTINE ], + [ 50, MoveId.FLY ], + [ 57, MoveId.AGILITY ], + [ 64, MoveId.ZAP_CANNON ], + ], + [SpeciesId.CRABRAWLER]: [ + [ 1, MoveId.BUBBLE ], + [ 1, MoveId.VISE_GRIP ], + [ 5, MoveId.ROCK_SMASH ], + [ 9, MoveId.LEER ], + [ 13, MoveId.BUBBLE_BEAM ], + [ 17, MoveId.PROTECT ], + [ 22, MoveId.BRICK_BREAK ], + [ 25, MoveId.SLAM ], + [ 29, MoveId.PAYBACK ], + [ 33, MoveId.REVERSAL ], + [ 37, MoveId.CRABHAMMER ], + [ 42, MoveId.IRON_DEFENSE ], + [ 45, MoveId.DYNAMIC_PUNCH ], + [ 49, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.CRABOMINABLE]: [ + [ EVOLVE_MOVE, MoveId.ICE_PUNCH ], + [ RELEARN_MOVE, MoveId.CRABHAMMER ], // Previous Stage Move + [ 1, MoveId.VISE_GRIP ], // Previous Stage Move + [ 1, MoveId.LEER ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.ROCK_SMASH ], + [ 1, MoveId.BUBBLE ], + [ 1, MoveId.PURSUIT ], + [ 1, MoveId.PAYBACK ], // Previous Stage Move + [ 17, MoveId.BUBBLE_BEAM ], + [ 22, MoveId.BRICK_BREAK ], + [ 25, MoveId.SLAM ], + [ 29, MoveId.AVALANCHE ], + [ 33, MoveId.REVERSAL ], + [ 37, MoveId.ICE_HAMMER ], + [ 42, MoveId.IRON_DEFENSE ], + [ 45, MoveId.DYNAMIC_PUNCH ], + [ 49, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.ORICORIO]: [ + [ 1, MoveId.POUND ], + [ 4, MoveId.GROWL ], + [ 6, MoveId.PECK ], + [ 10, MoveId.HELPING_HAND ], + [ 13, MoveId.AIR_CUTTER ], + [ 16, MoveId.BATON_PASS ], + [ 20, MoveId.FEATHER_DANCE ], + [ 23, MoveId.ACROBATICS ], + [ 26, MoveId.TEETER_DANCE ], + [ 30, MoveId.ROOST ], + [ 33, MoveId.FLATTER ], + [ 36, MoveId.AIR_SLASH ], + [ 40, MoveId.REVELATION_DANCE ], + [ 43, MoveId.AGILITY ], + [ 47, MoveId.HURRICANE ], + ], + [SpeciesId.CUTIEFLY]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.FAIRY_WIND ], + [ 6, MoveId.STUN_SPORE ], + [ 12, MoveId.SWEET_SCENT ], + [ 18, MoveId.DRAINING_KISS ], + [ 24, MoveId.STRUGGLE_BUG ], + [ 30, MoveId.COVET ], + [ 36, MoveId.SWITCHEROO ], + [ 42, MoveId.DAZZLING_GLEAM ], + [ 48, MoveId.BUG_BUZZ ], + [ 54, MoveId.QUIVER_DANCE ], + ], + [SpeciesId.RIBOMBEE]: [ + [ EVOLVE_MOVE, MoveId.POLLEN_PUFF ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.FAIRY_WIND ], + [ 18, MoveId.DRAINING_KISS ], + [ 24, MoveId.STRUGGLE_BUG ], + [ 32, MoveId.COVET ], + [ 40, MoveId.SWITCHEROO ], + [ 48, MoveId.DAZZLING_GLEAM ], + [ 56, MoveId.BUG_BUZZ ], + [ 64, MoveId.QUIVER_DANCE ], + ], + [SpeciesId.ROCKRUFF]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 4, MoveId.SAND_ATTACK ], + [ 8, MoveId.DOUBLE_TEAM ], + [ 12, MoveId.ROCK_THROW ], + [ 16, MoveId.HOWL ], + [ 20, MoveId.BITE ], + [ 24, MoveId.ROCK_TOMB ], + [ 28, MoveId.ROAR ], + [ 32, MoveId.ROCK_SLIDE ], + [ 36, MoveId.CRUNCH ], + [ 40, MoveId.SCARY_FACE ], + [ 44, MoveId.STEALTH_ROCK ], + [ 48, MoveId.STONE_EDGE ], + ], + [SpeciesId.LYCANROC]: [ + [ EVOLVE_MOVE, MoveId.SUCKER_PUNCH ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.QUICK_GUARD ], + [ 1, MoveId.ACCELEROCK ], + [ 12, MoveId.ROCK_THROW ], + [ 16, MoveId.HOWL ], + [ 20, MoveId.BITE ], + [ 24, MoveId.ROCK_TOMB ], + [ 30, MoveId.ROAR ], + [ 36, MoveId.ROCK_SLIDE ], + [ 42, MoveId.CRUNCH ], + [ 48, MoveId.SCARY_FACE ], + [ 54, MoveId.STEALTH_ROCK ], + [ 60, MoveId.STONE_EDGE ], + ], + [SpeciesId.WISHIWASHI]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 4, MoveId.HELPING_HAND ], + [ 8, MoveId.BEAT_UP ], + [ 12, MoveId.BRINE ], + [ 16, MoveId.TEARFUL_LOOK ], + [ 20, MoveId.DIVE ], + [ 24, MoveId.SOAK ], + [ 28, MoveId.UPROAR ], + [ 32, MoveId.AQUA_TAIL ], + [ 36, MoveId.AQUA_RING ], + [ 40, MoveId.ENDEAVOR ], + [ 44, MoveId.HYDRO_PUMP ], + [ 48, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.MAREANIE]: [ + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.PECK ], + [ 5, MoveId.WIDE_GUARD ], + [ 10, MoveId.BITE ], + [ 15, MoveId.VENOSHOCK ], + [ 20, MoveId.RECOVER ], + [ 25, MoveId.PIN_MISSILE ], + [ 30, MoveId.TOXIC_SPIKES ], + [ 35, MoveId.LIQUIDATION ], + [ 40, MoveId.ACID_SPRAY ], + [ 45, MoveId.POISON_JAB ], + [ 50, MoveId.TOXIC ], + ], + [SpeciesId.TOXAPEX]: [ + [ EVOLVE_MOVE, MoveId.BANEFUL_BUNKER ], + [ 1, MoveId.POISON_STING ], + [ 1, MoveId.BITE ], + [ 1, MoveId.PECK ], + [ 1, MoveId.WIDE_GUARD ], + [ 15, MoveId.VENOSHOCK ], + [ 20, MoveId.RECOVER ], + [ 25, MoveId.PIN_MISSILE ], + [ 30, MoveId.TOXIC_SPIKES ], + [ 35, MoveId.LIQUIDATION ], + [ 42, MoveId.ACID_SPRAY ], + [ 49, MoveId.POISON_JAB ], + [ 56, MoveId.TOXIC ], + ], + [SpeciesId.MUDBRAY]: [ + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.ROCK_SMASH ], + [ 4, MoveId.IRON_DEFENSE ], + [ 8, MoveId.DOUBLE_KICK ], + [ 12, MoveId.BULLDOZE ], + [ 16, MoveId.STOMP ], + [ 20, MoveId.STRENGTH ], + [ 24, MoveId.COUNTER ], + [ 28, MoveId.HIGH_HORSEPOWER ], + [ 32, MoveId.HEAVY_SLAM ], + [ 36, MoveId.EARTHQUAKE ], + [ 40, MoveId.MEGA_KICK ], + [ 44, MoveId.SUPERPOWER ], + ], + [SpeciesId.MUDSDALE]: [ + [ 1, MoveId.DOUBLE_KICK ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.ROCK_SMASH ], + [ 1, MoveId.IRON_DEFENSE ], + [ 12, MoveId.BULLDOZE ], + [ 16, MoveId.STOMP ], + [ 20, MoveId.STRENGTH ], + [ 24, MoveId.COUNTER ], + [ 28, MoveId.HIGH_HORSEPOWER ], + [ 34, MoveId.HEAVY_SLAM ], + [ 40, MoveId.EARTHQUAKE ], + [ 46, MoveId.MEGA_KICK ], + [ 52, MoveId.SUPERPOWER ], + ], + [SpeciesId.DEWPIDER]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.INFESTATION ], + [ 1, MoveId.WATER_SPORT ], + [ 4, MoveId.BUG_BITE ], + [ 8, MoveId.BITE ], + [ 12, MoveId.BUBBLE_BEAM ], + [ 16, MoveId.AQUA_RING ], + [ 20, MoveId.HEADBUTT ], + [ 24, MoveId.CRUNCH ], + [ 28, MoveId.SOAK ], + [ 32, MoveId.ENTRAINMENT ], + [ 36, MoveId.LUNGE ], + [ 40, MoveId.LIQUIDATION ], + [ 44, MoveId.LEECH_LIFE ], + [ 48, MoveId.MIRROR_COAT ], + ], + [SpeciesId.ARAQUANID]: [ + [ 1, MoveId.BITE ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.BUG_BITE ], + [ 1, MoveId.WIDE_GUARD ], + [ 1, MoveId.INFESTATION ], + [ 1, MoveId.WATER_SPORT ], // Previous Stage Move + [ 1, MoveId.SPIDER_WEB ], + [ 12, MoveId.BUBBLE_BEAM ], + [ 16, MoveId.AQUA_RING ], + [ 20, MoveId.HEADBUTT ], + [ 26, MoveId.CRUNCH ], + [ 32, MoveId.SOAK ], + [ 38, MoveId.ENTRAINMENT ], + [ 44, MoveId.LUNGE ], + [ 50, MoveId.LIQUIDATION ], + [ 56, MoveId.LEECH_LIFE ], + [ 62, MoveId.MIRROR_COAT ], + ], + [SpeciesId.FOMANTIS]: [ + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.LEAFAGE ], + [ 5, MoveId.GROWTH ], + [ 10, MoveId.INGRAIN ], + [ 15, MoveId.RAZOR_LEAF ], + [ 20, MoveId.SWEET_SCENT ], + [ 25, MoveId.SLASH ], + [ 30, MoveId.X_SCISSOR ], + [ 35, MoveId.SYNTHESIS ], + [ 40, MoveId.LEAF_BLADE ], + [ 45, MoveId.SUNNY_DAY ], + [ 50, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.LURANTIS]: [ + [ EVOLVE_MOVE, MoveId.PETAL_BLIZZARD ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.SOLAR_BEAM ], + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.INGRAIN ], + [ 1, MoveId.NIGHT_SLASH ], + [ 1, MoveId.LEAFAGE ], + [ 1, MoveId.DUAL_CHOP ], + [ 15, MoveId.RAZOR_LEAF ], + [ 20, MoveId.SWEET_SCENT ], + [ 25, MoveId.SLASH ], + [ 30, MoveId.X_SCISSOR ], + [ 37, MoveId.SYNTHESIS ], + [ 44, MoveId.LEAF_BLADE ], + [ 51, MoveId.SUNNY_DAY ], + [ 63, MoveId.SOLAR_BLADE ], + ], + [SpeciesId.MORELULL]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.ASTONISH ], + [ 4, MoveId.CONFUSE_RAY ], + [ 8, MoveId.INGRAIN ], + [ 12, MoveId.MEGA_DRAIN ], + [ 16, MoveId.SLEEP_POWDER ], + [ 20, MoveId.MOONLIGHT ], + [ 25, MoveId.STRENGTH_SAP ], + [ 28, MoveId.GIGA_DRAIN ], + [ 32, MoveId.DAZZLING_GLEAM ], + [ 36, MoveId.SPORE ], + [ 40, MoveId.MOONBLAST ], + [ 44, MoveId.DREAM_EATER ], + ], + [SpeciesId.SHIINOTIC]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.INGRAIN ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.FLASH ], + [ 12, MoveId.MEGA_DRAIN ], + [ 16, MoveId.SLEEP_POWDER ], + [ 20, MoveId.MOONLIGHT ], + [ 27, MoveId.STRENGTH_SAP ], + [ 32, MoveId.GIGA_DRAIN ], + [ 38, MoveId.DAZZLING_GLEAM ], + [ 44, MoveId.SPORE ], + [ 50, MoveId.MOONBLAST ], + [ 56, MoveId.DREAM_EATER ], + ], + [SpeciesId.SALANDIT]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.POISON_GAS ], + [ 5, MoveId.SMOG ], + [ 10, MoveId.EMBER ], + [ 15, MoveId.POISON_FANG ], + [ 20, MoveId.SWEET_SCENT ], + [ 25, MoveId.NASTY_PLOT ], + [ 30, MoveId.INCINERATE ], + [ 35, MoveId.VENOSHOCK ], + [ 40, MoveId.DRAGON_PULSE ], + [ 45, MoveId.FLAMETHROWER ], + [ 50, MoveId.TOXIC ], + [ 55, MoveId.ENDEAVOR ], + ], + [SpeciesId.SALAZZLE]: [ + [ EVOLVE_MOVE, MoveId.FIRE_LASH ], + [ 1, MoveId.POUND ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.DISABLE ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.SMOG ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.SWAGGER ], + [ 1, MoveId.ENCORE ], + [ 1, MoveId.TORMENT ], + [ 1, MoveId.KNOCK_OFF ], + [ 1, MoveId.ENDEAVOR ], + [ 1, MoveId.CAPTIVATE ], + [ 15, MoveId.POISON_FANG ], + [ 20, MoveId.SWEET_SCENT ], + [ 25, MoveId.NASTY_PLOT ], + [ 30, MoveId.INCINERATE ], + [ 37, MoveId.VENOSHOCK ], + [ 44, MoveId.DRAGON_PULSE ], + [ 51, MoveId.FLAMETHROWER ], + [ 58, MoveId.TOXIC ], + ], + [SpeciesId.STUFFUL]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 4, MoveId.BABY_DOLL_EYES ], + [ 8, MoveId.PAYBACK ], + [ 12, MoveId.BRUTAL_SWING ], + [ 16, MoveId.ENDURE ], + [ 20, MoveId.STRENGTH ], + [ 24, MoveId.TAKE_DOWN ], + [ 28, MoveId.FLAIL ], + [ 32, MoveId.HAMMER_ARM ], + [ 36, MoveId.THRASH ], + [ 40, MoveId.PAIN_SPLIT ], + [ 44, MoveId.DOUBLE_EDGE ], + [ 48, MoveId.SUPERPOWER ], + ], + [SpeciesId.BEWEAR]: [ + [ EVOLVE_MOVE, MoveId.BIND ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PAYBACK ], + [ 1, MoveId.BABY_DOLL_EYES ], + [ 12, MoveId.BRUTAL_SWING ], + [ 16, MoveId.ENDURE ], + [ 20, MoveId.STRENGTH ], + [ 24, MoveId.TAKE_DOWN ], + [ 30, MoveId.FLAIL ], + [ 36, MoveId.HAMMER_ARM ], + [ 42, MoveId.THRASH ], + [ 48, MoveId.PAIN_SPLIT ], + [ 54, MoveId.DOUBLE_EDGE ], + [ 60, MoveId.SUPERPOWER ], + ], + [SpeciesId.BOUNSWEET]: [ + [ 1, MoveId.SPLASH ], + [ 1, MoveId.LEAFAGE ], // Custom + [ 4, MoveId.PLAY_NICE ], + [ 8, MoveId.RAPID_SPIN ], + [ 12, MoveId.RAZOR_LEAF ], + [ 16, MoveId.SWEET_SCENT ], + [ 20, MoveId.MAGICAL_LEAF ], + [ 24, MoveId.FLAIL ], + [ 28, MoveId.TEETER_DANCE ], + [ 32, MoveId.AROMATIC_MIST ], + ], + [SpeciesId.STEENEE]: [ + [ 1, MoveId.LEAFAGE ], // Previous Stage Move, Custom + [ 1, MoveId.RAZOR_LEAF ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.PLAY_NICE ], + [ 16, MoveId.SWEET_SCENT ], + [ 22, MoveId.MAGICAL_LEAF ], + [ 28, MoveId.STOMP ], + [ 34, MoveId.TEETER_DANCE ], + [ 40, MoveId.AROMATIC_MIST ], + [ 46, MoveId.LEAF_STORM ], + ], + [SpeciesId.TSAREENA]: [ + [ EVOLVE_MOVE, MoveId.TROP_KICK ], + [ 1, MoveId.LEAFAGE ], // Previous Stage Move, Custom + [ 1, MoveId.RAZOR_LEAF ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.SWAGGER ], + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.POWER_WHIP ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.PUNISHMENT ], + [ 16, MoveId.SWEET_SCENT ], + [ 22, MoveId.MAGICAL_LEAF ], + [ 28, MoveId.STOMP ], + [ 34, MoveId.TEETER_DANCE ], + [ 40, MoveId.AROMATIC_MIST ], + [ 46, MoveId.LEAF_STORM ], + [ 58, MoveId.HIGH_JUMP_KICK ], + ], + [SpeciesId.COMFEY]: [ + [ 1, MoveId.WRAP ], + [ 1, MoveId.GROWTH ], + [ 3, MoveId.VINE_WHIP ], + [ 6, MoveId.HELPING_HAND ], + [ 9, MoveId.DRAINING_KISS ], + [ 12, MoveId.FLOWER_SHIELD ], + [ 15, MoveId.MAGICAL_LEAF ], + [ 18, MoveId.SYNTHESIS ], + [ 21, MoveId.LEECH_SEED ], + [ 24, MoveId.GRASS_KNOT ], + [ 27, MoveId.SWEET_KISS ], + [ 30, MoveId.FLORAL_HEALING ], + [ 33, MoveId.PETAL_BLIZZARD ], + [ 36, MoveId.AROMATHERAPY ], + [ 39, MoveId.PLAY_ROUGH ], + [ 42, MoveId.SWEET_SCENT ], + [ 45, MoveId.PETAL_DANCE ], + [ 48, MoveId.GRASSY_TERRAIN ], + ], + [SpeciesId.ORANGURU]: [ + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.TAUNT ], + [ 5, MoveId.AFTER_YOU ], + [ 10, MoveId.CALM_MIND ], + [ 15, MoveId.STORED_POWER ], + [ 20, MoveId.PSYCH_UP ], + [ 25, MoveId.QUASH ], + [ 30, MoveId.NASTY_PLOT ], + [ 35, MoveId.ZEN_HEADBUTT ], + [ 40, MoveId.TRICK_ROOM ], + [ 45, MoveId.PSYCHIC ], + [ 50, MoveId.INSTRUCT ], + [ 55, MoveId.FOUL_PLAY ], + [ 60, MoveId.FUTURE_SIGHT ], + ], + [SpeciesId.PASSIMIAN]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 5, MoveId.ROCK_SMASH ], + [ 10, MoveId.FOCUS_ENERGY ], + [ 15, MoveId.BEAT_UP ], + [ 20, MoveId.SCARY_FACE ], + [ 25, MoveId.TAKE_DOWN ], + [ 30, MoveId.FLING ], + [ 35, MoveId.BULK_UP ], + [ 40, MoveId.THRASH ], + [ 45, MoveId.DOUBLE_EDGE ], + [ 50, MoveId.CLOSE_COMBAT ], + [ 55, MoveId.REVERSAL ], + [ 60, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.WIMPOD]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.STRUGGLE_BUG ], + ], + [SpeciesId.GOLISOPOD]: [ + [ EVOLVE_MOVE, MoveId.FIRST_IMPRESSION ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.SPITE ], + [ 1, MoveId.STRUGGLE_BUG ], + [ 4, MoveId.ROCK_SMASH ], + [ 8, MoveId.FURY_CUTTER ], + [ 12, MoveId.MUD_SHOT ], + [ 16, MoveId.BUG_BITE ], + [ 20, MoveId.IRON_DEFENSE ], + [ 24, MoveId.SUCKER_PUNCH ], + [ 28, MoveId.SLASH ], + [ 32, MoveId.RAZOR_SHELL ], + [ 36, MoveId.PIN_MISSILE ], + [ 40, MoveId.SWORDS_DANCE ], + [ 44, MoveId.LIQUIDATION ], + ], + [SpeciesId.SANDYGAST]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.HARDEN ], + [ 5, MoveId.ASTONISH ], + [ 10, MoveId.SAND_TOMB ], + [ 15, MoveId.MEGA_DRAIN ], + [ 20, MoveId.SAND_ATTACK ], + [ 25, MoveId.BULLDOZE ], + [ 30, MoveId.HYPNOSIS ], + [ 35, MoveId.GIGA_DRAIN ], + [ 40, MoveId.IRON_DEFENSE ], + [ 45, MoveId.SHADOW_BALL ], + [ 50, MoveId.EARTH_POWER ], + [ 55, MoveId.SHORE_UP ], + [ 60, MoveId.SANDSTORM ], + ], + [SpeciesId.PALOSSAND]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.SAND_TOMB ], + [ 15, MoveId.MEGA_DRAIN ], + [ 20, MoveId.SAND_ATTACK ], + [ 25, MoveId.BULLDOZE ], + [ 30, MoveId.HYPNOSIS ], + [ 35, MoveId.GIGA_DRAIN ], + [ 40, MoveId.IRON_DEFENSE ], + [ 47, MoveId.SHADOW_BALL ], + [ 54, MoveId.EARTH_POWER ], + [ 61, MoveId.SHORE_UP ], + [ 68, MoveId.SANDSTORM ], + ], + [SpeciesId.PYUKUMUKU]: [ + [ 1, MoveId.COUNTER ], // Custom, Moved from Level 20 to 1 + [ 1, MoveId.HARDEN ], + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.BIDE ], + [ 1, MoveId.MUD_SPORT ], + [ 1, MoveId.WATER_SPORT ], + [ 5, MoveId.HELPING_HAND ], + [ 10, MoveId.TAUNT ], + [ 15, MoveId.SAFEGUARD ], + [ 20, MoveId.MIRROR_COAT ], // Custom + [ 25, MoveId.PURIFY ], + [ 30, MoveId.CURSE ], + [ 35, MoveId.GASTRO_ACID ], + [ 40, MoveId.PAIN_SPLIT ], + [ 45, MoveId.RECOVER ], + [ 50, MoveId.SOAK ], + [ 55, MoveId.TOXIC ], + [ 60, MoveId.MEMENTO ], + ], + [SpeciesId.TYPE_NULL]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.IMPRISON ], + [ 5, MoveId.AERIAL_ACE ], + [ 10, MoveId.SCARY_FACE ], + [ 15, MoveId.DOUBLE_HIT ], + [ 20, MoveId.METAL_SOUND ], + [ 25, MoveId.CRUSH_CLAW ], + [ 30, MoveId.AIR_SLASH ], + [ 35, MoveId.TRI_ATTACK ], + [ 40, MoveId.X_SCISSOR ], + [ 45, MoveId.IRON_HEAD ], + [ 50, MoveId.TAKE_DOWN ], + [ 55, MoveId.DOUBLE_EDGE ], + [ 60, MoveId.HEAL_BLOCK ], + ], + [SpeciesId.SILVALLY]: [ + [ EVOLVE_MOVE, MoveId.MULTI_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.BITE ], + [ 1, MoveId.EXPLOSION ], + [ 1, MoveId.SCARY_FACE ], + [ 1, MoveId.IMPRISON ], + [ 1, MoveId.POISON_FANG ], + [ 1, MoveId.AERIAL_ACE ], + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.FIRE_FANG ], + [ 1, MoveId.IRON_HEAD ], + [ 1, MoveId.HEAL_BLOCK ], + [ 15, MoveId.DOUBLE_HIT ], + [ 20, MoveId.METAL_SOUND ], + [ 25, MoveId.CRUSH_CLAW ], + [ 30, MoveId.AIR_SLASH ], + [ 35, MoveId.TRI_ATTACK ], + [ 40, MoveId.X_SCISSOR ], + [ 45, MoveId.CRUNCH ], + [ 50, MoveId.TAKE_DOWN ], + [ 55, MoveId.DOUBLE_EDGE ], + [ 60, MoveId.PARTING_SHOT ], + ], + [SpeciesId.MINIOR]: [ + [ 1, MoveId.TACKLE ], + [ 3, MoveId.DEFENSE_CURL ], + [ 8, MoveId.ROLLOUT ], + [ 10, MoveId.CONFUSE_RAY ], + [ 15, MoveId.SWIFT ], + [ 17, MoveId.ANCIENT_POWER ], + [ 22, MoveId.SELF_DESTRUCT ], + [ 24, MoveId.STEALTH_ROCK ], + [ 29, MoveId.TAKE_DOWN ], + [ 31, MoveId.AUTOTOMIZE ], + [ 36, MoveId.COSMIC_POWER ], + [ 38, MoveId.POWER_GEM ], + [ 43, MoveId.DOUBLE_EDGE ], + [ 45, MoveId.SHELL_SMASH ], + [ 50, MoveId.EXPLOSION ], + ], + [SpeciesId.KOMALA]: [ + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.ROLLOUT ], + [ 6, MoveId.STOCKPILE ], + [ 6, MoveId.SPIT_UP ], + [ 6, MoveId.SWALLOW ], + [ 11, MoveId.RAPID_SPIN ], + [ 16, MoveId.YAWN ], + [ 21, MoveId.SLAM ], + [ 26, MoveId.FLAIL ], + [ 31, MoveId.SUCKER_PUNCH ], + [ 36, MoveId.PSYCH_UP ], + [ 41, MoveId.WOOD_HAMMER ], + [ 46, MoveId.THRASH ], + ], + [SpeciesId.TURTONATOR]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SMOG ], + [ 4, MoveId.EMBER ], + [ 8, MoveId.PROTECT ], + [ 12, MoveId.ENDURE ], + [ 16, MoveId.FLAIL ], + [ 20, MoveId.INCINERATE ], + [ 24, MoveId.IRON_DEFENSE ], + [ 28, MoveId.DRAGON_PULSE ], + [ 32, MoveId.BODY_SLAM ], + [ 36, MoveId.FLAMETHROWER ], + [ 40, MoveId.SHELL_TRAP ], + [ 44, MoveId.SHELL_SMASH ], + [ 48, MoveId.OVERHEAT ], + [ 52, MoveId.EXPLOSION ], + ], + [SpeciesId.TOGEDEMARU]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.NUZZLE ], + [ 5, MoveId.DEFENSE_CURL ], + [ 10, MoveId.CHARGE ], + [ 15, MoveId.THUNDER_SHOCK ], + [ 20, MoveId.FELL_STINGER ], + [ 25, MoveId.SPARK ], + [ 30, MoveId.PIN_MISSILE ], + [ 35, MoveId.MAGNET_RISE ], + [ 40, MoveId.ZING_ZAP ], + [ 45, MoveId.DISCHARGE ], + [ 50, MoveId.ELECTRIC_TERRAIN ], + [ 55, MoveId.WILD_CHARGE ], + [ 60, MoveId.SPIKY_SHIELD ], + ], + [SpeciesId.MIMIKYU]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.WOOD_HAMMER ], + [ 6, MoveId.SHADOW_SNEAK ], + [ 12, MoveId.DOUBLE_TEAM ], + [ 18, MoveId.BABY_DOLL_EYES ], + [ 24, MoveId.MIMIC ], + [ 30, MoveId.HONE_CLAWS ], + [ 36, MoveId.SLASH ], + [ 42, MoveId.SHADOW_CLAW ], + [ 48, MoveId.CHARM ], + [ 54, MoveId.PLAY_ROUGH ], + [ 60, MoveId.PAIN_SPLIT ], + ], + [SpeciesId.BRUXISH]: [ + [ 1, MoveId.WATER_GUN ], + [ 4, MoveId.ASTONISH ], + [ 9, MoveId.CONFUSION ], + [ 12, MoveId.BITE ], + [ 17, MoveId.AQUA_JET ], + [ 20, MoveId.DISABLE ], + [ 25, MoveId.PSYSHOCK ], + [ 28, MoveId.CRUNCH ], + [ 33, MoveId.AQUA_TAIL ], + [ 36, MoveId.SCREECH ], + [ 41, MoveId.PSYCHIC_FANGS ], + [ 44, MoveId.WAVE_CRASH ], + ], + [SpeciesId.DRAMPA]: [ + [ 1, MoveId.ECHOED_VOICE ], + [ 1, MoveId.PLAY_NICE ], + [ 5, MoveId.TWISTER ], + [ 10, MoveId.PROTECT ], + [ 15, MoveId.GLARE ], + [ 20, MoveId.SAFEGUARD ], + [ 25, MoveId.DRAGON_BREATH ], + [ 30, MoveId.EXTRASENSORY ], + [ 35, MoveId.DRAGON_PULSE ], + [ 40, MoveId.LIGHT_SCREEN ], + [ 45, MoveId.FLY ], + [ 50, MoveId.HYPER_VOICE ], + [ 55, MoveId.OUTRAGE ], + ], + [SpeciesId.DHELMISE]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.RAPID_SPIN ], + [ 4, MoveId.ASTONISH ], + [ 8, MoveId.WRAP ], + [ 12, MoveId.MEGA_DRAIN ], + [ 16, MoveId.GROWTH ], + [ 20, MoveId.GYRO_BALL ], + [ 24, MoveId.SWITCHEROO ], + [ 28, MoveId.GIGA_DRAIN ], + [ 32, MoveId.WHIRLPOOL ], + [ 36, MoveId.HEAVY_SLAM ], + [ 40, MoveId.SLAM ], + [ 44, MoveId.SHADOW_BALL ], + [ 48, MoveId.METAL_SOUND ], + [ 52, MoveId.ANCHOR_SHOT ], + [ 56, MoveId.ENERGY_BALL ], + [ 60, MoveId.PHANTOM_FORCE ], + [ 64, MoveId.POWER_WHIP ], + ], + [SpeciesId.JANGMO_O]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 4, MoveId.PROTECT ], + [ 8, MoveId.DRAGON_TAIL ], + [ 12, MoveId.SCARY_FACE ], + [ 16, MoveId.HEADBUTT ], + [ 20, MoveId.WORK_UP ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.IRON_DEFENSE ], + [ 32, MoveId.DRAGON_CLAW ], + [ 36, MoveId.NOBLE_ROAR ], + [ 40, MoveId.DRAGON_DANCE ], + [ 44, MoveId.OUTRAGE ], + ], + [SpeciesId.HAKAMO_O]: [ + [ EVOLVE_MOVE, MoveId.SKY_UPPERCUT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.DRAGON_TAIL ], + [ 1, MoveId.BIDE ], + [ 12, MoveId.SCARY_FACE ], + [ 16, MoveId.HEADBUTT ], + [ 20, MoveId.WORK_UP ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.IRON_DEFENSE ], + [ 32, MoveId.DRAGON_CLAW ], + [ 38, MoveId.NOBLE_ROAR ], + [ 44, MoveId.DRAGON_DANCE ], + [ 50, MoveId.OUTRAGE ], + [ 56, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.KOMMO_O]: [ + [ EVOLVE_MOVE, MoveId.CLANGING_SCALES ], + [ RELEARN_MOVE, MoveId.BELLY_DRUM ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.DRAGON_TAIL ], + [ 1, MoveId.BIDE ], + [ 1, MoveId.SKY_UPPERCUT ], + [ 12, MoveId.SCARY_FACE ], + [ 16, MoveId.HEADBUTT ], + [ 20, MoveId.WORK_UP ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.IRON_DEFENSE ], + [ 32, MoveId.DRAGON_CLAW ], + [ 38, MoveId.NOBLE_ROAR ], + [ 44, MoveId.DRAGON_DANCE ], + [ 52, MoveId.OUTRAGE ], + [ 60, MoveId.CLOSE_COMBAT ], + [ 68, MoveId.CLANGOROUS_SOUL ], + [ 76, MoveId.BOOMBURST ], + ], + [SpeciesId.TAPU_KOKO]: [ + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 5, MoveId.WITHDRAW ], + [ 10, MoveId.FAIRY_WIND ], + [ 15, MoveId.FALSE_SWIPE ], + [ 20, MoveId.SPARK ], + [ 25, MoveId.SHOCK_WAVE ], + [ 30, MoveId.CHARGE ], + [ 35, MoveId.AGILITY ], + [ 40, MoveId.SCREECH ], + [ 45, MoveId.DISCHARGE ], + [ 50, MoveId.MEAN_LOOK ], + [ 55, MoveId.NATURES_MADNESS ], + [ 60, MoveId.WILD_CHARGE ], + [ 65, MoveId.BRAVE_BIRD ], + [ 70, MoveId.POWER_SWAP ], + [ 75, MoveId.ELECTRIC_TERRAIN ], + ], + [SpeciesId.TAPU_LELE]: [ + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.ASTONISH ], + [ 5, MoveId.WITHDRAW ], + [ 10, MoveId.AROMATHERAPY ], + [ 15, MoveId.DRAINING_KISS ], + [ 20, MoveId.PSYBEAM ], + [ 25, MoveId.FLATTER ], + [ 30, MoveId.AROMATIC_MIST ], + [ 35, MoveId.SWEET_SCENT ], + [ 40, MoveId.EXTRASENSORY ], + [ 45, MoveId.PSYSHOCK ], + [ 50, MoveId.MEAN_LOOK ], + [ 55, MoveId.NATURES_MADNESS ], + [ 60, MoveId.MOONBLAST ], + [ 65, MoveId.TICKLE ], + [ 70, MoveId.SKILL_SWAP ], + [ 75, MoveId.PSYCHIC_TERRAIN ], + ], + [SpeciesId.TAPU_BULU]: [ + [ 1, MoveId.ROCK_SMASH ], + [ 1, MoveId.LEAFAGE ], + [ 5, MoveId.WITHDRAW ], + [ 10, MoveId.DISABLE ], + [ 15, MoveId.LEECH_SEED ], + [ 20, MoveId.MEGA_DRAIN ], + [ 25, MoveId.WHIRLWIND ], + [ 30, MoveId.HORN_ATTACK ], + [ 35, MoveId.SCARY_FACE ], + [ 40, MoveId.HORN_LEECH ], + [ 45, MoveId.ZEN_HEADBUTT ], + [ 50, MoveId.MEAN_LOOK ], + [ 55, MoveId.NATURES_MADNESS ], + [ 60, MoveId.WOOD_HAMMER ], + [ 65, MoveId.MEGAHORN ], + [ 70, MoveId.SKULL_BASH ], + [ 75, MoveId.GRASSY_TERRAIN ], + ], + [SpeciesId.TAPU_FINI]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.DISARMING_VOICE ], + [ 5, MoveId.WITHDRAW ], + [ 10, MoveId.MIST ], + [ 10, MoveId.HAZE ], + [ 15, MoveId.AQUA_RING ], + [ 20, MoveId.WATER_PULSE ], + [ 25, MoveId.BRINE ], + [ 30, MoveId.DEFOG ], + [ 35, MoveId.HEAL_PULSE ], + [ 40, MoveId.SURF ], + [ 45, MoveId.MUDDY_WATER ], + [ 50, MoveId.MEAN_LOOK ], + [ 55, MoveId.NATURES_MADNESS ], + [ 60, MoveId.MOONBLAST ], + [ 65, MoveId.HYDRO_PUMP ], + [ 70, MoveId.SOAK ], + [ 75, MoveId.MISTY_TERRAIN ], + ], + [SpeciesId.COSMOG]: [ + [ 1, MoveId.TELEPORT ], + [ 1, MoveId.SPLASH ], + [ 1, MoveId.STORED_POWER ], // Custom + ], + [SpeciesId.COSMOEM]: [ + [ EVOLVE_MOVE, MoveId.COSMIC_POWER ], + [ 1, MoveId.TELEPORT ], + [ 1, MoveId.SPLASH ], // Previous Stage Move + [ 1, MoveId.STORED_POWER ], // Previous Stage Move, Custom + ], + [SpeciesId.SOLGALEO]: [ + [ EVOLVE_MOVE, MoveId.SUNSTEEL_STRIKE ], + [ 1, MoveId.TELEPORT ], + [ 1, MoveId.SPLASH ], // Previous Stage Move + [ 1, MoveId.STORED_POWER ], // Previous Stage Move, Custom + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.COSMIC_POWER ], + [ 1, MoveId.NOBLE_ROAR ], + [ 1, MoveId.WAKE_UP_SLAP ], + [ 7, MoveId.IRON_HEAD ], + [ 14, MoveId.METAL_SOUND ], + [ 21, MoveId.ZEN_HEADBUTT ], + [ 28, MoveId.FLASH_CANNON ], + [ 35, MoveId.MORNING_SUN ], + [ 42, MoveId.CRUNCH ], + [ 49, MoveId.METAL_BURST ], + [ 56, MoveId.WILD_CHARGE ], + [ 63, MoveId.SOLAR_BEAM ], + [ 70, MoveId.FLARE_BLITZ ], + [ 77, MoveId.WIDE_GUARD ], + [ 84, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.LUNALA]: [ + [ EVOLVE_MOVE, MoveId.MOONGEIST_BEAM ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.HYPNOSIS ], + [ 1, MoveId.TELEPORT ], + [ 1, MoveId.SPLASH ], // Previous Stage Move + [ 1, MoveId.STORED_POWER ], // Previous Stage Move, Custom + [ 1, MoveId.COSMIC_POWER ], + [ 7, MoveId.NIGHT_SHADE ], + [ 14, MoveId.CONFUSE_RAY ], + [ 21, MoveId.AIR_SLASH ], + [ 28, MoveId.SHADOW_BALL ], + [ 35, MoveId.MOONLIGHT ], + [ 42, MoveId.NIGHT_DAZE ], + [ 49, MoveId.MAGIC_COAT ], + [ 56, MoveId.MOONBLAST ], + [ 63, MoveId.PHANTOM_FORCE ], + [ 70, MoveId.DREAM_EATER ], + [ 77, MoveId.WIDE_GUARD ], + [ 84, MoveId.HYPER_BEAM ], + ], + [SpeciesId.NIHILEGO]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.WRAP ], + [ 1, MoveId.CONSTRICT ], + [ 5, MoveId.ACID ], + [ 10, MoveId.TICKLE ], + [ 15, MoveId.ACID_SPRAY ], + [ 20, MoveId.CLEAR_SMOG ], + [ 25, MoveId.GUARD_SPLIT ], + [ 25, MoveId.POWER_SPLIT ], + [ 30, MoveId.VENOSHOCK ], + [ 35, MoveId.HEADBUTT ], + [ 40, MoveId.TOXIC_SPIKES ], + [ 45, MoveId.VENOM_DRENCH ], + [ 50, MoveId.POWER_GEM ], + [ 55, MoveId.STEALTH_ROCK ], + [ 60, MoveId.MIRROR_COAT ], + [ 65, MoveId.WONDER_ROOM ], + [ 70, MoveId.HEAD_SMASH ], + ], + [SpeciesId.BUZZWOLE]: [ + [ 1, MoveId.HARDEN ], + [ 1, MoveId.POWER_UP_PUNCH ], + [ 5, MoveId.TAUNT ], + [ 10, MoveId.FELL_STINGER ], + [ 15, MoveId.VITAL_THROW ], + [ 20, MoveId.BULK_UP ], + [ 25, MoveId.ENDURE ], + [ 30, MoveId.REVERSAL ], + [ 35, MoveId.MEGA_PUNCH ], + [ 40, MoveId.LUNGE ], + [ 45, MoveId.FOCUS_ENERGY ], + [ 50, MoveId.DYNAMIC_PUNCH ], + [ 55, MoveId.COUNTER ], + [ 60, MoveId.HAMMER_ARM ], + [ 65, MoveId.SUPERPOWER ], + [ 70, MoveId.FOCUS_PUNCH ], + ], + [SpeciesId.PHEROMOSA]: [ + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.FEINT ], + [ 5, MoveId.LEER ], + [ 10, MoveId.QUICK_GUARD ], + [ 15, MoveId.BUG_BITE ], + [ 20, MoveId.LOW_KICK ], + [ 25, MoveId.DOUBLE_KICK ], + [ 30, MoveId.TRIPLE_KICK ], + [ 35, MoveId.STOMP ], + [ 40, MoveId.AGILITY ], + [ 45, MoveId.LUNGE ], + [ 50, MoveId.BOUNCE ], + [ 55, MoveId.SPEED_SWAP ], + [ 60, MoveId.BUG_BUZZ ], + [ 65, MoveId.QUIVER_DANCE ], + [ 70, MoveId.HIGH_JUMP_KICK ], + ], + [SpeciesId.XURKITREE]: [ + [ 1, MoveId.WRAP ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 5, MoveId.CHARGE ], + [ 10, MoveId.THUNDER_WAVE ], + [ 15, MoveId.INGRAIN ], + [ 20, MoveId.SPARK ], + [ 25, MoveId.SHOCK_WAVE ], + [ 30, MoveId.HYPNOSIS ], + [ 35, MoveId.EERIE_IMPULSE ], + [ 40, MoveId.THUNDER_PUNCH ], + [ 45, MoveId.DISCHARGE ], + [ 50, MoveId.MAGNET_RISE ], + [ 55, MoveId.THUNDERBOLT ], + [ 60, MoveId.ELECTRIC_TERRAIN ], + [ 65, MoveId.POWER_WHIP ], + [ 70, MoveId.ZAP_CANNON ], + ], + [SpeciesId.CELESTEELA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.ABSORB ], + [ 5, MoveId.HARDEN ], + [ 10, MoveId.WIDE_GUARD ], + [ 15, MoveId.MEGA_DRAIN ], + [ 20, MoveId.SMACK_DOWN ], + [ 25, MoveId.INGRAIN ], + [ 30, MoveId.AUTOTOMIZE ], + [ 35, MoveId.GIGA_DRAIN ], + [ 40, MoveId.FLASH_CANNON ], + [ 45, MoveId.METAL_SOUND ], + [ 50, MoveId.IRON_DEFENSE ], + [ 55, MoveId.LEECH_SEED ], + [ 60, MoveId.HEAVY_SLAM ], + [ 65, MoveId.DOUBLE_EDGE ], + [ 70, MoveId.SKULL_BASH ], + ], + [SpeciesId.KARTANA]: [ + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.VACUUM_WAVE ], + [ 5, MoveId.RAZOR_LEAF ], + [ 10, MoveId.FALSE_SWIPE ], + [ 15, MoveId.CUT ], + [ 20, MoveId.AIR_CUTTER ], + [ 25, MoveId.AERIAL_ACE ], + [ 30, MoveId.DETECT ], + [ 35, MoveId.NIGHT_SLASH ], + [ 40, MoveId.SYNTHESIS ], + [ 45, MoveId.LASER_FOCUS ], + [ 50, MoveId.DEFOG ], + [ 55, MoveId.LEAF_BLADE ], + [ 60, MoveId.SACRED_SWORD ], + [ 65, MoveId.SWORDS_DANCE ], + [ 70, MoveId.GUILLOTINE ], + ], + [SpeciesId.GUZZLORD]: [ + [ 1, MoveId.BITE ], + [ 1, MoveId.DRAGON_TAIL ], + [ 5, MoveId.STOCKPILE ], + [ 5, MoveId.SWALLOW ], + [ 10, MoveId.KNOCK_OFF ], + [ 15, MoveId.STOMP ], + [ 20, MoveId.STOMPING_TANTRUM ], + [ 25, MoveId.WIDE_GUARD ], + [ 30, MoveId.CRUNCH ], + [ 35, MoveId.BODY_SLAM ], + [ 40, MoveId.GASTRO_ACID ], + [ 45, MoveId.HAMMER_ARM ], + [ 50, MoveId.HEAVY_SLAM ], + [ 55, MoveId.DRAGON_RUSH ], + [ 60, MoveId.BELCH ], + [ 65, MoveId.THRASH ], + [ 70, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.NECROZMA]: [ + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.MORNING_SUN ], + [ 1, MoveId.MOONLIGHT ], + [ 1, MoveId.GRAVITY ], + [ 1, MoveId.CHARGE_BEAM ], + [ 1, MoveId.MIRROR_SHOT ], + [ 8, MoveId.STEALTH_ROCK ], + [ 16, MoveId.SLASH ], + [ 24, MoveId.NIGHT_SLASH ], + [ 32, MoveId.PSYCHO_CUT ], + [ 40, MoveId.STORED_POWER ], + [ 48, MoveId.ROCK_BLAST ], + [ 56, MoveId.IRON_DEFENSE ], + [ 64, MoveId.POWER_GEM ], + [ 72, MoveId.PHOTON_GEYSER ], + [ 80, MoveId.AUTOTOMIZE ], + [ 88, MoveId.PRISMATIC_LASER ], + ], + [SpeciesId.MAGEARNA]: [ + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.GYRO_BALL ], + [ 1, MoveId.DISARMING_VOICE ], // Custom + [ 1, MoveId.CRAFTY_SHIELD ], + [ 1, MoveId.GEAR_UP ], + [ 6, MoveId.DEFENSE_CURL ], + [ 12, MoveId.ROLLOUT ], + [ 18, MoveId.IRON_DEFENSE ], + [ 24, MoveId.MAGNETIC_FLUX ], + [ 30, MoveId.PSYBEAM ], + [ 36, MoveId.AURORA_BEAM ], + [ 42, MoveId.LOCK_ON ], + [ 48, MoveId.SHIFT_GEAR ], + [ 54, MoveId.TRICK ], + [ 60, MoveId.IRON_HEAD ], + [ 66, MoveId.AURA_SPHERE ], + [ 72, MoveId.FLASH_CANNON ], + [ 78, MoveId.PAIN_SPLIT ], + [ 84, MoveId.ZAP_CANNON ], + [ 90, MoveId.FLEUR_CANNON ], + ], + [SpeciesId.MARSHADOW]: [ + [ 1, MoveId.FIRE_PUNCH ], + [ 1, MoveId.ICE_PUNCH ], + [ 1, MoveId.THUNDER_PUNCH ], + [ 1, MoveId.COUNTER ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.SHADOW_SNEAK ], + [ 1, MoveId.PURSUIT ], + [ 9, MoveId.ROLE_PLAY ], + [ 18, MoveId.SHADOW_PUNCH ], + [ 27, MoveId.FORCE_PALM ], + [ 36, MoveId.ASSURANCE ], + [ 45, MoveId.SUCKER_PUNCH ], + [ 54, MoveId.DRAIN_PUNCH ], + [ 63, MoveId.PSYCH_UP ], + [ 72, MoveId.SPECTRAL_THIEF ], + [ 81, MoveId.LASER_FOCUS ], + [ 90, MoveId.ENDEAVOR ], + [ 99, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.POIPOLE]: [ + [ RELEARN_MOVE, MoveId.DRAGON_PULSE ], // Custom, made relearn + [ 1, MoveId.GROWL ], + [ 1, MoveId.ACID ], + [ 1, MoveId.PECK ], + [ 1, MoveId.HELPING_HAND ], + [ 7, MoveId.FURY_ATTACK ], + [ 14, MoveId.FELL_STINGER ], + [ 21, MoveId.CHARM ], + [ 28, MoveId.VENOSHOCK ], + [ 35, MoveId.VENOM_DRENCH ], + [ 42, MoveId.NASTY_PLOT ], + [ 49, MoveId.POISON_JAB ], + [ 56, MoveId.GASTRO_ACID ], + [ 63, MoveId.TOXIC ], + ], + [SpeciesId.NAGANADEL]: [ + [ EVOLVE_MOVE, MoveId.AIR_CUTTER ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.ACID ], + [ 1, MoveId.PECK ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.AIR_SLASH ], + [ 1, MoveId.DRAGON_PULSE ], + [ 7, MoveId.FURY_ATTACK ], + [ 14, MoveId.FELL_STINGER ], + [ 21, MoveId.CHARM ], + [ 28, MoveId.VENOSHOCK ], + [ 35, MoveId.VENOM_DRENCH ], + [ 42, MoveId.NASTY_PLOT ], + [ 49, MoveId.POISON_JAB ], + [ 56, MoveId.GASTRO_ACID ], + [ 63, MoveId.TOXIC ], + [ 70, MoveId.DRAGON_RUSH ], + ], + [SpeciesId.STAKATAKA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 5, MoveId.ROCK_THROW ], + [ 10, MoveId.PROTECT ], + [ 15, MoveId.STOMP ], + [ 20, MoveId.BLOCK ], + [ 25, MoveId.ROCK_SLIDE ], + [ 30, MoveId.WIDE_GUARD ], + [ 35, MoveId.AUTOTOMIZE ], + [ 40, MoveId.ROCK_BLAST ], + [ 45, MoveId.MAGNET_RISE ], + [ 50, MoveId.IRON_DEFENSE ], + [ 55, MoveId.IRON_HEAD ], + [ 60, MoveId.TAKE_DOWN ], + [ 65, MoveId.STEALTH_ROCK ], + [ 70, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.BLACEPHALON]: [ + [ 1, MoveId.FIRE_SPIN ], + [ 1, MoveId.ASTONISH ], + [ 5, MoveId.LIGHT_SCREEN ], + [ 10, MoveId.EMBER ], + [ 15, MoveId.NIGHT_SHADE ], + [ 20, MoveId.CONFUSE_RAY ], + [ 25, MoveId.MAGIC_COAT ], + [ 30, MoveId.INCINERATE ], + [ 35, MoveId.HYPNOSIS ], + [ 40, MoveId.MYSTICAL_FIRE ], + [ 45, MoveId.SHADOW_BALL ], + [ 50, MoveId.CALM_MIND ], + [ 55, MoveId.WILL_O_WISP ], + [ 60, MoveId.TRICK ], + [ 65, MoveId.FIRE_BLAST ], + [ 70, MoveId.MIND_BLOWN ], + ], + [SpeciesId.ZERAORA]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.SPARK ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.SNARL ], + [ 1, MoveId.POWER_UP_PUNCH ], + [ 8, MoveId.FURY_SWIPES ], + [ 16, MoveId.QUICK_GUARD ], + [ 24, MoveId.SLASH ], + [ 32, MoveId.VOLT_SWITCH ], + [ 40, MoveId.CHARGE ], + [ 48, MoveId.THUNDER_PUNCH ], + [ 56, MoveId.HONE_CLAWS ], + [ 64, MoveId.DISCHARGE ], + [ 72, MoveId.WILD_CHARGE ], + [ 80, MoveId.AGILITY ], + [ 88, MoveId.PLASMA_FISTS ], + [ 96, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.MELTAN]: [ + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.HARDEN ], + [ 8, MoveId.TAIL_WHIP ], + [ 16, MoveId.HEADBUTT ], + [ 24, MoveId.THUNDER_WAVE ], + [ 32, MoveId.ACID_ARMOR ], + [ 40, MoveId.FLASH_CANNON ], + ], + [SpeciesId.MELMETAL]: [ + [ EVOLVE_MOVE, MoveId.THUNDER_PUNCH ], + [ 1, MoveId.HEADBUTT ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.HARDEN ], + [ 24, MoveId.THUNDER_WAVE ], + [ 32, MoveId.ACID_ARMOR ], + [ 40, MoveId.FLASH_CANNON ], + [ 48, MoveId.MEGA_PUNCH ], + [ 56, MoveId.PROTECT ], + [ 64, MoveId.DISCHARGE ], + [ 72, MoveId.DYNAMIC_PUNCH ], + [ 80, MoveId.SUPERPOWER ], + [ 88, MoveId.DOUBLE_IRON_BASH ], + [ 96, MoveId.HYPER_BEAM ], + ], + [SpeciesId.GROOKEY]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 5, MoveId.BRANCH_POKE ], // Custom, moved from 6 to 5 + [ 8, MoveId.TAUNT ], + [ 12, MoveId.RAZOR_LEAF ], + [ 17, MoveId.SCREECH ], + [ 20, MoveId.KNOCK_OFF ], + [ 24, MoveId.SLAM ], + [ 28, MoveId.UPROAR ], + [ 32, MoveId.WOOD_HAMMER ], + [ 36, MoveId.ENDEAVOR ], + ], + [SpeciesId.THWACKEY]: [ + [ EVOLVE_MOVE, MoveId.DOUBLE_HIT ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.TAUNT ], + [ 1, MoveId.BRANCH_POKE ], + [ 12, MoveId.RAZOR_LEAF ], + [ 19, MoveId.SCREECH ], + [ 24, MoveId.KNOCK_OFF ], + [ 30, MoveId.SLAM ], + [ 36, MoveId.UPROAR ], + [ 42, MoveId.WOOD_HAMMER ], + [ 48, MoveId.ENDEAVOR ], + ], + [SpeciesId.RILLABOOM]: [ + [ EVOLVE_MOVE, MoveId.DRUM_BEATING ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.TAUNT ], + [ 1, MoveId.DOUBLE_HIT ], + [ 1, MoveId.NOBLE_ROAR ], + [ 1, MoveId.GRASSY_TERRAIN ], + [ 1, MoveId.BRANCH_POKE ], + [ 12, MoveId.RAZOR_LEAF ], + [ 19, MoveId.SCREECH ], + [ 24, MoveId.KNOCK_OFF ], + [ 30, MoveId.SLAM ], + [ 38, MoveId.UPROAR ], + [ 46, MoveId.WOOD_HAMMER ], + [ 54, MoveId.ENDEAVOR ], + [ 62, MoveId.BOOMBURST ], + ], + [SpeciesId.SCORBUNNY]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 5, MoveId.EMBER ], // Custom, moved from 6 to 5 + [ 8, MoveId.QUICK_ATTACK ], + [ 12, MoveId.DOUBLE_KICK ], + [ 17, MoveId.FLAME_CHARGE ], + [ 20, MoveId.AGILITY ], + [ 24, MoveId.HEADBUTT ], + [ 28, MoveId.COUNTER ], + [ 32, MoveId.BOUNCE ], + [ 36, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.RABOOT]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 12, MoveId.DOUBLE_KICK ], + [ 19, MoveId.FLAME_CHARGE ], + [ 24, MoveId.AGILITY ], + [ 30, MoveId.HEADBUTT ], + [ 36, MoveId.COUNTER ], + [ 42, MoveId.BOUNCE ], + [ 48, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.CINDERACE]: [ + [ EVOLVE_MOVE, MoveId.PYRO_BALL ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.FEINT ], + [ 12, MoveId.DOUBLE_KICK ], + [ 19, MoveId.FLAME_CHARGE ], + [ 24, MoveId.AGILITY ], + [ 30, MoveId.HEADBUTT ], + [ 38, MoveId.COUNTER ], + [ 46, MoveId.BOUNCE ], + [ 54, MoveId.DOUBLE_EDGE ], + [ 62, MoveId.COURT_CHANGE ], + ], + [SpeciesId.SOBBLE]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.GROWL ], + [ 5, MoveId.WATER_GUN ], // Custom, moved from 6 to 5 + [ 8, MoveId.BIND ], + [ 12, MoveId.WATER_PULSE ], + [ 17, MoveId.TEARFUL_LOOK ], + [ 20, MoveId.SUCKER_PUNCH ], + [ 24, MoveId.U_TURN ], + [ 28, MoveId.LIQUIDATION ], + [ 32, MoveId.SOAK ], + [ 36, MoveId.RAIN_DANCE ], + ], + [SpeciesId.DRIZZILE]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.BIND ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 12, MoveId.WATER_PULSE ], + [ 19, MoveId.TEARFUL_LOOK ], + [ 24, MoveId.SUCKER_PUNCH ], + [ 30, MoveId.U_TURN ], + [ 36, MoveId.LIQUIDATION ], + [ 42, MoveId.SOAK ], + [ 48, MoveId.RAIN_DANCE ], + ], + [SpeciesId.INTELEON]: [ + [ EVOLVE_MOVE, MoveId.SNIPE_SHOT ], + [ 1, MoveId.POUND ], + [ 1, MoveId.BIND ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.ACROBATICS ], + [ 12, MoveId.WATER_PULSE ], + [ 19, MoveId.TEARFUL_LOOK ], + [ 24, MoveId.SUCKER_PUNCH ], + [ 30, MoveId.U_TURN ], + [ 38, MoveId.LIQUIDATION ], + [ 46, MoveId.SOAK ], + [ 54, MoveId.RAIN_DANCE ], + [ 62, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.SKWOVET]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 5, MoveId.BITE ], + [ 10, MoveId.STUFF_CHEEKS ], + [ 15, MoveId.STOCKPILE ], + [ 15, MoveId.SPIT_UP ], + [ 15, MoveId.SWALLOW ], + [ 20, MoveId.BODY_SLAM ], + [ 25, MoveId.REST ], + [ 30, MoveId.COUNTER ], + [ 35, MoveId.BULLET_SEED ], + [ 40, MoveId.SUPER_FANG ], + [ 45, MoveId.BELCH ], + ], + [SpeciesId.GREEDENT]: [ + [ EVOLVE_MOVE, MoveId.COVET ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.BITE ], + [ 1, MoveId.STUFF_CHEEKS ], + [ 15, MoveId.STOCKPILE ], + [ 15, MoveId.SPIT_UP ], + [ 15, MoveId.SWALLOW ], + [ 20, MoveId.BODY_SLAM ], + [ 27, MoveId.REST ], + [ 34, MoveId.COUNTER ], + [ 41, MoveId.BULLET_SEED ], + [ 48, MoveId.SUPER_FANG ], + [ 55, MoveId.BELCH ], + ], + [SpeciesId.ROOKIDEE]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 4, MoveId.POWER_TRIP ], + [ 8, MoveId.HONE_CLAWS ], + [ 12, MoveId.FURY_ATTACK ], + [ 16, MoveId.PLUCK ], + [ 20, MoveId.TAUNT ], + [ 24, MoveId.SCARY_FACE ], + [ 28, MoveId.DRILL_PECK ], + [ 32, MoveId.SWAGGER ], + [ 36, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.CORVISQUIRE]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 1, MoveId.HONE_CLAWS ], + [ 1, MoveId.POWER_TRIP ], + [ 12, MoveId.FURY_ATTACK ], + [ 16, MoveId.PLUCK ], + [ 22, MoveId.TAUNT ], + [ 28, MoveId.SCARY_FACE ], + [ 34, MoveId.DRILL_PECK ], + [ 40, MoveId.SWAGGER ], + [ 46, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.CORVIKNIGHT]: [ + [ EVOLVE_MOVE, MoveId.STEEL_WING ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 1, MoveId.SCREECH ], + [ 1, MoveId.METAL_SOUND ], + [ 1, MoveId.IRON_DEFENSE ], + [ 1, MoveId.HONE_CLAWS ], + [ 1, MoveId.POWER_TRIP ], + [ 12, MoveId.FURY_ATTACK ], + [ 16, MoveId.PLUCK ], + [ 22, MoveId.TAUNT ], + [ 28, MoveId.SCARY_FACE ], + [ 34, MoveId.DRILL_PECK ], + [ 42, MoveId.SWAGGER ], + [ 50, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.BLIPBUG]: [ + [ 1, MoveId.STRUGGLE_BUG ], + ], + [SpeciesId.DOTTLER]: [ + [ EVOLVE_MOVE, MoveId.CONFUSION ], + [ EVOLVE_MOVE, MoveId.LIGHT_SCREEN ], + [ EVOLVE_MOVE, MoveId.REFLECT ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.LIGHT_SCREEN ], + [ 1, MoveId.REFLECT ], + [ 1, MoveId.STRUGGLE_BUG ], + ], + [SpeciesId.ORBEETLE]: [ + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.LIGHT_SCREEN ], + [ 1, MoveId.REFLECT ], + [ 1, MoveId.STRUGGLE_BUG ], + [ 4, MoveId.CONFUSE_RAY ], + [ 8, MoveId.MAGIC_COAT ], + [ 12, MoveId.AGILITY ], + [ 16, MoveId.PSYBEAM ], + [ 20, MoveId.HYPNOSIS ], + [ 24, MoveId.ALLY_SWITCH ], + [ 28, MoveId.BUG_BUZZ ], + [ 32, MoveId.MIRROR_COAT ], + [ 36, MoveId.PSYCHIC ], + [ 40, MoveId.AFTER_YOU ], + [ 44, MoveId.CALM_MIND ], + [ 48, MoveId.PSYCHIC_TERRAIN ], + ], + [SpeciesId.NICKIT]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.QUICK_ATTACK ], + [ 4, MoveId.BEAT_UP ], + [ 8, MoveId.HONE_CLAWS ], + [ 12, MoveId.SNARL ], + [ 16, MoveId.ASSURANCE ], + [ 20, MoveId.NASTY_PLOT ], + [ 24, MoveId.SUCKER_PUNCH ], + [ 28, MoveId.NIGHT_SLASH ], + [ 32, MoveId.TAIL_SLAP ], + [ 36, MoveId.FOUL_PLAY ], + ], + [SpeciesId.THIEVUL]: [ + [ EVOLVE_MOVE, MoveId.THIEF ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.BEAT_UP ], + [ 1, MoveId.HONE_CLAWS ], + [ 12, MoveId.SNARL ], + [ 16, MoveId.ASSURANCE ], + [ 22, MoveId.NASTY_PLOT ], + [ 28, MoveId.SUCKER_PUNCH ], + [ 34, MoveId.NIGHT_SLASH ], + [ 40, MoveId.TAIL_SLAP ], + [ 46, MoveId.FOUL_PLAY ], + [ 52, MoveId.PARTING_SHOT ], + ], + [SpeciesId.GOSSIFLEUR]: [ + [ 1, MoveId.SING ], + [ 1, MoveId.LEAFAGE ], + [ 4, MoveId.RAPID_SPIN ], + [ 8, MoveId.SWEET_SCENT ], + [ 12, MoveId.RAZOR_LEAF ], + [ 16, MoveId.ROUND ], + [ 21, MoveId.LEAF_TORNADO ], + [ 24, MoveId.SYNTHESIS ], + [ 28, MoveId.HYPER_VOICE ], + [ 32, MoveId.AROMATHERAPY ], + [ 36, MoveId.LEAF_STORM ], + ], + [SpeciesId.ELDEGOSS]: [ + [ EVOLVE_MOVE, MoveId.COTTON_SPORE ], + [ 1, MoveId.SING ], + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.LEAFAGE ], + [ 12, MoveId.RAZOR_LEAF ], + [ 16, MoveId.ROUND ], + [ 23, MoveId.LEAF_TORNADO ], + [ 28, MoveId.SYNTHESIS ], + [ 34, MoveId.HYPER_VOICE ], + [ 40, MoveId.AROMATHERAPY ], + [ 46, MoveId.LEAF_STORM ], + [ 52, MoveId.COTTON_GUARD ], + ], + [SpeciesId.WOOLOO]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 4, MoveId.DEFENSE_CURL ], + [ 8, MoveId.COPYCAT ], + [ 12, MoveId.GUARD_SPLIT ], + [ 16, MoveId.DOUBLE_KICK ], + [ 21, MoveId.HEADBUTT ], + [ 25, MoveId.TAKE_DOWN ], + [ 28, MoveId.GUARD_SWAP ], + [ 32, MoveId.REVERSAL ], + [ 36, MoveId.COTTON_GUARD ], + [ 40, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.DUBWOOL]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.COPYCAT ], + [ 12, MoveId.GUARD_SPLIT ], + [ 16, MoveId.DOUBLE_KICK ], + [ 21, MoveId.HEADBUTT ], + [ 27, MoveId.TAKE_DOWN ], + [ 32, MoveId.GUARD_SWAP ], + [ 38, MoveId.REVERSAL ], + [ 44, MoveId.COTTON_GUARD ], + [ 50, MoveId.DOUBLE_EDGE ], + [ 56, MoveId.LAST_RESORT ], + ], + [SpeciesId.CHEWTLE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WATER_GUN ], + [ 7, MoveId.BITE ], + [ 14, MoveId.PROTECT ], + [ 21, MoveId.HEADBUTT ], + [ 28, MoveId.COUNTER ], + [ 35, MoveId.JAW_LOCK ], + [ 42, MoveId.LIQUIDATION ], + [ 49, MoveId.BODY_SLAM ], + ], + [SpeciesId.DREDNAW]: [ + [ EVOLVE_MOVE, MoveId.ROCK_TOMB ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.BITE ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.CRUNCH ], + [ 1, MoveId.ROCK_POLISH ], + [ 1, MoveId.RAZOR_SHELL ], + [ 21, MoveId.HEADBUTT ], + [ 30, MoveId.COUNTER ], + [ 39, MoveId.JAW_LOCK ], + [ 48, MoveId.LIQUIDATION ], + [ 57, MoveId.BODY_SLAM ], + [ 66, MoveId.HEAD_SMASH ], + ], + [SpeciesId.YAMPER]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 5, MoveId.NUZZLE ], + [ 10, MoveId.BITE ], + [ 15, MoveId.ROAR ], + [ 20, MoveId.SPARK ], + [ 26, MoveId.CHARM ], + [ 30, MoveId.CRUNCH ], + [ 35, MoveId.CHARGE ], + [ 40, MoveId.WILD_CHARGE ], + [ 45, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.BOLTUND]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.BITE ], + [ 1, MoveId.ELECTRIFY ], + [ 1, MoveId.NUZZLE ], + [ 15, MoveId.ROAR ], + [ 20, MoveId.SPARK ], + [ 28, MoveId.CHARM ], + [ 34, MoveId.CRUNCH ], + [ 41, MoveId.CHARGE ], + [ 48, MoveId.WILD_CHARGE ], + [ 55, MoveId.PLAY_ROUGH ], + [ 62, MoveId.ELECTRIC_TERRAIN ], + ], + [SpeciesId.ROLYCOLY]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SMOKESCREEN ], + [ 5, MoveId.RAPID_SPIN ], + [ 10, MoveId.SMACK_DOWN ], + [ 15, MoveId.ROCK_POLISH ], + [ 20, MoveId.ANCIENT_POWER ], + [ 25, MoveId.INCINERATE ], + [ 30, MoveId.STEALTH_ROCK ], + [ 35, MoveId.HEAT_CRASH ], + [ 40, MoveId.ROCK_BLAST ], + ], + [SpeciesId.CARKOL]: [ + [ EVOLVE_MOVE, MoveId.FLAME_CHARGE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.SMACK_DOWN ], + [ 15, MoveId.ROCK_POLISH ], + [ 20, MoveId.ANCIENT_POWER ], + [ 27, MoveId.INCINERATE ], + [ 35, MoveId.STEALTH_ROCK ], + [ 41, MoveId.HEAT_CRASH ], + [ 48, MoveId.ROCK_BLAST ], + [ 55, MoveId.STONE_EDGE ], + ], + [SpeciesId.COALOSSAL]: [ + [ EVOLVE_MOVE, MoveId.TAR_SHOT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.SMACK_DOWN ], + [ 1, MoveId.FLAME_CHARGE ], + [ 15, MoveId.ROCK_POLISH ], + [ 20, MoveId.ANCIENT_POWER ], + [ 27, MoveId.INCINERATE ], + [ 37, MoveId.STEALTH_ROCK ], + [ 45, MoveId.HEAT_CRASH ], + [ 54, MoveId.ROCK_BLAST ], + [ 63, MoveId.STONE_EDGE ], + ], + [SpeciesId.APPLIN]: [ + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.LEAFAGE ], // Custom + ], + [SpeciesId.FLAPPLE]: [ + [ EVOLVE_MOVE, MoveId.WING_ATTACK ], + [ 1, MoveId.LEAFAGE ], // Previous Stage Move, Custom + [ 1, MoveId.GROWTH ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.TWISTER ], + [ 1, MoveId.RECYCLE ], + [ 1, MoveId.ASTONISH ], + [ 4, MoveId.ACID_SPRAY ], + [ 8, MoveId.ACROBATICS ], + [ 12, MoveId.LEECH_SEED ], + [ 16, MoveId.PROTECT ], + [ 20, MoveId.DRAGON_BREATH ], + [ 24, MoveId.DRAGON_DANCE ], + [ 28, MoveId.DRAGON_PULSE ], + [ 32, MoveId.GRAV_APPLE ], + [ 36, MoveId.IRON_DEFENSE ], + [ 40, MoveId.FLY ], + [ 44, MoveId.DRAGON_RUSH ], + ], + [SpeciesId.APPLETUN]: [ + [ EVOLVE_MOVE, MoveId.HEADBUTT ], + [ 1, MoveId.LEAFAGE ], // Previous Stage Move, Custom + [ 1, MoveId.GROWTH ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.RECYCLE ], + [ 1, MoveId.ASTONISH ], + [ 4, MoveId.CURSE ], + [ 8, MoveId.STOMP ], + [ 12, MoveId.LEECH_SEED ], + [ 16, MoveId.PROTECT ], + [ 20, MoveId.BULLET_SEED ], + [ 24, MoveId.RECOVER ], + [ 28, MoveId.APPLE_ACID ], + [ 32, MoveId.BODY_SLAM ], + [ 36, MoveId.IRON_DEFENSE ], + [ 40, MoveId.DRAGON_PULSE ], + [ 44, MoveId.ENERGY_BALL ], + ], + [SpeciesId.SILICOBRA]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.WRAP ], + [ 1, MoveId.MUD_SLAP ], // Custom + [ 5, MoveId.MINIMIZE ], + [ 10, MoveId.BRUTAL_SWING ], + [ 15, MoveId.BULLDOZE ], + [ 20, MoveId.HEADBUTT ], + [ 25, MoveId.GLARE ], + [ 30, MoveId.DIG ], + [ 35, MoveId.SANDSTORM ], + [ 40, MoveId.SLAM ], + [ 45, MoveId.COIL ], + [ 50, MoveId.SAND_TOMB ], + ], + [SpeciesId.SANDACONDA]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.WRAP ], + [ 1, MoveId.MUD_SLAP ], // Previous Stage Move, Custom + [ 1, MoveId.MINIMIZE ], + [ 1, MoveId.BRUTAL_SWING ], + [ 15, MoveId.BULLDOZE ], + [ 20, MoveId.HEADBUTT ], + [ 25, MoveId.GLARE ], + [ 30, MoveId.DIG ], + [ 35, MoveId.SANDSTORM ], + [ 42, MoveId.SLAM ], + [ 49, MoveId.COIL ], + [ 51, MoveId.SAND_TOMB ], + ], + [SpeciesId.CRAMORANT]: [ + [ RELEARN_MOVE, MoveId.BELCH ], + [ 1, MoveId.PECK ], + [ 1, MoveId.STOCKPILE ], + [ 1, MoveId.SPIT_UP ], + [ 1, MoveId.SWALLOW ], + [ 7, MoveId.WATER_GUN ], + [ 14, MoveId.FURY_ATTACK ], + [ 21, MoveId.PLUCK ], + [ 28, MoveId.DIVE ], + [ 35, MoveId.DRILL_PECK ], + [ 42, MoveId.AMNESIA ], + [ 49, MoveId.THRASH ], + [ 56, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.ARROKUDA]: [ + [ 1, MoveId.PECK ], + [ 1, MoveId.AQUA_JET ], + [ 6, MoveId.FURY_ATTACK ], + [ 12, MoveId.BITE ], + [ 18, MoveId.AGILITY ], + [ 24, MoveId.DIVE ], + [ 30, MoveId.FOCUS_ENERGY ], + [ 36, MoveId.CRUNCH ], + [ 42, MoveId.LIQUIDATION ], + [ 48, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.BARRASKEWDA]: [ + [ 1, MoveId.FURY_ATTACK ], + [ 1, MoveId.BITE ], + [ 1, MoveId.PECK ], + [ 1, MoveId.AQUA_JET ], + [ 1, MoveId.THROAT_CHOP ], + [ 18, MoveId.AGILITY ], + [ 24, MoveId.DIVE ], + [ 32, MoveId.FOCUS_ENERGY ], + [ 40, MoveId.CRUNCH ], + [ 48, MoveId.LIQUIDATION ], + [ 56, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.TOXEL]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.ACID ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.BELCH ], + [ 1, MoveId.NUZZLE ], + [ 1, MoveId.TEARFUL_LOOK ], + ], + [SpeciesId.TOXTRICITY]: [ + [ EVOLVE_MOVE, MoveId.SPARK ], + [ 1, MoveId.LEER ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.ACID ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.ACID_SPRAY ], + [ 1, MoveId.BELCH ], + [ 1, MoveId.NOBLE_ROAR ], + [ 1, MoveId.NUZZLE ], + [ 1, MoveId.TEARFUL_LOOK ], + [ 4, MoveId.CHARGE ], + [ 8, MoveId.SHOCK_WAVE ], + [ 12, MoveId.SCARY_FACE ], + [ 16, MoveId.TAUNT ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.SWAGGER ], + [ 32, MoveId.TOXIC ], + [ 36, MoveId.DISCHARGE ], + [ 40, MoveId.POISON_JAB ], + [ 44, MoveId.OVERDRIVE ], + [ 48, MoveId.BOOMBURST ], + [ 52, MoveId.SHIFT_GEAR ], + ], + [SpeciesId.SIZZLIPEDE]: [ + [ 1, MoveId.EMBER ], + [ 1, MoveId.SMOKESCREEN ], + [ 5, MoveId.WRAP ], + [ 10, MoveId.BITE ], + [ 15, MoveId.FLAME_WHEEL ], + [ 20, MoveId.BUG_BITE ], + [ 25, MoveId.COIL ], + [ 30, MoveId.SLAM ], + [ 35, MoveId.FIRE_SPIN ], + [ 40, MoveId.CRUNCH ], + [ 45, MoveId.FIRE_LASH ], + [ 50, MoveId.LUNGE ], + [ 55, MoveId.BURN_UP ], + ], + [SpeciesId.CENTISKORCH]: [ + [ 1, MoveId.WRAP ], + [ 1, MoveId.BITE ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.INFERNO ], + [ 15, MoveId.FLAME_WHEEL ], + [ 20, MoveId.BUG_BITE ], + [ 25, MoveId.COIL ], + [ 32, MoveId.SLAM ], + [ 39, MoveId.FIRE_SPIN ], + [ 46, MoveId.CRUNCH ], + [ 53, MoveId.FIRE_LASH ], + [ 60, MoveId.LUNGE ], + [ 67, MoveId.BURN_UP ], + ], + [SpeciesId.CLOBBOPUS]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.ROCK_SMASH ], + [ 5, MoveId.FEINT ], + [ 10, MoveId.BIND ], + [ 15, MoveId.DETECT ], + [ 20, MoveId.BRICK_BREAK ], + [ 25, MoveId.BULK_UP ], + [ 30, MoveId.SUBMISSION ], + [ 35, MoveId.TAUNT ], + [ 40, MoveId.REVERSAL ], + [ 45, MoveId.SUPERPOWER ], + ], + [SpeciesId.GRAPPLOCT]: [ + [ EVOLVE_MOVE, MoveId.OCTOLOCK ], + [ 1, MoveId.BIND ], + [ 1, MoveId.LEER ], + [ 1, MoveId.OCTAZOOKA ], + [ 1, MoveId.ROCK_SMASH ], + [ 1, MoveId.FEINT ], + [ 15, MoveId.DETECT ], + [ 20, MoveId.BRICK_BREAK ], + [ 25, MoveId.BULK_UP ], + [ 30, MoveId.SUBMISSION ], + [ 35, MoveId.TAUNT ], + [ 40, MoveId.REVERSAL ], + [ 45, MoveId.SUPERPOWER ], + [ 50, MoveId.TOPSY_TURVY ], + ], + [SpeciesId.SINISTEA]: [ + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.ABSORB ], // Custom + [ 6, MoveId.AROMATIC_MIST ], + [ 12, MoveId.MEGA_DRAIN ], + [ 24, MoveId.SUCKER_PUNCH ], + [ 30, MoveId.SWEET_SCENT ], + [ 36, MoveId.GIGA_DRAIN ], + [ 42, MoveId.NASTY_PLOT ], + [ 48, MoveId.SHADOW_BALL ], + [ 54, MoveId.MEMENTO ], + [ 60, MoveId.SHELL_SMASH ], + ], + [SpeciesId.POLTEAGEIST]: [ + [ EVOLVE_MOVE, MoveId.TEATIME ], + [ 1, MoveId.ABSORB ], // Previous Stage Move, Custom + [ 1, MoveId.MEGA_DRAIN ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.AROMATIC_MIST ], + [ 1, MoveId.STRENGTH_SAP ], + [ 18, MoveId.PROTECT ], + [ 24, MoveId.SUCKER_PUNCH ], + [ 30, MoveId.SWEET_SCENT ], + [ 36, MoveId.GIGA_DRAIN ], + [ 42, MoveId.NASTY_PLOT ], + [ 48, MoveId.SHADOW_BALL ], + [ 54, MoveId.MEMENTO ], + [ 60, MoveId.SHELL_SMASH ], + [ 66, MoveId.CURSE ], + ], + [SpeciesId.HATENNA]: [ + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.PLAY_NICE ], + [ 5, MoveId.LIFE_DEW ], + [ 10, MoveId.DISARMING_VOICE ], + [ 15, MoveId.AROMATIC_MIST ], + [ 20, MoveId.PSYBEAM ], + [ 25, MoveId.HEAL_PULSE ], + [ 30, MoveId.DAZZLING_GLEAM ], + [ 35, MoveId.CALM_MIND ], + [ 40, MoveId.PSYCHIC ], + [ 45, MoveId.HEALING_WISH ], + ], + [SpeciesId.HATTREM]: [ + [ EVOLVE_MOVE, MoveId.BRUTAL_SWING ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.DISARMING_VOICE ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.LIFE_DEW ], + [ 15, MoveId.AROMATIC_MIST ], + [ 20, MoveId.PSYBEAM ], + [ 25, MoveId.HEAL_PULSE ], + [ 30, MoveId.DAZZLING_GLEAM ], + [ 37, MoveId.CALM_MIND ], + [ 44, MoveId.PSYCHIC ], + [ 51, MoveId.HEALING_WISH ], + ], + [SpeciesId.HATTERENE]: [ + [ EVOLVE_MOVE, MoveId.PSYCHO_CUT ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.DISARMING_VOICE ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.BRUTAL_SWING ], + [ 1, MoveId.LIFE_DEW ], + [ 15, MoveId.AROMATIC_MIST ], + [ 20, MoveId.PSYBEAM ], + [ 25, MoveId.HEAL_PULSE ], + [ 30, MoveId.DAZZLING_GLEAM ], + [ 37, MoveId.CALM_MIND ], + [ 46, MoveId.PSYCHIC ], + [ 55, MoveId.HEALING_WISH ], + [ 64, MoveId.MAGIC_POWDER ], + ], + [SpeciesId.IMPIDIMP]: [ + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.CONFIDE ], + [ 4, MoveId.BITE ], + [ 8, MoveId.FLATTER ], + [ 12, MoveId.FAKE_TEARS ], + [ 16, MoveId.ASSURANCE ], + [ 20, MoveId.SWAGGER ], + [ 24, MoveId.SUCKER_PUNCH ], + [ 28, MoveId.TORMENT ], + [ 33, MoveId.DARK_PULSE ], + [ 36, MoveId.NASTY_PLOT ], + [ 40, MoveId.PLAY_ROUGH ], + [ 44, MoveId.FOUL_PLAY ], + ], + [SpeciesId.MORGREM]: [ + [ EVOLVE_MOVE, MoveId.FALSE_SURRENDER ], + [ 1, MoveId.BITE ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.FLATTER ], + [ 1, MoveId.CONFIDE ], + [ 12, MoveId.FAKE_TEARS ], + [ 16, MoveId.ASSURANCE ], + [ 20, MoveId.SWAGGER ], + [ 24, MoveId.SUCKER_PUNCH ], + [ 28, MoveId.TORMENT ], + [ 35, MoveId.DARK_PULSE ], + [ 40, MoveId.NASTY_PLOT ], + [ 46, MoveId.PLAY_ROUGH ], + [ 52, MoveId.FOUL_PLAY ], + ], + [SpeciesId.GRIMMSNARL]: [ + [ EVOLVE_MOVE, MoveId.SPIRIT_BREAK ], + [ 1, MoveId.BITE ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.FLATTER ], + [ 1, MoveId.BULK_UP ], + [ 1, MoveId.CONFIDE ], + [ 1, MoveId.FALSE_SURRENDER ], + [ 12, MoveId.FAKE_TEARS ], + [ 16, MoveId.ASSURANCE ], + [ 20, MoveId.SWAGGER ], + [ 24, MoveId.SUCKER_PUNCH ], + [ 28, MoveId.TORMENT ], + [ 35, MoveId.DARK_PULSE ], + [ 40, MoveId.NASTY_PLOT ], + [ 48, MoveId.PLAY_ROUGH ], + [ 56, MoveId.FOUL_PLAY ], + [ 64, MoveId.HAMMER_ARM ], + ], + [SpeciesId.OBSTAGOON]: [ + [ EVOLVE_MOVE, MoveId.OBSTRUCT ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.PIN_MISSILE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.SUBMISSION ], + [ 1, MoveId.LICK ], + [ 1, MoveId.CROSS_CHOP ], + [ 1, MoveId.NIGHT_SLASH ], + [ 1, MoveId.SWITCHEROO ], + [ 1, MoveId.BABY_DOLL_EYES ], + [ 9, MoveId.SNARL ], + [ 12, MoveId.HEADBUTT ], + [ 15, MoveId.HONE_CLAWS ], + [ 18, MoveId.FURY_SWIPES ], + [ 23, MoveId.REST ], + [ 28, MoveId.TAKE_DOWN ], + [ 35, MoveId.SCARY_FACE ], + [ 42, MoveId.COUNTER ], + [ 49, MoveId.TAUNT ], + [ 56, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.PERRSERKER]: [ + [ EVOLVE_MOVE, MoveId.IRON_HEAD ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.IRON_DEFENSE ], + [ 1, MoveId.METAL_BURST ], + [ 1, MoveId.HONE_CLAWS ], + [ 12, MoveId.PAY_DAY ], + [ 16, MoveId.METAL_CLAW ], + [ 20, MoveId.TAUNT ], + [ 24, MoveId.SWAGGER ], + [ 31, MoveId.FURY_SWIPES ], + [ 36, MoveId.SCREECH ], + [ 42, MoveId.SLASH ], + [ 48, MoveId.METAL_SOUND ], + [ 54, MoveId.THRASH ], + ], + [SpeciesId.CURSOLA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DISABLE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.PERISH_SONG ], + [ 1, MoveId.ASTONISH ], + [ 15, MoveId.SPITE ], + [ 20, MoveId.ANCIENT_POWER ], + [ 25, MoveId.HEX ], + [ 30, MoveId.CURSE ], + [ 35, MoveId.STRENGTH_SAP ], + [ 40, MoveId.POWER_GEM ], + [ 45, MoveId.NIGHT_SHADE ], + [ 50, MoveId.GRUDGE ], + [ 55, MoveId.MIRROR_COAT ], + ], + [SpeciesId.SIRFETCHD]: [ + [ EVOLVE_MOVE, MoveId.IRON_DEFENSE ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.FIRST_IMPRESSION ], + [ 15, MoveId.ROCK_SMASH ], + [ 20, MoveId.BRUTAL_SWING ], + [ 25, MoveId.DETECT ], + [ 30, MoveId.KNOCK_OFF ], + [ 35, MoveId.DEFOG ], + [ 40, MoveId.BRICK_BREAK ], + [ 45, MoveId.SWORDS_DANCE ], + [ 50, MoveId.SLAM ], + [ 55, MoveId.LEAF_BLADE ], + [ 60, MoveId.FINAL_GAMBIT ], + [ 65, MoveId.BRAVE_BIRD ], + [ 70, MoveId.METEOR_ASSAULT ], + ], + [SpeciesId.MR_RIME]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.BARRIER ], // Previous Stage Move + [ 1, MoveId.TICKLE ], // Previous Stage Move + [ 1, MoveId.MIMIC ], + [ 1, MoveId.LIGHT_SCREEN ], + [ 1, MoveId.REFLECT ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.SAFEGUARD ], + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.ENCORE ], + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.ROLE_PLAY ], + [ 1, MoveId.RECYCLE ], + [ 1, MoveId.SLACK_OFF ], + [ 1, MoveId.FAKE_TEARS ], + [ 1, MoveId.BLOCK ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.ICE_SHARD ], + [ 1, MoveId.AFTER_YOU ], + [ 1, MoveId.MISTY_TERRAIN ], + [ 1, MoveId.DAZZLING_GLEAM ], + [ 12, MoveId.CONFUSION ], + [ 16, MoveId.ALLY_SWITCH ], + [ 20, MoveId.ICY_WIND ], + [ 24, MoveId.DOUBLE_KICK ], + [ 28, MoveId.PSYBEAM ], + [ 32, MoveId.HYPNOSIS ], + [ 36, MoveId.MIRROR_COAT ], + [ 40, MoveId.SUCKER_PUNCH ], + [ 44, MoveId.FREEZE_DRY ], + [ 48, MoveId.PSYCHIC ], + [ 52, MoveId.TEETER_DANCE ], + ], + [SpeciesId.RUNERIGUS]: [ + [ EVOLVE_MOVE, MoveId.SHADOW_CLAW ], + [ 1, MoveId.NIGHT_SHADE ], + [ 1, MoveId.HAZE ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.SCARY_FACE ], + [ 1, MoveId.ASTONISH ], + [ 12, MoveId.DISABLE ], + [ 16, MoveId.BRUTAL_SWING ], + [ 20, MoveId.CRAFTY_SHIELD ], + [ 24, MoveId.HEX ], + [ 28, MoveId.MEAN_LOOK ], + [ 32, MoveId.SLAM ], + [ 38, MoveId.CURSE ], + [ 44, MoveId.SHADOW_BALL ], + [ 50, MoveId.EARTHQUAKE ], + [ 56, MoveId.GUARD_SPLIT ], + [ 56, MoveId.POWER_SPLIT ], + [ 62, MoveId.DESTINY_BOND ], + ], + [SpeciesId.MILCERY]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.AROMATIC_MIST ], + [ 5, MoveId.SWEET_KISS ], + [ 10, MoveId.SWEET_SCENT ], + [ 15, MoveId.DRAINING_KISS ], + [ 20, MoveId.AROMATHERAPY ], + [ 25, MoveId.ATTRACT ], + [ 30, MoveId.ACID_ARMOR ], + [ 35, MoveId.DAZZLING_GLEAM ], + [ 40, MoveId.RECOVER ], + [ 45, MoveId.MISTY_TERRAIN ], + [ 50, MoveId.ENTRAINMENT ], + ], + [SpeciesId.ALCREMIE]: [ + [ EVOLVE_MOVE, MoveId.DECORATE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.AROMATIC_MIST ], + [ 15, MoveId.DRAINING_KISS ], + [ 20, MoveId.AROMATHERAPY ], + [ 25, MoveId.ATTRACT ], + [ 30, MoveId.ACID_ARMOR ], + [ 35, MoveId.DAZZLING_GLEAM ], + [ 40, MoveId.RECOVER ], + [ 45, MoveId.MISTY_TERRAIN ], + [ 50, MoveId.ENTRAINMENT ], + ], + [SpeciesId.FALINKS]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.PROTECT ], + [ 5, MoveId.ROCK_SMASH ], + [ 10, MoveId.FOCUS_ENERGY ], + [ 15, MoveId.HEADBUTT ], + [ 20, MoveId.BULK_UP ], + [ 25, MoveId.ENDURE ], + [ 30, MoveId.REVERSAL ], + [ 35, MoveId.FIRST_IMPRESSION ], + [ 40, MoveId.NO_RETREAT ], + [ 45, MoveId.IRON_DEFENSE ], + [ 50, MoveId.CLOSE_COMBAT ], + [ 55, MoveId.MEGAHORN ], + [ 60, MoveId.COUNTER ], + ], + [SpeciesId.PINCURCHIN]: [ + [ 1, MoveId.PECK ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 5, MoveId.WATER_GUN ], + [ 10, MoveId.CHARGE ], + [ 15, MoveId.FURY_ATTACK ], + [ 20, MoveId.SPARK ], + [ 25, MoveId.BUBBLE_BEAM ], + [ 30, MoveId.RECOVER ], + [ 35, MoveId.CURSE ], + [ 40, MoveId.ELECTRIC_TERRAIN ], + [ 45, MoveId.POISON_JAB ], + [ 50, MoveId.ZING_ZAP ], + [ 55, MoveId.ACUPRESSURE ], + [ 60, MoveId.DISCHARGE ], + ], + [SpeciesId.SNOM]: [ + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.STRUGGLE_BUG ], + ], + [SpeciesId.FROSMOTH]: [ + [ EVOLVE_MOVE, MoveId.ICY_WIND ], + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.ATTRACT ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.STRUGGLE_BUG ], + [ 4, MoveId.STUN_SPORE ], + [ 8, MoveId.INFESTATION ], + [ 12, MoveId.MIST ], + [ 16, MoveId.DEFOG ], + [ 21, MoveId.FEATHER_DANCE ], + [ 24, MoveId.AURORA_BEAM ], + [ 28, MoveId.SNOWSCAPE ], + [ 32, MoveId.BUG_BUZZ ], + [ 36, MoveId.AURORA_VEIL ], + [ 40, MoveId.BLIZZARD ], + [ 44, MoveId.TAILWIND ], + [ 48, MoveId.WIDE_GUARD ], + [ 52, MoveId.QUIVER_DANCE ], + ], + [SpeciesId.STONJOURNER]: [ + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.BLOCK ], + [ 6, MoveId.ROCK_POLISH ], + [ 12, MoveId.ROCK_TOMB ], + [ 18, MoveId.GRAVITY ], + [ 24, MoveId.STOMP ], + [ 30, MoveId.STEALTH_ROCK ], + [ 36, MoveId.ROCK_SLIDE ], + [ 42, MoveId.BODY_SLAM ], + [ 48, MoveId.WIDE_GUARD ], + [ 54, MoveId.HEAVY_SLAM ], + [ 60, MoveId.STONE_EDGE ], + [ 66, MoveId.MEGA_KICK ], + ], + [SpeciesId.EISCUE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.POWDER_SNOW ], + [ 6, MoveId.MIST ], + [ 12, MoveId.WEATHER_BALL ], + [ 18, MoveId.ICY_WIND ], + [ 24, MoveId.HEADBUTT ], + [ 30, MoveId.AMNESIA ], + [ 36, MoveId.FREEZE_DRY ], + [ 42, MoveId.SNOWSCAPE ], + [ 48, MoveId.AURORA_VEIL ], + [ 54, MoveId.SURF ], + [ 60, MoveId.BLIZZARD ], + ], + [SpeciesId.INDEEDEE]: [ + [ 1, MoveId.STORED_POWER ], + [ 1, MoveId.PLAY_NICE ], + [ 5, MoveId.ENCORE ], + [ 10, MoveId.DISARMING_VOICE ], + [ 15, MoveId.PSYBEAM ], + [ 20, MoveId.HELPING_HAND ], + [ 25, MoveId.AFTER_YOU ], + [ 30, MoveId.HEALING_WISH ], + [ 35, MoveId.PSYCHIC ], + [ 40, MoveId.CALM_MIND ], + [ 45, MoveId.POWER_SPLIT ], + [ 50, MoveId.PSYCHIC_TERRAIN ], + [ 55, MoveId.LAST_RESORT ], + ], + [SpeciesId.MORPEKO]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 5, MoveId.LEER ], + [ 10, MoveId.POWER_TRIP ], + [ 15, MoveId.QUICK_ATTACK ], + [ 20, MoveId.FLATTER ], + [ 25, MoveId.BITE ], + [ 30, MoveId.SPARK ], + [ 35, MoveId.TORMENT ], + [ 40, MoveId.AGILITY ], + [ 45, MoveId.BULLET_SEED ], + [ 50, MoveId.CRUNCH ], + [ 55, MoveId.AURA_WHEEL ], + [ 60, MoveId.THRASH ], + ], + [SpeciesId.CUFANT]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 5, MoveId.ROLLOUT ], + [ 10, MoveId.ROCK_SMASH ], + [ 15, MoveId.BULLDOZE ], + [ 20, MoveId.STOMP ], + [ 25, MoveId.IRON_DEFENSE ], + [ 30, MoveId.DIG ], + [ 35, MoveId.STRENGTH ], + [ 40, MoveId.IRON_HEAD ], + [ 45, MoveId.PLAY_ROUGH ], + [ 50, MoveId.HIGH_HORSEPOWER ], + [ 55, MoveId.SUPERPOWER ], + ], + [SpeciesId.COPPERAJAH]: [ + [ EVOLVE_MOVE, MoveId.HEAVY_SLAM ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.ROLLOUT ], + [ 1, MoveId.ROCK_SMASH ], + [ 15, MoveId.BULLDOZE ], + [ 20, MoveId.STOMP ], + [ 25, MoveId.IRON_DEFENSE ], + [ 30, MoveId.DIG ], + [ 37, MoveId.STRENGTH ], + [ 44, MoveId.IRON_HEAD ], + [ 51, MoveId.PLAY_ROUGH ], + [ 58, MoveId.HIGH_HORSEPOWER ], + [ 65, MoveId.SUPERPOWER ], + ], + [SpeciesId.DRACOZOLT]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 7, MoveId.CHARGE ], + [ 14, MoveId.AERIAL_ACE ], + [ 21, MoveId.ANCIENT_POWER ], + [ 28, MoveId.PLUCK ], + [ 35, MoveId.DRAGON_TAIL ], + [ 42, MoveId.STOMP ], + [ 49, MoveId.SLAM ], + [ 56, MoveId.DISCHARGE ], + [ 63, MoveId.BOLT_BEAK ], + [ 70, MoveId.DRAGON_PULSE ], + [ 77, MoveId.DRAGON_RUSH ], + ], + [SpeciesId.ARCTOZOLT]: [ + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.POWDER_SNOW ], + [ 7, MoveId.CHARGE ], + [ 14, MoveId.ECHOED_VOICE ], + [ 21, MoveId.ANCIENT_POWER ], + [ 28, MoveId.PLUCK ], + [ 35, MoveId.AVALANCHE ], + [ 42, MoveId.FREEZE_DRY ], + [ 49, MoveId.SLAM ], + [ 56, MoveId.DISCHARGE ], + [ 63, MoveId.BOLT_BEAK ], + [ 70, MoveId.ICICLE_CRASH ], + [ 77, MoveId.BLIZZARD ], + ], + [SpeciesId.DRACOVISH]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WATER_GUN ], + [ 7, MoveId.PROTECT ], + [ 14, MoveId.BRUTAL_SWING ], + [ 21, MoveId.ANCIENT_POWER ], + [ 28, MoveId.BITE ], + [ 35, MoveId.DRAGON_BREATH ], + [ 42, MoveId.STOMP ], + [ 49, MoveId.SUPER_FANG ], + [ 56, MoveId.CRUNCH ], + [ 63, MoveId.FISHIOUS_REND ], + [ 70, MoveId.DRAGON_PULSE ], + [ 77, MoveId.DRAGON_RUSH ], + ], + [SpeciesId.ARCTOVISH]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.POWDER_SNOW ], + [ 7, MoveId.PROTECT ], + [ 14, MoveId.ICY_WIND ], + [ 21, MoveId.ANCIENT_POWER ], + [ 28, MoveId.BITE ], + [ 35, MoveId.AURORA_VEIL ], + [ 42, MoveId.FREEZE_DRY ], + [ 49, MoveId.SUPER_FANG ], + [ 56, MoveId.CRUNCH ], + [ 63, MoveId.FISHIOUS_REND ], + [ 70, MoveId.ICICLE_CRASH ], + [ 77, MoveId.BLIZZARD ], + ], + [SpeciesId.DURALUDON]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.METAL_CLAW ], + [ 6, MoveId.ROCK_SMASH ], + [ 12, MoveId.HONE_CLAWS ], + [ 18, MoveId.METAL_SOUND ], + [ 24, MoveId.BREAKING_SWIPE ], + [ 30, MoveId.DRAGON_TAIL ], + [ 36, MoveId.IRON_DEFENSE ], + [ 42, MoveId.LASER_FOCUS ], + [ 48, MoveId.DRAGON_CLAW ], + [ 54, MoveId.FLASH_CANNON ], + [ 60, MoveId.METAL_BURST ], + [ 66, MoveId.HYPER_BEAM ], + ], + [SpeciesId.DREEPY]: [ + [ 1, MoveId.BITE ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.INFESTATION ], + ], + [SpeciesId.DRAKLOAK]: [ + [ EVOLVE_MOVE, MoveId.DRAGON_PULSE ], + [ 1, MoveId.BITE ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.INFESTATION ], + [ 6, MoveId.LOCK_ON ], + [ 12, MoveId.ASSURANCE ], + [ 18, MoveId.HEX ], + [ 24, MoveId.AGILITY ], + [ 30, MoveId.DOUBLE_HIT ], + [ 36, MoveId.U_TURN ], + [ 42, MoveId.DRAGON_DANCE ], + [ 48, MoveId.PHANTOM_FORCE ], + [ 54, MoveId.TAKE_DOWN ], + [ 61, MoveId.DRAGON_RUSH ], + [ 66, MoveId.DOUBLE_EDGE ], + [ 72, MoveId.LAST_RESORT ], + ], + [SpeciesId.DRAGAPULT]: [ + [ EVOLVE_MOVE, MoveId.DRAGON_DARTS ], + [ RELEARN_MOVE, MoveId.DRAGON_PULSE ], // Previous Stage Move + [ 1, MoveId.BITE ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.INFESTATION ], + [ 6, MoveId.LOCK_ON ], + [ 12, MoveId.ASSURANCE ], + [ 18, MoveId.HEX ], + [ 24, MoveId.AGILITY ], + [ 30, MoveId.DOUBLE_HIT ], + [ 36, MoveId.U_TURN ], + [ 42, MoveId.DRAGON_DANCE ], + [ 48, MoveId.PHANTOM_FORCE ], + [ 54, MoveId.TAKE_DOWN ], + [ 63, MoveId.DRAGON_RUSH ], + [ 70, MoveId.DOUBLE_EDGE ], + [ 78, MoveId.LAST_RESORT ], + ], + [SpeciesId.ZACIAN]: [ + [ 1, MoveId.BITE ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.HOWL ], + [ 1, MoveId.QUICK_GUARD ], + [ 1, MoveId.SACRED_SWORD ], + [ 11, MoveId.SLASH ], + [ 22, MoveId.SWORDS_DANCE ], + [ 33, MoveId.IRON_HEAD ], + [ 44, MoveId.NOBLE_ROAR ], + [ 55, MoveId.CRUNCH ], + [ 66, MoveId.MOONBLAST ], + [ 77, MoveId.CLOSE_COMBAT ], + [ 88, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.ZAMAZENTA]: [ + [ 1, MoveId.BITE ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.HOWL ], + [ 1, MoveId.WIDE_GUARD ], + [ 11, MoveId.SLASH ], + [ 22, MoveId.IRON_DEFENSE ], + [ 33, MoveId.IRON_HEAD ], + [ 44, MoveId.METAL_BURST ], + [ 55, MoveId.CRUNCH ], + [ 66, MoveId.MOONBLAST ], + [ 77, MoveId.CLOSE_COMBAT ], + [ 88, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.ETERNATUS]: [ + [ 1, MoveId.AGILITY ], + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.POISON_TAIL ], + [ 1, MoveId.DRAGON_TAIL ], + [ 8, MoveId.TOXIC ], + [ 16, MoveId.VENOSHOCK ], + [ 24, MoveId.DRAGON_DANCE ], + [ 32, MoveId.CROSS_POISON ], + [ 40, MoveId.DRAGON_PULSE ], + [ 48, MoveId.FLAMETHROWER ], + [ 56, MoveId.DYNAMAX_CANNON ], + [ 64, MoveId.COSMIC_POWER ], + [ 72, MoveId.RECOVER ], + [ 80, MoveId.HYPER_BEAM ], + [ 88, MoveId.OUTRAGE ], + ], + [SpeciesId.KUBFU]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.ROCK_SMASH ], + [ 4, MoveId.ENDURE ], + [ 8, MoveId.FOCUS_ENERGY ], + [ 12, MoveId.AERIAL_ACE ], + [ 16, MoveId.SCARY_FACE ], + [ 20, MoveId.HEADBUTT ], + [ 24, MoveId.BRICK_BREAK ], + [ 28, MoveId.DETECT ], + [ 32, MoveId.BULK_UP ], + [ 36, MoveId.IRON_HEAD ], + [ 40, MoveId.DYNAMIC_PUNCH ], + [ 44, MoveId.COUNTER ], + [ 48, MoveId.CLOSE_COMBAT ], + [ 52, MoveId.FOCUS_PUNCH ], + ], + [SpeciesId.URSHIFU]: [ + [ EVOLVE_MOVE, MoveId.WICKED_BLOW ], + [ 1, MoveId.LEER ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.ENDURE ], + [ 1, MoveId.ROCK_SMASH ], + [ 1, MoveId.SUCKER_PUNCH ], + [ 12, MoveId.AERIAL_ACE ], + [ 16, MoveId.SCARY_FACE ], + [ 20, MoveId.HEADBUTT ], + [ 24, MoveId.BRICK_BREAK ], + [ 28, MoveId.DETECT ], + [ 32, MoveId.BULK_UP ], + [ 36, MoveId.IRON_HEAD ], + [ 40, MoveId.DYNAMIC_PUNCH ], + [ 44, MoveId.COUNTER ], + [ 48, MoveId.CLOSE_COMBAT ], + [ 52, MoveId.FOCUS_PUNCH ], + ], + [SpeciesId.ZARUDE]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.BIND ], + [ 6, MoveId.LEER ], + [ 12, MoveId.VINE_WHIP ], + [ 18, MoveId.GROWTH ], + [ 24, MoveId.FURY_SWIPES ], + [ 30, MoveId.SCARY_FACE ], + [ 36, MoveId.GRASS_KNOT ], + [ 42, MoveId.BITE ], + [ 48, MoveId.U_TURN ], + [ 54, MoveId.SWAGGER ], + [ 60, MoveId.ENERGY_BALL ], + [ 66, MoveId.SYNTHESIS ], + [ 72, MoveId.HAMMER_ARM ], + [ 78, MoveId.THRASH ], + [ 84, MoveId.POWER_WHIP ], + [ 90, MoveId.JUNGLE_HEALING ], + ], + [SpeciesId.REGIELEKI]: [ + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.RAPID_SPIN ], + [ 6, MoveId.ELECTROWEB ], + [ 12, MoveId.ANCIENT_POWER ], + [ 18, MoveId.SHOCK_WAVE ], + [ 24, MoveId.THUNDER_WAVE ], + [ 30, MoveId.EXTREME_SPEED ], + [ 36, MoveId.THUNDER_CAGE ], + [ 42, MoveId.THUNDERBOLT ], + [ 48, MoveId.MAGNET_RISE ], + [ 54, MoveId.THRASH ], + [ 60, MoveId.LOCK_ON ], + [ 66, MoveId.ZAP_CANNON ], + [ 72, MoveId.HYPER_BEAM ], + [ 78, MoveId.EXPLOSION ], + ], + [SpeciesId.REGIDRAGO]: [ + [ 1, MoveId.TWISTER ], + [ 6, MoveId.BITE ], + [ 12, MoveId.ANCIENT_POWER ], + [ 18, MoveId.DRAGON_BREATH ], + [ 30, MoveId.CRUNCH ], + [ 36, MoveId.DRAGON_CLAW ], + [ 42, MoveId.HAMMER_ARM ], + [ 48, MoveId.DRAGON_DANCE ], + [ 54, MoveId.THRASH ], + [ 60, MoveId.FOCUS_ENERGY ], + [ 66, MoveId.DRAGON_ENERGY ], + [ 72, MoveId.HYPER_BEAM ], + [ 78, MoveId.EXPLOSION ], + ], + [SpeciesId.GLASTRIER]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 6, MoveId.DOUBLE_KICK ], + [ 12, MoveId.AVALANCHE ], + [ 18, MoveId.STOMP ], + [ 24, MoveId.TORMENT ], + [ 30, MoveId.MIST ], + [ 36, MoveId.ICICLE_CRASH ], + [ 42, MoveId.TAKE_DOWN ], + [ 48, MoveId.IRON_DEFENSE ], + [ 54, MoveId.THRASH ], + [ 60, MoveId.TAUNT ], + [ 66, MoveId.DOUBLE_EDGE ], + [ 72, MoveId.SWORDS_DANCE ], + ], + [SpeciesId.SPECTRIER]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 6, MoveId.DOUBLE_KICK ], + [ 12, MoveId.HEX ], + [ 18, MoveId.STOMP ], + [ 24, MoveId.CONFUSE_RAY ], + [ 30, MoveId.HAZE ], + [ 36, MoveId.SHADOW_BALL ], + [ 42, MoveId.TAKE_DOWN ], + [ 48, MoveId.AGILITY ], + [ 54, MoveId.THRASH ], + [ 60, MoveId.DISABLE ], + [ 66, MoveId.DOUBLE_EDGE ], + [ 72, MoveId.NASTY_PLOT ], + ], + [SpeciesId.CALYREX]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.MEGA_DRAIN ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.CONFUSION ], + [ 8, MoveId.LIFE_DEW ], + [ 16, MoveId.GIGA_DRAIN ], + [ 24, MoveId.PSYSHOCK ], + [ 32, MoveId.HELPING_HAND ], + [ 40, MoveId.GRASSY_TERRAIN ], + [ 40, MoveId.PSYCHIC_TERRAIN ], + [ 48, MoveId.ENERGY_BALL ], + [ 56, MoveId.PSYCHIC ], + [ 64, MoveId.LEECH_SEED ], + [ 72, MoveId.HEAL_PULSE ], + [ 80, MoveId.SOLAR_BEAM ], + [ 88, MoveId.FUTURE_SIGHT ], + ], + [SpeciesId.WYRDEER]: [ + [ EVOLVE_MOVE, MoveId.PSYSHIELD_BASH ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.ME_FIRST ], // Previous Stage Move + [ 3, MoveId.LEER ], + [ 7, MoveId.ASTONISH ], + [ 10, MoveId.HYPNOSIS ], + [ 13, MoveId.STOMP ], + [ 16, MoveId.SAND_ATTACK ], + [ 21, MoveId.TAKE_DOWN ], + [ 23, MoveId.CONFUSE_RAY ], + [ 27, MoveId.CALM_MIND ], + [ 32, MoveId.ROLE_PLAY ], + [ 37, MoveId.ZEN_HEADBUTT ], + [ 49, MoveId.IMPRISON ], + [ 55, MoveId.DOUBLE_EDGE ], + [ 62, MoveId.MEGAHORN ], + ], + [SpeciesId.KLEAVOR]: [ + [ EVOLVE_MOVE, MoveId.STONE_AXE ], + [ 1, MoveId.WING_ATTACK ], // Previous Stage Move + [ 1, MoveId.AIR_SLASH ], // Previous Stage Move + [ 1, MoveId.LEER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 4, MoveId.FURY_CUTTER ], + [ 8, MoveId.FALSE_SWIPE ], + [ 12, MoveId.SMACK_DOWN ], + [ 16, MoveId.DOUBLE_TEAM ], + [ 20, MoveId.DOUBLE_HIT ], + [ 24, MoveId.SLASH ], + [ 28, MoveId.FOCUS_ENERGY ], + [ 30, MoveId.STEEL_WING ], // Custom + [ 32, MoveId.AGILITY ], + [ 36, MoveId.ROCK_SLIDE ], + [ 40, MoveId.X_SCISSOR ], + [ 44, MoveId.SWORDS_DANCE ], + ], + [SpeciesId.URSALUNA]: [ + [ EVOLVE_MOVE, MoveId.HEADLONG_RUSH ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.LICK ], + [ 1, MoveId.COVET ], + [ 1, MoveId.FLING ], // Previous Stage Move + [ 1, MoveId.BABY_DOLL_EYES ], // Previous Stage Move + [ 1, MoveId.FAKE_TEARS ], + [ 1, MoveId.CHARM ], // Previous Stage Moves + [ 8, MoveId.FURY_SWIPES ], + [ 13, MoveId.PAYBACK ], + [ 17, MoveId.SWEET_SCENT ], + [ 22, MoveId.SLASH ], + [ 25, MoveId.PLAY_NICE ], + [ 29, MoveId.PLAY_ROUGH ], + [ 35, MoveId.SCARY_FACE ], + [ 41, MoveId.REST ], + [ 41, MoveId.SNORE ], + [ 48, MoveId.HIGH_HORSEPOWER ], + [ 56, MoveId.THRASH ], + [ 64, MoveId.HAMMER_ARM ], + ], + [SpeciesId.BASCULEGION]: [ + [ RELEARN_MOVE, MoveId.FINAL_GAMBIT ], // Previous Stage Move, White Stripe currently shares moveset with other forms + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.SHADOW_BALL ], + [ 1, MoveId.PHANTOM_FORCE ], + [ 4, MoveId.TACKLE ], + [ 8, MoveId.FLAIL ], + [ 12, MoveId.AQUA_JET ], + [ 16, MoveId.BITE ], + [ 20, MoveId.SCARY_FACE ], + [ 24, MoveId.HEADBUTT ], + [ 28, MoveId.SOAK ], + [ 32, MoveId.CRUNCH ], + [ 36, MoveId.TAKE_DOWN ], + [ 40, MoveId.UPROAR ], + [ 44, MoveId.WAVE_CRASH ], + [ 48, MoveId.THRASH ], + [ 52, MoveId.DOUBLE_EDGE ], + [ 56, MoveId.HEAD_SMASH ], + ], + [SpeciesId.SNEASLER]: [ + [ EVOLVE_MOVE, MoveId.DIRE_CLAW ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.ROCK_SMASH ], + [ 1, MoveId.FLING ], + [ 6, MoveId.TAUNT ], + [ 12, MoveId.QUICK_ATTACK ], + [ 18, MoveId.METAL_CLAW ], + [ 24, MoveId.POISON_JAB ], + [ 30, MoveId.BRICK_BREAK ], + [ 36, MoveId.HONE_CLAWS ], + [ 42, MoveId.SLASH ], + [ 48, MoveId.AGILITY ], + [ 54, MoveId.SCREECH ], + [ 60, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.OVERQWIL]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.POISON_STING ], + [ 4, MoveId.HARDEN ], + [ 8, MoveId.BITE ], + [ 12, MoveId.FELL_STINGER ], + [ 16, MoveId.MINIMIZE ], + [ 20, MoveId.SPIKES ], + [ 24, MoveId.BRINE ], + [ 28, MoveId.BARB_BARRAGE ], + [ 32, MoveId.PIN_MISSILE ], + [ 36, MoveId.TOXIC_SPIKES ], + [ 40, MoveId.STOCKPILE ], + [ 40, MoveId.SPIT_UP ], + [ 44, MoveId.TOXIC ], + [ 48, MoveId.CRUNCH ], + [ 52, MoveId.ACUPRESSURE ], + [ 56, MoveId.DESTINY_BOND ], + ], + [SpeciesId.ENAMORUS]: [ + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.FAIRY_WIND ], + [ 5, MoveId.TORMENT ], + [ 10, MoveId.FLATTER ], + [ 15, MoveId.TWISTER ], + [ 20, MoveId.DRAINING_KISS ], + [ 25, MoveId.IRON_DEFENSE ], + [ 30, MoveId.IMPRISON ], + [ 35, MoveId.MYSTICAL_FIRE ], + [ 40, MoveId.DAZZLING_GLEAM ], + [ 45, MoveId.EXTRASENSORY ], + [ 50, MoveId.UPROAR ], + [ 55, MoveId.SUPERPOWER ], + [ 60, MoveId.HEALING_WISH ], + [ 65, MoveId.MOONBLAST ], + [ 70, MoveId.OUTRAGE ], + [ 75, MoveId.SPRINGTIDE_STORM ], + ], + [SpeciesId.SPRIGATITO]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.LEAFAGE ], + [ 7, MoveId.BITE ], + [ 10, MoveId.HONE_CLAWS ], + [ 13, MoveId.MAGICAL_LEAF ], + [ 15, MoveId.QUICK_ATTACK ], + [ 17, MoveId.SEED_BOMB ], + [ 21, MoveId.U_TURN ], + [ 25, MoveId.WORRY_SEED ], + [ 28, MoveId.SLASH ], + [ 32, MoveId.ENERGY_BALL ], + [ 36, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.FLORAGATO]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.LEAFAGE ], + [ 7, MoveId.BITE ], + [ 10, MoveId.HONE_CLAWS ], + [ 13, MoveId.MAGICAL_LEAF ], + [ 15, MoveId.QUICK_ATTACK ], + [ 20, MoveId.SEED_BOMB ], + [ 24, MoveId.U_TURN ], + [ 28, MoveId.WORRY_SEED ], + [ 33, MoveId.SLASH ], + [ 38, MoveId.ENERGY_BALL ], + [ 42, MoveId.PLAY_ROUGH ], + [ 46, MoveId.LEAF_STORM ], + ], + [SpeciesId.MEOWSCARADA]: [ + [ EVOLVE_MOVE, MoveId.FLOWER_TRICK ], + [ RELEARN_MOVE, MoveId.DOUBLE_TEAM ], + [ RELEARN_MOVE, MoveId.TRICK ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.LEAFAGE ], + [ 7, MoveId.BITE ], + [ 10, MoveId.HONE_CLAWS ], + [ 13, MoveId.MAGICAL_LEAF ], + [ 15, MoveId.QUICK_ATTACK ], + [ 20, MoveId.SEED_BOMB ], + [ 24, MoveId.U_TURN ], + [ 29, MoveId.WORRY_SEED ], + [ 33, MoveId.SLASH ], + [ 38, MoveId.NIGHT_SLASH ], + [ 42, MoveId.ENERGY_BALL ], + [ 47, MoveId.PLAY_ROUGH ], + [ 52, MoveId.KNOCK_OFF ], + [ 58, MoveId.GRASSY_TERRAIN ], + [ 64, MoveId.LEAF_STORM ], + ], + [SpeciesId.FUECOCO]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 7, MoveId.ROUND ], + [ 12, MoveId.BITE ], + [ 15, MoveId.INCINERATE ], + [ 17, MoveId.YAWN ], + [ 21, MoveId.SNARL ], + [ 25, MoveId.ROAR ], + [ 28, MoveId.FLAMETHROWER ], + [ 32, MoveId.HYPER_VOICE ], + [ 36, MoveId.FIRE_BLAST ], + ], + [SpeciesId.CROCALOR]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 7, MoveId.LICK ], + [ 10, MoveId.ROUND ], + [ 12, MoveId.BITE ], + [ 15, MoveId.YAWN ], + [ 17, MoveId.INCINERATE ], + [ 24, MoveId.SNARL ], + [ 28, MoveId.ROAR ], + [ 32, MoveId.FLAMETHROWER ], + [ 38, MoveId.HYPER_VOICE ], + [ 42, MoveId.WILL_O_WISP ], + [ 47, MoveId.FIRE_BLAST ], + ], + [SpeciesId.SKELEDIRGE]: [ + [ EVOLVE_MOVE, MoveId.TORCH_SONG ], + [ RELEARN_MOVE, MoveId.SING ], + [ RELEARN_MOVE, MoveId.YAWN ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 7, MoveId.LICK ], + [ 10, MoveId.ROUND ], + [ 12, MoveId.SCARY_FACE ], + [ 15, MoveId.BITE ], + [ 17, MoveId.INCINERATE ], + [ 24, MoveId.SNARL ], + [ 28, MoveId.ROAR ], + [ 32, MoveId.FLAMETHROWER ], + [ 38, MoveId.SHADOW_BALL ], + [ 42, MoveId.HYPER_VOICE ], + [ 47, MoveId.WILL_O_WISP ], + [ 47, MoveId.HEX ], + [ 58, MoveId.FIRE_BLAST ], + [ 64, MoveId.OVERHEAT ], + ], + [SpeciesId.QUAXLY]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 7, MoveId.WORK_UP ], + [ 10, MoveId.WING_ATTACK ], + [ 13, MoveId.AQUA_JET ], + [ 17, MoveId.DOUBLE_HIT ], + [ 21, MoveId.AQUA_CUTTER ], + [ 24, MoveId.AIR_SLASH ], + [ 28, MoveId.FOCUS_ENERGY ], + [ 31, MoveId.ACROBATICS ], + [ 35, MoveId.LIQUIDATION ], + ], + [SpeciesId.QUAXWELL]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.DOUBLE_HIT ], + [ 7, MoveId.WORK_UP ], + [ 10, MoveId.WING_ATTACK ], + [ 13, MoveId.AQUA_JET ], + [ 17, MoveId.WATER_PULSE ], + [ 19, MoveId.LOW_SWEEP ], + [ 23, MoveId.AQUA_CUTTER ], + [ 27, MoveId.AIR_SLASH ], + [ 32, MoveId.FOCUS_ENERGY ], + [ 38, MoveId.ACROBATICS ], + [ 43, MoveId.LIQUIDATION ], + [ 48, MoveId.FEATHER_DANCE ], + ], + [SpeciesId.QUAQUAVAL]: [ + [ EVOLVE_MOVE, MoveId.AQUA_STEP ], + [ RELEARN_MOVE, MoveId.COUNTER ], + [ 1, MoveId.POUND ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.DOUBLE_HIT ], + [ 7, MoveId.WORK_UP ], + [ 10, MoveId.WING_ATTACK ], + [ 13, MoveId.AQUA_JET ], + [ 17, MoveId.WATER_PULSE ], + [ 17, MoveId.LOW_SWEEP ], + [ 21, MoveId.AQUA_CUTTER ], + [ 27, MoveId.AIR_SLASH ], + [ 32, MoveId.FOCUS_ENERGY ], + [ 38, MoveId.MEGA_KICK ], + [ 43, MoveId.ACROBATICS ], + [ 47, MoveId.LIQUIDATION ], + [ 52, MoveId.FEATHER_DANCE ], + [ 58, MoveId.CLOSE_COMBAT ], + [ 64, MoveId.WAVE_CRASH ], + ], + [SpeciesId.LECHONK]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 5, MoveId.DISARMING_VOICE ], + [ 8, MoveId.ECHOED_VOICE ], + [ 12, MoveId.MUD_SHOT ], + [ 15, MoveId.COVET ], + [ 17, MoveId.DIG ], + [ 21, MoveId.HEADBUTT ], + [ 24, MoveId.YAWN ], + [ 27, MoveId.TAKE_DOWN ], + [ 30, MoveId.WORK_UP ], + [ 32, MoveId.UPROAR ], + [ 35, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.OINKOLOGNE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 5, MoveId.DISARMING_VOICE ], + [ 8, MoveId.ECHOED_VOICE ], + [ 12, MoveId.MUD_SHOT ], + [ 15, MoveId.COVET ], + [ 17, MoveId.DIG ], + [ 23, MoveId.HEADBUTT ], + [ 26, MoveId.TAKE_DOWN ], + [ 27, MoveId.YAWN ], + [ 34, MoveId.WORK_UP ], + [ 38, MoveId.UPROAR ], + [ 42, MoveId.DOUBLE_EDGE ], + [ 48, MoveId.EARTH_POWER ], + [ 54, MoveId.BELCH ], + ], + [SpeciesId.TAROUNTULA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.STRING_SHOT ], + [ 5, MoveId.STRUGGLE_BUG ], + [ 8, MoveId.ASSURANCE ], + [ 11, MoveId.FEINT ], + [ 14, MoveId.BUG_BITE ], + [ 18, MoveId.BLOCK ], + [ 22, MoveId.COUNTER ], + [ 25, MoveId.HEADBUTT ], + [ 29, MoveId.STICKY_WEB ], + [ 33, MoveId.GASTRO_ACID ], + [ 36, MoveId.CIRCLE_THROW ], + [ 40, MoveId.THROAT_CHOP ], + [ 44, MoveId.SKITTER_SMACK ], + ], + [SpeciesId.SPIDOPS]: [ + [ EVOLVE_MOVE, MoveId.SILK_TRAP ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.STRING_SHOT ], + [ 5, MoveId.STRUGGLE_BUG ], + [ 8, MoveId.ASSURANCE ], + [ 11, MoveId.FEINT ], + [ 14, MoveId.BUG_BITE ], + [ 19, MoveId.BLOCK ], + [ 24, MoveId.COUNTER ], + [ 28, MoveId.HEADBUTT ], + [ 33, MoveId.STICKY_WEB ], + [ 37, MoveId.GASTRO_ACID ], + [ 41, MoveId.CIRCLE_THROW ], + [ 45, MoveId.THROAT_CHOP ], + [ 49, MoveId.SKITTER_SMACK ], + ], + [SpeciesId.NYMBLE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 4, MoveId.STRUGGLE_BUG ], + [ 6, MoveId.ASTONISH ], + [ 9, MoveId.ASSURANCE ], + [ 11, MoveId.DOUBLE_KICK ], + [ 14, MoveId.SCREECH ], + [ 18, MoveId.ENDURE ], + [ 22, MoveId.BUG_BITE ], + [ 26, MoveId.FEINT ], + [ 30, MoveId.AGILITY ], + [ 38, MoveId.SUCKER_PUNCH ], + [ 41, MoveId.FIRST_IMPRESSION ], + ], + [SpeciesId.LOKIX]: [ + [ EVOLVE_MOVE, MoveId.LUNGE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.LOW_KICK ], + [ 1, MoveId.DETECT ], + [ 4, MoveId.STRUGGLE_BUG ], + [ 6, MoveId.ASTONISH ], + [ 9, MoveId.ASSURANCE ], + [ 11, MoveId.DOUBLE_KICK ], + [ 14, MoveId.SCREECH ], + [ 18, MoveId.ENDURE ], + [ 22, MoveId.BUG_BITE ], + [ 28, MoveId.FEINT ], + [ 32, MoveId.AGILITY ], + [ 36, MoveId.THROAT_CHOP ], + [ 40, MoveId.SUCKER_PUNCH ], + [ 44, MoveId.FIRST_IMPRESSION ], + [ 48, MoveId.BOUNCE ], + [ 53, MoveId.AXE_KICK ], + ], + [SpeciesId.PAWMI]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 3, MoveId.THUNDER_SHOCK ], + [ 6, MoveId.QUICK_ATTACK ], + [ 8, MoveId.CHARGE ], + [ 12, MoveId.NUZZLE ], + [ 15, MoveId.DIG ], + [ 19, MoveId.BITE ], + [ 23, MoveId.SPARK ], + [ 27, MoveId.THUNDER_WAVE ], + [ 31, MoveId.ENTRAINMENT ], + [ 35, MoveId.SLAM ], + [ 38, MoveId.DISCHARGE ], + [ 40, MoveId.AGILITY ], + [ 44, MoveId.WILD_CHARGE ], + ], + [SpeciesId.PAWMO]: [ + [ EVOLVE_MOVE, MoveId.ARM_THRUST ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 3, MoveId.THUNDER_SHOCK ], + [ 6, MoveId.QUICK_ATTACK ], + [ 8, MoveId.CHARGE ], + [ 12, MoveId.NUZZLE ], + [ 15, MoveId.DIG ], + [ 19, MoveId.BITE ], + [ 23, MoveId.SPARK ], + [ 27, MoveId.THUNDER_WAVE ], + [ 32, MoveId.SLAM ], + [ 38, MoveId.ENTRAINMENT ], + [ 42, MoveId.DISCHARGE ], + [ 46, MoveId.AGILITY ], + [ 52, MoveId.WILD_CHARGE ], + ], + [SpeciesId.PAWMOT]: [ + [ EVOLVE_MOVE, MoveId.REVIVAL_BLESSING ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WILD_CHARGE ], + [ 3, MoveId.THUNDER_SHOCK ], + [ 6, MoveId.QUICK_ATTACK ], + [ 8, MoveId.CHARGE ], + [ 12, MoveId.NUZZLE ], + [ 15, MoveId.DIG ], + [ 19, MoveId.BITE ], + [ 23, MoveId.SPARK ], + [ 25, MoveId.ARM_THRUST ], + [ 29, MoveId.THUNDER_WAVE ], + [ 33, MoveId.SLAM ], + [ 39, MoveId.ENTRAINMENT ], + [ 44, MoveId.CLOSE_COMBAT ], + [ 49, MoveId.DISCHARGE ], + [ 54, MoveId.AGILITY ], + [ 60, MoveId.DOUBLE_SHOCK ], + ], + [SpeciesId.TANDEMAUS]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.BABY_DOLL_EYES ], + [ 5, MoveId.ECHOED_VOICE ], + [ 8, MoveId.HELPING_HAND ], + [ 11, MoveId.SUPER_FANG ], + [ 14, MoveId.DOUBLE_HIT ], + [ 18, MoveId.BULLET_SEED ], + [ 22, MoveId.ENCORE ], + [ 26, MoveId.PLAY_ROUGH ], + [ 30, MoveId.HYPER_VOICE ], + [ 33, MoveId.CHARM ], + [ 37, MoveId.BEAT_UP ], + [ 41, MoveId.COPYCAT ], + [ 46, MoveId.POPULATION_BOMB ], + ], + [SpeciesId.MAUSHOLD]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.FOLLOW_ME ], + [ 1, MoveId.BABY_DOLL_EYES ], + [ 1, MoveId.TIDY_UP ], + [ 5, MoveId.ECHOED_VOICE ], + [ 8, MoveId.HELPING_HAND ], + [ 11, MoveId.SUPER_FANG ], + [ 14, MoveId.DOUBLE_HIT ], + [ 18, MoveId.BULLET_SEED ], + [ 22, MoveId.ENCORE ], + [ 29, MoveId.PLAY_ROUGH ], + [ 33, MoveId.HYPER_VOICE ], + [ 37, MoveId.CHARM ], + [ 41, MoveId.BEAT_UP ], + [ 46, MoveId.COPYCAT ], + [ 53, MoveId.POPULATION_BOMB ], + ], + [SpeciesId.FIDOUGH]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 3, MoveId.LICK ], + [ 6, MoveId.TAIL_WHIP ], + [ 8, MoveId.COVET ], + [ 11, MoveId.BITE ], + [ 15, MoveId.BABY_DOLL_EYES ], + [ 18, MoveId.PLAY_ROUGH ], + [ 22, MoveId.WORK_UP ], + [ 26, MoveId.BATON_PASS ], + [ 30, MoveId.ROAR ], + [ 33, MoveId.DOUBLE_EDGE ], + [ 36, MoveId.CHARM ], + [ 40, MoveId.CRUNCH ], + [ 45, MoveId.LAST_RESORT ], + ], + [SpeciesId.DACHSBUN]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 3, MoveId.LICK ], + [ 6, MoveId.TAIL_WHIP ], + [ 8, MoveId.COVET ], + [ 11, MoveId.BITE ], + [ 15, MoveId.BABY_DOLL_EYES ], + [ 18, MoveId.PLAY_ROUGH ], + [ 22, MoveId.WORK_UP ], + [ 29, MoveId.BATON_PASS ], + [ 33, MoveId.ROAR ], + [ 38, MoveId.DOUBLE_EDGE ], + [ 42, MoveId.CHARM ], + [ 47, MoveId.CRUNCH ], + [ 53, MoveId.LAST_RESORT ], + ], + [SpeciesId.SMOLIV]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SWEET_SCENT ], + [ 5, MoveId.ABSORB ], + [ 7, MoveId.GROWTH ], + [ 10, MoveId.RAZOR_LEAF ], + [ 13, MoveId.HELPING_HAND ], + [ 16, MoveId.FLAIL ], + [ 20, MoveId.MEGA_DRAIN ], + [ 23, MoveId.GRASSY_TERRAIN ], + [ 27, MoveId.SEED_BOMB ], + [ 30, MoveId.ENERGY_BALL ], + [ 34, MoveId.LEECH_SEED ], + [ 38, MoveId.TERRAIN_PULSE ], + ], + [SpeciesId.DOLLIV]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SWEET_SCENT ], + [ 5, MoveId.ABSORB ], + [ 7, MoveId.GROWTH ], + [ 10, MoveId.RAZOR_LEAF ], + [ 13, MoveId.HELPING_HAND ], + [ 16, MoveId.FLAIL ], + [ 20, MoveId.MEGA_DRAIN ], + [ 23, MoveId.GRASSY_TERRAIN ], + [ 29, MoveId.SEED_BOMB ], + [ 34, MoveId.ENERGY_BALL ], + [ 37, MoveId.LEECH_SEED ], + [ 42, MoveId.TERRAIN_PULSE ], + ], + [SpeciesId.ARBOLIVA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SAFEGUARD ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.MIRROR_COAT ], + [ 5, MoveId.ABSORB ], + [ 7, MoveId.GROWTH ], + [ 10, MoveId.RAZOR_LEAF ], + [ 13, MoveId.HELPING_HAND ], + [ 16, MoveId.FLAIL ], + [ 20, MoveId.MEGA_DRAIN ], + [ 23, MoveId.GRASSY_TERRAIN ], + [ 29, MoveId.SEED_BOMB ], + [ 34, MoveId.ENERGY_BALL ], + [ 39, MoveId.LEECH_SEED ], + [ 46, MoveId.TERRAIN_PULSE ], + [ 52, MoveId.PETAL_BLIZZARD ], + [ 58, MoveId.PETAL_DANCE ], + ], + [SpeciesId.SQUAWKABILLY]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.PECK ], + [ 1, MoveId.MIMIC ], + [ 6, MoveId.QUICK_ATTACK ], + [ 10, MoveId.TORMENT ], + [ 13, MoveId.AERIAL_ACE ], + [ 17, MoveId.FURY_ATTACK ], + [ 20, MoveId.TAUNT ], + [ 24, MoveId.UPROAR ], + [ 27, MoveId.COPYCAT ], + [ 30, MoveId.FLY ], + [ 34, MoveId.FACADE ], + [ 38, MoveId.SWAGGER ], + [ 42, MoveId.BRAVE_BIRD ], + [ 47, MoveId.ROOST ], + [ 52, MoveId.REVERSAL ], + ], + [SpeciesId.NACLI]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 5, MoveId.ROCK_THROW ], + [ 7, MoveId.MUD_SHOT ], + [ 10, MoveId.SMACK_DOWN ], + [ 13, MoveId.ROCK_POLISH ], + [ 16, MoveId.HEADBUTT ], + [ 20, MoveId.IRON_DEFENSE ], + [ 25, MoveId.RECOVER ], + [ 30, MoveId.ROCK_SLIDE ], + [ 33, MoveId.STEALTH_ROCK ], + [ 35, MoveId.HEAVY_SLAM ], + [ 40, MoveId.EARTHQUAKE ], + [ 45, MoveId.STONE_EDGE ], + ], + [SpeciesId.NACLSTACK]: [ + [ EVOLVE_MOVE, MoveId.SALT_CURE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 5, MoveId.ROCK_THROW ], + [ 7, MoveId.MUD_SHOT ], + [ 10, MoveId.SMACK_DOWN ], + [ 13, MoveId.ROCK_POLISH ], + [ 16, MoveId.HEADBUTT ], + [ 20, MoveId.IRON_DEFENSE ], + [ 30, MoveId.RECOVER ], + [ 34, MoveId.ROCK_SLIDE ], + [ 38, MoveId.STEALTH_ROCK ], + [ 41, MoveId.HEAVY_SLAM ], + [ 45, MoveId.EARTHQUAKE ], + [ 51, MoveId.STONE_EDGE ], + ], + [SpeciesId.GARGANACL]: [ + [ EVOLVE_MOVE, MoveId.HAMMER_ARM ], + [ RELEARN_MOVE, MoveId.IRON_DEFENSE ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.BLOCK ], + [ 1, MoveId.ROCK_BLAST ], + [ 1, MoveId.SMACK_DOWN ], // Previous Stage Move + [ 1, MoveId.WIDE_GUARD ], + [ 5, MoveId.ROCK_THROW ], + [ 7, MoveId.MUD_SHOT ], + [ 10, MoveId.ROCK_TOMB ], + [ 13, MoveId.ROCK_POLISH ], + [ 16, MoveId.HEADBUTT ], + [ 24, MoveId.SALT_CURE ], + [ 30, MoveId.RECOVER ], + [ 34, MoveId.ROCK_SLIDE ], + [ 40, MoveId.STEALTH_ROCK ], + [ 44, MoveId.HEAVY_SLAM ], + [ 49, MoveId.EARTHQUAKE ], + [ 54, MoveId.STONE_EDGE ], + [ 60, MoveId.EXPLOSION ], + ], + [SpeciesId.CHARCADET]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.ASTONISH ], + [ 8, MoveId.CLEAR_SMOG ], + [ 12, MoveId.FIRE_SPIN ], + [ 16, MoveId.WILL_O_WISP ], + [ 20, MoveId.NIGHT_SHADE ], + [ 24, MoveId.FLAME_CHARGE ], + [ 28, MoveId.INCINERATE ], + [ 32, MoveId.LAVA_PLUME ], + ], + [SpeciesId.ARMAROUGE]: [ + [ EVOLVE_MOVE, MoveId.PSYSHOCK ], + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.WIDE_GUARD ], + [ 1, MoveId.MYSTICAL_FIRE ], + [ 8, MoveId.CLEAR_SMOG ], + [ 12, MoveId.FIRE_SPIN ], + [ 16, MoveId.WILL_O_WISP ], + [ 20, MoveId.NIGHT_SHADE ], + [ 24, MoveId.FLAME_CHARGE ], + [ 28, MoveId.INCINERATE ], + [ 32, MoveId.LAVA_PLUME ], + [ 37, MoveId.CALM_MIND ], + [ 42, MoveId.ALLY_SWITCH ], + [ 48, MoveId.FLAMETHROWER ], + [ 56, MoveId.EXPANDING_FORCE ], + [ 62, MoveId.ARMOR_CANNON ], + ], + [SpeciesId.CERULEDGE]: [ + [ EVOLVE_MOVE, MoveId.SHADOW_CLAW ], + [ RELEARN_MOVE, MoveId.NIGHT_SLASH ], + [ RELEARN_MOVE, MoveId.SHADOW_SNEAK ], + [ RELEARN_MOVE, MoveId.QUICK_GUARD ], + [ RELEARN_MOVE, MoveId.SOLAR_BLADE ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.LEER ], + [ 1, MoveId.ASTONISH ], + [ 8, MoveId.CLEAR_SMOG ], + [ 12, MoveId.FIRE_SPIN ], + [ 16, MoveId.WILL_O_WISP ], + [ 20, MoveId.NIGHT_SHADE ], + [ 24, MoveId.FLAME_CHARGE ], + [ 28, MoveId.INCINERATE ], + [ 32, MoveId.LAVA_PLUME ], + [ 37, MoveId.SWORDS_DANCE ], + [ 42, MoveId.ALLY_SWITCH ], + [ 48, MoveId.BITTER_BLADE ], + [ 56, MoveId.PSYCHO_CUT ], + [ 62, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.TADBULB]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.MUD_SLAP ], + [ 7, MoveId.THUNDER_SHOCK ], + [ 11, MoveId.WATER_GUN ], + [ 17, MoveId.CHARGE ], + [ 21, MoveId.SPARK ], + [ 24, MoveId.MUD_SHOT ], + [ 25, MoveId.FLAIL ], + [ 32, MoveId.DISCHARGE ], + [ 36, MoveId.WEATHER_BALL ], + [ 40, MoveId.ELECTRIC_TERRAIN ], + [ 45, MoveId.SUCKER_PUNCH ], + [ 50, MoveId.ZAP_CANNON ], + ], + [SpeciesId.BELLIBOLT]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.SLACK_OFF ], + [ 7, MoveId.THUNDER_SHOCK ], + [ 11, MoveId.WATER_GUN ], + [ 17, MoveId.CHARGE ], + [ 21, MoveId.SPARK ], + [ 24, MoveId.MUD_SHOT ], + [ 25, MoveId.FLAIL ], + [ 32, MoveId.DISCHARGE ], + [ 36, MoveId.WEATHER_BALL ], + [ 40, MoveId.ELECTRIC_TERRAIN ], + [ 45, MoveId.SUCKER_PUNCH ], + [ 50, MoveId.ZAP_CANNON ], + ], + [SpeciesId.WATTREL]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.PECK ], + [ 4, MoveId.THUNDER_SHOCK ], + [ 7, MoveId.QUICK_ATTACK ], + [ 11, MoveId.PLUCK ], + [ 15, MoveId.SPARK ], + [ 19, MoveId.UPROAR ], + [ 23, MoveId.ROOST ], + [ 27, MoveId.DUAL_WINGBEAT ], + [ 32, MoveId.AGILITY ], + [ 37, MoveId.VOLT_SWITCH ], + [ 43, MoveId.DISCHARGE ], + ], + [SpeciesId.KILOWATTREL]: [ + [ EVOLVE_MOVE, MoveId.ELECTRO_BALL ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.PECK ], + [ 4, MoveId.THUNDER_SHOCK ], + [ 7, MoveId.QUICK_ATTACK ], + [ 11, MoveId.PLUCK ], + [ 15, MoveId.SPARK ], + [ 19, MoveId.UPROAR ], + [ 24, MoveId.ROOST ], + [ 30, MoveId.DUAL_WINGBEAT ], + [ 36, MoveId.AGILITY ], + [ 43, MoveId.VOLT_SWITCH ], + [ 48, MoveId.DISCHARGE ], + [ 55, MoveId.HURRICANE ], + ], + [SpeciesId.MASCHIFF]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.SCARY_FACE ], + [ 4, MoveId.LICK ], + [ 7, MoveId.SNARL ], + [ 10, MoveId.HONE_CLAWS ], + [ 14, MoveId.BITE ], + [ 18, MoveId.ROAR ], + [ 22, MoveId.HEADBUTT ], + [ 26, MoveId.PAYBACK ], + [ 31, MoveId.CRUNCH ], + [ 35, MoveId.SWAGGER ], + [ 39, MoveId.REVERSAL ], + [ 43, MoveId.JAW_LOCK ], + [ 49, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.MABOSSTIFF]: [ + [ EVOLVE_MOVE, MoveId.COMEUPPANCE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.SCARY_FACE ], + [ 4, MoveId.LICK ], + [ 7, MoveId.SNARL ], + [ 10, MoveId.HONE_CLAWS ], + [ 14, MoveId.BITE ], + [ 18, MoveId.ROAR ], + [ 22, MoveId.HEADBUTT ], + [ 26, MoveId.PAYBACK ], + [ 34, MoveId.CRUNCH ], + [ 39, MoveId.SWAGGER ], + [ 43, MoveId.REVERSAL ], + [ 48, MoveId.JAW_LOCK ], + [ 55, MoveId.DOUBLE_EDGE ], + [ 60, MoveId.OUTRAGE ], + ], + [SpeciesId.SHROODLE]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 5, MoveId.ACID_SPRAY ], + [ 8, MoveId.BITE ], + [ 8, MoveId.FURY_SWIPES ], + [ 11, MoveId.SWITCHEROO ], + [ 14, MoveId.POISON_FANG ], + [ 18, MoveId.FLATTER ], + [ 21, MoveId.SLASH ], + [ 25, MoveId.U_TURN ], + [ 29, MoveId.POISON_JAB ], + [ 33, MoveId.TAUNT ], + [ 36, MoveId.SUBSTITUTE ], + [ 40, MoveId.KNOCK_OFF ], + [ 45, MoveId.GUNK_SHOT ], + ], + [SpeciesId.GRAFAIAI]: [ + [ EVOLVE_MOVE, MoveId.DOODLE ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.BITE ], // Previous Stage Move + [ 5, MoveId.ACID_SPRAY ], + [ 8, MoveId.FURY_SWIPES ], + [ 11, MoveId.SWITCHEROO ], + [ 14, MoveId.POISON_FANG ], + [ 18, MoveId.FLATTER ], + [ 21, MoveId.SLASH ], + [ 25, MoveId.U_TURN ], + [ 33, MoveId.POISON_JAB ], + [ 37, MoveId.TAUNT ], + [ 40, MoveId.SUBSTITUTE ], + [ 45, MoveId.KNOCK_OFF ], + [ 51, MoveId.GUNK_SHOT ], + ], + [SpeciesId.BRAMBLIN]: [ + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.ROLLOUT ], + [ 1, MoveId.ASTONISH ], + [ 5, MoveId.ABSORB ], + [ 9, MoveId.RAPID_SPIN ], + [ 13, MoveId.BULLET_SEED ], + [ 17, MoveId.INFESTATION ], + [ 21, MoveId.HEX ], + [ 25, MoveId.MEGA_DRAIN ], + [ 29, MoveId.DISABLE ], + [ 35, MoveId.PHANTOM_FORCE ], + [ 40, MoveId.GIGA_DRAIN ], + [ 45, MoveId.CURSE ], + [ 50, MoveId.PAIN_SPLIT ], + [ 55, MoveId.POWER_WHIP ], + ], + [SpeciesId.BRAMBLEGHAST]: [ + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.ROLLOUT ], + [ 1, MoveId.ASTONISH ], + [ 5, MoveId.ABSORB ], + [ 9, MoveId.RAPID_SPIN ], + [ 13, MoveId.BULLET_SEED ], + [ 17, MoveId.INFESTATION ], + [ 21, MoveId.HEX ], + [ 25, MoveId.MEGA_DRAIN ], + [ 29, MoveId.DISABLE ], + [ 35, MoveId.PHANTOM_FORCE ], + [ 40, MoveId.GIGA_DRAIN ], + [ 45, MoveId.CURSE ], + [ 50, MoveId.PAIN_SPLIT ], + [ 55, MoveId.POWER_WHIP ], + ], + [SpeciesId.TOEDSCOOL]: [ + [ 1, MoveId.WRAP ], + [ 1, MoveId.MUD_SLAP ], + [ 4, MoveId.ABSORB ], + [ 8, MoveId.POISON_POWDER ], + [ 8, MoveId.STUN_SPORE ], + [ 12, MoveId.SUPERSONIC ], + [ 15, MoveId.TACKLE ], + [ 16, MoveId.MEGA_DRAIN ], + [ 20, MoveId.SCREECH ], + [ 24, MoveId.MUD_SHOT ], + [ 28, MoveId.HEX ], + [ 32, MoveId.SEED_BOMB ], + [ 36, MoveId.SPORE ], + [ 40, MoveId.GROWTH ], + [ 44, MoveId.GIGA_DRAIN ], + [ 48, MoveId.EARTH_POWER ], + [ 52, MoveId.POWER_WHIP ], + ], + [SpeciesId.TOEDSCRUEL]: [ + [ 1, MoveId.WRAP ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.REFLECT_TYPE ], + [ 4, MoveId.ABSORB ], + [ 8, MoveId.POISON_POWDER ], + [ 8, MoveId.STUN_SPORE ], + [ 12, MoveId.SUPERSONIC ], + [ 15, MoveId.TACKLE ], + [ 16, MoveId.MEGA_DRAIN ], + [ 20, MoveId.SCREECH ], + [ 24, MoveId.MUD_SHOT ], + [ 28, MoveId.HEX ], + [ 34, MoveId.SEED_BOMB ], + [ 40, MoveId.SPORE ], + [ 44, MoveId.GROWTH ], + [ 48, MoveId.GIGA_DRAIN ], + [ 54, MoveId.EARTH_POWER ], + [ 58, MoveId.POWER_WHIP ], + ], + [SpeciesId.KLAWF]: [ + [ 1, MoveId.ROCK_THROW ], + [ 6, MoveId.HARDEN ], + [ 9, MoveId.ROCK_SMASH ], + [ 13, MoveId.ROCK_TOMB ], + [ 17, MoveId.METAL_CLAW ], + [ 21, MoveId.PROTECT ], + [ 24, MoveId.ROCK_BLAST ], + [ 29, MoveId.X_SCISSOR ], + [ 33, MoveId.SWORDS_DANCE ], + [ 37, MoveId.FLAIL ], + [ 42, MoveId.ROCK_SLIDE ], + [ 47, MoveId.HIGH_HORSEPOWER ], + [ 51, MoveId.IRON_DEFENSE ], + [ 56, MoveId.GUILLOTINE ], + ], + [SpeciesId.CAPSAKID]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.LEAFAGE ], + [ 4, MoveId.BITE ], + [ 10, MoveId.GROWTH ], + [ 13, MoveId.RAZOR_LEAF ], + [ 17, MoveId.SUNNY_DAY ], + [ 21, MoveId.BULLET_SEED ], + [ 24, MoveId.HEADBUTT ], + [ 28, MoveId.ZEN_HEADBUTT ], + [ 38, MoveId.CRUNCH ], + [ 44, MoveId.SEED_BOMB ], + [ 48, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.SCOVILLAIN]: [ + [ EVOLVE_MOVE, MoveId.FLAMETHROWER ], + [ EVOLVE_MOVE, MoveId.SPICY_EXTRACT ], + [ 1, MoveId.LEER ], + [ 1, MoveId.FIRE_FANG ], + [ 1, MoveId.LEAFAGE ], + [ 4, MoveId.BITE ], + [ 10, MoveId.GROWTH ], + [ 13, MoveId.RAZOR_LEAF ], + [ 17, MoveId.SUNNY_DAY ], + [ 21, MoveId.BULLET_SEED ], + [ 24, MoveId.HEADBUTT ], + [ 28, MoveId.ZEN_HEADBUTT ], + [ 33, MoveId.WORRY_SEED ], + [ 38, MoveId.CRUNCH ], + [ 44, MoveId.SEED_BOMB ], + [ 48, MoveId.SOLAR_BEAM ], + [ 48, MoveId.OVERHEAT ], + ], + [SpeciesId.RELLOR]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DEFENSE_CURL ], + [ 4, MoveId.SAND_ATTACK ], + [ 7, MoveId.STRUGGLE_BUG ], + [ 11, MoveId.ROLLOUT ], + [ 15, MoveId.MUD_SHOT ], + [ 20, MoveId.BUG_BITE ], + [ 24, MoveId.TAKE_DOWN ], + [ 29, MoveId.DIG ], + [ 35, MoveId.LUNGE ], + ], + [SpeciesId.RABSCA]: [ + [ EVOLVE_MOVE, MoveId.REVIVAL_BLESSING ], + [ RELEARN_MOVE, MoveId.SAFEGUARD ], + [ RELEARN_MOVE, MoveId.PSYCH_UP ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.MUD_SHOT ], // Previous Stage Move + [ 1, MoveId.DIG ], // Previous Stage Move + [ 4, MoveId.SAND_ATTACK ], + [ 7, MoveId.STRUGGLE_BUG ], + [ 11, MoveId.ROLLOUT ], + [ 15, MoveId.PSYBEAM ], + [ 20, MoveId.BUG_BITE ], + [ 24, MoveId.TAKE_DOWN ], + [ 29, MoveId.EXTRASENSORY ], + [ 35, MoveId.LUNGE ], + [ 40, MoveId.POWER_SWAP ], + [ 40, MoveId.GUARD_SWAP ], + [ 40, MoveId.SPEED_SWAP ], + [ 45, MoveId.BUG_BUZZ ], + [ 50, MoveId.PSYCHIC ], + ], + [SpeciesId.FLITTLE]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.PECK ], + [ 5, MoveId.CONFUSION ], + [ 8, MoveId.BABY_DOLL_EYES ], + [ 11, MoveId.DISARMING_VOICE ], + [ 15, MoveId.QUICK_ATTACK ], + [ 19, MoveId.PSYBEAM ], + [ 24, MoveId.PLUCK ], + [ 29, MoveId.AGILITY ], + [ 34, MoveId.UPROAR ], + ], + [SpeciesId.ESPATHRA]: [ + [ EVOLVE_MOVE, MoveId.LUMINA_CRASH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.PECK ], + [ 1, MoveId.DRILL_PECK ], + [ 1, MoveId.FEATHER_DANCE ], + [ 5, MoveId.CONFUSION ], + [ 8, MoveId.BABY_DOLL_EYES ], + [ 11, MoveId.DISARMING_VOICE ], + [ 15, MoveId.QUICK_ATTACK ], + [ 19, MoveId.PSYBEAM ], + [ 24, MoveId.PLUCK ], + [ 29, MoveId.AGILITY ], + [ 34, MoveId.UPROAR ], + [ 43, MoveId.DAZZLING_GLEAM ], + [ 49, MoveId.PSYCHIC ], + [ 54, MoveId.LAST_RESORT ], + ], + [SpeciesId.TINKATINK]: [ + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.FAIRY_WIND ], + [ 5, MoveId.BABY_DOLL_EYES ], + [ 8, MoveId.METAL_CLAW ], + [ 11, MoveId.COVET ], + [ 14, MoveId.ROCK_SMASH ], + [ 17, MoveId.DRAINING_KISS ], + [ 21, MoveId.SWEET_KISS ], + [ 24, MoveId.BRUTAL_SWING ], + [ 27, MoveId.SLAM ], + [ 31, MoveId.FLASH_CANNON ], + [ 35, MoveId.PLAY_ROUGH ], + [ 39, MoveId.FAKE_OUT ], + [ 43, MoveId.FLATTER ], + [ 47, MoveId.SKITTER_SMACK ], + [ 52, MoveId.KNOCK_OFF ], + ], + [SpeciesId.TINKATUFF]: [ + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.FAIRY_WIND ], + [ 5, MoveId.BABY_DOLL_EYES ], + [ 8, MoveId.METAL_CLAW ], + [ 11, MoveId.COVET ], + [ 14, MoveId.ROCK_SMASH ], + [ 17, MoveId.DRAINING_KISS ], + [ 21, MoveId.SWEET_KISS ], + [ 24, MoveId.BRUTAL_SWING ], + [ 27, MoveId.SLAM ], + [ 31, MoveId.FLASH_CANNON ], + [ 35, MoveId.PLAY_ROUGH ], + [ 39, MoveId.FAKE_OUT ], + [ 43, MoveId.FLATTER ], + [ 47, MoveId.SKITTER_SMACK ], + [ 52, MoveId.KNOCK_OFF ], + ], + [SpeciesId.TINKATON]: [ + [ EVOLVE_MOVE, MoveId.GIGATON_HAMMER ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.FAIRY_WIND ], + [ 5, MoveId.BABY_DOLL_EYES ], + [ 8, MoveId.METAL_CLAW ], + [ 11, MoveId.COVET ], + [ 14, MoveId.ROCK_SMASH ], + [ 17, MoveId.DRAINING_KISS ], + [ 21, MoveId.SWEET_KISS ], + [ 24, MoveId.BRUTAL_SWING ], + [ 27, MoveId.SLAM ], + [ 31, MoveId.FLASH_CANNON ], + [ 35, MoveId.PLAY_ROUGH ], + [ 39, MoveId.FAKE_OUT ], + [ 43, MoveId.FLATTER ], + [ 47, MoveId.SKITTER_SMACK ], + [ 52, MoveId.KNOCK_OFF ], + ], + [SpeciesId.WIGLETT]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.WATER_GUN ], + [ 4, MoveId.MUD_SLAP ], + [ 8, MoveId.WRAP ], + [ 12, MoveId.AQUA_JET ], + [ 20, MoveId.SLAM ], + [ 20, MoveId.WATER_PULSE ], + [ 24, MoveId.HEADBUTT ], + [ 28, MoveId.DIG ], + [ 32, MoveId.SUCKER_PUNCH ], + [ 36, MoveId.THROAT_CHOP ], + [ 40, MoveId.LIQUIDATION ], + ], + [SpeciesId.WUGTRIO]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.WRAP ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.MUD_SLAP ], + [ 12, MoveId.AQUA_JET ], + [ 16, MoveId.SLAM ], + [ 20, MoveId.WATER_PULSE ], + [ 24, MoveId.HEADBUTT ], + [ 30, MoveId.TRIPLE_DIVE ], + [ 36, MoveId.DIG ], + [ 42, MoveId.SUCKER_PUNCH ], + [ 48, MoveId.THROAT_CHOP ], + [ 54, MoveId.LIQUIDATION ], + ], + [SpeciesId.BOMBIRDIER]: [ + [ 1, MoveId.WING_ATTACK ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 1, MoveId.MEMENTO ], + [ 1, MoveId.HONE_CLAWS ], + [ 7, MoveId.THIEF ], + [ 11, MoveId.ROCK_THROW ], + [ 16, MoveId.WHIRLWIND ], + [ 20, MoveId.PLUCK ], + [ 24, MoveId.TORMENT ], + [ 29, MoveId.ROCK_TOMB ], + [ 36, MoveId.PAYBACK ], + [ 42, MoveId.DUAL_WINGBEAT ], + [ 47, MoveId.ROCK_SLIDE ], + [ 53, MoveId.KNOCK_OFF ], + [ 60, MoveId.PARTING_SHOT ], + ], + [SpeciesId.FINIZEN]: [ + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.WATER_GUN ], + [ 7, MoveId.ASTONISH ], + [ 10, MoveId.FOCUS_ENERGY ], + [ 13, MoveId.AQUA_JET ], + [ 17, MoveId.DOUBLE_HIT ], + [ 21, MoveId.DIVE ], + [ 25, MoveId.CHARM ], + [ 29, MoveId.ACROBATICS ], + [ 34, MoveId.ENCORE ], + [ 39, MoveId.AQUA_TAIL ], + [ 44, MoveId.MIST ], + [ 50, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.PALAFIN]: [ + [ EVOLVE_MOVE, MoveId.FLIP_TURN ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.JET_PUNCH ], + [ 7, MoveId.ASTONISH ], + [ 10, MoveId.FOCUS_ENERGY ], + [ 13, MoveId.AQUA_JET ], + [ 17, MoveId.DOUBLE_HIT ], + [ 21, MoveId.DIVE ], + [ 25, MoveId.CHARM ], + [ 29, MoveId.ACROBATICS ], + [ 34, MoveId.ENCORE ], + [ 39, MoveId.AQUA_TAIL ], + [ 44, MoveId.MIST ], + [ 50, MoveId.HYDRO_PUMP ], + [ 55, MoveId.FOCUS_PUNCH ], + [ 61, MoveId.WAVE_CRASH ], + ], + [SpeciesId.VAROOM]: [ + [ 1, MoveId.LICK ], + [ 1, MoveId.POISON_GAS ], + [ 4, MoveId.SMOG ], + [ 7, MoveId.TAUNT ], + [ 10, MoveId.ASSURANCE ], + [ 13, MoveId.SLUDGE ], + [ 17, MoveId.GYRO_BALL ], + [ 21, MoveId.HEADBUTT ], + [ 25, MoveId.SCREECH ], + [ 28, MoveId.IRON_HEAD ], + [ 32, MoveId.SWAGGER ], + [ 36, MoveId.POISON_JAB ], + [ 41, MoveId.UPROAR ], + [ 46, MoveId.SPIN_OUT ], + [ 50, MoveId.GUNK_SHOT ], + ], + [SpeciesId.REVAVROOM]: [ + [ EVOLVE_MOVE, MoveId.SHIFT_GEAR ], + [ 1, MoveId.LICK ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.MAGNET_RISE ], + [ 4, MoveId.SMOG ], + [ 7, MoveId.TAUNT ], + [ 10, MoveId.ASSURANCE ], + [ 13, MoveId.SLUDGE ], + [ 17, MoveId.GYRO_BALL ], + [ 21, MoveId.HEADBUTT ], + [ 25, MoveId.SCREECH ], + [ 28, MoveId.IRON_HEAD ], + [ 32, MoveId.SWAGGER ], + [ 36, MoveId.POISON_JAB ], + [ 46, MoveId.UPROAR ], + [ 52, MoveId.SPIN_OUT ], + [ 58, MoveId.GUNK_SHOT ], + ], + [SpeciesId.CYCLIZAR]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 7, MoveId.RAPID_SPIN ], + [ 11, MoveId.TAUNT ], + [ 14, MoveId.BREAKING_SWIPE ], + [ 18, MoveId.QUICK_ATTACK ], + [ 23, MoveId.BITE ], + [ 27, MoveId.U_TURN ], + [ 31, MoveId.SHED_TAIL ], + [ 36, MoveId.DRAGON_CLAW ], + [ 40, MoveId.SHIFT_GEAR ], + [ 45, MoveId.DRAGON_PULSE ], + [ 51, MoveId.DOUBLE_EDGE ], + [ 57, MoveId.DRAGON_RUSH ], + ], + [SpeciesId.ORTHWORM]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WRAP ], + [ 1, MoveId.HARDEN ], + [ 7, MoveId.MUD_SLAP ], + [ 12, MoveId.SMACK_DOWN ], + [ 16, MoveId.BULLDOZE ], + [ 21, MoveId.IRON_HEAD ], + [ 26, MoveId.TAKE_DOWN ], + [ 30, MoveId.DIG ], + [ 34, MoveId.SANDSTORM ], + [ 38, MoveId.IRON_DEFENSE ], + [ 43, MoveId.IRON_TAIL ], + [ 47, MoveId.EARTHQUAKE ], + [ 52, MoveId.SHED_TAIL ], + ], + [SpeciesId.GLIMMET]: [ + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.SMACK_DOWN ], + [ 7, MoveId.ACID_SPRAY ], + [ 11, MoveId.ANCIENT_POWER ], + [ 15, MoveId.ROCK_POLISH ], + [ 18, MoveId.STEALTH_ROCK ], + [ 22, MoveId.VENOSHOCK ], + [ 26, MoveId.SANDSTORM ], + [ 29, MoveId.SELF_DESTRUCT ], + [ 33, MoveId.ROCK_SLIDE ], + [ 37, MoveId.POWER_GEM ], + [ 41, MoveId.ACID_ARMOR ], + [ 46, MoveId.SLUDGE_WAVE ], + ], + [SpeciesId.GLIMMORA]: [ + [ EVOLVE_MOVE, MoveId.MORTAL_SPIN ], + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.TOXIC_SPIKES ], + [ 1, MoveId.SMACK_DOWN ], + [ 1, MoveId.SPIKY_SHIELD ], + [ 7, MoveId.ACID_SPRAY ], + [ 11, MoveId.ANCIENT_POWER ], + [ 15, MoveId.ROCK_POLISH ], + [ 18, MoveId.STEALTH_ROCK ], + [ 22, MoveId.VENOSHOCK ], + [ 26, MoveId.SANDSTORM ], + [ 29, MoveId.SELF_DESTRUCT ], + [ 33, MoveId.ROCK_SLIDE ], + [ 39, MoveId.POWER_GEM ], + [ 44, MoveId.ACID_ARMOR ], + [ 50, MoveId.SLUDGE_WAVE ], + ], + [SpeciesId.GREAVARD]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 3, MoveId.LICK ], + [ 6, MoveId.TAIL_WHIP ], + [ 6, MoveId.BITE ], + [ 9, MoveId.ROAR ], + [ 12, MoveId.HEADBUTT ], + [ 16, MoveId.DIG ], + [ 24, MoveId.REST ], + [ 28, MoveId.CRUNCH ], + [ 32, MoveId.PLAY_ROUGH ], + [ 37, MoveId.HELPING_HAND ], + [ 41, MoveId.PHANTOM_FORCE ], + [ 46, MoveId.CHARM ], + [ 52, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.HOUNDSTONE]: [ + [ EVOLVE_MOVE, MoveId.LAST_RESPECTS ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 3, MoveId.LICK ], + [ 6, MoveId.TAIL_WHIP ], + [ 6, MoveId.BITE ], + [ 9, MoveId.ROAR ], + [ 12, MoveId.HEADBUTT ], + [ 16, MoveId.DIG ], + [ 24, MoveId.REST ], + [ 28, MoveId.CRUNCH ], + [ 36, MoveId.PLAY_ROUGH ], + [ 41, MoveId.HELPING_HAND ], + [ 46, MoveId.PHANTOM_FORCE ], + [ 51, MoveId.CHARM ], + [ 58, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.FLAMIGO]: [ + [ 1, MoveId.PECK ], + [ 1, MoveId.COPYCAT ], + [ 5, MoveId.DOUBLE_KICK ], + [ 9, MoveId.DETECT ], + [ 12, MoveId.WING_ATTACK ], + [ 15, MoveId.FOCUS_ENERGY ], + [ 18, MoveId.LOW_KICK ], + [ 21, MoveId.FEINT ], + [ 27, MoveId.PAYBACK ], + [ 31, MoveId.ROOST ], + [ 35, MoveId.AIR_SLASH ], + [ 39, MoveId.MEGA_KICK ], + [ 44, MoveId.WIDE_GUARD ], + [ 48, MoveId.THROAT_CHOP ], + [ 54, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.CETODDLE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.POWDER_SNOW ], + [ 6, MoveId.GROWL ], + [ 9, MoveId.ECHOED_VOICE ], + [ 12, MoveId.ICE_SHARD ], + [ 15, MoveId.REST ], + [ 19, MoveId.TAKE_DOWN ], + [ 25, MoveId.FLAIL ], + [ 27, MoveId.AVALANCHE ], + [ 31, MoveId.BOUNCE ], + [ 36, MoveId.BODY_SLAM ], + [ 40, MoveId.AMNESIA ], + [ 44, MoveId.ICE_SPINNER ], + [ 49, MoveId.DOUBLE_EDGE ], + [ 53, MoveId.BLIZZARD ], + ], + [SpeciesId.CETITAN]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.POWDER_SNOW ], + [ 6, MoveId.GROWL ], + [ 9, MoveId.ECHOED_VOICE ], + [ 12, MoveId.ICE_SHARD ], + [ 15, MoveId.REST ], + [ 19, MoveId.TAKE_DOWN ], + [ 25, MoveId.FLAIL ], + [ 27, MoveId.AVALANCHE ], + [ 31, MoveId.BOUNCE ], + [ 36, MoveId.BODY_SLAM ], + [ 40, MoveId.AMNESIA ], + [ 44, MoveId.ICE_SPINNER ], + [ 49, MoveId.DOUBLE_EDGE ], + [ 53, MoveId.BLIZZARD ], + ], + [SpeciesId.VELUZA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.AQUA_JET ], + [ 7, MoveId.PLUCK ], + [ 11, MoveId.WATER_PULSE ], + [ 15, MoveId.FOCUS_ENERGY ], + [ 20, MoveId.SLASH ], + [ 25, MoveId.AQUA_CUTTER ], + [ 30, MoveId.FILLET_AWAY ], + [ 35, MoveId.NIGHT_SLASH ], + [ 40, MoveId.PSYCHO_CUT ], + [ 45, MoveId.LIQUIDATION ], + [ 50, MoveId.CRUNCH ], + [ 55, MoveId.FINAL_GAMBIT ], + ], + [SpeciesId.DONDOZO]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.WATER_GUN ], + [ 5, MoveId.TICKLE ], + [ 10, MoveId.FLAIL ], + [ 15, MoveId.REST ], + [ 15, MoveId.SLEEP_TALK ], + [ 20, MoveId.DIVE ], + [ 25, MoveId.NOBLE_ROAR ], + [ 30, MoveId.SOAK ], + [ 35, MoveId.BODY_SLAM ], + [ 40, MoveId.AQUA_TAIL ], + [ 45, MoveId.RAIN_DANCE ], + [ 50, MoveId.ORDER_UP ], + [ 55, MoveId.HEAVY_SLAM ], + [ 60, MoveId.DOUBLE_EDGE ], + [ 65, MoveId.WAVE_CRASH ], + ], + [SpeciesId.TATSUGIRI]: [ + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.SPLASH ], + [ 6, MoveId.HARDEN ], + [ 12, MoveId.HELPING_HAND ], + [ 17, MoveId.WATER_PULSE ], + [ 23, MoveId.SOAK ], + [ 28, MoveId.TAUNT ], + [ 34, MoveId.MEMENTO ], + [ 39, MoveId.MUDDY_WATER ], + [ 43, MoveId.NASTY_PLOT ], + [ 47, MoveId.MIRROR_COAT ], + [ 52, MoveId.DRAGON_PULSE ], + ], + [SpeciesId.ANNIHILAPE]: [ + [ EVOLVE_MOVE, MoveId.SHADOW_PUNCH ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.COUNTER ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.COVET ], // Previous Stage Move + [ 1, MoveId.FLING ], + [ 5, MoveId.FURY_SWIPES ], + [ 8, MoveId.LOW_KICK ], + [ 12, MoveId.SEISMIC_TOSS ], + [ 17, MoveId.SWAGGER ], + [ 22, MoveId.CROSS_CHOP ], + [ 26, MoveId.ASSURANCE ], + [ 30, MoveId.THRASH ], + [ 35, MoveId.RAGE_FIST ], + [ 39, MoveId.CLOSE_COMBAT ], + [ 44, MoveId.SCREECH ], + [ 48, MoveId.STOMPING_TANTRUM ], + [ 53, MoveId.OUTRAGE ], + [ 57, MoveId.FINAL_GAMBIT ], + ], + [SpeciesId.CLODSIRE]: [ + [ EVOLVE_MOVE, MoveId.AMNESIA ], + [ 1, MoveId.TACKLE ], // Previous Stage Move + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.POISON_STING ], + [ 4, MoveId.TOXIC_SPIKES ], + [ 8, MoveId.MUD_SHOT ], + [ 12, MoveId.POISON_TAIL ], + [ 16, MoveId.SLAM ], + [ 21, MoveId.YAWN ], + [ 24, MoveId.POISON_JAB ], + [ 30, MoveId.SLUDGE_WAVE ], + [ 36, MoveId.MEGAHORN ], + [ 40, MoveId.TOXIC ], + [ 48, MoveId.EARTHQUAKE ], + ], + [SpeciesId.FARIGIRAF]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.POWER_SWAP ], + [ 1, MoveId.GUARD_SWAP ], + [ 5, MoveId.CONFUSION ], + [ 10, MoveId.ASSURANCE ], + [ 14, MoveId.STOMP ], + [ 19, MoveId.PSYBEAM ], + [ 23, MoveId.AGILITY ], + [ 28, MoveId.DOUBLE_HIT ], + [ 32, MoveId.TWIN_BEAM ], + [ 37, MoveId.CRUNCH ], + [ 41, MoveId.BATON_PASS ], + [ 46, MoveId.NASTY_PLOT ], + [ 50, MoveId.PSYCHIC ], + ], + [SpeciesId.DUDUNSPARCE]: [ + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.TACKLE ], // Previous Stage Move, Custom + [ 4, MoveId.MUD_SLAP ], + [ 8, MoveId.ROLLOUT ], + [ 12, MoveId.GLARE ], + [ 16, MoveId.SCREECH ], + [ 20, MoveId.ANCIENT_POWER ], + [ 24, MoveId.DRILL_RUN ], + [ 28, MoveId.YAWN ], + [ 32, MoveId.HYPER_DRILL ], + [ 36, MoveId.ROOST ], + [ 40, MoveId.DRAGON_RUSH ], + [ 44, MoveId.COIL ], + [ 48, MoveId.DOUBLE_EDGE ], + [ 52, MoveId.ENDEAVOR ], + [ 56, MoveId.HURRICANE ], + [ 62, MoveId.BOOMBURST ], + ], + [SpeciesId.KINGAMBIT]: [ + [ EVOLVE_MOVE, MoveId.KOWTOW_CLEAVE ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.METAL_BURST ], + [ 15, MoveId.TORMENT ], + [ 20, MoveId.SCARY_FACE ], + [ 25, MoveId.ASSURANCE ], + [ 30, MoveId.METAL_SOUND ], + [ 35, MoveId.SLASH ], + [ 40, MoveId.NIGHT_SLASH ], + [ 45, MoveId.IRON_DEFENSE ], + [ 50, MoveId.RETALIATE ], + [ 57, MoveId.IRON_HEAD ], + [ 64, MoveId.SWORDS_DANCE ], + [ 71, MoveId.GUILLOTINE ], + ], + [SpeciesId.GREAT_TUSK]: [ + [ 1, MoveId.HORN_ATTACK ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.ROLLOUT ], + [ 1, MoveId.SUNNY_DAY ], + [ 7, MoveId.BULLDOZE ], + [ 14, MoveId.TAUNT ], + [ 21, MoveId.RAPID_SPIN ], + [ 28, MoveId.BRICK_BREAK ], + [ 35, MoveId.STOMPING_TANTRUM ], + [ 42, MoveId.KNOCK_OFF ], + [ 49, MoveId.EARTHQUAKE ], + [ 56, MoveId.GIGA_IMPACT ], + [ 63, MoveId.CLOSE_COMBAT ], + [ 70, MoveId.ENDEAVOR ], + [ 77, MoveId.MEGAHORN ], + [ 84, MoveId.HEAD_SMASH ], + [ 91, MoveId.HEADLONG_RUSH ], + ], + [SpeciesId.SCREAM_TAIL]: [ + [ RELEARN_MOVE, MoveId.SUNNY_DAY ], + [ 1, MoveId.POUND ], + [ 1, MoveId.SING ], + [ 1, MoveId.DISABLE ], + [ 7, MoveId.HOWL ], + [ 14, MoveId.NOBLE_ROAR ], + [ 21, MoveId.BITE ], + [ 28, MoveId.BODY_SLAM ], + [ 35, MoveId.REST ], + [ 42, MoveId.PLAY_ROUGH ], + [ 49, MoveId.HYPER_VOICE ], + [ 56, MoveId.PSYCHIC_FANGS ], + [ 63, MoveId.CRUNCH ], + [ 70, MoveId.WISH ], + [ 77, MoveId.GYRO_BALL ], + [ 84, MoveId.PERISH_SONG ], + [ 91, MoveId.BOOMBURST ], + ], + [SpeciesId.BRUTE_BONNET]: [ + [ RELEARN_MOVE, MoveId.SUNNY_DAY ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.ASTONISH ], + [ 7, MoveId.STUN_SPORE ], + [ 14, MoveId.MEGA_DRAIN ], + [ 21, MoveId.SYNTHESIS ], + [ 28, MoveId.CLEAR_SMOG ], + [ 35, MoveId.PAYBACK ], + [ 42, MoveId.THRASH ], + [ 49, MoveId.GIGA_DRAIN ], + [ 56, MoveId.SUCKER_PUNCH ], + [ 63, MoveId.SPORE ], + [ 70, MoveId.INGRAIN ], + [ 77, MoveId.RAGE_POWDER ], + [ 91, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.FLUTTER_MANE]: [ + [ RELEARN_MOVE, MoveId.SUNNY_DAY ], + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.SPITE ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.PSYBEAM ], // Custom, moved from 7 to 1 + [ 14, MoveId.MEAN_LOOK ], + [ 21, MoveId.MEMENTO ], + [ 28, MoveId.WISH ], + [ 35, MoveId.DAZZLING_GLEAM ], + [ 42, MoveId.SHADOW_BALL ], + [ 49, MoveId.MYSTICAL_FIRE ], + [ 56, MoveId.POWER_GEM ], + [ 63, MoveId.PSYSHOCK ], + [ 70, MoveId.PHANTOM_FORCE ], + [ 77, MoveId.PAIN_SPLIT ], + [ 84, MoveId.MOONBLAST ], + [ 91, MoveId.PERISH_SONG ], + ], + [SpeciesId.SLITHER_WING]: [ + [ RELEARN_MOVE, MoveId.SUNNY_DAY ], + [ 1, MoveId.GUST ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.BUG_BITE ], + [ 7, MoveId.POISON_POWDER ], + [ 7, MoveId.STUN_SPORE ], + [ 14, MoveId.FLAME_CHARGE ], + [ 21, MoveId.STOMP ], + [ 28, MoveId.LOW_SWEEP ], + [ 35, MoveId.MORNING_SUN ], + [ 42, MoveId.LUNGE ], + [ 49, MoveId.SUPERPOWER ], + [ 56, MoveId.BULK_UP ], + [ 63, MoveId.DUAL_WINGBEAT ], + [ 70, MoveId.FIRST_IMPRESSION ], + [ 77, MoveId.WHIRLWIND ], + [ 84, MoveId.LEECH_LIFE ], + [ 91, MoveId.THRASH ], + ], + [SpeciesId.SANDY_SHOCKS]: [ + [ RELEARN_MOVE, MoveId.SUNNY_DAY ], + [ 1, MoveId.SUPERSONIC ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.ELECTRIC_TERRAIN ], + [ 7, MoveId.SPARK ], + [ 14, MoveId.BULLDOZE ], + [ 21, MoveId.CHARGE_BEAM ], + [ 28, MoveId.TRI_ATTACK ], + [ 35, MoveId.SCREECH ], + [ 42, MoveId.HEAVY_SLAM ], + [ 49, MoveId.METAL_SOUND ], + [ 56, MoveId.DISCHARGE ], + [ 63, MoveId.EARTH_POWER ], + [ 70, MoveId.MIRROR_COAT ], + [ 77, MoveId.GRAVITY ], + [ 84, MoveId.ZAP_CANNON ], + [ 91, MoveId.MAGNETIC_FLUX ], + ], + [SpeciesId.IRON_TREADS]: [ + [ 1, MoveId.HORN_ATTACK ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.ROLLOUT ], + [ 1, MoveId.ELECTRIC_TERRAIN ], + [ 7, MoveId.BULLDOZE ], + [ 21, MoveId.RAPID_SPIN ], + [ 28, MoveId.IRON_HEAD ], + [ 35, MoveId.STOMPING_TANTRUM ], + [ 42, MoveId.KNOCK_OFF ], + [ 49, MoveId.EARTHQUAKE ], + [ 56, MoveId.HEAVY_SLAM ], + [ 63, MoveId.WILD_CHARGE ], + [ 70, MoveId.ENDEAVOR ], + [ 77, MoveId.MEGAHORN ], + [ 84, MoveId.GIGA_IMPACT ], + [ 91, MoveId.STEEL_ROLLER ], + ], + [SpeciesId.IRON_BUNDLE]: [ + [ RELEARN_MOVE, MoveId.ELECTRIC_TERRAIN ], + [ 1, MoveId.PRESENT ], + [ 1, MoveId.WATER_GUN ], // Custom + [ 7, MoveId.POWDER_SNOW ], + [ 14, MoveId.WHIRLPOOL ], + [ 21, MoveId.TAKE_DOWN ], + [ 28, MoveId.DRILL_PECK ], + [ 35, MoveId.HELPING_HAND ], + [ 42, MoveId.FREEZE_DRY ], + [ 49, MoveId.FLIP_TURN ], + [ 56, MoveId.ICE_BEAM ], + [ 63, MoveId.AGILITY ], + [ 70, MoveId.SNOWSCAPE ], + [ 77, MoveId.HYDRO_PUMP ], + [ 84, MoveId.AURORA_VEIL ], + [ 91, MoveId.BLIZZARD ], + ], + [SpeciesId.IRON_HANDS]: [ + [ RELEARN_MOVE, MoveId.ELECTRIC_TERRAIN ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.ARM_THRUST ], + [ 7, MoveId.FAKE_OUT ], + [ 14, MoveId.WHIRLWIND ], + [ 21, MoveId.THUNDER_PUNCH ], + [ 28, MoveId.SLAM ], + [ 35, MoveId.FORCE_PALM ], + [ 42, MoveId.SEISMIC_TOSS ], + [ 49, MoveId.CHARGE ], + [ 56, MoveId.WILD_CHARGE ], + [ 63, MoveId.CLOSE_COMBAT ], + [ 70, MoveId.DETECT ], + [ 77, MoveId.HEAVY_SLAM ], + [ 84, MoveId.BELLY_DRUM ], + [ 91, MoveId.FOCUS_PUNCH ], + ], + [SpeciesId.IRON_JUGULIS]: [ + [ RELEARN_MOVE, MoveId.ELECTRIC_TERRAIN ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.TRI_ATTACK ], + [ 1, MoveId.AIR_CUTTER ], + [ 1, MoveId.WORK_UP ], + [ 1, MoveId.ELECTRIC_TERRAIN ], + [ 7, MoveId.ROAR ], + [ 14, MoveId.ASSURANCE ], + [ 21, MoveId.DRAGON_BREATH ], + [ 28, MoveId.SNARL ], + [ 35, MoveId.CRUNCH ], + [ 42, MoveId.HYPER_VOICE ], + [ 56, MoveId.AIR_SLASH ], + [ 63, MoveId.KNOCK_OFF ], + [ 70, MoveId.DARK_PULSE ], + [ 77, MoveId.OUTRAGE ], + [ 84, MoveId.DRAGON_PULSE ], + [ 91, MoveId.HYPER_BEAM ], + ], + [SpeciesId.IRON_MOTH]: [ + [ RELEARN_MOVE, MoveId.ELECTRIC_TERRAIN ], + [ 1, MoveId.GUST ], + [ 1, MoveId.WHIRLWIND ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.ACID_SPRAY ], + [ 7, MoveId.STRUGGLE_BUG ], + [ 14, MoveId.FIRE_SPIN ], + [ 21, MoveId.TAKE_DOWN ], + [ 28, MoveId.LUNGE ], + [ 35, MoveId.SCREECH ], + [ 42, MoveId.DISCHARGE ], + [ 49, MoveId.SLUDGE_WAVE ], + [ 56, MoveId.FIERY_DANCE ], + [ 63, MoveId.METAL_SOUND ], + [ 70, MoveId.MORNING_SUN ], + [ 77, MoveId.HURRICANE ], + [ 84, MoveId.BUG_BUZZ ], + [ 91, MoveId.OVERHEAT ], + ], + [SpeciesId.IRON_THORNS]: [ + [ RELEARN_MOVE, MoveId.ELECTRIC_TERRAIN ], + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.IRON_DEFENSE ], + [ 1, MoveId.THUNDER_FANG ], + [ 1, MoveId.ICE_FANG ], + [ 1, MoveId.FIRE_FANG ], + [ 7, MoveId.SCREECH ], + [ 21, MoveId.ROCK_TOMB ], + [ 28, MoveId.BITE ], + [ 35, MoveId.CHARGE ], + [ 42, MoveId.ROCK_SLIDE ], + [ 49, MoveId.SANDSTORM ], + [ 56, MoveId.WILD_CHARGE ], + [ 63, MoveId.PIN_MISSILE ], + [ 70, MoveId.EARTHQUAKE ], + [ 77, MoveId.STEALTH_ROCK ], + [ 84, MoveId.STONE_EDGE ], + [ 91, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.FRIGIBAX]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.DRAGON_TAIL ], + [ 6, MoveId.ICY_WIND ], + [ 12, MoveId.DRAGON_BREATH ], + [ 18, MoveId.FOCUS_ENERGY ], + [ 24, MoveId.BITE ], + [ 29, MoveId.ICE_FANG ], + [ 32, MoveId.DRAGON_CLAW ], + [ 36, MoveId.TAKE_DOWN ], + [ 40, MoveId.ICE_BEAM ], + [ 44, MoveId.CRUNCH ], + [ 48, MoveId.ICICLE_CRASH ], + ], + [SpeciesId.ARCTIBAX]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.DRAGON_TAIL ], + [ 6, MoveId.ICY_WIND ], + [ 12, MoveId.DRAGON_BREATH ], + [ 18, MoveId.FOCUS_ENERGY ], + [ 24, MoveId.BITE ], + [ 29, MoveId.ICE_FANG ], + [ 32, MoveId.DRAGON_CLAW ], // Previous Stage Move, Frigibax Level + [ 40, MoveId.TAKE_DOWN ], + [ 45, MoveId.ICE_BEAM ], + [ 50, MoveId.CRUNCH ], + [ 55, MoveId.ICICLE_CRASH ], + ], + [SpeciesId.BAXCALIBUR]: [ + [ EVOLVE_MOVE, MoveId.GLAIVE_RUSH ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.ICE_SHARD ], + [ 1, MoveId.DRAGON_TAIL ], + [ 1, MoveId.BREAKING_SWIPE ], + [ 1, MoveId.SNOWSCAPE ], + [ 6, MoveId.ICY_WIND ], + [ 12, MoveId.DRAGON_BREATH ], + [ 18, MoveId.FOCUS_ENERGY ], + [ 24, MoveId.BITE ], + [ 29, MoveId.ICE_FANG ], + [ 35, MoveId.DRAGON_CLAW ], + [ 42, MoveId.TAKE_DOWN ], + [ 48, MoveId.ICE_BEAM ], + [ 55, MoveId.CRUNCH ], + [ 62, MoveId.ICICLE_CRASH ], + ], + [SpeciesId.GIMMIGHOUL]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.ASTONISH ], + ], + [SpeciesId.GHOLDENGO]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.ASTONISH ], + [ 7, MoveId.NIGHT_SHADE ], + [ 14, MoveId.CONFUSE_RAY ], + [ 21, MoveId.SUBSTITUTE ], + [ 28, MoveId.METAL_SOUND ], + [ 35, MoveId.SHADOW_BALL ], + [ 42, MoveId.RECOVER ], + [ 49, MoveId.POWER_GEM ], + [ 56, MoveId.MAKE_IT_RAIN ], + [ 63, MoveId.NASTY_PLOT ], + [ 70, MoveId.MEMENTO ], + ], + [SpeciesId.WO_CHIEN]: [ + [ 1, MoveId.ABSORB ], + [ 1, MoveId.SPITE ], + [ 1, MoveId.MEAN_LOOK ], + [ 5, MoveId.TICKLE ], + [ 10, MoveId.PAYBACK ], + [ 15, MoveId.POISON_POWDER ], + [ 15, MoveId.STUN_SPORE ], + [ 20, MoveId.MEGA_DRAIN ], + [ 25, MoveId.LEECH_SEED ], + [ 30, MoveId.GROWTH ], + [ 35, MoveId.INGRAIN ], + [ 40, MoveId.DARK_PULSE ], + [ 45, MoveId.GIGA_DRAIN ], + [ 50, MoveId.RUINATION ], + [ 55, MoveId.FOUL_PLAY ], + [ 60, MoveId.POWER_WHIP ], + [ 65, MoveId.GRASSY_TERRAIN ], + [ 70, MoveId.KNOCK_OFF ], + [ 75, MoveId.LEAF_STORM ], + ], + [SpeciesId.CHIEN_PAO]: [ + [ 1, MoveId.SPITE ], + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.MEAN_LOOK ], + [ 5, MoveId.ICY_WIND ], + [ 10, MoveId.PAYBACK ], + [ 15, MoveId.MIST ], + [ 15, MoveId.HAZE ], + [ 20, MoveId.ICE_SHARD ], + [ 25, MoveId.SWORDS_DANCE ], + [ 30, MoveId.SNOWSCAPE ], + [ 35, MoveId.NIGHT_SLASH ], + [ 40, MoveId.DARK_PULSE ], + [ 45, MoveId.ICICLE_CRASH ], + [ 50, MoveId.RUINATION ], + [ 55, MoveId.SUCKER_PUNCH ], + [ 60, MoveId.SACRED_SWORD ], + [ 65, MoveId.RECOVER ], + [ 70, MoveId.THROAT_CHOP ], + [ 75, MoveId.SHEER_COLD ], + ], + [SpeciesId.TING_LU]: [ + [ 1, MoveId.SPITE ], + [ 1, MoveId.MEAN_LOOK ], + [ 1, MoveId.SAND_TOMB ], + [ 5, MoveId.SPIKES ], + [ 10, MoveId.PAYBACK ], + [ 15, MoveId.STOMP ], + [ 20, MoveId.BULLDOZE ], + [ 25, MoveId.WHIRLWIND ], + [ 30, MoveId.TAUNT ], + [ 35, MoveId.THRASH ], + [ 40, MoveId.DARK_PULSE ], + [ 45, MoveId.STOMPING_TANTRUM ], + [ 50, MoveId.RUINATION ], + [ 55, MoveId.THROAT_CHOP ], + [ 60, MoveId.ROCK_SLIDE ], + [ 65, MoveId.MEMENTO ], + [ 70, MoveId.EARTHQUAKE ], + [ 75, MoveId.FISSURE ], + ], + [SpeciesId.CHI_YU]: [ + [ 1, MoveId.EMBER ], + [ 1, MoveId.SPITE ], + [ 1, MoveId.MEAN_LOOK ], + [ 5, MoveId.FLAME_WHEEL ], + [ 10, MoveId.PAYBACK ], + [ 15, MoveId.WILL_O_WISP ], + [ 20, MoveId.FLAME_CHARGE ], + [ 25, MoveId.INCINERATE ], + [ 30, MoveId.CONFUSE_RAY ], + [ 35, MoveId.NASTY_PLOT ], + [ 40, MoveId.DARK_PULSE ], + [ 45, MoveId.LAVA_PLUME ], + [ 50, MoveId.RUINATION ], + [ 55, MoveId.BOUNCE ], + [ 60, MoveId.SWAGGER ], + [ 65, MoveId.INFERNO ], + [ 70, MoveId.MEMENTO ], + [ 75, MoveId.OVERHEAT ], + ], + [SpeciesId.ROARING_MOON]: [ + [ RELEARN_MOVE, MoveId.SUNNY_DAY ], + [ RELEARN_MOVE, MoveId.JAW_LOCK ], + [ RELEARN_MOVE, MoveId.BREAKING_SWIPE ], + [ RELEARN_MOVE, MoveId.SCALE_SHOT ], + [ 1, MoveId.LEER ], + [ 1, MoveId.BITE ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.DRAGON_BREATH ], + [ 7, MoveId.INCINERATE ], + [ 14, MoveId.HEADBUTT ], + [ 21, MoveId.SCARY_FACE ], + [ 28, MoveId.DRAGON_CLAW ], + [ 35, MoveId.ZEN_HEADBUTT ], + [ 42, MoveId.FLAMETHROWER ], + [ 49, MoveId.NIGHT_SLASH ], + [ 56, MoveId.DRAGON_DANCE ], + [ 63, MoveId.DRAGON_RUSH ], + [ 70, MoveId.FLY ], + [ 77, MoveId.THROAT_CHOP ], + [ 84, MoveId.ROOST ], + [ 91, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.IRON_VALIANT]: [ + [ RELEARN_MOVE, MoveId.ELECTRIC_TERRAIN ], + [ 1, MoveId.DISABLE ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.FURY_CUTTER ], + [ 1, MoveId.SHADOW_SNEAK ], + [ 7, MoveId.HYPNOSIS ], + [ 14, MoveId.FEINT ], + [ 21, MoveId.FUTURE_SIGHT ], + [ 28, MoveId.DAZZLING_GLEAM ], + [ 35, MoveId.PSYCHO_CUT ], + [ 42, MoveId.NIGHT_SLASH ], + [ 49, MoveId.LEAF_BLADE ], + [ 56, MoveId.MOONBLAST ], + [ 63, MoveId.CLOSE_COMBAT ], + [ 70, MoveId.KNOCK_OFF ], + [ 77, MoveId.DESTINY_BOND ], + [ 84, MoveId.WIDE_GUARD ], + [ 84, MoveId.QUICK_GUARD ], + [ 91, MoveId.SPIRIT_BREAK ], + ], + [SpeciesId.KORAIDON]: [ + [ 1, MoveId.SUNNY_DAY ], + [ 1, MoveId.BREAKING_SWIPE ], + [ 7, MoveId.ROCK_SMASH ], + [ 14, MoveId.ANCIENT_POWER ], + [ 21, MoveId.DRAIN_PUNCH ], + [ 28, MoveId.BRICK_BREAK ], + [ 35, MoveId.AGILITY ], + [ 42, MoveId.DRAGON_CLAW ], + [ 49, MoveId.FLAMETHROWER ], + [ 56, MoveId.COLLISION_COURSE ], + [ 63, MoveId.SCREECH ], + [ 70, MoveId.COUNTER ], + [ 77, MoveId.OUTRAGE ], + [ 84, MoveId.CLOSE_COMBAT ], + [ 91, MoveId.FLARE_BLITZ ], + [ 98, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.MIRAIDON]: [ + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.ELECTRIC_TERRAIN ], + [ 7, MoveId.SHOCK_WAVE ], + [ 14, MoveId.CHARGE ], + [ 21, MoveId.PARABOLIC_CHARGE ], + [ 28, MoveId.DISCHARGE ], + [ 35, MoveId.AGILITY ], + [ 42, MoveId.DRAGON_PULSE ], + [ 56, MoveId.ELECTRO_DRIFT ], + [ 63, MoveId.METAL_SOUND ], + [ 70, MoveId.MIRROR_COAT ], + [ 77, MoveId.OUTRAGE ], + [ 84, MoveId.THUNDER ], + [ 91, MoveId.OVERHEAT ], + [ 98, MoveId.HYPER_BEAM ], + ], + [SpeciesId.WALKING_WAKE]: [ + [ RELEARN_MOVE, MoveId.SUNNY_DAY ], + [ RELEARN_MOVE, MoveId.HONE_CLAWS ], + [ 1, MoveId.LEER ], + [ 1, MoveId.ROAR ], + [ 1, MoveId.TWISTER ], + [ 1, MoveId.AQUA_JET ], + [ 7, MoveId.BITE ], + [ 14, MoveId.WATER_PULSE ], + [ 21, MoveId.NOBLE_ROAR ], + [ 28, MoveId.DRAGON_BREATH ], + [ 35, MoveId.BREAKING_SWIPE ], + [ 42, MoveId.DRAGON_RUSH ], + [ 56, MoveId.HYDRO_STEAM ], + [ 63, MoveId.DRAGON_PULSE ], + [ 70, MoveId.OUTRAGE ], + [ 77, MoveId.FLAMETHROWER ], + [ 84, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.IRON_LEAVES]: [ + [ RELEARN_MOVE, MoveId.ELECTRIC_TERRAIN ], + [ RELEARN_MOVE, MoveId.QUASH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.WORK_UP ], + [ 7, MoveId.MAGICAL_LEAF ], + [ 14, MoveId.RETALIATE ], + [ 21, MoveId.QUICK_GUARD ], + [ 28, MoveId.NIGHT_SLASH ], + [ 35, MoveId.SWORDS_DANCE ], + [ 42, MoveId.SACRED_SWORD ], + [ 49, MoveId.LEAF_BLADE ], + [ 56, MoveId.PSYBLADE ], + [ 63, MoveId.CLOSE_COMBAT ], + [ 70, MoveId.IMPRISON ], + [ 77, MoveId.MEGAHORN ], + [ 84, MoveId.ALLY_SWITCH ], + [ 91, MoveId.SOLAR_BLADE ], + ], + [SpeciesId.DIPPLIN]: [ + [ EVOLVE_MOVE, MoveId.DOUBLE_HIT ], + [ RELEARN_MOVE, MoveId.DRAGON_CHEER ], // Custom + [ 1, MoveId.LEAFAGE ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.RECYCLE ], + [ 1, MoveId.ASTONISH ], + [ 4, MoveId.DRAGON_TAIL ], + [ 8, MoveId.GROWTH ], + [ 12, MoveId.DRAGON_BREATH ], + [ 16, MoveId.PROTECT ], + [ 20, MoveId.BULLET_SEED ], + [ 28, MoveId.SYRUP_BOMB ], + [ 32, MoveId.DRAGON_PULSE ], + [ 36, MoveId.RECOVER ], + [ 40, MoveId.ENERGY_BALL ], + [ 44, MoveId.SUBSTITUTE ], + ], + [SpeciesId.POLTCHAGEIST]: [ + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.ASTONISH ], + [ 5, MoveId.ABSORB ], // Custom, Moved from Level 6 to 5 + [ 12, MoveId.LIFE_DEW ], + [ 18, MoveId.FOUL_PLAY ], + [ 24, MoveId.MEGA_DRAIN ], + [ 30, MoveId.HEX ], + [ 36, MoveId.RAGE_POWDER ], + [ 42, MoveId.GIGA_DRAIN ], + [ 48, MoveId.SHADOW_BALL ], + [ 54, MoveId.MEMENTO ], + [ 60, MoveId.LEAF_STORM ], + ], + [SpeciesId.SINISTCHA]: [ + [ EVOLVE_MOVE, MoveId.MATCHA_GOTCHA ], + [ RELEARN_MOVE, MoveId.GIGA_DRAIN ], // Previous Stage Move + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.ASTONISH ], + [ 6, MoveId.ABSORB ], + [ 12, MoveId.LIFE_DEW ], + [ 18, MoveId.FOUL_PLAY ], + [ 24, MoveId.MEGA_DRAIN ], + [ 30, MoveId.HEX ], + [ 36, MoveId.RAGE_POWDER ], + [ 42, MoveId.STRENGTH_SAP ], + [ 48, MoveId.SHADOW_BALL ], + [ 54, MoveId.MEMENTO ], + [ 60, MoveId.LEAF_STORM ], + ], + [SpeciesId.OKIDOGI]: [ + [ 1, MoveId.BITE ], + [ 1, MoveId.LOW_KICK ], + [ 1, MoveId.BULK_UP ], + [ 8, MoveId.HOWL ], + [ 16, MoveId.POISON_FANG ], + [ 24, MoveId.FORCE_PALM ], + [ 32, MoveId.COUNTER ], + [ 40, MoveId.POISON_JAB ], + [ 48, MoveId.BRUTAL_SWING ], + [ 56, MoveId.CRUNCH ], + [ 64, MoveId.SUPERPOWER ], + [ 72, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.MUNKIDORI]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.FLATTER ], + [ 8, MoveId.HELPING_HAND ], + [ 16, MoveId.PSYBEAM ], + [ 24, MoveId.CLEAR_SMOG ], + [ 32, MoveId.POISON_JAB ], + [ 40, MoveId.PSYCHIC ], + [ 48, MoveId.SLUDGE_WAVE ], + [ 56, MoveId.NASTY_PLOT ], + [ 64, MoveId.FUTURE_SIGHT ], + [ 72, MoveId.PARTING_SHOT ], + ], + [SpeciesId.FEZANDIPITI]: [ + [ 1, MoveId.DOUBLE_KICK ], + [ 1, MoveId.PECK ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.DISARMING_VOICE ], + [ 8, MoveId.QUICK_ATTACK ], + [ 16, MoveId.ATTRACT ], + [ 24, MoveId.WING_ATTACK ], + [ 32, MoveId.CROSS_POISON ], + [ 40, MoveId.TAIL_SLAP ], + [ 48, MoveId.BEAT_UP ], + [ 56, MoveId.SWAGGER ], + [ 56, MoveId.FLATTER ], + [ 64, MoveId.ROOST ], + [ 72, MoveId.MOONBLAST ], + ], + [SpeciesId.OGERPON]: [ + [ RELEARN_MOVE, MoveId.DOUBLE_KICK ], + [ RELEARN_MOVE, MoveId.COUNTER ], + [ RELEARN_MOVE, MoveId.RETALIATE ], + [ RELEARN_MOVE, MoveId.HORN_LEECH ], + [ 1, MoveId.VINE_WHIP ], + [ 1, MoveId.LEECH_SEED ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.FOLLOW_ME ], + [ 6, MoveId.FOCUS_ENERGY ], + [ 12, MoveId.GROWTH ], + [ 18, MoveId.SLAM ], + [ 24, MoveId.LOW_SWEEP ], + [ 30, MoveId.IVY_CUDGEL ], + [ 36, MoveId.THROAT_CHOP ], + [ 42, MoveId.SYNTHESIS ], + [ 48, MoveId.SPIKY_SHIELD ], + [ 54, MoveId.POWER_WHIP ], + [ 60, MoveId.SUPERPOWER ], + [ 66, MoveId.WOOD_HAMMER ], + ], + [SpeciesId.ARCHALUDON]: [ + [ EVOLVE_MOVE, MoveId.ELECTRO_SHOT ], + [ RELEARN_MOVE, MoveId.LASER_FOCUS ], // Previous Stage Move + [ 1, MoveId.LEER ], + [ 1, MoveId.METAL_CLAW ], + [ 6, MoveId.ROCK_SMASH ], + [ 12, MoveId.HONE_CLAWS ], + [ 18, MoveId.METAL_SOUND ], + [ 24, MoveId.BREAKING_SWIPE ], + [ 30, MoveId.DRAGON_TAIL ], + [ 36, MoveId.IRON_DEFENSE ], + [ 42, MoveId.FOCUS_ENERGY ], + [ 48, MoveId.DRAGON_CLAW ], + [ 54, MoveId.FLASH_CANNON ], + [ 60, MoveId.METAL_BURST ], + [ 66, MoveId.HYPER_BEAM ], + ], + [SpeciesId.HYDRAPPLE]: [ + [ EVOLVE_MOVE, MoveId.FICKLE_BEAM ], + [ RELEARN_MOVE, MoveId.YAWN ], + [ RELEARN_MOVE, MoveId.DOUBLE_HIT ], + [ RELEARN_MOVE, MoveId.INFESTATION ], + [ RELEARN_MOVE, MoveId.DRAGON_CHEER ], // Previous Stage Move, Custom + [ 1, MoveId.LEAFAGE ], // Previous Stage Move, Custom + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.SWEET_SCENT ], + [ 1, MoveId.RECYCLE ], + [ 1, MoveId.ASTONISH ], + [ 4, MoveId.DRAGON_TAIL ], + [ 8, MoveId.GROWTH ], + [ 12, MoveId.DRAGON_BREATH ], + [ 16, MoveId.PROTECT ], + [ 20, MoveId.BULLET_SEED ], + [ 28, MoveId.SYRUP_BOMB ], + [ 32, MoveId.DRAGON_PULSE ], + [ 36, MoveId.RECOVER ], + [ 40, MoveId.ENERGY_BALL ], + [ 44, MoveId.SUBSTITUTE ], + [ 54, MoveId.POWER_WHIP ], + ], + [SpeciesId.GOUGING_FIRE]: [ + [ RELEARN_MOVE, MoveId.DOUBLE_KICK ], + [ RELEARN_MOVE, MoveId.ANCIENT_POWER ], + [ RELEARN_MOVE, MoveId.NOBLE_ROAR ], + [ 1, MoveId.STOMP ], + [ 1, MoveId.LEER ], + [ 1, MoveId.INCINERATE ], + [ 1, MoveId.SUNNY_DAY ], + [ 7, MoveId.FIRE_FANG ], + [ 14, MoveId.HOWL ], + [ 21, MoveId.BITE ], + [ 28, MoveId.DRAGON_CLAW ], + [ 35, MoveId.CRUSH_CLAW ], + [ 42, MoveId.MORNING_SUN ], + [ 49, MoveId.BURNING_BULWARK ], + [ 56, MoveId.DRAGON_RUSH ], + [ 63, MoveId.FIRE_BLAST ], + [ 70, MoveId.LAVA_PLUME ], + [ 77, MoveId.OUTRAGE ], + [ 84, MoveId.FLARE_BLITZ ], + [ 91, MoveId.RAGING_FURY ], + ], + [SpeciesId.RAGING_BOLT]: [ + [ RELEARN_MOVE, MoveId.ANCIENT_POWER ], + [ 1, MoveId.TWISTER ], + [ 1, MoveId.SUNNY_DAY ], + [ 1, MoveId.SHOCK_WAVE ], + [ 1, MoveId.STOMP ], + [ 7, MoveId.CHARGE ], + [ 14, MoveId.DRAGON_BREATH ], + [ 21, MoveId.ELECTRIC_TERRAIN ], + [ 28, MoveId.DISCHARGE ], + [ 35, MoveId.DRAGON_TAIL ], + [ 42, MoveId.CALM_MIND ], + [ 49, MoveId.THUNDERCLAP ], + [ 56, MoveId.DRAGON_HAMMER ], + [ 63, MoveId.RISING_VOLTAGE ], + [ 70, MoveId.DRAGON_PULSE ], + [ 77, MoveId.ZAP_CANNON ], + [ 84, MoveId.BODY_PRESS ], + [ 91, MoveId.THUNDER ], + ], + [SpeciesId.IRON_BOULDER]: [ + [ 1, MoveId.HORN_ATTACK ], + [ 1, MoveId.LEER ], + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.ELECTRIC_TERRAIN ], + [ 7, MoveId.QUICK_ATTACK ], + [ 14, MoveId.SLASH ], + [ 21, MoveId.AGILITY ], + [ 28, MoveId.PSYCHO_CUT ], + [ 35, MoveId.COUNTER ], + [ 42, MoveId.ROCK_TOMB ], + [ 49, MoveId.SACRED_SWORD ], + [ 56, MoveId.MIGHTY_CLEAVE ], + [ 63, MoveId.SWORDS_DANCE ], + [ 70, MoveId.MEGAHORN ], + [ 77, MoveId.QUICK_GUARD ], + [ 84, MoveId.STONE_EDGE ], + [ 91, MoveId.GIGA_IMPACT ], + ], + [SpeciesId.IRON_CROWN]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.ELECTRIC_TERRAIN ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.METAL_CLAW ], + [ 7, MoveId.SMART_STRIKE ], + [ 14, MoveId.SLASH ], + [ 21, MoveId.IRON_DEFENSE ], + [ 28, MoveId.PSYSHOCK ], + [ 35, MoveId.PSYCHO_CUT ], + [ 42, MoveId.FLASH_CANNON ], + [ 49, MoveId.SACRED_SWORD ], + [ 56, MoveId.TACHYON_CUTTER ], + [ 63, MoveId.FUTURE_SIGHT ], + [ 70, MoveId.VOLT_SWITCH ], + [ 77, MoveId.QUICK_GUARD ], + [ 84, MoveId.METAL_BURST ], + [ 91, MoveId.HYPER_BEAM ], + ], + [SpeciesId.TERAPAGOS]: [ + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.TRI_ATTACK ], + [ 1, MoveId.RAPID_SPIN ], + [ 10, MoveId.ANCIENT_POWER ], + [ 20, MoveId.HEADBUTT ], + [ 30, MoveId.PROTECT ], + [ 40, MoveId.EARTH_POWER ], + [ 50, MoveId.HEAVY_SLAM ], + [ 60, MoveId.TERA_STARSTORM ], + [ 70, MoveId.DOUBLE_EDGE ], + [ 80, MoveId.ROCK_POLISH ], + [ 90, MoveId.GYRO_BALL ], + ], + [SpeciesId.PECHARUNT]: [ + [ RELEARN_MOVE, MoveId.DEFENSE_CURL ], + [ RELEARN_MOVE, MoveId.ROLLOUT ], + [ RELEARN_MOVE, MoveId.MEAN_LOOK ], + [ 1, MoveId.SMOG ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.MEMENTO ], + [ 1, MoveId.ASTONISH ], + [ 8, MoveId.WITHDRAW ], + [ 16, MoveId.DESTINY_BOND ], + [ 24, MoveId.FAKE_TEARS ], + [ 32, MoveId.PARTING_SHOT ], + [ 40, MoveId.SHADOW_BALL ], + [ 48, MoveId.MALIGNANT_CHAIN ], + [ 56, MoveId.TOXIC ], + [ 64, MoveId.NASTY_PLOT ], + [ 72, MoveId.RECOVER ], + ], + [SpeciesId.ALOLA_RATTATA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 4, MoveId.QUICK_ATTACK ], + [ 7, MoveId.FOCUS_ENERGY ], + [ 10, MoveId.BITE ], + [ 13, MoveId.PURSUIT ], + [ 16, MoveId.HYPER_FANG ], + [ 19, MoveId.ASSURANCE ], + [ 22, MoveId.CRUNCH ], + [ 25, MoveId.SUCKER_PUNCH ], + [ 28, MoveId.SUPER_FANG ], + [ 31, MoveId.DOUBLE_EDGE ], + [ 34, MoveId.ENDEAVOR ], + ], + [SpeciesId.ALOLA_RATICATE]: [ + [ EVOLVE_MOVE, MoveId.SCARY_FACE ], + [ 1, MoveId.SWORDS_DANCE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 10, MoveId.BITE ], + [ 13, MoveId.PURSUIT ], + [ 16, MoveId.HYPER_FANG ], + [ 19, MoveId.ASSURANCE ], + [ 24, MoveId.CRUNCH ], + [ 29, MoveId.SUCKER_PUNCH ], + [ 34, MoveId.SUPER_FANG ], + [ 39, MoveId.DOUBLE_EDGE ], + [ 44, MoveId.ENDEAVOR ], + ], + [SpeciesId.ALOLA_RAICHU]: [ + [ EVOLVE_MOVE, MoveId.PSYCHIC ], + [ EVOLVE_MOVE, MoveId.ZIPPY_ZAP ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.THUNDER_WAVE ], + [ 1, MoveId.THUNDER ], + [ 1, MoveId.AGILITY ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.LIGHT_SCREEN ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.SPARK ], + [ 1, MoveId.IRON_TAIL ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.DISCHARGE ], + [ 1, MoveId.ELECTRO_BALL ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.NUZZLE ], + [ 5, MoveId.THUNDERBOLT ], + [ 50, MoveId.PIKA_PAPOW ], + ], + [SpeciesId.ALOLA_SANDSHREW]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.DEFENSE_CURL ], + [ 3, MoveId.MIST ], + [ 6, MoveId.POWDER_SNOW ], + [ 9, MoveId.ROLLOUT ], + [ 12, MoveId.FURY_CUTTER ], + [ 15, MoveId.RAPID_SPIN ], + [ 18, MoveId.METAL_CLAW ], + [ 21, MoveId.SWIFT ], + [ 24, MoveId.FURY_SWIPES ], + [ 27, MoveId.IRON_DEFENSE ], + [ 30, MoveId.SLASH ], + [ 33, MoveId.IRON_HEAD ], + [ 36, MoveId.GYRO_BALL ], + [ 39, MoveId.SWORDS_DANCE ], + [ 42, MoveId.SNOWSCAPE ], + [ 45, MoveId.BLIZZARD ], + ], + [SpeciesId.ALOLA_SANDSLASH]: [ + [ EVOLVE_MOVE, MoveId.ICICLE_SPEAR ], + [ RELEARN_MOVE, MoveId.SCRATCH ], + [ RELEARN_MOVE, MoveId.MIST ], + [ RELEARN_MOVE, MoveId.BLIZZARD ], + [ RELEARN_MOVE, MoveId.DEFENSE_CURL ], + [ RELEARN_MOVE, MoveId.SWIFT ], + [ RELEARN_MOVE, MoveId.FURY_SWIPES ], + [ RELEARN_MOVE, MoveId.POWDER_SNOW ], + [ RELEARN_MOVE, MoveId.ROLLOUT ], + [ RELEARN_MOVE, MoveId.FURY_CUTTER ], + [ RELEARN_MOVE, MoveId.RAPID_SPIN ], + [ RELEARN_MOVE, MoveId.IRON_DEFENSE ], + [ RELEARN_MOVE, MoveId.GYRO_BALL ], + [ RELEARN_MOVE, MoveId.METAL_BURST ], + [ RELEARN_MOVE, MoveId.IRON_HEAD ], + [ RELEARN_MOVE, MoveId.SNOWSCAPE ], + [ 1, MoveId.ICICLE_CRASH ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.SLASH ], + [ 1, MoveId.SWORDS_DANCE ], + [ 1, MoveId.ICE_BALL ], + ], + [SpeciesId.ALOLA_VULPIX]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.POWDER_SNOW ], + [ 4, MoveId.DISABLE ], + [ 8, MoveId.ICE_SHARD ], + [ 12, MoveId.SPITE ], + [ 16, MoveId.ICY_WIND ], + [ 20, MoveId.CONFUSE_RAY ], + [ 24, MoveId.AURORA_BEAM ], + [ 28, MoveId.EXTRASENSORY ], + [ 32, MoveId.ICE_BEAM ], + [ 36, MoveId.IMPRISON ], + [ 40, MoveId.MIST ], + [ 44, MoveId.AURORA_VEIL ], + [ 48, MoveId.FREEZE_DRY ], + [ 52, MoveId.BLIZZARD ], + ], + [SpeciesId.ALOLA_NINETALES]: [ + [ EVOLVE_MOVE, MoveId.DAZZLING_GLEAM ], + [ RELEARN_MOVE, MoveId.DISABLE ], + [ RELEARN_MOVE, MoveId.MIST ], + [ RELEARN_MOVE, MoveId.ICE_BEAM ], + [ RELEARN_MOVE, MoveId.AURORA_BEAM ], + [ RELEARN_MOVE, MoveId.CONFUSE_RAY ], + [ RELEARN_MOVE, MoveId.SPITE ], + [ RELEARN_MOVE, MoveId.POWDER_SNOW ], + [ RELEARN_MOVE, MoveId.EXTRASENSORY ], + [ RELEARN_MOVE, MoveId.NASTY_PLOT ], + [ RELEARN_MOVE, MoveId.ICE_SHARD ], + [ RELEARN_MOVE, MoveId.FREEZE_DRY ], + [ RELEARN_MOVE, MoveId.AURORA_VEIL ], + [ 1, MoveId.ICY_WIND ], + [ 1, MoveId.IMPRISON ], + [ 1, MoveId.BLIZZARD ], + [ 1, MoveId.TAIL_WHIP ], + ], + [SpeciesId.ALOLA_DIGLETT]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.METAL_CLAW ], + [ 4, MoveId.GROWL ], + [ 8, MoveId.ASTONISH ], + [ 12, MoveId.MUD_SLAP ], + [ 16, MoveId.BULLDOZE ], + [ 20, MoveId.SUCKER_PUNCH ], + [ 24, MoveId.IRON_HEAD ], + [ 28, MoveId.SANDSTORM ], + [ 32, MoveId.DIG ], + [ 36, MoveId.EARTH_POWER ], + [ 40, MoveId.EARTHQUAKE ], + [ 44, MoveId.FISSURE ], + ], + [SpeciesId.ALOLA_DUGTRIO]: [ + [ EVOLVE_MOVE, MoveId.SAND_TOMB ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.TRI_ATTACK ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.ASTONISH ], + [ 1, MoveId.NIGHT_SLASH ], + [ 1, MoveId.ROTOTILLER ], + [ 12, MoveId.MUD_SLAP ], + [ 16, MoveId.BULLDOZE ], + [ 20, MoveId.SUCKER_PUNCH ], + [ 24, MoveId.IRON_HEAD ], + [ 30, MoveId.SANDSTORM ], + [ 36, MoveId.DIG ], + [ 42, MoveId.EARTH_POWER ], + [ 48, MoveId.EARTHQUAKE ], + [ 54, MoveId.FISSURE ], + ], + [SpeciesId.ALOLA_MEOWTH]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.FAKE_OUT ], + [ 4, MoveId.FEINT ], + [ 8, MoveId.SCRATCH ], + [ 12, MoveId.PAY_DAY ], + [ 16, MoveId.BITE ], + [ 20, MoveId.TAUNT ], + [ 24, MoveId.ASSURANCE ], + [ 29, MoveId.FURY_SWIPES ], + [ 32, MoveId.SCREECH ], + [ 36, MoveId.NIGHT_SLASH ], + [ 40, MoveId.NASTY_PLOT ], + [ 44, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.ALOLA_PERSIAN]: [ + [ EVOLVE_MOVE, MoveId.POWER_GEM ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.SWITCHEROO ], + [ 1, MoveId.QUASH ], + [ 12, MoveId.PAY_DAY ], + [ 16, MoveId.BITE ], + [ 20, MoveId.TAUNT ], + [ 24, MoveId.ASSURANCE ], + [ 31, MoveId.FURY_SWIPES ], + [ 36, MoveId.SCREECH ], + [ 42, MoveId.NIGHT_SLASH ], + [ 48, MoveId.NASTY_PLOT ], + [ 54, MoveId.PLAY_ROUGH ], + ], + [SpeciesId.ALOLA_GEODUDE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DEFENSE_CURL ], + [ 4, MoveId.CHARGE ], + [ 6, MoveId.ROCK_POLISH ], + [ 10, MoveId.ROLLOUT ], + [ 12, MoveId.SPARK ], + [ 16, MoveId.ROCK_THROW ], + [ 18, MoveId.SMACK_DOWN ], + [ 22, MoveId.THUNDER_PUNCH ], + [ 24, MoveId.SELF_DESTRUCT ], + [ 28, MoveId.STEALTH_ROCK ], + [ 30, MoveId.ROCK_BLAST ], + [ 34, MoveId.DISCHARGE ], + [ 36, MoveId.EXPLOSION ], + [ 40, MoveId.DOUBLE_EDGE ], + [ 42, MoveId.STONE_EDGE ], + ], + [SpeciesId.ALOLA_GRAVELER]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.CHARGE ], + [ 1, MoveId.ROCK_POLISH ], + [ 10, MoveId.ROLLOUT ], + [ 12, MoveId.SPARK ], + [ 16, MoveId.ROCK_THROW ], + [ 18, MoveId.SMACK_DOWN ], + [ 22, MoveId.THUNDER_PUNCH ], + [ 24, MoveId.SELF_DESTRUCT ], + [ 30, MoveId.STEALTH_ROCK ], + [ 34, MoveId.ROCK_BLAST ], + [ 40, MoveId.DISCHARGE ], + [ 44, MoveId.EXPLOSION ], + [ 50, MoveId.DOUBLE_EDGE ], + [ 54, MoveId.STONE_EDGE ], + ], + [SpeciesId.ALOLA_GOLEM]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DEFENSE_CURL ], + [ 1, MoveId.CHARGE ], + [ 1, MoveId.ROCK_POLISH ], + [ 1, MoveId.ROLLOUT ], // Previous Stage Move + [ 1, MoveId.HEAVY_SLAM ], + [ 12, MoveId.SPARK ], + [ 16, MoveId.ROCK_THROW ], + [ 18, MoveId.SMACK_DOWN ], + [ 22, MoveId.THUNDER_PUNCH ], + [ 24, MoveId.SELF_DESTRUCT ], + [ 30, MoveId.STEALTH_ROCK ], + [ 34, MoveId.ROCK_BLAST ], + [ 40, MoveId.DISCHARGE ], + [ 44, MoveId.EXPLOSION ], + [ 50, MoveId.DOUBLE_EDGE ], + [ 54, MoveId.STONE_EDGE ], + ], + [SpeciesId.ALOLA_GRIMER]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.POISON_GAS ], + [ 4, MoveId.HARDEN ], + [ 7, MoveId.BITE ], + [ 12, MoveId.DISABLE ], + [ 15, MoveId.ACID_SPRAY ], + [ 18, MoveId.POISON_FANG ], + [ 21, MoveId.MINIMIZE ], + [ 26, MoveId.TOXIC ], + [ 29, MoveId.KNOCK_OFF ], + [ 32, MoveId.CRUNCH ], + [ 37, MoveId.SCREECH ], + [ 40, MoveId.GUNK_SHOT ], + [ 43, MoveId.ACID_ARMOR ], + [ 46, MoveId.BELCH ], + [ 48, MoveId.MEMENTO ], + ], + [SpeciesId.ALOLA_MUK]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.BITE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.POISON_GAS ], + [ 12, MoveId.DISABLE ], + [ 15, MoveId.ACID_SPRAY ], + [ 18, MoveId.POISON_FANG ], + [ 21, MoveId.MINIMIZE ], + [ 26, MoveId.TOXIC ], + [ 29, MoveId.KNOCK_OFF ], + [ 32, MoveId.CRUNCH ], + [ 37, MoveId.SCREECH ], + [ 40, MoveId.GUNK_SHOT ], + [ 46, MoveId.ACID_ARMOR ], + [ 52, MoveId.BELCH ], + [ 57, MoveId.MEMENTO ], + ], + [SpeciesId.ALOLA_EXEGGUTOR]: [ + [ EVOLVE_MOVE, MoveId.DRAGON_HAMMER ], + [ RELEARN_MOVE, MoveId.GROWTH ], + [ 1, MoveId.BARRAGE ], + [ 1, MoveId.SEED_BOMB ], + [ 1, MoveId.PSYSHOCK ], + [ 1, MoveId.WOOD_HAMMER ], + [ 1, MoveId.LEAF_STORM ], + [ 1, MoveId.MEGA_DRAIN ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.SYNTHESIS ], + [ 1, MoveId.BULLET_SEED ], + [ 1, MoveId.GIGA_DRAIN ], + [ 1, MoveId.EXTRASENSORY ], + [ 1, MoveId.UPROAR ], + [ 1, MoveId.WORRY_SEED ], + [ 1, MoveId.SOLAR_BEAM ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.HYPNOSIS ], + [ 1, MoveId.REFLECT ], + [ 1, MoveId.LEECH_SEED ], + ], + [SpeciesId.ALOLA_MAROWAK]: [ + [ EVOLVE_MOVE, MoveId.SHADOW_BONE ], + [ 1, MoveId.BONE_CLUB ], + [ 1, MoveId.HEADBUTT ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.FIRE_SPIN ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.FALSE_SWIPE ], + [ 1, MoveId.RETALIATE ], + [ 12, MoveId.FLAME_WHEEL ], + [ 16, MoveId.HEX ], + [ 20, MoveId.FLING ], + [ 24, MoveId.STOMPING_TANTRUM ], + [ 31, MoveId.BONE_RUSH ], + [ 36, MoveId.WILL_O_WISP ], + [ 42, MoveId.ENDEAVOR ], + [ 48, MoveId.BONEMERANG ], + [ 54, MoveId.THRASH ], + [ 60, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.ETERNAL_FLOETTE]: [ + [ 1, MoveId.VINE_WHIP ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.FAIRY_WIND ], + [ 10, MoveId.LUCKY_CHANT ], + [ 15, MoveId.RAZOR_LEAF ], + [ 20, MoveId.WISH ], + [ 25, MoveId.MAGICAL_LEAF ], + [ 27, MoveId.GRASSY_TERRAIN ], + [ 33, MoveId.PETAL_BLIZZARD ], + [ 38, MoveId.AROMATHERAPY ], + [ 43, MoveId.MISTY_TERRAIN ], + [ 46, MoveId.MOONBLAST ], + [ 50, MoveId.LIGHT_OF_RUIN ], + [ 51, MoveId.PETAL_DANCE ], + [ 58, MoveId.SOLAR_BEAM ], + ], + [SpeciesId.GALAR_MEOWTH]: [ + [ 1, MoveId.GROWL ], + [ 1, MoveId.FAKE_OUT ], + [ 4, MoveId.HONE_CLAWS ], + [ 8, MoveId.SCRATCH ], + [ 12, MoveId.PAY_DAY ], + [ 16, MoveId.METAL_CLAW ], + [ 20, MoveId.TAUNT ], + [ 24, MoveId.SWAGGER ], + [ 29, MoveId.FURY_SWIPES ], + [ 32, MoveId.SCREECH ], + [ 36, MoveId.SLASH ], + [ 40, MoveId.METAL_SOUND ], + [ 44, MoveId.THRASH ], + ], + [SpeciesId.GALAR_PONYTA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 5, MoveId.TAIL_WHIP ], + [ 10, MoveId.CONFUSION ], + [ 15, MoveId.FAIRY_WIND ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.PSYBEAM ], + [ 30, MoveId.STOMP ], + [ 35, MoveId.HEAL_PULSE ], + [ 41, MoveId.TAKE_DOWN ], + [ 45, MoveId.DAZZLING_GLEAM ], + [ 50, MoveId.PSYCHIC ], + [ 55, MoveId.HEALING_WISH ], + ], + [SpeciesId.GALAR_RAPIDASH]: [ + [ EVOLVE_MOVE, MoveId.PSYCHO_CUT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.MEGAHORN ], + [ 15, MoveId.FAIRY_WIND ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.PSYBEAM ], + [ 30, MoveId.STOMP ], + [ 35, MoveId.HEAL_PULSE ], + [ 43, MoveId.TAKE_DOWN ], + [ 49, MoveId.DAZZLING_GLEAM ], + [ 56, MoveId.PSYCHIC ], + [ 63, MoveId.HEALING_WISH ], + ], + [SpeciesId.GALAR_SLOWPOKE]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.CURSE ], + [ 3, MoveId.GROWL ], + [ 6, MoveId.ACID ], + [ 9, MoveId.YAWN ], + [ 12, MoveId.CONFUSION ], + [ 15, MoveId.DISABLE ], + [ 18, MoveId.WATER_PULSE ], + [ 21, MoveId.HEADBUTT ], + [ 24, MoveId.ZEN_HEADBUTT ], + [ 27, MoveId.AMNESIA ], + [ 30, MoveId.SURF ], + [ 33, MoveId.SLACK_OFF ], + [ 36, MoveId.PSYCHIC ], + [ 39, MoveId.PSYCH_UP ], + [ 42, MoveId.RAIN_DANCE ], + [ 45, MoveId.HEAL_PULSE ], + ], + [SpeciesId.GALAR_SLOWBRO]: [ + [ EVOLVE_MOVE, MoveId.SHELL_SIDE_ARM ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.ACID ], + [ 1, MoveId.WITHDRAW ], + [ 1, MoveId.CURSE ], + [ 9, MoveId.YAWN ], + [ 12, MoveId.CONFUSION ], + [ 15, MoveId.DISABLE ], + [ 18, MoveId.WATER_PULSE ], + [ 21, MoveId.HEADBUTT ], + [ 24, MoveId.ZEN_HEADBUTT ], + [ 27, MoveId.AMNESIA ], + [ 30, MoveId.SURF ], + [ 33, MoveId.SLACK_OFF ], + [ 36, MoveId.PSYCHIC ], + [ 39, MoveId.PSYCH_UP ], + [ 42, MoveId.RAIN_DANCE ], + [ 45, MoveId.HEAL_PULSE ], + ], + [SpeciesId.GALAR_FARFETCHD]: [ + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.PECK ], + [ 5, MoveId.LEER ], + [ 10, MoveId.FURY_CUTTER ], + [ 15, MoveId.ROCK_SMASH ], + [ 20, MoveId.BRUTAL_SWING ], + [ 25, MoveId.DETECT ], + [ 30, MoveId.KNOCK_OFF ], + [ 35, MoveId.DEFOG ], + [ 40, MoveId.BRICK_BREAK ], + [ 45, MoveId.SWORDS_DANCE ], + [ 50, MoveId.SLAM ], + [ 55, MoveId.LEAF_BLADE ], + [ 60, MoveId.FINAL_GAMBIT ], + [ 65, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.GALAR_WEEZING]: [ + [ EVOLVE_MOVE, MoveId.DOUBLE_HIT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.HAZE ], + [ 1, MoveId.SMOG ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.HEAT_WAVE ], + [ 1, MoveId.DEFOG ], + [ 1, MoveId.AROMATIC_MIST ], + [ 1, MoveId.STRANGE_STEAM ], + [ 12, MoveId.CLEAR_SMOG ], + [ 16, MoveId.ASSURANCE ], + [ 20, MoveId.SLUDGE ], + [ 24, MoveId.FAIRY_WIND ], + [ 28, MoveId.SELF_DESTRUCT ], + [ 32, MoveId.SLUDGE_BOMB ], + [ 38, MoveId.TOXIC ], + [ 44, MoveId.BELCH ], + [ 50, MoveId.EXPLOSION ], + [ 56, MoveId.MEMENTO ], + [ 62, MoveId.DESTINY_BOND ], + [ 68, MoveId.MISTY_TERRAIN ], + ], + [SpeciesId.GALAR_MR_MIME]: [ + [ 1, MoveId.POUND ], + [ 1, MoveId.BARRIER ], // Previous Stage Move + [ 1, MoveId.TICKLE ], // Previous Stage Move + [ 1, MoveId.MIMIC ], + [ 1, MoveId.LIGHT_SCREEN ], + [ 1, MoveId.REFLECT ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.SAFEGUARD ], + [ 1, MoveId.BATON_PASS ], + [ 1, MoveId.ENCORE ], + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.ROLE_PLAY ], + [ 1, MoveId.RECYCLE ], + [ 1, MoveId.COPYCAT ], + [ 1, MoveId.ICE_SHARD ], + [ 1, MoveId.MISTY_TERRAIN ], + [ 1, MoveId.DAZZLING_GLEAM ], + [ 12, MoveId.CONFUSION ], + [ 16, MoveId.ALLY_SWITCH ], + [ 20, MoveId.ICY_WIND ], + [ 24, MoveId.DOUBLE_KICK ], + [ 28, MoveId.PSYBEAM ], + [ 32, MoveId.HYPNOSIS ], + [ 36, MoveId.MIRROR_COAT ], + [ 40, MoveId.SUCKER_PUNCH ], + [ 44, MoveId.FREEZE_DRY ], + [ 48, MoveId.PSYCHIC ], + [ 52, MoveId.TEETER_DANCE ], + ], + [SpeciesId.GALAR_ARTICUNO]: [ + [ 1, MoveId.GUST ], + [ 5, MoveId.CONFUSION ], + [ 10, MoveId.REFLECT ], + [ 15, MoveId.HYPNOSIS ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.ANCIENT_POWER ], + [ 30, MoveId.TAILWIND ], + [ 35, MoveId.PSYCHO_CUT ], + [ 40, MoveId.RECOVER ], + [ 45, MoveId.FREEZING_GLARE ], + [ 50, MoveId.DREAM_EATER ], + [ 55, MoveId.HURRICANE ], + [ 60, MoveId.DOUBLE_TEAM ], + [ 65, MoveId.FUTURE_SIGHT ], + [ 70, MoveId.TRICK_ROOM ], + ], + [SpeciesId.GALAR_ZAPDOS]: [ + [ 1, MoveId.PECK ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 5, MoveId.ROCK_SMASH ], + [ 10, MoveId.LIGHT_SCREEN ], + [ 15, MoveId.PLUCK ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.ANCIENT_POWER ], + [ 30, MoveId.BRICK_BREAK ], + [ 35, MoveId.DRILL_PECK ], + [ 40, MoveId.QUICK_GUARD ], + [ 45, MoveId.THUNDEROUS_KICK ], + [ 50, MoveId.BULK_UP ], + [ 55, MoveId.COUNTER ], + [ 60, MoveId.DETECT ], + [ 65, MoveId.CLOSE_COMBAT ], + [ 70, MoveId.REVERSAL ], + ], + [SpeciesId.GALAR_MOLTRES]: [ + [ 1, MoveId.GUST ], + [ 1, MoveId.LEER ], + [ 5, MoveId.PAYBACK ], + [ 10, MoveId.SAFEGUARD ], + [ 15, MoveId.WING_ATTACK ], + [ 20, MoveId.AGILITY ], + [ 25, MoveId.ANCIENT_POWER ], + [ 30, MoveId.SUCKER_PUNCH ], + [ 35, MoveId.AIR_SLASH ], + [ 40, MoveId.AFTER_YOU ], + [ 45, MoveId.FIERY_WRATH ], + [ 50, MoveId.NASTY_PLOT ], + [ 55, MoveId.HURRICANE ], + [ 60, MoveId.ENDURE ], + [ 65, MoveId.MEMENTO ], + [ 70, MoveId.SKY_ATTACK ], + ], + [SpeciesId.GALAR_SLOWKING]: [ + [ EVOLVE_MOVE, MoveId.EERIE_SPELL ], + [ RELEARN_MOVE, MoveId.FUTURE_SIGHT ], + [ RELEARN_MOVE, MoveId.CHILLY_RECEPTION ], + [ RELEARN_MOVE, MoveId.TOXIC ], + [ 1, MoveId.POWER_GEM ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.SWAGGER ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.CURSE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.ACID ], + [ 9, MoveId.YAWN ], + [ 12, MoveId.CONFUSION ], + [ 15, MoveId.DISABLE ], + [ 18, MoveId.WATER_PULSE ], + [ 21, MoveId.HEADBUTT ], + [ 24, MoveId.ZEN_HEADBUTT ], + [ 27, MoveId.AMNESIA ], + [ 30, MoveId.SURF ], + [ 33, MoveId.SLACK_OFF ], + [ 36, MoveId.PSYCHIC ], + [ 39, MoveId.PSYCH_UP ], + [ 42, MoveId.RAIN_DANCE ], + [ 45, MoveId.HEAL_PULSE ], + ], + [SpeciesId.GALAR_CORSOLA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 5, MoveId.ASTONISH ], + [ 10, MoveId.DISABLE ], + [ 15, MoveId.SPITE ], + [ 20, MoveId.ANCIENT_POWER ], + [ 25, MoveId.HEX ], + [ 30, MoveId.CURSE ], + [ 35, MoveId.STRENGTH_SAP ], + [ 40, MoveId.POWER_GEM ], + [ 45, MoveId.NIGHT_SHADE ], + [ 50, MoveId.GRUDGE ], + [ 55, MoveId.MIRROR_COAT ], + ], + [SpeciesId.GALAR_ZIGZAGOON]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 3, MoveId.SAND_ATTACK ], + [ 6, MoveId.LICK ], + [ 9, MoveId.SNARL ], + [ 12, MoveId.HEADBUTT ], + [ 15, MoveId.BABY_DOLL_EYES ], + [ 18, MoveId.PIN_MISSILE ], + [ 21, MoveId.REST ], + [ 24, MoveId.TAKE_DOWN ], + [ 27, MoveId.SCARY_FACE ], + [ 30, MoveId.COUNTER ], + [ 33, MoveId.TAUNT ], + [ 36, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.GALAR_LINOONE]: [ + [ EVOLVE_MOVE, MoveId.NIGHT_SLASH ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.PIN_MISSILE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.LICK ], + [ 1, MoveId.SWITCHEROO ], + [ 1, MoveId.BABY_DOLL_EYES ], + [ 9, MoveId.SNARL ], + [ 12, MoveId.HEADBUTT ], + [ 15, MoveId.HONE_CLAWS ], + [ 18, MoveId.FURY_SWIPES ], + [ 23, MoveId.REST ], + [ 28, MoveId.TAKE_DOWN ], + [ 33, MoveId.SCARY_FACE ], + [ 38, MoveId.COUNTER ], + [ 43, MoveId.TAUNT ], + [ 48, MoveId.DOUBLE_EDGE ], + ], + [SpeciesId.GALAR_DARUMAKA]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.POWDER_SNOW ], + [ 4, MoveId.TAUNT ], + [ 8, MoveId.BITE ], + [ 12, MoveId.AVALANCHE ], + [ 16, MoveId.WORK_UP ], + [ 20, MoveId.ICE_FANG ], + [ 24, MoveId.HEADBUTT ], + [ 28, MoveId.ICE_PUNCH ], + [ 32, MoveId.UPROAR ], + [ 36, MoveId.BELLY_DRUM ], + [ 40, MoveId.BLIZZARD ], + [ 44, MoveId.THRASH ], + [ 48, MoveId.SUPERPOWER ], + ], + [SpeciesId.GALAR_DARMANITAN]: [ + [ EVOLVE_MOVE, MoveId.ICICLE_CRASH ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.BITE ], + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.TAUNT ], + [ 12, MoveId.AVALANCHE ], + [ 16, MoveId.WORK_UP ], + [ 20, MoveId.ICE_FANG ], + [ 24, MoveId.HEADBUTT ], + [ 28, MoveId.ICE_PUNCH ], + [ 32, MoveId.UPROAR ], + [ 38, MoveId.BELLY_DRUM ], + [ 44, MoveId.BLIZZARD ], + [ 50, MoveId.THRASH ], + [ 56, MoveId.SUPERPOWER ], + ], + [SpeciesId.GALAR_YAMASK]: [ + [ 1, MoveId.PROTECT ], + [ 1, MoveId.ASTONISH ], + [ 4, MoveId.HAZE ], + [ 8, MoveId.NIGHT_SHADE ], + [ 12, MoveId.DISABLE ], + [ 16, MoveId.BRUTAL_SWING ], + [ 20, MoveId.CRAFTY_SHIELD ], + [ 24, MoveId.HEX ], + [ 28, MoveId.MEAN_LOOK ], + [ 32, MoveId.SLAM ], + [ 36, MoveId.CURSE ], + [ 40, MoveId.SHADOW_BALL ], + [ 44, MoveId.EARTHQUAKE ], + [ 48, MoveId.GUARD_SPLIT ], + [ 48, MoveId.POWER_SPLIT ], + [ 52, MoveId.DESTINY_BOND ], + ], + [SpeciesId.GALAR_STUNFISK]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.MUD_SLAP ], + [ 1, MoveId.METAL_CLAW ], + [ 5, MoveId.ENDURE ], + [ 10, MoveId.MUD_SHOT ], + [ 15, MoveId.REVENGE ], + [ 20, MoveId.METAL_SOUND ], + [ 25, MoveId.SUCKER_PUNCH ], + [ 30, MoveId.IRON_DEFENSE ], + [ 35, MoveId.BOUNCE ], + [ 40, MoveId.MUDDY_WATER ], + [ 45, MoveId.SNAP_TRAP ], + [ 50, MoveId.FLAIL ], + [ 55, MoveId.FISSURE ], + ], + [SpeciesId.HISUI_GROWLITHE]: [ + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 4, MoveId.HOWL ], + [ 8, MoveId.BITE ], + [ 12, MoveId.FLAME_WHEEL ], + [ 16, MoveId.HELPING_HAND ], + [ 24, MoveId.FIRE_FANG ], + [ 28, MoveId.RETALIATE ], + [ 32, MoveId.CRUNCH ], + [ 36, MoveId.TAKE_DOWN ], + [ 40, MoveId.FLAMETHROWER ], + [ 44, MoveId.ROAR ], + [ 48, MoveId.ROCK_SLIDE ], + [ 52, MoveId.REVERSAL ], + [ 56, MoveId.FLARE_BLITZ ], + ], + [SpeciesId.HISUI_ARCANINE]: [ + [ EVOLVE_MOVE, MoveId.EXTREME_SPEED ], + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.LEER ], + [ 1, MoveId.BITE ], + [ 1, MoveId.ROAR ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.ROCK_THROW ], + [ 1, MoveId.AGILITY ], + [ 1, MoveId.ROCK_SLIDE ], + [ 1, MoveId.FLAME_WHEEL ], + [ 1, MoveId.REVERSAL ], + [ 1, MoveId.CRUNCH ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.HOWL ], + [ 1, MoveId.FLARE_BLITZ ], + [ 1, MoveId.FIRE_FANG ], + [ 1, MoveId.RETALIATE ], + [ 5, MoveId.FLAMETHROWER ], + [ 64, MoveId.RAGING_FURY ], + ], + [SpeciesId.HISUI_VOLTORB]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.CHARGE ], + [ 4, MoveId.THUNDER_SHOCK ], + [ 6, MoveId.STUN_SPORE ], + [ 9, MoveId.BULLET_SEED ], + [ 11, MoveId.ROLLOUT ], + [ 13, MoveId.SCREECH ], + [ 16, MoveId.CHARGE_BEAM ], + [ 20, MoveId.SWIFT ], + [ 22, MoveId.ELECTRO_BALL ], + [ 26, MoveId.SELF_DESTRUCT ], + [ 29, MoveId.ENERGY_BALL ], + [ 34, MoveId.SEED_BOMB ], + [ 34, MoveId.DISCHARGE ], + [ 41, MoveId.EXPLOSION ], + [ 46, MoveId.GYRO_BALL ], + [ 50, MoveId.GRASSY_TERRAIN ], + ], + [SpeciesId.HISUI_ELECTRODE]: [ + [ EVOLVE_MOVE, MoveId.CHLOROBLAST ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.CHARGE ], + [ 4, MoveId.THUNDER_SHOCK ], + [ 6, MoveId.STUN_SPORE ], + [ 9, MoveId.BULLET_SEED ], + [ 11, MoveId.ROLLOUT ], + [ 13, MoveId.SCREECH ], + [ 16, MoveId.CHARGE_BEAM ], + [ 20, MoveId.SWIFT ], + [ 22, MoveId.ELECTRO_BALL ], + [ 26, MoveId.SELF_DESTRUCT ], + [ 29, MoveId.ENERGY_BALL ], + [ 34, MoveId.SEED_BOMB ], + [ 34, MoveId.DISCHARGE ], + [ 41, MoveId.EXPLOSION ], + [ 46, MoveId.GYRO_BALL ], + [ 50, MoveId.GRASSY_TERRAIN ], + ], + [SpeciesId.HISUI_TYPHLOSION]: [ + [ EVOLVE_MOVE, MoveId.INFERNAL_PARADE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.EMBER ], + [ 1, MoveId.SMOKESCREEN ], + [ 1, MoveId.ERUPTION ], + [ 1, MoveId.GYRO_BALL ], + [ 13, MoveId.QUICK_ATTACK ], + [ 20, MoveId.FLAME_WHEEL ], + [ 24, MoveId.DEFENSE_CURL ], + [ 31, MoveId.SWIFT ], + [ 35, MoveId.FLAME_CHARGE ], + [ 43, MoveId.LAVA_PLUME ], + [ 48, MoveId.FLAMETHROWER ], + [ 56, MoveId.INFERNO ], + [ 61, MoveId.ROLLOUT ], + [ 74, MoveId.OVERHEAT ], + ], + [SpeciesId.HISUI_QWILFISH]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.POISON_STING ], + [ 4, MoveId.HARDEN ], + [ 8, MoveId.BITE ], + [ 12, MoveId.FELL_STINGER ], + [ 16, MoveId.MINIMIZE ], + [ 20, MoveId.SPIKES ], + [ 24, MoveId.BRINE ], + [ 28, MoveId.BARB_BARRAGE ], + [ 32, MoveId.PIN_MISSILE ], + [ 36, MoveId.TOXIC_SPIKES ], + [ 40, MoveId.STOCKPILE ], + [ 40, MoveId.SPIT_UP ], + [ 44, MoveId.TOXIC ], + [ 48, MoveId.CRUNCH ], + [ 52, MoveId.ACUPRESSURE ], + [ 56, MoveId.DESTINY_BOND ], + ], + [SpeciesId.HISUI_SNEASEL]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.ROCK_SMASH ], + [ 6, MoveId.TAUNT ], + [ 12, MoveId.QUICK_ATTACK ], + [ 18, MoveId.METAL_CLAW ], + [ 24, MoveId.POISON_JAB ], + [ 30, MoveId.BRICK_BREAK ], + [ 36, MoveId.HONE_CLAWS ], + [ 42, MoveId.SLASH ], + [ 48, MoveId.AGILITY ], + [ 54, MoveId.SCREECH ], + [ 60, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.HISUI_SAMUROTT]: [ + [ EVOLVE_MOVE, MoveId.CEASELESS_EDGE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.SOAK ], // Previous Stage Move + [ 1, MoveId.SLASH ], + [ 1, MoveId.MEGAHORN ], + [ 1, MoveId.SUCKER_PUNCH ], + [ 13, MoveId.FOCUS_ENERGY ], + [ 18, MoveId.RAZOR_SHELL ], + [ 21, MoveId.FURY_CUTTER ], + [ 25, MoveId.WATER_PULSE ], + [ 29, MoveId.AERIAL_ACE ], + [ 34, MoveId.AQUA_JET ], + [ 39, MoveId.ENCORE ], + [ 46, MoveId.AQUA_TAIL ], + [ 51, MoveId.RETALIATE ], + [ 58, MoveId.SWORDS_DANCE ], + [ 63, MoveId.HYDRO_PUMP ], + ], + [SpeciesId.HISUI_LILLIGANT]: [ + [ EVOLVE_MOVE, MoveId.VICTORY_DANCE ], + [ 1, MoveId.MEGA_KICK ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.MEGA_DRAIN ], + [ 1, MoveId.LEECH_SEED ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.STUN_SPORE ], + [ 1, MoveId.SLEEP_POWDER ], + [ 1, MoveId.GIGA_DRAIN ], + [ 1, MoveId.CHARM ], // Previous Stage Move + [ 1, MoveId.SYNTHESIS ], + [ 1, MoveId.SUNNY_DAY ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.TEETER_DANCE ], + [ 1, MoveId.MAGICAL_LEAF ], + [ 1, MoveId.LEAF_BLADE ], + [ 1, MoveId.ENERGY_BALL ], + [ 1, MoveId.DEFOG ], + [ 1, MoveId.LEAF_STORM ], + [ 1, MoveId.ENTRAINMENT ], + [ 1, MoveId.AFTER_YOU ], + [ 1, MoveId.PETAL_BLIZZARD ], + [ 1, MoveId.SOLAR_BLADE ], + [ 5, MoveId.AXE_KICK ], + ], + [SpeciesId.HISUI_ZORUA]: [ + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 4, MoveId.TORMENT ], + [ 8, MoveId.HONE_CLAWS ], + [ 12, MoveId.SHADOW_SNEAK ], + [ 16, MoveId.CURSE ], + [ 20, MoveId.TAUNT ], + [ 24, MoveId.KNOCK_OFF ], + [ 28, MoveId.SPITE ], + [ 32, MoveId.AGILITY ], + [ 36, MoveId.SHADOW_BALL ], + [ 40, MoveId.BITTER_MALICE ], + [ 44, MoveId.NASTY_PLOT ], + [ 48, MoveId.FOUL_PLAY ], + ], + [SpeciesId.HISUI_ZOROARK]: [ + [ EVOLVE_MOVE, MoveId.SHADOW_CLAW ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.TORMENT ], + [ 1, MoveId.U_TURN ], + [ 1, MoveId.HONE_CLAWS ], + [ 12, MoveId.SHADOW_SNEAK ], + [ 16, MoveId.CURSE ], + [ 20, MoveId.TAUNT ], + [ 24, MoveId.KNOCK_OFF ], + [ 28, MoveId.SPITE ], + [ 34, MoveId.AGILITY ], + [ 40, MoveId.SHADOW_BALL ], + [ 46, MoveId.BITTER_MALICE ], + [ 52, MoveId.NASTY_PLOT ], + [ 58, MoveId.FOUL_PLAY ], + ], + [SpeciesId.HISUI_BRAVIARY]: [ + [ EVOLVE_MOVE, MoveId.ESPER_WING ], + [ RELEARN_MOVE, MoveId.BRAVE_BIRD ], // Previous Stage Move + [ 1, MoveId.WING_ATTACK ], + [ 1, MoveId.LEER ], + [ 1, MoveId.PECK ], + [ 1, MoveId.SKY_ATTACK ], + [ 1, MoveId.SUPERPOWER ], + [ 1, MoveId.HONE_CLAWS ], + [ 18, MoveId.TAILWIND ], + [ 24, MoveId.SCARY_FACE ], + [ 30, MoveId.AERIAL_ACE ], + [ 36, MoveId.SLASH ], + [ 42, MoveId.WHIRLWIND ], + [ 48, MoveId.CRUSH_CLAW ], + [ 57, MoveId.AIR_SLASH ], + [ 64, MoveId.DEFOG ], + [ 72, MoveId.THRASH ], + [ 80, MoveId.HURRICANE ], + ], + [SpeciesId.HISUI_SLIGGOO]: [ + [ EVOLVE_MOVE, MoveId.SHELTER ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.ACID_ARMOR ], + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.BODY_SLAM ], // Previous Stage Move + [ 15, MoveId.PROTECT ], + [ 20, MoveId.FLAIL ], + [ 25, MoveId.WATER_PULSE ], + [ 30, MoveId.RAIN_DANCE ], + [ 35, MoveId.DRAGON_PULSE ], + [ 43, MoveId.CURSE ], + [ 49, MoveId.IRON_HEAD ], + [ 56, MoveId.MUDDY_WATER ], + ], + [SpeciesId.HISUI_GOODRA]: [ + [ EVOLVE_MOVE, MoveId.IRON_TAIL ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.ABSORB ], + [ 1, MoveId.ACID_ARMOR ], // Previous Stage Move + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.FEINT ], + [ 1, MoveId.ACID_SPRAY ], + [ 1, MoveId.TEARFUL_LOOK ], + [ 1, MoveId.SHELTER ], + [ 15, MoveId.PROTECT ], + [ 20, MoveId.FLAIL ], + [ 25, MoveId.WATER_PULSE ], + [ 30, MoveId.RAIN_DANCE ], + [ 35, MoveId.DRAGON_PULSE ], + [ 43, MoveId.CURSE ], + [ 49, MoveId.BODY_SLAM ], + [ 49, MoveId.IRON_HEAD ], + [ 58, MoveId.MUDDY_WATER ], + [ 67, MoveId.HEAVY_SLAM ], + ], + [SpeciesId.HISUI_AVALUGG]: [ + [ EVOLVE_MOVE, MoveId.ROCK_SLIDE ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.HARDEN ], + [ 1, MoveId.POWDER_SNOW ], + [ 1, MoveId.RAPID_SPIN ], + [ 1, MoveId.WIDE_GUARD ], + [ 9, MoveId.CURSE ], + [ 12, MoveId.ICY_WIND ], + [ 15, MoveId.PROTECT ], + [ 18, MoveId.AVALANCHE ], + [ 21, MoveId.BITE ], + [ 24, MoveId.ICE_FANG ], + [ 27, MoveId.IRON_DEFENSE ], + [ 30, MoveId.RECOVER ], + [ 33, MoveId.CRUNCH ], + [ 36, MoveId.TAKE_DOWN ], + [ 41, MoveId.BLIZZARD ], + [ 46, MoveId.DOUBLE_EDGE ], + [ 51, MoveId.STONE_EDGE ], + [ 61, MoveId.MOUNTAIN_GALE ], + ], + [SpeciesId.HISUI_DECIDUEYE]: [ + [ EVOLVE_MOVE, MoveId.TRIPLE_ARROWS ], + [ RELEARN_MOVE, MoveId.NASTY_PLOT ], // Previous Stage Move + [ 1, MoveId.TACKLE ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.U_TURN ], + [ 1, MoveId.ASTONISH ], // Previous Stage Move + [ 1, MoveId.LEAF_STORM ], + [ 1, MoveId.LEAFAGE ], + [ 9, MoveId.PECK ], + [ 12, MoveId.SHADOW_SNEAK ], + [ 15, MoveId.RAZOR_LEAF ], + [ 20, MoveId.SYNTHESIS ], + [ 25, MoveId.PLUCK ], + [ 30, MoveId.BULK_UP ], + [ 37, MoveId.SUCKER_PUNCH ], + [ 44, MoveId.LEAF_BLADE ], + [ 51, MoveId.FEATHER_DANCE ], + [ 58, MoveId.BRAVE_BIRD ], + ], + [SpeciesId.PALDEA_TAUROS]: [ + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 5, MoveId.WORK_UP ], + [ 10, MoveId.DOUBLE_KICK ], + [ 15, MoveId.ASSURANCE ], + [ 20, MoveId.HEADBUTT ], + [ 25, MoveId.SCARY_FACE ], + [ 30, MoveId.ZEN_HEADBUTT ], + [ 35, MoveId.RAGING_BULL ], + [ 40, MoveId.REST ], + [ 45, MoveId.SWAGGER ], + [ 50, MoveId.THRASH ], + [ 55, MoveId.DOUBLE_EDGE ], + [ 60, MoveId.CLOSE_COMBAT ], + ], + [SpeciesId.PALDEA_WOOPER]: [ + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.MUD_SHOT ], + [ 4, MoveId.TACKLE ], + [ 8, MoveId.POISON_TAIL ], + [ 12, MoveId.TOXIC_SPIKES ], + [ 16, MoveId.SLAM ], + [ 21, MoveId.YAWN ], + [ 24, MoveId.POISON_JAB ], + [ 28, MoveId.SLUDGE_WAVE ], + [ 32, MoveId.AMNESIA ], + [ 36, MoveId.TOXIC ], + [ 40, MoveId.EARTHQUAKE ], + ], + [SpeciesId.BLOODMOON_URSALUNA]: [ + [ RELEARN_MOVE, MoveId.MOONLIGHT ], + [ 1, MoveId.HEADLONG_RUSH ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.LICK ], + [ 8, MoveId.FURY_SWIPES ], + [ 13, MoveId.PAYBACK ], + [ 17, MoveId.HARDEN ], + [ 22, MoveId.SLASH ], + [ 25, MoveId.PLAY_NICE ], + [ 35, MoveId.SCARY_FACE ], + [ 41, MoveId.REST ], + [ 41, MoveId.SNORE ], + [ 48, MoveId.EARTH_POWER ], + [ 56, MoveId.MOONBLAST ], + [ 64, MoveId.HAMMER_ARM ], + [ 70, MoveId.BLOOD_MOON ], ] }; export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = { - [Species.PIKACHU]: { // Custom + [SpeciesId.PIKACHU]: { // Custom 1: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.NUZZLE ], - [ 4, Moves.THUNDER_WAVE ], - [ 8, Moves.DOUBLE_TEAM ], - [ 12, Moves.ELECTRO_BALL ], - [ 16, Moves.FEINT ], - [ 20, Moves.ZIPPY_ZAP ], // Custom - [ 24, Moves.AGILITY ], - [ 28, Moves.IRON_TAIL ], - [ 32, Moves.DISCHARGE ], - [ 34, Moves.FLOATY_FALL ], // Custom - [ 36, Moves.THUNDERBOLT ], - [ 40, Moves.LIGHT_SCREEN ], - [ 42, Moves.SPLISHY_SPLASH ], // Custom - [ 44, Moves.THUNDER ], - [ 48, Moves.PIKA_PAPOW ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.NUZZLE ], + [ 4, MoveId.THUNDER_WAVE ], + [ 8, MoveId.DOUBLE_TEAM ], + [ 12, MoveId.ELECTRO_BALL ], + [ 16, MoveId.FEINT ], + [ 20, MoveId.ZIPPY_ZAP ], // Custom + [ 24, MoveId.AGILITY ], + [ 28, MoveId.IRON_TAIL ], + [ 32, MoveId.DISCHARGE ], + [ 34, MoveId.FLOATY_FALL ], // Custom + [ 36, MoveId.THUNDERBOLT ], + [ 40, MoveId.LIGHT_SCREEN ], + [ 42, MoveId.SPLISHY_SPLASH ], // Custom + [ 44, MoveId.THUNDER ], + [ 48, MoveId.PIKA_PAPOW ], ], 2: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.NUZZLE ], - [ 4, Moves.THUNDER_WAVE ], - [ 8, Moves.DOUBLE_TEAM ], - [ 12, Moves.ELECTRO_BALL ], - [ 16, Moves.FEINT ], - [ 20, Moves.SPARK ], - [ 24, Moves.AGILITY ], - [ 28, Moves.IRON_TAIL ], - [ 32, Moves.DISCHARGE ], - [ 36, Moves.THUNDERBOLT ], - [ 40, Moves.LIGHT_SCREEN ], - [ 44, Moves.THUNDER ], - [ 48, Moves.PIKA_PAPOW ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.NUZZLE ], + [ 4, MoveId.THUNDER_WAVE ], + [ 8, MoveId.DOUBLE_TEAM ], + [ 12, MoveId.ELECTRO_BALL ], + [ 16, MoveId.FEINT ], + [ 20, MoveId.SPARK ], + [ 24, MoveId.AGILITY ], + [ 28, MoveId.IRON_TAIL ], + [ 32, MoveId.DISCHARGE ], + [ 36, MoveId.THUNDERBOLT ], + [ 40, MoveId.LIGHT_SCREEN ], + [ 44, MoveId.THUNDER ], + [ 48, MoveId.PIKA_PAPOW ], ], 3: [ - [ 1, Moves.METEOR_MASH ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.NUZZLE ], - [ 4, Moves.THUNDER_WAVE ], - [ 8, Moves.DOUBLE_TEAM ], - [ 12, Moves.ELECTRO_BALL ], - [ 16, Moves.FEINT ], - [ 20, Moves.SPARK ], - [ 24, Moves.AGILITY ], - [ 28, Moves.IRON_TAIL ], - [ 32, Moves.DISCHARGE ], - [ 36, Moves.THUNDERBOLT ], - [ 40, Moves.LIGHT_SCREEN ], - [ 44, Moves.THUNDER ], - [ 48, Moves.PIKA_PAPOW ], + [ 1, MoveId.METEOR_MASH ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.NUZZLE ], + [ 4, MoveId.THUNDER_WAVE ], + [ 8, MoveId.DOUBLE_TEAM ], + [ 12, MoveId.ELECTRO_BALL ], + [ 16, MoveId.FEINT ], + [ 20, MoveId.SPARK ], + [ 24, MoveId.AGILITY ], + [ 28, MoveId.IRON_TAIL ], + [ 32, MoveId.DISCHARGE ], + [ 36, MoveId.THUNDERBOLT ], + [ 40, MoveId.LIGHT_SCREEN ], + [ 44, MoveId.THUNDER ], + [ 48, MoveId.PIKA_PAPOW ], ], 4: [ - [ 1, Moves.ICICLE_CRASH ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.NUZZLE ], - [ 4, Moves.THUNDER_WAVE ], - [ 8, Moves.DOUBLE_TEAM ], - [ 12, Moves.ELECTRO_BALL ], - [ 16, Moves.FEINT ], - [ 20, Moves.SPARK ], - [ 24, Moves.AGILITY ], - [ 28, Moves.IRON_TAIL ], - [ 32, Moves.DISCHARGE ], - [ 36, Moves.THUNDERBOLT ], - [ 40, Moves.LIGHT_SCREEN ], - [ 44, Moves.THUNDER ], - [ 48, Moves.PIKA_PAPOW ], + [ 1, MoveId.ICICLE_CRASH ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.NUZZLE ], + [ 4, MoveId.THUNDER_WAVE ], + [ 8, MoveId.DOUBLE_TEAM ], + [ 12, MoveId.ELECTRO_BALL ], + [ 16, MoveId.FEINT ], + [ 20, MoveId.SPARK ], + [ 24, MoveId.AGILITY ], + [ 28, MoveId.IRON_TAIL ], + [ 32, MoveId.DISCHARGE ], + [ 36, MoveId.THUNDERBOLT ], + [ 40, MoveId.LIGHT_SCREEN ], + [ 44, MoveId.THUNDER ], + [ 48, MoveId.PIKA_PAPOW ], ], 5: [ - [ 1, Moves.DRAINING_KISS ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.NUZZLE ], - [ 4, Moves.THUNDER_WAVE ], - [ 8, Moves.DOUBLE_TEAM ], - [ 12, Moves.ELECTRO_BALL ], - [ 16, Moves.FEINT ], - [ 20, Moves.SPARK ], - [ 24, Moves.AGILITY ], - [ 28, Moves.IRON_TAIL ], - [ 32, Moves.DISCHARGE ], - [ 36, Moves.THUNDERBOLT ], - [ 40, Moves.LIGHT_SCREEN ], - [ 44, Moves.THUNDER ], - [ 48, Moves.PIKA_PAPOW ], + [ 1, MoveId.DRAINING_KISS ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.NUZZLE ], + [ 4, MoveId.THUNDER_WAVE ], + [ 8, MoveId.DOUBLE_TEAM ], + [ 12, MoveId.ELECTRO_BALL ], + [ 16, MoveId.FEINT ], + [ 20, MoveId.SPARK ], + [ 24, MoveId.AGILITY ], + [ 28, MoveId.IRON_TAIL ], + [ 32, MoveId.DISCHARGE ], + [ 36, MoveId.THUNDERBOLT ], + [ 40, MoveId.LIGHT_SCREEN ], + [ 44, MoveId.THUNDER ], + [ 48, MoveId.PIKA_PAPOW ], ], 6: [ - [ 1, Moves.ELECTRIC_TERRAIN ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.NUZZLE ], - [ 4, Moves.THUNDER_WAVE ], - [ 8, Moves.DOUBLE_TEAM ], - [ 12, Moves.ELECTRO_BALL ], - [ 16, Moves.FEINT ], - [ 20, Moves.SPARK ], - [ 24, Moves.AGILITY ], - [ 28, Moves.IRON_TAIL ], - [ 32, Moves.DISCHARGE ], - [ 36, Moves.THUNDERBOLT ], - [ 40, Moves.LIGHT_SCREEN ], - [ 44, Moves.THUNDER ], - [ 48, Moves.PIKA_PAPOW ], + [ 1, MoveId.ELECTRIC_TERRAIN ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.NUZZLE ], + [ 4, MoveId.THUNDER_WAVE ], + [ 8, MoveId.DOUBLE_TEAM ], + [ 12, MoveId.ELECTRO_BALL ], + [ 16, MoveId.FEINT ], + [ 20, MoveId.SPARK ], + [ 24, MoveId.AGILITY ], + [ 28, MoveId.IRON_TAIL ], + [ 32, MoveId.DISCHARGE ], + [ 36, MoveId.THUNDERBOLT ], + [ 40, MoveId.LIGHT_SCREEN ], + [ 44, MoveId.THUNDER ], + [ 48, MoveId.PIKA_PAPOW ], ], 7: [ - [ 1, Moves.FLYING_PRESS ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.NUZZLE ], - [ 4, Moves.THUNDER_WAVE ], - [ 8, Moves.DOUBLE_TEAM ], - [ 12, Moves.ELECTRO_BALL ], - [ 16, Moves.FEINT ], - [ 20, Moves.SPARK ], - [ 24, Moves.AGILITY ], - [ 28, Moves.IRON_TAIL ], - [ 32, Moves.DISCHARGE ], - [ 36, Moves.THUNDERBOLT ], - [ 40, Moves.LIGHT_SCREEN ], - [ 44, Moves.THUNDER ], - [ 48, Moves.PIKA_PAPOW ], + [ 1, MoveId.FLYING_PRESS ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.NUZZLE ], + [ 4, MoveId.THUNDER_WAVE ], + [ 8, MoveId.DOUBLE_TEAM ], + [ 12, MoveId.ELECTRO_BALL ], + [ 16, MoveId.FEINT ], + [ 20, MoveId.SPARK ], + [ 24, MoveId.AGILITY ], + [ 28, MoveId.IRON_TAIL ], + [ 32, MoveId.DISCHARGE ], + [ 36, MoveId.THUNDERBOLT ], + [ 40, MoveId.LIGHT_SCREEN ], + [ 44, MoveId.THUNDER ], + [ 48, MoveId.PIKA_PAPOW ], ], 8: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.SWEET_KISS ], - [ 1, Moves.CHARM ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.PLAY_NICE ], - [ 1, Moves.NUZZLE ], - [ 4, Moves.THUNDER_WAVE ], - [ 8, Moves.DOUBLE_TEAM ], - [ 12, Moves.ELECTRO_BALL ], - [ 16, Moves.FEINT ], - [ 20, Moves.ZIPPY_ZAP ], // Custom - [ 24, Moves.AGILITY ], - [ 28, Moves.IRON_TAIL ], - [ 32, Moves.DISCHARGE ], - [ 34, Moves.FLOATY_FALL ], // Custom - [ 36, Moves.THUNDERBOLT ], - [ 40, Moves.LIGHT_SCREEN ], - [ 42, Moves.SPLISHY_SPLASH ], // Custom - [ 44, Moves.THUNDER ], - [ 48, Moves.PIKA_PAPOW ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.SWEET_KISS ], + [ 1, MoveId.CHARM ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.PLAY_NICE ], + [ 1, MoveId.NUZZLE ], + [ 4, MoveId.THUNDER_WAVE ], + [ 8, MoveId.DOUBLE_TEAM ], + [ 12, MoveId.ELECTRO_BALL ], + [ 16, MoveId.FEINT ], + [ 20, MoveId.ZIPPY_ZAP ], // Custom + [ 24, MoveId.AGILITY ], + [ 28, MoveId.IRON_TAIL ], + [ 32, MoveId.DISCHARGE ], + [ 34, MoveId.FLOATY_FALL ], // Custom + [ 36, MoveId.THUNDERBOLT ], + [ 40, MoveId.LIGHT_SCREEN ], + [ 42, MoveId.SPLISHY_SPLASH ], // Custom + [ 44, MoveId.THUNDER ], + [ 48, MoveId.PIKA_PAPOW ], ], }, - [Species.EEVEE]: { // Custom + [SpeciesId.EEVEE]: { // Custom 1: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.COVET ], - [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.QUICK_ATTACK ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 18, Moves.BOUNCY_BUBBLE ], // Custom - [ 18, Moves.SIZZLY_SLIDE ], // Custom - [ 18, Moves.BUZZY_BUZZ ], // Custom - [ 20, Moves.SWIFT ], - [ 25, Moves.BITE ], - [ 30, Moves.COPYCAT ], - [ 33, Moves.BADDY_BAD ], // Custom - [ 33, Moves.GLITZY_GLOW ], // Custom - [ 35, Moves.BATON_PASS ], - [ 40, Moves.VEEVEE_VOLLEY ], // Custom, replaces Take Down - [ 43, Moves.FREEZY_FROST ], // Custom - [ 43, Moves.SAPPY_SEED ], // Custom - [ 45, Moves.CHARM ], - [ 50, Moves.DOUBLE_EDGE ], - [ 53, Moves.SPARKLY_SWIRL ], // Custom - [ 55, Moves.LAST_RESORT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.COVET ], + [ 5, MoveId.SAND_ATTACK ], + [ 10, MoveId.QUICK_ATTACK ], + [ 15, MoveId.BABY_DOLL_EYES ], + [ 18, MoveId.BOUNCY_BUBBLE ], // Custom + [ 18, MoveId.SIZZLY_SLIDE ], // Custom + [ 18, MoveId.BUZZY_BUZZ ], // Custom + [ 20, MoveId.SWIFT ], + [ 25, MoveId.BITE ], + [ 30, MoveId.COPYCAT ], + [ 33, MoveId.BADDY_BAD ], // Custom + [ 33, MoveId.GLITZY_GLOW ], // Custom + [ 35, MoveId.BATON_PASS ], + [ 40, MoveId.VEEVEE_VOLLEY ], // Custom, replaces Take Down + [ 43, MoveId.FREEZY_FROST ], // Custom + [ 43, MoveId.SAPPY_SEED ], // Custom + [ 45, MoveId.CHARM ], + [ 50, MoveId.DOUBLE_EDGE ], + [ 53, MoveId.SPARKLY_SWIRL ], // Custom + [ 55, MoveId.LAST_RESORT ], ], 2: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.GROWL ], - [ 1, Moves.HELPING_HAND ], - [ 1, Moves.COVET ], - [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.QUICK_ATTACK ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 18, Moves.BOUNCY_BUBBLE ], // Custom - [ 18, Moves.SIZZLY_SLIDE ], // Custom - [ 18, Moves.BUZZY_BUZZ ], // Custom - [ 20, Moves.SWIFT ], - [ 25, Moves.BITE ], - [ 30, Moves.COPYCAT ], - [ 33, Moves.BADDY_BAD ], // Custom - [ 33, Moves.GLITZY_GLOW ], // Custom - [ 35, Moves.BATON_PASS ], - [ 40, Moves.VEEVEE_VOLLEY ], // Custom, replaces Take Down - [ 43, Moves.FREEZY_FROST ], // Custom - [ 43, Moves.SAPPY_SEED ], // Custom - [ 45, Moves.CHARM ], - [ 50, Moves.DOUBLE_EDGE ], - [ 53, Moves.SPARKLY_SWIRL ], // Custom - [ 55, Moves.LAST_RESORT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.HELPING_HAND ], + [ 1, MoveId.COVET ], + [ 5, MoveId.SAND_ATTACK ], + [ 10, MoveId.QUICK_ATTACK ], + [ 15, MoveId.BABY_DOLL_EYES ], + [ 18, MoveId.BOUNCY_BUBBLE ], // Custom + [ 18, MoveId.SIZZLY_SLIDE ], // Custom + [ 18, MoveId.BUZZY_BUZZ ], // Custom + [ 20, MoveId.SWIFT ], + [ 25, MoveId.BITE ], + [ 30, MoveId.COPYCAT ], + [ 33, MoveId.BADDY_BAD ], // Custom + [ 33, MoveId.GLITZY_GLOW ], // Custom + [ 35, MoveId.BATON_PASS ], + [ 40, MoveId.VEEVEE_VOLLEY ], // Custom, replaces Take Down + [ 43, MoveId.FREEZY_FROST ], // Custom + [ 43, MoveId.SAPPY_SEED ], // Custom + [ 45, MoveId.CHARM ], + [ 50, MoveId.DOUBLE_EDGE ], + [ 53, MoveId.SPARKLY_SWIRL ], // Custom + [ 55, MoveId.LAST_RESORT ], ], }, - [Species.DEOXYS]: { + [SpeciesId.DEOXYS]: { 1: [ - [ 1, Moves.CONFUSION ], // Custom - [ 1, Moves.WRAP ], - [ 1, Moves.LEER ], - [ 7, Moves.NIGHT_SHADE ], - [ 13, Moves.TELEPORT ], - [ 19, Moves.TAUNT ], - [ 25, Moves.PURSUIT ], - [ 31, Moves.PSYCHIC ], - [ 37, Moves.SUPERPOWER ], - [ 43, Moves.PSYCHO_SHIFT ], - [ 49, Moves.ZEN_HEADBUTT ], - [ 55, Moves.COSMIC_POWER ], - [ 61, Moves.ZAP_CANNON ], - [ 67, Moves.PSYCHO_BOOST ], - [ 73, Moves.HYPER_BEAM ], + [ 1, MoveId.CONFUSION ], // Custom + [ 1, MoveId.WRAP ], + [ 1, MoveId.LEER ], + [ 7, MoveId.NIGHT_SHADE ], + [ 13, MoveId.TELEPORT ], + [ 19, MoveId.TAUNT ], + [ 25, MoveId.PURSUIT ], + [ 31, MoveId.PSYCHIC ], + [ 37, MoveId.SUPERPOWER ], + [ 43, MoveId.PSYCHO_SHIFT ], + [ 49, MoveId.ZEN_HEADBUTT ], + [ 55, MoveId.COSMIC_POWER ], + [ 61, MoveId.ZAP_CANNON ], + [ 67, MoveId.PSYCHO_BOOST ], + [ 73, MoveId.HYPER_BEAM ], ], 2: [ - [ 1, Moves.CONFUSION ], // Custom - [ 1, Moves.WRAP ], - [ 1, Moves.LEER ], - [ 7, Moves.NIGHT_SHADE ], - [ 13, Moves.TELEPORT ], - [ 19, Moves.KNOCK_OFF ], - [ 25, Moves.SPIKES ], - [ 31, Moves.PSYCHIC ], - [ 37, Moves.SNATCH ], - [ 43, Moves.PSYCHO_SHIFT ], - [ 49, Moves.ZEN_HEADBUTT ], - [ 55, Moves.AMNESIA ], - [ 55, Moves.IRON_DEFENSE ], - [ 61, Moves.RECOVER ], - [ 67, Moves.PSYCHO_BOOST ], - [ 73, Moves.COUNTER ], - [ 73, Moves.MIRROR_COAT ], + [ 1, MoveId.CONFUSION ], // Custom + [ 1, MoveId.WRAP ], + [ 1, MoveId.LEER ], + [ 7, MoveId.NIGHT_SHADE ], + [ 13, MoveId.TELEPORT ], + [ 19, MoveId.KNOCK_OFF ], + [ 25, MoveId.SPIKES ], + [ 31, MoveId.PSYCHIC ], + [ 37, MoveId.SNATCH ], + [ 43, MoveId.PSYCHO_SHIFT ], + [ 49, MoveId.ZEN_HEADBUTT ], + [ 55, MoveId.AMNESIA ], + [ 55, MoveId.IRON_DEFENSE ], + [ 61, MoveId.RECOVER ], + [ 67, MoveId.PSYCHO_BOOST ], + [ 73, MoveId.COUNTER ], + [ 73, MoveId.MIRROR_COAT ], ], 3: [ - [ 1, Moves.CONFUSION ], // Custom - [ 1, Moves.WRAP ], - [ 1, Moves.LEER ], - [ 7, Moves.NIGHT_SHADE ], - [ 13, Moves.DOUBLE_TEAM ], - [ 19, Moves.KNOCK_OFF ], - [ 25, Moves.PURSUIT ], - [ 31, Moves.PSYCHIC ], - [ 37, Moves.SWIFT ], - [ 43, Moves.PSYCHO_SHIFT ], - [ 49, Moves.ZEN_HEADBUTT ], - [ 55, Moves.AGILITY ], - [ 61, Moves.RECOVER ], - [ 67, Moves.PSYCHO_BOOST ], - [ 73, Moves.EXTREME_SPEED ], + [ 1, MoveId.CONFUSION ], // Custom + [ 1, MoveId.WRAP ], + [ 1, MoveId.LEER ], + [ 7, MoveId.NIGHT_SHADE ], + [ 13, MoveId.DOUBLE_TEAM ], + [ 19, MoveId.KNOCK_OFF ], + [ 25, MoveId.PURSUIT ], + [ 31, MoveId.PSYCHIC ], + [ 37, MoveId.SWIFT ], + [ 43, MoveId.PSYCHO_SHIFT ], + [ 49, MoveId.ZEN_HEADBUTT ], + [ 55, MoveId.AGILITY ], + [ 61, MoveId.RECOVER ], + [ 67, MoveId.PSYCHO_BOOST ], + [ 73, MoveId.EXTREME_SPEED ], ], }, - [Species.WORMADAM]: { + [SpeciesId.WORMADAM]: { 1: [ - [ EVOLVE_MOVE, Moves.QUIVER_DANCE ], - [ 1, Moves.STRUGGLE_BUG ], // Previous Stage Move, Custom - [ 1, Moves.TACKLE ], - [ 1, Moves.PROTECT ], - [ 1, Moves.SUCKER_PUNCH ], - [ 1, Moves.BUG_BITE ], - [ 1, Moves.PROTECT ], - [ 10, Moves.TACKLE ], - [ 20, Moves.STRING_SHOT ], - [ 23, Moves.CONFUSION ], - [ 26, Moves.ROCK_BLAST ], - [ 29, Moves.HARDEN ], - [ 32, Moves.PSYBEAM ], - [ 35, Moves.INFESTATION ], - [ 38, Moves.FLAIL ], - [ 41, Moves.ATTRACT ], - [ 44, Moves.PSYCHIC ], - [ 47, Moves.FISSURE ], - [ 50, Moves.BUG_BUZZ ], + [ EVOLVE_MOVE, MoveId.QUIVER_DANCE ], + [ 1, MoveId.STRUGGLE_BUG ], // Previous Stage Move, Custom + [ 1, MoveId.TACKLE ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.SUCKER_PUNCH ], + [ 1, MoveId.BUG_BITE ], + [ 1, MoveId.PROTECT ], + [ 10, MoveId.TACKLE ], + [ 20, MoveId.STRING_SHOT ], + [ 23, MoveId.CONFUSION ], + [ 26, MoveId.ROCK_BLAST ], + [ 29, MoveId.HARDEN ], + [ 32, MoveId.PSYBEAM ], + [ 35, MoveId.INFESTATION ], + [ 38, MoveId.FLAIL ], + [ 41, MoveId.ATTRACT ], + [ 44, MoveId.PSYCHIC ], + [ 47, MoveId.FISSURE ], + [ 50, MoveId.BUG_BUZZ ], ], 2: [ - [ EVOLVE_MOVE, Moves.QUIVER_DANCE ], - [ 1, Moves.STRUGGLE_BUG ], // Previous Stage Move, Custom - [ 1, Moves.METAL_BURST ], - [ 1, Moves.TACKLE ], - [ 1, Moves.PROTECT ], - [ 1, Moves.SUCKER_PUNCH ], - [ 1, Moves.BUG_BITE ], - [ 1, Moves.PROTECT ], - [ 10, Moves.TACKLE ], - [ 20, Moves.STRING_SHOT ], - [ 23, Moves.CONFUSION ], - [ 26, Moves.METAL_BURST ], - [ 29, Moves.METAL_SOUND ], - [ 32, Moves.PSYBEAM ], - [ 35, Moves.INFESTATION ], - [ 38, Moves.FLAIL ], - [ 41, Moves.ATTRACT ], - [ 44, Moves.PSYCHIC ], - [ 47, Moves.IRON_HEAD ], - [ 50, Moves.BUG_BUZZ ], + [ EVOLVE_MOVE, MoveId.QUIVER_DANCE ], + [ 1, MoveId.STRUGGLE_BUG ], // Previous Stage Move, Custom + [ 1, MoveId.METAL_BURST ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.PROTECT ], + [ 1, MoveId.SUCKER_PUNCH ], + [ 1, MoveId.BUG_BITE ], + [ 1, MoveId.PROTECT ], + [ 10, MoveId.TACKLE ], + [ 20, MoveId.STRING_SHOT ], + [ 23, MoveId.CONFUSION ], + [ 26, MoveId.METAL_BURST ], + [ 29, MoveId.METAL_SOUND ], + [ 32, MoveId.PSYBEAM ], + [ 35, MoveId.INFESTATION ], + [ 38, MoveId.FLAIL ], + [ 41, MoveId.ATTRACT ], + [ 44, MoveId.PSYCHIC ], + [ 47, MoveId.IRON_HEAD ], + [ 50, MoveId.BUG_BUZZ ], ], }, - [Species.ROTOM]: { + [SpeciesId.ROTOM]: { 1: [ - [ 1, Moves.OVERHEAT ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.ASTONISH ], - [ 5, Moves.THUNDER_SHOCK ], - [ 10, Moves.CONFUSE_RAY ], - [ 15, Moves.CHARGE ], - [ 20, Moves.ELECTRO_BALL ], - [ 25, Moves.THUNDER_WAVE ], - [ 30, Moves.SHOCK_WAVE ], - [ 35, Moves.HEX ], - [ 40, Moves.SUBSTITUTE ], - [ 45, Moves.TRICK ], - [ 50, Moves.DISCHARGE ], - [ 55, Moves.UPROAR ], + [ 1, MoveId.OVERHEAT ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.ASTONISH ], + [ 5, MoveId.THUNDER_SHOCK ], + [ 10, MoveId.CONFUSE_RAY ], + [ 15, MoveId.CHARGE ], + [ 20, MoveId.ELECTRO_BALL ], + [ 25, MoveId.THUNDER_WAVE ], + [ 30, MoveId.SHOCK_WAVE ], + [ 35, MoveId.HEX ], + [ 40, MoveId.SUBSTITUTE ], + [ 45, MoveId.TRICK ], + [ 50, MoveId.DISCHARGE ], + [ 55, MoveId.UPROAR ], ], 2: [ - [ 1, Moves.HYDRO_PUMP ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.ASTONISH ], - [ 5, Moves.THUNDER_SHOCK ], - [ 10, Moves.CONFUSE_RAY ], - [ 15, Moves.CHARGE ], - [ 20, Moves.ELECTRO_BALL ], - [ 25, Moves.THUNDER_WAVE ], - [ 30, Moves.SHOCK_WAVE ], - [ 35, Moves.HEX ], - [ 40, Moves.SUBSTITUTE ], - [ 45, Moves.TRICK ], - [ 50, Moves.DISCHARGE ], - [ 55, Moves.UPROAR ], + [ 1, MoveId.HYDRO_PUMP ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.ASTONISH ], + [ 5, MoveId.THUNDER_SHOCK ], + [ 10, MoveId.CONFUSE_RAY ], + [ 15, MoveId.CHARGE ], + [ 20, MoveId.ELECTRO_BALL ], + [ 25, MoveId.THUNDER_WAVE ], + [ 30, MoveId.SHOCK_WAVE ], + [ 35, MoveId.HEX ], + [ 40, MoveId.SUBSTITUTE ], + [ 45, MoveId.TRICK ], + [ 50, MoveId.DISCHARGE ], + [ 55, MoveId.UPROAR ], ], 3: [ - [ 1, Moves.BLIZZARD ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.ASTONISH ], - [ 5, Moves.THUNDER_SHOCK ], - [ 10, Moves.CONFUSE_RAY ], - [ 15, Moves.CHARGE ], - [ 20, Moves.ELECTRO_BALL ], - [ 25, Moves.THUNDER_WAVE ], - [ 30, Moves.SHOCK_WAVE ], - [ 35, Moves.HEX ], - [ 40, Moves.SUBSTITUTE ], - [ 45, Moves.TRICK ], - [ 50, Moves.DISCHARGE ], - [ 55, Moves.UPROAR ], + [ 1, MoveId.BLIZZARD ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.ASTONISH ], + [ 5, MoveId.THUNDER_SHOCK ], + [ 10, MoveId.CONFUSE_RAY ], + [ 15, MoveId.CHARGE ], + [ 20, MoveId.ELECTRO_BALL ], + [ 25, MoveId.THUNDER_WAVE ], + [ 30, MoveId.SHOCK_WAVE ], + [ 35, MoveId.HEX ], + [ 40, MoveId.SUBSTITUTE ], + [ 45, MoveId.TRICK ], + [ 50, MoveId.DISCHARGE ], + [ 55, MoveId.UPROAR ], ], 4: [ - [ 1, Moves.AIR_SLASH ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.ASTONISH ], - [ 5, Moves.THUNDER_SHOCK ], - [ 10, Moves.CONFUSE_RAY ], - [ 15, Moves.CHARGE ], - [ 20, Moves.ELECTRO_BALL ], - [ 25, Moves.THUNDER_WAVE ], - [ 30, Moves.SHOCK_WAVE ], - [ 35, Moves.HEX ], - [ 40, Moves.SUBSTITUTE ], - [ 45, Moves.TRICK ], - [ 50, Moves.DISCHARGE ], - [ 55, Moves.UPROAR ], + [ 1, MoveId.AIR_SLASH ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.ASTONISH ], + [ 5, MoveId.THUNDER_SHOCK ], + [ 10, MoveId.CONFUSE_RAY ], + [ 15, MoveId.CHARGE ], + [ 20, MoveId.ELECTRO_BALL ], + [ 25, MoveId.THUNDER_WAVE ], + [ 30, MoveId.SHOCK_WAVE ], + [ 35, MoveId.HEX ], + [ 40, MoveId.SUBSTITUTE ], + [ 45, MoveId.TRICK ], + [ 50, MoveId.DISCHARGE ], + [ 55, MoveId.UPROAR ], ], 5: [ - [ 1, Moves.LEAF_STORM ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.ASTONISH ], - [ 5, Moves.THUNDER_SHOCK ], - [ 10, Moves.CONFUSE_RAY ], - [ 15, Moves.CHARGE ], - [ 20, Moves.ELECTRO_BALL ], - [ 25, Moves.THUNDER_WAVE ], - [ 30, Moves.SHOCK_WAVE ], - [ 35, Moves.HEX ], - [ 40, Moves.SUBSTITUTE ], - [ 45, Moves.TRICK ], - [ 50, Moves.DISCHARGE ], - [ 55, Moves.UPROAR ], + [ 1, MoveId.LEAF_STORM ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.ASTONISH ], + [ 5, MoveId.THUNDER_SHOCK ], + [ 10, MoveId.CONFUSE_RAY ], + [ 15, MoveId.CHARGE ], + [ 20, MoveId.ELECTRO_BALL ], + [ 25, MoveId.THUNDER_WAVE ], + [ 30, MoveId.SHOCK_WAVE ], + [ 35, MoveId.HEX ], + [ 40, MoveId.SUBSTITUTE ], + [ 45, MoveId.TRICK ], + [ 50, MoveId.DISCHARGE ], + [ 55, MoveId.UPROAR ], ], }, - [Species.SHAYMIN]: { + [SpeciesId.SHAYMIN]: { 1: [ - [ 1, Moves.LEAFAGE ], // Custom - [ 1, Moves.GROWTH ], - [ 10, Moves.MAGICAL_LEAF ], - [ 19, Moves.LEECH_SEED ], - [ 28, Moves.QUICK_ATTACK ], - [ 37, Moves.SWEET_SCENT ], - [ 46, Moves.NATURAL_GIFT ], - [ 55, Moves.WORRY_SEED ], - [ 64, Moves.AIR_SLASH ], - [ 73, Moves.ENERGY_BALL ], - [ 82, Moves.SWEET_KISS ], - [ 91, Moves.LEAF_STORM ], - [ 100, Moves.SEED_FLARE ], + [ 1, MoveId.LEAFAGE ], // Custom + [ 1, MoveId.GROWTH ], + [ 10, MoveId.MAGICAL_LEAF ], + [ 19, MoveId.LEECH_SEED ], + [ 28, MoveId.QUICK_ATTACK ], + [ 37, MoveId.SWEET_SCENT ], + [ 46, MoveId.NATURAL_GIFT ], + [ 55, MoveId.WORRY_SEED ], + [ 64, MoveId.AIR_SLASH ], + [ 73, MoveId.ENERGY_BALL ], + [ 82, MoveId.SWEET_KISS ], + [ 91, MoveId.LEAF_STORM ], + [ 100, MoveId.SEED_FLARE ], ] }, - [Species.BASCULIN]: { + [SpeciesId.BASCULIN]: { 1: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_GUN ], - [ 4, Moves.TACKLE ], - [ 8, Moves.FLAIL ], - [ 12, Moves.AQUA_JET ], - [ 16, Moves.BITE ], - [ 20, Moves.SCARY_FACE ], - [ 24, Moves.HEADBUTT ], - [ 28, Moves.SOAK ], - [ 32, Moves.CRUNCH ], - [ 36, Moves.TAKE_DOWN ], - [ 40, Moves.FINAL_GAMBIT ], - [ 44, Moves.WAVE_CRASH ], - [ 48, Moves.THRASH ], - [ 52, Moves.DOUBLE_EDGE ], - [ 56, Moves.HEAD_SMASH ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_GUN ], + [ 4, MoveId.TACKLE ], + [ 8, MoveId.FLAIL ], + [ 12, MoveId.AQUA_JET ], + [ 16, MoveId.BITE ], + [ 20, MoveId.SCARY_FACE ], + [ 24, MoveId.HEADBUTT ], + [ 28, MoveId.SOAK ], + [ 32, MoveId.CRUNCH ], + [ 36, MoveId.TAKE_DOWN ], + [ 40, MoveId.FINAL_GAMBIT ], + [ 44, MoveId.WAVE_CRASH ], + [ 48, MoveId.THRASH ], + [ 52, MoveId.DOUBLE_EDGE ], + [ 56, MoveId.HEAD_SMASH ], ], 2: [ - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.WATER_GUN ], - [ 4, Moves.TACKLE ], - [ 8, Moves.FLAIL ], - [ 12, Moves.AQUA_JET ], - [ 16, Moves.BITE ], - [ 20, Moves.SCARY_FACE ], - [ 24, Moves.HEADBUTT ], - [ 28, Moves.SOAK ], - [ 32, Moves.CRUNCH ], - [ 36, Moves.TAKE_DOWN ], - [ 40, Moves.UPROAR ], - [ 44, Moves.WAVE_CRASH ], - [ 48, Moves.THRASH ], - [ 52, Moves.DOUBLE_EDGE ], - [ 56, Moves.HEAD_SMASH ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.WATER_GUN ], + [ 4, MoveId.TACKLE ], + [ 8, MoveId.FLAIL ], + [ 12, MoveId.AQUA_JET ], + [ 16, MoveId.BITE ], + [ 20, MoveId.SCARY_FACE ], + [ 24, MoveId.HEADBUTT ], + [ 28, MoveId.SOAK ], + [ 32, MoveId.CRUNCH ], + [ 36, MoveId.TAKE_DOWN ], + [ 40, MoveId.UPROAR ], + [ 44, MoveId.WAVE_CRASH ], + [ 48, MoveId.THRASH ], + [ 52, MoveId.DOUBLE_EDGE ], + [ 56, MoveId.HEAD_SMASH ], ] }, - [Species.KYUREM]: { + [SpeciesId.KYUREM]: { 1: [ - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.ANCIENT_POWER ], - [ 1, Moves.NOBLE_ROAR ], - [ 1, Moves.FREEZE_DRY ], - [ 8, Moves.SLASH ], - [ 16, Moves.ENDEAVOR ], - [ 24, Moves.DRAGON_PULSE ], - [ 32, Moves.ICE_BEAM ], - [ 40, Moves.HYPER_VOICE ], - [ 48, Moves.FUSION_BOLT ], - [ 56, Moves.BLIZZARD ], - [ 64, Moves.IMPRISON ], - [ 72, Moves.OUTRAGE ], - [ 80, Moves.FREEZE_SHOCK ], - [ 88, Moves.SHEER_COLD ], + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.ANCIENT_POWER ], + [ 1, MoveId.NOBLE_ROAR ], + [ 1, MoveId.FREEZE_DRY ], + [ 8, MoveId.SLASH ], + [ 16, MoveId.ENDEAVOR ], + [ 24, MoveId.DRAGON_PULSE ], + [ 32, MoveId.ICE_BEAM ], + [ 40, MoveId.HYPER_VOICE ], + [ 48, MoveId.FUSION_BOLT ], + [ 56, MoveId.BLIZZARD ], + [ 64, MoveId.IMPRISON ], + [ 72, MoveId.OUTRAGE ], + [ 80, MoveId.FREEZE_SHOCK ], + [ 88, MoveId.SHEER_COLD ], ], 2: [ - [ 1, Moves.DRAGON_BREATH ], - [ 1, Moves.ANCIENT_POWER ], - [ 1, Moves.NOBLE_ROAR ], - [ 1, Moves.FREEZE_DRY ], - [ 8, Moves.SLASH ], - [ 16, Moves.ENDEAVOR ], - [ 24, Moves.DRAGON_PULSE ], - [ 32, Moves.ICE_BEAM ], - [ 40, Moves.HYPER_VOICE ], - [ 48, Moves.FUSION_FLARE ], - [ 56, Moves.BLIZZARD ], - [ 64, Moves.IMPRISON ], - [ 72, Moves.OUTRAGE ], - [ 80, Moves.ICE_BURN ], - [ 88, Moves.SHEER_COLD ], + [ 1, MoveId.DRAGON_BREATH ], + [ 1, MoveId.ANCIENT_POWER ], + [ 1, MoveId.NOBLE_ROAR ], + [ 1, MoveId.FREEZE_DRY ], + [ 8, MoveId.SLASH ], + [ 16, MoveId.ENDEAVOR ], + [ 24, MoveId.DRAGON_PULSE ], + [ 32, MoveId.ICE_BEAM ], + [ 40, MoveId.HYPER_VOICE ], + [ 48, MoveId.FUSION_FLARE ], + [ 56, MoveId.BLIZZARD ], + [ 64, MoveId.IMPRISON ], + [ 72, MoveId.OUTRAGE ], + [ 80, MoveId.ICE_BURN ], + [ 88, MoveId.SHEER_COLD ], ], }, - [Species.MEOWSTIC]: { + [SpeciesId.MEOWSTIC]: { 1: [ - [ 1, Moves.SCRATCH ], - [ 1, Moves.LEER ], - [ 1, Moves.FAKE_OUT ], - [ 1, Moves.MAGICAL_LEAF ], - [ 1, Moves.DISARMING_VOICE ], - [ 9, Moves.CONFUSION ], - [ 12, Moves.STORED_POWER ], - [ 15, Moves.CHARGE_BEAM ], - [ 18, Moves.COVET ], - [ 21, Moves.PSYBEAM ], - [ 24, Moves.SUCKER_PUNCH ], - [ 29, Moves.ROLE_PLAY ], - [ 34, Moves.LIGHT_SCREEN ], - [ 34, Moves.REFLECT ], - [ 39, Moves.PSYSHOCK ], - [ 44, Moves.EXTRASENSORY ], - [ 49, Moves.SHADOW_BALL ], - [ 54, Moves.PSYCHIC ], - [ 59, Moves.FUTURE_SIGHT ], + [ 1, MoveId.SCRATCH ], + [ 1, MoveId.LEER ], + [ 1, MoveId.FAKE_OUT ], + [ 1, MoveId.MAGICAL_LEAF ], + [ 1, MoveId.DISARMING_VOICE ], + [ 9, MoveId.CONFUSION ], + [ 12, MoveId.STORED_POWER ], + [ 15, MoveId.CHARGE_BEAM ], + [ 18, MoveId.COVET ], + [ 21, MoveId.PSYBEAM ], + [ 24, MoveId.SUCKER_PUNCH ], + [ 29, MoveId.ROLE_PLAY ], + [ 34, MoveId.LIGHT_SCREEN ], + [ 34, MoveId.REFLECT ], + [ 39, MoveId.PSYSHOCK ], + [ 44, MoveId.EXTRASENSORY ], + [ 49, MoveId.SHADOW_BALL ], + [ 54, MoveId.PSYCHIC ], + [ 59, MoveId.FUTURE_SIGHT ], ], }, - [Species.HOOPA]: { + [SpeciesId.HOOPA]: { 1: [ - [ 1, Moves.CONFUSION ], - [ 1, Moves.DESTINY_BOND ], - [ 1, Moves.ALLY_SWITCH ], - [ 6, Moves.ASTONISH ], - [ 10, Moves.TRICK ], - [ 15, Moves.LIGHT_SCREEN ], - [ 19, Moves.PSYBEAM ], - [ 25, Moves.SKILL_SWAP ], - [ 29, Moves.GUARD_SPLIT ], - [ 29, Moves.POWER_SPLIT ], - [ 46, Moves.KNOCK_OFF ], - [ 50, Moves.TRICK_ROOM ], - [ 50, Moves.WONDER_ROOM ], - [ 55, Moves.DARK_PULSE ], - [ 75, Moves.PSYCHIC ], - [ 85, Moves.HYPERSPACE_FURY ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.DESTINY_BOND ], + [ 1, MoveId.ALLY_SWITCH ], + [ 6, MoveId.ASTONISH ], + [ 10, MoveId.TRICK ], + [ 15, MoveId.LIGHT_SCREEN ], + [ 19, MoveId.PSYBEAM ], + [ 25, MoveId.SKILL_SWAP ], + [ 29, MoveId.GUARD_SPLIT ], + [ 29, MoveId.POWER_SPLIT ], + [ 46, MoveId.KNOCK_OFF ], + [ 50, MoveId.TRICK_ROOM ], + [ 50, MoveId.WONDER_ROOM ], + [ 55, MoveId.DARK_PULSE ], + [ 75, MoveId.PSYCHIC ], + [ 85, MoveId.HYPERSPACE_FURY ], ], }, - [Species.GRENINJA]: { + [SpeciesId.GRENINJA]: { 1: [ - [ EVOLVE_MOVE, Moves.WATER_SHURIKEN ], - [ 1, Moves.POUND ], - [ 1, Moves.GROWL ], - [ 1, Moves.WATER_GUN ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.ROUND ], // Previous Stage Move - [ 1, Moves.FLING ], // Previous Stage Move - [ 1, Moves.SMACK_DOWN ], // Previous Stage Move - [ 1, Moves.BOUNCE ], // Previous Stage Move - [ 1, Moves.HAZE ], - [ 1, Moves.MAT_BLOCK ], - [ 1, Moves.ROLE_PLAY ], - [ 1, Moves.NIGHT_SLASH ], - [ 10, Moves.LICK ], - [ 14, Moves.WATER_PULSE ], - [ 19, Moves.SMOKESCREEN ], - [ 23, Moves.SHADOW_SNEAK ], - [ 28, Moves.SPIKES ], - [ 33, Moves.AERIAL_ACE ], - [ 42, Moves.SUBSTITUTE ], - [ 49, Moves.EXTRASENSORY ], - [ 56, Moves.DOUBLE_TEAM ], - [ 68, Moves.HYDRO_PUMP ], + [ EVOLVE_MOVE, MoveId.WATER_SHURIKEN ], + [ 1, MoveId.POUND ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.WATER_GUN ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.ROUND ], // Previous Stage Move + [ 1, MoveId.FLING ], // Previous Stage Move + [ 1, MoveId.SMACK_DOWN ], // Previous Stage Move + [ 1, MoveId.BOUNCE ], // Previous Stage Move + [ 1, MoveId.HAZE ], + [ 1, MoveId.MAT_BLOCK ], + [ 1, MoveId.ROLE_PLAY ], + [ 1, MoveId.NIGHT_SLASH ], + [ 10, MoveId.LICK ], + [ 14, MoveId.WATER_PULSE ], + [ 19, MoveId.SMOKESCREEN ], + [ 23, MoveId.SHADOW_SNEAK ], + [ 28, MoveId.SPIKES ], + [ 33, MoveId.AERIAL_ACE ], + [ 42, MoveId.SUBSTITUTE ], + [ 49, MoveId.EXTRASENSORY ], + [ 56, MoveId.DOUBLE_TEAM ], + [ 68, MoveId.HYDRO_PUMP ], ], }, - [Species.LYCANROC]: { + [SpeciesId.LYCANROC]: { 1: [ - [ EVOLVE_MOVE, Moves.COUNTER ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.REVERSAL ], - [ 1, Moves.ENDURE ], - [ 1, Moves.TAUNT ], - [ 12, Moves.ROCK_THROW ], - [ 16, Moves.HOWL ], - [ 20, Moves.BITE ], - [ 24, Moves.ROCK_TOMB ], - [ 30, Moves.ROAR ], - [ 36, Moves.ROCK_SLIDE ], - [ 42, Moves.CRUNCH ], - [ 48, Moves.SCARY_FACE ], - [ 54, Moves.STEALTH_ROCK ], - [ 60, Moves.STONE_EDGE ], + [ EVOLVE_MOVE, MoveId.COUNTER ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.REVERSAL ], + [ 1, MoveId.ENDURE ], + [ 1, MoveId.TAUNT ], + [ 12, MoveId.ROCK_THROW ], + [ 16, MoveId.HOWL ], + [ 20, MoveId.BITE ], + [ 24, MoveId.ROCK_TOMB ], + [ 30, MoveId.ROAR ], + [ 36, MoveId.ROCK_SLIDE ], + [ 42, MoveId.CRUNCH ], + [ 48, MoveId.SCARY_FACE ], + [ 54, MoveId.STEALTH_ROCK ], + [ 60, MoveId.STONE_EDGE ], ], 2: [ - [ EVOLVE_MOVE, Moves.CRUSH_CLAW ], - [ 1, Moves.SAND_ATTACK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.LEER ], - [ 1, Moves.COUNTER ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.DOUBLE_TEAM ], - [ 1, Moves.REVERSAL ], - [ 1, Moves.ENDURE ], - [ 1, Moves.TAUNT ], - [ 1, Moves.SUCKER_PUNCH ], - [ 1, Moves.QUICK_GUARD ], - [ 1, Moves.ACCELEROCK ], - [ 12, Moves.ROCK_THROW ], - [ 16, Moves.HOWL ], - [ 20, Moves.BITE ], - [ 24, Moves.ROCK_TOMB ], - [ 30, Moves.ROAR ], - [ 36, Moves.ROCK_SLIDE ], - [ 42, Moves.CRUNCH ], - [ 48, Moves.SCARY_FACE ], - [ 54, Moves.STEALTH_ROCK ], - [ 60, Moves.STONE_EDGE ], + [ EVOLVE_MOVE, MoveId.CRUSH_CLAW ], + [ 1, MoveId.SAND_ATTACK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.LEER ], + [ 1, MoveId.COUNTER ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.DOUBLE_TEAM ], + [ 1, MoveId.REVERSAL ], + [ 1, MoveId.ENDURE ], + [ 1, MoveId.TAUNT ], + [ 1, MoveId.SUCKER_PUNCH ], + [ 1, MoveId.QUICK_GUARD ], + [ 1, MoveId.ACCELEROCK ], + [ 12, MoveId.ROCK_THROW ], + [ 16, MoveId.HOWL ], + [ 20, MoveId.BITE ], + [ 24, MoveId.ROCK_TOMB ], + [ 30, MoveId.ROAR ], + [ 36, MoveId.ROCK_SLIDE ], + [ 42, MoveId.CRUNCH ], + [ 48, MoveId.SCARY_FACE ], + [ 54, MoveId.STEALTH_ROCK ], + [ 60, MoveId.STONE_EDGE ], ], }, - [Species.NECROZMA]: { + [SpeciesId.NECROZMA]: { 1: [ - [ EVOLVE_MOVE, Moves.SUNSTEEL_STRIKE ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.MORNING_SUN ], - [ 1, Moves.MOONLIGHT ], - [ 1, Moves.GRAVITY ], - [ 1, Moves.CHARGE_BEAM ], - [ 8, Moves.STEALTH_ROCK ], - [ 16, Moves.SLASH ], - [ 24, Moves.NIGHT_SLASH ], - [ 32, Moves.PSYCHO_CUT ], - [ 40, Moves.STORED_POWER ], - [ 48, Moves.ROCK_BLAST ], - [ 56, Moves.IRON_DEFENSE ], - [ 64, Moves.POWER_GEM ], - [ 72, Moves.PHOTON_GEYSER ], - [ 80, Moves.AUTOTOMIZE ], - [ 88, Moves.PRISMATIC_LASER ], + [ EVOLVE_MOVE, MoveId.SUNSTEEL_STRIKE ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.MORNING_SUN ], + [ 1, MoveId.MOONLIGHT ], + [ 1, MoveId.GRAVITY ], + [ 1, MoveId.CHARGE_BEAM ], + [ 8, MoveId.STEALTH_ROCK ], + [ 16, MoveId.SLASH ], + [ 24, MoveId.NIGHT_SLASH ], + [ 32, MoveId.PSYCHO_CUT ], + [ 40, MoveId.STORED_POWER ], + [ 48, MoveId.ROCK_BLAST ], + [ 56, MoveId.IRON_DEFENSE ], + [ 64, MoveId.POWER_GEM ], + [ 72, MoveId.PHOTON_GEYSER ], + [ 80, MoveId.AUTOTOMIZE ], + [ 88, MoveId.PRISMATIC_LASER ], ], 2: [ - [ EVOLVE_MOVE, Moves.MOONGEIST_BEAM ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.MORNING_SUN ], - [ 1, Moves.MOONLIGHT ], - [ 1, Moves.GRAVITY ], - [ 1, Moves.CHARGE_BEAM ], - [ 8, Moves.STEALTH_ROCK ], - [ 16, Moves.SLASH ], - [ 24, Moves.NIGHT_SLASH ], - [ 32, Moves.PSYCHO_CUT ], - [ 40, Moves.STORED_POWER ], - [ 48, Moves.ROCK_BLAST ], - [ 56, Moves.IRON_DEFENSE ], - [ 64, Moves.POWER_GEM ], - [ 72, Moves.PHOTON_GEYSER ], - [ 80, Moves.AUTOTOMIZE ], - [ 88, Moves.PRISMATIC_LASER ], + [ EVOLVE_MOVE, MoveId.MOONGEIST_BEAM ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.MORNING_SUN ], + [ 1, MoveId.MOONLIGHT ], + [ 1, MoveId.GRAVITY ], + [ 1, MoveId.CHARGE_BEAM ], + [ 8, MoveId.STEALTH_ROCK ], + [ 16, MoveId.SLASH ], + [ 24, MoveId.NIGHT_SLASH ], + [ 32, MoveId.PSYCHO_CUT ], + [ 40, MoveId.STORED_POWER ], + [ 48, MoveId.ROCK_BLAST ], + [ 56, MoveId.IRON_DEFENSE ], + [ 64, MoveId.POWER_GEM ], + [ 72, MoveId.PHOTON_GEYSER ], + [ 80, MoveId.AUTOTOMIZE ], + [ 88, MoveId.PRISMATIC_LASER ], ], 3: [ - [ EVOLVE_MOVE, Moves.SUNSTEEL_STRIKE ], - [ EVOLVE_MOVE, Moves.MOONGEIST_BEAM ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.MORNING_SUN ], - [ 1, Moves.MOONLIGHT ], - [ 1, Moves.GRAVITY ], - [ 1, Moves.CHARGE_BEAM ], - [ 8, Moves.STEALTH_ROCK ], - [ 16, Moves.SLASH ], - [ 24, Moves.NIGHT_SLASH ], - [ 32, Moves.PSYCHO_CUT ], - [ 40, Moves.STORED_POWER ], - [ 48, Moves.ROCK_BLAST ], - [ 56, Moves.IRON_DEFENSE ], - [ 64, Moves.POWER_GEM ], - [ 72, Moves.PHOTON_GEYSER ], - [ 80, Moves.AUTOTOMIZE ], - [ 88, Moves.PRISMATIC_LASER ], + [ EVOLVE_MOVE, MoveId.SUNSTEEL_STRIKE ], + [ EVOLVE_MOVE, MoveId.MOONGEIST_BEAM ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.MORNING_SUN ], + [ 1, MoveId.MOONLIGHT ], + [ 1, MoveId.GRAVITY ], + [ 1, MoveId.CHARGE_BEAM ], + [ 8, MoveId.STEALTH_ROCK ], + [ 16, MoveId.SLASH ], + [ 24, MoveId.NIGHT_SLASH ], + [ 32, MoveId.PSYCHO_CUT ], + [ 40, MoveId.STORED_POWER ], + [ 48, MoveId.ROCK_BLAST ], + [ 56, MoveId.IRON_DEFENSE ], + [ 64, MoveId.POWER_GEM ], + [ 72, MoveId.PHOTON_GEYSER ], + [ 80, MoveId.AUTOTOMIZE ], + [ 88, MoveId.PRISMATIC_LASER ], ], }, - [Species.TOXTRICITY]: { + [SpeciesId.TOXTRICITY]: { 1: [ - [ EVOLVE_MOVE, Moves.SPARK ], - [ 1, Moves.LEER ], - [ 1, Moves.GROWL ], - [ 1, Moves.ACID ], - [ 1, Moves.THUNDER_SHOCK ], - [ 1, Moves.FLAIL ], - [ 1, Moves.ACID_SPRAY ], - [ 1, Moves.BELCH ], - [ 1, Moves.NOBLE_ROAR ], - [ 1, Moves.NUZZLE ], - [ 1, Moves.TEARFUL_LOOK ], - [ 4, Moves.CHARGE ], - [ 8, Moves.SHOCK_WAVE ], - [ 12, Moves.SCARY_FACE ], - [ 16, Moves.TAUNT ], - [ 24, Moves.SCREECH ], - [ 28, Moves.SWAGGER ], - [ 32, Moves.TOXIC ], - [ 36, Moves.DISCHARGE ], - [ 40, Moves.POISON_JAB ], - [ 44, Moves.OVERDRIVE ], - [ 48, Moves.BOOMBURST ], - [ 52, Moves.MAGNETIC_FLUX ], + [ EVOLVE_MOVE, MoveId.SPARK ], + [ 1, MoveId.LEER ], + [ 1, MoveId.GROWL ], + [ 1, MoveId.ACID ], + [ 1, MoveId.THUNDER_SHOCK ], + [ 1, MoveId.FLAIL ], + [ 1, MoveId.ACID_SPRAY ], + [ 1, MoveId.BELCH ], + [ 1, MoveId.NOBLE_ROAR ], + [ 1, MoveId.NUZZLE ], + [ 1, MoveId.TEARFUL_LOOK ], + [ 4, MoveId.CHARGE ], + [ 8, MoveId.SHOCK_WAVE ], + [ 12, MoveId.SCARY_FACE ], + [ 16, MoveId.TAUNT ], + [ 24, MoveId.SCREECH ], + [ 28, MoveId.SWAGGER ], + [ 32, MoveId.TOXIC ], + [ 36, MoveId.DISCHARGE ], + [ 40, MoveId.POISON_JAB ], + [ 44, MoveId.OVERDRIVE ], + [ 48, MoveId.BOOMBURST ], + [ 52, MoveId.MAGNETIC_FLUX ], ], }, - [Species.INDEEDEE]: { + [SpeciesId.INDEEDEE]: { 1: [ - [ 1, Moves.STORED_POWER ], - [ 1, Moves.PLAY_NICE ], - [ 5, Moves.BATON_PASS ], - [ 10, Moves.DISARMING_VOICE ], - [ 15, Moves.PSYBEAM ], - [ 20, Moves.HELPING_HAND ], - [ 25, Moves.FOLLOW_ME ], - [ 30, Moves.HEALING_WISH ], - [ 35, Moves.PSYCHIC ], - [ 40, Moves.CALM_MIND ], - [ 45, Moves.GUARD_SPLIT ], - [ 50, Moves.PSYCHIC_TERRAIN ], + [ 1, MoveId.STORED_POWER ], + [ 1, MoveId.PLAY_NICE ], + [ 5, MoveId.BATON_PASS ], + [ 10, MoveId.DISARMING_VOICE ], + [ 15, MoveId.PSYBEAM ], + [ 20, MoveId.HELPING_HAND ], + [ 25, MoveId.FOLLOW_ME ], + [ 30, MoveId.HEALING_WISH ], + [ 35, MoveId.PSYCHIC ], + [ 40, MoveId.CALM_MIND ], + [ 45, MoveId.GUARD_SPLIT ], + [ 50, MoveId.PSYCHIC_TERRAIN ], ], }, - [Species.ZACIAN]: { + [SpeciesId.ZACIAN]: { 1: [ - [ EVOLVE_MOVE, Moves.BEHEMOTH_BLADE ], - [ 1, Moves.BITE ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.HOWL ], - [ 1, Moves.QUICK_GUARD ], - [ 1, Moves.SACRED_SWORD ], - [ 11, Moves.SLASH ], - [ 22, Moves.SWORDS_DANCE ], - [ 33, Moves.IRON_HEAD ], - [ 44, Moves.NOBLE_ROAR ], - [ 55, Moves.CRUNCH ], - [ 66, Moves.MOONBLAST ], - [ 77, Moves.CLOSE_COMBAT ], - [ 88, Moves.GIGA_IMPACT ], + [ EVOLVE_MOVE, MoveId.BEHEMOTH_BLADE ], + [ 1, MoveId.BITE ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.HOWL ], + [ 1, MoveId.QUICK_GUARD ], + [ 1, MoveId.SACRED_SWORD ], + [ 11, MoveId.SLASH ], + [ 22, MoveId.SWORDS_DANCE ], + [ 33, MoveId.IRON_HEAD ], + [ 44, MoveId.NOBLE_ROAR ], + [ 55, MoveId.CRUNCH ], + [ 66, MoveId.MOONBLAST ], + [ 77, MoveId.CLOSE_COMBAT ], + [ 88, MoveId.GIGA_IMPACT ], ], }, - [Species.ZAMAZENTA]: { + [SpeciesId.ZAMAZENTA]: { 1: [ - [ EVOLVE_MOVE, Moves.BEHEMOTH_BASH ], - [ 1, Moves.BITE ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.METAL_CLAW ], - [ 1, Moves.HOWL ], - [ 1, Moves.WIDE_GUARD ], - [ 11, Moves.SLASH ], - [ 22, Moves.IRON_DEFENSE ], - [ 33, Moves.IRON_HEAD ], - [ 44, Moves.METAL_BURST ], - [ 55, Moves.CRUNCH ], - [ 66, Moves.MOONBLAST ], - [ 77, Moves.CLOSE_COMBAT ], - [ 88, Moves.GIGA_IMPACT ], + [ EVOLVE_MOVE, MoveId.BEHEMOTH_BASH ], + [ 1, MoveId.BITE ], + [ 1, MoveId.QUICK_ATTACK ], + [ 1, MoveId.METAL_CLAW ], + [ 1, MoveId.HOWL ], + [ 1, MoveId.WIDE_GUARD ], + [ 11, MoveId.SLASH ], + [ 22, MoveId.IRON_DEFENSE ], + [ 33, MoveId.IRON_HEAD ], + [ 44, MoveId.METAL_BURST ], + [ 55, MoveId.CRUNCH ], + [ 66, MoveId.MOONBLAST ], + [ 77, MoveId.CLOSE_COMBAT ], + [ 88, MoveId.GIGA_IMPACT ], ], }, - [Species.ETERNATUS]: { + [SpeciesId.ETERNATUS]: { 1: [ - [ 1, Moves.AGILITY ], - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.POISON_TAIL ], - [ 1, Moves.DRAGON_TAIL ], - [ 8, Moves.TOXIC ], - [ 16, Moves.VENOSHOCK ], - [ 24, Moves.DRAGON_DANCE ], - [ 32, Moves.CROSS_POISON ], - [ 40, Moves.DRAGON_PULSE ], - [ 48, Moves.FLAMETHROWER ], - [ 56, Moves.DYNAMAX_CANNON ], - [ 64, Moves.COSMIC_POWER ], - [ 72, Moves.RECOVER ], - [ 80, Moves.HYPER_BEAM ], - [ 88, Moves.ETERNABEAM ], + [ 1, MoveId.AGILITY ], + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.POISON_TAIL ], + [ 1, MoveId.DRAGON_TAIL ], + [ 8, MoveId.TOXIC ], + [ 16, MoveId.VENOSHOCK ], + [ 24, MoveId.DRAGON_DANCE ], + [ 32, MoveId.CROSS_POISON ], + [ 40, MoveId.DRAGON_PULSE ], + [ 48, MoveId.FLAMETHROWER ], + [ 56, MoveId.DYNAMAX_CANNON ], + [ 64, MoveId.COSMIC_POWER ], + [ 72, MoveId.RECOVER ], + [ 80, MoveId.HYPER_BEAM ], + [ 88, MoveId.ETERNABEAM ], ], }, - [Species.URSHIFU]: { + [SpeciesId.URSHIFU]: { 1: [ - [ EVOLVE_MOVE, Moves.SURGING_STRIKES ], - [ 1, Moves.LEER ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.ENDURE ], - [ 1, Moves.ROCK_SMASH ], - [ 1, Moves.AQUA_JET ], - [ 12, Moves.AERIAL_ACE ], - [ 16, Moves.SCARY_FACE ], - [ 20, Moves.HEADBUTT ], - [ 24, Moves.BRICK_BREAK ], - [ 28, Moves.DETECT ], - [ 32, Moves.BULK_UP ], - [ 36, Moves.IRON_HEAD ], - [ 40, Moves.DYNAMIC_PUNCH ], - [ 44, Moves.COUNTER ], - [ 48, Moves.CLOSE_COMBAT ], - [ 52, Moves.FOCUS_PUNCH ], + [ EVOLVE_MOVE, MoveId.SURGING_STRIKES ], + [ 1, MoveId.LEER ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.ENDURE ], + [ 1, MoveId.ROCK_SMASH ], + [ 1, MoveId.AQUA_JET ], + [ 12, MoveId.AERIAL_ACE ], + [ 16, MoveId.SCARY_FACE ], + [ 20, MoveId.HEADBUTT ], + [ 24, MoveId.BRICK_BREAK ], + [ 28, MoveId.DETECT ], + [ 32, MoveId.BULK_UP ], + [ 36, MoveId.IRON_HEAD ], + [ 40, MoveId.DYNAMIC_PUNCH ], + [ 44, MoveId.COUNTER ], + [ 48, MoveId.CLOSE_COMBAT ], + [ 52, MoveId.FOCUS_PUNCH ], ], 2: [ - [ EVOLVE_MOVE, Moves.WICKED_BLOW ], - [ 1, Moves.LEER ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.ENDURE ], - [ 1, Moves.ROCK_SMASH ], - [ 1, Moves.SUCKER_PUNCH ], - [ 12, Moves.AERIAL_ACE ], - [ 16, Moves.SCARY_FACE ], - [ 20, Moves.HEADBUTT ], - [ 24, Moves.BRICK_BREAK ], - [ 28, Moves.DETECT ], - [ 32, Moves.BULK_UP ], - [ 36, Moves.IRON_HEAD ], - [ 40, Moves.DYNAMIC_PUNCH ], - [ 44, Moves.COUNTER ], - [ 48, Moves.CLOSE_COMBAT ], - [ 52, Moves.FOCUS_PUNCH ], + [ EVOLVE_MOVE, MoveId.WICKED_BLOW ], + [ 1, MoveId.LEER ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.ENDURE ], + [ 1, MoveId.ROCK_SMASH ], + [ 1, MoveId.SUCKER_PUNCH ], + [ 12, MoveId.AERIAL_ACE ], + [ 16, MoveId.SCARY_FACE ], + [ 20, MoveId.HEADBUTT ], + [ 24, MoveId.BRICK_BREAK ], + [ 28, MoveId.DETECT ], + [ 32, MoveId.BULK_UP ], + [ 36, MoveId.IRON_HEAD ], + [ 40, MoveId.DYNAMIC_PUNCH ], + [ 44, MoveId.COUNTER ], + [ 48, MoveId.CLOSE_COMBAT ], + [ 52, MoveId.FOCUS_PUNCH ], ], 3: [ - [ EVOLVE_MOVE, Moves.SURGING_STRIKES ], - [ 1, Moves.LEER ], - [ 1, Moves.FOCUS_ENERGY ], - [ 1, Moves.ENDURE ], - [ 1, Moves.ROCK_SMASH ], - [ 1, Moves.AQUA_JET ], - [ 12, Moves.AERIAL_ACE ], - [ 16, Moves.SCARY_FACE ], - [ 20, Moves.HEADBUTT ], - [ 24, Moves.BRICK_BREAK ], - [ 28, Moves.DETECT ], - [ 32, Moves.BULK_UP ], - [ 36, Moves.IRON_HEAD ], - [ 40, Moves.DYNAMIC_PUNCH ], - [ 44, Moves.COUNTER ], - [ 48, Moves.CLOSE_COMBAT ], - [ 52, Moves.FOCUS_PUNCH ], + [ EVOLVE_MOVE, MoveId.SURGING_STRIKES ], + [ 1, MoveId.LEER ], + [ 1, MoveId.FOCUS_ENERGY ], + [ 1, MoveId.ENDURE ], + [ 1, MoveId.ROCK_SMASH ], + [ 1, MoveId.AQUA_JET ], + [ 12, MoveId.AERIAL_ACE ], + [ 16, MoveId.SCARY_FACE ], + [ 20, MoveId.HEADBUTT ], + [ 24, MoveId.BRICK_BREAK ], + [ 28, MoveId.DETECT ], + [ 32, MoveId.BULK_UP ], + [ 36, MoveId.IRON_HEAD ], + [ 40, MoveId.DYNAMIC_PUNCH ], + [ 44, MoveId.COUNTER ], + [ 48, MoveId.CLOSE_COMBAT ], + [ 52, MoveId.FOCUS_PUNCH ], ], }, - [Species.CALYREX]: { + [SpeciesId.CALYREX]: { 1: [ - [ 1, Moves.POUND ], - [ 1, Moves.SWORDS_DANCE ], - [ 1, Moves.STOMP ], - [ 1, Moves.DOUBLE_KICK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.THRASH ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.MIST ], - [ 1, Moves.MEGA_DRAIN ], - [ 1, Moves.GROWTH ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.TORMENT ], - [ 1, Moves.TAUNT ], - [ 1, Moves.IRON_DEFENSE ], - [ 1, Moves.AVALANCHE ], - [ 1, Moves.ICICLE_CRASH ], - [ 1, Moves.GLACIAL_LANCE ], - [ 8, Moves.LIFE_DEW ], - [ 16, Moves.GIGA_DRAIN ], - [ 24, Moves.PSYSHOCK ], - [ 32, Moves.HELPING_HAND ], - [ 40, Moves.AROMATHERAPY ], - [ 40, Moves.GRASSY_TERRAIN ], - [ 48, Moves.ENERGY_BALL ], - [ 56, Moves.PSYCHIC ], - [ 64, Moves.LEECH_SEED ], - [ 72, Moves.HEAL_PULSE ], - [ 80, Moves.SOLAR_BEAM ], - [ 88, Moves.FUTURE_SIGHT ], + [ 1, MoveId.POUND ], + [ 1, MoveId.SWORDS_DANCE ], + [ 1, MoveId.STOMP ], + [ 1, MoveId.DOUBLE_KICK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.THRASH ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.MIST ], + [ 1, MoveId.MEGA_DRAIN ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.TORMENT ], + [ 1, MoveId.TAUNT ], + [ 1, MoveId.IRON_DEFENSE ], + [ 1, MoveId.AVALANCHE ], + [ 1, MoveId.ICICLE_CRASH ], + [ 1, MoveId.GLACIAL_LANCE ], + [ 8, MoveId.LIFE_DEW ], + [ 16, MoveId.GIGA_DRAIN ], + [ 24, MoveId.PSYSHOCK ], + [ 32, MoveId.HELPING_HAND ], + [ 40, MoveId.AROMATHERAPY ], + [ 40, MoveId.GRASSY_TERRAIN ], + [ 48, MoveId.ENERGY_BALL ], + [ 56, MoveId.PSYCHIC ], + [ 64, MoveId.LEECH_SEED ], + [ 72, MoveId.HEAL_PULSE ], + [ 80, MoveId.SOLAR_BEAM ], + [ 88, MoveId.FUTURE_SIGHT ], ], 2: [ - [ 1, Moves.POUND ], - [ 1, Moves.STOMP ], - [ 1, Moves.DOUBLE_KICK ], - [ 1, Moves.TACKLE ], - [ 1, Moves.TAKE_DOWN ], - [ 1, Moves.THRASH ], - [ 1, Moves.DOUBLE_EDGE ], - [ 1, Moves.TAIL_WHIP ], - [ 1, Moves.DISABLE ], - [ 1, Moves.MEGA_DRAIN ], - [ 1, Moves.GROWTH ], - [ 1, Moves.CONFUSION ], - [ 1, Moves.AGILITY ], - [ 1, Moves.CONFUSE_RAY ], - [ 1, Moves.HAZE ], - [ 1, Moves.SHADOW_BALL ], - [ 1, Moves.NASTY_PLOT ], - [ 1, Moves.HEX ], - [ 1, Moves.ASTRAL_BARRAGE ], - [ 8, Moves.LIFE_DEW ], - [ 16, Moves.GIGA_DRAIN ], - [ 24, Moves.PSYSHOCK ], - [ 32, Moves.HELPING_HAND ], - [ 40, Moves.GRASSY_TERRAIN ], - [ 40, Moves.PSYCHIC_TERRAIN ], - [ 48, Moves.ENERGY_BALL ], - [ 56, Moves.PSYCHIC ], - [ 64, Moves.LEECH_SEED ], - [ 72, Moves.HEAL_PULSE ], - [ 80, Moves.SOLAR_BEAM ], - [ 88, Moves.FUTURE_SIGHT ], + [ 1, MoveId.POUND ], + [ 1, MoveId.STOMP ], + [ 1, MoveId.DOUBLE_KICK ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAKE_DOWN ], + [ 1, MoveId.THRASH ], + [ 1, MoveId.DOUBLE_EDGE ], + [ 1, MoveId.TAIL_WHIP ], + [ 1, MoveId.DISABLE ], + [ 1, MoveId.MEGA_DRAIN ], + [ 1, MoveId.GROWTH ], + [ 1, MoveId.CONFUSION ], + [ 1, MoveId.AGILITY ], + [ 1, MoveId.CONFUSE_RAY ], + [ 1, MoveId.HAZE ], + [ 1, MoveId.SHADOW_BALL ], + [ 1, MoveId.NASTY_PLOT ], + [ 1, MoveId.HEX ], + [ 1, MoveId.ASTRAL_BARRAGE ], + [ 8, MoveId.LIFE_DEW ], + [ 16, MoveId.GIGA_DRAIN ], + [ 24, MoveId.PSYSHOCK ], + [ 32, MoveId.HELPING_HAND ], + [ 40, MoveId.GRASSY_TERRAIN ], + [ 40, MoveId.PSYCHIC_TERRAIN ], + [ 48, MoveId.ENERGY_BALL ], + [ 56, MoveId.PSYCHIC ], + [ 64, MoveId.LEECH_SEED ], + [ 72, MoveId.HEAL_PULSE ], + [ 80, MoveId.SOLAR_BEAM ], + [ 88, MoveId.FUTURE_SIGHT ], ], }, - [Species.OINKOLOGNE]: { + [SpeciesId.OINKOLOGNE]: { 1: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 3, Moves.DISARMING_VOICE ], - [ 6, Moves.ECHOED_VOICE ], - [ 9, Moves.MUD_SHOT ], - [ 12, Moves.COVET ], - [ 15, Moves.DIG ], - [ 17, Moves.HEADBUTT ], - [ 23, Moves.YAWN ], - [ 28, Moves.TAKE_DOWN ], - [ 30, Moves.WORK_UP ], - [ 34, Moves.UPROAR ], - [ 39, Moves.DOUBLE_EDGE ], - [ 45, Moves.EARTH_POWER ], - [ 51, Moves.BELCH ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 3, MoveId.DISARMING_VOICE ], + [ 6, MoveId.ECHOED_VOICE ], + [ 9, MoveId.MUD_SHOT ], + [ 12, MoveId.COVET ], + [ 15, MoveId.DIG ], + [ 17, MoveId.HEADBUTT ], + [ 23, MoveId.YAWN ], + [ 28, MoveId.TAKE_DOWN ], + [ 30, MoveId.WORK_UP ], + [ 34, MoveId.UPROAR ], + [ 39, MoveId.DOUBLE_EDGE ], + [ 45, MoveId.EARTH_POWER ], + [ 51, MoveId.BELCH ], ], }, - [Species.REVAVROOM]: { + [SpeciesId.REVAVROOM]: { 1: [ - [ EVOLVE_MOVE, Moves.WICKED_TORQUE ], - [ EVOLVE_MOVE, Moves.SHIFT_GEAR ], - [ 1, Moves.LICK ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.MAGNET_RISE ], - [ 4, Moves.SMOG ], - [ 7, Moves.TAUNT ], - [ 10, Moves.ASSURANCE ], - [ 13, Moves.SLUDGE ], - [ 17, Moves.GYRO_BALL ], - [ 21, Moves.HEADBUTT ], - [ 25, Moves.SCREECH ], - [ 28, Moves.IRON_HEAD ], - [ 32, Moves.SWAGGER ], - [ 36, Moves.POISON_JAB ], - [ 46, Moves.UPROAR ], - [ 52, Moves.SPIN_OUT ], - [ 58, Moves.GUNK_SHOT ], + [ EVOLVE_MOVE, MoveId.WICKED_TORQUE ], + [ EVOLVE_MOVE, MoveId.SHIFT_GEAR ], + [ 1, MoveId.LICK ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.MAGNET_RISE ], + [ 4, MoveId.SMOG ], + [ 7, MoveId.TAUNT ], + [ 10, MoveId.ASSURANCE ], + [ 13, MoveId.SLUDGE ], + [ 17, MoveId.GYRO_BALL ], + [ 21, MoveId.HEADBUTT ], + [ 25, MoveId.SCREECH ], + [ 28, MoveId.IRON_HEAD ], + [ 32, MoveId.SWAGGER ], + [ 36, MoveId.POISON_JAB ], + [ 46, MoveId.UPROAR ], + [ 52, MoveId.SPIN_OUT ], + [ 58, MoveId.GUNK_SHOT ], ], 2: [ - [ EVOLVE_MOVE, Moves.BLAZING_TORQUE ], - [ EVOLVE_MOVE, Moves.SHIFT_GEAR ], - [ 1, Moves.LICK ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.MAGNET_RISE ], - [ 4, Moves.SMOG ], - [ 7, Moves.TAUNT ], - [ 10, Moves.ASSURANCE ], - [ 13, Moves.SLUDGE ], - [ 17, Moves.GYRO_BALL ], - [ 21, Moves.HEADBUTT ], - [ 25, Moves.SCREECH ], - [ 28, Moves.IRON_HEAD ], - [ 32, Moves.SWAGGER ], - [ 36, Moves.POISON_JAB ], - [ 46, Moves.UPROAR ], - [ 52, Moves.SPIN_OUT ], - [ 58, Moves.GUNK_SHOT ], + [ EVOLVE_MOVE, MoveId.BLAZING_TORQUE ], + [ EVOLVE_MOVE, MoveId.SHIFT_GEAR ], + [ 1, MoveId.LICK ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.MAGNET_RISE ], + [ 4, MoveId.SMOG ], + [ 7, MoveId.TAUNT ], + [ 10, MoveId.ASSURANCE ], + [ 13, MoveId.SLUDGE ], + [ 17, MoveId.GYRO_BALL ], + [ 21, MoveId.HEADBUTT ], + [ 25, MoveId.SCREECH ], + [ 28, MoveId.IRON_HEAD ], + [ 32, MoveId.SWAGGER ], + [ 36, MoveId.POISON_JAB ], + [ 46, MoveId.UPROAR ], + [ 52, MoveId.SPIN_OUT ], + [ 58, MoveId.GUNK_SHOT ], ], 3: [ - [ EVOLVE_MOVE, Moves.NOXIOUS_TORQUE ], - [ EVOLVE_MOVE, Moves.SHIFT_GEAR ], - [ 1, Moves.LICK ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.MAGNET_RISE ], - [ 4, Moves.SMOG ], - [ 7, Moves.TAUNT ], - [ 10, Moves.ASSURANCE ], - [ 13, Moves.SLUDGE ], - [ 17, Moves.GYRO_BALL ], - [ 21, Moves.HEADBUTT ], - [ 25, Moves.SCREECH ], - [ 28, Moves.IRON_HEAD ], - [ 32, Moves.SWAGGER ], - [ 36, Moves.POISON_JAB ], - [ 46, Moves.UPROAR ], - [ 52, Moves.SPIN_OUT ], - [ 58, Moves.GUNK_SHOT ], + [ EVOLVE_MOVE, MoveId.NOXIOUS_TORQUE ], + [ EVOLVE_MOVE, MoveId.SHIFT_GEAR ], + [ 1, MoveId.LICK ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.MAGNET_RISE ], + [ 4, MoveId.SMOG ], + [ 7, MoveId.TAUNT ], + [ 10, MoveId.ASSURANCE ], + [ 13, MoveId.SLUDGE ], + [ 17, MoveId.GYRO_BALL ], + [ 21, MoveId.HEADBUTT ], + [ 25, MoveId.SCREECH ], + [ 28, MoveId.IRON_HEAD ], + [ 32, MoveId.SWAGGER ], + [ 36, MoveId.POISON_JAB ], + [ 46, MoveId.UPROAR ], + [ 52, MoveId.SPIN_OUT ], + [ 58, MoveId.GUNK_SHOT ], ], 4: [ - [ EVOLVE_MOVE, Moves.MAGICAL_TORQUE ], - [ EVOLVE_MOVE, Moves.SHIFT_GEAR ], - [ 1, Moves.LICK ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.MAGNET_RISE ], - [ 4, Moves.SMOG ], - [ 7, Moves.TAUNT ], - [ 10, Moves.ASSURANCE ], - [ 13, Moves.SLUDGE ], - [ 17, Moves.GYRO_BALL ], - [ 21, Moves.HEADBUTT ], - [ 25, Moves.SCREECH ], - [ 28, Moves.IRON_HEAD ], - [ 32, Moves.SWAGGER ], - [ 36, Moves.POISON_JAB ], - [ 46, Moves.UPROAR ], - [ 52, Moves.SPIN_OUT ], - [ 58, Moves.GUNK_SHOT ], + [ EVOLVE_MOVE, MoveId.MAGICAL_TORQUE ], + [ EVOLVE_MOVE, MoveId.SHIFT_GEAR ], + [ 1, MoveId.LICK ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.MAGNET_RISE ], + [ 4, MoveId.SMOG ], + [ 7, MoveId.TAUNT ], + [ 10, MoveId.ASSURANCE ], + [ 13, MoveId.SLUDGE ], + [ 17, MoveId.GYRO_BALL ], + [ 21, MoveId.HEADBUTT ], + [ 25, MoveId.SCREECH ], + [ 28, MoveId.IRON_HEAD ], + [ 32, MoveId.SWAGGER ], + [ 36, MoveId.POISON_JAB ], + [ 46, MoveId.UPROAR ], + [ 52, MoveId.SPIN_OUT ], + [ 58, MoveId.GUNK_SHOT ], ], 5: [ - [ EVOLVE_MOVE, Moves.COMBAT_TORQUE ], - [ EVOLVE_MOVE, Moves.SHIFT_GEAR ], - [ 1, Moves.LICK ], - [ 1, Moves.POISON_GAS ], - [ 1, Moves.MAGNET_RISE ], - [ 4, Moves.SMOG ], - [ 7, Moves.TAUNT ], - [ 10, Moves.ASSURANCE ], - [ 13, Moves.SLUDGE ], - [ 17, Moves.GYRO_BALL ], - [ 21, Moves.HEADBUTT ], - [ 25, Moves.SCREECH ], - [ 28, Moves.IRON_HEAD ], - [ 32, Moves.SWAGGER ], - [ 36, Moves.POISON_JAB ], - [ 46, Moves.UPROAR ], - [ 52, Moves.SPIN_OUT ], - [ 58, Moves.GUNK_SHOT ], + [ EVOLVE_MOVE, MoveId.COMBAT_TORQUE ], + [ EVOLVE_MOVE, MoveId.SHIFT_GEAR ], + [ 1, MoveId.LICK ], + [ 1, MoveId.POISON_GAS ], + [ 1, MoveId.MAGNET_RISE ], + [ 4, MoveId.SMOG ], + [ 7, MoveId.TAUNT ], + [ 10, MoveId.ASSURANCE ], + [ 13, MoveId.SLUDGE ], + [ 17, MoveId.GYRO_BALL ], + [ 21, MoveId.HEADBUTT ], + [ 25, MoveId.SCREECH ], + [ 28, MoveId.IRON_HEAD ], + [ 32, MoveId.SWAGGER ], + [ 36, MoveId.POISON_JAB ], + [ 46, MoveId.UPROAR ], + [ 52, MoveId.SPIN_OUT ], + [ 58, MoveId.GUNK_SHOT ], ], }, - [Species.PALDEA_TAUROS]: { + [SpeciesId.PALDEA_TAUROS]: { 1: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 5, Moves.WORK_UP ], - [ 10, Moves.DOUBLE_KICK ], - [ 15, Moves.FLAME_CHARGE ], - [ 20, Moves.HEADBUTT ], - [ 25, Moves.SCARY_FACE ], - [ 30, Moves.ZEN_HEADBUTT ], - [ 35, Moves.RAGING_BULL ], - [ 40, Moves.REST ], - [ 45, Moves.SWAGGER ], - [ 50, Moves.THRASH ], - [ 55, Moves.FLARE_BLITZ ], - [ 60, Moves.CLOSE_COMBAT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 5, MoveId.WORK_UP ], + [ 10, MoveId.DOUBLE_KICK ], + [ 15, MoveId.FLAME_CHARGE ], + [ 20, MoveId.HEADBUTT ], + [ 25, MoveId.SCARY_FACE ], + [ 30, MoveId.ZEN_HEADBUTT ], + [ 35, MoveId.RAGING_BULL ], + [ 40, MoveId.REST ], + [ 45, MoveId.SWAGGER ], + [ 50, MoveId.THRASH ], + [ 55, MoveId.FLARE_BLITZ ], + [ 60, MoveId.CLOSE_COMBAT ], ], 2: [ - [ 1, Moves.TACKLE ], - [ 1, Moves.TAIL_WHIP ], - [ 5, Moves.WORK_UP ], - [ 10, Moves.DOUBLE_KICK ], - [ 15, Moves.AQUA_JET ], - [ 20, Moves.HEADBUTT ], - [ 25, Moves.SCARY_FACE ], - [ 30, Moves.ZEN_HEADBUTT ], - [ 35, Moves.RAGING_BULL ], - [ 40, Moves.REST ], - [ 45, Moves.SWAGGER ], - [ 50, Moves.THRASH ], - [ 55, Moves.WAVE_CRASH ], - [ 60, Moves.CLOSE_COMBAT ], + [ 1, MoveId.TACKLE ], + [ 1, MoveId.TAIL_WHIP ], + [ 5, MoveId.WORK_UP ], + [ 10, MoveId.DOUBLE_KICK ], + [ 15, MoveId.AQUA_JET ], + [ 20, MoveId.HEADBUTT ], + [ 25, MoveId.SCARY_FACE ], + [ 30, MoveId.ZEN_HEADBUTT ], + [ 35, MoveId.RAGING_BULL ], + [ 40, MoveId.REST ], + [ 45, MoveId.SWAGGER ], + [ 50, MoveId.THRASH ], + [ 55, MoveId.WAVE_CRASH ], + [ 60, MoveId.CLOSE_COMBAT ], ] } }; diff --git a/src/data/balance/signature-species.ts b/src/data/balance/signature-species.ts index 04749a67521..fba91f6fe3d 100644 --- a/src/data/balance/signature-species.ts +++ b/src/data/balance/signature-species.ts @@ -1,7 +1,7 @@ -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; export type SignatureSpecies = { - [key in string]: (Species | Species[])[]; + [key in string]: (SpeciesId | SpeciesId[])[]; }; /** @@ -18,87 +18,87 @@ export type SignatureSpecies = { */ export const signatureSpecies: SignatureSpecies = new Proxy({ // Gym Leaders- Kanto - BROCK: [Species.ONIX, Species.GEODUDE, [Species.OMANYTE, Species.KABUTO], Species.AERODACTYL], - MISTY: [Species.STARYU, Species.PSYDUCK, Species.WOOPER, Species.LAPRAS], - LT_SURGE: [Species.PICHU, Species.VOLTORB, Species.ELEKID, Species.JOLTEON], - ERIKA: [Species.ODDISH, Species.BELLSPROUT, Species.TANGELA, Species.HOPPIP], - JANINE: [Species.VENONAT, Species.SPINARAK, Species.ZUBAT, Species.KOFFING], - SABRINA: [Species.ABRA, Species.MR_MIME, Species.SMOOCHUM, Species.ESPEON], - BLAINE: [Species.GROWLITHE, Species.PONYTA, Species.MAGBY, Species.VULPIX], - GIOVANNI: [Species.RHYHORN, Species.MEOWTH, [Species.NIDORAN_F, Species.NIDORAN_M], Species.DIGLETT], // Tera Ground Meowth + BROCK: [SpeciesId.ONIX, SpeciesId.GEODUDE, [SpeciesId.OMANYTE, SpeciesId.KABUTO], SpeciesId.AERODACTYL], + MISTY: [SpeciesId.STARYU, SpeciesId.PSYDUCK, SpeciesId.WOOPER, SpeciesId.LAPRAS], + LT_SURGE: [SpeciesId.PICHU, SpeciesId.VOLTORB, SpeciesId.ELEKID, SpeciesId.JOLTEON], + ERIKA: [SpeciesId.ODDISH, SpeciesId.BELLSPROUT, SpeciesId.TANGELA, SpeciesId.HOPPIP], + JANINE: [SpeciesId.VENONAT, SpeciesId.SPINARAK, SpeciesId.ZUBAT, SpeciesId.KOFFING], + SABRINA: [SpeciesId.ABRA, SpeciesId.MR_MIME, SpeciesId.SMOOCHUM, SpeciesId.ESPEON], + BLAINE: [SpeciesId.GROWLITHE, SpeciesId.PONYTA, SpeciesId.MAGBY, SpeciesId.VULPIX], + GIOVANNI: [SpeciesId.RHYHORN, SpeciesId.MEOWTH, [SpeciesId.NIDORAN_F, SpeciesId.NIDORAN_M], SpeciesId.DIGLETT], // Tera Ground Meowth // Gym Leaders- Johto - FALKNER: [Species.PIDGEY, Species.HOOTHOOT, Species.NATU, Species.MURKROW], - BUGSY: [Species.SCYTHER, Species.SHUCKLE, Species.YANMA, [Species.PINSIR, Species.HERACROSS]], - WHITNEY: [Species.MILTANK, Species.AIPOM, Species.IGGLYBUFF, [Species.GIRAFARIG, Species.STANTLER]], - MORTY: [Species.GASTLY, Species.MISDREAVUS, Species.DUSKULL, Species.SABLEYE], - CHUCK: [Species.POLIWRATH, Species.MANKEY, Species.TYROGUE, Species.MACHOP], - JASMINE: [Species.STEELIX, Species.MAGNEMITE, Species.PINECO, Species.SKARMORY], - PRYCE: [Species.SWINUB, Species.SEEL, Species.SHELLDER, Species.SNEASEL], - CLAIR: [Species.HORSEA, Species.DRATINI, Species.MAGIKARP, Species.DRUDDIGON], // Tera Dragon Magikarp + FALKNER: [SpeciesId.PIDGEY, SpeciesId.HOOTHOOT, SpeciesId.NATU, SpeciesId.MURKROW], + BUGSY: [SpeciesId.SCYTHER, SpeciesId.SHUCKLE, SpeciesId.YANMA, [SpeciesId.PINSIR, SpeciesId.HERACROSS]], + WHITNEY: [SpeciesId.MILTANK, SpeciesId.AIPOM, SpeciesId.IGGLYBUFF, [SpeciesId.GIRAFARIG, SpeciesId.STANTLER]], + MORTY: [SpeciesId.GASTLY, SpeciesId.MISDREAVUS, SpeciesId.DUSKULL, SpeciesId.SABLEYE], + CHUCK: [SpeciesId.POLIWRATH, SpeciesId.MANKEY, SpeciesId.TYROGUE, SpeciesId.MACHOP], + JASMINE: [SpeciesId.STEELIX, SpeciesId.MAGNEMITE, SpeciesId.PINECO, SpeciesId.SKARMORY], + PRYCE: [SpeciesId.SWINUB, SpeciesId.SEEL, SpeciesId.SHELLDER, SpeciesId.SNEASEL], + CLAIR: [SpeciesId.HORSEA, SpeciesId.DRATINI, SpeciesId.MAGIKARP, SpeciesId.DRUDDIGON], // Tera Dragon Magikarp // Gym Leaders- Hoenn - ROXANNE: [Species.NOSEPASS, Species.GEODUDE, [Species.LILEEP, Species.ANORITH], Species.ARON], - BRAWLY: [Species.MAKUHITA, Species.MACHOP, Species.MEDITITE, Species.SHROOMISH], - WATTSON: [Species.ELECTRIKE, Species.VOLTORB, Species.MAGNEMITE, [Species.PLUSLE, Species.MINUN]], - FLANNERY: [Species.TORKOAL, Species.SLUGMA, Species.NUMEL, Species.HOUNDOUR], - NORMAN: [Species.SLAKOTH, Species.KECLEON, Species.WHISMUR, Species.ZANGOOSE], - WINONA: [Species.SWABLU, Species.WINGULL, Species.TROPIUS, Species.SKARMORY], - TATE: [Species.SOLROCK, Species.NATU, Species.CHINGLING, Species.GALLADE], - LIZA: [Species.LUNATONE, Species.BALTOY, Species.SPOINK, Species.GARDEVOIR], - JUAN: [Species.HORSEA, Species.SPHEAL, Species.BARBOACH, Species.CORPHISH], + ROXANNE: [SpeciesId.NOSEPASS, SpeciesId.GEODUDE, [SpeciesId.LILEEP, SpeciesId.ANORITH], SpeciesId.ARON], + BRAWLY: [SpeciesId.MAKUHITA, SpeciesId.MACHOP, SpeciesId.MEDITITE, SpeciesId.SHROOMISH], + WATTSON: [SpeciesId.ELECTRIKE, SpeciesId.VOLTORB, SpeciesId.MAGNEMITE, [SpeciesId.PLUSLE, SpeciesId.MINUN]], + FLANNERY: [SpeciesId.TORKOAL, SpeciesId.SLUGMA, SpeciesId.NUMEL, SpeciesId.HOUNDOUR], + NORMAN: [SpeciesId.SLAKOTH, SpeciesId.KECLEON, SpeciesId.WHISMUR, SpeciesId.ZANGOOSE], + WINONA: [SpeciesId.SWABLU, SpeciesId.WINGULL, SpeciesId.TROPIUS, SpeciesId.SKARMORY], + TATE: [SpeciesId.SOLROCK, SpeciesId.NATU, SpeciesId.CHINGLING, SpeciesId.GALLADE], + LIZA: [SpeciesId.LUNATONE, SpeciesId.BALTOY, SpeciesId.SPOINK, SpeciesId.GARDEVOIR], + JUAN: [SpeciesId.HORSEA, SpeciesId.SPHEAL, SpeciesId.BARBOACH, SpeciesId.CORPHISH], // Gym Leaders- Sinnoh - ROARK: [Species.CRANIDOS, Species.GEODUDE, Species.NOSEPASS, Species.LARVITAR], - GARDENIA: [Species.BUDEW, Species.CHERUBI, Species.TURTWIG, Species.LEAFEON], - MAYLENE: [Species.RIOLU, Species.MEDITITE, Species.CHIMCHAR, Species.CROAGUNK], - CRASHER_WAKE: [Species.BUIZEL, Species.WOOPER, Species.PIPLUP, Species.MAGIKARP], - FANTINA: [Species.MISDREAVUS, Species.DRIFLOON, Species.DUSKULL, Species.SPIRITOMB], - BYRON: [Species.SHIELDON, Species.BRONZOR, Species.ARON, Species.SKARMORY], - CANDICE: [Species.FROSLASS, Species.SNOVER, Species.SNEASEL, Species.GLACEON], - VOLKNER: [Species.ELEKID, Species.SHINX, Species.CHINCHOU, Species.ROTOM], + ROARK: [SpeciesId.CRANIDOS, SpeciesId.GEODUDE, SpeciesId.NOSEPASS, SpeciesId.LARVITAR], + GARDENIA: [SpeciesId.BUDEW, SpeciesId.CHERUBI, SpeciesId.TURTWIG, SpeciesId.LEAFEON], + MAYLENE: [SpeciesId.RIOLU, SpeciesId.MEDITITE, SpeciesId.CHIMCHAR, SpeciesId.CROAGUNK], + CRASHER_WAKE: [SpeciesId.BUIZEL, SpeciesId.WOOPER, SpeciesId.PIPLUP, SpeciesId.MAGIKARP], + FANTINA: [SpeciesId.MISDREAVUS, SpeciesId.DRIFLOON, SpeciesId.DUSKULL, SpeciesId.SPIRITOMB], + BYRON: [SpeciesId.SHIELDON, SpeciesId.BRONZOR, SpeciesId.ARON, SpeciesId.SKARMORY], + CANDICE: [SpeciesId.FROSLASS, SpeciesId.SNOVER, SpeciesId.SNEASEL, SpeciesId.GLACEON], + VOLKNER: [SpeciesId.ELEKID, SpeciesId.SHINX, SpeciesId.CHINCHOU, SpeciesId.ROTOM], // Gym Leaders- Unova - CILAN: [Species.PANSAGE, Species.SNIVY, Species.MARACTUS, Species.FERROSEED], - CHILI: [Species.PANSEAR, Species.TEPIG, Species.HEATMOR, Species.DARUMAKA], - CRESS: [Species.PANPOUR, Species.OSHAWOTT, Species.BASCULIN, Species.TYMPOLE], - CHEREN: [Species.LILLIPUP, Species.MINCCINO, Species.PIDOVE, Species.BOUFFALANT], - LENORA: [Species.PATRAT, Species.DEERLING, Species.AUDINO, Species.BRAVIARY], - ROXIE: [Species.VENIPEDE, Species.KOFFING, Species.TRUBBISH, Species.TOXEL], - BURGH: [Species.SEWADDLE, Species.DWEBBLE, [Species.KARRABLAST, Species.SHELMET], Species.DURANT], - ELESA: [Species.BLITZLE, Species.EMOLGA, Species.JOLTIK, Species.TYNAMO], - CLAY: [Species.DRILBUR, Species.SANDILE, Species.TYMPOLE, Species.GOLETT], - SKYLA: [Species.DUCKLETT, Species.WOOBAT, [Species.RUFFLET, Species.VULLABY], Species.ARCHEN], - BRYCEN: [Species.CRYOGONAL, Species.VANILLITE, Species.CUBCHOO, Species.GALAR_DARUMAKA], - DRAYDEN: [Species.AXEW, Species.DRUDDIGON, Species.TRAPINCH, Species.DEINO], - MARLON: [Species.FRILLISH, Species.TIRTOUGA, Species.WAILMER, Species.MANTYKE], + CILAN: [SpeciesId.PANSAGE, SpeciesId.SNIVY, SpeciesId.MARACTUS, SpeciesId.FERROSEED], + CHILI: [SpeciesId.PANSEAR, SpeciesId.TEPIG, SpeciesId.HEATMOR, SpeciesId.DARUMAKA], + CRESS: [SpeciesId.PANPOUR, SpeciesId.OSHAWOTT, SpeciesId.BASCULIN, SpeciesId.TYMPOLE], + CHEREN: [SpeciesId.LILLIPUP, SpeciesId.MINCCINO, SpeciesId.PIDOVE, SpeciesId.BOUFFALANT], + LENORA: [SpeciesId.PATRAT, SpeciesId.DEERLING, SpeciesId.AUDINO, SpeciesId.BRAVIARY], + ROXIE: [SpeciesId.VENIPEDE, SpeciesId.KOFFING, SpeciesId.TRUBBISH, SpeciesId.TOXEL], + BURGH: [SpeciesId.SEWADDLE, SpeciesId.DWEBBLE, [SpeciesId.KARRABLAST, SpeciesId.SHELMET], SpeciesId.DURANT], + ELESA: [SpeciesId.BLITZLE, SpeciesId.EMOLGA, SpeciesId.JOLTIK, SpeciesId.TYNAMO], + CLAY: [SpeciesId.DRILBUR, SpeciesId.SANDILE, SpeciesId.TYMPOLE, SpeciesId.GOLETT], + SKYLA: [SpeciesId.DUCKLETT, SpeciesId.WOOBAT, [SpeciesId.RUFFLET, SpeciesId.VULLABY], SpeciesId.ARCHEN], + BRYCEN: [SpeciesId.CRYOGONAL, SpeciesId.VANILLITE, SpeciesId.CUBCHOO, SpeciesId.GALAR_DARUMAKA], + DRAYDEN: [SpeciesId.AXEW, SpeciesId.DRUDDIGON, SpeciesId.TRAPINCH, SpeciesId.DEINO], + MARLON: [SpeciesId.FRILLISH, SpeciesId.TIRTOUGA, SpeciesId.WAILMER, SpeciesId.MANTYKE], // Gym Leaders- Kalos - VIOLA: [Species.SCATTERBUG, Species.SURSKIT, Species.CUTIEFLY, Species.BLIPBUG], - GRANT: [Species.TYRUNT, Species.AMAURA, Species.BINACLE, Species.DWEBBLE], - KORRINA: [Species.RIOLU, Species.MIENFOO, Species.HAWLUCHA, Species.PANCHAM], - RAMOS: [Species.SKIDDO, Species.HOPPIP, Species.BELLSPROUT, [Species.PHANTUMP, Species.PUMPKABOO]], - CLEMONT: [Species.HELIOPTILE, Species.MAGNEMITE, Species.DEDENNE, Species.ROTOM], - VALERIE: [Species.SYLVEON, Species.MAWILE, Species.MR_MIME, [Species.SPRITZEE, Species.SWIRLIX]], - OLYMPIA: [Species.ESPURR, Species.SIGILYPH, Species.INKAY, Species.SLOWKING], - WULFRIC: [Species.BERGMITE, Species.SNOVER, Species.CRYOGONAL, Species.SWINUB], + VIOLA: [SpeciesId.SCATTERBUG, SpeciesId.SURSKIT, SpeciesId.CUTIEFLY, SpeciesId.BLIPBUG], + GRANT: [SpeciesId.TYRUNT, SpeciesId.AMAURA, SpeciesId.BINACLE, SpeciesId.DWEBBLE], + KORRINA: [SpeciesId.RIOLU, SpeciesId.MIENFOO, SpeciesId.HAWLUCHA, SpeciesId.PANCHAM], + RAMOS: [SpeciesId.SKIDDO, SpeciesId.HOPPIP, SpeciesId.BELLSPROUT, [SpeciesId.PHANTUMP, SpeciesId.PUMPKABOO]], + CLEMONT: [SpeciesId.HELIOPTILE, SpeciesId.MAGNEMITE, SpeciesId.DEDENNE, SpeciesId.ROTOM], + VALERIE: [SpeciesId.SYLVEON, SpeciesId.MAWILE, SpeciesId.MR_MIME, [SpeciesId.SPRITZEE, SpeciesId.SWIRLIX]], + OLYMPIA: [SpeciesId.ESPURR, SpeciesId.SIGILYPH, SpeciesId.INKAY, SpeciesId.SLOWKING], + WULFRIC: [SpeciesId.BERGMITE, SpeciesId.SNOVER, SpeciesId.CRYOGONAL, SpeciesId.SWINUB], // Gym Leaders- Galar - MILO: [Species.GOSSIFLEUR, Species.SEEDOT, Species.APPLIN, Species.LOTAD], - NESSA: [Species.CHEWTLE, Species.WIMPOD, Species.ARROKUDA, Species.MAREANIE], - KABU: [Species.SIZZLIPEDE, Species.VULPIX, Species.GROWLITHE, Species.TORKOAL], - BEA: [Species.MACHOP, Species.GALAR_FARFETCHD, Species.CLOBBOPUS, Species.FALINKS], - ALLISTER: [Species.GASTLY, Species.GALAR_YAMASK, Species.GALAR_CORSOLA, Species.SINISTEA], - OPAL: [Species.MILCERY, Species.GALAR_WEEZING, Species.TOGEPI, Species.MAWILE], - BEDE: [Species.HATENNA, Species.GALAR_PONYTA, Species.GARDEVOIR, Species.SYLVEON], - GORDIE: [Species.ROLYCOLY, [Species.SHUCKLE, Species.BINACLE], Species.STONJOURNER, Species.LARVITAR], - MELONY: [Species.LAPRAS, Species.SNOM, Species.EISCUE, [Species.GALAR_MR_MIME, Species.GALAR_DARUMAKA]], - PIERS: [Species.GALAR_ZIGZAGOON, Species.SCRAGGY, Species.TOXEL, Species.INKAY], // Tera Dark Toxel - MARNIE: [Species.IMPIDIMP, Species.MORPEKO, Species.PURRLOIN, Species.CROAGUNK], // Tera Dark Croagunk - RAIHAN: [Species.DURALUDON, Species.TRAPINCH, Species.GOOMY, Species.TURTONATOR], + MILO: [SpeciesId.GOSSIFLEUR, SpeciesId.SEEDOT, SpeciesId.APPLIN, SpeciesId.LOTAD], + NESSA: [SpeciesId.CHEWTLE, SpeciesId.WIMPOD, SpeciesId.ARROKUDA, SpeciesId.MAREANIE], + KABU: [SpeciesId.SIZZLIPEDE, SpeciesId.VULPIX, SpeciesId.GROWLITHE, SpeciesId.TORKOAL], + BEA: [SpeciesId.MACHOP, SpeciesId.GALAR_FARFETCHD, SpeciesId.CLOBBOPUS, SpeciesId.FALINKS], + ALLISTER: [SpeciesId.GASTLY, SpeciesId.GALAR_YAMASK, SpeciesId.GALAR_CORSOLA, SpeciesId.SINISTEA], + OPAL: [SpeciesId.MILCERY, SpeciesId.GALAR_WEEZING, SpeciesId.TOGEPI, SpeciesId.MAWILE], + BEDE: [SpeciesId.HATENNA, SpeciesId.GALAR_PONYTA, SpeciesId.GARDEVOIR, SpeciesId.SYLVEON], + GORDIE: [SpeciesId.ROLYCOLY, [SpeciesId.SHUCKLE, SpeciesId.BINACLE], SpeciesId.STONJOURNER, SpeciesId.LARVITAR], + MELONY: [SpeciesId.LAPRAS, SpeciesId.SNOM, SpeciesId.EISCUE, [SpeciesId.GALAR_MR_MIME, SpeciesId.GALAR_DARUMAKA]], + PIERS: [SpeciesId.GALAR_ZIGZAGOON, SpeciesId.SCRAGGY, SpeciesId.TOXEL, SpeciesId.INKAY], // Tera Dark Toxel + MARNIE: [SpeciesId.IMPIDIMP, SpeciesId.MORPEKO, SpeciesId.PURRLOIN, SpeciesId.CROAGUNK], // Tera Dark Croagunk + RAIHAN: [SpeciesId.DURALUDON, SpeciesId.TRAPINCH, SpeciesId.GOOMY, SpeciesId.TURTONATOR], // Gym Leaders- Paldea; First slot is Tera - KATY: [Species.TEDDIURSA, Species.NYMBLE, Species.TAROUNTULA, Species.RELLOR], // Tera Bug Teddiursa - BRASSIUS: [Species.BONSLY, Species.SMOLIV, Species.BRAMBLIN, Species.SUNKERN], // Tera Grass Bonsly - IONO: [Species.MISDREAVUS, Species.TADBULB, Species.WATTREL, Species.MAGNEMITE], // Tera Ghost Misdreavus - KOFU: [Species.CRABRAWLER, Species.VELUZA, Species.WIGLETT, Species.WINGULL], // Tera Water Crabrawler - LARRY: [Species.STARLY, Species.DUNSPARCE, Species.LECHONK, Species.KOMALA], // Tera Normal Starly - RYME: [Species.TOXEL, Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU], // Tera Ghost Toxel - TULIP: [Species.FLABEBE, Species.FLITTLE, Species.RALTS, Species.GIRAFARIG], // Tera Psychic Flabebe - GRUSHA: [Species.SWABLU, Species.CETODDLE, Species.SNOM, Species.CUBCHOO], // Tera Ice Swablu + KATY: [SpeciesId.TEDDIURSA, SpeciesId.NYMBLE, SpeciesId.TAROUNTULA, SpeciesId.RELLOR], // Tera Bug Teddiursa + BRASSIUS: [SpeciesId.BONSLY, SpeciesId.SMOLIV, SpeciesId.BRAMBLIN, SpeciesId.SUNKERN], // Tera Grass Bonsly + IONO: [SpeciesId.MISDREAVUS, SpeciesId.TADBULB, SpeciesId.WATTREL, SpeciesId.MAGNEMITE], // Tera Ghost Misdreavus + KOFU: [SpeciesId.CRABRAWLER, SpeciesId.VELUZA, SpeciesId.WIGLETT, SpeciesId.WINGULL], // Tera Water Crabrawler + LARRY: [SpeciesId.STARLY, SpeciesId.DUNSPARCE, SpeciesId.LECHONK, SpeciesId.KOMALA], // Tera Normal Starly + RYME: [SpeciesId.TOXEL, SpeciesId.GREAVARD, SpeciesId.SHUPPET, SpeciesId.MIMIKYU], // Tera Ghost Toxel + TULIP: [SpeciesId.FLABEBE, SpeciesId.FLITTLE, SpeciesId.RALTS, SpeciesId.GIRAFARIG], // Tera Psychic Flabebe + GRUSHA: [SpeciesId.SWABLU, SpeciesId.CETODDLE, SpeciesId.SNOM, SpeciesId.CUBCHOO], // Tera Ice Swablu }, { get(target, prop: string) { return target[prop as keyof SignatureSpecies] ?? []; diff --git a/src/data/balance/special-species-groups.ts b/src/data/balance/special-species-groups.ts index eeba96595a6..567d5f19794 100644 --- a/src/data/balance/special-species-groups.ts +++ b/src/data/balance/special-species-groups.ts @@ -1,29 +1,29 @@ -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; /** * A list of all {@link https://bulbapedia.bulbagarden.net/wiki/Paradox_Pok%C3%A9mon | Paradox Pokemon}, NOT including the legendaries Miraidon and Koraidon. */ export const NON_LEGEND_PARADOX_POKEMON = [ - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.ROARING_MOON, - Species.WALKING_WAKE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.IRON_VALIANT, - Species.IRON_LEAVES, - Species.IRON_BOULDER, - Species.IRON_CROWN, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.ROARING_MOON, + SpeciesId.WALKING_WAKE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_LEAVES, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, ]; /** @@ -32,15 +32,15 @@ export const NON_LEGEND_PARADOX_POKEMON = [ * Note that all of these Ultra Beasts are still considered Sub-Legendary. */ export const NON_LEGEND_ULTRA_BEASTS = [ - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, ]; diff --git a/src/data/balance/species-egg-tiers.ts b/src/data/balance/species-egg-tiers.ts index 0db2c917589..4d953921e92 100644 --- a/src/data/balance/species-egg-tiers.ts +++ b/src/data/balance/species-egg-tiers.ts @@ -1,585 +1,585 @@ -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { EggTier } from "#enums/egg-type"; /** * Map of all starters and their respective {@linkcode EggTier}, which determines the type of egg the starter hatches from. */ export const speciesEggTiers = { - [Species.BULBASAUR]: EggTier.COMMON, - [Species.CHARMANDER]: EggTier.COMMON, - [Species.SQUIRTLE]: EggTier.COMMON, - [Species.CATERPIE]: EggTier.COMMON, - [Species.WEEDLE]: EggTier.COMMON, - [Species.PIDGEY]: EggTier.COMMON, - [Species.RATTATA]: EggTier.COMMON, - [Species.SPEAROW]: EggTier.COMMON, - [Species.EKANS]: EggTier.COMMON, - [Species.SANDSHREW]: EggTier.COMMON, - [Species.NIDORAN_F]: EggTier.COMMON, - [Species.NIDORAN_M]: EggTier.COMMON, - [Species.VULPIX]: EggTier.COMMON, - [Species.ZUBAT]: EggTier.COMMON, - [Species.ODDISH]: EggTier.COMMON, - [Species.PARAS]: EggTier.COMMON, - [Species.VENONAT]: EggTier.COMMON, - [Species.DIGLETT]: EggTier.COMMON, - [Species.MEOWTH]: EggTier.COMMON, - [Species.PSYDUCK]: EggTier.COMMON, - [Species.MANKEY]: EggTier.RARE, - [Species.GROWLITHE]: EggTier.RARE, - [Species.POLIWAG]: EggTier.COMMON, - [Species.ABRA]: EggTier.RARE, - [Species.MACHOP]: EggTier.COMMON, - [Species.BELLSPROUT]: EggTier.COMMON, - [Species.TENTACOOL]: EggTier.COMMON, - [Species.GEODUDE]: EggTier.COMMON, - [Species.PONYTA]: EggTier.COMMON, - [Species.SLOWPOKE]: EggTier.COMMON, - [Species.MAGNEMITE]: EggTier.RARE, - [Species.FARFETCHD]: EggTier.RARE, - [Species.DODUO]: EggTier.COMMON, - [Species.SEEL]: EggTier.COMMON, - [Species.GRIMER]: EggTier.COMMON, - [Species.SHELLDER]: EggTier.RARE, - [Species.GASTLY]: EggTier.RARE, - [Species.ONIX]: EggTier.COMMON, - [Species.DROWZEE]: EggTier.COMMON, - [Species.KRABBY]: EggTier.COMMON, - [Species.VOLTORB]: EggTier.COMMON, - [Species.EXEGGCUTE]: EggTier.COMMON, - [Species.CUBONE]: EggTier.COMMON, - [Species.LICKITUNG]: EggTier.RARE, - [Species.KOFFING]: EggTier.COMMON, - [Species.RHYHORN]: EggTier.RARE, - [Species.TANGELA]: EggTier.COMMON, - [Species.KANGASKHAN]: EggTier.RARE, - [Species.HORSEA]: EggTier.COMMON, - [Species.GOLDEEN]: EggTier.COMMON, - [Species.STARYU]: EggTier.COMMON, - [Species.SCYTHER]: EggTier.RARE, - [Species.PINSIR]: EggTier.RARE, - [Species.TAUROS]: EggTier.RARE, - [Species.MAGIKARP]: EggTier.COMMON, - [Species.LAPRAS]: EggTier.RARE, - [Species.DITTO]: EggTier.COMMON, - [Species.EEVEE]: EggTier.COMMON, - [Species.PORYGON]: EggTier.RARE, - [Species.OMANYTE]: EggTier.RARE, - [Species.KABUTO]: EggTier.RARE, - [Species.AERODACTYL]: EggTier.RARE, - [Species.ARTICUNO]: EggTier.EPIC, - [Species.ZAPDOS]: EggTier.EPIC, - [Species.MOLTRES]: EggTier.EPIC, - [Species.DRATINI]: EggTier.RARE, - [Species.MEWTWO]: EggTier.LEGENDARY, - [Species.MEW]: EggTier.EPIC, + [SpeciesId.BULBASAUR]: EggTier.COMMON, + [SpeciesId.CHARMANDER]: EggTier.COMMON, + [SpeciesId.SQUIRTLE]: EggTier.COMMON, + [SpeciesId.CATERPIE]: EggTier.COMMON, + [SpeciesId.WEEDLE]: EggTier.COMMON, + [SpeciesId.PIDGEY]: EggTier.COMMON, + [SpeciesId.RATTATA]: EggTier.COMMON, + [SpeciesId.SPEAROW]: EggTier.COMMON, + [SpeciesId.EKANS]: EggTier.COMMON, + [SpeciesId.SANDSHREW]: EggTier.COMMON, + [SpeciesId.NIDORAN_F]: EggTier.COMMON, + [SpeciesId.NIDORAN_M]: EggTier.COMMON, + [SpeciesId.VULPIX]: EggTier.COMMON, + [SpeciesId.ZUBAT]: EggTier.COMMON, + [SpeciesId.ODDISH]: EggTier.COMMON, + [SpeciesId.PARAS]: EggTier.COMMON, + [SpeciesId.VENONAT]: EggTier.COMMON, + [SpeciesId.DIGLETT]: EggTier.COMMON, + [SpeciesId.MEOWTH]: EggTier.COMMON, + [SpeciesId.PSYDUCK]: EggTier.COMMON, + [SpeciesId.MANKEY]: EggTier.RARE, + [SpeciesId.GROWLITHE]: EggTier.RARE, + [SpeciesId.POLIWAG]: EggTier.COMMON, + [SpeciesId.ABRA]: EggTier.RARE, + [SpeciesId.MACHOP]: EggTier.COMMON, + [SpeciesId.BELLSPROUT]: EggTier.COMMON, + [SpeciesId.TENTACOOL]: EggTier.COMMON, + [SpeciesId.GEODUDE]: EggTier.COMMON, + [SpeciesId.PONYTA]: EggTier.COMMON, + [SpeciesId.SLOWPOKE]: EggTier.COMMON, + [SpeciesId.MAGNEMITE]: EggTier.RARE, + [SpeciesId.FARFETCHD]: EggTier.RARE, + [SpeciesId.DODUO]: EggTier.COMMON, + [SpeciesId.SEEL]: EggTier.COMMON, + [SpeciesId.GRIMER]: EggTier.COMMON, + [SpeciesId.SHELLDER]: EggTier.RARE, + [SpeciesId.GASTLY]: EggTier.RARE, + [SpeciesId.ONIX]: EggTier.COMMON, + [SpeciesId.DROWZEE]: EggTier.COMMON, + [SpeciesId.KRABBY]: EggTier.COMMON, + [SpeciesId.VOLTORB]: EggTier.COMMON, + [SpeciesId.EXEGGCUTE]: EggTier.COMMON, + [SpeciesId.CUBONE]: EggTier.COMMON, + [SpeciesId.LICKITUNG]: EggTier.RARE, + [SpeciesId.KOFFING]: EggTier.COMMON, + [SpeciesId.RHYHORN]: EggTier.RARE, + [SpeciesId.TANGELA]: EggTier.COMMON, + [SpeciesId.KANGASKHAN]: EggTier.RARE, + [SpeciesId.HORSEA]: EggTier.COMMON, + [SpeciesId.GOLDEEN]: EggTier.COMMON, + [SpeciesId.STARYU]: EggTier.COMMON, + [SpeciesId.SCYTHER]: EggTier.RARE, + [SpeciesId.PINSIR]: EggTier.RARE, + [SpeciesId.TAUROS]: EggTier.RARE, + [SpeciesId.MAGIKARP]: EggTier.COMMON, + [SpeciesId.LAPRAS]: EggTier.RARE, + [SpeciesId.DITTO]: EggTier.COMMON, + [SpeciesId.EEVEE]: EggTier.COMMON, + [SpeciesId.PORYGON]: EggTier.RARE, + [SpeciesId.OMANYTE]: EggTier.RARE, + [SpeciesId.KABUTO]: EggTier.RARE, + [SpeciesId.AERODACTYL]: EggTier.RARE, + [SpeciesId.ARTICUNO]: EggTier.EPIC, + [SpeciesId.ZAPDOS]: EggTier.EPIC, + [SpeciesId.MOLTRES]: EggTier.EPIC, + [SpeciesId.DRATINI]: EggTier.RARE, + [SpeciesId.MEWTWO]: EggTier.LEGENDARY, + [SpeciesId.MEW]: EggTier.EPIC, - [Species.CHIKORITA]: EggTier.COMMON, - [Species.CYNDAQUIL]: EggTier.COMMON, - [Species.TOTODILE]: EggTier.COMMON, - [Species.SENTRET]: EggTier.COMMON, - [Species.HOOTHOOT]: EggTier.COMMON, - [Species.LEDYBA]: EggTier.COMMON, - [Species.SPINARAK]: EggTier.COMMON, - [Species.CHINCHOU]: EggTier.COMMON, - [Species.PICHU]: EggTier.RARE, - [Species.CLEFFA]: EggTier.COMMON, - [Species.IGGLYBUFF]: EggTier.COMMON, - [Species.TOGEPI]: EggTier.COMMON, - [Species.NATU]: EggTier.COMMON, - [Species.MAREEP]: EggTier.COMMON, - [Species.HOPPIP]: EggTier.COMMON, - [Species.AIPOM]: EggTier.COMMON, - [Species.SUNKERN]: EggTier.COMMON, - [Species.YANMA]: EggTier.COMMON, - [Species.WOOPER]: EggTier.COMMON, - [Species.MURKROW]: EggTier.COMMON, - [Species.MISDREAVUS]: EggTier.COMMON, - [Species.UNOWN]: EggTier.COMMON, - [Species.GIRAFARIG]: EggTier.COMMON, - [Species.PINECO]: EggTier.COMMON, - [Species.DUNSPARCE]: EggTier.COMMON, - [Species.GLIGAR]: EggTier.COMMON, - [Species.SNUBBULL]: EggTier.COMMON, - [Species.QWILFISH]: EggTier.COMMON, - [Species.SHUCKLE]: EggTier.COMMON, - [Species.HERACROSS]: EggTier.RARE, - [Species.SNEASEL]: EggTier.RARE, - [Species.TEDDIURSA]: EggTier.RARE, - [Species.SLUGMA]: EggTier.COMMON, - [Species.SWINUB]: EggTier.COMMON, - [Species.CORSOLA]: EggTier.COMMON, - [Species.REMORAID]: EggTier.COMMON, - [Species.DELIBIRD]: EggTier.COMMON, - [Species.SKARMORY]: EggTier.RARE, - [Species.HOUNDOUR]: EggTier.COMMON, - [Species.PHANPY]: EggTier.COMMON, - [Species.STANTLER]: EggTier.COMMON, - [Species.SMEARGLE]: EggTier.COMMON, - [Species.TYROGUE]: EggTier.COMMON, - [Species.SMOOCHUM]: EggTier.COMMON, - [Species.ELEKID]: EggTier.COMMON, - [Species.MAGBY]: EggTier.COMMON, - [Species.MILTANK]: EggTier.RARE, - [Species.RAIKOU]: EggTier.EPIC, - [Species.ENTEI]: EggTier.EPIC, - [Species.SUICUNE]: EggTier.EPIC, - [Species.LARVITAR]: EggTier.RARE, - [Species.LUGIA]: EggTier.LEGENDARY, - [Species.HO_OH]: EggTier.LEGENDARY, - [Species.CELEBI]: EggTier.EPIC, + [SpeciesId.CHIKORITA]: EggTier.COMMON, + [SpeciesId.CYNDAQUIL]: EggTier.COMMON, + [SpeciesId.TOTODILE]: EggTier.COMMON, + [SpeciesId.SENTRET]: EggTier.COMMON, + [SpeciesId.HOOTHOOT]: EggTier.COMMON, + [SpeciesId.LEDYBA]: EggTier.COMMON, + [SpeciesId.SPINARAK]: EggTier.COMMON, + [SpeciesId.CHINCHOU]: EggTier.COMMON, + [SpeciesId.PICHU]: EggTier.RARE, + [SpeciesId.CLEFFA]: EggTier.COMMON, + [SpeciesId.IGGLYBUFF]: EggTier.COMMON, + [SpeciesId.TOGEPI]: EggTier.COMMON, + [SpeciesId.NATU]: EggTier.COMMON, + [SpeciesId.MAREEP]: EggTier.COMMON, + [SpeciesId.HOPPIP]: EggTier.COMMON, + [SpeciesId.AIPOM]: EggTier.COMMON, + [SpeciesId.SUNKERN]: EggTier.COMMON, + [SpeciesId.YANMA]: EggTier.COMMON, + [SpeciesId.WOOPER]: EggTier.COMMON, + [SpeciesId.MURKROW]: EggTier.COMMON, + [SpeciesId.MISDREAVUS]: EggTier.COMMON, + [SpeciesId.UNOWN]: EggTier.COMMON, + [SpeciesId.GIRAFARIG]: EggTier.COMMON, + [SpeciesId.PINECO]: EggTier.COMMON, + [SpeciesId.DUNSPARCE]: EggTier.COMMON, + [SpeciesId.GLIGAR]: EggTier.COMMON, + [SpeciesId.SNUBBULL]: EggTier.COMMON, + [SpeciesId.QWILFISH]: EggTier.COMMON, + [SpeciesId.SHUCKLE]: EggTier.COMMON, + [SpeciesId.HERACROSS]: EggTier.RARE, + [SpeciesId.SNEASEL]: EggTier.RARE, + [SpeciesId.TEDDIURSA]: EggTier.RARE, + [SpeciesId.SLUGMA]: EggTier.COMMON, + [SpeciesId.SWINUB]: EggTier.COMMON, + [SpeciesId.CORSOLA]: EggTier.COMMON, + [SpeciesId.REMORAID]: EggTier.COMMON, + [SpeciesId.DELIBIRD]: EggTier.COMMON, + [SpeciesId.SKARMORY]: EggTier.RARE, + [SpeciesId.HOUNDOUR]: EggTier.COMMON, + [SpeciesId.PHANPY]: EggTier.COMMON, + [SpeciesId.STANTLER]: EggTier.COMMON, + [SpeciesId.SMEARGLE]: EggTier.COMMON, + [SpeciesId.TYROGUE]: EggTier.COMMON, + [SpeciesId.SMOOCHUM]: EggTier.COMMON, + [SpeciesId.ELEKID]: EggTier.COMMON, + [SpeciesId.MAGBY]: EggTier.COMMON, + [SpeciesId.MILTANK]: EggTier.RARE, + [SpeciesId.RAIKOU]: EggTier.EPIC, + [SpeciesId.ENTEI]: EggTier.EPIC, + [SpeciesId.SUICUNE]: EggTier.EPIC, + [SpeciesId.LARVITAR]: EggTier.RARE, + [SpeciesId.LUGIA]: EggTier.LEGENDARY, + [SpeciesId.HO_OH]: EggTier.LEGENDARY, + [SpeciesId.CELEBI]: EggTier.EPIC, - [Species.TREECKO]: EggTier.COMMON, - [Species.TORCHIC]: EggTier.COMMON, - [Species.MUDKIP]: EggTier.COMMON, - [Species.POOCHYENA]: EggTier.COMMON, - [Species.ZIGZAGOON]: EggTier.COMMON, - [Species.WURMPLE]: EggTier.COMMON, - [Species.LOTAD]: EggTier.COMMON, - [Species.SEEDOT]: EggTier.COMMON, - [Species.TAILLOW]: EggTier.COMMON, - [Species.WINGULL]: EggTier.COMMON, - [Species.RALTS]: EggTier.RARE, - [Species.SURSKIT]: EggTier.COMMON, - [Species.SHROOMISH]: EggTier.COMMON, - [Species.SLAKOTH]: EggTier.RARE, - [Species.NINCADA]: EggTier.RARE, - [Species.WHISMUR]: EggTier.COMMON, - [Species.MAKUHITA]: EggTier.COMMON, - [Species.AZURILL]: EggTier.COMMON, - [Species.NOSEPASS]: EggTier.COMMON, - [Species.SKITTY]: EggTier.COMMON, - [Species.SABLEYE]: EggTier.COMMON, - [Species.MAWILE]: EggTier.COMMON, - [Species.ARON]: EggTier.COMMON, - [Species.MEDITITE]: EggTier.COMMON, - [Species.ELECTRIKE]: EggTier.COMMON, - [Species.PLUSLE]: EggTier.COMMON, - [Species.MINUN]: EggTier.COMMON, - [Species.VOLBEAT]: EggTier.COMMON, - [Species.ILLUMISE]: EggTier.COMMON, - [Species.GULPIN]: EggTier.COMMON, - [Species.CARVANHA]: EggTier.COMMON, - [Species.WAILMER]: EggTier.COMMON, - [Species.NUMEL]: EggTier.COMMON, - [Species.TORKOAL]: EggTier.COMMON, - [Species.SPOINK]: EggTier.COMMON, - [Species.SPINDA]: EggTier.COMMON, - [Species.TRAPINCH]: EggTier.COMMON, - [Species.CACNEA]: EggTier.COMMON, - [Species.SWABLU]: EggTier.COMMON, - [Species.ZANGOOSE]: EggTier.RARE, - [Species.SEVIPER]: EggTier.RARE, - [Species.LUNATONE]: EggTier.COMMON, - [Species.SOLROCK]: EggTier.COMMON, - [Species.BARBOACH]: EggTier.COMMON, - [Species.CORPHISH]: EggTier.COMMON, - [Species.BALTOY]: EggTier.COMMON, - [Species.LILEEP]: EggTier.RARE, - [Species.ANORITH]: EggTier.RARE, - [Species.FEEBAS]: EggTier.RARE, - [Species.CASTFORM]: EggTier.COMMON, - [Species.KECLEON]: EggTier.COMMON, - [Species.SHUPPET]: EggTier.COMMON, - [Species.DUSKULL]: EggTier.COMMON, - [Species.TROPIUS]: EggTier.COMMON, - [Species.ABSOL]: EggTier.RARE, - [Species.WYNAUT]: EggTier.COMMON, - [Species.SNORUNT]: EggTier.COMMON, - [Species.SPHEAL]: EggTier.COMMON, - [Species.CLAMPERL]: EggTier.COMMON, - [Species.RELICANTH]: EggTier.RARE, - [Species.LUVDISC]: EggTier.COMMON, - [Species.BAGON]: EggTier.RARE, - [Species.BELDUM]: EggTier.RARE, - [Species.REGIROCK]: EggTier.EPIC, - [Species.REGICE]: EggTier.EPIC, - [Species.REGISTEEL]: EggTier.EPIC, - [Species.LATIAS]: EggTier.EPIC, - [Species.LATIOS]: EggTier.EPIC, - [Species.KYOGRE]: EggTier.LEGENDARY, - [Species.GROUDON]: EggTier.LEGENDARY, - [Species.RAYQUAZA]: EggTier.LEGENDARY, - [Species.JIRACHI]: EggTier.EPIC, - [Species.DEOXYS]: EggTier.EPIC, + [SpeciesId.TREECKO]: EggTier.COMMON, + [SpeciesId.TORCHIC]: EggTier.COMMON, + [SpeciesId.MUDKIP]: EggTier.COMMON, + [SpeciesId.POOCHYENA]: EggTier.COMMON, + [SpeciesId.ZIGZAGOON]: EggTier.COMMON, + [SpeciesId.WURMPLE]: EggTier.COMMON, + [SpeciesId.LOTAD]: EggTier.COMMON, + [SpeciesId.SEEDOT]: EggTier.COMMON, + [SpeciesId.TAILLOW]: EggTier.COMMON, + [SpeciesId.WINGULL]: EggTier.COMMON, + [SpeciesId.RALTS]: EggTier.RARE, + [SpeciesId.SURSKIT]: EggTier.COMMON, + [SpeciesId.SHROOMISH]: EggTier.COMMON, + [SpeciesId.SLAKOTH]: EggTier.RARE, + [SpeciesId.NINCADA]: EggTier.RARE, + [SpeciesId.WHISMUR]: EggTier.COMMON, + [SpeciesId.MAKUHITA]: EggTier.COMMON, + [SpeciesId.AZURILL]: EggTier.COMMON, + [SpeciesId.NOSEPASS]: EggTier.COMMON, + [SpeciesId.SKITTY]: EggTier.COMMON, + [SpeciesId.SABLEYE]: EggTier.COMMON, + [SpeciesId.MAWILE]: EggTier.COMMON, + [SpeciesId.ARON]: EggTier.COMMON, + [SpeciesId.MEDITITE]: EggTier.COMMON, + [SpeciesId.ELECTRIKE]: EggTier.COMMON, + [SpeciesId.PLUSLE]: EggTier.COMMON, + [SpeciesId.MINUN]: EggTier.COMMON, + [SpeciesId.VOLBEAT]: EggTier.COMMON, + [SpeciesId.ILLUMISE]: EggTier.COMMON, + [SpeciesId.GULPIN]: EggTier.COMMON, + [SpeciesId.CARVANHA]: EggTier.COMMON, + [SpeciesId.WAILMER]: EggTier.COMMON, + [SpeciesId.NUMEL]: EggTier.COMMON, + [SpeciesId.TORKOAL]: EggTier.COMMON, + [SpeciesId.SPOINK]: EggTier.COMMON, + [SpeciesId.SPINDA]: EggTier.COMMON, + [SpeciesId.TRAPINCH]: EggTier.COMMON, + [SpeciesId.CACNEA]: EggTier.COMMON, + [SpeciesId.SWABLU]: EggTier.COMMON, + [SpeciesId.ZANGOOSE]: EggTier.RARE, + [SpeciesId.SEVIPER]: EggTier.RARE, + [SpeciesId.LUNATONE]: EggTier.COMMON, + [SpeciesId.SOLROCK]: EggTier.COMMON, + [SpeciesId.BARBOACH]: EggTier.COMMON, + [SpeciesId.CORPHISH]: EggTier.COMMON, + [SpeciesId.BALTOY]: EggTier.COMMON, + [SpeciesId.LILEEP]: EggTier.RARE, + [SpeciesId.ANORITH]: EggTier.RARE, + [SpeciesId.FEEBAS]: EggTier.RARE, + [SpeciesId.CASTFORM]: EggTier.COMMON, + [SpeciesId.KECLEON]: EggTier.COMMON, + [SpeciesId.SHUPPET]: EggTier.COMMON, + [SpeciesId.DUSKULL]: EggTier.COMMON, + [SpeciesId.TROPIUS]: EggTier.COMMON, + [SpeciesId.ABSOL]: EggTier.RARE, + [SpeciesId.WYNAUT]: EggTier.COMMON, + [SpeciesId.SNORUNT]: EggTier.COMMON, + [SpeciesId.SPHEAL]: EggTier.COMMON, + [SpeciesId.CLAMPERL]: EggTier.COMMON, + [SpeciesId.RELICANTH]: EggTier.RARE, + [SpeciesId.LUVDISC]: EggTier.COMMON, + [SpeciesId.BAGON]: EggTier.RARE, + [SpeciesId.BELDUM]: EggTier.RARE, + [SpeciesId.REGIROCK]: EggTier.EPIC, + [SpeciesId.REGICE]: EggTier.EPIC, + [SpeciesId.REGISTEEL]: EggTier.EPIC, + [SpeciesId.LATIAS]: EggTier.EPIC, + [SpeciesId.LATIOS]: EggTier.EPIC, + [SpeciesId.KYOGRE]: EggTier.LEGENDARY, + [SpeciesId.GROUDON]: EggTier.LEGENDARY, + [SpeciesId.RAYQUAZA]: EggTier.LEGENDARY, + [SpeciesId.JIRACHI]: EggTier.EPIC, + [SpeciesId.DEOXYS]: EggTier.EPIC, - [Species.TURTWIG]: EggTier.COMMON, - [Species.CHIMCHAR]: EggTier.COMMON, - [Species.PIPLUP]: EggTier.COMMON, - [Species.STARLY]: EggTier.COMMON, - [Species.BIDOOF]: EggTier.COMMON, - [Species.KRICKETOT]: EggTier.COMMON, - [Species.SHINX]: EggTier.COMMON, - [Species.BUDEW]: EggTier.COMMON, - [Species.CRANIDOS]: EggTier.RARE, - [Species.SHIELDON]: EggTier.RARE, - [Species.BURMY]: EggTier.COMMON, - [Species.COMBEE]: EggTier.COMMON, - [Species.PACHIRISU]: EggTier.COMMON, - [Species.BUIZEL]: EggTier.COMMON, - [Species.CHERUBI]: EggTier.COMMON, - [Species.SHELLOS]: EggTier.COMMON, - [Species.DRIFLOON]: EggTier.COMMON, - [Species.BUNEARY]: EggTier.COMMON, - [Species.GLAMEOW]: EggTier.COMMON, - [Species.CHINGLING]: EggTier.COMMON, - [Species.STUNKY]: EggTier.COMMON, - [Species.BRONZOR]: EggTier.COMMON, - [Species.BONSLY]: EggTier.COMMON, - [Species.MIME_JR]: EggTier.COMMON, - [Species.HAPPINY]: EggTier.RARE, - [Species.CHATOT]: EggTier.COMMON, - [Species.SPIRITOMB]: EggTier.RARE, - [Species.GIBLE]: EggTier.RARE, - [Species.MUNCHLAX]: EggTier.RARE, - [Species.RIOLU]: EggTier.RARE, - [Species.HIPPOPOTAS]: EggTier.COMMON, - [Species.SKORUPI]: EggTier.COMMON, - [Species.CROAGUNK]: EggTier.COMMON, - [Species.CARNIVINE]: EggTier.COMMON, - [Species.FINNEON]: EggTier.COMMON, - [Species.MANTYKE]: EggTier.COMMON, - [Species.SNOVER]: EggTier.COMMON, - [Species.ROTOM]: EggTier.RARE, - [Species.UXIE]: EggTier.EPIC, - [Species.MESPRIT]: EggTier.EPIC, - [Species.AZELF]: EggTier.EPIC, - [Species.DIALGA]: EggTier.LEGENDARY, - [Species.PALKIA]: EggTier.LEGENDARY, - [Species.HEATRAN]: EggTier.EPIC, - [Species.REGIGIGAS]: EggTier.LEGENDARY, - [Species.GIRATINA]: EggTier.LEGENDARY, - [Species.CRESSELIA]: EggTier.EPIC, - [Species.PHIONE]: EggTier.EPIC, - [Species.MANAPHY]: EggTier.EPIC, - [Species.DARKRAI]: EggTier.EPIC, - [Species.SHAYMIN]: EggTier.EPIC, - [Species.ARCEUS]: EggTier.LEGENDARY, + [SpeciesId.TURTWIG]: EggTier.COMMON, + [SpeciesId.CHIMCHAR]: EggTier.COMMON, + [SpeciesId.PIPLUP]: EggTier.COMMON, + [SpeciesId.STARLY]: EggTier.COMMON, + [SpeciesId.BIDOOF]: EggTier.COMMON, + [SpeciesId.KRICKETOT]: EggTier.COMMON, + [SpeciesId.SHINX]: EggTier.COMMON, + [SpeciesId.BUDEW]: EggTier.COMMON, + [SpeciesId.CRANIDOS]: EggTier.RARE, + [SpeciesId.SHIELDON]: EggTier.RARE, + [SpeciesId.BURMY]: EggTier.COMMON, + [SpeciesId.COMBEE]: EggTier.COMMON, + [SpeciesId.PACHIRISU]: EggTier.COMMON, + [SpeciesId.BUIZEL]: EggTier.COMMON, + [SpeciesId.CHERUBI]: EggTier.COMMON, + [SpeciesId.SHELLOS]: EggTier.COMMON, + [SpeciesId.DRIFLOON]: EggTier.COMMON, + [SpeciesId.BUNEARY]: EggTier.COMMON, + [SpeciesId.GLAMEOW]: EggTier.COMMON, + [SpeciesId.CHINGLING]: EggTier.COMMON, + [SpeciesId.STUNKY]: EggTier.COMMON, + [SpeciesId.BRONZOR]: EggTier.COMMON, + [SpeciesId.BONSLY]: EggTier.COMMON, + [SpeciesId.MIME_JR]: EggTier.COMMON, + [SpeciesId.HAPPINY]: EggTier.RARE, + [SpeciesId.CHATOT]: EggTier.COMMON, + [SpeciesId.SPIRITOMB]: EggTier.RARE, + [SpeciesId.GIBLE]: EggTier.RARE, + [SpeciesId.MUNCHLAX]: EggTier.RARE, + [SpeciesId.RIOLU]: EggTier.RARE, + [SpeciesId.HIPPOPOTAS]: EggTier.COMMON, + [SpeciesId.SKORUPI]: EggTier.COMMON, + [SpeciesId.CROAGUNK]: EggTier.COMMON, + [SpeciesId.CARNIVINE]: EggTier.COMMON, + [SpeciesId.FINNEON]: EggTier.COMMON, + [SpeciesId.MANTYKE]: EggTier.COMMON, + [SpeciesId.SNOVER]: EggTier.COMMON, + [SpeciesId.ROTOM]: EggTier.RARE, + [SpeciesId.UXIE]: EggTier.EPIC, + [SpeciesId.MESPRIT]: EggTier.EPIC, + [SpeciesId.AZELF]: EggTier.EPIC, + [SpeciesId.DIALGA]: EggTier.LEGENDARY, + [SpeciesId.PALKIA]: EggTier.LEGENDARY, + [SpeciesId.HEATRAN]: EggTier.EPIC, + [SpeciesId.REGIGIGAS]: EggTier.LEGENDARY, + [SpeciesId.GIRATINA]: EggTier.LEGENDARY, + [SpeciesId.CRESSELIA]: EggTier.EPIC, + [SpeciesId.PHIONE]: EggTier.EPIC, + [SpeciesId.MANAPHY]: EggTier.EPIC, + [SpeciesId.DARKRAI]: EggTier.EPIC, + [SpeciesId.SHAYMIN]: EggTier.EPIC, + [SpeciesId.ARCEUS]: EggTier.LEGENDARY, - [Species.VICTINI]: EggTier.EPIC, - [Species.SNIVY]: EggTier.COMMON, - [Species.TEPIG]: EggTier.COMMON, - [Species.OSHAWOTT]: EggTier.COMMON, - [Species.PATRAT]: EggTier.COMMON, - [Species.LILLIPUP]: EggTier.COMMON, - [Species.PURRLOIN]: EggTier.COMMON, - [Species.PANSAGE]: EggTier.COMMON, - [Species.PANSEAR]: EggTier.COMMON, - [Species.PANPOUR]: EggTier.COMMON, - [Species.MUNNA]: EggTier.COMMON, - [Species.PIDOVE]: EggTier.COMMON, - [Species.BLITZLE]: EggTier.COMMON, - [Species.ROGGENROLA]: EggTier.COMMON, - [Species.WOOBAT]: EggTier.COMMON, - [Species.DRILBUR]: EggTier.RARE, - [Species.AUDINO]: EggTier.RARE, - [Species.TIMBURR]: EggTier.RARE, - [Species.TYMPOLE]: EggTier.COMMON, - [Species.THROH]: EggTier.RARE, - [Species.SAWK]: EggTier.RARE, - [Species.SEWADDLE]: EggTier.COMMON, - [Species.VENIPEDE]: EggTier.COMMON, - [Species.COTTONEE]: EggTier.COMMON, - [Species.PETILIL]: EggTier.COMMON, - [Species.BASCULIN]: EggTier.RARE, - [Species.SANDILE]: EggTier.RARE, - [Species.DARUMAKA]: EggTier.RARE, - [Species.MARACTUS]: EggTier.COMMON, - [Species.DWEBBLE]: EggTier.COMMON, - [Species.SCRAGGY]: EggTier.COMMON, - [Species.SIGILYPH]: EggTier.RARE, - [Species.YAMASK]: EggTier.COMMON, - [Species.TIRTOUGA]: EggTier.RARE, - [Species.ARCHEN]: EggTier.RARE, - [Species.TRUBBISH]: EggTier.COMMON, - [Species.ZORUA]: EggTier.COMMON, - [Species.MINCCINO]: EggTier.COMMON, - [Species.GOTHITA]: EggTier.COMMON, - [Species.SOLOSIS]: EggTier.COMMON, - [Species.DUCKLETT]: EggTier.COMMON, - [Species.VANILLITE]: EggTier.COMMON, - [Species.DEERLING]: EggTier.COMMON, - [Species.EMOLGA]: EggTier.COMMON, - [Species.KARRABLAST]: EggTier.COMMON, - [Species.FOONGUS]: EggTier.COMMON, - [Species.FRILLISH]: EggTier.COMMON, - [Species.ALOMOMOLA]: EggTier.RARE, - [Species.JOLTIK]: EggTier.COMMON, - [Species.FERROSEED]: EggTier.COMMON, - [Species.KLINK]: EggTier.COMMON, - [Species.TYNAMO]: EggTier.COMMON, - [Species.ELGYEM]: EggTier.COMMON, - [Species.LITWICK]: EggTier.COMMON, - [Species.AXEW]: EggTier.RARE, - [Species.CUBCHOO]: EggTier.COMMON, - [Species.CRYOGONAL]: EggTier.RARE, - [Species.SHELMET]: EggTier.COMMON, - [Species.STUNFISK]: EggTier.COMMON, - [Species.MIENFOO]: EggTier.COMMON, - [Species.DRUDDIGON]: EggTier.RARE, - [Species.GOLETT]: EggTier.COMMON, - [Species.PAWNIARD]: EggTier.RARE, - [Species.BOUFFALANT]: EggTier.RARE, - [Species.RUFFLET]: EggTier.COMMON, - [Species.VULLABY]: EggTier.COMMON, - [Species.HEATMOR]: EggTier.RARE, - [Species.DURANT]: EggTier.RARE, - [Species.DEINO]: EggTier.RARE, - [Species.LARVESTA]: EggTier.RARE, - [Species.COBALION]: EggTier.EPIC, - [Species.TERRAKION]: EggTier.EPIC, - [Species.VIRIZION]: EggTier.EPIC, - [Species.TORNADUS]: EggTier.EPIC, - [Species.THUNDURUS]: EggTier.EPIC, - [Species.RESHIRAM]: EggTier.LEGENDARY, - [Species.ZEKROM]: EggTier.LEGENDARY, - [Species.LANDORUS]: EggTier.EPIC, - [Species.KYUREM]: EggTier.LEGENDARY, - [Species.KELDEO]: EggTier.EPIC, - [Species.MELOETTA]: EggTier.EPIC, - [Species.GENESECT]: EggTier.EPIC, + [SpeciesId.VICTINI]: EggTier.EPIC, + [SpeciesId.SNIVY]: EggTier.COMMON, + [SpeciesId.TEPIG]: EggTier.COMMON, + [SpeciesId.OSHAWOTT]: EggTier.COMMON, + [SpeciesId.PATRAT]: EggTier.COMMON, + [SpeciesId.LILLIPUP]: EggTier.COMMON, + [SpeciesId.PURRLOIN]: EggTier.COMMON, + [SpeciesId.PANSAGE]: EggTier.COMMON, + [SpeciesId.PANSEAR]: EggTier.COMMON, + [SpeciesId.PANPOUR]: EggTier.COMMON, + [SpeciesId.MUNNA]: EggTier.COMMON, + [SpeciesId.PIDOVE]: EggTier.COMMON, + [SpeciesId.BLITZLE]: EggTier.COMMON, + [SpeciesId.ROGGENROLA]: EggTier.COMMON, + [SpeciesId.WOOBAT]: EggTier.COMMON, + [SpeciesId.DRILBUR]: EggTier.RARE, + [SpeciesId.AUDINO]: EggTier.RARE, + [SpeciesId.TIMBURR]: EggTier.RARE, + [SpeciesId.TYMPOLE]: EggTier.COMMON, + [SpeciesId.THROH]: EggTier.RARE, + [SpeciesId.SAWK]: EggTier.RARE, + [SpeciesId.SEWADDLE]: EggTier.COMMON, + [SpeciesId.VENIPEDE]: EggTier.COMMON, + [SpeciesId.COTTONEE]: EggTier.COMMON, + [SpeciesId.PETILIL]: EggTier.COMMON, + [SpeciesId.BASCULIN]: EggTier.RARE, + [SpeciesId.SANDILE]: EggTier.RARE, + [SpeciesId.DARUMAKA]: EggTier.RARE, + [SpeciesId.MARACTUS]: EggTier.COMMON, + [SpeciesId.DWEBBLE]: EggTier.COMMON, + [SpeciesId.SCRAGGY]: EggTier.COMMON, + [SpeciesId.SIGILYPH]: EggTier.RARE, + [SpeciesId.YAMASK]: EggTier.COMMON, + [SpeciesId.TIRTOUGA]: EggTier.RARE, + [SpeciesId.ARCHEN]: EggTier.RARE, + [SpeciesId.TRUBBISH]: EggTier.COMMON, + [SpeciesId.ZORUA]: EggTier.COMMON, + [SpeciesId.MINCCINO]: EggTier.COMMON, + [SpeciesId.GOTHITA]: EggTier.COMMON, + [SpeciesId.SOLOSIS]: EggTier.COMMON, + [SpeciesId.DUCKLETT]: EggTier.COMMON, + [SpeciesId.VANILLITE]: EggTier.COMMON, + [SpeciesId.DEERLING]: EggTier.COMMON, + [SpeciesId.EMOLGA]: EggTier.COMMON, + [SpeciesId.KARRABLAST]: EggTier.COMMON, + [SpeciesId.FOONGUS]: EggTier.COMMON, + [SpeciesId.FRILLISH]: EggTier.COMMON, + [SpeciesId.ALOMOMOLA]: EggTier.RARE, + [SpeciesId.JOLTIK]: EggTier.COMMON, + [SpeciesId.FERROSEED]: EggTier.COMMON, + [SpeciesId.KLINK]: EggTier.COMMON, + [SpeciesId.TYNAMO]: EggTier.COMMON, + [SpeciesId.ELGYEM]: EggTier.COMMON, + [SpeciesId.LITWICK]: EggTier.COMMON, + [SpeciesId.AXEW]: EggTier.RARE, + [SpeciesId.CUBCHOO]: EggTier.COMMON, + [SpeciesId.CRYOGONAL]: EggTier.RARE, + [SpeciesId.SHELMET]: EggTier.COMMON, + [SpeciesId.STUNFISK]: EggTier.COMMON, + [SpeciesId.MIENFOO]: EggTier.COMMON, + [SpeciesId.DRUDDIGON]: EggTier.RARE, + [SpeciesId.GOLETT]: EggTier.COMMON, + [SpeciesId.PAWNIARD]: EggTier.RARE, + [SpeciesId.BOUFFALANT]: EggTier.RARE, + [SpeciesId.RUFFLET]: EggTier.COMMON, + [SpeciesId.VULLABY]: EggTier.COMMON, + [SpeciesId.HEATMOR]: EggTier.RARE, + [SpeciesId.DURANT]: EggTier.RARE, + [SpeciesId.DEINO]: EggTier.RARE, + [SpeciesId.LARVESTA]: EggTier.RARE, + [SpeciesId.COBALION]: EggTier.EPIC, + [SpeciesId.TERRAKION]: EggTier.EPIC, + [SpeciesId.VIRIZION]: EggTier.EPIC, + [SpeciesId.TORNADUS]: EggTier.EPIC, + [SpeciesId.THUNDURUS]: EggTier.EPIC, + [SpeciesId.RESHIRAM]: EggTier.LEGENDARY, + [SpeciesId.ZEKROM]: EggTier.LEGENDARY, + [SpeciesId.LANDORUS]: EggTier.EPIC, + [SpeciesId.KYUREM]: EggTier.LEGENDARY, + [SpeciesId.KELDEO]: EggTier.EPIC, + [SpeciesId.MELOETTA]: EggTier.EPIC, + [SpeciesId.GENESECT]: EggTier.EPIC, - [Species.CHESPIN]: EggTier.COMMON, - [Species.FENNEKIN]: EggTier.COMMON, - [Species.FROAKIE]: EggTier.COMMON, - [Species.BUNNELBY]: EggTier.COMMON, - [Species.FLETCHLING]: EggTier.COMMON, - [Species.SCATTERBUG]: EggTier.COMMON, - [Species.LITLEO]: EggTier.COMMON, - [Species.FLABEBE]: EggTier.COMMON, - [Species.SKIDDO]: EggTier.COMMON, - [Species.PANCHAM]: EggTier.COMMON, - [Species.FURFROU]: EggTier.COMMON, - [Species.ESPURR]: EggTier.COMMON, - [Species.HONEDGE]: EggTier.RARE, - [Species.SPRITZEE]: EggTier.COMMON, - [Species.SWIRLIX]: EggTier.COMMON, - [Species.INKAY]: EggTier.COMMON, - [Species.BINACLE]: EggTier.COMMON, - [Species.SKRELP]: EggTier.COMMON, - [Species.CLAUNCHER]: EggTier.COMMON, - [Species.HELIOPTILE]: EggTier.COMMON, - [Species.TYRUNT]: EggTier.RARE, - [Species.AMAURA]: EggTier.RARE, - [Species.HAWLUCHA]: EggTier.RARE, - [Species.DEDENNE]: EggTier.COMMON, - [Species.CARBINK]: EggTier.COMMON, - [Species.GOOMY]: EggTier.RARE, - [Species.KLEFKI]: EggTier.COMMON, - [Species.PHANTUMP]: EggTier.COMMON, - [Species.PUMPKABOO]: EggTier.COMMON, - [Species.BERGMITE]: EggTier.COMMON, - [Species.NOIBAT]: EggTier.RARE, - [Species.XERNEAS]: EggTier.LEGENDARY, - [Species.YVELTAL]: EggTier.LEGENDARY, - [Species.ZYGARDE]: EggTier.LEGENDARY, - [Species.DIANCIE]: EggTier.EPIC, - [Species.HOOPA]: EggTier.EPIC, - [Species.VOLCANION]: EggTier.EPIC, - [Species.ETERNAL_FLOETTE]: EggTier.EPIC, + [SpeciesId.CHESPIN]: EggTier.COMMON, + [SpeciesId.FENNEKIN]: EggTier.COMMON, + [SpeciesId.FROAKIE]: EggTier.COMMON, + [SpeciesId.BUNNELBY]: EggTier.COMMON, + [SpeciesId.FLETCHLING]: EggTier.COMMON, + [SpeciesId.SCATTERBUG]: EggTier.COMMON, + [SpeciesId.LITLEO]: EggTier.COMMON, + [SpeciesId.FLABEBE]: EggTier.COMMON, + [SpeciesId.SKIDDO]: EggTier.COMMON, + [SpeciesId.PANCHAM]: EggTier.COMMON, + [SpeciesId.FURFROU]: EggTier.COMMON, + [SpeciesId.ESPURR]: EggTier.COMMON, + [SpeciesId.HONEDGE]: EggTier.RARE, + [SpeciesId.SPRITZEE]: EggTier.COMMON, + [SpeciesId.SWIRLIX]: EggTier.COMMON, + [SpeciesId.INKAY]: EggTier.COMMON, + [SpeciesId.BINACLE]: EggTier.COMMON, + [SpeciesId.SKRELP]: EggTier.COMMON, + [SpeciesId.CLAUNCHER]: EggTier.COMMON, + [SpeciesId.HELIOPTILE]: EggTier.COMMON, + [SpeciesId.TYRUNT]: EggTier.RARE, + [SpeciesId.AMAURA]: EggTier.RARE, + [SpeciesId.HAWLUCHA]: EggTier.RARE, + [SpeciesId.DEDENNE]: EggTier.COMMON, + [SpeciesId.CARBINK]: EggTier.COMMON, + [SpeciesId.GOOMY]: EggTier.RARE, + [SpeciesId.KLEFKI]: EggTier.COMMON, + [SpeciesId.PHANTUMP]: EggTier.COMMON, + [SpeciesId.PUMPKABOO]: EggTier.COMMON, + [SpeciesId.BERGMITE]: EggTier.COMMON, + [SpeciesId.NOIBAT]: EggTier.RARE, + [SpeciesId.XERNEAS]: EggTier.LEGENDARY, + [SpeciesId.YVELTAL]: EggTier.LEGENDARY, + [SpeciesId.ZYGARDE]: EggTier.LEGENDARY, + [SpeciesId.DIANCIE]: EggTier.EPIC, + [SpeciesId.HOOPA]: EggTier.EPIC, + [SpeciesId.VOLCANION]: EggTier.EPIC, + [SpeciesId.ETERNAL_FLOETTE]: EggTier.EPIC, - [Species.ROWLET]: EggTier.COMMON, - [Species.LITTEN]: EggTier.COMMON, - [Species.POPPLIO]: EggTier.COMMON, - [Species.PIKIPEK]: EggTier.COMMON, - [Species.YUNGOOS]: EggTier.COMMON, - [Species.GRUBBIN]: EggTier.COMMON, - [Species.CRABRAWLER]: EggTier.COMMON, - [Species.ORICORIO]: EggTier.COMMON, - [Species.CUTIEFLY]: EggTier.COMMON, - [Species.ROCKRUFF]: EggTier.COMMON, - [Species.WISHIWASHI]: EggTier.COMMON, - [Species.MAREANIE]: EggTier.COMMON, - [Species.MUDBRAY]: EggTier.COMMON, - [Species.DEWPIDER]: EggTier.COMMON, - [Species.FOMANTIS]: EggTier.COMMON, - [Species.MORELULL]: EggTier.COMMON, - [Species.SALANDIT]: EggTier.COMMON, - [Species.STUFFUL]: EggTier.COMMON, - [Species.BOUNSWEET]: EggTier.COMMON, - [Species.COMFEY]: EggTier.RARE, - [Species.ORANGURU]: EggTier.RARE, - [Species.PASSIMIAN]: EggTier.RARE, - [Species.WIMPOD]: EggTier.COMMON, - [Species.SANDYGAST]: EggTier.COMMON, - [Species.PYUKUMUKU]: EggTier.COMMON, - [Species.TYPE_NULL]: EggTier.EPIC, - [Species.MINIOR]: EggTier.RARE, - [Species.KOMALA]: EggTier.COMMON, - [Species.TURTONATOR]: EggTier.RARE, - [Species.TOGEDEMARU]: EggTier.COMMON, - [Species.MIMIKYU]: EggTier.RARE, - [Species.BRUXISH]: EggTier.RARE, - [Species.DRAMPA]: EggTier.RARE, - [Species.DHELMISE]: EggTier.RARE, - [Species.JANGMO_O]: EggTier.RARE, - [Species.TAPU_KOKO]: EggTier.EPIC, - [Species.TAPU_LELE]: EggTier.EPIC, - [Species.TAPU_BULU]: EggTier.EPIC, - [Species.TAPU_FINI]: EggTier.EPIC, - [Species.COSMOG]: EggTier.LEGENDARY, - [Species.NIHILEGO]: EggTier.EPIC, - [Species.BUZZWOLE]: EggTier.EPIC, - [Species.PHEROMOSA]: EggTier.EPIC, - [Species.XURKITREE]: EggTier.EPIC, - [Species.CELESTEELA]: EggTier.EPIC, - [Species.KARTANA]: EggTier.EPIC, - [Species.GUZZLORD]: EggTier.EPIC, - [Species.NECROZMA]: EggTier.LEGENDARY, - [Species.MAGEARNA]: EggTier.EPIC, - [Species.MARSHADOW]: EggTier.EPIC, - [Species.POIPOLE]: EggTier.EPIC, - [Species.STAKATAKA]: EggTier.EPIC, - [Species.BLACEPHALON]: EggTier.EPIC, - [Species.ZERAORA]: EggTier.EPIC, - [Species.MELTAN]: EggTier.EPIC, - [Species.ALOLA_RATTATA]: EggTier.COMMON, - [Species.ALOLA_SANDSHREW]: EggTier.RARE, - [Species.ALOLA_VULPIX]: EggTier.RARE, - [Species.ALOLA_DIGLETT]: EggTier.RARE, - [Species.ALOLA_MEOWTH]: EggTier.RARE, - [Species.ALOLA_GEODUDE]: EggTier.RARE, - [Species.ALOLA_GRIMER]: EggTier.RARE, + [SpeciesId.ROWLET]: EggTier.COMMON, + [SpeciesId.LITTEN]: EggTier.COMMON, + [SpeciesId.POPPLIO]: EggTier.COMMON, + [SpeciesId.PIKIPEK]: EggTier.COMMON, + [SpeciesId.YUNGOOS]: EggTier.COMMON, + [SpeciesId.GRUBBIN]: EggTier.COMMON, + [SpeciesId.CRABRAWLER]: EggTier.COMMON, + [SpeciesId.ORICORIO]: EggTier.COMMON, + [SpeciesId.CUTIEFLY]: EggTier.COMMON, + [SpeciesId.ROCKRUFF]: EggTier.COMMON, + [SpeciesId.WISHIWASHI]: EggTier.COMMON, + [SpeciesId.MAREANIE]: EggTier.COMMON, + [SpeciesId.MUDBRAY]: EggTier.COMMON, + [SpeciesId.DEWPIDER]: EggTier.COMMON, + [SpeciesId.FOMANTIS]: EggTier.COMMON, + [SpeciesId.MORELULL]: EggTier.COMMON, + [SpeciesId.SALANDIT]: EggTier.COMMON, + [SpeciesId.STUFFUL]: EggTier.COMMON, + [SpeciesId.BOUNSWEET]: EggTier.COMMON, + [SpeciesId.COMFEY]: EggTier.RARE, + [SpeciesId.ORANGURU]: EggTier.RARE, + [SpeciesId.PASSIMIAN]: EggTier.RARE, + [SpeciesId.WIMPOD]: EggTier.COMMON, + [SpeciesId.SANDYGAST]: EggTier.COMMON, + [SpeciesId.PYUKUMUKU]: EggTier.COMMON, + [SpeciesId.TYPE_NULL]: EggTier.EPIC, + [SpeciesId.MINIOR]: EggTier.RARE, + [SpeciesId.KOMALA]: EggTier.COMMON, + [SpeciesId.TURTONATOR]: EggTier.RARE, + [SpeciesId.TOGEDEMARU]: EggTier.COMMON, + [SpeciesId.MIMIKYU]: EggTier.RARE, + [SpeciesId.BRUXISH]: EggTier.RARE, + [SpeciesId.DRAMPA]: EggTier.RARE, + [SpeciesId.DHELMISE]: EggTier.RARE, + [SpeciesId.JANGMO_O]: EggTier.RARE, + [SpeciesId.TAPU_KOKO]: EggTier.EPIC, + [SpeciesId.TAPU_LELE]: EggTier.EPIC, + [SpeciesId.TAPU_BULU]: EggTier.EPIC, + [SpeciesId.TAPU_FINI]: EggTier.EPIC, + [SpeciesId.COSMOG]: EggTier.LEGENDARY, + [SpeciesId.NIHILEGO]: EggTier.EPIC, + [SpeciesId.BUZZWOLE]: EggTier.EPIC, + [SpeciesId.PHEROMOSA]: EggTier.EPIC, + [SpeciesId.XURKITREE]: EggTier.EPIC, + [SpeciesId.CELESTEELA]: EggTier.EPIC, + [SpeciesId.KARTANA]: EggTier.EPIC, + [SpeciesId.GUZZLORD]: EggTier.EPIC, + [SpeciesId.NECROZMA]: EggTier.LEGENDARY, + [SpeciesId.MAGEARNA]: EggTier.EPIC, + [SpeciesId.MARSHADOW]: EggTier.EPIC, + [SpeciesId.POIPOLE]: EggTier.EPIC, + [SpeciesId.STAKATAKA]: EggTier.EPIC, + [SpeciesId.BLACEPHALON]: EggTier.EPIC, + [SpeciesId.ZERAORA]: EggTier.EPIC, + [SpeciesId.MELTAN]: EggTier.EPIC, + [SpeciesId.ALOLA_RATTATA]: EggTier.COMMON, + [SpeciesId.ALOLA_SANDSHREW]: EggTier.RARE, + [SpeciesId.ALOLA_VULPIX]: EggTier.RARE, + [SpeciesId.ALOLA_DIGLETT]: EggTier.RARE, + [SpeciesId.ALOLA_MEOWTH]: EggTier.RARE, + [SpeciesId.ALOLA_GEODUDE]: EggTier.RARE, + [SpeciesId.ALOLA_GRIMER]: EggTier.RARE, - [Species.GROOKEY]: EggTier.COMMON, - [Species.SCORBUNNY]: EggTier.COMMON, - [Species.SOBBLE]: EggTier.COMMON, - [Species.SKWOVET]: EggTier.COMMON, - [Species.ROOKIDEE]: EggTier.COMMON, - [Species.BLIPBUG]: EggTier.COMMON, - [Species.NICKIT]: EggTier.COMMON, - [Species.GOSSIFLEUR]: EggTier.COMMON, - [Species.WOOLOO]: EggTier.COMMON, - [Species.CHEWTLE]: EggTier.COMMON, - [Species.YAMPER]: EggTier.COMMON, - [Species.ROLYCOLY]: EggTier.COMMON, - [Species.APPLIN]: EggTier.COMMON, - [Species.SILICOBRA]: EggTier.COMMON, - [Species.CRAMORANT]: EggTier.COMMON, - [Species.ARROKUDA]: EggTier.COMMON, - [Species.TOXEL]: EggTier.COMMON, - [Species.SIZZLIPEDE]: EggTier.COMMON, - [Species.CLOBBOPUS]: EggTier.COMMON, - [Species.SINISTEA]: EggTier.COMMON, - [Species.HATENNA]: EggTier.COMMON, - [Species.IMPIDIMP]: EggTier.COMMON, - [Species.MILCERY]: EggTier.COMMON, - [Species.FALINKS]: EggTier.RARE, - [Species.PINCURCHIN]: EggTier.COMMON, - [Species.SNOM]: EggTier.COMMON, - [Species.STONJOURNER]: EggTier.COMMON, - [Species.EISCUE]: EggTier.COMMON, - [Species.INDEEDEE]: EggTier.RARE, - [Species.MORPEKO]: EggTier.COMMON, - [Species.CUFANT]: EggTier.COMMON, - [Species.DRACOZOLT]: EggTier.RARE, - [Species.ARCTOZOLT]: EggTier.RARE, - [Species.DRACOVISH]: EggTier.RARE, - [Species.ARCTOVISH]: EggTier.RARE, - [Species.DURALUDON]: EggTier.RARE, - [Species.DREEPY]: EggTier.RARE, - [Species.ZACIAN]: EggTier.LEGENDARY, - [Species.ZAMAZENTA]: EggTier.LEGENDARY, - [Species.ETERNATUS]: EggTier.LEGENDARY, - [Species.KUBFU]: EggTier.EPIC, - [Species.ZARUDE]: EggTier.EPIC, - [Species.REGIELEKI]: EggTier.EPIC, - [Species.REGIDRAGO]: EggTier.EPIC, - [Species.GLASTRIER]: EggTier.EPIC, - [Species.SPECTRIER]: EggTier.EPIC, - [Species.CALYREX]: EggTier.LEGENDARY, - [Species.ENAMORUS]: EggTier.EPIC, - [Species.GALAR_MEOWTH]: EggTier.RARE, - [Species.GALAR_PONYTA]: EggTier.RARE, - [Species.GALAR_SLOWPOKE]: EggTier.RARE, - [Species.GALAR_FARFETCHD]: EggTier.RARE, - [Species.GALAR_ARTICUNO]: EggTier.EPIC, - [Species.GALAR_ZAPDOS]: EggTier.EPIC, - [Species.GALAR_MOLTRES]: EggTier.EPIC, - [Species.GALAR_CORSOLA]: EggTier.RARE, - [Species.GALAR_ZIGZAGOON]: EggTier.RARE, - [Species.GALAR_DARUMAKA]: EggTier.RARE, - [Species.GALAR_YAMASK]: EggTier.RARE, - [Species.GALAR_STUNFISK]: EggTier.RARE, - [Species.HISUI_GROWLITHE]: EggTier.RARE, - [Species.HISUI_VOLTORB]: EggTier.RARE, - [Species.HISUI_QWILFISH]: EggTier.RARE, - [Species.HISUI_SNEASEL]: EggTier.RARE, - [Species.HISUI_ZORUA]: EggTier.RARE, + [SpeciesId.GROOKEY]: EggTier.COMMON, + [SpeciesId.SCORBUNNY]: EggTier.COMMON, + [SpeciesId.SOBBLE]: EggTier.COMMON, + [SpeciesId.SKWOVET]: EggTier.COMMON, + [SpeciesId.ROOKIDEE]: EggTier.COMMON, + [SpeciesId.BLIPBUG]: EggTier.COMMON, + [SpeciesId.NICKIT]: EggTier.COMMON, + [SpeciesId.GOSSIFLEUR]: EggTier.COMMON, + [SpeciesId.WOOLOO]: EggTier.COMMON, + [SpeciesId.CHEWTLE]: EggTier.COMMON, + [SpeciesId.YAMPER]: EggTier.COMMON, + [SpeciesId.ROLYCOLY]: EggTier.COMMON, + [SpeciesId.APPLIN]: EggTier.COMMON, + [SpeciesId.SILICOBRA]: EggTier.COMMON, + [SpeciesId.CRAMORANT]: EggTier.COMMON, + [SpeciesId.ARROKUDA]: EggTier.COMMON, + [SpeciesId.TOXEL]: EggTier.COMMON, + [SpeciesId.SIZZLIPEDE]: EggTier.COMMON, + [SpeciesId.CLOBBOPUS]: EggTier.COMMON, + [SpeciesId.SINISTEA]: EggTier.COMMON, + [SpeciesId.HATENNA]: EggTier.COMMON, + [SpeciesId.IMPIDIMP]: EggTier.COMMON, + [SpeciesId.MILCERY]: EggTier.COMMON, + [SpeciesId.FALINKS]: EggTier.RARE, + [SpeciesId.PINCURCHIN]: EggTier.COMMON, + [SpeciesId.SNOM]: EggTier.COMMON, + [SpeciesId.STONJOURNER]: EggTier.COMMON, + [SpeciesId.EISCUE]: EggTier.COMMON, + [SpeciesId.INDEEDEE]: EggTier.RARE, + [SpeciesId.MORPEKO]: EggTier.COMMON, + [SpeciesId.CUFANT]: EggTier.COMMON, + [SpeciesId.DRACOZOLT]: EggTier.RARE, + [SpeciesId.ARCTOZOLT]: EggTier.RARE, + [SpeciesId.DRACOVISH]: EggTier.RARE, + [SpeciesId.ARCTOVISH]: EggTier.RARE, + [SpeciesId.DURALUDON]: EggTier.RARE, + [SpeciesId.DREEPY]: EggTier.RARE, + [SpeciesId.ZACIAN]: EggTier.LEGENDARY, + [SpeciesId.ZAMAZENTA]: EggTier.LEGENDARY, + [SpeciesId.ETERNATUS]: EggTier.LEGENDARY, + [SpeciesId.KUBFU]: EggTier.EPIC, + [SpeciesId.ZARUDE]: EggTier.EPIC, + [SpeciesId.REGIELEKI]: EggTier.EPIC, + [SpeciesId.REGIDRAGO]: EggTier.EPIC, + [SpeciesId.GLASTRIER]: EggTier.EPIC, + [SpeciesId.SPECTRIER]: EggTier.EPIC, + [SpeciesId.CALYREX]: EggTier.LEGENDARY, + [SpeciesId.ENAMORUS]: EggTier.EPIC, + [SpeciesId.GALAR_MEOWTH]: EggTier.RARE, + [SpeciesId.GALAR_PONYTA]: EggTier.RARE, + [SpeciesId.GALAR_SLOWPOKE]: EggTier.RARE, + [SpeciesId.GALAR_FARFETCHD]: EggTier.RARE, + [SpeciesId.GALAR_ARTICUNO]: EggTier.EPIC, + [SpeciesId.GALAR_ZAPDOS]: EggTier.EPIC, + [SpeciesId.GALAR_MOLTRES]: EggTier.EPIC, + [SpeciesId.GALAR_CORSOLA]: EggTier.RARE, + [SpeciesId.GALAR_ZIGZAGOON]: EggTier.RARE, + [SpeciesId.GALAR_DARUMAKA]: EggTier.RARE, + [SpeciesId.GALAR_YAMASK]: EggTier.RARE, + [SpeciesId.GALAR_STUNFISK]: EggTier.RARE, + [SpeciesId.HISUI_GROWLITHE]: EggTier.RARE, + [SpeciesId.HISUI_VOLTORB]: EggTier.RARE, + [SpeciesId.HISUI_QWILFISH]: EggTier.RARE, + [SpeciesId.HISUI_SNEASEL]: EggTier.RARE, + [SpeciesId.HISUI_ZORUA]: EggTier.RARE, - [Species.SPRIGATITO]: EggTier.COMMON, - [Species.FUECOCO]: EggTier.COMMON, - [Species.QUAXLY]: EggTier.COMMON, - [Species.LECHONK]: EggTier.COMMON, - [Species.TAROUNTULA]: EggTier.COMMON, - [Species.NYMBLE]: EggTier.COMMON, - [Species.PAWMI]: EggTier.COMMON, - [Species.TANDEMAUS]: EggTier.RARE, - [Species.FIDOUGH]: EggTier.COMMON, - [Species.SMOLIV]: EggTier.COMMON, - [Species.SQUAWKABILLY]: EggTier.COMMON, - [Species.NACLI]: EggTier.RARE, - [Species.CHARCADET]: EggTier.RARE, - [Species.TADBULB]: EggTier.COMMON, - [Species.WATTREL]: EggTier.COMMON, - [Species.MASCHIFF]: EggTier.COMMON, - [Species.SHROODLE]: EggTier.COMMON, - [Species.BRAMBLIN]: EggTier.COMMON, - [Species.TOEDSCOOL]: EggTier.COMMON, - [Species.KLAWF]: EggTier.COMMON, - [Species.CAPSAKID]: EggTier.COMMON, - [Species.RELLOR]: EggTier.COMMON, - [Species.FLITTLE]: EggTier.COMMON, - [Species.TINKATINK]: EggTier.RARE, - [Species.WIGLETT]: EggTier.COMMON, - [Species.BOMBIRDIER]: EggTier.COMMON, - [Species.FINIZEN]: EggTier.RARE, - [Species.VAROOM]: EggTier.RARE, - [Species.CYCLIZAR]: EggTier.RARE, - [Species.ORTHWORM]: EggTier.RARE, - [Species.GLIMMET]: EggTier.RARE, - [Species.GREAVARD]: EggTier.COMMON, - [Species.FLAMIGO]: EggTier.RARE, - [Species.CETODDLE]: EggTier.COMMON, - [Species.VELUZA]: EggTier.RARE, - [Species.DONDOZO]: EggTier.RARE, - [Species.TATSUGIRI]: EggTier.RARE, - [Species.GREAT_TUSK]: EggTier.EPIC, - [Species.SCREAM_TAIL]: EggTier.EPIC, - [Species.BRUTE_BONNET]: EggTier.EPIC, - [Species.FLUTTER_MANE]: EggTier.EPIC, - [Species.SLITHER_WING]: EggTier.EPIC, - [Species.SANDY_SHOCKS]: EggTier.EPIC, - [Species.IRON_TREADS]: EggTier.EPIC, - [Species.IRON_BUNDLE]: EggTier.EPIC, - [Species.IRON_HANDS]: EggTier.EPIC, - [Species.IRON_JUGULIS]: EggTier.EPIC, - [Species.IRON_MOTH]: EggTier.EPIC, - [Species.IRON_THORNS]: EggTier.EPIC, - [Species.FRIGIBAX]: EggTier.RARE, - [Species.GIMMIGHOUL]: EggTier.RARE, - [Species.WO_CHIEN]: EggTier.EPIC, - [Species.CHIEN_PAO]: EggTier.EPIC, - [Species.TING_LU]: EggTier.EPIC, - [Species.CHI_YU]: EggTier.EPIC, - [Species.ROARING_MOON]: EggTier.EPIC, - [Species.IRON_VALIANT]: EggTier.EPIC, - [Species.KORAIDON]: EggTier.LEGENDARY, - [Species.MIRAIDON]: EggTier.LEGENDARY, - [Species.WALKING_WAKE]: EggTier.EPIC, - [Species.IRON_LEAVES]: EggTier.EPIC, - [Species.POLTCHAGEIST]: EggTier.RARE, - [Species.OKIDOGI]: EggTier.EPIC, - [Species.MUNKIDORI]: EggTier.EPIC, - [Species.FEZANDIPITI]: EggTier.EPIC, - [Species.OGERPON]: EggTier.EPIC, - [Species.GOUGING_FIRE]: EggTier.EPIC, - [Species.RAGING_BOLT]: EggTier.EPIC, - [Species.IRON_BOULDER]: EggTier.EPIC, - [Species.IRON_CROWN]: EggTier.EPIC, - [Species.TERAPAGOS]: EggTier.LEGENDARY, - [Species.PECHARUNT]: EggTier.EPIC, - [Species.PALDEA_TAUROS]: EggTier.RARE, - [Species.PALDEA_WOOPER]: EggTier.RARE, - [Species.BLOODMOON_URSALUNA]: EggTier.EPIC + [SpeciesId.SPRIGATITO]: EggTier.COMMON, + [SpeciesId.FUECOCO]: EggTier.COMMON, + [SpeciesId.QUAXLY]: EggTier.COMMON, + [SpeciesId.LECHONK]: EggTier.COMMON, + [SpeciesId.TAROUNTULA]: EggTier.COMMON, + [SpeciesId.NYMBLE]: EggTier.COMMON, + [SpeciesId.PAWMI]: EggTier.COMMON, + [SpeciesId.TANDEMAUS]: EggTier.RARE, + [SpeciesId.FIDOUGH]: EggTier.COMMON, + [SpeciesId.SMOLIV]: EggTier.COMMON, + [SpeciesId.SQUAWKABILLY]: EggTier.COMMON, + [SpeciesId.NACLI]: EggTier.RARE, + [SpeciesId.CHARCADET]: EggTier.RARE, + [SpeciesId.TADBULB]: EggTier.COMMON, + [SpeciesId.WATTREL]: EggTier.COMMON, + [SpeciesId.MASCHIFF]: EggTier.COMMON, + [SpeciesId.SHROODLE]: EggTier.COMMON, + [SpeciesId.BRAMBLIN]: EggTier.COMMON, + [SpeciesId.TOEDSCOOL]: EggTier.COMMON, + [SpeciesId.KLAWF]: EggTier.COMMON, + [SpeciesId.CAPSAKID]: EggTier.COMMON, + [SpeciesId.RELLOR]: EggTier.COMMON, + [SpeciesId.FLITTLE]: EggTier.COMMON, + [SpeciesId.TINKATINK]: EggTier.RARE, + [SpeciesId.WIGLETT]: EggTier.COMMON, + [SpeciesId.BOMBIRDIER]: EggTier.COMMON, + [SpeciesId.FINIZEN]: EggTier.RARE, + [SpeciesId.VAROOM]: EggTier.RARE, + [SpeciesId.CYCLIZAR]: EggTier.RARE, + [SpeciesId.ORTHWORM]: EggTier.RARE, + [SpeciesId.GLIMMET]: EggTier.RARE, + [SpeciesId.GREAVARD]: EggTier.COMMON, + [SpeciesId.FLAMIGO]: EggTier.RARE, + [SpeciesId.CETODDLE]: EggTier.COMMON, + [SpeciesId.VELUZA]: EggTier.RARE, + [SpeciesId.DONDOZO]: EggTier.RARE, + [SpeciesId.TATSUGIRI]: EggTier.RARE, + [SpeciesId.GREAT_TUSK]: EggTier.EPIC, + [SpeciesId.SCREAM_TAIL]: EggTier.EPIC, + [SpeciesId.BRUTE_BONNET]: EggTier.EPIC, + [SpeciesId.FLUTTER_MANE]: EggTier.EPIC, + [SpeciesId.SLITHER_WING]: EggTier.EPIC, + [SpeciesId.SANDY_SHOCKS]: EggTier.EPIC, + [SpeciesId.IRON_TREADS]: EggTier.EPIC, + [SpeciesId.IRON_BUNDLE]: EggTier.EPIC, + [SpeciesId.IRON_HANDS]: EggTier.EPIC, + [SpeciesId.IRON_JUGULIS]: EggTier.EPIC, + [SpeciesId.IRON_MOTH]: EggTier.EPIC, + [SpeciesId.IRON_THORNS]: EggTier.EPIC, + [SpeciesId.FRIGIBAX]: EggTier.RARE, + [SpeciesId.GIMMIGHOUL]: EggTier.RARE, + [SpeciesId.WO_CHIEN]: EggTier.EPIC, + [SpeciesId.CHIEN_PAO]: EggTier.EPIC, + [SpeciesId.TING_LU]: EggTier.EPIC, + [SpeciesId.CHI_YU]: EggTier.EPIC, + [SpeciesId.ROARING_MOON]: EggTier.EPIC, + [SpeciesId.IRON_VALIANT]: EggTier.EPIC, + [SpeciesId.KORAIDON]: EggTier.LEGENDARY, + [SpeciesId.MIRAIDON]: EggTier.LEGENDARY, + [SpeciesId.WALKING_WAKE]: EggTier.EPIC, + [SpeciesId.IRON_LEAVES]: EggTier.EPIC, + [SpeciesId.POLTCHAGEIST]: EggTier.RARE, + [SpeciesId.OKIDOGI]: EggTier.EPIC, + [SpeciesId.MUNKIDORI]: EggTier.EPIC, + [SpeciesId.FEZANDIPITI]: EggTier.EPIC, + [SpeciesId.OGERPON]: EggTier.EPIC, + [SpeciesId.GOUGING_FIRE]: EggTier.EPIC, + [SpeciesId.RAGING_BOLT]: EggTier.EPIC, + [SpeciesId.IRON_BOULDER]: EggTier.EPIC, + [SpeciesId.IRON_CROWN]: EggTier.EPIC, + [SpeciesId.TERAPAGOS]: EggTier.LEGENDARY, + [SpeciesId.PECHARUNT]: EggTier.EPIC, + [SpeciesId.PALDEA_TAUROS]: EggTier.RARE, + [SpeciesId.PALDEA_WOOPER]: EggTier.RARE, + [SpeciesId.BLOODMOON_URSALUNA]: EggTier.EPIC }; diff --git a/src/data/balance/starters.ts b/src/data/balance/starters.ts index 3468163c988..2db10f2e67a 100644 --- a/src/data/balance/starters.ts +++ b/src/data/balance/starters.ts @@ -1,4 +1,4 @@ -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; export const POKERUS_STARTER_COUNT = 5; @@ -38,584 +38,584 @@ export function getStarterValueFriendshipCap(starterCost: number): number { } export const speciesStarterCosts = { - [Species.BULBASAUR]: 3, - [Species.CHARMANDER]: 3, - [Species.SQUIRTLE]: 3, - [Species.CATERPIE]: 2, - [Species.WEEDLE]: 1, - [Species.PIDGEY]: 1, - [Species.RATTATA]: 1, - [Species.SPEAROW]: 1, - [Species.EKANS]: 2, - [Species.PIKACHU]: 4, - [Species.SANDSHREW]: 2, - [Species.NIDORAN_F]: 3, - [Species.NIDORAN_M]: 3, - [Species.VULPIX]: 3, - [Species.ZUBAT]: 3, - [Species.ODDISH]: 3, - [Species.PARAS]: 2, - [Species.VENONAT]: 2, - [Species.DIGLETT]: 2, - [Species.MEOWTH]: 3, - [Species.PSYDUCK]: 2, - [Species.MANKEY]: 4, - [Species.GROWLITHE]: 4, - [Species.POLIWAG]: 2, - [Species.ABRA]: 4, - [Species.MACHOP]: 3, - [Species.BELLSPROUT]: 2, - [Species.TENTACOOL]: 3, - [Species.GEODUDE]: 3, - [Species.PONYTA]: 2, - [Species.SLOWPOKE]: 3, - [Species.MAGNEMITE]: 4, - [Species.FARFETCHD]: 2, - [Species.DODUO]: 3, - [Species.SEEL]: 1, - [Species.GRIMER]: 2, - [Species.SHELLDER]: 5, - [Species.GASTLY]: 4, - [Species.ONIX]: 3, - [Species.DROWZEE]: 2, - [Species.KRABBY]: 3, - [Species.VOLTORB]: 2, - [Species.EXEGGCUTE]: 3, - [Species.CUBONE]: 3, - [Species.LICKITUNG]: 3, - [Species.KOFFING]: 2, - [Species.RHYHORN]: 4, - [Species.TANGELA]: 3, - [Species.KANGASKHAN]: 4, - [Species.HORSEA]: 3, - [Species.GOLDEEN]: 2, - [Species.STARYU]: 3, - [Species.SCYTHER]: 5, - [Species.PINSIR]: 4, - [Species.TAUROS]: 4, - [Species.MAGIKARP]: 4, - [Species.LAPRAS]: 4, - [Species.DITTO]: 2, - [Species.EEVEE]: 3, - [Species.PORYGON]: 4, - [Species.OMANYTE]: 3, - [Species.KABUTO]: 3, - [Species.AERODACTYL]: 5, - [Species.ARTICUNO]: 5, - [Species.ZAPDOS]: 6, - [Species.MOLTRES]: 6, - [Species.DRATINI]: 4, - [Species.MEWTWO]: 8, - [Species.MEW]: 5, + [SpeciesId.BULBASAUR]: 3, + [SpeciesId.CHARMANDER]: 3, + [SpeciesId.SQUIRTLE]: 3, + [SpeciesId.CATERPIE]: 2, + [SpeciesId.WEEDLE]: 1, + [SpeciesId.PIDGEY]: 1, + [SpeciesId.RATTATA]: 1, + [SpeciesId.SPEAROW]: 1, + [SpeciesId.EKANS]: 2, + [SpeciesId.PIKACHU]: 4, + [SpeciesId.SANDSHREW]: 2, + [SpeciesId.NIDORAN_F]: 3, + [SpeciesId.NIDORAN_M]: 3, + [SpeciesId.VULPIX]: 3, + [SpeciesId.ZUBAT]: 3, + [SpeciesId.ODDISH]: 3, + [SpeciesId.PARAS]: 2, + [SpeciesId.VENONAT]: 2, + [SpeciesId.DIGLETT]: 2, + [SpeciesId.MEOWTH]: 3, + [SpeciesId.PSYDUCK]: 2, + [SpeciesId.MANKEY]: 4, + [SpeciesId.GROWLITHE]: 4, + [SpeciesId.POLIWAG]: 2, + [SpeciesId.ABRA]: 4, + [SpeciesId.MACHOP]: 3, + [SpeciesId.BELLSPROUT]: 2, + [SpeciesId.TENTACOOL]: 3, + [SpeciesId.GEODUDE]: 3, + [SpeciesId.PONYTA]: 2, + [SpeciesId.SLOWPOKE]: 3, + [SpeciesId.MAGNEMITE]: 4, + [SpeciesId.FARFETCHD]: 2, + [SpeciesId.DODUO]: 3, + [SpeciesId.SEEL]: 1, + [SpeciesId.GRIMER]: 2, + [SpeciesId.SHELLDER]: 5, + [SpeciesId.GASTLY]: 4, + [SpeciesId.ONIX]: 3, + [SpeciesId.DROWZEE]: 2, + [SpeciesId.KRABBY]: 3, + [SpeciesId.VOLTORB]: 2, + [SpeciesId.EXEGGCUTE]: 3, + [SpeciesId.CUBONE]: 3, + [SpeciesId.LICKITUNG]: 3, + [SpeciesId.KOFFING]: 2, + [SpeciesId.RHYHORN]: 4, + [SpeciesId.TANGELA]: 3, + [SpeciesId.KANGASKHAN]: 4, + [SpeciesId.HORSEA]: 3, + [SpeciesId.GOLDEEN]: 2, + [SpeciesId.STARYU]: 3, + [SpeciesId.SCYTHER]: 5, + [SpeciesId.PINSIR]: 4, + [SpeciesId.TAUROS]: 4, + [SpeciesId.MAGIKARP]: 4, + [SpeciesId.LAPRAS]: 4, + [SpeciesId.DITTO]: 2, + [SpeciesId.EEVEE]: 3, + [SpeciesId.PORYGON]: 4, + [SpeciesId.OMANYTE]: 3, + [SpeciesId.KABUTO]: 3, + [SpeciesId.AERODACTYL]: 5, + [SpeciesId.ARTICUNO]: 5, + [SpeciesId.ZAPDOS]: 6, + [SpeciesId.MOLTRES]: 6, + [SpeciesId.DRATINI]: 4, + [SpeciesId.MEWTWO]: 8, + [SpeciesId.MEW]: 5, - [Species.CHIKORITA]: 2, - [Species.CYNDAQUIL]: 3, - [Species.TOTODILE]: 3, - [Species.SENTRET]: 1, - [Species.HOOTHOOT]: 2, - [Species.LEDYBA]: 1, - [Species.SPINARAK]: 1, - [Species.CHINCHOU]: 2, - [Species.PICHU]: 4, - [Species.CLEFFA]: 2, - [Species.IGGLYBUFF]: 1, - [Species.TOGEPI]: 3, - [Species.NATU]: 2, - [Species.MAREEP]: 2, - [Species.HOPPIP]: 2, - [Species.AIPOM]: 2, - [Species.SUNKERN]: 1, - [Species.YANMA]: 3, - [Species.WOOPER]: 2, - [Species.MURKROW]: 3, - [Species.MISDREAVUS]: 3, - [Species.UNOWN]: 1, - [Species.GIRAFARIG]: 3, - [Species.PINECO]: 2, - [Species.DUNSPARCE]: 3, - [Species.GLIGAR]: 3, - [Species.SNUBBULL]: 2, - [Species.QWILFISH]: 3, - [Species.SHUCKLE]: 3, - [Species.HERACROSS]: 5, - [Species.SNEASEL]: 4, - [Species.TEDDIURSA]: 4, - [Species.SLUGMA]: 2, - [Species.SWINUB]: 3, - [Species.CORSOLA]: 2, - [Species.REMORAID]: 2, - [Species.DELIBIRD]: 2, - [Species.SKARMORY]: 4, - [Species.HOUNDOUR]: 3, - [Species.PHANPY]: 3, - [Species.STANTLER]: 3, - [Species.SMEARGLE]: 1, - [Species.TYROGUE]: 3, - [Species.SMOOCHUM]: 3, - [Species.ELEKID]: 3, - [Species.MAGBY]: 3, - [Species.MILTANK]: 4, - [Species.RAIKOU]: 6, - [Species.ENTEI]: 6, - [Species.SUICUNE]: 6, - [Species.LARVITAR]: 4, - [Species.LUGIA]: 8, - [Species.HO_OH]: 8, - [Species.CELEBI]: 5, + [SpeciesId.CHIKORITA]: 2, + [SpeciesId.CYNDAQUIL]: 3, + [SpeciesId.TOTODILE]: 3, + [SpeciesId.SENTRET]: 1, + [SpeciesId.HOOTHOOT]: 2, + [SpeciesId.LEDYBA]: 1, + [SpeciesId.SPINARAK]: 1, + [SpeciesId.CHINCHOU]: 2, + [SpeciesId.PICHU]: 4, + [SpeciesId.CLEFFA]: 2, + [SpeciesId.IGGLYBUFF]: 1, + [SpeciesId.TOGEPI]: 3, + [SpeciesId.NATU]: 2, + [SpeciesId.MAREEP]: 2, + [SpeciesId.HOPPIP]: 2, + [SpeciesId.AIPOM]: 2, + [SpeciesId.SUNKERN]: 1, + [SpeciesId.YANMA]: 3, + [SpeciesId.WOOPER]: 2, + [SpeciesId.MURKROW]: 3, + [SpeciesId.MISDREAVUS]: 3, + [SpeciesId.UNOWN]: 1, + [SpeciesId.GIRAFARIG]: 3, + [SpeciesId.PINECO]: 2, + [SpeciesId.DUNSPARCE]: 3, + [SpeciesId.GLIGAR]: 3, + [SpeciesId.SNUBBULL]: 2, + [SpeciesId.QWILFISH]: 3, + [SpeciesId.SHUCKLE]: 3, + [SpeciesId.HERACROSS]: 5, + [SpeciesId.SNEASEL]: 4, + [SpeciesId.TEDDIURSA]: 4, + [SpeciesId.SLUGMA]: 2, + [SpeciesId.SWINUB]: 3, + [SpeciesId.CORSOLA]: 2, + [SpeciesId.REMORAID]: 2, + [SpeciesId.DELIBIRD]: 2, + [SpeciesId.SKARMORY]: 4, + [SpeciesId.HOUNDOUR]: 3, + [SpeciesId.PHANPY]: 3, + [SpeciesId.STANTLER]: 3, + [SpeciesId.SMEARGLE]: 1, + [SpeciesId.TYROGUE]: 3, + [SpeciesId.SMOOCHUM]: 3, + [SpeciesId.ELEKID]: 3, + [SpeciesId.MAGBY]: 3, + [SpeciesId.MILTANK]: 4, + [SpeciesId.RAIKOU]: 6, + [SpeciesId.ENTEI]: 6, + [SpeciesId.SUICUNE]: 6, + [SpeciesId.LARVITAR]: 4, + [SpeciesId.LUGIA]: 8, + [SpeciesId.HO_OH]: 8, + [SpeciesId.CELEBI]: 5, - [Species.TREECKO]: 3, - [Species.TORCHIC]: 4, - [Species.MUDKIP]: 3, - [Species.POOCHYENA]: 2, - [Species.ZIGZAGOON]: 2, - [Species.WURMPLE]: 1, - [Species.LOTAD]: 3, - [Species.SEEDOT]: 2, - [Species.TAILLOW]: 3, - [Species.WINGULL]: 2, - [Species.RALTS]: 4, - [Species.SURSKIT]: 2, - [Species.SHROOMISH]: 3, - [Species.SLAKOTH]: 4, - [Species.NINCADA]: 4, - [Species.WHISMUR]: 2, - [Species.MAKUHITA]: 3, - [Species.AZURILL]: 4, - [Species.NOSEPASS]: 2, - [Species.SKITTY]: 1, - [Species.SABLEYE]: 2, - [Species.MAWILE]: 2, - [Species.ARON]: 3, - [Species.MEDITITE]: 3, - [Species.ELECTRIKE]: 2, - [Species.PLUSLE]: 2, - [Species.MINUN]: 2, - [Species.VOLBEAT]: 2, - [Species.ILLUMISE]: 2, - [Species.GULPIN]: 1, - [Species.CARVANHA]: 3, - [Species.WAILMER]: 2, - [Species.NUMEL]: 2, - [Species.TORKOAL]: 3, - [Species.SPOINK]: 2, - [Species.SPINDA]: 1, - [Species.TRAPINCH]: 3, - [Species.CACNEA]: 2, - [Species.SWABLU]: 2, - [Species.ZANGOOSE]: 4, - [Species.SEVIPER]: 3, - [Species.LUNATONE]: 3, - [Species.SOLROCK]: 3, - [Species.BARBOACH]: 2, - [Species.CORPHISH]: 3, - [Species.BALTOY]: 2, - [Species.LILEEP]: 3, - [Species.ANORITH]: 3, - [Species.FEEBAS]: 4, - [Species.CASTFORM]: 1, - [Species.KECLEON]: 2, - [Species.SHUPPET]: 2, - [Species.DUSKULL]: 3, - [Species.TROPIUS]: 3, - [Species.ABSOL]: 4, - [Species.WYNAUT]: 2, - [Species.SNORUNT]: 2, - [Species.SPHEAL]: 2, - [Species.CLAMPERL]: 3, - [Species.RELICANTH]: 3, - [Species.LUVDISC]: 1, - [Species.BAGON]: 4, - [Species.BELDUM]: 4, - [Species.REGIROCK]: 6, - [Species.REGICE]: 5, - [Species.REGISTEEL]: 6, - [Species.LATIAS]: 7, - [Species.LATIOS]: 7, - [Species.KYOGRE]: 9, - [Species.GROUDON]: 9, - [Species.RAYQUAZA]: 9, - [Species.JIRACHI]: 7, - [Species.DEOXYS]: 7, + [SpeciesId.TREECKO]: 3, + [SpeciesId.TORCHIC]: 4, + [SpeciesId.MUDKIP]: 3, + [SpeciesId.POOCHYENA]: 2, + [SpeciesId.ZIGZAGOON]: 2, + [SpeciesId.WURMPLE]: 1, + [SpeciesId.LOTAD]: 3, + [SpeciesId.SEEDOT]: 2, + [SpeciesId.TAILLOW]: 3, + [SpeciesId.WINGULL]: 2, + [SpeciesId.RALTS]: 4, + [SpeciesId.SURSKIT]: 2, + [SpeciesId.SHROOMISH]: 3, + [SpeciesId.SLAKOTH]: 4, + [SpeciesId.NINCADA]: 4, + [SpeciesId.WHISMUR]: 2, + [SpeciesId.MAKUHITA]: 3, + [SpeciesId.AZURILL]: 4, + [SpeciesId.NOSEPASS]: 2, + [SpeciesId.SKITTY]: 1, + [SpeciesId.SABLEYE]: 2, + [SpeciesId.MAWILE]: 2, + [SpeciesId.ARON]: 3, + [SpeciesId.MEDITITE]: 3, + [SpeciesId.ELECTRIKE]: 2, + [SpeciesId.PLUSLE]: 2, + [SpeciesId.MINUN]: 2, + [SpeciesId.VOLBEAT]: 2, + [SpeciesId.ILLUMISE]: 2, + [SpeciesId.GULPIN]: 1, + [SpeciesId.CARVANHA]: 3, + [SpeciesId.WAILMER]: 2, + [SpeciesId.NUMEL]: 2, + [SpeciesId.TORKOAL]: 3, + [SpeciesId.SPOINK]: 2, + [SpeciesId.SPINDA]: 1, + [SpeciesId.TRAPINCH]: 3, + [SpeciesId.CACNEA]: 2, + [SpeciesId.SWABLU]: 2, + [SpeciesId.ZANGOOSE]: 4, + [SpeciesId.SEVIPER]: 3, + [SpeciesId.LUNATONE]: 3, + [SpeciesId.SOLROCK]: 3, + [SpeciesId.BARBOACH]: 2, + [SpeciesId.CORPHISH]: 3, + [SpeciesId.BALTOY]: 2, + [SpeciesId.LILEEP]: 3, + [SpeciesId.ANORITH]: 3, + [SpeciesId.FEEBAS]: 4, + [SpeciesId.CASTFORM]: 1, + [SpeciesId.KECLEON]: 2, + [SpeciesId.SHUPPET]: 2, + [SpeciesId.DUSKULL]: 3, + [SpeciesId.TROPIUS]: 3, + [SpeciesId.ABSOL]: 4, + [SpeciesId.WYNAUT]: 2, + [SpeciesId.SNORUNT]: 2, + [SpeciesId.SPHEAL]: 2, + [SpeciesId.CLAMPERL]: 3, + [SpeciesId.RELICANTH]: 3, + [SpeciesId.LUVDISC]: 1, + [SpeciesId.BAGON]: 4, + [SpeciesId.BELDUM]: 4, + [SpeciesId.REGIROCK]: 6, + [SpeciesId.REGICE]: 5, + [SpeciesId.REGISTEEL]: 6, + [SpeciesId.LATIAS]: 7, + [SpeciesId.LATIOS]: 7, + [SpeciesId.KYOGRE]: 9, + [SpeciesId.GROUDON]: 9, + [SpeciesId.RAYQUAZA]: 9, + [SpeciesId.JIRACHI]: 7, + [SpeciesId.DEOXYS]: 7, - [Species.TURTWIG]: 3, - [Species.CHIMCHAR]: 3, - [Species.PIPLUP]: 3, - [Species.STARLY]: 3, - [Species.BIDOOF]: 2, - [Species.KRICKETOT]: 1, - [Species.SHINX]: 2, - [Species.BUDEW]: 3, - [Species.CRANIDOS]: 2, - [Species.SHIELDON]: 3, - [Species.BURMY]: 2, - [Species.COMBEE]: 2, - [Species.PACHIRISU]: 2, - [Species.BUIZEL]: 2, - [Species.CHERUBI]: 1, - [Species.SHELLOS]: 3, - [Species.DRIFLOON]: 2, - [Species.BUNEARY]: 2, - [Species.GLAMEOW]: 2, - [Species.CHINGLING]: 2, - [Species.STUNKY]: 2, - [Species.BRONZOR]: 3, - [Species.BONSLY]: 2, - [Species.MIME_JR]: 2, - [Species.HAPPINY]: 2, - [Species.CHATOT]: 2, - [Species.SPIRITOMB]: 4, - [Species.GIBLE]: 4, - [Species.MUNCHLAX]: 4, - [Species.RIOLU]: 3, - [Species.HIPPOPOTAS]: 3, - [Species.SKORUPI]: 3, - [Species.CROAGUNK]: 2, - [Species.CARNIVINE]: 2, - [Species.FINNEON]: 1, - [Species.MANTYKE]: 2, - [Species.SNOVER]: 2, - [Species.ROTOM]: 4, - [Species.UXIE]: 5, - [Species.MESPRIT]: 5, - [Species.AZELF]: 6, - [Species.DIALGA]: 8, - [Species.PALKIA]: 8, - [Species.HEATRAN]: 7, - [Species.REGIGIGAS]: 7, - [Species.GIRATINA]: 8, - [Species.CRESSELIA]: 6, - [Species.PHIONE]: 4, - [Species.MANAPHY]: 7, - [Species.DARKRAI]: 7, - [Species.SHAYMIN]: 6, - [Species.ARCEUS]: 9, + [SpeciesId.TURTWIG]: 3, + [SpeciesId.CHIMCHAR]: 3, + [SpeciesId.PIPLUP]: 3, + [SpeciesId.STARLY]: 3, + [SpeciesId.BIDOOF]: 2, + [SpeciesId.KRICKETOT]: 1, + [SpeciesId.SHINX]: 2, + [SpeciesId.BUDEW]: 3, + [SpeciesId.CRANIDOS]: 2, + [SpeciesId.SHIELDON]: 3, + [SpeciesId.BURMY]: 2, + [SpeciesId.COMBEE]: 2, + [SpeciesId.PACHIRISU]: 2, + [SpeciesId.BUIZEL]: 2, + [SpeciesId.CHERUBI]: 1, + [SpeciesId.SHELLOS]: 3, + [SpeciesId.DRIFLOON]: 2, + [SpeciesId.BUNEARY]: 2, + [SpeciesId.GLAMEOW]: 2, + [SpeciesId.CHINGLING]: 2, + [SpeciesId.STUNKY]: 2, + [SpeciesId.BRONZOR]: 3, + [SpeciesId.BONSLY]: 2, + [SpeciesId.MIME_JR]: 2, + [SpeciesId.HAPPINY]: 2, + [SpeciesId.CHATOT]: 2, + [SpeciesId.SPIRITOMB]: 4, + [SpeciesId.GIBLE]: 4, + [SpeciesId.MUNCHLAX]: 4, + [SpeciesId.RIOLU]: 3, + [SpeciesId.HIPPOPOTAS]: 3, + [SpeciesId.SKORUPI]: 3, + [SpeciesId.CROAGUNK]: 2, + [SpeciesId.CARNIVINE]: 2, + [SpeciesId.FINNEON]: 1, + [SpeciesId.MANTYKE]: 2, + [SpeciesId.SNOVER]: 2, + [SpeciesId.ROTOM]: 4, + [SpeciesId.UXIE]: 5, + [SpeciesId.MESPRIT]: 5, + [SpeciesId.AZELF]: 6, + [SpeciesId.DIALGA]: 8, + [SpeciesId.PALKIA]: 8, + [SpeciesId.HEATRAN]: 7, + [SpeciesId.REGIGIGAS]: 7, + [SpeciesId.GIRATINA]: 8, + [SpeciesId.CRESSELIA]: 6, + [SpeciesId.PHIONE]: 4, + [SpeciesId.MANAPHY]: 7, + [SpeciesId.DARKRAI]: 7, + [SpeciesId.SHAYMIN]: 6, + [SpeciesId.ARCEUS]: 9, - [Species.VICTINI]: 6, - [Species.SNIVY]: 3, - [Species.TEPIG]: 3, - [Species.OSHAWOTT]: 3, - [Species.PATRAT]: 1, - [Species.LILLIPUP]: 3, - [Species.PURRLOIN]: 2, - [Species.PANSAGE]: 2, - [Species.PANSEAR]: 2, - [Species.PANPOUR]: 2, - [Species.MUNNA]: 2, - [Species.PIDOVE]: 1, - [Species.BLITZLE]: 2, - [Species.ROGGENROLA]: 3, - [Species.WOOBAT]: 3, - [Species.DRILBUR]: 4, - [Species.AUDINO]: 3, - [Species.TIMBURR]: 4, - [Species.TYMPOLE]: 3, - [Species.THROH]: 4, - [Species.SAWK]: 4, - [Species.SEWADDLE]: 2, - [Species.VENIPEDE]: 3, - [Species.COTTONEE]: 3, - [Species.PETILIL]: 3, - [Species.BASCULIN]: 4, - [Species.SANDILE]: 4, - [Species.DARUMAKA]: 4, - [Species.MARACTUS]: 2, - [Species.DWEBBLE]: 2, - [Species.SCRAGGY]: 3, - [Species.SIGILYPH]: 4, - [Species.YAMASK]: 3, - [Species.TIRTOUGA]: 3, - [Species.ARCHEN]: 3, - [Species.TRUBBISH]: 2, - [Species.ZORUA]: 3, - [Species.MINCCINO]: 3, - [Species.GOTHITA]: 3, - [Species.SOLOSIS]: 3, - [Species.DUCKLETT]: 2, - [Species.VANILLITE]: 3, - [Species.DEERLING]: 2, - [Species.EMOLGA]: 2, - [Species.KARRABLAST]: 3, - [Species.FOONGUS]: 3, - [Species.FRILLISH]: 3, - [Species.ALOMOMOLA]: 4, - [Species.JOLTIK]: 3, - [Species.FERROSEED]: 3, - [Species.KLINK]: 3, - [Species.TYNAMO]: 2, - [Species.ELGYEM]: 2, - [Species.LITWICK]: 3, - [Species.AXEW]: 4, - [Species.CUBCHOO]: 2, - [Species.CRYOGONAL]: 4, - [Species.SHELMET]: 2, - [Species.STUNFISK]: 3, - [Species.MIENFOO]: 3, - [Species.DRUDDIGON]: 4, - [Species.GOLETT]: 3, - [Species.PAWNIARD]: 4, - [Species.BOUFFALANT]: 4, - [Species.RUFFLET]: 3, - [Species.VULLABY]: 3, - [Species.HEATMOR]: 3, - [Species.DURANT]: 4, - [Species.DEINO]: 4, - [Species.LARVESTA]: 4, - [Species.COBALION]: 6, - [Species.TERRAKION]: 6, - [Species.VIRIZION]: 6, - [Species.TORNADUS]: 7, - [Species.THUNDURUS]: 7, - [Species.RESHIRAM]: 8, - [Species.ZEKROM]: 8, - [Species.LANDORUS]: 7, - [Species.KYUREM]: 8, - [Species.KELDEO]: 6, - [Species.MELOETTA]: 7, - [Species.GENESECT]: 6, + [SpeciesId.VICTINI]: 6, + [SpeciesId.SNIVY]: 3, + [SpeciesId.TEPIG]: 3, + [SpeciesId.OSHAWOTT]: 3, + [SpeciesId.PATRAT]: 1, + [SpeciesId.LILLIPUP]: 3, + [SpeciesId.PURRLOIN]: 2, + [SpeciesId.PANSAGE]: 2, + [SpeciesId.PANSEAR]: 2, + [SpeciesId.PANPOUR]: 2, + [SpeciesId.MUNNA]: 2, + [SpeciesId.PIDOVE]: 1, + [SpeciesId.BLITZLE]: 2, + [SpeciesId.ROGGENROLA]: 3, + [SpeciesId.WOOBAT]: 3, + [SpeciesId.DRILBUR]: 4, + [SpeciesId.AUDINO]: 3, + [SpeciesId.TIMBURR]: 4, + [SpeciesId.TYMPOLE]: 3, + [SpeciesId.THROH]: 4, + [SpeciesId.SAWK]: 4, + [SpeciesId.SEWADDLE]: 2, + [SpeciesId.VENIPEDE]: 3, + [SpeciesId.COTTONEE]: 3, + [SpeciesId.PETILIL]: 3, + [SpeciesId.BASCULIN]: 4, + [SpeciesId.SANDILE]: 4, + [SpeciesId.DARUMAKA]: 4, + [SpeciesId.MARACTUS]: 2, + [SpeciesId.DWEBBLE]: 2, + [SpeciesId.SCRAGGY]: 3, + [SpeciesId.SIGILYPH]: 4, + [SpeciesId.YAMASK]: 3, + [SpeciesId.TIRTOUGA]: 3, + [SpeciesId.ARCHEN]: 3, + [SpeciesId.TRUBBISH]: 2, + [SpeciesId.ZORUA]: 3, + [SpeciesId.MINCCINO]: 3, + [SpeciesId.GOTHITA]: 3, + [SpeciesId.SOLOSIS]: 3, + [SpeciesId.DUCKLETT]: 2, + [SpeciesId.VANILLITE]: 3, + [SpeciesId.DEERLING]: 2, + [SpeciesId.EMOLGA]: 2, + [SpeciesId.KARRABLAST]: 3, + [SpeciesId.FOONGUS]: 3, + [SpeciesId.FRILLISH]: 3, + [SpeciesId.ALOMOMOLA]: 4, + [SpeciesId.JOLTIK]: 3, + [SpeciesId.FERROSEED]: 3, + [SpeciesId.KLINK]: 3, + [SpeciesId.TYNAMO]: 2, + [SpeciesId.ELGYEM]: 2, + [SpeciesId.LITWICK]: 3, + [SpeciesId.AXEW]: 4, + [SpeciesId.CUBCHOO]: 2, + [SpeciesId.CRYOGONAL]: 4, + [SpeciesId.SHELMET]: 2, + [SpeciesId.STUNFISK]: 3, + [SpeciesId.MIENFOO]: 3, + [SpeciesId.DRUDDIGON]: 4, + [SpeciesId.GOLETT]: 3, + [SpeciesId.PAWNIARD]: 4, + [SpeciesId.BOUFFALANT]: 4, + [SpeciesId.RUFFLET]: 3, + [SpeciesId.VULLABY]: 3, + [SpeciesId.HEATMOR]: 3, + [SpeciesId.DURANT]: 4, + [SpeciesId.DEINO]: 4, + [SpeciesId.LARVESTA]: 4, + [SpeciesId.COBALION]: 6, + [SpeciesId.TERRAKION]: 6, + [SpeciesId.VIRIZION]: 6, + [SpeciesId.TORNADUS]: 7, + [SpeciesId.THUNDURUS]: 7, + [SpeciesId.RESHIRAM]: 8, + [SpeciesId.ZEKROM]: 8, + [SpeciesId.LANDORUS]: 7, + [SpeciesId.KYUREM]: 8, + [SpeciesId.KELDEO]: 6, + [SpeciesId.MELOETTA]: 7, + [SpeciesId.GENESECT]: 6, - [Species.CHESPIN]: 3, - [Species.FENNEKIN]: 3, - [Species.FROAKIE]: 4, - [Species.BUNNELBY]: 3, - [Species.FLETCHLING]: 3, - [Species.SCATTERBUG]: 2, - [Species.LITLEO]: 2, - [Species.FLABEBE]: 3, - [Species.SKIDDO]: 2, - [Species.PANCHAM]: 3, - [Species.FURFROU]: 3, - [Species.ESPURR]: 2, - [Species.HONEDGE]: 4, - [Species.SPRITZEE]: 2, - [Species.SWIRLIX]: 3, - [Species.INKAY]: 3, - [Species.BINACLE]: 3, - [Species.SKRELP]: 2, - [Species.CLAUNCHER]: 3, - [Species.HELIOPTILE]: 3, - [Species.TYRUNT]: 3, - [Species.AMAURA]: 2, - [Species.HAWLUCHA]: 4, - [Species.DEDENNE]: 2, - [Species.CARBINK]: 2, - [Species.GOOMY]: 4, - [Species.KLEFKI]: 3, - [Species.PHANTUMP]: 2, - [Species.PUMPKABOO]: 2, - [Species.BERGMITE]: 3, - [Species.NOIBAT]: 3, - [Species.XERNEAS]: 8, - [Species.YVELTAL]: 8, - [Species.ZYGARDE]: 8, - [Species.DIANCIE]: 7, - [Species.HOOPA]: 7, - [Species.VOLCANION]: 7, - [Species.ETERNAL_FLOETTE]: 4, + [SpeciesId.CHESPIN]: 3, + [SpeciesId.FENNEKIN]: 3, + [SpeciesId.FROAKIE]: 4, + [SpeciesId.BUNNELBY]: 3, + [SpeciesId.FLETCHLING]: 3, + [SpeciesId.SCATTERBUG]: 2, + [SpeciesId.LITLEO]: 2, + [SpeciesId.FLABEBE]: 3, + [SpeciesId.SKIDDO]: 2, + [SpeciesId.PANCHAM]: 3, + [SpeciesId.FURFROU]: 3, + [SpeciesId.ESPURR]: 2, + [SpeciesId.HONEDGE]: 4, + [SpeciesId.SPRITZEE]: 2, + [SpeciesId.SWIRLIX]: 3, + [SpeciesId.INKAY]: 3, + [SpeciesId.BINACLE]: 3, + [SpeciesId.SKRELP]: 2, + [SpeciesId.CLAUNCHER]: 3, + [SpeciesId.HELIOPTILE]: 3, + [SpeciesId.TYRUNT]: 3, + [SpeciesId.AMAURA]: 2, + [SpeciesId.HAWLUCHA]: 4, + [SpeciesId.DEDENNE]: 2, + [SpeciesId.CARBINK]: 2, + [SpeciesId.GOOMY]: 4, + [SpeciesId.KLEFKI]: 3, + [SpeciesId.PHANTUMP]: 2, + [SpeciesId.PUMPKABOO]: 2, + [SpeciesId.BERGMITE]: 3, + [SpeciesId.NOIBAT]: 3, + [SpeciesId.XERNEAS]: 8, + [SpeciesId.YVELTAL]: 8, + [SpeciesId.ZYGARDE]: 8, + [SpeciesId.DIANCIE]: 7, + [SpeciesId.HOOPA]: 7, + [SpeciesId.VOLCANION]: 7, + [SpeciesId.ETERNAL_FLOETTE]: 4, - [Species.ROWLET]: 3, - [Species.LITTEN]: 3, - [Species.POPPLIO]: 4, - [Species.PIKIPEK]: 2, - [Species.YUNGOOS]: 2, - [Species.GRUBBIN]: 3, - [Species.CRABRAWLER]: 3, - [Species.ORICORIO]: 3, - [Species.CUTIEFLY]: 3, - [Species.ROCKRUFF]: 3, - [Species.WISHIWASHI]: 2, - [Species.MAREANIE]: 2, - [Species.MUDBRAY]: 3, - [Species.DEWPIDER]: 3, - [Species.FOMANTIS]: 2, - [Species.MORELULL]: 2, - [Species.SALANDIT]: 3, - [Species.STUFFUL]: 3, - [Species.BOUNSWEET]: 3, - [Species.COMFEY]: 4, - [Species.ORANGURU]: 4, - [Species.PASSIMIAN]: 4, - [Species.WIMPOD]: 3, - [Species.SANDYGAST]: 3, - [Species.PYUKUMUKU]: 2, - [Species.TYPE_NULL]: 5, - [Species.MINIOR]: 4, - [Species.KOMALA]: 3, - [Species.TURTONATOR]: 4, - [Species.TOGEDEMARU]: 3, - [Species.MIMIKYU]: 4, - [Species.BRUXISH]: 4, - [Species.DRAMPA]: 4, - [Species.DHELMISE]: 4, - [Species.JANGMO_O]: 4, - [Species.TAPU_KOKO]: 6, - [Species.TAPU_LELE]: 7, - [Species.TAPU_BULU]: 6, - [Species.TAPU_FINI]: 5, - [Species.COSMOG]: 7, - [Species.NIHILEGO]: 6, - [Species.BUZZWOLE]: 6, - [Species.PHEROMOSA]: 7, - [Species.XURKITREE]: 6, - [Species.CELESTEELA]: 6, - [Species.KARTANA]: 8, - [Species.GUZZLORD]: 6, - [Species.NECROZMA]: 8, - [Species.MAGEARNA]: 7, - [Species.MARSHADOW]: 8, - [Species.POIPOLE]: 8, - [Species.STAKATAKA]: 6, - [Species.BLACEPHALON]: 7, - [Species.ZERAORA]: 6, - [Species.MELTAN]: 6, - [Species.ALOLA_RATTATA]: 1, - [Species.ALOLA_SANDSHREW]: 2, - [Species.ALOLA_VULPIX]: 3, - [Species.ALOLA_DIGLETT]: 2, - [Species.ALOLA_MEOWTH]: 3, - [Species.ALOLA_GEODUDE]: 3, - [Species.ALOLA_GRIMER]: 3, + [SpeciesId.ROWLET]: 3, + [SpeciesId.LITTEN]: 3, + [SpeciesId.POPPLIO]: 4, + [SpeciesId.PIKIPEK]: 2, + [SpeciesId.YUNGOOS]: 2, + [SpeciesId.GRUBBIN]: 3, + [SpeciesId.CRABRAWLER]: 3, + [SpeciesId.ORICORIO]: 3, + [SpeciesId.CUTIEFLY]: 3, + [SpeciesId.ROCKRUFF]: 3, + [SpeciesId.WISHIWASHI]: 2, + [SpeciesId.MAREANIE]: 2, + [SpeciesId.MUDBRAY]: 3, + [SpeciesId.DEWPIDER]: 3, + [SpeciesId.FOMANTIS]: 2, + [SpeciesId.MORELULL]: 2, + [SpeciesId.SALANDIT]: 3, + [SpeciesId.STUFFUL]: 3, + [SpeciesId.BOUNSWEET]: 3, + [SpeciesId.COMFEY]: 4, + [SpeciesId.ORANGURU]: 4, + [SpeciesId.PASSIMIAN]: 4, + [SpeciesId.WIMPOD]: 3, + [SpeciesId.SANDYGAST]: 3, + [SpeciesId.PYUKUMUKU]: 2, + [SpeciesId.TYPE_NULL]: 5, + [SpeciesId.MINIOR]: 4, + [SpeciesId.KOMALA]: 3, + [SpeciesId.TURTONATOR]: 4, + [SpeciesId.TOGEDEMARU]: 3, + [SpeciesId.MIMIKYU]: 4, + [SpeciesId.BRUXISH]: 4, + [SpeciesId.DRAMPA]: 4, + [SpeciesId.DHELMISE]: 4, + [SpeciesId.JANGMO_O]: 4, + [SpeciesId.TAPU_KOKO]: 6, + [SpeciesId.TAPU_LELE]: 7, + [SpeciesId.TAPU_BULU]: 6, + [SpeciesId.TAPU_FINI]: 5, + [SpeciesId.COSMOG]: 7, + [SpeciesId.NIHILEGO]: 6, + [SpeciesId.BUZZWOLE]: 6, + [SpeciesId.PHEROMOSA]: 7, + [SpeciesId.XURKITREE]: 6, + [SpeciesId.CELESTEELA]: 6, + [SpeciesId.KARTANA]: 8, + [SpeciesId.GUZZLORD]: 6, + [SpeciesId.NECROZMA]: 8, + [SpeciesId.MAGEARNA]: 7, + [SpeciesId.MARSHADOW]: 8, + [SpeciesId.POIPOLE]: 8, + [SpeciesId.STAKATAKA]: 6, + [SpeciesId.BLACEPHALON]: 7, + [SpeciesId.ZERAORA]: 6, + [SpeciesId.MELTAN]: 6, + [SpeciesId.ALOLA_RATTATA]: 1, + [SpeciesId.ALOLA_SANDSHREW]: 2, + [SpeciesId.ALOLA_VULPIX]: 3, + [SpeciesId.ALOLA_DIGLETT]: 2, + [SpeciesId.ALOLA_MEOWTH]: 3, + [SpeciesId.ALOLA_GEODUDE]: 3, + [SpeciesId.ALOLA_GRIMER]: 3, - [Species.GROOKEY]: 3, - [Species.SCORBUNNY]: 4, - [Species.SOBBLE]: 3, - [Species.SKWOVET]: 2, - [Species.ROOKIDEE]: 3, - [Species.BLIPBUG]: 2, - [Species.NICKIT]: 1, - [Species.GOSSIFLEUR]: 2, - [Species.WOOLOO]: 2, - [Species.CHEWTLE]: 3, - [Species.YAMPER]: 2, - [Species.ROLYCOLY]: 3, - [Species.APPLIN]: 3, - [Species.SILICOBRA]: 3, - [Species.CRAMORANT]: 3, - [Species.ARROKUDA]: 3, - [Species.TOXEL]: 3, - [Species.SIZZLIPEDE]: 3, - [Species.CLOBBOPUS]: 2, - [Species.SINISTEA]: 3, - [Species.HATENNA]: 3, - [Species.IMPIDIMP]: 3, - [Species.MILCERY]: 3, - [Species.FALINKS]: 4, - [Species.PINCURCHIN]: 3, - [Species.SNOM]: 3, - [Species.STONJOURNER]: 3, - [Species.EISCUE]: 3, - [Species.INDEEDEE]: 4, - [Species.MORPEKO]: 3, - [Species.CUFANT]: 3, - [Species.DRACOZOLT]: 5, - [Species.ARCTOZOLT]: 4, - [Species.DRACOVISH]: 5, - [Species.ARCTOVISH]: 4, - [Species.DURALUDON]: 5, - [Species.DREEPY]: 4, - [Species.ZACIAN]: 9, - [Species.ZAMAZENTA]: 8, - [Species.ETERNATUS]: 10, - [Species.KUBFU]: 6, - [Species.ZARUDE]: 5, - [Species.REGIELEKI]: 6, - [Species.REGIDRAGO]: 6, - [Species.GLASTRIER]: 6, - [Species.SPECTRIER]: 8, - [Species.CALYREX]: 8, - [Species.ENAMORUS]: 7, - [Species.GALAR_MEOWTH]: 3, - [Species.GALAR_PONYTA]: 2, - [Species.GALAR_SLOWPOKE]: 3, - [Species.GALAR_FARFETCHD]: 3, - [Species.GALAR_ARTICUNO]: 6, - [Species.GALAR_ZAPDOS]: 6, - [Species.GALAR_MOLTRES]: 6, - [Species.GALAR_CORSOLA]: 3, - [Species.GALAR_ZIGZAGOON]: 3, - [Species.GALAR_DARUMAKA]: 4, - [Species.GALAR_YAMASK]: 3, - [Species.GALAR_STUNFISK]: 2, - [Species.HISUI_GROWLITHE]: 4, - [Species.HISUI_VOLTORB]: 3, - [Species.HISUI_QWILFISH]: 4, - [Species.HISUI_SNEASEL]: 5, - [Species.HISUI_ZORUA]: 3, + [SpeciesId.GROOKEY]: 3, + [SpeciesId.SCORBUNNY]: 4, + [SpeciesId.SOBBLE]: 3, + [SpeciesId.SKWOVET]: 2, + [SpeciesId.ROOKIDEE]: 3, + [SpeciesId.BLIPBUG]: 2, + [SpeciesId.NICKIT]: 1, + [SpeciesId.GOSSIFLEUR]: 2, + [SpeciesId.WOOLOO]: 2, + [SpeciesId.CHEWTLE]: 3, + [SpeciesId.YAMPER]: 2, + [SpeciesId.ROLYCOLY]: 3, + [SpeciesId.APPLIN]: 3, + [SpeciesId.SILICOBRA]: 3, + [SpeciesId.CRAMORANT]: 3, + [SpeciesId.ARROKUDA]: 3, + [SpeciesId.TOXEL]: 3, + [SpeciesId.SIZZLIPEDE]: 3, + [SpeciesId.CLOBBOPUS]: 2, + [SpeciesId.SINISTEA]: 3, + [SpeciesId.HATENNA]: 3, + [SpeciesId.IMPIDIMP]: 3, + [SpeciesId.MILCERY]: 3, + [SpeciesId.FALINKS]: 4, + [SpeciesId.PINCURCHIN]: 3, + [SpeciesId.SNOM]: 3, + [SpeciesId.STONJOURNER]: 3, + [SpeciesId.EISCUE]: 3, + [SpeciesId.INDEEDEE]: 4, + [SpeciesId.MORPEKO]: 3, + [SpeciesId.CUFANT]: 3, + [SpeciesId.DRACOZOLT]: 5, + [SpeciesId.ARCTOZOLT]: 4, + [SpeciesId.DRACOVISH]: 5, + [SpeciesId.ARCTOVISH]: 4, + [SpeciesId.DURALUDON]: 5, + [SpeciesId.DREEPY]: 4, + [SpeciesId.ZACIAN]: 9, + [SpeciesId.ZAMAZENTA]: 8, + [SpeciesId.ETERNATUS]: 10, + [SpeciesId.KUBFU]: 6, + [SpeciesId.ZARUDE]: 5, + [SpeciesId.REGIELEKI]: 6, + [SpeciesId.REGIDRAGO]: 6, + [SpeciesId.GLASTRIER]: 6, + [SpeciesId.SPECTRIER]: 8, + [SpeciesId.CALYREX]: 8, + [SpeciesId.ENAMORUS]: 7, + [SpeciesId.GALAR_MEOWTH]: 3, + [SpeciesId.GALAR_PONYTA]: 2, + [SpeciesId.GALAR_SLOWPOKE]: 3, + [SpeciesId.GALAR_FARFETCHD]: 3, + [SpeciesId.GALAR_ARTICUNO]: 6, + [SpeciesId.GALAR_ZAPDOS]: 6, + [SpeciesId.GALAR_MOLTRES]: 6, + [SpeciesId.GALAR_CORSOLA]: 3, + [SpeciesId.GALAR_ZIGZAGOON]: 3, + [SpeciesId.GALAR_DARUMAKA]: 4, + [SpeciesId.GALAR_YAMASK]: 3, + [SpeciesId.GALAR_STUNFISK]: 2, + [SpeciesId.HISUI_GROWLITHE]: 4, + [SpeciesId.HISUI_VOLTORB]: 3, + [SpeciesId.HISUI_QWILFISH]: 4, + [SpeciesId.HISUI_SNEASEL]: 5, + [SpeciesId.HISUI_ZORUA]: 3, - [Species.SPRIGATITO]: 4, - [Species.FUECOCO]: 4, - [Species.QUAXLY]: 4, - [Species.LECHONK]: 2, - [Species.TAROUNTULA]: 1, - [Species.NYMBLE]: 3, - [Species.PAWMI]: 3, - [Species.TANDEMAUS]: 4, - [Species.FIDOUGH]: 2, - [Species.SMOLIV]: 3, - [Species.SQUAWKABILLY]: 2, - [Species.NACLI]: 4, - [Species.CHARCADET]: 4, - [Species.TADBULB]: 3, - [Species.WATTREL]: 3, - [Species.MASCHIFF]: 3, - [Species.SHROODLE]: 2, - [Species.BRAMBLIN]: 3, - [Species.TOEDSCOOL]: 3, - [Species.KLAWF]: 3, - [Species.CAPSAKID]: 3, - [Species.RELLOR]: 2, - [Species.FLITTLE]: 3, - [Species.TINKATINK]: 4, - [Species.WIGLETT]: 2, - [Species.BOMBIRDIER]: 3, - [Species.FINIZEN]: 3, - [Species.VAROOM]: 4, - [Species.CYCLIZAR]: 4, - [Species.ORTHWORM]: 4, - [Species.GLIMMET]: 4, - [Species.GREAVARD]: 3, - [Species.FLAMIGO]: 4, - [Species.CETODDLE]: 3, - [Species.VELUZA]: 4, - [Species.DONDOZO]: 4, - [Species.TATSUGIRI]: 4, - [Species.GREAT_TUSK]: 7, - [Species.SCREAM_TAIL]: 5, - [Species.BRUTE_BONNET]: 5, - [Species.FLUTTER_MANE]: 7, - [Species.SLITHER_WING]: 6, - [Species.SANDY_SHOCKS]: 6, - [Species.IRON_TREADS]: 6, - [Species.IRON_BUNDLE]: 6, - [Species.IRON_HANDS]: 6, - [Species.IRON_JUGULIS]: 6, - [Species.IRON_MOTH]: 6, - [Species.IRON_THORNS]: 5, - [Species.FRIGIBAX]: 4, - [Species.GIMMIGHOUL]: 4, - [Species.WO_CHIEN]: 5, - [Species.CHIEN_PAO]: 7, - [Species.TING_LU]: 6, - [Species.CHI_YU]: 7, - [Species.ROARING_MOON]: 7, - [Species.IRON_VALIANT]: 6, - [Species.KORAIDON]: 9, - [Species.MIRAIDON]: 9, - [Species.WALKING_WAKE]: 7, - [Species.IRON_LEAVES]: 6, - [Species.POLTCHAGEIST]: 4, - [Species.OKIDOGI]: 6, - [Species.MUNKIDORI]: 6, - [Species.FEZANDIPITI]: 5, - [Species.OGERPON]: 7, - [Species.GOUGING_FIRE]: 7, - [Species.RAGING_BOLT]: 7, - [Species.IRON_BOULDER]: 7, - [Species.IRON_CROWN]: 7, - [Species.TERAPAGOS]: 9, - [Species.PECHARUNT]: 6, - [Species.PALDEA_TAUROS]: 5, - [Species.PALDEA_WOOPER]: 3, - [Species.BLOODMOON_URSALUNA]: 5, + [SpeciesId.SPRIGATITO]: 4, + [SpeciesId.FUECOCO]: 4, + [SpeciesId.QUAXLY]: 4, + [SpeciesId.LECHONK]: 2, + [SpeciesId.TAROUNTULA]: 1, + [SpeciesId.NYMBLE]: 3, + [SpeciesId.PAWMI]: 3, + [SpeciesId.TANDEMAUS]: 4, + [SpeciesId.FIDOUGH]: 2, + [SpeciesId.SMOLIV]: 3, + [SpeciesId.SQUAWKABILLY]: 2, + [SpeciesId.NACLI]: 4, + [SpeciesId.CHARCADET]: 4, + [SpeciesId.TADBULB]: 3, + [SpeciesId.WATTREL]: 3, + [SpeciesId.MASCHIFF]: 3, + [SpeciesId.SHROODLE]: 2, + [SpeciesId.BRAMBLIN]: 3, + [SpeciesId.TOEDSCOOL]: 3, + [SpeciesId.KLAWF]: 3, + [SpeciesId.CAPSAKID]: 3, + [SpeciesId.RELLOR]: 2, + [SpeciesId.FLITTLE]: 3, + [SpeciesId.TINKATINK]: 4, + [SpeciesId.WIGLETT]: 2, + [SpeciesId.BOMBIRDIER]: 3, + [SpeciesId.FINIZEN]: 3, + [SpeciesId.VAROOM]: 4, + [SpeciesId.CYCLIZAR]: 4, + [SpeciesId.ORTHWORM]: 4, + [SpeciesId.GLIMMET]: 4, + [SpeciesId.GREAVARD]: 3, + [SpeciesId.FLAMIGO]: 4, + [SpeciesId.CETODDLE]: 3, + [SpeciesId.VELUZA]: 4, + [SpeciesId.DONDOZO]: 4, + [SpeciesId.TATSUGIRI]: 4, + [SpeciesId.GREAT_TUSK]: 7, + [SpeciesId.SCREAM_TAIL]: 5, + [SpeciesId.BRUTE_BONNET]: 5, + [SpeciesId.FLUTTER_MANE]: 7, + [SpeciesId.SLITHER_WING]: 6, + [SpeciesId.SANDY_SHOCKS]: 6, + [SpeciesId.IRON_TREADS]: 6, + [SpeciesId.IRON_BUNDLE]: 6, + [SpeciesId.IRON_HANDS]: 6, + [SpeciesId.IRON_JUGULIS]: 6, + [SpeciesId.IRON_MOTH]: 6, + [SpeciesId.IRON_THORNS]: 5, + [SpeciesId.FRIGIBAX]: 4, + [SpeciesId.GIMMIGHOUL]: 4, + [SpeciesId.WO_CHIEN]: 5, + [SpeciesId.CHIEN_PAO]: 7, + [SpeciesId.TING_LU]: 6, + [SpeciesId.CHI_YU]: 7, + [SpeciesId.ROARING_MOON]: 7, + [SpeciesId.IRON_VALIANT]: 6, + [SpeciesId.KORAIDON]: 9, + [SpeciesId.MIRAIDON]: 9, + [SpeciesId.WALKING_WAKE]: 7, + [SpeciesId.IRON_LEAVES]: 6, + [SpeciesId.POLTCHAGEIST]: 4, + [SpeciesId.OKIDOGI]: 6, + [SpeciesId.MUNKIDORI]: 6, + [SpeciesId.FEZANDIPITI]: 5, + [SpeciesId.OGERPON]: 7, + [SpeciesId.GOUGING_FIRE]: 7, + [SpeciesId.RAGING_BOLT]: 7, + [SpeciesId.IRON_BOULDER]: 7, + [SpeciesId.IRON_CROWN]: 7, + [SpeciesId.TERAPAGOS]: 9, + [SpeciesId.PECHARUNT]: 6, + [SpeciesId.PALDEA_TAUROS]: 5, + [SpeciesId.PALDEA_WOOPER]: 3, + [SpeciesId.BLOODMOON_URSALUNA]: 5, }; const starterCandyCosts: { passive: number; costReduction: [number, number]; egg: number; }[] = [ diff --git a/src/data/balance/tms.ts b/src/data/balance/tms.ts index 06d191c3b2a..e95fa12151d 100644 --- a/src/data/balance/tms.ts +++ b/src/data/balance/tms.ts @@ -1,68550 +1,68550 @@ import { ModifierTier } from "#app/modifier/modifier-tier"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; interface TmSpecies { - [key: number]: Array> + [key: number]: Array> } -export const reverseCompatibleTms: Moves[] = [];/*[ - Moves.TAKE_DOWN, - Moves.TOXIC, - Moves.RAGE, - Moves.MIMIC, - Moves.DOUBLE_TEAM, - Moves.BIDE, - Moves.REST, - Moves.SUBSTITUTE, - Moves.SNORE, - Moves.PROTECT, - Moves.ENDURE, - Moves.SWAGGER, - Moves.ATTRACT, - Moves.SLEEP_TALK, - Moves.RETURN, - Moves.FRUSTRATION, - Moves.HIDDEN_POWER, - Moves.FACADE, - Moves.SECRET_POWER, - Moves.NATURAL_GIFT, - Moves.CAPTIVATE, - Moves.ROUND +export const reverseCompatibleTms: MoveId[] = [];/*[ + MoveId.TAKE_DOWN, + MoveId.TOXIC, + MoveId.RAGE, + MoveId.MIMIC, + MoveId.DOUBLE_TEAM, + MoveId.BIDE, + MoveId.REST, + MoveId.SUBSTITUTE, + MoveId.SNORE, + MoveId.PROTECT, + MoveId.ENDURE, + MoveId.SWAGGER, + MoveId.ATTRACT, + MoveId.SLEEP_TALK, + MoveId.RETURN, + MoveId.FRUSTRATION, + MoveId.HIDDEN_POWER, + MoveId.FACADE, + MoveId.SECRET_POWER, + MoveId.NATURAL_GIFT, + MoveId.CAPTIVATE, + MoveId.ROUND ];*/ export const tmSpecies: TmSpecies = { - [Moves.MEGA_PUNCH]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PIKACHU, - Species.RAICHU, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWBRO, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.LEDYBA, - Species.LEDIAN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.QUAGSIRE, - Species.SLOWKING, - Species.SNUBBULL, - Species.GRANBULL, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.DELIBIRD, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.LOMBRE, - Species.LUDICOLO, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GRUMPIG, - Species.SPINDA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.KECLEON, - Species.DUSCLOPS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.GROUDON, - Species.JIRACHI, - Species.BUNEARY, - Species.LOPUNNY, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.GALLADE, - Species.DUSKNOIR, - Species.REGIGIGAS, - Species.VICTINI, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ZOROARK, - Species.REUNICLUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.HELIOLISK, - Species.HAWLUCHA, - Species.GOODRA, - Species.INCINEROAR, - Species.STUFFUL, - Species.BEWEAR, - Species.ORANGURU, - Species.PASSIMIAN, - Species.TURTONATOR, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_BULU, - Species.BUZZWOLE, - Species.GUZZLORD, - Species.MARSHADOW, - Species.ZERAORA, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.COALOSSAL, - Species.TOXTRICITY, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.MR_RIME, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, + [MoveId.MEGA_PUNCH]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWBRO, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.DELIBIRD, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.KECLEON, + SpeciesId.DUSCLOPS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.JIRACHI, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.REGIGIGAS, + SpeciesId.VICTINI, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ZOROARK, + SpeciesId.REUNICLUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HELIOLISK, + SpeciesId.HAWLUCHA, + SpeciesId.GOODRA, + SpeciesId.INCINEROAR, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.TURTONATOR, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_BULU, + SpeciesId.BUZZWOLE, + SpeciesId.GUZZLORD, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.COALOSSAL, + SpeciesId.TOXTRICITY, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.MR_RIME, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, [ - Species.DEOXYS, + SpeciesId.DEOXYS, "attack", "defense", "speed", ], - Species.ALOLA_RAICHU, - Species.ALOLA_GOLEM, - Species.ALOLA_MAROWAK, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_MAROWAK, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, ], - [Moves.PAY_DAY]: [ - Species.PIKACHU, - Species.RAICHU, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.RHYDON, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.SNORLAX, - Species.MEWTWO, - Species.MEW, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.ESPEON, - Species.UMBREON, - Species.SLOWKING, - Species.SKITTY, - Species.DELCATTY, - Species.MUNCHLAX, - Species.RHYPERIOR, - Species.LEAFEON, - Species.GLACEON, - Species.PURRLOIN, - Species.LIEPARD, - Species.ESPURR, - Species.MEOWSTIC, - Species.SYLVEON, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.ZERAORA, - Species.PERRSERKER, - Species.INDEEDEE, - Species.CALYREX, - Species.ANNIHILAPE, - Species.ALOLA_RAICHU, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.GALAR_MEOWTH, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, + [MoveId.PAY_DAY]: [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.RHYDON, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.SNORLAX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.SLOWKING, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.MUNCHLAX, + SpeciesId.RHYPERIOR, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SYLVEON, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.ZERAORA, + SpeciesId.PERRSERKER, + SpeciesId.INDEEDEE, + SpeciesId.CALYREX, + SpeciesId.ANNIHILAPE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, ], - [Moves.FIRE_PUNCH]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MANKEY, - Species.PRIMEAPE, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TYPHLOSION, - Species.SENTRET, - Species.FURRET, - Species.FLAAFFY, - Species.AMPHAROS, - Species.SUDOWOODO, - Species.AIPOM, - Species.SLOWKING, - Species.SNUBBULL, - Species.GRANBULL, - Species.TEDDIURSA, - Species.URSARING, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.TYRANITAR, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.LOMBRE, - Species.LUDICOLO, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.SABLEYE, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.GULPIN, - Species.SWALOT, - Species.GRUMPIG, - Species.SPINDA, - Species.FLYGON, - Species.ZANGOOSE, - Species.KECLEON, - Species.DUSCLOPS, - Species.REGIROCK, - Species.GROUDON, - Species.JIRACHI, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MUNCHLAX, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.REGIGIGAS, - Species.VICTINI, - Species.PIGNITE, - Species.EMBOAR, - Species.WATCHOG, - Species.PANSEAR, - Species.SIMISEAR, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.REUNICLUS, - Species.EELEKTROSS, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.HEATMOR, - Species.MELOETTA, - Species.BRAIXEN, - Species.DELPHOX, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.HELIOLISK, - Species.HAWLUCHA, - Species.GOODRA, - Species.HOOPA, - Species.INCINEROAR, - Species.GUMSHOOS, + [MoveId.FIRE_PUNCH]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.SUDOWOODO, + SpeciesId.AIPOM, + SpeciesId.SLOWKING, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.TYRANITAR, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.SABLEYE, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.FLYGON, + SpeciesId.ZANGOOSE, + SpeciesId.KECLEON, + SpeciesId.DUSCLOPS, + SpeciesId.REGIROCK, + SpeciesId.GROUDON, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MUNCHLAX, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.REGIGIGAS, + SpeciesId.VICTINI, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.WATCHOG, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.REUNICLUS, + SpeciesId.EELEKTROSS, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.HEATMOR, + SpeciesId.MELOETTA, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HELIOLISK, + SpeciesId.HAWLUCHA, + SpeciesId.GOODRA, + SpeciesId.HOOPA, + SpeciesId.INCINEROAR, + SpeciesId.GUMSHOOS, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.KOMMO_O, - Species.MARSHADOW, - Species.BLACEPHALON, - Species.ZERAORA, - Species.CINDERACE, - Species.COALOSSAL, - Species.TOXTRICITY, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.KUBFU, - Species.URSHIFU, - Species.URSALUNA, - Species.SNEASLER, - Species.PAWMOT, - Species.GARGANACL, - Species.ANNIHILAPE, - Species.SCREAM_TAIL, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.IRON_VALIANT, - Species.OKIDOGI, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, + SpeciesId.KOMMO_O, + SpeciesId.MARSHADOW, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.CINDERACE, + SpeciesId.COALOSSAL, + SpeciesId.TOXTRICITY, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.PAWMOT, + SpeciesId.GARGANACL, + SpeciesId.ANNIHILAPE, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.IRON_VALIANT, + SpeciesId.OKIDOGI, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_SLOWKING, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_TYPHLOSION, - Species.HISUI_GOODRA, - Species.BLOODMOON_URSALUNA, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_GOODRA, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.ICE_PUNCH]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.SLOWBRO, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.LEDYBA, - Species.LEDIAN, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.SNUBBULL, - Species.GRANBULL, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.DELIBIRD, - Species.SMOOCHUM, - Species.ELEKID, - Species.MILTANK, - Species.BLISSEY, - Species.TYRANITAR, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.LOMBRE, - Species.LUDICOLO, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GULPIN, - Species.SWALOT, - Species.GRUMPIG, - Species.SPINDA, - Species.ZANGOOSE, - Species.KECLEON, - Species.DUSCLOPS, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.JIRACHI, - Species.DEOXYS, - Species.BUIZEL, - Species.FLOATZEL, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.REGIGIGAS, - Species.WATCHOG, - Species.PANPOUR, - Species.SIMIPOUR, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SCRAGGY, - Species.SCRAFTY, - Species.REUNICLUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.GOLETT, - Species.GOLURK, - Species.MELOETTA, - Species.FROGADIER, - Species.GRENINJA, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.HOOPA, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.STUFFUL, - Species.BEWEAR, - Species.KOMMO_O, - Species.TAPU_FINI, - Species.BUZZWOLE, - Species.MARSHADOW, - Species.MELMETAL, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.MR_RIME, - Species.EISCUE, - Species.KUBFU, - Species.URSHIFU, - Species.URSALUNA, - Species.PAWMOT, - Species.GARGANACL, - Species.PALAFIN, - Species.CETITAN, - Species.ANNIHILAPE, - Species.SCREAM_TAIL, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.IRON_VALIANT, - Species.OKIDOGI, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.BLOODMOON_URSALUNA, + [MoveId.ICE_PUNCH]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.SLOWBRO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.DELIBIRD, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.TYRANITAR, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.ZANGOOSE, + SpeciesId.KECLEON, + SpeciesId.DUSCLOPS, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.REGIGIGAS, + SpeciesId.WATCHOG, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.REUNICLUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.MELOETTA, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HOOPA, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_FINI, + SpeciesId.BUZZWOLE, + SpeciesId.MARSHADOW, + SpeciesId.MELMETAL, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.MR_RIME, + SpeciesId.EISCUE, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.URSALUNA, + SpeciesId.PAWMOT, + SpeciesId.GARGANACL, + SpeciesId.PALAFIN, + SpeciesId.CETITAN, + SpeciesId.ANNIHILAPE, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.IRON_VALIANT, + SpeciesId.OKIDOGI, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.THUNDER_PUNCH]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.PIKACHU, - Species.RAICHU, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MANKEY, - Species.PRIMEAPE, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TYPHLOSION, - Species.SENTRET, - Species.FURRET, - Species.LEDYBA, - Species.LEDIAN, - Species.PICHU, - Species.FLAAFFY, - Species.AMPHAROS, - Species.SUDOWOODO, - Species.AIPOM, - Species.SLOWKING, - Species.SNUBBULL, - Species.GRANBULL, - Species.TEDDIURSA, - Species.URSARING, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.LOMBRE, - Species.LUDICOLO, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GULPIN, - Species.SWALOT, - Species.GRUMPIG, - Species.SPINDA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.KECLEON, - Species.DUSCLOPS, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.GROUDON, - Species.JIRACHI, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.PACHIRISU, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.REGIGIGAS, - Species.VICTINI, - Species.PIGNITE, - Species.EMBOAR, - Species.WATCHOG, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.SCRAGGY, - Species.SCRAFTY, - Species.REUNICLUS, - Species.EELEKTROSS, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.HEATMOR, - Species.THUNDURUS, - Species.ZEKROM, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.BRAIXEN, - Species.DELPHOX, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.HELIOLISK, - Species.HAWLUCHA, - Species.DEDENNE, - Species.GOODRA, - Species.HOOPA, - Species.INCINEROAR, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.STUFFUL, - Species.BEWEAR, + [MoveId.THUNDER_PUNCH]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.PICHU, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.SUDOWOODO, + SpeciesId.AIPOM, + SpeciesId.SLOWKING, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.KECLEON, + SpeciesId.DUSCLOPS, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.PACHIRISU, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.REGIGIGAS, + SpeciesId.VICTINI, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.WATCHOG, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.REUNICLUS, + SpeciesId.EELEKTROSS, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.HEATMOR, + SpeciesId.THUNDURUS, + SpeciesId.ZEKROM, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HELIOLISK, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.GOODRA, + SpeciesId.HOOPA, + SpeciesId.INCINEROAR, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.BUZZWOLE, - Species.XURKITREE, - Species.MARSHADOW, - Species.ZERAORA, - Species.MELMETAL, - Species.TOXTRICITY, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.MORPEKO, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.KUBFU, - Species.URSHIFU, - Species.URSALUNA, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.PAWMO, - Species.PAWMOT, - Species.GARGANACL, - Species.ANNIHILAPE, - Species.SCREAM_TAIL, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.GHOLDENGO, - Species.IRON_VALIANT, - Species.OKIDOGI, - Species.ALOLA_RAICHU, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.BUZZWOLE, + SpeciesId.XURKITREE, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.MELMETAL, + SpeciesId.TOXTRICITY, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.MORPEKO, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.URSALUNA, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.GARGANACL, + SpeciesId.ANNIHILAPE, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.GHOLDENGO, + SpeciesId.IRON_VALIANT, + SpeciesId.OKIDOGI, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_SLOWKING, - Species.HISUI_TYPHLOSION, - Species.HISUI_GOODRA, - Species.BLOODMOON_URSALUNA, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_GOODRA, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.SWORDS_DANCE]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.BEEDRILL, - Species.RATICATE, - Species.SANDSHREW, - Species.SANDSLASH, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.DIGLETT, - Species.DUGTRIO, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.RAPIDASH, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.KRABBY, - Species.KINGLER, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.TANGELA, - Species.GOLDEEN, - Species.SEAKING, - Species.SCYTHER, - Species.PINSIR, - Species.KABUTOPS, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.LEDYBA, - Species.LEDIAN, - Species.ARIADOS, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.GLIGAR, - Species.QWILFISH, - Species.SCIZOR, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SKARMORY, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SHROOMISH, - Species.BRELOOM, - Species.NINJASK, - Species.MAWILE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.SEVIPER, - Species.SOLROCK, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.BANETTE, - Species.TROPIUS, - Species.ABSOL, - Species.WALREIN, - Species.GROUDON, - Species.RAYQUAZA, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.EMPOLEON, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.CHERUBI, - Species.CHERRIM, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.RIOLU, - Species.LUCARIO, - Species.SKORUPI, - Species.DRAPION, - Species.TOXICROAK, - Species.CARNIVINE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.YANMEGA, - Species.LEAFEON, - Species.GLISCOR, - Species.GALLADE, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.DRILBUR, - Species.EXCADRILL, - Species.LEAVANNY, - Species.SCOLIPEDE, - Species.LILLIGANT, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAFTY, - Species.ZORUA, - Species.ZOROARK, - Species.SAWSBUCK, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FERROTHORN, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.LANDORUS, - Species.KELDEO, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.PANCHAM, - Species.PANGORO, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.BINACLE, - Species.BARBARACLE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HAWLUCHA, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.ORICORIO, - Species.ROCKRUFF, - Species.LYCANROC, - Species.FOMANTIS, - Species.LURANTIS, - Species.STUFFUL, - Species.BEWEAR, - Species.GOLISOPOD, - Species.TYPE_NULL, - Species.SILVALLY, - Species.KOMALA, - Species.MIMIKYU, - Species.BRUXISH, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_BULU, - Species.KARTANA, - Species.NECROZMA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.RABOOT, - Species.CINDERACE, - Species.INTELEON, - Species.GREEDENT, - Species.DUBWOOL, - Species.DREDNAW, - Species.HATTERENE, - Species.PERRSERKER, - Species.SIRFETCHD, - Species.FALINKS, - Species.DURALUDON, - Species.ZACIAN, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.GLASTRIER, - Species.KLEAVOR, - Species.URSALUNA, - Species.SNEASLER, - Species.OVERQWIL, - Species.QUAQUAVAL, - Species.LOKIX, - Species.CERULEDGE, - Species.SHROODLE, - Species.GRAFAIAI, - Species.KLAWF, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.FLAMIGO, - Species.KINGAMBIT, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.CHIEN_PAO, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.IRON_LEAVES, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.ALOLA_RATICATE, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_RAPIDASH, - Species.GALAR_FARFETCHD, + [MoveId.SWORDS_DANCE]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.BEEDRILL, + SpeciesId.RATICATE, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.RAPIDASH, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.TANGELA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.SCYTHER, + SpeciesId.PINSIR, + SpeciesId.KABUTOPS, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.ARIADOS, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.GLIGAR, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SKARMORY, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.NINJASK, + SpeciesId.MAWILE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.SOLROCK, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.BANETTE, + SpeciesId.TROPIUS, + SpeciesId.ABSOL, + SpeciesId.WALREIN, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLISCOR, + SpeciesId.GALLADE, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.LEAVANNY, + SpeciesId.SCOLIPEDE, + SpeciesId.LILLIGANT, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAFTY, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.SAWSBUCK, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FERROTHORN, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.LANDORUS, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HAWLUCHA, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.ORICORIO, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.GOLISOPOD, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.KOMALA, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_BULU, + SpeciesId.KARTANA, + SpeciesId.NECROZMA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.INTELEON, + SpeciesId.GREEDENT, + SpeciesId.DUBWOOL, + SpeciesId.DREDNAW, + SpeciesId.HATTERENE, + SpeciesId.PERRSERKER, + SpeciesId.SIRFETCHD, + SpeciesId.FALINKS, + SpeciesId.DURALUDON, + SpeciesId.ZACIAN, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.GLASTRIER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.QUAQUAVAL, + SpeciesId.LOKIX, + SpeciesId.CERULEDGE, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.KLAWF, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.FLAMIGO, + SpeciesId.KINGAMBIT, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.CHIEN_PAO, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.IRON_LEAVES, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_FARFETCHD, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZOROARK, - Species.HISUI_DECIDUEYE, - Species.BLOODMOON_URSALUNA, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.CUT]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.BEEDRILL, - Species.RATTATA, - Species.RATICATE, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.FARFETCHD, - Species.KRABBY, - Species.KINGLER, - Species.LICKITUNG, - Species.RHYDON, - Species.TANGELA, - Species.KANGASKHAN, - Species.SCYTHER, - Species.PINSIR, - Species.KABUTOPS, - Species.DRAGONITE, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.BELLOSSOM, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.ESPEON, - Species.UMBREON, - Species.GLIGAR, - Species.STEELIX, - Species.SCIZOR, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SKARMORY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.TYRANITAR, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.ZIGZAGOON, - Species.LINOONE, - Species.NUZLEAF, - Species.SHIFTRY, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.SABLEYE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.ROSELIA, - Species.CACNEA, - Species.CACTURNE, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.ANORITH, - Species.ARMALDO, - Species.KECLEON, - Species.TROPIUS, - Species.ABSOL, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.GROUDON, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.BUDEW, - Species.ROSERADE, - Species.RAMPARDOS, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.GLAMEOW, - Species.PURUGLY, - Species.STUNKY, - Species.SKUNTANK, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.SKORUPI, - Species.DRAPION, - Species.TOXICROAK, - Species.CARNIVINE, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.GLISCOR, - Species.GALLADE, - Species.DIALGA, - Species.PALKIA, - Species.GIRATINA, - Species.DARKRAI, - Species.ARCEUS, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.DRILBUR, - Species.EXCADRILL, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.SCOLIPEDE, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DWEBBLE, - Species.CRUSTLE, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROTHORN, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.KELDEO, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.VOLCANION, - Species.KARTANA, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.URSALUNA, - Species.BASCULEGION, - Species.KINGAMBIT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.GALAR_MEOWTH, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_TYPHLOSION, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_BRAVIARY, - Species.BLOODMOON_URSALUNA, + [MoveId.CUT]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.BEEDRILL, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.FARFETCHD, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.SCYTHER, + SpeciesId.PINSIR, + SpeciesId.KABUTOPS, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.BELLOSSOM, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SKARMORY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.TYRANITAR, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.ROSELIA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.KECLEON, + SpeciesId.TROPIUS, + SpeciesId.ABSOL, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.GROUDON, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.RAMPARDOS, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.GLISCOR, + SpeciesId.GALLADE, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.GIRATINA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.SCOLIPEDE, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROTHORN, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.VOLCANION, + SpeciesId.KARTANA, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.KINGAMBIT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.FLY]: [ - Species.CHARIZARD, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.SPEAROW, - Species.FEAROW, - Species.ZUBAT, - Species.GOLBAT, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.AERODACTYL, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CROBAT, - Species.TOGETIC, - Species.XATU, - Species.MURKROW, - Species.DELIBIRD, - Species.SKARMORY, - Species.LUGIA, - Species.HO_OH, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.VIBRAVA, - Species.FLYGON, - Species.SWABLU, - Species.ALTARIA, - Species.TROPIUS, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.RAYQUAZA, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.HONCHKROW, - Species.CHATOT, - Species.TOGEKISS, - Species.GIRATINA, - Species.ARCEUS, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.SIGILYPH, - Species.ARCHEOPS, - Species.DUCKLETT, - Species.SWANNA, - Species.GOLURK, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HYDREIGON, - Species.VOLCARONA, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.GENESECT, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.HAWLUCHA, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.VIKAVOLT, - Species.ORICORIO, - Species.DRAMPA, - Species.TAPU_KOKO, - Species.LUNALA, - Species.CELESTEELA, - Species.NAGANADEL, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.FLAPPLE, - Species.CRAMORANT, - Species.DRAGAPULT, - Species.ETERNATUS, - Species.ENAMORUS, - Species.SQUAWKABILLY, - Species.WATTREL, - Species.KILOWATTREL, - Species.BOMBIRDIER, - Species.FLAMIGO, - Species.IRON_JUGULIS, - Species.ROARING_MOON, - Species.FEZANDIPITI, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.HISUI_BRAVIARY, + [MoveId.FLY]: [ + SpeciesId.CHARIZARD, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.AERODACTYL, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CROBAT, + SpeciesId.TOGETIC, + SpeciesId.XATU, + SpeciesId.MURKROW, + SpeciesId.DELIBIRD, + SpeciesId.SKARMORY, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.TROPIUS, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.RAYQUAZA, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.HONCHKROW, + SpeciesId.CHATOT, + SpeciesId.TOGEKISS, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SIGILYPH, + SpeciesId.ARCHEOPS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.GOLURK, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HYDREIGON, + SpeciesId.VOLCARONA, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.GENESECT, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.HAWLUCHA, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.VIKAVOLT, + SpeciesId.ORICORIO, + SpeciesId.DRAMPA, + SpeciesId.TAPU_KOKO, + SpeciesId.LUNALA, + SpeciesId.CELESTEELA, + SpeciesId.NAGANADEL, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.FLAPPLE, + SpeciesId.CRAMORANT, + SpeciesId.DRAGAPULT, + SpeciesId.ETERNATUS, + SpeciesId.ENAMORUS, + SpeciesId.SQUAWKABILLY, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.BOMBIRDIER, + SpeciesId.FLAMIGO, + SpeciesId.IRON_JUGULIS, + SpeciesId.ROARING_MOON, + SpeciesId.FEZANDIPITI, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.MEGA_KICK]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PIKACHU, - Species.RAICHU, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GOLEM, - Species.SLOWBRO, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.KABUTOPS, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.QUAGSIRE, - Species.SLOWKING, - Species.SNUBBULL, - Species.GRANBULL, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.DELIBIRD, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.LOMBRE, - Species.LUDICOLO, - Species.NUZLEAF, - Species.SHIFTRY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GRUMPIG, - Species.SPINDA, - Species.FLYGON, - Species.CACTURNE, - Species.ZANGOOSE, - Species.KECLEON, - Species.DUSCLOPS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.GROUDON, - Species.JIRACHI, - Species.BUNEARY, - Species.LOPUNNY, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.GALLADE, - Species.DUSKNOIR, - Species.REGIGIGAS, - Species.VICTINI, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ZOROARK, - Species.CUBCHOO, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.GOLETT, - Species.GOLURK, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.HELIOLISK, - Species.HAWLUCHA, - Species.GOODRA, - Species.INCINEROAR, - Species.MUDBRAY, - Species.MUDSDALE, - Species.STUFFUL, - Species.BEWEAR, - Species.TSAREENA, - Species.ORANGURU, - Species.PASSIMIAN, - Species.TURTONATOR, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.GUZZLORD, - Species.MARSHADOW, - Species.STAKATAKA, - Species.ZERAORA, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.DUBWOOL, - Species.COALOSSAL, - Species.TOXTRICITY, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.MR_RIME, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.QUAQUAVAL, - Species.FLAMIGO, + [MoveId.MEGA_KICK]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GOLEM, + SpeciesId.SLOWBRO, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.DELIBIRD, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.FLYGON, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.KECLEON, + SpeciesId.DUSCLOPS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.JIRACHI, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.REGIGIGAS, + SpeciesId.VICTINI, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ZOROARK, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HELIOLISK, + SpeciesId.HAWLUCHA, + SpeciesId.GOODRA, + SpeciesId.INCINEROAR, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.TSAREENA, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.TURTONATOR, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.GUZZLORD, + SpeciesId.MARSHADOW, + SpeciesId.STAKATAKA, + SpeciesId.ZERAORA, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.DUBWOOL, + SpeciesId.COALOSSAL, + SpeciesId.TOXTRICITY, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.MR_RIME, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.QUAQUAVAL, + SpeciesId.FLAMIGO, [ - Species.DEOXYS, + SpeciesId.DEOXYS, "attack", "defense", "speed", ], - Species.ALOLA_RAICHU, - Species.ALOLA_MAROWAK, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_MAROWAK, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_ZAPDOS, - Species.GALAR_SLOWKING, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_LILLIGANT, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_LILLIGANT, ], - [Moves.BODY_SLAM]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.RATTATA, - Species.RATICATE, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.CLOYSTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.GOLDEEN, - Species.SEAKING, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.SNORLAX, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.NOCTOWL, - Species.SPINARAK, - Species.ARIADOS, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.SLOWKING, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.SHUCKLE, - Species.HERACROSS, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.DELIBIRD, - Species.MANTINE, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.INFERNAPE, - Species.EMPOLEON, - Species.LUXRAY, - Species.ROSERADE, - Species.SHIELDON, - Species.BASTIODON, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.PURUGLY, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SNOVER, - Species.ABOMASNOW, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.LEAFEON, - Species.GLACEON, - Species.MAMOSWINE, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.ARCEUS, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.SAMUROTT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.CONKELDURR, - Species.THROH, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARMANITAN, - Species.SCRAFTY, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.GARBODOR, - Species.ZOROARK, - Species.GOTHITELLE, - Species.REUNICLUS, - Species.DEERLING, - Species.SAWSBUCK, - Species.FOONGUS, - Species.AMOONGUSS, - Species.ALOMOMOLA, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.HEATMOR, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.DIGGERSBY, - Species.LITLEO, - Species.PYROAR, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.CLAWITZER, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.VOLCANION, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.BRIONNE, - Species.PRIMARINA, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.ARAQUANID, - Species.SALAZZLE, - Species.BEWEAR, - Species.ORANGURU, - Species.PASSIMIAN, - Species.PALOSSAND, - Species.KOMALA, - Species.TURTONATOR, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.SOLGALEO, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.CELESTEELA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.STAKATAKA, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SKWOVET, - Species.GREEDENT, - Species.CORVIKNIGHT, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.FALINKS, - Species.PINCURCHIN, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.WYRDEER, - Species.URSALUNA, - Species.ENAMORUS, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.FIDOUGH, - Species.DACHSBUN, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.KLAWF, - Species.ESPATHRA, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.WO_CHIEN, - Species.TING_LU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.DIPPLIN, - Species.OKIDOGI, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARMANITAN, + [MoveId.BODY_SLAM]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.CLOYSTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.NOCTOWL, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.LUXRAY, + SpeciesId.ROSERADE, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.PURUGLY, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.ARCEUS, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.SAMUROTT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARMANITAN, + SpeciesId.SCRAFTY, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.GARBODOR, + SpeciesId.ZOROARK, + SpeciesId.GOTHITELLE, + SpeciesId.REUNICLUS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.ALOMOMOLA, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.HEATMOR, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.DIGGERSBY, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.CLAWITZER, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.VOLCANION, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.ARAQUANID, + SpeciesId.SALAZZLE, + SpeciesId.BEWEAR, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.PALOSSAND, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.SOLGALEO, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.STAKATAKA, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.CORVIKNIGHT, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.WYRDEER, + SpeciesId.URSALUNA, + SpeciesId.ENAMORUS, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.KLAWF, + SpeciesId.ESPATHRA, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.WO_CHIEN, + SpeciesId.TING_LU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.DIPPLIN, + SpeciesId.OKIDOGI, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARMANITAN, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", "shadow", ], - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_SAMUROTT, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.TAKE_DOWN]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.IGGLYBUFF, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.DELIBIRD, - Species.MANTINE, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PHANPY, - Species.DONPHAN, - Species.STANTLER, - Species.BLISSEY, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.WINGULL, - Species.PELIPPER, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SABLEYE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.MILOTIC, - Species.TROPIUS, - Species.CHIMECHO, - Species.SNORUNT, - Species.GLALIE, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.BELDUM, - Species.METANG, - Species.METAGROSS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.HONCHKROW, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.HAPPINY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.CROAGUNK, - Species.TOXICROAK, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.RHYPERIOR, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.GALLADE, - Species.PROBOPASS, - Species.FROSLASS, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.GIRATINA, - Species.ARCEUS, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.BLITZLE, - Species.ROGGENROLA, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.DEERLING, - Species.SAWSBUCK, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.ALOMOMOLA, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.MIENFOO, - Species.MIENSHAO, - Species.PAWNIARD, - Species.BISHARP, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.KELDEO, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.LITLEO, - Species.PYROAR, - Species.SKIDDO, - Species.GOGOAT, - Species.FURFROU, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.TREVENANT, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MUDBRAY, - Species.MUDSDALE, - Species.FOMANTIS, - Species.LURANTIS, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.ORANGURU, - Species.PASSIMIAN, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.MIMIKYU, - Species.BRUXISH, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.MAGEARNA, - Species.STAKATAKA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXTRICITY, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.FALINKS, - Species.PINCURCHIN, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.OKIDOGI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, + [MoveId.TAKE_DOWN]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.IGGLYBUFF, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.STANTLER, + SpeciesId.BLISSEY, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SABLEYE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.MILOTIC, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.BELDUM, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.HONCHKROW, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.HAPPINY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.RHYPERIOR, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.FROSLASS, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.BLITZLE, + SpeciesId.ROGGENROLA, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.ALOMOMOLA, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.KELDEO, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.FURFROU, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.TREVENANT, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.MAGEARNA, + SpeciesId.STAKATAKA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXTRICITY, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.OKIDOGI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, ], - [Moves.DOUBLE_EDGE]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TYROGUE, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.FLOATZEL, - Species.AMBIPOM, - Species.HONCHKROW, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BONSLY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SNOVER, - Species.ABOMASNOW, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.PROBOPASS, - Species.MESPRIT, - Species.AZELF, - Species.REGIGIGAS, - Species.SHAYMIN, - Species.ARCEUS, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.DRILBUR, - Species.EXCADRILL, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.CINCCINO, - Species.DUCKLETT, - Species.SWANNA, - Species.DEERLING, - Species.SAWSBUCK, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.BEARTIC, - Species.MIENSHAO, - Species.GOLETT, - Species.GOLURK, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.RESHIRAM, - Species.ZEKROM, - Species.KELDEO, - Species.CHESNAUGHT, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.LITLEO, - Species.PYROAR, - Species.SKIDDO, - Species.GOGOAT, - Species.SYLVEON, - Species.CARBINK, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIVERN, - Species.VOLCANION, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.ROCKRUFF, - Species.LYCANROC, - Species.MUDBRAY, - Species.MUDSDALE, - Species.PASSIMIAN, - Species.MINIOR, - Species.KOMALA, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.SOLGALEO, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SKWOVET, - Species.GREEDENT, - Species.CORVIKNIGHT, - Species.DREDNAW, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.PERRSERKER, - Species.EISCUE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DURALUDON, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.GLASTRIER, - Species.SPECTRIER, + [MoveId.DOUBLE_EDGE]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TYROGUE, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.HONCHKROW, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BONSLY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.PROBOPASS, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.REGIGIGAS, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.CINCCINO, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.BEARTIC, + SpeciesId.MIENSHAO, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KELDEO, + SpeciesId.CHESNAUGHT, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.SYLVEON, + SpeciesId.CARBINK, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIVERN, + SpeciesId.VOLCANION, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.PASSIMIAN, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.SOLGALEO, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.CORVIKNIGHT, + SpeciesId.DREDNAW, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.PERRSERKER, + SpeciesId.EISCUE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DURALUDON, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", "shadow", ], - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.OVERQWIL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.LOKIX, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SQUAWKABILLY, - Species.NACLSTACK, - Species.GARGANACL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.ESPATHRA, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.SLITHER_WING, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_THORNS, - Species.BAXCALIBUR, - Species.TING_LU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.WALKING_WAKE, - Species.OKIDOGI, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_EXEGGUTOR, - Species.GALAR_MEOWTH, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_ZAPDOS, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_BRAVIARY, - Species.HISUI_AVALUGG, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.LOKIX, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.ESPATHRA, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_THORNS, + SpeciesId.BAXCALIBUR, + SpeciesId.TING_LU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.OKIDOGI, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.PIN_MISSILE]: [ - Species.BEEDRILL, - Species.SANDSLASH, - Species.CLOYSTER, - Species.JOLTEON, - Species.OMASTAR, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.PINECO, - Species.FORRETRESS, - Species.QWILFISH, - Species.HERACROSS, - Species.ZIGZAGOON, - Species.LINOONE, - Species.ROSELIA, - Species.CACNEA, - Species.CACTURNE, - Species.BUDEW, - Species.ROSERADE, - Species.VESPIQUEN, - Species.SKORUPI, - Species.DRAPION, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.MARACTUS, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.MAREANIE, - Species.TOXAPEX, - Species.GOLISOPOD, - Species.TOGEDEMARU, - Species.POIPOLE, - Species.NAGANADEL, - Species.OBSTAGOON, - Species.CURSOLA, - Species.PINCURCHIN, - Species.OVERQWIL, - Species.IRON_THORNS, - Species.ALOLA_SANDSLASH, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_QWILFISH, + [MoveId.PIN_MISSILE]: [ + SpeciesId.BEEDRILL, + SpeciesId.SANDSLASH, + SpeciesId.CLOYSTER, + SpeciesId.JOLTEON, + SpeciesId.OMASTAR, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.QWILFISH, + SpeciesId.HERACROSS, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.ROSELIA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.VESPIQUEN, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.MARACTUS, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.GOLISOPOD, + SpeciesId.TOGEDEMARU, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.OBSTAGOON, + SpeciesId.CURSOLA, + SpeciesId.PINCURCHIN, + SpeciesId.OVERQWIL, + SpeciesId.IRON_THORNS, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_QWILFISH, ], - [Moves.ROAR]: [ - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.BLASTOISE, - Species.RATICATE, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.VULPIX, - Species.NINETALES, - Species.PERSIAN, - Species.GROWLITHE, - Species.ARCANINE, - Species.GOLEM, - Species.ONIX, - Species.RHYHORN, - Species.RHYDON, - Species.KANGASKHAN, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.AERODACTYL, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.CROCONAW, - Species.FERALIGATR, - Species.FLAAFFY, - Species.AMPHAROS, - Species.ESPEON, - Species.UMBREON, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.TEDDIURSA, - Species.URSARING, - Species.SWINUB, - Species.PILOSWINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PHANPY, - Species.DONPHAN, - Species.STANTLER, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.SCEPTILE, - Species.BLAZIKEN, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.LINOONE, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.ALTARIA, - Species.ZANGOOSE, - Species.TROPIUS, - Species.SEALEO, - Species.WALREIN, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.INFERNAPE, - Species.EMPOLEON, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.BUIZEL, - Species.FLOATZEL, - Species.PURUGLY, - Species.STUNKY, - Species.SKUNTANK, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.DRAPION, - Species.RHYPERIOR, - Species.LEAFEON, - Species.GLACEON, - Species.MAMOSWINE, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.GIRATINA, - Species.ARCEUS, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.BEARTIC, - Species.DRUDDIGON, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.KELDEO, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.LITLEO, - Species.PYROAR, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.AVALUGG, - Species.XERNEAS, - Species.VOLCANION, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.GUMSHOOS, - Species.ROCKRUFF, - Species.LYCANROC, - Species.MUDBRAY, - Species.MUDSDALE, - Species.STUFFUL, - Species.BEWEAR, - Species.TYPE_NULL, - Species.SILVALLY, - Species.TURTONATOR, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_BULU, - Species.SOLGALEO, - Species.LUNALA, - Species.YAMPER, - Species.BOLTUND, - Species.ZAMAZENTA, - Species.ZARUDE, - Species.GLASTRIER, - Species.WYRDEER, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.FIDOUGH, - Species.DACHSBUN, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FARIGIRAF, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.IRON_JUGULIS, - Species.ROARING_MOON, - Species.KORAIDON, - Species.WALKING_WAKE, - Species.OKIDOGI, - Species.ARCHALUDON, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.TERAPAGOS, - Species.ALOLA_RATICATE, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_PERSIAN, - Species.ALOLA_GOLEM, + [MoveId.ROAR]: [ + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.BLASTOISE, + SpeciesId.RATICATE, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.PERSIAN, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.GOLEM, + SpeciesId.ONIX, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.KANGASKHAN, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.AERODACTYL, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.STANTLER, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.SCEPTILE, + SpeciesId.BLAZIKEN, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.LINOONE, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.TROPIUS, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.PURUGLY, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.DRAPION, + SpeciesId.RHYPERIOR, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.MAMOSWINE, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.BEARTIC, + SpeciesId.DRUDDIGON, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.KELDEO, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.AVALUGG, + SpeciesId.XERNEAS, + SpeciesId.VOLCANION, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.GUMSHOOS, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_BULU, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ZAMAZENTA, + SpeciesId.ZARUDE, + SpeciesId.GLASTRIER, + SpeciesId.WYRDEER, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FARIGIRAF, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_JUGULIS, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.OKIDOGI, + SpeciesId.ARCHALUDON, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GOLEM, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "single-strike", ], - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.BLOODMOON_URSALUNA, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.FLAMETHROWER]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.GROWLITHE, - Species.ARCANINE, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GRIMER, - Species.MUK, - Species.CUBONE, - Species.MAROWAK, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MAGMAR, - Species.TAUROS, - Species.GYARADOS, - Species.FLAREON, - Species.AERODACTYL, - Species.SNORLAX, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.SENTRET, - Species.FURRET, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.SLOWKING, - Species.DUNSPARCE, - Species.SNUBBULL, - Species.GRANBULL, - Species.SLUGMA, - Species.MAGCARGO, - Species.REMORAID, - Species.OCTILLERY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.MAGBY, - Species.BLISSEY, - Species.ENTEI, - Species.TYRANITAR, - Species.HO_OH, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAWILE, - Species.AGGRON, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.FLYGON, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.SOLROCK, - Species.CASTFORM, - Species.KECLEON, - Species.ABSOL, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.GROUDON, - Species.RAYQUAZA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.STUNKY, - Species.SKUNTANK, - Species.HAPPINY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.ARCEUS, - Species.VICTINI, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.WATCHOG, - Species.PANSEAR, - Species.SIMISEAR, - Species.AUDINO, - Species.DARUMAKA, - Species.DARMANITAN, - Species.ZOROARK, - Species.EELEKTROSS, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.DRUDDIGON, - Species.HEATMOR, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.RESHIRAM, - Species.GENESECT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.LITLEO, - Species.PYROAR, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.GOODRA, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.NOIVERN, - Species.VOLCANION, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.SALANDIT, - Species.SALAZZLE, - Species.SILVALLY, - Species.TURTONATOR, - Species.DRAMPA, - Species.KOMMO_O, - Species.SOLGALEO, - Species.CELESTEELA, - Species.GUZZLORD, - Species.NAGANADEL, - Species.BLACEPHALON, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.CARKOL, - Species.COALOSSAL, - Species.CENTISKORCH, - Species.DRACOZOLT, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ETERNATUS, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.SCOVILLAIN, - Species.DUDUNSPARCE, - Species.SCREAM_TAIL, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.CHI_YU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.WALKING_WAKE, - Species.GOUGING_FIRE, - Species.TERAPAGOS, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_SLOWKING, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_ZOROARK, - Species.HISUI_GOODRA, + [MoveId.FLAMETHROWER]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MAGMAR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.FLAREON, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.SLOWKING, + SpeciesId.DUNSPARCE, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.MAGBY, + SpeciesId.BLISSEY, + SpeciesId.ENTEI, + SpeciesId.TYRANITAR, + SpeciesId.HO_OH, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.FLYGON, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.SOLROCK, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.ABSOL, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.HAPPINY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.WATCHOG, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.AUDINO, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.ZOROARK, + SpeciesId.EELEKTROSS, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.DRUDDIGON, + SpeciesId.HEATMOR, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.RESHIRAM, + SpeciesId.GENESECT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.GOODRA, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.NOIVERN, + SpeciesId.VOLCANION, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.SILVALLY, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.KOMMO_O, + SpeciesId.SOLGALEO, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.NAGANADEL, + SpeciesId.BLACEPHALON, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.CENTISKORCH, + SpeciesId.DRACOZOLT, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ETERNATUS, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.SCOVILLAIN, + SpeciesId.DUDUNSPARCE, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.GOUGING_FIRE, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_GOODRA, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "blaze", ], ], - [Moves.HYDRO_PUMP]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SHELLDER, - Species.CLOYSTER, - Species.KINGLER, - Species.LICKITUNG, - Species.RHYDON, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MAGIKARP, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.SNORLAX, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.CHINCHOU, - Species.LANTURN, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.QWILFISH, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.MANTINE, - Species.KINGDRA, - Species.SUICUNE, - Species.TYRANITAR, - Species.LUGIA, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.LOMBRE, - Species.LUDICOLO, - Species.WINGULL, - Species.PELIPPER, - Species.SURSKIT, - Species.MASQUERAIN, - Species.EXPLOUD, - Species.AGGRON, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.MILOTIC, - Species.CASTFORM, - Species.WALREIN, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.KYOGRE, - Species.RAYQUAZA, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.MUNCHLAX, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.PALKIA, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PANPOUR, - Species.SIMIPOUR, - Species.DRILBUR, - Species.EXCADRILL, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.BASCULIN, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.SWANNA, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.HYDREIGON, - Species.KELDEO, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.GOODRA, - Species.AVALUGG, - Species.VOLCANION, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.DEWPIDER, - Species.ARAQUANID, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.TAPU_FINI, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.CHEWTLE, - Species.DREDNAW, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.GRAPPLOCT, - Species.CURSOLA, - Species.PINCURCHIN, - Species.EISCUE, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.BASCULEGION, - Species.OVERQWIL, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.WIGLETT, - Species.WUGTRIO, - Species.FINIZEN, - Species.PALAFIN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.CLODSIRE, - Species.IRON_BUNDLE, - Species.IRON_JUGULIS, - Species.ROARING_MOON, - Species.WALKING_WAKE, - Species.HYDRAPPLE, + [MoveId.HYDRO_PUMP]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.KINGLER, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MAGIKARP, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.QWILFISH, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.SUICUNE, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.EXPLOUD, + SpeciesId.AGGRON, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.WALREIN, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.KYOGRE, + SpeciesId.RAYQUAZA, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.MUNCHLAX, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.PALKIA, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.BASCULIN, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.SWANNA, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.HYDREIGON, + SpeciesId.KELDEO, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.GOODRA, + SpeciesId.AVALUGG, + SpeciesId.VOLCANION, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.TAPU_FINI, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.GRAPPLOCT, + SpeciesId.CURSOLA, + SpeciesId.PINCURCHIN, + SpeciesId.EISCUE, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.CLODSIRE, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_JUGULIS, + SpeciesId.ROARING_MOON, + SpeciesId.WALKING_WAKE, + SpeciesId.HYDRAPPLE, [ - Species.ROTOM, + SpeciesId.ROTOM, "wash", ], - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.HISUI_QWILFISH, - Species.HISUI_SAMUROTT, - Species.HISUI_GOODRA, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_GOODRA, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "aqua", ], - Species.PALDEA_WOOPER, + SpeciesId.PALDEA_WOOPER, ], - [Moves.SURF]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PIKACHU, - Species.RAICHU, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.KRABBY, - Species.KINGLER, - Species.LICKITUNG, - Species.RHYDON, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.SNORLAX, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.QWILFISH, - Species.SNEASEL, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.MANTINE, - Species.KINGDRA, - Species.MILTANK, - Species.SUICUNE, - Species.TYRANITAR, - Species.LUGIA, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.WINGULL, - Species.PELIPPER, - Species.SURSKIT, - Species.MASQUERAIN, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.AGGRON, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.ZANGOOSE, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.FEEBAS, - Species.MILOTIC, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.RAYQUAZA, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIBAREL, - Species.RAMPARDOS, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.PALKIA, - Species.PHIONE, - Species.MANAPHY, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.HERDIER, - Species.STOUTLAND, - Species.PANPOUR, - Species.SIMIPOUR, - Species.AUDINO, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.BASCULIN, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.DUCKLETT, - Species.SWANNA, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.STUNFISK, - Species.DRUDDIGON, - Species.BOUFFALANT, - Species.HYDREIGON, - Species.KELDEO, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.SWIRLIX, - Species.SLURPUFF, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.GOODRA, - Species.BERGMITE, - Species.AVALUGG, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.DEWPIDER, - Species.ARAQUANID, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SILVALLY, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.TAPU_FINI, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.CHEWTLE, - Species.DREDNAW, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.GRAPPLOCT, - Species.OBSTAGOON, - Species.CURSOLA, - Species.PINCURCHIN, - Species.EISCUE, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.BASCULEGION, - Species.OVERQWIL, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.WIGLETT, - Species.WUGTRIO, - Species.FINIZEN, - Species.PALAFIN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.CLODSIRE, - Species.WALKING_WAKE, - Species.TERAPAGOS, - Species.ALOLA_RAICHU, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_STUNFISK, - Species.HISUI_QWILFISH, - Species.HISUI_SAMUROTT, - Species.HISUI_GOODRA, + [MoveId.SURF]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.QWILFISH, + SpeciesId.SNEASEL, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.MILTANK, + SpeciesId.SUICUNE, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.AGGRON, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.ZANGOOSE, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.RAYQUAZA, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIBAREL, + SpeciesId.RAMPARDOS, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.PALKIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.AUDINO, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.BASCULIN, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.STUNFISK, + SpeciesId.DRUDDIGON, + SpeciesId.BOUFFALANT, + SpeciesId.HYDREIGON, + SpeciesId.KELDEO, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.GOODRA, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SILVALLY, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.TAPU_FINI, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.GRAPPLOCT, + SpeciesId.OBSTAGOON, + SpeciesId.CURSOLA, + SpeciesId.PINCURCHIN, + SpeciesId.EISCUE, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.CLODSIRE, + SpeciesId.WALKING_WAKE, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RAICHU, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_GOODRA, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "combat", "aqua", ], - Species.PALDEA_WOOPER, + SpeciesId.PALDEA_WOOPER, ], - [Moves.ICE_BEAM]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.RATTATA, - Species.RATICATE, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.KRABBY, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.JYNX, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.SNORLAX, - Species.ARTICUNO, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.CHINCHOU, - Species.LANTURN, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.DUNSPARCE, - Species.QWILFISH, - Species.SNEASEL, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.KINGDRA, - Species.PORYGON2, - Species.SMOOCHUM, - Species.MILTANK, - Species.BLISSEY, - Species.SUICUNE, - Species.TYRANITAR, - Species.LUGIA, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.WINGULL, - Species.PELIPPER, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.AZURILL, - Species.SKITTY, - Species.DELCATTY, - Species.MAWILE, - Species.AGGRON, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.LUNATONE, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.DUSKULL, - Species.DUSCLOPS, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.REGICE, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.RAYQUAZA, - Species.DEOXYS, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIDOOF, - Species.BIBAREL, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.BUNEARY, - Species.LOPUNNY, - Species.MUNCHLAX, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.GLACEON, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.DUSKNOIR, - Species.FROSLASS, - Species.MESPRIT, - Species.DIALGA, - Species.PALKIA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PANPOUR, - Species.SIMIPOUR, - Species.AUDINO, - Species.BASCULIN, - Species.SIGILYPH, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.GOLETT, - Species.GOLURK, - Species.KYUREM, - Species.GENESECT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BINACLE, - Species.BARBARACLE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.AMAURA, - Species.AURORUS, - Species.SLIGGOO, - Species.GOODRA, - Species.BERGMITE, - Species.AVALUGG, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.CRABOMINABLE, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.DEWPIDER, - Species.ARAQUANID, - Species.GOLISOPOD, - Species.SILVALLY, - Species.BRUXISH, - Species.DRAMPA, - Species.TAPU_FINI, - Species.LUNALA, - Species.PHEROMOSA, - Species.MAGEARNA, - Species.MELMETAL, - Species.INTELEON, - Species.DREDNAW, - Species.CRAMORANT, - Species.BARRASKEWDA, - Species.OBSTAGOON, - Species.CURSOLA, - Species.MR_RIME, - Species.FROSMOTH, - Species.EISCUE, - Species.ARCTOZOLT, - Species.ARCTOVISH, - Species.GLASTRIER, - Species.BASCULEGION, - Species.OVERQWIL, - Species.WIGLETT, - Species.WUGTRIO, - Species.FINIZEN, - Species.PALAFIN, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DUDUNSPARCE, - Species.SCREAM_TAIL, - Species.IRON_BUNDLE, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.TERAPAGOS, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MAROWAK, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, + [MoveId.ICE_BEAM]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.JYNX, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.DUNSPARCE, + SpeciesId.QWILFISH, + SpeciesId.SNEASEL, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.PORYGON2, + SpeciesId.SMOOCHUM, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.SUICUNE, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.AZURILL, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.LUNATONE, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.REGICE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.RAYQUAZA, + SpeciesId.DEOXYS, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MUNCHLAX, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.GLACEON, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.MESPRIT, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.AUDINO, + SpeciesId.BASCULIN, + SpeciesId.SIGILYPH, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.KYUREM, + SpeciesId.GENESECT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.CRABOMINABLE, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.GOLISOPOD, + SpeciesId.SILVALLY, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.TAPU_FINI, + SpeciesId.LUNALA, + SpeciesId.PHEROMOSA, + SpeciesId.MAGEARNA, + SpeciesId.MELMETAL, + SpeciesId.INTELEON, + SpeciesId.DREDNAW, + SpeciesId.CRAMORANT, + SpeciesId.BARRASKEWDA, + SpeciesId.OBSTAGOON, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.FROSMOTH, + SpeciesId.EISCUE, + SpeciesId.ARCTOZOLT, + SpeciesId.ARCTOVISH, + SpeciesId.GLASTRIER, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DUDUNSPARCE, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_QWILFISH, - Species.HISUI_SAMUROTT, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, ], - [Moves.BLIZZARD]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.RATTATA, - Species.RATICATE, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.KRABBY, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.JYNX, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.SNORLAX, - Species.ARTICUNO, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.CHINCHOU, - Species.LANTURN, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.DUNSPARCE, - Species.QWILFISH, - Species.SNEASEL, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.KINGDRA, - Species.PORYGON2, - Species.SMOOCHUM, - Species.MILTANK, - Species.BLISSEY, - Species.SUICUNE, - Species.TYRANITAR, - Species.LUGIA, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.WINGULL, - Species.PELIPPER, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.AZURILL, - Species.SKITTY, - Species.DELCATTY, - Species.AGGRON, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.ZANGOOSE, - Species.LUNATONE, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.DUSKULL, - Species.DUSCLOPS, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.REGICE, - Species.KYOGRE, - Species.RAYQUAZA, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIDOOF, - Species.BIBAREL, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.LOPUNNY, - Species.MUNCHLAX, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.GLACEON, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.DUSKNOIR, - Species.FROSLASS, - Species.MESPRIT, - Species.DIALGA, - Species.PALKIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PANPOUR, - Species.SIMIPOUR, - Species.AUDINO, - Species.BASCULIN, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.KYUREM, - Species.GENESECT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BINACLE, - Species.BARBARACLE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.AMAURA, - Species.AURORUS, - Species.SLIGGOO, - Species.GOODRA, - Species.BERGMITE, - Species.AVALUGG, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.CRABOMINABLE, - Species.MAREANIE, - Species.TOXAPEX, - Species.DEWPIDER, - Species.ARAQUANID, - Species.GOLISOPOD, - Species.BRUXISH, - Species.DRAMPA, - Species.TAPU_FINI, - Species.LUNALA, - Species.PHEROMOSA, - Species.INTELEON, - Species.DREDNAW, - Species.CRAMORANT, - Species.BARRASKEWDA, - Species.OBSTAGOON, - Species.CURSOLA, - Species.MR_RIME, - Species.FROSMOTH, - Species.EISCUE, - Species.ARCTOZOLT, - Species.ARCTOVISH, - Species.GLASTRIER, - Species.BASCULEGION, - Species.OVERQWIL, - Species.WIGLETT, - Species.WUGTRIO, - Species.FINIZEN, - Species.PALAFIN, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DUDUNSPARCE, - Species.SCREAM_TAIL, - Species.IRON_BUNDLE, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.CHIEN_PAO, + [MoveId.BLIZZARD]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.JYNX, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.DUNSPARCE, + SpeciesId.QWILFISH, + SpeciesId.SNEASEL, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.PORYGON2, + SpeciesId.SMOOCHUM, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.SUICUNE, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.AZURILL, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.AGGRON, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.ZANGOOSE, + SpeciesId.LUNATONE, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.REGICE, + SpeciesId.KYOGRE, + SpeciesId.RAYQUAZA, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.LOPUNNY, + SpeciesId.MUNCHLAX, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.GLACEON, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.MESPRIT, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.AUDINO, + SpeciesId.BASCULIN, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.KYUREM, + SpeciesId.GENESECT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.CRABOMINABLE, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.GOLISOPOD, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.TAPU_FINI, + SpeciesId.LUNALA, + SpeciesId.PHEROMOSA, + SpeciesId.INTELEON, + SpeciesId.DREDNAW, + SpeciesId.CRAMORANT, + SpeciesId.BARRASKEWDA, + SpeciesId.OBSTAGOON, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.FROSMOTH, + SpeciesId.EISCUE, + SpeciesId.ARCTOZOLT, + SpeciesId.ARCTOVISH, + SpeciesId.GLASTRIER, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DUDUNSPARCE, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.CHIEN_PAO, [ - Species.ROTOM, + SpeciesId.ROTOM, "frost", ], - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MAROWAK, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_QWILFISH, - Species.HISUI_SAMUROTT, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, ], - [Moves.PSYBEAM]: [ - Species.BUTTERFREE, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.PARAS, - Species.VENONAT, - Species.VENOMOTH, - Species.PSYDUCK, - Species.GOLDUCK, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGCUTE, - Species.KOFFING, - Species.WEEZING, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.PORYGON, - Species.MEWTWO, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.SPINARAK, - Species.CHINCHOU, - Species.CLEFFA, - Species.ESPEON, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.REMORAID, - Species.OCTILLERY, - Species.MANTINE, - Species.PORYGON2, - Species.STANTLER, - Species.DUSTOX, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.BALTOY, - Species.CLAYDOL, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.CHIMECHO, - Species.WORMADAM, - Species.MOTHIM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.BRONZONG, - Species.MIME_JR, - Species.SPIRITOMB, - Species.FINNEON, - Species.LUMINEON, - Species.PORYGON_Z, - Species.GALLADE, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.MUNNA, - Species.MUSHARNA, - Species.SIGILYPH, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.MELOETTA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.VIVILLON, - Species.ESPURR, - Species.MEOWSTIC, - Species.INKAY, - Species.MALAMAR, - Species.HOOPA, - Species.ORANGURU, - Species.TAPU_LELE, - Species.MAGEARNA, - Species.ORBEETLE, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.MR_RIME, - Species.INDEEDEE, - Species.CALYREX, - Species.WYRDEER, - Species.ARMAROUGE, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.FARIGIRAF, - Species.SCREAM_TAIL, - Species.FLUTTER_MANE, - Species.IRON_VALIANT, - Species.MUNKIDORI, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_SLOWKING, - Species.HISUI_BRAVIARY, + [MoveId.PSYBEAM]: [ + SpeciesId.BUTTERFREE, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.PARAS, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGCUTE, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.PORYGON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.SPINARAK, + SpeciesId.CHINCHOU, + SpeciesId.CLEFFA, + SpeciesId.ESPEON, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.MANTINE, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.DUSTOX, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.CHIMECHO, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.SPIRITOMB, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.SIGILYPH, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.MELOETTA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.VIVILLON, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.HOOPA, + SpeciesId.ORANGURU, + SpeciesId.TAPU_LELE, + SpeciesId.MAGEARNA, + SpeciesId.ORBEETLE, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.MR_RIME, + SpeciesId.INDEEDEE, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.ARMAROUGE, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.FARIGIRAF, + SpeciesId.SCREAM_TAIL, + SpeciesId.FLUTTER_MANE, + SpeciesId.IRON_VALIANT, + SpeciesId.MUNKIDORI, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.HYPER_BEAM]: [ - Species.VENUSAUR, - Species.CHARIZARD, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEOT, - Species.RATICATE, - Species.FEAROW, - Species.ARBOK, - Species.RAICHU, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFABLE, - Species.NINETALES, - Species.WIGGLYTUFF, - Species.GOLBAT, - Species.VILEPLUME, - Species.PARASECT, - Species.VENOMOTH, - Species.DUGTRIO, - Species.PERSIAN, - Species.GOLDUCK, - Species.PRIMEAPE, - Species.ARCANINE, - Species.POLIWRATH, - Species.ALAKAZAM, - Species.MACHAMP, - Species.VICTREEBEL, - Species.TENTACRUEL, - Species.GOLEM, - Species.RAPIDASH, - Species.SLOWBRO, - Species.MAGNETON, - Species.DODRIO, - Species.DEWGONG, - Species.MUK, - Species.CLOYSTER, - Species.GENGAR, - Species.HYPNO, - Species.KINGLER, - Species.ELECTRODE, - Species.EXEGGUTOR, - Species.MAROWAK, - Species.LICKITUNG, - Species.WEEZING, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.SEADRA, - Species.SEAKING, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMASTAR, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.MEGANIUM, - Species.TYPHLOSION, - Species.FERALIGATR, - Species.FURRET, - Species.NOCTOWL, - Species.LEDIAN, - Species.ARIADOS, - Species.CROBAT, - Species.LANTURN, - Species.TOGETIC, - Species.XATU, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.JUMPLUFF, - Species.SUNFLORA, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.STEELIX, - Species.GRANBULL, - Species.SCIZOR, - Species.HERACROSS, - Species.URSARING, - Species.MAGCARGO, - Species.PILOSWINE, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.HOUNDOOM, - Species.KINGDRA, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.SCEPTILE, - Species.BLAZIKEN, - Species.SWAMPERT, - Species.MIGHTYENA, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LUDICOLO, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SWELLOW, - Species.PELIPPER, - Species.KIRLIA, - Species.GARDEVOIR, - Species.MASQUERAIN, - Species.BRELOOM, - Species.SLAKING, - Species.NINJASK, - Species.SHEDINJA, - Species.EXPLOUD, - Species.HARIYAMA, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.MEDICHAM, - Species.MANECTRIC, - Species.SWALOT, - Species.SHARPEDO, - Species.WAILORD, - Species.CAMERUPT, - Species.TORKOAL, - Species.GRUMPIG, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACTURNE, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.WHISCASH, - Species.CRAWDAUNT, - Species.CLAYDOL, - Species.CRADILY, - Species.ARMALDO, - Species.MILOTIC, - Species.BANETTE, - Species.DUSCLOPS, - Species.TROPIUS, - Species.ABSOL, - Species.GLALIE, - Species.WALREIN, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TORTERRA, - Species.INFERNAPE, - Species.EMPOLEON, - Species.STARAPTOR, - Species.BIBAREL, - Species.KRICKETUNE, - Species.LUXRAY, - Species.ROSERADE, - Species.RAMPARDOS, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.FLOATZEL, - Species.CHERRIM, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFBLIM, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.PURUGLY, - Species.SKUNTANK, - Species.BRONZONG, - Species.SPIRITOMB, - Species.GARCHOMP, - Species.LUCARIO, - Species.HIPPOWDON, - Species.DRAPION, - Species.TOXICROAK, - Species.CARNIVINE, - Species.LUMINEON, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SERPERIOR, - Species.EMBOAR, - Species.SAMUROTT, - Species.WATCHOG, - Species.STOUTLAND, - Species.LIEPARD, - Species.SIMISAGE, - Species.SIMISEAR, - Species.SIMIPOUR, - Species.MUSHARNA, - Species.UNFEZANT, - Species.ZEBSTRIKA, - Species.GIGALITH, - Species.SWOOBAT, - Species.EXCADRILL, - Species.AUDINO, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.LEAVANNY, - Species.SCOLIPEDE, - Species.WHIMSICOTT, - Species.LILLIGANT, - Species.KROOKODILE, - Species.DARMANITAN, - Species.CRUSTLE, - Species.SCRAFTY, - Species.SIGILYPH, - Species.COFAGRIGUS, - Species.CARRACOSTA, - Species.ARCHEOPS, - Species.GARBODOR, - Species.ZOROARK, - Species.CINCCINO, - Species.GOTHITELLE, - Species.REUNICLUS, - Species.SWANNA, - Species.VANILLUXE, - Species.SAWSBUCK, - Species.ESCAVALIER, - Species.AMOONGUSS, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.GALVANTULA, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTROSS, - Species.BEHEEYEM, - Species.CHANDELURE, - Species.HAXORUS, - Species.BEARTIC, - Species.CRYOGONAL, - Species.ACCELGOR, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLURK, - Species.BISHARP, - Species.BRAVIARY, - Species.MANDIBUZZ, - Species.HYDREIGON, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESNAUGHT, - Species.DELPHOX, - Species.GRENINJA, - Species.DIGGERSBY, - Species.TALONFLAME, - Species.VIVILLON, - Species.PYROAR, - Species.FLORGES, - Species.GOGOAT, - Species.PANGORO, - Species.MEOWSTIC, - Species.AEGISLASH, - Species.AROMATISSE, - Species.SLURPUFF, - Species.MALAMAR, - Species.BARBARACLE, - Species.DRAGALGE, - Species.CLAWITZER, - Species.HELIOLISK, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOODRA, - Species.KLEFKI, - Species.TREVENANT, - Species.GOURGEIST, - Species.AVALUGG, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.DECIDUEYE, - Species.INCINEROAR, - Species.PRIMARINA, - Species.GUMSHOOS, - Species.VIKAVOLT, - Species.CRABOMINABLE, - Species.RIBOMBEE, - Species.TOXAPEX, - Species.MUDSDALE, - Species.LURANTIS, - Species.SHIINOTIC, - Species.SALAZZLE, - Species.BEWEAR, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.GOLISOPOD, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.NAGANADEL, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELMETAL, - Species.RILLABOOM, - Species.CINDERACE, - Species.INTELEON, - Species.GREEDENT, - Species.CORVIKNIGHT, - Species.ORBEETLE, - Species.THIEVUL, - Species.ELDEGOSS, - Species.DUBWOOL, - Species.DREDNAW, - Species.BOLTUND, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SANDACONDA, - Species.CRAMORANT, - Species.BARRASKEWDA, - Species.TOXTRICITY, - Species.CENTISKORCH, - Species.GRAPPLOCT, - Species.POLTEAGEIST, - Species.HATTERENE, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.MR_RIME, - Species.RUNERIGUS, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.MEOWSCARADA, - Species.SKELEDIRGE, - Species.QUAQUAVAL, - Species.OINKOLOGNE, - Species.PAWMOT, - Species.MAUSHOLD, - Species.DACHSBUN, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLSTACK, - Species.GARGANACL, - Species.BELLIBOLT, - Species.KILOWATTREL, - Species.MABOSSTIFF, - Species.BRAMBLEGHAST, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.SCOVILLAIN, - Species.RABSCA, - Species.ESPATHRA, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.PALAFIN, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMORA, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.BAXCALIBUR, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.SINISTCHA, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.ARCHALUDON, - Species.IRON_CROWN, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSLASH, - Species.ALOLA_NINETALES, - Species.ALOLA_DUGTRIO, - Species.ALOLA_PERSIAN, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_LINOONE, - Species.GALAR_DARMANITAN, - Species.HISUI_ARCANINE, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.BLOODMOON_URSALUNA, + [MoveId.HYPER_BEAM]: [ + SpeciesId.VENUSAUR, + SpeciesId.CHARIZARD, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEOT, + SpeciesId.RATICATE, + SpeciesId.FEAROW, + SpeciesId.ARBOK, + SpeciesId.RAICHU, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFABLE, + SpeciesId.NINETALES, + SpeciesId.WIGGLYTUFF, + SpeciesId.GOLBAT, + SpeciesId.VILEPLUME, + SpeciesId.PARASECT, + SpeciesId.VENOMOTH, + SpeciesId.DUGTRIO, + SpeciesId.PERSIAN, + SpeciesId.GOLDUCK, + SpeciesId.PRIMEAPE, + SpeciesId.ARCANINE, + SpeciesId.POLIWRATH, + SpeciesId.ALAKAZAM, + SpeciesId.MACHAMP, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACRUEL, + SpeciesId.GOLEM, + SpeciesId.RAPIDASH, + SpeciesId.SLOWBRO, + SpeciesId.MAGNETON, + SpeciesId.DODRIO, + SpeciesId.DEWGONG, + SpeciesId.MUK, + SpeciesId.CLOYSTER, + SpeciesId.GENGAR, + SpeciesId.HYPNO, + SpeciesId.KINGLER, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGUTOR, + SpeciesId.MAROWAK, + SpeciesId.LICKITUNG, + SpeciesId.WEEZING, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.SEADRA, + SpeciesId.SEAKING, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMASTAR, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.MEGANIUM, + SpeciesId.TYPHLOSION, + SpeciesId.FERALIGATR, + SpeciesId.FURRET, + SpeciesId.NOCTOWL, + SpeciesId.LEDIAN, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.LANTURN, + SpeciesId.TOGETIC, + SpeciesId.XATU, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.JUMPLUFF, + SpeciesId.SUNFLORA, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.STEELIX, + SpeciesId.GRANBULL, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.URSARING, + SpeciesId.MAGCARGO, + SpeciesId.PILOSWINE, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.SCEPTILE, + SpeciesId.BLAZIKEN, + SpeciesId.SWAMPERT, + SpeciesId.MIGHTYENA, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LUDICOLO, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SWELLOW, + SpeciesId.PELIPPER, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.MASQUERAIN, + SpeciesId.BRELOOM, + SpeciesId.SLAKING, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.EXPLOUD, + SpeciesId.HARIYAMA, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.MEDICHAM, + SpeciesId.MANECTRIC, + SpeciesId.SWALOT, + SpeciesId.SHARPEDO, + SpeciesId.WAILORD, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.GRUMPIG, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACTURNE, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.WHISCASH, + SpeciesId.CRAWDAUNT, + SpeciesId.CLAYDOL, + SpeciesId.CRADILY, + SpeciesId.ARMALDO, + SpeciesId.MILOTIC, + SpeciesId.BANETTE, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.ABSOL, + SpeciesId.GLALIE, + SpeciesId.WALREIN, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TORTERRA, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.STARAPTOR, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.LUXRAY, + SpeciesId.ROSERADE, + SpeciesId.RAMPARDOS, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.FLOATZEL, + SpeciesId.CHERRIM, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFBLIM, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.PURUGLY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZONG, + SpeciesId.SPIRITOMB, + SpeciesId.GARCHOMP, + SpeciesId.LUCARIO, + SpeciesId.HIPPOWDON, + SpeciesId.DRAPION, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.LUMINEON, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SERPERIOR, + SpeciesId.EMBOAR, + SpeciesId.SAMUROTT, + SpeciesId.WATCHOG, + SpeciesId.STOUTLAND, + SpeciesId.LIEPARD, + SpeciesId.SIMISAGE, + SpeciesId.SIMISEAR, + SpeciesId.SIMIPOUR, + SpeciesId.MUSHARNA, + SpeciesId.UNFEZANT, + SpeciesId.ZEBSTRIKA, + SpeciesId.GIGALITH, + SpeciesId.SWOOBAT, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.LEAVANNY, + SpeciesId.SCOLIPEDE, + SpeciesId.WHIMSICOTT, + SpeciesId.LILLIGANT, + SpeciesId.KROOKODILE, + SpeciesId.DARMANITAN, + SpeciesId.CRUSTLE, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.COFAGRIGUS, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEOPS, + SpeciesId.GARBODOR, + SpeciesId.ZOROARK, + SpeciesId.CINCCINO, + SpeciesId.GOTHITELLE, + SpeciesId.REUNICLUS, + SpeciesId.SWANNA, + SpeciesId.VANILLUXE, + SpeciesId.SAWSBUCK, + SpeciesId.ESCAVALIER, + SpeciesId.AMOONGUSS, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.GALVANTULA, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTROSS, + SpeciesId.BEHEEYEM, + SpeciesId.CHANDELURE, + SpeciesId.HAXORUS, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.ACCELGOR, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLURK, + SpeciesId.BISHARP, + SpeciesId.BRAVIARY, + SpeciesId.MANDIBUZZ, + SpeciesId.HYDREIGON, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESNAUGHT, + SpeciesId.DELPHOX, + SpeciesId.GRENINJA, + SpeciesId.DIGGERSBY, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.PYROAR, + SpeciesId.FLORGES, + SpeciesId.GOGOAT, + SpeciesId.PANGORO, + SpeciesId.MEOWSTIC, + SpeciesId.AEGISLASH, + SpeciesId.AROMATISSE, + SpeciesId.SLURPUFF, + SpeciesId.MALAMAR, + SpeciesId.BARBARACLE, + SpeciesId.DRAGALGE, + SpeciesId.CLAWITZER, + SpeciesId.HELIOLISK, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.TREVENANT, + SpeciesId.GOURGEIST, + SpeciesId.AVALUGG, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.DECIDUEYE, + SpeciesId.INCINEROAR, + SpeciesId.PRIMARINA, + SpeciesId.GUMSHOOS, + SpeciesId.VIKAVOLT, + SpeciesId.CRABOMINABLE, + SpeciesId.RIBOMBEE, + SpeciesId.TOXAPEX, + SpeciesId.MUDSDALE, + SpeciesId.LURANTIS, + SpeciesId.SHIINOTIC, + SpeciesId.SALAZZLE, + SpeciesId.BEWEAR, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.GOLISOPOD, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.NAGANADEL, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELMETAL, + SpeciesId.RILLABOOM, + SpeciesId.CINDERACE, + SpeciesId.INTELEON, + SpeciesId.GREEDENT, + SpeciesId.CORVIKNIGHT, + SpeciesId.ORBEETLE, + SpeciesId.THIEVUL, + SpeciesId.ELDEGOSS, + SpeciesId.DUBWOOL, + SpeciesId.DREDNAW, + SpeciesId.BOLTUND, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXTRICITY, + SpeciesId.CENTISKORCH, + SpeciesId.GRAPPLOCT, + SpeciesId.POLTEAGEIST, + SpeciesId.HATTERENE, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.MEOWSCARADA, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAQUAVAL, + SpeciesId.OINKOLOGNE, + SpeciesId.PAWMOT, + SpeciesId.MAUSHOLD, + SpeciesId.DACHSBUN, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.BELLIBOLT, + SpeciesId.KILOWATTREL, + SpeciesId.MABOSSTIFF, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.SCOVILLAIN, + SpeciesId.RABSCA, + SpeciesId.ESPATHRA, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.PALAFIN, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMORA, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.BAXCALIBUR, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.ARCHALUDON, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.BLOODMOON_URSALUNA, [ - Species.BASCULIN, + SpeciesId.BASCULIN, "blue-striped", "red-striped", ] ], - [Moves.LOW_KICK]: [ - Species.SANDSHREW, - Species.SANDSLASH, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.PONYTA, - Species.RAPIDASH, - Species.DODUO, - Species.DODRIO, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.KANGASKHAN, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.KABUTOPS, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.FLAAFFY, - Species.AMPHAROS, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.GIRAFARIG, - Species.SNUBBULL, - Species.GRANBULL, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.TYROGUE, - Species.HITMONTOP, - Species.ELEKID, - Species.MAGBY, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.BRELOOM, - Species.VIGOROTH, - Species.SLAKING, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SABLEYE, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.GRUMPIG, - Species.SPINDA, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.ARMALDO, - Species.KECLEON, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.BUIZEL, - Species.FLOATZEL, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.BONSLY, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.ABOMASNOW, - Species.WEAVILE, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.GALLADE, - Species.PIGNITE, - Species.EMBOAR, - Species.PATRAT, - Species.WATCHOG, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.LEAVANNY, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.CARRACOSTA, - Species.ZOROARK, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.HEATMOR, - Species.KELDEO, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROGADIER, - Species.GRENINJA, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.BARBARACLE, - Species.HELIOLISK, - Species.HAWLUCHA, - Species.DECIDUEYE, - Species.INCINEROAR, - Species.MUDBRAY, - Species.MUDSDALE, - Species.BEWEAR, - Species.TSAREENA, - Species.PASSIMIAN, - Species.KOMALA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.PHEROMOSA, - Species.MARSHADOW, - Species.ZERAORA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.STONJOURNER, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.URSALUNA, - Species.SNEASLER, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.SPIDOPS, - Species.LOKIX, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.GRAFAIAI, - Species.ESPATHRA, - Species.FLAMIGO, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.KINGAMBIT, - Species.SLITHER_WING, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.GHOLDENGO, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.WALKING_WAKE, - Species.OKIDOGI, - Species.OGERPON, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_ZAPDOS, - Species.HISUI_TYPHLOSION, - Species.HISUI_SNEASEL, - Species.HISUI_LILLIGANT, - Species.HISUI_ZOROARK, - Species.HISUI_DECIDUEYE, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.LOW_KICK]: [ + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.KANGASKHAN, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.KABUTOPS, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.GIRAFARIG, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.BRELOOM, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.ARMALDO, + SpeciesId.KECLEON, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.BONSLY, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.GALLADE, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.LEAVANNY, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.CARRACOSTA, + SpeciesId.ZOROARK, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.HEATMOR, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.BARBARACLE, + SpeciesId.HELIOLISK, + SpeciesId.HAWLUCHA, + SpeciesId.DECIDUEYE, + SpeciesId.INCINEROAR, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.BEWEAR, + SpeciesId.TSAREENA, + SpeciesId.PASSIMIAN, + SpeciesId.KOMALA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.PHEROMOSA, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.STONJOURNER, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.SPIDOPS, + SpeciesId.LOKIX, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.GRAFAIAI, + SpeciesId.ESPATHRA, + SpeciesId.FLAMIGO, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.KINGAMBIT, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.GHOLDENGO, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.OKIDOGI, + SpeciesId.OGERPON, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.COUNTER]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.RATTATA, - Species.RATICATE, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PARAS, - Species.PARASECT, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.SNORLAX, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.LEDYBA, - Species.LEDIAN, - Species.TOGEPI, - Species.TOGETIC, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.SUDOWOODO, - Species.WOOPER, - Species.QUAGSIRE, - Species.WOBBUFFET, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.SNUBBULL, - Species.GRANBULL, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.DELIBIRD, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PHANPY, - Species.DONPHAN, - Species.MILTANK, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.TAILLOW, - Species.SWELLOW, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GULPIN, - Species.SWALOT, - Species.GRUMPIG, - Species.SPINDA, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.KECLEON, - Species.DUSKULL, - Species.DUSCLOPS, - Species.ABSOL, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.GROUDON, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.SHIELDON, - Species.BASTIODON, - Species.RIOLU, - Species.LUCARIO, - Species.SHELLOS, - Species.GASTRODON, - Species.CROAGUNK, - Species.TOXICROAK, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SAWK, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ZORUA, - Species.ZOROARK, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.ACCELGOR, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.LYCANROC, - Species.MUDBRAY, - Species.MUDSDALE, - Species.PASSIMIAN, - Species.PYUKUMUKU, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.BUZZWOLE, - Species.MARSHADOW, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SKWOVET, - Species.GREEDENT, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.FALINKS, - Species.KUBFU, - Species.URSHIFU, - Species.QUAQUAVAL, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.FINIZEN, - Species.PALAFIN, - Species.TATSUGIRI, - Species.KORAIDON, - Species.OKIDOGI, - Species.OGERPON, - Species.IRON_BOULDER, + [MoveId.COUNTER]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.SNORLAX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.SUDOWOODO, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.WOBBUFFET, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.DELIBIRD, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.MILTANK, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.KECLEON, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.ABSOL, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SAWK, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.ACCELGOR, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.LYCANROC, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.PASSIMIAN, + SpeciesId.PYUKUMUKU, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.BUZZWOLE, + SpeciesId.MARSHADOW, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.FALINKS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.QUAQUAVAL, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.TATSUGIRI, + SpeciesId.KORAIDON, + SpeciesId.OKIDOGI, + SpeciesId.OGERPON, + SpeciesId.IRON_BOULDER, ], - [Moves.STRENGTH]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.RATICATE, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.GENGAR, - Species.ONIX, - Species.KRABBY, - Species.KINGLER, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.AERODACTYL, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.BAYLEEF, - Species.MEGANIUM, - Species.QUILAVA, - Species.TYPHLOSION, - Species.CROCONAW, - Species.FERALIGATR, - Species.FURRET, - Species.LEDIAN, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.QUAGSIRE, - Species.SLOWKING, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.HOUNDOOM, - Species.PHANPY, - Species.DONPHAN, - Species.TYROGUE, - Species.HITMONTOP, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.MIGHTYENA, - Species.LINOONE, - Species.LOMBRE, - Species.LUDICOLO, - Species.NUZLEAF, - Species.SHIFTRY, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.DELCATTY, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.GULPIN, - Species.SWALOT, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACTURNE, - Species.ZANGOOSE, - Species.SEVIPER, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.CLAYDOL, - Species.CRADILY, - Species.ARMALDO, - Species.KECLEON, - Species.DUSCLOPS, - Species.TROPIUS, - Species.ABSOL, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.BUIZEL, - Species.FLOATZEL, - Species.GASTRODON, - Species.AMBIPOM, - Species.LOPUNNY, - Species.SKUNTANK, - Species.BRONZONG, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.DARKRAI, - Species.ARCEUS, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.SAMUROTT, - Species.WATCHOG, - Species.HERDIER, - Species.STOUTLAND, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DRILBUR, - Species.EXCADRILL, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SCOLIPEDE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.REUNICLUS, - Species.FERROTHORN, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.LITLEO, - Species.PYROAR, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.BINACLE, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.HAWLUCHA, - Species.GOODRA, - Species.PHANTUMP, - Species.TREVENANT, - Species.BERGMITE, - Species.AVALUGG, - Species.ZYGARDE, - Species.VOLCANION, - Species.MUDBRAY, - Species.MUDSDALE, - Species.STUFFUL, - Species.BEWEAR, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.OBSTAGOON, - Species.CUFANT, - Species.COPPERAJAH, - Species.URSALUNA, - Species.ANNIHILAPE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_SAMUROTT, - Species.HISUI_BRAVIARY, - Species.HISUI_AVALUGG, - Species.PALDEA_TAUROS, - Species.BLOODMOON_URSALUNA, + [MoveId.STRENGTH]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.RATICATE, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.FURRET, + SpeciesId.LEDIAN, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.HOUNDOOM, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.MIGHTYENA, + SpeciesId.LINOONE, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.DELCATTY, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.CLAYDOL, + SpeciesId.CRADILY, + SpeciesId.ARMALDO, + SpeciesId.KECLEON, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.ABSOL, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.LOPUNNY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZONG, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.SAMUROTT, + SpeciesId.WATCHOG, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SCOLIPEDE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.REUNICLUS, + SpeciesId.FERROTHORN, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.HAWLUCHA, + SpeciesId.GOODRA, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.ZYGARDE, + SpeciesId.VOLCANION, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.OBSTAGOON, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.URSALUNA, + SpeciesId.ANNIHILAPE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_TAUROS, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.SOLAR_BEAM]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARIZARD, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.ARCANINE, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.PONYTA, - Species.RAPIDASH, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.LICKITUNG, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.MR_MIME, - Species.TAUROS, - Species.LAPRAS, - Species.PORYGON, - Species.SNORLAX, - Species.MOLTRES, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.TYPHLOSION, - Species.SENTRET, - Species.FURRET, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.SNUBBULL, - Species.GRANBULL, - Species.MAGCARGO, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PORYGON2, - Species.STANTLER, - Species.MILTANK, - Species.BLISSEY, - Species.ENTEI, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.BLAZIKEN, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.SKITTY, - Species.DELCATTY, - Species.MAWILE, - Species.AGGRON, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CAMERUPT, - Species.TORKOAL, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.CASTFORM, - Species.KECLEON, - Species.TROPIUS, - Species.LATIAS, - Species.LATIOS, - Species.GROUDON, - Species.RAYQUAZA, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.INFERNAPE, - Species.BUDEW, - Species.ROSERADE, - Species.WORMADAM, - Species.MOTHIM, - Species.CHERUBI, - Species.CHERRIM, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.HAPPINY, - Species.MUNCHLAX, - Species.CARNIVINE, - Species.SNOVER, - Species.ABOMASNOW, - Species.LICKILICKY, - Species.TANGROWTH, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.PORYGON_Z, - Species.UXIE, - Species.HEATRAN, - Species.CRESSELIA, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.GIGALITH, - Species.AUDINO, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SIGILYPH, - Species.GARBODOR, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FERROSEED, - Species.FERROTHORN, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.CRYOGONAL, - Species.GOLURK, - Species.HEATMOR, - Species.LARVESTA, - Species.VOLCARONA, - Species.VIRIZION, - Species.RESHIRAM, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.HELIOLISK, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.NOIBAT, - Species.NOIVERN, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.VIKAVOLT, - Species.RIBOMBEE, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.MINIOR, - Species.TURTONATOR, - Species.DRAMPA, - Species.DHELMISE, - Species.TAPU_BULU, - Species.SOLGALEO, - Species.LUNALA, - Species.XURKITREE, - Species.CELESTEELA, - Species.NECROZMA, - Species.MAGEARNA, - Species.BLACEPHALON, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.DOTTLER, - Species.ORBEETLE, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.CENTISKORCH, - Species.MR_RIME, - Species.ALCREMIE, - Species.DURALUDON, - Species.DRAGAPULT, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.ZARUDE, - Species.CALYREX, - Species.WYRDEER, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.SKELEDIRGE, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.ARMAROUGE, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.GLIMMORA, - Species.DUDUNSPARCE, - Species.BRUTE_BONNET, - Species.IRON_MOTH, - Species.WO_CHIEN, - Species.KORAIDON, - Species.MIRAIDON, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.RAGING_BOLT, - Species.TERAPAGOS, - Species.ALOLA_NINETALES, - Species.ALOLA_EXEGGUTOR, - Species.ETERNAL_FLOETTE, - Species.GALAR_MR_MIME, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, + [MoveId.SOLAR_BEAM]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARIZARD, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.ARCANINE, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.LICKITUNG, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.TAUROS, + SpeciesId.LAPRAS, + SpeciesId.PORYGON, + SpeciesId.SNORLAX, + SpeciesId.MOLTRES, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.TYPHLOSION, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.MAGCARGO, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.ENTEI, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.BLAZIKEN, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.TROPIUS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.INFERNAPE, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.MUNCHLAX, + SpeciesId.CARNIVINE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.LICKILICKY, + SpeciesId.TANGROWTH, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.PORYGON_Z, + SpeciesId.UXIE, + SpeciesId.HEATRAN, + SpeciesId.CRESSELIA, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.GIGALITH, + SpeciesId.AUDINO, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SIGILYPH, + SpeciesId.GARBODOR, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.CRYOGONAL, + SpeciesId.GOLURK, + SpeciesId.HEATMOR, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.VIRIZION, + SpeciesId.RESHIRAM, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.HELIOLISK, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.VIKAVOLT, + SpeciesId.RIBOMBEE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.MINIOR, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.TAPU_BULU, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.BLACEPHALON, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.CENTISKORCH, + SpeciesId.MR_RIME, + SpeciesId.ALCREMIE, + SpeciesId.DURALUDON, + SpeciesId.DRAGAPULT, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.ZARUDE, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.SKELEDIRGE, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.ARMAROUGE, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.GLIMMORA, + SpeciesId.DUDUNSPARCE, + SpeciesId.BRUTE_BONNET, + SpeciesId.IRON_MOTH, + SpeciesId.WO_CHIEN, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.RAGING_BOLT, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.FIRE_SPIN]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.VULPIX, - Species.NINETALES, - Species.GROWLITHE, - Species.ARCANINE, - Species.PONYTA, - Species.RAPIDASH, - Species.MAGMAR, - Species.FLAREON, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.SLUGMA, - Species.MAGCARGO, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.MAGBY, - Species.ENTEI, - Species.HO_OH, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.FLYGON, - Species.ALTARIA, - Species.SOLROCK, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.SKUNTANK, - Species.MAGMORTAR, - Species.HEATRAN, - Species.VICTINI, - Species.PANSEAR, - Species.SIMISEAR, - Species.DARUMAKA, - Species.DARMANITAN, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.HEATMOR, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.LITLEO, - Species.PYROAR, - Species.VOLCANION, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.TURTONATOR, - Species.SOLGALEO, - Species.BLACEPHALON, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.CARKOL, - Species.COALOSSAL, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.DRACOZOLT, - Species.ETERNATUS, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.IRON_MOTH, - Species.CHI_YU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.GOUGING_FIRE, - Species.ALOLA_MAROWAK, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, + [MoveId.FIRE_SPIN]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.MAGMAR, + SpeciesId.FLAREON, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.MAGBY, + SpeciesId.ENTEI, + SpeciesId.HO_OH, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.FLYGON, + SpeciesId.ALTARIA, + SpeciesId.SOLROCK, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.SKUNTANK, + SpeciesId.MAGMORTAR, + SpeciesId.HEATRAN, + SpeciesId.VICTINI, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.HEATMOR, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.VOLCANION, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.TURTONATOR, + SpeciesId.SOLGALEO, + SpeciesId.BLACEPHALON, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.DRACOZOLT, + SpeciesId.ETERNATUS, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.IRON_MOTH, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.GOUGING_FIRE, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "blaze", ], ], - [Moves.THUNDERBOLT]: [ - Species.RATTATA, - Species.RATICATE, - Species.PIKACHU, - Species.RAICHU, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.MANKEY, - Species.PRIMEAPE, - Species.MAGNEMITE, - Species.MAGNETON, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.VOLTORB, - Species.ELECTRODE, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.ELECTABUZZ, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.JOLTEON, - Species.PORYGON, - Species.SNORLAX, - Species.ZAPDOS, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.SENTRET, - Species.FURRET, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.AIPOM, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.SNUBBULL, - Species.GRANBULL, - Species.PORYGON2, - Species.STANTLER, - Species.ELEKID, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.ZIGZAGOON, - Species.LINOONE, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.AGGRON, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ZANGOOSE, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.ABSOL, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.BIDOOF, - Species.BIBAREL, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.PACHIRISU, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.GLAMEOW, - Species.PURUGLY, - Species.MIME_JR, - Species.MUNCHLAX, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.DARKRAI, - Species.ARCEUS, - Species.VICTINI, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.AUDINO, - Species.GARBODOR, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.EMOLGA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.STUNFISK, - Species.GOLURK, - Species.THUNDURUS, - Species.ZEKROM, - Species.MELOETTA, - Species.GENESECT, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.SKRELP, - Species.DRAGALGE, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.AMAURA, - Species.AURORUS, - Species.DEDENNE, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.XERNEAS, - Species.HOOPA, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.ORANGURU, - Species.SILVALLY, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.DRAMPA, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.XURKITREE, - Species.MAGEARNA, - Species.NAGANADEL, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.YAMPER, - Species.BOLTUND, - Species.TOXTRICITY, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.MR_RIME, - Species.PINCURCHIN, - Species.MORPEKO, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DURALUDON, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.REGIELEKI, - Species.WYRDEER, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.CYCLIZAR, - Species.ANNIHILAPE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.SCREAM_TAIL, - Species.FLUTTER_MANE, - Species.SANDY_SHOCKS, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.GHOLDENGO, - Species.IRON_VALIANT, - Species.MIRAIDON, - Species.ARCHALUDON, - Species.RAGING_BOLT, - Species.TERAPAGOS, - Species.ALOLA_RAICHU, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, + [MoveId.THUNDERBOLT]: [ + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.ELECTABUZZ, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.JOLTEON, + SpeciesId.PORYGON, + SpeciesId.SNORLAX, + SpeciesId.ZAPDOS, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.AIPOM, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.ELEKID, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.AGGRON, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ZANGOOSE, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.ABSOL, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.PACHIRISU, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.MIME_JR, + SpeciesId.MUNCHLAX, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.AUDINO, + SpeciesId.GARBODOR, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.EMOLGA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.STUNFISK, + SpeciesId.GOLURK, + SpeciesId.THUNDURUS, + SpeciesId.ZEKROM, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.DEDENNE, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.XERNEAS, + SpeciesId.HOOPA, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.ORANGURU, + SpeciesId.SILVALLY, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.DRAMPA, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.XURKITREE, + SpeciesId.MAGEARNA, + SpeciesId.NAGANADEL, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.TOXTRICITY, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.MR_RIME, + SpeciesId.PINCURCHIN, + SpeciesId.MORPEKO, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DURALUDON, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.REGIELEKI, + SpeciesId.WYRDEER, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.CYCLIZAR, + SpeciesId.ANNIHILAPE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.SCREAM_TAIL, + SpeciesId.FLUTTER_MANE, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.GHOLDENGO, + SpeciesId.IRON_VALIANT, + SpeciesId.MIRAIDON, + SpeciesId.ARCHALUDON, + SpeciesId.RAGING_BOLT, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, ], - [Moves.THUNDER_WAVE]: [ - Species.RATTATA, - Species.RATICATE, - Species.PIKACHU, - Species.RAICHU, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.VOLTORB, - Species.ELECTRODE, - Species.CHANSEY, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.ELECTABUZZ, - Species.GYARADOS, - Species.JOLTEON, - Species.PORYGON, - Species.ZAPDOS, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.AIPOM, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.REMORAID, - Species.OCTILLERY, - Species.PORYGON2, - Species.STANTLER, - Species.ELEKID, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.ZIGZAGOON, - Species.LINOONE, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.VIGOROTH, - Species.SLAKING, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.AGGRON, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GULPIN, - Species.SWALOT, - Species.SPOINK, - Species.GRUMPIG, - Species.ZANGOOSE, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.CHIMECHO, - Species.ABSOL, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.BIDOOF, - Species.BIBAREL, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.PACHIRISU, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.CHINGLING, - Species.MIME_JR, - Species.HAPPINY, - Species.MAGNEZONE, - Species.ELECTIVIRE, - Species.TOGEKISS, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.DARKRAI, - Species.ARCEUS, - Species.VICTINI, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.MUNNA, - Species.MUSHARNA, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.SIGILYPH, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.TYNAMO, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.STUNFISK, - Species.PAWNIARD, - Species.BISHARP, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.COBALION, - Species.THUNDURUS, - Species.ZEKROM, - Species.MELOETTA, - Species.GENESECT, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.AMAURA, - Species.AURORUS, - Species.DEDENNE, - Species.KLEFKI, - Species.XERNEAS, - Species.HOOPA, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.TYPE_NULL, - Species.SILVALLY, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.DRAMPA, - Species.TAPU_KOKO, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.XURKITREE, - Species.NECROZMA, - Species.MAGEARNA, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.WOOLOO, - Species.DUBWOOL, - Species.YAMPER, - Species.BOLTUND, - Species.TOXTRICITY, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.MR_RIME, - Species.PINCURCHIN, - Species.MORPEKO, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.REGIELEKI, - Species.WYRDEER, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.FARIGIRAF, - Species.KINGAMBIT, - Species.SCREAM_TAIL, - Species.FLUTTER_MANE, - Species.SANDY_SHOCKS, - Species.IRON_THORNS, - Species.GHOLDENGO, - Species.IRON_VALIANT, - Species.MIRAIDON, - Species.ARCHALUDON, - Species.RAGING_BOLT, - Species.ALOLA_RAICHU, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_STUNFISK, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, + [MoveId.THUNDER_WAVE]: [ + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.CHANSEY, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.ELECTABUZZ, + SpeciesId.GYARADOS, + SpeciesId.JOLTEON, + SpeciesId.PORYGON, + SpeciesId.ZAPDOS, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.AIPOM, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.ELEKID, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.AGGRON, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.ZANGOOSE, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.PACHIRISU, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.CHINGLING, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.MAGNEZONE, + SpeciesId.ELECTIVIRE, + SpeciesId.TOGEKISS, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.SIGILYPH, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.TYNAMO, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.STUNFISK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.THUNDURUS, + SpeciesId.ZEKROM, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.DEDENNE, + SpeciesId.KLEFKI, + SpeciesId.XERNEAS, + SpeciesId.HOOPA, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.DRAMPA, + SpeciesId.TAPU_KOKO, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.XURKITREE, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.TOXTRICITY, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.MR_RIME, + SpeciesId.PINCURCHIN, + SpeciesId.MORPEKO, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.REGIELEKI, + SpeciesId.WYRDEER, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.FARIGIRAF, + SpeciesId.KINGAMBIT, + SpeciesId.SCREAM_TAIL, + SpeciesId.FLUTTER_MANE, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_THORNS, + SpeciesId.GHOLDENGO, + SpeciesId.IRON_VALIANT, + SpeciesId.MIRAIDON, + SpeciesId.ARCHALUDON, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, ], - [Moves.THUNDER]: [ - Species.RATTATA, - Species.RATICATE, - Species.PIKACHU, - Species.RAICHU, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.MANKEY, - Species.PRIMEAPE, - Species.MAGNEMITE, - Species.MAGNETON, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.VOLTORB, - Species.ELECTRODE, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.ELECTABUZZ, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.JOLTEON, - Species.PORYGON, - Species.SNORLAX, - Species.ZAPDOS, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.SENTRET, - Species.FURRET, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.AIPOM, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.SNUBBULL, - Species.GRANBULL, - Species.PORYGON2, - Species.STANTLER, - Species.ELEKID, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.ZIGZAGOON, - Species.LINOONE, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.AGGRON, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ZANGOOSE, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.ABSOL, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.BIDOOF, - Species.BIBAREL, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.PACHIRISU, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.GLAMEOW, - Species.PURUGLY, - Species.MIME_JR, - Species.MUNCHLAX, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.PORYGON_Z, - Species.PROBOPASS, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.DARKRAI, - Species.ARCEUS, - Species.VICTINI, - Species.WATCHOG, - Species.STOUTLAND, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.AUDINO, - Species.CINCCINO, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.EMOLGA, - Species.GALVANTULA, - Species.FERROTHORN, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.STUNFISK, - Species.THUNDURUS, - Species.ZEKROM, - Species.MELOETTA, - Species.GENESECT, - Species.AROMATISSE, - Species.SLURPUFF, - Species.DRAGALGE, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.AURORUS, - Species.DEDENNE, - Species.SLIGGOO, - Species.GOODRA, - Species.XERNEAS, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.ORANGURU, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.DRAMPA, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.XURKITREE, - Species.ZERAORA, - Species.MELMETAL, - Species.YAMPER, - Species.BOLTUND, - Species.TOXTRICITY, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.MR_RIME, - Species.PINCURCHIN, - Species.MORPEKO, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DURALUDON, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.REGIELEKI, - Species.WYRDEER, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.ANNIHILAPE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.SCREAM_TAIL, - Species.FLUTTER_MANE, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.GHOLDENGO, - Species.MIRAIDON, - Species.ARCHALUDON, - Species.RAGING_BOLT, - Species.TERAPAGOS, - Species.ALOLA_RAICHU, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, + [MoveId.THUNDER]: [ + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.ELECTABUZZ, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.JOLTEON, + SpeciesId.PORYGON, + SpeciesId.SNORLAX, + SpeciesId.ZAPDOS, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.AIPOM, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.ELEKID, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.AGGRON, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ZANGOOSE, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.ABSOL, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.PACHIRISU, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.MIME_JR, + SpeciesId.MUNCHLAX, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.PORYGON_Z, + SpeciesId.PROBOPASS, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.WATCHOG, + SpeciesId.STOUTLAND, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.AUDINO, + SpeciesId.CINCCINO, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.EMOLGA, + SpeciesId.GALVANTULA, + SpeciesId.FERROTHORN, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.STUNFISK, + SpeciesId.THUNDURUS, + SpeciesId.ZEKROM, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.AROMATISSE, + SpeciesId.SLURPUFF, + SpeciesId.DRAGALGE, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.AURORUS, + SpeciesId.DEDENNE, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.XERNEAS, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.ORANGURU, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.DRAMPA, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.XURKITREE, + SpeciesId.ZERAORA, + SpeciesId.MELMETAL, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.TOXTRICITY, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.MR_RIME, + SpeciesId.PINCURCHIN, + SpeciesId.MORPEKO, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DURALUDON, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.REGIELEKI, + SpeciesId.WYRDEER, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.ANNIHILAPE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.SCREAM_TAIL, + SpeciesId.FLUTTER_MANE, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.GHOLDENGO, + SpeciesId.MIRAIDON, + SpeciesId.ARCHALUDON, + SpeciesId.RAGING_BOLT, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, ], - [Moves.EARTHQUAKE]: [ - Species.VENUSAUR, - Species.CHARIZARD, - Species.BLASTOISE, - Species.EKANS, - Species.ARBOK, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.DIGLETT, - Species.DUGTRIO, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.ONIX, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.AERODACTYL, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.MEGANIUM, - Species.TYPHLOSION, - Species.FERALIGATR, - Species.SUDOWOODO, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.SHUCKLE, - Species.HERACROSS, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.MANTINE, - Species.PHANPY, - Species.DONPHAN, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.MILTANK, - Species.BLISSEY, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.SCEPTILE, - Species.BLAZIKEN, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.VIGOROTH, - Species.SLAKING, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.SWALOT, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.ALTARIA, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.BALTOY, - Species.CLAYDOL, - Species.CRADILY, - Species.ARMALDO, - Species.DUSCLOPS, - Species.TROPIUS, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.RELICANTH, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.TORTERRA, - Species.INFERNAPE, - Species.EMPOLEON, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.GASTRODON, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.MANTYKE, - Species.ABOMASNOW, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.GLISCOR, - Species.MAMOSWINE, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.ARCEUS, - Species.EMBOAR, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DRILBUR, - Species.EXCADRILL, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SCOLIPEDE, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARMANITAN, - Species.DWEBBLE, - Species.CRUSTLE, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.HAXORUS, - Species.BEARTIC, - Species.STUNFISK, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.BOUFFALANT, - Species.HYDREIGON, - Species.TERRAKION, - Species.LANDORUS, - Species.CHESNAUGHT, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.GOGOAT, - Species.PANGORO, - Species.BINACLE, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AURORUS, - Species.GOODRA, - Species.TREVENANT, - Species.AVALUGG, - Species.ZYGARDE, - Species.VOLCANION, - Species.INCINEROAR, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.WISHIWASHI, - Species.MUDBRAY, - Species.MUDSDALE, - Species.STUFFUL, - Species.BEWEAR, - Species.ORANGURU, - Species.PASSIMIAN, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.SOLGALEO, - Species.BUZZWOLE, - Species.CELESTEELA, - Species.GUZZLORD, - Species.NECROZMA, - Species.STAKATAKA, - Species.MELMETAL, - Species.RILLABOOM, - Species.GREEDENT, - Species.DREDNAW, - Species.COALOSSAL, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CURSOLA, - Species.RUNERIGUS, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.DRACOVISH, - Species.REGIDRAGO, - Species.WYRDEER, - Species.URSALUNA, - Species.SKELEDIRGE, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.ORTHWORM, - Species.CETODDLE, - Species.CETITAN, - Species.DONDOZO, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.BAXCALIBUR, - Species.TING_LU, - Species.ROARING_MOON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.TERAPAGOS, + [MoveId.EARTHQUAKE]: [ + SpeciesId.VENUSAUR, + SpeciesId.CHARIZARD, + SpeciesId.BLASTOISE, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.ONIX, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.MEGANIUM, + SpeciesId.TYPHLOSION, + SpeciesId.FERALIGATR, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.MANTINE, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.SCEPTILE, + SpeciesId.BLAZIKEN, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.SWALOT, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.ALTARIA, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.CRADILY, + SpeciesId.ARMALDO, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.RELICANTH, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.TORTERRA, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.GASTRODON, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.MANTYKE, + SpeciesId.ABOMASNOW, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.EMBOAR, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SCOLIPEDE, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARMANITAN, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.HAXORUS, + SpeciesId.BEARTIC, + SpeciesId.STUNFISK, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.BOUFFALANT, + SpeciesId.HYDREIGON, + SpeciesId.TERRAKION, + SpeciesId.LANDORUS, + SpeciesId.CHESNAUGHT, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.GOGOAT, + SpeciesId.PANGORO, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AURORUS, + SpeciesId.GOODRA, + SpeciesId.TREVENANT, + SpeciesId.AVALUGG, + SpeciesId.ZYGARDE, + SpeciesId.VOLCANION, + SpeciesId.INCINEROAR, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.WISHIWASHI, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.SOLGALEO, + SpeciesId.BUZZWOLE, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.STAKATAKA, + SpeciesId.MELMETAL, + SpeciesId.RILLABOOM, + SpeciesId.GREEDENT, + SpeciesId.DREDNAW, + SpeciesId.COALOSSAL, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.REGIDRAGO, + SpeciesId.WYRDEER, + SpeciesId.URSALUNA, + SpeciesId.SKELEDIRGE, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.ORTHWORM, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.DONDOZO, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.BAXCALIBUR, + SpeciesId.TING_LU, + SpeciesId.ROARING_MOON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.TERAPAGOS, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "sandy", ], - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_TYPHLOSION, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.DIG]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.RATTATA, - Species.RATICATE, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PARAS, - Species.PARASECT, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GRIMER, - Species.MUK, - Species.ONIX, - Species.KRABBY, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.KANGASKHAN, - Species.PINSIR, - Species.TAUROS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.KABUTO, - Species.KABUTOPS, - Species.SNORLAX, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.SLOWKING, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.PHANPY, - Species.DONPHAN, - Species.STANTLER, - Species.HITMONTOP, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.BRELOOM, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.NUMEL, - Species.CAMERUPT, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.SEVIPER, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.KECLEON, - Species.REGIROCK, - Species.GROUDON, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIDOOF, - Species.BIBAREL, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.GASTRODON, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.GLAMEOW, - Species.PURUGLY, - Species.STUNKY, - Species.SKUNTANK, - Species.BONSLY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.HEATRAN, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SCOLIPEDE, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.DEERLING, - Species.SAWSBUCK, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.HEATMOR, - Species.DURANT, - Species.LANDORUS, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.LITLEO, - Species.PYROAR, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.MEOWSTIC, - Species.BINACLE, - Species.BARBARACLE, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.PHANTUMP, - Species.TREVENANT, - Species.ZYGARDE, - Species.VOLCANION, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.SKWOVET, - Species.GREEDENT, - Species.NICKIT, - Species.THIEVUL, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.SILICOBRA, - Species.SANDACONDA, - Species.GRAPPLOCT, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.CUFANT, - Species.COPPERAJAH, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.WYRDEER, - Species.URSALUNA, - Species.SNEASLER, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.LECHONK, - Species.OINKOLOGNE, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.KLAWF, - Species.RELLOR, - Species.RABSCA, - Species.WIGLETT, - Species.WUGTRIO, - Species.ORTHWORM, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.TING_LU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.OKIDOGI, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_AVALUGG, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.DIG]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.ONIX, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.KANGASKHAN, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.SLOWKING, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.STANTLER, + SpeciesId.HITMONTOP, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.BRELOOM, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.KECLEON, + SpeciesId.REGIROCK, + SpeciesId.GROUDON, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BONSLY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.HEATRAN, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SCOLIPEDE, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.LANDORUS, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.MEOWSTIC, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.ZYGARDE, + SpeciesId.VOLCANION, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.GRAPPLOCT, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.WYRDEER, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.KLAWF, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.ORTHWORM, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.TING_LU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.OKIDOGI, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.TOXIC]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.TOXTRICITY, - Species.ETERNATUS, - Species.SNEASLER, - Species.OVERQWIL, - Species.BELLIBOLT, - Species.SHROODLE, - Species.GRAFAIAI, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.VAROOM, - Species.REVAVROOM, - Species.GLIMMET, - Species.GLIMMORA, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.IRON_MOTH, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.TERAPAGOS, - Species.PECHARUNT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_SLOWKING, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.PALDEA_WOOPER, + [MoveId.TOXIC]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.TOXTRICITY, + SpeciesId.ETERNATUS, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.BELLIBOLT, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.IRON_MOTH, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.TERAPAGOS, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.PALDEA_WOOPER, ], - [Moves.PSYCHIC]: [ - Species.BUTTERFREE, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.VENONAT, - Species.VENOMOTH, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CHANSEY, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.LAPRAS, - Species.PORYGON, - Species.SNORLAX, - Species.MEWTWO, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.SPINARAK, - Species.ARIADOS, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.POLITOED, - Species.YANMA, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.PORYGON2, - Species.STANTLER, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.BLISSEY, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.GOREBYSS, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.DEOXYS, - Species.WORMADAM, - Species.MOTHIM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.HAPPINY, - Species.SPIRITOMB, - Species.MUNCHLAX, - Species.LUCARIO, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.PORYGON_Z, - Species.GALLADE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.GIRATINA, - Species.CRESSELIA, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.WHIMSICOTT, - Species.DARMANITAN, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.GARBODOR, - Species.ZOROARK, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.GOLETT, - Species.GOLURK, - Species.LARVESTA, - Species.VOLCARONA, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.MELOETTA, - Species.GENESECT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.VIVILLON, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.AURORUS, - Species.SYLVEON, - Species.CARBINK, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.DIANCIE, - Species.HOOPA, - Species.PRIMARINA, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ORANGURU, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MINIOR, - Species.MIMIKYU, - Species.BRUXISH, - Species.TAPU_LELE, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.NECROZMA, - Species.MAGEARNA, - Species.BLACEPHALON, - Species.DOTTLER, - Species.ORBEETLE, - Species.THIEVUL, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.CURSOLA, - Species.MR_RIME, - Species.RUNERIGUS, - Species.ALCREMIE, - Species.INDEEDEE, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.ENAMORUS, - Species.ARMAROUGE, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.VELUZA, - Species.FARIGIRAF, - Species.SCREAM_TAIL, - Species.IRON_MOTH, - Species.GHOLDENGO, - Species.CHI_YU, - Species.IRON_VALIANT, - Species.MUNKIDORI, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.ALOLA_RAICHU, - Species.ALOLA_EXEGGUTOR, - Species.ETERNAL_FLOETTE, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, + [MoveId.PSYCHIC]: [ + SpeciesId.BUTTERFREE, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CHANSEY, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.LAPRAS, + SpeciesId.PORYGON, + SpeciesId.SNORLAX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.POLITOED, + SpeciesId.YANMA, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.BLISSEY, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.GOREBYSS, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.SPIRITOMB, + SpeciesId.MUNCHLAX, + SpeciesId.LUCARIO, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.WHIMSICOTT, + SpeciesId.DARMANITAN, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.GARBODOR, + SpeciesId.ZOROARK, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.VIVILLON, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.CARBINK, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.PRIMARINA, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ORANGURU, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MINIOR, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.TAPU_LELE, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.BLACEPHALON, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.THIEVUL, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.ALCREMIE, + SpeciesId.INDEEDEE, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.ENAMORUS, + SpeciesId.ARMAROUGE, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.VELUZA, + SpeciesId.FARIGIRAF, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_MOTH, + SpeciesId.GHOLDENGO, + SpeciesId.CHI_YU, + SpeciesId.IRON_VALIANT, + SpeciesId.MUNKIDORI, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.AGILITY]: [ - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.SPEAROW, - Species.FEAROW, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.VULPIX, - Species.NINETALES, - Species.ZUBAT, - Species.GOLBAT, - Species.PARAS, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.GROWLITHE, - Species.ARCANINE, - Species.PONYTA, - Species.RAPIDASH, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.HITMONCHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARMIE, - Species.SCYTHER, - Species.JOLTEON, - Species.PORYGON, - Species.AERODACTYL, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.FERALIGATR, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.AIPOM, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.GLIGAR, - Species.QWILFISH, - Species.SCIZOR, - Species.SNEASEL, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.KINGDRA, - Species.PORYGON2, - Species.STANTLER, - Species.HITMONTOP, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.SURSKIT, - Species.MASQUERAIN, - Species.NINJASK, - Species.SHEDINJA, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.CARVANHA, - Species.SHARPEDO, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.GOREBYSS, - Species.LUVDISC, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.LUXRAY, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.CHATOT, - Species.RIOLU, - Species.LUCARIO, - Species.SKORUPI, - Species.DRAPION, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.WEAVILE, - Species.GLISCOR, - Species.PORYGON_Z, - Species.GALLADE, - Species.ARCEUS, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.SEWADDLE, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.BASCULIN, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.ESCAVALIER, - Species.JOLTIK, - Species.GALVANTULA, - Species.ELGYEM, - Species.BEHEEYEM, - Species.ACCELGOR, - Species.MIENFOO, - Species.MIENSHAO, - Species.RUFFLET, - Species.BRAVIARY, - Species.DURANT, - Species.TORNADUS, - Species.THUNDURUS, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.HAWLUCHA, - Species.DEDENNE, - Species.NOIBAT, - Species.NOIVERN, - Species.VIKAVOLT, - Species.ORICORIO, - Species.RIBOMBEE, - Species.LYCANROC, - Species.SALANDIT, - Species.SALAZZLE, - Species.TOGEDEMARU, - Species.BRUXISH, - Species.TAPU_KOKO, - Species.SOLGALEO, - Species.LUNALA, - Species.PHEROMOSA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.ZERAORA, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.INTELEON, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.WOOLOO, - Species.DUBWOOL, - Species.BOLTUND, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.HATTERENE, - Species.FALINKS, - Species.EISCUE, - Species.MORPEKO, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.REGIELEKI, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.QUAQUAVAL, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.WATTREL, - Species.KILOWATTREL, - Species.FLITTLE, - Species.ESPATHRA, - Species.WIGLETT, - Species.WUGTRIO, - Species.FINIZEN, - Species.PALAFIN, - Species.CYCLIZAR, - Species.FLAMIGO, - Species.VELUZA, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.IRON_BUNDLE, - Species.IRON_MOTH, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.FEZANDIPITI, - Species.IRON_BOULDER, + [MoveId.AGILITY]: [ + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.PARAS, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.HITMONCHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARMIE, + SpeciesId.SCYTHER, + SpeciesId.JOLTEON, + SpeciesId.PORYGON, + SpeciesId.AERODACTYL, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.FERALIGATR, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.AIPOM, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SNEASEL, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.KINGDRA, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.HITMONTOP, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.GOREBYSS, + SpeciesId.LUVDISC, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.LUXRAY, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.CHATOT, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.WEAVILE, + SpeciesId.GLISCOR, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.ARCEUS, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.SEWADDLE, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.BASCULIN, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.ESCAVALIER, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.ACCELGOR, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.DURANT, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.VIKAVOLT, + SpeciesId.ORICORIO, + SpeciesId.RIBOMBEE, + SpeciesId.LYCANROC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.TOGEDEMARU, + SpeciesId.BRUXISH, + SpeciesId.TAPU_KOKO, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.PHEROMOSA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.INTELEON, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.BOLTUND, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.HATTERENE, + SpeciesId.FALINKS, + SpeciesId.EISCUE, + SpeciesId.MORPEKO, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.REGIELEKI, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.QUAQUAVAL, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.CYCLIZAR, + SpeciesId.FLAMIGO, + SpeciesId.VELUZA, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.FEZANDIPITI, + SpeciesId.IRON_BOULDER, [ - Species.DEOXYS, + SpeciesId.DEOXYS, "speed", ], - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.NIGHT_SHADE]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.NINETALES, - Species.VENONAT, - Species.VENOMOTH, - Species.KADABRA, - Species.ALAKAZAM, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.MEWTWO, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.SPINARAK, - Species.ARIADOS, - Species.NATU, - Species.XATU, - Species.MURKROW, - Species.MISDREAVUS, - Species.GARDEVOIR, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.SPOINK, - Species.GRUMPIG, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.DEOXYS, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.BRONZONG, - Species.CHATOT, - Species.SPIRITOMB, - Species.GALLADE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.DARKRAI, - Species.YAMASK, - Species.COFAGRIGUS, - Species.ZORUA, - Species.ZOROARK, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.FRILLISH, - Species.JELLICENT, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.GOLETT, - Species.GOLURK, - Species.DELPHOX, - Species.PHANTUMP, - Species.TREVENANT, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MIMIKYU, - Species.LUNALA, - Species.BLACEPHALON, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.CURSOLA, - Species.RUNERIGUS, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.SPECTRIER, - Species.BASCULEGION, - Species.SKELEDIRGE, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.ESPATHRA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.ANNIHILAPE, - Species.FARIGIRAF, - Species.FLUTTER_MANE, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.MUNKIDORI, - Species.PECHARUNT, - Species.GALAR_CORSOLA, - Species.GALAR_YAMASK, + [MoveId.NIGHT_SHADE]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.NINETALES, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MURKROW, + SpeciesId.MISDREAVUS, + SpeciesId.GARDEVOIR, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.DEOXYS, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.BRONZONG, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.DARKRAI, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.DELPHOX, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MIMIKYU, + SpeciesId.LUNALA, + SpeciesId.BLACEPHALON, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.SPECTRIER, + SpeciesId.BASCULEGION, + SpeciesId.SKELEDIRGE, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.ESPATHRA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.ANNIHILAPE, + SpeciesId.FARIGIRAF, + SpeciesId.FLUTTER_MANE, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.MUNKIDORI, + SpeciesId.PECHARUNT, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_YAMASK, [ - Species.CALYREX, + SpeciesId.CALYREX, "shadow", ], - Species.HISUI_TYPHLOSION, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.SCREECH]: [ - Species.RATTATA, - Species.EKANS, - Species.ARBOK, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.GOLBAT, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.MAGNEMITE, - Species.MAGNETON, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.ONIX, - Species.VOLTORB, - Species.ELECTRODE, - Species.CUBONE, - Species.MAROWAK, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.KABUTO, - Species.KABUTOPS, - Species.SNORLAX, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.IGGLYBUFF, - Species.MAREEP, - Species.POLITOED, - Species.AIPOM, - Species.YANMA, - Species.UMBREON, - Species.MURKROW, - Species.MISDREAVUS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNEASEL, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.ELEKID, - Species.MAGBY, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.SHIFTRY, - Species.NINJASK, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.CARVANHA, - Species.SHARPEDO, - Species.VIBRAVA, - Species.FLYGON, - Species.SEVIPER, - Species.ANORITH, - Species.ARMALDO, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.HUNTAIL, - Species.KRICKETUNE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.VESPIQUEN, - Species.AMBIPOM, - Species.STUNKY, - Species.SKUNTANK, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.YANMEGA, - Species.GLISCOR, - Species.OSHAWOTT, - Species.PATRAT, - Species.PURRLOIN, - Species.LIEPARD, - Species.BLITZLE, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.MARACTUS, - Species.GARBODOR, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.JOLTIK, - Species.GALVANTULA, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.ELGYEM, - Species.BEHEEYEM, - Species.PAWNIARD, - Species.BISHARP, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.GENESECT, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.BINACLE, - Species.BARBARACLE, - Species.NOIBAT, - Species.NOIVERN, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.WIMPOD, - Species.GOLISOPOD, - Species.PYUKUMUKU, - Species.MIMIKYU, - Species.BRUXISH, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.KARTANA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.CORVIKNIGHT, - Species.NICKIT, - Species.THIEVUL, - Species.SILICOBRA, - Species.SANDACONDA, - Species.TOXTRICITY, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.MR_RIME, - Species.FALINKS, - Species.CUFANT, - Species.COPPERAJAH, - Species.DURALUDON, - Species.ETERNATUS, - Species.REGIELEKI, - Species.SNEASLER, - Species.NYMBLE, - Species.LOKIX, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.VAROOM, - Species.REVAVROOM, - Species.ANNIHILAPE, - Species.DUDUNSPARCE, - Species.SANDY_SHOCKS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.KORAIDON, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ZAPDOS, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_STUNFISK, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_SNEASEL, + [MoveId.SCREECH]: [ + SpeciesId.RATTATA, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.GOLBAT, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.ONIX, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.IGGLYBUFF, + SpeciesId.MAREEP, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.YANMA, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.MISDREAVUS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNEASEL, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.SHIFTRY, + SpeciesId.NINJASK, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.SEVIPER, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.HUNTAIL, + SpeciesId.KRICKETUNE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.VESPIQUEN, + SpeciesId.AMBIPOM, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.YANMEGA, + SpeciesId.GLISCOR, + SpeciesId.OSHAWOTT, + SpeciesId.PATRAT, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.BLITZLE, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.MARACTUS, + SpeciesId.GARBODOR, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.GENESECT, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.PYUKUMUKU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.KARTANA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.CORVIKNIGHT, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.TOXTRICITY, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.FALINKS, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DURALUDON, + SpeciesId.ETERNATUS, + SpeciesId.REGIELEKI, + SpeciesId.SNEASLER, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.ANNIHILAPE, + SpeciesId.DUDUNSPARCE, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.KORAIDON, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_SNEASEL, ], - [Moves.DOUBLE_TEAM]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.NAGANADEL, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.PECHARUNT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.DOUBLE_TEAM]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.NAGANADEL, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.CONFUSE_RAY]: [ - Species.VULPIX, - Species.NINETALES, - Species.ZUBAT, - Species.GOLBAT, - Species.VENONAT, - Species.VENOMOTH, - Species.PSYDUCK, - Species.GOLDUCK, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.MAGNEMITE, - Species.MAGNETON, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.HYPNO, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.MAGMAR, - Species.LAPRAS, - Species.KABUTO, - Species.KABUTOPS, - Species.MEWTWO, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.CORSOLA, - Species.MANTINE, - Species.STANTLER, - Species.MAGBY, - Species.SHIFTRY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SHEDINJA, - Species.SABLEYE, - Species.VOLBEAT, - Species.ILLUMISE, - Species.SPOINK, - Species.GRUMPIG, - Species.LILEEP, - Species.CRADILY, - Species.FEEBAS, - Species.MILOTIC, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.JIRACHI, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.VESPIQUEN, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.SPIRITOMB, - Species.SKORUPI, - Species.DRAPION, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.MAGNEZONE, - Species.MAGMORTAR, - Species.GALLADE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.DARKRAI, - Species.ARCEUS, - Species.WATCHOG, - Species.ZORUA, - Species.ZOROARK, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.FRILLISH, - Species.JELLICENT, - Species.EELEKTROSS, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.CRYOGONAL, - Species.GOLETT, - Species.GOLURK, - Species.DELPHOX, - Species.VIVILLON, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.MORELULL, - Species.SHIINOTIC, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MINIOR, - Species.MIMIKYU, - Species.LUNALA, - Species.MAGEARNA, - Species.BLACEPHALON, - Species.ORBEETLE, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.CURSOLA, - Species.MR_RIME, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ETERNATUS, - Species.SPECTRIER, - Species.WYRDEER, - Species.BASCULEGION, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FARIGIRAF, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.IRON_MOTH, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.CHI_YU, - Species.IRON_VALIANT, - Species.MIRAIDON, - Species.MUNKIDORI, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.GALAR_MR_MIME, - Species.GALAR_CORSOLA, + [MoveId.CONFUSE_RAY]: [ + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.HYPNO, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.MAGMAR, + SpeciesId.LAPRAS, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.CORSOLA, + SpeciesId.MANTINE, + SpeciesId.STANTLER, + SpeciesId.MAGBY, + SpeciesId.SHIFTRY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.JIRACHI, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.VESPIQUEN, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.SPIRITOMB, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.MAGNEZONE, + SpeciesId.MAGMORTAR, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.WATCHOG, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.EELEKTROSS, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.CRYOGONAL, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.DELPHOX, + SpeciesId.VIVILLON, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MINIOR, + SpeciesId.MIMIKYU, + SpeciesId.LUNALA, + SpeciesId.MAGEARNA, + SpeciesId.BLACEPHALON, + SpeciesId.ORBEETLE, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ETERNATUS, + SpeciesId.SPECTRIER, + SpeciesId.WYRDEER, + SpeciesId.BASCULEGION, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FARIGIRAF, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.IRON_MOTH, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.CHI_YU, + SpeciesId.IRON_VALIANT, + SpeciesId.MIRAIDON, + SpeciesId.MUNKIDORI, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_CORSOLA, [ - Species.CALYREX, + SpeciesId.CALYREX, "shadow", ], - Species.HISUI_TYPHLOSION, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.LIGHT_SCREEN]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.PIKACHU, - Species.RAICHU, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PARAS, - Species.PARASECT, - Species.PSYDUCK, - Species.GOLDUCK, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.CLOYSTER, - Species.DROWZEE, - Species.HYPNO, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CHANSEY, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.JOLTEON, - Species.ARTICUNO, - Species.ZAPDOS, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.LEDYBA, - Species.LEDIAN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.SUNKERN, - Species.SUNFLORA, - Species.ESPEON, - Species.UMBREON, - Species.SLOWKING, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.SCIZOR, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.STANTLER, - Species.SMOOCHUM, - Species.ELEKID, - Species.BLISSEY, - Species.RAIKOU, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.DUSTOX, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.AZURILL, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.SPOINK, - Species.GRUMPIG, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.FEEBAS, - Species.MILOTIC, - Species.CHIMECHO, - Species.SNORUNT, - Species.GLALIE, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.PACHIRISU, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.HAPPINY, - Species.SNOVER, - Species.ABOMASNOW, - Species.MAGNEZONE, - Species.ELECTIVIRE, - Species.TOGEKISS, - Species.MAMOSWINE, - Species.GALLADE, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.MANAPHY, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.WATCHOG, - Species.MUNNA, - Species.MUSHARNA, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.WHIMSICOTT, - Species.LILLIGANT, - Species.SIGILYPH, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.CRYOGONAL, - Species.LARVESTA, - Species.VOLCARONA, - Species.VIRIZION, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.MELOETTA, - Species.GENESECT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.VIVILLON, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.DEDENNE, - Species.CARBINK, - Species.KLEFKI, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.XERNEAS, - Species.DIANCIE, - Species.HOOPA, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PRIMARINA, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.TOXAPEX, - Species.MORELULL, - Species.SHIINOTIC, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PYUKUMUKU, - Species.MINIOR, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.XURKITREE, - Species.NECROZMA, - Species.MAGEARNA, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.APPLETUN, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.CURSOLA, - Species.MR_RIME, - Species.ALCREMIE, - Species.FROSMOTH, - Species.DURALUDON, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.ARBOLIVA, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.GLIMMET, - Species.GLIMMORA, - Species.FARIGIRAF, - Species.SCREAM_TAIL, - Species.SANDY_SHOCKS, - Species.IRON_MOTH, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHI_YU, - Species.IRON_VALIANT, - Species.MIRAIDON, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.ARCHALUDON, - Species.ALOLA_RAICHU, - Species.ALOLA_EXEGGUTOR, - Species.ETERNAL_FLOETTE, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, + [MoveId.LIGHT_SCREEN]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.CLOYSTER, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CHANSEY, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.JOLTEON, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.SCIZOR, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.DUSTOX, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.AZURILL, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CHIMECHO, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.PACHIRISU, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.MAGNEZONE, + SpeciesId.ELECTIVIRE, + SpeciesId.TOGEKISS, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.MANAPHY, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.WATCHOG, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.WHIMSICOTT, + SpeciesId.LILLIGANT, + SpeciesId.SIGILYPH, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.CRYOGONAL, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.VIRIZION, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.VIVILLON, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.KLEFKI, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PRIMARINA, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.TOXAPEX, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PYUKUMUKU, + SpeciesId.MINIOR, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.XURKITREE, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.APPLETUN, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.ALCREMIE, + SpeciesId.FROSMOTH, + SpeciesId.DURALUDON, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.ARBOLIVA, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.FARIGIRAF, + SpeciesId.SCREAM_TAIL, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_MOTH, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHI_YU, + SpeciesId.IRON_VALIANT, + SpeciesId.MIRAIDON, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.ARCHALUDON, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, [ - Species.INDEEDEE, + SpeciesId.INDEEDEE, "female", ], ], - [Moves.HAZE]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.EKANS, - Species.ARBOK, - Species.ZUBAT, - Species.GOLBAT, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.KOFFING, - Species.WEEZING, - Species.GOLDEEN, - Species.SEAKING, - Species.LAPRAS, - Species.VAPOREON, - Species.OMANYTE, - Species.OMASTAR, - Species.ARTICUNO, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CROBAT, - Species.NATU, - Species.XATU, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.MURKROW, - Species.QWILFISH, - Species.SWINUB, - Species.PILOSWINE, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SWABLU, - Species.ALTARIA, - Species.SEVIPER, - Species.FEEBAS, - Species.MILOTIC, - Species.DUSKULL, - Species.DUSCLOPS, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.HONCHKROW, - Species.STUNKY, - Species.SKUNTANK, - Species.MANTYKE, - Species.GLACEON, - Species.MAMOSWINE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TRUBBISH, - Species.GARBODOR, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.CRYOGONAL, - Species.ZEKROM, - Species.GRENINJA, - Species.SKRELP, - Species.DRAGALGE, - Species.AMAURA, - Species.AURORUS, - Species.TREVENANT, - Species.ZYGARDE, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PRIMARINA, - Species.MAREANIE, - Species.TOXAPEX, - Species.TAPU_FINI, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.RUNERIGUS, - Species.SPECTRIER, - Species.OVERQWIL, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CLODSIRE, - Species.CHIEN_PAO, - Species.ALOLA_MUK, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_CORSOLA, - Species.GALAR_YAMASK, + [MoveId.HAZE]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.ARTICUNO, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CROBAT, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.MURKROW, + SpeciesId.QWILFISH, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.SEVIPER, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.HONCHKROW, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.MANTYKE, + SpeciesId.GLACEON, + SpeciesId.MAMOSWINE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.CRYOGONAL, + SpeciesId.ZEKROM, + SpeciesId.GRENINJA, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.TREVENANT, + SpeciesId.ZYGARDE, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PRIMARINA, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.TAPU_FINI, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.RUNERIGUS, + SpeciesId.SPECTRIER, + SpeciesId.OVERQWIL, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CLODSIRE, + SpeciesId.CHIEN_PAO, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_YAMASK, [ - Species.CALYREX, + SpeciesId.CALYREX, "shadow", ], - Species.HISUI_QWILFISH, - Species.HISUI_DECIDUEYE, - Species.PALDEA_WOOPER, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_WOOPER, ], - [Moves.REFLECT]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.PIKACHU, - Species.RAICHU, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.GROWLITHE, - Species.ARCANINE, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SHELLDER, - Species.CLOYSTER, - Species.DROWZEE, - Species.HYPNO, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CHANSEY, - Species.TANGELA, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.ESPEON, - Species.UMBREON, - Species.SLOWKING, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.SNUBBULL, - Species.GRANBULL, - Species.SNEASEL, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.STANTLER, - Species.SMOOCHUM, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.SPOINK, - Species.GRUMPIG, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.CHIMECHO, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.BASTIODON, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.WEAVILE, - Species.MAGNEZONE, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.TOGEKISS, - Species.MAMOSWINE, - Species.GALLADE, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.MANAPHY, - Species.ARCEUS, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.LEAVANNY, - Species.SIGILYPH, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.CRYOGONAL, - Species.MIENFOO, - Species.MIENSHAO, - Species.GOLETT, - Species.GOLURK, - Species.HYDREIGON, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.KELDEO, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.DELPHOX, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.INKAY, - Species.MALAMAR, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.CARBINK, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.XERNEAS, - Species.DIANCIE, - Species.HOOPA, - Species.PRIMARINA, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ARAQUANID, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.ORANGURU, - Species.PYUKUMUKU, - Species.MINIOR, - Species.TOGEDEMARU, - Species.BRUXISH, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.XURKITREE, - Species.NECROZMA, - Species.MAGEARNA, - Species.STAKATAKA, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.APPLETUN, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.CURSOLA, - Species.MR_RIME, - Species.FROSMOTH, - Species.EISCUE, - Species.DURALUDON, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.CALYREX, - Species.WYRDEER, - Species.ARBOLIVA, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.GLIMMET, - Species.GLIMMORA, - Species.FARIGIRAF, - Species.SCREAM_TAIL, - Species.SANDY_SHOCKS, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHI_YU, - Species.IRON_VALIANT, - Species.MIRAIDON, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.ALOLA_RAICHU, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_EXEGGUTOR, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_CORSOLA, + [MoveId.REFLECT]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SNEASEL, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.CHIMECHO, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.BASTIODON, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.TOGEKISS, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.MANAPHY, + SpeciesId.ARCEUS, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.LEAVANNY, + SpeciesId.SIGILYPH, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.CRYOGONAL, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.DELPHOX, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.CARBINK, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.PRIMARINA, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ARAQUANID, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.ORANGURU, + SpeciesId.PYUKUMUKU, + SpeciesId.MINIOR, + SpeciesId.TOGEDEMARU, + SpeciesId.BRUXISH, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.XURKITREE, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.STAKATAKA, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.APPLETUN, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.FROSMOTH, + SpeciesId.EISCUE, + SpeciesId.DURALUDON, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.ARBOLIVA, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.FARIGIRAF, + SpeciesId.SCREAM_TAIL, + SpeciesId.SANDY_SHOCKS, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHI_YU, + SpeciesId.IRON_VALIANT, + SpeciesId.MIRAIDON, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_CORSOLA, [ - Species.INDEEDEE, + SpeciesId.INDEEDEE, "female", ], - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, ], - [Moves.FOCUS_ENERGY]: [ - Species.BEEDRILL, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.MANKEY, - Species.PRIMEAPE, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.FARFETCHD, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.SCYTHER, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.MEW, - Species.SENTRET, - Species.FURRET, - Species.ARIADOS, - Species.ESPEON, - Species.UMBREON, - Species.SCIZOR, - Species.TEDDIURSA, - Species.REMORAID, - Species.OCTILLERY, - Species.KINGDRA, - Species.PHANPY, - Species.TYROGUE, - Species.HITMONTOP, - Species.MAGBY, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.TAILLOW, - Species.SWELLOW, - Species.VIGOROTH, - Species.SLAKING, - Species.MAKUHITA, - Species.HARIYAMA, - Species.CARVANHA, - Species.SHARPEDO, - Species.NUMEL, - Species.CAMERUPT, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.ABSOL, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.KRICKETUNE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.STUNKY, - Species.SKUNTANK, - Species.LUCARIO, - Species.MAGMORTAR, - Species.LEAFEON, - Species.GLACEON, - Species.VICTINI, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.MIENFOO, - Species.MIENSHAO, - Species.BOUFFALANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.PANGORO, - Species.SYLVEON, - Species.VOLCANION, - Species.PASSIMIAN, - Species.BUZZWOLE, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.INTELEON, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.BOLTUND, - Species.FLAPPLE, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.SIRFETCHD, - Species.FALINKS, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.KUBFU, - Species.URSHIFU, - Species.REGIDRAGO, - Species.KLEAVOR, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.FINIZEN, - Species.PALAFIN, - Species.FLAMIGO, - Species.VELUZA, - Species.ANNIHILAPE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.ROARING_MOON, - Species.OGERPON, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.PIKACHU, - Species.ALOLA_MAROWAK, + [MoveId.FOCUS_ENERGY]: [ + SpeciesId.BEEDRILL, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.FARFETCHD, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.SCYTHER, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.MEW, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.ARIADOS, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.SCIZOR, + SpeciesId.TEDDIURSA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.MAGBY, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.ABSOL, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.KRICKETUNE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.LUCARIO, + SpeciesId.MAGMORTAR, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.VICTINI, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.BOUFFALANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.PANGORO, + SpeciesId.SYLVEON, + SpeciesId.VOLCANION, + SpeciesId.PASSIMIAN, + SpeciesId.BUZZWOLE, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.INTELEON, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.BOLTUND, + SpeciesId.FLAPPLE, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.SIRFETCHD, + SpeciesId.FALINKS, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.REGIDRAGO, + SpeciesId.KLEAVOR, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.FLAMIGO, + SpeciesId.VELUZA, + SpeciesId.ANNIHILAPE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.ROARING_MOON, + SpeciesId.OGERPON, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.PIKACHU, + SpeciesId.ALOLA_MAROWAK, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "dusk", ], - Species.GALAR_FARFETCHD, - Species.GALAR_ZAPDOS, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_SAMUROTT, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_SAMUROTT, ], - [Moves.METRONOME]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWBRO, - Species.GRIMER, - Species.MUK, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.CHANSEY, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CLEFFA, - Species.TOGEPI, - Species.TOGETIC, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.AIPOM, - Species.SLOWKING, - Species.SNUBBULL, - Species.GRANBULL, - Species.TEDDIURSA, - Species.URSARING, - Species.SMOOCHUM, - Species.MILTANK, - Species.BLISSEY, - Species.CELEBI, - Species.LOMBRE, - Species.LUDICOLO, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.SWALOT, - Species.GRUMPIG, - Species.SPINDA, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSCLOPS, - Species.JIRACHI, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.FLOATZEL, - Species.AMBIPOM, - Species.HAPPINY, - Species.MUNCHLAX, - Species.LUCARIO, - Species.WEAVILE, - Species.TOGEKISS, - Species.DUSKNOIR, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.TORNADUS, - Species.MELOETTA, - Species.DELPHOX, - Species.FLOETTE, - Species.FLORGES, - Species.AROMATISSE, - Species.SLURPUFF, - Species.DIANCIE, - Species.INTELEON, - Species.TOXTRICITY, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.PERRSERKER, - Species.MR_RIME, - Species.ALCREMIE, - Species.INDEEDEE, - Species.CALYREX, - Species.URSALUNA, - Species.PAWMOT, - Species.ARBOLIVA, - Species.SHROODLE, - Species.GRAFAIAI, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.ANNIHILAPE, - Species.SCREAM_TAIL, - Species.IRON_HANDS, - Species.IRON_VALIANT, - Species.MUNKIDORI, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.HISUI_LILLIGANT, + [MoveId.METRONOME]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWBRO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.CHANSEY, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CLEFFA, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.SLOWKING, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SMOOCHUM, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.CELEBI, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.SWALOT, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSCLOPS, + SpeciesId.JIRACHI, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.HAPPINY, + SpeciesId.MUNCHLAX, + SpeciesId.LUCARIO, + SpeciesId.WEAVILE, + SpeciesId.TOGEKISS, + SpeciesId.DUSKNOIR, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.TORNADUS, + SpeciesId.MELOETTA, + SpeciesId.DELPHOX, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.AROMATISSE, + SpeciesId.SLURPUFF, + SpeciesId.DIANCIE, + SpeciesId.INTELEON, + SpeciesId.TOXTRICITY, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.PERRSERKER, + SpeciesId.MR_RIME, + SpeciesId.ALCREMIE, + SpeciesId.INDEEDEE, + SpeciesId.CALYREX, + SpeciesId.URSALUNA, + SpeciesId.PAWMOT, + SpeciesId.ARBOLIVA, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.ANNIHILAPE, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_VALIANT, + SpeciesId.MUNKIDORI, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_LILLIGANT, ], - [Moves.SELF_DESTRUCT]: [ - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.KOFFING, - Species.WEEZING, - Species.SNORLAX, - Species.MEWTWO, - Species.MEW, - Species.SUDOWOODO, - Species.PINECO, - Species.FORRETRESS, - Species.STEELIX, - Species.QWILFISH, - Species.SLUGMA, - Species.MAGCARGO, - Species.CORSOLA, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.NOSEPASS, - Species.GULPIN, - Species.SWALOT, - Species.WAILMER, - Species.WAILORD, - Species.CAMERUPT, - Species.TORKOAL, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.GLALIE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BONSLY, - Species.MUNCHLAX, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.AZELF, - Species.HEATRAN, - Species.GIGALITH, - Species.TRUBBISH, - Species.GARBODOR, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.FERROSEED, - Species.FERROTHORN, - Species.CRYOGONAL, - Species.GOLETT, - Species.GOLURK, - Species.LANDORUS, - Species.GENESECT, - Species.VOLCANION, - Species.SILVALLY, - Species.MINIOR, - Species.CELESTEELA, - Species.MAGEARNA, - Species.BLACEPHALON, - Species.MELMETAL, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.POLTEAGEIST, - Species.CURSOLA, - Species.PINCURCHIN, - Species.STONJOURNER, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.VAROOM, - Species.GLIMMET, - Species.GLIMMORA, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.GALAR_WEEZING, - Species.GALAR_CORSOLA, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_QWILFISH, + [MoveId.SELF_DESTRUCT]: [ + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.SNORLAX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SUDOWOODO, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.STEELIX, + SpeciesId.QWILFISH, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.CORSOLA, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.NOSEPASS, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.GLALIE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BONSLY, + SpeciesId.MUNCHLAX, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.AZELF, + SpeciesId.HEATRAN, + SpeciesId.GIGALITH, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.CRYOGONAL, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.LANDORUS, + SpeciesId.GENESECT, + SpeciesId.VOLCANION, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.CELESTEELA, + SpeciesId.MAGEARNA, + SpeciesId.BLACEPHALON, + SpeciesId.MELMETAL, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.POLTEAGEIST, + SpeciesId.CURSOLA, + SpeciesId.PINCURCHIN, + SpeciesId.STONJOURNER, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.VAROOM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_QWILFISH, ], - [Moves.FIRE_BLAST]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.GROWLITHE, - Species.ARCANINE, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GRIMER, - Species.MUK, - Species.CUBONE, - Species.MAROWAK, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MAGMAR, - Species.TAUROS, - Species.GYARADOS, - Species.FLAREON, - Species.AERODACTYL, - Species.SNORLAX, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.SLOWKING, - Species.DUNSPARCE, - Species.SNUBBULL, - Species.GRANBULL, - Species.SLUGMA, - Species.MAGCARGO, - Species.REMORAID, - Species.OCTILLERY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.MAGBY, - Species.BLISSEY, - Species.ENTEI, - Species.TYRANITAR, - Species.HO_OH, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAWILE, - Species.AGGRON, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.FLYGON, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SOLROCK, - Species.CASTFORM, - Species.KECLEON, - Species.ABSOL, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.GROUDON, - Species.RAYQUAZA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.STUNKY, - Species.SKUNTANK, - Species.HAPPINY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.ARCEUS, - Species.VICTINI, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.PANSEAR, - Species.SIMISEAR, - Species.AUDINO, - Species.DARUMAKA, - Species.DARMANITAN, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.HEATMOR, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.RESHIRAM, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.LITLEO, - Species.PYROAR, - Species.GOODRA, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.VOLCANION, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.SALANDIT, - Species.SALAZZLE, - Species.TURTONATOR, - Species.DRAMPA, - Species.SOLGALEO, - Species.CELESTEELA, - Species.GUZZLORD, - Species.NAGANADEL, - Species.BLACEPHALON, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.CARKOL, - Species.COALOSSAL, - Species.CENTISKORCH, - Species.DRACOZOLT, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ETERNATUS, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.SCOVILLAIN, - Species.DUDUNSPARCE, - Species.SCREAM_TAIL, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.CHI_YU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.GOUGING_FIRE, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_SLOWKING, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_GOODRA, + [MoveId.FIRE_BLAST]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MAGMAR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.FLAREON, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.SLOWKING, + SpeciesId.DUNSPARCE, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.MAGBY, + SpeciesId.BLISSEY, + SpeciesId.ENTEI, + SpeciesId.TYRANITAR, + SpeciesId.HO_OH, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.FLYGON, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SOLROCK, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.ABSOL, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.HAPPINY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.AUDINO, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.HEATMOR, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.RESHIRAM, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.GOODRA, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.VOLCANION, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.SOLGALEO, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.NAGANADEL, + SpeciesId.BLACEPHALON, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.CENTISKORCH, + SpeciesId.DRACOZOLT, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ETERNATUS, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.SCOVILLAIN, + SpeciesId.DUDUNSPARCE, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.GOUGING_FIRE, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_GOODRA, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "blaze", ], ], - [Moves.WATERFALL]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.CHINCHOU, - Species.LANTURN, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.QWILFISH, - Species.REMORAID, - Species.OCTILLERY, - Species.MANTINE, - Species.KINGDRA, - Species.SUICUNE, - Species.LUGIA, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.LOMBRE, - Species.LUDICOLO, - Species.WINGULL, - Species.PELIPPER, - Species.SURSKIT, - Species.MASQUERAIN, - Species.AZURILL, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.FEEBAS, - Species.MILOTIC, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.RAYQUAZA, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIBAREL, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.PALKIA, - Species.PHIONE, - Species.MANAPHY, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PANPOUR, - Species.SIMIPOUR, - Species.BASCULIN, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.WISHIWASHI, - Species.DEWPIDER, - Species.ARAQUANID, - Species.WIMPOD, - Species.GOLISOPOD, - Species.BRUXISH, - Species.TAPU_FINI, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.CHEWTLE, - Species.DREDNAW, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.EISCUE, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.BASCULEGION, - Species.OVERQWIL, - Species.FINIZEN, - Species.PALAFIN, - Species.VELUZA, - Species.DONDOZO, - Species.CLODSIRE, - Species.WALKING_WAKE, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, + [MoveId.WATERFALL]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.QWILFISH, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.AZURILL, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.RAYQUAZA, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIBAREL, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.PALKIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.BASCULIN, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.WISHIWASHI, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.BRUXISH, + SpeciesId.TAPU_FINI, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.EISCUE, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.CLODSIRE, + SpeciesId.WALKING_WAKE, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "rapid-strike", ], - Species.HISUI_QWILFISH, - Species.HISUI_SAMUROTT, - Species.PALDEA_WOOPER, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.PALDEA_WOOPER, ], - [Moves.SWIFT]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.VENONAT, - Species.VENOMOTH, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.DROWZEE, - Species.HYPNO, - Species.VOLTORB, - Species.ELECTRODE, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.CHANSEY, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.SCYTHER, - Species.ELECTABUZZ, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.AERODACTYL, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.CROBAT, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.AIPOM, - Species.YANMA, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.GLIGAR, - Species.QWILFISH, - Species.SCIZOR, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.ELEKID, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LUDICOLO, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.NINJASK, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.SKITTY, - Species.DELCATTY, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.CARVANHA, - Species.SHARPEDO, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CRAWDAUNT, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.CHIMECHO, - Species.ABSOL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.LUVDISC, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, + [MoveId.SWIFT]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.CHANSEY, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.SCYTHER, + SpeciesId.ELECTABUZZ, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.AERODACTYL, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.CROBAT, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.YANMA, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.GLIGAR, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.ELEKID, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LUDICOLO, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.NINJASK, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CRAWDAUNT, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.LUVDISC, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, [ - Species.DEOXYS, + SpeciesId.DEOXYS, "", "speed", ], - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.MOTHIM, - Species.COMBEE, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.CHATOT, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.RIOLU, - Species.LUCARIO, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.WEAVILE, - Species.MAGNEZONE, - Species.ELECTIVIRE, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.PORYGON_Z, - Species.GALLADE, - Species.DUSKNOIR, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PURRLOIN, - Species.LIEPARD, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.BASCULIN, - Species.SIGILYPH, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.DUCKLETT, - Species.SWANNA, - Species.EMOLGA, - Species.JOLTIK, - Species.GALVANTULA, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.ACCELGOR, - Species.MIENFOO, - Species.MIENSHAO, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.ESPURR, - Species.MEOWSTIC, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.KLEFKI, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.LYCANROC, - Species.SALANDIT, - Species.SALAZZLE, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.ORANGURU, - Species.WIMPOD, - Species.GOLISOPOD, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.TOGEDEMARU, - Species.DRAMPA, - Species.TAPU_KOKO, - Species.SOLGALEO, - Species.LUNALA, - Species.PHEROMOSA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.NAGANADEL, - Species.ZERAORA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.NICKIT, - Species.THIEVUL, - Species.YAMPER, - Species.BOLTUND, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXTRICITY, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.OBSTAGOON, - Species.PINCURCHIN, - Species.FROSMOTH, - Species.INDEEDEE, - Species.MORPEKO, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.SNEASLER, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.FLITTLE, - Species.ESPATHRA, - Species.WIGLETT, - Species.WUGTRIO, - Species.FINIZEN, - Species.PALAFIN, - Species.ANNIHILAPE, - Species.FARIGIRAF, - Species.FLUTTER_MANE, - Species.SANDY_SHOCKS, - Species.IRON_BUNDLE, - Species.IRON_MOTH, - Species.IRON_VALIANT, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, - Species.BLOODMOON_URSALUNA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.MOTHIM, + SpeciesId.COMBEE, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.CHATOT, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.ELECTIVIRE, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.BASCULIN, + SpeciesId.SIGILYPH, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.EMOLGA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.ACCELGOR, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.KLEFKI, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.LYCANROC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.ORANGURU, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.TOGEDEMARU, + SpeciesId.DRAMPA, + SpeciesId.TAPU_KOKO, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.PHEROMOSA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.NAGANADEL, + SpeciesId.ZERAORA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXTRICITY, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.OBSTAGOON, + SpeciesId.PINCURCHIN, + SpeciesId.FROSMOTH, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.ANNIHILAPE, + SpeciesId.FARIGIRAF, + SpeciesId.FLUTTER_MANE, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_VALIANT, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.AMNESIA]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.KRABBY, - Species.KINGLER, - Species.LICKITUNG, - Species.TANGELA, - Species.SNORLAX, - Species.MEWTWO, - Species.MEW, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CHINCHOU, - Species.LANTURN, - Species.CLEFFA, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.HOPPIP, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.WOBBUFFET, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.MANTINE, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.GULPIN, - Species.SWALOT, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.BARBOACH, - Species.WHISCASH, - Species.LILEEP, - Species.CRADILY, - Species.CASTFORM, - Species.WYNAUT, - Species.GOREBYSS, - Species.RELICANTH, - Species.REGICE, - Species.REGISTEEL, - Species.JIRACHI, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.BIDOOF, - Species.BIBAREL, - Species.SHELLOS, - Species.GASTRODON, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MUNCHLAX, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.MANTYKE, - Species.LICKILICKY, - Species.TANGROWTH, - Species.TOGEKISS, - Species.MAMOSWINE, - Species.UXIE, - Species.PANSEAR, - Species.SIMISEAR, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.SCRAGGY, - Species.SCRAFTY, - Species.TRUBBISH, - Species.GARBODOR, - Species.BOUFFALANT, - Species.HEATMOR, - Species.LARVESTA, - Species.VOLCARONA, - Species.SWIRLIX, - Species.SLURPUFF, - Species.DIANCIE, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.MORELULL, - Species.SHIINOTIC, - Species.COMFEY, - Species.SANDYGAST, - Species.PALOSSAND, - Species.DRAMPA, - Species.GUZZLORD, - Species.SKWOVET, - Species.GREEDENT, - Species.APPLETUN, - Species.CRAMORANT, - Species.PERRSERKER, - Species.CURSOLA, - Species.RUNERIGUS, - Species.EISCUE, - Species.CETODDLE, - Species.CETITAN, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.SCREAM_TAIL, + [MoveId.AMNESIA]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.LICKITUNG, + SpeciesId.TANGELA, + SpeciesId.SNORLAX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.CLEFFA, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.WOBBUFFET, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.MANTINE, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.CASTFORM, + SpeciesId.WYNAUT, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.JIRACHI, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MUNCHLAX, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.MANTYKE, + SpeciesId.LICKILICKY, + SpeciesId.TANGROWTH, + SpeciesId.TOGEKISS, + SpeciesId.MAMOSWINE, + SpeciesId.UXIE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.BOUFFALANT, + SpeciesId.HEATMOR, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.DIANCIE, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.COMFEY, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.DRAMPA, + SpeciesId.GUZZLORD, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.APPLETUN, + SpeciesId.CRAMORANT, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.EISCUE, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.SCREAM_TAIL, [ - Species.DEOXYS, + SpeciesId.DEOXYS, "defense", ], - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.GALAR_MEOWTH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.PALDEA_WOOPER, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.PALDEA_WOOPER, ], - [Moves.DREAM_EATER]: [ - Species.BUTTERFREE, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.VENOMOTH, - Species.MEOWTH, - Species.PERSIAN, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.LICKITUNG, - Species.CHANSEY, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.LAPRAS, - Species.PORYGON, - Species.MEWTWO, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.AIPOM, - Species.YANMA, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.GLIGAR, - Species.SNEASEL, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PORYGON2, - Species.STANTLER, - Species.SMOOCHUM, - Species.BLISSEY, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SHEDINJA, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.GULPIN, - Species.SWALOT, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.SWABLU, - Species.ALTARIA, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.ABSOL, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.DEOXYS, - Species.WORMADAM, - Species.MOTHIM, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.HAPPINY, - Species.SPIRITOMB, - Species.WEAVILE, - Species.LICKILICKY, - Species.TOGEKISS, - Species.YANMEGA, - Species.PORYGON_Z, - Species.GALLADE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.GIRATINA, - Species.CRESSELIA, - Species.DARKRAI, - Species.ARCEUS, - Species.WATCHOG, - Species.PURRLOIN, - Species.LIEPARD, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.FRILLISH, - Species.JELLICENT, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.MELOETTA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.VIVILLON, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.AMAURA, - Species.AURORUS, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.HOOPA, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.MORELULL, - Species.SHIINOTIC, - Species.ORANGURU, - Species.MIMIKYU, - Species.BRUXISH, - Species.LUNALA, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.MAROWAK, - Species.GALAR_ARTICUNO, + [MoveId.DREAM_EATER]: [ + SpeciesId.BUTTERFREE, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.VENOMOTH, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.LICKITUNG, + SpeciesId.CHANSEY, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.LAPRAS, + SpeciesId.PORYGON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.AIPOM, + SpeciesId.YANMA, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.SNEASEL, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.BLISSEY, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SHEDINJA, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.SPIRITOMB, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.WATCHOG, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.MELOETTA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.VIVILLON, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.HOOPA, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.ORANGURU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.LUNALA, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.MAROWAK, + SpeciesId.GALAR_ARTICUNO, ], - [Moves.LEECH_LIFE]: [ - Species.EKANS, - Species.ARBOK, - Species.SANDSHREW, - Species.SANDSLASH, - Species.ZUBAT, - Species.GOLBAT, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.KABUTO, - Species.KABUTOPS, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.YANMA, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.SURSKIT, - Species.MASQUERAIN, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.DUSKULL, - Species.DUSCLOPS, - Species.KRICKETUNE, - Species.DRAPION, - Species.YANMEGA, - Species.DUSKNOIR, - Species.JOLTIK, - Species.GALVANTULA, - Species.SHELMET, - Species.ACCELGOR, - Species.LARVESTA, - Species.VOLCARONA, - Species.GENESECT, - Species.NOIBAT, - Species.NOIVERN, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.SALANDIT, - Species.SALAZZLE, - Species.WIMPOD, - Species.GOLISOPOD, - Species.MIMIKYU, - Species.BUZZWOLE, - Species.NAGANADEL, - Species.DOTTLER, - Species.ORBEETLE, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.CURSOLA, - Species.FROSMOTH, - Species.DRACOVISH, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.RELLOR, - Species.RABSCA, - Species.SLITHER_WING, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, + [MoveId.LEECH_LIFE]: [ + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.YANMA, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.KRICKETUNE, + SpeciesId.DRAPION, + SpeciesId.YANMEGA, + SpeciesId.DUSKNOIR, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.GENESECT, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.MIMIKYU, + SpeciesId.BUZZWOLE, + SpeciesId.NAGANADEL, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.CURSOLA, + SpeciesId.FROSMOTH, + SpeciesId.DRACOVISH, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.SLITHER_WING, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, ], - [Moves.FLASH]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIKACHU, - Species.RAICHU, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.DROWZEE, - Species.HYPNO, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.KOFFING, - Species.WEEZING, - Species.CHANSEY, - Species.TANGELA, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.JOLTEON, - Species.PORYGON, - Species.ZAPDOS, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.SHUCKLE, - Species.SKARMORY, - Species.PORYGON2, - Species.STANTLER, - Species.SMOOCHUM, - Species.ELEKID, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.CACNEA, - Species.CACTURNE, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.CHERUBI, - Species.CHERRIM, - Species.GASTRODON, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.HAPPINY, - Species.SPIRITOMB, - Species.SKORUPI, - Species.DRAPION, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.SNOVER, - Species.ABOMASNOW, - Species.MAGNEZONE, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.PORYGON_Z, - Species.GALLADE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.CRESSELIA, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.WATCHOG, - Species.PANSAGE, - Species.SIMISAGE, - Species.MUNNA, - Species.MUSHARNA, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.STUNFISK, - Species.GOLETT, - Species.GOLURK, - Species.VIRIZION, - Species.ZEKROM, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.VIVILLON, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.DEDENNE, - Species.CARBINK, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.XERNEAS, - Species.DIANCIE, - Species.HOOPA, - Species.MORELULL, - Species.SHIINOTIC, - Species.PERRSERKER, - Species.MR_RIME, - Species.RUNERIGUS, - Species.WYRDEER, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.ALOLA_RAICHU, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_EXEGGUTOR, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_YAMASK, - Species.HISUI_LILLIGANT, - Species.HISUI_AVALUGG, - Species.PALDEA_WOOPER, + [MoveId.FLASH]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.JOLTEON, + SpeciesId.PORYGON, + SpeciesId.ZAPDOS, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.SHUCKLE, + SpeciesId.SKARMORY, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.GASTRODON, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.SPIRITOMB, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.MAGNEZONE, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.CRESSELIA, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.WATCHOG, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.STUNFISK, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.VIRIZION, + SpeciesId.ZEKROM, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.VIVILLON, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.PERRSERKER, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.WYRDEER, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_YAMASK, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_WOOPER, ], - [Moves.EXPLOSION]: [ - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.MAGNEMITE, - Species.MAGNETON, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.KOFFING, - Species.WEEZING, - Species.MEW, - Species.SUDOWOODO, - Species.PINECO, - Species.FORRETRESS, - Species.STEELIX, - Species.QWILFISH, - Species.MAGCARGO, - Species.CORSOLA, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.NOSEPASS, - Species.GULPIN, - Species.SWALOT, - Species.CAMERUPT, - Species.TORKOAL, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.GLALIE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZONG, - Species.BONSLY, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.PROBOPASS, - Species.AZELF, - Species.HEATRAN, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.TRUBBISH, - Species.GARBODOR, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.FERROSEED, - Species.FERROTHORN, - Species.CRYOGONAL, - Species.LANDORUS, - Species.GENESECT, - Species.CARBINK, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.DIANCIE, - Species.VOLCANION, - Species.SILVALLY, - Species.MINIOR, - Species.TURTONATOR, - Species.CELESTEELA, - Species.MAGEARNA, - Species.BLACEPHALON, - Species.ROLYCOLY, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GARGANACL, - Species.GLIMMET, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.GALAR_WEEZING, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, + [MoveId.EXPLOSION]: [ + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.MEW, + SpeciesId.SUDOWOODO, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.STEELIX, + SpeciesId.QWILFISH, + SpeciesId.MAGCARGO, + SpeciesId.CORSOLA, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.NOSEPASS, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.GLALIE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.PROBOPASS, + SpeciesId.AZELF, + SpeciesId.HEATRAN, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.CRYOGONAL, + SpeciesId.LANDORUS, + SpeciesId.GENESECT, + SpeciesId.CARBINK, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.DIANCIE, + SpeciesId.VOLCANION, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.TURTONATOR, + SpeciesId.CELESTEELA, + SpeciesId.MAGEARNA, + SpeciesId.BLACEPHALON, + SpeciesId.ROLYCOLY, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GARGANACL, + SpeciesId.GLIMMET, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.GALAR_WEEZING, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, ], - [Moves.REST]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.FINIZEN, - Species.PALAFIN, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.PECHARUNT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.REST]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.ROCK_SLIDE]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.EKANS, - Species.ARBOK, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.DIGLETT, - Species.DUGTRIO, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.GRIMER, - Species.MUK, - Species.ONIX, - Species.KRABBY, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.PINSIR, - Species.TAUROS, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SUDOWOODO, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.GRANBULL, - Species.SHUCKLE, - Species.HERACROSS, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.MANTINE, - Species.SKARMORY, - Species.PHANPY, - Species.DONPHAN, - Species.TYROGUE, - Species.HITMONTOP, - Species.MILTANK, - Species.BLISSEY, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.ZANGOOSE, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.KECLEON, - Species.DUSCLOPS, - Species.ABSOL, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.RELICANTH, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.DEOXYS, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.EMPOLEON, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.SHELLOS, - Species.GASTRODON, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.MANTYKE, - Species.ABOMASNOW, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.GLISCOR, - Species.MAMOSWINE, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.DARKRAI, - Species.ARCEUS, - Species.PIGNITE, - Species.EMBOAR, - Species.SIMISAGE, - Species.SIMISEAR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DRILBUR, - Species.EXCADRILL, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SCOLIPEDE, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.DURANT, - Species.HYDREIGON, - Species.TERRAKION, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.HAWLUCHA, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.VOLCANION, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.MUDBRAY, - Species.MUDSDALE, - Species.STUFFUL, - Species.BEWEAR, - Species.ORANGURU, - Species.PASSIMIAN, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_BULU, - Species.SOLGALEO, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.CELESTEELA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MARSHADOW, - Species.STAKATAKA, - Species.MELMETAL, - Species.DREDNAW, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CURSOLA, - Species.RUNERIGUS, - Species.FALINKS, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.URSHIFU, - Species.ZARUDE, - Species.KLEAVOR, - Species.URSALUNA, - Species.SNEASLER, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.KLAWF, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.BOMBIRDIER, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.DONDOZO, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.TING_LU, - Species.ROARING_MOON, - Species.ARCHALUDON, - Species.TERAPAGOS, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_CORSOLA, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.ROCK_SLIDE]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.ONIX, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SUDOWOODO, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.GRANBULL, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.ZANGOOSE, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.KECLEON, + SpeciesId.DUSCLOPS, + SpeciesId.ABSOL, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.RELICANTH, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.DEOXYS, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.MANTYKE, + SpeciesId.ABOMASNOW, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.SIMISAGE, + SpeciesId.SIMISEAR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SCOLIPEDE, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.DURANT, + SpeciesId.HYDREIGON, + SpeciesId.TERRAKION, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.HAWLUCHA, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.VOLCANION, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_BULU, + SpeciesId.SOLGALEO, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MARSHADOW, + SpeciesId.STAKATAKA, + SpeciesId.MELMETAL, + SpeciesId.DREDNAW, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.FALINKS, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.KLAWF, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.BOMBIRDIER, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.DONDOZO, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.TING_LU, + SpeciesId.ROARING_MOON, + SpeciesId.ARCHALUDON, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.TRI_ATTACK]: [ - Species.SPEAROW, - Species.FEAROW, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.DUGTRIO, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNETON, - Species.DODUO, - Species.DODRIO, - Species.SHELLDER, - Species.CLOYSTER, - Species.DROWZEE, - Species.HYPNO, - Species.CHANSEY, - Species.STARYU, - Species.STARMIE, - Species.PORYGON, - Species.MEWTWO, - Species.MEW, - Species.TOGEPI, - Species.TOGETIC, - Species.SLOWKING, - Species.PORYGON2, - Species.BLISSEY, - Species.LATIAS, - Species.LATIOS, - Species.MAGNEZONE, - Species.TOGEKISS, - Species.PORYGON_Z, - Species.PROBOPASS, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.BEHEEYEM, - Species.HYDREIGON, - Species.GENESECT, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MAGEARNA, - Species.ALCREMIE, - Species.INDEEDEE, - Species.DRAGAPULT, - Species.CALYREX, - Species.SANDY_SHOCKS, - Species.IRON_JUGULIS, - Species.ALOLA_DUGTRIO, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, + [MoveId.TRI_ATTACK]: [ + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.DUGTRIO, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNETON, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.CHANSEY, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.PORYGON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.SLOWKING, + SpeciesId.PORYGON2, + SpeciesId.BLISSEY, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.MAGNEZONE, + SpeciesId.TOGEKISS, + SpeciesId.PORYGON_Z, + SpeciesId.PROBOPASS, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.BEHEEYEM, + SpeciesId.HYDREIGON, + SpeciesId.GENESECT, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MAGEARNA, + SpeciesId.ALCREMIE, + SpeciesId.INDEEDEE, + SpeciesId.DRAGAPULT, + SpeciesId.CALYREX, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_JUGULIS, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, ], - [Moves.SUPER_FANG]: [ - Species.RATTATA, - Species.RATICATE, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.ZUBAT, - Species.GOLBAT, - Species.MEW, - Species.SENTRET, - Species.FURRET, - Species.CROBAT, - Species.SNUBBULL, - Species.GRANBULL, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.MAWILE, - Species.PLUSLE, - Species.MINUN, - Species.CARVANHA, - Species.SHARPEDO, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.HUNTAIL, - Species.BIDOOF, - Species.BIBAREL, - Species.PACHIRISU, - Species.GLAMEOW, - Species.PURUGLY, - Species.SKUNTANK, - Species.CROAGUNK, - Species.TOXICROAK, - Species.PATRAT, - Species.WATCHOG, - Species.WOOBAT, - Species.SWOOBAT, - Species.SCRAGGY, - Species.SCRAFTY, - Species.MINCCINO, - Species.CINCCINO, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.DEDENNE, - Species.NOIBAT, - Species.NOIVERN, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.KOMALA, - Species.TOGEDEMARU, - Species.BRUXISH, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SKWOVET, - Species.GREEDENT, - Species.DREDNAW, - Species.MORPEKO, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.LECHONK, - Species.OINKOLOGNE, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.SHROODLE, - Species.GRAFAIAI, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, + [MoveId.SUPER_FANG]: [ + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.MEW, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.CROBAT, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.MAWILE, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.HUNTAIL, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.PACHIRISU, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.SKUNTANK, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.DEDENNE, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.KOMALA, + SpeciesId.TOGEDEMARU, + SpeciesId.BRUXISH, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.DREDNAW, + SpeciesId.MORPEKO, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, ], - [Moves.SUBSTITUTE]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.PECHARUNT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.SUBSTITUTE]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.THIEF]: [ - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.MEW, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.NATU, - Species.XATU, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.YANMA, - Species.QUAGSIRE, - Species.UMBREON, - Species.MURKROW, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.GLIGAR, - Species.SNUBBULL, - Species.GRANBULL, - Species.SCIZOR, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.BLISSEY, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINJASK, - Species.SHEDINJA, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.ABSOL, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.STUNKY, - Species.SKUNTANK, - Species.BONSLY, - Species.MIME_JR, - Species.CHATOT, - Species.SPIRITOMB, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.YANMEGA, - Species.GLISCOR, - Species.PORYGON_Z, - Species.GALLADE, - Species.DUSKNOIR, - Species.ROTOM, - Species.DARKRAI, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.WOOBAT, - Species.SWOOBAT, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.WHIMSICOTT, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.JOLTIK, - Species.GALVANTULA, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.CUBCHOO, - Species.BEARTIC, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.TORNADUS, - Species.THUNDURUS, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.PANGORO, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HAWLUCHA, - Species.DEDENNE, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.HOOPA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.SALANDIT, - Species.SALAZZLE, - Species.COMFEY, - Species.PASSIMIAN, - Species.KOMALA, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.DHELMISE, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.GUZZLORD, - Species.NECROZMA, - Species.MARSHADOW, - Species.NAGANADEL, - Species.BLACEPHALON, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.NICKIT, - Species.THIEVUL, - Species.CRAMORANT, - Species.TOXTRICITY, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MORPEKO, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZARUDE, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.SNEASLER, - Species.MEOWSCARADA, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.SQUAWKABILLY, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.BOMBIRDIER, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.ANNIHILAPE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.BRUTE_BONNET, - Species.IRON_BUNDLE, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_MOLTRES, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.PALDEA_TAUROS, - Species.BLOODMOON_URSALUNA, + [MoveId.THIEF]: [ + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.MEW, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.YANMA, + SpeciesId.QUAGSIRE, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.BLISSEY, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.ABSOL, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.YANMEGA, + SpeciesId.GLISCOR, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.ROTOM, + SpeciesId.DARKRAI, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.WHIMSICOTT, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.PANGORO, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.HOOPA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.COMFEY, + SpeciesId.PASSIMIAN, + SpeciesId.KOMALA, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.DHELMISE, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MARSHADOW, + SpeciesId.NAGANADEL, + SpeciesId.BLACEPHALON, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.CRAMORANT, + SpeciesId.TOXTRICITY, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MORPEKO, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZARUDE, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.MEOWSCARADA, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.SQUAWKABILLY, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.BOMBIRDIER, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.ANNIHILAPE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.BRUTE_BONNET, + SpeciesId.IRON_BUNDLE, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.PALDEA_TAUROS, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.SNORE]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.CATERPIE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.WURMPLE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETOT, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.BURMY, - Species.WORMADAM, - Species.MOTHIM, - Species.COMBEE, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.URSALUNA, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, + [MoveId.SNORE]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.CATERPIE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.WURMPLE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETOT, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BURMY, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.COMBEE, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.URSALUNA, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, ], - [Moves.CURSE]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.HARIYAMA, - Species.NOSEPASS, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.GULPIN, - Species.SWALOT, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.SEVIPER, - Species.WHISCASH, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.BIDOOF, - Species.BIBAREL, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.CHINGLING, - Species.BONSLY, - Species.SPIRITOMB, - Species.MUNCHLAX, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.GIRATINA, - Species.DARKRAI, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.MUNNA, - Species.MUSHARNA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DRILBUR, - Species.EXCADRILL, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TRUBBISH, - Species.GARBODOR, - Species.SAWSBUCK, - Species.FERROSEED, - Species.FERROTHORN, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.BEARTIC, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.GOLETT, - Species.GOLURK, - Species.HEATMOR, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.TYRUNT, - Species.TYRANTRUM, - Species.SYLVEON, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.GUMSHOOS, - Species.MUDBRAY, - Species.MUDSDALE, - Species.PASSIMIAN, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.KOMALA, - Species.TURTONATOR, - Species.MIMIKYU, - Species.SKWOVET, - Species.GREEDENT, - Species.CORVIKNIGHT, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.APPLETUN, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.PERRSERKER, - Species.CURSOLA, - Species.RUNERIGUS, - Species.PINCURCHIN, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.GLASTRIER, - Species.SPECTRIER, + [MoveId.CURSE]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.WHISCASH, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.CHINGLING, + SpeciesId.BONSLY, + SpeciesId.SPIRITOMB, + SpeciesId.MUNCHLAX, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.GIRATINA, + SpeciesId.DARKRAI, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.SAWSBUCK, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.BEARTIC, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.HEATMOR, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.SYLVEON, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.GUMSHOOS, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.PASSIMIAN, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.MIMIKYU, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.CORVIKNIGHT, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.APPLETUN, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.PINCURCHIN, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", "shadow", ], - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.OVERQWIL, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.LECHONK, - Species.OINKOLOGNE, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CERULEDGE, - Species.MABOSSTIFF, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.BOMBIRDIER, - Species.VAROOM, - Species.REVAVROOM, - Species.ORTHWORM, - Species.CETODDLE, - Species.CETITAN, - Species.DONDOZO, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.SLITHER_WING, - Species.IRON_THORNS, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OKIDOGI, - Species.HYDRAPPLE, - Species.PECHARUNT, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_SLOWKING, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.OVERQWIL, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CERULEDGE, + SpeciesId.MABOSSTIFF, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.BOMBIRDIER, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.ORTHWORM, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.DONDOZO, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_THORNS, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.HYDRAPPLE, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, ], - [Moves.REVERSAL]: [ - Species.RATTATA, - Species.RATICATE, - Species.PIKACHU, - Species.RAICHU, - Species.DIGLETT, - Species.DUGTRIO, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.RHYHORN, - Species.RHYDON, - Species.KANGASKHAN, - Species.SCYTHER, - Species.PINSIR, - Species.TAUROS, - Species.MEWTWO, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.SENTRET, - Species.FURRET, - Species.PICHU, - Species.YANMA, - Species.PINECO, - Species.FORRETRESS, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.SWINUB, - Species.PILOSWINE, - Species.DELIBIRD, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.HITMONTOP, - Species.MILTANK, - Species.ENTEI, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.BRELOOM, - Species.VIGOROTH, - Species.SLAKING, - Species.MAKUHITA, - Species.HARIYAMA, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ZANGOOSE, - Species.SEVIPER, - Species.MONFERNO, - Species.INFERNAPE, - Species.VESPIQUEN, - Species.LOPUNNY, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.RHYPERIOR, - Species.YANMEGA, - Species.MAMOSWINE, - Species.GALLADE, - Species.VICTINI, - Species.PIGNITE, - Species.EMBOAR, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.DARMANITAN, - Species.SCRAFTY, - Species.ESCAVALIER, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.BEARTIC, - Species.ACCELGOR, - Species.MIENFOO, - Species.MIENSHAO, - Species.BISHARP, - Species.BOUFFALANT, - Species.BRAVIARY, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.KELDEO, - Species.MELOETTA, - Species.CHESNAUGHT, - Species.PANGORO, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.MALAMAR, - Species.HAWLUCHA, - Species.ZYGARDE, - Species.INCINEROAR, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, + [MoveId.REVERSAL]: [ + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.KANGASKHAN, + SpeciesId.SCYTHER, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.PICHU, + SpeciesId.YANMA, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.DELIBIRD, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.HITMONTOP, + SpeciesId.MILTANK, + SpeciesId.ENTEI, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.BRELOOM, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.VESPIQUEN, + SpeciesId.LOPUNNY, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.RHYPERIOR, + SpeciesId.YANMEGA, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.VICTINI, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.DARMANITAN, + SpeciesId.SCRAFTY, + SpeciesId.ESCAVALIER, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.BEARTIC, + SpeciesId.ACCELGOR, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.BRAVIARY, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESNAUGHT, + SpeciesId.PANGORO, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.MALAMAR, + SpeciesId.HAWLUCHA, + SpeciesId.ZYGARDE, + SpeciesId.INCINEROAR, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", "dusk", ], - Species.BEWEAR, - Species.PASSIMIAN, - Species.SILVALLY, - Species.KOMALA, - Species.TOGEDEMARU, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.BUZZWOLE, - Species.MARSHADOW, - Species.ZERAORA, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.WOOLOO, - Species.DUBWOOL, - Species.CRAMORANT, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.OBSTAGOON, - Species.FALINKS, - Species.PINCURCHIN, - Species.EISCUE, - Species.MORPEKO, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.KUBFU, - Species.URSHIFU, - Species.REGIDRAGO, - Species.KLEAVOR, - Species.SNEASLER, - Species.OVERQWIL, - Species.QUAQUAVAL, - Species.SPIDOPS, - Species.LOKIX, - Species.SQUAWKABILLY, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.KLAWF, - Species.PALAFIN, - Species.FLAMIGO, - Species.ANNIHILAPE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SLITHER_WING, - Species.IRON_HANDS, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.IRON_LEAVES, - Species.OKIDOGI, - Species.OGERPON, - Species.GOUGING_FIRE, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, + SpeciesId.BEWEAR, + SpeciesId.PASSIMIAN, + SpeciesId.SILVALLY, + SpeciesId.KOMALA, + SpeciesId.TOGEDEMARU, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.BUZZWOLE, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CRAMORANT, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.OBSTAGOON, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.EISCUE, + SpeciesId.MORPEKO, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.REGIDRAGO, + SpeciesId.KLEAVOR, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.QUAQUAVAL, + SpeciesId.SPIDOPS, + SpeciesId.LOKIX, + SpeciesId.SQUAWKABILLY, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.KLAWF, + SpeciesId.PALAFIN, + SpeciesId.FLAMIGO, + SpeciesId.ANNIHILAPE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.IRON_LEAVES, + SpeciesId.OKIDOGI, + SpeciesId.OGERPON, + SpeciesId.GOUGING_FIRE, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", "dusk", ], - Species.GALAR_ZAPDOS, - Species.GALAR_DARMANITAN, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, [ - Species.BASCULIN, + SpeciesId.BASCULIN, "blue-striped", "red-striped", ], ], - [Moves.SPITE]: [ - Species.EKANS, - Species.ARBOK, - Species.VULPIX, - Species.NINETALES, - Species.MEOWTH, - Species.PERSIAN, - Species.MANKEY, - Species.PRIMEAPE, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.KANGASKHAN, - Species.TAUROS, - Species.GYARADOS, - Species.MEWTWO, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.SPINARAK, - Species.ARIADOS, - Species.AIPOM, - Species.UMBREON, - Species.MURKROW, - Species.MISDREAVUS, - Species.DUNSPARCE, - Species.QWILFISH, - Species.SNEASEL, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.STANTLER, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.SABLEYE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.CARVANHA, - Species.SHARPEDO, - Species.CACNEA, - Species.CACTURNE, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.VESPIQUEN, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.SPIRITOMB, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.RHYPERIOR, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.GIRATINA, - Species.DARKRAI, - Species.PURRLOIN, - Species.LIEPARD, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.FRILLISH, - Species.JELLICENT, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.STUNFISK, - Species.PAWNIARD, - Species.BISHARP, - Species.VULLABY, - Species.MANDIBUZZ, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.PANCHAM, - Species.PANGORO, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.INKAY, - Species.MALAMAR, - Species.SKRELP, - Species.DRAGALGE, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.ZYGARDE, - Species.DECIDUEYE, - Species.MAREANIE, - Species.TOXAPEX, - Species.ORANGURU, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.MIMIKYU, - Species.DHELMISE, - Species.LUNALA, - Species.NIHILEGO, - Species.BLACEPHALON, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.PERRSERKER, - Species.CURSOLA, - Species.MORPEKO, - Species.WYRDEER, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.LOKIX, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.MABOSSTIFF, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.ANNIHILAPE, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.FLUTTER_MANE, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.PECHARUNT, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_WEEZING, - Species.GALAR_MOLTRES, - Species.GALAR_CORSOLA, - Species.GALAR_STUNFISK, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, + [MoveId.SPITE]: [ + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.KANGASKHAN, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.AIPOM, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.MISDREAVUS, + SpeciesId.DUNSPARCE, + SpeciesId.QWILFISH, + SpeciesId.SNEASEL, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.STANTLER, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.VESPIQUEN, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.SPIRITOMB, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.RHYPERIOR, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.GIRATINA, + SpeciesId.DARKRAI, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.STUNFISK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.ZYGARDE, + SpeciesId.DECIDUEYE, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.ORANGURU, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.MIMIKYU, + SpeciesId.DHELMISE, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BLACEPHALON, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.MORPEKO, + SpeciesId.WYRDEER, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.LOKIX, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.MABOSSTIFF, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.ANNIHILAPE, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.FLUTTER_MANE, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, ], - [Moves.PROTECT]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.BURMY, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.SPEWPA, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.PECHARUNT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.PROTECT]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BURMY, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.SPEWPA, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.SCARY_FACE]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.RATICATE, - Species.SPEAROW, - Species.EKANS, - Species.ARBOK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.VICTREEBEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.GRIMER, - Species.MUK, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.HYPNO, - Species.ELECTRODE, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.SCYTHER, - Species.MAGMAR, - Species.TAUROS, - Species.GYARADOS, - Species.FLAREON, - Species.AERODACTYL, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.NOCTOWL, - Species.SPINARAK, - Species.ARIADOS, - Species.UMBREON, - Species.MURKROW, - Species.MISDREAVUS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SNEASEL, - Species.URSARING, - Species.SWINUB, - Species.PILOSWINE, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.DONPHAN, - Species.STANTLER, - Species.MAGBY, - Species.ENTEI, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.NUZLEAF, - Species.SHIFTRY, - Species.MASQUERAIN, - Species.VIGOROTH, - Species.SLAKING, - Species.HARIYAMA, - Species.AGGRON, - Species.MANECTRIC, - Species.CARVANHA, - Species.SHARPEDO, - Species.NUMEL, - Species.CAMERUPT, - Species.CACNEA, - Species.CACTURNE, - Species.SEVIPER, - Species.WHISCASH, - Species.CRAWDAUNT, - Species.SHUPPET, - Species.BANETTE, - Species.GLALIE, - Species.HUNTAIL, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.TORTERRA, - Species.INFERNAPE, - Species.EMPOLEON, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.VESPIQUEN, - Species.FLOATZEL, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.STUNKY, - Species.SKUNTANK, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.LUCARIO, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.ABOMASNOW, - Species.WEAVILE, - Species.RHYPERIOR, - Species.MAGMORTAR, - Species.YANMEGA, - Species.GLISCOR, - Species.MAMOSWINE, - Species.FROSLASS, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.GIRATINA, - Species.CRESSELIA, - Species.ARCEUS, - Species.SAMUROTT, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.COFAGRIGUS, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.AMOONGUSS, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.BEARTIC, - Species.CRYOGONAL, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.COBALION, - Species.TERRAKION, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.KYUREM, - Species.CHESNAUGHT, - Species.PANGORO, - Species.MALAMAR, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAWITZER, - Species.TYRUNT, - Species.TYRANTRUM, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.AVALUGG, - Species.NOIVERN, - Species.HOOPA, - Species.VOLCANION, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.CRABOMINABLE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.TOXAPEX, - Species.MUDSDALE, - Species.LURANTIS, - Species.SALANDIT, - Species.SALAZZLE, - Species.ORANGURU, - Species.PASSIMIAN, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.BRUXISH, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_BULU, - Species.SOLGALEO, - Species.LUNALA, - Species.NECROZMA, - Species.ZERAORA, - Species.THWACKEY, - Species.RILLABOOM, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.CHEWTLE, - Species.DREDNAW, - Species.FLAPPLE, - Species.SILICOBRA, - Species.SANDACONDA, - Species.BARRASKEWDA, - Species.TOXTRICITY, - Species.GRAPPLOCT, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.RUNERIGUS, - Species.MORPEKO, - Species.COPPERAJAH, - Species.DURALUDON, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SKELEDIRGE, - Species.SPIDOPS, - Species.LOKIX, - Species.DACHSBUN, - Species.SQUAWKABILLY, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.SCOVILLAIN, - Species.BOMBIRDIER, - Species.VAROOM, - Species.REVAVROOM, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.DONDOZO, - Species.ANNIHILAPE, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_THORNS, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.OKIDOGI, - Species.OGERPON, - Species.ARCHALUDON, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.ALOLA_RATICATE, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_ELECTRODE, - Species.HISUI_QWILFISH, - Species.HISUI_SAMUROTT, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.BLOODMOON_URSALUNA, + [MoveId.SCARY_FACE]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.VICTREEBEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.HYPNO, + SpeciesId.ELECTRODE, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.SCYTHER, + SpeciesId.MAGMAR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.FLAREON, + SpeciesId.AERODACTYL, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.NOCTOWL, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.MISDREAVUS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SNEASEL, + SpeciesId.URSARING, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.DONPHAN, + SpeciesId.STANTLER, + SpeciesId.MAGBY, + SpeciesId.ENTEI, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.MASQUERAIN, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.HARIYAMA, + SpeciesId.AGGRON, + SpeciesId.MANECTRIC, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SEVIPER, + SpeciesId.WHISCASH, + SpeciesId.CRAWDAUNT, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.GLALIE, + SpeciesId.HUNTAIL, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.TORTERRA, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.VESPIQUEN, + SpeciesId.FLOATZEL, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.LUCARIO, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.RHYPERIOR, + SpeciesId.MAGMORTAR, + SpeciesId.YANMEGA, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.FROSLASS, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.ARCEUS, + SpeciesId.SAMUROTT, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.COFAGRIGUS, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.AMOONGUSS, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.CHESNAUGHT, + SpeciesId.PANGORO, + SpeciesId.MALAMAR, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAWITZER, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.AVALUGG, + SpeciesId.NOIVERN, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.CRABOMINABLE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.TOXAPEX, + SpeciesId.MUDSDALE, + SpeciesId.LURANTIS, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.BRUXISH, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_BULU, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NECROZMA, + SpeciesId.ZERAORA, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.FLAPPLE, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXTRICITY, + SpeciesId.GRAPPLOCT, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.RUNERIGUS, + SpeciesId.MORPEKO, + SpeciesId.COPPERAJAH, + SpeciesId.DURALUDON, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SKELEDIRGE, + SpeciesId.SPIDOPS, + SpeciesId.LOKIX, + SpeciesId.DACHSBUN, + SpeciesId.SQUAWKABILLY, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.SCOVILLAIN, + SpeciesId.BOMBIRDIER, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.DONDOZO, + SpeciesId.ANNIHILAPE, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_THORNS, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.OKIDOGI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.SLUDGE_BOMB]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.BEEDRILL, - Species.RATTATA, - Species.RATICATE, - Species.EKANS, - Species.ARBOK, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.KOFFING, - Species.WEEZING, - Species.TANGELA, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.BELLOSSOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.WOOPER, - Species.QUAGSIRE, - Species.GLIGAR, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SHUCKLE, - Species.OCTILLERY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.DUSTOX, - Species.SHROOMISH, - Species.BRELOOM, - Species.MAWILE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.TORKOAL, - Species.SEVIPER, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.LILEEP, - Species.CRADILY, - Species.METANG, - Species.METAGROSS, - Species.BUDEW, - Species.ROSERADE, - Species.VESPIQUEN, - Species.GASTRODON, - Species.STUNKY, - Species.SKUNTANK, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.TANGROWTH, - Species.GLISCOR, - Species.DARKRAI, - Species.ARCEUS, - Species.DRILBUR, - Species.EXCADRILL, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.DRUDDIGON, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.VOLCANION, - Species.MAREANIE, - Species.TOXAPEX, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.NIHILEGO, - Species.GUZZLORD, - Species.POIPOLE, - Species.NAGANADEL, - Species.TOXTRICITY, - Species.ETERNATUS, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SHROODLE, - Species.GRAFAIAI, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.RELLOR, - Species.RABSCA, - Species.VAROOM, - Species.REVAVROOM, - Species.GLIMMET, - Species.GLIMMORA, - Species.CLODSIRE, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.PECHARUNT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_SLOWKING, - Species.GALAR_STUNFISK, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.PALDEA_WOOPER, + [MoveId.SLUDGE_BOMB]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.BEEDRILL, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.TANGELA, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.BELLOSSOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.GLIGAR, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SHUCKLE, + SpeciesId.OCTILLERY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.DUSTOX, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.MAWILE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.TORKOAL, + SpeciesId.SEVIPER, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.VESPIQUEN, + SpeciesId.GASTRODON, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.TANGROWTH, + SpeciesId.GLISCOR, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.DRUDDIGON, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.VOLCANION, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.NIHILEGO, + SpeciesId.GUZZLORD, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.TOXTRICITY, + SpeciesId.ETERNATUS, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.CLODSIRE, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.PALDEA_WOOPER, ], - [Moves.MUD_SLAP]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.GRIMER, - Species.MUK, - Species.ONIX, - Species.KRABBY, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.GOLDEEN, - Species.SEAKING, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.KABUTO, - Species.KABUTOPS, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.SHUCKLE, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PHANPY, - Species.DONPHAN, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOMBRE, - Species.LUDICOLO, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.MILOTIC, - Species.KECLEON, - Species.BANETTE, - Species.DUSCLOPS, - Species.TROPIUS, - Species.ABSOL, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETOT, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.MOTHIM, - Species.COMBEE, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.STUNKY, - Species.SKUNTANK, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.LILLIPUP, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DRILBUR, - Species.EXCADRILL, - Species.TYMPOLE, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.MINCCINO, - Species.CUBCHOO, - Species.BEARTIC, - Species.SHELMET, - Species.STUNFISK, - Species.GOLETT, - Species.GOLURK, - Species.BOUFFALANT, - Species.LANDORUS, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.LITLEO, - Species.PYROAR, - Species.SKIDDO, - Species.GOGOAT, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ROCKRUFF, + [MoveId.MUD_SLAP]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.ONIX, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SHUCKLE, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.MILOTIC, + SpeciesId.KECLEON, + SpeciesId.BANETTE, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.ABSOL, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETOT, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.MOTHIM, + SpeciesId.COMBEE, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.LILLIPUP, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.TYMPOLE, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.MINCCINO, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.SHELMET, + SpeciesId.STUNFISK, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.BOUFFALANT, + SpeciesId.LANDORUS, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ROCKRUFF, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midday", "midnight", ], - Species.MUDBRAY, - Species.MUDSDALE, - Species.SALANDIT, - Species.SALAZZLE, - Species.SANDYGAST, - Species.PALOSSAND, - Species.CINDERACE, - Species.SKWOVET, - Species.GREEDENT, - Species.ROLYCOLY, - Species.CARKOL, - Species.SILICOBRA, - Species.SANDACONDA, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.TADBULB, - Species.BELLIBOLT, - Species.SHROODLE, - Species.GRAFAIAI, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.WIGLETT, - Species.WUGTRIO, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.IRON_TREADS, - Species.WO_CHIEN, - Species.TING_LU, - Species.KORAIDON, - Species.MUNKIDORI, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.CINDERACE, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.IRON_TREADS, + SpeciesId.WO_CHIEN, + SpeciesId.TING_LU, + SpeciesId.KORAIDON, + SpeciesId.MUNKIDORI, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "sandy", ], - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_STUNFISK, - Species.PALDEA_WOOPER, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.PALDEA_WOOPER, ], - [Moves.SPIKES]: [ - Species.SANDSHREW, - Species.SANDSLASH, - Species.SHELLDER, - Species.CLOYSTER, - Species.OMANYTE, - Species.OMASTAR, - Species.MEW, - Species.SUDOWOODO, - Species.WOOPER, - Species.QUAGSIRE, - Species.PINECO, - Species.FORRETRESS, - Species.GLIGAR, - Species.QWILFISH, - Species.HERACROSS, - Species.DELIBIRD, - Species.SKARMORY, - Species.ROSELIA, - Species.CACNEA, - Species.CACTURNE, - Species.WHISCASH, - Species.SNORUNT, - Species.GLALIE, - Species.GROUDON, - Species.BUDEW, - Species.ROSERADE, - Species.VESPIQUEN, - Species.GASTRODON, - Species.BONSLY, - Species.GARCHOMP, - Species.GLISCOR, - Species.FROSLASS, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.TRUBBISH, - Species.GARBODOR, - Species.FERROSEED, - Species.FERROTHORN, - Species.SHELMET, - Species.ACCELGOR, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.CARBINK, - Species.KLEFKI, - Species.DIANCIE, - Species.WIMPOD, - Species.GOLISOPOD, - Species.MAGEARNA, - Species.NAGANADEL, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.PINCURCHIN, - Species.OVERQWIL, - Species.MEOWSCARADA, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.CLODSIRE, - Species.SANDY_SHOCKS, - Species.IRON_THORNS, - Species.TING_LU, - Species.OGERPON, + [MoveId.SPIKES]: [ + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.MEW, + SpeciesId.SUDOWOODO, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.GLIGAR, + SpeciesId.QWILFISH, + SpeciesId.HERACROSS, + SpeciesId.DELIBIRD, + SpeciesId.SKARMORY, + SpeciesId.ROSELIA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.WHISCASH, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.GROUDON, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.VESPIQUEN, + SpeciesId.GASTRODON, + SpeciesId.BONSLY, + SpeciesId.GARCHOMP, + SpeciesId.GLISCOR, + SpeciesId.FROSLASS, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.CARBINK, + SpeciesId.KLEFKI, + SpeciesId.DIANCIE, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.MAGEARNA, + SpeciesId.NAGANADEL, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.PINCURCHIN, + SpeciesId.OVERQWIL, + SpeciesId.MEOWSCARADA, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.CLODSIRE, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_THORNS, + SpeciesId.TING_LU, + SpeciesId.OGERPON, [ - Species.DEOXYS, + SpeciesId.DEOXYS, "defense", ], - Species.ALOLA_SANDSLASH, - Species.HISUI_QWILFISH, - Species.PALDEA_WOOPER, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.HISUI_QWILFISH, + SpeciesId.PALDEA_WOOPER, ], - [Moves.ICY_WIND]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.RATTATA, - Species.RATICATE, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.KRABBY, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.SNORLAX, - Species.ARTICUNO, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.CHINCHOU, - Species.LANTURN, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.QWILFISH, - Species.SNEASEL, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.KINGDRA, - Species.PORYGON2, - Species.SMOOCHUM, - Species.MILTANK, - Species.BLISSEY, - Species.SUICUNE, - Species.TYRANITAR, - Species.LUGIA, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SHIFTRY, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.AZURILL, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.ZANGOOSE, - Species.LUNATONE, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.METANG, - Species.METAGROSS, - Species.REGICE, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.RAYQUAZA, - Species.JIRACHI, + [MoveId.ICY_WIND]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.QWILFISH, + SpeciesId.SNEASEL, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.KINGDRA, + SpeciesId.PORYGON2, + SpeciesId.SMOOCHUM, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.SUICUNE, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SHIFTRY, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.AZURILL, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.ZANGOOSE, + SpeciesId.LUNATONE, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGICE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, [ - Species.DEOXYS, + SpeciesId.DEOXYS, "", "speed", ], - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIDOOF, - Species.BIBAREL, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.CHINGLING, - Species.MIME_JR, - Species.HAPPINY, - Species.SPIRITOMB, - Species.MUNCHLAX, - Species.CROAGUNK, - Species.TOXICROAK, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.GLACEON, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.PALKIA, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PANPOUR, - Species.SIMIPOUR, - Species.AUDINO, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.BASCULIN, - Species.SIGILYPH, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.GOLETT, - Species.GOLURK, - Species.TORNADUS, - Species.KYUREM, - Species.KELDEO, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.AMAURA, - Species.AURORUS, - Species.BERGMITE, - Species.AVALUGG, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.MAREANIE, - Species.TOXAPEX, - Species.DEWPIDER, - Species.ARAQUANID, - Species.GOLISOPOD, - Species.TYPE_NULL, - Species.SILVALLY, - Species.BRUXISH, - Species.DRAMPA, - Species.TAPU_FINI, - Species.LUNALA, - Species.PHEROMOSA, - Species.INTELEON, - Species.CRAMORANT, - Species.OBSTAGOON, - Species.CURSOLA, - Species.MR_RIME, - Species.SNOM, - Species.FROSMOTH, - Species.EISCUE, - Species.ARCTOZOLT, - Species.ARCTOVISH, - Species.GLASTRIER, - Species.BASCULEGION, - Species.OVERQWIL, - Species.QUAQUAVAL, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.TATSUGIRI, - Species.FLUTTER_MANE, - Species.IRON_BUNDLE, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.CHIEN_PAO, - Species.IRON_VALIANT, - Species.FEZANDIPITI, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_MAROWAK, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.CHINGLING, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.SPIRITOMB, + SpeciesId.MUNCHLAX, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.GLACEON, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.PALKIA, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.AUDINO, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.BASCULIN, + SpeciesId.SIGILYPH, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.TORNADUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.GOLISOPOD, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.TAPU_FINI, + SpeciesId.LUNALA, + SpeciesId.PHEROMOSA, + SpeciesId.INTELEON, + SpeciesId.CRAMORANT, + SpeciesId.OBSTAGOON, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.EISCUE, + SpeciesId.ARCTOZOLT, + SpeciesId.ARCTOVISH, + SpeciesId.GLASTRIER, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.QUAQUAVAL, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.TATSUGIRI, + SpeciesId.FLUTTER_MANE, + SpeciesId.IRON_BUNDLE, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.CHIEN_PAO, + SpeciesId.IRON_VALIANT, + SpeciesId.FEZANDIPITI, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_QWILFISH, - Species.HISUI_SAMUROTT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_AVALUGG, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_AVALUGG, ], - [Moves.OUTRAGE]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BEEDRILL, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.MAROWAK, - Species.RHYDON, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.SNORLAX, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.MEGANIUM, - Species.FERALIGATR, - Species.AMPHAROS, - Species.GRANBULL, - Species.KINGDRA, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.SCEPTILE, - Species.SWAMPERT, - Species.VIGOROTH, - Species.SLAKING, - Species.EXPLOUD, - Species.AGGRON, - Species.VIBRAVA, - Species.FLYGON, - Species.SWABLU, - Species.ALTARIA, - Species.BARBOACH, - Species.WHISCASH, - Species.TROPIUS, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.RAYQUAZA, - Species.TORTERRA, - Species.RAMPARDOS, - Species.BASTIODON, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.ABOMASNOW, - Species.RHYPERIOR, - Species.DIALGA, - Species.PALKIA, - Species.GIRATINA, - Species.ARCEUS, - Species.SERPERIOR, - Species.KROOKODILE, - Species.SCRAFTY, - Species.ARCHEOPS, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.DRUDDIGON, - Species.BOUFFALANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.PANGORO, - Species.SKRELP, - Species.DRAGALGE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.ZYGARDE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.SILVALLY, - Species.TURTONATOR, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.SOLGALEO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MARSHADOW, - Species.NAGANADEL, - Species.ZERAORA, - Species.FLAPPLE, - Species.APPLETUN, - Species.SANDACONDA, - Species.MORPEKO, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.DRACOVISH, - Species.DURALUDON, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ETERNATUS, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.BASCULEGION, - Species.ENAMORUS, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.MABOSSTIFF, - Species.PALAFIN, - Species.CYCLIZAR, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.DUDUNSPARCE, - Species.BRUTE_BONNET, - Species.IRON_JUGULIS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.ROARING_MOON, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.DIPPLIN, - Species.OKIDOGI, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, + [MoveId.OUTRAGE]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BEEDRILL, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.MAROWAK, + SpeciesId.RHYDON, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.SNORLAX, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.MEGANIUM, + SpeciesId.FERALIGATR, + SpeciesId.AMPHAROS, + SpeciesId.GRANBULL, + SpeciesId.KINGDRA, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.SCEPTILE, + SpeciesId.SWAMPERT, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.EXPLOUD, + SpeciesId.AGGRON, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.TROPIUS, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.RAYQUAZA, + SpeciesId.TORTERRA, + SpeciesId.RAMPARDOS, + SpeciesId.BASTIODON, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.ABOMASNOW, + SpeciesId.RHYPERIOR, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.SERPERIOR, + SpeciesId.KROOKODILE, + SpeciesId.SCRAFTY, + SpeciesId.ARCHEOPS, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.DRUDDIGON, + SpeciesId.BOUFFALANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.PANGORO, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.ZYGARDE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.SILVALLY, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.SOLGALEO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MARSHADOW, + SpeciesId.NAGANADEL, + SpeciesId.ZERAORA, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SANDACONDA, + SpeciesId.MORPEKO, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.DURALUDON, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ETERNATUS, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.BASCULEGION, + SpeciesId.ENAMORUS, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.MABOSSTIFF, + SpeciesId.PALAFIN, + SpeciesId.CYCLIZAR, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.DUDUNSPARCE, + SpeciesId.BRUTE_BONNET, + SpeciesId.IRON_JUGULIS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.DIPPLIN, + SpeciesId.OKIDOGI, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", "dusk", ], [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.PALDEA_TAUROS, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.PALDEA_TAUROS, ], - [Moves.SANDSTORM]: [ - Species.CHARIZARD, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.DIGLETT, - Species.DUGTRIO, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.MAGNEMITE, - Species.MAGNETON, - Species.GRIMER, - Species.MUK, - Species.ONIX, - Species.CUBONE, - Species.MAROWAK, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.TAUROS, - Species.GYARADOS, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.SUDOWOODO, - Species.WOOPER, - Species.QUAGSIRE, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SCIZOR, - Species.SHUCKLE, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.SKARMORY, - Species.PHANPY, - Species.DONPHAN, - Species.HITMONTOP, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.NOSEPASS, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.CASTFORM, - Species.ABSOL, - Species.RELICANTH, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.TORTERRA, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.SHELLOS, - Species.GASTRODON, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PROBOPASS, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.ARCEUS, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DRILBUR, - Species.EXCADRILL, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DWEBBLE, - Species.CRUSTLE, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.ACCELGOR, - Species.STUNFISK, - Species.PAWNIARD, - Species.BISHARP, - Species.MANDIBUZZ, - Species.DURANT, - Species.COBALION, - Species.TERRAKION, - Species.TORNADUS, - Species.LANDORUS, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.BINACLE, - Species.BARBARACLE, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.CARBINK, - Species.KLEFKI, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.ORICORIO, - Species.ROCKRUFF, - Species.LYCANROC, - Species.MUDBRAY, - Species.MUDSDALE, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.NIHILEGO, - Species.STAKATAKA, - Species.DREDNAW, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CURSOLA, - Species.RUNERIGUS, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.ZAMAZENTA, - Species.KLEAVOR, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.VAROOM, - Species.REVAVROOM, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_THORNS, - Species.GHOLDENGO, - Species.TING_LU, - Species.OGERPON, - Species.IRON_BOULDER, + [MoveId.SANDSTORM]: [ + SpeciesId.CHARIZARD, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.ONIX, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SUDOWOODO, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.SKARMORY, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.HITMONTOP, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.NOSEPASS, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.CASTFORM, + SpeciesId.ABSOL, + SpeciesId.RELICANTH, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.TORTERRA, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PROBOPASS, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.ARCEUS, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.MANDIBUZZ, + SpeciesId.DURANT, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.TORNADUS, + SpeciesId.LANDORUS, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.CARBINK, + SpeciesId.KLEFKI, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.ORICORIO, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.NIHILEGO, + SpeciesId.STAKATAKA, + SpeciesId.DREDNAW, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.ZAMAZENTA, + SpeciesId.KLEAVOR, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_THORNS, + SpeciesId.GHOLDENGO, + SpeciesId.TING_LU, + SpeciesId.OGERPON, + SpeciesId.IRON_BOULDER, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "sandy", ], - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_SLOWBRO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_CORSOLA, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, ], - [Moves.GIGA_DRAIN]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.EKANS, - Species.ARBOK, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.TANGELA, - Species.KABUTO, - Species.KABUTOPS, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.NATU, - Species.XATU, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.PINECO, - Species.FORRETRESS, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.SABLEYE, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LILEEP, - Species.CRADILY, - Species.TROPIUS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.KRICKETUNE, - Species.BUDEW, - Species.ROSERADE, - Species.WORMADAM, - Species.MOTHIM, - Species.CHERUBI, - Species.CHERRIM, - Species.CARNIVINE, - Species.SNOVER, - Species.ABOMASNOW, - Species.TANGROWTH, - Species.YANMEGA, - Species.LEAFEON, - Species.UXIE, - Species.SHAYMIN, - Species.ARCEUS, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.PANSAGE, - Species.SIMISAGE, - Species.WOOBAT, - Species.SWOOBAT, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.MARACTUS, - Species.TRUBBISH, - Species.GARBODOR, - Species.DEERLING, - Species.SAWSBUCK, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.SHELMET, - Species.ACCELGOR, - Species.HEATMOR, - Species.LARVESTA, - Species.VOLCARONA, - Species.VIRIZION, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.VIVILLON, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MIMIKYU, - Species.DHELMISE, - Species.TAPU_BULU, - Species.CELESTEELA, - Species.KARTANA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.ORBEETLE, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.FLAPPLE, - Species.APPLETUN, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.CURSOLA, - Species.ALCREMIE, - Species.FROSMOTH, - Species.ZARUDE, - Species.CALYREX, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.BRUTE_BONNET, - Species.SLITHER_WING, - Species.WO_CHIEN, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OGERPON, - Species.HYDRAPPLE, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ETERNAL_FLOETTE, - Species.GALAR_CORSOLA, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, + [MoveId.GIGA_DRAIN]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.TANGELA, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.TROPIUS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.KRICKETUNE, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.CARNIVINE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.TANGROWTH, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.UXIE, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.MARACTUS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.HEATMOR, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.VIRIZION, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.VIVILLON, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MIMIKYU, + SpeciesId.DHELMISE, + SpeciesId.TAPU_BULU, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.ORBEETLE, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.CURSOLA, + SpeciesId.ALCREMIE, + SpeciesId.FROSMOTH, + SpeciesId.ZARUDE, + SpeciesId.CALYREX, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.BRUTE_BONNET, + SpeciesId.SLITHER_WING, + SpeciesId.WO_CHIEN, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OGERPON, + SpeciesId.HYDRAPPLE, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_CORSOLA, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.ENDURE]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.TYPE_NULL, - Species.SILVALLY, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.PECHARUNT, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.ENDURE]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.CHARM]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.PIKACHU, - Species.RAICHU, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.GROWLITHE, - Species.ARCANINE, - Species.PONYTA, - Species.RAPIDASH, - Species.CHANSEY, - Species.MR_MIME, - Species.JYNX, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.SNORLAX, - Species.MEW, - Species.SENTRET, - Species.FURRET, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.ESPEON, - Species.UMBREON, - Species.MISDREAVUS, - Species.WOBBUFFET, - Species.SNUBBULL, - Species.GRANBULL, - Species.TEDDIURSA, - Species.URSARING, - Species.SWINUB, - Species.PILOSWINE, - Species.PHANPY, - Species.DONPHAN, - Species.SMOOCHUM, - Species.MILTANK, - Species.BLISSEY, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SHROOMISH, - Species.BRELOOM, - Species.AZURILL, - Species.SKITTY, - Species.DELCATTY, - Species.PLUSLE, - Species.MINUN, - Species.ILLUMISE, - Species.NUMEL, - Species.CAMERUPT, - Species.CHIMECHO, - Species.WYNAUT, - Species.LUVDISC, - Species.LATIAS, - Species.JIRACHI, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.PACHIRISU, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.GLAMEOW, - Species.PURUGLY, - Species.MIME_JR, - Species.HAPPINY, - Species.MUNCHLAX, - Species.FINNEON, - Species.LUMINEON, - Species.TOGEKISS, - Species.LEAFEON, - Species.GLACEON, - Species.MAMOSWINE, - Species.GALLADE, - Species.FROSLASS, - Species.MESPRIT, - Species.PHIONE, - Species.MANAPHY, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.WOOBAT, - Species.SWOOBAT, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.CUBCHOO, - Species.BEARTIC, - Species.MELOETTA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.FURFROU, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.TYRUNT, - Species.TYRANTRUM, - Species.SYLVEON, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.DIANCIE, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.KOMALA, - Species.MIMIKYU, - Species.TAPU_LELE, - Species.POIPOLE, - Species.NAGANADEL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.YAMPER, - Species.BOLTUND, - Species.TOXEL, - Species.TOXTRICITY, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.PERRSERKER, - Species.MR_RIME, - Species.MILCERY, - Species.ALCREMIE, - Species.URSALUNA, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.FINIZEN, - Species.PALAFIN, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.CETODDLE, - Species.CETITAN, - Species.FLUTTER_MANE, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ALOLA_RAICHU, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_MR_MIME, + [MoveId.CHARM]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.CHANSEY, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MISDREAVUS, + SpeciesId.WOBBUFFET, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.SMOOCHUM, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.AZURILL, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.ILLUMISE, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.CHIMECHO, + SpeciesId.WYNAUT, + SpeciesId.LUVDISC, + SpeciesId.LATIAS, + SpeciesId.JIRACHI, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.PACHIRISU, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.MUNCHLAX, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.FROSLASS, + SpeciesId.MESPRIT, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MELOETTA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.FURFROU, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.SYLVEON, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.DIANCIE, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.KOMALA, + SpeciesId.MIMIKYU, + SpeciesId.TAPU_LELE, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.PERRSERKER, + SpeciesId.MR_RIME, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.URSALUNA, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.FLUTTER_MANE, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_MR_MIME, [ - Species.INDEEDEE, + SpeciesId.INDEEDEE, "female", ], - Species.HISUI_LILLIGANT, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, ], - [Moves.FALSE_SWIPE]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BEEDRILL, - Species.SPEAROW, - Species.FEAROW, - Species.SANDSHREW, - Species.SANDSLASH, - Species.PARAS, - Species.PARASECT, - Species.MEOWTH, - Species.PERSIAN, - Species.FARFETCHD, - Species.KRABBY, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.SCYTHER, - Species.PINSIR, - Species.JOLTEON, - Species.MEW, - Species.GLIGAR, - Species.SCIZOR, - Species.HERACROSS, - Species.SNEASEL, - Species.GROVYLE, - Species.SCEPTILE, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.MAWILE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.ANORITH, - Species.ARMALDO, - Species.ABSOL, - Species.EMPOLEON, - Species.KRICKETUNE, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.SKORUPI, - Species.DRAPION, - Species.WEAVILE, - Species.GLISCOR, - Species.GALLADE, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.LEAVANNY, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.PAWNIARD, - Species.BISHARP, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.KELDEO, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.PANCHAM, - Species.PANGORO, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.BINACLE, - Species.BARBARACLE, - Species.HAWLUCHA, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.FOMANTIS, - Species.LURANTIS, - Species.GOLISOPOD, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_BULU, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.KARTANA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.ZERAORA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.CHEWTLE, - Species.DREDNAW, - Species.PERRSERKER, - Species.FALINKS, - Species.ZACIAN, - Species.URSHIFU, - Species.KLEAVOR, - Species.SNEASLER, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.CERULEDGE, - Species.KINGAMBIT, - Species.BAXCALIBUR, - Species.CHIEN_PAO, - Species.IRON_VALIANT, - Species.IRON_LEAVES, - Species.OGERPON, - Species.ALOLA_SANDSLASH, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_DECIDUEYE, + [MoveId.FALSE_SWIPE]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BEEDRILL, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.FARFETCHD, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.SCYTHER, + SpeciesId.PINSIR, + SpeciesId.JOLTEON, + SpeciesId.MEW, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.MAWILE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.ABSOL, + SpeciesId.EMPOLEON, + SpeciesId.KRICKETUNE, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.WEAVILE, + SpeciesId.GLISCOR, + SpeciesId.GALLADE, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.LEAVANNY, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.KELDEO, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HAWLUCHA, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.GOLISOPOD, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_BULU, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.KARTANA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.PERRSERKER, + SpeciesId.FALINKS, + SpeciesId.ZACIAN, + SpeciesId.URSHIFU, + SpeciesId.KLEAVOR, + SpeciesId.SNEASLER, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.CERULEDGE, + SpeciesId.KINGAMBIT, + SpeciesId.BAXCALIBUR, + SpeciesId.CHIEN_PAO, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_LEAVES, + SpeciesId.OGERPON, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.SWAGGER]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.BLACEPHALON, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.WOOLOO, - Species.TOXTRICITY, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.PERRSERKER, - Species.MORPEKO, - Species.CUFANT, - Species.ZARUDE, - Species.SQUAWKABILLY, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.VAROOM, - Species.REVAVROOM, - Species.ANNIHILAPE, - Species.CHI_YU, - Species.FEZANDIPITI, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_SLOWKING, - Species.PALDEA_TAUROS, + [MoveId.SWAGGER]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.BLACEPHALON, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.WOOLOO, + SpeciesId.TOXTRICITY, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.PERRSERKER, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.ZARUDE, + SpeciesId.SQUAWKABILLY, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.ANNIHILAPE, + SpeciesId.CHI_YU, + SpeciesId.FEZANDIPITI, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWKING, + SpeciesId.PALDEA_TAUROS, ], - [Moves.STEEL_WING]: [ - Species.CHARIZARD, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.SPEAROW, - Species.FEAROW, - Species.ZUBAT, - Species.GOLBAT, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SCYTHER, - Species.AERODACTYL, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CROBAT, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.YANMA, - Species.MURKROW, - Species.GLIGAR, - Species.SCIZOR, - Species.DELIBIRD, - Species.SKARMORY, - Species.LUGIA, - Species.HO_OH, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.VIBRAVA, - Species.FLYGON, - Species.SWABLU, - Species.ALTARIA, - Species.TROPIUS, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.HONCHKROW, - Species.CHATOT, - Species.TOGEKISS, - Species.YANMEGA, - Species.GLISCOR, - Species.GIRATINA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.LEAVANNY, - Species.SIGILYPH, - Species.ARCHEN, - Species.ARCHEOPS, - Species.DUCKLETT, - Species.SWANNA, - Species.ELGYEM, - Species.BEHEEYEM, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HYDREIGON, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.HAWLUCHA, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.ORICORIO, - Species.SILVALLY, - Species.DRAMPA, - Species.TAPU_KOKO, - Species.CORVIKNIGHT, - Species.CRAMORANT, - Species.SIRFETCHD, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.GALAR_FARFETCHD, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, + [MoveId.STEEL_WING]: [ + SpeciesId.CHARIZARD, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SCYTHER, + SpeciesId.AERODACTYL, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CROBAT, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.YANMA, + SpeciesId.MURKROW, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.DELIBIRD, + SpeciesId.SKARMORY, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.TROPIUS, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.HONCHKROW, + SpeciesId.CHATOT, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.GLISCOR, + SpeciesId.GIRATINA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.LEAVANNY, + SpeciesId.SIGILYPH, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HYDREIGON, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.HAWLUCHA, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.ORICORIO, + SpeciesId.SILVALLY, + SpeciesId.DRAMPA, + SpeciesId.TAPU_KOKO, + SpeciesId.CORVIKNIGHT, + SpeciesId.CRAMORANT, + SpeciesId.SIRFETCHD, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, ], - [Moves.ATTRACT]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINJASK, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.HEATRAN, - Species.CRESSELIA, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.APPLIN, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.KUBFU, - Species.URSHIFU, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.DIPPLIN, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.TERAPAGOS, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.ATTRACT]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINJASK, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.HEATRAN, + SpeciesId.CRESSELIA, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.APPLIN, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.DIPPLIN, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.SLEEP_TALK]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.COMBEE, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.PECHARUNT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.SLEEP_TALK]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.COMBEE, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.HEAL_BELL]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.LICKITUNG, - Species.CHANSEY, - Species.JYNX, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.ARTICUNO, - Species.DRAGONITE, - Species.MEW, - Species.CHINCHOU, - Species.LANTURN, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.ESPEON, - Species.UMBREON, - Species.MISDREAVUS, - Species.SNUBBULL, - Species.GRANBULL, - Species.SMOOCHUM, - Species.MILTANK, - Species.BLISSEY, - Species.CELEBI, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.GARDEVOIR, - Species.SKITTY, - Species.DELCATTY, - Species.SPOINK, - Species.GRUMPIG, - Species.SWABLU, - Species.ALTARIA, - Species.CHIMECHO, - Species.KRICKETUNE, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.CHINGLING, - Species.HAPPINY, - Species.LICKILICKY, - Species.TOGEKISS, - Species.LEAFEON, - Species.GLACEON, - Species.UXIE, - Species.PHIONE, - Species.MANAPHY, - Species.MUNNA, - Species.MUSHARNA, - Species.AUDINO, - Species.PETILIL, - Species.LILLIGANT, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.MELOETTA, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.SYLVEON, - Species.DIANCIE, - Species.COMFEY, - Species.MAGEARNA, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.HISUI_LILLIGANT, - Species.ETERNAL_FLOETTE, + [MoveId.HEAL_BELL]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.LICKITUNG, + SpeciesId.CHANSEY, + SpeciesId.JYNX, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.ARTICUNO, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MISDREAVUS, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SMOOCHUM, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.CELEBI, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.GARDEVOIR, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.CHIMECHO, + SpeciesId.KRICKETUNE, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.CHINGLING, + SpeciesId.HAPPINY, + SpeciesId.LICKILICKY, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.UXIE, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.AUDINO, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.MELOETTA, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.SYLVEON, + SpeciesId.DIANCIE, + SpeciesId.COMFEY, + SpeciesId.MAGEARNA, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.ETERNAL_FLOETTE, ], - [Moves.RETURN]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.PECHARUNT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.RETURN]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.FRUSTRATION]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.PECHARUNT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.FRUSTRATION]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.SAFEGUARD]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.BUTTERFREE, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.VILEPLUME, - Species.GROWLITHE, - Species.ARCANINE, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.DROWZEE, - Species.HYPNO, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.SCYTHER, - Species.LAPRAS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.LEDYBA, - Species.LEDIAN, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.WOBBUFFET, - Species.SCIZOR, - Species.SHUCKLE, - Species.CORSOLA, - Species.BLISSEY, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.BEAUTIFLY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SHROOMISH, - Species.BRELOOM, - Species.SKITTY, - Species.DELCATTY, - Species.SPINDA, - Species.SWABLU, - Species.ALTARIA, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.MILOTIC, - Species.TROPIUS, - Species.CHIMECHO, - Species.WYNAUT, - Species.SNORUNT, - Species.GLALIE, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.WORMADAM, - Species.MOTHIM, - Species.CHERUBI, - Species.CHERRIM, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.HAPPINY, - Species.FINNEON, - Species.LUMINEON, - Species.SNOVER, - Species.ABOMASNOW, - Species.TOGEKISS, - Species.GALLADE, - Species.FROSLASS, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.MARACTUS, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DEERLING, - Species.SAWSBUCK, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.GOLETT, - Species.GOLURK, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.VIVILLON, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.ESPURR, - Species.MEOWSTIC, - Species.SWIRLIX, - Species.SLURPUFF, - Species.BINACLE, - Species.BARBARACLE, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.CARBINK, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.MAREANIE, - Species.TOXAPEX, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PYUKUMUKU, - Species.MINIOR, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.STAKATAKA, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.DOTTLER, - Species.ORBEETLE, - Species.APPLETUN, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.CURSOLA, - Species.MR_RIME, - Species.RUNERIGUS, - Species.ALCREMIE, - Species.FROSMOTH, - Species.STONJOURNER, - Species.ZAMAZENTA, - Species.CALYREX, - Species.ARBOLIVA, - Species.RABSCA, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ETERNAL_FLOETTE, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_YAMASK, + [MoveId.SAFEGUARD]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.BUTTERFREE, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.VILEPLUME, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.LAPRAS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.WOBBUFFET, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.CORSOLA, + SpeciesId.BLISSEY, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.BEAUTIFLY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SPINDA, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.MILOTIC, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.WYNAUT, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.TOGEKISS, + SpeciesId.GALLADE, + SpeciesId.FROSLASS, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.MARACTUS, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.VIVILLON, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.CARBINK, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PYUKUMUKU, + SpeciesId.MINIOR, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.STAKATAKA, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.APPLETUN, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.ALCREMIE, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.ZAMAZENTA, + SpeciesId.CALYREX, + SpeciesId.ARBOLIVA, + SpeciesId.RABSCA, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_YAMASK, [ - Species.INDEEDEE, + SpeciesId.INDEEDEE, "female", ], ], - [Moves.PAIN_SPLIT]: [ - Species.ARBOK, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.KOFFING, - Species.WEEZING, - Species.TANGELA, - Species.STARYU, - Species.STARMIE, - Species.PORYGON, - Species.MEW, - Species.IGGLYBUFF, - Species.NATU, - Species.XATU, - Species.MISDREAVUS, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.QWILFISH, - Species.SLUGMA, - Species.MAGCARGO, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PORYGON2, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.NOSEPASS, - Species.SABLEYE, - Species.MAWILE, - Species.MEDITITE, - Species.MEDICHAM, - Species.GULPIN, - Species.SWALOT, - Species.LUNATONE, - Species.SOLROCK, - Species.LILEEP, - Species.CRADILY, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.DEOXYS, - Species.RAMPARDOS, - Species.SHELLOS, - Species.GASTRODON, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.SPIRITOMB, - Species.TANGROWTH, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.GIRATINA, - Species.MUNNA, - Species.MUSHARNA, - Species.AUDINO, - Species.THROH, - Species.SAWK, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.STUNFISK, - Species.KELDEO, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.ZYGARDE, - Species.MAREANIE, - Species.TOXAPEX, - Species.STUFFUL, - Species.BEWEAR, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DHELMISE, - Species.NIHILEGO, - Species.MAGEARNA, - Species.BLACEPHALON, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.POLTEAGEIST, - Species.HATTERENE, - Species.ALCREMIE, - Species.PINCURCHIN, - Species.SPECTRIER, - Species.BASCULEGION, - Species.OVERQWIL, - Species.SPIDOPS, - Species.MABOSSTIFF, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.WUGTRIO, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.VELUZA, - Species.DUDUNSPARCE, - Species.FLUTTER_MANE, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_WEEZING, - Species.GALAR_MOLTRES, - Species.GALAR_STUNFISK, - Species.HISUI_QWILFISH, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, + [MoveId.PAIN_SPLIT]: [ + SpeciesId.ARBOK, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.TANGELA, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.PORYGON, + SpeciesId.MEW, + SpeciesId.IGGLYBUFF, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MISDREAVUS, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.QWILFISH, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PORYGON2, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.NOSEPASS, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.DEOXYS, + SpeciesId.RAMPARDOS, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.SPIRITOMB, + SpeciesId.TANGROWTH, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.GIRATINA, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.AUDINO, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.STUNFISK, + SpeciesId.KELDEO, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.ZYGARDE, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DHELMISE, + SpeciesId.NIHILEGO, + SpeciesId.MAGEARNA, + SpeciesId.BLACEPHALON, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.POLTEAGEIST, + SpeciesId.HATTERENE, + SpeciesId.ALCREMIE, + SpeciesId.PINCURCHIN, + SpeciesId.SPECTRIER, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.SPIDOPS, + SpeciesId.MABOSSTIFF, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.WUGTRIO, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.VELUZA, + SpeciesId.DUDUNSPARCE, + SpeciesId.FLUTTER_MANE, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, ], - [Moves.MEGAHORN]: [ - Species.NIDOKING, - Species.RAPIDASH, - Species.SEEL, - Species.DEWGONG, - Species.RHYHORN, - Species.RHYDON, - Species.GOLDEEN, - Species.SEAKING, - Species.TAUROS, - Species.LAPRAS, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.HERACROSS, - Species.STANTLER, - Species.ABSOL, - Species.RHYPERIOR, - Species.SAMUROTT, - Species.SCOLIPEDE, - Species.SAWSBUCK, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.BOUFFALANT, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.KELDEO, - Species.XERNEAS, - Species.TAPU_BULU, - Species.CELESTEELA, - Species.DREDNAW, - Species.FALINKS, - Species.GLASTRIER, - Species.WYRDEER, - Species.CLODSIRE, - Species.GREAT_TUSK, - Species.IRON_TREADS, - Species.IRON_LEAVES, - Species.IRON_BOULDER, - Species.GALAR_RAPIDASH, + [MoveId.MEGAHORN]: [ + SpeciesId.NIDOKING, + SpeciesId.RAPIDASH, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.TAUROS, + SpeciesId.LAPRAS, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.HERACROSS, + SpeciesId.STANTLER, + SpeciesId.ABSOL, + SpeciesId.RHYPERIOR, + SpeciesId.SAMUROTT, + SpeciesId.SCOLIPEDE, + SpeciesId.SAWSBUCK, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.BOUFFALANT, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.KELDEO, + SpeciesId.XERNEAS, + SpeciesId.TAPU_BULU, + SpeciesId.CELESTEELA, + SpeciesId.DREDNAW, + SpeciesId.FALINKS, + SpeciesId.GLASTRIER, + SpeciesId.WYRDEER, + SpeciesId.CLODSIRE, + SpeciesId.GREAT_TUSK, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_LEAVES, + SpeciesId.IRON_BOULDER, + SpeciesId.GALAR_RAPIDASH, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_SAMUROTT, + SpeciesId.HISUI_SAMUROTT, ], - [Moves.BATON_PASS]: [ - Species.BUTTERFREE, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.VENONAT, - Species.VENOMOTH, - Species.POLIWRATH, - Species.RAPIDASH, - Species.FARFETCHD, - Species.HYPNO, - Species.MR_MIME, - Species.SCYTHER, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.ZAPDOS, - Species.MEW, - Species.SENTRET, - Species.FURRET, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.ESPEON, - Species.UMBREON, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.GLIGAR, - Species.SCIZOR, - Species.DELIBIRD, - Species.CELEBI, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.SURSKIT, - Species.MASQUERAIN, - Species.NINJASK, - Species.SKITTY, - Species.MAWILE, - Species.MEDITITE, - Species.MEDICHAM, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.SPINDA, - Species.ZANGOOSE, - Species.LUNATONE, - Species.SOLROCK, - Species.CHIMECHO, - Species.ABSOL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.KRICKETUNE, - Species.BUIZEL, - Species.FLOATZEL, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.CHINGLING, - Species.MIME_JR, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.TOGEKISS, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.VICTINI, - Species.PATRAT, - Species.WATCHOG, - Species.PURRLOIN, - Species.LIEPARD, - Species.MUNNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.SCOLIPEDE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.ALOMOMOLA, - Species.SHELMET, - Species.ACCELGOR, - Species.MIENFOO, - Species.MIENSHAO, - Species.DURANT, - Species.MELOETTA, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.INKAY, - Species.MALAMAR, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DIANCIE, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.PASSIMIAN, - Species.PYUKUMUKU, - Species.MAGEARNA, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.DUBWOOL, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.PERRSERKER, - Species.MR_RIME, - Species.MORPEKO, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.CALYREX, - Species.KLEAVOR, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SHROODLE, - Species.GRAFAIAI, - Species.FLITTLE, - Species.ESPATHRA, - Species.TATSUGIRI, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.SCREAM_TAIL, - Species.MUNKIDORI, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ETERNAL_FLOETTE, - Species.GALAR_RAPIDASH, - Species.GALAR_MR_MIME, + [MoveId.BATON_PASS]: [ + SpeciesId.BUTTERFREE, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.POLIWRATH, + SpeciesId.RAPIDASH, + SpeciesId.FARFETCHD, + SpeciesId.HYPNO, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.ZAPDOS, + SpeciesId.MEW, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.DELIBIRD, + SpeciesId.CELEBI, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.NINJASK, + SpeciesId.SKITTY, + SpeciesId.MAWILE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.SPINDA, + SpeciesId.ZANGOOSE, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.KRICKETUNE, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.CHINGLING, + SpeciesId.MIME_JR, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.VICTINI, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.MUNNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.SCOLIPEDE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.ALOMOMOLA, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DURANT, + SpeciesId.MELOETTA, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DIANCIE, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.PASSIMIAN, + SpeciesId.PYUKUMUKU, + SpeciesId.MAGEARNA, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.DUBWOOL, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.PERRSERKER, + SpeciesId.MR_RIME, + SpeciesId.MORPEKO, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.CALYREX, + SpeciesId.KLEAVOR, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TATSUGIRI, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.SCREAM_TAIL, + SpeciesId.MUNKIDORI, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_MR_MIME, [ - Species.INDEEDEE, + SpeciesId.INDEEDEE, "female", ], - Species.HISUI_DECIDUEYE, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.ENCORE]: [ - Species.PIKACHU, - Species.RAICHU, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.SEEL, - Species.DEWGONG, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.HITMONCHAN, - Species.MR_MIME, - Species.JYNX, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEW, - Species.LEDYBA, - Species.LEDIAN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.SUNKERN, - Species.SUNFLORA, - Species.WOOPER, - Species.QUAGSIRE, - Species.WOBBUFFET, - Species.SNUBBULL, - Species.GRANBULL, - Species.SHUCKLE, - Species.PHANPY, - Species.DONPHAN, - Species.SMOOCHUM, - Species.LOMBRE, - Species.LUDICOLO, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.AZURILL, - Species.SABLEYE, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GULPIN, - Species.SWALOT, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.CACNEA, - Species.CACTURNE, - Species.SHUPPET, - Species.BANETTE, - Species.CHIMECHO, - Species.WYNAUT, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.JIRACHI, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PACHIRISU, - Species.BUNEARY, - Species.LOPUNNY, - Species.MIME_JR, - Species.CHATOT, - Species.MUNCHLAX, - Species.CROAGUNK, - Species.TOXICROAK, - Species.LUMINEON, - Species.TOGEKISS, - Species.GALLADE, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.VICTINI, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PURRLOIN, - Species.LIEPARD, - Species.AUDINO, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.CUBCHOO, - Species.BEARTIC, - Species.SHELMET, - Species.ACCELGOR, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.SPRITZEE, - Species.AROMATISSE, - Species.AMAURA, - Species.AURORUS, - Species.HAWLUCHA, - Species.DIANCIE, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.TOUCANNON, - Species.SALAZZLE, - Species.COMFEY, - Species.ORANGURU, - Species.TOGEDEMARU, - Species.MAGEARNA, - Species.BLACEPHALON, - Species.TOXEL, - Species.TOXTRICITY, - Species.MR_RIME, - Species.ALCREMIE, + [MoveId.ENCORE]: [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.HITMONCHAN, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.WOBBUFFET, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SHUCKLE, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.SMOOCHUM, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.AZURILL, + SpeciesId.SABLEYE, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.CHIMECHO, + SpeciesId.WYNAUT, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.JIRACHI, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PACHIRISU, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MIME_JR, + SpeciesId.CHATOT, + SpeciesId.MUNCHLAX, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.LUMINEON, + SpeciesId.TOGEKISS, + SpeciesId.GALLADE, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.VICTINI, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.AUDINO, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.HAWLUCHA, + SpeciesId.DIANCIE, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.TOUCANNON, + SpeciesId.SALAZZLE, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.TOGEDEMARU, + SpeciesId.MAGEARNA, + SpeciesId.BLACEPHALON, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.MR_RIME, + SpeciesId.ALCREMIE, [ - Species.INDEEDEE, + SpeciesId.INDEEDEE, "male", ], - Species.ZARUDE, - Species.CALYREX, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.ARBOLIVA, - Species.SHROODLE, - Species.GRAFAIAI, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.FINIZEN, - Species.PALAFIN, - Species.ANNIHILAPE, - Species.SCREAM_TAIL, - Species.IRON_BUNDLE, - Species.IRON_VALIANT, - Species.OGERPON, - Species.ALOLA_RAICHU, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.GALAR_MR_MIME, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, + SpeciesId.ZARUDE, + SpeciesId.CALYREX, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.ARBOLIVA, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.ANNIHILAPE, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_VALIANT, + SpeciesId.OGERPON, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, ], - [Moves.IRON_TAIL]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.RATTATA, - Species.RATICATE, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.FARFETCHD, - Species.SEEL, - Species.DEWGONG, - Species.ONIX, - Species.CUBONE, - Species.MAROWAK, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.AERODACTYL, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.PICHU, - Species.CLEFFA, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.AIPOM, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.SLOWKING, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.GRANBULL, - Species.SNEASEL, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BRELOOM, - Species.AZURILL, - Species.SKITTY, - Species.DELCATTY, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.FLYGON, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.KECLEON, - Species.ABSOL, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.SALAMENCE, - Species.GROUDON, - Species.RAYQUAZA, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.BIDOOF, - Species.BIBAREL, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.GLAMEOW, - Species.PURUGLY, - Species.STUNKY, - Species.SKUNTANK, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.PORYGON_Z, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.GIRATINA, - Species.ARCEUS, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.AUDINO, - Species.SCOLIPEDE, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.MINCCINO, - Species.CINCCINO, - Species.EMOLGA, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.DRUDDIGON, - Species.HYDREIGON, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.LITLEO, - Species.PYROAR, - Species.SKIDDO, - Species.GOGOAT, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.DEDENNE, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.NOIBAT, - Species.NOIVERN, - Species.ZYGARDE, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.SALANDIT, - Species.SALAZZLE, - Species.PASSIMIAN, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.BRUXISH, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.SOLGALEO, - Species.GUZZLORD, - Species.POIPOLE, - Species.NAGANADEL, - Species.ZERAORA, - Species.SKWOVET, - Species.GREEDENT, - Species.DREDNAW, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ZARUDE, - Species.WYRDEER, - Species.SNEASLER, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.ANNIHILAPE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, + [MoveId.IRON_TAIL]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.FARFETCHD, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.ONIX, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.AERODACTYL, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.AIPOM, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.GRANBULL, + SpeciesId.SNEASEL, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BRELOOM, + SpeciesId.AZURILL, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.FLYGON, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.KECLEON, + SpeciesId.ABSOL, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.SALAMENCE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.PORYGON_Z, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.AUDINO, + SpeciesId.SCOLIPEDE, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.EMOLGA, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.DRUDDIGON, + SpeciesId.HYDREIGON, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.DEDENNE, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.ZYGARDE, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.PASSIMIAN, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.BRUXISH, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.SOLGALEO, + SpeciesId.GUZZLORD, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.ZERAORA, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.DREDNAW, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ZARUDE, + SpeciesId.WYRDEER, + SpeciesId.SNEASLER, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.ANNIHILAPE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, ], - [Moves.METAL_CLAW]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SANDSHREW, - Species.SANDSLASH, - Species.PARAS, - Species.MEOWTH, - Species.PERSIAN, - Species.KRABBY, - Species.KINGLER, - Species.MEW, - Species.TOTODILE, - Species.GLIGAR, - Species.SCIZOR, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SKARMORY, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.SABLEYE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.ZANGOOSE, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.ANORITH, - Species.ARMALDO, - Species.METANG, - Species.METAGROSS, - Species.REGISTEEL, - Species.GROUDON, - Species.PRINPLUP, - Species.EMPOLEON, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.RIOLU, - Species.LUCARIO, - Species.WEAVILE, - Species.GLISCOR, - Species.DIALGA, - Species.HEATRAN, - Species.DRILBUR, - Species.EXCADRILL, - Species.GARBODOR, - Species.FERROSEED, - Species.FERROTHORN, - Species.CUBCHOO, - Species.BEARTIC, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.BRAVIARY, - Species.DURANT, - Species.COBALION, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.WIMPOD, - Species.KOMALA, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.SOLGALEO, - Species.NECROZMA, - Species.CORVIKNIGHT, - Species.PERRSERKER, - Species.DURALUDON, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.KUBFU, - Species.URSHIFU, - Species.URSALUNA, - Species.SNEASLER, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.KLAWF, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.KINGAMBIT, - Species.IRON_THORNS, - Species.ROARING_MOON, - Species.OKIDOGI, - Species.ARCHALUDON, - Species.IRON_CROWN, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.GALAR_MEOWTH, - Species.GALAR_STUNFISK, - Species.HISUI_SNEASEL, - Species.HISUI_BRAVIARY, - Species.BLOODMOON_URSALUNA, + [MoveId.METAL_CLAW]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.PARAS, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SKARMORY, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.ZANGOOSE, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.WEAVILE, + SpeciesId.GLISCOR, + SpeciesId.DIALGA, + SpeciesId.HEATRAN, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.GARBODOR, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BRAVIARY, + SpeciesId.DURANT, + SpeciesId.COBALION, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.WIMPOD, + SpeciesId.KOMALA, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.SOLGALEO, + SpeciesId.NECROZMA, + SpeciesId.CORVIKNIGHT, + SpeciesId.PERRSERKER, + SpeciesId.DURALUDON, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.KLAWF, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.KINGAMBIT, + SpeciesId.IRON_THORNS, + SpeciesId.ROARING_MOON, + SpeciesId.OKIDOGI, + SpeciesId.ARCHALUDON, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.SYNTHESIS]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.TANGELA, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.SUNKERN, - Species.SUNFLORA, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SHROOMISH, - Species.BRELOOM, - Species.ROSELIA, - Species.CACNEA, - Species.CACTURNE, - Species.LILEEP, - Species.CRADILY, - Species.TROPIUS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.BUDEW, - Species.ROSERADE, + [MoveId.SYNTHESIS]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.TANGELA, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.ROSELIA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.TROPIUS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "plant", ], - Species.CHERUBI, - Species.CHERRIM, - Species.CARNIVINE, - Species.SNOVER, - Species.ABOMASNOW, - Species.TANGROWTH, - Species.LEAFEON, - Species.SHAYMIN, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.PANSAGE, - Species.SIMISAGE, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.PETILIL, - Species.LILLIGANT, - Species.MARACTUS, - Species.DEERLING, - Species.SAWSBUCK, - Species.FOONGUS, - Species.AMOONGUSS, - Species.VIRIZION, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.DHELMISE, - Species.TAPU_BULU, - Species.KARTANA, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.ZARUDE, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.BRUTE_BONNET, - Species.OGERPON, - Species.ALOLA_EXEGGUTOR, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.CARNIVINE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.TANGROWTH, + SpeciesId.LEAFEON, + SpeciesId.SHAYMIN, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.MARACTUS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.VIRIZION, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.DHELMISE, + SpeciesId.TAPU_BULU, + SpeciesId.KARTANA, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.ZARUDE, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.BRUTE_BONNET, + SpeciesId.OGERPON, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.HIDDEN_POWER]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.UNOWN, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.BURMY, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.PECHARUNT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.HIDDEN_POWER]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.UNOWN, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BURMY, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.RAIN_DANCE]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.HOPPIP, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.TOGEKISS, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.BASCULIN, - Species.MARACTUS, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.VOLCARONA, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.BERGMITE, - Species.AVALUGG, - Species.XERNEAS, - Species.YVELTAL, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.DEWPIDER, - Species.ARAQUANID, - Species.LURANTIS, - Species.SHIINOTIC, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.TYPE_NULL, - Species.SILVALLY, - Species.KOMALA, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_FINI, - Species.XURKITREE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.GREEDENT, - Species.CORVIKNIGHT, - Species.CHEWTLE, - Species.DREDNAW, - Species.APPLETUN, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXTRICITY, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.MR_RIME, - Species.RUNERIGUS, - Species.FALINKS, - Species.PINCURCHIN, - Species.EISCUE, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.REGIELEKI, - Species.WYRDEER, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.TADBULB, - Species.BELLIBOLT, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.SCREAM_TAIL, - Species.SLITHER_WING, - Species.IRON_BUNDLE, - Species.IRON_JUGULIS, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.WALKING_WAKE, - Species.OGERPON, - Species.HYDRAPPLE, - Species.TERAPAGOS, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, + [MoveId.RAIN_DANCE]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.BASCULIN, + SpeciesId.MARACTUS, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.VOLCARONA, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.LURANTIS, + SpeciesId.SHIINOTIC, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.KOMALA, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_FINI, + SpeciesId.XURKITREE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.GREEDENT, + SpeciesId.CORVIKNIGHT, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.APPLETUN, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXTRICITY, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.EISCUE, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.REGIELEKI, + SpeciesId.WYRDEER, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.SCREAM_TAIL, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.WALKING_WAKE, + SpeciesId.OGERPON, + SpeciesId.HYDRAPPLE, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "rapid-strike", ], - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.SUNNY_DAY]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.MR_MIME, - Species.SCYTHER, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.SUDOWOODO, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.CHERUBI, - Species.CHERRIM, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.SCRAGGY, - Species.SCRAFTY, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.DEERLING, - Species.SAWSBUCK, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FERROSEED, - Species.FERROTHORN, - Species.EELEKTROSS, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, + [MoveId.SUNNY_DAY]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.SUDOWOODO, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.EELEKTROSS, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midday", "midnight", ], - Species.MUDBRAY, - Species.MUDSDALE, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.KOMALA, - Species.TURTONATOR, - Species.MIMIKYU, - Species.DRAMPA, - Species.DHELMISE, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.SOLGALEO, - Species.LUNALA, - Species.XURKITREE, - Species.MAGEARNA, - Species.BLACEPHALON, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.GREEDENT, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.FALINKS, - Species.STONJOURNER, - Species.DRACOZOLT, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.ZARUDE, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.SNEASLER, - Species.ENAMORUS, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.BOMBIRDIER, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.ANNIHILAPE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.WO_CHIEN, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.WALKING_WAKE, - Species.DIPPLIN, - Species.OGERPON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.TERAPAGOS, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_SNEASEL, - Species.HISUI_LILLIGANT, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_DECIDUEYE, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.MIMIKYU, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.XURKITREE, + SpeciesId.MAGEARNA, + SpeciesId.BLACEPHALON, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.GREEDENT, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.FALINKS, + SpeciesId.STONJOURNER, + SpeciesId.DRACOZOLT, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.ZARUDE, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.ENAMORUS, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.BOMBIRDIER, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.ANNIHILAPE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.WO_CHIEN, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.DIPPLIN, + SpeciesId.OGERPON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_DECIDUEYE, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "combat", "blaze", ], - Species.BLOODMOON_URSALUNA, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.CRUNCH]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.BLASTOISE, - Species.RATTATA, - Species.RATICATE, - Species.EKANS, - Species.ARBOK, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.ZUBAT, - Species.GOLBAT, - Species.GROWLITHE, - Species.ARCANINE, - Species.RHYHORN, - Species.RHYDON, - Species.KANGASKHAN, - Species.GYARADOS, - Species.OMASTAR, - Species.AERODACTYL, - Species.SNORLAX, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.CROBAT, - Species.UMBREON, - Species.GIRAFARIG, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.TEDDIURSA, - Species.URSARING, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.EXPLOUD, - Species.MAWILE, - Species.AGGRON, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.CARVANHA, - Species.SHARPEDO, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.SEVIPER, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.SNORUNT, - Species.GLALIE, - Species.WALREIN, - Species.HUNTAIL, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.GROUDON, - Species.RAYQUAZA, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.BIDOOF, - Species.BIBAREL, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.CRANIDOS, - Species.BUIZEL, - Species.FLOATZEL, - Species.STUNKY, - Species.SKUNTANK, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CARNIVINE, - Species.RHYPERIOR, - Species.YANMEGA, - Species.GLISCOR, - Species.FROSLASS, - Species.HEATRAN, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISAGE, - Species.PANPOUR, - Species.SIMIPOUR, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZOROARK, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.DRUDDIGON, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.CHESNAUGHT, - Species.LITLEO, - Species.PYROAR, - Species.PANCHAM, - Species.PANGORO, - Species.TYRUNT, - Species.TYRANTRUM, - Species.BERGMITE, - Species.AVALUGG, - Species.ZYGARDE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.ROCKRUFF, - Species.LYCANROC, - Species.DEWPIDER, - Species.ARAQUANID, - Species.SILVALLY, - Species.BRUXISH, - Species.SOLGALEO, - Species.GUZZLORD, - Species.SKWOVET, - Species.GREEDENT, - Species.THIEVUL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.GRIMMSNARL, - Species.PERRSERKER, - Species.MORPEKO, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ZARUDE, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.URSALUNA, - Species.BASCULEGION, - Species.OVERQWIL, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.CYCLIZAR, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.VELUZA, - Species.DONDOZO, - Species.FARIGIRAF, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.IRON_JUGULIS, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.CHIEN_PAO, - Species.CHI_YU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.OKIDOGI, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.TERAPAGOS, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.GALAR_MEOWTH, - Species.GALAR_STUNFISK, + [MoveId.CRUNCH]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.BLASTOISE, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.KANGASKHAN, + SpeciesId.GYARADOS, + SpeciesId.OMASTAR, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.CROBAT, + SpeciesId.UMBREON, + SpeciesId.GIRAFARIG, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.EXPLOUD, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.SEVIPER, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.WALREIN, + SpeciesId.HUNTAIL, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.CRANIDOS, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CARNIVINE, + SpeciesId.RHYPERIOR, + SpeciesId.YANMEGA, + SpeciesId.GLISCOR, + SpeciesId.FROSLASS, + SpeciesId.HEATRAN, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISAGE, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZOROARK, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.DRUDDIGON, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.CHESNAUGHT, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.ZYGARDE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.SILVALLY, + SpeciesId.BRUXISH, + SpeciesId.SOLGALEO, + SpeciesId.GUZZLORD, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.THIEVUL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.GRIMMSNARL, + SpeciesId.PERRSERKER, + SpeciesId.MORPEKO, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ZARUDE, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.CYCLIZAR, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.FARIGIRAF, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.CHIEN_PAO, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.OKIDOGI, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_STUNFISK, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "single-strike", ], [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", "shadow", ], - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_QWILFISH, - Species.HISUI_ZOROARK, - Species.HISUI_AVALUGG, - Species.BLOODMOON_URSALUNA, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_AVALUGG, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.PSYCH_UP]: [ - Species.BUTTERFREE, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.LICKITUNG, - Species.CHANSEY, - Species.TANGELA, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.PORYGON, - Species.SNORLAX, - Species.MEWTWO, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.SUDOWOODO, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.STEELIX, - Species.SNEASEL, - Species.PORYGON2, - Species.STANTLER, - Species.SMOOCHUM, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.NUZLEAF, - Species.SHIFTRY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.MEDITITE, - Species.MEDICHAM, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.SWABLU, - Species.ALTARIA, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.ABSOL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.BUDEW, - Species.ROSERADE, - Species.WORMADAM, - Species.MOTHIM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.SPIRITOMB, - Species.FINNEON, - Species.LUMINEON, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.TANGROWTH, - Species.TOGEKISS, - Species.YANMEGA, - Species.PORYGON_Z, - Species.GALLADE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.WATCHOG, - Species.PURRLOIN, - Species.LIEPARD, - Species.MUNNA, - Species.MUSHARNA, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.ZORUA, - Species.ZOROARK, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.MIENFOO, - Species.MIENSHAO, - Species.VULLABY, - Species.MANDIBUZZ, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.KELDEO, - Species.MELOETTA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.VIVILLON, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.CARBINK, - Species.KLEFKI, - Species.XERNEAS, - Species.DIANCIE, - Species.HOOPA, - Species.PRIMARINA, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.COMFEY, - Species.ORANGURU, - Species.GOLISOPOD, - Species.PYUKUMUKU, - Species.MINIOR, - Species.KOMALA, - Species.MIMIKYU, - Species.DRAMPA, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.MARSHADOW, - Species.INDEEDEE, - Species.RABSCA, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_EXEGGUTOR, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, + [MoveId.PSYCH_UP]: [ + SpeciesId.BUTTERFREE, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.LICKITUNG, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.PORYGON, + SpeciesId.SNORLAX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.SUDOWOODO, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.STEELIX, + SpeciesId.SNEASEL, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.SPIRITOMB, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.TANGROWTH, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.WATCHOG, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.VIVILLON, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.CARBINK, + SpeciesId.KLEFKI, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.PRIMARINA, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.GOLISOPOD, + SpeciesId.PYUKUMUKU, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.MIMIKYU, + SpeciesId.DRAMPA, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.MARSHADOW, + SpeciesId.INDEEDEE, + SpeciesId.RABSCA, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, ], - [Moves.SHADOW_BALL]: [ - Species.BUTTERFREE, - Species.RATTATA, - Species.RATICATE, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.MEOWTH, - Species.PERSIAN, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.JYNX, - Species.TAUROS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.SNORLAX, - Species.MEWTWO, - Species.MEW, - Species.TYPHLOSION, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CROBAT, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.AIPOM, - Species.YANMA, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SNEASEL, - Species.CORSOLA, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PORYGON2, - Species.STANTLER, - Species.SMOOCHUM, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.MEDITITE, - Species.MEDICHAM, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.GOREBYSS, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.DEOXYS, - Species.BIDOOF, - Species.BIBAREL, - Species.BUDEW, - Species.ROSERADE, - Species.WORMADAM, - Species.MOTHIM, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.HAPPINY, - Species.SPIRITOMB, - Species.MUNCHLAX, - Species.LUCARIO, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.PORYGON_Z, - Species.GALLADE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.GIRATINA, - Species.CRESSELIA, - Species.MANAPHY, - Species.DARKRAI, - Species.ARCEUS, - Species.VICTINI, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.WHIMSICOTT, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.ZORUA, - Species.ZOROARK, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DEERLING, - Species.SAWSBUCK, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.GOLETT, - Species.GOLURK, - Species.VULLABY, - Species.MANDIBUZZ, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.MELOETTA, - Species.DELPHOX, - Species.MEOWSTIC, - Species.AEGISLASH, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAWITZER, - Species.SYLVEON, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.HOOPA, - Species.DECIDUEYE, - Species.PRIMARINA, - Species.ORANGURU, - Species.PASSIMIAN, - Species.SANDYGAST, - Species.PALOSSAND, - Species.SILVALLY, - Species.MIMIKYU, - Species.DRAMPA, - Species.DHELMISE, - Species.TAPU_LELE, - Species.TAPU_FINI, - Species.LUNALA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.BLACEPHALON, - Species.CINDERACE, - Species.INTELEON, - Species.DOTTLER, - Species.ORBEETLE, - Species.THIEVUL, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATTERENE, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.MR_RIME, - Species.RUNERIGUS, - Species.INDEEDEE, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ETERNATUS, - Species.SPECTRIER, - Species.WYRDEER, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.MEOWSCARADA, - Species.SKELEDIRGE, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.RABSCA, - Species.ESPATHRA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.ANNIHILAPE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.FLUTTER_MANE, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.IRON_VALIANT, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.PECHARUNT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_YAMASK, + [MoveId.SHADOW_BALL]: [ + SpeciesId.BUTTERFREE, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.TAUROS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.SNORLAX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CROBAT, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.AIPOM, + SpeciesId.YANMA, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SNEASEL, + SpeciesId.CORSOLA, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.GOREBYSS, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.SPIRITOMB, + SpeciesId.MUNCHLAX, + SpeciesId.LUCARIO, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.WHIMSICOTT, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.MELOETTA, + SpeciesId.DELPHOX, + SpeciesId.MEOWSTIC, + SpeciesId.AEGISLASH, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAWITZER, + SpeciesId.SYLVEON, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.HOOPA, + SpeciesId.DECIDUEYE, + SpeciesId.PRIMARINA, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.SILVALLY, + SpeciesId.MIMIKYU, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_FINI, + SpeciesId.LUNALA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.BLACEPHALON, + SpeciesId.CINDERACE, + SpeciesId.INTELEON, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.THIEVUL, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATTERENE, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.INDEEDEE, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ETERNATUS, + SpeciesId.SPECTRIER, + SpeciesId.WYRDEER, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.MEOWSCARADA, + SpeciesId.SKELEDIRGE, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.RABSCA, + SpeciesId.ESPATHRA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.ANNIHILAPE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.FLUTTER_MANE, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.IRON_VALIANT, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_YAMASK, [ - Species.CALYREX, + SpeciesId.CALYREX, "shadow", ], - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.FUTURE_SIGHT]: [ - Species.PSYDUCK, - Species.GOLDUCK, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGUTOR, - Species.MR_MIME, - Species.JYNX, - Species.LAPRAS, - Species.MEWTWO, - Species.MEW, - Species.NOCTOWL, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MARILL, - Species.AZUMARILL, - Species.ESPEON, - Species.SLOWKING, - Species.GIRAFARIG, - Species.DELIBIRD, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SPOINK, - Species.LUNATONE, - Species.BARBOACH, - Species.WHISCASH, - Species.CLAYDOL, - Species.CASTFORM, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.ABSOL, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.TOGEKISS, - Species.GALLADE, - Species.DUSKNOIR, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.ARCEUS, - Species.VICTINI, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.DARMANITAN, - Species.SIGILYPH, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.BEHEEYEM, - Species.DELPHOX, - Species.INKAY, - Species.MALAMAR, - Species.ORANGURU, - Species.TAPU_LELE, - Species.SOLGALEO, - Species.LUNALA, - Species.NECROZMA, - Species.DOTTLER, - Species.ORBEETLE, - Species.HATTERENE, - Species.MR_RIME, - Species.INDEEDEE, - Species.CALYREX, - Species.IRON_VALIANT, - Species.MUNKIDORI, - Species.IRON_CROWN, + [MoveId.FUTURE_SIGHT]: [ + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGUTOR, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.LAPRAS, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.NOCTOWL, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.ESPEON, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.DELIBIRD, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SPOINK, + SpeciesId.LUNATONE, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CLAYDOL, + SpeciesId.CASTFORM, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.TOGEKISS, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DARMANITAN, + SpeciesId.SIGILYPH, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.BEHEEYEM, + SpeciesId.DELPHOX, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.ORANGURU, + SpeciesId.TAPU_LELE, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NECROZMA, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.HATTERENE, + SpeciesId.MR_RIME, + SpeciesId.INDEEDEE, + SpeciesId.CALYREX, + SpeciesId.IRON_VALIANT, + SpeciesId.MUNKIDORI, + SpeciesId.IRON_CROWN, [ - Species.MEOWSTIC, + SpeciesId.MEOWSTIC, "female", ], - Species.ALOLA_RAICHU, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_SLOWKING, + SpeciesId.ALOLA_RAICHU, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_SLOWKING, ], - [Moves.ROCK_SMASH]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BEEDRILL, - Species.RATTATA, - Species.RATICATE, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.PARAS, - Species.PARASECT, - Species.DIGLETT, - Species.DUGTRIO, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWBRO, - Species.MUK, - Species.GENGAR, - Species.ONIX, - Species.KRABBY, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.SCYTHER, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.BAYLEEF, - Species.MEGANIUM, - Species.QUILAVA, - Species.TYPHLOSION, - Species.CROCONAW, - Species.FERALIGATR, - Species.FURRET, - Species.LEDIAN, - Species.TOGEPI, - Species.TOGETIC, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.SLOWKING, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PHANPY, - Species.DONPHAN, - Species.TYROGUE, - Species.HITMONTOP, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.GULPIN, - Species.SWALOT, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.CLAYDOL, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.KECLEON, - Species.DUSCLOPS, - Species.TROPIUS, - Species.ABSOL, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.RELICANTH, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.BUIZEL, - Species.FLOATZEL, - Species.GASTRODON, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZONG, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.DARKRAI, - Species.ARCEUS, - Species.VICTINI, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DRILBUR, - Species.EXCADRILL, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZOROARK, - Species.REUNICLUS, - Species.SAWSBUCK, - Species.ESCAVALIER, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.LITLEO, - Species.PYROAR, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.BINACLE, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.GOODRA, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.ZYGARDE, - Species.VOLCANION, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.MUDBRAY, - Species.MUDSDALE, - Species.PASSIMIAN, - Species.GOLISOPOD, - Species.TAPU_BULU, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.OBSTAGOON, - Species.SIRFETCHD, - Species.FALINKS, - Species.CUFANT, - Species.COPPERAJAH, - Species.DURALUDON, - Species.KUBFU, - Species.URSHIFU, - Species.KLEAVOR, - Species.URSALUNA, - Species.SNEASLER, - Species.ENAMORUS, - Species.KLAWF, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.KORAIDON, - Species.ARCHALUDON, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MAROWAK, - Species.GALAR_FARFETCHD, - Species.GALAR_ZAPDOS, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.ROCK_SMASH]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BEEDRILL, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWBRO, + SpeciesId.MUK, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.SCYTHER, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.FURRET, + SpeciesId.LEDIAN, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.CLAYDOL, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.KECLEON, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.ABSOL, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.RELICANTH, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZONG, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZOROARK, + SpeciesId.REUNICLUS, + SpeciesId.SAWSBUCK, + SpeciesId.ESCAVALIER, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.GOODRA, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.ZYGARDE, + SpeciesId.VOLCANION, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.PASSIMIAN, + SpeciesId.GOLISOPOD, + SpeciesId.TAPU_BULU, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.OBSTAGOON, + SpeciesId.SIRFETCHD, + SpeciesId.FALINKS, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DURALUDON, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.ENAMORUS, + SpeciesId.KLAWF, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.KORAIDON, + SpeciesId.ARCHALUDON, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.WHIRLPOOL]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.KRABBY, - Species.KINGLER, - Species.LICKITUNG, - Species.RHYDON, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.SNORLAX, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.CHINCHOU, - Species.LANTURN, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.QWILFISH, - Species.SNEASEL, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.MANTINE, - Species.KINGDRA, - Species.MILTANK, - Species.SUICUNE, - Species.TYRANITAR, - Species.LUGIA, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.WINGULL, - Species.PELIPPER, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.AGGRON, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.FEEBAS, - Species.MILOTIC, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.RAYQUAZA, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIBAREL, - Species.RAMPARDOS, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.PALKIA, - Species.PHIONE, - Species.MANAPHY, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.BASCULIN, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.DUCKLETT, - Species.SWANNA, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.WISHIWASHI, - Species.BRUXISH, - Species.DHELMISE, - Species.TAPU_FINI, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.CHEWTLE, - Species.DREDNAW, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.GRAPPLOCT, - Species.OBSTAGOON, - Species.CURSOLA, - Species.EISCUE, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.BASCULEGION, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.WIGLETT, - Species.WUGTRIO, - Species.PALAFIN, - Species.TATSUGIRI, - Species.IRON_BUNDLE, - Species.WALKING_WAKE, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, + [MoveId.WHIRLPOOL]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.QWILFISH, + SpeciesId.SNEASEL, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.MILTANK, + SpeciesId.SUICUNE, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.AGGRON, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.RAYQUAZA, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIBAREL, + SpeciesId.RAMPARDOS, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.PALKIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.BASCULIN, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.WISHIWASHI, + SpeciesId.BRUXISH, + SpeciesId.DHELMISE, + SpeciesId.TAPU_FINI, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.GRAPPLOCT, + SpeciesId.OBSTAGOON, + SpeciesId.CURSOLA, + SpeciesId.EISCUE, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.BASCULEGION, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.PALAFIN, + SpeciesId.TATSUGIRI, + SpeciesId.IRON_BUNDLE, + SpeciesId.WALKING_WAKE, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "rapid-strike", ], - Species.HISUI_SAMUROTT, + SpeciesId.HISUI_SAMUROTT, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "aqua", ], ], - [Moves.BEAT_UP]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.EKANS, - Species.ARBOK, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.DIGLETT, - Species.DUGTRIO, - Species.MANKEY, - Species.PRIMEAPE, - Species.KANGASKHAN, - Species.MEW, - Species.AIPOM, - Species.GIRAFARIG, - Species.SNEASEL, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.VESPIQUEN, - Species.AMBIPOM, - Species.WEAVILE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.VANILLUXE, - Species.PAWNIARD, - Species.BISHARP, - Species.DURANT, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.PANGORO, - Species.BINACLE, - Species.BARBARACLE, - Species.WISHIWASHI, - Species.SALANDIT, - Species.SALAZZLE, - Species.PASSIMIAN, - Species.MIMIKYU, - Species.NICKIT, - Species.THIEVUL, - Species.FALINKS, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.URSHIFU, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.ANNIHILAPE, - Species.FARIGIRAF, - Species.KINGAMBIT, - Species.FEZANDIPITI, - Species.PIKACHU, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_PERSIAN, + [MoveId.BEAT_UP]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.KANGASKHAN, + SpeciesId.MEW, + SpeciesId.AIPOM, + SpeciesId.GIRAFARIG, + SpeciesId.SNEASEL, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.VESPIQUEN, + SpeciesId.AMBIPOM, + SpeciesId.WEAVILE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.VANILLUXE, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.DURANT, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.PANGORO, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.WISHIWASHI, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.PASSIMIAN, + SpeciesId.MIMIKYU, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.FALINKS, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.URSHIFU, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.ANNIHILAPE, + SpeciesId.FARIGIRAF, + SpeciesId.KINGAMBIT, + SpeciesId.FEZANDIPITI, + SpeciesId.PIKACHU, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_PERSIAN, ], - [Moves.UPROAR]: [ - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.PIKACHU, - Species.RAICHU, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.MANKEY, - Species.PRIMEAPE, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.TAUROS, - Species.GYARADOS, - Species.SNORLAX, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.CROBAT, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.MURKROW, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.TEDDIURSA, - Species.URSARING, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.BLISSEY, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.CELEBI, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.NUZLEAF, - Species.SHIFTRY, - Species.WINGULL, - Species.PELIPPER, - Species.VIGOROTH, - Species.SLAKING, - Species.NINJASK, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.AZURILL, - Species.SKITTY, - Species.DELCATTY, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.ROSELIA, - Species.CARVANHA, - Species.SHARPEDO, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.VIBRAVA, - Species.FLYGON, - Species.SWABLU, - Species.ALTARIA, - Species.WHISCASH, - Species.CHIMECHO, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.KRICKETOT, - Species.KRICKETUNE, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.WORMADAM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.CHINGLING, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.MUNCHLAX, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.PORYGON_Z, - Species.ROTOM, - Species.AZELF, - Species.HEATRAN, - Species.PHIONE, - Species.MANAPHY, - Species.VICTINI, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.ELGYEM, - Species.BEHEEYEM, - Species.STUNFISK, - Species.BOUFFALANT, - Species.VULLABY, - Species.MANDIBUZZ, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.TORNADUS, - Species.THUNDURUS, - Species.MELOETTA, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.BINACLE, - Species.BARBARACLE, - Species.HAWLUCHA, - Species.NOIBAT, - Species.NOIVERN, - Species.HOOPA, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.WISHIWASHI, - Species.PASSIMIAN, - Species.TURTONATOR, - Species.BRUXISH, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.POIPOLE, - Species.NAGANADEL, - Species.BLACEPHALON, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SKWOVET, - Species.GREEDENT, - Species.YAMPER, - Species.BOLTUND, - Species.CRAMORANT, - Species.TOXTRICITY, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.PERRSERKER, - Species.MR_RIME, - Species.FALINKS, - Species.MORPEKO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.WYRDEER, - Species.BASCULEGION, - Species.ENAMORUS, - Species.LECHONK, - Species.OINKOLOGNE, - Species.SQUAWKABILLY, - Species.WATTREL, - Species.KILOWATTREL, - Species.FLITTLE, - Species.ESPATHRA, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.ANNIHILAPE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.SCREAM_TAIL, - Species.KORAIDON, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.HYDRAPPLE, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, + [MoveId.UPROAR]: [ + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.CROBAT, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.MURKROW, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.BLISSEY, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.CELEBI, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINJASK, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.AZURILL, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.ROSELIA, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.WHISCASH, + SpeciesId.CHIMECHO, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.KRICKETOT, + SpeciesId.KRICKETUNE, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.WORMADAM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.CHINGLING, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.MUNCHLAX, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.PORYGON_Z, + SpeciesId.ROTOM, + SpeciesId.AZELF, + SpeciesId.HEATRAN, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.VICTINI, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.STUNFISK, + SpeciesId.BOUFFALANT, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.MELOETTA, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HAWLUCHA, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.HOOPA, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.WISHIWASHI, + SpeciesId.PASSIMIAN, + SpeciesId.TURTONATOR, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.BLACEPHALON, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.CRAMORANT, + SpeciesId.TOXTRICITY, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.PERRSERKER, + SpeciesId.MR_RIME, + SpeciesId.FALINKS, + SpeciesId.MORPEKO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.WYRDEER, + SpeciesId.BASCULEGION, + SpeciesId.ENAMORUS, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.SQUAWKABILLY, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.ANNIHILAPE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.SCREAM_TAIL, + SpeciesId.KORAIDON, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.HYDRAPPLE, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_MEOWTH, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_STUNFISK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_STUNFISK, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", "shadow", ], - Species.BLOODMOON_URSALUNA, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.HEAT_WAVE]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.SPEAROW, - Species.FEAROW, - Species.VULPIX, - Species.NINETALES, - Species.ZUBAT, - Species.GOLBAT, - Species.GROWLITHE, - Species.ARCANINE, - Species.PONYTA, - Species.RAPIDASH, - Species.FARFETCHD, - Species.WEEZING, - Species.MAGMAR, - Species.FLAREON, - Species.AERODACTYL, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CROBAT, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MURKROW, - Species.SLUGMA, - Species.MAGCARGO, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.MAGBY, - Species.ENTEI, - Species.HO_OH, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.VIBRAVA, - Species.FLYGON, - Species.SWABLU, - Species.ALTARIA, - Species.SOLROCK, - Species.SALAMENCE, - Species.GROUDON, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.HONCHKROW, - Species.CHATOT, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.HEATRAN, - Species.ARCEUS, - Species.VICTINI, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.PANSEAR, - Species.SIMISEAR, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SIGILYPH, - Species.ARCHEN, - Species.ARCHEOPS, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.DRUDDIGON, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.TORNADUS, - Species.RESHIRAM, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.LITLEO, - Species.PYROAR, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.VOLCANION, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.SALANDIT, - Species.SALAZZLE, - Species.SILVALLY, - Species.TURTONATOR, - Species.DRAMPA, - Species.LUNALA, - Species.GUZZLORD, - Species.NECROZMA, - Species.NAGANADEL, - Species.BLACEPHALON, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.CARKOL, - Species.COALOSSAL, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.SQUAWKABILLY, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.BOMBIRDIER, - Species.SLITHER_WING, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.CHI_YU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.FEZANDIPITI, - Species.GOUGING_FIRE, - Species.ALOLA_MAROWAK, - Species.GALAR_WEEZING, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_BRAVIARY, + [MoveId.HEAT_WAVE]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.FARFETCHD, + SpeciesId.WEEZING, + SpeciesId.MAGMAR, + SpeciesId.FLAREON, + SpeciesId.AERODACTYL, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CROBAT, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MURKROW, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.MAGBY, + SpeciesId.ENTEI, + SpeciesId.HO_OH, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.SOLROCK, + SpeciesId.SALAMENCE, + SpeciesId.GROUDON, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.HONCHKROW, + SpeciesId.CHATOT, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.HEATRAN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SIGILYPH, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.DRUDDIGON, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.TORNADUS, + SpeciesId.RESHIRAM, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.VOLCANION, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.SILVALLY, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.LUNALA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.NAGANADEL, + SpeciesId.BLACEPHALON, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.SQUAWKABILLY, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.BOMBIRDIER, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.FEZANDIPITI, + SpeciesId.GOUGING_FIRE, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.HAIL]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.KRABBY, - Species.KINGLER, - Species.CHANSEY, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.JYNX, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.ARTICUNO, - Species.ZAPDOS, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.CHINCHOU, - Species.LANTURN, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.QWILFISH, - Species.SNEASEL, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.DELIBIRD, - Species.MANTINE, - Species.KINGDRA, - Species.SMOOCHUM, - Species.BLISSEY, - Species.SUICUNE, - Species.LUGIA, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.WINGULL, - Species.PELIPPER, - Species.AZURILL, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.LUNATONE, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.REGICE, - Species.KYOGRE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.HAPPINY, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.GLACEON, - Species.MAMOSWINE, - Species.FROSLASS, - Species.PALKIA, - Species.PHIONE, - Species.MANAPHY, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PANPOUR, - Species.SIMIPOUR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.BASCULIN, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.KYUREM, - Species.KELDEO, - Species.SKRELP, - Species.DRAGALGE, - Species.AMAURA, - Species.AURORUS, - Species.CARBINK, - Species.GOODRA, - Species.BERGMITE, - Species.AVALUGG, - Species.XERNEAS, - Species.DIANCIE, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.CRABOMINABLE, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.WIMPOD, - Species.GOLISOPOD, - Species.PYUKUMUKU, - Species.TYPE_NULL, - Species.SILVALLY, - Species.CURSOLA, - Species.MR_RIME, - Species.FROSMOTH, - Species.EISCUE, - Species.ARCTOZOLT, - Species.ARCTOVISH, - Species.GLASTRIER, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, + [MoveId.HAIL]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.JYNX, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.QWILFISH, + SpeciesId.SNEASEL, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.SMOOCHUM, + SpeciesId.BLISSEY, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.AZURILL, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.LUNATONE, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.REGICE, + SpeciesId.KYOGRE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.HAPPINY, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.GLACEON, + SpeciesId.MAMOSWINE, + SpeciesId.FROSLASS, + SpeciesId.PALKIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.BASCULIN, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.CARBINK, + SpeciesId.GOODRA, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.CRABOMINABLE, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.PYUKUMUKU, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.FROSMOTH, + SpeciesId.EISCUE, + SpeciesId.ARCTOZOLT, + SpeciesId.ARCTOVISH, + SpeciesId.GLASTRIER, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], ], - [Moves.TORMENT]: [ - Species.EKANS, - Species.ARBOK, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.ZUBAT, - Species.GOLBAT, - Species.MEOWTH, - Species.PERSIAN, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.DODRIO, - Species.GRIMER, - Species.MUK, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.VOLTORB, - Species.ELECTRODE, - Species.KOFFING, - Species.WEEZING, - Species.MR_MIME, - Species.JYNX, - Species.GYARADOS, - Species.AERODACTYL, - Species.MEWTWO, - Species.MEW, - Species.CROBAT, - Species.SUDOWOODO, - Species.UMBREON, - Species.MURKROW, - Species.MISDREAVUS, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.NUZLEAF, - Species.SHIFTRY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.LOUDRED, - Species.EXPLOUD, - Species.NOSEPASS, - Species.SABLEYE, - Species.MAWILE, - Species.CARVANHA, - Species.SHARPEDO, - Species.SPOINK, - Species.GRUMPIG, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.ABSOL, - Species.GLALIE, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.SHIELDON, - Species.BASTIODON, - Species.FLOATZEL, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.MIME_JR, - Species.CHATOT, - Species.SPIRITOMB, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.GLISCOR, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.AZELF, - Species.HEATRAN, - Species.DARKRAI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.VULLABY, - Species.MANDIBUZZ, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.TORNADUS, - Species.THUNDURUS, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.HAWLUCHA, - Species.KLEFKI, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.HOOPA, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.SALANDIT, - Species.SALAZZLE, - Species.BRUXISH, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.PHEROMOSA, - Species.BLACEPHALON, - Species.NICKIT, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.MORPEKO, - Species.GLASTRIER, - Species.ENAMORUS, - Species.SQUAWKABILLY, - Species.BOMBIRDIER, - Species.VAROOM, - Species.KINGAMBIT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, + [MoveId.TORMENT]: [ + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.DODRIO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.GYARADOS, + SpeciesId.AERODACTYL, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CROBAT, + SpeciesId.SUDOWOODO, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.MISDREAVUS, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.NOSEPASS, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.GLALIE, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.FLOATZEL, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.MIME_JR, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.GLISCOR, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.AZELF, + SpeciesId.HEATRAN, + SpeciesId.DARKRAI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HAWLUCHA, + SpeciesId.KLEFKI, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.HOOPA, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.BRUXISH, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.PHEROMOSA, + SpeciesId.BLACEPHALON, + SpeciesId.NICKIT, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.MORPEKO, + SpeciesId.GLASTRIER, + SpeciesId.ENAMORUS, + SpeciesId.SQUAWKABILLY, + SpeciesId.BOMBIRDIER, + SpeciesId.VAROOM, + SpeciesId.KINGAMBIT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, ], - [Moves.WILL_O_WISP]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.VULPIX, - Species.NINETALES, - Species.GROWLITHE, - Species.ARCANINE, - Species.PONYTA, - Species.RAPIDASH, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.KOFFING, - Species.WEEZING, - Species.MAGMAR, - Species.FLAREON, - Species.MOLTRES, - Species.MEWTWO, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.MISDREAVUS, - Species.SLUGMA, - Species.MAGCARGO, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.MAGBY, - Species.ENTEI, - Species.HO_OH, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.SHIFTRY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SHEDINJA, - Species.SABLEYE, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.ALTARIA, - Species.SOLROCK, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.ABSOL, - Species.GROUDON, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.SPIRITOMB, - Species.MAGMORTAR, - Species.GALLADE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.HEATRAN, - Species.GIRATINA, - Species.DARKRAI, - Species.ARCEUS, - Species.VICTINI, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.PANSEAR, - Species.SIMISEAR, - Species.DARUMAKA, - Species.DARMANITAN, - Species.YAMASK, - Species.COFAGRIGUS, - Species.FRILLISH, - Species.JELLICENT, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.HEATMOR, - Species.LARVESTA, - Species.VOLCARONA, - Species.RESHIRAM, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.LITLEO, - Species.PYROAR, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.VOLCANION, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.SALANDIT, - Species.SALAZZLE, - Species.TURTONATOR, - Species.MIMIKYU, - Species.LUNALA, - Species.MARSHADOW, - Species.BLACEPHALON, - Species.CINDERACE, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.CENTISKORCH, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.CURSOLA, - Species.RUNERIGUS, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.SPECTRIER, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.SCOVILLAIN, - Species.HOUNDSTONE, - Species.SLITHER_WING, - Species.CHI_YU, - Species.ALOLA_MAROWAK, - Species.MAROWAK, - Species.GALAR_WEEZING, - Species.GALAR_CORSOLA, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, + [MoveId.WILL_O_WISP]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.MAGMAR, + SpeciesId.FLAREON, + SpeciesId.MOLTRES, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.MISDREAVUS, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.MAGBY, + SpeciesId.ENTEI, + SpeciesId.HO_OH, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.SHIFTRY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.ALTARIA, + SpeciesId.SOLROCK, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.ABSOL, + SpeciesId.GROUDON, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.SPIRITOMB, + SpeciesId.MAGMORTAR, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.HEATRAN, + SpeciesId.GIRATINA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.HEATMOR, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.RESHIRAM, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.VOLCANION, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.TURTONATOR, + SpeciesId.MIMIKYU, + SpeciesId.LUNALA, + SpeciesId.MARSHADOW, + SpeciesId.BLACEPHALON, + SpeciesId.CINDERACE, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.CENTISKORCH, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.SPECTRIER, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.SCOVILLAIN, + SpeciesId.HOUNDSTONE, + SpeciesId.SLITHER_WING, + SpeciesId.CHI_YU, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.MAROWAK, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, [ - Species.CALYREX, + SpeciesId.CALYREX, "shadow", ], - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "blaze", ], ], - [Moves.FACADE]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.FACADE]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.FOCUS_PUNCH]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWBRO, - Species.MUK, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.LEDYBA, - Species.LEDIAN, - Species.TOGETIC, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.QUAGSIRE, - Species.SLOWKING, - Species.SNUBBULL, - Species.GRANBULL, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.DELIBIRD, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.LUDICOLO, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GRUMPIG, - Species.SPINDA, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.KECLEON, - Species.DUSCLOPS, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.GROUDON, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.BIBAREL, - Species.RAMPARDOS, - Species.BUIZEL, - Species.FLOATZEL, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MIME_JR, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.GALLADE, - Species.DUSKNOIR, - Species.PALKIA, - Species.REGIGIGAS, - Species.DARKRAI, - Species.PIGNITE, - Species.EMBOAR, - Species.WATCHOG, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.REUNICLUS, - Species.EELEKTROSS, - Species.CUBCHOO, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.GOLETT, - Species.GOLURK, - Species.HEATMOR, - Species.ZEKROM, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.HAWLUCHA, - Species.GOODRA, - Species.HOOPA, - Species.INCINEROAR, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.STUFFUL, - Species.BEWEAR, - Species.PASSIMIAN, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_BULU, - Species.BUZZWOLE, - Species.MARSHADOW, - Species.ZERAORA, - Species.RILLABOOM, - Species.GRIMMSNARL, - Species.MR_RIME, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.URSALUNA, - Species.SNEASLER, - Species.PAWMO, - Species.PAWMOT, - Species.GARGANACL, - Species.PALAFIN, - Species.ANNIHILAPE, - Species.IRON_HANDS, - Species.GHOLDENGO, - Species.KORAIDON, - Species.OKIDOGI, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, + [MoveId.FOCUS_PUNCH]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWBRO, + SpeciesId.MUK, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.TOGETIC, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.DELIBIRD, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.LUDICOLO, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.KECLEON, + SpeciesId.DUSCLOPS, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.BIBAREL, + SpeciesId.RAMPARDOS, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MIME_JR, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.PALKIA, + SpeciesId.REGIGIGAS, + SpeciesId.DARKRAI, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.WATCHOG, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.REUNICLUS, + SpeciesId.EELEKTROSS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.HEATMOR, + SpeciesId.ZEKROM, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HAWLUCHA, + SpeciesId.GOODRA, + SpeciesId.HOOPA, + SpeciesId.INCINEROAR, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.PASSIMIAN, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_BULU, + SpeciesId.BUZZWOLE, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.RILLABOOM, + SpeciesId.GRIMMSNARL, + SpeciesId.MR_RIME, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.GARGANACL, + SpeciesId.PALAFIN, + SpeciesId.ANNIHILAPE, + SpeciesId.IRON_HANDS, + SpeciesId.GHOLDENGO, + SpeciesId.KORAIDON, + SpeciesId.OKIDOGI, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_MR_MIME, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_TYPHLOSION, - Species.HISUI_SNEASEL, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_DECIDUEYE, - Species.BLOODMOON_URSALUNA, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.NATURE_POWER]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.ONIX, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.TANGELA, - Species.KABUTOPS, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.BELLOSSOM, - Species.SUDOWOODO, - Species.SUNKERN, - Species.SUNFLORA, - Species.STEELIX, - Species.SLUGMA, - Species.MAGCARGO, - Species.CORSOLA, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.ROSELIA, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.CACNEA, - Species.CACTURNE, - Species.CRAWDAUNT, - Species.TROPIUS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.BUDEW, - Species.ROSERADE, - Species.CHERUBI, - Species.CHERRIM, - Species.BONSLY, - Species.CARNIVINE, - Species.FINNEON, - Species.TANGROWTH, - Species.LEAFEON, - Species.HEATRAN, - Species.REGIGIGAS, - Species.SHAYMIN, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.PANSAGE, - Species.SIMISAGE, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.DEERLING, - Species.SAWSBUCK, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FERROSEED, - Species.FERROTHORN, - Species.VIRIZION, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.BINACLE, - Species.BARBARACLE, - Species.AMAURA, - Species.AURORUS, - Species.CARBINK, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.XERNEAS, - Species.DIANCIE, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.RIBOMBEE, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.DRAMPA, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.XURKITREE, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.CURSOLA, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_EXEGGUTOR, - Species.ETERNAL_FLOETTE, - Species.GALAR_CORSOLA, - Species.HISUI_TYPHLOSION, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, + [MoveId.NATURE_POWER]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.ONIX, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.TANGELA, + SpeciesId.KABUTOPS, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.BELLOSSOM, + SpeciesId.SUDOWOODO, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.STEELIX, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.CORSOLA, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.ROSELIA, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.CRAWDAUNT, + SpeciesId.TROPIUS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.BONSLY, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.TANGROWTH, + SpeciesId.LEAFEON, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.SHAYMIN, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.VIRIZION, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.CARBINK, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.RIBOMBEE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.DRAMPA, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.XURKITREE, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.CURSOLA, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_CORSOLA, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.CHARGE]: [ - Species.PIKACHU, - Species.RAICHU, - Species.MAGNEMITE, - Species.MAGNETON, - Species.VOLTORB, - Species.ELECTRODE, - Species.ELECTABUZZ, - Species.JOLTEON, - Species.ZAPDOS, - Species.MEW, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.ELEKID, - Species.RAIKOU, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.PACHIRISU, - Species.MAGNEZONE, - Species.ELECTIVIRE, - Species.ROTOM, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.EMOLGA, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.TYNAMO, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.STUNFISK, - Species.THUNDURUS, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.DEDENNE, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.TOGEDEMARU, - Species.TAPU_KOKO, - Species.XURKITREE, - Species.ZERAORA, - Species.YAMPER, - Species.BOLTUND, - Species.TOXTRICITY, - Species.PINCURCHIN, - Species.MORPEKO, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.REGIELEKI, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.SANDY_SHOCKS, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.MIRAIDON, - Species.RAGING_BOLT, - Species.ALOLA_RAICHU, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, + [MoveId.CHARGE]: [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.ELECTABUZZ, + SpeciesId.JOLTEON, + SpeciesId.ZAPDOS, + SpeciesId.MEW, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.ELEKID, + SpeciesId.RAIKOU, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.PACHIRISU, + SpeciesId.MAGNEZONE, + SpeciesId.ELECTIVIRE, + SpeciesId.ROTOM, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.EMOLGA, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.TYNAMO, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.STUNFISK, + SpeciesId.THUNDURUS, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.DEDENNE, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.TOGEDEMARU, + SpeciesId.TAPU_KOKO, + SpeciesId.XURKITREE, + SpeciesId.ZERAORA, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.TOXTRICITY, + SpeciesId.PINCURCHIN, + SpeciesId.MORPEKO, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.REGIELEKI, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.MIRAIDON, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, ], - [Moves.TAUNT]: [ - Species.RATTATA, - Species.RATICATE, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.DODRIO, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.VOLTORB, - Species.ELECTRODE, - Species.KOFFING, - Species.WEEZING, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.GYARADOS, - Species.AERODACTYL, - Species.MEWTWO, - Species.MEW, - Species.CROBAT, - Species.SUDOWOODO, - Species.AIPOM, - Species.UMBREON, - Species.MURKROW, - Species.MISDREAVUS, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.SHIFTRY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.VIGOROTH, - Species.SLAKING, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.VOLBEAT, - Species.CARVANHA, - Species.SHARPEDO, - Species.SPOINK, - Species.GRUMPIG, - Species.CACTURNE, - Species.ZANGOOSE, - Species.SEVIPER, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.ABSOL, - Species.GLALIE, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHIELDON, - Species.BASTIODON, - Species.VESPIQUEN, - Species.BUIZEL, - Species.FLOATZEL, - Species.AMBIPOM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.MIME_JR, - Species.CHATOT, - Species.SPIRITOMB, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.GLISCOR, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.AZELF, - Species.HEATRAN, - Species.DARKRAI, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.EMOLGA, - Species.ESCAVALIER, - Species.FRILLISH, - Species.JELLICENT, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.KELDEO, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.LITLEO, - Species.PYROAR, - Species.PANCHAM, - Species.PANGORO, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.HAWLUCHA, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.HOOPA, - Species.VOLCANION, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.ORICORIO, - Species.ROCKRUFF, - Species.LYCANROC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.PYUKUMUKU, - Species.TURTONATOR, - Species.MIMIKYU, - Species.BRUXISH, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.INTELEON, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.NICKIT, - Species.THIEVUL, - Species.TOXTRICITY, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MORPEKO, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.URSHIFU, - Species.ZARUDE, - Species.GLASTRIER, - Species.SPECTRIER, - Species.URSALUNA, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.QUAQUAVAL, - Species.SPIDOPS, - Species.LOKIX, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.SQUAWKABILLY, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.BOMBIRDIER, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.FLAMIGO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.IRON_BUNDLE, - Species.IRON_JUGULIS, - Species.IRON_THORNS, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.IRON_LEAVES, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.GALAR_MEOWTH, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, + [MoveId.TAUNT]: [ + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.DODRIO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.GYARADOS, + SpeciesId.AERODACTYL, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CROBAT, + SpeciesId.SUDOWOODO, + SpeciesId.AIPOM, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.MISDREAVUS, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.SHIFTRY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.VOLBEAT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.GLALIE, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.VESPIQUEN, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.MIME_JR, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.GLISCOR, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.AZELF, + SpeciesId.HEATRAN, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.EMOLGA, + SpeciesId.ESCAVALIER, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.KELDEO, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HAWLUCHA, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.ORICORIO, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.PYUKUMUKU, + SpeciesId.TURTONATOR, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.INTELEON, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.TOXTRICITY, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MORPEKO, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.QUAQUAVAL, + SpeciesId.SPIDOPS, + SpeciesId.LOKIX, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.SQUAWKABILLY, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.BOMBIRDIER, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.FLAMIGO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_THORNS, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.IRON_LEAVES, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", "shadow", ], - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_DECIDUEYE, - Species.BLOODMOON_URSALUNA, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.HELPING_HAND]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PIKACHU, - Species.RAICHU, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.DIGLETT, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.DROWZEE, - Species.HYPNO, - Species.VOLTORB, - Species.ELECTRODE, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TYPHLOSION, - Species.SENTRET, - Species.FURRET, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PHANPY, - Species.DONPHAN, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.MEDITITE, - Species.MEDICHAM, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GULPIN, - Species.SWALOT, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.MILOTIC, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.SNORUNT, - Species.GLALIE, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.CROAGUNK, - Species.TOXICROAK, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.LEAFEON, - Species.GLACEON, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.VICTINI, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.LEAVANNY, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.MARACTUS, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.ALOMOMOLA, - Species.MIENFOO, - Species.MIENSHAO, - Species.GOLETT, - Species.GOLURK, - Species.RUFFLET, - Species.BRAVIARY, - Species.DURANT, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.BINACLE, - Species.BARBARACLE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.DIANCIE, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.SALANDIT, - Species.SALAZZLE, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.PYUKUMUKU, - Species.TOGEDEMARU, - Species.DRAMPA, - Species.DHELMISE, - Species.KOMMO_O, - Species.SOLGALEO, - Species.LUNALA, - Species.MAGEARNA, - Species.POIPOLE, - Species.NAGANADEL, - Species.ZERAORA, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.DOTTLER, - Species.ORBEETLE, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.YAMPER, - Species.BOLTUND, - Species.APPLETUN, - Species.TOXTRICITY, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.SIRFETCHD, - Species.MR_RIME, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.FROSMOTH, - Species.INDEEDEE, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.FINIZEN, - Species.PALAFIN, - Species.ORTHWORM, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.CETODDLE, - Species.CETITAN, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.SCREAM_TAIL, - Species.FLUTTER_MANE, - Species.IRON_BUNDLE, - Species.IRON_MOTH, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.IRON_LEAVES, - Species.MUNKIDORI, - Species.OGERPON, - Species.ALOLA_RAICHU, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.HELPING_HAND]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.DIGLETT, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.MILOTIC, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.VICTINI, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.LEAVANNY, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.MARACTUS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.ALOMOMOLA, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.DURANT, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.DIANCIE, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.PYUKUMUKU, + SpeciesId.TOGEDEMARU, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.KOMMO_O, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.MAGEARNA, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.ZERAORA, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.APPLETUN, + SpeciesId.TOXTRICITY, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.FROSMOTH, + SpeciesId.INDEEDEE, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.ORTHWORM, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.SCREAM_TAIL, + SpeciesId.FLUTTER_MANE, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_MOTH, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.IRON_LEAVES, + SpeciesId.MUNKIDORI, + SpeciesId.OGERPON, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.TRICK]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.PORYGON, - Species.MEWTWO, - Species.MEW, - Species.SENTRET, - Species.FURRET, - Species.CLEFFA, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.ESPEON, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PORYGON2, - Species.STANTLER, - Species.SMOOCHUM, - Species.BLISSEY, - Species.LUGIA, - Species.CELEBI, - Species.ZIGZAGOON, - Species.LINOONE, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SHEDINJA, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.VOLBEAT, - Species.ILLUMISE, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.BALTOY, - Species.CLAYDOL, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.DEOXYS, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.SPIRITOMB, - Species.TOGEKISS, - Species.PORYGON_Z, - Species.GALLADE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.CRESSELIA, - Species.DARKRAI, - Species.ARCEUS, - Species.VICTINI, - Species.PURRLOIN, - Species.LIEPARD, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.DARMANITAN, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.ZORUA, - Species.ZOROARK, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.FRILLISH, - Species.JELLICENT, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.GOLURK, - Species.MELOETTA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLOETTE, - Species.FLORGES, - Species.ESPURR, - Species.MEOWSTIC, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.HOOPA, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.COMFEY, - Species.ORANGURU, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MIMIKYU, - Species.TAPU_FINI, - Species.LUNALA, - Species.MAGEARNA, - Species.BLACEPHALON, - Species.DOTTLER, - Species.ORBEETLE, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.MR_RIME, - Species.RUNERIGUS, - Species.INDEEDEE, - Species.CALYREX, - Species.WYRDEER, - Species.MEOWSCARADA, - Species.ARMAROUGE, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FARIGIRAF, - Species.SCREAM_TAIL, - Species.GHOLDENGO, - Species.IRON_VALIANT, - Species.MUNKIDORI, - Species.ETERNAL_FLOETTE, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_SLOWKING, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_YAMASK, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, + [MoveId.TRICK]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.PORYGON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.CLEFFA, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.ESPEON, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.BLISSEY, + SpeciesId.LUGIA, + SpeciesId.CELEBI, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.SPIRITOMB, + SpeciesId.TOGEKISS, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.CRESSELIA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DARMANITAN, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.GOLURK, + SpeciesId.MELOETTA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.HOOPA, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MIMIKYU, + SpeciesId.TAPU_FINI, + SpeciesId.LUNALA, + SpeciesId.MAGEARNA, + SpeciesId.BLACEPHALON, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.INDEEDEE, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.MEOWSCARADA, + SpeciesId.ARMAROUGE, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FARIGIRAF, + SpeciesId.SCREAM_TAIL, + SpeciesId.GHOLDENGO, + SpeciesId.IRON_VALIANT, + SpeciesId.MUNKIDORI, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_YAMASK, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, ], - [Moves.SUPERPOWER]: [ - Species.NIDOQUEEN, - Species.NIDOKING, - Species.ARCANINE, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.KRABBY, - Species.KINGLER, - Species.HITMONLEE, - Species.RHYHORN, - Species.RHYDON, - Species.PINSIR, - Species.FLAREON, - Species.KABUTOPS, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.MARILL, - Species.AZUMARILL, - Species.SNUBBULL, - Species.GRANBULL, - Species.SCIZOR, - Species.TEDDIURSA, - Species.URSARING, - Species.SWINUB, - Species.PILOSWINE, - Species.PHANPY, - Species.DONPHAN, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.BRELOOM, - Species.MAKUHITA, - Species.HARIYAMA, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.TORKOAL, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACTURNE, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.ARMALDO, - Species.ABSOL, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.BIDOOF, - Species.BIBAREL, - Species.LUXRAY, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.HONCHKROW, - Species.MUNCHLAX, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.RHYPERIOR, - Species.MAMOSWINE, - Species.REGIGIGAS, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.SAMUROTT, - Species.STOUTLAND, - Species.SIMISAGE, - Species.SIMISEAR, - Species.SIMIPOUR, - Species.GIGALITH, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.SCOLIPEDE, - Species.BASCULIN, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.CARRACOSTA, - Species.REUNICLUS, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.KELDEO, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.DIGGERSBY, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.INKAY, - Species.MALAMAR, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.HAWLUCHA, - Species.GOODRA, - Species.AVALUGG, - Species.ZYGARDE, - Species.VOLCANION, - Species.INCINEROAR, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.MUDBRAY, - Species.MUDSDALE, - Species.LURANTIS, - Species.STUFFUL, - Species.BEWEAR, - Species.PASSIMIAN, - Species.KOMALA, - Species.DRAMPA, - Species.KOMMO_O, - Species.TAPU_BULU, - Species.SOLGALEO, - Species.BUZZWOLE, - Species.CELESTEELA, - Species.MARSHADOW, - Species.STAKATAKA, - Species.ZERAORA, - Species.MELMETAL, - Species.RILLABOOM, - Species.GREEDENT, - Species.DREDNAW, - Species.APPLETUN, - Species.CRAMORANT, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.GRIMMSNARL, - Species.SIRFETCHD, - Species.FALINKS, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.GLASTRIER, - Species.ENAMORUS, - Species.CETODDLE, - Species.SLITHER_WING, - Species.OKIDOGI, - Species.OGERPON, + [MoveId.SUPERPOWER]: [ + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.ARCANINE, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.HITMONLEE, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.PINSIR, + SpeciesId.FLAREON, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SCIZOR, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.BRELOOM, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.TORKOAL, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACTURNE, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.ARMALDO, + SpeciesId.ABSOL, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.LUXRAY, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.HONCHKROW, + SpeciesId.MUNCHLAX, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.RHYPERIOR, + SpeciesId.MAMOSWINE, + SpeciesId.REGIGIGAS, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.SAMUROTT, + SpeciesId.STOUTLAND, + SpeciesId.SIMISAGE, + SpeciesId.SIMISEAR, + SpeciesId.SIMIPOUR, + SpeciesId.GIGALITH, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SCOLIPEDE, + SpeciesId.BASCULIN, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.CARRACOSTA, + SpeciesId.REUNICLUS, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.KELDEO, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.DIGGERSBY, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.HAWLUCHA, + SpeciesId.GOODRA, + SpeciesId.AVALUGG, + SpeciesId.ZYGARDE, + SpeciesId.VOLCANION, + SpeciesId.INCINEROAR, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.LURANTIS, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.PASSIMIAN, + SpeciesId.KOMALA, + SpeciesId.DRAMPA, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_BULU, + SpeciesId.SOLGALEO, + SpeciesId.BUZZWOLE, + SpeciesId.CELESTEELA, + SpeciesId.MARSHADOW, + SpeciesId.STAKATAKA, + SpeciesId.ZERAORA, + SpeciesId.MELMETAL, + SpeciesId.RILLABOOM, + SpeciesId.GREEDENT, + SpeciesId.DREDNAW, + SpeciesId.APPLETUN, + SpeciesId.CRAMORANT, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.GRIMMSNARL, + SpeciesId.SIRFETCHD, + SpeciesId.FALINKS, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.GLASTRIER, + SpeciesId.ENAMORUS, + SpeciesId.CETODDLE, + SpeciesId.SLITHER_WING, + SpeciesId.OKIDOGI, + SpeciesId.OGERPON, [ - Species.DEOXYS, + SpeciesId.DEOXYS, "attack", ], - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_EXEGGUTOR, - Species.GALAR_FARFETCHD, - Species.GALAR_ZAPDOS, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_BRAVIARY, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.RECYCLE]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.DROWZEE, - Species.HYPNO, - Species.VOLTORB, - Species.ELECTRODE, - Species.CHANSEY, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.PORYGON, - Species.SNORLAX, - Species.MEWTWO, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.SLOWKING, - Species.GIRAFARIG, - Species.DELIBIRD, - Species.PORYGON2, - Species.SMOOCHUM, - Species.BLISSEY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.MEDITITE, - Species.MEDICHAM, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.KECLEON, - Species.CHIMECHO, - Species.JIRACHI, - Species.DEOXYS, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.HAPPINY, - Species.MUNCHLAX, - Species.MAGNEZONE, - Species.PORYGON_Z, - Species.GALLADE, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.ARCEUS, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.TRUBBISH, - Species.GARBODOR, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.ELGYEM, - Species.BEHEEYEM, - Species.HEATMOR, - Species.MELOETTA, - Species.GENESECT, - Species.BRAIXEN, - Species.DELPHOX, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.ESPURR, - Species.MEOWSTIC, - Species.DEDENNE, - Species.KLEFKI, - Species.HOOPA, - Species.MORELULL, - Species.SHIINOTIC, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.NECROZMA, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.APPLIN, - Species.FLAPPLE, - Species.APPLETUN, - Species.MR_RIME, - Species.FARIGIRAF, - Species.DIPPLIN, - Species.HYDRAPPLE, - Species.ALOLA_RAICHU, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.GALAR_MR_MIME, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, + [MoveId.RECYCLE]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.CHANSEY, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.PORYGON, + SpeciesId.SNORLAX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.DELIBIRD, + SpeciesId.PORYGON2, + SpeciesId.SMOOCHUM, + SpeciesId.BLISSEY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.KECLEON, + SpeciesId.CHIMECHO, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.MUNCHLAX, + SpeciesId.MAGNEZONE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.ARCEUS, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.HEATMOR, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.DEDENNE, + SpeciesId.KLEFKI, + SpeciesId.HOOPA, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.NECROZMA, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.APPLIN, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.MR_RIME, + SpeciesId.FARIGIRAF, + SpeciesId.DIPPLIN, + SpeciesId.HYDRAPPLE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_MR_MIME, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, ], - [Moves.REVENGE]: [ - Species.RATTATA, - Species.RATICATE, - Species.MANKEY, - Species.PRIMEAPE, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.FARFETCHD, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.PINSIR, - Species.TAUROS, - Species.MEW, - Species.AIPOM, - Species.PINECO, - Species.FORRETRESS, - Species.QWILFISH, - Species.HERACROSS, - Species.HITMONTOP, - Species.TYRANITAR, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.SHIFTRY, - Species.MAKUHITA, - Species.HARIYAMA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.CRAWDAUNT, - Species.DUSKULL, - Species.DUSCLOPS, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.AMBIPOM, - Species.VESPIQUEN, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.GALLADE, - Species.DUSKNOIR, - Species.REGIGIGAS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.BASCULIN, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.COFAGRIGUS, - Species.ZORUA, - Species.ZOROARK, - Species.ESCAVALIER, - Species.FERROSEED, - Species.FERROTHORN, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.KELDEO, - Species.PANGORO, - Species.HAWLUCHA, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.MUDSDALE, - Species.BEWEAR, - Species.PASSIMIAN, - Species.TURTONATOR, - Species.KOMMO_O, - Species.TAPU_BULU, - Species.BUZZWOLE, - Species.MARSHADOW, - Species.ZERAORA, - Species.CINDERACE, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.CHEWTLE, - Species.DREDNAW, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.CURSOLA, - Species.SIRFETCHD, - Species.RUNERIGUS, - Species.FALINKS, - Species.MORPEKO, - Species.COPPERAJAH, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.BASCULEGION, - Species.ANNIHILAPE, - Species.KINGAMBIT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, + [MoveId.REVENGE]: [ + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.FARFETCHD, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.MEW, + SpeciesId.AIPOM, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.QWILFISH, + SpeciesId.HERACROSS, + SpeciesId.HITMONTOP, + SpeciesId.TYRANITAR, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.SHIFTRY, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.CRAWDAUNT, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.AMBIPOM, + SpeciesId.VESPIQUEN, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.REGIGIGAS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.BASCULIN, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.COFAGRIGUS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.ESCAVALIER, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.KELDEO, + SpeciesId.PANGORO, + SpeciesId.HAWLUCHA, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.MUDSDALE, + SpeciesId.BEWEAR, + SpeciesId.PASSIMIAN, + SpeciesId.TURTONATOR, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_BULU, + SpeciesId.BUZZWOLE, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.CINDERACE, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.RUNERIGUS, + SpeciesId.FALINKS, + SpeciesId.MORPEKO, + SpeciesId.COPPERAJAH, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.BASCULEGION, + SpeciesId.ANNIHILAPE, + SpeciesId.KINGAMBIT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_FARFETCHD, - Species.GALAR_ZAPDOS, - Species.HISUI_SAMUROTT, - Species.GALAR_STUNFISK, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.GALAR_STUNFISK, ], - [Moves.BRICK_BREAK]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BEEDRILL, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PARAS, - Species.PARASECT, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWBRO, - Species.MUK, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.KABUTOPS, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.LEDYBA, - Species.LEDIAN, - Species.TOGETIC, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.QUAGSIRE, - Species.SLOWKING, - Species.GLIGAR, - Species.SNUBBULL, - Species.GRANBULL, - Species.SCIZOR, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.DELIBIRD, - Species.TYROGUE, - Species.HITMONTOP, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.LOMBRE, - Species.LUDICOLO, - Species.NUZLEAF, - Species.SHIFTRY, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.VOLBEAT, - Species.ILLUMISE, - Species.SWALOT, - Species.GRUMPIG, - Species.SPINDA, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.SEVIPER, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.ANORITH, - Species.ARMALDO, - Species.KECLEON, - Species.DUSCLOPS, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.KRICKETUNE, - Species.RAMPARDOS, - Species.BUIZEL, - Species.FLOATZEL, - Species.AMBIPOM, - Species.BONSLY, - Species.MIME_JR, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.GLISCOR, - Species.GALLADE, - Species.DUSKNOIR, - Species.DIALGA, - Species.PALKIA, - Species.REGIGIGAS, - Species.DARKRAI, - Species.ARCEUS, - Species.VICTINI, - Species.PIGNITE, - Species.EMBOAR, - Species.DEWOTT, - Species.SAMUROTT, - Species.SIMISAGE, - Species.SIMISEAR, - Species.SIMIPOUR, - Species.DRILBUR, - Species.EXCADRILL, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ZOROARK, - Species.GOTHITELLE, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.KELDEO, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.BINACLE, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.HAWLUCHA, - Species.NOIBAT, - Species.NOIVERN, - Species.ZYGARDE, - Species.HOOPA, - Species.VOLCANION, - Species.INCINEROAR, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.LYCANROC, - Species.LURANTIS, - Species.STUFFUL, - Species.BEWEAR, - Species.ORANGURU, - Species.PASSIMIAN, - Species.GOLISOPOD, - Species.KOMALA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_BULU, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.ZERAORA, - Species.MELMETAL, - Species.RILLABOOM, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXTRICITY, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.SIRFETCHD, - Species.MR_RIME, - Species.FALINKS, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DURALUDON, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.KLEAVOR, - Species.URSALUNA, - Species.SNEASLER, - Species.MEOWSCARADA, - Species.QUAQUAVAL, - Species.SPIDOPS, - Species.LOKIX, - Species.PAWMOT, - Species.GARGANACL, - Species.CERULEDGE, - Species.KLAWF, - Species.TINKATUFF, - Species.TINKATON, - Species.ANNIHILAPE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SLITHER_WING, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.CHIEN_PAO, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.IRON_LEAVES, - Species.OKIDOGI, - Species.OGERPON, - Species.ARCHALUDON, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_MR_MIME, - Species.GALAR_ZAPDOS, - Species.GALAR_SLOWKING, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_TYPHLOSION, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZOROARK, - Species.HISUI_DECIDUEYE, - Species.BLOODMOON_URSALUNA, + [MoveId.BRICK_BREAK]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BEEDRILL, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWBRO, + SpeciesId.MUK, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.TOGETIC, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.GLIGAR, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.DELIBIRD, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.SWALOT, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.KECLEON, + SpeciesId.DUSCLOPS, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.KRICKETUNE, + SpeciesId.RAMPARDOS, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.GLISCOR, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.REGIGIGAS, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.SIMISAGE, + SpeciesId.SIMISEAR, + SpeciesId.SIMIPOUR, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ZOROARK, + SpeciesId.GOTHITELLE, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.HAWLUCHA, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.ZYGARDE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.INCINEROAR, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.LYCANROC, + SpeciesId.LURANTIS, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.GOLISOPOD, + SpeciesId.KOMALA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_BULU, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.MELMETAL, + SpeciesId.RILLABOOM, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXTRICITY, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.FALINKS, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DURALUDON, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.MEOWSCARADA, + SpeciesId.QUAQUAVAL, + SpeciesId.SPIDOPS, + SpeciesId.LOKIX, + SpeciesId.PAWMOT, + SpeciesId.GARGANACL, + SpeciesId.CERULEDGE, + SpeciesId.KLAWF, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.ANNIHILAPE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.CHIEN_PAO, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.IRON_LEAVES, + SpeciesId.OKIDOGI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.KNOCK_OFF]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.BEEDRILL, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PARAS, - Species.PARASECT, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.LICKITUNG, - Species.TANGELA, - Species.GOLDEEN, - Species.SEAKING, - Species.SCYTHER, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.MEWTWO, - Species.MEW, - Species.BAYLEEF, - Species.MEGANIUM, - Species.SENTRET, - Species.FURRET, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.MARILL, - Species.AZUMARILL, - Species.AIPOM, - Species.GLIGAR, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.PHANPY, - Species.DONPHAN, - Species.ELEKID, - Species.TYRANITAR, - Species.BLAZIKEN, - Species.SWAMPERT, - Species.LOMBRE, - Species.LUDICOLO, - Species.NUZLEAF, - Species.SHIFTRY, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.VIGOROTH, - Species.SLAKING, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.SABLEYE, - Species.MAWILE, - Species.SWALOT, - Species.CACTURNE, - Species.ZANGOOSE, - Species.SEVIPER, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.ANORITH, - Species.ARMALDO, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.CHIMECHO, - Species.ABSOL, - Species.METAGROSS, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.EMPOLEON, - Species.KRICKETUNE, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.WEAVILE, - Species.LICKILICKY, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.LEAFEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.GALLADE, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.REGIGIGAS, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.WATCHOG, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.LEAVANNY, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.KROKOROK, - Species.KROOKODILE, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.REUNICLUS, - Species.SWANNA, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.ALOMOMOLA, - Species.FERROSEED, - Species.FERROTHORN, - Species.TYNAMO, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.CRYOGONAL, - Species.ACCELGOR, - Species.MIENFOO, - Species.MIENSHAO, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.MELOETTA, - Species.CHESNAUGHT, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.INKAY, - Species.MALAMAR, - Species.GOODRA, - Species.TREVENANT, - Species.YVELTAL, - Species.HOOPA, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.INCINEROAR, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.MAREANIE, - Species.TOXAPEX, - Species.LURANTIS, - Species.SALANDIT, - Species.SALAZZLE, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.GOLISOPOD, - Species.KOMALA, - Species.DHELMISE, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.NIHILEGO, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MARSHADOW, - Species.BLACEPHALON, - Species.ZERAORA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.GREEDENT, - Species.NICKIT, - Species.SIZZLIPEDE, - Species.PERRSERKER, - Species.SIRFETCHD, - Species.FALINKS, - Species.MORPEKO, - Species.COPPERAJAH, - Species.ZARUDE, - Species.MEOWSCARADA, - Species.QUAQUAVAL, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.LOKIX, - Species.PAWMO, - Species.PAWMOT, - Species.SHROODLE, - Species.GRAFAIAI, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.BOMBIRDIER, - Species.CYCLIZAR, - Species.CETODDLE, - Species.CETITAN, - Species.GREAT_TUSK, - Species.IRON_TREADS, - Species.IRON_JUGULIS, - Species.WO_CHIEN, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.WALKING_WAKE, - Species.OKIDOGI, - Species.OGERPON, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, + [MoveId.KNOCK_OFF]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.BEEDRILL, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.LICKITUNG, + SpeciesId.TANGELA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.SCYTHER, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.AIPOM, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.ELEKID, + SpeciesId.TYRANITAR, + SpeciesId.BLAZIKEN, + SpeciesId.SWAMPERT, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.SWALOT, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.METAGROSS, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.KRICKETUNE, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.LEAFEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.REGIGIGAS, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.WATCHOG, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.LEAVANNY, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.REUNICLUS, + SpeciesId.SWANNA, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.ALOMOMOLA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.TYNAMO, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.CRYOGONAL, + SpeciesId.ACCELGOR, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.MELOETTA, + SpeciesId.CHESNAUGHT, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.GOODRA, + SpeciesId.TREVENANT, + SpeciesId.YVELTAL, + SpeciesId.HOOPA, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.INCINEROAR, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.LURANTIS, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.GOLISOPOD, + SpeciesId.KOMALA, + SpeciesId.DHELMISE, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.NIHILEGO, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MARSHADOW, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.GREEDENT, + SpeciesId.NICKIT, + SpeciesId.SIZZLIPEDE, + SpeciesId.PERRSERKER, + SpeciesId.SIRFETCHD, + SpeciesId.FALINKS, + SpeciesId.MORPEKO, + SpeciesId.COPPERAJAH, + SpeciesId.ZARUDE, + SpeciesId.MEOWSCARADA, + SpeciesId.QUAQUAVAL, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.LOKIX, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.BOMBIRDIER, + SpeciesId.CYCLIZAR, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.GREAT_TUSK, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_JUGULIS, + SpeciesId.WO_CHIEN, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.WALKING_WAKE, + SpeciesId.OKIDOGI, + SpeciesId.OGERPON, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_MEOWTH, - Species.GALAR_FARFETCHD, - Species.GALAR_ZAPDOS, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_SAMUROTT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_GOODRA, - Species.HISUI_DECIDUEYE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.ENDEAVOR]: [ - Species.BEEDRILL, - Species.RATTATA, - Species.RATICATE, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.DODUO, - Species.DODRIO, - Species.DEWGONG, - Species.DROWZEE, - Species.HYPNO, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.TAUROS, - Species.GYARADOS, - Species.FLAREON, - Species.MEW, - Species.MEGANIUM, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.SUDOWOODO, - Species.POLITOED, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.SNUBBULL, - Species.GRANBULL, - Species.HERACROSS, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.DELIBIRD, - Species.HOUNDOOM, - Species.PHANPY, - Species.DONPHAN, - Species.HITMONTOP, - Species.BLISSEY, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.NUMEL, - Species.CAMERUPT, - Species.SPOINK, - Species.GRUMPIG, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.LUVDISC, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.KRICKETOT, - Species.KRICKETUNE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.WORMADAM, - Species.COMBEE, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.HONCHKROW, - Species.SKUNTANK, - Species.HAPPINY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.TOGEKISS, - Species.MAMOSWINE, - Species.AZELF, - Species.SHAYMIN, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.PATRAT, - Species.WATCHOG, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.WOOBAT, - Species.SWOOBAT, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.BASCULIN, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ARCHEN, - Species.ARCHEOPS, - Species.MINCCINO, - Species.CINCCINO, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.DEERLING, - Species.SAWSBUCK, - Species.FERROSEED, - Species.FERROTHORN, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.STUNFISK, - Species.BOUFFALANT, - Species.DURANT, - Species.KYUREM, - Species.KELDEO, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.BINACLE, - Species.BARBARACLE, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.XERNEAS, - Species.DIANCIE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.SALANDIT, - Species.SALAZZLE, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.PASSIMIAN, - Species.ORANGURU, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.DRAMPA, - Species.KOMMO_O, - Species.SOLGALEO, - Species.BUZZWOLE, - Species.MARSHADOW, - Species.ZERAORA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SKWOVET, - Species.GREEDENT, - Species.FLAPPLE, - Species.SANDACONDA, - Species.CRAMORANT, - Species.TOXEL, - Species.TOXTRICITY, - Species.PERRSERKER, - Species.ALCREMIE, - Species.FALINKS, - Species.STONJOURNER, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.BASCULEGION, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SQUAWKABILLY, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.BOMBIRDIER, - Species.PALAFIN, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.VELUZA, - Species.ANNIHILAPE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.IRON_TREADS, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_ZAPDOS, - Species.HISUI_TYPHLOSION, - Species.PALDEA_TAUROS, + [MoveId.ENDEAVOR]: [ + SpeciesId.BEEDRILL, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.DEWGONG, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.FLAREON, + SpeciesId.MEW, + SpeciesId.MEGANIUM, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.HERACROSS, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.DELIBIRD, + SpeciesId.HOUNDOOM, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.HITMONTOP, + SpeciesId.BLISSEY, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.LUVDISC, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.KRICKETOT, + SpeciesId.KRICKETUNE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.WORMADAM, + SpeciesId.COMBEE, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.HONCHKROW, + SpeciesId.SKUNTANK, + SpeciesId.HAPPINY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.TOGEKISS, + SpeciesId.MAMOSWINE, + SpeciesId.AZELF, + SpeciesId.SHAYMIN, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.BASCULIN, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.STUNFISK, + SpeciesId.BOUFFALANT, + SpeciesId.DURANT, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.PASSIMIAN, + SpeciesId.ORANGURU, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.DRAMPA, + SpeciesId.KOMMO_O, + SpeciesId.SOLGALEO, + SpeciesId.BUZZWOLE, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.FLAPPLE, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.PERRSERKER, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.STONJOURNER, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.BASCULEGION, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SQUAWKABILLY, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.BOMBIRDIER, + SpeciesId.PALAFIN, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.VELUZA, + SpeciesId.ANNIHILAPE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.IRON_TREADS, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.PALDEA_TAUROS, ], - [Moves.SKILL_SWAP]: [ - Species.BUTTERFREE, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.VENONAT, - Species.VENOMOTH, - Species.PSYDUCK, - Species.GOLDUCK, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CHANSEY, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.MEWTWO, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.NATU, - Species.XATU, - Species.ESPEON, - Species.UMBREON, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.STANTLER, - Species.SMOOCHUM, - Species.BLISSEY, - Species.LUGIA, - Species.CELEBI, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.PLUSLE, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.JIRACHI, - Species.DEOXYS, - Species.WORMADAM, - Species.MOTHIM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.SPIRITOMB, - Species.GALLADE, - Species.DUSKNOIR, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.MANAPHY, - Species.VICTINI, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.ALOMOMOLA, - Species.ELGYEM, - Species.BEHEEYEM, - Species.MELOETTA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLOETTE, - Species.FLORGES, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.INKAY, - Species.MALAMAR, - Species.SYLVEON, - Species.CARBINK, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.DIANCIE, - Species.HOOPA, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ORANGURU, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TAPU_LELE, - Species.MAGEARNA, - Species.STAKATAKA, - Species.DOTTLER, - Species.ORBEETLE, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.MR_RIME, - Species.RUNERIGUS, - Species.INDEEDEE, - Species.CALYREX, - Species.WYRDEER, - Species.MEOWSCARADA, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.FARIGIRAF, - Species.IRON_VALIANT, - Species.ALOLA_RAICHU, - Species.ALOLA_EXEGGUTOR, - Species.ETERNAL_FLOETTE, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_SLOWKING, - Species.GALAR_YAMASK, + [MoveId.SKILL_SWAP]: [ + SpeciesId.BUTTERFREE, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CHANSEY, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.BLISSEY, + SpeciesId.LUGIA, + SpeciesId.CELEBI, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.PLUSLE, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.SPIRITOMB, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.MANAPHY, + SpeciesId.VICTINI, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.ALOMOMOLA, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.MELOETTA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.SYLVEON, + SpeciesId.CARBINK, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ORANGURU, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TAPU_LELE, + SpeciesId.MAGEARNA, + SpeciesId.STAKATAKA, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.INDEEDEE, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.MEOWSCARADA, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.FARIGIRAF, + SpeciesId.IRON_VALIANT, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_YAMASK, ], - [Moves.IMPRISON]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.MEWTWO, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.ESPEON, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.STANTLER, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.SHIFTRY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.SPOINK, - Species.GRUMPIG, - Species.BALTOY, - Species.CLAYDOL, - Species.MILOTIC, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.JIRACHI, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.BRONZOR, - Species.BRONZONG, - Species.SPIRITOMB, - Species.TOGEKISS, - Species.GALLADE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.ARCEUS, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.ZORUA, - Species.ZOROARK, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.FRILLISH, - Species.JELLICENT, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.GOLETT, - Species.GOLURK, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, + [MoveId.IMPRISON]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.ESPEON, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.STANTLER, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.SHIFTRY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.MILOTIC, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.JIRACHI, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.SPIRITOMB, + SpeciesId.TOGEKISS, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.ARCEUS, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, [ - Species.MEOWSTIC, + SpeciesId.MEOWSTIC, "male", ], - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.DECIDUEYE, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ORANGURU, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.NECROZMA, - Species.MAGEARNA, - Species.DOTTLER, - Species.ORBEETLE, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.MORGREM, - Species.GRIMMSNARL, - Species.RUNERIGUS, - Species.ALCREMIE, - Species.FROSMOTH, - Species.STONJOURNER, - Species.INDEEDEE, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.CALYREX, - Species.WYRDEER, - Species.ENAMORUS, - Species.SKELEDIRGE, - Species.RABSCA, - Species.FARIGIRAF, - Species.SCREAM_TAIL, - Species.FLUTTER_MANE, - Species.IRON_VALIANT, - Species.IRON_LEAVES, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.MUNKIDORI, - Species.PECHARUNT, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_ARTICUNO, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_YAMASK, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.DECIDUEYE, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ORANGURU, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.RUNERIGUS, + SpeciesId.ALCREMIE, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.INDEEDEE, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.ENAMORUS, + SpeciesId.SKELEDIRGE, + SpeciesId.RABSCA, + SpeciesId.FARIGIRAF, + SpeciesId.SCREAM_TAIL, + SpeciesId.FLUTTER_MANE, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_LEAVES, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.MUNKIDORI, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_YAMASK, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, ], - [Moves.SECRET_POWER]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.PECHARUNT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.SECRET_POWER]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.DIVE]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.KRABBY, - Species.KINGLER, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTOPS, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.CHINCHOU, - Species.LANTURN, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.QWILFISH, - Species.REMORAID, - Species.OCTILLERY, - Species.MANTINE, - Species.KINGDRA, - Species.SUICUNE, - Species.LUGIA, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.LOMBRE, - Species.LUDICOLO, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.BARBOACH, - Species.WHISCASH, - Species.CRAWDAUNT, - Species.FEEBAS, - Species.MILOTIC, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.RAYQUAZA, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIBAREL, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.PALKIA, - Species.PHIONE, - Species.MANAPHY, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PANPOUR, - Species.SIMIPOUR, - Species.SEISMITOAD, - Species.BASCULIN, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.DUCKLETT, - Species.SWANNA, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.BEARTIC, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.WISHIWASHI, - Species.ARAQUANID, - Species.GOLISOPOD, - Species.TAPU_FINI, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.CHEWTLE, - Species.DREDNAW, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.EISCUE, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.FINIZEN, - Species.PALAFIN, - Species.DONDOZO, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, + [MoveId.DIVE]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTOPS, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.QWILFISH, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CRAWDAUNT, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.RAYQUAZA, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIBAREL, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.PALKIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.SEISMITOAD, + SpeciesId.BASCULIN, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.BEARTIC, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.WISHIWASHI, + SpeciesId.ARAQUANID, + SpeciesId.GOLISOPOD, + SpeciesId.TAPU_FINI, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.EISCUE, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.DONDOZO, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "rapid-strike", ], ], - [Moves.FEATHER_DANCE]: [ - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.SPEAROW, - Species.FEAROW, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.ARTICUNO, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.NATU, - Species.XATU, - Species.MURKROW, - Species.DELIBIRD, - Species.LUGIA, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.WINGULL, - Species.PELIPPER, - Species.SWABLU, - Species.ALTARIA, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.HONCHKROW, - Species.CHATOT, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.DUCKLETT, - Species.SWANNA, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.HAWLUCHA, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.ORICORIO, - Species.CRAMORANT, - Species.FROSMOTH, - Species.EISCUE, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.SQUAWKABILLY, - Species.WATTREL, - Species.KILOWATTREL, - Species.ESPATHRA, - Species.BOMBIRDIER, - Species.FLAMIGO, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, + [MoveId.FEATHER_DANCE]: [ + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.ARTICUNO, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MURKROW, + SpeciesId.DELIBIRD, + SpeciesId.LUGIA, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.HONCHKROW, + SpeciesId.CHATOT, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.HAWLUCHA, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.ORICORIO, + SpeciesId.CRAMORANT, + SpeciesId.FROSMOTH, + SpeciesId.EISCUE, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.SQUAWKABILLY, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.ESPATHRA, + SpeciesId.BOMBIRDIER, + SpeciesId.FLAMIGO, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.BLAZE_KICK]: [ - Species.CHARIZARD, - Species.HITMONLEE, - Species.MEW, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.RIOLU, - Species.LUCARIO, - Species.VICTINI, - Species.MIENSHAO, - Species.GENESECT, - Species.INCINEROAR, - Species.MARSHADOW, - Species.ZERAORA, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.GALAR_ZAPDOS, + [MoveId.BLAZE_KICK]: [ + SpeciesId.CHARIZARD, + SpeciesId.HITMONLEE, + SpeciesId.MEW, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.VICTINI, + SpeciesId.MIENSHAO, + SpeciesId.GENESECT, + SpeciesId.INCINEROAR, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.GALAR_ZAPDOS, ], - [Moves.HYPER_VOICE]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.ARCANINE, - Species.CHANSEY, - Species.JYNX, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.SNORLAX, - Species.MEW, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.ESPEON, - Species.UMBREON, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.SNUBBULL, - Species.GRANBULL, - Species.TEDDIURSA, - Species.URSARING, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PHANPY, - Species.DONPHAN, - Species.BLISSEY, - Species.LUGIA, - Species.HO_OH, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOMBRE, - Species.LUDICOLO, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.AZURILL, - Species.SKITTY, - Species.DELCATTY, - Species.MANECTRIC, - Species.WAILMER, - Species.WAILORD, - Species.GRUMPIG, - Species.SPINDA, - Species.SWABLU, - Species.ALTARIA, - Species.CHIMECHO, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.RAYQUAZA, - Species.TORTERRA, - Species.KRICKETUNE, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.HAPPINY, - Species.CHATOT, - Species.MUNCHLAX, - Species.HIPPOWDON, - Species.TOGEKISS, - Species.LEAFEON, - Species.GLACEON, - Species.GALLADE, - Species.ROTOM, - Species.DIALGA, - Species.PALKIA, - Species.GIRATINA, - Species.ARCEUS, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.AUDINO, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.MARACTUS, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.MELOETTA, - Species.DELPHOX, - Species.LITLEO, - Species.PYROAR, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.ROCKRUFF, - Species.LYCANROC, - Species.SALAZZLE, - Species.ORANGURU, - Species.SILVALLY, - Species.TURTONATOR, - Species.DRAMPA, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.SOLGALEO, - Species.NECROZMA, - Species.RILLABOOM, - Species.SKWOVET, - Species.GREEDENT, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.BOLTUND, - Species.TOXTRICITY, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.INDEEDEE, - Species.ARCTOZOLT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ZARUDE, - Species.URSALUNA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.TADBULB, - Species.BELLIBOLT, - Species.MABOSSTIFF, - Species.ESPATHRA, - Species.BOMBIRDIER, - Species.PALAFIN, - Species.CYCLIZAR, - Species.CETODDLE, - Species.CETITAN, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.SCREAM_TAIL, - Species.FLUTTER_MANE, - Species.IRON_JUGULIS, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.RAGING_BOLT, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.GALAR_MEOWTH, - Species.GALAR_ARTICUNO, - Species.GALAR_MOLTRES, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_ARCANINE, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.BLOODMOON_URSALUNA, + [MoveId.HYPER_VOICE]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.ARCANINE, + SpeciesId.CHANSEY, + SpeciesId.JYNX, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.BLISSEY, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.AZURILL, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.MANECTRIC, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.CHIMECHO, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.RAYQUAZA, + SpeciesId.TORTERRA, + SpeciesId.KRICKETUNE, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.MUNCHLAX, + SpeciesId.HIPPOWDON, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GALLADE, + SpeciesId.ROTOM, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.AUDINO, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.MARACTUS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.MELOETTA, + SpeciesId.DELPHOX, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.SALAZZLE, + SpeciesId.ORANGURU, + SpeciesId.SILVALLY, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.SOLGALEO, + SpeciesId.NECROZMA, + SpeciesId.RILLABOOM, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.BOLTUND, + SpeciesId.TOXTRICITY, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.INDEEDEE, + SpeciesId.ARCTOZOLT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ZARUDE, + SpeciesId.URSALUNA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.MABOSSTIFF, + SpeciesId.ESPATHRA, + SpeciesId.BOMBIRDIER, + SpeciesId.PALAFIN, + SpeciesId.CYCLIZAR, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.SCREAM_TAIL, + SpeciesId.FLUTTER_MANE, + SpeciesId.IRON_JUGULIS, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.BLAST_BURN]: [ - Species.CHARIZARD, - Species.MEW, - Species.TYPHLOSION, - Species.BLAZIKEN, - Species.INFERNAPE, - Species.EMBOAR, - Species.DELPHOX, - Species.INCINEROAR, - Species.CINDERACE, - Species.SKELEDIRGE, - Species.HISUI_TYPHLOSION, + [MoveId.BLAST_BURN]: [ + SpeciesId.CHARIZARD, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.BLAZIKEN, + SpeciesId.INFERNAPE, + SpeciesId.EMBOAR, + SpeciesId.DELPHOX, + SpeciesId.INCINEROAR, + SpeciesId.CINDERACE, + SpeciesId.SKELEDIRGE, + SpeciesId.HISUI_TYPHLOSION, ], - [Moves.HYDRO_CANNON]: [ - Species.BLASTOISE, - Species.MEW, - Species.FERALIGATR, - Species.SWAMPERT, - Species.EMPOLEON, - Species.SAMUROTT, - Species.GRENINJA, - Species.PRIMARINA, - Species.INTELEON, - Species.QUAQUAVAL, - Species.HISUI_SAMUROTT, + [MoveId.HYDRO_CANNON]: [ + SpeciesId.BLASTOISE, + SpeciesId.MEW, + SpeciesId.FERALIGATR, + SpeciesId.SWAMPERT, + SpeciesId.EMPOLEON, + SpeciesId.SAMUROTT, + SpeciesId.GRENINJA, + SpeciesId.PRIMARINA, + SpeciesId.INTELEON, + SpeciesId.QUAQUAVAL, + SpeciesId.HISUI_SAMUROTT, ], - [Moves.WEATHER_BALL]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.VULPIX, - Species.NINETALES, - Species.VILEPLUME, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.CLOYSTER, - Species.HORSEA, - Species.SEADRA, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.MEGANIUM, - Species.BELLOSSOM, - Species.POLITOED, - Species.SUNKERN, - Species.SUNFLORA, - Species.ESPEON, - Species.UMBREON, - Species.SLOWKING, - Species.DELIBIRD, - Species.KINGDRA, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.SWAMPERT, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.NUZLEAF, - Species.SHIFTRY, - Species.PELIPPER, - Species.MASQUERAIN, - Species.ROSELIA, - Species.WAILMER, - Species.WAILORD, - Species.TORKOAL, - Species.ALTARIA, - Species.LUNATONE, - Species.SOLROCK, - Species.WHISCASH, - Species.MILOTIC, - Species.CASTFORM, - Species.SNORUNT, - Species.GLALIE, - Species.LATIAS, - Species.LATIOS, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BUDEW, - Species.ROSERADE, - Species.CHERUBI, - Species.CHERRIM, - Species.GASTRODON, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BRONZONG, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SNOVER, - Species.ABOMASNOW, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.LEAFEON, - Species.GLACEON, - Species.FROSLASS, - Species.PHIONE, - Species.MANAPHY, - Species.GIGALITH, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.LILLIGANT, - Species.MARACTUS, - Species.SWANNA, - Species.VANILLUXE, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.GRENINJA, - Species.VIVILLON, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOLISK, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.GOODRA, - Species.VOLCANION, - Species.PRIMARINA, - Species.FOMANTIS, - Species.LURANTIS, - Species.SHIINOTIC, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.ELDEGOSS, - Species.CRAMORANT, - Species.FROSMOTH, - Species.EISCUE, - Species.ENAMORUS, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.ARMAROUGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.RELLOR, - Species.RABSCA, - Species.WALKING_WAKE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.TERAPAGOS, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.HISUI_LILLIGANT, - Species.HISUI_GOODRA, + [MoveId.WEATHER_BALL]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.VILEPLUME, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.CLOYSTER, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.MEGANIUM, + SpeciesId.BELLOSSOM, + SpeciesId.POLITOED, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.SLOWKING, + SpeciesId.DELIBIRD, + SpeciesId.KINGDRA, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.SWAMPERT, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.PELIPPER, + SpeciesId.MASQUERAIN, + SpeciesId.ROSELIA, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.TORKOAL, + SpeciesId.ALTARIA, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.WHISCASH, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.GASTRODON, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BRONZONG, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.FROSLASS, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.GIGALITH, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.LILLIGANT, + SpeciesId.MARACTUS, + SpeciesId.SWANNA, + SpeciesId.VANILLUXE, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.GRENINJA, + SpeciesId.VIVILLON, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOLISK, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.GOODRA, + SpeciesId.VOLCANION, + SpeciesId.PRIMARINA, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.SHIINOTIC, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.ELDEGOSS, + SpeciesId.CRAMORANT, + SpeciesId.FROSMOTH, + SpeciesId.EISCUE, + SpeciesId.ENAMORUS, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.ARMAROUGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.WALKING_WAKE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_GOODRA, ], - [Moves.FAKE_TEARS]: [ - Species.PIKACHU, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.JYNX, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.MEW, - Species.TOTODILE, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.ESPEON, - Species.UMBREON, - Species.MISDREAVUS, - Species.SNUBBULL, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SMOOCHUM, - Species.SHROOMISH, - Species.BRELOOM, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.AZURILL, - Species.SKITTY, - Species.MAWILE, - Species.PLUSLE, - Species.MINUN, - Species.ILLUMISE, - Species.SPINDA, - Species.CHIMECHO, - Species.SNORUNT, - Species.GLALIE, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.PACHIRISU, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.GLAMEOW, - Species.BONSLY, - Species.WEAVILE, - Species.LEAFEON, - Species.GLACEON, - Species.FROSLASS, - Species.PURRLOIN, - Species.LIEPARD, - Species.WOOBAT, - Species.SWOOBAT, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.SCRAGGY, - Species.SCRAFTY, - Species.YAMASK, - Species.COFAGRIGUS, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.DEERLING, - Species.SAWSBUCK, - Species.VULLABY, - Species.MANDIBUZZ, - Species.MELOETTA, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.SYLVEON, - Species.DIANCIE, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.SALAZZLE, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.NICKIT, - Species.THIEVUL, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.MR_RIME, - Species.RUNERIGUS, - Species.ALCREMIE, - Species.MORPEKO, - Species.URSALUNA, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.SQUAWKABILLY, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.SCREAM_TAIL, - Species.FLUTTER_MANE, - Species.PECHARUNT, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.GALAR_MEOWTH, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_YAMASK, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, + [MoveId.FAKE_TEARS]: [ + SpeciesId.PIKACHU, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.JYNX, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MISDREAVUS, + SpeciesId.SNUBBULL, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SMOOCHUM, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.AZURILL, + SpeciesId.SKITTY, + SpeciesId.MAWILE, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.ILLUMISE, + SpeciesId.SPINDA, + SpeciesId.CHIMECHO, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.PACHIRISU, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.GLAMEOW, + SpeciesId.BONSLY, + SpeciesId.WEAVILE, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.FROSLASS, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.MELOETTA, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.SYLVEON, + SpeciesId.DIANCIE, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.SALAZZLE, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.ALCREMIE, + SpeciesId.MORPEKO, + SpeciesId.URSALUNA, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.SQUAWKABILLY, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.SCREAM_TAIL, + SpeciesId.FLUTTER_MANE, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_YAMASK, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, ], - [Moves.AIR_CUTTER]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.SPEAROW, - Species.FEAROW, - Species.ZUBAT, - Species.GOLBAT, - Species.VENOMOTH, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SCYTHER, - Species.AERODACTYL, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.CROBAT, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.YANMA, - Species.MURKROW, - Species.SCIZOR, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.LUGIA, - Species.HO_OH, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.MASQUERAIN, - Species.NINJASK, - Species.VOLBEAT, - Species.ILLUMISE, - Species.VIBRAVA, - Species.FLYGON, - Species.SWABLU, - Species.ALTARIA, - Species.TROPIUS, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.MOTHIM, - Species.COMBEE, - Species.VESPIQUEN, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.HONCHKROW, - Species.CHATOT, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.TOGEKISS, - Species.YANMEGA, - Species.GIRATINA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.SIGILYPH, - Species.DUCKLETT, - Species.SWANNA, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.VOLCARONA, - Species.TORNADUS, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.NOIBAT, - Species.NOIVERN, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.ORICORIO, - Species.KARTANA, - Species.NAGANADEL, - Species.INTELEON, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.CRAMORANT, - Species.KLEAVOR, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.SQUAWKABILLY, - Species.WATTREL, - Species.KILOWATTREL, - Species.BOMBIRDIER, - Species.FLAMIGO, - Species.IRON_BUNDLE, - Species.IRON_JUGULIS, - Species.FEZANDIPITI, - Species.SHAYMIN, - Species.GALAR_ARTICUNO, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, + [MoveId.AIR_CUTTER]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.VENOMOTH, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SCYTHER, + SpeciesId.AERODACTYL, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.CROBAT, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.YANMA, + SpeciesId.MURKROW, + SpeciesId.SCIZOR, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.MASQUERAIN, + SpeciesId.NINJASK, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.TROPIUS, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.MOTHIM, + SpeciesId.COMBEE, + SpeciesId.VESPIQUEN, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.HONCHKROW, + SpeciesId.CHATOT, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.GIRATINA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SIGILYPH, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.VOLCARONA, + SpeciesId.TORNADUS, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.ORICORIO, + SpeciesId.KARTANA, + SpeciesId.NAGANADEL, + SpeciesId.INTELEON, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.CRAMORANT, + SpeciesId.KLEAVOR, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.SQUAWKABILLY, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.BOMBIRDIER, + SpeciesId.FLAMIGO, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_JUGULIS, + SpeciesId.FEZANDIPITI, + SpeciesId.SHAYMIN, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.OVERHEAT]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.VULPIX, - Species.NINETALES, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.PONYTA, - Species.RAPIDASH, - Species.MAGMAR, - Species.FLAREON, - Species.MOLTRES, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.SNUBBULL, - Species.GRANBULL, - Species.SLUGMA, - Species.MAGCARGO, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.MAGBY, - Species.ENTEI, - Species.HO_OH, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.LOUDRED, - Species.EXPLOUD, - Species.MANECTRIC, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SOLROCK, - Species.GROUDON, - Species.RAYQUAZA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.MAGMORTAR, - Species.DIALGA, - Species.HEATRAN, - Species.ARCEUS, - Species.VICTINI, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.PANSEAR, - Species.SIMISEAR, - Species.ZEBSTRIKA, - Species.DARUMAKA, - Species.DARMANITAN, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.HEATMOR, - Species.LARVESTA, - Species.VOLCARONA, - Species.RESHIRAM, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.LITLEO, - Species.PYROAR, - Species.VOLCANION, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.TOUCANNON, - Species.SALANDIT, - Species.SALAZZLE, - Species.TURTONATOR, - Species.BLACEPHALON, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.CARKOL, - Species.COALOSSAL, - Species.CENTISKORCH, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.SCOVILLAIN, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ANNIHILAPE, - Species.IRON_MOTH, - Species.CHI_YU, - Species.KORAIDON, - Species.MIRAIDON, - Species.GOUGING_FIRE, + [MoveId.OVERHEAT]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.MAGMAR, + SpeciesId.FLAREON, + SpeciesId.MOLTRES, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.MAGBY, + SpeciesId.ENTEI, + SpeciesId.HO_OH, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MANECTRIC, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SOLROCK, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.MAGMORTAR, + SpeciesId.DIALGA, + SpeciesId.HEATRAN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.ZEBSTRIKA, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.HEATMOR, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.RESHIRAM, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.VOLCANION, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.TOUCANNON, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.TURTONATOR, + SpeciesId.BLACEPHALON, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.CENTISKORCH, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.SCOVILLAIN, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ANNIHILAPE, + SpeciesId.IRON_MOTH, + SpeciesId.CHI_YU, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.GOUGING_FIRE, [ - Species.ROTOM, + SpeciesId.ROTOM, "heat", ], - Species.GALAR_WEEZING, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "blaze", ], ], - [Moves.ROCK_TOMB]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.EKANS, - Species.ARBOK, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.DIGLETT, - Species.DUGTRIO, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.GRIMER, - Species.MUK, - Species.ONIX, - Species.KRABBY, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.PINSIR, - Species.TAUROS, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SUDOWOODO, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.GRANBULL, - Species.SHUCKLE, - Species.HERACROSS, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.MANTINE, - Species.SKARMORY, - Species.PHANPY, - Species.DONPHAN, - Species.MILTANK, - Species.BLISSEY, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.ZANGOOSE, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.KECLEON, - Species.DUSCLOPS, - Species.ABSOL, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.HUNTAIL, - Species.RELICANTH, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.DEOXYS, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.ABOMASNOW, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.GLISCOR, - Species.MAMOSWINE, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.DARKRAI, - Species.ARCEUS, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DRILBUR, - Species.EXCADRILL, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SCOLIPEDE, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.HYDREIGON, - Species.TERRAKION, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.BINACLE, - Species.BARBARACLE, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.HAWLUCHA, - Species.CARBINK, - Species.BERGMITE, - Species.AVALUGG, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.MUDBRAY, - Species.MUDSDALE, - Species.STUFFUL, - Species.BEWEAR, - Species.PASSIMIAN, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_BULU, - Species.SOLGALEO, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.GUZZLORD, - Species.NECROZMA, - Species.MARSHADOW, - Species.STAKATAKA, - Species.MELMETAL, - Species.DREDNAW, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CURSOLA, - Species.RUNERIGUS, - Species.FALINKS, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.URSHIFU, - Species.ZARUDE, - Species.KLEAVOR, - Species.URSALUNA, - Species.SNEASLER, - Species.SPIDOPS, - Species.PAWMOT, - Species.GARGANACL, - Species.KLAWF, - Species.RELLOR, - Species.RABSCA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.BOMBIRDIER, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_THORNS, - Species.TING_LU, - Species.OKIDOGI, - Species.OGERPON, - Species.ARCHALUDON, - Species.IRON_BOULDER, + [MoveId.ROCK_TOMB]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.ONIX, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SUDOWOODO, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.GRANBULL, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.ZANGOOSE, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.KECLEON, + SpeciesId.DUSCLOPS, + SpeciesId.ABSOL, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.HUNTAIL, + SpeciesId.RELICANTH, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.DEOXYS, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.ABOMASNOW, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SCOLIPEDE, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.HYDREIGON, + SpeciesId.TERRAKION, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.HAWLUCHA, + SpeciesId.CARBINK, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.PASSIMIAN, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_BULU, + SpeciesId.SOLGALEO, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MARSHADOW, + SpeciesId.STAKATAKA, + SpeciesId.MELMETAL, + SpeciesId.DREDNAW, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.FALINKS, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.SPIDOPS, + SpeciesId.PAWMOT, + SpeciesId.GARGANACL, + SpeciesId.KLAWF, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.BOMBIRDIER, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_THORNS, + SpeciesId.TING_LU, + SpeciesId.OKIDOGI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.IRON_BOULDER, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "sandy", ], - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_CORSOLA, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.METAL_SOUND]: [ - Species.MAGNEMITE, - Species.MAGNETON, - Species.VOLTORB, - Species.ELECTRODE, - Species.ELECTABUZZ, - Species.JOLTEON, - Species.KABUTO, - Species.KABUTOPS, - Species.ZAPDOS, - Species.MEW, - Species.FORRETRESS, - Species.SKARMORY, - Species.ELEKID, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.REGISTEEL, - Species.JIRACHI, - Species.EMPOLEON, - Species.SHIELDON, - Species.BASTIODON, + [MoveId.METAL_SOUND]: [ + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.ELECTABUZZ, + SpeciesId.JOLTEON, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.ZAPDOS, + SpeciesId.MEW, + SpeciesId.FORRETRESS, + SpeciesId.SKARMORY, + SpeciesId.ELEKID, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.REGISTEEL, + SpeciesId.JIRACHI, + SpeciesId.EMPOLEON, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "trash", ], - Species.BRONZOR, - Species.BRONZONG, - Species.LUCARIO, - Species.MAGNEZONE, - Species.ELECTIVIRE, - Species.PROBOPASS, - Species.DIALGA, - Species.HEATRAN, - Species.DRILBUR, - Species.EXCADRILL, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.PAWNIARD, - Species.BISHARP, - Species.DURANT, - Species.COBALION, - Species.GENESECT, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.KLEFKI, - Species.TYPE_NULL, - Species.SILVALLY, - Species.DHELMISE, - Species.KOMMO_O, - Species.SOLGALEO, - Species.CELESTEELA, - Species.MAGEARNA, - Species.CORVIKNIGHT, - Species.TOXEL, - Species.TOXTRICITY, - Species.PERRSERKER, - Species.DURALUDON, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.VAROOM, - Species.REVAVROOM, - Species.ORTHWORM, - Species.KINGAMBIT, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.GHOLDENGO, - Species.MIRAIDON, - Species.IRON_LEAVES, - Species.ARCHALUDON, - Species.IRON_CROWN, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.GALAR_MEOWTH, - Species.GALAR_STUNFISK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.LUCARIO, + SpeciesId.MAGNEZONE, + SpeciesId.ELECTIVIRE, + SpeciesId.PROBOPASS, + SpeciesId.DIALGA, + SpeciesId.HEATRAN, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.DURANT, + SpeciesId.COBALION, + SpeciesId.GENESECT, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.KLEFKI, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.DHELMISE, + SpeciesId.KOMMO_O, + SpeciesId.SOLGALEO, + SpeciesId.CELESTEELA, + SpeciesId.MAGEARNA, + SpeciesId.CORVIKNIGHT, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.PERRSERKER, + SpeciesId.DURALUDON, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.ORTHWORM, + SpeciesId.KINGAMBIT, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.GHOLDENGO, + SpeciesId.MIRAIDON, + SpeciesId.IRON_LEAVES, + SpeciesId.ARCHALUDON, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_STUNFISK, ], - [Moves.COSMIC_POWER]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.STARYU, - Species.STARMIE, - Species.MEW, - Species.NATU, - Species.XATU, - Species.SKITTY, - Species.DELCATTY, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.CASTFORM, - Species.CHIMECHO, - Species.METANG, - Species.METAGROSS, - Species.RAYQUAZA, - Species.JIRACHI, + [MoveId.COSMIC_POWER]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MEW, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.CASTFORM, + SpeciesId.CHIMECHO, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, [ - Species.DEOXYS, + SpeciesId.DEOXYS, "", "attack", ], - Species.BUNEARY, - Species.LOPUNNY, - Species.CHINGLING, - Species.ARCEUS, - Species.SIGILYPH, - Species.GOTHITELLE, - Species.ELGYEM, - Species.BEHEEYEM, - Species.MINIOR, - Species.COSMOEM, - Species.SOLGALEO, - Species.LUNALA, - Species.NECROZMA, - Species.ETERNATUS, - Species.RELLOR, - Species.RABSCA, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.CHINGLING, + SpeciesId.ARCEUS, + SpeciesId.SIGILYPH, + SpeciesId.GOTHITELLE, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.MINIOR, + SpeciesId.COSMOEM, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NECROZMA, + SpeciesId.ETERNATUS, + SpeciesId.RELLOR, + SpeciesId.RABSCA, ], - [Moves.SIGNAL_BEAM]: [ - Species.BLASTOISE, - Species.BUTTERFREE, - Species.PIKACHU, - Species.RAICHU, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VENONAT, - Species.VENOMOTH, - Species.PSYDUCK, - Species.GOLDUCK, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.SEEL, - Species.DEWGONG, - Species.CLOYSTER, - Species.DROWZEE, - Species.HYPNO, - Species.VOLTORB, - Species.ELECTRODE, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.LAPRAS, - Species.VAPOREON, - Species.JOLTEON, - Species.PORYGON, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MEWTWO, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.YANMA, - Species.ESPEON, - Species.SLOWKING, - Species.GIRAFARIG, - Species.FORRETRESS, - Species.QWILFISH, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.KINGDRA, - Species.PORYGON2, - Species.STANTLER, - Species.SMOOCHUM, - Species.ELEKID, - Species.RAIKOU, - Species.SUICUNE, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.SPOINK, - Species.GRUMPIG, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.CHIMECHO, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.GOREBYSS, - Species.METANG, - Species.METAGROSS, - Species.REGICE, - Species.KYOGRE, - Species.JIRACHI, - Species.DEOXYS, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.MAGNEZONE, - Species.ELECTIVIRE, - Species.TOGEKISS, - Species.YANMEGA, - Species.GLACEON, - Species.PORYGON_Z, - Species.GALLADE, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.ARCEUS, - Species.VICTINI, - Species.WATCHOG, - Species.MUNNA, - Species.MUSHARNA, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.SIGILYPH, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.JOLTIK, - Species.GALVANTULA, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.GOLETT, - Species.GOLURK, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.ZEKROM, - Species.KYUREM, - Species.MELOETTA, - Species.GENESECT, - Species.DELPHOX, - Species.VIVILLON, - Species.ESPURR, - Species.MEOWSTIC, - Species.MALAMAR, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.DEDENNE, - Species.HOOPA, - Species.VIKAVOLT, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.TYPE_NULL, - Species.SILVALLY, - Species.BRUXISH, - Species.DRAMPA, - Species.LUNALA, - Species.PHEROMOSA, - Species.XURKITREE, - Species.NECROZMA, - Species.MAGEARNA, - Species.POIPOLE, - Species.NAGANADEL, - Species.WYRDEER, - Species.FARIGIRAF, - Species.ALOLA_RAICHU, + [MoveId.SIGNAL_BEAM]: [ + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.CLOYSTER, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.PORYGON, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.YANMA, + SpeciesId.ESPEON, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.FORRETRESS, + SpeciesId.QWILFISH, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.RAIKOU, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.CHIMECHO, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.GOREBYSS, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGICE, + SpeciesId.KYOGRE, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.MAGNEZONE, + SpeciesId.ELECTIVIRE, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.GLACEON, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.WATCHOG, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.SIGILYPH, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.DELPHOX, + SpeciesId.VIVILLON, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.MALAMAR, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.DEDENNE, + SpeciesId.HOOPA, + SpeciesId.VIKAVOLT, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.LUNALA, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.WYRDEER, + SpeciesId.FARIGIRAF, + SpeciesId.ALOLA_RAICHU, ], - [Moves.SAND_TOMB]: [ - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.DIGLETT, - Species.DUGTRIO, - Species.ONIX, - Species.MEW, - Species.SUDOWOODO, - Species.PINECO, - Species.FORRETRESS, - Species.GLIGAR, - Species.STEELIX, - Species.SCIZOR, - Species.SHUCKLE, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.SKARMORY, - Species.PHANPY, - Species.DONPHAN, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.NOSEPASS, - Species.LAIRON, - Species.AGGRON, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.LUNATONE, - Species.SOLROCK, - Species.WHISCASH, - Species.BALTOY, - Species.CLAYDOL, - Species.REGIROCK, - Species.REGISTEEL, - Species.GROUDON, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.GASTRODON, - Species.BONSLY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.DRAPION, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PROBOPASS, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DRILBUR, - Species.EXCADRILL, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DWEBBLE, - Species.CRUSTLE, - Species.LANDORUS, - Species.DIGGERSBY, - Species.CARBINK, - Species.DIANCIE, - Species.MUDBRAY, - Species.MUDSDALE, - Species.SANDYGAST, - Species.PALOSSAND, - Species.DREDNAW, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.SILICOBRA, - Species.SANDACONDA, - Species.RUNERIGUS, - Species.STONJOURNER, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.SANDY_SHOCKS, - Species.IRON_THORNS, - Species.TING_LU, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, + [MoveId.SAND_TOMB]: [ + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.ONIX, + SpeciesId.MEW, + SpeciesId.SUDOWOODO, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.SKARMORY, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.NOSEPASS, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.WHISCASH, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.REGIROCK, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.GASTRODON, + SpeciesId.BONSLY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.DRAPION, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PROBOPASS, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.LANDORUS, + SpeciesId.DIGGERSBY, + SpeciesId.CARBINK, + SpeciesId.DIANCIE, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.DREDNAW, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.RUNERIGUS, + SpeciesId.STONJOURNER, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_THORNS, + SpeciesId.TING_LU, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, ], - [Moves.MUDDY_WATER]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.LICKITUNG, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.OMANYTE, - Species.OMASTAR, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.CHINCHOU, - Species.LANTURN, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.KINGDRA, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.WINGULL, - Species.PELIPPER, - Species.AZURILL, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.FEEBAS, - Species.MILOTIC, - Species.CLAMPERL, - Species.RELICANTH, - Species.KYOGRE, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.LICKILICKY, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.BASCULIN, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.JELLICENT, - Species.STUNFISK, - Species.KELDEO, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.GOLISOPOD, - Species.DHELMISE, - Species.TAPU_FINI, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.DREDNAW, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.PINCURCHIN, - Species.BASCULEGION, - Species.TADBULB, - Species.BELLIBOLT, - Species.WIGLETT, - Species.WUGTRIO, - Species.TATSUGIRI, - Species.CLODSIRE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_STUNFISK, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, + [MoveId.MUDDY_WATER]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.LICKITUNG, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.KINGDRA, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.AZURILL, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CLAMPERL, + SpeciesId.RELICANTH, + SpeciesId.KYOGRE, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.LICKILICKY, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.BASCULIN, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.JELLICENT, + SpeciesId.STUNFISK, + SpeciesId.KELDEO, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.GOLISOPOD, + SpeciesId.DHELMISE, + SpeciesId.TAPU_FINI, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.DREDNAW, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.PINCURCHIN, + SpeciesId.BASCULEGION, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.TATSUGIRI, + SpeciesId.CLODSIRE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, ], - [Moves.BULLET_SEED]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.TANGELA, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.SUNKERN, - Species.SUNFLORA, - Species.HERACROSS, - Species.REMORAID, - Species.OCTILLERY, - Species.MANTINE, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SHROOMISH, - Species.BRELOOM, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CACNEA, - Species.CACTURNE, - Species.LILEEP, - Species.CRADILY, - Species.TROPIUS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.BUDEW, - Species.ROSERADE, - Species.CHERUBI, - Species.CHERRIM, - Species.CARNIVINE, - Species.SNOVER, - Species.ABOMASNOW, - Species.TANGROWTH, - Species.LEAFEON, - Species.SHAYMIN, - Species.ARCEUS, - Species.PATRAT, - Species.WATCHOG, - Species.PANSAGE, - Species.SIMISAGE, - Species.LEAVANNY, - Species.PETILIL, - Species.LILLIGANT, - Species.MARACTUS, - Species.MINCCINO, - Species.CINCCINO, - Species.DEERLING, - Species.SAWSBUCK, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FERROSEED, - Species.FERROTHORN, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.SKIDDO, - Species.GOGOAT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.FOMANTIS, - Species.LURANTIS, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.TAPU_BULU, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SKWOVET, - Species.GREEDENT, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.FLAPPLE, - Species.APPLETUN, - Species.MORPEKO, - Species.ZARUDE, - Species.CALYREX, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.BRUTE_BONNET, - Species.WO_CHIEN, - Species.DIPPLIN, - Species.OGERPON, - Species.HYDRAPPLE, + [MoveId.BULLET_SEED]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.TANGELA, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.HERACROSS, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.MANTINE, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.TROPIUS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.CARNIVINE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.TANGROWTH, + SpeciesId.LEAFEON, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.LEAVANNY, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.MARACTUS, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.TAPU_BULU, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.MORPEKO, + SpeciesId.ZARUDE, + SpeciesId.CALYREX, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.BRUTE_BONNET, + SpeciesId.WO_CHIEN, + SpeciesId.DIPPLIN, + SpeciesId.OGERPON, + SpeciesId.HYDRAPPLE, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "plant", ], - Species.ALOLA_EXEGGUTOR, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.AERIAL_ACE]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.SPEAROW, - Species.FEAROW, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.ZUBAT, - Species.GOLBAT, - Species.PARAS, - Species.PARASECT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.SLOWBRO, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.CUBONE, - Species.MAROWAK, - Species.KANGASKHAN, - Species.MR_MIME, - Species.SCYTHER, - Species.PORYGON, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.CROBAT, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.YANMA, - Species.MURKROW, - Species.MISDREAVUS, - Species.GLIGAR, - Species.SCIZOR, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.PORYGON2, - Species.HITMONTOP, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.MASQUERAIN, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.SABLEYE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.VOLBEAT, - Species.ILLUMISE, - Species.FLYGON, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.ANORITH, - Species.ARMALDO, - Species.KECLEON, - Species.TROPIUS, - Species.ABSOL, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.KRICKETUNE, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHATOT, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.RIOLU, - Species.LUCARIO, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.MANTYKE, - Species.WEAVILE, - Species.TANGROWTH, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLISCOR, - Species.PORYGON_Z, - Species.GALLADE, - Species.DIALGA, - Species.PALKIA, - Species.REGIGIGAS, - Species.GIRATINA, - Species.DARKRAI, - Species.ARCEUS, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.LEAVANNY, - Species.KROKOROK, - Species.KROOKODILE, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SIGILYPH, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.DUCKLETT, - Species.SWANNA, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FERROTHORN, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.KELDEO, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.HAWLUCHA, - Species.DEDENNE, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.LURANTIS, - Species.STUFFUL, - Species.BEWEAR, - Species.PASSIMIAN, - Species.GOLISOPOD, - Species.TYPE_NULL, - Species.SILVALLY, - Species.BRUXISH, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.LUNALA, - Species.KARTANA, - Species.NECROZMA, - Species.NAGANADEL, - Species.ZERAORA, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.FLAPPLE, - Species.CRAMORANT, - Species.DRACOZOLT, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.KLEAVOR, - Species.URSALUNA, - Species.SNEASLER, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.SPIDOPS, - Species.LOKIX, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.SQUAWKABILLY, - Species.WATTREL, - Species.KILOWATTREL, - Species.ESPATHRA, - Species.BOMBIRDIER, - Species.CYCLIZAR, - Species.FLAMIGO, - Species.KINGAMBIT, - Species.SLITHER_WING, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.CHIEN_PAO, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.IRON_LEAVES, - Species.FEZANDIPITI, - Species.IRON_BOULDER, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, + [MoveId.AERIAL_ACE]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.SLOWBRO, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.PORYGON, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.CROBAT, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.YANMA, + SpeciesId.MURKROW, + SpeciesId.MISDREAVUS, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.PORYGON2, + SpeciesId.HITMONTOP, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.MASQUERAIN, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.FLYGON, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.KECLEON, + SpeciesId.TROPIUS, + SpeciesId.ABSOL, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.KRICKETUNE, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHATOT, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.MANTYKE, + SpeciesId.WEAVILE, + SpeciesId.TANGROWTH, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLISCOR, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.LEAVANNY, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SIGILYPH, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FERROTHORN, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.KELDEO, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.LURANTIS, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.PASSIMIAN, + SpeciesId.GOLISOPOD, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.BRUXISH, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.LUNALA, + SpeciesId.KARTANA, + SpeciesId.NECROZMA, + SpeciesId.NAGANADEL, + SpeciesId.ZERAORA, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.FLAPPLE, + SpeciesId.CRAMORANT, + SpeciesId.DRACOZOLT, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.SPIDOPS, + SpeciesId.LOKIX, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.SQUAWKABILLY, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.ESPATHRA, + SpeciesId.BOMBIRDIER, + SpeciesId.CYCLIZAR, + SpeciesId.FLAMIGO, + SpeciesId.KINGAMBIT, + SpeciesId.SLITHER_WING, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.CHIEN_PAO, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_LEAVES, + SpeciesId.FEZANDIPITI, + SpeciesId.IRON_BOULDER, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.ICICLE_SPEAR]: [ - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.JYNX, - Species.LAPRAS, - Species.ARTICUNO, - Species.MEW, - Species.SNEASEL, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.DELIBIRD, - Species.SNORUNT, - Species.GLALIE, - Species.SEALEO, - Species.WALREIN, - Species.REGICE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.GLACEON, - Species.MAMOSWINE, - Species.FROSLASS, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.KYUREM, - Species.AURORUS, - Species.BERGMITE, - Species.AVALUGG, - Species.INTELEON, - Species.CURSOLA, - Species.MR_RIME, - Species.SNOM, - Species.FROSMOTH, - Species.EISCUE, - Species.ARCTOZOLT, - Species.ARCTOVISH, - Species.GLASTRIER, - Species.CETODDLE, - Species.CETITAN, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.GALAR_MR_MIME, - Species.GALAR_CORSOLA, + [MoveId.ICICLE_SPEAR]: [ + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.JYNX, + SpeciesId.LAPRAS, + SpeciesId.ARTICUNO, + SpeciesId.MEW, + SpeciesId.SNEASEL, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.DELIBIRD, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.REGICE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.GLACEON, + SpeciesId.MAMOSWINE, + SpeciesId.FROSLASS, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.KYUREM, + SpeciesId.AURORUS, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.INTELEON, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.EISCUE, + SpeciesId.ARCTOZOLT, + SpeciesId.ARCTOVISH, + SpeciesId.GLASTRIER, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_CORSOLA, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_AVALUGG, + SpeciesId.HISUI_AVALUGG, ], - [Moves.IRON_DEFENSE]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.METAPOD, - Species.BUTTERFREE, - Species.KAKUNA, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.SHELLDER, - Species.CLOYSTER, - Species.KRABBY, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.RHYDON, - Species.MR_MIME, - Species.PINSIR, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.MEW, - Species.SUDOWOODO, - Species.SLOWKING, - Species.PINECO, - Species.FORRETRESS, - Species.STEELIX, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SLUGMA, - Species.MAGCARGO, - Species.CORSOLA, - Species.SKARMORY, - Species.DONPHAN, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.SILCOON, - Species.CASCOON, - Species.NOSEPASS, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.TORKOAL, - Species.SOLROCK, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.CLAYDOL, - Species.ANORITH, - Species.ARMALDO, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.BELDUM, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGISTEEL, - Species.JIRACHI, - Species.TORTERRA, - Species.EMPOLEON, - Species.SHIELDON, - Species.BASTIODON, - Species.BRONZOR, - Species.BRONZONG, - Species.RIOLU, - Species.LUCARIO, - Species.DRAPION, - Species.MAGNEZONE, - Species.RHYPERIOR, - Species.PROBOPASS, - Species.DIALGA, - Species.HEATRAN, - Species.ARCEUS, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DRILBUR, - Species.EXCADRILL, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.DARMANITAN, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.CRYOGONAL, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.VULLABY, - Species.MANDIBUZZ, - Species.DURANT, - Species.COBALION, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.SPEWPA, - Species.VIVILLON, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.BINACLE, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.CARBINK, - Species.KLEFKI, - Species.BERGMITE, - Species.AVALUGG, - Species.DIANCIE, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.TURTONATOR, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.STAKATAKA, - Species.MELTAN, - Species.MELMETAL, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.DREDNAW, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SANDACONDA, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.FALINKS, - Species.STONJOURNER, - Species.EISCUE, - Species.CUFANT, - Species.COPPERAJAH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.URSHIFU, - Species.GLASTRIER, - Species.ENAMORUS, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.KLAWF, - Species.RELLOR, - Species.RABSCA, - Species.VAROOM, - Species.REVAVROOM, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.KINGAMBIT, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.IRON_LEAVES, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.ARCHALUDON, - Species.IRON_CROWN, + [MoveId.IRON_DEFENSE]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.METAPOD, + SpeciesId.BUTTERFREE, + SpeciesId.KAKUNA, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.RHYDON, + SpeciesId.MR_MIME, + SpeciesId.PINSIR, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.MEW, + SpeciesId.SUDOWOODO, + SpeciesId.SLOWKING, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.STEELIX, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.CORSOLA, + SpeciesId.SKARMORY, + SpeciesId.DONPHAN, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.SILCOON, + SpeciesId.CASCOON, + SpeciesId.NOSEPASS, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.TORKOAL, + SpeciesId.SOLROCK, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.CLAYDOL, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.BELDUM, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGISTEEL, + SpeciesId.JIRACHI, + SpeciesId.TORTERRA, + SpeciesId.EMPOLEON, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.DRAPION, + SpeciesId.MAGNEZONE, + SpeciesId.RHYPERIOR, + SpeciesId.PROBOPASS, + SpeciesId.DIALGA, + SpeciesId.HEATRAN, + SpeciesId.ARCEUS, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.DARMANITAN, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.CRYOGONAL, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.DURANT, + SpeciesId.COBALION, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.SPEWPA, + SpeciesId.VIVILLON, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.CARBINK, + SpeciesId.KLEFKI, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.DIANCIE, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.TURTONATOR, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.STAKATAKA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.DREDNAW, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SANDACONDA, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.FALINKS, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.URSHIFU, + SpeciesId.GLASTRIER, + SpeciesId.ENAMORUS, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.KLAWF, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.KINGAMBIT, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.IRON_LEAVES, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.ARCHALUDON, + SpeciesId.IRON_CROWN, [ - Species.DEOXYS, + SpeciesId.DEOXYS, "defense", ], [ - Species.WORMADAM, + SpeciesId.WORMADAM, "trash", ], - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_AVALUGG, + SpeciesId.HISUI_AVALUGG, ], - [Moves.DRAGON_CLAW]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.AERODACTYL, - Species.DRAGONITE, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.TYRANITAR, - Species.SCEPTILE, - Species.AGGRON, - Species.FLYGON, - Species.ALTARIA, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.GROUDON, - Species.RAYQUAZA, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.DIALGA, - Species.PALKIA, - Species.GIRATINA, - Species.ARCEUS, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ARCHEN, - Species.ARCHEOPS, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.DRUDDIGON, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.CHESNAUGHT, - Species.PANGORO, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.GOODRA, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.SALANDIT, - Species.SALAZZLE, - Species.BEWEAR, - Species.TYPE_NULL, - Species.SILVALLY, - Species.TURTONATOR, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.GUZZLORD, - Species.NAGANADEL, - Species.DRACOZOLT, - Species.DURALUDON, - Species.DRAGAPULT, - Species.REGIDRAGO, - Species.CERULEDGE, - Species.CYCLIZAR, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.ROARING_MOON, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.ARCHALUDON, - Species.GOUGING_FIRE, - Species.HISUI_GOODRA, + [MoveId.DRAGON_CLAW]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.AERODACTYL, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.TYRANITAR, + SpeciesId.SCEPTILE, + SpeciesId.AGGRON, + SpeciesId.FLYGON, + SpeciesId.ALTARIA, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.DRUDDIGON, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.CHESNAUGHT, + SpeciesId.PANGORO, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.GOODRA, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.BEWEAR, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.GUZZLORD, + SpeciesId.NAGANADEL, + SpeciesId.DRACOZOLT, + SpeciesId.DURALUDON, + SpeciesId.DRAGAPULT, + SpeciesId.REGIDRAGO, + SpeciesId.CERULEDGE, + SpeciesId.CYCLIZAR, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.ARCHALUDON, + SpeciesId.GOUGING_FIRE, + SpeciesId.HISUI_GOODRA, ], - [Moves.FRENZY_PLANT]: [ - Species.VENUSAUR, - Species.MEW, - Species.MEGANIUM, - Species.SCEPTILE, - Species.TORTERRA, - Species.SERPERIOR, - Species.CHESNAUGHT, - Species.DECIDUEYE, - Species.RILLABOOM, - Species.MEOWSCARADA, - Species.HISUI_DECIDUEYE, + [MoveId.FRENZY_PLANT]: [ + SpeciesId.VENUSAUR, + SpeciesId.MEW, + SpeciesId.MEGANIUM, + SpeciesId.SCEPTILE, + SpeciesId.TORTERRA, + SpeciesId.SERPERIOR, + SpeciesId.CHESNAUGHT, + SpeciesId.DECIDUEYE, + SpeciesId.RILLABOOM, + SpeciesId.MEOWSCARADA, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.BULK_UP]: [ - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.ELECTABUZZ, - Species.PINSIR, - Species.MEWTWO, - Species.MEW, - Species.SNUBBULL, - Species.GRANBULL, - Species.HERACROSS, - Species.TEDDIURSA, - Species.URSARING, - Species.TYROGUE, - Species.HITMONTOP, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.SWAMPERT, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.GROUDON, - Species.RAYQUAZA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.BUIZEL, - Species.FLOATZEL, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.ELECTIVIRE, - Species.GALLADE, - Species.DIALGA, - Species.PALKIA, - Species.ARCEUS, - Species.PIGNITE, - Species.EMBOAR, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.KROOKODILE, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.EELEKTROSS, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.RUFFLET, - Species.BRAVIARY, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.TALONFLAME, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.BARBARACLE, - Species.HAWLUCHA, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.LYCANROC, - Species.STUFFUL, - Species.BEWEAR, - Species.PASSIMIAN, - Species.GOLISOPOD, - Species.KOMALA, - Species.TURTONATOR, - Species.MIMIKYU, - Species.BRUXISH, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_BULU, - Species.BUZZWOLE, - Species.MARSHADOW, - Species.ZERAORA, - Species.RILLABOOM, - Species.RABOOT, - Species.CINDERACE, - Species.CORVIKNIGHT, - Species.BOLTUND, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.FALINKS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.URSALUNA, - Species.SNEASLER, - Species.QUAQUAVAL, - Species.PAWMOT, - Species.CERULEDGE, - Species.PALAFIN, - Species.FLAMIGO, - Species.ANNIHILAPE, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.SLITHER_WING, - Species.KORAIDON, - Species.OKIDOGI, - Species.ALOLA_RATICATE, - Species.GALAR_ZAPDOS, - Species.GALAR_DARMANITAN, - Species.HISUI_SNEASEL, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, + [MoveId.BULK_UP]: [ + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.ELECTABUZZ, + SpeciesId.PINSIR, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.HERACROSS, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.SWAMPERT, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.ELECTIVIRE, + SpeciesId.GALLADE, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.ARCEUS, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.KROOKODILE, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.EELEKTROSS, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.TALONFLAME, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.BARBARACLE, + SpeciesId.HAWLUCHA, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.LYCANROC, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.PASSIMIAN, + SpeciesId.GOLISOPOD, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_BULU, + SpeciesId.BUZZWOLE, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.RILLABOOM, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.CORVIKNIGHT, + SpeciesId.BOLTUND, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.FALINKS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.QUAQUAVAL, + SpeciesId.PAWMOT, + SpeciesId.CERULEDGE, + SpeciesId.PALAFIN, + SpeciesId.FLAMIGO, + SpeciesId.ANNIHILAPE, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.SLITHER_WING, + SpeciesId.KORAIDON, + SpeciesId.OKIDOGI, + SpeciesId.ALOLA_RATICATE, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, ], - [Moves.BOUNCE]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PONYTA, - Species.RAPIDASH, - Species.HITMONLEE, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.MAGIKARP, - Species.GYARADOS, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.CHINCHOU, - Species.LANTURN, - Species.IGGLYBUFF, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.QWILFISH, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.KINGDRA, - Species.DONPHAN, - Species.STANTLER, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.SHIFTRY, - Species.AZURILL, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.SPOINK, - Species.GRUMPIG, - Species.BARBOACH, - Species.WHISCASH, - Species.ABSOL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.CROAGUNK, - Species.TOXICROAK, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.PHIONE, - Species.MANAPHY, - Species.VICTINI, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.BASCULIN, - Species.MARACTUS, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.DEERLING, - Species.SAWSBUCK, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.COBALION, - Species.VIRIZION, - Species.KELDEO, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.PYROAR, - Species.GOGOAT, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HAWLUCHA, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.TOGEDEMARU, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.MARSHADOW, - Species.ZERAORA, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.DUBWOOL, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.REGIELEKI, - Species.LOKIX, - Species.FINIZEN, - Species.CETODDLE, - Species.CETITAN, - Species.CHI_YU, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_ZAPDOS, - Species.GALAR_STUNFISK, + [MoveId.BOUNCE]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.HITMONLEE, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.MAGIKARP, + SpeciesId.GYARADOS, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.IGGLYBUFF, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.QWILFISH, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.DONPHAN, + SpeciesId.STANTLER, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.SHIFTRY, + SpeciesId.AZURILL, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.ABSOL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.VICTINI, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.BASCULIN, + SpeciesId.MARACTUS, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.COBALION, + SpeciesId.VIRIZION, + SpeciesId.KELDEO, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.PYROAR, + SpeciesId.GOGOAT, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HAWLUCHA, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.TOGEDEMARU, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.DUBWOOL, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.REGIELEKI, + SpeciesId.LOKIX, + SpeciesId.FINIZEN, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.CHI_YU, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_STUNFISK, ], - [Moves.MUD_SHOT]: [ - Species.EKANS, - Species.ARBOK, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.DIGLETT, - Species.DUGTRIO, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.KRABBY, - Species.KINGLER, - Species.RHYHORN, - Species.RHYDON, - Species.GOLDEEN, - Species.SEAKING, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.MEW, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.DUNSPARCE, - Species.GLIGAR, - Species.QWILFISH, - Species.SHUCKLE, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.REMORAID, - Species.OCTILLERY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PHANPY, - Species.DONPHAN, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOMBRE, - Species.LUDICOLO, - Species.SURSKIT, - Species.MASQUERAIN, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.SABLEYE, - Species.GULPIN, - Species.SWALOT, - Species.NUMEL, - Species.CAMERUPT, - Species.GRUMPIG, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.RELICANTH, - Species.GROUDON, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.PACHIRISU, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.BONSLY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.CROAGUNK, - Species.TOXICROAK, - Species.RHYPERIOR, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.DRILBUR, - Species.EXCADRILL, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.CUBCHOO, - Species.BEARTIC, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.BOUFFALANT, - Species.LANDORUS, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.SKIDDO, - Species.GOGOAT, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.AMAURA, - Species.AURORUS, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.VOLCANION, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDSDALE, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.NICKIT, - Species.THIEVUL, - Species.CHEWTLE, - Species.DREDNAW, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.OBSTAGOON, - Species.CUFANT, - Species.COPPERAJAH, - Species.ZARUDE, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.BASCULEGION, - Species.OVERQWIL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.TADBULB, - Species.BELLIBOLT, - Species.SHROODLE, - Species.GRAFAIAI, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.RELLOR, - Species.RABSCA, - Species.WIGLETT, - Species.WUGTRIO, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.WO_CHIEN, - Species.TING_LU, - Species.KORAIDON, - Species.WALKING_WAKE, - Species.PIKACHU, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_STUNFISK, - Species.HISUI_QWILFISH, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.MUD_SHOT]: [ + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.MEW, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.QWILFISH, + SpeciesId.SHUCKLE, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.SABLEYE, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.GRUMPIG, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.RELICANTH, + SpeciesId.GROUDON, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.PACHIRISU, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.BONSLY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.RHYPERIOR, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.BOUFFALANT, + SpeciesId.LANDORUS, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.VOLCANION, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDSDALE, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.OBSTAGOON, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.ZARUDE, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.WO_CHIEN, + SpeciesId.TING_LU, + SpeciesId.KORAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.PIKACHU, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.POISON_TAIL]: [ - Species.EKANS, - Species.ARBOK, - Species.NIDORAN_F, - Species.NIDORAN_M, - Species.MEW, - Species.DUNSPARCE, - Species.GLIGAR, - Species.QWILFISH, - Species.SEVIPER, - Species.STUNKY, - Species.SKUNTANK, - Species.SKORUPI, - Species.GLISCOR, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.DRUDDIGON, - Species.SKRELP, - Species.DRAGALGE, - Species.GOOMY, - Species.GOODRA, - Species.SALANDIT, - Species.SALAZZLE, - Species.SILICOBRA, - Species.SANDACONDA, - Species.TOXTRICITY, - Species.ETERNATUS, - Species.SNEASLER, - Species.OVERQWIL, - Species.GRAFAIAI, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.OKIDOGI, - Species.FEZANDIPITI, - Species.PIKACHU, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.PALDEA_WOOPER, + [MoveId.POISON_TAIL]: [ + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORAN_M, + SpeciesId.MEW, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.QWILFISH, + SpeciesId.SEVIPER, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.SKORUPI, + SpeciesId.GLISCOR, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.DRUDDIGON, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.GOOMY, + SpeciesId.GOODRA, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.TOXTRICITY, + SpeciesId.ETERNATUS, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.GRAFAIAI, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.OKIDOGI, + SpeciesId.FEZANDIPITI, + SpeciesId.PIKACHU, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.PALDEA_WOOPER, ], - [Moves.COVET]: [ - Species.RATTATA, - Species.RATICATE, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.FARFETCHD, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.SNORLAX, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.SENTRET, - Species.FURRET, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.AIPOM, - Species.ESPEON, - Species.UMBREON, - Species.SNUBBULL, - Species.GRANBULL, - Species.SHUCKLE, - Species.TEDDIURSA, - Species.URSARING, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.BLISSEY, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.AZURILL, - Species.SKITTY, - Species.DELCATTY, - Species.PLUSLE, - Species.MINUN, - Species.ILLUMISE, - Species.ROSELIA, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.LATIAS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIDOOF, - Species.BIBAREL, - Species.BUDEW, - Species.ROSERADE, - Species.PACHIRISU, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.GLAMEOW, - Species.PURUGLY, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.MUNCHLAX, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.LICKILICKY, - Species.TOGEKISS, - Species.LEAFEON, - Species.GLACEON, - Species.PHIONE, - Species.MANAPHY, - Species.SHAYMIN, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANPOUR, - Species.SIMIPOUR, - Species.PANSEAR, - Species.SIMISEAR, - Species.AUDINO, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.EMOLGA, - Species.CUBCHOO, - Species.BEARTIC, - Species.KELDEO, - Species.MELOETTA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.PANCHAM, - Species.PANGORO, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.SYLVEON, - Species.DEDENNE, - Species.CARBINK, - Species.KLEFKI, - Species.DIANCIE, - Species.HOOPA, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.SALANDIT, - Species.SALAZZLE, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.POIPOLE, - Species.GREEDENT, - Species.PERRSERKER, - Species.SIRFETCHD, - Species.MR_RIME, - Species.URSALUNA, - Species.LECHONK, - Species.OINKOLOGNE, - Species.FIDOUGH, - Species.DACHSBUN, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.ANNIHILAPE, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.GALAR_MEOWTH, - Species.GALAR_FARFETCHD, - Species.GALAR_MR_MIME, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, - Species.ETERNAL_FLOETTE, + [MoveId.COVET]: [ + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.FARFETCHD, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.AIPOM, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SHUCKLE, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.BLISSEY, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.AZURILL, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.LATIAS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.PACHIRISU, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.MUNCHLAX, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.LICKILICKY, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.SHAYMIN, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.AUDINO, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.EMOLGA, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.SYLVEON, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.KLEFKI, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.POIPOLE, + SpeciesId.GREEDENT, + SpeciesId.PERRSERKER, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.URSALUNA, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.ANNIHILAPE, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_MR_MIME, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.ETERNAL_FLOETTE, ], - [Moves.MAGICAL_LEAF]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.EXEGGUTOR, - Species.MR_MIME, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CLEFFA, - Species.TOGETIC, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.SUNKERN, - Species.SUNFLORA, - Species.ESPEON, - Species.MISDREAVUS, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SHROOMISH, - Species.BRELOOM, - Species.ROSELIA, - Species.CACNEA, - Species.CACTURNE, - Species.TROPIUS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.ROSERADE, - Species.CHERUBI, - Species.CHERRIM, - Species.MISMAGIUS, - Species.CARNIVINE, - Species.SNOVER, - Species.ABOMASNOW, - Species.TOGEKISS, - Species.LEAFEON, - Species.GALLADE, - Species.SHAYMIN, - Species.ARCEUS, - Species.SNIVY, - Species.PANSAGE, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.PETILIL, - Species.LILLIGANT, - Species.DEERLING, - Species.SAWSBUCK, - Species.FOONGUS, - Species.AMOONGUSS, - Species.VIRIZION, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.SYLVEON, - Species.PHANTUMP, - Species.TREVENANT, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.FOMANTIS, - Species.LURANTIS, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.FLAPPLE, - Species.APPLETUN, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.ALCREMIE, - Species.INDEEDEE, - Species.ZARUDE, - Species.CALYREX, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.WO_CHIEN, - Species.IRON_VALIANT, - Species.IRON_LEAVES, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OGERPON, - Species.HYDRAPPLE, + [MoveId.MAGICAL_LEAF]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.EXEGGUTOR, + SpeciesId.MR_MIME, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CLEFFA, + SpeciesId.TOGETIC, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.ESPEON, + SpeciesId.MISDREAVUS, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.ROSELIA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.TROPIUS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.ROSERADE, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.MISMAGIUS, + SpeciesId.CARNIVINE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GALLADE, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.SNIVY, + SpeciesId.PANSAGE, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.VIRIZION, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.SYLVEON, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.ALCREMIE, + SpeciesId.INDEEDEE, + SpeciesId.ZARUDE, + SpeciesId.CALYREX, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.WO_CHIEN, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_LEAVES, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OGERPON, + SpeciesId.HYDRAPPLE, [ - Species.MEOWSTIC, + SpeciesId.MEOWSTIC, "female", ], - Species.ALOLA_EXEGGUTOR, - Species.ETERNAL_FLOETTE, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.CALM_MIND]: [ - Species.PIKACHU, - Species.RAICHU, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PSYDUCK, - Species.GOLDUCK, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGUTOR, - Species.CHANSEY, - Species.MR_MIME, - Species.JYNX, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.MEWTWO, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CLEFFA, - Species.NATU, - Species.XATU, - Species.SUDOWOODO, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.SNEASEL, - Species.CORSOLA, - Species.STANTLER, - Species.SMOOCHUM, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.ABSOL, - Species.RELICANTH, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.JIRACHI, - Species.DEOXYS, - Species.INFERNAPE, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.SPIRITOMB, - Species.LUCARIO, - Species.WEAVILE, - Species.LEAFEON, - Species.GLACEON, - Species.GALLADE, - Species.DUSKNOIR, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.GIRATINA, - Species.CRESSELIA, - Species.MANAPHY, - Species.DARKRAI, - Species.ARCEUS, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.ALOMOMOLA, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.MIENFOO, - Species.MIENSHAO, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.LANDORUS, - Species.KELDEO, - Species.MELOETTA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.VIVILLON, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.CARBINK, - Species.KLEFKI, - Species.TREVENANT, - Species.XERNEAS, - Species.DIANCIE, - Species.HOOPA, - Species.PRIMARINA, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.COMFEY, - Species.ORANGURU, - Species.MINIOR, - Species.KOMALA, - Species.BRUXISH, - Species.DRAMPA, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.XURKITREE, - Species.KARTANA, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.BLACEPHALON, - Species.ZERAORA, - Species.DOTTLER, - Species.ORBEETLE, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.CURSOLA, - Species.MR_RIME, - Species.RUNERIGUS, - Species.ALCREMIE, - Species.FROSMOTH, - Species.INDEEDEE, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.SNEASLER, - Species.ENAMORUS, - Species.ARMAROUGE, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.SCREAM_TAIL, - Species.FLUTTER_MANE, - Species.IRON_VALIANT, - Species.MIRAIDON, - Species.IRON_LEAVES, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.RAGING_BOLT, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.ALOLA_RAICHU, - Species.ALOLA_NINETALES, - Species.ETERNAL_FLOETTE, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_YAMASK, - Species.HISUI_TYPHLOSION, - Species.HISUI_SNEASEL, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.BLOODMOON_URSALUNA, + [MoveId.CALM_MIND]: [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGUTOR, + SpeciesId.CHANSEY, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CLEFFA, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.SUDOWOODO, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.SNEASEL, + SpeciesId.CORSOLA, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.RELICANTH, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.INFERNAPE, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.SPIRITOMB, + SpeciesId.LUCARIO, + SpeciesId.WEAVILE, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.ALOMOMOLA, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.LANDORUS, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.VIVILLON, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.CARBINK, + SpeciesId.KLEFKI, + SpeciesId.TREVENANT, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.PRIMARINA, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.XURKITREE, + SpeciesId.KARTANA, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.ALCREMIE, + SpeciesId.FROSMOTH, + SpeciesId.INDEEDEE, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.SNEASLER, + SpeciesId.ENAMORUS, + SpeciesId.ARMAROUGE, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.SCREAM_TAIL, + SpeciesId.FLUTTER_MANE, + SpeciesId.IRON_VALIANT, + SpeciesId.MIRAIDON, + SpeciesId.IRON_LEAVES, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_YAMASK, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.LEAF_BLADE]: [ - Species.VICTREEBEL, - Species.FARFETCHD, - Species.MEW, - Species.BELLOSSOM, - Species.CELEBI, - Species.GROVYLE, - Species.SCEPTILE, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TROPIUS, - Species.LEAFEON, - Species.GALLADE, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.LEAVANNY, - Species.LILLIGANT, - Species.VIRIZION, - Species.SKIDDO, - Species.GOGOAT, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.FOMANTIS, - Species.LURANTIS, - Species.KARTANA, - Species.SIRFETCHD, - Species.IRON_VALIANT, - Species.IRON_LEAVES, - Species.GALAR_FARFETCHD, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, + [MoveId.LEAF_BLADE]: [ + SpeciesId.VICTREEBEL, + SpeciesId.FARFETCHD, + SpeciesId.MEW, + SpeciesId.BELLOSSOM, + SpeciesId.CELEBI, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TROPIUS, + SpeciesId.LEAFEON, + SpeciesId.GALLADE, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.LEAVANNY, + SpeciesId.LILLIGANT, + SpeciesId.VIRIZION, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.KARTANA, + SpeciesId.SIRFETCHD, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_LEAVES, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.DRAGON_DANCE]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.ONIX, - Species.HORSEA, - Species.SEADRA, - Species.GYARADOS, - Species.LAPRAS, - Species.AERODACTYL, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.STEELIX, - Species.KINGDRA, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.SCEPTILE, - Species.FLYGON, - Species.ALTARIA, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.MILOTIC, - Species.TROPIUS, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.RAYQUAZA, - Species.ARCEUS, - Species.SCRAGGY, - Species.SCRAFTY, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.HYDREIGON, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.TYRUNT, - Species.TYRANTRUM, - Species.NOIVERN, - Species.ZYGARDE, - Species.SALAZZLE, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.NECROZMA, - Species.NAGANADEL, - Species.FLAPPLE, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ETERNATUS, - Species.REGIDRAGO, - Species.TATSUGIRI, - Species.IRON_THORNS, - Species.BAXCALIBUR, - Species.ROARING_MOON, - Species.WALKING_WAKE, - Species.GOUGING_FIRE, + [MoveId.DRAGON_DANCE]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.ONIX, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.AERODACTYL, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.STEELIX, + SpeciesId.KINGDRA, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.SCEPTILE, + SpeciesId.FLYGON, + SpeciesId.ALTARIA, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.MILOTIC, + SpeciesId.TROPIUS, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.RAYQUAZA, + SpeciesId.ARCEUS, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.HYDREIGON, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.NOIVERN, + SpeciesId.ZYGARDE, + SpeciesId.SALAZZLE, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.NECROZMA, + SpeciesId.NAGANADEL, + SpeciesId.FLAPPLE, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ETERNATUS, + SpeciesId.REGIDRAGO, + SpeciesId.TATSUGIRI, + SpeciesId.IRON_THORNS, + SpeciesId.BAXCALIBUR, + SpeciesId.ROARING_MOON, + SpeciesId.WALKING_WAKE, + SpeciesId.GOUGING_FIRE, ], - [Moves.ROCK_BLAST]: [ - Species.NIDOQUEEN, - Species.NIDOKING, - Species.DIGLETT, - Species.DUGTRIO, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.SHELLDER, - Species.CLOYSTER, - Species.ONIX, - Species.RHYHORN, - Species.RHYDON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.MEW, - Species.SUDOWOODO, - Species.PINECO, - Species.FORRETRESS, - Species.STEELIX, - Species.SHUCKLE, - Species.HERACROSS, - Species.SLUGMA, - Species.MAGCARGO, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.MANTINE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.NOSEPASS, - Species.LAIRON, - Species.AGGRON, - Species.LUNATONE, - Species.SOLROCK, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.RELICANTH, - Species.REGIROCK, - Species.GROUDON, - Species.TORTERRA, - Species.SHIELDON, - Species.BASTIODON, - Species.GASTRODON, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.RHYPERIOR, - Species.MAMOSWINE, - Species.PROBOPASS, - Species.HEATRAN, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.EXCADRILL, - Species.CONKELDURR, - Species.DWEBBLE, - Species.CRUSTLE, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.CINCCINO, - Species.TERRAKION, - Species.BINACLE, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.CARBINK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.LYCANROC, - Species.MINIOR, - Species.NECROZMA, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.DREDNAW, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CURSOLA, - Species.RUNERIGUS, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.KLEAVOR, - Species.GARGANACL, - Species.KLAWF, - Species.BOMBIRDIER, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.IRON_THORNS, - Species.IRON_BOULDER, + [MoveId.ROCK_BLAST]: [ + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.ONIX, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.MEW, + SpeciesId.SUDOWOODO, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.STEELIX, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.MANTINE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.NOSEPASS, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.RELICANTH, + SpeciesId.REGIROCK, + SpeciesId.GROUDON, + SpeciesId.TORTERRA, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.GASTRODON, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.RHYPERIOR, + SpeciesId.MAMOSWINE, + SpeciesId.PROBOPASS, + SpeciesId.HEATRAN, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.EXCADRILL, + SpeciesId.CONKELDURR, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.CINCCINO, + SpeciesId.TERRAKION, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.CARBINK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.LYCANROC, + SpeciesId.MINIOR, + SpeciesId.NECROZMA, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.DREDNAW, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.KLEAVOR, + SpeciesId.GARGANACL, + SpeciesId.KLAWF, + SpeciesId.BOMBIRDIER, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.IRON_THORNS, + SpeciesId.IRON_BOULDER, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "sandy", ], - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.GALAR_SLOWBRO, - Species.GALAR_CORSOLA, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_AVALUGG, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_CORSOLA, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_AVALUGG, ], - [Moves.WATER_PULSE]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.KRABBY, - Species.KINGLER, - Species.LICKITUNG, - Species.CHANSEY, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.JYNX, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.SNORLAX, - Species.ARTICUNO, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.CHINCHOU, - Species.LANTURN, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.AIPOM, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.DUNSPARCE, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SNEASEL, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.KINGDRA, - Species.SMOOCHUM, - Species.MILTANK, - Species.BLISSEY, - Species.SUICUNE, - Species.TYRANITAR, - Species.LUGIA, - Species.CELEBI, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.WINGULL, - Species.PELIPPER, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.AZURILL, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.SPINDA, - Species.ZANGOOSE, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIBAREL, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.GLAMEOW, - Species.PURUGLY, - Species.HAPPINY, - Species.SPIRITOMB, - Species.MUNCHLAX, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.TOGEKISS, - Species.GLACEON, - Species.FROSLASS, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.PALKIA, - Species.PHIONE, - Species.MANAPHY, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PANPOUR, - Species.SIMIPOUR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.BASCULIN, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.STUNFISK, - Species.KELDEO, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.AMAURA, - Species.AURORUS, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.VOLCANION, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.DEWPIDER, - Species.ARAQUANID, - Species.GOLISOPOD, - Species.BRUXISH, - Species.DRAMPA, - Species.KOMMO_O, - Species.TAPU_FINI, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.CHEWTLE, - Species.DREDNAW, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.EISCUE, - Species.BASCULEGION, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.TADBULB, - Species.BELLIBOLT, - Species.WIGLETT, - Species.WUGTRIO, - Species.FINIZEN, - Species.PALAFIN, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.CLODSIRE, - Species.SCREAM_TAIL, - Species.IRON_BUNDLE, - Species.WALKING_WAKE, - Species.TERAPAGOS, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.HISUI_QWILFISH, - Species.HISUI_SAMUROTT, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, + [MoveId.WATER_PULSE]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.LICKITUNG, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.JYNX, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.DUNSPARCE, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SNEASEL, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.SMOOCHUM, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.SUICUNE, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.CELEBI, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.AZURILL, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.SPINDA, + SpeciesId.ZANGOOSE, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIBAREL, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.HAPPINY, + SpeciesId.SPIRITOMB, + SpeciesId.MUNCHLAX, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.TOGEKISS, + SpeciesId.GLACEON, + SpeciesId.FROSLASS, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.PALKIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.BASCULIN, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.STUNFISK, + SpeciesId.KELDEO, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.VOLCANION, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.GOLISOPOD, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_FINI, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.EISCUE, + SpeciesId.BASCULEGION, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.CLODSIRE, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_BUNDLE, + SpeciesId.WALKING_WAKE, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "aqua", ], - Species.PALDEA_WOOPER, + SpeciesId.PALDEA_WOOPER, ], - [Moves.ROOST]: [ - Species.CHARIZARD, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.SPEAROW, - Species.FEAROW, - Species.ZUBAT, - Species.GOLBAT, - Species.VENOMOTH, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SCYTHER, - Species.AERODACTYL, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.CROBAT, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.YANMA, - Species.MURKROW, - Species.DUNSPARCE, - Species.GLIGAR, - Species.SCIZOR, - Species.MANTINE, - Species.SKARMORY, - Species.LUGIA, - Species.HO_OH, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.MASQUERAIN, - Species.NINJASK, - Species.VOLBEAT, - Species.ILLUMISE, - Species.VIBRAVA, - Species.FLYGON, - Species.SWABLU, - Species.ALTARIA, - Species.TROPIUS, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.MOTHIM, - Species.VESPIQUEN, - Species.HONCHKROW, - Species.CHATOT, - Species.TOGEKISS, - Species.YANMEGA, - Species.GLISCOR, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.SIGILYPH, - Species.ARCHEN, - Species.ARCHEOPS, - Species.DUCKLETT, - Species.SWANNA, - Species.EMOLGA, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HYDREIGON, - Species.VOLCARONA, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.HAWLUCHA, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.VIKAVOLT, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.DRAMPA, - Species.TAPU_KOKO, - Species.LUNALA, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.CRAMORANT, - Species.KLEAVOR, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.SQUAWKABILLY, - Species.WATTREL, - Species.KILOWATTREL, - Species.FLITTLE, - Species.ESPATHRA, - Species.BOMBIRDIER, - Species.FLAMIGO, - Species.DUDUNSPARCE, - Species.ROARING_MOON, - Species.FEZANDIPITI, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, + [MoveId.ROOST]: [ + SpeciesId.CHARIZARD, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.VENOMOTH, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SCYTHER, + SpeciesId.AERODACTYL, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.CROBAT, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.YANMA, + SpeciesId.MURKROW, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.MASQUERAIN, + SpeciesId.NINJASK, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.TROPIUS, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.HONCHKROW, + SpeciesId.CHATOT, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.GLISCOR, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SIGILYPH, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.EMOLGA, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HYDREIGON, + SpeciesId.VOLCARONA, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.HAWLUCHA, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.VIKAVOLT, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.DRAMPA, + SpeciesId.TAPU_KOKO, + SpeciesId.LUNALA, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.CRAMORANT, + SpeciesId.KLEAVOR, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.SQUAWKABILLY, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.BOMBIRDIER, + SpeciesId.FLAMIGO, + SpeciesId.DUDUNSPARCE, + SpeciesId.ROARING_MOON, + SpeciesId.FEZANDIPITI, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.GRAVITY]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MAGNEMITE, - Species.MAGNETON, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CHANSEY, - Species.STARYU, - Species.STARMIE, - Species.PORYGON, - Species.MEWTWO, - Species.MEW, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.ESPEON, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.PORYGON2, - Species.STANTLER, - Species.BLISSEY, - Species.GARDEVOIR, - Species.NOSEPASS, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.JIRACHI, - Species.DEOXYS, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.HAPPINY, - Species.MAGNEZONE, - Species.GLACEON, - Species.PORYGON_Z, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.DIALGA, - Species.PALKIA, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.ARCEUS, - Species.MUNNA, - Species.MUSHARNA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.AUDINO, - Species.SIGILYPH, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.ELGYEM, - Species.BEHEEYEM, - Species.GOLETT, - Species.GOLURK, - Species.LANDORUS, - Species.MELOETTA, - Species.GENESECT, - Species.ESPURR, - Species.MEOWSTIC, - Species.CARBINK, - Species.XERNEAS, - Species.DIANCIE, - Species.HOOPA, - Species.ORANGURU, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MINIOR, - Species.TOGEDEMARU, - Species.TAPU_LELE, - Species.TAPU_FINI, - Species.XURKITREE, - Species.CELESTEELA, - Species.NECROZMA, - Species.MAGEARNA, - Species.STAKATAKA, - Species.HATTERENE, - Species.STONJOURNER, - Species.INDEEDEE, - Species.ETERNATUS, - Species.CALYREX, - Species.WYRDEER, - Species.GARGANACL, - Species.RABSCA, - Species.FARIGIRAF, - Species.SANDY_SHOCKS, - Species.IRON_LEAVES, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.ALOLA_EXEGGUTOR, + [MoveId.GRAVITY]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CHANSEY, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.PORYGON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.ESPEON, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.BLISSEY, + SpeciesId.GARDEVOIR, + SpeciesId.NOSEPASS, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.HAPPINY, + SpeciesId.MAGNEZONE, + SpeciesId.GLACEON, + SpeciesId.PORYGON_Z, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.ARCEUS, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.AUDINO, + SpeciesId.SIGILYPH, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.LANDORUS, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.CARBINK, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.ORANGURU, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MINIOR, + SpeciesId.TOGEDEMARU, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_FINI, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.STAKATAKA, + SpeciesId.HATTERENE, + SpeciesId.STONJOURNER, + SpeciesId.INDEEDEE, + SpeciesId.ETERNATUS, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.GARGANACL, + SpeciesId.RABSCA, + SpeciesId.FARIGIRAF, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_LEAVES, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_EXEGGUTOR, [ - Species.INDEEDEE, + SpeciesId.INDEEDEE, "male", ], ], - [Moves.GYRO_BALL]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.SANDSHREW, - Species.SANDSLASH, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.MAGNEMITE, - Species.MAGNETON, - Species.ONIX, - Species.VOLTORB, - Species.ELECTRODE, - Species.KOFFING, - Species.WEEZING, - Species.STARYU, - Species.STARMIE, - Species.OMANYTE, - Species.OMASTAR, - Species.MEW, - Species.TYPHLOSION, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.STEELIX, - Species.QWILFISH, - Species.SHUCKLE, - Species.MAGCARGO, - Species.DONPHAN, - Species.HITMONTOP, - Species.MILTANK, - Species.SABLEYE, - Species.TORKOAL, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.GLALIE, - Species.METANG, - Species.METAGROSS, - Species.RAYQUAZA, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BRONZOR, - Species.BRONZONG, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.FERROSEED, - Species.FERROTHORN, - Species.GOLETT, - Species.GOLURK, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.CARBINK, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.DIANCIE, - Species.VOLCANION, - Species.PASSIMIAN, - Species.MINIOR, - Species.TOGEDEMARU, - Species.DHELMISE, - Species.SOLGALEO, - Species.BUZZWOLE, - Species.CELESTEELA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.STAKATAKA, - Species.MELTAN, - Species.MELMETAL, - Species.SKWOVET, - Species.GREEDENT, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.APPLETUN, - Species.PERRSERKER, - Species.DURALUDON, - Species.OVERQWIL, - Species.VAROOM, - Species.REVAVROOM, - Species.DUDUNSPARCE, - Species.SCREAM_TAIL, - Species.IRON_TREADS, - Species.DIPPLIN, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.TERAPAGOS, + [MoveId.GYRO_BALL]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.ONIX, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.STEELIX, + SpeciesId.QWILFISH, + SpeciesId.SHUCKLE, + SpeciesId.MAGCARGO, + SpeciesId.DONPHAN, + SpeciesId.HITMONTOP, + SpeciesId.MILTANK, + SpeciesId.SABLEYE, + SpeciesId.TORKOAL, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.GLALIE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.RAYQUAZA, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.CARBINK, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.DIANCIE, + SpeciesId.VOLCANION, + SpeciesId.PASSIMIAN, + SpeciesId.MINIOR, + SpeciesId.TOGEDEMARU, + SpeciesId.DHELMISE, + SpeciesId.SOLGALEO, + SpeciesId.BUZZWOLE, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.STAKATAKA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.APPLETUN, + SpeciesId.PERRSERKER, + SpeciesId.DURALUDON, + SpeciesId.OVERQWIL, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.DUDUNSPARCE, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_TREADS, + SpeciesId.DIPPLIN, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.TERAPAGOS, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "trash", ], - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.GALAR_MEOWTH, - Species.GALAR_WEEZING, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, ], - [Moves.BRINE]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PSYDUCK, - Species.GOLDUCK, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.KRABBY, - Species.KINGLER, - Species.HORSEA, - Species.SEADRA, - Species.STARYU, - Species.STARMIE, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.MEW, - Species.CHINCHOU, - Species.LANTURN, - Species.SLOWKING, - Species.QWILFISH, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.MANTINE, - Species.KINGDRA, - Species.SUICUNE, - Species.LUGIA, - Species.WINGULL, - Species.PELIPPER, - Species.HARIYAMA, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.KYOGRE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.FINNEON, - Species.LUMINEON, - Species.PALKIA, - Species.PHIONE, - Species.MANAPHY, - Species.ARCEUS, - Species.OSHAWOTT, - Species.PANPOUR, - Species.BASCULIN, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.DUCKLETT, - Species.SWANNA, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.CUBCHOO, - Species.BEARTIC, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.SANDYGAST, - Species.PALOSSAND, - Species.DHELMISE, - Species.TAPU_FINI, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.CURSOLA, - Species.PINCURCHIN, - Species.EISCUE, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.OVERQWIL, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, + [MoveId.BRINE]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.MEW, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.SLOWKING, + SpeciesId.QWILFISH, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.HARIYAMA, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.KYOGRE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.PALKIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.PANPOUR, + SpeciesId.BASCULIN, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.DHELMISE, + SpeciesId.TAPU_FINI, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.CURSOLA, + SpeciesId.PINCURCHIN, + SpeciesId.EISCUE, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.OVERQWIL, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "rapid-strike", ], - Species.HISUI_QWILFISH, + SpeciesId.HISUI_QWILFISH, ], - [Moves.PLUCK]: [ - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.ZUBAT, - Species.GOLBAT, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CROBAT, - Species.NATU, - Species.XATU, - Species.MURKROW, - Species.DELIBIRD, - Species.SKARMORY, - Species.HO_OH, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.SWABLU, - Species.ALTARIA, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.HONCHKROW, - Species.CHATOT, - Species.TOGEKISS, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.SIGILYPH, - Species.ARCHEN, - Species.ARCHEOPS, - Species.DUCKLETT, - Species.SWANNA, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.INKAY, - Species.MALAMAR, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.ORICORIO, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.CRAMORANT, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.FLITTLE, - Species.ESPATHRA, - Species.BOMBIRDIER, - Species.VELUZA, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.GALAR_ZAPDOS, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, + [MoveId.PLUCK]: [ + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CROBAT, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MURKROW, + SpeciesId.DELIBIRD, + SpeciesId.SKARMORY, + SpeciesId.HO_OH, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.HONCHKROW, + SpeciesId.CHATOT, + SpeciesId.TOGEKISS, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SIGILYPH, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.ORICORIO, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.CRAMORANT, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.BOMBIRDIER, + SpeciesId.VELUZA, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.TAILWIND]: [ - Species.CHARIZARD, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.SPEAROW, - Species.FEAROW, - Species.ZUBAT, - Species.GOLBAT, - Species.VENOMOTH, - Species.FARFETCHD, - Species.SCYTHER, - Species.AERODACTYL, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.CROBAT, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.YANMA, - Species.MURKROW, - Species.GLIGAR, - Species.SCIZOR, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.SUICUNE, - Species.LUGIA, - Species.HO_OH, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.MASQUERAIN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.VIBRAVA, - Species.FLYGON, - Species.SWABLU, - Species.ALTARIA, - Species.CASTFORM, - Species.TROPIUS, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.RAYQUAZA, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.MOTHIM, - Species.COMBEE, - Species.VESPIQUEN, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.HONCHKROW, - Species.CHATOT, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.TOGEKISS, - Species.YANMEGA, - Species.GLISCOR, - Species.ARCEUS, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.SIGILYPH, - Species.ARCHEN, - Species.ARCHEOPS, - Species.DUCKLETT, - Species.SWANNA, - Species.EMOLGA, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HYDREIGON, - Species.VOLCARONA, - Species.TORNADUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.HAWLUCHA, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.COMFEY, - Species.SILVALLY, - Species.DRAMPA, - Species.LUNALA, - Species.KARTANA, - Species.NAGANADEL, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.CRAMORANT, - Species.FROSMOTH, - Species.KLEAVOR, - Species.ENAMORUS, - Species.SQUAWKABILLY, - Species.WATTREL, - Species.KILOWATTREL, - Species.BOMBIRDIER, - Species.FLAMIGO, - Species.DUDUNSPARCE, - Species.IRON_JUGULIS, - Species.ROARING_MOON, - Species.FEZANDIPITI, - Species.SHAYMIN, - Species.GIRATINA, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, + [MoveId.TAILWIND]: [ + SpeciesId.CHARIZARD, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.VENOMOTH, + SpeciesId.FARFETCHD, + SpeciesId.SCYTHER, + SpeciesId.AERODACTYL, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.CROBAT, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.YANMA, + SpeciesId.MURKROW, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.MASQUERAIN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.CASTFORM, + SpeciesId.TROPIUS, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.RAYQUAZA, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.MOTHIM, + SpeciesId.COMBEE, + SpeciesId.VESPIQUEN, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.HONCHKROW, + SpeciesId.CHATOT, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.GLISCOR, + SpeciesId.ARCEUS, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.SIGILYPH, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.EMOLGA, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HYDREIGON, + SpeciesId.VOLCARONA, + SpeciesId.TORNADUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.HAWLUCHA, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.COMFEY, + SpeciesId.SILVALLY, + SpeciesId.DRAMPA, + SpeciesId.LUNALA, + SpeciesId.KARTANA, + SpeciesId.NAGANADEL, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.CRAMORANT, + SpeciesId.FROSMOTH, + SpeciesId.KLEAVOR, + SpeciesId.ENAMORUS, + SpeciesId.SQUAWKABILLY, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.BOMBIRDIER, + SpeciesId.FLAMIGO, + SpeciesId.DUDUNSPARCE, + SpeciesId.IRON_JUGULIS, + SpeciesId.ROARING_MOON, + SpeciesId.FEZANDIPITI, + SpeciesId.SHAYMIN, + SpeciesId.GIRATINA, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.U_TURN]: [ - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.ZUBAT, - Species.GOLBAT, - Species.VENOMOTH, - Species.MEOWTH, - Species.PERSIAN, - Species.MANKEY, - Species.PRIMEAPE, - Species.FARFETCHD, - Species.SCYTHER, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.MEW, - Species.SENTRET, - Species.FURRET, - Species.LEDYBA, - Species.LEDIAN, - Species.CROBAT, - Species.NATU, - Species.XATU, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.YANMA, - Species.MURKROW, - Species.GLIGAR, - Species.SCIZOR, - Species.CELEBI, - Species.BLAZIKEN, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.MASQUERAIN, - Species.NINJASK, - Species.VOLBEAT, - Species.ILLUMISE, - Species.VIBRAVA, - Species.FLYGON, - Species.TROPIUS, - Species.RAYQUAZA, - Species.JIRACHI, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.AMBIPOM, - Species.LOPUNNY, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHATOT, - Species.FINNEON, - Species.LUMINEON, - Species.YANMEGA, - Species.GLISCOR, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.PHIONE, - Species.MANAPHY, - Species.VICTINI, - Species.PURRLOIN, - Species.LIEPARD, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.WHIMSICOTT, - Species.DARUMAKA, - Species.DARMANITAN, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.EMOLGA, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ACCELGOR, - Species.MIENFOO, - Species.MIENSHAO, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.MELOETTA, - Species.GENESECT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.FURFROU, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.HAWLUCHA, - Species.DEDENNE, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.WISHIWASHI, - Species.TSAREENA, - Species.COMFEY, - Species.PASSIMIAN, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TOGEDEMARU, - Species.TAPU_KOKO, - Species.PHEROMOSA, - Species.NAGANADEL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.ORBEETLE, - Species.THIEVUL, - Species.FLAPPLE, - Species.PERRSERKER, - Species.FROSMOTH, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.KLEAVOR, - Species.SNEASLER, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.QUAQUAVAL, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.SQUAWKABILLY, - Species.WATTREL, - Species.KILOWATTREL, - Species.SHROODLE, - Species.GRAFAIAI, - Species.FLITTLE, - Species.ESPATHRA, - Species.BOMBIRDIER, - Species.CYCLIZAR, - Species.FLAMIGO, - Species.ANNIHILAPE, - Species.SLITHER_WING, - Species.IRON_BUNDLE, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.ROARING_MOON, - Species.KORAIDON, - Species.MIRAIDON, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.GALAR_MEOWTH, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, + [MoveId.U_TURN]: [ + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.VENOMOTH, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.FARFETCHD, + SpeciesId.SCYTHER, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.MEW, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.CROBAT, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.YANMA, + SpeciesId.MURKROW, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.CELEBI, + SpeciesId.BLAZIKEN, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.MASQUERAIN, + SpeciesId.NINJASK, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.TROPIUS, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.AMBIPOM, + SpeciesId.LOPUNNY, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHATOT, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.YANMEGA, + SpeciesId.GLISCOR, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.VICTINI, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.WHIMSICOTT, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.EMOLGA, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ACCELGOR, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.FURFROU, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.WISHIWASHI, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.PASSIMIAN, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TOGEDEMARU, + SpeciesId.TAPU_KOKO, + SpeciesId.PHEROMOSA, + SpeciesId.NAGANADEL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.ORBEETLE, + SpeciesId.THIEVUL, + SpeciesId.FLAPPLE, + SpeciesId.PERRSERKER, + SpeciesId.FROSMOTH, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.KLEAVOR, + SpeciesId.SNEASLER, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.QUAQUAVAL, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.SQUAWKABILLY, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.BOMBIRDIER, + SpeciesId.CYCLIZAR, + SpeciesId.FLAMIGO, + SpeciesId.ANNIHILAPE, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.CLOSE_COMBAT]: [ - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.FARFETCHD, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.SCYTHER, - Species.PINSIR, - Species.TAUROS, - Species.MEW, - Species.SNUBBULL, - Species.GRANBULL, - Species.SCIZOR, - Species.HERACROSS, - Species.TEDDIURSA, - Species.URSARING, - Species.HITMONTOP, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.BRELOOM, - Species.MAKUHITA, - Species.HARIYAMA, - Species.MEDITITE, - Species.MEDICHAM, - Species.SHARPEDO, - Species.ZANGOOSE, - Species.CRAWDAUNT, - Species.ABSOL, - Species.MONFERNO, - Species.INFERNAPE, - Species.STARAPTOR, - Species.LOPUNNY, - Species.RIOLU, - Species.LUCARIO, - Species.TOXICROAK, - Species.GALLADE, - Species.PIGNITE, - Species.EMBOAR, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SAWK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ESCAVALIER, - Species.EELEKTROSS, - Species.HAXORUS, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.GOLURK, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.KELDEO, - Species.MELOETTA, - Species.CHESNAUGHT, - Species.PANGORO, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.TYRUNT, - Species.TYRANTRUM, - Species.HAWLUCHA, - Species.XERNEAS, - Species.INCINEROAR, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.LYCANROC, - Species.MUDBRAY, - Species.MUDSDALE, - Species.BEWEAR, - Species.PASSIMIAN, - Species.GOLISOPOD, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_BULU, - Species.SOLGALEO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.MARSHADOW, - Species.ZERAORA, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.SIRFETCHD, - Species.FALINKS, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.GLASTRIER, - Species.KLEAVOR, - Species.URSALUNA, - Species.SNEASLER, - Species.QUAQUAVAL, - Species.PAWMOT, - Species.CERULEDGE, - Species.PALAFIN, - Species.FLAMIGO, - Species.ANNIHILAPE, - Species.GREAT_TUSK, - Species.BRUTE_BONNET, - Species.SLITHER_WING, - Species.IRON_HANDS, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.IRON_LEAVES, - Species.OKIDOGI, - Species.IRON_BOULDER, - Species.GALAR_FARFETCHD, - Species.GALAR_ZAPDOS, + [MoveId.CLOSE_COMBAT]: [ + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.FARFETCHD, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.SCYTHER, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.MEW, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.HITMONTOP, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.BRELOOM, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SHARPEDO, + SpeciesId.ZANGOOSE, + SpeciesId.CRAWDAUNT, + SpeciesId.ABSOL, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.STARAPTOR, + SpeciesId.LOPUNNY, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.TOXICROAK, + SpeciesId.GALLADE, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SAWK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ESCAVALIER, + SpeciesId.EELEKTROSS, + SpeciesId.HAXORUS, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.GOLURK, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESNAUGHT, + SpeciesId.PANGORO, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.HAWLUCHA, + SpeciesId.XERNEAS, + SpeciesId.INCINEROAR, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.LYCANROC, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.BEWEAR, + SpeciesId.PASSIMIAN, + SpeciesId.GOLISOPOD, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_BULU, + SpeciesId.SOLGALEO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.SIRFETCHD, + SpeciesId.FALINKS, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.GLASTRIER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.QUAQUAVAL, + SpeciesId.PAWMOT, + SpeciesId.CERULEDGE, + SpeciesId.PALAFIN, + SpeciesId.FLAMIGO, + SpeciesId.ANNIHILAPE, + SpeciesId.GREAT_TUSK, + SpeciesId.BRUTE_BONNET, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.IRON_LEAVES, + SpeciesId.OKIDOGI, + SpeciesId.IRON_BOULDER, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_ZAPDOS, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_SNEASEL, - Species.HISUI_LILLIGANT, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, ], - [Moves.PAYBACK]: [ - Species.BEEDRILL, - Species.EKANS, - Species.ARBOK, - Species.VULPIX, - Species.NINETALES, - Species.ZUBAT, - Species.GOLBAT, - Species.MEOWTH, - Species.PERSIAN, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.DODRIO, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.MR_MIME, - Species.JYNX, - Species.TAUROS, - Species.GYARADOS, - Species.AERODACTYL, - Species.MEW, - Species.CROBAT, - Species.POLITOED, - Species.AIPOM, - Species.UMBREON, - Species.MURKROW, - Species.MISDREAVUS, - Species.PINECO, - Species.FORRETRESS, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.OCTILLERY, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.SMOOCHUM, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.PELIPPER, - Species.HARIYAMA, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.CARVANHA, - Species.SHARPEDO, - Species.SPOINK, - Species.GRUMPIG, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.SEVIPER, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.ABSOL, - Species.GLALIE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.FLOATZEL, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.SPIRITOMB, - Species.RIOLU, - Species.LUCARIO, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.WEAVILE, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.GLISCOR, - Species.DUSKNOIR, - Species.FROSLASS, - Species.AZELF, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.DARKRAI, - Species.ARCEUS, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FERROSEED, - Species.FERROTHORN, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HYDREIGON, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.LITLEO, - Species.PYROAR, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.ESPURR, - Species.MEOWSTIC, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.HAWLUCHA, - Species.YVELTAL, - Species.ZYGARDE, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.FOMANTIS, - Species.LURANTIS, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.STEENEE, - Species.TSAREENA, - Species.ORANGURU, - Species.PASSIMIAN, - Species.GOLISOPOD, - Species.TYPE_NULL, - Species.SILVALLY, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_BULU, - Species.BUZZWOLE, - Species.GUZZLORD, - Species.MARSHADOW, - Species.BLACEPHALON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.APPLETUN, - Species.TOXTRICITY, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.MR_RIME, - Species.RUNERIGUS, - Species.FALINKS, - Species.PINCURCHIN, - Species.MORPEKO, - Species.COPPERAJAH, - Species.ARCTOZOLT, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.URSHIFU, - Species.ZARUDE, - Species.GLASTRIER, - Species.SPECTRIER, - Species.URSALUNA, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.BOMBIRDIER, - Species.FLAMIGO, - Species.BRUTE_BONNET, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, + [MoveId.PAYBACK]: [ + SpeciesId.BEEDRILL, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.DODRIO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.AERODACTYL, + SpeciesId.MEW, + SpeciesId.CROBAT, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.MISDREAVUS, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.OCTILLERY, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.SMOOCHUM, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.PELIPPER, + SpeciesId.HARIYAMA, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.ABSOL, + SpeciesId.GLALIE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.SPIRITOMB, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.WEAVILE, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.GLISCOR, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.AZELF, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HYDREIGON, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HAWLUCHA, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.GOLISOPOD, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_BULU, + SpeciesId.BUZZWOLE, + SpeciesId.GUZZLORD, + SpeciesId.MARSHADOW, + SpeciesId.BLACEPHALON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.APPLETUN, + SpeciesId.TOXTRICITY, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.MORPEKO, + SpeciesId.COPPERAJAH, + SpeciesId.ARCTOZOLT, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.URSALUNA, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.BOMBIRDIER, + SpeciesId.FLAMIGO, + SpeciesId.BRUTE_BONNET, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_MEOWTH, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", "shadow", ], ], - [Moves.ASSURANCE]: [ - Species.BEEDRILL, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.ZUBAT, - Species.GOLBAT, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.MANKEY, - Species.PRIMEAPE, - Species.MACHAMP, - Species.DODUO, - Species.KOFFING, - Species.WEEZING, - Species.KANGASKHAN, - Species.SCYTHER, - Species.TAUROS, - Species.AERODACTYL, - Species.MEW, - Species.CROBAT, - Species.UMBREON, - Species.MURKROW, - Species.GIRAFARIG, - Species.QWILFISH, - Species.SCIZOR, - Species.HERACROSS, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.DONPHAN, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.NUZLEAF, - Species.SHIFTRY, - Species.MAWILE, - Species.CARVANHA, - Species.SHARPEDO, - Species.CACNEA, - Species.CACTURNE, - Species.SEVIPER, - Species.ABSOL, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.VESPIQUEN, - Species.BUNEARY, - Species.LOPUNNY, - Species.HONCHKROW, - Species.GLAMEOW, - Species.STUNKY, - Species.SKUNTANK, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.AZELF, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.PATRAT, - Species.PURRLOIN, - Species.LIEPARD, - Species.WOOBAT, - Species.SWOOBAT, - Species.SCOLIPEDE, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.MARACTUS, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.MIENSHAO, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.TORNADUS, - Species.THUNDURUS, - Species.GENESECT, - Species.BINACLE, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.HAWLUCHA, - Species.GOODRA, - Species.INCINEROAR, - Species.LYCANROC, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.TOGEDEMARU, - Species.DHELMISE, - Species.TAPU_KOKO, - Species.PHEROMOSA, - Species.MARSHADOW, - Species.NAGANADEL, - Species.ZERAORA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.NICKIT, - Species.THIEVUL, - Species.CHEWTLE, - Species.DREDNAW, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.SIRFETCHD, - Species.FALINKS, - Species.PINCURCHIN, - Species.STONJOURNER, - Species.MORPEKO, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ETERNATUS, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.GLASTRIER, - Species.SPECTRIER, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.VAROOM, - Species.REVAVROOM, - Species.ANNIHILAPE, - Species.FARIGIRAF, - Species.KINGAMBIT, - Species.IRON_JUGULIS, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.GALAR_MEOWTH, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, + [MoveId.ASSURANCE]: [ + SpeciesId.BEEDRILL, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.MACHAMP, + SpeciesId.DODUO, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.KANGASKHAN, + SpeciesId.SCYTHER, + SpeciesId.TAUROS, + SpeciesId.AERODACTYL, + SpeciesId.MEW, + SpeciesId.CROBAT, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.GIRAFARIG, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.DONPHAN, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.MAWILE, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SEVIPER, + SpeciesId.ABSOL, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.VESPIQUEN, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.AZELF, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.PATRAT, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SCOLIPEDE, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.MARACTUS, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MIENSHAO, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.GENESECT, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.HAWLUCHA, + SpeciesId.GOODRA, + SpeciesId.INCINEROAR, + SpeciesId.LYCANROC, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.TOGEDEMARU, + SpeciesId.DHELMISE, + SpeciesId.TAPU_KOKO, + SpeciesId.PHEROMOSA, + SpeciesId.MARSHADOW, + SpeciesId.NAGANADEL, + SpeciesId.ZERAORA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.SIRFETCHD, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.STONJOURNER, + SpeciesId.MORPEKO, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ETERNATUS, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.ANNIHILAPE, + SpeciesId.FARIGIRAF, + SpeciesId.KINGAMBIT, + SpeciesId.IRON_JUGULIS, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", "shadow", ], [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "combat", ], ], - [Moves.EMBARGO]: [ - Species.PERSIAN, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.MEWTWO, - Species.MEW, - Species.MURKROW, - Species.MISDREAVUS, - Species.SNEASEL, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SABLEYE, - Species.MAWILE, - Species.CACTURNE, - Species.ZANGOOSE, - Species.LUNATONE, - Species.SOLROCK, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.SPIRITOMB, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.PORYGON_Z, - Species.DUSKNOIR, - Species.FROSLASS, - Species.DARKRAI, - Species.VICTINI, - Species.PURRLOIN, - Species.LIEPARD, - Species.WOOBAT, - Species.SWOOBAT, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.YAMASK, - Species.COFAGRIGUS, - Species.ZORUA, - Species.ZOROARK, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.PAWNIARD, - Species.BISHARP, - Species.VULLABY, - Species.MANDIBUZZ, - Species.TORNADUS, - Species.THUNDURUS, - Species.MELOETTA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.PANGORO, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.YVELTAL, - Species.HOOPA, - Species.INCINEROAR, - Species.ORICORIO, - Species.ORANGURU, - Species.PALOSSAND, - Species.MIMIKYU, - Species.BRUXISH, - Species.DHELMISE, - Species.NECROZMA, - Species.MAGEARNA, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, + [MoveId.EMBARGO]: [ + SpeciesId.PERSIAN, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.MURKROW, + SpeciesId.MISDREAVUS, + SpeciesId.SNEASEL, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.SPIRITOMB, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.PORYGON_Z, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.DARKRAI, + SpeciesId.VICTINI, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.MELOETTA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.PANGORO, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.YVELTAL, + SpeciesId.HOOPA, + SpeciesId.INCINEROAR, + SpeciesId.ORICORIO, + SpeciesId.ORANGURU, + SpeciesId.PALOSSAND, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DHELMISE, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, ], - [Moves.FLING]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.GLOOM, - Species.VILEPLUME, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.LEDYBA, - Species.LEDIAN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.QUAGSIRE, - Species.SLOWKING, - Species.GLIGAR, - Species.SNUBBULL, - Species.GRANBULL, - Species.SCIZOR, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.DELIBIRD, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.TYRANITAR, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOMBRE, - Species.LUDICOLO, - Species.NUZLEAF, - Species.SHIFTRY, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GULPIN, - Species.SWALOT, - Species.GRUMPIG, - Species.SPINDA, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.KECLEON, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIBAREL, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.AMBIPOM, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MIME_JR, - Species.HAPPINY, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.GLISCOR, - Species.GALLADE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.PALKIA, - Species.REGIGIGAS, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.VICTINI, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.WHIMSICOTT, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.REUNICLUS, - Species.EMOLGA, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.HEATMOR, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.HAWLUCHA, - Species.DEDENNE, - Species.HOOPA, - Species.VOLCANION, - Species.INCINEROAR, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.FOMANTIS, - Species.LURANTIS, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.GUZZLORD, - Species.NECROZMA, - Species.MARSHADOW, - Species.BLACEPHALON, - Species.ZERAORA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.CINDERACE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.TOXTRICITY, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.MR_RIME, - Species.MILCERY, - Species.ALCREMIE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.URSALUNA, - Species.SNEASLER, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.QUAQUAVAL, - Species.SPIDOPS, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.ARBOLIVA, - Species.GARGANACL, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.SHROODLE, - Species.GRAFAIAI, - Species.KLAWF, - Species.RELLOR, - Species.RABSCA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.FINIZEN, - Species.PALAFIN, - Species.FLAMIGO, - Species.ANNIHILAPE, - Species.KINGAMBIT, - Species.SCREAM_TAIL, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.GHOLDENGO, - Species.IRON_VALIANT, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.OGERPON, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, + [MoveId.FLING]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.GLIGAR, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.DELIBIRD, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.TYRANITAR, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.KECLEON, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIBAREL, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.GLISCOR, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.PALKIA, + SpeciesId.REGIGIGAS, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.VICTINI, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.WHIMSICOTT, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.REUNICLUS, + SpeciesId.EMOLGA, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.HEATMOR, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.INCINEROAR, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MARSHADOW, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.CINDERACE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.TOXTRICITY, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.MR_RIME, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.QUAQUAVAL, + SpeciesId.SPIDOPS, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.ARBOLIVA, + SpeciesId.GARGANACL, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.KLAWF, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.FLAMIGO, + SpeciesId.ANNIHILAPE, + SpeciesId.KINGAMBIT, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.GHOLDENGO, + SpeciesId.IRON_VALIANT, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.OGERPON, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_MEOWTH, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.BLOODMOON_URSALUNA, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.GASTRO_ACID]: [ - Species.EKANS, - Species.ARBOK, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.SNORLAX, - Species.MEW, - Species.BELLOSSOM, - Species.SHUCKLE, - Species.GULPIN, - Species.SWALOT, - Species.SEVIPER, - Species.LILEEP, - Species.CRADILY, - Species.MUNCHLAX, - Species.CARNIVINE, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.FOONGUS, - Species.AMOONGUSS, - Species.JOLTIK, - Species.GALVANTULA, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.SHELMET, - Species.ACCELGOR, - Species.HEATMOR, - Species.DIGGERSBY, - Species.SWIRLIX, - Species.SLURPUFF, - Species.MAREANIE, - Species.TOXAPEX, - Species.PYUKUMUKU, - Species.GUZZLORD, - Species.POIPOLE, - Species.NAGANADEL, - Species.CHEWTLE, - Species.DREDNAW, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, + [MoveId.GASTRO_ACID]: [ + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.BELLOSSOM, + SpeciesId.SHUCKLE, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.SEVIPER, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.MUNCHLAX, + SpeciesId.CARNIVINE, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.HEATMOR, + SpeciesId.DIGGERSBY, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.PYUKUMUKU, + SpeciesId.GUZZLORD, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, ], - [Moves.POWER_SWAP]: [ - Species.VULPIX, - Species.NINETALES, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.TANGELA, - Species.MR_MIME, - Species.MAGMAR, - Species.PORYGON, - Species.MEWTWO, - Species.MEW, - Species.NATU, - Species.XATU, - Species.ESPEON, - Species.GIRAFARIG, - Species.PORYGON2, - Species.MAGBY, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.GARDEVOIR, - Species.MEDITITE, - Species.SWABLU, - Species.ALTARIA, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.BRONZOR, - Species.BRONZONG, - Species.TANGROWTH, - Species.MAGMORTAR, - Species.PORYGON_Z, - Species.CRESSELIA, - Species.VICTINI, - Species.MUNNA, - Species.MUSHARNA, - Species.DARMANITAN, - Species.SIGILYPH, - Species.COFAGRIGUS, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.ACCELGOR, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.MAGEARNA, - Species.DOTTLER, - Species.ORBEETLE, - Species.HATTERENE, - Species.GRIMMSNARL, - Species.MR_RIME, - Species.RUNERIGUS, - Species.INDEEDEE, - Species.ZAMAZENTA, - Species.CALYREX, - Species.RABSCA, - Species.FARIGIRAF, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_EXEGGUTOR, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, + [MoveId.POWER_SWAP]: [ + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.TANGELA, + SpeciesId.MR_MIME, + SpeciesId.MAGMAR, + SpeciesId.PORYGON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.ESPEON, + SpeciesId.GIRAFARIG, + SpeciesId.PORYGON2, + SpeciesId.MAGBY, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.GARDEVOIR, + SpeciesId.MEDITITE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.TANGROWTH, + SpeciesId.MAGMORTAR, + SpeciesId.PORYGON_Z, + SpeciesId.CRESSELIA, + SpeciesId.VICTINI, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.DARMANITAN, + SpeciesId.SIGILYPH, + SpeciesId.COFAGRIGUS, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.ACCELGOR, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.MAGEARNA, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.HATTERENE, + SpeciesId.GRIMMSNARL, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.INDEEDEE, + SpeciesId.ZAMAZENTA, + SpeciesId.CALYREX, + SpeciesId.RABSCA, + SpeciesId.FARIGIRAF, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, ], - [Moves.GUARD_SWAP]: [ - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.DROWZEE, - Species.MR_MIME, - Species.PORYGON, - Species.MEWTWO, - Species.MEW, - Species.NATU, - Species.XATU, - Species.WOOPER, - Species.QUAGSIRE, - Species.UMBREON, - Species.GIRAFARIG, - Species.SLUGMA, - Species.MAGCARGO, - Species.SKARMORY, - Species.PORYGON2, - Species.GARDEVOIR, - Species.MAWILE, - Species.MEDITITE, - Species.BALTOY, - Species.CLAYDOL, - Species.CASTFORM, - Species.BRONZOR, - Species.BRONZONG, - Species.PORYGON_Z, - Species.CRESSELIA, - Species.VICTINI, - Species.MUNNA, - Species.MUSHARNA, - Species.DARMANITAN, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.SHELMET, - Species.ACCELGOR, - Species.INKAY, - Species.MALAMAR, - Species.CARBINK, - Species.DIANCIE, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.MAGEARNA, - Species.DOTTLER, - Species.ORBEETLE, - Species.WOOLOO, - Species.DUBWOOL, - Species.HATTERENE, - Species.MR_RIME, - Species.RUNERIGUS, - Species.ZAMAZENTA, - Species.CALYREX, - Species.RABSCA, - Species.FARIGIRAF, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, + [MoveId.GUARD_SWAP]: [ + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.DROWZEE, + SpeciesId.MR_MIME, + SpeciesId.PORYGON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.UMBREON, + SpeciesId.GIRAFARIG, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SKARMORY, + SpeciesId.PORYGON2, + SpeciesId.GARDEVOIR, + SpeciesId.MAWILE, + SpeciesId.MEDITITE, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.CASTFORM, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.PORYGON_Z, + SpeciesId.CRESSELIA, + SpeciesId.VICTINI, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.DARMANITAN, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.CARBINK, + SpeciesId.DIANCIE, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.MAGEARNA, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.HATTERENE, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.ZAMAZENTA, + SpeciesId.CALYREX, + SpeciesId.RABSCA, + SpeciesId.FARIGIRAF, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, [ - Species.INDEEDEE, + SpeciesId.INDEEDEE, "female", ], ], - [Moves.WORRY_SEED]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.PSYDUCK, - Species.GOLDUCK, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.TANGELA, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.SUNKERN, - Species.SUNFLORA, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SHROOMISH, - Species.BRELOOM, - Species.ROSELIA, - Species.CACNEA, - Species.CACTURNE, - Species.LILEEP, - Species.CRADILY, - Species.TROPIUS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.BUDEW, - Species.ROSERADE, - Species.WORMADAM, - Species.CHERUBI, - Species.CHERRIM, - Species.CARNIVINE, - Species.SNOVER, - Species.ABOMASNOW, - Species.TANGROWTH, - Species.LEAFEON, - Species.SHAYMIN, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.PANSAGE, - Species.SIMISAGE, - Species.MUNNA, - Species.MUSHARNA, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.MARACTUS, - Species.DEERLING, - Species.SAWSBUCK, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FERROSEED, - Species.FERROTHORN, - Species.VIRIZION, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.TAPU_BULU, - Species.NIHILEGO, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.ALOLA_EXEGGUTOR, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, - Species.ETERNAL_FLOETTE, + [MoveId.WORRY_SEED]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.TANGELA, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.ROSELIA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.TROPIUS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.WORMADAM, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.CARNIVINE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.TANGROWTH, + SpeciesId.LEAFEON, + SpeciesId.SHAYMIN, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.MARACTUS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.VIRIZION, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.TAPU_BULU, + SpeciesId.NIHILEGO, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.ETERNAL_FLOETTE, ], - [Moves.TOXIC_SPIKES]: [ - Species.BEEDRILL, - Species.EKANS, - Species.ARBOK, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.VENONAT, - Species.VENOMOTH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.HAUNTER, - Species.GENGAR, - Species.KOFFING, - Species.WEEZING, - Species.OMANYTE, - Species.OMASTAR, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.QUAGSIRE, - Species.PINECO, - Species.FORRETRESS, - Species.GLIGAR, - Species.QWILFISH, - Species.SHIFTRY, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CACNEA, - Species.CACTURNE, - Species.ROSERADE, - Species.VESPIQUEN, - Species.STUNKY, - Species.SKUNTANK, - Species.SKORUPI, - Species.DRAPION, - Species.GLISCOR, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TRUBBISH, - Species.GARBODOR, - Species.SHELMET, - Species.ACCELGOR, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.SKRELP, - Species.DRAGALGE, - Species.MAREANIE, - Species.TOXAPEX, - Species.SALANDIT, - Species.SALAZZLE, - Species.NIHILEGO, - Species.POIPOLE, - Species.NAGANADEL, - Species.TOXTRICITY, - Species.RUNERIGUS, - Species.PINCURCHIN, - Species.ETERNATUS, - Species.SNEASLER, - Species.OVERQWIL, - Species.MEOWSCARADA, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.VAROOM, - Species.REVAVROOM, - Species.GLIMMET, - Species.GLIMMORA, - Species.CLODSIRE, - Species.IRON_MOTH, - Species.GALAR_WEEZING, - Species.GALAR_SLOWKING, - Species.GALAR_YAMASK, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.PALDEA_WOOPER, + [MoveId.TOXIC_SPIKES]: [ + SpeciesId.BEEDRILL, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.QUAGSIRE, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.GLIGAR, + SpeciesId.QWILFISH, + SpeciesId.SHIFTRY, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ROSERADE, + SpeciesId.VESPIQUEN, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.GLISCOR, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.NIHILEGO, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.TOXTRICITY, + SpeciesId.RUNERIGUS, + SpeciesId.PINCURCHIN, + SpeciesId.ETERNATUS, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.MEOWSCARADA, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.CLODSIRE, + SpeciesId.IRON_MOTH, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_YAMASK, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.PALDEA_WOOPER, ], - [Moves.FLARE_BLITZ]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.VULPIX, - Species.NINETALES, - Species.GROWLITHE, - Species.ARCANINE, - Species.PONYTA, - Species.RAPIDASH, - Species.MAGMAR, - Species.FLAREON, - Species.MOLTRES, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.MAGCARGO, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.MAGBY, - Species.ENTEI, - Species.HO_OH, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SOLROCK, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.MAGMORTAR, - Species.HEATRAN, - Species.ARCEUS, - Species.VICTINI, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.PANSEAR, - Species.SIMISEAR, - Species.DARUMAKA, - Species.DARMANITAN, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.HEATMOR, - Species.LARVESTA, - Species.VOLCARONA, - Species.RESHIRAM, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.LITLEO, - Species.PYROAR, - Species.VOLCANION, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.SALANDIT, - Species.SALAZZLE, - Species.SOLGALEO, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.CARKOL, - Species.COALOSSAL, - Species.CENTISKORCH, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.SLITHER_WING, - Species.IRON_MOTH, - Species.CHI_YU, - Species.KORAIDON, - Species.GOUGING_FIRE, - Species.TERAPAGOS, - Species.ALOLA_MAROWAK, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, + [MoveId.FLARE_BLITZ]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.MAGMAR, + SpeciesId.FLAREON, + SpeciesId.MOLTRES, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.MAGCARGO, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.MAGBY, + SpeciesId.ENTEI, + SpeciesId.HO_OH, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SOLROCK, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.MAGMORTAR, + SpeciesId.HEATRAN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.HEATMOR, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.RESHIRAM, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.VOLCANION, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.SOLGALEO, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.CENTISKORCH, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_MOTH, + SpeciesId.CHI_YU, + SpeciesId.KORAIDON, + SpeciesId.GOUGING_FIRE, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "blaze", ], ], - [Moves.AURA_SPHERE]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.MEWTWO, - Species.MEW, - Species.RAIKOU, - Species.CELEBI, - Species.BLAZIKEN, - Species.GARDEVOIR, - Species.MEDICHAM, - Species.ZANGOOSE, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.INFERNAPE, - Species.LOPUNNY, - Species.LUCARIO, - Species.TOGEKISS, - Species.GALLADE, - Species.DIALGA, - Species.PALKIA, - Species.GIRATINA, - Species.ARCEUS, - Species.MIENFOO, - Species.MIENSHAO, - Species.KELDEO, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.KOMMO_O, - Species.MAGEARNA, - Species.MARSHADOW, - Species.ZERAORA, - Species.URSHIFU, - Species.MEOWSCARADA, - Species.ARMAROUGE, - Species.PALAFIN, - Species.IRON_VALIANT, - Species.ARCHALUDON, - Species.TERAPAGOS, - Species.HISUI_DECIDUEYE, + [MoveId.AURA_SPHERE]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.RAIKOU, + SpeciesId.CELEBI, + SpeciesId.BLAZIKEN, + SpeciesId.GARDEVOIR, + SpeciesId.MEDICHAM, + SpeciesId.ZANGOOSE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.INFERNAPE, + SpeciesId.LOPUNNY, + SpeciesId.LUCARIO, + SpeciesId.TOGEKISS, + SpeciesId.GALLADE, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.KELDEO, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.KOMMO_O, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.URSHIFU, + SpeciesId.MEOWSCARADA, + SpeciesId.ARMAROUGE, + SpeciesId.PALAFIN, + SpeciesId.IRON_VALIANT, + SpeciesId.ARCHALUDON, + SpeciesId.TERAPAGOS, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.ROCK_POLISH]: [ - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.ONIX, - Species.RHYHORN, - Species.RHYDON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.MEW, - Species.SUDOWOODO, - Species.FORRETRESS, - Species.GLIGAR, - Species.STEELIX, - Species.SHUCKLE, - Species.MAGCARGO, - Species.CORSOLA, - Species.DONPHAN, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.NOSEPASS, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.CAMERUPT, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.RELICANTH, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.GROUDON, - Species.TORTERRA, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.RHYPERIOR, - Species.GLISCOR, - Species.PROBOPASS, - Species.REGIGIGAS, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DWEBBLE, - Species.CRUSTLE, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.GARBODOR, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.DURANT, - Species.COBALION, - Species.TERRAKION, - Species.LANDORUS, - Species.GENESECT, - Species.BINACLE, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.CARBINK, - Species.BERGMITE, - Species.AVALUGG, - Species.DIANCIE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MINIOR, - Species.KOMMO_O, - Species.NECROZMA, - Species.STAKATAKA, - Species.DREDNAW, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.STONJOURNER, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.GLIMMET, - Species.GLIMMORA, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, + [MoveId.ROCK_POLISH]: [ + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.ONIX, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.MEW, + SpeciesId.SUDOWOODO, + SpeciesId.FORRETRESS, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SHUCKLE, + SpeciesId.MAGCARGO, + SpeciesId.CORSOLA, + SpeciesId.DONPHAN, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.NOSEPASS, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.CAMERUPT, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.RELICANTH, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.TORTERRA, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.RHYPERIOR, + SpeciesId.GLISCOR, + SpeciesId.PROBOPASS, + SpeciesId.REGIGIGAS, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.GARBODOR, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.DURANT, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.LANDORUS, + SpeciesId.GENESECT, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.CARBINK, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.DIANCIE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MINIOR, + SpeciesId.KOMMO_O, + SpeciesId.NECROZMA, + SpeciesId.STAKATAKA, + SpeciesId.DREDNAW, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.STONJOURNER, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, ], - [Moves.POISON_JAB]: [ - Species.BEEDRILL, - Species.EKANS, - Species.ARBOK, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.RAPIDASH, - Species.FARFETCHD, - Species.GRIMER, - Species.MUK, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.HITMONLEE, - Species.RHYHORN, - Species.RHYDON, - Species.GOLDEEN, - Species.SEAKING, - Species.MEWTWO, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.QWILFISH, - Species.SNEASEL, - Species.DONPHAN, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.SHARPEDO, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.SEVIPER, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.ROSERADE, - Species.STUNKY, - Species.SKUNTANK, - Species.GARCHOMP, - Species.RIOLU, - Species.LUCARIO, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.GLISCOR, - Species.GALLADE, - Species.DARKRAI, - Species.ARCEUS, - Species.PIGNITE, - Species.EMBOAR, - Species.DRILBUR, - Species.EXCADRILL, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CRYOGONAL, - Species.MIENFOO, - Species.MIENSHAO, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.KELDEO, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.PANGORO, - Species.BINACLE, - Species.BARBARACLE, - Species.HAWLUCHA, - Species.PHANTUMP, - Species.TREVENANT, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.MAREANIE, - Species.TOXAPEX, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.SALANDIT, - Species.SALAZZLE, - Species.GOLISOPOD, - Species.TOGEDEMARU, - Species.KOMMO_O, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.GUZZLORD, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.CHEWTLE, - Species.DREDNAW, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXTRICITY, - Species.SIRFETCHD, - Species.FALINKS, - Species.PINCURCHIN, - Species.ZACIAN, - Species.ETERNATUS, - Species.URSHIFU, - Species.SNEASLER, - Species.OVERQWIL, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.CERULEDGE, - Species.SHROODLE, - Species.GRAFAIAI, - Species.VAROOM, - Species.REVAVROOM, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.IRON_VALIANT, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.IRON_BOULDER, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_SLOWKING, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_LILLIGANT, - Species.PALDEA_WOOPER, + [MoveId.POISON_JAB]: [ + SpeciesId.BEEDRILL, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.RAPIDASH, + SpeciesId.FARFETCHD, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.HITMONLEE, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.QWILFISH, + SpeciesId.SNEASEL, + SpeciesId.DONPHAN, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.SHARPEDO, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.ROSERADE, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.GARCHOMP, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.GLISCOR, + SpeciesId.GALLADE, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CRYOGONAL, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.KELDEO, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.PANGORO, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HAWLUCHA, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.GOLISOPOD, + SpeciesId.TOGEDEMARU, + SpeciesId.KOMMO_O, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.GUZZLORD, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXTRICITY, + SpeciesId.SIRFETCHD, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.ZACIAN, + SpeciesId.ETERNATUS, + SpeciesId.URSHIFU, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.CERULEDGE, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.IRON_VALIANT, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.IRON_BOULDER, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.PALDEA_WOOPER, ], - [Moves.DARK_PULSE]: [ - Species.BLASTOISE, - Species.EKANS, - Species.ARBOK, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.KOFFING, - Species.WEEZING, - Species.GYARADOS, - Species.MEWTWO, - Species.MEW, - Species.CROBAT, - Species.UMBREON, - Species.MURKROW, - Species.MISDREAVUS, - Species.GLIGAR, - Species.STEELIX, - Species.SNEASEL, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.CARVANHA, - Species.SHARPEDO, - Species.CACNEA, - Species.CACTURNE, - Species.SEVIPER, - Species.CRAWDAUNT, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.ABSOL, - Species.GLALIE, - Species.DEOXYS, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.STUNKY, - Species.SKUNTANK, - Species.SPIRITOMB, - Species.LUCARIO, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.GLISCOR, - Species.PORYGON_Z, - Species.DUSKNOIR, - Species.ROTOM, - Species.HEATRAN, - Species.GIRATINA, - Species.DARKRAI, - Species.ARCEUS, - Species.PURRLOIN, - Species.LIEPARD, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.FRILLISH, - Species.JELLICENT, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.VULLABY, - Species.MANDIBUZZ, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.TORNADUS, - Species.THUNDURUS, - Species.GENESECT, - Species.FROGADIER, - Species.GRENINJA, - Species.LITLEO, - Species.PYROAR, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.INKAY, - Species.MALAMAR, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.HOOPA, - Species.INCINEROAR, - Species.GOLISOPOD, - Species.MIMIKYU, - Species.GUZZLORD, - Species.NECROZMA, - Species.NAGANADEL, - Species.BLACEPHALON, - Species.INTELEON, - Species.THIEVUL, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.PERRSERKER, - Species.RUNERIGUS, - Species.MORPEKO, - Species.DURALUDON, - Species.ZARUDE, - Species.SPECTRIER, - Species.OVERQWIL, - Species.MEOWSCARADA, - Species.LOKIX, - Species.ARMAROUGE, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.BOMBIRDIER, - Species.KINGAMBIT, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.IRON_JUGULIS, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.FEZANDIPITI, - Species.ARCHALUDON, - Species.TERAPAGOS, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_WEEZING, - Species.GALAR_MOLTRES, - Species.GALAR_YAMASK, + [MoveId.DARK_PULSE]: [ + SpeciesId.BLASTOISE, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.GYARADOS, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CROBAT, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.MISDREAVUS, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNEASEL, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SEVIPER, + SpeciesId.CRAWDAUNT, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.ABSOL, + SpeciesId.GLALIE, + SpeciesId.DEOXYS, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.SPIRITOMB, + SpeciesId.LUCARIO, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.GLISCOR, + SpeciesId.PORYGON_Z, + SpeciesId.DUSKNOIR, + SpeciesId.ROTOM, + SpeciesId.HEATRAN, + SpeciesId.GIRATINA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.GENESECT, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.HOOPA, + SpeciesId.INCINEROAR, + SpeciesId.GOLISOPOD, + SpeciesId.MIMIKYU, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.NAGANADEL, + SpeciesId.BLACEPHALON, + SpeciesId.INTELEON, + SpeciesId.THIEVUL, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.PERRSERKER, + SpeciesId.RUNERIGUS, + SpeciesId.MORPEKO, + SpeciesId.DURALUDON, + SpeciesId.ZARUDE, + SpeciesId.SPECTRIER, + SpeciesId.OVERQWIL, + SpeciesId.MEOWSCARADA, + SpeciesId.LOKIX, + SpeciesId.ARMAROUGE, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.BOMBIRDIER, + SpeciesId.KINGAMBIT, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.IRON_JUGULIS, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.FEZANDIPITI, + SpeciesId.ARCHALUDON, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_YAMASK, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "single-strike", ], [ - Species.CALYREX, + SpeciesId.CALYREX, "shadow", ], - Species.HISUI_QWILFISH, - Species.HISUI_SAMUROTT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, ], - [Moves.AQUA_TAIL]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.EKANS, - Species.ARBOK, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.PSYDUCK, - Species.GOLDUCK, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.KANGASKHAN, - Species.GOLDEEN, - Species.SEAKING, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.KABUTOPS, - Species.AERODACTYL, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.LANTURN, - Species.MARILL, - Species.AZUMARILL, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.QWILFISH, - Species.MANTINE, - Species.TYRANITAR, - Species.LUGIA, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.AGGRON, - Species.SEVIPER, - Species.BARBOACH, - Species.WHISCASH, - Species.ARMALDO, - Species.MILOTIC, - Species.KECLEON, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.SALAMENCE, - Species.KYOGRE, - Species.RAYQUAZA, - Species.BIDOOF, - Species.BIBAREL, - Species.BUIZEL, - Species.FLOATZEL, - Species.GARCHOMP, - Species.SKORUPI, - Species.DRAPION, - Species.FINNEON, - Species.LUMINEON, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.GLACEON, - Species.GLISCOR, - Species.PALKIA, - Species.GIRATINA, - Species.ARCEUS, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.PANPOUR, - Species.SIMIPOUR, - Species.SCOLIPEDE, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.MINCCINO, - Species.CINCCINO, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.STUNFISK, - Species.DRUDDIGON, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.KELDEO, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.AMAURA, - Species.AURORUS, - Species.GOODRA, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.WISHIWASHI, - Species.BRUXISH, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.BASCULEGION, - Species.OVERQWIL, - Species.FINIZEN, - Species.PALAFIN, - Species.CYCLIZAR, - Species.DONDOZO, - Species.DUDUNSPARCE, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.HISUI_QWILFISH, - Species.HISUI_SAMUROTT, + [MoveId.AQUA_TAIL]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.KANGASKHAN, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.LANTURN, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.QWILFISH, + SpeciesId.MANTINE, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.AGGRON, + SpeciesId.SEVIPER, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.ARMALDO, + SpeciesId.MILOTIC, + SpeciesId.KECLEON, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.SALAMENCE, + SpeciesId.KYOGRE, + SpeciesId.RAYQUAZA, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.GARCHOMP, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.PALKIA, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.SCOLIPEDE, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.STUNFISK, + SpeciesId.DRUDDIGON, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.KELDEO, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.GOODRA, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.WISHIWASHI, + SpeciesId.BRUXISH, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.CYCLIZAR, + SpeciesId.DONDOZO, + SpeciesId.DUDUNSPARCE, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SAMUROTT, ], - [Moves.SEED_BOMB]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.EKANS, - Species.ARBOK, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.MEOWTH, - Species.PERSIAN, - Species.MANKEY, - Species.PRIMEAPE, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.TANGELA, - Species.SNORLAX, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.SENTRET, - Species.FURRET, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.PINECO, - Species.FORRETRESS, - Species.TEDDIURSA, - Species.URSARING, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.PHANPY, - Species.DONPHAN, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.PELIPPER, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.GRUMPIG, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LILEEP, - Species.CRADILY, - Species.TROPIUS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.BUDEW, - Species.ROSERADE, - Species.WORMADAM, - Species.PACHIRISU, - Species.CHERUBI, - Species.CHERRIM, - Species.AMBIPOM, - Species.MUNCHLAX, - Species.CARNIVINE, - Species.SNOVER, - Species.ABOMASNOW, - Species.TANGROWTH, - Species.LEAFEON, - Species.SHAYMIN, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.PATRAT, - Species.WATCHOG, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.MARACTUS, - Species.TRUBBISH, - Species.GARBODOR, - Species.MINCCINO, - Species.CINCCINO, - Species.DEERLING, - Species.SAWSBUCK, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FERROSEED, - Species.FERROTHORN, - Species.VIRIZION, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.DEDENNE, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.PASSIMIAN, - Species.KOMALA, - Species.TAPU_BULU, - Species.CELESTEELA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SKWOVET, - Species.GREEDENT, - Species.ELDEGOSS, - Species.FLAPPLE, - Species.APPLETUN, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.MORPEKO, - Species.ZARUDE, - Species.CALYREX, - Species.URSALUNA, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.LECHONK, - Species.OINKOLOGNE, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.FLITTLE, - Species.ESPATHRA, - Species.ANNIHILAPE, - Species.BRUTE_BONNET, - Species.WO_CHIEN, - Species.DIPPLIN, - Species.OGERPON, - Species.HYDRAPPLE, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_EXEGGUTOR, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, - Species.BLOODMOON_URSALUNA, + [MoveId.SEED_BOMB]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.TANGELA, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.PELIPPER, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.GRUMPIG, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.TROPIUS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.WORMADAM, + SpeciesId.PACHIRISU, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.AMBIPOM, + SpeciesId.MUNCHLAX, + SpeciesId.CARNIVINE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.TANGROWTH, + SpeciesId.LEAFEON, + SpeciesId.SHAYMIN, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.MARACTUS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.VIRIZION, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.DEDENNE, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.PASSIMIAN, + SpeciesId.KOMALA, + SpeciesId.TAPU_BULU, + SpeciesId.CELESTEELA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ELDEGOSS, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.MORPEKO, + SpeciesId.ZARUDE, + SpeciesId.CALYREX, + SpeciesId.URSALUNA, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.ANNIHILAPE, + SpeciesId.BRUTE_BONNET, + SpeciesId.WO_CHIEN, + SpeciesId.DIPPLIN, + SpeciesId.OGERPON, + SpeciesId.HYDRAPPLE, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.AIR_SLASH]: [ - Species.CHARIZARD, - Species.BUTTERFREE, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.ZUBAT, - Species.GOLBAT, - Species.VENOMOTH, - Species.FARFETCHD, - Species.SCYTHER, - Species.ARTICUNO, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.CROBAT, - Species.NATU, - Species.XATU, - Species.YANMA, - Species.MURKROW, - Species.DUNSPARCE, - Species.SCIZOR, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.SUICUNE, - Species.LUGIA, - Species.HO_OH, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.MASQUERAIN, - Species.NINJASK, - Species.VOLBEAT, - Species.ILLUMISE, - Species.VIBRAVA, - Species.FLYGON, - Species.TROPIUS, - Species.ABSOL, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.RAYQUAZA, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.MOTHIM, - Species.VESPIQUEN, - Species.DRIFBLIM, - Species.HONCHKROW, - Species.LUMINEON, - Species.MANTYKE, - Species.TOGEKISS, - Species.YANMEGA, - Species.GALLADE, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.SIGILYPH, - Species.ARCHEOPS, - Species.DUCKLETT, - Species.SWANNA, - Species.EMOLGA, - Species.PAWNIARD, - Species.BISHARP, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.KELDEO, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.AEGISLASH, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.VIKAVOLT, - Species.ORICORIO, - Species.TYPE_NULL, - Species.SILVALLY, - Species.LUNALA, - Species.CELESTEELA, - Species.KARTANA, - Species.NAGANADEL, - Species.INTELEON, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.FLAPPLE, - Species.CRAMORANT, - Species.FROSMOTH, - Species.ZACIAN, - Species.KLEAVOR, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.SQUAWKABILLY, - Species.WATTREL, - Species.KILOWATTREL, - Species.BOMBIRDIER, - Species.FLAMIGO, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.ROARING_MOON, - Species.IRON_LEAVES, - Species.FEZANDIPITI, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.SHAYMIN, + [MoveId.AIR_SLASH]: [ + SpeciesId.CHARIZARD, + SpeciesId.BUTTERFREE, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.VENOMOTH, + SpeciesId.FARFETCHD, + SpeciesId.SCYTHER, + SpeciesId.ARTICUNO, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.CROBAT, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.YANMA, + SpeciesId.MURKROW, + SpeciesId.DUNSPARCE, + SpeciesId.SCIZOR, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.MASQUERAIN, + SpeciesId.NINJASK, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.TROPIUS, + SpeciesId.ABSOL, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.RAYQUAZA, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.DRIFBLIM, + SpeciesId.HONCHKROW, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.GALLADE, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.SIGILYPH, + SpeciesId.ARCHEOPS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.EMOLGA, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.KELDEO, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.AEGISLASH, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.VIKAVOLT, + SpeciesId.ORICORIO, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.LUNALA, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.NAGANADEL, + SpeciesId.INTELEON, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.FLAPPLE, + SpeciesId.CRAMORANT, + SpeciesId.FROSMOTH, + SpeciesId.ZACIAN, + SpeciesId.KLEAVOR, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.SQUAWKABILLY, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.BOMBIRDIER, + SpeciesId.FLAMIGO, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_LEAVES, + SpeciesId.FEZANDIPITI, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.SHAYMIN, [ - Species.ROTOM, + SpeciesId.ROTOM, "fan", ], - Species.GALAR_ARTICUNO, - Species.GALAR_MOLTRES, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_MOLTRES, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.X_SCISSOR]: [ - Species.BEEDRILL, - Species.SANDSHREW, - Species.SANDSLASH, - Species.PARAS, - Species.PARASECT, - Species.KRABBY, - Species.KINGLER, - Species.SCYTHER, - Species.PINSIR, - Species.KABUTOPS, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.GLIGAR, - Species.SCIZOR, - Species.SNEASEL, - Species.SKARMORY, - Species.GROVYLE, - Species.SCEPTILE, - Species.SHIFTRY, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.SABLEYE, - Species.ZANGOOSE, - Species.SEVIPER, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.ANORITH, - Species.ARMALDO, - Species.ABSOL, - Species.KRICKETUNE, - Species.VESPIQUEN, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.LEAFEON, - Species.GLISCOR, - Species.GALLADE, - Species.DARKRAI, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.DRILBUR, - Species.EXCADRILL, - Species.LEAVANNY, - Species.SCOLIPEDE, - Species.DWEBBLE, - Species.CRUSTLE, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.JOLTIK, - Species.GALVANTULA, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.PAWNIARD, - Species.BISHARP, - Species.DURANT, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.KELDEO, - Species.GENESECT, - Species.PANGORO, - Species.BINACLE, - Species.BARBARACLE, - Species.HAWLUCHA, - Species.TREVENANT, - Species.NOIBAT, - Species.NOIVERN, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.GOLISOPOD, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MIMIKYU, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.KARTANA, - Species.NECROZMA, - Species.NAGANADEL, - Species.CENTISKORCH, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.KLEAVOR, - Species.SNEASLER, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.CERULEDGE, - Species.GRAFAIAI, - Species.KLAWF, - Species.RELLOR, - Species.RABSCA, - Species.KINGAMBIT, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.IRON_LEAVES, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.GALAR_MEOWTH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, + [MoveId.X_SCISSOR]: [ + SpeciesId.BEEDRILL, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.SCYTHER, + SpeciesId.PINSIR, + SpeciesId.KABUTOPS, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.SNEASEL, + SpeciesId.SKARMORY, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.SHIFTRY, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.ABSOL, + SpeciesId.KRICKETUNE, + SpeciesId.VESPIQUEN, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.LEAFEON, + SpeciesId.GLISCOR, + SpeciesId.GALLADE, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.LEAVANNY, + SpeciesId.SCOLIPEDE, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.DURANT, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.KELDEO, + SpeciesId.GENESECT, + SpeciesId.PANGORO, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HAWLUCHA, + SpeciesId.TREVENANT, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.GOLISOPOD, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MIMIKYU, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.KARTANA, + SpeciesId.NECROZMA, + SpeciesId.NAGANADEL, + SpeciesId.CENTISKORCH, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.KLEAVOR, + SpeciesId.SNEASLER, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.CERULEDGE, + SpeciesId.GRAFAIAI, + SpeciesId.KLAWF, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.KINGAMBIT, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_LEAVES, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.GALAR_MEOWTH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, ], - [Moves.BUG_BUZZ]: [ - Species.BUTTERFREE, - Species.VENONAT, - Species.VENOMOTH, - Species.SCYTHER, - Species.MEW, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.YANMA, - Species.PINECO, - Species.FORRETRESS, - Species.SCIZOR, - Species.HERACROSS, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.SURSKIT, - Species.MASQUERAIN, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.VOLBEAT, - Species.ILLUMISE, - Species.VIBRAVA, - Species.FLYGON, - Species.KRICKETUNE, - Species.WORMADAM, - Species.MOTHIM, - Species.COMBEE, - Species.VESPIQUEN, - Species.SKORUPI, - Species.DRAPION, - Species.YANMEGA, - Species.ARCEUS, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.JOLTIK, - Species.GALVANTULA, - Species.SHELMET, - Species.ACCELGOR, - Species.LARVESTA, - Species.VOLCARONA, - Species.GENESECT, - Species.VIVILLON, - Species.VIKAVOLT, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.WIMPOD, - Species.GOLISOPOD, - Species.PHEROMOSA, - Species.DOTTLER, - Species.ORBEETLE, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.SNOM, - Species.FROSMOTH, - Species.KLEAVOR, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.RELLOR, - Species.RABSCA, - Species.SLITHER_WING, - Species.IRON_MOTH, - Species.TERAPAGOS, + [MoveId.BUG_BUZZ]: [ + SpeciesId.BUTTERFREE, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.SCYTHER, + SpeciesId.MEW, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.YANMA, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.KRICKETUNE, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.COMBEE, + SpeciesId.VESPIQUEN, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.YANMEGA, + SpeciesId.ARCEUS, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.GENESECT, + SpeciesId.VIVILLON, + SpeciesId.VIKAVOLT, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.PHEROMOSA, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.KLEAVOR, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_MOTH, + SpeciesId.TERAPAGOS, ], - [Moves.DRAGON_PULSE]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.ARCANINE, - Species.ONIX, - Species.RHYHORN, - Species.RHYDON, - Species.HORSEA, - Species.SEADRA, - Species.GYARADOS, - Species.LAPRAS, - Species.AERODACTYL, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.FERALIGATR, - Species.AMPHAROS, - Species.STEELIX, - Species.KINGDRA, - Species.TYRANITAR, - Species.LUGIA, - Species.SCEPTILE, - Species.AGGRON, - Species.VIBRAVA, - Species.FLYGON, - Species.SWABLU, - Species.ALTARIA, - Species.FEEBAS, - Species.MILOTIC, - Species.TROPIUS, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.GROUDON, - Species.RAYQUAZA, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.LUCARIO, - Species.RHYPERIOR, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.GIRATINA, - Species.ARCEUS, - Species.SERPERIOR, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ARCHEN, - Species.ARCHEOPS, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.DRUDDIGON, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.NOIBAT, - Species.NOIVERN, - Species.ZYGARDE, - Species.SALANDIT, - Species.SALAZZLE, - Species.TURTONATOR, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.GUZZLORD, - Species.NECROZMA, - Species.POIPOLE, - Species.NAGANADEL, - Species.FLAPPLE, - Species.APPLETUN, - Species.RUNERIGUS, - Species.DRACOZOLT, - Species.DRACOVISH, - Species.DURALUDON, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ETERNATUS, - Species.REGIDRAGO, - Species.ARMAROUGE, - Species.CYCLIZAR, - Species.TATSUGIRI, - Species.IRON_JUGULIS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.ROARING_MOON, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.DIPPLIN, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.TERAPAGOS, - Species.ALOLA_EXEGGUTOR, - Species.HISUI_ARCANINE, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, + [MoveId.DRAGON_PULSE]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.ARCANINE, + SpeciesId.ONIX, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.AERODACTYL, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.FERALIGATR, + SpeciesId.AMPHAROS, + SpeciesId.STEELIX, + SpeciesId.KINGDRA, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.SCEPTILE, + SpeciesId.AGGRON, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.TROPIUS, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.LUCARIO, + SpeciesId.RHYPERIOR, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.SERPERIOR, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.DRUDDIGON, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.ZYGARDE, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.RUNERIGUS, + SpeciesId.DRACOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.DURALUDON, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ETERNATUS, + SpeciesId.REGIDRAGO, + SpeciesId.ARMAROUGE, + SpeciesId.CYCLIZAR, + SpeciesId.TATSUGIRI, + SpeciesId.IRON_JUGULIS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.DIPPLIN, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, ], - [Moves.POWER_GEM]: [ - Species.MEOWTH, - Species.PERSIAN, - Species.GOLDUCK, - Species.STARYU, - Species.STARMIE, - Species.MEWTWO, - Species.MEW, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.SUDOWOODO, - Species.ESPEON, - Species.SLOWKING, - Species.MISDREAVUS, - Species.SLUGMA, - Species.MAGCARGO, - Species.CORSOLA, - Species.TYRANITAR, - Species.NOSEPASS, - Species.SABLEYE, - Species.SPOINK, - Species.GRUMPIG, - Species.LUNATONE, - Species.VESPIQUEN, - Species.MISMAGIUS, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.GABITE, - Species.GARCHOMP, - Species.PROBOPASS, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.CRESSELIA, - Species.ARCEUS, - Species.BOLDORE, - Species.GIGALITH, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.CARBINK, - Species.DIANCIE, - Species.MINIOR, - Species.NIHILEGO, - Species.NECROZMA, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.CURSOLA, - Species.STONJOURNER, - Species.MEOWSCARADA, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.KLAWF, - Species.RABSCA, - Species.BOMBIRDIER, - Species.GLIMMET, - Species.GLIMMORA, - Species.FLUTTER_MANE, - Species.SANDY_SHOCKS, - Species.IRON_THORNS, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.MIRAIDON, - Species.TERAPAGOS, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, + [MoveId.POWER_GEM]: [ + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.GOLDUCK, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.SUDOWOODO, + SpeciesId.ESPEON, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.CORSOLA, + SpeciesId.TYRANITAR, + SpeciesId.NOSEPASS, + SpeciesId.SABLEYE, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.LUNATONE, + SpeciesId.VESPIQUEN, + SpeciesId.MISMAGIUS, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.PROBOPASS, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.CRESSELIA, + SpeciesId.ARCEUS, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.CARBINK, + SpeciesId.DIANCIE, + SpeciesId.MINIOR, + SpeciesId.NIHILEGO, + SpeciesId.NECROZMA, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.CURSOLA, + SpeciesId.STONJOURNER, + SpeciesId.MEOWSCARADA, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.KLAWF, + SpeciesId.RABSCA, + SpeciesId.BOMBIRDIER, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.FLUTTER_MANE, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_THORNS, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.MIRAIDON, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, ], - [Moves.DRAIN_PUNCH]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.GLOOM, - Species.VILEPLUME, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWBRO, - Species.GRIMER, - Species.MUK, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.HITMONCHAN, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.JYNX, - Species.MEWTWO, - Species.MEW, - Species.LEDYBA, - Species.LEDIAN, - Species.TOGETIC, - Species.BELLOSSOM, - Species.SUDOWOODO, - Species.QUAGSIRE, - Species.SLOWKING, - Species.BLISSEY, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.LOMBRE, - Species.LUDICOLO, - Species.SHROOMISH, - Species.BRELOOM, - Species.VIGOROTH, - Species.SLAKING, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.GRUMPIG, - Species.SPINDA, - Species.CACNEA, - Species.CACTURNE, - Species.KECLEON, - Species.REGIROCK, - Species.JIRACHI, - Species.DEOXYS, - Species.MONFERNO, - Species.INFERNAPE, - Species.BUNEARY, - Species.LOPUNNY, - Species.MIME_JR, - Species.HAPPINY, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.TOGEKISS, - Species.GALLADE, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.REGIGIGAS, - Species.DARKRAI, - Species.PIGNITE, - Species.EMBOAR, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.MARACTUS, - Species.SCRAGGY, - Species.SCRAFTY, - Species.TRUBBISH, - Species.GARBODOR, - Species.REUNICLUS, - Species.EELEKTROSS, - Species.ACCELGOR, - Species.MIENFOO, - Species.MIENSHAO, - Species.GOLETT, - Species.GOLURK, - Species.HEATMOR, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.PANCHAM, - Species.PANGORO, - Species.AROMATISSE, - Species.SLURPUFF, - Species.HAWLUCHA, - Species.TREVENANT, - Species.HOOPA, - Species.INCINEROAR, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.SHIINOTIC, - Species.BEWEAR, - Species.PASSIMIAN, - Species.MIMIKYU, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.BUZZWOLE, - Species.GUZZLORD, - Species.MARSHADOW, - Species.ZERAORA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.TOXTRICITY, - Species.GRAPPLOCT, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.MR_RIME, - Species.ALCREMIE, - Species.INDEEDEE, - Species.URSHIFU, - Species.ZARUDE, - Species.URSALUNA, - Species.PALAFIN, - Species.ANNIHILAPE, - Species.SCREAM_TAIL, - Species.IRON_HANDS, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.OKIDOGI, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, + [MoveId.DRAIN_PUNCH]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWBRO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.HITMONCHAN, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.TOGETIC, + SpeciesId.BELLOSSOM, + SpeciesId.SUDOWOODO, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.BLISSEY, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.KECLEON, + SpeciesId.REGIROCK, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.TOGEKISS, + SpeciesId.GALLADE, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.REGIGIGAS, + SpeciesId.DARKRAI, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.MARACTUS, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.REUNICLUS, + SpeciesId.EELEKTROSS, + SpeciesId.ACCELGOR, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.HEATMOR, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.AROMATISSE, + SpeciesId.SLURPUFF, + SpeciesId.HAWLUCHA, + SpeciesId.TREVENANT, + SpeciesId.HOOPA, + SpeciesId.INCINEROAR, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.SHIINOTIC, + SpeciesId.BEWEAR, + SpeciesId.PASSIMIAN, + SpeciesId.MIMIKYU, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.BUZZWOLE, + SpeciesId.GUZZLORD, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.TOXTRICITY, + SpeciesId.GRAPPLOCT, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.MR_RIME, + SpeciesId.ALCREMIE, + SpeciesId.INDEEDEE, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.URSALUNA, + SpeciesId.PALAFIN, + SpeciesId.ANNIHILAPE, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.OKIDOGI, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, ], - [Moves.VACUUM_WAVE]: [ - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.SCYTHER, - Species.MEW, - Species.SCIZOR, - Species.HERACROSS, - Species.TYROGUE, - Species.HITMONTOP, - Species.GROVYLE, - Species.SCEPTILE, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.SHIFTRY, - Species.GARDEVOIR, - Species.BRELOOM, - Species.MAKUHITA, - Species.HARIYAMA, - Species.MEDITITE, - Species.MEDICHAM, - Species.FLYGON, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.EMPOLEON, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.GALLADE, - Species.DEWOTT, - Species.SAMUROTT, - Species.MIENSHAO, - Species.COBALION, - Species.VIRIZION, - Species.KELDEO, - Species.PASSIMIAN, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.KARTANA, - Species.INTELEON, - Species.KLEAVOR, - Species.URSALUNA, - Species.SNEASLER, - Species.CERULEDGE, - Species.ANNIHILAPE, - Species.IRON_VALIANT, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_BRAVIARY, - Species.BLOODMOON_URSALUNA, + [MoveId.VACUUM_WAVE]: [ + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.SCYTHER, + SpeciesId.MEW, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.SHIFTRY, + SpeciesId.GARDEVOIR, + SpeciesId.BRELOOM, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.FLYGON, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.GALLADE, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.MIENSHAO, + SpeciesId.COBALION, + SpeciesId.VIRIZION, + SpeciesId.KELDEO, + SpeciesId.PASSIMIAN, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.KARTANA, + SpeciesId.INTELEON, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.CERULEDGE, + SpeciesId.ANNIHILAPE, + SpeciesId.IRON_VALIANT, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.FOCUS_BLAST]: [ - Species.CHARMANDER, - Species.CHARIZARD, - Species.BLASTOISE, - Species.RAICHU, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFABLE, - Species.WIGGLYTUFF, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWRATH, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWBRO, - Species.MUK, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TYPHLOSION, - Species.FERALIGATR, - Species.FURRET, - Species.LEDIAN, - Species.AMPHAROS, - Species.AZUMARILL, - Species.POLITOED, - Species.QUAGSIRE, - Species.SLOWKING, - Species.GRANBULL, - Species.HERACROSS, - Species.URSARING, - Species.HITMONTOP, - Species.MILTANK, - Species.BLISSEY, - Species.TYRANITAR, - Species.SCEPTILE, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.SWAMPERT, - Species.LUDICOLO, - Species.SHIFTRY, - Species.GARDEVOIR, - Species.BRELOOM, - Species.VIGOROTH, - Species.SLAKING, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.MAWILE, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.GRUMPIG, - Species.CACTURNE, - Species.ZANGOOSE, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.GROUDON, - Species.RAYQUAZA, - Species.DEOXYS, - Species.MONFERNO, - Species.INFERNAPE, - Species.RAMPARDOS, - Species.FLOATZEL, - Species.LOPUNNY, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.ABOMASNOW, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.GALLADE, - Species.DUSKNOIR, - Species.DIALGA, - Species.PALKIA, - Species.REGIGIGAS, - Species.DARKRAI, - Species.ARCEUS, - Species.VICTINI, - Species.PIGNITE, - Species.EMBOAR, - Species.WATCHOG, - Species.SIMISAGE, - Species.SIMISEAR, - Species.SIMIPOUR, - Species.EXCADRILL, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.KROOKODILE, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.CARRACOSTA, - Species.ARCHEOPS, - Species.GARBODOR, - Species.ZOROARK, - Species.CINCCINO, - Species.GOTHITELLE, - Species.REUNICLUS, - Species.ESCAVALIER, - Species.HAXORUS, - Species.BEARTIC, - Species.ACCELGOR, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.BISHARP, - Species.HEATMOR, - Species.HYDREIGON, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.CHESNAUGHT, - Species.DELPHOX, - Species.PANGORO, - Species.BARBARACLE, - Species.DRAGALGE, - Species.CLAWITZER, - Species.HELIOLISK, - Species.HAWLUCHA, - Species.GOODRA, - Species.TREVENANT, - Species.GOURGEIST, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.HOOPA, - Species.VOLCANION, - Species.INCINEROAR, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.MUDSDALE, - Species.STUFFUL, - Species.BEWEAR, - Species.ORANGURU, - Species.PASSIMIAN, - Species.GOLISOPOD, - Species.TURTONATOR, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.SOLGALEO, - Species.LUNALA, - Species.PHEROMOSA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.ZERAORA, - Species.RILLABOOM, - Species.CINDERACE, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.GRIMMSNARL, - Species.MR_RIME, - Species.FALINKS, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.URSHIFU, - Species.SNEASLER, - Species.ENAMORUS, - Species.PAWMOT, - Species.ARMAROUGE, - Species.PALAFIN, - Species.ANNIHILAPE, - Species.KINGAMBIT, - Species.SCREAM_TAIL, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_THORNS, - Species.GHOLDENGO, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.IRON_LEAVES, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.IRON_CROWN, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSLASH, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_DARMANITAN, - Species.HISUI_TYPHLOSION, - Species.HISUI_SNEASEL, - Species.HISUI_ZOROARK, - Species.HISUI_DECIDUEYE, - Species.BLOODMOON_URSALUNA, + [MoveId.FOCUS_BLAST]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARIZARD, + SpeciesId.BLASTOISE, + SpeciesId.RAICHU, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFABLE, + SpeciesId.WIGGLYTUFF, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWRATH, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWBRO, + SpeciesId.MUK, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.FERALIGATR, + SpeciesId.FURRET, + SpeciesId.LEDIAN, + SpeciesId.AMPHAROS, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.GRANBULL, + SpeciesId.HERACROSS, + SpeciesId.URSARING, + SpeciesId.HITMONTOP, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.TYRANITAR, + SpeciesId.SCEPTILE, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.SWAMPERT, + SpeciesId.LUDICOLO, + SpeciesId.SHIFTRY, + SpeciesId.GARDEVOIR, + SpeciesId.BRELOOM, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.GRUMPIG, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.DEOXYS, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.RAMPARDOS, + SpeciesId.FLOATZEL, + SpeciesId.LOPUNNY, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.REGIGIGAS, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.WATCHOG, + SpeciesId.SIMISAGE, + SpeciesId.SIMISEAR, + SpeciesId.SIMIPOUR, + SpeciesId.EXCADRILL, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.KROOKODILE, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEOPS, + SpeciesId.GARBODOR, + SpeciesId.ZOROARK, + SpeciesId.CINCCINO, + SpeciesId.GOTHITELLE, + SpeciesId.REUNICLUS, + SpeciesId.ESCAVALIER, + SpeciesId.HAXORUS, + SpeciesId.BEARTIC, + SpeciesId.ACCELGOR, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.BISHARP, + SpeciesId.HEATMOR, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESNAUGHT, + SpeciesId.DELPHOX, + SpeciesId.PANGORO, + SpeciesId.BARBARACLE, + SpeciesId.DRAGALGE, + SpeciesId.CLAWITZER, + SpeciesId.HELIOLISK, + SpeciesId.HAWLUCHA, + SpeciesId.GOODRA, + SpeciesId.TREVENANT, + SpeciesId.GOURGEIST, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.INCINEROAR, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.MUDSDALE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.GOLISOPOD, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.PHEROMOSA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.RILLABOOM, + SpeciesId.CINDERACE, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.GRIMMSNARL, + SpeciesId.MR_RIME, + SpeciesId.FALINKS, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.URSHIFU, + SpeciesId.SNEASLER, + SpeciesId.ENAMORUS, + SpeciesId.PAWMOT, + SpeciesId.ARMAROUGE, + SpeciesId.PALAFIN, + SpeciesId.ANNIHILAPE, + SpeciesId.KINGAMBIT, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_THORNS, + SpeciesId.GHOLDENGO, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.IRON_LEAVES, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.ENERGY_BALL]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.BUTTERFREE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.TANGELA, - Species.MR_MIME, - Species.JYNX, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.SUNKERN, - Species.SUNFLORA, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.OCTILLERY, - Species.STANTLER, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.GARDEVOIR, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SABLEYE, - Species.MEDICHAM, - Species.ROSELIA, - Species.GRUMPIG, - Species.CACNEA, - Species.CACTURNE, - Species.LILEEP, - Species.CRADILY, - Species.CASTFORM, - Species.TROPIUS, - Species.CHIMECHO, - Species.LATIAS, - Species.LATIOS, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.BUDEW, - Species.ROSERADE, + [MoveId.ENERGY_BALL]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.BUTTERFREE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.TANGELA, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.OCTILLERY, + SpeciesId.STANTLER, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.GARDEVOIR, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SABLEYE, + SpeciesId.MEDICHAM, + SpeciesId.ROSELIA, + SpeciesId.GRUMPIG, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.CASTFORM, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "plant", ], - Species.MOTHIM, - Species.CHERUBI, - Species.CHERRIM, - Species.MISMAGIUS, - Species.CHINGLING, - Species.CARNIVINE, - Species.SNOVER, - Species.ABOMASNOW, - Species.TANGROWTH, - Species.LEAFEON, - Species.GALLADE, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.GIRATINA, - Species.CRESSELIA, - Species.MANAPHY, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.PANSAGE, - Species.SIMISAGE, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.MARACTUS, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.SHELMET, - Species.ACCELGOR, - Species.DURANT, - Species.VIRIZION, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.VIVILLON, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.HOOPA, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PRIMARINA, - Species.VIKAVOLT, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.SANDYGAST, - Species.PALOSSAND, - Species.DRAMPA, - Species.DHELMISE, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.XURKITREE, - Species.CELESTEELA, - Species.MAGEARNA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.DOTTLER, - Species.ORBEETLE, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.FLAPPLE, - Species.APPLETUN, - Species.MR_RIME, - Species.RUNERIGUS, - Species.ALCREMIE, - Species.INDEEDEE, - Species.ZARUDE, - Species.CALYREX, - Species.WYRDEER, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.OINKOLOGNE, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.ARMAROUGE, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RABSCA, - Species.ESPATHRA, - Species.GLIMMORA, - Species.FARIGIRAF, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.IRON_MOTH, - Species.WO_CHIEN, - Species.IRON_VALIANT, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OGERPON, - Species.HYDRAPPLE, - Species.TERAPAGOS, - Species.ALOLA_EXEGGUTOR, - Species.ETERNAL_FLOETTE, - Species.GALAR_MR_MIME, - Species.GALAR_YAMASK, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, + SpeciesId.MOTHIM, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.MISMAGIUS, + SpeciesId.CHINGLING, + SpeciesId.CARNIVINE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.TANGROWTH, + SpeciesId.LEAFEON, + SpeciesId.GALLADE, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.MANAPHY, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.MARACTUS, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.DURANT, + SpeciesId.VIRIZION, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.VIVILLON, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.HOOPA, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PRIMARINA, + SpeciesId.VIKAVOLT, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.MAGEARNA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.ALCREMIE, + SpeciesId.INDEEDEE, + SpeciesId.ZARUDE, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.OINKOLOGNE, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.ARMAROUGE, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RABSCA, + SpeciesId.ESPATHRA, + SpeciesId.GLIMMORA, + SpeciesId.FARIGIRAF, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.IRON_MOTH, + SpeciesId.WO_CHIEN, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OGERPON, + SpeciesId.HYDRAPPLE, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_YAMASK, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.BRAVE_BIRD]: [ - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.ZUBAT, - Species.GOLBAT, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CROBAT, - Species.MURKROW, - Species.DELIBIRD, - Species.SKARMORY, - Species.LUGIA, - Species.HO_OH, - Species.BLAZIKEN, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.SWABLU, - Species.ALTARIA, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.HONCHKROW, - Species.UNFEZANT, - Species.DUCKLETT, - Species.SWANNA, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.HAWLUCHA, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.TAPU_KOKO, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.CRAMORANT, - Species.SIRFETCHD, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.SQUAWKABILLY, - Species.WATTREL, - Species.KILOWATTREL, - Species.ESPATHRA, - Species.BOMBIRDIER, - Species.FLAMIGO, - Species.FEZANDIPITI, - Species.GALAR_FARFETCHD, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, + [MoveId.BRAVE_BIRD]: [ + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CROBAT, + SpeciesId.MURKROW, + SpeciesId.DELIBIRD, + SpeciesId.SKARMORY, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.BLAZIKEN, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.HONCHKROW, + SpeciesId.UNFEZANT, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.HAWLUCHA, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.TAPU_KOKO, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.CRAMORANT, + SpeciesId.SIRFETCHD, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.SQUAWKABILLY, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.ESPATHRA, + SpeciesId.BOMBIRDIER, + SpeciesId.FLAMIGO, + SpeciesId.FEZANDIPITI, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.EARTH_POWER]: [ - Species.VENUSAUR, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.DIGLETT, - Species.DUGTRIO, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.ONIX, - Species.CUBONE, - Species.MAROWAK, - Species.RHYHORN, - Species.RHYDON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.MEWTWO, - Species.MEW, - Species.SUDOWOODO, - Species.POLITOED, - Species.SUNKERN, - Species.SUNFLORA, - Species.WOOPER, - Species.QUAGSIRE, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SHUCKLE, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.PHANPY, - Species.DONPHAN, - Species.STANTLER, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.NOSEPASS, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.GRUMPIG, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.RELICANTH, - Species.REGIROCK, - Species.GROUDON, - Species.RAYQUAZA, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.SHELLOS, - Species.GASTRODON, - Species.BONSLY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.ABOMASNOW, - Species.RHYPERIOR, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PROBOPASS, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.SHAYMIN, - Species.ARCEUS, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DRILBUR, - Species.EXCADRILL, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.STUNFISK, - Species.GOLETT, - Species.GOLURK, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.TERRAKION, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.DIGGERSBY, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.CARBINK, - Species.ZYGARDE, - Species.DIANCIE, - Species.VOLCANION, - Species.ROCKRUFF, - Species.LYCANROC, - Species.MUDBRAY, - Species.MUDSDALE, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MINIOR, - Species.NECROZMA, - Species.RILLABOOM, - Species.DREDNAW, - Species.COALOSSAL, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CURSOLA, - Species.RUNERIGUS, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.DRACOVISH, - Species.REGIDRAGO, - Species.WYRDEER, - Species.URSALUNA, - Species.ENAMORUS, - Species.SKELEDIRGE, - Species.OINKOLOGNE, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.RABSCA, - Species.WIGLETT, - Species.WUGTRIO, - Species.ORTHWORM, - Species.GLIMMORA, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.BRUTE_BONNET, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_JUGULIS, - Species.IRON_THORNS, - Species.TING_LU, - Species.HYDRAPPLE, - Species.TERAPAGOS, + [MoveId.EARTH_POWER]: [ + SpeciesId.VENUSAUR, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.ONIX, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SHUCKLE, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.STANTLER, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.NOSEPASS, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.GRUMPIG, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.RELICANTH, + SpeciesId.REGIROCK, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.BONSLY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.ABOMASNOW, + SpeciesId.RHYPERIOR, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PROBOPASS, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.STUNFISK, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.TERRAKION, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.DIGGERSBY, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.CARBINK, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.VOLCANION, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MINIOR, + SpeciesId.NECROZMA, + SpeciesId.RILLABOOM, + SpeciesId.DREDNAW, + SpeciesId.COALOSSAL, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.REGIDRAGO, + SpeciesId.WYRDEER, + SpeciesId.URSALUNA, + SpeciesId.ENAMORUS, + SpeciesId.SKELEDIRGE, + SpeciesId.OINKOLOGNE, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.RABSCA, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMORA, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.BRUTE_BONNET, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_THORNS, + SpeciesId.TING_LU, + SpeciesId.HYDRAPPLE, + SpeciesId.TERAPAGOS, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "sandy", ], - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_MAROWAK, - Species.GALAR_CORSOLA, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.GIGA_IMPACT]: [ - Species.VENUSAUR, - Species.CHARIZARD, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEOT, - Species.RATICATE, - Species.FEAROW, - Species.ARBOK, - Species.RAICHU, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFABLE, - Species.NINETALES, - Species.WIGGLYTUFF, - Species.GOLBAT, - Species.VILEPLUME, - Species.PARASECT, - Species.VENOMOTH, - Species.DUGTRIO, - Species.PERSIAN, - Species.GOLDUCK, - Species.PRIMEAPE, - Species.ARCANINE, - Species.POLIWRATH, - Species.ALAKAZAM, - Species.MACHAMP, - Species.VICTREEBEL, - Species.TENTACRUEL, - Species.GOLEM, - Species.RAPIDASH, - Species.SLOWBRO, - Species.MAGNETON, - Species.DODRIO, - Species.DEWGONG, - Species.MUK, - Species.CLOYSTER, - Species.GENGAR, - Species.HYPNO, - Species.KINGLER, - Species.ELECTRODE, - Species.EXEGGUTOR, - Species.MAROWAK, - Species.LICKITUNG, - Species.WEEZING, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.SEADRA, - Species.SEAKING, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMASTAR, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.MEGANIUM, - Species.TYPHLOSION, - Species.FERALIGATR, - Species.FURRET, - Species.NOCTOWL, - Species.LEDIAN, - Species.ARIADOS, - Species.CROBAT, - Species.LANTURN, - Species.TOGETIC, - Species.XATU, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.JUMPLUFF, - Species.SUNFLORA, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.STEELIX, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.HERACROSS, - Species.SNEASEL, - Species.URSARING, - Species.MAGCARGO, - Species.PILOSWINE, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.HOUNDOOM, - Species.KINGDRA, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.SCEPTILE, - Species.BLAZIKEN, - Species.SWAMPERT, - Species.MIGHTYENA, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LUDICOLO, - Species.SHIFTRY, - Species.SWELLOW, - Species.PELIPPER, - Species.GARDEVOIR, - Species.MASQUERAIN, - Species.BRELOOM, - Species.SLAKING, - Species.NINJASK, - Species.SHEDINJA, - Species.EXPLOUD, - Species.HARIYAMA, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.MEDICHAM, - Species.MANECTRIC, - Species.SWALOT, - Species.SHARPEDO, - Species.WAILORD, - Species.CAMERUPT, - Species.TORKOAL, - Species.GRUMPIG, - Species.FLYGON, - Species.CACTURNE, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.WHISCASH, - Species.CRAWDAUNT, - Species.CLAYDOL, - Species.CRADILY, - Species.ARMALDO, - Species.MILOTIC, - Species.BANETTE, - Species.DUSCLOPS, - Species.TROPIUS, - Species.ABSOL, - Species.GLALIE, - Species.WALREIN, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TORTERRA, - Species.INFERNAPE, - Species.EMPOLEON, - Species.STARAPTOR, - Species.BIBAREL, - Species.KRICKETUNE, - Species.LUXRAY, - Species.ROSERADE, - Species.RAMPARDOS, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.FLOATZEL, - Species.CHERRIM, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFBLIM, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.PURUGLY, - Species.SKUNTANK, - Species.BRONZONG, - Species.SPIRITOMB, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.LUCARIO, - Species.HIPPOWDON, - Species.DRAPION, - Species.TOXICROAK, - Species.CARNIVINE, - Species.LUMINEON, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SERPERIOR, - Species.EMBOAR, - Species.SAMUROTT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.LIEPARD, - Species.SIMISAGE, - Species.SIMISEAR, - Species.SIMIPOUR, - Species.MUSHARNA, - Species.UNFEZANT, - Species.ZEBSTRIKA, - Species.GIGALITH, - Species.SWOOBAT, - Species.EXCADRILL, - Species.AUDINO, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.LEAVANNY, - Species.SCOLIPEDE, - Species.WHIMSICOTT, - Species.LILLIGANT, - Species.KROOKODILE, - Species.DARMANITAN, - Species.CRUSTLE, - Species.SCRAFTY, - Species.SIGILYPH, - Species.COFAGRIGUS, - Species.CARRACOSTA, - Species.ARCHEOPS, - Species.GARBODOR, - Species.ZOROARK, - Species.CINCCINO, - Species.GOTHITELLE, - Species.REUNICLUS, - Species.SWANNA, - Species.VANILLUXE, - Species.SAWSBUCK, - Species.ESCAVALIER, - Species.AMOONGUSS, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.GALVANTULA, - Species.FERROTHORN, - Species.KLINKLANG, - Species.EELEKTROSS, - Species.BEHEEYEM, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.BEARTIC, - Species.CRYOGONAL, - Species.ACCELGOR, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLURK, - Species.BISHARP, - Species.BOUFFALANT, - Species.BRAVIARY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.HYDREIGON, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESNAUGHT, - Species.DELPHOX, - Species.GRENINJA, - Species.DIGGERSBY, - Species.TALONFLAME, - Species.VIVILLON, - Species.PYROAR, - Species.FLORGES, - Species.GOGOAT, - Species.PANGORO, - Species.FURFROU, - Species.MEOWSTIC, - Species.AEGISLASH, - Species.AROMATISSE, - Species.SLURPUFF, - Species.MALAMAR, - Species.BARBARACLE, - Species.DRAGALGE, - Species.CLAWITZER, - Species.HELIOLISK, - Species.TYRANTRUM, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOODRA, - Species.KLEFKI, - Species.TREVENANT, - Species.GOURGEIST, - Species.AVALUGG, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.DECIDUEYE, - Species.INCINEROAR, - Species.PRIMARINA, - Species.GUMSHOOS, - Species.VIKAVOLT, - Species.CRABOMINABLE, - Species.RIBOMBEE, - Species.LYCANROC, - Species.TOXAPEX, - Species.MUDSDALE, - Species.LURANTIS, - Species.SHIINOTIC, - Species.SALAZZLE, - Species.BEWEAR, - Species.TSAREENA, - Species.ORANGURU, - Species.PASSIMIAN, - Species.GOLISOPOD, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.NAGANADEL, - Species.STAKATAKA, - Species.ZERAORA, - Species.MELMETAL, - Species.RILLABOOM, - Species.CINDERACE, - Species.INTELEON, - Species.GREEDENT, - Species.CORVIKNIGHT, - Species.ORBEETLE, - Species.THIEVUL, - Species.ELDEGOSS, - Species.DUBWOOL, - Species.DREDNAW, - Species.BOLTUND, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SANDACONDA, - Species.CRAMORANT, - Species.BARRASKEWDA, - Species.TOXTRICITY, - Species.CENTISKORCH, - Species.GRAPPLOCT, - Species.POLTEAGEIST, - Species.HATTERENE, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.MR_RIME, - Species.RUNERIGUS, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.MEOWSCARADA, - Species.SKELEDIRGE, - Species.QUAQUAVAL, - Species.OINKOLOGNE, - Species.SPIDOPS, - Species.LOKIX, - Species.PAWMOT, - Species.MAUSHOLD, - Species.DACHSBUN, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLSTACK, - Species.GARGANACL, - Species.BELLIBOLT, - Species.KILOWATTREL, - Species.MABOSSTIFF, - Species.GRAFAIAI, - Species.BRAMBLEGHAST, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.SCOVILLAIN, - Species.RABSCA, - Species.ESPATHRA, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.PALAFIN, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMORA, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.BAXCALIBUR, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSLASH, - Species.ALOLA_NINETALES, - Species.ALOLA_DUGTRIO, - Species.ALOLA_PERSIAN, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_LINOONE, - Species.GALAR_DARMANITAN, - Species.HISUI_ARCANINE, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.BLOODMOON_URSALUNA, + [MoveId.GIGA_IMPACT]: [ + SpeciesId.VENUSAUR, + SpeciesId.CHARIZARD, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEOT, + SpeciesId.RATICATE, + SpeciesId.FEAROW, + SpeciesId.ARBOK, + SpeciesId.RAICHU, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFABLE, + SpeciesId.NINETALES, + SpeciesId.WIGGLYTUFF, + SpeciesId.GOLBAT, + SpeciesId.VILEPLUME, + SpeciesId.PARASECT, + SpeciesId.VENOMOTH, + SpeciesId.DUGTRIO, + SpeciesId.PERSIAN, + SpeciesId.GOLDUCK, + SpeciesId.PRIMEAPE, + SpeciesId.ARCANINE, + SpeciesId.POLIWRATH, + SpeciesId.ALAKAZAM, + SpeciesId.MACHAMP, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACRUEL, + SpeciesId.GOLEM, + SpeciesId.RAPIDASH, + SpeciesId.SLOWBRO, + SpeciesId.MAGNETON, + SpeciesId.DODRIO, + SpeciesId.DEWGONG, + SpeciesId.MUK, + SpeciesId.CLOYSTER, + SpeciesId.GENGAR, + SpeciesId.HYPNO, + SpeciesId.KINGLER, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGUTOR, + SpeciesId.MAROWAK, + SpeciesId.LICKITUNG, + SpeciesId.WEEZING, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.SEADRA, + SpeciesId.SEAKING, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMASTAR, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.MEGANIUM, + SpeciesId.TYPHLOSION, + SpeciesId.FERALIGATR, + SpeciesId.FURRET, + SpeciesId.NOCTOWL, + SpeciesId.LEDIAN, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.LANTURN, + SpeciesId.TOGETIC, + SpeciesId.XATU, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.JUMPLUFF, + SpeciesId.SUNFLORA, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.STEELIX, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.URSARING, + SpeciesId.MAGCARGO, + SpeciesId.PILOSWINE, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.SCEPTILE, + SpeciesId.BLAZIKEN, + SpeciesId.SWAMPERT, + SpeciesId.MIGHTYENA, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LUDICOLO, + SpeciesId.SHIFTRY, + SpeciesId.SWELLOW, + SpeciesId.PELIPPER, + SpeciesId.GARDEVOIR, + SpeciesId.MASQUERAIN, + SpeciesId.BRELOOM, + SpeciesId.SLAKING, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.EXPLOUD, + SpeciesId.HARIYAMA, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.MEDICHAM, + SpeciesId.MANECTRIC, + SpeciesId.SWALOT, + SpeciesId.SHARPEDO, + SpeciesId.WAILORD, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.GRUMPIG, + SpeciesId.FLYGON, + SpeciesId.CACTURNE, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.WHISCASH, + SpeciesId.CRAWDAUNT, + SpeciesId.CLAYDOL, + SpeciesId.CRADILY, + SpeciesId.ARMALDO, + SpeciesId.MILOTIC, + SpeciesId.BANETTE, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.ABSOL, + SpeciesId.GLALIE, + SpeciesId.WALREIN, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TORTERRA, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.STARAPTOR, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.LUXRAY, + SpeciesId.ROSERADE, + SpeciesId.RAMPARDOS, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.FLOATZEL, + SpeciesId.CHERRIM, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFBLIM, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.PURUGLY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZONG, + SpeciesId.SPIRITOMB, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.LUCARIO, + SpeciesId.HIPPOWDON, + SpeciesId.DRAPION, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.LUMINEON, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SERPERIOR, + SpeciesId.EMBOAR, + SpeciesId.SAMUROTT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.LIEPARD, + SpeciesId.SIMISAGE, + SpeciesId.SIMISEAR, + SpeciesId.SIMIPOUR, + SpeciesId.MUSHARNA, + SpeciesId.UNFEZANT, + SpeciesId.ZEBSTRIKA, + SpeciesId.GIGALITH, + SpeciesId.SWOOBAT, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.LEAVANNY, + SpeciesId.SCOLIPEDE, + SpeciesId.WHIMSICOTT, + SpeciesId.LILLIGANT, + SpeciesId.KROOKODILE, + SpeciesId.DARMANITAN, + SpeciesId.CRUSTLE, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.COFAGRIGUS, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEOPS, + SpeciesId.GARBODOR, + SpeciesId.ZOROARK, + SpeciesId.CINCCINO, + SpeciesId.GOTHITELLE, + SpeciesId.REUNICLUS, + SpeciesId.SWANNA, + SpeciesId.VANILLUXE, + SpeciesId.SAWSBUCK, + SpeciesId.ESCAVALIER, + SpeciesId.AMOONGUSS, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.GALVANTULA, + SpeciesId.FERROTHORN, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTROSS, + SpeciesId.BEHEEYEM, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.ACCELGOR, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLURK, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.BRAVIARY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.HYDREIGON, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESNAUGHT, + SpeciesId.DELPHOX, + SpeciesId.GRENINJA, + SpeciesId.DIGGERSBY, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.PYROAR, + SpeciesId.FLORGES, + SpeciesId.GOGOAT, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.MEOWSTIC, + SpeciesId.AEGISLASH, + SpeciesId.AROMATISSE, + SpeciesId.SLURPUFF, + SpeciesId.MALAMAR, + SpeciesId.BARBARACLE, + SpeciesId.DRAGALGE, + SpeciesId.CLAWITZER, + SpeciesId.HELIOLISK, + SpeciesId.TYRANTRUM, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.TREVENANT, + SpeciesId.GOURGEIST, + SpeciesId.AVALUGG, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.DECIDUEYE, + SpeciesId.INCINEROAR, + SpeciesId.PRIMARINA, + SpeciesId.GUMSHOOS, + SpeciesId.VIKAVOLT, + SpeciesId.CRABOMINABLE, + SpeciesId.RIBOMBEE, + SpeciesId.LYCANROC, + SpeciesId.TOXAPEX, + SpeciesId.MUDSDALE, + SpeciesId.LURANTIS, + SpeciesId.SHIINOTIC, + SpeciesId.SALAZZLE, + SpeciesId.BEWEAR, + SpeciesId.TSAREENA, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.GOLISOPOD, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.ZERAORA, + SpeciesId.MELMETAL, + SpeciesId.RILLABOOM, + SpeciesId.CINDERACE, + SpeciesId.INTELEON, + SpeciesId.GREEDENT, + SpeciesId.CORVIKNIGHT, + SpeciesId.ORBEETLE, + SpeciesId.THIEVUL, + SpeciesId.ELDEGOSS, + SpeciesId.DUBWOOL, + SpeciesId.DREDNAW, + SpeciesId.BOLTUND, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXTRICITY, + SpeciesId.CENTISKORCH, + SpeciesId.GRAPPLOCT, + SpeciesId.POLTEAGEIST, + SpeciesId.HATTERENE, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.MEOWSCARADA, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAQUAVAL, + SpeciesId.OINKOLOGNE, + SpeciesId.SPIDOPS, + SpeciesId.LOKIX, + SpeciesId.PAWMOT, + SpeciesId.MAUSHOLD, + SpeciesId.DACHSBUN, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.BELLIBOLT, + SpeciesId.KILOWATTREL, + SpeciesId.MABOSSTIFF, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.SCOVILLAIN, + SpeciesId.RABSCA, + SpeciesId.ESPATHRA, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.PALAFIN, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMORA, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.BAXCALIBUR, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.BLOODMOON_URSALUNA, [ - Species.BASCULIN, + SpeciesId.BASCULIN, "blue-striped", "red-striped", ], ], - [Moves.NASTY_PLOT]: [ - Species.PIKACHU, - Species.RAICHU, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.ALAKAZAM, - Species.SLOWBRO, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.MR_MIME, - Species.JYNX, - Species.MEWTWO, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CROBAT, - Species.PICHU, - Species.TOGEPI, - Species.TOGETIC, - Species.AIPOM, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.SNEASEL, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.SMOOCHUM, - Species.CELEBI, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.PLUSLE, - Species.MINUN, - Species.GRUMPIG, - Species.CACNEA, - Species.CACTURNE, - Species.LUNATONE, - Species.CRAWDAUNT, - Species.CLAYDOL, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.AMBIPOM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.STUNKY, - Species.SKUNTANK, - Species.MIME_JR, - Species.CHATOT, - Species.SPIRITOMB, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.TOGEKISS, - Species.PORYGON_Z, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DARKRAI, - Species.PATRAT, - Species.WATCHOG, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.WOOBAT, - Species.SWOOBAT, - Species.YAMASK, - Species.COFAGRIGUS, - Species.ZORUA, - Species.ZOROARK, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.ELGYEM, - Species.BEHEEYEM, - Species.VULLABY, - Species.MANDIBUZZ, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.DELPHOX, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.INKAY, - Species.MALAMAR, - Species.GOURGEIST, - Species.HOOPA, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.SALANDIT, - Species.SALAZZLE, - Species.ORANGURU, - Species.POIPOLE, - Species.NAGANADEL, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.NICKIT, - Species.THIEVUL, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.PERRSERKER, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MORPEKO, - Species.ZARUDE, - Species.SPECTRIER, - Species.SNEASLER, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BOMBIRDIER, - Species.TATSUGIRI, - Species.FARIGIRAF, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.CHI_YU, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.HYDRAPPLE, - Species.PECHARUNT, - Species.ALOLA_RAICHU, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.GALAR_MEOWTH, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_YAMASK, + [MoveId.NASTY_PLOT]: [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWBRO, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CROBAT, + SpeciesId.PICHU, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.AIPOM, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.SNEASEL, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.SMOOCHUM, + SpeciesId.CELEBI, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.GRUMPIG, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.LUNATONE, + SpeciesId.CRAWDAUNT, + SpeciesId.CLAYDOL, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.AMBIPOM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.MIME_JR, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.TOGEKISS, + SpeciesId.PORYGON_Z, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DARKRAI, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.DELPHOX, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.GOURGEIST, + SpeciesId.HOOPA, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.ORANGURU, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.PERRSERKER, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MORPEKO, + SpeciesId.ZARUDE, + SpeciesId.SPECTRIER, + SpeciesId.SNEASLER, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BOMBIRDIER, + SpeciesId.TATSUGIRI, + SpeciesId.FARIGIRAF, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.CHI_YU, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.HYDRAPPLE, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_YAMASK, [ - Species.CALYREX, + SpeciesId.CALYREX, "shadow", ], - Species.HISUI_SNEASEL, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_DECIDUEYE, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.AVALANCHE]: [ - Species.BLASTOISE, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.RHYDON, - Species.KANGASKHAN, - Species.STARMIE, - Species.JYNX, - Species.GYARADOS, - Species.LAPRAS, - Species.ARTICUNO, - Species.MEWTWO, - Species.MEW, - Species.FERALIGATR, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SWINUB, - Species.PILOSWINE, - Species.DELIBIRD, - Species.SMOOCHUM, - Species.BLISSEY, - Species.SUICUNE, - Species.TYRANITAR, - Species.LUGIA, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.EXPLOUD, - Species.AGGRON, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.CRAWDAUNT, - Species.MILOTIC, - Species.CASTFORM, - Species.SNORUNT, - Species.GLALIE, - Species.WALREIN, - Species.REGICE, - Species.KYOGRE, - Species.RAYQUAZA, - Species.DEOXYS, - Species.EMPOLEON, - Species.RAMPARDOS, - Species.BASTIODON, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.RHYPERIOR, - Species.GLACEON, - Species.MAMOSWINE, - Species.FROSLASS, - Species.PALKIA, - Species.REGIGIGAS, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.AMAURA, - Species.AURORUS, - Species.BERGMITE, - Species.AVALUGG, - Species.CRABOMINABLE, - Species.MR_RIME, - Species.FROSMOTH, - Species.EISCUE, - Species.ARCTOZOLT, - Species.ARCTOVISH, - Species.GLASTRIER, - Species.URSALUNA, - Species.GARGANACL, - Species.CETODDLE, - Species.CETITAN, - Species.DONDOZO, - Species.IRON_BUNDLE, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.CHIEN_PAO, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_NINETALES, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, + [MoveId.AVALANCHE]: [ + SpeciesId.BLASTOISE, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.RHYDON, + SpeciesId.KANGASKHAN, + SpeciesId.STARMIE, + SpeciesId.JYNX, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.ARTICUNO, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.FERALIGATR, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.DELIBIRD, + SpeciesId.SMOOCHUM, + SpeciesId.BLISSEY, + SpeciesId.SUICUNE, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.EXPLOUD, + SpeciesId.AGGRON, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.CRAWDAUNT, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.WALREIN, + SpeciesId.REGICE, + SpeciesId.KYOGRE, + SpeciesId.RAYQUAZA, + SpeciesId.DEOXYS, + SpeciesId.EMPOLEON, + SpeciesId.RAMPARDOS, + SpeciesId.BASTIODON, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.RHYPERIOR, + SpeciesId.GLACEON, + SpeciesId.MAMOSWINE, + SpeciesId.FROSLASS, + SpeciesId.PALKIA, + SpeciesId.REGIGIGAS, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.CRABOMINABLE, + SpeciesId.MR_RIME, + SpeciesId.FROSMOTH, + SpeciesId.EISCUE, + SpeciesId.ARCTOZOLT, + SpeciesId.ARCTOVISH, + SpeciesId.GLASTRIER, + SpeciesId.URSALUNA, + SpeciesId.GARGANACL, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.DONDOZO, + SpeciesId.IRON_BUNDLE, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.CHIEN_PAO, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_NINETALES, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_SAMUROTT, - Species.HISUI_AVALUGG, - Species.BLOODMOON_URSALUNA, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_AVALUGG, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.SHADOW_CLAW]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.HAUNTER, - Species.GENGAR, - Species.RHYDON, - Species.KANGASKHAN, - Species.MEW, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.AIPOM, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.TYRANITAR, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.LINOONE, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.SHEDINJA, - Species.SABLEYE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.ZANGOOSE, - Species.ARMALDO, - Species.KECLEON, - Species.BANETTE, - Species.ABSOL, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METAGROSS, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.GROUDON, - Species.RAYQUAZA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PRINPLUP, - Species.EMPOLEON, - Species.AMBIPOM, - Species.GLAMEOW, - Species.PURUGLY, - Species.STUNKY, - Species.SKUNTANK, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.RHYPERIOR, - Species.GALLADE, - Species.DIALGA, - Species.PALKIA, - Species.GIRATINA, - Species.DARKRAI, - Species.ARCEUS, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.DRILBUR, - Species.EXCADRILL, - Species.LEAVANNY, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DWEBBLE, - Species.CRUSTLE, - Species.COFAGRIGUS, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.FERROTHORN, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.RUFFLET, - Species.BRAVIARY, - Species.HEATMOR, - Species.DURANT, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.PANCHAM, - Species.PANGORO, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.BINACLE, - Species.BARBARACLE, - Species.PHANTUMP, - Species.TREVENANT, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.SALANDIT, - Species.SALAZZLE, - Species.BEWEAR, - Species.GOLISOPOD, - Species.TYPE_NULL, - Species.SILVALLY, - Species.KOMALA, - Species.MIMIKYU, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.LUNALA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MARSHADOW, - Species.NAGANADEL, - Species.BLACEPHALON, - Species.THIEVUL, - Species.HATTERENE, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.RUNERIGUS, - Species.URSALUNA, - Species.SNEASLER, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.SKELEDIRGE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.CERULEDGE, - Species.GRAFAIAI, - Species.KLAWF, - Species.ANNIHILAPE, - Species.KINGAMBIT, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, + [MoveId.SHADOW_CLAW]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.RHYDON, + SpeciesId.KANGASKHAN, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.AIPOM, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.TYRANITAR, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.LINOONE, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.ZANGOOSE, + SpeciesId.ARMALDO, + SpeciesId.KECLEON, + SpeciesId.BANETTE, + SpeciesId.ABSOL, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METAGROSS, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.AMBIPOM, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.RHYPERIOR, + SpeciesId.GALLADE, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.GIRATINA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.LEAVANNY, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.COFAGRIGUS, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.FERROTHORN, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.BEWEAR, + SpeciesId.GOLISOPOD, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.KOMALA, + SpeciesId.MIMIKYU, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.LUNALA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MARSHADOW, + SpeciesId.NAGANADEL, + SpeciesId.BLACEPHALON, + SpeciesId.THIEVUL, + SpeciesId.HATTERENE, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.RUNERIGUS, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.SKELEDIRGE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.CERULEDGE, + SpeciesId.GRAFAIAI, + SpeciesId.KLAWF, + SpeciesId.ANNIHILAPE, + SpeciesId.KINGAMBIT, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_MEOWTH, - Species.GALAR_LINOONE, - Species.HISUI_TYPHLOSION, - Species.HISUI_SNEASEL, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, - Species.BLOODMOON_URSALUNA, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.THUNDER_FANG]: [ - Species.ARBOK, - Species.GROWLITHE, - Species.ARCANINE, - Species.RHYHORN, - Species.RHYDON, - Species.JOLTEON, - Species.AERODACTYL, - Species.MEW, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.DONPHAN, - Species.RAIKOU, - Species.TYRANITAR, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.EXPLOUD, - Species.MAWILE, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.SEVIPER, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.PACHIRISU, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.DRAPION, - Species.RHYPERIOR, - Species.GLISCOR, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.DRUDDIGON, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.ZEKROM, - Species.LITLEO, - Species.PYROAR, - Species.TYRUNT, - Species.TYRANTRUM, - Species.VOLCANION, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.ROCKRUFF, - Species.LYCANROC, - Species.SILVALLY, - Species.GREEDENT, - Species.THIEVUL, - Species.YAMPER, - Species.BOLTUND, - Species.SANDACONDA, - Species.TOXTRICITY, - Species.CENTISKORCH, - Species.MORPEKO, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.REGIDRAGO, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.FIDOUGH, - Species.DACHSBUN, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.CYCLIZAR, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.IRON_TREADS, - Species.IRON_THORNS, - Species.BAXCALIBUR, - Species.ROARING_MOON, - Species.KORAIDON, - Species.OKIDOGI, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, + [MoveId.THUNDER_FANG]: [ + SpeciesId.ARBOK, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.JOLTEON, + SpeciesId.AERODACTYL, + SpeciesId.MEW, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.DONPHAN, + SpeciesId.RAIKOU, + SpeciesId.TYRANITAR, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.EXPLOUD, + SpeciesId.MAWILE, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.SEVIPER, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.PACHIRISU, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.DRAPION, + SpeciesId.RHYPERIOR, + SpeciesId.GLISCOR, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.DRUDDIGON, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.ZEKROM, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.VOLCANION, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.SILVALLY, + SpeciesId.GREEDENT, + SpeciesId.THIEVUL, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.SANDACONDA, + SpeciesId.TOXTRICITY, + SpeciesId.CENTISKORCH, + SpeciesId.MORPEKO, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.REGIDRAGO, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.CYCLIZAR, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_THORNS, + SpeciesId.BAXCALIBUR, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.OKIDOGI, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, ], - [Moves.ICE_FANG]: [ - Species.ARBOK, - Species.RHYHORN, - Species.RHYDON, - Species.GYARADOS, - Species.AERODACTYL, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.SWINUB, - Species.PILOSWINE, - Species.DONPHAN, - Species.SUICUNE, - Species.TYRANITAR, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.EXPLOUD, - Species.MAWILE, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.CARVANHA, - Species.SHARPEDO, - Species.SEVIPER, - Species.SNORUNT, - Species.GLALIE, - Species.WALREIN, - Species.HUNTAIL, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUIZEL, - Species.FLOATZEL, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.DRAPION, - Species.RHYPERIOR, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.FROSLASS, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.BASCULIN, - Species.CUBCHOO, - Species.BEARTIC, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.TYRUNT, - Species.TYRANTRUM, - Species.BERGMITE, - Species.AVALUGG, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.SILVALLY, - Species.BRUXISH, - Species.GREEDENT, - Species.THIEVUL, - Species.CHEWTLE, - Species.DREDNAW, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.MORPEKO, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.REGIDRAGO, - Species.BASCULEGION, - Species.FIDOUGH, - Species.DACHSBUN, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.IRON_TREADS, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.CHIEN_PAO, - Species.KORAIDON, - Species.OKIDOGI, - Species.GALAR_SLOWBRO, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_STUNFISK, - Species.HISUI_AVALUGG, + [MoveId.ICE_FANG]: [ + SpeciesId.ARBOK, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.GYARADOS, + SpeciesId.AERODACTYL, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.DONPHAN, + SpeciesId.SUICUNE, + SpeciesId.TYRANITAR, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.EXPLOUD, + SpeciesId.MAWILE, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.SEVIPER, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.WALREIN, + SpeciesId.HUNTAIL, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.DRAPION, + SpeciesId.RHYPERIOR, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.FROSLASS, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.BASCULIN, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.SILVALLY, + SpeciesId.BRUXISH, + SpeciesId.GREEDENT, + SpeciesId.THIEVUL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.MORPEKO, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.REGIDRAGO, + SpeciesId.BASCULEGION, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.CHIEN_PAO, + SpeciesId.KORAIDON, + SpeciesId.OKIDOGI, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_AVALUGG, ], - [Moves.FIRE_FANG]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.EKANS, - Species.ARBOK, - Species.GROWLITHE, - Species.ARCANINE, - Species.RHYHORN, - Species.RHYDON, - Species.FLAREON, - Species.AERODACTYL, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.DONPHAN, - Species.ENTEI, - Species.TYRANITAR, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.EXPLOUD, - Species.MAWILE, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.SEVIPER, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.GROUDON, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.DRAPION, - Species.RHYPERIOR, - Species.GLISCOR, - Species.HEATRAN, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.DRUDDIGON, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.RESHIRAM, - Species.LITLEO, - Species.PYROAR, - Species.TYRUNT, - Species.TYRANTRUM, - Species.VOLCANION, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.ROCKRUFF, - Species.LYCANROC, - Species.SALANDIT, - Species.SALAZZLE, - Species.SILVALLY, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.GREEDENT, - Species.THIEVUL, - Species.YAMPER, - Species.BOLTUND, - Species.SANDACONDA, - Species.CENTISKORCH, - Species.MORPEKO, - Species.DRACOZOLT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.REGIDRAGO, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.FIDOUGH, - Species.DACHSBUN, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SCOVILLAIN, - Species.CYCLIZAR, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.IRON_JUGULIS, - Species.IRON_THORNS, - Species.ROARING_MOON, - Species.KORAIDON, - Species.WALKING_WAKE, - Species.OKIDOGI, - Species.GOUGING_FIRE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, + [MoveId.FIRE_FANG]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.FLAREON, + SpeciesId.AERODACTYL, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.DONPHAN, + SpeciesId.ENTEI, + SpeciesId.TYRANITAR, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.EXPLOUD, + SpeciesId.MAWILE, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.SEVIPER, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.GROUDON, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.DRAPION, + SpeciesId.RHYPERIOR, + SpeciesId.GLISCOR, + SpeciesId.HEATRAN, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.DRUDDIGON, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.RESHIRAM, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.VOLCANION, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.SILVALLY, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.GREEDENT, + SpeciesId.THIEVUL, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.SANDACONDA, + SpeciesId.CENTISKORCH, + SpeciesId.MORPEKO, + SpeciesId.DRACOZOLT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.REGIDRAGO, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SCOVILLAIN, + SpeciesId.CYCLIZAR, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_THORNS, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.OKIDOGI, + SpeciesId.GOUGING_FIRE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, ], - [Moves.PSYCHO_CUT]: [ - Species.KADABRA, - Species.ALAKAZAM, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGUTOR, - Species.STARMIE, - Species.SCYTHER, - Species.JYNX, - Species.KABUTOPS, - Species.MEWTWO, - Species.MEW, - Species.SCIZOR, - Species.SNEASEL, - Species.CELEBI, - Species.MEDITITE, - Species.MEDICHAM, - Species.SPINDA, - Species.ABSOL, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.WEAVILE, - Species.GALLADE, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.LIEPARD, - Species.WOOBAT, - Species.SWOOBAT, - Species.SIGILYPH, - Species.HAXORUS, - Species.PAWNIARD, - Species.BISHARP, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.INKAY, - Species.MALAMAR, - Species.DECIDUEYE, - Species.LURANTIS, - Species.TAPU_LELE, - Species.LUNALA, - Species.KARTANA, - Species.NECROZMA, - Species.ORBEETLE, - Species.HATTERENE, - Species.ZACIAN, - Species.SPECTRIER, - Species.KLEAVOR, - Species.CERULEDGE, - Species.VELUZA, - Species.IRON_VALIANT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.GALAR_RAPIDASH, - Species.GALAR_ARTICUNO, + [MoveId.PSYCHO_CUT]: [ + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGUTOR, + SpeciesId.STARMIE, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.KABUTOPS, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SCIZOR, + SpeciesId.SNEASEL, + SpeciesId.CELEBI, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SPINDA, + SpeciesId.ABSOL, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.WEAVILE, + SpeciesId.GALLADE, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.LIEPARD, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SIGILYPH, + SpeciesId.HAXORUS, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.DECIDUEYE, + SpeciesId.LURANTIS, + SpeciesId.TAPU_LELE, + SpeciesId.LUNALA, + SpeciesId.KARTANA, + SpeciesId.NECROZMA, + SpeciesId.ORBEETLE, + SpeciesId.HATTERENE, + SpeciesId.ZACIAN, + SpeciesId.SPECTRIER, + SpeciesId.KLEAVOR, + SpeciesId.CERULEDGE, + SpeciesId.VELUZA, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_ARTICUNO, [ - Species.CALYREX, + SpeciesId.CALYREX, "shadow", ], - Species.HISUI_SAMUROTT, - Species.HISUI_DECIDUEYE, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.ZEN_HEADBUTT]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.RATTATA, - Species.RATICATE, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.VENONAT, - Species.VENOMOTH, - Species.PSYDUCK, - Species.GOLDUCK, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GRIMER, - Species.MUK, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGUTOR, - Species.LICKITUNG, - Species.CHANSEY, - Species.MR_MIME, - Species.JYNX, - Species.TAUROS, - Species.LAPRAS, - Species.PORYGON, - Species.SNORLAX, - Species.MEWTWO, - Species.MEW, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CROBAT, - Species.CLEFFA, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.ESPEON, - Species.SLOWKING, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.PORYGON2, - Species.STANTLER, - Species.SMOOCHUM, - Species.MILTANK, - Species.BLISSEY, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.VOLBEAT, - Species.ILLUMISE, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.BALTOY, - Species.CLAYDOL, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.RELICANTH, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.BELDUM, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.GROUDON, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.HAPPINY, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.LICKILICKY, - Species.TOGEKISS, - Species.PORYGON_Z, - Species.GALLADE, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.REGIGIGAS, - Species.CRESSELIA, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.PATRAT, - Species.WATCHOG, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.THROH, - Species.SAWK, - Species.BASCULIN, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DEERLING, - Species.SAWSBUCK, - Species.ALOMOMOLA, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.GOLURK, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.BRAIXEN, - Species.DELPHOX, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.HAWLUCHA, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.HOOPA, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.ORANGURU, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TOGEDEMARU, - Species.TAPU_BULU, - Species.SOLGALEO, - Species.NIHILEGO, - Species.CELESTEELA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.CINDERACE, - Species.DOTTLER, - Species.ORBEETLE, - Species.DUBWOOL, - Species.APPLETUN, - Species.SANDACONDA, - Species.MR_RIME, - Species.RUNERIGUS, - Species.FALINKS, - Species.EISCUE, - Species.INDEEDEE, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.KUBFU, - Species.URSHIFU, - Species.GLASTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.ENAMORUS, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.LECHONK, - Species.OINKOLOGNE, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.VELUZA, - Species.DONDOZO, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.SLITHER_WING, - Species.IRON_TREADS, - Species.IRON_JUGULIS, - Species.BAXCALIBUR, - Species.WO_CHIEN, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.OGERPON, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.HISUI_TYPHLOSION, - Species.HISUI_BRAVIARY, - Species.PALDEA_TAUROS, + [MoveId.ZEN_HEADBUTT]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGUTOR, + SpeciesId.LICKITUNG, + SpeciesId.CHANSEY, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.TAUROS, + SpeciesId.LAPRAS, + SpeciesId.PORYGON, + SpeciesId.SNORLAX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CROBAT, + SpeciesId.CLEFFA, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.ESPEON, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.RELICANTH, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.BELDUM, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.GROUDON, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.HAPPINY, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.LICKILICKY, + SpeciesId.TOGEKISS, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.REGIGIGAS, + SpeciesId.CRESSELIA, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.BASCULIN, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.ALOMOMOLA, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.GOLURK, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.HAWLUCHA, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.HOOPA, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.ORANGURU, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TOGEDEMARU, + SpeciesId.TAPU_BULU, + SpeciesId.SOLGALEO, + SpeciesId.NIHILEGO, + SpeciesId.CELESTEELA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.CINDERACE, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.DUBWOOL, + SpeciesId.APPLETUN, + SpeciesId.SANDACONDA, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.FALINKS, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.GLASTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.ENAMORUS, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_JUGULIS, + SpeciesId.BAXCALIBUR, + SpeciesId.WO_CHIEN, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.OGERPON, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.PALDEA_TAUROS, ], - [Moves.FLASH_CANNON]: [ - Species.BLASTOISE, - Species.MAGNEMITE, - Species.MAGNETON, - Species.ONIX, - Species.HORSEA, - Species.SEADRA, - Species.STARYU, - Species.STARMIE, - Species.MEW, - Species.FORRETRESS, - Species.STEELIX, - Species.SCIZOR, - Species.OCTILLERY, - Species.SKARMORY, - Species.KINGDRA, - Species.NOSEPASS, - Species.MAWILE, - Species.AGGRON, - Species.NUMEL, - Species.CAMERUPT, - Species.SPOINK, - Species.GRUMPIG, - Species.ARMALDO, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.JIRACHI, - Species.DEOXYS, - Species.EMPOLEON, - Species.SHIELDON, - Species.BASTIODON, - Species.BRONZOR, - Species.BRONZONG, - Species.LUCARIO, - Species.MAGNEZONE, - Species.RHYPERIOR, - Species.PROBOPASS, - Species.DIALGA, - Species.HEATRAN, - Species.ARCEUS, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.SIGILYPH, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.BEHEEYEM, - Species.CRYOGONAL, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.DURANT, - Species.HYDREIGON, - Species.COBALION, - Species.THUNDURUS, - Species.ZEKROM, - Species.KYUREM, - Species.GENESECT, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.AMAURA, - Species.AURORUS, - Species.CARBINK, - Species.KLEFKI, - Species.BERGMITE, - Species.AVALUGG, - Species.XERNEAS, - Species.DIANCIE, - Species.VOLCANION, - Species.TOUCANNON, - Species.VIKAVOLT, - Species.SANDYGAST, - Species.PALOSSAND, - Species.SILVALLY, - Species.TURTONATOR, - Species.DHELMISE, - Species.KOMMO_O, - Species.SOLGALEO, - Species.CELESTEELA, - Species.NECROZMA, - Species.MAGEARNA, - Species.STAKATAKA, - Species.MELTAN, - Species.MELMETAL, - Species.CORVIKNIGHT, - Species.PERRSERKER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DURALUDON, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.ARMAROUGE, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.VAROOM, - Species.REVAVROOM, - Species.ORTHWORM, - Species.GLIMMORA, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.GHOLDENGO, - Species.MIRAIDON, - Species.ARCHALUDON, - Species.IRON_CROWN, + [MoveId.FLASH_CANNON]: [ + SpeciesId.BLASTOISE, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.ONIX, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MEW, + SpeciesId.FORRETRESS, + SpeciesId.STEELIX, + SpeciesId.SCIZOR, + SpeciesId.OCTILLERY, + SpeciesId.SKARMORY, + SpeciesId.KINGDRA, + SpeciesId.NOSEPASS, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.ARMALDO, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.EMPOLEON, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.LUCARIO, + SpeciesId.MAGNEZONE, + SpeciesId.RHYPERIOR, + SpeciesId.PROBOPASS, + SpeciesId.DIALGA, + SpeciesId.HEATRAN, + SpeciesId.ARCEUS, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.SIGILYPH, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.BEHEEYEM, + SpeciesId.CRYOGONAL, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.DURANT, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.THUNDURUS, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.GENESECT, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.CARBINK, + SpeciesId.KLEFKI, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.VOLCANION, + SpeciesId.TOUCANNON, + SpeciesId.VIKAVOLT, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.SILVALLY, + SpeciesId.TURTONATOR, + SpeciesId.DHELMISE, + SpeciesId.KOMMO_O, + SpeciesId.SOLGALEO, + SpeciesId.CELESTEELA, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.STAKATAKA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.CORVIKNIGHT, + SpeciesId.PERRSERKER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DURALUDON, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.ARMAROUGE, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMORA, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.GHOLDENGO, + SpeciesId.MIRAIDON, + SpeciesId.ARCHALUDON, + SpeciesId.IRON_CROWN, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "trash", ], - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.GALAR_MEOWTH, - Species.GALAR_STUNFISK, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, ], - [Moves.ROCK_CLIMB]: [ - Species.VENUSAUR, - Species.BLASTOISE, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.ARCANINE, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.ONIX, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.OMASTAR, - Species.KABUTOPS, - Species.SNORLAX, - Species.MEWTWO, - Species.MEW, - Species.MEGANIUM, - Species.TYPHLOSION, - Species.FERALIGATR, - Species.AMPHAROS, - Species.GLIGAR, - Species.STEELIX, - Species.GRANBULL, - Species.URSARING, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.TYRANITAR, - Species.SCEPTILE, - Species.BLAZIKEN, - Species.SWAMPERT, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LUDICOLO, - Species.VIGOROTH, - Species.SLAKING, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AGGRON, - Species.ZANGOOSE, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.GROUDON, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.EMPOLEON, - Species.BIDOOF, - Species.BIBAREL, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.LUCARIO, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.ABOMASNOW, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.GLISCOR, - Species.MAMOSWINE, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.DARKRAI, - Species.ARCEUS, - Species.DRILBUR, - Species.EXCADRILL, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.DRUDDIGON, - Species.BOUFFALANT, - Species.DURANT, - Species.ROCKRUFF, - Species.LYCANROC, - Species.OBSTAGOON, - Species.URSALUNA, - Species.ANNIHILAPE, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_MAROWAK, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.PALDEA_TAUROS, - Species.BLOODMOON_URSALUNA, + [MoveId.ROCK_CLIMB]: [ + SpeciesId.VENUSAUR, + SpeciesId.BLASTOISE, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.ARCANINE, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.ONIX, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.OMASTAR, + SpeciesId.KABUTOPS, + SpeciesId.SNORLAX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.MEGANIUM, + SpeciesId.TYPHLOSION, + SpeciesId.FERALIGATR, + SpeciesId.AMPHAROS, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.GRANBULL, + SpeciesId.URSARING, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.TYRANITAR, + SpeciesId.SCEPTILE, + SpeciesId.BLAZIKEN, + SpeciesId.SWAMPERT, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LUDICOLO, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AGGRON, + SpeciesId.ZANGOOSE, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.LUCARIO, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.ABOMASNOW, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.DRUDDIGON, + SpeciesId.BOUFFALANT, + SpeciesId.DURANT, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.OBSTAGOON, + SpeciesId.URSALUNA, + SpeciesId.ANNIHILAPE, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.PALDEA_TAUROS, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.DEFOG]: [ - Species.CHARIZARD, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.SPEAROW, - Species.FEAROW, - Species.ZUBAT, - Species.GOLBAT, - Species.VENOMOTH, - Species.FARFETCHD, - Species.SCYTHER, - Species.AERODACTYL, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDIAN, - Species.CROBAT, - Species.TOGETIC, - Species.XATU, - Species.YANMA, - Species.MURKROW, - Species.GLIGAR, - Species.SCIZOR, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.LUGIA, - Species.HO_OH, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.MASQUERAIN, - Species.NINJASK, - Species.VOLBEAT, - Species.ILLUMISE, - Species.VIBRAVA, - Species.FLYGON, - Species.SWABLU, - Species.ALTARIA, - Species.CASTFORM, - Species.TROPIUS, - Species.CHIMECHO, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.RAYQUAZA, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.MOTHIM, - Species.VESPIQUEN, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.HONCHKROW, - Species.STUNKY, - Species.SKUNTANK, - Species.CHATOT, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.TOGEKISS, - Species.YANMEGA, - Species.GLISCOR, - Species.ROTOM, - Species.GIRATINA, - Species.ARCEUS, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.SIGILYPH, - Species.ARCHEN, - Species.ARCHEOPS, - Species.DUCKLETT, - Species.SWANNA, - Species.EMOLGA, - Species.CRYOGONAL, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HYDREIGON, - Species.VOLCARONA, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.FLORGES, - Species.HAWLUCHA, - Species.KLEFKI, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.FOMANTIS, - Species.LURANTIS, - Species.COMFEY, - Species.SILVALLY, - Species.DRAMPA, - Species.TAPU_KOKO, - Species.TAPU_FINI, - Species.LUNALA, - Species.KARTANA, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.CRAMORANT, - Species.SIRFETCHD, - Species.FROSMOTH, - Species.KLEAVOR, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.HISUI_LILLIGANT, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, + [MoveId.DEFOG]: [ + SpeciesId.CHARIZARD, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.VENOMOTH, + SpeciesId.FARFETCHD, + SpeciesId.SCYTHER, + SpeciesId.AERODACTYL, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDIAN, + SpeciesId.CROBAT, + SpeciesId.TOGETIC, + SpeciesId.XATU, + SpeciesId.YANMA, + SpeciesId.MURKROW, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.MASQUERAIN, + SpeciesId.NINJASK, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.CASTFORM, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.RAYQUAZA, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.HONCHKROW, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.CHATOT, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.GLISCOR, + SpeciesId.ROTOM, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.SIGILYPH, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.EMOLGA, + SpeciesId.CRYOGONAL, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HYDREIGON, + SpeciesId.VOLCARONA, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.FLORGES, + SpeciesId.HAWLUCHA, + SpeciesId.KLEFKI, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.COMFEY, + SpeciesId.SILVALLY, + SpeciesId.DRAMPA, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_FINI, + SpeciesId.LUNALA, + SpeciesId.KARTANA, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.CRAMORANT, + SpeciesId.SIRFETCHD, + SpeciesId.FROSMOTH, + SpeciesId.KLEAVOR, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.TRICK_ROOM]: [ - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.PORYGON, - Species.MEWTWO, - Species.MEW, - Species.NATU, - Species.XATU, - Species.ESPEON, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PORYGON2, - Species.STANTLER, - Species.SMOOCHUM, - Species.CELEBI, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.MEDITITE, - Species.MEDICHAM, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.JIRACHI, - Species.DEOXYS, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.SPIRITOMB, - Species.PORYGON_Z, - Species.GALLADE, - Species.DUSKNOIR, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.CRESSELIA, - Species.ARCEUS, - Species.VICTINI, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.WHIMSICOTT, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.FRILLISH, - Species.JELLICENT, - Species.KLINKLANG, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.MELOETTA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.INKAY, - Species.MALAMAR, - Species.CARBINK, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.DIANCIE, - Species.HOOPA, - Species.COMFEY, - Species.ORANGURU, - Species.MIMIKYU, - Species.BRUXISH, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.NECROZMA, - Species.MAGEARNA, - Species.STAKATAKA, - Species.DOTTLER, - Species.ORBEETLE, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.MR_RIME, - Species.RUNERIGUS, - Species.INDEEDEE, - Species.CALYREX, - Species.WYRDEER, - Species.MEOWSCARADA, - Species.ARMAROUGE, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.FARIGIRAF, - Species.SCREAM_TAIL, - Species.FLUTTER_MANE, - Species.IRON_VALIANT, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.ALOLA_EXEGGUTOR, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_SLOWKING, - Species.GALAR_YAMASK, + [MoveId.TRICK_ROOM]: [ + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.PORYGON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.ESPEON, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.CELEBI, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.SPIRITOMB, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.CRESSELIA, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.WHIMSICOTT, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.KLINKLANG, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.MELOETTA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.CARBINK, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.STAKATAKA, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.INDEEDEE, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.MEOWSCARADA, + SpeciesId.ARMAROUGE, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.FARIGIRAF, + SpeciesId.SCREAM_TAIL, + SpeciesId.FLUTTER_MANE, + SpeciesId.IRON_VALIANT, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_YAMASK, ], - [Moves.DRACO_METEOR]: [ - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.KINGDRA, - Species.VIBRAVA, - Species.FLYGON, - Species.ALTARIA, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.RAYQUAZA, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.DIALGA, - Species.PALKIA, - Species.GIRATINA, - Species.ARCEUS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.DRUDDIGON, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.DRAGALGE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.NOIBAT, - Species.NOIVERN, - Species.ZYGARDE, - Species.SILVALLY, - Species.TURTONATOR, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.GUZZLORD, - Species.NAGANADEL, - Species.APPLIN, - Species.FLAPPLE, - Species.APPLETUN, - Species.DRACOZOLT, - Species.DRACOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ETERNATUS, - Species.REGIDRAGO, - Species.CYCLIZAR, - Species.TATSUGIRI, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.ROARING_MOON, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.DIPPLIN, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.ALOLA_EXEGGUTOR, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, + [MoveId.DRACO_METEOR]: [ + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.KINGDRA, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.ALTARIA, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.RAYQUAZA, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.DRUDDIGON, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.DRAGALGE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.ZYGARDE, + SpeciesId.SILVALLY, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.GUZZLORD, + SpeciesId.NAGANADEL, + SpeciesId.APPLIN, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.DRACOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ETERNATUS, + SpeciesId.REGIDRAGO, + SpeciesId.CYCLIZAR, + SpeciesId.TATSUGIRI, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.DIPPLIN, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, ], - [Moves.LEAF_STORM]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.TANGELA, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.SUNKERN, - Species.SUNFLORA, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.BRELOOM, - Species.ROSELIA, - Species.CACNEA, - Species.CACTURNE, - Species.TROPIUS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.BUDEW, - Species.ROSERADE, + [MoveId.LEAF_STORM]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.TANGELA, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.BRELOOM, + SpeciesId.ROSELIA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.TROPIUS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "plant", ], - Species.SNOVER, - Species.ABOMASNOW, - Species.TANGROWTH, - Species.LEAFEON, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.PANSAGE, - Species.SIMISAGE, - Species.LEAVANNY, - Species.PETILIL, - Species.LILLIGANT, - Species.MARACTUS, - Species.DEERLING, - Species.SAWSBUCK, - Species.FOONGUS, - Species.AMOONGUSS, - Species.VIRIZION, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.SKIDDO, - Species.GOGOAT, - Species.TREVENANT, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.FOMANTIS, - Species.LURANTIS, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.FLAPPLE, - Species.APPLETUN, - Species.ZARUDE, - Species.CALYREX, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.BRUTE_BONNET, - Species.WO_CHIEN, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OGERPON, - Species.HYDRAPPLE, - Species.SHAYMIN, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.TANGROWTH, + SpeciesId.LEAFEON, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.LEAVANNY, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.MARACTUS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.VIRIZION, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.TREVENANT, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.ZARUDE, + SpeciesId.CALYREX, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.BRUTE_BONNET, + SpeciesId.WO_CHIEN, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OGERPON, + SpeciesId.HYDRAPPLE, + SpeciesId.SHAYMIN, [ - Species.ROTOM, + SpeciesId.ROTOM, "mow", ], - Species.ALOLA_EXEGGUTOR, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.POWER_WHIP]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.EXEGGUTOR, - Species.LICKITUNG, - Species.TANGELA, - Species.GYARADOS, - Species.MEW, - Species.ROSELIA, - Species.CRADILY, - Species.ROSERADE, - Species.CARNIVINE, - Species.LICKILICKY, - Species.TANGROWTH, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.FERROTHORN, - Species.GOODRA, - Species.GOURGEIST, - Species.TSAREENA, - Species.DHELMISE, - Species.XURKITREE, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.HATTERENE, - Species.GRIMMSNARL, - Species.CUFANT, - Species.COPPERAJAH, - Species.ZARUDE, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.CYCLIZAR, - Species.WO_CHIEN, - Species.OGERPON, - Species.ALOLA_EXEGGUTOR, + [MoveId.POWER_WHIP]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.EXEGGUTOR, + SpeciesId.LICKITUNG, + SpeciesId.TANGELA, + SpeciesId.GYARADOS, + SpeciesId.MEW, + SpeciesId.ROSELIA, + SpeciesId.CRADILY, + SpeciesId.ROSERADE, + SpeciesId.CARNIVINE, + SpeciesId.LICKILICKY, + SpeciesId.TANGROWTH, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.FERROTHORN, + SpeciesId.GOODRA, + SpeciesId.GOURGEIST, + SpeciesId.TSAREENA, + SpeciesId.DHELMISE, + SpeciesId.XURKITREE, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.HATTERENE, + SpeciesId.GRIMMSNARL, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.ZARUDE, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.CYCLIZAR, + SpeciesId.WO_CHIEN, + SpeciesId.OGERPON, + SpeciesId.ALOLA_EXEGGUTOR, ], - [Moves.CROSS_POISON]: [ - Species.PARAS, - Species.PARASECT, - Species.MACHAMP, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SCYTHER, - Species.KABUTOPS, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.GLIGAR, - Species.SCIZOR, - Species.SCEPTILE, - Species.ANORITH, - Species.ARMALDO, - Species.VESPIQUEN, - Species.SKORUPI, - Species.DRAPION, - Species.TOXICROAK, - Species.GLISCOR, - Species.SCOLIPEDE, - Species.GARBODOR, - Species.JOLTIK, - Species.GALVANTULA, - Species.TOXAPEX, - Species.LURANTIS, - Species.SALAZZLE, - Species.NIHILEGO, - Species.NAGANADEL, - Species.OBSTAGOON, - Species.ETERNATUS, - Species.KLEAVOR, - Species.SHROODLE, - Species.GRAFAIAI, - Species.FEZANDIPITI, + [MoveId.CROSS_POISON]: [ + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.MACHAMP, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SCYTHER, + SpeciesId.KABUTOPS, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.SCEPTILE, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.VESPIQUEN, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.TOXICROAK, + SpeciesId.GLISCOR, + SpeciesId.SCOLIPEDE, + SpeciesId.GARBODOR, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.TOXAPEX, + SpeciesId.LURANTIS, + SpeciesId.SALAZZLE, + SpeciesId.NIHILEGO, + SpeciesId.NAGANADEL, + SpeciesId.OBSTAGOON, + SpeciesId.ETERNATUS, + SpeciesId.KLEAVOR, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.FEZANDIPITI, ], - [Moves.GUNK_SHOT]: [ - Species.EKANS, - Species.ARBOK, - Species.SANDSLASH, - Species.MEOWTH, - Species.PERSIAN, - Species.MANKEY, - Species.PRIMEAPE, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.KOFFING, - Species.WEEZING, - Species.SNORLAX, - Species.MEW, - Species.AIPOM, - Species.GLIGAR, - Species.QWILFISH, - Species.TEDDIURSA, - Species.URSARING, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.PHANPY, - Species.DONPHAN, - Species.ZIGZAGOON, - Species.LINOONE, - Species.PELIPPER, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.GULPIN, - Species.SWALOT, - Species.ZANGOOSE, - Species.SEVIPER, - Species.SHUPPET, - Species.BANETTE, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PACHIRISU, - Species.AMBIPOM, - Species.STUNKY, - Species.SKUNTANK, - Species.MUNCHLAX, - Species.CROAGUNK, - Species.TOXICROAK, - Species.GLISCOR, - Species.ARCEUS, - Species.PATRAT, - Species.WATCHOG, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.KROOKODILE, - Species.TRUBBISH, - Species.GARBODOR, - Species.MINCCINO, - Species.CINCCINO, - Species.DRUDDIGON, - Species.GENESECT, - Species.FROGADIER, - Species.GRENINJA, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.SKRELP, - Species.DRAGALGE, - Species.HOOPA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.MAREANIE, - Species.TOXAPEX, - Species.SALANDIT, - Species.SALAZZLE, - Species.PASSIMIAN, - Species.KOMALA, - Species.NIHILEGO, - Species.POIPOLE, - Species.NAGANADEL, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.TOXTRICITY, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.ETERNATUS, - Species.URSALUNA, - Species.SNEASLER, - Species.OVERQWIL, - Species.SHROODLE, - Species.GRAFAIAI, - Species.RELLOR, - Species.RABSCA, - Species.VAROOM, - Species.REVAVROOM, - Species.GLIMMET, - Species.GLIMMORA, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.PECHARUNT, + [MoveId.GUNK_SHOT]: [ + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.SANDSLASH, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.AIPOM, + SpeciesId.GLIGAR, + SpeciesId.QWILFISH, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.PELIPPER, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PACHIRISU, + SpeciesId.AMBIPOM, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.MUNCHLAX, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.GLISCOR, + SpeciesId.ARCEUS, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.KROOKODILE, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.DRUDDIGON, + SpeciesId.GENESECT, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.HOOPA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.PASSIMIAN, + SpeciesId.KOMALA, + SpeciesId.NIHILEGO, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.TOXTRICITY, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.ETERNATUS, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.PECHARUNT, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "trash", ], - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.GALAR_MEOWTH, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_SLOWKING, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.IRON_HEAD]: [ - Species.ARCANINE, - Species.GRAVELER, - Species.GOLEM, - Species.MAGNEMITE, - Species.MAGNETON, - Species.ONIX, - Species.CUBONE, - Species.MAROWAK, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.AERODACTYL, - Species.SNORLAX, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.FORRETRESS, - Species.STEELIX, - Species.SCIZOR, - Species.MANTINE, - Species.SKARMORY, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.MILTANK, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.HARIYAMA, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.MILOTIC, - Species.GLALIE, - Species.WALREIN, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.BELDUM, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.BRONZOR, - Species.BRONZONG, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.HIPPOWDON, - Species.MAGNEZONE, - Species.RHYPERIOR, - Species.MAMOSWINE, - Species.PROBOPASS, - Species.DIALGA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.ARCEUS, - Species.EMBOAR, - Species.STOUTLAND, - Species.GIGALITH, - Species.EXCADRILL, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.CARRACOSTA, - Species.ESCAVALIER, - Species.FERROSEED, - Species.FERROTHORN, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.BRAVIARY, - Species.DURANT, - Species.COBALION, - Species.TERRAKION, - Species.KYUREM, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.HAWLUCHA, - Species.CARBINK, - Species.AVALUGG, - Species.INCINEROAR, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.MUDBRAY, - Species.MUDSDALE, - Species.STUFFUL, - Species.BEWEAR, - Species.PASSIMIAN, - Species.GOLISOPOD, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.SOLGALEO, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.CELESTEELA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.STAKATAKA, - Species.MELMETAL, - Species.CINDERACE, - Species.CORVIKNIGHT, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.APPLETUN, - Species.SANDACONDA, - Species.PERRSERKER, - Species.FALINKS, - Species.EISCUE, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.KUBFU, - Species.URSHIFU, - Species.ENAMORUS, - Species.LECHONK, - Species.OINKOLOGNE, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CERULEDGE, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_THORNS, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.GHOLDENGO, - Species.ROARING_MOON, - Species.KORAIDON, - Species.OKIDOGI, - Species.ARCHALUDON, - Species.GOUGING_FIRE, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.TERAPAGOS, + [MoveId.IRON_HEAD]: [ + SpeciesId.ARCANINE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.ONIX, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.FORRETRESS, + SpeciesId.STEELIX, + SpeciesId.SCIZOR, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.MILTANK, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.HARIYAMA, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.MILOTIC, + SpeciesId.GLALIE, + SpeciesId.WALREIN, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.BELDUM, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.HIPPOWDON, + SpeciesId.MAGNEZONE, + SpeciesId.RHYPERIOR, + SpeciesId.MAMOSWINE, + SpeciesId.PROBOPASS, + SpeciesId.DIALGA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.EMBOAR, + SpeciesId.STOUTLAND, + SpeciesId.GIGALITH, + SpeciesId.EXCADRILL, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.CARRACOSTA, + SpeciesId.ESCAVALIER, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.BRAVIARY, + SpeciesId.DURANT, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.KYUREM, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.HAWLUCHA, + SpeciesId.CARBINK, + SpeciesId.AVALUGG, + SpeciesId.INCINEROAR, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.PASSIMIAN, + SpeciesId.GOLISOPOD, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.SOLGALEO, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.STAKATAKA, + SpeciesId.MELMETAL, + SpeciesId.CINDERACE, + SpeciesId.CORVIKNIGHT, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.APPLETUN, + SpeciesId.SANDACONDA, + SpeciesId.PERRSERKER, + SpeciesId.FALINKS, + SpeciesId.EISCUE, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ENAMORUS, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CERULEDGE, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_THORNS, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.GHOLDENGO, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.OKIDOGI, + SpeciesId.ARCHALUDON, + SpeciesId.GOUGING_FIRE, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "trash", ], - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GOLEM, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_DARMANITAN, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.PALDEA_TAUROS, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_TAUROS, ], - [Moves.STONE_EDGE]: [ - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.DIGLETT, - Species.DUGTRIO, - Species.MANKEY, - Species.PRIMEAPE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.ONIX, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.RHYHORN, - Species.RHYDON, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.SUDOWOODO, - Species.WOOPER, - Species.QUAGSIRE, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.GRANBULL, - Species.SHUCKLE, - Species.HERACROSS, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.PHANPY, - Species.DONPHAN, - Species.HITMONTOP, - Species.ENTEI, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.BLAZIKEN, - Species.SWAMPERT, - Species.BRELOOM, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.MAWILE, - Species.LAIRON, - Species.AGGRON, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CLAYDOL, - Species.CRADILY, - Species.ARMALDO, - Species.ABSOL, - Species.RELICANTH, - Species.SALAMENCE, - Species.METAGROSS, - Species.REGIROCK, - Species.GROUDON, - Species.RAYQUAZA, - Species.TORTERRA, - Species.INFERNAPE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.SHELLOS, - Species.GASTRODON, - Species.BONSLY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.TOXICROAK, - Species.RHYPERIOR, - Species.GLISCOR, - Species.MAMOSWINE, - Species.GALLADE, - Species.PROBOPASS, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.ARCEUS, - Species.PIGNITE, - Species.EMBOAR, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARMANITAN, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.BEARTIC, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.DURANT, - Species.HYDREIGON, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.BINACLE, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.HAWLUCHA, - Species.CARBINK, - Species.BERGMITE, - Species.AVALUGG, - Species.ZYGARDE, - Species.DIANCIE, - Species.VOLCANION, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.MUDBRAY, - Species.MUDSDALE, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MINIOR, - Species.TURTONATOR, - Species.TAPU_BULU, - Species.SOLGALEO, - Species.BUZZWOLE, - Species.CELESTEELA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MARSHADOW, - Species.STAKATAKA, - Species.DREDNAW, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CURSOLA, - Species.RUNERIGUS, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.ZAMAZENTA, - Species.URSHIFU, - Species.KLEAVOR, - Species.URSALUNA, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.KLAWF, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.BOMBIRDIER, - Species.GLIMMET, - Species.GLIMMORA, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.IRON_TREADS, - Species.IRON_THORNS, - Species.TING_LU, - Species.ROARING_MOON, - Species.ARCHALUDON, - Species.GOUGING_FIRE, - Species.IRON_BOULDER, - Species.TERAPAGOS, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_CORSOLA, - Species.GALAR_DARMANITAN, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_AVALUGG, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.STONE_EDGE]: [ + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.ONIX, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SUDOWOODO, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.GRANBULL, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.HITMONTOP, + SpeciesId.ENTEI, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.BLAZIKEN, + SpeciesId.SWAMPERT, + SpeciesId.BRELOOM, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.MAWILE, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CLAYDOL, + SpeciesId.CRADILY, + SpeciesId.ARMALDO, + SpeciesId.ABSOL, + SpeciesId.RELICANTH, + SpeciesId.SALAMENCE, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.TORTERRA, + SpeciesId.INFERNAPE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.BONSLY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.TOXICROAK, + SpeciesId.RHYPERIOR, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARMANITAN, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.BEARTIC, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.DURANT, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.HAWLUCHA, + SpeciesId.CARBINK, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.VOLCANION, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MINIOR, + SpeciesId.TURTONATOR, + SpeciesId.TAPU_BULU, + SpeciesId.SOLGALEO, + SpeciesId.BUZZWOLE, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MARSHADOW, + SpeciesId.STAKATAKA, + SpeciesId.DREDNAW, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.ZAMAZENTA, + SpeciesId.URSHIFU, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.KLAWF, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.BOMBIRDIER, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_THORNS, + SpeciesId.TING_LU, + SpeciesId.ROARING_MOON, + SpeciesId.ARCHALUDON, + SpeciesId.GOUGING_FIRE, + SpeciesId.IRON_BOULDER, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.STEALTH_ROCK]: [ - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.DIGLETT, - Species.DUGTRIO, - Species.PRIMEAPE, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.ONIX, - Species.CUBONE, - Species.MAROWAK, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.PINSIR, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.MEW, - Species.SUDOWOODO, - Species.WOOPER, - Species.QUAGSIRE, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SHUCKLE, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.SKARMORY, - Species.PHANPY, - Species.DONPHAN, - Species.MILTANK, - Species.BLISSEY, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.CELEBI, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.NOSEPASS, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.KECLEON, - Species.RELICANTH, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGISTEEL, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIDOOF, - Species.BIBAREL, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.SHELLOS, - Species.GASTRODON, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.RHYPERIOR, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PROBOPASS, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.HEATRAN, - Species.ARCEUS, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DRILBUR, - Species.EXCADRILL, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DWEBBLE, - Species.CRUSTLE, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.FERROSEED, - Species.FERROTHORN, - Species.STUNFISK, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.HYDREIGON, - Species.COBALION, - Species.TERRAKION, - Species.ZEKROM, - Species.LANDORUS, - Species.BINACLE, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.CARBINK, - Species.DIANCIE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.MUDBRAY, - Species.MUDSDALE, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MINIOR, - Species.KOMMO_O, - Species.NIHILEGO, - Species.NECROZMA, - Species.STAKATAKA, - Species.DREDNAW, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.SILICOBRA, - Species.SANDACONDA, - Species.PERRSERKER, - Species.CURSOLA, - Species.RUNERIGUS, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DURALUDON, - Species.KLEAVOR, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.KLAWF, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.BOMBIRDIER, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_THORNS, - Species.TING_LU, - Species.ARCHALUDON, - Species.TERAPAGOS, + [MoveId.STEALTH_ROCK]: [ + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.PRIMEAPE, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.ONIX, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.PINSIR, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.MEW, + SpeciesId.SUDOWOODO, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SHUCKLE, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.SKARMORY, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.CELEBI, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.NOSEPASS, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.KECLEON, + SpeciesId.RELICANTH, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.RHYPERIOR, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PROBOPASS, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.HEATRAN, + SpeciesId.ARCEUS, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.STUNFISK, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.CARBINK, + SpeciesId.DIANCIE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MINIOR, + SpeciesId.KOMMO_O, + SpeciesId.NIHILEGO, + SpeciesId.NECROZMA, + SpeciesId.STAKATAKA, + SpeciesId.DREDNAW, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DURALUDON, + SpeciesId.KLEAVOR, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.KLAWF, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.BOMBIRDIER, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_THORNS, + SpeciesId.TING_LU, + SpeciesId.ARCHALUDON, + SpeciesId.TERAPAGOS, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "sandy", "trash", ], - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_CORSOLA, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_AVALUGG, - Species.PALDEA_WOOPER, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_WOOPER, ], - [Moves.GRASS_KNOT]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.RATTATA, - Species.RATICATE, - Species.PIKACHU, - Species.RAICHU, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.GOLDUCK, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CHANSEY, - Species.TANGELA, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.SENTRET, - Species.FURRET, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.ESPEON, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.SMOOCHUM, - Species.BLISSEY, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SHROOMISH, - Species.BRELOOM, - Species.SKITTY, - Species.DELCATTY, - Species.MAWILE, - Species.MEDITITE, - Species.MEDICHAM, - Species.PLUSLE, - Species.MINUN, - Species.ROSELIA, - Species.SPOINK, - Species.GRUMPIG, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.KECLEON, - Species.TROPIUS, - Species.CHIMECHO, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIDOOF, - Species.BIBAREL, - Species.BUDEW, - Species.ROSERADE, + [MoveId.GRASS_KNOT]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.GOLDUCK, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.ESPEON, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.SMOOCHUM, + SpeciesId.BLISSEY, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.MAWILE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.ROSELIA, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.KECLEON, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "plant", ], - Species.PACHIRISU, - Species.CHERUBI, - Species.CHERRIM, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CARNIVINE, - Species.SNOVER, - Species.ABOMASNOW, - Species.TANGROWTH, - Species.TOGEKISS, - Species.LEAFEON, - Species.GALLADE, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.SCRAGGY, - Species.SCRAFTY, - Species.COFAGRIGUS, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.REUNICLUS, - Species.DEERLING, - Species.SAWSBUCK, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FERROTHORN, - Species.EELEKTROSS, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.BINACLE, - Species.BARBARACLE, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.HAWLUCHA, - Species.DEDENNE, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.XERNEAS, - Species.ZYGARDE, - Species.HOOPA, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.PASSIMIAN, - Species.TOGEDEMARU, - Species.DRAMPA, - Species.DHELMISE, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.NIHILEGO, - Species.XURKITREE, - Species.CELESTEELA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.ZERAORA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.FLAPPLE, - Species.APPLETUN, - Species.OBSTAGOON, - Species.MR_RIME, - Species.RUNERIGUS, - Species.ZARUDE, - Species.CALYREX, - Species.SNEASLER, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.PALAFIN, - Species.FARIGIRAF, - Species.KINGAMBIT, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.WO_CHIEN, - Species.IRON_VALIANT, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.MUNKIDORI, - Species.OGERPON, - Species.HYDRAPPLE, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_EXEGGUTOR, - Species.ETERNAL_FLOETTE, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZOROARK, - Species.HISUI_DECIDUEYE, + SpeciesId.PACHIRISU, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CARNIVINE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.TANGROWTH, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GALLADE, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.COFAGRIGUS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.REUNICLUS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FERROTHORN, + SpeciesId.EELEKTROSS, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.XERNEAS, + SpeciesId.ZYGARDE, + SpeciesId.HOOPA, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.PASSIMIAN, + SpeciesId.TOGEDEMARU, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.NIHILEGO, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.OBSTAGOON, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.ZARUDE, + SpeciesId.CALYREX, + SpeciesId.SNEASLER, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.PALAFIN, + SpeciesId.FARIGIRAF, + SpeciesId.KINGAMBIT, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.WO_CHIEN, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.MUNKIDORI, + SpeciesId.OGERPON, + SpeciesId.HYDRAPPLE, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.BUG_BITE]: [ - Species.CATERPIE, - Species.METAPOD, - Species.BUTTERFREE, - Species.WEEDLE, - Species.KAKUNA, - Species.BEEDRILL, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.SCYTHER, - Species.PINSIR, - Species.MEW, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.YANMA, - Species.PINECO, - Species.FORRETRESS, - Species.GLIGAR, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.WURMPLE, - Species.SILCOON, - Species.BEAUTIFLY, - Species.CASCOON, - Species.DUSTOX, - Species.SURSKIT, - Species.MASQUERAIN, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.VOLBEAT, - Species.ILLUMISE, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.ANORITH, - Species.ARMALDO, - Species.KRICKETOT, - Species.KRICKETUNE, - Species.BURMY, - Species.WORMADAM, - Species.MOTHIM, - Species.COMBEE, - Species.VESPIQUEN, - Species.SKORUPI, - Species.DRAPION, - Species.CARNIVINE, - Species.YANMEGA, - Species.GLISCOR, - Species.HEATRAN, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.DWEBBLE, - Species.CRUSTLE, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.JOLTIK, - Species.GALVANTULA, - Species.SHELMET, - Species.ACCELGOR, - Species.HEATMOR, - Species.DURANT, - Species.LARVESTA, - Species.VOLCARONA, - Species.GENESECT, - Species.SCATTERBUG, - Species.SPEWPA, - Species.VIVILLON, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.GOLISOPOD, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.SNOM, - Species.FROSMOTH, - Species.KLEAVOR, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.RELLOR, - Species.RABSCA, - Species.SLITHER_WING, - Species.DIPPLIN, - Species.HYDRAPPLE, + [MoveId.BUG_BITE]: [ + SpeciesId.CATERPIE, + SpeciesId.METAPOD, + SpeciesId.BUTTERFREE, + SpeciesId.WEEDLE, + SpeciesId.KAKUNA, + SpeciesId.BEEDRILL, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.SCYTHER, + SpeciesId.PINSIR, + SpeciesId.MEW, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.YANMA, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.WURMPLE, + SpeciesId.SILCOON, + SpeciesId.BEAUTIFLY, + SpeciesId.CASCOON, + SpeciesId.DUSTOX, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.KRICKETOT, + SpeciesId.KRICKETUNE, + SpeciesId.BURMY, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.COMBEE, + SpeciesId.VESPIQUEN, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CARNIVINE, + SpeciesId.YANMEGA, + SpeciesId.GLISCOR, + SpeciesId.HEATRAN, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.GENESECT, + SpeciesId.SCATTERBUG, + SpeciesId.SPEWPA, + SpeciesId.VIVILLON, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.GOLISOPOD, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.KLEAVOR, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.SLITHER_WING, + SpeciesId.DIPPLIN, + SpeciesId.HYDRAPPLE, ], - [Moves.CHARGE_BEAM]: [ - Species.RATTATA, - Species.RATICATE, - Species.PIKACHU, - Species.RAICHU, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MAGNEMITE, - Species.MAGNETON, - Species.VOLTORB, - Species.ELECTRODE, - Species.CHANSEY, - Species.MR_MIME, - Species.ELECTABUZZ, - Species.JOLTEON, - Species.PORYGON, - Species.ZAPDOS, - Species.MEWTWO, - Species.MEW, - Species.SENTRET, - Species.FURRET, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.REMORAID, - Species.OCTILLERY, - Species.PORYGON2, - Species.STANTLER, - Species.ELEKID, - Species.BLISSEY, - Species.RAIKOU, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.ZIGZAGOON, - Species.LINOONE, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SKITTY, - Species.DELCATTY, - Species.MAWILE, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.SPOINK, - Species.GRUMPIG, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.ABSOL, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.DEOXYS, - Species.BIDOOF, - Species.BIBAREL, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.PACHIRISU, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.MAGNEZONE, - Species.ELECTIVIRE, - Species.PORYGON_Z, - Species.GALLADE, - Species.DUSKNOIR, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.GIRATINA, - Species.CRESSELIA, - Species.DARKRAI, - Species.ARCEUS, - Species.VICTINI, - Species.MUNNA, - Species.MUSHARNA, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.SIGILYPH, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.EMOLGA, - Species.JOLTIK, - Species.GALVANTULA, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.TYNAMO, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.DRUDDIGON, - Species.GOLURK, - Species.HYDREIGON, - Species.THUNDURUS, - Species.ZEKROM, - Species.MELOETTA, - Species.GENESECT, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.AMAURA, - Species.AURORUS, - Species.DEDENNE, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.HOOPA, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.SHIINOTIC, - Species.ORANGURU, - Species.MINIOR, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.TAPU_LELE, - Species.LUNALA, - Species.NIHILEGO, - Species.XURKITREE, - Species.NECROZMA, - Species.MAGEARNA, - Species.TOXTRICITY, - Species.PINCURCHIN, - Species.MORPEKO, - Species.REGIELEKI, - Species.WYRDEER, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.FARIGIRAF, - Species.FLUTTER_MANE, - Species.SANDY_SHOCKS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.GHOLDENGO, - Species.IRON_VALIANT, - Species.MIRAIDON, - Species.RAGING_BOLT, - Species.ALOLA_RAICHU, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, + [MoveId.CHARGE_BEAM]: [ + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.CHANSEY, + SpeciesId.MR_MIME, + SpeciesId.ELECTABUZZ, + SpeciesId.JOLTEON, + SpeciesId.PORYGON, + SpeciesId.ZAPDOS, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.ELEKID, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.MAWILE, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.PACHIRISU, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.MAGNEZONE, + SpeciesId.ELECTIVIRE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.SIGILYPH, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.EMOLGA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.TYNAMO, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.DRUDDIGON, + SpeciesId.GOLURK, + SpeciesId.HYDREIGON, + SpeciesId.THUNDURUS, + SpeciesId.ZEKROM, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.DEDENNE, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.HOOPA, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.SHIINOTIC, + SpeciesId.ORANGURU, + SpeciesId.MINIOR, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.TAPU_LELE, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.XURKITREE, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.TOXTRICITY, + SpeciesId.PINCURCHIN, + SpeciesId.MORPEKO, + SpeciesId.REGIELEKI, + SpeciesId.WYRDEER, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.FARIGIRAF, + SpeciesId.FLUTTER_MANE, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.GHOLDENGO, + SpeciesId.IRON_VALIANT, + SpeciesId.MIRAIDON, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, ], - [Moves.HONE_CLAWS]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.PARAS, - Species.PARASECT, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.KRABBY, - Species.KINGLER, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.DRAGONITE, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.SPINARAK, - Species.ARIADOS, - Species.AIPOM, - Species.GLIGAR, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.TYRANITAR, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOMBRE, - Species.LUDICOLO, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.SABLEYE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.FLYGON, - Species.ALTARIA, - Species.ZANGOOSE, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.ANORITH, - Species.ARMALDO, - Species.KECLEON, - Species.ABSOL, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.GROUDON, - Species.RAYQUAZA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PRINPLUP, - Species.EMPOLEON, - Species.KRICKETUNE, - Species.VESPIQUEN, - Species.AMBIPOM, - Species.GLAMEOW, - Species.PURUGLY, - Species.STUNKY, - Species.SKUNTANK, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.LUCARIO, - Species.SKORUPI, - Species.DRAPION, - Species.WEAVILE, - Species.GLISCOR, - Species.DIALGA, - Species.PALKIA, - Species.GIRATINA, - Species.ARCEUS, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.DRILBUR, - Species.EXCADRILL, - Species.LEAVANNY, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DWEBBLE, - Species.CRUSTLE, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.FERROSEED, - Species.FERROTHORN, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.RUFFLET, - Species.BRAVIARY, - Species.HEATMOR, - Species.DURANT, - Species.COBALION, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.MELOETTA, - Species.GENESECT, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.TALONFLAME, - Species.PANGORO, - Species.BINACLE, - Species.BARBARACLE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.TYRUNT, - Species.TYRANTRUM, - Species.HAWLUCHA, - Species.TREVENANT, - Species.NOIVERN, - Species.YVELTAL, - Species.MIMIKYU, - Species.ZERAORA, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.NICKIT, - Species.THIEVUL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.DURALUDON, - Species.URSALUNA, - Species.SNEASLER, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.BOMBIRDIER, - Species.KINGAMBIT, - Species.WALKING_WAKE, - Species.ARCHALUDON, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.GALAR_MEOWTH, - Species.GALAR_LINOONE, - Species.HISUI_SNEASEL, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, + [MoveId.HONE_CLAWS]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.AIPOM, + SpeciesId.GLIGAR, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.TYRANITAR, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.FLYGON, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.KECLEON, + SpeciesId.ABSOL, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.KRICKETUNE, + SpeciesId.VESPIQUEN, + SpeciesId.AMBIPOM, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.LUCARIO, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.WEAVILE, + SpeciesId.GLISCOR, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.LEAVANNY, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.COBALION, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.TALONFLAME, + SpeciesId.PANGORO, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.HAWLUCHA, + SpeciesId.TREVENANT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.MIMIKYU, + SpeciesId.ZERAORA, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.DURALUDON, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.BOMBIRDIER, + SpeciesId.KINGAMBIT, + SpeciesId.WALKING_WAKE, + SpeciesId.ARCHALUDON, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.WONDER_ROOM]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.PSYDUCK, - Species.GOLDUCK, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.PORYGON, - Species.MEWTWO, - Species.MEW, - Species.CLEFFA, - Species.UMBREON, - Species.SLOWKING, - Species.MISDREAVUS, - Species.PORYGON2, - Species.SMOOCHUM, - Species.LUGIA, - Species.CELEBI, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SABLEYE, - Species.ALTARIA, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.KECLEON, - Species.DUSKULL, - Species.DUSCLOPS, - Species.LATIOS, - Species.DEOXYS, - Species.MISMAGIUS, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.SPIRITOMB, - Species.PORYGON_Z, - Species.GALLADE, - Species.DUSKNOIR, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DARKRAI, - Species.MUNNA, - Species.MUSHARNA, - Species.YAMASK, - Species.COFAGRIGUS, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.MELOETTA, - Species.BRAIXEN, - Species.DELPHOX, - Species.ESPURR, - Species.MEOWSTIC, - Species.CARBINK, - Species.XERNEAS, - Species.DIANCIE, - Species.HOOPA, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.MORELULL, - Species.SHIINOTIC, - Species.ORANGURU, - Species.BRUXISH, - Species.TAPU_LELE, - Species.TAPU_FINI, - Species.LUNALA, - Species.NIHILEGO, - Species.STAKATAKA, - Species.DOTTLER, - Species.ORBEETLE, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATTERENE, - Species.GRIMMSNARL, - Species.MR_RIME, - Species.RUNERIGUS, - Species.ALCREMIE, - Species.STONJOURNER, - Species.INDEEDEE, - Species.CALYREX, - Species.ALOLA_NINETALES, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.GALAR_YAMASK, + [MoveId.WONDER_ROOM]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.PORYGON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CLEFFA, + SpeciesId.UMBREON, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.PORYGON2, + SpeciesId.SMOOCHUM, + SpeciesId.LUGIA, + SpeciesId.CELEBI, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SABLEYE, + SpeciesId.ALTARIA, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.KECLEON, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.LATIOS, + SpeciesId.DEOXYS, + SpeciesId.MISMAGIUS, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.SPIRITOMB, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DARKRAI, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.MELOETTA, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.CARBINK, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.ORANGURU, + SpeciesId.BRUXISH, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_FINI, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.STAKATAKA, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATTERENE, + SpeciesId.GRIMMSNARL, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.ALCREMIE, + SpeciesId.STONJOURNER, + SpeciesId.INDEEDEE, + SpeciesId.CALYREX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_YAMASK, ], - [Moves.PSYSHOCK]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PSYDUCK, - Species.GOLDUCK, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.PORYGON, - Species.MEWTWO, - Species.MEW, - Species.CLEFFA, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.ESPEON, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PORYGON2, - Species.STANTLER, - Species.SMOOCHUM, - Species.LUGIA, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.MEDITITE, - Species.MEDICHAM, - Species.SPOINK, - Species.GRUMPIG, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.CHIMECHO, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.DEOXYS, - Species.MISMAGIUS, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.SPIRITOMB, - Species.TOGEKISS, - Species.PORYGON_Z, - Species.GALLADE, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.DARKRAI, - Species.ARCEUS, - Species.VICTINI, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.SIGILYPH, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.MELOETTA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.ESPURR, - Species.MEOWSTIC, - Species.AROMATISSE, - Species.INKAY, - Species.MALAMAR, - Species.SYLVEON, - Species.KLEFKI, - Species.XERNEAS, - Species.DIANCIE, - Species.HOOPA, - Species.ORANGURU, - Species.BRUXISH, - Species.TAPU_LELE, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.NECROZMA, - Species.MAGEARNA, - Species.BLACEPHALON, - Species.DOTTLER, - Species.ORBEETLE, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.MR_RIME, - Species.ALCREMIE, - Species.INDEEDEE, - Species.CALYREX, - Species.WYRDEER, - Species.ARMAROUGE, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.FARIGIRAF, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.FLUTTER_MANE, - Species.GHOLDENGO, - Species.IRON_VALIANT, - Species.MUNKIDORI, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.ALOLA_RAICHU, - Species.ALOLA_NINETALES, - Species.ALOLA_EXEGGUTOR, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_SLOWKING, - Species.HISUI_BRAVIARY, + [MoveId.PSYSHOCK]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.PORYGON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CLEFFA, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.ESPEON, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.LUGIA, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.CHIMECHO, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.MISMAGIUS, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.SPIRITOMB, + SpeciesId.TOGEKISS, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.SIGILYPH, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.MELOETTA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.AROMATISSE, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.SYLVEON, + SpeciesId.KLEFKI, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.ORANGURU, + SpeciesId.BRUXISH, + SpeciesId.TAPU_LELE, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.BLACEPHALON, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.MR_RIME, + SpeciesId.ALCREMIE, + SpeciesId.INDEEDEE, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.ARMAROUGE, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.FARIGIRAF, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.FLUTTER_MANE, + SpeciesId.GHOLDENGO, + SpeciesId.IRON_VALIANT, + SpeciesId.MUNKIDORI, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.VENOSHOCK]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.EKANS, - Species.ARBOK, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.KOFFING, - Species.WEEZING, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.BELLOSSOM, - Species.PINECO, - Species.FORRETRESS, - Species.GLIGAR, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.SHROOMISH, - Species.BRELOOM, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CACNEA, - Species.CACTURNE, - Species.SEVIPER, - Species.BUDEW, - Species.ROSERADE, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.STUNKY, - Species.SKUNTANK, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.GLISCOR, - Species.SEISMITOAD, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.TRUBBISH, - Species.GARBODOR, - Species.FOONGUS, - Species.AMOONGUSS, - Species.SHELMET, - Species.ACCELGOR, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.MAREANIE, - Species.TOXAPEX, - Species.SALANDIT, - Species.SALAZZLE, - Species.GOLISOPOD, - Species.TURTONATOR, - Species.BRUXISH, - Species.NIHILEGO, - Species.POIPOLE, - Species.NAGANADEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.PINCURCHIN, - Species.ETERNATUS, - Species.SNEASLER, - Species.OVERQWIL, - Species.SHROODLE, - Species.GRAFAIAI, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.VAROOM, - Species.REVAVROOM, - Species.GLIMMET, - Species.GLIMMORA, - Species.CLODSIRE, - Species.BRUTE_BONNET, - Species.IRON_MOTH, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.PECHARUNT, - Species.ALOLA_RATICATE, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_SLOWKING, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.PALDEA_WOOPER, + [MoveId.VENOSHOCK]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.BELLOSSOM, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.GLIGAR, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SEVIPER, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.GLISCOR, + SpeciesId.SEISMITOAD, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.GOLISOPOD, + SpeciesId.TURTONATOR, + SpeciesId.BRUXISH, + SpeciesId.NIHILEGO, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.PINCURCHIN, + SpeciesId.ETERNATUS, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.CLODSIRE, + SpeciesId.BRUTE_BONNET, + SpeciesId.IRON_MOTH, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.PALDEA_WOOPER, ], - [Moves.MAGIC_ROOM]: [ - Species.WIGGLYTUFF, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.DROWZEE, - Species.HYPNO, - Species.MR_MIME, - Species.JYNX, - Species.MEWTWO, - Species.MEW, - Species.NATU, - Species.XATU, - Species.ESPEON, - Species.MISDREAVUS, - Species.STANTLER, - Species.SMOOCHUM, - Species.CELEBI, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.LUNATONE, - Species.SHUPPET, - Species.BANETTE, - Species.LATIAS, - Species.JIRACHI, - Species.MISMAGIUS, - Species.MIME_JR, - Species.GALLADE, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.SIGILYPH, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.MELOETTA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.ESPURR, - Species.MEOWSTIC, - Species.KLEFKI, - Species.HOOPA, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.MORELULL, - Species.SHIINOTIC, - Species.ORANGURU, - Species.MIMIKYU, - Species.BRUXISH, - Species.TAPU_LELE, - Species.TAPU_FINI, - Species.LUNALA, - Species.STAKATAKA, - Species.DOTTLER, - Species.ORBEETLE, - Species.HATTERENE, - Species.MR_RIME, - Species.ALCREMIE, - Species.INDEEDEE, - Species.CALYREX, - Species.ALOLA_RAICHU, - Species.GALAR_RAPIDASH, - Species.GALAR_MR_MIME, + [MoveId.MAGIC_ROOM]: [ + SpeciesId.WIGGLYTUFF, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.ESPEON, + SpeciesId.MISDREAVUS, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.CELEBI, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.LUNATONE, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.LATIAS, + SpeciesId.JIRACHI, + SpeciesId.MISMAGIUS, + SpeciesId.MIME_JR, + SpeciesId.GALLADE, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.SIGILYPH, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.MELOETTA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.KLEFKI, + SpeciesId.HOOPA, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.ORANGURU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_FINI, + SpeciesId.LUNALA, + SpeciesId.STAKATAKA, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.HATTERENE, + SpeciesId.MR_RIME, + SpeciesId.ALCREMIE, + SpeciesId.INDEEDEE, + SpeciesId.CALYREX, + SpeciesId.ALOLA_RAICHU, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_MR_MIME, ], - [Moves.SMACK_DOWN]: [ - Species.BLASTOISE, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.DIGLETT, - Species.DUGTRIO, - Species.MANKEY, - Species.PRIMEAPE, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.ONIX, - Species.CUBONE, - Species.MAROWAK, - Species.RHYHORN, - Species.RHYDON, - Species.PINSIR, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.MEW, - Species.SUDOWOODO, - Species.AIPOM, - Species.STEELIX, - Species.SHUCKLE, - Species.HERACROSS, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.REMORAID, - Species.OCTILLERY, - Species.PHANPY, - Species.DONPHAN, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.SLAKING, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.AGGRON, - Species.CAMERUPT, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.RELICANTH, - Species.REGIROCK, - Species.GROUDON, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.MONFERNO, - Species.INFERNAPE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.AMBIPOM, - Species.BONSLY, - Species.RHYPERIOR, - Species.MAMOSWINE, - Species.PROBOPASS, - Species.REGIGIGAS, - Species.EMBOAR, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.KROOKODILE, - Species.DARMANITAN, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.GARBODOR, - Species.DRUDDIGON, - Species.TERRAKION, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.BINACLE, - Species.BARBARACLE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.CARBINK, - Species.DIANCIE, - Species.VOLCANION, - Species.DECIDUEYE, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.PASSIMIAN, - Species.TURTONATOR, - Species.BUZZWOLE, - Species.CELESTEELA, - Species.GUZZLORD, - Species.MARSHADOW, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.CINDERACE, - Species.INTELEON, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.STONJOURNER, - Species.COPPERAJAH, - Species.KLEAVOR, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.KLAWF, - Species.TINKATON, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.ANNIHILAPE, - Species.GREAT_TUSK, - Species.IRON_THORNS, - Species.ARCHALUDON, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_MAROWAK, - Species.GALAR_SLOWBRO, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_DECIDUEYE, - Species.BLOODMOON_URSALUNA, + [MoveId.SMACK_DOWN]: [ + SpeciesId.BLASTOISE, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.ONIX, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.PINSIR, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.SUDOWOODO, + SpeciesId.AIPOM, + SpeciesId.STEELIX, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.SLAKING, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.AGGRON, + SpeciesId.CAMERUPT, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.RELICANTH, + SpeciesId.REGIROCK, + SpeciesId.GROUDON, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.AMBIPOM, + SpeciesId.BONSLY, + SpeciesId.RHYPERIOR, + SpeciesId.MAMOSWINE, + SpeciesId.PROBOPASS, + SpeciesId.REGIGIGAS, + SpeciesId.EMBOAR, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.KROOKODILE, + SpeciesId.DARMANITAN, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.GARBODOR, + SpeciesId.DRUDDIGON, + SpeciesId.TERRAKION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.CARBINK, + SpeciesId.DIANCIE, + SpeciesId.VOLCANION, + SpeciesId.DECIDUEYE, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.PASSIMIAN, + SpeciesId.TURTONATOR, + SpeciesId.BUZZWOLE, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.MARSHADOW, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.CINDERACE, + SpeciesId.INTELEON, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.STONJOURNER, + SpeciesId.COPPERAJAH, + SpeciesId.KLEAVOR, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.KLAWF, + SpeciesId.TINKATON, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.ANNIHILAPE, + SpeciesId.GREAT_TUSK, + SpeciesId.IRON_THORNS, + SpeciesId.ARCHALUDON, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.SLUDGE_WAVE]: [ - Species.EKANS, - Species.ARBOK, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.VILEPLUME, - Species.VENOMOTH, - Species.DUGTRIO, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.KOFFING, - Species.WEEZING, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.WOOPER, - Species.QUAGSIRE, - Species.QWILFISH, - Species.SHUCKLE, - Species.OCTILLERY, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.GULPIN, - Species.SWALOT, - Species.SEVIPER, - Species.CRAWDAUNT, - Species.CRADILY, - Species.GASTRODON, - Species.STUNKY, - Species.SKUNTANK, - Species.CROAGUNK, - Species.TOXICROAK, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.TRUBBISH, - Species.GARBODOR, - Species.FRILLISH, - Species.JELLICENT, - Species.STUNFISK, - Species.TORNADUS, - Species.THUNDURUS, - Species.LANDORUS, - Species.GRENINJA, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.ZYGARDE, - Species.VOLCANION, - Species.MAREANIE, - Species.TOXAPEX, - Species.SALANDIT, - Species.SALAZZLE, - Species.GOLISOPOD, - Species.DHELMISE, - Species.NIHILEGO, - Species.GUZZLORD, - Species.POIPOLE, - Species.NAGANADEL, - Species.TOXTRICITY, - Species.ETERNATUS, - Species.SNEASLER, - Species.OVERQWIL, - Species.SHROODLE, - Species.GRAFAIAI, - Species.VAROOM, - Species.REVAVROOM, - Species.GLIMMET, - Species.GLIMMORA, - Species.CLODSIRE, - Species.IRON_MOTH, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.PECHARUNT, - Species.ALOLA_RATICATE, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_SLOWKING, - Species.GALAR_STUNFISK, - Species.HISUI_SNEASEL, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.PALDEA_WOOPER, + [MoveId.SLUDGE_WAVE]: [ + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.VILEPLUME, + SpeciesId.VENOMOTH, + SpeciesId.DUGTRIO, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.QWILFISH, + SpeciesId.SHUCKLE, + SpeciesId.OCTILLERY, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.SEVIPER, + SpeciesId.CRAWDAUNT, + SpeciesId.CRADILY, + SpeciesId.GASTRODON, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.STUNFISK, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.LANDORUS, + SpeciesId.GRENINJA, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.ZYGARDE, + SpeciesId.VOLCANION, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.GOLISOPOD, + SpeciesId.DHELMISE, + SpeciesId.NIHILEGO, + SpeciesId.GUZZLORD, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.TOXTRICITY, + SpeciesId.ETERNATUS, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.CLODSIRE, + SpeciesId.IRON_MOTH, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.PALDEA_WOOPER, ], - [Moves.HEAVY_SLAM]: [ - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GRAVELER, - Species.GOLEM, - Species.MAGNEMITE, - Species.MAGNETON, - Species.ONIX, - Species.RHYHORN, - Species.RHYDON, - Species.SNORLAX, - Species.MEW, - Species.FORRETRESS, - Species.STEELIX, - Species.PHANPY, - Species.DONPHAN, - Species.MILTANK, - Species.TYRANITAR, - Species.SLAKING, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.WALREIN, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.KYOGRE, - Species.GROUDON, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.BRONZOR, - Species.BRONZONG, - Species.HIPPOWDON, - Species.MAGNEZONE, - Species.RHYPERIOR, - Species.MAMOSWINE, - Species.PROBOPASS, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.ARCEUS, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.CRUSTLE, - Species.FERROTHORN, - Species.EELEKTROSS, - Species.CUBCHOO, - Species.BEARTIC, - Species.GOLETT, - Species.GOLURK, - Species.COBALION, - Species.CARBINK, - Species.AVALUGG, - Species.VOLCANION, - Species.MUDBRAY, - Species.MUDSDALE, - Species.TURTONATOR, - Species.DHELMISE, - Species.SOLGALEO, - Species.CELESTEELA, - Species.GUZZLORD, - Species.MAGEARNA, - Species.STAKATAKA, - Species.MELMETAL, - Species.CORVIKNIGHT, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.PERRSERKER, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DURALUDON, - Species.ZAMAZENTA, - Species.GLASTRIER, - Species.URSALUNA, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.TINKATON, - Species.REVAVROOM, - Species.ORTHWORM, - Species.CETODDLE, - Species.CETITAN, - Species.DONDOZO, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.GHOLDENGO, - Species.TING_LU, - Species.KORAIDON, - Species.MIRAIDON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.RAGING_BOLT, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.ALOLA_GOLEM, + [MoveId.HEAVY_SLAM]: [ + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.ONIX, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.FORRETRESS, + SpeciesId.STEELIX, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.MILTANK, + SpeciesId.TYRANITAR, + SpeciesId.SLAKING, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.WALREIN, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.HIPPOWDON, + SpeciesId.MAGNEZONE, + SpeciesId.RHYPERIOR, + SpeciesId.MAMOSWINE, + SpeciesId.PROBOPASS, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.ARCEUS, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.CRUSTLE, + SpeciesId.FERROTHORN, + SpeciesId.EELEKTROSS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.COBALION, + SpeciesId.CARBINK, + SpeciesId.AVALUGG, + SpeciesId.VOLCANION, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.TURTONATOR, + SpeciesId.DHELMISE, + SpeciesId.SOLGALEO, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.MAGEARNA, + SpeciesId.STAKATAKA, + SpeciesId.MELMETAL, + SpeciesId.CORVIKNIGHT, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.PERRSERKER, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DURALUDON, + SpeciesId.ZAMAZENTA, + SpeciesId.GLASTRIER, + SpeciesId.URSALUNA, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.TINKATON, + SpeciesId.REVAVROOM, + SpeciesId.ORTHWORM, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.DONDOZO, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.GHOLDENGO, + SpeciesId.TING_LU, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_GOLEM, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.BLOODMOON_URSALUNA, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.ELECTRO_BALL]: [ - Species.PIKACHU, - Species.RAICHU, - Species.MAGNEMITE, - Species.MAGNETON, - Species.VOLTORB, - Species.ELECTRODE, - Species.ELECTABUZZ, - Species.JOLTEON, - Species.ZAPDOS, - Species.MEWTWO, - Species.MEW, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.ELEKID, - Species.RAIKOU, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.PACHIRISU, - Species.MAGNEZONE, - Species.ELECTIVIRE, - Species.ROTOM, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.EMOLGA, - Species.JOLTIK, - Species.GALVANTULA, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.THUNDURUS, - Species.ZEKROM, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.DEDENNE, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.TOGEDEMARU, - Species.TAPU_KOKO, - Species.XURKITREE, - Species.MAGEARNA, - Species.ZERAORA, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.WOOLOO, - Species.DUBWOOL, - Species.YAMPER, - Species.BOLTUND, - Species.TOXTRICITY, - Species.PINCURCHIN, - Species.MORPEKO, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.REGIELEKI, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.RABSCA, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_THORNS, - Species.GHOLDENGO, - Species.MIRAIDON, - Species.RAGING_BOLT, - Species.ALOLA_RAICHU, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, + [MoveId.ELECTRO_BALL]: [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.ELECTABUZZ, + SpeciesId.JOLTEON, + SpeciesId.ZAPDOS, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.ELEKID, + SpeciesId.RAIKOU, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.PACHIRISU, + SpeciesId.MAGNEZONE, + SpeciesId.ELECTIVIRE, + SpeciesId.ROTOM, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.EMOLGA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.THUNDURUS, + SpeciesId.ZEKROM, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.DEDENNE, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.TOGEDEMARU, + SpeciesId.TAPU_KOKO, + SpeciesId.XURKITREE, + SpeciesId.MAGEARNA, + SpeciesId.ZERAORA, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.TOXTRICITY, + SpeciesId.PINCURCHIN, + SpeciesId.MORPEKO, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.REGIELEKI, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.RABSCA, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_THORNS, + SpeciesId.GHOLDENGO, + SpeciesId.MIRAIDON, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_RAICHU, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, ], - [Moves.FLAME_CHARGE]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.VULPIX, - Species.NINETALES, - Species.GROWLITHE, - Species.ARCANINE, - Species.PONYTA, - Species.RAPIDASH, - Species.MAGMAR, - Species.FLAREON, - Species.MOLTRES, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.SLUGMA, - Species.MAGCARGO, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.MAGBY, - Species.ENTEI, - Species.HO_OH, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.MAGMORTAR, - Species.HEATRAN, - Species.VICTINI, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.PANSEAR, - Species.SIMISEAR, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.DARUMAKA, - Species.DARMANITAN, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.LARVESTA, - Species.VOLCARONA, - Species.RESHIRAM, - Species.GENESECT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.LITLEO, - Species.PYROAR, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.VOLCANION, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.SALANDIT, - Species.SALAZZLE, - Species.TYPE_NULL, - Species.SILVALLY, - Species.TURTONATOR, - Species.SOLGALEO, - Species.CELESTEELA, - Species.BLACEPHALON, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.YAMPER, - Species.CARKOL, - Species.COALOSSAL, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.SLITHER_WING, - Species.IRON_MOTH, - Species.CHI_YU, - Species.KORAIDON, - Species.GOUGING_FIRE, - Species.ALOLA_MAROWAK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, + [MoveId.FLAME_CHARGE]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.MAGMAR, + SpeciesId.FLAREON, + SpeciesId.MOLTRES, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.MAGBY, + SpeciesId.ENTEI, + SpeciesId.HO_OH, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.MAGMORTAR, + SpeciesId.HEATRAN, + SpeciesId.VICTINI, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.RESHIRAM, + SpeciesId.GENESECT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.VOLCANION, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.TURTONATOR, + SpeciesId.SOLGALEO, + SpeciesId.CELESTEELA, + SpeciesId.BLACEPHALON, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.YAMPER, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_MOTH, + SpeciesId.CHI_YU, + SpeciesId.KORAIDON, + SpeciesId.GOUGING_FIRE, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "blaze", ], ], - [Moves.LOW_SWEEP]: [ - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.DROWZEE, - Species.HYPNO, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.MEWTWO, - Species.MEW, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.SNEASEL, - Species.TYROGUE, - Species.HITMONTOP, - Species.GROVYLE, - Species.SCEPTILE, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.NUZLEAF, - Species.SHIFTRY, - Species.BRELOOM, - Species.VIGOROTH, - Species.SLAKING, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.GRUMPIG, - Species.ZANGOOSE, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.BUIZEL, - Species.FLOATZEL, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.GALLADE, - Species.PIGNITE, - Species.EMBOAR, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ZOROARK, - Species.GOTHITELLE, - Species.HAXORUS, - Species.MIENFOO, - Species.MIENSHAO, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.GRENINJA, - Species.PANCHAM, - Species.PANGORO, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.HAWLUCHA, - Species.DECIDUEYE, - Species.INCINEROAR, - Species.GUMSHOOS, - Species.MUDBRAY, - Species.MUDSDALE, - Species.LURANTIS, - Species.STUFFUL, - Species.BEWEAR, - Species.STEENEE, - Species.TSAREENA, - Species.PASSIMIAN, - Species.KOMALA, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.MARSHADOW, - Species.ZERAORA, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.GRIMMSNARL, - Species.STONJOURNER, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.SNEASLER, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LOKIX, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.GRAFAIAI, - Species.FLAMIGO, - Species.ANNIHILAPE, - Species.KINGAMBIT, - Species.SLITHER_WING, - Species.IRON_HANDS, - Species.GHOLDENGO, - Species.KORAIDON, - Species.OKIDOGI, - Species.OGERPON, + [MoveId.LOW_SWEEP]: [ + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.SNEASEL, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.BRELOOM, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.GRUMPIG, + SpeciesId.ZANGOOSE, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.GALLADE, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ZOROARK, + SpeciesId.GOTHITELLE, + SpeciesId.HAXORUS, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.GRENINJA, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.HAWLUCHA, + SpeciesId.DECIDUEYE, + SpeciesId.INCINEROAR, + SpeciesId.GUMSHOOS, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.LURANTIS, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.PASSIMIAN, + SpeciesId.KOMALA, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.GRIMMSNARL, + SpeciesId.STONJOURNER, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.SNEASLER, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LOKIX, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.GRAFAIAI, + SpeciesId.FLAMIGO, + SpeciesId.ANNIHILAPE, + SpeciesId.KINGAMBIT, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_HANDS, + SpeciesId.GHOLDENGO, + SpeciesId.KORAIDON, + SpeciesId.OKIDOGI, + SpeciesId.OGERPON, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_ZAPDOS, - Species.GALAR_SLOWKING, - Species.HISUI_SNEASEL, - Species.HISUI_LILLIGANT, - Species.HISUI_ZOROARK, - Species.HISUI_DECIDUEYE, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.ACID_SPRAY]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.EKANS, - Species.ARBOK, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.VENONAT, - Species.VENOMOTH, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.KOFFING, - Species.WEEZING, - Species.MAGMAR, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.BELLOSSOM, - Species.WOOPER, - Species.QUAGSIRE, - Species.QWILFISH, - Species.REMORAID, - Species.OCTILLERY, - Species.MAGBY, - Species.GULPIN, - Species.SWALOT, - Species.SEVIPER, - Species.STUNKY, - Species.SKUNTANK, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.MAGMORTAR, - Species.ARCEUS, - Species.SCRAGGY, - Species.SCRAFTY, - Species.TRUBBISH, - Species.GARBODOR, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FERROSEED, - Species.FERROTHORN, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ACCELGOR, - Species.SKRELP, - Species.DRAGALGE, - Species.SLIGGOO, - Species.GOODRA, - Species.MAREANIE, - Species.TOXAPEX, - Species.SALANDIT, - Species.SALAZZLE, - Species.NIHILEGO, - Species.FLAPPLE, - Species.TOXTRICITY, - Species.SNEASLER, - Species.OVERQWIL, - Species.ARMAROUGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.SHROODLE, - Species.GRAFAIAI, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.VAROOM, - Species.REVAVROOM, - Species.GLIMMET, - Species.GLIMMORA, - Species.CLODSIRE, - Species.IRON_MOTH, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.PECHARUNT, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_SLOWKING, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.PALDEA_WOOPER, + [MoveId.ACID_SPRAY]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.MAGMAR, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.BELLOSSOM, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.QWILFISH, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.MAGBY, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.SEVIPER, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.MAGMORTAR, + SpeciesId.ARCEUS, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ACCELGOR, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.NIHILEGO, + SpeciesId.FLAPPLE, + SpeciesId.TOXTRICITY, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ARMAROUGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.CLODSIRE, + SpeciesId.IRON_MOTH, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.PALDEA_WOOPER, ], - [Moves.FOUL_PLAY]: [ - Species.VULPIX, - Species.NINETALES, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.VOLTORB, - Species.ELECTRODE, - Species.MR_MIME, - Species.PORYGON, - Species.MEWTWO, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.XATU, - Species.SUDOWOODO, - Species.AIPOM, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.SNEASEL, - Species.DELIBIRD, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PORYGON2, - Species.TYRANITAR, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.MASQUERAIN, - Species.SABLEYE, - Species.MAWILE, - Species.CACNEA, - Species.CACTURNE, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.ABSOL, - Species.GLALIE, - Species.AMBIPOM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.STUNKY, - Species.SKUNTANK, - Species.BONSLY, - Species.SPIRITOMB, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.PORYGON_Z, - Species.ROTOM, - Species.UXIE, - Species.DARKRAI, - Species.ARCEUS, - Species.PURRLOIN, - Species.LIEPARD, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ZORUA, - Species.ZOROARK, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.FOONGUS, - Species.AMOONGUSS, - Species.STUNFISK, - Species.PAWNIARD, - Species.BISHARP, - Species.VULLABY, - Species.MANDIBUZZ, - Species.TORNADUS, - Species.THUNDURUS, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.INKAY, - Species.MALAMAR, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.YVELTAL, - Species.HOOPA, - Species.SALANDIT, - Species.SALAZZLE, - Species.ORANGURU, - Species.NIHILEGO, - Species.PHEROMOSA, - Species.MARSHADOW, - Species.BLACEPHALON, - Species.NICKIT, - Species.THIEVUL, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.PERRSERKER, - Species.MR_RIME, - Species.MORPEKO, - Species.DURALUDON, - Species.SPECTRIER, - Species.MEOWSCARADA, - Species.SQUAWKABILLY, - Species.SHROODLE, - Species.GRAFAIAI, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FARIGIRAF, - Species.KINGAMBIT, - Species.WO_CHIEN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.ARCHALUDON, - Species.PECHARUNT, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_MUK, + [MoveId.FOUL_PLAY]: [ + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.MR_MIME, + SpeciesId.PORYGON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.XATU, + SpeciesId.SUDOWOODO, + SpeciesId.AIPOM, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.SNEASEL, + SpeciesId.DELIBIRD, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PORYGON2, + SpeciesId.TYRANITAR, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.MASQUERAIN, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.ABSOL, + SpeciesId.GLALIE, + SpeciesId.AMBIPOM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BONSLY, + SpeciesId.SPIRITOMB, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.PORYGON_Z, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.STUNFISK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.YVELTAL, + SpeciesId.HOOPA, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.ORANGURU, + SpeciesId.NIHILEGO, + SpeciesId.PHEROMOSA, + SpeciesId.MARSHADOW, + SpeciesId.BLACEPHALON, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.PERRSERKER, + SpeciesId.MR_RIME, + SpeciesId.MORPEKO, + SpeciesId.DURALUDON, + SpeciesId.SPECTRIER, + SpeciesId.MEOWSCARADA, + SpeciesId.SQUAWKABILLY, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FARIGIRAF, + SpeciesId.KINGAMBIT, + SpeciesId.WO_CHIEN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.ARCHALUDON, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_MUK, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_MEOWTH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_STUNFISK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_STUNFISK, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "single-strike", ], [ - Species.CALYREX, + SpeciesId.CALYREX, "shadow", ], - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, ], - [Moves.ROUND]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, + [MoveId.ROUND]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, ], - [Moves.ECHOED_VOICE]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SPEAROW, - Species.FEAROW, - Species.PIKACHU, - Species.RAICHU, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.CUBONE, - Species.MAROWAK, - Species.CHANSEY, - Species.JYNX, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.POLITOED, - Species.ESPEON, - Species.UMBREON, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PHANPY, - Species.DONPHAN, - Species.SMOOCHUM, - Species.MILTANK, - Species.BLISSEY, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.ZIGZAGOON, - Species.LINOONE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.SKITTY, - Species.DELCATTY, - Species.PLUSLE, - Species.MINUN, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.SWABLU, - Species.ALTARIA, - Species.CHIMECHO, - Species.ABSOL, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.RAYQUAZA, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.MISMAGIUS, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.HAPPINY, - Species.CHATOT, - Species.TOGEKISS, - Species.LEAFEON, - Species.GLACEON, - Species.GALLADE, - Species.DIALGA, - Species.PALKIA, - Species.GIRATINA, - Species.ARCEUS, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.PURRLOIN, - Species.LIEPARD, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.AUDINO, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.MINCCINO, - Species.CINCCINO, - Species.DEERLING, - Species.SAWSBUCK, - Species.ELGYEM, - Species.BEHEEYEM, - Species.CUBCHOO, - Species.BEARTIC, - Species.HYDREIGON, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.MELOETTA, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.ROCKRUFF, - Species.LYCANROC, - Species.COMFEY, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.NIHILEGO, - Species.PHEROMOSA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.ZERAORA, - Species.ARCTOZOLT, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.CETODDLE, - Species.CETITAN, - Species.ALOLA_RAICHU, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GOLEM, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, + [MoveId.ECHOED_VOICE]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.CHANSEY, + SpeciesId.JYNX, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.POLITOED, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.SMOOCHUM, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.RAYQUAZA, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.MISMAGIUS, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GALLADE, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.AUDINO, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.HYDREIGON, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.MELOETTA, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.COMFEY, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.NIHILEGO, + SpeciesId.PHEROMOSA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.ZERAORA, + SpeciesId.ARCTOZOLT, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, ], - [Moves.STORED_POWER]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CHANSEY, - Species.MR_MIME, - Species.JYNX, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.MEWTWO, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CLEFFA, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.ESPEON, - Species.UMBREON, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.STANTLER, - Species.SMOOCHUM, - Species.BLISSEY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.MEDITITE, - Species.MEDICHAM, - Species.SPOINK, - Species.GRUMPIG, - Species.LUNATONE, - Species.SOLROCK, - Species.CLAYDOL, - Species.CHIMECHO, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.DEOXYS, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.HAPPINY, - Species.SPIRITOMB, - Species.TOGEKISS, - Species.LEAFEON, - Species.GLACEON, - Species.GALLADE, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.MANAPHY, - Species.ARCEUS, - Species.VICTINI, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.SIGILYPH, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.MEOWSTIC, - Species.INKAY, - Species.MALAMAR, - Species.SYLVEON, - Species.KLEFKI, - Species.DIANCIE, - Species.PRIMARINA, - Species.RIBOMBEE, - Species.COMFEY, - Species.ORANGURU, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.NECROZMA, - Species.MAGEARNA, - Species.BLACEPHALON, - Species.DOTTLER, - Species.ORBEETLE, - Species.TOXTRICITY, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.MR_RIME, - Species.MILCERY, - Species.ALCREMIE, - Species.INDEEDEE, - Species.CALYREX, - Species.WYRDEER, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.VELUZA, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.SCREAM_TAIL, - Species.FLUTTER_MANE, - Species.IRON_VALIANT, - Species.MUNKIDORI, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.ALOLA_RAICHU, - Species.ALOLA_VULPIX, - Species.ETERNAL_FLOETTE, - Species.ALOLA_NINETALES, - Species.ALOLA_EXEGGUTOR, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_SLOWKING, - Species.HISUI_BRAVIARY, + [MoveId.STORED_POWER]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CHANSEY, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CLEFFA, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.STANTLER, + SpeciesId.SMOOCHUM, + SpeciesId.BLISSEY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.CLAYDOL, + SpeciesId.CHIMECHO, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.SPIRITOMB, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GALLADE, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.MANAPHY, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SIGILYPH, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.MEOWSTIC, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.SYLVEON, + SpeciesId.KLEFKI, + SpeciesId.DIANCIE, + SpeciesId.PRIMARINA, + SpeciesId.RIBOMBEE, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.BLACEPHALON, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.TOXTRICITY, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.MR_RIME, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.INDEEDEE, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.VELUZA, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.SCREAM_TAIL, + SpeciesId.FLUTTER_MANE, + SpeciesId.IRON_VALIANT, + SpeciesId.MUNKIDORI, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.ALLY_SWITCH]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.DIGLETT, - Species.DUGTRIO, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.PONYTA, - Species.RAPIDASH, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.MAROWAK, - Species.CHANSEY, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.PORYGON, - Species.MEWTWO, - Species.MEW, - Species.NATU, - Species.XATU, - Species.ESPEON, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.FORRETRESS, - Species.PORYGON2, - Species.TYROGUE, - Species.BLISSEY, - Species.CELEBI, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SHEDINJA, - Species.SABLEYE, - Species.SPOINK, - Species.GRUMPIG, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.CHIMECHO, - Species.METANG, - Species.METAGROSS, - Species.LATIAS, - Species.LATIOS, - Species.JIRACHI, - Species.DEOXYS, - Species.WORMADAM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.SPIRITOMB, - Species.MAGNEZONE, - Species.TOGEKISS, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.MUNNA, - Species.MUSHARNA, - Species.ZEBSTRIKA, - Species.WOOBAT, - Species.SWOOBAT, - Species.AUDINO, - Species.YAMASK, - Species.COFAGRIGUS, - Species.ARCHEN, - Species.ARCHEOPS, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.KLANG, - Species.KLINKLANG, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.MIENFOO, - Species.MIENSHAO, - Species.GOLETT, - Species.GOLURK, - Species.MELOETTA, - Species.GENESECT, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.INKAY, - Species.MALAMAR, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.DIANCIE, - Species.HOOPA, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.COMFEY, - Species.ORANGURU, - Species.BRUXISH, - Species.DHELMISE, - Species.TAPU_LELE, - Species.NIHILEGO, - Species.NECROZMA, - Species.NAGANADEL, - Species.STAKATAKA, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.DOTTLER, - Species.ORBEETLE, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.MR_RIME, - Species.RUNERIGUS, - Species.INDEEDEE, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.CALYREX, - Species.SPRIGATITO, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.FLITTLE, - Species.GREAVARD, - Species.IRON_LEAVES, - Species.ALOLA_RAICHU, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_YAMASK, + [MoveId.ALLY_SWITCH]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.MAROWAK, + SpeciesId.CHANSEY, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.PORYGON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.ESPEON, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.FORRETRESS, + SpeciesId.PORYGON2, + SpeciesId.TYROGUE, + SpeciesId.BLISSEY, + SpeciesId.CELEBI, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.CHIMECHO, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.WORMADAM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.SPIRITOMB, + SpeciesId.MAGNEZONE, + SpeciesId.TOGEKISS, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.ZEBSTRIKA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.AUDINO, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.BRUXISH, + SpeciesId.DHELMISE, + SpeciesId.TAPU_LELE, + SpeciesId.NIHILEGO, + SpeciesId.NECROZMA, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.INDEEDEE, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.CALYREX, + SpeciesId.SPRIGATITO, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.FLITTLE, + SpeciesId.GREAVARD, + SpeciesId.IRON_LEAVES, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_YAMASK, ], - [Moves.SCALD]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.KRABBY, - Species.KINGLER, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.GYARADOS, - Species.VAPOREON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.CHINCHOU, - Species.LANTURN, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.QWILFISH, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.MANTINE, - Species.KINGDRA, - Species.RAIKOU, - Species.SUICUNE, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.WINGULL, - Species.PELIPPER, - Species.SURSKIT, - Species.MASQUERAIN, - Species.AZURILL, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.KYOGRE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIBAREL, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.PHIONE, - Species.MANAPHY, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PANPOUR, - Species.SIMIPOUR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.BASCULIN, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.DUCKLETT, - Species.SWANNA, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.STUNFISK, - Species.KELDEO, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.GOODRA, - Species.VOLCANION, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.DEWPIDER, - Species.ARAQUANID, - Species.WIMPOD, - Species.GOLISOPOD, - Species.BRUXISH, - Species.TAPU_FINI, - Species.INTELEON, - Species.DREDNAW, - Species.CARKOL, - Species.COALOSSAL, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CURSOLA, - Species.PINCURCHIN, - Species.DRACOVISH, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.WALKING_WAKE, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_STUNFISK, + [MoveId.SCALD]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.GYARADOS, + SpeciesId.VAPOREON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.QWILFISH, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.RAIKOU, + SpeciesId.SUICUNE, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.AZURILL, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.KYOGRE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIBAREL, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.BASCULIN, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.STUNFISK, + SpeciesId.KELDEO, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.GOODRA, + SpeciesId.VOLCANION, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.BRUXISH, + SpeciesId.TAPU_FINI, + SpeciesId.INTELEON, + SpeciesId.DREDNAW, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CURSOLA, + SpeciesId.PINCURCHIN, + SpeciesId.DRACOVISH, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.WALKING_WAKE, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_STUNFISK, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "rapid-strike", ], ], - [Moves.HEX]: [ - Species.NIDOQUEEN, - Species.NIDOKING, - Species.VULPIX, - Species.NINETALES, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.HYPNO, - Species.MEWTWO, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.MURKROW, - Species.MISDREAVUS, - Species.DUNSPARCE, - Species.QWILFISH, - Species.SHIFTRY, - Species.SHEDINJA, - Species.SABLEYE, - Species.BALTOY, - Species.CLAYDOL, - Species.CASTFORM, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.VESPIQUEN, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.SPIRITOMB, - Species.GALLADE, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.GIRATINA, - Species.ARCEUS, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.YAMASK, - Species.COFAGRIGUS, - Species.ZORUA, - Species.ZOROARK, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.EELEKTROSS, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.DELPHOX, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.DECIDUEYE, - Species.TOXAPEX, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MIMIKYU, - Species.DHELMISE, - Species.LUNALA, - Species.NIHILEGO, - Species.MARSHADOW, - Species.NAGANADEL, - Species.TOXTRICITY, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.CURSOLA, - Species.RUNERIGUS, - Species.PINCURCHIN, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.SPECTRIER, - Species.BASCULEGION, - Species.SKELEDIRGE, - Species.CERULEDGE, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.ESPATHRA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.DUDUNSPARCE, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.IRON_VALIANT, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.PECHARUNT, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.MAROWAK, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_YAMASK, + [MoveId.HEX]: [ + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.HYPNO, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.MURKROW, + SpeciesId.MISDREAVUS, + SpeciesId.DUNSPARCE, + SpeciesId.QWILFISH, + SpeciesId.SHIFTRY, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.CASTFORM, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.VESPIQUEN, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.SPIRITOMB, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.EELEKTROSS, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.DELPHOX, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.DECIDUEYE, + SpeciesId.TOXAPEX, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MIMIKYU, + SpeciesId.DHELMISE, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.MARSHADOW, + SpeciesId.NAGANADEL, + SpeciesId.TOXTRICITY, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.PINCURCHIN, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.SPECTRIER, + SpeciesId.BASCULEGION, + SpeciesId.SKELEDIRGE, + SpeciesId.CERULEDGE, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.ESPATHRA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.DUDUNSPARCE, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.IRON_VALIANT, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.MAROWAK, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_YAMASK, [ - Species.CALYREX, + SpeciesId.CALYREX, "shadow", ], - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, ], - [Moves.SKY_DROP]: [ - Species.CHARIZARD, - Species.AERODACTYL, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEW, - Species.SKARMORY, - Species.LUGIA, - Species.HO_OH, - Species.PELIPPER, - Species.RAYQUAZA, - Species.RUFFLET, - Species.BRAVIARY, - Species.TORNADUS, - Species.THUNDURUS, - Species.HAWLUCHA, - Species.YVELTAL, - Species.VIKAVOLT, - Species.TAPU_KOKO, - Species.LUNALA, - Species.NAGANADEL, + [MoveId.SKY_DROP]: [ + SpeciesId.CHARIZARD, + SpeciesId.AERODACTYL, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.SKARMORY, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.PELIPPER, + SpeciesId.RAYQUAZA, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.HAWLUCHA, + SpeciesId.YVELTAL, + SpeciesId.VIKAVOLT, + SpeciesId.TAPU_KOKO, + SpeciesId.LUNALA, + SpeciesId.NAGANADEL, ], - [Moves.INCINERATE]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.GROWLITHE, - Species.ARCANINE, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.GRIMER, - Species.MUK, - Species.CUBONE, - Species.MAROWAK, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MAGMAR, - Species.TAUROS, - Species.GYARADOS, - Species.FLAREON, - Species.AERODACTYL, - Species.SNORLAX, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.SLOWKING, - Species.DUNSPARCE, - Species.SNUBBULL, - Species.GRANBULL, - Species.SLUGMA, - Species.MAGCARGO, - Species.REMORAID, - Species.OCTILLERY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.MAGBY, - Species.BLISSEY, - Species.ENTEI, - Species.HO_OH, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.FLYGON, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SOLROCK, - Species.CASTFORM, - Species.KECLEON, - Species.ABSOL, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.GROUDON, - Species.RAYQUAZA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.HONCHKROW, - Species.STUNKY, - Species.SKUNTANK, - Species.HAPPINY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.DARKRAI, - Species.ARCEUS, - Species.VICTINI, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.PANSEAR, - Species.SIMISEAR, - Species.AUDINO, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ZORUA, - Species.ZOROARK, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.DRUDDIGON, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.LITLEO, - Species.PYROAR, - Species.GOODRA, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.VOLCANION, - Species.SALANDIT, - Species.SALAZZLE, - Species.TURTONATOR, - Species.BLACEPHALON, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.DUDUNSPARCE, - Species.CHI_YU, - Species.ROARING_MOON, - Species.GOUGING_FIRE, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_WEEZING, - Species.GALAR_SLOWKING, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_GOODRA, - Species.PALDEA_TAUROS, + [MoveId.INCINERATE]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MAGMAR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.FLAREON, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.SLOWKING, + SpeciesId.DUNSPARCE, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.MAGBY, + SpeciesId.BLISSEY, + SpeciesId.ENTEI, + SpeciesId.HO_OH, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.FLYGON, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SOLROCK, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.ABSOL, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.HONCHKROW, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.HAPPINY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.AUDINO, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.DRUDDIGON, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.GOODRA, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.VOLCANION, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.TURTONATOR, + SpeciesId.BLACEPHALON, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.DUDUNSPARCE, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.GOUGING_FIRE, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_GOODRA, + SpeciesId.PALDEA_TAUROS, ], - [Moves.QUASH]: [ - Species.NIDOQUEEN, - Species.NIDOKING, - Species.KINGLER, - Species.MEW, - Species.MURKROW, - Species.SLOWKING, - Species.KINGDRA, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.SLAKING, - Species.SABLEYE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.VESPIQUEN, - Species.HONCHKROW, - Species.SPIRITOMB, - Species.ARCEUS, - Species.PANCHAM, - Species.PANGORO, - Species.HOOPA, - Species.INCINEROAR, - Species.ORICORIO, - Species.ORANGURU, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.KOMALA, - Species.BLACEPHALON, - Species.HATENNA, - Species.MORPEKO, - Species.TINKATINK, - Species.IRON_LEAVES, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, + [MoveId.QUASH]: [ + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.KINGLER, + SpeciesId.MEW, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.KINGDRA, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.SLAKING, + SpeciesId.SABLEYE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.VESPIQUEN, + SpeciesId.HONCHKROW, + SpeciesId.SPIRITOMB, + SpeciesId.ARCEUS, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HOOPA, + SpeciesId.INCINEROAR, + SpeciesId.ORICORIO, + SpeciesId.ORANGURU, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.KOMALA, + SpeciesId.BLACEPHALON, + SpeciesId.HATENNA, + SpeciesId.MORPEKO, + SpeciesId.TINKATINK, + SpeciesId.IRON_LEAVES, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, ], - [Moves.ACROBATICS]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.ZUBAT, - Species.GOLBAT, - Species.VENOMOTH, - Species.MANKEY, - Species.PRIMEAPE, - Species.FARFETCHD, - Species.SCYTHER, - Species.ZAPDOS, - Species.MOLTRES, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.CROBAT, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.MURKROW, - Species.GLIGAR, - Species.SCIZOR, - Species.DELIBIRD, - Species.MANTINE, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.BLAZIKEN, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.WINGULL, - Species.PELIPPER, - Species.SURSKIT, - Species.MASQUERAIN, - Species.NINJASK, - Species.VOLBEAT, - Species.ILLUMISE, - Species.SWABLU, - Species.ALTARIA, - Species.LUNATONE, - Species.SOLROCK, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.MOTHIM, - Species.VESPIQUEN, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.LOPUNNY, - Species.HONCHKROW, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.GLISCOR, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.WOOBAT, - Species.SWOOBAT, - Species.ARCHEN, - Species.ARCHEOPS, - Species.SWANNA, - Species.EMOLGA, - Species.ALOMOMOLA, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.CRYOGONAL, - Species.MIENFOO, - Species.MIENSHAO, - Species.RUFFLET, - Species.BRAVIARY, - Species.MANDIBUZZ, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.TORNADUS, - Species.THUNDURUS, - Species.MELOETTA, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.HAWLUCHA, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.SALAZZLE, - Species.TSAREENA, - Species.COMFEY, - Species.PASSIMIAN, - Species.MINIOR, - Species.KOMALA, - Species.TAPU_KOKO, - Species.LUNALA, - Species.CELESTEELA, - Species.MARSHADOW, - Species.NAGANADEL, - Species.ZERAORA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.INTELEON, - Species.THIEVUL, - Species.FLAPPLE, - Species.CRAMORANT, - Species.FROSMOTH, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.KLEAVOR, - Species.SNEASLER, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.WATTREL, - Species.KILOWATTREL, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.CYCLIZAR, - Species.FLAMIGO, - Species.ANNIHILAPE, - Species.SLITHER_WING, - Species.IRON_BUNDLE, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.CHIEN_PAO, - Species.ROARING_MOON, - Species.KORAIDON, - Species.MIRAIDON, - Species.FEZANDIPITI, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.HISUI_LILLIGANT, - Species.HISUI_BRAVIARY, + [MoveId.ACROBATICS]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.VENOMOTH, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.FARFETCHD, + SpeciesId.SCYTHER, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.CROBAT, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.MURKROW, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.BLAZIKEN, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.NINJASK, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.LOPUNNY, + SpeciesId.HONCHKROW, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.GLISCOR, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.SWANNA, + SpeciesId.EMOLGA, + SpeciesId.ALOMOMOLA, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.CRYOGONAL, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.MANDIBUZZ, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.MELOETTA, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.HAWLUCHA, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.SALAZZLE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.PASSIMIAN, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TAPU_KOKO, + SpeciesId.LUNALA, + SpeciesId.CELESTEELA, + SpeciesId.MARSHADOW, + SpeciesId.NAGANADEL, + SpeciesId.ZERAORA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.INTELEON, + SpeciesId.THIEVUL, + SpeciesId.FLAPPLE, + SpeciesId.CRAMORANT, + SpeciesId.FROSMOTH, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.KLEAVOR, + SpeciesId.SNEASLER, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.CYCLIZAR, + SpeciesId.FLAMIGO, + SpeciesId.ANNIHILAPE, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.CHIEN_PAO, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.FEZANDIPITI, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.RETALIATE]: [ - Species.RATTATA, - Species.RATICATE, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.FARFETCHD, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.CHANSEY, - Species.KANGASKHAN, - Species.TAUROS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.SNORLAX, - Species.MEW, - Species.SENTRET, - Species.FURRET, - Species.TOGETIC, - Species.AIPOM, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.SNUBBULL, - Species.GRANBULL, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.MILTANK, - Species.BLISSEY, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MEDITITE, - Species.MEDICHAM, - Species.CARVANHA, - Species.SHARPEDO, - Species.SPINDA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.SEVIPER, - Species.CRAWDAUNT, - Species.CASTFORM, - Species.KECLEON, - Species.ABSOL, - Species.LATIAS, - Species.LATIOS, - Species.MONFERNO, - Species.INFERNAPE, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.SPIRITOMB, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.LICKILICKY, - Species.TOGEKISS, - Species.LEAFEON, - Species.GLACEON, - Species.GALLADE, - Species.REGIGIGAS, - Species.DARKRAI, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.LEAVANNY, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.DEERLING, - Species.SAWSBUCK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.DURANT, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.KELDEO, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FROAKIE, - Species.LITLEO, - Species.PYROAR, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.INKAY, - Species.MALAMAR, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.ZYGARDE, - Species.PASSIMIAN, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.DUBWOOL, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.SIRFETCHD, - Species.FALINKS, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.KUBFU, - Species.URSHIFU, - Species.MASCHIFF, - Species.KINGAMBIT, - Species.IRON_LEAVES, - Species.OGERPON, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_MAROWAK, - Species.GALAR_MEOWTH, - Species.GALAR_FARFETCHD, - Species.GALAR_ZAPDOS, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_SAMUROTT, + [MoveId.RETALIATE]: [ + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.FARFETCHD, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.TAUROS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.TOGETIC, + SpeciesId.AIPOM, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.SPINDA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.CRAWDAUNT, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.ABSOL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.SPIRITOMB, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GALLADE, + SpeciesId.REGIGIGAS, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.LEAVANNY, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.DURANT, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FROAKIE, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.ZYGARDE, + SpeciesId.PASSIMIAN, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.DUBWOOL, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.SIRFETCHD, + SpeciesId.FALINKS, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.MASCHIFF, + SpeciesId.KINGAMBIT, + SpeciesId.IRON_LEAVES, + SpeciesId.OGERPON, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_SAMUROTT, ], - [Moves.WATER_PLEDGE]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PANPOUR, - Species.SIMIPOUR, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.SILVALLY, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.HISUI_SAMUROTT, + [MoveId.WATER_PLEDGE]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.SILVALLY, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.HISUI_SAMUROTT, ], - [Moves.FIRE_PLEDGE]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.PANSEAR, - Species.SIMISEAR, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.SILVALLY, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.HISUI_TYPHLOSION, + [MoveId.FIRE_PLEDGE]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.SILVALLY, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.HISUI_TYPHLOSION, ], - [Moves.GRASS_PLEDGE]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.PANSAGE, - Species.SIMISAGE, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.SILVALLY, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.HISUI_DECIDUEYE, + [MoveId.GRASS_PLEDGE]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.SILVALLY, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.VOLT_SWITCH]: [ - Species.PIKACHU, - Species.RAICHU, - Species.MAGNEMITE, - Species.MAGNETON, - Species.VOLTORB, - Species.ELECTRODE, - Species.ELECTABUZZ, - Species.JOLTEON, - Species.ZAPDOS, - Species.MEW, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.FORRETRESS, - Species.ELEKID, - Species.RAIKOU, - Species.NOSEPASS, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.PACHIRISU, - Species.MAGNEZONE, - Species.ELECTIVIRE, - Species.PROBOPASS, - Species.ROTOM, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.EMOLGA, - Species.JOLTIK, - Species.GALVANTULA, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.COBALION, - Species.THUNDURUS, - Species.ZEKROM, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.DEDENNE, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.TOGEDEMARU, - Species.TAPU_KOKO, - Species.XURKITREE, - Species.MAGEARNA, - Species.ZERAORA, - Species.YAMPER, - Species.BOLTUND, - Species.TOXTRICITY, - Species.MORPEKO, - Species.REGIELEKI, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.MIRAIDON, - Species.RAGING_BOLT, - Species.IRON_CROWN, - Species.ALOLA_RAICHU, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, + [MoveId.VOLT_SWITCH]: [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.ELECTABUZZ, + SpeciesId.JOLTEON, + SpeciesId.ZAPDOS, + SpeciesId.MEW, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.FORRETRESS, + SpeciesId.ELEKID, + SpeciesId.RAIKOU, + SpeciesId.NOSEPASS, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.PACHIRISU, + SpeciesId.MAGNEZONE, + SpeciesId.ELECTIVIRE, + SpeciesId.PROBOPASS, + SpeciesId.ROTOM, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.EMOLGA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.COBALION, + SpeciesId.THUNDURUS, + SpeciesId.ZEKROM, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.DEDENNE, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.TOGEDEMARU, + SpeciesId.TAPU_KOKO, + SpeciesId.XURKITREE, + SpeciesId.MAGEARNA, + SpeciesId.ZERAORA, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.TOXTRICITY, + SpeciesId.MORPEKO, + SpeciesId.REGIELEKI, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.MIRAIDON, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, ], - [Moves.STRUGGLE_BUG]: [ - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.SCYTHER, - Species.PINSIR, - Species.MEW, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.YANMA, - Species.PINECO, - Species.FORRETRESS, - Species.GLIGAR, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.SURSKIT, - Species.MASQUERAIN, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.VOLBEAT, - Species.ILLUMISE, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.ANORITH, - Species.ARMALDO, - Species.STARAPTOR, - Species.KRICKETOT, - Species.KRICKETUNE, - Species.WORMADAM, - Species.MOTHIM, - Species.COMBEE, - Species.VESPIQUEN, - Species.SKORUPI, - Species.DRAPION, - Species.YANMEGA, - Species.GLISCOR, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.DWEBBLE, - Species.CRUSTLE, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.JOLTIK, - Species.GALVANTULA, - Species.SHELMET, - Species.ACCELGOR, - Species.DURANT, - Species.LARVESTA, - Species.VOLCARONA, - Species.GENESECT, - Species.SCATTERBUG, - Species.SPEWPA, - Species.VIVILLON, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.WIMPOD, - Species.GOLISOPOD, - Species.BLIPBUG, - Species.DOTTLER, - Species.ORBEETLE, - Species.SIZZLIPEDE, - Species.SNOM, - Species.FROSMOTH, - Species.KLEAVOR, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.RELLOR, - Species.RABSCA, - Species.IRON_MOTH, + [MoveId.STRUGGLE_BUG]: [ + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.SCYTHER, + SpeciesId.PINSIR, + SpeciesId.MEW, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.YANMA, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.STARAPTOR, + SpeciesId.KRICKETOT, + SpeciesId.KRICKETUNE, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.COMBEE, + SpeciesId.VESPIQUEN, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.YANMEGA, + SpeciesId.GLISCOR, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.DURANT, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.GENESECT, + SpeciesId.SCATTERBUG, + SpeciesId.SPEWPA, + SpeciesId.VIVILLON, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.BLIPBUG, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.SIZZLIPEDE, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.KLEAVOR, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.IRON_MOTH, ], - [Moves.BULLDOZE]: [ - Species.VENUSAUR, - Species.CHARIZARD, - Species.BLASTOISE, - Species.EKANS, - Species.ARBOK, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.DIGLETT, - Species.DUGTRIO, - Species.MANKEY, - Species.PRIMEAPE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.ONIX, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.AERODACTYL, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.MEGANIUM, - Species.TYPHLOSION, - Species.FERALIGATR, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.SHUCKLE, - Species.HERACROSS, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.MANTINE, - Species.PHANPY, - Species.DONPHAN, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.SCEPTILE, - Species.BLAZIKEN, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.BRELOOM, - Species.VIGOROTH, - Species.SLAKING, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.SWALOT, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.GRUMPIG, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.ALTARIA, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.BALTOY, - Species.CLAYDOL, - Species.CRADILY, - Species.ARMALDO, - Species.MILOTIC, - Species.DUSCLOPS, - Species.TROPIUS, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.RELICANTH, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.INFERNAPE, - Species.EMPOLEON, - Species.BIBAREL, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.SHELLOS, - Species.GASTRODON, - Species.PURUGLY, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.MANTYKE, - Species.ABOMASNOW, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.GLISCOR, - Species.MAMOSWINE, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.ARCEUS, - Species.PIGNITE, - Species.EMBOAR, - Species.SAMUROTT, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DRILBUR, - Species.EXCADRILL, - Species.CONKELDURR, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SCOLIPEDE, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARMANITAN, - Species.DWEBBLE, - Species.CRUSTLE, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.DEERLING, - Species.SAWSBUCK, - Species.FERROTHORN, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.STUNFISK, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.BOUFFALANT, - Species.HYDREIGON, - Species.TERRAKION, - Species.LANDORUS, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.LITLEO, - Species.PYROAR, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.BINACLE, - Species.BARBARACLE, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.GOODRA, - Species.PHANTUMP, - Species.TREVENANT, - Species.BERGMITE, - Species.AVALUGG, - Species.ZYGARDE, - Species.DIANCIE, - Species.VOLCANION, - Species.INCINEROAR, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MUDBRAY, - Species.MUDSDALE, - Species.STUFFUL, - Species.BEWEAR, - Species.ORANGURU, - Species.PASSIMIAN, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.SOLGALEO, - Species.BUZZWOLE, - Species.CELESTEELA, - Species.GUZZLORD, - Species.NECROZMA, - Species.STAKATAKA, - Species.RILLABOOM, - Species.GREEDENT, - Species.DREDNAW, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CURSOLA, - Species.RUNERIGUS, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.GLASTRIER, - Species.SPECTRIER, - Species.WYRDEER, - Species.URSALUNA, - Species.LECHONK, - Species.OINKOLOGNE, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.KLAWF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.VAROOM, - Species.REVAVROOM, - Species.ORTHWORM, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.CETODDLE, - Species.CETITAN, - Species.DONDOZO, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.BAXCALIBUR, - Species.TING_LU, - Species.KORAIDON, - Species.GOUGING_FIRE, - Species.IRON_BOULDER, - Species.IRON_CROWN, + [MoveId.BULLDOZE]: [ + SpeciesId.VENUSAUR, + SpeciesId.CHARIZARD, + SpeciesId.BLASTOISE, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.ONIX, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.MEGANIUM, + SpeciesId.TYPHLOSION, + SpeciesId.FERALIGATR, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.MANTINE, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.SCEPTILE, + SpeciesId.BLAZIKEN, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.BRELOOM, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.SWALOT, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.GRUMPIG, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ALTARIA, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.CRADILY, + SpeciesId.ARMALDO, + SpeciesId.MILOTIC, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.RELICANTH, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.BIBAREL, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.PURUGLY, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.MANTYKE, + SpeciesId.ABOMASNOW, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.SAMUROTT, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.CONKELDURR, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SCOLIPEDE, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARMANITAN, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FERROTHORN, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.STUNFISK, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.BOUFFALANT, + SpeciesId.HYDREIGON, + SpeciesId.TERRAKION, + SpeciesId.LANDORUS, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.GOODRA, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.VOLCANION, + SpeciesId.INCINEROAR, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.SOLGALEO, + SpeciesId.BUZZWOLE, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.STAKATAKA, + SpeciesId.RILLABOOM, + SpeciesId.GREEDENT, + SpeciesId.DREDNAW, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.WYRDEER, + SpeciesId.URSALUNA, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.KLAWF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.ORTHWORM, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.DONDOZO, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.BAXCALIBUR, + SpeciesId.TING_LU, + SpeciesId.KORAIDON, + SpeciesId.GOUGING_FIRE, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, [ - Species.WORMADAM, + SpeciesId.WORMADAM, "sandy", ], - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_DARMANITAN, - Species.GALAR_STUNFISK, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_STUNFISK, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", "shadow", ], - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, - Species.HISUI_SAMUROTT, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.FROST_BREATH]: [ - Species.DEWGONG, - Species.CLOYSTER, - Species.JYNX, - Species.LAPRAS, - Species.ARTICUNO, - Species.MEW, - Species.DELIBIRD, - Species.SMOOCHUM, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.REGICE, - Species.SNOVER, - Species.ABOMASNOW, - Species.GLACEON, - Species.FROSLASS, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.AMAURA, - Species.AURORUS, - Species.BERGMITE, - Species.AVALUGG, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.MAREANIE, - Species.TOXAPEX, - Species.DEWPIDER, - Species.ARAQUANID, - Species.GOLISOPOD, - Species.BRUXISH, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, + [MoveId.FROST_BREATH]: [ + SpeciesId.DEWGONG, + SpeciesId.CLOYSTER, + SpeciesId.JYNX, + SpeciesId.LAPRAS, + SpeciesId.ARTICUNO, + SpeciesId.MEW, + SpeciesId.DELIBIRD, + SpeciesId.SMOOCHUM, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.REGICE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.GLACEON, + SpeciesId.FROSLASS, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.GOLISOPOD, + SpeciesId.BRUXISH, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, ], - [Moves.DRAGON_TAIL]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.BLASTOISE, - Species.ARBOK, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.ONIX, - Species.LICKITUNG, - Species.RHYDON, - Species.GYARADOS, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.MEGANIUM, - Species.FERALIGATR, - Species.AMPHAROS, - Species.SLOWKING, - Species.STEELIX, - Species.TYRANITAR, - Species.LUGIA, - Species.AGGRON, - Species.VIBRAVA, - Species.FLYGON, - Species.SEVIPER, - Species.MILOTIC, - Species.TROPIUS, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.GROUDON, - Species.RAYQUAZA, - Species.RAMPARDOS, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.DIALGA, - Species.PALKIA, - Species.GIRATINA, - Species.ARCEUS, - Species.SERPERIOR, - Species.SAMUROTT, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ARCHEOPS, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.DRUDDIGON, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.SKRELP, - Species.DRAGALGE, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.GOODRA, - Species.NOIVERN, - Species.ZYGARDE, - Species.SALAZZLE, - Species.TURTONATOR, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.GUZZLORD, - Species.NAGANADEL, - Species.CHEWTLE, - Species.APPLETUN, - Species.DRACOZOLT, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ETERNATUS, - Species.CYCLIZAR, - Species.DUDUNSPARCE, - Species.IRON_JUGULIS, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.ROARING_MOON, - Species.KORAIDON, - Species.MIRAIDON, - Species.DIPPLIN, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.RAGING_BOLT, - Species.ALOLA_EXEGGUTOR, - Species.HISUI_GOODRA, + [MoveId.DRAGON_TAIL]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.BLASTOISE, + SpeciesId.ARBOK, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.ONIX, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.GYARADOS, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.MEGANIUM, + SpeciesId.FERALIGATR, + SpeciesId.AMPHAROS, + SpeciesId.SLOWKING, + SpeciesId.STEELIX, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.AGGRON, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.SEVIPER, + SpeciesId.MILOTIC, + SpeciesId.TROPIUS, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.RAMPARDOS, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.SERPERIOR, + SpeciesId.SAMUROTT, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ARCHEOPS, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.DRUDDIGON, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.GOODRA, + SpeciesId.NOIVERN, + SpeciesId.ZYGARDE, + SpeciesId.SALAZZLE, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.GUZZLORD, + SpeciesId.NAGANADEL, + SpeciesId.CHEWTLE, + SpeciesId.APPLETUN, + SpeciesId.DRACOZOLT, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ETERNATUS, + SpeciesId.CYCLIZAR, + SpeciesId.DUDUNSPARCE, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.DIPPLIN, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.HISUI_GOODRA, ], - [Moves.WORK_UP]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.SANDSHREW, - Species.SANDSLASH, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.CHANSEY, - Species.KANGASKHAN, - Species.TAUROS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.SNORLAX, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.MARILL, - Species.AZUMARILL, - Species.AIPOM, - Species.ESPEON, - Species.UMBREON, - Species.GIRAFARIG, - Species.SNUBBULL, - Species.GRANBULL, - Species.HERACROSS, - Species.TEDDIURSA, - Species.URSARING, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.MILTANK, - Species.BLISSEY, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.ZIGZAGOON, - Species.LINOONE, - Species.TAILLOW, - Species.SWELLOW, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.SKITTY, - Species.DELCATTY, - Species.MEDITITE, - Species.MEDICHAM, - Species.SPINDA, - Species.ZANGOOSE, - Species.CASTFORM, - Species.KECLEON, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.GLAMEOW, - Species.PURUGLY, - Species.HAPPINY, - Species.CHATOT, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.LICKILICKY, - Species.TOGEKISS, - Species.LEAFEON, - Species.GLACEON, - Species.GALLADE, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.MINCCINO, - Species.CINCCINO, - Species.DEERLING, - Species.SAWSBUCK, - Species.MIENFOO, - Species.MIENSHAO, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.KELDEO, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.LITLEO, - Species.PYROAR, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.SYLVEON, - Species.HAWLUCHA, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.STUFFUL, - Species.BEWEAR, - Species.ORANGURU, - Species.PASSIMIAN, - Species.TYPE_NULL, - Species.SILVALLY, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_BULU, - Species.SOLGALEO, - Species.LUNALA, - Species.BUZZWOLE, - Species.MARSHADOW, - Species.ZERAORA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.SIRFETCHD, - Species.CUFANT, - Species.COPPERAJAH, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.KUBFU, - Species.URSHIFU, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.FIDOUGH, - Species.DACHSBUN, - Species.IRON_JUGULIS, - Species.IRON_LEAVES, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, + [MoveId.WORK_UP]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.TAUROS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.AIPOM, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.GIRAFARIG, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.HERACROSS, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SPINDA, + SpeciesId.ZANGOOSE, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.LICKILICKY, + SpeciesId.TOGEKISS, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GALLADE, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_BULU, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.BUZZWOLE, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.SIRFETCHD, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_LEAVES, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "dusk", ], - Species.GALAR_MEOWTH, - Species.GALAR_FARFETCHD, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.PALDEA_TAUROS, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.PALDEA_TAUROS, ], - [Moves.ELECTROWEB]: [ - Species.CATERPIE, - Species.METAPOD, - Species.BUTTERFREE, - Species.WEEDLE, - Species.KAKUNA, - Species.BEEDRILL, - Species.PIKACHU, - Species.RAICHU, - Species.MAGNEMITE, - Species.MAGNETON, - Species.ELECTABUZZ, - Species.PORYGON, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.PICHU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.PORYGON2, - Species.ELEKID, - Species.WURMPLE, - Species.SILCOON, - Species.BEAUTIFLY, - Species.CASCOON, - Species.DUSTOX, - Species.PLUSLE, - Species.MINUN, - Species.BURMY, - Species.WORMADAM, - Species.MOTHIM, - Species.PACHIRISU, - Species.MAGNEZONE, - Species.ELECTIVIRE, - Species.PORYGON_Z, - Species.ROTOM, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.EMOLGA, - Species.JOLTIK, - Species.GALVANTULA, - Species.STUNFISK, - Species.THUNDURUS, - Species.GENESECT, - Species.SPEWPA, - Species.VIVILLON, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.DEDENNE, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.PASSIMIAN, - Species.TOGEDEMARU, - Species.TAPU_KOKO, - Species.PHEROMOSA, - Species.XURKITREE, - Species.MAGEARNA, - Species.ZERAORA, - Species.MORPEKO, - Species.REGIELEKI, - Species.SPIDOPS, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.SANDY_SHOCKS, - Species.IRON_THORNS, - Species.RAGING_BOLT, - Species.ALOLA_RAICHU, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, + [MoveId.ELECTROWEB]: [ + SpeciesId.CATERPIE, + SpeciesId.METAPOD, + SpeciesId.BUTTERFREE, + SpeciesId.WEEDLE, + SpeciesId.KAKUNA, + SpeciesId.BEEDRILL, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.ELECTABUZZ, + SpeciesId.PORYGON, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.PICHU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.PORYGON2, + SpeciesId.ELEKID, + SpeciesId.WURMPLE, + SpeciesId.SILCOON, + SpeciesId.BEAUTIFLY, + SpeciesId.CASCOON, + SpeciesId.DUSTOX, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.BURMY, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.PACHIRISU, + SpeciesId.MAGNEZONE, + SpeciesId.ELECTIVIRE, + SpeciesId.PORYGON_Z, + SpeciesId.ROTOM, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.EMOLGA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.STUNFISK, + SpeciesId.THUNDURUS, + SpeciesId.GENESECT, + SpeciesId.SPEWPA, + SpeciesId.VIVILLON, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.DEDENNE, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.PASSIMIAN, + SpeciesId.TOGEDEMARU, + SpeciesId.TAPU_KOKO, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.MAGEARNA, + SpeciesId.ZERAORA, + SpeciesId.MORPEKO, + SpeciesId.REGIELEKI, + SpeciesId.SPIDOPS, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_THORNS, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, ], - [Moves.WILD_CHARGE]: [ - Species.RATTATA, - Species.RATICATE, - Species.PIKACHU, - Species.RAICHU, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.GROWLITHE, - Species.ARCANINE, - Species.PONYTA, - Species.RAPIDASH, - Species.MAGNEMITE, - Species.MAGNETON, - Species.VOLTORB, - Species.ELECTRODE, - Species.CHANSEY, - Species.ELECTABUZZ, - Species.TAUROS, - Species.JOLTEON, - Species.SNORLAX, - Species.ZAPDOS, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.IGGLYBUFF, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.DUNSPARCE, - Species.SNUBBULL, - Species.GRANBULL, - Species.STANTLER, - Species.ELEKID, - Species.BLISSEY, - Species.RAIKOU, - Species.SLAKING, - Species.SKITTY, - Species.DELCATTY, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.SPINDA, - Species.RAYQUAZA, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.PACHIRISU, - Species.MAGNEZONE, - Species.ELECTIVIRE, - Species.ARCEUS, - Species.VICTINI, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.AUDINO, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.JOLTIK, - Species.GALVANTULA, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.BOUFFALANT, - Species.LARVESTA, - Species.VOLCARONA, - Species.THUNDURUS, - Species.ZEKROM, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.LITLEO, - Species.PYROAR, - Species.SKIDDO, - Species.GOGOAT, - Species.FURFROU, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.DEDENNE, - Species.NOIBAT, - Species.NOIVERN, - Species.VOLCANION, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.TOGEDEMARU, - Species.TAPU_KOKO, - Species.SOLGALEO, - Species.XURKITREE, - Species.ZERAORA, - Species.GREEDENT, - Species.WOOLOO, - Species.DUBWOOL, - Species.YAMPER, - Species.BOLTUND, - Species.TOXTRICITY, - Species.PINCURCHIN, - Species.MORPEKO, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.REGIELEKI, - Species.WYRDEER, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.MABOSSTIFF, - Species.CYCLIZAR, - Species.DUDUNSPARCE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.KORAIDON, - Species.MIRAIDON, - Species.IRON_LEAVES, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.TERAPAGOS, - Species.ALOLA_RAICHU, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.PALDEA_TAUROS, + [MoveId.WILD_CHARGE]: [ + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.CHANSEY, + SpeciesId.ELECTABUZZ, + SpeciesId.TAUROS, + SpeciesId.JOLTEON, + SpeciesId.SNORLAX, + SpeciesId.ZAPDOS, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.IGGLYBUFF, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.DUNSPARCE, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.STANTLER, + SpeciesId.ELEKID, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.SLAKING, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.SPINDA, + SpeciesId.RAYQUAZA, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.PACHIRISU, + SpeciesId.MAGNEZONE, + SpeciesId.ELECTIVIRE, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.AUDINO, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.BOUFFALANT, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.THUNDURUS, + SpeciesId.ZEKROM, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.FURFROU, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.DEDENNE, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.VOLCANION, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.TOGEDEMARU, + SpeciesId.TAPU_KOKO, + SpeciesId.SOLGALEO, + SpeciesId.XURKITREE, + SpeciesId.ZERAORA, + SpeciesId.GREEDENT, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.TOXTRICITY, + SpeciesId.PINCURCHIN, + SpeciesId.MORPEKO, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.REGIELEKI, + SpeciesId.WYRDEER, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MABOSSTIFF, + SpeciesId.CYCLIZAR, + SpeciesId.DUDUNSPARCE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.IRON_LEAVES, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.PALDEA_TAUROS, ], - [Moves.DRILL_RUN]: [ - Species.BEEDRILL, - Species.SPEAROW, - Species.FEAROW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.RAPIDASH, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.CLOYSTER, - Species.ONIX, - Species.RHYHORN, - Species.RHYDON, - Species.GOLDEEN, - Species.SEAKING, - Species.LAPRAS, - Species.MEW, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.STEELIX, - Species.SKARMORY, - Species.DELIBIRD, - Species.HITMONTOP, - Species.BALTOY, - Species.CLAYDOL, - Species.RHYPERIOR, - Species.SAMUROTT, - Species.DRILBUR, - Species.EXCADRILL, - Species.KARRABLAST, - Species.ESCAVALIER, + [MoveId.DRILL_RUN]: [ + SpeciesId.BEEDRILL, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.RAPIDASH, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.CLOYSTER, + SpeciesId.ONIX, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.LAPRAS, + SpeciesId.MEW, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.STEELIX, + SpeciesId.SKARMORY, + SpeciesId.DELIBIRD, + SpeciesId.HITMONTOP, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.RHYPERIOR, + SpeciesId.SAMUROTT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midday", "dusk", ], - Species.GOLISOPOD, - Species.PHEROMOSA, - Species.SILICOBRA, - Species.SANDACONDA, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.BOMBIRDIER, - Species.VELUZA, - Species.DUDUNSPARCE, - Species.ALOLA_SANDSLASH, - Species.GALAR_RAPIDASH, - Species.HISUI_SAMUROTT, - Species.PALDEA_TAUROS, + SpeciesId.GOLISOPOD, + SpeciesId.PHEROMOSA, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.BOMBIRDIER, + SpeciesId.VELUZA, + SpeciesId.DUDUNSPARCE, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.PALDEA_TAUROS, ], - [Moves.RAZOR_SHELL]: [ - Species.SLOWBRO, - Species.SHELLDER, - Species.CLOYSTER, - Species.KRABBY, - Species.KINGLER, - Species.KABUTOPS, - Species.MEW, - Species.SLOWKING, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.CARRACOSTA, - Species.ESCAVALIER, - Species.BINACLE, - Species.BARBARACLE, - Species.GOLISOPOD, - Species.DREDNAW, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.HISUI_SAMUROTT, + [MoveId.RAZOR_SHELL]: [ + SpeciesId.SLOWBRO, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.KABUTOPS, + SpeciesId.MEW, + SpeciesId.SLOWKING, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.CARRACOSTA, + SpeciesId.ESCAVALIER, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.GOLISOPOD, + SpeciesId.DREDNAW, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_SAMUROTT, ], - [Moves.HEAT_CRASH]: [ - Species.CHARIZARD, - Species.ARCANINE, - Species.RHYDON, - Species.SNORLAX, - Species.MEW, - Species.SLUGMA, - Species.MAGCARGO, - Species.BLAZIKEN, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.GROUDON, - Species.RHYPERIOR, - Species.MAGMORTAR, - Species.HEATRAN, - Species.REGIGIGAS, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.GOLURK, - Species.RESHIRAM, - Species.VOLCANION, - Species.INCINEROAR, - Species.TURTONATOR, - Species.SOLGALEO, - Species.GUZZLORD, - Species.STAKATAKA, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.STONJOURNER, - Species.COPPERAJAH, - Species.SKELEDIRGE, - Species.SLITHER_WING, - Species.KORAIDON, - Species.GOUGING_FIRE, - Species.TERAPAGOS, - Species.HISUI_ARCANINE, + [MoveId.HEAT_CRASH]: [ + SpeciesId.CHARIZARD, + SpeciesId.ARCANINE, + SpeciesId.RHYDON, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.BLAZIKEN, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.GROUDON, + SpeciesId.RHYPERIOR, + SpeciesId.MAGMORTAR, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.GOLURK, + SpeciesId.RESHIRAM, + SpeciesId.VOLCANION, + SpeciesId.INCINEROAR, + SpeciesId.TURTONATOR, + SpeciesId.SOLGALEO, + SpeciesId.GUZZLORD, + SpeciesId.STAKATAKA, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.STONJOURNER, + SpeciesId.COPPERAJAH, + SpeciesId.SKELEDIRGE, + SpeciesId.SLITHER_WING, + SpeciesId.KORAIDON, + SpeciesId.GOUGING_FIRE, + SpeciesId.TERAPAGOS, + SpeciesId.HISUI_ARCANINE, ], - [Moves.TAIL_SLAP]: [ - Species.VULPIX, - Species.NINETALES, - Species.MEW, - Species.AIPOM, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BUIZEL, - Species.FLOATZEL, - Species.AMBIPOM, - Species.STUNKY, - Species.SKUNTANK, - Species.MINCCINO, - Species.CINCCINO, - Species.MEOWSTIC, + [MoveId.TAIL_SLAP]: [ + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.MEW, + SpeciesId.AIPOM, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.MEOWSTIC, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midday", "dusk", ], - Species.SKWOVET, - Species.GREEDENT, - Species.NICKIT, - Species.THIEVUL, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.FEZANDIPITI, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.FEZANDIPITI, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, ], - [Moves.HURRICANE]: [ - Species.CHARIZARD, - Species.BUTTERFREE, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.GYARADOS, - Species.AERODACTYL, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CROBAT, - Species.MURKROW, - Species.MANTINE, - Species.KINGDRA, - Species.LUGIA, - Species.SHIFTRY, - Species.TAILLOW, - Species.WINGULL, - Species.PELIPPER, - Species.MASQUERAIN, - Species.SWABLU, - Species.ALTARIA, - Species.CASTFORM, - Species.TROPIUS, - Species.SALAMENCE, - Species.RAYQUAZA, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.VESPIQUEN, - Species.HONCHKROW, - Species.ARCEUS, - Species.UNFEZANT, - Species.WHIMSICOTT, - Species.DUCKLETT, - Species.SWANNA, - Species.RUFFLET, - Species.BRAVIARY, - Species.MANDIBUZZ, - Species.VOLCARONA, - Species.TORNADUS, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.DECIDUEYE, - Species.ORICORIO, - Species.DRAMPA, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.SANDACONDA, - Species.CRAMORANT, - Species.FROSMOTH, - Species.QUAQUAVAL, - Species.SQUAWKABILLY, - Species.WATTREL, - Species.KILOWATTREL, - Species.BOMBIRDIER, - Species.FLAMIGO, - Species.DUDUNSPARCE, - Species.SLITHER_WING, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.ROARING_MOON, - Species.WALKING_WAKE, - Species.FEZANDIPITI, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.HISUI_LILLIGANT, - Species.HISUI_BRAVIARY, + [MoveId.HURRICANE]: [ + SpeciesId.CHARIZARD, + SpeciesId.BUTTERFREE, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.GYARADOS, + SpeciesId.AERODACTYL, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CROBAT, + SpeciesId.MURKROW, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.LUGIA, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.MASQUERAIN, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.CASTFORM, + SpeciesId.TROPIUS, + SpeciesId.SALAMENCE, + SpeciesId.RAYQUAZA, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.VESPIQUEN, + SpeciesId.HONCHKROW, + SpeciesId.ARCEUS, + SpeciesId.UNFEZANT, + SpeciesId.WHIMSICOTT, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.MANDIBUZZ, + SpeciesId.VOLCARONA, + SpeciesId.TORNADUS, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.DECIDUEYE, + SpeciesId.ORICORIO, + SpeciesId.DRAMPA, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.FROSMOTH, + SpeciesId.QUAQUAVAL, + SpeciesId.SQUAWKABILLY, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.BOMBIRDIER, + SpeciesId.FLAMIGO, + SpeciesId.DUDUNSPARCE, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.ROARING_MOON, + SpeciesId.WALKING_WAKE, + SpeciesId.FEZANDIPITI, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.SNARL]: [ - Species.EKANS, - Species.ARBOK, - Species.VULPIX, - Species.NINETALES, - Species.MEOWTH, - Species.PERSIAN, - Species.GROWLITHE, - Species.ARCANINE, - Species.MEW, - Species.UMBREON, - Species.MURKROW, - Species.SNUBBULL, - Species.GRANBULL, - Species.SNEASEL, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SABLEYE, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.CARVANHA, - Species.SHARPEDO, - Species.SPOINK, - Species.GRUMPIG, - Species.SEVIPER, - Species.CRAWDAUNT, - Species.CHIMECHO, - Species.ABSOL, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.FLOATZEL, - Species.HONCHKROW, - Species.STUNKY, - Species.SKUNTANK, - Species.SPIRITOMB, - Species.DRAPION, - Species.WEAVILE, - Species.DARKRAI, - Species.ARCEUS, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ZORUA, - Species.ZOROARK, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.VULLABY, - Species.MANDIBUZZ, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.THUNDURUS, - Species.LITLEO, - Species.PYROAR, - Species.PANGORO, - Species.FURFROU, - Species.YVELTAL, - Species.INCINEROAR, - Species.ROCKRUFF, - Species.LYCANROC, - Species.GOLISOPOD, - Species.SILVALLY, - Species.DRAMPA, - Species.TAPU_BULU, - Species.SOLGALEO, - Species.GUZZLORD, - Species.NAGANADEL, - Species.ZERAORA, - Species.RILLABOOM, - Species.CINDERACE, - Species.NICKIT, - Species.THIEVUL, - Species.YAMPER, - Species.BOLTUND, - Species.TOXTRICITY, - Species.OBSTAGOON, - Species.MORPEKO, - Species.COPPERAJAH, - Species.DURALUDON, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ZARUDE, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.FIDOUGH, - Species.DACHSBUN, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.BOMBIRDIER, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.KINGAMBIT, - Species.IRON_JUGULIS, - Species.IRON_THORNS, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.OKIDOGI, - Species.ARCHALUDON, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.HISUI_ARCANINE, - Species.HISUI_SAMUROTT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.BLOODMOON_URSALUNA, + [MoveId.SNARL]: [ + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.MEW, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SNEASEL, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SABLEYE, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SEVIPER, + SpeciesId.CRAWDAUNT, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.FLOATZEL, + SpeciesId.HONCHKROW, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.SPIRITOMB, + SpeciesId.DRAPION, + SpeciesId.WEAVILE, + SpeciesId.DARKRAI, + SpeciesId.ARCEUS, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.THUNDURUS, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.YVELTAL, + SpeciesId.INCINEROAR, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.GOLISOPOD, + SpeciesId.SILVALLY, + SpeciesId.DRAMPA, + SpeciesId.TAPU_BULU, + SpeciesId.SOLGALEO, + SpeciesId.GUZZLORD, + SpeciesId.NAGANADEL, + SpeciesId.ZERAORA, + SpeciesId.RILLABOOM, + SpeciesId.CINDERACE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.TOXTRICITY, + SpeciesId.OBSTAGOON, + SpeciesId.MORPEKO, + SpeciesId.COPPERAJAH, + SpeciesId.DURALUDON, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ZARUDE, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.BOMBIRDIER, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.KINGAMBIT, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_THORNS, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.OKIDOGI, + SpeciesId.ARCHALUDON, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.BLOODMOON_URSALUNA, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "single-strike", ], ], - [Moves.PHANTOM_FORCE]: [ - Species.HAUNTER, - Species.GENGAR, - Species.MEW, - Species.MISDREAVUS, - Species.SHEDINJA, - Species.SABLEYE, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.MISMAGIUS, - Species.SPIRITOMB, - Species.DUSKNOIR, - Species.GIRATINA, - Species.ARCEUS, - Species.COFAGRIGUS, - Species.GOLETT, - Species.GOLURK, - Species.PHANTUMP, - Species.TREVENANT, - Species.GOURGEIST, - Species.YVELTAL, - Species.HOOPA, - Species.DECIDUEYE, - Species.MIMIKYU, - Species.DHELMISE, - Species.LUNALA, - Species.MARSHADOW, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.RUNERIGUS, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.SPECTRIER, - Species.BASCULEGION, - Species.CERULEDGE, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.ANNIHILAPE, - Species.FLUTTER_MANE, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.PECHARUNT, + [MoveId.PHANTOM_FORCE]: [ + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.MEW, + SpeciesId.MISDREAVUS, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.MISMAGIUS, + SpeciesId.SPIRITOMB, + SpeciesId.DUSKNOIR, + SpeciesId.GIRATINA, + SpeciesId.ARCEUS, + SpeciesId.COFAGRIGUS, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.GOURGEIST, + SpeciesId.YVELTAL, + SpeciesId.HOOPA, + SpeciesId.DECIDUEYE, + SpeciesId.MIMIKYU, + SpeciesId.DHELMISE, + SpeciesId.LUNALA, + SpeciesId.MARSHADOW, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.RUNERIGUS, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.SPECTRIER, + SpeciesId.BASCULEGION, + SpeciesId.CERULEDGE, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.ANNIHILAPE, + SpeciesId.FLUTTER_MANE, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.PECHARUNT, [ - Species.CALYREX, + SpeciesId.CALYREX, "shadow", ], - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, ], - [Moves.PETAL_BLIZZARD]: [ - Species.VENUSAUR, - Species.GLOOM, - Species.VILEPLUME, - Species.MEW, - Species.MEGANIUM, - Species.BELLOSSOM, - Species.SUNFLORA, - Species.SHIFTRY, - Species.ROSELIA, - Species.TROPIUS, - Species.ROSERADE, - Species.CHERUBI, - Species.CHERRIM, - Species.SHAYMIN, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.LILLIGANT, - Species.MARACTUS, - Species.SAWSBUCK, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.FOMANTIS, - Species.LURANTIS, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ZARUDE, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.ARBOLIVA, - Species.ETERNAL_FLOETTE, - Species.HISUI_LILLIGANT, + [MoveId.PETAL_BLIZZARD]: [ + SpeciesId.VENUSAUR, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.MEW, + SpeciesId.MEGANIUM, + SpeciesId.BELLOSSOM, + SpeciesId.SUNFLORA, + SpeciesId.SHIFTRY, + SpeciesId.ROSELIA, + SpeciesId.TROPIUS, + SpeciesId.ROSERADE, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHAYMIN, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.LILLIGANT, + SpeciesId.MARACTUS, + SpeciesId.SAWSBUCK, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ZARUDE, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.ARBOLIVA, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.HISUI_LILLIGANT, ], - [Moves.DISARMING_VOICE]: [ - Species.PIKACHU, - Species.RAICHU, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.CHANSEY, - Species.MEW, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.MARILL, - Species.AZUMARILL, - Species.BLISSEY, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.WHISMUR, - Species.SKITTY, - Species.DELCATTY, - Species.ILLUMISE, - Species.SWABLU, - Species.ALTARIA, - Species.MILOTIC, - Species.CHIMECHO, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.HAPPINY, - Species.GALLADE, - Species.PANSAGE, - Species.PANSEAR, - Species.PANPOUR, - Species.AUDINO, - Species.DUCKLETT, - Species.SWANNA, - Species.MELOETTA, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.ESPURR, - Species.MEOWSTIC, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SYLVEON, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.TOGEDEMARU, - Species.TAPU_FINI, - Species.MAGEARNA, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.INDEEDEE, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.FLITTLE, - Species.ESPATHRA, - Species.FINIZEN, - Species.PALAFIN, - Species.FLUTTER_MANE, - Species.FEZANDIPITI, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ETERNAL_FLOETTE, + [MoveId.DISARMING_VOICE]: [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.CHANSEY, + SpeciesId.MEW, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.BLISSEY, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.WHISMUR, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.ILLUMISE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.MILOTIC, + SpeciesId.CHIMECHO, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.HAPPINY, + SpeciesId.GALLADE, + SpeciesId.PANSAGE, + SpeciesId.PANSEAR, + SpeciesId.PANPOUR, + SpeciesId.AUDINO, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.MELOETTA, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SYLVEON, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.TOGEDEMARU, + SpeciesId.TAPU_FINI, + SpeciesId.MAGEARNA, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.INDEEDEE, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.FLUTTER_MANE, + SpeciesId.FEZANDIPITI, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ETERNAL_FLOETTE, ], - [Moves.DRAINING_KISS]: [ - Species.BUTTERFREE, - Species.PIKACHU, - Species.RAICHU, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.DROWZEE, - Species.HYPNO, - Species.JYNX, - Species.MEW, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.MARILL, - Species.AZUMARILL, - Species.ESPEON, - Species.MISDREAVUS, - Species.SMOOCHUM, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.AZURILL, - Species.MAWILE, - Species.ILLUMISE, - Species.MILOTIC, - Species.CHIMECHO, - Species.GOREBYSS, - Species.LUVDISC, - Species.LATIAS, - Species.CHERUBI, - Species.CHERRIM, - Species.MISMAGIUS, - Species.TOGEKISS, - Species.GALLADE, - Species.FROSLASS, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.AUDINO, - Species.VIVILLON, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.SYLVEON, - Species.DEDENNE, - Species.KLEFKI, - Species.XERNEAS, - Species.DIANCIE, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.MORELULL, - Species.SHIINOTIC, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.MIMIKYU, - Species.TAPU_LELE, - Species.TAPU_FINI, - Species.MAGEARNA, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.MILCERY, - Species.ALCREMIE, - Species.INDEEDEE, - Species.SPECTRIER, - Species.CALYREX, - Species.ENAMORUS, - Species.DACHSBUN, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.FINIZEN, - Species.PALAFIN, - Species.FLUTTER_MANE, - Species.ALOLA_RAICHU, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ETERNAL_FLOETTE, + [MoveId.DRAINING_KISS]: [ + SpeciesId.BUTTERFREE, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.JYNX, + SpeciesId.MEW, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.ESPEON, + SpeciesId.MISDREAVUS, + SpeciesId.SMOOCHUM, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.AZURILL, + SpeciesId.MAWILE, + SpeciesId.ILLUMISE, + SpeciesId.MILOTIC, + SpeciesId.CHIMECHO, + SpeciesId.GOREBYSS, + SpeciesId.LUVDISC, + SpeciesId.LATIAS, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.MISMAGIUS, + SpeciesId.TOGEKISS, + SpeciesId.GALLADE, + SpeciesId.FROSLASS, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.AUDINO, + SpeciesId.VIVILLON, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.SYLVEON, + SpeciesId.DEDENNE, + SpeciesId.KLEFKI, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.MIMIKYU, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_FINI, + SpeciesId.MAGEARNA, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.INDEEDEE, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.ENAMORUS, + SpeciesId.DACHSBUN, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.FLUTTER_MANE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ETERNAL_FLOETTE, ], - [Moves.GRASSY_TERRAIN]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.TANGELA, - Species.MEW, - Species.CHIKORITA, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.SUNKERN, - Species.SUNFLORA, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.SHROOMISH, - Species.BRELOOM, - Species.CACNEA, - Species.CACTURNE, - Species.CRADILY, - Species.TROPIUS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.ROSERADE, - Species.CHERUBI, - Species.CHERRIM, - Species.TANGROWTH, - Species.ARCEUS, - Species.SNIVY, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.LILLIGANT, - Species.MARACTUS, - Species.DEERLING, - Species.SAWSBUCK, - Species.FOONGUS, - Species.AMOONGUSS, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PHANTUMP, - Species.TREVENANT, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.FOMANTIS, - Species.LURANTIS, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.TAPU_BULU, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.FLAPPLE, - Species.APPLETUN, - Species.ZARUDE, - Species.CALYREX, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.BRUTE_BONNET, - Species.WO_CHIEN, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OGERPON, - Species.HYDRAPPLE, - Species.ALOLA_EXEGGUTOR, - Species.ETERNAL_FLOETTE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, + [MoveId.GRASSY_TERRAIN]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.TANGELA, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.CRADILY, + SpeciesId.TROPIUS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.ROSERADE, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.TANGROWTH, + SpeciesId.ARCEUS, + SpeciesId.SNIVY, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.LILLIGANT, + SpeciesId.MARACTUS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.TAPU_BULU, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.ZARUDE, + SpeciesId.CALYREX, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.BRUTE_BONNET, + SpeciesId.WO_CHIEN, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OGERPON, + SpeciesId.HYDRAPPLE, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.MISTY_TERRAIN]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MR_MIME, - Species.MEW, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.MARILL, - Species.AZUMARILL, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.MAWILE, - Species.MIME_JR, - Species.GALLADE, - Species.ARCEUS, - Species.AUDINO, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.ALOMOMOLA, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, + [MoveId.MISTY_TERRAIN]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MR_MIME, + SpeciesId.MEW, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.MAWILE, + SpeciesId.MIME_JR, + SpeciesId.GALLADE, + SpeciesId.ARCEUS, + SpeciesId.AUDINO, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.ALOMOMOLA, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, [ - Species.MEOWSTIC, + SpeciesId.MEOWSTIC, "male", ], - Species.SPRITZEE, - Species.AROMATISSE, - Species.SYLVEON, - Species.DEDENNE, - Species.CARBINK, - Species.KLEFKI, - Species.XERNEAS, - Species.VOLCANION, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.MIMIKYU, - Species.TAPU_FINI, - Species.MAGEARNA, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.MR_RIME, - Species.MILCERY, - Species.ALCREMIE, - Species.ZACIAN, - Species.ENAMORUS, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SCREAM_TAIL, - Species.FLUTTER_MANE, - Species.IRON_VALIANT, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ETERNAL_FLOETTE, - Species.GALAR_RAPIDASH, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SYLVEON, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.KLEFKI, + SpeciesId.XERNEAS, + SpeciesId.VOLCANION, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.MIMIKYU, + SpeciesId.TAPU_FINI, + SpeciesId.MAGEARNA, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.MR_RIME, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.ZACIAN, + SpeciesId.ENAMORUS, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SCREAM_TAIL, + SpeciesId.FLUTTER_MANE, + SpeciesId.IRON_VALIANT, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, ], - [Moves.PLAY_ROUGH]: [ - Species.PIKACHU, - Species.RAICHU, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.GROWLITHE, - Species.ARCANINE, - Species.PONYTA, - Species.RAPIDASH, - Species.DEWGONG, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.SENTRET, - Species.FURRET, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SNUBBULL, - Species.GRANBULL, - Species.TEDDIURSA, - Species.URSARING, - Species.PHANPY, - Species.DONPHAN, - Species.MILTANK, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.LINOONE, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.SKITTY, - Species.DELCATTY, - Species.MAWILE, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.SWABLU, - Species.ALTARIA, - Species.ABSOL, - Species.JIRACHI, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.PACHIRISU, - Species.CHERRIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.GLAMEOW, - Species.PURUGLY, - Species.STUNKY, - Species.SKUNTANK, - Species.TOGEKISS, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.SHAYMIN, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.WHIMSICOTT, - Species.MINCCINO, - Species.CINCCINO, - Species.DEERLING, - Species.SAWSBUCK, - Species.ALOMOMOLA, - Species.CUBCHOO, - Species.BEARTIC, - Species.MELOETTA, - Species.SKIDDO, - Species.GOGOAT, - Species.ESPURR, - Species.MEOWSTIC, - Species.SWIRLIX, - Species.SLURPUFF, - Species.SKRELP, - Species.DRAGALGE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.SYLVEON, - Species.DEDENNE, - Species.KLEFKI, - Species.XERNEAS, - Species.DIANCIE, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.KOMALA, - Species.MIMIKYU, - Species.DRAMPA, - Species.TAPU_LELE, - Species.TAPU_FINI, - Species.MAGEARNA, - Species.ZERAORA, - Species.NICKIT, - Species.THIEVUL, - Species.YAMPER, - Species.BOLTUND, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.PERRSERKER, - Species.ALCREMIE, - Species.FROSMOTH, - Species.INDEEDEE, - Species.CUFANT, - Species.COPPERAJAH, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.URSALUNA, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.LECHONK, - Species.OINKOLOGNE, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.CETODDLE, - Species.CETITAN, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ALOLA_RAICHU, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_WEEZING, - Species.HISUI_TYPHLOSION, + [MoveId.PLAY_ROUGH]: [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.DEWGONG, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.MILTANK, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.LINOONE, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.MAWILE, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ABSOL, + SpeciesId.JIRACHI, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.PACHIRISU, + SpeciesId.CHERRIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.TOGEKISS, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.SHAYMIN, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.WHIMSICOTT, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.ALOMOMOLA, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MELOETTA, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.SYLVEON, + SpeciesId.DEDENNE, + SpeciesId.KLEFKI, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.KOMALA, + SpeciesId.MIMIKYU, + SpeciesId.DRAMPA, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_FINI, + SpeciesId.MAGEARNA, + SpeciesId.ZERAORA, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.PERRSERKER, + SpeciesId.ALCREMIE, + SpeciesId.FROSMOTH, + SpeciesId.INDEEDEE, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.URSALUNA, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_WEEZING, + SpeciesId.HISUI_TYPHLOSION, ], - [Moves.CONFIDE]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.BUTTERFREE, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.PYUKUMUKU, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.BLACEPHALON, - Species.ZERAORA, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, + [MoveId.CONFIDE]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.PYUKUMUKU, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, ], - [Moves.MYSTICAL_FIRE]: [ - Species.CHARIZARD, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.PONYTA, - Species.RAPIDASH, - Species.MR_MIME, - Species.FLAREON, - Species.MOLTRES, - Species.MEW, - Species.TOGEPI, - Species.TOGETIC, - Species.HO_OH, - Species.RALTS, - Species.GARDEVOIR, - Species.LATIAS, - Species.LATIOS, - Species.MISMAGIUS, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.VICTINI, - Species.DARMANITAN, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.VOLCARONA, - Species.RESHIRAM, - Species.DELPHOX, - Species.SYLVEON, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.DIANCIE, - Species.SOLGALEO, - Species.BLACEPHALON, - Species.CENTISKORCH, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.ALCREMIE, - Species.INDEEDEE, - Species.ETERNATUS, - Species.ENAMORUS, - Species.ARMAROUGE, - Species.FLUTTER_MANE, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, + [MoveId.MYSTICAL_FIRE]: [ + SpeciesId.CHARIZARD, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.MR_MIME, + SpeciesId.FLAREON, + SpeciesId.MOLTRES, + SpeciesId.MEW, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.HO_OH, + SpeciesId.RALTS, + SpeciesId.GARDEVOIR, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.MISMAGIUS, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.VICTINI, + SpeciesId.DARMANITAN, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.VOLCARONA, + SpeciesId.RESHIRAM, + SpeciesId.DELPHOX, + SpeciesId.SYLVEON, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.DIANCIE, + SpeciesId.SOLGALEO, + SpeciesId.BLACEPHALON, + SpeciesId.CENTISKORCH, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.ALCREMIE, + SpeciesId.INDEEDEE, + SpeciesId.ETERNATUS, + SpeciesId.ENAMORUS, + SpeciesId.ARMAROUGE, + SpeciesId.FLUTTER_MANE, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, ], - [Moves.EERIE_IMPULSE]: [ - Species.PIKACHU, - Species.RAICHU, - Species.MAGNEMITE, - Species.MAGNETON, - Species.VOLTORB, - Species.ELECTRODE, - Species.JOLTEON, - Species.PORYGON, - Species.ZAPDOS, - Species.MEW, - Species.LANTURN, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.WOOPER, - Species.QUAGSIRE, - Species.PORYGON2, - Species.RAIKOU, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.BALTOY, - Species.CLAYDOL, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.PACHIRISU, - Species.MAGNEZONE, - Species.PORYGON_Z, - Species.ROTOM, - Species.EMOLGA, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.STUNFISK, - Species.THUNDURUS, - Species.HELIOLISK, - Species.DEDENNE, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.TOGEDEMARU, - Species.TAPU_KOKO, - Species.XURKITREE, - Species.MAGEARNA, - Species.BOLTUND, - Species.TOXTRICITY, - Species.MORPEKO, - Species.REGIELEKI, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.SANDY_SHOCKS, - Species.IRON_THORNS, - Species.MIRAIDON, - Species.RAGING_BOLT, - Species.ALOLA_RAICHU, + [MoveId.EERIE_IMPULSE]: [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.JOLTEON, + SpeciesId.PORYGON, + SpeciesId.ZAPDOS, + SpeciesId.MEW, + SpeciesId.LANTURN, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.PORYGON2, + SpeciesId.RAIKOU, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.PACHIRISU, + SpeciesId.MAGNEZONE, + SpeciesId.PORYGON_Z, + SpeciesId.ROTOM, + SpeciesId.EMOLGA, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.STUNFISK, + SpeciesId.THUNDURUS, + SpeciesId.HELIOLISK, + SpeciesId.DEDENNE, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.TOGEDEMARU, + SpeciesId.TAPU_KOKO, + SpeciesId.XURKITREE, + SpeciesId.MAGEARNA, + SpeciesId.BOLTUND, + SpeciesId.TOXTRICITY, + SpeciesId.MORPEKO, + SpeciesId.REGIELEKI, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_THORNS, + SpeciesId.MIRAIDON, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_RAICHU, ], - [Moves.VENOM_DRENCH]: [ - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.ZUBAT, - Species.GOLBAT, - Species.TENTACRUEL, - Species.KOFFING, - Species.WEEZING, - Species.MEW, - Species.CROBAT, - Species.QWILFISH, - Species.ROSERADE, - Species.STUNKY, - Species.SKUNTANK, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WOOBAT, - Species.SWOOBAT, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.TRUBBISH, - Species.GARBODOR, - Species.ACCELGOR, - Species.SKRELP, - Species.DRAGALGE, - Species.PHANTUMP, - Species.TREVENANT, - Species.MAREANIE, - Species.TOXAPEX, - Species.SALANDIT, - Species.SALAZZLE, - Species.PYUKUMUKU, - Species.NIHILEGO, - Species.POIPOLE, - Species.NAGANADEL, - Species.PINCURCHIN, - Species.ETERNATUS, - Species.GALAR_WEEZING, - Species.GALAR_SLOWKING, + [MoveId.VENOM_DRENCH]: [ + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.TENTACRUEL, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.MEW, + SpeciesId.CROBAT, + SpeciesId.QWILFISH, + SpeciesId.ROSERADE, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ACCELGOR, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.PYUKUMUKU, + SpeciesId.NIHILEGO, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.PINCURCHIN, + SpeciesId.ETERNATUS, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_SLOWKING, [ - Species.TOXTRICITY, + SpeciesId.TOXTRICITY, "low-key", ], ], - [Moves.ELECTRIC_TERRAIN]: [ - Species.PIKACHU, - Species.RAICHU, - Species.MAGNEMITE, - Species.MAGNETON, - Species.VOLTORB, - Species.ELECTRODE, - Species.CHANSEY, - Species.JOLTEON, - Species.ZAPDOS, - Species.MEW, - Species.PICHU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BLISSEY, - Species.RAIKOU, - Species.MANECTRIC, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.PACHIRISU, - Species.MAGNEZONE, - Species.ELECTIVIRE, - Species.ROTOM, - Species.ARCEUS, - Species.KLINKLANG, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.STUNFISK, - Species.THUNDURUS, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.DEDENNE, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.TOGEDEMARU, - Species.TAPU_KOKO, - Species.XURKITREE, - Species.ZERAORA, - Species.MELMETAL, - Species.BOLTUND, - Species.TOXTRICITY, - Species.PINCURCHIN, - Species.MORPEKO, - Species.REGIELEKI, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.IRON_VALIANT, - Species.MIRAIDON, - Species.IRON_LEAVES, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.ALOLA_RAICHU, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, + [MoveId.ELECTRIC_TERRAIN]: [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.CHANSEY, + SpeciesId.JOLTEON, + SpeciesId.ZAPDOS, + SpeciesId.MEW, + SpeciesId.PICHU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.MANECTRIC, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.PACHIRISU, + SpeciesId.MAGNEZONE, + SpeciesId.ELECTIVIRE, + SpeciesId.ROTOM, + SpeciesId.ARCEUS, + SpeciesId.KLINKLANG, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.STUNFISK, + SpeciesId.THUNDURUS, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.DEDENNE, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.TOGEDEMARU, + SpeciesId.TAPU_KOKO, + SpeciesId.XURKITREE, + SpeciesId.ZERAORA, + SpeciesId.MELMETAL, + SpeciesId.BOLTUND, + SpeciesId.TOXTRICITY, + SpeciesId.PINCURCHIN, + SpeciesId.MORPEKO, + SpeciesId.REGIELEKI, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.IRON_VALIANT, + SpeciesId.MIRAIDON, + SpeciesId.IRON_LEAVES, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, ], - [Moves.DAZZLING_GLEAM]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.CHANSEY, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.MEW, - Species.CHINCHOU, - Species.LANTURN, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.SUNFLORA, - Species.ESPEON, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.SNUBBULL, - Species.GRANBULL, - Species.BLISSEY, - Species.CELEBI, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.NOSEPASS, - Species.SABLEYE, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.SPOINK, - Species.GRUMPIG, - Species.SWABLU, - Species.ALTARIA, - Species.BALTOY, - Species.CLAYDOL, - Species.SHUPPET, - Species.BANETTE, - Species.CHIMECHO, - Species.JIRACHI, - Species.BUDEW, - Species.ROSERADE, - Species.CHERUBI, - Species.CHERRIM, - Species.MISMAGIUS, - Species.CHINGLING, - Species.MIME_JR, - Species.FINNEON, - Species.LUMINEON, - Species.TOGEKISS, - Species.GALLADE, - Species.PROBOPASS, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.MUNNA, - Species.MUSHARNA, - Species.AUDINO, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.SIGILYPH, - Species.MINCCINO, - Species.CINCCINO, - Species.FRILLISH, - Species.JELLICENT, - Species.MELOETTA, - Species.DELPHOX, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.SYLVEON, - Species.DEDENNE, - Species.CARBINK, - Species.KLEFKI, - Species.XERNEAS, - Species.DIANCIE, - Species.PRIMARINA, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.MORELULL, - Species.SHIINOTIC, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.MINIOR, - Species.MIMIKYU, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.LUNALA, - Species.NIHILEGO, - Species.XURKITREE, - Species.MAGEARNA, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.MR_RIME, - Species.MILCERY, - Species.ALCREMIE, - Species.FROSMOTH, - Species.INDEEDEE, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ENAMORUS, - Species.FIDOUGH, - Species.DACHSBUN, - Species.ARBOLIVA, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.RABSCA, - Species.ESPATHRA, - Species.GLIMMET, - Species.GLIMMORA, - Species.FARIGIRAF, - Species.SCREAM_TAIL, - Species.FLUTTER_MANE, - Species.IRON_MOTH, - Species.GHOLDENGO, - Species.IRON_VALIANT, - Species.MIRAIDON, - Species.FEZANDIPITI, - Species.TERAPAGOS, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ETERNAL_FLOETTE, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.HISUI_BRAVIARY, + [MoveId.DAZZLING_GLEAM]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.CHANSEY, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.MEW, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.SUNFLORA, + SpeciesId.ESPEON, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.BLISSEY, + SpeciesId.CELEBI, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.NOSEPASS, + SpeciesId.SABLEYE, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.CHIMECHO, + SpeciesId.JIRACHI, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.MISMAGIUS, + SpeciesId.CHINGLING, + SpeciesId.MIME_JR, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.TOGEKISS, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.AUDINO, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.SIGILYPH, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.MELOETTA, + SpeciesId.DELPHOX, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.SYLVEON, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.KLEFKI, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.PRIMARINA, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.MINIOR, + SpeciesId.MIMIKYU, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.XURKITREE, + SpeciesId.MAGEARNA, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.MR_RIME, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FROSMOTH, + SpeciesId.INDEEDEE, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ENAMORUS, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.ARBOLIVA, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.RABSCA, + SpeciesId.ESPATHRA, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.FARIGIRAF, + SpeciesId.SCREAM_TAIL, + SpeciesId.FLUTTER_MANE, + SpeciesId.IRON_MOTH, + SpeciesId.GHOLDENGO, + SpeciesId.IRON_VALIANT, + SpeciesId.MIRAIDON, + SpeciesId.FEZANDIPITI, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.INFESTATION]: [ - Species.BUTTERFREE, - Species.BEEDRILL, - Species.EKANS, - Species.ARBOK, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.VENONAT, - Species.VENOMOTH, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GRIMER, - Species.MUK, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.KOFFING, - Species.WEEZING, - Species.TANGELA, - Species.MR_MIME, - Species.MEW, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.WOOPER, - Species.QUAGSIRE, - Species.SHUCKLE, - Species.SLUGMA, - Species.MAGCARGO, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.SURSKIT, - Species.MASQUERAIN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GULPIN, - Species.SWALOT, - Species.SEVIPER, - Species.LILEEP, - Species.CRADILY, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.HUNTAIL, - Species.GOREBYSS, - Species.KRICKETUNE, - Species.WORMADAM, - Species.MOTHIM, - Species.VESPIQUEN, - Species.SHELLOS, - Species.GASTRODON, - Species.MIME_JR, - Species.SPIRITOMB, - Species.SKORUPI, - Species.DRAPION, - Species.CARNIVINE, - Species.TANGROWTH, - Species.DUSKNOIR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TRUBBISH, - Species.GARBODOR, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.JOLTIK, - Species.GALVANTULA, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.DURANT, - Species.GENESECT, - Species.VIVILLON, - Species.PANGORO, - Species.BINACLE, - Species.BARBARACLE, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.MAREANIE, - Species.TOXAPEX, - Species.DEWPIDER, - Species.ARAQUANID, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MIMIKYU, - Species.STAKATAKA, - Species.BLIPBUG, - Species.FROSMOTH, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.DIPPLIN, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, + [MoveId.INFESTATION]: [ + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.TANGELA, + SpeciesId.MR_MIME, + SpeciesId.MEW, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SHUCKLE, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.SEVIPER, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.KRICKETUNE, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.VESPIQUEN, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.MIME_JR, + SpeciesId.SPIRITOMB, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CARNIVINE, + SpeciesId.TANGROWTH, + SpeciesId.DUSKNOIR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.DURANT, + SpeciesId.GENESECT, + SpeciesId.VIVILLON, + SpeciesId.PANGORO, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MIMIKYU, + SpeciesId.STAKATAKA, + SpeciesId.BLIPBUG, + SpeciesId.FROSMOTH, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.DIPPLIN, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, ], - [Moves.POWER_UP_PUNCH]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.GRIMER, - Species.MUK, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.RHYDON, - Species.CHANSEY, - Species.KANGASKHAN, - Species.MR_MIME, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.LEDYBA, - Species.LEDIAN, - Species.FLAAFFY, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.AIPOM, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.SNUBBULL, - Species.GRANBULL, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.DELIBIRD, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.LOMBRE, - Species.LUDICOLO, - Species.NUZLEAF, - Species.SHIFTRY, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.SABLEYE, - Species.MAWILE, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.VOLBEAT, - Species.ILLUMISE, - Species.GULPIN, - Species.SWALOT, - Species.GRUMPIG, - Species.SPINDA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.ZANGOOSE, - Species.KECLEON, - Species.DUSCLOPS, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.GROUDON, - Species.JIRACHI, - Species.DEOXYS, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.KRICKETUNE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.BUIZEL, - Species.FLOATZEL, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.GALLADE, - Species.DUSKNOIR, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.REGIGIGAS, - Species.DARKRAI, - Species.VICTINI, - Species.PIGNITE, - Species.EMBOAR, - Species.WATCHOG, - Species.SIMISAGE, - Species.SIMISEAR, - Species.SIMIPOUR, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.GOTHITELLE, - Species.REUNICLUS, - Species.EELEKTROSS, - Species.CUBCHOO, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.HEATMOR, - Species.MELOETTA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.PANCHAM, - Species.PANGORO, - Species.MEOWSTIC, - Species.BINACLE, - Species.BARBARACLE, - Species.HAWLUCHA, - Species.PHANTUMP, - Species.TREVENANT, - Species.HOOPA, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.BUZZWOLE, - Species.ZERAORA, - Species.TOXEL, - Species.TOXTRICITY, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.GRIMMSNARL, - Species.URSALUNA, - Species.ANNIHILAPE, - Species.KINGAMBIT, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_MAROWAK, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, + [MoveId.POWER_UP_PUNCH]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.KANGASKHAN, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.DELIBIRD, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.ZANGOOSE, + SpeciesId.KECLEON, + SpeciesId.DUSCLOPS, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.KRICKETUNE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.GALLADE, + SpeciesId.DUSKNOIR, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.REGIGIGAS, + SpeciesId.DARKRAI, + SpeciesId.VICTINI, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.WATCHOG, + SpeciesId.SIMISAGE, + SpeciesId.SIMISEAR, + SpeciesId.SIMIPOUR, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.GOTHITELLE, + SpeciesId.REUNICLUS, + SpeciesId.EELEKTROSS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.HEATMOR, + SpeciesId.MELOETTA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.MEOWSTIC, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.HAWLUCHA, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.HOOPA, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.BUZZWOLE, + SpeciesId.ZERAORA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.GRIMMSNARL, + SpeciesId.URSALUNA, + SpeciesId.ANNIHILAPE, + SpeciesId.KINGAMBIT, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, ], - [Moves.DARKEST_LARIAT]: [ - Species.POLIWRATH, - Species.MACHAMP, - Species.SNORLAX, - Species.MEW, - Species.SWAMPERT, - Species.ELECTIVIRE, - Species.DUSKNOIR, - Species.REGIGIGAS, - Species.KROOKODILE, - Species.GOLURK, - Species.PANGORO, - Species.INCINEROAR, - Species.BEWEAR, - Species.TAPU_BULU, - Species.BUZZWOLE, - Species.MELMETAL, - Species.RILLABOOM, - Species.GRIMMSNARL, - Species.URSHIFU, - Species.ZARUDE, + [MoveId.DARKEST_LARIAT]: [ + SpeciesId.POLIWRATH, + SpeciesId.MACHAMP, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.SWAMPERT, + SpeciesId.ELECTIVIRE, + SpeciesId.DUSKNOIR, + SpeciesId.REGIGIGAS, + SpeciesId.KROOKODILE, + SpeciesId.GOLURK, + SpeciesId.PANGORO, + SpeciesId.INCINEROAR, + SpeciesId.BEWEAR, + SpeciesId.TAPU_BULU, + SpeciesId.BUZZWOLE, + SpeciesId.MELMETAL, + SpeciesId.RILLABOOM, + SpeciesId.GRIMMSNARL, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, ], - [Moves.HIGH_HORSEPOWER]: [ - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.DUGTRIO, - Species.POLIWRATH, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.ONIX, - Species.KINGLER, - Species.RHYHORN, - Species.RHYDON, - Species.PINSIR, - Species.TAUROS, - Species.SNORLAX, - Species.MEW, - Species.SUDOWOODO, - Species.QUAGSIRE, - Species.GIRAFARIG, - Species.GLIGAR, - Species.STEELIX, - Species.HERACROSS, - Species.URSARING, - Species.SLUGMA, - Species.SWINUB, - Species.PILOSWINE, - Species.PHANPY, - Species.DONPHAN, - Species.MILTANK, - Species.PUPITAR, - Species.TYRANITAR, - Species.SWAMPERT, - Species.SLAKING, - Species.NOSEPASS, - Species.AGGRON, - Species.NUMEL, - Species.CAMERUPT, - Species.BARBOACH, - Species.WHISCASH, - Species.GROUDON, - Species.TORTERRA, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.RHYPERIOR, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PROBOPASS, - Species.REGIGIGAS, - Species.PIGNITE, - Species.EMBOAR, - Species.ZEBSTRIKA, - Species.DRILBUR, - Species.EXCADRILL, - Species.GURDURR, - Species.CONKELDURR, - Species.KROOKODILE, - Species.SAWSBUCK, - Species.GOLURK, - Species.BOUFFALANT, - Species.TERRAKION, - Species.CHESNAUGHT, - Species.DIGGERSBY, - Species.GOGOAT, - Species.TYRANTRUM, - Species.AVALUGG, - Species.ZYGARDE, - Species.MUDBRAY, - Species.MUDSDALE, - Species.BEWEAR, - Species.TAPU_BULU, - Species.BUZZWOLE, - Species.GUZZLORD, - Species.STAKATAKA, - Species.MELMETAL, - Species.RILLABOOM, - Species.GREEDENT, - Species.DREDNAW, - Species.CARKOL, - Species.COALOSSAL, - Species.APPLETUN, - Species.SANDACONDA, - Species.FALINKS, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.GLASTRIER, - Species.WYRDEER, - Species.URSALUNA, - Species.OINKOLOGNE, - Species.KLAWF, - Species.REVAVROOM, - Species.ORTHWORM, - Species.CETODDLE, - Species.CETITAN, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.GREAT_TUSK, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_THORNS, - Species.BAXCALIBUR, - Species.OKIDOGI, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, + [MoveId.HIGH_HORSEPOWER]: [ + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.DUGTRIO, + SpeciesId.POLIWRATH, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.ONIX, + SpeciesId.KINGLER, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.SUDOWOODO, + SpeciesId.QUAGSIRE, + SpeciesId.GIRAFARIG, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.HERACROSS, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.MILTANK, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.SWAMPERT, + SpeciesId.SLAKING, + SpeciesId.NOSEPASS, + SpeciesId.AGGRON, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.GROUDON, + SpeciesId.TORTERRA, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.RHYPERIOR, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PROBOPASS, + SpeciesId.REGIGIGAS, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.ZEBSTRIKA, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.KROOKODILE, + SpeciesId.SAWSBUCK, + SpeciesId.GOLURK, + SpeciesId.BOUFFALANT, + SpeciesId.TERRAKION, + SpeciesId.CHESNAUGHT, + SpeciesId.DIGGERSBY, + SpeciesId.GOGOAT, + SpeciesId.TYRANTRUM, + SpeciesId.AVALUGG, + SpeciesId.ZYGARDE, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.BEWEAR, + SpeciesId.TAPU_BULU, + SpeciesId.BUZZWOLE, + SpeciesId.GUZZLORD, + SpeciesId.STAKATAKA, + SpeciesId.MELMETAL, + SpeciesId.RILLABOOM, + SpeciesId.GREEDENT, + SpeciesId.DREDNAW, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.APPLETUN, + SpeciesId.SANDACONDA, + SpeciesId.FALINKS, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.GLASTRIER, + SpeciesId.WYRDEER, + SpeciesId.URSALUNA, + SpeciesId.OINKOLOGNE, + SpeciesId.KLAWF, + SpeciesId.REVAVROOM, + SpeciesId.ORTHWORM, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.GREAT_TUSK, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_THORNS, + SpeciesId.BAXCALIBUR, + SpeciesId.OKIDOGI, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_AVALUGG, - Species.PALDEA_TAUROS, - Species.BLOODMOON_URSALUNA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_TAUROS, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.SOLAR_BLADE]: [ - Species.PONYTA, - Species.RAPIDASH, - Species.FARFETCHD, - Species.MEW, - Species.CELEBI, - Species.GROVYLE, - Species.SCEPTILE, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TROPIUS, - Species.CHERRIM, - Species.TANGROWTH, - Species.LEAFEON, - Species.GALLADE, - Species.LILLIGANT, - Species.CRUSTLE, - Species.VIRIZION, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.DECIDUEYE, - Species.LURANTIS, - Species.TSAREENA, - Species.DHELMISE, - Species.KARTANA, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SIRFETCHD, - Species.ZACIAN, - Species.ZARUDE, - Species.CALYREX, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.CERULEDGE, - Species.WO_CHIEN, - Species.IRON_LEAVES, - Species.OGERPON, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.GALAR_FARFETCHD, - Species.HISUI_LILLIGANT, + [MoveId.SOLAR_BLADE]: [ + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.FARFETCHD, + SpeciesId.MEW, + SpeciesId.CELEBI, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TROPIUS, + SpeciesId.CHERRIM, + SpeciesId.TANGROWTH, + SpeciesId.LEAFEON, + SpeciesId.GALLADE, + SpeciesId.LILLIGANT, + SpeciesId.CRUSTLE, + SpeciesId.VIRIZION, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.DECIDUEYE, + SpeciesId.LURANTIS, + SpeciesId.TSAREENA, + SpeciesId.DHELMISE, + SpeciesId.KARTANA, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SIRFETCHD, + SpeciesId.ZACIAN, + SpeciesId.ZARUDE, + SpeciesId.CALYREX, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.CERULEDGE, + SpeciesId.WO_CHIEN, + SpeciesId.IRON_LEAVES, + SpeciesId.OGERPON, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.HISUI_LILLIGANT, ], - [Moves.THROAT_CHOP]: [ - Species.BEEDRILL, - Species.RATICATE, - Species.FEAROW, - Species.ARBOK, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.PARASECT, - Species.MEOWTH, - Species.PERSIAN, - Species.PRIMEAPE, - Species.POLIWRATH, - Species.MACHAMP, - Species.RAPIDASH, - Species.FARFETCHD, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.GOLDEEN, - Species.SEAKING, - Species.PINSIR, - Species.TAUROS, - Species.MEW, - Species.TYPHLOSION, - Species.ARIADOS, - Species.UMBREON, - Species.GLIGAR, - Species.QWILFISH, - Species.HERACROSS, - Species.SNEASEL, - Species.URSARING, - Species.CORSOLA, - Species.HOUNDOOM, - Species.STANTLER, - Species.RAIKOU, - Species.SCEPTILE, - Species.MIGHTYENA, - Species.LINOONE, - Species.SHIFTRY, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.HARIYAMA, - Species.VIBRAVA, - Species.FLYGON, - Species.ZANGOOSE, - Species.SEVIPER, - Species.BANETTE, - Species.ABSOL, - Species.DEOXYS, - Species.EMPOLEON, - Species.KRICKETUNE, - Species.LUXRAY, - Species.PURUGLY, - Species.STUNKY, - Species.SKUNTANK, - Species.DRAPION, - Species.TOXICROAK, - Species.CARNIVINE, - Species.WEAVILE, - Species.GLISCOR, - Species.GALLADE, - Species.DARKRAI, - Species.LIEPARD, - Species.SIMISAGE, - Species.SIMISEAR, - Species.SIMIPOUR, - Species.GIGALITH, - Species.AUDINO, - Species.SAWK, - Species.LEAVANNY, - Species.SCOLIPEDE, - Species.KROOKODILE, - Species.MARACTUS, - Species.SCRAFTY, - Species.ZOROARK, - Species.GALVANTULA, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.BEARTIC, - Species.BISHARP, - Species.BOUFFALANT, - Species.HEATMOR, - Species.HYDREIGON, - Species.PANGORO, - Species.MALAMAR, - Species.HAWLUCHA, - Species.HOOPA, - Species.INCINEROAR, - Species.GOLISOPOD, - Species.PHEROMOSA, - Species.MARSHADOW, - Species.NAGANADEL, - Species.ZERAORA, - Species.DREDNAW, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXTRICITY, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.FALINKS, - Species.PINCURCHIN, - Species.ZARUDE, - Species.GLASTRIER, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.LOKIX, - Species.WIGLETT, - Species.WUGTRIO, - Species.FLAMIGO, - Species.CHIEN_PAO, - Species.TING_LU, - Species.ROARING_MOON, - Species.OGERPON, - Species.IRON_BOULDER, - Species.ALOLA_RATICATE, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_MAROWAK, + [MoveId.THROAT_CHOP]: [ + SpeciesId.BEEDRILL, + SpeciesId.RATICATE, + SpeciesId.FEAROW, + SpeciesId.ARBOK, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.PARASECT, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PRIMEAPE, + SpeciesId.POLIWRATH, + SpeciesId.MACHAMP, + SpeciesId.RAPIDASH, + SpeciesId.FARFETCHD, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.ARIADOS, + SpeciesId.UMBREON, + SpeciesId.GLIGAR, + SpeciesId.QWILFISH, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.URSARING, + SpeciesId.CORSOLA, + SpeciesId.HOUNDOOM, + SpeciesId.STANTLER, + SpeciesId.RAIKOU, + SpeciesId.SCEPTILE, + SpeciesId.MIGHTYENA, + SpeciesId.LINOONE, + SpeciesId.SHIFTRY, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.HARIYAMA, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.BANETTE, + SpeciesId.ABSOL, + SpeciesId.DEOXYS, + SpeciesId.EMPOLEON, + SpeciesId.KRICKETUNE, + SpeciesId.LUXRAY, + SpeciesId.PURUGLY, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.DRAPION, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.WEAVILE, + SpeciesId.GLISCOR, + SpeciesId.GALLADE, + SpeciesId.DARKRAI, + SpeciesId.LIEPARD, + SpeciesId.SIMISAGE, + SpeciesId.SIMISEAR, + SpeciesId.SIMIPOUR, + SpeciesId.GIGALITH, + SpeciesId.AUDINO, + SpeciesId.SAWK, + SpeciesId.LEAVANNY, + SpeciesId.SCOLIPEDE, + SpeciesId.KROOKODILE, + SpeciesId.MARACTUS, + SpeciesId.SCRAFTY, + SpeciesId.ZOROARK, + SpeciesId.GALVANTULA, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.BEARTIC, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.HEATMOR, + SpeciesId.HYDREIGON, + SpeciesId.PANGORO, + SpeciesId.MALAMAR, + SpeciesId.HAWLUCHA, + SpeciesId.HOOPA, + SpeciesId.INCINEROAR, + SpeciesId.GOLISOPOD, + SpeciesId.PHEROMOSA, + SpeciesId.MARSHADOW, + SpeciesId.NAGANADEL, + SpeciesId.ZERAORA, + SpeciesId.DREDNAW, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXTRICITY, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.ZARUDE, + SpeciesId.GLASTRIER, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.LOKIX, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.FLAMIGO, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.ROARING_MOON, + SpeciesId.OGERPON, + SpeciesId.IRON_BOULDER, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_MAROWAK, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_MEOWTH, - Species.GALAR_RAPIDASH, - Species.GALAR_FARFETCHD, - Species.GALAR_ZAPDOS, - Species.GALAR_CORSOLA, - Species.GALAR_LINOONE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_LINOONE, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "single-strike", ], [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], ], - [Moves.POLLEN_PUFF]: [ - Species.BUTTERFREE, - Species.GLOOM, - Species.VILEPLUME, - Species.MEW, - Species.BELLOSSOM, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.CELEBI, - Species.VESPIQUEN, - Species.CHERUBI, - Species.CHERRIM, - Species.LEAVANNY, - Species.PETILIL, - Species.LILLIGANT, - Species.FOONGUS, - Species.AMOONGUSS, - Species.VIVILLON, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.COMFEY, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.CALYREX, - Species.MEOWSCARADA, - Species.ARBOLIVA, - Species.BRUTE_BONNET, - Species.WO_CHIEN, - Species.DIPPLIN, - Species.HYDRAPPLE, - Species.ETERNAL_FLOETTE, - Species.HISUI_LILLIGANT, + [MoveId.POLLEN_PUFF]: [ + SpeciesId.BUTTERFREE, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.MEW, + SpeciesId.BELLOSSOM, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.CELEBI, + SpeciesId.VESPIQUEN, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.LEAVANNY, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.VIVILLON, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.COMFEY, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.CALYREX, + SpeciesId.MEOWSCARADA, + SpeciesId.ARBOLIVA, + SpeciesId.BRUTE_BONNET, + SpeciesId.WO_CHIEN, + SpeciesId.DIPPLIN, + SpeciesId.HYDRAPPLE, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.HISUI_LILLIGANT, ], - [Moves.PSYCHIC_TERRAIN]: [ - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.DROWZEE, - Species.HYPNO, - Species.MR_MIME, - Species.JYNX, - Species.MEWTWO, - Species.MEW, - Species.ESPEON, - Species.SLOWKING, - Species.GIRAFARIG, - Species.CELEBI, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.MEDITITE, - Species.MEDICHAM, - Species.SPOINK, - Species.GRUMPIG, - Species.LUNATONE, - Species.SOLROCK, - Species.BALTOY, - Species.CLAYDOL, - Species.BRONZOR, - Species.BRONZONG, - Species.MIME_JR, - Species.GALLADE, - Species.CRESSELIA, - Species.ARCEUS, - Species.MUSHARNA, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.BEHEEYEM, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.MEOWSTIC, - Species.HOOPA, - Species.ORANGURU, - Species.BRUXISH, - Species.TAPU_LELE, - Species.DOTTLER, - Species.ORBEETLE, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.MR_RIME, - Species.INDEEDEE, - Species.CALYREX, - Species.ARMAROUGE, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.VELUZA, - Species.FARIGIRAF, - Species.SCREAM_TAIL, - Species.IRON_VALIANT, - Species.IRON_LEAVES, - Species.MUNKIDORI, - Species.ALOLA_RAICHU, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_SLOWKING, - Species.HISUI_BRAVIARY, + [MoveId.PSYCHIC_TERRAIN]: [ + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.ESPEON, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.CELEBI, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MIME_JR, + SpeciesId.GALLADE, + SpeciesId.CRESSELIA, + SpeciesId.ARCEUS, + SpeciesId.MUSHARNA, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.BEHEEYEM, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.MEOWSTIC, + SpeciesId.HOOPA, + SpeciesId.ORANGURU, + SpeciesId.BRUXISH, + SpeciesId.TAPU_LELE, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.MR_RIME, + SpeciesId.INDEEDEE, + SpeciesId.CALYREX, + SpeciesId.ARMAROUGE, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.VELUZA, + SpeciesId.FARIGIRAF, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_LEAVES, + SpeciesId.MUNKIDORI, + SpeciesId.ALOLA_RAICHU, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.LUNGE]: [ - Species.VENONAT, - Species.VENOMOTH, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.DODUO, - Species.DODRIO, - Species.MUK, - Species.SCYTHER, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.YANMA, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.SCIZOR, - Species.HERACROSS, - Species.STANTLER, - Species.SURSKIT, - Species.MASQUERAIN, - Species.VOLBEAT, - Species.SPOINK, - Species.GRUMPIG, - Species.CACTURNE, - Species.KRICKETOT, - Species.KRICKETUNE, - Species.MOTHIM, - Species.COMBEE, - Species.VESPIQUEN, - Species.YANMEGA, - Species.GLISCOR, - Species.HEATRAN, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.JOLTIK, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.LARVESTA, - Species.VOLCARONA, - Species.HAWLUCHA, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.RIBOMBEE, - Species.MAREANIE, - Species.TOXAPEX, - Species.DEWPIDER, - Species.ARAQUANID, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.FALINKS, - Species.SNOM, - Species.FROSMOTH, - Species.WYRDEER, - Species.KLEAVOR, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.LOKIX, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.RELLOR, - Species.RABSCA, - Species.FLAMIGO, - Species.TATSUGIRI, - Species.DUDUNSPARCE, - Species.SLITHER_WING, - Species.IRON_MOTH, + [MoveId.LUNGE]: [ + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.MUK, + SpeciesId.SCYTHER, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.YANMA, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.STANTLER, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.VOLBEAT, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.CACTURNE, + SpeciesId.KRICKETOT, + SpeciesId.KRICKETUNE, + SpeciesId.MOTHIM, + SpeciesId.COMBEE, + SpeciesId.VESPIQUEN, + SpeciesId.YANMEGA, + SpeciesId.GLISCOR, + SpeciesId.HEATRAN, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.JOLTIK, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.HAWLUCHA, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.RIBOMBEE, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.FALINKS, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.LOKIX, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLAMIGO, + SpeciesId.TATSUGIRI, + SpeciesId.DUDUNSPARCE, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_MOTH, ], - [Moves.SPEED_SWAP]: [ - Species.RAICHU, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.PORYGON, - Species.MEWTWO, - Species.MEW, - Species.PORYGON2, - Species.BRONZOR, - Species.BRONZONG, - Species.PORYGON_Z, - Species.VICTINI, - Species.WOOBAT, - Species.SWOOBAT, - Species.SIGILYPH, - Species.EMOLGA, - Species.JOLTIK, - Species.GALVANTULA, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.TAPU_LELE, - Species.PHEROMOSA, - Species.MAGEARNA, - Species.CALYREX, - Species.RABSCA, - Species.ALOLA_RAICHU, + [MoveId.SPEED_SWAP]: [ + SpeciesId.RAICHU, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.PORYGON, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.PORYGON2, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.PORYGON_Z, + SpeciesId.VICTINI, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SIGILYPH, + SpeciesId.EMOLGA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.TAPU_LELE, + SpeciesId.PHEROMOSA, + SpeciesId.MAGEARNA, + SpeciesId.CALYREX, + SpeciesId.RABSCA, + SpeciesId.ALOLA_RAICHU, ], - [Moves.SMART_STRIKE]: [ - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.RAPIDASH, - Species.SEEL, - Species.DEWGONG, - Species.CLOYSTER, - Species.RHYHORN, - Species.RHYDON, - Species.GOLDEEN, - Species.SEAKING, - Species.TAUROS, - Species.LAPRAS, - Species.MEW, - Species.ARIADOS, - Species.TOGETIC, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.HERACROSS, - Species.DONPHAN, - Species.AGGRON, - Species.RHYPERIOR, - Species.TOGEKISS, - Species.SAMUROTT, - Species.EXCADRILL, - Species.SCOLIPEDE, - Species.SAWSBUCK, - Species.ESCAVALIER, - Species.BOUFFALANT, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.THUNDURUS, - Species.KELDEO, - Species.XERNEAS, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.CELESTEELA, - Species.KARTANA, - Species.NECROZMA, - Species.NAGANADEL, - Species.DREDNAW, - Species.FALINKS, - Species.GLASTRIER, - Species.OVERQWIL, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.IRON_TREADS, - Species.IRON_LEAVES, - Species.GOUGING_FIRE, - Species.IRON_CROWN, - Species.GALAR_RAPIDASH, + [MoveId.SMART_STRIKE]: [ + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.RAPIDASH, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.CLOYSTER, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.TAUROS, + SpeciesId.LAPRAS, + SpeciesId.MEW, + SpeciesId.ARIADOS, + SpeciesId.TOGETIC, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.HERACROSS, + SpeciesId.DONPHAN, + SpeciesId.AGGRON, + SpeciesId.RHYPERIOR, + SpeciesId.TOGEKISS, + SpeciesId.SAMUROTT, + SpeciesId.EXCADRILL, + SpeciesId.SCOLIPEDE, + SpeciesId.SAWSBUCK, + SpeciesId.ESCAVALIER, + SpeciesId.BOUFFALANT, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.THUNDURUS, + SpeciesId.KELDEO, + SpeciesId.XERNEAS, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.NECROZMA, + SpeciesId.NAGANADEL, + SpeciesId.DREDNAW, + SpeciesId.FALINKS, + SpeciesId.GLASTRIER, + SpeciesId.OVERQWIL, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_LEAVES, + SpeciesId.GOUGING_FIRE, + SpeciesId.IRON_CROWN, + SpeciesId.GALAR_RAPIDASH, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_SAMUROTT, - Species.PALDEA_TAUROS, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.PALDEA_TAUROS, ], - [Moves.BRUTAL_SWING]: [ - Species.CHARIZARD, - Species.BEEDRILL, - Species.EKANS, - Species.ARBOK, - Species.RAICHU, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.FARFETCHD, - Species.ONIX, - Species.KINGLER, - Species.CUBONE, - Species.MAROWAK, - Species.LICKITUNG, - Species.RHYDON, - Species.SCYTHER, - Species.PINSIR, - Species.GYARADOS, - Species.AERODACTYL, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.SENTRET, - Species.FURRET, - Species.AMPHAROS, - Species.MARILL, - Species.AZUMARILL, - Species.STEELIX, - Species.SCIZOR, - Species.HERACROSS, - Species.DELIBIRD, - Species.DONPHAN, - Species.HITMONTOP, - Species.TYRANITAR, - Species.SCEPTILE, - Species.SHIFTRY, - Species.AZURILL, - Species.MAWILE, - Species.AGGRON, - Species.FLYGON, - Species.SEVIPER, - Species.ARMALDO, - Species.MILOTIC, - Species.TROPIUS, - Species.ABSOL, - Species.SALAMENCE, - Species.METAGROSS, - Species.GROUDON, - Species.RAYQUAZA, - Species.DEOXYS, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.LOPUNNY, - Species.GARCHOMP, - Species.DRAPION, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.GLISCOR, - Species.GIRATINA, - Species.SERPERIOR, - Species.EXCADRILL, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.KROKOROK, - Species.KROOKODILE, - Species.ESCAVALIER, - Species.FERROTHORN, - Species.HAXORUS, - Species.MIENSHAO, - Species.HEATMOR, - Species.HYDREIGON, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.GRENINJA, - Species.DIGGERSBY, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.MALAMAR, - Species.BARBARACLE, - Species.HELIOLISK, - Species.TYRANTRUM, - Species.GOODRA, - Species.TREVENANT, - Species.GOURGEIST, - Species.INCINEROAR, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.STUFFUL, - Species.BEWEAR, - Species.ORANGURU, - Species.PASSIMIAN, - Species.TURTONATOR, - Species.DHELMISE, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_BULU, - Species.NIHILEGO, - Species.XURKITREE, - Species.CELESTEELA, - Species.GUZZLORD, - Species.NECROZMA, - Species.STAKATAKA, - Species.ZERAORA, - Species.MELMETAL, - Species.RILLABOOM, - Species.SKWOVET, - Species.GREEDENT, - Species.SILICOBRA, - Species.SANDACONDA, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.GRAPPLOCT, - Species.HATTREM, - Species.HATTERENE, - Species.SIRFETCHD, - Species.RUNERIGUS, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.DRACOVISH, - Species.ZACIAN, - Species.ETERNATUS, - Species.ZARUDE, - Species.KLEAVOR, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.OKIDOGI, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_YAMASK, + [MoveId.BRUTAL_SWING]: [ + SpeciesId.CHARIZARD, + SpeciesId.BEEDRILL, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.RAICHU, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.FARFETCHD, + SpeciesId.ONIX, + SpeciesId.KINGLER, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.LICKITUNG, + SpeciesId.RHYDON, + SpeciesId.SCYTHER, + SpeciesId.PINSIR, + SpeciesId.GYARADOS, + SpeciesId.AERODACTYL, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.AMPHAROS, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.STEELIX, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.DELIBIRD, + SpeciesId.DONPHAN, + SpeciesId.HITMONTOP, + SpeciesId.TYRANITAR, + SpeciesId.SCEPTILE, + SpeciesId.SHIFTRY, + SpeciesId.AZURILL, + SpeciesId.MAWILE, + SpeciesId.AGGRON, + SpeciesId.FLYGON, + SpeciesId.SEVIPER, + SpeciesId.ARMALDO, + SpeciesId.MILOTIC, + SpeciesId.TROPIUS, + SpeciesId.ABSOL, + SpeciesId.SALAMENCE, + SpeciesId.METAGROSS, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.DEOXYS, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.LOPUNNY, + SpeciesId.GARCHOMP, + SpeciesId.DRAPION, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.GLISCOR, + SpeciesId.GIRATINA, + SpeciesId.SERPERIOR, + SpeciesId.EXCADRILL, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.ESCAVALIER, + SpeciesId.FERROTHORN, + SpeciesId.HAXORUS, + SpeciesId.MIENSHAO, + SpeciesId.HEATMOR, + SpeciesId.HYDREIGON, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.GRENINJA, + SpeciesId.DIGGERSBY, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.MALAMAR, + SpeciesId.BARBARACLE, + SpeciesId.HELIOLISK, + SpeciesId.TYRANTRUM, + SpeciesId.GOODRA, + SpeciesId.TREVENANT, + SpeciesId.GOURGEIST, + SpeciesId.INCINEROAR, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.TURTONATOR, + SpeciesId.DHELMISE, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_BULU, + SpeciesId.NIHILEGO, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.STAKATAKA, + SpeciesId.ZERAORA, + SpeciesId.MELMETAL, + SpeciesId.RILLABOOM, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.GRAPPLOCT, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.SIRFETCHD, + SpeciesId.RUNERIGUS, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ZACIAN, + SpeciesId.ETERNATUS, + SpeciesId.ZARUDE, + SpeciesId.KLEAVOR, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.OKIDOGI, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_YAMASK, ], - [Moves.AURORA_VEIL]: [ - Species.JYNX, - Species.ARTICUNO, - Species.MEW, - Species.DELIBIRD, - Species.SMOOCHUM, - Species.REGICE, - Species.ABOMASNOW, - Species.GLACEON, - Species.FROSLASS, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.CRYOGONAL, - Species.AMAURA, - Species.AURORUS, - Species.BERGMITE, - Species.AVALUGG, - Species.EISCUE, - Species.ARCTOVISH, - Species.IRON_BUNDLE, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.HISUI_AVALUGG, + [MoveId.AURORA_VEIL]: [ + SpeciesId.JYNX, + SpeciesId.ARTICUNO, + SpeciesId.MEW, + SpeciesId.DELIBIRD, + SpeciesId.SMOOCHUM, + SpeciesId.REGICE, + SpeciesId.ABOMASNOW, + SpeciesId.GLACEON, + SpeciesId.FROSLASS, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.CRYOGONAL, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.EISCUE, + SpeciesId.ARCTOVISH, + SpeciesId.IRON_BUNDLE, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.HISUI_AVALUGG, ], - [Moves.PSYCHIC_FANGS]: [ - Species.EKANS, - Species.ARBOK, - Species.GROWLITHE, - Species.ARCANINE, - Species.AERODACTYL, - Species.MEW, - Species.CROCONAW, - Species.FERALIGATR, - Species.ESPEON, - Species.GIRAFARIG, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.MAWILE, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.CARVANHA, - Species.SHARPEDO, - Species.SEVIPER, - Species.SALAMENCE, - Species.METAGROSS, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.GLISCOR, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.SWOOBAT, - Species.BASCULIN, - Species.LITLEO, - Species.PYROAR, - Species.TYRUNT, - Species.TYRANTRUM, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.ROCKRUFF, - Species.LYCANROC, - Species.SILVALLY, - Species.BRUXISH, - Species.SOLGALEO, - Species.NECROZMA, - Species.GREEDENT, - Species.BOLTUND, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.MORPEKO, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.BASCULEGION, - Species.FIDOUGH, - Species.DACHSBUN, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.VELUZA, - Species.FARIGIRAF, - Species.SCREAM_TAIL, - Species.CHIEN_PAO, - Species.OKIDOGI, - Species.GOUGING_FIRE, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, + [MoveId.PSYCHIC_FANGS]: [ + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.AERODACTYL, + SpeciesId.MEW, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.ESPEON, + SpeciesId.GIRAFARIG, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.MAWILE, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.SEVIPER, + SpeciesId.SALAMENCE, + SpeciesId.METAGROSS, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.GLISCOR, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.SWOOBAT, + SpeciesId.BASCULIN, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.SILVALLY, + SpeciesId.BRUXISH, + SpeciesId.SOLGALEO, + SpeciesId.NECROZMA, + SpeciesId.GREEDENT, + SpeciesId.BOLTUND, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.MORPEKO, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.BASCULEGION, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.VELUZA, + SpeciesId.FARIGIRAF, + SpeciesId.SCREAM_TAIL, + SpeciesId.CHIEN_PAO, + SpeciesId.OKIDOGI, + SpeciesId.GOUGING_FIRE, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, ], - [Moves.STOMPING_TANTRUM]: [ - Species.VENUSAUR, - Species.RATICATE, - Species.ARBOK, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORINO, - Species.NIDOKING, - Species.DIGLETT, - Species.DUGTRIO, - Species.MANKEY, - Species.PRIMEAPE, - Species.MACHOKE, - Species.MACHAMP, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.DODRIO, - Species.ONIX, - Species.KINGLER, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TAUROS, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.MEGANIUM, - Species.TYPHLOSION, - Species.ARIADOS, - Species.AMPHAROS, - Species.SUDOWOODO, - Species.WOOPER, - Species.QUAGSIRE, - Species.GIRAFARIG, - Species.DUNSPARCE, - Species.STEELIX, - Species.GRANBULL, - Species.URSARING, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.PHANPY, - Species.DONPHAN, - Species.MILTANK, - Species.BLISSEY, - Species.ENTEI, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.SWAMPERT, - Species.LINOONE, - Species.VIGOROTH, - Species.SLAKING, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.DELCATTY, - Species.LAIRON, - Species.AGGRON, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.GRUMPIG, - Species.SPINDA, - Species.CACTURNE, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.ARMALDO, - Species.TROPIUS, - Species.WALREIN, - Species.RELICANTH, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.GROUDON, - Species.DEOXYS, - Species.TORTERRA, - Species.BIBAREL, - Species.RAMPARDOS, - Species.BASTIODON, - Species.GASTRODON, - Species.PURUGLY, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.DRAPION, - Species.ABOMASNOW, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.MAMOSWINE, - Species.PROBOPASS, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.ARCEUS, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.WATCHOG, - Species.STOUTLAND, - Species.BOLDORE, - Species.GIGALITH, - Species.EXCADRILL, - Species.AUDINO, - Species.CONKELDURR, - Species.SEISMITOAD, - Species.THROH, - Species.SCOLIPEDE, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.CRUSTLE, - Species.GARBODOR, - Species.SAWSBUCK, - Species.AMOONGUSS, - Species.EELEKTROSS, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.STUNFISK, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.BOUFFALANT, - Species.HEATMOR, - Species.DURANT, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.TERRAKION, - Species.LANDORUS, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.DIGGERSBY, - Species.SKIDDO, - Species.GOGOAT, - Species.PANGORO, - Species.TYRUNT, - Species.TYRANTRUM, - Species.CARBINK, - Species.GOODRA, - Species.AVALUGG, - Species.ZYGARDE, - Species.VOLCANION, - Species.INCINEROAR, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.MUDBRAY, - Species.MUDSDALE, - Species.STUFFUL, - Species.BEWEAR, - Species.KOMALA, - Species.TURTONATOR, - Species.DRAMPA, - Species.KOMMO_O, - Species.BUZZWOLE, - Species.CELESTEELA, - Species.GUZZLORD, - Species.STAKATAKA, - Species.RILLABOOM, - Species.GREEDENT, - Species.CHEWTLE, - Species.DREDNAW, - Species.APPLETUN, - Species.GRAPPLOCT, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.CURSOLA, - Species.MR_RIME, - Species.STONJOURNER, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.DURALUDON, - Species.ZARUDE, - Species.GLASTRIER, - Species.SPECTRIER, - Species.URSALUNA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.OINKOLOGNE, - Species.FIDOUGH, - Species.DACHSBUN, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.WIGLETT, - Species.WUGTRIO, - Species.ORTHWORM, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.CETODDLE, - Species.CETITAN, - Species.DONDOZO, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.BAXCALIBUR, - Species.TING_LU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.OKIDOGI, - Species.OGERPON, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.ALOLA_RATICATE, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.GALAR_MR_MIME, - Species.GALAR_ZAPDOS, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_LINOONE, - Species.GALAR_STUNFISK, + [MoveId.STOMPING_TANTRUM]: [ + SpeciesId.VENUSAUR, + SpeciesId.RATICATE, + SpeciesId.ARBOK, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.DODRIO, + SpeciesId.ONIX, + SpeciesId.KINGLER, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TAUROS, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.MEGANIUM, + SpeciesId.TYPHLOSION, + SpeciesId.ARIADOS, + SpeciesId.AMPHAROS, + SpeciesId.SUDOWOODO, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.GIRAFARIG, + SpeciesId.DUNSPARCE, + SpeciesId.STEELIX, + SpeciesId.GRANBULL, + SpeciesId.URSARING, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.ENTEI, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.SWAMPERT, + SpeciesId.LINOONE, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.DELCATTY, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.CACTURNE, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.ARMALDO, + SpeciesId.TROPIUS, + SpeciesId.WALREIN, + SpeciesId.RELICANTH, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.DEOXYS, + SpeciesId.TORTERRA, + SpeciesId.BIBAREL, + SpeciesId.RAMPARDOS, + SpeciesId.BASTIODON, + SpeciesId.GASTRODON, + SpeciesId.PURUGLY, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.DRAPION, + SpeciesId.ABOMASNOW, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.MAMOSWINE, + SpeciesId.PROBOPASS, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.ARCEUS, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.WATCHOG, + SpeciesId.STOUTLAND, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.CONKELDURR, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SCOLIPEDE, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.CRUSTLE, + SpeciesId.GARBODOR, + SpeciesId.SAWSBUCK, + SpeciesId.AMOONGUSS, + SpeciesId.EELEKTROSS, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.STUNFISK, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.BOUFFALANT, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.TERRAKION, + SpeciesId.LANDORUS, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.DIGGERSBY, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANGORO, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.CARBINK, + SpeciesId.GOODRA, + SpeciesId.AVALUGG, + SpeciesId.ZYGARDE, + SpeciesId.VOLCANION, + SpeciesId.INCINEROAR, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.KOMMO_O, + SpeciesId.BUZZWOLE, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.STAKATAKA, + SpeciesId.RILLABOOM, + SpeciesId.GREEDENT, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.APPLETUN, + SpeciesId.GRAPPLOCT, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.CURSOLA, + SpeciesId.MR_RIME, + SpeciesId.STONJOURNER, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.DURALUDON, + SpeciesId.ZARUDE, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.URSALUNA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.OINKOLOGNE, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.ORTHWORM, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.DONDOZO, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.BAXCALIBUR, + SpeciesId.TING_LU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.OKIDOGI, + SpeciesId.OGERPON, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_STUNFISK, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", "shadow", ], - Species.HISUI_TYPHLOSION, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.LIQUIDATION]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.KRABBY, - Species.KINGLER, - Species.HORSEA, - Species.SEADRA, - Species.LAPRAS, - Species.VAPOREON, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.CHINCHOU, - Species.LANTURN, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.QWILFISH, - Species.CORSOLA, - Species.OCTILLERY, - Species.MANTINE, - Species.KINGDRA, - Species.SUICUNE, - Species.LUGIA, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.WINGULL, - Species.PELIPPER, - Species.SURSKIT, - Species.MASQUERAIN, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILORD, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.ARMALDO, - Species.WALREIN, - Species.RELICANTH, - Species.LUVDISC, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BIBAREL, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.GARCHOMP, - Species.PALKIA, - Species.PHIONE, - Species.MANAPHY, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.SEISMITOAD, - Species.BASCULIN, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.DUCKLETT, - Species.SWANNA, - Species.ALOMOMOLA, - Species.EELEKTROSS, - Species.CUBCHOO, - Species.BEARTIC, - Species.KELDEO, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.VOLCANION, - Species.PRIMARINA, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.DEWPIDER, - Species.ARAQUANID, - Species.GOLISOPOD, - Species.BRUXISH, - Species.DHELMISE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.CHEWTLE, - Species.DREDNAW, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.CURSOLA, - Species.PINCURCHIN, - Species.EISCUE, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.BASCULEGION, - Species.OVERQWIL, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.WIGLETT, - Species.WUGTRIO, - Species.FINIZEN, - Species.PALAFIN, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.CLODSIRE, - Species.IRON_VALIANT, - Species.WALKING_WAKE, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, + [MoveId.LIQUIDATION]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.QWILFISH, + SpeciesId.CORSOLA, + SpeciesId.OCTILLERY, + SpeciesId.MANTINE, + SpeciesId.KINGDRA, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILORD, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.ARMALDO, + SpeciesId.WALREIN, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BIBAREL, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.GARCHOMP, + SpeciesId.PALKIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.SEISMITOAD, + SpeciesId.BASCULIN, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.ALOMOMOLA, + SpeciesId.EELEKTROSS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.KELDEO, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.VOLCANION, + SpeciesId.PRIMARINA, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.GOLISOPOD, + SpeciesId.BRUXISH, + SpeciesId.DHELMISE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.CURSOLA, + SpeciesId.PINCURCHIN, + SpeciesId.EISCUE, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.CLODSIRE, + SpeciesId.IRON_VALIANT, + SpeciesId.WALKING_WAKE, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "rapid-strike", ], - Species.HISUI_QWILFISH, - Species.HISUI_SAMUROTT, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SAMUROTT, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "aqua", ], - Species.PALDEA_WOOPER, + SpeciesId.PALDEA_WOOPER, ], - [Moves.BODY_PRESS]: [ - Species.BLASTOISE, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.GRAVELER, - Species.GOLEM, - Species.SLOWBRO, - Species.ONIX, - Species.HYPNO, - Species.LICKITUNG, - Species.RHYHORN, - Species.RHYDON, - Species.LAPRAS, - Species.SNORLAX, - Species.DRAGONITE, - Species.MEW, - Species.MEGANIUM, - Species.SUDOWOODO, - Species.QUAGSIRE, - Species.FORRETRESS, - Species.STEELIX, - Species.MANTINE, - Species.SKARMORY, - Species.DONPHAN, - Species.MILTANK, - Species.TYRANITAR, - Species.SWAMPERT, - Species.SLAKING, - Species.MAKUHITA, - Species.HARIYAMA, - Species.NOSEPASS, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.SWALOT, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.GRUMPIG, - Species.CLAYDOL, - Species.TROPIUS, - Species.WALREIN, - Species.RELICANTH, - Species.METAGROSS, - Species.REGIROCK, - Species.REGISTEEL, - Species.GROUDON, - Species.TORTERRA, - Species.RAMPARDOS, - Species.BASTIODON, - Species.BRONZONG, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.ABOMASNOW, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.MAMOSWINE, - Species.PROBOPASS, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.ARCEUS, - Species.EMBOAR, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.DARMANITAN, - Species.CRUSTLE, - Species.COFAGRIGUS, - Species.GARBODOR, - Species.FERROTHORN, - Species.EELEKTROSS, - Species.CUBCHOO, - Species.BEARTIC, - Species.GOLURK, - Species.COBALION, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.CHESNAUGHT, - Species.HAWLUCHA, - Species.CARBINK, - Species.GOODRA, - Species.AVALUGG, - Species.DIANCIE, - Species.VOLCANION, - Species.CRABOMINABLE, - Species.MUDSDALE, - Species.BEWEAR, - Species.TURTONATOR, - Species.DHELMISE, - Species.KOMMO_O, - Species.GUZZLORD, - Species.STAKATAKA, - Species.MELMETAL, - Species.RILLABOOM, - Species.GREEDENT, - Species.CORVIKNIGHT, - Species.DOTTLER, - Species.ORBEETLE, - Species.DUBWOOL, - Species.DREDNAW, - Species.CARKOL, - Species.COALOSSAL, - Species.APPLETUN, - Species.SANDACONDA, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.RUNERIGUS, - Species.FALINKS, - Species.STONJOURNER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DURALUDON, - Species.ZAMAZENTA, - Species.URSHIFU, - Species.GLASTRIER, + [MoveId.BODY_PRESS]: [ + SpeciesId.BLASTOISE, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SLOWBRO, + SpeciesId.ONIX, + SpeciesId.HYPNO, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.LAPRAS, + SpeciesId.SNORLAX, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.MEGANIUM, + SpeciesId.SUDOWOODO, + SpeciesId.QUAGSIRE, + SpeciesId.FORRETRESS, + SpeciesId.STEELIX, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.DONPHAN, + SpeciesId.MILTANK, + SpeciesId.TYRANITAR, + SpeciesId.SWAMPERT, + SpeciesId.SLAKING, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.NOSEPASS, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.SWALOT, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.GRUMPIG, + SpeciesId.CLAYDOL, + SpeciesId.TROPIUS, + SpeciesId.WALREIN, + SpeciesId.RELICANTH, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGISTEEL, + SpeciesId.GROUDON, + SpeciesId.TORTERRA, + SpeciesId.RAMPARDOS, + SpeciesId.BASTIODON, + SpeciesId.BRONZONG, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.ABOMASNOW, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.MAMOSWINE, + SpeciesId.PROBOPASS, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.ARCEUS, + SpeciesId.EMBOAR, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.DARMANITAN, + SpeciesId.CRUSTLE, + SpeciesId.COFAGRIGUS, + SpeciesId.GARBODOR, + SpeciesId.FERROTHORN, + SpeciesId.EELEKTROSS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.GOLURK, + SpeciesId.COBALION, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.CHESNAUGHT, + SpeciesId.HAWLUCHA, + SpeciesId.CARBINK, + SpeciesId.GOODRA, + SpeciesId.AVALUGG, + SpeciesId.DIANCIE, + SpeciesId.VOLCANION, + SpeciesId.CRABOMINABLE, + SpeciesId.MUDSDALE, + SpeciesId.BEWEAR, + SpeciesId.TURTONATOR, + SpeciesId.DHELMISE, + SpeciesId.KOMMO_O, + SpeciesId.GUZZLORD, + SpeciesId.STAKATAKA, + SpeciesId.MELMETAL, + SpeciesId.RILLABOOM, + SpeciesId.GREEDENT, + SpeciesId.CORVIKNIGHT, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.DUBWOOL, + SpeciesId.DREDNAW, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.APPLETUN, + SpeciesId.SANDACONDA, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.RUNERIGUS, + SpeciesId.FALINKS, + SpeciesId.STONJOURNER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DURALUDON, + SpeciesId.ZAMAZENTA, + SpeciesId.URSHIFU, + SpeciesId.GLASTRIER, [ - Species.CALYREX, + SpeciesId.CALYREX, "", "ice", ], - Species.URSALUNA, - Species.OINKOLOGNE, - Species.PAWMOT, - Species.DACHSBUN, - Species.NACLSTACK, - Species.GARGANACL, - Species.ORTHWORM, - Species.HOUNDSTONE, - Species.CETODDLE, - Species.CETITAN, - Species.DONDOZO, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.BRUTE_BONNET, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.BAXCALIBUR, - Species.WO_CHIEN, - Species.TING_LU, - Species.ROARING_MOON, - Species.KORAIDON, - Species.OKIDOGI, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.RAGING_BOLT, - Species.TERAPAGOS, - Species.ALOLA_GOLEM, - Species.GALAR_SLOWBRO, - Species.GALAR_LINOONE, - Species.GALAR_DARMANITAN, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + SpeciesId.URSALUNA, + SpeciesId.OINKOLOGNE, + SpeciesId.PAWMOT, + SpeciesId.DACHSBUN, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.ORTHWORM, + SpeciesId.HOUNDSTONE, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.DONDOZO, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.BRUTE_BONNET, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.BAXCALIBUR, + SpeciesId.WO_CHIEN, + SpeciesId.TING_LU, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.OKIDOGI, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.RAGING_BOLT, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_GOLEM, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.BREAKING_SWIPE]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.ARBOK, - Species.ONIX, - Species.RHYDON, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.AMPHAROS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.KINGDRA, - Species.TYRANITAR, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.FLYGON, - Species.ALTARIA, - Species.SEVIPER, - Species.MILOTIC, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.RAYQUAZA, - Species.RAMPARDOS, - Species.GABITE, - Species.GARCHOMP, - Species.RHYPERIOR, - Species.GLISCOR, - Species.DIALGA, - Species.PALKIA, - Species.GIRATINA, - Species.SERPERIOR, - Species.KROKOROK, - Species.KROOKODILE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.HYDREIGON, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.HELIOLISK, - Species.TYRANTRUM, - Species.GOODRA, - Species.NOIVERN, - Species.ZYGARDE, - Species.SALAZZLE, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.NECROZMA, - Species.NAGANADEL, - Species.INTELEON, - Species.DRACOZOLT, - Species.DURALUDON, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.REGIDRAGO, - Species.CYCLIZAR, - Species.DUDUNSPARCE, - Species.IRON_THORNS, - Species.BAXCALIBUR, - Species.ROARING_MOON, - Species.KORAIDON, - Species.WALKING_WAKE, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.ALOLA_EXEGGUTOR, - Species.HISUI_GOODRA, + [MoveId.BREAKING_SWIPE]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.ARBOK, + SpeciesId.ONIX, + SpeciesId.RHYDON, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.AMPHAROS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.KINGDRA, + SpeciesId.TYRANITAR, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.FLYGON, + SpeciesId.ALTARIA, + SpeciesId.SEVIPER, + SpeciesId.MILOTIC, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.RAYQUAZA, + SpeciesId.RAMPARDOS, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.RHYPERIOR, + SpeciesId.GLISCOR, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.GIRATINA, + SpeciesId.SERPERIOR, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.HYDREIGON, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.HELIOLISK, + SpeciesId.TYRANTRUM, + SpeciesId.GOODRA, + SpeciesId.NOIVERN, + SpeciesId.ZYGARDE, + SpeciesId.SALAZZLE, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.NECROZMA, + SpeciesId.NAGANADEL, + SpeciesId.INTELEON, + SpeciesId.DRACOZOLT, + SpeciesId.DURALUDON, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.REGIDRAGO, + SpeciesId.CYCLIZAR, + SpeciesId.DUDUNSPARCE, + SpeciesId.IRON_THORNS, + SpeciesId.BAXCALIBUR, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.HISUI_GOODRA, ], - [Moves.STEEL_BEAM]: [ - Species.MAGNEMITE, - Species.MAGNETON, - Species.MEW, - Species.FORRETRESS, - Species.STEELIX, - Species.SCIZOR, - Species.SKARMORY, - Species.NOSEPASS, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.BELDUM, - Species.METANG, - Species.METAGROSS, - Species.REGISTEEL, - Species.JIRACHI, - Species.EMPOLEON, - Species.BRONZOR, - Species.BRONZONG, - Species.LUCARIO, - Species.MAGNEZONE, - Species.PROBOPASS, - Species.DIALGA, - Species.HEATRAN, - Species.ARCEUS, - Species.EXCADRILL, - Species.ESCAVALIER, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.PAWNIARD, - Species.BISHARP, - Species.DURANT, - Species.COBALION, - Species.GENESECT, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.KLEFKI, - Species.SILVALLY, - Species.TOGEDEMARU, - Species.SOLGALEO, - Species.CELESTEELA, - Species.KARTANA, - Species.MAGEARNA, - Species.STAKATAKA, - Species.MELTAN, - Species.MELMETAL, - Species.CORVIKNIGHT, - Species.PERRSERKER, - Species.CUFANT, - Species.COPPERAJAH, - Species.DURALUDON, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.VAROOM, - Species.REVAVROOM, - Species.ORTHWORM, - Species.KINGAMBIT, - Species.IRON_TREADS, - Species.GHOLDENGO, - Species.ARCHALUDON, - Species.IRON_CROWN, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.GALAR_MEOWTH, - Species.GALAR_STUNFISK, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, + [MoveId.STEEL_BEAM]: [ + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.MEW, + SpeciesId.FORRETRESS, + SpeciesId.STEELIX, + SpeciesId.SCIZOR, + SpeciesId.SKARMORY, + SpeciesId.NOSEPASS, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.BELDUM, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGISTEEL, + SpeciesId.JIRACHI, + SpeciesId.EMPOLEON, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.LUCARIO, + SpeciesId.MAGNEZONE, + SpeciesId.PROBOPASS, + SpeciesId.DIALGA, + SpeciesId.HEATRAN, + SpeciesId.ARCEUS, + SpeciesId.EXCADRILL, + SpeciesId.ESCAVALIER, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.DURANT, + SpeciesId.COBALION, + SpeciesId.GENESECT, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.KLEFKI, + SpeciesId.SILVALLY, + SpeciesId.TOGEDEMARU, + SpeciesId.SOLGALEO, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.MAGEARNA, + SpeciesId.STAKATAKA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.CORVIKNIGHT, + SpeciesId.PERRSERKER, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DURALUDON, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.ORTHWORM, + SpeciesId.KINGAMBIT, + SpeciesId.IRON_TREADS, + SpeciesId.GHOLDENGO, + SpeciesId.ARCHALUDON, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, ], - [Moves.EXPANDING_FORCE]: [ - Species.WIGGLYTUFF, - Species.KADABRA, - Species.ALAKAZAM, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGUTOR, - Species.STARMIE, - Species.MR_MIME, - Species.JYNX, - Species.MEWTWO, - Species.MEW, - Species.NATU, - Species.XATU, - Species.ESPEON, - Species.SLOWKING, - Species.GIRAFARIG, - Species.CELEBI, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.MEDITITE, - Species.MEDICHAM, - Species.SPOINK, - Species.GRUMPIG, - Species.BALTOY, - Species.CLAYDOL, - Species.CHIMECHO, - Species.METANG, - Species.METAGROSS, - Species.JIRACHI, - Species.DEOXYS, - Species.BRONZOR, - Species.BRONZONG, - Species.GALLADE, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.CRESSELIA, - Species.VICTINI, - Species.MUNNA, - Species.MUSHARNA, - Species.WOOBAT, - Species.SWOOBAT, - Species.DARMANITAN, - Species.SIGILYPH, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.DELPHOX, - Species.ESPURR, - Species.MEOWSTIC, - Species.INKAY, - Species.MALAMAR, - Species.HOOPA, - Species.ORANGURU, - Species.BRUXISH, - Species.SOLGALEO, - Species.LUNALA, - Species.NECROZMA, - Species.BLACEPHALON, - Species.DOTTLER, - Species.ORBEETLE, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.MR_RIME, - Species.INDEEDEE, - Species.CALYREX, - Species.WYRDEER, - Species.ARMAROUGE, - Species.RABSCA, - Species.ESPATHRA, - Species.VELUZA, - Species.FARIGIRAF, - Species.SCREAM_TAIL, - Species.IRON_VALIANT, - Species.IRON_CROWN, - Species.ALOLA_RAICHU, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_SLOWKING, - Species.HISUI_BRAVIARY, + [MoveId.EXPANDING_FORCE]: [ + SpeciesId.WIGGLYTUFF, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGUTOR, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.JYNX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.ESPEON, + SpeciesId.SLOWKING, + SpeciesId.GIRAFARIG, + SpeciesId.CELEBI, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.CHIMECHO, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.GALLADE, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.CRESSELIA, + SpeciesId.VICTINI, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DARMANITAN, + SpeciesId.SIGILYPH, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.DELPHOX, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.HOOPA, + SpeciesId.ORANGURU, + SpeciesId.BRUXISH, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NECROZMA, + SpeciesId.BLACEPHALON, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.MR_RIME, + SpeciesId.INDEEDEE, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.ARMAROUGE, + SpeciesId.RABSCA, + SpeciesId.ESPATHRA, + SpeciesId.VELUZA, + SpeciesId.FARIGIRAF, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_RAICHU, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.STEEL_ROLLER]: [ - Species.SANDSHREW, - Species.SANDSLASH, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.CLOYSTER, - Species.LICKITUNG, - Species.SNORLAX, - Species.MEW, - Species.MARILL, - Species.AZUMARILL, - Species.STEELIX, - Species.QWILFISH, - Species.SHUCKLE, - Species.MILTANK, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.WAILMER, - Species.WAILORD, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.METANG, - Species.METAGROSS, - Species.REGISTEEL, - Species.BRONZOR, - Species.BRONZONG, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.HEATRAN, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.TOGEDEMARU, - Species.DHELMISE, - Species.SOLGALEO, - Species.CELESTEELA, - Species.GUZZLORD, - Species.MAGEARNA, - Species.STAKATAKA, - Species.MELMETAL, - Species.CUFANT, - Species.COPPERAJAH, - Species.DURALUDON, - Species.IRON_TREADS, - Species.ARCHALUDON, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, + [MoveId.STEEL_ROLLER]: [ + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.CLOYSTER, + SpeciesId.LICKITUNG, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.STEELIX, + SpeciesId.QWILFISH, + SpeciesId.SHUCKLE, + SpeciesId.MILTANK, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGISTEEL, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.HEATRAN, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.TOGEDEMARU, + SpeciesId.DHELMISE, + SpeciesId.SOLGALEO, + SpeciesId.CELESTEELA, + SpeciesId.GUZZLORD, + SpeciesId.MAGEARNA, + SpeciesId.STAKATAKA, + SpeciesId.MELMETAL, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DURALUDON, + SpeciesId.IRON_TREADS, + SpeciesId.ARCHALUDON, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, ], - [Moves.SCALE_SHOT]: [ - Species.CHARIZARD, - Species.EKANS, - Species.ARBOK, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.GYARADOS, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.DUNSPARCE, - Species.GLIGAR, - Species.QWILFISH, - Species.KINGDRA, - Species.LUGIA, - Species.SCEPTILE, - Species.CARVANHA, - Species.SHARPEDO, - Species.FLYGON, - Species.FEEBAS, - Species.MILOTIC, - Species.RELICANTH, - Species.LUVDISC, - Species.LATIAS, - Species.LATIOS, - Species.RAYQUAZA, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.DIALGA, - Species.PALKIA, - Species.BASCULIN, - Species.KROKOROK, - Species.KROOKODILE, - Species.ALOMOMOLA, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.DRUDDIGON, - Species.HYDREIGON, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.SKRELP, - Species.DRAGALGE, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.ZYGARDE, - Species.WISHIWASHI, - Species.SALANDIT, - Species.SALAZZLE, - Species.TURTONATOR, - Species.DRAMPA, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.NAGANADEL, - Species.INTELEON, - Species.CHEWTLE, - Species.DREDNAW, - Species.SILICOBRA, - Species.SANDACONDA, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.REGIDRAGO, - Species.BASCULEGION, - Species.OVERQWIL, - Species.CYCLIZAR, - Species.VELUZA, - Species.DUDUNSPARCE, - Species.BAXCALIBUR, - Species.ROARING_MOON, - Species.KORAIDON, - Species.GOUGING_FIRE, - Species.HISUI_QWILFISH, + [MoveId.SCALE_SHOT]: [ + SpeciesId.CHARIZARD, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.GYARADOS, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.QWILFISH, + SpeciesId.KINGDRA, + SpeciesId.LUGIA, + SpeciesId.SCEPTILE, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.FLYGON, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.RAYQUAZA, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.BASCULIN, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.ALOMOMOLA, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.DRUDDIGON, + SpeciesId.HYDREIGON, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.ZYGARDE, + SpeciesId.WISHIWASHI, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.NAGANADEL, + SpeciesId.INTELEON, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.REGIDRAGO, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.CYCLIZAR, + SpeciesId.VELUZA, + SpeciesId.DUDUNSPARCE, + SpeciesId.BAXCALIBUR, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.GOUGING_FIRE, + SpeciesId.HISUI_QWILFISH, ], - [Moves.METEOR_BEAM]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.ONIX, - Species.RHYDON, - Species.STARMIE, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.MEW, - Species.AMPHAROS, - Species.SUDOWOODO, - Species.STEELIX, - Species.SHUCKLE, - Species.CORSOLA, - Species.NOSEPASS, - Species.AGGRON, - Species.LUNATONE, - Species.SOLROCK, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.RELICANTH, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGISTEEL, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.BASTIODON, - Species.BRONZONG, - Species.RHYPERIOR, - Species.PROBOPASS, - Species.ARCEUS, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.CRUSTLE, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.BARBARACLE, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.CARBINK, - Species.DIANCIE, - Species.MINIOR, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.CELESTEELA, - Species.NECROZMA, - Species.STAKATAKA, - Species.DREDNAW, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.CURSOLA, - Species.STONJOURNER, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.ETERNATUS, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.ARMAROUGE, - Species.KLAWF, - Species.GLIMMET, - Species.GLIMMORA, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.KORAIDON, - Species.ARCHALUDON, - Species.IRON_BOULDER, - Species.TERAPAGOS, - Species.ALOLA_GOLEM, - Species.GALAR_CORSOLA, - Species.HISUI_AVALUGG, + [MoveId.METEOR_BEAM]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.ONIX, + SpeciesId.RHYDON, + SpeciesId.STARMIE, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.MEW, + SpeciesId.AMPHAROS, + SpeciesId.SUDOWOODO, + SpeciesId.STEELIX, + SpeciesId.SHUCKLE, + SpeciesId.CORSOLA, + SpeciesId.NOSEPASS, + SpeciesId.AGGRON, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.RELICANTH, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGISTEEL, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.BASTIODON, + SpeciesId.BRONZONG, + SpeciesId.RHYPERIOR, + SpeciesId.PROBOPASS, + SpeciesId.ARCEUS, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.CRUSTLE, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.BARBARACLE, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.CARBINK, + SpeciesId.DIANCIE, + SpeciesId.MINIOR, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.CELESTEELA, + SpeciesId.NECROZMA, + SpeciesId.STAKATAKA, + SpeciesId.DREDNAW, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.CURSOLA, + SpeciesId.STONJOURNER, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.ETERNATUS, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.ARMAROUGE, + SpeciesId.KLAWF, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.KORAIDON, + SpeciesId.ARCHALUDON, + SpeciesId.IRON_BOULDER, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_GOLEM, + SpeciesId.GALAR_CORSOLA, + SpeciesId.HISUI_AVALUGG, ], - [Moves.MISTY_EXPLOSION]: [ - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEW, - Species.MARILL, - Species.AZUMARILL, - Species.GARDEVOIR, - Species.MUSHARNA, - Species.FLORGES, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.SYLVEON, - Species.CARBINK, - Species.XERNEAS, - Species.DIANCIE, - Species.PRIMARINA, - Species.MAGEARNA, - Species.HATTERENE, - Species.ALCREMIE, - Species.ENAMORUS, - Species.SCREAM_TAIL, - Species.GALAR_WEEZING, + [MoveId.MISTY_EXPLOSION]: [ + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEW, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.GARDEVOIR, + SpeciesId.MUSHARNA, + SpeciesId.FLORGES, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.SYLVEON, + SpeciesId.CARBINK, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.PRIMARINA, + SpeciesId.MAGEARNA, + SpeciesId.HATTERENE, + SpeciesId.ALCREMIE, + SpeciesId.ENAMORUS, + SpeciesId.SCREAM_TAIL, + SpeciesId.GALAR_WEEZING, ], - [Moves.GRASSY_GLIDE]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.TANGELA, - Species.MEW, - Species.BELLOSSOM, - Species.SUNFLORA, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.ROSELIA, - Species.CACNEA, - Species.CACTURNE, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.BUDEW, - Species.ROSERADE, - Species.CHERUBI, - Species.CHERRIM, - Species.SNOVER, - Species.ABOMASNOW, - Species.TANGROWTH, - Species.LEAFEON, - Species.SHAYMIN, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.MARACTUS, - Species.DEERLING, - Species.SAWSBUCK, - Species.VIRIZION, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.SKIDDO, - Species.GOGOAT, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.FOMANTIS, - Species.LURANTIS, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.DHELMISE, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.APPLIN, - Species.FLAPPLE, - Species.APPLETUN, - Species.SIRFETCHD, - Species.ZARUDE, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.DIPPLIN, - Species.OGERPON, - Species.HYDRAPPLE, - Species.ALOLA_EXEGGUTOR, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, + [MoveId.GRASSY_GLIDE]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.TANGELA, + SpeciesId.MEW, + SpeciesId.BELLOSSOM, + SpeciesId.SUNFLORA, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.ROSELIA, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.TANGROWTH, + SpeciesId.LEAFEON, + SpeciesId.SHAYMIN, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.MARACTUS, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.VIRIZION, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.DHELMISE, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.APPLIN, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SIRFETCHD, + SpeciesId.ZARUDE, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.DIPPLIN, + SpeciesId.OGERPON, + SpeciesId.HYDRAPPLE, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.RISING_VOLTAGE]: [ - Species.PIKACHU, - Species.RAICHU, - Species.MAGNEMITE, - Species.MAGNETON, - Species.ELECTABUZZ, - Species.JOLTEON, - Species.ZAPDOS, - Species.MEW, - Species.CHINCHOU, - Species.LANTURN, - Species.RAIKOU, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.MAGNEZONE, - Species.ELECTIVIRE, - Species.ROTOM, - Species.EMOLGA, - Species.JOLTIK, - Species.GALVANTULA, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.THUNDURUS, - Species.ZEKROM, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.DEDENNE, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.TOGEDEMARU, - Species.XURKITREE, - Species.ZERAORA, - Species.YAMPER, - Species.BOLTUND, - Species.TOXTRICITY, - Species.PINCURCHIN, - Species.MORPEKO, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.REGIELEKI, - Species.RAGING_BOLT, - Species.ALOLA_RAICHU, + [MoveId.RISING_VOLTAGE]: [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.ELECTABUZZ, + SpeciesId.JOLTEON, + SpeciesId.ZAPDOS, + SpeciesId.MEW, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.RAIKOU, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.MAGNEZONE, + SpeciesId.ELECTIVIRE, + SpeciesId.ROTOM, + SpeciesId.EMOLGA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.THUNDURUS, + SpeciesId.ZEKROM, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.DEDENNE, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.TOGEDEMARU, + SpeciesId.XURKITREE, + SpeciesId.ZERAORA, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.TOXTRICITY, + SpeciesId.PINCURCHIN, + SpeciesId.MORPEKO, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.REGIELEKI, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_RAICHU, ], - [Moves.TERRAIN_PULSE]: [ - Species.VENUSAUR, - Species.BLASTOISE, - Species.EXEGGUTOR, - Species.LICKITUNG, - Species.KANGASKHAN, - Species.SNORLAX, - Species.MEW, - Species.DUNSPARCE, - Species.EXPLOUD, - Species.LUCARIO, - Species.LICKILICKY, - Species.REGIGIGAS, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.CARBINK, - Species.XERNEAS, - Species.DIANCIE, - Species.ORANGURU, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.INDEEDEE, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.DUDUNSPARCE, - Species.ALOLA_EXEGGUTOR, - Species.GALAR_STUNFISK, + [MoveId.TERRAIN_PULSE]: [ + SpeciesId.VENUSAUR, + SpeciesId.BLASTOISE, + SpeciesId.EXEGGUTOR, + SpeciesId.LICKITUNG, + SpeciesId.KANGASKHAN, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.DUNSPARCE, + SpeciesId.EXPLOUD, + SpeciesId.LUCARIO, + SpeciesId.LICKILICKY, + SpeciesId.REGIGIGAS, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.CARBINK, + SpeciesId.XERNEAS, + SpeciesId.DIANCIE, + SpeciesId.ORANGURU, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.INDEEDEE, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.DUDUNSPARCE, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.GALAR_STUNFISK, ], - [Moves.SKITTER_SMACK]: [ - Species.EKANS, - Species.ARBOK, - Species.VENONAT, - Species.VENOMOTH, - Species.PERSIAN, - Species.TENTACRUEL, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.SCYTHER, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.YANMA, - Species.DUNSPARCE, - Species.GLIGAR, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.OCTILLERY, - Species.SURSKIT, - Species.MASQUERAIN, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.SABLEYE, - Species.VOLBEAT, - Species.ILLUMISE, - Species.CACNEA, - Species.CACTURNE, - Species.SEVIPER, - Species.MILOTIC, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.KRICKETOT, - Species.KRICKETUNE, - Species.COMBEE, - Species.VESPIQUEN, - Species.SHELLOS, - Species.GASTRODON, - Species.SKORUPI, - Species.DRAPION, - Species.YANMEGA, - Species.GLISCOR, - Species.DUSKNOIR, - Species.GIRATINA, - Species.LIEPARD, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DWEBBLE, - Species.CRUSTLE, - Species.ZORUA, - Species.ZOROARK, - Species.JOLTIK, - Species.GALVANTULA, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.SHELMET, - Species.ACCELGOR, - Species.DURANT, - Species.LARVESTA, - Species.VOLCARONA, - Species.VIVILLON, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.ZYGARDE, - Species.HOOPA, - Species.DECIDUEYE, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.SALANDIT, - Species.SALAZZLE, - Species.WIMPOD, - Species.GOLISOPOD, - Species.PHEROMOSA, - Species.MARSHADOW, - Species.INTELEON, - Species.CHEWTLE, - Species.DREDNAW, - Species.SILICOBRA, - Species.SANDACONDA, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.GRAPPLOCT, - Species.SNOM, - Species.FROSMOTH, - Species.KLEAVOR, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.RELLOR, - Species.RABSCA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.DUDUNSPARCE, - Species.SLITHER_WING, - Species.ALOLA_PERSIAN, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, + [MoveId.SKITTER_SMACK]: [ + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.PERSIAN, + SpeciesId.TENTACRUEL, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.SCYTHER, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.YANMA, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.OCTILLERY, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SEVIPER, + SpeciesId.MILOTIC, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.KRICKETOT, + SpeciesId.KRICKETUNE, + SpeciesId.COMBEE, + SpeciesId.VESPIQUEN, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.YANMEGA, + SpeciesId.GLISCOR, + SpeciesId.DUSKNOIR, + SpeciesId.GIRATINA, + SpeciesId.LIEPARD, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.DURANT, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.VIVILLON, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.ZYGARDE, + SpeciesId.HOOPA, + SpeciesId.DECIDUEYE, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.PHEROMOSA, + SpeciesId.MARSHADOW, + SpeciesId.INTELEON, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.GRAPPLOCT, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.KLEAVOR, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.DUDUNSPARCE, + SpeciesId.SLITHER_WING, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, ], - [Moves.BURNING_JEALOUSY]: [ - Species.VULPIX, - Species.NINETALES, - Species.MAGMAR, - Species.FLAREON, - Species.MOLTRES, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.MISDREAVUS, - Species.MAGCARGO, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.TORKOAL, - Species.BANETTE, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.MISMAGIUS, - Species.SKUNTANK, - Species.SPIRITOMB, - Species.MAGMORTAR, - Species.HEATRAN, - Species.LIEPARD, - Species.DARMANITAN, - Species.ZORUA, - Species.ZOROARK, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.HEATMOR, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.PYROAR, - Species.TREVENANT, - Species.INCINEROAR, - Species.SALANDIT, - Species.SALAZZLE, - Species.TURTONATOR, - Species.MIMIKYU, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.THIEVUL, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.CURSOLA, - Species.SCOVILLAIN, - Species.CHI_YU, - Species.ALOLA_PERSIAN, - Species.ALOLA_MAROWAK, - Species.GALAR_DARMANITAN, - Species.HISUI_TYPHLOSION, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, + [MoveId.BURNING_JEALOUSY]: [ + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.MAGMAR, + SpeciesId.FLAREON, + SpeciesId.MOLTRES, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.MISDREAVUS, + SpeciesId.MAGCARGO, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.TORKOAL, + SpeciesId.BANETTE, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.MISMAGIUS, + SpeciesId.SKUNTANK, + SpeciesId.SPIRITOMB, + SpeciesId.MAGMORTAR, + SpeciesId.HEATRAN, + SpeciesId.LIEPARD, + SpeciesId.DARMANITAN, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.HEATMOR, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.PYROAR, + SpeciesId.TREVENANT, + SpeciesId.INCINEROAR, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.TURTONATOR, + SpeciesId.MIMIKYU, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.THIEVUL, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.CURSOLA, + SpeciesId.SCOVILLAIN, + SpeciesId.CHI_YU, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, ], - [Moves.LASH_OUT]: [ - Species.EKANS, - Species.ARBOK, - Species.MEOWTH, - Species.PERSIAN, - Species.MANKEY, - Species.PRIMEAPE, - Species.MUK, - Species.TAUROS, - Species.GYARADOS, - Species.MEWTWO, - Species.MEW, - Species.UMBREON, - Species.MURKROW, - Species.SNEASEL, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PUPITAR, - Species.TYRANITAR, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.NUZLEAF, - Species.SHIFTRY, - Species.VIGOROTH, - Species.SLAKING, - Species.HARIYAMA, - Species.SABLEYE, - Species.NUMEL, - Species.CAMERUPT, - Species.CACTURNE, - Species.SEVIPER, - Species.CRAWDAUNT, - Species.SHUPPET, - Species.BANETTE, - Species.MONFERNO, - Species.INFERNAPE, - Species.EMPOLEON, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.STUNKY, - Species.SKUNTANK, - Species.SPIRITOMB, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.DARKRAI, - Species.PURRLOIN, - Species.LIEPARD, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARMANITAN, - Species.SCRAGGY, - Species.SCRAFTY, - Species.ARCHEN, - Species.ARCHEOPS, - Species.ZORUA, - Species.ZOROARK, - Species.LAMPENT, - Species.CHANDELURE, - Species.STUNFISK, - Species.DRUDDIGON, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.VULLABY, - Species.MANDIBUZZ, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.TORNADUS, - Species.THUNDURUS, - Species.PANCHAM, - Species.PANGORO, - Species.INKAY, - Species.MALAMAR, - Species.TYRUNT, - Species.TYRANTRUM, - Species.PHANTUMP, - Species.TREVENANT, - Species.YVELTAL, - Species.HOOPA, - Species.INCINEROAR, - Species.MUDSDALE, - Species.TURTONATOR, - Species.DRAMPA, - Species.GUZZLORD, - Species.NICKIT, - Species.THIEVUL, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.MORPEKO, - Species.ZARUDE, - Species.GLASTRIER, - Species.SPECTRIER, - Species.SNEASLER, - Species.OVERQWIL, - Species.MEOWSCARADA, - Species.OINKOLOGNE, - Species.LOKIX, - Species.SQUAWKABILLY, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SCOVILLAIN, - Species.BOMBIRDIER, - Species.REVAVROOM, - Species.ANNIHILAPE, - Species.KINGAMBIT, - Species.BRUTE_BONNET, - Species.IRON_JUGULIS, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.PECHARUNT, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_MUK, + [MoveId.LASH_OUT]: [ + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.MUK, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SNEASEL, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.HARIYAMA, + SpeciesId.SABLEYE, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.CACTURNE, + SpeciesId.SEVIPER, + SpeciesId.CRAWDAUNT, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.SPIRITOMB, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.DARKRAI, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARMANITAN, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.STUNFISK, + SpeciesId.DRUDDIGON, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.YVELTAL, + SpeciesId.HOOPA, + SpeciesId.INCINEROAR, + SpeciesId.MUDSDALE, + SpeciesId.TURTONATOR, + SpeciesId.DRAMPA, + SpeciesId.GUZZLORD, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.MORPEKO, + SpeciesId.ZARUDE, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.MEOWSCARADA, + SpeciesId.OINKOLOGNE, + SpeciesId.LOKIX, + SpeciesId.SQUAWKABILLY, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SCOVILLAIN, + SpeciesId.BOMBIRDIER, + SpeciesId.REVAVROOM, + SpeciesId.ANNIHILAPE, + SpeciesId.KINGAMBIT, + SpeciesId.BRUTE_BONNET, + SpeciesId.IRON_JUGULIS, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_MUK, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.GALAR_MEOWTH, - Species.GALAR_MOLTRES, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARMANITAN, - Species.GALAR_STUNFISK, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_STUNFISK, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "single-strike", ], [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", "shadow", ], - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_GOODRA, - Species.PALDEA_TAUROS, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_GOODRA, + SpeciesId.PALDEA_TAUROS, ], - [Moves.POLTERGEIST]: [ - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.MEW, - Species.MISDREAVUS, - Species.SHEDINJA, - Species.SABLEYE, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.MISMAGIUS, - Species.SPIRITOMB, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.GIRATINA, - Species.YAMASK, - Species.COFAGRIGUS, - Species.FRILLISH, - Species.JELLICENT, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.GOLETT, - Species.GOLURK, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.DECIDUEYE, - Species.SANDYGAST, - Species.PALOSSAND, - Species.DHELMISE, - Species.LUNALA, - Species.MARSHADOW, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.CURSOLA, - Species.RUNERIGUS, - Species.SPECTRIER, - Species.SKELEDIRGE, - Species.CERULEDGE, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.RABSCA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLUTTER_MANE, - Species.GHOLDENGO, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.MUNKIDORI, - Species.PECHARUNT, - Species.ALOLA_MAROWAK, - Species.GALAR_YAMASK, - Species.HISUI_TYPHLOSION, - Species.HISUI_ZOROARK, + [MoveId.POLTERGEIST]: [ + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.MEW, + SpeciesId.MISDREAVUS, + SpeciesId.SHEDINJA, + SpeciesId.SABLEYE, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.MISMAGIUS, + SpeciesId.SPIRITOMB, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.GIRATINA, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.DECIDUEYE, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.DHELMISE, + SpeciesId.LUNALA, + SpeciesId.MARSHADOW, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.CURSOLA, + SpeciesId.RUNERIGUS, + SpeciesId.SPECTRIER, + SpeciesId.SKELEDIRGE, + SpeciesId.CERULEDGE, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.RABSCA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLUTTER_MANE, + SpeciesId.GHOLDENGO, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.MUNKIDORI, + SpeciesId.PECHARUNT, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.GALAR_YAMASK, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_ZOROARK, ], - [Moves.CORROSIVE_GAS]: [ - Species.VILEPLUME, - Species.TENTACRUEL, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.KOFFING, - Species.WEEZING, - Species.MEW, - Species.STUNKY, - Species.SKUNTANK, - Species.TOXICROAK, - Species.TRUBBISH, - Species.GARBODOR, - Species.SALAZZLE, - Species.NIHILEGO, - Species.GUZZLORD, - Species.GALAR_WEEZING, + [MoveId.CORROSIVE_GAS]: [ + SpeciesId.VILEPLUME, + SpeciesId.TENTACRUEL, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.MEW, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.TOXICROAK, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.SALAZZLE, + SpeciesId.NIHILEGO, + SpeciesId.GUZZLORD, + SpeciesId.GALAR_WEEZING, ], - [Moves.COACHING]: [ - Species.POLIWRATH, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.MEW, - Species.HERACROSS, - Species.HITMONTOP, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MAKUHITA, - Species.HARIYAMA, - Species.INFERNAPE, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.GALLADE, - Species.PIGNITE, - Species.EMBOAR, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.THROH, - Species.SAWK, - Species.SCRAGGY, - Species.SCRAFTY, - Species.MIENFOO, - Species.MIENSHAO, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.KELDEO, - Species.MELOETTA, - Species.CHESNAUGHT, - Species.PANCHAM, - Species.PANGORO, - Species.HAWLUCHA, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.STUFFUL, - Species.BEWEAR, - Species.PASSIMIAN, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.MARSHADOW, - Species.ZERAORA, - Species.CINDERACE, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SIRFETCHD, - Species.FALINKS, - Species.ZAMAZENTA, - Species.KUBFU, - Species.URSHIFU, - Species.SNEASLER, - Species.QUAQUAVAL, - Species.PAWMO, - Species.PAWMOT, - Species.ANNIHILAPE, - Species.IRON_VALIANT, - Species.IRON_LEAVES, - Species.GALAR_ZAPDOS, - Species.HISUI_SNEASEL, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, + [MoveId.COACHING]: [ + SpeciesId.POLIWRATH, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.MEW, + SpeciesId.HERACROSS, + SpeciesId.HITMONTOP, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.INFERNAPE, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.GALLADE, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.CHESNAUGHT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.HAWLUCHA, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.PASSIMIAN, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.CINDERACE, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SIRFETCHD, + SpeciesId.FALINKS, + SpeciesId.ZAMAZENTA, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.SNEASLER, + SpeciesId.QUAQUAVAL, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.ANNIHILAPE, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_LEAVES, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.FLIP_TURN]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.PSYDUCK, - Species.GOLDUCK, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SEEL, - Species.DEWGONG, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.VAPOREON, - Species.KABUTOPS, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.CHINCHOU, - Species.LANTURN, - Species.QWILFISH, - Species.KINGDRA, - Species.SWAMPERT, - Species.CARVANHA, - Species.SHARPEDO, - Species.MILOTIC, - Species.LUVDISC, - Species.LATIOS, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BUIZEL, - Species.FLOATZEL, - Species.FINNEON, - Species.LUMINEON, - Species.PHIONE, - Species.MANAPHY, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.BASCULIN, - Species.SWANNA, - Species.ALOMOMOLA, - Species.KELDEO, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.WISHIWASHI, - Species.BRUXISH, - Species.INTELEON, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.EISCUE, - Species.BASCULEGION, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.PALAFIN, - Species.VELUZA, - Species.IRON_BUNDLE, - Species.WALKING_WAKE, - Species.HISUI_SAMUROTT, + [MoveId.FLIP_TURN]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.VAPOREON, + SpeciesId.KABUTOPS, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.QWILFISH, + SpeciesId.KINGDRA, + SpeciesId.SWAMPERT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.MILOTIC, + SpeciesId.LUVDISC, + SpeciesId.LATIOS, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.BASCULIN, + SpeciesId.SWANNA, + SpeciesId.ALOMOMOLA, + SpeciesId.KELDEO, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.WISHIWASHI, + SpeciesId.BRUXISH, + SpeciesId.INTELEON, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.EISCUE, + SpeciesId.BASCULEGION, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.PALAFIN, + SpeciesId.VELUZA, + SpeciesId.IRON_BUNDLE, + SpeciesId.WALKING_WAKE, + SpeciesId.HISUI_SAMUROTT, ], - [Moves.TRIPLE_AXEL]: [ - Species.SEEL, - Species.DEWGONG, - Species.JYNX, - Species.ARTICUNO, - Species.MEW, - Species.BELLOSSOM, - Species.SNEASEL, - Species.DELIBIRD, - Species.HITMONTOP, - Species.KIRLIA, - Species.GARDEVOIR, - Species.MILOTIC, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.AMBIPOM, - Species.BUNEARY, - Species.LOPUNNY, - Species.WEAVILE, - Species.GLACEON, - Species.GALLADE, - Species.FROSLASS, - Species.LEAVANNY, - Species.MINCCINO, - Species.CINCCINO, - Species.CRYOGONAL, - Species.MIENSHAO, - Species.MELOETTA, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.STEENEE, - Species.TSAREENA, - Species.PHEROMOSA, - Species.MR_RIME, - Species.FROSMOTH, - Species.MEOWSCARADA, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_NINETALES, - Species.GALAR_MR_MIME, - Species.HISUI_LILLIGANT, + [MoveId.TRIPLE_AXEL]: [ + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.JYNX, + SpeciesId.ARTICUNO, + SpeciesId.MEW, + SpeciesId.BELLOSSOM, + SpeciesId.SNEASEL, + SpeciesId.DELIBIRD, + SpeciesId.HITMONTOP, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.MILOTIC, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.AMBIPOM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.WEAVILE, + SpeciesId.GLACEON, + SpeciesId.GALLADE, + SpeciesId.FROSLASS, + SpeciesId.LEAVANNY, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.CRYOGONAL, + SpeciesId.MIENSHAO, + SpeciesId.MELOETTA, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.PHEROMOSA, + SpeciesId.MR_RIME, + SpeciesId.FROSMOTH, + SpeciesId.MEOWSCARADA, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_NINETALES, + SpeciesId.GALAR_MR_MIME, + SpeciesId.HISUI_LILLIGANT, ], - [Moves.DUAL_WINGBEAT]: [ - Species.CHARIZARD, - Species.BUTTERFREE, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.ZUBAT, - Species.GOLBAT, - Species.FARFETCHD, - Species.SCYTHER, - Species.AERODACTYL, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRAGONITE, - Species.MEW, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.CROBAT, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MURKROW, - Species.DUNSPARCE, - Species.GLIGAR, - Species.SCIZOR, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.WINGULL, - Species.PELIPPER, - Species.MASQUERAIN, - Species.NINJASK, - Species.VIBRAVA, - Species.FLYGON, - Species.SWABLU, - Species.ALTARIA, - Species.TROPIUS, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.COMBEE, - Species.VESPIQUEN, - Species.HONCHKROW, - Species.TOGEKISS, - Species.YANMEGA, - Species.GLISCOR, - Species.PALKIA, - Species.GIRATINA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.WOOBAT, - Species.SWOOBAT, - Species.SIGILYPH, - Species.ARCHEN, - Species.ARCHEOPS, - Species.EMOLGA, - Species.DRUDDIGON, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HYDREIGON, - Species.VOLCARONA, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.HAWLUCHA, - Species.NOIBAT, - Species.NOIVERN, - Species.YVELTAL, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.VIKAVOLT, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.LUNALA, - Species.BUZZWOLE, - Species.NAGANADEL, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.FLAPPLE, - Species.CRAMORANT, - Species.SIRFETCHD, - Species.FROSMOTH, - Species.KLEAVOR, - Species.SQUAWKABILLY, - Species.WATTREL, - Species.KILOWATTREL, - Species.BOMBIRDIER, - Species.FLAMIGO, - Species.DUDUNSPARCE, - Species.SLITHER_WING, - Species.IRON_JUGULIS, - Species.KORAIDON, - Species.FEZANDIPITI, - Species.GALAR_FARFETCHD, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.HISUI_BRAVIARY, - Species.HISUI_DECIDUEYE, + [MoveId.DUAL_WINGBEAT]: [ + SpeciesId.CHARIZARD, + SpeciesId.BUTTERFREE, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.FARFETCHD, + SpeciesId.SCYTHER, + SpeciesId.AERODACTYL, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.CROBAT, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MURKROW, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.SCIZOR, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.MASQUERAIN, + SpeciesId.NINJASK, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.TROPIUS, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.COMBEE, + SpeciesId.VESPIQUEN, + SpeciesId.HONCHKROW, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.GLISCOR, + SpeciesId.PALKIA, + SpeciesId.GIRATINA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.SIGILYPH, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.EMOLGA, + SpeciesId.DRUDDIGON, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HYDREIGON, + SpeciesId.VOLCARONA, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.HAWLUCHA, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.YVELTAL, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.VIKAVOLT, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.LUNALA, + SpeciesId.BUZZWOLE, + SpeciesId.NAGANADEL, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.FLAPPLE, + SpeciesId.CRAMORANT, + SpeciesId.SIRFETCHD, + SpeciesId.FROSMOTH, + SpeciesId.KLEAVOR, + SpeciesId.SQUAWKABILLY, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.BOMBIRDIER, + SpeciesId.FLAMIGO, + SpeciesId.DUDUNSPARCE, + SpeciesId.SLITHER_WING, + SpeciesId.IRON_JUGULIS, + SpeciesId.KORAIDON, + SpeciesId.FEZANDIPITI, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_DECIDUEYE, ], - [Moves.SCORCHING_SANDS]: [ - Species.CHARIZARD, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDOQUEEN, - Species.NIDOKING, - Species.NINETALES, - Species.DIGLETT, - Species.DUGTRIO, - Species.ARCANINE, - Species.RAPIDASH, - Species.ONIX, - Species.CUBONE, - Species.MAROWAK, - Species.RHYHORN, - Species.RHYDON, - Species.MAGMAR, - Species.FLAREON, - Species.MOLTRES, - Species.MEW, - Species.TYPHLOSION, - Species.STEELIX, - Species.MAGCARGO, - Species.ENTEI, - Species.HO_OH, - Species.BLAZIKEN, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.BALTOY, - Species.CLAYDOL, - Species.GROUDON, - Species.INFERNAPE, - Species.TORTERRA, - Species.SHIELDON, - Species.BASTIODON, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.RHYPERIOR, - Species.MAGMORTAR, - Species.HEATRAN, - Species.ARCEUS, - Species.VICTINI, - Species.DRILBUR, - Species.EXCADRILL, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.GOLETT, - Species.GOLURK, - Species.HEATMOR, - Species.RESHIRAM, - Species.LANDORUS, - Species.DELPHOX, - Species.DIGGERSBY, - Species.ZYGARDE, - Species.DIANCIE, - Species.VOLCANION, - Species.INCINEROAR, - Species.SANDYGAST, - Species.PALOSSAND, - Species.MINIOR, - Species.TURTONATOR, - Species.CINDERACE, - Species.CARKOL, - Species.COALOSSAL, - Species.SILICOBRA, - Species.SANDACONDA, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.SKELEDIRGE, - Species.ARMAROUGE, - Species.SANDY_SHOCKS, - Species.GOUGING_FIRE, - Species.TERAPAGOS, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MAROWAK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, + [MoveId.SCORCHING_SANDS]: [ + SpeciesId.CHARIZARD, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDOKING, + SpeciesId.NINETALES, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.ARCANINE, + SpeciesId.RAPIDASH, + SpeciesId.ONIX, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.MAGMAR, + SpeciesId.FLAREON, + SpeciesId.MOLTRES, + SpeciesId.MEW, + SpeciesId.TYPHLOSION, + SpeciesId.STEELIX, + SpeciesId.MAGCARGO, + SpeciesId.ENTEI, + SpeciesId.HO_OH, + SpeciesId.BLAZIKEN, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.GROUDON, + SpeciesId.INFERNAPE, + SpeciesId.TORTERRA, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.RHYPERIOR, + SpeciesId.MAGMORTAR, + SpeciesId.HEATRAN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.HEATMOR, + SpeciesId.RESHIRAM, + SpeciesId.LANDORUS, + SpeciesId.DELPHOX, + SpeciesId.DIGGERSBY, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.VOLCANION, + SpeciesId.INCINEROAR, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.MINIOR, + SpeciesId.TURTONATOR, + SpeciesId.CINDERACE, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.SKELEDIRGE, + SpeciesId.ARMAROUGE, + SpeciesId.SANDY_SHOCKS, + SpeciesId.GOUGING_FIRE, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, ], - [Moves.TERA_BLAST]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.CATERPIE, - Species.METAPOD, - Species.BUTTERFREE, - Species.WEEDLE, - Species.KAKUNA, - Species.BEEDRILL, - Species.PIDGEY, - Species.PIDGEOTTO, - Species.PIDGEOT, - Species.RATTATA, - Species.RATICATE, - Species.SPEAROW, - Species.FEAROW, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.SANDSHREW, - Species.SANDSLASH, - Species.NIDORAN_F, - Species.NIDORINA, - Species.NIDOQUEEN, - Species.NIDORAN_M, - Species.NIDORINO, - Species.NIDOKING, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.VULPIX, - Species.NINETALES, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ZUBAT, - Species.GOLBAT, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.PARAS, - Species.PARASECT, - Species.VENONAT, - Species.VENOMOTH, - Species.DIGLETT, - Species.DUGTRIO, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.MANKEY, - Species.PRIMEAPE, - Species.GROWLITHE, - Species.ARCANINE, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.ABRA, - Species.KADABRA, - Species.ALAKAZAM, - Species.MACHOP, - Species.MACHOKE, - Species.MACHAMP, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.GEODUDE, - Species.GRAVELER, - Species.GOLEM, - Species.PONYTA, - Species.RAPIDASH, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.MAGNEMITE, - Species.MAGNETON, - Species.FARFETCHD, - Species.DODUO, - Species.DODRIO, - Species.SEEL, - Species.DEWGONG, - Species.GRIMER, - Species.MUK, - Species.SHELLDER, - Species.CLOYSTER, - Species.GASTLY, - Species.HAUNTER, - Species.GENGAR, - Species.ONIX, - Species.DROWZEE, - Species.HYPNO, - Species.KRABBY, - Species.KINGLER, - Species.VOLTORB, - Species.ELECTRODE, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.CUBONE, - Species.MAROWAK, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.LICKITUNG, - Species.KOFFING, - Species.WEEZING, - Species.RHYHORN, - Species.RHYDON, - Species.CHANSEY, - Species.TANGELA, - Species.KANGASKHAN, - Species.HORSEA, - Species.SEADRA, - Species.GOLDEEN, - Species.SEAKING, - Species.STARYU, - Species.STARMIE, - Species.MR_MIME, - Species.SCYTHER, - Species.JYNX, - Species.ELECTABUZZ, - Species.MAGMAR, - Species.PINSIR, - Species.TAUROS, - Species.GYARADOS, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.PORYGON, - Species.OMANYTE, - Species.OMASTAR, - Species.KABUTO, - Species.KABUTOPS, - Species.AERODACTYL, - Species.SNORLAX, - Species.ARTICUNO, - Species.ZAPDOS, - Species.MOLTRES, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.HOOTHOOT, - Species.NOCTOWL, - Species.LEDYBA, - Species.LEDIAN, - Species.SPINARAK, - Species.ARIADOS, - Species.CROBAT, - Species.CHINCHOU, - Species.LANTURN, - Species.PICHU, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.TOGEPI, - Species.TOGETIC, - Species.NATU, - Species.XATU, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.POLITOED, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.YANMA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.GLIGAR, - Species.STEELIX, - Species.SNUBBULL, - Species.GRANBULL, - Species.QWILFISH, - Species.SCIZOR, - Species.SHUCKLE, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SLUGMA, - Species.MAGCARGO, - Species.SWINUB, - Species.PILOSWINE, - Species.CORSOLA, - Species.REMORAID, - Species.OCTILLERY, - Species.DELIBIRD, - Species.MANTINE, - Species.SKARMORY, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.KINGDRA, - Species.PHANPY, - Species.DONPHAN, - Species.PORYGON2, - Species.STANTLER, - Species.TYROGUE, - Species.HITMONTOP, - Species.SMOOCHUM, - Species.ELEKID, - Species.MAGBY, - Species.MILTANK, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.LARVITAR, - Species.PUPITAR, - Species.TYRANITAR, - Species.LUGIA, - Species.HO_OH, - Species.CELEBI, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.ZIGZAGOON, - Species.LINOONE, - Species.WURMPLE, - Species.SILCOON, - Species.BEAUTIFLY, - Species.CASCOON, - Species.DUSTOX, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.TAILLOW, - Species.SWELLOW, - Species.WINGULL, - Species.PELIPPER, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.NINCADA, - Species.NINJASK, - Species.SHEDINJA, - Species.WHISMUR, - Species.LOUDRED, - Species.EXPLOUD, - Species.MAKUHITA, - Species.HARIYAMA, - Species.AZURILL, - Species.NOSEPASS, - Species.SKITTY, - Species.DELCATTY, - Species.SABLEYE, - Species.MAWILE, - Species.ARON, - Species.LAIRON, - Species.AGGRON, - Species.MEDITITE, - Species.MEDICHAM, - Species.ELECTRIKE, - Species.MANECTRIC, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ROSELIA, - Species.GULPIN, - Species.SWALOT, - Species.CARVANHA, - Species.SHARPEDO, - Species.WAILMER, - Species.WAILORD, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SPOINK, - Species.GRUMPIG, - Species.SPINDA, - Species.TRAPINCH, - Species.VIBRAVA, - Species.FLYGON, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.ZANGOOSE, - Species.SEVIPER, - Species.LUNATONE, - Species.SOLROCK, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.BALTOY, - Species.CLAYDOL, - Species.LILEEP, - Species.CRADILY, - Species.ANORITH, - Species.ARMALDO, - Species.FEEBAS, - Species.MILOTIC, - Species.CASTFORM, - Species.KECLEON, - Species.SHUPPET, - Species.BANETTE, - Species.DUSKULL, - Species.DUSCLOPS, - Species.TROPIUS, - Species.CHIMECHO, - Species.ABSOL, - Species.SNORUNT, - Species.GLALIE, - Species.SPHEAL, - Species.SEALEO, - Species.WALREIN, - Species.CLAMPERL, - Species.HUNTAIL, - Species.GOREBYSS, - Species.RELICANTH, - Species.LUVDISC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.BELDUM, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGICE, - Species.REGISTEEL, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.JIRACHI, - Species.DEOXYS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.STARLY, - Species.STARAVIA, - Species.STARAPTOR, - Species.BIDOOF, - Species.BIBAREL, - Species.KRICKETOT, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.BUDEW, - Species.ROSERADE, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.BURMY, - Species.WORMADAM, - Species.MOTHIM, - Species.COMBEE, - Species.VESPIQUEN, - Species.PACHIRISU, - Species.BUIZEL, - Species.FLOATZEL, - Species.CHERUBI, - Species.CHERRIM, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.BUNEARY, - Species.LOPUNNY, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.GLAMEOW, - Species.PURUGLY, - Species.CHINGLING, - Species.STUNKY, - Species.SKUNTANK, - Species.BRONZOR, - Species.BRONZONG, - Species.BONSLY, - Species.MIME_JR, - Species.HAPPINY, - Species.CHATOT, - Species.SPIRITOMB, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.HIPPOPOTAS, - Species.HIPPOWDON, - Species.SKORUPI, - Species.DRAPION, - Species.CROAGUNK, - Species.TOXICROAK, - Species.CARNIVINE, - Species.FINNEON, - Species.LUMINEON, - Species.MANTYKE, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.MAGNEZONE, - Species.LICKILICKY, - Species.RHYPERIOR, - Species.TANGROWTH, - Species.ELECTIVIRE, - Species.MAGMORTAR, - Species.TOGEKISS, - Species.YANMEGA, - Species.LEAFEON, - Species.GLACEON, - Species.GLISCOR, - Species.MAMOSWINE, - Species.PORYGON_Z, - Species.GALLADE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.FROSLASS, - Species.ROTOM, - Species.UXIE, - Species.MESPRIT, - Species.AZELF, - Species.DIALGA, - Species.PALKIA, - Species.HEATRAN, - Species.REGIGIGAS, - Species.GIRATINA, - Species.CRESSELIA, - Species.PHIONE, - Species.MANAPHY, - Species.DARKRAI, - Species.SHAYMIN, - Species.ARCEUS, - Species.VICTINI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.PATRAT, - Species.WATCHOG, - Species.LILLIPUP, - Species.HERDIER, - Species.STOUTLAND, - Species.PURRLOIN, - Species.LIEPARD, - Species.PANSAGE, - Species.SIMISAGE, - Species.PANSEAR, - Species.SIMISEAR, - Species.PANPOUR, - Species.SIMIPOUR, - Species.MUNNA, - Species.MUSHARNA, - Species.PIDOVE, - Species.TRANQUILL, - Species.UNFEZANT, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.ROGGENROLA, - Species.BOLDORE, - Species.GIGALITH, - Species.WOOBAT, - Species.SWOOBAT, - Species.DRILBUR, - Species.EXCADRILL, - Species.AUDINO, - Species.TIMBURR, - Species.GURDURR, - Species.CONKELDURR, - Species.TYMPOLE, - Species.PALPITOAD, - Species.SEISMITOAD, - Species.THROH, - Species.SAWK, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.VENIPEDE, - Species.WHIRLIPEDE, - Species.SCOLIPEDE, - Species.COTTONEE, - Species.WHIMSICOTT, - Species.PETILIL, - Species.LILLIGANT, - Species.BASCULIN, - Species.SANDILE, - Species.KROKOROK, - Species.KROOKODILE, - Species.DARUMAKA, - Species.DARMANITAN, - Species.MARACTUS, - Species.DWEBBLE, - Species.CRUSTLE, - Species.SCRAGGY, - Species.SCRAFTY, - Species.SIGILYPH, - Species.YAMASK, - Species.COFAGRIGUS, - Species.TIRTOUGA, - Species.CARRACOSTA, - Species.ARCHEN, - Species.ARCHEOPS, - Species.TRUBBISH, - Species.GARBODOR, - Species.ZORUA, - Species.ZOROARK, - Species.MINCCINO, - Species.CINCCINO, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.SOLOSIS, - Species.DUOSION, - Species.REUNICLUS, - Species.DUCKLETT, - Species.SWANNA, - Species.VANILLITE, - Species.VANILLISH, - Species.VANILLUXE, - Species.DEERLING, - Species.SAWSBUCK, - Species.EMOLGA, - Species.KARRABLAST, - Species.ESCAVALIER, - Species.FOONGUS, - Species.AMOONGUSS, - Species.FRILLISH, - Species.JELLICENT, - Species.ALOMOMOLA, - Species.JOLTIK, - Species.GALVANTULA, - Species.FERROSEED, - Species.FERROTHORN, - Species.KLINK, - Species.KLANG, - Species.KLINKLANG, - Species.TYNAMO, - Species.EELEKTRIK, - Species.EELEKTROSS, - Species.ELGYEM, - Species.BEHEEYEM, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.SHELMET, - Species.ACCELGOR, - Species.STUNFISK, - Species.MIENFOO, - Species.MIENSHAO, - Species.DRUDDIGON, - Species.GOLETT, - Species.GOLURK, - Species.PAWNIARD, - Species.BISHARP, - Species.BOUFFALANT, - Species.RUFFLET, - Species.BRAVIARY, - Species.VULLABY, - Species.MANDIBUZZ, - Species.HEATMOR, - Species.DURANT, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.LARVESTA, - Species.VOLCARONA, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.TORNADUS, - Species.THUNDURUS, - Species.RESHIRAM, - Species.ZEKROM, - Species.LANDORUS, - Species.KYUREM, - Species.KELDEO, - Species.MELOETTA, - Species.GENESECT, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FENNEKIN, - Species.BRAIXEN, - Species.DELPHOX, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.BUNNELBY, - Species.DIGGERSBY, - Species.FLETCHLING, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.SCATTERBUG, - Species.SPEWPA, - Species.VIVILLON, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.PANCHAM, - Species.PANGORO, - Species.FURFROU, - Species.ESPURR, - Species.MEOWSTIC, - Species.HONEDGE, - Species.DOUBLADE, - Species.AEGISLASH, - Species.SPRITZEE, - Species.AROMATISSE, - Species.SWIRLIX, - Species.SLURPUFF, - Species.INKAY, - Species.MALAMAR, - Species.BINACLE, - Species.BARBARACLE, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.HELIOPTILE, - Species.HELIOLISK, - Species.TYRUNT, - Species.TYRANTRUM, - Species.AMAURA, - Species.AURORUS, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.CARBINK, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.KLEFKI, - Species.PHANTUMP, - Species.TREVENANT, - Species.PUMPKABOO, - Species.GOURGEIST, - Species.BERGMITE, - Species.AVALUGG, - Species.NOIBAT, - Species.NOIVERN, - Species.XERNEAS, - Species.YVELTAL, - Species.ZYGARDE, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.PIKIPEK, - Species.TRUMBEAK, - Species.TOUCANNON, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.WISHIWASHI, - Species.MAREANIE, - Species.TOXAPEX, - Species.MUDBRAY, - Species.MUDSDALE, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.MORELULL, - Species.SHIINOTIC, - Species.SALANDIT, - Species.SALAZZLE, - Species.STUFFUL, - Species.BEWEAR, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.WIMPOD, - Species.GOLISOPOD, - Species.SANDYGAST, - Species.PALOSSAND, - Species.TYPE_NULL, - Species.SILVALLY, - Species.MINIOR, - Species.KOMALA, - Species.TURTONATOR, - Species.TOGEDEMARU, - Species.MIMIKYU, - Species.BRUXISH, - Species.DRAMPA, - Species.DHELMISE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.TAPU_KOKO, - Species.TAPU_LELE, - Species.TAPU_BULU, - Species.TAPU_FINI, - Species.SOLGALEO, - Species.LUNALA, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.ZERAORA, - Species.MELTAN, - Species.MELMETAL, - Species.ALOLA_RATTATA, - Species.ALOLA_RATICATE, - Species.ALOLA_RAICHU, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_DIGLETT, - Species.ALOLA_DUGTRIO, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.ALOLA_GRIMER, - Species.ALOLA_MUK, - Species.ALOLA_EXEGGUTOR, - Species.ALOLA_MAROWAK, - Species.ETERNAL_FLOETTE, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.SKWOVET, - Species.GREEDENT, - Species.ROOKIDEE, - Species.CORVISQUIRE, - Species.CORVIKNIGHT, - Species.BLIPBUG, - Species.DOTTLER, - Species.ORBEETLE, - Species.NICKIT, - Species.THIEVUL, - Species.GOSSIFLEUR, - Species.ELDEGOSS, - Species.WOOLOO, - Species.DUBWOOL, - Species.CHEWTLE, - Species.DREDNAW, - Species.YAMPER, - Species.BOLTUND, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.APPLIN, - Species.FLAPPLE, - Species.APPLETUN, - Species.SILICOBRA, - Species.SANDACONDA, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.TOXEL, - Species.TOXTRICITY, - Species.SIZZLIPEDE, - Species.CENTISKORCH, - Species.CLOBBOPUS, - Species.GRAPPLOCT, - Species.SINISTEA, - Species.POLTEAGEIST, - Species.HATENNA, - Species.HATTREM, - Species.HATTERENE, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.OBSTAGOON, - Species.PERRSERKER, - Species.CURSOLA, - Species.SIRFETCHD, - Species.MR_RIME, - Species.RUNERIGUS, - Species.MILCERY, - Species.ALCREMIE, - Species.FALINKS, - Species.PINCURCHIN, - Species.SNOM, - Species.FROSMOTH, - Species.STONJOURNER, - Species.EISCUE, - Species.INDEEDEE, - Species.MORPEKO, - Species.CUFANT, - Species.COPPERAJAH, - Species.DRACOZOLT, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.ARCTOVISH, - Species.DURALUDON, - Species.DREEPY, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.ETERNATUS, - Species.KUBFU, - Species.URSHIFU, - Species.ZARUDE, - Species.REGIELEKI, - Species.REGIDRAGO, - Species.GLASTRIER, - Species.SPECTRIER, - Species.CALYREX, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.BASCULEGION, - Species.SNEASLER, - Species.OVERQWIL, - Species.ENAMORUS, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.PAWMI, - Species.PAWMO, - Species.PAWMOT, - Species.TANDEMAUS, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.SQUAWKABILLY, - Species.NACLI, - Species.NACLSTACK, - Species.GARGANACL, - Species.CHARCADET, - Species.ARMAROUGE, - Species.CERULEDGE, - Species.TADBULB, - Species.BELLIBOLT, - Species.WATTREL, - Species.KILOWATTREL, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.WIGLETT, - Species.WUGTRIO, - Species.BOMBIRDIER, - Species.FINIZEN, - Species.PALAFIN, - Species.VAROOM, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.ORTHWORM, - Species.GLIMMET, - Species.GLIMMORA, - Species.GREAVARD, - Species.HOUNDSTONE, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.ANNIHILAPE, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.DUDUNSPARCE, - Species.KINGAMBIT, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.GIMMIGHOUL, - Species.GHOLDENGO, - Species.WO_CHIEN, - Species.CHIEN_PAO, - Species.TING_LU, - Species.CHI_YU, - Species.ROARING_MOON, - Species.IRON_VALIANT, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.IRON_LEAVES, - Species.DIPPLIN, - Species.POLTCHAGEIST, - Species.SINISTCHA, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, - Species.OGERPON, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.PECHARUNT, - Species.GALAR_MEOWTH, - Species.GALAR_PONYTA, - Species.GALAR_RAPIDASH, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_FARFETCHD, - Species.GALAR_WEEZING, - Species.GALAR_MR_MIME, - Species.GALAR_ARTICUNO, - Species.GALAR_ZAPDOS, - Species.GALAR_MOLTRES, - Species.GALAR_SLOWKING, - Species.GALAR_CORSOLA, - Species.GALAR_ZIGZAGOON, - Species.GALAR_LINOONE, - Species.GALAR_DARUMAKA, - Species.GALAR_DARMANITAN, - Species.GALAR_YAMASK, - Species.GALAR_STUNFISK, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_VOLTORB, - Species.HISUI_ELECTRODE, - Species.HISUI_TYPHLOSION, - Species.HISUI_QWILFISH, - Species.HISUI_SNEASEL, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_BRAVIARY, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + [MoveId.TERA_BLAST]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.CATERPIE, + SpeciesId.METAPOD, + SpeciesId.BUTTERFREE, + SpeciesId.WEEDLE, + SpeciesId.KAKUNA, + SpeciesId.BEEDRILL, + SpeciesId.PIDGEY, + SpeciesId.PIDGEOTTO, + SpeciesId.PIDGEOT, + SpeciesId.RATTATA, + SpeciesId.RATICATE, + SpeciesId.SPEAROW, + SpeciesId.FEAROW, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.SANDSHREW, + SpeciesId.SANDSLASH, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORINA, + SpeciesId.NIDOQUEEN, + SpeciesId.NIDORAN_M, + SpeciesId.NIDORINO, + SpeciesId.NIDOKING, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.VULPIX, + SpeciesId.NINETALES, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ZUBAT, + SpeciesId.GOLBAT, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.PARAS, + SpeciesId.PARASECT, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.DIGLETT, + SpeciesId.DUGTRIO, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.MANKEY, + SpeciesId.PRIMEAPE, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.ABRA, + SpeciesId.KADABRA, + SpeciesId.ALAKAZAM, + SpeciesId.MACHOP, + SpeciesId.MACHOKE, + SpeciesId.MACHAMP, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.GEODUDE, + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.PONYTA, + SpeciesId.RAPIDASH, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.MAGNEMITE, + SpeciesId.MAGNETON, + SpeciesId.FARFETCHD, + SpeciesId.DODUO, + SpeciesId.DODRIO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, + SpeciesId.MUK, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.GASTLY, + SpeciesId.HAUNTER, + SpeciesId.GENGAR, + SpeciesId.ONIX, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.KRABBY, + SpeciesId.KINGLER, + SpeciesId.VOLTORB, + SpeciesId.ELECTRODE, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.CUBONE, + SpeciesId.MAROWAK, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.LICKITUNG, + SpeciesId.KOFFING, + SpeciesId.WEEZING, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.CHANSEY, + SpeciesId.TANGELA, + SpeciesId.KANGASKHAN, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GOLDEEN, + SpeciesId.SEAKING, + SpeciesId.STARYU, + SpeciesId.STARMIE, + SpeciesId.MR_MIME, + SpeciesId.SCYTHER, + SpeciesId.JYNX, + SpeciesId.ELECTABUZZ, + SpeciesId.MAGMAR, + SpeciesId.PINSIR, + SpeciesId.TAUROS, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.OMASTAR, + SpeciesId.KABUTO, + SpeciesId.KABUTOPS, + SpeciesId.AERODACTYL, + SpeciesId.SNORLAX, + SpeciesId.ARTICUNO, + SpeciesId.ZAPDOS, + SpeciesId.MOLTRES, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.HOOTHOOT, + SpeciesId.NOCTOWL, + SpeciesId.LEDYBA, + SpeciesId.LEDIAN, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.CROBAT, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TOGETIC, + SpeciesId.NATU, + SpeciesId.XATU, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.POLITOED, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.YANMA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.GLIGAR, + SpeciesId.STEELIX, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.QWILFISH, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.CORSOLA, + SpeciesId.REMORAID, + SpeciesId.OCTILLERY, + SpeciesId.DELIBIRD, + SpeciesId.MANTINE, + SpeciesId.SKARMORY, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.KINGDRA, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.PORYGON2, + SpeciesId.STANTLER, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.SMOOCHUM, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.MILTANK, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.LARVITAR, + SpeciesId.PUPITAR, + SpeciesId.TYRANITAR, + SpeciesId.LUGIA, + SpeciesId.HO_OH, + SpeciesId.CELEBI, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.LINOONE, + SpeciesId.WURMPLE, + SpeciesId.SILCOON, + SpeciesId.BEAUTIFLY, + SpeciesId.CASCOON, + SpeciesId.DUSTOX, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.TAILLOW, + SpeciesId.SWELLOW, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.NINCADA, + SpeciesId.NINJASK, + SpeciesId.SHEDINJA, + SpeciesId.WHISMUR, + SpeciesId.LOUDRED, + SpeciesId.EXPLOUD, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.AZURILL, + SpeciesId.NOSEPASS, + SpeciesId.SKITTY, + SpeciesId.DELCATTY, + SpeciesId.SABLEYE, + SpeciesId.MAWILE, + SpeciesId.ARON, + SpeciesId.LAIRON, + SpeciesId.AGGRON, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ELECTRIKE, + SpeciesId.MANECTRIC, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ROSELIA, + SpeciesId.GULPIN, + SpeciesId.SWALOT, + SpeciesId.CARVANHA, + SpeciesId.SHARPEDO, + SpeciesId.WAILMER, + SpeciesId.WAILORD, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.SPINDA, + SpeciesId.TRAPINCH, + SpeciesId.VIBRAVA, + SpeciesId.FLYGON, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.SOLROCK, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.BALTOY, + SpeciesId.CLAYDOL, + SpeciesId.LILEEP, + SpeciesId.CRADILY, + SpeciesId.ANORITH, + SpeciesId.ARMALDO, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.CASTFORM, + SpeciesId.KECLEON, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.DUSKULL, + SpeciesId.DUSCLOPS, + SpeciesId.TROPIUS, + SpeciesId.CHIMECHO, + SpeciesId.ABSOL, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.SPHEAL, + SpeciesId.SEALEO, + SpeciesId.WALREIN, + SpeciesId.CLAMPERL, + SpeciesId.HUNTAIL, + SpeciesId.GOREBYSS, + SpeciesId.RELICANTH, + SpeciesId.LUVDISC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.BELDUM, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.STARLY, + SpeciesId.STARAVIA, + SpeciesId.STARAPTOR, + SpeciesId.BIDOOF, + SpeciesId.BIBAREL, + SpeciesId.KRICKETOT, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.BUDEW, + SpeciesId.ROSERADE, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BURMY, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.COMBEE, + SpeciesId.VESPIQUEN, + SpeciesId.PACHIRISU, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.CHERUBI, + SpeciesId.CHERRIM, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.BUNEARY, + SpeciesId.LOPUNNY, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.GLAMEOW, + SpeciesId.PURUGLY, + SpeciesId.CHINGLING, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.CHATOT, + SpeciesId.SPIRITOMB, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.HIPPOPOTAS, + SpeciesId.HIPPOWDON, + SpeciesId.SKORUPI, + SpeciesId.DRAPION, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.CARNIVINE, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.MANTYKE, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.MAGNEZONE, + SpeciesId.LICKILICKY, + SpeciesId.RHYPERIOR, + SpeciesId.TANGROWTH, + SpeciesId.ELECTIVIRE, + SpeciesId.MAGMORTAR, + SpeciesId.TOGEKISS, + SpeciesId.YANMEGA, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GLISCOR, + SpeciesId.MAMOSWINE, + SpeciesId.PORYGON_Z, + SpeciesId.GALLADE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.FROSLASS, + SpeciesId.ROTOM, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.AZELF, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.GIRATINA, + SpeciesId.CRESSELIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.DARKRAI, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.VICTINI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.PATRAT, + SpeciesId.WATCHOG, + SpeciesId.LILLIPUP, + SpeciesId.HERDIER, + SpeciesId.STOUTLAND, + SpeciesId.PURRLOIN, + SpeciesId.LIEPARD, + SpeciesId.PANSAGE, + SpeciesId.SIMISAGE, + SpeciesId.PANSEAR, + SpeciesId.SIMISEAR, + SpeciesId.PANPOUR, + SpeciesId.SIMIPOUR, + SpeciesId.MUNNA, + SpeciesId.MUSHARNA, + SpeciesId.PIDOVE, + SpeciesId.TRANQUILL, + SpeciesId.UNFEZANT, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.ROGGENROLA, + SpeciesId.BOLDORE, + SpeciesId.GIGALITH, + SpeciesId.WOOBAT, + SpeciesId.SWOOBAT, + SpeciesId.DRILBUR, + SpeciesId.EXCADRILL, + SpeciesId.AUDINO, + SpeciesId.TIMBURR, + SpeciesId.GURDURR, + SpeciesId.CONKELDURR, + SpeciesId.TYMPOLE, + SpeciesId.PALPITOAD, + SpeciesId.SEISMITOAD, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.VENIPEDE, + SpeciesId.WHIRLIPEDE, + SpeciesId.SCOLIPEDE, + SpeciesId.COTTONEE, + SpeciesId.WHIMSICOTT, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.BASCULIN, + SpeciesId.SANDILE, + SpeciesId.KROKOROK, + SpeciesId.KROOKODILE, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.MARACTUS, + SpeciesId.DWEBBLE, + SpeciesId.CRUSTLE, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.COFAGRIGUS, + SpeciesId.TIRTOUGA, + SpeciesId.CARRACOSTA, + SpeciesId.ARCHEN, + SpeciesId.ARCHEOPS, + SpeciesId.TRUBBISH, + SpeciesId.GARBODOR, + SpeciesId.ZORUA, + SpeciesId.ZOROARK, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.SOLOSIS, + SpeciesId.DUOSION, + SpeciesId.REUNICLUS, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.VANILLITE, + SpeciesId.VANILLISH, + SpeciesId.VANILLUXE, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.EMOLGA, + SpeciesId.KARRABLAST, + SpeciesId.ESCAVALIER, + SpeciesId.FOONGUS, + SpeciesId.AMOONGUSS, + SpeciesId.FRILLISH, + SpeciesId.JELLICENT, + SpeciesId.ALOMOMOLA, + SpeciesId.JOLTIK, + SpeciesId.GALVANTULA, + SpeciesId.FERROSEED, + SpeciesId.FERROTHORN, + SpeciesId.KLINK, + SpeciesId.KLANG, + SpeciesId.KLINKLANG, + SpeciesId.TYNAMO, + SpeciesId.EELEKTRIK, + SpeciesId.EELEKTROSS, + SpeciesId.ELGYEM, + SpeciesId.BEHEEYEM, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.SHELMET, + SpeciesId.ACCELGOR, + SpeciesId.STUNFISK, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.DRUDDIGON, + SpeciesId.GOLETT, + SpeciesId.GOLURK, + SpeciesId.PAWNIARD, + SpeciesId.BISHARP, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.BRAVIARY, + SpeciesId.VULLABY, + SpeciesId.MANDIBUZZ, + SpeciesId.HEATMOR, + SpeciesId.DURANT, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.TORNADUS, + SpeciesId.THUNDURUS, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.LANDORUS, + SpeciesId.KYUREM, + SpeciesId.KELDEO, + SpeciesId.MELOETTA, + SpeciesId.GENESECT, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FENNEKIN, + SpeciesId.BRAIXEN, + SpeciesId.DELPHOX, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.BUNNELBY, + SpeciesId.DIGGERSBY, + SpeciesId.FLETCHLING, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.SCATTERBUG, + SpeciesId.SPEWPA, + SpeciesId.VIVILLON, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.PANCHAM, + SpeciesId.PANGORO, + SpeciesId.FURFROU, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.HONEDGE, + SpeciesId.DOUBLADE, + SpeciesId.AEGISLASH, + SpeciesId.SPRITZEE, + SpeciesId.AROMATISSE, + SpeciesId.SWIRLIX, + SpeciesId.SLURPUFF, + SpeciesId.INKAY, + SpeciesId.MALAMAR, + SpeciesId.BINACLE, + SpeciesId.BARBARACLE, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.HELIOPTILE, + SpeciesId.HELIOLISK, + SpeciesId.TYRUNT, + SpeciesId.TYRANTRUM, + SpeciesId.AMAURA, + SpeciesId.AURORUS, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.CARBINK, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.KLEFKI, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.PUMPKABOO, + SpeciesId.GOURGEIST, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.NOIBAT, + SpeciesId.NOIVERN, + SpeciesId.XERNEAS, + SpeciesId.YVELTAL, + SpeciesId.ZYGARDE, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.PIKIPEK, + SpeciesId.TRUMBEAK, + SpeciesId.TOUCANNON, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.WISHIWASHI, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MUDBRAY, + SpeciesId.MUDSDALE, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.MORELULL, + SpeciesId.SHIINOTIC, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.STUFFUL, + SpeciesId.BEWEAR, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.WIMPOD, + SpeciesId.GOLISOPOD, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.TYPE_NULL, + SpeciesId.SILVALLY, + SpeciesId.MINIOR, + SpeciesId.KOMALA, + SpeciesId.TURTONATOR, + SpeciesId.TOGEDEMARU, + SpeciesId.MIMIKYU, + SpeciesId.BRUXISH, + SpeciesId.DRAMPA, + SpeciesId.DHELMISE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.TAPU_KOKO, + SpeciesId.TAPU_LELE, + SpeciesId.TAPU_BULU, + SpeciesId.TAPU_FINI, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.ZERAORA, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_RATICATE, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_DUGTRIO, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.ALOLA_MUK, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.ALOLA_MAROWAK, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.ROOKIDEE, + SpeciesId.CORVISQUIRE, + SpeciesId.CORVIKNIGHT, + SpeciesId.BLIPBUG, + SpeciesId.DOTTLER, + SpeciesId.ORBEETLE, + SpeciesId.NICKIT, + SpeciesId.THIEVUL, + SpeciesId.GOSSIFLEUR, + SpeciesId.ELDEGOSS, + SpeciesId.WOOLOO, + SpeciesId.DUBWOOL, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.YAMPER, + SpeciesId.BOLTUND, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.APPLIN, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.TOXEL, + SpeciesId.TOXTRICITY, + SpeciesId.SIZZLIPEDE, + SpeciesId.CENTISKORCH, + SpeciesId.CLOBBOPUS, + SpeciesId.GRAPPLOCT, + SpeciesId.SINISTEA, + SpeciesId.POLTEAGEIST, + SpeciesId.HATENNA, + SpeciesId.HATTREM, + SpeciesId.HATTERENE, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.OBSTAGOON, + SpeciesId.PERRSERKER, + SpeciesId.CURSOLA, + SpeciesId.SIRFETCHD, + SpeciesId.MR_RIME, + SpeciesId.RUNERIGUS, + SpeciesId.MILCERY, + SpeciesId.ALCREMIE, + SpeciesId.FALINKS, + SpeciesId.PINCURCHIN, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.STONJOURNER, + SpeciesId.EISCUE, + SpeciesId.INDEEDEE, + SpeciesId.MORPEKO, + SpeciesId.CUFANT, + SpeciesId.COPPERAJAH, + SpeciesId.DRACOZOLT, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.ARCTOVISH, + SpeciesId.DURALUDON, + SpeciesId.DREEPY, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.ETERNATUS, + SpeciesId.KUBFU, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.REGIELEKI, + SpeciesId.REGIDRAGO, + SpeciesId.GLASTRIER, + SpeciesId.SPECTRIER, + SpeciesId.CALYREX, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.BASCULEGION, + SpeciesId.SNEASLER, + SpeciesId.OVERQWIL, + SpeciesId.ENAMORUS, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.PAWMI, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.TANDEMAUS, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.SQUAWKABILLY, + SpeciesId.NACLI, + SpeciesId.NACLSTACK, + SpeciesId.GARGANACL, + SpeciesId.CHARCADET, + SpeciesId.ARMAROUGE, + SpeciesId.CERULEDGE, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WATTREL, + SpeciesId.KILOWATTREL, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.BOMBIRDIER, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.VAROOM, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.ORTHWORM, + SpeciesId.GLIMMET, + SpeciesId.GLIMMORA, + SpeciesId.GREAVARD, + SpeciesId.HOUNDSTONE, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.ANNIHILAPE, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.DUDUNSPARCE, + SpeciesId.KINGAMBIT, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.GIMMIGHOUL, + SpeciesId.GHOLDENGO, + SpeciesId.WO_CHIEN, + SpeciesId.CHIEN_PAO, + SpeciesId.TING_LU, + SpeciesId.CHI_YU, + SpeciesId.ROARING_MOON, + SpeciesId.IRON_VALIANT, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.IRON_LEAVES, + SpeciesId.DIPPLIN, + SpeciesId.POLTCHAGEIST, + SpeciesId.SINISTCHA, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, + SpeciesId.OGERPON, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.PECHARUNT, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_RAPIDASH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_WEEZING, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_ZAPDOS, + SpeciesId.GALAR_MOLTRES, + SpeciesId.GALAR_SLOWKING, + SpeciesId.GALAR_CORSOLA, + SpeciesId.GALAR_ZIGZAGOON, + SpeciesId.GALAR_LINOONE, + SpeciesId.GALAR_DARUMAKA, + SpeciesId.GALAR_DARMANITAN, + SpeciesId.GALAR_YAMASK, + SpeciesId.GALAR_STUNFISK, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_ELECTRODE, + SpeciesId.HISUI_TYPHLOSION, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_BRAVIARY, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.ICE_SPINNER]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.ARTICUNO, - Species.DRAGONITE, - Species.MEW, - Species.MARILL, - Species.AZUMARILL, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.DELIBIRD, - Species.DONPHAN, - Species.HITMONTOP, - Species.LUDICOLO, - Species.SNORUNT, - Species.GLALIE, - Species.REGICE, - Species.REGISTEEL, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BUIZEL, - Species.FLOATZEL, - Species.BRONZOR, - Species.BRONZONG, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.FROSLASS, - Species.CINCCINO, - Species.CRYOGONAL, - Species.MIENSHAO, - Species.BERGMITE, - Species.AVALUGG, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.CRABOMINABLE, - Species.MAREANIE, - Species.TOXAPEX, - Species.KOMALA, - Species.MAGEARNA, - Species.DREDNAW, - Species.FROSMOTH, - Species.EISCUE, - Species.QUAQUAVAL, - Species.CYCLIZAR, - Species.CETODDLE, - Species.CETITAN, - Species.DUDUNSPARCE, - Species.GREAT_TUSK, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.CHIEN_PAO, - Species.TERAPAGOS, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, + [MoveId.ICE_SPINNER]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.ARTICUNO, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.DELIBIRD, + SpeciesId.DONPHAN, + SpeciesId.HITMONTOP, + SpeciesId.LUDICOLO, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.REGICE, + SpeciesId.REGISTEEL, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.FROSLASS, + SpeciesId.CINCCINO, + SpeciesId.CRYOGONAL, + SpeciesId.MIENSHAO, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.CRABOMINABLE, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.KOMALA, + SpeciesId.MAGEARNA, + SpeciesId.DREDNAW, + SpeciesId.FROSMOTH, + SpeciesId.EISCUE, + SpeciesId.QUAQUAVAL, + SpeciesId.CYCLIZAR, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.DUDUNSPARCE, + SpeciesId.GREAT_TUSK, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.CHIEN_PAO, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "rapid-strike", ], - Species.HISUI_LILLIGANT, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, ], - [Moves.SNOWSCAPE]: [ - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.CHANSEY, - Species.LAPRAS, - Species.ARTICUNO, - Species.DRAGONITE, - Species.MEW, - Species.MARILL, - Species.AZUMARILL, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.MISDREAVUS, - Species.SNEASEL, - Species.SWINUB, - Species.PILOSWINE, - Species.DELIBIRD, - Species.BLISSEY, - Species.SUICUNE, - Species.WINGULL, - Species.PELIPPER, - Species.SPOINK, - Species.GRUMPIG, - Species.ALTARIA, - Species.SNORUNT, - Species.GLALIE, - Species.LUVDISC, - Species.REGICE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.SHELLOS, - Species.GASTRODON, - Species.MISMAGIUS, - Species.HAPPINY, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.GLACEON, - Species.MAMOSWINE, - Species.FROSLASS, - Species.PALKIA, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.BASCULIN, - Species.ALOMOMOLA, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.TORNADUS, - Species.KYUREM, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.SKRELP, - Species.DRAGALGE, - Species.BERGMITE, - Species.AVALUGG, - Species.DIANCIE, - Species.PRIMARINA, - Species.CRABOMINABLE, - Species.MAGEARNA, - Species.INTELEON, - Species.FROSMOTH, - Species.EISCUE, - Species.GLASTRIER, - Species.BASCULEGION, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.SCREAM_TAIL, - Species.IRON_BUNDLE, - Species.FRIGIBAX, - Species.ARCTIBAX, - Species.BAXCALIBUR, - Species.CHIEN_PAO, - Species.ALOLA_SANDSHREW, - Species.ALOLA_SANDSLASH, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_ARTICUNO, + [MoveId.SNOWSCAPE]: [ + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.CHANSEY, + SpeciesId.LAPRAS, + SpeciesId.ARTICUNO, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.SNEASEL, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.DELIBIRD, + SpeciesId.BLISSEY, + SpeciesId.SUICUNE, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.ALTARIA, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.LUVDISC, + SpeciesId.REGICE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.MISMAGIUS, + SpeciesId.HAPPINY, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.GLACEON, + SpeciesId.MAMOSWINE, + SpeciesId.FROSLASS, + SpeciesId.PALKIA, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.BASCULIN, + SpeciesId.ALOMOMOLA, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.TORNADUS, + SpeciesId.KYUREM, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.DIANCIE, + SpeciesId.PRIMARINA, + SpeciesId.CRABOMINABLE, + SpeciesId.MAGEARNA, + SpeciesId.INTELEON, + SpeciesId.FROSMOTH, + SpeciesId.EISCUE, + SpeciesId.GLASTRIER, + SpeciesId.BASCULEGION, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.SCREAM_TAIL, + SpeciesId.IRON_BUNDLE, + SpeciesId.FRIGIBAX, + SpeciesId.ARCTIBAX, + SpeciesId.BAXCALIBUR, + SpeciesId.CHIEN_PAO, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_SANDSLASH, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_ARTICUNO, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_SAMUROTT, - Species.HISUI_ZORUA, - Species.HISUI_ZOROARK, - Species.HISUI_AVALUGG, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_ZORUA, + SpeciesId.HISUI_ZOROARK, + SpeciesId.HISUI_AVALUGG, ], - [Moves.POUNCE]: [ - Species.VENONAT, - Species.VENOMOTH, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.SCYTHER, - Species.MEW, - Species.SPINARAK, - Species.ARIADOS, - Species.YANMA, - Species.PINECO, - Species.FORRETRESS, - Species.DUNSPARCE, - Species.SCIZOR, - Species.HERACROSS, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SHROOMISH, - Species.BRELOOM, - Species.SLAKING, - Species.VOLBEAT, - Species.ILLUMISE, - Species.SEVIPER, - Species.SHUPPET, - Species.BANETTE, - Species.KRICKETUNE, - Species.VESPIQUEN, - Species.YANMEGA, - Species.HEATRAN, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.LARVESTA, - Species.VOLCARONA, - Species.SCATTERBUG, - Species.SPEWPA, - Species.VIVILLON, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.GRUBBIN, - Species.CHARJABUG, - Species.VIKAVOLT, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.MAREANIE, - Species.TOXAPEX, - Species.MIMIKYU, - Species.APPLIN, - Species.FLAPPLE, - Species.APPLETUN, - Species.CRAMORANT, - Species.SNOM, - Species.FROSMOTH, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.KLEAVOR, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.SQUAWKABILLY, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.RELLOR, - Species.RABSCA, - Species.FLITTLE, - Species.ESPATHRA, - Species.TINKATINK, - Species.TINKATUFF, - Species.TINKATON, - Species.FLAMIGO, - Species.DUDUNSPARCE, - Species.IRON_MOTH, - Species.DIPPLIN, - Species.HYDRAPPLE, + [MoveId.POUNCE]: [ + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.SCYTHER, + SpeciesId.MEW, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.YANMA, + SpeciesId.PINECO, + SpeciesId.FORRETRESS, + SpeciesId.DUNSPARCE, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SHROOMISH, + SpeciesId.BRELOOM, + SpeciesId.SLAKING, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.SEVIPER, + SpeciesId.SHUPPET, + SpeciesId.BANETTE, + SpeciesId.KRICKETUNE, + SpeciesId.VESPIQUEN, + SpeciesId.YANMEGA, + SpeciesId.HEATRAN, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.SCATTERBUG, + SpeciesId.SPEWPA, + SpeciesId.VIVILLON, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.GRUBBIN, + SpeciesId.CHARJABUG, + SpeciesId.VIKAVOLT, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.MIMIKYU, + SpeciesId.APPLIN, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.CRAMORANT, + SpeciesId.SNOM, + SpeciesId.FROSMOTH, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.KLEAVOR, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.SQUAWKABILLY, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.RELLOR, + SpeciesId.RABSCA, + SpeciesId.FLITTLE, + SpeciesId.ESPATHRA, + SpeciesId.TINKATINK, + SpeciesId.TINKATUFF, + SpeciesId.TINKATON, + SpeciesId.FLAMIGO, + SpeciesId.DUDUNSPARCE, + SpeciesId.IRON_MOTH, + SpeciesId.DIPPLIN, + SpeciesId.HYDRAPPLE, ], - [Moves.TRAILBLAZE]: [ - Species.BULBASAUR, - Species.IVYSAUR, - Species.VENUSAUR, - Species.EKANS, - Species.ARBOK, - Species.PIKACHU, - Species.RAICHU, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.ODDISH, - Species.GLOOM, - Species.VILEPLUME, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.BELLSPROUT, - Species.WEEPINBELL, - Species.VICTREEBEL, - Species.DODRIO, - Species.DROWZEE, - Species.HYPNO, - Species.HITMONCHAN, - Species.CHANSEY, - Species.SCYTHER, - Species.TAUROS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.SNORLAX, - Species.MEWTWO, - Species.MEW, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.SPINARAK, - Species.ARIADOS, - Species.PICHU, - Species.IGGLYBUFF, - Species.MAREEP, - Species.FLAAFFY, - Species.AMPHAROS, - Species.BELLOSSOM, - Species.MARILL, - Species.AZUMARILL, - Species.SUDOWOODO, - Species.HOPPIP, - Species.SKIPLOOM, - Species.JUMPLUFF, - Species.AIPOM, - Species.SUNKERN, - Species.SUNFLORA, - Species.WOOPER, - Species.QUAGSIRE, - Species.ESPEON, - Species.UMBREON, - Species.GIRAFARIG, - Species.SNUBBULL, - Species.GRANBULL, - Species.SCIZOR, - Species.HERACROSS, - Species.SNEASEL, - Species.TEDDIURSA, - Species.URSARING, - Species.SWINUB, - Species.PILOSWINE, - Species.DELIBIRD, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.PHANPY, - Species.DONPHAN, - Species.STANTLER, - Species.ELEKID, - Species.BLISSEY, - Species.RAIKOU, - Species.ENTEI, - Species.SUICUNE, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.POOCHYENA, - Species.MIGHTYENA, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.SEEDOT, - Species.NUZLEAF, - Species.SHIFTRY, - Species.VIGOROTH, - Species.SLAKING, - Species.MEDITITE, - Species.MEDICHAM, - Species.PLUSLE, - Species.MINUN, - Species.VOLBEAT, - Species.ILLUMISE, - Species.NUMEL, - Species.CAMERUPT, - Species.SPOINK, - Species.GRUMPIG, - Species.CACNEA, - Species.CACTURNE, - Species.SWABLU, - Species.ALTARIA, - Species.SEVIPER, - Species.BANETTE, - Species.TROPIUS, - Species.SNORUNT, - Species.GLALIE, - Species.METANG, - Species.METAGROSS, - Species.TURTWIG, - Species.GROTLE, - Species.TORTERRA, - Species.KRICKETUNE, - Species.SHINX, - Species.LUXIO, - Species.LUXRAY, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.SHIELDON, - Species.BASTIODON, - Species.PACHIRISU, - Species.AMBIPOM, - Species.STUNKY, - Species.SKUNTANK, - Species.BONSLY, - Species.MUNCHLAX, - Species.RIOLU, - Species.LUCARIO, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.ELECTIVIRE, - Species.LEAFEON, - Species.GLACEON, - Species.MAMOSWINE, - Species.FROSLASS, - Species.SHAYMIN, - Species.ARCEUS, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.SEWADDLE, - Species.SWADLOON, - Species.LEAVANNY, - Species.PETILIL, - Species.LILLIGANT, - Species.SCRAGGY, - Species.SCRAFTY, - Species.DUCKLETT, - Species.MINCCINO, - Species.CINCCINO, - Species.SWANNA, - Species.DEERLING, - Species.SAWSBUCK, - Species.CHANDELURE, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.CUBCHOO, - Species.BEARTIC, - Species.MIENFOO, - Species.MIENSHAO, - Species.LARVESTA, - Species.VOLCARONA, - Species.CHESPIN, - Species.QUILLADIN, - Species.CHESNAUGHT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.LITLEO, - Species.PYROAR, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKIDDO, - Species.GOGOAT, - Species.MEOWSTIC, - Species.MALAMAR, - Species.SYLVEON, - Species.HAWLUCHA, - Species.DEDENNE, - Species.PHANTUMP, - Species.TREVENANT, - Species.ROWLET, - Species.DARTRIX, - Species.DECIDUEYE, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.ORICORIO, - Species.CUTIEFLY, - Species.RIBOMBEE, - Species.ROCKRUFF, - Species.LYCANROC, - Species.DEWPIDER, - Species.ARAQUANID, - Species.FOMANTIS, - Species.LURANTIS, - Species.SALANDIT, - Species.SALAZZLE, - Species.BOUNSWEET, - Species.STEENEE, - Species.TSAREENA, - Species.COMFEY, - Species.ORANGURU, - Species.PASSIMIAN, - Species.KOMALA, - Species.MIMIKYU, - Species.GROOKEY, - Species.THWACKEY, - Species.RILLABOOM, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.SKWOVET, - Species.GREEDENT, - Species.FLAPPLE, - Species.APPLETUN, - Species.TOXTRICITY, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.PERRSERKER, - Species.FALINKS, - Species.ZACIAN, - Species.ZAMAZENTA, - Species.URSHIFU, - Species.ZARUDE, - Species.GLASTRIER, - Species.WYRDEER, - Species.KLEAVOR, - Species.URSALUNA, - Species.SNEASLER, - Species.SPRIGATITO, - Species.FLORAGATO, - Species.MEOWSCARADA, - Species.LECHONK, - Species.OINKOLOGNE, - Species.TAROUNTULA, - Species.SPIDOPS, - Species.NYMBLE, - Species.LOKIX, - Species.MAUSHOLD, - Species.FIDOUGH, - Species.DACHSBUN, - Species.SMOLIV, - Species.DOLLIV, - Species.ARBOLIVA, - Species.MASCHIFF, - Species.MABOSSTIFF, - Species.SHROODLE, - Species.GRAFAIAI, - Species.BRAMBLIN, - Species.BRAMBLEGHAST, - Species.TOEDSCOOL, - Species.TOEDSCRUEL, - Species.KLAWF, - Species.CAPSAKID, - Species.SCOVILLAIN, - Species.CYCLIZAR, - Species.CLODSIRE, - Species.FARIGIRAF, - Species.BRUTE_BONNET, - Species.SLITHER_WING, - Species.WO_CHIEN, - Species.IRON_LEAVES, - Species.MUNKIDORI, - Species.OGERPON, - Species.ALOLA_RAICHU, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ETERNAL_FLOETTE, - Species.GALAR_MEOWTH, - Species.GALAR_ZAPDOS, + [MoveId.TRAILBLAZE]: [ + SpeciesId.BULBASAUR, + SpeciesId.IVYSAUR, + SpeciesId.VENUSAUR, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.ODDISH, + SpeciesId.GLOOM, + SpeciesId.VILEPLUME, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.BELLSPROUT, + SpeciesId.WEEPINBELL, + SpeciesId.VICTREEBEL, + SpeciesId.DODRIO, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.HITMONCHAN, + SpeciesId.CHANSEY, + SpeciesId.SCYTHER, + SpeciesId.TAUROS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.SNORLAX, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.SPINARAK, + SpeciesId.ARIADOS, + SpeciesId.PICHU, + SpeciesId.IGGLYBUFF, + SpeciesId.MAREEP, + SpeciesId.FLAAFFY, + SpeciesId.AMPHAROS, + SpeciesId.BELLOSSOM, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.SUDOWOODO, + SpeciesId.HOPPIP, + SpeciesId.SKIPLOOM, + SpeciesId.JUMPLUFF, + SpeciesId.AIPOM, + SpeciesId.SUNKERN, + SpeciesId.SUNFLORA, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.GIRAFARIG, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SCIZOR, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.SWINUB, + SpeciesId.PILOSWINE, + SpeciesId.DELIBIRD, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.PHANPY, + SpeciesId.DONPHAN, + SpeciesId.STANTLER, + SpeciesId.ELEKID, + SpeciesId.BLISSEY, + SpeciesId.RAIKOU, + SpeciesId.ENTEI, + SpeciesId.SUICUNE, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.POOCHYENA, + SpeciesId.MIGHTYENA, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.SEEDOT, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.CACNEA, + SpeciesId.CACTURNE, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.SEVIPER, + SpeciesId.BANETTE, + SpeciesId.TROPIUS, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.TURTWIG, + SpeciesId.GROTLE, + SpeciesId.TORTERRA, + SpeciesId.KRICKETUNE, + SpeciesId.SHINX, + SpeciesId.LUXIO, + SpeciesId.LUXRAY, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.PACHIRISU, + SpeciesId.AMBIPOM, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.BONSLY, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.ELECTIVIRE, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.MAMOSWINE, + SpeciesId.FROSLASS, + SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.SEWADDLE, + SpeciesId.SWADLOON, + SpeciesId.LEAVANNY, + SpeciesId.PETILIL, + SpeciesId.LILLIGANT, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.DUCKLETT, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.SWANNA, + SpeciesId.DEERLING, + SpeciesId.SAWSBUCK, + SpeciesId.CHANDELURE, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.LARVESTA, + SpeciesId.VOLCARONA, + SpeciesId.CHESPIN, + SpeciesId.QUILLADIN, + SpeciesId.CHESNAUGHT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.LITLEO, + SpeciesId.PYROAR, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKIDDO, + SpeciesId.GOGOAT, + SpeciesId.MEOWSTIC, + SpeciesId.MALAMAR, + SpeciesId.SYLVEON, + SpeciesId.HAWLUCHA, + SpeciesId.DEDENNE, + SpeciesId.PHANTUMP, + SpeciesId.TREVENANT, + SpeciesId.ROWLET, + SpeciesId.DARTRIX, + SpeciesId.DECIDUEYE, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.RIBOMBEE, + SpeciesId.ROCKRUFF, + SpeciesId.LYCANROC, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.FOMANTIS, + SpeciesId.LURANTIS, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.BOUNSWEET, + SpeciesId.STEENEE, + SpeciesId.TSAREENA, + SpeciesId.COMFEY, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.KOMALA, + SpeciesId.MIMIKYU, + SpeciesId.GROOKEY, + SpeciesId.THWACKEY, + SpeciesId.RILLABOOM, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.SKWOVET, + SpeciesId.GREEDENT, + SpeciesId.FLAPPLE, + SpeciesId.APPLETUN, + SpeciesId.TOXTRICITY, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.PERRSERKER, + SpeciesId.FALINKS, + SpeciesId.ZACIAN, + SpeciesId.ZAMAZENTA, + SpeciesId.URSHIFU, + SpeciesId.ZARUDE, + SpeciesId.GLASTRIER, + SpeciesId.WYRDEER, + SpeciesId.KLEAVOR, + SpeciesId.URSALUNA, + SpeciesId.SNEASLER, + SpeciesId.SPRIGATITO, + SpeciesId.FLORAGATO, + SpeciesId.MEOWSCARADA, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.TAROUNTULA, + SpeciesId.SPIDOPS, + SpeciesId.NYMBLE, + SpeciesId.LOKIX, + SpeciesId.MAUSHOLD, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.SMOLIV, + SpeciesId.DOLLIV, + SpeciesId.ARBOLIVA, + SpeciesId.MASCHIFF, + SpeciesId.MABOSSTIFF, + SpeciesId.SHROODLE, + SpeciesId.GRAFAIAI, + SpeciesId.BRAMBLIN, + SpeciesId.BRAMBLEGHAST, + SpeciesId.TOEDSCOOL, + SpeciesId.TOEDSCRUEL, + SpeciesId.KLAWF, + SpeciesId.CAPSAKID, + SpeciesId.SCOVILLAIN, + SpeciesId.CYCLIZAR, + SpeciesId.CLODSIRE, + SpeciesId.FARIGIRAF, + SpeciesId.BRUTE_BONNET, + SpeciesId.SLITHER_WING, + SpeciesId.WO_CHIEN, + SpeciesId.IRON_LEAVES, + SpeciesId.MUNKIDORI, + SpeciesId.OGERPON, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_ZAPDOS, [ - Species.CALYREX, + SpeciesId.CALYREX, "ice", ], - Species.HISUI_SNEASEL, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, - Species.PALDEA_TAUROS, - Species.PALDEA_WOOPER, - Species.BLOODMOON_URSALUNA, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, + SpeciesId.PALDEA_TAUROS, + SpeciesId.PALDEA_WOOPER, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.CHILLING_WATER]: [ - Species.SQUIRTLE, - Species.WARTORTLE, - Species.BLASTOISE, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.MEOWTH, - Species.PERSIAN, - Species.PSYDUCK, - Species.GOLDUCK, - Species.POLIWAG, - Species.POLIWHIRL, - Species.POLIWRATH, - Species.TENTACOOL, - Species.TENTACRUEL, - Species.SLOWPOKE, - Species.SLOWBRO, - Species.SEEL, - Species.DEWGONG, - Species.SHELLDER, - Species.CLOYSTER, - Species.CHANSEY, - Species.HORSEA, - Species.SEADRA, - Species.GYARADOS, - Species.LAPRAS, - Species.VAPOREON, - Species.SNORLAX, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEWTWO, - Species.MEW, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.SENTRET, - Species.FURRET, - Species.CHINCHOU, - Species.LANTURN, - Species.CLEFFA, - Species.MARILL, - Species.AZUMARILL, - Species.POLITOED, - Species.AIPOM, - Species.WOOPER, - Species.QUAGSIRE, - Species.SLOWKING, - Species.DUNSPARCE, - Species.QWILFISH, - Species.DELIBIRD, - Species.KINGDRA, - Species.BLISSEY, - Species.SUICUNE, - Species.LUGIA, - Species.MUDKIP, - Species.MARSHTOMP, - Species.SWAMPERT, - Species.LOTAD, - Species.LOMBRE, - Species.LUDICOLO, - Species.NUZLEAF, - Species.SHIFTRY, - Species.WINGULL, - Species.PELIPPER, - Species.SURSKIT, - Species.MASQUERAIN, - Species.SLAKOTH, - Species.VIGOROTH, - Species.SLAKING, - Species.MAKUHITA, - Species.HARIYAMA, - Species.VOLBEAT, - Species.SPOINK, - Species.GRUMPIG, - Species.BARBOACH, - Species.WHISCASH, - Species.CORPHISH, - Species.CRAWDAUNT, - Species.FEEBAS, - Species.MILOTIC, - Species.SNORUNT, - Species.GLALIE, - Species.LATIAS, - Species.LATIOS, - Species.KYOGRE, - Species.PIPLUP, - Species.PRINPLUP, - Species.EMPOLEON, - Species.BUIZEL, - Species.FLOATZEL, - Species.SHELLOS, - Species.GASTRODON, - Species.AMBIPOM, - Species.HONCHKROW, - Species.MUNCHLAX, - Species.CROAGUNK, - Species.TOXICROAK, - Species.FINNEON, - Species.LUMINEON, - Species.SNOVER, - Species.ABOMASNOW, - Species.WEAVILE, - Species.GLACEON, - Species.FROSLASS, - Species.PALKIA, - Species.PHIONE, - Species.MANAPHY, - Species.ARCEUS, - Species.OSHAWOTT, - Species.DEWOTT, - Species.SAMUROTT, - Species.BASCULIN, - Species.MINCCINO, - Species.CINCCINO, - Species.DUCKLETT, - Species.SWANNA, - Species.ALOMOMOLA, - Species.CUBCHOO, - Species.BEARTIC, - Species.CRYOGONAL, - Species.TORNADUS, - Species.KELDEO, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.SKRELP, - Species.DRAGALGE, - Species.CLAUNCHER, - Species.CLAWITZER, - Species.GOOMY, - Species.SLIGGOO, - Species.GOODRA, - Species.BERGMITE, - Species.AVALUGG, - Species.POPPLIO, - Species.BRIONNE, - Species.PRIMARINA, - Species.YUNGOOS, - Species.GUMSHOOS, - Species.CRABRAWLER, - Species.CRABOMINABLE, - Species.MAREANIE, - Species.TOXAPEX, - Species.DEWPIDER, - Species.ARAQUANID, - Species.ORANGURU, - Species.PASSIMIAN, - Species.SANDYGAST, - Species.PALOSSAND, - Species.BRUXISH, - Species.SOBBLE, - Species.DRIZZILE, - Species.INTELEON, - Species.CHEWTLE, - Species.DREDNAW, - Species.CRAMORANT, - Species.ARROKUDA, - Species.BARRASKEWDA, - Species.IMPIDIMP, - Species.MORGREM, - Species.GRIMMSNARL, - Species.PERRSERKER, - Species.PINCURCHIN, - Species.EISCUE, - Species.BASCULEGION, - Species.OVERQWIL, - Species.MEOWSCARADA, - Species.QUAXLY, - Species.QUAXWELL, - Species.QUAQUAVAL, - Species.LECHONK, - Species.OINKOLOGNE, - Species.MAUSHOLD, - Species.TADBULB, - Species.BELLIBOLT, - Species.WIGLETT, - Species.WUGTRIO, - Species.FINIZEN, - Species.PALAFIN, - Species.FLAMIGO, - Species.CETODDLE, - Species.CETITAN, - Species.VELUZA, - Species.DONDOZO, - Species.TATSUGIRI, - Species.CLODSIRE, - Species.DUDUNSPARCE, - Species.IRON_BUNDLE, - Species.WALKING_WAKE, - Species.ALOLA_VULPIX, - Species.ALOLA_NINETALES, - Species.ALOLA_MEOWTH, - Species.ALOLA_PERSIAN, - Species.ETERNAL_FLOETTE, - Species.GALAR_SLOWPOKE, - Species.GALAR_SLOWBRO, - Species.GALAR_SLOWKING, + [MoveId.CHILLING_WATER]: [ + SpeciesId.SQUIRTLE, + SpeciesId.WARTORTLE, + SpeciesId.BLASTOISE, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.MEOWTH, + SpeciesId.PERSIAN, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.POLIWAG, + SpeciesId.POLIWHIRL, + SpeciesId.POLIWRATH, + SpeciesId.TENTACOOL, + SpeciesId.TENTACRUEL, + SpeciesId.SLOWPOKE, + SpeciesId.SLOWBRO, + SpeciesId.SEEL, + SpeciesId.DEWGONG, + SpeciesId.SHELLDER, + SpeciesId.CLOYSTER, + SpeciesId.CHANSEY, + SpeciesId.HORSEA, + SpeciesId.SEADRA, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.VAPOREON, + SpeciesId.SNORLAX, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.SENTRET, + SpeciesId.FURRET, + SpeciesId.CHINCHOU, + SpeciesId.LANTURN, + SpeciesId.CLEFFA, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.POLITOED, + SpeciesId.AIPOM, + SpeciesId.WOOPER, + SpeciesId.QUAGSIRE, + SpeciesId.SLOWKING, + SpeciesId.DUNSPARCE, + SpeciesId.QWILFISH, + SpeciesId.DELIBIRD, + SpeciesId.KINGDRA, + SpeciesId.BLISSEY, + SpeciesId.SUICUNE, + SpeciesId.LUGIA, + SpeciesId.MUDKIP, + SpeciesId.MARSHTOMP, + SpeciesId.SWAMPERT, + SpeciesId.LOTAD, + SpeciesId.LOMBRE, + SpeciesId.LUDICOLO, + SpeciesId.NUZLEAF, + SpeciesId.SHIFTRY, + SpeciesId.WINGULL, + SpeciesId.PELIPPER, + SpeciesId.SURSKIT, + SpeciesId.MASQUERAIN, + SpeciesId.SLAKOTH, + SpeciesId.VIGOROTH, + SpeciesId.SLAKING, + SpeciesId.MAKUHITA, + SpeciesId.HARIYAMA, + SpeciesId.VOLBEAT, + SpeciesId.SPOINK, + SpeciesId.GRUMPIG, + SpeciesId.BARBOACH, + SpeciesId.WHISCASH, + SpeciesId.CORPHISH, + SpeciesId.CRAWDAUNT, + SpeciesId.FEEBAS, + SpeciesId.MILOTIC, + SpeciesId.SNORUNT, + SpeciesId.GLALIE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.KYOGRE, + SpeciesId.PIPLUP, + SpeciesId.PRINPLUP, + SpeciesId.EMPOLEON, + SpeciesId.BUIZEL, + SpeciesId.FLOATZEL, + SpeciesId.SHELLOS, + SpeciesId.GASTRODON, + SpeciesId.AMBIPOM, + SpeciesId.HONCHKROW, + SpeciesId.MUNCHLAX, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.SNOVER, + SpeciesId.ABOMASNOW, + SpeciesId.WEAVILE, + SpeciesId.GLACEON, + SpeciesId.FROSLASS, + SpeciesId.PALKIA, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.ARCEUS, + SpeciesId.OSHAWOTT, + SpeciesId.DEWOTT, + SpeciesId.SAMUROTT, + SpeciesId.BASCULIN, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.DUCKLETT, + SpeciesId.SWANNA, + SpeciesId.ALOMOMOLA, + SpeciesId.CUBCHOO, + SpeciesId.BEARTIC, + SpeciesId.CRYOGONAL, + SpeciesId.TORNADUS, + SpeciesId.KELDEO, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.SKRELP, + SpeciesId.DRAGALGE, + SpeciesId.CLAUNCHER, + SpeciesId.CLAWITZER, + SpeciesId.GOOMY, + SpeciesId.SLIGGOO, + SpeciesId.GOODRA, + SpeciesId.BERGMITE, + SpeciesId.AVALUGG, + SpeciesId.POPPLIO, + SpeciesId.BRIONNE, + SpeciesId.PRIMARINA, + SpeciesId.YUNGOOS, + SpeciesId.GUMSHOOS, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, + SpeciesId.MAREANIE, + SpeciesId.TOXAPEX, + SpeciesId.DEWPIDER, + SpeciesId.ARAQUANID, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.SANDYGAST, + SpeciesId.PALOSSAND, + SpeciesId.BRUXISH, + SpeciesId.SOBBLE, + SpeciesId.DRIZZILE, + SpeciesId.INTELEON, + SpeciesId.CHEWTLE, + SpeciesId.DREDNAW, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.BARRASKEWDA, + SpeciesId.IMPIDIMP, + SpeciesId.MORGREM, + SpeciesId.GRIMMSNARL, + SpeciesId.PERRSERKER, + SpeciesId.PINCURCHIN, + SpeciesId.EISCUE, + SpeciesId.BASCULEGION, + SpeciesId.OVERQWIL, + SpeciesId.MEOWSCARADA, + SpeciesId.QUAXLY, + SpeciesId.QUAXWELL, + SpeciesId.QUAQUAVAL, + SpeciesId.LECHONK, + SpeciesId.OINKOLOGNE, + SpeciesId.MAUSHOLD, + SpeciesId.TADBULB, + SpeciesId.BELLIBOLT, + SpeciesId.WIGLETT, + SpeciesId.WUGTRIO, + SpeciesId.FINIZEN, + SpeciesId.PALAFIN, + SpeciesId.FLAMIGO, + SpeciesId.CETODDLE, + SpeciesId.CETITAN, + SpeciesId.VELUZA, + SpeciesId.DONDOZO, + SpeciesId.TATSUGIRI, + SpeciesId.CLODSIRE, + SpeciesId.DUDUNSPARCE, + SpeciesId.IRON_BUNDLE, + SpeciesId.WALKING_WAKE, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_NINETALES, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_PERSIAN, + SpeciesId.ETERNAL_FLOETTE, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_SLOWBRO, + SpeciesId.GALAR_SLOWKING, [ - Species.URSHIFU, + SpeciesId.URSHIFU, "rapid-strike", ], - Species.HISUI_QWILFISH, - Species.HISUI_SAMUROTT, - Species.HISUI_SLIGGOO, - Species.HISUI_GOODRA, - Species.HISUI_AVALUGG, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_SLIGGOO, + SpeciesId.HISUI_GOODRA, + SpeciesId.HISUI_AVALUGG, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "aqua", ], - Species.PALDEA_WOOPER, + SpeciesId.PALDEA_WOOPER, ], - [Moves.HARD_PRESS]: [ - Species.GRAVELER, - Species.GOLEM, - Species.SNORLAX, - Species.MEW, - Species.FORRETRESS, - Species.SCIZOR, - Species.TYRANITAR, - Species.SWAMPERT, - Species.SLAKING, - Species.CRAWDAUNT, - Species.METANG, - Species.METAGROSS, - Species.REGIROCK, - Species.REGISTEEL, - Species.TORTERRA, - Species.SHIELDON, - Species.BASTIODON, - Species.BRONZONG, - Species.HIPPOWDON, - Species.ABOMASNOW, - Species.MAGNEZONE, - Species.MAMOSWINE, - Species.PROBOPASS, - Species.DUSKNOIR, - Species.HEATRAN, - Species.REGIGIGAS, - Species.EMBOAR, - Species.CONKELDURR, - Species.BEARTIC, - Species.GOLURK, - Species.CRABOMINABLE, - Species.STONJOURNER, - Species.COPPERAJAH, - Species.URSALUNA, - Species.GARGANACL, - Species.TINKATON, - Species.PALAFIN, - Species.REVAVROOM, - Species.CETITAN, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.OKIDOGI, - Species.ARCHALUDON, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.HISUI_AVALUGG, - Species.BLOODMOON_URSALUNA, + [MoveId.HARD_PRESS]: [ + SpeciesId.GRAVELER, + SpeciesId.GOLEM, + SpeciesId.SNORLAX, + SpeciesId.MEW, + SpeciesId.FORRETRESS, + SpeciesId.SCIZOR, + SpeciesId.TYRANITAR, + SpeciesId.SWAMPERT, + SpeciesId.SLAKING, + SpeciesId.CRAWDAUNT, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.REGIROCK, + SpeciesId.REGISTEEL, + SpeciesId.TORTERRA, + SpeciesId.SHIELDON, + SpeciesId.BASTIODON, + SpeciesId.BRONZONG, + SpeciesId.HIPPOWDON, + SpeciesId.ABOMASNOW, + SpeciesId.MAGNEZONE, + SpeciesId.MAMOSWINE, + SpeciesId.PROBOPASS, + SpeciesId.DUSKNOIR, + SpeciesId.HEATRAN, + SpeciesId.REGIGIGAS, + SpeciesId.EMBOAR, + SpeciesId.CONKELDURR, + SpeciesId.BEARTIC, + SpeciesId.GOLURK, + SpeciesId.CRABOMINABLE, + SpeciesId.STONJOURNER, + SpeciesId.COPPERAJAH, + SpeciesId.URSALUNA, + SpeciesId.GARGANACL, + SpeciesId.TINKATON, + SpeciesId.PALAFIN, + SpeciesId.REVAVROOM, + SpeciesId.CETITAN, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.OKIDOGI, + SpeciesId.ARCHALUDON, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.HISUI_AVALUGG, + SpeciesId.BLOODMOON_URSALUNA, ], - [Moves.DRAGON_CHEER]: [ - Species.CHARIZARD, - Species.GYARADOS, - Species.LAPRAS, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.MEW, - Species.AMPHAROS, - Species.SCEPTILE, - Species.FLYGON, - Species.SWABLU, - Species.ALTARIA, - Species.MILOTIC, - Species.BAGON, - Species.SHELGON, - Species.SALAMENCE, - Species.LATIAS, - Species.LATIOS, - Species.RAYQUAZA, - Species.CRANIDOS, - Species.RAMPARDOS, - Species.GIBLE, - Species.GABITE, - Species.GARCHOMP, - Species.AXEW, - Species.FRAXURE, - Species.HAXORUS, - Species.DEINO, - Species.ZWEILOUS, - Species.HYDREIGON, - Species.RESHIRAM, - Species.ZEKROM, - Species.KYUREM, - Species.GOODRA, - Species.NOIVERN, - Species.SALAZZLE, - Species.JANGMO_O, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.DURALUDON, - Species.DRAKLOAK, - Species.DRAGAPULT, - Species.REGIDRAGO, - Species.CYCLIZAR, - Species.TATSUGIRI, - Species.IRON_JUGULIS, - Species.BAXCALIBUR, - Species.ROARING_MOON, - Species.KORAIDON, - Species.MIRAIDON, - Species.WALKING_WAKE, - Species.DIPPLIN, - Species.ARCHALUDON, - Species.HYDRAPPLE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.ALOLA_EXEGGUTOR, - Species.HISUI_GOODRA, + [MoveId.DRAGON_CHEER]: [ + SpeciesId.CHARIZARD, + SpeciesId.GYARADOS, + SpeciesId.LAPRAS, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.MEW, + SpeciesId.AMPHAROS, + SpeciesId.SCEPTILE, + SpeciesId.FLYGON, + SpeciesId.SWABLU, + SpeciesId.ALTARIA, + SpeciesId.MILOTIC, + SpeciesId.BAGON, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.LATIAS, + SpeciesId.LATIOS, + SpeciesId.RAYQUAZA, + SpeciesId.CRANIDOS, + SpeciesId.RAMPARDOS, + SpeciesId.GIBLE, + SpeciesId.GABITE, + SpeciesId.GARCHOMP, + SpeciesId.AXEW, + SpeciesId.FRAXURE, + SpeciesId.HAXORUS, + SpeciesId.DEINO, + SpeciesId.ZWEILOUS, + SpeciesId.HYDREIGON, + SpeciesId.RESHIRAM, + SpeciesId.ZEKROM, + SpeciesId.KYUREM, + SpeciesId.GOODRA, + SpeciesId.NOIVERN, + SpeciesId.SALAZZLE, + SpeciesId.JANGMO_O, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.DURALUDON, + SpeciesId.DRAKLOAK, + SpeciesId.DRAGAPULT, + SpeciesId.REGIDRAGO, + SpeciesId.CYCLIZAR, + SpeciesId.TATSUGIRI, + SpeciesId.IRON_JUGULIS, + SpeciesId.BAXCALIBUR, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.DIPPLIN, + SpeciesId.ARCHALUDON, + SpeciesId.HYDRAPPLE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.HISUI_GOODRA, ], - [Moves.ALLURING_VOICE]: [ - Species.PIKACHU, - Species.RAICHU, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.DEWGONG, - Species.LAPRAS, - Species.EEVEE, - Species.VAPOREON, - Species.JOLTEON, - Species.FLAREON, - Species.MEW, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.MARILL, - Species.AZUMARILL, - Species.ESPEON, - Species.UMBREON, - Species.BLISSEY, - Species.RALTS, - Species.KIRLIA, - Species.GARDEVOIR, - Species.AZURILL, - Species.PLUSLE, - Species.MINUN, - Species.FLYGON, - Species.ALTARIA, - Species.MILOTIC, - Species.LATIAS, - Species.PACHIRISU, - Species.FINNEON, - Species.LUMINEON, - Species.LEAFEON, - Species.GLACEON, - Species.GALLADE, - Species.PHIONE, - Species.MANAPHY, - Species.LILLIGANT, - Species.MINCCINO, - Species.CINCCINO, - Species.SWANNA, - Species.ALOMOMOLA, - Species.MELOETTA, - Species.FLABEBE, - Species.FLOETTE, - Species.FLORGES, - Species.MEOWSTIC, - Species.SYLVEON, - Species.PRIMARINA, - Species.ORICORIO, - Species.RIBOMBEE, - Species.COMFEY, - Species.ALCREMIE, - Species.ENAMORUS, - Species.SKELEDIRGE, - Species.FIDOUGH, - Species.DACHSBUN, - Species.ARBOLIVA, - Species.FEZANDIPITI, - Species.ALOLA_RAICHU, - Species.ETERNAL_FLOETTE, + [MoveId.ALLURING_VOICE]: [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.DEWGONG, + SpeciesId.LAPRAS, + SpeciesId.EEVEE, + SpeciesId.VAPOREON, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.MEW, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.MARILL, + SpeciesId.AZUMARILL, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.BLISSEY, + SpeciesId.RALTS, + SpeciesId.KIRLIA, + SpeciesId.GARDEVOIR, + SpeciesId.AZURILL, + SpeciesId.PLUSLE, + SpeciesId.MINUN, + SpeciesId.FLYGON, + SpeciesId.ALTARIA, + SpeciesId.MILOTIC, + SpeciesId.LATIAS, + SpeciesId.PACHIRISU, + SpeciesId.FINNEON, + SpeciesId.LUMINEON, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.GALLADE, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.LILLIGANT, + SpeciesId.MINCCINO, + SpeciesId.CINCCINO, + SpeciesId.SWANNA, + SpeciesId.ALOMOMOLA, + SpeciesId.MELOETTA, + SpeciesId.FLABEBE, + SpeciesId.FLOETTE, + SpeciesId.FLORGES, + SpeciesId.MEOWSTIC, + SpeciesId.SYLVEON, + SpeciesId.PRIMARINA, + SpeciesId.ORICORIO, + SpeciesId.RIBOMBEE, + SpeciesId.COMFEY, + SpeciesId.ALCREMIE, + SpeciesId.ENAMORUS, + SpeciesId.SKELEDIRGE, + SpeciesId.FIDOUGH, + SpeciesId.DACHSBUN, + SpeciesId.ARBOLIVA, + SpeciesId.FEZANDIPITI, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ETERNAL_FLOETTE, [ - Species.INDEEDEE, + SpeciesId.INDEEDEE, "female", ], ], - [Moves.TEMPER_FLARE]: [ - Species.CHARMANDER, - Species.CHARMELEON, - Species.CHARIZARD, - Species.GROWLITHE, - Species.ARCANINE, - Species.MAGMAR, - Species.GYARADOS, - Species.FLAREON, - Species.MOLTRES, - Species.MEW, - Species.CYNDAQUIL, - Species.QUILAVA, - Species.TYPHLOSION, - Species.SNUBBULL, - Species.GRANBULL, - Species.SLUGMA, - Species.MAGCARGO, - Species.HOUNDOUR, - Species.HOUNDOOM, - Species.MAGBY, - Species.TORCHIC, - Species.COMBUSKEN, - Species.BLAZIKEN, - Species.NUMEL, - Species.CAMERUPT, - Species.TORKOAL, - Species.SHELGON, - Species.SALAMENCE, - Species.CHIMCHAR, - Species.MONFERNO, - Species.INFERNAPE, - Species.DRIFLOON, - Species.DRIFBLIM, - Species.STUNKY, - Species.SKUNTANK, - Species.RHYPERIOR, - Species.MAGMORTAR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.LITWICK, - Species.LAMPENT, - Species.CHANDELURE, - Species.FLETCHINDER, - Species.TALONFLAME, - Species.PYROAR, - Species.LITTEN, - Species.TORRACAT, - Species.INCINEROAR, - Species.TOUCANNON, - Species.SALANDIT, - Species.SALAZZLE, - Species.SCORBUNNY, - Species.RABOOT, - Species.CINDERACE, - Species.ROLYCOLY, - Species.CARKOL, - Species.COALOSSAL, - Species.FUECOCO, - Species.CROCALOR, - Species.SKELEDIRGE, - Species.KLAWF, - Species.SCOVILLAIN, - Species.REVAVROOM, - Species.CYCLIZAR, - Species.GREAT_TUSK, - Species.SLITHER_WING, - Species.CHI_YU, - Species.KORAIDON, - Species.GOUGING_FIRE, - Species.HISUI_GROWLITHE, - Species.HISUI_ARCANINE, - Species.HISUI_TYPHLOSION, + [MoveId.TEMPER_FLARE]: [ + SpeciesId.CHARMANDER, + SpeciesId.CHARMELEON, + SpeciesId.CHARIZARD, + SpeciesId.GROWLITHE, + SpeciesId.ARCANINE, + SpeciesId.MAGMAR, + SpeciesId.GYARADOS, + SpeciesId.FLAREON, + SpeciesId.MOLTRES, + SpeciesId.MEW, + SpeciesId.CYNDAQUIL, + SpeciesId.QUILAVA, + SpeciesId.TYPHLOSION, + SpeciesId.SNUBBULL, + SpeciesId.GRANBULL, + SpeciesId.SLUGMA, + SpeciesId.MAGCARGO, + SpeciesId.HOUNDOUR, + SpeciesId.HOUNDOOM, + SpeciesId.MAGBY, + SpeciesId.TORCHIC, + SpeciesId.COMBUSKEN, + SpeciesId.BLAZIKEN, + SpeciesId.NUMEL, + SpeciesId.CAMERUPT, + SpeciesId.TORKOAL, + SpeciesId.SHELGON, + SpeciesId.SALAMENCE, + SpeciesId.CHIMCHAR, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.DRIFLOON, + SpeciesId.DRIFBLIM, + SpeciesId.STUNKY, + SpeciesId.SKUNTANK, + SpeciesId.RHYPERIOR, + SpeciesId.MAGMORTAR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.LITWICK, + SpeciesId.LAMPENT, + SpeciesId.CHANDELURE, + SpeciesId.FLETCHINDER, + SpeciesId.TALONFLAME, + SpeciesId.PYROAR, + SpeciesId.LITTEN, + SpeciesId.TORRACAT, + SpeciesId.INCINEROAR, + SpeciesId.TOUCANNON, + SpeciesId.SALANDIT, + SpeciesId.SALAZZLE, + SpeciesId.SCORBUNNY, + SpeciesId.RABOOT, + SpeciesId.CINDERACE, + SpeciesId.ROLYCOLY, + SpeciesId.CARKOL, + SpeciesId.COALOSSAL, + SpeciesId.FUECOCO, + SpeciesId.CROCALOR, + SpeciesId.SKELEDIRGE, + SpeciesId.KLAWF, + SpeciesId.SCOVILLAIN, + SpeciesId.REVAVROOM, + SpeciesId.CYCLIZAR, + SpeciesId.GREAT_TUSK, + SpeciesId.SLITHER_WING, + SpeciesId.CHI_YU, + SpeciesId.KORAIDON, + SpeciesId.GOUGING_FIRE, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_ARCANINE, + SpeciesId.HISUI_TYPHLOSION, [ - Species.PALDEA_TAUROS, + SpeciesId.PALDEA_TAUROS, "blaze", ], ], - [Moves.SUPERCELL_SLAM]:[ - Species.ELECTRODE, - Species.RHYHORN, - Species.RHYDON, - Species.ELECTABUZZ, - Species.SNORLAX, - Species.ZAPDOS, - Species.MEW, - Species.AMPHAROS, - Species.ELEKID, - Species.RAIKOU, - Species.MANECTRIC, - Species.LUXRAY, - Species.RAMPARDOS, - Species.MAGNEZONE, - Species.RHYPERIOR, - Species.ELECTIVIRE, - Species.PROBOPASS, - Species.ARCEUS, - Species.BLITZLE, - Species.ZEBSTRIKA, - Species.EELEKTROSS, - Species.THUNDURUS, - Species.ZEKROM, - Species.VIKAVOLT, - Species.PINCURCHIN, - Species.COPPERAJAH, - Species.REGIELEKI, - Species.URSALUNA, - Species.PAWMOT, - Species.BELLIBOLT, - Species.KILOWATTREL, - Species.CYCLIZAR, - Species.GREAT_TUSK, - Species.SANDY_SHOCKS, - Species.IRON_TREADS, - Species.IRON_HANDS, - Species.IRON_THORNS, - Species.MIRAIDON, - Species.RAGING_BOLT, - Species.IRON_CROWN, - Species.TERAPAGOS, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRAVELER, - Species.ALOLA_GOLEM, - Species.HISUI_ELECTRODE, + [MoveId.SUPERCELL_SLAM]:[ + SpeciesId.ELECTRODE, + SpeciesId.RHYHORN, + SpeciesId.RHYDON, + SpeciesId.ELECTABUZZ, + SpeciesId.SNORLAX, + SpeciesId.ZAPDOS, + SpeciesId.MEW, + SpeciesId.AMPHAROS, + SpeciesId.ELEKID, + SpeciesId.RAIKOU, + SpeciesId.MANECTRIC, + SpeciesId.LUXRAY, + SpeciesId.RAMPARDOS, + SpeciesId.MAGNEZONE, + SpeciesId.RHYPERIOR, + SpeciesId.ELECTIVIRE, + SpeciesId.PROBOPASS, + SpeciesId.ARCEUS, + SpeciesId.BLITZLE, + SpeciesId.ZEBSTRIKA, + SpeciesId.EELEKTROSS, + SpeciesId.THUNDURUS, + SpeciesId.ZEKROM, + SpeciesId.VIKAVOLT, + SpeciesId.PINCURCHIN, + SpeciesId.COPPERAJAH, + SpeciesId.REGIELEKI, + SpeciesId.URSALUNA, + SpeciesId.PAWMOT, + SpeciesId.BELLIBOLT, + SpeciesId.KILOWATTREL, + SpeciesId.CYCLIZAR, + SpeciesId.GREAT_TUSK, + SpeciesId.SANDY_SHOCKS, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_THORNS, + SpeciesId.MIRAIDON, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRAVELER, + SpeciesId.ALOLA_GOLEM, + SpeciesId.HISUI_ELECTRODE, ], - [Moves.PSYCHIC_NOISE]: [ - Species.JIGGLYPUFF, - Species.WIGGLYTUFF, - Species.VENONAT, - Species.VENOMOTH, - Species.PSYDUCK, - Species.GOLDUCK, - Species.SLOWBRO, - Species.GENGAR, - Species.DROWZEE, - Species.HYPNO, - Species.EXEGGCUTE, - Species.EXEGGUTOR, - Species.LAPRAS, - Species.MEWTWO, - Species.MEW, - Species.NOCTOWL, - Species.YANMA, - Species.ESPEON, - Species.MURKROW, - Species.SLOWKING, - Species.MISDREAVUS, - Species.GIRAFARIG, - Species.LUGIA, - Species.GARDEVOIR, - Species.GRUMPIG, - Species.FLYGON, - Species.CHIMECHO, - Species.METANG, - Species.METAGROSS, - Species.LATIOS, - Species.JIRACHI, - Species.DEOXYS, - Species.VESPIQUEN, - Species.MISMAGIUS, - Species.HONCHKROW, - Species.CHINGLING, - Species.BRONZOR, - Species.BRONZONG, - Species.YANMEGA, - Species.UXIE, - Species.MESPRIT, - Species.GOTHITA, - Species.GOTHORITA, - Species.GOTHITELLE, - Species.REUNICLUS, - Species.DELPHOX, - Species.FLORGES, - Species.ESPURR, - Species.MEOWSTIC, - Species.MALAMAR, - Species.TREVENANT, - Species.NOIVERN, - Species.HOOPA, - Species.PRIMARINA, - Species.RIBOMBEE, - Species.ORANGURU, - Species.BRUXISH, - Species.TOXTRICITY, - Species.HATTERENE, - Species.INDEEDEE, - Species.WYRDEER, - Species.RABSCA, - Species.FARIGIRAF, - Species.SCREAM_TAIL, - Species.MUNKIDORI, - Species.IRON_CROWN, - Species.ALOLA_RAICHU, - Species.ALOLA_EXEGGUTOR, - Species.GALAR_ARTICUNO, - Species.GALAR_SLOWKING, - Species.HISUI_BRAVIARY, + [MoveId.PSYCHIC_NOISE]: [ + SpeciesId.JIGGLYPUFF, + SpeciesId.WIGGLYTUFF, + SpeciesId.VENONAT, + SpeciesId.VENOMOTH, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.SLOWBRO, + SpeciesId.GENGAR, + SpeciesId.DROWZEE, + SpeciesId.HYPNO, + SpeciesId.EXEGGCUTE, + SpeciesId.EXEGGUTOR, + SpeciesId.LAPRAS, + SpeciesId.MEWTWO, + SpeciesId.MEW, + SpeciesId.NOCTOWL, + SpeciesId.YANMA, + SpeciesId.ESPEON, + SpeciesId.MURKROW, + SpeciesId.SLOWKING, + SpeciesId.MISDREAVUS, + SpeciesId.GIRAFARIG, + SpeciesId.LUGIA, + SpeciesId.GARDEVOIR, + SpeciesId.GRUMPIG, + SpeciesId.FLYGON, + SpeciesId.CHIMECHO, + SpeciesId.METANG, + SpeciesId.METAGROSS, + SpeciesId.LATIOS, + SpeciesId.JIRACHI, + SpeciesId.DEOXYS, + SpeciesId.VESPIQUEN, + SpeciesId.MISMAGIUS, + SpeciesId.HONCHKROW, + SpeciesId.CHINGLING, + SpeciesId.BRONZOR, + SpeciesId.BRONZONG, + SpeciesId.YANMEGA, + SpeciesId.UXIE, + SpeciesId.MESPRIT, + SpeciesId.GOTHITA, + SpeciesId.GOTHORITA, + SpeciesId.GOTHITELLE, + SpeciesId.REUNICLUS, + SpeciesId.DELPHOX, + SpeciesId.FLORGES, + SpeciesId.ESPURR, + SpeciesId.MEOWSTIC, + SpeciesId.MALAMAR, + SpeciesId.TREVENANT, + SpeciesId.NOIVERN, + SpeciesId.HOOPA, + SpeciesId.PRIMARINA, + SpeciesId.RIBOMBEE, + SpeciesId.ORANGURU, + SpeciesId.BRUXISH, + SpeciesId.TOXTRICITY, + SpeciesId.HATTERENE, + SpeciesId.INDEEDEE, + SpeciesId.WYRDEER, + SpeciesId.RABSCA, + SpeciesId.FARIGIRAF, + SpeciesId.SCREAM_TAIL, + SpeciesId.MUNKIDORI, + SpeciesId.IRON_CROWN, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_EXEGGUTOR, + SpeciesId.GALAR_ARTICUNO, + SpeciesId.GALAR_SLOWKING, + SpeciesId.HISUI_BRAVIARY, ], - [Moves.UPPER_HAND]: [ - Species.PIKACHU, - Species.RAICHU, - Species.POLIWRATH, - Species.HITMONLEE, - Species.HITMONCHAN, - Species.MEW, - Species.AIPOM, - Species.HERACROSS, - Species.SNEASEL, - Species.TYROGUE, - Species.HITMONTOP, - Species.TREECKO, - Species.GROVYLE, - Species.SCEPTILE, - Species.BLAZIKEN, - Species.SHIFTRY, - Species.HARIYAMA, - Species.MEDITITE, - Species.MEDICHAM, - Species.ZANGOOSE, - Species.MONFERNO, - Species.INFERNAPE, - Species.AMBIPOM, - Species.RIOLU, - Species.LUCARIO, - Species.CROAGUNK, - Species.TOXICROAK, - Species.WEAVILE, - Species.GALLADE, - Species.SAMUROTT, - Species.CONKELDURR, - Species.SCRAGGY, - Species.SCRAFTY, - Species.MIENFOO, - Species.MIENSHAO, - Species.COBALION, - Species.TERRAKION, - Species.VIRIZION, - Species.KELDEO, - Species.GRENINJA, - Species.TALONFLAME, - Species.HAWLUCHA, - Species.CRABRAWLER, - Species.CRABOMINABLE, + [MoveId.UPPER_HAND]: [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.POLIWRATH, + SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, + SpeciesId.MEW, + SpeciesId.AIPOM, + SpeciesId.HERACROSS, + SpeciesId.SNEASEL, + SpeciesId.TYROGUE, + SpeciesId.HITMONTOP, + SpeciesId.TREECKO, + SpeciesId.GROVYLE, + SpeciesId.SCEPTILE, + SpeciesId.BLAZIKEN, + SpeciesId.SHIFTRY, + SpeciesId.HARIYAMA, + SpeciesId.MEDITITE, + SpeciesId.MEDICHAM, + SpeciesId.ZANGOOSE, + SpeciesId.MONFERNO, + SpeciesId.INFERNAPE, + SpeciesId.AMBIPOM, + SpeciesId.RIOLU, + SpeciesId.LUCARIO, + SpeciesId.CROAGUNK, + SpeciesId.TOXICROAK, + SpeciesId.WEAVILE, + SpeciesId.GALLADE, + SpeciesId.SAMUROTT, + SpeciesId.CONKELDURR, + SpeciesId.SCRAGGY, + SpeciesId.SCRAFTY, + SpeciesId.MIENFOO, + SpeciesId.MIENSHAO, + SpeciesId.COBALION, + SpeciesId.TERRAKION, + SpeciesId.VIRIZION, + SpeciesId.KELDEO, + SpeciesId.GRENINJA, + SpeciesId.TALONFLAME, + SpeciesId.HAWLUCHA, + SpeciesId.CRABRAWLER, + SpeciesId.CRABOMINABLE, [ - Species.LYCANROC, + SpeciesId.LYCANROC, "midnight", ], - Species.PASSIMIAN, - Species.HAKAMO_O, - Species.KOMMO_O, - Species.FALINKS, - Species.SNEASLER, - Species.QUAQUAVAL, - Species.SPIDOPS, - Species.PAWMO, - Species.PAWMOT, - Species.FLAMIGO, - Species.OKIDOGI, - Species.ALOLA_RAICHU, - Species.HISUI_SAMUROTT, - Species.HISUI_LILLIGANT, - Species.HISUI_DECIDUEYE, + SpeciesId.PASSIMIAN, + SpeciesId.HAKAMO_O, + SpeciesId.KOMMO_O, + SpeciesId.FALINKS, + SpeciesId.SNEASLER, + SpeciesId.QUAQUAVAL, + SpeciesId.SPIDOPS, + SpeciesId.PAWMO, + SpeciesId.PAWMOT, + SpeciesId.FLAMIGO, + SpeciesId.OKIDOGI, + SpeciesId.ALOLA_RAICHU, + SpeciesId.HISUI_SAMUROTT, + SpeciesId.HISUI_LILLIGANT, + SpeciesId.HISUI_DECIDUEYE, ], }; interface SpeciesTmMoves { - [key: number]: (Moves | [string | Species, Moves])[]; + [key: number]: (MoveId | [string | SpeciesId, MoveId])[]; } function transposeTmSpecies(): SpeciesTmMoves { @@ -68588,320 +68588,320 @@ interface TmPoolTiers { } export const tmPoolTiers: TmPoolTiers = { - [Moves.MEGA_PUNCH]: ModifierTier.GREAT, - [Moves.PAY_DAY]: ModifierTier.ULTRA, - [Moves.FIRE_PUNCH]: ModifierTier.GREAT, - [Moves.ICE_PUNCH]: ModifierTier.GREAT, - [Moves.THUNDER_PUNCH]: ModifierTier.GREAT, - [Moves.SWORDS_DANCE]: ModifierTier.COMMON, - [Moves.CUT]: ModifierTier.COMMON, - [Moves.FLY]: ModifierTier.COMMON, - [Moves.MEGA_KICK]: ModifierTier.GREAT, - [Moves.BODY_SLAM]: ModifierTier.GREAT, - [Moves.TAKE_DOWN]: ModifierTier.GREAT, - [Moves.DOUBLE_EDGE]: ModifierTier.ULTRA, - [Moves.PIN_MISSILE]: ModifierTier.COMMON, - [Moves.ROAR]: ModifierTier.COMMON, - [Moves.FLAMETHROWER]: ModifierTier.ULTRA, - [Moves.HYDRO_PUMP]: ModifierTier.ULTRA, - [Moves.SURF]: ModifierTier.ULTRA, - [Moves.ICE_BEAM]: ModifierTier.ULTRA, - [Moves.BLIZZARD]: ModifierTier.ULTRA, - [Moves.PSYBEAM]: ModifierTier.GREAT, - [Moves.HYPER_BEAM]: ModifierTier.ULTRA, - [Moves.LOW_KICK]: ModifierTier.COMMON, - [Moves.COUNTER]: ModifierTier.COMMON, - [Moves.STRENGTH]: ModifierTier.GREAT, - [Moves.SOLAR_BEAM]: ModifierTier.ULTRA, - [Moves.FIRE_SPIN]: ModifierTier.COMMON, - [Moves.THUNDERBOLT]: ModifierTier.ULTRA, - [Moves.THUNDER_WAVE]: ModifierTier.COMMON, - [Moves.THUNDER]: ModifierTier.ULTRA, - [Moves.EARTHQUAKE]: ModifierTier.ULTRA, - [Moves.DIG]: ModifierTier.GREAT, - [Moves.TOXIC]: ModifierTier.GREAT, - [Moves.PSYCHIC]: ModifierTier.ULTRA, - [Moves.AGILITY]: ModifierTier.COMMON, - [Moves.NIGHT_SHADE]: ModifierTier.COMMON, - [Moves.SCREECH]: ModifierTier.COMMON, - [Moves.DOUBLE_TEAM]: ModifierTier.COMMON, - [Moves.CONFUSE_RAY]: ModifierTier.COMMON, - [Moves.LIGHT_SCREEN]: ModifierTier.COMMON, - [Moves.HAZE]: ModifierTier.COMMON, - [Moves.REFLECT]: ModifierTier.COMMON, - [Moves.FOCUS_ENERGY]: ModifierTier.COMMON, - [Moves.METRONOME]: ModifierTier.COMMON, - [Moves.SELF_DESTRUCT]: ModifierTier.GREAT, - [Moves.FIRE_BLAST]: ModifierTier.ULTRA, - [Moves.WATERFALL]: ModifierTier.GREAT, - [Moves.SWIFT]: ModifierTier.COMMON, - [Moves.AMNESIA]: ModifierTier.COMMON, - [Moves.DREAM_EATER]: ModifierTier.GREAT, - [Moves.LEECH_LIFE]: ModifierTier.ULTRA, - [Moves.FLASH]: ModifierTier.COMMON, - [Moves.EXPLOSION]: ModifierTier.GREAT, - [Moves.REST]: ModifierTier.COMMON, - [Moves.ROCK_SLIDE]: ModifierTier.GREAT, - [Moves.TRI_ATTACK]: ModifierTier.ULTRA, - [Moves.SUPER_FANG]: ModifierTier.COMMON, - [Moves.SUBSTITUTE]: ModifierTier.COMMON, - [Moves.THIEF]: ModifierTier.GREAT, - [Moves.SNORE]: ModifierTier.COMMON, - [Moves.CURSE]: ModifierTier.COMMON, - [Moves.REVERSAL]: ModifierTier.COMMON, - [Moves.SPITE]: ModifierTier.COMMON, - [Moves.PROTECT]: ModifierTier.COMMON, - [Moves.SCARY_FACE]: ModifierTier.COMMON, - [Moves.SLUDGE_BOMB]: ModifierTier.GREAT, - [Moves.MUD_SLAP]: ModifierTier.COMMON, - [Moves.SPIKES]: ModifierTier.COMMON, - [Moves.ICY_WIND]: ModifierTier.GREAT, - [Moves.OUTRAGE]: ModifierTier.ULTRA, - [Moves.SANDSTORM]: ModifierTier.COMMON, - [Moves.GIGA_DRAIN]: ModifierTier.ULTRA, - [Moves.ENDURE]: ModifierTier.COMMON, - [Moves.CHARM]: ModifierTier.COMMON, - [Moves.FALSE_SWIPE]: ModifierTier.COMMON, - [Moves.SWAGGER]: ModifierTier.COMMON, - [Moves.STEEL_WING]: ModifierTier.GREAT, - [Moves.ATTRACT]: ModifierTier.COMMON, - [Moves.SLEEP_TALK]: ModifierTier.COMMON, - [Moves.HEAL_BELL]: ModifierTier.COMMON, - [Moves.RETURN]: ModifierTier.ULTRA, - [Moves.FRUSTRATION]: ModifierTier.COMMON, - [Moves.SAFEGUARD]: ModifierTier.COMMON, - [Moves.PAIN_SPLIT]: ModifierTier.COMMON, - [Moves.MEGAHORN]: ModifierTier.ULTRA, - [Moves.BATON_PASS]: ModifierTier.COMMON, - [Moves.ENCORE]: ModifierTier.COMMON, - [Moves.IRON_TAIL]: ModifierTier.GREAT, - [Moves.METAL_CLAW]: ModifierTier.COMMON, - [Moves.SYNTHESIS]: ModifierTier.GREAT, - [Moves.HIDDEN_POWER]: ModifierTier.GREAT, - [Moves.RAIN_DANCE]: ModifierTier.COMMON, - [Moves.SUNNY_DAY]: ModifierTier.COMMON, - [Moves.CRUNCH]: ModifierTier.GREAT, - [Moves.PSYCH_UP]: ModifierTier.COMMON, - [Moves.SHADOW_BALL]: ModifierTier.ULTRA, - [Moves.FUTURE_SIGHT]: ModifierTier.GREAT, - [Moves.ROCK_SMASH]: ModifierTier.COMMON, - [Moves.WHIRLPOOL]: ModifierTier.COMMON, - [Moves.BEAT_UP]: ModifierTier.COMMON, - [Moves.UPROAR]: ModifierTier.GREAT, - [Moves.HEAT_WAVE]: ModifierTier.ULTRA, - [Moves.HAIL]: ModifierTier.COMMON, - [Moves.TORMENT]: ModifierTier.COMMON, - [Moves.WILL_O_WISP]: ModifierTier.COMMON, - [Moves.FACADE]: ModifierTier.GREAT, - [Moves.FOCUS_PUNCH]: ModifierTier.COMMON, - [Moves.NATURE_POWER]: ModifierTier.COMMON, - [Moves.CHARGE]: ModifierTier.COMMON, - [Moves.TAUNT]: ModifierTier.COMMON, - [Moves.HELPING_HAND]: ModifierTier.COMMON, - [Moves.TRICK]: ModifierTier.COMMON, - [Moves.SUPERPOWER]: ModifierTier.ULTRA, - [Moves.RECYCLE]: ModifierTier.COMMON, - [Moves.REVENGE]: ModifierTier.GREAT, - [Moves.BRICK_BREAK]: ModifierTier.GREAT, - [Moves.KNOCK_OFF]: ModifierTier.GREAT, - [Moves.ENDEAVOR]: ModifierTier.COMMON, - [Moves.SKILL_SWAP]: ModifierTier.COMMON, - [Moves.IMPRISON]: ModifierTier.COMMON, - [Moves.SECRET_POWER]: ModifierTier.COMMON, - [Moves.DIVE]: ModifierTier.GREAT, - [Moves.FEATHER_DANCE]: ModifierTier.COMMON, - [Moves.BLAZE_KICK]: ModifierTier.GREAT, - [Moves.HYPER_VOICE]: ModifierTier.ULTRA, - [Moves.BLAST_BURN]: ModifierTier.ULTRA, - [Moves.HYDRO_CANNON]: ModifierTier.ULTRA, - [Moves.WEATHER_BALL]: ModifierTier.COMMON, - [Moves.FAKE_TEARS]: ModifierTier.COMMON, - [Moves.AIR_CUTTER]: ModifierTier.GREAT, - [Moves.OVERHEAT]: ModifierTier.ULTRA, - [Moves.ROCK_TOMB]: ModifierTier.GREAT, - [Moves.METAL_SOUND]: ModifierTier.COMMON, - [Moves.COSMIC_POWER]: ModifierTier.COMMON, - [Moves.SIGNAL_BEAM]: ModifierTier.GREAT, - [Moves.SAND_TOMB]: ModifierTier.COMMON, - [Moves.MUDDY_WATER]: ModifierTier.GREAT, - [Moves.BULLET_SEED]: ModifierTier.GREAT, - [Moves.AERIAL_ACE]: ModifierTier.GREAT, - [Moves.ICICLE_SPEAR]: ModifierTier.GREAT, - [Moves.IRON_DEFENSE]: ModifierTier.GREAT, - [Moves.DRAGON_CLAW]: ModifierTier.ULTRA, - [Moves.FRENZY_PLANT]: ModifierTier.ULTRA, - [Moves.BULK_UP]: ModifierTier.COMMON, - [Moves.BOUNCE]: ModifierTier.GREAT, - [Moves.MUD_SHOT]: ModifierTier.GREAT, - [Moves.POISON_TAIL]: ModifierTier.GREAT, - [Moves.COVET]: ModifierTier.GREAT, - [Moves.MAGICAL_LEAF]: ModifierTier.GREAT, - [Moves.CALM_MIND]: ModifierTier.GREAT, - [Moves.LEAF_BLADE]: ModifierTier.ULTRA, - [Moves.DRAGON_DANCE]: ModifierTier.GREAT, - [Moves.ROCK_BLAST]: ModifierTier.GREAT, - [Moves.WATER_PULSE]: ModifierTier.GREAT, - [Moves.ROOST]: ModifierTier.GREAT, - [Moves.GRAVITY]: ModifierTier.COMMON, - [Moves.GYRO_BALL]: ModifierTier.COMMON, - [Moves.BRINE]: ModifierTier.GREAT, - [Moves.PLUCK]: ModifierTier.GREAT, - [Moves.TAILWIND]: ModifierTier.GREAT, - [Moves.U_TURN]: ModifierTier.GREAT, - [Moves.CLOSE_COMBAT]: ModifierTier.ULTRA, - [Moves.PAYBACK]: ModifierTier.COMMON, - [Moves.ASSURANCE]: ModifierTier.COMMON, - [Moves.EMBARGO]: ModifierTier.COMMON, - [Moves.FLING]: ModifierTier.COMMON, - [Moves.GASTRO_ACID]: ModifierTier.GREAT, - [Moves.POWER_SWAP]: ModifierTier.COMMON, - [Moves.GUARD_SWAP]: ModifierTier.COMMON, - [Moves.WORRY_SEED]: ModifierTier.GREAT, - [Moves.TOXIC_SPIKES]: ModifierTier.GREAT, - [Moves.FLARE_BLITZ]: ModifierTier.ULTRA, - [Moves.AURA_SPHERE]: ModifierTier.GREAT, - [Moves.ROCK_POLISH]: ModifierTier.COMMON, - [Moves.POISON_JAB]: ModifierTier.GREAT, - [Moves.DARK_PULSE]: ModifierTier.GREAT, - [Moves.AQUA_TAIL]: ModifierTier.GREAT, - [Moves.SEED_BOMB]: ModifierTier.GREAT, - [Moves.AIR_SLASH]: ModifierTier.GREAT, - [Moves.X_SCISSOR]: ModifierTier.GREAT, - [Moves.BUG_BUZZ]: ModifierTier.GREAT, - [Moves.DRAGON_PULSE]: ModifierTier.GREAT, - [Moves.POWER_GEM]: ModifierTier.GREAT, - [Moves.DRAIN_PUNCH]: ModifierTier.GREAT, - [Moves.VACUUM_WAVE]: ModifierTier.COMMON, - [Moves.FOCUS_BLAST]: ModifierTier.GREAT, - [Moves.ENERGY_BALL]: ModifierTier.GREAT, - [Moves.BRAVE_BIRD]: ModifierTier.ULTRA, - [Moves.EARTH_POWER]: ModifierTier.ULTRA, - [Moves.GIGA_IMPACT]: ModifierTier.GREAT, - [Moves.NASTY_PLOT]: ModifierTier.COMMON, - [Moves.AVALANCHE]: ModifierTier.GREAT, - [Moves.SHADOW_CLAW]: ModifierTier.GREAT, - [Moves.THUNDER_FANG]: ModifierTier.GREAT, - [Moves.ICE_FANG]: ModifierTier.GREAT, - [Moves.FIRE_FANG]: ModifierTier.GREAT, - [Moves.PSYCHO_CUT]: ModifierTier.GREAT, - [Moves.ZEN_HEADBUTT]: ModifierTier.GREAT, - [Moves.FLASH_CANNON]: ModifierTier.GREAT, - [Moves.ROCK_CLIMB]: ModifierTier.GREAT, - [Moves.DEFOG]: ModifierTier.COMMON, - [Moves.TRICK_ROOM]: ModifierTier.COMMON, - [Moves.DRACO_METEOR]: ModifierTier.ULTRA, - [Moves.LEAF_STORM]: ModifierTier.ULTRA, - [Moves.POWER_WHIP]: ModifierTier.ULTRA, - [Moves.CROSS_POISON]: ModifierTier.GREAT, - [Moves.GUNK_SHOT]: ModifierTier.ULTRA, - [Moves.IRON_HEAD]: ModifierTier.GREAT, - [Moves.STONE_EDGE]: ModifierTier.ULTRA, - [Moves.STEALTH_ROCK]: ModifierTier.COMMON, - [Moves.GRASS_KNOT]: ModifierTier.ULTRA, - [Moves.BUG_BITE]: ModifierTier.GREAT, - [Moves.CHARGE_BEAM]: ModifierTier.GREAT, - [Moves.HONE_CLAWS]: ModifierTier.COMMON, - [Moves.WONDER_ROOM]: ModifierTier.COMMON, - [Moves.PSYSHOCK]: ModifierTier.GREAT, - [Moves.VENOSHOCK]: ModifierTier.GREAT, - [Moves.MAGIC_ROOM]: ModifierTier.COMMON, - [Moves.SMACK_DOWN]: ModifierTier.COMMON, - [Moves.SLUDGE_WAVE]: ModifierTier.GREAT, - [Moves.HEAVY_SLAM]: ModifierTier.GREAT, - [Moves.ELECTRO_BALL]: ModifierTier.GREAT, - [Moves.FLAME_CHARGE]: ModifierTier.GREAT, - [Moves.LOW_SWEEP]: ModifierTier.GREAT, - [Moves.ACID_SPRAY]: ModifierTier.COMMON, - [Moves.FOUL_PLAY]: ModifierTier.ULTRA, - [Moves.ROUND]: ModifierTier.COMMON, - [Moves.ECHOED_VOICE]: ModifierTier.COMMON, - [Moves.STORED_POWER]: ModifierTier.COMMON, - [Moves.ALLY_SWITCH]: ModifierTier.COMMON, - [Moves.SCALD]: ModifierTier.GREAT, - [Moves.HEX]: ModifierTier.GREAT, - [Moves.SKY_DROP]: ModifierTier.GREAT, - [Moves.INCINERATE]: ModifierTier.GREAT, - [Moves.QUASH]: ModifierTier.COMMON, - [Moves.ACROBATICS]: ModifierTier.GREAT, - [Moves.RETALIATE]: ModifierTier.GREAT, - [Moves.WATER_PLEDGE]: ModifierTier.GREAT, - [Moves.FIRE_PLEDGE]: ModifierTier.GREAT, - [Moves.GRASS_PLEDGE]: ModifierTier.GREAT, - [Moves.VOLT_SWITCH]: ModifierTier.GREAT, - [Moves.STRUGGLE_BUG]: ModifierTier.COMMON, - [Moves.BULLDOZE]: ModifierTier.GREAT, - [Moves.FROST_BREATH]: ModifierTier.GREAT, - [Moves.DRAGON_TAIL]: ModifierTier.GREAT, - [Moves.WORK_UP]: ModifierTier.COMMON, - [Moves.ELECTROWEB]: ModifierTier.GREAT, - [Moves.WILD_CHARGE]: ModifierTier.GREAT, - [Moves.DRILL_RUN]: ModifierTier.GREAT, - [Moves.RAZOR_SHELL]: ModifierTier.GREAT, - [Moves.HEAT_CRASH]: ModifierTier.GREAT, - [Moves.TAIL_SLAP]: ModifierTier.GREAT, - [Moves.HURRICANE]: ModifierTier.ULTRA, - [Moves.SNARL]: ModifierTier.COMMON, - [Moves.PHANTOM_FORCE]: ModifierTier.ULTRA, - [Moves.PETAL_BLIZZARD]: ModifierTier.GREAT, - [Moves.DISARMING_VOICE]: ModifierTier.GREAT, - [Moves.DRAINING_KISS]: ModifierTier.GREAT, - [Moves.GRASSY_TERRAIN]: ModifierTier.COMMON, - [Moves.MISTY_TERRAIN]: ModifierTier.COMMON, - [Moves.PLAY_ROUGH]: ModifierTier.GREAT, - [Moves.CONFIDE]: ModifierTier.COMMON, - [Moves.MYSTICAL_FIRE]: ModifierTier.GREAT, - [Moves.EERIE_IMPULSE]: ModifierTier.COMMON, - [Moves.VENOM_DRENCH]: ModifierTier.COMMON, - [Moves.ELECTRIC_TERRAIN]: ModifierTier.COMMON, - [Moves.DAZZLING_GLEAM]: ModifierTier.ULTRA, - [Moves.INFESTATION]: ModifierTier.COMMON, - [Moves.POWER_UP_PUNCH]: ModifierTier.GREAT, - [Moves.DARKEST_LARIAT]: ModifierTier.GREAT, - [Moves.HIGH_HORSEPOWER]: ModifierTier.ULTRA, - [Moves.SOLAR_BLADE]: ModifierTier.GREAT, - [Moves.THROAT_CHOP]: ModifierTier.GREAT, - [Moves.POLLEN_PUFF]: ModifierTier.GREAT, - [Moves.PSYCHIC_TERRAIN]: ModifierTier.COMMON, - [Moves.LUNGE]: ModifierTier.GREAT, - [Moves.SPEED_SWAP]: ModifierTier.COMMON, - [Moves.SMART_STRIKE]: ModifierTier.GREAT, - [Moves.BRUTAL_SWING]: ModifierTier.GREAT, - [Moves.AURORA_VEIL]: ModifierTier.COMMON, - [Moves.PSYCHIC_FANGS]: ModifierTier.GREAT, - [Moves.STOMPING_TANTRUM]: ModifierTier.GREAT, - [Moves.LIQUIDATION]: ModifierTier.ULTRA, - [Moves.BODY_PRESS]: ModifierTier.ULTRA, - [Moves.BREAKING_SWIPE]: ModifierTier.GREAT, - [Moves.STEEL_BEAM]: ModifierTier.ULTRA, - [Moves.EXPANDING_FORCE]: ModifierTier.GREAT, - [Moves.STEEL_ROLLER]: ModifierTier.COMMON, - [Moves.SCALE_SHOT]: ModifierTier.ULTRA, - [Moves.METEOR_BEAM]: ModifierTier.GREAT, - [Moves.MISTY_EXPLOSION]: ModifierTier.COMMON, - [Moves.GRASSY_GLIDE]: ModifierTier.COMMON, - [Moves.RISING_VOLTAGE]: ModifierTier.COMMON, - [Moves.TERRAIN_PULSE]: ModifierTier.COMMON, - [Moves.SKITTER_SMACK]: ModifierTier.GREAT, - [Moves.BURNING_JEALOUSY]: ModifierTier.GREAT, - [Moves.LASH_OUT]: ModifierTier.GREAT, - [Moves.POLTERGEIST]: ModifierTier.ULTRA, - [Moves.CORROSIVE_GAS]: ModifierTier.COMMON, - [Moves.COACHING]: ModifierTier.COMMON, - [Moves.FLIP_TURN]: ModifierTier.COMMON, - [Moves.TRIPLE_AXEL]: ModifierTier.COMMON, - [Moves.DUAL_WINGBEAT]: ModifierTier.COMMON, - [Moves.SCORCHING_SANDS]: ModifierTier.GREAT, - [Moves.TERA_BLAST]: ModifierTier.GREAT, - [Moves.ICE_SPINNER]: ModifierTier.GREAT, - [Moves.SNOWSCAPE]: ModifierTier.COMMON, - [Moves.POUNCE]: ModifierTier.COMMON, - [Moves.TRAILBLAZE]: ModifierTier.COMMON, - [Moves.CHILLING_WATER]: ModifierTier.COMMON, - [Moves.HARD_PRESS]: ModifierTier.GREAT, - [Moves.DRAGON_CHEER]: ModifierTier.COMMON, - [Moves.ALLURING_VOICE]: ModifierTier.GREAT, - [Moves.TEMPER_FLARE]: ModifierTier.GREAT, - [Moves.SUPERCELL_SLAM]: ModifierTier.GREAT, - [Moves.PSYCHIC_NOISE]: ModifierTier.GREAT, - [Moves.UPPER_HAND]: ModifierTier.COMMON, + [MoveId.MEGA_PUNCH]: ModifierTier.GREAT, + [MoveId.PAY_DAY]: ModifierTier.ULTRA, + [MoveId.FIRE_PUNCH]: ModifierTier.GREAT, + [MoveId.ICE_PUNCH]: ModifierTier.GREAT, + [MoveId.THUNDER_PUNCH]: ModifierTier.GREAT, + [MoveId.SWORDS_DANCE]: ModifierTier.COMMON, + [MoveId.CUT]: ModifierTier.COMMON, + [MoveId.FLY]: ModifierTier.COMMON, + [MoveId.MEGA_KICK]: ModifierTier.GREAT, + [MoveId.BODY_SLAM]: ModifierTier.GREAT, + [MoveId.TAKE_DOWN]: ModifierTier.GREAT, + [MoveId.DOUBLE_EDGE]: ModifierTier.ULTRA, + [MoveId.PIN_MISSILE]: ModifierTier.COMMON, + [MoveId.ROAR]: ModifierTier.COMMON, + [MoveId.FLAMETHROWER]: ModifierTier.ULTRA, + [MoveId.HYDRO_PUMP]: ModifierTier.ULTRA, + [MoveId.SURF]: ModifierTier.ULTRA, + [MoveId.ICE_BEAM]: ModifierTier.ULTRA, + [MoveId.BLIZZARD]: ModifierTier.ULTRA, + [MoveId.PSYBEAM]: ModifierTier.GREAT, + [MoveId.HYPER_BEAM]: ModifierTier.ULTRA, + [MoveId.LOW_KICK]: ModifierTier.COMMON, + [MoveId.COUNTER]: ModifierTier.COMMON, + [MoveId.STRENGTH]: ModifierTier.GREAT, + [MoveId.SOLAR_BEAM]: ModifierTier.ULTRA, + [MoveId.FIRE_SPIN]: ModifierTier.COMMON, + [MoveId.THUNDERBOLT]: ModifierTier.ULTRA, + [MoveId.THUNDER_WAVE]: ModifierTier.COMMON, + [MoveId.THUNDER]: ModifierTier.ULTRA, + [MoveId.EARTHQUAKE]: ModifierTier.ULTRA, + [MoveId.DIG]: ModifierTier.GREAT, + [MoveId.TOXIC]: ModifierTier.GREAT, + [MoveId.PSYCHIC]: ModifierTier.ULTRA, + [MoveId.AGILITY]: ModifierTier.COMMON, + [MoveId.NIGHT_SHADE]: ModifierTier.COMMON, + [MoveId.SCREECH]: ModifierTier.COMMON, + [MoveId.DOUBLE_TEAM]: ModifierTier.COMMON, + [MoveId.CONFUSE_RAY]: ModifierTier.COMMON, + [MoveId.LIGHT_SCREEN]: ModifierTier.COMMON, + [MoveId.HAZE]: ModifierTier.COMMON, + [MoveId.REFLECT]: ModifierTier.COMMON, + [MoveId.FOCUS_ENERGY]: ModifierTier.COMMON, + [MoveId.METRONOME]: ModifierTier.COMMON, + [MoveId.SELF_DESTRUCT]: ModifierTier.GREAT, + [MoveId.FIRE_BLAST]: ModifierTier.ULTRA, + [MoveId.WATERFALL]: ModifierTier.GREAT, + [MoveId.SWIFT]: ModifierTier.COMMON, + [MoveId.AMNESIA]: ModifierTier.COMMON, + [MoveId.DREAM_EATER]: ModifierTier.GREAT, + [MoveId.LEECH_LIFE]: ModifierTier.ULTRA, + [MoveId.FLASH]: ModifierTier.COMMON, + [MoveId.EXPLOSION]: ModifierTier.GREAT, + [MoveId.REST]: ModifierTier.COMMON, + [MoveId.ROCK_SLIDE]: ModifierTier.GREAT, + [MoveId.TRI_ATTACK]: ModifierTier.ULTRA, + [MoveId.SUPER_FANG]: ModifierTier.COMMON, + [MoveId.SUBSTITUTE]: ModifierTier.COMMON, + [MoveId.THIEF]: ModifierTier.GREAT, + [MoveId.SNORE]: ModifierTier.COMMON, + [MoveId.CURSE]: ModifierTier.COMMON, + [MoveId.REVERSAL]: ModifierTier.COMMON, + [MoveId.SPITE]: ModifierTier.COMMON, + [MoveId.PROTECT]: ModifierTier.COMMON, + [MoveId.SCARY_FACE]: ModifierTier.COMMON, + [MoveId.SLUDGE_BOMB]: ModifierTier.GREAT, + [MoveId.MUD_SLAP]: ModifierTier.COMMON, + [MoveId.SPIKES]: ModifierTier.COMMON, + [MoveId.ICY_WIND]: ModifierTier.GREAT, + [MoveId.OUTRAGE]: ModifierTier.ULTRA, + [MoveId.SANDSTORM]: ModifierTier.COMMON, + [MoveId.GIGA_DRAIN]: ModifierTier.ULTRA, + [MoveId.ENDURE]: ModifierTier.COMMON, + [MoveId.CHARM]: ModifierTier.COMMON, + [MoveId.FALSE_SWIPE]: ModifierTier.COMMON, + [MoveId.SWAGGER]: ModifierTier.COMMON, + [MoveId.STEEL_WING]: ModifierTier.GREAT, + [MoveId.ATTRACT]: ModifierTier.COMMON, + [MoveId.SLEEP_TALK]: ModifierTier.COMMON, + [MoveId.HEAL_BELL]: ModifierTier.COMMON, + [MoveId.RETURN]: ModifierTier.ULTRA, + [MoveId.FRUSTRATION]: ModifierTier.COMMON, + [MoveId.SAFEGUARD]: ModifierTier.COMMON, + [MoveId.PAIN_SPLIT]: ModifierTier.COMMON, + [MoveId.MEGAHORN]: ModifierTier.ULTRA, + [MoveId.BATON_PASS]: ModifierTier.COMMON, + [MoveId.ENCORE]: ModifierTier.COMMON, + [MoveId.IRON_TAIL]: ModifierTier.GREAT, + [MoveId.METAL_CLAW]: ModifierTier.COMMON, + [MoveId.SYNTHESIS]: ModifierTier.GREAT, + [MoveId.HIDDEN_POWER]: ModifierTier.GREAT, + [MoveId.RAIN_DANCE]: ModifierTier.COMMON, + [MoveId.SUNNY_DAY]: ModifierTier.COMMON, + [MoveId.CRUNCH]: ModifierTier.GREAT, + [MoveId.PSYCH_UP]: ModifierTier.COMMON, + [MoveId.SHADOW_BALL]: ModifierTier.ULTRA, + [MoveId.FUTURE_SIGHT]: ModifierTier.GREAT, + [MoveId.ROCK_SMASH]: ModifierTier.COMMON, + [MoveId.WHIRLPOOL]: ModifierTier.COMMON, + [MoveId.BEAT_UP]: ModifierTier.COMMON, + [MoveId.UPROAR]: ModifierTier.GREAT, + [MoveId.HEAT_WAVE]: ModifierTier.ULTRA, + [MoveId.HAIL]: ModifierTier.COMMON, + [MoveId.TORMENT]: ModifierTier.COMMON, + [MoveId.WILL_O_WISP]: ModifierTier.COMMON, + [MoveId.FACADE]: ModifierTier.GREAT, + [MoveId.FOCUS_PUNCH]: ModifierTier.COMMON, + [MoveId.NATURE_POWER]: ModifierTier.COMMON, + [MoveId.CHARGE]: ModifierTier.COMMON, + [MoveId.TAUNT]: ModifierTier.COMMON, + [MoveId.HELPING_HAND]: ModifierTier.COMMON, + [MoveId.TRICK]: ModifierTier.COMMON, + [MoveId.SUPERPOWER]: ModifierTier.ULTRA, + [MoveId.RECYCLE]: ModifierTier.COMMON, + [MoveId.REVENGE]: ModifierTier.GREAT, + [MoveId.BRICK_BREAK]: ModifierTier.GREAT, + [MoveId.KNOCK_OFF]: ModifierTier.GREAT, + [MoveId.ENDEAVOR]: ModifierTier.COMMON, + [MoveId.SKILL_SWAP]: ModifierTier.COMMON, + [MoveId.IMPRISON]: ModifierTier.COMMON, + [MoveId.SECRET_POWER]: ModifierTier.COMMON, + [MoveId.DIVE]: ModifierTier.GREAT, + [MoveId.FEATHER_DANCE]: ModifierTier.COMMON, + [MoveId.BLAZE_KICK]: ModifierTier.GREAT, + [MoveId.HYPER_VOICE]: ModifierTier.ULTRA, + [MoveId.BLAST_BURN]: ModifierTier.ULTRA, + [MoveId.HYDRO_CANNON]: ModifierTier.ULTRA, + [MoveId.WEATHER_BALL]: ModifierTier.COMMON, + [MoveId.FAKE_TEARS]: ModifierTier.COMMON, + [MoveId.AIR_CUTTER]: ModifierTier.GREAT, + [MoveId.OVERHEAT]: ModifierTier.ULTRA, + [MoveId.ROCK_TOMB]: ModifierTier.GREAT, + [MoveId.METAL_SOUND]: ModifierTier.COMMON, + [MoveId.COSMIC_POWER]: ModifierTier.COMMON, + [MoveId.SIGNAL_BEAM]: ModifierTier.GREAT, + [MoveId.SAND_TOMB]: ModifierTier.COMMON, + [MoveId.MUDDY_WATER]: ModifierTier.GREAT, + [MoveId.BULLET_SEED]: ModifierTier.GREAT, + [MoveId.AERIAL_ACE]: ModifierTier.GREAT, + [MoveId.ICICLE_SPEAR]: ModifierTier.GREAT, + [MoveId.IRON_DEFENSE]: ModifierTier.GREAT, + [MoveId.DRAGON_CLAW]: ModifierTier.ULTRA, + [MoveId.FRENZY_PLANT]: ModifierTier.ULTRA, + [MoveId.BULK_UP]: ModifierTier.COMMON, + [MoveId.BOUNCE]: ModifierTier.GREAT, + [MoveId.MUD_SHOT]: ModifierTier.GREAT, + [MoveId.POISON_TAIL]: ModifierTier.GREAT, + [MoveId.COVET]: ModifierTier.GREAT, + [MoveId.MAGICAL_LEAF]: ModifierTier.GREAT, + [MoveId.CALM_MIND]: ModifierTier.GREAT, + [MoveId.LEAF_BLADE]: ModifierTier.ULTRA, + [MoveId.DRAGON_DANCE]: ModifierTier.GREAT, + [MoveId.ROCK_BLAST]: ModifierTier.GREAT, + [MoveId.WATER_PULSE]: ModifierTier.GREAT, + [MoveId.ROOST]: ModifierTier.GREAT, + [MoveId.GRAVITY]: ModifierTier.COMMON, + [MoveId.GYRO_BALL]: ModifierTier.COMMON, + [MoveId.BRINE]: ModifierTier.GREAT, + [MoveId.PLUCK]: ModifierTier.GREAT, + [MoveId.TAILWIND]: ModifierTier.GREAT, + [MoveId.U_TURN]: ModifierTier.GREAT, + [MoveId.CLOSE_COMBAT]: ModifierTier.ULTRA, + [MoveId.PAYBACK]: ModifierTier.COMMON, + [MoveId.ASSURANCE]: ModifierTier.COMMON, + [MoveId.EMBARGO]: ModifierTier.COMMON, + [MoveId.FLING]: ModifierTier.COMMON, + [MoveId.GASTRO_ACID]: ModifierTier.GREAT, + [MoveId.POWER_SWAP]: ModifierTier.COMMON, + [MoveId.GUARD_SWAP]: ModifierTier.COMMON, + [MoveId.WORRY_SEED]: ModifierTier.GREAT, + [MoveId.TOXIC_SPIKES]: ModifierTier.GREAT, + [MoveId.FLARE_BLITZ]: ModifierTier.ULTRA, + [MoveId.AURA_SPHERE]: ModifierTier.GREAT, + [MoveId.ROCK_POLISH]: ModifierTier.COMMON, + [MoveId.POISON_JAB]: ModifierTier.GREAT, + [MoveId.DARK_PULSE]: ModifierTier.GREAT, + [MoveId.AQUA_TAIL]: ModifierTier.GREAT, + [MoveId.SEED_BOMB]: ModifierTier.GREAT, + [MoveId.AIR_SLASH]: ModifierTier.GREAT, + [MoveId.X_SCISSOR]: ModifierTier.GREAT, + [MoveId.BUG_BUZZ]: ModifierTier.GREAT, + [MoveId.DRAGON_PULSE]: ModifierTier.GREAT, + [MoveId.POWER_GEM]: ModifierTier.GREAT, + [MoveId.DRAIN_PUNCH]: ModifierTier.GREAT, + [MoveId.VACUUM_WAVE]: ModifierTier.COMMON, + [MoveId.FOCUS_BLAST]: ModifierTier.GREAT, + [MoveId.ENERGY_BALL]: ModifierTier.GREAT, + [MoveId.BRAVE_BIRD]: ModifierTier.ULTRA, + [MoveId.EARTH_POWER]: ModifierTier.ULTRA, + [MoveId.GIGA_IMPACT]: ModifierTier.GREAT, + [MoveId.NASTY_PLOT]: ModifierTier.COMMON, + [MoveId.AVALANCHE]: ModifierTier.GREAT, + [MoveId.SHADOW_CLAW]: ModifierTier.GREAT, + [MoveId.THUNDER_FANG]: ModifierTier.GREAT, + [MoveId.ICE_FANG]: ModifierTier.GREAT, + [MoveId.FIRE_FANG]: ModifierTier.GREAT, + [MoveId.PSYCHO_CUT]: ModifierTier.GREAT, + [MoveId.ZEN_HEADBUTT]: ModifierTier.GREAT, + [MoveId.FLASH_CANNON]: ModifierTier.GREAT, + [MoveId.ROCK_CLIMB]: ModifierTier.GREAT, + [MoveId.DEFOG]: ModifierTier.COMMON, + [MoveId.TRICK_ROOM]: ModifierTier.COMMON, + [MoveId.DRACO_METEOR]: ModifierTier.ULTRA, + [MoveId.LEAF_STORM]: ModifierTier.ULTRA, + [MoveId.POWER_WHIP]: ModifierTier.ULTRA, + [MoveId.CROSS_POISON]: ModifierTier.GREAT, + [MoveId.GUNK_SHOT]: ModifierTier.ULTRA, + [MoveId.IRON_HEAD]: ModifierTier.GREAT, + [MoveId.STONE_EDGE]: ModifierTier.ULTRA, + [MoveId.STEALTH_ROCK]: ModifierTier.COMMON, + [MoveId.GRASS_KNOT]: ModifierTier.ULTRA, + [MoveId.BUG_BITE]: ModifierTier.GREAT, + [MoveId.CHARGE_BEAM]: ModifierTier.GREAT, + [MoveId.HONE_CLAWS]: ModifierTier.COMMON, + [MoveId.WONDER_ROOM]: ModifierTier.COMMON, + [MoveId.PSYSHOCK]: ModifierTier.GREAT, + [MoveId.VENOSHOCK]: ModifierTier.GREAT, + [MoveId.MAGIC_ROOM]: ModifierTier.COMMON, + [MoveId.SMACK_DOWN]: ModifierTier.COMMON, + [MoveId.SLUDGE_WAVE]: ModifierTier.GREAT, + [MoveId.HEAVY_SLAM]: ModifierTier.GREAT, + [MoveId.ELECTRO_BALL]: ModifierTier.GREAT, + [MoveId.FLAME_CHARGE]: ModifierTier.GREAT, + [MoveId.LOW_SWEEP]: ModifierTier.GREAT, + [MoveId.ACID_SPRAY]: ModifierTier.COMMON, + [MoveId.FOUL_PLAY]: ModifierTier.ULTRA, + [MoveId.ROUND]: ModifierTier.COMMON, + [MoveId.ECHOED_VOICE]: ModifierTier.COMMON, + [MoveId.STORED_POWER]: ModifierTier.COMMON, + [MoveId.ALLY_SWITCH]: ModifierTier.COMMON, + [MoveId.SCALD]: ModifierTier.GREAT, + [MoveId.HEX]: ModifierTier.GREAT, + [MoveId.SKY_DROP]: ModifierTier.GREAT, + [MoveId.INCINERATE]: ModifierTier.GREAT, + [MoveId.QUASH]: ModifierTier.COMMON, + [MoveId.ACROBATICS]: ModifierTier.GREAT, + [MoveId.RETALIATE]: ModifierTier.GREAT, + [MoveId.WATER_PLEDGE]: ModifierTier.GREAT, + [MoveId.FIRE_PLEDGE]: ModifierTier.GREAT, + [MoveId.GRASS_PLEDGE]: ModifierTier.GREAT, + [MoveId.VOLT_SWITCH]: ModifierTier.GREAT, + [MoveId.STRUGGLE_BUG]: ModifierTier.COMMON, + [MoveId.BULLDOZE]: ModifierTier.GREAT, + [MoveId.FROST_BREATH]: ModifierTier.GREAT, + [MoveId.DRAGON_TAIL]: ModifierTier.GREAT, + [MoveId.WORK_UP]: ModifierTier.COMMON, + [MoveId.ELECTROWEB]: ModifierTier.GREAT, + [MoveId.WILD_CHARGE]: ModifierTier.GREAT, + [MoveId.DRILL_RUN]: ModifierTier.GREAT, + [MoveId.RAZOR_SHELL]: ModifierTier.GREAT, + [MoveId.HEAT_CRASH]: ModifierTier.GREAT, + [MoveId.TAIL_SLAP]: ModifierTier.GREAT, + [MoveId.HURRICANE]: ModifierTier.ULTRA, + [MoveId.SNARL]: ModifierTier.COMMON, + [MoveId.PHANTOM_FORCE]: ModifierTier.ULTRA, + [MoveId.PETAL_BLIZZARD]: ModifierTier.GREAT, + [MoveId.DISARMING_VOICE]: ModifierTier.GREAT, + [MoveId.DRAINING_KISS]: ModifierTier.GREAT, + [MoveId.GRASSY_TERRAIN]: ModifierTier.COMMON, + [MoveId.MISTY_TERRAIN]: ModifierTier.COMMON, + [MoveId.PLAY_ROUGH]: ModifierTier.GREAT, + [MoveId.CONFIDE]: ModifierTier.COMMON, + [MoveId.MYSTICAL_FIRE]: ModifierTier.GREAT, + [MoveId.EERIE_IMPULSE]: ModifierTier.COMMON, + [MoveId.VENOM_DRENCH]: ModifierTier.COMMON, + [MoveId.ELECTRIC_TERRAIN]: ModifierTier.COMMON, + [MoveId.DAZZLING_GLEAM]: ModifierTier.ULTRA, + [MoveId.INFESTATION]: ModifierTier.COMMON, + [MoveId.POWER_UP_PUNCH]: ModifierTier.GREAT, + [MoveId.DARKEST_LARIAT]: ModifierTier.GREAT, + [MoveId.HIGH_HORSEPOWER]: ModifierTier.ULTRA, + [MoveId.SOLAR_BLADE]: ModifierTier.GREAT, + [MoveId.THROAT_CHOP]: ModifierTier.GREAT, + [MoveId.POLLEN_PUFF]: ModifierTier.GREAT, + [MoveId.PSYCHIC_TERRAIN]: ModifierTier.COMMON, + [MoveId.LUNGE]: ModifierTier.GREAT, + [MoveId.SPEED_SWAP]: ModifierTier.COMMON, + [MoveId.SMART_STRIKE]: ModifierTier.GREAT, + [MoveId.BRUTAL_SWING]: ModifierTier.GREAT, + [MoveId.AURORA_VEIL]: ModifierTier.COMMON, + [MoveId.PSYCHIC_FANGS]: ModifierTier.GREAT, + [MoveId.STOMPING_TANTRUM]: ModifierTier.GREAT, + [MoveId.LIQUIDATION]: ModifierTier.ULTRA, + [MoveId.BODY_PRESS]: ModifierTier.ULTRA, + [MoveId.BREAKING_SWIPE]: ModifierTier.GREAT, + [MoveId.STEEL_BEAM]: ModifierTier.ULTRA, + [MoveId.EXPANDING_FORCE]: ModifierTier.GREAT, + [MoveId.STEEL_ROLLER]: ModifierTier.COMMON, + [MoveId.SCALE_SHOT]: ModifierTier.ULTRA, + [MoveId.METEOR_BEAM]: ModifierTier.GREAT, + [MoveId.MISTY_EXPLOSION]: ModifierTier.COMMON, + [MoveId.GRASSY_GLIDE]: ModifierTier.COMMON, + [MoveId.RISING_VOLTAGE]: ModifierTier.COMMON, + [MoveId.TERRAIN_PULSE]: ModifierTier.COMMON, + [MoveId.SKITTER_SMACK]: ModifierTier.GREAT, + [MoveId.BURNING_JEALOUSY]: ModifierTier.GREAT, + [MoveId.LASH_OUT]: ModifierTier.GREAT, + [MoveId.POLTERGEIST]: ModifierTier.ULTRA, + [MoveId.CORROSIVE_GAS]: ModifierTier.COMMON, + [MoveId.COACHING]: ModifierTier.COMMON, + [MoveId.FLIP_TURN]: ModifierTier.COMMON, + [MoveId.TRIPLE_AXEL]: ModifierTier.COMMON, + [MoveId.DUAL_WINGBEAT]: ModifierTier.COMMON, + [MoveId.SCORCHING_SANDS]: ModifierTier.GREAT, + [MoveId.TERA_BLAST]: ModifierTier.GREAT, + [MoveId.ICE_SPINNER]: ModifierTier.GREAT, + [MoveId.SNOWSCAPE]: ModifierTier.COMMON, + [MoveId.POUNCE]: ModifierTier.COMMON, + [MoveId.TRAILBLAZE]: ModifierTier.COMMON, + [MoveId.CHILLING_WATER]: ModifierTier.COMMON, + [MoveId.HARD_PRESS]: ModifierTier.GREAT, + [MoveId.DRAGON_CHEER]: ModifierTier.COMMON, + [MoveId.ALLURING_VOICE]: ModifierTier.GREAT, + [MoveId.TEMPER_FLARE]: ModifierTier.GREAT, + [MoveId.SUPERCELL_SLAM]: ModifierTier.GREAT, + [MoveId.PSYCHIC_NOISE]: ModifierTier.GREAT, + [MoveId.UPPER_HAND]: ModifierTier.COMMON, }; diff --git a/src/data/battle-anims.ts b/src/data/battle-anims.ts index f395c3bb832..321d9938b2f 100644 --- a/src/data/battle-anims.ts +++ b/src/data/battle-anims.ts @@ -5,7 +5,7 @@ import { MoveFlags } from "#enums/MoveFlags"; import type Pokemon from "../field/pokemon"; import { type nil, getFrameMs, getEnumKeys, getEnumValues, animationFileName } from "../utils/common"; import type { BattlerIndex } from "../battle"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { SubstituteTag } from "./battler-tags"; import { isNullOrUndefined } from "../utils/common"; import Phaser from "phaser"; @@ -498,7 +498,7 @@ class AnimTimedAddBgEvent extends AnimTimedBgEvent { } } -export const moveAnims = new Map(); +export const moveAnims = new Map(); export const chargeAnims = new Map(); export const commonAnims = new Map(); export const encounterAnims = new Map(); @@ -521,7 +521,7 @@ export function initCommonAnims(): Promise { }); } -export function initMoveAnim(move: Moves): Promise { +export function initMoveAnim(move: MoveId): Promise { return new Promise(resolve => { if (moveAnims.has(move)) { if (moveAnims.get(move) !== null) { @@ -544,12 +544,12 @@ export function initMoveAnim(move: Moves): Promise { moveAnims.set(move, null); const defaultMoveAnim = allMoves[move] instanceof AttackMove - ? Moves.TACKLE + ? MoveId.TACKLE : allMoves[move] instanceof SelfStatusMove - ? Moves.FOCUS_ENERGY - : Moves.TAIL_WHIP; + ? MoveId.FOCUS_ENERGY + : MoveId.TAIL_WHIP; - const fetchAnimAndResolve = (move: Moves) => { + const fetchAnimAndResolve = (move: MoveId) => { globalScene .cachedFetch(`./battle-anims/${animationFileName(move)}.json`) .then(response => { @@ -594,7 +594,7 @@ export function initMoveAnim(move: Moves): Promise { * @param move the move to populate an animation for * @param defaultMoveAnim the move to use as the default animation */ -function useDefaultAnim(move: Moves, defaultMoveAnim: Moves) { +function useDefaultAnim(move: MoveId, defaultMoveAnim: MoveId) { populateMoveAnim(move, moveAnims.get(defaultMoveAnim)); } @@ -606,7 +606,7 @@ function useDefaultAnim(move: Moves, defaultMoveAnim: Moves) { * * @remarks use {@linkcode useDefaultAnim} to use a default animation */ -function logMissingMoveAnim(move: Moves, ...optionalParams: any[]) { +function logMissingMoveAnim(move: MoveId, ...optionalParams: any[]) { const moveName = animationFileName(move); console.warn(`Could not load animation file for move '${moveName}'`, ...optionalParams); } @@ -664,7 +664,7 @@ export function initMoveChargeAnim(chargeAnim: ChargeAnim): Promise { }); } -function populateMoveAnim(move: Moves, animSource: any): void { +function populateMoveAnim(move: MoveId, animSource: any): void { const moveAnim = new AnimConfig(animSource); if (moveAnims.get(move) === null) { moveAnims.set(move, moveAnim); @@ -697,7 +697,7 @@ export async function loadEncounterAnimAssets(startLoad?: boolean): Promise { +export function loadMoveAnimAssets(moveIds: MoveId[], startLoad?: boolean): Promise { return new Promise(resolve => { const moveAnimations = moveIds.flatMap(m => moveAnims.get(m) as AnimConfig); for (const moveId of moveIds) { @@ -1425,9 +1425,9 @@ export class CommonBattleAnim extends BattleAnim { } export class MoveAnim extends BattleAnim { - public move: Moves; + public move: MoveId; - constructor(move: Moves, user: Pokemon, target: BattlerIndex, playOnEmptyField = false) { + constructor(move: MoveId, user: Pokemon, target: BattlerIndex, playOnEmptyField = false) { // Set target to the user pokemon if no target is found to avoid crashes super(user, globalScene.getField()[target] ?? user, playOnEmptyField); @@ -1456,7 +1456,7 @@ export class MoveAnim extends BattleAnim { export class MoveChargeAnim extends MoveAnim { private chargeAnim: ChargeAnim; - constructor(chargeAnim: ChargeAnim, move: Moves, user: Pokemon) { + constructor(chargeAnim: ChargeAnim, move: MoveId, user: Pokemon) { super(move, user, 0); this.chargeAnim = chargeAnim; @@ -1502,8 +1502,8 @@ export async function populateAnims() { const chargeAnimIds = getEnumValues(ChargeAnim) as ChargeAnim[]; const commonNamePattern = /name: (?:Common:)?(Opp )?(.*)/; const moveNameToId = {}; - for (const move of getEnumValues(Moves).slice(1)) { - const moveName = Moves[move].toUpperCase().replace(/\_/g, ""); + for (const move of getEnumValues(MoveId).slice(1)) { + const moveName = MoveId[move].toUpperCase().replace(/\_/g, ""); moveNameToId[moveName] = move; } diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index c284fcd5130..4f263fc152b 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -35,11 +35,11 @@ import type { StatStageChangeCallback } from "#app/phases/stat-stage-change-phas import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import i18next from "#app/plugins/i18n"; import { BooleanHolder, getFrameMs, NumberHolder, toDmgValue } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { PokemonAnimType } from "#enums/pokemon-anim-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { EFFECTIVE_STATS, getStatKey, Stat, type BattleStat, type EffectiveStat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; @@ -62,7 +62,7 @@ export class BattlerTag { public tagType: BattlerTagType; public lapseTypes: BattlerTagLapseType[]; public turnCount: number; - public sourceMove: Moves; + public sourceMove: MoveId; public sourceId?: number; public isBatonPassable: boolean; @@ -70,7 +70,7 @@ export class BattlerTag { tagType: BattlerTagType, lapseType: BattlerTagLapseType | BattlerTagLapseType[], turnCount: number, - sourceMove?: Moves, + sourceMove?: MoveId, sourceId?: number, isBatonPassable = false, ) { @@ -143,7 +143,7 @@ export interface TerrainBattlerTag { /** * Base class for tags that restrict the usage of moves. This effect is generally referred to as "disabling" a move - * in-game. This is not to be confused with {@linkcode Moves.DISABLE}. + * in-game. This is not to be confused with {@linkcode MoveId.DISABLE}. * * Descendants can override {@linkcode isMoveRestricted} to restrict moves that * match a condition. A restricted move gets cancelled before it is used. @@ -154,7 +154,7 @@ export abstract class MoveRestrictionBattlerTag extends BattlerTag { tagType: BattlerTagType, lapseType: BattlerTagLapseType | BattlerTagLapseType[], turnCount: number, - sourceMove?: Moves, + sourceMove?: MoveId, sourceId?: number, ) { super(tagType, lapseType, turnCount, sourceMove, sourceId); @@ -183,21 +183,21 @@ export abstract class MoveRestrictionBattlerTag extends BattlerTag { /** * Gets whether this tag is restricting a move. * - * @param move - {@linkcode Moves} ID to check restriction for. + * @param move - {@linkcode MoveId} ID to check restriction for. * @param user - The {@linkcode Pokemon} involved * @returns `true` if the move is restricted by this tag, otherwise `false`. */ - public abstract isMoveRestricted(move: Moves, user?: Pokemon): boolean; + public abstract isMoveRestricted(move: MoveId, user?: Pokemon): boolean; /** * Checks if this tag is restricting a move based on a user's decisions during the target selection phase * - * @param {Moves} _move {@linkcode Moves} move ID to check restriction for + * @param {MoveId} _move {@linkcode MoveId} move ID to check restriction for * @param {Pokemon} _user {@linkcode Pokemon} the user of the above move * @param {Pokemon} _target {@linkcode Pokemon} the target of the above move * @returns {boolean} `false` unless overridden by the child tag */ - isMoveTargetRestricted(_move: Moves, _user: Pokemon, _target: Pokemon): boolean { + isMoveTargetRestricted(_move: MoveId, _user: Pokemon, _target: Pokemon): boolean { return false; } @@ -205,10 +205,10 @@ export abstract class MoveRestrictionBattlerTag extends BattlerTag { * Gets the text to display when the player attempts to select a move that is restricted by this tag. * * @param {Pokemon} pokemon {@linkcode Pokemon} for which the player is attempting to select the restricted move - * @param {Moves} move {@linkcode Moves} ID of the move that is having its selection denied + * @param {MoveId} move {@linkcode MoveId} ID of the move that is having its selection denied * @returns {string} text to display when the player attempts to select the restricted move */ - abstract selectionDeniedText(pokemon: Pokemon, move: Moves): string; + abstract selectionDeniedText(pokemon: Pokemon, move: MoveId): string; /** * Gets the text to display when a move's execution is prevented as a result of the restriction. @@ -216,10 +216,10 @@ export abstract class MoveRestrictionBattlerTag extends BattlerTag { * pokemon first selects a move, then gets outsped by a pokemon using a move that restricts the selected move. * * @param {Pokemon} _pokemon {@linkcode Pokemon} attempting to use the restricted move - * @param {Moves} _move {@linkcode Moves} ID of the move being interrupted + * @param {MoveId} _move {@linkcode MoveId} ID of the move being interrupted * @returns {string} text to display when the move is interrupted */ - interruptedText(_pokemon: Pokemon, _move: Moves): string { + interruptedText(_pokemon: Pokemon, _move: MoveId): string { return ""; } } @@ -235,17 +235,17 @@ export class ThroatChoppedTag extends MoveRestrictionBattlerTag { BattlerTagType.THROAT_CHOPPED, [BattlerTagLapseType.TURN_END, BattlerTagLapseType.PRE_MOVE], 2, - Moves.THROAT_CHOP, + MoveId.THROAT_CHOP, ); } /** - * Checks if a {@linkcode Moves | move} is restricted by Throat Chop. + * Checks if a {@linkcode MoveId | move} is restricted by Throat Chop. * @override - * @param {Moves} move the {@linkcode Moves | move} to check for sound-based restriction + * @param {MoveId} move the {@linkcode MoveId | move} to check for sound-based restriction * @returns true if the move is sound-based */ - override isMoveRestricted(move: Moves): boolean { + override isMoveRestricted(move: MoveId): boolean { return allMoves[move].hasFlag(MoveFlags.SOUND_BASED); } @@ -253,10 +253,10 @@ export class ThroatChoppedTag extends MoveRestrictionBattlerTag { * Shows a message when the player attempts to select a move that is restricted by Throat Chop. * @override * @param {Pokemon} _pokemon the {@linkcode Pokemon} that is attempting to select the restricted move - * @param {Moves} move the {@linkcode Moves | move} that is being restricted + * @param {MoveId} move the {@linkcode MoveId | move} that is being restricted * @returns the message to display when the player attempts to select the restricted move */ - override selectionDeniedText(_pokemon: Pokemon, move: Moves): string { + override selectionDeniedText(_pokemon: Pokemon, move: MoveId): string { return i18next.t("battle:moveCannotBeSelected", { moveName: allMoves[move].name, }); @@ -266,10 +266,10 @@ export class ThroatChoppedTag extends MoveRestrictionBattlerTag { * Shows a message when a move is interrupted by Throat Chop. * @override * @param {Pokemon} pokemon the interrupted {@linkcode Pokemon} - * @param {Moves} _move the {@linkcode Moves | move} that was interrupted + * @param {MoveId} _move the {@linkcode MoveId | move} that was interrupted * @returns the message to display when the move is interrupted */ - override interruptedText(pokemon: Pokemon, _move: Moves): string { + override interruptedText(pokemon: Pokemon, _move: MoveId): string { return i18next.t("battle:throatChopInterruptedMove", { pokemonName: getPokemonNameWithAffix(pokemon), }); @@ -277,25 +277,25 @@ export class ThroatChoppedTag extends MoveRestrictionBattlerTag { } /** - * Tag representing the "disabling" effect performed by {@linkcode Moves.DISABLE} and {@linkcode Abilities.CURSED_BODY}. + * Tag representing the "disabling" effect performed by {@linkcode MoveId.DISABLE} and {@linkcode AbilityId.CURSED_BODY}. * When the tag is added, the last-used move of the tag holder is set as the disabled move. */ export class DisabledTag extends MoveRestrictionBattlerTag { /** The move being disabled. Gets set when {@linkcode onAdd} is called for this tag. */ - private moveId: Moves = Moves.NONE; + private moveId: MoveId = MoveId.NONE; constructor(sourceId: number) { super( BattlerTagType.DISABLED, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.TURN_END], 4, - Moves.DISABLE, + MoveId.DISABLE, sourceId, ); } /** @override */ - override isMoveRestricted(move: Moves): boolean { + override isMoveRestricted(move: MoveId): boolean { return move === this.moveId; } @@ -309,7 +309,7 @@ export class DisabledTag extends MoveRestrictionBattlerTag { super.onAdd(pokemon); const move = pokemon.getLastXMoves(-1).find(m => !m.virtual); - if (isNullOrUndefined(move) || move.move === Moves.STRUGGLE || move.move === Moves.NONE) { + if (isNullOrUndefined(move) || move.move === MoveId.STRUGGLE || move.move === MoveId.NONE) { return; } @@ -336,17 +336,17 @@ export class DisabledTag extends MoveRestrictionBattlerTag { } /** @override */ - override selectionDeniedText(_pokemon: Pokemon, move: Moves): string { + override selectionDeniedText(_pokemon: Pokemon, move: MoveId): string { return i18next.t("battle:moveDisabled", { moveName: allMoves[move].name }); } /** * @override * @param {Pokemon} pokemon {@linkcode Pokemon} attempting to use the restricted move - * @param {Moves} move {@linkcode Moves} ID of the move being interrupted + * @param {MoveId} move {@linkcode MoveId} ID of the move being interrupted * @returns {string} text to display when the move is interrupted */ - override interruptedText(pokemon: Pokemon, move: Moves): string { + override interruptedText(pokemon: Pokemon, move: MoveId): string { return i18next.t("battle:disableInterruptedMove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[move].name, @@ -365,14 +365,14 @@ export class DisabledTag extends MoveRestrictionBattlerTag { * @extends MoveRestrictionBattlerTag */ export class GorillaTacticsTag extends MoveRestrictionBattlerTag { - private moveId = Moves.NONE; + private moveId = MoveId.NONE; constructor() { super(BattlerTagType.GORILLA_TACTICS, BattlerTagLapseType.CUSTOM, 0); } /** @override */ - override isMoveRestricted(move: Moves): boolean { + override isMoveRestricted(move: MoveId): boolean { return move !== this.moveId; } @@ -416,10 +416,10 @@ export class GorillaTacticsTag extends MoveRestrictionBattlerTag { * * @override * @param {Pokemon} pokemon n/a - * @param {Moves} _move {@linkcode Moves} ID of the move being denied + * @param {MoveId} _move {@linkcode MoveId} ID of the move being denied * @returns {string} text to display when the move is denied */ - override selectionDeniedText(pokemon: Pokemon, _move: Moves): string { + override selectionDeniedText(pokemon: Pokemon, _move: MoveId): string { return i18next.t("battle:canOnlyUseMove", { moveName: allMoves[this.moveId].name, pokemonName: getPokemonNameWithAffix(pokemon), @@ -429,10 +429,10 @@ export class GorillaTacticsTag extends MoveRestrictionBattlerTag { /** * Gets the last valid move from the pokemon's move history. * @param {Pokemon} pokemon {@linkcode Pokemon} to get the last valid move from - * @returns {Moves | undefined} the last valid move from the pokemon's move history + * @returns {MoveId | undefined} the last valid move from the pokemon's move history */ - getLastValidMove(pokemon: Pokemon): Moves | undefined { - const move = pokemon.getLastXMoves().find(m => m.move !== Moves.NONE && m.move !== Moves.STRUGGLE && !m.virtual); + getLastValidMove(pokemon: Pokemon): MoveId | undefined { + const move = pokemon.getLastXMoves().find(m => m.move !== MoveId.NONE && m.move !== MoveId.STRUGGLE && !m.virtual); return move?.move; } @@ -442,7 +442,7 @@ export class GorillaTacticsTag extends MoveRestrictionBattlerTag { * BattlerTag that represents the "recharge" effects of moves like Hyper Beam. */ export class RechargingTag extends BattlerTag { - constructor(sourceMove: Moves) { + constructor(sourceMove: MoveId) { super(BattlerTagType.RECHARGING, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.TURN_END], 2, sourceMove); } @@ -450,7 +450,7 @@ export class RechargingTag extends BattlerTag { super.onAdd(pokemon); // Queue a placeholder move for the Pokemon to "use" next turn - pokemon.getMoveQueue().push({ move: Moves.NONE, targets: [] }); + pokemon.getMoveQueue().push({ move: MoveId.NONE, targets: [] }); } /** Cancels the source's move this turn and queues a "__ must recharge!" message */ @@ -479,7 +479,7 @@ export class BeakBlastChargingTag extends BattlerTag { BattlerTagType.BEAK_BLAST_CHARGING, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.TURN_END, BattlerTagLapseType.AFTER_HIT], 1, - Moves.BEAK_BLAST, + MoveId.BEAK_BLAST, ); } @@ -578,7 +578,7 @@ export class TrappedTag extends BattlerTag { tagType: BattlerTagType, lapseType: BattlerTagLapseType, turnCount: number, - sourceMove: Moves, + sourceMove: MoveId, sourceId: number, ) { super(tagType, lapseType, turnCount, sourceMove, sourceId, true); @@ -635,7 +635,7 @@ export class TrappedTag extends BattlerTag { */ class NoRetreatTag extends TrappedTag { constructor(sourceId: number) { - super(BattlerTagType.NO_RETREAT, BattlerTagLapseType.CUSTOM, 0, Moves.NO_RETREAT, sourceId); + super(BattlerTagType.NO_RETREAT, BattlerTagLapseType.CUSTOM, 0, MoveId.NO_RETREAT, sourceId); } /** overrides {@linkcode TrappedTag.apply}, removing the Ghost-type condition */ @@ -648,7 +648,7 @@ class NoRetreatTag extends TrappedTag { * BattlerTag that represents the {@link https://bulbapedia.bulbagarden.net/wiki/Flinch Flinch} status condition */ export class FlinchedTag extends BattlerTag { - constructor(sourceMove: Moves) { + constructor(sourceMove: MoveId) { super(BattlerTagType.FLINCHED, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.TURN_END], 0, sourceMove); } @@ -683,7 +683,7 @@ export class FlinchedTag extends BattlerTag { } export class InterruptedTag extends BattlerTag { - constructor(sourceMove: Moves) { + constructor(sourceMove: MoveId) { super(BattlerTagType.INTERRUPTED, BattlerTagLapseType.PRE_MOVE, 0, sourceMove); } @@ -696,7 +696,7 @@ export class InterruptedTag extends BattlerTag { pokemon.getMoveQueue().shift(); pokemon.pushMoveHistory({ - move: Moves.NONE, + move: MoveId.NONE, result: MoveResult.OTHER, targets: [], }); @@ -712,7 +712,7 @@ export class InterruptedTag extends BattlerTag { * BattlerTag that represents the {@link https://bulbapedia.bulbagarden.net/wiki/Confusion_(status_condition) Confusion} status condition */ export class ConfusedTag extends BattlerTag { - constructor(turnCount: number, sourceMove: Moves) { + constructor(turnCount: number, sourceMove: MoveId) { super(BattlerTagType.CONFUSED, BattlerTagLapseType.MOVE, turnCount, sourceMove, undefined, true); } @@ -792,7 +792,7 @@ export class ConfusedTag extends BattlerTag { * @see {@linkcode apply} */ export class DestinyBondTag extends BattlerTag { - constructor(sourceMove: Moves, sourceId: number) { + constructor(sourceMove: MoveId, sourceId: number) { super(BattlerTagType.DESTINY_BOND, BattlerTagLapseType.PRE_MOVE, 1, sourceMove, sourceId, true); } @@ -926,7 +926,7 @@ export class SeedTag extends BattlerTag { private sourceIndex: number; constructor(sourceId: number) { - super(BattlerTagType.SEEDED, BattlerTagLapseType.TURN_END, 1, Moves.LEECH_SEED, sourceId, true); + super(BattlerTagType.SEEDED, BattlerTagLapseType.TURN_END, 1, MoveId.LEECH_SEED, sourceId, true); } /** @@ -1059,7 +1059,7 @@ export class PowderTag extends BattlerTag { export class NightmareTag extends BattlerTag { constructor() { - super(BattlerTagType.NIGHTMARE, BattlerTagLapseType.TURN_END, 1, Moves.NIGHTMARE); + super(BattlerTagType.NIGHTMARE, BattlerTagLapseType.TURN_END, 1, MoveId.NIGHTMARE); } onAdd(pokemon: Pokemon): void { @@ -1110,7 +1110,7 @@ export class NightmareTag extends BattlerTag { } export class FrenzyTag extends BattlerTag { - constructor(turnCount: number, sourceMove: Moves, sourceId: number) { + constructor(turnCount: number, sourceMove: MoveId, sourceId: number) { super(BattlerTagType.FRENZY, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId); } @@ -1125,25 +1125,25 @@ export class FrenzyTag extends BattlerTag { } /** - * Applies the effects of {@linkcode Moves.ENCORE} onto the target Pokemon. + * Applies the effects of {@linkcode MoveId.ENCORE} onto the target Pokemon. * Encore forces the target Pokemon to use its most-recent move for 3 turns. */ export class EncoreTag extends MoveRestrictionBattlerTag { - public moveId: Moves; + public moveId: MoveId; constructor(sourceId: number) { super( BattlerTagType.ENCORE, [BattlerTagLapseType.CUSTOM, BattlerTagLapseType.AFTER_MOVE], 3, - Moves.ENCORE, + MoveId.ENCORE, sourceId, ); } loadTag(source: BattlerTag | any): void { super.loadTag(source); - this.moveId = source.moveId as Moves; + this.moveId = source.moveId as MoveId; } canAdd(pokemon: Pokemon): boolean { @@ -1159,13 +1159,13 @@ export class EncoreTag extends MoveRestrictionBattlerTag { } switch (repeatableMove.move) { - case Moves.MIMIC: - case Moves.MIRROR_MOVE: - case Moves.TRANSFORM: - case Moves.STRUGGLE: - case Moves.SKETCH: - case Moves.SLEEP_TALK: - case Moves.ENCORE: + case MoveId.MIMIC: + case MoveId.MIRROR_MOVE: + case MoveId.TRANSFORM: + case MoveId.STRUGGLE: + case MoveId.SKETCH: + case MoveId.SLEEP_TALK: + case MoveId.ENCORE: return false; } @@ -1213,18 +1213,18 @@ export class EncoreTag extends MoveRestrictionBattlerTag { /** * Checks if the move matches the moveId stored within the tag and returns a boolean value - * @param move {@linkcode Moves} the move selected + * @param move {@linkcode MoveId} the move selected * @param user N/A * @returns `true` if the move does not match with the moveId stored and as a result, restricted */ - override isMoveRestricted(move: Moves, _user?: Pokemon): boolean { + override isMoveRestricted(move: MoveId, _user?: Pokemon): boolean { if (move !== this.moveId) { return true; } return false; } - override selectionDeniedText(_pokemon: Pokemon, move: Moves): string { + override selectionDeniedText(_pokemon: Pokemon, move: MoveId): string { return i18next.t("battle:moveDisabled", { moveName: allMoves[move].name }); } @@ -1241,7 +1241,7 @@ export class EncoreTag extends MoveRestrictionBattlerTag { export class HelpingHandTag extends BattlerTag { constructor(sourceId: number) { - super(BattlerTagType.HELPING_HAND, BattlerTagLapseType.TURN_END, 1, Moves.HELPING_HAND, sourceId); + super(BattlerTagType.HELPING_HAND, BattlerTagLapseType.TURN_END, 1, MoveId.HELPING_HAND, sourceId); } onAdd(pokemon: Pokemon): void { @@ -1260,7 +1260,7 @@ export class HelpingHandTag extends BattlerTag { */ export class IngrainTag extends TrappedTag { constructor(sourceId: number) { - super(BattlerTagType.INGRAIN, BattlerTagLapseType.TURN_END, 1, Moves.INGRAIN, sourceId); + super(BattlerTagType.INGRAIN, BattlerTagLapseType.TURN_END, 1, MoveId.INGRAIN, sourceId); } /** @@ -1310,7 +1310,7 @@ export class IngrainTag extends TrappedTag { */ export class OctolockTag extends TrappedTag { constructor(sourceId: number) { - super(BattlerTagType.OCTOLOCK, BattlerTagLapseType.TURN_END, 1, Moves.OCTOLOCK, sourceId); + super(BattlerTagType.OCTOLOCK, BattlerTagLapseType.TURN_END, 1, MoveId.OCTOLOCK, sourceId); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -1327,7 +1327,7 @@ export class OctolockTag extends TrappedTag { export class AquaRingTag extends BattlerTag { constructor() { - super(BattlerTagType.AQUA_RING, BattlerTagLapseType.TURN_END, 1, Moves.AQUA_RING, undefined, true); + super(BattlerTagType.AQUA_RING, BattlerTagLapseType.TURN_END, 1, MoveId.AQUA_RING, undefined, true); } onAdd(pokemon: Pokemon): void { @@ -1361,10 +1361,10 @@ export class AquaRingTag extends BattlerTag { } } -/** Tag used to allow moves that interact with {@link Moves.MINIMIZE} to function */ +/** Tag used to allow moves that interact with {@link MoveId.MINIMIZE} to function */ export class MinimizeTag extends BattlerTag { constructor() { - super(BattlerTagType.MINIMIZED, BattlerTagLapseType.TURN_END, 1, Moves.MINIMIZE); + super(BattlerTagType.MINIMIZED, BattlerTagLapseType.TURN_END, 1, MoveId.MINIMIZE); } onAdd(pokemon: Pokemon): void { @@ -1382,7 +1382,7 @@ export class MinimizeTag extends BattlerTag { export class DrowsyTag extends BattlerTag { constructor() { - super(BattlerTagType.DROWSY, BattlerTagLapseType.TURN_END, 2, Moves.YAWN); + super(BattlerTagType.DROWSY, BattlerTagLapseType.TURN_END, 2, MoveId.YAWN); } canAdd(pokemon: Pokemon): boolean { @@ -1416,7 +1416,13 @@ export class DrowsyTag extends BattlerTag { export abstract class DamagingTrapTag extends TrappedTag { private commonAnim: CommonAnim; - constructor(tagType: BattlerTagType, commonAnim: CommonAnim, turnCount: number, sourceMove: Moves, sourceId: number) { + constructor( + tagType: BattlerTagType, + commonAnim: CommonAnim, + turnCount: number, + sourceMove: MoveId, + sourceId: number, + ) { super(tagType, BattlerTagLapseType.TURN_END, turnCount, sourceMove, sourceId); this.commonAnim = commonAnim; @@ -1461,7 +1467,7 @@ export abstract class DamagingTrapTag extends TrappedTag { export class BindTag extends DamagingTrapTag { constructor(turnCount: number, sourceId: number) { - super(BattlerTagType.BIND, CommonAnim.BIND, turnCount, Moves.BIND, sourceId); + super(BattlerTagType.BIND, CommonAnim.BIND, turnCount, MoveId.BIND, sourceId); } getTrapMessage(pokemon: Pokemon): string { @@ -1475,7 +1481,7 @@ export class BindTag extends DamagingTrapTag { export class WrapTag extends DamagingTrapTag { constructor(turnCount: number, sourceId: number) { - super(BattlerTagType.WRAP, CommonAnim.WRAP, turnCount, Moves.WRAP, sourceId); + super(BattlerTagType.WRAP, CommonAnim.WRAP, turnCount, MoveId.WRAP, sourceId); } getTrapMessage(pokemon: Pokemon): string { @@ -1487,7 +1493,13 @@ export class WrapTag extends DamagingTrapTag { } export abstract class VortexTrapTag extends DamagingTrapTag { - constructor(tagType: BattlerTagType, commonAnim: CommonAnim, turnCount: number, sourceMove: Moves, sourceId: number) { + constructor( + tagType: BattlerTagType, + commonAnim: CommonAnim, + turnCount: number, + sourceMove: MoveId, + sourceId: number, + ) { super(tagType, commonAnim, turnCount, sourceMove, sourceId); } @@ -1500,19 +1512,19 @@ export abstract class VortexTrapTag extends DamagingTrapTag { export class FireSpinTag extends VortexTrapTag { constructor(turnCount: number, sourceId: number) { - super(BattlerTagType.FIRE_SPIN, CommonAnim.FIRE_SPIN, turnCount, Moves.FIRE_SPIN, sourceId); + super(BattlerTagType.FIRE_SPIN, CommonAnim.FIRE_SPIN, turnCount, MoveId.FIRE_SPIN, sourceId); } } export class WhirlpoolTag extends VortexTrapTag { constructor(turnCount: number, sourceId: number) { - super(BattlerTagType.WHIRLPOOL, CommonAnim.WHIRLPOOL, turnCount, Moves.WHIRLPOOL, sourceId); + super(BattlerTagType.WHIRLPOOL, CommonAnim.WHIRLPOOL, turnCount, MoveId.WHIRLPOOL, sourceId); } } export class ClampTag extends DamagingTrapTag { constructor(turnCount: number, sourceId: number) { - super(BattlerTagType.CLAMP, CommonAnim.CLAMP, turnCount, Moves.CLAMP, sourceId); + super(BattlerTagType.CLAMP, CommonAnim.CLAMP, turnCount, MoveId.CLAMP, sourceId); } getTrapMessage(pokemon: Pokemon): string { @@ -1525,7 +1537,7 @@ export class ClampTag extends DamagingTrapTag { export class SandTombTag extends DamagingTrapTag { constructor(turnCount: number, sourceId: number) { - super(BattlerTagType.SAND_TOMB, CommonAnim.SAND_TOMB, turnCount, Moves.SAND_TOMB, sourceId); + super(BattlerTagType.SAND_TOMB, CommonAnim.SAND_TOMB, turnCount, MoveId.SAND_TOMB, sourceId); } getTrapMessage(pokemon: Pokemon): string { @@ -1538,7 +1550,7 @@ export class SandTombTag extends DamagingTrapTag { export class MagmaStormTag extends DamagingTrapTag { constructor(turnCount: number, sourceId: number) { - super(BattlerTagType.MAGMA_STORM, CommonAnim.MAGMA_STORM, turnCount, Moves.MAGMA_STORM, sourceId); + super(BattlerTagType.MAGMA_STORM, CommonAnim.MAGMA_STORM, turnCount, MoveId.MAGMA_STORM, sourceId); } getTrapMessage(pokemon: Pokemon): string { @@ -1550,7 +1562,7 @@ export class MagmaStormTag extends DamagingTrapTag { export class SnapTrapTag extends DamagingTrapTag { constructor(turnCount: number, sourceId: number) { - super(BattlerTagType.SNAP_TRAP, CommonAnim.SNAP_TRAP, turnCount, Moves.SNAP_TRAP, sourceId); + super(BattlerTagType.SNAP_TRAP, CommonAnim.SNAP_TRAP, turnCount, MoveId.SNAP_TRAP, sourceId); } getTrapMessage(pokemon: Pokemon): string { @@ -1562,7 +1574,7 @@ export class SnapTrapTag extends DamagingTrapTag { export class ThunderCageTag extends DamagingTrapTag { constructor(turnCount: number, sourceId: number) { - super(BattlerTagType.THUNDER_CAGE, CommonAnim.THUNDER_CAGE, turnCount, Moves.THUNDER_CAGE, sourceId); + super(BattlerTagType.THUNDER_CAGE, CommonAnim.THUNDER_CAGE, turnCount, MoveId.THUNDER_CAGE, sourceId); } getTrapMessage(pokemon: Pokemon): string { @@ -1575,7 +1587,7 @@ export class ThunderCageTag extends DamagingTrapTag { export class InfestationTag extends DamagingTrapTag { constructor(turnCount: number, sourceId: number) { - super(BattlerTagType.INFESTATION, CommonAnim.INFESTATION, turnCount, Moves.INFESTATION, sourceId); + super(BattlerTagType.INFESTATION, CommonAnim.INFESTATION, turnCount, MoveId.INFESTATION, sourceId); } getTrapMessage(pokemon: Pokemon): string { @@ -1587,7 +1599,7 @@ export class InfestationTag extends DamagingTrapTag { } export class ProtectedTag extends BattlerTag { - constructor(sourceMove: Moves, tagType: BattlerTagType = BattlerTagType.PROTECTED) { + constructor(sourceMove: MoveId, tagType: BattlerTagType = BattlerTagType.PROTECTED) { super(tagType, BattlerTagLapseType.TURN_END, 0, sourceMove); } @@ -1659,12 +1671,12 @@ export class ContactProtectedTag extends ProtectedTag { /** * `BattlerTag` class for moves that block damaging moves damage the enemy if the enemy's move makes contact - * Used by {@linkcode Moves.SPIKY_SHIELD} + * Used by {@linkcode MoveId.SPIKY_SHIELD} */ export class ContactDamageProtectedTag extends ContactProtectedTag { private damageRatio: number; - constructor(sourceMove: Moves, damageRatio: number) { + constructor(sourceMove: MoveId, damageRatio: number) { super(sourceMove, BattlerTagType.SPIKY_SHIELD); this.damageRatio = damageRatio; } @@ -1704,7 +1716,7 @@ export class ContactSetStatusProtectedTag extends DamageProtectedTag { * @param statusEffect The status effect to apply to the attacker */ constructor( - sourceMove: Moves, + sourceMove: MoveId, tagType: BattlerTagType, private statusEffect: StatusEffect, ) { @@ -1723,13 +1735,13 @@ export class ContactSetStatusProtectedTag extends DamageProtectedTag { /** * `BattlerTag` class for moves that block damaging moves and lower enemy stats if the enemy's move makes contact - * Used by {@linkcode Moves.KINGS_SHIELD}, {@linkcode Moves.OBSTRUCT}, {@linkcode Moves.SILK_TRAP} + * Used by {@linkcode MoveId.KINGS_SHIELD}, {@linkcode MoveId.OBSTRUCT}, {@linkcode MoveId.SILK_TRAP} */ export class ContactStatStageChangeProtectedTag extends DamageProtectedTag { private stat: BattleStat; private levels: number; - constructor(sourceMove: Moves, tagType: BattlerTagType, stat: BattleStat, levels: number) { + constructor(sourceMove: MoveId, tagType: BattlerTagType, stat: BattleStat, levels: number) { super(sourceMove, tagType); this.stat = stat; @@ -1762,7 +1774,7 @@ export class ContactStatStageChangeProtectedTag extends DamageProtectedTag { * Endure Tokens. */ export class EnduringTag extends BattlerTag { - constructor(tagType: BattlerTagType, lapseType: BattlerTagLapseType, sourceMove: Moves) { + constructor(tagType: BattlerTagType, lapseType: BattlerTagLapseType, sourceMove: MoveId) { super(tagType, lapseType, 0, sourceMove); } @@ -1791,7 +1803,7 @@ export class EnduringTag extends BattlerTag { } export class SturdyTag extends BattlerTag { - constructor(sourceMove: Moves) { + constructor(sourceMove: MoveId) { super(BattlerTagType.STURDY, BattlerTagLapseType.TURN_END, 0, sourceMove); } @@ -1811,7 +1823,7 @@ export class SturdyTag extends BattlerTag { export class PerishSongTag extends BattlerTag { constructor(turnCount: number) { - super(BattlerTagType.PERISH_SONG, BattlerTagLapseType.TURN_END, turnCount, Moves.PERISH_SONG, undefined, true); + super(BattlerTagType.PERISH_SONG, BattlerTagLapseType.TURN_END, turnCount, MoveId.PERISH_SONG, undefined, true); } canAdd(pokemon: Pokemon): boolean { @@ -1843,10 +1855,10 @@ export class PerishSongTag extends BattlerTag { export class CenterOfAttentionTag extends BattlerTag { public powder: boolean; - constructor(sourceMove: Moves) { + constructor(sourceMove: MoveId) { super(BattlerTagType.CENTER_OF_ATTENTION, BattlerTagLapseType.TURN_END, 1, sourceMove); - this.powder = this.sourceMove === Moves.RAGE_POWDER; + this.powder = this.sourceMove === MoveId.RAGE_POWDER; } /** "Center of Attention" can't be added if an ally is already the Center of Attention. */ @@ -1868,9 +1880,9 @@ export class CenterOfAttentionTag extends BattlerTag { } export class AbilityBattlerTag extends BattlerTag { - public ability: Abilities; + public ability: AbilityId; - constructor(tagType: BattlerTagType, ability: Abilities, lapseType: BattlerTagLapseType, turnCount: number) { + constructor(tagType: BattlerTagType, ability: AbilityId, lapseType: BattlerTagLapseType, turnCount: number) { super(tagType, lapseType, turnCount); this.ability = ability; @@ -1882,7 +1894,7 @@ export class AbilityBattlerTag extends BattlerTag { */ loadTag(source: BattlerTag | any): void { super.loadTag(source); - this.ability = source.ability as Abilities; + this.ability = source.ability as AbilityId; } } @@ -1892,7 +1904,7 @@ export class AbilityBattlerTag extends BattlerTag { */ export class UnburdenTag extends AbilityBattlerTag { constructor() { - super(BattlerTagType.UNBURDEN, Abilities.UNBURDEN, BattlerTagLapseType.CUSTOM, 1); + super(BattlerTagType.UNBURDEN, AbilityId.UNBURDEN, BattlerTagLapseType.CUSTOM, 1); } onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); @@ -1904,18 +1916,18 @@ export class UnburdenTag extends AbilityBattlerTag { export class TruantTag extends AbilityBattlerTag { constructor() { - super(BattlerTagType.TRUANT, Abilities.TRUANT, BattlerTagLapseType.MOVE, 1); + super(BattlerTagType.TRUANT, AbilityId.TRUANT, BattlerTagLapseType.MOVE, 1); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { - if (!pokemon.hasAbility(Abilities.TRUANT)) { + if (!pokemon.hasAbility(AbilityId.TRUANT)) { return super.lapse(pokemon, lapseType); } - const passive = pokemon.getAbility().id !== Abilities.TRUANT; + const passive = pokemon.getAbility().id !== AbilityId.TRUANT; const lastMove = pokemon.getLastXMoves().find(() => true); - if (lastMove && lastMove.move !== Moves.NONE) { + if (lastMove && lastMove.move !== MoveId.NONE) { (globalScene.getCurrentPhase() as MovePhase).cancel(); // TODO: Ability displays should be handled by the ability globalScene.queueAbilityDisplay(pokemon, passive, true); @@ -1933,7 +1945,7 @@ export class TruantTag extends AbilityBattlerTag { export class SlowStartTag extends AbilityBattlerTag { constructor() { - super(BattlerTagType.SLOW_START, Abilities.SLOW_START, BattlerTagLapseType.TURN_END, 5); + super(BattlerTagType.SLOW_START, AbilityId.SLOW_START, BattlerTagLapseType.TURN_END, 5); } onAdd(pokemon: Pokemon): void { @@ -1972,7 +1984,7 @@ export class HighestStatBoostTag extends AbilityBattlerTag { public stat: Stat; public multiplier: number; - constructor(tagType: BattlerTagType, ability: Abilities) { + constructor(tagType: BattlerTagType, ability: AbilityId) { super(tagType, ability, BattlerTagLapseType.CUSTOM, 1); } @@ -2031,7 +2043,7 @@ export class HighestStatBoostTag extends AbilityBattlerTag { export class WeatherHighestStatBoostTag extends HighestStatBoostTag implements WeatherBattlerTag { public weatherTypes: WeatherType[]; - constructor(tagType: BattlerTagType, ability: Abilities, ...weatherTypes: WeatherType[]) { + constructor(tagType: BattlerTagType, ability: AbilityId, ...weatherTypes: WeatherType[]) { super(tagType, ability); this.weatherTypes = weatherTypes; } @@ -2049,7 +2061,7 @@ export class WeatherHighestStatBoostTag extends HighestStatBoostTag implements W export class TerrainHighestStatBoostTag extends HighestStatBoostTag implements TerrainBattlerTag { public terrainTypes: TerrainType[]; - constructor(tagType: BattlerTagType, ability: Abilities, ...terrainTypes: TerrainType[]) { + constructor(tagType: BattlerTagType, ability: AbilityId, ...terrainTypes: TerrainType[]) { super(tagType, ability); this.terrainTypes = terrainTypes; } @@ -2065,7 +2077,7 @@ export class TerrainHighestStatBoostTag extends HighestStatBoostTag implements T } export class SemiInvulnerableTag extends BattlerTag { - constructor(tagType: BattlerTagType, turnCount: number, sourceMove: Moves) { + constructor(tagType: BattlerTagType, turnCount: number, sourceMove: MoveId) { super(tagType, BattlerTagLapseType.MOVE_EFFECT, turnCount, sourceMove); } @@ -2087,7 +2099,7 @@ export class SemiInvulnerableTag extends BattlerTag { export class TypeImmuneTag extends BattlerTag { public immuneType: PokemonType; - constructor(tagType: BattlerTagType, sourceMove: Moves, immuneType: PokemonType, length = 1) { + constructor(tagType: BattlerTagType, sourceMove: MoveId, immuneType: PokemonType, length = 1) { super(tagType, BattlerTagLapseType.TURN_END, length, sourceMove, undefined, true); this.immuneType = immuneType; @@ -2105,18 +2117,18 @@ export class TypeImmuneTag extends BattlerTag { /** * Battler Tag that lifts the affected Pokemon into the air and provides immunity to Ground type moves. - * @see {@link https://bulbapedia.bulbagarden.net/wiki/Magnet_Rise_(move) | Moves.MAGNET_RISE} - * @see {@link https://bulbapedia.bulbagarden.net/wiki/Telekinesis_(move) | Moves.TELEKINESIS} + * @see {@link https://bulbapedia.bulbagarden.net/wiki/Magnet_Rise_(move) | MoveId.MAGNET_RISE} + * @see {@link https://bulbapedia.bulbagarden.net/wiki/Telekinesis_(move) | MoveId.TELEKINESIS} */ export class FloatingTag extends TypeImmuneTag { - constructor(tagType: BattlerTagType, sourceMove: Moves, turnCount: number) { + constructor(tagType: BattlerTagType, sourceMove: MoveId, turnCount: number) { super(tagType, sourceMove, PokemonType.GROUND, turnCount); } onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - if (this.sourceMove === Moves.MAGNET_RISE) { + if (this.sourceMove === MoveId.MAGNET_RISE) { globalScene.queueMessage( i18next.t("battlerTags:magnetRisenOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), @@ -2127,7 +2139,7 @@ export class FloatingTag extends TypeImmuneTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - if (this.sourceMove === Moves.MAGNET_RISE) { + if (this.sourceMove === MoveId.MAGNET_RISE) { globalScene.queueMessage( i18next.t("battlerTags:magnetRisenOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), @@ -2144,7 +2156,7 @@ export class TypeBoostTag extends BattlerTag { constructor( tagType: BattlerTagType, - sourceMove: Moves, + sourceMove: MoveId, boostedType: PokemonType, boostValue: number, oneUse: boolean, @@ -2188,7 +2200,7 @@ export class TypeBoostTag extends BattlerTag { } export class CritBoostTag extends BattlerTag { - constructor(tagType: BattlerTagType, sourceMove: Moves) { + constructor(tagType: BattlerTagType, sourceMove: MoveId) { super(tagType, BattlerTagLapseType.TURN_END, 1, sourceMove, undefined, true); } @@ -2226,7 +2238,7 @@ export class DragonCheerTag extends CritBoostTag { public typesOnAdd: PokemonType[]; constructor() { - super(BattlerTagType.CRIT_BOOST, Moves.DRAGON_CHEER); + super(BattlerTagType.CRIT_BOOST, MoveId.DRAGON_CHEER); } onAdd(pokemon: Pokemon): void { @@ -2240,7 +2252,7 @@ export class SaltCuredTag extends BattlerTag { private sourceIndex: number; constructor(sourceId: number) { - super(BattlerTagType.SALT_CURED, BattlerTagLapseType.TURN_END, 1, Moves.SALT_CURE, sourceId); + super(BattlerTagType.SALT_CURED, BattlerTagLapseType.TURN_END, 1, MoveId.SALT_CURE, sourceId); } /** @@ -2297,7 +2309,7 @@ export class CursedTag extends BattlerTag { private sourceIndex: number; constructor(sourceId: number) { - super(BattlerTagType.CURSED, BattlerTagLapseType.TURN_END, 1, Moves.CURSE, sourceId, true); + super(BattlerTagType.CURSED, BattlerTagLapseType.TURN_END, 1, MoveId.CURSE, sourceId, true); } /** @@ -2342,7 +2354,7 @@ export class CursedTag extends BattlerTag { * Battler tag for attacks that remove a type post use. */ export class RemovedTypeTag extends BattlerTag { - constructor(tagType: BattlerTagType, lapseType: BattlerTagLapseType, sourceMove: Moves) { + constructor(tagType: BattlerTagType, lapseType: BattlerTagLapseType, sourceMove: MoveId) { super(tagType, lapseType, 1, sourceMove); } } @@ -2352,7 +2364,7 @@ export class RemovedTypeTag extends BattlerTag { * @description `IGNORE_FLYING`: Persistent grounding effects (i.e. from Smack Down and Thousand Waves) */ export class GroundedTag extends BattlerTag { - constructor(tagType: BattlerTagType, lapseType: BattlerTagLapseType, sourceMove: Moves) { + constructor(tagType: BattlerTagType, lapseType: BattlerTagLapseType, sourceMove: MoveId) { super(tagType, lapseType, 1, sourceMove); } } @@ -2367,7 +2379,7 @@ export class RoostedTag extends BattlerTag { private isBasePureFlying: boolean; constructor() { - super(BattlerTagType.ROOSTED, BattlerTagLapseType.TURN_END, 1, Moves.ROOST); + super(BattlerTagType.ROOSTED, BattlerTagLapseType.TURN_END, 1, MoveId.ROOST); } onRemove(pokemon: Pokemon): void { @@ -2485,7 +2497,7 @@ export class CommandedTag extends BattlerTag { private _tatsugiriFormKey: string; constructor(sourceId: number) { - super(BattlerTagType.COMMANDED, BattlerTagLapseType.CUSTOM, 0, Moves.NONE, sourceId); + super(BattlerTagType.COMMANDED, BattlerTagLapseType.CUSTOM, 0, MoveId.NONE, sourceId); } public get tatsugiriFormKey(): string { @@ -2535,7 +2547,7 @@ export class StockpilingTag extends BattlerTag { [Stat.SPDEF]: 0, }; - constructor(sourceMove: Moves = Moves.NONE) { + constructor(sourceMove: MoveId = MoveId.NONE) { super(BattlerTagType.STOCKPILING, BattlerTagLapseType.CUSTOM, 1, sourceMove); } @@ -2624,7 +2636,7 @@ export class StockpilingTag extends BattlerTag { * @extends BattlerTag */ export class GulpMissileTag extends BattlerTag { - constructor(tagType: BattlerTagType, sourceMove: Moves) { + constructor(tagType: BattlerTagType, sourceMove: MoveId) { super(tagType, BattlerTagLapseType.HIT, 0, sourceMove); } @@ -2667,12 +2679,12 @@ export class GulpMissileTag extends BattlerTag { * @returns Whether the BattlerTag can be added. */ canAdd(pokemon: Pokemon): boolean { - const isSurfOrDive = [Moves.SURF, Moves.DIVE].includes(this.sourceMove); + const isSurfOrDive = [MoveId.SURF, MoveId.DIVE].includes(this.sourceMove); const isNormalForm = pokemon.formIndex === 0 && !pokemon.getTag(BattlerTagType.GULP_MISSILE_ARROKUDA) && !pokemon.getTag(BattlerTagType.GULP_MISSILE_PIKACHU); - const isCramorant = pokemon.species.speciesId === Species.CRAMORANT; + const isCramorant = pokemon.species.speciesId === SpeciesId.CRAMORANT; return isSurfOrDive && isNormalForm && isCramorant; } @@ -2692,8 +2704,8 @@ export class GulpMissileTag extends BattlerTag { * Tag that makes the target drop all of it type immunities * and all accuracy checks ignore its evasiveness stat. * - * Applied by moves: {@linkcode Moves.ODOR_SLEUTH | Odor Sleuth}, - * {@linkcode Moves.MIRACLE_EYE | Miracle Eye} and {@linkcode Moves.FORESIGHT | Foresight}. + * Applied by moves: {@linkcode MoveId.ODOR_SLEUTH | Odor Sleuth}, + * {@linkcode MoveId.MIRACLE_EYE | Miracle Eye} and {@linkcode MoveId.FORESIGHT | Foresight}. * * @extends BattlerTag * @see {@linkcode ignoreImmunity} @@ -2702,7 +2714,7 @@ export class ExposedTag extends BattlerTag { private defenderType: PokemonType; private allowedTypes: PokemonType[]; - constructor(tagType: BattlerTagType, sourceMove: Moves, defenderType: PokemonType, allowedTypes: PokemonType[]) { + constructor(tagType: BattlerTagType, sourceMove: MoveId, defenderType: PokemonType, allowedTypes: PokemonType[]) { super(tagType, BattlerTagLapseType.CUSTOM, 1, sourceMove); this.defenderType = defenderType; this.allowedTypes = allowedTypes; @@ -2730,12 +2742,12 @@ export class ExposedTag extends BattlerTag { /** * Tag that prevents HP recovery from held items and move effects. It also blocks the usage of recovery moves. - * Applied by moves: {@linkcode Moves.HEAL_BLOCK | Heal Block (5 turns)}, {@linkcode Moves.PSYCHIC_NOISE | Psychic Noise (2 turns)} + * Applied by moves: {@linkcode MoveId.HEAL_BLOCK | Heal Block (5 turns)}, {@linkcode MoveId.PSYCHIC_NOISE | Psychic Noise (2 turns)} * * @extends MoveRestrictionBattlerTag */ export class HealBlockTag extends MoveRestrictionBattlerTag { - constructor(turnCount: number, sourceMove: Moves) { + constructor(turnCount: number, sourceMove: MoveId) { super( BattlerTagType.HEAL_BLOCK, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.TURN_END], @@ -2752,10 +2764,10 @@ export class HealBlockTag extends MoveRestrictionBattlerTag { /** * Checks if a move is disabled under Heal Block - * @param {Moves} move {@linkcode Moves} the move ID + * @param {MoveId} move {@linkcode MoveId} the move ID * @returns `true` if the move has a TRIAGE_MOVE flag and is a status move */ - override isMoveRestricted(move: Moves): boolean { + override isMoveRestricted(move: MoveId): boolean { if (allMoves[move].hasFlag(MoveFlags.TRIAGE_MOVE) && allMoves[move].category === MoveCategory.STATUS) { return true; } @@ -2765,12 +2777,12 @@ export class HealBlockTag extends MoveRestrictionBattlerTag { /** * Checks if a move is disabled under Heal Block because of its choice of target * Implemented b/c of Pollen Puff - * @param {Moves} move {@linkcode Moves} the move ID + * @param {MoveId} move {@linkcode MoveId} the move ID * @param {Pokemon} user {@linkcode Pokemon} the move user * @param {Pokemon} target {@linkcode Pokemon} the target of the move * @returns `true` if the move cannot be used because the target is an ally */ - override isMoveTargetRestricted(move: Moves, user: Pokemon, target: Pokemon) { + override isMoveTargetRestricted(move: MoveId, user: Pokemon, target: Pokemon) { const moveCategory = new NumberHolder(allMoves[move].category); applyMoveAttrs(StatusCategoryOnAllyAttr, user, target, allMoves[move], moveCategory); if (allMoves[move].hasAttr(HealOnAllyAttr) && moveCategory.value === MoveCategory.STATUS) { @@ -2782,25 +2794,25 @@ export class HealBlockTag extends MoveRestrictionBattlerTag { /** * Uses its own unique selectionDeniedText() message */ - override selectionDeniedText(pokemon: Pokemon, move: Moves): string { + override selectionDeniedText(pokemon: Pokemon, move: MoveId): string { return i18next.t("battle:moveDisabledHealBlock", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[move].name, - healBlockName: allMoves[Moves.HEAL_BLOCK].name, + healBlockName: allMoves[MoveId.HEAL_BLOCK].name, }); } /** * @override * @param {Pokemon} pokemon {@linkcode Pokemon} attempting to use the restricted move - * @param {Moves} move {@linkcode Moves} ID of the move being interrupted + * @param {MoveId} move {@linkcode MoveId} ID of the move being interrupted * @returns {string} text to display when the move is interrupted */ - override interruptedText(pokemon: Pokemon, move: Moves): string { + override interruptedText(pokemon: Pokemon, move: MoveId): string { return i18next.t("battle:moveDisabledHealBlock", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[move].name, - healBlockName: allMoves[Moves.HEAL_BLOCK].name, + healBlockName: allMoves[MoveId.HEAL_BLOCK].name, }); } @@ -2851,7 +2863,7 @@ export class TarShotTag extends BattlerTag { */ export class ElectrifiedTag extends BattlerTag { constructor() { - super(BattlerTagType.ELECTRIFIED, BattlerTagLapseType.TURN_END, 1, Moves.ELECTRIFY); + super(BattlerTagType.ELECTRIFIED, BattlerTagLapseType.TURN_END, 1, MoveId.ELECTRIFY); } override onAdd(pokemon: Pokemon): void { @@ -2870,7 +2882,7 @@ export class ElectrifiedTag extends BattlerTag { */ export class AutotomizedTag extends BattlerTag { public autotomizeCount = 0; - constructor(sourceMove: Moves = Moves.AUTOTOMIZE) { + constructor(sourceMove: MoveId = MoveId.AUTOTOMIZE) { super(BattlerTagType.AUTOTOMIZED, BattlerTagLapseType.CUSTOM, 1, sourceMove); } @@ -2909,7 +2921,7 @@ export class SubstituteTag extends BattlerTag { /** Is the source Pokemon "in focus," i.e. is it fully visible on the field? */ public sourceInFocus: boolean; - constructor(sourceMove: Moves, sourceId: number) { + constructor(sourceMove: MoveId, sourceId: number) { super( BattlerTagType.SUBSTITUTE, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.AFTER_MOVE, BattlerTagLapseType.HIT], @@ -2927,7 +2939,7 @@ export class SubstituteTag extends BattlerTag { // Queue battle animation and message globalScene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.SUBSTITUTE_ADD); - if (this.sourceMove === Moves.SHED_TAIL) { + if (this.sourceMove === MoveId.SHED_TAIL) { globalScene.queueMessage( i18next.t("battlerTags:shedTailOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), @@ -3068,7 +3080,7 @@ export class MysteryEncounterPostSummonTag extends BattlerTag { */ export class TormentTag extends MoveRestrictionBattlerTag { constructor(sourceId: number) { - super(BattlerTagType.TORMENT, BattlerTagLapseType.AFTER_MOVE, 1, Moves.TORMENT, sourceId); + super(BattlerTagType.TORMENT, BattlerTagLapseType.AFTER_MOVE, 1, MoveId.TORMENT, sourceId); } /** @@ -3098,10 +3110,10 @@ export class TormentTag extends MoveRestrictionBattlerTag { /** * This checks if the current move used is identical to the last used move with a {@linkcode MoveResult} of `SUCCESS`/`MISS` - * @param {Moves} move the move under investigation + * @param {MoveId} move the move under investigation * @returns `true` if there is valid consecutive usage | `false` if the moves are different from each other */ - public override isMoveRestricted(move: Moves, user: Pokemon): boolean { + public override isMoveRestricted(move: MoveId, user: Pokemon): boolean { if (!user) { return false; } @@ -3114,13 +3126,13 @@ export class TormentTag extends MoveRestrictionBattlerTag { const moveObj = allMoves[lastMove.move]; const isUnaffected = moveObj.hasAttr(ConsecutiveUseDoublePowerAttr) || user.getTag(BattlerTagType.FRENZY); const validLastMoveResult = lastMove.result === MoveResult.SUCCESS || lastMove.result === MoveResult.MISS; - if (lastMove.move === move && validLastMoveResult && lastMove.move !== Moves.STRUGGLE && !isUnaffected) { + if (lastMove.move === move && validLastMoveResult && lastMove.move !== MoveId.STRUGGLE && !isUnaffected) { return true; } return false; } - override selectionDeniedText(pokemon: Pokemon, _move: Moves): string { + override selectionDeniedText(pokemon: Pokemon, _move: MoveId): string { return i18next.t("battle:moveDisabledTorment", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }); @@ -3134,7 +3146,7 @@ export class TormentTag extends MoveRestrictionBattlerTag { */ export class TauntTag extends MoveRestrictionBattlerTag { constructor() { - super(BattlerTagType.TAUNT, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.AFTER_MOVE], 4, Moves.TAUNT); + super(BattlerTagType.TAUNT, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.AFTER_MOVE], 4, MoveId.TAUNT); } override onAdd(pokemon: Pokemon) { @@ -3159,21 +3171,21 @@ export class TauntTag extends MoveRestrictionBattlerTag { /** * Checks if a move is a status move and determines its restriction status on that basis - * @param {Moves} move the move under investigation + * @param {MoveId} move the move under investigation * @returns `true` if the move is a status move */ - override isMoveRestricted(move: Moves): boolean { + override isMoveRestricted(move: MoveId): boolean { return allMoves[move].category === MoveCategory.STATUS; } - override selectionDeniedText(pokemon: Pokemon, move: Moves): string { + override selectionDeniedText(pokemon: Pokemon, move: MoveId): string { return i18next.t("battle:moveDisabledTaunt", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[move].name, }); } - override interruptedText(pokemon: Pokemon, move: Moves): string { + override interruptedText(pokemon: Pokemon, move: MoveId): string { return i18next.t("battle:moveDisabledTaunt", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[move].name, @@ -3192,7 +3204,7 @@ export class ImprisonTag extends MoveRestrictionBattlerTag { BattlerTagType.IMPRISON, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.AFTER_MOVE], 1, - Moves.IMPRISON, + MoveId.IMPRISON, sourceId, ); } @@ -3217,10 +3229,10 @@ export class ImprisonTag extends MoveRestrictionBattlerTag { /** * Checks if the source of the tag has the parameter move in its moveset and that the source is still active * @override - * @param {Moves} move the move under investigation + * @param {MoveId} move the move under investigation * @returns `false` if either condition is not met */ - public override isMoveRestricted(move: Moves, _user: Pokemon): boolean { + public override isMoveRestricted(move: MoveId, _user: Pokemon): boolean { const source = this.getSourcePokemon(); if (source) { const sourceMoveset = source.getMoveset().map(m => m.moveId); @@ -3229,14 +3241,14 @@ export class ImprisonTag extends MoveRestrictionBattlerTag { return false; } - override selectionDeniedText(pokemon: Pokemon, move: Moves): string { + override selectionDeniedText(pokemon: Pokemon, move: MoveId): string { return i18next.t("battle:moveDisabledImprison", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[move].name, }); } - override interruptedText(pokemon: Pokemon, move: Moves): string { + override interruptedText(pokemon: Pokemon, move: MoveId): string { return i18next.t("battle:moveDisabledImprison", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[move].name, @@ -3251,7 +3263,7 @@ export class ImprisonTag extends MoveRestrictionBattlerTag { */ export class SyrupBombTag extends BattlerTag { constructor(sourceId: number) { - super(BattlerTagType.SYRUP_BOMB, BattlerTagLapseType.TURN_END, 3, Moves.SYRUP_BOMB, sourceId); + super(BattlerTagType.SYRUP_BOMB, BattlerTagLapseType.TURN_END, 3, MoveId.SYRUP_BOMB, sourceId); } /** @@ -3294,10 +3306,10 @@ export class SyrupBombTag extends BattlerTag { * Telekinesis raises the target into the air for three turns and causes all moves used against the target (aside from OHKO moves) to hit the target unless the target is in a semi-invulnerable state from Fly/Dig. * The first effect is provided by {@linkcode FloatingTag}, the accuracy-bypass effect is provided by TelekinesisTag * The effects of Telekinesis can be baton passed to a teammate. - * @see {@link https://bulbapedia.bulbagarden.net/wiki/Telekinesis_(move) | Moves.TELEKINESIS} + * @see {@link https://bulbapedia.bulbagarden.net/wiki/Telekinesis_(move) | MoveId.TELEKINESIS} */ export class TelekinesisTag extends BattlerTag { - constructor(sourceMove: Moves) { + constructor(sourceMove: MoveId) { super( BattlerTagType.TELEKINESIS, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.AFTER_MOVE], @@ -3322,7 +3334,7 @@ export class TelekinesisTag extends BattlerTag { * @extends BattlerTag */ export class PowerTrickTag extends BattlerTag { - constructor(sourceMove: Moves, sourceId: number) { + constructor(sourceMove: MoveId, sourceId: number) { super(BattlerTagType.POWER_TRICK, BattlerTagLapseType.CUSTOM, 0, sourceMove, sourceId, true); } @@ -3370,7 +3382,7 @@ export class PowerTrickTag extends BattlerTag { */ export class GrudgeTag extends BattlerTag { constructor() { - super(BattlerTagType.GRUDGE, [BattlerTagLapseType.CUSTOM, BattlerTagLapseType.PRE_MOVE], 1, Moves.GRUDGE); + super(BattlerTagType.GRUDGE, [BattlerTagLapseType.CUSTOM, BattlerTagLapseType.PRE_MOVE], 1, MoveId.GRUDGE); } onAdd(pokemon: Pokemon) { @@ -3394,7 +3406,7 @@ export class GrudgeTag extends BattlerTag { if (sourcePokemon.isActive() && pokemon.isOpponent(sourcePokemon)) { const lastMove = pokemon.turnData.attacksReceived[0]; const lastMoveData = sourcePokemon.getMoveset().find(m => m.moveId === lastMove.move); - if (lastMoveData && lastMove.move !== Moves.STRUGGLE) { + if (lastMoveData && lastMove.move !== MoveId.STRUGGLE) { lastMoveData.ppUsed = lastMoveData.getMovePp(); globalScene.queueMessage( i18next.t("battlerTags:grudgeLapse", { @@ -3415,7 +3427,7 @@ export class GrudgeTag extends BattlerTag { */ export class PsychoShiftTag extends BattlerTag { constructor() { - super(BattlerTagType.PSYCHO_SHIFT, BattlerTagLapseType.AFTER_MOVE, 1, Moves.PSYCHO_SHIFT); + super(BattlerTagType.PSYCHO_SHIFT, BattlerTagLapseType.AFTER_MOVE, 1, MoveId.PSYCHO_SHIFT); } /** @@ -3437,7 +3449,7 @@ export class PsychoShiftTag extends BattlerTag { */ export class MagicCoatTag extends BattlerTag { constructor() { - super(BattlerTagType.MAGIC_COAT, BattlerTagLapseType.TURN_END, 1, Moves.MAGIC_COAT); + super(BattlerTagType.MAGIC_COAT, BattlerTagLapseType.TURN_END, 1, MoveId.MAGIC_COAT); } /** @@ -3462,7 +3474,7 @@ export class MagicCoatTag extends BattlerTag { export function getBattlerTag( tagType: BattlerTagType, turnCount: number, - sourceMove: Moves, + sourceMove: MoveId, sourceId: number, ): BattlerTag { switch (tagType) { @@ -3555,12 +3567,12 @@ export function getBattlerTag( case BattlerTagType.PROTOSYNTHESIS: return new WeatherHighestStatBoostTag( tagType, - Abilities.PROTOSYNTHESIS, + AbilityId.PROTOSYNTHESIS, WeatherType.SUNNY, WeatherType.HARSH_SUN, ); case BattlerTagType.QUARK_DRIVE: - return new TerrainHighestStatBoostTag(tagType, Abilities.QUARK_DRIVE, TerrainType.ELECTRIC); + return new TerrainHighestStatBoostTag(tagType, AbilityId.QUARK_DRIVE, TerrainType.ELECTRIC); case BattlerTagType.FLYING: case BattlerTagType.UNDERGROUND: case BattlerTagType.UNDERWATER: diff --git a/src/data/challenge.ts b/src/data/challenge.ts index b4b8db2cc10..8dd303c34fd 100644 --- a/src/data/challenge.ts +++ b/src/data/challenge.ts @@ -15,10 +15,10 @@ import { BattleType } from "#enums/battle-type"; import Trainer, { TrainerVariant } from "#app/field/trainer"; import { PokemonType } from "#enums/pokemon-type"; import { Challenges } from "#enums/challenges"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { TrainerType } from "#enums/trainer-type"; import { Nature } from "#enums/nature"; -import type { Moves } from "#enums/moves"; +import type { MoveId } from "#enums/move-id"; import { TypeColor, TypeShadow } from "#enums/color"; import { ModifierTier } from "#app/modifier/modifier-tier"; import { globalScene } from "#app/global-scene"; @@ -305,11 +305,11 @@ export abstract class Challenge { /** * An apply function for STARTER_COST challenges. Derived classes should alter this. - * @param _species {@link Species} The pokemon to change the cost of. + * @param _species {@link SpeciesId} The pokemon to change the cost of. * @param _cost {@link NumberHolder} The cost of the starter. * @returns {@link boolean} Whether this function did anything. */ - applyStarterCost(_species: Species, _cost: NumberHolder): boolean { + applyStarterCost(_species: SpeciesId, _cost: NumberHolder): boolean { return false; } @@ -395,11 +395,11 @@ export abstract class Challenge { * An apply function for MOVE_ACCESS. Derived classes should alter this. * @param _pokemon {@link Pokemon} What pokemon would learn the move. * @param _moveSource {@link MoveSourceType} What source the pokemon would get the move from. - * @param _move {@link Moves} The move in question. + * @param _move {@link MoveId} The move in question. * @param _level {@link NumberHolder} The level threshold for access. * @returns {@link boolean} Whether this function did anything. */ - applyMoveAccessLevel(_pokemon: Pokemon, _moveSource: MoveSourceType, _move: Moves, _level: NumberHolder): boolean { + applyMoveAccessLevel(_pokemon: Pokemon, _moveSource: MoveSourceType, _move: MoveId, _level: NumberHolder): boolean { return false; } @@ -407,11 +407,11 @@ export abstract class Challenge { * An apply function for MOVE_WEIGHT. Derived classes should alter this. * @param _pokemon {@link Pokemon} What pokemon would learn the move. * @param _moveSource {@link MoveSourceType} What source the pokemon would get the move from. - * @param _move {@link Moves} The move in question. + * @param _move {@link MoveId} The move in question. * @param _weight {@link NumberHolder} The base weight of the move * @returns {@link boolean} Whether this function did anything. */ - applyMoveWeight(_pokemon: Pokemon, _moveSource: MoveSourceType, _move: Moves, _level: NumberHolder): boolean { + applyMoveWeight(_pokemon: Pokemon, _moveSource: MoveSourceType, _move: MoveId, _level: NumberHolder): boolean { return false; } @@ -696,7 +696,7 @@ export class SingleGenerationChallenge extends Challenge { interface monotypeOverride { /** The species to override */ - species: Species; + species: SpeciesId; /** The type to count as */ type: PokemonType; /** If part of a fusion, should we check the fused species instead of the base species? */ @@ -708,7 +708,7 @@ interface monotypeOverride { */ export class SingleTypeChallenge extends Challenge { private static TYPE_OVERRIDES: monotypeOverride[] = [ - { species: Species.CASTFORM, type: PokemonType.NORMAL, fusion: false }, + { species: SpeciesId.CASTFORM, type: PokemonType.NORMAL, fusion: false }, ]; // TODO: Find a solution for all Pokemon with this ssui issue, including Basculin and Burmy @@ -804,7 +804,7 @@ export class FreshStartChallenge extends Challenge { return false; } - applyStarterCost(species: Species, cost: NumberHolder): boolean { + applyStarterCost(species: SpeciesId, cost: NumberHolder): boolean { if (defaultStarterSpecies.includes(species)) { cost.value = speciesStarterCosts[species]; return true; @@ -992,13 +992,13 @@ export function applyChallenges(challengeType: ChallengeType.STARTER_POINTS, poi /** * Apply all challenges that modify the cost of a starter. * @param challengeType {@link ChallengeType} ChallengeType.STARTER_COST - * @param species {@link Species} The pokemon to change the cost of. + * @param species {@link SpeciesId} The pokemon to change the cost of. * @param points {@link NumberHolder} The cost of the pokemon. * @returns True if any challenge was successfully applied. */ export function applyChallenges( challengeType: ChallengeType.STARTER_COST, - species: Species, + species: SpeciesId, cost: NumberHolder, ): boolean; /** @@ -1090,7 +1090,7 @@ export function applyChallenges(challengeType: ChallengeType.GAME_MODE_MODIFY): * @param challengeType {@link ChallengeType} ChallengeType.MOVE_ACCESS * @param pokemon {@link Pokemon} What pokemon would learn the move. * @param moveSource {@link MoveSourceType} What source the pokemon would get the move from. - * @param move {@link Moves} The move in question. + * @param move {@link MoveId} The move in question. * @param level {@link NumberHolder} The level threshold for access. * @returns True if any challenge was successfully applied. */ @@ -1098,7 +1098,7 @@ export function applyChallenges( challengeType: ChallengeType.MOVE_ACCESS, pokemon: Pokemon, moveSource: MoveSourceType, - move: Moves, + move: MoveId, level: NumberHolder, ): boolean; /** @@ -1106,7 +1106,7 @@ export function applyChallenges( * @param challengeType {@link ChallengeType} ChallengeType.MOVE_WEIGHT * @param pokemon {@link Pokemon} What pokemon would learn the move. * @param moveSource {@link MoveSourceType} What source the pokemon would get the move from. - * @param move {@link Moves} The move in question. + * @param move {@link MoveId} The move in question. * @param weight {@link NumberHolder} The weight of the move. * @returns True if any challenge was successfully applied. */ @@ -1114,7 +1114,7 @@ export function applyChallenges( challengeType: ChallengeType.MOVE_WEIGHT, pokemon: Pokemon, moveSource: MoveSourceType, - move: Moves, + move: MoveId, weight: NumberHolder, ): boolean; diff --git a/src/data/custom-pokemon-data.ts b/src/data/custom-pokemon-data.ts index 20f6ea96174..252e302ccf3 100644 --- a/src/data/custom-pokemon-data.ts +++ b/src/data/custom-pokemon-data.ts @@ -1,4 +1,4 @@ -import type { Abilities } from "#enums/abilities"; +import type { AbilityId } from "#enums/ability-id"; import type { PokemonType } from "#enums/pokemon-type"; import type { Nature } from "#enums/nature"; @@ -12,8 +12,8 @@ export class CustomPokemonData { * The scale at which to render this Pokemon's sprite. */ public spriteScale = -1; - public ability: Abilities | -1; - public passive: Abilities | -1; + public ability: AbilityId | -1; + public passive: AbilityId | -1; public nature: Nature | -1; public types: PokemonType[]; /** Deprecated but needed for session save migration */ diff --git a/src/data/daily-run.ts b/src/data/daily-run.ts index 8a1632ce160..fc60e5795dc 100644 --- a/src/data/daily-run.ts +++ b/src/data/daily-run.ts @@ -1,5 +1,5 @@ import { PartyMemberStrength } from "#enums/party-member-strength"; -import type { Species } from "#enums/species"; +import type { SpeciesId } from "#enums/species-id"; import { globalScene } from "#app/global-scene"; import { PlayerPokemon } from "#app/field/pokemon"; import type { Starter } from "#app/ui/starter-select-ui-handler"; @@ -8,7 +8,7 @@ import type { PokemonSpeciesForm } from "#app/data/pokemon-species"; import PokemonSpecies, { getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; export interface DailyRunConfig { seed: number; @@ -34,7 +34,7 @@ export function getDailyRunStarters(seed: string): Starter[] { for (let s = 0; s < 3; s++) { const offset = 6 + s * 6; const starterSpeciesForm = getPokemonSpeciesForm( - Number.parseInt(seed.slice(offset, offset + 4)) as Species, + Number.parseInt(seed.slice(offset, offset + 4)) as SpeciesId, Number.parseInt(seed.slice(offset + 4, offset + 6)), ); starters.push(getDailyRunStarter(starterSpeciesForm, startingLevel)); @@ -50,7 +50,7 @@ export function getDailyRunStarters(seed: string): Starter[] { for (let c = 0; c < starterCosts.length; c++) { const cost = starterCosts[c]; const costSpecies = Object.keys(speciesStarterCosts) - .map(s => Number.parseInt(s) as Species) + .map(s => Number.parseInt(s) as SpeciesId) .filter(s => speciesStarterCosts[s] === cost); const randPkmSpecies = getPokemonSpecies(randSeedItem(costSpecies)); const starterSpecies = getPokemonSpecies( @@ -102,48 +102,48 @@ interface BiomeWeights { // Town and End are set to 0 however // And some other biomes were balanced +1/-1 based on average size of the total daily. const dailyBiomeWeights: BiomeWeights = { - [Biome.CAVE]: 3, - [Biome.LAKE]: 3, - [Biome.PLAINS]: 3, - [Biome.SNOWY_FOREST]: 3, - [Biome.SWAMP]: 3, // 2 -> 3 - [Biome.TALL_GRASS]: 3, // 2 -> 3 + [BiomeId.CAVE]: 3, + [BiomeId.LAKE]: 3, + [BiomeId.PLAINS]: 3, + [BiomeId.SNOWY_FOREST]: 3, + [BiomeId.SWAMP]: 3, // 2 -> 3 + [BiomeId.TALL_GRASS]: 3, // 2 -> 3 - [Biome.ABYSS]: 2, // 3 -> 2 - [Biome.RUINS]: 2, - [Biome.BADLANDS]: 2, - [Biome.BEACH]: 2, - [Biome.CONSTRUCTION_SITE]: 2, - [Biome.DESERT]: 2, - [Biome.DOJO]: 2, // 3 -> 2 - [Biome.FACTORY]: 2, - [Biome.FAIRY_CAVE]: 2, - [Biome.FOREST]: 2, - [Biome.GRASS]: 2, // 1 -> 2 - [Biome.MEADOW]: 2, - [Biome.MOUNTAIN]: 2, // 3 -> 2 - [Biome.SEA]: 2, - [Biome.SEABED]: 2, - [Biome.SLUM]: 2, - [Biome.TEMPLE]: 2, // 3 -> 2 - [Biome.VOLCANO]: 2, + [BiomeId.ABYSS]: 2, // 3 -> 2 + [BiomeId.RUINS]: 2, + [BiomeId.BADLANDS]: 2, + [BiomeId.BEACH]: 2, + [BiomeId.CONSTRUCTION_SITE]: 2, + [BiomeId.DESERT]: 2, + [BiomeId.DOJO]: 2, // 3 -> 2 + [BiomeId.FACTORY]: 2, + [BiomeId.FAIRY_CAVE]: 2, + [BiomeId.FOREST]: 2, + [BiomeId.GRASS]: 2, // 1 -> 2 + [BiomeId.MEADOW]: 2, + [BiomeId.MOUNTAIN]: 2, // 3 -> 2 + [BiomeId.SEA]: 2, + [BiomeId.SEABED]: 2, + [BiomeId.SLUM]: 2, + [BiomeId.TEMPLE]: 2, // 3 -> 2 + [BiomeId.VOLCANO]: 2, - [Biome.GRAVEYARD]: 1, - [Biome.ICE_CAVE]: 1, - [Biome.ISLAND]: 1, - [Biome.JUNGLE]: 1, - [Biome.LABORATORY]: 1, - [Biome.METROPOLIS]: 1, - [Biome.POWER_PLANT]: 1, - [Biome.SPACE]: 1, - [Biome.WASTELAND]: 1, + [BiomeId.GRAVEYARD]: 1, + [BiomeId.ICE_CAVE]: 1, + [BiomeId.ISLAND]: 1, + [BiomeId.JUNGLE]: 1, + [BiomeId.LABORATORY]: 1, + [BiomeId.METROPOLIS]: 1, + [BiomeId.POWER_PLANT]: 1, + [BiomeId.SPACE]: 1, + [BiomeId.WASTELAND]: 1, - [Biome.TOWN]: 0, - [Biome.END]: 0, + [BiomeId.TOWN]: 0, + [BiomeId.END]: 0, }; -export function getDailyStartingBiome(): Biome { - const biomes = getEnumValues(Biome).filter(b => b !== Biome.TOWN && b !== Biome.END); +export function getDailyStartingBiome(): BiomeId { + const biomes = getEnumValues(BiomeId).filter(b => b !== BiomeId.TOWN && b !== BiomeId.END); let totalWeight = 0; const biomeThresholds: number[] = []; diff --git a/src/data/egg.ts b/src/data/egg.ts index 0b7733bf199..67cdb7b1344 100644 --- a/src/data/egg.ts +++ b/src/data/egg.ts @@ -10,7 +10,7 @@ import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; import type { PlayerPokemon } from "#app/field/pokemon"; import i18next from "i18next"; import { EggTier } from "#enums/egg-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { EggSourceType } from "#enums/egg-source-types"; import { MANAPHY_EGG_MANAPHY_RATE, @@ -67,7 +67,7 @@ export interface IEggOptions { /** Sets how many waves it will take till this egg hatches. */ hatchWaves?: number; /** Sets the exact species that will hatch from this egg. */ - species?: Species; + species?: SpeciesId; /** Defines if the hatched pokemon will be a shiny. */ isShiny?: boolean; /** Defines the variant of the pokemon that will hatch from this egg. If no `variantTier` is given the normal variant rates will apply. */ @@ -94,7 +94,7 @@ export class Egg { private _hatchWaves: number; private _timestamp: number; - private _species: Species; + private _species: SpeciesId; private _isShiny: boolean; private _variantTier: VariantTier; private _eggMoveIndex: number; @@ -134,7 +134,7 @@ export class Egg { return this._timestamp; } - get species(): Species { + get species(): SpeciesId { return this._species; } @@ -221,8 +221,8 @@ export class Egg { public isManaphyEgg(): boolean { return ( - this._species === Species.PHIONE || - this._species === Species.MANAPHY || + this._species === SpeciesId.PHIONE || + this._species === SpeciesId.MANAPHY || (this._tier === EggTier.COMMON && !(this._id % 204) && !this._species) ); } @@ -247,8 +247,10 @@ export class Egg { let pokemonSpecies = getPokemonSpecies(this._species); // Special condition to have Phione eggs also have a chance of generating Manaphy - if (this._species === Species.PHIONE && this._sourceType === EggSourceType.SAME_SPECIES_EGG) { - pokemonSpecies = getPokemonSpecies(randSeedInt(MANAPHY_EGG_MANAPHY_RATE) ? Species.PHIONE : Species.MANAPHY); + if (this._species === SpeciesId.PHIONE && this._sourceType === EggSourceType.SAME_SPECIES_EGG) { + pokemonSpecies = getPokemonSpecies( + randSeedInt(MANAPHY_EGG_MANAPHY_RATE) ? SpeciesId.PHIONE : SpeciesId.MANAPHY, + ); } // Sets the hidden ability if a hidden ability exists and @@ -371,7 +373,7 @@ export class Egg { } private getEggTierDefaultHatchWaves(eggTier?: EggTier): number { - if (this._species === Species.PHIONE || this._species === Species.MANAPHY) { + if (this._species === SpeciesId.PHIONE || this._species === SpeciesId.MANAPHY) { return HATCH_WAVES_MANAPHY_EGG; } @@ -399,7 +401,7 @@ export class Egg { : EggTier.LEGENDARY; } - private rollSpecies(): Species | null { + private rollSpecies(): SpeciesId | null { if (!globalScene) { return null; } @@ -415,7 +417,7 @@ export class Egg { * check pass when Utils.randSeedInt(8) = 0, we can tell them apart during tests. */ const rand = randSeedInt(MANAPHY_EGG_MANAPHY_RATE) !== 1; - return rand ? Species.PHIONE : Species.MANAPHY; + return rand ? SpeciesId.PHIONE : SpeciesId.MANAPHY; } if (this.tier === EggTier.LEGENDARY && this._sourceType === EggSourceType.GACHA_LEGENDARY) { if (!randSeedInt(2)) { @@ -445,11 +447,11 @@ export class Egg { break; } - const ignoredSpecies = [Species.PHIONE, Species.MANAPHY, Species.ETERNATUS]; + const ignoredSpecies = [SpeciesId.PHIONE, SpeciesId.MANAPHY, SpeciesId.ETERNATUS]; let speciesPool = Object.keys(speciesEggTiers) .filter(s => speciesEggTiers[s] === this.tier) - .map(s => Number.parseInt(s) as Species) + .map(s => Number.parseInt(s) as SpeciesId) .filter( s => !pokemonPrevolutions.hasOwnProperty(s) && @@ -496,7 +498,7 @@ export class Egg { totalWeight += weight; } - let species: Species; + let species: SpeciesId; const rand = randSeedInt(totalWeight); for (let s = 0; s < speciesWeights.length; s++) { @@ -606,17 +608,17 @@ export class Egg { //// } -export function getValidLegendaryGachaSpecies(): Species[] { +export function getValidLegendaryGachaSpecies(): SpeciesId[] { return Object.entries(speciesEggTiers) .filter(s => s[1] === EggTier.LEGENDARY) .map(s => Number.parseInt(s[0])) - .filter(s => getPokemonSpecies(s).isObtainable() && s !== Species.ETERNATUS); + .filter(s => getPokemonSpecies(s).isObtainable() && s !== SpeciesId.ETERNATUS); } -export function getLegendaryGachaSpeciesForTimestamp(timestamp: number): Species { +export function getLegendaryGachaSpeciesForTimestamp(timestamp: number): SpeciesId { const legendarySpecies = getValidLegendaryGachaSpecies(); - let ret: Species; + let ret: SpeciesId; // 86400000 is the number of miliseconds in one day const timeDate = new Date(timestamp); diff --git a/src/data/moves/invalid-moves.ts b/src/data/moves/invalid-moves.ts index 025c0383f43..559b679752d 100644 --- a/src/data/moves/invalid-moves.ts +++ b/src/data/moves/invalid-moves.ts @@ -1,257 +1,257 @@ -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; -/** Set of moves that cannot be called by {@linkcode Moves.METRONOME Metronome} */ -export const invalidMetronomeMoves: ReadonlySet = new Set([ - Moves.AFTER_YOU, - Moves.ASSIST, - Moves.BANEFUL_BUNKER, - Moves.BEAK_BLAST, - Moves.BELCH, - Moves.BESTOW, - Moves.COMEUPPANCE, - Moves.COPYCAT, - Moves.COUNTER, - Moves.CRAFTY_SHIELD, - Moves.DESTINY_BOND, - Moves.DETECT, - Moves.ENDURE, - Moves.FEINT, - Moves.FOCUS_PUNCH, - Moves.FOLLOW_ME, - Moves.HELPING_HAND, - Moves.INSTRUCT, - Moves.KINGS_SHIELD, - Moves.MAT_BLOCK, - Moves.ME_FIRST, - Moves.METRONOME, - Moves.MIMIC, - Moves.MIRROR_COAT, - Moves.MIRROR_MOVE, - Moves.OBSTRUCT, - Moves.PROTECT, - Moves.QUASH, - Moves.QUICK_GUARD, - Moves.RAGE_POWDER, - Moves.REVIVAL_BLESSING, - Moves.SHELL_TRAP, - Moves.SILK_TRAP, - Moves.SKETCH, - Moves.SLEEP_TALK, - Moves.SNATCH, - Moves.SNORE, - Moves.SPIKY_SHIELD, - Moves.SPOTLIGHT, - Moves.STRUGGLE, - Moves.TRANSFORM, - Moves.WIDE_GUARD, +/** Set of moves that cannot be called by {@linkcode MoveId.METRONOME Metronome} */ +export const invalidMetronomeMoves: ReadonlySet = new Set([ + MoveId.AFTER_YOU, + MoveId.ASSIST, + MoveId.BANEFUL_BUNKER, + MoveId.BEAK_BLAST, + MoveId.BELCH, + MoveId.BESTOW, + MoveId.COMEUPPANCE, + MoveId.COPYCAT, + MoveId.COUNTER, + MoveId.CRAFTY_SHIELD, + MoveId.DESTINY_BOND, + MoveId.DETECT, + MoveId.ENDURE, + MoveId.FEINT, + MoveId.FOCUS_PUNCH, + MoveId.FOLLOW_ME, + MoveId.HELPING_HAND, + MoveId.INSTRUCT, + MoveId.KINGS_SHIELD, + MoveId.MAT_BLOCK, + MoveId.ME_FIRST, + MoveId.METRONOME, + MoveId.MIMIC, + MoveId.MIRROR_COAT, + MoveId.MIRROR_MOVE, + MoveId.OBSTRUCT, + MoveId.PROTECT, + MoveId.QUASH, + MoveId.QUICK_GUARD, + MoveId.RAGE_POWDER, + MoveId.REVIVAL_BLESSING, + MoveId.SHELL_TRAP, + MoveId.SILK_TRAP, + MoveId.SKETCH, + MoveId.SLEEP_TALK, + MoveId.SNATCH, + MoveId.SNORE, + MoveId.SPIKY_SHIELD, + MoveId.SPOTLIGHT, + MoveId.STRUGGLE, + MoveId.TRANSFORM, + MoveId.WIDE_GUARD, ]); -/** Set of moves that cannot be called by {@linkcode Moves.ASSIST Assist} */ -export const invalidAssistMoves: ReadonlySet = new Set([ - Moves.ASSIST, - Moves.BANEFUL_BUNKER, - Moves.BEAK_BLAST, - Moves.BELCH, - Moves.BESTOW, - Moves.BOUNCE, - Moves.CELEBRATE, - Moves.CHATTER, - Moves.CIRCLE_THROW, - Moves.COPYCAT, - Moves.COUNTER, - Moves.DESTINY_BOND, - Moves.DETECT, - Moves.DIG, - Moves.DIVE, - Moves.DRAGON_TAIL, - Moves.ENDURE, - Moves.FEINT, - Moves.FLY, - Moves.FOCUS_PUNCH, - Moves.FOLLOW_ME, - Moves.HELPING_HAND, - Moves.HOLD_HANDS, - Moves.KINGS_SHIELD, - Moves.MAT_BLOCK, - Moves.ME_FIRST, - Moves.METRONOME, - Moves.MIMIC, - Moves.MIRROR_COAT, - Moves.MIRROR_MOVE, - Moves.NATURE_POWER, - Moves.PHANTOM_FORCE, - Moves.PROTECT, - Moves.RAGE_POWDER, - Moves.ROAR, - Moves.SHADOW_FORCE, - Moves.SHELL_TRAP, - Moves.SKETCH, - Moves.SKY_DROP, - Moves.SLEEP_TALK, - Moves.SNATCH, - Moves.SPIKY_SHIELD, - Moves.SPOTLIGHT, - Moves.STRUGGLE, - Moves.SWITCHEROO, - Moves.TRANSFORM, - Moves.TRICK, - Moves.WHIRLWIND, +/** Set of moves that cannot be called by {@linkcode MoveId.ASSIST Assist} */ +export const invalidAssistMoves: ReadonlySet = new Set([ + MoveId.ASSIST, + MoveId.BANEFUL_BUNKER, + MoveId.BEAK_BLAST, + MoveId.BELCH, + MoveId.BESTOW, + MoveId.BOUNCE, + MoveId.CELEBRATE, + MoveId.CHATTER, + MoveId.CIRCLE_THROW, + MoveId.COPYCAT, + MoveId.COUNTER, + MoveId.DESTINY_BOND, + MoveId.DETECT, + MoveId.DIG, + MoveId.DIVE, + MoveId.DRAGON_TAIL, + MoveId.ENDURE, + MoveId.FEINT, + MoveId.FLY, + MoveId.FOCUS_PUNCH, + MoveId.FOLLOW_ME, + MoveId.HELPING_HAND, + MoveId.HOLD_HANDS, + MoveId.KINGS_SHIELD, + MoveId.MAT_BLOCK, + MoveId.ME_FIRST, + MoveId.METRONOME, + MoveId.MIMIC, + MoveId.MIRROR_COAT, + MoveId.MIRROR_MOVE, + MoveId.NATURE_POWER, + MoveId.PHANTOM_FORCE, + MoveId.PROTECT, + MoveId.RAGE_POWDER, + MoveId.ROAR, + MoveId.SHADOW_FORCE, + MoveId.SHELL_TRAP, + MoveId.SKETCH, + MoveId.SKY_DROP, + MoveId.SLEEP_TALK, + MoveId.SNATCH, + MoveId.SPIKY_SHIELD, + MoveId.SPOTLIGHT, + MoveId.STRUGGLE, + MoveId.SWITCHEROO, + MoveId.TRANSFORM, + MoveId.TRICK, + MoveId.WHIRLWIND, ]); -/** Set of moves that cannot be called by {@linkcode Moves.SLEEP_TALK Sleep Talk} */ -export const invalidSleepTalkMoves: ReadonlySet = new Set([ - Moves.ASSIST, - Moves.BELCH, - Moves.BEAK_BLAST, - Moves.BIDE, - Moves.BOUNCE, - Moves.COPYCAT, - Moves.DIG, - Moves.DIVE, - Moves.FREEZE_SHOCK, - Moves.FLY, - Moves.FOCUS_PUNCH, - Moves.GEOMANCY, - Moves.ICE_BURN, - Moves.ME_FIRST, - Moves.METRONOME, - Moves.MIRROR_MOVE, - Moves.MIMIC, - Moves.PHANTOM_FORCE, - Moves.RAZOR_WIND, - Moves.SHADOW_FORCE, - Moves.SHELL_TRAP, - Moves.SKETCH, - Moves.SKULL_BASH, - Moves.SKY_ATTACK, - Moves.SKY_DROP, - Moves.SLEEP_TALK, - Moves.SOLAR_BLADE, - Moves.SOLAR_BEAM, - Moves.STRUGGLE, - Moves.UPROAR, +/** Set of moves that cannot be called by {@linkcode MoveId.SLEEP_TALK Sleep Talk} */ +export const invalidSleepTalkMoves: ReadonlySet = new Set([ + MoveId.ASSIST, + MoveId.BELCH, + MoveId.BEAK_BLAST, + MoveId.BIDE, + MoveId.BOUNCE, + MoveId.COPYCAT, + MoveId.DIG, + MoveId.DIVE, + MoveId.FREEZE_SHOCK, + MoveId.FLY, + MoveId.FOCUS_PUNCH, + MoveId.GEOMANCY, + MoveId.ICE_BURN, + MoveId.ME_FIRST, + MoveId.METRONOME, + MoveId.MIRROR_MOVE, + MoveId.MIMIC, + MoveId.PHANTOM_FORCE, + MoveId.RAZOR_WIND, + MoveId.SHADOW_FORCE, + MoveId.SHELL_TRAP, + MoveId.SKETCH, + MoveId.SKULL_BASH, + MoveId.SKY_ATTACK, + MoveId.SKY_DROP, + MoveId.SLEEP_TALK, + MoveId.SOLAR_BLADE, + MoveId.SOLAR_BEAM, + MoveId.STRUGGLE, + MoveId.UPROAR, ]); -/** Set of moves that cannot be copied by {@linkcode Moves.COPYCAT Copycat} */ -export const invalidCopycatMoves: ReadonlySet = new Set([ - Moves.ASSIST, - Moves.BANEFUL_BUNKER, - Moves.BEAK_BLAST, - Moves.BESTOW, - Moves.CELEBRATE, - Moves.CHATTER, - Moves.CIRCLE_THROW, - Moves.COPYCAT, - Moves.COUNTER, - Moves.DESTINY_BOND, - Moves.DETECT, - Moves.DRAGON_TAIL, - Moves.ENDURE, - Moves.FEINT, - Moves.FOCUS_PUNCH, - Moves.FOLLOW_ME, - Moves.HELPING_HAND, - Moves.HOLD_HANDS, - Moves.KINGS_SHIELD, - Moves.MAT_BLOCK, - Moves.ME_FIRST, - Moves.METRONOME, - Moves.MIMIC, - Moves.MIRROR_COAT, - Moves.MIRROR_MOVE, - Moves.PROTECT, - Moves.RAGE_POWDER, - Moves.ROAR, - Moves.SHELL_TRAP, - Moves.SKETCH, - Moves.SLEEP_TALK, - Moves.SNATCH, - Moves.SPIKY_SHIELD, - Moves.SPOTLIGHT, - Moves.STRUGGLE, - Moves.SWITCHEROO, - Moves.TRANSFORM, - Moves.TRICK, - Moves.WHIRLWIND, +/** Set of moves that cannot be copied by {@linkcode MoveId.COPYCAT Copycat} */ +export const invalidCopycatMoves: ReadonlySet = new Set([ + MoveId.ASSIST, + MoveId.BANEFUL_BUNKER, + MoveId.BEAK_BLAST, + MoveId.BESTOW, + MoveId.CELEBRATE, + MoveId.CHATTER, + MoveId.CIRCLE_THROW, + MoveId.COPYCAT, + MoveId.COUNTER, + MoveId.DESTINY_BOND, + MoveId.DETECT, + MoveId.DRAGON_TAIL, + MoveId.ENDURE, + MoveId.FEINT, + MoveId.FOCUS_PUNCH, + MoveId.FOLLOW_ME, + MoveId.HELPING_HAND, + MoveId.HOLD_HANDS, + MoveId.KINGS_SHIELD, + MoveId.MAT_BLOCK, + MoveId.ME_FIRST, + MoveId.METRONOME, + MoveId.MIMIC, + MoveId.MIRROR_COAT, + MoveId.MIRROR_MOVE, + MoveId.PROTECT, + MoveId.RAGE_POWDER, + MoveId.ROAR, + MoveId.SHELL_TRAP, + MoveId.SKETCH, + MoveId.SLEEP_TALK, + MoveId.SNATCH, + MoveId.SPIKY_SHIELD, + MoveId.SPOTLIGHT, + MoveId.STRUGGLE, + MoveId.SWITCHEROO, + MoveId.TRANSFORM, + MoveId.TRICK, + MoveId.WHIRLWIND, ]); -export const invalidMirrorMoveMoves: ReadonlySet = new Set([ - Moves.ACUPRESSURE, - Moves.AFTER_YOU, - Moves.AROMATIC_MIST, - Moves.BEAK_BLAST, - Moves.BELCH, - Moves.CHILLY_RECEPTION, - Moves.COACHING, - Moves.CONVERSION_2, - Moves.COUNTER, - Moves.CRAFTY_SHIELD, - Moves.CURSE, - Moves.DECORATE, - Moves.DOODLE, - Moves.DOOM_DESIRE, - Moves.DRAGON_CHEER, - Moves.ELECTRIC_TERRAIN, - Moves.FINAL_GAMBIT, - Moves.FLORAL_HEALING, - Moves.FLOWER_SHIELD, - Moves.FOCUS_PUNCH, - Moves.FUTURE_SIGHT, - Moves.GEAR_UP, - Moves.GRASSY_TERRAIN, - Moves.GRAVITY, - Moves.GUARD_SPLIT, - Moves.HAIL, - Moves.HAZE, - Moves.HEAL_PULSE, - Moves.HELPING_HAND, - Moves.HOLD_HANDS, - Moves.INSTRUCT, - Moves.ION_DELUGE, - Moves.MAGNETIC_FLUX, - Moves.MAT_BLOCK, - Moves.ME_FIRST, - Moves.MIMIC, - Moves.MIRROR_COAT, - Moves.MIRROR_MOVE, - Moves.MIST, - Moves.MISTY_TERRAIN, - Moves.MUD_SPORT, - Moves.PERISH_SONG, - Moves.POWER_SPLIT, - Moves.PSYCH_UP, - Moves.PSYCHIC_TERRAIN, - Moves.PURIFY, - Moves.QUICK_GUARD, - Moves.RAIN_DANCE, - Moves.REFLECT_TYPE, - Moves.ROLE_PLAY, - Moves.ROTOTILLER, - Moves.SANDSTORM, - Moves.SHELL_TRAP, - Moves.SKETCH, - Moves.SNOWSCAPE, - Moves.SPIT_UP, - Moves.SPOTLIGHT, - Moves.STRUGGLE, - Moves.SUNNY_DAY, - Moves.TEATIME, - Moves.TRANSFORM, - Moves.WATER_SPORT, - Moves.WIDE_GUARD, +export const invalidMirrorMoveMoves: ReadonlySet = new Set([ + MoveId.ACUPRESSURE, + MoveId.AFTER_YOU, + MoveId.AROMATIC_MIST, + MoveId.BEAK_BLAST, + MoveId.BELCH, + MoveId.CHILLY_RECEPTION, + MoveId.COACHING, + MoveId.CONVERSION_2, + MoveId.COUNTER, + MoveId.CRAFTY_SHIELD, + MoveId.CURSE, + MoveId.DECORATE, + MoveId.DOODLE, + MoveId.DOOM_DESIRE, + MoveId.DRAGON_CHEER, + MoveId.ELECTRIC_TERRAIN, + MoveId.FINAL_GAMBIT, + MoveId.FLORAL_HEALING, + MoveId.FLOWER_SHIELD, + MoveId.FOCUS_PUNCH, + MoveId.FUTURE_SIGHT, + MoveId.GEAR_UP, + MoveId.GRASSY_TERRAIN, + MoveId.GRAVITY, + MoveId.GUARD_SPLIT, + MoveId.HAIL, + MoveId.HAZE, + MoveId.HEAL_PULSE, + MoveId.HELPING_HAND, + MoveId.HOLD_HANDS, + MoveId.INSTRUCT, + MoveId.ION_DELUGE, + MoveId.MAGNETIC_FLUX, + MoveId.MAT_BLOCK, + MoveId.ME_FIRST, + MoveId.MIMIC, + MoveId.MIRROR_COAT, + MoveId.MIRROR_MOVE, + MoveId.MIST, + MoveId.MISTY_TERRAIN, + MoveId.MUD_SPORT, + MoveId.PERISH_SONG, + MoveId.POWER_SPLIT, + MoveId.PSYCH_UP, + MoveId.PSYCHIC_TERRAIN, + MoveId.PURIFY, + MoveId.QUICK_GUARD, + MoveId.RAIN_DANCE, + MoveId.REFLECT_TYPE, + MoveId.ROLE_PLAY, + MoveId.ROTOTILLER, + MoveId.SANDSTORM, + MoveId.SHELL_TRAP, + MoveId.SKETCH, + MoveId.SNOWSCAPE, + MoveId.SPIT_UP, + MoveId.SPOTLIGHT, + MoveId.STRUGGLE, + MoveId.SUNNY_DAY, + MoveId.TEATIME, + MoveId.TRANSFORM, + MoveId.WATER_SPORT, + MoveId.WIDE_GUARD, ]); /** Set of moves that can never have their type overridden by an ability like Pixilate or Normalize * * Excludes tera blast and tera starstorm, as these are only conditionally forbidden */ -export const noAbilityTypeOverrideMoves: ReadonlySet = new Set([ - Moves.WEATHER_BALL, - Moves.JUDGMENT, - Moves.REVELATION_DANCE, - Moves.MULTI_ATTACK, - Moves.TERRAIN_PULSE, - Moves.NATURAL_GIFT, - Moves.TECHNO_BLAST, - Moves.HIDDEN_POWER, +export const noAbilityTypeOverrideMoves: ReadonlySet = new Set([ + MoveId.WEATHER_BALL, + MoveId.JUDGMENT, + MoveId.REVELATION_DANCE, + MoveId.MULTI_ATTACK, + MoveId.TERRAIN_PULSE, + MoveId.NATURAL_GIFT, + MoveId.TECHNO_BLAST, + MoveId.HIDDEN_POWER, ]); diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index 8a0da5f35c2..7e9f99e28c1 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -83,12 +83,12 @@ import { Command } from "../../ui/command-ui-handler"; import i18next from "i18next"; import type { Localizable } from "#app/interfaces/locales"; import { getBerryEffectFunc } from "../berry"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Biome } from "#enums/biome"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { BiomeId } from "#enums/biome-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { MoveUsedEvent } from "#app/events/battle-scene"; import { BATTLE_STATS, @@ -128,7 +128,7 @@ type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean type UserMoveConditionFunc = (user: Pokemon, move: Move) => boolean; export default class Move implements Localizable { - public id: Moves; + public id: MoveId; public name: string; private _type: PokemonType; private _category: MoveCategory; @@ -147,7 +147,7 @@ export default class Move implements Localizable { private flags: number = 0; private nameAppend: string = ""; - constructor(id: Moves, type: PokemonType, category: MoveCategory, defaultMoveTarget: MoveTarget, power: number, accuracy: number, pp: number, chance: number, priority: number, generation: number) { + constructor(id: MoveId, type: PokemonType, category: MoveCategory, defaultMoveTarget: MoveTarget, power: number, accuracy: number, pp: number, chance: number, priority: number, generation: number) { this.id = id; this._type = type; this._category = category; @@ -177,7 +177,7 @@ export default class Move implements Localizable { } localize(): void { - const i18nKey = Moves[this.id].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("") as unknown as string; + const i18nKey = MoveId[this.id].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("") as unknown as string; this.name = this.id ? `${i18next.t(`move:${i18nKey}.name`)}${this.nameAppend}` : ""; this.effect = this.id ? `${i18next.t(`move:${i18nKey}.effect`)}${this.nameAppend}` : ""; @@ -332,7 +332,7 @@ export default class Move implements Localizable { } break; case PokemonType.DARK: - if (user.hasAbility(Abilities.PRANKSTER) && this.category === MoveCategory.STATUS && (user.isPlayer() !== target.isPlayer())) { + if (user.hasAbility(AbilityId.PRANKSTER) && this.category === MoveCategory.STATUS && (user.isPlayer() !== target.isPlayer())) { return true; } break; @@ -418,7 +418,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.MAKES_CONTACT} flag for the calling Move * @param setFlag Default `true`, set to `false` if the move doesn't make contact - * @see {@linkcode Abilities.STATIC} + * @see {@linkcode AbilityId.STATIC} * @returns The {@linkcode Move} that called this function */ makesContact(setFlag: boolean = true): this { @@ -428,7 +428,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.IGNORE_PROTECT} flag for the calling Move - * @see {@linkcode Moves.CURSE} + * @see {@linkcode MoveId.CURSE} * @returns The {@linkcode Move} that called this function */ ignoresProtect(): this { @@ -438,7 +438,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.SOUND_BASED} flag for the calling Move - * @see {@linkcode Moves.UPROAR} + * @see {@linkcode MoveId.UPROAR} * @returns The {@linkcode Move} that called this function */ soundBased(): this { @@ -448,7 +448,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.HIDE_USER} flag for the calling Move - * @see {@linkcode Moves.TELEPORT} + * @see {@linkcode MoveId.TELEPORT} * @returns The {@linkcode Move} that called this function */ hidesUser(): this { @@ -458,7 +458,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.HIDE_TARGET} flag for the calling Move - * @see {@linkcode Moves.WHIRLWIND} + * @see {@linkcode MoveId.WHIRLWIND} * @returns The {@linkcode Move} that called this function */ hidesTarget(): this { @@ -468,7 +468,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.BITING_MOVE} flag for the calling Move - * @see {@linkcode Moves.BITE} + * @see {@linkcode MoveId.BITE} * @returns The {@linkcode Move} that called this function */ bitingMove(): this { @@ -478,7 +478,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.PULSE_MOVE} flag for the calling Move - * @see {@linkcode Moves.WATER_PULSE} + * @see {@linkcode MoveId.WATER_PULSE} * @returns The {@linkcode Move} that called this function */ pulseMove(): this { @@ -488,7 +488,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.PUNCHING_MOVE} flag for the calling Move - * @see {@linkcode Moves.DRAIN_PUNCH} + * @see {@linkcode MoveId.DRAIN_PUNCH} * @returns The {@linkcode Move} that called this function */ punchingMove(): this { @@ -498,7 +498,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.SLICING_MOVE} flag for the calling Move - * @see {@linkcode Moves.X_SCISSOR} + * @see {@linkcode MoveId.X_SCISSOR} * @returns The {@linkcode Move} that called this function */ slicingMove(): this { @@ -508,7 +508,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.RECKLESS_MOVE} flag for the calling Move - * @see {@linkcode Abilities.RECKLESS} + * @see {@linkcode AbilityId.RECKLESS} * @returns The {@linkcode Move} that called this function */ recklessMove(): this { @@ -518,7 +518,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.BALLBOMB_MOVE} flag for the calling Move - * @see {@linkcode Moves.ELECTRO_BALL} + * @see {@linkcode MoveId.ELECTRO_BALL} * @returns The {@linkcode Move} that called this function */ ballBombMove(): this { @@ -528,7 +528,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.POWDER_MOVE} flag for the calling Move - * @see {@linkcode Moves.STUN_SPORE} + * @see {@linkcode MoveId.STUN_SPORE} * @returns The {@linkcode Move} that called this function */ powderMove(): this { @@ -538,7 +538,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.DANCE_MOVE} flag for the calling Move - * @see {@linkcode Moves.PETAL_DANCE} + * @see {@linkcode MoveId.PETAL_DANCE} * @returns The {@linkcode Move} that called this function */ danceMove(): this { @@ -548,7 +548,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.WIND_MOVE} flag for the calling Move - * @see {@linkcode Moves.HURRICANE} + * @see {@linkcode MoveId.HURRICANE} * @returns The {@linkcode Move} that called this function */ windMove(): this { @@ -558,7 +558,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.TRIAGE_MOVE} flag for the calling Move - * @see {@linkcode Moves.ABSORB} + * @see {@linkcode MoveId.ABSORB} * @returns The {@linkcode Move} that called this function */ triageMove(): this { @@ -568,7 +568,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.IGNORE_ABILITIES} flag for the calling Move - * @see {@linkcode Moves.SUNSTEEL_STRIKE} + * @see {@linkcode MoveId.SUNSTEEL_STRIKE} * @returns The {@linkcode Move} that called this function */ ignoresAbilities(): this { @@ -578,7 +578,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.CHECK_ALL_HITS} flag for the calling Move - * @see {@linkcode Moves.TRIPLE_AXEL} + * @see {@linkcode MoveId.TRIPLE_AXEL} * @returns The {@linkcode Move} that called this function */ checkAllHits(): this { @@ -588,7 +588,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.IGNORE_SUBSTITUTE} flag for the calling Move - * @see {@linkcode Moves.WHIRLWIND} + * @see {@linkcode MoveId.WHIRLWIND} * @returns The {@linkcode Move} that called this function */ ignoresSubstitute(): this { @@ -598,7 +598,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.REDIRECT_COUNTER} flag for the calling Move - * @see {@linkcode Moves.METAL_BURST} + * @see {@linkcode MoveId.METAL_BURST} * @returns The {@linkcode Move} that called this function */ redirectCounter(): this { @@ -608,7 +608,7 @@ export default class Move implements Localizable { /** * Sets the {@linkcode MoveFlags.REFLECTABLE} flag for the calling Move - * @see {@linkcode Moves.ATTRACT} + * @see {@linkcode MoveId.ATTRACT} * @returns The {@linkcode Move} that called this function */ reflectable(): this { @@ -621,12 +621,12 @@ export default class Move implements Localizable { * * This method will take the `user`'s ability into account when reporting flags, e.g. * calling this method for {@linkcode MoveFlags.MAKES_CONTACT | MAKES_CONTACT} - * will return `false` if the user has a {@linkcode Abilities.LONG_REACH} that is not being suppressed. + * will return `false` if the user has a {@linkcode AbilityId.LONG_REACH} that is not being suppressed. * * **Note:** This method only checks if the move should have effectively have the flag applied to its use. * It does *not* check whether the flag will trigger related effects. * For example using this method to check {@linkcode MoveFlags.WIND_MOVE} - * will not consider {@linkcode Abilities.WIND_RIDER | Wind Rider }. + * will not consider {@linkcode AbilityId.WIND_RIDER | Wind Rider }. * * To simply check whether the move has a flag, use {@linkcode hasFlag}. * @param flag {@linkcode MoveFlags} MoveFlag to check on user and/or target @@ -880,9 +880,9 @@ export default class Move implements Localizable { calculateEffectivePower(): number { let effectivePower: number; // Triple axel and triple kick are easier to special case. - if (this.id === Moves.TRIPLE_AXEL) { + if (this.id === MoveId.TRIPLE_AXEL) { effectivePower = 94.14; - } else if (this.id === Moves.TRIPLE_KICK) { + } else if (this.id === MoveId.TRIPLE_KICK) { effectivePower = 47.07; } else { const multiHitAttr = this.getAttrs(MultiHitAttr)[0]; @@ -934,17 +934,17 @@ export default class Move implements Localizable { ]; // ...and cannot enhance these specific moves - const exceptMoves: Moves[] = [ - Moves.FLING, - Moves.UPROAR, - Moves.ROLLOUT, - Moves.ICE_BALL, - Moves.ENDEAVOR + const exceptMoves: MoveId[] = [ + MoveId.FLING, + MoveId.UPROAR, + MoveId.ROLLOUT, + MoveId.ICE_BALL, + MoveId.ENDEAVOR ]; // ...and cannot enhance Pollen Puff when targeting an ally. const ally = user.getAlly(); - const exceptPollenPuffAlly: boolean = this.id === Moves.POLLEN_PUFF && !isNullOrUndefined(ally) && targets.includes(ally.getBattlerIndex()) + const exceptPollenPuffAlly: boolean = this.id === MoveId.POLLEN_PUFF && !isNullOrUndefined(ally) && targets.includes(ally.getBattlerIndex()) return (!restrictSpread || !isMultiTarget) && !this.isChargingMove() @@ -956,7 +956,7 @@ export default class Move implements Localizable { } export class AttackMove extends Move { - constructor(id: Moves, type: PokemonType, category: MoveCategory, power: number, accuracy: number, pp: number, chance: number, priority: number, generation: number) { + constructor(id: MoveId, type: PokemonType, category: MoveCategory, power: number, accuracy: number, pp: number, chance: number, priority: number, generation: number) { super(id, type, category, MoveTarget.NEAR_OTHER, power, accuracy, pp, chance, priority, generation); /** @@ -1003,13 +1003,13 @@ export class AttackMove extends Move { } export class StatusMove extends Move { - constructor(id: Moves, type: PokemonType, accuracy: number, pp: number, chance: number, priority: number, generation: number) { + constructor(id: MoveId, type: PokemonType, accuracy: number, pp: number, chance: number, priority: number, generation: number) { super(id, type, MoveCategory.STATUS, MoveTarget.NEAR_OTHER, -1, accuracy, pp, chance, priority, generation); } } export class SelfStatusMove extends Move { - constructor(id: Moves, type: PokemonType, accuracy: number, pp: number, chance: number, priority: number, generation: number) { + constructor(id: MoveId, type: PokemonType, accuracy: number, pp: number, chance: number, priority: number, generation: number) { super(id, type, MoveCategory.STATUS, MoveTarget.USER, -1, accuracy, pp, chance, priority, generation); } } @@ -1019,7 +1019,7 @@ type SubMove = new (...args: any[]) => Move; function ChargeMove(Base: TBase) { return class extends Base { /** The animation to play during the move's charging phase */ - public readonly chargeAnim: ChargeAnim = ChargeAnim[`${Moves[this.id]}_CHARGING`]; + public readonly chargeAnim: ChargeAnim = ChargeAnim[`${MoveId[this.id]}_CHARGING`]; /** The message to show during the move's charging phase */ private _chargeText: string; @@ -1909,9 +1909,9 @@ export class PartyStatusCureAttr extends MoveEffectAttr { /** Message to display after using move */ private message: string | null; /** Skips mons with this ability, ie. Soundproof */ - private abilityCondition: Abilities; + private abilityCondition: AbilityId; - constructor(message: string | null, abilityCondition: Abilities) { + constructor(message: string | null, abilityCondition: AbilityId) { super(); this.message = message; @@ -2385,9 +2385,9 @@ export class MultiHitAttr extends MoveAttr { * the move's accuracy, and a number of situational parameters. * * @param move - The move that this attribtue is applied to - * @param partySize - The size of the user's party, used for {@linkcode Moves.BEAT_UP | Beat Up} (default: `1`) - * @param maxMultiHit - Whether the move should always hit the maximum number of times, e.g. due to {@linkcode Abilities.SKILL_LINK | Skill Link} (default: `false`) - * @param ignoreAcc - `true` if the move should ignore accuracy checks, e.g. due to {@linkcode Abilities.NO_GUARD | No Guard} (default: `false`) + * @param partySize - The size of the user's party, used for {@linkcode MoveId.BEAT_UP | Beat Up} (default: `1`) + * @param maxMultiHit - Whether the move should always hit the maximum number of times, e.g. due to {@linkcode AbilityId.SKILL_LINK | Skill Link} (default: `false`) + * @param ignoreAcc - `true` if the move should ignore accuracy checks, e.g. due to {@linkcode AbilityId.NO_GUARD | No Guard} (default: `false`) */ calculateExpectedHitCount(move: Move, { ignoreAcc = false, maxMultiHit = false, partySize = 1 }: {ignoreAcc?: boolean, maxMultiHit?: boolean, partySize?: number} = {}): number { let expectedHits: number; @@ -2430,7 +2430,7 @@ export class ChangeMultiHitTypeAttr extends MoveAttr { export class WaterShurikenMultiHitTypeAttr extends ChangeMultiHitTypeAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - if (user.species.speciesId === Species.GRENINJA && user.hasAbility(Abilities.BATTLE_BOND) && user.formIndex === 2) { + if (user.species.speciesId === SpeciesId.GRENINJA && user.hasAbility(AbilityId.BATTLE_BOND) && user.formIndex === 2) { (args[0] as NumberHolder).value = MultiHitType._3; return true; } @@ -2512,7 +2512,7 @@ export class PsychoShiftEffectAttr extends MoveEffectAttr { * @returns `true` if Psycho Shift's effect is able to be applied to the target */ apply(user: Pokemon, target: Pokemon, _move: Move, _args: any[]): boolean { - const statusToApply: StatusEffect | undefined = user.status?.effect ?? (user.hasAbility(Abilities.COMATOSE) ? StatusEffect.SLEEP : undefined); + const statusToApply: StatusEffect | undefined = user.status?.effect ?? (user.hasAbility(AbilityId.COMATOSE) ? StatusEffect.SLEEP : undefined); if (target.status) { return false; @@ -2536,7 +2536,7 @@ export class PsychoShiftEffectAttr extends MoveEffectAttr { /** * Attribute to steal items upon this move's use. - * Used for {@linkcode Moves.THIEF} and {@linkcode Moves.COVET}. + * Used for {@linkcode MoveId.THIEF} and {@linkcode MoveId.COVET}. */ export class StealHeldItemChanceAttr extends MoveEffectAttr { private chance: number; @@ -2743,7 +2743,7 @@ export class EatBerryAttr extends MoveEffectAttr { /** * Attribute used for moves that steal and eat a random berry from the target. - * Used for {@linkcode Moves.PLUCK} & {@linkcode Moves.BUG_BITE}. + * Used for {@linkcode MoveId.PLUCK} & {@linkcode MoveId.BUG_BITE}. */ export class StealEatBerryAttr extends EatBerryAttr { constructor() { @@ -2816,7 +2816,7 @@ export class HealStatusEffectAttr extends MoveEffectAttr { // Special edge case for shield dust blocking Sparkling Aria curing burn const moveTargets = getMoveTargets(user, move.id); - if (target.hasAbilityWithAttr(IgnoreMoveEffectsAbAttr) && move.id === Moves.SPARKLING_ARIA && moveTargets.targets.length === 1) { + if (target.hasAbilityWithAttr(IgnoreMoveEffectsAbAttr) && move.id === MoveId.SPARKLING_ARIA && moveTargets.targets.length === 1) { return false; } @@ -3334,65 +3334,65 @@ export class SecretPowerAttr extends MoveEffectAttr { * Cave, Wasteland, Graveyard, Abyss, Space | Flinch * End | Def -1 * ``` - * @param biome - The current {@linkcode Biome} the battle is set in + * @param biome - The current {@linkcode BiomeId} the battle is set in * @returns the chosen secondary effect {@linkcode MoveEffectAttr} */ - private determineBiomeEffect(biome: Biome): MoveEffectAttr { + private determineBiomeEffect(biome: BiomeId): MoveEffectAttr { let secondaryEffect: MoveEffectAttr; switch (biome) { - case Biome.PLAINS: - case Biome.GRASS: - case Biome.TALL_GRASS: - case Biome.FOREST: - case Biome.JUNGLE: - case Biome.MEADOW: + case BiomeId.PLAINS: + case BiomeId.GRASS: + case BiomeId.TALL_GRASS: + case BiomeId.FOREST: + case BiomeId.JUNGLE: + case BiomeId.MEADOW: secondaryEffect = new StatusEffectAttr(StatusEffect.SLEEP, false); break; - case Biome.SWAMP: - case Biome.MOUNTAIN: - case Biome.TEMPLE: - case Biome.RUINS: + case BiomeId.SWAMP: + case BiomeId.MOUNTAIN: + case BiomeId.TEMPLE: + case BiomeId.RUINS: secondaryEffect = new StatStageChangeAttr([ Stat.SPD ], -1, false); break; - case Biome.ICE_CAVE: - case Biome.SNOWY_FOREST: + case BiomeId.ICE_CAVE: + case BiomeId.SNOWY_FOREST: secondaryEffect = new StatusEffectAttr(StatusEffect.FREEZE, false); break; - case Biome.VOLCANO: + case BiomeId.VOLCANO: secondaryEffect = new StatusEffectAttr(StatusEffect.BURN, false); break; - case Biome.FAIRY_CAVE: + case BiomeId.FAIRY_CAVE: secondaryEffect = new StatStageChangeAttr([ Stat.SPATK ], -1, false); break; - case Biome.DESERT: - case Biome.CONSTRUCTION_SITE: - case Biome.BEACH: - case Biome.ISLAND: - case Biome.BADLANDS: + case BiomeId.DESERT: + case BiomeId.CONSTRUCTION_SITE: + case BiomeId.BEACH: + case BiomeId.ISLAND: + case BiomeId.BADLANDS: secondaryEffect = new StatStageChangeAttr([ Stat.ACC ], -1, false); break; - case Biome.SEA: - case Biome.LAKE: - case Biome.SEABED: + case BiomeId.SEA: + case BiomeId.LAKE: + case BiomeId.SEABED: secondaryEffect = new StatStageChangeAttr([ Stat.ATK ], -1, false); break; - case Biome.CAVE: - case Biome.WASTELAND: - case Biome.GRAVEYARD: - case Biome.ABYSS: - case Biome.SPACE: + case BiomeId.CAVE: + case BiomeId.WASTELAND: + case BiomeId.GRAVEYARD: + case BiomeId.ABYSS: + case BiomeId.SPACE: secondaryEffect = new AddBattlerTagAttr(BattlerTagType.FLINCHED, false, true); break; - case Biome.END: + case BiomeId.END: secondaryEffect = new StatStageChangeAttr([ Stat.DEF ], -1, false); break; - case Biome.TOWN: - case Biome.METROPOLIS: - case Biome.SLUM: - case Biome.DOJO: - case Biome.FACTORY: - case Biome.LABORATORY: - case Biome.POWER_PLANT: + case BiomeId.TOWN: + case BiomeId.METROPOLIS: + case BiomeId.SLUM: + case BiomeId.DOJO: + case BiomeId.FACTORY: + case BiomeId.LABORATORY: + case BiomeId.POWER_PLANT: default: secondaryEffect = new StatusEffectAttr(StatusEffect.PARALYSIS, false); break; @@ -3800,7 +3800,7 @@ export class DoublePowerChanceAttr extends VariablePowerAttr { } export abstract class ConsecutiveUsePowerMultiplierAttr extends MovePowerMultiplierAttr { - constructor(limit: number, resetOnFail: boolean, resetOnLimit?: boolean, ...comboMoves: Moves[]) { + constructor(limit: number, resetOnFail: boolean, resetOnLimit?: boolean, ...comboMoves: MoveId[]) { super((user: Pokemon, target: Pokemon, move: Move): number => { const moveHistory = user.getLastXMoves(limit + 1).slice(1); @@ -3810,7 +3810,7 @@ export abstract class ConsecutiveUsePowerMultiplierAttr extends MovePowerMultipl while ( ( (turnMove = moveHistory.shift())?.move === move.id - || (comboMoves.length && comboMoves.includes(turnMove?.move ?? Moves.NONE)) + || (comboMoves.length && comboMoves.includes(turnMove?.move ?? MoveId.NONE)) ) && (!resetOnFail || turnMove?.result === MoveResult.SUCCESS) ) { @@ -4133,7 +4133,7 @@ export class FriendshipPowerAttr extends VariablePowerAttr { } /** - * This Attribute calculates the current power of {@linkcode Moves.RAGE_FIST}. + * This Attribute calculates the current power of {@linkcode MoveId.RAGE_FIST}. * The counter for power calculation does not reset on every wave but on every new arena encounter. * Self-inflicted confusion damage and hits taken by a Subsitute are ignored. */ @@ -4237,7 +4237,7 @@ export class PresentPowerAttr extends VariablePowerAttr { export class WaterShurikenPowerAttr extends VariablePowerAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - if (user.species.speciesId === Species.GRENINJA && user.hasAbility(Abilities.BATTLE_BOND) && user.formIndex === 2) { + if (user.species.speciesId === SpeciesId.GRENINJA && user.hasAbility(AbilityId.BATTLE_BOND) && user.formIndex === 2) { (args[0] as NumberHolder).value = 20; return true; } @@ -4350,9 +4350,9 @@ export class MultiHitPowerIncrementAttr extends VariablePowerAttr { */ export class LastMoveDoublePowerAttr extends VariablePowerAttr { /** The move that must precede the current move */ - private move: Moves; + private move: MoveId; - constructor(move: Moves) { + constructor(move: MoveId) { super(); this.move = move; @@ -4477,7 +4477,7 @@ export class CueNextRoundAttr extends MoveEffectAttr { override apply(user: Pokemon, target: Pokemon, move: Move, args?: any[]): boolean { const nextRoundPhase = globalScene.findPhase(phase => - phase instanceof MovePhase && phase.move.moveId === Moves.ROUND + phase instanceof MovePhase && phase.move.moveId === MoveId.ROUND ); if (!nextRoundPhase) { @@ -4518,7 +4518,7 @@ export class StatChangeBeforeDmgCalcAttr extends MoveAttr { /** * Steals the postitive Stat stages of the target before damage calculation so stat changes - * apply to damage calculation (e.g. {@linkcode Moves.SPECTRAL_THIEF}) + * apply to damage calculation (e.g. {@linkcode MoveId.SPECTRAL_THIEF}) * {@link https://bulbapedia.bulbagarden.net/wiki/Spectral_Thief_(move) | Spectral Thief} */ export class SpectralThiefAttr extends StatChangeBeforeDmgCalcAttr { @@ -4844,8 +4844,8 @@ export class FormChangeItemTypeAttr extends VariableMoveTypeAttr { return false; } - if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(Species.ARCEUS) || [ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(Species.SILVALLY)) { - const form = user.species.speciesId === Species.ARCEUS || user.species.speciesId === Species.SILVALLY ? user.formIndex : user.fusionSpecies?.formIndex!; + if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(SpeciesId.ARCEUS) || [ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(SpeciesId.SILVALLY)) { + const form = user.species.speciesId === SpeciesId.ARCEUS || user.species.speciesId === SpeciesId.SILVALLY ? user.formIndex : user.fusionSpecies?.formIndex!; moveType.value = PokemonType[PokemonType[form]]; return true; @@ -4867,8 +4867,8 @@ export class TechnoBlastTypeAttr extends VariableMoveTypeAttr { return false; } - if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(Species.GENESECT)) { - const form = user.species.speciesId === Species.GENESECT ? user.formIndex : user.fusionSpecies?.formIndex; + if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(SpeciesId.GENESECT)) { + const form = user.species.speciesId === SpeciesId.GENESECT ? user.formIndex : user.fusionSpecies?.formIndex; switch (form) { case 1: // Shock Drive @@ -4901,8 +4901,8 @@ export class AuraWheelTypeAttr extends VariableMoveTypeAttr { return false; } - if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(Species.MORPEKO)) { - const form = user.species.speciesId === Species.MORPEKO ? user.formIndex : user.fusionSpecies?.formIndex; + if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(SpeciesId.MORPEKO)) { + const form = user.species.speciesId === SpeciesId.MORPEKO ? user.formIndex : user.fusionSpecies?.formIndex; switch (form) { case 1: // Hangry Mode @@ -4926,8 +4926,8 @@ export class RagingBullTypeAttr extends VariableMoveTypeAttr { return false; } - if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(Species.PALDEA_TAUROS)) { - const form = user.species.speciesId === Species.PALDEA_TAUROS ? user.formIndex : user.fusionSpecies?.formIndex; + if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(SpeciesId.PALDEA_TAUROS)) { + const form = user.species.speciesId === SpeciesId.PALDEA_TAUROS ? user.formIndex : user.fusionSpecies?.formIndex; switch (form) { case 1: // Blaze breed @@ -4954,8 +4954,8 @@ export class IvyCudgelTypeAttr extends VariableMoveTypeAttr { return false; } - if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(Species.OGERPON)) { - const form = user.species.speciesId === Species.OGERPON ? user.formIndex : user.fusionSpecies?.formIndex; + if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(SpeciesId.OGERPON)) { + const form = user.species.speciesId === SpeciesId.OGERPON ? user.formIndex : user.fusionSpecies?.formIndex; switch (form) { case 1: // Wellspring Mask @@ -5139,7 +5139,7 @@ export class TeraStarstormTypeAttr extends VariableMoveTypeAttr { * @returns `true` if the move type is changed to {@linkcode PokemonType.STELLAR}, `false` otherwise */ override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - if (user.isTerastallized && user.hasSpecies(Species.TERAPAGOS)) { + if (user.isTerastallized && user.hasSpecies(SpeciesId.TERAPAGOS)) { const moveType = args[0] as NumberHolder; moveType.value = PokemonType.STELLAR; @@ -5188,20 +5188,20 @@ export class CombinedPledgeTypeAttr extends VariableMoveTypeAttr { } switch (move.id) { - case Moves.FIRE_PLEDGE: - if (combinedPledgeMove === Moves.WATER_PLEDGE) { + case MoveId.FIRE_PLEDGE: + if (combinedPledgeMove === MoveId.WATER_PLEDGE) { moveType.value = PokemonType.WATER; return true; } return false; - case Moves.WATER_PLEDGE: - if (combinedPledgeMove === Moves.GRASS_PLEDGE) { + case MoveId.WATER_PLEDGE: + if (combinedPledgeMove === MoveId.GRASS_PLEDGE) { moveType.value = PokemonType.GRASS; return true; } return false; - case Moves.GRASS_PLEDGE: - if (combinedPledgeMove === Moves.FIRE_PLEDGE) { + case MoveId.GRASS_PLEDGE: + if (combinedPledgeMove === MoveId.FIRE_PLEDGE) { moveType.value = PokemonType.FIRE; return true; } @@ -5616,7 +5616,7 @@ export class GulpMissileTagAttr extends MoveEffectAttr { return false; } - if (user.hasAbility(Abilities.GULP_MISSILE) && user.species.speciesId === Species.CRAMORANT) { + if (user.hasAbility(AbilityId.GULP_MISSILE) && user.species.speciesId === SpeciesId.CRAMORANT) { if (user.getHpRatio() >= .5) { user.addTag(BattlerTagType.GULP_MISSILE_ARROKUDA, 0, move.id); } else { @@ -5629,7 +5629,7 @@ export class GulpMissileTagAttr extends MoveEffectAttr { } getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): number { - const isCramorant = user.hasAbility(Abilities.GULP_MISSILE) && user.species.speciesId === Species.CRAMORANT; + const isCramorant = user.hasAbility(AbilityId.GULP_MISSILE) && user.species.speciesId === SpeciesId.CRAMORANT; return isCramorant && !user.getTag(GulpMissileTag) ? 10 : 0; } } @@ -5786,7 +5786,7 @@ export class ProtectAttr extends AddBattlerTagAttr { while (moveHistory.length) { turnMove = moveHistory.shift(); - if (!allMoves[turnMove?.move ?? Moves.NONE].hasAttr(ProtectAttr) || turnMove?.result !== MoveResult.SUCCESS) { + if (!allMoves[turnMove?.move ?? MoveId.NONE].hasAttr(ProtectAttr) || turnMove?.result !== MoveResult.SUCCESS) { break; } timesUsed++; @@ -6119,9 +6119,9 @@ export class SwapArenaTagsAttr extends MoveEffectAttr { * are combined. The effect added varies based on the two Pledge moves combined. */ export class AddPledgeEffectAttr extends AddArenaTagAttr { - private readonly requiredPledge: Moves; + private readonly requiredPledge: MoveId; - constructor(tagType: ArenaTagType, requiredPledge: Moves, selfSideTarget: boolean = false) { + constructor(tagType: ArenaTagType, requiredPledge: MoveId, selfSideTarget: boolean = false) { super(tagType, 4, false, selfSideTarget); this.requiredPledge = requiredPledge; @@ -6241,7 +6241,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { * If it did, the user of U-turn or Volt Switch will not be switched out. */ if (target.getAbility().hasAttr(PostDamageForceSwitchAbAttr) - && [ Moves.U_TURN, Moves.VOLT_SWITCH, Moves.FLIP_TURN ].includes(move.id) + && [ MoveId.U_TURN, MoveId.VOLT_SWITCH, MoveId.FLIP_TURN ].includes(move.id) ) { if (this.hpDroppedBelowHalf(target)) { return false; @@ -6337,7 +6337,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { * If it did, the user of U-turn or Volt Switch will not be switched out. */ if (target.getAbility().hasAttr(PostDamageForceSwitchAbAttr) - && [ Moves.U_TURN, Moves.VOLT_SWITCH, Moves.FLIP_TURN ].includes(move.id) + && [ MoveId.U_TURN, MoveId.VOLT_SWITCH, MoveId.FLIP_TURN ].includes(move.id) ) { if (this.hpDroppedBelowHalf(target)) { return false; @@ -6593,63 +6593,63 @@ export class CopyBiomeTypeAttr extends MoveEffectAttr { /** * Retrieves a type from the current biome - * @param biomeType {@linkcode Biome} + * @param biomeType {@linkcode BiomeId} * @returns {@linkcode Type} */ - private getTypeForBiome(biomeType: Biome): PokemonType { + private getTypeForBiome(biomeType: BiomeId): PokemonType { switch (biomeType) { - case Biome.TOWN: - case Biome.PLAINS: - case Biome.METROPOLIS: + case BiomeId.TOWN: + case BiomeId.PLAINS: + case BiomeId.METROPOLIS: return PokemonType.NORMAL; - case Biome.GRASS: - case Biome.TALL_GRASS: + case BiomeId.GRASS: + case BiomeId.TALL_GRASS: return PokemonType.GRASS; - case Biome.FOREST: - case Biome.JUNGLE: + case BiomeId.FOREST: + case BiomeId.JUNGLE: return PokemonType.BUG; - case Biome.SLUM: - case Biome.SWAMP: + case BiomeId.SLUM: + case BiomeId.SWAMP: return PokemonType.POISON; - case Biome.SEA: - case Biome.BEACH: - case Biome.LAKE: - case Biome.SEABED: + case BiomeId.SEA: + case BiomeId.BEACH: + case BiomeId.LAKE: + case BiomeId.SEABED: return PokemonType.WATER; - case Biome.MOUNTAIN: + case BiomeId.MOUNTAIN: return PokemonType.FLYING; - case Biome.BADLANDS: + case BiomeId.BADLANDS: return PokemonType.GROUND; - case Biome.CAVE: - case Biome.DESERT: + case BiomeId.CAVE: + case BiomeId.DESERT: return PokemonType.ROCK; - case Biome.ICE_CAVE: - case Biome.SNOWY_FOREST: + case BiomeId.ICE_CAVE: + case BiomeId.SNOWY_FOREST: return PokemonType.ICE; - case Biome.MEADOW: - case Biome.FAIRY_CAVE: - case Biome.ISLAND: + case BiomeId.MEADOW: + case BiomeId.FAIRY_CAVE: + case BiomeId.ISLAND: return PokemonType.FAIRY; - case Biome.POWER_PLANT: + case BiomeId.POWER_PLANT: return PokemonType.ELECTRIC; - case Biome.VOLCANO: + case BiomeId.VOLCANO: return PokemonType.FIRE; - case Biome.GRAVEYARD: - case Biome.TEMPLE: + case BiomeId.GRAVEYARD: + case BiomeId.TEMPLE: return PokemonType.GHOST; - case Biome.DOJO: - case Biome.CONSTRUCTION_SITE: + case BiomeId.DOJO: + case BiomeId.CONSTRUCTION_SITE: return PokemonType.FIGHTING; - case Biome.FACTORY: - case Biome.LABORATORY: + case BiomeId.FACTORY: + case BiomeId.LABORATORY: return PokemonType.STEEL; - case Biome.RUINS: - case Biome.SPACE: + case BiomeId.RUINS: + case BiomeId.SPACE: return PokemonType.PSYCHIC; - case Biome.WASTELAND: - case Biome.END: + case BiomeId.WASTELAND: + case BiomeId.END: return PokemonType.DRAGON; - case Biome.ABYSS: + case BiomeId.ABYSS: return PokemonType.DARK; default: return PokemonType.UNKNOWN; @@ -6676,7 +6676,7 @@ export class ChangeTypeAttr extends MoveEffectAttr { } getCondition(): MoveConditionFunc { - return (user, target, move) => !target.isTerastallized && !target.hasAbility(Abilities.MULTITYPE) && !target.hasAbility(Abilities.RKS_SYSTEM) && !(target.getTypes().length === 1 && target.getTypes()[0] === this.type); + return (user, target, move) => !target.isTerastallized && !target.hasAbility(AbilityId.MULTITYPE) && !target.hasAbility(AbilityId.RKS_SYSTEM) && !(target.getTypes().length === 1 && target.getTypes()[0] === this.type); } } @@ -6728,7 +6728,7 @@ export class FirstMoveTypeAttr extends MoveEffectAttr { * @extends OverrideMoveEffectAttr */ class CallMoveAttr extends OverrideMoveEffectAttr { - protected invalidMoves: ReadonlySet; + protected invalidMoves: ReadonlySet; protected hasTarget: boolean; apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const replaceMoveTarget = move.moveTarget === MoveTarget.NEAR_OTHER ? MoveTarget.NEAR_ENEMY : undefined; @@ -6750,12 +6750,12 @@ class CallMoveAttr extends OverrideMoveEffectAttr { /** * Attribute used to call a random move. - * Used for {@linkcode Moves.METRONOME} + * Used for {@linkcode MoveId.METRONOME} * @see {@linkcode apply} for move selection and move call * @extends CallMoveAttr to call a selected move */ export class RandomMoveAttr extends CallMoveAttr { - constructor(invalidMoves: ReadonlySet) { + constructor(invalidMoves: ReadonlySet) { super(); this.invalidMoves = invalidMoves; } @@ -6763,7 +6763,7 @@ export class RandomMoveAttr extends CallMoveAttr { /** * This function exists solely to allow tests to override the randomly selected move by mocking this function. */ - public getMoveOverride(): Moves | null { + public getMoveOverride(): MoveId | null { return null; } @@ -6777,19 +6777,19 @@ export class RandomMoveAttr extends CallMoveAttr { * @param args Unused */ override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - const moveIds = getEnumValues(Moves).map(m => !this.invalidMoves.has(m) && !allMoves[m].name.endsWith(" (N)") ? m : Moves.NONE); - let moveId: Moves = Moves.NONE; + const moveIds = getEnumValues(MoveId).map(m => !this.invalidMoves.has(m) && !allMoves[m].name.endsWith(" (N)") ? m : MoveId.NONE); + let moveId: MoveId = MoveId.NONE; do { moveId = this.getMoveOverride() ?? moveIds[user.randBattleSeedInt(moveIds.length)]; } - while (moveId === Moves.NONE); + while (moveId === MoveId.NONE); return super.apply(user, target, allMoves[moveId], args); } } /** * Attribute used to call a random move in the user or party's moveset. - * Used for {@linkcode Moves.ASSIST} and {@linkcode Moves.SLEEP_TALK} + * Used for {@linkcode MoveId.ASSIST} and {@linkcode MoveId.SLEEP_TALK} * * Fails if the user has no callable moves. * @@ -6800,7 +6800,7 @@ export class RandomMoveAttr extends CallMoveAttr { export class RandomMovesetMoveAttr extends CallMoveAttr { private includeParty: boolean; private moveId: number; - constructor(invalidMoves: ReadonlySet, includeParty: boolean = false) { + constructor(invalidMoves: ReadonlySet, includeParty: boolean = false) { super(); this.includeParty = includeParty; this.invalidMoves = invalidMoves; @@ -6845,128 +6845,128 @@ export class NaturePowerAttr extends OverrideMoveEffectAttr { // this allows terrains to 'override' the biome move case TerrainType.NONE: switch (globalScene.arena.biomeType) { - case Biome.TOWN: - moveId = Moves.ROUND; + case BiomeId.TOWN: + moveId = MoveId.ROUND; break; - case Biome.METROPOLIS: - moveId = Moves.TRI_ATTACK; + case BiomeId.METROPOLIS: + moveId = MoveId.TRI_ATTACK; break; - case Biome.SLUM: - moveId = Moves.SLUDGE_BOMB; + case BiomeId.SLUM: + moveId = MoveId.SLUDGE_BOMB; break; - case Biome.PLAINS: - moveId = Moves.SILVER_WIND; + case BiomeId.PLAINS: + moveId = MoveId.SILVER_WIND; break; - case Biome.GRASS: - moveId = Moves.GRASS_KNOT; + case BiomeId.GRASS: + moveId = MoveId.GRASS_KNOT; break; - case Biome.TALL_GRASS: - moveId = Moves.POLLEN_PUFF; + case BiomeId.TALL_GRASS: + moveId = MoveId.POLLEN_PUFF; break; - case Biome.MEADOW: - moveId = Moves.GIGA_DRAIN; + case BiomeId.MEADOW: + moveId = MoveId.GIGA_DRAIN; break; - case Biome.FOREST: - moveId = Moves.BUG_BUZZ; + case BiomeId.FOREST: + moveId = MoveId.BUG_BUZZ; break; - case Biome.JUNGLE: - moveId = Moves.LEAF_STORM; + case BiomeId.JUNGLE: + moveId = MoveId.LEAF_STORM; break; - case Biome.SEA: - moveId = Moves.HYDRO_PUMP; + case BiomeId.SEA: + moveId = MoveId.HYDRO_PUMP; break; - case Biome.SWAMP: - moveId = Moves.MUD_BOMB; + case BiomeId.SWAMP: + moveId = MoveId.MUD_BOMB; break; - case Biome.BEACH: - moveId = Moves.SCALD; + case BiomeId.BEACH: + moveId = MoveId.SCALD; break; - case Biome.LAKE: - moveId = Moves.BUBBLE_BEAM; + case BiomeId.LAKE: + moveId = MoveId.BUBBLE_BEAM; break; - case Biome.SEABED: - moveId = Moves.BRINE; + case BiomeId.SEABED: + moveId = MoveId.BRINE; break; - case Biome.ISLAND: - moveId = Moves.LEAF_TORNADO; + case BiomeId.ISLAND: + moveId = MoveId.LEAF_TORNADO; break; - case Biome.MOUNTAIN: - moveId = Moves.AIR_SLASH; + case BiomeId.MOUNTAIN: + moveId = MoveId.AIR_SLASH; break; - case Biome.BADLANDS: - moveId = Moves.EARTH_POWER; + case BiomeId.BADLANDS: + moveId = MoveId.EARTH_POWER; break; - case Biome.DESERT: - moveId = Moves.SCORCHING_SANDS; + case BiomeId.DESERT: + moveId = MoveId.SCORCHING_SANDS; break; - case Biome.WASTELAND: - moveId = Moves.DRAGON_PULSE; + case BiomeId.WASTELAND: + moveId = MoveId.DRAGON_PULSE; break; - case Biome.CONSTRUCTION_SITE: - moveId = Moves.STEEL_BEAM; + case BiomeId.CONSTRUCTION_SITE: + moveId = MoveId.STEEL_BEAM; break; - case Biome.CAVE: - moveId = Moves.POWER_GEM; + case BiomeId.CAVE: + moveId = MoveId.POWER_GEM; break; - case Biome.ICE_CAVE: - moveId = Moves.ICE_BEAM; + case BiomeId.ICE_CAVE: + moveId = MoveId.ICE_BEAM; break; - case Biome.SNOWY_FOREST: - moveId = Moves.FROST_BREATH; + case BiomeId.SNOWY_FOREST: + moveId = MoveId.FROST_BREATH; break; - case Biome.VOLCANO: - moveId = Moves.LAVA_PLUME; + case BiomeId.VOLCANO: + moveId = MoveId.LAVA_PLUME; break; - case Biome.GRAVEYARD: - moveId = Moves.SHADOW_BALL; + case BiomeId.GRAVEYARD: + moveId = MoveId.SHADOW_BALL; break; - case Biome.RUINS: - moveId = Moves.ANCIENT_POWER; + case BiomeId.RUINS: + moveId = MoveId.ANCIENT_POWER; break; - case Biome.TEMPLE: - moveId = Moves.EXTRASENSORY; + case BiomeId.TEMPLE: + moveId = MoveId.EXTRASENSORY; break; - case Biome.DOJO: - moveId = Moves.FOCUS_BLAST; + case BiomeId.DOJO: + moveId = MoveId.FOCUS_BLAST; break; - case Biome.FAIRY_CAVE: - moveId = Moves.ALLURING_VOICE; + case BiomeId.FAIRY_CAVE: + moveId = MoveId.ALLURING_VOICE; break; - case Biome.ABYSS: - moveId = Moves.OMINOUS_WIND; + case BiomeId.ABYSS: + moveId = MoveId.OMINOUS_WIND; break; - case Biome.SPACE: - moveId = Moves.DRACO_METEOR; + case BiomeId.SPACE: + moveId = MoveId.DRACO_METEOR; break; - case Biome.FACTORY: - moveId = Moves.FLASH_CANNON; + case BiomeId.FACTORY: + moveId = MoveId.FLASH_CANNON; break; - case Biome.LABORATORY: - moveId = Moves.ZAP_CANNON; + case BiomeId.LABORATORY: + moveId = MoveId.ZAP_CANNON; break; - case Biome.POWER_PLANT: - moveId = Moves.CHARGE_BEAM; + case BiomeId.POWER_PLANT: + moveId = MoveId.CHARGE_BEAM; break; - case Biome.END: - moveId = Moves.ETERNABEAM; + case BiomeId.END: + moveId = MoveId.ETERNABEAM; break; } break; case TerrainType.MISTY: - moveId = Moves.MOONBLAST; + moveId = MoveId.MOONBLAST; break; case TerrainType.ELECTRIC: - moveId = Moves.THUNDERBOLT; + moveId = MoveId.THUNDERBOLT; break; case TerrainType.GRASSY: - moveId = Moves.ENERGY_BALL; + moveId = MoveId.ENERGY_BALL; break; case TerrainType.PSYCHIC: - moveId = Moves.PSYCHIC; + moveId = MoveId.PSYCHIC; break; default: // Just in case there's no match - moveId = Moves.TRI_ATTACK; + moveId = MoveId.TRI_ATTACK; break; } @@ -6979,13 +6979,13 @@ export class NaturePowerAttr extends OverrideMoveEffectAttr { /** * Attribute used to copy a previously-used move. - * Used for {@linkcode Moves.COPYCAT} and {@linkcode Moves.MIRROR_MOVE} + * Used for {@linkcode MoveId.COPYCAT} and {@linkcode MoveId.MIRROR_MOVE} * @see {@linkcode apply} for move selection and move call * @extends CallMoveAttr to call a selected move */ export class CopyMoveAttr extends CallMoveAttr { private mirrorMove: boolean; - constructor(mirrorMove: boolean, invalidMoves: ReadonlySet = new Set()) { + constructor(mirrorMove: boolean, invalidMoves: ReadonlySet = new Set()) { super(); this.mirrorMove = mirrorMove; this.invalidMoves = invalidMoves; @@ -7031,7 +7031,7 @@ export class RepeatMoveAttr extends MoveEffectAttr { */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { // get the last move used (excluding status based failures) as well as the corresponding moveset slot - const lastMove = target.getLastXMoves(-1).find(m => m.move !== Moves.NONE)!; + const lastMove = target.getLastXMoves(-1).find(m => m.move !== MoveId.NONE)!; const movesetMove = target.getMoveset().find(m => m.moveId === lastMove.move)!; // If the last move used can hit more than one target or has variable targets, // re-compute the targets for the attack @@ -7065,60 +7065,60 @@ export class RepeatMoveAttr extends MoveEffectAttr { getCondition(): MoveConditionFunc { return (user, target, move) => { - const lastMove = target.getLastXMoves(-1).find(m => m.move !== Moves.NONE); + const lastMove = target.getLastXMoves(-1).find(m => m.move !== MoveId.NONE); const movesetMove = target.getMoveset().find(m => m.moveId === lastMove?.move); const uninstructableMoves = [ // Locking/Continually Executed moves - Moves.OUTRAGE, - Moves.RAGING_FURY, - Moves.ROLLOUT, - Moves.PETAL_DANCE, - Moves.THRASH, - Moves.ICE_BALL, + MoveId.OUTRAGE, + MoveId.RAGING_FURY, + MoveId.ROLLOUT, + MoveId.PETAL_DANCE, + MoveId.THRASH, + MoveId.ICE_BALL, // Multi-turn Moves - Moves.BIDE, - Moves.SHELL_TRAP, - Moves.BEAK_BLAST, - Moves.FOCUS_PUNCH, + MoveId.BIDE, + MoveId.SHELL_TRAP, + MoveId.BEAK_BLAST, + MoveId.FOCUS_PUNCH, // "First Turn Only" moves - Moves.FAKE_OUT, - Moves.FIRST_IMPRESSION, - Moves.MAT_BLOCK, + MoveId.FAKE_OUT, + MoveId.FIRST_IMPRESSION, + MoveId.MAT_BLOCK, // Moves with a recharge turn - Moves.HYPER_BEAM, - Moves.ETERNABEAM, - Moves.FRENZY_PLANT, - Moves.BLAST_BURN, - Moves.HYDRO_CANNON, - Moves.GIGA_IMPACT, - Moves.PRISMATIC_LASER, - Moves.ROAR_OF_TIME, - Moves.ROCK_WRECKER, - Moves.METEOR_ASSAULT, + MoveId.HYPER_BEAM, + MoveId.ETERNABEAM, + MoveId.FRENZY_PLANT, + MoveId.BLAST_BURN, + MoveId.HYDRO_CANNON, + MoveId.GIGA_IMPACT, + MoveId.PRISMATIC_LASER, + MoveId.ROAR_OF_TIME, + MoveId.ROCK_WRECKER, + MoveId.METEOR_ASSAULT, // Charging & 2-turn moves - Moves.DIG, - Moves.FLY, - Moves.BOUNCE, - Moves.SHADOW_FORCE, - Moves.PHANTOM_FORCE, - Moves.DIVE, - Moves.ELECTRO_SHOT, - Moves.ICE_BURN, - Moves.GEOMANCY, - Moves.FREEZE_SHOCK, - Moves.SKY_DROP, - Moves.SKY_ATTACK, - Moves.SKULL_BASH, - Moves.SOLAR_BEAM, - Moves.SOLAR_BLADE, - Moves.METEOR_BEAM, + MoveId.DIG, + MoveId.FLY, + MoveId.BOUNCE, + MoveId.SHADOW_FORCE, + MoveId.PHANTOM_FORCE, + MoveId.DIVE, + MoveId.ELECTRO_SHOT, + MoveId.ICE_BURN, + MoveId.GEOMANCY, + MoveId.FREEZE_SHOCK, + MoveId.SKY_DROP, + MoveId.SKY_ATTACK, + MoveId.SKULL_BASH, + MoveId.SOLAR_BEAM, + MoveId.SOLAR_BLADE, + MoveId.METEOR_BEAM, // Other moves - Moves.INSTRUCT, - Moves.KINGS_SHIELD, - Moves.SKETCH, - Moves.TRANSFORM, - Moves.MIMIC, - Moves.STRUGGLE, + MoveId.INSTRUCT, + MoveId.KINGS_SHIELD, + MoveId.SKETCH, + MoveId.TRANSFORM, + MoveId.MIMIC, + MoveId.STRUGGLE, // TODO: Add Max/G-Move blockage if or when they are implemented ]; @@ -7296,7 +7296,7 @@ export class MovesetCopyMoveAttr extends OverrideMoveEffectAttr { } /** - * Attribute for {@linkcode Moves.SKETCH} that causes the user to copy the opponent's last used move + * Attribute for {@linkcode MoveId.SKETCH} that causes the user to copy the opponent's last used move * This move copies the last used non-virtual move * e.g. if Metronome is used, it copies Metronome itself, not the virtual move called by Metronome * Fails if the opponent has not yet used a move. @@ -7322,7 +7322,7 @@ export class SketchAttr extends MoveEffectAttr { } const targetMove = target.getLastXMoves(-1) - .find(m => m.move !== Moves.NONE && m.move !== Moves.STRUGGLE && !m.virtual); + .find(m => m.move !== MoveId.NONE && m.move !== MoveId.STRUGGLE && !m.virtual); if (!targetMove) { return false; } @@ -7352,15 +7352,15 @@ export class SketchAttr extends MoveEffectAttr { } const unsketchableMoves = [ - Moves.CHATTER, - Moves.MIRROR_MOVE, - Moves.SLEEP_TALK, - Moves.STRUGGLE, - Moves.SKETCH, - Moves.REVIVAL_BLESSING, - Moves.TERA_STARSTORM, - Moves.BREAKNECK_BLITZ__PHYSICAL, - Moves.BREAKNECK_BLITZ__SPECIAL + MoveId.CHATTER, + MoveId.MIRROR_MOVE, + MoveId.SLEEP_TALK, + MoveId.STRUGGLE, + MoveId.SKETCH, + MoveId.REVIVAL_BLESSING, + MoveId.TERA_STARSTORM, + MoveId.BREAKNECK_BLITZ__PHYSICAL, + MoveId.BREAKNECK_BLITZ__SPECIAL ]; if (unsketchableMoves.includes(targetMove.move)) { @@ -7377,9 +7377,9 @@ export class SketchAttr extends MoveEffectAttr { } export class AbilityChangeAttr extends MoveEffectAttr { - public ability: Abilities; + public ability: AbilityId; - constructor(ability: Abilities, selfTarget?: boolean) { + constructor(ability: AbilityId, selfTarget?: boolean) { super(selfTarget); this.ability = ability; @@ -7496,7 +7496,7 @@ export class SwitchAbilitiesAttr extends MoveEffectAttr { } /** - * Attribute used for moves that suppress abilities like {@linkcode Moves.GASTRO_ACID}. + * Attribute used for moves that suppress abilities like {@linkcode MoveId.GASTRO_ACID}. * A suppressed ability cannot be activated. * * @extends MoveEffectAttr @@ -7528,7 +7528,7 @@ export class SuppressAbilitiesAttr extends MoveEffectAttr { /** * Applies the effects of {@linkcode SuppressAbilitiesAttr} if the target has already moved this turn. * @extends MoveEffectAttr - * @see {@linkcode Moves.CORE_ENFORCER} (the move which uses this effect) + * @see {@linkcode MoveId.CORE_ENFORCER} (the move which uses this effect) */ export class SuppressAbilitiesIfActedAttr extends MoveEffectAttr { /** @@ -7805,13 +7805,13 @@ export class StatusIfBoostedAttr extends MoveEffectAttr { /** * Attribute to fail move usage unless all of the user's other moves have been used at least once. - * Used by {@linkcode Moves.LAST_RESORT}. + * Used by {@linkcode MoveId.LAST_RESORT}. */ export class LastResortAttr extends MoveAttr { // TODO: Verify behavior as Bulbapedia page is _extremely_ poorly documented getCondition(): MoveConditionFunc { return (user: Pokemon, _target: Pokemon, move: Move) => { - const movesInMoveset = new Set(user.getMoveset().map(m => m.moveId)); + const movesInMoveset = new Set(user.getMoveset().map(m => m.moveId)); if (!movesInMoveset.delete(move.id) || !movesInMoveset.size) { return false; // Last resort fails if used when not in user's moveset or no other moves exist } @@ -7845,7 +7845,7 @@ export class VariableTargetAttr extends MoveAttr { } /** - * Attribute for {@linkcode Moves.AFTER_YOU} + * Attribute for {@linkcode MoveId.AFTER_YOU} * * [After You - Move | Bulbapedia](https://bulbapedia.bulbagarden.net/wiki/After_You_(move)) */ @@ -7855,7 +7855,7 @@ export class AfterYouAttr extends MoveEffectAttr { * * @param user {@linkcode Pokemon} that is using the move. * @param target {@linkcode Pokemon} that will move right after this move is used. - * @param move {@linkcode Move} {@linkcode Moves.AFTER_YOU} + * @param move {@linkcode Move} {@linkcode MoveId.AFTER_YOU} * @param _args N/A * @returns true */ @@ -7883,7 +7883,7 @@ export class ForceLastAttr extends MoveEffectAttr { * * @param user {@linkcode Pokemon} that is using the move. * @param target {@linkcode Pokemon} that will be forced to move last. - * @param move {@linkcode Move} {@linkcode Moves.QUASH} + * @param move {@linkcode Move} {@linkcode MoveId.QUASH} * @param _args N/A * @returns true */ @@ -7938,9 +7938,9 @@ const failIfDampCondition: MoveConditionFunc = (user, target, move) => { return !cancelled.value; }; -const userSleptOrComatoseCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => user.status?.effect === StatusEffect.SLEEP || user.hasAbility(Abilities.COMATOSE); +const userSleptOrComatoseCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => user.status?.effect === StatusEffect.SLEEP || user.hasAbility(AbilityId.COMATOSE); -const targetSleptOrComatoseCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => target.status?.effect === StatusEffect.SLEEP || target.hasAbility(Abilities.COMATOSE); +const targetSleptOrComatoseCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => target.status?.effect === StatusEffect.SLEEP || target.hasAbility(AbilityId.COMATOSE); const failIfLastCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => globalScene.phaseQueue.find(phase => phase instanceof MovePhase) !== undefined; @@ -8085,7 +8085,7 @@ export class HitsSameTypeAttr extends VariableMoveTypeMultiplierAttr { * Fails if the type is unknown or stellar * * TODO: - * If a move has its type changed (e.g. {@linkcode Moves.HIDDEN_POWER}), it will check the new type. + * If a move has its type changed (e.g. {@linkcode MoveId.HIDDEN_POWER}), it will check the new type. */ export class ResistLastMoveTypeAttr extends MoveEffectAttr { constructor() { @@ -8156,7 +8156,7 @@ export class ResistLastMoveTypeAttr extends MoveEffectAttr { /** * Drops the target's immunity to types it is immune to * and makes its evasiveness be ignored during accuracy - * checks. Used by: {@linkcode Moves.ODOR_SLEUTH | Odor Sleuth}, {@linkcode Moves.MIRACLE_EYE | Miracle Eye} and {@linkcode Moves.FORESIGHT | Foresight} + * checks. Used by: {@linkcode MoveId.ODOR_SLEUTH | Odor Sleuth}, {@linkcode MoveId.MIRACLE_EYE | Miracle Eye} and {@linkcode MoveId.FORESIGHT | Foresight} * * @extends AddBattlerTagAttr * @see {@linkcode apply} @@ -8193,7 +8193,7 @@ export type MoveTargetSet = { multiple: boolean; }; -export function getMoveTargets(user: Pokemon, move: Moves, replaceTarget?: MoveTarget): MoveTargetSet { +export function getMoveTargets(user: Pokemon, move: MoveId, replaceTarget?: MoveTarget): MoveTargetSet { const variableTarget = new NumberHolder(0); user.getOpponents(false).forEach(p => applyMoveAttrs(VariableTargetAttr, user, p, allMoves[move], variableTarget)); @@ -8261,420 +8261,420 @@ export function getMoveTargets(user: Pokemon, move: Moves, replaceTarget?: MoveT return { targets: set.filter(p => p?.isActive(true)).map(p => p.getBattlerIndex()).filter(t => t !== undefined), multiple }; } -export const selfStatLowerMoves: Moves[] = []; +export const selfStatLowerMoves: MoveId[] = []; export function initMoves() { allMoves.push( - new SelfStatusMove(Moves.NONE, PokemonType.NORMAL, MoveCategory.STATUS, -1, -1, 0, 1), - new AttackMove(Moves.POUND, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, 0, 1), - new AttackMove(Moves.KARATE_CHOP, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 50, 100, 25, -1, 0, 1) + new SelfStatusMove(MoveId.NONE, PokemonType.NORMAL, MoveCategory.STATUS, -1, -1, 0, 1), + new AttackMove(MoveId.POUND, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, 0, 1), + new AttackMove(MoveId.KARATE_CHOP, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 50, 100, 25, -1, 0, 1) .attr(HighCritAttr), - new AttackMove(Moves.DOUBLE_SLAP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 85, 10, -1, 0, 1) + new AttackMove(MoveId.DOUBLE_SLAP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 85, 10, -1, 0, 1) .attr(MultiHitAttr), - new AttackMove(Moves.COMET_PUNCH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 18, 85, 15, -1, 0, 1) + new AttackMove(MoveId.COMET_PUNCH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 18, 85, 15, -1, 0, 1) .attr(MultiHitAttr) .punchingMove(), - new AttackMove(Moves.MEGA_PUNCH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 85, 20, -1, 0, 1) + new AttackMove(MoveId.MEGA_PUNCH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 85, 20, -1, 0, 1) .punchingMove(), - new AttackMove(Moves.PAY_DAY, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 20, -1, 0, 1) + new AttackMove(MoveId.PAY_DAY, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 20, -1, 0, 1) .attr(MoneyAttr) .makesContact(false), - new AttackMove(Moves.FIRE_PUNCH, PokemonType.FIRE, MoveCategory.PHYSICAL, 75, 100, 15, 10, 0, 1) + new AttackMove(MoveId.FIRE_PUNCH, PokemonType.FIRE, MoveCategory.PHYSICAL, 75, 100, 15, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.BURN) .punchingMove(), - new AttackMove(Moves.ICE_PUNCH, PokemonType.ICE, MoveCategory.PHYSICAL, 75, 100, 15, 10, 0, 1) + new AttackMove(MoveId.ICE_PUNCH, PokemonType.ICE, MoveCategory.PHYSICAL, 75, 100, 15, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.FREEZE) .punchingMove(), - new AttackMove(Moves.THUNDER_PUNCH, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 75, 100, 15, 10, 0, 1) + new AttackMove(MoveId.THUNDER_PUNCH, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 75, 100, 15, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .punchingMove(), - new AttackMove(Moves.SCRATCH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, 0, 1), - new AttackMove(Moves.VISE_GRIP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 55, 100, 30, -1, 0, 1), - new AttackMove(Moves.GUILLOTINE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 200, 30, 5, -1, 0, 1) + new AttackMove(MoveId.SCRATCH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, 0, 1), + new AttackMove(MoveId.VISE_GRIP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 55, 100, 30, -1, 0, 1), + new AttackMove(MoveId.GUILLOTINE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 200, 30, 5, -1, 0, 1) .attr(OneHitKOAttr) .attr(OneHitKOAccuracyAttr), - new ChargingAttackMove(Moves.RAZOR_WIND, PokemonType.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 1) + new ChargingAttackMove(MoveId.RAZOR_WIND, PokemonType.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 1) .chargeText(i18next.t("moveTriggers:whippedUpAWhirlwind", { pokemonName: "{USER}" })) .attr(HighCritAttr) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new SelfStatusMove(Moves.SWORDS_DANCE, PokemonType.NORMAL, -1, 20, -1, 0, 1) + new SelfStatusMove(MoveId.SWORDS_DANCE, PokemonType.NORMAL, -1, 20, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ATK ], 2, true) .danceMove(), - new AttackMove(Moves.CUT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 50, 95, 30, -1, 0, 1) + new AttackMove(MoveId.CUT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 50, 95, 30, -1, 0, 1) .slicingMove(), - new AttackMove(Moves.GUST, PokemonType.FLYING, MoveCategory.SPECIAL, 40, 100, 35, -1, 0, 1) + new AttackMove(MoveId.GUST, PokemonType.FLYING, MoveCategory.SPECIAL, 40, 100, 35, -1, 0, 1) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.FLYING) .windMove(), - new AttackMove(Moves.WING_ATTACK, PokemonType.FLYING, MoveCategory.PHYSICAL, 60, 100, 35, -1, 0, 1), - new StatusMove(Moves.WHIRLWIND, PokemonType.NORMAL, -1, 20, -1, -6, 1) + new AttackMove(MoveId.WING_ATTACK, PokemonType.FLYING, MoveCategory.PHYSICAL, 60, 100, 35, -1, 0, 1), + new StatusMove(MoveId.WHIRLWIND, PokemonType.NORMAL, -1, 20, -1, -6, 1) .attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH) .ignoresSubstitute() .hidesTarget() .windMove() .reflectable(), - new ChargingAttackMove(Moves.FLY, PokemonType.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, -1, 0, 1) + new ChargingAttackMove(MoveId.FLY, PokemonType.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, -1, 0, 1) .chargeText(i18next.t("moveTriggers:flewUpHigh", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.FLYING) .condition(failOnGravityCondition), - new AttackMove(Moves.BIND, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1) + new AttackMove(MoveId.BIND, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1) .attr(TrapAttr, BattlerTagType.BIND), - new AttackMove(Moves.SLAM, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 75, 20, -1, 0, 1), - new AttackMove(Moves.VINE_WHIP, PokemonType.GRASS, MoveCategory.PHYSICAL, 45, 100, 25, -1, 0, 1), - new AttackMove(Moves.STOMP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 65, 100, 20, 30, 0, 1) + new AttackMove(MoveId.SLAM, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 75, 20, -1, 0, 1), + new AttackMove(MoveId.VINE_WHIP, PokemonType.GRASS, MoveCategory.PHYSICAL, 45, 100, 25, -1, 0, 1), + new AttackMove(MoveId.STOMP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 65, 100, 20, 30, 0, 1) .attr(AlwaysHitMinimizeAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED) .attr(FlinchAttr), - new AttackMove(Moves.DOUBLE_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 30, 100, 30, -1, 0, 1) + new AttackMove(MoveId.DOUBLE_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 30, 100, 30, -1, 0, 1) .attr(MultiHitAttr, MultiHitType._2), - new AttackMove(Moves.MEGA_KICK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 75, 5, -1, 0, 1), - new AttackMove(Moves.JUMP_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 95, 10, -1, 0, 1) + new AttackMove(MoveId.MEGA_KICK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 75, 5, -1, 0, 1), + new AttackMove(MoveId.JUMP_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 95, 10, -1, 0, 1) .attr(MissEffectAttr, crashDamageFunc) .attr(NoEffectAttr, crashDamageFunc) .condition(failOnGravityCondition) .recklessMove(), - new AttackMove(Moves.ROLLING_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 85, 15, 30, 0, 1) + new AttackMove(MoveId.ROLLING_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 85, 15, 30, 0, 1) .attr(FlinchAttr), - new StatusMove(Moves.SAND_ATTACK, PokemonType.GROUND, 100, 15, -1, 0, 1) + new StatusMove(MoveId.SAND_ATTACK, PokemonType.GROUND, 100, 15, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ACC ], -1) .reflectable(), - new AttackMove(Moves.HEADBUTT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 15, 30, 0, 1) + new AttackMove(MoveId.HEADBUTT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 15, 30, 0, 1) .attr(FlinchAttr), - new AttackMove(Moves.HORN_ATTACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 65, 100, 25, -1, 0, 1), - new AttackMove(Moves.FURY_ATTACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1) + new AttackMove(MoveId.HORN_ATTACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 65, 100, 25, -1, 0, 1), + new AttackMove(MoveId.FURY_ATTACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1) .attr(MultiHitAttr), - new AttackMove(Moves.HORN_DRILL, PokemonType.NORMAL, MoveCategory.PHYSICAL, 200, 30, 5, -1, 0, 1) + new AttackMove(MoveId.HORN_DRILL, PokemonType.NORMAL, MoveCategory.PHYSICAL, 200, 30, 5, -1, 0, 1) .attr(OneHitKOAttr) .attr(OneHitKOAccuracyAttr), - new AttackMove(Moves.TACKLE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, 0, 1), - new AttackMove(Moves.BODY_SLAM, PokemonType.NORMAL, MoveCategory.PHYSICAL, 85, 100, 15, 30, 0, 1) + new AttackMove(MoveId.TACKLE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, 0, 1), + new AttackMove(MoveId.BODY_SLAM, PokemonType.NORMAL, MoveCategory.PHYSICAL, 85, 100, 15, 30, 0, 1) .attr(AlwaysHitMinimizeAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.WRAP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 90, 20, -1, 0, 1) + new AttackMove(MoveId.WRAP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 90, 20, -1, 0, 1) .attr(TrapAttr, BattlerTagType.WRAP), - new AttackMove(Moves.TAKE_DOWN, PokemonType.NORMAL, MoveCategory.PHYSICAL, 90, 85, 20, -1, 0, 1) + new AttackMove(MoveId.TAKE_DOWN, PokemonType.NORMAL, MoveCategory.PHYSICAL, 90, 85, 20, -1, 0, 1) .attr(RecoilAttr) .recklessMove(), - new AttackMove(Moves.THRASH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 1) + new AttackMove(MoveId.THRASH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 1) .attr(FrenzyAttr) .attr(MissEffectAttr, frenzyMissFunc) .attr(NoEffectAttr, frenzyMissFunc) .target(MoveTarget.RANDOM_NEAR_ENEMY), - new AttackMove(Moves.DOUBLE_EDGE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 1) + new AttackMove(MoveId.DOUBLE_EDGE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 1) .attr(RecoilAttr, false, 0.33) .recklessMove(), - new StatusMove(Moves.TAIL_WHIP, PokemonType.NORMAL, 100, 30, -1, 0, 1) + new StatusMove(MoveId.TAIL_WHIP, PokemonType.NORMAL, 100, 30, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.POISON_STING, PokemonType.POISON, MoveCategory.PHYSICAL, 15, 100, 35, 30, 0, 1) + new AttackMove(MoveId.POISON_STING, PokemonType.POISON, MoveCategory.PHYSICAL, 15, 100, 35, 30, 0, 1) .attr(StatusEffectAttr, StatusEffect.POISON) .makesContact(false), - new AttackMove(Moves.TWINEEDLE, PokemonType.BUG, MoveCategory.PHYSICAL, 25, 100, 20, 20, 0, 1) + new AttackMove(MoveId.TWINEEDLE, PokemonType.BUG, MoveCategory.PHYSICAL, 25, 100, 20, 20, 0, 1) .attr(MultiHitAttr, MultiHitType._2) .attr(StatusEffectAttr, StatusEffect.POISON) .makesContact(false), - new AttackMove(Moves.PIN_MISSILE, PokemonType.BUG, MoveCategory.PHYSICAL, 25, 95, 20, -1, 0, 1) + new AttackMove(MoveId.PIN_MISSILE, PokemonType.BUG, MoveCategory.PHYSICAL, 25, 95, 20, -1, 0, 1) .attr(MultiHitAttr) .makesContact(false), - new StatusMove(Moves.LEER, PokemonType.NORMAL, 100, 30, -1, 0, 1) + new StatusMove(MoveId.LEER, PokemonType.NORMAL, 100, 30, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.BITE, PokemonType.DARK, MoveCategory.PHYSICAL, 60, 100, 25, 30, 0, 1) + new AttackMove(MoveId.BITE, PokemonType.DARK, MoveCategory.PHYSICAL, 60, 100, 25, 30, 0, 1) .attr(FlinchAttr) .bitingMove(), - new StatusMove(Moves.GROWL, PokemonType.NORMAL, 100, 40, -1, 0, 1) + new StatusMove(MoveId.GROWL, PokemonType.NORMAL, 100, 40, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ATK ], -1) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new StatusMove(Moves.ROAR, PokemonType.NORMAL, -1, 20, -1, -6, 1) + new StatusMove(MoveId.ROAR, PokemonType.NORMAL, -1, 20, -1, -6, 1) .attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH) .soundBased() .hidesTarget() .reflectable(), - new StatusMove(Moves.SING, PokemonType.NORMAL, 55, 15, -1, 0, 1) + new StatusMove(MoveId.SING, PokemonType.NORMAL, 55, 15, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP) .soundBased() .reflectable(), - new StatusMove(Moves.SUPERSONIC, PokemonType.NORMAL, 55, 20, -1, 0, 1) + new StatusMove(MoveId.SUPERSONIC, PokemonType.NORMAL, 55, 20, -1, 0, 1) .attr(ConfuseAttr) .soundBased() .reflectable(), - new AttackMove(Moves.SONIC_BOOM, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, 90, 20, -1, 0, 1) + new AttackMove(MoveId.SONIC_BOOM, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, 90, 20, -1, 0, 1) .attr(FixedDamageAttr, 20), - new StatusMove(Moves.DISABLE, PokemonType.NORMAL, 100, 20, -1, 0, 1) + new StatusMove(MoveId.DISABLE, PokemonType.NORMAL, 100, 20, -1, 0, 1) .attr(AddBattlerTagAttr, BattlerTagType.DISABLED, false, true) .condition((user, target, move) => { const lastRealMove = target.getLastXMoves(-1).find(m => !m.virtual); - return !isNullOrUndefined(lastRealMove) && lastRealMove.move !== Moves.NONE && lastRealMove.move !== Moves.STRUGGLE; + return !isNullOrUndefined(lastRealMove) && lastRealMove.move !== MoveId.NONE && lastRealMove.move !== MoveId.STRUGGLE; }) .ignoresSubstitute() .reflectable(), - new AttackMove(Moves.ACID, PokemonType.POISON, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1) + new AttackMove(MoveId.ACID, PokemonType.POISON, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.EMBER, PokemonType.FIRE, MoveCategory.SPECIAL, 40, 100, 25, 10, 0, 1) + new AttackMove(MoveId.EMBER, PokemonType.FIRE, MoveCategory.SPECIAL, 40, 100, 25, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.FLAMETHROWER, PokemonType.FIRE, MoveCategory.SPECIAL, 90, 100, 15, 10, 0, 1) + new AttackMove(MoveId.FLAMETHROWER, PokemonType.FIRE, MoveCategory.SPECIAL, 90, 100, 15, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.BURN), - new StatusMove(Moves.MIST, PokemonType.ICE, -1, 30, -1, 0, 1) + new StatusMove(MoveId.MIST, PokemonType.ICE, -1, 30, -1, 0, 1) .attr(AddArenaTagAttr, ArenaTagType.MIST, 5, true) .target(MoveTarget.USER_SIDE), - new AttackMove(Moves.WATER_GUN, PokemonType.WATER, MoveCategory.SPECIAL, 40, 100, 25, -1, 0, 1), - new AttackMove(Moves.HYDRO_PUMP, PokemonType.WATER, MoveCategory.SPECIAL, 110, 80, 5, -1, 0, 1), - new AttackMove(Moves.SURF, PokemonType.WATER, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 1) + new AttackMove(MoveId.WATER_GUN, PokemonType.WATER, MoveCategory.SPECIAL, 40, 100, 25, -1, 0, 1), + new AttackMove(MoveId.HYDRO_PUMP, PokemonType.WATER, MoveCategory.SPECIAL, 110, 80, 5, -1, 0, 1), + new AttackMove(MoveId.SURF, PokemonType.WATER, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 1) .target(MoveTarget.ALL_NEAR_OTHERS) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.UNDERWATER) .attr(GulpMissileTagAttr), - new AttackMove(Moves.ICE_BEAM, PokemonType.ICE, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 1) + new AttackMove(MoveId.ICE_BEAM, PokemonType.ICE, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.FREEZE), - new AttackMove(Moves.BLIZZARD, PokemonType.ICE, MoveCategory.SPECIAL, 110, 70, 5, 10, 0, 1) + new AttackMove(MoveId.BLIZZARD, PokemonType.ICE, MoveCategory.SPECIAL, 110, 70, 5, 10, 0, 1) .attr(BlizzardAccuracyAttr) .attr(StatusEffectAttr, StatusEffect.FREEZE) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.PSYBEAM, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 65, 100, 20, 10, 0, 1) + new AttackMove(MoveId.PSYBEAM, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 65, 100, 20, 10, 0, 1) .attr(ConfuseAttr), - new AttackMove(Moves.BUBBLE_BEAM, PokemonType.WATER, MoveCategory.SPECIAL, 65, 100, 20, 10, 0, 1) + new AttackMove(MoveId.BUBBLE_BEAM, PokemonType.WATER, MoveCategory.SPECIAL, 65, 100, 20, 10, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPD ], -1), - new AttackMove(Moves.AURORA_BEAM, PokemonType.ICE, MoveCategory.SPECIAL, 65, 100, 20, 10, 0, 1) + new AttackMove(MoveId.AURORA_BEAM, PokemonType.ICE, MoveCategory.SPECIAL, 65, 100, 20, 10, 0, 1) .attr(StatStageChangeAttr, [ Stat.ATK ], -1), - new AttackMove(Moves.HYPER_BEAM, PokemonType.NORMAL, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 1) + new AttackMove(MoveId.HYPER_BEAM, PokemonType.NORMAL, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 1) .attr(RechargeAttr), - new AttackMove(Moves.PECK, PokemonType.FLYING, MoveCategory.PHYSICAL, 35, 100, 35, -1, 0, 1), - new AttackMove(Moves.DRILL_PECK, PokemonType.FLYING, MoveCategory.PHYSICAL, 80, 100, 20, -1, 0, 1), - new AttackMove(Moves.SUBMISSION, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 80, 80, 20, -1, 0, 1) + new AttackMove(MoveId.PECK, PokemonType.FLYING, MoveCategory.PHYSICAL, 35, 100, 35, -1, 0, 1), + new AttackMove(MoveId.DRILL_PECK, PokemonType.FLYING, MoveCategory.PHYSICAL, 80, 100, 20, -1, 0, 1), + new AttackMove(MoveId.SUBMISSION, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 80, 80, 20, -1, 0, 1) .attr(RecoilAttr) .recklessMove(), - new AttackMove(Moves.LOW_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 1) + new AttackMove(MoveId.LOW_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 1) .attr(WeightPowerAttr), - new AttackMove(Moves.COUNTER, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, -5, 1) + new AttackMove(MoveId.COUNTER, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, -5, 1) .attr(CounterDamageAttr, (move: Move) => move.category === MoveCategory.PHYSICAL, 2) .target(MoveTarget.ATTACKER), - new AttackMove(Moves.SEISMIC_TOSS, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 1) + new AttackMove(MoveId.SEISMIC_TOSS, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 1) .attr(LevelDamageAttr), - new AttackMove(Moves.STRENGTH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 1), - new AttackMove(Moves.ABSORB, PokemonType.GRASS, MoveCategory.SPECIAL, 20, 100, 25, -1, 0, 1) + new AttackMove(MoveId.STRENGTH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 1), + new AttackMove(MoveId.ABSORB, PokemonType.GRASS, MoveCategory.SPECIAL, 20, 100, 25, -1, 0, 1) .attr(HitHealAttr) .triageMove(), - new AttackMove(Moves.MEGA_DRAIN, PokemonType.GRASS, MoveCategory.SPECIAL, 40, 100, 15, -1, 0, 1) + new AttackMove(MoveId.MEGA_DRAIN, PokemonType.GRASS, MoveCategory.SPECIAL, 40, 100, 15, -1, 0, 1) .attr(HitHealAttr) .triageMove(), - new StatusMove(Moves.LEECH_SEED, PokemonType.GRASS, 90, 10, -1, 0, 1) + new StatusMove(MoveId.LEECH_SEED, PokemonType.GRASS, 90, 10, -1, 0, 1) .attr(LeechSeedAttr) .condition((user, target, move) => !target.getTag(BattlerTagType.SEEDED) && !target.isOfType(PokemonType.GRASS)) .reflectable(), - new SelfStatusMove(Moves.GROWTH, PokemonType.NORMAL, -1, 20, -1, 0, 1) + new SelfStatusMove(MoveId.GROWTH, PokemonType.NORMAL, -1, 20, -1, 0, 1) .attr(GrowthStatStageChangeAttr), - new AttackMove(Moves.RAZOR_LEAF, PokemonType.GRASS, MoveCategory.PHYSICAL, 55, 95, 25, -1, 0, 1) + new AttackMove(MoveId.RAZOR_LEAF, PokemonType.GRASS, MoveCategory.PHYSICAL, 55, 95, 25, -1, 0, 1) .attr(HighCritAttr) .makesContact(false) .slicingMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new ChargingAttackMove(Moves.SOLAR_BEAM, PokemonType.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1) + new ChargingAttackMove(MoveId.SOLAR_BEAM, PokemonType.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1) .chargeText(i18next.t("moveTriggers:tookInSunlight", { pokemonName: "{USER}" })) .chargeAttr(WeatherInstantChargeAttr, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]) .attr(AntiSunlightPowerDecreaseAttr), - new StatusMove(Moves.POISON_POWDER, PokemonType.POISON, 75, 35, -1, 0, 1) + new StatusMove(MoveId.POISON_POWDER, PokemonType.POISON, 75, 35, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.POISON) .powderMove() .reflectable(), - new StatusMove(Moves.STUN_SPORE, PokemonType.GRASS, 75, 30, -1, 0, 1) + new StatusMove(MoveId.STUN_SPORE, PokemonType.GRASS, 75, 30, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .powderMove() .reflectable(), - new StatusMove(Moves.SLEEP_POWDER, PokemonType.GRASS, 75, 15, -1, 0, 1) + new StatusMove(MoveId.SLEEP_POWDER, PokemonType.GRASS, 75, 15, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP) .powderMove() .reflectable(), - new AttackMove(Moves.PETAL_DANCE, PokemonType.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1) + new AttackMove(MoveId.PETAL_DANCE, PokemonType.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1) .attr(FrenzyAttr) .attr(MissEffectAttr, frenzyMissFunc) .attr(NoEffectAttr, frenzyMissFunc) .makesContact() .danceMove() .target(MoveTarget.RANDOM_NEAR_ENEMY), - new StatusMove(Moves.STRING_SHOT, PokemonType.BUG, 95, 40, -1, 0, 1) + new StatusMove(MoveId.STRING_SHOT, PokemonType.BUG, 95, 40, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPD ], -2) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.DRAGON_RAGE, PokemonType.DRAGON, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 1) + new AttackMove(MoveId.DRAGON_RAGE, PokemonType.DRAGON, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 1) .attr(FixedDamageAttr, 40), - new AttackMove(Moves.FIRE_SPIN, PokemonType.FIRE, MoveCategory.SPECIAL, 35, 85, 15, -1, 0, 1) + new AttackMove(MoveId.FIRE_SPIN, PokemonType.FIRE, MoveCategory.SPECIAL, 35, 85, 15, -1, 0, 1) .attr(TrapAttr, BattlerTagType.FIRE_SPIN), - new AttackMove(Moves.THUNDER_SHOCK, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1) + new AttackMove(MoveId.THUNDER_SHOCK, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.THUNDERBOLT, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 90, 100, 15, 10, 0, 1) + new AttackMove(MoveId.THUNDERBOLT, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 90, 100, 15, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new StatusMove(Moves.THUNDER_WAVE, PokemonType.ELECTRIC, 90, 20, -1, 0, 1) + new StatusMove(MoveId.THUNDER_WAVE, PokemonType.ELECTRIC, 90, 20, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .attr(RespectAttackTypeImmunityAttr) .reflectable(), - new AttackMove(Moves.THUNDER, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 110, 70, 10, 30, 0, 1) + new AttackMove(MoveId.THUNDER, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 110, 70, 10, 30, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .attr(ThunderAccuracyAttr) .attr(HitsTagAttr, BattlerTagType.FLYING), - new AttackMove(Moves.ROCK_THROW, PokemonType.ROCK, MoveCategory.PHYSICAL, 50, 90, 15, -1, 0, 1) + new AttackMove(MoveId.ROCK_THROW, PokemonType.ROCK, MoveCategory.PHYSICAL, 50, 90, 15, -1, 0, 1) .makesContact(false), - new AttackMove(Moves.EARTHQUAKE, PokemonType.GROUND, MoveCategory.PHYSICAL, 100, 100, 10, -1, 0, 1) + new AttackMove(MoveId.EARTHQUAKE, PokemonType.GROUND, MoveCategory.PHYSICAL, 100, 100, 10, -1, 0, 1) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.UNDERGROUND) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.GRASSY && target.isGrounded() ? 0.5 : 1) .makesContact(false) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.FISSURE, PokemonType.GROUND, MoveCategory.PHYSICAL, 200, 30, 5, -1, 0, 1) + new AttackMove(MoveId.FISSURE, PokemonType.GROUND, MoveCategory.PHYSICAL, 200, 30, 5, -1, 0, 1) .attr(OneHitKOAttr) .attr(OneHitKOAccuracyAttr) .attr(HitsTagAttr, BattlerTagType.UNDERGROUND) .makesContact(false), - new ChargingAttackMove(Moves.DIG, PokemonType.GROUND, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 1) + new ChargingAttackMove(MoveId.DIG, PokemonType.GROUND, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 1) .chargeText(i18next.t("moveTriggers:dugAHole", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.UNDERGROUND), - new StatusMove(Moves.TOXIC, PokemonType.POISON, 90, 10, -1, 0, 1) + new StatusMove(MoveId.TOXIC, PokemonType.POISON, 90, 10, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.TOXIC) .attr(ToxicAccuracyAttr) .reflectable(), - new AttackMove(Moves.CONFUSION, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 50, 100, 25, 10, 0, 1) + new AttackMove(MoveId.CONFUSION, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 50, 100, 25, 10, 0, 1) .attr(ConfuseAttr), - new AttackMove(Moves.PSYCHIC, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 1) + new AttackMove(MoveId.PSYCHIC, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1), - new StatusMove(Moves.HYPNOSIS, PokemonType.PSYCHIC, 60, 20, -1, 0, 1) + new StatusMove(MoveId.HYPNOSIS, PokemonType.PSYCHIC, 60, 20, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP) .reflectable(), - new SelfStatusMove(Moves.MEDITATE, PokemonType.PSYCHIC, -1, 40, -1, 0, 1) + new SelfStatusMove(MoveId.MEDITATE, PokemonType.PSYCHIC, -1, 40, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true), - new SelfStatusMove(Moves.AGILITY, PokemonType.PSYCHIC, -1, 30, -1, 0, 1) + new SelfStatusMove(MoveId.AGILITY, PokemonType.PSYCHIC, -1, 30, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPD ], 2, true), - new AttackMove(Moves.QUICK_ATTACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 1), - new AttackMove(Moves.RAGE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 20, 100, 20, -1, 0, 1) + new AttackMove(MoveId.QUICK_ATTACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 1), + new AttackMove(MoveId.RAGE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 20, 100, 20, -1, 0, 1) .partial(), // No effect implemented - new SelfStatusMove(Moves.TELEPORT, PokemonType.PSYCHIC, -1, 20, -1, -6, 1) + new SelfStatusMove(MoveId.TELEPORT, PokemonType.PSYCHIC, -1, 20, -1, -6, 1) .attr(ForceSwitchOutAttr, true) .hidesUser(), - new AttackMove(Moves.NIGHT_SHADE, PokemonType.GHOST, MoveCategory.SPECIAL, -1, 100, 15, -1, 0, 1) + new AttackMove(MoveId.NIGHT_SHADE, PokemonType.GHOST, MoveCategory.SPECIAL, -1, 100, 15, -1, 0, 1) .attr(LevelDamageAttr), - new StatusMove(Moves.MIMIC, PokemonType.NORMAL, -1, 10, -1, 0, 1) + new StatusMove(MoveId.MIMIC, PokemonType.NORMAL, -1, 10, -1, 0, 1) .attr(MovesetCopyMoveAttr) .ignoresSubstitute(), - new StatusMove(Moves.SCREECH, PokemonType.NORMAL, 85, 40, -1, 0, 1) + new StatusMove(MoveId.SCREECH, PokemonType.NORMAL, 85, 40, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], -2) .soundBased() .reflectable(), - new SelfStatusMove(Moves.DOUBLE_TEAM, PokemonType.NORMAL, -1, 15, -1, 0, 1) + new SelfStatusMove(MoveId.DOUBLE_TEAM, PokemonType.NORMAL, -1, 15, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.EVA ], 1, true), - new SelfStatusMove(Moves.RECOVER, PokemonType.NORMAL, -1, 5, -1, 0, 1) + new SelfStatusMove(MoveId.RECOVER, PokemonType.NORMAL, -1, 5, -1, 0, 1) .attr(HealAttr, 0.5) .triageMove(), - new SelfStatusMove(Moves.HARDEN, PokemonType.NORMAL, -1, 30, -1, 0, 1) + new SelfStatusMove(MoveId.HARDEN, PokemonType.NORMAL, -1, 30, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], 1, true), - new SelfStatusMove(Moves.MINIMIZE, PokemonType.NORMAL, -1, 10, -1, 0, 1) + new SelfStatusMove(MoveId.MINIMIZE, PokemonType.NORMAL, -1, 10, -1, 0, 1) .attr(AddBattlerTagAttr, BattlerTagType.MINIMIZED, true, false) .attr(StatStageChangeAttr, [ Stat.EVA ], 2, true), - new StatusMove(Moves.SMOKESCREEN, PokemonType.NORMAL, 100, 20, -1, 0, 1) + new StatusMove(MoveId.SMOKESCREEN, PokemonType.NORMAL, 100, 20, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ACC ], -1) .reflectable(), - new StatusMove(Moves.CONFUSE_RAY, PokemonType.GHOST, 100, 10, -1, 0, 1) + new StatusMove(MoveId.CONFUSE_RAY, PokemonType.GHOST, 100, 10, -1, 0, 1) .attr(ConfuseAttr) .reflectable(), - new SelfStatusMove(Moves.WITHDRAW, PokemonType.WATER, -1, 40, -1, 0, 1) + new SelfStatusMove(MoveId.WITHDRAW, PokemonType.WATER, -1, 40, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], 1, true), - new SelfStatusMove(Moves.DEFENSE_CURL, PokemonType.NORMAL, -1, 40, -1, 0, 1) + new SelfStatusMove(MoveId.DEFENSE_CURL, PokemonType.NORMAL, -1, 40, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], 1, true), - new SelfStatusMove(Moves.BARRIER, PokemonType.PSYCHIC, -1, 20, -1, 0, 1) + new SelfStatusMove(MoveId.BARRIER, PokemonType.PSYCHIC, -1, 20, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true), - new StatusMove(Moves.LIGHT_SCREEN, PokemonType.PSYCHIC, -1, 30, -1, 0, 1) + new StatusMove(MoveId.LIGHT_SCREEN, PokemonType.PSYCHIC, -1, 30, -1, 0, 1) .attr(AddArenaTagAttr, ArenaTagType.LIGHT_SCREEN, 5, true) .target(MoveTarget.USER_SIDE), - new SelfStatusMove(Moves.HAZE, PokemonType.ICE, -1, 30, -1, 0, 1) + new SelfStatusMove(MoveId.HAZE, PokemonType.ICE, -1, 30, -1, 0, 1) .ignoresSubstitute() .attr(ResetStatsAttr, true), - new StatusMove(Moves.REFLECT, PokemonType.PSYCHIC, -1, 20, -1, 0, 1) + new StatusMove(MoveId.REFLECT, PokemonType.PSYCHIC, -1, 20, -1, 0, 1) .attr(AddArenaTagAttr, ArenaTagType.REFLECT, 5, true) .target(MoveTarget.USER_SIDE), - new SelfStatusMove(Moves.FOCUS_ENERGY, PokemonType.NORMAL, -1, 30, -1, 0, 1) + new SelfStatusMove(MoveId.FOCUS_ENERGY, PokemonType.NORMAL, -1, 30, -1, 0, 1) .attr(AddBattlerTagAttr, BattlerTagType.CRIT_BOOST, true, true), - new AttackMove(Moves.BIDE, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, -1, 10, -1, 1, 1) + new AttackMove(MoveId.BIDE, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, -1, 10, -1, 1, 1) .target(MoveTarget.USER) .unimplemented(), - new SelfStatusMove(Moves.METRONOME, PokemonType.NORMAL, -1, 10, -1, 0, 1) + new SelfStatusMove(MoveId.METRONOME, PokemonType.NORMAL, -1, 10, -1, 0, 1) .attr(RandomMoveAttr, invalidMetronomeMoves), - new StatusMove(Moves.MIRROR_MOVE, PokemonType.FLYING, -1, 20, -1, 0, 1) + new StatusMove(MoveId.MIRROR_MOVE, PokemonType.FLYING, -1, 20, -1, 0, 1) .attr(CopyMoveAttr, true, invalidMirrorMoveMoves), - new AttackMove(Moves.SELF_DESTRUCT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 200, 100, 5, -1, 0, 1) + new AttackMove(MoveId.SELF_DESTRUCT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 200, 100, 5, -1, 0, 1) .attr(SacrificialAttr) .makesContact(false) .condition(failIfDampCondition) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.EGG_BOMB, PokemonType.NORMAL, MoveCategory.PHYSICAL, 100, 75, 10, -1, 0, 1) + new AttackMove(MoveId.EGG_BOMB, PokemonType.NORMAL, MoveCategory.PHYSICAL, 100, 75, 10, -1, 0, 1) .makesContact(false) .ballBombMove(), - new AttackMove(Moves.LICK, PokemonType.GHOST, MoveCategory.PHYSICAL, 30, 100, 30, 30, 0, 1) + new AttackMove(MoveId.LICK, PokemonType.GHOST, MoveCategory.PHYSICAL, 30, 100, 30, 30, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.SMOG, PokemonType.POISON, MoveCategory.SPECIAL, 30, 70, 20, 40, 0, 1) + new AttackMove(MoveId.SMOG, PokemonType.POISON, MoveCategory.SPECIAL, 30, 70, 20, 40, 0, 1) .attr(StatusEffectAttr, StatusEffect.POISON), - new AttackMove(Moves.SLUDGE, PokemonType.POISON, MoveCategory.SPECIAL, 65, 100, 20, 30, 0, 1) + new AttackMove(MoveId.SLUDGE, PokemonType.POISON, MoveCategory.SPECIAL, 65, 100, 20, 30, 0, 1) .attr(StatusEffectAttr, StatusEffect.POISON), - new AttackMove(Moves.BONE_CLUB, PokemonType.GROUND, MoveCategory.PHYSICAL, 65, 85, 20, 10, 0, 1) + new AttackMove(MoveId.BONE_CLUB, PokemonType.GROUND, MoveCategory.PHYSICAL, 65, 85, 20, 10, 0, 1) .attr(FlinchAttr) .makesContact(false), - new AttackMove(Moves.FIRE_BLAST, PokemonType.FIRE, MoveCategory.SPECIAL, 110, 85, 5, 10, 0, 1) + new AttackMove(MoveId.FIRE_BLAST, PokemonType.FIRE, MoveCategory.SPECIAL, 110, 85, 5, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.WATERFALL, PokemonType.WATER, MoveCategory.PHYSICAL, 80, 100, 15, 20, 0, 1) + new AttackMove(MoveId.WATERFALL, PokemonType.WATER, MoveCategory.PHYSICAL, 80, 100, 15, 20, 0, 1) .attr(FlinchAttr), - new AttackMove(Moves.CLAMP, PokemonType.WATER, MoveCategory.PHYSICAL, 35, 85, 15, -1, 0, 1) + new AttackMove(MoveId.CLAMP, PokemonType.WATER, MoveCategory.PHYSICAL, 35, 85, 15, -1, 0, 1) .attr(TrapAttr, BattlerTagType.CLAMP), - new AttackMove(Moves.SWIFT, PokemonType.NORMAL, MoveCategory.SPECIAL, 60, -1, 20, -1, 0, 1) + new AttackMove(MoveId.SWIFT, PokemonType.NORMAL, MoveCategory.SPECIAL, 60, -1, 20, -1, 0, 1) .target(MoveTarget.ALL_NEAR_ENEMIES), - new ChargingAttackMove(Moves.SKULL_BASH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 130, 100, 10, -1, 0, 1) + new ChargingAttackMove(MoveId.SKULL_BASH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 130, 100, 10, -1, 0, 1) .chargeText(i18next.t("moveTriggers:loweredItsHead", { pokemonName: "{USER}" })) .chargeAttr(StatStageChangeAttr, [ Stat.DEF ], 1, true), - new AttackMove(Moves.SPIKE_CANNON, PokemonType.NORMAL, MoveCategory.PHYSICAL, 20, 100, 15, -1, 0, 1) + new AttackMove(MoveId.SPIKE_CANNON, PokemonType.NORMAL, MoveCategory.PHYSICAL, 20, 100, 15, -1, 0, 1) .attr(MultiHitAttr) .makesContact(false), - new AttackMove(Moves.CONSTRICT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 10, 100, 35, 10, 0, 1) + new AttackMove(MoveId.CONSTRICT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 10, 100, 35, 10, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPD ], -1), - new SelfStatusMove(Moves.AMNESIA, PokemonType.PSYCHIC, -1, 20, -1, 0, 1) + new SelfStatusMove(MoveId.AMNESIA, PokemonType.PSYCHIC, -1, 20, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPDEF ], 2, true), - new StatusMove(Moves.KINESIS, PokemonType.PSYCHIC, 80, 15, -1, 0, 1) + new StatusMove(MoveId.KINESIS, PokemonType.PSYCHIC, 80, 15, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ACC ], -1) .reflectable(), - new SelfStatusMove(Moves.SOFT_BOILED, PokemonType.NORMAL, -1, 5, -1, 0, 1) + new SelfStatusMove(MoveId.SOFT_BOILED, PokemonType.NORMAL, -1, 5, -1, 0, 1) .attr(HealAttr, 0.5) .triageMove(), - new AttackMove(Moves.HIGH_JUMP_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 130, 90, 10, -1, 0, 1) + new AttackMove(MoveId.HIGH_JUMP_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 130, 90, 10, -1, 0, 1) .attr(MissEffectAttr, crashDamageFunc) .attr(NoEffectAttr, crashDamageFunc) .condition(failOnGravityCondition) .recklessMove(), - new StatusMove(Moves.GLARE, PokemonType.NORMAL, 100, 30, -1, 0, 1) + new StatusMove(MoveId.GLARE, PokemonType.NORMAL, 100, 30, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .reflectable(), - new AttackMove(Moves.DREAM_EATER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 15, -1, 0, 1) + new AttackMove(MoveId.DREAM_EATER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 15, -1, 0, 1) .attr(HitHealAttr) .condition(targetSleptOrComatoseCondition) .triageMove(), - new StatusMove(Moves.POISON_GAS, PokemonType.POISON, 90, 40, -1, 0, 1) + new StatusMove(MoveId.POISON_GAS, PokemonType.POISON, 90, 40, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.POISON) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.BARRAGE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1) + new AttackMove(MoveId.BARRAGE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1) .attr(MultiHitAttr) .makesContact(false) .ballBombMove(), - new AttackMove(Moves.LEECH_LIFE, PokemonType.BUG, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 1) + new AttackMove(MoveId.LEECH_LIFE, PokemonType.BUG, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 1) .attr(HitHealAttr) .triageMove(), - new StatusMove(Moves.LOVELY_KISS, PokemonType.NORMAL, 75, 10, -1, 0, 1) + new StatusMove(MoveId.LOVELY_KISS, PokemonType.NORMAL, 75, 10, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP) .reflectable(), - new ChargingAttackMove(Moves.SKY_ATTACK, PokemonType.FLYING, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 1) + new ChargingAttackMove(MoveId.SKY_ATTACK, PokemonType.FLYING, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 1) .chargeText(i18next.t("moveTriggers:isGlowing", { pokemonName: "{USER}" })) .attr(HighCritAttr) .attr(FlinchAttr) .makesContact(false), - new StatusMove(Moves.TRANSFORM, PokemonType.NORMAL, -1, 10, -1, 0, 1) + new StatusMove(MoveId.TRANSFORM, PokemonType.NORMAL, -1, 10, -1, 0, 1) .attr(TransformAttr) .condition((user, target, move) => !target.getTag(BattlerTagType.SUBSTITUTE)) .condition((user, target, move) => !target.summonData.illusion && !user.summonData.illusion) @@ -8683,160 +8683,160 @@ export function initMoves() { .ignoresProtect() // Transforming should copy the target's rage fist hit count .edgeCase(), - new AttackMove(Moves.BUBBLE, PokemonType.WATER, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1) + new AttackMove(MoveId.BUBBLE, PokemonType.WATER, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.DIZZY_PUNCH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 10, 20, 0, 1) + new AttackMove(MoveId.DIZZY_PUNCH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 10, 20, 0, 1) .attr(ConfuseAttr) .punchingMove(), - new StatusMove(Moves.SPORE, PokemonType.GRASS, 100, 15, -1, 0, 1) + new StatusMove(MoveId.SPORE, PokemonType.GRASS, 100, 15, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP) .powderMove() .reflectable(), - new StatusMove(Moves.FLASH, PokemonType.NORMAL, 100, 20, -1, 0, 1) + new StatusMove(MoveId.FLASH, PokemonType.NORMAL, 100, 20, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ACC ], -1) .reflectable(), - new AttackMove(Moves.PSYWAVE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 15, -1, 0, 1) + new AttackMove(MoveId.PSYWAVE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 15, -1, 0, 1) .attr(RandomLevelDamageAttr), - new SelfStatusMove(Moves.SPLASH, PokemonType.NORMAL, -1, 40, -1, 0, 1) + new SelfStatusMove(MoveId.SPLASH, PokemonType.NORMAL, -1, 40, -1, 0, 1) .attr(SplashAttr) .condition(failOnGravityCondition), - new SelfStatusMove(Moves.ACID_ARMOR, PokemonType.POISON, -1, 20, -1, 0, 1) + new SelfStatusMove(MoveId.ACID_ARMOR, PokemonType.POISON, -1, 20, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true), - new AttackMove(Moves.CRABHAMMER, PokemonType.WATER, MoveCategory.PHYSICAL, 100, 90, 10, -1, 0, 1) + new AttackMove(MoveId.CRABHAMMER, PokemonType.WATER, MoveCategory.PHYSICAL, 100, 90, 10, -1, 0, 1) .attr(HighCritAttr), - new AttackMove(Moves.EXPLOSION, PokemonType.NORMAL, MoveCategory.PHYSICAL, 250, 100, 5, -1, 0, 1) + new AttackMove(MoveId.EXPLOSION, PokemonType.NORMAL, MoveCategory.PHYSICAL, 250, 100, 5, -1, 0, 1) .condition(failIfDampCondition) .attr(SacrificialAttr) .makesContact(false) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.FURY_SWIPES, PokemonType.NORMAL, MoveCategory.PHYSICAL, 18, 80, 15, -1, 0, 1) + new AttackMove(MoveId.FURY_SWIPES, PokemonType.NORMAL, MoveCategory.PHYSICAL, 18, 80, 15, -1, 0, 1) .attr(MultiHitAttr), - new AttackMove(Moves.BONEMERANG, PokemonType.GROUND, MoveCategory.PHYSICAL, 50, 90, 10, -1, 0, 1) + new AttackMove(MoveId.BONEMERANG, PokemonType.GROUND, MoveCategory.PHYSICAL, 50, 90, 10, -1, 0, 1) .attr(MultiHitAttr, MultiHitType._2) .makesContact(false), - new SelfStatusMove(Moves.REST, PokemonType.PSYCHIC, -1, 5, -1, 0, 1) + new SelfStatusMove(MoveId.REST, PokemonType.PSYCHIC, -1, 5, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP, true, 3, true) .attr(HealAttr, 1, true) .condition((user, target, move) => !user.isFullHp() && user.canSetStatus(StatusEffect.SLEEP, true, true, user)) .triageMove(), - new AttackMove(Moves.ROCK_SLIDE, PokemonType.ROCK, MoveCategory.PHYSICAL, 75, 90, 10, 30, 0, 1) + new AttackMove(MoveId.ROCK_SLIDE, PokemonType.ROCK, MoveCategory.PHYSICAL, 75, 90, 10, 30, 0, 1) .attr(FlinchAttr) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.HYPER_FANG, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 90, 15, 10, 0, 1) + new AttackMove(MoveId.HYPER_FANG, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 90, 15, 10, 0, 1) .attr(FlinchAttr) .bitingMove(), - new SelfStatusMove(Moves.SHARPEN, PokemonType.NORMAL, -1, 30, -1, 0, 1) + new SelfStatusMove(MoveId.SHARPEN, PokemonType.NORMAL, -1, 30, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true), - new SelfStatusMove(Moves.CONVERSION, PokemonType.NORMAL, -1, 30, -1, 0, 1) + new SelfStatusMove(MoveId.CONVERSION, PokemonType.NORMAL, -1, 30, -1, 0, 1) .attr(FirstMoveTypeAttr), - new AttackMove(Moves.TRI_ATTACK, PokemonType.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, 20, 0, 1) + new AttackMove(MoveId.TRI_ATTACK, PokemonType.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, 20, 0, 1) .attr(MultiStatusEffectAttr, [ StatusEffect.BURN, StatusEffect.FREEZE, StatusEffect.PARALYSIS ]), - new AttackMove(Moves.SUPER_FANG, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 90, 10, -1, 0, 1) + new AttackMove(MoveId.SUPER_FANG, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 90, 10, -1, 0, 1) .attr(TargetHalfHpDamageAttr), - new AttackMove(Moves.SLASH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 1) + new AttackMove(MoveId.SLASH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 1) .attr(HighCritAttr) .slicingMove(), - new SelfStatusMove(Moves.SUBSTITUTE, PokemonType.NORMAL, -1, 10, -1, 0, 1) + new SelfStatusMove(MoveId.SUBSTITUTE, PokemonType.NORMAL, -1, 10, -1, 0, 1) .attr(AddSubstituteAttr, 0.25, false), - new AttackMove(Moves.STRUGGLE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 50, -1, 1, -1, 0, 1) + new AttackMove(MoveId.STRUGGLE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 50, -1, 1, -1, 0, 1) .attr(RecoilAttr, true, 0.25, true) .attr(TypelessAttr) .target(MoveTarget.RANDOM_NEAR_ENEMY), - new StatusMove(Moves.SKETCH, PokemonType.NORMAL, -1, 1, -1, 0, 2) + new StatusMove(MoveId.SKETCH, PokemonType.NORMAL, -1, 1, -1, 0, 2) .ignoresSubstitute() .attr(SketchAttr), - new AttackMove(Moves.TRIPLE_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 10, 90, 10, -1, 0, 2) + new AttackMove(MoveId.TRIPLE_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 10, 90, 10, -1, 0, 2) .attr(MultiHitAttr, MultiHitType._3) .attr(MultiHitPowerIncrementAttr, 3) .checkAllHits(), - new AttackMove(Moves.THIEF, PokemonType.DARK, MoveCategory.PHYSICAL, 60, 100, 25, -1, 0, 2) + new AttackMove(MoveId.THIEF, PokemonType.DARK, MoveCategory.PHYSICAL, 60, 100, 25, -1, 0, 2) .attr(StealHeldItemChanceAttr, 0.3) .edgeCase(), // Should not be able to steal held item if user faints due to Rough Skin, Iron Barbs, etc. // Should be able to steal items from pokemon with Sticky Hold if the damage causes them to faint - new StatusMove(Moves.SPIDER_WEB, PokemonType.BUG, -1, 10, -1, 0, 2) + new StatusMove(MoveId.SPIDER_WEB, PokemonType.BUG, -1, 10, -1, 0, 2) .condition(failIfGhostTypeCondition) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1) .reflectable(), - new StatusMove(Moves.MIND_READER, PokemonType.NORMAL, -1, 5, -1, 0, 2) + new StatusMove(MoveId.MIND_READER, PokemonType.NORMAL, -1, 5, -1, 0, 2) .attr(IgnoreAccuracyAttr), - new StatusMove(Moves.NIGHTMARE, PokemonType.GHOST, 100, 15, -1, 0, 2) + new StatusMove(MoveId.NIGHTMARE, PokemonType.GHOST, 100, 15, -1, 0, 2) .attr(AddBattlerTagAttr, BattlerTagType.NIGHTMARE) .condition(targetSleptOrComatoseCondition), - new AttackMove(Moves.FLAME_WHEEL, PokemonType.FIRE, MoveCategory.PHYSICAL, 60, 100, 25, 10, 0, 2) + new AttackMove(MoveId.FLAME_WHEEL, PokemonType.FIRE, MoveCategory.PHYSICAL, 60, 100, 25, 10, 0, 2) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.SNORE, PokemonType.NORMAL, MoveCategory.SPECIAL, 50, 100, 15, 30, 0, 2) + new AttackMove(MoveId.SNORE, PokemonType.NORMAL, MoveCategory.SPECIAL, 50, 100, 15, 30, 0, 2) .attr(BypassSleepAttr) .attr(FlinchAttr) .condition(userSleptOrComatoseCondition) .soundBased(), - new StatusMove(Moves.CURSE, PokemonType.GHOST, -1, 10, -1, 0, 2) + new StatusMove(MoveId.CURSE, PokemonType.GHOST, -1, 10, -1, 0, 2) .attr(CurseAttr) .ignoresSubstitute() .ignoresProtect() .target(MoveTarget.CURSE), - new AttackMove(Moves.FLAIL, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 2) + new AttackMove(MoveId.FLAIL, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 2) .attr(LowHpPowerAttr), - new StatusMove(Moves.CONVERSION_2, PokemonType.NORMAL, -1, 30, -1, 0, 2) + new StatusMove(MoveId.CONVERSION_2, PokemonType.NORMAL, -1, 30, -1, 0, 2) .attr(ResistLastMoveTypeAttr) .ignoresSubstitute() .partial(), // Checks the move's original typing and not if its type is changed through some other means - new AttackMove(Moves.AEROBLAST, PokemonType.FLYING, MoveCategory.SPECIAL, 100, 95, 5, -1, 0, 2) + new AttackMove(MoveId.AEROBLAST, PokemonType.FLYING, MoveCategory.SPECIAL, 100, 95, 5, -1, 0, 2) .windMove() .attr(HighCritAttr), - new StatusMove(Moves.COTTON_SPORE, PokemonType.GRASS, 100, 40, -1, 0, 2) + new StatusMove(MoveId.COTTON_SPORE, PokemonType.GRASS, 100, 40, -1, 0, 2) .attr(StatStageChangeAttr, [ Stat.SPD ], -2) .powderMove() .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.REVERSAL, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 2) + new AttackMove(MoveId.REVERSAL, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 2) .attr(LowHpPowerAttr), - new StatusMove(Moves.SPITE, PokemonType.GHOST, 100, 10, -1, 0, 2) + new StatusMove(MoveId.SPITE, PokemonType.GHOST, 100, 10, -1, 0, 2) .ignoresSubstitute() .attr(ReducePpMoveAttr, 4) .reflectable(), - new AttackMove(Moves.POWDER_SNOW, PokemonType.ICE, MoveCategory.SPECIAL, 40, 100, 25, 10, 0, 2) + new AttackMove(MoveId.POWDER_SNOW, PokemonType.ICE, MoveCategory.SPECIAL, 40, 100, 25, 10, 0, 2) .attr(StatusEffectAttr, StatusEffect.FREEZE) .target(MoveTarget.ALL_NEAR_ENEMIES), - new SelfStatusMove(Moves.PROTECT, PokemonType.NORMAL, -1, 10, -1, 4, 2) + new SelfStatusMove(MoveId.PROTECT, PokemonType.NORMAL, -1, 10, -1, 4, 2) .attr(ProtectAttr) .condition(failIfLastCondition), - new AttackMove(Moves.MACH_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 2) + new AttackMove(MoveId.MACH_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 2) .punchingMove(), - new StatusMove(Moves.SCARY_FACE, PokemonType.NORMAL, 100, 10, -1, 0, 2) + new StatusMove(MoveId.SCARY_FACE, PokemonType.NORMAL, 100, 10, -1, 0, 2) .attr(StatStageChangeAttr, [ Stat.SPD ], -2) .reflectable(), - new AttackMove(Moves.FEINT_ATTACK, PokemonType.DARK, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 2), - new StatusMove(Moves.SWEET_KISS, PokemonType.FAIRY, 75, 10, -1, 0, 2) + new AttackMove(MoveId.FEINT_ATTACK, PokemonType.DARK, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 2), + new StatusMove(MoveId.SWEET_KISS, PokemonType.FAIRY, 75, 10, -1, 0, 2) .attr(ConfuseAttr) .reflectable(), - new SelfStatusMove(Moves.BELLY_DRUM, PokemonType.NORMAL, -1, 10, -1, 0, 2) + new SelfStatusMove(MoveId.BELLY_DRUM, PokemonType.NORMAL, -1, 10, -1, 0, 2) .attr(CutHpStatStageBoostAttr, [ Stat.ATK ], 12, 2, (user) => { globalScene.queueMessage(i18next.t("moveTriggers:cutOwnHpAndMaximizedStat", { pokemonName: getPokemonNameWithAffix(user), statName: i18next.t(getStatKey(Stat.ATK)) })); }), - new AttackMove(Moves.SLUDGE_BOMB, PokemonType.POISON, MoveCategory.SPECIAL, 90, 100, 10, 30, 0, 2) + new AttackMove(MoveId.SLUDGE_BOMB, PokemonType.POISON, MoveCategory.SPECIAL, 90, 100, 10, 30, 0, 2) .attr(StatusEffectAttr, StatusEffect.POISON) .ballBombMove(), - new AttackMove(Moves.MUD_SLAP, PokemonType.GROUND, MoveCategory.SPECIAL, 20, 100, 10, 100, 0, 2) + new AttackMove(MoveId.MUD_SLAP, PokemonType.GROUND, MoveCategory.SPECIAL, 20, 100, 10, 100, 0, 2) .attr(StatStageChangeAttr, [ Stat.ACC ], -1), - new AttackMove(Moves.OCTAZOOKA, PokemonType.WATER, MoveCategory.SPECIAL, 65, 85, 10, 50, 0, 2) + new AttackMove(MoveId.OCTAZOOKA, PokemonType.WATER, MoveCategory.SPECIAL, 65, 85, 10, 50, 0, 2) .attr(StatStageChangeAttr, [ Stat.ACC ], -1) .ballBombMove(), - new StatusMove(Moves.SPIKES, PokemonType.GROUND, -1, 20, -1, 0, 2) + new StatusMove(MoveId.SPIKES, PokemonType.GROUND, -1, 20, -1, 0, 2) .attr(AddArenaTrapTagAttr, ArenaTagType.SPIKES) .target(MoveTarget.ENEMY_SIDE) .reflectable(), - new AttackMove(Moves.ZAP_CANNON, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 120, 50, 5, 100, 0, 2) + new AttackMove(MoveId.ZAP_CANNON, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 120, 50, 5, 100, 0, 2) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .ballBombMove(), - new StatusMove(Moves.FORESIGHT, PokemonType.NORMAL, -1, 40, -1, 0, 2) + new StatusMove(MoveId.FORESIGHT, PokemonType.NORMAL, -1, 40, -1, 0, 2) .attr(ExposedMoveAttr, BattlerTagType.IGNORE_GHOST) .ignoresSubstitute() .reflectable(), - new SelfStatusMove(Moves.DESTINY_BOND, PokemonType.GHOST, -1, 5, -1, 0, 2) + new SelfStatusMove(MoveId.DESTINY_BOND, PokemonType.GHOST, -1, 5, -1, 0, 2) .ignoresProtect() .attr(DestinyBondAttr) .condition((user, target, move) => { @@ -8848,120 +8848,120 @@ export function initMoves() { // - the previous move was unsuccessful return lastTurnMove.length === 0 || lastTurnMove[0].move !== move.id || lastTurnMove[0].result !== MoveResult.SUCCESS; }), - new StatusMove(Moves.PERISH_SONG, PokemonType.NORMAL, -1, 5, -1, 0, 2) + new StatusMove(MoveId.PERISH_SONG, PokemonType.NORMAL, -1, 5, -1, 0, 2) .attr(FaintCountdownAttr) .ignoresProtect() .soundBased() .condition(failOnBossCondition) .target(MoveTarget.ALL), - new AttackMove(Moves.ICY_WIND, PokemonType.ICE, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 2) + new AttackMove(MoveId.ICY_WIND, PokemonType.ICE, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 2) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new SelfStatusMove(Moves.DETECT, PokemonType.FIGHTING, -1, 5, -1, 4, 2) + new SelfStatusMove(MoveId.DETECT, PokemonType.FIGHTING, -1, 5, -1, 4, 2) .attr(ProtectAttr) .condition(failIfLastCondition), - new AttackMove(Moves.BONE_RUSH, PokemonType.GROUND, MoveCategory.PHYSICAL, 25, 90, 10, -1, 0, 2) + new AttackMove(MoveId.BONE_RUSH, PokemonType.GROUND, MoveCategory.PHYSICAL, 25, 90, 10, -1, 0, 2) .attr(MultiHitAttr) .makesContact(false), - new StatusMove(Moves.LOCK_ON, PokemonType.NORMAL, -1, 5, -1, 0, 2) + new StatusMove(MoveId.LOCK_ON, PokemonType.NORMAL, -1, 5, -1, 0, 2) .attr(IgnoreAccuracyAttr), - new AttackMove(Moves.OUTRAGE, PokemonType.DRAGON, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 2) + new AttackMove(MoveId.OUTRAGE, PokemonType.DRAGON, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 2) .attr(FrenzyAttr) .attr(MissEffectAttr, frenzyMissFunc) .attr(NoEffectAttr, frenzyMissFunc) .target(MoveTarget.RANDOM_NEAR_ENEMY), - new StatusMove(Moves.SANDSTORM, PokemonType.ROCK, -1, 10, -1, 0, 2) + new StatusMove(MoveId.SANDSTORM, PokemonType.ROCK, -1, 10, -1, 0, 2) .attr(WeatherChangeAttr, WeatherType.SANDSTORM) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.GIGA_DRAIN, PokemonType.GRASS, MoveCategory.SPECIAL, 75, 100, 10, -1, 0, 2) + new AttackMove(MoveId.GIGA_DRAIN, PokemonType.GRASS, MoveCategory.SPECIAL, 75, 100, 10, -1, 0, 2) .attr(HitHealAttr) .triageMove(), - new SelfStatusMove(Moves.ENDURE, PokemonType.NORMAL, -1, 10, -1, 4, 2) + new SelfStatusMove(MoveId.ENDURE, PokemonType.NORMAL, -1, 10, -1, 4, 2) .attr(ProtectAttr, BattlerTagType.ENDURING) .condition(failIfLastCondition), - new StatusMove(Moves.CHARM, PokemonType.FAIRY, 100, 20, -1, 0, 2) + new StatusMove(MoveId.CHARM, PokemonType.FAIRY, 100, 20, -1, 0, 2) .attr(StatStageChangeAttr, [ Stat.ATK ], -2) .reflectable(), - new AttackMove(Moves.ROLLOUT, PokemonType.ROCK, MoveCategory.PHYSICAL, 30, 90, 20, -1, 0, 2) + new AttackMove(MoveId.ROLLOUT, PokemonType.ROCK, MoveCategory.PHYSICAL, 30, 90, 20, -1, 0, 2) .partial() // Does not lock the user, also does not increase damage properly - .attr(ConsecutiveUseDoublePowerAttr, 5, true, true, Moves.DEFENSE_CURL), - new AttackMove(Moves.FALSE_SWIPE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 2) + .attr(ConsecutiveUseDoublePowerAttr, 5, true, true, MoveId.DEFENSE_CURL), + new AttackMove(MoveId.FALSE_SWIPE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 2) .attr(SurviveDamageAttr), - new StatusMove(Moves.SWAGGER, PokemonType.NORMAL, 85, 15, -1, 0, 2) + new StatusMove(MoveId.SWAGGER, PokemonType.NORMAL, 85, 15, -1, 0, 2) .attr(StatStageChangeAttr, [ Stat.ATK ], 2) .attr(ConfuseAttr) .reflectable(), - new SelfStatusMove(Moves.MILK_DRINK, PokemonType.NORMAL, -1, 5, -1, 0, 2) + new SelfStatusMove(MoveId.MILK_DRINK, PokemonType.NORMAL, -1, 5, -1, 0, 2) .attr(HealAttr, 0.5) .triageMove(), - new AttackMove(Moves.SPARK, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 65, 100, 20, 30, 0, 2) + new AttackMove(MoveId.SPARK, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 65, 100, 20, 30, 0, 2) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.FURY_CUTTER, PokemonType.BUG, MoveCategory.PHYSICAL, 40, 95, 20, -1, 0, 2) + new AttackMove(MoveId.FURY_CUTTER, PokemonType.BUG, MoveCategory.PHYSICAL, 40, 95, 20, -1, 0, 2) .attr(ConsecutiveUseDoublePowerAttr, 3, true) .slicingMove(), - new AttackMove(Moves.STEEL_WING, PokemonType.STEEL, MoveCategory.PHYSICAL, 70, 90, 25, 10, 0, 2) + new AttackMove(MoveId.STEEL_WING, PokemonType.STEEL, MoveCategory.PHYSICAL, 70, 90, 25, 10, 0, 2) .attr(StatStageChangeAttr, [ Stat.DEF ], 1, true), - new StatusMove(Moves.MEAN_LOOK, PokemonType.NORMAL, -1, 5, -1, 0, 2) + new StatusMove(MoveId.MEAN_LOOK, PokemonType.NORMAL, -1, 5, -1, 0, 2) .condition(failIfGhostTypeCondition) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1) .reflectable(), - new StatusMove(Moves.ATTRACT, PokemonType.NORMAL, 100, 15, -1, 0, 2) + new StatusMove(MoveId.ATTRACT, PokemonType.NORMAL, 100, 15, -1, 0, 2) .attr(AddBattlerTagAttr, BattlerTagType.INFATUATED) .ignoresSubstitute() .condition((user, target, move) => user.isOppositeGender(target)) .reflectable(), - new SelfStatusMove(Moves.SLEEP_TALK, PokemonType.NORMAL, -1, 10, -1, 0, 2) + new SelfStatusMove(MoveId.SLEEP_TALK, PokemonType.NORMAL, -1, 10, -1, 0, 2) .attr(BypassSleepAttr) .attr(RandomMovesetMoveAttr, invalidSleepTalkMoves, false) .condition(userSleptOrComatoseCondition) .target(MoveTarget.NEAR_ENEMY), - new StatusMove(Moves.HEAL_BELL, PokemonType.NORMAL, -1, 5, -1, 0, 2) - .attr(PartyStatusCureAttr, i18next.t("moveTriggers:bellChimed"), Abilities.SOUNDPROOF) + new StatusMove(MoveId.HEAL_BELL, PokemonType.NORMAL, -1, 5, -1, 0, 2) + .attr(PartyStatusCureAttr, i18next.t("moveTriggers:bellChimed"), AbilityId.SOUNDPROOF) .soundBased() .target(MoveTarget.PARTY), - new AttackMove(Moves.RETURN, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 2) + new AttackMove(MoveId.RETURN, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 2) .attr(FriendshipPowerAttr), - new AttackMove(Moves.PRESENT, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 90, 15, -1, 0, 2) + new AttackMove(MoveId.PRESENT, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 90, 15, -1, 0, 2) .attr(PresentPowerAttr) .makesContact(false), - new AttackMove(Moves.FRUSTRATION, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 2) + new AttackMove(MoveId.FRUSTRATION, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 2) .attr(FriendshipPowerAttr, true), - new StatusMove(Moves.SAFEGUARD, PokemonType.NORMAL, -1, 25, -1, 0, 2) + new StatusMove(MoveId.SAFEGUARD, PokemonType.NORMAL, -1, 25, -1, 0, 2) .target(MoveTarget.USER_SIDE) .attr(AddArenaTagAttr, ArenaTagType.SAFEGUARD, 5, true, true), - new StatusMove(Moves.PAIN_SPLIT, PokemonType.NORMAL, -1, 20, -1, 0, 2) + new StatusMove(MoveId.PAIN_SPLIT, PokemonType.NORMAL, -1, 20, -1, 0, 2) .attr(HpSplitAttr) .condition(failOnBossCondition), - new AttackMove(Moves.SACRED_FIRE, PokemonType.FIRE, MoveCategory.PHYSICAL, 100, 95, 5, 50, 0, 2) + new AttackMove(MoveId.SACRED_FIRE, PokemonType.FIRE, MoveCategory.PHYSICAL, 100, 95, 5, 50, 0, 2) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN) .makesContact(false), - new AttackMove(Moves.MAGNITUDE, PokemonType.GROUND, MoveCategory.PHYSICAL, -1, 100, 30, -1, 0, 2) + new AttackMove(MoveId.MAGNITUDE, PokemonType.GROUND, MoveCategory.PHYSICAL, -1, 100, 30, -1, 0, 2) .attr(PreMoveMessageAttr, magnitudeMessageFunc) .attr(MagnitudePowerAttr) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.GRASSY && target.isGrounded() ? 0.5 : 1) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.UNDERGROUND) .makesContact(false) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.DYNAMIC_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 50, 5, 100, 0, 2) + new AttackMove(MoveId.DYNAMIC_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 50, 5, 100, 0, 2) .attr(ConfuseAttr) .punchingMove(), - new AttackMove(Moves.MEGAHORN, PokemonType.BUG, MoveCategory.PHYSICAL, 120, 85, 10, -1, 0, 2), - new AttackMove(Moves.DRAGON_BREATH, PokemonType.DRAGON, MoveCategory.SPECIAL, 60, 100, 20, 30, 0, 2) + new AttackMove(MoveId.MEGAHORN, PokemonType.BUG, MoveCategory.PHYSICAL, 120, 85, 10, -1, 0, 2), + new AttackMove(MoveId.DRAGON_BREATH, PokemonType.DRAGON, MoveCategory.SPECIAL, 60, 100, 20, 30, 0, 2) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new SelfStatusMove(Moves.BATON_PASS, PokemonType.NORMAL, -1, 40, -1, 0, 2) + new SelfStatusMove(MoveId.BATON_PASS, PokemonType.NORMAL, -1, 40, -1, 0, 2) .attr(ForceSwitchOutAttr, true, SwitchType.BATON_PASS) .condition(failIfLastInPartyCondition) .hidesUser(), - new StatusMove(Moves.ENCORE, PokemonType.NORMAL, 100, 5, -1, 0, 2) + new StatusMove(MoveId.ENCORE, PokemonType.NORMAL, 100, 5, -1, 0, 2) .attr(AddBattlerTagAttr, BattlerTagType.ENCORE, false, true) .ignoresSubstitute() .condition((user, target, move) => new EncoreTag(user.id).canAdd(target)) .reflectable(), - new AttackMove(Moves.PURSUIT, PokemonType.DARK, MoveCategory.PHYSICAL, 40, 100, 20, -1, 0, 2) + new AttackMove(MoveId.PURSUIT, PokemonType.DARK, MoveCategory.PHYSICAL, 40, 100, 20, -1, 0, 2) .partial(), // No effect implemented - new AttackMove(Moves.RAPID_SPIN, PokemonType.NORMAL, MoveCategory.PHYSICAL, 50, 100, 40, 100, 0, 2) + new AttackMove(MoveId.RAPID_SPIN, PokemonType.NORMAL, MoveCategory.PHYSICAL, 50, 100, 40, 100, 0, 2) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true) .attr(RemoveBattlerTagAttr, [ BattlerTagType.BIND, @@ -8977,256 +8977,256 @@ export function initMoves() { BattlerTagType.INFESTATION ], true) .attr(RemoveArenaTrapAttr), - new StatusMove(Moves.SWEET_SCENT, PokemonType.NORMAL, 100, 20, -1, 0, 2) + new StatusMove(MoveId.SWEET_SCENT, PokemonType.NORMAL, 100, 20, -1, 0, 2) .attr(StatStageChangeAttr, [ Stat.EVA ], -2) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.IRON_TAIL, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 75, 15, 30, 0, 2) + new AttackMove(MoveId.IRON_TAIL, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 75, 15, 30, 0, 2) .attr(StatStageChangeAttr, [ Stat.DEF ], -1), - new AttackMove(Moves.METAL_CLAW, PokemonType.STEEL, MoveCategory.PHYSICAL, 50, 95, 35, 10, 0, 2) + new AttackMove(MoveId.METAL_CLAW, PokemonType.STEEL, MoveCategory.PHYSICAL, 50, 95, 35, 10, 0, 2) .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true), - new AttackMove(Moves.VITAL_THROW, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 70, -1, 10, -1, -1, 2), - new SelfStatusMove(Moves.MORNING_SUN, PokemonType.NORMAL, -1, 5, -1, 0, 2) + new AttackMove(MoveId.VITAL_THROW, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 70, -1, 10, -1, -1, 2), + new SelfStatusMove(MoveId.MORNING_SUN, PokemonType.NORMAL, -1, 5, -1, 0, 2) .attr(PlantHealAttr) .triageMove(), - new SelfStatusMove(Moves.SYNTHESIS, PokemonType.GRASS, -1, 5, -1, 0, 2) + new SelfStatusMove(MoveId.SYNTHESIS, PokemonType.GRASS, -1, 5, -1, 0, 2) .attr(PlantHealAttr) .triageMove(), - new SelfStatusMove(Moves.MOONLIGHT, PokemonType.FAIRY, -1, 5, -1, 0, 2) + new SelfStatusMove(MoveId.MOONLIGHT, PokemonType.FAIRY, -1, 5, -1, 0, 2) .attr(PlantHealAttr) .triageMove(), - new AttackMove(Moves.HIDDEN_POWER, PokemonType.NORMAL, MoveCategory.SPECIAL, 60, 100, 15, -1, 0, 2) + new AttackMove(MoveId.HIDDEN_POWER, PokemonType.NORMAL, MoveCategory.SPECIAL, 60, 100, 15, -1, 0, 2) .attr(HiddenPowerTypeAttr), - new AttackMove(Moves.CROSS_CHOP, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 80, 5, -1, 0, 2) + new AttackMove(MoveId.CROSS_CHOP, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 80, 5, -1, 0, 2) .attr(HighCritAttr), - new AttackMove(Moves.TWISTER, PokemonType.DRAGON, MoveCategory.SPECIAL, 40, 100, 20, 20, 0, 2) + new AttackMove(MoveId.TWISTER, PokemonType.DRAGON, MoveCategory.SPECIAL, 40, 100, 20, 20, 0, 2) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.FLYING) .attr(FlinchAttr) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new StatusMove(Moves.RAIN_DANCE, PokemonType.WATER, -1, 5, -1, 0, 2) + new StatusMove(MoveId.RAIN_DANCE, PokemonType.WATER, -1, 5, -1, 0, 2) .attr(WeatherChangeAttr, WeatherType.RAIN) .target(MoveTarget.BOTH_SIDES), - new StatusMove(Moves.SUNNY_DAY, PokemonType.FIRE, -1, 5, -1, 0, 2) + new StatusMove(MoveId.SUNNY_DAY, PokemonType.FIRE, -1, 5, -1, 0, 2) .attr(WeatherChangeAttr, WeatherType.SUNNY) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.CRUNCH, PokemonType.DARK, MoveCategory.PHYSICAL, 80, 100, 15, 20, 0, 2) + new AttackMove(MoveId.CRUNCH, PokemonType.DARK, MoveCategory.PHYSICAL, 80, 100, 15, 20, 0, 2) .attr(StatStageChangeAttr, [ Stat.DEF ], -1) .bitingMove(), - new AttackMove(Moves.MIRROR_COAT, PokemonType.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 20, -1, -5, 2) + new AttackMove(MoveId.MIRROR_COAT, PokemonType.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 20, -1, -5, 2) .attr(CounterDamageAttr, (move: Move) => move.category === MoveCategory.SPECIAL, 2) .target(MoveTarget.ATTACKER), - new StatusMove(Moves.PSYCH_UP, PokemonType.NORMAL, -1, 10, -1, 0, 2) + new StatusMove(MoveId.PSYCH_UP, PokemonType.NORMAL, -1, 10, -1, 0, 2) .ignoresSubstitute() .attr(CopyStatsAttr), - new AttackMove(Moves.EXTREME_SPEED, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 100, 5, -1, 2, 2), - new AttackMove(Moves.ANCIENT_POWER, PokemonType.ROCK, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 2) + new AttackMove(MoveId.EXTREME_SPEED, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 100, 5, -1, 2, 2), + new AttackMove(MoveId.ANCIENT_POWER, PokemonType.ROCK, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 2) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, true), - new AttackMove(Moves.SHADOW_BALL, PokemonType.GHOST, MoveCategory.SPECIAL, 80, 100, 15, 20, 0, 2) + new AttackMove(MoveId.SHADOW_BALL, PokemonType.GHOST, MoveCategory.SPECIAL, 80, 100, 15, 20, 0, 2) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1) .ballBombMove(), - new AttackMove(Moves.FUTURE_SIGHT, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 2) + new AttackMove(MoveId.FUTURE_SIGHT, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 2) .partial() // cannot be used on multiple Pokemon on the same side in a double battle, hits immediately when called by Metronome/etc, should not apply abilities or held items if user is off the field .ignoresProtect() .attr(DelayedAttackAttr, ArenaTagType.FUTURE_SIGHT, ChargeAnim.FUTURE_SIGHT_CHARGING, i18next.t("moveTriggers:foresawAnAttack", { pokemonName: "{USER}" })), - new AttackMove(Moves.ROCK_SMASH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 15, 50, 0, 2) + new AttackMove(MoveId.ROCK_SMASH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 15, 50, 0, 2) .attr(StatStageChangeAttr, [ Stat.DEF ], -1), - new AttackMove(Moves.WHIRLPOOL, PokemonType.WATER, MoveCategory.SPECIAL, 35, 85, 15, -1, 0, 2) + new AttackMove(MoveId.WHIRLPOOL, PokemonType.WATER, MoveCategory.SPECIAL, 35, 85, 15, -1, 0, 2) .attr(TrapAttr, BattlerTagType.WHIRLPOOL) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.UNDERWATER), - new AttackMove(Moves.BEAT_UP, PokemonType.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 2) + new AttackMove(MoveId.BEAT_UP, PokemonType.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 2) .attr(MultiHitAttr, MultiHitType.BEAT_UP) .attr(BeatUpAttr) .makesContact(false), - new AttackMove(Moves.FAKE_OUT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 10, 100, 3, 3) + new AttackMove(MoveId.FAKE_OUT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 10, 100, 3, 3) .attr(FlinchAttr) .condition(new FirstMoveCondition()), - new AttackMove(Moves.UPROAR, PokemonType.NORMAL, MoveCategory.SPECIAL, 90, 100, 10, -1, 0, 3) + new AttackMove(MoveId.UPROAR, PokemonType.NORMAL, MoveCategory.SPECIAL, 90, 100, 10, -1, 0, 3) .soundBased() .target(MoveTarget.RANDOM_NEAR_ENEMY) .partial(), // Does not lock the user, does not stop Pokemon from sleeping // Likely can make use of FrenzyAttr and an ArenaTag (just without the FrenzyMissFunc) - new SelfStatusMove(Moves.STOCKPILE, PokemonType.NORMAL, -1, 20, -1, 0, 3) + new SelfStatusMove(MoveId.STOCKPILE, PokemonType.NORMAL, -1, 20, -1, 0, 3) .condition(user => (user.getTag(StockpilingTag)?.stockpiledCount ?? 0) < 3) .attr(AddBattlerTagAttr, BattlerTagType.STOCKPILING, true), - new AttackMove(Moves.SPIT_UP, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, -1, 10, -1, 0, 3) + new AttackMove(MoveId.SPIT_UP, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, -1, 10, -1, 0, 3) .condition(hasStockpileStacksCondition) .attr(SpitUpPowerAttr, 100) .attr(RemoveBattlerTagAttr, [ BattlerTagType.STOCKPILING ], true), - new SelfStatusMove(Moves.SWALLOW, PokemonType.NORMAL, -1, 10, -1, 0, 3) + new SelfStatusMove(MoveId.SWALLOW, PokemonType.NORMAL, -1, 10, -1, 0, 3) .condition(hasStockpileStacksCondition) .attr(SwallowHealAttr) .attr(RemoveBattlerTagAttr, [ BattlerTagType.STOCKPILING ], true) .triageMove(), - new AttackMove(Moves.HEAT_WAVE, PokemonType.FIRE, MoveCategory.SPECIAL, 95, 90, 10, 10, 0, 3) + new AttackMove(MoveId.HEAT_WAVE, PokemonType.FIRE, MoveCategory.SPECIAL, 95, 90, 10, 10, 0, 3) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new StatusMove(Moves.HAIL, PokemonType.ICE, -1, 10, -1, 0, 3) + new StatusMove(MoveId.HAIL, PokemonType.ICE, -1, 10, -1, 0, 3) .attr(WeatherChangeAttr, WeatherType.HAIL) .target(MoveTarget.BOTH_SIDES), - new StatusMove(Moves.TORMENT, PokemonType.DARK, 100, 15, -1, 0, 3) + new StatusMove(MoveId.TORMENT, PokemonType.DARK, 100, 15, -1, 0, 3) .ignoresSubstitute() .edgeCase() // Incomplete implementation because of Uproar's partial implementation .attr(AddBattlerTagAttr, BattlerTagType.TORMENT, false, true, 1) .reflectable(), - new StatusMove(Moves.FLATTER, PokemonType.DARK, 100, 15, -1, 0, 3) + new StatusMove(MoveId.FLATTER, PokemonType.DARK, 100, 15, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPATK ], 1) .attr(ConfuseAttr) .reflectable(), - new StatusMove(Moves.WILL_O_WISP, PokemonType.FIRE, 85, 15, -1, 0, 3) + new StatusMove(MoveId.WILL_O_WISP, PokemonType.FIRE, 85, 15, -1, 0, 3) .attr(StatusEffectAttr, StatusEffect.BURN) .reflectable(), - new StatusMove(Moves.MEMENTO, PokemonType.DARK, 100, 10, -1, 0, 3) + new StatusMove(MoveId.MEMENTO, PokemonType.DARK, 100, 10, -1, 0, 3) .attr(SacrificialAttrOnHit) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -2), - new AttackMove(Moves.FACADE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 3) + new AttackMove(MoveId.FACADE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 3) .attr(MovePowerMultiplierAttr, (user, target, move) => user.status && (user.status.effect === StatusEffect.BURN || user.status.effect === StatusEffect.POISON || user.status.effect === StatusEffect.TOXIC || user.status.effect === StatusEffect.PARALYSIS) ? 2 : 1) .attr(BypassBurnDamageReductionAttr), - new AttackMove(Moves.FOCUS_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 150, 100, 20, -1, -3, 3) + new AttackMove(MoveId.FOCUS_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 150, 100, 20, -1, -3, 3) .attr(MessageHeaderAttr, (user, move) => i18next.t("moveTriggers:isTighteningFocus", { pokemonName: getPokemonNameWithAffix(user) })) .attr(PreUseInterruptAttr, (user, target, move) => i18next.t("moveTriggers:lostFocus", { pokemonName: getPokemonNameWithAffix(user) }), user => !!user.turnData.attacksReceived.find(r => r.damage)) .punchingMove(), - new AttackMove(Moves.SMELLING_SALTS, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 10, -1, 0, 3) + new AttackMove(MoveId.SMELLING_SALTS, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 10, -1, 0, 3) .attr(MovePowerMultiplierAttr, (user, target, move) => target.status?.effect === StatusEffect.PARALYSIS ? 2 : 1) .attr(HealStatusEffectAttr, true, StatusEffect.PARALYSIS), - new SelfStatusMove(Moves.FOLLOW_ME, PokemonType.NORMAL, -1, 20, -1, 2, 3) + new SelfStatusMove(MoveId.FOLLOW_ME, PokemonType.NORMAL, -1, 20, -1, 2, 3) .attr(AddBattlerTagAttr, BattlerTagType.CENTER_OF_ATTENTION, true), - new StatusMove(Moves.NATURE_POWER, PokemonType.NORMAL, -1, 20, -1, 0, 3) + new StatusMove(MoveId.NATURE_POWER, PokemonType.NORMAL, -1, 20, -1, 0, 3) .attr(NaturePowerAttr), - new SelfStatusMove(Moves.CHARGE, PokemonType.ELECTRIC, -1, 20, -1, 0, 3) + new SelfStatusMove(MoveId.CHARGE, PokemonType.ELECTRIC, -1, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPDEF ], 1, true) .attr(AddBattlerTagAttr, BattlerTagType.CHARGED, true, false), - new StatusMove(Moves.TAUNT, PokemonType.DARK, 100, 20, -1, 0, 3) + new StatusMove(MoveId.TAUNT, PokemonType.DARK, 100, 20, -1, 0, 3) .ignoresSubstitute() .attr(AddBattlerTagAttr, BattlerTagType.TAUNT, false, true, 4) .reflectable(), - new StatusMove(Moves.HELPING_HAND, PokemonType.NORMAL, -1, 20, -1, 5, 3) + new StatusMove(MoveId.HELPING_HAND, PokemonType.NORMAL, -1, 20, -1, 5, 3) .attr(AddBattlerTagAttr, BattlerTagType.HELPING_HAND) .ignoresSubstitute() .target(MoveTarget.NEAR_ALLY) .condition(failIfSingleBattle), - new StatusMove(Moves.TRICK, PokemonType.PSYCHIC, 100, 10, -1, 0, 3) + new StatusMove(MoveId.TRICK, PokemonType.PSYCHIC, 100, 10, -1, 0, 3) .unimplemented(), - new StatusMove(Moves.ROLE_PLAY, PokemonType.PSYCHIC, -1, 10, -1, 0, 3) + new StatusMove(MoveId.ROLE_PLAY, PokemonType.PSYCHIC, -1, 10, -1, 0, 3) .ignoresSubstitute() .attr(AbilityCopyAttr), - new SelfStatusMove(Moves.WISH, PokemonType.NORMAL, -1, 10, -1, 0, 3) + new SelfStatusMove(MoveId.WISH, PokemonType.NORMAL, -1, 10, -1, 0, 3) .triageMove() .attr(AddArenaTagAttr, ArenaTagType.WISH, 2, true), - new SelfStatusMove(Moves.ASSIST, PokemonType.NORMAL, -1, 20, -1, 0, 3) + new SelfStatusMove(MoveId.ASSIST, PokemonType.NORMAL, -1, 20, -1, 0, 3) .attr(RandomMovesetMoveAttr, invalidAssistMoves, true), - new SelfStatusMove(Moves.INGRAIN, PokemonType.GRASS, -1, 20, -1, 0, 3) + new SelfStatusMove(MoveId.INGRAIN, PokemonType.GRASS, -1, 20, -1, 0, 3) .attr(AddBattlerTagAttr, BattlerTagType.INGRAIN, true, true) .attr(AddBattlerTagAttr, BattlerTagType.IGNORE_FLYING, true, true) .attr(RemoveBattlerTagAttr, [ BattlerTagType.FLOATING ], true), - new AttackMove(Moves.SUPERPOWER, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 3) + new AttackMove(MoveId.SUPERPOWER, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], -1, true), - new SelfStatusMove(Moves.MAGIC_COAT, PokemonType.PSYCHIC, -1, 15, -1, 4, 3) + new SelfStatusMove(MoveId.MAGIC_COAT, PokemonType.PSYCHIC, -1, 15, -1, 4, 3) .attr(AddBattlerTagAttr, BattlerTagType.MAGIC_COAT, true, true, 0) .condition(failIfLastCondition) // Interactions with stomping tantrum, instruct, and other moves that // rely on move history // Also will not reflect roar / whirlwind if the target has ForceSwitchOutImmunityAbAttr .edgeCase(), - new SelfStatusMove(Moves.RECYCLE, PokemonType.NORMAL, -1, 10, -1, 0, 3) + new SelfStatusMove(MoveId.RECYCLE, PokemonType.NORMAL, -1, 10, -1, 0, 3) .unimplemented(), - new AttackMove(Moves.REVENGE, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, -4, 3) + new AttackMove(MoveId.REVENGE, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, -4, 3) .attr(TurnDamagedDoublePowerAttr), - new AttackMove(Moves.BRICK_BREAK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 75, 100, 15, -1, 0, 3) + new AttackMove(MoveId.BRICK_BREAK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 75, 100, 15, -1, 0, 3) .attr(RemoveScreensAttr), - new StatusMove(Moves.YAWN, PokemonType.NORMAL, -1, 10, -1, 0, 3) + new StatusMove(MoveId.YAWN, PokemonType.NORMAL, -1, 10, -1, 0, 3) .attr(AddBattlerTagAttr, BattlerTagType.DROWSY, false, true) .condition((user, target, move) => !target.status && !target.isSafeguarded(user)) .reflectable(), - new AttackMove(Moves.KNOCK_OFF, PokemonType.DARK, MoveCategory.PHYSICAL, 65, 100, 20, -1, 0, 3) + new AttackMove(MoveId.KNOCK_OFF, PokemonType.DARK, MoveCategory.PHYSICAL, 65, 100, 20, -1, 0, 3) .attr(MovePowerMultiplierAttr, (user, target, move) => target.getHeldItems().filter(i => i.isTransferable).length > 0 ? 1.5 : 1) .attr(RemoveHeldItemAttr, false) .edgeCase(), // Should not be able to remove held item if user faints due to Rough Skin, Iron Barbs, etc. // Should be able to remove items from pokemon with Sticky Hold if the damage causes them to faint - new AttackMove(Moves.ENDEAVOR, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 3) + new AttackMove(MoveId.ENDEAVOR, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 3) .attr(MatchHpAttr) .condition(failOnBossCondition), - new AttackMove(Moves.ERUPTION, PokemonType.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3) + new AttackMove(MoveId.ERUPTION, PokemonType.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3) .attr(HpPowerAttr) .target(MoveTarget.ALL_NEAR_ENEMIES), - new StatusMove(Moves.SKILL_SWAP, PokemonType.PSYCHIC, -1, 10, -1, 0, 3) + new StatusMove(MoveId.SKILL_SWAP, PokemonType.PSYCHIC, -1, 10, -1, 0, 3) .ignoresSubstitute() .attr(SwitchAbilitiesAttr), - new StatusMove(Moves.IMPRISON, PokemonType.PSYCHIC, 100, 10, -1, 0, 3) + new StatusMove(MoveId.IMPRISON, PokemonType.PSYCHIC, 100, 10, -1, 0, 3) .ignoresSubstitute() .attr(AddArenaTagAttr, ArenaTagType.IMPRISON, 1, true, false) .target(MoveTarget.ENEMY_SIDE), - new SelfStatusMove(Moves.REFRESH, PokemonType.NORMAL, -1, 20, -1, 0, 3) + new SelfStatusMove(MoveId.REFRESH, PokemonType.NORMAL, -1, 20, -1, 0, 3) .attr(HealStatusEffectAttr, true, [ StatusEffect.PARALYSIS, StatusEffect.POISON, StatusEffect.TOXIC, StatusEffect.BURN ]) .condition((user, target, move) => !!user.status && (user.status.effect === StatusEffect.PARALYSIS || user.status.effect === StatusEffect.POISON || user.status.effect === StatusEffect.TOXIC || user.status.effect === StatusEffect.BURN)), - new SelfStatusMove(Moves.GRUDGE, PokemonType.GHOST, -1, 5, -1, 0, 3) + new SelfStatusMove(MoveId.GRUDGE, PokemonType.GHOST, -1, 5, -1, 0, 3) .attr(AddBattlerTagAttr, BattlerTagType.GRUDGE, true, undefined, 1), - new SelfStatusMove(Moves.SNATCH, PokemonType.DARK, -1, 10, -1, 4, 3) + new SelfStatusMove(MoveId.SNATCH, PokemonType.DARK, -1, 10, -1, 4, 3) .unimplemented(), - new AttackMove(Moves.SECRET_POWER, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, 30, 0, 3) + new AttackMove(MoveId.SECRET_POWER, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, 30, 0, 3) .makesContact(false) .attr(SecretPowerAttr), - new ChargingAttackMove(Moves.DIVE, PokemonType.WATER, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 3) + new ChargingAttackMove(MoveId.DIVE, PokemonType.WATER, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 3) .chargeText(i18next.t("moveTriggers:hidUnderwater", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.UNDERWATER) .chargeAttr(GulpMissileTagAttr), - new AttackMove(Moves.ARM_THRUST, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 15, 100, 20, -1, 0, 3) + new AttackMove(MoveId.ARM_THRUST, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 15, 100, 20, -1, 0, 3) .attr(MultiHitAttr), - new SelfStatusMove(Moves.CAMOUFLAGE, PokemonType.NORMAL, -1, 20, -1, 0, 3) + new SelfStatusMove(MoveId.CAMOUFLAGE, PokemonType.NORMAL, -1, 20, -1, 0, 3) .attr(CopyBiomeTypeAttr), - new SelfStatusMove(Moves.TAIL_GLOW, PokemonType.BUG, -1, 20, -1, 0, 3) + new SelfStatusMove(MoveId.TAIL_GLOW, PokemonType.BUG, -1, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPATK ], 3, true), - new AttackMove(Moves.LUSTER_PURGE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 95, 100, 5, 50, 0, 3) + new AttackMove(MoveId.LUSTER_PURGE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 95, 100, 5, 50, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1), - new AttackMove(Moves.MIST_BALL, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 95, 100, 5, 50, 0, 3) + new AttackMove(MoveId.MIST_BALL, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 95, 100, 5, 50, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1) .ballBombMove(), - new StatusMove(Moves.FEATHER_DANCE, PokemonType.FLYING, 100, 15, -1, 0, 3) + new StatusMove(MoveId.FEATHER_DANCE, PokemonType.FLYING, 100, 15, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK ], -2) .danceMove() .reflectable(), - new StatusMove(Moves.TEETER_DANCE, PokemonType.NORMAL, 100, 20, -1, 0, 3) + new StatusMove(MoveId.TEETER_DANCE, PokemonType.NORMAL, 100, 20, -1, 0, 3) .attr(ConfuseAttr) .danceMove() .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.BLAZE_KICK, PokemonType.FIRE, MoveCategory.PHYSICAL, 85, 90, 10, 10, 0, 3) + new AttackMove(MoveId.BLAZE_KICK, PokemonType.FIRE, MoveCategory.PHYSICAL, 85, 90, 10, 10, 0, 3) .attr(HighCritAttr) .attr(StatusEffectAttr, StatusEffect.BURN), - new StatusMove(Moves.MUD_SPORT, PokemonType.GROUND, -1, 15, -1, 0, 3) + new StatusMove(MoveId.MUD_SPORT, PokemonType.GROUND, -1, 15, -1, 0, 3) .ignoresProtect() .attr(AddArenaTagAttr, ArenaTagType.MUD_SPORT, 5) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.ICE_BALL, PokemonType.ICE, MoveCategory.PHYSICAL, 30, 90, 20, -1, 0, 3) + new AttackMove(MoveId.ICE_BALL, PokemonType.ICE, MoveCategory.PHYSICAL, 30, 90, 20, -1, 0, 3) .partial() // Does not lock the user properly, does not increase damage correctly - .attr(ConsecutiveUseDoublePowerAttr, 5, true, true, Moves.DEFENSE_CURL) + .attr(ConsecutiveUseDoublePowerAttr, 5, true, true, MoveId.DEFENSE_CURL) .ballBombMove(), - new AttackMove(Moves.NEEDLE_ARM, PokemonType.GRASS, MoveCategory.PHYSICAL, 60, 100, 15, 30, 0, 3) + new AttackMove(MoveId.NEEDLE_ARM, PokemonType.GRASS, MoveCategory.PHYSICAL, 60, 100, 15, 30, 0, 3) .attr(FlinchAttr), - new SelfStatusMove(Moves.SLACK_OFF, PokemonType.NORMAL, -1, 5, -1, 0, 3) + new SelfStatusMove(MoveId.SLACK_OFF, PokemonType.NORMAL, -1, 5, -1, 0, 3) .attr(HealAttr, 0.5) .triageMove(), - new AttackMove(Moves.HYPER_VOICE, PokemonType.NORMAL, MoveCategory.SPECIAL, 90, 100, 10, -1, 0, 3) + new AttackMove(MoveId.HYPER_VOICE, PokemonType.NORMAL, MoveCategory.SPECIAL, 90, 100, 10, -1, 0, 3) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.POISON_FANG, PokemonType.POISON, MoveCategory.PHYSICAL, 50, 100, 15, 50, 0, 3) + new AttackMove(MoveId.POISON_FANG, PokemonType.POISON, MoveCategory.PHYSICAL, 50, 100, 15, 50, 0, 3) .attr(StatusEffectAttr, StatusEffect.TOXIC) .bitingMove(), - new AttackMove(Moves.CRUSH_CLAW, PokemonType.NORMAL, MoveCategory.PHYSICAL, 75, 95, 10, 50, 0, 3) + new AttackMove(MoveId.CRUSH_CLAW, PokemonType.NORMAL, MoveCategory.PHYSICAL, 75, 95, 10, 50, 0, 3) .attr(StatStageChangeAttr, [ Stat.DEF ], -1), - new AttackMove(Moves.BLAST_BURN, PokemonType.FIRE, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 3) + new AttackMove(MoveId.BLAST_BURN, PokemonType.FIRE, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 3) .attr(RechargeAttr), - new AttackMove(Moves.HYDRO_CANNON, PokemonType.WATER, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 3) + new AttackMove(MoveId.HYDRO_CANNON, PokemonType.WATER, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 3) .attr(RechargeAttr), - new AttackMove(Moves.METEOR_MASH, PokemonType.STEEL, MoveCategory.PHYSICAL, 90, 90, 10, 20, 0, 3) + new AttackMove(MoveId.METEOR_MASH, PokemonType.STEEL, MoveCategory.PHYSICAL, 90, 90, 10, 20, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true) .punchingMove(), - new AttackMove(Moves.ASTONISH, PokemonType.GHOST, MoveCategory.PHYSICAL, 30, 100, 15, 30, 0, 3) + new AttackMove(MoveId.ASTONISH, PokemonType.GHOST, MoveCategory.PHYSICAL, 30, 100, 15, 30, 0, 3) .attr(FlinchAttr), - new AttackMove(Moves.WEATHER_BALL, PokemonType.NORMAL, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 3) + new AttackMove(MoveId.WEATHER_BALL, PokemonType.NORMAL, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 3) .attr(WeatherBallTypeAttr) .attr(MovePowerMultiplierAttr, (user, target, move) => { const weather = globalScene.arena.weather; @@ -9240,163 +9240,163 @@ export function initMoves() { return 1; }) .ballBombMove(), - new StatusMove(Moves.AROMATHERAPY, PokemonType.GRASS, -1, 5, -1, 0, 3) - .attr(PartyStatusCureAttr, i18next.t("moveTriggers:soothingAromaWaftedThroughArea"), Abilities.SAP_SIPPER) + new StatusMove(MoveId.AROMATHERAPY, PokemonType.GRASS, -1, 5, -1, 0, 3) + .attr(PartyStatusCureAttr, i18next.t("moveTriggers:soothingAromaWaftedThroughArea"), AbilityId.SAP_SIPPER) .target(MoveTarget.PARTY), - new StatusMove(Moves.FAKE_TEARS, PokemonType.DARK, 100, 20, -1, 0, 3) + new StatusMove(MoveId.FAKE_TEARS, PokemonType.DARK, 100, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -2) .reflectable(), - new AttackMove(Moves.AIR_CUTTER, PokemonType.FLYING, MoveCategory.SPECIAL, 60, 95, 25, -1, 0, 3) + new AttackMove(MoveId.AIR_CUTTER, PokemonType.FLYING, MoveCategory.SPECIAL, 60, 95, 25, -1, 0, 3) .attr(HighCritAttr) .slicingMove() .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.OVERHEAT, PokemonType.FIRE, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 3) + new AttackMove(MoveId.OVERHEAT, PokemonType.FIRE, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2, true) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE), - new StatusMove(Moves.ODOR_SLEUTH, PokemonType.NORMAL, -1, 40, -1, 0, 3) + new StatusMove(MoveId.ODOR_SLEUTH, PokemonType.NORMAL, -1, 40, -1, 0, 3) .attr(ExposedMoveAttr, BattlerTagType.IGNORE_GHOST) .ignoresSubstitute() .reflectable(), - new AttackMove(Moves.ROCK_TOMB, PokemonType.ROCK, MoveCategory.PHYSICAL, 60, 95, 15, 100, 0, 3) + new AttackMove(MoveId.ROCK_TOMB, PokemonType.ROCK, MoveCategory.PHYSICAL, 60, 95, 15, 100, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .makesContact(false), - new AttackMove(Moves.SILVER_WIND, PokemonType.BUG, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 3) + new AttackMove(MoveId.SILVER_WIND, PokemonType.BUG, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, true) .windMove(), - new StatusMove(Moves.METAL_SOUND, PokemonType.STEEL, 85, 40, -1, 0, 3) + new StatusMove(MoveId.METAL_SOUND, PokemonType.STEEL, 85, 40, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -2) .soundBased() .reflectable(), - new StatusMove(Moves.GRASS_WHISTLE, PokemonType.GRASS, 55, 15, -1, 0, 3) + new StatusMove(MoveId.GRASS_WHISTLE, PokemonType.GRASS, 55, 15, -1, 0, 3) .attr(StatusEffectAttr, StatusEffect.SLEEP) .soundBased() .reflectable(), - new StatusMove(Moves.TICKLE, PokemonType.NORMAL, 100, 20, -1, 0, 3) + new StatusMove(MoveId.TICKLE, PokemonType.NORMAL, 100, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], -1) .reflectable(), - new SelfStatusMove(Moves.COSMIC_POWER, PokemonType.PSYCHIC, -1, 20, -1, 0, 3) + new SelfStatusMove(MoveId.COSMIC_POWER, PokemonType.PSYCHIC, -1, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], 1, true), - new AttackMove(Moves.WATER_SPOUT, PokemonType.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3) + new AttackMove(MoveId.WATER_SPOUT, PokemonType.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3) .attr(HpPowerAttr) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.SIGNAL_BEAM, PokemonType.BUG, MoveCategory.SPECIAL, 75, 100, 15, 10, 0, 3) + new AttackMove(MoveId.SIGNAL_BEAM, PokemonType.BUG, MoveCategory.SPECIAL, 75, 100, 15, 10, 0, 3) .attr(ConfuseAttr), - new AttackMove(Moves.SHADOW_PUNCH, PokemonType.GHOST, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 3) + new AttackMove(MoveId.SHADOW_PUNCH, PokemonType.GHOST, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 3) .punchingMove(), - new AttackMove(Moves.EXTRASENSORY, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 20, 10, 0, 3) + new AttackMove(MoveId.EXTRASENSORY, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 20, 10, 0, 3) .attr(FlinchAttr), - new AttackMove(Moves.SKY_UPPERCUT, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 85, 90, 15, -1, 0, 3) + new AttackMove(MoveId.SKY_UPPERCUT, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 85, 90, 15, -1, 0, 3) .attr(HitsTagAttr, BattlerTagType.FLYING) .punchingMove(), - new AttackMove(Moves.SAND_TOMB, PokemonType.GROUND, MoveCategory.PHYSICAL, 35, 85, 15, -1, 0, 3) + new AttackMove(MoveId.SAND_TOMB, PokemonType.GROUND, MoveCategory.PHYSICAL, 35, 85, 15, -1, 0, 3) .attr(TrapAttr, BattlerTagType.SAND_TOMB) .makesContact(false), - new AttackMove(Moves.SHEER_COLD, PokemonType.ICE, MoveCategory.SPECIAL, 200, 20, 5, -1, 0, 3) + new AttackMove(MoveId.SHEER_COLD, PokemonType.ICE, MoveCategory.SPECIAL, 200, 20, 5, -1, 0, 3) .attr(IceNoEffectTypeAttr) .attr(OneHitKOAttr) .attr(SheerColdAccuracyAttr), - new AttackMove(Moves.MUDDY_WATER, PokemonType.WATER, MoveCategory.SPECIAL, 90, 85, 10, 30, 0, 3) + new AttackMove(MoveId.MUDDY_WATER, PokemonType.WATER, MoveCategory.SPECIAL, 90, 85, 10, 30, 0, 3) .attr(StatStageChangeAttr, [ Stat.ACC ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.BULLET_SEED, PokemonType.GRASS, MoveCategory.PHYSICAL, 25, 100, 30, -1, 0, 3) + new AttackMove(MoveId.BULLET_SEED, PokemonType.GRASS, MoveCategory.PHYSICAL, 25, 100, 30, -1, 0, 3) .attr(MultiHitAttr) .makesContact(false) .ballBombMove(), - new AttackMove(Moves.AERIAL_ACE, PokemonType.FLYING, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 3) + new AttackMove(MoveId.AERIAL_ACE, PokemonType.FLYING, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 3) .slicingMove(), - new AttackMove(Moves.ICICLE_SPEAR, PokemonType.ICE, MoveCategory.PHYSICAL, 25, 100, 30, -1, 0, 3) + new AttackMove(MoveId.ICICLE_SPEAR, PokemonType.ICE, MoveCategory.PHYSICAL, 25, 100, 30, -1, 0, 3) .attr(MultiHitAttr) .makesContact(false), - new SelfStatusMove(Moves.IRON_DEFENSE, PokemonType.STEEL, -1, 15, -1, 0, 3) + new SelfStatusMove(MoveId.IRON_DEFENSE, PokemonType.STEEL, -1, 15, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true), - new StatusMove(Moves.BLOCK, PokemonType.NORMAL, -1, 5, -1, 0, 3) + new StatusMove(MoveId.BLOCK, PokemonType.NORMAL, -1, 5, -1, 0, 3) .condition(failIfGhostTypeCondition) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1) .reflectable(), - new StatusMove(Moves.HOWL, PokemonType.NORMAL, -1, 40, -1, 0, 3) + new StatusMove(MoveId.HOWL, PokemonType.NORMAL, -1, 40, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK ], 1) .soundBased() .target(MoveTarget.USER_AND_ALLIES), - new AttackMove(Moves.DRAGON_CLAW, PokemonType.DRAGON, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 3), - new AttackMove(Moves.FRENZY_PLANT, PokemonType.GRASS, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 3) + new AttackMove(MoveId.DRAGON_CLAW, PokemonType.DRAGON, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 3), + new AttackMove(MoveId.FRENZY_PLANT, PokemonType.GRASS, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 3) .attr(RechargeAttr), - new SelfStatusMove(Moves.BULK_UP, PokemonType.FIGHTING, -1, 20, -1, 0, 3) + new SelfStatusMove(MoveId.BULK_UP, PokemonType.FIGHTING, -1, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], 1, true), - new ChargingAttackMove(Moves.BOUNCE, PokemonType.FLYING, MoveCategory.PHYSICAL, 85, 85, 5, 30, 0, 3) + new ChargingAttackMove(MoveId.BOUNCE, PokemonType.FLYING, MoveCategory.PHYSICAL, 85, 85, 5, 30, 0, 3) .chargeText(i18next.t("moveTriggers:sprangUp", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.FLYING) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .condition(failOnGravityCondition), - new AttackMove(Moves.MUD_SHOT, PokemonType.GROUND, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 3) + new AttackMove(MoveId.MUD_SHOT, PokemonType.GROUND, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPD ], -1), - new AttackMove(Moves.POISON_TAIL, PokemonType.POISON, MoveCategory.PHYSICAL, 50, 100, 25, 10, 0, 3) + new AttackMove(MoveId.POISON_TAIL, PokemonType.POISON, MoveCategory.PHYSICAL, 50, 100, 25, 10, 0, 3) .attr(HighCritAttr) .attr(StatusEffectAttr, StatusEffect.POISON), - new AttackMove(Moves.COVET, PokemonType.NORMAL, MoveCategory.PHYSICAL, 60, 100, 25, -1, 0, 3) + new AttackMove(MoveId.COVET, PokemonType.NORMAL, MoveCategory.PHYSICAL, 60, 100, 25, -1, 0, 3) .attr(StealHeldItemChanceAttr, 0.3) .edgeCase(), // Should not be able to steal held item if user faints due to Rough Skin, Iron Barbs, etc. // Should be able to steal items from pokemon with Sticky Hold if the damage causes them to faint - new AttackMove(Moves.VOLT_TACKLE, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 120, 100, 15, 10, 0, 3) + new AttackMove(MoveId.VOLT_TACKLE, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 120, 100, 15, 10, 0, 3) .attr(RecoilAttr, false, 0.33) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .recklessMove(), - new AttackMove(Moves.MAGICAL_LEAF, PokemonType.GRASS, MoveCategory.SPECIAL, 60, -1, 20, -1, 0, 3), - new StatusMove(Moves.WATER_SPORT, PokemonType.WATER, -1, 15, -1, 0, 3) + new AttackMove(MoveId.MAGICAL_LEAF, PokemonType.GRASS, MoveCategory.SPECIAL, 60, -1, 20, -1, 0, 3), + new StatusMove(MoveId.WATER_SPORT, PokemonType.WATER, -1, 15, -1, 0, 3) .ignoresProtect() .attr(AddArenaTagAttr, ArenaTagType.WATER_SPORT, 5) .target(MoveTarget.BOTH_SIDES), - new SelfStatusMove(Moves.CALM_MIND, PokemonType.PSYCHIC, -1, 20, -1, 0, 3) + new SelfStatusMove(MoveId.CALM_MIND, PokemonType.PSYCHIC, -1, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF ], 1, true), - new AttackMove(Moves.LEAF_BLADE, PokemonType.GRASS, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 3) + new AttackMove(MoveId.LEAF_BLADE, PokemonType.GRASS, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 3) .attr(HighCritAttr) .slicingMove(), - new SelfStatusMove(Moves.DRAGON_DANCE, PokemonType.DRAGON, -1, 20, -1, 0, 3) + new SelfStatusMove(MoveId.DRAGON_DANCE, PokemonType.DRAGON, -1, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPD ], 1, true) .danceMove(), - new AttackMove(Moves.ROCK_BLAST, PokemonType.ROCK, MoveCategory.PHYSICAL, 25, 90, 10, -1, 0, 3) + new AttackMove(MoveId.ROCK_BLAST, PokemonType.ROCK, MoveCategory.PHYSICAL, 25, 90, 10, -1, 0, 3) .attr(MultiHitAttr) .makesContact(false) .ballBombMove(), - new AttackMove(Moves.SHOCK_WAVE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 60, -1, 20, -1, 0, 3), - new AttackMove(Moves.WATER_PULSE, PokemonType.WATER, MoveCategory.SPECIAL, 60, 100, 20, 20, 0, 3) + new AttackMove(MoveId.SHOCK_WAVE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 60, -1, 20, -1, 0, 3), + new AttackMove(MoveId.WATER_PULSE, PokemonType.WATER, MoveCategory.SPECIAL, 60, 100, 20, 20, 0, 3) .attr(ConfuseAttr) .pulseMove(), - new AttackMove(Moves.DOOM_DESIRE, PokemonType.STEEL, MoveCategory.SPECIAL, 140, 100, 5, -1, 0, 3) + new AttackMove(MoveId.DOOM_DESIRE, PokemonType.STEEL, MoveCategory.SPECIAL, 140, 100, 5, -1, 0, 3) .partial() // cannot be used on multiple Pokemon on the same side in a double battle, hits immediately when called by Metronome/etc, should not apply abilities or held items if user is off the field .ignoresProtect() .attr(DelayedAttackAttr, ArenaTagType.DOOM_DESIRE, ChargeAnim.DOOM_DESIRE_CHARGING, i18next.t("moveTriggers:choseDoomDesireAsDestiny", { pokemonName: "{USER}" })), - new AttackMove(Moves.PSYCHO_BOOST, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 140, 90, 5, -1, 0, 3) + new AttackMove(MoveId.PSYCHO_BOOST, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 140, 90, 5, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2, true), - new SelfStatusMove(Moves.ROOST, PokemonType.FLYING, -1, 5, -1, 0, 4) + new SelfStatusMove(MoveId.ROOST, PokemonType.FLYING, -1, 5, -1, 0, 4) .attr(HealAttr, 0.5) .attr(AddBattlerTagAttr, BattlerTagType.ROOSTED, true, false) .triageMove(), - new StatusMove(Moves.GRAVITY, PokemonType.PSYCHIC, -1, 5, -1, 0, 4) + new StatusMove(MoveId.GRAVITY, PokemonType.PSYCHIC, -1, 5, -1, 0, 4) .ignoresProtect() .attr(AddArenaTagAttr, ArenaTagType.GRAVITY, 5) .target(MoveTarget.BOTH_SIDES), - new StatusMove(Moves.MIRACLE_EYE, PokemonType.PSYCHIC, -1, 40, -1, 0, 4) + new StatusMove(MoveId.MIRACLE_EYE, PokemonType.PSYCHIC, -1, 40, -1, 0, 4) .attr(ExposedMoveAttr, BattlerTagType.IGNORE_DARK) .ignoresSubstitute() .reflectable(), - new AttackMove(Moves.WAKE_UP_SLAP, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 70, 100, 10, -1, 0, 4) + new AttackMove(MoveId.WAKE_UP_SLAP, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 70, 100, 10, -1, 0, 4) .attr(MovePowerMultiplierAttr, (user, target, move) => targetSleptOrComatoseCondition(user, target, move) ? 2 : 1) .attr(HealStatusEffectAttr, false, StatusEffect.SLEEP), - new AttackMove(Moves.HAMMER_ARM, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 90, 10, -1, 0, 4) + new AttackMove(MoveId.HAMMER_ARM, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 90, 10, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPD ], -1, true) .punchingMove(), - new AttackMove(Moves.GYRO_BALL, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) + new AttackMove(MoveId.GYRO_BALL, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) .attr(GyroBallPowerAttr) .ballBombMove(), - new SelfStatusMove(Moves.HEALING_WISH, PokemonType.PSYCHIC, -1, 10, -1, 0, 4) + new SelfStatusMove(MoveId.HEALING_WISH, PokemonType.PSYCHIC, -1, 10, -1, 0, 4) .attr(SacrificialFullRestoreAttr, false, "moveTriggers:sacrificialFullRestore") .triageMove() .condition(failIfLastInPartyCondition), - new AttackMove(Moves.BRINE, PokemonType.WATER, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 4) + new AttackMove(MoveId.BRINE, PokemonType.WATER, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 4) .attr(MovePowerMultiplierAttr, (user, target, move) => target.getHpRatio() < 0.5 ? 2 : 1), - new AttackMove(Moves.NATURAL_GIFT, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 4) + new AttackMove(MoveId.NATURAL_GIFT, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 4) .makesContact(false) .unimplemented(), /* @@ -9404,89 +9404,89 @@ export function initMoves() { and enable the harvest test.. Do NOT push to berriesEatenLast or else cud chew will puke the berry. */ - new AttackMove(Moves.FEINT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 30, 100, 10, -1, 2, 4) + new AttackMove(MoveId.FEINT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 30, 100, 10, -1, 2, 4) .attr(RemoveBattlerTagAttr, [ BattlerTagType.PROTECTED ]) .attr(RemoveArenaTagsAttr, [ ArenaTagType.QUICK_GUARD, ArenaTagType.WIDE_GUARD, ArenaTagType.MAT_BLOCK, ArenaTagType.CRAFTY_SHIELD ], false) .makesContact(false) .ignoresProtect(), - new AttackMove(Moves.PLUCK, PokemonType.FLYING, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 4) + new AttackMove(MoveId.PLUCK, PokemonType.FLYING, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 4) .attr(StealEatBerryAttr), - new StatusMove(Moves.TAILWIND, PokemonType.FLYING, -1, 15, -1, 0, 4) + new StatusMove(MoveId.TAILWIND, PokemonType.FLYING, -1, 15, -1, 0, 4) .windMove() .attr(AddArenaTagAttr, ArenaTagType.TAILWIND, 4, true) .target(MoveTarget.USER_SIDE), - new StatusMove(Moves.ACUPRESSURE, PokemonType.NORMAL, -1, 30, -1, 0, 4) + new StatusMove(MoveId.ACUPRESSURE, PokemonType.NORMAL, -1, 30, -1, 0, 4) .attr(AcupressureStatStageChangeAttr) .target(MoveTarget.USER_OR_NEAR_ALLY), - new AttackMove(Moves.METAL_BURST, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4) + new AttackMove(MoveId.METAL_BURST, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4) .attr(CounterDamageAttr, (move: Move) => (move.category === MoveCategory.PHYSICAL || move.category === MoveCategory.SPECIAL), 1.5) .redirectCounter() .makesContact(false) .target(MoveTarget.ATTACKER), - new AttackMove(Moves.U_TURN, PokemonType.BUG, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 4) + new AttackMove(MoveId.U_TURN, PokemonType.BUG, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 4) .attr(ForceSwitchOutAttr, true), - new AttackMove(Moves.CLOSE_COMBAT, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 4) + new AttackMove(MoveId.CLOSE_COMBAT, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true), - new AttackMove(Moves.PAYBACK, PokemonType.DARK, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 4) + new AttackMove(MoveId.PAYBACK, PokemonType.DARK, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 4) .attr(MovePowerMultiplierAttr, (user, target, move) => target.getLastXMoves(1).find(m => m.turn === globalScene.currentBattle.turn) || globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.command === Command.BALL ? 2 : 1), - new AttackMove(Moves.ASSURANCE, PokemonType.DARK, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 4) + new AttackMove(MoveId.ASSURANCE, PokemonType.DARK, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 4) .attr(MovePowerMultiplierAttr, (user, target, move) => target.turnData.damageTaken > 0 ? 2 : 1), - new StatusMove(Moves.EMBARGO, PokemonType.DARK, 100, 15, -1, 0, 4) + new StatusMove(MoveId.EMBARGO, PokemonType.DARK, 100, 15, -1, 0, 4) .reflectable() .unimplemented(), - new AttackMove(Moves.FLING, PokemonType.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4) + new AttackMove(MoveId.FLING, PokemonType.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4) .makesContact(false) .unimplemented(), - new StatusMove(Moves.PSYCHO_SHIFT, PokemonType.PSYCHIC, 100, 10, -1, 0, 4) + new StatusMove(MoveId.PSYCHO_SHIFT, PokemonType.PSYCHIC, 100, 10, -1, 0, 4) .attr(PsychoShiftEffectAttr) .condition((user, target, move) => { - let statusToApply = user.hasAbility(Abilities.COMATOSE) ? StatusEffect.SLEEP : undefined; + let statusToApply = user.hasAbility(AbilityId.COMATOSE) ? StatusEffect.SLEEP : undefined; if (user.status?.effect && isNonVolatileStatusEffect(user.status.effect)) { statusToApply = user.status.effect; } return !!statusToApply && target.canSetStatus(statusToApply, false, false, user); } ), - new AttackMove(Moves.TRUMP_CARD, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, -1, 5, -1, 0, 4) + new AttackMove(MoveId.TRUMP_CARD, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, -1, 5, -1, 0, 4) .makesContact() .attr(LessPPMorePowerAttr), - new StatusMove(Moves.HEAL_BLOCK, PokemonType.PSYCHIC, 100, 15, -1, 0, 4) + new StatusMove(MoveId.HEAL_BLOCK, PokemonType.PSYCHIC, 100, 15, -1, 0, 4) .attr(AddBattlerTagAttr, BattlerTagType.HEAL_BLOCK, false, true, 5) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.WRING_OUT, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, 100, 5, -1, 0, 4) + new AttackMove(MoveId.WRING_OUT, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, 100, 5, -1, 0, 4) .attr(OpponentHighHpPowerAttr, 120) .makesContact(), - new SelfStatusMove(Moves.POWER_TRICK, PokemonType.PSYCHIC, -1, 10, -1, 0, 4) + new SelfStatusMove(MoveId.POWER_TRICK, PokemonType.PSYCHIC, -1, 10, -1, 0, 4) .attr(AddBattlerTagAttr, BattlerTagType.POWER_TRICK, true), - new StatusMove(Moves.GASTRO_ACID, PokemonType.POISON, 100, 10, -1, 0, 4) + new StatusMove(MoveId.GASTRO_ACID, PokemonType.POISON, 100, 10, -1, 0, 4) .attr(SuppressAbilitiesAttr) .reflectable(), - new StatusMove(Moves.LUCKY_CHANT, PokemonType.NORMAL, -1, 30, -1, 0, 4) + new StatusMove(MoveId.LUCKY_CHANT, PokemonType.NORMAL, -1, 30, -1, 0, 4) .attr(AddArenaTagAttr, ArenaTagType.NO_CRIT, 5, true, true) .target(MoveTarget.USER_SIDE), - new StatusMove(Moves.ME_FIRST, PokemonType.NORMAL, -1, 20, -1, 0, 4) + new StatusMove(MoveId.ME_FIRST, PokemonType.NORMAL, -1, 20, -1, 0, 4) .ignoresSubstitute() .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new SelfStatusMove(Moves.COPYCAT, PokemonType.NORMAL, -1, 20, -1, 0, 4) + new SelfStatusMove(MoveId.COPYCAT, PokemonType.NORMAL, -1, 20, -1, 0, 4) .attr(CopyMoveAttr, false, invalidCopycatMoves), - new StatusMove(Moves.POWER_SWAP, PokemonType.PSYCHIC, -1, 10, 100, 0, 4) + new StatusMove(MoveId.POWER_SWAP, PokemonType.PSYCHIC, -1, 10, 100, 0, 4) .attr(SwapStatStagesAttr, [ Stat.ATK, Stat.SPATK ]) .ignoresSubstitute(), - new StatusMove(Moves.GUARD_SWAP, PokemonType.PSYCHIC, -1, 10, 100, 0, 4) + new StatusMove(MoveId.GUARD_SWAP, PokemonType.PSYCHIC, -1, 10, 100, 0, 4) .attr(SwapStatStagesAttr, [ Stat.DEF, Stat.SPDEF ]) .ignoresSubstitute(), - new AttackMove(Moves.PUNISHMENT, PokemonType.DARK, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) + new AttackMove(MoveId.PUNISHMENT, PokemonType.DARK, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) .makesContact(true) .attr(PunishmentPowerAttr), - new AttackMove(Moves.LAST_RESORT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 140, 100, 5, -1, 0, 4) + new AttackMove(MoveId.LAST_RESORT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 140, 100, 5, -1, 0, 4) .attr(LastResortAttr) .edgeCase(), // May or may not need to ignore remotely called moves depending on how it works - new StatusMove(Moves.WORRY_SEED, PokemonType.GRASS, 100, 10, -1, 0, 4) - .attr(AbilityChangeAttr, Abilities.INSOMNIA) + new StatusMove(MoveId.WORRY_SEED, PokemonType.GRASS, 100, 10, -1, 0, 4) + .attr(AbilityChangeAttr, AbilityId.INSOMNIA) .reflectable(), - new AttackMove(Moves.SUCKER_PUNCH, PokemonType.DARK, MoveCategory.PHYSICAL, 70, 100, 5, -1, 1, 4) + new AttackMove(MoveId.SUCKER_PUNCH, PokemonType.DARK, MoveCategory.PHYSICAL, 70, 100, 5, -1, 1, 4) .condition((user, target, move) => { const turnCommand = globalScene.currentBattle.turnCommands[target.getBattlerIndex()]; if (!turnCommand || !turnCommand.move) { @@ -9494,116 +9494,116 @@ export function initMoves() { } return (turnCommand.command === Command.FIGHT && !target.turnData.acted && allMoves[turnCommand.move.move].category !== MoveCategory.STATUS); }), - new StatusMove(Moves.TOXIC_SPIKES, PokemonType.POISON, -1, 20, -1, 0, 4) + new StatusMove(MoveId.TOXIC_SPIKES, PokemonType.POISON, -1, 20, -1, 0, 4) .attr(AddArenaTrapTagAttr, ArenaTagType.TOXIC_SPIKES) .target(MoveTarget.ENEMY_SIDE) .reflectable(), - new StatusMove(Moves.HEART_SWAP, PokemonType.PSYCHIC, -1, 10, -1, 0, 4) + new StatusMove(MoveId.HEART_SWAP, PokemonType.PSYCHIC, -1, 10, -1, 0, 4) .attr(SwapStatStagesAttr, BATTLE_STATS) .ignoresSubstitute(), - new SelfStatusMove(Moves.AQUA_RING, PokemonType.WATER, -1, 20, -1, 0, 4) + new SelfStatusMove(MoveId.AQUA_RING, PokemonType.WATER, -1, 20, -1, 0, 4) .attr(AddBattlerTagAttr, BattlerTagType.AQUA_RING, true, true), - new SelfStatusMove(Moves.MAGNET_RISE, PokemonType.ELECTRIC, -1, 10, -1, 0, 4) + new SelfStatusMove(MoveId.MAGNET_RISE, PokemonType.ELECTRIC, -1, 10, -1, 0, 4) .attr(AddBattlerTagAttr, BattlerTagType.FLOATING, true, true, 5) .condition((user, target, move) => !globalScene.arena.getTag(ArenaTagType.GRAVITY) && [ BattlerTagType.FLOATING, BattlerTagType.IGNORE_FLYING, BattlerTagType.INGRAIN ].every((tag) => !user.getTag(tag))), - new AttackMove(Moves.FLARE_BLITZ, PokemonType.FIRE, MoveCategory.PHYSICAL, 120, 100, 15, 10, 0, 4) + new AttackMove(MoveId.FLARE_BLITZ, PokemonType.FIRE, MoveCategory.PHYSICAL, 120, 100, 15, 10, 0, 4) .attr(RecoilAttr, false, 0.33) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN) .recklessMove(), - new AttackMove(Moves.FORCE_PALM, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, 30, 0, 4) + new AttackMove(MoveId.FORCE_PALM, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, 30, 0, 4) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.AURA_SPHERE, PokemonType.FIGHTING, MoveCategory.SPECIAL, 80, -1, 20, -1, 0, 4) + new AttackMove(MoveId.AURA_SPHERE, PokemonType.FIGHTING, MoveCategory.SPECIAL, 80, -1, 20, -1, 0, 4) .pulseMove() .ballBombMove(), - new SelfStatusMove(Moves.ROCK_POLISH, PokemonType.ROCK, -1, 20, -1, 0, 4) + new SelfStatusMove(MoveId.ROCK_POLISH, PokemonType.ROCK, -1, 20, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPD ], 2, true), - new AttackMove(Moves.POISON_JAB, PokemonType.POISON, MoveCategory.PHYSICAL, 80, 100, 20, 30, 0, 4) + new AttackMove(MoveId.POISON_JAB, PokemonType.POISON, MoveCategory.PHYSICAL, 80, 100, 20, 30, 0, 4) .attr(StatusEffectAttr, StatusEffect.POISON), - new AttackMove(Moves.DARK_PULSE, PokemonType.DARK, MoveCategory.SPECIAL, 80, 100, 15, 20, 0, 4) + new AttackMove(MoveId.DARK_PULSE, PokemonType.DARK, MoveCategory.SPECIAL, 80, 100, 15, 20, 0, 4) .attr(FlinchAttr) .pulseMove(), - new AttackMove(Moves.NIGHT_SLASH, PokemonType.DARK, MoveCategory.PHYSICAL, 70, 100, 15, -1, 0, 4) + new AttackMove(MoveId.NIGHT_SLASH, PokemonType.DARK, MoveCategory.PHYSICAL, 70, 100, 15, -1, 0, 4) .attr(HighCritAttr) .slicingMove(), - new AttackMove(Moves.AQUA_TAIL, PokemonType.WATER, MoveCategory.PHYSICAL, 90, 90, 10, -1, 0, 4), - new AttackMove(Moves.SEED_BOMB, PokemonType.GRASS, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 4) + new AttackMove(MoveId.AQUA_TAIL, PokemonType.WATER, MoveCategory.PHYSICAL, 90, 90, 10, -1, 0, 4), + new AttackMove(MoveId.SEED_BOMB, PokemonType.GRASS, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 4) .makesContact(false) .ballBombMove(), - new AttackMove(Moves.AIR_SLASH, PokemonType.FLYING, MoveCategory.SPECIAL, 75, 95, 15, 30, 0, 4) + new AttackMove(MoveId.AIR_SLASH, PokemonType.FLYING, MoveCategory.SPECIAL, 75, 95, 15, 30, 0, 4) .attr(FlinchAttr) .slicingMove(), - new AttackMove(Moves.X_SCISSOR, PokemonType.BUG, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 4) + new AttackMove(MoveId.X_SCISSOR, PokemonType.BUG, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 4) .slicingMove(), - new AttackMove(Moves.BUG_BUZZ, PokemonType.BUG, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 4) + new AttackMove(MoveId.BUG_BUZZ, PokemonType.BUG, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1) .soundBased(), - new AttackMove(Moves.DRAGON_PULSE, PokemonType.DRAGON, MoveCategory.SPECIAL, 85, 100, 10, -1, 0, 4) + new AttackMove(MoveId.DRAGON_PULSE, PokemonType.DRAGON, MoveCategory.SPECIAL, 85, 100, 10, -1, 0, 4) .pulseMove(), - new AttackMove(Moves.DRAGON_RUSH, PokemonType.DRAGON, MoveCategory.PHYSICAL, 100, 75, 10, 20, 0, 4) + new AttackMove(MoveId.DRAGON_RUSH, PokemonType.DRAGON, MoveCategory.PHYSICAL, 100, 75, 10, 20, 0, 4) .attr(AlwaysHitMinimizeAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED) .attr(FlinchAttr), - new AttackMove(Moves.POWER_GEM, PokemonType.ROCK, MoveCategory.SPECIAL, 80, 100, 20, -1, 0, 4), - new AttackMove(Moves.DRAIN_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 4) + new AttackMove(MoveId.POWER_GEM, PokemonType.ROCK, MoveCategory.SPECIAL, 80, 100, 20, -1, 0, 4), + new AttackMove(MoveId.DRAIN_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 4) .attr(HitHealAttr) .punchingMove() .triageMove(), - new AttackMove(Moves.VACUUM_WAVE, PokemonType.FIGHTING, MoveCategory.SPECIAL, 40, 100, 30, -1, 1, 4), - new AttackMove(Moves.FOCUS_BLAST, PokemonType.FIGHTING, MoveCategory.SPECIAL, 120, 70, 5, 10, 0, 4) + new AttackMove(MoveId.VACUUM_WAVE, PokemonType.FIGHTING, MoveCategory.SPECIAL, 40, 100, 30, -1, 1, 4), + new AttackMove(MoveId.FOCUS_BLAST, PokemonType.FIGHTING, MoveCategory.SPECIAL, 120, 70, 5, 10, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1) .ballBombMove(), - new AttackMove(Moves.ENERGY_BALL, PokemonType.GRASS, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 4) + new AttackMove(MoveId.ENERGY_BALL, PokemonType.GRASS, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1) .ballBombMove(), - new AttackMove(Moves.BRAVE_BIRD, PokemonType.FLYING, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 4) + new AttackMove(MoveId.BRAVE_BIRD, PokemonType.FLYING, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 4) .attr(RecoilAttr, false, 0.33) .recklessMove(), - new AttackMove(Moves.EARTH_POWER, PokemonType.GROUND, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 4) + new AttackMove(MoveId.EARTH_POWER, PokemonType.GROUND, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1), - new StatusMove(Moves.SWITCHEROO, PokemonType.DARK, 100, 10, -1, 0, 4) + new StatusMove(MoveId.SWITCHEROO, PokemonType.DARK, 100, 10, -1, 0, 4) .unimplemented(), - new AttackMove(Moves.GIGA_IMPACT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 150, 90, 5, -1, 0, 4) + new AttackMove(MoveId.GIGA_IMPACT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 150, 90, 5, -1, 0, 4) .attr(RechargeAttr), - new SelfStatusMove(Moves.NASTY_PLOT, PokemonType.DARK, -1, 20, -1, 0, 4) + new SelfStatusMove(MoveId.NASTY_PLOT, PokemonType.DARK, -1, 20, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPATK ], 2, true), - new AttackMove(Moves.BULLET_PUNCH, PokemonType.STEEL, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 4) + new AttackMove(MoveId.BULLET_PUNCH, PokemonType.STEEL, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 4) .punchingMove(), - new AttackMove(Moves.AVALANCHE, PokemonType.ICE, MoveCategory.PHYSICAL, 60, 100, 10, -1, -4, 4) + new AttackMove(MoveId.AVALANCHE, PokemonType.ICE, MoveCategory.PHYSICAL, 60, 100, 10, -1, -4, 4) .attr(TurnDamagedDoublePowerAttr), - new AttackMove(Moves.ICE_SHARD, PokemonType.ICE, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 4) + new AttackMove(MoveId.ICE_SHARD, PokemonType.ICE, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 4) .makesContact(false), - new AttackMove(Moves.SHADOW_CLAW, PokemonType.GHOST, MoveCategory.PHYSICAL, 70, 100, 15, -1, 0, 4) + new AttackMove(MoveId.SHADOW_CLAW, PokemonType.GHOST, MoveCategory.PHYSICAL, 70, 100, 15, -1, 0, 4) .attr(HighCritAttr), - new AttackMove(Moves.THUNDER_FANG, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 65, 95, 15, 10, 0, 4) + new AttackMove(MoveId.THUNDER_FANG, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 65, 95, 15, 10, 0, 4) .attr(FlinchAttr) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .bitingMove(), - new AttackMove(Moves.ICE_FANG, PokemonType.ICE, MoveCategory.PHYSICAL, 65, 95, 15, 10, 0, 4) + new AttackMove(MoveId.ICE_FANG, PokemonType.ICE, MoveCategory.PHYSICAL, 65, 95, 15, 10, 0, 4) .attr(FlinchAttr) .attr(StatusEffectAttr, StatusEffect.FREEZE) .bitingMove(), - new AttackMove(Moves.FIRE_FANG, PokemonType.FIRE, MoveCategory.PHYSICAL, 65, 95, 15, 10, 0, 4) + new AttackMove(MoveId.FIRE_FANG, PokemonType.FIRE, MoveCategory.PHYSICAL, 65, 95, 15, 10, 0, 4) .attr(FlinchAttr) .attr(StatusEffectAttr, StatusEffect.BURN) .bitingMove(), - new AttackMove(Moves.SHADOW_SNEAK, PokemonType.GHOST, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 4), - new AttackMove(Moves.MUD_BOMB, PokemonType.GROUND, MoveCategory.SPECIAL, 65, 85, 10, 30, 0, 4) + new AttackMove(MoveId.SHADOW_SNEAK, PokemonType.GHOST, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 4), + new AttackMove(MoveId.MUD_BOMB, PokemonType.GROUND, MoveCategory.SPECIAL, 65, 85, 10, 30, 0, 4) .attr(StatStageChangeAttr, [ Stat.ACC ], -1) .ballBombMove(), - new AttackMove(Moves.PSYCHO_CUT, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 4) + new AttackMove(MoveId.PSYCHO_CUT, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 4) .attr(HighCritAttr) .slicingMove() .makesContact(false), - new AttackMove(Moves.ZEN_HEADBUTT, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 80, 90, 15, 20, 0, 4) + new AttackMove(MoveId.ZEN_HEADBUTT, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 80, 90, 15, 20, 0, 4) .attr(FlinchAttr), - new AttackMove(Moves.MIRROR_SHOT, PokemonType.STEEL, MoveCategory.SPECIAL, 65, 85, 10, 30, 0, 4) + new AttackMove(MoveId.MIRROR_SHOT, PokemonType.STEEL, MoveCategory.SPECIAL, 65, 85, 10, 30, 0, 4) .attr(StatStageChangeAttr, [ Stat.ACC ], -1), - new AttackMove(Moves.FLASH_CANNON, PokemonType.STEEL, MoveCategory.SPECIAL, 80, 100, 10, 10, 0, 4) + new AttackMove(MoveId.FLASH_CANNON, PokemonType.STEEL, MoveCategory.SPECIAL, 80, 100, 10, 10, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1), - new AttackMove(Moves.ROCK_CLIMB, PokemonType.NORMAL, MoveCategory.PHYSICAL, 90, 85, 20, 20, 0, 4) + new AttackMove(MoveId.ROCK_CLIMB, PokemonType.NORMAL, MoveCategory.PHYSICAL, 90, 85, 20, 20, 0, 4) .attr(ConfuseAttr), - new StatusMove(Moves.DEFOG, PokemonType.FLYING, -1, 15, -1, 0, 4) + new StatusMove(MoveId.DEFOG, PokemonType.FLYING, -1, 15, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.EVA ], -1) .attr(ClearWeatherAttr, WeatherType.FOG) .attr(ClearTerrainAttr) @@ -9611,257 +9611,257 @@ export function initMoves() { .attr(RemoveArenaTrapAttr, true) .attr(RemoveArenaTagsAttr, [ ArenaTagType.MIST, ArenaTagType.SAFEGUARD ], false) .reflectable(), - new StatusMove(Moves.TRICK_ROOM, PokemonType.PSYCHIC, -1, 5, -1, -7, 4) + new StatusMove(MoveId.TRICK_ROOM, PokemonType.PSYCHIC, -1, 5, -1, -7, 4) .attr(AddArenaTagAttr, ArenaTagType.TRICK_ROOM, 5) .ignoresProtect() .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.DRACO_METEOR, PokemonType.DRAGON, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 4) + new AttackMove(MoveId.DRACO_METEOR, PokemonType.DRAGON, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2, true), - new AttackMove(Moves.DISCHARGE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 80, 100, 15, 30, 0, 4) + new AttackMove(MoveId.DISCHARGE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 80, 100, 15, 30, 0, 4) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.LAVA_PLUME, PokemonType.FIRE, MoveCategory.SPECIAL, 80, 100, 15, 30, 0, 4) + new AttackMove(MoveId.LAVA_PLUME, PokemonType.FIRE, MoveCategory.SPECIAL, 80, 100, 15, 30, 0, 4) .attr(StatusEffectAttr, StatusEffect.BURN) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.LEAF_STORM, PokemonType.GRASS, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 4) + new AttackMove(MoveId.LEAF_STORM, PokemonType.GRASS, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2, true), - new AttackMove(Moves.POWER_WHIP, PokemonType.GRASS, MoveCategory.PHYSICAL, 120, 85, 10, -1, 0, 4), - new AttackMove(Moves.ROCK_WRECKER, PokemonType.ROCK, MoveCategory.PHYSICAL, 150, 90, 5, -1, 0, 4) + new AttackMove(MoveId.POWER_WHIP, PokemonType.GRASS, MoveCategory.PHYSICAL, 120, 85, 10, -1, 0, 4), + new AttackMove(MoveId.ROCK_WRECKER, PokemonType.ROCK, MoveCategory.PHYSICAL, 150, 90, 5, -1, 0, 4) .attr(RechargeAttr) .makesContact(false) .ballBombMove(), - new AttackMove(Moves.CROSS_POISON, PokemonType.POISON, MoveCategory.PHYSICAL, 70, 100, 20, 10, 0, 4) + new AttackMove(MoveId.CROSS_POISON, PokemonType.POISON, MoveCategory.PHYSICAL, 70, 100, 20, 10, 0, 4) .attr(HighCritAttr) .attr(StatusEffectAttr, StatusEffect.POISON) .slicingMove(), - new AttackMove(Moves.GUNK_SHOT, PokemonType.POISON, MoveCategory.PHYSICAL, 120, 80, 5, 30, 0, 4) + new AttackMove(MoveId.GUNK_SHOT, PokemonType.POISON, MoveCategory.PHYSICAL, 120, 80, 5, 30, 0, 4) .attr(StatusEffectAttr, StatusEffect.POISON) .makesContact(false), - new AttackMove(Moves.IRON_HEAD, PokemonType.STEEL, MoveCategory.PHYSICAL, 80, 100, 15, 30, 0, 4) + new AttackMove(MoveId.IRON_HEAD, PokemonType.STEEL, MoveCategory.PHYSICAL, 80, 100, 15, 30, 0, 4) .attr(FlinchAttr), - new AttackMove(Moves.MAGNET_BOMB, PokemonType.STEEL, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 4) + new AttackMove(MoveId.MAGNET_BOMB, PokemonType.STEEL, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 4) .makesContact(false) .ballBombMove(), - new AttackMove(Moves.STONE_EDGE, PokemonType.ROCK, MoveCategory.PHYSICAL, 100, 80, 5, -1, 0, 4) + new AttackMove(MoveId.STONE_EDGE, PokemonType.ROCK, MoveCategory.PHYSICAL, 100, 80, 5, -1, 0, 4) .attr(HighCritAttr) .makesContact(false), - new StatusMove(Moves.CAPTIVATE, PokemonType.NORMAL, 100, 20, -1, 0, 4) + new StatusMove(MoveId.CAPTIVATE, PokemonType.NORMAL, 100, 20, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2) .condition((user, target, move) => target.isOppositeGender(user)) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new StatusMove(Moves.STEALTH_ROCK, PokemonType.ROCK, -1, 20, -1, 0, 4) + new StatusMove(MoveId.STEALTH_ROCK, PokemonType.ROCK, -1, 20, -1, 0, 4) .attr(AddArenaTrapTagAttr, ArenaTagType.STEALTH_ROCK) .target(MoveTarget.ENEMY_SIDE) .reflectable(), - new AttackMove(Moves.GRASS_KNOT, PokemonType.GRASS, MoveCategory.SPECIAL, -1, 100, 20, -1, 0, 4) + new AttackMove(MoveId.GRASS_KNOT, PokemonType.GRASS, MoveCategory.SPECIAL, -1, 100, 20, -1, 0, 4) .attr(WeightPowerAttr) .makesContact(), - new AttackMove(Moves.CHATTER, PokemonType.FLYING, MoveCategory.SPECIAL, 65, 100, 20, 100, 0, 4) + new AttackMove(MoveId.CHATTER, PokemonType.FLYING, MoveCategory.SPECIAL, 65, 100, 20, 100, 0, 4) .attr(ConfuseAttr) .soundBased(), - new AttackMove(Moves.JUDGMENT, PokemonType.NORMAL, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 4) + new AttackMove(MoveId.JUDGMENT, PokemonType.NORMAL, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 4) .attr(FormChangeItemTypeAttr), - new AttackMove(Moves.BUG_BITE, PokemonType.BUG, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 4) + new AttackMove(MoveId.BUG_BITE, PokemonType.BUG, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 4) .attr(StealEatBerryAttr), - new AttackMove(Moves.CHARGE_BEAM, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 50, 90, 10, 70, 0, 4) + new AttackMove(MoveId.CHARGE_BEAM, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 50, 90, 10, 70, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPATK ], 1, true), - new AttackMove(Moves.WOOD_HAMMER, PokemonType.GRASS, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 4) + new AttackMove(MoveId.WOOD_HAMMER, PokemonType.GRASS, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 4) .attr(RecoilAttr, false, 0.33) .recklessMove(), - new AttackMove(Moves.AQUA_JET, PokemonType.WATER, MoveCategory.PHYSICAL, 40, 100, 20, -1, 1, 4), - new AttackMove(Moves.ATTACK_ORDER, PokemonType.BUG, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 4) + new AttackMove(MoveId.AQUA_JET, PokemonType.WATER, MoveCategory.PHYSICAL, 40, 100, 20, -1, 1, 4), + new AttackMove(MoveId.ATTACK_ORDER, PokemonType.BUG, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 4) .attr(HighCritAttr) .makesContact(false), - new SelfStatusMove(Moves.DEFEND_ORDER, PokemonType.BUG, -1, 10, -1, 0, 4) + new SelfStatusMove(MoveId.DEFEND_ORDER, PokemonType.BUG, -1, 10, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], 1, true), - new SelfStatusMove(Moves.HEAL_ORDER, PokemonType.BUG, -1, 5, -1, 0, 4) + new SelfStatusMove(MoveId.HEAL_ORDER, PokemonType.BUG, -1, 5, -1, 0, 4) .attr(HealAttr, 0.5) .triageMove(), - new AttackMove(Moves.HEAD_SMASH, PokemonType.ROCK, MoveCategory.PHYSICAL, 150, 80, 5, -1, 0, 4) + new AttackMove(MoveId.HEAD_SMASH, PokemonType.ROCK, MoveCategory.PHYSICAL, 150, 80, 5, -1, 0, 4) .attr(RecoilAttr, false, 0.5) .recklessMove(), - new AttackMove(Moves.DOUBLE_HIT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 35, 90, 10, -1, 0, 4) + new AttackMove(MoveId.DOUBLE_HIT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 35, 90, 10, -1, 0, 4) .attr(MultiHitAttr, MultiHitType._2), - new AttackMove(Moves.ROAR_OF_TIME, PokemonType.DRAGON, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 4) + new AttackMove(MoveId.ROAR_OF_TIME, PokemonType.DRAGON, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 4) .attr(RechargeAttr), - new AttackMove(Moves.SPACIAL_REND, PokemonType.DRAGON, MoveCategory.SPECIAL, 100, 95, 5, -1, 0, 4) + new AttackMove(MoveId.SPACIAL_REND, PokemonType.DRAGON, MoveCategory.SPECIAL, 100, 95, 5, -1, 0, 4) .attr(HighCritAttr), - new SelfStatusMove(Moves.LUNAR_DANCE, PokemonType.PSYCHIC, -1, 10, -1, 0, 4) + new SelfStatusMove(MoveId.LUNAR_DANCE, PokemonType.PSYCHIC, -1, 10, -1, 0, 4) .attr(SacrificialFullRestoreAttr, true, "moveTriggers:lunarDanceRestore") .danceMove() .triageMove() .condition(failIfLastInPartyCondition), - new AttackMove(Moves.CRUSH_GRIP, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) + new AttackMove(MoveId.CRUSH_GRIP, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) .attr(OpponentHighHpPowerAttr, 120), - new AttackMove(Moves.MAGMA_STORM, PokemonType.FIRE, MoveCategory.SPECIAL, 100, 75, 5, -1, 0, 4) + new AttackMove(MoveId.MAGMA_STORM, PokemonType.FIRE, MoveCategory.SPECIAL, 100, 75, 5, -1, 0, 4) .attr(TrapAttr, BattlerTagType.MAGMA_STORM), - new StatusMove(Moves.DARK_VOID, PokemonType.DARK, 80, 10, -1, 0, 4) //Accuracy from Generations 4-6 + new StatusMove(MoveId.DARK_VOID, PokemonType.DARK, 80, 10, -1, 0, 4) //Accuracy from Generations 4-6 .attr(StatusEffectAttr, StatusEffect.SLEEP) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.SEED_FLARE, PokemonType.GRASS, MoveCategory.SPECIAL, 120, 85, 5, 40, 0, 4) + new AttackMove(MoveId.SEED_FLARE, PokemonType.GRASS, MoveCategory.SPECIAL, 120, 85, 5, 40, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -2), - new AttackMove(Moves.OMINOUS_WIND, PokemonType.GHOST, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 4) + new AttackMove(MoveId.OMINOUS_WIND, PokemonType.GHOST, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 4) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, true) .windMove(), - new ChargingAttackMove(Moves.SHADOW_FORCE, PokemonType.GHOST, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 4) + new ChargingAttackMove(MoveId.SHADOW_FORCE, PokemonType.GHOST, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 4) .chargeText(i18next.t("moveTriggers:vanishedInstantly", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.HIDDEN) .ignoresProtect(), - new SelfStatusMove(Moves.HONE_CLAWS, PokemonType.DARK, -1, 15, -1, 0, 5) + new SelfStatusMove(MoveId.HONE_CLAWS, PokemonType.DARK, -1, 15, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.ACC ], 1, true), - new StatusMove(Moves.WIDE_GUARD, PokemonType.ROCK, -1, 10, -1, 3, 5) + new StatusMove(MoveId.WIDE_GUARD, PokemonType.ROCK, -1, 10, -1, 3, 5) .target(MoveTarget.USER_SIDE) .attr(AddArenaTagAttr, ArenaTagType.WIDE_GUARD, 1, true, true) .condition(failIfLastCondition), - new StatusMove(Moves.GUARD_SPLIT, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) + new StatusMove(MoveId.GUARD_SPLIT, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) .attr(AverageStatsAttr, [ Stat.DEF, Stat.SPDEF ], "moveTriggers:sharedGuard"), - new StatusMove(Moves.POWER_SPLIT, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) + new StatusMove(MoveId.POWER_SPLIT, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) .attr(AverageStatsAttr, [ Stat.ATK, Stat.SPATK ], "moveTriggers:sharedPower"), - new StatusMove(Moves.WONDER_ROOM, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) + new StatusMove(MoveId.WONDER_ROOM, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) .ignoresProtect() .target(MoveTarget.BOTH_SIDES) .unimplemented(), - new AttackMove(Moves.PSYSHOCK, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) + new AttackMove(MoveId.PSYSHOCK, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) .attr(DefDefAttr), - new AttackMove(Moves.VENOSHOCK, PokemonType.POISON, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5) + new AttackMove(MoveId.VENOSHOCK, PokemonType.POISON, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5) .attr(MovePowerMultiplierAttr, (user, target, move) => target.status && (target.status.effect === StatusEffect.POISON || target.status.effect === StatusEffect.TOXIC) ? 2 : 1), - new SelfStatusMove(Moves.AUTOTOMIZE, PokemonType.STEEL, -1, 15, -1, 0, 5) + new SelfStatusMove(MoveId.AUTOTOMIZE, PokemonType.STEEL, -1, 15, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPD ], 2, true) .attr(AddBattlerTagAttr, BattlerTagType.AUTOTOMIZED, true), - new SelfStatusMove(Moves.RAGE_POWDER, PokemonType.BUG, -1, 20, -1, 2, 5) + new SelfStatusMove(MoveId.RAGE_POWDER, PokemonType.BUG, -1, 20, -1, 2, 5) .powderMove() .attr(AddBattlerTagAttr, BattlerTagType.CENTER_OF_ATTENTION, true), - new StatusMove(Moves.TELEKINESIS, PokemonType.PSYCHIC, -1, 15, -1, 0, 5) + new StatusMove(MoveId.TELEKINESIS, PokemonType.PSYCHIC, -1, 15, -1, 0, 5) .condition(failOnGravityCondition) - .condition((_user, target, _move) => ![ Species.DIGLETT, Species.DUGTRIO, Species.ALOLA_DIGLETT, Species.ALOLA_DUGTRIO, Species.SANDYGAST, Species.PALOSSAND, Species.WIGLETT, Species.WUGTRIO ].includes(target.species.speciesId)) - .condition((_user, target, _move) => !(target.species.speciesId === Species.GENGAR && target.getFormKey() === "mega")) + .condition((_user, target, _move) => ![ SpeciesId.DIGLETT, SpeciesId.DUGTRIO, SpeciesId.ALOLA_DIGLETT, SpeciesId.ALOLA_DUGTRIO, SpeciesId.SANDYGAST, SpeciesId.PALOSSAND, SpeciesId.WIGLETT, SpeciesId.WUGTRIO ].includes(target.species.speciesId)) + .condition((_user, target, _move) => !(target.species.speciesId === SpeciesId.GENGAR && target.getFormKey() === "mega")) .condition((_user, target, _move) => isNullOrUndefined(target.getTag(BattlerTagType.INGRAIN)) && isNullOrUndefined(target.getTag(BattlerTagType.IGNORE_FLYING))) .attr(AddBattlerTagAttr, BattlerTagType.TELEKINESIS, false, true, 3) .attr(AddBattlerTagAttr, BattlerTagType.FLOATING, false, true, 3) .reflectable(), - new StatusMove(Moves.MAGIC_ROOM, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) + new StatusMove(MoveId.MAGIC_ROOM, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) .ignoresProtect() .target(MoveTarget.BOTH_SIDES) .unimplemented(), - new AttackMove(Moves.SMACK_DOWN, PokemonType.ROCK, MoveCategory.PHYSICAL, 50, 100, 15, -1, 0, 5) + new AttackMove(MoveId.SMACK_DOWN, PokemonType.ROCK, MoveCategory.PHYSICAL, 50, 100, 15, -1, 0, 5) .attr(FallDownAttr) .attr(AddBattlerTagAttr, BattlerTagType.INTERRUPTED) .attr(RemoveBattlerTagAttr, [ BattlerTagType.FLYING, BattlerTagType.FLOATING, BattlerTagType.TELEKINESIS ]) .attr(HitsTagAttr, BattlerTagType.FLYING) .makesContact(false), - new AttackMove(Moves.STORM_THROW, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 5) + new AttackMove(MoveId.STORM_THROW, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 5) .attr(CritOnlyAttr), - new AttackMove(Moves.FLAME_BURST, PokemonType.FIRE, MoveCategory.SPECIAL, 70, 100, 15, -1, 0, 5) + new AttackMove(MoveId.FLAME_BURST, PokemonType.FIRE, MoveCategory.SPECIAL, 70, 100, 15, -1, 0, 5) .attr(FlameBurstAttr), - new AttackMove(Moves.SLUDGE_WAVE, PokemonType.POISON, MoveCategory.SPECIAL, 95, 100, 10, 10, 0, 5) + new AttackMove(MoveId.SLUDGE_WAVE, PokemonType.POISON, MoveCategory.SPECIAL, 95, 100, 10, 10, 0, 5) .attr(StatusEffectAttr, StatusEffect.POISON) .target(MoveTarget.ALL_NEAR_OTHERS), - new SelfStatusMove(Moves.QUIVER_DANCE, PokemonType.BUG, -1, 20, -1, 0, 5) + new SelfStatusMove(MoveId.QUIVER_DANCE, PokemonType.BUG, -1, 20, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, true) .danceMove(), - new AttackMove(Moves.HEAVY_SLAM, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 5) + new AttackMove(MoveId.HEAVY_SLAM, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 5) .attr(AlwaysHitMinimizeAttr) .attr(CompareWeightPowerAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED), - new AttackMove(Moves.SYNCHRONOISE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 5) + new AttackMove(MoveId.SYNCHRONOISE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 5) .target(MoveTarget.ALL_NEAR_OTHERS) .condition(unknownTypeCondition) .attr(HitsSameTypeAttr), - new AttackMove(Moves.ELECTRO_BALL, PokemonType.ELECTRIC, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 5) + new AttackMove(MoveId.ELECTRO_BALL, PokemonType.ELECTRIC, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 5) .attr(ElectroBallPowerAttr) .ballBombMove(), - new StatusMove(Moves.SOAK, PokemonType.WATER, 100, 20, -1, 0, 5) + new StatusMove(MoveId.SOAK, PokemonType.WATER, 100, 20, -1, 0, 5) .attr(ChangeTypeAttr, PokemonType.WATER) .reflectable(), - new AttackMove(Moves.FLAME_CHARGE, PokemonType.FIRE, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 5) + new AttackMove(MoveId.FLAME_CHARGE, PokemonType.FIRE, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true), - new SelfStatusMove(Moves.COIL, PokemonType.POISON, -1, 20, -1, 0, 5) + new SelfStatusMove(MoveId.COIL, PokemonType.POISON, -1, 20, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.ACC ], 1, true), - new AttackMove(Moves.LOW_SWEEP, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 65, 100, 20, 100, 0, 5) + new AttackMove(MoveId.LOW_SWEEP, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 65, 100, 20, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPD ], -1), - new AttackMove(Moves.ACID_SPRAY, PokemonType.POISON, MoveCategory.SPECIAL, 40, 100, 20, 100, 0, 5) + new AttackMove(MoveId.ACID_SPRAY, PokemonType.POISON, MoveCategory.SPECIAL, 40, 100, 20, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -2) .ballBombMove(), - new AttackMove(Moves.FOUL_PLAY, PokemonType.DARK, MoveCategory.PHYSICAL, 95, 100, 15, -1, 0, 5) + new AttackMove(MoveId.FOUL_PLAY, PokemonType.DARK, MoveCategory.PHYSICAL, 95, 100, 15, -1, 0, 5) .attr(TargetAtkUserAtkAttr), - new StatusMove(Moves.SIMPLE_BEAM, PokemonType.NORMAL, 100, 15, -1, 0, 5) - .attr(AbilityChangeAttr, Abilities.SIMPLE) + new StatusMove(MoveId.SIMPLE_BEAM, PokemonType.NORMAL, 100, 15, -1, 0, 5) + .attr(AbilityChangeAttr, AbilityId.SIMPLE) .reflectable(), - new StatusMove(Moves.ENTRAINMENT, PokemonType.NORMAL, 100, 15, -1, 0, 5) + new StatusMove(MoveId.ENTRAINMENT, PokemonType.NORMAL, 100, 15, -1, 0, 5) .attr(AbilityGiveAttr) .reflectable(), - new StatusMove(Moves.AFTER_YOU, PokemonType.NORMAL, -1, 15, -1, 0, 5) + new StatusMove(MoveId.AFTER_YOU, PokemonType.NORMAL, -1, 15, -1, 0, 5) .ignoresProtect() .ignoresSubstitute() .target(MoveTarget.NEAR_OTHER) .condition(failIfSingleBattle) .condition((user, target, move) => !target.turnData.acted) .attr(AfterYouAttr), - new AttackMove(Moves.ROUND, PokemonType.NORMAL, MoveCategory.SPECIAL, 60, 100, 15, -1, 0, 5) + new AttackMove(MoveId.ROUND, PokemonType.NORMAL, MoveCategory.SPECIAL, 60, 100, 15, -1, 0, 5) .attr(CueNextRoundAttr) .attr(RoundPowerAttr) .soundBased(), - new AttackMove(Moves.ECHOED_VOICE, PokemonType.NORMAL, MoveCategory.SPECIAL, 40, 100, 15, -1, 0, 5) + new AttackMove(MoveId.ECHOED_VOICE, PokemonType.NORMAL, MoveCategory.SPECIAL, 40, 100, 15, -1, 0, 5) .attr(ConsecutiveUseMultiBasePowerAttr, 5, false) .soundBased(), - new AttackMove(Moves.CHIP_AWAY, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 5) + new AttackMove(MoveId.CHIP_AWAY, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 5) .attr(IgnoreOpponentStatStagesAttr), - new AttackMove(Moves.CLEAR_SMOG, PokemonType.POISON, MoveCategory.SPECIAL, 50, -1, 15, -1, 0, 5) + new AttackMove(MoveId.CLEAR_SMOG, PokemonType.POISON, MoveCategory.SPECIAL, 50, -1, 15, -1, 0, 5) .attr(ResetStatsAttr, false), - new AttackMove(Moves.STORED_POWER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 20, 100, 10, -1, 0, 5) + new AttackMove(MoveId.STORED_POWER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 20, 100, 10, -1, 0, 5) .attr(PositiveStatStagePowerAttr), - new StatusMove(Moves.QUICK_GUARD, PokemonType.FIGHTING, -1, 15, -1, 3, 5) + new StatusMove(MoveId.QUICK_GUARD, PokemonType.FIGHTING, -1, 15, -1, 3, 5) .target(MoveTarget.USER_SIDE) .attr(AddArenaTagAttr, ArenaTagType.QUICK_GUARD, 1, true, true) .condition(failIfLastCondition), - new SelfStatusMove(Moves.ALLY_SWITCH, PokemonType.PSYCHIC, -1, 15, -1, 2, 5) + new SelfStatusMove(MoveId.ALLY_SWITCH, PokemonType.PSYCHIC, -1, 15, -1, 2, 5) .ignoresProtect() .unimplemented(), - new AttackMove(Moves.SCALD, PokemonType.WATER, MoveCategory.SPECIAL, 80, 100, 15, 30, 0, 5) + new AttackMove(MoveId.SCALD, PokemonType.WATER, MoveCategory.SPECIAL, 80, 100, 15, 30, 0, 5) .attr(HealStatusEffectAttr, false, StatusEffect.FREEZE) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN), - new SelfStatusMove(Moves.SHELL_SMASH, PokemonType.NORMAL, -1, 15, -1, 0, 5) + new SelfStatusMove(MoveId.SHELL_SMASH, PokemonType.NORMAL, -1, 15, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK, Stat.SPD ], 2, true) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true), - new StatusMove(Moves.HEAL_PULSE, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) + new StatusMove(MoveId.HEAL_PULSE, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) .attr(HealAttr, 0.5, false, false) .pulseMove() .triageMove() .reflectable(), - new AttackMove(Moves.HEX, PokemonType.GHOST, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5) + new AttackMove(MoveId.HEX, PokemonType.GHOST, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5) .attr( MovePowerMultiplierAttr, - (user, target, move) => target.status || target.hasAbility(Abilities.COMATOSE) ? 2 : 1), - new ChargingAttackMove(Moves.SKY_DROP, PokemonType.FLYING, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 5) + (user, target, move) => target.status || target.hasAbility(AbilityId.COMATOSE) ? 2 : 1), + new ChargingAttackMove(MoveId.SKY_DROP, PokemonType.FLYING, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 5) .chargeText(i18next.t("moveTriggers:tookTargetIntoSky", { pokemonName: "{USER}", targetName: "{TARGET}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.FLYING) .condition(failOnGravityCondition) .condition((user, target, move) => !target.getTag(BattlerTagType.SUBSTITUTE)) .partial(), // Should immobilize the target, Flying types should take no damage. cf https://bulbapedia.bulbagarden.net/wiki/Sky_Drop_(move) and https://www.smogon.com/dex/sv/moves/sky-drop/ - new SelfStatusMove(Moves.SHIFT_GEAR, PokemonType.STEEL, -1, 10, -1, 0, 5) + new SelfStatusMove(MoveId.SHIFT_GEAR, PokemonType.STEEL, -1, 10, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true) .attr(StatStageChangeAttr, [ Stat.SPD ], 2, true), - new AttackMove(Moves.CIRCLE_THROW, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 90, 10, -1, -6, 5) + new AttackMove(MoveId.CIRCLE_THROW, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 90, 10, -1, -6, 5) .attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH) .hidesTarget(), - new AttackMove(Moves.INCINERATE, PokemonType.FIRE, MoveCategory.SPECIAL, 60, 100, 15, -1, 0, 5) + new AttackMove(MoveId.INCINERATE, PokemonType.FIRE, MoveCategory.SPECIAL, 60, 100, 15, -1, 0, 5) .target(MoveTarget.ALL_NEAR_ENEMIES) .attr(RemoveHeldItemAttr, true) .edgeCase(), // Should be able to remove items from pokemon with Sticky Hold if the damage causes them to faint - new StatusMove(Moves.QUASH, PokemonType.DARK, 100, 15, -1, 0, 5) + new StatusMove(MoveId.QUASH, PokemonType.DARK, 100, 15, -1, 0, 5) .condition(failIfSingleBattle) .condition((user, target, move) => !target.turnData.acted) .attr(ForceLastAttr), - new AttackMove(Moves.ACROBATICS, PokemonType.FLYING, MoveCategory.PHYSICAL, 55, 100, 15, -1, 0, 5) + new AttackMove(MoveId.ACROBATICS, PokemonType.FLYING, MoveCategory.PHYSICAL, 55, 100, 15, -1, 0, 5) .attr(MovePowerMultiplierAttr, (user, target, move) => Math.max(1, 2 - 0.2 * user.getHeldItems().filter(i => i.isTransferable).reduce((v, m) => v + m.stackCount, 0))), - new StatusMove(Moves.REFLECT_TYPE, PokemonType.NORMAL, -1, 15, -1, 0, 5) + new StatusMove(MoveId.REFLECT_TYPE, PokemonType.NORMAL, -1, 15, -1, 0, 5) .ignoresSubstitute() .attr(CopyTypeAttr), - new AttackMove(Moves.RETALIATE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 5, -1, 0, 5) + new AttackMove(MoveId.RETALIATE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 5, -1, 0, 5) .attr(MovePowerMultiplierAttr, (user, target, move) => { const turn = globalScene.currentBattle.turn; const lastPlayerFaint = globalScene.currentBattle.playerFaintsHistory[globalScene.currentBattle.playerFaintsHistory.length - 1]; @@ -9871,333 +9871,333 @@ export function initMoves() { (lastEnemyFaint !== undefined && turn - lastEnemyFaint.turn === 1 && !user.isPlayer()) ) ? 2 : 1; }), - new AttackMove(Moves.FINAL_GAMBIT, PokemonType.FIGHTING, MoveCategory.SPECIAL, -1, 100, 5, -1, 0, 5) + new AttackMove(MoveId.FINAL_GAMBIT, PokemonType.FIGHTING, MoveCategory.SPECIAL, -1, 100, 5, -1, 0, 5) .attr(UserHpDamageAttr) .attr(SacrificialAttrOnHit), - new StatusMove(Moves.BESTOW, PokemonType.NORMAL, -1, 15, -1, 0, 5) + new StatusMove(MoveId.BESTOW, PokemonType.NORMAL, -1, 15, -1, 0, 5) .ignoresProtect() .ignoresSubstitute() .unimplemented(), - new AttackMove(Moves.INFERNO, PokemonType.FIRE, MoveCategory.SPECIAL, 100, 50, 5, 100, 0, 5) + new AttackMove(MoveId.INFERNO, PokemonType.FIRE, MoveCategory.SPECIAL, 100, 50, 5, 100, 0, 5) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.WATER_PLEDGE, PokemonType.WATER, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) + new AttackMove(MoveId.WATER_PLEDGE, PokemonType.WATER, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) .attr(AwaitCombinedPledgeAttr) .attr(CombinedPledgeTypeAttr) .attr(CombinedPledgePowerAttr) .attr(CombinedPledgeStabBoostAttr) - .attr(AddPledgeEffectAttr, ArenaTagType.WATER_FIRE_PLEDGE, Moves.FIRE_PLEDGE, true) - .attr(AddPledgeEffectAttr, ArenaTagType.GRASS_WATER_PLEDGE, Moves.GRASS_PLEDGE) + .attr(AddPledgeEffectAttr, ArenaTagType.WATER_FIRE_PLEDGE, MoveId.FIRE_PLEDGE, true) + .attr(AddPledgeEffectAttr, ArenaTagType.GRASS_WATER_PLEDGE, MoveId.GRASS_PLEDGE) .attr(BypassRedirectAttr, true), - new AttackMove(Moves.FIRE_PLEDGE, PokemonType.FIRE, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) + new AttackMove(MoveId.FIRE_PLEDGE, PokemonType.FIRE, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) .attr(AwaitCombinedPledgeAttr) .attr(CombinedPledgeTypeAttr) .attr(CombinedPledgePowerAttr) .attr(CombinedPledgeStabBoostAttr) - .attr(AddPledgeEffectAttr, ArenaTagType.FIRE_GRASS_PLEDGE, Moves.GRASS_PLEDGE) - .attr(AddPledgeEffectAttr, ArenaTagType.WATER_FIRE_PLEDGE, Moves.WATER_PLEDGE, true) + .attr(AddPledgeEffectAttr, ArenaTagType.FIRE_GRASS_PLEDGE, MoveId.GRASS_PLEDGE) + .attr(AddPledgeEffectAttr, ArenaTagType.WATER_FIRE_PLEDGE, MoveId.WATER_PLEDGE, true) .attr(BypassRedirectAttr, true), - new AttackMove(Moves.GRASS_PLEDGE, PokemonType.GRASS, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) + new AttackMove(MoveId.GRASS_PLEDGE, PokemonType.GRASS, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) .attr(AwaitCombinedPledgeAttr) .attr(CombinedPledgeTypeAttr) .attr(CombinedPledgePowerAttr) .attr(CombinedPledgeStabBoostAttr) - .attr(AddPledgeEffectAttr, ArenaTagType.GRASS_WATER_PLEDGE, Moves.WATER_PLEDGE) - .attr(AddPledgeEffectAttr, ArenaTagType.FIRE_GRASS_PLEDGE, Moves.FIRE_PLEDGE) + .attr(AddPledgeEffectAttr, ArenaTagType.GRASS_WATER_PLEDGE, MoveId.WATER_PLEDGE) + .attr(AddPledgeEffectAttr, ArenaTagType.FIRE_GRASS_PLEDGE, MoveId.FIRE_PLEDGE) .attr(BypassRedirectAttr, true), - new AttackMove(Moves.VOLT_SWITCH, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 20, -1, 0, 5) + new AttackMove(MoveId.VOLT_SWITCH, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 20, -1, 0, 5) .attr(ForceSwitchOutAttr, true), - new AttackMove(Moves.STRUGGLE_BUG, PokemonType.BUG, MoveCategory.SPECIAL, 50, 100, 20, 100, 0, 5) + new AttackMove(MoveId.STRUGGLE_BUG, PokemonType.BUG, MoveCategory.SPECIAL, 50, 100, 20, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.BULLDOZE, PokemonType.GROUND, MoveCategory.PHYSICAL, 60, 100, 20, 100, 0, 5) + new AttackMove(MoveId.BULLDOZE, PokemonType.GROUND, MoveCategory.PHYSICAL, 60, 100, 20, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.GRASSY && target.isGrounded() ? 0.5 : 1) .makesContact(false) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.FROST_BREATH, PokemonType.ICE, MoveCategory.SPECIAL, 60, 90, 10, -1, 0, 5) + new AttackMove(MoveId.FROST_BREATH, PokemonType.ICE, MoveCategory.SPECIAL, 60, 90, 10, -1, 0, 5) .attr(CritOnlyAttr), - new AttackMove(Moves.DRAGON_TAIL, PokemonType.DRAGON, MoveCategory.PHYSICAL, 60, 90, 10, -1, -6, 5) + new AttackMove(MoveId.DRAGON_TAIL, PokemonType.DRAGON, MoveCategory.PHYSICAL, 60, 90, 10, -1, -6, 5) .attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH) .hidesTarget(), - new SelfStatusMove(Moves.WORK_UP, PokemonType.NORMAL, -1, 30, -1, 0, 5) + new SelfStatusMove(MoveId.WORK_UP, PokemonType.NORMAL, -1, 30, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], 1, true), - new AttackMove(Moves.ELECTROWEB, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 5) + new AttackMove(MoveId.ELECTROWEB, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.WILD_CHARGE, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 5) + new AttackMove(MoveId.WILD_CHARGE, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 5) .attr(RecoilAttr) .recklessMove(), - new AttackMove(Moves.DRILL_RUN, PokemonType.GROUND, MoveCategory.PHYSICAL, 80, 95, 10, -1, 0, 5) + new AttackMove(MoveId.DRILL_RUN, PokemonType.GROUND, MoveCategory.PHYSICAL, 80, 95, 10, -1, 0, 5) .attr(HighCritAttr), - new AttackMove(Moves.DUAL_CHOP, PokemonType.DRAGON, MoveCategory.PHYSICAL, 40, 90, 15, -1, 0, 5) + new AttackMove(MoveId.DUAL_CHOP, PokemonType.DRAGON, MoveCategory.PHYSICAL, 40, 90, 15, -1, 0, 5) .attr(MultiHitAttr, MultiHitType._2), - new AttackMove(Moves.HEART_STAMP, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 60, 100, 25, 30, 0, 5) + new AttackMove(MoveId.HEART_STAMP, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 60, 100, 25, 30, 0, 5) .attr(FlinchAttr), - new AttackMove(Moves.HORN_LEECH, PokemonType.GRASS, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 5) + new AttackMove(MoveId.HORN_LEECH, PokemonType.GRASS, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 5) .attr(HitHealAttr) .triageMove(), - new AttackMove(Moves.SACRED_SWORD, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 5) + new AttackMove(MoveId.SACRED_SWORD, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 5) .attr(IgnoreOpponentStatStagesAttr) .slicingMove(), - new AttackMove(Moves.RAZOR_SHELL, PokemonType.WATER, MoveCategory.PHYSICAL, 75, 95, 10, 50, 0, 5) + new AttackMove(MoveId.RAZOR_SHELL, PokemonType.WATER, MoveCategory.PHYSICAL, 75, 95, 10, 50, 0, 5) .attr(StatStageChangeAttr, [ Stat.DEF ], -1) .slicingMove(), - new AttackMove(Moves.HEAT_CRASH, PokemonType.FIRE, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 5) + new AttackMove(MoveId.HEAT_CRASH, PokemonType.FIRE, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 5) .attr(AlwaysHitMinimizeAttr) .attr(CompareWeightPowerAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED), - new AttackMove(Moves.LEAF_TORNADO, PokemonType.GRASS, MoveCategory.SPECIAL, 65, 90, 10, 50, 0, 5) + new AttackMove(MoveId.LEAF_TORNADO, PokemonType.GRASS, MoveCategory.SPECIAL, 65, 90, 10, 50, 0, 5) .attr(StatStageChangeAttr, [ Stat.ACC ], -1), - new AttackMove(Moves.STEAMROLLER, PokemonType.BUG, MoveCategory.PHYSICAL, 65, 100, 20, 30, 0, 5) + new AttackMove(MoveId.STEAMROLLER, PokemonType.BUG, MoveCategory.PHYSICAL, 65, 100, 20, 30, 0, 5) .attr(AlwaysHitMinimizeAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED) .attr(FlinchAttr), - new SelfStatusMove(Moves.COTTON_GUARD, PokemonType.GRASS, -1, 10, -1, 0, 5) + new SelfStatusMove(MoveId.COTTON_GUARD, PokemonType.GRASS, -1, 10, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.DEF ], 3, true), - new AttackMove(Moves.NIGHT_DAZE, PokemonType.DARK, MoveCategory.SPECIAL, 85, 95, 10, 40, 0, 5) + new AttackMove(MoveId.NIGHT_DAZE, PokemonType.DARK, MoveCategory.SPECIAL, 85, 95, 10, 40, 0, 5) .attr(StatStageChangeAttr, [ Stat.ACC ], -1), - new AttackMove(Moves.PSYSTRIKE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 5) + new AttackMove(MoveId.PSYSTRIKE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 5) .attr(DefDefAttr), - new AttackMove(Moves.TAIL_SLAP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 25, 85, 10, -1, 0, 5) + new AttackMove(MoveId.TAIL_SLAP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 25, 85, 10, -1, 0, 5) .attr(MultiHitAttr), - new AttackMove(Moves.HURRICANE, PokemonType.FLYING, MoveCategory.SPECIAL, 110, 70, 10, 30, 0, 5) + new AttackMove(MoveId.HURRICANE, PokemonType.FLYING, MoveCategory.SPECIAL, 110, 70, 10, 30, 0, 5) .attr(ThunderAccuracyAttr) .attr(ConfuseAttr) .attr(HitsTagAttr, BattlerTagType.FLYING) .windMove(), - new AttackMove(Moves.HEAD_CHARGE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 5) + new AttackMove(MoveId.HEAD_CHARGE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 5) .attr(RecoilAttr) .recklessMove(), - new AttackMove(Moves.GEAR_GRIND, PokemonType.STEEL, MoveCategory.PHYSICAL, 50, 85, 15, -1, 0, 5) + new AttackMove(MoveId.GEAR_GRIND, PokemonType.STEEL, MoveCategory.PHYSICAL, 50, 85, 15, -1, 0, 5) .attr(MultiHitAttr, MultiHitType._2), - new AttackMove(Moves.SEARING_SHOT, PokemonType.FIRE, MoveCategory.SPECIAL, 100, 100, 5, 30, 0, 5) + new AttackMove(MoveId.SEARING_SHOT, PokemonType.FIRE, MoveCategory.SPECIAL, 100, 100, 5, 30, 0, 5) .attr(StatusEffectAttr, StatusEffect.BURN) .ballBombMove() .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.TECHNO_BLAST, PokemonType.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 5) + new AttackMove(MoveId.TECHNO_BLAST, PokemonType.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 5) .attr(TechnoBlastTypeAttr), - new AttackMove(Moves.RELIC_SONG, PokemonType.NORMAL, MoveCategory.SPECIAL, 75, 100, 10, 10, 0, 5) + new AttackMove(MoveId.RELIC_SONG, PokemonType.NORMAL, MoveCategory.SPECIAL, 75, 100, 10, 10, 0, 5) .attr(StatusEffectAttr, StatusEffect.SLEEP) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.SECRET_SWORD, PokemonType.FIGHTING, MoveCategory.SPECIAL, 85, 100, 10, -1, 0, 5) + new AttackMove(MoveId.SECRET_SWORD, PokemonType.FIGHTING, MoveCategory.SPECIAL, 85, 100, 10, -1, 0, 5) .attr(DefDefAttr) .slicingMove(), - new AttackMove(Moves.GLACIATE, PokemonType.ICE, MoveCategory.SPECIAL, 65, 95, 10, 100, 0, 5) + new AttackMove(MoveId.GLACIATE, PokemonType.ICE, MoveCategory.SPECIAL, 65, 95, 10, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.BOLT_STRIKE, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 130, 85, 5, 20, 0, 5) + new AttackMove(MoveId.BOLT_STRIKE, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 130, 85, 5, 20, 0, 5) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.BLUE_FLARE, PokemonType.FIRE, MoveCategory.SPECIAL, 130, 85, 5, 20, 0, 5) + new AttackMove(MoveId.BLUE_FLARE, PokemonType.FIRE, MoveCategory.SPECIAL, 130, 85, 5, 20, 0, 5) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.FIERY_DANCE, PokemonType.FIRE, MoveCategory.SPECIAL, 80, 100, 10, 50, 0, 5) + new AttackMove(MoveId.FIERY_DANCE, PokemonType.FIRE, MoveCategory.SPECIAL, 80, 100, 10, 50, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPATK ], 1, true) .danceMove(), - new ChargingAttackMove(Moves.FREEZE_SHOCK, PokemonType.ICE, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 5) + new ChargingAttackMove(MoveId.FREEZE_SHOCK, PokemonType.ICE, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 5) .chargeText(i18next.t("moveTriggers:becameCloakedInFreezingLight", { pokemonName: "{USER}" })) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .makesContact(false), - new ChargingAttackMove(Moves.ICE_BURN, PokemonType.ICE, MoveCategory.SPECIAL, 140, 90, 5, 30, 0, 5) + new ChargingAttackMove(MoveId.ICE_BURN, PokemonType.ICE, MoveCategory.SPECIAL, 140, 90, 5, 30, 0, 5) .chargeText(i18next.t("moveTriggers:becameCloakedInFreezingAir", { pokemonName: "{USER}" })) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.SNARL, PokemonType.DARK, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 5) + new AttackMove(MoveId.SNARL, PokemonType.DARK, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.ICICLE_CRASH, PokemonType.ICE, MoveCategory.PHYSICAL, 85, 90, 10, 30, 0, 5) + new AttackMove(MoveId.ICICLE_CRASH, PokemonType.ICE, MoveCategory.PHYSICAL, 85, 90, 10, 30, 0, 5) .attr(FlinchAttr) .makesContact(false), - new AttackMove(Moves.V_CREATE, PokemonType.FIRE, MoveCategory.PHYSICAL, 180, 95, 5, -1, 0, 5) + new AttackMove(MoveId.V_CREATE, PokemonType.FIRE, MoveCategory.PHYSICAL, 180, 95, 5, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF, Stat.SPD ], -1, true), - new AttackMove(Moves.FUSION_FLARE, PokemonType.FIRE, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 5) + new AttackMove(MoveId.FUSION_FLARE, PokemonType.FIRE, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 5) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) - .attr(LastMoveDoublePowerAttr, Moves.FUSION_BOLT), - new AttackMove(Moves.FUSION_BOLT, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 5) - .attr(LastMoveDoublePowerAttr, Moves.FUSION_FLARE) + .attr(LastMoveDoublePowerAttr, MoveId.FUSION_BOLT), + new AttackMove(MoveId.FUSION_BOLT, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 5) + .attr(LastMoveDoublePowerAttr, MoveId.FUSION_FLARE) .makesContact(false), - new AttackMove(Moves.FLYING_PRESS, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 95, 10, -1, 0, 6) + new AttackMove(MoveId.FLYING_PRESS, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 95, 10, -1, 0, 6) .attr(AlwaysHitMinimizeAttr) .attr(FlyingTypeMultiplierAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED) .condition(failOnGravityCondition), - new StatusMove(Moves.MAT_BLOCK, PokemonType.FIGHTING, -1, 10, -1, 0, 6) + new StatusMove(MoveId.MAT_BLOCK, PokemonType.FIGHTING, -1, 10, -1, 0, 6) .target(MoveTarget.USER_SIDE) .attr(AddArenaTagAttr, ArenaTagType.MAT_BLOCK, 1, true, true) .condition(new FirstMoveCondition()) .condition(failIfLastCondition), - new AttackMove(Moves.BELCH, PokemonType.POISON, MoveCategory.SPECIAL, 120, 90, 10, -1, 0, 6) + new AttackMove(MoveId.BELCH, PokemonType.POISON, MoveCategory.SPECIAL, 120, 90, 10, -1, 0, 6) .condition((user, target, move) => user.battleData.hasEatenBerry), - new StatusMove(Moves.ROTOTILLER, PokemonType.GROUND, -1, 10, -1, 0, 6) + new StatusMove(MoveId.ROTOTILLER, PokemonType.GROUND, -1, 10, -1, 0, 6) .target(MoveTarget.ALL) .condition((user, target, move) => { // If any fielded pokémon is grass-type and grounded. return [ ...globalScene.getEnemyParty(), ...globalScene.getPlayerParty() ].some((poke) => poke.isOfType(PokemonType.GRASS) && poke.isGrounded()); }) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], 1, false, { condition: (user, target, move) => target.isOfType(PokemonType.GRASS) && target.isGrounded() }), - new StatusMove(Moves.STICKY_WEB, PokemonType.BUG, -1, 20, -1, 0, 6) + new StatusMove(MoveId.STICKY_WEB, PokemonType.BUG, -1, 20, -1, 0, 6) .attr(AddArenaTrapTagAttr, ArenaTagType.STICKY_WEB) .target(MoveTarget.ENEMY_SIDE) .reflectable(), - new AttackMove(Moves.FELL_STINGER, PokemonType.BUG, MoveCategory.PHYSICAL, 50, 100, 25, -1, 0, 6) + new AttackMove(MoveId.FELL_STINGER, PokemonType.BUG, MoveCategory.PHYSICAL, 50, 100, 25, -1, 0, 6) .attr(PostVictoryStatStageChangeAttr, [ Stat.ATK ], 3, true ), - new ChargingAttackMove(Moves.PHANTOM_FORCE, PokemonType.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) + new ChargingAttackMove(MoveId.PHANTOM_FORCE, PokemonType.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) .chargeText(i18next.t("moveTriggers:vanishedInstantly", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.HIDDEN) .ignoresProtect(), - new StatusMove(Moves.TRICK_OR_TREAT, PokemonType.GHOST, 100, 20, -1, 0, 6) + new StatusMove(MoveId.TRICK_OR_TREAT, PokemonType.GHOST, 100, 20, -1, 0, 6) .attr(AddTypeAttr, PokemonType.GHOST) .reflectable(), - new StatusMove(Moves.NOBLE_ROAR, PokemonType.NORMAL, 100, 30, -1, 0, 6) + new StatusMove(MoveId.NOBLE_ROAR, PokemonType.NORMAL, 100, 30, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1) .soundBased() .reflectable(), - new StatusMove(Moves.ION_DELUGE, PokemonType.ELECTRIC, -1, 25, -1, 1, 6) + new StatusMove(MoveId.ION_DELUGE, PokemonType.ELECTRIC, -1, 25, -1, 1, 6) .attr(AddArenaTagAttr, ArenaTagType.ION_DELUGE) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.PARABOLIC_CHARGE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 65, 100, 20, -1, 0, 6) + new AttackMove(MoveId.PARABOLIC_CHARGE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 65, 100, 20, -1, 0, 6) .attr(HitHealAttr) .target(MoveTarget.ALL_NEAR_OTHERS) .triageMove(), - new StatusMove(Moves.FORESTS_CURSE, PokemonType.GRASS, 100, 20, -1, 0, 6) + new StatusMove(MoveId.FORESTS_CURSE, PokemonType.GRASS, 100, 20, -1, 0, 6) .attr(AddTypeAttr, PokemonType.GRASS) .reflectable(), - new AttackMove(Moves.PETAL_BLIZZARD, PokemonType.GRASS, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 6) + new AttackMove(MoveId.PETAL_BLIZZARD, PokemonType.GRASS, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 6) .windMove() .makesContact(false) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.FREEZE_DRY, PokemonType.ICE, MoveCategory.SPECIAL, 70, 100, 20, 10, 0, 6) + new AttackMove(MoveId.FREEZE_DRY, PokemonType.ICE, MoveCategory.SPECIAL, 70, 100, 20, 10, 0, 6) .attr(StatusEffectAttr, StatusEffect.FREEZE) .attr(FreezeDryAttr), - new AttackMove(Moves.DISARMING_VOICE, PokemonType.FAIRY, MoveCategory.SPECIAL, 40, -1, 15, -1, 0, 6) + new AttackMove(MoveId.DISARMING_VOICE, PokemonType.FAIRY, MoveCategory.SPECIAL, 40, -1, 15, -1, 0, 6) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES), - new StatusMove(Moves.PARTING_SHOT, PokemonType.DARK, 100, 20, -1, 0, 6) + new StatusMove(MoveId.PARTING_SHOT, PokemonType.DARK, 100, 20, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1, false, { trigger: MoveEffectTrigger.PRE_APPLY }) .attr(ForceSwitchOutAttr, true) .soundBased() .reflectable(), - new StatusMove(Moves.TOPSY_TURVY, PokemonType.DARK, -1, 20, -1, 0, 6) + new StatusMove(MoveId.TOPSY_TURVY, PokemonType.DARK, -1, 20, -1, 0, 6) .attr(InvertStatsAttr) .reflectable(), - new AttackMove(Moves.DRAINING_KISS, PokemonType.FAIRY, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 6) + new AttackMove(MoveId.DRAINING_KISS, PokemonType.FAIRY, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 6) .attr(HitHealAttr, 0.75) .makesContact() .triageMove(), - new StatusMove(Moves.CRAFTY_SHIELD, PokemonType.FAIRY, -1, 10, -1, 3, 6) + new StatusMove(MoveId.CRAFTY_SHIELD, PokemonType.FAIRY, -1, 10, -1, 3, 6) .target(MoveTarget.USER_SIDE) .attr(AddArenaTagAttr, ArenaTagType.CRAFTY_SHIELD, 1, true, true) .condition(failIfLastCondition), - new StatusMove(Moves.FLOWER_SHIELD, PokemonType.FAIRY, -1, 10, -1, 0, 6) + new StatusMove(MoveId.FLOWER_SHIELD, PokemonType.FAIRY, -1, 10, -1, 0, 6) .target(MoveTarget.ALL) .attr(StatStageChangeAttr, [ Stat.DEF ], 1, false, { condition: (user, target, move) => target.getTypes().includes(PokemonType.GRASS) && !target.getTag(SemiInvulnerableTag) }), - new StatusMove(Moves.GRASSY_TERRAIN, PokemonType.GRASS, -1, 10, -1, 0, 6) + new StatusMove(MoveId.GRASSY_TERRAIN, PokemonType.GRASS, -1, 10, -1, 0, 6) .attr(TerrainChangeAttr, TerrainType.GRASSY) .target(MoveTarget.BOTH_SIDES), - new StatusMove(Moves.MISTY_TERRAIN, PokemonType.FAIRY, -1, 10, -1, 0, 6) + new StatusMove(MoveId.MISTY_TERRAIN, PokemonType.FAIRY, -1, 10, -1, 0, 6) .attr(TerrainChangeAttr, TerrainType.MISTY) .target(MoveTarget.BOTH_SIDES), - new StatusMove(Moves.ELECTRIFY, PokemonType.ELECTRIC, -1, 20, -1, 0, 6) + new StatusMove(MoveId.ELECTRIFY, PokemonType.ELECTRIC, -1, 20, -1, 0, 6) .attr(AddBattlerTagAttr, BattlerTagType.ELECTRIFIED, false, true), - new AttackMove(Moves.PLAY_ROUGH, PokemonType.FAIRY, MoveCategory.PHYSICAL, 90, 90, 10, 10, 0, 6) + new AttackMove(MoveId.PLAY_ROUGH, PokemonType.FAIRY, MoveCategory.PHYSICAL, 90, 90, 10, 10, 0, 6) .attr(StatStageChangeAttr, [ Stat.ATK ], -1), - new AttackMove(Moves.FAIRY_WIND, PokemonType.FAIRY, MoveCategory.SPECIAL, 40, 100, 30, -1, 0, 6) + new AttackMove(MoveId.FAIRY_WIND, PokemonType.FAIRY, MoveCategory.SPECIAL, 40, 100, 30, -1, 0, 6) .windMove(), - new AttackMove(Moves.MOONBLAST, PokemonType.FAIRY, MoveCategory.SPECIAL, 95, 100, 15, 30, 0, 6) + new AttackMove(MoveId.MOONBLAST, PokemonType.FAIRY, MoveCategory.SPECIAL, 95, 100, 15, 30, 0, 6) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1), - new AttackMove(Moves.BOOMBURST, PokemonType.NORMAL, MoveCategory.SPECIAL, 140, 100, 10, -1, 0, 6) + new AttackMove(MoveId.BOOMBURST, PokemonType.NORMAL, MoveCategory.SPECIAL, 140, 100, 10, -1, 0, 6) .soundBased() .target(MoveTarget.ALL_NEAR_OTHERS), - new StatusMove(Moves.FAIRY_LOCK, PokemonType.FAIRY, -1, 10, -1, 0, 6) + new StatusMove(MoveId.FAIRY_LOCK, PokemonType.FAIRY, -1, 10, -1, 0, 6) .ignoresSubstitute() .ignoresProtect() .target(MoveTarget.BOTH_SIDES) .attr(AddArenaTagAttr, ArenaTagType.FAIRY_LOCK, 2, true), - new SelfStatusMove(Moves.KINGS_SHIELD, PokemonType.STEEL, -1, 10, -1, 4, 6) + new SelfStatusMove(MoveId.KINGS_SHIELD, PokemonType.STEEL, -1, 10, -1, 4, 6) .attr(ProtectAttr, BattlerTagType.KINGS_SHIELD) .condition(failIfLastCondition), - new StatusMove(Moves.PLAY_NICE, PokemonType.NORMAL, -1, 20, -1, 0, 6) + new StatusMove(MoveId.PLAY_NICE, PokemonType.NORMAL, -1, 20, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.ATK ], -1) .ignoresSubstitute() .reflectable(), - new StatusMove(Moves.CONFIDE, PokemonType.NORMAL, -1, 20, -1, 0, 6) + new StatusMove(MoveId.CONFIDE, PokemonType.NORMAL, -1, 20, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1) .soundBased() .reflectable(), - new AttackMove(Moves.DIAMOND_STORM, PokemonType.ROCK, MoveCategory.PHYSICAL, 100, 95, 5, 50, 0, 6) + new AttackMove(MoveId.DIAMOND_STORM, PokemonType.ROCK, MoveCategory.PHYSICAL, 100, 95, 5, 50, 0, 6) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true, { firstTargetOnly: true }) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.STEAM_ERUPTION, PokemonType.WATER, MoveCategory.SPECIAL, 110, 95, 5, 30, 0, 6) + new AttackMove(MoveId.STEAM_ERUPTION, PokemonType.WATER, MoveCategory.SPECIAL, 110, 95, 5, 30, 0, 6) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(HealStatusEffectAttr, false, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.HYPERSPACE_HOLE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, -1, 5, -1, 0, 6) + new AttackMove(MoveId.HYPERSPACE_HOLE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, -1, 5, -1, 0, 6) .ignoresProtect() .ignoresSubstitute(), - new AttackMove(Moves.WATER_SHURIKEN, PokemonType.WATER, MoveCategory.SPECIAL, 15, 100, 20, -1, 1, 6) + new AttackMove(MoveId.WATER_SHURIKEN, PokemonType.WATER, MoveCategory.SPECIAL, 15, 100, 20, -1, 1, 6) .attr(MultiHitAttr) .attr(WaterShurikenPowerAttr) .attr(WaterShurikenMultiHitTypeAttr), - new AttackMove(Moves.MYSTICAL_FIRE, PokemonType.FIRE, MoveCategory.SPECIAL, 75, 100, 10, 100, 0, 6) + new AttackMove(MoveId.MYSTICAL_FIRE, PokemonType.FIRE, MoveCategory.SPECIAL, 75, 100, 10, 100, 0, 6) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1), - new SelfStatusMove(Moves.SPIKY_SHIELD, PokemonType.GRASS, -1, 10, -1, 4, 6) + new SelfStatusMove(MoveId.SPIKY_SHIELD, PokemonType.GRASS, -1, 10, -1, 4, 6) .attr(ProtectAttr, BattlerTagType.SPIKY_SHIELD) .condition(failIfLastCondition), - new StatusMove(Moves.AROMATIC_MIST, PokemonType.FAIRY, -1, 20, -1, 0, 6) + new StatusMove(MoveId.AROMATIC_MIST, PokemonType.FAIRY, -1, 20, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.SPDEF ], 1) .ignoresSubstitute() .condition(failIfSingleBattle) .target(MoveTarget.NEAR_ALLY), - new StatusMove(Moves.EERIE_IMPULSE, PokemonType.ELECTRIC, 100, 15, -1, 0, 6) + new StatusMove(MoveId.EERIE_IMPULSE, PokemonType.ELECTRIC, 100, 15, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2) .reflectable(), - new StatusMove(Moves.VENOM_DRENCH, PokemonType.POISON, 100, 20, -1, 0, 6) + new StatusMove(MoveId.VENOM_DRENCH, PokemonType.POISON, 100, 20, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK, Stat.SPD ], -1, false, { condition: (user, target, move) => target.status?.effect === StatusEffect.POISON || target.status?.effect === StatusEffect.TOXIC }) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new StatusMove(Moves.POWDER, PokemonType.BUG, 100, 20, -1, 1, 6) + new StatusMove(MoveId.POWDER, PokemonType.BUG, 100, 20, -1, 1, 6) .attr(AddBattlerTagAttr, BattlerTagType.POWDER, false, true) .ignoresSubstitute() .powderMove() .reflectable(), - new ChargingSelfStatusMove(Moves.GEOMANCY, PokemonType.FAIRY, -1, 10, -1, 0, 6) + new ChargingSelfStatusMove(MoveId.GEOMANCY, PokemonType.FAIRY, -1, 10, -1, 0, 6) .chargeText(i18next.t("moveTriggers:isChargingPower", { pokemonName: "{USER}" })) .attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2, true), - new StatusMove(Moves.MAGNETIC_FLUX, PokemonType.ELECTRIC, -1, 20, -1, 0, 6) - .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], 1, false, { condition: (user, target, move) => !![ Abilities.PLUS, Abilities.MINUS ].find(a => target.hasAbility(a, false)) }) + new StatusMove(MoveId.MAGNETIC_FLUX, PokemonType.ELECTRIC, -1, 20, -1, 0, 6) + .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], 1, false, { condition: (user, target, move) => !![ AbilityId.PLUS, AbilityId.MINUS ].find(a => target.hasAbility(a, false)) }) .ignoresSubstitute() .target(MoveTarget.USER_AND_ALLIES) - .condition((user, target, move) => !![ user, user.getAlly() ].filter(p => p?.isActive()).find(p => !![ Abilities.PLUS, Abilities.MINUS ].find(a => p?.hasAbility(a, false)))), - new StatusMove(Moves.HAPPY_HOUR, PokemonType.NORMAL, -1, 30, -1, 0, 6) // No animation + .condition((user, target, move) => !![ user, user.getAlly() ].filter(p => p?.isActive()).find(p => !![ AbilityId.PLUS, AbilityId.MINUS ].find(a => p?.hasAbility(a, false)))), + new StatusMove(MoveId.HAPPY_HOUR, PokemonType.NORMAL, -1, 30, -1, 0, 6) // No animation .attr(AddArenaTagAttr, ArenaTagType.HAPPY_HOUR, null, true) .target(MoveTarget.USER_SIDE), - new StatusMove(Moves.ELECTRIC_TERRAIN, PokemonType.ELECTRIC, -1, 10, -1, 0, 6) + new StatusMove(MoveId.ELECTRIC_TERRAIN, PokemonType.ELECTRIC, -1, 10, -1, 0, 6) .attr(TerrainChangeAttr, TerrainType.ELECTRIC) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.DAZZLING_GLEAM, PokemonType.FAIRY, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 6) + new AttackMove(MoveId.DAZZLING_GLEAM, PokemonType.FAIRY, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 6) .target(MoveTarget.ALL_NEAR_ENEMIES), - new SelfStatusMove(Moves.CELEBRATE, PokemonType.NORMAL, -1, 40, -1, 0, 6) + new SelfStatusMove(MoveId.CELEBRATE, PokemonType.NORMAL, -1, 40, -1, 0, 6) .attr(CelebrateAttr), - new StatusMove(Moves.HOLD_HANDS, PokemonType.NORMAL, -1, 40, -1, 0, 6) + new StatusMove(MoveId.HOLD_HANDS, PokemonType.NORMAL, -1, 40, -1, 0, 6) .ignoresSubstitute() .target(MoveTarget.NEAR_ALLY), - new StatusMove(Moves.BABY_DOLL_EYES, PokemonType.FAIRY, 100, 30, -1, 1, 6) + new StatusMove(MoveId.BABY_DOLL_EYES, PokemonType.FAIRY, 100, 30, -1, 1, 6) .attr(StatStageChangeAttr, [ Stat.ATK ], -1) .reflectable(), - new AttackMove(Moves.NUZZLE, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 20, 100, 20, 100, 0, 6) + new AttackMove(MoveId.NUZZLE, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 20, 100, 20, 100, 0, 6) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.HOLD_BACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 6) + new AttackMove(MoveId.HOLD_BACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 6) .attr(SurviveDamageAttr), - new AttackMove(Moves.INFESTATION, PokemonType.BUG, MoveCategory.SPECIAL, 20, 100, 20, -1, 0, 6) + new AttackMove(MoveId.INFESTATION, PokemonType.BUG, MoveCategory.SPECIAL, 20, 100, 20, -1, 0, 6) .makesContact() .attr(TrapAttr, BattlerTagType.INFESTATION), - new AttackMove(Moves.POWER_UP_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 20, 100, 0, 6) + new AttackMove(MoveId.POWER_UP_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 20, 100, 0, 6) .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true) .punchingMove(), - new AttackMove(Moves.OBLIVION_WING, PokemonType.FLYING, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 6) + new AttackMove(MoveId.OBLIVION_WING, PokemonType.FLYING, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 6) .attr(HitHealAttr, 0.75) .triageMove(), - new AttackMove(Moves.THOUSAND_ARROWS, PokemonType.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) + new AttackMove(MoveId.THOUSAND_ARROWS, PokemonType.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) .attr(NeutralDamageAgainstFlyingTypeMultiplierAttr) .attr(FallDownAttr) .attr(HitsTagAttr, BattlerTagType.FLYING) @@ -10206,176 +10206,176 @@ export function initMoves() { .attr(RemoveBattlerTagAttr, [ BattlerTagType.FLYING, BattlerTagType.FLOATING, BattlerTagType.TELEKINESIS ]) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.THOUSAND_WAVES, PokemonType.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) + new AttackMove(MoveId.THOUSAND_WAVES, PokemonType.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, false, 1, 1, true) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.LANDS_WRATH, PokemonType.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) + new AttackMove(MoveId.LANDS_WRATH, PokemonType.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.LIGHT_OF_RUIN, PokemonType.FAIRY, MoveCategory.SPECIAL, 140, 90, 5, -1, 0, 6) + new AttackMove(MoveId.LIGHT_OF_RUIN, PokemonType.FAIRY, MoveCategory.SPECIAL, 140, 90, 5, -1, 0, 6) .attr(RecoilAttr, false, 0.5) .recklessMove(), - new AttackMove(Moves.ORIGIN_PULSE, PokemonType.WATER, MoveCategory.SPECIAL, 110, 85, 10, -1, 0, 6) + new AttackMove(MoveId.ORIGIN_PULSE, PokemonType.WATER, MoveCategory.SPECIAL, 110, 85, 10, -1, 0, 6) .pulseMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.PRECIPICE_BLADES, PokemonType.GROUND, MoveCategory.PHYSICAL, 120, 85, 10, -1, 0, 6) + new AttackMove(MoveId.PRECIPICE_BLADES, PokemonType.GROUND, MoveCategory.PHYSICAL, 120, 85, 10, -1, 0, 6) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.DRAGON_ASCENT, PokemonType.FLYING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 6) + new AttackMove(MoveId.DRAGON_ASCENT, PokemonType.FLYING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true), - new AttackMove(Moves.HYPERSPACE_FURY, PokemonType.DARK, MoveCategory.PHYSICAL, 100, -1, 5, -1, 0, 6) + new AttackMove(MoveId.HYPERSPACE_FURY, PokemonType.DARK, MoveCategory.PHYSICAL, 100, -1, 5, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.DEF ], -1, true) .ignoresSubstitute() .makesContact(false) .ignoresProtect(), /* Unused */ - new AttackMove(Moves.BREAKNECK_BLITZ__PHYSICAL, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.BREAKNECK_BLITZ__PHYSICAL, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.BREAKNECK_BLITZ__SPECIAL, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.BREAKNECK_BLITZ__SPECIAL, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.ALL_OUT_PUMMELING__PHYSICAL, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.ALL_OUT_PUMMELING__PHYSICAL, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.ALL_OUT_PUMMELING__SPECIAL, PokemonType.FIGHTING, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.ALL_OUT_PUMMELING__SPECIAL, PokemonType.FIGHTING, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SUPERSONIC_SKYSTRIKE__PHYSICAL, PokemonType.FLYING, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.SUPERSONIC_SKYSTRIKE__PHYSICAL, PokemonType.FLYING, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SUPERSONIC_SKYSTRIKE__SPECIAL, PokemonType.FLYING, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.SUPERSONIC_SKYSTRIKE__SPECIAL, PokemonType.FLYING, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.ACID_DOWNPOUR__PHYSICAL, PokemonType.POISON, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.ACID_DOWNPOUR__PHYSICAL, PokemonType.POISON, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.ACID_DOWNPOUR__SPECIAL, PokemonType.POISON, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.ACID_DOWNPOUR__SPECIAL, PokemonType.POISON, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.TECTONIC_RAGE__PHYSICAL, PokemonType.GROUND, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.TECTONIC_RAGE__PHYSICAL, PokemonType.GROUND, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.TECTONIC_RAGE__SPECIAL, PokemonType.GROUND, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.TECTONIC_RAGE__SPECIAL, PokemonType.GROUND, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.CONTINENTAL_CRUSH__PHYSICAL, PokemonType.ROCK, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.CONTINENTAL_CRUSH__PHYSICAL, PokemonType.ROCK, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.CONTINENTAL_CRUSH__SPECIAL, PokemonType.ROCK, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.CONTINENTAL_CRUSH__SPECIAL, PokemonType.ROCK, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SAVAGE_SPIN_OUT__PHYSICAL, PokemonType.BUG, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.SAVAGE_SPIN_OUT__PHYSICAL, PokemonType.BUG, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SAVAGE_SPIN_OUT__SPECIAL, PokemonType.BUG, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.SAVAGE_SPIN_OUT__SPECIAL, PokemonType.BUG, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.NEVER_ENDING_NIGHTMARE__PHYSICAL, PokemonType.GHOST, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.NEVER_ENDING_NIGHTMARE__PHYSICAL, PokemonType.GHOST, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.NEVER_ENDING_NIGHTMARE__SPECIAL, PokemonType.GHOST, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.NEVER_ENDING_NIGHTMARE__SPECIAL, PokemonType.GHOST, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.CORKSCREW_CRASH__PHYSICAL, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.CORKSCREW_CRASH__PHYSICAL, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.CORKSCREW_CRASH__SPECIAL, PokemonType.STEEL, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.CORKSCREW_CRASH__SPECIAL, PokemonType.STEEL, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.INFERNO_OVERDRIVE__PHYSICAL, PokemonType.FIRE, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.INFERNO_OVERDRIVE__PHYSICAL, PokemonType.FIRE, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.INFERNO_OVERDRIVE__SPECIAL, PokemonType.FIRE, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.INFERNO_OVERDRIVE__SPECIAL, PokemonType.FIRE, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.HYDRO_VORTEX__PHYSICAL, PokemonType.WATER, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.HYDRO_VORTEX__PHYSICAL, PokemonType.WATER, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.HYDRO_VORTEX__SPECIAL, PokemonType.WATER, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.HYDRO_VORTEX__SPECIAL, PokemonType.WATER, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.BLOOM_DOOM__PHYSICAL, PokemonType.GRASS, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.BLOOM_DOOM__PHYSICAL, PokemonType.GRASS, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.BLOOM_DOOM__SPECIAL, PokemonType.GRASS, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.BLOOM_DOOM__SPECIAL, PokemonType.GRASS, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.GIGAVOLT_HAVOC__PHYSICAL, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.GIGAVOLT_HAVOC__PHYSICAL, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.GIGAVOLT_HAVOC__SPECIAL, PokemonType.ELECTRIC, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.GIGAVOLT_HAVOC__SPECIAL, PokemonType.ELECTRIC, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SHATTERED_PSYCHE__PHYSICAL, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.SHATTERED_PSYCHE__PHYSICAL, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SHATTERED_PSYCHE__SPECIAL, PokemonType.PSYCHIC, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.SHATTERED_PSYCHE__SPECIAL, PokemonType.PSYCHIC, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SUBZERO_SLAMMER__PHYSICAL, PokemonType.ICE, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.SUBZERO_SLAMMER__PHYSICAL, PokemonType.ICE, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SUBZERO_SLAMMER__SPECIAL, PokemonType.ICE, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.SUBZERO_SLAMMER__SPECIAL, PokemonType.ICE, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.DEVASTATING_DRAKE__PHYSICAL, PokemonType.DRAGON, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.DEVASTATING_DRAKE__PHYSICAL, PokemonType.DRAGON, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.DEVASTATING_DRAKE__SPECIAL, PokemonType.DRAGON, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.DEVASTATING_DRAKE__SPECIAL, PokemonType.DRAGON, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.BLACK_HOLE_ECLIPSE__PHYSICAL, PokemonType.DARK, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.BLACK_HOLE_ECLIPSE__PHYSICAL, PokemonType.DARK, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.BLACK_HOLE_ECLIPSE__SPECIAL, PokemonType.DARK, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.BLACK_HOLE_ECLIPSE__SPECIAL, PokemonType.DARK, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.TWINKLE_TACKLE__PHYSICAL, PokemonType.FAIRY, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.TWINKLE_TACKLE__PHYSICAL, PokemonType.FAIRY, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.TWINKLE_TACKLE__SPECIAL, PokemonType.FAIRY, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.TWINKLE_TACKLE__SPECIAL, PokemonType.FAIRY, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.CATASTROPIKA, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 210, -1, 1, -1, 0, 7) + new AttackMove(MoveId.CATASTROPIKA, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 210, -1, 1, -1, 0, 7) .unimplemented(), /* End Unused */ - new SelfStatusMove(Moves.SHORE_UP, PokemonType.GROUND, -1, 5, -1, 0, 7) + new SelfStatusMove(MoveId.SHORE_UP, PokemonType.GROUND, -1, 5, -1, 0, 7) .attr(SandHealAttr) .triageMove(), - new AttackMove(Moves.FIRST_IMPRESSION, PokemonType.BUG, MoveCategory.PHYSICAL, 90, 100, 10, -1, 2, 7) + new AttackMove(MoveId.FIRST_IMPRESSION, PokemonType.BUG, MoveCategory.PHYSICAL, 90, 100, 10, -1, 2, 7) .condition(new FirstMoveCondition()), - new SelfStatusMove(Moves.BANEFUL_BUNKER, PokemonType.POISON, -1, 10, -1, 4, 7) + new SelfStatusMove(MoveId.BANEFUL_BUNKER, PokemonType.POISON, -1, 10, -1, 4, 7) .attr(ProtectAttr, BattlerTagType.BANEFUL_BUNKER) .condition(failIfLastCondition), - new AttackMove(Moves.SPIRIT_SHACKLE, PokemonType.GHOST, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 7) + new AttackMove(MoveId.SPIRIT_SHACKLE, PokemonType.GHOST, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 7) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, false, 1, 1, true) .makesContact(false), - new AttackMove(Moves.DARKEST_LARIAT, PokemonType.DARK, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 7) + new AttackMove(MoveId.DARKEST_LARIAT, PokemonType.DARK, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 7) .attr(IgnoreOpponentStatStagesAttr), - new AttackMove(Moves.SPARKLING_ARIA, PokemonType.WATER, MoveCategory.SPECIAL, 90, 100, 10, 100, 0, 7) + new AttackMove(MoveId.SPARKLING_ARIA, PokemonType.WATER, MoveCategory.SPECIAL, 90, 100, 10, 100, 0, 7) .attr(HealStatusEffectAttr, false, StatusEffect.BURN) .soundBased() .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.ICE_HAMMER, PokemonType.ICE, MoveCategory.PHYSICAL, 100, 90, 10, -1, 0, 7) + new AttackMove(MoveId.ICE_HAMMER, PokemonType.ICE, MoveCategory.PHYSICAL, 100, 90, 10, -1, 0, 7) .attr(StatStageChangeAttr, [ Stat.SPD ], -1, true) .punchingMove(), - new StatusMove(Moves.FLORAL_HEALING, PokemonType.FAIRY, -1, 10, -1, 0, 7) + new StatusMove(MoveId.FLORAL_HEALING, PokemonType.FAIRY, -1, 10, -1, 0, 7) .attr(BoostHealAttr, 0.5, 2 / 3, true, false, (user, target, move) => globalScene.arena.terrain?.terrainType === TerrainType.GRASSY) .triageMove() .reflectable(), - new AttackMove(Moves.HIGH_HORSEPOWER, PokemonType.GROUND, MoveCategory.PHYSICAL, 95, 95, 10, -1, 0, 7), - new StatusMove(Moves.STRENGTH_SAP, PokemonType.GRASS, 100, 10, -1, 0, 7) + new AttackMove(MoveId.HIGH_HORSEPOWER, PokemonType.GROUND, MoveCategory.PHYSICAL, 95, 95, 10, -1, 0, 7), + new StatusMove(MoveId.STRENGTH_SAP, PokemonType.GRASS, 100, 10, -1, 0, 7) .attr(HitHealAttr, null, Stat.ATK) .attr(StatStageChangeAttr, [ Stat.ATK ], -1) .condition((user, target, move) => target.getStatStage(Stat.ATK) > -6) .triageMove() .reflectable(), - new ChargingAttackMove(Moves.SOLAR_BLADE, PokemonType.GRASS, MoveCategory.PHYSICAL, 125, 100, 10, -1, 0, 7) + new ChargingAttackMove(MoveId.SOLAR_BLADE, PokemonType.GRASS, MoveCategory.PHYSICAL, 125, 100, 10, -1, 0, 7) .chargeText(i18next.t("moveTriggers:isGlowing", { pokemonName: "{USER}" })) .chargeAttr(WeatherInstantChargeAttr, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]) .attr(AntiSunlightPowerDecreaseAttr) .slicingMove(), - new AttackMove(Moves.LEAFAGE, PokemonType.GRASS, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 7) + new AttackMove(MoveId.LEAFAGE, PokemonType.GRASS, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 7) .makesContact(false), - new StatusMove(Moves.SPOTLIGHT, PokemonType.NORMAL, -1, 15, -1, 3, 7) + new StatusMove(MoveId.SPOTLIGHT, PokemonType.NORMAL, -1, 15, -1, 3, 7) .attr(AddBattlerTagAttr, BattlerTagType.CENTER_OF_ATTENTION, false) .condition(failIfSingleBattle) .reflectable(), - new StatusMove(Moves.TOXIC_THREAD, PokemonType.POISON, 100, 20, -1, 0, 7) + new StatusMove(MoveId.TOXIC_THREAD, PokemonType.POISON, 100, 20, -1, 0, 7) .attr(StatusEffectAttr, StatusEffect.POISON) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .reflectable(), - new SelfStatusMove(Moves.LASER_FOCUS, PokemonType.NORMAL, -1, 30, -1, 0, 7) + new SelfStatusMove(MoveId.LASER_FOCUS, PokemonType.NORMAL, -1, 30, -1, 0, 7) .attr(AddBattlerTagAttr, BattlerTagType.ALWAYS_CRIT, true, false), - new StatusMove(Moves.GEAR_UP, PokemonType.STEEL, -1, 20, -1, 0, 7) - .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], 1, false, { condition: (user, target, move) => !![ Abilities.PLUS, Abilities.MINUS ].find(a => target.hasAbility(a, false)) }) + new StatusMove(MoveId.GEAR_UP, PokemonType.STEEL, -1, 20, -1, 0, 7) + .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], 1, false, { condition: (user, target, move) => !![ AbilityId.PLUS, AbilityId.MINUS ].find(a => target.hasAbility(a, false)) }) .ignoresSubstitute() .target(MoveTarget.USER_AND_ALLIES) - .condition((user, target, move) => !![ user, user.getAlly() ].filter(p => p?.isActive()).find(p => !![ Abilities.PLUS, Abilities.MINUS ].find(a => p?.hasAbility(a, false)))), - new AttackMove(Moves.THROAT_CHOP, PokemonType.DARK, MoveCategory.PHYSICAL, 80, 100, 15, 100, 0, 7) + .condition((user, target, move) => !![ user, user.getAlly() ].filter(p => p?.isActive()).find(p => !![ AbilityId.PLUS, AbilityId.MINUS ].find(a => p?.hasAbility(a, false)))), + new AttackMove(MoveId.THROAT_CHOP, PokemonType.DARK, MoveCategory.PHYSICAL, 80, 100, 15, 100, 0, 7) .attr(AddBattlerTagAttr, BattlerTagType.THROAT_CHOPPED), - new AttackMove(Moves.POLLEN_PUFF, PokemonType.BUG, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7) + new AttackMove(MoveId.POLLEN_PUFF, PokemonType.BUG, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7) .attr(StatusCategoryOnAllyAttr) .attr(HealOnAllyAttr, 0.5, true, false) .ballBombMove(), - new AttackMove(Moves.ANCHOR_SHOT, PokemonType.STEEL, MoveCategory.PHYSICAL, 80, 100, 20, 100, 0, 7) + new AttackMove(MoveId.ANCHOR_SHOT, PokemonType.STEEL, MoveCategory.PHYSICAL, 80, 100, 20, 100, 0, 7) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, false, 1, 1, true), - new StatusMove(Moves.PSYCHIC_TERRAIN, PokemonType.PSYCHIC, -1, 10, -1, 0, 7) + new StatusMove(MoveId.PSYCHIC_TERRAIN, PokemonType.PSYCHIC, -1, 10, -1, 0, 7) .attr(TerrainChangeAttr, TerrainType.PSYCHIC) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.LUNGE, PokemonType.BUG, MoveCategory.PHYSICAL, 80, 100, 15, 100, 0, 7) + new AttackMove(MoveId.LUNGE, PokemonType.BUG, MoveCategory.PHYSICAL, 80, 100, 15, 100, 0, 7) .attr(StatStageChangeAttr, [ Stat.ATK ], -1), - new AttackMove(Moves.FIRE_LASH, PokemonType.FIRE, MoveCategory.PHYSICAL, 80, 100, 15, 100, 0, 7) + new AttackMove(MoveId.FIRE_LASH, PokemonType.FIRE, MoveCategory.PHYSICAL, 80, 100, 15, 100, 0, 7) .attr(StatStageChangeAttr, [ Stat.DEF ], -1), - new AttackMove(Moves.POWER_TRIP, PokemonType.DARK, MoveCategory.PHYSICAL, 20, 100, 10, -1, 0, 7) + new AttackMove(MoveId.POWER_TRIP, PokemonType.DARK, MoveCategory.PHYSICAL, 20, 100, 10, -1, 0, 7) .attr(PositiveStatStagePowerAttr), - new AttackMove(Moves.BURN_UP, PokemonType.FIRE, MoveCategory.SPECIAL, 130, 100, 5, -1, 0, 7) + new AttackMove(MoveId.BURN_UP, PokemonType.FIRE, MoveCategory.SPECIAL, 130, 100, 5, -1, 0, 7) .condition((user) => { const userTypes = user.getTypes(true); return userTypes.includes(PokemonType.FIRE); @@ -10385,11 +10385,11 @@ export function initMoves() { .attr(RemoveTypeAttr, PokemonType.FIRE, (user) => { globalScene.queueMessage(i18next.t("moveTriggers:burnedItselfOut", { pokemonName: getPokemonNameWithAffix(user) })); }), - new StatusMove(Moves.SPEED_SWAP, PokemonType.PSYCHIC, -1, 10, -1, 0, 7) + new StatusMove(MoveId.SPEED_SWAP, PokemonType.PSYCHIC, -1, 10, -1, 0, 7) .attr(SwapStatAttr, Stat.SPD) .ignoresSubstitute(), - new AttackMove(Moves.SMART_STRIKE, PokemonType.STEEL, MoveCategory.PHYSICAL, 70, -1, 10, -1, 0, 7), - new StatusMove(Moves.PURIFY, PokemonType.POISON, -1, 20, -1, 0, 7) + new AttackMove(MoveId.SMART_STRIKE, PokemonType.STEEL, MoveCategory.PHYSICAL, 70, -1, 10, -1, 0, 7), + new StatusMove(MoveId.PURIFY, PokemonType.POISON, -1, 20, -1, 0, 7) .condition((user, target, move) => { if (!target.status) { return false; @@ -10400,182 +10400,182 @@ export function initMoves() { .attr(HealStatusEffectAttr, false, getNonVolatileStatusEffects()) .triageMove() .reflectable(), - new AttackMove(Moves.REVELATION_DANCE, PokemonType.NORMAL, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7) + new AttackMove(MoveId.REVELATION_DANCE, PokemonType.NORMAL, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7) .danceMove() .attr(MatchUserTypeAttr), - new AttackMove(Moves.CORE_ENFORCER, PokemonType.DRAGON, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 7) + new AttackMove(MoveId.CORE_ENFORCER, PokemonType.DRAGON, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 7) .target(MoveTarget.ALL_NEAR_ENEMIES) .attr(SuppressAbilitiesIfActedAttr), - new AttackMove(Moves.TROP_KICK, PokemonType.GRASS, MoveCategory.PHYSICAL, 70, 100, 15, 100, 0, 7) + new AttackMove(MoveId.TROP_KICK, PokemonType.GRASS, MoveCategory.PHYSICAL, 70, 100, 15, 100, 0, 7) .attr(StatStageChangeAttr, [ Stat.ATK ], -1), - new StatusMove(Moves.INSTRUCT, PokemonType.PSYCHIC, -1, 15, -1, 0, 7) + new StatusMove(MoveId.INSTRUCT, PokemonType.PSYCHIC, -1, 15, -1, 0, 7) .ignoresSubstitute() .attr(RepeatMoveAttr) // incorrect interactions with Gigaton Hammer, Blood Moon & Torment // Also has incorrect interactions with Dancer due to the latter // erroneously adding copied moves to move history. .edgeCase(), - new AttackMove(Moves.BEAK_BLAST, PokemonType.FLYING, MoveCategory.PHYSICAL, 100, 100, 15, -1, -3, 7) + new AttackMove(MoveId.BEAK_BLAST, PokemonType.FLYING, MoveCategory.PHYSICAL, 100, 100, 15, -1, -3, 7) .attr(BeakBlastHeaderAttr) .ballBombMove() .makesContact(false), - new AttackMove(Moves.CLANGING_SCALES, PokemonType.DRAGON, MoveCategory.SPECIAL, 110, 100, 5, -1, 0, 7) + new AttackMove(MoveId.CLANGING_SCALES, PokemonType.DRAGON, MoveCategory.SPECIAL, 110, 100, 5, -1, 0, 7) .attr(StatStageChangeAttr, [ Stat.DEF ], -1, true, { firstTargetOnly: true }) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.DRAGON_HAMMER, PokemonType.DRAGON, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 7), - new AttackMove(Moves.BRUTAL_SWING, PokemonType.DARK, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 7) + new AttackMove(MoveId.DRAGON_HAMMER, PokemonType.DRAGON, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 7), + new AttackMove(MoveId.BRUTAL_SWING, PokemonType.DARK, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 7) .target(MoveTarget.ALL_NEAR_OTHERS), - new StatusMove(Moves.AURORA_VEIL, PokemonType.ICE, -1, 20, -1, 0, 7) + new StatusMove(MoveId.AURORA_VEIL, PokemonType.ICE, -1, 20, -1, 0, 7) .condition((user, target, move) => (globalScene.arena.weather?.weatherType === WeatherType.HAIL || globalScene.arena.weather?.weatherType === WeatherType.SNOW) && !globalScene.arena.weather?.isEffectSuppressed()) .attr(AddArenaTagAttr, ArenaTagType.AURORA_VEIL, 5, true) .target(MoveTarget.USER_SIDE), /* Unused */ - new AttackMove(Moves.SINISTER_ARROW_RAID, PokemonType.GHOST, MoveCategory.PHYSICAL, 180, -1, 1, -1, 0, 7) + new AttackMove(MoveId.SINISTER_ARROW_RAID, PokemonType.GHOST, MoveCategory.PHYSICAL, 180, -1, 1, -1, 0, 7) .unimplemented() .makesContact(false) .edgeCase(), // I assume it's because the user needs spirit shackle and decidueye - new AttackMove(Moves.MALICIOUS_MOONSAULT, PokemonType.DARK, MoveCategory.PHYSICAL, 180, -1, 1, -1, 0, 7) + new AttackMove(MoveId.MALICIOUS_MOONSAULT, PokemonType.DARK, MoveCategory.PHYSICAL, 180, -1, 1, -1, 0, 7) .unimplemented() .attr(AlwaysHitMinimizeAttr) .attr(HitsTagAttr, BattlerTagType.MINIMIZED, true) .edgeCase(), // I assume it's because it needs darkest lariat and incineroar - new AttackMove(Moves.OCEANIC_OPERETTA, PokemonType.WATER, MoveCategory.SPECIAL, 195, -1, 1, -1, 0, 7) + new AttackMove(MoveId.OCEANIC_OPERETTA, PokemonType.WATER, MoveCategory.SPECIAL, 195, -1, 1, -1, 0, 7) .unimplemented() .edgeCase(), // I assume it's because it needs sparkling aria and primarina - new AttackMove(Moves.GUARDIAN_OF_ALOLA, PokemonType.FAIRY, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(MoveId.GUARDIAN_OF_ALOLA, PokemonType.FAIRY, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SOUL_STEALING_7_STAR_STRIKE, PokemonType.GHOST, MoveCategory.PHYSICAL, 195, -1, 1, -1, 0, 7) + new AttackMove(MoveId.SOUL_STEALING_7_STAR_STRIKE, PokemonType.GHOST, MoveCategory.PHYSICAL, 195, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.STOKED_SPARKSURFER, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 175, -1, 1, 100, 0, 7) + new AttackMove(MoveId.STOKED_SPARKSURFER, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 175, -1, 1, 100, 0, 7) .unimplemented() .edgeCase(), // I assume it's because it needs thunderbolt and Alola Raichu - new AttackMove(Moves.PULVERIZING_PANCAKE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 210, -1, 1, -1, 0, 7) + new AttackMove(MoveId.PULVERIZING_PANCAKE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 210, -1, 1, -1, 0, 7) .unimplemented() .edgeCase(), // I assume it's because it needs giga impact and snorlax - new SelfStatusMove(Moves.EXTREME_EVOBOOST, PokemonType.NORMAL, -1, 1, -1, 0, 7) + new SelfStatusMove(MoveId.EXTREME_EVOBOOST, PokemonType.NORMAL, -1, 1, -1, 0, 7) .unimplemented() .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2, true), - new AttackMove(Moves.GENESIS_SUPERNOVA, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 185, -1, 1, 100, 0, 7) + new AttackMove(MoveId.GENESIS_SUPERNOVA, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 185, -1, 1, 100, 0, 7) .unimplemented() .attr(TerrainChangeAttr, TerrainType.PSYCHIC), /* End Unused */ - new AttackMove(Moves.SHELL_TRAP, PokemonType.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, -3, 7) + new AttackMove(MoveId.SHELL_TRAP, PokemonType.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, -3, 7) .attr(AddBattlerTagHeaderAttr, BattlerTagType.SHELL_TRAP) .target(MoveTarget.ALL_NEAR_ENEMIES) // Fails if the user was not hit by a physical attack during the turn .condition((user, target, move) => user.getTag(ShellTrapTag)?.activated === true), - new AttackMove(Moves.FLEUR_CANNON, PokemonType.FAIRY, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 7) + new AttackMove(MoveId.FLEUR_CANNON, PokemonType.FAIRY, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 7) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2, true), - new AttackMove(Moves.PSYCHIC_FANGS, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 7) + new AttackMove(MoveId.PSYCHIC_FANGS, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 7) .bitingMove() .attr(RemoveScreensAttr), - new AttackMove(Moves.STOMPING_TANTRUM, PokemonType.GROUND, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 7) + new AttackMove(MoveId.STOMPING_TANTRUM, PokemonType.GROUND, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 7) .attr(MovePowerMultiplierAttr, (user, target, move) => user.getLastXMoves(2)[1]?.result === MoveResult.MISS || user.getLastXMoves(2)[1]?.result === MoveResult.FAIL ? 2 : 1), - new AttackMove(Moves.SHADOW_BONE, PokemonType.GHOST, MoveCategory.PHYSICAL, 85, 100, 10, 20, 0, 7) + new AttackMove(MoveId.SHADOW_BONE, PokemonType.GHOST, MoveCategory.PHYSICAL, 85, 100, 10, 20, 0, 7) .attr(StatStageChangeAttr, [ Stat.DEF ], -1) .makesContact(false), - new AttackMove(Moves.ACCELEROCK, PokemonType.ROCK, MoveCategory.PHYSICAL, 40, 100, 20, -1, 1, 7), - new AttackMove(Moves.LIQUIDATION, PokemonType.WATER, MoveCategory.PHYSICAL, 85, 100, 10, 20, 0, 7) + new AttackMove(MoveId.ACCELEROCK, PokemonType.ROCK, MoveCategory.PHYSICAL, 40, 100, 20, -1, 1, 7), + new AttackMove(MoveId.LIQUIDATION, PokemonType.WATER, MoveCategory.PHYSICAL, 85, 100, 10, 20, 0, 7) .attr(StatStageChangeAttr, [ Stat.DEF ], -1), - new AttackMove(Moves.PRISMATIC_LASER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 160, 100, 10, -1, 0, 7) + new AttackMove(MoveId.PRISMATIC_LASER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 160, 100, 10, -1, 0, 7) .attr(RechargeAttr), - new AttackMove(Moves.SPECTRAL_THIEF, PokemonType.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 7) + new AttackMove(MoveId.SPECTRAL_THIEF, PokemonType.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 7) .attr(SpectralThiefAttr) .ignoresSubstitute(), - new AttackMove(Moves.SUNSTEEL_STRIKE, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 7) + new AttackMove(MoveId.SUNSTEEL_STRIKE, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 7) .ignoresAbilities(), - new AttackMove(Moves.MOONGEIST_BEAM, PokemonType.GHOST, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 7) + new AttackMove(MoveId.MOONGEIST_BEAM, PokemonType.GHOST, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 7) .ignoresAbilities(), - new StatusMove(Moves.TEARFUL_LOOK, PokemonType.NORMAL, -1, 20, -1, 0, 7) + new StatusMove(MoveId.TEARFUL_LOOK, PokemonType.NORMAL, -1, 20, -1, 0, 7) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1) .reflectable(), - new AttackMove(Moves.ZING_ZAP, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 7) + new AttackMove(MoveId.ZING_ZAP, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 7) .attr(FlinchAttr), - new AttackMove(Moves.NATURES_MADNESS, PokemonType.FAIRY, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 7) + new AttackMove(MoveId.NATURES_MADNESS, PokemonType.FAIRY, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 7) .attr(TargetHalfHpDamageAttr), - new AttackMove(Moves.MULTI_ATTACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 7) + new AttackMove(MoveId.MULTI_ATTACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 7) .attr(FormChangeItemTypeAttr), /* Unused */ - new AttackMove(Moves.TEN_MILLION_VOLT_THUNDERBOLT, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 195, -1, 1, -1, 0, 7) + new AttackMove(MoveId.TEN_MILLION_VOLT_THUNDERBOLT, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 195, -1, 1, -1, 0, 7) .unimplemented() .edgeCase(), // I assume it's because it needs thunderbolt and pikachu in a cap /* End Unused */ - new AttackMove(Moves.MIND_BLOWN, PokemonType.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 7) + new AttackMove(MoveId.MIND_BLOWN, PokemonType.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 7) .condition(failIfDampCondition) .attr(HalfSacrificialAttr) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.PLASMA_FISTS, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 100, 100, 15, -1, 0, 7) + new AttackMove(MoveId.PLASMA_FISTS, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 100, 100, 15, -1, 0, 7) .attr(AddArenaTagAttr, ArenaTagType.ION_DELUGE, 1) .punchingMove(), - new AttackMove(Moves.PHOTON_GEYSER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 7) + new AttackMove(MoveId.PHOTON_GEYSER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 7) .attr(PhotonGeyserCategoryAttr) .ignoresAbilities(), /* Unused */ - new AttackMove(Moves.LIGHT_THAT_BURNS_THE_SKY, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 200, -1, 1, -1, 0, 7) + new AttackMove(MoveId.LIGHT_THAT_BURNS_THE_SKY, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 200, -1, 1, -1, 0, 7) .unimplemented() .attr(PhotonGeyserCategoryAttr) .ignoresAbilities(), - new AttackMove(Moves.SEARING_SUNRAZE_SMASH, PokemonType.STEEL, MoveCategory.PHYSICAL, 200, -1, 1, -1, 0, 7) + new AttackMove(MoveId.SEARING_SUNRAZE_SMASH, PokemonType.STEEL, MoveCategory.PHYSICAL, 200, -1, 1, -1, 0, 7) .unimplemented() .ignoresAbilities(), - new AttackMove(Moves.MENACING_MOONRAZE_MAELSTROM, PokemonType.GHOST, MoveCategory.SPECIAL, 200, -1, 1, -1, 0, 7) + new AttackMove(MoveId.MENACING_MOONRAZE_MAELSTROM, PokemonType.GHOST, MoveCategory.SPECIAL, 200, -1, 1, -1, 0, 7) .unimplemented() .ignoresAbilities(), - new AttackMove(Moves.LETS_SNUGGLE_FOREVER, PokemonType.FAIRY, MoveCategory.PHYSICAL, 190, -1, 1, -1, 0, 7) + new AttackMove(MoveId.LETS_SNUGGLE_FOREVER, PokemonType.FAIRY, MoveCategory.PHYSICAL, 190, -1, 1, -1, 0, 7) .unimplemented() .edgeCase(), // I assume it needs play rough and mimikyu - new AttackMove(Moves.SPLINTERED_STORMSHARDS, PokemonType.ROCK, MoveCategory.PHYSICAL, 190, -1, 1, -1, 0, 7) + new AttackMove(MoveId.SPLINTERED_STORMSHARDS, PokemonType.ROCK, MoveCategory.PHYSICAL, 190, -1, 1, -1, 0, 7) .unimplemented() .attr(ClearTerrainAttr) .makesContact(false), - new AttackMove(Moves.CLANGOROUS_SOULBLAZE, PokemonType.DRAGON, MoveCategory.SPECIAL, 185, -1, 1, 100, 0, 7) + new AttackMove(MoveId.CLANGOROUS_SOULBLAZE, PokemonType.DRAGON, MoveCategory.SPECIAL, 185, -1, 1, 100, 0, 7) .unimplemented() .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, true, { firstTargetOnly: true }) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES) .edgeCase(), // I assume it needs clanging scales and Kommo-O /* End Unused */ - new AttackMove(Moves.ZIPPY_ZAP, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 50, 100, 15, -1, 2, 7) // LGPE Implementation + new AttackMove(MoveId.ZIPPY_ZAP, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 50, 100, 15, -1, 2, 7) // LGPE Implementation .attr(CritOnlyAttr), - new AttackMove(Moves.SPLISHY_SPLASH, PokemonType.WATER, MoveCategory.SPECIAL, 90, 100, 15, 30, 0, 7) + new AttackMove(MoveId.SPLISHY_SPLASH, PokemonType.WATER, MoveCategory.SPECIAL, 90, 100, 15, 30, 0, 7) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.FLOATY_FALL, PokemonType.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, 30, 0, 7) + new AttackMove(MoveId.FLOATY_FALL, PokemonType.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, 30, 0, 7) .attr(FlinchAttr), - new AttackMove(Moves.PIKA_PAPOW, PokemonType.ELECTRIC, MoveCategory.SPECIAL, -1, -1, 20, -1, 0, 7) + new AttackMove(MoveId.PIKA_PAPOW, PokemonType.ELECTRIC, MoveCategory.SPECIAL, -1, -1, 20, -1, 0, 7) .attr(FriendshipPowerAttr), - new AttackMove(Moves.BOUNCY_BUBBLE, PokemonType.WATER, MoveCategory.SPECIAL, 60, 100, 20, -1, 0, 7) + new AttackMove(MoveId.BOUNCY_BUBBLE, PokemonType.WATER, MoveCategory.SPECIAL, 60, 100, 20, -1, 0, 7) .attr(HitHealAttr, 1) .triageMove(), - new AttackMove(Moves.BUZZY_BUZZ, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 60, 100, 20, 100, 0, 7) + new AttackMove(MoveId.BUZZY_BUZZ, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 60, 100, 20, 100, 0, 7) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.SIZZLY_SLIDE, PokemonType.FIRE, MoveCategory.PHYSICAL, 60, 100, 20, 100, 0, 7) + new AttackMove(MoveId.SIZZLY_SLIDE, PokemonType.FIRE, MoveCategory.PHYSICAL, 60, 100, 20, 100, 0, 7) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.GLITZY_GLOW, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 95, 15, -1, 0, 7) + new AttackMove(MoveId.GLITZY_GLOW, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 95, 15, -1, 0, 7) .attr(AddArenaTagAttr, ArenaTagType.LIGHT_SCREEN, 5, false, true), - new AttackMove(Moves.BADDY_BAD, PokemonType.DARK, MoveCategory.SPECIAL, 80, 95, 15, -1, 0, 7) + new AttackMove(MoveId.BADDY_BAD, PokemonType.DARK, MoveCategory.SPECIAL, 80, 95, 15, -1, 0, 7) .attr(AddArenaTagAttr, ArenaTagType.REFLECT, 5, false, true), - new AttackMove(Moves.SAPPY_SEED, PokemonType.GRASS, MoveCategory.PHYSICAL, 100, 90, 10, -1, 0, 7) + new AttackMove(MoveId.SAPPY_SEED, PokemonType.GRASS, MoveCategory.PHYSICAL, 100, 90, 10, -1, 0, 7) .attr(LeechSeedAttr) .makesContact(false), - new AttackMove(Moves.FREEZY_FROST, PokemonType.ICE, MoveCategory.SPECIAL, 100, 90, 10, -1, 0, 7) + new AttackMove(MoveId.FREEZY_FROST, PokemonType.ICE, MoveCategory.SPECIAL, 100, 90, 10, -1, 0, 7) .attr(ResetStatsAttr, true), - new AttackMove(Moves.SPARKLY_SWIRL, PokemonType.FAIRY, MoveCategory.SPECIAL, 120, 85, 5, -1, 0, 7) - .attr(PartyStatusCureAttr, null, Abilities.NONE), - new AttackMove(Moves.VEEVEE_VOLLEY, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, -1, 20, -1, 0, 7) + new AttackMove(MoveId.SPARKLY_SWIRL, PokemonType.FAIRY, MoveCategory.SPECIAL, 120, 85, 5, -1, 0, 7) + .attr(PartyStatusCureAttr, null, AbilityId.NONE), + new AttackMove(MoveId.VEEVEE_VOLLEY, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, -1, 20, -1, 0, 7) .attr(FriendshipPowerAttr), - new AttackMove(Moves.DOUBLE_IRON_BASH, PokemonType.STEEL, MoveCategory.PHYSICAL, 60, 100, 5, 30, 0, 7) + new AttackMove(MoveId.DOUBLE_IRON_BASH, PokemonType.STEEL, MoveCategory.PHYSICAL, 60, 100, 5, 30, 0, 7) .attr(MultiHitAttr, MultiHitType._2) .attr(FlinchAttr) .punchingMove(), /* Unused */ - new SelfStatusMove(Moves.MAX_GUARD, PokemonType.NORMAL, -1, 10, -1, 4, 8) + new SelfStatusMove(MoveId.MAX_GUARD, PokemonType.NORMAL, -1, 10, -1, 4, 8) .unimplemented() .attr(ProtectAttr) .condition(failIfLastCondition), /* End Unused */ - new AttackMove(Moves.DYNAMAX_CANNON, PokemonType.DRAGON, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 8) + new AttackMove(MoveId.DYNAMAX_CANNON, PokemonType.DRAGON, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 8) .attr(MovePowerMultiplierAttr, (user, target, move) => { // Move is only stronger against overleveled foes. if (target.level > globalScene.getMaxExpLevel()) { @@ -10587,13 +10587,13 @@ export function initMoves() { } }), - new AttackMove(Moves.SNIPE_SHOT, PokemonType.WATER, MoveCategory.SPECIAL, 80, 100, 15, -1, 0, 8) + new AttackMove(MoveId.SNIPE_SHOT, PokemonType.WATER, MoveCategory.SPECIAL, 80, 100, 15, -1, 0, 8) .attr(HighCritAttr) .attr(BypassRedirectAttr), - new AttackMove(Moves.JAW_LOCK, PokemonType.DARK, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 8) + new AttackMove(MoveId.JAW_LOCK, PokemonType.DARK, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 8) .attr(JawLockAttr) .bitingMove(), - new SelfStatusMove(Moves.STUFF_CHEEKS, PokemonType.NORMAL, -1, 10, -1, 0, 8) + new SelfStatusMove(MoveId.STUFF_CHEEKS, PokemonType.NORMAL, -1, 10, -1, 0, 8) .attr(EatBerryAttr, true) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true) .condition((user) => { @@ -10601,475 +10601,475 @@ export function initMoves() { return userBerries.length > 0; }) .edgeCase(), // Stuff Cheeks should not be selectable when the user does not have a berry, see wiki - new SelfStatusMove(Moves.NO_RETREAT, PokemonType.FIGHTING, -1, 5, -1, 0, 8) + new SelfStatusMove(MoveId.NO_RETREAT, PokemonType.FIGHTING, -1, 5, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, true) .attr(AddBattlerTagAttr, BattlerTagType.NO_RETREAT, true, false) - .condition((user, target, move) => user.getTag(TrappedTag)?.sourceMove !== Moves.NO_RETREAT), // fails if the user is currently trapped by No Retreat - new StatusMove(Moves.TAR_SHOT, PokemonType.ROCK, 100, 15, -1, 0, 8) + .condition((user, target, move) => user.getTag(TrappedTag)?.sourceMove !== MoveId.NO_RETREAT), // fails if the user is currently trapped by No Retreat + new StatusMove(MoveId.TAR_SHOT, PokemonType.ROCK, 100, 15, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .attr(AddBattlerTagAttr, BattlerTagType.TAR_SHOT, false) .reflectable(), - new StatusMove(Moves.MAGIC_POWDER, PokemonType.PSYCHIC, 100, 20, -1, 0, 8) + new StatusMove(MoveId.MAGIC_POWDER, PokemonType.PSYCHIC, 100, 20, -1, 0, 8) .attr(ChangeTypeAttr, PokemonType.PSYCHIC) .powderMove() .reflectable(), - new AttackMove(Moves.DRAGON_DARTS, PokemonType.DRAGON, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 8) + new AttackMove(MoveId.DRAGON_DARTS, PokemonType.DRAGON, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 8) .attr(MultiHitAttr, MultiHitType._2) .makesContact(false) .partial(), // smart targetting is unimplemented - new StatusMove(Moves.TEATIME, PokemonType.NORMAL, -1, 10, -1, 0, 8) + new StatusMove(MoveId.TEATIME, PokemonType.NORMAL, -1, 10, -1, 0, 8) .attr(EatBerryAttr, false) .target(MoveTarget.ALL), - new StatusMove(Moves.OCTOLOCK, PokemonType.FIGHTING, 100, 15, -1, 0, 8) + new StatusMove(MoveId.OCTOLOCK, PokemonType.FIGHTING, 100, 15, -1, 0, 8) .condition(failIfGhostTypeCondition) .attr(AddBattlerTagAttr, BattlerTagType.OCTOLOCK, false, true, 1), - new AttackMove(Moves.BOLT_BEAK, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 8) + new AttackMove(MoveId.BOLT_BEAK, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 8) .attr(FirstAttackDoublePowerAttr), - new AttackMove(Moves.FISHIOUS_REND, PokemonType.WATER, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 8) + new AttackMove(MoveId.FISHIOUS_REND, PokemonType.WATER, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 8) .attr(FirstAttackDoublePowerAttr) .bitingMove(), - new StatusMove(Moves.COURT_CHANGE, PokemonType.NORMAL, 100, 10, -1, 0, 8) + new StatusMove(MoveId.COURT_CHANGE, PokemonType.NORMAL, 100, 10, -1, 0, 8) .attr(SwapArenaTagsAttr, [ ArenaTagType.AURORA_VEIL, ArenaTagType.LIGHT_SCREEN, ArenaTagType.MIST, ArenaTagType.REFLECT, ArenaTagType.SPIKES, ArenaTagType.STEALTH_ROCK, ArenaTagType.STICKY_WEB, ArenaTagType.TAILWIND, ArenaTagType.TOXIC_SPIKES ]), /* Unused */ - new AttackMove(Moves.MAX_FLARE, PokemonType.FIRE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_FLARE, PokemonType.FIRE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_FLUTTERBY, PokemonType.BUG, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_FLUTTERBY, PokemonType.BUG, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_LIGHTNING, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_LIGHTNING, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_STRIKE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_STRIKE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_KNUCKLE, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_KNUCKLE, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_PHANTASM, PokemonType.GHOST, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_PHANTASM, PokemonType.GHOST, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_HAILSTORM, PokemonType.ICE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_HAILSTORM, PokemonType.ICE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_OOZE, PokemonType.POISON, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_OOZE, PokemonType.POISON, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_GEYSER, PokemonType.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_GEYSER, PokemonType.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_AIRSTREAM, PokemonType.FLYING, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_AIRSTREAM, PokemonType.FLYING, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_STARFALL, PokemonType.FAIRY, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_STARFALL, PokemonType.FAIRY, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_WYRMWIND, PokemonType.DRAGON, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_WYRMWIND, PokemonType.DRAGON, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_MINDSTORM, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_MINDSTORM, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_ROCKFALL, PokemonType.ROCK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_ROCKFALL, PokemonType.ROCK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_QUAKE, PokemonType.GROUND, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_QUAKE, PokemonType.GROUND, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_DARKNESS, PokemonType.DARK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_DARKNESS, PokemonType.DARK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_OVERGROWTH, PokemonType.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_OVERGROWTH, PokemonType.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_STEELSPIKE, PokemonType.STEEL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.MAX_STEELSPIKE, PokemonType.STEEL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), /* End Unused */ - new SelfStatusMove(Moves.CLANGOROUS_SOUL, PokemonType.DRAGON, 100, 5, -1, 0, 8) + new SelfStatusMove(MoveId.CLANGOROUS_SOUL, PokemonType.DRAGON, 100, 5, -1, 0, 8) .attr(CutHpStatStageBoostAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, 3) .soundBased() .danceMove(), - new AttackMove(Moves.BODY_PRESS, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 8) + new AttackMove(MoveId.BODY_PRESS, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 8) .attr(DefAtkAttr), - new StatusMove(Moves.DECORATE, PokemonType.FAIRY, -1, 15, -1, 0, 8) + new StatusMove(MoveId.DECORATE, PokemonType.FAIRY, -1, 15, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], 2) .ignoresProtect(), - new AttackMove(Moves.DRUM_BEATING, PokemonType.GRASS, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 8) + new AttackMove(MoveId.DRUM_BEATING, PokemonType.GRASS, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .makesContact(false), - new AttackMove(Moves.SNAP_TRAP, PokemonType.GRASS, MoveCategory.PHYSICAL, 35, 100, 15, -1, 0, 8) + new AttackMove(MoveId.SNAP_TRAP, PokemonType.GRASS, MoveCategory.PHYSICAL, 35, 100, 15, -1, 0, 8) .attr(TrapAttr, BattlerTagType.SNAP_TRAP), - new AttackMove(Moves.PYRO_BALL, PokemonType.FIRE, MoveCategory.PHYSICAL, 120, 90, 5, 10, 0, 8) + new AttackMove(MoveId.PYRO_BALL, PokemonType.FIRE, MoveCategory.PHYSICAL, 120, 90, 5, 10, 0, 8) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN) .ballBombMove() .makesContact(false), - new AttackMove(Moves.BEHEMOTH_BLADE, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 8) + new AttackMove(MoveId.BEHEMOTH_BLADE, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 8) .slicingMove(), - new AttackMove(Moves.BEHEMOTH_BASH, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 8), - new AttackMove(Moves.AURA_WHEEL, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 110, 100, 10, 100, 0, 8) + new AttackMove(MoveId.BEHEMOTH_BASH, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 8), + new AttackMove(MoveId.AURA_WHEEL, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 110, 100, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true) .makesContact(false) .attr(AuraWheelTypeAttr), - new AttackMove(Moves.BREAKING_SWIPE, PokemonType.DRAGON, MoveCategory.PHYSICAL, 60, 100, 15, 100, 0, 8) + new AttackMove(MoveId.BREAKING_SWIPE, PokemonType.DRAGON, MoveCategory.PHYSICAL, 60, 100, 15, 100, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .attr(StatStageChangeAttr, [ Stat.ATK ], -1), - new AttackMove(Moves.BRANCH_POKE, PokemonType.GRASS, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 8), - new AttackMove(Moves.OVERDRIVE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 8) + new AttackMove(MoveId.BRANCH_POKE, PokemonType.GRASS, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 8), + new AttackMove(MoveId.OVERDRIVE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 8) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.APPLE_ACID, PokemonType.GRASS, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 8) + new AttackMove(MoveId.APPLE_ACID, PokemonType.GRASS, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1), - new AttackMove(Moves.GRAV_APPLE, PokemonType.GRASS, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 8) + new AttackMove(MoveId.GRAV_APPLE, PokemonType.GRASS, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.DEF ], -1) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTag(ArenaTagType.GRAVITY) ? 1.5 : 1) .makesContact(false), - new AttackMove(Moves.SPIRIT_BREAK, PokemonType.FAIRY, MoveCategory.PHYSICAL, 75, 100, 15, 100, 0, 8) + new AttackMove(MoveId.SPIRIT_BREAK, PokemonType.FAIRY, MoveCategory.PHYSICAL, 75, 100, 15, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1), - new AttackMove(Moves.STRANGE_STEAM, PokemonType.FAIRY, MoveCategory.SPECIAL, 90, 95, 10, 20, 0, 8) + new AttackMove(MoveId.STRANGE_STEAM, PokemonType.FAIRY, MoveCategory.SPECIAL, 90, 95, 10, 20, 0, 8) .attr(ConfuseAttr), - new StatusMove(Moves.LIFE_DEW, PokemonType.WATER, -1, 10, -1, 0, 8) + new StatusMove(MoveId.LIFE_DEW, PokemonType.WATER, -1, 10, -1, 0, 8) .attr(HealAttr, 0.25, true, false) .target(MoveTarget.USER_AND_ALLIES) .ignoresProtect(), - new SelfStatusMove(Moves.OBSTRUCT, PokemonType.DARK, 100, 10, -1, 4, 8) + new SelfStatusMove(MoveId.OBSTRUCT, PokemonType.DARK, 100, 10, -1, 4, 8) .attr(ProtectAttr, BattlerTagType.OBSTRUCT) .condition(failIfLastCondition), - new AttackMove(Moves.FALSE_SURRENDER, PokemonType.DARK, MoveCategory.PHYSICAL, 80, -1, 10, -1, 0, 8), - new AttackMove(Moves.METEOR_ASSAULT, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 150, 100, 5, -1, 0, 8) + new AttackMove(MoveId.FALSE_SURRENDER, PokemonType.DARK, MoveCategory.PHYSICAL, 80, -1, 10, -1, 0, 8), + new AttackMove(MoveId.METEOR_ASSAULT, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 150, 100, 5, -1, 0, 8) .attr(RechargeAttr) .makesContact(false), - new AttackMove(Moves.ETERNABEAM, PokemonType.DRAGON, MoveCategory.SPECIAL, 160, 90, 5, -1, 0, 8) + new AttackMove(MoveId.ETERNABEAM, PokemonType.DRAGON, MoveCategory.SPECIAL, 160, 90, 5, -1, 0, 8) .attr(RechargeAttr), - new AttackMove(Moves.STEEL_BEAM, PokemonType.STEEL, MoveCategory.SPECIAL, 140, 95, 5, -1, 0, 8) + new AttackMove(MoveId.STEEL_BEAM, PokemonType.STEEL, MoveCategory.SPECIAL, 140, 95, 5, -1, 0, 8) .attr(HalfSacrificialAttr), - new AttackMove(Moves.EXPANDING_FORCE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 8) + new AttackMove(MoveId.EXPANDING_FORCE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 8) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.PSYCHIC && user.isGrounded() ? 1.5 : 1) .attr(VariableTargetAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.PSYCHIC && user.isGrounded() ? MoveTarget.ALL_NEAR_ENEMIES : MoveTarget.NEAR_OTHER), - new AttackMove(Moves.STEEL_ROLLER, PokemonType.STEEL, MoveCategory.PHYSICAL, 130, 100, 5, -1, 0, 8) + new AttackMove(MoveId.STEEL_ROLLER, PokemonType.STEEL, MoveCategory.PHYSICAL, 130, 100, 5, -1, 0, 8) .attr(ClearTerrainAttr) .condition((user, target, move) => !!globalScene.arena.terrain), - new AttackMove(Moves.SCALE_SHOT, PokemonType.DRAGON, MoveCategory.PHYSICAL, 25, 90, 20, -1, 0, 8) + new AttackMove(MoveId.SCALE_SHOT, PokemonType.DRAGON, MoveCategory.PHYSICAL, 25, 90, 20, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true, { lastHitOnly: true }) .attr(StatStageChangeAttr, [ Stat.DEF ], -1, true, { lastHitOnly: true }) .attr(MultiHitAttr) .makesContact(false), - new ChargingAttackMove(Moves.METEOR_BEAM, PokemonType.ROCK, MoveCategory.SPECIAL, 120, 90, 10, -1, 0, 8) + new ChargingAttackMove(MoveId.METEOR_BEAM, PokemonType.ROCK, MoveCategory.SPECIAL, 120, 90, 10, -1, 0, 8) .chargeText(i18next.t("moveTriggers:isOverflowingWithSpacePower", { pokemonName: "{USER}" })) .chargeAttr(StatStageChangeAttr, [ Stat.SPATK ], 1, true), - new AttackMove(Moves.SHELL_SIDE_ARM, PokemonType.POISON, MoveCategory.SPECIAL, 90, 100, 10, 20, 0, 8) + new AttackMove(MoveId.SHELL_SIDE_ARM, PokemonType.POISON, MoveCategory.SPECIAL, 90, 100, 10, 20, 0, 8) .attr(ShellSideArmCategoryAttr) .attr(StatusEffectAttr, StatusEffect.POISON) .partial(), // Physical version of the move does not make contact - new AttackMove(Moves.MISTY_EXPLOSION, PokemonType.FAIRY, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 8) + new AttackMove(MoveId.MISTY_EXPLOSION, PokemonType.FAIRY, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 8) .attr(SacrificialAttr) .target(MoveTarget.ALL_NEAR_OTHERS) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.MISTY && user.isGrounded() ? 1.5 : 1) .condition(failIfDampCondition) .makesContact(false), - new AttackMove(Moves.GRASSY_GLIDE, PokemonType.GRASS, MoveCategory.PHYSICAL, 55, 100, 20, -1, 0, 8) + new AttackMove(MoveId.GRASSY_GLIDE, PokemonType.GRASS, MoveCategory.PHYSICAL, 55, 100, 20, -1, 0, 8) .attr(IncrementMovePriorityAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.GRASSY && user.isGrounded()), - new AttackMove(Moves.RISING_VOLTAGE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 20, -1, 0, 8) + new AttackMove(MoveId.RISING_VOLTAGE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 20, -1, 0, 8) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.ELECTRIC && target.isGrounded() ? 2 : 1), - new AttackMove(Moves.TERRAIN_PULSE, PokemonType.NORMAL, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 8) + new AttackMove(MoveId.TERRAIN_PULSE, PokemonType.NORMAL, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 8) .attr(TerrainPulseTypeAttr) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() !== TerrainType.NONE && user.isGrounded() ? 2 : 1) .pulseMove(), - new AttackMove(Moves.SKITTER_SMACK, PokemonType.BUG, MoveCategory.PHYSICAL, 70, 90, 10, 100, 0, 8) + new AttackMove(MoveId.SKITTER_SMACK, PokemonType.BUG, MoveCategory.PHYSICAL, 70, 90, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1), - new AttackMove(Moves.BURNING_JEALOUSY, PokemonType.FIRE, MoveCategory.SPECIAL, 70, 100, 5, 100, 0, 8) + new AttackMove(MoveId.BURNING_JEALOUSY, PokemonType.FIRE, MoveCategory.SPECIAL, 70, 100, 5, 100, 0, 8) .attr(StatusIfBoostedAttr, StatusEffect.BURN) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.LASH_OUT, PokemonType.DARK, MoveCategory.PHYSICAL, 75, 100, 5, -1, 0, 8) + new AttackMove(MoveId.LASH_OUT, PokemonType.DARK, MoveCategory.PHYSICAL, 75, 100, 5, -1, 0, 8) .attr(MovePowerMultiplierAttr, (user, _target, _move) => user.turnData.statStagesDecreased ? 2 : 1), - new AttackMove(Moves.POLTERGEIST, PokemonType.GHOST, MoveCategory.PHYSICAL, 110, 90, 5, -1, 0, 8) + new AttackMove(MoveId.POLTERGEIST, PokemonType.GHOST, MoveCategory.PHYSICAL, 110, 90, 5, -1, 0, 8) .condition(failIfNoTargetHeldItemsCondition) .attr(PreMoveMessageAttr, attackedByItemMessageFunc) .makesContact(false), - new StatusMove(Moves.CORROSIVE_GAS, PokemonType.POISON, 100, 40, -1, 0, 8) + new StatusMove(MoveId.CORROSIVE_GAS, PokemonType.POISON, 100, 40, -1, 0, 8) .target(MoveTarget.ALL_NEAR_OTHERS) .reflectable() .unimplemented(), - new StatusMove(Moves.COACHING, PokemonType.FIGHTING, -1, 10, -1, 0, 8) + new StatusMove(MoveId.COACHING, PokemonType.FIGHTING, -1, 10, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], 1) .target(MoveTarget.NEAR_ALLY) .condition(failIfSingleBattle), - new AttackMove(Moves.FLIP_TURN, PokemonType.WATER, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 8) + new AttackMove(MoveId.FLIP_TURN, PokemonType.WATER, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 8) .attr(ForceSwitchOutAttr, true), - new AttackMove(Moves.TRIPLE_AXEL, PokemonType.ICE, MoveCategory.PHYSICAL, 20, 90, 10, -1, 0, 8) + new AttackMove(MoveId.TRIPLE_AXEL, PokemonType.ICE, MoveCategory.PHYSICAL, 20, 90, 10, -1, 0, 8) .attr(MultiHitAttr, MultiHitType._3) .attr(MultiHitPowerIncrementAttr, 3) .checkAllHits(), - new AttackMove(Moves.DUAL_WINGBEAT, PokemonType.FLYING, MoveCategory.PHYSICAL, 40, 90, 10, -1, 0, 8) + new AttackMove(MoveId.DUAL_WINGBEAT, PokemonType.FLYING, MoveCategory.PHYSICAL, 40, 90, 10, -1, 0, 8) .attr(MultiHitAttr, MultiHitType._2), - new AttackMove(Moves.SCORCHING_SANDS, PokemonType.GROUND, MoveCategory.SPECIAL, 70, 100, 10, 30, 0, 8) + new AttackMove(MoveId.SCORCHING_SANDS, PokemonType.GROUND, MoveCategory.SPECIAL, 70, 100, 10, 30, 0, 8) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(HealStatusEffectAttr, false, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN), - new StatusMove(Moves.JUNGLE_HEALING, PokemonType.GRASS, -1, 10, -1, 0, 8) + new StatusMove(MoveId.JUNGLE_HEALING, PokemonType.GRASS, -1, 10, -1, 0, 8) .attr(HealAttr, 0.25, true, false) .attr(HealStatusEffectAttr, false, getNonVolatileStatusEffects()) .target(MoveTarget.USER_AND_ALLIES), - new AttackMove(Moves.WICKED_BLOW, PokemonType.DARK, MoveCategory.PHYSICAL, 75, 100, 5, -1, 0, 8) + new AttackMove(MoveId.WICKED_BLOW, PokemonType.DARK, MoveCategory.PHYSICAL, 75, 100, 5, -1, 0, 8) .attr(CritOnlyAttr) .punchingMove(), - new AttackMove(Moves.SURGING_STRIKES, PokemonType.WATER, MoveCategory.PHYSICAL, 25, 100, 5, -1, 0, 8) + new AttackMove(MoveId.SURGING_STRIKES, PokemonType.WATER, MoveCategory.PHYSICAL, 25, 100, 5, -1, 0, 8) .attr(MultiHitAttr, MultiHitType._3) .attr(CritOnlyAttr) .punchingMove(), - new AttackMove(Moves.THUNDER_CAGE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 80, 90, 15, -1, 0, 8) + new AttackMove(MoveId.THUNDER_CAGE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 80, 90, 15, -1, 0, 8) .attr(TrapAttr, BattlerTagType.THUNDER_CAGE), - new AttackMove(Moves.DRAGON_ENERGY, PokemonType.DRAGON, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 8) + new AttackMove(MoveId.DRAGON_ENERGY, PokemonType.DRAGON, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 8) .attr(HpPowerAttr) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.FREEZING_GLARE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 8) + new AttackMove(MoveId.FREEZING_GLARE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 8) .attr(StatusEffectAttr, StatusEffect.FREEZE), - new AttackMove(Moves.FIERY_WRATH, PokemonType.DARK, MoveCategory.SPECIAL, 90, 100, 10, 20, 0, 8) + new AttackMove(MoveId.FIERY_WRATH, PokemonType.DARK, MoveCategory.SPECIAL, 90, 100, 10, 20, 0, 8) .attr(FlinchAttr) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.THUNDEROUS_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 10, 100, 0, 8) + new AttackMove(MoveId.THUNDEROUS_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.DEF ], -1), - new AttackMove(Moves.GLACIAL_LANCE, PokemonType.ICE, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 8) + new AttackMove(MoveId.GLACIAL_LANCE, PokemonType.ICE, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .makesContact(false), - new AttackMove(Moves.ASTRAL_BARRAGE, PokemonType.GHOST, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 8) + new AttackMove(MoveId.ASTRAL_BARRAGE, PokemonType.GHOST, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.EERIE_SPELL, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 5, 100, 0, 8) + new AttackMove(MoveId.EERIE_SPELL, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 5, 100, 0, 8) .attr(AttackReducePpMoveAttr, 3) .soundBased(), - new AttackMove(Moves.DIRE_CLAW, PokemonType.POISON, MoveCategory.PHYSICAL, 80, 100, 15, 50, 0, 8) + new AttackMove(MoveId.DIRE_CLAW, PokemonType.POISON, MoveCategory.PHYSICAL, 80, 100, 15, 50, 0, 8) .attr(MultiStatusEffectAttr, [ StatusEffect.POISON, StatusEffect.PARALYSIS, StatusEffect.SLEEP ]), - new AttackMove(Moves.PSYSHIELD_BASH, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 70, 90, 10, 100, 0, 8) + new AttackMove(MoveId.PSYSHIELD_BASH, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 70, 90, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.DEF ], 1, true), - new SelfStatusMove(Moves.POWER_SHIFT, PokemonType.NORMAL, -1, 10, -1, 0, 8) + new SelfStatusMove(MoveId.POWER_SHIFT, PokemonType.NORMAL, -1, 10, -1, 0, 8) .target(MoveTarget.USER) .attr(ShiftStatAttr, Stat.ATK, Stat.DEF), - new AttackMove(Moves.STONE_AXE, PokemonType.ROCK, MoveCategory.PHYSICAL, 65, 90, 15, 100, 0, 8) + new AttackMove(MoveId.STONE_AXE, PokemonType.ROCK, MoveCategory.PHYSICAL, 65, 90, 15, 100, 0, 8) .attr(AddArenaTrapTagHitAttr, ArenaTagType.STEALTH_ROCK) .slicingMove(), - new AttackMove(Moves.SPRINGTIDE_STORM, PokemonType.FAIRY, MoveCategory.SPECIAL, 100, 80, 5, 30, 0, 8) + new AttackMove(MoveId.SPRINGTIDE_STORM, PokemonType.FAIRY, MoveCategory.SPECIAL, 100, 80, 5, 30, 0, 8) .attr(StatStageChangeAttr, [ Stat.ATK ], -1) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.MYSTICAL_POWER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 70, 90, 10, 100, 0, 8) + new AttackMove(MoveId.MYSTICAL_POWER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 70, 90, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPATK ], 1, true), - new AttackMove(Moves.RAGING_FURY, PokemonType.FIRE, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 8) + new AttackMove(MoveId.RAGING_FURY, PokemonType.FIRE, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 8) .makesContact(false) .attr(FrenzyAttr) .attr(MissEffectAttr, frenzyMissFunc) .attr(NoEffectAttr, frenzyMissFunc) .target(MoveTarget.RANDOM_NEAR_ENEMY), - new AttackMove(Moves.WAVE_CRASH, PokemonType.WATER, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 8) + new AttackMove(MoveId.WAVE_CRASH, PokemonType.WATER, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 8) .attr(RecoilAttr, false, 0.33) .recklessMove(), - new AttackMove(Moves.CHLOROBLAST, PokemonType.GRASS, MoveCategory.SPECIAL, 150, 95, 5, -1, 0, 8) + new AttackMove(MoveId.CHLOROBLAST, PokemonType.GRASS, MoveCategory.SPECIAL, 150, 95, 5, -1, 0, 8) .attr(RecoilAttr, true, 0.5), - new AttackMove(Moves.MOUNTAIN_GALE, PokemonType.ICE, MoveCategory.PHYSICAL, 100, 85, 10, 30, 0, 8) + new AttackMove(MoveId.MOUNTAIN_GALE, PokemonType.ICE, MoveCategory.PHYSICAL, 100, 85, 10, 30, 0, 8) .makesContact(false) .attr(FlinchAttr), - new SelfStatusMove(Moves.VICTORY_DANCE, PokemonType.FIGHTING, -1, 10, -1, 0, 8) + new SelfStatusMove(MoveId.VICTORY_DANCE, PokemonType.FIGHTING, -1, 10, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPD ], 1, true) .danceMove(), - new AttackMove(Moves.HEADLONG_RUSH, PokemonType.GROUND, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 8) + new AttackMove(MoveId.HEADLONG_RUSH, PokemonType.GROUND, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true) .punchingMove(), - new AttackMove(Moves.BARB_BARRAGE, PokemonType.POISON, MoveCategory.PHYSICAL, 60, 100, 10, 50, 0, 8) + new AttackMove(MoveId.BARB_BARRAGE, PokemonType.POISON, MoveCategory.PHYSICAL, 60, 100, 10, 50, 0, 8) .makesContact(false) .attr(MovePowerMultiplierAttr, (user, target, move) => target.status && (target.status.effect === StatusEffect.POISON || target.status.effect === StatusEffect.TOXIC) ? 2 : 1) .attr(StatusEffectAttr, StatusEffect.POISON), - new AttackMove(Moves.ESPER_WING, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 8) + new AttackMove(MoveId.ESPER_WING, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 8) .attr(HighCritAttr) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true), - new AttackMove(Moves.BITTER_MALICE, PokemonType.GHOST, MoveCategory.SPECIAL, 75, 100, 10, 100, 0, 8) + new AttackMove(MoveId.BITTER_MALICE, PokemonType.GHOST, MoveCategory.SPECIAL, 75, 100, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.ATK ], -1), - new SelfStatusMove(Moves.SHELTER, PokemonType.STEEL, -1, 10, -1, 0, 8) + new SelfStatusMove(MoveId.SHELTER, PokemonType.STEEL, -1, 10, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true), - new AttackMove(Moves.TRIPLE_ARROWS, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 10, 30, 0, 8) + new AttackMove(MoveId.TRIPLE_ARROWS, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 10, 30, 0, 8) .makesContact(false) .attr(HighCritAttr) .attr(StatStageChangeAttr, [ Stat.DEF ], -1, false, { effectChanceOverride: 50 }) .attr(FlinchAttr), - new AttackMove(Moves.INFERNAL_PARADE, PokemonType.GHOST, MoveCategory.SPECIAL, 60, 100, 15, 30, 0, 8) + new AttackMove(MoveId.INFERNAL_PARADE, PokemonType.GHOST, MoveCategory.SPECIAL, 60, 100, 15, 30, 0, 8) .attr(StatusEffectAttr, StatusEffect.BURN) .attr(MovePowerMultiplierAttr, (user, target, move) => target.status ? 2 : 1), - new AttackMove(Moves.CEASELESS_EDGE, PokemonType.DARK, MoveCategory.PHYSICAL, 65, 90, 15, 100, 0, 8) + new AttackMove(MoveId.CEASELESS_EDGE, PokemonType.DARK, MoveCategory.PHYSICAL, 65, 90, 15, 100, 0, 8) .attr(AddArenaTrapTagHitAttr, ArenaTagType.SPIKES) .slicingMove(), - new AttackMove(Moves.BLEAKWIND_STORM, PokemonType.FLYING, MoveCategory.SPECIAL, 100, 80, 10, 30, 0, 8) + new AttackMove(MoveId.BLEAKWIND_STORM, PokemonType.FLYING, MoveCategory.SPECIAL, 100, 80, 10, 30, 0, 8) .attr(StormAccuracyAttr) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.WILDBOLT_STORM, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 100, 80, 10, 20, 0, 8) + new AttackMove(MoveId.WILDBOLT_STORM, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 100, 80, 10, 20, 0, 8) .attr(StormAccuracyAttr) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.SANDSEAR_STORM, PokemonType.GROUND, MoveCategory.SPECIAL, 100, 80, 10, 20, 0, 8) + new AttackMove(MoveId.SANDSEAR_STORM, PokemonType.GROUND, MoveCategory.SPECIAL, 100, 80, 10, 20, 0, 8) .attr(StormAccuracyAttr) .attr(StatusEffectAttr, StatusEffect.BURN) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new StatusMove(Moves.LUNAR_BLESSING, PokemonType.PSYCHIC, -1, 5, -1, 0, 8) + new StatusMove(MoveId.LUNAR_BLESSING, PokemonType.PSYCHIC, -1, 5, -1, 0, 8) .attr(HealAttr, 0.25, true, false) .attr(HealStatusEffectAttr, false, getNonVolatileStatusEffects()) .target(MoveTarget.USER_AND_ALLIES) .triageMove(), - new SelfStatusMove(Moves.TAKE_HEART, PokemonType.PSYCHIC, -1, 10, -1, 0, 8) + new SelfStatusMove(MoveId.TAKE_HEART, PokemonType.PSYCHIC, -1, 10, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF ], 1, true) .attr(HealStatusEffectAttr, true, [ StatusEffect.PARALYSIS, StatusEffect.POISON, StatusEffect.TOXIC, StatusEffect.BURN, StatusEffect.SLEEP ]), /* Unused - new AttackMove(Moves.G_MAX_WILDFIRE, PokemonType.Fire, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_WILDFIRE, PokemonType.Fire, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_BEFUDDLE, Type.BUG, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_BEFUDDLE, Type.BUG, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_VOLT_CRASH, Type.ELECTRIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_VOLT_CRASH, Type.ELECTRIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_GOLD_RUSH, Type.NORMAL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_GOLD_RUSH, Type.NORMAL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_CHI_STRIKE, Type.FIGHTING, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_CHI_STRIKE, Type.FIGHTING, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_TERROR, Type.GHOST, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_TERROR, Type.GHOST, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_RESONANCE, Type.ICE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_RESONANCE, Type.ICE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_CUDDLE, Type.NORMAL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_CUDDLE, Type.NORMAL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_REPLENISH, Type.NORMAL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_REPLENISH, Type.NORMAL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_MALODOR, Type.POISON, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_MALODOR, Type.POISON, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_STONESURGE, Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_STONESURGE, Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_WIND_RAGE, Type.FLYING, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_WIND_RAGE, Type.FLYING, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_STUN_SHOCK, Type.ELECTRIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_STUN_SHOCK, Type.ELECTRIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_FINALE, Type.FAIRY, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_FINALE, Type.FAIRY, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_DEPLETION, Type.DRAGON, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_DEPLETION, Type.DRAGON, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_GRAVITAS, Type.PSYCHIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_GRAVITAS, Type.PSYCHIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_VOLCALITH, Type.ROCK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_VOLCALITH, Type.ROCK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_SANDBLAST, Type.GROUND, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_SANDBLAST, Type.GROUND, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_SNOOZE, Type.DARK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_SNOOZE, Type.DARK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_TARTNESS, Type.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_TARTNESS, Type.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_SWEETNESS, Type.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_SWEETNESS, Type.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_SMITE, Type.FAIRY, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_SMITE, Type.FAIRY, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_STEELSURGE, Type.STEEL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_STEELSURGE, Type.STEEL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_MELTDOWN, Type.STEEL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_MELTDOWN, Type.STEEL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_FOAM_BURST, Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_FOAM_BURST, Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_CENTIFERNO, PokemonType.Fire, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_CENTIFERNO, PokemonType.Fire, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_VINE_LASH, Type.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_VINE_LASH, Type.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_CANNONADE, Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_CANNONADE, Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_DRUM_SOLO, Type.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_DRUM_SOLO, Type.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_FIREBALL, PokemonType.Fire, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_FIREBALL, PokemonType.Fire, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_HYDROSNIPE, Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_HYDROSNIPE, Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_ONE_BLOW, Type.DARK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_ONE_BLOW, Type.DARK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_RAPID_FLOW, Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(MoveId.G_MAX_RAPID_FLOW, Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), End Unused */ - new AttackMove(Moves.TERA_BLAST, PokemonType.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 9) + new AttackMove(MoveId.TERA_BLAST, PokemonType.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 9) .attr(TeraMoveCategoryAttr) .attr(TeraBlastTypeAttr) .attr(TeraBlastPowerAttr) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1, true, { condition: (user, target, move) => user.isTerastallized && user.isOfType(PokemonType.STELLAR) }), - new SelfStatusMove(Moves.SILK_TRAP, PokemonType.BUG, -1, 10, -1, 4, 9) + new SelfStatusMove(MoveId.SILK_TRAP, PokemonType.BUG, -1, 10, -1, 4, 9) .attr(ProtectAttr, BattlerTagType.SILK_TRAP) .condition(failIfLastCondition), - new AttackMove(Moves.AXE_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 120, 90, 10, 30, 0, 9) + new AttackMove(MoveId.AXE_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 120, 90, 10, 30, 0, 9) .attr(MissEffectAttr, crashDamageFunc) .attr(NoEffectAttr, crashDamageFunc) .attr(ConfuseAttr) .recklessMove(), - new AttackMove(Moves.LAST_RESPECTS, PokemonType.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9) + new AttackMove(MoveId.LAST_RESPECTS, PokemonType.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9) .attr(MovePowerMultiplierAttr, (user, target, move) => 1 + Math.min(user.isPlayer() ? globalScene.arena.playerFaints : globalScene.currentBattle.enemyFaints, 100)) .makesContact(false), - new AttackMove(Moves.LUMINA_CRASH, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9) + new AttackMove(MoveId.LUMINA_CRASH, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -2), - new AttackMove(Moves.ORDER_UP, PokemonType.DRAGON, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 9) + new AttackMove(MoveId.ORDER_UP, PokemonType.DRAGON, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 9) .attr(OrderUpStatBoostAttr) .makesContact(false), - new AttackMove(Moves.JET_PUNCH, PokemonType.WATER, MoveCategory.PHYSICAL, 60, 100, 15, -1, 1, 9) + new AttackMove(MoveId.JET_PUNCH, PokemonType.WATER, MoveCategory.PHYSICAL, 60, 100, 15, -1, 1, 9) .punchingMove(), - new StatusMove(Moves.SPICY_EXTRACT, PokemonType.GRASS, -1, 15, -1, 0, 9) + new StatusMove(MoveId.SPICY_EXTRACT, PokemonType.GRASS, -1, 15, -1, 0, 9) .attr(StatStageChangeAttr, [ Stat.ATK ], 2) .attr(StatStageChangeAttr, [ Stat.DEF ], -2), - new AttackMove(Moves.SPIN_OUT, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9) + new AttackMove(MoveId.SPIN_OUT, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9) .attr(StatStageChangeAttr, [ Stat.SPD ], -2, true), - new AttackMove(Moves.POPULATION_BOMB, PokemonType.NORMAL, MoveCategory.PHYSICAL, 20, 90, 10, -1, 0, 9) + new AttackMove(MoveId.POPULATION_BOMB, PokemonType.NORMAL, MoveCategory.PHYSICAL, 20, 90, 10, -1, 0, 9) .attr(MultiHitAttr, MultiHitType._10) .slicingMove() .checkAllHits(), - new AttackMove(Moves.ICE_SPINNER, PokemonType.ICE, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 9) + new AttackMove(MoveId.ICE_SPINNER, PokemonType.ICE, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 9) .attr(ClearTerrainAttr), - new AttackMove(Moves.GLAIVE_RUSH, PokemonType.DRAGON, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 9) + new AttackMove(MoveId.GLAIVE_RUSH, PokemonType.DRAGON, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 9) .attr(AddBattlerTagAttr, BattlerTagType.ALWAYS_GET_HIT, true, false, 0, 0, true) .attr(AddBattlerTagAttr, BattlerTagType.RECEIVE_DOUBLE_DAMAGE, true, false, 0, 0, true) .condition((user, target, move) => { return !(target.getTag(BattlerTagType.PROTECTED)?.tagType === "PROTECTED" || globalScene.arena.getTag(ArenaTagType.MAT_BLOCK)?.tagType === "MAT_BLOCK"); }), - new StatusMove(Moves.REVIVAL_BLESSING, PokemonType.NORMAL, -1, 1, -1, 0, 9) + new StatusMove(MoveId.REVIVAL_BLESSING, PokemonType.NORMAL, -1, 1, -1, 0, 9) .triageMove() .attr(RevivalBlessingAttr) .target(MoveTarget.USER), - new AttackMove(Moves.SALT_CURE, PokemonType.ROCK, MoveCategory.PHYSICAL, 40, 100, 15, 100, 0, 9) + new AttackMove(MoveId.SALT_CURE, PokemonType.ROCK, MoveCategory.PHYSICAL, 40, 100, 15, 100, 0, 9) .attr(AddBattlerTagAttr, BattlerTagType.SALT_CURED) .makesContact(false), - new AttackMove(Moves.TRIPLE_DIVE, PokemonType.WATER, MoveCategory.PHYSICAL, 30, 95, 10, -1, 0, 9) + new AttackMove(MoveId.TRIPLE_DIVE, PokemonType.WATER, MoveCategory.PHYSICAL, 30, 95, 10, -1, 0, 9) .attr(MultiHitAttr, MultiHitType._3), - new AttackMove(Moves.MORTAL_SPIN, PokemonType.POISON, MoveCategory.PHYSICAL, 30, 100, 15, 100, 0, 9) + new AttackMove(MoveId.MORTAL_SPIN, PokemonType.POISON, MoveCategory.PHYSICAL, 30, 100, 15, 100, 0, 9) .attr(LapseBattlerTagAttr, [ BattlerTagType.BIND, BattlerTagType.WRAP, @@ -11086,32 +11086,32 @@ export function initMoves() { .attr(StatusEffectAttr, StatusEffect.POISON) .attr(RemoveArenaTrapAttr) .target(MoveTarget.ALL_NEAR_ENEMIES), - new StatusMove(Moves.DOODLE, PokemonType.NORMAL, 100, 10, -1, 0, 9) + new StatusMove(MoveId.DOODLE, PokemonType.NORMAL, 100, 10, -1, 0, 9) .attr(AbilityCopyAttr, true), - new SelfStatusMove(Moves.FILLET_AWAY, PokemonType.NORMAL, -1, 10, -1, 0, 9) + new SelfStatusMove(MoveId.FILLET_AWAY, PokemonType.NORMAL, -1, 10, -1, 0, 9) .attr(CutHpStatStageBoostAttr, [ Stat.ATK, Stat.SPATK, Stat.SPD ], 2, 2), - new AttackMove(Moves.KOWTOW_CLEAVE, PokemonType.DARK, MoveCategory.PHYSICAL, 85, -1, 10, -1, 0, 9) + new AttackMove(MoveId.KOWTOW_CLEAVE, PokemonType.DARK, MoveCategory.PHYSICAL, 85, -1, 10, -1, 0, 9) .slicingMove(), - new AttackMove(Moves.FLOWER_TRICK, PokemonType.GRASS, MoveCategory.PHYSICAL, 70, -1, 10, -1, 0, 9) + new AttackMove(MoveId.FLOWER_TRICK, PokemonType.GRASS, MoveCategory.PHYSICAL, 70, -1, 10, -1, 0, 9) .attr(CritOnlyAttr) .makesContact(false), - new AttackMove(Moves.TORCH_SONG, PokemonType.FIRE, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9) + new AttackMove(MoveId.TORCH_SONG, PokemonType.FIRE, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9) .attr(StatStageChangeAttr, [ Stat.SPATK ], 1, true) .soundBased(), - new AttackMove(Moves.AQUA_STEP, PokemonType.WATER, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 9) + new AttackMove(MoveId.AQUA_STEP, PokemonType.WATER, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 9) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true) .danceMove(), - new AttackMove(Moves.RAGING_BULL, PokemonType.NORMAL, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 9) + new AttackMove(MoveId.RAGING_BULL, PokemonType.NORMAL, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 9) .attr(RagingBullTypeAttr) .attr(RemoveScreensAttr), - new AttackMove(Moves.MAKE_IT_RAIN, PokemonType.STEEL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) + new AttackMove(MoveId.MAKE_IT_RAIN, PokemonType.STEEL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) .attr(MoneyAttr) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1, true, { firstTargetOnly: true }) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.PSYBLADE, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 9) + new AttackMove(MoveId.PSYBLADE, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 9) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.ELECTRIC && user.isGrounded() ? 1.5 : 1) .slicingMove(), - new AttackMove(Moves.HYDRO_STEAM, PokemonType.WATER, MoveCategory.SPECIAL, 80, 100, 15, -1, 0, 9) + new AttackMove(MoveId.HYDRO_STEAM, PokemonType.WATER, MoveCategory.SPECIAL, 80, 100, 15, -1, 0, 9) .attr(IgnoreWeatherTypeDebuffAttr, WeatherType.SUNNY) .attr(MovePowerMultiplierAttr, (user, target, move) => { const weather = globalScene.arena.weather; @@ -11120,47 +11120,47 @@ export function initMoves() { } return [ WeatherType.SUNNY, WeatherType.HARSH_SUN ].includes(weather.weatherType) && !weather.isEffectSuppressed() ? 1.5 : 1; }), - new AttackMove(Moves.RUINATION, PokemonType.DARK, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 9) + new AttackMove(MoveId.RUINATION, PokemonType.DARK, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 9) .attr(TargetHalfHpDamageAttr), - new AttackMove(Moves.COLLISION_COURSE, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9) + new AttackMove(MoveId.COLLISION_COURSE, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9) .attr(MovePowerMultiplierAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2 ? 5461 / 4096 : 1), - new AttackMove(Moves.ELECTRO_DRIFT, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 9) + new AttackMove(MoveId.ELECTRO_DRIFT, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 9) .attr(MovePowerMultiplierAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2 ? 5461 / 4096 : 1) .makesContact(), - new SelfStatusMove(Moves.SHED_TAIL, PokemonType.NORMAL, -1, 10, -1, 0, 9) + new SelfStatusMove(MoveId.SHED_TAIL, PokemonType.NORMAL, -1, 10, -1, 0, 9) .attr(AddSubstituteAttr, 0.5, true) .attr(ForceSwitchOutAttr, true, SwitchType.SHED_TAIL) .condition(failIfLastInPartyCondition), - new SelfStatusMove(Moves.CHILLY_RECEPTION, PokemonType.ICE, -1, 10, -1, 0, 9) + new SelfStatusMove(MoveId.CHILLY_RECEPTION, PokemonType.ICE, -1, 10, -1, 0, 9) .attr(PreMoveMessageAttr, (user, move) => i18next.t("moveTriggers:chillyReception", { pokemonName: getPokemonNameWithAffix(user) })) .attr(ChillyReceptionAttr, true), - new SelfStatusMove(Moves.TIDY_UP, PokemonType.NORMAL, -1, 10, -1, 0, 9) + new SelfStatusMove(MoveId.TIDY_UP, PokemonType.NORMAL, -1, 10, -1, 0, 9) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPD ], 1, true) .attr(RemoveArenaTrapAttr, true) .attr(RemoveAllSubstitutesAttr), - new StatusMove(Moves.SNOWSCAPE, PokemonType.ICE, -1, 10, -1, 0, 9) + new StatusMove(MoveId.SNOWSCAPE, PokemonType.ICE, -1, 10, -1, 0, 9) .attr(WeatherChangeAttr, WeatherType.SNOW) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.POUNCE, PokemonType.BUG, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 9) + new AttackMove(MoveId.POUNCE, PokemonType.BUG, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 9) .attr(StatStageChangeAttr, [ Stat.SPD ], -1), - new AttackMove(Moves.TRAILBLAZE, PokemonType.GRASS, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 9) + new AttackMove(MoveId.TRAILBLAZE, PokemonType.GRASS, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 9) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true), - new AttackMove(Moves.CHILLING_WATER, PokemonType.WATER, MoveCategory.SPECIAL, 50, 100, 20, 100, 0, 9) + new AttackMove(MoveId.CHILLING_WATER, PokemonType.WATER, MoveCategory.SPECIAL, 50, 100, 20, 100, 0, 9) .attr(StatStageChangeAttr, [ Stat.ATK ], -1), - new AttackMove(Moves.HYPER_DRILL, PokemonType.NORMAL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9) + new AttackMove(MoveId.HYPER_DRILL, PokemonType.NORMAL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9) .ignoresProtect(), - new AttackMove(Moves.TWIN_BEAM, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 40, 100, 10, -1, 0, 9) + new AttackMove(MoveId.TWIN_BEAM, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 40, 100, 10, -1, 0, 9) .attr(MultiHitAttr, MultiHitType._2), - new AttackMove(Moves.RAGE_FIST, PokemonType.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9) + new AttackMove(MoveId.RAGE_FIST, PokemonType.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9) .attr(RageFistPowerAttr) .punchingMove(), - new AttackMove(Moves.ARMOR_CANNON, PokemonType.FIRE, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) + new AttackMove(MoveId.ARMOR_CANNON, PokemonType.FIRE, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true), - new AttackMove(Moves.BITTER_BLADE, PokemonType.FIRE, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 9) + new AttackMove(MoveId.BITTER_BLADE, PokemonType.FIRE, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 9) .attr(HitHealAttr) .slicingMove() .triageMove(), - new AttackMove(Moves.DOUBLE_SHOCK, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 9) + new AttackMove(MoveId.DOUBLE_SHOCK, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 9) .condition((user) => { const userTypes = user.getTypes(true); return userTypes.includes(PokemonType.ELECTRIC); @@ -11169,71 +11169,71 @@ export function initMoves() { .attr(RemoveTypeAttr, PokemonType.ELECTRIC, (user) => { globalScene.queueMessage(i18next.t("moveTriggers:usedUpAllElectricity", { pokemonName: getPokemonNameWithAffix(user) })); }), - new AttackMove(Moves.GIGATON_HAMMER, PokemonType.STEEL, MoveCategory.PHYSICAL, 160, 100, 5, -1, 0, 9) + new AttackMove(MoveId.GIGATON_HAMMER, PokemonType.STEEL, MoveCategory.PHYSICAL, 160, 100, 5, -1, 0, 9) .makesContact(false) .condition((user, target, move) => { const turnMove = user.getLastXMoves(1); return !turnMove.length || turnMove[0].move !== move.id || turnMove[0].result !== MoveResult.SUCCESS; }), // TODO Add Instruct/Encore interaction - new AttackMove(Moves.COMEUPPANCE, PokemonType.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 9) + new AttackMove(MoveId.COMEUPPANCE, PokemonType.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 9) .attr(CounterDamageAttr, (move: Move) => (move.category === MoveCategory.PHYSICAL || move.category === MoveCategory.SPECIAL), 1.5) .redirectCounter() .target(MoveTarget.ATTACKER), - new AttackMove(Moves.AQUA_CUTTER, PokemonType.WATER, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 9) + new AttackMove(MoveId.AQUA_CUTTER, PokemonType.WATER, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 9) .attr(HighCritAttr) .slicingMove() .makesContact(false), - new AttackMove(Moves.BLAZING_TORQUE, PokemonType.FIRE, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 9) + new AttackMove(MoveId.BLAZING_TORQUE, PokemonType.FIRE, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 9) .attr(StatusEffectAttr, StatusEffect.BURN) .makesContact(false), - new AttackMove(Moves.WICKED_TORQUE, PokemonType.DARK, MoveCategory.PHYSICAL, 80, 100, 10, 10, 0, 9) + new AttackMove(MoveId.WICKED_TORQUE, PokemonType.DARK, MoveCategory.PHYSICAL, 80, 100, 10, 10, 0, 9) .attr(StatusEffectAttr, StatusEffect.SLEEP) .makesContact(false), - new AttackMove(Moves.NOXIOUS_TORQUE, PokemonType.POISON, MoveCategory.PHYSICAL, 100, 100, 10, 30, 0, 9) + new AttackMove(MoveId.NOXIOUS_TORQUE, PokemonType.POISON, MoveCategory.PHYSICAL, 100, 100, 10, 30, 0, 9) .attr(StatusEffectAttr, StatusEffect.POISON) .makesContact(false), - new AttackMove(Moves.COMBAT_TORQUE, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 100, 10, 30, 0, 9) + new AttackMove(MoveId.COMBAT_TORQUE, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 100, 10, 30, 0, 9) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .makesContact(false), - new AttackMove(Moves.MAGICAL_TORQUE, PokemonType.FAIRY, MoveCategory.PHYSICAL, 100, 100, 10, 30, 0, 9) + new AttackMove(MoveId.MAGICAL_TORQUE, PokemonType.FAIRY, MoveCategory.PHYSICAL, 100, 100, 10, 30, 0, 9) .attr(ConfuseAttr) .makesContact(false), - new AttackMove(Moves.BLOOD_MOON, PokemonType.NORMAL, MoveCategory.SPECIAL, 140, 100, 5, -1, 0, 9) + new AttackMove(MoveId.BLOOD_MOON, PokemonType.NORMAL, MoveCategory.SPECIAL, 140, 100, 5, -1, 0, 9) .condition((user, target, move) => { const turnMove = user.getLastXMoves(1); return !turnMove.length || turnMove[0].move !== move.id || turnMove[0].result !== MoveResult.SUCCESS; }), // TODO Add Instruct/Encore interaction - new AttackMove(Moves.MATCHA_GOTCHA, PokemonType.GRASS, MoveCategory.SPECIAL, 80, 90, 15, 20, 0, 9) + new AttackMove(MoveId.MATCHA_GOTCHA, PokemonType.GRASS, MoveCategory.SPECIAL, 80, 90, 15, 20, 0, 9) .attr(HitHealAttr) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(HealStatusEffectAttr, false, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN) .target(MoveTarget.ALL_NEAR_ENEMIES) .triageMove(), - new AttackMove(Moves.SYRUP_BOMB, PokemonType.GRASS, MoveCategory.SPECIAL, 60, 85, 10, 100, 0, 9) + new AttackMove(MoveId.SYRUP_BOMB, PokemonType.GRASS, MoveCategory.SPECIAL, 60, 85, 10, 100, 0, 9) .attr(AddBattlerTagAttr, BattlerTagType.SYRUP_BOMB, false, false, 3) .ballBombMove(), - new AttackMove(Moves.IVY_CUDGEL, PokemonType.GRASS, MoveCategory.PHYSICAL, 100, 100, 10, -1, 0, 9) + new AttackMove(MoveId.IVY_CUDGEL, PokemonType.GRASS, MoveCategory.PHYSICAL, 100, 100, 10, -1, 0, 9) .attr(IvyCudgelTypeAttr) .attr(HighCritAttr) .makesContact(false), - new ChargingAttackMove(Moves.ELECTRO_SHOT, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 130, 100, 10, 100, 0, 9) + new ChargingAttackMove(MoveId.ELECTRO_SHOT, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 130, 100, 10, 100, 0, 9) .chargeText(i18next.t("moveTriggers:absorbedElectricity", { pokemonName: "{USER}" })) .chargeAttr(StatStageChangeAttr, [ Stat.SPATK ], 1, true) .chargeAttr(WeatherInstantChargeAttr, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), - new AttackMove(Moves.TERA_STARSTORM, PokemonType.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) + new AttackMove(MoveId.TERA_STARSTORM, PokemonType.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) .attr(TeraMoveCategoryAttr) .attr(TeraStarstormTypeAttr) - .attr(VariableTargetAttr, (user, target, move) => user.hasSpecies(Species.TERAPAGOS) && (user.isTerastallized || globalScene.currentBattle.preTurnCommands[user.getFieldIndex()]?.command === Command.TERA) ? MoveTarget.ALL_NEAR_ENEMIES : MoveTarget.NEAR_OTHER) + .attr(VariableTargetAttr, (user, target, move) => user.hasSpecies(SpeciesId.TERAPAGOS) && (user.isTerastallized || globalScene.currentBattle.preTurnCommands[user.getFieldIndex()]?.command === Command.TERA) ? MoveTarget.ALL_NEAR_ENEMIES : MoveTarget.NEAR_OTHER) .partial(), /** Does not ignore abilities that affect stats, relevant in determining the move's category {@see TeraMoveCategoryAttr} */ - new AttackMove(Moves.FICKLE_BEAM, PokemonType.DRAGON, MoveCategory.SPECIAL, 80, 100, 5, 30, 0, 9) + new AttackMove(MoveId.FICKLE_BEAM, PokemonType.DRAGON, MoveCategory.SPECIAL, 80, 100, 5, 30, 0, 9) .attr(PreMoveMessageAttr, doublePowerChanceMessageFunc) .attr(DoublePowerChanceAttr) .edgeCase(), // Should not interact with Sheer Force - new SelfStatusMove(Moves.BURNING_BULWARK, PokemonType.FIRE, -1, 10, -1, 4, 9) + new SelfStatusMove(MoveId.BURNING_BULWARK, PokemonType.FIRE, -1, 10, -1, 4, 9) .attr(ProtectAttr, BattlerTagType.BURNING_BULWARK) .condition(failIfLastCondition), - new AttackMove(Moves.THUNDERCLAP, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 5, -1, 1, 9) + new AttackMove(MoveId.THUNDERCLAP, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 5, -1, 1, 9) .condition((user, target, move) => { const turnCommand = globalScene.currentBattle.turnCommands[target.getBattlerIndex()]; if (!turnCommand || !turnCommand.move) { @@ -11241,35 +11241,35 @@ export function initMoves() { } return (turnCommand.command === Command.FIGHT && !target.turnData.acted && allMoves[turnCommand.move.move].category !== MoveCategory.STATUS); }), - new AttackMove(Moves.MIGHTY_CLEAVE, PokemonType.ROCK, MoveCategory.PHYSICAL, 95, 100, 5, -1, 0, 9) + new AttackMove(MoveId.MIGHTY_CLEAVE, PokemonType.ROCK, MoveCategory.PHYSICAL, 95, 100, 5, -1, 0, 9) .slicingMove() .ignoresProtect(), - new AttackMove(Moves.TACHYON_CUTTER, PokemonType.STEEL, MoveCategory.SPECIAL, 50, -1, 10, -1, 0, 9) + new AttackMove(MoveId.TACHYON_CUTTER, PokemonType.STEEL, MoveCategory.SPECIAL, 50, -1, 10, -1, 0, 9) .attr(MultiHitAttr, MultiHitType._2) .slicingMove(), - new AttackMove(Moves.HARD_PRESS, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 9) + new AttackMove(MoveId.HARD_PRESS, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 9) .attr(OpponentHighHpPowerAttr, 100), - new StatusMove(Moves.DRAGON_CHEER, PokemonType.DRAGON, -1, 15, -1, 0, 9) + new StatusMove(MoveId.DRAGON_CHEER, PokemonType.DRAGON, -1, 15, -1, 0, 9) .attr(AddBattlerTagAttr, BattlerTagType.DRAGON_CHEER, false, true) .target(MoveTarget.NEAR_ALLY), - new AttackMove(Moves.ALLURING_VOICE, PokemonType.FAIRY, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9) + new AttackMove(MoveId.ALLURING_VOICE, PokemonType.FAIRY, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9) .attr(AddBattlerTagIfBoostedAttr, BattlerTagType.CONFUSED) .soundBased(), - new AttackMove(Moves.TEMPER_FLARE, PokemonType.FIRE, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 9) + new AttackMove(MoveId.TEMPER_FLARE, PokemonType.FIRE, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 9) .attr(MovePowerMultiplierAttr, (user, target, move) => user.getLastXMoves(2)[1]?.result === MoveResult.MISS || user.getLastXMoves(2)[1]?.result === MoveResult.FAIL ? 2 : 1), - new AttackMove(Moves.SUPERCELL_SLAM, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 100, 95, 15, -1, 0, 9) + new AttackMove(MoveId.SUPERCELL_SLAM, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 100, 95, 15, -1, 0, 9) .attr(AlwaysHitMinimizeAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED) .attr(MissEffectAttr, crashDamageFunc) .attr(NoEffectAttr, crashDamageFunc) .recklessMove(), - new AttackMove(Moves.PSYCHIC_NOISE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 75, 100, 10, 100, 0, 9) + new AttackMove(MoveId.PSYCHIC_NOISE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 75, 100, 10, 100, 0, 9) .soundBased() .attr(AddBattlerTagAttr, BattlerTagType.HEAL_BLOCK, false, false, 2), - new AttackMove(Moves.UPPER_HAND, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 65, 100, 15, 100, 3, 9) + new AttackMove(MoveId.UPPER_HAND, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 65, 100, 15, 100, 3, 9) .attr(FlinchAttr) .condition(new UpperHandCondition()), - new AttackMove(Moves.MALIGNANT_CHAIN, PokemonType.POISON, MoveCategory.SPECIAL, 100, 100, 5, 50, 0, 9) + new AttackMove(MoveId.MALIGNANT_CHAIN, PokemonType.POISON, MoveCategory.SPECIAL, 100, 100, 5, 50, 0, 9) .attr(StatusEffectAttr, StatusEffect.TOXIC) ); allMoves.map(m => { diff --git a/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts b/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts index 48b36369190..ae5cd2b2a99 100644 --- a/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts +++ b/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts @@ -12,7 +12,7 @@ import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounte import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { TrainerType } from "#enums/trainer-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { randSeedInt } from "#app/utils/common"; import i18next from "i18next"; @@ -54,27 +54,27 @@ export const ATrainersTestEncounter: MysteryEncounter = MysteryEncounterBuilder. switch (randSeedInt(5)) { case 1: trainerType = TrainerType.CHERYL; - spriteKeys = getSpriteKeysFromSpecies(Species.BLISSEY); + spriteKeys = getSpriteKeysFromSpecies(SpeciesId.BLISSEY); trainerNameKey = "cheryl"; break; case 2: trainerType = TrainerType.MARLEY; - spriteKeys = getSpriteKeysFromSpecies(Species.ARCANINE); + spriteKeys = getSpriteKeysFromSpecies(SpeciesId.ARCANINE); trainerNameKey = "marley"; break; case 3: trainerType = TrainerType.MIRA; - spriteKeys = getSpriteKeysFromSpecies(Species.ALAKAZAM, false, 1); + spriteKeys = getSpriteKeysFromSpecies(SpeciesId.ALAKAZAM, false, 1); trainerNameKey = "mira"; break; case 4: trainerType = TrainerType.RILEY; - spriteKeys = getSpriteKeysFromSpecies(Species.LUCARIO, false, 1); + spriteKeys = getSpriteKeysFromSpecies(SpeciesId.LUCARIO, false, 1); trainerNameKey = "riley"; break; default: trainerType = TrainerType.BUCK; - spriteKeys = getSpriteKeysFromSpecies(Species.CLAYDOL); + spriteKeys = getSpriteKeysFromSpecies(SpeciesId.CLAYDOL); trainerNameKey = "buck"; break; } diff --git a/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts b/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts index acfc8cb16a1..f46e1360b0d 100644 --- a/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts +++ b/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts @@ -11,7 +11,7 @@ import { EnemyPokemon, PokemonMove } from "#app/field/pokemon"; import type { BerryModifierType, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; import { modifierTypes } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { globalScene } from "#app/global-scene"; import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; @@ -22,7 +22,7 @@ import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { BerryModifier, PokemonInstantReviveModifier } from "#app/modifier/modifier"; import { getPokemonSpecies } from "#app/data/pokemon-species"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { BattlerTagType } from "#enums/battler-tag-type"; import { randInt } from "#app/utils/common"; import { BattlerIndex } from "#app/battle"; @@ -59,7 +59,7 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = MysteryEncounterBuilde // This sprite has the shadow spriteKey: "", fileRoot: "", - species: Species.GREEDENT, + species: SpeciesId.GREEDENT, hasShadow: true, alpha: 0.001, repeat: true, @@ -68,7 +68,7 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = MysteryEncounterBuilde { spriteKey: "", fileRoot: "", - species: Species.GREEDENT, + species: SpeciesId.GREEDENT, hasShadow: false, repeat: true, x: -5, @@ -228,11 +228,11 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = MysteryEncounterBuilde levelAdditiveModifier: 1, pokemonConfigs: [ { - species: getPokemonSpecies(Species.GREEDENT), + species: getPokemonSpecies(SpeciesId.GREEDENT), isBoss: true, bossSegments: 3, shiny: false, // Shiny lock because of consistency issues between the different options - moveSet: [Moves.THRASH, Moves.CRUNCH, Moves.BODY_PRESS, Moves.SLACK_OFF], + moveSet: [MoveId.THRASH, MoveId.CRUNCH, MoveId.BODY_PRESS, MoveId.SLACK_OFF], modifierConfigs: bossModifierConfigs, tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { @@ -246,7 +246,7 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = MysteryEncounterBuilde }; encounter.enemyPartyConfigs = [config]; - encounter.setDialogueToken("greedentName", getPokemonSpecies(Species.GREEDENT).getName()); + encounter.setDialogueToken("greedentName", getPokemonSpecies(SpeciesId.GREEDENT).getName()); return true; }) @@ -302,7 +302,7 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = MysteryEncounterBuilde encounter.startOfBattleEffects.push({ sourceBattlerIndex: BattlerIndex.ENEMY, targets: [BattlerIndex.ENEMY], - move: new PokemonMove(Moves.STUFF_CHEEKS), + move: new PokemonMove(MoveId.STUFF_CHEEKS), ignorePp: true, }); @@ -373,12 +373,12 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = MysteryEncounterBuilde // Let it have the food // Greedent joins the team, level equal to 2 below highest party member (shiny locked) const level = getHighestLevelPlayerPokemon(false, true).level - 2; - const greedent = new EnemyPokemon(getPokemonSpecies(Species.GREEDENT), level, TrainerSlot.NONE, false, true); + const greedent = new EnemyPokemon(getPokemonSpecies(SpeciesId.GREEDENT), level, TrainerSlot.NONE, false, true); greedent.moveset = [ - new PokemonMove(Moves.THRASH), - new PokemonMove(Moves.BODY_PRESS), - new PokemonMove(Moves.STUFF_CHEEKS), - new PokemonMove(Moves.SLACK_OFF), + new PokemonMove(MoveId.THRASH), + new PokemonMove(MoveId.BODY_PRESS), + new PokemonMove(MoveId.STUFF_CHEEKS), + new PokemonMove(MoveId.SLACK_OFF), ]; greedent.passive = true; diff --git a/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts b/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts index b403c5f291c..2f4dfaa5f99 100644 --- a/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts +++ b/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts @@ -6,7 +6,7 @@ import { } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { modifierTypes } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { globalScene } from "#app/global-scene"; import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; @@ -50,7 +50,7 @@ export const AnOfferYouCantRefuseEncounter: MysteryEncounter = MysteryEncounterB .withScenePartySizeRequirement(2, 6, true) // Must have at least 2 pokemon in party .withIntroSpriteConfigs([ { - spriteKey: Species.LIEPARD.toString(), + spriteKey: SpeciesId.LIEPARD.toString(), fileRoot: "pokemon", hasShadow: true, repeat: true, @@ -112,7 +112,7 @@ export const AnOfferYouCantRefuseEncounter: MysteryEncounter = MysteryEncounterB const shinyCharm = generateModifierType(modifierTypes.SHINY_CHARM); encounter.setDialogueToken("itemName", shinyCharm?.name ?? i18next.t("modifierType:ModifierType.SHINY_CHARM.name")); - encounter.setDialogueToken("liepardName", getPokemonSpecies(Species.LIEPARD).getName()); + encounter.setDialogueToken("liepardName", getPokemonSpecies(SpeciesId.LIEPARD).getName()); return true; }) @@ -167,7 +167,7 @@ export const AnOfferYouCantRefuseEncounter: MysteryEncounter = MysteryEncounterB // Update money and remove pokemon from party updatePlayerMoney(encounter.misc.price); - setEncounterExp(encounter.options[1].primaryPokemon!.id, getPokemonSpecies(Species.LIEPARD).baseExp, true); + setEncounterExp(encounter.options[1].primaryPokemon!.id, getPokemonSpecies(SpeciesId.LIEPARD).baseExp, true); leaveEncounterWithoutBattle(true); }) diff --git a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts index 17c1c31d55e..c080122f922 100644 --- a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts +++ b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts @@ -21,13 +21,13 @@ import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounte import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { TrainerType } from "#enums/trainer-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import type { PlayerPokemon } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { PokemonMove } from "#app/field/pokemon"; import { getEncounterText, showEncounterDialogue } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { LearnMovePhase } from "#app/phases/learn-move-phase"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; @@ -59,110 +59,116 @@ import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/enc const namespace = "mysteryEncounters/bugTypeSuperfan"; const POOL_1_POKEMON = [ - Species.PARASECT, - Species.VENOMOTH, - Species.LEDIAN, - Species.ARIADOS, - Species.YANMA, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.MASQUERAIN, - Species.NINJASK, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ANORITH, - Species.KRICKETUNE, - Species.WORMADAM, - Species.MOTHIM, - Species.SKORUPI, - Species.JOLTIK, - Species.LARVESTA, - Species.VIVILLON, - Species.CHARJABUG, - Species.RIBOMBEE, - Species.SPIDOPS, - Species.LOKIX, + SpeciesId.PARASECT, + SpeciesId.VENOMOTH, + SpeciesId.LEDIAN, + SpeciesId.ARIADOS, + SpeciesId.YANMA, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.MASQUERAIN, + SpeciesId.NINJASK, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ANORITH, + SpeciesId.KRICKETUNE, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.SKORUPI, + SpeciesId.JOLTIK, + SpeciesId.LARVESTA, + SpeciesId.VIVILLON, + SpeciesId.CHARJABUG, + SpeciesId.RIBOMBEE, + SpeciesId.SPIDOPS, + SpeciesId.LOKIX, ]; const POOL_2_POKEMON = [ - Species.SCYTHER, - Species.PINSIR, - Species.HERACROSS, - Species.FORRETRESS, - Species.SCIZOR, - Species.SHUCKLE, - Species.SHEDINJA, - Species.ARMALDO, - Species.VESPIQUEN, - Species.DRAPION, - Species.YANMEGA, - Species.LEAVANNY, - Species.SCOLIPEDE, - Species.CRUSTLE, - Species.ESCAVALIER, - Species.ACCELGOR, - Species.GALVANTULA, - Species.VIKAVOLT, - Species.ARAQUANID, - Species.ORBEETLE, - Species.CENTISKORCH, - Species.FROSMOTH, - Species.KLEAVOR, + SpeciesId.SCYTHER, + SpeciesId.PINSIR, + SpeciesId.HERACROSS, + SpeciesId.FORRETRESS, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.SHEDINJA, + SpeciesId.ARMALDO, + SpeciesId.VESPIQUEN, + SpeciesId.DRAPION, + SpeciesId.YANMEGA, + SpeciesId.LEAVANNY, + SpeciesId.SCOLIPEDE, + SpeciesId.CRUSTLE, + SpeciesId.ESCAVALIER, + SpeciesId.ACCELGOR, + SpeciesId.GALVANTULA, + SpeciesId.VIKAVOLT, + SpeciesId.ARAQUANID, + SpeciesId.ORBEETLE, + SpeciesId.CENTISKORCH, + SpeciesId.FROSMOTH, + SpeciesId.KLEAVOR, ]; -const POOL_3_POKEMON: { species: Species; formIndex?: number }[] = [ +const POOL_3_POKEMON: { species: SpeciesId; formIndex?: number }[] = [ { - species: Species.PINSIR, + species: SpeciesId.PINSIR, formIndex: 1, }, { - species: Species.SCIZOR, + species: SpeciesId.SCIZOR, formIndex: 1, }, { - species: Species.HERACROSS, + species: SpeciesId.HERACROSS, formIndex: 1, }, { - species: Species.ORBEETLE, + species: SpeciesId.ORBEETLE, formIndex: 1, }, { - species: Species.CENTISKORCH, + species: SpeciesId.CENTISKORCH, formIndex: 1, }, { - species: Species.DURANT, + species: SpeciesId.DURANT, }, { - species: Species.VOLCARONA, + species: SpeciesId.VOLCARONA, }, { - species: Species.GOLISOPOD, + species: SpeciesId.GOLISOPOD, }, ]; -const POOL_4_POKEMON = [Species.GENESECT, Species.SLITHER_WING, Species.BUZZWOLE, Species.PHEROMOSA]; +const POOL_4_POKEMON = [SpeciesId.GENESECT, SpeciesId.SLITHER_WING, SpeciesId.BUZZWOLE, SpeciesId.PHEROMOSA]; -const PHYSICAL_TUTOR_MOVES = [Moves.MEGAHORN, Moves.ATTACK_ORDER, Moves.BUG_BITE, Moves.FIRST_IMPRESSION, Moves.LUNGE]; +const PHYSICAL_TUTOR_MOVES = [ + MoveId.MEGAHORN, + MoveId.ATTACK_ORDER, + MoveId.BUG_BITE, + MoveId.FIRST_IMPRESSION, + MoveId.LUNGE, +]; const SPECIAL_TUTOR_MOVES = [ - Moves.SILVER_WIND, - Moves.SIGNAL_BEAM, - Moves.BUG_BUZZ, - Moves.POLLEN_PUFF, - Moves.STRUGGLE_BUG, + MoveId.SILVER_WIND, + MoveId.SIGNAL_BEAM, + MoveId.BUG_BUZZ, + MoveId.POLLEN_PUFF, + MoveId.STRUGGLE_BUG, ]; const STATUS_TUTOR_MOVES = [ - Moves.STRING_SHOT, - Moves.DEFEND_ORDER, - Moves.RAGE_POWDER, - Moves.STICKY_WEB, - Moves.SILK_TRAP, + MoveId.STRING_SHOT, + MoveId.DEFEND_ORDER, + MoveId.RAGE_POWDER, + MoveId.STICKY_WEB, + MoveId.SILK_TRAP, ]; -const MISC_TUTOR_MOVES = [Moves.LEECH_LIFE, Moves.U_TURN, Moves.HEAL_ORDER, Moves.QUIVER_DANCE, Moves.INFESTATION]; +const MISC_TUTOR_MOVES = [MoveId.LEECH_LIFE, MoveId.U_TURN, MoveId.HEAL_ORDER, MoveId.QUIVER_DANCE, MoveId.INFESTATION]; /** * Wave breakpoints that determine how strong to make the Bug-Type Superfan's team @@ -213,12 +219,12 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = MysteryEncounterBuilde let beedrillKeys: { spriteKey: string; fileRoot: string }, butterfreeKeys: { spriteKey: string; fileRoot: string }; if (globalScene.currentBattle.waveIndex < WAVE_LEVEL_BREAKPOINTS[3]) { - beedrillKeys = getSpriteKeysFromSpecies(Species.BEEDRILL, false); - butterfreeKeys = getSpriteKeysFromSpecies(Species.BUTTERFREE, false); + beedrillKeys = getSpriteKeysFromSpecies(SpeciesId.BEEDRILL, false); + butterfreeKeys = getSpriteKeysFromSpecies(SpeciesId.BUTTERFREE, false); } else { // Mega Beedrill/Gmax Butterfree - beedrillKeys = getSpriteKeysFromSpecies(Species.BEEDRILL, false, 1); - butterfreeKeys = getSpriteKeysFromSpecies(Species.BUTTERFREE, false, 1); + beedrillKeys = getSpriteKeysFromSpecies(SpeciesId.BEEDRILL, false, 1); + butterfreeKeys = getSpriteKeysFromSpecies(SpeciesId.BUTTERFREE, false, 1); } encounter.spriteConfigs = [ @@ -519,26 +525,26 @@ function getTrainerConfigForWave(waveIndex: number) { if (waveIndex < WAVE_LEVEL_BREAKPOINTS[0]) { // Use default template (2 AVG) config - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true)) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true)); + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true)); } else if (waveIndex < WAVE_LEVEL_BREAKPOINTS[1]) { config .setPartyTemplates(new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE)) - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true)) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true)) .setPartyMemberFunc(2, getRandomPartyMemberFunc(POOL_1_POKEMON, TrainerSlot.TRAINER, true)); } else if (waveIndex < WAVE_LEVEL_BREAKPOINTS[2]) { config .setPartyTemplates(new TrainerPartyTemplate(4, PartyMemberStrength.AVERAGE)) - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true)) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true)) .setPartyMemberFunc(2, getRandomPartyMemberFunc(POOL_1_POKEMON, TrainerSlot.TRAINER, true)) .setPartyMemberFunc(3, getRandomPartyMemberFunc(POOL_2_POKEMON, TrainerSlot.TRAINER, true)); } else if (waveIndex < WAVE_LEVEL_BREAKPOINTS[3]) { config .setPartyTemplates(new TrainerPartyTemplate(5, PartyMemberStrength.AVERAGE)) - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true)) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true)) .setPartyMemberFunc(2, getRandomPartyMemberFunc(POOL_1_POKEMON, TrainerSlot.TRAINER, true)) .setPartyMemberFunc(3, getRandomPartyMemberFunc(POOL_2_POKEMON, TrainerSlot.TRAINER, true)) .setPartyMemberFunc(4, getRandomPartyMemberFunc(POOL_2_POKEMON, TrainerSlot.TRAINER, true)); @@ -547,7 +553,7 @@ function getTrainerConfigForWave(waveIndex: number) { .setPartyTemplates(new TrainerPartyTemplate(5, PartyMemberStrength.AVERAGE)) .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; p.generateAndPopulateMoveset(); p.generateName(); @@ -555,7 +561,7 @@ function getTrainerConfigForWave(waveIndex: number) { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; p.generateAndPopulateMoveset(); p.generateName(); @@ -580,7 +586,7 @@ function getTrainerConfigForWave(waveIndex: number) { .setPartyTemplates(new TrainerPartyTemplate(5, PartyMemberStrength.AVERAGE)) .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; p.generateAndPopulateMoveset(); p.generateName(); @@ -588,7 +594,7 @@ function getTrainerConfigForWave(waveIndex: number) { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; p.generateAndPopulateMoveset(); p.generateName(); @@ -625,7 +631,7 @@ function getTrainerConfigForWave(waveIndex: number) { ) .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; p.generateAndPopulateMoveset(); p.generateName(); @@ -633,7 +639,7 @@ function getTrainerConfigForWave(waveIndex: number) { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; p.generateAndPopulateMoveset(); p.generateName(); @@ -663,7 +669,7 @@ function getTrainerConfigForWave(waveIndex: number) { ) .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.formIndex = 1; p.generateAndPopulateMoveset(); @@ -672,7 +678,7 @@ function getTrainerConfigForWave(waveIndex: number) { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.formIndex = 1; p.generateAndPopulateMoveset(); diff --git a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts index ce5eb2cfdd1..19c4948aeab 100644 --- a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts +++ b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts @@ -20,10 +20,10 @@ import { globalScene } from "#app/global-scene"; import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { TrainerType } from "#enums/trainer-type"; import { getPokemonSpecies } from "#app/data/pokemon-species"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { applyAbilityOverrideToPokemon, applyModifierTypeToPlayerPokemon, @@ -42,7 +42,7 @@ import { Ability } from "#app/data/abilities/ability-class"; import { BerryModifier } from "#app/modifier/modifier"; import { BerryType } from "#enums/berry-type"; import { BattlerIndex } from "#app/battle"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { EncounterBattleAnim } from "#app/data/battle-anims"; import { MoveCategory } from "#enums/MoveCategory"; import { CustomPokemonData } from "#app/data/custom-pokemon-data"; @@ -54,21 +54,21 @@ import { Challenges } from "#enums/challenges"; const namespace = "mysteryEncounters/clowningAround"; const RANDOM_ABILITY_POOL = [ - Abilities.STURDY, - Abilities.PICKUP, - Abilities.INTIMIDATE, - Abilities.GUTS, - Abilities.DROUGHT, - Abilities.DRIZZLE, - Abilities.SNOW_WARNING, - Abilities.SAND_STREAM, - Abilities.ELECTRIC_SURGE, - Abilities.PSYCHIC_SURGE, - Abilities.GRASSY_SURGE, - Abilities.MISTY_SURGE, - Abilities.MAGICIAN, - Abilities.SHEER_FORCE, - Abilities.PRANKSTER, + AbilityId.STURDY, + AbilityId.PICKUP, + AbilityId.INTIMIDATE, + AbilityId.GUTS, + AbilityId.DROUGHT, + AbilityId.DRIZZLE, + AbilityId.SNOW_WARNING, + AbilityId.SAND_STREAM, + AbilityId.ELECTRIC_SURGE, + AbilityId.PSYCHIC_SURGE, + AbilityId.GRASSY_SURGE, + AbilityId.MISTY_SURGE, + AbilityId.MAGICIAN, + AbilityId.SHEER_FORCE, + AbilityId.PRANKSTER, ]; /** @@ -86,7 +86,7 @@ export const ClowningAroundEncounter: MysteryEncounter = MysteryEncounterBuilder .withAutoHideIntroVisuals(false) .withIntroSpriteConfigs([ { - spriteKey: Species.MR_MIME.toString(), + spriteKey: SpeciesId.MR_MIME.toString(), fileRoot: "pokemon", hasShadow: true, repeat: true, @@ -96,7 +96,7 @@ export const ClowningAroundEncounter: MysteryEncounter = MysteryEncounterBuilder yShadow: -3, }, { - spriteKey: Species.BLACEPHALON.toString(), + spriteKey: SpeciesId.BLACEPHALON.toString(), fileRoot: "pokemon/exp", hasShadow: true, repeat: true, @@ -154,28 +154,28 @@ export const ClowningAroundEncounter: MysteryEncounter = MysteryEncounterBuilder pokemonConfigs: [ // Overrides first 2 pokemon to be Mr. Mime and Blacephalon { - species: getPokemonSpecies(Species.MR_MIME), + species: getPokemonSpecies(SpeciesId.MR_MIME), isBoss: true, - moveSet: [Moves.TEETER_DANCE, Moves.ALLY_SWITCH, Moves.DAZZLING_GLEAM, Moves.PSYCHIC], + moveSet: [MoveId.TEETER_DANCE, MoveId.ALLY_SWITCH, MoveId.DAZZLING_GLEAM, MoveId.PSYCHIC], }, { // Blacephalon has the random ability from pool, and 2 entirely random types to fit with the theme of the encounter - species: getPokemonSpecies(Species.BLACEPHALON), + species: getPokemonSpecies(SpeciesId.BLACEPHALON), customPokemonData: new CustomPokemonData({ ability: ability, types: [firstType, secondType], }), isBoss: true, - moveSet: [Moves.TRICK, Moves.HYPNOSIS, Moves.SHADOW_BALL, Moves.MIND_BLOWN], + moveSet: [MoveId.TRICK, MoveId.HYPNOSIS, MoveId.SHADOW_BALL, MoveId.MIND_BLOWN], }, ], doubleBattle: true, }); // Load animations/sfx for start of fight moves - loadCustomMovesForEncounter([Moves.ROLE_PLAY, Moves.TAUNT]); + loadCustomMovesForEncounter([MoveId.ROLE_PLAY, MoveId.TAUNT]); - encounter.setDialogueToken("blacephalonName", getPokemonSpecies(Species.BLACEPHALON).getName()); + encounter.setDialogueToken("blacephalonName", getPokemonSpecies(SpeciesId.BLACEPHALON).getName()); return true; }) @@ -208,19 +208,19 @@ export const ClowningAroundEncounter: MysteryEncounter = MysteryEncounterBuilder // Mr. Mime copies the Blacephalon's random ability sourceBattlerIndex: BattlerIndex.ENEMY, targets: [BattlerIndex.ENEMY_2], - move: new PokemonMove(Moves.ROLE_PLAY), + move: new PokemonMove(MoveId.ROLE_PLAY), ignorePp: true, }, { sourceBattlerIndex: BattlerIndex.ENEMY_2, targets: [BattlerIndex.PLAYER], - move: new PokemonMove(Moves.TAUNT), + move: new PokemonMove(MoveId.TAUNT), ignorePp: true, }, { sourceBattlerIndex: BattlerIndex.ENEMY_2, targets: [BattlerIndex.PLAYER_2], - move: new PokemonMove(Moves.TAUNT), + move: new PokemonMove(MoveId.TAUNT), ignorePp: true, }, ); diff --git a/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts b/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts index bdd4bfaacaa..c7f9a99569d 100644 --- a/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts +++ b/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts @@ -31,14 +31,14 @@ import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import PokemonData from "#app/system/pokemon-data"; import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { EncounterAnim } from "#enums/encounter-anims"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PokeballType } from "#enums/pokeball"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import i18next from "i18next"; @@ -47,46 +47,46 @@ const namespace = "mysteryEncounters/dancingLessons"; // Fire form const BAILE_STYLE_BIOMES = [ - Biome.VOLCANO, - Biome.BEACH, - Biome.ISLAND, - Biome.WASTELAND, - Biome.MOUNTAIN, - Biome.BADLANDS, - Biome.DESERT, + BiomeId.VOLCANO, + BiomeId.BEACH, + BiomeId.ISLAND, + BiomeId.WASTELAND, + BiomeId.MOUNTAIN, + BiomeId.BADLANDS, + BiomeId.DESERT, ]; // Electric form const POM_POM_STYLE_BIOMES = [ - Biome.CONSTRUCTION_SITE, - Biome.POWER_PLANT, - Biome.FACTORY, - Biome.LABORATORY, - Biome.SLUM, - Biome.METROPOLIS, - Biome.DOJO, + BiomeId.CONSTRUCTION_SITE, + BiomeId.POWER_PLANT, + BiomeId.FACTORY, + BiomeId.LABORATORY, + BiomeId.SLUM, + BiomeId.METROPOLIS, + BiomeId.DOJO, ]; // Psychic form const PAU_STYLE_BIOMES = [ - Biome.JUNGLE, - Biome.FAIRY_CAVE, - Biome.MEADOW, - Biome.PLAINS, - Biome.GRASS, - Biome.TALL_GRASS, - Biome.FOREST, + BiomeId.JUNGLE, + BiomeId.FAIRY_CAVE, + BiomeId.MEADOW, + BiomeId.PLAINS, + BiomeId.GRASS, + BiomeId.TALL_GRASS, + BiomeId.FOREST, ]; // Ghost form const SENSU_STYLE_BIOMES = [ - Biome.RUINS, - Biome.SWAMP, - Biome.CAVE, - Biome.ABYSS, - Biome.GRAVEYARD, - Biome.LAKE, - Biome.TEMPLE, + BiomeId.RUINS, + BiomeId.SWAMP, + BiomeId.CAVE, + BiomeId.ABYSS, + BiomeId.GRAVEYARD, + BiomeId.LAKE, + BiomeId.TEMPLE, ]; /** @@ -127,14 +127,14 @@ export const DancingLessonsEncounter: MysteryEncounter = MysteryEncounterBuilder .withOnInit(() => { const encounter = globalScene.currentBattle.mysteryEncounter!; - const species = getPokemonSpecies(Species.ORICORIO); + const species = getPokemonSpecies(SpeciesId.ORICORIO); const level = getEncounterPokemonLevelForWave(STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER); const enemyPokemon = new EnemyPokemon(species, level, TrainerSlot.NONE, false); - if (!enemyPokemon.moveset.some(m => m && m.getMove().id === Moves.REVELATION_DANCE)) { + if (!enemyPokemon.moveset.some(m => m && m.getMove().id === MoveId.REVELATION_DANCE)) { if (enemyPokemon.moveset.length < 4) { - enemyPokemon.moveset.push(new PokemonMove(Moves.REVELATION_DANCE)); + enemyPokemon.moveset.push(new PokemonMove(MoveId.REVELATION_DANCE)); } else { - enemyPokemon.moveset[0] = new PokemonMove(Moves.REVELATION_DANCE); + enemyPokemon.moveset[0] = new PokemonMove(MoveId.REVELATION_DANCE); } } @@ -193,7 +193,7 @@ export const DancingLessonsEncounter: MysteryEncounter = MysteryEncounterBuilder oricorioData, }; - encounter.setDialogueToken("oricorioName", getPokemonSpecies(Species.ORICORIO).getName()); + encounter.setDialogueToken("oricorioName", getPokemonSpecies(SpeciesId.ORICORIO).getName()); return true; }) @@ -215,7 +215,7 @@ export const DancingLessonsEncounter: MysteryEncounter = MysteryEncounterBuilder encounter.startOfBattleEffects.push({ sourceBattlerIndex: BattlerIndex.ENEMY, targets: [BattlerIndex.PLAYER], - move: new PokemonMove(Moves.REVELATION_DANCE), + move: new PokemonMove(MoveId.REVELATION_DANCE), ignorePp: true, }); @@ -246,7 +246,7 @@ export const DancingLessonsEncounter: MysteryEncounter = MysteryEncounterBuilder const onPokemonSelected = (pokemon: PlayerPokemon) => { encounter.setDialogueToken("selectedPokemon", pokemon.getNameToRender()); globalScene.unshiftPhase( - new LearnMovePhase(globalScene.getPlayerParty().indexOf(pokemon), Moves.REVELATION_DANCE), + new LearnMovePhase(globalScene.getPlayerParty().indexOf(pokemon), MoveId.REVELATION_DANCE), ); // Play animation again to "learn" the dance diff --git a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts index e746b13c6a5..c54cb232087 100644 --- a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts +++ b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts @@ -1,7 +1,7 @@ import type { PokemonType } from "#enums/pokemon-type"; import { isNullOrUndefined, randSeedInt } from "#app/utils/common"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { globalScene } from "#app/global-scene"; import { modifierTypes } from "#app/modifier/modifier-type"; import { getPokemonSpecies } from "#app/data/pokemon-species"; @@ -27,68 +27,68 @@ const namespace = "mysteryEncounters/darkDeal"; /** Exclude Ultra Beasts (inludes Cosmog/Solgaleo/Lunala/Necrozma), Paradox (includes Miraidon/Koraidon), Eternatus, and Mythicals */ const excludedBosses = [ - Species.NECROZMA, - Species.COSMOG, - Species.COSMOEM, - Species.SOLGALEO, - Species.LUNALA, - Species.ETERNATUS, - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.ROARING_MOON, - Species.KORAIDON, - Species.WALKING_WAKE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.IRON_VALIANT, - Species.MIRAIDON, - Species.IRON_LEAVES, - Species.IRON_BOULDER, - Species.IRON_CROWN, - Species.MEW, - Species.CELEBI, - Species.DEOXYS, - Species.JIRACHI, - Species.DARKRAI, - Species.PHIONE, - Species.MANAPHY, - Species.ARCEUS, - Species.SHAYMIN, - Species.VICTINI, - Species.MELOETTA, - Species.KELDEO, - Species.GENESECT, - Species.DIANCIE, - Species.HOOPA, - Species.VOLCANION, - Species.MAGEARNA, - Species.MARSHADOW, - Species.ZERAORA, - Species.ZARUDE, - Species.MELTAN, - Species.MELMETAL, - Species.PECHARUNT, + SpeciesId.NECROZMA, + SpeciesId.COSMOG, + SpeciesId.COSMOEM, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.ETERNATUS, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.ROARING_MOON, + SpeciesId.KORAIDON, + SpeciesId.WALKING_WAKE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.IRON_VALIANT, + SpeciesId.MIRAIDON, + SpeciesId.IRON_LEAVES, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, + SpeciesId.MEW, + SpeciesId.CELEBI, + SpeciesId.DEOXYS, + SpeciesId.JIRACHI, + SpeciesId.DARKRAI, + SpeciesId.PHIONE, + SpeciesId.MANAPHY, + SpeciesId.ARCEUS, + SpeciesId.SHAYMIN, + SpeciesId.VICTINI, + SpeciesId.MELOETTA, + SpeciesId.KELDEO, + SpeciesId.GENESECT, + SpeciesId.DIANCIE, + SpeciesId.HOOPA, + SpeciesId.VOLCANION, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.ZERAORA, + SpeciesId.ZARUDE, + SpeciesId.MELTAN, + SpeciesId.MELMETAL, + SpeciesId.PECHARUNT, ]; /** diff --git a/src/data/mystery-encounters/encounters/delibirdy-encounter.ts b/src/data/mystery-encounters/encounters/delibirdy-encounter.ts index 7040bb47d19..8d3d30bcd66 100644 --- a/src/data/mystery-encounters/encounters/delibirdy-encounter.ts +++ b/src/data/mystery-encounters/encounters/delibirdy-encounter.ts @@ -36,7 +36,7 @@ import { randSeedItem } from "#app/utils/common"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { timedEventManager } from "#app/global-event-manager"; /** the i18n namespace for this encounter */ @@ -95,7 +95,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with { spriteKey: "", fileRoot: "", - species: Species.DELIBIRD, + species: SpeciesId.DELIBIRD, hasShadow: true, repeat: true, startFrame: 38, @@ -104,7 +104,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with { spriteKey: "", fileRoot: "", - species: Species.DELIBIRD, + species: SpeciesId.DELIBIRD, hasShadow: true, repeat: true, scale: 1.06, @@ -112,7 +112,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with { spriteKey: "", fileRoot: "", - species: Species.DELIBIRD, + species: SpeciesId.DELIBIRD, hasShadow: true, repeat: true, startFrame: 65, @@ -137,7 +137,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with ]) .withOnInit(() => { const encounter = globalScene.currentBattle.mysteryEncounter!; - encounter.setDialogueToken("delibirdName", getPokemonSpecies(Species.DELIBIRD).getName()); + encounter.setDialogueToken("delibirdName", getPokemonSpecies(SpeciesId.DELIBIRD).getName()); globalScene.loadBgm("mystery_encounter_delibirdy", "mystery_encounter_delibirdy.mp3"); return true; diff --git a/src/data/mystery-encounters/encounters/department-store-sale-encounter.ts b/src/data/mystery-encounters/encounters/department-store-sale-encounter.ts index 39341bef2d5..2b6ac9b7cf3 100644 --- a/src/data/mystery-encounters/encounters/department-store-sale-encounter.ts +++ b/src/data/mystery-encounters/encounters/department-store-sale-encounter.ts @@ -6,7 +6,7 @@ import type { ModifierTypeFunc } from "#app/modifier/modifier-type"; import { modifierTypes } from "#app/modifier/modifier-type"; import { randSeedInt } from "#app/utils/common"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; @@ -35,7 +35,7 @@ export const DepartmentStoreSaleEncounter: MysteryEncounter = MysteryEncounterBu { spriteKey: "", fileRoot: "", - species: Species.FURFROU, + species: SpeciesId.FURFROU, hasShadow: true, repeat: true, x: 30, diff --git a/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts b/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts index 0364b98abe2..872e6300a29 100644 --- a/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts +++ b/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts @@ -20,14 +20,14 @@ import { CombinationPokemonRequirement, TypeRequirement, } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { Gender } from "#app/data/gender"; import { PokemonType } from "#enums/pokemon-type"; import { BattlerIndex } from "#app/battle"; import type Pokemon from "#app/field/pokemon"; import { PokemonMove } from "#app/field/pokemon"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { EncounterBattleAnim } from "#app/data/battle-anims"; import { WeatherType } from "#enums/weather-type"; import { isNullOrUndefined, randSeedInt } from "#app/utils/common"; @@ -42,7 +42,7 @@ import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { EncounterAnim } from "#enums/encounter-anims"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; @@ -83,7 +83,7 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w const encounter = globalScene.currentBattle.mysteryEncounter!; // Calculate boss mons - const volcaronaSpecies = getPokemonSpecies(Species.VOLCARONA); + const volcaronaSpecies = getPokemonSpecies(SpeciesId.VOLCARONA); const config: EnemyPartyConfig = { pokemonConfigs: [ { @@ -119,7 +119,7 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w { spriteKey: "", fileRoot: "", - species: Species.VOLCARONA, + species: SpeciesId.VOLCARONA, repeat: true, hidden: true, hasShadow: true, @@ -129,7 +129,7 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w { spriteKey: "", fileRoot: "", - species: Species.VOLCARONA, + species: SpeciesId.VOLCARONA, repeat: true, hidden: true, hasShadow: true, @@ -138,12 +138,12 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w ]; // Load animations/sfx for Volcarona moves - loadCustomMovesForEncounter([Moves.FIRE_SPIN, Moves.QUIVER_DANCE]); + loadCustomMovesForEncounter([MoveId.FIRE_SPIN, MoveId.QUIVER_DANCE]); const pokemon = globalScene.getEnemyPokemon(); globalScene.arena.trySetWeather(WeatherType.SUNNY, pokemon); - encounter.setDialogueToken("volcaronaName", getPokemonSpecies(Species.VOLCARONA).getName()); + encounter.setDialogueToken("volcaronaName", getPokemonSpecies(SpeciesId.VOLCARONA).getName()); return true; }) @@ -193,13 +193,13 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w { sourceBattlerIndex: BattlerIndex.ENEMY, targets: [BattlerIndex.PLAYER], - move: new PokemonMove(Moves.FIRE_SPIN), + move: new PokemonMove(MoveId.FIRE_SPIN), ignorePp: true, }, { sourceBattlerIndex: BattlerIndex.ENEMY_2, targets: [BattlerIndex.PLAYER_2], - move: new PokemonMove(Moves.FIRE_SPIN), + move: new PokemonMove(MoveId.FIRE_SPIN), ignorePp: true, }, ); @@ -239,11 +239,11 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w if (chosenPokemon.trySetStatus(StatusEffect.BURN)) { // Burn applied encounter.setDialogueToken("burnedPokemon", chosenPokemon.getNameToRender()); - encounter.setDialogueToken("abilityName", new Ability(Abilities.HEATPROOF, 3).name); + encounter.setDialogueToken("abilityName", new Ability(AbilityId.HEATPROOF, 3).name); queueEncounterMessage(`${namespace}:option.2.target_burned`); // Also permanently change the burned Pokemon's ability to Heatproof - applyAbilityOverrideToPokemon(chosenPokemon, Abilities.HEATPROOF); + applyAbilityOverrideToPokemon(chosenPokemon, AbilityId.HEATPROOF); } } @@ -283,7 +283,7 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w const primary = encounter.options[2].primaryPokemon!; - setEncounterExp([primary.id], getPokemonSpecies(Species.VOLCARONA).baseExp * 2); + setEncounterExp([primary.id], getPokemonSpecies(SpeciesId.VOLCARONA).baseExp * 2); leaveEncounterWithoutBattle(); }) .build(), diff --git a/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts b/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts index 2d0828b8c0c..7694f62eac4 100644 --- a/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts +++ b/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts @@ -19,7 +19,7 @@ import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import i18next from "i18next"; import { getPokemonNameWithAffix } from "#app/messages"; import { PlayerGender } from "#enums/player-gender"; @@ -91,7 +91,7 @@ export const FunAndGamesEncounter: MysteryEncounter = MysteryEncounterBuilder.wi .withOnInit(() => { const encounter = globalScene.currentBattle.mysteryEncounter!; globalScene.loadBgm("mystery_encounter_fun_and_games", "mystery_encounter_fun_and_games.mp3"); - encounter.setDialogueToken("wobbuffetName", getPokemonSpecies(Species.WOBBUFFET).getName()); + encounter.setDialogueToken("wobbuffetName", getPokemonSpecies(SpeciesId.WOBBUFFET).getName()); return true; }) .withOnVisualsStart(() => { @@ -214,7 +214,7 @@ async function summonPlayerPokemon() { }); // Also loads Wobbuffet data (cannot be shiny) - const enemySpecies = getPokemonSpecies(Species.WOBBUFFET); + const enemySpecies = getPokemonSpecies(SpeciesId.WOBBUFFET); globalScene.currentBattle.enemyParty = []; const wobbuffet = globalScene.addEnemyPokemon( enemySpecies, diff --git a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts index bb41bc7883c..6ecce46ae24 100644 --- a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts +++ b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts @@ -17,7 +17,7 @@ import { globalScene } from "#app/global-scene"; import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import type PokemonSpecies from "#app/data/pokemon-species"; import { allSpecies, getPokemonSpecies } from "#app/data/pokemon-species"; import { getTypeRgb } from "#app/data/type"; @@ -64,39 +64,39 @@ const WONDER_TRADE_SHINY_CHANCE = 512; const MAX_WONDER_TRADE_SHINY_CHANCE = 4096; const LEGENDARY_TRADE_POOLS = { - 1: [Species.RATTATA, Species.PIDGEY, Species.WEEDLE], - 2: [Species.SENTRET, Species.HOOTHOOT, Species.LEDYBA], - 3: [Species.POOCHYENA, Species.ZIGZAGOON, Species.TAILLOW], - 4: [Species.BIDOOF, Species.STARLY, Species.KRICKETOT], - 5: [Species.PATRAT, Species.PURRLOIN, Species.PIDOVE], - 6: [Species.BUNNELBY, Species.LITLEO, Species.SCATTERBUG], - 7: [Species.PIKIPEK, Species.YUNGOOS, Species.ROCKRUFF], - 8: [Species.SKWOVET, Species.WOOLOO, Species.ROOKIDEE], - 9: [Species.LECHONK, Species.FIDOUGH, Species.TAROUNTULA], + 1: [SpeciesId.RATTATA, SpeciesId.PIDGEY, SpeciesId.WEEDLE], + 2: [SpeciesId.SENTRET, SpeciesId.HOOTHOOT, SpeciesId.LEDYBA], + 3: [SpeciesId.POOCHYENA, SpeciesId.ZIGZAGOON, SpeciesId.TAILLOW], + 4: [SpeciesId.BIDOOF, SpeciesId.STARLY, SpeciesId.KRICKETOT], + 5: [SpeciesId.PATRAT, SpeciesId.PURRLOIN, SpeciesId.PIDOVE], + 6: [SpeciesId.BUNNELBY, SpeciesId.LITLEO, SpeciesId.SCATTERBUG], + 7: [SpeciesId.PIKIPEK, SpeciesId.YUNGOOS, SpeciesId.ROCKRUFF], + 8: [SpeciesId.SKWOVET, SpeciesId.WOOLOO, SpeciesId.ROOKIDEE], + 9: [SpeciesId.LECHONK, SpeciesId.FIDOUGH, SpeciesId.TAROUNTULA], }; /** Exclude Paradox mons as they aren't considered legendary/mythical */ const EXCLUDED_TRADE_SPECIES = [ - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.ROARING_MOON, - Species.WALKING_WAKE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.IRON_VALIANT, - Species.IRON_LEAVES, - Species.IRON_BOULDER, - Species.IRON_CROWN, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.ROARING_MOON, + SpeciesId.WALKING_WAKE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_LEAVES, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, ]; /** diff --git a/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts b/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts index 6d8a1fc8c6b..009639291de 100644 --- a/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts +++ b/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts @@ -1,6 +1,6 @@ import { getPokemonSpecies } from "#app/data/pokemon-species"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { globalScene } from "#app/global-scene"; import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; @@ -13,8 +13,8 @@ import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { PokemonMove } from "#app/field/pokemon"; -const OPTION_1_REQUIRED_MOVE = Moves.SURF; -const OPTION_2_REQUIRED_MOVE = Moves.FLY; +const OPTION_1_REQUIRED_MOVE = MoveId.SURF; +const OPTION_2_REQUIRED_MOVE = MoveId.FLY; /** * Damage percentage taken when wandering aimlessly. * Can be a number between `0` - `100`. @@ -129,7 +129,7 @@ export const LostAtSeaEncounter: MysteryEncounter = MysteryEncounterBuilder.with * Generic handler for using a guiding pokemon to guide you back. */ function handlePokemonGuidingYouPhase() { - const laprasSpecies = getPokemonSpecies(Species.LAPRAS); + const laprasSpecies = getPokemonSpecies(SpeciesId.LAPRAS); const { mysteryEncounter } = globalScene.currentBattle; if (mysteryEncounter?.selectedOption?.primaryPokemon?.id) { diff --git a/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts b/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts index e6c11378163..9f699f7d045 100644 --- a/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts +++ b/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts @@ -19,11 +19,11 @@ import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { ModifierTier } from "#app/modifier/modifier-tier"; import { GameOverPhase } from "#app/phases/game-over-phase"; import { randSeedInt } from "#app/utils/common"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; /** i18n namespace for encounter */ const namespace = "mysteryEncounters/mysteriousChest"; @@ -86,17 +86,17 @@ export const MysteriousChestEncounter: MysteryEncounter = MysteryEncounterBuilde disableSwitch: true, pokemonConfigs: [ { - species: getPokemonSpecies(Species.GIMMIGHOUL), + species: getPokemonSpecies(SpeciesId.GIMMIGHOUL), formIndex: 0, isBoss: true, - moveSet: [Moves.NASTY_PLOT, Moves.SHADOW_BALL, Moves.POWER_GEM, Moves.THIEF], + moveSet: [MoveId.NASTY_PLOT, MoveId.SHADOW_BALL, MoveId.POWER_GEM, MoveId.THIEF], }, ], }; encounter.enemyPartyConfigs = [config]; - encounter.setDialogueToken("gimmighoulName", getPokemonSpecies(Species.GIMMIGHOUL).getName()); + encounter.setDialogueToken("gimmighoulName", getPokemonSpecies(SpeciesId.GIMMIGHOUL).getName()); encounter.setDialogueToken("trapPercent", TRAP_PERCENT.toString()); encounter.setDialogueToken("commonPercent", COMMON_REWARDS_PERCENT.toString()); encounter.setDialogueToken("ultraPercent", ULTRA_REWARDS_PERCENT.toString()); diff --git a/src/data/mystery-encounters/encounters/shady-vitamin-dealer-encounter.ts b/src/data/mystery-encounters/encounters/shady-vitamin-dealer-encounter.ts index daf4d860cdf..1afc67e1d12 100644 --- a/src/data/mystery-encounters/encounters/shady-vitamin-dealer-encounter.ts +++ b/src/data/mystery-encounters/encounters/shady-vitamin-dealer-encounter.ts @@ -10,7 +10,7 @@ import type Pokemon from "#app/field/pokemon"; import { modifierTypes } from "#app/modifier/modifier-type"; import { randSeedInt } from "#app/utils/common"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { globalScene } from "#app/global-scene"; import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; @@ -49,7 +49,7 @@ export const ShadyVitaminDealerEncounter: MysteryEncounter = MysteryEncounterBui .withPrimaryPokemonHealthRatioRequirement([0.51, 1]) // At least 1 Pokemon must have above half HP .withIntroSpriteConfigs([ { - spriteKey: Species.KROOKODILE.toString(), + spriteKey: SpeciesId.KROOKODILE.toString(), fileRoot: "pokemon", hasShadow: true, repeat: true, diff --git a/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts b/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts index 2654f6b18d8..196d27c3f30 100644 --- a/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts +++ b/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts @@ -2,7 +2,7 @@ import { STEALING_MOVES } from "#app/data/mystery-encounters/requirements/requir import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; import { modifierTypes } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { globalScene } from "#app/global-scene"; import { StatusEffect } from "#enums/status-effect"; import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; @@ -20,7 +20,7 @@ import { } from "../utils/encounter-phase-utils"; import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { Nature } from "#enums/nature"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { BattlerIndex } from "#app/battle"; import { AiType, PokemonMove } from "#app/field/pokemon"; import { getPokemonSpecies } from "#app/data/pokemon-species"; @@ -50,7 +50,7 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = MysteryEncounterBuil .withFleeAllowed(false) .withIntroSpriteConfigs([ { - spriteKey: Species.SNORLAX.toString(), + spriteKey: SpeciesId.SNORLAX.toString(), fileRoot: "pokemon", hasShadow: true, tint: 0.25, @@ -69,14 +69,14 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = MysteryEncounterBuil console.log(encounter); // Calculate boss mon - const bossSpecies = getPokemonSpecies(Species.SNORLAX); + const bossSpecies = getPokemonSpecies(SpeciesId.SNORLAX); const pokemonConfig: EnemyPokemonConfig = { species: bossSpecies, isBoss: true, shiny: false, // Shiny lock because shiny is rolled only if the battle option is picked status: [StatusEffect.SLEEP, 6], // Extra turns on timer for Snorlax's start of fight moves nature: Nature.DOCILE, - moveSet: [Moves.BODY_SLAM, Moves.CRUNCH, Moves.SLEEP_TALK, Moves.REST], + moveSet: [MoveId.BODY_SLAM, MoveId.CRUNCH, MoveId.SLEEP_TALK, MoveId.REST], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.BERRY, [BerryType.SITRUS]) as PokemonHeldItemModifierType, @@ -106,9 +106,9 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = MysteryEncounterBuil encounter.enemyPartyConfigs = [config]; // Load animations/sfx for Snorlax fight start moves - loadCustomMovesForEncounter([Moves.SNORE]); + loadCustomMovesForEncounter([MoveId.SNORE]); - encounter.setDialogueToken("snorlaxName", getPokemonSpecies(Species.SNORLAX).getName()); + encounter.setDialogueToken("snorlaxName", getPokemonSpecies(SpeciesId.SNORLAX).getName()); return true; }) @@ -133,14 +133,12 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = MysteryEncounterBuil guaranteedModifierTypeFuncs: [modifierTypes.LEFTOVERS], fillRemaining: true, }); - encounter.startOfBattleEffects.push( - { - sourceBattlerIndex: BattlerIndex.ENEMY, - targets: [BattlerIndex.PLAYER], - move: new PokemonMove(Moves.SNORE), - ignorePp: true, - }, - ); + encounter.startOfBattleEffects.push({ + sourceBattlerIndex: BattlerIndex.ENEMY, + targets: [BattlerIndex.PLAYER], + move: new PokemonMove(MoveId.SNORE), + ignorePp: true, + }); await initBattleWithEnemyConfig(encounter.enemyPartyConfigs[0]); }, ) @@ -183,7 +181,7 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = MysteryEncounterBuil fillRemaining: false, }); // Snorlax exp to Pokemon that did the stealing - setEncounterExp(instance.primaryPokemon!.id, getPokemonSpecies(Species.SNORLAX).baseExp); + setEncounterExp(instance.primaryPokemon!.id, getPokemonSpecies(SpeciesId.SNORLAX).baseExp); leaveEncounterWithoutBattle(); }) .build(), diff --git a/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts b/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts index 28c7fe4644f..f6bf5575120 100644 --- a/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts +++ b/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts @@ -20,7 +20,7 @@ import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-enco import PokemonData from "#app/system/pokemon-data"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { getBiomeKey } from "#app/field/arena"; import { PokemonType } from "#enums/pokemon-type"; import { getPartyLuckValue, modifierTypes } from "#app/modifier/modifier-type"; @@ -39,7 +39,14 @@ import { const namespace = "mysteryEncounters/teleportingHijinks"; const MONEY_COST_MULTIPLIER = 1.75; -const BIOME_CANDIDATES = [Biome.SPACE, Biome.FAIRY_CAVE, Biome.LABORATORY, Biome.ISLAND, Biome.WASTELAND, Biome.DOJO]; +const BIOME_CANDIDATES = [ + BiomeId.SPACE, + BiomeId.FAIRY_CAVE, + BiomeId.LABORATORY, + BiomeId.ISLAND, + BiomeId.WASTELAND, + BiomeId.DOJO, +]; const MACHINE_INTERFACING_TYPES = [PokemonType.ELECTRIC, PokemonType.STEEL]; /** @@ -229,7 +236,7 @@ async function doBiomeTransitionDialogueAndBattleInit() { return config; } -async function animateBiomeChange(nextBiome: Biome) { +async function animateBiomeChange(nextBiome: BiomeId) { return new Promise(resolve => { globalScene.tweens.add({ targets: [globalScene.arenaEnemy, globalScene.lastEnemyTrainer], diff --git a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts index 74cda6fd205..5c3a4dd1a81 100644 --- a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts @@ -11,14 +11,14 @@ import { randSeedShuffle } from "#app/utils/common"; import type MysteryEncounter from "../mystery-encounter"; import { MysteryEncounterBuilder } from "../mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { TrainerType } from "#enums/trainer-type"; import i18next from "i18next"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; import { Nature } from "#enums/nature"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import type { PlayerPokemon } from "#app/field/pokemon"; import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import type { IEggOptions } from "#app/data/egg"; @@ -42,75 +42,75 @@ const FINAL_STAGE_EVOLUTION_WAVE = 75; const FRIENDSHIP_ADDED = 20; class BreederSpeciesEvolution { - species: Species; + species: SpeciesId; evolution: number; - constructor(species: Species, evolution: number) { + constructor(species: SpeciesId, evolution: number) { this.species = species; this.evolution = evolution; } } -const POOL_1_POKEMON: (Species | BreederSpeciesEvolution)[][] = [ - [Species.MUNCHLAX, new BreederSpeciesEvolution(Species.SNORLAX, SECOND_STAGE_EVOLUTION_WAVE)], +const POOL_1_POKEMON: (SpeciesId | BreederSpeciesEvolution)[][] = [ + [SpeciesId.MUNCHLAX, new BreederSpeciesEvolution(SpeciesId.SNORLAX, SECOND_STAGE_EVOLUTION_WAVE)], [ - Species.HAPPINY, - new BreederSpeciesEvolution(Species.CHANSEY, FIRST_STAGE_EVOLUTION_WAVE), - new BreederSpeciesEvolution(Species.BLISSEY, FINAL_STAGE_EVOLUTION_WAVE), + SpeciesId.HAPPINY, + new BreederSpeciesEvolution(SpeciesId.CHANSEY, FIRST_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.BLISSEY, FINAL_STAGE_EVOLUTION_WAVE), ], [ - Species.MAGBY, - new BreederSpeciesEvolution(Species.MAGMAR, FIRST_STAGE_EVOLUTION_WAVE), - new BreederSpeciesEvolution(Species.MAGMORTAR, FINAL_STAGE_EVOLUTION_WAVE), + SpeciesId.MAGBY, + new BreederSpeciesEvolution(SpeciesId.MAGMAR, FIRST_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.MAGMORTAR, FINAL_STAGE_EVOLUTION_WAVE), ], [ - Species.ELEKID, - new BreederSpeciesEvolution(Species.ELECTABUZZ, FIRST_STAGE_EVOLUTION_WAVE), - new BreederSpeciesEvolution(Species.ELECTIVIRE, FINAL_STAGE_EVOLUTION_WAVE), + SpeciesId.ELEKID, + new BreederSpeciesEvolution(SpeciesId.ELECTABUZZ, FIRST_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.ELECTIVIRE, FINAL_STAGE_EVOLUTION_WAVE), ], - [Species.RIOLU, new BreederSpeciesEvolution(Species.LUCARIO, SECOND_STAGE_EVOLUTION_WAVE)], + [SpeciesId.RIOLU, new BreederSpeciesEvolution(SpeciesId.LUCARIO, SECOND_STAGE_EVOLUTION_WAVE)], [ - Species.BUDEW, - new BreederSpeciesEvolution(Species.ROSELIA, FIRST_STAGE_EVOLUTION_WAVE), - new BreederSpeciesEvolution(Species.ROSERADE, FINAL_STAGE_EVOLUTION_WAVE), + SpeciesId.BUDEW, + new BreederSpeciesEvolution(SpeciesId.ROSELIA, FIRST_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.ROSERADE, FINAL_STAGE_EVOLUTION_WAVE), ], - [Species.TOXEL, new BreederSpeciesEvolution(Species.TOXTRICITY, SECOND_STAGE_EVOLUTION_WAVE)], + [SpeciesId.TOXEL, new BreederSpeciesEvolution(SpeciesId.TOXTRICITY, SECOND_STAGE_EVOLUTION_WAVE)], [ - Species.MIME_JR, - new BreederSpeciesEvolution(Species.GALAR_MR_MIME, FIRST_STAGE_EVOLUTION_WAVE), - new BreederSpeciesEvolution(Species.MR_RIME, FINAL_STAGE_EVOLUTION_WAVE), + SpeciesId.MIME_JR, + new BreederSpeciesEvolution(SpeciesId.GALAR_MR_MIME, FIRST_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.MR_RIME, FINAL_STAGE_EVOLUTION_WAVE), ], ]; -const POOL_2_POKEMON: (Species | BreederSpeciesEvolution)[][] = [ +const POOL_2_POKEMON: (SpeciesId | BreederSpeciesEvolution)[][] = [ [ - Species.PICHU, - new BreederSpeciesEvolution(Species.PIKACHU, FIRST_STAGE_EVOLUTION_WAVE), - new BreederSpeciesEvolution(Species.RAICHU, FINAL_STAGE_EVOLUTION_WAVE), + SpeciesId.PICHU, + new BreederSpeciesEvolution(SpeciesId.PIKACHU, FIRST_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.RAICHU, FINAL_STAGE_EVOLUTION_WAVE), ], [ - Species.PICHU, - new BreederSpeciesEvolution(Species.PIKACHU, FIRST_STAGE_EVOLUTION_WAVE), - new BreederSpeciesEvolution(Species.ALOLA_RAICHU, FINAL_STAGE_EVOLUTION_WAVE), + SpeciesId.PICHU, + new BreederSpeciesEvolution(SpeciesId.PIKACHU, FIRST_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.ALOLA_RAICHU, FINAL_STAGE_EVOLUTION_WAVE), ], - [Species.SMOOCHUM, new BreederSpeciesEvolution(Species.JYNX, SECOND_STAGE_EVOLUTION_WAVE)], - [Species.TYROGUE, new BreederSpeciesEvolution(Species.HITMONLEE, SECOND_STAGE_EVOLUTION_WAVE)], - [Species.TYROGUE, new BreederSpeciesEvolution(Species.HITMONCHAN, SECOND_STAGE_EVOLUTION_WAVE)], - [Species.TYROGUE, new BreederSpeciesEvolution(Species.HITMONTOP, SECOND_STAGE_EVOLUTION_WAVE)], + [SpeciesId.SMOOCHUM, new BreederSpeciesEvolution(SpeciesId.JYNX, SECOND_STAGE_EVOLUTION_WAVE)], + [SpeciesId.TYROGUE, new BreederSpeciesEvolution(SpeciesId.HITMONLEE, SECOND_STAGE_EVOLUTION_WAVE)], + [SpeciesId.TYROGUE, new BreederSpeciesEvolution(SpeciesId.HITMONCHAN, SECOND_STAGE_EVOLUTION_WAVE)], + [SpeciesId.TYROGUE, new BreederSpeciesEvolution(SpeciesId.HITMONTOP, SECOND_STAGE_EVOLUTION_WAVE)], [ - Species.IGGLYBUFF, - new BreederSpeciesEvolution(Species.JIGGLYPUFF, FIRST_STAGE_EVOLUTION_WAVE), - new BreederSpeciesEvolution(Species.WIGGLYTUFF, FINAL_STAGE_EVOLUTION_WAVE), + SpeciesId.IGGLYBUFF, + new BreederSpeciesEvolution(SpeciesId.JIGGLYPUFF, FIRST_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.WIGGLYTUFF, FINAL_STAGE_EVOLUTION_WAVE), ], [ - Species.AZURILL, - new BreederSpeciesEvolution(Species.MARILL, FIRST_STAGE_EVOLUTION_WAVE), - new BreederSpeciesEvolution(Species.AZUMARILL, FINAL_STAGE_EVOLUTION_WAVE), + SpeciesId.AZURILL, + new BreederSpeciesEvolution(SpeciesId.MARILL, FIRST_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.AZUMARILL, FINAL_STAGE_EVOLUTION_WAVE), ], - [Species.WYNAUT, new BreederSpeciesEvolution(Species.WOBBUFFET, SECOND_STAGE_EVOLUTION_WAVE)], - [Species.CHINGLING, new BreederSpeciesEvolution(Species.CHIMECHO, SECOND_STAGE_EVOLUTION_WAVE)], - [Species.BONSLY, new BreederSpeciesEvolution(Species.SUDOWOODO, SECOND_STAGE_EVOLUTION_WAVE)], - [Species.MANTYKE, new BreederSpeciesEvolution(Species.MANTINE, SECOND_STAGE_EVOLUTION_WAVE)], + [SpeciesId.WYNAUT, new BreederSpeciesEvolution(SpeciesId.WOBBUFFET, SECOND_STAGE_EVOLUTION_WAVE)], + [SpeciesId.CHINGLING, new BreederSpeciesEvolution(SpeciesId.CHIMECHO, SECOND_STAGE_EVOLUTION_WAVE)], + [SpeciesId.BONSLY, new BreederSpeciesEvolution(SpeciesId.SUDOWOODO, SECOND_STAGE_EVOLUTION_WAVE)], + [SpeciesId.MANTYKE, new BreederSpeciesEvolution(SpeciesId.MANTINE, SECOND_STAGE_EVOLUTION_WAVE)], ]; /** @@ -144,10 +144,10 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter = MysteryEncount const cleffaSpecies = waveIndex < FIRST_STAGE_EVOLUTION_WAVE - ? Species.CLEFFA + ? SpeciesId.CLEFFA : waveIndex < FINAL_STAGE_EVOLUTION_WAVE - ? Species.CLEFAIRY - : Species.CLEFABLE; + ? SpeciesId.CLEFAIRY + : SpeciesId.CLEFABLE; encounter.spriteConfigs = [ { spriteKey: cleffaSpecies.toString(), @@ -466,10 +466,10 @@ function getPartyConfig(): EnemyPartyConfig { // First mon is *always* this special cleffa const cleffaSpecies = waveIndex < FIRST_STAGE_EVOLUTION_WAVE - ? Species.CLEFFA + ? SpeciesId.CLEFFA : waveIndex < FINAL_STAGE_EVOLUTION_WAVE - ? Species.CLEFAIRY - : Species.CLEFABLE; + ? SpeciesId.CLEFAIRY + : SpeciesId.CLEFABLE; const baseConfig: EnemyPartyConfig = { trainerType: TrainerType.EXPERT_POKEMON_BREEDER, pokemonConfigs: [ @@ -482,14 +482,14 @@ function getPartyConfig(): EnemyPartyConfig { abilityIndex: 1, // Magic Guard shiny: false, nature: Nature.ADAMANT, - moveSet: [Moves.FIRE_PUNCH, Moves.ICE_PUNCH, Moves.THUNDER_PUNCH, Moves.METEOR_MASH], + moveSet: [MoveId.FIRE_PUNCH, MoveId.ICE_PUNCH, MoveId.THUNDER_PUNCH, MoveId.METEOR_MASH], ivs: [31, 31, 31, 31, 31, 31], tera: PokemonType.FAIRY, }, ], }; - if (globalScene.arena.biomeType === Biome.SPACE) { + if (globalScene.arena.biomeType === BiomeId.SPACE) { // All 3 members always Cleffa line, but different configs baseConfig.pokemonConfigs!.push( { @@ -502,7 +502,7 @@ function getPartyConfig(): EnemyPartyConfig { shiny: true, variant: 1, nature: Nature.MODEST, - moveSet: [Moves.MOONBLAST, Moves.MYSTICAL_FIRE, Moves.ICE_BEAM, Moves.THUNDERBOLT], + moveSet: [MoveId.MOONBLAST, MoveId.MYSTICAL_FIRE, MoveId.ICE_BEAM, MoveId.THUNDERBOLT], ivs: [31, 31, 31, 31, 31, 31], }, { @@ -515,7 +515,7 @@ function getPartyConfig(): EnemyPartyConfig { shiny: true, variant: 2, nature: Nature.BOLD, - moveSet: [Moves.TRI_ATTACK, Moves.STORED_POWER, Moves.TAKE_HEART, Moves.MOONLIGHT], + moveSet: [MoveId.TRI_ATTACK, MoveId.STORED_POWER, MoveId.TAKE_HEART, MoveId.MOONLIGHT], ivs: [31, 31, 31, 31, 31, 31], }, ); @@ -542,7 +542,7 @@ function getPartyConfig(): EnemyPartyConfig { return baseConfig; } -function getSpeciesFromPool(speciesPool: (Species | BreederSpeciesEvolution)[][], waveIndex: number): Species { +function getSpeciesFromPool(speciesPool: (SpeciesId | BreederSpeciesEvolution)[][], waveIndex: number): SpeciesId { const poolCopy = randSeedShuffle(speciesPool.slice(0)); const speciesEvolutions = poolCopy.pop()!.slice(0); let speciesObject = speciesEvolutions.pop()!; diff --git a/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts b/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts index 50b9c2da78c..0ad209ae4c6 100644 --- a/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts @@ -17,7 +17,7 @@ import { import type PokemonSpecies from "#app/data/pokemon-species"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { PokeballType } from "#enums/pokeball"; import type { EnemyPokemon } from "#app/field/pokemon"; import { PlayerPokemon } from "#app/field/pokemon"; @@ -27,7 +27,7 @@ import PokemonData from "#app/system/pokemon-data"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { NON_LEGEND_PARADOX_POKEMON, NON_LEGEND_ULTRA_BEASTS } from "#app/data/balance/special-species-groups"; import { timedEventManager } from "#app/global-event-manager"; @@ -81,7 +81,7 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = MysteryEncounterBui let tries = 0; // Reroll any species that don't have HAs - while ((isNullOrUndefined(species.abilityHidden) || species.abilityHidden === Abilities.NONE) && tries < 5) { + while ((isNullOrUndefined(species.abilityHidden) || species.abilityHidden === AbilityId.NONE) && tries < 5) { species = getSalesmanSpeciesOffer(); tries++; } @@ -110,15 +110,15 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = MysteryEncounterBui */ if ( r === 0 || - ((isNullOrUndefined(species.abilityHidden) || species.abilityHidden === Abilities.NONE) && + ((isNullOrUndefined(species.abilityHidden) || species.abilityHidden === AbilityId.NONE) && validEventEncounters.length === 0) ) { // If you roll 1%, give shiny Magikarp with random variant - species = getPokemonSpecies(Species.MAGIKARP); + species = getPokemonSpecies(SpeciesId.MAGIKARP); pokemon = new PlayerPokemon(species, 5, 2, undefined, undefined, true); } else if ( validEventEncounters.length > 0 && - (r <= EVENT_THRESHOLD || isNullOrUndefined(species.abilityHidden) || species.abilityHidden === Abilities.NONE) + (r <= EVENT_THRESHOLD || isNullOrUndefined(species.abilityHidden) || species.abilityHidden === AbilityId.NONE) ) { tries = 0; do { @@ -128,7 +128,7 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = MysteryEncounterBui pokemon = new PlayerPokemon( species, 5, - species.abilityHidden === Abilities.NONE ? undefined : 2, + species.abilityHidden === AbilityId.NONE ? undefined : 2, enc.formIndex, ); pokemon.trySetShinySeed(); @@ -151,7 +151,7 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = MysteryEncounterBui pokemon.trySetShinySeed(); } else { // If there's, and this would never happen, no eligible event encounters with a hidden ability, just do Magikarp - species = getPokemonSpecies(Species.MAGIKARP); + species = getPokemonSpecies(SpeciesId.MAGIKARP); pokemon = new PlayerPokemon(species, 5, 2, undefined, undefined, true); } } diff --git a/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts b/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts index 294f1a78b34..33f43617913 100644 --- a/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts @@ -14,13 +14,13 @@ import { globalScene } from "#app/global-scene"; import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { getPokemonSpecies } from "#app/data/pokemon-species"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { Nature } from "#enums/nature"; import type Pokemon from "#app/field/pokemon"; import { PokemonMove } from "#app/field/pokemon"; import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { modifyPlayerPokemonBST } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { BattlerIndex } from "#app/battle"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; @@ -64,7 +64,7 @@ export const TheStrongStuffEncounter: MysteryEncounter = MysteryEncounterBuilder disableAnimation: true, }, { - spriteKey: Species.SHUCKLE.toString(), + spriteKey: SpeciesId.SHUCKLE.toString(), fileRoot: "pokemon", hasShadow: true, repeat: true, @@ -88,13 +88,13 @@ export const TheStrongStuffEncounter: MysteryEncounter = MysteryEncounterBuilder disableSwitch: true, pokemonConfigs: [ { - species: getPokemonSpecies(Species.SHUCKLE), + species: getPokemonSpecies(SpeciesId.SHUCKLE), isBoss: true, bossSegments: 5, shiny: false, // Shiny lock because shiny is rolled only if the battle option is picked customPokemonData: new CustomPokemonData({ spriteScale: 1.25 }), nature: Nature.HARDY, - moveSet: [Moves.INFESTATION, Moves.SALT_CURE, Moves.GASTRO_ACID, Moves.HEAL_ORDER], + moveSet: [MoveId.INFESTATION, MoveId.SALT_CURE, MoveId.GASTRO_ACID, MoveId.HEAL_ORDER], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.BERRY, [BerryType.SITRUS]) as PokemonHeldItemModifierType, @@ -126,9 +126,9 @@ export const TheStrongStuffEncounter: MysteryEncounter = MysteryEncounterBuilder encounter.enemyPartyConfigs = [config]; - loadCustomMovesForEncounter([Moves.GASTRO_ACID, Moves.STEALTH_ROCK]); + loadCustomMovesForEncounter([MoveId.GASTRO_ACID, MoveId.STEALTH_ROCK]); - encounter.setDialogueToken("shuckleName", getPokemonSpecies(Species.SHUCKLE).getName()); + encounter.setDialogueToken("shuckleName", getPokemonSpecies(SpeciesId.SHUCKLE).getName()); return true; }) @@ -210,13 +210,13 @@ export const TheStrongStuffEncounter: MysteryEncounter = MysteryEncounterBuilder { sourceBattlerIndex: BattlerIndex.ENEMY, targets: [BattlerIndex.PLAYER], - move: new PokemonMove(Moves.GASTRO_ACID), + move: new PokemonMove(MoveId.GASTRO_ACID), ignorePp: true, }, { sourceBattlerIndex: BattlerIndex.ENEMY, targets: [BattlerIndex.PLAYER], - move: new PokemonMove(Moves.STEALTH_ROCK), + move: new PokemonMove(MoveId.STEALTH_ROCK), ignorePp: true, }, ); diff --git a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts index 3cbe42591d8..0776d89ed63 100644 --- a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts @@ -15,10 +15,10 @@ import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounte import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { TrainerType } from "#enums/trainer-type"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; import { getPokemonSpecies } from "#app/data/pokemon-species"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { Nature } from "#enums/nature"; import { PokemonType } from "#enums/pokemon-type"; import { BerryType } from "#enums/berry-type"; @@ -215,8 +215,8 @@ function endTrainerBattleAndShowDialogue(): Promise { // Only trigger form change when Eiscue is in Noice form // Hardcoded Eiscue for now in case it is fused with another pokemon if ( - pokemon.species.speciesId === Species.EISCUE && - pokemon.hasAbility(Abilities.ICE_FACE) && + pokemon.species.speciesId === SpeciesId.EISCUE && + pokemon.hasAbility(AbilityId.ICE_FACE) && pokemon.formIndex === 1 ) { globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger); @@ -256,11 +256,11 @@ function getVictorTrainerConfig(): EnemyPartyConfig { trainerType: TrainerType.VICTOR, pokemonConfigs: [ { - species: getPokemonSpecies(Species.SWELLOW), + species: getPokemonSpecies(SpeciesId.SWELLOW), isBoss: false, abilityIndex: 0, // Guts nature: Nature.ADAMANT, - moveSet: [Moves.FACADE, Moves.BRAVE_BIRD, Moves.PROTECT, Moves.QUICK_ATTACK], + moveSet: [MoveId.FACADE, MoveId.BRAVE_BIRD, MoveId.PROTECT, MoveId.QUICK_ATTACK], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.FLAME_ORB) as PokemonHeldItemModifierType, @@ -274,11 +274,11 @@ function getVictorTrainerConfig(): EnemyPartyConfig { ], }, { - species: getPokemonSpecies(Species.OBSTAGOON), + species: getPokemonSpecies(SpeciesId.OBSTAGOON), isBoss: false, abilityIndex: 1, // Guts nature: Nature.ADAMANT, - moveSet: [Moves.FACADE, Moves.OBSTRUCT, Moves.NIGHT_SLASH, Moves.FIRE_PUNCH], + moveSet: [MoveId.FACADE, MoveId.OBSTRUCT, MoveId.NIGHT_SLASH, MoveId.FIRE_PUNCH], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.FLAME_ORB) as PokemonHeldItemModifierType, @@ -300,11 +300,11 @@ function getVictoriaTrainerConfig(): EnemyPartyConfig { trainerType: TrainerType.VICTORIA, pokemonConfigs: [ { - species: getPokemonSpecies(Species.ROSERADE), + species: getPokemonSpecies(SpeciesId.ROSERADE), isBoss: false, abilityIndex: 0, // Natural Cure nature: Nature.CALM, - moveSet: [Moves.SYNTHESIS, Moves.SLUDGE_BOMB, Moves.GIGA_DRAIN, Moves.SLEEP_POWDER], + moveSet: [MoveId.SYNTHESIS, MoveId.SLUDGE_BOMB, MoveId.GIGA_DRAIN, MoveId.SLEEP_POWDER], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.SOUL_DEW) as PokemonHeldItemModifierType, @@ -318,11 +318,11 @@ function getVictoriaTrainerConfig(): EnemyPartyConfig { ], }, { - species: getPokemonSpecies(Species.GARDEVOIR), + species: getPokemonSpecies(SpeciesId.GARDEVOIR), isBoss: false, formIndex: 1, nature: Nature.TIMID, - moveSet: [Moves.PSYSHOCK, Moves.MOONBLAST, Moves.SHADOW_BALL, Moves.WILL_O_WISP], + moveSet: [MoveId.PSYSHOCK, MoveId.MOONBLAST, MoveId.SHADOW_BALL, MoveId.WILL_O_WISP], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, [ @@ -349,11 +349,11 @@ function getViviTrainerConfig(): EnemyPartyConfig { trainerType: TrainerType.VIVI, pokemonConfigs: [ { - species: getPokemonSpecies(Species.SEAKING), + species: getPokemonSpecies(SpeciesId.SEAKING), isBoss: false, abilityIndex: 3, // Lightning Rod nature: Nature.ADAMANT, - moveSet: [Moves.WATERFALL, Moves.MEGAHORN, Moves.KNOCK_OFF, Moves.REST], + moveSet: [MoveId.WATERFALL, MoveId.MEGAHORN, MoveId.KNOCK_OFF, MoveId.REST], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.BERRY, [BerryType.LUM]) as PokemonHeldItemModifierType, @@ -368,11 +368,11 @@ function getViviTrainerConfig(): EnemyPartyConfig { ], }, { - species: getPokemonSpecies(Species.BRELOOM), + species: getPokemonSpecies(SpeciesId.BRELOOM), isBoss: false, abilityIndex: 1, // Poison Heal nature: Nature.JOLLY, - moveSet: [Moves.SPORE, Moves.SWORDS_DANCE, Moves.SEED_BOMB, Moves.DRAIN_PUNCH], + moveSet: [MoveId.SPORE, MoveId.SWORDS_DANCE, MoveId.SEED_BOMB, MoveId.DRAIN_PUNCH], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.BASE_STAT_BOOSTER, [Stat.HP]) as PokemonHeldItemModifierType, @@ -386,11 +386,11 @@ function getViviTrainerConfig(): EnemyPartyConfig { ], }, { - species: getPokemonSpecies(Species.CAMERUPT), + species: getPokemonSpecies(SpeciesId.CAMERUPT), isBoss: false, formIndex: 1, nature: Nature.CALM, - moveSet: [Moves.EARTH_POWER, Moves.FIRE_BLAST, Moves.YAWN, Moves.PROTECT], + moveSet: [MoveId.EARTH_POWER, MoveId.FIRE_BLAST, MoveId.YAWN, MoveId.PROTECT], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.QUICK_CLAW) as PokemonHeldItemModifierType, @@ -408,11 +408,11 @@ function getVickyTrainerConfig(): EnemyPartyConfig { trainerType: TrainerType.VICKY, pokemonConfigs: [ { - species: getPokemonSpecies(Species.MEDICHAM), + species: getPokemonSpecies(SpeciesId.MEDICHAM), isBoss: false, formIndex: 1, nature: Nature.IMPISH, - moveSet: [Moves.AXE_KICK, Moves.ICE_PUNCH, Moves.ZEN_HEADBUTT, Moves.BULLET_PUNCH], + moveSet: [MoveId.AXE_KICK, MoveId.ICE_PUNCH, MoveId.ZEN_HEADBUTT, MoveId.BULLET_PUNCH], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.SHELL_BELL) as PokemonHeldItemModifierType, @@ -429,11 +429,11 @@ function getVitoTrainerConfig(): EnemyPartyConfig { trainerType: TrainerType.VITO, pokemonConfigs: [ { - species: getPokemonSpecies(Species.HISUI_ELECTRODE), + species: getPokemonSpecies(SpeciesId.HISUI_ELECTRODE), isBoss: false, abilityIndex: 0, // Soundproof nature: Nature.MODEST, - moveSet: [Moves.THUNDERBOLT, Moves.GIGA_DRAIN, Moves.FOUL_PLAY, Moves.THUNDER_WAVE], + moveSet: [MoveId.THUNDERBOLT, MoveId.GIGA_DRAIN, MoveId.FOUL_PLAY, MoveId.THUNDER_WAVE], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.BASE_STAT_BOOSTER, [Stat.SPD]) as PokemonHeldItemModifierType, @@ -443,11 +443,11 @@ function getVitoTrainerConfig(): EnemyPartyConfig { ], }, { - species: getPokemonSpecies(Species.SWALOT), + species: getPokemonSpecies(SpeciesId.SWALOT), isBoss: false, abilityIndex: 2, // Gluttony nature: Nature.QUIET, - moveSet: [Moves.SLUDGE_BOMB, Moves.GIGA_DRAIN, Moves.ICE_BEAM, Moves.EARTHQUAKE], + moveSet: [MoveId.SLUDGE_BOMB, MoveId.GIGA_DRAIN, MoveId.ICE_BEAM, MoveId.EARTHQUAKE], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.BERRY, [BerryType.SITRUS]) as PokemonHeldItemModifierType, @@ -496,11 +496,11 @@ function getVitoTrainerConfig(): EnemyPartyConfig { ], }, { - species: getPokemonSpecies(Species.DODRIO), + species: getPokemonSpecies(SpeciesId.DODRIO), isBoss: false, abilityIndex: 2, // Tangled Feet nature: Nature.JOLLY, - moveSet: [Moves.DRILL_PECK, Moves.QUICK_ATTACK, Moves.THRASH, Moves.KNOCK_OFF], + moveSet: [MoveId.DRILL_PECK, MoveId.QUICK_ATTACK, MoveId.THRASH, MoveId.KNOCK_OFF], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.KINGS_ROCK) as PokemonHeldItemModifierType, @@ -510,11 +510,11 @@ function getVitoTrainerConfig(): EnemyPartyConfig { ], }, { - species: getPokemonSpecies(Species.ALAKAZAM), + species: getPokemonSpecies(SpeciesId.ALAKAZAM), isBoss: false, formIndex: 1, nature: Nature.BOLD, - moveSet: [Moves.PSYCHIC, Moves.SHADOW_BALL, Moves.FOCUS_BLAST, Moves.THUNDERBOLT], + moveSet: [MoveId.PSYCHIC, MoveId.SHADOW_BALL, MoveId.FOCUS_BLAST, MoveId.THUNDERBOLT], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.WIDE_LENS) as PokemonHeldItemModifierType, @@ -524,11 +524,11 @@ function getVitoTrainerConfig(): EnemyPartyConfig { ], }, { - species: getPokemonSpecies(Species.DARMANITAN), + species: getPokemonSpecies(SpeciesId.DARMANITAN), isBoss: false, abilityIndex: 0, // Sheer Force nature: Nature.IMPISH, - moveSet: [Moves.EARTHQUAKE, Moves.U_TURN, Moves.FLARE_BLITZ, Moves.ROCK_SLIDE], + moveSet: [MoveId.EARTHQUAKE, MoveId.U_TURN, MoveId.FLARE_BLITZ, MoveId.ROCK_SLIDE], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.QUICK_CLAW) as PokemonHeldItemModifierType, diff --git a/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts b/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts index 1e1db14705a..a0051058d02 100644 --- a/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts +++ b/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts @@ -16,14 +16,14 @@ import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-en import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { HitHealModifier, PokemonHeldItemModifier, TurnHealModifier } from "#app/modifier/modifier"; import { applyModifierTypeToPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import i18next from "#app/plugins/i18n"; import { ModifierTier } from "#app/modifier/modifier-tier"; import { getPokemonSpecies } from "#app/data/pokemon-species"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { BattlerIndex } from "#app/battle"; import { PokemonMove } from "#app/field/pokemon"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; @@ -51,7 +51,7 @@ export const TrashToTreasureEncounter: MysteryEncounter = MysteryEncounterBuilde .withFleeAllowed(false) .withIntroSpriteConfigs([ { - spriteKey: Species.GARBODOR.toString() + "-gigantamax", + spriteKey: SpeciesId.GARBODOR.toString() + "-gigantamax", fileRoot: "pokemon", hasShadow: false, disableAnimation: true, @@ -74,14 +74,14 @@ export const TrashToTreasureEncounter: MysteryEncounter = MysteryEncounterBuilde const encounter = globalScene.currentBattle.mysteryEncounter!; // Calculate boss mon (shiny locked) - const bossSpecies = getPokemonSpecies(Species.GARBODOR); + const bossSpecies = getPokemonSpecies(SpeciesId.GARBODOR); const pokemonConfig: EnemyPokemonConfig = { species: bossSpecies, isBoss: true, shiny: false, // Shiny lock because of custom intro sprite formIndex: 1, // Gmax bossSegmentModifier: 1, // +1 Segment from normal - moveSet: [Moves.GUNK_SHOT, Moves.STOMPING_TANTRUM, Moves.HAMMER_ARM, Moves.PAYBACK], + moveSet: [MoveId.GUNK_SHOT, MoveId.STOMPING_TANTRUM, MoveId.HAMMER_ARM, MoveId.PAYBACK], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.BERRY) as PokemonHeldItemModifierType, @@ -127,7 +127,7 @@ export const TrashToTreasureEncounter: MysteryEncounter = MysteryEncounterBuilde encounter.enemyPartyConfigs = [config]; // Load animations/sfx for Garbodor fight start moves - loadCustomMovesForEncounter([Moves.TOXIC, Moves.STOCKPILE]); + loadCustomMovesForEncounter([MoveId.TOXIC, MoveId.STOCKPILE]); globalScene.loadSe("PRSFX- Dig2", "battle_anims", "PRSFX- Dig2.wav"); globalScene.loadSe("PRSFX- Venom Drench", "battle_anims", "PRSFX- Venom Drench.wav"); @@ -206,13 +206,13 @@ export const TrashToTreasureEncounter: MysteryEncounter = MysteryEncounterBuilde { sourceBattlerIndex: BattlerIndex.ENEMY, targets: [BattlerIndex.PLAYER], - move: new PokemonMove(Moves.TOXIC), + move: new PokemonMove(MoveId.TOXIC), ignorePp: true, }, { sourceBattlerIndex: BattlerIndex.ENEMY, targets: [BattlerIndex.ENEMY], - move: new PokemonMove(Moves.STOCKPILE), + move: new PokemonMove(MoveId.STOCKPILE), ignorePp: true, }, ); diff --git a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts index f4eec5b0923..e51a8554120 100644 --- a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts +++ b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts @@ -28,7 +28,7 @@ import { } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import PokemonData from "#app/system/pokemon-data"; import { isNullOrUndefined, randSeedInt } from "#app/utils/common"; -import type { Moves } from "#enums/moves"; +import type { MoveId } from "#enums/move-id"; import { BattlerIndex } from "#app/battle"; import { SelfStatusMove } from "#app/data/moves/move"; import { PokeballType } from "#enums/pokeball"; @@ -73,7 +73,7 @@ export const UncommonBreedEncounter: MysteryEncounter = MysteryEncounterBuilder. const eggMoves = pokemon.getEggMoves(); if (eggMoves) { const eggMoveIndex = randSeedInt(4); - const randomEggMove: Moves = eggMoves[eggMoveIndex]; + const randomEggMove: MoveId = eggMoves[eggMoveIndex]; encounter.misc = { eggMove: randomEggMove, pokemon: pokemon, @@ -270,10 +270,10 @@ export const UncommonBreedEncounter: MysteryEncounter = MysteryEncounterBuilder. ) .build(); -function givePokemonExtraEggMove(pokemon: EnemyPokemon, previousEggMove: Moves) { +function givePokemonExtraEggMove(pokemon: EnemyPokemon, previousEggMove: MoveId) { const eggMoves = pokemon.getEggMoves(); if (eggMoves) { - let randomEggMove: Moves = eggMoves[randSeedInt(4)]; + let randomEggMove: MoveId = eggMoves[randSeedInt(4)]; while (randomEggMove === previousEggMove) { randomEggMove = eggMoves[randSeedInt(4)]; } diff --git a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts index cceda25fcb4..25be75b9d5a 100644 --- a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts +++ b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts @@ -1,6 +1,6 @@ import { PokemonType } from "#enums/pokemon-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { globalScene } from "#app/global-scene"; import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; @@ -49,55 +49,55 @@ const namespace = "mysteryEncounters/weirdDream"; /** Exclude Ultra Beasts, Paradox, Eternatus, and all legendary/mythical/trio pokemon that are below 570 BST */ const EXCLUDED_TRANSFORMATION_SPECIES = [ - Species.ETERNATUS, + SpeciesId.ETERNATUS, /** UBs */ - Species.NIHILEGO, - Species.BUZZWOLE, - Species.PHEROMOSA, - Species.XURKITREE, - Species.CELESTEELA, - Species.KARTANA, - Species.GUZZLORD, - Species.POIPOLE, - Species.NAGANADEL, - Species.STAKATAKA, - Species.BLACEPHALON, + SpeciesId.NIHILEGO, + SpeciesId.BUZZWOLE, + SpeciesId.PHEROMOSA, + SpeciesId.XURKITREE, + SpeciesId.CELESTEELA, + SpeciesId.KARTANA, + SpeciesId.GUZZLORD, + SpeciesId.POIPOLE, + SpeciesId.NAGANADEL, + SpeciesId.STAKATAKA, + SpeciesId.BLACEPHALON, /** Paradox */ - Species.GREAT_TUSK, - Species.SCREAM_TAIL, - Species.BRUTE_BONNET, - Species.FLUTTER_MANE, - Species.SLITHER_WING, - Species.SANDY_SHOCKS, - Species.ROARING_MOON, - Species.WALKING_WAKE, - Species.GOUGING_FIRE, - Species.RAGING_BOLT, - Species.IRON_TREADS, - Species.IRON_BUNDLE, - Species.IRON_HANDS, - Species.IRON_JUGULIS, - Species.IRON_MOTH, - Species.IRON_THORNS, - Species.IRON_VALIANT, - Species.IRON_LEAVES, - Species.IRON_BOULDER, - Species.IRON_CROWN, + SpeciesId.GREAT_TUSK, + SpeciesId.SCREAM_TAIL, + SpeciesId.BRUTE_BONNET, + SpeciesId.FLUTTER_MANE, + SpeciesId.SLITHER_WING, + SpeciesId.SANDY_SHOCKS, + SpeciesId.ROARING_MOON, + SpeciesId.WALKING_WAKE, + SpeciesId.GOUGING_FIRE, + SpeciesId.RAGING_BOLT, + SpeciesId.IRON_TREADS, + SpeciesId.IRON_BUNDLE, + SpeciesId.IRON_HANDS, + SpeciesId.IRON_JUGULIS, + SpeciesId.IRON_MOTH, + SpeciesId.IRON_THORNS, + SpeciesId.IRON_VALIANT, + SpeciesId.IRON_LEAVES, + SpeciesId.IRON_BOULDER, + SpeciesId.IRON_CROWN, /** These are banned so they don't appear in the < 570 BST pool */ - Species.COSMOG, - Species.MELTAN, - Species.KUBFU, - Species.COSMOEM, - Species.POIPOLE, - Species.TERAPAGOS, - Species.TYPE_NULL, - Species.CALYREX, - Species.NAGANADEL, - Species.URSHIFU, - Species.OGERPON, - Species.OKIDOGI, - Species.MUNKIDORI, - Species.FEZANDIPITI, + SpeciesId.COSMOG, + SpeciesId.MELTAN, + SpeciesId.KUBFU, + SpeciesId.COSMOEM, + SpeciesId.POIPOLE, + SpeciesId.TERAPAGOS, + SpeciesId.TYPE_NULL, + SpeciesId.CALYREX, + SpeciesId.NAGANADEL, + SpeciesId.URSHIFU, + SpeciesId.OGERPON, + SpeciesId.OKIDOGI, + SpeciesId.MUNKIDORI, + SpeciesId.FEZANDIPITI, ]; const SUPER_LEGENDARY_BST_THRESHOLD = 600; @@ -500,7 +500,7 @@ async function doNewTeamPostProcess(transformations: PokemonTransformation[]) { async function postProcessTransformedPokemon( previousPokemon: PlayerPokemon, newPokemon: PlayerPokemon, - speciesRootForm: Species, + speciesRootForm: SpeciesId, forBattle = false, ): Promise { let isNewStarter = false; @@ -768,7 +768,7 @@ function doSideBySideTransformations(transformations: PokemonTransformation[]) { */ async function addEggMoveToNewPokemonMoveset( newPokemon: PlayerPokemon, - speciesRootForm: Species, + speciesRootForm: SpeciesId, forBattle = false, ): Promise { let eggMoveIndex: null | number = null; diff --git a/src/data/mystery-encounters/mystery-encounter-option.ts b/src/data/mystery-encounters/mystery-encounter-option.ts index 57dd50fa972..53b53392bb8 100644 --- a/src/data/mystery-encounters/mystery-encounter-option.ts +++ b/src/data/mystery-encounters/mystery-encounter-option.ts @@ -1,5 +1,5 @@ import type { OptionTextDisplay } from "#app/data/mystery-encounters/mystery-encounter-dialogue"; -import type { Moves } from "#app/enums/moves"; +import type { MoveId } from "#enums/move-id"; import type { PlayerPokemon } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { globalScene } from "#app/global-scene"; @@ -300,7 +300,7 @@ export class MysteryEncounterOptionBuilder implements Partial !pokemon.moveset.find(m => m.moveId === tm)).includes(reqMove), ); if (includedCompatMoves.length > 0) { - return ["compatibleMove", Moves[includedCompatMoves[0]]]; + return ["compatibleMove", MoveId[includedCompatMoves[0]]]; } return ["compatibleMove", ""]; } } export class AbilityRequirement extends EncounterPokemonRequirement { - requiredAbilities: Abilities[]; + requiredAbilities: AbilityId[]; minNumberOfPokemon: number; invertQuery: boolean; excludeDisallowedPokemon: boolean; constructor( - abilities: Abilities | Abilities[], + abilities: AbilityId | AbilityId[], excludeDisallowedPokemon: boolean, minNumberOfPokemon = 1, invertQuery = false, diff --git a/src/data/mystery-encounters/mystery-encounters.ts b/src/data/mystery-encounters/mystery-encounters.ts index 1a36dc27df2..3a1d3760c83 100644 --- a/src/data/mystery-encounters/mystery-encounters.ts +++ b/src/data/mystery-encounters/mystery-encounters.ts @@ -1,4 +1,4 @@ -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { DarkDealEncounter } from "./encounters/dark-deal-encounter"; import { DepartmentStoreSaleEncounter } from "./encounters/department-store-sale-encounter"; @@ -71,44 +71,44 @@ export const AVERAGE_ENCOUNTERS_PER_RUN_TARGET = 12; export const ANTI_VARIANCE_WEIGHT_MODIFIER = 15; export const EXTREME_ENCOUNTER_BIOMES = [ - Biome.SEA, - Biome.SEABED, - Biome.BADLANDS, - Biome.DESERT, - Biome.ICE_CAVE, - Biome.VOLCANO, - Biome.WASTELAND, - Biome.ABYSS, - Biome.SPACE, - Biome.END, + BiomeId.SEA, + BiomeId.SEABED, + BiomeId.BADLANDS, + BiomeId.DESERT, + BiomeId.ICE_CAVE, + BiomeId.VOLCANO, + BiomeId.WASTELAND, + BiomeId.ABYSS, + BiomeId.SPACE, + BiomeId.END, ]; export const NON_EXTREME_ENCOUNTER_BIOMES = [ - Biome.TOWN, - Biome.PLAINS, - Biome.GRASS, - Biome.TALL_GRASS, - Biome.METROPOLIS, - Biome.FOREST, - Biome.SWAMP, - Biome.BEACH, - Biome.LAKE, - Biome.MOUNTAIN, - Biome.CAVE, - Biome.MEADOW, - Biome.POWER_PLANT, - Biome.GRAVEYARD, - Biome.DOJO, - Biome.FACTORY, - Biome.RUINS, - Biome.CONSTRUCTION_SITE, - Biome.JUNGLE, - Biome.FAIRY_CAVE, - Biome.TEMPLE, - Biome.SLUM, - Biome.SNOWY_FOREST, - Biome.ISLAND, - Biome.LABORATORY, + BiomeId.TOWN, + BiomeId.PLAINS, + BiomeId.GRASS, + BiomeId.TALL_GRASS, + BiomeId.METROPOLIS, + BiomeId.FOREST, + BiomeId.SWAMP, + BiomeId.BEACH, + BiomeId.LAKE, + BiomeId.MOUNTAIN, + BiomeId.CAVE, + BiomeId.MEADOW, + BiomeId.POWER_PLANT, + BiomeId.GRAVEYARD, + BiomeId.DOJO, + BiomeId.FACTORY, + BiomeId.RUINS, + BiomeId.CONSTRUCTION_SITE, + BiomeId.JUNGLE, + BiomeId.FAIRY_CAVE, + BiomeId.TEMPLE, + BiomeId.SLUM, + BiomeId.SNOWY_FOREST, + BiomeId.ISLAND, + BiomeId.LABORATORY, ]; /** @@ -120,55 +120,55 @@ export const NON_EXTREME_ENCOUNTER_BIOMES = [ * + ICE_CAVE */ export const HUMAN_TRANSITABLE_BIOMES = [ - Biome.TOWN, - Biome.PLAINS, - Biome.GRASS, - Biome.TALL_GRASS, - Biome.METROPOLIS, - Biome.FOREST, - Biome.SWAMP, - Biome.BEACH, - Biome.LAKE, - Biome.MOUNTAIN, - Biome.BADLANDS, - Biome.CAVE, - Biome.DESERT, - Biome.ICE_CAVE, - Biome.MEADOW, - Biome.POWER_PLANT, - Biome.GRAVEYARD, - Biome.DOJO, - Biome.FACTORY, - Biome.RUINS, - Biome.CONSTRUCTION_SITE, - Biome.JUNGLE, - Biome.FAIRY_CAVE, - Biome.TEMPLE, - Biome.SLUM, - Biome.SNOWY_FOREST, - Biome.ISLAND, - Biome.LABORATORY, + BiomeId.TOWN, + BiomeId.PLAINS, + BiomeId.GRASS, + BiomeId.TALL_GRASS, + BiomeId.METROPOLIS, + BiomeId.FOREST, + BiomeId.SWAMP, + BiomeId.BEACH, + BiomeId.LAKE, + BiomeId.MOUNTAIN, + BiomeId.BADLANDS, + BiomeId.CAVE, + BiomeId.DESERT, + BiomeId.ICE_CAVE, + BiomeId.MEADOW, + BiomeId.POWER_PLANT, + BiomeId.GRAVEYARD, + BiomeId.DOJO, + BiomeId.FACTORY, + BiomeId.RUINS, + BiomeId.CONSTRUCTION_SITE, + BiomeId.JUNGLE, + BiomeId.FAIRY_CAVE, + BiomeId.TEMPLE, + BiomeId.SLUM, + BiomeId.SNOWY_FOREST, + BiomeId.ISLAND, + BiomeId.LABORATORY, ]; /** * Places where you could expect a town or city, some form of large civilization */ export const CIVILIZATION_ENCOUNTER_BIOMES = [ - Biome.TOWN, - Biome.PLAINS, - Biome.GRASS, - Biome.TALL_GRASS, - Biome.METROPOLIS, - Biome.BEACH, - Biome.LAKE, - Biome.MEADOW, - Biome.POWER_PLANT, - Biome.GRAVEYARD, - Biome.DOJO, - Biome.FACTORY, - Biome.CONSTRUCTION_SITE, - Biome.SLUM, - Biome.ISLAND, + BiomeId.TOWN, + BiomeId.PLAINS, + BiomeId.GRASS, + BiomeId.TALL_GRASS, + BiomeId.METROPOLIS, + BiomeId.BEACH, + BiomeId.LAKE, + BiomeId.MEADOW, + BiomeId.POWER_PLANT, + BiomeId.GRAVEYARD, + BiomeId.DOJO, + BiomeId.FACTORY, + BiomeId.CONSTRUCTION_SITE, + BiomeId.SLUM, + BiomeId.ISLAND, ]; export const allMysteryEncounters: { @@ -224,41 +224,41 @@ const anyBiomeEncounters: MysteryEncounterType[] = [ * Adding specific Encounters to the mysteryEncountersByBiome map is for specific cases and special circumstances * that biome groups do not cover */ -export const mysteryEncountersByBiome = new Map([ - [Biome.TOWN, []], - [Biome.PLAINS, [MysteryEncounterType.SLUMBERING_SNORLAX]], - [Biome.GRASS, [MysteryEncounterType.SLUMBERING_SNORLAX, MysteryEncounterType.ABSOLUTE_AVARICE]], - [Biome.TALL_GRASS, [MysteryEncounterType.SLUMBERING_SNORLAX, MysteryEncounterType.ABSOLUTE_AVARICE]], - [Biome.METROPOLIS, []], - [Biome.FOREST, [MysteryEncounterType.SAFARI_ZONE, MysteryEncounterType.ABSOLUTE_AVARICE]], - [Biome.SEA, [MysteryEncounterType.LOST_AT_SEA]], - [Biome.SWAMP, [MysteryEncounterType.SAFARI_ZONE]], - [Biome.BEACH, []], - [Biome.LAKE, []], - [Biome.SEABED, []], - [Biome.MOUNTAIN, []], - [Biome.BADLANDS, [MysteryEncounterType.DANCING_LESSONS]], - [Biome.CAVE, [MysteryEncounterType.THE_STRONG_STUFF]], - [Biome.DESERT, [MysteryEncounterType.DANCING_LESSONS]], - [Biome.ICE_CAVE, []], - [Biome.MEADOW, []], - [Biome.POWER_PLANT, []], - [Biome.VOLCANO, [MysteryEncounterType.FIERY_FALLOUT, MysteryEncounterType.DANCING_LESSONS]], - [Biome.GRAVEYARD, []], - [Biome.DOJO, []], - [Biome.FACTORY, []], - [Biome.RUINS, []], - [Biome.WASTELAND, [MysteryEncounterType.DANCING_LESSONS]], - [Biome.ABYSS, [MysteryEncounterType.DANCING_LESSONS]], - [Biome.SPACE, [MysteryEncounterType.THE_EXPERT_POKEMON_BREEDER]], - [Biome.CONSTRUCTION_SITE, []], - [Biome.JUNGLE, [MysteryEncounterType.SAFARI_ZONE]], - [Biome.FAIRY_CAVE, []], - [Biome.TEMPLE, []], - [Biome.SLUM, []], - [Biome.SNOWY_FOREST, []], - [Biome.ISLAND, []], - [Biome.LABORATORY, []], +export const mysteryEncountersByBiome = new Map([ + [BiomeId.TOWN, []], + [BiomeId.PLAINS, [MysteryEncounterType.SLUMBERING_SNORLAX]], + [BiomeId.GRASS, [MysteryEncounterType.SLUMBERING_SNORLAX, MysteryEncounterType.ABSOLUTE_AVARICE]], + [BiomeId.TALL_GRASS, [MysteryEncounterType.SLUMBERING_SNORLAX, MysteryEncounterType.ABSOLUTE_AVARICE]], + [BiomeId.METROPOLIS, []], + [BiomeId.FOREST, [MysteryEncounterType.SAFARI_ZONE, MysteryEncounterType.ABSOLUTE_AVARICE]], + [BiomeId.SEA, [MysteryEncounterType.LOST_AT_SEA]], + [BiomeId.SWAMP, [MysteryEncounterType.SAFARI_ZONE]], + [BiomeId.BEACH, []], + [BiomeId.LAKE, []], + [BiomeId.SEABED, []], + [BiomeId.MOUNTAIN, []], + [BiomeId.BADLANDS, [MysteryEncounterType.DANCING_LESSONS]], + [BiomeId.CAVE, [MysteryEncounterType.THE_STRONG_STUFF]], + [BiomeId.DESERT, [MysteryEncounterType.DANCING_LESSONS]], + [BiomeId.ICE_CAVE, []], + [BiomeId.MEADOW, []], + [BiomeId.POWER_PLANT, []], + [BiomeId.VOLCANO, [MysteryEncounterType.FIERY_FALLOUT, MysteryEncounterType.DANCING_LESSONS]], + [BiomeId.GRAVEYARD, []], + [BiomeId.DOJO, []], + [BiomeId.FACTORY, []], + [BiomeId.RUINS, []], + [BiomeId.WASTELAND, [MysteryEncounterType.DANCING_LESSONS]], + [BiomeId.ABYSS, [MysteryEncounterType.DANCING_LESSONS]], + [BiomeId.SPACE, [MysteryEncounterType.THE_EXPERT_POKEMON_BREEDER]], + [BiomeId.CONSTRUCTION_SITE, []], + [BiomeId.JUNGLE, [MysteryEncounterType.SAFARI_ZONE]], + [BiomeId.FAIRY_CAVE, []], + [BiomeId.TEMPLE, []], + [BiomeId.SLUM, []], + [BiomeId.SNOWY_FOREST, []], + [BiomeId.ISLAND, []], + [BiomeId.LABORATORY, []], ]); export function initMysteryEncounters() { diff --git a/src/data/mystery-encounters/requirements/can-learn-move-requirement.ts b/src/data/mystery-encounters/requirements/can-learn-move-requirement.ts index 37194aef78e..7698be7b15d 100644 --- a/src/data/mystery-encounters/requirements/can-learn-move-requirement.ts +++ b/src/data/mystery-encounters/requirements/can-learn-move-requirement.ts @@ -1,4 +1,4 @@ -import type { Moves } from "#app/enums/moves"; +import type { MoveId } from "#enums/move-id"; import type { PlayerPokemon } from "#app/field/pokemon"; import { PokemonMove } from "#app/field/pokemon"; import { isNullOrUndefined } from "#app/utils/common"; @@ -21,13 +21,13 @@ export interface CanLearnMoveRequirementOptions { * Requires that a pokemon can learn a specific move/moveset. */ export class CanLearnMoveRequirement extends EncounterPokemonRequirement { - private readonly requiredMoves: Moves[]; + private readonly requiredMoves: MoveId[]; private readonly excludeLevelMoves?: boolean; private readonly excludeTmMoves?: boolean; private readonly excludeEggMoves?: boolean; private readonly includeFainted?: boolean; - constructor(requiredMoves: Moves | Moves[], options: CanLearnMoveRequirementOptions = {}) { + constructor(requiredMoves: MoveId | MoveId[], options: CanLearnMoveRequirementOptions = {}) { super(); this.requiredMoves = Array.isArray(requiredMoves) ? requiredMoves : [requiredMoves]; @@ -69,12 +69,12 @@ export class CanLearnMoveRequirement extends EncounterPokemonRequirement { return ["requiredMoves", this.requiredMoves.map(m => new PokemonMove(m).getName()).join(", ")]; } - private getPokemonLevelMoves(pkm: PlayerPokemon): Moves[] { + private getPokemonLevelMoves(pkm: PlayerPokemon): MoveId[] { return pkm.getLevelMoves().map(([_level, move]) => move); } - private getAllPokemonMoves(pkm: PlayerPokemon): Moves[] { - const allPokemonMoves: Moves[] = []; + private getAllPokemonMoves(pkm: PlayerPokemon): MoveId[] { + const allPokemonMoves: MoveId[] = []; if (!this.excludeLevelMoves) { allPokemonMoves.push(...(this.getPokemonLevelMoves(pkm) ?? [])); diff --git a/src/data/mystery-encounters/requirements/requirement-groups.ts b/src/data/mystery-encounters/requirements/requirement-groups.ts index d9d62819fa6..0140a5fe320 100644 --- a/src/data/mystery-encounters/requirements/requirement-groups.ts +++ b/src/data/mystery-encounters/requirements/requirement-groups.ts @@ -1,130 +1,137 @@ -import { Moves } from "#enums/moves"; -import { Abilities } from "#enums/abilities"; +import { MoveId } from "#enums/move-id"; +import { AbilityId } from "#enums/ability-id"; /** * Moves that "steal" things */ -export const STEALING_MOVES = [Moves.PLUCK, Moves.COVET, Moves.KNOCK_OFF, Moves.THIEF, Moves.TRICK, Moves.SWITCHEROO]; +export const STEALING_MOVES = [ + MoveId.PLUCK, + MoveId.COVET, + MoveId.KNOCK_OFF, + MoveId.THIEF, + MoveId.TRICK, + MoveId.SWITCHEROO, +]; /** * Moves that "charm" someone */ export const CHARMING_MOVES = [ - Moves.CHARM, - Moves.FLATTER, - Moves.DRAGON_CHEER, - Moves.ALLURING_VOICE, - Moves.ATTRACT, - Moves.SWEET_SCENT, - Moves.CAPTIVATE, - Moves.AROMATIC_MIST, + MoveId.CHARM, + MoveId.FLATTER, + MoveId.DRAGON_CHEER, + MoveId.ALLURING_VOICE, + MoveId.ATTRACT, + MoveId.SWEET_SCENT, + MoveId.CAPTIVATE, + MoveId.AROMATIC_MIST, ]; /** * Moves for the Dancer ability */ export const DANCING_MOVES = [ - Moves.AQUA_STEP, - Moves.CLANGOROUS_SOUL, - Moves.DRAGON_DANCE, - Moves.FEATHER_DANCE, - Moves.FIERY_DANCE, - Moves.LUNAR_DANCE, - Moves.PETAL_DANCE, - Moves.REVELATION_DANCE, - Moves.QUIVER_DANCE, - Moves.SWORDS_DANCE, - Moves.TEETER_DANCE, - Moves.VICTORY_DANCE, + MoveId.AQUA_STEP, + MoveId.CLANGOROUS_SOUL, + MoveId.DRAGON_DANCE, + MoveId.FEATHER_DANCE, + MoveId.FIERY_DANCE, + MoveId.LUNAR_DANCE, + MoveId.PETAL_DANCE, + MoveId.REVELATION_DANCE, + MoveId.QUIVER_DANCE, + MoveId.SWORDS_DANCE, + MoveId.TEETER_DANCE, + MoveId.VICTORY_DANCE, ]; /** * Moves that can distract someone/something */ export const DISTRACTION_MOVES = [ - Moves.FAKE_OUT, - Moves.FOLLOW_ME, - Moves.TAUNT, - Moves.ROAR, - Moves.TELEPORT, - Moves.CHARM, - Moves.FAKE_TEARS, - Moves.TICKLE, - Moves.CAPTIVATE, - Moves.RAGE_POWDER, - Moves.SUBSTITUTE, - Moves.SHED_TAIL, + MoveId.FAKE_OUT, + MoveId.FOLLOW_ME, + MoveId.TAUNT, + MoveId.ROAR, + MoveId.TELEPORT, + MoveId.CHARM, + MoveId.FAKE_TEARS, + MoveId.TICKLE, + MoveId.CAPTIVATE, + MoveId.RAGE_POWDER, + MoveId.SUBSTITUTE, + MoveId.SHED_TAIL, ]; /** * Moves that protect in some way */ export const PROTECTING_MOVES = [ - Moves.PROTECT, - Moves.WIDE_GUARD, - Moves.MAX_GUARD, - Moves.SAFEGUARD, - Moves.REFLECT, - Moves.BARRIER, - Moves.QUICK_GUARD, - Moves.FLOWER_SHIELD, - Moves.KINGS_SHIELD, - Moves.CRAFTY_SHIELD, - Moves.SPIKY_SHIELD, - Moves.OBSTRUCT, - Moves.DETECT, + MoveId.PROTECT, + MoveId.WIDE_GUARD, + MoveId.MAX_GUARD, + MoveId.SAFEGUARD, + MoveId.REFLECT, + MoveId.BARRIER, + MoveId.QUICK_GUARD, + MoveId.FLOWER_SHIELD, + MoveId.KINGS_SHIELD, + MoveId.CRAFTY_SHIELD, + MoveId.SPIKY_SHIELD, + MoveId.OBSTRUCT, + MoveId.DETECT, ]; /** * Moves that (loosely) can be used to trap/rob someone */ export const EXTORTION_MOVES = [ - Moves.BIND, - Moves.CLAMP, - Moves.INFESTATION, - Moves.SAND_TOMB, - Moves.SNAP_TRAP, - Moves.THUNDER_CAGE, - Moves.WRAP, - Moves.SPIRIT_SHACKLE, - Moves.MEAN_LOOK, - Moves.JAW_LOCK, - Moves.BLOCK, - Moves.SPIDER_WEB, - Moves.ANCHOR_SHOT, - Moves.OCTOLOCK, - Moves.PURSUIT, - Moves.CONSTRICT, - Moves.BEAT_UP, - Moves.COIL, - Moves.WRING_OUT, - Moves.STRING_SHOT, + MoveId.BIND, + MoveId.CLAMP, + MoveId.INFESTATION, + MoveId.SAND_TOMB, + MoveId.SNAP_TRAP, + MoveId.THUNDER_CAGE, + MoveId.WRAP, + MoveId.SPIRIT_SHACKLE, + MoveId.MEAN_LOOK, + MoveId.JAW_LOCK, + MoveId.BLOCK, + MoveId.SPIDER_WEB, + MoveId.ANCHOR_SHOT, + MoveId.OCTOLOCK, + MoveId.PURSUIT, + MoveId.CONSTRICT, + MoveId.BEAT_UP, + MoveId.COIL, + MoveId.WRING_OUT, + MoveId.STRING_SHOT, ]; /** * Abilities that (loosely) can be used to trap/rob someone */ export const EXTORTION_ABILITIES = [ - Abilities.INTIMIDATE, - Abilities.ARENA_TRAP, - Abilities.SHADOW_TAG, - Abilities.SUCTION_CUPS, - Abilities.STICKY_HOLD, + AbilityId.INTIMIDATE, + AbilityId.ARENA_TRAP, + AbilityId.SHADOW_TAG, + AbilityId.SUCTION_CUPS, + AbilityId.STICKY_HOLD, ]; /** * Abilities that signify resistance to fire */ export const FIRE_RESISTANT_ABILITIES = [ - Abilities.FLAME_BODY, - Abilities.FLASH_FIRE, - Abilities.WELL_BAKED_BODY, - Abilities.HEATPROOF, - Abilities.THERMAL_EXCHANGE, - Abilities.THICK_FAT, - Abilities.WATER_BUBBLE, - Abilities.MAGMA_ARMOR, - Abilities.WATER_VEIL, - Abilities.STEAM_ENGINE, - Abilities.PRIMORDIAL_SEA, + AbilityId.FLAME_BODY, + AbilityId.FLASH_FIRE, + AbilityId.WELL_BAKED_BODY, + AbilityId.HEATPROOF, + AbilityId.THERMAL_EXCHANGE, + AbilityId.THICK_FAT, + AbilityId.WATER_BUBBLE, + AbilityId.MAGMA_ARMOR, + AbilityId.WATER_VEIL, + AbilityId.STEAM_ENGINE, + AbilityId.PRIMORDIAL_SEA, ]; diff --git a/src/data/mystery-encounters/utils/encounter-phase-utils.ts b/src/data/mystery-encounters/utils/encounter-phase-utils.ts index 0215928bbe8..060de9c3a9e 100644 --- a/src/data/mystery-encounters/utils/encounter-phase-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-phase-utils.ts @@ -33,13 +33,13 @@ import { PartyUiMode } from "#app/ui/party-ui-handler"; import { UiMode } from "#enums/ui-mode"; import { isNullOrUndefined, randSeedInt, randomString, randSeedItem } from "#app/utils/common"; import type { BattlerTagType } from "#enums/battler-tag-type"; -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import type { TrainerType } from "#enums/trainer-type"; import i18next from "i18next"; import Trainer, { TrainerVariant } from "#app/field/trainer"; import type { Gender } from "#app/data/gender"; import type { Nature } from "#enums/nature"; -import type { Moves } from "#enums/moves"; +import type { MoveId } from "#enums/move-id"; import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { Status } from "#app/data/status-effect"; @@ -106,7 +106,7 @@ export interface EnemyPokemonConfig { level?: number; gender?: Gender; passive?: boolean; - moveSet?: Moves[]; + moveSet?: MoveId[]; nature?: Nature; ivs?: [number, number, number, number, number, number]; shiny?: boolean; @@ -460,7 +460,7 @@ export async function initBattleWithEnemyConfig(partyConfig: EnemyPartyConfig): * This promise does not need to be awaited on if called in an encounter onInit (will just load lazily) * @param moves */ -export function loadCustomMovesForEncounter(moves: Moves | Moves[]) { +export function loadCustomMovesForEncounter(moves: MoveId | MoveId[]) { moves = Array.isArray(moves) ? moves : [moves]; return Promise.all(moves.map(move => initMoveAnim(move))).then(() => loadMoveAnimAssets(moves)); } @@ -1088,16 +1088,16 @@ export function getRandomEncounterSpecies(level: number, isBoss = false, rerollH export function calculateMEAggregateStats(baseSpawnWeight: number) { const numRuns = 1000; let run = 0; - const biomes = Object.keys(Biome).filter(key => Number.isNaN(Number(key))); + const biomes = Object.keys(BiomeId).filter(key => Number.isNaN(Number(key))); const alwaysPickTheseBiomes = [ - Biome.ISLAND, - Biome.ABYSS, - Biome.WASTELAND, - Biome.FAIRY_CAVE, - Biome.TEMPLE, - Biome.LABORATORY, - Biome.SPACE, - Biome.WASTELAND, + BiomeId.ISLAND, + BiomeId.ABYSS, + BiomeId.WASTELAND, + BiomeId.FAIRY_CAVE, + BiomeId.TEMPLE, + BiomeId.LABORATORY, + BiomeId.SPACE, + BiomeId.WASTELAND, ]; const calculateNumEncounters = (): any[] => { @@ -1106,7 +1106,7 @@ export function calculateMEAggregateStats(baseSpawnWeight: number) { let mostRecentEncounterWave = 0; const encountersByBiome = new Map(biomes.map(b => [b, 0])); const validMEfloorsByBiome = new Map(biomes.map(b => [b, 0])); - let currentBiome = Biome.TOWN; + let currentBiome = BiomeId.TOWN; let currentArena = globalScene.newArena(currentBiome); globalScene.setSeed(randomString(24)); globalScene.resetSeed(); @@ -1119,9 +1119,9 @@ export function calculateMEAggregateStats(baseSpawnWeight: number) { // New biome if (i % 10 === 1) { if (Array.isArray(biomeLinks[currentBiome])) { - let biomes: Biome[]; + let biomes: BiomeId[]; globalScene.executeWithSeedOffset(() => { - biomes = (biomeLinks[currentBiome] as (Biome | [Biome, number])[]) + biomes = (biomeLinks[currentBiome] as (BiomeId | [BiomeId, number])[]) .filter(b => { return !Array.isArray(b) || !randSeedInt(b[1]); }) @@ -1136,10 +1136,10 @@ export function calculateMEAggregateStats(baseSpawnWeight: number) { } } } else if (biomeLinks.hasOwnProperty(currentBiome)) { - currentBiome = biomeLinks[currentBiome] as Biome; + currentBiome = biomeLinks[currentBiome] as BiomeId; } else { if (!(i % 50)) { - currentBiome = Biome.END; + currentBiome = BiomeId.END; } else { currentBiome = globalScene.generateRandomBiome(i); } @@ -1161,7 +1161,7 @@ export function calculateMEAggregateStats(baseSpawnWeight: number) { // Otherwise, roll encounter const roll = randSeedInt(256); - validMEfloorsByBiome.set(Biome[currentBiome], (validMEfloorsByBiome.get(Biome[currentBiome]) ?? 0) + 1); + validMEfloorsByBiome.set(BiomeId[currentBiome], (validMEfloorsByBiome.get(BiomeId[currentBiome]) ?? 0) + 1); // If total number of encounters is lower than expected for the run, slightly favor a new encounter // Do the reverse as well @@ -1197,7 +1197,7 @@ export function calculateMEAggregateStats(baseSpawnWeight: number) { : tierValue > rareThreshold ? ++numEncounters[2] : ++numEncounters[3]; - encountersByBiome.set(Biome[currentBiome], (encountersByBiome.get(Biome[currentBiome]) ?? 0) + 1); + encountersByBiome.set(BiomeId[currentBiome], (encountersByBiome.get(BiomeId[currentBiome]) ?? 0) + 1); } else { encounterRate += WEIGHT_INCREMENT_ON_SPAWN_MISS; } diff --git a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts index a6a87b4ab9a..d4102c045c0 100644 --- a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts @@ -17,7 +17,7 @@ import { achvs } from "#app/system/achv"; import { UiMode } from "#enums/ui-mode"; import type { PartyOption } from "#app/ui/party-ui-handler"; import { PartyUiMode } from "#app/ui/party-ui-handler"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import type { PokemonType } from "#enums/pokemon-type"; import type PokemonSpecies from "#app/data/pokemon-species"; import { getPokemonSpecies } from "#app/data/pokemon-species"; @@ -35,7 +35,7 @@ import type { PermanentStat } from "#enums/stat"; import { VictoryPhase } from "#app/phases/victory-phase"; import { SummaryUiMode } from "#app/ui/summary-ui-handler"; import { CustomPokemonData } from "#app/data/custom-pokemon-data"; -import type { Abilities } from "#enums/abilities"; +import type { AbilityId } from "#enums/ability-id"; import type { PokeballType } from "#enums/pokeball"; import { StatusEffect } from "#enums/status-effect"; @@ -51,7 +51,7 @@ export const STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER = 1; * @param variant */ export function getSpriteKeysFromSpecies( - species: Species, + species: SpeciesId, female?: boolean, formIndex?: number, shiny?: boolean, @@ -247,17 +247,17 @@ export function getHighestStatTotalPlayerPokemon(isAllowed = false, isFainted = */ export function getRandomSpeciesByStarterCost( starterTiers: number | [number, number], - excludedSpecies?: Species[], + excludedSpecies?: SpeciesId[], types?: PokemonType[], allowSubLegendary = true, allowLegendary = true, allowMythical = true, -): Species { +): SpeciesId { let min = Array.isArray(starterTiers) ? starterTiers[0] : starterTiers; let max = Array.isArray(starterTiers) ? starterTiers[1] : starterTiers; let filteredSpecies: [PokemonSpecies, number][] = Object.keys(speciesStarterCosts) - .map(s => [Number.parseInt(s) as Species, speciesStarterCosts[s] as number]) + .map(s => [Number.parseInt(s) as SpeciesId, speciesStarterCosts[s] as number]) .filter(s => { const pokemonSpecies = getPokemonSpecies(s[0]); return ( @@ -294,7 +294,7 @@ export function getRandomSpeciesByStarterCost( return Phaser.Math.RND.shuffle(tryFilterStarterTiers)[index][0].speciesId; } - return Species.BULBASAUR; + return SpeciesId.BULBASAUR; } /** @@ -903,34 +903,34 @@ export function doPlayerFlee(pokemon: EnemyPokemon): Promise { /** * Bug Species and their corresponding weights */ -const GOLDEN_BUG_NET_SPECIES_POOL: [Species, number][] = [ - [Species.SCYTHER, 40], - [Species.SCIZOR, 40], - [Species.KLEAVOR, 40], - [Species.PINSIR, 40], - [Species.HERACROSS, 40], - [Species.YANMA, 40], - [Species.YANMEGA, 40], - [Species.SHUCKLE, 40], - [Species.ANORITH, 40], - [Species.ARMALDO, 40], - [Species.ESCAVALIER, 40], - [Species.ACCELGOR, 40], - [Species.JOLTIK, 40], - [Species.GALVANTULA, 40], - [Species.DURANT, 40], - [Species.LARVESTA, 40], - [Species.VOLCARONA, 40], - [Species.DEWPIDER, 40], - [Species.ARAQUANID, 40], - [Species.WIMPOD, 40], - [Species.GOLISOPOD, 40], - [Species.SIZZLIPEDE, 40], - [Species.CENTISKORCH, 40], - [Species.NYMBLE, 40], - [Species.LOKIX, 40], - [Species.BUZZWOLE, 1], - [Species.PHEROMOSA, 1], +const GOLDEN_BUG_NET_SPECIES_POOL: [SpeciesId, number][] = [ + [SpeciesId.SCYTHER, 40], + [SpeciesId.SCIZOR, 40], + [SpeciesId.KLEAVOR, 40], + [SpeciesId.PINSIR, 40], + [SpeciesId.HERACROSS, 40], + [SpeciesId.YANMA, 40], + [SpeciesId.YANMEGA, 40], + [SpeciesId.SHUCKLE, 40], + [SpeciesId.ANORITH, 40], + [SpeciesId.ARMALDO, 40], + [SpeciesId.ESCAVALIER, 40], + [SpeciesId.ACCELGOR, 40], + [SpeciesId.JOLTIK, 40], + [SpeciesId.GALVANTULA, 40], + [SpeciesId.DURANT, 40], + [SpeciesId.LARVESTA, 40], + [SpeciesId.VOLCARONA, 40], + [SpeciesId.DEWPIDER, 40], + [SpeciesId.ARAQUANID, 40], + [SpeciesId.WIMPOD, 40], + [SpeciesId.GOLISOPOD, 40], + [SpeciesId.SIZZLIPEDE, 40], + [SpeciesId.CENTISKORCH, 40], + [SpeciesId.NYMBLE, 40], + [SpeciesId.LOKIX, 40], + [SpeciesId.BUZZWOLE, 1], + [SpeciesId.PHEROMOSA, 1], ]; /** @@ -951,7 +951,7 @@ export function getGoldenBugNetSpecies(level: number): PokemonSpecies { } // Defaults to Scyther - return getPokemonSpecies(Species.SCYTHER); + return getPokemonSpecies(SpeciesId.SCYTHER); } /** @@ -1024,7 +1024,7 @@ export function isPokemonValidForEncounterOptionSelection( * Permanently overrides the ability (not passive) of a pokemon. * If the pokemon is a fusion, instead overrides the fused pokemon's ability. */ -export function applyAbilityOverrideToPokemon(pokemon: Pokemon, ability: Abilities) { +export function applyAbilityOverrideToPokemon(pokemon: Pokemon, ability: AbilityId) { if (pokemon.isFusion()) { if (!pokemon.fusionCustomPokemonData) { pokemon.fusionCustomPokemonData = new CustomPokemonData(); diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index da594f7c27f..1098ddc4eeb 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -4,9 +4,9 @@ import { StatusEffect } from "#enums/status-effect"; import { allMoves } from "./data-lists"; import { MoveCategory } from "#enums/MoveCategory"; import type { Constructor, nil } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import type { TimeOfDay } from "#enums/time-of-day"; import { getPokemonNameWithAffix } from "#app/messages"; import i18next from "i18next"; @@ -139,7 +139,7 @@ export type SpeciesFormChangeConditionPredicate = (p: Pokemon) => boolean; export type SpeciesFormChangeConditionEnforceFunc = (p: Pokemon) => void; export class SpeciesFormChange { - public speciesId: Species; + public speciesId: SpeciesId; public preFormKey: string; public formKey: string; public trigger: SpeciesFormChangeTrigger; @@ -147,7 +147,7 @@ export class SpeciesFormChange { public readonly conditions: SpeciesFormChangeCondition[]; constructor( - speciesId: Species, + speciesId: SpeciesId, preFormKey: string, evoFormKey: string, trigger: SpeciesFormChangeTrigger, @@ -341,14 +341,14 @@ export class SpeciesFormChangeStatusEffectTrigger extends SpeciesFormChangeTrigg } export class SpeciesFormChangeMoveLearnedTrigger extends SpeciesFormChangeTrigger { - public move: Moves; + public move: MoveId; public known: boolean; - constructor(move: Moves, known = true) { + constructor(move: MoveId, known = true) { super(); this.move = move; this.known = known; - const moveKey = Moves[this.move] + const moveKey = MoveId[this.move] .split("_") .filter(f => f) .map((f, i) => (i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase())) @@ -368,12 +368,12 @@ export class SpeciesFormChangeMoveLearnedTrigger extends SpeciesFormChangeTrigge } export abstract class SpeciesFormChangeMoveTrigger extends SpeciesFormChangeTrigger { - public movePredicate: (m: Moves) => boolean; + public movePredicate: (m: MoveId) => boolean; public used: boolean; - constructor(move: Moves | ((m: Moves) => boolean), used = true) { + constructor(move: MoveId | ((m: MoveId) => boolean), used = true) { super(); - this.movePredicate = typeof move === "function" ? move : (m: Moves) => m === move; + this.movePredicate = typeof move === "function" ? move : (m: MoveId) => m === move; this.used = used; } } @@ -403,7 +403,7 @@ export class MeloettaFormChangePostMoveTrigger extends SpeciesFormChangePostMove return false; } // Meloetta will not transform if it has the ability Sheer Force when using Relic Song - if (pokemon.hasAbility(Abilities.SHEER_FORCE)) { + if (pokemon.hasAbility(AbilityId.SHEER_FORCE)) { return false; } return super.canChange(pokemon); @@ -453,11 +453,11 @@ export class SpeciesFormChangeLapseTeraTrigger extends SpeciesFormChangeTrigger */ export class SpeciesFormChangeWeatherTrigger extends SpeciesFormChangeTrigger { /** The ability that triggers the form change */ - public ability: Abilities; + public ability: AbilityId; /** The list of weathers that trigger the form change */ public weathers: WeatherType[]; - constructor(ability: Abilities, weathers: WeatherType[]) { + constructor(ability: AbilityId, weathers: WeatherType[]) { super(); this.ability = ability; this.weathers = weathers; @@ -492,11 +492,11 @@ export class SpeciesFormChangeWeatherTrigger extends SpeciesFormChangeTrigger { */ export class SpeciesFormChangeRevertWeatherFormTrigger extends SpeciesFormChangeTrigger { /** The ability that triggers the form change*/ - public ability: Abilities; + public ability: AbilityId; /** The list of weathers that will also trigger a form change to original form */ public weathers: WeatherType[]; - constructor(ability: Abilities, weathers: WeatherType[]) { + constructor(ability: AbilityId, weathers: WeatherType[]) { super(); this.ability = ability; this.weathers = weathers; @@ -515,7 +515,7 @@ export class SpeciesFormChangeRevertWeatherFormTrigger extends SpeciesFormChange const isWeatherSuppressed = globalScene.arena.weather?.isEffectSuppressed(); const isAbilitySuppressed = pokemon.summonData.abilitySuppressed; const summonDataAbility = pokemon.summonData.ability; - const isAbilityChanged = summonDataAbility !== this.ability && summonDataAbility !== Abilities.NONE; + const isAbilityChanged = summonDataAbility !== this.ability && summonDataAbility !== AbilityId.NONE; if (this.weathers.includes(currentWeather) || isWeatherSuppressed || isAbilitySuppressed || isAbilityChanged) { return true; @@ -553,7 +553,7 @@ export function getSpeciesFormChangeMessage(pokemon: Pokemon, formChange: Specie pokemonName: getPokemonNameWithAffix(pokemon), }); } - if (pokemon.getAbility().id === Abilities.DISGUISE) { + if (pokemon.getAbility().id === AbilityId.DISGUISE) { return i18next.t("battlePokemonForm:disguiseChange"); } return i18next.t("battlePokemonForm:formChange", { preName }); @@ -562,10 +562,10 @@ export function getSpeciesFormChangeMessage(pokemon: Pokemon, formChange: Specie /** * Gives a condition for form changing checking if a species is registered as caught in the player's dex data. * Used for fusion forms such as Kyurem and Necrozma. - * @param species {@linkcode Species} + * @param species {@linkcode SpeciesId} * @returns A {@linkcode SpeciesFormChangeCondition} checking if that species is registered as caught */ -function getSpeciesDependentFormChangeCondition(species: Species): SpeciesFormChangeCondition { +function getSpeciesDependentFormChangeCondition(species: SpeciesId): SpeciesFormChangeCondition { return new SpeciesFormChangeCondition(_p => !!globalScene.gameData.dexData[species].caughtAttr); } @@ -575,472 +575,472 @@ interface PokemonFormChanges { // biome-ignore format: manually formatted export const pokemonFormChanges: PokemonFormChanges = { - [Species.VENUSAUR]: [ - new SpeciesFormChange(Species.VENUSAUR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.VENUSAURITE)), - new SpeciesFormChange(Species.VENUSAUR, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + [SpeciesId.VENUSAUR]: [ + new SpeciesFormChange(SpeciesId.VENUSAUR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.VENUSAURITE)), + new SpeciesFormChange(SpeciesId.VENUSAUR, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) ], - [Species.BLASTOISE]: [ - new SpeciesFormChange(Species.BLASTOISE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BLASTOISINITE)), - new SpeciesFormChange(Species.BLASTOISE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + [SpeciesId.BLASTOISE]: [ + new SpeciesFormChange(SpeciesId.BLASTOISE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BLASTOISINITE)), + new SpeciesFormChange(SpeciesId.BLASTOISE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) ], - [Species.CHARIZARD]: [ - new SpeciesFormChange(Species.CHARIZARD, "", SpeciesFormKey.MEGA_X, new SpeciesFormChangeItemTrigger(FormChangeItem.CHARIZARDITE_X)), - new SpeciesFormChange(Species.CHARIZARD, "", SpeciesFormKey.MEGA_Y, new SpeciesFormChangeItemTrigger(FormChangeItem.CHARIZARDITE_Y)), - new SpeciesFormChange(Species.CHARIZARD, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + [SpeciesId.CHARIZARD]: [ + new SpeciesFormChange(SpeciesId.CHARIZARD, "", SpeciesFormKey.MEGA_X, new SpeciesFormChangeItemTrigger(FormChangeItem.CHARIZARDITE_X)), + new SpeciesFormChange(SpeciesId.CHARIZARD, "", SpeciesFormKey.MEGA_Y, new SpeciesFormChangeItemTrigger(FormChangeItem.CHARIZARDITE_Y)), + new SpeciesFormChange(SpeciesId.CHARIZARD, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) ], - [Species.BUTTERFREE]: [ - new SpeciesFormChange(Species.BUTTERFREE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + [SpeciesId.BUTTERFREE]: [ + new SpeciesFormChange(SpeciesId.BUTTERFREE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) ], - [Species.BEEDRILL]: [ - new SpeciesFormChange(Species.BEEDRILL, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BEEDRILLITE)) + [SpeciesId.BEEDRILL]: [ + new SpeciesFormChange(SpeciesId.BEEDRILL, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BEEDRILLITE)) ], - [Species.PIDGEOT]: [ - new SpeciesFormChange(Species.PIDGEOT, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.PIDGEOTITE)) + [SpeciesId.PIDGEOT]: [ + new SpeciesFormChange(SpeciesId.PIDGEOT, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.PIDGEOTITE)) ], - [Species.PIKACHU]: [ - new SpeciesFormChange(Species.PIKACHU, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), - new SpeciesFormChange(Species.PIKACHU, "partner", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + [SpeciesId.PIKACHU]: [ + new SpeciesFormChange(SpeciesId.PIKACHU, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), + new SpeciesFormChange(SpeciesId.PIKACHU, "partner", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) ], - [Species.MEOWTH]: [ - new SpeciesFormChange(Species.MEOWTH, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + [SpeciesId.MEOWTH]: [ + new SpeciesFormChange(SpeciesId.MEOWTH, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) ], - [Species.ALAKAZAM]: [ - new SpeciesFormChange(Species.ALAKAZAM, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ALAKAZITE)) + [SpeciesId.ALAKAZAM]: [ + new SpeciesFormChange(SpeciesId.ALAKAZAM, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ALAKAZITE)) ], - [Species.MACHAMP]: [ - new SpeciesFormChange(Species.MACHAMP, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + [SpeciesId.MACHAMP]: [ + new SpeciesFormChange(SpeciesId.MACHAMP, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) ], - [Species.SLOWBRO]: [ - new SpeciesFormChange(Species.SLOWBRO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SLOWBRONITE)) + [SpeciesId.SLOWBRO]: [ + new SpeciesFormChange(SpeciesId.SLOWBRO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SLOWBRONITE)) ], - [Species.GENGAR]: [ - new SpeciesFormChange(Species.GENGAR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GENGARITE)), - new SpeciesFormChange(Species.GENGAR, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + [SpeciesId.GENGAR]: [ + new SpeciesFormChange(SpeciesId.GENGAR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GENGARITE)), + new SpeciesFormChange(SpeciesId.GENGAR, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) ], - [Species.KINGLER]: [ - new SpeciesFormChange(Species.KINGLER, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + [SpeciesId.KINGLER]: [ + new SpeciesFormChange(SpeciesId.KINGLER, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) ], - [Species.KANGASKHAN]: [ - new SpeciesFormChange(Species.KANGASKHAN, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.KANGASKHANITE)) + [SpeciesId.KANGASKHAN]: [ + new SpeciesFormChange(SpeciesId.KANGASKHAN, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.KANGASKHANITE)) ], - [Species.PINSIR]: [ - new SpeciesFormChange(Species.PINSIR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.PINSIRITE)) + [SpeciesId.PINSIR]: [ + new SpeciesFormChange(SpeciesId.PINSIR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.PINSIRITE)) ], - [Species.GYARADOS]: [ - new SpeciesFormChange(Species.GYARADOS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GYARADOSITE)) + [SpeciesId.GYARADOS]: [ + new SpeciesFormChange(SpeciesId.GYARADOS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GYARADOSITE)) ], - [Species.LAPRAS]: [ - new SpeciesFormChange(Species.LAPRAS, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + [SpeciesId.LAPRAS]: [ + new SpeciesFormChange(SpeciesId.LAPRAS, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) ], - [Species.EEVEE]: [ - new SpeciesFormChange(Species.EEVEE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), - new SpeciesFormChange(Species.EEVEE, "partner", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + [SpeciesId.EEVEE]: [ + new SpeciesFormChange(SpeciesId.EEVEE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), + new SpeciesFormChange(SpeciesId.EEVEE, "partner", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) ], - [Species.SNORLAX]: [ - new SpeciesFormChange(Species.SNORLAX, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + [SpeciesId.SNORLAX]: [ + new SpeciesFormChange(SpeciesId.SNORLAX, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) ], - [Species.AERODACTYL]: [ - new SpeciesFormChange(Species.AERODACTYL, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AERODACTYLITE)) + [SpeciesId.AERODACTYL]: [ + new SpeciesFormChange(SpeciesId.AERODACTYL, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AERODACTYLITE)) ], - [Species.MEWTWO]: [ - new SpeciesFormChange(Species.MEWTWO, "", SpeciesFormKey.MEGA_X, new SpeciesFormChangeItemTrigger(FormChangeItem.MEWTWONITE_X)), - new SpeciesFormChange(Species.MEWTWO, "", SpeciesFormKey.MEGA_Y, new SpeciesFormChangeItemTrigger(FormChangeItem.MEWTWONITE_Y)) + [SpeciesId.MEWTWO]: [ + new SpeciesFormChange(SpeciesId.MEWTWO, "", SpeciesFormKey.MEGA_X, new SpeciesFormChangeItemTrigger(FormChangeItem.MEWTWONITE_X)), + new SpeciesFormChange(SpeciesId.MEWTWO, "", SpeciesFormKey.MEGA_Y, new SpeciesFormChangeItemTrigger(FormChangeItem.MEWTWONITE_Y)) ], - [Species.AMPHAROS]: [ - new SpeciesFormChange(Species.AMPHAROS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AMPHAROSITE)) + [SpeciesId.AMPHAROS]: [ + new SpeciesFormChange(SpeciesId.AMPHAROS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AMPHAROSITE)) ], - [Species.STEELIX]: [ - new SpeciesFormChange(Species.STEELIX, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.STEELIXITE)) + [SpeciesId.STEELIX]: [ + new SpeciesFormChange(SpeciesId.STEELIX, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.STEELIXITE)) ], - [Species.SCIZOR]: [ - new SpeciesFormChange(Species.SCIZOR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SCIZORITE)) + [SpeciesId.SCIZOR]: [ + new SpeciesFormChange(SpeciesId.SCIZOR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SCIZORITE)) ], - [Species.HERACROSS]: [ - new SpeciesFormChange(Species.HERACROSS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.HERACRONITE)) + [SpeciesId.HERACROSS]: [ + new SpeciesFormChange(SpeciesId.HERACROSS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.HERACRONITE)) ], - [Species.HOUNDOOM]: [ - new SpeciesFormChange(Species.HOUNDOOM, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.HOUNDOOMINITE)) + [SpeciesId.HOUNDOOM]: [ + new SpeciesFormChange(SpeciesId.HOUNDOOM, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.HOUNDOOMINITE)) ], - [Species.TYRANITAR]: [ - new SpeciesFormChange(Species.TYRANITAR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.TYRANITARITE)) + [SpeciesId.TYRANITAR]: [ + new SpeciesFormChange(SpeciesId.TYRANITAR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.TYRANITARITE)) ], - [Species.SCEPTILE]: [ - new SpeciesFormChange(Species.SCEPTILE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SCEPTILITE)) + [SpeciesId.SCEPTILE]: [ + new SpeciesFormChange(SpeciesId.SCEPTILE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SCEPTILITE)) ], - [Species.BLAZIKEN]: [ - new SpeciesFormChange(Species.BLAZIKEN, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BLAZIKENITE)) + [SpeciesId.BLAZIKEN]: [ + new SpeciesFormChange(SpeciesId.BLAZIKEN, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BLAZIKENITE)) ], - [Species.SWAMPERT]: [ - new SpeciesFormChange(Species.SWAMPERT, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SWAMPERTITE)) + [SpeciesId.SWAMPERT]: [ + new SpeciesFormChange(SpeciesId.SWAMPERT, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SWAMPERTITE)) ], - [Species.GARDEVOIR]: [ - new SpeciesFormChange(Species.GARDEVOIR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GARDEVOIRITE)) + [SpeciesId.GARDEVOIR]: [ + new SpeciesFormChange(SpeciesId.GARDEVOIR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GARDEVOIRITE)) ], - [Species.SABLEYE]: [ - new SpeciesFormChange(Species.SABLEYE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SABLENITE)) + [SpeciesId.SABLEYE]: [ + new SpeciesFormChange(SpeciesId.SABLEYE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SABLENITE)) ], - [Species.MAWILE]: [ - new SpeciesFormChange(Species.MAWILE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.MAWILITE)) + [SpeciesId.MAWILE]: [ + new SpeciesFormChange(SpeciesId.MAWILE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.MAWILITE)) ], - [Species.AGGRON]: [ - new SpeciesFormChange(Species.AGGRON, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AGGRONITE)) + [SpeciesId.AGGRON]: [ + new SpeciesFormChange(SpeciesId.AGGRON, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AGGRONITE)) ], - [Species.MEDICHAM]: [ - new SpeciesFormChange(Species.MEDICHAM, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.MEDICHAMITE)) + [SpeciesId.MEDICHAM]: [ + new SpeciesFormChange(SpeciesId.MEDICHAM, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.MEDICHAMITE)) ], - [Species.MANECTRIC]: [ - new SpeciesFormChange(Species.MANECTRIC, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.MANECTITE)) + [SpeciesId.MANECTRIC]: [ + new SpeciesFormChange(SpeciesId.MANECTRIC, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.MANECTITE)) ], - [Species.SHARPEDO]: [ - new SpeciesFormChange(Species.SHARPEDO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SHARPEDONITE)) + [SpeciesId.SHARPEDO]: [ + new SpeciesFormChange(SpeciesId.SHARPEDO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SHARPEDONITE)) ], - [Species.CAMERUPT]: [ - new SpeciesFormChange(Species.CAMERUPT, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.CAMERUPTITE)) + [SpeciesId.CAMERUPT]: [ + new SpeciesFormChange(SpeciesId.CAMERUPT, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.CAMERUPTITE)) ], - [Species.ALTARIA]: [ - new SpeciesFormChange(Species.ALTARIA, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ALTARIANITE)) + [SpeciesId.ALTARIA]: [ + new SpeciesFormChange(SpeciesId.ALTARIA, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ALTARIANITE)) ], - [Species.CASTFORM]: [ - new SpeciesFormChange(Species.CASTFORM, "", "sunny", new SpeciesFormChangeWeatherTrigger(Abilities.FORECAST, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true), - new SpeciesFormChange(Species.CASTFORM, "rainy", "sunny", new SpeciesFormChangeWeatherTrigger(Abilities.FORECAST, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true), - new SpeciesFormChange(Species.CASTFORM, "snowy", "sunny", new SpeciesFormChangeWeatherTrigger(Abilities.FORECAST, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true), - new SpeciesFormChange(Species.CASTFORM, "", "rainy", new SpeciesFormChangeWeatherTrigger(Abilities.FORECAST, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), true), - new SpeciesFormChange(Species.CASTFORM, "sunny", "rainy", new SpeciesFormChangeWeatherTrigger(Abilities.FORECAST, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), true), - new SpeciesFormChange(Species.CASTFORM, "snowy", "rainy", new SpeciesFormChangeWeatherTrigger(Abilities.FORECAST, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), true), - new SpeciesFormChange(Species.CASTFORM, "", "snowy", new SpeciesFormChangeWeatherTrigger(Abilities.FORECAST, [ WeatherType.HAIL, WeatherType.SNOW ]), true), - new SpeciesFormChange(Species.CASTFORM, "sunny", "snowy", new SpeciesFormChangeWeatherTrigger(Abilities.FORECAST, [ WeatherType.HAIL, WeatherType.SNOW ]), true), - new SpeciesFormChange(Species.CASTFORM, "rainy", "snowy", new SpeciesFormChangeWeatherTrigger(Abilities.FORECAST, [ WeatherType.HAIL, WeatherType.SNOW ]), true), - new SpeciesFormChange(Species.CASTFORM, "sunny", "", new SpeciesFormChangeRevertWeatherFormTrigger(Abilities.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]), true), - new SpeciesFormChange(Species.CASTFORM, "rainy", "", new SpeciesFormChangeRevertWeatherFormTrigger(Abilities.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]), true), - new SpeciesFormChange(Species.CASTFORM, "snowy", "", new SpeciesFormChangeRevertWeatherFormTrigger(Abilities.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]), true), - new SpeciesFormChange(Species.CASTFORM, "sunny", "", new SpeciesFormChangeActiveTrigger(), true), - new SpeciesFormChange(Species.CASTFORM, "rainy", "", new SpeciesFormChangeActiveTrigger(), true), - new SpeciesFormChange(Species.CASTFORM, "snowy", "", new SpeciesFormChangeActiveTrigger(), true) + [SpeciesId.CASTFORM]: [ + new SpeciesFormChange(SpeciesId.CASTFORM, "", "sunny", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true), + new SpeciesFormChange(SpeciesId.CASTFORM, "rainy", "sunny", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true), + new SpeciesFormChange(SpeciesId.CASTFORM, "snowy", "sunny", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true), + new SpeciesFormChange(SpeciesId.CASTFORM, "", "rainy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), true), + new SpeciesFormChange(SpeciesId.CASTFORM, "sunny", "rainy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), true), + new SpeciesFormChange(SpeciesId.CASTFORM, "snowy", "rainy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), true), + new SpeciesFormChange(SpeciesId.CASTFORM, "", "snowy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.HAIL, WeatherType.SNOW ]), true), + new SpeciesFormChange(SpeciesId.CASTFORM, "sunny", "snowy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.HAIL, WeatherType.SNOW ]), true), + new SpeciesFormChange(SpeciesId.CASTFORM, "rainy", "snowy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.HAIL, WeatherType.SNOW ]), true), + new SpeciesFormChange(SpeciesId.CASTFORM, "sunny", "", new SpeciesFormChangeRevertWeatherFormTrigger(AbilityId.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]), true), + new SpeciesFormChange(SpeciesId.CASTFORM, "rainy", "", new SpeciesFormChangeRevertWeatherFormTrigger(AbilityId.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]), true), + new SpeciesFormChange(SpeciesId.CASTFORM, "snowy", "", new SpeciesFormChangeRevertWeatherFormTrigger(AbilityId.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]), true), + new SpeciesFormChange(SpeciesId.CASTFORM, "sunny", "", new SpeciesFormChangeActiveTrigger(), true), + new SpeciesFormChange(SpeciesId.CASTFORM, "rainy", "", new SpeciesFormChangeActiveTrigger(), true), + new SpeciesFormChange(SpeciesId.CASTFORM, "snowy", "", new SpeciesFormChangeActiveTrigger(), true) ], - [Species.BANETTE]: [ - new SpeciesFormChange(Species.BANETTE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BANETTITE)) + [SpeciesId.BANETTE]: [ + new SpeciesFormChange(SpeciesId.BANETTE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BANETTITE)) ], - [Species.ABSOL]: [ - new SpeciesFormChange(Species.ABSOL, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ABSOLITE)) + [SpeciesId.ABSOL]: [ + new SpeciesFormChange(SpeciesId.ABSOL, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ABSOLITE)) ], - [Species.GLALIE]: [ - new SpeciesFormChange(Species.GLALIE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GLALITITE)) + [SpeciesId.GLALIE]: [ + new SpeciesFormChange(SpeciesId.GLALIE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GLALITITE)) ], - [Species.SALAMENCE]: [ - new SpeciesFormChange(Species.SALAMENCE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SALAMENCITE)) + [SpeciesId.SALAMENCE]: [ + new SpeciesFormChange(SpeciesId.SALAMENCE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SALAMENCITE)) ], - [Species.METAGROSS]: [ - new SpeciesFormChange(Species.METAGROSS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.METAGROSSITE)) + [SpeciesId.METAGROSS]: [ + new SpeciesFormChange(SpeciesId.METAGROSS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.METAGROSSITE)) ], - [Species.LATIAS]: [ - new SpeciesFormChange(Species.LATIAS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LATIASITE)) + [SpeciesId.LATIAS]: [ + new SpeciesFormChange(SpeciesId.LATIAS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LATIASITE)) ], - [Species.LATIOS]: [ - new SpeciesFormChange(Species.LATIOS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LATIOSITE)) + [SpeciesId.LATIOS]: [ + new SpeciesFormChange(SpeciesId.LATIOS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LATIOSITE)) ], - [Species.KYOGRE]: [ - new SpeciesFormChange(Species.KYOGRE, "", SpeciesFormKey.PRIMAL, new SpeciesFormChangeItemTrigger(FormChangeItem.BLUE_ORB)) + [SpeciesId.KYOGRE]: [ + new SpeciesFormChange(SpeciesId.KYOGRE, "", SpeciesFormKey.PRIMAL, new SpeciesFormChangeItemTrigger(FormChangeItem.BLUE_ORB)) ], - [Species.GROUDON]: [ - new SpeciesFormChange(Species.GROUDON, "", SpeciesFormKey.PRIMAL, new SpeciesFormChangeItemTrigger(FormChangeItem.RED_ORB)) + [SpeciesId.GROUDON]: [ + new SpeciesFormChange(SpeciesId.GROUDON, "", SpeciesFormKey.PRIMAL, new SpeciesFormChangeItemTrigger(FormChangeItem.RED_ORB)) ], - [Species.RAYQUAZA]: [ - new SpeciesFormChange(Species.RAYQUAZA, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.RAYQUAZITE)) + [SpeciesId.RAYQUAZA]: [ + new SpeciesFormChange(SpeciesId.RAYQUAZA, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.RAYQUAZITE)) ], - [Species.DEOXYS]: [ - new SpeciesFormChange(Species.DEOXYS, "normal", "attack", new SpeciesFormChangeItemTrigger(FormChangeItem.SHARP_METEORITE)), - new SpeciesFormChange(Species.DEOXYS, "normal", "defense", new SpeciesFormChangeItemTrigger(FormChangeItem.HARD_METEORITE)), - new SpeciesFormChange(Species.DEOXYS, "normal", "speed", new SpeciesFormChangeItemTrigger(FormChangeItem.SMOOTH_METEORITE)) + [SpeciesId.DEOXYS]: [ + new SpeciesFormChange(SpeciesId.DEOXYS, "normal", "attack", new SpeciesFormChangeItemTrigger(FormChangeItem.SHARP_METEORITE)), + new SpeciesFormChange(SpeciesId.DEOXYS, "normal", "defense", new SpeciesFormChangeItemTrigger(FormChangeItem.HARD_METEORITE)), + new SpeciesFormChange(SpeciesId.DEOXYS, "normal", "speed", new SpeciesFormChangeItemTrigger(FormChangeItem.SMOOTH_METEORITE)) ], - [Species.CHERRIM]: [ - new SpeciesFormChange(Species.CHERRIM, "overcast", "sunshine", new SpeciesFormChangeWeatherTrigger(Abilities.FLOWER_GIFT, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true), - new SpeciesFormChange(Species.CHERRIM, "sunshine", "overcast", new SpeciesFormChangeRevertWeatherFormTrigger(Abilities.FLOWER_GIFT, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG, WeatherType.HAIL, WeatherType.HEAVY_RAIN, WeatherType.SNOW, WeatherType.RAIN ]), true), - new SpeciesFormChange(Species.CHERRIM, "sunshine", "overcast", new SpeciesFormChangeActiveTrigger(), true) + [SpeciesId.CHERRIM]: [ + new SpeciesFormChange(SpeciesId.CHERRIM, "overcast", "sunshine", new SpeciesFormChangeWeatherTrigger(AbilityId.FLOWER_GIFT, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true), + new SpeciesFormChange(SpeciesId.CHERRIM, "sunshine", "overcast", new SpeciesFormChangeRevertWeatherFormTrigger(AbilityId.FLOWER_GIFT, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG, WeatherType.HAIL, WeatherType.HEAVY_RAIN, WeatherType.SNOW, WeatherType.RAIN ]), true), + new SpeciesFormChange(SpeciesId.CHERRIM, "sunshine", "overcast", new SpeciesFormChangeActiveTrigger(), true) ], - [Species.LOPUNNY]: [ - new SpeciesFormChange(Species.LOPUNNY, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LOPUNNITE)) + [SpeciesId.LOPUNNY]: [ + new SpeciesFormChange(SpeciesId.LOPUNNY, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LOPUNNITE)) ], - [Species.GARCHOMP]: [ - new SpeciesFormChange(Species.GARCHOMP, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GARCHOMPITE)) + [SpeciesId.GARCHOMP]: [ + new SpeciesFormChange(SpeciesId.GARCHOMP, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GARCHOMPITE)) ], - [Species.LUCARIO]: [ - new SpeciesFormChange(Species.LUCARIO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LUCARIONITE)) + [SpeciesId.LUCARIO]: [ + new SpeciesFormChange(SpeciesId.LUCARIO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LUCARIONITE)) ], - [Species.ABOMASNOW]: [ - new SpeciesFormChange(Species.ABOMASNOW, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ABOMASITE)) + [SpeciesId.ABOMASNOW]: [ + new SpeciesFormChange(SpeciesId.ABOMASNOW, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ABOMASITE)) ], - [Species.GALLADE]: [ - new SpeciesFormChange(Species.GALLADE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GALLADITE)) + [SpeciesId.GALLADE]: [ + new SpeciesFormChange(SpeciesId.GALLADE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GALLADITE)) ], - [Species.AUDINO]: [ - new SpeciesFormChange(Species.AUDINO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AUDINITE)) + [SpeciesId.AUDINO]: [ + new SpeciesFormChange(SpeciesId.AUDINO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AUDINITE)) ], - [Species.DIALGA]: [ - new SpeciesFormChange(Species.DIALGA, "", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.ADAMANT_CRYSTAL)) - ], - [Species.PALKIA]: [ - new SpeciesFormChange(Species.PALKIA, "", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.LUSTROUS_GLOBE)) - ], - [Species.GIRATINA]: [ - new SpeciesFormChange(Species.GIRATINA, "altered", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.GRISEOUS_CORE)) - ], - [Species.SHAYMIN]: [ - new SpeciesFormChange(Species.SHAYMIN, "land", "sky", new SpeciesFormChangeItemTrigger(FormChangeItem.GRACIDEA)), - ], - [Species.ARCEUS]: [ - new SpeciesFormChange(Species.ARCEUS, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIST_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "flying", new SpeciesFormChangeItemTrigger(FormChangeItem.SKY_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "poison", new SpeciesFormChangeItemTrigger(FormChangeItem.TOXIC_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "ground", new SpeciesFormChangeItemTrigger(FormChangeItem.EARTH_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "rock", new SpeciesFormChangeItemTrigger(FormChangeItem.STONE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "bug", new SpeciesFormChangeItemTrigger(FormChangeItem.INSECT_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "ghost", new SpeciesFormChangeItemTrigger(FormChangeItem.SPOOKY_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "steel", new SpeciesFormChangeItemTrigger(FormChangeItem.IRON_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "fire", new SpeciesFormChangeItemTrigger(FormChangeItem.FLAME_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "water", new SpeciesFormChangeItemTrigger(FormChangeItem.SPLASH_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "grass", new SpeciesFormChangeItemTrigger(FormChangeItem.MEADOW_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "electric", new SpeciesFormChangeItemTrigger(FormChangeItem.ZAP_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "psychic", new SpeciesFormChangeItemTrigger(FormChangeItem.MIND_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICICLE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "dragon", new SpeciesFormChangeItemTrigger(FormChangeItem.DRACO_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "dark", new SpeciesFormChangeItemTrigger(FormChangeItem.DREAD_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - new SpeciesFormChange(Species.ARCEUS, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.PIXIE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.MULTITYPE))), - ], - [Species.DARMANITAN]: [ - new SpeciesFormChange(Species.DARMANITAN, "", "zen", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.DARMANITAN, "zen", "", new SpeciesFormChangeAbilityTrigger(), true) - ], - [Species.GARBODOR]: [ - new SpeciesFormChange(Species.GARBODOR, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.TORNADUS]: [ - new SpeciesFormChange(Species.TORNADUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS)) - ], - [Species.THUNDURUS]: [ - new SpeciesFormChange(Species.THUNDURUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS)) - ], - [Species.LANDORUS]: [ - new SpeciesFormChange(Species.LANDORUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS)) - ], - [Species.KYUREM]: [ - new SpeciesFormChange(Species.KYUREM, "", "black", new SpeciesFormChangeItemTrigger(FormChangeItem.DARK_STONE), false, getSpeciesDependentFormChangeCondition(Species.ZEKROM)), - new SpeciesFormChange(Species.KYUREM, "", "white", new SpeciesFormChangeItemTrigger(FormChangeItem.LIGHT_STONE), false, getSpeciesDependentFormChangeCondition(Species.RESHIRAM)) - ], - [Species.KELDEO]: [ - new SpeciesFormChange(Species.KELDEO, "ordinary", "resolute", new SpeciesFormChangeMoveLearnedTrigger(Moves.SECRET_SWORD), false, new SpeciesFormChangeCondition(() => globalScene.gameMode.isDaily !== true)), - new SpeciesFormChange(Species.KELDEO, "resolute", "ordinary", new SpeciesFormChangeMoveLearnedTrigger(Moves.SECRET_SWORD, false), false, new SpeciesFormChangeCondition(() => globalScene.gameMode.isDaily !== true)) - ], - [Species.MELOETTA]: [ - new SpeciesFormChange(Species.MELOETTA, "aria", "pirouette", new MeloettaFormChangePostMoveTrigger(Moves.RELIC_SONG), true), - new SpeciesFormChange(Species.MELOETTA, "pirouette", "aria", new MeloettaFormChangePostMoveTrigger(Moves.RELIC_SONG), true) - ], - [Species.GENESECT]: [ - new SpeciesFormChange(Species.GENESECT, "", "shock", new SpeciesFormChangeItemTrigger(FormChangeItem.SHOCK_DRIVE)), - new SpeciesFormChange(Species.GENESECT, "", "burn", new SpeciesFormChangeItemTrigger(FormChangeItem.BURN_DRIVE)), - new SpeciesFormChange(Species.GENESECT, "", "chill", new SpeciesFormChangeItemTrigger(FormChangeItem.CHILL_DRIVE)), - new SpeciesFormChange(Species.GENESECT, "", "douse", new SpeciesFormChangeItemTrigger(FormChangeItem.DOUSE_DRIVE)) - ], - [Species.GRENINJA]: [ - new SpeciesFormChange(Species.GRENINJA, "battle-bond", "ash", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.GRENINJA, "ash", "battle-bond", new SpeciesFormChangeAbilityTrigger(), true) - ], - [Species.PALAFIN] : [ - new SpeciesFormChange(Species.PALAFIN, "zero", "hero", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.PALAFIN, "hero", "zero", new SpeciesFormChangeAbilityTrigger(), true) - ], - [Species.AEGISLASH]: [ - new SpeciesFormChange(Species.AEGISLASH, "blade", "shield", new SpeciesFormChangePreMoveTrigger(Moves.KINGS_SHIELD), true, new SpeciesFormChangeCondition(p => p.hasAbility(Abilities.STANCE_CHANGE))), - new SpeciesFormChange(Species.AEGISLASH, "shield", "blade", new SpeciesFormChangePreMoveTrigger(m => allMoves[m].category !== MoveCategory.STATUS), true, new SpeciesFormChangeCondition(p => p.hasAbility(Abilities.STANCE_CHANGE))), - new SpeciesFormChange(Species.AEGISLASH, "blade", "shield", new SpeciesFormChangeActiveTrigger(false), true) - ], - [Species.XERNEAS]: [ - new SpeciesFormChange(Species.XERNEAS, "neutral", "active", new SpeciesFormChangeActiveTrigger(true), true), - new SpeciesFormChange(Species.XERNEAS, "active", "neutral", new SpeciesFormChangeActiveTrigger(false), true) - ], - [Species.ZYGARDE]: [ - new SpeciesFormChange(Species.ZYGARDE, "50-pc", "complete", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.ZYGARDE, "complete", "50-pc", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.ZYGARDE, "10-pc", "10-complete", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.ZYGARDE, "10-complete", "10-pc", new SpeciesFormChangeAbilityTrigger(), true) - ], - [Species.DIANCIE]: [ - new SpeciesFormChange(Species.DIANCIE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.DIANCITE)) - ], - [Species.HOOPA]: [ - new SpeciesFormChange(Species.HOOPA, "", "unbound", new SpeciesFormChangeItemTrigger(FormChangeItem.PRISON_BOTTLE)) - ], - [Species.WISHIWASHI]: [ - new SpeciesFormChange(Species.WISHIWASHI, "", "school", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.WISHIWASHI, "school", "", new SpeciesFormChangeAbilityTrigger(), true) - ], - [Species.SILVALLY]: [ - new SpeciesFormChange(Species.SILVALLY, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIGHTING_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "flying", new SpeciesFormChangeItemTrigger(FormChangeItem.FLYING_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "poison", new SpeciesFormChangeItemTrigger(FormChangeItem.POISON_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "ground", new SpeciesFormChangeItemTrigger(FormChangeItem.GROUND_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "rock", new SpeciesFormChangeItemTrigger(FormChangeItem.ROCK_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "bug", new SpeciesFormChangeItemTrigger(FormChangeItem.BUG_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "ghost", new SpeciesFormChangeItemTrigger(FormChangeItem.GHOST_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "steel", new SpeciesFormChangeItemTrigger(FormChangeItem.STEEL_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "fire", new SpeciesFormChangeItemTrigger(FormChangeItem.FIRE_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "water", new SpeciesFormChangeItemTrigger(FormChangeItem.WATER_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "grass", new SpeciesFormChangeItemTrigger(FormChangeItem.GRASS_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "electric", new SpeciesFormChangeItemTrigger(FormChangeItem.ELECTRIC_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "psychic", new SpeciesFormChangeItemTrigger(FormChangeItem.PSYCHIC_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICE_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "dragon", new SpeciesFormChangeItemTrigger(FormChangeItem.DRAGON_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "dark", new SpeciesFormChangeItemTrigger(FormChangeItem.DARK_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))), - new SpeciesFormChange(Species.SILVALLY, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.FAIRY_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(Abilities.RKS_SYSTEM))) - ], - [Species.MINIOR]: [ - new SpeciesFormChange(Species.MINIOR, "red-meteor", "red", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "red", "red-meteor", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "orange-meteor", "orange", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "orange", "orange-meteor", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "yellow-meteor", "yellow", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "yellow", "yellow-meteor", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "green-meteor", "green", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "green", "green-meteor", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "blue-meteor", "blue", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "blue", "blue-meteor", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "indigo-meteor", "indigo", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "indigo", "indigo-meteor", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "violet-meteor", "violet", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "violet", "violet-meteor", new SpeciesFormChangeAbilityTrigger(), true) - ], - [Species.MIMIKYU]: [ - new SpeciesFormChange(Species.MIMIKYU, "disguised", "busted", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MIMIKYU, "busted", "disguised", new SpeciesFormChangeAbilityTrigger(), true) - ], - [Species.NECROZMA]: [ - new SpeciesFormChange(Species.NECROZMA, "", "dawn-wings", new SpeciesFormChangeItemTrigger(FormChangeItem.N_LUNARIZER), false, getSpeciesDependentFormChangeCondition(Species.LUNALA)), - new SpeciesFormChange(Species.NECROZMA, "", "dusk-mane", new SpeciesFormChangeItemTrigger(FormChangeItem.N_SOLARIZER), false, getSpeciesDependentFormChangeCondition(Species.SOLGALEO)), - new SpeciesFormChange(Species.NECROZMA, "dawn-wings", "ultra", new SpeciesFormChangeItemTrigger(FormChangeItem.ULTRANECROZIUM_Z)), - new SpeciesFormChange(Species.NECROZMA, "dusk-mane", "ultra", new SpeciesFormChangeItemTrigger(FormChangeItem.ULTRANECROZIUM_Z)) - ], - [Species.MELMETAL]: [ - new SpeciesFormChange(Species.MELMETAL, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.RILLABOOM]: [ - new SpeciesFormChange(Species.RILLABOOM, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.CINDERACE]: [ - new SpeciesFormChange(Species.CINDERACE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.INTELEON]: [ - new SpeciesFormChange(Species.INTELEON, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.CORVIKNIGHT]: [ - new SpeciesFormChange(Species.CORVIKNIGHT, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.ORBEETLE]: [ - new SpeciesFormChange(Species.ORBEETLE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.DREDNAW]: [ - new SpeciesFormChange(Species.DREDNAW, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.COALOSSAL]: [ - new SpeciesFormChange(Species.COALOSSAL, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.FLAPPLE]: [ - new SpeciesFormChange(Species.FLAPPLE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.APPLETUN]: [ - new SpeciesFormChange(Species.APPLETUN, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.SANDACONDA]: [ - new SpeciesFormChange(Species.SANDACONDA, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.CRAMORANT]: [ - new SpeciesFormChange(Species.CRAMORANT, "", "gulping", new SpeciesFormChangeAbilityTrigger, true, new SpeciesFormChangeCondition(p => p.getHpRatio() >= .5)), - new SpeciesFormChange(Species.CRAMORANT, "", "gorging", new SpeciesFormChangeAbilityTrigger, true, new SpeciesFormChangeCondition(p => p.getHpRatio() < .5)), - new SpeciesFormChange(Species.CRAMORANT, "gulping", "", new SpeciesFormChangeAbilityTrigger, true), - new SpeciesFormChange(Species.CRAMORANT, "gorging", "", new SpeciesFormChangeAbilityTrigger, true), - new SpeciesFormChange(Species.CRAMORANT, "gulping", "", new SpeciesFormChangeActiveTrigger(false), true), - new SpeciesFormChange(Species.CRAMORANT, "gorging", "", new SpeciesFormChangeActiveTrigger(false), true) - ], - [Species.TOXTRICITY]: [ - new SpeciesFormChange(Species.TOXTRICITY, "amped", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), - new SpeciesFormChange(Species.TOXTRICITY, "lowkey", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), - new SpeciesFormChange(Species.TOXTRICITY, SpeciesFormKey.GIGANTAMAX, "amped", new SpeciesFormChangeCompoundTrigger(new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS, false), new SpeciesDefaultFormMatchTrigger("amped"))), - new SpeciesFormChange(Species.TOXTRICITY, SpeciesFormKey.GIGANTAMAX, "lowkey", new SpeciesFormChangeCompoundTrigger(new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS, false), new SpeciesDefaultFormMatchTrigger("lowkey"))) - ], - [Species.CENTISKORCH]: [ - new SpeciesFormChange(Species.CENTISKORCH, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.HATTERENE]: [ - new SpeciesFormChange(Species.HATTERENE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.GRIMMSNARL]: [ - new SpeciesFormChange(Species.GRIMMSNARL, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.ALCREMIE]: [ - new SpeciesFormChange(Species.ALCREMIE, "vanilla-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), - new SpeciesFormChange(Species.ALCREMIE, "ruby-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), - new SpeciesFormChange(Species.ALCREMIE, "matcha-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), - new SpeciesFormChange(Species.ALCREMIE, "mint-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), - new SpeciesFormChange(Species.ALCREMIE, "lemon-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), - new SpeciesFormChange(Species.ALCREMIE, "salted-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), - new SpeciesFormChange(Species.ALCREMIE, "ruby-swirl", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), - new SpeciesFormChange(Species.ALCREMIE, "caramel-swirl", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), - new SpeciesFormChange(Species.ALCREMIE, "rainbow-swirl", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.EISCUE]: [ - new SpeciesFormChange(Species.EISCUE, "", "no-ice", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.EISCUE, "no-ice", "", new SpeciesFormChangeAbilityTrigger(), true) - ], - [Species.MORPEKO]: [ - new SpeciesFormChange(Species.MORPEKO, "full-belly", "hangry", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.MORPEKO, "hangry", "full-belly", new SpeciesFormChangeAbilityTrigger(), true) - ], - [Species.COPPERAJAH]: [ - new SpeciesFormChange(Species.COPPERAJAH, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.DURALUDON]: [ - new SpeciesFormChange(Species.DURALUDON, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.ZACIAN]: [ - new SpeciesFormChange(Species.ZACIAN, "hero-of-many-battles", "crowned", new SpeciesFormChangeItemTrigger(FormChangeItem.RUSTED_SWORD)) - ], - [Species.ZAMAZENTA]: [ - new SpeciesFormChange(Species.ZAMAZENTA, "hero-of-many-battles", "crowned", new SpeciesFormChangeItemTrigger(FormChangeItem.RUSTED_SHIELD)) - ], - [Species.ETERNATUS]: [ - new SpeciesFormChange(Species.ETERNATUS, "", SpeciesFormKey.ETERNAMAX, new SpeciesFormChangeManualTrigger()), - new SpeciesFormChange(Species.ETERNATUS, "", SpeciesFormKey.ETERNAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.URSHIFU]: [ - new SpeciesFormChange(Species.URSHIFU, "single-strike", SpeciesFormKey.GIGANTAMAX_SINGLE, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), - new SpeciesFormChange(Species.URSHIFU, "rapid-strike", SpeciesFormKey.GIGANTAMAX_RAPID, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) - ], - [Species.CALYREX]: [ - new SpeciesFormChange(Species.CALYREX, "", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICY_REINS_OF_UNITY), false, getSpeciesDependentFormChangeCondition(Species.GLASTRIER)), - new SpeciesFormChange(Species.CALYREX, "", "shadow", new SpeciesFormChangeItemTrigger(FormChangeItem.SHADOW_REINS_OF_UNITY), false, getSpeciesDependentFormChangeCondition(Species.SPECTRIER)) - ], - [Species.ENAMORUS]: [ - new SpeciesFormChange(Species.ENAMORUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS)) - ], - [Species.OGERPON]: [ - new SpeciesFormChange(Species.OGERPON, "teal-mask", "wellspring-mask", new SpeciesFormChangeItemTrigger(FormChangeItem.WELLSPRING_MASK)), - new SpeciesFormChange(Species.OGERPON, "teal-mask", "hearthflame-mask", new SpeciesFormChangeItemTrigger(FormChangeItem.HEARTHFLAME_MASK)), - new SpeciesFormChange(Species.OGERPON, "teal-mask", "cornerstone-mask", new SpeciesFormChangeItemTrigger(FormChangeItem.CORNERSTONE_MASK)), - new SpeciesFormChange(Species.OGERPON, "teal-mask", "teal-mask-tera", new SpeciesFormChangeTeraTrigger(), true), - new SpeciesFormChange(Species.OGERPON, "teal-mask-tera", "teal-mask", new SpeciesFormChangeLapseTeraTrigger(), true), - new SpeciesFormChange(Species.OGERPON, "wellspring-mask", "wellspring-mask-tera", new SpeciesFormChangeTeraTrigger(), true), - new SpeciesFormChange(Species.OGERPON, "wellspring-mask-tera", "wellspring-mask", new SpeciesFormChangeLapseTeraTrigger(), true), - new SpeciesFormChange(Species.OGERPON, "hearthflame-mask", "hearthflame-mask-tera", new SpeciesFormChangeTeraTrigger(), true), - new SpeciesFormChange(Species.OGERPON, "hearthflame-mask-tera", "hearthflame-mask", new SpeciesFormChangeLapseTeraTrigger(), true), - new SpeciesFormChange(Species.OGERPON, "cornerstone-mask", "cornerstone-mask-tera", new SpeciesFormChangeTeraTrigger(), true), - new SpeciesFormChange(Species.OGERPON, "cornerstone-mask-tera", "cornerstone-mask", new SpeciesFormChangeLapseTeraTrigger(), true) - ], - [Species.TERAPAGOS]: [ - new SpeciesFormChange(Species.TERAPAGOS, "", "terastal", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.TERAPAGOS, "terastal", "stellar", new SpeciesFormChangeTeraTrigger(), true), - new SpeciesFormChange(Species.TERAPAGOS, "stellar", "terastal", new SpeciesFormChangeLapseTeraTrigger(), true) - ], - [Species.GALAR_DARMANITAN]: [ - new SpeciesFormChange(Species.GALAR_DARMANITAN, "", "zen", new SpeciesFormChangeAbilityTrigger(), true), - new SpeciesFormChange(Species.GALAR_DARMANITAN, "zen", "", new SpeciesFormChangeAbilityTrigger(), true) + [SpeciesId.DIALGA]: [ + new SpeciesFormChange(SpeciesId.DIALGA, "", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.ADAMANT_CRYSTAL)) + ], + [SpeciesId.PALKIA]: [ + new SpeciesFormChange(SpeciesId.PALKIA, "", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.LUSTROUS_GLOBE)) + ], + [SpeciesId.GIRATINA]: [ + new SpeciesFormChange(SpeciesId.GIRATINA, "altered", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.GRISEOUS_CORE)) + ], + [SpeciesId.SHAYMIN]: [ + new SpeciesFormChange(SpeciesId.SHAYMIN, "land", "sky", new SpeciesFormChangeItemTrigger(FormChangeItem.GRACIDEA)), + ], + [SpeciesId.ARCEUS]: [ + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIST_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "flying", new SpeciesFormChangeItemTrigger(FormChangeItem.SKY_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "poison", new SpeciesFormChangeItemTrigger(FormChangeItem.TOXIC_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "ground", new SpeciesFormChangeItemTrigger(FormChangeItem.EARTH_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "rock", new SpeciesFormChangeItemTrigger(FormChangeItem.STONE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "bug", new SpeciesFormChangeItemTrigger(FormChangeItem.INSECT_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "ghost", new SpeciesFormChangeItemTrigger(FormChangeItem.SPOOKY_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "steel", new SpeciesFormChangeItemTrigger(FormChangeItem.IRON_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "fire", new SpeciesFormChangeItemTrigger(FormChangeItem.FLAME_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "water", new SpeciesFormChangeItemTrigger(FormChangeItem.SPLASH_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "grass", new SpeciesFormChangeItemTrigger(FormChangeItem.MEADOW_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "electric", new SpeciesFormChangeItemTrigger(FormChangeItem.ZAP_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "psychic", new SpeciesFormChangeItemTrigger(FormChangeItem.MIND_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICICLE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "dragon", new SpeciesFormChangeItemTrigger(FormChangeItem.DRACO_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "dark", new SpeciesFormChangeItemTrigger(FormChangeItem.DREAD_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.PIXIE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))), + ], + [SpeciesId.DARMANITAN]: [ + new SpeciesFormChange(SpeciesId.DARMANITAN, "", "zen", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.DARMANITAN, "zen", "", new SpeciesFormChangeAbilityTrigger(), true) + ], + [SpeciesId.GARBODOR]: [ + new SpeciesFormChange(SpeciesId.GARBODOR, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.TORNADUS]: [ + new SpeciesFormChange(SpeciesId.TORNADUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS)) + ], + [SpeciesId.THUNDURUS]: [ + new SpeciesFormChange(SpeciesId.THUNDURUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS)) + ], + [SpeciesId.LANDORUS]: [ + new SpeciesFormChange(SpeciesId.LANDORUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS)) + ], + [SpeciesId.KYUREM]: [ + new SpeciesFormChange(SpeciesId.KYUREM, "", "black", new SpeciesFormChangeItemTrigger(FormChangeItem.DARK_STONE), false, getSpeciesDependentFormChangeCondition(SpeciesId.ZEKROM)), + new SpeciesFormChange(SpeciesId.KYUREM, "", "white", new SpeciesFormChangeItemTrigger(FormChangeItem.LIGHT_STONE), false, getSpeciesDependentFormChangeCondition(SpeciesId.RESHIRAM)) + ], + [SpeciesId.KELDEO]: [ + new SpeciesFormChange(SpeciesId.KELDEO, "ordinary", "resolute", new SpeciesFormChangeMoveLearnedTrigger(MoveId.SECRET_SWORD), false, new SpeciesFormChangeCondition(() => globalScene.gameMode.isDaily !== true)), + new SpeciesFormChange(SpeciesId.KELDEO, "resolute", "ordinary", new SpeciesFormChangeMoveLearnedTrigger(MoveId.SECRET_SWORD, false), false, new SpeciesFormChangeCondition(() => globalScene.gameMode.isDaily !== true)) + ], + [SpeciesId.MELOETTA]: [ + new SpeciesFormChange(SpeciesId.MELOETTA, "aria", "pirouette", new MeloettaFormChangePostMoveTrigger(MoveId.RELIC_SONG), true), + new SpeciesFormChange(SpeciesId.MELOETTA, "pirouette", "aria", new MeloettaFormChangePostMoveTrigger(MoveId.RELIC_SONG), true) + ], + [SpeciesId.GENESECT]: [ + new SpeciesFormChange(SpeciesId.GENESECT, "", "shock", new SpeciesFormChangeItemTrigger(FormChangeItem.SHOCK_DRIVE)), + new SpeciesFormChange(SpeciesId.GENESECT, "", "burn", new SpeciesFormChangeItemTrigger(FormChangeItem.BURN_DRIVE)), + new SpeciesFormChange(SpeciesId.GENESECT, "", "chill", new SpeciesFormChangeItemTrigger(FormChangeItem.CHILL_DRIVE)), + new SpeciesFormChange(SpeciesId.GENESECT, "", "douse", new SpeciesFormChangeItemTrigger(FormChangeItem.DOUSE_DRIVE)) + ], + [SpeciesId.GRENINJA]: [ + new SpeciesFormChange(SpeciesId.GRENINJA, "battle-bond", "ash", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.GRENINJA, "ash", "battle-bond", new SpeciesFormChangeAbilityTrigger(), true) + ], + [SpeciesId.PALAFIN] : [ + new SpeciesFormChange(SpeciesId.PALAFIN, "zero", "hero", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.PALAFIN, "hero", "zero", new SpeciesFormChangeAbilityTrigger(), true) + ], + [SpeciesId.AEGISLASH]: [ + new SpeciesFormChange(SpeciesId.AEGISLASH, "blade", "shield", new SpeciesFormChangePreMoveTrigger(MoveId.KINGS_SHIELD), true, new SpeciesFormChangeCondition(p => p.hasAbility(AbilityId.STANCE_CHANGE))), + new SpeciesFormChange(SpeciesId.AEGISLASH, "shield", "blade", new SpeciesFormChangePreMoveTrigger(m => allMoves[m].category !== MoveCategory.STATUS), true, new SpeciesFormChangeCondition(p => p.hasAbility(AbilityId.STANCE_CHANGE))), + new SpeciesFormChange(SpeciesId.AEGISLASH, "blade", "shield", new SpeciesFormChangeActiveTrigger(false), true) + ], + [SpeciesId.XERNEAS]: [ + new SpeciesFormChange(SpeciesId.XERNEAS, "neutral", "active", new SpeciesFormChangeActiveTrigger(true), true), + new SpeciesFormChange(SpeciesId.XERNEAS, "active", "neutral", new SpeciesFormChangeActiveTrigger(false), true) + ], + [SpeciesId.ZYGARDE]: [ + new SpeciesFormChange(SpeciesId.ZYGARDE, "50-pc", "complete", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.ZYGARDE, "complete", "50-pc", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.ZYGARDE, "10-pc", "10-complete", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.ZYGARDE, "10-complete", "10-pc", new SpeciesFormChangeAbilityTrigger(), true) + ], + [SpeciesId.DIANCIE]: [ + new SpeciesFormChange(SpeciesId.DIANCIE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.DIANCITE)) + ], + [SpeciesId.HOOPA]: [ + new SpeciesFormChange(SpeciesId.HOOPA, "", "unbound", new SpeciesFormChangeItemTrigger(FormChangeItem.PRISON_BOTTLE)) + ], + [SpeciesId.WISHIWASHI]: [ + new SpeciesFormChange(SpeciesId.WISHIWASHI, "", "school", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.WISHIWASHI, "school", "", new SpeciesFormChangeAbilityTrigger(), true) + ], + [SpeciesId.SILVALLY]: [ + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIGHTING_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "flying", new SpeciesFormChangeItemTrigger(FormChangeItem.FLYING_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "poison", new SpeciesFormChangeItemTrigger(FormChangeItem.POISON_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "ground", new SpeciesFormChangeItemTrigger(FormChangeItem.GROUND_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "rock", new SpeciesFormChangeItemTrigger(FormChangeItem.ROCK_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "bug", new SpeciesFormChangeItemTrigger(FormChangeItem.BUG_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "ghost", new SpeciesFormChangeItemTrigger(FormChangeItem.GHOST_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "steel", new SpeciesFormChangeItemTrigger(FormChangeItem.STEEL_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "fire", new SpeciesFormChangeItemTrigger(FormChangeItem.FIRE_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "water", new SpeciesFormChangeItemTrigger(FormChangeItem.WATER_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "grass", new SpeciesFormChangeItemTrigger(FormChangeItem.GRASS_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "electric", new SpeciesFormChangeItemTrigger(FormChangeItem.ELECTRIC_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "psychic", new SpeciesFormChangeItemTrigger(FormChangeItem.PSYCHIC_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICE_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "dragon", new SpeciesFormChangeItemTrigger(FormChangeItem.DRAGON_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "dark", new SpeciesFormChangeItemTrigger(FormChangeItem.DARK_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))), + new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.FAIRY_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))) + ], + [SpeciesId.MINIOR]: [ + new SpeciesFormChange(SpeciesId.MINIOR, "red-meteor", "red", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MINIOR, "red", "red-meteor", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MINIOR, "orange-meteor", "orange", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MINIOR, "orange", "orange-meteor", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MINIOR, "yellow-meteor", "yellow", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MINIOR, "yellow", "yellow-meteor", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MINIOR, "green-meteor", "green", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MINIOR, "green", "green-meteor", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MINIOR, "blue-meteor", "blue", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MINIOR, "blue", "blue-meteor", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MINIOR, "indigo-meteor", "indigo", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MINIOR, "indigo", "indigo-meteor", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MINIOR, "violet-meteor", "violet", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MINIOR, "violet", "violet-meteor", new SpeciesFormChangeAbilityTrigger(), true) + ], + [SpeciesId.MIMIKYU]: [ + new SpeciesFormChange(SpeciesId.MIMIKYU, "disguised", "busted", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MIMIKYU, "busted", "disguised", new SpeciesFormChangeAbilityTrigger(), true) + ], + [SpeciesId.NECROZMA]: [ + new SpeciesFormChange(SpeciesId.NECROZMA, "", "dawn-wings", new SpeciesFormChangeItemTrigger(FormChangeItem.N_LUNARIZER), false, getSpeciesDependentFormChangeCondition(SpeciesId.LUNALA)), + new SpeciesFormChange(SpeciesId.NECROZMA, "", "dusk-mane", new SpeciesFormChangeItemTrigger(FormChangeItem.N_SOLARIZER), false, getSpeciesDependentFormChangeCondition(SpeciesId.SOLGALEO)), + new SpeciesFormChange(SpeciesId.NECROZMA, "dawn-wings", "ultra", new SpeciesFormChangeItemTrigger(FormChangeItem.ULTRANECROZIUM_Z)), + new SpeciesFormChange(SpeciesId.NECROZMA, "dusk-mane", "ultra", new SpeciesFormChangeItemTrigger(FormChangeItem.ULTRANECROZIUM_Z)) + ], + [SpeciesId.MELMETAL]: [ + new SpeciesFormChange(SpeciesId.MELMETAL, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.RILLABOOM]: [ + new SpeciesFormChange(SpeciesId.RILLABOOM, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.CINDERACE]: [ + new SpeciesFormChange(SpeciesId.CINDERACE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.INTELEON]: [ + new SpeciesFormChange(SpeciesId.INTELEON, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.CORVIKNIGHT]: [ + new SpeciesFormChange(SpeciesId.CORVIKNIGHT, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.ORBEETLE]: [ + new SpeciesFormChange(SpeciesId.ORBEETLE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.DREDNAW]: [ + new SpeciesFormChange(SpeciesId.DREDNAW, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.COALOSSAL]: [ + new SpeciesFormChange(SpeciesId.COALOSSAL, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.FLAPPLE]: [ + new SpeciesFormChange(SpeciesId.FLAPPLE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.APPLETUN]: [ + new SpeciesFormChange(SpeciesId.APPLETUN, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.SANDACONDA]: [ + new SpeciesFormChange(SpeciesId.SANDACONDA, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.CRAMORANT]: [ + new SpeciesFormChange(SpeciesId.CRAMORANT, "", "gulping", new SpeciesFormChangeAbilityTrigger, true, new SpeciesFormChangeCondition(p => p.getHpRatio() >= .5)), + new SpeciesFormChange(SpeciesId.CRAMORANT, "", "gorging", new SpeciesFormChangeAbilityTrigger, true, new SpeciesFormChangeCondition(p => p.getHpRatio() < .5)), + new SpeciesFormChange(SpeciesId.CRAMORANT, "gulping", "", new SpeciesFormChangeAbilityTrigger, true), + new SpeciesFormChange(SpeciesId.CRAMORANT, "gorging", "", new SpeciesFormChangeAbilityTrigger, true), + new SpeciesFormChange(SpeciesId.CRAMORANT, "gulping", "", new SpeciesFormChangeActiveTrigger(false), true), + new SpeciesFormChange(SpeciesId.CRAMORANT, "gorging", "", new SpeciesFormChangeActiveTrigger(false), true) + ], + [SpeciesId.TOXTRICITY]: [ + new SpeciesFormChange(SpeciesId.TOXTRICITY, "amped", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), + new SpeciesFormChange(SpeciesId.TOXTRICITY, "lowkey", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), + new SpeciesFormChange(SpeciesId.TOXTRICITY, SpeciesFormKey.GIGANTAMAX, "amped", new SpeciesFormChangeCompoundTrigger(new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS, false), new SpeciesDefaultFormMatchTrigger("amped"))), + new SpeciesFormChange(SpeciesId.TOXTRICITY, SpeciesFormKey.GIGANTAMAX, "lowkey", new SpeciesFormChangeCompoundTrigger(new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS, false), new SpeciesDefaultFormMatchTrigger("lowkey"))) + ], + [SpeciesId.CENTISKORCH]: [ + new SpeciesFormChange(SpeciesId.CENTISKORCH, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.HATTERENE]: [ + new SpeciesFormChange(SpeciesId.HATTERENE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.GRIMMSNARL]: [ + new SpeciesFormChange(SpeciesId.GRIMMSNARL, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.ALCREMIE]: [ + new SpeciesFormChange(SpeciesId.ALCREMIE, "vanilla-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), + new SpeciesFormChange(SpeciesId.ALCREMIE, "ruby-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), + new SpeciesFormChange(SpeciesId.ALCREMIE, "matcha-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), + new SpeciesFormChange(SpeciesId.ALCREMIE, "mint-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), + new SpeciesFormChange(SpeciesId.ALCREMIE, "lemon-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), + new SpeciesFormChange(SpeciesId.ALCREMIE, "salted-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), + new SpeciesFormChange(SpeciesId.ALCREMIE, "ruby-swirl", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), + new SpeciesFormChange(SpeciesId.ALCREMIE, "caramel-swirl", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), + new SpeciesFormChange(SpeciesId.ALCREMIE, "rainbow-swirl", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.EISCUE]: [ + new SpeciesFormChange(SpeciesId.EISCUE, "", "no-ice", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.EISCUE, "no-ice", "", new SpeciesFormChangeAbilityTrigger(), true) + ], + [SpeciesId.MORPEKO]: [ + new SpeciesFormChange(SpeciesId.MORPEKO, "full-belly", "hangry", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.MORPEKO, "hangry", "full-belly", new SpeciesFormChangeAbilityTrigger(), true) + ], + [SpeciesId.COPPERAJAH]: [ + new SpeciesFormChange(SpeciesId.COPPERAJAH, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.DURALUDON]: [ + new SpeciesFormChange(SpeciesId.DURALUDON, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.ZACIAN]: [ + new SpeciesFormChange(SpeciesId.ZACIAN, "hero-of-many-battles", "crowned", new SpeciesFormChangeItemTrigger(FormChangeItem.RUSTED_SWORD)) + ], + [SpeciesId.ZAMAZENTA]: [ + new SpeciesFormChange(SpeciesId.ZAMAZENTA, "hero-of-many-battles", "crowned", new SpeciesFormChangeItemTrigger(FormChangeItem.RUSTED_SHIELD)) + ], + [SpeciesId.ETERNATUS]: [ + new SpeciesFormChange(SpeciesId.ETERNATUS, "", SpeciesFormKey.ETERNAMAX, new SpeciesFormChangeManualTrigger()), + new SpeciesFormChange(SpeciesId.ETERNATUS, "", SpeciesFormKey.ETERNAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.URSHIFU]: [ + new SpeciesFormChange(SpeciesId.URSHIFU, "single-strike", SpeciesFormKey.GIGANTAMAX_SINGLE, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)), + new SpeciesFormChange(SpeciesId.URSHIFU, "rapid-strike", SpeciesFormKey.GIGANTAMAX_RAPID, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) + ], + [SpeciesId.CALYREX]: [ + new SpeciesFormChange(SpeciesId.CALYREX, "", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICY_REINS_OF_UNITY), false, getSpeciesDependentFormChangeCondition(SpeciesId.GLASTRIER)), + new SpeciesFormChange(SpeciesId.CALYREX, "", "shadow", new SpeciesFormChangeItemTrigger(FormChangeItem.SHADOW_REINS_OF_UNITY), false, getSpeciesDependentFormChangeCondition(SpeciesId.SPECTRIER)) + ], + [SpeciesId.ENAMORUS]: [ + new SpeciesFormChange(SpeciesId.ENAMORUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS)) + ], + [SpeciesId.OGERPON]: [ + new SpeciesFormChange(SpeciesId.OGERPON, "teal-mask", "wellspring-mask", new SpeciesFormChangeItemTrigger(FormChangeItem.WELLSPRING_MASK)), + new SpeciesFormChange(SpeciesId.OGERPON, "teal-mask", "hearthflame-mask", new SpeciesFormChangeItemTrigger(FormChangeItem.HEARTHFLAME_MASK)), + new SpeciesFormChange(SpeciesId.OGERPON, "teal-mask", "cornerstone-mask", new SpeciesFormChangeItemTrigger(FormChangeItem.CORNERSTONE_MASK)), + new SpeciesFormChange(SpeciesId.OGERPON, "teal-mask", "teal-mask-tera", new SpeciesFormChangeTeraTrigger(), true), + new SpeciesFormChange(SpeciesId.OGERPON, "teal-mask-tera", "teal-mask", new SpeciesFormChangeLapseTeraTrigger(), true), + new SpeciesFormChange(SpeciesId.OGERPON, "wellspring-mask", "wellspring-mask-tera", new SpeciesFormChangeTeraTrigger(), true), + new SpeciesFormChange(SpeciesId.OGERPON, "wellspring-mask-tera", "wellspring-mask", new SpeciesFormChangeLapseTeraTrigger(), true), + new SpeciesFormChange(SpeciesId.OGERPON, "hearthflame-mask", "hearthflame-mask-tera", new SpeciesFormChangeTeraTrigger(), true), + new SpeciesFormChange(SpeciesId.OGERPON, "hearthflame-mask-tera", "hearthflame-mask", new SpeciesFormChangeLapseTeraTrigger(), true), + new SpeciesFormChange(SpeciesId.OGERPON, "cornerstone-mask", "cornerstone-mask-tera", new SpeciesFormChangeTeraTrigger(), true), + new SpeciesFormChange(SpeciesId.OGERPON, "cornerstone-mask-tera", "cornerstone-mask", new SpeciesFormChangeLapseTeraTrigger(), true) + ], + [SpeciesId.TERAPAGOS]: [ + new SpeciesFormChange(SpeciesId.TERAPAGOS, "", "terastal", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.TERAPAGOS, "terastal", "stellar", new SpeciesFormChangeTeraTrigger(), true), + new SpeciesFormChange(SpeciesId.TERAPAGOS, "stellar", "terastal", new SpeciesFormChangeLapseTeraTrigger(), true) + ], + [SpeciesId.GALAR_DARMANITAN]: [ + new SpeciesFormChange(SpeciesId.GALAR_DARMANITAN, "", "zen", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(SpeciesId.GALAR_DARMANITAN, "zen", "", new SpeciesFormChangeAbilityTrigger(), true) ], }; diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index 5c97f360094..66ed0b09eeb 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -1,7 +1,7 @@ import type { Localizable } from "#app/interfaces/locales"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { PartyMemberStrength } from "#enums/party-member-strength"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { QuantizerCelebi, argbFromRgba, rgbaFromArgb } from "@material/material-color-utilities"; import i18next from "i18next"; import type { AnySound } from "#app/battle-scene"; @@ -44,42 +44,42 @@ export enum Region { } // TODO: this is horrible and will need to be removed once a refactor/cleanup of forms is executed. -export const normalForm: Species[] = [ - Species.PIKACHU, - Species.RAICHU, - Species.EEVEE, - Species.JOLTEON, - Species.FLAREON, - Species.VAPOREON, - Species.ESPEON, - Species.UMBREON, - Species.LEAFEON, - Species.GLACEON, - Species.SYLVEON, - Species.PICHU, - Species.ROTOM, - Species.DIALGA, - Species.PALKIA, - Species.KYUREM, - Species.GENESECT, - Species.FROAKIE, - Species.FROGADIER, - Species.GRENINJA, - Species.ROCKRUFF, - Species.NECROZMA, - Species.MAGEARNA, - Species.MARSHADOW, - Species.CRAMORANT, - Species.ZARUDE, - Species.CALYREX, +export const normalForm: SpeciesId[] = [ + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.EEVEE, + SpeciesId.JOLTEON, + SpeciesId.FLAREON, + SpeciesId.VAPOREON, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.SYLVEON, + SpeciesId.PICHU, + SpeciesId.ROTOM, + SpeciesId.DIALGA, + SpeciesId.PALKIA, + SpeciesId.KYUREM, + SpeciesId.GENESECT, + SpeciesId.FROAKIE, + SpeciesId.FROGADIER, + SpeciesId.GRENINJA, + SpeciesId.ROCKRUFF, + SpeciesId.NECROZMA, + SpeciesId.MAGEARNA, + SpeciesId.MARSHADOW, + SpeciesId.CRAMORANT, + SpeciesId.ZARUDE, + SpeciesId.CALYREX, ]; /** - * Gets the {@linkcode PokemonSpecies} object associated with the {@linkcode Species} enum given + * Gets the {@linkcode PokemonSpecies} object associated with the {@linkcode SpeciesId} enum given * @param species The species to fetch * @returns The associated {@linkcode PokemonSpecies} object */ -export function getPokemonSpecies(species: Species | Species[]): PokemonSpecies { +export function getPokemonSpecies(species: SpeciesId | SpeciesId[]): PokemonSpecies { // If a special pool (named trainers) is used here it CAN happen that they have a array as species (which means choose one of those two). So we catch that with this code block if (Array.isArray(species)) { // Pick a random species from the list @@ -91,7 +91,7 @@ export function getPokemonSpecies(species: Species | Species[]): PokemonSpecies return allSpecies[species - 1]; } -export function getPokemonSpeciesForm(species: Species, formIndex: number): PokemonSpeciesForm { +export function getPokemonSpeciesForm(species: SpeciesId, formIndex: number): PokemonSpeciesForm { const retSpecies: PokemonSpecies = species >= 2000 ? allSpecies.find(s => s.speciesId === species)! // TODO: is the bang correct? @@ -171,16 +171,16 @@ export function getFusedSpeciesName(speciesAName: string, speciesBName: string): export type PokemonSpeciesFilter = (species: PokemonSpecies) => boolean; export abstract class PokemonSpeciesForm { - public speciesId: Species; + public speciesId: SpeciesId; protected _formIndex: number; protected _generation: number; readonly type1: PokemonType; readonly type2: PokemonType | null; readonly height: number; readonly weight: number; - readonly ability1: Abilities; - readonly ability2: Abilities; - readonly abilityHidden: Abilities; + readonly ability1: AbilityId; + readonly ability2: AbilityId; + readonly abilityHidden: AbilityId; readonly baseTotal: number; readonly baseStats: number[]; readonly catchRate: number; @@ -194,9 +194,9 @@ export abstract class PokemonSpeciesForm { type2: PokemonType | null, height: number, weight: number, - ability1: Abilities, - ability2: Abilities, - abilityHidden: Abilities, + ability1: AbilityId, + ability2: AbilityId, + abilityHidden: AbilityId, baseTotal: number, baseHp: number, baseAtk: number, @@ -215,7 +215,7 @@ export abstract class PokemonSpeciesForm { this.height = height; this.weight = weight; this.ability1 = ability1; - this.ability2 = ability2 === Abilities.NONE ? ability1 : ability2; + this.ability2 = ability2 === AbilityId.NONE ? ability1 : ability2; this.abilityHidden = abilityHidden; this.baseTotal = baseTotal; this.baseStats = [baseHp, baseAtk, baseDef, baseSpatk, baseSpdef, baseSpd]; @@ -233,7 +233,7 @@ export abstract class PokemonSpeciesForm { * @param forStarter boolean to get the nonbaby form of a starter * @returns The species */ - getRootSpeciesId(forStarter = false): Species { + getRootSpeciesId(forStarter = false): SpeciesId { let ret = this.speciesId; while (pokemonPrevolutions.hasOwnProperty(ret) && (!forStarter || !speciesStarterCosts.hasOwnProperty(ret))) { ret = pokemonPrevolutions[ret]; @@ -266,7 +266,7 @@ export abstract class PokemonSpeciesForm { * @returns Number of abilities */ getAbilityCount(): number { - return this.abilityHidden !== Abilities.NONE ? 3 : 2; + return this.abilityHidden !== AbilityId.NONE ? 3 : 2; } /** @@ -274,8 +274,8 @@ export abstract class PokemonSpeciesForm { * @param abilityIndex Which ability to get (should only be 0-2) * @returns The id of the Ability */ - getAbility(abilityIndex: number): Abilities { - let ret: Abilities; + getAbility(abilityIndex: number): AbilityId { + let ret: AbilityId; if (abilityIndex === 0) { ret = this.ability1; } else if (abilityIndex === 1) { @@ -291,7 +291,7 @@ export abstract class PokemonSpeciesForm { * @param formIndex The form index to use, defaults to form for this species instance * @returns The id of the ability */ - getPassiveAbility(formIndex?: number): Abilities { + getPassiveAbility(formIndex?: number): AbilityId { if (isNullOrUndefined(formIndex)) { formIndex = this.formIndex; } @@ -308,7 +308,7 @@ export abstract class PokemonSpeciesForm { return starterPassiveAbilities[starterSpeciesId][0]; } console.log("No passive ability found for %s, using run away", this.speciesId); - return Abilities.RUN_AWAY; + return AbilityId.RUN_AWAY; } } return starterPassiveAbilities[starterSpeciesId][formIndex]; @@ -341,7 +341,7 @@ export abstract class PokemonSpeciesForm { } isTrainerForbidden(): boolean { - return [Species.ETERNAL_FLOETTE, Species.BLOODMOON_URSALUNA].includes(this.speciesId); + return [SpeciesId.ETERNAL_FLOETTE, SpeciesId.BLOODMOON_URSALUNA].includes(this.speciesId); } isRareRegional(): boolean { @@ -463,18 +463,18 @@ export abstract class PokemonSpeciesForm { } switch (this.speciesId) { - case Species.DODUO: - case Species.DODRIO: - case Species.MEGANIUM: - case Species.TORCHIC: - case Species.COMBUSKEN: - case Species.BLAZIKEN: - case Species.HIPPOPOTAS: - case Species.HIPPOWDON: - case Species.UNFEZANT: - case Species.FRILLISH: - case Species.JELLICENT: - case Species.PYROAR: + case SpeciesId.DODUO: + case SpeciesId.DODRIO: + case SpeciesId.MEGANIUM: + case SpeciesId.TORCHIC: + case SpeciesId.COMBUSKEN: + case SpeciesId.BLAZIKEN: + case SpeciesId.HIPPOPOTAS: + case SpeciesId.HIPPOWDON: + case SpeciesId.UNFEZANT: + case SpeciesId.FRILLISH: + case SpeciesId.JELLICENT: + case SpeciesId.PYROAR: ret += female ? "-f" : ""; break; } @@ -482,10 +482,10 @@ export abstract class PokemonSpeciesForm { let formSpriteKey = this.getFormSpriteKey(formIndex); if (formSpriteKey) { switch (this.speciesId) { - case Species.DUDUNSPARCE: + case SpeciesId.DUDUNSPARCE: break; - case Species.ZACIAN: - case Species.ZAMAZENTA: + case SpeciesId.ZACIAN: + case SpeciesId.ZAMAZENTA: // biome-ignore lint/suspicious/noFallthroughSwitchClause: Falls through if (formSpriteKey.startsWith("behemoth")) { formSpriteKey = "crowned"; @@ -507,11 +507,11 @@ export abstract class PokemonSpeciesForm { let speciesId = this.speciesId; if (this.speciesId > 2000) { switch (this.speciesId) { - case Species.GALAR_SLOWPOKE: + case SpeciesId.GALAR_SLOWPOKE: break; - case Species.ETERNAL_FLOETTE: + case SpeciesId.ETERNAL_FLOETTE: break; - case Species.BLOODMOON_URSALUNA: + case SpeciesId.BLOODMOON_URSALUNA: break; default: speciesId = speciesId % 2000; @@ -779,7 +779,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali readonly forms: PokemonForm[]; constructor( - id: Species, + id: SpeciesId, generation: number, subLegendary: boolean, legendary: boolean, @@ -789,9 +789,9 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali type2: PokemonType | null, height: number, weight: number, - ability1: Abilities, - ability2: Abilities, - abilityHidden: Abilities, + ability1: AbilityId, + ability2: AbilityId, + abilityHidden: AbilityId, baseTotal: number, baseHp: number, baseAtk: number, @@ -904,7 +904,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali return this.name; // Other special cases could be put here too } // Everything beyond this point essentially follows the pattern of FORMNAME_SPECIES - return i18next.t(`pokemonForm:appendForm.${Species[this.speciesId].split("_")[0]}`, { pokemonName: this.name }); + return i18next.t(`pokemonForm:appendForm.${SpeciesId[this.speciesId].split("_")[0]}`, { pokemonName: this.name }); } /** @@ -916,11 +916,11 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali getFormNameToDisplay(formIndex = 0, append = false): string { const formKey = this.forms?.[formIndex!]?.formKey; const formText = capitalizeString(formKey, "-", false, false) || ""; - const speciesName = capitalizeString(Species[this.speciesId], "_", true, false); + const speciesName = capitalizeString(SpeciesId[this.speciesId], "_", true, false); let ret = ""; const region = this.getRegion(); - if (this.speciesId === Species.ARCEUS) { + if (this.speciesId === SpeciesId.ARCEUS) { ret = i18next.t(`pokemonInfo:Type.${formText?.toUpperCase()}`); } else if ( [ @@ -939,25 +939,25 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali : i18next.t(`pokemonForm:battleForm.${formKey}`); } else if ( region === Region.NORMAL || - (this.speciesId === Species.GALAR_DARMANITAN && formIndex > 0) || - this.speciesId === Species.PALDEA_TAUROS + (this.speciesId === SpeciesId.GALAR_DARMANITAN && formIndex > 0) || + this.speciesId === SpeciesId.PALDEA_TAUROS ) { // More special cases can be added here const i18key = `pokemonForm:${speciesName}${formText}`; if (i18next.exists(i18key)) { ret = i18next.t(i18key); } else { - const rootSpeciesName = capitalizeString(Species[this.getRootSpeciesId()], "_", true, false); + const rootSpeciesName = capitalizeString(SpeciesId[this.getRootSpeciesId()], "_", true, false); const i18RootKey = `pokemonForm:${rootSpeciesName}${formText}`; ret = i18next.exists(i18RootKey) ? i18next.t(i18RootKey) : formText; } } else if (append) { // Everything beyond this has an expanded name return this.getExpandedSpeciesName(); - } else if (this.speciesId === Species.ETERNAL_FLOETTE) { + } else if (this.speciesId === SpeciesId.ETERNAL_FLOETTE) { // Not a real form, so the key is made up return i18next.t("pokemonForm:floetteEternalFlower"); - } else if (this.speciesId === Species.BLOODMOON_URSALUNA) { + } else if (this.speciesId === SpeciesId.BLOODMOON_URSALUNA) { // Not a real form, so the key is made up return i18next.t("pokemonForm:ursalunaBloodmoon"); } else { @@ -973,10 +973,10 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali } localize(): void { - this.name = i18next.t(`pokemon:${Species[this.speciesId].toLowerCase()}`); + this.name = i18next.t(`pokemon:${SpeciesId[this.speciesId].toLowerCase()}`); } - getWildSpeciesForLevel(level: number, allowEvolving: boolean, isBoss: boolean, gameMode: GameMode): Species { + getWildSpeciesForLevel(level: number, allowEvolving: boolean, isBoss: boolean, gameMode: GameMode): SpeciesId { return this.getSpeciesForLevel( level, allowEvolving, @@ -990,7 +990,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali allowEvolving = false, strength: PartyMemberStrength, currentWave = 0, - ): Species { + ): SpeciesId { return this.getSpeciesForLevel(level, allowEvolving, true, strength, currentWave); } @@ -1035,7 +1035,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali forTrainer = false, strength: PartyMemberStrength = PartyMemberStrength.WEAKER, currentWave = 0, - ): Species { + ): SpeciesId { const prevolutionLevels = this.getPrevolutionLevels(); if (prevolutionLevels.length) { @@ -1063,7 +1063,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali const easeInFunc = Phaser.Tweens.Builders.GetEaseFunction("Sine.easeIn"); const easeOutFunc = Phaser.Tweens.Builders.GetEaseFunction("Sine.easeOut"); - const evolutionPool: Map = new Map(); + const evolutionPool: Map = new Map(); let totalWeight = 0; let noEvolutionChance = 1; @@ -1192,7 +1192,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali (!this.forms.length || !e.evoFormKey || e.evoFormKey === this.forms[this.formIndex].formKey) && prevolutionLevels.every(pe => pe[0] !== Number.parseInt(p)) ) { - const speciesId = Number.parseInt(p) as Species; + const speciesId = Number.parseInt(p) as SpeciesId; const level = e.level; prevolutionLevels.push([speciesId, level]); const subPrevolutionLevels = getPokemonSpecies(speciesId).getPrevolutionLevels(); @@ -1276,7 +1276,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali species.legendary === legendary && species.mythical === mythical && (this.isTrainerForbidden() || !species.isTrainerForbidden()) && - species.speciesId !== Species.DITTO + species.speciesId !== SpeciesId.DITTO ); }; } @@ -1369,9 +1369,9 @@ export class PokemonForm extends PokemonSpeciesForm { type2: PokemonType | null, height: number, weight: number, - ability1: Abilities, - ability2: Abilities, - abilityHidden: Abilities, + ability1: AbilityId, + ability2: AbilityId, + abilityHidden: AbilityId, baseTotal: number, baseHp: number, baseAtk: number, @@ -1448,1776 +1448,1776 @@ export const allSpecies: PokemonSpecies[] = []; // biome-ignore format: manually formatted export function initSpecies() { allSpecies.push( - new PokemonSpecies(Species.BULBASAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.7, 6.9, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 318, 45, 49, 49, 65, 65, 45, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.IVYSAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 1, 13, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 405, 60, 62, 63, 80, 80, 60, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.VENUSAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 2, 100, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 525, 80, 82, 83, 100, 100, 80, 45, 50, 263, GrowthRate.MEDIUM_SLOW, 87.5, true, true, - new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.POISON, 2, 100, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 525, 80, 82, 83, 100, 100, 80, 45, 50, 263, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.POISON, 2.4, 155.5, Abilities.THICK_FAT, Abilities.THICK_FAT, Abilities.THICK_FAT, 625, 80, 100, 123, 122, 120, 80, 45, 50, 263, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.POISON, 24, 999.9, Abilities.EFFECT_SPORE, Abilities.NONE, Abilities.EFFECT_SPORE, 625, 120, 122, 90, 108, 105, 80, 45, 50, 263, true), - ), - new PokemonSpecies(Species.CHARMANDER, 1, false, false, false, "Lizard Pokémon", PokemonType.FIRE, null, 0.6, 8.5, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 309, 39, 52, 43, 60, 50, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.CHARMELEON, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, null, 1.1, 19, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 405, 58, 64, 58, 80, 65, 80, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.CHARIZARD, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FLYING, 1.7, 90.5, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 534, 78, 84, 78, 109, 85, 100, 45, 50, 267, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.FLYING, 1.7, 90.5, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 534, 78, 84, 78, 109, 85, 100, 45, 50, 267, false, null, true), - new PokemonForm("Mega X", SpeciesFormKey.MEGA_X, PokemonType.FIRE, PokemonType.DRAGON, 1.7, 110.5, Abilities.TOUGH_CLAWS, Abilities.NONE, Abilities.TOUGH_CLAWS, 634, 78, 130, 111, 130, 85, 100, 45, 50, 267), - new PokemonForm("Mega Y", SpeciesFormKey.MEGA_Y, PokemonType.FIRE, PokemonType.FLYING, 1.7, 100.5, Abilities.DROUGHT, Abilities.NONE, Abilities.DROUGHT, 634, 78, 104, 78, 159, 115, 100, 45, 50, 267), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, PokemonType.FLYING, 28, 999.9, Abilities.BERSERK, Abilities.NONE, Abilities.BERSERK, 634, 118, 99, 88, 134, 95, 100, 45, 50, 267), - ), - new PokemonSpecies(Species.SQUIRTLE, 1, false, false, false, "Tiny Turtle Pokémon", PokemonType.WATER, null, 0.5, 9, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 314, 44, 48, 65, 50, 64, 43, 45, 50, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.WARTORTLE, 1, false, false, false, "Turtle Pokémon", PokemonType.WATER, null, 1, 22.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 405, 59, 63, 80, 65, 80, 58, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.BLASTOISE, 1, false, false, false, "Shellfish Pokémon", PokemonType.WATER, null, 1.6, 85.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 530, 79, 83, 100, 85, 105, 78, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, null, 1.6, 85.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 530, 79, 83, 100, 85, 105, 78, 45, 50, 265, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, null, 1.6, 101.1, Abilities.MEGA_LAUNCHER, Abilities.NONE, Abilities.MEGA_LAUNCHER, 630, 79, 103, 120, 135, 115, 78, 45, 50, 265), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.STEEL, 25, 999.9, Abilities.SHELL_ARMOR, Abilities.NONE, Abilities.SHELL_ARMOR, 630, 119, 108, 125, 105, 110, 63, 45, 50, 265), - ), - new PokemonSpecies(Species.CATERPIE, 1, false, false, false, "Worm Pokémon", PokemonType.BUG, null, 0.3, 2.9, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.RUN_AWAY, 195, 45, 30, 35, 20, 20, 45, 255, 50, 39, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.METAPOD, 1, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.7, 9.9, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 50, 20, 55, 25, 25, 30, 120, 50, 72, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BUTTERFREE, 1, false, false, false, "Butterfly Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.1, 32, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.TINTED_LENS, 395, 60, 45, 50, 90, 80, 70, 45, 50, 198, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.FLYING, 1.1, 32, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.TINTED_LENS, 395, 60, 45, 50, 90, 80, 70, 45, 50, 198, true, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.BUG, PokemonType.FLYING, 17, 999.9, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.COMPOUND_EYES, 495, 80, 40, 75, 120, 95, 85, 45, 50, 198, true), - ), - new PokemonSpecies(Species.WEEDLE, 1, false, false, false, "Hairy Bug Pokémon", PokemonType.BUG, PokemonType.POISON, 0.3, 3.2, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.RUN_AWAY, 195, 40, 35, 30, 20, 20, 50, 255, 70, 39, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.KAKUNA, 1, false, false, false, "Cocoon Pokémon", PokemonType.BUG, PokemonType.POISON, 0.6, 10, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 45, 25, 50, 25, 25, 35, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BEEDRILL, 1, false, false, false, "Poison Bee Pokémon", PokemonType.BUG, PokemonType.POISON, 1, 29.5, Abilities.SWARM, Abilities.NONE, Abilities.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 198, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.POISON, 1, 29.5, Abilities.SWARM, Abilities.NONE, Abilities.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 198, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.POISON, 1.4, 40.5, Abilities.ADAPTABILITY, Abilities.NONE, Abilities.ADAPTABILITY, 495, 65, 150, 40, 15, 80, 145, 45, 70, 198), - ), - new PokemonSpecies(Species.PIDGEY, 1, false, false, false, "Tiny Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.8, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 251, 40, 45, 40, 35, 35, 56, 255, 70, 50, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.PIDGEOTTO, 1, false, false, false, "Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.1, 30, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 349, 63, 60, 55, 50, 50, 71, 120, 70, 122, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.PIDGEOT, 1, false, false, false, "Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 39.5, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 39.5, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 240, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FLYING, 2.2, 50.5, Abilities.NO_GUARD, Abilities.NO_GUARD, Abilities.NO_GUARD, 579, 83, 80, 80, 135, 80, 121, 45, 70, 240), - ), - new PokemonSpecies(Species.RATTATA, 1, false, false, false, "Mouse Pokémon", PokemonType.NORMAL, null, 0.3, 3.5, Abilities.RUN_AWAY, Abilities.GUTS, Abilities.HUSTLE, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.RATICATE, 1, false, false, false, "Mouse Pokémon", PokemonType.NORMAL, null, 0.7, 18.5, Abilities.RUN_AWAY, Abilities.GUTS, Abilities.HUSTLE, 413, 55, 81, 60, 50, 70, 97, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.SPEAROW, 1, false, false, false, "Tiny Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2, Abilities.KEEN_EYE, Abilities.NONE, Abilities.SNIPER, 262, 40, 60, 30, 31, 31, 70, 255, 70, 52, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FEAROW, 1, false, false, false, "Beak Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 38, Abilities.KEEN_EYE, Abilities.NONE, Abilities.SNIPER, 442, 65, 90, 65, 61, 61, 100, 90, 70, 155, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.EKANS, 1, false, false, false, "Snake Pokémon", PokemonType.POISON, null, 2, 6.9, Abilities.INTIMIDATE, Abilities.SHED_SKIN, Abilities.UNNERVE, 288, 35, 60, 44, 40, 54, 55, 255, 70, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ARBOK, 1, false, false, false, "Cobra Pokémon", PokemonType.POISON, null, 3.5, 65, Abilities.INTIMIDATE, Abilities.SHED_SKIN, Abilities.UNNERVE, 448, 60, 95, 69, 65, 79, 80, 90, 70, 157, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PIKACHU, 1, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 320, 35, 55, 40, 50, 50, 90, 190, 50, 112, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 320, 35, 55, 40, 50, 50, 90, 190, 50, 112, true, null, true), - new PokemonForm("Partner", "partner", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), - new PokemonForm("Cosplay", "cosplay", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Cool Cosplay", "cool-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Beauty Cosplay", "beauty-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Cute Cosplay", "cute-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Smart Cosplay", "smart-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Tough Cosplay", "tough-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ELECTRIC, null, 21, 999.9, Abilities.LIGHTNING_ROD, Abilities.NONE, Abilities.LIGHTNING_ROD, 530, 125, 95, 60, 90, 70, 90, 190, 50, 112), //+100 BST from Partner Form - ), - new PokemonSpecies(Species.RAICHU, 1, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.8, 30, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 485, 60, 90, 55, 90, 80, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.SANDSHREW, 1, false, false, false, "Mouse Pokémon", PokemonType.GROUND, null, 0.6, 12, Abilities.SAND_VEIL, Abilities.NONE, Abilities.SAND_RUSH, 300, 50, 75, 85, 20, 30, 40, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SANDSLASH, 1, false, false, false, "Mouse Pokémon", PokemonType.GROUND, null, 1, 29.5, Abilities.SAND_VEIL, Abilities.NONE, Abilities.SAND_RUSH, 450, 75, 100, 110, 45, 55, 65, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.NIDORAN_F, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.4, 7, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.HUSTLE, 275, 55, 47, 52, 40, 40, 41, 235, 50, 55, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.NIDORINA, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.8, 20, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.HUSTLE, 365, 70, 62, 67, 55, 55, 56, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.NIDOQUEEN, 1, false, false, false, "Drill Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.3, 60, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.SHEER_FORCE, 505, 90, 92, 87, 75, 85, 76, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.NIDORAN_M, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.5, 9, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.HUSTLE, 273, 46, 57, 40, 40, 40, 50, 235, 50, 55, GrowthRate.MEDIUM_SLOW, 100, false), - new PokemonSpecies(Species.NIDORINO, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.9, 19.5, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.HUSTLE, 365, 61, 72, 57, 55, 55, 65, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 100, false), - new PokemonSpecies(Species.NIDOKING, 1, false, false, false, "Drill Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.4, 62, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.SHEER_FORCE, 505, 81, 102, 77, 85, 75, 85, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 100, false), - new PokemonSpecies(Species.CLEFAIRY, 1, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 0.6, 7.5, Abilities.CUTE_CHARM, Abilities.MAGIC_GUARD, Abilities.FRIEND_GUARD, 323, 70, 45, 48, 60, 65, 35, 150, 140, 113, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.CLEFABLE, 1, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 1.3, 40, Abilities.CUTE_CHARM, Abilities.MAGIC_GUARD, Abilities.UNAWARE, 483, 95, 70, 73, 95, 90, 60, 25, 140, 242, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.VULPIX, 1, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 0.6, 9.9, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.DROUGHT, 299, 38, 41, 40, 50, 65, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 25, false), - new PokemonSpecies(Species.NINETALES, 1, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 1.1, 19.9, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.DROUGHT, 505, 73, 76, 75, 81, 100, 100, 75, 50, 177, GrowthRate.MEDIUM_FAST, 25, false), - new PokemonSpecies(Species.JIGGLYPUFF, 1, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.5, 5.5, Abilities.CUTE_CHARM, Abilities.COMPETITIVE, Abilities.FRIEND_GUARD, 270, 115, 45, 20, 45, 25, 20, 170, 50, 95, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.WIGGLYTUFF, 1, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 1, 12, Abilities.CUTE_CHARM, Abilities.COMPETITIVE, Abilities.FRISK, 435, 140, 70, 45, 85, 50, 45, 50, 50, 218, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.ZUBAT, 1, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 0.8, 7.5, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.INFILTRATOR, 245, 40, 45, 35, 30, 40, 55, 255, 50, 49, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.GOLBAT, 1, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 1.6, 55, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.INFILTRATOR, 455, 75, 80, 70, 65, 75, 90, 90, 50, 159, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.ODDISH, 1, false, false, false, "Weed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.5, 5.4, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.RUN_AWAY, 320, 45, 50, 55, 75, 65, 30, 255, 50, 64, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GLOOM, 1, false, false, false, "Weed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.8, 8.6, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.STENCH, 395, 60, 65, 70, 85, 75, 40, 120, 50, 138, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.VILEPLUME, 1, false, false, false, "Flower Pokémon", PokemonType.GRASS, PokemonType.POISON, 1.2, 18.6, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.EFFECT_SPORE, 490, 75, 80, 85, 110, 90, 50, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.PARAS, 1, false, false, false, "Mushroom Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.3, 5.4, Abilities.EFFECT_SPORE, Abilities.DRY_SKIN, Abilities.DAMP, 285, 35, 70, 55, 45, 55, 25, 190, 70, 57, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PARASECT, 1, false, false, false, "Mushroom Pokémon", PokemonType.BUG, PokemonType.GRASS, 1, 29.5, Abilities.EFFECT_SPORE, Abilities.DRY_SKIN, Abilities.DAMP, 405, 60, 95, 80, 60, 80, 30, 75, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.VENONAT, 1, false, false, false, "Insect Pokémon", PokemonType.BUG, PokemonType.POISON, 1, 30, Abilities.COMPOUND_EYES, Abilities.TINTED_LENS, Abilities.RUN_AWAY, 305, 60, 55, 50, 40, 55, 45, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.VENOMOTH, 1, false, false, false, "Poison Moth Pokémon", PokemonType.BUG, PokemonType.POISON, 1.5, 12.5, Abilities.SHIELD_DUST, Abilities.TINTED_LENS, Abilities.WONDER_SKIN, 450, 70, 65, 60, 90, 75, 90, 75, 70, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DIGLETT, 1, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.2, 0.8, Abilities.SAND_VEIL, Abilities.ARENA_TRAP, Abilities.SAND_FORCE, 265, 10, 55, 25, 35, 45, 95, 255, 50, 53, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DUGTRIO, 1, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.7, 33.3, Abilities.SAND_VEIL, Abilities.ARENA_TRAP, Abilities.SAND_FORCE, 425, 35, 100, 50, 50, 70, 120, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MEOWTH, 1, false, false, false, "Scratch Cat Pokémon", PokemonType.NORMAL, null, 0.4, 4.2, Abilities.PICKUP, Abilities.TECHNICIAN, Abilities.UNNERVE, 290, 40, 45, 35, 40, 40, 90, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.NORMAL, null, 0.4, 4.2, Abilities.PICKUP, Abilities.TECHNICIAN, Abilities.UNNERVE, 290, 40, 45, 35, 40, 40, 90, 255, 50, 58, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 33, 999.9, Abilities.TECHNICIAN, Abilities.TECHNICIAN, Abilities.TECHNICIAN, 540, 115, 110, 65, 65, 70, 115, 255, 50, 58), //+100 BST from Persian - ), - new PokemonSpecies(Species.PERSIAN, 1, false, false, false, "Classy Cat Pokémon", PokemonType.NORMAL, null, 1, 32, Abilities.LIMBER, Abilities.TECHNICIAN, Abilities.UNNERVE, 440, 65, 70, 60, 65, 65, 115, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PSYDUCK, 1, false, false, false, "Duck Pokémon", PokemonType.WATER, null, 0.8, 19.6, Abilities.DAMP, Abilities.CLOUD_NINE, Abilities.SWIFT_SWIM, 320, 50, 52, 48, 65, 50, 55, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GOLDUCK, 1, false, false, false, "Duck Pokémon", PokemonType.WATER, null, 1.7, 76.6, Abilities.DAMP, Abilities.CLOUD_NINE, Abilities.SWIFT_SWIM, 500, 80, 82, 78, 95, 80, 85, 75, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MANKEY, 1, false, false, false, "Pig Monkey Pokémon", PokemonType.FIGHTING, null, 0.5, 28, Abilities.VITAL_SPIRIT, Abilities.ANGER_POINT, Abilities.DEFIANT, 305, 40, 80, 35, 35, 45, 70, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PRIMEAPE, 1, false, false, false, "Pig Monkey Pokémon", PokemonType.FIGHTING, null, 1, 32, Abilities.VITAL_SPIRIT, Abilities.ANGER_POINT, Abilities.DEFIANT, 455, 65, 105, 60, 60, 70, 95, 75, 70, 159, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GROWLITHE, 1, false, false, false, "Puppy Pokémon", PokemonType.FIRE, null, 0.7, 19, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.JUSTIFIED, 350, 55, 70, 45, 70, 50, 60, 190, 50, 70, GrowthRate.SLOW, 75, false), - new PokemonSpecies(Species.ARCANINE, 1, false, false, false, "Legendary Pokémon", PokemonType.FIRE, null, 1.9, 155, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.JUSTIFIED, 555, 90, 110, 80, 100, 80, 95, 75, 50, 194, GrowthRate.SLOW, 75, false), - new PokemonSpecies(Species.POLIWAG, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 0.6, 12.4, Abilities.WATER_ABSORB, Abilities.DAMP, Abilities.SWIFT_SWIM, 300, 40, 50, 40, 40, 40, 90, 255, 50, 60, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.POLIWHIRL, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 1, 20, Abilities.WATER_ABSORB, Abilities.DAMP, Abilities.SWIFT_SWIM, 385, 65, 65, 65, 50, 50, 90, 120, 50, 135, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.POLIWRATH, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.3, 54, Abilities.WATER_ABSORB, Abilities.DAMP, Abilities.SWIFT_SWIM, 510, 90, 95, 95, 70, 90, 70, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ABRA, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 0.9, 19.5, Abilities.SYNCHRONIZE, Abilities.INNER_FOCUS, Abilities.MAGIC_GUARD, 310, 25, 20, 15, 105, 55, 90, 200, 50, 62, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(Species.KADABRA, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 1.3, 56.5, Abilities.SYNCHRONIZE, Abilities.INNER_FOCUS, Abilities.MAGIC_GUARD, 400, 40, 35, 30, 120, 70, 105, 100, 50, 140, GrowthRate.MEDIUM_SLOW, 75, true), - new PokemonSpecies(Species.ALAKAZAM, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 1.5, 48, Abilities.SYNCHRONIZE, Abilities.INNER_FOCUS, Abilities.MAGIC_GUARD, 500, 55, 50, 45, 135, 95, 120, 50, 50, 250, GrowthRate.MEDIUM_SLOW, 75, true, true, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 1.5, 48, Abilities.SYNCHRONIZE, Abilities.INNER_FOCUS, Abilities.MAGIC_GUARD, 500, 55, 50, 45, 135, 95, 120, 50, 50, 250, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, null, 1.2, 48, Abilities.TRACE, Abilities.TRACE, Abilities.TRACE, 600, 55, 50, 65, 175, 105, 150, 50, 50, 250, true), - ), - new PokemonSpecies(Species.MACHOP, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 0.8, 19.5, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 305, 70, 80, 50, 35, 35, 35, 180, 50, 61, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(Species.MACHOKE, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 1.5, 70.5, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 405, 80, 100, 70, 50, 60, 45, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(Species.MACHAMP, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 1.6, 130, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 505, 90, 130, 80, 65, 85, 55, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 75, false, true, - new PokemonForm("Normal", "", PokemonType.FIGHTING, null, 1.6, 130, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 505, 90, 130, 80, 65, 85, 55, 45, 50, 253, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIGHTING, null, 25, 999.9, Abilities.GUTS, Abilities.GUTS, Abilities.GUTS, 605, 120, 170, 85, 75, 90, 65, 45, 50, 253), - ), - new PokemonSpecies(Species.BELLSPROUT, 1, false, false, false, "Flower Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.7, 4, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 300, 50, 75, 35, 70, 30, 40, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.WEEPINBELL, 1, false, false, false, "Flycatcher Pokémon", PokemonType.GRASS, PokemonType.POISON, 1, 6.4, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 390, 65, 90, 50, 85, 45, 55, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.VICTREEBEL, 1, false, false, false, "Flycatcher Pokémon", PokemonType.GRASS, PokemonType.POISON, 1.7, 15.5, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 490, 80, 105, 65, 100, 70, 70, 45, 70, 245, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.TENTACOOL, 1, false, false, false, "Jellyfish Pokémon", PokemonType.WATER, PokemonType.POISON, 0.9, 45.5, Abilities.CLEAR_BODY, Abilities.LIQUID_OOZE, Abilities.RAIN_DISH, 335, 40, 40, 35, 50, 100, 70, 190, 50, 67, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.TENTACRUEL, 1, false, false, false, "Jellyfish Pokémon", PokemonType.WATER, PokemonType.POISON, 1.6, 55, Abilities.CLEAR_BODY, Abilities.LIQUID_OOZE, Abilities.RAIN_DISH, 515, 80, 70, 65, 80, 120, 100, 60, 50, 180, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.GEODUDE, 1, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.GROUND, 0.4, 20, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SAND_VEIL, 300, 40, 80, 100, 30, 30, 20, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GRAVELER, 1, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1, 105, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SAND_VEIL, 390, 55, 95, 115, 45, 45, 35, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GOLEM, 1, false, false, false, "Megaton Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1.4, 300, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SAND_VEIL, 495, 80, 120, 130, 55, 65, 45, 45, 70, 248, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.PONYTA, 1, false, false, false, "Fire Horse Pokémon", PokemonType.FIRE, null, 1, 30, Abilities.RUN_AWAY, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, 410, 50, 85, 55, 65, 65, 90, 190, 50, 82, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RAPIDASH, 1, false, false, false, "Fire Horse Pokémon", PokemonType.FIRE, null, 1.7, 95, Abilities.RUN_AWAY, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, 500, 65, 100, 70, 80, 80, 105, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SLOWPOKE, 1, false, false, false, "Dopey Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.2, 36, Abilities.OBLIVIOUS, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 315, 90, 65, 65, 40, 40, 15, 190, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SLOWBRO, 1, false, false, false, "Hermit Crab Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.6, 78.5, Abilities.OBLIVIOUS, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 75, 110, 100, 80, 30, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.PSYCHIC, 1.6, 78.5, Abilities.OBLIVIOUS, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 75, 110, 100, 80, 30, 75, 50, 172, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.PSYCHIC, 2, 120, Abilities.SHELL_ARMOR, Abilities.SHELL_ARMOR, Abilities.SHELL_ARMOR, 590, 95, 75, 180, 130, 80, 30, 75, 50, 172), - ), - new PokemonSpecies(Species.MAGNEMITE, 1, false, false, false, "Magnet Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 0.3, 6, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.ANALYTIC, 325, 25, 35, 70, 95, 55, 45, 190, 50, 65, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.MAGNETON, 1, false, false, false, "Magnet Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 1, 60, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.ANALYTIC, 465, 50, 60, 95, 120, 70, 70, 60, 50, 163, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.FARFETCHD, 1, false, false, false, "Wild Duck Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.8, 15, Abilities.KEEN_EYE, Abilities.INNER_FOCUS, Abilities.DEFIANT, 377, 52, 90, 55, 58, 62, 60, 45, 50, 132, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DODUO, 1, false, false, false, "Twin Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.4, 39.2, Abilities.RUN_AWAY, Abilities.EARLY_BIRD, Abilities.TANGLED_FEET, 310, 35, 85, 45, 35, 35, 75, 190, 70, 62, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.DODRIO, 1, false, false, false, "Triple Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.8, 85.2, Abilities.RUN_AWAY, Abilities.EARLY_BIRD, Abilities.TANGLED_FEET, 470, 60, 110, 70, 60, 60, 110, 45, 70, 165, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.SEEL, 1, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, null, 1.1, 90, Abilities.THICK_FAT, Abilities.HYDRATION, Abilities.ICE_BODY, 325, 65, 45, 55, 45, 70, 45, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DEWGONG, 1, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, PokemonType.ICE, 1.7, 120, Abilities.THICK_FAT, Abilities.HYDRATION, Abilities.ICE_BODY, 475, 90, 70, 80, 70, 95, 70, 75, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GRIMER, 1, false, false, false, "Sludge Pokémon", PokemonType.POISON, null, 0.9, 30, Abilities.STENCH, Abilities.STICKY_HOLD, Abilities.POISON_TOUCH, 325, 80, 80, 50, 40, 50, 25, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MUK, 1, false, false, false, "Sludge Pokémon", PokemonType.POISON, null, 1.2, 30, Abilities.STENCH, Abilities.STICKY_HOLD, Abilities.POISON_TOUCH, 500, 105, 105, 75, 65, 100, 50, 75, 70, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SHELLDER, 1, false, false, false, "Bivalve Pokémon", PokemonType.WATER, null, 0.3, 4, Abilities.SHELL_ARMOR, Abilities.SKILL_LINK, Abilities.OVERCOAT, 305, 30, 65, 100, 45, 25, 40, 190, 50, 61, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.CLOYSTER, 1, false, false, false, "Bivalve Pokémon", PokemonType.WATER, PokemonType.ICE, 1.5, 132.5, Abilities.SHELL_ARMOR, Abilities.SKILL_LINK, Abilities.OVERCOAT, 525, 50, 95, 180, 85, 45, 70, 60, 50, 184, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.GASTLY, 1, false, false, false, "Gas Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.3, 0.1, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 310, 30, 35, 30, 100, 35, 80, 190, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.HAUNTER, 1, false, false, false, "Gas Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.6, 0.1, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 405, 45, 50, 45, 115, 55, 95, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GENGAR, 1, false, false, false, "Shadow Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.5, 40.5, Abilities.CURSED_BODY, Abilities.NONE, Abilities.NONE, 500, 60, 65, 60, 130, 75, 110, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.GHOST, PokemonType.POISON, 1.5, 40.5, Abilities.CURSED_BODY, Abilities.NONE, Abilities.NONE, 500, 60, 65, 60, 130, 75, 110, 45, 50, 250, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GHOST, PokemonType.POISON, 1.4, 40.5, Abilities.SHADOW_TAG, Abilities.NONE, Abilities.NONE, 600, 60, 65, 80, 170, 95, 130, 45, 50, 250), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GHOST, PokemonType.POISON, 20, 999.9, Abilities.CURSED_BODY, Abilities.NONE, Abilities.NONE, 600, 140, 65, 70, 140, 85, 100, 45, 50, 250), - ), - new PokemonSpecies(Species.ONIX, 1, false, false, false, "Rock Snake Pokémon", PokemonType.ROCK, PokemonType.GROUND, 8.8, 210, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.WEAK_ARMOR, 385, 35, 45, 160, 30, 45, 70, 45, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DROWZEE, 1, false, false, false, "Hypnosis Pokémon", PokemonType.PSYCHIC, null, 1, 32.4, Abilities.INSOMNIA, Abilities.FOREWARN, Abilities.INNER_FOCUS, 328, 60, 48, 45, 43, 90, 42, 190, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HYPNO, 1, false, false, false, "Hypnosis Pokémon", PokemonType.PSYCHIC, null, 1.6, 75.6, Abilities.INSOMNIA, Abilities.FOREWARN, Abilities.INNER_FOCUS, 483, 85, 73, 70, 73, 115, 67, 75, 70, 169, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.KRABBY, 1, false, false, false, "River Crab Pokémon", PokemonType.WATER, null, 0.4, 6.5, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 325, 30, 105, 90, 25, 25, 50, 225, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.KINGLER, 1, false, false, false, "Pincer Pokémon", PokemonType.WATER, null, 1.3, 60, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 475, 55, 130, 115, 50, 50, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, null, 1.3, 60, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 475, 55, 130, 115, 50, 50, 75, 60, 50, 166, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, null, 19, 999.9, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, 575, 92, 145, 140, 60, 65, 73, 60, 50, 166), - ), - new PokemonSpecies(Species.VOLTORB, 1, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, null, 0.5, 10.4, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 330, 40, 30, 50, 55, 55, 100, 190, 70, 66, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.ELECTRODE, 1, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, null, 1.2, 66.6, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 490, 60, 50, 70, 80, 80, 150, 60, 70, 172, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.EXEGGCUTE, 1, false, false, false, "Egg Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 0.4, 2.5, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.HARVEST, 325, 60, 40, 80, 60, 45, 40, 90, 50, 65, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.EXEGGUTOR, 1, false, false, false, "Coconut Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 2, 120, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.HARVEST, 530, 95, 95, 85, 125, 75, 55, 45, 50, 186, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.CUBONE, 1, false, false, false, "Lonely Pokémon", PokemonType.GROUND, null, 0.4, 6.5, Abilities.ROCK_HEAD, Abilities.LIGHTNING_ROD, Abilities.BATTLE_ARMOR, 320, 50, 50, 95, 40, 50, 35, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MAROWAK, 1, false, false, false, "Bone Keeper Pokémon", PokemonType.GROUND, null, 1, 45, Abilities.ROCK_HEAD, Abilities.LIGHTNING_ROD, Abilities.BATTLE_ARMOR, 425, 60, 80, 110, 50, 80, 45, 75, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HITMONLEE, 1, false, false, false, "Kicking Pokémon", PokemonType.FIGHTING, null, 1.5, 49.8, Abilities.LIMBER, Abilities.RECKLESS, Abilities.UNBURDEN, 455, 50, 120, 53, 35, 110, 87, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.HITMONCHAN, 1, false, false, false, "Punching Pokémon", PokemonType.FIGHTING, null, 1.4, 50.2, Abilities.KEEN_EYE, Abilities.IRON_FIST, Abilities.INNER_FOCUS, 455, 50, 105, 79, 35, 110, 76, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.LICKITUNG, 1, false, false, false, "Licking Pokémon", PokemonType.NORMAL, null, 1.2, 65.5, Abilities.OWN_TEMPO, Abilities.OBLIVIOUS, Abilities.CLOUD_NINE, 385, 90, 55, 75, 60, 75, 30, 45, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.KOFFING, 1, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, null, 0.6, 1, Abilities.LEVITATE, Abilities.NEUTRALIZING_GAS, Abilities.STENCH, 340, 40, 65, 95, 60, 45, 35, 190, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WEEZING, 1, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, null, 1.2, 9.5, Abilities.LEVITATE, Abilities.NEUTRALIZING_GAS, Abilities.STENCH, 490, 65, 90, 120, 85, 70, 60, 60, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RHYHORN, 1, false, false, false, "Spikes Pokémon", PokemonType.GROUND, PokemonType.ROCK, 1, 115, Abilities.LIGHTNING_ROD, Abilities.ROCK_HEAD, Abilities.RECKLESS, 345, 80, 85, 95, 30, 30, 25, 120, 50, 69, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.RHYDON, 1, false, false, false, "Drill Pokémon", PokemonType.GROUND, PokemonType.ROCK, 1.9, 120, Abilities.LIGHTNING_ROD, Abilities.ROCK_HEAD, Abilities.RECKLESS, 485, 105, 130, 120, 45, 45, 40, 60, 50, 170, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.CHANSEY, 1, false, false, false, "Egg Pokémon", PokemonType.NORMAL, null, 1.1, 34.6, Abilities.NATURAL_CURE, Abilities.SERENE_GRACE, Abilities.HEALER, 450, 250, 5, 5, 35, 105, 50, 30, 140, 395, GrowthRate.FAST, 0, false), - new PokemonSpecies(Species.TANGELA, 1, false, false, false, "Vine Pokémon", PokemonType.GRASS, null, 1, 35, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.REGENERATOR, 435, 65, 55, 115, 100, 40, 60, 45, 50, 87, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.KANGASKHAN, 1, false, false, false, "Parent Pokémon", PokemonType.NORMAL, null, 2.2, 80, Abilities.EARLY_BIRD, Abilities.SCRAPPY, Abilities.INNER_FOCUS, 490, 105, 95, 80, 40, 80, 90, 45, 50, 172, GrowthRate.MEDIUM_FAST, 0, false, true, - new PokemonForm("Normal", "", PokemonType.NORMAL, null, 2.2, 80, Abilities.EARLY_BIRD, Abilities.SCRAPPY, Abilities.INNER_FOCUS, 490, 105, 95, 80, 40, 80, 90, 45, 50, 172, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, null, 2.2, 100, Abilities.PARENTAL_BOND, Abilities.PARENTAL_BOND, Abilities.PARENTAL_BOND, 590, 105, 125, 100, 60, 100, 100, 45, 50, 172), - ), - new PokemonSpecies(Species.HORSEA, 1, false, false, false, "Dragon Pokémon", PokemonType.WATER, null, 0.4, 8, Abilities.SWIFT_SWIM, Abilities.SNIPER, Abilities.DAMP, 295, 30, 40, 70, 70, 25, 60, 225, 50, 59, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SEADRA, 1, false, false, false, "Dragon Pokémon", PokemonType.WATER, null, 1.2, 25, Abilities.POISON_POINT, Abilities.SNIPER, Abilities.DAMP, 440, 55, 65, 95, 95, 45, 85, 75, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GOLDEEN, 1, false, false, false, "Goldfish Pokémon", PokemonType.WATER, null, 0.6, 15, Abilities.SWIFT_SWIM, Abilities.WATER_VEIL, Abilities.LIGHTNING_ROD, 320, 45, 67, 60, 35, 50, 63, 225, 50, 64, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.SEAKING, 1, false, false, false, "Goldfish Pokémon", PokemonType.WATER, null, 1.3, 39, Abilities.SWIFT_SWIM, Abilities.WATER_VEIL, Abilities.LIGHTNING_ROD, 450, 80, 92, 65, 65, 80, 68, 60, 50, 158, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.STARYU, 1, false, false, false, "Star Shape Pokémon", PokemonType.WATER, null, 0.8, 34.5, Abilities.ILLUMINATE, Abilities.NATURAL_CURE, Abilities.ANALYTIC, 340, 30, 45, 55, 70, 55, 85, 225, 50, 68, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.STARMIE, 1, false, false, false, "Mysterious Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.1, 80, Abilities.ILLUMINATE, Abilities.NATURAL_CURE, Abilities.ANALYTIC, 520, 60, 75, 85, 100, 85, 115, 60, 50, 182, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.MR_MIME, 1, false, false, false, "Barrier Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.3, 54.5, Abilities.SOUNDPROOF, Abilities.FILTER, Abilities.TECHNICIAN, 460, 40, 45, 65, 100, 120, 90, 45, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SCYTHER, 1, false, false, false, "Mantis Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.5, 56, Abilities.SWARM, Abilities.TECHNICIAN, Abilities.STEADFAST, 500, 70, 110, 80, 55, 80, 105, 45, 50, 100, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.JYNX, 1, false, false, false, "Human Shape Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.4, 40.6, Abilities.OBLIVIOUS, Abilities.FOREWARN, Abilities.DRY_SKIN, 455, 65, 50, 35, 115, 95, 95, 45, 50, 159, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.ELECTABUZZ, 1, false, false, false, "Electric Pokémon", PokemonType.ELECTRIC, null, 1.1, 30, Abilities.STATIC, Abilities.NONE, Abilities.VITAL_SPIRIT, 490, 65, 83, 57, 95, 85, 105, 45, 50, 172, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(Species.MAGMAR, 1, false, false, false, "Spitfire Pokémon", PokemonType.FIRE, null, 1.3, 44.5, Abilities.FLAME_BODY, Abilities.NONE, Abilities.VITAL_SPIRIT, 495, 65, 95, 57, 100, 85, 93, 45, 50, 173, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(Species.PINSIR, 1, false, false, false, "Stag Beetle Pokémon", PokemonType.BUG, null, 1.5, 55, Abilities.HYPER_CUTTER, Abilities.MOLD_BREAKER, Abilities.MOXIE, 500, 65, 125, 100, 55, 70, 85, 45, 50, 175, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.BUG, null, 1.5, 55, Abilities.HYPER_CUTTER, Abilities.MOLD_BREAKER, Abilities.MOXIE, 500, 65, 125, 100, 55, 70, 85, 45, 50, 175, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.FLYING, 1.7, 59, Abilities.AERILATE, Abilities.AERILATE, Abilities.AERILATE, 600, 65, 155, 120, 65, 90, 105, 45, 50, 175), - ), - new PokemonSpecies(Species.TAUROS, 1, false, false, false, "Wild Bull Pokémon", PokemonType.NORMAL, null, 1.4, 88.4, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.SHEER_FORCE, 490, 75, 100, 95, 40, 70, 110, 45, 50, 172, GrowthRate.SLOW, 100, false), - new PokemonSpecies(Species.MAGIKARP, 1, false, false, false, "Fish Pokémon", PokemonType.WATER, null, 0.9, 10, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.RATTLED, 200, 20, 10, 55, 15, 20, 80, 255, 50, 40, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.GYARADOS, 1, false, false, false, "Atrocious Pokémon", PokemonType.WATER, PokemonType.FLYING, 6.5, 235, Abilities.INTIMIDATE, Abilities.NONE, Abilities.MOXIE, 540, 95, 125, 79, 60, 100, 81, 45, 50, 189, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.FLYING, 6.5, 235, Abilities.INTIMIDATE, Abilities.NONE, Abilities.MOXIE, 540, 95, 125, 79, 60, 100, 81, 45, 50, 189, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.DARK, 6.5, 305, Abilities.MOLD_BREAKER, Abilities.MOLD_BREAKER, Abilities.MOLD_BREAKER, 640, 95, 155, 109, 70, 130, 81, 45, 50, 189, true), - ), - new PokemonSpecies(Species.LAPRAS, 1, false, false, false, "Transport Pokémon", PokemonType.WATER, PokemonType.ICE, 2.5, 220, Abilities.WATER_ABSORB, Abilities.SHELL_ARMOR, Abilities.HYDRATION, 535, 130, 85, 80, 85, 95, 60, 45, 50, 187, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.ICE, 2.5, 220, Abilities.WATER_ABSORB, Abilities.SHELL_ARMOR, Abilities.HYDRATION, 535, 130, 85, 80, 85, 95, 60, 45, 50, 187, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.ICE, 24, 999.9, Abilities.SHIELD_DUST, Abilities.SHIELD_DUST, Abilities.SHIELD_DUST, 635, 170, 97, 85, 107, 111, 65, 45, 50, 187), - ), - new PokemonSpecies(Species.DITTO, 1, false, false, false, "Transform Pokémon", PokemonType.NORMAL, null, 0.3, 4, Abilities.LIMBER, Abilities.NONE, Abilities.IMPOSTER, 288, 48, 48, 48, 48, 48, 48, 35, 50, 101, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.EEVEE, 1, false, false, false, "Evolution Pokémon", PokemonType.NORMAL, null, 0.3, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 325, 55, 55, 50, 45, 65, 55, 45, 50, 65, GrowthRate.MEDIUM_FAST, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.NORMAL, null, 0.3, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 325, 55, 55, 50, 45, 65, 55, 45, 50, 65, false, null, true), - new PokemonForm("Partner", "partner", PokemonType.NORMAL, null, 0.3, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 435, 65, 75, 70, 65, 85, 75, 45, 50, 65, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 18, 999.9, Abilities.PROTEAN, Abilities.PROTEAN, Abilities.PROTEAN, 535, 110, 95, 70, 90, 85, 85, 45, 50, 65), //+100 BST from Partner Form - ), - new PokemonSpecies(Species.VAPOREON, 1, false, false, false, "Bubble Jet Pokémon", PokemonType.WATER, null, 1, 29, Abilities.WATER_ABSORB, Abilities.NONE, Abilities.HYDRATION, 525, 130, 65, 60, 110, 95, 65, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.JOLTEON, 1, false, false, false, "Lightning Pokémon", PokemonType.ELECTRIC, null, 0.8, 24.5, Abilities.VOLT_ABSORB, Abilities.NONE, Abilities.QUICK_FEET, 525, 65, 65, 60, 110, 95, 130, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.FLAREON, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, null, 0.9, 25, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.GUTS, 525, 65, 130, 60, 95, 110, 65, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.PORYGON, 1, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.8, 36.5, Abilities.TRACE, Abilities.DOWNLOAD, Abilities.ANALYTIC, 395, 65, 60, 70, 85, 75, 40, 45, 50, 79, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.OMANYTE, 1, false, false, false, "Spiral Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.4, 7.5, Abilities.SWIFT_SWIM, Abilities.SHELL_ARMOR, Abilities.WEAK_ARMOR, 355, 35, 40, 100, 90, 55, 35, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.OMASTAR, 1, false, false, false, "Spiral Pokémon", PokemonType.ROCK, PokemonType.WATER, 1, 35, Abilities.SWIFT_SWIM, Abilities.SHELL_ARMOR, Abilities.WEAK_ARMOR, 495, 70, 60, 125, 115, 70, 55, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.KABUTO, 1, false, false, false, "Shellfish Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.5, 11.5, Abilities.SWIFT_SWIM, Abilities.BATTLE_ARMOR, Abilities.WEAK_ARMOR, 355, 30, 80, 90, 55, 45, 55, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.KABUTOPS, 1, false, false, false, "Shellfish Pokémon", PokemonType.ROCK, PokemonType.WATER, 1.3, 40.5, Abilities.SWIFT_SWIM, Abilities.BATTLE_ARMOR, Abilities.WEAK_ARMOR, 495, 60, 115, 105, 65, 70, 80, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.AERODACTYL, 1, false, false, false, "Fossil Pokémon", PokemonType.ROCK, PokemonType.FLYING, 1.8, 59, Abilities.ROCK_HEAD, Abilities.PRESSURE, Abilities.UNNERVE, 515, 80, 105, 65, 60, 75, 130, 45, 50, 180, GrowthRate.SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FLYING, 1.8, 59, Abilities.ROCK_HEAD, Abilities.PRESSURE, Abilities.UNNERVE, 515, 80, 105, 65, 60, 75, 130, 45, 50, 180, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.FLYING, 2.1, 79, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, 615, 80, 135, 85, 70, 95, 150, 45, 50, 180), - ), - new PokemonSpecies(Species.SNORLAX, 1, false, false, false, "Sleeping Pokémon", PokemonType.NORMAL, null, 2.1, 460, Abilities.IMMUNITY, Abilities.THICK_FAT, Abilities.GLUTTONY, 540, 160, 110, 65, 65, 110, 30, 25, 50, 189, GrowthRate.SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.NORMAL, null, 2.1, 460, Abilities.IMMUNITY, Abilities.THICK_FAT, Abilities.GLUTTONY, 540, 160, 110, 65, 65, 110, 30, 25, 50, 189, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 35, 999.9, Abilities.HARVEST, Abilities.HARVEST, Abilities.HARVEST, 640, 210, 135, 70, 90, 115, 20, 25, 50, 189), - ), - new PokemonSpecies(Species.ARTICUNO, 1, true, false, false, "Freeze Pokémon", PokemonType.ICE, PokemonType.FLYING, 1.7, 55.4, Abilities.PRESSURE, Abilities.NONE, Abilities.SNOW_CLOAK, 580, 90, 85, 100, 95, 125, 85, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ZAPDOS, 1, true, false, false, "Electric Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.6, 52.6, Abilities.PRESSURE, Abilities.NONE, Abilities.STATIC, 580, 90, 90, 85, 125, 90, 100, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.MOLTRES, 1, true, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FLYING, 2, 60, Abilities.PRESSURE, Abilities.NONE, Abilities.FLAME_BODY, 580, 90, 100, 90, 125, 85, 90, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.DRATINI, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 1.8, 3.3, Abilities.SHED_SKIN, Abilities.NONE, Abilities.MARVEL_SCALE, 300, 41, 64, 45, 50, 50, 50, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.DRAGONAIR, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 4, 16.5, Abilities.SHED_SKIN, Abilities.NONE, Abilities.MARVEL_SCALE, 420, 61, 84, 65, 70, 70, 70, 45, 35, 147, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.DRAGONITE, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 2.2, 210, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.MULTISCALE, 600, 91, 134, 95, 100, 100, 80, 45, 35, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.MEWTWO, 1, false, true, false, "Genetic Pokémon", PokemonType.PSYCHIC, null, 2, 122, Abilities.PRESSURE, Abilities.NONE, Abilities.UNNERVE, 680, 106, 110, 90, 154, 90, 130, 3, 0, 340, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 2, 122, Abilities.PRESSURE, Abilities.NONE, Abilities.UNNERVE, 680, 106, 110, 90, 154, 90, 130, 3, 0, 340, false, null, true), - new PokemonForm("Mega X", SpeciesFormKey.MEGA_X, PokemonType.PSYCHIC, PokemonType.FIGHTING, 2.3, 127, Abilities.STEADFAST, Abilities.NONE, Abilities.STEADFAST, 780, 106, 190, 100, 154, 100, 130, 3, 0, 340), - new PokemonForm("Mega Y", SpeciesFormKey.MEGA_Y, PokemonType.PSYCHIC, null, 1.5, 33, Abilities.INSOMNIA, Abilities.NONE, Abilities.INSOMNIA, 780, 106, 150, 70, 194, 120, 140, 3, 0, 340), - ), - new PokemonSpecies(Species.MEW, 1, false, false, true, "New Species Pokémon", PokemonType.PSYCHIC, null, 0.4, 4, Abilities.SYNCHRONIZE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(Species.CHIKORITA, 2, false, false, false, "Leaf Pokémon", PokemonType.GRASS, null, 0.9, 6.4, Abilities.OVERGROW, Abilities.NONE, Abilities.LEAF_GUARD, 318, 45, 49, 65, 49, 65, 45, 45, 70, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.BAYLEEF, 2, false, false, false, "Leaf Pokémon", PokemonType.GRASS, null, 1.2, 15.8, Abilities.OVERGROW, Abilities.NONE, Abilities.LEAF_GUARD, 405, 60, 62, 80, 63, 80, 60, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.MEGANIUM, 2, false, false, false, "Herb Pokémon", PokemonType.GRASS, null, 1.8, 100.5, Abilities.OVERGROW, Abilities.NONE, Abilities.LEAF_GUARD, 525, 80, 82, 100, 83, 100, 80, 45, 70, 263, GrowthRate.MEDIUM_SLOW, 87.5, true), - new PokemonSpecies(Species.CYNDAQUIL, 2, false, false, false, "Fire Mouse Pokémon", PokemonType.FIRE, null, 0.5, 7.9, Abilities.BLAZE, Abilities.NONE, Abilities.FLASH_FIRE, 309, 39, 52, 43, 60, 50, 65, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.QUILAVA, 2, false, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 0.9, 19, Abilities.BLAZE, Abilities.NONE, Abilities.FLASH_FIRE, 405, 58, 64, 58, 80, 65, 80, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.TYPHLOSION, 2, false, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 1.7, 79.5, Abilities.BLAZE, Abilities.NONE, Abilities.FLASH_FIRE, 534, 78, 84, 78, 109, 85, 100, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.TOTODILE, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 0.6, 9.5, Abilities.TORRENT, Abilities.NONE, Abilities.SHEER_FORCE, 314, 50, 65, 64, 44, 48, 43, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.CROCONAW, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 1.1, 25, Abilities.TORRENT, Abilities.NONE, Abilities.SHEER_FORCE, 405, 65, 80, 80, 59, 63, 58, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.FERALIGATR, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 2.3, 88.8, Abilities.TORRENT, Abilities.NONE, Abilities.SHEER_FORCE, 530, 85, 105, 100, 79, 83, 78, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.SENTRET, 2, false, false, false, "Scout Pokémon", PokemonType.NORMAL, null, 0.8, 6, Abilities.RUN_AWAY, Abilities.KEEN_EYE, Abilities.FRISK, 215, 35, 46, 34, 35, 45, 20, 255, 70, 43, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FURRET, 2, false, false, false, "Long Body Pokémon", PokemonType.NORMAL, null, 1.8, 32.5, Abilities.RUN_AWAY, Abilities.KEEN_EYE, Abilities.FRISK, 415, 85, 76, 64, 45, 55, 90, 90, 70, 145, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HOOTHOOT, 2, false, false, false, "Owl Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.7, 21.2, Abilities.INSOMNIA, Abilities.KEEN_EYE, Abilities.TINTED_LENS, 262, 60, 30, 30, 36, 56, 50, 255, 50, 52, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.NOCTOWL, 2, false, false, false, "Owl Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.6, 40.8, Abilities.INSOMNIA, Abilities.KEEN_EYE, Abilities.TINTED_LENS, 452, 100, 50, 50, 86, 96, 70, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LEDYBA, 2, false, false, false, "Five Star Pokémon", PokemonType.BUG, PokemonType.FLYING, 1, 10.8, Abilities.SWARM, Abilities.EARLY_BIRD, Abilities.RATTLED, 265, 40, 20, 30, 40, 80, 55, 255, 70, 53, GrowthRate.FAST, 50, true), - new PokemonSpecies(Species.LEDIAN, 2, false, false, false, "Five Star Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.4, 35.6, Abilities.SWARM, Abilities.EARLY_BIRD, Abilities.IRON_FIST, 390, 55, 35, 50, 55, 110, 85, 90, 70, 137, GrowthRate.FAST, 50, true), - new PokemonSpecies(Species.SPINARAK, 2, false, false, false, "String Spit Pokémon", PokemonType.BUG, PokemonType.POISON, 0.5, 8.5, Abilities.SWARM, Abilities.INSOMNIA, Abilities.SNIPER, 250, 40, 60, 40, 40, 40, 30, 255, 70, 50, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.ARIADOS, 2, false, false, false, "Long Leg Pokémon", PokemonType.BUG, PokemonType.POISON, 1.1, 33.5, Abilities.SWARM, Abilities.INSOMNIA, Abilities.SNIPER, 400, 70, 90, 70, 60, 70, 40, 90, 70, 140, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.CROBAT, 2, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 1.8, 75, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.INFILTRATOR, 535, 85, 90, 80, 70, 80, 130, 90, 50, 268, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CHINCHOU, 2, false, false, false, "Angler Pokémon", PokemonType.WATER, PokemonType.ELECTRIC, 0.5, 12, Abilities.VOLT_ABSORB, Abilities.ILLUMINATE, Abilities.WATER_ABSORB, 330, 75, 38, 38, 56, 56, 67, 190, 50, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.LANTURN, 2, false, false, false, "Light Pokémon", PokemonType.WATER, PokemonType.ELECTRIC, 1.2, 22.5, Abilities.VOLT_ABSORB, Abilities.ILLUMINATE, Abilities.WATER_ABSORB, 460, 125, 58, 58, 76, 76, 67, 75, 50, 161, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.PICHU, 2, false, false, false, "Tiny Mouse Pokémon", PokemonType.ELECTRIC, null, 0.3, 2, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.4, 2, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), - new PokemonForm("Spiky-Eared", "spiky", PokemonType.ELECTRIC, null, 1.4, 2, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), - ), - new PokemonSpecies(Species.CLEFFA, 2, false, false, false, "Star Shape Pokémon", PokemonType.FAIRY, null, 0.3, 3, Abilities.CUTE_CHARM, Abilities.MAGIC_GUARD, Abilities.FRIEND_GUARD, 218, 50, 25, 28, 45, 55, 15, 150, 140, 44, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.IGGLYBUFF, 2, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.3, 1, Abilities.CUTE_CHARM, Abilities.COMPETITIVE, Abilities.FRIEND_GUARD, 210, 90, 30, 15, 40, 20, 15, 170, 50, 42, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.TOGEPI, 2, false, false, false, "Spike Ball Pokémon", PokemonType.FAIRY, null, 0.3, 1.5, Abilities.HUSTLE, Abilities.SERENE_GRACE, Abilities.SUPER_LUCK, 245, 35, 20, 65, 40, 65, 20, 190, 50, 49, GrowthRate.FAST, 87.5, false), - new PokemonSpecies(Species.TOGETIC, 2, false, false, false, "Happiness Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 0.6, 3.2, Abilities.HUSTLE, Abilities.SERENE_GRACE, Abilities.SUPER_LUCK, 405, 55, 40, 85, 80, 105, 40, 75, 50, 142, GrowthRate.FAST, 87.5, false), - new PokemonSpecies(Species.NATU, 2, false, false, false, "Tiny Bird Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.2, 2, Abilities.SYNCHRONIZE, Abilities.EARLY_BIRD, Abilities.MAGIC_BOUNCE, 320, 40, 50, 45, 70, 45, 70, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.XATU, 2, false, false, false, "Mystic Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.5, 15, Abilities.SYNCHRONIZE, Abilities.EARLY_BIRD, Abilities.MAGIC_BOUNCE, 470, 65, 75, 70, 95, 70, 95, 75, 50, 165, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.MAREEP, 2, false, false, false, "Wool Pokémon", PokemonType.ELECTRIC, null, 0.6, 7.8, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 280, 55, 40, 40, 65, 45, 35, 235, 70, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.FLAAFFY, 2, false, false, false, "Wool Pokémon", PokemonType.ELECTRIC, null, 0.8, 13.3, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 365, 70, 55, 55, 80, 60, 45, 120, 70, 128, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.AMPHAROS, 2, false, false, false, "Light Pokémon", PokemonType.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 255, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 255, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ELECTRIC, PokemonType.DRAGON, 1.4, 61.5, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.MOLD_BREAKER, 610, 90, 95, 105, 165, 110, 45, 45, 70, 255), - ), - new PokemonSpecies(Species.BELLOSSOM, 2, false, false, false, "Flower Pokémon", PokemonType.GRASS, null, 0.4, 5.8, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.HEALER, 490, 75, 80, 95, 90, 100, 50, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.MARILL, 2, false, false, false, "Aqua Mouse Pokémon", PokemonType.WATER, PokemonType.FAIRY, 0.4, 8.5, Abilities.THICK_FAT, Abilities.HUGE_POWER, Abilities.SAP_SIPPER, 250, 70, 20, 50, 20, 50, 40, 190, 50, 88, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.AZUMARILL, 2, false, false, false, "Aqua Rabbit Pokémon", PokemonType.WATER, PokemonType.FAIRY, 0.8, 28.5, Abilities.THICK_FAT, Abilities.HUGE_POWER, Abilities.SAP_SIPPER, 420, 100, 50, 80, 60, 80, 50, 75, 50, 210, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.SUDOWOODO, 2, false, false, false, "Imitation Pokémon", PokemonType.ROCK, null, 1.2, 38, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.RATTLED, 410, 70, 100, 115, 30, 65, 30, 65, 50, 144, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.POLITOED, 2, false, false, false, "Frog Pokémon", PokemonType.WATER, null, 1.1, 33.9, Abilities.WATER_ABSORB, Abilities.DAMP, Abilities.DRIZZLE, 500, 90, 75, 75, 90, 100, 70, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.HOPPIP, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.4, 0.5, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.INFILTRATOR, 250, 35, 35, 40, 35, 55, 50, 255, 70, 50, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SKIPLOOM, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.6, 1, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.INFILTRATOR, 340, 55, 45, 50, 45, 65, 80, 120, 70, 119, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.JUMPLUFF, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.8, 3, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.INFILTRATOR, 460, 75, 55, 70, 55, 95, 110, 45, 70, 230, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.AIPOM, 2, false, false, false, "Long Tail Pokémon", PokemonType.NORMAL, null, 0.8, 11.5, Abilities.RUN_AWAY, Abilities.PICKUP, Abilities.SKILL_LINK, 360, 55, 70, 55, 40, 55, 85, 45, 70, 72, GrowthRate.FAST, 50, true), - new PokemonSpecies(Species.SUNKERN, 2, false, false, false, "Seed Pokémon", PokemonType.GRASS, null, 0.3, 1.8, Abilities.CHLOROPHYLL, Abilities.SOLAR_POWER, Abilities.EARLY_BIRD, 180, 30, 30, 30, 30, 30, 30, 235, 70, 36, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SUNFLORA, 2, false, false, false, "Sun Pokémon", PokemonType.GRASS, null, 0.8, 8.5, Abilities.CHLOROPHYLL, Abilities.SOLAR_POWER, Abilities.EARLY_BIRD, 425, 75, 75, 55, 105, 85, 30, 120, 70, 149, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.YANMA, 2, false, false, false, "Clear Wing Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 38, Abilities.SPEED_BOOST, Abilities.COMPOUND_EYES, Abilities.FRISK, 390, 65, 65, 45, 75, 45, 95, 75, 70, 78, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WOOPER, 2, false, false, false, "Water Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.4, 8.5, Abilities.DAMP, Abilities.WATER_ABSORB, Abilities.UNAWARE, 210, 55, 45, 45, 25, 25, 15, 255, 50, 42, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.QUAGSIRE, 2, false, false, false, "Water Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.4, 75, Abilities.DAMP, Abilities.WATER_ABSORB, Abilities.UNAWARE, 430, 95, 85, 85, 65, 65, 35, 90, 50, 151, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.ESPEON, 2, false, false, false, "Sun Pokémon", PokemonType.PSYCHIC, null, 0.9, 26.5, Abilities.SYNCHRONIZE, Abilities.NONE, Abilities.MAGIC_BOUNCE, 525, 65, 65, 60, 130, 95, 110, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.UMBREON, 2, false, false, false, "Moonlight Pokémon", PokemonType.DARK, null, 1, 27, Abilities.SYNCHRONIZE, Abilities.NONE, Abilities.INNER_FOCUS, 525, 95, 65, 110, 60, 130, 65, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.MURKROW, 2, false, false, false, "Darkness Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.5, 2.1, Abilities.INSOMNIA, Abilities.SUPER_LUCK, Abilities.PRANKSTER, 405, 60, 85, 42, 85, 42, 91, 30, 35, 81, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.SLOWKING, 2, false, false, false, "Royal Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 2, 79.5, Abilities.OBLIVIOUS, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 75, 80, 100, 110, 30, 70, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MISDREAVUS, 2, false, false, false, "Screech Pokémon", PokemonType.GHOST, null, 0.7, 1, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 435, 60, 60, 60, 85, 85, 85, 45, 35, 87, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.UNOWN, 2, false, false, false, "Symbol Pokémon", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, GrowthRate.MEDIUM_FAST, null, false, false, - new PokemonForm("A", "a", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("B", "b", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("C", "c", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("D", "d", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("E", "e", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("F", "f", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("G", "g", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("H", "h", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("I", "i", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("J", "j", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("K", "k", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("L", "l", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("M", "m", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("N", "n", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("O", "o", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("P", "p", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("Q", "q", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("R", "r", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("S", "s", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("T", "t", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("U", "u", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("V", "v", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("W", "w", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("X", "x", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("Y", "y", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("Z", "z", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("!", "exclamation", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("?", "question", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - ), - new PokemonSpecies(Species.WOBBUFFET, 2, false, false, false, "Patient Pokémon", PokemonType.PSYCHIC, null, 1.3, 28.5, Abilities.SHADOW_TAG, Abilities.NONE, Abilities.TELEPATHY, 405, 190, 33, 58, 33, 58, 33, 45, 50, 142, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.GIRAFARIG, 2, false, false, false, "Long Neck Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.5, 41.5, Abilities.INNER_FOCUS, Abilities.EARLY_BIRD, Abilities.SAP_SIPPER, 455, 70, 80, 65, 90, 65, 85, 60, 70, 159, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.PINECO, 2, false, false, false, "Bagworm Pokémon", PokemonType.BUG, null, 0.6, 7.2, Abilities.STURDY, Abilities.NONE, Abilities.OVERCOAT, 290, 50, 65, 90, 35, 35, 15, 190, 70, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FORRETRESS, 2, false, false, false, "Bagworm Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.2, 125.8, Abilities.STURDY, Abilities.NONE, Abilities.OVERCOAT, 465, 75, 90, 140, 60, 60, 40, 75, 70, 163, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DUNSPARCE, 2, false, false, false, "Land Snake Pokémon", PokemonType.NORMAL, null, 1.5, 14, Abilities.SERENE_GRACE, Abilities.RUN_AWAY, Abilities.RATTLED, 415, 100, 70, 70, 65, 65, 45, 190, 50, 145, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GLIGAR, 2, false, false, false, "Fly Scorpion Pokémon", PokemonType.GROUND, PokemonType.FLYING, 1.1, 64.8, Abilities.HYPER_CUTTER, Abilities.SAND_VEIL, Abilities.IMMUNITY, 430, 65, 75, 105, 35, 65, 85, 60, 70, 86, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.STEELIX, 2, false, false, false, "Iron Snake Pokémon", PokemonType.STEEL, PokemonType.GROUND, 9.2, 400, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SHEER_FORCE, 510, 75, 85, 200, 55, 65, 30, 25, 50, 179, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.GROUND, 9.2, 400, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SHEER_FORCE, 510, 75, 85, 200, 55, 65, 30, 25, 50, 179, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.GROUND, 10.5, 740, Abilities.SAND_FORCE, Abilities.SAND_FORCE, Abilities.SAND_FORCE, 610, 75, 125, 230, 55, 95, 30, 25, 50, 179, true), - ), - new PokemonSpecies(Species.SNUBBULL, 2, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 0.6, 7.8, Abilities.INTIMIDATE, Abilities.RUN_AWAY, Abilities.RATTLED, 300, 60, 80, 50, 40, 40, 30, 190, 70, 60, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.GRANBULL, 2, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 1.4, 48.7, Abilities.INTIMIDATE, Abilities.QUICK_FEET, Abilities.RATTLED, 450, 90, 120, 75, 60, 60, 45, 75, 70, 158, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.QWILFISH, 2, false, false, false, "Balloon Pokémon", PokemonType.WATER, PokemonType.POISON, 0.5, 3.9, Abilities.POISON_POINT, Abilities.SWIFT_SWIM, Abilities.INTIMIDATE, 440, 65, 95, 85, 55, 55, 85, 45, 50, 88, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SCIZOR, 2, false, false, false, "Pincer Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.8, 118, Abilities.SWARM, Abilities.TECHNICIAN, Abilities.LIGHT_METAL, 500, 70, 130, 100, 55, 80, 65, 25, 50, 175, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.STEEL, 1.8, 118, Abilities.SWARM, Abilities.TECHNICIAN, Abilities.LIGHT_METAL, 500, 70, 130, 100, 55, 80, 65, 25, 50, 175, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.STEEL, 2, 125, Abilities.TECHNICIAN, Abilities.TECHNICIAN, Abilities.TECHNICIAN, 600, 70, 150, 140, 65, 100, 75, 25, 50, 175, true), - ), - new PokemonSpecies(Species.SHUCKLE, 2, false, false, false, "Mold Pokémon", PokemonType.BUG, PokemonType.ROCK, 0.6, 20.5, Abilities.STURDY, Abilities.GLUTTONY, Abilities.CONTRARY, 505, 20, 10, 230, 10, 230, 5, 190, 50, 177, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.HERACROSS, 2, false, false, false, "Single Horn Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 1.5, 54, Abilities.SWARM, Abilities.GUTS, Abilities.MOXIE, 500, 80, 125, 75, 40, 95, 85, 45, 50, 175, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.FIGHTING, 1.5, 54, Abilities.SWARM, Abilities.GUTS, Abilities.MOXIE, 500, 80, 125, 75, 40, 95, 85, 45, 50, 175, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.FIGHTING, 1.7, 62.5, Abilities.SKILL_LINK, Abilities.SKILL_LINK, Abilities.SKILL_LINK, 600, 80, 185, 115, 40, 105, 75, 45, 50, 175, true), - ), - new PokemonSpecies(Species.SNEASEL, 2, false, false, false, "Sharp Claw Pokémon", PokemonType.DARK, PokemonType.ICE, 0.9, 28, Abilities.INNER_FOCUS, Abilities.KEEN_EYE, Abilities.PICKPOCKET, 430, 55, 95, 55, 35, 75, 115, 60, 35, 86, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.TEDDIURSA, 2, false, false, false, "Little Bear Pokémon", PokemonType.NORMAL, null, 0.6, 8.8, Abilities.PICKUP, Abilities.QUICK_FEET, Abilities.HONEY_GATHER, 330, 60, 80, 50, 50, 50, 40, 120, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.URSARING, 2, false, false, false, "Hibernator Pokémon", PokemonType.NORMAL, null, 1.8, 125.8, Abilities.GUTS, Abilities.QUICK_FEET, Abilities.UNNERVE, 500, 90, 130, 75, 75, 75, 55, 60, 70, 175, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.SLUGMA, 2, false, false, false, "Lava Pokémon", PokemonType.FIRE, null, 0.7, 35, Abilities.MAGMA_ARMOR, Abilities.FLAME_BODY, Abilities.WEAK_ARMOR, 250, 40, 40, 40, 70, 40, 20, 190, 70, 50, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MAGCARGO, 2, false, false, false, "Lava Pokémon", PokemonType.FIRE, PokemonType.ROCK, 0.8, 55, Abilities.MAGMA_ARMOR, Abilities.FLAME_BODY, Abilities.WEAK_ARMOR, 430, 60, 50, 120, 90, 80, 30, 75, 70, 151, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SWINUB, 2, false, false, false, "Pig Pokémon", PokemonType.ICE, PokemonType.GROUND, 0.4, 6.5, Abilities.OBLIVIOUS, Abilities.SNOW_CLOAK, Abilities.THICK_FAT, 250, 50, 50, 40, 30, 30, 50, 225, 50, 50, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.PILOSWINE, 2, false, false, false, "Swine Pokémon", PokemonType.ICE, PokemonType.GROUND, 1.1, 55.8, Abilities.OBLIVIOUS, Abilities.SNOW_CLOAK, Abilities.THICK_FAT, 450, 100, 100, 80, 60, 60, 50, 75, 50, 158, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.CORSOLA, 2, false, false, false, "Coral Pokémon", PokemonType.WATER, PokemonType.ROCK, 0.6, 5, Abilities.HUSTLE, Abilities.NATURAL_CURE, Abilities.REGENERATOR, 410, 65, 55, 95, 65, 95, 35, 60, 50, 144, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.REMORAID, 2, false, false, false, "Jet Pokémon", PokemonType.WATER, null, 0.6, 12, Abilities.HUSTLE, Abilities.SNIPER, Abilities.MOODY, 300, 35, 65, 35, 65, 35, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.OCTILLERY, 2, false, false, false, "Jet Pokémon", PokemonType.WATER, null, 0.9, 28.5, Abilities.SUCTION_CUPS, Abilities.SNIPER, Abilities.MOODY, 480, 75, 105, 75, 105, 75, 45, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.DELIBIRD, 2, false, false, false, "Delivery Pokémon", PokemonType.ICE, PokemonType.FLYING, 0.9, 16, Abilities.VITAL_SPIRIT, Abilities.HUSTLE, Abilities.INSOMNIA, 330, 45, 55, 45, 65, 45, 75, 45, 50, 116, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.MANTINE, 2, false, false, false, "Kite Pokémon", PokemonType.WATER, PokemonType.FLYING, 2.1, 220, Abilities.SWIFT_SWIM, Abilities.WATER_ABSORB, Abilities.WATER_VEIL, 485, 85, 40, 70, 80, 140, 70, 25, 50, 170, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SKARMORY, 2, false, false, false, "Armor Bird Pokémon", PokemonType.STEEL, PokemonType.FLYING, 1.7, 50.5, Abilities.KEEN_EYE, Abilities.STURDY, Abilities.WEAK_ARMOR, 465, 65, 80, 140, 40, 70, 70, 25, 50, 163, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HOUNDOUR, 2, false, false, false, "Dark Pokémon", PokemonType.DARK, PokemonType.FIRE, 0.6, 10.8, Abilities.EARLY_BIRD, Abilities.FLASH_FIRE, Abilities.UNNERVE, 330, 45, 60, 30, 80, 50, 65, 120, 35, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HOUNDOOM, 2, false, false, false, "Dark Pokémon", PokemonType.DARK, PokemonType.FIRE, 1.4, 35, Abilities.EARLY_BIRD, Abilities.FLASH_FIRE, Abilities.UNNERVE, 500, 75, 90, 50, 110, 80, 95, 45, 35, 175, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.FIRE, 1.4, 35, Abilities.EARLY_BIRD, Abilities.FLASH_FIRE, Abilities.UNNERVE, 500, 75, 90, 50, 110, 80, 95, 45, 35, 175, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, PokemonType.FIRE, 1.9, 49.5, Abilities.SOLAR_POWER, Abilities.SOLAR_POWER, Abilities.SOLAR_POWER, 600, 75, 90, 90, 140, 90, 115, 45, 35, 175, true), - ), - new PokemonSpecies(Species.KINGDRA, 2, false, false, false, "Dragon Pokémon", PokemonType.WATER, PokemonType.DRAGON, 1.8, 152, Abilities.SWIFT_SWIM, Abilities.SNIPER, Abilities.DAMP, 540, 75, 95, 95, 95, 95, 85, 45, 50, 270, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PHANPY, 2, false, false, false, "Long Nose Pokémon", PokemonType.GROUND, null, 0.5, 33.5, Abilities.PICKUP, Abilities.NONE, Abilities.SAND_VEIL, 330, 90, 60, 60, 40, 40, 40, 120, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DONPHAN, 2, false, false, false, "Armor Pokémon", PokemonType.GROUND, null, 1.1, 120, Abilities.STURDY, Abilities.NONE, Abilities.SAND_VEIL, 500, 90, 120, 120, 60, 60, 50, 60, 70, 175, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.PORYGON2, 2, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.6, 32.5, Abilities.TRACE, Abilities.DOWNLOAD, Abilities.ANALYTIC, 515, 85, 80, 90, 105, 95, 60, 45, 50, 180, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.STANTLER, 2, false, false, false, "Big Horn Pokémon", PokemonType.NORMAL, null, 1.4, 71.2, Abilities.INTIMIDATE, Abilities.FRISK, Abilities.SAP_SIPPER, 465, 73, 95, 62, 85, 65, 85, 45, 70, 163, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SMEARGLE, 2, false, false, false, "Painter Pokémon", PokemonType.NORMAL, null, 1.2, 58, Abilities.OWN_TEMPO, Abilities.TECHNICIAN, Abilities.MOODY, 250, 55, 20, 35, 20, 45, 75, 45, 70, 88, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.TYROGUE, 2, false, false, false, "Scuffle Pokémon", PokemonType.FIGHTING, null, 0.7, 21, Abilities.GUTS, Abilities.STEADFAST, Abilities.VITAL_SPIRIT, 210, 35, 35, 35, 35, 35, 35, 75, 50, 42, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.HITMONTOP, 2, false, false, false, "Handstand Pokémon", PokemonType.FIGHTING, null, 1.4, 48, Abilities.INTIMIDATE, Abilities.TECHNICIAN, Abilities.STEADFAST, 455, 50, 95, 95, 35, 110, 70, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.SMOOCHUM, 2, false, false, false, "Kiss Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 0.4, 6, Abilities.OBLIVIOUS, Abilities.FOREWARN, Abilities.HYDRATION, 305, 45, 30, 15, 85, 65, 65, 45, 50, 61, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.ELEKID, 2, false, false, false, "Electric Pokémon", PokemonType.ELECTRIC, null, 0.6, 23.5, Abilities.STATIC, Abilities.NONE, Abilities.VITAL_SPIRIT, 360, 45, 63, 37, 65, 55, 95, 45, 50, 72, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(Species.MAGBY, 2, false, false, false, "Live Coal Pokémon", PokemonType.FIRE, null, 0.7, 21.4, Abilities.FLAME_BODY, Abilities.NONE, Abilities.VITAL_SPIRIT, 365, 45, 75, 37, 70, 55, 83, 45, 50, 73, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(Species.MILTANK, 2, false, false, false, "Milk Cow Pokémon", PokemonType.NORMAL, null, 1.2, 75.5, Abilities.THICK_FAT, Abilities.SCRAPPY, Abilities.SAP_SIPPER, 490, 95, 80, 105, 40, 70, 100, 45, 50, 172, GrowthRate.SLOW, 0, false), - new PokemonSpecies(Species.BLISSEY, 2, false, false, false, "Happiness Pokémon", PokemonType.NORMAL, null, 1.5, 46.8, Abilities.NATURAL_CURE, Abilities.SERENE_GRACE, Abilities.HEALER, 540, 255, 10, 10, 75, 135, 55, 30, 140, 608, GrowthRate.FAST, 0, false), - new PokemonSpecies(Species.RAIKOU, 2, true, false, false, "Thunder Pokémon", PokemonType.ELECTRIC, null, 1.9, 178, Abilities.PRESSURE, Abilities.NONE, Abilities.INNER_FOCUS, 580, 90, 85, 75, 115, 100, 115, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ENTEI, 2, true, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 2.1, 198, Abilities.PRESSURE, Abilities.NONE, Abilities.INNER_FOCUS, 580, 115, 115, 85, 90, 75, 100, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SUICUNE, 2, true, false, false, "Aurora Pokémon", PokemonType.WATER, null, 2, 187, Abilities.PRESSURE, Abilities.NONE, Abilities.INNER_FOCUS, 580, 100, 75, 115, 90, 115, 85, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.LARVITAR, 2, false, false, false, "Rock Skin Pokémon", PokemonType.ROCK, PokemonType.GROUND, 0.6, 72, Abilities.GUTS, Abilities.NONE, Abilities.SAND_VEIL, 300, 50, 64, 50, 45, 50, 41, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.PUPITAR, 2, false, false, false, "Hard Shell Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1.2, 152, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 410, 70, 84, 70, 65, 70, 51, 45, 35, 144, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.TYRANITAR, 2, false, false, false, "Armor Pokémon", PokemonType.ROCK, PokemonType.DARK, 2, 202, Abilities.SAND_STREAM, Abilities.NONE, Abilities.UNNERVE, 600, 100, 134, 110, 95, 100, 61, 45, 35, 300, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.DARK, 2, 202, Abilities.SAND_STREAM, Abilities.NONE, Abilities.UNNERVE, 600, 100, 134, 110, 95, 100, 61, 45, 35, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.DARK, 2.5, 255, Abilities.SAND_STREAM, Abilities.NONE, Abilities.SAND_STREAM, 700, 100, 164, 150, 95, 120, 71, 45, 35, 300), - ), - new PokemonSpecies(Species.LUGIA, 2, false, true, false, "Diving Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 5.2, 216, Abilities.PRESSURE, Abilities.NONE, Abilities.MULTISCALE, 680, 106, 90, 130, 90, 154, 110, 3, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.HO_OH, 2, false, true, false, "Rainbow Pokémon", PokemonType.FIRE, PokemonType.FLYING, 3.8, 199, Abilities.PRESSURE, Abilities.NONE, Abilities.REGENERATOR, 680, 106, 130, 90, 110, 154, 90, 3, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.CELEBI, 2, false, false, true, "Time Travel Pokémon", PokemonType.PSYCHIC, PokemonType.GRASS, 0.6, 5, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(Species.TREECKO, 3, false, false, false, "Wood Gecko Pokémon", PokemonType.GRASS, null, 0.5, 5, Abilities.OVERGROW, Abilities.NONE, Abilities.UNBURDEN, 310, 40, 45, 35, 65, 55, 70, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.GROVYLE, 3, false, false, false, "Wood Gecko Pokémon", PokemonType.GRASS, null, 0.9, 21.6, Abilities.OVERGROW, Abilities.NONE, Abilities.UNBURDEN, 405, 50, 65, 45, 85, 65, 95, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.SCEPTILE, 3, false, false, false, "Forest Pokémon", PokemonType.GRASS, null, 1.7, 52.2, Abilities.OVERGROW, Abilities.NONE, Abilities.UNBURDEN, 530, 70, 85, 65, 105, 85, 120, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.GRASS, null, 1.7, 52.2, Abilities.OVERGROW, Abilities.NONE, Abilities.UNBURDEN, 530, 70, 85, 65, 105, 85, 120, 45, 50, 265, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.DRAGON, 1.9, 55.2, Abilities.LIGHTNING_ROD, Abilities.NONE, Abilities.LIGHTNING_ROD, 630, 70, 110, 75, 145, 85, 145, 45, 50, 265), - ), - new PokemonSpecies(Species.TORCHIC, 3, false, false, false, "Chick Pokémon", PokemonType.FIRE, null, 0.4, 2.5, Abilities.BLAZE, Abilities.NONE, Abilities.SPEED_BOOST, 310, 45, 60, 40, 70, 50, 45, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, true), - new PokemonSpecies(Species.COMBUSKEN, 3, false, false, false, "Young Fowl Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 0.9, 19.5, Abilities.BLAZE, Abilities.NONE, Abilities.SPEED_BOOST, 405, 60, 85, 60, 85, 60, 55, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, true), - new PokemonSpecies(Species.BLAZIKEN, 3, false, false, false, "Blaze Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, Abilities.BLAZE, Abilities.NONE, Abilities.SPEED_BOOST, 530, 80, 120, 70, 110, 70, 80, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, true, true, - new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, Abilities.BLAZE, Abilities.NONE, Abilities.SPEED_BOOST, 530, 80, 120, 70, 110, 70, 80, 45, 50, 265, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, Abilities.SPEED_BOOST, Abilities.NONE, Abilities.SPEED_BOOST, 630, 80, 160, 80, 130, 80, 100, 45, 50, 265, true), - ), - new PokemonSpecies(Species.MUDKIP, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, null, 0.4, 7.6, Abilities.TORRENT, Abilities.NONE, Abilities.DAMP, 310, 50, 70, 50, 50, 50, 40, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.MARSHTOMP, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.7, 28, Abilities.TORRENT, Abilities.NONE, Abilities.DAMP, 405, 70, 85, 70, 60, 70, 50, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.SWAMPERT, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.5, 81.9, Abilities.TORRENT, Abilities.NONE, Abilities.DAMP, 535, 100, 110, 90, 85, 90, 60, 45, 50, 268, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.GROUND, 1.5, 81.9, Abilities.TORRENT, Abilities.NONE, Abilities.DAMP, 535, 100, 110, 90, 85, 90, 60, 45, 50, 268, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.GROUND, 1.9, 102, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.SWIFT_SWIM, 635, 100, 150, 110, 95, 110, 70, 45, 50, 268), - ), - new PokemonSpecies(Species.POOCHYENA, 3, false, false, false, "Bite Pokémon", PokemonType.DARK, null, 0.5, 13.6, Abilities.RUN_AWAY, Abilities.QUICK_FEET, Abilities.RATTLED, 220, 35, 55, 35, 30, 30, 35, 255, 70, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MIGHTYENA, 3, false, false, false, "Bite Pokémon", PokemonType.DARK, null, 1, 37, Abilities.INTIMIDATE, Abilities.QUICK_FEET, Abilities.MOXIE, 420, 70, 90, 70, 60, 60, 70, 127, 70, 147, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ZIGZAGOON, 3, false, false, false, "Tiny Raccoon Pokémon", PokemonType.NORMAL, null, 0.4, 17.5, Abilities.PICKUP, Abilities.GLUTTONY, Abilities.QUICK_FEET, 240, 38, 30, 41, 30, 41, 60, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LINOONE, 3, false, false, false, "Rushing Pokémon", PokemonType.NORMAL, null, 0.5, 32.5, Abilities.PICKUP, Abilities.GLUTTONY, Abilities.QUICK_FEET, 420, 78, 70, 61, 50, 61, 100, 90, 50, 147, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WURMPLE, 3, false, false, false, "Worm Pokémon", PokemonType.BUG, null, 0.3, 3.6, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.RUN_AWAY, 195, 45, 45, 35, 20, 30, 20, 255, 70, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SILCOON, 3, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.6, 10, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 50, 35, 55, 25, 25, 15, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BEAUTIFLY, 3, false, false, false, "Butterfly Pokémon", PokemonType.BUG, PokemonType.FLYING, 1, 28.4, Abilities.SWARM, Abilities.NONE, Abilities.RIVALRY, 395, 60, 70, 50, 100, 50, 65, 45, 70, 198, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.CASCOON, 3, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.7, 11.5, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 50, 35, 55, 25, 25, 15, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DUSTOX, 3, false, false, false, "Poison Moth Pokémon", PokemonType.BUG, PokemonType.POISON, 1.2, 31.6, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.COMPOUND_EYES, 385, 60, 50, 70, 50, 90, 65, 45, 70, 193, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.LOTAD, 3, false, false, false, "Water Weed Pokémon", PokemonType.WATER, PokemonType.GRASS, 0.5, 2.6, Abilities.SWIFT_SWIM, Abilities.RAIN_DISH, Abilities.OWN_TEMPO, 220, 40, 30, 30, 40, 50, 30, 255, 50, 44, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.LOMBRE, 3, false, false, false, "Jolly Pokémon", PokemonType.WATER, PokemonType.GRASS, 1.2, 32.5, Abilities.SWIFT_SWIM, Abilities.RAIN_DISH, Abilities.OWN_TEMPO, 340, 60, 50, 50, 60, 70, 50, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.LUDICOLO, 3, false, false, false, "Carefree Pokémon", PokemonType.WATER, PokemonType.GRASS, 1.5, 55, Abilities.SWIFT_SWIM, Abilities.RAIN_DISH, Abilities.OWN_TEMPO, 480, 80, 70, 70, 90, 100, 70, 45, 50, 240, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.SEEDOT, 3, false, false, false, "Acorn Pokémon", PokemonType.GRASS, null, 0.5, 4, Abilities.CHLOROPHYLL, Abilities.EARLY_BIRD, Abilities.PICKPOCKET, 220, 40, 40, 50, 30, 30, 30, 255, 50, 44, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.NUZLEAF, 3, false, false, false, "Wily Pokémon", PokemonType.GRASS, PokemonType.DARK, 1, 28, Abilities.CHLOROPHYLL, Abilities.EARLY_BIRD, Abilities.PICKPOCKET, 340, 70, 70, 40, 60, 40, 60, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.SHIFTRY, 3, false, false, false, "Wicked Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.3, 59.6, Abilities.CHLOROPHYLL, Abilities.WIND_RIDER, Abilities.PICKPOCKET, 480, 90, 100, 60, 90, 60, 80, 45, 50, 240, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.TAILLOW, 3, false, false, false, "Tiny Swallow Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2.3, Abilities.GUTS, Abilities.NONE, Abilities.SCRAPPY, 270, 40, 55, 30, 30, 30, 85, 200, 70, 54, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SWELLOW, 3, false, false, false, "Swallow Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.7, 19.8, Abilities.GUTS, Abilities.NONE, Abilities.SCRAPPY, 455, 60, 85, 60, 75, 50, 125, 45, 70, 159, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.WINGULL, 3, false, false, false, "Seagull Pokémon", PokemonType.WATER, PokemonType.FLYING, 0.6, 9.5, Abilities.KEEN_EYE, Abilities.HYDRATION, Abilities.RAIN_DISH, 270, 40, 30, 30, 55, 30, 85, 190, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PELIPPER, 3, false, false, false, "Water Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 1.2, 28, Abilities.KEEN_EYE, Abilities.DRIZZLE, Abilities.RAIN_DISH, 440, 60, 50, 100, 95, 70, 65, 45, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RALTS, 3, false, false, false, "Feeling Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.4, 6.6, Abilities.SYNCHRONIZE, Abilities.TRACE, Abilities.TELEPATHY, 198, 28, 25, 25, 45, 35, 40, 235, 35, 40, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.KIRLIA, 3, false, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.8, 20.2, Abilities.SYNCHRONIZE, Abilities.TRACE, Abilities.TELEPATHY, 278, 38, 35, 35, 65, 55, 50, 120, 35, 97, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.GARDEVOIR, 3, false, false, false, "Embrace Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, Abilities.SYNCHRONIZE, Abilities.TRACE, Abilities.TELEPATHY, 518, 68, 65, 65, 125, 115, 80, 45, 35, 259, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, Abilities.SYNCHRONIZE, Abilities.TRACE, Abilities.TELEPATHY, 518, 68, 65, 65, 125, 115, 80, 45, 35, 259, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, Abilities.PIXILATE, Abilities.PIXILATE, Abilities.PIXILATE, 618, 68, 85, 65, 165, 135, 100, 45, 35, 259), - ), - new PokemonSpecies(Species.SURSKIT, 3, false, false, false, "Pond Skater Pokémon", PokemonType.BUG, PokemonType.WATER, 0.5, 1.7, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.RAIN_DISH, 269, 40, 30, 32, 50, 52, 65, 200, 70, 54, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MASQUERAIN, 3, false, false, false, "Eyeball Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.8, 3.6, Abilities.INTIMIDATE, Abilities.NONE, Abilities.UNNERVE, 454, 70, 60, 62, 100, 82, 80, 75, 70, 159, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SHROOMISH, 3, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, null, 0.4, 4.5, Abilities.EFFECT_SPORE, Abilities.POISON_HEAL, Abilities.QUICK_FEET, 295, 60, 40, 60, 40, 60, 35, 255, 70, 59, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.BRELOOM, 3, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.2, 39.2, Abilities.EFFECT_SPORE, Abilities.POISON_HEAL, Abilities.TECHNICIAN, 460, 60, 130, 80, 60, 60, 70, 90, 70, 161, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.SLAKOTH, 3, false, false, false, "Slacker Pokémon", PokemonType.NORMAL, null, 0.8, 24, Abilities.TRUANT, Abilities.NONE, Abilities.STALL, 280, 60, 60, 60, 35, 35, 30, 255, 70, 56, GrowthRate.SLOW, 50, false), //Custom Hidden - new PokemonSpecies(Species.VIGOROTH, 3, false, false, false, "Wild Monkey Pokémon", PokemonType.NORMAL, null, 1.4, 46.5, Abilities.VITAL_SPIRIT, Abilities.NONE, Abilities.INSOMNIA, 440, 80, 80, 80, 55, 55, 90, 120, 70, 154, GrowthRate.SLOW, 50, false), //Custom Hidden - new PokemonSpecies(Species.SLAKING, 3, false, false, false, "Lazy Pokémon", PokemonType.NORMAL, null, 2, 130.5, Abilities.TRUANT, Abilities.NONE, Abilities.STALL, 670, 150, 160, 100, 95, 65, 100, 45, 70, 285, GrowthRate.SLOW, 50, false), //Custom Hidden - new PokemonSpecies(Species.NINCADA, 3, false, false, false, "Trainee Pokémon", PokemonType.BUG, PokemonType.GROUND, 0.5, 5.5, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.RUN_AWAY, 266, 31, 45, 90, 30, 30, 40, 255, 50, 53, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.NINJASK, 3, false, false, false, "Ninja Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.8, 12, Abilities.SPEED_BOOST, Abilities.NONE, Abilities.INFILTRATOR, 456, 61, 90, 45, 50, 50, 160, 120, 50, 160, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.SHEDINJA, 3, false, false, false, "Shed Pokémon", PokemonType.BUG, PokemonType.GHOST, 0.8, 1.2, Abilities.WONDER_GUARD, Abilities.NONE, Abilities.NONE, 236, 1, 90, 45, 30, 30, 40, 45, 50, 83, GrowthRate.ERRATIC, null, false), - new PokemonSpecies(Species.WHISMUR, 3, false, false, false, "Whisper Pokémon", PokemonType.NORMAL, null, 0.6, 16.3, Abilities.SOUNDPROOF, Abilities.NONE, Abilities.RATTLED, 240, 64, 51, 23, 51, 23, 28, 190, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.LOUDRED, 3, false, false, false, "Big Voice Pokémon", PokemonType.NORMAL, null, 1, 40.5, Abilities.SOUNDPROOF, Abilities.NONE, Abilities.SCRAPPY, 360, 84, 71, 43, 71, 43, 48, 120, 50, 126, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.EXPLOUD, 3, false, false, false, "Loud Noise Pokémon", PokemonType.NORMAL, null, 1.5, 84, Abilities.SOUNDPROOF, Abilities.NONE, Abilities.SCRAPPY, 490, 104, 91, 63, 91, 73, 68, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.MAKUHITA, 3, false, false, false, "Guts Pokémon", PokemonType.FIGHTING, null, 1, 86.4, Abilities.THICK_FAT, Abilities.GUTS, Abilities.SHEER_FORCE, 237, 72, 60, 30, 20, 30, 25, 180, 70, 47, GrowthRate.FLUCTUATING, 75, false), - new PokemonSpecies(Species.HARIYAMA, 3, false, false, false, "Arm Thrust Pokémon", PokemonType.FIGHTING, null, 2.3, 253.8, Abilities.THICK_FAT, Abilities.GUTS, Abilities.SHEER_FORCE, 474, 144, 120, 60, 40, 60, 50, 200, 70, 166, GrowthRate.FLUCTUATING, 75, false), - new PokemonSpecies(Species.AZURILL, 3, false, false, false, "Polka Dot Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.2, 2, Abilities.THICK_FAT, Abilities.HUGE_POWER, Abilities.SAP_SIPPER, 190, 50, 20, 40, 20, 40, 20, 150, 50, 38, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.NOSEPASS, 3, false, false, false, "Compass Pokémon", PokemonType.ROCK, null, 1, 97, Abilities.STURDY, Abilities.MAGNET_PULL, Abilities.SAND_FORCE, 375, 30, 45, 135, 45, 90, 30, 255, 70, 75, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SKITTY, 3, false, false, false, "Kitten Pokémon", PokemonType.NORMAL, null, 0.6, 11, Abilities.CUTE_CHARM, Abilities.NORMALIZE, Abilities.WONDER_SKIN, 260, 50, 45, 45, 35, 35, 50, 255, 70, 52, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.DELCATTY, 3, false, false, false, "Prim Pokémon", PokemonType.NORMAL, null, 1.1, 32.6, Abilities.CUTE_CHARM, Abilities.NORMALIZE, Abilities.WONDER_SKIN, 400, 70, 65, 65, 55, 55, 90, 60, 70, 140, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.SABLEYE, 3, false, false, false, "Darkness Pokémon", PokemonType.DARK, PokemonType.GHOST, 0.5, 11, Abilities.KEEN_EYE, Abilities.STALL, Abilities.PRANKSTER, 380, 50, 75, 75, 65, 65, 50, 45, 35, 133, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.GHOST, 0.5, 11, Abilities.KEEN_EYE, Abilities.STALL, Abilities.PRANKSTER, 380, 50, 75, 75, 65, 65, 50, 45, 35, 133, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, PokemonType.GHOST, 0.5, 161, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, 480, 50, 85, 125, 85, 115, 20, 45, 35, 133), - ), - new PokemonSpecies(Species.MAWILE, 3, false, false, false, "Deceiver Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 0.6, 11.5, Abilities.HYPER_CUTTER, Abilities.INTIMIDATE, Abilities.SHEER_FORCE, 380, 50, 85, 85, 55, 55, 50, 45, 50, 133, GrowthRate.FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.FAIRY, 0.6, 11.5, Abilities.HYPER_CUTTER, Abilities.INTIMIDATE, Abilities.SHEER_FORCE, 380, 50, 85, 85, 55, 55, 50, 45, 50, 133, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.FAIRY, 1, 23.5, Abilities.HUGE_POWER, Abilities.HUGE_POWER, Abilities.HUGE_POWER, 480, 50, 105, 125, 55, 95, 50, 45, 50, 133), - ), - new PokemonSpecies(Species.ARON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 0.4, 60, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.HEAVY_METAL, 330, 50, 70, 100, 40, 40, 30, 180, 35, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.LAIRON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 0.9, 120, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.HEAVY_METAL, 430, 60, 90, 140, 50, 50, 40, 90, 35, 151, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.AGGRON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 2.1, 360, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.HEAVY_METAL, 530, 70, 110, 180, 60, 60, 50, 45, 35, 265, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.ROCK, 2.1, 360, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.HEAVY_METAL, 530, 70, 110, 180, 60, 60, 50, 45, 35, 265, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, null, 2.2, 395, Abilities.FILTER, Abilities.FILTER, Abilities.FILTER, 630, 70, 140, 230, 60, 80, 50, 45, 35, 265), - ), - new PokemonSpecies(Species.MEDITITE, 3, false, false, false, "Meditate Pokémon", PokemonType.FIGHTING, PokemonType.PSYCHIC, 0.6, 11.2, Abilities.PURE_POWER, Abilities.NONE, Abilities.TELEPATHY, 280, 30, 40, 55, 40, 55, 60, 180, 70, 56, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.MEDICHAM, 3, false, false, false, "Meditate Pokémon", PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, Abilities.PURE_POWER, Abilities.NONE, Abilities.TELEPATHY, 410, 60, 60, 75, 60, 75, 80, 90, 70, 144, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, Abilities.PURE_POWER, Abilities.NONE, Abilities.TELEPATHY, 410, 60, 60, 75, 60, 75, 80, 90, 70, 144, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, Abilities.PURE_POWER, Abilities.NONE, Abilities.PURE_POWER, 510, 60, 100, 85, 80, 85, 100, 90, 70, 144, true), - ), - new PokemonSpecies(Species.ELECTRIKE, 3, false, false, false, "Lightning Pokémon", PokemonType.ELECTRIC, null, 0.6, 15.2, Abilities.STATIC, Abilities.LIGHTNING_ROD, Abilities.MINUS, 295, 40, 45, 40, 65, 40, 65, 120, 50, 59, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.MANECTRIC, 3, false, false, false, "Discharge Pokémon", PokemonType.ELECTRIC, null, 1.5, 40.2, Abilities.STATIC, Abilities.LIGHTNING_ROD, Abilities.MINUS, 475, 70, 75, 60, 105, 60, 105, 45, 50, 166, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.5, 40.2, Abilities.STATIC, Abilities.LIGHTNING_ROD, Abilities.MINUS, 475, 70, 75, 60, 105, 60, 105, 45, 50, 166, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ELECTRIC, null, 1.8, 44, Abilities.INTIMIDATE, Abilities.INTIMIDATE, Abilities.INTIMIDATE, 575, 70, 75, 80, 135, 80, 135, 45, 50, 166), - ), - new PokemonSpecies(Species.PLUSLE, 3, false, false, false, "Cheering Pokémon", PokemonType.ELECTRIC, null, 0.4, 4.2, Abilities.PLUS, Abilities.NONE, Abilities.LIGHTNING_ROD, 405, 60, 50, 40, 85, 75, 95, 200, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MINUN, 3, false, false, false, "Cheering Pokémon", PokemonType.ELECTRIC, null, 0.4, 4.2, Abilities.MINUS, Abilities.NONE, Abilities.VOLT_ABSORB, 405, 60, 40, 50, 75, 85, 95, 200, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.VOLBEAT, 3, false, false, false, "Firefly Pokémon", PokemonType.BUG, null, 0.7, 17.7, Abilities.ILLUMINATE, Abilities.SWARM, Abilities.PRANKSTER, 430, 65, 73, 75, 47, 85, 85, 150, 70, 151, GrowthRate.ERRATIC, 100, false), - new PokemonSpecies(Species.ILLUMISE, 3, false, false, false, "Firefly Pokémon", PokemonType.BUG, null, 0.6, 17.7, Abilities.OBLIVIOUS, Abilities.TINTED_LENS, Abilities.PRANKSTER, 430, 65, 47, 75, 73, 85, 85, 150, 70, 151, GrowthRate.FLUCTUATING, 0, false), - new PokemonSpecies(Species.ROSELIA, 3, false, false, false, "Thorn Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.3, 2, Abilities.NATURAL_CURE, Abilities.POISON_POINT, Abilities.LEAF_GUARD, 400, 50, 60, 45, 100, 80, 65, 150, 50, 140, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.GULPIN, 3, false, false, false, "Stomach Pokémon", PokemonType.POISON, null, 0.4, 10.3, Abilities.LIQUID_OOZE, Abilities.STICKY_HOLD, Abilities.GLUTTONY, 302, 70, 43, 53, 43, 53, 40, 225, 70, 60, GrowthRate.FLUCTUATING, 50, true), - new PokemonSpecies(Species.SWALOT, 3, false, false, false, "Poison Bag Pokémon", PokemonType.POISON, null, 1.7, 80, Abilities.LIQUID_OOZE, Abilities.STICKY_HOLD, Abilities.GLUTTONY, 467, 100, 73, 83, 73, 83, 55, 75, 70, 163, GrowthRate.FLUCTUATING, 50, true), - new PokemonSpecies(Species.CARVANHA, 3, false, false, false, "Savage Pokémon", PokemonType.WATER, PokemonType.DARK, 0.8, 20.8, Abilities.ROUGH_SKIN, Abilities.NONE, Abilities.SPEED_BOOST, 305, 45, 90, 20, 65, 20, 65, 225, 35, 61, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SHARPEDO, 3, false, false, false, "Brutal Pokémon", PokemonType.WATER, PokemonType.DARK, 1.8, 88.8, Abilities.ROUGH_SKIN, Abilities.NONE, Abilities.SPEED_BOOST, 460, 70, 120, 40, 95, 40, 95, 60, 35, 161, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DARK, 1.8, 88.8, Abilities.ROUGH_SKIN, Abilities.NONE, Abilities.SPEED_BOOST, 460, 70, 120, 40, 95, 40, 95, 60, 35, 161, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.DARK, 2.5, 130.3, Abilities.STRONG_JAW, Abilities.NONE, Abilities.STRONG_JAW, 560, 70, 140, 70, 110, 65, 105, 60, 35, 161), - ), - new PokemonSpecies(Species.WAILMER, 3, false, false, false, "Ball Whale Pokémon", PokemonType.WATER, null, 2, 130, Abilities.WATER_VEIL, Abilities.OBLIVIOUS, Abilities.PRESSURE, 400, 130, 70, 35, 70, 35, 60, 125, 50, 80, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.WAILORD, 3, false, false, false, "Float Whale Pokémon", PokemonType.WATER, null, 14.5, 398, Abilities.WATER_VEIL, Abilities.OBLIVIOUS, Abilities.PRESSURE, 500, 170, 90, 45, 90, 45, 60, 60, 50, 175, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.NUMEL, 3, false, false, false, "Numb Pokémon", PokemonType.FIRE, PokemonType.GROUND, 0.7, 24, Abilities.OBLIVIOUS, Abilities.SIMPLE, Abilities.OWN_TEMPO, 305, 60, 60, 40, 65, 45, 35, 255, 70, 61, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.CAMERUPT, 3, false, false, false, "Eruption Pokémon", PokemonType.FIRE, PokemonType.GROUND, 1.9, 220, Abilities.MAGMA_ARMOR, Abilities.SOLID_ROCK, Abilities.ANGER_POINT, 460, 70, 100, 70, 105, 75, 40, 150, 70, 161, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.GROUND, 1.9, 220, Abilities.MAGMA_ARMOR, Abilities.SOLID_ROCK, Abilities.ANGER_POINT, 460, 70, 100, 70, 105, 75, 40, 150, 70, 161, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIRE, PokemonType.GROUND, 2.5, 320.5, Abilities.SHEER_FORCE, Abilities.SHEER_FORCE, Abilities.SHEER_FORCE, 560, 70, 120, 100, 145, 105, 20, 150, 70, 161), - ), - new PokemonSpecies(Species.TORKOAL, 3, false, false, false, "Coal Pokémon", PokemonType.FIRE, null, 0.5, 80.4, Abilities.WHITE_SMOKE, Abilities.DROUGHT, Abilities.SHELL_ARMOR, 470, 70, 85, 140, 85, 70, 20, 90, 50, 165, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SPOINK, 3, false, false, false, "Bounce Pokémon", PokemonType.PSYCHIC, null, 0.7, 30.6, Abilities.THICK_FAT, Abilities.OWN_TEMPO, Abilities.GLUTTONY, 330, 60, 25, 35, 70, 80, 60, 255, 70, 66, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.GRUMPIG, 3, false, false, false, "Manipulate Pokémon", PokemonType.PSYCHIC, null, 0.9, 71.5, Abilities.THICK_FAT, Abilities.OWN_TEMPO, Abilities.GLUTTONY, 470, 80, 45, 65, 90, 110, 80, 60, 70, 165, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.SPINDA, 3, false, false, false, "Spot Panda Pokémon", PokemonType.NORMAL, null, 1.1, 5, Abilities.OWN_TEMPO, Abilities.TANGLED_FEET, Abilities.CONTRARY, 360, 60, 60, 60, 60, 60, 60, 255, 70, 126, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.TRAPINCH, 3, false, false, false, "Ant Pit Pokémon", PokemonType.GROUND, null, 0.7, 15, Abilities.HYPER_CUTTER, Abilities.ARENA_TRAP, Abilities.SHEER_FORCE, 290, 45, 100, 45, 45, 45, 10, 255, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.VIBRAVA, 3, false, false, false, "Vibration Pokémon", PokemonType.GROUND, PokemonType.DRAGON, 1.1, 15.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 340, 50, 70, 50, 50, 50, 70, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.FLYGON, 3, false, false, false, "Mystic Pokémon", PokemonType.GROUND, PokemonType.DRAGON, 2, 82, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 80, 100, 80, 80, 80, 100, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CACNEA, 3, false, false, false, "Cactus Pokémon", PokemonType.GRASS, null, 0.4, 51.3, Abilities.SAND_VEIL, Abilities.NONE, Abilities.WATER_ABSORB, 335, 50, 85, 40, 85, 40, 35, 190, 35, 67, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CACTURNE, 3, false, false, false, "Scarecrow Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.3, 77.4, Abilities.SAND_VEIL, Abilities.NONE, Abilities.WATER_ABSORB, 475, 70, 115, 60, 115, 60, 55, 60, 35, 166, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.SWABLU, 3, false, false, false, "Cotton Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.4, 1.2, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.CLOUD_NINE, 310, 45, 40, 60, 40, 75, 50, 255, 50, 62, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.ALTARIA, 3, false, false, false, "Humming Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 1.1, 20.6, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.CLOUD_NINE, 490, 75, 70, 90, 70, 105, 80, 45, 50, 172, GrowthRate.ERRATIC, 50, false, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 1.1, 20.6, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.CLOUD_NINE, 490, 75, 70, 90, 70, 105, 80, 45, 50, 172, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FAIRY, 1.5, 20.6, Abilities.PIXILATE, Abilities.NONE, Abilities.PIXILATE, 590, 75, 110, 110, 110, 105, 80, 45, 50, 172), - ), - new PokemonSpecies(Species.ZANGOOSE, 3, false, false, false, "Cat Ferret Pokémon", PokemonType.NORMAL, null, 1.3, 40.3, Abilities.IMMUNITY, Abilities.NONE, Abilities.TOXIC_BOOST, 458, 73, 115, 60, 60, 60, 90, 90, 70, 160, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.SEVIPER, 3, false, false, false, "Fang Snake Pokémon", PokemonType.POISON, null, 2.7, 52.5, Abilities.SHED_SKIN, Abilities.NONE, Abilities.INFILTRATOR, 458, 73, 100, 60, 100, 60, 65, 90, 70, 160, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.LUNATONE, 3, false, false, false, "Meteorite Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1, 168, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 460, 90, 55, 65, 95, 85, 70, 45, 50, 161, GrowthRate.FAST, null, false), - new PokemonSpecies(Species.SOLROCK, 3, false, false, false, "Meteorite Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1.2, 154, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 460, 90, 95, 85, 55, 65, 70, 45, 50, 161, GrowthRate.FAST, null, false), - new PokemonSpecies(Species.BARBOACH, 3, false, false, false, "Whiskers Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.4, 1.9, Abilities.OBLIVIOUS, Abilities.ANTICIPATION, Abilities.HYDRATION, 288, 50, 48, 43, 46, 41, 60, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WHISCASH, 3, false, false, false, "Whiskers Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.9, 23.6, Abilities.OBLIVIOUS, Abilities.ANTICIPATION, Abilities.HYDRATION, 468, 110, 78, 73, 76, 71, 60, 75, 50, 164, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CORPHISH, 3, false, false, false, "Ruffian Pokémon", PokemonType.WATER, null, 0.6, 11.5, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.ADAPTABILITY, 308, 43, 80, 65, 50, 35, 35, 205, 50, 62, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.CRAWDAUNT, 3, false, false, false, "Rogue Pokémon", PokemonType.WATER, PokemonType.DARK, 1.1, 32.8, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.ADAPTABILITY, 468, 63, 120, 85, 90, 55, 55, 155, 50, 164, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.BALTOY, 3, false, false, false, "Clay Doll Pokémon", PokemonType.GROUND, PokemonType.PSYCHIC, 0.5, 21.5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 300, 40, 40, 55, 40, 70, 55, 255, 50, 60, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.CLAYDOL, 3, false, false, false, "Clay Doll Pokémon", PokemonType.GROUND, PokemonType.PSYCHIC, 1.5, 108, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 500, 60, 70, 105, 70, 120, 75, 90, 50, 175, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.LILEEP, 3, false, false, false, "Sea Lily Pokémon", PokemonType.ROCK, PokemonType.GRASS, 1, 23.8, Abilities.SUCTION_CUPS, Abilities.NONE, Abilities.STORM_DRAIN, 355, 66, 41, 77, 61, 87, 23, 45, 50, 71, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.CRADILY, 3, false, false, false, "Barnacle Pokémon", PokemonType.ROCK, PokemonType.GRASS, 1.5, 60.4, Abilities.SUCTION_CUPS, Abilities.NONE, Abilities.STORM_DRAIN, 495, 86, 81, 97, 81, 107, 43, 45, 50, 173, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.ANORITH, 3, false, false, false, "Old Shrimp Pokémon", PokemonType.ROCK, PokemonType.BUG, 0.7, 12.5, Abilities.BATTLE_ARMOR, Abilities.NONE, Abilities.SWIFT_SWIM, 355, 45, 95, 50, 40, 50, 75, 45, 50, 71, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.ARMALDO, 3, false, false, false, "Plate Pokémon", PokemonType.ROCK, PokemonType.BUG, 1.5, 68.2, Abilities.BATTLE_ARMOR, Abilities.NONE, Abilities.SWIFT_SWIM, 495, 75, 125, 100, 70, 80, 45, 45, 50, 173, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.FEEBAS, 3, false, false, false, "Fish Pokémon", PokemonType.WATER, null, 0.6, 7.4, Abilities.SWIFT_SWIM, Abilities.OBLIVIOUS, Abilities.ADAPTABILITY, 200, 20, 15, 20, 10, 55, 80, 255, 50, 40, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.MILOTIC, 3, false, false, false, "Tender Pokémon", PokemonType.WATER, null, 6.2, 162, Abilities.MARVEL_SCALE, Abilities.COMPETITIVE, Abilities.CUTE_CHARM, 540, 95, 60, 79, 100, 125, 81, 60, 50, 189, GrowthRate.ERRATIC, 50, true), - new PokemonSpecies(Species.CASTFORM, 3, false, false, false, "Weather Pokémon", PokemonType.NORMAL, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal Form", "", PokemonType.NORMAL, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147, false, null, true), - new PokemonForm("Sunny Form", "sunny", PokemonType.FIRE, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), - new PokemonForm("Rainy Form", "rainy", PokemonType.WATER, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), - new PokemonForm("Snowy Form", "snowy", PokemonType.ICE, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), - ), - new PokemonSpecies(Species.KECLEON, 3, false, false, false, "Color Swap Pokémon", PokemonType.NORMAL, null, 1, 22, Abilities.COLOR_CHANGE, Abilities.NONE, Abilities.PROTEAN, 440, 60, 90, 70, 60, 120, 40, 200, 70, 154, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SHUPPET, 3, false, false, false, "Puppet Pokémon", PokemonType.GHOST, null, 0.6, 2.3, Abilities.INSOMNIA, Abilities.FRISK, Abilities.CURSED_BODY, 295, 44, 75, 35, 63, 33, 45, 225, 35, 59, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.BANETTE, 3, false, false, false, "Marionette Pokémon", PokemonType.GHOST, null, 1.1, 12.5, Abilities.INSOMNIA, Abilities.FRISK, Abilities.CURSED_BODY, 455, 64, 115, 65, 83, 63, 65, 45, 35, 159, GrowthRate.FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.GHOST, null, 1.1, 12.5, Abilities.INSOMNIA, Abilities.FRISK, Abilities.CURSED_BODY, 455, 64, 115, 65, 83, 63, 65, 45, 35, 159, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GHOST, null, 1.2, 13, Abilities.PRANKSTER, Abilities.PRANKSTER, Abilities.PRANKSTER, 555, 64, 165, 75, 93, 83, 75, 45, 35, 159), - ), - new PokemonSpecies(Species.DUSKULL, 3, false, false, false, "Requiem Pokémon", PokemonType.GHOST, null, 0.8, 15, Abilities.LEVITATE, Abilities.NONE, Abilities.FRISK, 295, 20, 40, 90, 30, 90, 25, 190, 35, 59, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.DUSCLOPS, 3, false, false, false, "Beckon Pokémon", PokemonType.GHOST, null, 1.6, 30.6, Abilities.PRESSURE, Abilities.NONE, Abilities.FRISK, 455, 40, 70, 130, 60, 130, 25, 90, 35, 159, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.TROPIUS, 3, false, false, false, "Fruit Pokémon", PokemonType.GRASS, PokemonType.FLYING, 2, 100, Abilities.CHLOROPHYLL, Abilities.SOLAR_POWER, Abilities.HARVEST, 460, 99, 68, 83, 72, 87, 51, 200, 70, 161, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.CHIMECHO, 3, false, false, false, "Wind Chime Pokémon", PokemonType.PSYCHIC, null, 0.6, 1, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 455, 75, 50, 80, 95, 90, 65, 45, 70, 159, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.ABSOL, 3, false, false, false, "Disaster Pokémon", PokemonType.DARK, null, 1.2, 47, Abilities.PRESSURE, Abilities.SUPER_LUCK, Abilities.JUSTIFIED, 465, 65, 130, 60, 75, 60, 75, 30, 35, 163, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.DARK, null, 1.2, 47, Abilities.PRESSURE, Abilities.SUPER_LUCK, Abilities.JUSTIFIED, 465, 65, 130, 60, 75, 60, 75, 30, 35, 163, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, null, 1.2, 49, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, 565, 65, 150, 60, 115, 60, 115, 30, 35, 163), - ), - new PokemonSpecies(Species.WYNAUT, 3, false, false, false, "Bright Pokémon", PokemonType.PSYCHIC, null, 0.6, 14, Abilities.SHADOW_TAG, Abilities.NONE, Abilities.TELEPATHY, 260, 95, 23, 48, 23, 48, 23, 125, 50, 52, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SNORUNT, 3, false, false, false, "Snow Hat Pokémon", PokemonType.ICE, null, 0.7, 16.8, Abilities.INNER_FOCUS, Abilities.ICE_BODY, Abilities.MOODY, 300, 50, 50, 50, 50, 50, 50, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GLALIE, 3, false, false, false, "Face Pokémon", PokemonType.ICE, null, 1.5, 256.5, Abilities.INNER_FOCUS, Abilities.ICE_BODY, Abilities.MOODY, 480, 80, 80, 80, 80, 80, 80, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.ICE, null, 1.5, 256.5, Abilities.INNER_FOCUS, Abilities.ICE_BODY, Abilities.MOODY, 480, 80, 80, 80, 80, 80, 80, 75, 50, 168, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ICE, null, 2.1, 350.2, Abilities.REFRIGERATE, Abilities.REFRIGERATE, Abilities.REFRIGERATE, 580, 80, 120, 80, 120, 80, 100, 75, 50, 168), - ), - new PokemonSpecies(Species.SPHEAL, 3, false, false, false, "Clap Pokémon", PokemonType.ICE, PokemonType.WATER, 0.8, 39.5, Abilities.THICK_FAT, Abilities.ICE_BODY, Abilities.OBLIVIOUS, 290, 70, 40, 50, 55, 50, 25, 255, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SEALEO, 3, false, false, false, "Ball Roll Pokémon", PokemonType.ICE, PokemonType.WATER, 1.1, 87.6, Abilities.THICK_FAT, Abilities.ICE_BODY, Abilities.OBLIVIOUS, 410, 90, 60, 70, 75, 70, 45, 120, 50, 144, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.WALREIN, 3, false, false, false, "Ice Break Pokémon", PokemonType.ICE, PokemonType.WATER, 1.4, 150.6, Abilities.THICK_FAT, Abilities.ICE_BODY, Abilities.OBLIVIOUS, 530, 110, 80, 90, 95, 90, 65, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CLAMPERL, 3, false, false, false, "Bivalve Pokémon", PokemonType.WATER, null, 0.4, 52.5, Abilities.SHELL_ARMOR, Abilities.NONE, Abilities.RATTLED, 345, 35, 64, 85, 74, 55, 32, 255, 70, 69, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.HUNTAIL, 3, false, false, false, "Deep Sea Pokémon", PokemonType.WATER, null, 1.7, 27, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.WATER_VEIL, 485, 55, 104, 105, 94, 75, 52, 60, 70, 170, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.GOREBYSS, 3, false, false, false, "South Sea Pokémon", PokemonType.WATER, null, 1.8, 22.6, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.HYDRATION, 485, 55, 84, 105, 114, 75, 52, 60, 70, 170, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.RELICANTH, 3, false, false, false, "Longevity Pokémon", PokemonType.WATER, PokemonType.ROCK, 1, 23.4, Abilities.SWIFT_SWIM, Abilities.ROCK_HEAD, Abilities.STURDY, 485, 100, 90, 130, 45, 65, 55, 25, 50, 170, GrowthRate.SLOW, 87.5, true), - new PokemonSpecies(Species.LUVDISC, 3, false, false, false, "Rendezvous Pokémon", PokemonType.WATER, null, 0.6, 8.7, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.HYDRATION, 330, 43, 30, 55, 40, 65, 97, 225, 70, 116, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.BAGON, 3, false, false, false, "Rock Head Pokémon", PokemonType.DRAGON, null, 0.6, 42.1, Abilities.ROCK_HEAD, Abilities.NONE, Abilities.SHEER_FORCE, 300, 45, 75, 60, 40, 30, 50, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SHELGON, 3, false, false, false, "Endurance Pokémon", PokemonType.DRAGON, null, 1.1, 110.5, Abilities.ROCK_HEAD, Abilities.NONE, Abilities.OVERCOAT, 420, 65, 95, 100, 60, 50, 50, 45, 35, 147, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SALAMENCE, 3, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 1.5, 102.6, Abilities.INTIMIDATE, Abilities.NONE, Abilities.MOXIE, 600, 95, 135, 80, 110, 80, 100, 45, 35, 300, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 1.5, 102.6, Abilities.INTIMIDATE, Abilities.NONE, Abilities.MOXIE, 600, 95, 135, 80, 110, 80, 100, 45, 35, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FLYING, 1.8, 112.6, Abilities.AERILATE, Abilities.NONE, Abilities.AERILATE, 700, 95, 145, 130, 120, 90, 120, 45, 35, 300), - ), - new PokemonSpecies(Species.BELDUM, 3, false, false, false, "Iron Ball Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.6, 95.2, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 300, 40, 55, 80, 35, 60, 30, 45, 35, 60, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Frigibax - new PokemonSpecies(Species.METANG, 3, false, false, false, "Iron Claw Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.2, 202.5, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 420, 60, 75, 100, 55, 80, 50, 25, 35, 147, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Arctibax - new PokemonSpecies(Species.METAGROSS, 3, false, false, false, "Iron Leg Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 550, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 600, 80, 135, 130, 95, 90, 70, 10, 35, 300, GrowthRate.SLOW, null, false, true, //Custom Catchrate, matching Baxcalibur - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 550, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 600, 80, 135, 130, 95, 90, 70, 3, 35, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.PSYCHIC, 2.5, 942.9, Abilities.TOUGH_CLAWS, Abilities.NONE, Abilities.TOUGH_CLAWS, 700, 80, 145, 150, 105, 110, 110, 3, 35, 300), - ), - new PokemonSpecies(Species.REGIROCK, 3, true, false, false, "Rock Peak Pokémon", PokemonType.ROCK, null, 1.7, 230, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.STURDY, 580, 80, 100, 200, 50, 100, 50, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.REGICE, 3, true, false, false, "Iceberg Pokémon", PokemonType.ICE, null, 1.8, 175, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.ICE_BODY, 580, 80, 50, 100, 100, 200, 50, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.REGISTEEL, 3, true, false, false, "Iron Pokémon", PokemonType.STEEL, null, 1.9, 205, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 580, 80, 75, 150, 75, 150, 50, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.LATIAS, 3, true, false, false, "Eon Pokémon", PokemonType.DRAGON, PokemonType.PSYCHIC, 1.4, 40, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 80, 80, 90, 110, 130, 110, 3, 90, 300, GrowthRate.SLOW, 0, false, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.PSYCHIC, 1.4, 40, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 80, 80, 90, 110, 130, 110, 3, 90, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.PSYCHIC, 1.8, 52, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 700, 80, 100, 120, 140, 150, 110, 3, 90, 300), - ), - new PokemonSpecies(Species.LATIOS, 3, true, false, false, "Eon Pokémon", PokemonType.DRAGON, PokemonType.PSYCHIC, 2, 60, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 80, 90, 80, 130, 110, 110, 3, 90, 300, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.PSYCHIC, 2, 60, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 80, 90, 80, 130, 110, 110, 3, 90, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.PSYCHIC, 2.3, 70, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 700, 80, 130, 100, 160, 120, 110, 3, 90, 300), - ), - new PokemonSpecies(Species.KYOGRE, 3, false, true, false, "Sea Basin Pokémon", PokemonType.WATER, null, 4.5, 352, Abilities.DRIZZLE, Abilities.NONE, Abilities.NONE, 670, 100, 100, 90, 150, 140, 90, 3, 0, 335, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, null, 4.5, 352, Abilities.DRIZZLE, Abilities.NONE, Abilities.NONE, 670, 100, 100, 90, 150, 140, 90, 3, 0, 335, false, null, true), - new PokemonForm("Primal", "primal", PokemonType.WATER, null, 9.8, 430, Abilities.PRIMORDIAL_SEA, Abilities.NONE, Abilities.NONE, 770, 100, 150, 90, 180, 160, 90, 3, 0, 335), - ), - new PokemonSpecies(Species.GROUDON, 3, false, true, false, "Continent Pokémon", PokemonType.GROUND, null, 3.5, 950, Abilities.DROUGHT, Abilities.NONE, Abilities.NONE, 670, 100, 150, 140, 100, 90, 90, 3, 0, 335, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.GROUND, null, 3.5, 950, Abilities.DROUGHT, Abilities.NONE, Abilities.NONE, 670, 100, 150, 140, 100, 90, 90, 3, 0, 335, false, null, true), - new PokemonForm("Primal", "primal", PokemonType.GROUND, PokemonType.FIRE, 5, 999.7, Abilities.DESOLATE_LAND, Abilities.NONE, Abilities.NONE, 770, 100, 180, 160, 150, 90, 90, 3, 0, 335), - ), - new PokemonSpecies(Species.RAYQUAZA, 3, false, true, false, "Sky High Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 7, 206.5, Abilities.AIR_LOCK, Abilities.NONE, Abilities.NONE, 680, 105, 150, 90, 150, 90, 95, 45, 0, 340, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 7, 206.5, Abilities.AIR_LOCK, Abilities.NONE, Abilities.NONE, 680, 105, 150, 90, 150, 90, 95, 45, 0, 340, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FLYING, 10.8, 392, Abilities.DELTA_STREAM, Abilities.NONE, Abilities.NONE, 780, 105, 180, 100, 180, 100, 115, 45, 0, 340), - ), - new PokemonSpecies(Species.JIRACHI, 3, false, false, true, "Wish Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.3, 1.1, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.DEOXYS, 3, false, false, true, "DNA Pokémon", PokemonType.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal Forme", "normal", PokemonType.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, false, "", true), - new PokemonForm("Attack Forme", "attack", PokemonType.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 180, 20, 180, 20, 150, 3, 0, 300), - new PokemonForm("Defense Forme", "defense", PokemonType.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 70, 160, 70, 160, 90, 3, 0, 300), - new PokemonForm("Speed Forme", "speed", PokemonType.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 95, 90, 95, 90, 180, 3, 0, 300), - ), - new PokemonSpecies(Species.TURTWIG, 4, false, false, false, "Tiny Leaf Pokémon", PokemonType.GRASS, null, 0.4, 10.2, Abilities.OVERGROW, Abilities.NONE, Abilities.SHELL_ARMOR, 318, 55, 68, 64, 45, 55, 31, 45, 70, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.GROTLE, 4, false, false, false, "Grove Pokémon", PokemonType.GRASS, null, 1.1, 97, Abilities.OVERGROW, Abilities.NONE, Abilities.SHELL_ARMOR, 405, 75, 89, 85, 55, 65, 36, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.TORTERRA, 4, false, false, false, "Continent Pokémon", PokemonType.GRASS, PokemonType.GROUND, 2.2, 310, Abilities.OVERGROW, Abilities.NONE, Abilities.SHELL_ARMOR, 525, 95, 109, 105, 75, 85, 56, 45, 70, 263, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.CHIMCHAR, 4, false, false, false, "Chimp Pokémon", PokemonType.FIRE, null, 0.5, 6.2, Abilities.BLAZE, Abilities.NONE, Abilities.IRON_FIST, 309, 44, 58, 44, 58, 44, 61, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.MONFERNO, 4, false, false, false, "Playful Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 0.9, 22, Abilities.BLAZE, Abilities.NONE, Abilities.IRON_FIST, 405, 64, 78, 52, 78, 52, 81, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.INFERNAPE, 4, false, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.2, 55, Abilities.BLAZE, Abilities.NONE, Abilities.IRON_FIST, 534, 76, 104, 71, 104, 71, 108, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.PIPLUP, 4, false, false, false, "Penguin Pokémon", PokemonType.WATER, null, 0.4, 5.2, Abilities.TORRENT, Abilities.NONE, Abilities.COMPETITIVE, 314, 53, 51, 53, 61, 56, 40, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.PRINPLUP, 4, false, false, false, "Penguin Pokémon", PokemonType.WATER, null, 0.8, 23, Abilities.TORRENT, Abilities.NONE, Abilities.COMPETITIVE, 405, 64, 66, 68, 81, 76, 50, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.EMPOLEON, 4, false, false, false, "Emperor Pokémon", PokemonType.WATER, PokemonType.STEEL, 1.7, 84.5, Abilities.TORRENT, Abilities.NONE, Abilities.COMPETITIVE, 530, 84, 86, 88, 111, 101, 60, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.STARLY, 4, false, false, false, "Starling Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2, Abilities.KEEN_EYE, Abilities.NONE, Abilities.RECKLESS, 245, 40, 55, 30, 30, 30, 60, 255, 70, 49, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.STARAVIA, 4, false, false, false, "Starling Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 15.5, Abilities.INTIMIDATE, Abilities.NONE, Abilities.RECKLESS, 340, 55, 75, 50, 40, 40, 80, 120, 70, 119, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.STARAPTOR, 4, false, false, false, "Predator Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 24.9, Abilities.INTIMIDATE, Abilities.NONE, Abilities.RECKLESS, 485, 85, 120, 70, 50, 60, 100, 45, 70, 243, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.BIDOOF, 4, false, false, false, "Plump Mouse Pokémon", PokemonType.NORMAL, null, 0.5, 20, Abilities.SIMPLE, Abilities.UNAWARE, Abilities.MOODY, 250, 59, 45, 40, 35, 40, 31, 255, 70, 50, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.BIBAREL, 4, false, false, false, "Beaver Pokémon", PokemonType.NORMAL, PokemonType.WATER, 1, 31.5, Abilities.SIMPLE, Abilities.UNAWARE, Abilities.MOODY, 410, 79, 85, 60, 55, 60, 71, 127, 70, 144, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.KRICKETOT, 4, false, false, false, "Cricket Pokémon", PokemonType.BUG, null, 0.3, 2.2, Abilities.SHED_SKIN, Abilities.NONE, Abilities.RUN_AWAY, 194, 37, 25, 41, 25, 41, 25, 255, 70, 39, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.KRICKETUNE, 4, false, false, false, "Cricket Pokémon", PokemonType.BUG, null, 1, 25.5, Abilities.SWARM, Abilities.NONE, Abilities.TECHNICIAN, 384, 77, 85, 51, 55, 51, 65, 45, 70, 134, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.SHINX, 4, false, false, false, "Flash Pokémon", PokemonType.ELECTRIC, null, 0.5, 9.5, Abilities.RIVALRY, Abilities.INTIMIDATE, Abilities.GUTS, 263, 45, 65, 34, 40, 34, 45, 235, 50, 53, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.LUXIO, 4, false, false, false, "Spark Pokémon", PokemonType.ELECTRIC, null, 0.9, 30.5, Abilities.RIVALRY, Abilities.INTIMIDATE, Abilities.GUTS, 363, 60, 85, 49, 60, 49, 60, 120, 100, 127, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.LUXRAY, 4, false, false, false, "Gleam Eyes Pokémon", PokemonType.ELECTRIC, null, 1.4, 42, Abilities.RIVALRY, Abilities.INTIMIDATE, Abilities.GUTS, 523, 80, 120, 79, 95, 79, 70, 45, 50, 262, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.BUDEW, 4, false, false, false, "Bud Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.2, 1.2, Abilities.NATURAL_CURE, Abilities.POISON_POINT, Abilities.LEAF_GUARD, 280, 40, 30, 35, 50, 70, 55, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ROSERADE, 4, false, false, false, "Bouquet Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.9, 14.5, Abilities.NATURAL_CURE, Abilities.POISON_POINT, Abilities.TECHNICIAN, 515, 60, 70, 65, 125, 105, 90, 75, 50, 258, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.CRANIDOS, 4, false, false, false, "Head Butt Pokémon", PokemonType.ROCK, null, 0.9, 31.5, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.SHEER_FORCE, 350, 67, 125, 40, 30, 30, 58, 45, 70, 70, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.RAMPARDOS, 4, false, false, false, "Head Butt Pokémon", PokemonType.ROCK, null, 1.6, 102.5, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.SHEER_FORCE, 495, 97, 165, 60, 65, 50, 58, 45, 70, 173, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.SHIELDON, 4, false, false, false, "Shield Pokémon", PokemonType.ROCK, PokemonType.STEEL, 0.5, 57, Abilities.STURDY, Abilities.NONE, Abilities.SOUNDPROOF, 350, 30, 42, 118, 42, 88, 30, 45, 70, 70, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.BASTIODON, 4, false, false, false, "Shield Pokémon", PokemonType.ROCK, PokemonType.STEEL, 1.3, 149.5, Abilities.STURDY, Abilities.NONE, Abilities.SOUNDPROOF, 495, 60, 52, 168, 47, 138, 30, 45, 70, 173, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.BURMY, 4, false, false, false, "Bagworm Pokémon", PokemonType.BUG, null, 0.2, 3.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Plant Cloak", "plant", PokemonType.BUG, null, 0.2, 3.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), - new PokemonForm("Sandy Cloak", "sandy", PokemonType.BUG, null, 0.2, 3.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), - new PokemonForm("Trash Cloak", "trash", PokemonType.BUG, null, 0.2, 3.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), - ), - new PokemonSpecies(Species.WORMADAM, 4, false, false, false, "Bagworm Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.5, 6.5, Abilities.ANTICIPATION, Abilities.NONE, Abilities.OVERCOAT, 424, 60, 59, 85, 79, 105, 36, 45, 70, 148, GrowthRate.MEDIUM_FAST, 0, false, false, - new PokemonForm("Plant Cloak", "plant", PokemonType.BUG, PokemonType.GRASS, 0.5, 6.5, Abilities.ANTICIPATION, Abilities.NONE, Abilities.OVERCOAT, 424, 60, 59, 85, 79, 105, 36, 45, 70, 148, false, null, true), - new PokemonForm("Sandy Cloak", "sandy", PokemonType.BUG, PokemonType.GROUND, 0.5, 6.5, Abilities.ANTICIPATION, Abilities.NONE, Abilities.OVERCOAT, 424, 60, 79, 105, 59, 85, 36, 45, 70, 148, false, null, true), - new PokemonForm("Trash Cloak", "trash", PokemonType.BUG, PokemonType.STEEL, 0.5, 6.5, Abilities.ANTICIPATION, Abilities.NONE, Abilities.OVERCOAT, 424, 60, 69, 95, 69, 95, 36, 45, 70, 148, false, null, true), - ), - new PokemonSpecies(Species.MOTHIM, 4, false, false, false, "Moth Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.9, 23.3, Abilities.SWARM, Abilities.NONE, Abilities.TINTED_LENS, 424, 70, 94, 50, 94, 50, 66, 45, 70, 148, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.COMBEE, 4, false, false, false, "Tiny Bee Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.3, 5.5, Abilities.HONEY_GATHER, Abilities.NONE, Abilities.HUSTLE, 244, 30, 30, 42, 30, 42, 70, 120, 50, 49, GrowthRate.MEDIUM_SLOW, 87.5, true), - new PokemonSpecies(Species.VESPIQUEN, 4, false, false, false, "Beehive Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 38.5, Abilities.PRESSURE, Abilities.NONE, Abilities.UNNERVE, 474, 70, 80, 102, 80, 102, 40, 45, 50, 166, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.PACHIRISU, 4, false, false, false, "EleSquirrel Pokémon", PokemonType.ELECTRIC, null, 0.4, 3.9, Abilities.RUN_AWAY, Abilities.PICKUP, Abilities.VOLT_ABSORB, 405, 60, 45, 70, 45, 90, 95, 200, 100, 142, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.BUIZEL, 4, false, false, false, "Sea Weasel Pokémon", PokemonType.WATER, null, 0.7, 29.5, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.WATER_VEIL, 330, 55, 65, 35, 60, 30, 85, 190, 70, 66, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.FLOATZEL, 4, false, false, false, "Sea Weasel Pokémon", PokemonType.WATER, null, 1.1, 33.5, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.WATER_VEIL, 495, 85, 105, 55, 85, 50, 115, 75, 70, 173, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.CHERUBI, 4, false, false, false, "Cherry Pokémon", PokemonType.GRASS, null, 0.4, 3.3, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.NONE, 275, 45, 35, 45, 62, 53, 35, 190, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CHERRIM, 4, false, false, false, "Blossom Pokémon", PokemonType.GRASS, null, 0.5, 9.3, Abilities.FLOWER_GIFT, Abilities.NONE, Abilities.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Overcast Form", "overcast", PokemonType.GRASS, null, 0.5, 9.3, Abilities.FLOWER_GIFT, Abilities.NONE, Abilities.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158, false, null, true), - new PokemonForm("Sunshine Form", "sunshine", PokemonType.GRASS, null, 0.5, 9.3, Abilities.FLOWER_GIFT, Abilities.NONE, Abilities.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158), - ), - new PokemonSpecies(Species.SHELLOS, 4, false, false, false, "Sea Slug Pokémon", PokemonType.WATER, null, 0.3, 6.3, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("East Sea", "east", PokemonType.WATER, null, 0.3, 6.3, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, false, null, true), - new PokemonForm("West Sea", "west", PokemonType.WATER, null, 0.3, 6.3, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, false, null, true), - ), - new PokemonSpecies(Species.GASTRODON, 4, false, false, false, "Sea Slug Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("East Sea", "east", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, false, null, true), - new PokemonForm("West Sea", "west", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, false, null, true), - ), - new PokemonSpecies(Species.AMBIPOM, 4, false, false, false, "Long Tail Pokémon", PokemonType.NORMAL, null, 1.2, 20.3, Abilities.TECHNICIAN, Abilities.PICKUP, Abilities.SKILL_LINK, 482, 75, 100, 66, 60, 66, 115, 45, 100, 169, GrowthRate.FAST, 50, true), - new PokemonSpecies(Species.DRIFLOON, 4, false, false, false, "Balloon Pokémon", PokemonType.GHOST, PokemonType.FLYING, 0.4, 1.2, Abilities.AFTERMATH, Abilities.UNBURDEN, Abilities.FLARE_BOOST, 348, 90, 50, 34, 60, 44, 70, 125, 50, 70, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.DRIFBLIM, 4, false, false, false, "Blimp Pokémon", PokemonType.GHOST, PokemonType.FLYING, 1.2, 15, Abilities.AFTERMATH, Abilities.UNBURDEN, Abilities.FLARE_BOOST, 498, 150, 80, 44, 90, 54, 80, 60, 50, 174, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.BUNEARY, 4, false, false, false, "Rabbit Pokémon", PokemonType.NORMAL, null, 0.4, 5.5, Abilities.RUN_AWAY, Abilities.KLUTZ, Abilities.LIMBER, 350, 55, 66, 44, 44, 56, 85, 190, 0, 70, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LOPUNNY, 4, false, false, false, "Rabbit Pokémon", PokemonType.NORMAL, null, 1.2, 33.3, Abilities.CUTE_CHARM, Abilities.KLUTZ, Abilities.LIMBER, 480, 65, 76, 84, 54, 96, 105, 60, 140, 168, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.NORMAL, null, 1.2, 33.3, Abilities.CUTE_CHARM, Abilities.KLUTZ, Abilities.LIMBER, 480, 65, 76, 84, 54, 96, 105, 60, 140, 168, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FIGHTING, 1.3, 28.3, Abilities.SCRAPPY, Abilities.SCRAPPY, Abilities.SCRAPPY, 580, 65, 136, 94, 54, 96, 135, 60, 140, 168), - ), - new PokemonSpecies(Species.MISMAGIUS, 4, false, false, false, "Magical Pokémon", PokemonType.GHOST, null, 0.9, 4.4, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 495, 60, 60, 60, 105, 105, 105, 45, 35, 173, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.HONCHKROW, 4, false, false, false, "Big Boss Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.9, 27.3, Abilities.INSOMNIA, Abilities.SUPER_LUCK, Abilities.MOXIE, 505, 100, 125, 52, 105, 52, 71, 30, 35, 177, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GLAMEOW, 4, false, false, false, "Catty Pokémon", PokemonType.NORMAL, null, 0.5, 3.9, Abilities.LIMBER, Abilities.OWN_TEMPO, Abilities.KEEN_EYE, 310, 49, 55, 42, 42, 37, 85, 190, 70, 62, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.PURUGLY, 4, false, false, false, "Tiger Cat Pokémon", PokemonType.NORMAL, null, 1, 43.8, Abilities.THICK_FAT, Abilities.OWN_TEMPO, Abilities.DEFIANT, 452, 71, 82, 64, 64, 59, 112, 75, 70, 158, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.CHINGLING, 4, false, false, false, "Bell Pokémon", PokemonType.PSYCHIC, null, 0.2, 0.6, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 285, 45, 30, 50, 65, 50, 45, 120, 70, 57, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.STUNKY, 4, false, false, false, "Skunk Pokémon", PokemonType.POISON, PokemonType.DARK, 0.4, 19.2, Abilities.STENCH, Abilities.AFTERMATH, Abilities.KEEN_EYE, 329, 63, 63, 47, 41, 41, 74, 225, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SKUNTANK, 4, false, false, false, "Skunk Pokémon", PokemonType.POISON, PokemonType.DARK, 1, 38, Abilities.STENCH, Abilities.AFTERMATH, Abilities.KEEN_EYE, 479, 103, 93, 67, 71, 61, 84, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BRONZOR, 4, false, false, false, "Bronze Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.5, 60.5, Abilities.LEVITATE, Abilities.HEATPROOF, Abilities.HEAVY_METAL, 300, 57, 24, 86, 24, 86, 23, 255, 50, 60, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.BRONZONG, 4, false, false, false, "Bronze Bell Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.3, 187, Abilities.LEVITATE, Abilities.HEATPROOF, Abilities.HEAVY_METAL, 500, 67, 89, 116, 79, 116, 33, 90, 50, 175, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.BONSLY, 4, false, false, false, "Bonsai Pokémon", PokemonType.ROCK, null, 0.5, 15, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.RATTLED, 290, 50, 80, 95, 10, 45, 10, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MIME_JR, 4, false, false, false, "Mime Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.6, 13, Abilities.SOUNDPROOF, Abilities.FILTER, Abilities.TECHNICIAN, 310, 20, 25, 45, 70, 90, 60, 145, 50, 62, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HAPPINY, 4, false, false, false, "Playhouse Pokémon", PokemonType.NORMAL, null, 0.6, 24.4, Abilities.NATURAL_CURE, Abilities.SERENE_GRACE, Abilities.FRIEND_GUARD, 220, 100, 5, 5, 15, 65, 30, 130, 140, 110, GrowthRate.FAST, 0, false), - new PokemonSpecies(Species.CHATOT, 4, false, false, false, "Music Note Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.5, 1.9, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 411, 76, 65, 45, 92, 42, 91, 30, 35, 144, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SPIRITOMB, 4, false, false, false, "Forbidden Pokémon", PokemonType.GHOST, PokemonType.DARK, 1, 108, Abilities.PRESSURE, Abilities.NONE, Abilities.INFILTRATOR, 485, 50, 92, 108, 92, 108, 35, 100, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GIBLE, 4, false, false, false, "Land Shark Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 0.7, 20.5, Abilities.SAND_VEIL, Abilities.NONE, Abilities.ROUGH_SKIN, 300, 58, 70, 45, 40, 45, 42, 45, 50, 60, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.GABITE, 4, false, false, false, "Cave Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 1.4, 56, Abilities.SAND_VEIL, Abilities.NONE, Abilities.ROUGH_SKIN, 410, 68, 90, 65, 50, 55, 82, 45, 50, 144, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.GARCHOMP, 4, false, false, false, "Mach Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, Abilities.SAND_VEIL, Abilities.NONE, Abilities.ROUGH_SKIN, 600, 108, 130, 95, 80, 85, 102, 45, 50, 300, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, Abilities.SAND_VEIL, Abilities.NONE, Abilities.ROUGH_SKIN, 600, 108, 130, 95, 80, 85, 102, 45, 50, 300, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, Abilities.SAND_FORCE, Abilities.NONE, Abilities.SAND_FORCE, 700, 108, 170, 115, 120, 95, 92, 45, 50, 300, true), - ), - new PokemonSpecies(Species.MUNCHLAX, 4, false, false, false, "Big Eater Pokémon", PokemonType.NORMAL, null, 0.6, 105, Abilities.PICKUP, Abilities.THICK_FAT, Abilities.GLUTTONY, 390, 135, 85, 40, 40, 85, 5, 50, 50, 78, GrowthRate.SLOW, 87.5, false), - new PokemonSpecies(Species.RIOLU, 4, false, false, false, "Emanation Pokémon", PokemonType.FIGHTING, null, 0.7, 20.2, Abilities.STEADFAST, Abilities.INNER_FOCUS, Abilities.PRANKSTER, 285, 40, 70, 40, 35, 40, 60, 75, 50, 57, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.LUCARIO, 4, false, false, false, "Aura Pokémon", PokemonType.FIGHTING, PokemonType.STEEL, 1.2, 54, Abilities.STEADFAST, Abilities.INNER_FOCUS, Abilities.JUSTIFIED, 525, 70, 110, 70, 115, 70, 90, 45, 50, 184, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.STEEL, 1.2, 54, Abilities.STEADFAST, Abilities.INNER_FOCUS, Abilities.JUSTIFIED, 525, 70, 110, 70, 115, 70, 90, 45, 50, 184, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIGHTING, PokemonType.STEEL, 1.3, 57.5, Abilities.ADAPTABILITY, Abilities.ADAPTABILITY, Abilities.ADAPTABILITY, 625, 70, 145, 88, 140, 70, 112, 45, 50, 184), - ), - new PokemonSpecies(Species.HIPPOPOTAS, 4, false, false, false, "Hippo Pokémon", PokemonType.GROUND, null, 0.8, 49.5, Abilities.SAND_STREAM, Abilities.NONE, Abilities.SAND_FORCE, 330, 68, 72, 78, 38, 42, 32, 140, 50, 66, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.HIPPOWDON, 4, false, false, false, "Heavyweight Pokémon", PokemonType.GROUND, null, 2, 300, Abilities.SAND_STREAM, Abilities.NONE, Abilities.SAND_FORCE, 525, 108, 112, 118, 68, 72, 47, 60, 50, 184, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.SKORUPI, 4, false, false, false, "Scorpion Pokémon", PokemonType.POISON, PokemonType.BUG, 0.8, 12, Abilities.BATTLE_ARMOR, Abilities.SNIPER, Abilities.KEEN_EYE, 330, 40, 50, 90, 30, 55, 65, 120, 50, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.DRAPION, 4, false, false, false, "Ogre Scorpion Pokémon", PokemonType.POISON, PokemonType.DARK, 1.3, 61.5, Abilities.BATTLE_ARMOR, Abilities.SNIPER, Abilities.KEEN_EYE, 500, 70, 90, 110, 60, 75, 95, 45, 50, 175, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.CROAGUNK, 4, false, false, false, "Toxic Mouth Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 0.7, 23, Abilities.ANTICIPATION, Abilities.DRY_SKIN, Abilities.POISON_TOUCH, 300, 48, 61, 40, 61, 40, 50, 140, 100, 60, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.TOXICROAK, 4, false, false, false, "Toxic Mouth Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 1.3, 44.4, Abilities.ANTICIPATION, Abilities.DRY_SKIN, Abilities.POISON_TOUCH, 490, 83, 106, 65, 86, 65, 85, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.CARNIVINE, 4, false, false, false, "Bug Catcher Pokémon", PokemonType.GRASS, null, 1.4, 27, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 454, 74, 100, 72, 90, 72, 46, 200, 70, 159, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.FINNEON, 4, false, false, false, "Wing Fish Pokémon", PokemonType.WATER, null, 0.4, 7, Abilities.SWIFT_SWIM, Abilities.STORM_DRAIN, Abilities.WATER_VEIL, 330, 49, 49, 56, 49, 61, 66, 190, 70, 66, GrowthRate.ERRATIC, 50, true), - new PokemonSpecies(Species.LUMINEON, 4, false, false, false, "Neon Pokémon", PokemonType.WATER, null, 1.2, 24, Abilities.SWIFT_SWIM, Abilities.STORM_DRAIN, Abilities.WATER_VEIL, 460, 69, 69, 76, 69, 86, 91, 75, 70, 161, GrowthRate.ERRATIC, 50, true), - new PokemonSpecies(Species.MANTYKE, 4, false, false, false, "Kite Pokémon", PokemonType.WATER, PokemonType.FLYING, 1, 65, Abilities.SWIFT_SWIM, Abilities.WATER_ABSORB, Abilities.WATER_VEIL, 345, 45, 20, 50, 60, 120, 50, 25, 50, 69, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SNOVER, 4, false, false, false, "Frost Tree Pokémon", PokemonType.GRASS, PokemonType.ICE, 1, 50.5, Abilities.SNOW_WARNING, Abilities.NONE, Abilities.SOUNDPROOF, 334, 60, 62, 50, 62, 60, 40, 120, 50, 67, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.ABOMASNOW, 4, false, false, false, "Frost Tree Pokémon", PokemonType.GRASS, PokemonType.ICE, 2.2, 135.5, Abilities.SNOW_WARNING, Abilities.NONE, Abilities.SOUNDPROOF, 494, 90, 92, 75, 92, 85, 60, 60, 50, 173, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.ICE, 2.2, 135.5, Abilities.SNOW_WARNING, Abilities.NONE, Abilities.SOUNDPROOF, 494, 90, 92, 75, 92, 85, 60, 60, 50, 173, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.ICE, 2.7, 185, Abilities.SNOW_WARNING, Abilities.NONE, Abilities.SNOW_WARNING, 594, 90, 132, 105, 132, 105, 30, 60, 50, 173, true), - ), - new PokemonSpecies(Species.WEAVILE, 4, false, false, false, "Sharp Claw Pokémon", PokemonType.DARK, PokemonType.ICE, 1.1, 34, Abilities.PRESSURE, Abilities.NONE, Abilities.PICKPOCKET, 510, 70, 120, 65, 45, 85, 125, 45, 35, 179, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.MAGNEZONE, 4, false, false, false, "Magnet Area Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 1.2, 180, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.ANALYTIC, 535, 70, 70, 115, 130, 90, 60, 30, 50, 268, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.LICKILICKY, 4, false, false, false, "Licking Pokémon", PokemonType.NORMAL, null, 1.7, 140, Abilities.OWN_TEMPO, Abilities.OBLIVIOUS, Abilities.CLOUD_NINE, 515, 110, 85, 95, 80, 95, 50, 30, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RHYPERIOR, 4, false, false, false, "Drill Pokémon", PokemonType.GROUND, PokemonType.ROCK, 2.4, 282.8, Abilities.LIGHTNING_ROD, Abilities.SOLID_ROCK, Abilities.RECKLESS, 535, 115, 140, 130, 55, 55, 40, 30, 50, 268, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.TANGROWTH, 4, false, false, false, "Vine Pokémon", PokemonType.GRASS, null, 2, 128.6, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.REGENERATOR, 535, 100, 100, 125, 110, 50, 50, 30, 50, 187, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.ELECTIVIRE, 4, false, false, false, "Thunderbolt Pokémon", PokemonType.ELECTRIC, null, 1.8, 138.6, Abilities.MOTOR_DRIVE, Abilities.NONE, Abilities.VITAL_SPIRIT, 540, 75, 123, 67, 95, 85, 95, 30, 50, 270, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(Species.MAGMORTAR, 4, false, false, false, "Blast Pokémon", PokemonType.FIRE, null, 1.6, 68, Abilities.FLAME_BODY, Abilities.NONE, Abilities.VITAL_SPIRIT, 540, 75, 95, 67, 125, 95, 83, 30, 50, 270, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(Species.TOGEKISS, 4, false, false, false, "Jubilee Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 1.5, 38, Abilities.HUSTLE, Abilities.SERENE_GRACE, Abilities.SUPER_LUCK, 545, 85, 50, 95, 120, 115, 80, 30, 50, 273, GrowthRate.FAST, 87.5, false), - new PokemonSpecies(Species.YANMEGA, 4, false, false, false, "Ogre Darner Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.9, 51.5, Abilities.SPEED_BOOST, Abilities.TINTED_LENS, Abilities.FRISK, 515, 86, 76, 86, 116, 56, 95, 30, 70, 180, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LEAFEON, 4, false, false, false, "Verdant Pokémon", PokemonType.GRASS, null, 1, 25.5, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.CHLOROPHYLL, 525, 65, 110, 130, 60, 65, 95, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.GLACEON, 4, false, false, false, "Fresh Snow Pokémon", PokemonType.ICE, null, 0.8, 25.9, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.ICE_BODY, 525, 65, 60, 110, 130, 95, 65, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.GLISCOR, 4, false, false, false, "Fang Scorpion Pokémon", PokemonType.GROUND, PokemonType.FLYING, 2, 42.5, Abilities.HYPER_CUTTER, Abilities.SAND_VEIL, Abilities.POISON_HEAL, 510, 75, 95, 125, 45, 75, 95, 30, 70, 179, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.MAMOSWINE, 4, false, false, false, "Twin Tusk Pokémon", PokemonType.ICE, PokemonType.GROUND, 2.5, 291, Abilities.OBLIVIOUS, Abilities.SNOW_CLOAK, Abilities.THICK_FAT, 530, 110, 130, 80, 70, 60, 80, 50, 50, 265, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.PORYGON_Z, 4, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.9, 34, Abilities.ADAPTABILITY, Abilities.DOWNLOAD, Abilities.ANALYTIC, 535, 85, 80, 70, 135, 75, 90, 30, 50, 268, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.GALLADE, 4, false, false, false, "Blade Pokémon", PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 52, Abilities.STEADFAST, Abilities.SHARPNESS, Abilities.JUSTIFIED, 518, 68, 125, 65, 65, 115, 80, 45, 35, 259, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 52, Abilities.STEADFAST, Abilities.SHARPNESS, Abilities.JUSTIFIED, 518, 68, 125, 65, 65, 115, 80, 45, 35, 259, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 56.4, Abilities.INNER_FOCUS, Abilities.INNER_FOCUS, Abilities.INNER_FOCUS, 618, 68, 165, 95, 65, 115, 110, 45, 35, 259), - ), - new PokemonSpecies(Species.PROBOPASS, 4, false, false, false, "Compass Pokémon", PokemonType.ROCK, PokemonType.STEEL, 1.4, 340, Abilities.STURDY, Abilities.MAGNET_PULL, Abilities.SAND_FORCE, 525, 60, 55, 145, 75, 150, 40, 60, 70, 184, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DUSKNOIR, 4, false, false, false, "Gripper Pokémon", PokemonType.GHOST, null, 2.2, 106.6, Abilities.PRESSURE, Abilities.NONE, Abilities.FRISK, 525, 45, 100, 135, 65, 135, 45, 45, 35, 263, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.FROSLASS, 4, false, false, false, "Snow Land Pokémon", PokemonType.ICE, PokemonType.GHOST, 1.3, 26.6, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.CURSED_BODY, 480, 70, 80, 70, 80, 70, 110, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.ROTOM, 4, false, false, false, "Plasma Pokémon", PokemonType.ELECTRIC, PokemonType.GHOST, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 440, 50, 50, 77, 95, 77, 91, 45, 50, 154, GrowthRate.MEDIUM_FAST, null, false, false, - new PokemonForm("Normal", "", PokemonType.ELECTRIC, PokemonType.GHOST, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 440, 50, 50, 77, 95, 77, 91, 45, 50, 154, false, null, true), - new PokemonForm("Heat", "heat", PokemonType.ELECTRIC, PokemonType.FIRE, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - new PokemonForm("Wash", "wash", PokemonType.ELECTRIC, PokemonType.WATER, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - new PokemonForm("Frost", "frost", PokemonType.ELECTRIC, PokemonType.ICE, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - new PokemonForm("Fan", "fan", PokemonType.ELECTRIC, PokemonType.FLYING, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - new PokemonForm("Mow", "mow", PokemonType.ELECTRIC, PokemonType.GRASS, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - ), - new PokemonSpecies(Species.UXIE, 4, true, false, false, "Knowledge Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 75, 75, 130, 75, 130, 95, 3, 140, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.MESPRIT, 4, true, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 80, 105, 105, 105, 105, 80, 3, 140, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.AZELF, 4, true, false, false, "Willpower Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 75, 125, 70, 125, 70, 115, 3, 140, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.DIALGA, 4, false, true, false, "Temporal Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 5.4, 683, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 100, 120, 120, 150, 100, 90, 3, 0, 340, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.DRAGON, 5.4, 683, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 100, 120, 120, 150, 100, 90, 3, 0, 340, false, null, true), - new PokemonForm("Origin Forme", "origin", PokemonType.STEEL, PokemonType.DRAGON, 7, 848.7, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 100, 100, 120, 150, 120, 90, 3, 0, 340), - ), - new PokemonSpecies(Species.PALKIA, 4, false, true, false, "Spatial Pokémon", PokemonType.WATER, PokemonType.DRAGON, 4.2, 336, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 90, 120, 100, 150, 120, 100, 3, 0, 340, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DRAGON, 4.2, 336, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 90, 120, 100, 150, 120, 100, 3, 0, 340, false, null, true), - new PokemonForm("Origin Forme", "origin", PokemonType.WATER, PokemonType.DRAGON, 6.3, 659, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 90, 100, 100, 150, 120, 120, 3, 0, 340), - ), - new PokemonSpecies(Species.HEATRAN, 4, true, false, false, "Lava Dome Pokémon", PokemonType.FIRE, PokemonType.STEEL, 1.7, 430, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.FLAME_BODY, 600, 91, 90, 106, 130, 106, 77, 3, 100, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.REGIGIGAS, 4, true, false, false, "Colossal Pokémon", PokemonType.NORMAL, null, 3.7, 420, Abilities.SLOW_START, Abilities.NONE, Abilities.NORMALIZE, 670, 110, 160, 110, 80, 110, 100, 3, 0, 335, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.GIRATINA, 4, false, true, false, "Renegade Pokémon", PokemonType.GHOST, PokemonType.DRAGON, 4.5, 750, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 150, 100, 120, 100, 120, 90, 3, 0, 340, GrowthRate.SLOW, null, false, true, - new PokemonForm("Altered Forme", "altered", PokemonType.GHOST, PokemonType.DRAGON, 4.5, 750, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 150, 100, 120, 100, 120, 90, 3, 0, 340, false, null, true), - new PokemonForm("Origin Forme", "origin", PokemonType.GHOST, PokemonType.DRAGON, 6.9, 650, Abilities.LEVITATE, Abilities.NONE, Abilities.LEVITATE, 680, 150, 120, 100, 120, 100, 90, 3, 0, 340), - ), - new PokemonSpecies(Species.CRESSELIA, 4, true, false, false, "Lunar Pokémon", PokemonType.PSYCHIC, null, 1.5, 85.6, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 120, 70, 110, 75, 120, 85, 3, 100, 300, GrowthRate.SLOW, 0, false), - new PokemonSpecies(Species.PHIONE, 4, false, false, true, "Sea Drifter Pokémon", PokemonType.WATER, null, 0.4, 3.1, Abilities.HYDRATION, Abilities.NONE, Abilities.NONE, 480, 80, 80, 80, 80, 80, 80, 30, 70, 240, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.MANAPHY, 4, false, false, true, "Seafaring Pokémon", PokemonType.WATER, null, 0.3, 1.4, Abilities.HYDRATION, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 70, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.DARKRAI, 4, false, false, true, "Pitch-Black Pokémon", PokemonType.DARK, null, 1.5, 50.5, Abilities.BAD_DREAMS, Abilities.NONE, Abilities.NONE, 600, 70, 90, 90, 135, 90, 125, 3, 0, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SHAYMIN, 4, false, false, true, "Gratitude Pokémon", PokemonType.GRASS, null, 0.2, 2.1, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false, true, - new PokemonForm("Land Forme", "land", PokemonType.GRASS, null, 0.2, 2.1, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, false, null, true), - new PokemonForm("Sky Forme", "sky", PokemonType.GRASS, PokemonType.FLYING, 0.4, 5.2, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 103, 75, 120, 75, 127, 45, 100, 300), - ), - new PokemonSpecies(Species.ARCEUS, 4, false, false, true, "Alpha Pokémon", PokemonType.NORMAL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "normal", PokemonType.NORMAL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, false, null, true), - new PokemonForm("Fighting", "fighting", PokemonType.FIGHTING, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Flying", "flying", PokemonType.FLYING, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Poison", "poison", PokemonType.POISON, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Ground", "ground", PokemonType.GROUND, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Rock", "rock", PokemonType.ROCK, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Bug", "bug", PokemonType.BUG, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Ghost", "ghost", PokemonType.GHOST, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Steel", "steel", PokemonType.STEEL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Fire", "fire", PokemonType.FIRE, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Water", "water", PokemonType.WATER, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Grass", "grass", PokemonType.GRASS, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Electric", "electric", PokemonType.ELECTRIC, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Psychic", "psychic", PokemonType.PSYCHIC, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Ice", "ice", PokemonType.ICE, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Dragon", "dragon", PokemonType.DRAGON, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Dark", "dark", PokemonType.DARK, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Fairy", "fairy", PokemonType.FAIRY, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("???", "unknown", PokemonType.UNKNOWN, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, false, null, false, true), - ), - new PokemonSpecies(Species.VICTINI, 5, false, false, true, "Victory Pokémon", PokemonType.PSYCHIC, PokemonType.FIRE, 0.4, 4, Abilities.VICTORY_STAR, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SNIVY, 5, false, false, false, "Grass Snake Pokémon", PokemonType.GRASS, null, 0.6, 8.1, Abilities.OVERGROW, Abilities.NONE, Abilities.CONTRARY, 308, 45, 45, 55, 45, 55, 63, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.SERVINE, 5, false, false, false, "Grass Snake Pokémon", PokemonType.GRASS, null, 0.8, 16, Abilities.OVERGROW, Abilities.NONE, Abilities.CONTRARY, 413, 60, 60, 75, 60, 75, 83, 45, 70, 145, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.SERPERIOR, 5, false, false, false, "Regal Pokémon", PokemonType.GRASS, null, 3.3, 63, Abilities.OVERGROW, Abilities.NONE, Abilities.CONTRARY, 528, 75, 75, 95, 75, 95, 113, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.TEPIG, 5, false, false, false, "Fire Pig Pokémon", PokemonType.FIRE, null, 0.5, 9.9, Abilities.BLAZE, Abilities.NONE, Abilities.THICK_FAT, 308, 65, 63, 45, 45, 45, 45, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.PIGNITE, 5, false, false, false, "Fire Pig Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1, 55.5, Abilities.BLAZE, Abilities.NONE, Abilities.THICK_FAT, 418, 90, 93, 55, 70, 55, 55, 45, 70, 146, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.EMBOAR, 5, false, false, false, "Mega Fire Pig Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.6, 150, Abilities.BLAZE, Abilities.NONE, Abilities.RECKLESS, 528, 110, 123, 65, 100, 65, 65, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.OSHAWOTT, 5, false, false, false, "Sea Otter Pokémon", PokemonType.WATER, null, 0.5, 5.9, Abilities.TORRENT, Abilities.NONE, Abilities.SHELL_ARMOR, 308, 55, 55, 45, 63, 45, 45, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.DEWOTT, 5, false, false, false, "Discipline Pokémon", PokemonType.WATER, null, 0.8, 24.5, Abilities.TORRENT, Abilities.NONE, Abilities.SHELL_ARMOR, 413, 75, 75, 60, 83, 60, 60, 45, 70, 145, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.SAMUROTT, 5, false, false, false, "Formidable Pokémon", PokemonType.WATER, null, 1.5, 94.6, Abilities.TORRENT, Abilities.NONE, Abilities.SHELL_ARMOR, 528, 95, 100, 85, 108, 70, 70, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.PATRAT, 5, false, false, false, "Scout Pokémon", PokemonType.NORMAL, null, 0.5, 11.6, Abilities.RUN_AWAY, Abilities.KEEN_EYE, Abilities.ANALYTIC, 255, 45, 55, 39, 35, 39, 42, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WATCHOG, 5, false, false, false, "Lookout Pokémon", PokemonType.NORMAL, null, 1.1, 27, Abilities.ILLUMINATE, Abilities.KEEN_EYE, Abilities.ANALYTIC, 420, 60, 85, 69, 60, 69, 77, 255, 70, 147, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LILLIPUP, 5, false, false, false, "Puppy Pokémon", PokemonType.NORMAL, null, 0.4, 4.1, Abilities.VITAL_SPIRIT, Abilities.PICKUP, Abilities.RUN_AWAY, 275, 45, 60, 45, 25, 45, 55, 255, 50, 55, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.HERDIER, 5, false, false, false, "Loyal Dog Pokémon", PokemonType.NORMAL, null, 0.9, 14.7, Abilities.INTIMIDATE, Abilities.SAND_RUSH, Abilities.SCRAPPY, 370, 65, 80, 65, 35, 65, 60, 120, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.STOUTLAND, 5, false, false, false, "Big-Hearted Pokémon", PokemonType.NORMAL, null, 1.2, 61, Abilities.INTIMIDATE, Abilities.SAND_RUSH, Abilities.SCRAPPY, 500, 85, 110, 90, 45, 90, 80, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.PURRLOIN, 5, false, false, false, "Devious Pokémon", PokemonType.DARK, null, 0.4, 10.1, Abilities.LIMBER, Abilities.UNBURDEN, Abilities.PRANKSTER, 281, 41, 50, 37, 50, 37, 66, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LIEPARD, 5, false, false, false, "Cruel Pokémon", PokemonType.DARK, null, 1.1, 37.5, Abilities.LIMBER, Abilities.UNBURDEN, Abilities.PRANKSTER, 446, 64, 88, 50, 88, 50, 106, 90, 50, 156, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PANSAGE, 5, false, false, false, "Grass Monkey Pokémon", PokemonType.GRASS, null, 0.6, 10.5, Abilities.GLUTTONY, Abilities.NONE, Abilities.OVERGROW, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.SIMISAGE, 5, false, false, false, "Thorn Monkey Pokémon", PokemonType.GRASS, null, 1.1, 30.5, Abilities.GLUTTONY, Abilities.NONE, Abilities.OVERGROW, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.PANSEAR, 5, false, false, false, "High Temp Pokémon", PokemonType.FIRE, null, 0.6, 11, Abilities.GLUTTONY, Abilities.NONE, Abilities.BLAZE, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.SIMISEAR, 5, false, false, false, "Ember Pokémon", PokemonType.FIRE, null, 1, 28, Abilities.GLUTTONY, Abilities.NONE, Abilities.BLAZE, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.PANPOUR, 5, false, false, false, "Spray Pokémon", PokemonType.WATER, null, 0.6, 13.5, Abilities.GLUTTONY, Abilities.NONE, Abilities.TORRENT, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.SIMIPOUR, 5, false, false, false, "Geyser Pokémon", PokemonType.WATER, null, 1, 29, Abilities.GLUTTONY, Abilities.NONE, Abilities.TORRENT, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.MUNNA, 5, false, false, false, "Dream Eater Pokémon", PokemonType.PSYCHIC, null, 0.6, 23.3, Abilities.FOREWARN, Abilities.SYNCHRONIZE, Abilities.TELEPATHY, 292, 76, 25, 45, 67, 55, 24, 190, 50, 58, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.MUSHARNA, 5, false, false, false, "Drowsing Pokémon", PokemonType.PSYCHIC, null, 1.1, 60.5, Abilities.FOREWARN, Abilities.SYNCHRONIZE, Abilities.TELEPATHY, 487, 116, 55, 85, 107, 95, 29, 75, 50, 170, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.PIDOVE, 5, false, false, false, "Tiny Pigeon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2.1, Abilities.BIG_PECKS, Abilities.SUPER_LUCK, Abilities.RIVALRY, 264, 50, 55, 50, 36, 30, 43, 255, 50, 53, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.TRANQUILL, 5, false, false, false, "Wild Pigeon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 15, Abilities.BIG_PECKS, Abilities.SUPER_LUCK, Abilities.RIVALRY, 358, 62, 77, 62, 50, 42, 65, 120, 50, 125, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.UNFEZANT, 5, false, false, false, "Proud Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 29, Abilities.BIG_PECKS, Abilities.SUPER_LUCK, Abilities.RIVALRY, 488, 80, 115, 80, 65, 55, 93, 45, 50, 244, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.BLITZLE, 5, false, false, false, "Electrified Pokémon", PokemonType.ELECTRIC, null, 0.8, 29.8, Abilities.LIGHTNING_ROD, Abilities.MOTOR_DRIVE, Abilities.SAP_SIPPER, 295, 45, 60, 32, 50, 32, 76, 190, 70, 59, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ZEBSTRIKA, 5, false, false, false, "Thunderbolt Pokémon", PokemonType.ELECTRIC, null, 1.6, 79.5, Abilities.LIGHTNING_ROD, Abilities.MOTOR_DRIVE, Abilities.SAP_SIPPER, 497, 75, 100, 63, 80, 63, 116, 75, 70, 174, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ROGGENROLA, 5, false, false, false, "Mantle Pokémon", PokemonType.ROCK, null, 0.4, 18, Abilities.STURDY, Abilities.WEAK_ARMOR, Abilities.SAND_FORCE, 280, 55, 75, 85, 25, 25, 15, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.BOLDORE, 5, false, false, false, "Ore Pokémon", PokemonType.ROCK, null, 0.9, 102, Abilities.STURDY, Abilities.WEAK_ARMOR, Abilities.SAND_FORCE, 390, 70, 105, 105, 50, 40, 20, 120, 50, 137, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GIGALITH, 5, false, false, false, "Compressed Pokémon", PokemonType.ROCK, null, 1.7, 260, Abilities.STURDY, Abilities.SAND_STREAM, Abilities.SAND_FORCE, 515, 85, 135, 130, 60, 80, 25, 45, 50, 258, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.WOOBAT, 5, false, false, false, "Bat Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.4, 2.1, Abilities.UNAWARE, Abilities.KLUTZ, Abilities.SIMPLE, 323, 65, 45, 43, 55, 43, 72, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SWOOBAT, 5, false, false, false, "Courting Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.9, 10.5, Abilities.UNAWARE, Abilities.KLUTZ, Abilities.SIMPLE, 425, 67, 57, 55, 77, 55, 114, 45, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DRILBUR, 5, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.3, 8.5, Abilities.SAND_RUSH, Abilities.SAND_FORCE, Abilities.MOLD_BREAKER, 328, 60, 85, 40, 30, 45, 68, 120, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.EXCADRILL, 5, false, false, false, "Subterrene Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 40.4, Abilities.SAND_RUSH, Abilities.SAND_FORCE, Abilities.MOLD_BREAKER, 508, 110, 135, 60, 50, 65, 88, 60, 50, 178, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.AUDINO, 5, false, false, false, "Hearing Pokémon", PokemonType.NORMAL, null, 1.1, 31, Abilities.HEALER, Abilities.REGENERATOR, Abilities.KLUTZ, 445, 103, 60, 86, 60, 86, 50, 255, 50, 390, GrowthRate.FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.NORMAL, null, 1.1, 31, Abilities.HEALER, Abilities.REGENERATOR, Abilities.KLUTZ, 445, 103, 60, 86, 60, 86, 50, 255, 50, 390, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FAIRY, 1.5, 32, Abilities.REGENERATOR, Abilities.REGENERATOR, Abilities.REGENERATOR, 545, 103, 60, 126, 80, 126, 50, 255, 50, 390), //Custom Ability, base form Hidden Ability - ), - new PokemonSpecies(Species.TIMBURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 0.6, 12.5, Abilities.GUTS, Abilities.SHEER_FORCE, Abilities.IRON_FIST, 305, 75, 80, 55, 25, 35, 35, 180, 70, 61, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(Species.GURDURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 1.2, 40, Abilities.GUTS, Abilities.SHEER_FORCE, Abilities.IRON_FIST, 405, 85, 105, 85, 40, 50, 40, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(Species.CONKELDURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 1.4, 87, Abilities.GUTS, Abilities.SHEER_FORCE, Abilities.IRON_FIST, 505, 105, 140, 95, 55, 65, 45, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(Species.TYMPOLE, 5, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 0.5, 4.5, Abilities.SWIFT_SWIM, Abilities.HYDRATION, Abilities.WATER_ABSORB, 294, 50, 50, 40, 50, 40, 64, 255, 50, 59, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.PALPITOAD, 5, false, false, false, "Vibration Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.8, 17, Abilities.SWIFT_SWIM, Abilities.HYDRATION, Abilities.WATER_ABSORB, 384, 75, 65, 55, 65, 55, 69, 120, 50, 134, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SEISMITOAD, 5, false, false, false, "Vibration Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.5, 62, Abilities.SWIFT_SWIM, Abilities.POISON_TOUCH, Abilities.WATER_ABSORB, 509, 105, 95, 75, 85, 75, 74, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.THROH, 5, false, false, false, "Judo Pokémon", PokemonType.FIGHTING, null, 1.3, 55.5, Abilities.GUTS, Abilities.INNER_FOCUS, Abilities.MOLD_BREAKER, 465, 120, 100, 85, 30, 85, 45, 45, 50, 163, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.SAWK, 5, false, false, false, "Karate Pokémon", PokemonType.FIGHTING, null, 1.4, 51, Abilities.STURDY, Abilities.INNER_FOCUS, Abilities.MOLD_BREAKER, 465, 75, 125, 75, 30, 75, 85, 45, 50, 163, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.SEWADDLE, 5, false, false, false, "Sewing Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.3, 2.5, Abilities.SWARM, Abilities.CHLOROPHYLL, Abilities.OVERCOAT, 310, 45, 53, 70, 40, 60, 42, 255, 70, 62, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SWADLOON, 5, false, false, false, "Leaf-Wrapped Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.5, 7.3, Abilities.LEAF_GUARD, Abilities.CHLOROPHYLL, Abilities.OVERCOAT, 380, 55, 63, 90, 50, 80, 42, 120, 70, 133, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.LEAVANNY, 5, false, false, false, "Nurturing Pokémon", PokemonType.BUG, PokemonType.GRASS, 1.2, 20.5, Abilities.SWARM, Abilities.CHLOROPHYLL, Abilities.OVERCOAT, 500, 75, 103, 80, 70, 80, 92, 45, 70, 250, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.VENIPEDE, 5, false, false, false, "Centipede Pokémon", PokemonType.BUG, PokemonType.POISON, 0.4, 5.3, Abilities.POISON_POINT, Abilities.SWARM, Abilities.SPEED_BOOST, 260, 30, 45, 59, 30, 39, 57, 255, 50, 52, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.WHIRLIPEDE, 5, false, false, false, "Curlipede Pokémon", PokemonType.BUG, PokemonType.POISON, 1.2, 58.5, Abilities.POISON_POINT, Abilities.SWARM, Abilities.SPEED_BOOST, 360, 40, 55, 99, 40, 79, 47, 120, 50, 126, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SCOLIPEDE, 5, false, false, false, "Megapede Pokémon", PokemonType.BUG, PokemonType.POISON, 2.5, 200.5, Abilities.POISON_POINT, Abilities.SWARM, Abilities.SPEED_BOOST, 485, 60, 100, 89, 55, 69, 112, 45, 50, 243, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.COTTONEE, 5, false, false, false, "Cotton Puff Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.3, 0.6, Abilities.PRANKSTER, Abilities.INFILTRATOR, Abilities.CHLOROPHYLL, 280, 40, 27, 60, 37, 50, 66, 190, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WHIMSICOTT, 5, false, false, false, "Windveiled Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.7, 6.6, Abilities.PRANKSTER, Abilities.INFILTRATOR, Abilities.CHLOROPHYLL, 480, 60, 67, 85, 77, 75, 116, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PETILIL, 5, false, false, false, "Bulb Pokémon", PokemonType.GRASS, null, 0.5, 6.6, Abilities.CHLOROPHYLL, Abilities.OWN_TEMPO, Abilities.LEAF_GUARD, 280, 45, 35, 50, 70, 50, 30, 190, 50, 56, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.LILLIGANT, 5, false, false, false, "Flowering Pokémon", PokemonType.GRASS, null, 1.1, 16.3, Abilities.CHLOROPHYLL, Abilities.OWN_TEMPO, Abilities.LEAF_GUARD, 480, 70, 60, 75, 110, 75, 90, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.BASCULIN, 5, false, false, false, "Hostile Pokémon", PokemonType.WATER, null, 1, 18, Abilities.RECKLESS, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Red-Striped Form", "red-striped", PokemonType.WATER, null, 1, 18, Abilities.RECKLESS, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), - new PokemonForm("Blue-Striped Form", "blue-striped", PokemonType.WATER, null, 1, 18, Abilities.ROCK_HEAD, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), - new PokemonForm("White-Striped Form", "white-striped", PokemonType.WATER, null, 1, 18, Abilities.RATTLED, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), - ), - new PokemonSpecies(Species.SANDILE, 5, false, false, false, "Desert Croc Pokémon", PokemonType.GROUND, PokemonType.DARK, 0.7, 15.2, Abilities.INTIMIDATE, Abilities.MOXIE, Abilities.ANGER_POINT, 292, 50, 72, 35, 35, 35, 65, 180, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.KROKOROK, 5, false, false, false, "Desert Croc Pokémon", PokemonType.GROUND, PokemonType.DARK, 1, 33.4, Abilities.INTIMIDATE, Abilities.MOXIE, Abilities.ANGER_POINT, 351, 60, 82, 45, 45, 45, 74, 90, 50, 123, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.KROOKODILE, 5, false, false, false, "Intimidation Pokémon", PokemonType.GROUND, PokemonType.DARK, 1.5, 96.3, Abilities.INTIMIDATE, Abilities.MOXIE, Abilities.ANGER_POINT, 519, 95, 117, 80, 65, 70, 92, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.DARUMAKA, 5, false, false, false, "Zen Charm Pokémon", PokemonType.FIRE, null, 0.6, 37.5, Abilities.HUSTLE, Abilities.NONE, Abilities.INNER_FOCUS, 315, 70, 90, 45, 15, 45, 50, 120, 50, 63, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.DARMANITAN, 5, false, false, false, "Blazing Pokémon", PokemonType.FIRE, null, 1.3, 92.9, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Standard Mode", "", PokemonType.FIRE, null, 1.3, 92.9, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, false, null, true), - new PokemonForm("Zen Mode", "zen", PokemonType.FIRE, PokemonType.PSYCHIC, 1.3, 92.9, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.ZEN_MODE, 540, 105, 30, 105, 140, 105, 55, 60, 50, 189), - ), - new PokemonSpecies(Species.MARACTUS, 5, false, false, false, "Cactus Pokémon", PokemonType.GRASS, null, 1, 28, Abilities.WATER_ABSORB, Abilities.CHLOROPHYLL, Abilities.STORM_DRAIN, 461, 75, 86, 67, 106, 67, 60, 255, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DWEBBLE, 5, false, false, false, "Rock Inn Pokémon", PokemonType.BUG, PokemonType.ROCK, 0.3, 14.5, Abilities.STURDY, Abilities.SHELL_ARMOR, Abilities.WEAK_ARMOR, 325, 50, 65, 85, 35, 35, 55, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CRUSTLE, 5, false, false, false, "Stone Home Pokémon", PokemonType.BUG, PokemonType.ROCK, 1.4, 200, Abilities.STURDY, Abilities.SHELL_ARMOR, Abilities.WEAK_ARMOR, 485, 70, 105, 125, 65, 75, 45, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SCRAGGY, 5, false, false, false, "Shedding Pokémon", PokemonType.DARK, PokemonType.FIGHTING, 0.6, 11.8, Abilities.SHED_SKIN, Abilities.MOXIE, Abilities.INTIMIDATE, 348, 50, 75, 70, 35, 70, 48, 180, 35, 70, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SCRAFTY, 5, false, false, false, "Hoodlum Pokémon", PokemonType.DARK, PokemonType.FIGHTING, 1.1, 30, Abilities.SHED_SKIN, Abilities.MOXIE, Abilities.INTIMIDATE, 488, 65, 90, 115, 45, 115, 58, 90, 50, 171, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SIGILYPH, 5, false, false, false, "Avianoid Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.4, 14, Abilities.WONDER_SKIN, Abilities.MAGIC_GUARD, Abilities.TINTED_LENS, 490, 72, 58, 80, 103, 80, 97, 45, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.YAMASK, 5, false, false, false, "Spirit Pokémon", PokemonType.GHOST, null, 0.5, 1.5, Abilities.MUMMY, Abilities.NONE, Abilities.NONE, 303, 38, 30, 85, 55, 65, 30, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.COFAGRIGUS, 5, false, false, false, "Coffin Pokémon", PokemonType.GHOST, null, 1.7, 76.5, Abilities.MUMMY, Abilities.NONE, Abilities.NONE, 483, 58, 50, 145, 95, 105, 30, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TIRTOUGA, 5, false, false, false, "Prototurtle Pokémon", PokemonType.WATER, PokemonType.ROCK, 0.7, 16.5, Abilities.SOLID_ROCK, Abilities.STURDY, Abilities.SWIFT_SWIM, 355, 54, 78, 103, 53, 45, 22, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.CARRACOSTA, 5, false, false, false, "Prototurtle Pokémon", PokemonType.WATER, PokemonType.ROCK, 1.2, 81, Abilities.SOLID_ROCK, Abilities.STURDY, Abilities.SWIFT_SWIM, 495, 74, 108, 133, 83, 65, 32, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.ARCHEN, 5, false, false, false, "First Bird Pokémon", PokemonType.ROCK, PokemonType.FLYING, 0.5, 9.5, Abilities.DEFEATIST, Abilities.NONE, Abilities.WIMP_OUT, 401, 55, 112, 45, 74, 45, 70, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden - new PokemonSpecies(Species.ARCHEOPS, 5, false, false, false, "First Bird Pokémon", PokemonType.ROCK, PokemonType.FLYING, 1.4, 32, Abilities.DEFEATIST, Abilities.NONE, Abilities.EMERGENCY_EXIT, 567, 75, 140, 65, 112, 65, 110, 45, 50, 177, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden - new PokemonSpecies(Species.TRUBBISH, 5, false, false, false, "Trash Bag Pokémon", PokemonType.POISON, null, 0.6, 31, Abilities.STENCH, Abilities.STICKY_HOLD, Abilities.AFTERMATH, 329, 50, 50, 62, 40, 62, 65, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GARBODOR, 5, false, false, false, "Trash Heap Pokémon", PokemonType.POISON, null, 1.9, 107.3, Abilities.STENCH, Abilities.WEAK_ARMOR, Abilities.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.POISON, null, 1.9, 107.3, Abilities.STENCH, Abilities.WEAK_ARMOR, Abilities.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.POISON, PokemonType.STEEL, 21, 999.9, Abilities.TOXIC_DEBRIS, Abilities.TOXIC_DEBRIS, Abilities.TOXIC_DEBRIS, 574, 115, 121, 102, 81, 102, 53, 60, 50, 166), - ), - new PokemonSpecies(Species.ZORUA, 5, false, false, false, "Tricky Fox Pokémon", PokemonType.DARK, null, 0.7, 12.5, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 330, 40, 65, 40, 80, 40, 65, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.ZOROARK, 5, false, false, false, "Illusion Fox Pokémon", PokemonType.DARK, null, 1.6, 81.1, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 510, 60, 105, 60, 120, 60, 105, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.MINCCINO, 5, false, false, false, "Chinchilla Pokémon", PokemonType.NORMAL, null, 0.4, 5.8, Abilities.CUTE_CHARM, Abilities.TECHNICIAN, Abilities.SKILL_LINK, 300, 55, 50, 40, 40, 40, 75, 255, 50, 60, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.CINCCINO, 5, false, false, false, "Scarf Pokémon", PokemonType.NORMAL, null, 0.5, 7.5, Abilities.CUTE_CHARM, Abilities.TECHNICIAN, Abilities.SKILL_LINK, 470, 75, 95, 60, 65, 60, 115, 60, 50, 165, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.GOTHITA, 5, false, false, false, "Fixation Pokémon", PokemonType.PSYCHIC, null, 0.4, 5.8, Abilities.FRISK, Abilities.COMPETITIVE, Abilities.SHADOW_TAG, 290, 45, 30, 50, 55, 65, 45, 200, 50, 58, GrowthRate.MEDIUM_SLOW, 25, false), - new PokemonSpecies(Species.GOTHORITA, 5, false, false, false, "Manipulate Pokémon", PokemonType.PSYCHIC, null, 0.7, 18, Abilities.FRISK, Abilities.COMPETITIVE, Abilities.SHADOW_TAG, 390, 60, 45, 70, 75, 85, 55, 100, 50, 137, GrowthRate.MEDIUM_SLOW, 25, false), - new PokemonSpecies(Species.GOTHITELLE, 5, false, false, false, "Astral Body Pokémon", PokemonType.PSYCHIC, null, 1.5, 44, Abilities.FRISK, Abilities.COMPETITIVE, Abilities.SHADOW_TAG, 490, 70, 55, 95, 95, 110, 65, 50, 50, 245, GrowthRate.MEDIUM_SLOW, 25, false), - new PokemonSpecies(Species.SOLOSIS, 5, false, false, false, "Cell Pokémon", PokemonType.PSYCHIC, null, 0.3, 1, Abilities.OVERCOAT, Abilities.MAGIC_GUARD, Abilities.REGENERATOR, 290, 45, 30, 40, 105, 50, 20, 200, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.DUOSION, 5, false, false, false, "Mitosis Pokémon", PokemonType.PSYCHIC, null, 0.6, 8, Abilities.OVERCOAT, Abilities.MAGIC_GUARD, Abilities.REGENERATOR, 370, 65, 40, 50, 125, 60, 30, 100, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.REUNICLUS, 5, false, false, false, "Multiplying Pokémon", PokemonType.PSYCHIC, null, 1, 20.1, Abilities.OVERCOAT, Abilities.MAGIC_GUARD, Abilities.REGENERATOR, 490, 110, 65, 75, 125, 85, 30, 50, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.DUCKLETT, 5, false, false, false, "Water Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 0.5, 5.5, Abilities.KEEN_EYE, Abilities.BIG_PECKS, Abilities.HYDRATION, 305, 62, 44, 50, 44, 50, 55, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SWANNA, 5, false, false, false, "White Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 1.3, 24.2, Abilities.KEEN_EYE, Abilities.BIG_PECKS, Abilities.HYDRATION, 473, 75, 87, 63, 87, 63, 98, 45, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.VANILLITE, 5, false, false, false, "Fresh Snow Pokémon", PokemonType.ICE, null, 0.4, 5.7, Abilities.ICE_BODY, Abilities.SNOW_CLOAK, Abilities.WEAK_ARMOR, 305, 36, 50, 50, 65, 60, 44, 255, 50, 61, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.VANILLISH, 5, false, false, false, "Icy Snow Pokémon", PokemonType.ICE, null, 1.1, 41, Abilities.ICE_BODY, Abilities.SNOW_CLOAK, Abilities.WEAK_ARMOR, 395, 51, 65, 65, 80, 75, 59, 120, 50, 138, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.VANILLUXE, 5, false, false, false, "Snowstorm Pokémon", PokemonType.ICE, null, 1.3, 57.5, Abilities.ICE_BODY, Abilities.SNOW_WARNING, Abilities.WEAK_ARMOR, 535, 71, 95, 85, 110, 95, 79, 45, 50, 268, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.DEERLING, 5, false, false, false, "Season Pokémon", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Spring Form", "spring", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), - new PokemonForm("Summer Form", "summer", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), - new PokemonForm("Autumn Form", "autumn", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), - new PokemonForm("Winter Form", "winter", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), - ), - new PokemonSpecies(Species.SAWSBUCK, 5, false, false, false, "Season Pokémon", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Spring Form", "spring", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), - new PokemonForm("Summer Form", "summer", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), - new PokemonForm("Autumn Form", "autumn", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), - new PokemonForm("Winter Form", "winter", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), - ), - new PokemonSpecies(Species.EMOLGA, 5, false, false, false, "Sky Squirrel Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 0.4, 5, Abilities.STATIC, Abilities.NONE, Abilities.MOTOR_DRIVE, 428, 55, 75, 60, 75, 60, 103, 200, 50, 150, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.KARRABLAST, 5, false, false, false, "Clamping Pokémon", PokemonType.BUG, null, 0.5, 5.9, Abilities.SWARM, Abilities.SHED_SKIN, Abilities.NO_GUARD, 315, 50, 75, 45, 40, 45, 60, 200, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ESCAVALIER, 5, false, false, false, "Cavalry Pokémon", PokemonType.BUG, PokemonType.STEEL, 1, 33, Abilities.SWARM, Abilities.SHELL_ARMOR, Abilities.OVERCOAT, 495, 70, 135, 105, 60, 105, 20, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FOONGUS, 5, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.2, 1, Abilities.EFFECT_SPORE, Abilities.NONE, Abilities.REGENERATOR, 294, 69, 55, 45, 55, 55, 15, 190, 50, 59, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.AMOONGUSS, 5, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.6, 10.5, Abilities.EFFECT_SPORE, Abilities.NONE, Abilities.REGENERATOR, 464, 114, 85, 70, 85, 80, 30, 75, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FRILLISH, 5, false, false, false, "Floating Pokémon", PokemonType.WATER, PokemonType.GHOST, 1.2, 33, Abilities.WATER_ABSORB, Abilities.CURSED_BODY, Abilities.DAMP, 335, 55, 40, 50, 65, 85, 40, 190, 50, 67, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.JELLICENT, 5, false, false, false, "Floating Pokémon", PokemonType.WATER, PokemonType.GHOST, 2.2, 135, Abilities.WATER_ABSORB, Abilities.CURSED_BODY, Abilities.DAMP, 480, 100, 60, 70, 85, 105, 60, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.ALOMOMOLA, 5, false, false, false, "Caring Pokémon", PokemonType.WATER, null, 1.2, 31.6, Abilities.HEALER, Abilities.HYDRATION, Abilities.REGENERATOR, 470, 165, 75, 80, 40, 45, 65, 75, 70, 165, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.JOLTIK, 5, false, false, false, "Attaching Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.1, 0.6, Abilities.COMPOUND_EYES, Abilities.UNNERVE, Abilities.SWARM, 319, 50, 47, 50, 57, 50, 65, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALVANTULA, 5, false, false, false, "EleSpider Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.8, 14.3, Abilities.COMPOUND_EYES, Abilities.UNNERVE, Abilities.SWARM, 472, 70, 77, 60, 97, 60, 108, 75, 50, 165, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FERROSEED, 5, false, false, false, "Thorn Seed Pokémon", PokemonType.GRASS, PokemonType.STEEL, 0.6, 18.8, Abilities.IRON_BARBS, Abilities.NONE, Abilities.ANTICIPATION, 305, 44, 50, 91, 24, 86, 10, 255, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FERROTHORN, 5, false, false, false, "Thorn Pod Pokémon", PokemonType.GRASS, PokemonType.STEEL, 1, 110, Abilities.IRON_BARBS, Abilities.NONE, Abilities.ANTICIPATION, 489, 74, 94, 131, 54, 116, 20, 90, 50, 171, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.KLINK, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.3, 21, Abilities.PLUS, Abilities.MINUS, Abilities.CLEAR_BODY, 300, 40, 55, 70, 45, 60, 30, 130, 50, 60, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(Species.KLANG, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.6, 51, Abilities.PLUS, Abilities.MINUS, Abilities.CLEAR_BODY, 440, 60, 80, 95, 70, 85, 50, 60, 50, 154, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(Species.KLINKLANG, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.6, 81, Abilities.PLUS, Abilities.MINUS, Abilities.CLEAR_BODY, 520, 60, 100, 115, 70, 85, 90, 30, 50, 260, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(Species.TYNAMO, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 0.2, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 275, 35, 55, 40, 45, 40, 60, 190, 70, 55, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.EELEKTRIK, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 1.2, 22, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 405, 65, 85, 70, 75, 70, 40, 60, 70, 142, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.EELEKTROSS, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 2.1, 80.5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 515, 85, 115, 80, 105, 80, 50, 30, 70, 258, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.ELGYEM, 5, false, false, false, "Cerebral Pokémon", PokemonType.PSYCHIC, null, 0.5, 9, Abilities.TELEPATHY, Abilities.SYNCHRONIZE, Abilities.ANALYTIC, 335, 55, 55, 55, 85, 55, 30, 255, 50, 67, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BEHEEYEM, 5, false, false, false, "Cerebral Pokémon", PokemonType.PSYCHIC, null, 1, 34.5, Abilities.TELEPATHY, Abilities.SYNCHRONIZE, Abilities.ANALYTIC, 485, 75, 75, 75, 125, 95, 40, 90, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LITWICK, 5, false, false, false, "Candle Pokémon", PokemonType.GHOST, PokemonType.FIRE, 0.3, 3.1, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, Abilities.INFILTRATOR, 275, 50, 30, 55, 65, 55, 20, 190, 50, 55, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.LAMPENT, 5, false, false, false, "Lamp Pokémon", PokemonType.GHOST, PokemonType.FIRE, 0.6, 13, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, Abilities.INFILTRATOR, 370, 60, 40, 60, 95, 60, 55, 90, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CHANDELURE, 5, false, false, false, "Luring Pokémon", PokemonType.GHOST, PokemonType.FIRE, 1, 34.3, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, Abilities.INFILTRATOR, 520, 60, 55, 90, 145, 90, 80, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.AXEW, 5, false, false, false, "Tusk Pokémon", PokemonType.DRAGON, null, 0.6, 18, Abilities.RIVALRY, Abilities.MOLD_BREAKER, Abilities.UNNERVE, 320, 46, 87, 60, 30, 40, 57, 75, 35, 64, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.FRAXURE, 5, false, false, false, "Axe Jaw Pokémon", PokemonType.DRAGON, null, 1, 36, Abilities.RIVALRY, Abilities.MOLD_BREAKER, Abilities.UNNERVE, 410, 66, 117, 70, 40, 50, 67, 60, 35, 144, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HAXORUS, 5, false, false, false, "Axe Jaw Pokémon", PokemonType.DRAGON, null, 1.8, 105.5, Abilities.RIVALRY, Abilities.MOLD_BREAKER, Abilities.UNNERVE, 540, 76, 147, 90, 60, 70, 97, 45, 35, 270, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.CUBCHOO, 5, false, false, false, "Chill Pokémon", PokemonType.ICE, null, 0.5, 8.5, Abilities.SNOW_CLOAK, Abilities.SLUSH_RUSH, Abilities.RATTLED, 305, 55, 70, 40, 60, 40, 40, 120, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BEARTIC, 5, false, false, false, "Freezing Pokémon", PokemonType.ICE, null, 2.6, 260, Abilities.SNOW_CLOAK, Abilities.SLUSH_RUSH, Abilities.SWIFT_SWIM, 505, 95, 130, 80, 70, 80, 50, 60, 50, 177, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CRYOGONAL, 5, false, false, false, "Crystallizing Pokémon", PokemonType.ICE, null, 1.1, 148, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 515, 80, 50, 50, 95, 135, 105, 25, 50, 180, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.SHELMET, 5, false, false, false, "Snail Pokémon", PokemonType.BUG, null, 0.4, 7.7, Abilities.HYDRATION, Abilities.SHELL_ARMOR, Abilities.OVERCOAT, 305, 50, 40, 85, 40, 65, 25, 200, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ACCELGOR, 5, false, false, false, "Shell Out Pokémon", PokemonType.BUG, null, 0.8, 25.3, Abilities.HYDRATION, Abilities.STICKY_HOLD, Abilities.UNBURDEN, 495, 80, 70, 40, 100, 60, 145, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.STUNFISK, 5, false, false, false, "Trap Pokémon", PokemonType.GROUND, PokemonType.ELECTRIC, 0.7, 11, Abilities.STATIC, Abilities.LIMBER, Abilities.SAND_VEIL, 471, 109, 66, 84, 81, 99, 32, 75, 70, 165, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MIENFOO, 5, false, false, false, "Martial Arts Pokémon", PokemonType.FIGHTING, null, 0.9, 20, Abilities.INNER_FOCUS, Abilities.REGENERATOR, Abilities.RECKLESS, 350, 45, 85, 50, 55, 50, 65, 180, 50, 70, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.MIENSHAO, 5, false, false, false, "Martial Arts Pokémon", PokemonType.FIGHTING, null, 1.4, 35.5, Abilities.INNER_FOCUS, Abilities.REGENERATOR, Abilities.RECKLESS, 510, 65, 125, 60, 95, 60, 105, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.DRUDDIGON, 5, false, false, false, "Cave Pokémon", PokemonType.DRAGON, null, 1.6, 139, Abilities.ROUGH_SKIN, Abilities.SHEER_FORCE, Abilities.MOLD_BREAKER, 485, 77, 120, 90, 60, 90, 48, 45, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GOLETT, 5, false, false, false, "Automaton Pokémon", PokemonType.GROUND, PokemonType.GHOST, 1, 92, Abilities.IRON_FIST, Abilities.KLUTZ, Abilities.NO_GUARD, 303, 59, 74, 50, 35, 50, 35, 190, 50, 61, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.GOLURK, 5, false, false, false, "Automaton Pokémon", PokemonType.GROUND, PokemonType.GHOST, 2.8, 330, Abilities.IRON_FIST, Abilities.KLUTZ, Abilities.NO_GUARD, 483, 89, 124, 80, 55, 80, 55, 90, 50, 169, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.PAWNIARD, 5, false, false, false, "Sharp Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 0.5, 10.2, Abilities.DEFIANT, Abilities.INNER_FOCUS, Abilities.PRESSURE, 340, 45, 85, 70, 40, 40, 60, 120, 35, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BISHARP, 5, false, false, false, "Sword Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 1.6, 70, Abilities.DEFIANT, Abilities.INNER_FOCUS, Abilities.PRESSURE, 490, 65, 125, 100, 60, 70, 70, 45, 35, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BOUFFALANT, 5, false, false, false, "Bash Buffalo Pokémon", PokemonType.NORMAL, null, 1.6, 94.6, Abilities.RECKLESS, Abilities.SAP_SIPPER, Abilities.SOUNDPROOF, 490, 95, 110, 95, 40, 95, 55, 45, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RUFFLET, 5, false, false, false, "Eaglet Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.5, 10.5, Abilities.KEEN_EYE, Abilities.SHEER_FORCE, Abilities.HUSTLE, 350, 70, 83, 50, 37, 50, 60, 190, 50, 70, GrowthRate.SLOW, 100, false), - new PokemonSpecies(Species.BRAVIARY, 5, false, false, false, "Valiant Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 41, Abilities.KEEN_EYE, Abilities.SHEER_FORCE, Abilities.DEFIANT, 510, 100, 123, 75, 57, 75, 80, 60, 50, 179, GrowthRate.SLOW, 100, false), - new PokemonSpecies(Species.VULLABY, 5, false, false, false, "Diapered Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.5, 9, Abilities.BIG_PECKS, Abilities.OVERCOAT, Abilities.WEAK_ARMOR, 370, 70, 55, 75, 45, 65, 60, 190, 35, 74, GrowthRate.SLOW, 0, false), - new PokemonSpecies(Species.MANDIBUZZ, 5, false, false, false, "Bone Vulture Pokémon", PokemonType.DARK, PokemonType.FLYING, 1.2, 39.5, Abilities.BIG_PECKS, Abilities.OVERCOAT, Abilities.WEAK_ARMOR, 510, 110, 65, 105, 55, 95, 80, 60, 35, 179, GrowthRate.SLOW, 0, false), - new PokemonSpecies(Species.HEATMOR, 5, false, false, false, "Anteater Pokémon", PokemonType.FIRE, null, 1.4, 58, Abilities.GLUTTONY, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, 484, 85, 97, 66, 105, 66, 65, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DURANT, 5, false, false, false, "Iron Ant Pokémon", PokemonType.BUG, PokemonType.STEEL, 0.3, 33, Abilities.SWARM, Abilities.HUSTLE, Abilities.TRUANT, 484, 58, 109, 112, 48, 48, 109, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DEINO, 5, false, false, false, "Irate Pokémon", PokemonType.DARK, PokemonType.DRAGON, 0.8, 17.3, Abilities.HUSTLE, Abilities.NONE, Abilities.NONE, 300, 52, 65, 50, 45, 50, 38, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.ZWEILOUS, 5, false, false, false, "Hostile Pokémon", PokemonType.DARK, PokemonType.DRAGON, 1.4, 50, Abilities.HUSTLE, Abilities.NONE, Abilities.NONE, 420, 72, 85, 70, 65, 70, 58, 45, 35, 147, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HYDREIGON, 5, false, false, false, "Brutal Pokémon", PokemonType.DARK, PokemonType.DRAGON, 1.8, 160, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 92, 105, 90, 125, 90, 98, 45, 35, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.LARVESTA, 5, false, false, false, "Torch Pokémon", PokemonType.BUG, PokemonType.FIRE, 1.1, 28.8, Abilities.FLAME_BODY, Abilities.NONE, Abilities.SWARM, 360, 55, 85, 55, 50, 55, 60, 45, 50, 72, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.VOLCARONA, 5, false, false, false, "Sun Pokémon", PokemonType.BUG, PokemonType.FIRE, 1.6, 46, Abilities.FLAME_BODY, Abilities.NONE, Abilities.SWARM, 550, 85, 60, 65, 135, 105, 100, 15, 50, 275, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.COBALION, 5, true, false, false, "Iron Will Pokémon", PokemonType.STEEL, PokemonType.FIGHTING, 2.1, 250, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 90, 129, 90, 72, 108, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.TERRAKION, 5, true, false, false, "Cavern Pokémon", PokemonType.ROCK, PokemonType.FIGHTING, 1.9, 260, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 129, 90, 72, 90, 108, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.VIRIZION, 5, true, false, false, "Grassland Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 2, 200, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 90, 72, 90, 129, 108, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.TORNADUS, 5, true, false, false, "Cyclone Pokémon", PokemonType.FLYING, null, 1.5, 63, Abilities.PRANKSTER, Abilities.NONE, Abilities.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Incarnate Forme", "incarnate", PokemonType.FLYING, null, 1.5, 63, Abilities.PRANKSTER, Abilities.NONE, Abilities.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, false, null, true), - new PokemonForm("Therian Forme", "therian", PokemonType.FLYING, null, 1.4, 63, Abilities.REGENERATOR, Abilities.NONE, Abilities.REGENERATOR, 580, 79, 100, 80, 110, 90, 121, 3, 90, 290), - ), - new PokemonSpecies(Species.THUNDURUS, 5, true, false, false, "Bolt Strike Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.5, 61, Abilities.PRANKSTER, Abilities.NONE, Abilities.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Incarnate Forme", "incarnate", PokemonType.ELECTRIC, PokemonType.FLYING, 1.5, 61, Abilities.PRANKSTER, Abilities.NONE, Abilities.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, false, null, true), - new PokemonForm("Therian Forme", "therian", PokemonType.ELECTRIC, PokemonType.FLYING, 3, 61, Abilities.VOLT_ABSORB, Abilities.NONE, Abilities.VOLT_ABSORB, 580, 79, 105, 70, 145, 80, 101, 3, 90, 290), - ), - new PokemonSpecies(Species.RESHIRAM, 5, false, true, false, "Vast White Pokémon", PokemonType.DRAGON, PokemonType.FIRE, 3.2, 330, Abilities.TURBOBLAZE, Abilities.NONE, Abilities.NONE, 680, 100, 120, 100, 150, 120, 90, 3, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ZEKROM, 5, false, true, false, "Deep Black Pokémon", PokemonType.DRAGON, PokemonType.ELECTRIC, 2.9, 345, Abilities.TERAVOLT, Abilities.NONE, Abilities.NONE, 680, 100, 150, 120, 120, 100, 90, 3, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.LANDORUS, 5, true, false, false, "Abundance Pokémon", PokemonType.GROUND, PokemonType.FLYING, 1.5, 68, Abilities.SAND_FORCE, Abilities.NONE, Abilities.SHEER_FORCE, 600, 89, 125, 90, 115, 80, 101, 3, 90, 300, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Incarnate Forme", "incarnate", PokemonType.GROUND, PokemonType.FLYING, 1.5, 68, Abilities.SAND_FORCE, Abilities.NONE, Abilities.SHEER_FORCE, 600, 89, 125, 90, 115, 80, 101, 3, 90, 300, false, null, true), - new PokemonForm("Therian Forme", "therian", PokemonType.GROUND, PokemonType.FLYING, 1.3, 68, Abilities.INTIMIDATE, Abilities.NONE, Abilities.INTIMIDATE, 600, 89, 145, 90, 105, 80, 91, 3, 90, 300), - ), - new PokemonSpecies(Species.KYUREM, 5, false, true, false, "Boundary Pokémon", PokemonType.DRAGON, PokemonType.ICE, 3, 325, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.ICE, 3, 325, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330, false, null, true), - new PokemonForm("Black", "black", PokemonType.DRAGON, PokemonType.ICE, 3.3, 325, Abilities.TERAVOLT, Abilities.NONE, Abilities.NONE, 700, 125, 170, 100, 120, 90, 95, 3, 0, 350), - new PokemonForm("White", "white", PokemonType.DRAGON, PokemonType.ICE, 3.6, 325, Abilities.TURBOBLAZE, Abilities.NONE, Abilities.NONE, 700, 125, 120, 90, 170, 100, 95, 3, 0, 350), - ), - new PokemonSpecies(Species.KELDEO, 5, false, false, true, "Colt Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290, GrowthRate.SLOW, null, false, true, - new PokemonForm("Ordinary Form", "ordinary", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290, false, null, true), - new PokemonForm("Resolute", "resolute", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290), - ), - new PokemonSpecies(Species.MELOETTA, 5, false, false, true, "Melody Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Aria Forme", "aria", PokemonType.NORMAL, PokemonType.PSYCHIC, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 300, false, null, true), - new PokemonForm("Pirouette Forme", "pirouette", PokemonType.NORMAL, PokemonType.FIGHTING, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 128, 90, 77, 77, 128, 3, 100, 300, false, null, true), - ), - new PokemonSpecies(Species.GENESECT, 5, false, false, true, "Paleozoic Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300, false, null, true), - new PokemonForm("Shock Drive", "shock", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), - new PokemonForm("Burn Drive", "burn", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), - new PokemonForm("Chill Drive", "chill", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), - new PokemonForm("Douse Drive", "douse", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), - ), - new PokemonSpecies(Species.CHESPIN, 6, false, false, false, "Spiny Nut Pokémon", PokemonType.GRASS, null, 0.4, 9, Abilities.OVERGROW, Abilities.NONE, Abilities.BULLETPROOF, 313, 56, 61, 65, 48, 45, 38, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.QUILLADIN, 6, false, false, false, "Spiny Armor Pokémon", PokemonType.GRASS, null, 0.7, 29, Abilities.OVERGROW, Abilities.NONE, Abilities.BULLETPROOF, 405, 61, 78, 95, 56, 58, 57, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.CHESNAUGHT, 6, false, false, false, "Spiny Armor Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.6, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.BULLETPROOF, 530, 88, 107, 122, 74, 75, 64, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.FENNEKIN, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 0.4, 9.4, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 307, 40, 45, 40, 62, 60, 60, 45, 70, 61, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.BRAIXEN, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 1, 14.5, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 409, 59, 59, 58, 90, 70, 73, 45, 70, 143, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.DELPHOX, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, PokemonType.PSYCHIC, 1.5, 39, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 534, 75, 69, 72, 114, 100, 104, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.FROAKIE, 6, false, false, false, "Bubble Frog Pokémon", PokemonType.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false, false, - new PokemonForm("Normal", "", PokemonType.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, null, true), - new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.TORRENT, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, "", true), - ), - new PokemonSpecies(Species.FROGADIER, 6, false, false, false, "Bubble Frog Pokémon", PokemonType.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false, false, - new PokemonForm("Normal", "", PokemonType.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, null, true), - new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.NONE, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, "", true), - ), - new PokemonSpecies(Species.GRENINJA, 6, false, false, false, "Ninja Pokémon", PokemonType.WATER, PokemonType.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, false, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, false, null, true), - new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, PokemonType.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.BATTLE_BOND, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, false, "", true), - new PokemonForm("Ash", "ash", PokemonType.WATER, PokemonType.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.NONE, 640, 72, 145, 67, 153, 71, 132, 45, 70, 265), - ), - new PokemonSpecies(Species.BUNNELBY, 6, false, false, false, "Digging Pokémon", PokemonType.NORMAL, null, 0.4, 5, Abilities.PICKUP, Abilities.CHEEK_POUCH, Abilities.HUGE_POWER, 237, 38, 36, 38, 32, 36, 57, 255, 50, 47, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DIGGERSBY, 6, false, false, false, "Digging Pokémon", PokemonType.NORMAL, PokemonType.GROUND, 1, 42.4, Abilities.PICKUP, Abilities.CHEEK_POUCH, Abilities.HUGE_POWER, 423, 85, 56, 77, 50, 77, 78, 127, 50, 148, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FLETCHLING, 6, false, false, false, "Tiny Robin Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.7, Abilities.BIG_PECKS, Abilities.NONE, Abilities.GALE_WINGS, 278, 45, 50, 43, 40, 38, 62, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.FLETCHINDER, 6, false, false, false, "Ember Pokémon", PokemonType.FIRE, PokemonType.FLYING, 0.7, 16, Abilities.FLAME_BODY, Abilities.NONE, Abilities.GALE_WINGS, 382, 62, 73, 55, 56, 52, 84, 120, 50, 134, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.TALONFLAME, 6, false, false, false, "Scorching Pokémon", PokemonType.FIRE, PokemonType.FLYING, 1.2, 24.5, Abilities.FLAME_BODY, Abilities.NONE, Abilities.GALE_WINGS, 499, 78, 81, 71, 74, 69, 126, 45, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SCATTERBUG, 6, false, false, false, "Scatterdust Pokémon", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("River Pattern", "river", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - ), - new PokemonSpecies(Species.SPEWPA, 6, false, false, false, "Scatterdust Pokémon", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.SHED_SKIN, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("River Pattern", "river", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - ), - new PokemonSpecies(Species.VIVILLON, 6, false, false, false, "Scale Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("River Pattern", "river", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - ), - new PokemonSpecies(Species.LITLEO, 6, false, false, false, "Lion Cub Pokémon", PokemonType.FIRE, PokemonType.NORMAL, 0.6, 13.5, Abilities.RIVALRY, Abilities.UNNERVE, Abilities.MOXIE, 369, 62, 50, 58, 73, 54, 72, 220, 70, 74, GrowthRate.MEDIUM_SLOW, 12.5, false), - new PokemonSpecies(Species.PYROAR, 6, false, false, false, "Royal Pokémon", PokemonType.FIRE, PokemonType.NORMAL, 1.5, 81.5, Abilities.RIVALRY, Abilities.UNNERVE, Abilities.MOXIE, 507, 86, 68, 72, 109, 66, 106, 65, 70, 177, GrowthRate.MEDIUM_SLOW, 12.5, true), - new PokemonSpecies(Species.FLABEBE, 6, false, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, GrowthRate.MEDIUM_FAST, 0, false, false, - new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - ), - new PokemonSpecies(Species.FLOETTE, 6, false, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, GrowthRate.MEDIUM_FAST, 0, false, false, - new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - ), - new PokemonSpecies(Species.FLORGES, 6, false, false, false, "Garden Pokémon", PokemonType.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, GrowthRate.MEDIUM_FAST, 0, false, false, - new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - ), - new PokemonSpecies(Species.SKIDDO, 6, false, false, false, "Mount Pokémon", PokemonType.GRASS, null, 0.9, 31, Abilities.SAP_SIPPER, Abilities.NONE, Abilities.GRASS_PELT, 350, 66, 65, 48, 62, 57, 52, 200, 70, 70, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GOGOAT, 6, false, false, false, "Mount Pokémon", PokemonType.GRASS, null, 1.7, 91, Abilities.SAP_SIPPER, Abilities.NONE, Abilities.GRASS_PELT, 531, 123, 100, 62, 97, 81, 68, 45, 70, 186, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PANCHAM, 6, false, false, false, "Playful Pokémon", PokemonType.FIGHTING, null, 0.6, 8, Abilities.IRON_FIST, Abilities.MOLD_BREAKER, Abilities.SCRAPPY, 348, 67, 82, 62, 46, 48, 43, 220, 50, 70, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PANGORO, 6, false, false, false, "Daunting Pokémon", PokemonType.FIGHTING, PokemonType.DARK, 2.1, 136, Abilities.IRON_FIST, Abilities.MOLD_BREAKER, Abilities.SCRAPPY, 495, 95, 124, 78, 69, 71, 58, 65, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FURFROU, 6, false, false, false, "Poodle Pokémon", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Natural Form", "", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Heart Trim", "heart", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Star Trim", "star", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Diamond Trim", "diamond", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Debutante Trim", "debutante", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Matron Trim", "matron", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Dandy Trim", "dandy", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("La Reine Trim", "la-reine", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Kabuki Trim", "kabuki", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Pharaoh Trim", "pharaoh", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - ), - new PokemonSpecies(Species.ESPURR, 6, false, false, false, "Restraint Pokémon", PokemonType.PSYCHIC, null, 0.3, 3.5, Abilities.KEEN_EYE, Abilities.INFILTRATOR, Abilities.OWN_TEMPO, 355, 62, 48, 54, 63, 60, 68, 190, 50, 71, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MEOWSTIC, 6, false, false, false, "Constraint Pokémon", PokemonType.PSYCHIC, null, 0.6, 8.5, Abilities.KEEN_EYE, Abilities.INFILTRATOR, Abilities.PRANKSTER, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Male", "male", PokemonType.PSYCHIC, null, 0.6, 8.5, Abilities.KEEN_EYE, Abilities.INFILTRATOR, Abilities.PRANKSTER, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, false, "", true), - new PokemonForm("Female", "female", PokemonType.PSYCHIC, null, 0.6, 8.5, Abilities.KEEN_EYE, Abilities.INFILTRATOR, Abilities.COMPETITIVE, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, false, null, true), - ), - new PokemonSpecies(Species.HONEDGE, 6, false, false, false, "Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 0.8, 2, Abilities.NO_GUARD, Abilities.NONE, Abilities.NONE, 325, 45, 80, 100, 35, 37, 28, 180, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DOUBLADE, 6, false, false, false, "Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 0.8, 4.5, Abilities.NO_GUARD, Abilities.NONE, Abilities.NONE, 448, 59, 110, 150, 45, 49, 35, 90, 50, 157, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.AEGISLASH, 6, false, false, false, "Royal Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, Abilities.STANCE_CHANGE, Abilities.NONE, Abilities.NONE, 500, 60, 50, 140, 50, 140, 60, 45, 50, 250, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Shield Forme", "shield", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, Abilities.STANCE_CHANGE, Abilities.NONE, Abilities.NONE, 500, 60, 50, 140, 50, 140, 60, 45, 50, 250, false, "", true), - new PokemonForm("Blade Forme", "blade", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, Abilities.STANCE_CHANGE, Abilities.NONE, Abilities.NONE, 500, 60, 140, 50, 140, 50, 60, 45, 50, 250), - ), - new PokemonSpecies(Species.SPRITZEE, 6, false, false, false, "Perfume Pokémon", PokemonType.FAIRY, null, 0.2, 0.5, Abilities.HEALER, Abilities.NONE, Abilities.AROMA_VEIL, 341, 78, 52, 60, 63, 65, 23, 200, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.AROMATISSE, 6, false, false, false, "Fragrance Pokémon", PokemonType.FAIRY, null, 0.8, 15.5, Abilities.HEALER, Abilities.NONE, Abilities.AROMA_VEIL, 462, 101, 72, 72, 99, 89, 29, 140, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SWIRLIX, 6, false, false, false, "Cotton Candy Pokémon", PokemonType.FAIRY, null, 0.4, 3.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.UNBURDEN, 341, 62, 48, 66, 59, 57, 49, 200, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SLURPUFF, 6, false, false, false, "Meringue Pokémon", PokemonType.FAIRY, null, 0.8, 5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.UNBURDEN, 480, 82, 80, 86, 85, 75, 72, 140, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.INKAY, 6, false, false, false, "Revolving Pokémon", PokemonType.DARK, PokemonType.PSYCHIC, 0.4, 3.5, Abilities.CONTRARY, Abilities.SUCTION_CUPS, Abilities.INFILTRATOR, 288, 53, 54, 53, 37, 46, 45, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MALAMAR, 6, false, false, false, "Overturning Pokémon", PokemonType.DARK, PokemonType.PSYCHIC, 1.5, 47, Abilities.CONTRARY, Abilities.SUCTION_CUPS, Abilities.INFILTRATOR, 482, 86, 92, 88, 68, 75, 73, 80, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BINACLE, 6, false, false, false, "Two-Handed Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.5, 31, Abilities.TOUGH_CLAWS, Abilities.SNIPER, Abilities.PICKPOCKET, 306, 42, 52, 67, 39, 56, 50, 120, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BARBARACLE, 6, false, false, false, "Collective Pokémon", PokemonType.ROCK, PokemonType.WATER, 1.3, 96, Abilities.TOUGH_CLAWS, Abilities.SNIPER, Abilities.PICKPOCKET, 500, 72, 105, 115, 54, 86, 68, 45, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SKRELP, 6, false, false, false, "Mock Kelp Pokémon", PokemonType.POISON, PokemonType.WATER, 0.5, 7.3, Abilities.POISON_POINT, Abilities.POISON_TOUCH, Abilities.ADAPTABILITY, 320, 50, 60, 60, 60, 60, 30, 225, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DRAGALGE, 6, false, false, false, "Mock Kelp Pokémon", PokemonType.POISON, PokemonType.DRAGON, 1.8, 81.5, Abilities.POISON_POINT, Abilities.POISON_TOUCH, Abilities.ADAPTABILITY, 494, 65, 75, 90, 97, 123, 44, 55, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CLAUNCHER, 6, false, false, false, "Water Gun Pokémon", PokemonType.WATER, null, 0.5, 8.3, Abilities.MEGA_LAUNCHER, Abilities.NONE, Abilities.NONE, 330, 50, 53, 62, 58, 63, 44, 225, 50, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.CLAWITZER, 6, false, false, false, "Howitzer Pokémon", PokemonType.WATER, null, 1.3, 35.3, Abilities.MEGA_LAUNCHER, Abilities.NONE, Abilities.NONE, 500, 71, 73, 88, 120, 89, 59, 55, 50, 100, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HELIOPTILE, 6, false, false, false, "Generator Pokémon", PokemonType.ELECTRIC, PokemonType.NORMAL, 0.5, 6, Abilities.DRY_SKIN, Abilities.SAND_VEIL, Abilities.SOLAR_POWER, 289, 44, 38, 33, 61, 43, 70, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HELIOLISK, 6, false, false, false, "Generator Pokémon", PokemonType.ELECTRIC, PokemonType.NORMAL, 1, 21, Abilities.DRY_SKIN, Abilities.SAND_VEIL, Abilities.SOLAR_POWER, 481, 62, 55, 52, 109, 94, 109, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TYRUNT, 6, false, false, false, "Royal Heir Pokémon", PokemonType.ROCK, PokemonType.DRAGON, 0.8, 26, Abilities.STRONG_JAW, Abilities.NONE, Abilities.STURDY, 362, 58, 89, 77, 45, 45, 48, 45, 50, 72, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.TYRANTRUM, 6, false, false, false, "Despot Pokémon", PokemonType.ROCK, PokemonType.DRAGON, 2.5, 270, Abilities.STRONG_JAW, Abilities.NONE, Abilities.ROCK_HEAD, 521, 82, 121, 119, 69, 59, 71, 45, 50, 182, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.AMAURA, 6, false, false, false, "Tundra Pokémon", PokemonType.ROCK, PokemonType.ICE, 1.3, 25.2, Abilities.REFRIGERATE, Abilities.NONE, Abilities.SNOW_WARNING, 362, 77, 59, 50, 67, 63, 46, 45, 50, 72, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.AURORUS, 6, false, false, false, "Tundra Pokémon", PokemonType.ROCK, PokemonType.ICE, 2.7, 225, Abilities.REFRIGERATE, Abilities.NONE, Abilities.SNOW_WARNING, 521, 123, 77, 72, 99, 92, 58, 45, 50, 104, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.SYLVEON, 6, false, false, false, "Intertwining Pokémon", PokemonType.FAIRY, null, 1, 23.5, Abilities.CUTE_CHARM, Abilities.NONE, Abilities.PIXILATE, 525, 95, 65, 65, 110, 130, 60, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.HAWLUCHA, 6, false, false, false, "Wrestling Pokémon", PokemonType.FIGHTING, PokemonType.FLYING, 0.8, 21.5, Abilities.LIMBER, Abilities.UNBURDEN, Abilities.MOLD_BREAKER, 500, 78, 92, 75, 74, 63, 118, 100, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DEDENNE, 6, false, false, false, "Antenna Pokémon", PokemonType.ELECTRIC, PokemonType.FAIRY, 0.2, 2.2, Abilities.CHEEK_POUCH, Abilities.PICKUP, Abilities.PLUS, 431, 67, 58, 57, 81, 67, 101, 180, 50, 151, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CARBINK, 6, false, false, false, "Jewel Pokémon", PokemonType.ROCK, PokemonType.FAIRY, 0.3, 5.7, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.STURDY, 500, 50, 50, 150, 50, 150, 50, 60, 50, 100, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.GOOMY, 6, false, false, false, "Soft Tissue Pokémon", PokemonType.DRAGON, null, 0.3, 2.8, Abilities.SAP_SIPPER, Abilities.HYDRATION, Abilities.GOOEY, 300, 45, 50, 35, 55, 75, 40, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SLIGGOO, 6, false, false, false, "Soft Tissue Pokémon", PokemonType.DRAGON, null, 0.8, 17.5, Abilities.SAP_SIPPER, Abilities.HYDRATION, Abilities.GOOEY, 452, 68, 75, 53, 83, 113, 60, 45, 35, 158, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.GOODRA, 6, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 2, 150.5, Abilities.SAP_SIPPER, Abilities.HYDRATION, Abilities.GOOEY, 600, 90, 100, 70, 110, 150, 80, 45, 35, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.KLEFKI, 6, false, false, false, "Key Ring Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 0.2, 3, Abilities.PRANKSTER, Abilities.NONE, Abilities.MAGICIAN, 470, 57, 80, 91, 80, 87, 75, 75, 50, 165, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.PHANTUMP, 6, false, false, false, "Stump Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.4, 7, Abilities.NATURAL_CURE, Abilities.FRISK, Abilities.HARVEST, 309, 43, 70, 48, 50, 60, 38, 120, 50, 62, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TREVENANT, 6, false, false, false, "Elder Tree Pokémon", PokemonType.GHOST, PokemonType.GRASS, 1.5, 71, Abilities.NATURAL_CURE, Abilities.FRISK, Abilities.HARVEST, 474, 85, 110, 76, 65, 82, 56, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PUMPKABOO, 6, false, false, false, "Pumpkin Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.4, 5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 49, 66, 70, 44, 55, 51, 120, 50, 67, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Average Size", "", PokemonType.GHOST, PokemonType.GRASS, 0.4, 5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 49, 66, 70, 44, 55, 51, 120, 50, 67, false, null, true), - new PokemonForm("Small Size", "small", PokemonType.GHOST, PokemonType.GRASS, 0.3, 3.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 44, 66, 70, 44, 55, 56, 120, 50, 67, false, "", true), - new PokemonForm("Large Size", "large", PokemonType.GHOST, PokemonType.GRASS, 0.5, 7.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 54, 66, 70, 44, 55, 46, 120, 50, 67, false, "", true), - new PokemonForm("Super Size", "super", PokemonType.GHOST, PokemonType.GRASS, 0.8, 15, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 59, 66, 70, 44, 55, 41, 120, 50, 67, false, "", true), - ), - new PokemonSpecies(Species.GOURGEIST, 6, false, false, false, "Pumpkin Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.9, 12.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 65, 90, 122, 58, 75, 84, 60, 50, 173, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Average Size", "", PokemonType.GHOST, PokemonType.GRASS, 0.9, 12.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 65, 90, 122, 58, 75, 84, 60, 50, 173, false, null, true), - new PokemonForm("Small Size", "small", PokemonType.GHOST, PokemonType.GRASS, 0.7, 9.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 55, 85, 122, 58, 75, 99, 60, 50, 173, false, "", true), - new PokemonForm("Large Size", "large", PokemonType.GHOST, PokemonType.GRASS, 1.1, 14, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 75, 95, 122, 58, 75, 69, 60, 50, 173, false, "", true), - new PokemonForm("Super Size", "super", PokemonType.GHOST, PokemonType.GRASS, 1.7, 39, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 85, 100, 122, 58, 75, 54, 60, 50, 173, false, "", true), - ), - new PokemonSpecies(Species.BERGMITE, 6, false, false, false, "Ice Chunk Pokémon", PokemonType.ICE, null, 1, 99.5, Abilities.OWN_TEMPO, Abilities.ICE_BODY, Abilities.STURDY, 304, 55, 69, 85, 32, 35, 28, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.AVALUGG, 6, false, false, false, "Iceberg Pokémon", PokemonType.ICE, null, 2, 505, Abilities.OWN_TEMPO, Abilities.ICE_BODY, Abilities.STURDY, 514, 95, 117, 184, 44, 46, 28, 55, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.NOIBAT, 6, false, false, false, "Sound Wave Pokémon", PokemonType.FLYING, PokemonType.DRAGON, 0.5, 8, Abilities.FRISK, Abilities.INFILTRATOR, Abilities.TELEPATHY, 245, 40, 30, 35, 45, 40, 55, 190, 50, 49, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.NOIVERN, 6, false, false, false, "Sound Wave Pokémon", PokemonType.FLYING, PokemonType.DRAGON, 1.5, 85, Abilities.FRISK, Abilities.INFILTRATOR, Abilities.TELEPATHY, 535, 85, 70, 80, 97, 80, 123, 45, 50, 187, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.XERNEAS, 6, false, true, false, "Life Pokémon", PokemonType.FAIRY, null, 3, 215, Abilities.FAIRY_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, GrowthRate.SLOW, null, false, true, - new PokemonForm("Neutral Mode", "neutral", PokemonType.FAIRY, null, 3, 215, Abilities.FAIRY_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, false, null, true), - new PokemonForm("Active Mode", "active", PokemonType.FAIRY, null, 3, 215, Abilities.FAIRY_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340) - ), - new PokemonSpecies(Species.YVELTAL, 6, false, true, false, "Destruction Pokémon", PokemonType.DARK, PokemonType.FLYING, 5.8, 203, Abilities.DARK_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ZYGARDE, 6, false, true, false, "Order Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, Abilities.AURA_BREAK, Abilities.NONE, Abilities.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("50% Forme", "50", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, Abilities.AURA_BREAK, Abilities.NONE, Abilities.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, false, "", true), - new PokemonForm("10% Forme", "10", PokemonType.DRAGON, PokemonType.GROUND, 1.2, 33.5, Abilities.AURA_BREAK, Abilities.NONE, Abilities.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 243, false, null, true), - new PokemonForm("50% Forme Power Construct", "50-pc", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, false, "", true), - new PokemonForm("10% Forme Power Construct", "10-pc", PokemonType.DRAGON, PokemonType.GROUND, 1.2, 33.5, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 243, false, "10", true), - new PokemonForm("Complete Forme (50% PC)", "complete", PokemonType.DRAGON, PokemonType.GROUND, 4.5, 610, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 354), - new PokemonForm("Complete Forme (10% PC)", "10-complete", PokemonType.DRAGON, PokemonType.GROUND, 4.5, 610, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 354, false, "complete"), - ), - new PokemonSpecies(Species.DIANCIE, 6, false, false, true, "Jewel Pokémon", PokemonType.ROCK, PokemonType.FAIRY, 0.7, 8.8, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FAIRY, 0.7, 8.8, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.FAIRY, 1.1, 27.8, Abilities.MAGIC_BOUNCE, Abilities.NONE, Abilities.NONE, 700, 50, 160, 110, 160, 110, 110, 3, 50, 300), - ), - new PokemonSpecies(Species.HOOPA, 6, false, false, true, "Mischief Pokémon", PokemonType.PSYCHIC, PokemonType.GHOST, 0.5, 9, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("Hoopa Confined", "", PokemonType.PSYCHIC, PokemonType.GHOST, 0.5, 9, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 300, false, null, true), - new PokemonForm("Hoopa Unbound", "unbound", PokemonType.PSYCHIC, PokemonType.DARK, 6.5, 490, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 680, 80, 160, 60, 170, 130, 80, 3, 100, 340), - ), - new PokemonSpecies(Species.VOLCANION, 6, false, false, true, "Steam Pokémon", PokemonType.FIRE, PokemonType.WATER, 1.7, 195, Abilities.WATER_ABSORB, Abilities.NONE, Abilities.NONE, 600, 80, 110, 120, 130, 90, 70, 3, 100, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ROWLET, 7, false, false, false, "Grass Quill Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.3, 1.5, Abilities.OVERGROW, Abilities.NONE, Abilities.LONG_REACH, 320, 68, 55, 55, 50, 50, 42, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.DARTRIX, 7, false, false, false, "Blade Quill Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.7, 16, Abilities.OVERGROW, Abilities.NONE, Abilities.LONG_REACH, 420, 78, 75, 75, 70, 70, 52, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.DECIDUEYE, 7, false, false, false, "Arrow Quill Pokémon", PokemonType.GRASS, PokemonType.GHOST, 1.6, 36.6, Abilities.OVERGROW, Abilities.NONE, Abilities.LONG_REACH, 530, 78, 107, 75, 100, 100, 70, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.LITTEN, 7, false, false, false, "Fire Cat Pokémon", PokemonType.FIRE, null, 0.4, 4.3, Abilities.BLAZE, Abilities.NONE, Abilities.INTIMIDATE, 320, 45, 65, 40, 60, 40, 70, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.TORRACAT, 7, false, false, false, "Fire Cat Pokémon", PokemonType.FIRE, null, 0.7, 25, Abilities.BLAZE, Abilities.NONE, Abilities.INTIMIDATE, 420, 65, 85, 50, 80, 50, 90, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.INCINEROAR, 7, false, false, false, "Heel Pokémon", PokemonType.FIRE, PokemonType.DARK, 1.8, 83, Abilities.BLAZE, Abilities.NONE, Abilities.INTIMIDATE, 530, 95, 115, 90, 80, 90, 60, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.POPPLIO, 7, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, null, 0.4, 7.5, Abilities.TORRENT, Abilities.NONE, Abilities.LIQUID_VOICE, 320, 50, 54, 54, 66, 56, 40, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.BRIONNE, 7, false, false, false, "Pop Star Pokémon", PokemonType.WATER, null, 0.6, 17.5, Abilities.TORRENT, Abilities.NONE, Abilities.LIQUID_VOICE, 420, 60, 69, 69, 91, 81, 50, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.PRIMARINA, 7, false, false, false, "Soloist Pokémon", PokemonType.WATER, PokemonType.FAIRY, 1.8, 44, Abilities.TORRENT, Abilities.NONE, Abilities.LIQUID_VOICE, 530, 80, 74, 74, 126, 116, 60, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.PIKIPEK, 7, false, false, false, "Woodpecker Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.2, Abilities.KEEN_EYE, Abilities.SKILL_LINK, Abilities.PICKUP, 265, 35, 75, 30, 30, 30, 65, 255, 70, 53, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TRUMBEAK, 7, false, false, false, "Bugle Beak Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 14.8, Abilities.KEEN_EYE, Abilities.SKILL_LINK, Abilities.PICKUP, 355, 55, 85, 50, 40, 50, 75, 120, 70, 124, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TOUCANNON, 7, false, false, false, "Cannon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.1, 26, Abilities.KEEN_EYE, Abilities.SKILL_LINK, Abilities.SHEER_FORCE, 485, 80, 120, 75, 75, 75, 60, 45, 70, 243, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.YUNGOOS, 7, false, false, false, "Loitering Pokémon", PokemonType.NORMAL, null, 0.4, 6, Abilities.STAKEOUT, Abilities.STRONG_JAW, Abilities.ADAPTABILITY, 253, 48, 70, 30, 30, 30, 45, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GUMSHOOS, 7, false, false, false, "Stakeout Pokémon", PokemonType.NORMAL, null, 0.7, 14.2, Abilities.STAKEOUT, Abilities.STRONG_JAW, Abilities.ADAPTABILITY, 418, 88, 110, 60, 55, 60, 45, 127, 70, 146, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GRUBBIN, 7, false, false, false, "Larva Pokémon", PokemonType.BUG, null, 0.4, 4.4, Abilities.SWARM, Abilities.NONE, Abilities.NONE, 300, 47, 62, 45, 55, 45, 46, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CHARJABUG, 7, false, false, false, "Battery Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.5, 10.5, Abilities.BATTERY, Abilities.NONE, Abilities.NONE, 400, 57, 82, 95, 55, 75, 36, 120, 50, 140, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.VIKAVOLT, 7, false, false, false, "Stag Beetle Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 1.5, 45, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 500, 77, 70, 90, 145, 75, 43, 45, 50, 250, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CRABRAWLER, 7, false, false, false, "Boxing Pokémon", PokemonType.FIGHTING, null, 0.6, 7, Abilities.HYPER_CUTTER, Abilities.IRON_FIST, Abilities.ANGER_POINT, 338, 47, 82, 57, 42, 47, 63, 225, 70, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CRABOMINABLE, 7, false, false, false, "Woolly Crab Pokémon", PokemonType.FIGHTING, PokemonType.ICE, 1.7, 180, Abilities.HYPER_CUTTER, Abilities.IRON_FIST, Abilities.ANGER_POINT, 478, 97, 132, 77, 62, 67, 43, 60, 70, 167, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ORICORIO, 7, false, false, false, "Dancing Pokémon", PokemonType.FIRE, PokemonType.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, GrowthRate.MEDIUM_FAST, 25, false, false, - new PokemonForm("Baile Style", "baile", PokemonType.FIRE, PokemonType.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, "", true), - new PokemonForm("Pom-Pom Style", "pompom", PokemonType.ELECTRIC, PokemonType.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), - new PokemonForm("Pau Style", "pau", PokemonType.PSYCHIC, PokemonType.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), - new PokemonForm("Sensu Style", "sensu", PokemonType.GHOST, PokemonType.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), - ), - new PokemonSpecies(Species.CUTIEFLY, 7, false, false, false, "Bee Fly Pokémon", PokemonType.BUG, PokemonType.FAIRY, 0.1, 0.2, Abilities.HONEY_GATHER, Abilities.SHIELD_DUST, Abilities.SWEET_VEIL, 304, 40, 45, 40, 55, 40, 84, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RIBOMBEE, 7, false, false, false, "Bee Fly Pokémon", PokemonType.BUG, PokemonType.FAIRY, 0.2, 0.5, Abilities.HONEY_GATHER, Abilities.SHIELD_DUST, Abilities.SWEET_VEIL, 464, 60, 55, 60, 95, 70, 124, 75, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ROCKRUFF, 7, false, false, false, "Puppy Pokémon", PokemonType.ROCK, null, 0.5, 9.2, Abilities.KEEN_EYE, Abilities.VITAL_SPIRIT, Abilities.STEADFAST, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Normal", "", PokemonType.ROCK, null, 0.5, 9.2, Abilities.KEEN_EYE, Abilities.VITAL_SPIRIT, Abilities.STEADFAST, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, false, null, true), - new PokemonForm("Own Tempo", "own-tempo", PokemonType.ROCK, null, 0.5, 9.2, Abilities.OWN_TEMPO, Abilities.NONE, Abilities.OWN_TEMPO, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, false, "", true), - ), - new PokemonSpecies(Species.LYCANROC, 7, false, false, false, "Wolf Pokémon", PokemonType.ROCK, null, 0.8, 25, Abilities.KEEN_EYE, Abilities.SAND_RUSH, Abilities.STEADFAST, 487, 75, 115, 65, 55, 65, 112, 90, 50, 170, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Midday Form", "midday", PokemonType.ROCK, null, 0.8, 25, Abilities.KEEN_EYE, Abilities.SAND_RUSH, Abilities.STEADFAST, 487, 75, 115, 65, 55, 65, 112, 90, 50, 170, false, "", true), - new PokemonForm("Midnight Form", "midnight", PokemonType.ROCK, null, 1.1, 25, Abilities.KEEN_EYE, Abilities.VITAL_SPIRIT, Abilities.NO_GUARD, 487, 85, 115, 75, 55, 75, 82, 90, 50, 170, false, null, true), - new PokemonForm("Dusk Form", "dusk", PokemonType.ROCK, null, 0.8, 25, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, 487, 75, 117, 65, 55, 65, 110, 90, 50, 170, false, null, true), - ), - new PokemonSpecies(Species.WISHIWASHI, 7, false, false, false, "Small Fry Pokémon", PokemonType.WATER, null, 0.2, 0.3, Abilities.SCHOOLING, Abilities.NONE, Abilities.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61, GrowthRate.FAST, 50, false, false, - new PokemonForm("Solo Form", "", PokemonType.WATER, null, 0.2, 0.3, Abilities.SCHOOLING, Abilities.NONE, Abilities.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61, false, null, true), - new PokemonForm("School", "school", PokemonType.WATER, null, 8.2, 78.6, Abilities.SCHOOLING, Abilities.NONE, Abilities.NONE, 620, 45, 140, 130, 140, 135, 30, 60, 50, 217), - ), - new PokemonSpecies(Species.MAREANIE, 7, false, false, false, "Brutal Star Pokémon", PokemonType.POISON, PokemonType.WATER, 0.4, 8, Abilities.MERCILESS, Abilities.LIMBER, Abilities.REGENERATOR, 305, 50, 53, 62, 43, 52, 45, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TOXAPEX, 7, false, false, false, "Brutal Star Pokémon", PokemonType.POISON, PokemonType.WATER, 0.7, 14.5, Abilities.MERCILESS, Abilities.LIMBER, Abilities.REGENERATOR, 495, 50, 63, 152, 53, 142, 35, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MUDBRAY, 7, false, false, false, "Donkey Pokémon", PokemonType.GROUND, null, 1, 110, Abilities.OWN_TEMPO, Abilities.STAMINA, Abilities.INNER_FOCUS, 385, 70, 100, 70, 45, 55, 45, 190, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MUDSDALE, 7, false, false, false, "Draft Horse Pokémon", PokemonType.GROUND, null, 2.5, 920, Abilities.OWN_TEMPO, Abilities.STAMINA, Abilities.INNER_FOCUS, 500, 100, 125, 100, 55, 85, 35, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DEWPIDER, 7, false, false, false, "Water Bubble Pokémon", PokemonType.WATER, PokemonType.BUG, 0.3, 4, Abilities.WATER_BUBBLE, Abilities.NONE, Abilities.WATER_ABSORB, 269, 38, 40, 52, 40, 72, 27, 200, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ARAQUANID, 7, false, false, false, "Water Bubble Pokémon", PokemonType.WATER, PokemonType.BUG, 1.8, 82, Abilities.WATER_BUBBLE, Abilities.NONE, Abilities.WATER_ABSORB, 454, 68, 70, 92, 50, 132, 42, 100, 50, 159, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FOMANTIS, 7, false, false, false, "Sickle Grass Pokémon", PokemonType.GRASS, null, 0.3, 1.5, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.CONTRARY, 250, 40, 55, 35, 50, 35, 35, 190, 50, 50, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LURANTIS, 7, false, false, false, "Bloom Sickle Pokémon", PokemonType.GRASS, null, 0.9, 18.5, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.CONTRARY, 480, 70, 105, 90, 80, 90, 45, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MORELULL, 7, false, false, false, "Illuminating Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.2, 1.5, Abilities.ILLUMINATE, Abilities.EFFECT_SPORE, Abilities.RAIN_DISH, 285, 40, 35, 55, 65, 75, 15, 190, 50, 57, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SHIINOTIC, 7, false, false, false, "Illuminating Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 1, 11.5, Abilities.ILLUMINATE, Abilities.EFFECT_SPORE, Abilities.RAIN_DISH, 405, 60, 45, 80, 90, 100, 30, 75, 50, 142, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SALANDIT, 7, false, false, false, "Toxic Lizard Pokémon", PokemonType.POISON, PokemonType.FIRE, 0.6, 4.8, Abilities.CORROSION, Abilities.NONE, Abilities.OBLIVIOUS, 320, 48, 44, 40, 71, 40, 77, 120, 50, 64, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.SALAZZLE, 7, false, false, false, "Toxic Lizard Pokémon", PokemonType.POISON, PokemonType.FIRE, 1.2, 22.2, Abilities.CORROSION, Abilities.NONE, Abilities.OBLIVIOUS, 480, 68, 64, 60, 111, 60, 117, 45, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.STUFFUL, 7, false, false, false, "Flailing Pokémon", PokemonType.NORMAL, PokemonType.FIGHTING, 0.5, 6.8, Abilities.FLUFFY, Abilities.KLUTZ, Abilities.CUTE_CHARM, 340, 70, 75, 50, 45, 50, 50, 140, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BEWEAR, 7, false, false, false, "Strong Arm Pokémon", PokemonType.NORMAL, PokemonType.FIGHTING, 2.1, 135, Abilities.FLUFFY, Abilities.KLUTZ, Abilities.UNNERVE, 500, 120, 125, 80, 55, 60, 60, 70, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BOUNSWEET, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 0.3, 3.2, Abilities.LEAF_GUARD, Abilities.OBLIVIOUS, Abilities.SWEET_VEIL, 210, 42, 30, 38, 30, 38, 32, 235, 50, 42, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.STEENEE, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 0.7, 8.2, Abilities.LEAF_GUARD, Abilities.OBLIVIOUS, Abilities.SWEET_VEIL, 290, 52, 40, 48, 40, 48, 62, 120, 50, 102, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.TSAREENA, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 1.2, 21.4, Abilities.LEAF_GUARD, Abilities.QUEENLY_MAJESTY, Abilities.SWEET_VEIL, 510, 72, 120, 98, 50, 98, 72, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.COMFEY, 7, false, false, false, "Posy Picker Pokémon", PokemonType.FAIRY, null, 0.1, 0.3, Abilities.FLOWER_VEIL, Abilities.TRIAGE, Abilities.NATURAL_CURE, 485, 51, 52, 90, 82, 110, 100, 60, 50, 170, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.ORANGURU, 7, false, false, false, "Sage Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.5, 76, Abilities.INNER_FOCUS, Abilities.TELEPATHY, Abilities.SYMBIOSIS, 490, 90, 60, 80, 90, 110, 60, 45, 50, 172, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.PASSIMIAN, 7, false, false, false, "Teamwork Pokémon", PokemonType.FIGHTING, null, 2, 82.8, Abilities.RECEIVER, Abilities.NONE, Abilities.DEFIANT, 490, 100, 120, 90, 40, 60, 80, 45, 50, 172, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.WIMPOD, 7, false, false, false, "Turn Tail Pokémon", PokemonType.BUG, PokemonType.WATER, 0.5, 12, Abilities.WIMP_OUT, Abilities.NONE, Abilities.RUN_AWAY, 230, 25, 35, 40, 20, 30, 80, 90, 50, 46, GrowthRate.MEDIUM_FAST, 50, false), //Custom Hidden - new PokemonSpecies(Species.GOLISOPOD, 7, false, false, false, "Hard Scale Pokémon", PokemonType.BUG, PokemonType.WATER, 2, 108, Abilities.EMERGENCY_EXIT, Abilities.NONE, Abilities.ANTICIPATION, 530, 75, 125, 140, 60, 90, 40, 45, 50, 186, GrowthRate.MEDIUM_FAST, 50, false), //Custom Hidden - new PokemonSpecies(Species.SANDYGAST, 7, false, false, false, "Sand Heap Pokémon", PokemonType.GHOST, PokemonType.GROUND, 0.5, 70, Abilities.WATER_COMPACTION, Abilities.NONE, Abilities.SAND_VEIL, 320, 55, 55, 80, 70, 45, 15, 140, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PALOSSAND, 7, false, false, false, "Sand Castle Pokémon", PokemonType.GHOST, PokemonType.GROUND, 1.3, 250, Abilities.WATER_COMPACTION, Abilities.NONE, Abilities.SAND_VEIL, 480, 85, 75, 110, 100, 75, 35, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PYUKUMUKU, 7, false, false, false, "Sea Cucumber Pokémon", PokemonType.WATER, null, 0.3, 1.2, Abilities.INNARDS_OUT, Abilities.NONE, Abilities.UNAWARE, 410, 55, 60, 130, 30, 130, 5, 60, 50, 144, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.TYPE_NULL, 7, true, false, false, "Synthetic Pokémon", PokemonType.NORMAL, null, 1.9, 120.5, Abilities.BATTLE_ARMOR, Abilities.NONE, Abilities.NONE, 534, 95, 95, 95, 95, 95, 59, 3, 0, 107, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SILVALLY, 7, true, false, false, "Synthetic Pokémon", PokemonType.NORMAL, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285, GrowthRate.SLOW, null, false, false, - new PokemonForm("Type: Normal", "normal", PokemonType.NORMAL, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285, false, "", true), - new PokemonForm("Type: Fighting", "fighting", PokemonType.FIGHTING, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Flying", "flying", PokemonType.FLYING, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Poison", "poison", PokemonType.POISON, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Ground", "ground", PokemonType.GROUND, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Rock", "rock", PokemonType.ROCK, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Bug", "bug", PokemonType.BUG, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Ghost", "ghost", PokemonType.GHOST, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Steel", "steel", PokemonType.STEEL, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Fire", "fire", PokemonType.FIRE, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Water", "water", PokemonType.WATER, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Grass", "grass", PokemonType.GRASS, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Electric", "electric", PokemonType.ELECTRIC, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Psychic", "psychic", PokemonType.PSYCHIC, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Ice", "ice", PokemonType.ICE, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Dragon", "dragon", PokemonType.DRAGON, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Dark", "dark", PokemonType.DARK, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Fairy", "fairy", PokemonType.FAIRY, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - ), - new PokemonSpecies(Species.MINIOR, 7, false, false, false, "Meteor Pokémon", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, GrowthRate.MEDIUM_SLOW, null, false, false, - new PokemonForm("Red Meteor Form", "red-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), - new PokemonForm("Orange Meteor Form", "orange-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), - new PokemonForm("Yellow Meteor Form", "yellow-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), - new PokemonForm("Green Meteor Form", "green-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), - new PokemonForm("Blue Meteor Form", "blue-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), - new PokemonForm("Indigo Meteor Form", "indigo-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), - new PokemonForm("Violet Meteor Form", "violet-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), - new PokemonForm("Red Core Form", "red", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Orange Core Form", "orange", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Yellow Core Form", "yellow", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Green Core Form", "green", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Blue Core Form", "blue", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Indigo Core Form", "indigo", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Violet Core Form", "violet", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - ), - new PokemonSpecies(Species.KOMALA, 7, false, false, false, "Drowsing Pokémon", PokemonType.NORMAL, null, 0.4, 19.9, Abilities.COMATOSE, Abilities.NONE, Abilities.NONE, 480, 65, 115, 65, 75, 95, 65, 45, 70, 168, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.TURTONATOR, 7, false, false, false, "Blast Turtle Pokémon", PokemonType.FIRE, PokemonType.DRAGON, 2, 212, Abilities.SHELL_ARMOR, Abilities.NONE, Abilities.NONE, 485, 60, 78, 135, 91, 85, 36, 70, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TOGEDEMARU, 7, false, false, false, "Roly-Poly Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 0.3, 3.3, Abilities.IRON_BARBS, Abilities.LIGHTNING_ROD, Abilities.STURDY, 435, 65, 98, 63, 40, 73, 96, 180, 50, 152, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MIMIKYU, 7, false, false, false, "Disguise Pokémon", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, Abilities.DISGUISE, Abilities.NONE, Abilities.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Disguised Form", "disguised", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, Abilities.DISGUISE, Abilities.NONE, Abilities.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167, false, null, true), - new PokemonForm("Busted Form", "busted", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, Abilities.DISGUISE, Abilities.NONE, Abilities.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167), - ), - new PokemonSpecies(Species.BRUXISH, 7, false, false, false, "Gnash Teeth Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 0.9, 19, Abilities.DAZZLING, Abilities.STRONG_JAW, Abilities.WONDER_SKIN, 475, 68, 105, 70, 70, 70, 92, 80, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DRAMPA, 7, false, false, false, "Placid Pokémon", PokemonType.NORMAL, PokemonType.DRAGON, 3, 185, Abilities.BERSERK, Abilities.SAP_SIPPER, Abilities.CLOUD_NINE, 485, 78, 60, 85, 135, 91, 36, 70, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DHELMISE, 7, false, false, false, "Sea Creeper Pokémon", PokemonType.GHOST, PokemonType.GRASS, 3.9, 210, Abilities.STEELWORKER, Abilities.NONE, Abilities.NONE, 517, 70, 131, 100, 86, 90, 40, 25, 50, 181, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.JANGMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, null, 0.6, 29.7, Abilities.BULLETPROOF, Abilities.SOUNDPROOF, Abilities.OVERCOAT, 300, 45, 55, 65, 45, 45, 45, 45, 50, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HAKAMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, PokemonType.FIGHTING, 1.2, 47, Abilities.BULLETPROOF, Abilities.SOUNDPROOF, Abilities.OVERCOAT, 420, 55, 75, 90, 65, 70, 65, 45, 50, 147, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.KOMMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, PokemonType.FIGHTING, 1.6, 78.2, Abilities.BULLETPROOF, Abilities.SOUNDPROOF, Abilities.OVERCOAT, 600, 75, 110, 125, 100, 105, 85, 45, 50, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.TAPU_KOKO, 7, true, false, false, "Land Spirit Pokémon", PokemonType.ELECTRIC, PokemonType.FAIRY, 1.8, 20.5, Abilities.ELECTRIC_SURGE, Abilities.NONE, Abilities.TELEPATHY, 570, 70, 115, 85, 95, 75, 130, 3, 50, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.TAPU_LELE, 7, true, false, false, "Land Spirit Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.2, 18.6, Abilities.PSYCHIC_SURGE, Abilities.NONE, Abilities.TELEPATHY, 570, 70, 85, 75, 130, 115, 95, 3, 50, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.TAPU_BULU, 7, true, false, false, "Land Spirit Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 1.9, 45.5, Abilities.GRASSY_SURGE, Abilities.NONE, Abilities.TELEPATHY, 570, 70, 130, 115, 85, 95, 75, 3, 50, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.TAPU_FINI, 7, true, false, false, "Land Spirit Pokémon", PokemonType.WATER, PokemonType.FAIRY, 1.3, 21.2, Abilities.MISTY_SURGE, Abilities.NONE, Abilities.TELEPATHY, 570, 70, 75, 115, 95, 130, 85, 3, 50, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.COSMOG, 7, true, false, false, "Nebula Pokémon", PokemonType.PSYCHIC, null, 0.2, 0.1, Abilities.UNAWARE, Abilities.NONE, Abilities.NONE, 200, 43, 29, 31, 29, 31, 37, 45, 0, 40, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.COSMOEM, 7, true, false, false, "Protostar Pokémon", PokemonType.PSYCHIC, null, 0.1, 999.9, Abilities.STURDY, Abilities.NONE, Abilities.NONE, 400, 43, 29, 131, 29, 131, 37, 45, 0, 140, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SOLGALEO, 7, false, true, false, "Sunne Pokémon", PokemonType.PSYCHIC, PokemonType.STEEL, 3.4, 230, Abilities.FULL_METAL_BODY, Abilities.NONE, Abilities.NONE, 680, 137, 137, 107, 113, 89, 97, 45, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.LUNALA, 7, false, true, false, "Moone Pokémon", PokemonType.PSYCHIC, PokemonType.GHOST, 4, 120, Abilities.SHADOW_SHIELD, Abilities.NONE, Abilities.NONE, 680, 137, 113, 89, 137, 107, 97, 45, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.NIHILEGO, 7, true, false, false, "Parasite Pokémon", PokemonType.ROCK, PokemonType.POISON, 1.2, 55.5, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 109, 53, 47, 127, 131, 103, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.BUZZWOLE, 7, true, false, false, "Swollen Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 2.4, 333.6, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 107, 139, 139, 53, 53, 79, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.PHEROMOSA, 7, true, false, false, "Lissome Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 1.8, 25, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 71, 137, 37, 137, 37, 151, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.XURKITREE, 7, true, false, false, "Glowing Pokémon", PokemonType.ELECTRIC, null, 3.8, 100, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 83, 89, 71, 173, 71, 83, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.CELESTEELA, 7, true, false, false, "Launch Pokémon", PokemonType.STEEL, PokemonType.FLYING, 9.2, 999.9, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 97, 101, 103, 107, 101, 61, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.KARTANA, 7, true, false, false, "Drawn Sword Pokémon", PokemonType.GRASS, PokemonType.STEEL, 0.3, 0.1, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 59, 181, 131, 59, 31, 109, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.GUZZLORD, 7, true, false, false, "Junkivore Pokémon", PokemonType.DARK, PokemonType.DRAGON, 5.5, 888, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 223, 101, 53, 97, 53, 43, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.NECROZMA, 7, false, true, false, "Prism Pokémon", PokemonType.PSYCHIC, null, 2.4, 230, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 600, 97, 107, 101, 127, 89, 79, 255, 0, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 2.4, 230, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 600, 97, 107, 101, 127, 89, 79, 255, 0, 300, false, null, true), - new PokemonForm("Dusk Mane", "dusk-mane", PokemonType.PSYCHIC, PokemonType.STEEL, 3.8, 460, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 680, 97, 157, 127, 113, 109, 77, 255, 0, 340), - new PokemonForm("Dawn Wings", "dawn-wings", PokemonType.PSYCHIC, PokemonType.GHOST, 4.2, 350, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 680, 97, 113, 109, 157, 127, 77, 255, 0, 340), - new PokemonForm("Ultra", "ultra", PokemonType.PSYCHIC, PokemonType.DRAGON, 7.5, 230, Abilities.NEUROFORCE, Abilities.NONE, Abilities.NONE, 754, 97, 167, 97, 167, 97, 129, 255, 0, 377), - ), - new PokemonSpecies(Species.MAGEARNA, 7, false, false, true, "Artificial Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, Abilities.SOUL_HEART, Abilities.NONE, Abilities.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, Abilities.SOUL_HEART, Abilities.NONE, Abilities.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, false, null, true), - new PokemonForm("Original", "original", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, Abilities.SOUL_HEART, Abilities.NONE, Abilities.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, false, null, true), - ), - new PokemonSpecies(Species.MARSHADOW, 7, false, false, true, "Gloomdweller Pokémon", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, Abilities.TECHNICIAN, Abilities.NONE, Abilities.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, Abilities.TECHNICIAN, Abilities.NONE, Abilities.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, false, null, true), - new PokemonForm("Zenith", "zenith", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, Abilities.TECHNICIAN, Abilities.NONE, Abilities.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, false, null, false, true) - ), - new PokemonSpecies(Species.POIPOLE, 7, true, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.6, 1.8, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 420, 67, 73, 67, 73, 67, 73, 45, 0, 210, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.NAGANADEL, 7, true, false, false, "Poison Pin Pokémon", PokemonType.POISON, PokemonType.DRAGON, 3.6, 150, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 540, 73, 73, 73, 127, 73, 121, 45, 0, 270, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.STAKATAKA, 7, true, false, false, "Rampart Pokémon", PokemonType.ROCK, PokemonType.STEEL, 5.5, 820, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 61, 131, 211, 53, 101, 13, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.BLACEPHALON, 7, true, false, false, "Fireworks Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.8, 13, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 53, 127, 53, 151, 79, 107, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ZERAORA, 7, false, false, true, "Thunderclap Pokémon", PokemonType.ELECTRIC, null, 1.5, 44.5, Abilities.VOLT_ABSORB, Abilities.NONE, Abilities.NONE, 600, 88, 112, 75, 102, 80, 143, 3, 0, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.MELTAN, 7, false, false, true, "Hex Nut Pokémon", PokemonType.STEEL, null, 0.2, 8, Abilities.MAGNET_PULL, Abilities.NONE, Abilities.NONE, 300, 46, 65, 65, 55, 35, 34, 3, 0, 150, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.MELMETAL, 7, false, false, true, "Hex Nut Pokémon", PokemonType.STEEL, null, 2.5, 800, Abilities.IRON_FIST, Abilities.NONE, Abilities.NONE, 600, 135, 143, 143, 80, 65, 34, 3, 0, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.STEEL, null, 2.5, 800, Abilities.IRON_FIST, Abilities.NONE, Abilities.NONE, 600, 135, 143, 143, 80, 65, 34, 3, 0, 300, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, null, 25, 999.9, Abilities.IRON_FIST, Abilities.NONE, Abilities.NONE, 700, 170, 158, 158, 95, 75, 44, 3, 0, 300), - ), - new PokemonSpecies(Species.GROOKEY, 8, false, false, false, "Chimp Pokémon", PokemonType.GRASS, null, 0.3, 5, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 310, 50, 65, 50, 40, 40, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.THWACKEY, 8, false, false, false, "Beat Pokémon", PokemonType.GRASS, null, 0.7, 14, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 420, 70, 85, 70, 55, 60, 80, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.RILLABOOM, 8, false, false, false, "Drummer Pokémon", PokemonType.GRASS, null, 2.1, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 530, 100, 125, 90, 60, 70, 85, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.GRASS, null, 2.1, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 530, 100, 125, 90, 60, 70, 85, 45, 50, 265, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, null, 28, 999.9, Abilities.GRASSY_SURGE, Abilities.NONE, Abilities.GRASSY_SURGE, 630, 125, 140, 105, 90, 85, 85, 45, 50, 265), - ), - new PokemonSpecies(Species.SCORBUNNY, 8, false, false, false, "Rabbit Pokémon", PokemonType.FIRE, null, 0.3, 4.5, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 310, 50, 71, 40, 40, 40, 69, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.RABOOT, 8, false, false, false, "Rabbit Pokémon", PokemonType.FIRE, null, 0.6, 9, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 420, 65, 86, 60, 55, 60, 94, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.CINDERACE, 8, false, false, false, "Striker Pokémon", PokemonType.FIRE, null, 1.4, 33, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 530, 80, 116, 75, 65, 75, 119, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.FIRE, null, 1.4, 33, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 530, 80, 116, 75, 65, 75, 119, 45, 50, 265, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, null, 27, 999.9, Abilities.LIBERO, Abilities.NONE, Abilities.LIBERO, 630, 100, 141, 80, 95, 80, 134, 45, 50, 265), - ), - new PokemonSpecies(Species.SOBBLE, 8, false, false, false, "Water Lizard Pokémon", PokemonType.WATER, null, 0.3, 4, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 310, 50, 40, 40, 70, 40, 70, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.DRIZZILE, 8, false, false, false, "Water Lizard Pokémon", PokemonType.WATER, null, 0.7, 11.5, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 420, 65, 60, 55, 95, 55, 90, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.INTELEON, 8, false, false, false, "Secret Agent Pokémon", PokemonType.WATER, null, 1.9, 45.2, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 530, 70, 85, 65, 125, 65, 120, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, null, 1.9, 45.2, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 530, 70, 85, 65, 125, 65, 120, 45, 50, 265, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, null, 40, 999.9, Abilities.SNIPER, Abilities.NONE, Abilities.SNIPER, 630, 95, 117, 67, 147, 67, 137, 45, 50, 265), - ), - new PokemonSpecies(Species.SKWOVET, 8, false, false, false, "Cheeky Pokémon", PokemonType.NORMAL, null, 0.3, 2.5, Abilities.CHEEK_POUCH, Abilities.NONE, Abilities.GLUTTONY, 275, 70, 55, 55, 35, 35, 25, 255, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GREEDENT, 8, false, false, false, "Greedy Pokémon", PokemonType.NORMAL, null, 0.6, 6, Abilities.CHEEK_POUCH, Abilities.NONE, Abilities.GLUTTONY, 460, 120, 95, 95, 55, 75, 20, 90, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ROOKIDEE, 8, false, false, false, "Tiny Bird Pokémon", PokemonType.FLYING, null, 0.2, 1.8, Abilities.KEEN_EYE, Abilities.UNNERVE, Abilities.BIG_PECKS, 245, 38, 47, 35, 33, 35, 57, 255, 50, 49, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CORVISQUIRE, 8, false, false, false, "Raven Pokémon", PokemonType.FLYING, null, 0.8, 16, Abilities.KEEN_EYE, Abilities.UNNERVE, Abilities.BIG_PECKS, 365, 68, 67, 55, 43, 55, 77, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CORVIKNIGHT, 8, false, false, false, "Raven Pokémon", PokemonType.FLYING, PokemonType.STEEL, 2.2, 75, Abilities.PRESSURE, Abilities.UNNERVE, Abilities.MIRROR_ARMOR, 495, 98, 87, 105, 53, 85, 67, 45, 50, 248, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.FLYING, PokemonType.STEEL, 2.2, 75, Abilities.PRESSURE, Abilities.UNNERVE, Abilities.MIRROR_ARMOR, 495, 98, 87, 105, 53, 85, 67, 45, 50, 248, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FLYING, PokemonType.STEEL, 14, 999.9, Abilities.MIRROR_ARMOR, Abilities.MIRROR_ARMOR, Abilities.MIRROR_ARMOR, 595, 118, 112, 135, 63, 90, 77, 45, 50, 248), - ), - new PokemonSpecies(Species.BLIPBUG, 8, false, false, false, "Larva Pokémon", PokemonType.BUG, null, 0.4, 8, Abilities.SWARM, Abilities.COMPOUND_EYES, Abilities.TELEPATHY, 180, 25, 20, 20, 25, 45, 45, 255, 50, 36, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DOTTLER, 8, false, false, false, "Radome Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 19.5, Abilities.SWARM, Abilities.COMPOUND_EYES, Abilities.TELEPATHY, 335, 50, 35, 80, 50, 90, 30, 120, 50, 117, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ORBEETLE, 8, false, false, false, "Seven Spot Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 40.8, Abilities.SWARM, Abilities.FRISK, Abilities.TELEPATHY, 505, 60, 45, 110, 80, 120, 90, 45, 50, 253, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 40.8, Abilities.SWARM, Abilities.FRISK, Abilities.TELEPATHY, 505, 60, 45, 110, 80, 120, 90, 45, 50, 253, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.BUG, PokemonType.PSYCHIC, 14, 999.9, Abilities.TRACE, Abilities.TRACE, Abilities.TRACE, 605, 75, 50, 140, 100, 150, 90, 45, 50, 253), - ), - new PokemonSpecies(Species.NICKIT, 8, false, false, false, "Fox Pokémon", PokemonType.DARK, null, 0.6, 8.9, Abilities.RUN_AWAY, Abilities.UNBURDEN, Abilities.STAKEOUT, 245, 40, 28, 28, 47, 52, 50, 255, 50, 49, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.THIEVUL, 8, false, false, false, "Fox Pokémon", PokemonType.DARK, null, 1.2, 19.9, Abilities.RUN_AWAY, Abilities.UNBURDEN, Abilities.STAKEOUT, 455, 70, 58, 58, 87, 92, 90, 127, 50, 159, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.GOSSIFLEUR, 8, false, false, false, "Flowering Pokémon", PokemonType.GRASS, null, 0.4, 2.2, Abilities.COTTON_DOWN, Abilities.REGENERATOR, Abilities.EFFECT_SPORE, 250, 40, 40, 60, 40, 60, 10, 190, 50, 50, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ELDEGOSS, 8, false, false, false, "Cotton Bloom Pokémon", PokemonType.GRASS, null, 0.5, 2.5, Abilities.COTTON_DOWN, Abilities.REGENERATOR, Abilities.EFFECT_SPORE, 460, 60, 50, 90, 80, 120, 60, 75, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WOOLOO, 8, false, false, false, "Sheep Pokémon", PokemonType.NORMAL, null, 0.6, 6, Abilities.FLUFFY, Abilities.RUN_AWAY, Abilities.BULLETPROOF, 270, 42, 40, 55, 40, 45, 48, 255, 50, 122, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DUBWOOL, 8, false, false, false, "Sheep Pokémon", PokemonType.NORMAL, null, 1.3, 43, Abilities.FLUFFY, Abilities.STEADFAST, Abilities.BULLETPROOF, 490, 72, 80, 100, 60, 90, 88, 127, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CHEWTLE, 8, false, false, false, "Snapping Pokémon", PokemonType.WATER, null, 0.3, 8.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 284, 50, 64, 50, 38, 38, 44, 255, 50, 57, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DREDNAW, 8, false, false, false, "Bite Pokémon", PokemonType.WATER, PokemonType.ROCK, 1, 115.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 485, 90, 115, 90, 48, 68, 74, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.ROCK, 1, 115.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 485, 90, 115, 90, 48, 68, 74, 75, 50, 170, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.ROCK, 24, 999.9, Abilities.STRONG_JAW, Abilities.STRONG_JAW, Abilities.STRONG_JAW, 585, 115, 137, 115, 61, 83, 74, 75, 50, 170), - ), - new PokemonSpecies(Species.YAMPER, 8, false, false, false, "Puppy Pokémon", PokemonType.ELECTRIC, null, 0.3, 13.5, Abilities.BALL_FETCH, Abilities.NONE, Abilities.RATTLED, 270, 59, 45, 50, 40, 50, 26, 255, 50, 54, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.BOLTUND, 8, false, false, false, "Dog Pokémon", PokemonType.ELECTRIC, null, 1, 34, Abilities.STRONG_JAW, Abilities.NONE, Abilities.COMPETITIVE, 490, 69, 90, 60, 90, 60, 121, 45, 50, 172, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.ROLYCOLY, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, null, 0.3, 12, Abilities.STEAM_ENGINE, Abilities.HEATPROOF, Abilities.FLASH_FIRE, 240, 30, 40, 50, 40, 50, 30, 255, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CARKOL, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, PokemonType.FIRE, 1.1, 78, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 410, 80, 60, 90, 60, 70, 50, 120, 50, 144, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.COALOSSAL, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, PokemonType.FIRE, 2.8, 310.5, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 510, 110, 80, 120, 80, 90, 30, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FIRE, 2.8, 310.5, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 510, 110, 80, 120, 80, 90, 30, 45, 50, 255, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ROCK, PokemonType.FIRE, 42, 999.9, Abilities.STEAM_ENGINE, Abilities.STEAM_ENGINE, Abilities.STEAM_ENGINE, 610, 140, 100, 132, 95, 100, 43, 45, 50, 255), - ), - new PokemonSpecies(Species.APPLIN, 8, false, false, false, "Apple Core Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.2, 0.5, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.BULLETPROOF, 260, 40, 40, 80, 40, 40, 20, 255, 50, 52, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.FLAPPLE, 8, false, false, false, "Apple Wing Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.3, 1, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.HUSTLE, 485, 70, 110, 80, 95, 60, 70, 45, 50, 170, GrowthRate.ERRATIC, 50, false, true, - new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.DRAGON, 0.3, 1, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.HUSTLE, 485, 70, 110, 80, 95, 60, 70, 45, 50, 170, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.DRAGON, 24, 999.9, Abilities.HUSTLE, Abilities.HUSTLE, Abilities.HUSTLE, 585, 100, 125, 90, 105, 70, 95, 45, 50, 170), - ), - new PokemonSpecies(Species.APPLETUN, 8, false, false, false, "Apple Nectar Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 13, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.THICK_FAT, 485, 110, 85, 80, 100, 80, 30, 45, 50, 170, GrowthRate.ERRATIC, 50, false, true, - new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 13, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.THICK_FAT, 485, 110, 85, 80, 100, 80, 30, 45, 50, 170, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.DRAGON, 24, 999.9, Abilities.THICK_FAT, Abilities.THICK_FAT, Abilities.THICK_FAT, 585, 150, 100, 95, 115, 95, 30, 45, 50, 170), - ), - new PokemonSpecies(Species.SILICOBRA, 8, false, false, false, "Sand Snake Pokémon", PokemonType.GROUND, null, 2.2, 7.6, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 315, 52, 57, 75, 35, 50, 46, 255, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SANDACONDA, 8, false, false, false, "Sand Snake Pokémon", PokemonType.GROUND, null, 3.8, 65.5, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 510, 72, 107, 125, 65, 70, 71, 120, 50, 179, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.GROUND, null, 3.8, 65.5, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 510, 72, 107, 125, 65, 70, 71, 120, 50, 179, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GROUND, null, 22, 999.9, Abilities.SAND_SPIT, Abilities.SAND_SPIT, Abilities.SAND_SPIT, 610, 102, 137, 140, 70, 80, 81, 120, 50, 179), - ), - new PokemonSpecies(Species.CRAMORANT, 8, false, false, false, "Gulp Pokémon", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, Abilities.GULP_MISSILE, Abilities.NONE, Abilities.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Normal", "", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, Abilities.GULP_MISSILE, Abilities.NONE, Abilities.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166, false, null, true), - new PokemonForm("Gulping Form", "gulping", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, Abilities.GULP_MISSILE, Abilities.NONE, Abilities.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166), - new PokemonForm("Gorging Form", "gorging", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, Abilities.GULP_MISSILE, Abilities.NONE, Abilities.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166), - ), - new PokemonSpecies(Species.ARROKUDA, 8, false, false, false, "Rush Pokémon", PokemonType.WATER, null, 0.5, 1, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.PROPELLER_TAIL, 280, 41, 63, 40, 40, 30, 66, 255, 50, 56, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.BARRASKEWDA, 8, false, false, false, "Skewer Pokémon", PokemonType.WATER, null, 1.3, 30, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.PROPELLER_TAIL, 490, 61, 123, 60, 60, 50, 136, 60, 50, 172, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.TOXEL, 8, false, false, false, "Baby Pokémon", PokemonType.ELECTRIC, PokemonType.POISON, 0.4, 11, Abilities.RATTLED, Abilities.STATIC, Abilities.KLUTZ, 242, 40, 38, 35, 54, 35, 40, 75, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.TOXTRICITY, 8, false, false, false, "Punk Pokémon", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, Abilities.PUNK_ROCK, Abilities.PLUS, Abilities.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Amped Form", "amped", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, Abilities.PUNK_ROCK, Abilities.PLUS, Abilities.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, false, "", true), - new PokemonForm("Low-Key Form", "lowkey", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, Abilities.PUNK_ROCK, Abilities.MINUS, Abilities.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, false, "lowkey", true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ELECTRIC, PokemonType.POISON, 24, 999.9, Abilities.PUNK_ROCK, Abilities.PUNK_ROCK, Abilities.PUNK_ROCK, 602, 114, 105, 82, 137, 82, 82, 45, 50, 176), - ), - new PokemonSpecies(Species.SIZZLIPEDE, 8, false, false, false, "Radiator Pokémon", PokemonType.FIRE, PokemonType.BUG, 0.7, 1, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 305, 50, 65, 45, 50, 50, 45, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CENTISKORCH, 8, false, false, false, "Radiator Pokémon", PokemonType.FIRE, PokemonType.BUG, 3, 120, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 525, 100, 115, 65, 90, 90, 65, 75, 50, 184, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.BUG, 3, 120, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 525, 100, 115, 65, 90, 90, 65, 75, 50, 184, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, PokemonType.BUG, 75, 999.9, Abilities.FLASH_FIRE, Abilities.FLASH_FIRE, Abilities.FLASH_FIRE, 625, 130, 125, 75, 94, 100, 101, 75, 50, 184), - ), - new PokemonSpecies(Species.CLOBBOPUS, 8, false, false, false, "Tantrum Pokémon", PokemonType.FIGHTING, null, 0.6, 4, Abilities.LIMBER, Abilities.NONE, Abilities.TECHNICIAN, 310, 50, 68, 60, 50, 50, 32, 180, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GRAPPLOCT, 8, false, false, false, "Jujitsu Pokémon", PokemonType.FIGHTING, null, 1.6, 39, Abilities.LIMBER, Abilities.NONE, Abilities.TECHNICIAN, 480, 80, 118, 90, 70, 80, 42, 45, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SINISTEA, 8, false, false, false, "Black Tea Pokémon", PokemonType.GHOST, null, 0.1, 0.2, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, GrowthRate.MEDIUM_FAST, null, false, false, - new PokemonForm("Phony Form", "phony", PokemonType.GHOST, null, 0.1, 0.2, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true), - new PokemonForm("Antique Form", "antique", PokemonType.GHOST, null, 0.1, 0.2, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true, true), - ), - new PokemonSpecies(Species.POLTEAGEIST, 8, false, false, false, "Black Tea Pokémon", PokemonType.GHOST, null, 0.2, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, GrowthRate.MEDIUM_FAST, null, false, false, - new PokemonForm("Phony Form", "phony", PokemonType.GHOST, null, 0.2, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true), - new PokemonForm("Antique Form", "antique", PokemonType.GHOST, null, 0.2, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true, true), - ), - new PokemonSpecies(Species.HATENNA, 8, false, false, false, "Calm Pokémon", PokemonType.PSYCHIC, null, 0.4, 3.4, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 265, 42, 30, 45, 56, 53, 39, 235, 50, 53, GrowthRate.SLOW, 0, false), - new PokemonSpecies(Species.HATTREM, 8, false, false, false, "Serene Pokémon", PokemonType.PSYCHIC, null, 0.6, 4.8, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 370, 57, 40, 65, 86, 73, 49, 120, 50, 130, GrowthRate.SLOW, 0, false), - new PokemonSpecies(Species.HATTERENE, 8, false, false, false, "Silent Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 2.1, 5.1, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 510, 57, 90, 95, 136, 103, 29, 45, 50, 255, GrowthRate.SLOW, 0, false, true, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FAIRY, 2.1, 5.1, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 510, 57, 90, 95, 136, 103, 29, 45, 50, 255, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.PSYCHIC, PokemonType.FAIRY, 26, 999.9, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, 610, 87, 100, 110, 146, 118, 49, 45, 50, 255), - ), - new PokemonSpecies(Species.IMPIDIMP, 8, false, false, false, "Wily Pokémon", PokemonType.DARK, PokemonType.FAIRY, 0.4, 5.5, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 265, 45, 45, 30, 55, 40, 50, 255, 50, 53, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.MORGREM, 8, false, false, false, "Devious Pokémon", PokemonType.DARK, PokemonType.FAIRY, 0.8, 12.5, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 370, 65, 60, 45, 75, 55, 70, 120, 50, 130, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.GRIMMSNARL, 8, false, false, false, "Bulk Up Pokémon", PokemonType.DARK, PokemonType.FAIRY, 1.5, 61, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 510, 95, 120, 65, 95, 75, 60, 45, 50, 255, GrowthRate.MEDIUM_FAST, 100, false, true, - new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.FAIRY, 1.5, 61, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 510, 95, 120, 65, 95, 75, 60, 45, 50, 255, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.DARK, PokemonType.FAIRY, 32, 999.9, Abilities.PRANKSTER, Abilities.PRANKSTER, Abilities.PRANKSTER, 610, 130, 138, 75, 110, 92, 65, 45, 50, 255), - ), - new PokemonSpecies(Species.OBSTAGOON, 8, false, false, false, "Blocking Pokémon", PokemonType.DARK, PokemonType.NORMAL, 1.6, 46, Abilities.RECKLESS, Abilities.GUTS, Abilities.DEFIANT, 520, 93, 90, 101, 60, 81, 95, 45, 50, 260, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PERRSERKER, 8, false, false, false, "Viking Pokémon", PokemonType.STEEL, null, 0.8, 28, Abilities.BATTLE_ARMOR, Abilities.TOUGH_CLAWS, Abilities.STEELY_SPIRIT, 440, 70, 110, 100, 50, 60, 50, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CURSOLA, 8, false, false, false, "Coral Pokémon", PokemonType.GHOST, null, 1, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.PERISH_BODY, 510, 60, 95, 50, 145, 130, 30, 30, 50, 179, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.SIRFETCHD, 8, false, false, false, "Wild Duck Pokémon", PokemonType.FIGHTING, null, 0.8, 117, Abilities.STEADFAST, Abilities.NONE, Abilities.SCRAPPY, 507, 62, 135, 95, 68, 82, 65, 45, 50, 177, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MR_RIME, 8, false, false, false, "Comedian Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.5, 58.2, Abilities.TANGLED_FEET, Abilities.SCREEN_CLEANER, Abilities.ICE_BODY, 520, 80, 85, 75, 110, 100, 70, 45, 50, 182, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RUNERIGUS, 8, false, false, false, "Grudge Pokémon", PokemonType.GROUND, PokemonType.GHOST, 1.6, 66.6, Abilities.WANDERING_SPIRIT, Abilities.NONE, Abilities.NONE, 483, 58, 95, 145, 50, 105, 30, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MILCERY, 8, false, false, false, "Cream Pokémon", PokemonType.FAIRY, null, 0.2, 0.3, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 270, 45, 40, 40, 50, 61, 34, 200, 50, 54, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.ALCREMIE, 8, false, false, false, "Cream Pokémon", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, GrowthRate.MEDIUM_FAST, 0, false, true, - new PokemonForm("Vanilla Cream", "vanilla-cream", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, "", true), - new PokemonForm("Ruby Cream", "ruby-cream", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Matcha Cream", "matcha-cream", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Mint Cream", "mint-cream", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Lemon Cream", "lemon-cream", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Salted Cream", "salted-cream", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Ruby Swirl", "ruby-swirl", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Caramel Swirl", "caramel-swirl", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Rainbow Swirl", "rainbow-swirl", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FAIRY, null, 30, 999.9, Abilities.MISTY_SURGE, Abilities.NONE, Abilities.MISTY_SURGE, 595, 105, 70, 85, 130, 141, 64, 100, 50, 173), - ), - new PokemonSpecies(Species.FALINKS, 8, false, false, false, "Formation Pokémon", PokemonType.FIGHTING, null, 3, 62, Abilities.BATTLE_ARMOR, Abilities.NONE, Abilities.DEFIANT, 470, 65, 100, 100, 70, 60, 75, 45, 50, 165, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.PINCURCHIN, 8, false, false, false, "Sea Urchin Pokémon", PokemonType.ELECTRIC, null, 0.3, 1, Abilities.LIGHTNING_ROD, Abilities.NONE, Abilities.ELECTRIC_SURGE, 435, 48, 101, 95, 91, 85, 15, 75, 50, 152, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SNOM, 8, false, false, false, "Worm Pokémon", PokemonType.ICE, PokemonType.BUG, 0.3, 3.8, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.ICE_SCALES, 185, 30, 25, 35, 45, 30, 20, 190, 50, 37, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FROSMOTH, 8, false, false, false, "Frost Moth Pokémon", PokemonType.ICE, PokemonType.BUG, 1.3, 42, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.ICE_SCALES, 475, 70, 65, 60, 125, 90, 65, 75, 50, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.STONJOURNER, 8, false, false, false, "Big Rock Pokémon", PokemonType.ROCK, null, 2.5, 520, Abilities.POWER_SPOT, Abilities.NONE, Abilities.NONE, 470, 100, 125, 135, 20, 20, 70, 60, 50, 165, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.EISCUE, 8, false, false, false, "Penguin Pokémon", PokemonType.ICE, null, 1.4, 89, Abilities.ICE_FACE, Abilities.NONE, Abilities.NONE, 470, 75, 80, 110, 65, 90, 50, 60, 50, 165, GrowthRate.SLOW, 50, false, false, - new PokemonForm("Ice Face", "", PokemonType.ICE, null, 1.4, 89, Abilities.ICE_FACE, Abilities.NONE, Abilities.NONE, 470, 75, 80, 110, 65, 90, 50, 60, 50, 165, false, null, true), - new PokemonForm("No Ice", "no-ice", PokemonType.ICE, null, 1.4, 89, Abilities.ICE_FACE, Abilities.NONE, Abilities.NONE, 470, 75, 80, 70, 65, 50, 130, 60, 50, 165), - ), - new PokemonSpecies(Species.INDEEDEE, 8, false, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, Abilities.INNER_FOCUS, Abilities.SYNCHRONIZE, Abilities.PSYCHIC_SURGE, 475, 60, 65, 55, 105, 95, 95, 30, 140, 166, GrowthRate.FAST, 50, false, false, - new PokemonForm("Male", "male", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, Abilities.INNER_FOCUS, Abilities.SYNCHRONIZE, Abilities.PSYCHIC_SURGE, 475, 60, 65, 55, 105, 95, 95, 30, 140, 166, false, "", true), - new PokemonForm("Female", "female", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, Abilities.OWN_TEMPO, Abilities.SYNCHRONIZE, Abilities.PSYCHIC_SURGE, 475, 70, 55, 65, 95, 105, 85, 30, 140, 166, false, null, true), - ), - new PokemonSpecies(Species.MORPEKO, 8, false, false, false, "Two-Sided Pokémon", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, Abilities.HUNGER_SWITCH, Abilities.NONE, Abilities.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Full Belly Mode", "full-belly", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, Abilities.HUNGER_SWITCH, Abilities.NONE, Abilities.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153, false, "", true), - new PokemonForm("Hangry Mode", "hangry", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, Abilities.HUNGER_SWITCH, Abilities.NONE, Abilities.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153), - ), - new PokemonSpecies(Species.CUFANT, 8, false, false, false, "Copperderm Pokémon", PokemonType.STEEL, null, 1.2, 100, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 330, 72, 80, 49, 40, 49, 40, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.COPPERAJAH, 8, false, false, false, "Copperderm Pokémon", PokemonType.STEEL, null, 3, 650, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 500, 122, 130, 69, 80, 69, 30, 90, 50, 175, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.STEEL, null, 3, 650, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 500, 122, 130, 69, 80, 69, 30, 90, 50, 175, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, PokemonType.GROUND, 23, 999.9, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.MOLD_BREAKER, 600, 177, 155, 79, 90, 79, 20, 90, 50, 175), - ), - new PokemonSpecies(Species.DRACOZOLT, 8, false, false, false, "Fossil Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 1.8, 190, Abilities.VOLT_ABSORB, Abilities.HUSTLE, Abilities.SAND_RUSH, 505, 90, 100, 90, 80, 70, 75, 45, 50, 177, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ARCTOZOLT, 8, false, false, false, "Fossil Pokémon", PokemonType.ELECTRIC, PokemonType.ICE, 2.3, 150, Abilities.VOLT_ABSORB, Abilities.STATIC, Abilities.SLUSH_RUSH, 505, 90, 100, 90, 90, 80, 55, 45, 50, 177, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.DRACOVISH, 8, false, false, false, "Fossil Pokémon", PokemonType.WATER, PokemonType.DRAGON, 2.3, 215, Abilities.WATER_ABSORB, Abilities.STRONG_JAW, Abilities.SAND_RUSH, 505, 90, 90, 100, 70, 80, 75, 45, 50, 177, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ARCTOVISH, 8, false, false, false, "Fossil Pokémon", PokemonType.WATER, PokemonType.ICE, 2, 175, Abilities.WATER_ABSORB, Abilities.ICE_BODY, Abilities.SLUSH_RUSH, 505, 90, 90, 100, 80, 90, 55, 45, 50, 177, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.DURALUDON, 8, false, false, false, "Alloy Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 1.8, 40, Abilities.LIGHT_METAL, Abilities.HEAVY_METAL, Abilities.STALWART, 535, 70, 95, 115, 120, 50, 85, 45, 50, 187, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.DRAGON, 1.8, 40, Abilities.LIGHT_METAL, Abilities.HEAVY_METAL, Abilities.STALWART, 535, 70, 95, 115, 120, 50, 85, 45, 50, 187, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, PokemonType.DRAGON, 43, 999.9, Abilities.LIGHTNING_ROD, Abilities.LIGHTNING_ROD, Abilities.LIGHTNING_ROD, 635, 100, 110, 120, 175, 60, 70, 45, 50, 187), - ), - new PokemonSpecies(Species.DREEPY, 8, false, false, false, "Lingering Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 0.5, 2, Abilities.CLEAR_BODY, Abilities.INFILTRATOR, Abilities.CURSED_BODY, 270, 28, 60, 30, 40, 30, 82, 45, 50, 54, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.DRAKLOAK, 8, false, false, false, "Caretaker Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 1.4, 11, Abilities.CLEAR_BODY, Abilities.INFILTRATOR, Abilities.CURSED_BODY, 410, 68, 80, 50, 60, 50, 102, 45, 50, 144, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.DRAGAPULT, 8, false, false, false, "Stealth Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 3, 50, Abilities.CLEAR_BODY, Abilities.INFILTRATOR, Abilities.CURSED_BODY, 600, 88, 120, 75, 100, 75, 142, 45, 50, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.ZACIAN, 8, false, true, false, "Warrior Pokémon", PokemonType.FAIRY, null, 2.8, 110, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, GrowthRate.SLOW, null, false, false, - new PokemonForm("Hero of Many Battles", "hero-of-many-battles", PokemonType.FAIRY, null, 2.8, 110, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, "", true), - new PokemonForm("Crowned", "crowned", PokemonType.FAIRY, PokemonType.STEEL, 2.8, 355, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 700, 92, 150, 115, 80, 115, 148, 10, 0, 360), - ), - new PokemonSpecies(Species.ZAMAZENTA, 8, false, true, false, "Warrior Pokémon", PokemonType.FIGHTING, null, 2.9, 210, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, GrowthRate.SLOW, null, false, false, - new PokemonForm("Hero of Many Battles", "hero-of-many-battles", PokemonType.FIGHTING, null, 2.9, 210, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, "", true), - new PokemonForm("Crowned", "crowned", PokemonType.FIGHTING, PokemonType.STEEL, 2.9, 785, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 700, 92, 120, 140, 80, 140, 128, 10, 0, 360), - ), - new PokemonSpecies(Species.ETERNATUS, 8, false, true, false, "Gigantic Pokémon", PokemonType.POISON, PokemonType.DRAGON, 20, 950, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.POISON, PokemonType.DRAGON, 20, 950, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, false, null, true), - new PokemonForm("E-Max", "eternamax", PokemonType.POISON, PokemonType.DRAGON, 100, 999.9, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 1125, 255, 115, 250, 125, 250, 130, 255, 0, 345), - ), - new PokemonSpecies(Species.KUBFU, 8, true, false, false, "Wushu Pokémon", PokemonType.FIGHTING, null, 0.6, 12, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.NONE, 385, 60, 90, 60, 53, 50, 72, 3, 50, 77, GrowthRate.SLOW, 87.5, false), - new PokemonSpecies(Species.URSHIFU, 8, true, false, false, "Wushu Pokémon", PokemonType.FIGHTING, PokemonType.DARK, 1.9, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, GrowthRate.SLOW, 87.5, false, true, - new PokemonForm("Single Strike Style", "single-strike", PokemonType.FIGHTING, PokemonType.DARK, 1.9, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, false, "", true), - new PokemonForm("Rapid Strike Style", "rapid-strike", PokemonType.FIGHTING, PokemonType.WATER, 1.9, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, false, null, true), - new PokemonForm("G-Max Single Strike Style", SpeciesFormKey.GIGANTAMAX_SINGLE, PokemonType.FIGHTING, PokemonType.DARK, 29, 999.9, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 650, 125, 145, 115, 83, 70, 112, 3, 50, 275), - new PokemonForm("G-Max Rapid Strike Style", SpeciesFormKey.GIGANTAMAX_RAPID, PokemonType.FIGHTING, PokemonType.WATER, 26, 999.9, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 650, 125, 145, 115, 83, 70, 112, 3, 50, 275), - ), - new PokemonSpecies(Species.ZARUDE, 8, false, false, true, "Rogue Monkey Pokémon", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, false, null, true), - new PokemonForm("Dada", "dada", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, false, null, true), - ), - new PokemonSpecies(Species.REGIELEKI, 8, true, false, false, "Electron Pokémon", PokemonType.ELECTRIC, null, 1.2, 145, Abilities.TRANSISTOR, Abilities.NONE, Abilities.NONE, 580, 80, 100, 50, 100, 50, 200, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.REGIDRAGO, 8, true, false, false, "Dragon Orb Pokémon", PokemonType.DRAGON, null, 2.1, 200, Abilities.DRAGONS_MAW, Abilities.NONE, Abilities.NONE, 580, 200, 100, 50, 100, 50, 80, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.GLASTRIER, 8, true, false, false, "Wild Horse Pokémon", PokemonType.ICE, null, 2.2, 800, Abilities.CHILLING_NEIGH, Abilities.NONE, Abilities.NONE, 580, 100, 145, 130, 65, 110, 30, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SPECTRIER, 8, true, false, false, "Swift Horse Pokémon", PokemonType.GHOST, null, 2, 44.5, Abilities.GRIM_NEIGH, Abilities.NONE, Abilities.NONE, 580, 100, 65, 60, 145, 80, 130, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.CALYREX, 8, false, true, false, "King Pokémon", PokemonType.PSYCHIC, PokemonType.GRASS, 1.1, 7.7, Abilities.UNNERVE, Abilities.NONE, Abilities.NONE, 500, 100, 80, 80, 80, 80, 80, 3, 100, 250, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.GRASS, 1.1, 7.7, Abilities.UNNERVE, Abilities.NONE, Abilities.NONE, 500, 100, 80, 80, 80, 80, 80, 3, 100, 250, false, null, true), - new PokemonForm("Ice", "ice", PokemonType.PSYCHIC, PokemonType.ICE, 2.4, 809.1, Abilities.AS_ONE_GLASTRIER, Abilities.NONE, Abilities.NONE, 680, 100, 165, 150, 85, 130, 50, 3, 100, 340), - new PokemonForm("Shadow", "shadow", PokemonType.PSYCHIC, PokemonType.GHOST, 2.4, 53.6, Abilities.AS_ONE_SPECTRIER, Abilities.NONE, Abilities.NONE, 680, 100, 85, 80, 165, 100, 150, 3, 100, 340), - ), - new PokemonSpecies(Species.WYRDEER, 8, false, false, false, "Big Horn Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.8, 95.1, Abilities.INTIMIDATE, Abilities.FRISK, Abilities.SAP_SIPPER, 525, 103, 105, 72, 105, 75, 65, 135, 50, 263, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.KLEAVOR, 8, false, false, false, "Axe Pokémon", PokemonType.BUG, PokemonType.ROCK, 1.8, 89, Abilities.SWARM, Abilities.SHEER_FORCE, Abilities.SHARPNESS, 500, 70, 135, 95, 45, 70, 85, 115, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.URSALUNA, 8, false, false, false, "Peat Pokémon", PokemonType.GROUND, PokemonType.NORMAL, 2.4, 290, Abilities.GUTS, Abilities.BULLETPROOF, Abilities.UNNERVE, 550, 130, 140, 105, 45, 80, 50, 75, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BASCULEGION, 8, false, false, false, "Big Fish Pokémon", PokemonType.WATER, PokemonType.GHOST, 3, 110, Abilities.SWIFT_SWIM, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 135, 50, 265, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Male", "male", PokemonType.WATER, PokemonType.GHOST, 3, 110, Abilities.SWIFT_SWIM, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 135, 50, 265, false, "", true), - new PokemonForm("Female", "female", PokemonType.WATER, PokemonType.GHOST, 3, 110, Abilities.SWIFT_SWIM, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 530, 120, 92, 65, 100, 75, 78, 135, 50, 265, false, null, true), - ), - new PokemonSpecies(Species.SNEASLER, 8, false, false, false, "Free Climb Pokémon", PokemonType.FIGHTING, PokemonType.POISON, 1.3, 43, Abilities.PRESSURE, Abilities.UNBURDEN, Abilities.POISON_TOUCH, 510, 80, 130, 60, 40, 80, 120, 135, 50, 102, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.OVERQWIL, 8, false, false, false, "Pin Cluster Pokémon", PokemonType.DARK, PokemonType.POISON, 2.5, 60.5, Abilities.POISON_POINT, Abilities.SWIFT_SWIM, Abilities.INTIMIDATE, 510, 85, 115, 95, 65, 65, 85, 135, 50, 179, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ENAMORUS, 8, true, false, false, "Love-Hate Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, Abilities.CUTE_CHARM, Abilities.NONE, Abilities.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116, GrowthRate.SLOW, 0, false, true, - new PokemonForm("Incarnate Forme", "incarnate", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, Abilities.CUTE_CHARM, Abilities.NONE, Abilities.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116, false, null, true), - new PokemonForm("Therian Forme", "therian", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, Abilities.OVERCOAT, Abilities.NONE, Abilities.OVERCOAT, 580, 74, 115, 110, 135, 100, 46, 3, 50, 116), - ), - new PokemonSpecies(Species.SPRIGATITO, 9, false, false, false, "Grass Cat Pokémon", PokemonType.GRASS, null, 0.4, 4.1, Abilities.OVERGROW, Abilities.NONE, Abilities.PROTEAN, 310, 40, 61, 54, 45, 45, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.FLORAGATO, 9, false, false, false, "Grass Cat Pokémon", PokemonType.GRASS, null, 0.9, 12.2, Abilities.OVERGROW, Abilities.NONE, Abilities.PROTEAN, 410, 61, 80, 63, 60, 63, 83, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.MEOWSCARADA, 9, false, false, false, "Magician Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.5, 31.2, Abilities.OVERGROW, Abilities.NONE, Abilities.PROTEAN, 530, 76, 110, 70, 81, 70, 123, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.FUECOCO, 9, false, false, false, "Fire Croc Pokémon", PokemonType.FIRE, null, 0.4, 9.8, Abilities.BLAZE, Abilities.NONE, Abilities.UNAWARE, 310, 67, 45, 59, 63, 40, 36, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.CROCALOR, 9, false, false, false, "Fire Croc Pokémon", PokemonType.FIRE, null, 1, 30.7, Abilities.BLAZE, Abilities.NONE, Abilities.UNAWARE, 411, 81, 55, 78, 90, 58, 49, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.SKELEDIRGE, 9, false, false, false, "Singer Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 326.5, Abilities.BLAZE, Abilities.NONE, Abilities.UNAWARE, 530, 104, 75, 100, 110, 75, 66, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.QUAXLY, 9, false, false, false, "Duckling Pokémon", PokemonType.WATER, null, 0.5, 6.1, Abilities.TORRENT, Abilities.NONE, Abilities.MOXIE, 310, 55, 65, 45, 50, 45, 50, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.QUAXWELL, 9, false, false, false, "Practicing Pokémon", PokemonType.WATER, null, 1.2, 21.5, Abilities.TORRENT, Abilities.NONE, Abilities.MOXIE, 410, 70, 85, 65, 65, 60, 65, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.QUAQUAVAL, 9, false, false, false, "Dancer Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.8, 61.9, Abilities.TORRENT, Abilities.NONE, Abilities.MOXIE, 530, 85, 120, 80, 85, 75, 85, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.LECHONK, 9, false, false, false, "Hog Pokémon", PokemonType.NORMAL, null, 0.5, 10.2, Abilities.AROMA_VEIL, Abilities.GLUTTONY, Abilities.THICK_FAT, 254, 54, 45, 40, 35, 45, 35, 255, 50, 51, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.OINKOLOGNE, 9, false, false, false, "Hog Pokémon", PokemonType.NORMAL, null, 1, 120, Abilities.LINGERING_AROMA, Abilities.GLUTTONY, Abilities.THICK_FAT, 489, 110, 100, 75, 59, 80, 65, 100, 50, 171, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Male", "male", PokemonType.NORMAL, null, 1, 120, Abilities.LINGERING_AROMA, Abilities.GLUTTONY, Abilities.THICK_FAT, 489, 110, 100, 75, 59, 80, 65, 100, 50, 171, false, "", true), - new PokemonForm("Female", "female", PokemonType.NORMAL, null, 1, 120, Abilities.AROMA_VEIL, Abilities.GLUTTONY, Abilities.THICK_FAT, 489, 115, 90, 70, 59, 90, 65, 100, 50, 171, false, null, true), - ), - new PokemonSpecies(Species.TAROUNTULA, 9, false, false, false, "String Ball Pokémon", PokemonType.BUG, null, 0.3, 4, Abilities.INSOMNIA, Abilities.NONE, Abilities.STAKEOUT, 210, 35, 41, 45, 29, 40, 20, 255, 50, 42, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.SPIDOPS, 9, false, false, false, "Trap Pokémon", PokemonType.BUG, null, 1, 16.5, Abilities.INSOMNIA, Abilities.NONE, Abilities.STAKEOUT, 404, 60, 79, 92, 52, 86, 35, 120, 50, 141, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.NYMBLE, 9, false, false, false, "Grasshopper Pokémon", PokemonType.BUG, null, 0.2, 1, Abilities.SWARM, Abilities.NONE, Abilities.TINTED_LENS, 210, 33, 46, 40, 21, 25, 45, 190, 20, 42, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LOKIX, 9, false, false, false, "Grasshopper Pokémon", PokemonType.BUG, PokemonType.DARK, 1, 17.5, Abilities.SWARM, Abilities.NONE, Abilities.TINTED_LENS, 450, 71, 102, 78, 52, 55, 92, 30, 0, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PAWMI, 9, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.3, 2.5, Abilities.STATIC, Abilities.NATURAL_CURE, Abilities.IRON_FIST, 240, 45, 50, 20, 40, 25, 60, 190, 50, 48, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PAWMO, 9, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, PokemonType.FIGHTING, 0.4, 6.5, Abilities.VOLT_ABSORB, Abilities.NATURAL_CURE, Abilities.IRON_FIST, 350, 60, 75, 40, 50, 40, 85, 80, 50, 123, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PAWMOT, 9, false, false, false, "Hands-On Pokémon", PokemonType.ELECTRIC, PokemonType.FIGHTING, 0.9, 41, Abilities.VOLT_ABSORB, Abilities.NATURAL_CURE, Abilities.IRON_FIST, 490, 70, 115, 70, 70, 60, 105, 45, 50, 245, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TANDEMAUS, 9, false, false, false, "Couple Pokémon", PokemonType.NORMAL, null, 0.3, 1.8, Abilities.RUN_AWAY, Abilities.PICKUP, Abilities.OWN_TEMPO, 305, 50, 50, 45, 40, 45, 75, 150, 50, 61, GrowthRate.FAST, null, false), - new PokemonSpecies(Species.MAUSHOLD, 9, false, false, false, "Family Pokémon", PokemonType.NORMAL, null, 0.3, 2.3, Abilities.FRIEND_GUARD, Abilities.CHEEK_POUCH, Abilities.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165, GrowthRate.FAST, null, false, false, - new PokemonForm("Family of Four", "four", PokemonType.NORMAL, null, 0.3, 2.8, Abilities.FRIEND_GUARD, Abilities.CHEEK_POUCH, Abilities.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165), - new PokemonForm("Family of Three", "three", PokemonType.NORMAL, null, 0.3, 2.3, Abilities.FRIEND_GUARD, Abilities.CHEEK_POUCH, Abilities.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165), - ), - new PokemonSpecies(Species.FIDOUGH, 9, false, false, false, "Puppy Pokémon", PokemonType.FAIRY, null, 0.3, 10.9, Abilities.OWN_TEMPO, Abilities.NONE, Abilities.KLUTZ, 312, 37, 55, 70, 30, 55, 65, 190, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.DACHSBUN, 9, false, false, false, "Dog Pokémon", PokemonType.FAIRY, null, 0.5, 14.9, Abilities.WELL_BAKED_BODY, Abilities.NONE, Abilities.AROMA_VEIL, 477, 57, 80, 115, 50, 80, 95, 90, 50, 167, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SMOLIV, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 0.3, 6.5, Abilities.EARLY_BIRD, Abilities.NONE, Abilities.HARVEST, 260, 41, 35, 45, 58, 51, 30, 255, 50, 52, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.DOLLIV, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 0.6, 11.9, Abilities.EARLY_BIRD, Abilities.NONE, Abilities.HARVEST, 354, 52, 53, 60, 78, 78, 33, 120, 50, 124, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ARBOLIVA, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 1.4, 48.2, Abilities.SEED_SOWER, Abilities.NONE, Abilities.HARVEST, 510, 78, 69, 90, 125, 109, 39, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SQUAWKABILLY, 9, false, false, false, "Parrot Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, GrowthRate.ERRATIC, 50, false, false, - new PokemonForm("Green Plumage", "green-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), - new PokemonForm("Blue Plumage", "blue-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), - new PokemonForm("Yellow Plumage", "yellow-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.SHEER_FORCE, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), - new PokemonForm("White Plumage", "white-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.SHEER_FORCE, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), - ), - new PokemonSpecies(Species.NACLI, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 0.4, 16, Abilities.PURIFYING_SALT, Abilities.STURDY, Abilities.CLEAR_BODY, 280, 55, 55, 75, 35, 35, 25, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.NACLSTACK, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 0.6, 105, Abilities.PURIFYING_SALT, Abilities.STURDY, Abilities.CLEAR_BODY, 355, 60, 60, 100, 35, 65, 35, 120, 50, 124, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GARGANACL, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 2.3, 240, Abilities.PURIFYING_SALT, Abilities.STURDY, Abilities.CLEAR_BODY, 500, 100, 100, 130, 45, 90, 35, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CHARCADET, 9, false, false, false, "Fire Child Pokémon", PokemonType.FIRE, null, 0.6, 10.5, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.FLAME_BODY, 255, 40, 50, 40, 50, 40, 35, 90, 50, 51, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.ARMAROUGE, 9, false, false, false, "Fire Warrior Pokémon", PokemonType.FIRE, PokemonType.PSYCHIC, 1.5, 85, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.WEAK_ARMOR, 525, 85, 60, 100, 125, 80, 75, 25, 20, 263, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.CERULEDGE, 9, false, false, false, "Fire Blades Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 62, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.WEAK_ARMOR, 525, 75, 125, 80, 60, 100, 85, 25, 20, 263, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.TADBULB, 9, false, false, false, "EleTadpole Pokémon", PokemonType.ELECTRIC, null, 0.3, 0.4, Abilities.OWN_TEMPO, Abilities.STATIC, Abilities.DAMP, 272, 61, 31, 41, 59, 35, 45, 190, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BELLIBOLT, 9, false, false, false, "EleFrog Pokémon", PokemonType.ELECTRIC, null, 1.2, 113, Abilities.ELECTROMORPHOSIS, Abilities.STATIC, Abilities.DAMP, 495, 109, 64, 91, 103, 83, 45, 50, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WATTREL, 9, false, false, false, "Storm Petrel Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 0.4, 3.6, Abilities.WIND_POWER, Abilities.VOLT_ABSORB, Abilities.COMPETITIVE, 280, 40, 40, 35, 55, 40, 70, 180, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.KILOWATTREL, 9, false, false, false, "Frigatebird Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.4, 38.6, Abilities.WIND_POWER, Abilities.VOLT_ABSORB, Abilities.COMPETITIVE, 490, 70, 70, 60, 105, 60, 125, 90, 50, 172, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.MASCHIFF, 9, false, false, false, "Rascal Pokémon", PokemonType.DARK, null, 0.5, 16, Abilities.INTIMIDATE, Abilities.RUN_AWAY, Abilities.STAKEOUT, 340, 60, 78, 60, 40, 51, 51, 150, 50, 68, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.MABOSSTIFF, 9, false, false, false, "Boss Pokémon", PokemonType.DARK, null, 1.1, 61, Abilities.INTIMIDATE, Abilities.GUARD_DOG, Abilities.STAKEOUT, 505, 80, 120, 90, 60, 70, 85, 75, 50, 177, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SHROODLE, 9, false, false, false, "Toxic Mouse Pokémon", PokemonType.POISON, PokemonType.NORMAL, 0.2, 0.7, Abilities.UNBURDEN, Abilities.PICKPOCKET, Abilities.PRANKSTER, 290, 40, 65, 35, 40, 35, 75, 190, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GRAFAIAI, 9, false, false, false, "Toxic Monkey Pokémon", PokemonType.POISON, PokemonType.NORMAL, 0.7, 27.2, Abilities.UNBURDEN, Abilities.POISON_TOUCH, Abilities.PRANKSTER, 485, 63, 95, 65, 80, 72, 110, 90, 50, 170, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.BRAMBLIN, 9, false, false, false, "Tumbleweed Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.6, 0.6, Abilities.WIND_RIDER, Abilities.NONE, Abilities.INFILTRATOR, 275, 40, 65, 30, 45, 35, 60, 190, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BRAMBLEGHAST, 9, false, false, false, "Tumbleweed Pokémon", PokemonType.GRASS, PokemonType.GHOST, 1.2, 6, Abilities.WIND_RIDER, Abilities.NONE, Abilities.INFILTRATOR, 480, 55, 115, 70, 80, 70, 90, 45, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TOEDSCOOL, 9, false, false, false, "Woodear Pokémon", PokemonType.GROUND, PokemonType.GRASS, 0.9, 33, Abilities.MYCELIUM_MIGHT, Abilities.NONE, Abilities.NONE, 335, 40, 40, 35, 50, 100, 70, 190, 50, 67, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.TOEDSCRUEL, 9, false, false, false, "Woodear Pokémon", PokemonType.GROUND, PokemonType.GRASS, 1.9, 58, Abilities.MYCELIUM_MIGHT, Abilities.NONE, Abilities.NONE, 515, 80, 70, 65, 80, 120, 100, 90, 50, 180, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.KLAWF, 9, false, false, false, "Ambush Pokémon", PokemonType.ROCK, null, 1.3, 79, Abilities.ANGER_SHELL, Abilities.SHELL_ARMOR, Abilities.REGENERATOR, 450, 70, 100, 115, 35, 55, 75, 120, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CAPSAKID, 9, false, false, false, "Spicy Pepper Pokémon", PokemonType.GRASS, null, 0.3, 3, Abilities.CHLOROPHYLL, Abilities.INSOMNIA, Abilities.KLUTZ, 304, 50, 62, 40, 62, 40, 50, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SCOVILLAIN, 9, false, false, false, "Spicy Pepper Pokémon", PokemonType.GRASS, PokemonType.FIRE, 0.9, 15, Abilities.CHLOROPHYLL, Abilities.INSOMNIA, Abilities.MOODY, 486, 65, 108, 65, 108, 65, 75, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RELLOR, 9, false, false, false, "Rolling Pokémon", PokemonType.BUG, null, 0.2, 1, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.SHED_SKIN, 270, 41, 50, 60, 31, 58, 30, 190, 50, 54, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.RABSCA, 9, false, false, false, "Rolling Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.3, 3.5, Abilities.SYNCHRONIZE, Abilities.NONE, Abilities.TELEPATHY, 470, 75, 50, 85, 115, 100, 45, 45, 50, 165, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.FLITTLE, 9, false, false, false, "Frill Pokémon", PokemonType.PSYCHIC, null, 0.2, 1.5, Abilities.ANTICIPATION, Abilities.FRISK, Abilities.SPEED_BOOST, 255, 30, 35, 30, 55, 30, 75, 120, 50, 51, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ESPATHRA, 9, false, false, false, "Ostrich Pokémon", PokemonType.PSYCHIC, null, 1.9, 90, Abilities.OPPORTUNIST, Abilities.FRISK, Abilities.SPEED_BOOST, 481, 95, 60, 60, 101, 60, 105, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.TINKATINK, 9, false, false, false, "Metalsmith Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.4, 8.9, Abilities.MOLD_BREAKER, Abilities.OWN_TEMPO, Abilities.PICKPOCKET, 297, 50, 45, 45, 35, 64, 58, 190, 50, 59, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.TINKATUFF, 9, false, false, false, "Hammer Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.7, 59.1, Abilities.MOLD_BREAKER, Abilities.OWN_TEMPO, Abilities.PICKPOCKET, 380, 65, 55, 55, 45, 82, 78, 90, 50, 133, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.TINKATON, 9, false, false, false, "Hammer Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.7, 112.8, Abilities.MOLD_BREAKER, Abilities.OWN_TEMPO, Abilities.PICKPOCKET, 506, 85, 75, 77, 70, 105, 94, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.WIGLETT, 9, false, false, false, "Garden Eel Pokémon", PokemonType.WATER, null, 1.2, 1.8, Abilities.GOOEY, Abilities.RATTLED, Abilities.SAND_VEIL, 245, 10, 55, 25, 35, 25, 95, 255, 50, 49, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WUGTRIO, 9, false, false, false, "Garden Eel Pokémon", PokemonType.WATER, null, 1.2, 5.4, Abilities.GOOEY, Abilities.RATTLED, Abilities.SAND_VEIL, 425, 35, 100, 50, 50, 70, 120, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BOMBIRDIER, 9, false, false, false, "Item Drop Pokémon", PokemonType.FLYING, PokemonType.DARK, 1.5, 42.9, Abilities.BIG_PECKS, Abilities.KEEN_EYE, Abilities.ROCKY_PAYLOAD, 485, 70, 103, 85, 60, 85, 82, 25, 50, 243, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.FINIZEN, 9, false, false, false, "Dolphin Pokémon", PokemonType.WATER, null, 1.3, 60.2, Abilities.WATER_VEIL, Abilities.NONE, Abilities.NONE, 315, 70, 45, 40, 45, 40, 75, 200, 50, 63, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.PALAFIN, 9, false, false, false, "Dolphin Pokémon", PokemonType.WATER, null, 1.3, 60.2, Abilities.ZERO_TO_HERO, Abilities.NONE, Abilities.NONE, 457, 100, 70, 72, 53, 62, 100, 45, 50, 160, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Zero Form", "zero", PokemonType.WATER, null, 1.3, 60.2, Abilities.ZERO_TO_HERO, Abilities.NONE, Abilities.ZERO_TO_HERO, 457, 100, 70, 72, 53, 62, 100, 45, 50, 160, false, null, true), - new PokemonForm("Hero Form", "hero", PokemonType.WATER, null, 1.8, 97.4, Abilities.ZERO_TO_HERO, Abilities.NONE, Abilities.ZERO_TO_HERO, 650, 100, 160, 97, 106, 87, 100, 45, 50, 160), - ), - new PokemonSpecies(Species.VAROOM, 9, false, false, false, "Single-Cyl Pokémon", PokemonType.STEEL, PokemonType.POISON, 1, 35, Abilities.OVERCOAT, Abilities.NONE, Abilities.SLOW_START, 300, 45, 70, 63, 30, 45, 47, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.REVAVROOM, 9, false, false, false, "Multi-Cyl Pokémon", PokemonType.STEEL, PokemonType.POISON, 1.8, 120, Abilities.OVERCOAT, Abilities.NONE, Abilities.FILTER, 500, 80, 119, 90, 54, 67, 90, 75, 50, 175, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.POISON, 1.8, 120, Abilities.OVERCOAT, Abilities.NONE, Abilities.FILTER, 500, 80, 119, 90, 54, 67, 90, 75, 50, 175, false, null, true), - new PokemonForm("Segin Starmobile", "segin-starmobile", PokemonType.STEEL, PokemonType.DARK, 1.8, 240, Abilities.INTIMIDATE, Abilities.NONE, Abilities.INTIMIDATE, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), - new PokemonForm("Schedar Starmobile", "schedar-starmobile", PokemonType.STEEL, PokemonType.FIRE, 1.8, 240, Abilities.SPEED_BOOST, Abilities.NONE, Abilities.SPEED_BOOST, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), - new PokemonForm("Navi Starmobile", "navi-starmobile", PokemonType.STEEL, PokemonType.POISON, 1.8, 240, Abilities.TOXIC_DEBRIS, Abilities.NONE, Abilities.TOXIC_DEBRIS, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), - new PokemonForm("Ruchbah Starmobile", "ruchbah-starmobile", PokemonType.STEEL, PokemonType.FAIRY, 1.8, 240, Abilities.MISTY_SURGE, Abilities.NONE, Abilities.MISTY_SURGE, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), - new PokemonForm("Caph Starmobile", "caph-starmobile", PokemonType.STEEL, PokemonType.FIGHTING, 1.8, 240, Abilities.STAMINA, Abilities.NONE, Abilities.STAMINA, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), - ), - new PokemonSpecies(Species.CYCLIZAR, 9, false, false, false, "Mount Pokémon", PokemonType.DRAGON, PokemonType.NORMAL, 1.6, 63, Abilities.SHED_SKIN, Abilities.NONE, Abilities.REGENERATOR, 501, 70, 95, 65, 85, 65, 121, 190, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ORTHWORM, 9, false, false, false, "Earthworm Pokémon", PokemonType.STEEL, null, 2.5, 310, Abilities.EARTH_EATER, Abilities.NONE, Abilities.SAND_VEIL, 480, 70, 85, 145, 60, 55, 65, 25, 50, 240, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.GLIMMET, 9, false, false, false, "Ore Pokémon", PokemonType.ROCK, PokemonType.POISON, 0.7, 8, Abilities.TOXIC_DEBRIS, Abilities.NONE, Abilities.CORROSION, 350, 48, 35, 42, 105, 60, 60, 70, 50, 70, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GLIMMORA, 9, false, false, false, "Ore Pokémon", PokemonType.ROCK, PokemonType.POISON, 1.5, 45, Abilities.TOXIC_DEBRIS, Abilities.NONE, Abilities.CORROSION, 525, 83, 55, 90, 130, 81, 86, 25, 50, 184, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GREAVARD, 9, false, false, false, "Ghost Dog Pokémon", PokemonType.GHOST, null, 0.6, 35, Abilities.PICKUP, Abilities.NONE, Abilities.FLUFFY, 290, 50, 61, 60, 30, 55, 34, 120, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.HOUNDSTONE, 9, false, false, false, "Ghost Dog Pokémon", PokemonType.GHOST, null, 2, 15, Abilities.SAND_RUSH, Abilities.NONE, Abilities.FLUFFY, 488, 72, 101, 100, 50, 97, 68, 60, 50, 171, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.FLAMIGO, 9, false, false, false, "Synchronize Pokémon", PokemonType.FLYING, PokemonType.FIGHTING, 1.6, 37, Abilities.SCRAPPY, Abilities.TANGLED_FEET, Abilities.COSTAR, 500, 82, 115, 74, 75, 64, 90, 100, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CETODDLE, 9, false, false, false, "Terra Whale Pokémon", PokemonType.ICE, null, 1.2, 45, Abilities.THICK_FAT, Abilities.SNOW_CLOAK, Abilities.SHEER_FORCE, 334, 108, 68, 45, 30, 40, 43, 150, 50, 67, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CETITAN, 9, false, false, false, "Terra Whale Pokémon", PokemonType.ICE, null, 4.5, 700, Abilities.THICK_FAT, Abilities.SLUSH_RUSH, Abilities.SHEER_FORCE, 521, 170, 113, 65, 45, 55, 73, 50, 50, 182, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.VELUZA, 9, false, false, false, "Jettison Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 2.5, 90, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.SHARPNESS, 478, 90, 102, 73, 78, 65, 70, 100, 50, 167, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.DONDOZO, 9, false, false, false, "Big Catfish Pokémon", PokemonType.WATER, null, 12, 220, Abilities.UNAWARE, Abilities.OBLIVIOUS, Abilities.WATER_VEIL, 530, 150, 100, 115, 65, 65, 35, 25, 50, 265, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.TATSUGIRI, 9, false, false, false, "Mimicry Pokémon", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, Abilities.COMMANDER, Abilities.NONE, Abilities.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, GrowthRate.MEDIUM_SLOW, 50, false, false, - new PokemonForm("Curly Form", "curly", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, Abilities.COMMANDER, Abilities.NONE, Abilities.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), - new PokemonForm("Droopy Form", "droopy", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, Abilities.COMMANDER, Abilities.NONE, Abilities.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), - new PokemonForm("Stretchy Form", "stretchy", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, Abilities.COMMANDER, Abilities.NONE, Abilities.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), - ), - new PokemonSpecies(Species.ANNIHILAPE, 9, false, false, false, "Rage Monkey Pokémon", PokemonType.FIGHTING, PokemonType.GHOST, 1.2, 56, Abilities.VITAL_SPIRIT, Abilities.INNER_FOCUS, Abilities.DEFIANT, 535, 110, 115, 80, 50, 90, 90, 45, 50, 268, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CLODSIRE, 9, false, false, false, "Spiny Fish Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.8, 223, Abilities.POISON_POINT, Abilities.WATER_ABSORB, Abilities.UNAWARE, 430, 130, 75, 60, 45, 100, 20, 90, 50, 151, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FARIGIRAF, 9, false, false, false, "Long Neck Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 3.2, 160, Abilities.CUD_CHEW, Abilities.ARMOR_TAIL, Abilities.SAP_SIPPER, 520, 120, 90, 70, 110, 70, 60, 45, 50, 260, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DUDUNSPARCE, 9, false, false, false, "Land Snake Pokémon", PokemonType.NORMAL, null, 3.6, 39.2, Abilities.SERENE_GRACE, Abilities.RUN_AWAY, Abilities.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Two-Segment Form", "two-segment", PokemonType.NORMAL, null, 3.6, 39.2, Abilities.SERENE_GRACE, Abilities.RUN_AWAY, Abilities.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182, false, ""), - new PokemonForm("Three-Segment Form", "three-segment", PokemonType.NORMAL, null, 4.5, 47.4, Abilities.SERENE_GRACE, Abilities.RUN_AWAY, Abilities.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182), - ), - new PokemonSpecies(Species.KINGAMBIT, 9, false, false, false, "Big Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 2, 120, Abilities.DEFIANT, Abilities.SUPREME_OVERLORD, Abilities.PRESSURE, 550, 100, 135, 120, 60, 85, 50, 25, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GREAT_TUSK, 9, false, false, false, "Paradox Pokémon", PokemonType.GROUND, PokemonType.FIGHTING, 2.2, 320, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 115, 131, 131, 53, 53, 87, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SCREAM_TAIL, 9, false, false, false, "Paradox Pokémon", PokemonType.FAIRY, PokemonType.PSYCHIC, 1.2, 8, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 115, 65, 99, 65, 115, 111, 50, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.BRUTE_BONNET, 9, false, false, false, "Paradox Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.2, 21, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 111, 127, 99, 79, 99, 55, 50, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.FLUTTER_MANE, 9, false, false, false, "Paradox Pokémon", PokemonType.GHOST, PokemonType.FAIRY, 1.4, 4, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 55, 55, 55, 135, 135, 135, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SLITHER_WING, 9, false, false, false, "Paradox Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 3.2, 92, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 85, 135, 79, 85, 105, 81, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SANDY_SHOCKS, 9, false, false, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.GROUND, 2.3, 60, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 85, 81, 97, 121, 85, 101, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_TREADS, 9, false, false, false, "Paradox Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.9, 240, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 90, 112, 120, 72, 70, 106, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_BUNDLE, 9, false, false, false, "Paradox Pokémon", PokemonType.ICE, PokemonType.WATER, 0.6, 11, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 56, 80, 114, 124, 60, 136, 50, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_HANDS, 9, false, false, false, "Paradox Pokémon", PokemonType.FIGHTING, PokemonType.ELECTRIC, 1.8, 380.7, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 154, 140, 108, 50, 68, 50, 50, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_JUGULIS, 9, false, false, false, "Paradox Pokémon", PokemonType.DARK, PokemonType.FLYING, 1.3, 111, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 94, 80, 86, 122, 80, 108, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_MOTH, 9, false, false, false, "Paradox Pokémon", PokemonType.FIRE, PokemonType.POISON, 1.2, 36, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 80, 70, 60, 140, 110, 110, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_THORNS, 9, false, false, false, "Paradox Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1.6, 303, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 100, 134, 110, 70, 84, 72, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.FRIGIBAX, 9, false, false, false, "Ice Fin Pokémon", PokemonType.DRAGON, PokemonType.ICE, 0.5, 17, Abilities.THERMAL_EXCHANGE, Abilities.NONE, Abilities.ICE_BODY, 320, 65, 75, 45, 35, 45, 55, 45, 50, 64, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.ARCTIBAX, 9, false, false, false, "Ice Fin Pokémon", PokemonType.DRAGON, PokemonType.ICE, 0.8, 30, Abilities.THERMAL_EXCHANGE, Abilities.NONE, Abilities.ICE_BODY, 423, 90, 95, 66, 45, 65, 62, 25, 50, 148, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.BAXCALIBUR, 9, false, false, false, "Ice Dragon Pokémon", PokemonType.DRAGON, PokemonType.ICE, 2.1, 210, Abilities.THERMAL_EXCHANGE, Abilities.NONE, Abilities.ICE_BODY, 600, 115, 145, 92, 75, 86, 87, 10, 50, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.GIMMIGHOUL, 9, false, false, false, "Coin Chest Pokémon", PokemonType.GHOST, null, 0.3, 5, Abilities.RATTLED, Abilities.NONE, Abilities.NONE, 300, 45, 30, 70, 75, 70, 10, 45, 50, 60, GrowthRate.SLOW, null, false, false, - new PokemonForm("Chest Form", "chest", PokemonType.GHOST, null, 0.3, 5, Abilities.RATTLED, Abilities.NONE, Abilities.NONE, 300, 45, 30, 70, 75, 70, 10, 45, 50, 60, false, "", true), - new PokemonForm("Roaming Form", "roaming", PokemonType.GHOST, null, 0.1, 1, Abilities.RUN_AWAY, Abilities.NONE, Abilities.NONE, 300, 45, 30, 25, 75, 45, 80, 45, 50, 60, false, null, true), - ), - new PokemonSpecies(Species.GHOLDENGO, 9, false, false, false, "Coin Entity Pokémon", PokemonType.STEEL, PokemonType.GHOST, 1.2, 30, Abilities.GOOD_AS_GOLD, Abilities.NONE, Abilities.NONE, 550, 87, 60, 95, 133, 91, 84, 45, 50, 275, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.WO_CHIEN, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.GRASS, 1.5, 74.2, Abilities.TABLETS_OF_RUIN, Abilities.NONE, Abilities.NONE, 570, 85, 85, 100, 95, 135, 70, 6, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.CHIEN_PAO, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.ICE, 1.9, 152.2, Abilities.SWORD_OF_RUIN, Abilities.NONE, Abilities.NONE, 570, 80, 120, 80, 90, 65, 135, 6, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.TING_LU, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.GROUND, 2.7, 699.7, Abilities.VESSEL_OF_RUIN, Abilities.NONE, Abilities.NONE, 570, 155, 110, 125, 55, 80, 45, 6, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.CHI_YU, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.FIRE, 0.4, 4.9, Abilities.BEADS_OF_RUIN, Abilities.NONE, Abilities.NONE, 570, 55, 80, 80, 135, 120, 100, 6, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ROARING_MOON, 9, false, false, false, "Paradox Pokémon", PokemonType.DRAGON, PokemonType.DARK, 2, 380, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 590, 105, 139, 71, 55, 101, 119, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_VALIANT, 9, false, false, false, "Paradox Pokémon", PokemonType.FAIRY, PokemonType.FIGHTING, 1.4, 35, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 590, 74, 130, 90, 120, 60, 116, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.KORAIDON, 9, false, true, false, "Paradox Pokémon", PokemonType.FIGHTING, PokemonType.DRAGON, 2.5, 303, Abilities.ORICHALCUM_PULSE, Abilities.NONE, Abilities.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335, GrowthRate.SLOW, null, false, false, - new PokemonForm("Apex Build", "apex-build", PokemonType.FIGHTING, PokemonType.DRAGON, 2.5, 303, Abilities.ORICHALCUM_PULSE, Abilities.NONE, Abilities.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335, false, null, true), - ), - new PokemonSpecies(Species.MIRAIDON, 9, false, true, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 3.5, 240, Abilities.HADRON_ENGINE, Abilities.NONE, Abilities.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335, GrowthRate.SLOW, null, false, false, - new PokemonForm("Ultimate Mode", "ultimate-mode", PokemonType.ELECTRIC, PokemonType.DRAGON, 3.5, 240, Abilities.HADRON_ENGINE, Abilities.NONE, Abilities.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335, false, null, true), - ), - new PokemonSpecies(Species.WALKING_WAKE, 9, false, false, false, "Paradox Pokémon", PokemonType.WATER, PokemonType.DRAGON, 3.5, 280, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 590, 99, 83, 91, 125, 83, 109, 10, 0, 295, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Gouging Fire and Raging Bolt - new PokemonSpecies(Species.IRON_LEAVES, 9, false, false, false, "Paradox Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 1.5, 125, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 590, 90, 130, 88, 70, 108, 104, 10, 0, 295, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Iron Boulder and Iron Crown - new PokemonSpecies(Species.DIPPLIN, 9, false, false, false, "Candy Apple Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 4.4, Abilities.SUPERSWEET_SYRUP, Abilities.GLUTTONY, Abilities.STICKY_HOLD, 485, 80, 80, 110, 95, 80, 40, 45, 50, 170, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.POLTCHAGEIST, 9, false, false, false, "Matcha Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, GrowthRate.SLOW, null, false, false, - new PokemonForm("Counterfeit Form", "counterfeit", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, null, true), - new PokemonForm("Artisan Form", "artisan", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, null, false, true), - ), - new PokemonSpecies(Species.SINISTCHA, 9, false, false, false, "Matcha Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178, GrowthRate.SLOW, null, false, false, - new PokemonForm("Unremarkable Form", "unremarkable", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178), - new PokemonForm("Masterpiece Form", "masterpiece", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178, false, null, false, true), - ), - new PokemonSpecies(Species.OKIDOGI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 1.8, 92.2, Abilities.TOXIC_CHAIN, Abilities.NONE, Abilities.GUARD_DOG, 555, 88, 128, 115, 58, 86, 80, 3, 0, 276, GrowthRate.SLOW, 100, false), - new PokemonSpecies(Species.MUNKIDORI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1, 12.2, Abilities.TOXIC_CHAIN, Abilities.NONE, Abilities.FRISK, 555, 88, 75, 66, 130, 90, 106, 3, 0, 276, GrowthRate.SLOW, 100, false), - new PokemonSpecies(Species.FEZANDIPITI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.FAIRY, 1.4, 30.1, Abilities.TOXIC_CHAIN, Abilities.NONE, Abilities.TECHNICIAN, 555, 88, 91, 82, 70, 125, 99, 3, 0, 276, GrowthRate.SLOW, 100, false), - new PokemonSpecies(Species.OGERPON, 9, true, false, false, "Mask Pokémon", PokemonType.GRASS, null, 1.2, 39.8, Abilities.DEFIANT, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275, GrowthRate.SLOW, 0, false, false, - new PokemonForm("Teal Mask", "teal-mask", PokemonType.GRASS, null, 1.2, 39.8, Abilities.DEFIANT, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275, false, null, true), - new PokemonForm("Wellspring Mask", "wellspring-mask", PokemonType.GRASS, PokemonType.WATER, 1.2, 39.8, Abilities.WATER_ABSORB, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Hearthflame Mask", "hearthflame-mask", PokemonType.GRASS, PokemonType.FIRE, 1.2, 39.8, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Cornerstone Mask", "cornerstone-mask", PokemonType.GRASS, PokemonType.ROCK, 1.2, 39.8, Abilities.STURDY, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Teal Mask Terastallized", "teal-mask-tera", PokemonType.GRASS, null, 1.2, 39.8, Abilities.EMBODY_ASPECT_TEAL, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Wellspring Mask Terastallized", "wellspring-mask-tera", PokemonType.GRASS, PokemonType.WATER, 1.2, 39.8, Abilities.EMBODY_ASPECT_WELLSPRING, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Hearthflame Mask Terastallized", "hearthflame-mask-tera", PokemonType.GRASS, PokemonType.FIRE, 1.2, 39.8, Abilities.EMBODY_ASPECT_HEARTHFLAME, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Cornerstone Mask Terastallized", "cornerstone-mask-tera", PokemonType.GRASS, PokemonType.ROCK, 1.2, 39.8, Abilities.EMBODY_ASPECT_CORNERSTONE, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - ), - new PokemonSpecies(Species.ARCHALUDON, 9, false, false, false, "Alloy Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 2, 60, Abilities.STAMINA, Abilities.STURDY, Abilities.STALWART, 600, 90, 105, 130, 125, 65, 85, 10, 50, 300, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HYDRAPPLE, 9, false, false, false, "Apple Hydra Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 1.8, 93, Abilities.SUPERSWEET_SYRUP, Abilities.REGENERATOR, Abilities.STICKY_HOLD, 540, 106, 80, 110, 120, 80, 44, 10, 50, 270, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.GOUGING_FIRE, 9, false, false, false, "Paradox Pokémon", PokemonType.FIRE, PokemonType.DRAGON, 3.5, 590, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 590, 105, 115, 121, 65, 93, 91, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.RAGING_BOLT, 9, false, false, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 5.2, 480, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 590, 125, 73, 91, 137, 89, 75, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_BOULDER, 9, false, false, false, "Paradox Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1.5, 162.5, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 590, 90, 120, 80, 68, 108, 124, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_CROWN, 9, false, false, false, "Paradox Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 156, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 590, 90, 72, 100, 122, 108, 98, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.TERAPAGOS, 9, false, true, false, "Tera Pokémon", PokemonType.NORMAL, null, 0.2, 6.5, Abilities.TERA_SHIFT, Abilities.NONE, Abilities.NONE, 450, 90, 65, 85, 65, 85, 60, 5, 50, 90, GrowthRate.SLOW, 50, false, false, - new PokemonForm("Normal Form", "", PokemonType.NORMAL, null, 0.2, 6.5, Abilities.TERA_SHIFT, Abilities.NONE, Abilities.NONE, 450, 90, 65, 85, 65, 85, 60, 5, 50, 90, false, null, true), - new PokemonForm("Terastal Form", "terastal", PokemonType.NORMAL, null, 0.3, 16, Abilities.TERA_SHELL, Abilities.NONE, Abilities.NONE, 600, 95, 95, 110, 105, 110, 85, 5, 50, 120), - new PokemonForm("Stellar Form", "stellar", PokemonType.NORMAL, null, 1.7, 77, Abilities.TERAFORM_ZERO, Abilities.NONE, Abilities.NONE, 700, 160, 105, 110, 130, 110, 85, 5, 50, 140), - ), - new PokemonSpecies(Species.PECHARUNT, 9, false, false, true, "Subjugation Pokémon", PokemonType.POISON, PokemonType.GHOST, 0.3, 0.3, Abilities.POISON_PUPPETEER, Abilities.NONE, Abilities.NONE, 600, 88, 88, 160, 88, 88, 88, 3, 0, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ALOLA_RATTATA, 7, false, false, false, "Mouse Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.3, 3.8, Abilities.GLUTTONY, Abilities.HUSTLE, Abilities.THICK_FAT, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_RATICATE, 7, false, false, false, "Mouse Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.7, 25.5, Abilities.GLUTTONY, Abilities.HUSTLE, Abilities.THICK_FAT, 413, 75, 71, 70, 40, 80, 77, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_RAICHU, 7, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, PokemonType.PSYCHIC, 0.7, 21, Abilities.SURGE_SURFER, Abilities.NONE, Abilities.NONE, 485, 60, 85, 50, 95, 85, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_SANDSHREW, 7, false, false, false, "Mouse Pokémon", PokemonType.ICE, PokemonType.STEEL, 0.7, 40, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SLUSH_RUSH, 300, 50, 75, 90, 10, 35, 40, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_SANDSLASH, 7, false, false, false, "Mouse Pokémon", PokemonType.ICE, PokemonType.STEEL, 1.2, 55, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SLUSH_RUSH, 450, 75, 100, 120, 25, 65, 65, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_VULPIX, 7, false, false, false, "Fox Pokémon", PokemonType.ICE, null, 0.6, 9.9, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SNOW_WARNING, 299, 38, 41, 40, 50, 65, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 25, false), - new PokemonSpecies(Species.ALOLA_NINETALES, 7, false, false, false, "Fox Pokémon", PokemonType.ICE, PokemonType.FAIRY, 1.1, 19.9, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SNOW_WARNING, 505, 73, 67, 75, 81, 100, 109, 75, 50, 177, GrowthRate.MEDIUM_FAST, 25, false), - new PokemonSpecies(Species.ALOLA_DIGLETT, 7, false, false, false, "Mole Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.2, 1, Abilities.SAND_VEIL, Abilities.TANGLING_HAIR, Abilities.SAND_FORCE, 265, 10, 55, 30, 35, 45, 90, 255, 50, 53, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_DUGTRIO, 7, false, false, false, "Mole Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 66.6, Abilities.SAND_VEIL, Abilities.TANGLING_HAIR, Abilities.SAND_FORCE, 425, 35, 100, 60, 50, 70, 110, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_MEOWTH, 7, false, false, false, "Scratch Cat Pokémon", PokemonType.DARK, null, 0.4, 4.2, Abilities.PICKUP, Abilities.TECHNICIAN, Abilities.RATTLED, 290, 40, 35, 35, 50, 40, 90, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_PERSIAN, 7, false, false, false, "Classy Cat Pokémon", PokemonType.DARK, null, 1.1, 33, Abilities.FUR_COAT, Abilities.TECHNICIAN, Abilities.RATTLED, 440, 65, 60, 60, 75, 65, 115, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_GEODUDE, 7, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 0.4, 20.3, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.GALVANIZE, 300, 40, 80, 100, 30, 30, 20, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ALOLA_GRAVELER, 7, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1, 110, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.GALVANIZE, 390, 55, 95, 115, 45, 45, 35, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ALOLA_GOLEM, 7, false, false, false, "Megaton Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1.7, 316, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.GALVANIZE, 495, 80, 120, 130, 55, 65, 45, 45, 70, 223, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ALOLA_GRIMER, 7, false, false, false, "Sludge Pokémon", PokemonType.POISON, PokemonType.DARK, 0.7, 42, Abilities.POISON_TOUCH, Abilities.GLUTTONY, Abilities.POWER_OF_ALCHEMY, 325, 80, 80, 50, 40, 50, 25, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_MUK, 7, false, false, false, "Sludge Pokémon", PokemonType.POISON, PokemonType.DARK, 1, 52, Abilities.POISON_TOUCH, Abilities.GLUTTONY, Abilities.POWER_OF_ALCHEMY, 500, 105, 105, 75, 65, 100, 50, 75, 70, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_EXEGGUTOR, 7, false, false, false, "Coconut Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 10.9, 415.6, Abilities.FRISK, Abilities.NONE, Abilities.HARVEST, 530, 95, 105, 85, 125, 75, 45, 45, 50, 186, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.ALOLA_MAROWAK, 7, false, false, false, "Bone Keeper Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1, 34, Abilities.CURSED_BODY, Abilities.LIGHTNING_ROD, Abilities.ROCK_HEAD, 425, 60, 80, 110, 50, 80, 45, 75, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ETERNAL_FLOETTE, 6, true, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 551, 74, 65, 67, 125, 128, 92, 120, 70, 243, GrowthRate.MEDIUM_FAST, 0, false), //Marked as Sub-Legend, for casing purposes - new PokemonSpecies(Species.GALAR_MEOWTH, 8, false, false, false, "Scratch Cat Pokémon", PokemonType.STEEL, null, 0.4, 7.5, Abilities.PICKUP, Abilities.TOUGH_CLAWS, Abilities.UNNERVE, 290, 50, 65, 55, 40, 40, 40, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_PONYTA, 8, false, false, false, "Fire Horse Pokémon", PokemonType.PSYCHIC, null, 0.8, 24, Abilities.RUN_AWAY, Abilities.PASTEL_VEIL, Abilities.ANTICIPATION, 410, 50, 85, 55, 65, 65, 90, 190, 50, 82, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_RAPIDASH, 8, false, false, false, "Fire Horse Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.7, 80, Abilities.RUN_AWAY, Abilities.PASTEL_VEIL, Abilities.ANTICIPATION, 500, 65, 100, 70, 80, 80, 105, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_SLOWPOKE, 8, false, false, false, "Dopey Pokémon", PokemonType.PSYCHIC, null, 1.2, 36, Abilities.GLUTTONY, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 315, 90, 65, 65, 40, 40, 15, 190, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_SLOWBRO, 8, false, false, false, "Hermit Crab Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1.6, 70.5, Abilities.QUICK_DRAW, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 100, 95, 100, 70, 30, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_FARFETCHD, 8, false, false, false, "Wild Duck Pokémon", PokemonType.FIGHTING, null, 0.8, 42, Abilities.STEADFAST, Abilities.NONE, Abilities.SCRAPPY, 377, 52, 95, 55, 58, 62, 55, 45, 50, 132, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_WEEZING, 8, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, PokemonType.FAIRY, 3, 16, Abilities.LEVITATE, Abilities.NEUTRALIZING_GAS, Abilities.MISTY_SURGE, 490, 65, 90, 120, 85, 70, 60, 60, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_MR_MIME, 8, false, false, false, "Barrier Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.4, 56.8, Abilities.VITAL_SPIRIT, Abilities.SCREEN_CLEANER, Abilities.ICE_BODY, 460, 50, 65, 65, 90, 90, 100, 45, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_ARTICUNO, 8, true, false, false, "Freeze Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.7, 50.9, Abilities.COMPETITIVE, Abilities.NONE, Abilities.NONE, 580, 90, 85, 85, 125, 100, 95, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.GALAR_ZAPDOS, 8, true, false, false, "Electric Pokémon", PokemonType.FIGHTING, PokemonType.FLYING, 1.6, 58.2, Abilities.DEFIANT, Abilities.NONE, Abilities.NONE, 580, 90, 125, 90, 85, 90, 100, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.GALAR_MOLTRES, 8, true, false, false, "Flame Pokémon", PokemonType.DARK, PokemonType.FLYING, 2, 66, Abilities.BERSERK, Abilities.NONE, Abilities.NONE, 580, 90, 85, 90, 100, 125, 90, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.GALAR_SLOWKING, 8, false, false, false, "Royal Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1.8, 79.5, Abilities.CURIOUS_MEDICINE, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 65, 80, 110, 110, 30, 70, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_CORSOLA, 8, false, false, false, "Coral Pokémon", PokemonType.GHOST, null, 0.6, 0.5, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 410, 60, 55, 100, 65, 100, 30, 60, 50, 144, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.GALAR_ZIGZAGOON, 8, false, false, false, "Tiny Raccoon Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.4, 17.5, Abilities.PICKUP, Abilities.GLUTTONY, Abilities.QUICK_FEET, 240, 38, 30, 41, 30, 41, 60, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_LINOONE, 8, false, false, false, "Rushing Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.5, 32.5, Abilities.PICKUP, Abilities.GLUTTONY, Abilities.QUICK_FEET, 420, 78, 70, 61, 50, 61, 100, 90, 50, 147, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_DARUMAKA, 8, false, false, false, "Zen Charm Pokémon", PokemonType.ICE, null, 0.7, 40, Abilities.HUSTLE, Abilities.NONE, Abilities.INNER_FOCUS, 315, 70, 90, 45, 15, 45, 50, 120, 50, 63, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GALAR_DARMANITAN, 8, false, false, false, "Blazing Pokémon", PokemonType.ICE, null, 1.7, 120, Abilities.GORILLA_TACTICS, Abilities.NONE, Abilities.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Standard Mode", "", PokemonType.ICE, null, 1.7, 120, Abilities.GORILLA_TACTICS, Abilities.NONE, Abilities.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, false, null, true), - new PokemonForm("Zen Mode", "zen", PokemonType.ICE, PokemonType.FIRE, 1.7, 120, Abilities.GORILLA_TACTICS, Abilities.NONE, Abilities.ZEN_MODE, 540, 105, 160, 55, 30, 55, 135, 60, 50, 189), - ), - new PokemonSpecies(Species.GALAR_YAMASK, 8, false, false, false, "Spirit Pokémon", PokemonType.GROUND, PokemonType.GHOST, 0.5, 1.5, Abilities.WANDERING_SPIRIT, Abilities.NONE, Abilities.NONE, 303, 38, 55, 85, 30, 65, 30, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_STUNFISK, 8, false, false, false, "Trap Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 20.5, Abilities.MIMICRY, Abilities.NONE, Abilities.NONE, 471, 109, 81, 99, 66, 84, 32, 75, 70, 165, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HISUI_GROWLITHE, 8, false, false, false, "Puppy Pokémon", PokemonType.FIRE, PokemonType.ROCK, 0.8, 22.7, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.ROCK_HEAD, 350, 60, 75, 45, 65, 50, 55, 190, 50, 70, GrowthRate.SLOW, 75, false), - new PokemonSpecies(Species.HISUI_ARCANINE, 8, false, false, false, "Legendary Pokémon", PokemonType.FIRE, PokemonType.ROCK, 2, 168, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.ROCK_HEAD, 555, 95, 115, 80, 95, 80, 90, 85, 50, 194, GrowthRate.SLOW, 75, false), - new PokemonSpecies(Species.HISUI_VOLTORB, 8, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, PokemonType.GRASS, 0.5, 13, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 330, 40, 30, 50, 55, 55, 100, 190, 80, 66, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.HISUI_ELECTRODE, 8, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, PokemonType.GRASS, 1.2, 81, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 490, 60, 50, 70, 80, 80, 150, 60, 70, 172, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.HISUI_TYPHLOSION, 8, false, false, false, "Volcano Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 69.8, Abilities.BLAZE, Abilities.NONE, Abilities.FRISK, 534, 73, 84, 78, 119, 85, 95, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.HISUI_QWILFISH, 8, false, false, false, "Balloon Pokémon", PokemonType.DARK, PokemonType.POISON, 0.5, 3.9, Abilities.POISON_POINT, Abilities.SWIFT_SWIM, Abilities.INTIMIDATE, 440, 65, 95, 85, 55, 55, 85, 45, 50, 88, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HISUI_SNEASEL, 8, false, false, false, "Sharp Claw Pokémon", PokemonType.FIGHTING, PokemonType.POISON, 0.9, 27, Abilities.INNER_FOCUS, Abilities.KEEN_EYE, Abilities.PICKPOCKET, 430, 55, 95, 55, 35, 75, 115, 60, 35, 86, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.HISUI_SAMUROTT, 8, false, false, false, "Formidable Pokémon", PokemonType.WATER, PokemonType.DARK, 1.5, 58.2, Abilities.TORRENT, Abilities.NONE, Abilities.SHARPNESS, 528, 90, 108, 80, 100, 65, 85, 45, 80, 238, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.HISUI_LILLIGANT, 8, false, false, false, "Flowering Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.2, 19.2, Abilities.CHLOROPHYLL, Abilities.HUSTLE, Abilities.LEAF_GUARD, 480, 70, 105, 75, 50, 75, 105, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.HISUI_ZORUA, 8, false, false, false, "Tricky Fox Pokémon", PokemonType.NORMAL, PokemonType.GHOST, 0.7, 12.5, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 330, 35, 60, 40, 85, 40, 70, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.HISUI_ZOROARK, 8, false, false, false, "Illusion Fox Pokémon", PokemonType.NORMAL, PokemonType.GHOST, 1.6, 83, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 510, 55, 100, 60, 125, 60, 110, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.HISUI_BRAVIARY, 8, false, false, false, "Valiant Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.7, 43.4, Abilities.KEEN_EYE, Abilities.SHEER_FORCE, Abilities.TINTED_LENS, 510, 110, 83, 70, 112, 70, 65, 60, 50, 179, GrowthRate.SLOW, 100, false), - new PokemonSpecies(Species.HISUI_SLIGGOO, 8, false, false, false, "Soft Tissue Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 0.7, 68.5, Abilities.SAP_SIPPER, Abilities.SHELL_ARMOR, Abilities.GOOEY, 452, 58, 75, 83, 83, 113, 40, 45, 35, 158, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HISUI_GOODRA, 8, false, false, false, "Dragon Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 1.7, 334.1, Abilities.SAP_SIPPER, Abilities.SHELL_ARMOR, Abilities.GOOEY, 600, 80, 100, 100, 110, 150, 60, 45, 35, 270, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HISUI_AVALUGG, 8, false, false, false, "Iceberg Pokémon", PokemonType.ICE, PokemonType.ROCK, 1.4, 262.4, Abilities.STRONG_JAW, Abilities.ICE_BODY, Abilities.STURDY, 514, 95, 127, 184, 34, 36, 38, 55, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HISUI_DECIDUEYE, 8, false, false, false, "Arrow Quill Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.6, 37, Abilities.OVERGROW, Abilities.NONE, Abilities.SCRAPPY, 530, 88, 112, 80, 95, 95, 60, 45, 50, 239, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.PALDEA_TAUROS, 9, false, false, false, "Wild Bull Pokémon", PokemonType.FIGHTING, null, 1.4, 115, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, GrowthRate.SLOW, 100, false, false, - new PokemonForm("Combat Breed", "combat", PokemonType.FIGHTING, null, 1.4, 115, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, "", true), - new PokemonForm("Blaze Breed", "blaze", PokemonType.FIGHTING, PokemonType.FIRE, 1.4, 85, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, null, true), - new PokemonForm("Aqua Breed", "aqua", PokemonType.FIGHTING, PokemonType.WATER, 1.4, 110, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, null, true), - ), - new PokemonSpecies(Species.PALDEA_WOOPER, 9, false, false, false, "Water Fish Pokémon", PokemonType.POISON, PokemonType.GROUND, 0.4, 11, Abilities.POISON_POINT, Abilities.WATER_ABSORB, Abilities.UNAWARE, 210, 55, 45, 45, 25, 25, 15, 255, 50, 42, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BLOODMOON_URSALUNA, 9, true, false, false, "Peat Pokémon", PokemonType.GROUND, PokemonType.NORMAL, 2.7, 333, Abilities.MINDS_EYE, Abilities.NONE, Abilities.NONE, 555, 113, 70, 120, 135, 65, 52, 75, 50, 278, GrowthRate.MEDIUM_FAST, 50, false), //Marked as Sub-Legend, for casing purposes + new PokemonSpecies(SpeciesId.BULBASAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.7, 6.9, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CHLOROPHYLL, 318, 45, 49, 49, 65, 65, 45, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.IVYSAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 1, 13, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CHLOROPHYLL, 405, 60, 62, 63, 80, 80, 60, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.VENUSAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 2, 100, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CHLOROPHYLL, 525, 80, 82, 83, 100, 100, 80, 45, 50, 263, GrowthRate.MEDIUM_SLOW, 87.5, true, true, + new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.POISON, 2, 100, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CHLOROPHYLL, 525, 80, 82, 83, 100, 100, 80, 45, 50, 263, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.POISON, 2.4, 155.5, AbilityId.THICK_FAT, AbilityId.THICK_FAT, AbilityId.THICK_FAT, 625, 80, 100, 123, 122, 120, 80, 45, 50, 263, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.POISON, 24, 999.9, AbilityId.EFFECT_SPORE, AbilityId.NONE, AbilityId.EFFECT_SPORE, 625, 120, 122, 90, 108, 105, 80, 45, 50, 263, true), + ), + new PokemonSpecies(SpeciesId.CHARMANDER, 1, false, false, false, "Lizard Pokémon", PokemonType.FIRE, null, 0.6, 8.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SOLAR_POWER, 309, 39, 52, 43, 60, 50, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.CHARMELEON, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, null, 1.1, 19, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SOLAR_POWER, 405, 58, 64, 58, 80, 65, 80, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.CHARIZARD, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FLYING, 1.7, 90.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SOLAR_POWER, 534, 78, 84, 78, 109, 85, 100, 45, 50, 267, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.FLYING, 1.7, 90.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SOLAR_POWER, 534, 78, 84, 78, 109, 85, 100, 45, 50, 267, false, null, true), + new PokemonForm("Mega X", SpeciesFormKey.MEGA_X, PokemonType.FIRE, PokemonType.DRAGON, 1.7, 110.5, AbilityId.TOUGH_CLAWS, AbilityId.NONE, AbilityId.TOUGH_CLAWS, 634, 78, 130, 111, 130, 85, 100, 45, 50, 267), + new PokemonForm("Mega Y", SpeciesFormKey.MEGA_Y, PokemonType.FIRE, PokemonType.FLYING, 1.7, 100.5, AbilityId.DROUGHT, AbilityId.NONE, AbilityId.DROUGHT, 634, 78, 104, 78, 159, 115, 100, 45, 50, 267), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, PokemonType.FLYING, 28, 999.9, AbilityId.BERSERK, AbilityId.NONE, AbilityId.BERSERK, 634, 118, 99, 88, 134, 95, 100, 45, 50, 267), + ), + new PokemonSpecies(SpeciesId.SQUIRTLE, 1, false, false, false, "Tiny Turtle Pokémon", PokemonType.WATER, null, 0.5, 9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.RAIN_DISH, 314, 44, 48, 65, 50, 64, 43, 45, 50, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.WARTORTLE, 1, false, false, false, "Turtle Pokémon", PokemonType.WATER, null, 1, 22.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.RAIN_DISH, 405, 59, 63, 80, 65, 80, 58, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.BLASTOISE, 1, false, false, false, "Shellfish Pokémon", PokemonType.WATER, null, 1.6, 85.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.RAIN_DISH, 530, 79, 83, 100, 85, 105, 78, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, null, 1.6, 85.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.RAIN_DISH, 530, 79, 83, 100, 85, 105, 78, 45, 50, 265, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, null, 1.6, 101.1, AbilityId.MEGA_LAUNCHER, AbilityId.NONE, AbilityId.MEGA_LAUNCHER, 630, 79, 103, 120, 135, 115, 78, 45, 50, 265), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.STEEL, 25, 999.9, AbilityId.SHELL_ARMOR, AbilityId.NONE, AbilityId.SHELL_ARMOR, 630, 119, 108, 125, 105, 110, 63, 45, 50, 265), + ), + new PokemonSpecies(SpeciesId.CATERPIE, 1, false, false, false, "Worm Pokémon", PokemonType.BUG, null, 0.3, 2.9, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.RUN_AWAY, 195, 45, 30, 35, 20, 20, 45, 255, 50, 39, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.METAPOD, 1, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.7, 9.9, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 205, 50, 20, 55, 25, 25, 30, 120, 50, 72, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BUTTERFREE, 1, false, false, false, "Butterfly Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.1, 32, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.TINTED_LENS, 395, 60, 45, 50, 90, 80, 70, 45, 50, 198, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.FLYING, 1.1, 32, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.TINTED_LENS, 395, 60, 45, 50, 90, 80, 70, 45, 50, 198, true, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.BUG, PokemonType.FLYING, 17, 999.9, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.COMPOUND_EYES, 495, 80, 40, 75, 120, 95, 85, 45, 50, 198, true), + ), + new PokemonSpecies(SpeciesId.WEEDLE, 1, false, false, false, "Hairy Bug Pokémon", PokemonType.BUG, PokemonType.POISON, 0.3, 3.2, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.RUN_AWAY, 195, 40, 35, 30, 20, 20, 50, 255, 70, 39, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.KAKUNA, 1, false, false, false, "Cocoon Pokémon", PokemonType.BUG, PokemonType.POISON, 0.6, 10, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 205, 45, 25, 50, 25, 25, 35, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BEEDRILL, 1, false, false, false, "Poison Bee Pokémon", PokemonType.BUG, PokemonType.POISON, 1, 29.5, AbilityId.SWARM, AbilityId.NONE, AbilityId.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 198, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.POISON, 1, 29.5, AbilityId.SWARM, AbilityId.NONE, AbilityId.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 198, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.POISON, 1.4, 40.5, AbilityId.ADAPTABILITY, AbilityId.NONE, AbilityId.ADAPTABILITY, 495, 65, 150, 40, 15, 80, 145, 45, 70, 198), + ), + new PokemonSpecies(SpeciesId.PIDGEY, 1, false, false, false, "Tiny Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.8, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 251, 40, 45, 40, 35, 35, 56, 255, 70, 50, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.PIDGEOTTO, 1, false, false, false, "Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.1, 30, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 349, 63, 60, 55, 50, 50, 71, 120, 70, 122, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.PIDGEOT, 1, false, false, false, "Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 39.5, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 39.5, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 240, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FLYING, 2.2, 50.5, AbilityId.NO_GUARD, AbilityId.NO_GUARD, AbilityId.NO_GUARD, 579, 83, 80, 80, 135, 80, 121, 45, 70, 240), + ), + new PokemonSpecies(SpeciesId.RATTATA, 1, false, false, false, "Mouse Pokémon", PokemonType.NORMAL, null, 0.3, 3.5, AbilityId.RUN_AWAY, AbilityId.GUTS, AbilityId.HUSTLE, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.RATICATE, 1, false, false, false, "Mouse Pokémon", PokemonType.NORMAL, null, 0.7, 18.5, AbilityId.RUN_AWAY, AbilityId.GUTS, AbilityId.HUSTLE, 413, 55, 81, 60, 50, 70, 97, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.SPEAROW, 1, false, false, false, "Tiny Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2, AbilityId.KEEN_EYE, AbilityId.NONE, AbilityId.SNIPER, 262, 40, 60, 30, 31, 31, 70, 255, 70, 52, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FEAROW, 1, false, false, false, "Beak Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 38, AbilityId.KEEN_EYE, AbilityId.NONE, AbilityId.SNIPER, 442, 65, 90, 65, 61, 61, 100, 90, 70, 155, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.EKANS, 1, false, false, false, "Snake Pokémon", PokemonType.POISON, null, 2, 6.9, AbilityId.INTIMIDATE, AbilityId.SHED_SKIN, AbilityId.UNNERVE, 288, 35, 60, 44, 40, 54, 55, 255, 70, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ARBOK, 1, false, false, false, "Cobra Pokémon", PokemonType.POISON, null, 3.5, 65, AbilityId.INTIMIDATE, AbilityId.SHED_SKIN, AbilityId.UNNERVE, 448, 60, 95, 69, 65, 79, 80, 90, 70, 157, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PIKACHU, 1, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 320, 35, 55, 40, 50, 50, 90, 190, 50, 112, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 320, 35, 55, 40, 50, 50, 90, 190, 50, 112, true, null, true), + new PokemonForm("Partner", "partner", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), + new PokemonForm("Cosplay", "cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Cool Cosplay", "cool-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Beauty Cosplay", "beauty-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Cute Cosplay", "cute-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Smart Cosplay", "smart-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Tough Cosplay", "tough-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ELECTRIC, null, 21, 999.9, AbilityId.LIGHTNING_ROD, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 530, 125, 95, 60, 90, 70, 90, 190, 50, 112), //+100 BST from Partner Form + ), + new PokemonSpecies(SpeciesId.RAICHU, 1, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.8, 30, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 485, 60, 90, 55, 90, 80, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.SANDSHREW, 1, false, false, false, "Mouse Pokémon", PokemonType.GROUND, null, 0.6, 12, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.SAND_RUSH, 300, 50, 75, 85, 20, 30, 40, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SANDSLASH, 1, false, false, false, "Mouse Pokémon", PokemonType.GROUND, null, 1, 29.5, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.SAND_RUSH, 450, 75, 100, 110, 45, 55, 65, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.NIDORAN_F, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.4, 7, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.HUSTLE, 275, 55, 47, 52, 40, 40, 41, 235, 50, 55, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.NIDORINA, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.8, 20, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.HUSTLE, 365, 70, 62, 67, 55, 55, 56, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.NIDOQUEEN, 1, false, false, false, "Drill Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.3, 60, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.SHEER_FORCE, 505, 90, 92, 87, 75, 85, 76, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.NIDORAN_M, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.5, 9, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.HUSTLE, 273, 46, 57, 40, 40, 40, 50, 235, 50, 55, GrowthRate.MEDIUM_SLOW, 100, false), + new PokemonSpecies(SpeciesId.NIDORINO, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.9, 19.5, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.HUSTLE, 365, 61, 72, 57, 55, 55, 65, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 100, false), + new PokemonSpecies(SpeciesId.NIDOKING, 1, false, false, false, "Drill Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.4, 62, AbilityId.POISON_POINT, AbilityId.RIVALRY, AbilityId.SHEER_FORCE, 505, 81, 102, 77, 85, 75, 85, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 100, false), + new PokemonSpecies(SpeciesId.CLEFAIRY, 1, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 0.6, 7.5, AbilityId.CUTE_CHARM, AbilityId.MAGIC_GUARD, AbilityId.FRIEND_GUARD, 323, 70, 45, 48, 60, 65, 35, 150, 140, 113, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.CLEFABLE, 1, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 1.3, 40, AbilityId.CUTE_CHARM, AbilityId.MAGIC_GUARD, AbilityId.UNAWARE, 483, 95, 70, 73, 95, 90, 60, 25, 140, 242, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.VULPIX, 1, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 0.6, 9.9, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.DROUGHT, 299, 38, 41, 40, 50, 65, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 25, false), + new PokemonSpecies(SpeciesId.NINETALES, 1, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 1.1, 19.9, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.DROUGHT, 505, 73, 76, 75, 81, 100, 100, 75, 50, 177, GrowthRate.MEDIUM_FAST, 25, false), + new PokemonSpecies(SpeciesId.JIGGLYPUFF, 1, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.5, 5.5, AbilityId.CUTE_CHARM, AbilityId.COMPETITIVE, AbilityId.FRIEND_GUARD, 270, 115, 45, 20, 45, 25, 20, 170, 50, 95, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.WIGGLYTUFF, 1, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 1, 12, AbilityId.CUTE_CHARM, AbilityId.COMPETITIVE, AbilityId.FRISK, 435, 140, 70, 45, 85, 50, 45, 50, 50, 218, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.ZUBAT, 1, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 0.8, 7.5, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.INFILTRATOR, 245, 40, 45, 35, 30, 40, 55, 255, 50, 49, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.GOLBAT, 1, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 1.6, 55, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.INFILTRATOR, 455, 75, 80, 70, 65, 75, 90, 90, 50, 159, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.ODDISH, 1, false, false, false, "Weed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.5, 5.4, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.RUN_AWAY, 320, 45, 50, 55, 75, 65, 30, 255, 50, 64, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GLOOM, 1, false, false, false, "Weed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.8, 8.6, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.STENCH, 395, 60, 65, 70, 85, 75, 40, 120, 50, 138, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.VILEPLUME, 1, false, false, false, "Flower Pokémon", PokemonType.GRASS, PokemonType.POISON, 1.2, 18.6, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.EFFECT_SPORE, 490, 75, 80, 85, 110, 90, 50, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.PARAS, 1, false, false, false, "Mushroom Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.3, 5.4, AbilityId.EFFECT_SPORE, AbilityId.DRY_SKIN, AbilityId.DAMP, 285, 35, 70, 55, 45, 55, 25, 190, 70, 57, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PARASECT, 1, false, false, false, "Mushroom Pokémon", PokemonType.BUG, PokemonType.GRASS, 1, 29.5, AbilityId.EFFECT_SPORE, AbilityId.DRY_SKIN, AbilityId.DAMP, 405, 60, 95, 80, 60, 80, 30, 75, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.VENONAT, 1, false, false, false, "Insect Pokémon", PokemonType.BUG, PokemonType.POISON, 1, 30, AbilityId.COMPOUND_EYES, AbilityId.TINTED_LENS, AbilityId.RUN_AWAY, 305, 60, 55, 50, 40, 55, 45, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.VENOMOTH, 1, false, false, false, "Poison Moth Pokémon", PokemonType.BUG, PokemonType.POISON, 1.5, 12.5, AbilityId.SHIELD_DUST, AbilityId.TINTED_LENS, AbilityId.WONDER_SKIN, 450, 70, 65, 60, 90, 75, 90, 75, 70, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DIGLETT, 1, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.2, 0.8, AbilityId.SAND_VEIL, AbilityId.ARENA_TRAP, AbilityId.SAND_FORCE, 265, 10, 55, 25, 35, 45, 95, 255, 50, 53, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DUGTRIO, 1, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.7, 33.3, AbilityId.SAND_VEIL, AbilityId.ARENA_TRAP, AbilityId.SAND_FORCE, 425, 35, 100, 50, 50, 70, 120, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MEOWTH, 1, false, false, false, "Scratch Cat Pokémon", PokemonType.NORMAL, null, 0.4, 4.2, AbilityId.PICKUP, AbilityId.TECHNICIAN, AbilityId.UNNERVE, 290, 40, 45, 35, 40, 40, 90, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 0.4, 4.2, AbilityId.PICKUP, AbilityId.TECHNICIAN, AbilityId.UNNERVE, 290, 40, 45, 35, 40, 40, 90, 255, 50, 58, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 33, 999.9, AbilityId.TECHNICIAN, AbilityId.TECHNICIAN, AbilityId.TECHNICIAN, 540, 115, 110, 65, 65, 70, 115, 255, 50, 58), //+100 BST from Persian + ), + new PokemonSpecies(SpeciesId.PERSIAN, 1, false, false, false, "Classy Cat Pokémon", PokemonType.NORMAL, null, 1, 32, AbilityId.LIMBER, AbilityId.TECHNICIAN, AbilityId.UNNERVE, 440, 65, 70, 60, 65, 65, 115, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PSYDUCK, 1, false, false, false, "Duck Pokémon", PokemonType.WATER, null, 0.8, 19.6, AbilityId.DAMP, AbilityId.CLOUD_NINE, AbilityId.SWIFT_SWIM, 320, 50, 52, 48, 65, 50, 55, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GOLDUCK, 1, false, false, false, "Duck Pokémon", PokemonType.WATER, null, 1.7, 76.6, AbilityId.DAMP, AbilityId.CLOUD_NINE, AbilityId.SWIFT_SWIM, 500, 80, 82, 78, 95, 80, 85, 75, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MANKEY, 1, false, false, false, "Pig Monkey Pokémon", PokemonType.FIGHTING, null, 0.5, 28, AbilityId.VITAL_SPIRIT, AbilityId.ANGER_POINT, AbilityId.DEFIANT, 305, 40, 80, 35, 35, 45, 70, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PRIMEAPE, 1, false, false, false, "Pig Monkey Pokémon", PokemonType.FIGHTING, null, 1, 32, AbilityId.VITAL_SPIRIT, AbilityId.ANGER_POINT, AbilityId.DEFIANT, 455, 65, 105, 60, 60, 70, 95, 75, 70, 159, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GROWLITHE, 1, false, false, false, "Puppy Pokémon", PokemonType.FIRE, null, 0.7, 19, AbilityId.INTIMIDATE, AbilityId.FLASH_FIRE, AbilityId.JUSTIFIED, 350, 55, 70, 45, 70, 50, 60, 190, 50, 70, GrowthRate.SLOW, 75, false), + new PokemonSpecies(SpeciesId.ARCANINE, 1, false, false, false, "Legendary Pokémon", PokemonType.FIRE, null, 1.9, 155, AbilityId.INTIMIDATE, AbilityId.FLASH_FIRE, AbilityId.JUSTIFIED, 555, 90, 110, 80, 100, 80, 95, 75, 50, 194, GrowthRate.SLOW, 75, false), + new PokemonSpecies(SpeciesId.POLIWAG, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 0.6, 12.4, AbilityId.WATER_ABSORB, AbilityId.DAMP, AbilityId.SWIFT_SWIM, 300, 40, 50, 40, 40, 40, 90, 255, 50, 60, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.POLIWHIRL, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 1, 20, AbilityId.WATER_ABSORB, AbilityId.DAMP, AbilityId.SWIFT_SWIM, 385, 65, 65, 65, 50, 50, 90, 120, 50, 135, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.POLIWRATH, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.3, 54, AbilityId.WATER_ABSORB, AbilityId.DAMP, AbilityId.SWIFT_SWIM, 510, 90, 95, 95, 70, 90, 70, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ABRA, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 0.9, 19.5, AbilityId.SYNCHRONIZE, AbilityId.INNER_FOCUS, AbilityId.MAGIC_GUARD, 310, 25, 20, 15, 105, 55, 90, 200, 50, 62, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(SpeciesId.KADABRA, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 1.3, 56.5, AbilityId.SYNCHRONIZE, AbilityId.INNER_FOCUS, AbilityId.MAGIC_GUARD, 400, 40, 35, 30, 120, 70, 105, 100, 50, 140, GrowthRate.MEDIUM_SLOW, 75, true), + new PokemonSpecies(SpeciesId.ALAKAZAM, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 1.5, 48, AbilityId.SYNCHRONIZE, AbilityId.INNER_FOCUS, AbilityId.MAGIC_GUARD, 500, 55, 50, 45, 135, 95, 120, 50, 50, 250, GrowthRate.MEDIUM_SLOW, 75, true, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 1.5, 48, AbilityId.SYNCHRONIZE, AbilityId.INNER_FOCUS, AbilityId.MAGIC_GUARD, 500, 55, 50, 45, 135, 95, 120, 50, 50, 250, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, null, 1.2, 48, AbilityId.TRACE, AbilityId.TRACE, AbilityId.TRACE, 600, 55, 50, 65, 175, 105, 150, 50, 50, 250, true), + ), + new PokemonSpecies(SpeciesId.MACHOP, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 0.8, 19.5, AbilityId.GUTS, AbilityId.NO_GUARD, AbilityId.STEADFAST, 305, 70, 80, 50, 35, 35, 35, 180, 50, 61, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(SpeciesId.MACHOKE, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 1.5, 70.5, AbilityId.GUTS, AbilityId.NO_GUARD, AbilityId.STEADFAST, 405, 80, 100, 70, 50, 60, 45, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(SpeciesId.MACHAMP, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 1.6, 130, AbilityId.GUTS, AbilityId.NO_GUARD, AbilityId.STEADFAST, 505, 90, 130, 80, 65, 85, 55, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 75, false, true, + new PokemonForm("Normal", "", PokemonType.FIGHTING, null, 1.6, 130, AbilityId.GUTS, AbilityId.NO_GUARD, AbilityId.STEADFAST, 505, 90, 130, 80, 65, 85, 55, 45, 50, 253, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIGHTING, null, 25, 999.9, AbilityId.GUTS, AbilityId.GUTS, AbilityId.GUTS, 605, 120, 170, 85, 75, 90, 65, 45, 50, 253), + ), + new PokemonSpecies(SpeciesId.BELLSPROUT, 1, false, false, false, "Flower Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.7, 4, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.GLUTTONY, 300, 50, 75, 35, 70, 30, 40, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.WEEPINBELL, 1, false, false, false, "Flycatcher Pokémon", PokemonType.GRASS, PokemonType.POISON, 1, 6.4, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.GLUTTONY, 390, 65, 90, 50, 85, 45, 55, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.VICTREEBEL, 1, false, false, false, "Flycatcher Pokémon", PokemonType.GRASS, PokemonType.POISON, 1.7, 15.5, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.GLUTTONY, 490, 80, 105, 65, 100, 70, 70, 45, 70, 245, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.TENTACOOL, 1, false, false, false, "Jellyfish Pokémon", PokemonType.WATER, PokemonType.POISON, 0.9, 45.5, AbilityId.CLEAR_BODY, AbilityId.LIQUID_OOZE, AbilityId.RAIN_DISH, 335, 40, 40, 35, 50, 100, 70, 190, 50, 67, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.TENTACRUEL, 1, false, false, false, "Jellyfish Pokémon", PokemonType.WATER, PokemonType.POISON, 1.6, 55, AbilityId.CLEAR_BODY, AbilityId.LIQUID_OOZE, AbilityId.RAIN_DISH, 515, 80, 70, 65, 80, 120, 100, 60, 50, 180, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.GEODUDE, 1, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.GROUND, 0.4, 20, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SAND_VEIL, 300, 40, 80, 100, 30, 30, 20, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GRAVELER, 1, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1, 105, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SAND_VEIL, 390, 55, 95, 115, 45, 45, 35, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GOLEM, 1, false, false, false, "Megaton Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1.4, 300, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SAND_VEIL, 495, 80, 120, 130, 55, 65, 45, 45, 70, 248, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.PONYTA, 1, false, false, false, "Fire Horse Pokémon", PokemonType.FIRE, null, 1, 30, AbilityId.RUN_AWAY, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, 410, 50, 85, 55, 65, 65, 90, 190, 50, 82, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RAPIDASH, 1, false, false, false, "Fire Horse Pokémon", PokemonType.FIRE, null, 1.7, 95, AbilityId.RUN_AWAY, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, 500, 65, 100, 70, 80, 80, 105, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SLOWPOKE, 1, false, false, false, "Dopey Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.2, 36, AbilityId.OBLIVIOUS, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 315, 90, 65, 65, 40, 40, 15, 190, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SLOWBRO, 1, false, false, false, "Hermit Crab Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.6, 78.5, AbilityId.OBLIVIOUS, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 75, 110, 100, 80, 30, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.PSYCHIC, 1.6, 78.5, AbilityId.OBLIVIOUS, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 75, 110, 100, 80, 30, 75, 50, 172, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.PSYCHIC, 2, 120, AbilityId.SHELL_ARMOR, AbilityId.SHELL_ARMOR, AbilityId.SHELL_ARMOR, 590, 95, 75, 180, 130, 80, 30, 75, 50, 172), + ), + new PokemonSpecies(SpeciesId.MAGNEMITE, 1, false, false, false, "Magnet Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 0.3, 6, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.ANALYTIC, 325, 25, 35, 70, 95, 55, 45, 190, 50, 65, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.MAGNETON, 1, false, false, false, "Magnet Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 1, 60, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.ANALYTIC, 465, 50, 60, 95, 120, 70, 70, 60, 50, 163, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.FARFETCHD, 1, false, false, false, "Wild Duck Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.8, 15, AbilityId.KEEN_EYE, AbilityId.INNER_FOCUS, AbilityId.DEFIANT, 377, 52, 90, 55, 58, 62, 60, 45, 50, 132, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DODUO, 1, false, false, false, "Twin Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.4, 39.2, AbilityId.RUN_AWAY, AbilityId.EARLY_BIRD, AbilityId.TANGLED_FEET, 310, 35, 85, 45, 35, 35, 75, 190, 70, 62, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.DODRIO, 1, false, false, false, "Triple Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.8, 85.2, AbilityId.RUN_AWAY, AbilityId.EARLY_BIRD, AbilityId.TANGLED_FEET, 470, 60, 110, 70, 60, 60, 110, 45, 70, 165, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.SEEL, 1, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, null, 1.1, 90, AbilityId.THICK_FAT, AbilityId.HYDRATION, AbilityId.ICE_BODY, 325, 65, 45, 55, 45, 70, 45, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DEWGONG, 1, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, PokemonType.ICE, 1.7, 120, AbilityId.THICK_FAT, AbilityId.HYDRATION, AbilityId.ICE_BODY, 475, 90, 70, 80, 70, 95, 70, 75, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GRIMER, 1, false, false, false, "Sludge Pokémon", PokemonType.POISON, null, 0.9, 30, AbilityId.STENCH, AbilityId.STICKY_HOLD, AbilityId.POISON_TOUCH, 325, 80, 80, 50, 40, 50, 25, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MUK, 1, false, false, false, "Sludge Pokémon", PokemonType.POISON, null, 1.2, 30, AbilityId.STENCH, AbilityId.STICKY_HOLD, AbilityId.POISON_TOUCH, 500, 105, 105, 75, 65, 100, 50, 75, 70, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SHELLDER, 1, false, false, false, "Bivalve Pokémon", PokemonType.WATER, null, 0.3, 4, AbilityId.SHELL_ARMOR, AbilityId.SKILL_LINK, AbilityId.OVERCOAT, 305, 30, 65, 100, 45, 25, 40, 190, 50, 61, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.CLOYSTER, 1, false, false, false, "Bivalve Pokémon", PokemonType.WATER, PokemonType.ICE, 1.5, 132.5, AbilityId.SHELL_ARMOR, AbilityId.SKILL_LINK, AbilityId.OVERCOAT, 525, 50, 95, 180, 85, 45, 70, 60, 50, 184, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.GASTLY, 1, false, false, false, "Gas Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.3, 0.1, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 310, 30, 35, 30, 100, 35, 80, 190, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.HAUNTER, 1, false, false, false, "Gas Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.6, 0.1, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 405, 45, 50, 45, 115, 55, 95, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GENGAR, 1, false, false, false, "Shadow Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.5, 40.5, AbilityId.CURSED_BODY, AbilityId.NONE, AbilityId.NONE, 500, 60, 65, 60, 130, 75, 110, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GHOST, PokemonType.POISON, 1.5, 40.5, AbilityId.CURSED_BODY, AbilityId.NONE, AbilityId.NONE, 500, 60, 65, 60, 130, 75, 110, 45, 50, 250, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GHOST, PokemonType.POISON, 1.4, 40.5, AbilityId.SHADOW_TAG, AbilityId.NONE, AbilityId.NONE, 600, 60, 65, 80, 170, 95, 130, 45, 50, 250), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GHOST, PokemonType.POISON, 20, 999.9, AbilityId.CURSED_BODY, AbilityId.NONE, AbilityId.NONE, 600, 140, 65, 70, 140, 85, 100, 45, 50, 250), + ), + new PokemonSpecies(SpeciesId.ONIX, 1, false, false, false, "Rock Snake Pokémon", PokemonType.ROCK, PokemonType.GROUND, 8.8, 210, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.WEAK_ARMOR, 385, 35, 45, 160, 30, 45, 70, 45, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DROWZEE, 1, false, false, false, "Hypnosis Pokémon", PokemonType.PSYCHIC, null, 1, 32.4, AbilityId.INSOMNIA, AbilityId.FOREWARN, AbilityId.INNER_FOCUS, 328, 60, 48, 45, 43, 90, 42, 190, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HYPNO, 1, false, false, false, "Hypnosis Pokémon", PokemonType.PSYCHIC, null, 1.6, 75.6, AbilityId.INSOMNIA, AbilityId.FOREWARN, AbilityId.INNER_FOCUS, 483, 85, 73, 70, 73, 115, 67, 75, 70, 169, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.KRABBY, 1, false, false, false, "River Crab Pokémon", PokemonType.WATER, null, 0.4, 6.5, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.SHEER_FORCE, 325, 30, 105, 90, 25, 25, 50, 225, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.KINGLER, 1, false, false, false, "Pincer Pokémon", PokemonType.WATER, null, 1.3, 60, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.SHEER_FORCE, 475, 55, 130, 115, 50, 50, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, null, 1.3, 60, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.SHEER_FORCE, 475, 55, 130, 115, 50, 50, 75, 60, 50, 166, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, null, 19, 999.9, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, 575, 92, 145, 140, 60, 65, 73, 60, 50, 166), + ), + new PokemonSpecies(SpeciesId.VOLTORB, 1, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, null, 0.5, 10.4, AbilityId.SOUNDPROOF, AbilityId.STATIC, AbilityId.AFTERMATH, 330, 40, 30, 50, 55, 55, 100, 190, 70, 66, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.ELECTRODE, 1, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, null, 1.2, 66.6, AbilityId.SOUNDPROOF, AbilityId.STATIC, AbilityId.AFTERMATH, 490, 60, 50, 70, 80, 80, 150, 60, 70, 172, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.EXEGGCUTE, 1, false, false, false, "Egg Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 0.4, 2.5, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.HARVEST, 325, 60, 40, 80, 60, 45, 40, 90, 50, 65, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.EXEGGUTOR, 1, false, false, false, "Coconut Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 2, 120, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.HARVEST, 530, 95, 95, 85, 125, 75, 55, 45, 50, 186, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.CUBONE, 1, false, false, false, "Lonely Pokémon", PokemonType.GROUND, null, 0.4, 6.5, AbilityId.ROCK_HEAD, AbilityId.LIGHTNING_ROD, AbilityId.BATTLE_ARMOR, 320, 50, 50, 95, 40, 50, 35, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MAROWAK, 1, false, false, false, "Bone Keeper Pokémon", PokemonType.GROUND, null, 1, 45, AbilityId.ROCK_HEAD, AbilityId.LIGHTNING_ROD, AbilityId.BATTLE_ARMOR, 425, 60, 80, 110, 50, 80, 45, 75, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HITMONLEE, 1, false, false, false, "Kicking Pokémon", PokemonType.FIGHTING, null, 1.5, 49.8, AbilityId.LIMBER, AbilityId.RECKLESS, AbilityId.UNBURDEN, 455, 50, 120, 53, 35, 110, 87, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.HITMONCHAN, 1, false, false, false, "Punching Pokémon", PokemonType.FIGHTING, null, 1.4, 50.2, AbilityId.KEEN_EYE, AbilityId.IRON_FIST, AbilityId.INNER_FOCUS, 455, 50, 105, 79, 35, 110, 76, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.LICKITUNG, 1, false, false, false, "Licking Pokémon", PokemonType.NORMAL, null, 1.2, 65.5, AbilityId.OWN_TEMPO, AbilityId.OBLIVIOUS, AbilityId.CLOUD_NINE, 385, 90, 55, 75, 60, 75, 30, 45, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.KOFFING, 1, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, null, 0.6, 1, AbilityId.LEVITATE, AbilityId.NEUTRALIZING_GAS, AbilityId.STENCH, 340, 40, 65, 95, 60, 45, 35, 190, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WEEZING, 1, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, null, 1.2, 9.5, AbilityId.LEVITATE, AbilityId.NEUTRALIZING_GAS, AbilityId.STENCH, 490, 65, 90, 120, 85, 70, 60, 60, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RHYHORN, 1, false, false, false, "Spikes Pokémon", PokemonType.GROUND, PokemonType.ROCK, 1, 115, AbilityId.LIGHTNING_ROD, AbilityId.ROCK_HEAD, AbilityId.RECKLESS, 345, 80, 85, 95, 30, 30, 25, 120, 50, 69, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.RHYDON, 1, false, false, false, "Drill Pokémon", PokemonType.GROUND, PokemonType.ROCK, 1.9, 120, AbilityId.LIGHTNING_ROD, AbilityId.ROCK_HEAD, AbilityId.RECKLESS, 485, 105, 130, 120, 45, 45, 40, 60, 50, 170, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.CHANSEY, 1, false, false, false, "Egg Pokémon", PokemonType.NORMAL, null, 1.1, 34.6, AbilityId.NATURAL_CURE, AbilityId.SERENE_GRACE, AbilityId.HEALER, 450, 250, 5, 5, 35, 105, 50, 30, 140, 395, GrowthRate.FAST, 0, false), + new PokemonSpecies(SpeciesId.TANGELA, 1, false, false, false, "Vine Pokémon", PokemonType.GRASS, null, 1, 35, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.REGENERATOR, 435, 65, 55, 115, 100, 40, 60, 45, 50, 87, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.KANGASKHAN, 1, false, false, false, "Parent Pokémon", PokemonType.NORMAL, null, 2.2, 80, AbilityId.EARLY_BIRD, AbilityId.SCRAPPY, AbilityId.INNER_FOCUS, 490, 105, 95, 80, 40, 80, 90, 45, 50, 172, GrowthRate.MEDIUM_FAST, 0, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 2.2, 80, AbilityId.EARLY_BIRD, AbilityId.SCRAPPY, AbilityId.INNER_FOCUS, 490, 105, 95, 80, 40, 80, 90, 45, 50, 172, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, null, 2.2, 100, AbilityId.PARENTAL_BOND, AbilityId.PARENTAL_BOND, AbilityId.PARENTAL_BOND, 590, 105, 125, 100, 60, 100, 100, 45, 50, 172), + ), + new PokemonSpecies(SpeciesId.HORSEA, 1, false, false, false, "Dragon Pokémon", PokemonType.WATER, null, 0.4, 8, AbilityId.SWIFT_SWIM, AbilityId.SNIPER, AbilityId.DAMP, 295, 30, 40, 70, 70, 25, 60, 225, 50, 59, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SEADRA, 1, false, false, false, "Dragon Pokémon", PokemonType.WATER, null, 1.2, 25, AbilityId.POISON_POINT, AbilityId.SNIPER, AbilityId.DAMP, 440, 55, 65, 95, 95, 45, 85, 75, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GOLDEEN, 1, false, false, false, "Goldfish Pokémon", PokemonType.WATER, null, 0.6, 15, AbilityId.SWIFT_SWIM, AbilityId.WATER_VEIL, AbilityId.LIGHTNING_ROD, 320, 45, 67, 60, 35, 50, 63, 225, 50, 64, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.SEAKING, 1, false, false, false, "Goldfish Pokémon", PokemonType.WATER, null, 1.3, 39, AbilityId.SWIFT_SWIM, AbilityId.WATER_VEIL, AbilityId.LIGHTNING_ROD, 450, 80, 92, 65, 65, 80, 68, 60, 50, 158, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.STARYU, 1, false, false, false, "Star Shape Pokémon", PokemonType.WATER, null, 0.8, 34.5, AbilityId.ILLUMINATE, AbilityId.NATURAL_CURE, AbilityId.ANALYTIC, 340, 30, 45, 55, 70, 55, 85, 225, 50, 68, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.STARMIE, 1, false, false, false, "Mysterious Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.1, 80, AbilityId.ILLUMINATE, AbilityId.NATURAL_CURE, AbilityId.ANALYTIC, 520, 60, 75, 85, 100, 85, 115, 60, 50, 182, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.MR_MIME, 1, false, false, false, "Barrier Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.3, 54.5, AbilityId.SOUNDPROOF, AbilityId.FILTER, AbilityId.TECHNICIAN, 460, 40, 45, 65, 100, 120, 90, 45, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SCYTHER, 1, false, false, false, "Mantis Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.5, 56, AbilityId.SWARM, AbilityId.TECHNICIAN, AbilityId.STEADFAST, 500, 70, 110, 80, 55, 80, 105, 45, 50, 100, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.JYNX, 1, false, false, false, "Human Shape Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.4, 40.6, AbilityId.OBLIVIOUS, AbilityId.FOREWARN, AbilityId.DRY_SKIN, 455, 65, 50, 35, 115, 95, 95, 45, 50, 159, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.ELECTABUZZ, 1, false, false, false, "Electric Pokémon", PokemonType.ELECTRIC, null, 1.1, 30, AbilityId.STATIC, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 490, 65, 83, 57, 95, 85, 105, 45, 50, 172, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(SpeciesId.MAGMAR, 1, false, false, false, "Spitfire Pokémon", PokemonType.FIRE, null, 1.3, 44.5, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 495, 65, 95, 57, 100, 85, 93, 45, 50, 173, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(SpeciesId.PINSIR, 1, false, false, false, "Stag Beetle Pokémon", PokemonType.BUG, null, 1.5, 55, AbilityId.HYPER_CUTTER, AbilityId.MOLD_BREAKER, AbilityId.MOXIE, 500, 65, 125, 100, 55, 70, 85, 45, 50, 175, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.BUG, null, 1.5, 55, AbilityId.HYPER_CUTTER, AbilityId.MOLD_BREAKER, AbilityId.MOXIE, 500, 65, 125, 100, 55, 70, 85, 45, 50, 175, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.FLYING, 1.7, 59, AbilityId.AERILATE, AbilityId.AERILATE, AbilityId.AERILATE, 600, 65, 155, 120, 65, 90, 105, 45, 50, 175), + ), + new PokemonSpecies(SpeciesId.TAUROS, 1, false, false, false, "Wild Bull Pokémon", PokemonType.NORMAL, null, 1.4, 88.4, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.SHEER_FORCE, 490, 75, 100, 95, 40, 70, 110, 45, 50, 172, GrowthRate.SLOW, 100, false), + new PokemonSpecies(SpeciesId.MAGIKARP, 1, false, false, false, "Fish Pokémon", PokemonType.WATER, null, 0.9, 10, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.RATTLED, 200, 20, 10, 55, 15, 20, 80, 255, 50, 40, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.GYARADOS, 1, false, false, false, "Atrocious Pokémon", PokemonType.WATER, PokemonType.FLYING, 6.5, 235, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.MOXIE, 540, 95, 125, 79, 60, 100, 81, 45, 50, 189, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.FLYING, 6.5, 235, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.MOXIE, 540, 95, 125, 79, 60, 100, 81, 45, 50, 189, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.DARK, 6.5, 305, AbilityId.MOLD_BREAKER, AbilityId.MOLD_BREAKER, AbilityId.MOLD_BREAKER, 640, 95, 155, 109, 70, 130, 81, 45, 50, 189, true), + ), + new PokemonSpecies(SpeciesId.LAPRAS, 1, false, false, false, "Transport Pokémon", PokemonType.WATER, PokemonType.ICE, 2.5, 220, AbilityId.WATER_ABSORB, AbilityId.SHELL_ARMOR, AbilityId.HYDRATION, 535, 130, 85, 80, 85, 95, 60, 45, 50, 187, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.ICE, 2.5, 220, AbilityId.WATER_ABSORB, AbilityId.SHELL_ARMOR, AbilityId.HYDRATION, 535, 130, 85, 80, 85, 95, 60, 45, 50, 187, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.ICE, 24, 999.9, AbilityId.SHIELD_DUST, AbilityId.SHIELD_DUST, AbilityId.SHIELD_DUST, 635, 170, 97, 85, 107, 111, 65, 45, 50, 187), + ), + new PokemonSpecies(SpeciesId.DITTO, 1, false, false, false, "Transform Pokémon", PokemonType.NORMAL, null, 0.3, 4, AbilityId.LIMBER, AbilityId.NONE, AbilityId.IMPOSTER, 288, 48, 48, 48, 48, 48, 48, 35, 50, 101, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.EEVEE, 1, false, false, false, "Evolution Pokémon", PokemonType.NORMAL, null, 0.3, 6.5, AbilityId.RUN_AWAY, AbilityId.ADAPTABILITY, AbilityId.ANTICIPATION, 325, 55, 55, 50, 45, 65, 55, 45, 50, 65, GrowthRate.MEDIUM_FAST, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 0.3, 6.5, AbilityId.RUN_AWAY, AbilityId.ADAPTABILITY, AbilityId.ANTICIPATION, 325, 55, 55, 50, 45, 65, 55, 45, 50, 65, false, null, true), + new PokemonForm("Partner", "partner", PokemonType.NORMAL, null, 0.3, 6.5, AbilityId.RUN_AWAY, AbilityId.ADAPTABILITY, AbilityId.ANTICIPATION, 435, 65, 75, 70, 65, 85, 75, 45, 50, 65, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 18, 999.9, AbilityId.PROTEAN, AbilityId.PROTEAN, AbilityId.PROTEAN, 535, 110, 95, 70, 90, 85, 85, 45, 50, 65), //+100 BST from Partner Form + ), + new PokemonSpecies(SpeciesId.VAPOREON, 1, false, false, false, "Bubble Jet Pokémon", PokemonType.WATER, null, 1, 29, AbilityId.WATER_ABSORB, AbilityId.NONE, AbilityId.HYDRATION, 525, 130, 65, 60, 110, 95, 65, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.JOLTEON, 1, false, false, false, "Lightning Pokémon", PokemonType.ELECTRIC, null, 0.8, 24.5, AbilityId.VOLT_ABSORB, AbilityId.NONE, AbilityId.QUICK_FEET, 525, 65, 65, 60, 110, 95, 130, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.FLAREON, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, null, 0.9, 25, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.GUTS, 525, 65, 130, 60, 95, 110, 65, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.PORYGON, 1, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.8, 36.5, AbilityId.TRACE, AbilityId.DOWNLOAD, AbilityId.ANALYTIC, 395, 65, 60, 70, 85, 75, 40, 45, 50, 79, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.OMANYTE, 1, false, false, false, "Spiral Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.4, 7.5, AbilityId.SWIFT_SWIM, AbilityId.SHELL_ARMOR, AbilityId.WEAK_ARMOR, 355, 35, 40, 100, 90, 55, 35, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.OMASTAR, 1, false, false, false, "Spiral Pokémon", PokemonType.ROCK, PokemonType.WATER, 1, 35, AbilityId.SWIFT_SWIM, AbilityId.SHELL_ARMOR, AbilityId.WEAK_ARMOR, 495, 70, 60, 125, 115, 70, 55, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.KABUTO, 1, false, false, false, "Shellfish Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.5, 11.5, AbilityId.SWIFT_SWIM, AbilityId.BATTLE_ARMOR, AbilityId.WEAK_ARMOR, 355, 30, 80, 90, 55, 45, 55, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.KABUTOPS, 1, false, false, false, "Shellfish Pokémon", PokemonType.ROCK, PokemonType.WATER, 1.3, 40.5, AbilityId.SWIFT_SWIM, AbilityId.BATTLE_ARMOR, AbilityId.WEAK_ARMOR, 495, 60, 115, 105, 65, 70, 80, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.AERODACTYL, 1, false, false, false, "Fossil Pokémon", PokemonType.ROCK, PokemonType.FLYING, 1.8, 59, AbilityId.ROCK_HEAD, AbilityId.PRESSURE, AbilityId.UNNERVE, 515, 80, 105, 65, 60, 75, 130, 45, 50, 180, GrowthRate.SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FLYING, 1.8, 59, AbilityId.ROCK_HEAD, AbilityId.PRESSURE, AbilityId.UNNERVE, 515, 80, 105, 65, 60, 75, 130, 45, 50, 180, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.FLYING, 2.1, 79, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, 615, 80, 135, 85, 70, 95, 150, 45, 50, 180), + ), + new PokemonSpecies(SpeciesId.SNORLAX, 1, false, false, false, "Sleeping Pokémon", PokemonType.NORMAL, null, 2.1, 460, AbilityId.IMMUNITY, AbilityId.THICK_FAT, AbilityId.GLUTTONY, 540, 160, 110, 65, 65, 110, 30, 25, 50, 189, GrowthRate.SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 2.1, 460, AbilityId.IMMUNITY, AbilityId.THICK_FAT, AbilityId.GLUTTONY, 540, 160, 110, 65, 65, 110, 30, 25, 50, 189, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 35, 999.9, AbilityId.HARVEST, AbilityId.HARVEST, AbilityId.HARVEST, 640, 210, 135, 70, 90, 115, 20, 25, 50, 189), + ), + new PokemonSpecies(SpeciesId.ARTICUNO, 1, true, false, false, "Freeze Pokémon", PokemonType.ICE, PokemonType.FLYING, 1.7, 55.4, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.SNOW_CLOAK, 580, 90, 85, 100, 95, 125, 85, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ZAPDOS, 1, true, false, false, "Electric Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.6, 52.6, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.STATIC, 580, 90, 90, 85, 125, 90, 100, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.MOLTRES, 1, true, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FLYING, 2, 60, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.FLAME_BODY, 580, 90, 100, 90, 125, 85, 90, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.DRATINI, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 1.8, 3.3, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.MARVEL_SCALE, 300, 41, 64, 45, 50, 50, 50, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.DRAGONAIR, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 4, 16.5, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.MARVEL_SCALE, 420, 61, 84, 65, 70, 70, 70, 45, 35, 147, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.DRAGONITE, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 2.2, 210, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.MULTISCALE, 600, 91, 134, 95, 100, 100, 80, 45, 35, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.MEWTWO, 1, false, true, false, "Genetic Pokémon", PokemonType.PSYCHIC, null, 2, 122, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.UNNERVE, 680, 106, 110, 90, 154, 90, 130, 3, 0, 340, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 2, 122, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.UNNERVE, 680, 106, 110, 90, 154, 90, 130, 3, 0, 340, false, null, true), + new PokemonForm("Mega X", SpeciesFormKey.MEGA_X, PokemonType.PSYCHIC, PokemonType.FIGHTING, 2.3, 127, AbilityId.STEADFAST, AbilityId.NONE, AbilityId.STEADFAST, 780, 106, 190, 100, 154, 100, 130, 3, 0, 340), + new PokemonForm("Mega Y", SpeciesFormKey.MEGA_Y, PokemonType.PSYCHIC, null, 1.5, 33, AbilityId.INSOMNIA, AbilityId.NONE, AbilityId.INSOMNIA, 780, 106, 150, 70, 194, 120, 140, 3, 0, 340), + ), + new PokemonSpecies(SpeciesId.MEW, 1, false, false, true, "New Species Pokémon", PokemonType.PSYCHIC, null, 0.4, 4, AbilityId.SYNCHRONIZE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(SpeciesId.CHIKORITA, 2, false, false, false, "Leaf Pokémon", PokemonType.GRASS, null, 0.9, 6.4, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LEAF_GUARD, 318, 45, 49, 65, 49, 65, 45, 45, 70, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.BAYLEEF, 2, false, false, false, "Leaf Pokémon", PokemonType.GRASS, null, 1.2, 15.8, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LEAF_GUARD, 405, 60, 62, 80, 63, 80, 60, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.MEGANIUM, 2, false, false, false, "Herb Pokémon", PokemonType.GRASS, null, 1.8, 100.5, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LEAF_GUARD, 525, 80, 82, 100, 83, 100, 80, 45, 70, 263, GrowthRate.MEDIUM_SLOW, 87.5, true), + new PokemonSpecies(SpeciesId.CYNDAQUIL, 2, false, false, false, "Fire Mouse Pokémon", PokemonType.FIRE, null, 0.5, 7.9, AbilityId.BLAZE, AbilityId.NONE, AbilityId.FLASH_FIRE, 309, 39, 52, 43, 60, 50, 65, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.QUILAVA, 2, false, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 0.9, 19, AbilityId.BLAZE, AbilityId.NONE, AbilityId.FLASH_FIRE, 405, 58, 64, 58, 80, 65, 80, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.TYPHLOSION, 2, false, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 1.7, 79.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.FLASH_FIRE, 534, 78, 84, 78, 109, 85, 100, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.TOTODILE, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 0.6, 9.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHEER_FORCE, 314, 50, 65, 64, 44, 48, 43, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.CROCONAW, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 1.1, 25, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHEER_FORCE, 405, 65, 80, 80, 59, 63, 58, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.FERALIGATR, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 2.3, 88.8, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHEER_FORCE, 530, 85, 105, 100, 79, 83, 78, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.SENTRET, 2, false, false, false, "Scout Pokémon", PokemonType.NORMAL, null, 0.8, 6, AbilityId.RUN_AWAY, AbilityId.KEEN_EYE, AbilityId.FRISK, 215, 35, 46, 34, 35, 45, 20, 255, 70, 43, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FURRET, 2, false, false, false, "Long Body Pokémon", PokemonType.NORMAL, null, 1.8, 32.5, AbilityId.RUN_AWAY, AbilityId.KEEN_EYE, AbilityId.FRISK, 415, 85, 76, 64, 45, 55, 90, 90, 70, 145, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HOOTHOOT, 2, false, false, false, "Owl Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.7, 21.2, AbilityId.INSOMNIA, AbilityId.KEEN_EYE, AbilityId.TINTED_LENS, 262, 60, 30, 30, 36, 56, 50, 255, 50, 52, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.NOCTOWL, 2, false, false, false, "Owl Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.6, 40.8, AbilityId.INSOMNIA, AbilityId.KEEN_EYE, AbilityId.TINTED_LENS, 452, 100, 50, 50, 86, 96, 70, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LEDYBA, 2, false, false, false, "Five Star Pokémon", PokemonType.BUG, PokemonType.FLYING, 1, 10.8, AbilityId.SWARM, AbilityId.EARLY_BIRD, AbilityId.RATTLED, 265, 40, 20, 30, 40, 80, 55, 255, 70, 53, GrowthRate.FAST, 50, true), + new PokemonSpecies(SpeciesId.LEDIAN, 2, false, false, false, "Five Star Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.4, 35.6, AbilityId.SWARM, AbilityId.EARLY_BIRD, AbilityId.IRON_FIST, 390, 55, 35, 50, 55, 110, 85, 90, 70, 137, GrowthRate.FAST, 50, true), + new PokemonSpecies(SpeciesId.SPINARAK, 2, false, false, false, "String Spit Pokémon", PokemonType.BUG, PokemonType.POISON, 0.5, 8.5, AbilityId.SWARM, AbilityId.INSOMNIA, AbilityId.SNIPER, 250, 40, 60, 40, 40, 40, 30, 255, 70, 50, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.ARIADOS, 2, false, false, false, "Long Leg Pokémon", PokemonType.BUG, PokemonType.POISON, 1.1, 33.5, AbilityId.SWARM, AbilityId.INSOMNIA, AbilityId.SNIPER, 400, 70, 90, 70, 60, 70, 40, 90, 70, 140, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.CROBAT, 2, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 1.8, 75, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.INFILTRATOR, 535, 85, 90, 80, 70, 80, 130, 90, 50, 268, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CHINCHOU, 2, false, false, false, "Angler Pokémon", PokemonType.WATER, PokemonType.ELECTRIC, 0.5, 12, AbilityId.VOLT_ABSORB, AbilityId.ILLUMINATE, AbilityId.WATER_ABSORB, 330, 75, 38, 38, 56, 56, 67, 190, 50, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.LANTURN, 2, false, false, false, "Light Pokémon", PokemonType.WATER, PokemonType.ELECTRIC, 1.2, 22.5, AbilityId.VOLT_ABSORB, AbilityId.ILLUMINATE, AbilityId.WATER_ABSORB, 460, 125, 58, 58, 76, 76, 67, 75, 50, 161, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.PICHU, 2, false, false, false, "Tiny Mouse Pokémon", PokemonType.ELECTRIC, null, 0.3, 2, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.4, 2, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), + new PokemonForm("Spiky-Eared", "spiky", PokemonType.ELECTRIC, null, 1.4, 2, AbilityId.STATIC, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), + ), + new PokemonSpecies(SpeciesId.CLEFFA, 2, false, false, false, "Star Shape Pokémon", PokemonType.FAIRY, null, 0.3, 3, AbilityId.CUTE_CHARM, AbilityId.MAGIC_GUARD, AbilityId.FRIEND_GUARD, 218, 50, 25, 28, 45, 55, 15, 150, 140, 44, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.IGGLYBUFF, 2, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.3, 1, AbilityId.CUTE_CHARM, AbilityId.COMPETITIVE, AbilityId.FRIEND_GUARD, 210, 90, 30, 15, 40, 20, 15, 170, 50, 42, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.TOGEPI, 2, false, false, false, "Spike Ball Pokémon", PokemonType.FAIRY, null, 0.3, 1.5, AbilityId.HUSTLE, AbilityId.SERENE_GRACE, AbilityId.SUPER_LUCK, 245, 35, 20, 65, 40, 65, 20, 190, 50, 49, GrowthRate.FAST, 87.5, false), + new PokemonSpecies(SpeciesId.TOGETIC, 2, false, false, false, "Happiness Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 0.6, 3.2, AbilityId.HUSTLE, AbilityId.SERENE_GRACE, AbilityId.SUPER_LUCK, 405, 55, 40, 85, 80, 105, 40, 75, 50, 142, GrowthRate.FAST, 87.5, false), + new PokemonSpecies(SpeciesId.NATU, 2, false, false, false, "Tiny Bird Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.2, 2, AbilityId.SYNCHRONIZE, AbilityId.EARLY_BIRD, AbilityId.MAGIC_BOUNCE, 320, 40, 50, 45, 70, 45, 70, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.XATU, 2, false, false, false, "Mystic Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.5, 15, AbilityId.SYNCHRONIZE, AbilityId.EARLY_BIRD, AbilityId.MAGIC_BOUNCE, 470, 65, 75, 70, 95, 70, 95, 75, 50, 165, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.MAREEP, 2, false, false, false, "Wool Pokémon", PokemonType.ELECTRIC, null, 0.6, 7.8, AbilityId.STATIC, AbilityId.NONE, AbilityId.PLUS, 280, 55, 40, 40, 65, 45, 35, 235, 70, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.FLAAFFY, 2, false, false, false, "Wool Pokémon", PokemonType.ELECTRIC, null, 0.8, 13.3, AbilityId.STATIC, AbilityId.NONE, AbilityId.PLUS, 365, 70, 55, 55, 80, 60, 45, 120, 70, 128, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.AMPHAROS, 2, false, false, false, "Light Pokémon", PokemonType.ELECTRIC, null, 1.4, 61.5, AbilityId.STATIC, AbilityId.NONE, AbilityId.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 255, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.4, 61.5, AbilityId.STATIC, AbilityId.NONE, AbilityId.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 255, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ELECTRIC, PokemonType.DRAGON, 1.4, 61.5, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.MOLD_BREAKER, 610, 90, 95, 105, 165, 110, 45, 45, 70, 255), + ), + new PokemonSpecies(SpeciesId.BELLOSSOM, 2, false, false, false, "Flower Pokémon", PokemonType.GRASS, null, 0.4, 5.8, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.HEALER, 490, 75, 80, 95, 90, 100, 50, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.MARILL, 2, false, false, false, "Aqua Mouse Pokémon", PokemonType.WATER, PokemonType.FAIRY, 0.4, 8.5, AbilityId.THICK_FAT, AbilityId.HUGE_POWER, AbilityId.SAP_SIPPER, 250, 70, 20, 50, 20, 50, 40, 190, 50, 88, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.AZUMARILL, 2, false, false, false, "Aqua Rabbit Pokémon", PokemonType.WATER, PokemonType.FAIRY, 0.8, 28.5, AbilityId.THICK_FAT, AbilityId.HUGE_POWER, AbilityId.SAP_SIPPER, 420, 100, 50, 80, 60, 80, 50, 75, 50, 210, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.SUDOWOODO, 2, false, false, false, "Imitation Pokémon", PokemonType.ROCK, null, 1.2, 38, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.RATTLED, 410, 70, 100, 115, 30, 65, 30, 65, 50, 144, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.POLITOED, 2, false, false, false, "Frog Pokémon", PokemonType.WATER, null, 1.1, 33.9, AbilityId.WATER_ABSORB, AbilityId.DAMP, AbilityId.DRIZZLE, 500, 90, 75, 75, 90, 100, 70, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.HOPPIP, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.4, 0.5, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.INFILTRATOR, 250, 35, 35, 40, 35, 55, 50, 255, 70, 50, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SKIPLOOM, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.6, 1, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.INFILTRATOR, 340, 55, 45, 50, 45, 65, 80, 120, 70, 119, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.JUMPLUFF, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.8, 3, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.INFILTRATOR, 460, 75, 55, 70, 55, 95, 110, 45, 70, 230, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.AIPOM, 2, false, false, false, "Long Tail Pokémon", PokemonType.NORMAL, null, 0.8, 11.5, AbilityId.RUN_AWAY, AbilityId.PICKUP, AbilityId.SKILL_LINK, 360, 55, 70, 55, 40, 55, 85, 45, 70, 72, GrowthRate.FAST, 50, true), + new PokemonSpecies(SpeciesId.SUNKERN, 2, false, false, false, "Seed Pokémon", PokemonType.GRASS, null, 0.3, 1.8, AbilityId.CHLOROPHYLL, AbilityId.SOLAR_POWER, AbilityId.EARLY_BIRD, 180, 30, 30, 30, 30, 30, 30, 235, 70, 36, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SUNFLORA, 2, false, false, false, "Sun Pokémon", PokemonType.GRASS, null, 0.8, 8.5, AbilityId.CHLOROPHYLL, AbilityId.SOLAR_POWER, AbilityId.EARLY_BIRD, 425, 75, 75, 55, 105, 85, 30, 120, 70, 149, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.YANMA, 2, false, false, false, "Clear Wing Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 38, AbilityId.SPEED_BOOST, AbilityId.COMPOUND_EYES, AbilityId.FRISK, 390, 65, 65, 45, 75, 45, 95, 75, 70, 78, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WOOPER, 2, false, false, false, "Water Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.4, 8.5, AbilityId.DAMP, AbilityId.WATER_ABSORB, AbilityId.UNAWARE, 210, 55, 45, 45, 25, 25, 15, 255, 50, 42, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.QUAGSIRE, 2, false, false, false, "Water Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.4, 75, AbilityId.DAMP, AbilityId.WATER_ABSORB, AbilityId.UNAWARE, 430, 95, 85, 85, 65, 65, 35, 90, 50, 151, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.ESPEON, 2, false, false, false, "Sun Pokémon", PokemonType.PSYCHIC, null, 0.9, 26.5, AbilityId.SYNCHRONIZE, AbilityId.NONE, AbilityId.MAGIC_BOUNCE, 525, 65, 65, 60, 130, 95, 110, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.UMBREON, 2, false, false, false, "Moonlight Pokémon", PokemonType.DARK, null, 1, 27, AbilityId.SYNCHRONIZE, AbilityId.NONE, AbilityId.INNER_FOCUS, 525, 95, 65, 110, 60, 130, 65, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.MURKROW, 2, false, false, false, "Darkness Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.5, 2.1, AbilityId.INSOMNIA, AbilityId.SUPER_LUCK, AbilityId.PRANKSTER, 405, 60, 85, 42, 85, 42, 91, 30, 35, 81, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.SLOWKING, 2, false, false, false, "Royal Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 2, 79.5, AbilityId.OBLIVIOUS, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 75, 80, 100, 110, 30, 70, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MISDREAVUS, 2, false, false, false, "Screech Pokémon", PokemonType.GHOST, null, 0.7, 1, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 435, 60, 60, 60, 85, 85, 85, 45, 35, 87, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.UNOWN, 2, false, false, false, "Symbol Pokémon", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, GrowthRate.MEDIUM_FAST, null, false, false, + new PokemonForm("A", "a", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("B", "b", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("C", "c", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("D", "d", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("E", "e", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("F", "f", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("G", "g", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("H", "h", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("I", "i", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("J", "j", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("K", "k", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("L", "l", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("M", "m", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("N", "n", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("O", "o", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("P", "p", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("Q", "q", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("R", "r", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("S", "s", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("T", "t", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("U", "u", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("V", "v", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("W", "w", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("X", "x", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("Y", "y", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("Z", "z", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("!", "exclamation", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("?", "question", PokemonType.PSYCHIC, null, 0.5, 5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + ), + new PokemonSpecies(SpeciesId.WOBBUFFET, 2, false, false, false, "Patient Pokémon", PokemonType.PSYCHIC, null, 1.3, 28.5, AbilityId.SHADOW_TAG, AbilityId.NONE, AbilityId.TELEPATHY, 405, 190, 33, 58, 33, 58, 33, 45, 50, 142, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.GIRAFARIG, 2, false, false, false, "Long Neck Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.5, 41.5, AbilityId.INNER_FOCUS, AbilityId.EARLY_BIRD, AbilityId.SAP_SIPPER, 455, 70, 80, 65, 90, 65, 85, 60, 70, 159, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.PINECO, 2, false, false, false, "Bagworm Pokémon", PokemonType.BUG, null, 0.6, 7.2, AbilityId.STURDY, AbilityId.NONE, AbilityId.OVERCOAT, 290, 50, 65, 90, 35, 35, 15, 190, 70, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FORRETRESS, 2, false, false, false, "Bagworm Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.2, 125.8, AbilityId.STURDY, AbilityId.NONE, AbilityId.OVERCOAT, 465, 75, 90, 140, 60, 60, 40, 75, 70, 163, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DUNSPARCE, 2, false, false, false, "Land Snake Pokémon", PokemonType.NORMAL, null, 1.5, 14, AbilityId.SERENE_GRACE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 415, 100, 70, 70, 65, 65, 45, 190, 50, 145, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GLIGAR, 2, false, false, false, "Fly Scorpion Pokémon", PokemonType.GROUND, PokemonType.FLYING, 1.1, 64.8, AbilityId.HYPER_CUTTER, AbilityId.SAND_VEIL, AbilityId.IMMUNITY, 430, 65, 75, 105, 35, 65, 85, 60, 70, 86, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.STEELIX, 2, false, false, false, "Iron Snake Pokémon", PokemonType.STEEL, PokemonType.GROUND, 9.2, 400, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SHEER_FORCE, 510, 75, 85, 200, 55, 65, 30, 25, 50, 179, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.GROUND, 9.2, 400, AbilityId.ROCK_HEAD, AbilityId.STURDY, AbilityId.SHEER_FORCE, 510, 75, 85, 200, 55, 65, 30, 25, 50, 179, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.GROUND, 10.5, 740, AbilityId.SAND_FORCE, AbilityId.SAND_FORCE, AbilityId.SAND_FORCE, 610, 75, 125, 230, 55, 95, 30, 25, 50, 179, true), + ), + new PokemonSpecies(SpeciesId.SNUBBULL, 2, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 0.6, 7.8, AbilityId.INTIMIDATE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 300, 60, 80, 50, 40, 40, 30, 190, 70, 60, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.GRANBULL, 2, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 1.4, 48.7, AbilityId.INTIMIDATE, AbilityId.QUICK_FEET, AbilityId.RATTLED, 450, 90, 120, 75, 60, 60, 45, 75, 70, 158, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.QWILFISH, 2, false, false, false, "Balloon Pokémon", PokemonType.WATER, PokemonType.POISON, 0.5, 3.9, AbilityId.POISON_POINT, AbilityId.SWIFT_SWIM, AbilityId.INTIMIDATE, 440, 65, 95, 85, 55, 55, 85, 45, 50, 88, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SCIZOR, 2, false, false, false, "Pincer Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.8, 118, AbilityId.SWARM, AbilityId.TECHNICIAN, AbilityId.LIGHT_METAL, 500, 70, 130, 100, 55, 80, 65, 25, 50, 175, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.STEEL, 1.8, 118, AbilityId.SWARM, AbilityId.TECHNICIAN, AbilityId.LIGHT_METAL, 500, 70, 130, 100, 55, 80, 65, 25, 50, 175, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.STEEL, 2, 125, AbilityId.TECHNICIAN, AbilityId.TECHNICIAN, AbilityId.TECHNICIAN, 600, 70, 150, 140, 65, 100, 75, 25, 50, 175, true), + ), + new PokemonSpecies(SpeciesId.SHUCKLE, 2, false, false, false, "Mold Pokémon", PokemonType.BUG, PokemonType.ROCK, 0.6, 20.5, AbilityId.STURDY, AbilityId.GLUTTONY, AbilityId.CONTRARY, 505, 20, 10, 230, 10, 230, 5, 190, 50, 177, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.HERACROSS, 2, false, false, false, "Single Horn Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 1.5, 54, AbilityId.SWARM, AbilityId.GUTS, AbilityId.MOXIE, 500, 80, 125, 75, 40, 95, 85, 45, 50, 175, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.FIGHTING, 1.5, 54, AbilityId.SWARM, AbilityId.GUTS, AbilityId.MOXIE, 500, 80, 125, 75, 40, 95, 85, 45, 50, 175, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.FIGHTING, 1.7, 62.5, AbilityId.SKILL_LINK, AbilityId.SKILL_LINK, AbilityId.SKILL_LINK, 600, 80, 185, 115, 40, 105, 75, 45, 50, 175, true), + ), + new PokemonSpecies(SpeciesId.SNEASEL, 2, false, false, false, "Sharp Claw Pokémon", PokemonType.DARK, PokemonType.ICE, 0.9, 28, AbilityId.INNER_FOCUS, AbilityId.KEEN_EYE, AbilityId.PICKPOCKET, 430, 55, 95, 55, 35, 75, 115, 60, 35, 86, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.TEDDIURSA, 2, false, false, false, "Little Bear Pokémon", PokemonType.NORMAL, null, 0.6, 8.8, AbilityId.PICKUP, AbilityId.QUICK_FEET, AbilityId.HONEY_GATHER, 330, 60, 80, 50, 50, 50, 40, 120, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.URSARING, 2, false, false, false, "Hibernator Pokémon", PokemonType.NORMAL, null, 1.8, 125.8, AbilityId.GUTS, AbilityId.QUICK_FEET, AbilityId.UNNERVE, 500, 90, 130, 75, 75, 75, 55, 60, 70, 175, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.SLUGMA, 2, false, false, false, "Lava Pokémon", PokemonType.FIRE, null, 0.7, 35, AbilityId.MAGMA_ARMOR, AbilityId.FLAME_BODY, AbilityId.WEAK_ARMOR, 250, 40, 40, 40, 70, 40, 20, 190, 70, 50, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MAGCARGO, 2, false, false, false, "Lava Pokémon", PokemonType.FIRE, PokemonType.ROCK, 0.8, 55, AbilityId.MAGMA_ARMOR, AbilityId.FLAME_BODY, AbilityId.WEAK_ARMOR, 430, 60, 50, 120, 90, 80, 30, 75, 70, 151, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SWINUB, 2, false, false, false, "Pig Pokémon", PokemonType.ICE, PokemonType.GROUND, 0.4, 6.5, AbilityId.OBLIVIOUS, AbilityId.SNOW_CLOAK, AbilityId.THICK_FAT, 250, 50, 50, 40, 30, 30, 50, 225, 50, 50, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.PILOSWINE, 2, false, false, false, "Swine Pokémon", PokemonType.ICE, PokemonType.GROUND, 1.1, 55.8, AbilityId.OBLIVIOUS, AbilityId.SNOW_CLOAK, AbilityId.THICK_FAT, 450, 100, 100, 80, 60, 60, 50, 75, 50, 158, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.CORSOLA, 2, false, false, false, "Coral Pokémon", PokemonType.WATER, PokemonType.ROCK, 0.6, 5, AbilityId.HUSTLE, AbilityId.NATURAL_CURE, AbilityId.REGENERATOR, 410, 65, 55, 95, 65, 95, 35, 60, 50, 144, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.REMORAID, 2, false, false, false, "Jet Pokémon", PokemonType.WATER, null, 0.6, 12, AbilityId.HUSTLE, AbilityId.SNIPER, AbilityId.MOODY, 300, 35, 65, 35, 65, 35, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.OCTILLERY, 2, false, false, false, "Jet Pokémon", PokemonType.WATER, null, 0.9, 28.5, AbilityId.SUCTION_CUPS, AbilityId.SNIPER, AbilityId.MOODY, 480, 75, 105, 75, 105, 75, 45, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.DELIBIRD, 2, false, false, false, "Delivery Pokémon", PokemonType.ICE, PokemonType.FLYING, 0.9, 16, AbilityId.VITAL_SPIRIT, AbilityId.HUSTLE, AbilityId.INSOMNIA, 330, 45, 55, 45, 65, 45, 75, 45, 50, 116, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.MANTINE, 2, false, false, false, "Kite Pokémon", PokemonType.WATER, PokemonType.FLYING, 2.1, 220, AbilityId.SWIFT_SWIM, AbilityId.WATER_ABSORB, AbilityId.WATER_VEIL, 485, 85, 40, 70, 80, 140, 70, 25, 50, 170, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.SKARMORY, 2, false, false, false, "Armor Bird Pokémon", PokemonType.STEEL, PokemonType.FLYING, 1.7, 50.5, AbilityId.KEEN_EYE, AbilityId.STURDY, AbilityId.WEAK_ARMOR, 465, 65, 80, 140, 40, 70, 70, 25, 50, 163, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HOUNDOUR, 2, false, false, false, "Dark Pokémon", PokemonType.DARK, PokemonType.FIRE, 0.6, 10.8, AbilityId.EARLY_BIRD, AbilityId.FLASH_FIRE, AbilityId.UNNERVE, 330, 45, 60, 30, 80, 50, 65, 120, 35, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HOUNDOOM, 2, false, false, false, "Dark Pokémon", PokemonType.DARK, PokemonType.FIRE, 1.4, 35, AbilityId.EARLY_BIRD, AbilityId.FLASH_FIRE, AbilityId.UNNERVE, 500, 75, 90, 50, 110, 80, 95, 45, 35, 175, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.FIRE, 1.4, 35, AbilityId.EARLY_BIRD, AbilityId.FLASH_FIRE, AbilityId.UNNERVE, 500, 75, 90, 50, 110, 80, 95, 45, 35, 175, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, PokemonType.FIRE, 1.9, 49.5, AbilityId.SOLAR_POWER, AbilityId.SOLAR_POWER, AbilityId.SOLAR_POWER, 600, 75, 90, 90, 140, 90, 115, 45, 35, 175, true), + ), + new PokemonSpecies(SpeciesId.KINGDRA, 2, false, false, false, "Dragon Pokémon", PokemonType.WATER, PokemonType.DRAGON, 1.8, 152, AbilityId.SWIFT_SWIM, AbilityId.SNIPER, AbilityId.DAMP, 540, 75, 95, 95, 95, 95, 85, 45, 50, 270, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PHANPY, 2, false, false, false, "Long Nose Pokémon", PokemonType.GROUND, null, 0.5, 33.5, AbilityId.PICKUP, AbilityId.NONE, AbilityId.SAND_VEIL, 330, 90, 60, 60, 40, 40, 40, 120, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DONPHAN, 2, false, false, false, "Armor Pokémon", PokemonType.GROUND, null, 1.1, 120, AbilityId.STURDY, AbilityId.NONE, AbilityId.SAND_VEIL, 500, 90, 120, 120, 60, 60, 50, 60, 70, 175, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.PORYGON2, 2, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.6, 32.5, AbilityId.TRACE, AbilityId.DOWNLOAD, AbilityId.ANALYTIC, 515, 85, 80, 90, 105, 95, 60, 45, 50, 180, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.STANTLER, 2, false, false, false, "Big Horn Pokémon", PokemonType.NORMAL, null, 1.4, 71.2, AbilityId.INTIMIDATE, AbilityId.FRISK, AbilityId.SAP_SIPPER, 465, 73, 95, 62, 85, 65, 85, 45, 70, 163, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.SMEARGLE, 2, false, false, false, "Painter Pokémon", PokemonType.NORMAL, null, 1.2, 58, AbilityId.OWN_TEMPO, AbilityId.TECHNICIAN, AbilityId.MOODY, 250, 55, 20, 35, 20, 45, 75, 45, 70, 88, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.TYROGUE, 2, false, false, false, "Scuffle Pokémon", PokemonType.FIGHTING, null, 0.7, 21, AbilityId.GUTS, AbilityId.STEADFAST, AbilityId.VITAL_SPIRIT, 210, 35, 35, 35, 35, 35, 35, 75, 50, 42, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.HITMONTOP, 2, false, false, false, "Handstand Pokémon", PokemonType.FIGHTING, null, 1.4, 48, AbilityId.INTIMIDATE, AbilityId.TECHNICIAN, AbilityId.STEADFAST, 455, 50, 95, 95, 35, 110, 70, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.SMOOCHUM, 2, false, false, false, "Kiss Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 0.4, 6, AbilityId.OBLIVIOUS, AbilityId.FOREWARN, AbilityId.HYDRATION, 305, 45, 30, 15, 85, 65, 65, 45, 50, 61, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.ELEKID, 2, false, false, false, "Electric Pokémon", PokemonType.ELECTRIC, null, 0.6, 23.5, AbilityId.STATIC, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 360, 45, 63, 37, 65, 55, 95, 45, 50, 72, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(SpeciesId.MAGBY, 2, false, false, false, "Live Coal Pokémon", PokemonType.FIRE, null, 0.7, 21.4, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 365, 45, 75, 37, 70, 55, 83, 45, 50, 73, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(SpeciesId.MILTANK, 2, false, false, false, "Milk Cow Pokémon", PokemonType.NORMAL, null, 1.2, 75.5, AbilityId.THICK_FAT, AbilityId.SCRAPPY, AbilityId.SAP_SIPPER, 490, 95, 80, 105, 40, 70, 100, 45, 50, 172, GrowthRate.SLOW, 0, false), + new PokemonSpecies(SpeciesId.BLISSEY, 2, false, false, false, "Happiness Pokémon", PokemonType.NORMAL, null, 1.5, 46.8, AbilityId.NATURAL_CURE, AbilityId.SERENE_GRACE, AbilityId.HEALER, 540, 255, 10, 10, 75, 135, 55, 30, 140, 608, GrowthRate.FAST, 0, false), + new PokemonSpecies(SpeciesId.RAIKOU, 2, true, false, false, "Thunder Pokémon", PokemonType.ELECTRIC, null, 1.9, 178, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.INNER_FOCUS, 580, 90, 85, 75, 115, 100, 115, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ENTEI, 2, true, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 2.1, 198, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.INNER_FOCUS, 580, 115, 115, 85, 90, 75, 100, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SUICUNE, 2, true, false, false, "Aurora Pokémon", PokemonType.WATER, null, 2, 187, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.INNER_FOCUS, 580, 100, 75, 115, 90, 115, 85, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.LARVITAR, 2, false, false, false, "Rock Skin Pokémon", PokemonType.ROCK, PokemonType.GROUND, 0.6, 72, AbilityId.GUTS, AbilityId.NONE, AbilityId.SAND_VEIL, 300, 50, 64, 50, 45, 50, 41, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.PUPITAR, 2, false, false, false, "Hard Shell Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1.2, 152, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 410, 70, 84, 70, 65, 70, 51, 45, 35, 144, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.TYRANITAR, 2, false, false, false, "Armor Pokémon", PokemonType.ROCK, PokemonType.DARK, 2, 202, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.UNNERVE, 600, 100, 134, 110, 95, 100, 61, 45, 35, 300, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.DARK, 2, 202, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.UNNERVE, 600, 100, 134, 110, 95, 100, 61, 45, 35, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.DARK, 2.5, 255, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.SAND_STREAM, 700, 100, 164, 150, 95, 120, 71, 45, 35, 300), + ), + new PokemonSpecies(SpeciesId.LUGIA, 2, false, true, false, "Diving Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 5.2, 216, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.MULTISCALE, 680, 106, 90, 130, 90, 154, 110, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.HO_OH, 2, false, true, false, "Rainbow Pokémon", PokemonType.FIRE, PokemonType.FLYING, 3.8, 199, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.REGENERATOR, 680, 106, 130, 90, 110, 154, 90, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.CELEBI, 2, false, false, true, "Time Travel Pokémon", PokemonType.PSYCHIC, PokemonType.GRASS, 0.6, 5, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(SpeciesId.TREECKO, 3, false, false, false, "Wood Gecko Pokémon", PokemonType.GRASS, null, 0.5, 5, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.UNBURDEN, 310, 40, 45, 35, 65, 55, 70, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.GROVYLE, 3, false, false, false, "Wood Gecko Pokémon", PokemonType.GRASS, null, 0.9, 21.6, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.UNBURDEN, 405, 50, 65, 45, 85, 65, 95, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.SCEPTILE, 3, false, false, false, "Forest Pokémon", PokemonType.GRASS, null, 1.7, 52.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.UNBURDEN, 530, 70, 85, 65, 105, 85, 120, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.GRASS, null, 1.7, 52.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.UNBURDEN, 530, 70, 85, 65, 105, 85, 120, 45, 50, 265, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.DRAGON, 1.9, 55.2, AbilityId.LIGHTNING_ROD, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 630, 70, 110, 75, 145, 85, 145, 45, 50, 265), + ), + new PokemonSpecies(SpeciesId.TORCHIC, 3, false, false, false, "Chick Pokémon", PokemonType.FIRE, null, 0.4, 2.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SPEED_BOOST, 310, 45, 60, 40, 70, 50, 45, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, true), + new PokemonSpecies(SpeciesId.COMBUSKEN, 3, false, false, false, "Young Fowl Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 0.9, 19.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SPEED_BOOST, 405, 60, 85, 60, 85, 60, 55, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, true), + new PokemonSpecies(SpeciesId.BLAZIKEN, 3, false, false, false, "Blaze Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SPEED_BOOST, 530, 80, 120, 70, 110, 70, 80, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, true, true, + new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, AbilityId.BLAZE, AbilityId.NONE, AbilityId.SPEED_BOOST, 530, 80, 120, 70, 110, 70, 80, 45, 50, 265, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, AbilityId.SPEED_BOOST, AbilityId.NONE, AbilityId.SPEED_BOOST, 630, 80, 160, 80, 130, 80, 100, 45, 50, 265, true), + ), + new PokemonSpecies(SpeciesId.MUDKIP, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, null, 0.4, 7.6, AbilityId.TORRENT, AbilityId.NONE, AbilityId.DAMP, 310, 50, 70, 50, 50, 50, 40, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.MARSHTOMP, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.7, 28, AbilityId.TORRENT, AbilityId.NONE, AbilityId.DAMP, 405, 70, 85, 70, 60, 70, 50, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.SWAMPERT, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.5, 81.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.DAMP, 535, 100, 110, 90, 85, 90, 60, 45, 50, 268, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.GROUND, 1.5, 81.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.DAMP, 535, 100, 110, 90, 85, 90, 60, 45, 50, 268, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.GROUND, 1.9, 102, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.SWIFT_SWIM, 635, 100, 150, 110, 95, 110, 70, 45, 50, 268), + ), + new PokemonSpecies(SpeciesId.POOCHYENA, 3, false, false, false, "Bite Pokémon", PokemonType.DARK, null, 0.5, 13.6, AbilityId.RUN_AWAY, AbilityId.QUICK_FEET, AbilityId.RATTLED, 220, 35, 55, 35, 30, 30, 35, 255, 70, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MIGHTYENA, 3, false, false, false, "Bite Pokémon", PokemonType.DARK, null, 1, 37, AbilityId.INTIMIDATE, AbilityId.QUICK_FEET, AbilityId.MOXIE, 420, 70, 90, 70, 60, 60, 70, 127, 70, 147, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ZIGZAGOON, 3, false, false, false, "Tiny Raccoon Pokémon", PokemonType.NORMAL, null, 0.4, 17.5, AbilityId.PICKUP, AbilityId.GLUTTONY, AbilityId.QUICK_FEET, 240, 38, 30, 41, 30, 41, 60, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LINOONE, 3, false, false, false, "Rushing Pokémon", PokemonType.NORMAL, null, 0.5, 32.5, AbilityId.PICKUP, AbilityId.GLUTTONY, AbilityId.QUICK_FEET, 420, 78, 70, 61, 50, 61, 100, 90, 50, 147, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WURMPLE, 3, false, false, false, "Worm Pokémon", PokemonType.BUG, null, 0.3, 3.6, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.RUN_AWAY, 195, 45, 45, 35, 20, 30, 20, 255, 70, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SILCOON, 3, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.6, 10, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 205, 50, 35, 55, 25, 25, 15, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BEAUTIFLY, 3, false, false, false, "Butterfly Pokémon", PokemonType.BUG, PokemonType.FLYING, 1, 28.4, AbilityId.SWARM, AbilityId.NONE, AbilityId.RIVALRY, 395, 60, 70, 50, 100, 50, 65, 45, 70, 198, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.CASCOON, 3, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.7, 11.5, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.SHED_SKIN, 205, 50, 35, 55, 25, 25, 15, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DUSTOX, 3, false, false, false, "Poison Moth Pokémon", PokemonType.BUG, PokemonType.POISON, 1.2, 31.6, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.COMPOUND_EYES, 385, 60, 50, 70, 50, 90, 65, 45, 70, 193, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.LOTAD, 3, false, false, false, "Water Weed Pokémon", PokemonType.WATER, PokemonType.GRASS, 0.5, 2.6, AbilityId.SWIFT_SWIM, AbilityId.RAIN_DISH, AbilityId.OWN_TEMPO, 220, 40, 30, 30, 40, 50, 30, 255, 50, 44, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.LOMBRE, 3, false, false, false, "Jolly Pokémon", PokemonType.WATER, PokemonType.GRASS, 1.2, 32.5, AbilityId.SWIFT_SWIM, AbilityId.RAIN_DISH, AbilityId.OWN_TEMPO, 340, 60, 50, 50, 60, 70, 50, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.LUDICOLO, 3, false, false, false, "Carefree Pokémon", PokemonType.WATER, PokemonType.GRASS, 1.5, 55, AbilityId.SWIFT_SWIM, AbilityId.RAIN_DISH, AbilityId.OWN_TEMPO, 480, 80, 70, 70, 90, 100, 70, 45, 50, 240, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.SEEDOT, 3, false, false, false, "Acorn Pokémon", PokemonType.GRASS, null, 0.5, 4, AbilityId.CHLOROPHYLL, AbilityId.EARLY_BIRD, AbilityId.PICKPOCKET, 220, 40, 40, 50, 30, 30, 30, 255, 50, 44, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.NUZLEAF, 3, false, false, false, "Wily Pokémon", PokemonType.GRASS, PokemonType.DARK, 1, 28, AbilityId.CHLOROPHYLL, AbilityId.EARLY_BIRD, AbilityId.PICKPOCKET, 340, 70, 70, 40, 60, 40, 60, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.SHIFTRY, 3, false, false, false, "Wicked Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.3, 59.6, AbilityId.CHLOROPHYLL, AbilityId.WIND_RIDER, AbilityId.PICKPOCKET, 480, 90, 100, 60, 90, 60, 80, 45, 50, 240, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.TAILLOW, 3, false, false, false, "Tiny Swallow Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2.3, AbilityId.GUTS, AbilityId.NONE, AbilityId.SCRAPPY, 270, 40, 55, 30, 30, 30, 85, 200, 70, 54, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SWELLOW, 3, false, false, false, "Swallow Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.7, 19.8, AbilityId.GUTS, AbilityId.NONE, AbilityId.SCRAPPY, 455, 60, 85, 60, 75, 50, 125, 45, 70, 159, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.WINGULL, 3, false, false, false, "Seagull Pokémon", PokemonType.WATER, PokemonType.FLYING, 0.6, 9.5, AbilityId.KEEN_EYE, AbilityId.HYDRATION, AbilityId.RAIN_DISH, 270, 40, 30, 30, 55, 30, 85, 190, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PELIPPER, 3, false, false, false, "Water Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 1.2, 28, AbilityId.KEEN_EYE, AbilityId.DRIZZLE, AbilityId.RAIN_DISH, 440, 60, 50, 100, 95, 70, 65, 45, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RALTS, 3, false, false, false, "Feeling Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.4, 6.6, AbilityId.SYNCHRONIZE, AbilityId.TRACE, AbilityId.TELEPATHY, 198, 28, 25, 25, 45, 35, 40, 235, 35, 40, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.KIRLIA, 3, false, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.8, 20.2, AbilityId.SYNCHRONIZE, AbilityId.TRACE, AbilityId.TELEPATHY, 278, 38, 35, 35, 65, 55, 50, 120, 35, 97, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.GARDEVOIR, 3, false, false, false, "Embrace Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, AbilityId.SYNCHRONIZE, AbilityId.TRACE, AbilityId.TELEPATHY, 518, 68, 65, 65, 125, 115, 80, 45, 35, 259, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, AbilityId.SYNCHRONIZE, AbilityId.TRACE, AbilityId.TELEPATHY, 518, 68, 65, 65, 125, 115, 80, 45, 35, 259, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, AbilityId.PIXILATE, AbilityId.PIXILATE, AbilityId.PIXILATE, 618, 68, 85, 65, 165, 135, 100, 45, 35, 259), + ), + new PokemonSpecies(SpeciesId.SURSKIT, 3, false, false, false, "Pond Skater Pokémon", PokemonType.BUG, PokemonType.WATER, 0.5, 1.7, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.RAIN_DISH, 269, 40, 30, 32, 50, 52, 65, 200, 70, 54, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MASQUERAIN, 3, false, false, false, "Eyeball Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.8, 3.6, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.UNNERVE, 454, 70, 60, 62, 100, 82, 80, 75, 70, 159, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SHROOMISH, 3, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, null, 0.4, 4.5, AbilityId.EFFECT_SPORE, AbilityId.POISON_HEAL, AbilityId.QUICK_FEET, 295, 60, 40, 60, 40, 60, 35, 255, 70, 59, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.BRELOOM, 3, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.2, 39.2, AbilityId.EFFECT_SPORE, AbilityId.POISON_HEAL, AbilityId.TECHNICIAN, 460, 60, 130, 80, 60, 60, 70, 90, 70, 161, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.SLAKOTH, 3, false, false, false, "Slacker Pokémon", PokemonType.NORMAL, null, 0.8, 24, AbilityId.TRUANT, AbilityId.NONE, AbilityId.STALL, 280, 60, 60, 60, 35, 35, 30, 255, 70, 56, GrowthRate.SLOW, 50, false), //Custom Hidden + new PokemonSpecies(SpeciesId.VIGOROTH, 3, false, false, false, "Wild Monkey Pokémon", PokemonType.NORMAL, null, 1.4, 46.5, AbilityId.VITAL_SPIRIT, AbilityId.NONE, AbilityId.INSOMNIA, 440, 80, 80, 80, 55, 55, 90, 120, 70, 154, GrowthRate.SLOW, 50, false), //Custom Hidden + new PokemonSpecies(SpeciesId.SLAKING, 3, false, false, false, "Lazy Pokémon", PokemonType.NORMAL, null, 2, 130.5, AbilityId.TRUANT, AbilityId.NONE, AbilityId.STALL, 670, 150, 160, 100, 95, 65, 100, 45, 70, 285, GrowthRate.SLOW, 50, false), //Custom Hidden + new PokemonSpecies(SpeciesId.NINCADA, 3, false, false, false, "Trainee Pokémon", PokemonType.BUG, PokemonType.GROUND, 0.5, 5.5, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.RUN_AWAY, 266, 31, 45, 90, 30, 30, 40, 255, 50, 53, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.NINJASK, 3, false, false, false, "Ninja Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.8, 12, AbilityId.SPEED_BOOST, AbilityId.NONE, AbilityId.INFILTRATOR, 456, 61, 90, 45, 50, 50, 160, 120, 50, 160, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.SHEDINJA, 3, false, false, false, "Shed Pokémon", PokemonType.BUG, PokemonType.GHOST, 0.8, 1.2, AbilityId.WONDER_GUARD, AbilityId.NONE, AbilityId.NONE, 236, 1, 90, 45, 30, 30, 40, 45, 50, 83, GrowthRate.ERRATIC, null, false), + new PokemonSpecies(SpeciesId.WHISMUR, 3, false, false, false, "Whisper Pokémon", PokemonType.NORMAL, null, 0.6, 16.3, AbilityId.SOUNDPROOF, AbilityId.NONE, AbilityId.RATTLED, 240, 64, 51, 23, 51, 23, 28, 190, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.LOUDRED, 3, false, false, false, "Big Voice Pokémon", PokemonType.NORMAL, null, 1, 40.5, AbilityId.SOUNDPROOF, AbilityId.NONE, AbilityId.SCRAPPY, 360, 84, 71, 43, 71, 43, 48, 120, 50, 126, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.EXPLOUD, 3, false, false, false, "Loud Noise Pokémon", PokemonType.NORMAL, null, 1.5, 84, AbilityId.SOUNDPROOF, AbilityId.NONE, AbilityId.SCRAPPY, 490, 104, 91, 63, 91, 73, 68, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.MAKUHITA, 3, false, false, false, "Guts Pokémon", PokemonType.FIGHTING, null, 1, 86.4, AbilityId.THICK_FAT, AbilityId.GUTS, AbilityId.SHEER_FORCE, 237, 72, 60, 30, 20, 30, 25, 180, 70, 47, GrowthRate.FLUCTUATING, 75, false), + new PokemonSpecies(SpeciesId.HARIYAMA, 3, false, false, false, "Arm Thrust Pokémon", PokemonType.FIGHTING, null, 2.3, 253.8, AbilityId.THICK_FAT, AbilityId.GUTS, AbilityId.SHEER_FORCE, 474, 144, 120, 60, 40, 60, 50, 200, 70, 166, GrowthRate.FLUCTUATING, 75, false), + new PokemonSpecies(SpeciesId.AZURILL, 3, false, false, false, "Polka Dot Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.2, 2, AbilityId.THICK_FAT, AbilityId.HUGE_POWER, AbilityId.SAP_SIPPER, 190, 50, 20, 40, 20, 40, 20, 150, 50, 38, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.NOSEPASS, 3, false, false, false, "Compass Pokémon", PokemonType.ROCK, null, 1, 97, AbilityId.STURDY, AbilityId.MAGNET_PULL, AbilityId.SAND_FORCE, 375, 30, 45, 135, 45, 90, 30, 255, 70, 75, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SKITTY, 3, false, false, false, "Kitten Pokémon", PokemonType.NORMAL, null, 0.6, 11, AbilityId.CUTE_CHARM, AbilityId.NORMALIZE, AbilityId.WONDER_SKIN, 260, 50, 45, 45, 35, 35, 50, 255, 70, 52, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.DELCATTY, 3, false, false, false, "Prim Pokémon", PokemonType.NORMAL, null, 1.1, 32.6, AbilityId.CUTE_CHARM, AbilityId.NORMALIZE, AbilityId.WONDER_SKIN, 400, 70, 65, 65, 55, 55, 90, 60, 70, 140, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.SABLEYE, 3, false, false, false, "Darkness Pokémon", PokemonType.DARK, PokemonType.GHOST, 0.5, 11, AbilityId.KEEN_EYE, AbilityId.STALL, AbilityId.PRANKSTER, 380, 50, 75, 75, 65, 65, 50, 45, 35, 133, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.GHOST, 0.5, 11, AbilityId.KEEN_EYE, AbilityId.STALL, AbilityId.PRANKSTER, 380, 50, 75, 75, 65, 65, 50, 45, 35, 133, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, PokemonType.GHOST, 0.5, 161, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, 480, 50, 85, 125, 85, 115, 20, 45, 35, 133), + ), + new PokemonSpecies(SpeciesId.MAWILE, 3, false, false, false, "Deceiver Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 0.6, 11.5, AbilityId.HYPER_CUTTER, AbilityId.INTIMIDATE, AbilityId.SHEER_FORCE, 380, 50, 85, 85, 55, 55, 50, 45, 50, 133, GrowthRate.FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.FAIRY, 0.6, 11.5, AbilityId.HYPER_CUTTER, AbilityId.INTIMIDATE, AbilityId.SHEER_FORCE, 380, 50, 85, 85, 55, 55, 50, 45, 50, 133, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.FAIRY, 1, 23.5, AbilityId.HUGE_POWER, AbilityId.HUGE_POWER, AbilityId.HUGE_POWER, 480, 50, 105, 125, 55, 95, 50, 45, 50, 133), + ), + new PokemonSpecies(SpeciesId.ARON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 0.4, 60, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.HEAVY_METAL, 330, 50, 70, 100, 40, 40, 30, 180, 35, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.LAIRON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 0.9, 120, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.HEAVY_METAL, 430, 60, 90, 140, 50, 50, 40, 90, 35, 151, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.AGGRON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 2.1, 360, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.HEAVY_METAL, 530, 70, 110, 180, 60, 60, 50, 45, 35, 265, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.ROCK, 2.1, 360, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.HEAVY_METAL, 530, 70, 110, 180, 60, 60, 50, 45, 35, 265, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, null, 2.2, 395, AbilityId.FILTER, AbilityId.FILTER, AbilityId.FILTER, 630, 70, 140, 230, 60, 80, 50, 45, 35, 265), + ), + new PokemonSpecies(SpeciesId.MEDITITE, 3, false, false, false, "Meditate Pokémon", PokemonType.FIGHTING, PokemonType.PSYCHIC, 0.6, 11.2, AbilityId.PURE_POWER, AbilityId.NONE, AbilityId.TELEPATHY, 280, 30, 40, 55, 40, 55, 60, 180, 70, 56, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.MEDICHAM, 3, false, false, false, "Meditate Pokémon", PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, AbilityId.PURE_POWER, AbilityId.NONE, AbilityId.TELEPATHY, 410, 60, 60, 75, 60, 75, 80, 90, 70, 144, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, AbilityId.PURE_POWER, AbilityId.NONE, AbilityId.TELEPATHY, 410, 60, 60, 75, 60, 75, 80, 90, 70, 144, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, AbilityId.PURE_POWER, AbilityId.NONE, AbilityId.PURE_POWER, 510, 60, 100, 85, 80, 85, 100, 90, 70, 144, true), + ), + new PokemonSpecies(SpeciesId.ELECTRIKE, 3, false, false, false, "Lightning Pokémon", PokemonType.ELECTRIC, null, 0.6, 15.2, AbilityId.STATIC, AbilityId.LIGHTNING_ROD, AbilityId.MINUS, 295, 40, 45, 40, 65, 40, 65, 120, 50, 59, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.MANECTRIC, 3, false, false, false, "Discharge Pokémon", PokemonType.ELECTRIC, null, 1.5, 40.2, AbilityId.STATIC, AbilityId.LIGHTNING_ROD, AbilityId.MINUS, 475, 70, 75, 60, 105, 60, 105, 45, 50, 166, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.5, 40.2, AbilityId.STATIC, AbilityId.LIGHTNING_ROD, AbilityId.MINUS, 475, 70, 75, 60, 105, 60, 105, 45, 50, 166, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ELECTRIC, null, 1.8, 44, AbilityId.INTIMIDATE, AbilityId.INTIMIDATE, AbilityId.INTIMIDATE, 575, 70, 75, 80, 135, 80, 135, 45, 50, 166), + ), + new PokemonSpecies(SpeciesId.PLUSLE, 3, false, false, false, "Cheering Pokémon", PokemonType.ELECTRIC, null, 0.4, 4.2, AbilityId.PLUS, AbilityId.NONE, AbilityId.LIGHTNING_ROD, 405, 60, 50, 40, 85, 75, 95, 200, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MINUN, 3, false, false, false, "Cheering Pokémon", PokemonType.ELECTRIC, null, 0.4, 4.2, AbilityId.MINUS, AbilityId.NONE, AbilityId.VOLT_ABSORB, 405, 60, 40, 50, 75, 85, 95, 200, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.VOLBEAT, 3, false, false, false, "Firefly Pokémon", PokemonType.BUG, null, 0.7, 17.7, AbilityId.ILLUMINATE, AbilityId.SWARM, AbilityId.PRANKSTER, 430, 65, 73, 75, 47, 85, 85, 150, 70, 151, GrowthRate.ERRATIC, 100, false), + new PokemonSpecies(SpeciesId.ILLUMISE, 3, false, false, false, "Firefly Pokémon", PokemonType.BUG, null, 0.6, 17.7, AbilityId.OBLIVIOUS, AbilityId.TINTED_LENS, AbilityId.PRANKSTER, 430, 65, 47, 75, 73, 85, 85, 150, 70, 151, GrowthRate.FLUCTUATING, 0, false), + new PokemonSpecies(SpeciesId.ROSELIA, 3, false, false, false, "Thorn Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.3, 2, AbilityId.NATURAL_CURE, AbilityId.POISON_POINT, AbilityId.LEAF_GUARD, 400, 50, 60, 45, 100, 80, 65, 150, 50, 140, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.GULPIN, 3, false, false, false, "Stomach Pokémon", PokemonType.POISON, null, 0.4, 10.3, AbilityId.LIQUID_OOZE, AbilityId.STICKY_HOLD, AbilityId.GLUTTONY, 302, 70, 43, 53, 43, 53, 40, 225, 70, 60, GrowthRate.FLUCTUATING, 50, true), + new PokemonSpecies(SpeciesId.SWALOT, 3, false, false, false, "Poison Bag Pokémon", PokemonType.POISON, null, 1.7, 80, AbilityId.LIQUID_OOZE, AbilityId.STICKY_HOLD, AbilityId.GLUTTONY, 467, 100, 73, 83, 73, 83, 55, 75, 70, 163, GrowthRate.FLUCTUATING, 50, true), + new PokemonSpecies(SpeciesId.CARVANHA, 3, false, false, false, "Savage Pokémon", PokemonType.WATER, PokemonType.DARK, 0.8, 20.8, AbilityId.ROUGH_SKIN, AbilityId.NONE, AbilityId.SPEED_BOOST, 305, 45, 90, 20, 65, 20, 65, 225, 35, 61, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.SHARPEDO, 3, false, false, false, "Brutal Pokémon", PokemonType.WATER, PokemonType.DARK, 1.8, 88.8, AbilityId.ROUGH_SKIN, AbilityId.NONE, AbilityId.SPEED_BOOST, 460, 70, 120, 40, 95, 40, 95, 60, 35, 161, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DARK, 1.8, 88.8, AbilityId.ROUGH_SKIN, AbilityId.NONE, AbilityId.SPEED_BOOST, 460, 70, 120, 40, 95, 40, 95, 60, 35, 161, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.DARK, 2.5, 130.3, AbilityId.STRONG_JAW, AbilityId.NONE, AbilityId.STRONG_JAW, 560, 70, 140, 70, 110, 65, 105, 60, 35, 161), + ), + new PokemonSpecies(SpeciesId.WAILMER, 3, false, false, false, "Ball Whale Pokémon", PokemonType.WATER, null, 2, 130, AbilityId.WATER_VEIL, AbilityId.OBLIVIOUS, AbilityId.PRESSURE, 400, 130, 70, 35, 70, 35, 60, 125, 50, 80, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.WAILORD, 3, false, false, false, "Float Whale Pokémon", PokemonType.WATER, null, 14.5, 398, AbilityId.WATER_VEIL, AbilityId.OBLIVIOUS, AbilityId.PRESSURE, 500, 170, 90, 45, 90, 45, 60, 60, 50, 175, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.NUMEL, 3, false, false, false, "Numb Pokémon", PokemonType.FIRE, PokemonType.GROUND, 0.7, 24, AbilityId.OBLIVIOUS, AbilityId.SIMPLE, AbilityId.OWN_TEMPO, 305, 60, 60, 40, 65, 45, 35, 255, 70, 61, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.CAMERUPT, 3, false, false, false, "Eruption Pokémon", PokemonType.FIRE, PokemonType.GROUND, 1.9, 220, AbilityId.MAGMA_ARMOR, AbilityId.SOLID_ROCK, AbilityId.ANGER_POINT, 460, 70, 100, 70, 105, 75, 40, 150, 70, 161, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.GROUND, 1.9, 220, AbilityId.MAGMA_ARMOR, AbilityId.SOLID_ROCK, AbilityId.ANGER_POINT, 460, 70, 100, 70, 105, 75, 40, 150, 70, 161, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIRE, PokemonType.GROUND, 2.5, 320.5, AbilityId.SHEER_FORCE, AbilityId.SHEER_FORCE, AbilityId.SHEER_FORCE, 560, 70, 120, 100, 145, 105, 20, 150, 70, 161), + ), + new PokemonSpecies(SpeciesId.TORKOAL, 3, false, false, false, "Coal Pokémon", PokemonType.FIRE, null, 0.5, 80.4, AbilityId.WHITE_SMOKE, AbilityId.DROUGHT, AbilityId.SHELL_ARMOR, 470, 70, 85, 140, 85, 70, 20, 90, 50, 165, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SPOINK, 3, false, false, false, "Bounce Pokémon", PokemonType.PSYCHIC, null, 0.7, 30.6, AbilityId.THICK_FAT, AbilityId.OWN_TEMPO, AbilityId.GLUTTONY, 330, 60, 25, 35, 70, 80, 60, 255, 70, 66, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.GRUMPIG, 3, false, false, false, "Manipulate Pokémon", PokemonType.PSYCHIC, null, 0.9, 71.5, AbilityId.THICK_FAT, AbilityId.OWN_TEMPO, AbilityId.GLUTTONY, 470, 80, 45, 65, 90, 110, 80, 60, 70, 165, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.SPINDA, 3, false, false, false, "Spot Panda Pokémon", PokemonType.NORMAL, null, 1.1, 5, AbilityId.OWN_TEMPO, AbilityId.TANGLED_FEET, AbilityId.CONTRARY, 360, 60, 60, 60, 60, 60, 60, 255, 70, 126, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.TRAPINCH, 3, false, false, false, "Ant Pit Pokémon", PokemonType.GROUND, null, 0.7, 15, AbilityId.HYPER_CUTTER, AbilityId.ARENA_TRAP, AbilityId.SHEER_FORCE, 290, 45, 100, 45, 45, 45, 10, 255, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.VIBRAVA, 3, false, false, false, "Vibration Pokémon", PokemonType.GROUND, PokemonType.DRAGON, 1.1, 15.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 340, 50, 70, 50, 50, 50, 70, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.FLYGON, 3, false, false, false, "Mystic Pokémon", PokemonType.GROUND, PokemonType.DRAGON, 2, 82, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 80, 100, 80, 80, 80, 100, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CACNEA, 3, false, false, false, "Cactus Pokémon", PokemonType.GRASS, null, 0.4, 51.3, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.WATER_ABSORB, 335, 50, 85, 40, 85, 40, 35, 190, 35, 67, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CACTURNE, 3, false, false, false, "Scarecrow Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.3, 77.4, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.WATER_ABSORB, 475, 70, 115, 60, 115, 60, 55, 60, 35, 166, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.SWABLU, 3, false, false, false, "Cotton Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.4, 1.2, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.CLOUD_NINE, 310, 45, 40, 60, 40, 75, 50, 255, 50, 62, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.ALTARIA, 3, false, false, false, "Humming Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 1.1, 20.6, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.CLOUD_NINE, 490, 75, 70, 90, 70, 105, 80, 45, 50, 172, GrowthRate.ERRATIC, 50, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 1.1, 20.6, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.CLOUD_NINE, 490, 75, 70, 90, 70, 105, 80, 45, 50, 172, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FAIRY, 1.5, 20.6, AbilityId.PIXILATE, AbilityId.NONE, AbilityId.PIXILATE, 590, 75, 110, 110, 110, 105, 80, 45, 50, 172), + ), + new PokemonSpecies(SpeciesId.ZANGOOSE, 3, false, false, false, "Cat Ferret Pokémon", PokemonType.NORMAL, null, 1.3, 40.3, AbilityId.IMMUNITY, AbilityId.NONE, AbilityId.TOXIC_BOOST, 458, 73, 115, 60, 60, 60, 90, 90, 70, 160, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.SEVIPER, 3, false, false, false, "Fang Snake Pokémon", PokemonType.POISON, null, 2.7, 52.5, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.INFILTRATOR, 458, 73, 100, 60, 100, 60, 65, 90, 70, 160, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.LUNATONE, 3, false, false, false, "Meteorite Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1, 168, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 460, 90, 55, 65, 95, 85, 70, 45, 50, 161, GrowthRate.FAST, null, false), + new PokemonSpecies(SpeciesId.SOLROCK, 3, false, false, false, "Meteorite Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1.2, 154, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 460, 90, 95, 85, 55, 65, 70, 45, 50, 161, GrowthRate.FAST, null, false), + new PokemonSpecies(SpeciesId.BARBOACH, 3, false, false, false, "Whiskers Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.4, 1.9, AbilityId.OBLIVIOUS, AbilityId.ANTICIPATION, AbilityId.HYDRATION, 288, 50, 48, 43, 46, 41, 60, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WHISCASH, 3, false, false, false, "Whiskers Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.9, 23.6, AbilityId.OBLIVIOUS, AbilityId.ANTICIPATION, AbilityId.HYDRATION, 468, 110, 78, 73, 76, 71, 60, 75, 50, 164, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CORPHISH, 3, false, false, false, "Ruffian Pokémon", PokemonType.WATER, null, 0.6, 11.5, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.ADAPTABILITY, 308, 43, 80, 65, 50, 35, 35, 205, 50, 62, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.CRAWDAUNT, 3, false, false, false, "Rogue Pokémon", PokemonType.WATER, PokemonType.DARK, 1.1, 32.8, AbilityId.HYPER_CUTTER, AbilityId.SHELL_ARMOR, AbilityId.ADAPTABILITY, 468, 63, 120, 85, 90, 55, 55, 155, 50, 164, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.BALTOY, 3, false, false, false, "Clay Doll Pokémon", PokemonType.GROUND, PokemonType.PSYCHIC, 0.5, 21.5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 300, 40, 40, 55, 40, 70, 55, 255, 50, 60, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.CLAYDOL, 3, false, false, false, "Clay Doll Pokémon", PokemonType.GROUND, PokemonType.PSYCHIC, 1.5, 108, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 500, 60, 70, 105, 70, 120, 75, 90, 50, 175, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.LILEEP, 3, false, false, false, "Sea Lily Pokémon", PokemonType.ROCK, PokemonType.GRASS, 1, 23.8, AbilityId.SUCTION_CUPS, AbilityId.NONE, AbilityId.STORM_DRAIN, 355, 66, 41, 77, 61, 87, 23, 45, 50, 71, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.CRADILY, 3, false, false, false, "Barnacle Pokémon", PokemonType.ROCK, PokemonType.GRASS, 1.5, 60.4, AbilityId.SUCTION_CUPS, AbilityId.NONE, AbilityId.STORM_DRAIN, 495, 86, 81, 97, 81, 107, 43, 45, 50, 173, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.ANORITH, 3, false, false, false, "Old Shrimp Pokémon", PokemonType.ROCK, PokemonType.BUG, 0.7, 12.5, AbilityId.BATTLE_ARMOR, AbilityId.NONE, AbilityId.SWIFT_SWIM, 355, 45, 95, 50, 40, 50, 75, 45, 50, 71, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.ARMALDO, 3, false, false, false, "Plate Pokémon", PokemonType.ROCK, PokemonType.BUG, 1.5, 68.2, AbilityId.BATTLE_ARMOR, AbilityId.NONE, AbilityId.SWIFT_SWIM, 495, 75, 125, 100, 70, 80, 45, 45, 50, 173, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.FEEBAS, 3, false, false, false, "Fish Pokémon", PokemonType.WATER, null, 0.6, 7.4, AbilityId.SWIFT_SWIM, AbilityId.OBLIVIOUS, AbilityId.ADAPTABILITY, 200, 20, 15, 20, 10, 55, 80, 255, 50, 40, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.MILOTIC, 3, false, false, false, "Tender Pokémon", PokemonType.WATER, null, 6.2, 162, AbilityId.MARVEL_SCALE, AbilityId.COMPETITIVE, AbilityId.CUTE_CHARM, 540, 95, 60, 79, 100, 125, 81, 60, 50, 189, GrowthRate.ERRATIC, 50, true), + new PokemonSpecies(SpeciesId.CASTFORM, 3, false, false, false, "Weather Pokémon", PokemonType.NORMAL, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal Form", "", PokemonType.NORMAL, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147, false, null, true), + new PokemonForm("Sunny Form", "sunny", PokemonType.FIRE, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), + new PokemonForm("Rainy Form", "rainy", PokemonType.WATER, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), + new PokemonForm("Snowy Form", "snowy", PokemonType.ICE, null, 0.3, 0.8, AbilityId.FORECAST, AbilityId.NONE, AbilityId.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), + ), + new PokemonSpecies(SpeciesId.KECLEON, 3, false, false, false, "Color Swap Pokémon", PokemonType.NORMAL, null, 1, 22, AbilityId.COLOR_CHANGE, AbilityId.NONE, AbilityId.PROTEAN, 440, 60, 90, 70, 60, 120, 40, 200, 70, 154, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SHUPPET, 3, false, false, false, "Puppet Pokémon", PokemonType.GHOST, null, 0.6, 2.3, AbilityId.INSOMNIA, AbilityId.FRISK, AbilityId.CURSED_BODY, 295, 44, 75, 35, 63, 33, 45, 225, 35, 59, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.BANETTE, 3, false, false, false, "Marionette Pokémon", PokemonType.GHOST, null, 1.1, 12.5, AbilityId.INSOMNIA, AbilityId.FRISK, AbilityId.CURSED_BODY, 455, 64, 115, 65, 83, 63, 65, 45, 35, 159, GrowthRate.FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GHOST, null, 1.1, 12.5, AbilityId.INSOMNIA, AbilityId.FRISK, AbilityId.CURSED_BODY, 455, 64, 115, 65, 83, 63, 65, 45, 35, 159, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GHOST, null, 1.2, 13, AbilityId.PRANKSTER, AbilityId.PRANKSTER, AbilityId.PRANKSTER, 555, 64, 165, 75, 93, 83, 75, 45, 35, 159), + ), + new PokemonSpecies(SpeciesId.DUSKULL, 3, false, false, false, "Requiem Pokémon", PokemonType.GHOST, null, 0.8, 15, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.FRISK, 295, 20, 40, 90, 30, 90, 25, 190, 35, 59, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.DUSCLOPS, 3, false, false, false, "Beckon Pokémon", PokemonType.GHOST, null, 1.6, 30.6, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.FRISK, 455, 40, 70, 130, 60, 130, 25, 90, 35, 159, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.TROPIUS, 3, false, false, false, "Fruit Pokémon", PokemonType.GRASS, PokemonType.FLYING, 2, 100, AbilityId.CHLOROPHYLL, AbilityId.SOLAR_POWER, AbilityId.HARVEST, 460, 99, 68, 83, 72, 87, 51, 200, 70, 161, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.CHIMECHO, 3, false, false, false, "Wind Chime Pokémon", PokemonType.PSYCHIC, null, 0.6, 1, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 455, 75, 50, 80, 95, 90, 65, 45, 70, 159, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.ABSOL, 3, false, false, false, "Disaster Pokémon", PokemonType.DARK, null, 1.2, 47, AbilityId.PRESSURE, AbilityId.SUPER_LUCK, AbilityId.JUSTIFIED, 465, 65, 130, 60, 75, 60, 75, 30, 35, 163, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.DARK, null, 1.2, 47, AbilityId.PRESSURE, AbilityId.SUPER_LUCK, AbilityId.JUSTIFIED, 465, 65, 130, 60, 75, 60, 75, 30, 35, 163, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, null, 1.2, 49, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, 565, 65, 150, 60, 115, 60, 115, 30, 35, 163), + ), + new PokemonSpecies(SpeciesId.WYNAUT, 3, false, false, false, "Bright Pokémon", PokemonType.PSYCHIC, null, 0.6, 14, AbilityId.SHADOW_TAG, AbilityId.NONE, AbilityId.TELEPATHY, 260, 95, 23, 48, 23, 48, 23, 125, 50, 52, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SNORUNT, 3, false, false, false, "Snow Hat Pokémon", PokemonType.ICE, null, 0.7, 16.8, AbilityId.INNER_FOCUS, AbilityId.ICE_BODY, AbilityId.MOODY, 300, 50, 50, 50, 50, 50, 50, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GLALIE, 3, false, false, false, "Face Pokémon", PokemonType.ICE, null, 1.5, 256.5, AbilityId.INNER_FOCUS, AbilityId.ICE_BODY, AbilityId.MOODY, 480, 80, 80, 80, 80, 80, 80, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ICE, null, 1.5, 256.5, AbilityId.INNER_FOCUS, AbilityId.ICE_BODY, AbilityId.MOODY, 480, 80, 80, 80, 80, 80, 80, 75, 50, 168, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ICE, null, 2.1, 350.2, AbilityId.REFRIGERATE, AbilityId.REFRIGERATE, AbilityId.REFRIGERATE, 580, 80, 120, 80, 120, 80, 100, 75, 50, 168), + ), + new PokemonSpecies(SpeciesId.SPHEAL, 3, false, false, false, "Clap Pokémon", PokemonType.ICE, PokemonType.WATER, 0.8, 39.5, AbilityId.THICK_FAT, AbilityId.ICE_BODY, AbilityId.OBLIVIOUS, 290, 70, 40, 50, 55, 50, 25, 255, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SEALEO, 3, false, false, false, "Ball Roll Pokémon", PokemonType.ICE, PokemonType.WATER, 1.1, 87.6, AbilityId.THICK_FAT, AbilityId.ICE_BODY, AbilityId.OBLIVIOUS, 410, 90, 60, 70, 75, 70, 45, 120, 50, 144, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.WALREIN, 3, false, false, false, "Ice Break Pokémon", PokemonType.ICE, PokemonType.WATER, 1.4, 150.6, AbilityId.THICK_FAT, AbilityId.ICE_BODY, AbilityId.OBLIVIOUS, 530, 110, 80, 90, 95, 90, 65, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CLAMPERL, 3, false, false, false, "Bivalve Pokémon", PokemonType.WATER, null, 0.4, 52.5, AbilityId.SHELL_ARMOR, AbilityId.NONE, AbilityId.RATTLED, 345, 35, 64, 85, 74, 55, 32, 255, 70, 69, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.HUNTAIL, 3, false, false, false, "Deep Sea Pokémon", PokemonType.WATER, null, 1.7, 27, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.WATER_VEIL, 485, 55, 104, 105, 94, 75, 52, 60, 70, 170, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.GOREBYSS, 3, false, false, false, "South Sea Pokémon", PokemonType.WATER, null, 1.8, 22.6, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.HYDRATION, 485, 55, 84, 105, 114, 75, 52, 60, 70, 170, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.RELICANTH, 3, false, false, false, "Longevity Pokémon", PokemonType.WATER, PokemonType.ROCK, 1, 23.4, AbilityId.SWIFT_SWIM, AbilityId.ROCK_HEAD, AbilityId.STURDY, 485, 100, 90, 130, 45, 65, 55, 25, 50, 170, GrowthRate.SLOW, 87.5, true), + new PokemonSpecies(SpeciesId.LUVDISC, 3, false, false, false, "Rendezvous Pokémon", PokemonType.WATER, null, 0.6, 8.7, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.HYDRATION, 330, 43, 30, 55, 40, 65, 97, 225, 70, 116, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.BAGON, 3, false, false, false, "Rock Head Pokémon", PokemonType.DRAGON, null, 0.6, 42.1, AbilityId.ROCK_HEAD, AbilityId.NONE, AbilityId.SHEER_FORCE, 300, 45, 75, 60, 40, 30, 50, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.SHELGON, 3, false, false, false, "Endurance Pokémon", PokemonType.DRAGON, null, 1.1, 110.5, AbilityId.ROCK_HEAD, AbilityId.NONE, AbilityId.OVERCOAT, 420, 65, 95, 100, 60, 50, 50, 45, 35, 147, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.SALAMENCE, 3, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 1.5, 102.6, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.MOXIE, 600, 95, 135, 80, 110, 80, 100, 45, 35, 300, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 1.5, 102.6, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.MOXIE, 600, 95, 135, 80, 110, 80, 100, 45, 35, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FLYING, 1.8, 112.6, AbilityId.AERILATE, AbilityId.NONE, AbilityId.AERILATE, 700, 95, 145, 130, 120, 90, 120, 45, 35, 300), + ), + new PokemonSpecies(SpeciesId.BELDUM, 3, false, false, false, "Iron Ball Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.6, 95.2, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 300, 40, 55, 80, 35, 60, 30, 45, 35, 60, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Frigibax + new PokemonSpecies(SpeciesId.METANG, 3, false, false, false, "Iron Claw Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.2, 202.5, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 420, 60, 75, 100, 55, 80, 50, 25, 35, 147, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Arctibax + new PokemonSpecies(SpeciesId.METAGROSS, 3, false, false, false, "Iron Leg Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 550, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 600, 80, 135, 130, 95, 90, 70, 10, 35, 300, GrowthRate.SLOW, null, false, true, //Custom Catchrate, matching Baxcalibur + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 550, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 600, 80, 135, 130, 95, 90, 70, 3, 35, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.PSYCHIC, 2.5, 942.9, AbilityId.TOUGH_CLAWS, AbilityId.NONE, AbilityId.TOUGH_CLAWS, 700, 80, 145, 150, 105, 110, 110, 3, 35, 300), + ), + new PokemonSpecies(SpeciesId.REGIROCK, 3, true, false, false, "Rock Peak Pokémon", PokemonType.ROCK, null, 1.7, 230, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.STURDY, 580, 80, 100, 200, 50, 100, 50, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.REGICE, 3, true, false, false, "Iceberg Pokémon", PokemonType.ICE, null, 1.8, 175, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.ICE_BODY, 580, 80, 50, 100, 100, 200, 50, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.REGISTEEL, 3, true, false, false, "Iron Pokémon", PokemonType.STEEL, null, 1.9, 205, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.LIGHT_METAL, 580, 80, 75, 150, 75, 150, 50, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.LATIAS, 3, true, false, false, "Eon Pokémon", PokemonType.DRAGON, PokemonType.PSYCHIC, 1.4, 40, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 80, 80, 90, 110, 130, 110, 3, 90, 300, GrowthRate.SLOW, 0, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.PSYCHIC, 1.4, 40, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 80, 80, 90, 110, 130, 110, 3, 90, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.PSYCHIC, 1.8, 52, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 700, 80, 100, 120, 140, 150, 110, 3, 90, 300), + ), + new PokemonSpecies(SpeciesId.LATIOS, 3, true, false, false, "Eon Pokémon", PokemonType.DRAGON, PokemonType.PSYCHIC, 2, 60, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 80, 90, 80, 130, 110, 110, 3, 90, 300, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.PSYCHIC, 2, 60, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 80, 90, 80, 130, 110, 110, 3, 90, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.PSYCHIC, 2.3, 70, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 700, 80, 130, 100, 160, 120, 110, 3, 90, 300), + ), + new PokemonSpecies(SpeciesId.KYOGRE, 3, false, true, false, "Sea Basin Pokémon", PokemonType.WATER, null, 4.5, 352, AbilityId.DRIZZLE, AbilityId.NONE, AbilityId.NONE, 670, 100, 100, 90, 150, 140, 90, 3, 0, 335, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, null, 4.5, 352, AbilityId.DRIZZLE, AbilityId.NONE, AbilityId.NONE, 670, 100, 100, 90, 150, 140, 90, 3, 0, 335, false, null, true), + new PokemonForm("Primal", "primal", PokemonType.WATER, null, 9.8, 430, AbilityId.PRIMORDIAL_SEA, AbilityId.NONE, AbilityId.NONE, 770, 100, 150, 90, 180, 160, 90, 3, 0, 335), + ), + new PokemonSpecies(SpeciesId.GROUDON, 3, false, true, false, "Continent Pokémon", PokemonType.GROUND, null, 3.5, 950, AbilityId.DROUGHT, AbilityId.NONE, AbilityId.NONE, 670, 100, 150, 140, 100, 90, 90, 3, 0, 335, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.GROUND, null, 3.5, 950, AbilityId.DROUGHT, AbilityId.NONE, AbilityId.NONE, 670, 100, 150, 140, 100, 90, 90, 3, 0, 335, false, null, true), + new PokemonForm("Primal", "primal", PokemonType.GROUND, PokemonType.FIRE, 5, 999.7, AbilityId.DESOLATE_LAND, AbilityId.NONE, AbilityId.NONE, 770, 100, 180, 160, 150, 90, 90, 3, 0, 335), + ), + new PokemonSpecies(SpeciesId.RAYQUAZA, 3, false, true, false, "Sky High Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 7, 206.5, AbilityId.AIR_LOCK, AbilityId.NONE, AbilityId.NONE, 680, 105, 150, 90, 150, 90, 95, 45, 0, 340, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 7, 206.5, AbilityId.AIR_LOCK, AbilityId.NONE, AbilityId.NONE, 680, 105, 150, 90, 150, 90, 95, 45, 0, 340, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FLYING, 10.8, 392, AbilityId.DELTA_STREAM, AbilityId.NONE, AbilityId.NONE, 780, 105, 180, 100, 180, 100, 115, 45, 0, 340), + ), + new PokemonSpecies(SpeciesId.JIRACHI, 3, false, false, true, "Wish Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.3, 1.1, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.DEOXYS, 3, false, false, true, "DNA Pokémon", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal Forme", "normal", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, false, "", true), + new PokemonForm("Attack Forme", "attack", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 180, 20, 180, 20, 150, 3, 0, 300), + new PokemonForm("Defense Forme", "defense", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 70, 160, 70, 160, 90, 3, 0, 300), + new PokemonForm("Speed Forme", "speed", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 95, 90, 95, 90, 180, 3, 0, 300), + ), + new PokemonSpecies(SpeciesId.TURTWIG, 4, false, false, false, "Tiny Leaf Pokémon", PokemonType.GRASS, null, 0.4, 10.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.SHELL_ARMOR, 318, 55, 68, 64, 45, 55, 31, 45, 70, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.GROTLE, 4, false, false, false, "Grove Pokémon", PokemonType.GRASS, null, 1.1, 97, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.SHELL_ARMOR, 405, 75, 89, 85, 55, 65, 36, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.TORTERRA, 4, false, false, false, "Continent Pokémon", PokemonType.GRASS, PokemonType.GROUND, 2.2, 310, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.SHELL_ARMOR, 525, 95, 109, 105, 75, 85, 56, 45, 70, 263, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.CHIMCHAR, 4, false, false, false, "Chimp Pokémon", PokemonType.FIRE, null, 0.5, 6.2, AbilityId.BLAZE, AbilityId.NONE, AbilityId.IRON_FIST, 309, 44, 58, 44, 58, 44, 61, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.MONFERNO, 4, false, false, false, "Playful Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 0.9, 22, AbilityId.BLAZE, AbilityId.NONE, AbilityId.IRON_FIST, 405, 64, 78, 52, 78, 52, 81, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.INFERNAPE, 4, false, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.2, 55, AbilityId.BLAZE, AbilityId.NONE, AbilityId.IRON_FIST, 534, 76, 104, 71, 104, 71, 108, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.PIPLUP, 4, false, false, false, "Penguin Pokémon", PokemonType.WATER, null, 0.4, 5.2, AbilityId.TORRENT, AbilityId.NONE, AbilityId.COMPETITIVE, 314, 53, 51, 53, 61, 56, 40, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.PRINPLUP, 4, false, false, false, "Penguin Pokémon", PokemonType.WATER, null, 0.8, 23, AbilityId.TORRENT, AbilityId.NONE, AbilityId.COMPETITIVE, 405, 64, 66, 68, 81, 76, 50, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.EMPOLEON, 4, false, false, false, "Emperor Pokémon", PokemonType.WATER, PokemonType.STEEL, 1.7, 84.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.COMPETITIVE, 530, 84, 86, 88, 111, 101, 60, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.STARLY, 4, false, false, false, "Starling Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2, AbilityId.KEEN_EYE, AbilityId.NONE, AbilityId.RECKLESS, 245, 40, 55, 30, 30, 30, 60, 255, 70, 49, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.STARAVIA, 4, false, false, false, "Starling Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 15.5, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.RECKLESS, 340, 55, 75, 50, 40, 40, 80, 120, 70, 119, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.STARAPTOR, 4, false, false, false, "Predator Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 24.9, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.RECKLESS, 485, 85, 120, 70, 50, 60, 100, 45, 70, 243, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.BIDOOF, 4, false, false, false, "Plump Mouse Pokémon", PokemonType.NORMAL, null, 0.5, 20, AbilityId.SIMPLE, AbilityId.UNAWARE, AbilityId.MOODY, 250, 59, 45, 40, 35, 40, 31, 255, 70, 50, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.BIBAREL, 4, false, false, false, "Beaver Pokémon", PokemonType.NORMAL, PokemonType.WATER, 1, 31.5, AbilityId.SIMPLE, AbilityId.UNAWARE, AbilityId.MOODY, 410, 79, 85, 60, 55, 60, 71, 127, 70, 144, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.KRICKETOT, 4, false, false, false, "Cricket Pokémon", PokemonType.BUG, null, 0.3, 2.2, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.RUN_AWAY, 194, 37, 25, 41, 25, 41, 25, 255, 70, 39, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.KRICKETUNE, 4, false, false, false, "Cricket Pokémon", PokemonType.BUG, null, 1, 25.5, AbilityId.SWARM, AbilityId.NONE, AbilityId.TECHNICIAN, 384, 77, 85, 51, 55, 51, 65, 45, 70, 134, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.SHINX, 4, false, false, false, "Flash Pokémon", PokemonType.ELECTRIC, null, 0.5, 9.5, AbilityId.RIVALRY, AbilityId.INTIMIDATE, AbilityId.GUTS, 263, 45, 65, 34, 40, 34, 45, 235, 50, 53, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.LUXIO, 4, false, false, false, "Spark Pokémon", PokemonType.ELECTRIC, null, 0.9, 30.5, AbilityId.RIVALRY, AbilityId.INTIMIDATE, AbilityId.GUTS, 363, 60, 85, 49, 60, 49, 60, 120, 100, 127, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.LUXRAY, 4, false, false, false, "Gleam Eyes Pokémon", PokemonType.ELECTRIC, null, 1.4, 42, AbilityId.RIVALRY, AbilityId.INTIMIDATE, AbilityId.GUTS, 523, 80, 120, 79, 95, 79, 70, 45, 50, 262, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.BUDEW, 4, false, false, false, "Bud Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.2, 1.2, AbilityId.NATURAL_CURE, AbilityId.POISON_POINT, AbilityId.LEAF_GUARD, 280, 40, 30, 35, 50, 70, 55, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ROSERADE, 4, false, false, false, "Bouquet Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.9, 14.5, AbilityId.NATURAL_CURE, AbilityId.POISON_POINT, AbilityId.TECHNICIAN, 515, 60, 70, 65, 125, 105, 90, 75, 50, 258, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.CRANIDOS, 4, false, false, false, "Head Butt Pokémon", PokemonType.ROCK, null, 0.9, 31.5, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.SHEER_FORCE, 350, 67, 125, 40, 30, 30, 58, 45, 70, 70, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.RAMPARDOS, 4, false, false, false, "Head Butt Pokémon", PokemonType.ROCK, null, 1.6, 102.5, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.SHEER_FORCE, 495, 97, 165, 60, 65, 50, 58, 45, 70, 173, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.SHIELDON, 4, false, false, false, "Shield Pokémon", PokemonType.ROCK, PokemonType.STEEL, 0.5, 57, AbilityId.STURDY, AbilityId.NONE, AbilityId.SOUNDPROOF, 350, 30, 42, 118, 42, 88, 30, 45, 70, 70, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.BASTIODON, 4, false, false, false, "Shield Pokémon", PokemonType.ROCK, PokemonType.STEEL, 1.3, 149.5, AbilityId.STURDY, AbilityId.NONE, AbilityId.SOUNDPROOF, 495, 60, 52, 168, 47, 138, 30, 45, 70, 173, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(SpeciesId.BURMY, 4, false, false, false, "Bagworm Pokémon", PokemonType.BUG, null, 0.2, 3.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Plant Cloak", "plant", PokemonType.BUG, null, 0.2, 3.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), + new PokemonForm("Sandy Cloak", "sandy", PokemonType.BUG, null, 0.2, 3.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), + new PokemonForm("Trash Cloak", "trash", PokemonType.BUG, null, 0.2, 3.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), + ), + new PokemonSpecies(SpeciesId.WORMADAM, 4, false, false, false, "Bagworm Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.5, 6.5, AbilityId.ANTICIPATION, AbilityId.NONE, AbilityId.OVERCOAT, 424, 60, 59, 85, 79, 105, 36, 45, 70, 148, GrowthRate.MEDIUM_FAST, 0, false, false, + new PokemonForm("Plant Cloak", "plant", PokemonType.BUG, PokemonType.GRASS, 0.5, 6.5, AbilityId.ANTICIPATION, AbilityId.NONE, AbilityId.OVERCOAT, 424, 60, 59, 85, 79, 105, 36, 45, 70, 148, false, null, true), + new PokemonForm("Sandy Cloak", "sandy", PokemonType.BUG, PokemonType.GROUND, 0.5, 6.5, AbilityId.ANTICIPATION, AbilityId.NONE, AbilityId.OVERCOAT, 424, 60, 79, 105, 59, 85, 36, 45, 70, 148, false, null, true), + new PokemonForm("Trash Cloak", "trash", PokemonType.BUG, PokemonType.STEEL, 0.5, 6.5, AbilityId.ANTICIPATION, AbilityId.NONE, AbilityId.OVERCOAT, 424, 60, 69, 95, 69, 95, 36, 45, 70, 148, false, null, true), + ), + new PokemonSpecies(SpeciesId.MOTHIM, 4, false, false, false, "Moth Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.9, 23.3, AbilityId.SWARM, AbilityId.NONE, AbilityId.TINTED_LENS, 424, 70, 94, 50, 94, 50, 66, 45, 70, 148, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.COMBEE, 4, false, false, false, "Tiny Bee Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.3, 5.5, AbilityId.HONEY_GATHER, AbilityId.NONE, AbilityId.HUSTLE, 244, 30, 30, 42, 30, 42, 70, 120, 50, 49, GrowthRate.MEDIUM_SLOW, 87.5, true), + new PokemonSpecies(SpeciesId.VESPIQUEN, 4, false, false, false, "Beehive Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 38.5, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.UNNERVE, 474, 70, 80, 102, 80, 102, 40, 45, 50, 166, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.PACHIRISU, 4, false, false, false, "EleSquirrel Pokémon", PokemonType.ELECTRIC, null, 0.4, 3.9, AbilityId.RUN_AWAY, AbilityId.PICKUP, AbilityId.VOLT_ABSORB, 405, 60, 45, 70, 45, 90, 95, 200, 100, 142, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.BUIZEL, 4, false, false, false, "Sea Weasel Pokémon", PokemonType.WATER, null, 0.7, 29.5, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.WATER_VEIL, 330, 55, 65, 35, 60, 30, 85, 190, 70, 66, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.FLOATZEL, 4, false, false, false, "Sea Weasel Pokémon", PokemonType.WATER, null, 1.1, 33.5, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.WATER_VEIL, 495, 85, 105, 55, 85, 50, 115, 75, 70, 173, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.CHERUBI, 4, false, false, false, "Cherry Pokémon", PokemonType.GRASS, null, 0.4, 3.3, AbilityId.CHLOROPHYLL, AbilityId.NONE, AbilityId.NONE, 275, 45, 35, 45, 62, 53, 35, 190, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CHERRIM, 4, false, false, false, "Blossom Pokémon", PokemonType.GRASS, null, 0.5, 9.3, AbilityId.FLOWER_GIFT, AbilityId.NONE, AbilityId.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Overcast Form", "overcast", PokemonType.GRASS, null, 0.5, 9.3, AbilityId.FLOWER_GIFT, AbilityId.NONE, AbilityId.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158, false, null, true), + new PokemonForm("Sunshine Form", "sunshine", PokemonType.GRASS, null, 0.5, 9.3, AbilityId.FLOWER_GIFT, AbilityId.NONE, AbilityId.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158), + ), + new PokemonSpecies(SpeciesId.SHELLOS, 4, false, false, false, "Sea Slug Pokémon", PokemonType.WATER, null, 0.3, 6.3, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("East Sea", "east", PokemonType.WATER, null, 0.3, 6.3, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, false, null, true), + new PokemonForm("West Sea", "west", PokemonType.WATER, null, 0.3, 6.3, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, false, null, true), + ), + new PokemonSpecies(SpeciesId.GASTRODON, 4, false, false, false, "Sea Slug Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("East Sea", "east", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, false, null, true), + new PokemonForm("West Sea", "west", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, AbilityId.STICKY_HOLD, AbilityId.STORM_DRAIN, AbilityId.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, false, null, true), + ), + new PokemonSpecies(SpeciesId.AMBIPOM, 4, false, false, false, "Long Tail Pokémon", PokemonType.NORMAL, null, 1.2, 20.3, AbilityId.TECHNICIAN, AbilityId.PICKUP, AbilityId.SKILL_LINK, 482, 75, 100, 66, 60, 66, 115, 45, 100, 169, GrowthRate.FAST, 50, true), + new PokemonSpecies(SpeciesId.DRIFLOON, 4, false, false, false, "Balloon Pokémon", PokemonType.GHOST, PokemonType.FLYING, 0.4, 1.2, AbilityId.AFTERMATH, AbilityId.UNBURDEN, AbilityId.FLARE_BOOST, 348, 90, 50, 34, 60, 44, 70, 125, 50, 70, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.DRIFBLIM, 4, false, false, false, "Blimp Pokémon", PokemonType.GHOST, PokemonType.FLYING, 1.2, 15, AbilityId.AFTERMATH, AbilityId.UNBURDEN, AbilityId.FLARE_BOOST, 498, 150, 80, 44, 90, 54, 80, 60, 50, 174, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(SpeciesId.BUNEARY, 4, false, false, false, "Rabbit Pokémon", PokemonType.NORMAL, null, 0.4, 5.5, AbilityId.RUN_AWAY, AbilityId.KLUTZ, AbilityId.LIMBER, 350, 55, 66, 44, 44, 56, 85, 190, 0, 70, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LOPUNNY, 4, false, false, false, "Rabbit Pokémon", PokemonType.NORMAL, null, 1.2, 33.3, AbilityId.CUTE_CHARM, AbilityId.KLUTZ, AbilityId.LIMBER, 480, 65, 76, 84, 54, 96, 105, 60, 140, 168, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 1.2, 33.3, AbilityId.CUTE_CHARM, AbilityId.KLUTZ, AbilityId.LIMBER, 480, 65, 76, 84, 54, 96, 105, 60, 140, 168, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FIGHTING, 1.3, 28.3, AbilityId.SCRAPPY, AbilityId.SCRAPPY, AbilityId.SCRAPPY, 580, 65, 136, 94, 54, 96, 135, 60, 140, 168), + ), + new PokemonSpecies(SpeciesId.MISMAGIUS, 4, false, false, false, "Magical Pokémon", PokemonType.GHOST, null, 0.9, 4.4, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 495, 60, 60, 60, 105, 105, 105, 45, 35, 173, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.HONCHKROW, 4, false, false, false, "Big Boss Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.9, 27.3, AbilityId.INSOMNIA, AbilityId.SUPER_LUCK, AbilityId.MOXIE, 505, 100, 125, 52, 105, 52, 71, 30, 35, 177, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GLAMEOW, 4, false, false, false, "Catty Pokémon", PokemonType.NORMAL, null, 0.5, 3.9, AbilityId.LIMBER, AbilityId.OWN_TEMPO, AbilityId.KEEN_EYE, 310, 49, 55, 42, 42, 37, 85, 190, 70, 62, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.PURUGLY, 4, false, false, false, "Tiger Cat Pokémon", PokemonType.NORMAL, null, 1, 43.8, AbilityId.THICK_FAT, AbilityId.OWN_TEMPO, AbilityId.DEFIANT, 452, 71, 82, 64, 64, 59, 112, 75, 70, 158, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.CHINGLING, 4, false, false, false, "Bell Pokémon", PokemonType.PSYCHIC, null, 0.2, 0.6, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 285, 45, 30, 50, 65, 50, 45, 120, 70, 57, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.STUNKY, 4, false, false, false, "Skunk Pokémon", PokemonType.POISON, PokemonType.DARK, 0.4, 19.2, AbilityId.STENCH, AbilityId.AFTERMATH, AbilityId.KEEN_EYE, 329, 63, 63, 47, 41, 41, 74, 225, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SKUNTANK, 4, false, false, false, "Skunk Pokémon", PokemonType.POISON, PokemonType.DARK, 1, 38, AbilityId.STENCH, AbilityId.AFTERMATH, AbilityId.KEEN_EYE, 479, 103, 93, 67, 71, 61, 84, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BRONZOR, 4, false, false, false, "Bronze Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.5, 60.5, AbilityId.LEVITATE, AbilityId.HEATPROOF, AbilityId.HEAVY_METAL, 300, 57, 24, 86, 24, 86, 23, 255, 50, 60, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.BRONZONG, 4, false, false, false, "Bronze Bell Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.3, 187, AbilityId.LEVITATE, AbilityId.HEATPROOF, AbilityId.HEAVY_METAL, 500, 67, 89, 116, 79, 116, 33, 90, 50, 175, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.BONSLY, 4, false, false, false, "Bonsai Pokémon", PokemonType.ROCK, null, 0.5, 15, AbilityId.STURDY, AbilityId.ROCK_HEAD, AbilityId.RATTLED, 290, 50, 80, 95, 10, 45, 10, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MIME_JR, 4, false, false, false, "Mime Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.6, 13, AbilityId.SOUNDPROOF, AbilityId.FILTER, AbilityId.TECHNICIAN, 310, 20, 25, 45, 70, 90, 60, 145, 50, 62, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HAPPINY, 4, false, false, false, "Playhouse Pokémon", PokemonType.NORMAL, null, 0.6, 24.4, AbilityId.NATURAL_CURE, AbilityId.SERENE_GRACE, AbilityId.FRIEND_GUARD, 220, 100, 5, 5, 15, 65, 30, 130, 140, 110, GrowthRate.FAST, 0, false), + new PokemonSpecies(SpeciesId.CHATOT, 4, false, false, false, "Music Note Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.5, 1.9, AbilityId.KEEN_EYE, AbilityId.TANGLED_FEET, AbilityId.BIG_PECKS, 411, 76, 65, 45, 92, 42, 91, 30, 35, 144, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SPIRITOMB, 4, false, false, false, "Forbidden Pokémon", PokemonType.GHOST, PokemonType.DARK, 1, 108, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.INFILTRATOR, 485, 50, 92, 108, 92, 108, 35, 100, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GIBLE, 4, false, false, false, "Land Shark Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 0.7, 20.5, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.ROUGH_SKIN, 300, 58, 70, 45, 40, 45, 42, 45, 50, 60, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.GABITE, 4, false, false, false, "Cave Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 1.4, 56, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.ROUGH_SKIN, 410, 68, 90, 65, 50, 55, 82, 45, 50, 144, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.GARCHOMP, 4, false, false, false, "Mach Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.ROUGH_SKIN, 600, 108, 130, 95, 80, 85, 102, 45, 50, 300, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, AbilityId.SAND_VEIL, AbilityId.NONE, AbilityId.ROUGH_SKIN, 600, 108, 130, 95, 80, 85, 102, 45, 50, 300, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, AbilityId.SAND_FORCE, AbilityId.NONE, AbilityId.SAND_FORCE, 700, 108, 170, 115, 120, 95, 92, 45, 50, 300, true), + ), + new PokemonSpecies(SpeciesId.MUNCHLAX, 4, false, false, false, "Big Eater Pokémon", PokemonType.NORMAL, null, 0.6, 105, AbilityId.PICKUP, AbilityId.THICK_FAT, AbilityId.GLUTTONY, 390, 135, 85, 40, 40, 85, 5, 50, 50, 78, GrowthRate.SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.RIOLU, 4, false, false, false, "Emanation Pokémon", PokemonType.FIGHTING, null, 0.7, 20.2, AbilityId.STEADFAST, AbilityId.INNER_FOCUS, AbilityId.PRANKSTER, 285, 40, 70, 40, 35, 40, 60, 75, 50, 57, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.LUCARIO, 4, false, false, false, "Aura Pokémon", PokemonType.FIGHTING, PokemonType.STEEL, 1.2, 54, AbilityId.STEADFAST, AbilityId.INNER_FOCUS, AbilityId.JUSTIFIED, 525, 70, 110, 70, 115, 70, 90, 45, 50, 184, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.STEEL, 1.2, 54, AbilityId.STEADFAST, AbilityId.INNER_FOCUS, AbilityId.JUSTIFIED, 525, 70, 110, 70, 115, 70, 90, 45, 50, 184, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIGHTING, PokemonType.STEEL, 1.3, 57.5, AbilityId.ADAPTABILITY, AbilityId.ADAPTABILITY, AbilityId.ADAPTABILITY, 625, 70, 145, 88, 140, 70, 112, 45, 50, 184), + ), + new PokemonSpecies(SpeciesId.HIPPOPOTAS, 4, false, false, false, "Hippo Pokémon", PokemonType.GROUND, null, 0.8, 49.5, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.SAND_FORCE, 330, 68, 72, 78, 38, 42, 32, 140, 50, 66, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.HIPPOWDON, 4, false, false, false, "Heavyweight Pokémon", PokemonType.GROUND, null, 2, 300, AbilityId.SAND_STREAM, AbilityId.NONE, AbilityId.SAND_FORCE, 525, 108, 112, 118, 68, 72, 47, 60, 50, 184, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.SKORUPI, 4, false, false, false, "Scorpion Pokémon", PokemonType.POISON, PokemonType.BUG, 0.8, 12, AbilityId.BATTLE_ARMOR, AbilityId.SNIPER, AbilityId.KEEN_EYE, 330, 40, 50, 90, 30, 55, 65, 120, 50, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.DRAPION, 4, false, false, false, "Ogre Scorpion Pokémon", PokemonType.POISON, PokemonType.DARK, 1.3, 61.5, AbilityId.BATTLE_ARMOR, AbilityId.SNIPER, AbilityId.KEEN_EYE, 500, 70, 90, 110, 60, 75, 95, 45, 50, 175, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.CROAGUNK, 4, false, false, false, "Toxic Mouth Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 0.7, 23, AbilityId.ANTICIPATION, AbilityId.DRY_SKIN, AbilityId.POISON_TOUCH, 300, 48, 61, 40, 61, 40, 50, 140, 100, 60, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.TOXICROAK, 4, false, false, false, "Toxic Mouth Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 1.3, 44.4, AbilityId.ANTICIPATION, AbilityId.DRY_SKIN, AbilityId.POISON_TOUCH, 490, 83, 106, 65, 86, 65, 85, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.CARNIVINE, 4, false, false, false, "Bug Catcher Pokémon", PokemonType.GRASS, null, 1.4, 27, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 454, 74, 100, 72, 90, 72, 46, 200, 70, 159, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.FINNEON, 4, false, false, false, "Wing Fish Pokémon", PokemonType.WATER, null, 0.4, 7, AbilityId.SWIFT_SWIM, AbilityId.STORM_DRAIN, AbilityId.WATER_VEIL, 330, 49, 49, 56, 49, 61, 66, 190, 70, 66, GrowthRate.ERRATIC, 50, true), + new PokemonSpecies(SpeciesId.LUMINEON, 4, false, false, false, "Neon Pokémon", PokemonType.WATER, null, 1.2, 24, AbilityId.SWIFT_SWIM, AbilityId.STORM_DRAIN, AbilityId.WATER_VEIL, 460, 69, 69, 76, 69, 86, 91, 75, 70, 161, GrowthRate.ERRATIC, 50, true), + new PokemonSpecies(SpeciesId.MANTYKE, 4, false, false, false, "Kite Pokémon", PokemonType.WATER, PokemonType.FLYING, 1, 65, AbilityId.SWIFT_SWIM, AbilityId.WATER_ABSORB, AbilityId.WATER_VEIL, 345, 45, 20, 50, 60, 120, 50, 25, 50, 69, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.SNOVER, 4, false, false, false, "Frost Tree Pokémon", PokemonType.GRASS, PokemonType.ICE, 1, 50.5, AbilityId.SNOW_WARNING, AbilityId.NONE, AbilityId.SOUNDPROOF, 334, 60, 62, 50, 62, 60, 40, 120, 50, 67, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.ABOMASNOW, 4, false, false, false, "Frost Tree Pokémon", PokemonType.GRASS, PokemonType.ICE, 2.2, 135.5, AbilityId.SNOW_WARNING, AbilityId.NONE, AbilityId.SOUNDPROOF, 494, 90, 92, 75, 92, 85, 60, 60, 50, 173, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.ICE, 2.2, 135.5, AbilityId.SNOW_WARNING, AbilityId.NONE, AbilityId.SOUNDPROOF, 494, 90, 92, 75, 92, 85, 60, 60, 50, 173, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.ICE, 2.7, 185, AbilityId.SNOW_WARNING, AbilityId.NONE, AbilityId.SNOW_WARNING, 594, 90, 132, 105, 132, 105, 30, 60, 50, 173, true), + ), + new PokemonSpecies(SpeciesId.WEAVILE, 4, false, false, false, "Sharp Claw Pokémon", PokemonType.DARK, PokemonType.ICE, 1.1, 34, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.PICKPOCKET, 510, 70, 120, 65, 45, 85, 125, 45, 35, 179, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.MAGNEZONE, 4, false, false, false, "Magnet Area Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 1.2, 180, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.ANALYTIC, 535, 70, 70, 115, 130, 90, 60, 30, 50, 268, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.LICKILICKY, 4, false, false, false, "Licking Pokémon", PokemonType.NORMAL, null, 1.7, 140, AbilityId.OWN_TEMPO, AbilityId.OBLIVIOUS, AbilityId.CLOUD_NINE, 515, 110, 85, 95, 80, 95, 50, 30, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RHYPERIOR, 4, false, false, false, "Drill Pokémon", PokemonType.GROUND, PokemonType.ROCK, 2.4, 282.8, AbilityId.LIGHTNING_ROD, AbilityId.SOLID_ROCK, AbilityId.RECKLESS, 535, 115, 140, 130, 55, 55, 40, 30, 50, 268, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.TANGROWTH, 4, false, false, false, "Vine Pokémon", PokemonType.GRASS, null, 2, 128.6, AbilityId.CHLOROPHYLL, AbilityId.LEAF_GUARD, AbilityId.REGENERATOR, 535, 100, 100, 125, 110, 50, 50, 30, 50, 187, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.ELECTIVIRE, 4, false, false, false, "Thunderbolt Pokémon", PokemonType.ELECTRIC, null, 1.8, 138.6, AbilityId.MOTOR_DRIVE, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 540, 75, 123, 67, 95, 85, 95, 30, 50, 270, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(SpeciesId.MAGMORTAR, 4, false, false, false, "Blast Pokémon", PokemonType.FIRE, null, 1.6, 68, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.VITAL_SPIRIT, 540, 75, 95, 67, 125, 95, 83, 30, 50, 270, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(SpeciesId.TOGEKISS, 4, false, false, false, "Jubilee Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 1.5, 38, AbilityId.HUSTLE, AbilityId.SERENE_GRACE, AbilityId.SUPER_LUCK, 545, 85, 50, 95, 120, 115, 80, 30, 50, 273, GrowthRate.FAST, 87.5, false), + new PokemonSpecies(SpeciesId.YANMEGA, 4, false, false, false, "Ogre Darner Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.9, 51.5, AbilityId.SPEED_BOOST, AbilityId.TINTED_LENS, AbilityId.FRISK, 515, 86, 76, 86, 116, 56, 95, 30, 70, 180, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LEAFEON, 4, false, false, false, "Verdant Pokémon", PokemonType.GRASS, null, 1, 25.5, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.CHLOROPHYLL, 525, 65, 110, 130, 60, 65, 95, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.GLACEON, 4, false, false, false, "Fresh Snow Pokémon", PokemonType.ICE, null, 0.8, 25.9, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.ICE_BODY, 525, 65, 60, 110, 130, 95, 65, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.GLISCOR, 4, false, false, false, "Fang Scorpion Pokémon", PokemonType.GROUND, PokemonType.FLYING, 2, 42.5, AbilityId.HYPER_CUTTER, AbilityId.SAND_VEIL, AbilityId.POISON_HEAL, 510, 75, 95, 125, 45, 75, 95, 30, 70, 179, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.MAMOSWINE, 4, false, false, false, "Twin Tusk Pokémon", PokemonType.ICE, PokemonType.GROUND, 2.5, 291, AbilityId.OBLIVIOUS, AbilityId.SNOW_CLOAK, AbilityId.THICK_FAT, 530, 110, 130, 80, 70, 60, 80, 50, 50, 265, GrowthRate.SLOW, 50, true), + new PokemonSpecies(SpeciesId.PORYGON_Z, 4, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.9, 34, AbilityId.ADAPTABILITY, AbilityId.DOWNLOAD, AbilityId.ANALYTIC, 535, 85, 80, 70, 135, 75, 90, 30, 50, 268, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.GALLADE, 4, false, false, false, "Blade Pokémon", PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 52, AbilityId.STEADFAST, AbilityId.SHARPNESS, AbilityId.JUSTIFIED, 518, 68, 125, 65, 65, 115, 80, 45, 35, 259, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 52, AbilityId.STEADFAST, AbilityId.SHARPNESS, AbilityId.JUSTIFIED, 518, 68, 125, 65, 65, 115, 80, 45, 35, 259, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 56.4, AbilityId.INNER_FOCUS, AbilityId.INNER_FOCUS, AbilityId.INNER_FOCUS, 618, 68, 165, 95, 65, 115, 110, 45, 35, 259), + ), + new PokemonSpecies(SpeciesId.PROBOPASS, 4, false, false, false, "Compass Pokémon", PokemonType.ROCK, PokemonType.STEEL, 1.4, 340, AbilityId.STURDY, AbilityId.MAGNET_PULL, AbilityId.SAND_FORCE, 525, 60, 55, 145, 75, 150, 40, 60, 70, 184, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DUSKNOIR, 4, false, false, false, "Gripper Pokémon", PokemonType.GHOST, null, 2.2, 106.6, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.FRISK, 525, 45, 100, 135, 65, 135, 45, 45, 35, 263, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.FROSLASS, 4, false, false, false, "Snow Land Pokémon", PokemonType.ICE, PokemonType.GHOST, 1.3, 26.6, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.CURSED_BODY, 480, 70, 80, 70, 80, 70, 110, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.ROTOM, 4, false, false, false, "Plasma Pokémon", PokemonType.ELECTRIC, PokemonType.GHOST, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 440, 50, 50, 77, 95, 77, 91, 45, 50, 154, GrowthRate.MEDIUM_FAST, null, false, false, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, PokemonType.GHOST, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 440, 50, 50, 77, 95, 77, 91, 45, 50, 154, false, null, true), + new PokemonForm("Heat", "heat", PokemonType.ELECTRIC, PokemonType.FIRE, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), + new PokemonForm("Wash", "wash", PokemonType.ELECTRIC, PokemonType.WATER, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), + new PokemonForm("Frost", "frost", PokemonType.ELECTRIC, PokemonType.ICE, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), + new PokemonForm("Fan", "fan", PokemonType.ELECTRIC, PokemonType.FLYING, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), + new PokemonForm("Mow", "mow", PokemonType.ELECTRIC, PokemonType.GRASS, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), + ), + new PokemonSpecies(SpeciesId.UXIE, 4, true, false, false, "Knowledge Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 580, 75, 75, 130, 75, 130, 95, 3, 140, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.MESPRIT, 4, true, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 580, 80, 105, 105, 105, 105, 80, 3, 140, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.AZELF, 4, true, false, false, "Willpower Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 580, 75, 125, 70, 125, 70, 115, 3, 140, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.DIALGA, 4, false, true, false, "Temporal Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 5.4, 683, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 100, 120, 120, 150, 100, 90, 3, 0, 340, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.DRAGON, 5.4, 683, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 100, 120, 120, 150, 100, 90, 3, 0, 340, false, null, true), + new PokemonForm("Origin Forme", "origin", PokemonType.STEEL, PokemonType.DRAGON, 7, 848.7, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 100, 100, 120, 150, 120, 90, 3, 0, 340), + ), + new PokemonSpecies(SpeciesId.PALKIA, 4, false, true, false, "Spatial Pokémon", PokemonType.WATER, PokemonType.DRAGON, 4.2, 336, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 90, 120, 100, 150, 120, 100, 3, 0, 340, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DRAGON, 4.2, 336, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 90, 120, 100, 150, 120, 100, 3, 0, 340, false, null, true), + new PokemonForm("Origin Forme", "origin", PokemonType.WATER, PokemonType.DRAGON, 6.3, 659, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 90, 100, 100, 150, 120, 120, 3, 0, 340), + ), + new PokemonSpecies(SpeciesId.HEATRAN, 4, true, false, false, "Lava Dome Pokémon", PokemonType.FIRE, PokemonType.STEEL, 1.7, 430, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.FLAME_BODY, 600, 91, 90, 106, 130, 106, 77, 3, 100, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.REGIGIGAS, 4, true, false, false, "Colossal Pokémon", PokemonType.NORMAL, null, 3.7, 420, AbilityId.SLOW_START, AbilityId.NONE, AbilityId.NORMALIZE, 670, 110, 160, 110, 80, 110, 100, 3, 0, 335, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.GIRATINA, 4, false, true, false, "Renegade Pokémon", PokemonType.GHOST, PokemonType.DRAGON, 4.5, 750, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 150, 100, 120, 100, 120, 90, 3, 0, 340, GrowthRate.SLOW, null, false, true, + new PokemonForm("Altered Forme", "altered", PokemonType.GHOST, PokemonType.DRAGON, 4.5, 750, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.TELEPATHY, 680, 150, 100, 120, 100, 120, 90, 3, 0, 340, false, null, true), + new PokemonForm("Origin Forme", "origin", PokemonType.GHOST, PokemonType.DRAGON, 6.9, 650, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.LEVITATE, 680, 150, 120, 100, 120, 100, 90, 3, 0, 340), + ), + new PokemonSpecies(SpeciesId.CRESSELIA, 4, true, false, false, "Lunar Pokémon", PokemonType.PSYCHIC, null, 1.5, 85.6, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 580, 120, 70, 110, 75, 120, 85, 3, 100, 300, GrowthRate.SLOW, 0, false), + new PokemonSpecies(SpeciesId.PHIONE, 4, false, false, true, "Sea Drifter Pokémon", PokemonType.WATER, null, 0.4, 3.1, AbilityId.HYDRATION, AbilityId.NONE, AbilityId.NONE, 480, 80, 80, 80, 80, 80, 80, 30, 70, 240, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.MANAPHY, 4, false, false, true, "Seafaring Pokémon", PokemonType.WATER, null, 0.3, 1.4, AbilityId.HYDRATION, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 70, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.DARKRAI, 4, false, false, true, "Pitch-Black Pokémon", PokemonType.DARK, null, 1.5, 50.5, AbilityId.BAD_DREAMS, AbilityId.NONE, AbilityId.NONE, 600, 70, 90, 90, 135, 90, 125, 3, 0, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SHAYMIN, 4, false, false, true, "Gratitude Pokémon", PokemonType.GRASS, null, 0.2, 2.1, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false, true, + new PokemonForm("Land Forme", "land", PokemonType.GRASS, null, 0.2, 2.1, AbilityId.NATURAL_CURE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, false, null, true), + new PokemonForm("Sky Forme", "sky", PokemonType.GRASS, PokemonType.FLYING, 0.4, 5.2, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 103, 75, 120, 75, 127, 45, 100, 300), + ), + new PokemonSpecies(SpeciesId.ARCEUS, 4, false, false, true, "Alpha Pokémon", PokemonType.NORMAL, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "normal", PokemonType.NORMAL, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, false, null, true), + new PokemonForm("Fighting", "fighting", PokemonType.FIGHTING, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Flying", "flying", PokemonType.FLYING, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Poison", "poison", PokemonType.POISON, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Ground", "ground", PokemonType.GROUND, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Rock", "rock", PokemonType.ROCK, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Bug", "bug", PokemonType.BUG, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Ghost", "ghost", PokemonType.GHOST, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Steel", "steel", PokemonType.STEEL, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Fire", "fire", PokemonType.FIRE, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Water", "water", PokemonType.WATER, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Grass", "grass", PokemonType.GRASS, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Electric", "electric", PokemonType.ELECTRIC, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Psychic", "psychic", PokemonType.PSYCHIC, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Ice", "ice", PokemonType.ICE, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Dragon", "dragon", PokemonType.DRAGON, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Dark", "dark", PokemonType.DARK, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Fairy", "fairy", PokemonType.FAIRY, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("???", "unknown", PokemonType.UNKNOWN, null, 3.2, 320, AbilityId.MULTITYPE, AbilityId.NONE, AbilityId.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, false, null, false, true), + ), + new PokemonSpecies(SpeciesId.VICTINI, 5, false, false, true, "Victory Pokémon", PokemonType.PSYCHIC, PokemonType.FIRE, 0.4, 4, AbilityId.VICTORY_STAR, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SNIVY, 5, false, false, false, "Grass Snake Pokémon", PokemonType.GRASS, null, 0.6, 8.1, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CONTRARY, 308, 45, 45, 55, 45, 55, 63, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.SERVINE, 5, false, false, false, "Grass Snake Pokémon", PokemonType.GRASS, null, 0.8, 16, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CONTRARY, 413, 60, 60, 75, 60, 75, 83, 45, 70, 145, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.SERPERIOR, 5, false, false, false, "Regal Pokémon", PokemonType.GRASS, null, 3.3, 63, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.CONTRARY, 528, 75, 75, 95, 75, 95, 113, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.TEPIG, 5, false, false, false, "Fire Pig Pokémon", PokemonType.FIRE, null, 0.5, 9.9, AbilityId.BLAZE, AbilityId.NONE, AbilityId.THICK_FAT, 308, 65, 63, 45, 45, 45, 45, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.PIGNITE, 5, false, false, false, "Fire Pig Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1, 55.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.THICK_FAT, 418, 90, 93, 55, 70, 55, 55, 45, 70, 146, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.EMBOAR, 5, false, false, false, "Mega Fire Pig Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.6, 150, AbilityId.BLAZE, AbilityId.NONE, AbilityId.RECKLESS, 528, 110, 123, 65, 100, 65, 65, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.OSHAWOTT, 5, false, false, false, "Sea Otter Pokémon", PokemonType.WATER, null, 0.5, 5.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHELL_ARMOR, 308, 55, 55, 45, 63, 45, 45, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.DEWOTT, 5, false, false, false, "Discipline Pokémon", PokemonType.WATER, null, 0.8, 24.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHELL_ARMOR, 413, 75, 75, 60, 83, 60, 60, 45, 70, 145, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.SAMUROTT, 5, false, false, false, "Formidable Pokémon", PokemonType.WATER, null, 1.5, 94.6, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHELL_ARMOR, 528, 95, 100, 85, 108, 70, 70, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.PATRAT, 5, false, false, false, "Scout Pokémon", PokemonType.NORMAL, null, 0.5, 11.6, AbilityId.RUN_AWAY, AbilityId.KEEN_EYE, AbilityId.ANALYTIC, 255, 45, 55, 39, 35, 39, 42, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WATCHOG, 5, false, false, false, "Lookout Pokémon", PokemonType.NORMAL, null, 1.1, 27, AbilityId.ILLUMINATE, AbilityId.KEEN_EYE, AbilityId.ANALYTIC, 420, 60, 85, 69, 60, 69, 77, 255, 70, 147, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LILLIPUP, 5, false, false, false, "Puppy Pokémon", PokemonType.NORMAL, null, 0.4, 4.1, AbilityId.VITAL_SPIRIT, AbilityId.PICKUP, AbilityId.RUN_AWAY, 275, 45, 60, 45, 25, 45, 55, 255, 50, 55, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.HERDIER, 5, false, false, false, "Loyal Dog Pokémon", PokemonType.NORMAL, null, 0.9, 14.7, AbilityId.INTIMIDATE, AbilityId.SAND_RUSH, AbilityId.SCRAPPY, 370, 65, 80, 65, 35, 65, 60, 120, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.STOUTLAND, 5, false, false, false, "Big-Hearted Pokémon", PokemonType.NORMAL, null, 1.2, 61, AbilityId.INTIMIDATE, AbilityId.SAND_RUSH, AbilityId.SCRAPPY, 500, 85, 110, 90, 45, 90, 80, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.PURRLOIN, 5, false, false, false, "Devious Pokémon", PokemonType.DARK, null, 0.4, 10.1, AbilityId.LIMBER, AbilityId.UNBURDEN, AbilityId.PRANKSTER, 281, 41, 50, 37, 50, 37, 66, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LIEPARD, 5, false, false, false, "Cruel Pokémon", PokemonType.DARK, null, 1.1, 37.5, AbilityId.LIMBER, AbilityId.UNBURDEN, AbilityId.PRANKSTER, 446, 64, 88, 50, 88, 50, 106, 90, 50, 156, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PANSAGE, 5, false, false, false, "Grass Monkey Pokémon", PokemonType.GRASS, null, 0.6, 10.5, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.OVERGROW, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.SIMISAGE, 5, false, false, false, "Thorn Monkey Pokémon", PokemonType.GRASS, null, 1.1, 30.5, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.OVERGROW, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.PANSEAR, 5, false, false, false, "High Temp Pokémon", PokemonType.FIRE, null, 0.6, 11, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.BLAZE, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.SIMISEAR, 5, false, false, false, "Ember Pokémon", PokemonType.FIRE, null, 1, 28, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.BLAZE, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.PANPOUR, 5, false, false, false, "Spray Pokémon", PokemonType.WATER, null, 0.6, 13.5, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.TORRENT, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.SIMIPOUR, 5, false, false, false, "Geyser Pokémon", PokemonType.WATER, null, 1, 29, AbilityId.GLUTTONY, AbilityId.NONE, AbilityId.TORRENT, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.MUNNA, 5, false, false, false, "Dream Eater Pokémon", PokemonType.PSYCHIC, null, 0.6, 23.3, AbilityId.FOREWARN, AbilityId.SYNCHRONIZE, AbilityId.TELEPATHY, 292, 76, 25, 45, 67, 55, 24, 190, 50, 58, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.MUSHARNA, 5, false, false, false, "Drowsing Pokémon", PokemonType.PSYCHIC, null, 1.1, 60.5, AbilityId.FOREWARN, AbilityId.SYNCHRONIZE, AbilityId.TELEPATHY, 487, 116, 55, 85, 107, 95, 29, 75, 50, 170, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.PIDOVE, 5, false, false, false, "Tiny Pigeon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2.1, AbilityId.BIG_PECKS, AbilityId.SUPER_LUCK, AbilityId.RIVALRY, 264, 50, 55, 50, 36, 30, 43, 255, 50, 53, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.TRANQUILL, 5, false, false, false, "Wild Pigeon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 15, AbilityId.BIG_PECKS, AbilityId.SUPER_LUCK, AbilityId.RIVALRY, 358, 62, 77, 62, 50, 42, 65, 120, 50, 125, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.UNFEZANT, 5, false, false, false, "Proud Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 29, AbilityId.BIG_PECKS, AbilityId.SUPER_LUCK, AbilityId.RIVALRY, 488, 80, 115, 80, 65, 55, 93, 45, 50, 244, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.BLITZLE, 5, false, false, false, "Electrified Pokémon", PokemonType.ELECTRIC, null, 0.8, 29.8, AbilityId.LIGHTNING_ROD, AbilityId.MOTOR_DRIVE, AbilityId.SAP_SIPPER, 295, 45, 60, 32, 50, 32, 76, 190, 70, 59, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ZEBSTRIKA, 5, false, false, false, "Thunderbolt Pokémon", PokemonType.ELECTRIC, null, 1.6, 79.5, AbilityId.LIGHTNING_ROD, AbilityId.MOTOR_DRIVE, AbilityId.SAP_SIPPER, 497, 75, 100, 63, 80, 63, 116, 75, 70, 174, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ROGGENROLA, 5, false, false, false, "Mantle Pokémon", PokemonType.ROCK, null, 0.4, 18, AbilityId.STURDY, AbilityId.WEAK_ARMOR, AbilityId.SAND_FORCE, 280, 55, 75, 85, 25, 25, 15, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.BOLDORE, 5, false, false, false, "Ore Pokémon", PokemonType.ROCK, null, 0.9, 102, AbilityId.STURDY, AbilityId.WEAK_ARMOR, AbilityId.SAND_FORCE, 390, 70, 105, 105, 50, 40, 20, 120, 50, 137, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GIGALITH, 5, false, false, false, "Compressed Pokémon", PokemonType.ROCK, null, 1.7, 260, AbilityId.STURDY, AbilityId.SAND_STREAM, AbilityId.SAND_FORCE, 515, 85, 135, 130, 60, 80, 25, 45, 50, 258, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.WOOBAT, 5, false, false, false, "Bat Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.4, 2.1, AbilityId.UNAWARE, AbilityId.KLUTZ, AbilityId.SIMPLE, 323, 65, 45, 43, 55, 43, 72, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SWOOBAT, 5, false, false, false, "Courting Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.9, 10.5, AbilityId.UNAWARE, AbilityId.KLUTZ, AbilityId.SIMPLE, 425, 67, 57, 55, 77, 55, 114, 45, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DRILBUR, 5, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.3, 8.5, AbilityId.SAND_RUSH, AbilityId.SAND_FORCE, AbilityId.MOLD_BREAKER, 328, 60, 85, 40, 30, 45, 68, 120, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.EXCADRILL, 5, false, false, false, "Subterrene Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 40.4, AbilityId.SAND_RUSH, AbilityId.SAND_FORCE, AbilityId.MOLD_BREAKER, 508, 110, 135, 60, 50, 65, 88, 60, 50, 178, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.AUDINO, 5, false, false, false, "Hearing Pokémon", PokemonType.NORMAL, null, 1.1, 31, AbilityId.HEALER, AbilityId.REGENERATOR, AbilityId.KLUTZ, 445, 103, 60, 86, 60, 86, 50, 255, 50, 390, GrowthRate.FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 1.1, 31, AbilityId.HEALER, AbilityId.REGENERATOR, AbilityId.KLUTZ, 445, 103, 60, 86, 60, 86, 50, 255, 50, 390, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FAIRY, 1.5, 32, AbilityId.REGENERATOR, AbilityId.REGENERATOR, AbilityId.REGENERATOR, 545, 103, 60, 126, 80, 126, 50, 255, 50, 390), //Custom Ability, base form Hidden Ability + ), + new PokemonSpecies(SpeciesId.TIMBURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 0.6, 12.5, AbilityId.GUTS, AbilityId.SHEER_FORCE, AbilityId.IRON_FIST, 305, 75, 80, 55, 25, 35, 35, 180, 70, 61, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(SpeciesId.GURDURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 1.2, 40, AbilityId.GUTS, AbilityId.SHEER_FORCE, AbilityId.IRON_FIST, 405, 85, 105, 85, 40, 50, 40, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(SpeciesId.CONKELDURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 1.4, 87, AbilityId.GUTS, AbilityId.SHEER_FORCE, AbilityId.IRON_FIST, 505, 105, 140, 95, 55, 65, 45, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(SpeciesId.TYMPOLE, 5, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 0.5, 4.5, AbilityId.SWIFT_SWIM, AbilityId.HYDRATION, AbilityId.WATER_ABSORB, 294, 50, 50, 40, 50, 40, 64, 255, 50, 59, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.PALPITOAD, 5, false, false, false, "Vibration Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.8, 17, AbilityId.SWIFT_SWIM, AbilityId.HYDRATION, AbilityId.WATER_ABSORB, 384, 75, 65, 55, 65, 55, 69, 120, 50, 134, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SEISMITOAD, 5, false, false, false, "Vibration Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.5, 62, AbilityId.SWIFT_SWIM, AbilityId.POISON_TOUCH, AbilityId.WATER_ABSORB, 509, 105, 95, 75, 85, 75, 74, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.THROH, 5, false, false, false, "Judo Pokémon", PokemonType.FIGHTING, null, 1.3, 55.5, AbilityId.GUTS, AbilityId.INNER_FOCUS, AbilityId.MOLD_BREAKER, 465, 120, 100, 85, 30, 85, 45, 45, 50, 163, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.SAWK, 5, false, false, false, "Karate Pokémon", PokemonType.FIGHTING, null, 1.4, 51, AbilityId.STURDY, AbilityId.INNER_FOCUS, AbilityId.MOLD_BREAKER, 465, 75, 125, 75, 30, 75, 85, 45, 50, 163, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.SEWADDLE, 5, false, false, false, "Sewing Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.3, 2.5, AbilityId.SWARM, AbilityId.CHLOROPHYLL, AbilityId.OVERCOAT, 310, 45, 53, 70, 40, 60, 42, 255, 70, 62, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SWADLOON, 5, false, false, false, "Leaf-Wrapped Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.5, 7.3, AbilityId.LEAF_GUARD, AbilityId.CHLOROPHYLL, AbilityId.OVERCOAT, 380, 55, 63, 90, 50, 80, 42, 120, 70, 133, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.LEAVANNY, 5, false, false, false, "Nurturing Pokémon", PokemonType.BUG, PokemonType.GRASS, 1.2, 20.5, AbilityId.SWARM, AbilityId.CHLOROPHYLL, AbilityId.OVERCOAT, 500, 75, 103, 80, 70, 80, 92, 45, 70, 250, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.VENIPEDE, 5, false, false, false, "Centipede Pokémon", PokemonType.BUG, PokemonType.POISON, 0.4, 5.3, AbilityId.POISON_POINT, AbilityId.SWARM, AbilityId.SPEED_BOOST, 260, 30, 45, 59, 30, 39, 57, 255, 50, 52, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.WHIRLIPEDE, 5, false, false, false, "Curlipede Pokémon", PokemonType.BUG, PokemonType.POISON, 1.2, 58.5, AbilityId.POISON_POINT, AbilityId.SWARM, AbilityId.SPEED_BOOST, 360, 40, 55, 99, 40, 79, 47, 120, 50, 126, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SCOLIPEDE, 5, false, false, false, "Megapede Pokémon", PokemonType.BUG, PokemonType.POISON, 2.5, 200.5, AbilityId.POISON_POINT, AbilityId.SWARM, AbilityId.SPEED_BOOST, 485, 60, 100, 89, 55, 69, 112, 45, 50, 243, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.COTTONEE, 5, false, false, false, "Cotton Puff Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.3, 0.6, AbilityId.PRANKSTER, AbilityId.INFILTRATOR, AbilityId.CHLOROPHYLL, 280, 40, 27, 60, 37, 50, 66, 190, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WHIMSICOTT, 5, false, false, false, "Windveiled Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.7, 6.6, AbilityId.PRANKSTER, AbilityId.INFILTRATOR, AbilityId.CHLOROPHYLL, 480, 60, 67, 85, 77, 75, 116, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PETILIL, 5, false, false, false, "Bulb Pokémon", PokemonType.GRASS, null, 0.5, 6.6, AbilityId.CHLOROPHYLL, AbilityId.OWN_TEMPO, AbilityId.LEAF_GUARD, 280, 45, 35, 50, 70, 50, 30, 190, 50, 56, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.LILLIGANT, 5, false, false, false, "Flowering Pokémon", PokemonType.GRASS, null, 1.1, 16.3, AbilityId.CHLOROPHYLL, AbilityId.OWN_TEMPO, AbilityId.LEAF_GUARD, 480, 70, 60, 75, 110, 75, 90, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.BASCULIN, 5, false, false, false, "Hostile Pokémon", PokemonType.WATER, null, 1, 18, AbilityId.RECKLESS, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Red-Striped Form", "red-striped", PokemonType.WATER, null, 1, 18, AbilityId.RECKLESS, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), + new PokemonForm("Blue-Striped Form", "blue-striped", PokemonType.WATER, null, 1, 18, AbilityId.ROCK_HEAD, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), + new PokemonForm("White-Striped Form", "white-striped", PokemonType.WATER, null, 1, 18, AbilityId.RATTLED, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), + ), + new PokemonSpecies(SpeciesId.SANDILE, 5, false, false, false, "Desert Croc Pokémon", PokemonType.GROUND, PokemonType.DARK, 0.7, 15.2, AbilityId.INTIMIDATE, AbilityId.MOXIE, AbilityId.ANGER_POINT, 292, 50, 72, 35, 35, 35, 65, 180, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.KROKOROK, 5, false, false, false, "Desert Croc Pokémon", PokemonType.GROUND, PokemonType.DARK, 1, 33.4, AbilityId.INTIMIDATE, AbilityId.MOXIE, AbilityId.ANGER_POINT, 351, 60, 82, 45, 45, 45, 74, 90, 50, 123, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.KROOKODILE, 5, false, false, false, "Intimidation Pokémon", PokemonType.GROUND, PokemonType.DARK, 1.5, 96.3, AbilityId.INTIMIDATE, AbilityId.MOXIE, AbilityId.ANGER_POINT, 519, 95, 117, 80, 65, 70, 92, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.DARUMAKA, 5, false, false, false, "Zen Charm Pokémon", PokemonType.FIRE, null, 0.6, 37.5, AbilityId.HUSTLE, AbilityId.NONE, AbilityId.INNER_FOCUS, 315, 70, 90, 45, 15, 45, 50, 120, 50, 63, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.DARMANITAN, 5, false, false, false, "Blazing Pokémon", PokemonType.FIRE, null, 1.3, 92.9, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Standard Mode", "", PokemonType.FIRE, null, 1.3, 92.9, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, false, null, true), + new PokemonForm("Zen Mode", "zen", PokemonType.FIRE, PokemonType.PSYCHIC, 1.3, 92.9, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.ZEN_MODE, 540, 105, 30, 105, 140, 105, 55, 60, 50, 189), + ), + new PokemonSpecies(SpeciesId.MARACTUS, 5, false, false, false, "Cactus Pokémon", PokemonType.GRASS, null, 1, 28, AbilityId.WATER_ABSORB, AbilityId.CHLOROPHYLL, AbilityId.STORM_DRAIN, 461, 75, 86, 67, 106, 67, 60, 255, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DWEBBLE, 5, false, false, false, "Rock Inn Pokémon", PokemonType.BUG, PokemonType.ROCK, 0.3, 14.5, AbilityId.STURDY, AbilityId.SHELL_ARMOR, AbilityId.WEAK_ARMOR, 325, 50, 65, 85, 35, 35, 55, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CRUSTLE, 5, false, false, false, "Stone Home Pokémon", PokemonType.BUG, PokemonType.ROCK, 1.4, 200, AbilityId.STURDY, AbilityId.SHELL_ARMOR, AbilityId.WEAK_ARMOR, 485, 70, 105, 125, 65, 75, 45, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SCRAGGY, 5, false, false, false, "Shedding Pokémon", PokemonType.DARK, PokemonType.FIGHTING, 0.6, 11.8, AbilityId.SHED_SKIN, AbilityId.MOXIE, AbilityId.INTIMIDATE, 348, 50, 75, 70, 35, 70, 48, 180, 35, 70, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SCRAFTY, 5, false, false, false, "Hoodlum Pokémon", PokemonType.DARK, PokemonType.FIGHTING, 1.1, 30, AbilityId.SHED_SKIN, AbilityId.MOXIE, AbilityId.INTIMIDATE, 488, 65, 90, 115, 45, 115, 58, 90, 50, 171, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SIGILYPH, 5, false, false, false, "Avianoid Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.4, 14, AbilityId.WONDER_SKIN, AbilityId.MAGIC_GUARD, AbilityId.TINTED_LENS, 490, 72, 58, 80, 103, 80, 97, 45, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.YAMASK, 5, false, false, false, "Spirit Pokémon", PokemonType.GHOST, null, 0.5, 1.5, AbilityId.MUMMY, AbilityId.NONE, AbilityId.NONE, 303, 38, 30, 85, 55, 65, 30, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.COFAGRIGUS, 5, false, false, false, "Coffin Pokémon", PokemonType.GHOST, null, 1.7, 76.5, AbilityId.MUMMY, AbilityId.NONE, AbilityId.NONE, 483, 58, 50, 145, 95, 105, 30, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TIRTOUGA, 5, false, false, false, "Prototurtle Pokémon", PokemonType.WATER, PokemonType.ROCK, 0.7, 16.5, AbilityId.SOLID_ROCK, AbilityId.STURDY, AbilityId.SWIFT_SWIM, 355, 54, 78, 103, 53, 45, 22, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.CARRACOSTA, 5, false, false, false, "Prototurtle Pokémon", PokemonType.WATER, PokemonType.ROCK, 1.2, 81, AbilityId.SOLID_ROCK, AbilityId.STURDY, AbilityId.SWIFT_SWIM, 495, 74, 108, 133, 83, 65, 32, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.ARCHEN, 5, false, false, false, "First Bird Pokémon", PokemonType.ROCK, PokemonType.FLYING, 0.5, 9.5, AbilityId.DEFEATIST, AbilityId.NONE, AbilityId.WIMP_OUT, 401, 55, 112, 45, 74, 45, 70, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden + new PokemonSpecies(SpeciesId.ARCHEOPS, 5, false, false, false, "First Bird Pokémon", PokemonType.ROCK, PokemonType.FLYING, 1.4, 32, AbilityId.DEFEATIST, AbilityId.NONE, AbilityId.EMERGENCY_EXIT, 567, 75, 140, 65, 112, 65, 110, 45, 50, 177, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden + new PokemonSpecies(SpeciesId.TRUBBISH, 5, false, false, false, "Trash Bag Pokémon", PokemonType.POISON, null, 0.6, 31, AbilityId.STENCH, AbilityId.STICKY_HOLD, AbilityId.AFTERMATH, 329, 50, 50, 62, 40, 62, 65, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GARBODOR, 5, false, false, false, "Trash Heap Pokémon", PokemonType.POISON, null, 1.9, 107.3, AbilityId.STENCH, AbilityId.WEAK_ARMOR, AbilityId.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.POISON, null, 1.9, 107.3, AbilityId.STENCH, AbilityId.WEAK_ARMOR, AbilityId.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.POISON, PokemonType.STEEL, 21, 999.9, AbilityId.TOXIC_DEBRIS, AbilityId.TOXIC_DEBRIS, AbilityId.TOXIC_DEBRIS, 574, 115, 121, 102, 81, 102, 53, 60, 50, 166), + ), + new PokemonSpecies(SpeciesId.ZORUA, 5, false, false, false, "Tricky Fox Pokémon", PokemonType.DARK, null, 0.7, 12.5, AbilityId.ILLUSION, AbilityId.NONE, AbilityId.NONE, 330, 40, 65, 40, 80, 40, 65, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.ZOROARK, 5, false, false, false, "Illusion Fox Pokémon", PokemonType.DARK, null, 1.6, 81.1, AbilityId.ILLUSION, AbilityId.NONE, AbilityId.NONE, 510, 60, 105, 60, 120, 60, 105, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.MINCCINO, 5, false, false, false, "Chinchilla Pokémon", PokemonType.NORMAL, null, 0.4, 5.8, AbilityId.CUTE_CHARM, AbilityId.TECHNICIAN, AbilityId.SKILL_LINK, 300, 55, 50, 40, 40, 40, 75, 255, 50, 60, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.CINCCINO, 5, false, false, false, "Scarf Pokémon", PokemonType.NORMAL, null, 0.5, 7.5, AbilityId.CUTE_CHARM, AbilityId.TECHNICIAN, AbilityId.SKILL_LINK, 470, 75, 95, 60, 65, 60, 115, 60, 50, 165, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.GOTHITA, 5, false, false, false, "Fixation Pokémon", PokemonType.PSYCHIC, null, 0.4, 5.8, AbilityId.FRISK, AbilityId.COMPETITIVE, AbilityId.SHADOW_TAG, 290, 45, 30, 50, 55, 65, 45, 200, 50, 58, GrowthRate.MEDIUM_SLOW, 25, false), + new PokemonSpecies(SpeciesId.GOTHORITA, 5, false, false, false, "Manipulate Pokémon", PokemonType.PSYCHIC, null, 0.7, 18, AbilityId.FRISK, AbilityId.COMPETITIVE, AbilityId.SHADOW_TAG, 390, 60, 45, 70, 75, 85, 55, 100, 50, 137, GrowthRate.MEDIUM_SLOW, 25, false), + new PokemonSpecies(SpeciesId.GOTHITELLE, 5, false, false, false, "Astral Body Pokémon", PokemonType.PSYCHIC, null, 1.5, 44, AbilityId.FRISK, AbilityId.COMPETITIVE, AbilityId.SHADOW_TAG, 490, 70, 55, 95, 95, 110, 65, 50, 50, 245, GrowthRate.MEDIUM_SLOW, 25, false), + new PokemonSpecies(SpeciesId.SOLOSIS, 5, false, false, false, "Cell Pokémon", PokemonType.PSYCHIC, null, 0.3, 1, AbilityId.OVERCOAT, AbilityId.MAGIC_GUARD, AbilityId.REGENERATOR, 290, 45, 30, 40, 105, 50, 20, 200, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.DUOSION, 5, false, false, false, "Mitosis Pokémon", PokemonType.PSYCHIC, null, 0.6, 8, AbilityId.OVERCOAT, AbilityId.MAGIC_GUARD, AbilityId.REGENERATOR, 370, 65, 40, 50, 125, 60, 30, 100, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.REUNICLUS, 5, false, false, false, "Multiplying Pokémon", PokemonType.PSYCHIC, null, 1, 20.1, AbilityId.OVERCOAT, AbilityId.MAGIC_GUARD, AbilityId.REGENERATOR, 490, 110, 65, 75, 125, 85, 30, 50, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.DUCKLETT, 5, false, false, false, "Water Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 0.5, 5.5, AbilityId.KEEN_EYE, AbilityId.BIG_PECKS, AbilityId.HYDRATION, 305, 62, 44, 50, 44, 50, 55, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SWANNA, 5, false, false, false, "White Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 1.3, 24.2, AbilityId.KEEN_EYE, AbilityId.BIG_PECKS, AbilityId.HYDRATION, 473, 75, 87, 63, 87, 63, 98, 45, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.VANILLITE, 5, false, false, false, "Fresh Snow Pokémon", PokemonType.ICE, null, 0.4, 5.7, AbilityId.ICE_BODY, AbilityId.SNOW_CLOAK, AbilityId.WEAK_ARMOR, 305, 36, 50, 50, 65, 60, 44, 255, 50, 61, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.VANILLISH, 5, false, false, false, "Icy Snow Pokémon", PokemonType.ICE, null, 1.1, 41, AbilityId.ICE_BODY, AbilityId.SNOW_CLOAK, AbilityId.WEAK_ARMOR, 395, 51, 65, 65, 80, 75, 59, 120, 50, 138, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.VANILLUXE, 5, false, false, false, "Snowstorm Pokémon", PokemonType.ICE, null, 1.3, 57.5, AbilityId.ICE_BODY, AbilityId.SNOW_WARNING, AbilityId.WEAK_ARMOR, 535, 71, 95, 85, 110, 95, 79, 45, 50, 268, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.DEERLING, 5, false, false, false, "Season Pokémon", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Spring Form", "spring", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), + new PokemonForm("Summer Form", "summer", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), + new PokemonForm("Autumn Form", "autumn", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), + new PokemonForm("Winter Form", "winter", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), + ), + new PokemonSpecies(SpeciesId.SAWSBUCK, 5, false, false, false, "Season Pokémon", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Spring Form", "spring", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), + new PokemonForm("Summer Form", "summer", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), + new PokemonForm("Autumn Form", "autumn", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), + new PokemonForm("Winter Form", "winter", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, AbilityId.CHLOROPHYLL, AbilityId.SAP_SIPPER, AbilityId.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), + ), + new PokemonSpecies(SpeciesId.EMOLGA, 5, false, false, false, "Sky Squirrel Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 0.4, 5, AbilityId.STATIC, AbilityId.NONE, AbilityId.MOTOR_DRIVE, 428, 55, 75, 60, 75, 60, 103, 200, 50, 150, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.KARRABLAST, 5, false, false, false, "Clamping Pokémon", PokemonType.BUG, null, 0.5, 5.9, AbilityId.SWARM, AbilityId.SHED_SKIN, AbilityId.NO_GUARD, 315, 50, 75, 45, 40, 45, 60, 200, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ESCAVALIER, 5, false, false, false, "Cavalry Pokémon", PokemonType.BUG, PokemonType.STEEL, 1, 33, AbilityId.SWARM, AbilityId.SHELL_ARMOR, AbilityId.OVERCOAT, 495, 70, 135, 105, 60, 105, 20, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FOONGUS, 5, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.2, 1, AbilityId.EFFECT_SPORE, AbilityId.NONE, AbilityId.REGENERATOR, 294, 69, 55, 45, 55, 55, 15, 190, 50, 59, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.AMOONGUSS, 5, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.6, 10.5, AbilityId.EFFECT_SPORE, AbilityId.NONE, AbilityId.REGENERATOR, 464, 114, 85, 70, 85, 80, 30, 75, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FRILLISH, 5, false, false, false, "Floating Pokémon", PokemonType.WATER, PokemonType.GHOST, 1.2, 33, AbilityId.WATER_ABSORB, AbilityId.CURSED_BODY, AbilityId.DAMP, 335, 55, 40, 50, 65, 85, 40, 190, 50, 67, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.JELLICENT, 5, false, false, false, "Floating Pokémon", PokemonType.WATER, PokemonType.GHOST, 2.2, 135, AbilityId.WATER_ABSORB, AbilityId.CURSED_BODY, AbilityId.DAMP, 480, 100, 60, 70, 85, 105, 60, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(SpeciesId.ALOMOMOLA, 5, false, false, false, "Caring Pokémon", PokemonType.WATER, null, 1.2, 31.6, AbilityId.HEALER, AbilityId.HYDRATION, AbilityId.REGENERATOR, 470, 165, 75, 80, 40, 45, 65, 75, 70, 165, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.JOLTIK, 5, false, false, false, "Attaching Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.1, 0.6, AbilityId.COMPOUND_EYES, AbilityId.UNNERVE, AbilityId.SWARM, 319, 50, 47, 50, 57, 50, 65, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALVANTULA, 5, false, false, false, "EleSpider Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.8, 14.3, AbilityId.COMPOUND_EYES, AbilityId.UNNERVE, AbilityId.SWARM, 472, 70, 77, 60, 97, 60, 108, 75, 50, 165, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FERROSEED, 5, false, false, false, "Thorn Seed Pokémon", PokemonType.GRASS, PokemonType.STEEL, 0.6, 18.8, AbilityId.IRON_BARBS, AbilityId.NONE, AbilityId.ANTICIPATION, 305, 44, 50, 91, 24, 86, 10, 255, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FERROTHORN, 5, false, false, false, "Thorn Pod Pokémon", PokemonType.GRASS, PokemonType.STEEL, 1, 110, AbilityId.IRON_BARBS, AbilityId.NONE, AbilityId.ANTICIPATION, 489, 74, 94, 131, 54, 116, 20, 90, 50, 171, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.KLINK, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.3, 21, AbilityId.PLUS, AbilityId.MINUS, AbilityId.CLEAR_BODY, 300, 40, 55, 70, 45, 60, 30, 130, 50, 60, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(SpeciesId.KLANG, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.6, 51, AbilityId.PLUS, AbilityId.MINUS, AbilityId.CLEAR_BODY, 440, 60, 80, 95, 70, 85, 50, 60, 50, 154, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(SpeciesId.KLINKLANG, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.6, 81, AbilityId.PLUS, AbilityId.MINUS, AbilityId.CLEAR_BODY, 520, 60, 100, 115, 70, 85, 90, 30, 50, 260, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(SpeciesId.TYNAMO, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 0.2, 0.3, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 275, 35, 55, 40, 45, 40, 60, 190, 70, 55, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.EELEKTRIK, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 1.2, 22, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 405, 65, 85, 70, 75, 70, 40, 60, 70, 142, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.EELEKTROSS, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 2.1, 80.5, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 515, 85, 115, 80, 105, 80, 50, 30, 70, 258, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.ELGYEM, 5, false, false, false, "Cerebral Pokémon", PokemonType.PSYCHIC, null, 0.5, 9, AbilityId.TELEPATHY, AbilityId.SYNCHRONIZE, AbilityId.ANALYTIC, 335, 55, 55, 55, 85, 55, 30, 255, 50, 67, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BEHEEYEM, 5, false, false, false, "Cerebral Pokémon", PokemonType.PSYCHIC, null, 1, 34.5, AbilityId.TELEPATHY, AbilityId.SYNCHRONIZE, AbilityId.ANALYTIC, 485, 75, 75, 75, 125, 95, 40, 90, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LITWICK, 5, false, false, false, "Candle Pokémon", PokemonType.GHOST, PokemonType.FIRE, 0.3, 3.1, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, AbilityId.INFILTRATOR, 275, 50, 30, 55, 65, 55, 20, 190, 50, 55, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.LAMPENT, 5, false, false, false, "Lamp Pokémon", PokemonType.GHOST, PokemonType.FIRE, 0.6, 13, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, AbilityId.INFILTRATOR, 370, 60, 40, 60, 95, 60, 55, 90, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CHANDELURE, 5, false, false, false, "Luring Pokémon", PokemonType.GHOST, PokemonType.FIRE, 1, 34.3, AbilityId.FLASH_FIRE, AbilityId.FLAME_BODY, AbilityId.INFILTRATOR, 520, 60, 55, 90, 145, 90, 80, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.AXEW, 5, false, false, false, "Tusk Pokémon", PokemonType.DRAGON, null, 0.6, 18, AbilityId.RIVALRY, AbilityId.MOLD_BREAKER, AbilityId.UNNERVE, 320, 46, 87, 60, 30, 40, 57, 75, 35, 64, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.FRAXURE, 5, false, false, false, "Axe Jaw Pokémon", PokemonType.DRAGON, null, 1, 36, AbilityId.RIVALRY, AbilityId.MOLD_BREAKER, AbilityId.UNNERVE, 410, 66, 117, 70, 40, 50, 67, 60, 35, 144, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HAXORUS, 5, false, false, false, "Axe Jaw Pokémon", PokemonType.DRAGON, null, 1.8, 105.5, AbilityId.RIVALRY, AbilityId.MOLD_BREAKER, AbilityId.UNNERVE, 540, 76, 147, 90, 60, 70, 97, 45, 35, 270, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.CUBCHOO, 5, false, false, false, "Chill Pokémon", PokemonType.ICE, null, 0.5, 8.5, AbilityId.SNOW_CLOAK, AbilityId.SLUSH_RUSH, AbilityId.RATTLED, 305, 55, 70, 40, 60, 40, 40, 120, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BEARTIC, 5, false, false, false, "Freezing Pokémon", PokemonType.ICE, null, 2.6, 260, AbilityId.SNOW_CLOAK, AbilityId.SLUSH_RUSH, AbilityId.SWIFT_SWIM, 505, 95, 130, 80, 70, 80, 50, 60, 50, 177, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CRYOGONAL, 5, false, false, false, "Crystallizing Pokémon", PokemonType.ICE, null, 1.1, 148, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 515, 80, 50, 50, 95, 135, 105, 25, 50, 180, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.SHELMET, 5, false, false, false, "Snail Pokémon", PokemonType.BUG, null, 0.4, 7.7, AbilityId.HYDRATION, AbilityId.SHELL_ARMOR, AbilityId.OVERCOAT, 305, 50, 40, 85, 40, 65, 25, 200, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ACCELGOR, 5, false, false, false, "Shell Out Pokémon", PokemonType.BUG, null, 0.8, 25.3, AbilityId.HYDRATION, AbilityId.STICKY_HOLD, AbilityId.UNBURDEN, 495, 80, 70, 40, 100, 60, 145, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.STUNFISK, 5, false, false, false, "Trap Pokémon", PokemonType.GROUND, PokemonType.ELECTRIC, 0.7, 11, AbilityId.STATIC, AbilityId.LIMBER, AbilityId.SAND_VEIL, 471, 109, 66, 84, 81, 99, 32, 75, 70, 165, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MIENFOO, 5, false, false, false, "Martial Arts Pokémon", PokemonType.FIGHTING, null, 0.9, 20, AbilityId.INNER_FOCUS, AbilityId.REGENERATOR, AbilityId.RECKLESS, 350, 45, 85, 50, 55, 50, 65, 180, 50, 70, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.MIENSHAO, 5, false, false, false, "Martial Arts Pokémon", PokemonType.FIGHTING, null, 1.4, 35.5, AbilityId.INNER_FOCUS, AbilityId.REGENERATOR, AbilityId.RECKLESS, 510, 65, 125, 60, 95, 60, 105, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.DRUDDIGON, 5, false, false, false, "Cave Pokémon", PokemonType.DRAGON, null, 1.6, 139, AbilityId.ROUGH_SKIN, AbilityId.SHEER_FORCE, AbilityId.MOLD_BREAKER, 485, 77, 120, 90, 60, 90, 48, 45, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GOLETT, 5, false, false, false, "Automaton Pokémon", PokemonType.GROUND, PokemonType.GHOST, 1, 92, AbilityId.IRON_FIST, AbilityId.KLUTZ, AbilityId.NO_GUARD, 303, 59, 74, 50, 35, 50, 35, 190, 50, 61, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.GOLURK, 5, false, false, false, "Automaton Pokémon", PokemonType.GROUND, PokemonType.GHOST, 2.8, 330, AbilityId.IRON_FIST, AbilityId.KLUTZ, AbilityId.NO_GUARD, 483, 89, 124, 80, 55, 80, 55, 90, 50, 169, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.PAWNIARD, 5, false, false, false, "Sharp Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 0.5, 10.2, AbilityId.DEFIANT, AbilityId.INNER_FOCUS, AbilityId.PRESSURE, 340, 45, 85, 70, 40, 40, 60, 120, 35, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BISHARP, 5, false, false, false, "Sword Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 1.6, 70, AbilityId.DEFIANT, AbilityId.INNER_FOCUS, AbilityId.PRESSURE, 490, 65, 125, 100, 60, 70, 70, 45, 35, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BOUFFALANT, 5, false, false, false, "Bash Buffalo Pokémon", PokemonType.NORMAL, null, 1.6, 94.6, AbilityId.RECKLESS, AbilityId.SAP_SIPPER, AbilityId.SOUNDPROOF, 490, 95, 110, 95, 40, 95, 55, 45, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RUFFLET, 5, false, false, false, "Eaglet Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.5, 10.5, AbilityId.KEEN_EYE, AbilityId.SHEER_FORCE, AbilityId.HUSTLE, 350, 70, 83, 50, 37, 50, 60, 190, 50, 70, GrowthRate.SLOW, 100, false), + new PokemonSpecies(SpeciesId.BRAVIARY, 5, false, false, false, "Valiant Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 41, AbilityId.KEEN_EYE, AbilityId.SHEER_FORCE, AbilityId.DEFIANT, 510, 100, 123, 75, 57, 75, 80, 60, 50, 179, GrowthRate.SLOW, 100, false), + new PokemonSpecies(SpeciesId.VULLABY, 5, false, false, false, "Diapered Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.5, 9, AbilityId.BIG_PECKS, AbilityId.OVERCOAT, AbilityId.WEAK_ARMOR, 370, 70, 55, 75, 45, 65, 60, 190, 35, 74, GrowthRate.SLOW, 0, false), + new PokemonSpecies(SpeciesId.MANDIBUZZ, 5, false, false, false, "Bone Vulture Pokémon", PokemonType.DARK, PokemonType.FLYING, 1.2, 39.5, AbilityId.BIG_PECKS, AbilityId.OVERCOAT, AbilityId.WEAK_ARMOR, 510, 110, 65, 105, 55, 95, 80, 60, 35, 179, GrowthRate.SLOW, 0, false), + new PokemonSpecies(SpeciesId.HEATMOR, 5, false, false, false, "Anteater Pokémon", PokemonType.FIRE, null, 1.4, 58, AbilityId.GLUTTONY, AbilityId.FLASH_FIRE, AbilityId.WHITE_SMOKE, 484, 85, 97, 66, 105, 66, 65, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DURANT, 5, false, false, false, "Iron Ant Pokémon", PokemonType.BUG, PokemonType.STEEL, 0.3, 33, AbilityId.SWARM, AbilityId.HUSTLE, AbilityId.TRUANT, 484, 58, 109, 112, 48, 48, 109, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DEINO, 5, false, false, false, "Irate Pokémon", PokemonType.DARK, PokemonType.DRAGON, 0.8, 17.3, AbilityId.HUSTLE, AbilityId.NONE, AbilityId.NONE, 300, 52, 65, 50, 45, 50, 38, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.ZWEILOUS, 5, false, false, false, "Hostile Pokémon", PokemonType.DARK, PokemonType.DRAGON, 1.4, 50, AbilityId.HUSTLE, AbilityId.NONE, AbilityId.NONE, 420, 72, 85, 70, 65, 70, 58, 45, 35, 147, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HYDREIGON, 5, false, false, false, "Brutal Pokémon", PokemonType.DARK, PokemonType.DRAGON, 1.8, 160, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 600, 92, 105, 90, 125, 90, 98, 45, 35, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.LARVESTA, 5, false, false, false, "Torch Pokémon", PokemonType.BUG, PokemonType.FIRE, 1.1, 28.8, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.SWARM, 360, 55, 85, 55, 50, 55, 60, 45, 50, 72, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.VOLCARONA, 5, false, false, false, "Sun Pokémon", PokemonType.BUG, PokemonType.FIRE, 1.6, 46, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.SWARM, 550, 85, 60, 65, 135, 105, 100, 15, 50, 275, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.COBALION, 5, true, false, false, "Iron Will Pokémon", PokemonType.STEEL, PokemonType.FIGHTING, 2.1, 250, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 90, 129, 90, 72, 108, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.TERRAKION, 5, true, false, false, "Cavern Pokémon", PokemonType.ROCK, PokemonType.FIGHTING, 1.9, 260, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 129, 90, 72, 90, 108, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.VIRIZION, 5, true, false, false, "Grassland Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 2, 200, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 90, 72, 90, 129, 108, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.TORNADUS, 5, true, false, false, "Cyclone Pokémon", PokemonType.FLYING, null, 1.5, 63, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Incarnate Forme", "incarnate", PokemonType.FLYING, null, 1.5, 63, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, false, null, true), + new PokemonForm("Therian Forme", "therian", PokemonType.FLYING, null, 1.4, 63, AbilityId.REGENERATOR, AbilityId.NONE, AbilityId.REGENERATOR, 580, 79, 100, 80, 110, 90, 121, 3, 90, 290), + ), + new PokemonSpecies(SpeciesId.THUNDURUS, 5, true, false, false, "Bolt Strike Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.5, 61, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Incarnate Forme", "incarnate", PokemonType.ELECTRIC, PokemonType.FLYING, 1.5, 61, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, false, null, true), + new PokemonForm("Therian Forme", "therian", PokemonType.ELECTRIC, PokemonType.FLYING, 3, 61, AbilityId.VOLT_ABSORB, AbilityId.NONE, AbilityId.VOLT_ABSORB, 580, 79, 105, 70, 145, 80, 101, 3, 90, 290), + ), + new PokemonSpecies(SpeciesId.RESHIRAM, 5, false, true, false, "Vast White Pokémon", PokemonType.DRAGON, PokemonType.FIRE, 3.2, 330, AbilityId.TURBOBLAZE, AbilityId.NONE, AbilityId.NONE, 680, 100, 120, 100, 150, 120, 90, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ZEKROM, 5, false, true, false, "Deep Black Pokémon", PokemonType.DRAGON, PokemonType.ELECTRIC, 2.9, 345, AbilityId.TERAVOLT, AbilityId.NONE, AbilityId.NONE, 680, 100, 150, 120, 120, 100, 90, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.LANDORUS, 5, true, false, false, "Abundance Pokémon", PokemonType.GROUND, PokemonType.FLYING, 1.5, 68, AbilityId.SAND_FORCE, AbilityId.NONE, AbilityId.SHEER_FORCE, 600, 89, 125, 90, 115, 80, 101, 3, 90, 300, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Incarnate Forme", "incarnate", PokemonType.GROUND, PokemonType.FLYING, 1.5, 68, AbilityId.SAND_FORCE, AbilityId.NONE, AbilityId.SHEER_FORCE, 600, 89, 125, 90, 115, 80, 101, 3, 90, 300, false, null, true), + new PokemonForm("Therian Forme", "therian", PokemonType.GROUND, PokemonType.FLYING, 1.3, 68, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.INTIMIDATE, 600, 89, 145, 90, 105, 80, 91, 3, 90, 300), + ), + new PokemonSpecies(SpeciesId.KYUREM, 5, false, true, false, "Boundary Pokémon", PokemonType.DRAGON, PokemonType.ICE, 3, 325, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.ICE, 3, 325, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330, false, null, true), + new PokemonForm("Black", "black", PokemonType.DRAGON, PokemonType.ICE, 3.3, 325, AbilityId.TERAVOLT, AbilityId.NONE, AbilityId.NONE, 700, 125, 170, 100, 120, 90, 95, 3, 0, 350), + new PokemonForm("White", "white", PokemonType.DRAGON, PokemonType.ICE, 3.6, 325, AbilityId.TURBOBLAZE, AbilityId.NONE, AbilityId.NONE, 700, 125, 120, 90, 170, 100, 95, 3, 0, 350), + ), + new PokemonSpecies(SpeciesId.KELDEO, 5, false, false, true, "Colt Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290, GrowthRate.SLOW, null, false, true, + new PokemonForm("Ordinary Form", "ordinary", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290, false, null, true), + new PokemonForm("Resolute", "resolute", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, AbilityId.JUSTIFIED, AbilityId.NONE, AbilityId.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290), + ), + new PokemonSpecies(SpeciesId.MELOETTA, 5, false, false, true, "Melody Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 0.6, 6.5, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Aria Forme", "aria", PokemonType.NORMAL, PokemonType.PSYCHIC, 0.6, 6.5, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 300, false, null, true), + new PokemonForm("Pirouette Forme", "pirouette", PokemonType.NORMAL, PokemonType.FIGHTING, 0.6, 6.5, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 128, 90, 77, 77, 128, 3, 100, 300, false, null, true), + ), + new PokemonSpecies(SpeciesId.GENESECT, 5, false, false, true, "Paleozoic Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300, false, null, true), + new PokemonForm("Shock Drive", "shock", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), + new PokemonForm("Burn Drive", "burn", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), + new PokemonForm("Chill Drive", "chill", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), + new PokemonForm("Douse Drive", "douse", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, AbilityId.DOWNLOAD, AbilityId.NONE, AbilityId.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), + ), + new PokemonSpecies(SpeciesId.CHESPIN, 6, false, false, false, "Spiny Nut Pokémon", PokemonType.GRASS, null, 0.4, 9, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.BULLETPROOF, 313, 56, 61, 65, 48, 45, 38, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.QUILLADIN, 6, false, false, false, "Spiny Armor Pokémon", PokemonType.GRASS, null, 0.7, 29, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.BULLETPROOF, 405, 61, 78, 95, 56, 58, 57, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.CHESNAUGHT, 6, false, false, false, "Spiny Armor Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.6, 90, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.BULLETPROOF, 530, 88, 107, 122, 74, 75, 64, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.FENNEKIN, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 0.4, 9.4, AbilityId.BLAZE, AbilityId.NONE, AbilityId.MAGICIAN, 307, 40, 45, 40, 62, 60, 60, 45, 70, 61, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.BRAIXEN, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 1, 14.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.MAGICIAN, 409, 59, 59, 58, 90, 70, 73, 45, 70, 143, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.DELPHOX, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, PokemonType.PSYCHIC, 1.5, 39, AbilityId.BLAZE, AbilityId.NONE, AbilityId.MAGICIAN, 534, 75, 69, 72, 114, 100, 104, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.FROAKIE, 6, false, false, false, "Bubble Frog Pokémon", PokemonType.WATER, null, 0.3, 7, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false, false, + new PokemonForm("Normal", "", PokemonType.WATER, null, 0.3, 7, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, null, true), + new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, null, 0.3, 7, AbilityId.TORRENT, AbilityId.NONE, AbilityId.TORRENT, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, "", true), + ), + new PokemonSpecies(SpeciesId.FROGADIER, 6, false, false, false, "Bubble Frog Pokémon", PokemonType.WATER, null, 0.6, 10.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false, false, + new PokemonForm("Normal", "", PokemonType.WATER, null, 0.6, 10.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, null, true), + new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, null, 0.6, 10.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.NONE, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, "", true), + ), + new PokemonSpecies(SpeciesId.GRENINJA, 6, false, false, false, "Ninja Pokémon", PokemonType.WATER, PokemonType.DARK, 1.5, 40, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, false, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DARK, 1.5, 40, AbilityId.TORRENT, AbilityId.NONE, AbilityId.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, false, null, true), + new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, PokemonType.DARK, 1.5, 40, AbilityId.BATTLE_BOND, AbilityId.NONE, AbilityId.BATTLE_BOND, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, false, "", true), + new PokemonForm("Ash", "ash", PokemonType.WATER, PokemonType.DARK, 1.5, 40, AbilityId.BATTLE_BOND, AbilityId.NONE, AbilityId.NONE, 640, 72, 145, 67, 153, 71, 132, 45, 70, 265), + ), + new PokemonSpecies(SpeciesId.BUNNELBY, 6, false, false, false, "Digging Pokémon", PokemonType.NORMAL, null, 0.4, 5, AbilityId.PICKUP, AbilityId.CHEEK_POUCH, AbilityId.HUGE_POWER, 237, 38, 36, 38, 32, 36, 57, 255, 50, 47, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DIGGERSBY, 6, false, false, false, "Digging Pokémon", PokemonType.NORMAL, PokemonType.GROUND, 1, 42.4, AbilityId.PICKUP, AbilityId.CHEEK_POUCH, AbilityId.HUGE_POWER, 423, 85, 56, 77, 50, 77, 78, 127, 50, 148, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FLETCHLING, 6, false, false, false, "Tiny Robin Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.7, AbilityId.BIG_PECKS, AbilityId.NONE, AbilityId.GALE_WINGS, 278, 45, 50, 43, 40, 38, 62, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.FLETCHINDER, 6, false, false, false, "Ember Pokémon", PokemonType.FIRE, PokemonType.FLYING, 0.7, 16, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.GALE_WINGS, 382, 62, 73, 55, 56, 52, 84, 120, 50, 134, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.TALONFLAME, 6, false, false, false, "Scorching Pokémon", PokemonType.FIRE, PokemonType.FLYING, 1.2, 24.5, AbilityId.FLAME_BODY, AbilityId.NONE, AbilityId.GALE_WINGS, 499, 78, 81, 71, 74, 69, 126, 45, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SCATTERBUG, 6, false, false, false, "Scatterdust Pokémon", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("River Pattern", "river", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, null, 0.3, 2.5, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + ), + new PokemonSpecies(SpeciesId.SPEWPA, 6, false, false, false, "Scatterdust Pokémon", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.SHED_SKIN, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("River Pattern", "river", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, null, 0.3, 8.4, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + ), + new PokemonSpecies(SpeciesId.VIVILLON, 6, false, false, false, "Scale Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("River Pattern", "river", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, AbilityId.SHIELD_DUST, AbilityId.COMPOUND_EYES, AbilityId.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + ), + new PokemonSpecies(SpeciesId.LITLEO, 6, false, false, false, "Lion Cub Pokémon", PokemonType.FIRE, PokemonType.NORMAL, 0.6, 13.5, AbilityId.RIVALRY, AbilityId.UNNERVE, AbilityId.MOXIE, 369, 62, 50, 58, 73, 54, 72, 220, 70, 74, GrowthRate.MEDIUM_SLOW, 12.5, false), + new PokemonSpecies(SpeciesId.PYROAR, 6, false, false, false, "Royal Pokémon", PokemonType.FIRE, PokemonType.NORMAL, 1.5, 81.5, AbilityId.RIVALRY, AbilityId.UNNERVE, AbilityId.MOXIE, 507, 86, 68, 72, 109, 66, 106, 65, 70, 177, GrowthRate.MEDIUM_SLOW, 12.5, true), + new PokemonSpecies(SpeciesId.FLABEBE, 6, false, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, GrowthRate.MEDIUM_FAST, 0, false, false, + new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), + new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), + new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), + new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), + new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 0.1, 0.1, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), + ), + new PokemonSpecies(SpeciesId.FLOETTE, 6, false, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, GrowthRate.MEDIUM_FAST, 0, false, false, + new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), + new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), + new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), + new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), + new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), + ), + new PokemonSpecies(SpeciesId.FLORGES, 6, false, false, false, "Garden Pokémon", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, GrowthRate.MEDIUM_FAST, 0, false, false, + new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), + new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), + new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), + new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), + new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 1.1, 10, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), + ), + new PokemonSpecies(SpeciesId.SKIDDO, 6, false, false, false, "Mount Pokémon", PokemonType.GRASS, null, 0.9, 31, AbilityId.SAP_SIPPER, AbilityId.NONE, AbilityId.GRASS_PELT, 350, 66, 65, 48, 62, 57, 52, 200, 70, 70, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GOGOAT, 6, false, false, false, "Mount Pokémon", PokemonType.GRASS, null, 1.7, 91, AbilityId.SAP_SIPPER, AbilityId.NONE, AbilityId.GRASS_PELT, 531, 123, 100, 62, 97, 81, 68, 45, 70, 186, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PANCHAM, 6, false, false, false, "Playful Pokémon", PokemonType.FIGHTING, null, 0.6, 8, AbilityId.IRON_FIST, AbilityId.MOLD_BREAKER, AbilityId.SCRAPPY, 348, 67, 82, 62, 46, 48, 43, 220, 50, 70, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PANGORO, 6, false, false, false, "Daunting Pokémon", PokemonType.FIGHTING, PokemonType.DARK, 2.1, 136, AbilityId.IRON_FIST, AbilityId.MOLD_BREAKER, AbilityId.SCRAPPY, 495, 95, 124, 78, 69, 71, 58, 65, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FURFROU, 6, false, false, false, "Poodle Pokémon", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Natural Form", "", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Heart Trim", "heart", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Star Trim", "star", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Diamond Trim", "diamond", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Debutante Trim", "debutante", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Matron Trim", "matron", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Dandy Trim", "dandy", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("La Reine Trim", "la-reine", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Kabuki Trim", "kabuki", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Pharaoh Trim", "pharaoh", PokemonType.NORMAL, null, 1.2, 28, AbilityId.FUR_COAT, AbilityId.NONE, AbilityId.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + ), + new PokemonSpecies(SpeciesId.ESPURR, 6, false, false, false, "Restraint Pokémon", PokemonType.PSYCHIC, null, 0.3, 3.5, AbilityId.KEEN_EYE, AbilityId.INFILTRATOR, AbilityId.OWN_TEMPO, 355, 62, 48, 54, 63, 60, 68, 190, 50, 71, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MEOWSTIC, 6, false, false, false, "Constraint Pokémon", PokemonType.PSYCHIC, null, 0.6, 8.5, AbilityId.KEEN_EYE, AbilityId.INFILTRATOR, AbilityId.PRANKSTER, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Male", "male", PokemonType.PSYCHIC, null, 0.6, 8.5, AbilityId.KEEN_EYE, AbilityId.INFILTRATOR, AbilityId.PRANKSTER, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, false, "", true), + new PokemonForm("Female", "female", PokemonType.PSYCHIC, null, 0.6, 8.5, AbilityId.KEEN_EYE, AbilityId.INFILTRATOR, AbilityId.COMPETITIVE, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, false, null, true), + ), + new PokemonSpecies(SpeciesId.HONEDGE, 6, false, false, false, "Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 0.8, 2, AbilityId.NO_GUARD, AbilityId.NONE, AbilityId.NONE, 325, 45, 80, 100, 35, 37, 28, 180, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DOUBLADE, 6, false, false, false, "Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 0.8, 4.5, AbilityId.NO_GUARD, AbilityId.NONE, AbilityId.NONE, 448, 59, 110, 150, 45, 49, 35, 90, 50, 157, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.AEGISLASH, 6, false, false, false, "Royal Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, AbilityId.STANCE_CHANGE, AbilityId.NONE, AbilityId.NONE, 500, 60, 50, 140, 50, 140, 60, 45, 50, 250, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Shield Forme", "shield", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, AbilityId.STANCE_CHANGE, AbilityId.NONE, AbilityId.NONE, 500, 60, 50, 140, 50, 140, 60, 45, 50, 250, false, "", true), + new PokemonForm("Blade Forme", "blade", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, AbilityId.STANCE_CHANGE, AbilityId.NONE, AbilityId.NONE, 500, 60, 140, 50, 140, 50, 60, 45, 50, 250), + ), + new PokemonSpecies(SpeciesId.SPRITZEE, 6, false, false, false, "Perfume Pokémon", PokemonType.FAIRY, null, 0.2, 0.5, AbilityId.HEALER, AbilityId.NONE, AbilityId.AROMA_VEIL, 341, 78, 52, 60, 63, 65, 23, 200, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.AROMATISSE, 6, false, false, false, "Fragrance Pokémon", PokemonType.FAIRY, null, 0.8, 15.5, AbilityId.HEALER, AbilityId.NONE, AbilityId.AROMA_VEIL, 462, 101, 72, 72, 99, 89, 29, 140, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SWIRLIX, 6, false, false, false, "Cotton Candy Pokémon", PokemonType.FAIRY, null, 0.4, 3.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.UNBURDEN, 341, 62, 48, 66, 59, 57, 49, 200, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SLURPUFF, 6, false, false, false, "Meringue Pokémon", PokemonType.FAIRY, null, 0.8, 5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.UNBURDEN, 480, 82, 80, 86, 85, 75, 72, 140, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.INKAY, 6, false, false, false, "Revolving Pokémon", PokemonType.DARK, PokemonType.PSYCHIC, 0.4, 3.5, AbilityId.CONTRARY, AbilityId.SUCTION_CUPS, AbilityId.INFILTRATOR, 288, 53, 54, 53, 37, 46, 45, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MALAMAR, 6, false, false, false, "Overturning Pokémon", PokemonType.DARK, PokemonType.PSYCHIC, 1.5, 47, AbilityId.CONTRARY, AbilityId.SUCTION_CUPS, AbilityId.INFILTRATOR, 482, 86, 92, 88, 68, 75, 73, 80, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BINACLE, 6, false, false, false, "Two-Handed Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.5, 31, AbilityId.TOUGH_CLAWS, AbilityId.SNIPER, AbilityId.PICKPOCKET, 306, 42, 52, 67, 39, 56, 50, 120, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BARBARACLE, 6, false, false, false, "Collective Pokémon", PokemonType.ROCK, PokemonType.WATER, 1.3, 96, AbilityId.TOUGH_CLAWS, AbilityId.SNIPER, AbilityId.PICKPOCKET, 500, 72, 105, 115, 54, 86, 68, 45, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SKRELP, 6, false, false, false, "Mock Kelp Pokémon", PokemonType.POISON, PokemonType.WATER, 0.5, 7.3, AbilityId.POISON_POINT, AbilityId.POISON_TOUCH, AbilityId.ADAPTABILITY, 320, 50, 60, 60, 60, 60, 30, 225, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DRAGALGE, 6, false, false, false, "Mock Kelp Pokémon", PokemonType.POISON, PokemonType.DRAGON, 1.8, 81.5, AbilityId.POISON_POINT, AbilityId.POISON_TOUCH, AbilityId.ADAPTABILITY, 494, 65, 75, 90, 97, 123, 44, 55, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CLAUNCHER, 6, false, false, false, "Water Gun Pokémon", PokemonType.WATER, null, 0.5, 8.3, AbilityId.MEGA_LAUNCHER, AbilityId.NONE, AbilityId.NONE, 330, 50, 53, 62, 58, 63, 44, 225, 50, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.CLAWITZER, 6, false, false, false, "Howitzer Pokémon", PokemonType.WATER, null, 1.3, 35.3, AbilityId.MEGA_LAUNCHER, AbilityId.NONE, AbilityId.NONE, 500, 71, 73, 88, 120, 89, 59, 55, 50, 100, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HELIOPTILE, 6, false, false, false, "Generator Pokémon", PokemonType.ELECTRIC, PokemonType.NORMAL, 0.5, 6, AbilityId.DRY_SKIN, AbilityId.SAND_VEIL, AbilityId.SOLAR_POWER, 289, 44, 38, 33, 61, 43, 70, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HELIOLISK, 6, false, false, false, "Generator Pokémon", PokemonType.ELECTRIC, PokemonType.NORMAL, 1, 21, AbilityId.DRY_SKIN, AbilityId.SAND_VEIL, AbilityId.SOLAR_POWER, 481, 62, 55, 52, 109, 94, 109, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TYRUNT, 6, false, false, false, "Royal Heir Pokémon", PokemonType.ROCK, PokemonType.DRAGON, 0.8, 26, AbilityId.STRONG_JAW, AbilityId.NONE, AbilityId.STURDY, 362, 58, 89, 77, 45, 45, 48, 45, 50, 72, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.TYRANTRUM, 6, false, false, false, "Despot Pokémon", PokemonType.ROCK, PokemonType.DRAGON, 2.5, 270, AbilityId.STRONG_JAW, AbilityId.NONE, AbilityId.ROCK_HEAD, 521, 82, 121, 119, 69, 59, 71, 45, 50, 182, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.AMAURA, 6, false, false, false, "Tundra Pokémon", PokemonType.ROCK, PokemonType.ICE, 1.3, 25.2, AbilityId.REFRIGERATE, AbilityId.NONE, AbilityId.SNOW_WARNING, 362, 77, 59, 50, 67, 63, 46, 45, 50, 72, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.AURORUS, 6, false, false, false, "Tundra Pokémon", PokemonType.ROCK, PokemonType.ICE, 2.7, 225, AbilityId.REFRIGERATE, AbilityId.NONE, AbilityId.SNOW_WARNING, 521, 123, 77, 72, 99, 92, 58, 45, 50, 104, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.SYLVEON, 6, false, false, false, "Intertwining Pokémon", PokemonType.FAIRY, null, 1, 23.5, AbilityId.CUTE_CHARM, AbilityId.NONE, AbilityId.PIXILATE, 525, 95, 65, 65, 110, 130, 60, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.HAWLUCHA, 6, false, false, false, "Wrestling Pokémon", PokemonType.FIGHTING, PokemonType.FLYING, 0.8, 21.5, AbilityId.LIMBER, AbilityId.UNBURDEN, AbilityId.MOLD_BREAKER, 500, 78, 92, 75, 74, 63, 118, 100, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DEDENNE, 6, false, false, false, "Antenna Pokémon", PokemonType.ELECTRIC, PokemonType.FAIRY, 0.2, 2.2, AbilityId.CHEEK_POUCH, AbilityId.PICKUP, AbilityId.PLUS, 431, 67, 58, 57, 81, 67, 101, 180, 50, 151, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CARBINK, 6, false, false, false, "Jewel Pokémon", PokemonType.ROCK, PokemonType.FAIRY, 0.3, 5.7, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.STURDY, 500, 50, 50, 150, 50, 150, 50, 60, 50, 100, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.GOOMY, 6, false, false, false, "Soft Tissue Pokémon", PokemonType.DRAGON, null, 0.3, 2.8, AbilityId.SAP_SIPPER, AbilityId.HYDRATION, AbilityId.GOOEY, 300, 45, 50, 35, 55, 75, 40, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.SLIGGOO, 6, false, false, false, "Soft Tissue Pokémon", PokemonType.DRAGON, null, 0.8, 17.5, AbilityId.SAP_SIPPER, AbilityId.HYDRATION, AbilityId.GOOEY, 452, 68, 75, 53, 83, 113, 60, 45, 35, 158, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.GOODRA, 6, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 2, 150.5, AbilityId.SAP_SIPPER, AbilityId.HYDRATION, AbilityId.GOOEY, 600, 90, 100, 70, 110, 150, 80, 45, 35, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.KLEFKI, 6, false, false, false, "Key Ring Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 0.2, 3, AbilityId.PRANKSTER, AbilityId.NONE, AbilityId.MAGICIAN, 470, 57, 80, 91, 80, 87, 75, 75, 50, 165, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.PHANTUMP, 6, false, false, false, "Stump Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.4, 7, AbilityId.NATURAL_CURE, AbilityId.FRISK, AbilityId.HARVEST, 309, 43, 70, 48, 50, 60, 38, 120, 50, 62, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TREVENANT, 6, false, false, false, "Elder Tree Pokémon", PokemonType.GHOST, PokemonType.GRASS, 1.5, 71, AbilityId.NATURAL_CURE, AbilityId.FRISK, AbilityId.HARVEST, 474, 85, 110, 76, 65, 82, 56, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PUMPKABOO, 6, false, false, false, "Pumpkin Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.4, 5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 49, 66, 70, 44, 55, 51, 120, 50, 67, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Average Size", "", PokemonType.GHOST, PokemonType.GRASS, 0.4, 5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 49, 66, 70, 44, 55, 51, 120, 50, 67, false, null, true), + new PokemonForm("Small Size", "small", PokemonType.GHOST, PokemonType.GRASS, 0.3, 3.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 44, 66, 70, 44, 55, 56, 120, 50, 67, false, "", true), + new PokemonForm("Large Size", "large", PokemonType.GHOST, PokemonType.GRASS, 0.5, 7.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 54, 66, 70, 44, 55, 46, 120, 50, 67, false, "", true), + new PokemonForm("Super Size", "super", PokemonType.GHOST, PokemonType.GRASS, 0.8, 15, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 335, 59, 66, 70, 44, 55, 41, 120, 50, 67, false, "", true), + ), + new PokemonSpecies(SpeciesId.GOURGEIST, 6, false, false, false, "Pumpkin Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.9, 12.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 65, 90, 122, 58, 75, 84, 60, 50, 173, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Average Size", "", PokemonType.GHOST, PokemonType.GRASS, 0.9, 12.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 65, 90, 122, 58, 75, 84, 60, 50, 173, false, null, true), + new PokemonForm("Small Size", "small", PokemonType.GHOST, PokemonType.GRASS, 0.7, 9.5, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 55, 85, 122, 58, 75, 99, 60, 50, 173, false, "", true), + new PokemonForm("Large Size", "large", PokemonType.GHOST, PokemonType.GRASS, 1.1, 14, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 75, 95, 122, 58, 75, 69, 60, 50, 173, false, "", true), + new PokemonForm("Super Size", "super", PokemonType.GHOST, PokemonType.GRASS, 1.7, 39, AbilityId.PICKUP, AbilityId.FRISK, AbilityId.INSOMNIA, 494, 85, 100, 122, 58, 75, 54, 60, 50, 173, false, "", true), + ), + new PokemonSpecies(SpeciesId.BERGMITE, 6, false, false, false, "Ice Chunk Pokémon", PokemonType.ICE, null, 1, 99.5, AbilityId.OWN_TEMPO, AbilityId.ICE_BODY, AbilityId.STURDY, 304, 55, 69, 85, 32, 35, 28, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.AVALUGG, 6, false, false, false, "Iceberg Pokémon", PokemonType.ICE, null, 2, 505, AbilityId.OWN_TEMPO, AbilityId.ICE_BODY, AbilityId.STURDY, 514, 95, 117, 184, 44, 46, 28, 55, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.NOIBAT, 6, false, false, false, "Sound Wave Pokémon", PokemonType.FLYING, PokemonType.DRAGON, 0.5, 8, AbilityId.FRISK, AbilityId.INFILTRATOR, AbilityId.TELEPATHY, 245, 40, 30, 35, 45, 40, 55, 190, 50, 49, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.NOIVERN, 6, false, false, false, "Sound Wave Pokémon", PokemonType.FLYING, PokemonType.DRAGON, 1.5, 85, AbilityId.FRISK, AbilityId.INFILTRATOR, AbilityId.TELEPATHY, 535, 85, 70, 80, 97, 80, 123, 45, 50, 187, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.XERNEAS, 6, false, true, false, "Life Pokémon", PokemonType.FAIRY, null, 3, 215, AbilityId.FAIRY_AURA, AbilityId.NONE, AbilityId.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, GrowthRate.SLOW, null, false, true, + new PokemonForm("Neutral Mode", "neutral", PokemonType.FAIRY, null, 3, 215, AbilityId.FAIRY_AURA, AbilityId.NONE, AbilityId.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, false, null, true), + new PokemonForm("Active Mode", "active", PokemonType.FAIRY, null, 3, 215, AbilityId.FAIRY_AURA, AbilityId.NONE, AbilityId.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340) + ), + new PokemonSpecies(SpeciesId.YVELTAL, 6, false, true, false, "Destruction Pokémon", PokemonType.DARK, PokemonType.FLYING, 5.8, 203, AbilityId.DARK_AURA, AbilityId.NONE, AbilityId.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ZYGARDE, 6, false, true, false, "Order Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, AbilityId.AURA_BREAK, AbilityId.NONE, AbilityId.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("50% Forme", "50", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, AbilityId.AURA_BREAK, AbilityId.NONE, AbilityId.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, false, "", true), + new PokemonForm("10% Forme", "10", PokemonType.DRAGON, PokemonType.GROUND, 1.2, 33.5, AbilityId.AURA_BREAK, AbilityId.NONE, AbilityId.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 243, false, null, true), + new PokemonForm("50% Forme Power Construct", "50-pc", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, AbilityId.POWER_CONSTRUCT, AbilityId.NONE, AbilityId.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, false, "", true), + new PokemonForm("10% Forme Power Construct", "10-pc", PokemonType.DRAGON, PokemonType.GROUND, 1.2, 33.5, AbilityId.POWER_CONSTRUCT, AbilityId.NONE, AbilityId.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 243, false, "10", true), + new PokemonForm("Complete Forme (50% PC)", "complete", PokemonType.DRAGON, PokemonType.GROUND, 4.5, 610, AbilityId.POWER_CONSTRUCT, AbilityId.NONE, AbilityId.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 354), + new PokemonForm("Complete Forme (10% PC)", "10-complete", PokemonType.DRAGON, PokemonType.GROUND, 4.5, 610, AbilityId.POWER_CONSTRUCT, AbilityId.NONE, AbilityId.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 354, false, "complete"), + ), + new PokemonSpecies(SpeciesId.DIANCIE, 6, false, false, true, "Jewel Pokémon", PokemonType.ROCK, PokemonType.FAIRY, 0.7, 8.8, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FAIRY, 0.7, 8.8, AbilityId.CLEAR_BODY, AbilityId.NONE, AbilityId.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.FAIRY, 1.1, 27.8, AbilityId.MAGIC_BOUNCE, AbilityId.NONE, AbilityId.NONE, 700, 50, 160, 110, 160, 110, 110, 3, 50, 300), + ), + new PokemonSpecies(SpeciesId.HOOPA, 6, false, false, true, "Mischief Pokémon", PokemonType.PSYCHIC, PokemonType.GHOST, 0.5, 9, AbilityId.MAGICIAN, AbilityId.NONE, AbilityId.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("Hoopa Confined", "", PokemonType.PSYCHIC, PokemonType.GHOST, 0.5, 9, AbilityId.MAGICIAN, AbilityId.NONE, AbilityId.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 300, false, null, true), + new PokemonForm("Hoopa Unbound", "unbound", PokemonType.PSYCHIC, PokemonType.DARK, 6.5, 490, AbilityId.MAGICIAN, AbilityId.NONE, AbilityId.NONE, 680, 80, 160, 60, 170, 130, 80, 3, 100, 340), + ), + new PokemonSpecies(SpeciesId.VOLCANION, 6, false, false, true, "Steam Pokémon", PokemonType.FIRE, PokemonType.WATER, 1.7, 195, AbilityId.WATER_ABSORB, AbilityId.NONE, AbilityId.NONE, 600, 80, 110, 120, 130, 90, 70, 3, 100, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ROWLET, 7, false, false, false, "Grass Quill Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.3, 1.5, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LONG_REACH, 320, 68, 55, 55, 50, 50, 42, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.DARTRIX, 7, false, false, false, "Blade Quill Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.7, 16, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LONG_REACH, 420, 78, 75, 75, 70, 70, 52, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.DECIDUEYE, 7, false, false, false, "Arrow Quill Pokémon", PokemonType.GRASS, PokemonType.GHOST, 1.6, 36.6, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.LONG_REACH, 530, 78, 107, 75, 100, 100, 70, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.LITTEN, 7, false, false, false, "Fire Cat Pokémon", PokemonType.FIRE, null, 0.4, 4.3, AbilityId.BLAZE, AbilityId.NONE, AbilityId.INTIMIDATE, 320, 45, 65, 40, 60, 40, 70, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.TORRACAT, 7, false, false, false, "Fire Cat Pokémon", PokemonType.FIRE, null, 0.7, 25, AbilityId.BLAZE, AbilityId.NONE, AbilityId.INTIMIDATE, 420, 65, 85, 50, 80, 50, 90, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.INCINEROAR, 7, false, false, false, "Heel Pokémon", PokemonType.FIRE, PokemonType.DARK, 1.8, 83, AbilityId.BLAZE, AbilityId.NONE, AbilityId.INTIMIDATE, 530, 95, 115, 90, 80, 90, 60, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.POPPLIO, 7, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, null, 0.4, 7.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.LIQUID_VOICE, 320, 50, 54, 54, 66, 56, 40, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.BRIONNE, 7, false, false, false, "Pop Star Pokémon", PokemonType.WATER, null, 0.6, 17.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.LIQUID_VOICE, 420, 60, 69, 69, 91, 81, 50, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.PRIMARINA, 7, false, false, false, "Soloist Pokémon", PokemonType.WATER, PokemonType.FAIRY, 1.8, 44, AbilityId.TORRENT, AbilityId.NONE, AbilityId.LIQUID_VOICE, 530, 80, 74, 74, 126, 116, 60, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.PIKIPEK, 7, false, false, false, "Woodpecker Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.2, AbilityId.KEEN_EYE, AbilityId.SKILL_LINK, AbilityId.PICKUP, 265, 35, 75, 30, 30, 30, 65, 255, 70, 53, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TRUMBEAK, 7, false, false, false, "Bugle Beak Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 14.8, AbilityId.KEEN_EYE, AbilityId.SKILL_LINK, AbilityId.PICKUP, 355, 55, 85, 50, 40, 50, 75, 120, 70, 124, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TOUCANNON, 7, false, false, false, "Cannon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.1, 26, AbilityId.KEEN_EYE, AbilityId.SKILL_LINK, AbilityId.SHEER_FORCE, 485, 80, 120, 75, 75, 75, 60, 45, 70, 243, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.YUNGOOS, 7, false, false, false, "Loitering Pokémon", PokemonType.NORMAL, null, 0.4, 6, AbilityId.STAKEOUT, AbilityId.STRONG_JAW, AbilityId.ADAPTABILITY, 253, 48, 70, 30, 30, 30, 45, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GUMSHOOS, 7, false, false, false, "Stakeout Pokémon", PokemonType.NORMAL, null, 0.7, 14.2, AbilityId.STAKEOUT, AbilityId.STRONG_JAW, AbilityId.ADAPTABILITY, 418, 88, 110, 60, 55, 60, 45, 127, 70, 146, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GRUBBIN, 7, false, false, false, "Larva Pokémon", PokemonType.BUG, null, 0.4, 4.4, AbilityId.SWARM, AbilityId.NONE, AbilityId.NONE, 300, 47, 62, 45, 55, 45, 46, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CHARJABUG, 7, false, false, false, "Battery Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.5, 10.5, AbilityId.BATTERY, AbilityId.NONE, AbilityId.NONE, 400, 57, 82, 95, 55, 75, 36, 120, 50, 140, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.VIKAVOLT, 7, false, false, false, "Stag Beetle Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 1.5, 45, AbilityId.LEVITATE, AbilityId.NONE, AbilityId.NONE, 500, 77, 70, 90, 145, 75, 43, 45, 50, 250, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CRABRAWLER, 7, false, false, false, "Boxing Pokémon", PokemonType.FIGHTING, null, 0.6, 7, AbilityId.HYPER_CUTTER, AbilityId.IRON_FIST, AbilityId.ANGER_POINT, 338, 47, 82, 57, 42, 47, 63, 225, 70, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CRABOMINABLE, 7, false, false, false, "Woolly Crab Pokémon", PokemonType.FIGHTING, PokemonType.ICE, 1.7, 180, AbilityId.HYPER_CUTTER, AbilityId.IRON_FIST, AbilityId.ANGER_POINT, 478, 97, 132, 77, 62, 67, 43, 60, 70, 167, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ORICORIO, 7, false, false, false, "Dancing Pokémon", PokemonType.FIRE, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, GrowthRate.MEDIUM_FAST, 25, false, false, + new PokemonForm("Baile Style", "baile", PokemonType.FIRE, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, "", true), + new PokemonForm("Pom-Pom Style", "pompom", PokemonType.ELECTRIC, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), + new PokemonForm("Pau Style", "pau", PokemonType.PSYCHIC, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), + new PokemonForm("Sensu Style", "sensu", PokemonType.GHOST, PokemonType.FLYING, 0.6, 3.4, AbilityId.DANCER, AbilityId.NONE, AbilityId.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), + ), + new PokemonSpecies(SpeciesId.CUTIEFLY, 7, false, false, false, "Bee Fly Pokémon", PokemonType.BUG, PokemonType.FAIRY, 0.1, 0.2, AbilityId.HONEY_GATHER, AbilityId.SHIELD_DUST, AbilityId.SWEET_VEIL, 304, 40, 45, 40, 55, 40, 84, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RIBOMBEE, 7, false, false, false, "Bee Fly Pokémon", PokemonType.BUG, PokemonType.FAIRY, 0.2, 0.5, AbilityId.HONEY_GATHER, AbilityId.SHIELD_DUST, AbilityId.SWEET_VEIL, 464, 60, 55, 60, 95, 70, 124, 75, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ROCKRUFF, 7, false, false, false, "Puppy Pokémon", PokemonType.ROCK, null, 0.5, 9.2, AbilityId.KEEN_EYE, AbilityId.VITAL_SPIRIT, AbilityId.STEADFAST, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Normal", "", PokemonType.ROCK, null, 0.5, 9.2, AbilityId.KEEN_EYE, AbilityId.VITAL_SPIRIT, AbilityId.STEADFAST, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, false, null, true), + new PokemonForm("Own Tempo", "own-tempo", PokemonType.ROCK, null, 0.5, 9.2, AbilityId.OWN_TEMPO, AbilityId.NONE, AbilityId.OWN_TEMPO, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, false, "", true), + ), + new PokemonSpecies(SpeciesId.LYCANROC, 7, false, false, false, "Wolf Pokémon", PokemonType.ROCK, null, 0.8, 25, AbilityId.KEEN_EYE, AbilityId.SAND_RUSH, AbilityId.STEADFAST, 487, 75, 115, 65, 55, 65, 112, 90, 50, 170, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Midday Form", "midday", PokemonType.ROCK, null, 0.8, 25, AbilityId.KEEN_EYE, AbilityId.SAND_RUSH, AbilityId.STEADFAST, 487, 75, 115, 65, 55, 65, 112, 90, 50, 170, false, "", true), + new PokemonForm("Midnight Form", "midnight", PokemonType.ROCK, null, 1.1, 25, AbilityId.KEEN_EYE, AbilityId.VITAL_SPIRIT, AbilityId.NO_GUARD, 487, 85, 115, 75, 55, 75, 82, 90, 50, 170, false, null, true), + new PokemonForm("Dusk Form", "dusk", PokemonType.ROCK, null, 0.8, 25, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, AbilityId.TOUGH_CLAWS, 487, 75, 117, 65, 55, 65, 110, 90, 50, 170, false, null, true), + ), + new PokemonSpecies(SpeciesId.WISHIWASHI, 7, false, false, false, "Small Fry Pokémon", PokemonType.WATER, null, 0.2, 0.3, AbilityId.SCHOOLING, AbilityId.NONE, AbilityId.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61, GrowthRate.FAST, 50, false, false, + new PokemonForm("Solo Form", "", PokemonType.WATER, null, 0.2, 0.3, AbilityId.SCHOOLING, AbilityId.NONE, AbilityId.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61, false, null, true), + new PokemonForm("School", "school", PokemonType.WATER, null, 8.2, 78.6, AbilityId.SCHOOLING, AbilityId.NONE, AbilityId.NONE, 620, 45, 140, 130, 140, 135, 30, 60, 50, 217), + ), + new PokemonSpecies(SpeciesId.MAREANIE, 7, false, false, false, "Brutal Star Pokémon", PokemonType.POISON, PokemonType.WATER, 0.4, 8, AbilityId.MERCILESS, AbilityId.LIMBER, AbilityId.REGENERATOR, 305, 50, 53, 62, 43, 52, 45, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TOXAPEX, 7, false, false, false, "Brutal Star Pokémon", PokemonType.POISON, PokemonType.WATER, 0.7, 14.5, AbilityId.MERCILESS, AbilityId.LIMBER, AbilityId.REGENERATOR, 495, 50, 63, 152, 53, 142, 35, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MUDBRAY, 7, false, false, false, "Donkey Pokémon", PokemonType.GROUND, null, 1, 110, AbilityId.OWN_TEMPO, AbilityId.STAMINA, AbilityId.INNER_FOCUS, 385, 70, 100, 70, 45, 55, 45, 190, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MUDSDALE, 7, false, false, false, "Draft Horse Pokémon", PokemonType.GROUND, null, 2.5, 920, AbilityId.OWN_TEMPO, AbilityId.STAMINA, AbilityId.INNER_FOCUS, 500, 100, 125, 100, 55, 85, 35, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DEWPIDER, 7, false, false, false, "Water Bubble Pokémon", PokemonType.WATER, PokemonType.BUG, 0.3, 4, AbilityId.WATER_BUBBLE, AbilityId.NONE, AbilityId.WATER_ABSORB, 269, 38, 40, 52, 40, 72, 27, 200, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ARAQUANID, 7, false, false, false, "Water Bubble Pokémon", PokemonType.WATER, PokemonType.BUG, 1.8, 82, AbilityId.WATER_BUBBLE, AbilityId.NONE, AbilityId.WATER_ABSORB, 454, 68, 70, 92, 50, 132, 42, 100, 50, 159, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FOMANTIS, 7, false, false, false, "Sickle Grass Pokémon", PokemonType.GRASS, null, 0.3, 1.5, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.CONTRARY, 250, 40, 55, 35, 50, 35, 35, 190, 50, 50, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LURANTIS, 7, false, false, false, "Bloom Sickle Pokémon", PokemonType.GRASS, null, 0.9, 18.5, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.CONTRARY, 480, 70, 105, 90, 80, 90, 45, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MORELULL, 7, false, false, false, "Illuminating Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.2, 1.5, AbilityId.ILLUMINATE, AbilityId.EFFECT_SPORE, AbilityId.RAIN_DISH, 285, 40, 35, 55, 65, 75, 15, 190, 50, 57, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SHIINOTIC, 7, false, false, false, "Illuminating Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 1, 11.5, AbilityId.ILLUMINATE, AbilityId.EFFECT_SPORE, AbilityId.RAIN_DISH, 405, 60, 45, 80, 90, 100, 30, 75, 50, 142, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SALANDIT, 7, false, false, false, "Toxic Lizard Pokémon", PokemonType.POISON, PokemonType.FIRE, 0.6, 4.8, AbilityId.CORROSION, AbilityId.NONE, AbilityId.OBLIVIOUS, 320, 48, 44, 40, 71, 40, 77, 120, 50, 64, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(SpeciesId.SALAZZLE, 7, false, false, false, "Toxic Lizard Pokémon", PokemonType.POISON, PokemonType.FIRE, 1.2, 22.2, AbilityId.CORROSION, AbilityId.NONE, AbilityId.OBLIVIOUS, 480, 68, 64, 60, 111, 60, 117, 45, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.STUFFUL, 7, false, false, false, "Flailing Pokémon", PokemonType.NORMAL, PokemonType.FIGHTING, 0.5, 6.8, AbilityId.FLUFFY, AbilityId.KLUTZ, AbilityId.CUTE_CHARM, 340, 70, 75, 50, 45, 50, 50, 140, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BEWEAR, 7, false, false, false, "Strong Arm Pokémon", PokemonType.NORMAL, PokemonType.FIGHTING, 2.1, 135, AbilityId.FLUFFY, AbilityId.KLUTZ, AbilityId.UNNERVE, 500, 120, 125, 80, 55, 60, 60, 70, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BOUNSWEET, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 0.3, 3.2, AbilityId.LEAF_GUARD, AbilityId.OBLIVIOUS, AbilityId.SWEET_VEIL, 210, 42, 30, 38, 30, 38, 32, 235, 50, 42, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.STEENEE, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 0.7, 8.2, AbilityId.LEAF_GUARD, AbilityId.OBLIVIOUS, AbilityId.SWEET_VEIL, 290, 52, 40, 48, 40, 48, 62, 120, 50, 102, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.TSAREENA, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 1.2, 21.4, AbilityId.LEAF_GUARD, AbilityId.QUEENLY_MAJESTY, AbilityId.SWEET_VEIL, 510, 72, 120, 98, 50, 98, 72, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.COMFEY, 7, false, false, false, "Posy Picker Pokémon", PokemonType.FAIRY, null, 0.1, 0.3, AbilityId.FLOWER_VEIL, AbilityId.TRIAGE, AbilityId.NATURAL_CURE, 485, 51, 52, 90, 82, 110, 100, 60, 50, 170, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.ORANGURU, 7, false, false, false, "Sage Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.5, 76, AbilityId.INNER_FOCUS, AbilityId.TELEPATHY, AbilityId.SYMBIOSIS, 490, 90, 60, 80, 90, 110, 60, 45, 50, 172, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.PASSIMIAN, 7, false, false, false, "Teamwork Pokémon", PokemonType.FIGHTING, null, 2, 82.8, AbilityId.RECEIVER, AbilityId.NONE, AbilityId.DEFIANT, 490, 100, 120, 90, 40, 60, 80, 45, 50, 172, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.WIMPOD, 7, false, false, false, "Turn Tail Pokémon", PokemonType.BUG, PokemonType.WATER, 0.5, 12, AbilityId.WIMP_OUT, AbilityId.NONE, AbilityId.RUN_AWAY, 230, 25, 35, 40, 20, 30, 80, 90, 50, 46, GrowthRate.MEDIUM_FAST, 50, false), //Custom Hidden + new PokemonSpecies(SpeciesId.GOLISOPOD, 7, false, false, false, "Hard Scale Pokémon", PokemonType.BUG, PokemonType.WATER, 2, 108, AbilityId.EMERGENCY_EXIT, AbilityId.NONE, AbilityId.ANTICIPATION, 530, 75, 125, 140, 60, 90, 40, 45, 50, 186, GrowthRate.MEDIUM_FAST, 50, false), //Custom Hidden + new PokemonSpecies(SpeciesId.SANDYGAST, 7, false, false, false, "Sand Heap Pokémon", PokemonType.GHOST, PokemonType.GROUND, 0.5, 70, AbilityId.WATER_COMPACTION, AbilityId.NONE, AbilityId.SAND_VEIL, 320, 55, 55, 80, 70, 45, 15, 140, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PALOSSAND, 7, false, false, false, "Sand Castle Pokémon", PokemonType.GHOST, PokemonType.GROUND, 1.3, 250, AbilityId.WATER_COMPACTION, AbilityId.NONE, AbilityId.SAND_VEIL, 480, 85, 75, 110, 100, 75, 35, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PYUKUMUKU, 7, false, false, false, "Sea Cucumber Pokémon", PokemonType.WATER, null, 0.3, 1.2, AbilityId.INNARDS_OUT, AbilityId.NONE, AbilityId.UNAWARE, 410, 55, 60, 130, 30, 130, 5, 60, 50, 144, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.TYPE_NULL, 7, true, false, false, "Synthetic Pokémon", PokemonType.NORMAL, null, 1.9, 120.5, AbilityId.BATTLE_ARMOR, AbilityId.NONE, AbilityId.NONE, 534, 95, 95, 95, 95, 95, 59, 3, 0, 107, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SILVALLY, 7, true, false, false, "Synthetic Pokémon", PokemonType.NORMAL, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285, GrowthRate.SLOW, null, false, false, + new PokemonForm("Type: Normal", "normal", PokemonType.NORMAL, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285, false, "", true), + new PokemonForm("Type: Fighting", "fighting", PokemonType.FIGHTING, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Flying", "flying", PokemonType.FLYING, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Poison", "poison", PokemonType.POISON, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Ground", "ground", PokemonType.GROUND, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Rock", "rock", PokemonType.ROCK, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Bug", "bug", PokemonType.BUG, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Ghost", "ghost", PokemonType.GHOST, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Steel", "steel", PokemonType.STEEL, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Fire", "fire", PokemonType.FIRE, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Water", "water", PokemonType.WATER, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Grass", "grass", PokemonType.GRASS, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Electric", "electric", PokemonType.ELECTRIC, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Psychic", "psychic", PokemonType.PSYCHIC, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Ice", "ice", PokemonType.ICE, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Dragon", "dragon", PokemonType.DRAGON, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Dark", "dark", PokemonType.DARK, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Fairy", "fairy", PokemonType.FAIRY, null, 2.3, 100.5, AbilityId.RKS_SYSTEM, AbilityId.NONE, AbilityId.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + ), + new PokemonSpecies(SpeciesId.MINIOR, 7, false, false, false, "Meteor Pokémon", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, GrowthRate.MEDIUM_SLOW, null, false, false, + new PokemonForm("Red Meteor Form", "red-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), + new PokemonForm("Orange Meteor Form", "orange-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), + new PokemonForm("Yellow Meteor Form", "yellow-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), + new PokemonForm("Green Meteor Form", "green-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), + new PokemonForm("Blue Meteor Form", "blue-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), + new PokemonForm("Indigo Meteor Form", "indigo-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), + new PokemonForm("Violet Meteor Form", "violet-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), + new PokemonForm("Red Core Form", "red", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Orange Core Form", "orange", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Yellow Core Form", "yellow", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Green Core Form", "green", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Blue Core Form", "blue", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Indigo Core Form", "indigo", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Violet Core Form", "violet", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, AbilityId.SHIELDS_DOWN, AbilityId.NONE, AbilityId.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + ), + new PokemonSpecies(SpeciesId.KOMALA, 7, false, false, false, "Drowsing Pokémon", PokemonType.NORMAL, null, 0.4, 19.9, AbilityId.COMATOSE, AbilityId.NONE, AbilityId.NONE, 480, 65, 115, 65, 75, 95, 65, 45, 70, 168, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.TURTONATOR, 7, false, false, false, "Blast Turtle Pokémon", PokemonType.FIRE, PokemonType.DRAGON, 2, 212, AbilityId.SHELL_ARMOR, AbilityId.NONE, AbilityId.NONE, 485, 60, 78, 135, 91, 85, 36, 70, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TOGEDEMARU, 7, false, false, false, "Roly-Poly Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 0.3, 3.3, AbilityId.IRON_BARBS, AbilityId.LIGHTNING_ROD, AbilityId.STURDY, 435, 65, 98, 63, 40, 73, 96, 180, 50, 152, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MIMIKYU, 7, false, false, false, "Disguise Pokémon", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, AbilityId.DISGUISE, AbilityId.NONE, AbilityId.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Disguised Form", "disguised", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, AbilityId.DISGUISE, AbilityId.NONE, AbilityId.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167, false, null, true), + new PokemonForm("Busted Form", "busted", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, AbilityId.DISGUISE, AbilityId.NONE, AbilityId.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167), + ), + new PokemonSpecies(SpeciesId.BRUXISH, 7, false, false, false, "Gnash Teeth Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 0.9, 19, AbilityId.DAZZLING, AbilityId.STRONG_JAW, AbilityId.WONDER_SKIN, 475, 68, 105, 70, 70, 70, 92, 80, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DRAMPA, 7, false, false, false, "Placid Pokémon", PokemonType.NORMAL, PokemonType.DRAGON, 3, 185, AbilityId.BERSERK, AbilityId.SAP_SIPPER, AbilityId.CLOUD_NINE, 485, 78, 60, 85, 135, 91, 36, 70, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DHELMISE, 7, false, false, false, "Sea Creeper Pokémon", PokemonType.GHOST, PokemonType.GRASS, 3.9, 210, AbilityId.STEELWORKER, AbilityId.NONE, AbilityId.NONE, 517, 70, 131, 100, 86, 90, 40, 25, 50, 181, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.JANGMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, null, 0.6, 29.7, AbilityId.BULLETPROOF, AbilityId.SOUNDPROOF, AbilityId.OVERCOAT, 300, 45, 55, 65, 45, 45, 45, 45, 50, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HAKAMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, PokemonType.FIGHTING, 1.2, 47, AbilityId.BULLETPROOF, AbilityId.SOUNDPROOF, AbilityId.OVERCOAT, 420, 55, 75, 90, 65, 70, 65, 45, 50, 147, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.KOMMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, PokemonType.FIGHTING, 1.6, 78.2, AbilityId.BULLETPROOF, AbilityId.SOUNDPROOF, AbilityId.OVERCOAT, 600, 75, 110, 125, 100, 105, 85, 45, 50, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.TAPU_KOKO, 7, true, false, false, "Land Spirit Pokémon", PokemonType.ELECTRIC, PokemonType.FAIRY, 1.8, 20.5, AbilityId.ELECTRIC_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 115, 85, 95, 75, 130, 3, 50, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.TAPU_LELE, 7, true, false, false, "Land Spirit Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.2, 18.6, AbilityId.PSYCHIC_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 85, 75, 130, 115, 95, 3, 50, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.TAPU_BULU, 7, true, false, false, "Land Spirit Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 1.9, 45.5, AbilityId.GRASSY_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 130, 115, 85, 95, 75, 3, 50, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.TAPU_FINI, 7, true, false, false, "Land Spirit Pokémon", PokemonType.WATER, PokemonType.FAIRY, 1.3, 21.2, AbilityId.MISTY_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 75, 115, 95, 130, 85, 3, 50, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.COSMOG, 7, true, false, false, "Nebula Pokémon", PokemonType.PSYCHIC, null, 0.2, 0.1, AbilityId.UNAWARE, AbilityId.NONE, AbilityId.NONE, 200, 43, 29, 31, 29, 31, 37, 45, 0, 40, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.COSMOEM, 7, true, false, false, "Protostar Pokémon", PokemonType.PSYCHIC, null, 0.1, 999.9, AbilityId.STURDY, AbilityId.NONE, AbilityId.NONE, 400, 43, 29, 131, 29, 131, 37, 45, 0, 140, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SOLGALEO, 7, false, true, false, "Sunne Pokémon", PokemonType.PSYCHIC, PokemonType.STEEL, 3.4, 230, AbilityId.FULL_METAL_BODY, AbilityId.NONE, AbilityId.NONE, 680, 137, 137, 107, 113, 89, 97, 45, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.LUNALA, 7, false, true, false, "Moone Pokémon", PokemonType.PSYCHIC, PokemonType.GHOST, 4, 120, AbilityId.SHADOW_SHIELD, AbilityId.NONE, AbilityId.NONE, 680, 137, 113, 89, 137, 107, 97, 45, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.NIHILEGO, 7, true, false, false, "Parasite Pokémon", PokemonType.ROCK, PokemonType.POISON, 1.2, 55.5, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 109, 53, 47, 127, 131, 103, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.BUZZWOLE, 7, true, false, false, "Swollen Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 2.4, 333.6, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 107, 139, 139, 53, 53, 79, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.PHEROMOSA, 7, true, false, false, "Lissome Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 1.8, 25, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 71, 137, 37, 137, 37, 151, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.XURKITREE, 7, true, false, false, "Glowing Pokémon", PokemonType.ELECTRIC, null, 3.8, 100, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 83, 89, 71, 173, 71, 83, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.CELESTEELA, 7, true, false, false, "Launch Pokémon", PokemonType.STEEL, PokemonType.FLYING, 9.2, 999.9, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 97, 101, 103, 107, 101, 61, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.KARTANA, 7, true, false, false, "Drawn Sword Pokémon", PokemonType.GRASS, PokemonType.STEEL, 0.3, 0.1, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 59, 181, 131, 59, 31, 109, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.GUZZLORD, 7, true, false, false, "Junkivore Pokémon", PokemonType.DARK, PokemonType.DRAGON, 5.5, 888, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 223, 101, 53, 97, 53, 43, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.NECROZMA, 7, false, true, false, "Prism Pokémon", PokemonType.PSYCHIC, null, 2.4, 230, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 600, 97, 107, 101, 127, 89, 79, 255, 0, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 2.4, 230, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 600, 97, 107, 101, 127, 89, 79, 255, 0, 300, false, null, true), + new PokemonForm("Dusk Mane", "dusk-mane", PokemonType.PSYCHIC, PokemonType.STEEL, 3.8, 460, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 680, 97, 157, 127, 113, 109, 77, 255, 0, 340), + new PokemonForm("Dawn Wings", "dawn-wings", PokemonType.PSYCHIC, PokemonType.GHOST, 4.2, 350, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 680, 97, 113, 109, 157, 127, 77, 255, 0, 340), + new PokemonForm("Ultra", "ultra", PokemonType.PSYCHIC, PokemonType.DRAGON, 7.5, 230, AbilityId.NEUROFORCE, AbilityId.NONE, AbilityId.NONE, 754, 97, 167, 97, 167, 97, 129, 255, 0, 377), + ), + new PokemonSpecies(SpeciesId.MAGEARNA, 7, false, false, true, "Artificial Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, AbilityId.SOUL_HEART, AbilityId.NONE, AbilityId.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, AbilityId.SOUL_HEART, AbilityId.NONE, AbilityId.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, false, null, true), + new PokemonForm("Original", "original", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, AbilityId.SOUL_HEART, AbilityId.NONE, AbilityId.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, false, null, true), + ), + new PokemonSpecies(SpeciesId.MARSHADOW, 7, false, false, true, "Gloomdweller Pokémon", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, AbilityId.TECHNICIAN, AbilityId.NONE, AbilityId.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, AbilityId.TECHNICIAN, AbilityId.NONE, AbilityId.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, false, null, true), + new PokemonForm("Zenith", "zenith", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, AbilityId.TECHNICIAN, AbilityId.NONE, AbilityId.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, false, null, false, true) + ), + new PokemonSpecies(SpeciesId.POIPOLE, 7, true, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.6, 1.8, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 420, 67, 73, 67, 73, 67, 73, 45, 0, 210, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.NAGANADEL, 7, true, false, false, "Poison Pin Pokémon", PokemonType.POISON, PokemonType.DRAGON, 3.6, 150, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 540, 73, 73, 73, 127, 73, 121, 45, 0, 270, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.STAKATAKA, 7, true, false, false, "Rampart Pokémon", PokemonType.ROCK, PokemonType.STEEL, 5.5, 820, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 61, 131, 211, 53, 101, 13, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.BLACEPHALON, 7, true, false, false, "Fireworks Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.8, 13, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 53, 127, 53, 151, 79, 107, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ZERAORA, 7, false, false, true, "Thunderclap Pokémon", PokemonType.ELECTRIC, null, 1.5, 44.5, AbilityId.VOLT_ABSORB, AbilityId.NONE, AbilityId.NONE, 600, 88, 112, 75, 102, 80, 143, 3, 0, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.MELTAN, 7, false, false, true, "Hex Nut Pokémon", PokemonType.STEEL, null, 0.2, 8, AbilityId.MAGNET_PULL, AbilityId.NONE, AbilityId.NONE, 300, 46, 65, 65, 55, 35, 34, 3, 0, 150, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.MELMETAL, 7, false, false, true, "Hex Nut Pokémon", PokemonType.STEEL, null, 2.5, 800, AbilityId.IRON_FIST, AbilityId.NONE, AbilityId.NONE, 600, 135, 143, 143, 80, 65, 34, 3, 0, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, null, 2.5, 800, AbilityId.IRON_FIST, AbilityId.NONE, AbilityId.NONE, 600, 135, 143, 143, 80, 65, 34, 3, 0, 300, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, null, 25, 999.9, AbilityId.IRON_FIST, AbilityId.NONE, AbilityId.NONE, 700, 170, 158, 158, 95, 75, 44, 3, 0, 300), + ), + new PokemonSpecies(SpeciesId.GROOKEY, 8, false, false, false, "Chimp Pokémon", PokemonType.GRASS, null, 0.3, 5, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.GRASSY_SURGE, 310, 50, 65, 50, 40, 40, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.THWACKEY, 8, false, false, false, "Beat Pokémon", PokemonType.GRASS, null, 0.7, 14, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.GRASSY_SURGE, 420, 70, 85, 70, 55, 60, 80, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.RILLABOOM, 8, false, false, false, "Drummer Pokémon", PokemonType.GRASS, null, 2.1, 90, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.GRASSY_SURGE, 530, 100, 125, 90, 60, 70, 85, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.GRASS, null, 2.1, 90, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.GRASSY_SURGE, 530, 100, 125, 90, 60, 70, 85, 45, 50, 265, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, null, 28, 999.9, AbilityId.GRASSY_SURGE, AbilityId.NONE, AbilityId.GRASSY_SURGE, 630, 125, 140, 105, 90, 85, 85, 45, 50, 265), + ), + new PokemonSpecies(SpeciesId.SCORBUNNY, 8, false, false, false, "Rabbit Pokémon", PokemonType.FIRE, null, 0.3, 4.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.LIBERO, 310, 50, 71, 40, 40, 40, 69, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.RABOOT, 8, false, false, false, "Rabbit Pokémon", PokemonType.FIRE, null, 0.6, 9, AbilityId.BLAZE, AbilityId.NONE, AbilityId.LIBERO, 420, 65, 86, 60, 55, 60, 94, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.CINDERACE, 8, false, false, false, "Striker Pokémon", PokemonType.FIRE, null, 1.4, 33, AbilityId.BLAZE, AbilityId.NONE, AbilityId.LIBERO, 530, 80, 116, 75, 65, 75, 119, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.FIRE, null, 1.4, 33, AbilityId.BLAZE, AbilityId.NONE, AbilityId.LIBERO, 530, 80, 116, 75, 65, 75, 119, 45, 50, 265, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, null, 27, 999.9, AbilityId.LIBERO, AbilityId.NONE, AbilityId.LIBERO, 630, 100, 141, 80, 95, 80, 134, 45, 50, 265), + ), + new PokemonSpecies(SpeciesId.SOBBLE, 8, false, false, false, "Water Lizard Pokémon", PokemonType.WATER, null, 0.3, 4, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SNIPER, 310, 50, 40, 40, 70, 40, 70, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.DRIZZILE, 8, false, false, false, "Water Lizard Pokémon", PokemonType.WATER, null, 0.7, 11.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SNIPER, 420, 65, 60, 55, 95, 55, 90, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.INTELEON, 8, false, false, false, "Secret Agent Pokémon", PokemonType.WATER, null, 1.9, 45.2, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SNIPER, 530, 70, 85, 65, 125, 65, 120, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, null, 1.9, 45.2, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SNIPER, 530, 70, 85, 65, 125, 65, 120, 45, 50, 265, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, null, 40, 999.9, AbilityId.SNIPER, AbilityId.NONE, AbilityId.SNIPER, 630, 95, 117, 67, 147, 67, 137, 45, 50, 265), + ), + new PokemonSpecies(SpeciesId.SKWOVET, 8, false, false, false, "Cheeky Pokémon", PokemonType.NORMAL, null, 0.3, 2.5, AbilityId.CHEEK_POUCH, AbilityId.NONE, AbilityId.GLUTTONY, 275, 70, 55, 55, 35, 35, 25, 255, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GREEDENT, 8, false, false, false, "Greedy Pokémon", PokemonType.NORMAL, null, 0.6, 6, AbilityId.CHEEK_POUCH, AbilityId.NONE, AbilityId.GLUTTONY, 460, 120, 95, 95, 55, 75, 20, 90, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ROOKIDEE, 8, false, false, false, "Tiny Bird Pokémon", PokemonType.FLYING, null, 0.2, 1.8, AbilityId.KEEN_EYE, AbilityId.UNNERVE, AbilityId.BIG_PECKS, 245, 38, 47, 35, 33, 35, 57, 255, 50, 49, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CORVISQUIRE, 8, false, false, false, "Raven Pokémon", PokemonType.FLYING, null, 0.8, 16, AbilityId.KEEN_EYE, AbilityId.UNNERVE, AbilityId.BIG_PECKS, 365, 68, 67, 55, 43, 55, 77, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CORVIKNIGHT, 8, false, false, false, "Raven Pokémon", PokemonType.FLYING, PokemonType.STEEL, 2.2, 75, AbilityId.PRESSURE, AbilityId.UNNERVE, AbilityId.MIRROR_ARMOR, 495, 98, 87, 105, 53, 85, 67, 45, 50, 248, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.FLYING, PokemonType.STEEL, 2.2, 75, AbilityId.PRESSURE, AbilityId.UNNERVE, AbilityId.MIRROR_ARMOR, 495, 98, 87, 105, 53, 85, 67, 45, 50, 248, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FLYING, PokemonType.STEEL, 14, 999.9, AbilityId.MIRROR_ARMOR, AbilityId.MIRROR_ARMOR, AbilityId.MIRROR_ARMOR, 595, 118, 112, 135, 63, 90, 77, 45, 50, 248), + ), + new PokemonSpecies(SpeciesId.BLIPBUG, 8, false, false, false, "Larva Pokémon", PokemonType.BUG, null, 0.4, 8, AbilityId.SWARM, AbilityId.COMPOUND_EYES, AbilityId.TELEPATHY, 180, 25, 20, 20, 25, 45, 45, 255, 50, 36, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DOTTLER, 8, false, false, false, "Radome Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 19.5, AbilityId.SWARM, AbilityId.COMPOUND_EYES, AbilityId.TELEPATHY, 335, 50, 35, 80, 50, 90, 30, 120, 50, 117, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ORBEETLE, 8, false, false, false, "Seven Spot Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 40.8, AbilityId.SWARM, AbilityId.FRISK, AbilityId.TELEPATHY, 505, 60, 45, 110, 80, 120, 90, 45, 50, 253, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 40.8, AbilityId.SWARM, AbilityId.FRISK, AbilityId.TELEPATHY, 505, 60, 45, 110, 80, 120, 90, 45, 50, 253, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.BUG, PokemonType.PSYCHIC, 14, 999.9, AbilityId.TRACE, AbilityId.TRACE, AbilityId.TRACE, 605, 75, 50, 140, 100, 150, 90, 45, 50, 253), + ), + new PokemonSpecies(SpeciesId.NICKIT, 8, false, false, false, "Fox Pokémon", PokemonType.DARK, null, 0.6, 8.9, AbilityId.RUN_AWAY, AbilityId.UNBURDEN, AbilityId.STAKEOUT, 245, 40, 28, 28, 47, 52, 50, 255, 50, 49, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.THIEVUL, 8, false, false, false, "Fox Pokémon", PokemonType.DARK, null, 1.2, 19.9, AbilityId.RUN_AWAY, AbilityId.UNBURDEN, AbilityId.STAKEOUT, 455, 70, 58, 58, 87, 92, 90, 127, 50, 159, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.GOSSIFLEUR, 8, false, false, false, "Flowering Pokémon", PokemonType.GRASS, null, 0.4, 2.2, AbilityId.COTTON_DOWN, AbilityId.REGENERATOR, AbilityId.EFFECT_SPORE, 250, 40, 40, 60, 40, 60, 10, 190, 50, 50, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ELDEGOSS, 8, false, false, false, "Cotton Bloom Pokémon", PokemonType.GRASS, null, 0.5, 2.5, AbilityId.COTTON_DOWN, AbilityId.REGENERATOR, AbilityId.EFFECT_SPORE, 460, 60, 50, 90, 80, 120, 60, 75, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WOOLOO, 8, false, false, false, "Sheep Pokémon", PokemonType.NORMAL, null, 0.6, 6, AbilityId.FLUFFY, AbilityId.RUN_AWAY, AbilityId.BULLETPROOF, 270, 42, 40, 55, 40, 45, 48, 255, 50, 122, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DUBWOOL, 8, false, false, false, "Sheep Pokémon", PokemonType.NORMAL, null, 1.3, 43, AbilityId.FLUFFY, AbilityId.STEADFAST, AbilityId.BULLETPROOF, 490, 72, 80, 100, 60, 90, 88, 127, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CHEWTLE, 8, false, false, false, "Snapping Pokémon", PokemonType.WATER, null, 0.3, 8.5, AbilityId.STRONG_JAW, AbilityId.SHELL_ARMOR, AbilityId.SWIFT_SWIM, 284, 50, 64, 50, 38, 38, 44, 255, 50, 57, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DREDNAW, 8, false, false, false, "Bite Pokémon", PokemonType.WATER, PokemonType.ROCK, 1, 115.5, AbilityId.STRONG_JAW, AbilityId.SHELL_ARMOR, AbilityId.SWIFT_SWIM, 485, 90, 115, 90, 48, 68, 74, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.ROCK, 1, 115.5, AbilityId.STRONG_JAW, AbilityId.SHELL_ARMOR, AbilityId.SWIFT_SWIM, 485, 90, 115, 90, 48, 68, 74, 75, 50, 170, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.ROCK, 24, 999.9, AbilityId.STRONG_JAW, AbilityId.STRONG_JAW, AbilityId.STRONG_JAW, 585, 115, 137, 115, 61, 83, 74, 75, 50, 170), + ), + new PokemonSpecies(SpeciesId.YAMPER, 8, false, false, false, "Puppy Pokémon", PokemonType.ELECTRIC, null, 0.3, 13.5, AbilityId.BALL_FETCH, AbilityId.NONE, AbilityId.RATTLED, 270, 59, 45, 50, 40, 50, 26, 255, 50, 54, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.BOLTUND, 8, false, false, false, "Dog Pokémon", PokemonType.ELECTRIC, null, 1, 34, AbilityId.STRONG_JAW, AbilityId.NONE, AbilityId.COMPETITIVE, 490, 69, 90, 60, 90, 60, 121, 45, 50, 172, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.ROLYCOLY, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, null, 0.3, 12, AbilityId.STEAM_ENGINE, AbilityId.HEATPROOF, AbilityId.FLASH_FIRE, 240, 30, 40, 50, 40, 50, 30, 255, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CARKOL, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, PokemonType.FIRE, 1.1, 78, AbilityId.STEAM_ENGINE, AbilityId.FLAME_BODY, AbilityId.FLASH_FIRE, 410, 80, 60, 90, 60, 70, 50, 120, 50, 144, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.COALOSSAL, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, PokemonType.FIRE, 2.8, 310.5, AbilityId.STEAM_ENGINE, AbilityId.FLAME_BODY, AbilityId.FLASH_FIRE, 510, 110, 80, 120, 80, 90, 30, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FIRE, 2.8, 310.5, AbilityId.STEAM_ENGINE, AbilityId.FLAME_BODY, AbilityId.FLASH_FIRE, 510, 110, 80, 120, 80, 90, 30, 45, 50, 255, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ROCK, PokemonType.FIRE, 42, 999.9, AbilityId.STEAM_ENGINE, AbilityId.STEAM_ENGINE, AbilityId.STEAM_ENGINE, 610, 140, 100, 132, 95, 100, 43, 45, 50, 255), + ), + new PokemonSpecies(SpeciesId.APPLIN, 8, false, false, false, "Apple Core Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.2, 0.5, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.BULLETPROOF, 260, 40, 40, 80, 40, 40, 20, 255, 50, 52, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.FLAPPLE, 8, false, false, false, "Apple Wing Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.3, 1, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.HUSTLE, 485, 70, 110, 80, 95, 60, 70, 45, 50, 170, GrowthRate.ERRATIC, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.DRAGON, 0.3, 1, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.HUSTLE, 485, 70, 110, 80, 95, 60, 70, 45, 50, 170, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.DRAGON, 24, 999.9, AbilityId.HUSTLE, AbilityId.HUSTLE, AbilityId.HUSTLE, 585, 100, 125, 90, 105, 70, 95, 45, 50, 170), + ), + new PokemonSpecies(SpeciesId.APPLETUN, 8, false, false, false, "Apple Nectar Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 13, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 485, 110, 85, 80, 100, 80, 30, 45, 50, 170, GrowthRate.ERRATIC, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 13, AbilityId.RIPEN, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 485, 110, 85, 80, 100, 80, 30, 45, 50, 170, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.DRAGON, 24, 999.9, AbilityId.THICK_FAT, AbilityId.THICK_FAT, AbilityId.THICK_FAT, 585, 150, 100, 95, 115, 95, 30, 45, 50, 170), + ), + new PokemonSpecies(SpeciesId.SILICOBRA, 8, false, false, false, "Sand Snake Pokémon", PokemonType.GROUND, null, 2.2, 7.6, AbilityId.SAND_SPIT, AbilityId.SHED_SKIN, AbilityId.SAND_VEIL, 315, 52, 57, 75, 35, 50, 46, 255, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SANDACONDA, 8, false, false, false, "Sand Snake Pokémon", PokemonType.GROUND, null, 3.8, 65.5, AbilityId.SAND_SPIT, AbilityId.SHED_SKIN, AbilityId.SAND_VEIL, 510, 72, 107, 125, 65, 70, 71, 120, 50, 179, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GROUND, null, 3.8, 65.5, AbilityId.SAND_SPIT, AbilityId.SHED_SKIN, AbilityId.SAND_VEIL, 510, 72, 107, 125, 65, 70, 71, 120, 50, 179, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GROUND, null, 22, 999.9, AbilityId.SAND_SPIT, AbilityId.SAND_SPIT, AbilityId.SAND_SPIT, 610, 102, 137, 140, 70, 80, 81, 120, 50, 179), + ), + new PokemonSpecies(SpeciesId.CRAMORANT, 8, false, false, false, "Gulp Pokémon", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, AbilityId.GULP_MISSILE, AbilityId.NONE, AbilityId.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Normal", "", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, AbilityId.GULP_MISSILE, AbilityId.NONE, AbilityId.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166, false, null, true), + new PokemonForm("Gulping Form", "gulping", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, AbilityId.GULP_MISSILE, AbilityId.NONE, AbilityId.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166), + new PokemonForm("Gorging Form", "gorging", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, AbilityId.GULP_MISSILE, AbilityId.NONE, AbilityId.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166), + ), + new PokemonSpecies(SpeciesId.ARROKUDA, 8, false, false, false, "Rush Pokémon", PokemonType.WATER, null, 0.5, 1, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.PROPELLER_TAIL, 280, 41, 63, 40, 40, 30, 66, 255, 50, 56, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.BARRASKEWDA, 8, false, false, false, "Skewer Pokémon", PokemonType.WATER, null, 1.3, 30, AbilityId.SWIFT_SWIM, AbilityId.NONE, AbilityId.PROPELLER_TAIL, 490, 61, 123, 60, 60, 50, 136, 60, 50, 172, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.TOXEL, 8, false, false, false, "Baby Pokémon", PokemonType.ELECTRIC, PokemonType.POISON, 0.4, 11, AbilityId.RATTLED, AbilityId.STATIC, AbilityId.KLUTZ, 242, 40, 38, 35, 54, 35, 40, 75, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.TOXTRICITY, 8, false, false, false, "Punk Pokémon", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, AbilityId.PUNK_ROCK, AbilityId.PLUS, AbilityId.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Amped Form", "amped", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, AbilityId.PUNK_ROCK, AbilityId.PLUS, AbilityId.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, false, "", true), + new PokemonForm("Low-Key Form", "lowkey", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, AbilityId.PUNK_ROCK, AbilityId.MINUS, AbilityId.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, false, "lowkey", true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ELECTRIC, PokemonType.POISON, 24, 999.9, AbilityId.PUNK_ROCK, AbilityId.PUNK_ROCK, AbilityId.PUNK_ROCK, 602, 114, 105, 82, 137, 82, 82, 45, 50, 176), + ), + new PokemonSpecies(SpeciesId.SIZZLIPEDE, 8, false, false, false, "Radiator Pokémon", PokemonType.FIRE, PokemonType.BUG, 0.7, 1, AbilityId.FLASH_FIRE, AbilityId.WHITE_SMOKE, AbilityId.FLAME_BODY, 305, 50, 65, 45, 50, 50, 45, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CENTISKORCH, 8, false, false, false, "Radiator Pokémon", PokemonType.FIRE, PokemonType.BUG, 3, 120, AbilityId.FLASH_FIRE, AbilityId.WHITE_SMOKE, AbilityId.FLAME_BODY, 525, 100, 115, 65, 90, 90, 65, 75, 50, 184, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.BUG, 3, 120, AbilityId.FLASH_FIRE, AbilityId.WHITE_SMOKE, AbilityId.FLAME_BODY, 525, 100, 115, 65, 90, 90, 65, 75, 50, 184, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, PokemonType.BUG, 75, 999.9, AbilityId.FLASH_FIRE, AbilityId.FLASH_FIRE, AbilityId.FLASH_FIRE, 625, 130, 125, 75, 94, 100, 101, 75, 50, 184), + ), + new PokemonSpecies(SpeciesId.CLOBBOPUS, 8, false, false, false, "Tantrum Pokémon", PokemonType.FIGHTING, null, 0.6, 4, AbilityId.LIMBER, AbilityId.NONE, AbilityId.TECHNICIAN, 310, 50, 68, 60, 50, 50, 32, 180, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GRAPPLOCT, 8, false, false, false, "Jujitsu Pokémon", PokemonType.FIGHTING, null, 1.6, 39, AbilityId.LIMBER, AbilityId.NONE, AbilityId.TECHNICIAN, 480, 80, 118, 90, 70, 80, 42, 45, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SINISTEA, 8, false, false, false, "Black Tea Pokémon", PokemonType.GHOST, null, 0.1, 0.2, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, GrowthRate.MEDIUM_FAST, null, false, false, + new PokemonForm("Phony Form", "phony", PokemonType.GHOST, null, 0.1, 0.2, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true), + new PokemonForm("Antique Form", "antique", PokemonType.GHOST, null, 0.1, 0.2, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true, true), + ), + new PokemonSpecies(SpeciesId.POLTEAGEIST, 8, false, false, false, "Black Tea Pokémon", PokemonType.GHOST, null, 0.2, 0.4, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, GrowthRate.MEDIUM_FAST, null, false, false, + new PokemonForm("Phony Form", "phony", PokemonType.GHOST, null, 0.2, 0.4, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true), + new PokemonForm("Antique Form", "antique", PokemonType.GHOST, null, 0.2, 0.4, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true, true), + ), + new PokemonSpecies(SpeciesId.HATENNA, 8, false, false, false, "Calm Pokémon", PokemonType.PSYCHIC, null, 0.4, 3.4, AbilityId.HEALER, AbilityId.ANTICIPATION, AbilityId.MAGIC_BOUNCE, 265, 42, 30, 45, 56, 53, 39, 235, 50, 53, GrowthRate.SLOW, 0, false), + new PokemonSpecies(SpeciesId.HATTREM, 8, false, false, false, "Serene Pokémon", PokemonType.PSYCHIC, null, 0.6, 4.8, AbilityId.HEALER, AbilityId.ANTICIPATION, AbilityId.MAGIC_BOUNCE, 370, 57, 40, 65, 86, 73, 49, 120, 50, 130, GrowthRate.SLOW, 0, false), + new PokemonSpecies(SpeciesId.HATTERENE, 8, false, false, false, "Silent Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 2.1, 5.1, AbilityId.HEALER, AbilityId.ANTICIPATION, AbilityId.MAGIC_BOUNCE, 510, 57, 90, 95, 136, 103, 29, 45, 50, 255, GrowthRate.SLOW, 0, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FAIRY, 2.1, 5.1, AbilityId.HEALER, AbilityId.ANTICIPATION, AbilityId.MAGIC_BOUNCE, 510, 57, 90, 95, 136, 103, 29, 45, 50, 255, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.PSYCHIC, PokemonType.FAIRY, 26, 999.9, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, AbilityId.MAGIC_BOUNCE, 610, 87, 100, 110, 146, 118, 49, 45, 50, 255), + ), + new PokemonSpecies(SpeciesId.IMPIDIMP, 8, false, false, false, "Wily Pokémon", PokemonType.DARK, PokemonType.FAIRY, 0.4, 5.5, AbilityId.PRANKSTER, AbilityId.FRISK, AbilityId.PICKPOCKET, 265, 45, 45, 30, 55, 40, 50, 255, 50, 53, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.MORGREM, 8, false, false, false, "Devious Pokémon", PokemonType.DARK, PokemonType.FAIRY, 0.8, 12.5, AbilityId.PRANKSTER, AbilityId.FRISK, AbilityId.PICKPOCKET, 370, 65, 60, 45, 75, 55, 70, 120, 50, 130, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(SpeciesId.GRIMMSNARL, 8, false, false, false, "Bulk Up Pokémon", PokemonType.DARK, PokemonType.FAIRY, 1.5, 61, AbilityId.PRANKSTER, AbilityId.FRISK, AbilityId.PICKPOCKET, 510, 95, 120, 65, 95, 75, 60, 45, 50, 255, GrowthRate.MEDIUM_FAST, 100, false, true, + new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.FAIRY, 1.5, 61, AbilityId.PRANKSTER, AbilityId.FRISK, AbilityId.PICKPOCKET, 510, 95, 120, 65, 95, 75, 60, 45, 50, 255, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.DARK, PokemonType.FAIRY, 32, 999.9, AbilityId.PRANKSTER, AbilityId.PRANKSTER, AbilityId.PRANKSTER, 610, 130, 138, 75, 110, 92, 65, 45, 50, 255), + ), + new PokemonSpecies(SpeciesId.OBSTAGOON, 8, false, false, false, "Blocking Pokémon", PokemonType.DARK, PokemonType.NORMAL, 1.6, 46, AbilityId.RECKLESS, AbilityId.GUTS, AbilityId.DEFIANT, 520, 93, 90, 101, 60, 81, 95, 45, 50, 260, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PERRSERKER, 8, false, false, false, "Viking Pokémon", PokemonType.STEEL, null, 0.8, 28, AbilityId.BATTLE_ARMOR, AbilityId.TOUGH_CLAWS, AbilityId.STEELY_SPIRIT, 440, 70, 110, 100, 50, 60, 50, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CURSOLA, 8, false, false, false, "Coral Pokémon", PokemonType.GHOST, null, 1, 0.4, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.PERISH_BODY, 510, 60, 95, 50, 145, 130, 30, 30, 50, 179, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.SIRFETCHD, 8, false, false, false, "Wild Duck Pokémon", PokemonType.FIGHTING, null, 0.8, 117, AbilityId.STEADFAST, AbilityId.NONE, AbilityId.SCRAPPY, 507, 62, 135, 95, 68, 82, 65, 45, 50, 177, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MR_RIME, 8, false, false, false, "Comedian Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.5, 58.2, AbilityId.TANGLED_FEET, AbilityId.SCREEN_CLEANER, AbilityId.ICE_BODY, 520, 80, 85, 75, 110, 100, 70, 45, 50, 182, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RUNERIGUS, 8, false, false, false, "Grudge Pokémon", PokemonType.GROUND, PokemonType.GHOST, 1.6, 66.6, AbilityId.WANDERING_SPIRIT, AbilityId.NONE, AbilityId.NONE, 483, 58, 95, 145, 50, 105, 30, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.MILCERY, 8, false, false, false, "Cream Pokémon", PokemonType.FAIRY, null, 0.2, 0.3, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 270, 45, 40, 40, 50, 61, 34, 200, 50, 54, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.ALCREMIE, 8, false, false, false, "Cream Pokémon", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, GrowthRate.MEDIUM_FAST, 0, false, true, + new PokemonForm("Vanilla Cream", "vanilla-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, "", true), + new PokemonForm("Ruby Cream", "ruby-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Matcha Cream", "matcha-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Mint Cream", "mint-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Lemon Cream", "lemon-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Salted Cream", "salted-cream", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Ruby Swirl", "ruby-swirl", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Caramel Swirl", "caramel-swirl", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Rainbow Swirl", "rainbow-swirl", PokemonType.FAIRY, null, 0.3, 0.5, AbilityId.SWEET_VEIL, AbilityId.NONE, AbilityId.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FAIRY, null, 30, 999.9, AbilityId.MISTY_SURGE, AbilityId.NONE, AbilityId.MISTY_SURGE, 595, 105, 70, 85, 130, 141, 64, 100, 50, 173), + ), + new PokemonSpecies(SpeciesId.FALINKS, 8, false, false, false, "Formation Pokémon", PokemonType.FIGHTING, null, 3, 62, AbilityId.BATTLE_ARMOR, AbilityId.NONE, AbilityId.DEFIANT, 470, 65, 100, 100, 70, 60, 75, 45, 50, 165, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.PINCURCHIN, 8, false, false, false, "Sea Urchin Pokémon", PokemonType.ELECTRIC, null, 0.3, 1, AbilityId.LIGHTNING_ROD, AbilityId.NONE, AbilityId.ELECTRIC_SURGE, 435, 48, 101, 95, 91, 85, 15, 75, 50, 152, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SNOM, 8, false, false, false, "Worm Pokémon", PokemonType.ICE, PokemonType.BUG, 0.3, 3.8, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.ICE_SCALES, 185, 30, 25, 35, 45, 30, 20, 190, 50, 37, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FROSMOTH, 8, false, false, false, "Frost Moth Pokémon", PokemonType.ICE, PokemonType.BUG, 1.3, 42, AbilityId.SHIELD_DUST, AbilityId.NONE, AbilityId.ICE_SCALES, 475, 70, 65, 60, 125, 90, 65, 75, 50, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.STONJOURNER, 8, false, false, false, "Big Rock Pokémon", PokemonType.ROCK, null, 2.5, 520, AbilityId.POWER_SPOT, AbilityId.NONE, AbilityId.NONE, 470, 100, 125, 135, 20, 20, 70, 60, 50, 165, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.EISCUE, 8, false, false, false, "Penguin Pokémon", PokemonType.ICE, null, 1.4, 89, AbilityId.ICE_FACE, AbilityId.NONE, AbilityId.NONE, 470, 75, 80, 110, 65, 90, 50, 60, 50, 165, GrowthRate.SLOW, 50, false, false, + new PokemonForm("Ice Face", "", PokemonType.ICE, null, 1.4, 89, AbilityId.ICE_FACE, AbilityId.NONE, AbilityId.NONE, 470, 75, 80, 110, 65, 90, 50, 60, 50, 165, false, null, true), + new PokemonForm("No Ice", "no-ice", PokemonType.ICE, null, 1.4, 89, AbilityId.ICE_FACE, AbilityId.NONE, AbilityId.NONE, 470, 75, 80, 70, 65, 50, 130, 60, 50, 165), + ), + new PokemonSpecies(SpeciesId.INDEEDEE, 8, false, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, AbilityId.INNER_FOCUS, AbilityId.SYNCHRONIZE, AbilityId.PSYCHIC_SURGE, 475, 60, 65, 55, 105, 95, 95, 30, 140, 166, GrowthRate.FAST, 50, false, false, + new PokemonForm("Male", "male", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, AbilityId.INNER_FOCUS, AbilityId.SYNCHRONIZE, AbilityId.PSYCHIC_SURGE, 475, 60, 65, 55, 105, 95, 95, 30, 140, 166, false, "", true), + new PokemonForm("Female", "female", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, AbilityId.OWN_TEMPO, AbilityId.SYNCHRONIZE, AbilityId.PSYCHIC_SURGE, 475, 70, 55, 65, 95, 105, 85, 30, 140, 166, false, null, true), + ), + new PokemonSpecies(SpeciesId.MORPEKO, 8, false, false, false, "Two-Sided Pokémon", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, AbilityId.HUNGER_SWITCH, AbilityId.NONE, AbilityId.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Full Belly Mode", "full-belly", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, AbilityId.HUNGER_SWITCH, AbilityId.NONE, AbilityId.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153, false, "", true), + new PokemonForm("Hangry Mode", "hangry", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, AbilityId.HUNGER_SWITCH, AbilityId.NONE, AbilityId.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153), + ), + new PokemonSpecies(SpeciesId.CUFANT, 8, false, false, false, "Copperderm Pokémon", PokemonType.STEEL, null, 1.2, 100, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.HEAVY_METAL, 330, 72, 80, 49, 40, 49, 40, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.COPPERAJAH, 8, false, false, false, "Copperderm Pokémon", PokemonType.STEEL, null, 3, 650, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.HEAVY_METAL, 500, 122, 130, 69, 80, 69, 30, 90, 50, 175, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, null, 3, 650, AbilityId.SHEER_FORCE, AbilityId.NONE, AbilityId.HEAVY_METAL, 500, 122, 130, 69, 80, 69, 30, 90, 50, 175, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, PokemonType.GROUND, 23, 999.9, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.MOLD_BREAKER, 600, 177, 155, 79, 90, 79, 20, 90, 50, 175), + ), + new PokemonSpecies(SpeciesId.DRACOZOLT, 8, false, false, false, "Fossil Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 1.8, 190, AbilityId.VOLT_ABSORB, AbilityId.HUSTLE, AbilityId.SAND_RUSH, 505, 90, 100, 90, 80, 70, 75, 45, 50, 177, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ARCTOZOLT, 8, false, false, false, "Fossil Pokémon", PokemonType.ELECTRIC, PokemonType.ICE, 2.3, 150, AbilityId.VOLT_ABSORB, AbilityId.STATIC, AbilityId.SLUSH_RUSH, 505, 90, 100, 90, 90, 80, 55, 45, 50, 177, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.DRACOVISH, 8, false, false, false, "Fossil Pokémon", PokemonType.WATER, PokemonType.DRAGON, 2.3, 215, AbilityId.WATER_ABSORB, AbilityId.STRONG_JAW, AbilityId.SAND_RUSH, 505, 90, 90, 100, 70, 80, 75, 45, 50, 177, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ARCTOVISH, 8, false, false, false, "Fossil Pokémon", PokemonType.WATER, PokemonType.ICE, 2, 175, AbilityId.WATER_ABSORB, AbilityId.ICE_BODY, AbilityId.SLUSH_RUSH, 505, 90, 90, 100, 80, 90, 55, 45, 50, 177, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.DURALUDON, 8, false, false, false, "Alloy Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 1.8, 40, AbilityId.LIGHT_METAL, AbilityId.HEAVY_METAL, AbilityId.STALWART, 535, 70, 95, 115, 120, 50, 85, 45, 50, 187, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.DRAGON, 1.8, 40, AbilityId.LIGHT_METAL, AbilityId.HEAVY_METAL, AbilityId.STALWART, 535, 70, 95, 115, 120, 50, 85, 45, 50, 187, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, PokemonType.DRAGON, 43, 999.9, AbilityId.LIGHTNING_ROD, AbilityId.LIGHTNING_ROD, AbilityId.LIGHTNING_ROD, 635, 100, 110, 120, 175, 60, 70, 45, 50, 187), + ), + new PokemonSpecies(SpeciesId.DREEPY, 8, false, false, false, "Lingering Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 0.5, 2, AbilityId.CLEAR_BODY, AbilityId.INFILTRATOR, AbilityId.CURSED_BODY, 270, 28, 60, 30, 40, 30, 82, 45, 50, 54, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.DRAKLOAK, 8, false, false, false, "Caretaker Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 1.4, 11, AbilityId.CLEAR_BODY, AbilityId.INFILTRATOR, AbilityId.CURSED_BODY, 410, 68, 80, 50, 60, 50, 102, 45, 50, 144, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.DRAGAPULT, 8, false, false, false, "Stealth Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 3, 50, AbilityId.CLEAR_BODY, AbilityId.INFILTRATOR, AbilityId.CURSED_BODY, 600, 88, 120, 75, 100, 75, 142, 45, 50, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.ZACIAN, 8, false, true, false, "Warrior Pokémon", PokemonType.FAIRY, null, 2.8, 110, AbilityId.INTREPID_SWORD, AbilityId.NONE, AbilityId.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, GrowthRate.SLOW, null, false, false, + new PokemonForm("Hero of Many Battles", "hero-of-many-battles", PokemonType.FAIRY, null, 2.8, 110, AbilityId.INTREPID_SWORD, AbilityId.NONE, AbilityId.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, "", true), + new PokemonForm("Crowned", "crowned", PokemonType.FAIRY, PokemonType.STEEL, 2.8, 355, AbilityId.INTREPID_SWORD, AbilityId.NONE, AbilityId.NONE, 700, 92, 150, 115, 80, 115, 148, 10, 0, 360), + ), + new PokemonSpecies(SpeciesId.ZAMAZENTA, 8, false, true, false, "Warrior Pokémon", PokemonType.FIGHTING, null, 2.9, 210, AbilityId.DAUNTLESS_SHIELD, AbilityId.NONE, AbilityId.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, GrowthRate.SLOW, null, false, false, + new PokemonForm("Hero of Many Battles", "hero-of-many-battles", PokemonType.FIGHTING, null, 2.9, 210, AbilityId.DAUNTLESS_SHIELD, AbilityId.NONE, AbilityId.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, "", true), + new PokemonForm("Crowned", "crowned", PokemonType.FIGHTING, PokemonType.STEEL, 2.9, 785, AbilityId.DAUNTLESS_SHIELD, AbilityId.NONE, AbilityId.NONE, 700, 92, 120, 140, 80, 140, 128, 10, 0, 360), + ), + new PokemonSpecies(SpeciesId.ETERNATUS, 8, false, true, false, "Gigantic Pokémon", PokemonType.POISON, PokemonType.DRAGON, 20, 950, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.POISON, PokemonType.DRAGON, 20, 950, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, false, null, true), + new PokemonForm("E-Max", "eternamax", PokemonType.POISON, PokemonType.DRAGON, 100, 999.9, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 1125, 255, 115, 250, 125, 250, 130, 255, 0, 345), + ), + new PokemonSpecies(SpeciesId.KUBFU, 8, true, false, false, "Wushu Pokémon", PokemonType.FIGHTING, null, 0.6, 12, AbilityId.INNER_FOCUS, AbilityId.NONE, AbilityId.NONE, 385, 60, 90, 60, 53, 50, 72, 3, 50, 77, GrowthRate.SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.URSHIFU, 8, true, false, false, "Wushu Pokémon", PokemonType.FIGHTING, PokemonType.DARK, 1.9, 105, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, GrowthRate.SLOW, 87.5, false, true, + new PokemonForm("Single Strike Style", "single-strike", PokemonType.FIGHTING, PokemonType.DARK, 1.9, 105, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, false, "", true), + new PokemonForm("Rapid Strike Style", "rapid-strike", PokemonType.FIGHTING, PokemonType.WATER, 1.9, 105, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, false, null, true), + new PokemonForm("G-Max Single Strike Style", SpeciesFormKey.GIGANTAMAX_SINGLE, PokemonType.FIGHTING, PokemonType.DARK, 29, 999.9, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 650, 125, 145, 115, 83, 70, 112, 3, 50, 275), + new PokemonForm("G-Max Rapid Strike Style", SpeciesFormKey.GIGANTAMAX_RAPID, PokemonType.FIGHTING, PokemonType.WATER, 26, 999.9, AbilityId.UNSEEN_FIST, AbilityId.NONE, AbilityId.NONE, 650, 125, 145, 115, 83, 70, 112, 3, 50, 275), + ), + new PokemonSpecies(SpeciesId.ZARUDE, 8, false, false, true, "Rogue Monkey Pokémon", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, false, null, true), + new PokemonForm("Dada", "dada", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, AbilityId.LEAF_GUARD, AbilityId.NONE, AbilityId.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, false, null, true), + ), + new PokemonSpecies(SpeciesId.REGIELEKI, 8, true, false, false, "Electron Pokémon", PokemonType.ELECTRIC, null, 1.2, 145, AbilityId.TRANSISTOR, AbilityId.NONE, AbilityId.NONE, 580, 80, 100, 50, 100, 50, 200, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.REGIDRAGO, 8, true, false, false, "Dragon Orb Pokémon", PokemonType.DRAGON, null, 2.1, 200, AbilityId.DRAGONS_MAW, AbilityId.NONE, AbilityId.NONE, 580, 200, 100, 50, 100, 50, 80, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.GLASTRIER, 8, true, false, false, "Wild Horse Pokémon", PokemonType.ICE, null, 2.2, 800, AbilityId.CHILLING_NEIGH, AbilityId.NONE, AbilityId.NONE, 580, 100, 145, 130, 65, 110, 30, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SPECTRIER, 8, true, false, false, "Swift Horse Pokémon", PokemonType.GHOST, null, 2, 44.5, AbilityId.GRIM_NEIGH, AbilityId.NONE, AbilityId.NONE, 580, 100, 65, 60, 145, 80, 130, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.CALYREX, 8, false, true, false, "King Pokémon", PokemonType.PSYCHIC, PokemonType.GRASS, 1.1, 7.7, AbilityId.UNNERVE, AbilityId.NONE, AbilityId.NONE, 500, 100, 80, 80, 80, 80, 80, 3, 100, 250, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.GRASS, 1.1, 7.7, AbilityId.UNNERVE, AbilityId.NONE, AbilityId.NONE, 500, 100, 80, 80, 80, 80, 80, 3, 100, 250, false, null, true), + new PokemonForm("Ice", "ice", PokemonType.PSYCHIC, PokemonType.ICE, 2.4, 809.1, AbilityId.AS_ONE_GLASTRIER, AbilityId.NONE, AbilityId.NONE, 680, 100, 165, 150, 85, 130, 50, 3, 100, 340), + new PokemonForm("Shadow", "shadow", PokemonType.PSYCHIC, PokemonType.GHOST, 2.4, 53.6, AbilityId.AS_ONE_SPECTRIER, AbilityId.NONE, AbilityId.NONE, 680, 100, 85, 80, 165, 100, 150, 3, 100, 340), + ), + new PokemonSpecies(SpeciesId.WYRDEER, 8, false, false, false, "Big Horn Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.8, 95.1, AbilityId.INTIMIDATE, AbilityId.FRISK, AbilityId.SAP_SIPPER, 525, 103, 105, 72, 105, 75, 65, 135, 50, 263, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.KLEAVOR, 8, false, false, false, "Axe Pokémon", PokemonType.BUG, PokemonType.ROCK, 1.8, 89, AbilityId.SWARM, AbilityId.SHEER_FORCE, AbilityId.SHARPNESS, 500, 70, 135, 95, 45, 70, 85, 115, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.URSALUNA, 8, false, false, false, "Peat Pokémon", PokemonType.GROUND, PokemonType.NORMAL, 2.4, 290, AbilityId.GUTS, AbilityId.BULLETPROOF, AbilityId.UNNERVE, 550, 130, 140, 105, 45, 80, 50, 75, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BASCULEGION, 8, false, false, false, "Big Fish Pokémon", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 135, 50, 265, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Male", "male", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 135, 50, 265, false, "", true), + new PokemonForm("Female", "female", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 92, 65, 100, 75, 78, 135, 50, 265, false, null, true), + ), + new PokemonSpecies(SpeciesId.SNEASLER, 8, false, false, false, "Free Climb Pokémon", PokemonType.FIGHTING, PokemonType.POISON, 1.3, 43, AbilityId.PRESSURE, AbilityId.UNBURDEN, AbilityId.POISON_TOUCH, 510, 80, 130, 60, 40, 80, 120, 135, 50, 102, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.OVERQWIL, 8, false, false, false, "Pin Cluster Pokémon", PokemonType.DARK, PokemonType.POISON, 2.5, 60.5, AbilityId.POISON_POINT, AbilityId.SWIFT_SWIM, AbilityId.INTIMIDATE, 510, 85, 115, 95, 65, 65, 85, 135, 50, 179, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ENAMORUS, 8, true, false, false, "Love-Hate Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, AbilityId.CUTE_CHARM, AbilityId.NONE, AbilityId.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116, GrowthRate.SLOW, 0, false, true, + new PokemonForm("Incarnate Forme", "incarnate", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, AbilityId.CUTE_CHARM, AbilityId.NONE, AbilityId.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116, false, null, true), + new PokemonForm("Therian Forme", "therian", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.OVERCOAT, 580, 74, 115, 110, 135, 100, 46, 3, 50, 116), + ), + new PokemonSpecies(SpeciesId.SPRIGATITO, 9, false, false, false, "Grass Cat Pokémon", PokemonType.GRASS, null, 0.4, 4.1, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.PROTEAN, 310, 40, 61, 54, 45, 45, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.FLORAGATO, 9, false, false, false, "Grass Cat Pokémon", PokemonType.GRASS, null, 0.9, 12.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.PROTEAN, 410, 61, 80, 63, 60, 63, 83, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.MEOWSCARADA, 9, false, false, false, "Magician Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.5, 31.2, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.PROTEAN, 530, 76, 110, 70, 81, 70, 123, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.FUECOCO, 9, false, false, false, "Fire Croc Pokémon", PokemonType.FIRE, null, 0.4, 9.8, AbilityId.BLAZE, AbilityId.NONE, AbilityId.UNAWARE, 310, 67, 45, 59, 63, 40, 36, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.CROCALOR, 9, false, false, false, "Fire Croc Pokémon", PokemonType.FIRE, null, 1, 30.7, AbilityId.BLAZE, AbilityId.NONE, AbilityId.UNAWARE, 411, 81, 55, 78, 90, 58, 49, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.SKELEDIRGE, 9, false, false, false, "Singer Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 326.5, AbilityId.BLAZE, AbilityId.NONE, AbilityId.UNAWARE, 530, 104, 75, 100, 110, 75, 66, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.QUAXLY, 9, false, false, false, "Duckling Pokémon", PokemonType.WATER, null, 0.5, 6.1, AbilityId.TORRENT, AbilityId.NONE, AbilityId.MOXIE, 310, 55, 65, 45, 50, 45, 50, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.QUAXWELL, 9, false, false, false, "Practicing Pokémon", PokemonType.WATER, null, 1.2, 21.5, AbilityId.TORRENT, AbilityId.NONE, AbilityId.MOXIE, 410, 70, 85, 65, 65, 60, 65, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.QUAQUAVAL, 9, false, false, false, "Dancer Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.8, 61.9, AbilityId.TORRENT, AbilityId.NONE, AbilityId.MOXIE, 530, 85, 120, 80, 85, 75, 85, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.LECHONK, 9, false, false, false, "Hog Pokémon", PokemonType.NORMAL, null, 0.5, 10.2, AbilityId.AROMA_VEIL, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 254, 54, 45, 40, 35, 45, 35, 255, 50, 51, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.OINKOLOGNE, 9, false, false, false, "Hog Pokémon", PokemonType.NORMAL, null, 1, 120, AbilityId.LINGERING_AROMA, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 489, 110, 100, 75, 59, 80, 65, 100, 50, 171, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Male", "male", PokemonType.NORMAL, null, 1, 120, AbilityId.LINGERING_AROMA, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 489, 110, 100, 75, 59, 80, 65, 100, 50, 171, false, "", true), + new PokemonForm("Female", "female", PokemonType.NORMAL, null, 1, 120, AbilityId.AROMA_VEIL, AbilityId.GLUTTONY, AbilityId.THICK_FAT, 489, 115, 90, 70, 59, 90, 65, 100, 50, 171, false, null, true), + ), + new PokemonSpecies(SpeciesId.TAROUNTULA, 9, false, false, false, "String Ball Pokémon", PokemonType.BUG, null, 0.3, 4, AbilityId.INSOMNIA, AbilityId.NONE, AbilityId.STAKEOUT, 210, 35, 41, 45, 29, 40, 20, 255, 50, 42, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.SPIDOPS, 9, false, false, false, "Trap Pokémon", PokemonType.BUG, null, 1, 16.5, AbilityId.INSOMNIA, AbilityId.NONE, AbilityId.STAKEOUT, 404, 60, 79, 92, 52, 86, 35, 120, 50, 141, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.NYMBLE, 9, false, false, false, "Grasshopper Pokémon", PokemonType.BUG, null, 0.2, 1, AbilityId.SWARM, AbilityId.NONE, AbilityId.TINTED_LENS, 210, 33, 46, 40, 21, 25, 45, 190, 20, 42, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.LOKIX, 9, false, false, false, "Grasshopper Pokémon", PokemonType.BUG, PokemonType.DARK, 1, 17.5, AbilityId.SWARM, AbilityId.NONE, AbilityId.TINTED_LENS, 450, 71, 102, 78, 52, 55, 92, 30, 0, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PAWMI, 9, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.3, 2.5, AbilityId.STATIC, AbilityId.NATURAL_CURE, AbilityId.IRON_FIST, 240, 45, 50, 20, 40, 25, 60, 190, 50, 48, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PAWMO, 9, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, PokemonType.FIGHTING, 0.4, 6.5, AbilityId.VOLT_ABSORB, AbilityId.NATURAL_CURE, AbilityId.IRON_FIST, 350, 60, 75, 40, 50, 40, 85, 80, 50, 123, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.PAWMOT, 9, false, false, false, "Hands-On Pokémon", PokemonType.ELECTRIC, PokemonType.FIGHTING, 0.9, 41, AbilityId.VOLT_ABSORB, AbilityId.NATURAL_CURE, AbilityId.IRON_FIST, 490, 70, 115, 70, 70, 60, 105, 45, 50, 245, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TANDEMAUS, 9, false, false, false, "Couple Pokémon", PokemonType.NORMAL, null, 0.3, 1.8, AbilityId.RUN_AWAY, AbilityId.PICKUP, AbilityId.OWN_TEMPO, 305, 50, 50, 45, 40, 45, 75, 150, 50, 61, GrowthRate.FAST, null, false), + new PokemonSpecies(SpeciesId.MAUSHOLD, 9, false, false, false, "Family Pokémon", PokemonType.NORMAL, null, 0.3, 2.3, AbilityId.FRIEND_GUARD, AbilityId.CHEEK_POUCH, AbilityId.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165, GrowthRate.FAST, null, false, false, + new PokemonForm("Family of Four", "four", PokemonType.NORMAL, null, 0.3, 2.8, AbilityId.FRIEND_GUARD, AbilityId.CHEEK_POUCH, AbilityId.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165), + new PokemonForm("Family of Three", "three", PokemonType.NORMAL, null, 0.3, 2.3, AbilityId.FRIEND_GUARD, AbilityId.CHEEK_POUCH, AbilityId.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165), + ), + new PokemonSpecies(SpeciesId.FIDOUGH, 9, false, false, false, "Puppy Pokémon", PokemonType.FAIRY, null, 0.3, 10.9, AbilityId.OWN_TEMPO, AbilityId.NONE, AbilityId.KLUTZ, 312, 37, 55, 70, 30, 55, 65, 190, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.DACHSBUN, 9, false, false, false, "Dog Pokémon", PokemonType.FAIRY, null, 0.5, 14.9, AbilityId.WELL_BAKED_BODY, AbilityId.NONE, AbilityId.AROMA_VEIL, 477, 57, 80, 115, 50, 80, 95, 90, 50, 167, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SMOLIV, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 0.3, 6.5, AbilityId.EARLY_BIRD, AbilityId.NONE, AbilityId.HARVEST, 260, 41, 35, 45, 58, 51, 30, 255, 50, 52, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.DOLLIV, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 0.6, 11.9, AbilityId.EARLY_BIRD, AbilityId.NONE, AbilityId.HARVEST, 354, 52, 53, 60, 78, 78, 33, 120, 50, 124, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ARBOLIVA, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 1.4, 48.2, AbilityId.SEED_SOWER, AbilityId.NONE, AbilityId.HARVEST, 510, 78, 69, 90, 125, 109, 39, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SQUAWKABILLY, 9, false, false, false, "Parrot Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, GrowthRate.ERRATIC, 50, false, false, + new PokemonForm("Green Plumage", "green-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), + new PokemonForm("Blue Plumage", "blue-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), + new PokemonForm("Yellow Plumage", "yellow-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.SHEER_FORCE, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), + new PokemonForm("White Plumage", "white-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, AbilityId.INTIMIDATE, AbilityId.HUSTLE, AbilityId.SHEER_FORCE, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), + ), + new PokemonSpecies(SpeciesId.NACLI, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 0.4, 16, AbilityId.PURIFYING_SALT, AbilityId.STURDY, AbilityId.CLEAR_BODY, 280, 55, 55, 75, 35, 35, 25, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.NACLSTACK, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 0.6, 105, AbilityId.PURIFYING_SALT, AbilityId.STURDY, AbilityId.CLEAR_BODY, 355, 60, 60, 100, 35, 65, 35, 120, 50, 124, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GARGANACL, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 2.3, 240, AbilityId.PURIFYING_SALT, AbilityId.STURDY, AbilityId.CLEAR_BODY, 500, 100, 100, 130, 45, 90, 35, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CHARCADET, 9, false, false, false, "Fire Child Pokémon", PokemonType.FIRE, null, 0.6, 10.5, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.FLAME_BODY, 255, 40, 50, 40, 50, 40, 35, 90, 50, 51, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.ARMAROUGE, 9, false, false, false, "Fire Warrior Pokémon", PokemonType.FIRE, PokemonType.PSYCHIC, 1.5, 85, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.WEAK_ARMOR, 525, 85, 60, 100, 125, 80, 75, 25, 20, 263, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.CERULEDGE, 9, false, false, false, "Fire Blades Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 62, AbilityId.FLASH_FIRE, AbilityId.NONE, AbilityId.WEAK_ARMOR, 525, 75, 125, 80, 60, 100, 85, 25, 20, 263, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.TADBULB, 9, false, false, false, "EleTadpole Pokémon", PokemonType.ELECTRIC, null, 0.3, 0.4, AbilityId.OWN_TEMPO, AbilityId.STATIC, AbilityId.DAMP, 272, 61, 31, 41, 59, 35, 45, 190, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BELLIBOLT, 9, false, false, false, "EleFrog Pokémon", PokemonType.ELECTRIC, null, 1.2, 113, AbilityId.ELECTROMORPHOSIS, AbilityId.STATIC, AbilityId.DAMP, 495, 109, 64, 91, 103, 83, 45, 50, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WATTREL, 9, false, false, false, "Storm Petrel Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 0.4, 3.6, AbilityId.WIND_POWER, AbilityId.VOLT_ABSORB, AbilityId.COMPETITIVE, 280, 40, 40, 35, 55, 40, 70, 180, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.KILOWATTREL, 9, false, false, false, "Frigatebird Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.4, 38.6, AbilityId.WIND_POWER, AbilityId.VOLT_ABSORB, AbilityId.COMPETITIVE, 490, 70, 70, 60, 105, 60, 125, 90, 50, 172, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.MASCHIFF, 9, false, false, false, "Rascal Pokémon", PokemonType.DARK, null, 0.5, 16, AbilityId.INTIMIDATE, AbilityId.RUN_AWAY, AbilityId.STAKEOUT, 340, 60, 78, 60, 40, 51, 51, 150, 50, 68, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.MABOSSTIFF, 9, false, false, false, "Boss Pokémon", PokemonType.DARK, null, 1.1, 61, AbilityId.INTIMIDATE, AbilityId.GUARD_DOG, AbilityId.STAKEOUT, 505, 80, 120, 90, 60, 70, 85, 75, 50, 177, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.SHROODLE, 9, false, false, false, "Toxic Mouse Pokémon", PokemonType.POISON, PokemonType.NORMAL, 0.2, 0.7, AbilityId.UNBURDEN, AbilityId.PICKPOCKET, AbilityId.PRANKSTER, 290, 40, 65, 35, 40, 35, 75, 190, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GRAFAIAI, 9, false, false, false, "Toxic Monkey Pokémon", PokemonType.POISON, PokemonType.NORMAL, 0.7, 27.2, AbilityId.UNBURDEN, AbilityId.POISON_TOUCH, AbilityId.PRANKSTER, 485, 63, 95, 65, 80, 72, 110, 90, 50, 170, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.BRAMBLIN, 9, false, false, false, "Tumbleweed Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.6, 0.6, AbilityId.WIND_RIDER, AbilityId.NONE, AbilityId.INFILTRATOR, 275, 40, 65, 30, 45, 35, 60, 190, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BRAMBLEGHAST, 9, false, false, false, "Tumbleweed Pokémon", PokemonType.GRASS, PokemonType.GHOST, 1.2, 6, AbilityId.WIND_RIDER, AbilityId.NONE, AbilityId.INFILTRATOR, 480, 55, 115, 70, 80, 70, 90, 45, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.TOEDSCOOL, 9, false, false, false, "Woodear Pokémon", PokemonType.GROUND, PokemonType.GRASS, 0.9, 33, AbilityId.MYCELIUM_MIGHT, AbilityId.NONE, AbilityId.NONE, 335, 40, 40, 35, 50, 100, 70, 190, 50, 67, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.TOEDSCRUEL, 9, false, false, false, "Woodear Pokémon", PokemonType.GROUND, PokemonType.GRASS, 1.9, 58, AbilityId.MYCELIUM_MIGHT, AbilityId.NONE, AbilityId.NONE, 515, 80, 70, 65, 80, 120, 100, 90, 50, 180, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.KLAWF, 9, false, false, false, "Ambush Pokémon", PokemonType.ROCK, null, 1.3, 79, AbilityId.ANGER_SHELL, AbilityId.SHELL_ARMOR, AbilityId.REGENERATOR, 450, 70, 100, 115, 35, 55, 75, 120, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CAPSAKID, 9, false, false, false, "Spicy Pepper Pokémon", PokemonType.GRASS, null, 0.3, 3, AbilityId.CHLOROPHYLL, AbilityId.INSOMNIA, AbilityId.KLUTZ, 304, 50, 62, 40, 62, 40, 50, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SCOVILLAIN, 9, false, false, false, "Spicy Pepper Pokémon", PokemonType.GRASS, PokemonType.FIRE, 0.9, 15, AbilityId.CHLOROPHYLL, AbilityId.INSOMNIA, AbilityId.MOODY, 486, 65, 108, 65, 108, 65, 75, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.RELLOR, 9, false, false, false, "Rolling Pokémon", PokemonType.BUG, null, 0.2, 1, AbilityId.COMPOUND_EYES, AbilityId.NONE, AbilityId.SHED_SKIN, 270, 41, 50, 60, 31, 58, 30, 190, 50, 54, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.RABSCA, 9, false, false, false, "Rolling Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.3, 3.5, AbilityId.SYNCHRONIZE, AbilityId.NONE, AbilityId.TELEPATHY, 470, 75, 50, 85, 115, 100, 45, 45, 50, 165, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.FLITTLE, 9, false, false, false, "Frill Pokémon", PokemonType.PSYCHIC, null, 0.2, 1.5, AbilityId.ANTICIPATION, AbilityId.FRISK, AbilityId.SPEED_BOOST, 255, 30, 35, 30, 55, 30, 75, 120, 50, 51, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ESPATHRA, 9, false, false, false, "Ostrich Pokémon", PokemonType.PSYCHIC, null, 1.9, 90, AbilityId.OPPORTUNIST, AbilityId.FRISK, AbilityId.SPEED_BOOST, 481, 95, 60, 60, 101, 60, 105, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.TINKATINK, 9, false, false, false, "Metalsmith Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.4, 8.9, AbilityId.MOLD_BREAKER, AbilityId.OWN_TEMPO, AbilityId.PICKPOCKET, 297, 50, 45, 45, 35, 64, 58, 190, 50, 59, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.TINKATUFF, 9, false, false, false, "Hammer Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.7, 59.1, AbilityId.MOLD_BREAKER, AbilityId.OWN_TEMPO, AbilityId.PICKPOCKET, 380, 65, 55, 55, 45, 82, 78, 90, 50, 133, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.TINKATON, 9, false, false, false, "Hammer Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.7, 112.8, AbilityId.MOLD_BREAKER, AbilityId.OWN_TEMPO, AbilityId.PICKPOCKET, 506, 85, 75, 77, 70, 105, 94, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(SpeciesId.WIGLETT, 9, false, false, false, "Garden Eel Pokémon", PokemonType.WATER, null, 1.2, 1.8, AbilityId.GOOEY, AbilityId.RATTLED, AbilityId.SAND_VEIL, 245, 10, 55, 25, 35, 25, 95, 255, 50, 49, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.WUGTRIO, 9, false, false, false, "Garden Eel Pokémon", PokemonType.WATER, null, 1.2, 5.4, AbilityId.GOOEY, AbilityId.RATTLED, AbilityId.SAND_VEIL, 425, 35, 100, 50, 50, 70, 120, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BOMBIRDIER, 9, false, false, false, "Item Drop Pokémon", PokemonType.FLYING, PokemonType.DARK, 1.5, 42.9, AbilityId.BIG_PECKS, AbilityId.KEEN_EYE, AbilityId.ROCKY_PAYLOAD, 485, 70, 103, 85, 60, 85, 82, 25, 50, 243, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.FINIZEN, 9, false, false, false, "Dolphin Pokémon", PokemonType.WATER, null, 1.3, 60.2, AbilityId.WATER_VEIL, AbilityId.NONE, AbilityId.NONE, 315, 70, 45, 40, 45, 40, 75, 200, 50, 63, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.PALAFIN, 9, false, false, false, "Dolphin Pokémon", PokemonType.WATER, null, 1.3, 60.2, AbilityId.ZERO_TO_HERO, AbilityId.NONE, AbilityId.NONE, 457, 100, 70, 72, 53, 62, 100, 45, 50, 160, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Zero Form", "zero", PokemonType.WATER, null, 1.3, 60.2, AbilityId.ZERO_TO_HERO, AbilityId.NONE, AbilityId.ZERO_TO_HERO, 457, 100, 70, 72, 53, 62, 100, 45, 50, 160, false, null, true), + new PokemonForm("Hero Form", "hero", PokemonType.WATER, null, 1.8, 97.4, AbilityId.ZERO_TO_HERO, AbilityId.NONE, AbilityId.ZERO_TO_HERO, 650, 100, 160, 97, 106, 87, 100, 45, 50, 160), + ), + new PokemonSpecies(SpeciesId.VAROOM, 9, false, false, false, "Single-Cyl Pokémon", PokemonType.STEEL, PokemonType.POISON, 1, 35, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.SLOW_START, 300, 45, 70, 63, 30, 45, 47, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.REVAVROOM, 9, false, false, false, "Multi-Cyl Pokémon", PokemonType.STEEL, PokemonType.POISON, 1.8, 120, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.FILTER, 500, 80, 119, 90, 54, 67, 90, 75, 50, 175, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.POISON, 1.8, 120, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.FILTER, 500, 80, 119, 90, 54, 67, 90, 75, 50, 175, false, null, true), + new PokemonForm("Segin Starmobile", "segin-starmobile", PokemonType.STEEL, PokemonType.DARK, 1.8, 240, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.INTIMIDATE, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), + new PokemonForm("Schedar Starmobile", "schedar-starmobile", PokemonType.STEEL, PokemonType.FIRE, 1.8, 240, AbilityId.SPEED_BOOST, AbilityId.NONE, AbilityId.SPEED_BOOST, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), + new PokemonForm("Navi Starmobile", "navi-starmobile", PokemonType.STEEL, PokemonType.POISON, 1.8, 240, AbilityId.TOXIC_DEBRIS, AbilityId.NONE, AbilityId.TOXIC_DEBRIS, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), + new PokemonForm("Ruchbah Starmobile", "ruchbah-starmobile", PokemonType.STEEL, PokemonType.FAIRY, 1.8, 240, AbilityId.MISTY_SURGE, AbilityId.NONE, AbilityId.MISTY_SURGE, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), + new PokemonForm("Caph Starmobile", "caph-starmobile", PokemonType.STEEL, PokemonType.FIGHTING, 1.8, 240, AbilityId.STAMINA, AbilityId.NONE, AbilityId.STAMINA, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true), + ), + new PokemonSpecies(SpeciesId.CYCLIZAR, 9, false, false, false, "Mount Pokémon", PokemonType.DRAGON, PokemonType.NORMAL, 1.6, 63, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.REGENERATOR, 501, 70, 95, 65, 85, 65, 121, 190, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ORTHWORM, 9, false, false, false, "Earthworm Pokémon", PokemonType.STEEL, null, 2.5, 310, AbilityId.EARTH_EATER, AbilityId.NONE, AbilityId.SAND_VEIL, 480, 70, 85, 145, 60, 55, 65, 25, 50, 240, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.GLIMMET, 9, false, false, false, "Ore Pokémon", PokemonType.ROCK, PokemonType.POISON, 0.7, 8, AbilityId.TOXIC_DEBRIS, AbilityId.NONE, AbilityId.CORROSION, 350, 48, 35, 42, 105, 60, 60, 70, 50, 70, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GLIMMORA, 9, false, false, false, "Ore Pokémon", PokemonType.ROCK, PokemonType.POISON, 1.5, 45, AbilityId.TOXIC_DEBRIS, AbilityId.NONE, AbilityId.CORROSION, 525, 83, 55, 90, 130, 81, 86, 25, 50, 184, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GREAVARD, 9, false, false, false, "Ghost Dog Pokémon", PokemonType.GHOST, null, 0.6, 35, AbilityId.PICKUP, AbilityId.NONE, AbilityId.FLUFFY, 290, 50, 61, 60, 30, 55, 34, 120, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.HOUNDSTONE, 9, false, false, false, "Ghost Dog Pokémon", PokemonType.GHOST, null, 2, 15, AbilityId.SAND_RUSH, AbilityId.NONE, AbilityId.FLUFFY, 488, 72, 101, 100, 50, 97, 68, 60, 50, 171, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.FLAMIGO, 9, false, false, false, "Synchronize Pokémon", PokemonType.FLYING, PokemonType.FIGHTING, 1.6, 37, AbilityId.SCRAPPY, AbilityId.TANGLED_FEET, AbilityId.COSTAR, 500, 82, 115, 74, 75, 64, 90, 100, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CETODDLE, 9, false, false, false, "Terra Whale Pokémon", PokemonType.ICE, null, 1.2, 45, AbilityId.THICK_FAT, AbilityId.SNOW_CLOAK, AbilityId.SHEER_FORCE, 334, 108, 68, 45, 30, 40, 43, 150, 50, 67, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.CETITAN, 9, false, false, false, "Terra Whale Pokémon", PokemonType.ICE, null, 4.5, 700, AbilityId.THICK_FAT, AbilityId.SLUSH_RUSH, AbilityId.SHEER_FORCE, 521, 170, 113, 65, 45, 55, 73, 50, 50, 182, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.VELUZA, 9, false, false, false, "Jettison Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 2.5, 90, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.SHARPNESS, 478, 90, 102, 73, 78, 65, 70, 100, 50, 167, GrowthRate.FAST, 50, false), + new PokemonSpecies(SpeciesId.DONDOZO, 9, false, false, false, "Big Catfish Pokémon", PokemonType.WATER, null, 12, 220, AbilityId.UNAWARE, AbilityId.OBLIVIOUS, AbilityId.WATER_VEIL, 530, 150, 100, 115, 65, 65, 35, 25, 50, 265, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.TATSUGIRI, 9, false, false, false, "Mimicry Pokémon", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, AbilityId.COMMANDER, AbilityId.NONE, AbilityId.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, GrowthRate.MEDIUM_SLOW, 50, false, false, + new PokemonForm("Curly Form", "curly", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, AbilityId.COMMANDER, AbilityId.NONE, AbilityId.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), + new PokemonForm("Droopy Form", "droopy", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, AbilityId.COMMANDER, AbilityId.NONE, AbilityId.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), + new PokemonForm("Stretchy Form", "stretchy", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, AbilityId.COMMANDER, AbilityId.NONE, AbilityId.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), + ), + new PokemonSpecies(SpeciesId.ANNIHILAPE, 9, false, false, false, "Rage Monkey Pokémon", PokemonType.FIGHTING, PokemonType.GHOST, 1.2, 56, AbilityId.VITAL_SPIRIT, AbilityId.INNER_FOCUS, AbilityId.DEFIANT, 535, 110, 115, 80, 50, 90, 90, 45, 50, 268, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.CLODSIRE, 9, false, false, false, "Spiny Fish Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.8, 223, AbilityId.POISON_POINT, AbilityId.WATER_ABSORB, AbilityId.UNAWARE, 430, 130, 75, 60, 45, 100, 20, 90, 50, 151, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.FARIGIRAF, 9, false, false, false, "Long Neck Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 3.2, 160, AbilityId.CUD_CHEW, AbilityId.ARMOR_TAIL, AbilityId.SAP_SIPPER, 520, 120, 90, 70, 110, 70, 60, 45, 50, 260, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.DUDUNSPARCE, 9, false, false, false, "Land Snake Pokémon", PokemonType.NORMAL, null, 3.6, 39.2, AbilityId.SERENE_GRACE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Two-Segment Form", "two-segment", PokemonType.NORMAL, null, 3.6, 39.2, AbilityId.SERENE_GRACE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182, false, ""), + new PokemonForm("Three-Segment Form", "three-segment", PokemonType.NORMAL, null, 4.5, 47.4, AbilityId.SERENE_GRACE, AbilityId.RUN_AWAY, AbilityId.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182), + ), + new PokemonSpecies(SpeciesId.KINGAMBIT, 9, false, false, false, "Big Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 2, 120, AbilityId.DEFIANT, AbilityId.SUPREME_OVERLORD, AbilityId.PRESSURE, 550, 100, 135, 120, 60, 85, 50, 25, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GREAT_TUSK, 9, false, false, false, "Paradox Pokémon", PokemonType.GROUND, PokemonType.FIGHTING, 2.2, 320, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 115, 131, 131, 53, 53, 87, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SCREAM_TAIL, 9, false, false, false, "Paradox Pokémon", PokemonType.FAIRY, PokemonType.PSYCHIC, 1.2, 8, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 115, 65, 99, 65, 115, 111, 50, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.BRUTE_BONNET, 9, false, false, false, "Paradox Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.2, 21, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 111, 127, 99, 79, 99, 55, 50, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.FLUTTER_MANE, 9, false, false, false, "Paradox Pokémon", PokemonType.GHOST, PokemonType.FAIRY, 1.4, 4, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 55, 55, 55, 135, 135, 135, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SLITHER_WING, 9, false, false, false, "Paradox Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 3.2, 92, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 85, 135, 79, 85, 105, 81, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SANDY_SHOCKS, 9, false, false, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.GROUND, 2.3, 60, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 570, 85, 81, 97, 121, 85, 101, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_TREADS, 9, false, false, false, "Paradox Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.9, 240, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 90, 112, 120, 72, 70, 106, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_BUNDLE, 9, false, false, false, "Paradox Pokémon", PokemonType.ICE, PokemonType.WATER, 0.6, 11, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 56, 80, 114, 124, 60, 136, 50, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_HANDS, 9, false, false, false, "Paradox Pokémon", PokemonType.FIGHTING, PokemonType.ELECTRIC, 1.8, 380.7, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 154, 140, 108, 50, 68, 50, 50, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_JUGULIS, 9, false, false, false, "Paradox Pokémon", PokemonType.DARK, PokemonType.FLYING, 1.3, 111, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 94, 80, 86, 122, 80, 108, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_MOTH, 9, false, false, false, "Paradox Pokémon", PokemonType.FIRE, PokemonType.POISON, 1.2, 36, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 80, 70, 60, 140, 110, 110, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_THORNS, 9, false, false, false, "Paradox Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1.6, 303, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 570, 100, 134, 110, 70, 84, 72, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.FRIGIBAX, 9, false, false, false, "Ice Fin Pokémon", PokemonType.DRAGON, PokemonType.ICE, 0.5, 17, AbilityId.THERMAL_EXCHANGE, AbilityId.NONE, AbilityId.ICE_BODY, 320, 65, 75, 45, 35, 45, 55, 45, 50, 64, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.ARCTIBAX, 9, false, false, false, "Ice Fin Pokémon", PokemonType.DRAGON, PokemonType.ICE, 0.8, 30, AbilityId.THERMAL_EXCHANGE, AbilityId.NONE, AbilityId.ICE_BODY, 423, 90, 95, 66, 45, 65, 62, 25, 50, 148, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.BAXCALIBUR, 9, false, false, false, "Ice Dragon Pokémon", PokemonType.DRAGON, PokemonType.ICE, 2.1, 210, AbilityId.THERMAL_EXCHANGE, AbilityId.NONE, AbilityId.ICE_BODY, 600, 115, 145, 92, 75, 86, 87, 10, 50, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.GIMMIGHOUL, 9, false, false, false, "Coin Chest Pokémon", PokemonType.GHOST, null, 0.3, 5, AbilityId.RATTLED, AbilityId.NONE, AbilityId.NONE, 300, 45, 30, 70, 75, 70, 10, 45, 50, 60, GrowthRate.SLOW, null, false, false, + new PokemonForm("Chest Form", "chest", PokemonType.GHOST, null, 0.3, 5, AbilityId.RATTLED, AbilityId.NONE, AbilityId.NONE, 300, 45, 30, 70, 75, 70, 10, 45, 50, 60, false, "", true), + new PokemonForm("Roaming Form", "roaming", PokemonType.GHOST, null, 0.1, 1, AbilityId.RUN_AWAY, AbilityId.NONE, AbilityId.NONE, 300, 45, 30, 25, 75, 45, 80, 45, 50, 60, false, null, true), + ), + new PokemonSpecies(SpeciesId.GHOLDENGO, 9, false, false, false, "Coin Entity Pokémon", PokemonType.STEEL, PokemonType.GHOST, 1.2, 30, AbilityId.GOOD_AS_GOLD, AbilityId.NONE, AbilityId.NONE, 550, 87, 60, 95, 133, 91, 84, 45, 50, 275, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.WO_CHIEN, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.GRASS, 1.5, 74.2, AbilityId.TABLETS_OF_RUIN, AbilityId.NONE, AbilityId.NONE, 570, 85, 85, 100, 95, 135, 70, 6, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.CHIEN_PAO, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.ICE, 1.9, 152.2, AbilityId.SWORD_OF_RUIN, AbilityId.NONE, AbilityId.NONE, 570, 80, 120, 80, 90, 65, 135, 6, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.TING_LU, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.GROUND, 2.7, 699.7, AbilityId.VESSEL_OF_RUIN, AbilityId.NONE, AbilityId.NONE, 570, 155, 110, 125, 55, 80, 45, 6, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.CHI_YU, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.FIRE, 0.4, 4.9, AbilityId.BEADS_OF_RUIN, AbilityId.NONE, AbilityId.NONE, 570, 55, 80, 80, 135, 120, 100, 6, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ROARING_MOON, 9, false, false, false, "Paradox Pokémon", PokemonType.DRAGON, PokemonType.DARK, 2, 380, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 590, 105, 139, 71, 55, 101, 119, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_VALIANT, 9, false, false, false, "Paradox Pokémon", PokemonType.FAIRY, PokemonType.FIGHTING, 1.4, 35, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 590, 74, 130, 90, 120, 60, 116, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.KORAIDON, 9, false, true, false, "Paradox Pokémon", PokemonType.FIGHTING, PokemonType.DRAGON, 2.5, 303, AbilityId.ORICHALCUM_PULSE, AbilityId.NONE, AbilityId.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335, GrowthRate.SLOW, null, false, false, + new PokemonForm("Apex Build", "apex-build", PokemonType.FIGHTING, PokemonType.DRAGON, 2.5, 303, AbilityId.ORICHALCUM_PULSE, AbilityId.NONE, AbilityId.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335, false, null, true), + ), + new PokemonSpecies(SpeciesId.MIRAIDON, 9, false, true, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 3.5, 240, AbilityId.HADRON_ENGINE, AbilityId.NONE, AbilityId.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335, GrowthRate.SLOW, null, false, false, + new PokemonForm("Ultimate Mode", "ultimate-mode", PokemonType.ELECTRIC, PokemonType.DRAGON, 3.5, 240, AbilityId.HADRON_ENGINE, AbilityId.NONE, AbilityId.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335, false, null, true), + ), + new PokemonSpecies(SpeciesId.WALKING_WAKE, 9, false, false, false, "Paradox Pokémon", PokemonType.WATER, PokemonType.DRAGON, 3.5, 280, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 590, 99, 83, 91, 125, 83, 109, 10, 0, 295, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Gouging Fire and Raging Bolt + new PokemonSpecies(SpeciesId.IRON_LEAVES, 9, false, false, false, "Paradox Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 1.5, 125, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 590, 90, 130, 88, 70, 108, 104, 10, 0, 295, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Iron Boulder and Iron Crown + new PokemonSpecies(SpeciesId.DIPPLIN, 9, false, false, false, "Candy Apple Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 4.4, AbilityId.SUPERSWEET_SYRUP, AbilityId.GLUTTONY, AbilityId.STICKY_HOLD, 485, 80, 80, 110, 95, 80, 40, 45, 50, 170, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.POLTCHAGEIST, 9, false, false, false, "Matcha Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, GrowthRate.SLOW, null, false, false, + new PokemonForm("Counterfeit Form", "counterfeit", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, null, true), + new PokemonForm("Artisan Form", "artisan", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, null, false, true), + ), + new PokemonSpecies(SpeciesId.SINISTCHA, 9, false, false, false, "Matcha Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178, GrowthRate.SLOW, null, false, false, + new PokemonForm("Unremarkable Form", "unremarkable", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178), + new PokemonForm("Masterpiece Form", "masterpiece", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, AbilityId.HOSPITALITY, AbilityId.NONE, AbilityId.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178, false, null, false, true), + ), + new PokemonSpecies(SpeciesId.OKIDOGI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 1.8, 92.2, AbilityId.TOXIC_CHAIN, AbilityId.NONE, AbilityId.GUARD_DOG, 555, 88, 128, 115, 58, 86, 80, 3, 0, 276, GrowthRate.SLOW, 100, false), + new PokemonSpecies(SpeciesId.MUNKIDORI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1, 12.2, AbilityId.TOXIC_CHAIN, AbilityId.NONE, AbilityId.FRISK, 555, 88, 75, 66, 130, 90, 106, 3, 0, 276, GrowthRate.SLOW, 100, false), + new PokemonSpecies(SpeciesId.FEZANDIPITI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.FAIRY, 1.4, 30.1, AbilityId.TOXIC_CHAIN, AbilityId.NONE, AbilityId.TECHNICIAN, 555, 88, 91, 82, 70, 125, 99, 3, 0, 276, GrowthRate.SLOW, 100, false), + new PokemonSpecies(SpeciesId.OGERPON, 9, true, false, false, "Mask Pokémon", PokemonType.GRASS, null, 1.2, 39.8, AbilityId.DEFIANT, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275, GrowthRate.SLOW, 0, false, false, + new PokemonForm("Teal Mask", "teal-mask", PokemonType.GRASS, null, 1.2, 39.8, AbilityId.DEFIANT, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275, false, null, true), + new PokemonForm("Wellspring Mask", "wellspring-mask", PokemonType.GRASS, PokemonType.WATER, 1.2, 39.8, AbilityId.WATER_ABSORB, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Hearthflame Mask", "hearthflame-mask", PokemonType.GRASS, PokemonType.FIRE, 1.2, 39.8, AbilityId.MOLD_BREAKER, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Cornerstone Mask", "cornerstone-mask", PokemonType.GRASS, PokemonType.ROCK, 1.2, 39.8, AbilityId.STURDY, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Teal Mask Terastallized", "teal-mask-tera", PokemonType.GRASS, null, 1.2, 39.8, AbilityId.EMBODY_ASPECT_TEAL, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Wellspring Mask Terastallized", "wellspring-mask-tera", PokemonType.GRASS, PokemonType.WATER, 1.2, 39.8, AbilityId.EMBODY_ASPECT_WELLSPRING, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Hearthflame Mask Terastallized", "hearthflame-mask-tera", PokemonType.GRASS, PokemonType.FIRE, 1.2, 39.8, AbilityId.EMBODY_ASPECT_HEARTHFLAME, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Cornerstone Mask Terastallized", "cornerstone-mask-tera", PokemonType.GRASS, PokemonType.ROCK, 1.2, 39.8, AbilityId.EMBODY_ASPECT_CORNERSTONE, AbilityId.NONE, AbilityId.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + ), + new PokemonSpecies(SpeciesId.ARCHALUDON, 9, false, false, false, "Alloy Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 2, 60, AbilityId.STAMINA, AbilityId.STURDY, AbilityId.STALWART, 600, 90, 105, 130, 125, 65, 85, 10, 50, 300, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HYDRAPPLE, 9, false, false, false, "Apple Hydra Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 1.8, 93, AbilityId.SUPERSWEET_SYRUP, AbilityId.REGENERATOR, AbilityId.STICKY_HOLD, 540, 106, 80, 110, 120, 80, 44, 10, 50, 270, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(SpeciesId.GOUGING_FIRE, 9, false, false, false, "Paradox Pokémon", PokemonType.FIRE, PokemonType.DRAGON, 3.5, 590, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 590, 105, 115, 121, 65, 93, 91, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.RAGING_BOLT, 9, false, false, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 5.2, 480, AbilityId.PROTOSYNTHESIS, AbilityId.NONE, AbilityId.NONE, 590, 125, 73, 91, 137, 89, 75, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_BOULDER, 9, false, false, false, "Paradox Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1.5, 162.5, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 590, 90, 120, 80, 68, 108, 124, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.IRON_CROWN, 9, false, false, false, "Paradox Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 156, AbilityId.QUARK_DRIVE, AbilityId.NONE, AbilityId.NONE, 590, 90, 72, 100, 122, 108, 98, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.TERAPAGOS, 9, false, true, false, "Tera Pokémon", PokemonType.NORMAL, null, 0.2, 6.5, AbilityId.TERA_SHIFT, AbilityId.NONE, AbilityId.NONE, 450, 90, 65, 85, 65, 85, 60, 5, 50, 90, GrowthRate.SLOW, 50, false, false, + new PokemonForm("Normal Form", "", PokemonType.NORMAL, null, 0.2, 6.5, AbilityId.TERA_SHIFT, AbilityId.NONE, AbilityId.NONE, 450, 90, 65, 85, 65, 85, 60, 5, 50, 90, false, null, true), + new PokemonForm("Terastal Form", "terastal", PokemonType.NORMAL, null, 0.3, 16, AbilityId.TERA_SHELL, AbilityId.NONE, AbilityId.NONE, 600, 95, 95, 110, 105, 110, 85, 5, 50, 120), + new PokemonForm("Stellar Form", "stellar", PokemonType.NORMAL, null, 1.7, 77, AbilityId.TERAFORM_ZERO, AbilityId.NONE, AbilityId.NONE, 700, 160, 105, 110, 130, 110, 85, 5, 50, 140), + ), + new PokemonSpecies(SpeciesId.PECHARUNT, 9, false, false, true, "Subjugation Pokémon", PokemonType.POISON, PokemonType.GHOST, 0.3, 0.3, AbilityId.POISON_PUPPETEER, AbilityId.NONE, AbilityId.NONE, 600, 88, 88, 160, 88, 88, 88, 3, 0, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.ALOLA_RATTATA, 7, false, false, false, "Mouse Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.3, 3.8, AbilityId.GLUTTONY, AbilityId.HUSTLE, AbilityId.THICK_FAT, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_RATICATE, 7, false, false, false, "Mouse Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.7, 25.5, AbilityId.GLUTTONY, AbilityId.HUSTLE, AbilityId.THICK_FAT, 413, 75, 71, 70, 40, 80, 77, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_RAICHU, 7, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, PokemonType.PSYCHIC, 0.7, 21, AbilityId.SURGE_SURFER, AbilityId.NONE, AbilityId.NONE, 485, 60, 85, 50, 95, 85, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_SANDSHREW, 7, false, false, false, "Mouse Pokémon", PokemonType.ICE, PokemonType.STEEL, 0.7, 40, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.SLUSH_RUSH, 300, 50, 75, 90, 10, 35, 40, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_SANDSLASH, 7, false, false, false, "Mouse Pokémon", PokemonType.ICE, PokemonType.STEEL, 1.2, 55, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.SLUSH_RUSH, 450, 75, 100, 120, 25, 65, 65, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_VULPIX, 7, false, false, false, "Fox Pokémon", PokemonType.ICE, null, 0.6, 9.9, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.SNOW_WARNING, 299, 38, 41, 40, 50, 65, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 25, false), + new PokemonSpecies(SpeciesId.ALOLA_NINETALES, 7, false, false, false, "Fox Pokémon", PokemonType.ICE, PokemonType.FAIRY, 1.1, 19.9, AbilityId.SNOW_CLOAK, AbilityId.NONE, AbilityId.SNOW_WARNING, 505, 73, 67, 75, 81, 100, 109, 75, 50, 177, GrowthRate.MEDIUM_FAST, 25, false), + new PokemonSpecies(SpeciesId.ALOLA_DIGLETT, 7, false, false, false, "Mole Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.2, 1, AbilityId.SAND_VEIL, AbilityId.TANGLING_HAIR, AbilityId.SAND_FORCE, 265, 10, 55, 30, 35, 45, 90, 255, 50, 53, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_DUGTRIO, 7, false, false, false, "Mole Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 66.6, AbilityId.SAND_VEIL, AbilityId.TANGLING_HAIR, AbilityId.SAND_FORCE, 425, 35, 100, 60, 50, 70, 110, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_MEOWTH, 7, false, false, false, "Scratch Cat Pokémon", PokemonType.DARK, null, 0.4, 4.2, AbilityId.PICKUP, AbilityId.TECHNICIAN, AbilityId.RATTLED, 290, 40, 35, 35, 50, 40, 90, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_PERSIAN, 7, false, false, false, "Classy Cat Pokémon", PokemonType.DARK, null, 1.1, 33, AbilityId.FUR_COAT, AbilityId.TECHNICIAN, AbilityId.RATTLED, 440, 65, 60, 60, 75, 65, 115, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_GEODUDE, 7, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 0.4, 20.3, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.GALVANIZE, 300, 40, 80, 100, 30, 30, 20, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_GRAVELER, 7, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1, 110, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.GALVANIZE, 390, 55, 95, 115, 45, 45, 35, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_GOLEM, 7, false, false, false, "Megaton Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1.7, 316, AbilityId.MAGNET_PULL, AbilityId.STURDY, AbilityId.GALVANIZE, 495, 80, 120, 130, 55, 65, 45, 45, 70, 223, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_GRIMER, 7, false, false, false, "Sludge Pokémon", PokemonType.POISON, PokemonType.DARK, 0.7, 42, AbilityId.POISON_TOUCH, AbilityId.GLUTTONY, AbilityId.POWER_OF_ALCHEMY, 325, 80, 80, 50, 40, 50, 25, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_MUK, 7, false, false, false, "Sludge Pokémon", PokemonType.POISON, PokemonType.DARK, 1, 52, AbilityId.POISON_TOUCH, AbilityId.GLUTTONY, AbilityId.POWER_OF_ALCHEMY, 500, 105, 105, 75, 65, 100, 50, 75, 70, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_EXEGGUTOR, 7, false, false, false, "Coconut Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 10.9, 415.6, AbilityId.FRISK, AbilityId.NONE, AbilityId.HARVEST, 530, 95, 105, 85, 125, 75, 45, 45, 50, 186, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.ALOLA_MAROWAK, 7, false, false, false, "Bone Keeper Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1, 34, AbilityId.CURSED_BODY, AbilityId.LIGHTNING_ROD, AbilityId.ROCK_HEAD, 425, 60, 80, 110, 50, 80, 45, 75, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.ETERNAL_FLOETTE, 6, true, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.2, 0.9, AbilityId.FLOWER_VEIL, AbilityId.NONE, AbilityId.SYMBIOSIS, 551, 74, 65, 67, 125, 128, 92, 120, 70, 243, GrowthRate.MEDIUM_FAST, 0, false), //Marked as Sub-Legend, for casing purposes + new PokemonSpecies(SpeciesId.GALAR_MEOWTH, 8, false, false, false, "Scratch Cat Pokémon", PokemonType.STEEL, null, 0.4, 7.5, AbilityId.PICKUP, AbilityId.TOUGH_CLAWS, AbilityId.UNNERVE, 290, 50, 65, 55, 40, 40, 40, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_PONYTA, 8, false, false, false, "Fire Horse Pokémon", PokemonType.PSYCHIC, null, 0.8, 24, AbilityId.RUN_AWAY, AbilityId.PASTEL_VEIL, AbilityId.ANTICIPATION, 410, 50, 85, 55, 65, 65, 90, 190, 50, 82, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_RAPIDASH, 8, false, false, false, "Fire Horse Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.7, 80, AbilityId.RUN_AWAY, AbilityId.PASTEL_VEIL, AbilityId.ANTICIPATION, 500, 65, 100, 70, 80, 80, 105, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_SLOWPOKE, 8, false, false, false, "Dopey Pokémon", PokemonType.PSYCHIC, null, 1.2, 36, AbilityId.GLUTTONY, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 315, 90, 65, 65, 40, 40, 15, 190, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_SLOWBRO, 8, false, false, false, "Hermit Crab Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1.6, 70.5, AbilityId.QUICK_DRAW, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 100, 95, 100, 70, 30, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_FARFETCHD, 8, false, false, false, "Wild Duck Pokémon", PokemonType.FIGHTING, null, 0.8, 42, AbilityId.STEADFAST, AbilityId.NONE, AbilityId.SCRAPPY, 377, 52, 95, 55, 58, 62, 55, 45, 50, 132, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_WEEZING, 8, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, PokemonType.FAIRY, 3, 16, AbilityId.LEVITATE, AbilityId.NEUTRALIZING_GAS, AbilityId.MISTY_SURGE, 490, 65, 90, 120, 85, 70, 60, 60, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_MR_MIME, 8, false, false, false, "Barrier Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.4, 56.8, AbilityId.VITAL_SPIRIT, AbilityId.SCREEN_CLEANER, AbilityId.ICE_BODY, 460, 50, 65, 65, 90, 90, 100, 45, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_ARTICUNO, 8, true, false, false, "Freeze Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.7, 50.9, AbilityId.COMPETITIVE, AbilityId.NONE, AbilityId.NONE, 580, 90, 85, 85, 125, 100, 95, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.GALAR_ZAPDOS, 8, true, false, false, "Electric Pokémon", PokemonType.FIGHTING, PokemonType.FLYING, 1.6, 58.2, AbilityId.DEFIANT, AbilityId.NONE, AbilityId.NONE, 580, 90, 125, 90, 85, 90, 100, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.GALAR_MOLTRES, 8, true, false, false, "Flame Pokémon", PokemonType.DARK, PokemonType.FLYING, 2, 66, AbilityId.BERSERK, AbilityId.NONE, AbilityId.NONE, 580, 90, 85, 90, 100, 125, 90, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.GALAR_SLOWKING, 8, false, false, false, "Royal Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1.8, 79.5, AbilityId.CURIOUS_MEDICINE, AbilityId.OWN_TEMPO, AbilityId.REGENERATOR, 490, 95, 65, 80, 110, 110, 30, 70, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_CORSOLA, 8, false, false, false, "Coral Pokémon", PokemonType.GHOST, null, 0.6, 0.5, AbilityId.WEAK_ARMOR, AbilityId.NONE, AbilityId.CURSED_BODY, 410, 60, 55, 100, 65, 100, 30, 60, 50, 144, GrowthRate.FAST, 25, false), + new PokemonSpecies(SpeciesId.GALAR_ZIGZAGOON, 8, false, false, false, "Tiny Raccoon Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.4, 17.5, AbilityId.PICKUP, AbilityId.GLUTTONY, AbilityId.QUICK_FEET, 240, 38, 30, 41, 30, 41, 60, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_LINOONE, 8, false, false, false, "Rushing Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.5, 32.5, AbilityId.PICKUP, AbilityId.GLUTTONY, AbilityId.QUICK_FEET, 420, 78, 70, 61, 50, 61, 100, 90, 50, 147, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_DARUMAKA, 8, false, false, false, "Zen Charm Pokémon", PokemonType.ICE, null, 0.7, 40, AbilityId.HUSTLE, AbilityId.NONE, AbilityId.INNER_FOCUS, 315, 70, 90, 45, 15, 45, 50, 120, 50, 63, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.GALAR_DARMANITAN, 8, false, false, false, "Blazing Pokémon", PokemonType.ICE, null, 1.7, 120, AbilityId.GORILLA_TACTICS, AbilityId.NONE, AbilityId.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Standard Mode", "", PokemonType.ICE, null, 1.7, 120, AbilityId.GORILLA_TACTICS, AbilityId.NONE, AbilityId.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, false, null, true), + new PokemonForm("Zen Mode", "zen", PokemonType.ICE, PokemonType.FIRE, 1.7, 120, AbilityId.GORILLA_TACTICS, AbilityId.NONE, AbilityId.ZEN_MODE, 540, 105, 160, 55, 30, 55, 135, 60, 50, 189), + ), + new PokemonSpecies(SpeciesId.GALAR_YAMASK, 8, false, false, false, "Spirit Pokémon", PokemonType.GROUND, PokemonType.GHOST, 0.5, 1.5, AbilityId.WANDERING_SPIRIT, AbilityId.NONE, AbilityId.NONE, 303, 38, 55, 85, 30, 65, 30, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.GALAR_STUNFISK, 8, false, false, false, "Trap Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 20.5, AbilityId.MIMICRY, AbilityId.NONE, AbilityId.NONE, 471, 109, 81, 99, 66, 84, 32, 75, 70, 165, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HISUI_GROWLITHE, 8, false, false, false, "Puppy Pokémon", PokemonType.FIRE, PokemonType.ROCK, 0.8, 22.7, AbilityId.INTIMIDATE, AbilityId.FLASH_FIRE, AbilityId.ROCK_HEAD, 350, 60, 75, 45, 65, 50, 55, 190, 50, 70, GrowthRate.SLOW, 75, false), + new PokemonSpecies(SpeciesId.HISUI_ARCANINE, 8, false, false, false, "Legendary Pokémon", PokemonType.FIRE, PokemonType.ROCK, 2, 168, AbilityId.INTIMIDATE, AbilityId.FLASH_FIRE, AbilityId.ROCK_HEAD, 555, 95, 115, 80, 95, 80, 90, 85, 50, 194, GrowthRate.SLOW, 75, false), + new PokemonSpecies(SpeciesId.HISUI_VOLTORB, 8, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, PokemonType.GRASS, 0.5, 13, AbilityId.SOUNDPROOF, AbilityId.STATIC, AbilityId.AFTERMATH, 330, 40, 30, 50, 55, 55, 100, 190, 80, 66, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.HISUI_ELECTRODE, 8, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, PokemonType.GRASS, 1.2, 81, AbilityId.SOUNDPROOF, AbilityId.STATIC, AbilityId.AFTERMATH, 490, 60, 50, 70, 80, 80, 150, 60, 70, 172, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(SpeciesId.HISUI_TYPHLOSION, 8, false, false, false, "Volcano Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 69.8, AbilityId.BLAZE, AbilityId.NONE, AbilityId.FRISK, 534, 73, 84, 78, 119, 85, 95, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.HISUI_QWILFISH, 8, false, false, false, "Balloon Pokémon", PokemonType.DARK, PokemonType.POISON, 0.5, 3.9, AbilityId.POISON_POINT, AbilityId.SWIFT_SWIM, AbilityId.INTIMIDATE, 440, 65, 95, 85, 55, 55, 85, 45, 50, 88, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HISUI_SNEASEL, 8, false, false, false, "Sharp Claw Pokémon", PokemonType.FIGHTING, PokemonType.POISON, 0.9, 27, AbilityId.INNER_FOCUS, AbilityId.KEEN_EYE, AbilityId.PICKPOCKET, 430, 55, 95, 55, 35, 75, 115, 60, 35, 86, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(SpeciesId.HISUI_SAMUROTT, 8, false, false, false, "Formidable Pokémon", PokemonType.WATER, PokemonType.DARK, 1.5, 58.2, AbilityId.TORRENT, AbilityId.NONE, AbilityId.SHARPNESS, 528, 90, 108, 80, 100, 65, 85, 45, 80, 238, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.HISUI_LILLIGANT, 8, false, false, false, "Flowering Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.2, 19.2, AbilityId.CHLOROPHYLL, AbilityId.HUSTLE, AbilityId.LEAF_GUARD, 480, 70, 105, 75, 50, 75, 105, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(SpeciesId.HISUI_ZORUA, 8, false, false, false, "Tricky Fox Pokémon", PokemonType.NORMAL, PokemonType.GHOST, 0.7, 12.5, AbilityId.ILLUSION, AbilityId.NONE, AbilityId.NONE, 330, 35, 60, 40, 85, 40, 70, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.HISUI_ZOROARK, 8, false, false, false, "Illusion Fox Pokémon", PokemonType.NORMAL, PokemonType.GHOST, 1.6, 83, AbilityId.ILLUSION, AbilityId.NONE, AbilityId.NONE, 510, 55, 100, 60, 125, 60, 110, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.HISUI_BRAVIARY, 8, false, false, false, "Valiant Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.7, 43.4, AbilityId.KEEN_EYE, AbilityId.SHEER_FORCE, AbilityId.TINTED_LENS, 510, 110, 83, 70, 112, 70, 65, 60, 50, 179, GrowthRate.SLOW, 100, false), + new PokemonSpecies(SpeciesId.HISUI_SLIGGOO, 8, false, false, false, "Soft Tissue Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 0.7, 68.5, AbilityId.SAP_SIPPER, AbilityId.SHELL_ARMOR, AbilityId.GOOEY, 452, 58, 75, 83, 83, 113, 40, 45, 35, 158, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HISUI_GOODRA, 8, false, false, false, "Dragon Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 1.7, 334.1, AbilityId.SAP_SIPPER, AbilityId.SHELL_ARMOR, AbilityId.GOOEY, 600, 80, 100, 100, 110, 150, 60, 45, 35, 270, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.HISUI_AVALUGG, 8, false, false, false, "Iceberg Pokémon", PokemonType.ICE, PokemonType.ROCK, 1.4, 262.4, AbilityId.STRONG_JAW, AbilityId.ICE_BODY, AbilityId.STURDY, 514, 95, 127, 184, 34, 36, 38, 55, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.HISUI_DECIDUEYE, 8, false, false, false, "Arrow Quill Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.6, 37, AbilityId.OVERGROW, AbilityId.NONE, AbilityId.SCRAPPY, 530, 88, 112, 80, 95, 95, 60, 45, 50, 239, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(SpeciesId.PALDEA_TAUROS, 9, false, false, false, "Wild Bull Pokémon", PokemonType.FIGHTING, null, 1.4, 115, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, GrowthRate.SLOW, 100, false, false, + new PokemonForm("Combat Breed", "combat", PokemonType.FIGHTING, null, 1.4, 115, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, "", true), + new PokemonForm("Blaze Breed", "blaze", PokemonType.FIGHTING, PokemonType.FIRE, 1.4, 85, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, null, true), + new PokemonForm("Aqua Breed", "aqua", PokemonType.FIGHTING, PokemonType.WATER, 1.4, 110, AbilityId.INTIMIDATE, AbilityId.ANGER_POINT, AbilityId.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, null, true), + ), + new PokemonSpecies(SpeciesId.PALDEA_WOOPER, 9, false, false, false, "Water Fish Pokémon", PokemonType.POISON, PokemonType.GROUND, 0.4, 11, AbilityId.POISON_POINT, AbilityId.WATER_ABSORB, AbilityId.UNAWARE, 210, 55, 45, 45, 25, 25, 15, 255, 50, 42, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BLOODMOON_URSALUNA, 9, true, false, false, "Peat Pokémon", PokemonType.GROUND, PokemonType.NORMAL, 2.7, 333, AbilityId.MINDS_EYE, AbilityId.NONE, AbilityId.NONE, 555, 113, 70, 120, 135, 65, 52, 75, 50, 278, GrowthRate.MEDIUM_FAST, 50, false), //Marked as Sub-Legend, for casing purposes ); } diff --git a/src/data/trainers/evil-admin-trainer-pools.ts b/src/data/trainers/evil-admin-trainer-pools.ts index fe68cf50c9c..7c0336e784e 100644 --- a/src/data/trainers/evil-admin-trainer-pools.ts +++ b/src/data/trainers/evil-admin-trainer-pools.ts @@ -1,438 +1,443 @@ import type { TrainerTierPools } from "#app/data/trainers/typedefs"; import { TrainerPoolTier } from "#enums/trainer-pool-tier"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; /** Team Rocket's admin trainer pool. */ const ROCKET: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.RATTATA, - Species.SPEAROW, - Species.EKANS, - Species.VILEPLUME, - Species.DIGLETT, - Species.GROWLITHE, - Species.GRIMER, - Species.DROWZEE, - Species.VOLTORB, - Species.EXEGGCUTE, - Species.CUBONE, - Species.KOFFING, - Species.MAGIKARP, - Species.ZUBAT, - Species.ONIX, - Species.HOUNDOUR, - Species.MURKROW, + SpeciesId.RATTATA, + SpeciesId.SPEAROW, + SpeciesId.EKANS, + SpeciesId.VILEPLUME, + SpeciesId.DIGLETT, + SpeciesId.GROWLITHE, + SpeciesId.GRIMER, + SpeciesId.DROWZEE, + SpeciesId.VOLTORB, + SpeciesId.EXEGGCUTE, + SpeciesId.CUBONE, + SpeciesId.KOFFING, + SpeciesId.MAGIKARP, + SpeciesId.ZUBAT, + SpeciesId.ONIX, + SpeciesId.HOUNDOUR, + SpeciesId.MURKROW, ], [TrainerPoolTier.UNCOMMON]: [ - Species.ABRA, - Species.GASTLY, - Species.OMANYTE, - Species.KABUTO, - Species.PORYGON, - Species.MANKEY, - Species.SCYTHER, - Species.ELEKID, - Species.MAGBY, - Species.ALOLA_SANDSHREW, - Species.ALOLA_MEOWTH, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRIMER, - Species.PALDEA_TAUROS, + SpeciesId.ABRA, + SpeciesId.GASTLY, + SpeciesId.OMANYTE, + SpeciesId.KABUTO, + SpeciesId.PORYGON, + SpeciesId.MANKEY, + SpeciesId.SCYTHER, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRIMER, + SpeciesId.PALDEA_TAUROS, ], - [TrainerPoolTier.RARE]: [Species.DRATINI, Species.LARVITAR], + [TrainerPoolTier.RARE]: [SpeciesId.DRATINI, SpeciesId.LARVITAR], }; /** Team Magma's admin trainer pool */ const MAGMA: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.DIGLETT, - Species.GROWLITHE, - Species.VULPIX, - Species.KOFFING, - Species.RHYHORN, - Species.SLUGMA, - Species.HOUNDOUR, - Species.POOCHYENA, - Species.TORKOAL, - Species.ZANGOOSE, - Species.SOLROCK, - Species.BALTOY, - Species.ROLYCOLY, + SpeciesId.DIGLETT, + SpeciesId.GROWLITHE, + SpeciesId.VULPIX, + SpeciesId.KOFFING, + SpeciesId.RHYHORN, + SpeciesId.SLUGMA, + SpeciesId.HOUNDOUR, + SpeciesId.POOCHYENA, + SpeciesId.TORKOAL, + SpeciesId.ZANGOOSE, + SpeciesId.SOLROCK, + SpeciesId.BALTOY, + SpeciesId.ROLYCOLY, ], [TrainerPoolTier.UNCOMMON]: [ - Species.MAGBY, - Species.TRAPINCH, - Species.LILEEP, - Species.ANORITH, - Species.GOLETT, - Species.FLETCHLING, - Species.SALANDIT, - Species.TURTONATOR, - Species.TOEDSCOOL, - Species.CAPSAKID, - Species.HISUI_GROWLITHE, + SpeciesId.MAGBY, + SpeciesId.TRAPINCH, + SpeciesId.LILEEP, + SpeciesId.ANORITH, + SpeciesId.GOLETT, + SpeciesId.FLETCHLING, + SpeciesId.SALANDIT, + SpeciesId.TURTONATOR, + SpeciesId.TOEDSCOOL, + SpeciesId.CAPSAKID, + SpeciesId.HISUI_GROWLITHE, ], - [TrainerPoolTier.RARE]: [Species.CHARCADET, Species.ARON], + [TrainerPoolTier.RARE]: [SpeciesId.CHARCADET, SpeciesId.ARON], }; const AQUA: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.TENTACOOL, - Species.GRIMER, - Species.AZURILL, - Species.CHINCHOU, - Species.REMORAID, - Species.POOCHYENA, - Species.LOTAD, - Species.WINGULL, - Species.WAILMER, - Species.SEVIPER, - Species.BARBOACH, - Species.CORPHISH, - Species.SPHEAL, - Species.CLAMPERL, + SpeciesId.TENTACOOL, + SpeciesId.GRIMER, + SpeciesId.AZURILL, + SpeciesId.CHINCHOU, + SpeciesId.REMORAID, + SpeciesId.POOCHYENA, + SpeciesId.LOTAD, + SpeciesId.WINGULL, + SpeciesId.WAILMER, + SpeciesId.SEVIPER, + SpeciesId.BARBOACH, + SpeciesId.CORPHISH, + SpeciesId.SPHEAL, + SpeciesId.CLAMPERL, ], [TrainerPoolTier.UNCOMMON]: [ - Species.MANTYKE, - Species.HORSEA, - Species.FEEBAS, - Species.TYMPOLE, - Species.SKRELP, - Species.WIMPOD, - Species.DHELMISE, - Species.ARROKUDA, - Species.CLOBBOPUS, - Species.HISUI_QWILFISH, - Species.WIGLETT, + SpeciesId.MANTYKE, + SpeciesId.HORSEA, + SpeciesId.FEEBAS, + SpeciesId.TYMPOLE, + SpeciesId.SKRELP, + SpeciesId.WIMPOD, + SpeciesId.DHELMISE, + SpeciesId.ARROKUDA, + SpeciesId.CLOBBOPUS, + SpeciesId.HISUI_QWILFISH, + SpeciesId.WIGLETT, ], - [TrainerPoolTier.RARE]: [Species.BASCULEGION, Species.DONDOZO], + [TrainerPoolTier.RARE]: [SpeciesId.BASCULEGION, SpeciesId.DONDOZO], }; const GALACTIC: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.ZUBAT, - Species.MAGNEMITE, - Species.RHYHORN, - Species.TANGELA, - Species.LICKITUNG, - Species.MAGIKARP, - Species.YANMA, - Species.MURKROW, - Species.SWINUB, - Species.ELEKID, - Species.MAGBY, - Species.BRONZOR, - Species.SKORUPI, + SpeciesId.ZUBAT, + SpeciesId.MAGNEMITE, + SpeciesId.RHYHORN, + SpeciesId.TANGELA, + SpeciesId.LICKITUNG, + SpeciesId.MAGIKARP, + SpeciesId.YANMA, + SpeciesId.MURKROW, + SpeciesId.SWINUB, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.BRONZOR, + SpeciesId.SKORUPI, ], [TrainerPoolTier.UNCOMMON]: [ - Species.ABRA, - Species.GLIGAR, - Species.SNEASEL, - Species.DUSKULL, - Species.DRIFLOON, - Species.CRANIDOS, - Species.SHIELDON, - Species.ROTOM, - Species.HISUI_QWILFISH, + SpeciesId.ABRA, + SpeciesId.GLIGAR, + SpeciesId.SNEASEL, + SpeciesId.DUSKULL, + SpeciesId.DRIFLOON, + SpeciesId.CRANIDOS, + SpeciesId.SHIELDON, + SpeciesId.ROTOM, + SpeciesId.HISUI_QWILFISH, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.SPIRITOMB, + SpeciesId.TEDDIURSA, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_LILLIGANT, ], - [TrainerPoolTier.RARE]: [Species.SPIRITOMB, Species.TEDDIURSA, Species.HISUI_SNEASEL, Species.HISUI_LILLIGANT], }; const PLASMA_ZINZOLIN: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.SNEASEL, - Species.SWINUB, - Species.SNORUNT, - Species.SNOVER, - Species.TIMBURR, - Species.TYMPOLE, - Species.SANDILE, - Species.DARUMAKA, - Species.VANILLITE, - Species.FOONGUS, - Species.FRILLISH, - Species.JOLTIK, - Species.FERROSEED, - Species.CUBCHOO, - Species.GALAR_DARUMAKA, + SpeciesId.SNEASEL, + SpeciesId.SWINUB, + SpeciesId.SNORUNT, + SpeciesId.SNOVER, + SpeciesId.TIMBURR, + SpeciesId.TYMPOLE, + SpeciesId.SANDILE, + SpeciesId.DARUMAKA, + SpeciesId.VANILLITE, + SpeciesId.FOONGUS, + SpeciesId.FRILLISH, + SpeciesId.JOLTIK, + SpeciesId.FERROSEED, + SpeciesId.CUBCHOO, + SpeciesId.GALAR_DARUMAKA, ], [TrainerPoolTier.UNCOMMON]: [ - Species.SPHEAL, - Species.DRILBUR, - Species.SIGILYPH, - Species.YAMASK, - Species.ZORUA, - Species.TYNAMO, - Species.MIENFOO, - Species.GOLETT, - Species.PAWNIARD, - Species.VULLABY, - Species.DURANT, - Species.BERGMITE, - Species.EISCUE, - Species.ALOLA_SANDSHREW, - Species.HISUI_ZORUA, + SpeciesId.SPHEAL, + SpeciesId.DRILBUR, + SpeciesId.SIGILYPH, + SpeciesId.YAMASK, + SpeciesId.ZORUA, + SpeciesId.TYNAMO, + SpeciesId.MIENFOO, + SpeciesId.GOLETT, + SpeciesId.PAWNIARD, + SpeciesId.VULLABY, + SpeciesId.DURANT, + SpeciesId.BERGMITE, + SpeciesId.EISCUE, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.HISUI_ZORUA, ], - [TrainerPoolTier.RARE]: [Species.DEINO, Species.FRIGIBAX, Species.HISUI_BRAVIARY], + [TrainerPoolTier.RARE]: [SpeciesId.DEINO, SpeciesId.FRIGIBAX, SpeciesId.HISUI_BRAVIARY], }; const PLASMA_COLRESS: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.MAGNEMITE, - Species.GRIMER, - Species.VOLTORB, - Species.PORYGON, - Species.BRONZOR, - Species.ROTOM, - Species.MUNNA, - Species.DWEBBLE, - Species.FERROSEED, - Species.ELGYEM, + SpeciesId.MAGNEMITE, + SpeciesId.GRIMER, + SpeciesId.VOLTORB, + SpeciesId.PORYGON, + SpeciesId.BRONZOR, + SpeciesId.ROTOM, + SpeciesId.MUNNA, + SpeciesId.DWEBBLE, + SpeciesId.FERROSEED, + SpeciesId.ELGYEM, ], [TrainerPoolTier.UNCOMMON]: [ - Species.BELDUM, - Species.SIGILYPH, - Species.TIRTOUGA, - Species.ARCHEN, - Species.TYNAMO, - Species.GOLETT, - Species.BLIPBUG, - Species.VAROOM, - Species.ALOLA_GRIMER, - Species.HISUI_VOLTORB, + SpeciesId.BELDUM, + SpeciesId.SIGILYPH, + SpeciesId.TIRTOUGA, + SpeciesId.ARCHEN, + SpeciesId.TYNAMO, + SpeciesId.GOLETT, + SpeciesId.BLIPBUG, + SpeciesId.VAROOM, + SpeciesId.ALOLA_GRIMER, + SpeciesId.HISUI_VOLTORB, ], - [TrainerPoolTier.RARE]: [Species.ELEKID, Species.MAGBY, Species.PAWNIARD, Species.DURALUDON], + [TrainerPoolTier.RARE]: [SpeciesId.ELEKID, SpeciesId.MAGBY, SpeciesId.PAWNIARD, SpeciesId.DURALUDON], }; const FLARE: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.ELECTRIKE, - Species.SKORUPI, - Species.PURRLOIN, - Species.FOONGUS, - Species.BUNNELBY, - Species.FLETCHLING, - Species.LITLEO, - Species.PANGORO, - Species.ESPURR, - Species.INKAY, - Species.CLAUNCHER, - Species.HELIOPTILE, + SpeciesId.ELECTRIKE, + SpeciesId.SKORUPI, + SpeciesId.PURRLOIN, + SpeciesId.FOONGUS, + SpeciesId.BUNNELBY, + SpeciesId.FLETCHLING, + SpeciesId.LITLEO, + SpeciesId.PANGORO, + SpeciesId.ESPURR, + SpeciesId.INKAY, + SpeciesId.CLAUNCHER, + SpeciesId.HELIOPTILE, ], [TrainerPoolTier.UNCOMMON]: [ - Species.HOUNDOUR, - Species.SNEASEL, - Species.LITWICK, - Species.HONEDGE, - Species.BINACLE, - Species.SKRELP, - Species.NOIBAT, - Species.PHANTUMP, - Species.PUMPKABOO, + SpeciesId.HOUNDOUR, + SpeciesId.SNEASEL, + SpeciesId.LITWICK, + SpeciesId.HONEDGE, + SpeciesId.BINACLE, + SpeciesId.SKRELP, + SpeciesId.NOIBAT, + SpeciesId.PHANTUMP, + SpeciesId.PUMPKABOO, ], - [TrainerPoolTier.RARE]: [Species.GOOMY, Species.HISUI_AVALUGG], + [TrainerPoolTier.RARE]: [SpeciesId.GOOMY, SpeciesId.HISUI_AVALUGG], }; const AETHER: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.ABRA, - Species.SLOWPOKE, - Species.MAGNEMITE, - Species.EXEGGUTOR, - Species.NATU, - Species.BALTOY, - Species.MIME_JR, - Species.ELGYEM, - Species.INKAY, - Species.BRUXISH, - Species.BLIPBUG, - Species.ALOLA_RAICHU, + SpeciesId.ABRA, + SpeciesId.SLOWPOKE, + SpeciesId.MAGNEMITE, + SpeciesId.EXEGGUTOR, + SpeciesId.NATU, + SpeciesId.BALTOY, + SpeciesId.MIME_JR, + SpeciesId.ELGYEM, + SpeciesId.INKAY, + SpeciesId.BRUXISH, + SpeciesId.BLIPBUG, + SpeciesId.ALOLA_RAICHU, ], [TrainerPoolTier.UNCOMMON]: [ - Species.RALTS, - Species.MEDITITE, - Species.BELDUM, - Species.SOLOSIS, - Species.HATENNA, - Species.STANTLER, - Species.GIRAFARIG, - Species.ALOLA_GRIMER, - Species.GALAR_SLOWPOKE, + SpeciesId.RALTS, + SpeciesId.MEDITITE, + SpeciesId.BELDUM, + SpeciesId.SOLOSIS, + SpeciesId.HATENNA, + SpeciesId.STANTLER, + SpeciesId.GIRAFARIG, + SpeciesId.ALOLA_GRIMER, + SpeciesId.GALAR_SLOWPOKE, ], - [TrainerPoolTier.RARE]: [Species.PORYGON, Species.ARMAROUGE], + [TrainerPoolTier.RARE]: [SpeciesId.PORYGON, SpeciesId.ARMAROUGE], }; const SKULL: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.GASTLY, - Species.KOFFING, - Species.ZUBAT, - Species.VENONAT, - Species.STUNKY, - Species.CROAGUNK, - Species.VENIPEDE, - Species.SCRAGGY, - Species.MAREANIE, - Species.FOMANTIS, - Species.ALOLA_GRIMER, + SpeciesId.GASTLY, + SpeciesId.KOFFING, + SpeciesId.ZUBAT, + SpeciesId.VENONAT, + SpeciesId.STUNKY, + SpeciesId.CROAGUNK, + SpeciesId.VENIPEDE, + SpeciesId.SCRAGGY, + SpeciesId.MAREANIE, + SpeciesId.FOMANTIS, + SpeciesId.ALOLA_GRIMER, ], [TrainerPoolTier.UNCOMMON]: [ - Species.NIDORAN_F, - Species.SKORUPI, - Species.PAWNIARD, - Species.VULLABY, - Species.TOXEL, - Species.GLIMMET, - Species.PALDEA_WOOPER, - Species.GALAR_SLOWPOKE, + SpeciesId.NIDORAN_F, + SpeciesId.SKORUPI, + SpeciesId.PAWNIARD, + SpeciesId.VULLABY, + SpeciesId.TOXEL, + SpeciesId.GLIMMET, + SpeciesId.PALDEA_WOOPER, + SpeciesId.GALAR_SLOWPOKE, ], - [TrainerPoolTier.RARE]: [Species.SKRELP, Species.HISUI_SNEASEL], + [TrainerPoolTier.RARE]: [SpeciesId.SKRELP, SpeciesId.HISUI_SNEASEL], }; const MACRO_COSMOS: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.VULPIX, - Species.FEEBAS, - Species.MAWILE, - Species.FROSLASS, - Species.GOTHITA, - Species.FLABEBE, - Species.SALANDIT, - Species.TSAREENA, - Species.SINISTEA, - Species.HATENNA, - Species.INDEEDEE, - Species.GALAR_PONYTA, + SpeciesId.VULPIX, + SpeciesId.FEEBAS, + SpeciesId.MAWILE, + SpeciesId.FROSLASS, + SpeciesId.GOTHITA, + SpeciesId.FLABEBE, + SpeciesId.SALANDIT, + SpeciesId.TSAREENA, + SpeciesId.SINISTEA, + SpeciesId.HATENNA, + SpeciesId.INDEEDEE, + SpeciesId.GALAR_PONYTA, ], [TrainerPoolTier.UNCOMMON]: [ - Species.TOGEPI, - Species.VULLABY, - Species.MAREANIE, - Species.CUFANT, - Species.TINKATINK, - Species.ALOLA_VULPIX, - Species.GALAR_CORSOLA, + SpeciesId.TOGEPI, + SpeciesId.VULLABY, + SpeciesId.MAREANIE, + SpeciesId.CUFANT, + SpeciesId.TINKATINK, + SpeciesId.ALOLA_VULPIX, + SpeciesId.GALAR_CORSOLA, ], - [TrainerPoolTier.RARE]: [Species.APPLIN, Species.HISUI_LILLIGANT], + [TrainerPoolTier.RARE]: [SpeciesId.APPLIN, SpeciesId.HISUI_LILLIGANT], }; const STAR_DARK: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.MURKROW, - Species.SEEDOT, - Species.SABLEYE, - Species.CACNEA, - Species.STUNKY, - Species.SANDILE, - Species.INKAY, - Species.NYMBLE, - Species.MASCHIFF, + SpeciesId.MURKROW, + SpeciesId.SEEDOT, + SpeciesId.SABLEYE, + SpeciesId.CACNEA, + SpeciesId.STUNKY, + SpeciesId.SANDILE, + SpeciesId.INKAY, + SpeciesId.NYMBLE, + SpeciesId.MASCHIFF, ], [TrainerPoolTier.UNCOMMON]: [ - Species.UMBREON, - Species.CORPHISH, - Species.SNEASEL, - Species.ZORUA, - Species.IMPIDIMP, - Species.BOMBIRDIER, - Species.GALAR_ZIGZAGOON, + SpeciesId.UMBREON, + SpeciesId.CORPHISH, + SpeciesId.SNEASEL, + SpeciesId.ZORUA, + SpeciesId.IMPIDIMP, + SpeciesId.BOMBIRDIER, + SpeciesId.GALAR_ZIGZAGOON, ], - [TrainerPoolTier.RARE]: [Species.DEINO, Species.SPRIGATITO], + [TrainerPoolTier.RARE]: [SpeciesId.DEINO, SpeciesId.SPRIGATITO], }; const STAR_FIRE: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.GROWLITHE, - Species.HOUNDOUR, - Species.NUMEL, - Species.TORKOAL, - Species.FLETCHLING, - Species.LITLEO, - Species.SIZZLIPEDE, - Species.ROLYCOLY, - Species.CAPSAKID, + SpeciesId.GROWLITHE, + SpeciesId.HOUNDOUR, + SpeciesId.NUMEL, + SpeciesId.TORKOAL, + SpeciesId.FLETCHLING, + SpeciesId.LITLEO, + SpeciesId.SIZZLIPEDE, + SpeciesId.ROLYCOLY, + SpeciesId.CAPSAKID, ], [TrainerPoolTier.UNCOMMON]: [ - Species.PONYTA, - Species.FLAREON, - Species.MAGBY, - Species.DARUMAKA, - Species.LITWICK, - Species.SALANDIT, - Species.TURTONATOR, + SpeciesId.PONYTA, + SpeciesId.FLAREON, + SpeciesId.MAGBY, + SpeciesId.DARUMAKA, + SpeciesId.LITWICK, + SpeciesId.SALANDIT, + SpeciesId.TURTONATOR, ], - [TrainerPoolTier.RARE]: [Species.LARVESTA, Species.FUECOCO], + [TrainerPoolTier.RARE]: [SpeciesId.LARVESTA, SpeciesId.FUECOCO], }; const STAR_POISON: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.GRIMER, - Species.VENONAT, - Species.SEVIPER, - Species.STUNKY, - Species.FOONGUS, - Species.MAREANIE, - Species.TOXEL, - Species.GRAFAIAI, - Species.PALDEA_WOOPER, + SpeciesId.GRIMER, + SpeciesId.VENONAT, + SpeciesId.SEVIPER, + SpeciesId.STUNKY, + SpeciesId.FOONGUS, + SpeciesId.MAREANIE, + SpeciesId.TOXEL, + SpeciesId.GRAFAIAI, + SpeciesId.PALDEA_WOOPER, ], [TrainerPoolTier.UNCOMMON]: [ - Species.ZUBAT, - Species.GASTLY, - Species.SKRELP, - Species.OVERQWIL, - Species.ALOLA_GRIMER, - Species.GALAR_SLOWPOKE, + SpeciesId.ZUBAT, + SpeciesId.GASTLY, + SpeciesId.SKRELP, + SpeciesId.OVERQWIL, + SpeciesId.ALOLA_GRIMER, + SpeciesId.GALAR_SLOWPOKE, ], - [TrainerPoolTier.RARE]: [Species.GLIMMET, Species.BULBASAUR], + [TrainerPoolTier.RARE]: [SpeciesId.GLIMMET, SpeciesId.BULBASAUR], }; const STAR_FAIRY: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.IGGLYBUFF, - Species.AZURILL, - Species.COTTONEE, - Species.FLABEBE, - Species.KLEFKI, - Species.CUTIEFLY, - Species.HATENNA, - Species.TINKATINK, + SpeciesId.IGGLYBUFF, + SpeciesId.AZURILL, + SpeciesId.COTTONEE, + SpeciesId.FLABEBE, + SpeciesId.KLEFKI, + SpeciesId.CUTIEFLY, + SpeciesId.HATENNA, + SpeciesId.TINKATINK, ], [TrainerPoolTier.UNCOMMON]: [ - Species.CLEFFA, - Species.TOGEPI, - Species.GARDEVOIR, - Species.SYLVEON, - Species.MIMIKYU, - Species.IMPIDIMP, - Species.ALOLA_VULPIX, + SpeciesId.CLEFFA, + SpeciesId.TOGEPI, + SpeciesId.GARDEVOIR, + SpeciesId.SYLVEON, + SpeciesId.MIMIKYU, + SpeciesId.IMPIDIMP, + SpeciesId.ALOLA_VULPIX, ], - [TrainerPoolTier.RARE]: [Species.GALAR_PONYTA, Species.POPPLIO], + [TrainerPoolTier.RARE]: [SpeciesId.GALAR_PONYTA, SpeciesId.POPPLIO], }; const STAR_FIGHTING: TrainerTierPools = { [TrainerPoolTier.COMMON]: [ - Species.TYROGUE, - Species.SHROOMISH, - Species.MAKUHITA, - Species.RIOLU, - Species.CROAGUNK, - Species.SCRAGGY, - Species.MIENFOO, - Species.PASSIMIAN, - Species.PAWMI, + SpeciesId.TYROGUE, + SpeciesId.SHROOMISH, + SpeciesId.MAKUHITA, + SpeciesId.RIOLU, + SpeciesId.CROAGUNK, + SpeciesId.SCRAGGY, + SpeciesId.MIENFOO, + SpeciesId.PASSIMIAN, + SpeciesId.PAWMI, ], [TrainerPoolTier.UNCOMMON]: [ - Species.MEDITITE, - Species.GALLADE, - Species.TIMBURR, - Species.HAWLUCHA, - Species.STUFFUL, - Species.FALINKS, - Species.FLAMIGO, - Species.PALDEA_TAUROS, + SpeciesId.MEDITITE, + SpeciesId.GALLADE, + SpeciesId.TIMBURR, + SpeciesId.HAWLUCHA, + SpeciesId.STUFFUL, + SpeciesId.FALINKS, + SpeciesId.FLAMIGO, + SpeciesId.PALDEA_TAUROS, ], - [TrainerPoolTier.RARE]: [Species.JANGMO_O, Species.QUAXLY], + [TrainerPoolTier.RARE]: [SpeciesId.JANGMO_O, SpeciesId.QUAXLY], }; export type EvilTeam = diff --git a/src/data/trainers/trainer-config.ts b/src/data/trainers/trainer-config.ts index 839a1cdc0cc..6408bf94eac 100644 --- a/src/data/trainers/trainer-config.ts +++ b/src/data/trainers/trainer-config.ts @@ -23,11 +23,11 @@ import { evilAdminTrainerPools } from "./evil-admin-trainer-pools"; // Enum imports import { PartyMemberStrength } from "#enums/party-member-strength"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { PokeballType } from "#enums/pokeball"; import { PokemonType } from "#enums/pokemon-type"; -import { Moves } from "#enums/moves"; -import { Abilities } from "#enums/abilities"; +import { MoveId } from "#enums/move-id"; +import { AbilityId } from "#enums/ability-id"; import { TeraAIMode } from "#enums/tera-ai-mode"; import { TrainerPoolTier } from "#enums/trainer-pool-tier"; import { TrainerSlot } from "#enums/trainer-slot"; @@ -445,7 +445,7 @@ export class TrainerConfig { return this; } - setSpeciesPools(speciesPools: TrainerTierPools | Species[]): TrainerConfig { + setSpeciesPools(speciesPools: TrainerTierPools | SpeciesId[]): TrainerConfig { this.speciesPools = (Array.isArray(speciesPools) ? { [TrainerPoolTier.COMMON]: speciesPools } : speciesPools) as unknown as TrainerTierPools; @@ -480,7 +480,7 @@ export class TrainerConfig { const partyMemberIndexes = new Array(party.length) .fill(null) .map((_, i) => i) - .filter(i => shedinjaCanTera || party[i].species.speciesId !== Species.SHEDINJA); // Shedinja can only Tera on Bug specialty type (or no specialty type) + .filter(i => shedinjaCanTera || party[i].species.speciesId !== SpeciesId.SHEDINJA); // Shedinja can only Tera on Bug specialty type (or no specialty type) const setPartySlot = !isNullOrUndefined(slot) ? Phaser.Math.Wrap(slot, 0, party.length) : -1; // If we have a tera slot defined, wrap it to party size. for (let t = 0; t < Math.min(count(), party.length); t++) { const randomIndex = @@ -530,14 +530,14 @@ export class TrainerConfig { * Initializes the trainer configuration for an evil team admin. * @param title The title of the evil team admin. * @param poolName The evil team the admin belongs to. - * @param {Species | Species[]} signatureSpecies The signature species for the evil team leader. + * @param {SpeciesId | SpeciesId[]} signatureSpecies The signature species for the evil team leader. * @param specialtyType The specialty Type of the admin, if they have one * @returns {TrainerConfig} The updated TrainerConfig instance. * **/ initForEvilTeamAdmin( title: string, poolName: EvilTeam, - signatureSpecies: (Species | Species[])[], + signatureSpecies: (SpeciesId | SpeciesId[])[], specialtyType?: PokemonType, ): TrainerConfig { if (!getIsInitialized()) { @@ -600,14 +600,14 @@ export class TrainerConfig { /** * Initializes the trainer configuration for an evil team leader. Temporarily hardcoding evil leader teams though. - * @param {Species | Species[]} signatureSpecies The signature species for the evil team leader. + * @param {SpeciesId | SpeciesId[]} signatureSpecies The signature species for the evil team leader. * @param {PokemonType} specialtyType The specialty type for the evil team Leader. * @param boolean Whether or not this is the rematch fight * @returns {TrainerConfig} The updated TrainerConfig instance. * **/ initForEvilTeamLeader( title: string, - signatureSpecies: (Species | Species[])[], + signatureSpecies: (SpeciesId | SpeciesId[])[], rematch = false, specialtyType?: PokemonType, ): TrainerConfig { @@ -644,7 +644,7 @@ export class TrainerConfig { /** * Initializes the trainer configuration for a Gym Leader. - * @param {Species | Species[]} signatureSpecies The signature species for the Gym Leader. Added to party in reverse order. + * @param {SpeciesId | SpeciesId[]} signatureSpecies The signature species for the Gym Leader. Added to party in reverse order. * @param isMale Whether the Gym Leader is Male or Not (for localization of the title). * @param {PokemonType} specialtyType The specialty type for the Gym Leader. * @param ignoreMinTeraWave Whether the Gym Leader always uses Tera (true), or only Teras after {@linkcode GYM_LEADER_TERA_WAVE} (false). Defaults to false. @@ -652,7 +652,7 @@ export class TrainerConfig { * @returns {TrainerConfig} The updated TrainerConfig instance. * **/ initForGymLeader( - signatureSpecies: (Species | Species[])[], + signatureSpecies: (SpeciesId | SpeciesId[])[], isMale: boolean, specialtyType: PokemonType, ignoreMinTeraWave = false, @@ -714,7 +714,7 @@ export class TrainerConfig { * @returns The updated TrainerConfig instance. **/ initForEliteFour( - signatureSpecies: (Species | Species[])[], + signatureSpecies: (SpeciesId | SpeciesId[])[], isMale: boolean, specialtyType?: PokemonType, teraSlot?: number, @@ -769,7 +769,7 @@ export class TrainerConfig { /** * Initializes the trainer configuration for a Champion. - * @param {Species | Species[]} signatureSpecies The signature species for the Champion. + * @param {SpeciesId | SpeciesId[]} signatureSpecies The signature species for the Champion. * @param isMale Whether the Champion is Male or Female (for localization of the title). * @returns {TrainerConfig} The updated TrainerConfig instance. **/ @@ -989,7 +989,7 @@ let t = 0; * @param postProcess */ export function getRandomPartyMemberFunc( - speciesPool: Species[], + speciesPool: SpeciesId[], trainerSlot: TrainerSlot = TrainerSlot.TRAINER, ignoreEvolution = false, postProcess?: (enemyPokemon: EnemyPokemon) => void, @@ -1057,7 +1057,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.ARTIST]: new TrainerConfig(++t) .setEncounterBgm(TrainerType.RICH) .setPartyTemplates(trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.THREE_AVG) - .setSpeciesPools([Species.SMEARGLE]), + .setSpeciesPools([SpeciesId.SMEARGLE]), [TrainerType.BACKERS]: new TrainerConfig(++t) .setHasGenders("Backers") .setDoubleOnly() @@ -1074,33 +1074,33 @@ export const trainerConfigs: TrainerConfigs = { ) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.RHYHORN, - Species.AIPOM, - Species.MAKUHITA, - Species.MAWILE, - Species.NUMEL, - Species.LILLIPUP, - Species.SANDILE, - Species.WOOLOO, + SpeciesId.RHYHORN, + SpeciesId.AIPOM, + SpeciesId.MAKUHITA, + SpeciesId.MAWILE, + SpeciesId.NUMEL, + SpeciesId.LILLIPUP, + SpeciesId.SANDILE, + SpeciesId.WOOLOO, ], [TrainerPoolTier.UNCOMMON]: [ - Species.GIRAFARIG, - Species.ZANGOOSE, - Species.SEVIPER, - Species.CUBCHOO, - Species.PANCHAM, - Species.SKIDDO, - Species.MUDBRAY, + SpeciesId.GIRAFARIG, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.CUBCHOO, + SpeciesId.PANCHAM, + SpeciesId.SKIDDO, + SpeciesId.MUDBRAY, ], [TrainerPoolTier.RARE]: [ - Species.TAUROS, - Species.STANTLER, - Species.DARUMAKA, - Species.BOUFFALANT, - Species.DEERLING, - Species.IMPIDIMP, + SpeciesId.TAUROS, + SpeciesId.STANTLER, + SpeciesId.DARUMAKA, + SpeciesId.BOUFFALANT, + SpeciesId.DEERLING, + SpeciesId.IMPIDIMP, ], - [TrainerPoolTier.SUPER_RARE]: [Species.GALAR_DARUMAKA, Species.TEDDIURSA], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.GALAR_DARUMAKA, SpeciesId.TEDDIURSA], }), [TrainerType.BAKER]: new TrainerConfig(++t) .setEncounterBgm(TrainerType.CLERK) @@ -1111,23 +1111,23 @@ export const trainerConfigs: TrainerConfigs = { a => !!a && [ - Abilities.WHITE_SMOKE, - Abilities.GLUTTONY, - Abilities.HONEY_GATHER, - Abilities.HARVEST, - Abilities.CHEEK_POUCH, - Abilities.SWEET_VEIL, - Abilities.RIPEN, - Abilities.PURIFYING_SALT, - Abilities.WELL_BAKED_BODY, - Abilities.SUPERSWEET_SYRUP, - Abilities.HOSPITALITY, + AbilityId.WHITE_SMOKE, + AbilityId.GLUTTONY, + AbilityId.HONEY_GATHER, + AbilityId.HARVEST, + AbilityId.CHEEK_POUCH, + AbilityId.SWEET_VEIL, + AbilityId.RIPEN, + AbilityId.PURIFYING_SALT, + AbilityId.WELL_BAKED_BODY, + AbilityId.SUPERSWEET_SYRUP, + AbilityId.HOSPITALITY, ].includes(a), ) || s .getLevelMoves() .some(plm => - [Moves.SOFT_BOILED, Moves.SPORE, Moves.MILK_DRINK, Moves.OVERHEAT, Moves.TEATIME].includes(plm[1]), + [MoveId.SOFT_BOILED, MoveId.SPORE, MoveId.MILK_DRINK, MoveId.OVERHEAT, MoveId.TEATIME].includes(plm[1]), ), ), // Mons with baking related abilities or who learn Overheat, Teatime, Milk Drink, Spore, or Soft-Boiled by level [TrainerType.BEAUTY]: new TrainerConfig(++t) @@ -1143,53 +1143,65 @@ export const trainerConfigs: TrainerConfigs = { ) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.MEOWTH, - Species.GOLDEEN, - Species.MAREEP, - Species.MARILL, - Species.SKITTY, - Species.GLAMEOW, - Species.PURRLOIN, + SpeciesId.MEOWTH, + SpeciesId.GOLDEEN, + SpeciesId.MAREEP, + SpeciesId.MARILL, + SpeciesId.SKITTY, + SpeciesId.GLAMEOW, + SpeciesId.PURRLOIN, ], [TrainerPoolTier.UNCOMMON]: [ - Species.SMOOCHUM, - Species.ROSELIA, - Species.LUVDISC, - Species.BLITZLE, - Species.SEWADDLE, - Species.PETILIL, - Species.MINCCINO, - Species.GOTHITA, - Species.SPRITZEE, - Species.FLITTLE, + SpeciesId.SMOOCHUM, + SpeciesId.ROSELIA, + SpeciesId.LUVDISC, + SpeciesId.BLITZLE, + SpeciesId.SEWADDLE, + SpeciesId.PETILIL, + SpeciesId.MINCCINO, + SpeciesId.GOTHITA, + SpeciesId.SPRITZEE, + SpeciesId.FLITTLE, ], [TrainerPoolTier.RARE]: [ - Species.FEEBAS, - Species.FURFROU, - Species.SALANDIT, - Species.BRUXISH, - Species.HATENNA, - Species.SNOM, - Species.ALOLA_VULPIX, + SpeciesId.FEEBAS, + SpeciesId.FURFROU, + SpeciesId.SALANDIT, + SpeciesId.BRUXISH, + SpeciesId.HATENNA, + SpeciesId.SNOM, + SpeciesId.ALOLA_VULPIX, + ], + [TrainerPoolTier.SUPER_RARE]: [ + SpeciesId.CLAMPERL, + SpeciesId.AMAURA, + SpeciesId.SYLVEON, + SpeciesId.GOOMY, + SpeciesId.POPPLIO, ], - [TrainerPoolTier.SUPER_RARE]: [Species.CLAMPERL, Species.AMAURA, Species.SYLVEON, Species.GOOMY, Species.POPPLIO], }), [TrainerType.BIKER]: new TrainerConfig(++t) .setMoneyMultiplier(1.4) .setEncounterBgm(TrainerType.ROUGHNECK) .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [Species.EKANS, Species.KOFFING, Species.CROAGUNK, Species.VENIPEDE, Species.SCRAGGY], - [TrainerPoolTier.UNCOMMON]: [ - Species.GRIMER, - Species.VOLTORB, - Species.TEDDIURSA, - Species.MAGBY, - Species.SKORUPI, - Species.SANDILE, - Species.PAWNIARD, - Species.SHROODLE, + [TrainerPoolTier.COMMON]: [ + SpeciesId.EKANS, + SpeciesId.KOFFING, + SpeciesId.CROAGUNK, + SpeciesId.VENIPEDE, + SpeciesId.SCRAGGY, ], - [TrainerPoolTier.RARE]: [Species.VAROOM, Species.CYCLIZAR], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.GRIMER, + SpeciesId.VOLTORB, + SpeciesId.TEDDIURSA, + SpeciesId.MAGBY, + SpeciesId.SKORUPI, + SpeciesId.SANDILE, + SpeciesId.PAWNIARD, + SpeciesId.SHROODLE, + ], + [TrainerPoolTier.RARE]: [SpeciesId.VAROOM, SpeciesId.CYCLIZAR], }), [TrainerType.BLACK_BELT]: new TrainerConfig(++t) .setHasGenders("Battle Girl", TrainerType.PSYCHIC) @@ -1207,41 +1219,41 @@ export const trainerConfigs: TrainerConfigs = { ) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.NIDORAN_F, - Species.NIDORAN_M, - Species.MACHOP, - Species.MAKUHITA, - Species.MEDITITE, - Species.CROAGUNK, - Species.TIMBURR, + SpeciesId.NIDORAN_F, + SpeciesId.NIDORAN_M, + SpeciesId.MACHOP, + SpeciesId.MAKUHITA, + SpeciesId.MEDITITE, + SpeciesId.CROAGUNK, + SpeciesId.TIMBURR, ], [TrainerPoolTier.UNCOMMON]: [ - Species.MANKEY, - Species.POLIWRATH, - Species.TYROGUE, - Species.BRELOOM, - Species.SCRAGGY, - Species.MIENFOO, - Species.PANCHAM, - Species.STUFFUL, - Species.CRABRAWLER, + SpeciesId.MANKEY, + SpeciesId.POLIWRATH, + SpeciesId.TYROGUE, + SpeciesId.BRELOOM, + SpeciesId.SCRAGGY, + SpeciesId.MIENFOO, + SpeciesId.PANCHAM, + SpeciesId.STUFFUL, + SpeciesId.CRABRAWLER, ], [TrainerPoolTier.RARE]: [ - Species.HERACROSS, - Species.RIOLU, - Species.THROH, - Species.SAWK, - Species.PASSIMIAN, - Species.CLOBBOPUS, + SpeciesId.HERACROSS, + SpeciesId.RIOLU, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.PASSIMIAN, + SpeciesId.CLOBBOPUS, ], [TrainerPoolTier.SUPER_RARE]: [ - Species.HITMONTOP, - Species.INFERNAPE, - Species.GALLADE, - Species.HAWLUCHA, - Species.HAKAMO_O, + SpeciesId.HITMONTOP, + SpeciesId.INFERNAPE, + SpeciesId.GALLADE, + SpeciesId.HAWLUCHA, + SpeciesId.HAKAMO_O, ], - [TrainerPoolTier.ULTRA_RARE]: [Species.KUBFU], + [TrainerPoolTier.ULTRA_RARE]: [SpeciesId.KUBFU], }), [TrainerType.BREEDER]: new TrainerConfig(++t) .setMoneyMultiplier(1.325) @@ -1269,21 +1281,21 @@ export const trainerConfigs: TrainerConfigs = { ) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.MEOWTH, - Species.PSYDUCK, - Species.BUDEW, - Species.PIDOVE, - Species.CINCCINO, - Species.LITLEO, + SpeciesId.MEOWTH, + SpeciesId.PSYDUCK, + SpeciesId.BUDEW, + SpeciesId.PIDOVE, + SpeciesId.CINCCINO, + SpeciesId.LITLEO, ], [TrainerPoolTier.UNCOMMON]: [ - Species.JIGGLYPUFF, - Species.MAGNEMITE, - Species.MARILL, - Species.COTTONEE, - Species.SKIDDO, + SpeciesId.JIGGLYPUFF, + SpeciesId.MAGNEMITE, + SpeciesId.MARILL, + SpeciesId.COTTONEE, + SpeciesId.SKIDDO, ], - [TrainerPoolTier.RARE]: [Species.BUIZEL, Species.SNEASEL, Species.KLEFKI, Species.INDEEDEE], + [TrainerPoolTier.RARE]: [SpeciesId.BUIZEL, SpeciesId.SNEASEL, SpeciesId.KLEFKI, SpeciesId.INDEEDEE], }), [TrainerType.CYCLIST]: new TrainerConfig(++t) .setMoneyMultiplier(1.3) @@ -1292,16 +1304,28 @@ export const trainerConfigs: TrainerConfigs = { .setEncounterBgm(TrainerType.CYCLIST) .setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.ONE_AVG) .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [Species.DODUO, Species.PICHU, Species.TAILLOW, Species.STARLY, Species.PONYTA], - [TrainerPoolTier.UNCOMMON]: [ - Species.ELECTRIKE, - Species.SHINX, - Species.BLITZLE, - Species.DUCKLETT, - Species.WATTREL, + [TrainerPoolTier.COMMON]: [ + SpeciesId.DODUO, + SpeciesId.PICHU, + SpeciesId.TAILLOW, + SpeciesId.STARLY, + SpeciesId.PONYTA, ], - [TrainerPoolTier.RARE]: [Species.YANMA, Species.NINJASK, Species.WHIRLIPEDE, Species.EMOLGA, Species.SKIDDO], - [TrainerPoolTier.SUPER_RARE]: [Species.ACCELGOR, Species.DREEPY], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.ELECTRIKE, + SpeciesId.SHINX, + SpeciesId.BLITZLE, + SpeciesId.DUCKLETT, + SpeciesId.WATTREL, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.YANMA, + SpeciesId.NINJASK, + SpeciesId.WHIRLIPEDE, + SpeciesId.EMOLGA, + SpeciesId.SKIDDO, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.ACCELGOR, SpeciesId.DREEPY], }), [TrainerType.DANCER]: new TrainerConfig(++t) .setMoneyMultiplier(1.55) @@ -1313,10 +1337,10 @@ export const trainerConfigs: TrainerConfigs = { trainerPartyTemplates.TWO_WEAK_SAME_TWO_WEAK_SAME, ) .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [Species.RALTS, Species.SPOINK, Species.LOTAD, Species.BUDEW], - [TrainerPoolTier.UNCOMMON]: [Species.SPINDA, Species.SWABLU, Species.MARACTUS], - [TrainerPoolTier.RARE]: [Species.BELLOSSOM, Species.HITMONTOP, Species.MIME_JR, Species.ORICORIO], - [TrainerPoolTier.SUPER_RARE]: [Species.QUAXLY, Species.JANGMO_O], + [TrainerPoolTier.COMMON]: [SpeciesId.RALTS, SpeciesId.SPOINK, SpeciesId.LOTAD, SpeciesId.BUDEW], + [TrainerPoolTier.UNCOMMON]: [SpeciesId.SPINDA, SpeciesId.SWABLU, SpeciesId.MARACTUS], + [TrainerPoolTier.RARE]: [SpeciesId.BELLOSSOM, SpeciesId.HITMONTOP, SpeciesId.MIME_JR, SpeciesId.ORICORIO], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.QUAXLY, SpeciesId.JANGMO_O], }), [TrainerType.DEPOT_AGENT]: new TrainerConfig(++t) .setMoneyMultiplier(1.45) @@ -1333,11 +1357,11 @@ export const trainerConfigs: TrainerConfigs = { .setHasDouble("Medical Team") .setMoneyMultiplier(3) .setEncounterBgm(TrainerType.CLERK) - .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === Moves.HEAL_PULSE)), + .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === MoveId.HEAL_PULSE)), [TrainerType.FIREBREATHER]: new TrainerConfig(++t) .setMoneyMultiplier(1.4) .setEncounterBgm(TrainerType.ROUGHNECK) - .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === Moves.SMOG) || s.isOfType(PokemonType.FIRE)), + .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === MoveId.SMOG) || s.isOfType(PokemonType.FIRE)), [TrainerType.FISHERMAN]: new TrainerConfig(++t) .setMoneyMultiplier(1.25) .setEncounterBgm(TrainerType.BACKPACKER) @@ -1351,41 +1375,41 @@ export const trainerConfigs: TrainerConfigs = { ) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.TENTACOOL, - Species.MAGIKARP, - Species.GOLDEEN, - Species.STARYU, - Species.REMORAID, - Species.SKRELP, - Species.CLAUNCHER, - Species.ARROKUDA, + SpeciesId.TENTACOOL, + SpeciesId.MAGIKARP, + SpeciesId.GOLDEEN, + SpeciesId.STARYU, + SpeciesId.REMORAID, + SpeciesId.SKRELP, + SpeciesId.CLAUNCHER, + SpeciesId.ARROKUDA, ], [TrainerPoolTier.UNCOMMON]: [ - Species.POLIWAG, - Species.SHELLDER, - Species.KRABBY, - Species.HORSEA, - Species.CARVANHA, - Species.BARBOACH, - Species.CORPHISH, - Species.FINNEON, - Species.TYMPOLE, - Species.BASCULIN, - Species.FRILLISH, - Species.INKAY, + SpeciesId.POLIWAG, + SpeciesId.SHELLDER, + SpeciesId.KRABBY, + SpeciesId.HORSEA, + SpeciesId.CARVANHA, + SpeciesId.BARBOACH, + SpeciesId.CORPHISH, + SpeciesId.FINNEON, + SpeciesId.TYMPOLE, + SpeciesId.BASCULIN, + SpeciesId.FRILLISH, + SpeciesId.INKAY, ], [TrainerPoolTier.RARE]: [ - Species.CHINCHOU, - Species.CORSOLA, - Species.WAILMER, - Species.CLAMPERL, - Species.LUVDISC, - Species.MANTYKE, - Species.ALOMOMOLA, - Species.TATSUGIRI, - Species.VELUZA, + SpeciesId.CHINCHOU, + SpeciesId.CORSOLA, + SpeciesId.WAILMER, + SpeciesId.CLAMPERL, + SpeciesId.LUVDISC, + SpeciesId.MANTYKE, + SpeciesId.ALOMOMOLA, + SpeciesId.TATSUGIRI, + SpeciesId.VELUZA, ], - [TrainerPoolTier.SUPER_RARE]: [Species.LAPRAS, Species.FEEBAS, Species.RELICANTH, Species.DONDOZO], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.LAPRAS, SpeciesId.FEEBAS, SpeciesId.RELICANTH, SpeciesId.DONDOZO], }), [TrainerType.GUITARIST]: new TrainerConfig(++t) .setMoneyMultiplier(1.2) @@ -1394,7 +1418,7 @@ export const trainerConfigs: TrainerConfigs = { .setSpeciesFilter(s => s.isOfType(PokemonType.ELECTRIC)), [TrainerType.HARLEQUIN]: new TrainerConfig(++t) .setEncounterBgm(TrainerType.PSYCHIC) - .setSpeciesFilter(s => tmSpecies[Moves.TRICK_ROOM].indexOf(s.speciesId) > -1), + .setSpeciesFilter(s => tmSpecies[MoveId.TRICK_ROOM].indexOf(s.speciesId) > -1), [TrainerType.HIKER]: new TrainerConfig(++t) .setEncounterBgm(TrainerType.BACKPACKER) .setPartyTemplates( @@ -1406,39 +1430,39 @@ export const trainerConfigs: TrainerConfigs = { ) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.SANDSHREW, - Species.DIGLETT, - Species.GEODUDE, - Species.MACHOP, - Species.ARON, - Species.ROGGENROLA, - Species.DRILBUR, - Species.NACLI, + SpeciesId.SANDSHREW, + SpeciesId.DIGLETT, + SpeciesId.GEODUDE, + SpeciesId.MACHOP, + SpeciesId.ARON, + SpeciesId.ROGGENROLA, + SpeciesId.DRILBUR, + SpeciesId.NACLI, ], [TrainerPoolTier.UNCOMMON]: [ - Species.ZUBAT, - Species.RHYHORN, - Species.ONIX, - Species.CUBONE, - Species.WOOBAT, - Species.SWINUB, - Species.NOSEPASS, - Species.HIPPOPOTAS, - Species.DWEBBLE, - Species.KLAWF, - Species.TOEDSCOOL, + SpeciesId.ZUBAT, + SpeciesId.RHYHORN, + SpeciesId.ONIX, + SpeciesId.CUBONE, + SpeciesId.WOOBAT, + SpeciesId.SWINUB, + SpeciesId.NOSEPASS, + SpeciesId.HIPPOPOTAS, + SpeciesId.DWEBBLE, + SpeciesId.KLAWF, + SpeciesId.TOEDSCOOL, ], [TrainerPoolTier.RARE]: [ - Species.TORKOAL, - Species.TRAPINCH, - Species.BARBOACH, - Species.GOLETT, - Species.ALOLA_DIGLETT, - Species.ALOLA_GEODUDE, - Species.GALAR_STUNFISK, - Species.PALDEA_WOOPER, + SpeciesId.TORKOAL, + SpeciesId.TRAPINCH, + SpeciesId.BARBOACH, + SpeciesId.GOLETT, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.GALAR_STUNFISK, + SpeciesId.PALDEA_WOOPER, ], - [TrainerPoolTier.SUPER_RARE]: [Species.MAGBY, Species.LARVITAR], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.MAGBY, SpeciesId.LARVITAR], }), [TrainerType.HOOLIGANS]: new TrainerConfig(++t) .setDoubleOnly() @@ -1466,7 +1490,7 @@ export const trainerConfigs: TrainerConfigs = { trainerPartyTemplates.TWO_WEAK_ONE_AVG, trainerPartyTemplates.TWO_AVG, ) - .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === Moves.SING)), + .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === MoveId.SING)), [TrainerType.HEX_MANIAC]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) .setEncounterBgm(TrainerType.PSYCHIC) @@ -1490,19 +1514,19 @@ export const trainerConfigs: TrainerConfigs = { ) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.VULPIX, - Species.GROWLITHE, - Species.SNUBBULL, - Species.POOCHYENA, - Species.ELECTRIKE, - Species.LILLIPUP, - Species.YAMPER, - Species.FIDOUGH, + SpeciesId.VULPIX, + SpeciesId.GROWLITHE, + SpeciesId.SNUBBULL, + SpeciesId.POOCHYENA, + SpeciesId.ELECTRIKE, + SpeciesId.LILLIPUP, + SpeciesId.YAMPER, + SpeciesId.FIDOUGH, ], - [TrainerPoolTier.UNCOMMON]: [Species.HOUNDOUR, Species.ROCKRUFF, Species.MASCHIFF], - [TrainerPoolTier.RARE]: [Species.JOLTEON, Species.RIOLU], + [TrainerPoolTier.UNCOMMON]: [SpeciesId.HOUNDOUR, SpeciesId.ROCKRUFF, SpeciesId.MASCHIFF], + [TrainerPoolTier.RARE]: [SpeciesId.JOLTEON, SpeciesId.RIOLU], [TrainerPoolTier.SUPER_RARE]: [], - [TrainerPoolTier.ULTRA_RARE]: [Species.ENTEI, Species.SUICUNE, Species.RAIKOU], + [TrainerPoolTier.ULTRA_RARE]: [SpeciesId.ENTEI, SpeciesId.SUICUNE, SpeciesId.RAIKOU], }), [TrainerType.PARASOL_LADY]: new TrainerConfig(++t) .setMoneyMultiplier(1.55) @@ -1520,14 +1544,14 @@ export const trainerConfigs: TrainerConfigs = { a => !!a && [ - Abilities.DRIZZLE, - Abilities.SWIFT_SWIM, - Abilities.HYDRATION, - Abilities.RAIN_DISH, - Abilities.DRY_SKIN, - Abilities.WIND_POWER, + AbilityId.DRIZZLE, + AbilityId.SWIFT_SWIM, + AbilityId.HYDRATION, + AbilityId.RAIN_DISH, + AbilityId.DRY_SKIN, + AbilityId.WIND_POWER, ].includes(a), - ) || s.getLevelMoves().some(plm => plm[1] === Moves.RAIN_DANCE), + ) || s.getLevelMoves().some(plm => plm[1] === MoveId.RAIN_DANCE), ), // Mons with rain abilities or who learn Rain Dance by level [TrainerType.PILOT]: new TrainerConfig(++t) .setMoneyMultiplier(1.75) @@ -1538,7 +1562,7 @@ export const trainerConfigs: TrainerConfigs = { trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.THREE_AVG, ) - .setSpeciesFilter(s => tmSpecies[Moves.FLY].indexOf(s.speciesId) > -1), + .setSpeciesFilter(s => tmSpecies[MoveId.FLY].indexOf(s.speciesId) > -1), [TrainerType.POKEFAN]: new TrainerConfig(++t) .setMoneyMultiplier(1.4) .setName("PokéFan") @@ -1554,7 +1578,7 @@ export const trainerConfigs: TrainerConfigs = { trainerPartyTemplates.FIVE_WEAK, trainerPartyTemplates.SIX_WEAKER_SAME, ) - .setSpeciesFilter(s => tmSpecies[Moves.HELPING_HAND].indexOf(s.speciesId) > -1), + .setSpeciesFilter(s => tmSpecies[MoveId.HELPING_HAND].indexOf(s.speciesId) > -1), [TrainerType.PRESCHOOLER]: new TrainerConfig(++t) .setMoneyMultiplier(0.2) .setEncounterBgm(TrainerType.YOUNGSTER) @@ -1568,28 +1592,28 @@ export const trainerConfigs: TrainerConfigs = { ) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.CATERPIE, - Species.PICHU, - Species.SANDSHREW, - Species.LEDYBA, - Species.BUDEW, - Species.BURMY, - Species.WOOLOO, - Species.PAWMI, - Species.SMOLIV, + SpeciesId.CATERPIE, + SpeciesId.PICHU, + SpeciesId.SANDSHREW, + SpeciesId.LEDYBA, + SpeciesId.BUDEW, + SpeciesId.BURMY, + SpeciesId.WOOLOO, + SpeciesId.PAWMI, + SpeciesId.SMOLIV, ], [TrainerPoolTier.UNCOMMON]: [ - Species.EEVEE, - Species.CLEFFA, - Species.IGGLYBUFF, - Species.SWINUB, - Species.WOOPER, - Species.DRIFLOON, - Species.DEDENNE, - Species.STUFFUL, + SpeciesId.EEVEE, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.SWINUB, + SpeciesId.WOOPER, + SpeciesId.DRIFLOON, + SpeciesId.DEDENNE, + SpeciesId.STUFFUL, ], - [TrainerPoolTier.RARE]: [Species.RALTS, Species.RIOLU, Species.JOLTIK, Species.TANDEMAUS], - [TrainerPoolTier.SUPER_RARE]: [Species.DARUMAKA, Species.TINKATINK], + [TrainerPoolTier.RARE]: [SpeciesId.RALTS, SpeciesId.RIOLU, SpeciesId.JOLTIK, SpeciesId.TANDEMAUS], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.DARUMAKA, SpeciesId.TINKATINK], }), [TrainerType.PSYCHIC]: new TrainerConfig(++t) .setHasGenders("Psychic Female") @@ -1605,28 +1629,34 @@ export const trainerConfigs: TrainerConfigs = { ) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.ABRA, - Species.DROWZEE, - Species.RALTS, - Species.SPOINK, - Species.GOTHITA, - Species.SOLOSIS, - Species.BLIPBUG, - Species.ESPURR, - Species.HATENNA, + SpeciesId.ABRA, + SpeciesId.DROWZEE, + SpeciesId.RALTS, + SpeciesId.SPOINK, + SpeciesId.GOTHITA, + SpeciesId.SOLOSIS, + SpeciesId.BLIPBUG, + SpeciesId.ESPURR, + SpeciesId.HATENNA, ], [TrainerPoolTier.UNCOMMON]: [ - Species.MIME_JR, - Species.EXEGGCUTE, - Species.MEDITITE, - Species.NATU, - Species.EXEGGCUTE, - Species.WOOBAT, - Species.INKAY, - Species.ORANGURU, + SpeciesId.MIME_JR, + SpeciesId.EXEGGCUTE, + SpeciesId.MEDITITE, + SpeciesId.NATU, + SpeciesId.EXEGGCUTE, + SpeciesId.WOOBAT, + SpeciesId.INKAY, + SpeciesId.ORANGURU, ], - [TrainerPoolTier.RARE]: [Species.ELGYEM, Species.SIGILYPH, Species.BALTOY, Species.GIRAFARIG, Species.MEOWSTIC], - [TrainerPoolTier.SUPER_RARE]: [Species.BELDUM, Species.ESPEON, Species.STANTLER], + [TrainerPoolTier.RARE]: [ + SpeciesId.ELGYEM, + SpeciesId.SIGILYPH, + SpeciesId.BALTOY, + SpeciesId.GIRAFARIG, + SpeciesId.MEOWSTIC, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.BELDUM, SpeciesId.ESPEON, SpeciesId.STANTLER], }), [TrainerType.RANGER]: new TrainerConfig(++t) .setMoneyMultiplier(1.4) @@ -1636,44 +1666,44 @@ export const trainerConfigs: TrainerConfigs = { .setHasDouble("Pokémon Rangers") .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.PICHU, - Species.GROWLITHE, - Species.PONYTA, - Species.ZIGZAGOON, - Species.SEEDOT, - Species.BIDOOF, - Species.RIOLU, - Species.SEWADDLE, - Species.SKIDDO, - Species.SALANDIT, - Species.YAMPER, + SpeciesId.PICHU, + SpeciesId.GROWLITHE, + SpeciesId.PONYTA, + SpeciesId.ZIGZAGOON, + SpeciesId.SEEDOT, + SpeciesId.BIDOOF, + SpeciesId.RIOLU, + SpeciesId.SEWADDLE, + SpeciesId.SKIDDO, + SpeciesId.SALANDIT, + SpeciesId.YAMPER, ], [TrainerPoolTier.UNCOMMON]: [ - Species.AZURILL, - Species.TAUROS, - Species.MAREEP, - Species.FARFETCHD, - Species.TEDDIURSA, - Species.SHROOMISH, - Species.ELECTRIKE, - Species.BUDEW, - Species.BUIZEL, - Species.MUDBRAY, - Species.STUFFUL, + SpeciesId.AZURILL, + SpeciesId.TAUROS, + SpeciesId.MAREEP, + SpeciesId.FARFETCHD, + SpeciesId.TEDDIURSA, + SpeciesId.SHROOMISH, + SpeciesId.ELECTRIKE, + SpeciesId.BUDEW, + SpeciesId.BUIZEL, + SpeciesId.MUDBRAY, + SpeciesId.STUFFUL, ], [TrainerPoolTier.RARE]: [ - Species.EEVEE, - Species.SCYTHER, - Species.KANGASKHAN, - Species.RALTS, - Species.MUNCHLAX, - Species.ZORUA, - Species.PALDEA_TAUROS, - Species.TINKATINK, - Species.CYCLIZAR, - Species.FLAMIGO, + SpeciesId.EEVEE, + SpeciesId.SCYTHER, + SpeciesId.KANGASKHAN, + SpeciesId.RALTS, + SpeciesId.MUNCHLAX, + SpeciesId.ZORUA, + SpeciesId.PALDEA_TAUROS, + SpeciesId.TINKATINK, + SpeciesId.CYCLIZAR, + SpeciesId.FLAMIGO, ], - [TrainerPoolTier.SUPER_RARE]: [Species.LARVESTA], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.LARVESTA], }), [TrainerType.RICH]: new TrainerConfig(++t) .setMoneyMultiplier(3.25) @@ -1713,40 +1743,46 @@ export const trainerConfigs: TrainerConfigs = { .setMoneyMultiplier(1.7) .setEncounterBgm(TrainerType.SCIENTIST) .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [Species.MAGNEMITE, Species.GRIMER, Species.DROWZEE, Species.VOLTORB, Species.KOFFING], + [TrainerPoolTier.COMMON]: [ + SpeciesId.MAGNEMITE, + SpeciesId.GRIMER, + SpeciesId.DROWZEE, + SpeciesId.VOLTORB, + SpeciesId.KOFFING, + ], [TrainerPoolTier.UNCOMMON]: [ - Species.BALTOY, - Species.BRONZOR, - Species.FERROSEED, - Species.KLINK, - Species.CHARJABUG, - Species.BLIPBUG, - Species.HELIOPTILE, + SpeciesId.BALTOY, + SpeciesId.BRONZOR, + SpeciesId.FERROSEED, + SpeciesId.KLINK, + SpeciesId.CHARJABUG, + SpeciesId.BLIPBUG, + SpeciesId.HELIOPTILE, ], [TrainerPoolTier.RARE]: [ - Species.ABRA, - Species.DITTO, - Species.PORYGON, - Species.ELEKID, - Species.SOLOSIS, - Species.GALAR_WEEZING, + SpeciesId.ABRA, + SpeciesId.DITTO, + SpeciesId.PORYGON, + SpeciesId.ELEKID, + SpeciesId.SOLOSIS, + SpeciesId.GALAR_WEEZING, ], [TrainerPoolTier.SUPER_RARE]: [ - Species.OMANYTE, - Species.KABUTO, - Species.AERODACTYL, - Species.LILEEP, - Species.ANORITH, - Species.CRANIDOS, - Species.SHIELDON, - Species.TIRTOUGA, - Species.ARCHEN, - Species.ARCTOVISH, - Species.ARCTOZOLT, - Species.DRACOVISH, - Species.DRACOZOLT, + SpeciesId.OMANYTE, + SpeciesId.KABUTO, + SpeciesId.AERODACTYL, + SpeciesId.LILEEP, + SpeciesId.ANORITH, + SpeciesId.CRANIDOS, + SpeciesId.SHIELDON, + SpeciesId.TIRTOUGA, + SpeciesId.ARCHEN, + SpeciesId.ARCTOVISH, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.DRACOZOLT, ], - [TrainerPoolTier.ULTRA_RARE]: [Species.ROTOM, Species.MELTAN], + [TrainerPoolTier.ULTRA_RARE]: [SpeciesId.ROTOM, SpeciesId.MELTAN], }), [TrainerType.SMASHER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), [TrainerType.SNOW_WORKER]: new TrainerConfig(++t) @@ -1763,17 +1799,23 @@ export const trainerConfigs: TrainerConfigs = { .setHasDouble("School Kids") .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.ODDISH, - Species.EXEGGCUTE, - Species.TEDDIURSA, - Species.WURMPLE, - Species.RALTS, - Species.SHROOMISH, - Species.FLETCHLING, + SpeciesId.ODDISH, + SpeciesId.EXEGGCUTE, + SpeciesId.TEDDIURSA, + SpeciesId.WURMPLE, + SpeciesId.RALTS, + SpeciesId.SHROOMISH, + SpeciesId.FLETCHLING, ], - [TrainerPoolTier.UNCOMMON]: [Species.VOLTORB, Species.WHISMUR, Species.MEDITITE, Species.MIME_JR, Species.NYMBLE], - [TrainerPoolTier.RARE]: [Species.TANGELA, Species.EEVEE, Species.YANMA], - [TrainerPoolTier.SUPER_RARE]: [Species.TADBULB], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.VOLTORB, + SpeciesId.WHISMUR, + SpeciesId.MEDITITE, + SpeciesId.MIME_JR, + SpeciesId.NYMBLE, + ], + [TrainerPoolTier.RARE]: [SpeciesId.TANGELA, SpeciesId.EEVEE, SpeciesId.YANMA], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.TADBULB], }), [TrainerType.SWIMMER]: new TrainerConfig(++t) .setMoneyMultiplier(1.3) @@ -1796,28 +1838,28 @@ export const trainerConfigs: TrainerConfigs = { .setPartyMemberFunc( 0, getRandomPartyMemberFunc([ - Species.PLUSLE, - Species.VOLBEAT, - Species.PACHIRISU, - Species.SILCOON, - Species.METAPOD, - Species.IGGLYBUFF, - Species.PETILIL, - Species.EEVEE, + SpeciesId.PLUSLE, + SpeciesId.VOLBEAT, + SpeciesId.PACHIRISU, + SpeciesId.SILCOON, + SpeciesId.METAPOD, + SpeciesId.IGGLYBUFF, + SpeciesId.PETILIL, + SpeciesId.EEVEE, ]), ) .setPartyMemberFunc( 1, getRandomPartyMemberFunc( [ - Species.MINUN, - Species.ILLUMISE, - Species.EMOLGA, - Species.CASCOON, - Species.KAKUNA, - Species.CLEFFA, - Species.COTTONEE, - Species.EEVEE, + SpeciesId.MINUN, + SpeciesId.ILLUMISE, + SpeciesId.EMOLGA, + SpeciesId.CASCOON, + SpeciesId.KAKUNA, + SpeciesId.CLEFFA, + SpeciesId.COTTONEE, + SpeciesId.EEVEE, ], TrainerSlot.TRAINER_PARTNER, ), @@ -1836,15 +1878,15 @@ export const trainerConfigs: TrainerConfigs = { .setEncounterBgm(TrainerType.CLERK) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.CLEFFA, - Species.CHATOT, - Species.PANSAGE, - Species.PANSEAR, - Species.PANPOUR, - Species.MINCCINO, + SpeciesId.CLEFFA, + SpeciesId.CHATOT, + SpeciesId.PANSAGE, + SpeciesId.PANSEAR, + SpeciesId.PANPOUR, + SpeciesId.MINCCINO, ], - [TrainerPoolTier.UNCOMMON]: [Species.TROPIUS, Species.PETILIL, Species.BOUNSWEET, Species.INDEEDEE], - [TrainerPoolTier.RARE]: [Species.APPLIN, Species.SINISTEA, Species.POLTCHAGEIST], + [TrainerPoolTier.UNCOMMON]: [SpeciesId.TROPIUS, SpeciesId.PETILIL, SpeciesId.BOUNSWEET, SpeciesId.INDEEDEE], + [TrainerPoolTier.RARE]: [SpeciesId.APPLIN, SpeciesId.SINISTEA, SpeciesId.POLTCHAGEIST], }), [TrainerType.WORKER]: new TrainerConfig(++t) .setHasGenders("Worker Female") @@ -1859,16 +1901,16 @@ export const trainerConfigs: TrainerConfigs = { .setHasDouble("Beginners") .setPartyTemplates(trainerPartyTemplates.TWO_WEAKER) .setSpeciesPools([ - Species.CATERPIE, - Species.WEEDLE, - Species.RATTATA, - Species.SENTRET, - Species.POOCHYENA, - Species.ZIGZAGOON, - Species.WURMPLE, - Species.BIDOOF, - Species.PATRAT, - Species.LILLIPUP, + SpeciesId.CATERPIE, + SpeciesId.WEEDLE, + SpeciesId.RATTATA, + SpeciesId.SENTRET, + SpeciesId.POOCHYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.WURMPLE, + SpeciesId.BIDOOF, + SpeciesId.PATRAT, + SpeciesId.LILLIPUP, ]), [TrainerType.ROCKET_GRUNT]: new TrainerConfig(++t) .setHasGenders("Rocket Grunt Female") @@ -1881,51 +1923,51 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.WEEDLE, - Species.RATTATA, - Species.EKANS, - Species.SANDSHREW, - Species.ZUBAT, - Species.ODDISH, - Species.GEODUDE, - Species.SLOWPOKE, - Species.GRIMER, - Species.KOFFING, + SpeciesId.WEEDLE, + SpeciesId.RATTATA, + SpeciesId.EKANS, + SpeciesId.SANDSHREW, + SpeciesId.ZUBAT, + SpeciesId.ODDISH, + SpeciesId.GEODUDE, + SpeciesId.SLOWPOKE, + SpeciesId.GRIMER, + SpeciesId.KOFFING, ], [TrainerPoolTier.UNCOMMON]: [ - Species.MANKEY, - Species.GROWLITHE, - Species.MAGNEMITE, - Species.ONIX, - Species.VOLTORB, - Species.EXEGGCUTE, - Species.CUBONE, - Species.LICKITUNG, - Species.TAUROS, - Species.MAGIKARP, - Species.MURKROW, - Species.ELEKID, - Species.MAGBY, + SpeciesId.MANKEY, + SpeciesId.GROWLITHE, + SpeciesId.MAGNEMITE, + SpeciesId.ONIX, + SpeciesId.VOLTORB, + SpeciesId.EXEGGCUTE, + SpeciesId.CUBONE, + SpeciesId.LICKITUNG, + SpeciesId.TAUROS, + SpeciesId.MAGIKARP, + SpeciesId.MURKROW, + SpeciesId.ELEKID, + SpeciesId.MAGBY, ], [TrainerPoolTier.RARE]: [ - Species.ABRA, - Species.GASTLY, - Species.SCYTHER, - Species.PORYGON, - Species.OMANYTE, - Species.KABUTO, - Species.ALOLA_RATTATA, - Species.ALOLA_SANDSHREW, - Species.ALOLA_MEOWTH, - Species.ALOLA_GEODUDE, - Species.ALOLA_GRIMER, - Species.PALDEA_TAUROS, + SpeciesId.ABRA, + SpeciesId.GASTLY, + SpeciesId.SCYTHER, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.KABUTO, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRIMER, + SpeciesId.PALDEA_TAUROS, ], - [TrainerPoolTier.SUPER_RARE]: [Species.DRATINI, Species.LARVITAR], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.DRATINI, SpeciesId.LARVITAR], }), [TrainerType.ARCHER]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("rocket_admin", "rocket", [Species.HOUNDOOM]) + .initForEvilTeamAdmin("rocket_admin", "rocket", [SpeciesId.HOUNDOOM]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_rocket_grunt") @@ -1933,7 +1975,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), [TrainerType.ARIANA]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("rocket_admin_female", "rocket", [Species.ARBOK]) + .initForEvilTeamAdmin("rocket_admin_female", "rocket", [SpeciesId.ARBOK]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_rocket_grunt") @@ -1941,7 +1983,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), [TrainerType.PROTON]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("rocket_admin", "rocket", [Species.CROBAT]) + .initForEvilTeamAdmin("rocket_admin", "rocket", [SpeciesId.CROBAT]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_rocket_grunt") @@ -1949,7 +1991,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), [TrainerType.PETREL]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("rocket_admin", "rocket", [Species.WEEZING]) + .initForEvilTeamAdmin("rocket_admin", "rocket", [SpeciesId.WEEZING]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_rocket_grunt") @@ -1966,39 +2008,39 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.DIGLETT, - Species.GROWLITHE, - Species.SLUGMA, - Species.POOCHYENA, - Species.ZIGZAGOON, - Species.NUMEL, - Species.TORKOAL, - Species.BALTOY, + SpeciesId.DIGLETT, + SpeciesId.GROWLITHE, + SpeciesId.SLUGMA, + SpeciesId.POOCHYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.NUMEL, + SpeciesId.TORKOAL, + SpeciesId.BALTOY, ], [TrainerPoolTier.UNCOMMON]: [ - Species.RHYHORN, - Species.PHANPY, - Species.MAGBY, - Species.ZANGOOSE, - Species.SOLROCK, - Species.HEATMOR, - Species.ROLYCOLY, - Species.CAPSAKID, + SpeciesId.RHYHORN, + SpeciesId.PHANPY, + SpeciesId.MAGBY, + SpeciesId.ZANGOOSE, + SpeciesId.SOLROCK, + SpeciesId.HEATMOR, + SpeciesId.ROLYCOLY, + SpeciesId.CAPSAKID, ], [TrainerPoolTier.RARE]: [ - Species.TRAPINCH, - Species.LILEEP, - Species.ANORITH, - Species.GOLETT, - Species.TURTONATOR, - Species.TOEDSCOOL, - Species.HISUI_GROWLITHE, + SpeciesId.TRAPINCH, + SpeciesId.LILEEP, + SpeciesId.ANORITH, + SpeciesId.GOLETT, + SpeciesId.TURTONATOR, + SpeciesId.TOEDSCOOL, + SpeciesId.HISUI_GROWLITHE, ], - [TrainerPoolTier.SUPER_RARE]: [Species.CHARCADET, Species.ARON], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.CHARCADET, SpeciesId.ARON], }), [TrainerType.TABITHA]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("magma_admin", "magma", [Species.CAMERUPT]) + .initForEvilTeamAdmin("magma_admin", "magma", [SpeciesId.CAMERUPT]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_aqua_magma_grunt") @@ -2006,7 +2048,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), [TrainerType.COURTNEY]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("magma_admin_female", "magma", [Species.CAMERUPT]) + .initForEvilTeamAdmin("magma_admin_female", "magma", [SpeciesId.CAMERUPT]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_aqua_magma_grunt") @@ -2023,42 +2065,42 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.QWILFISH, - Species.REMORAID, - Species.ZIGZAGOON, - Species.LOTAD, - Species.WINGULL, - Species.CARVANHA, - Species.WAILMER, - Species.BARBOACH, - Species.CORPHISH, - Species.SPHEAL, + SpeciesId.QWILFISH, + SpeciesId.REMORAID, + SpeciesId.ZIGZAGOON, + SpeciesId.LOTAD, + SpeciesId.WINGULL, + SpeciesId.CARVANHA, + SpeciesId.WAILMER, + SpeciesId.BARBOACH, + SpeciesId.CORPHISH, + SpeciesId.SPHEAL, ], [TrainerPoolTier.UNCOMMON]: [ - Species.TENTACOOL, - Species.HORSEA, - Species.CHINCHOU, - Species.WOOPER, - Species.AZURILL, - Species.SEVIPER, - Species.CLAMPERL, - Species.WIMPOD, - Species.CLOBBOPUS, + SpeciesId.TENTACOOL, + SpeciesId.HORSEA, + SpeciesId.CHINCHOU, + SpeciesId.WOOPER, + SpeciesId.AZURILL, + SpeciesId.SEVIPER, + SpeciesId.CLAMPERL, + SpeciesId.WIMPOD, + SpeciesId.CLOBBOPUS, ], [TrainerPoolTier.RARE]: [ - Species.MANTYKE, - Species.TYMPOLE, - Species.SKRELP, - Species.ARROKUDA, - Species.WIGLETT, - Species.HISUI_QWILFISH, - Species.PALDEA_WOOPER, + SpeciesId.MANTYKE, + SpeciesId.TYMPOLE, + SpeciesId.SKRELP, + SpeciesId.ARROKUDA, + SpeciesId.WIGLETT, + SpeciesId.HISUI_QWILFISH, + SpeciesId.PALDEA_WOOPER, ], - [TrainerPoolTier.SUPER_RARE]: [Species.BASCULEGION, Species.DONDOZO], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.BASCULEGION, SpeciesId.DONDOZO], }), [TrainerType.MATT]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("aqua_admin", "aqua", [Species.SHARPEDO]) + .initForEvilTeamAdmin("aqua_admin", "aqua", [SpeciesId.SHARPEDO]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_aqua_magma_grunt") @@ -2066,7 +2108,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), [TrainerType.SHELLY]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("aqua_admin_female", "aqua", [Species.SHARPEDO]) + .initForEvilTeamAdmin("aqua_admin_female", "aqua", [SpeciesId.SHARPEDO]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_aqua_magma_grunt") @@ -2083,40 +2125,40 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.WURMPLE, - Species.SHINX, - Species.BURMY, - Species.DRIFLOON, - Species.GLAMEOW, - Species.STUNKY, - Species.BRONZOR, - Species.CROAGUNK, - Species.CARNIVINE, + SpeciesId.WURMPLE, + SpeciesId.SHINX, + SpeciesId.BURMY, + SpeciesId.DRIFLOON, + SpeciesId.GLAMEOW, + SpeciesId.STUNKY, + SpeciesId.BRONZOR, + SpeciesId.CROAGUNK, + SpeciesId.CARNIVINE, ], [TrainerPoolTier.UNCOMMON]: [ - Species.ZUBAT, - Species.LICKITUNG, - Species.RHYHORN, - Species.TANGELA, - Species.YANMA, - Species.GLIGAR, - Species.SWINUB, - Species.SKORUPI, + SpeciesId.ZUBAT, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.TANGELA, + SpeciesId.YANMA, + SpeciesId.GLIGAR, + SpeciesId.SWINUB, + SpeciesId.SKORUPI, ], [TrainerPoolTier.RARE]: [ - Species.SNEASEL, - Species.TEDDIURSA, - Species.ELEKID, - Species.MAGBY, - Species.DUSKULL, - Species.HISUI_GROWLITHE, - Species.HISUI_QWILFISH, + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.DUSKULL, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_QWILFISH, ], - [TrainerPoolTier.SUPER_RARE]: [Species.SPIRITOMB, Species.ROTOM, Species.HISUI_SNEASEL], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.SPIRITOMB, SpeciesId.ROTOM, SpeciesId.HISUI_SNEASEL], }), [TrainerType.JUPITER]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("galactic_commander_female", "galactic", [Species.SKUNTANK]) + .initForEvilTeamAdmin("galactic_commander_female", "galactic", [SpeciesId.SKUNTANK]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_galactic_admin") @@ -2124,7 +2166,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), [TrainerType.MARS]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("galactic_commander_female", "galactic", [Species.PURUGLY]) + .initForEvilTeamAdmin("galactic_commander_female", "galactic", [SpeciesId.PURUGLY]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_galactic_admin") @@ -2132,7 +2174,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), [TrainerType.SATURN]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("galactic_commander", "galactic", [Species.TOXICROAK]) + .initForEvilTeamAdmin("galactic_commander", "galactic", [SpeciesId.TOXICROAK]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_galactic_admin") @@ -2149,42 +2191,42 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.PATRAT, - Species.LILLIPUP, - Species.PURRLOIN, - Species.WOOBAT, - Species.TYMPOLE, - Species.SANDILE, - Species.SCRAGGY, - Species.TRUBBISH, - Species.VANILLITE, + SpeciesId.PATRAT, + SpeciesId.LILLIPUP, + SpeciesId.PURRLOIN, + SpeciesId.WOOBAT, + SpeciesId.TYMPOLE, + SpeciesId.SANDILE, + SpeciesId.SCRAGGY, + SpeciesId.TRUBBISH, + SpeciesId.VANILLITE, ], [TrainerPoolTier.UNCOMMON]: [ - Species.TIMBURR, - Species.VENIPEDE, - Species.DARUMAKA, - Species.FOONGUS, - Species.FRILLISH, - Species.JOLTIK, - Species.KLINK, - Species.CUBCHOO, - Species.GOLETT, + SpeciesId.TIMBURR, + SpeciesId.VENIPEDE, + SpeciesId.DARUMAKA, + SpeciesId.FOONGUS, + SpeciesId.FRILLISH, + SpeciesId.JOLTIK, + SpeciesId.KLINK, + SpeciesId.CUBCHOO, + SpeciesId.GOLETT, ], [TrainerPoolTier.RARE]: [ - Species.DRILBUR, - Species.ZORUA, - Species.MIENFOO, - Species.PAWNIARD, - Species.BOUFFALANT, - Species.RUFFLET, - Species.VULLABY, - Species.DURANT, + SpeciesId.DRILBUR, + SpeciesId.ZORUA, + SpeciesId.MIENFOO, + SpeciesId.PAWNIARD, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.VULLABY, + SpeciesId.DURANT, ], - [TrainerPoolTier.SUPER_RARE]: [Species.AXEW, Species.DRUDDIGON, Species.DEINO, Species.HISUI_ZORUA], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.AXEW, SpeciesId.DRUDDIGON, SpeciesId.DEINO, SpeciesId.HISUI_ZORUA], }), [TrainerType.ZINZOLIN]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("plasma_sage", "plasma_zinzolin", [Species.CRYOGONAL]) + .initForEvilTeamAdmin("plasma_sage", "plasma_zinzolin", [SpeciesId.CRYOGONAL]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_plasma_grunt") @@ -2192,7 +2234,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), [TrainerType.COLRESS]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("plasma_boss", "plasma_colress", [Species.KLINKLANG]) + .initForEvilTeamAdmin("plasma_boss", "plasma_colress", [SpeciesId.KLINKLANG]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_colress") .setMixedBattleBgm("battle_colress") @@ -2209,36 +2251,36 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.HOUNDOUR, - Species.GULPIN, - Species.SKORUPI, - Species.CROAGUNK, - Species.PURRLOIN, - Species.SCRAGGY, - Species.FLETCHLING, - Species.SCATTERBUG, - Species.LITLEO, - Species.ESPURR, - Species.INKAY, + SpeciesId.HOUNDOUR, + SpeciesId.GULPIN, + SpeciesId.SKORUPI, + SpeciesId.CROAGUNK, + SpeciesId.PURRLOIN, + SpeciesId.SCRAGGY, + SpeciesId.FLETCHLING, + SpeciesId.SCATTERBUG, + SpeciesId.LITLEO, + SpeciesId.ESPURR, + SpeciesId.INKAY, ], [TrainerPoolTier.UNCOMMON]: [ - Species.POOCHYENA, - Species.ELECTRIKE, - Species.FOONGUS, - Species.PANCHAM, - Species.BINACLE, - Species.SKRELP, - Species.CLAUNCHER, - Species.HELIOPTILE, - Species.PHANTUMP, - Species.PUMPKABOO, + SpeciesId.POOCHYENA, + SpeciesId.ELECTRIKE, + SpeciesId.FOONGUS, + SpeciesId.PANCHAM, + SpeciesId.BINACLE, + SpeciesId.SKRELP, + SpeciesId.CLAUNCHER, + SpeciesId.HELIOPTILE, + SpeciesId.PHANTUMP, + SpeciesId.PUMPKABOO, ], - [TrainerPoolTier.RARE]: [Species.SNEASEL, Species.LITWICK, Species.PAWNIARD, Species.NOIBAT], - [TrainerPoolTier.SUPER_RARE]: [Species.SLIGGOO, Species.HISUI_SLIGGOO, Species.HISUI_AVALUGG], + [TrainerPoolTier.RARE]: [SpeciesId.SNEASEL, SpeciesId.LITWICK, SpeciesId.PAWNIARD, SpeciesId.NOIBAT], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.SLIGGOO, SpeciesId.HISUI_SLIGGOO, SpeciesId.HISUI_AVALUGG], }), [TrainerType.BRYONY]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("flare_admin_female", "flare", [Species.LIEPARD]) + .initForEvilTeamAdmin("flare_admin_female", "flare", [SpeciesId.LIEPARD]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_flare_grunt") @@ -2246,7 +2288,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), [TrainerType.XEROSIC]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("flare_admin", "flare", [Species.MALAMAR]) + .initForEvilTeamAdmin("flare_admin", "flare", [SpeciesId.MALAMAR]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_flare_grunt") @@ -2263,49 +2305,49 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.CORSOLA, - Species.LILLIPUP, - Species.PIKIPEK, - Species.YUNGOOS, - Species.ROCKRUFF, - Species.MORELULL, - Species.BOUNSWEET, - Species.COMFEY, - Species.KOMALA, - Species.TOGEDEMARU, - Species.ALOLA_RAICHU, - Species.ALOLA_DIGLETT, - Species.ALOLA_GEODUDE, - Species.ALOLA_EXEGGUTOR, + SpeciesId.CORSOLA, + SpeciesId.LILLIPUP, + SpeciesId.PIKIPEK, + SpeciesId.YUNGOOS, + SpeciesId.ROCKRUFF, + SpeciesId.MORELULL, + SpeciesId.BOUNSWEET, + SpeciesId.COMFEY, + SpeciesId.KOMALA, + SpeciesId.TOGEDEMARU, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_EXEGGUTOR, ], [TrainerPoolTier.UNCOMMON]: [ - Species.POLIWAG, - Species.CRABRAWLER, - Species.ORICORIO, - Species.CUTIEFLY, - Species.WISHIWASHI, - Species.MUDBRAY, - Species.STUFFUL, - Species.ORANGURU, - Species.PASSIMIAN, - Species.PYUKUMUKU, - Species.BRUXISH, - Species.ALOLA_SANDSHREW, - Species.ALOLA_VULPIX, - Species.ALOLA_MAROWAK, + SpeciesId.POLIWAG, + SpeciesId.CRABRAWLER, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.WISHIWASHI, + SpeciesId.MUDBRAY, + SpeciesId.STUFFUL, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.PYUKUMUKU, + SpeciesId.BRUXISH, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_MAROWAK, ], [TrainerPoolTier.RARE]: [ - Species.MINIOR, - Species.TURTONATOR, - Species.MIMIKYU, - Species.DRAMPA, - Species.GALAR_CORSOLA, + SpeciesId.MINIOR, + SpeciesId.TURTONATOR, + SpeciesId.MIMIKYU, + SpeciesId.DRAMPA, + SpeciesId.GALAR_CORSOLA, ], - [TrainerPoolTier.SUPER_RARE]: [Species.PORYGON, Species.JANGMO_O], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.PORYGON, SpeciesId.JANGMO_O], }), [TrainerType.FABA]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("aether_admin", "aether", [Species.HYPNO]) + .initForEvilTeamAdmin("aether_admin", "aether", [SpeciesId.HYPNO]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_aether_grunt") @@ -2322,44 +2364,44 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.EKANS, - Species.VENONAT, - Species.DROWZEE, - Species.KOFFING, - Species.SPINARAK, - Species.SCRAGGY, - Species.TRUBBISH, - Species.MAREANIE, - Species.SALANDIT, - Species.ALOLA_RATTATA, - Species.ALOLA_MEOWTH, - Species.ALOLA_GRIMER, + SpeciesId.EKANS, + SpeciesId.VENONAT, + SpeciesId.DROWZEE, + SpeciesId.KOFFING, + SpeciesId.SPINARAK, + SpeciesId.SCRAGGY, + SpeciesId.TRUBBISH, + SpeciesId.MAREANIE, + SpeciesId.SALANDIT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_GRIMER, ], [TrainerPoolTier.UNCOMMON]: [ - Species.ZUBAT, - Species.GASTLY, - Species.HOUNDOUR, - Species.SABLEYE, - Species.VENIPEDE, - Species.SANDILE, - Species.VULLABY, - Species.PANCHAM, - Species.FOMANTIS, - Species.ALOLA_MAROWAK, + SpeciesId.ZUBAT, + SpeciesId.GASTLY, + SpeciesId.HOUNDOUR, + SpeciesId.SABLEYE, + SpeciesId.VENIPEDE, + SpeciesId.SANDILE, + SpeciesId.VULLABY, + SpeciesId.PANCHAM, + SpeciesId.FOMANTIS, + SpeciesId.ALOLA_MAROWAK, ], [TrainerPoolTier.RARE]: [ - Species.PAWNIARD, - Species.WISHIWASHI, - Species.SANDYGAST, - Species.MIMIKYU, - Species.DHELMISE, - Species.NYMBLE, + SpeciesId.PAWNIARD, + SpeciesId.WISHIWASHI, + SpeciesId.SANDYGAST, + SpeciesId.MIMIKYU, + SpeciesId.DHELMISE, + SpeciesId.NYMBLE, ], - [TrainerPoolTier.SUPER_RARE]: [Species.GRUBBIN, Species.DEWPIDER], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.GRUBBIN, SpeciesId.DEWPIDER], }), [TrainerType.PLUMERIA]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("skull_admin", "skull", [Species.SALAZZLE]) + .initForEvilTeamAdmin("skull_admin", "skull", [SpeciesId.SALAZZLE]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_skull_admin") @@ -2376,43 +2418,43 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.STEELIX, - Species.MAWILE, - Species.FERROSEED, - Species.KLINK, - Species.SKWOVET, - Species.ROOKIDEE, - Species.ROLYCOLY, - Species.CUFANT, - Species.GALAR_MEOWTH, - Species.GALAR_ZIGZAGOON, + SpeciesId.STEELIX, + SpeciesId.MAWILE, + SpeciesId.FERROSEED, + SpeciesId.KLINK, + SpeciesId.SKWOVET, + SpeciesId.ROOKIDEE, + SpeciesId.ROLYCOLY, + SpeciesId.CUFANT, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_ZIGZAGOON, ], [TrainerPoolTier.UNCOMMON]: [ - Species.MAGNEMITE, - Species.RIOLU, - Species.DRILBUR, - Species.APPLIN, - Species.CRAMORANT, - Species.ARROKUDA, - Species.SINISTEA, - Species.HATENNA, - Species.FALINKS, - Species.GALAR_PONYTA, - Species.GALAR_YAMASK, + SpeciesId.MAGNEMITE, + SpeciesId.RIOLU, + SpeciesId.DRILBUR, + SpeciesId.APPLIN, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.SINISTEA, + SpeciesId.HATENNA, + SpeciesId.FALINKS, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_YAMASK, ], [TrainerPoolTier.RARE]: [ - Species.SCIZOR, - Species.BELDUM, - Species.HONEDGE, - Species.GALAR_FARFETCHD, - Species.GALAR_MR_MIME, - Species.GALAR_DARUMAKA, + SpeciesId.SCIZOR, + SpeciesId.BELDUM, + SpeciesId.HONEDGE, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_DARUMAKA, ], - [TrainerPoolTier.SUPER_RARE]: [Species.DURALUDON, Species.DREEPY], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.DURALUDON, SpeciesId.DREEPY], }), [TrainerType.OLEANA]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("macro_admin", "macro_cosmos", [Species.GARBODOR]) + .initForEvilTeamAdmin("macro_admin", "macro_cosmos", [SpeciesId.GARBODOR]) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_oleana") @@ -2429,57 +2471,57 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ - Species.DUNSPARCE, - Species.HOUNDOUR, - Species.AZURILL, - Species.GULPIN, - Species.FOONGUS, - Species.FLETCHLING, - Species.LITLEO, - Species.FLABEBE, - Species.CRABRAWLER, - Species.NYMBLE, - Species.PAWMI, - Species.FIDOUGH, - Species.SQUAWKABILLY, - Species.MASCHIFF, - Species.SHROODLE, - Species.KLAWF, - Species.WIGLETT, - Species.PALDEA_WOOPER, + SpeciesId.DUNSPARCE, + SpeciesId.HOUNDOUR, + SpeciesId.AZURILL, + SpeciesId.GULPIN, + SpeciesId.FOONGUS, + SpeciesId.FLETCHLING, + SpeciesId.LITLEO, + SpeciesId.FLABEBE, + SpeciesId.CRABRAWLER, + SpeciesId.NYMBLE, + SpeciesId.PAWMI, + SpeciesId.FIDOUGH, + SpeciesId.SQUAWKABILLY, + SpeciesId.MASCHIFF, + SpeciesId.SHROODLE, + SpeciesId.KLAWF, + SpeciesId.WIGLETT, + SpeciesId.PALDEA_WOOPER, ], [TrainerPoolTier.UNCOMMON]: [ - Species.KOFFING, - Species.EEVEE, - Species.GIRAFARIG, - Species.RALTS, - Species.TORKOAL, - Species.SEVIPER, - Species.SCRAGGY, - Species.ZORUA, - Species.MIMIKYU, - Species.IMPIDIMP, - Species.FALINKS, - Species.CAPSAKID, - Species.TINKATINK, - Species.BOMBIRDIER, - Species.CYCLIZAR, - Species.FLAMIGO, - Species.PALDEA_TAUROS, + SpeciesId.KOFFING, + SpeciesId.EEVEE, + SpeciesId.GIRAFARIG, + SpeciesId.RALTS, + SpeciesId.TORKOAL, + SpeciesId.SEVIPER, + SpeciesId.SCRAGGY, + SpeciesId.ZORUA, + SpeciesId.MIMIKYU, + SpeciesId.IMPIDIMP, + SpeciesId.FALINKS, + SpeciesId.CAPSAKID, + SpeciesId.TINKATINK, + SpeciesId.BOMBIRDIER, + SpeciesId.CYCLIZAR, + SpeciesId.FLAMIGO, + SpeciesId.PALDEA_TAUROS, ], [TrainerPoolTier.RARE]: [ - Species.MANKEY, - Species.PAWNIARD, - Species.CHARCADET, - Species.FLITTLE, - Species.VAROOM, - Species.ORTHWORM, + SpeciesId.MANKEY, + SpeciesId.PAWNIARD, + SpeciesId.CHARCADET, + SpeciesId.FLITTLE, + SpeciesId.VAROOM, + SpeciesId.ORTHWORM, ], - [TrainerPoolTier.SUPER_RARE]: [Species.DONDOZO, Species.GIMMIGHOUL], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.DONDOZO, SpeciesId.GIMMIGHOUL], }), [TrainerType.GIACOMO]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("star_admin", "star_dark", [Species.KINGAMBIT], PokemonType.DARK) + .initForEvilTeamAdmin("star_admin", "star_dark", [SpeciesId.KINGAMBIT], PokemonType.DARK) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_star_admin") @@ -2487,19 +2529,19 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.REVAVROOM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; // Segin Starmobile p.moveset = [ - new PokemonMove(Moves.WICKED_TORQUE), - new PokemonMove(Moves.SPIN_OUT), - new PokemonMove(Moves.SHIFT_GEAR), - new PokemonMove(Moves.HIGH_HORSEPOWER), + new PokemonMove(MoveId.WICKED_TORQUE), + new PokemonMove(MoveId.SPIN_OUT), + new PokemonMove(MoveId.SHIFT_GEAR), + new PokemonMove(MoveId.HIGH_HORSEPOWER), ]; }), ), [TrainerType.MELA]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("star_admin", "star_fire", [Species.ARMAROUGE], PokemonType.FIRE) + .initForEvilTeamAdmin("star_admin", "star_fire", [SpeciesId.ARMAROUGE], PokemonType.FIRE) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_star_admin") @@ -2507,19 +2549,19 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.REVAVROOM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { p.formIndex = 2; // Schedar Starmobile p.moveset = [ - new PokemonMove(Moves.BLAZING_TORQUE), - new PokemonMove(Moves.SPIN_OUT), - new PokemonMove(Moves.SHIFT_GEAR), - new PokemonMove(Moves.HIGH_HORSEPOWER), + new PokemonMove(MoveId.BLAZING_TORQUE), + new PokemonMove(MoveId.SPIN_OUT), + new PokemonMove(MoveId.SHIFT_GEAR), + new PokemonMove(MoveId.HIGH_HORSEPOWER), ]; }), ), [TrainerType.ATTICUS]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("star_admin", "star_poison", [Species.REVAVROOM], PokemonType.POISON) + .initForEvilTeamAdmin("star_admin", "star_poison", [SpeciesId.REVAVROOM], PokemonType.POISON) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_star_admin") @@ -2527,19 +2569,19 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.REVAVROOM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { p.formIndex = 3; // Navi Starmobile p.moveset = [ - new PokemonMove(Moves.NOXIOUS_TORQUE), - new PokemonMove(Moves.SPIN_OUT), - new PokemonMove(Moves.SHIFT_GEAR), - new PokemonMove(Moves.HIGH_HORSEPOWER), + new PokemonMove(MoveId.NOXIOUS_TORQUE), + new PokemonMove(MoveId.SPIN_OUT), + new PokemonMove(MoveId.SHIFT_GEAR), + new PokemonMove(MoveId.HIGH_HORSEPOWER), ]; }), ), [TrainerType.ORTEGA]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("star_admin", "star_fairy", [Species.DACHSBUN], PokemonType.FAIRY) + .initForEvilTeamAdmin("star_admin", "star_fairy", [SpeciesId.DACHSBUN], PokemonType.FAIRY) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_star_admin") @@ -2547,19 +2589,19 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.REVAVROOM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { p.formIndex = 4; // Ruchbah Starmobile p.moveset = [ - new PokemonMove(Moves.MAGICAL_TORQUE), - new PokemonMove(Moves.SPIN_OUT), - new PokemonMove(Moves.SHIFT_GEAR), - new PokemonMove(Moves.HIGH_HORSEPOWER), + new PokemonMove(MoveId.MAGICAL_TORQUE), + new PokemonMove(MoveId.SPIN_OUT), + new PokemonMove(MoveId.SHIFT_GEAR), + new PokemonMove(MoveId.HIGH_HORSEPOWER), ]; }), ), [TrainerType.ERI]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("star_admin", "star_fighting", [Species.ANNIHILAPE], PokemonType.FIGHTING) + .initForEvilTeamAdmin("star_admin", "star_fighting", [SpeciesId.ANNIHILAPE], PokemonType.FIGHTING) .setEncounterBgm(TrainerType.PLASMA_GRUNT) .setBattleBgm("battle_plasma_grunt") .setMixedBattleBgm("battle_star_admin") @@ -2567,13 +2609,13 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.REVAVROOM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { p.formIndex = 5; // Caph Starmobile p.moveset = [ - new PokemonMove(Moves.COMBAT_TORQUE), - new PokemonMove(Moves.SPIN_OUT), - new PokemonMove(Moves.SHIFT_GEAR), - new PokemonMove(Moves.HIGH_HORSEPOWER), + new PokemonMove(MoveId.COMBAT_TORQUE), + new PokemonMove(MoveId.SPIN_OUT), + new PokemonMove(MoveId.SHIFT_GEAR), + new PokemonMove(MoveId.HIGH_HORSEPOWER), ]; }), ), @@ -2858,27 +2900,27 @@ export const trainerConfigs: TrainerConfigs = { .setMixedBattleBgm("battle_kanto_gym") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.DEWGONG], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.DEWGONG], TrainerSlot.TRAINER, true, p => { p.abilityIndex = 0; // Thick Fat p.generateAndPopulateMoveset(); }), ) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.SLOWBRO, Species.GALAR_SLOWBRO], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SLOWBRO, SpeciesId.GALAR_SLOWBRO], TrainerSlot.TRAINER, true, p => { // Tera Ice Slowbro/G-Slowbro p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.ICE_BEAM)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.ICE_BEAM)) { // Check if Ice Beam is in the moveset, if not, replace the third move with Ice Beam. - p.moveset[2] = new PokemonMove(Moves.ICE_BEAM); + p.moveset[2] = new PokemonMove(MoveId.ICE_BEAM); } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.JYNX])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.CLOYSTER, Species.ALOLA_SANDSLASH])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.JYNX])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.CLOYSTER, SpeciesId.ALOLA_SANDSLASH])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.LAPRAS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.LAPRAS], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -2887,23 +2929,23 @@ export const trainerConfigs: TrainerConfigs = { .initForEliteFour(signatureSpecies["BRUNO"], true, PokemonType.FIGHTING, 2) .setBattleBgm("battle_kanto_gym") .setMixedBattleBgm("battle_kanto_gym") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.HITMONLEE, Species.HITMONCHAN, Species.HITMONTOP])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.HITMONLEE, SpeciesId.HITMONCHAN, SpeciesId.HITMONTOP])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.STEELIX], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.STEELIX], TrainerSlot.TRAINER, true, p => { // Tera Fighting Steelix p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.BODY_PRESS)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.BODY_PRESS)) { // Check if Body Press is in the moveset, if not, replace the third move with Body Press. - p.moveset[2] = new PokemonMove(Moves.BODY_PRESS); + p.moveset[2] = new PokemonMove(MoveId.BODY_PRESS); } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.POLIWRATH])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.ANNIHILAPE])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.POLIWRATH])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.ANNIHILAPE])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.MACHAMP], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.MACHAMP], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -2912,23 +2954,23 @@ export const trainerConfigs: TrainerConfigs = { .initForEliteFour(signatureSpecies["AGATHA"], false, PokemonType.GHOST, 2) .setBattleBgm("battle_kanto_gym") .setMixedBattleBgm("battle_kanto_gym") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.MISMAGIUS])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.MISMAGIUS])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.ARBOK, Species.WEEZING], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ARBOK, SpeciesId.WEEZING], TrainerSlot.TRAINER, true, p => { // Tera Ghost Arbok/Weezing p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.TERA_BLAST)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.TERA_BLAST)) { // Check if Tera Blast is in the moveset, if not, replace the third move with Tera Blast. - p.moveset[2] = new PokemonMove(Moves.TERA_BLAST); + p.moveset[2] = new PokemonMove(MoveId.TERA_BLAST); } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.ALOLA_MAROWAK])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.CURSOLA])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.ALOLA_MAROWAK])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.CURSOLA])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.GENGAR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GENGAR], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -2938,23 +2980,23 @@ export const trainerConfigs: TrainerConfigs = { .initForEliteFour(signatureSpecies["LANCE"], true, PokemonType.DRAGON, 2) .setBattleBgm("battle_kanto_gym") .setMixedBattleBgm("battle_kanto_gym") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.KINGDRA])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.KINGDRA])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.GYARADOS, Species.AERODACTYL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GYARADOS, SpeciesId.AERODACTYL], TrainerSlot.TRAINER, true, p => { // Tera Dragon Gyarados/Aerodactyl p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.TERA_BLAST)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.TERA_BLAST)) { // Check if Tera Blast is in the moveset, if not, replace the third move with Tera Blast. - p.moveset[2] = new PokemonMove(Moves.TERA_BLAST); + p.moveset[2] = new PokemonMove(MoveId.TERA_BLAST); } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.ALOLA_EXEGGUTOR])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.SALAMENCE])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.ALOLA_EXEGGUTOR])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.SALAMENCE])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.DRAGONITE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.DRAGONITE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -2963,13 +3005,13 @@ export const trainerConfigs: TrainerConfigs = { .initForEliteFour(signatureSpecies["WILL"], true, PokemonType.PSYCHIC, 2) .setBattleBgm("battle_johto_gym") .setMixedBattleBgm("battle_johto_gym") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.JYNX])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.SLOWKING, Species.GALAR_SLOWKING])) // Tera Psychic Slowking/G-Slowking - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.EXEGGUTOR])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.WYRDEER, Species.FARIGIRAF])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.JYNX])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.SLOWKING, SpeciesId.GALAR_SLOWKING])) // Tera Psychic Slowking/G-Slowking + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.EXEGGUTOR])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.WYRDEER, SpeciesId.FARIGIRAF])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.XATU], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.XATU], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -2980,17 +3022,17 @@ export const trainerConfigs: TrainerConfigs = { .setMixedBattleBgm("battle_johto_gym") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.VENOMOTH], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.VENOMOTH], TrainerSlot.TRAINER, true, p => { p.abilityIndex = 1; // Tinted Lens p.generateAndPopulateMoveset(); }), ) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.MUK, Species.WEEZING])) // Tera Poison Muk/Weezing - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.TENTACRUEL])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.SNEASLER, Species.OVERQWIL])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MUK, SpeciesId.WEEZING])) // Tera Poison Muk/Weezing + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.TENTACRUEL])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.SNEASLER, SpeciesId.OVERQWIL])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.CROBAT], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CROBAT], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -2999,23 +3041,23 @@ export const trainerConfigs: TrainerConfigs = { .initForEliteFour(signatureSpecies["KAREN"], false, PokemonType.DARK, 2) .setBattleBgm("battle_johto_gym") .setMixedBattleBgm("battle_johto_gym") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.UMBREON])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.UMBREON])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.GENGAR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GENGAR], TrainerSlot.TRAINER, true, p => { // Tera Dark Gengar p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.DARK_PULSE)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.DARK_PULSE)) { // Check if Dark Pulse is in the moveset, if not, replace the third move with Dark Pulse. - p.moveset[2] = new PokemonMove(Moves.DARK_PULSE); + p.moveset[2] = new PokemonMove(MoveId.DARK_PULSE); } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.HONCHKROW])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.WEAVILE])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.HONCHKROW])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.WEAVILE])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.HOUNDOOM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.HOUNDOOM], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3025,17 +3067,17 @@ export const trainerConfigs: TrainerConfigs = { .setMixedBattleBgm("battle_hoenn_elite") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.MIGHTYENA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.MIGHTYENA], TrainerSlot.TRAINER, true, p => { p.abilityIndex = 0; // Intimidate p.generateAndPopulateMoveset(); }), ) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.OBSTAGOON])) // Tera Dark Obstagoon - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.SHIFTRY, Species.CACTURNE])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.SHARPEDO, Species.CRAWDAUNT])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.OBSTAGOON])) // Tera Dark Obstagoon + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.SHIFTRY, SpeciesId.CACTURNE])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.SHARPEDO, SpeciesId.CRAWDAUNT])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.ABSOL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ABSOL], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3043,19 +3085,19 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.PHOEBE]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["PHOEBE"], false, PokemonType.GHOST, 2) .setMixedBattleBgm("battle_hoenn_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.SABLEYE])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.BANETTE])) // Tera Ghost Banette - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.DRIFBLIM, Species.MISMAGIUS])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.SABLEYE])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.BANETTE])) // Tera Ghost Banette + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.DRIFBLIM, SpeciesId.MISMAGIUS])) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.ORICORIO, Species.ALOLA_MAROWAK], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ORICORIO, SpeciesId.ALOLA_MAROWAK], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); - p.formIndex = p.species.speciesId === Species.ORICORIO ? 3 : 0; // Oricorio-Sensu + p.formIndex = p.species.speciesId === SpeciesId.ORICORIO ? 3 : 0; // Oricorio-Sensu }), ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.DUSKNOIR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.DUSKNOIR], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3065,17 +3107,17 @@ export const trainerConfigs: TrainerConfigs = { .setMixedBattleBgm("battle_hoenn_elite") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.ABOMASNOW], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ABOMASNOW], TrainerSlot.TRAINER, true, p => { p.abilityIndex = 0; // Snow Warning p.generateAndPopulateMoveset(); }), ) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.GLALIE])) // Tera Ice Glalie - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.FROSLASS])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.ALOLA_NINETALES])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.GLALIE])) // Tera Ice Glalie + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.FROSLASS])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.ALOLA_NINETALES])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.WALREIN], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.WALREIN], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3083,23 +3125,23 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.DRAKE]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["DRAKE"], true, PokemonType.DRAGON, 2) .setMixedBattleBgm("battle_hoenn_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.ALTARIA])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.ALTARIA])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.DHELMISE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.DHELMISE], TrainerSlot.TRAINER, true, p => { // Tera Dragon Dhelmise p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.TERA_BLAST)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.TERA_BLAST)) { // Check if Tera Blast is in the moveset, if not, replace the third move with Tera Blast. - p.moveset[2] = new PokemonMove(Moves.TERA_BLAST); + p.moveset[2] = new PokemonMove(MoveId.TERA_BLAST); } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.FLYGON])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.KINGDRA])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.FLYGON])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.KINGDRA])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.SALAMENCE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SALAMENCE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3108,20 +3150,20 @@ export const trainerConfigs: TrainerConfigs = { .initForEliteFour(signatureSpecies["AARON"], true, PokemonType.BUG, 5) .setBattleBgm("battle_sinnoh_gym") .setMixedBattleBgm("battle_sinnoh_gym") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.YANMEGA])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.HERACROSS])) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.VESPIQUEN])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.SCIZOR, Species.KLEAVOR])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.YANMEGA])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.HERACROSS])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.VESPIQUEN])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.SCIZOR, SpeciesId.KLEAVOR])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.DRAPION], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.DRAPION], TrainerSlot.TRAINER, true, p => { // Tera Bug Drapion p.setBoss(true, 2); p.abilityIndex = 1; // Sniper p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.X_SCISSOR)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.X_SCISSOR)) { // Check if X-Scissor is in the moveset, if not, replace the third move with X-Scissor. - p.moveset[2] = new PokemonMove(Moves.X_SCISSOR); + p.moveset[2] = new PokemonMove(MoveId.X_SCISSOR); } }), ), @@ -3129,20 +3171,20 @@ export const trainerConfigs: TrainerConfigs = { .initForEliteFour(signatureSpecies["BERTHA"], false, PokemonType.GROUND, 2) .setBattleBgm("battle_sinnoh_gym") .setMixedBattleBgm("battle_sinnoh_gym") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.WHISCASH])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.WHISCASH])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.HIPPOWDON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.HIPPOWDON], TrainerSlot.TRAINER, true, p => { // Tera Ground Hippowdon p.abilityIndex = 0; // Sand Stream p.generateAndPopulateMoveset(); }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.GLISCOR])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.MAMOSWINE, Species.URSALUNA])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.GLISCOR])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.MAMOSWINE, SpeciesId.URSALUNA])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.RHYPERIOR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.RHYPERIOR], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.abilityIndex = 1; // Solid Rock p.generateAndPopulateMoveset(); @@ -3152,23 +3194,23 @@ export const trainerConfigs: TrainerConfigs = { .initForEliteFour(signatureSpecies["FLINT"], true, PokemonType.FIRE, 2) .setBattleBgm("battle_sinnoh_gym") .setMixedBattleBgm("battle_sinnoh_gym") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.RAPIDASH])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.RAPIDASH])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.STEELIX, Species.LOPUNNY], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.STEELIX, SpeciesId.LOPUNNY], TrainerSlot.TRAINER, true, p => { // Tera Fire Steelix/Lopunny p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.TERA_BLAST)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.TERA_BLAST)) { // Check if Tera Blast is in the moveset, if not, replace the third move with Tera Blast. - p.moveset[2] = new PokemonMove(Moves.TERA_BLAST); + p.moveset[2] = new PokemonMove(MoveId.TERA_BLAST); } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.INFERNAPE])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.ARCANINE, Species.HISUI_ARCANINE])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.INFERNAPE])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.ARCANINE, SpeciesId.HISUI_ARCANINE])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.MAGMORTAR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.MAGMORTAR], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3177,13 +3219,13 @@ export const trainerConfigs: TrainerConfigs = { .initForEliteFour(signatureSpecies["LUCIAN"], true, PokemonType.PSYCHIC, 2) .setBattleBgm("battle_sinnoh_gym") .setMixedBattleBgm("battle_sinnoh_gym") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.ESPEON, Species.ALAKAZAM])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.FARIGIRAF])) // Tera Psychic Farigiraf - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.BRONZONG])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.MR_RIME, Species.HISUI_BRAVIARY])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.ESPEON, SpeciesId.ALAKAZAM])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.FARIGIRAF])) // Tera Psychic Farigiraf + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.BRONZONG])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.MR_RIME, SpeciesId.HISUI_BRAVIARY])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.GALLADE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GALLADE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.abilityIndex = 1; // Sharpness p.generateAndPopulateMoveset(); @@ -3192,13 +3234,13 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.SHAUNTAL]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["SHAUNTAL"], false, PokemonType.GHOST, 2) .setMixedBattleBgm("battle_unova_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.COFAGRIGUS])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.GOLURK])) // Tera Ghost Golurk - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.JELLICENT])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.MISMAGIUS, Species.FROSLASS])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.COFAGRIGUS])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.GOLURK])) // Tera Ghost Golurk + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.JELLICENT])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.MISMAGIUS, SpeciesId.FROSLASS])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.CHANDELURE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CHANDELURE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3206,13 +3248,13 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.MARSHAL]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["MARSHAL"], true, PokemonType.FIGHTING, 2) .setMixedBattleBgm("battle_unova_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.THROH, Species.SAWK])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.MIENSHAO])) // Tera Fighting Mienshao - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.EMBOAR])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.BRELOOM, Species.TOXICROAK])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.THROH, SpeciesId.SAWK])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MIENSHAO])) // Tera Fighting Mienshao + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.EMBOAR])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.BRELOOM, SpeciesId.TOXICROAK])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.CONKELDURR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CONKELDURR], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3220,13 +3262,13 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.GRIMSLEY]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["GRIMSLEY"], true, PokemonType.DARK, 2) .setMixedBattleBgm("battle_unova_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.LIEPARD])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.KROOKODILE])) // Tera Dark Krookodile - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.SCRAFTY])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.ZOROARK, Species.HISUI_SAMUROTT])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.LIEPARD])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.KROOKODILE])) // Tera Dark Krookodile + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.SCRAFTY])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.ZOROARK, SpeciesId.HISUI_SAMUROTT])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.KINGAMBIT], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.KINGAMBIT], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3234,19 +3276,19 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.CAITLIN]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["CAITLIN"], false, PokemonType.PSYCHIC, 2) .setMixedBattleBgm("battle_unova_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.MUSHARNA])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.REUNICLUS])) // Tera Psychic Reuniclus + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.MUSHARNA])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.REUNICLUS])) // Tera Psychic Reuniclus .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.GALLADE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GALLADE], TrainerSlot.TRAINER, true, p => { p.abilityIndex = 1; // Sharpness p.generateAndPopulateMoveset(); }), ) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.SIGILYPH, Species.HISUI_BRAVIARY])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.SIGILYPH, SpeciesId.HISUI_BRAVIARY])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.GOTHITELLE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GOTHITELLE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3256,23 +3298,23 @@ export const trainerConfigs: TrainerConfigs = { .setMixedBattleBgm("battle_kalos_elite") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.PYROAR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.PYROAR], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.gender = Gender.FEMALE; }), ) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.HOUNDOOM])) // Tera Fire Houndoom + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.HOUNDOOM])) // Tera Fire Houndoom .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.TORKOAL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TORKOAL], TrainerSlot.TRAINER, true, p => { p.abilityIndex = 1; // Drought p.generateAndPopulateMoveset(); }), ) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.CHANDELURE, Species.DELPHOX])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.CHANDELURE, SpeciesId.DELPHOX])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.TALONFLAME], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TALONFLAME], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3280,13 +3322,13 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.SIEBOLD]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["SIEBOLD"], true, PokemonType.WATER, 2) .setMixedBattleBgm("battle_kalos_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.CLAWITZER])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.GYARADOS])) // Tera Water Gyarados - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.STARMIE])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.BLASTOISE, Species.DONDOZO])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.CLAWITZER])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.GYARADOS])) // Tera Water Gyarados + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.STARMIE])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.BLASTOISE, SpeciesId.DONDOZO])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.BARBARACLE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.BARBARACLE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.abilityIndex = 1; // Tough Claws p.generateAndPopulateMoveset(); @@ -3295,23 +3337,23 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.WIKSTROM]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["WIKSTROM"], true, PokemonType.STEEL, 2) .setMixedBattleBgm("battle_kalos_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.KLEFKI])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.KLEFKI])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.CERULEDGE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CERULEDGE], TrainerSlot.TRAINER, true, p => { // Tera Steel Ceruledge p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.IRON_HEAD)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.IRON_HEAD)) { // Check if Iron Head is in the moveset, if not, replace the third move with Iron Head. - p.moveset[2] = new PokemonMove(Moves.IRON_HEAD); + p.moveset[2] = new PokemonMove(MoveId.IRON_HEAD); } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.SCIZOR])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.CORVIKNIGHT])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.SCIZOR])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.CORVIKNIGHT])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.AEGISLASH], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.AEGISLASH], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3319,13 +3361,13 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.DRASNA]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["DRASNA"], false, PokemonType.DRAGON, 2) .setMixedBattleBgm("battle_kalos_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.DRAGALGE])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.GARCHOMP])) // Tera Dragon Garchomp - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.ALTARIA])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.DRUDDIGON])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.DRAGALGE])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.GARCHOMP])) // Tera Dragon Garchomp + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.ALTARIA])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.DRUDDIGON])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.NOIVERN], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.NOIVERN], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3333,23 +3375,23 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.HALA]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["HALA"], true, PokemonType.FIGHTING, 2) .setMixedBattleBgm("battle_alola_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.HARIYAMA])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.HARIYAMA])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.INCINEROAR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.INCINEROAR], TrainerSlot.TRAINER, true, p => { // Tera Fighting Incineroar p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.CROSS_CHOP)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.CROSS_CHOP)) { // Check if Cross Chop is in the moveset, if not, replace the third move with Cross Chop. - p.moveset[2] = new PokemonMove(Moves.CROSS_CHOP); + p.moveset[2] = new PokemonMove(MoveId.CROSS_CHOP); } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.BEWEAR])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.POLIWRATH, Species.ANNIHILAPE])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.BEWEAR])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.POLIWRATH, SpeciesId.ANNIHILAPE])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.CRABOMINABLE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CRABOMINABLE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3357,13 +3399,13 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.MOLAYNE]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["MOLAYNE"], true, PokemonType.STEEL, 2) .setMixedBattleBgm("battle_alola_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.KLEFKI])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.ALOLA_SANDSLASH])) // Tera Steel A-Sandslash - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.MAGNEZONE])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.METAGROSS, Species.KINGAMBIT])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.KLEFKI])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.ALOLA_SANDSLASH])) // Tera Steel A-Sandslash + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.MAGNEZONE])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.METAGROSS, SpeciesId.KINGAMBIT])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.ALOLA_DUGTRIO], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ALOLA_DUGTRIO], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3373,17 +3415,17 @@ export const trainerConfigs: TrainerConfigs = { .setMixedBattleBgm("battle_alola_elite") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.GIGALITH], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GIGALITH], TrainerSlot.TRAINER, true, p => { p.abilityIndex = 1; // Sand Stream p.generateAndPopulateMoveset(); }), ) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.PROBOPASS])) // Tera Rock Probopass - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.ALOLA_GOLEM])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.RELICANTH, Species.CARBINK])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.PROBOPASS])) // Tera Rock Probopass + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.ALOLA_GOLEM])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.RELICANTH, SpeciesId.CARBINK])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.LYCANROC], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.LYCANROC], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.formIndex = 1; p.generateAndPopulateMoveset(); @@ -3392,13 +3434,13 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.ACEROLA]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["ACEROLA"], false, PokemonType.GHOST, 2) .setMixedBattleBgm("battle_alola_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.DRIFBLIM])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.MIMIKYU])) // Tera Ghost Mimikyu - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.DHELMISE])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.FROSLASS])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.DRIFBLIM])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MIMIKYU])) // Tera Ghost Mimikyu + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.DHELMISE])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.FROSLASS])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.PALOSSAND], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.PALOSSAND], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3406,23 +3448,23 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.KAHILI]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["KAHILI"], false, PokemonType.FLYING, 2) .setMixedBattleBgm("battle_alola_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.HAWLUCHA])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.HAWLUCHA])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.DECIDUEYE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.DECIDUEYE], TrainerSlot.TRAINER, true, p => { // Tera Flying Decidueye p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.BRAVE_BIRD)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.BRAVE_BIRD)) { // Check if Brave Bird is in the moveset, if not, replace the third move with Brave Bird. - p.moveset[2] = new PokemonMove(Moves.BRAVE_BIRD); + p.moveset[2] = new PokemonMove(MoveId.BRAVE_BIRD); } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.BRAVIARY, Species.MANDIBUZZ])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.ORICORIO])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.BRAVIARY, SpeciesId.MANDIBUZZ])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.ORICORIO])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.TOUCANNON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TOUCANNON], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3431,23 +3473,23 @@ export const trainerConfigs: TrainerConfigs = { .setName("Marnie") .initForEliteFour(signatureSpecies["MARNIE_ELITE"], false, PokemonType.DARK, 2) .setMixedBattleBgm("battle_galar_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.LIEPARD])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.LIEPARD])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.TOXICROAK], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TOXICROAK], TrainerSlot.TRAINER, true, p => { // Tera Dark Toxicroak p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.SUCKER_PUNCH)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.SUCKER_PUNCH)) { // Check if Sucker Punch is in the moveset, if not, replace the third move with Sucker Punch. - p.moveset[2] = new PokemonMove(Moves.SUCKER_PUNCH); + p.moveset[2] = new PokemonMove(MoveId.SUCKER_PUNCH); } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.SCRAFTY, Species.PANGORO])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.MORPEKO])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.SCRAFTY, SpeciesId.PANGORO])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.MORPEKO])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.GRIMMSNARL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GRIMMSNARL], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3456,29 +3498,29 @@ export const trainerConfigs: TrainerConfigs = { .setName("Nessa") .initForEliteFour(signatureSpecies["NESSA_ELITE"], false, PokemonType.WATER, 2) .setMixedBattleBgm("battle_galar_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.GOLISOPOD])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.GOLISOPOD])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.EISCUE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.EISCUE], TrainerSlot.TRAINER, true, p => { // Tera Water Eiscue p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.LIQUIDATION)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.LIQUIDATION)) { // Check if Liquidation is in the moveset, if not, replace the third move with Liquidation. - p.moveset[2] = new PokemonMove(Moves.LIQUIDATION); + p.moveset[2] = new PokemonMove(MoveId.LIQUIDATION); } }), ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.PELIPPER], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.PELIPPER], TrainerSlot.TRAINER, true, p => { p.abilityIndex = 1; // Drizzle p.generateAndPopulateMoveset(); }), ) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.TOXAPEX])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.TOXAPEX])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.DREDNAW], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.DREDNAW], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3487,13 +3529,13 @@ export const trainerConfigs: TrainerConfigs = { .setName("Bea") .initForEliteFour(signatureSpecies["BEA_ELITE"], false, PokemonType.FIGHTING, 2) .setMixedBattleBgm("battle_galar_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.HAWLUCHA])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.SIRFETCHD])) // Tera Fighting Sirfetch'd - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.GRAPPLOCT, Species.FALINKS])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.HITMONTOP])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.HAWLUCHA])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.SIRFETCHD])) // Tera Fighting Sirfetch'd + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.GRAPPLOCT, SpeciesId.FALINKS])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.HITMONTOP])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.MACHAMP], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.MACHAMP], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3502,13 +3544,13 @@ export const trainerConfigs: TrainerConfigs = { .setName("Allister") .initForEliteFour(signatureSpecies["ALLISTER_ELITE"], true, PokemonType.GHOST, 2) .setMixedBattleBgm("battle_galar_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.DUSKNOIR])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.RUNERIGUS])) // Tera Ghost Runerigus - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.POLTEAGEIST, Species.SINISTCHA])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.CURSOLA])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.DUSKNOIR])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.RUNERIGUS])) // Tera Ghost Runerigus + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.POLTEAGEIST, SpeciesId.SINISTCHA])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.CURSOLA])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.GENGAR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GENGAR], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3517,24 +3559,24 @@ export const trainerConfigs: TrainerConfigs = { .setName("Raihan") .initForEliteFour(signatureSpecies["RAIHAN_ELITE"], true, PokemonType.DRAGON, 2) .setMixedBattleBgm("battle_galar_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.FLYGON])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.FLYGON])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.TORKOAL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TORKOAL], TrainerSlot.TRAINER, true, p => { // Tera Dragon Torkoal p.abilityIndex = 1; // Drought p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.TERA_BLAST)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.TERA_BLAST)) { // Check if Tera Blast is in the moveset, if not, replace the third move with Tera Blast. - p.moveset[2] = new PokemonMove(Moves.TERA_BLAST); + p.moveset[2] = new PokemonMove(MoveId.TERA_BLAST); } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.GOODRA])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.TURTONATOR])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.GOODRA])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.TURTONATOR])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.ARCHALUDON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ARCHALUDON], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3542,13 +3584,13 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.RIKA]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["RIKA"], false, PokemonType.GROUND, 5) .setMixedBattleBgm("battle_paldea_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.DUGTRIO])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.DONPHAN])) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.SWAMPERT, Species.TORTERRA])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.CAMERUPT])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.DUGTRIO])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.DONPHAN])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.SWAMPERT, SpeciesId.TORTERRA])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.CAMERUPT])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.CLODSIRE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CLODSIRE], TrainerSlot.TRAINER, true, p => { // Tera Ground Clodsire p.setBoss(true, 2); p.generateAndPopulateMoveset(); @@ -3557,19 +3599,19 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.POPPY]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["POPPY"], false, PokemonType.STEEL, 5) .setMixedBattleBgm("battle_paldea_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.COPPERAJAH])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.MAGNEZONE])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.COPPERAJAH])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MAGNEZONE])) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.BRONZONG, Species.CORVIKNIGHT], TrainerSlot.TRAINER, true, p => { - p.abilityIndex = p.species.speciesId === Species.BRONZONG ? 0 : 1; // Levitate Bronzong, Unnerve Corviknight + getRandomPartyMemberFunc([SpeciesId.BRONZONG, SpeciesId.CORVIKNIGHT], TrainerSlot.TRAINER, true, p => { + p.abilityIndex = p.species.speciesId === SpeciesId.BRONZONG ? 0 : 1; // Levitate Bronzong, Unnerve Corviknight p.generateAndPopulateMoveset(); }), ) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.STEELIX])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.STEELIX])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.TINKATON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TINKATON], TrainerSlot.TRAINER, true, p => { // Tera Steel Tinkaton p.setBoss(true, 2); p.generateAndPopulateMoveset(); @@ -3579,13 +3621,13 @@ export const trainerConfigs: TrainerConfigs = { .setName("Larry") .initForEliteFour(signatureSpecies["LARRY_ELITE"], true, PokemonType.FLYING, 5) .setMixedBattleBgm("battle_paldea_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.ALTARIA])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.BOMBIRDIER])) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.TROPIUS])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.STARAPTOR])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.ALTARIA])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.BOMBIRDIER])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.TROPIUS])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.STARAPTOR])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.FLAMIGO], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.FLAMIGO], TrainerSlot.TRAINER, true, p => { // Tera Flying Flamigo p.setBoss(true, 2); p.generateAndPopulateMoveset(); @@ -3594,13 +3636,13 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.HASSEL]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["HASSEL"], true, PokemonType.DRAGON, 5) .setMixedBattleBgm("battle_paldea_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.NOIVERN])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.DRAGALGE])) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.FLAPPLE, Species.APPLETUN, Species.HYDRAPPLE])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.HAXORUS])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.NOIVERN])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.DRAGALGE])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.FLAPPLE, SpeciesId.APPLETUN, SpeciesId.HYDRAPPLE])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.HAXORUS])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.BAXCALIBUR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.BAXCALIBUR], TrainerSlot.TRAINER, true, p => { // Tera Dragon Baxcalibur p.setBoss(true, 2); p.generateAndPopulateMoveset(); @@ -3611,36 +3653,36 @@ export const trainerConfigs: TrainerConfigs = { .setMixedBattleBgm("battle_bb_elite") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.ROTOM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ROTOM], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; // Heat Rotom p.generateAndPopulateMoveset(); }), ) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.EXEGGUTOR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.EXEGGUTOR], TrainerSlot.TRAINER, true, p => { // Tera Fire Exeggutor p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.TERA_BLAST)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.TERA_BLAST)) { // Check if Tera Blast is in the moveset, if not, replace the third move with Tera Blast. - p.moveset[2] = new PokemonMove(Moves.TERA_BLAST); + p.moveset[2] = new PokemonMove(MoveId.TERA_BLAST); } }), ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.TALONFLAME], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TALONFLAME], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.SUNNY_DAY)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.SUNNY_DAY)) { // Check if Sunny Day is in the moveset, if not, replace the third move with Sunny Day. - p.moveset[2] = new PokemonMove(Moves.SUNNY_DAY); + p.moveset[2] = new PokemonMove(MoveId.SUNNY_DAY); } }), ) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.MAGMORTAR])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.MAGMORTAR])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.BLAZIKEN], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.BLAZIKEN], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3648,23 +3690,23 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.AMARYS]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["AMARYS"], false, PokemonType.STEEL, 2) .setMixedBattleBgm("battle_bb_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.SKARMORY])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.SKARMORY])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.REUNICLUS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.REUNICLUS], TrainerSlot.TRAINER, true, p => { // Tera Steel Reuniclus p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.FLASH_CANNON)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.FLASH_CANNON)) { // Check if Flash Cannon is in the moveset, if not, replace the third move with Flash Cannon. - p.moveset[2] = new PokemonMove(Moves.FLASH_CANNON); + p.moveset[2] = new PokemonMove(MoveId.FLASH_CANNON); } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.EMPOLEON])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.SCIZOR])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.EMPOLEON])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.SCIZOR])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.METAGROSS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.METAGROSS], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3672,42 +3714,42 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.LACEY]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["LACEY"], false, PokemonType.FAIRY, 5) .setMixedBattleBgm("battle_bb_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.WHIMSICOTT])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.PRIMARINA])) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.GRANBULL])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.ALCREMIE])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.WHIMSICOTT])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.PRIMARINA])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.GRANBULL])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.ALCREMIE])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.EXCADRILL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.EXCADRILL], TrainerSlot.TRAINER, true, p => { // Tera Fairy Excadrill p.setBoss(true, 2); p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.TERA_BLAST)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.TERA_BLAST)) { // Check if Tera Blast is in the moveset, if not, replace the third move with Tera Blast. - p.moveset[2] = new PokemonMove(Moves.TERA_BLAST); + p.moveset[2] = new PokemonMove(MoveId.TERA_BLAST); } }), ), [TrainerType.DRAYTON]: new TrainerConfig(++t) .initForEliteFour(signatureSpecies["DRAYTON"], true, PokemonType.DRAGON, 2) .setMixedBattleBgm("battle_bb_elite") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.DRAGONITE])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.DRAGONITE])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.SCEPTILE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SCEPTILE], TrainerSlot.TRAINER, true, p => { // Tera Dragon Sceptile p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.DUAL_CHOP)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.DUAL_CHOP)) { // Check if Dual Chop is in the moveset, if not, replace the third move with Dual Chop. - p.moveset[2] = new PokemonMove(Moves.DUAL_CHOP); + p.moveset[2] = new PokemonMove(MoveId.DUAL_CHOP); } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.HAXORUS])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.KINGDRA, Species.DRACOVISH])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.HAXORUS])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.KINGDRA, SpeciesId.DRACOVISH])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.ARCHALUDON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ARCHALUDON], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), @@ -3720,20 +3762,20 @@ export const trainerConfigs: TrainerConfigs = { .setHasDouble("blue_red_double") .setDoubleTrainerType(TrainerType.RED) .setDoubleTitle("champion_double") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.ALAKAZAM])) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.MACHAMP])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.ALAKAZAM])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.MACHAMP])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.HO_OH], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.HO_OH], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.RHYPERIOR, Species.ELECTIVIRE])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.RHYPERIOR, SpeciesId.ELECTIVIRE])) .setPartyMemberFunc( 4, getRandomPartyMemberFunc( - [Species.ARCANINE, Species.EXEGGUTOR, Species.GYARADOS], + [SpeciesId.ARCANINE, SpeciesId.EXEGGUTOR, SpeciesId.GYARADOS], TrainerSlot.TRAINER, true, p => { @@ -3744,7 +3786,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.PIDGEOT], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.PIDGEOT], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; // Mega Pidgeot p.generateAndPopulateMoveset(); p.generateName(); @@ -3761,25 +3803,25 @@ export const trainerConfigs: TrainerConfigs = { .setDoubleTitle("champion_double") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.PIKACHU], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.PIKACHU], TrainerSlot.TRAINER, true, p => { p.formIndex = 8; // G-Max Pikachu p.generateAndPopulateMoveset(); p.generateName(); p.gender = Gender.MALE; }), ) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.ESPEON, Species.UMBREON, Species.SYLVEON])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.ESPEON, SpeciesId.UMBREON, SpeciesId.SYLVEON])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.LUGIA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.LUGIA], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.MEGANIUM, SpeciesId.TYPHLOSION, SpeciesId.FERALIGATR])) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.SNORLAX], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SNORLAX], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.setBoss(true, 2); }), @@ -3787,7 +3829,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyMemberFunc( 5, getRandomPartyMemberFunc( - [Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE], + [SpeciesId.VENUSAUR, SpeciesId.CHARIZARD, SpeciesId.BLASTOISE], TrainerSlot.TRAINER, true, p => { @@ -3804,28 +3846,33 @@ export const trainerConfigs: TrainerConfigs = { .initForChampion(true) .setBattleBgm("battle_johto_champion") .setMixedBattleBgm("battle_johto_champion") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.GYARADOS, Species.KINGDRA])) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.AERODACTYL])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.GYARADOS, SpeciesId.KINGDRA])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.AERODACTYL])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.SALAMENCE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SALAMENCE], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; // Mega Salamence p.generateAndPopulateMoveset(); p.generateName(); }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.CHARIZARD])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.CHARIZARD])) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.TYRANITAR, Species.GARCHOMP, Species.KOMMO_O], TrainerSlot.TRAINER, true, p => { - p.teraType = PokemonType.DRAGON; - p.generateAndPopulateMoveset(); - p.abilityIndex = p.species.speciesId === Species.KOMMO_O ? 1 : 2; // Soundproof Kommo-o, Unnerve Tyranitar, Rough Skin Garchomp - }), + getRandomPartyMemberFunc( + [SpeciesId.TYRANITAR, SpeciesId.GARCHOMP, SpeciesId.KOMMO_O], + TrainerSlot.TRAINER, + true, + p => { + p.teraType = PokemonType.DRAGON; + p.generateAndPopulateMoveset(); + p.abilityIndex = p.species.speciesId === SpeciesId.KOMMO_O ? 1 : 2; // Soundproof Kommo-o, Unnerve Tyranitar, Rough Skin Garchomp + }, + ), ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.DRAGONITE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.DRAGONITE], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.gender = Gender.MALE; p.setBoss(true, 2); @@ -3839,26 +3886,31 @@ export const trainerConfigs: TrainerConfigs = { .setHasDouble("steven_wallace_double") .setDoubleTrainerType(TrainerType.WALLACE) .setDoubleTitle("champion_double") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.SKARMORY])) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.CRADILY, Species.ARMALDO])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.SKARMORY])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.CRADILY, SpeciesId.ARMALDO])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.AGGRON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.AGGRON], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.setBoss(true, 2); }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.GOLURK, Species.RUNERIGUS])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.GOLURK, SpeciesId.RUNERIGUS])) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.REGIROCK, Species.REGICE, Species.REGISTEEL], TrainerSlot.TRAINER, true, p => { - p.generateAndPopulateMoveset(); - p.pokeball = PokeballType.ULTRA_BALL; - }), + getRandomPartyMemberFunc( + [SpeciesId.REGIROCK, SpeciesId.REGICE, SpeciesId.REGISTEEL], + TrainerSlot.TRAINER, + true, + p => { + p.generateAndPopulateMoveset(); + p.pokeball = PokeballType.ULTRA_BALL; + }, + ), ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.METAGROSS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.METAGROSS], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; // Mega Metagross p.generateAndPopulateMoveset(); p.generateName(); @@ -3874,32 +3926,32 @@ export const trainerConfigs: TrainerConfigs = { .setDoubleTitle("champion_double") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.PELIPPER], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.PELIPPER], TrainerSlot.TRAINER, true, p => { p.abilityIndex = 1; // Drizzle p.generateAndPopulateMoveset(); }), ) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.LUDICOLO])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.LUDICOLO])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.LATIAS, Species.LATIOS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.LATIAS, SpeciesId.LATIOS], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; // Mega Latios or Mega Latias p.generateAndPopulateMoveset(); p.generateName(); p.pokeball = PokeballType.MASTER_BALL; }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.SWAMPERT, Species.GASTRODON, Species.SEISMITOAD])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.SWAMPERT, SpeciesId.GASTRODON, SpeciesId.SEISMITOAD])) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.REGIELEKI, Species.REGIDRAGO], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.REGIELEKI, SpeciesId.REGIDRAGO], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; }), ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.MILOTIC], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.MILOTIC], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.gender = Gender.FEMALE; p.setBoss(true, 2); @@ -3910,11 +3962,11 @@ export const trainerConfigs: TrainerConfigs = { .initForChampion(false) .setBattleBgm("battle_sinnoh_champion") .setMixedBattleBgm("battle_sinnoh_champion") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.SPIRITOMB])) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.LUCARIO])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.SPIRITOMB])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.LUCARIO])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.GIRATINA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GIRATINA], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; }), @@ -3922,7 +3974,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyMemberFunc( 3, getRandomPartyMemberFunc( - [Species.MILOTIC, Species.ROSERADE, Species.HISUI_ARCANINE], + [SpeciesId.MILOTIC, SpeciesId.ROSERADE, SpeciesId.HISUI_ARCANINE], TrainerSlot.TRAINER, true, p => { @@ -3933,14 +3985,14 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.TOGEKISS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TOGEKISS], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.setBoss(true, 2); }), ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.GARCHOMP], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GARCHOMP], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; // Mega Garchomp p.generateAndPopulateMoveset(); p.generateName(); @@ -3955,11 +4007,11 @@ export const trainerConfigs: TrainerConfigs = { .setDoubleTitle("champion_double") .setBattleBgm("battle_champion_alder") .setMixedBattleBgm("battle_champion_alder") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.BOUFFALANT, Species.BRAVIARY])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.BOUFFALANT, SpeciesId.BRAVIARY])) .setPartyMemberFunc( 1, getRandomPartyMemberFunc( - [Species.HISUI_LILLIGANT, Species.HISUI_ZOROARK, Species.BASCULEGION], + [SpeciesId.HISUI_LILLIGANT, SpeciesId.HISUI_ZOROARK, SpeciesId.BASCULEGION], TrainerSlot.TRAINER, true, p => { @@ -3970,14 +4022,14 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.ZEKROM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ZEKROM], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; }), ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.KELDEO], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.KELDEO], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; }), @@ -3985,18 +4037,18 @@ export const trainerConfigs: TrainerConfigs = { .setPartyMemberFunc( 4, getRandomPartyMemberFunc( - [Species.CHANDELURE, Species.KROOKODILE, Species.REUNICLUS, Species.CONKELDURR], + [SpeciesId.CHANDELURE, SpeciesId.KROOKODILE, SpeciesId.REUNICLUS, SpeciesId.CONKELDURR], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); - p.teraType = p.species.speciesId === Species.KROOKODILE ? PokemonType.DARK : p.species.type1; + p.teraType = p.species.speciesId === SpeciesId.KROOKODILE ? PokemonType.DARK : p.species.type1; }, ), ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.VOLCARONA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.VOLCARONA], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.gender = Gender.MALE; p.setBoss(true, 2); @@ -4010,11 +4062,11 @@ export const trainerConfigs: TrainerConfigs = { .setHasDouble("iris_alder_double") .setDoubleTrainerType(TrainerType.ALDER) .setDoubleTitle("champion_double") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.DRUDDIGON])) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.ARCHEOPS])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.DRUDDIGON])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.ARCHEOPS])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.RESHIRAM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.RESHIRAM], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; }), @@ -4022,7 +4074,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyMemberFunc( 3, getRandomPartyMemberFunc( - [Species.SALAMENCE, Species.HYDREIGON, Species.ARCHALUDON], + [SpeciesId.SALAMENCE, SpeciesId.HYDREIGON, SpeciesId.ARCHALUDON], TrainerSlot.TRAINER, true, p => { @@ -4033,7 +4085,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.LAPRAS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.LAPRAS], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; // G-Max Lapras p.generateAndPopulateMoveset(); p.generateName(); @@ -4041,7 +4093,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.HAXORUS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.HAXORUS], TrainerSlot.TRAINER, true, p => { p.abilityIndex = 1; // Mold Breaker p.generateAndPopulateMoveset(); p.gender = Gender.FEMALE; @@ -4054,21 +4106,21 @@ export const trainerConfigs: TrainerConfigs = { .setMixedBattleBgm("battle_kalos_champion") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.HAWLUCHA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.HAWLUCHA], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); }), ) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.TREVENANT, Species.GOURGEIST])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.TREVENANT, SpeciesId.GOURGEIST])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.XERNEAS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.XERNEAS], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; }), ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.TYRANTRUM, Species.AURORUS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TYRANTRUM, SpeciesId.AURORUS], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.abilityIndex = 2; // Rock Head Tyrantrum, Snow Warning Aurorus p.teraType = p.species.type2!; @@ -4076,14 +4128,14 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.GOODRA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GOODRA], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.setBoss(true, 2); }), ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.GARDEVOIR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GARDEVOIR], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; // Mega Gardevoir p.generateAndPopulateMoveset(); p.generateName(); @@ -4096,16 +4148,16 @@ export const trainerConfigs: TrainerConfigs = { .setMixedBattleBgm("battle_champion_kukui") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.LYCANROC], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.LYCANROC], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.formIndex = 2; // Dusk Lycanroc }), ) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.MAGNEZONE, Species.ALOLA_NINETALES])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.MAGNEZONE, SpeciesId.ALOLA_NINETALES])) .setPartyMemberFunc( 2, getRandomPartyMemberFunc( - [Species.TORNADUS, Species.THUNDURUS, Species.LANDORUS], + [SpeciesId.TORNADUS, SpeciesId.THUNDURUS, SpeciesId.LANDORUS], TrainerSlot.TRAINER, true, p => { @@ -4117,7 +4169,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.TAPU_KOKO, Species.TAPU_FINI], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TAPU_KOKO, SpeciesId.TAPU_FINI], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.setBoss(true, 2); p.pokeball = PokeballType.ULTRA_BALL; @@ -4125,14 +4177,14 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.SNORLAX], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SNORLAX], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.formIndex = 1; // G-Max Snorlax }), ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.INCINEROAR, Species.HISUI_DECIDUEYE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.INCINEROAR, SpeciesId.HISUI_DECIDUEYE], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.gender = Gender.MALE; p.teraType = p.species.type2!; @@ -4142,18 +4194,18 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.HAU]: new TrainerConfig(++t) .initForChampion(true) .setMixedBattleBgm("battle_alola_champion") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.ALOLA_RAICHU])) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.NOIVERN])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.ALOLA_RAICHU])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.NOIVERN])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.SOLGALEO], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SOLGALEO], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; }), ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.TAPU_LELE, Species.TAPU_BULU], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TAPU_LELE, SpeciesId.TAPU_BULU], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; p.teraType = p.species.type1; @@ -4161,7 +4213,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.ZYGARDE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ZYGARDE], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; // Zygarde 10% forme, Aura Break p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ROGUE_BALL; @@ -4169,30 +4221,30 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.DECIDUEYE, Species.PRIMARINA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.DECIDUEYE, SpeciesId.PRIMARINA], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.setBoss(true, 2); - p.gender = p.species.speciesId === Species.PRIMARINA ? Gender.FEMALE : Gender.MALE; + p.gender = p.species.speciesId === SpeciesId.PRIMARINA ? Gender.FEMALE : Gender.MALE; }), ) .setInstantTera(3), // Tera Psychic Tapu Lele / Grass Tapu Bulu [TrainerType.LEON]: new TrainerConfig(++t) .initForChampion(true) .setMixedBattleBgm("battle_galar_champion") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.AEGISLASH])) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.RHYPERIOR, Species.SEISMITOAD, Species.MR_RIME])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.AEGISLASH])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.RHYPERIOR, SpeciesId.SEISMITOAD, SpeciesId.MR_RIME])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.ZACIAN], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ZACIAN], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.DRAGAPULT])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.DRAGAPULT])) .setPartyMemberFunc( 4, getRandomPartyMemberFunc( - [Species.RILLABOOM, Species.CINDERACE, Species.INTELEON], + [SpeciesId.RILLABOOM, SpeciesId.CINDERACE, SpeciesId.INTELEON], TrainerSlot.TRAINER, true, p => { @@ -4203,7 +4255,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.CHARIZARD], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CHARIZARD], TrainerSlot.TRAINER, true, p => { p.formIndex = 3; // G-Max Charizard p.generateAndPopulateMoveset(); p.generateName(); @@ -4216,21 +4268,21 @@ export const trainerConfigs: TrainerConfigs = { .setMixedBattleBgm("battle_mustard") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.CORVIKNIGHT], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CORVIKNIGHT], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; }), ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.KOMMO_O], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.KOMMO_O], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; }), ) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.GALAR_SLOWBRO, Species.GALAR_SLOWKING], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GALAR_SLOWBRO, SpeciesId.GALAR_SLOWKING], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; p.teraType = p.species.type1; @@ -4238,14 +4290,14 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.GALAR_DARMANITAN], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GALAR_DARMANITAN], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; }), ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.BLASTOISE, Species.VENUSAUR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.BLASTOISE, SpeciesId.VENUSAUR], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.setBoss(true, 2); p.pokeball = PokeballType.ULTRA_BALL; @@ -4253,7 +4305,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.URSHIFU], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.URSHIFU], TrainerSlot.TRAINER, true, p => { p.formIndex = randSeedIntRange(2, 3); // Random G-Max Urshifu p.generateAndPopulateMoveset(); p.generateName(); @@ -4267,29 +4319,29 @@ export const trainerConfigs: TrainerConfigs = { .setMixedBattleBgm("battle_champion_geeta") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.GLIMMORA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GLIMMORA], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.gender = Gender.MALE; p.setBoss(true, 2); }), ) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.ESPATHRA, Species.VELUZA])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.ESPATHRA, SpeciesId.VELUZA])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.MIRAIDON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.MIRAIDON], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.BAXCALIBUR])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.BAXCALIBUR])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.CHESNAUGHT, SpeciesId.DELPHOX, SpeciesId.GRENINJA])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.KINGAMBIT], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.KINGAMBIT], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.TERA_BLAST)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.TERA_BLAST)) { // Check if Tera Blast is in the moveset, if not, replace the third move with Tera Blast. - p.moveset[2] = new PokemonMove(Moves.TERA_BLAST); + p.moveset[2] = new PokemonMove(MoveId.TERA_BLAST); } p.abilityIndex = 1; // Supreme Overlord p.teraType = PokemonType.FLYING; @@ -4301,23 +4353,23 @@ export const trainerConfigs: TrainerConfigs = { .setMixedBattleBgm("battle_champion_nemona") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.LYCANROC], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.LYCANROC], TrainerSlot.TRAINER, true, p => { p.formIndex = 0; // Midday form p.generateAndPopulateMoveset(); }), ) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.PAWMOT])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.PAWMOT])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.KORAIDON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.KORAIDON], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.GHOLDENGO])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.GHOLDENGO])) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.ARMAROUGE, Species.CERULEDGE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ARMAROUGE, SpeciesId.CERULEDGE], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.teraType = p.species.type2!; }), @@ -4325,7 +4377,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyMemberFunc( 5, getRandomPartyMemberFunc( - [Species.MEOWSCARADA, Species.SKELEDIRGE, Species.QUAQUAVAL], + [SpeciesId.MEOWSCARADA, SpeciesId.SKELEDIRGE, SpeciesId.QUAQUAVAL], TrainerSlot.TRAINER, true, p => { @@ -4339,43 +4391,43 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.KIERAN]: new TrainerConfig(++t) .initForChampion(true) .setMixedBattleBgm("battle_champion_kieran") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.POLIWRATH, Species.POLITOED])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.POLIWRATH, SpeciesId.POLITOED])) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.INCINEROAR, Species.GRIMMSNARL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.INCINEROAR, SpeciesId.GRIMMSNARL], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); - p.abilityIndex = p.species.speciesId === Species.INCINEROAR ? 2 : 0; // Intimidate Incineroar, Prankster Grimmsnarl + p.abilityIndex = p.species.speciesId === SpeciesId.INCINEROAR ? 2 : 0; // Intimidate Incineroar, Prankster Grimmsnarl }), ) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.TERAPAGOS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TERAPAGOS], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; }), ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.URSALUNA, Species.BLOODMOON_URSALUNA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.URSALUNA, SpeciesId.BLOODMOON_URSALUNA], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; }), ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.OGERPON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.OGERPON], TrainerSlot.TRAINER, true, p => { p.formIndex = randSeedInt(4); // Random Ogerpon Tera Mask p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.IVY_CUDGEL)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.IVY_CUDGEL)) { // Check if Ivy Cudgel is in the moveset, if not, replace the first move with Ivy Cudgel. - p.moveset[0] = new PokemonMove(Moves.IVY_CUDGEL); + p.moveset[0] = new PokemonMove(MoveId.IVY_CUDGEL); } }), ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.HYDRAPPLE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.HYDRAPPLE], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.gender = Gender.MALE; p.setBoss(true, 2); @@ -4401,33 +4453,33 @@ export const trainerConfigs: TrainerConfigs = { 0, getRandomPartyMemberFunc( [ - Species.BULBASAUR, - Species.CHARMANDER, - Species.SQUIRTLE, - Species.CHIKORITA, - Species.CYNDAQUIL, - Species.TOTODILE, - Species.TREECKO, - Species.TORCHIC, - Species.MUDKIP, - Species.TURTWIG, - Species.CHIMCHAR, - Species.PIPLUP, - Species.SNIVY, - Species.TEPIG, - Species.OSHAWOTT, - Species.CHESPIN, - Species.FENNEKIN, - Species.FROAKIE, - Species.ROWLET, - Species.LITTEN, - Species.POPPLIO, - Species.GROOKEY, - Species.SCORBUNNY, - Species.SOBBLE, - Species.SPRIGATITO, - Species.FUECOCO, - Species.QUAXLY, + SpeciesId.BULBASAUR, + SpeciesId.CHARMANDER, + SpeciesId.SQUIRTLE, + SpeciesId.CHIKORITA, + SpeciesId.CYNDAQUIL, + SpeciesId.TOTODILE, + SpeciesId.TREECKO, + SpeciesId.TORCHIC, + SpeciesId.MUDKIP, + SpeciesId.TURTWIG, + SpeciesId.CHIMCHAR, + SpeciesId.PIPLUP, + SpeciesId.SNIVY, + SpeciesId.TEPIG, + SpeciesId.OSHAWOTT, + SpeciesId.CHESPIN, + SpeciesId.FENNEKIN, + SpeciesId.FROAKIE, + SpeciesId.ROWLET, + SpeciesId.LITTEN, + SpeciesId.POPPLIO, + SpeciesId.GROOKEY, + SpeciesId.SCORBUNNY, + SpeciesId.SOBBLE, + SpeciesId.SPRIGATITO, + SpeciesId.FUECOCO, + SpeciesId.QUAXLY, ], TrainerSlot.TRAINER, true, @@ -4438,15 +4490,15 @@ export const trainerConfigs: TrainerConfigs = { 1, getRandomPartyMemberFunc( [ - Species.PIDGEY, - Species.HOOTHOOT, - Species.TAILLOW, - Species.STARLY, - Species.PIDOVE, - Species.FLETCHLING, - Species.PIKIPEK, - Species.ROOKIDEE, - Species.WATTREL, + SpeciesId.PIDGEY, + SpeciesId.HOOTHOOT, + SpeciesId.TAILLOW, + SpeciesId.STARLY, + SpeciesId.PIDOVE, + SpeciesId.FLETCHLING, + SpeciesId.PIKIPEK, + SpeciesId.ROOKIDEE, + SpeciesId.WATTREL, ], TrainerSlot.TRAINER, true, @@ -4468,33 +4520,33 @@ export const trainerConfigs: TrainerConfigs = { 0, getRandomPartyMemberFunc( [ - Species.IVYSAUR, - Species.CHARMELEON, - Species.WARTORTLE, - Species.BAYLEEF, - Species.QUILAVA, - Species.CROCONAW, - Species.GROVYLE, - Species.COMBUSKEN, - Species.MARSHTOMP, - Species.GROTLE, - Species.MONFERNO, - Species.PRINPLUP, - Species.SERVINE, - Species.PIGNITE, - Species.DEWOTT, - Species.QUILLADIN, - Species.BRAIXEN, - Species.FROGADIER, - Species.DARTRIX, - Species.TORRACAT, - Species.BRIONNE, - Species.THWACKEY, - Species.RABOOT, - Species.DRIZZILE, - Species.FLORAGATO, - Species.CROCALOR, - Species.QUAXWELL, + SpeciesId.IVYSAUR, + SpeciesId.CHARMELEON, + SpeciesId.WARTORTLE, + SpeciesId.BAYLEEF, + SpeciesId.QUILAVA, + SpeciesId.CROCONAW, + SpeciesId.GROVYLE, + SpeciesId.COMBUSKEN, + SpeciesId.MARSHTOMP, + SpeciesId.GROTLE, + SpeciesId.MONFERNO, + SpeciesId.PRINPLUP, + SpeciesId.SERVINE, + SpeciesId.PIGNITE, + SpeciesId.DEWOTT, + SpeciesId.QUILLADIN, + SpeciesId.BRAIXEN, + SpeciesId.FROGADIER, + SpeciesId.DARTRIX, + SpeciesId.TORRACAT, + SpeciesId.BRIONNE, + SpeciesId.THWACKEY, + SpeciesId.RABOOT, + SpeciesId.DRIZZILE, + SpeciesId.FLORAGATO, + SpeciesId.CROCALOR, + SpeciesId.QUAXWELL, ], TrainerSlot.TRAINER, true, @@ -4505,15 +4557,15 @@ export const trainerConfigs: TrainerConfigs = { 1, getRandomPartyMemberFunc( [ - Species.PIDGEOTTO, - Species.HOOTHOOT, - Species.TAILLOW, - Species.STARAVIA, - Species.TRANQUILL, - Species.FLETCHINDER, - Species.TRUMBEAK, - Species.CORVISQUIRE, - Species.WATTREL, + SpeciesId.PIDGEOTTO, + SpeciesId.HOOTHOOT, + SpeciesId.TAILLOW, + SpeciesId.STARAVIA, + SpeciesId.TRANQUILL, + SpeciesId.FLETCHINDER, + SpeciesId.TRUMBEAK, + SpeciesId.CORVISQUIRE, + SpeciesId.WATTREL, ], TrainerSlot.TRAINER, true, @@ -4543,33 +4595,33 @@ export const trainerConfigs: TrainerConfigs = { 0, getRandomPartyMemberFunc( [ - Species.VENUSAUR, - Species.CHARIZARD, - Species.BLASTOISE, - Species.MEGANIUM, - Species.TYPHLOSION, - Species.FERALIGATR, - Species.SCEPTILE, - Species.BLAZIKEN, - Species.SWAMPERT, - Species.TORTERRA, - Species.INFERNAPE, - Species.EMPOLEON, - Species.SERPERIOR, - Species.EMBOAR, - Species.SAMUROTT, - Species.CHESNAUGHT, - Species.DELPHOX, - Species.GRENINJA, - Species.DECIDUEYE, - Species.INCINEROAR, - Species.PRIMARINA, - Species.RILLABOOM, - Species.CINDERACE, - Species.INTELEON, - Species.MEOWSCARADA, - Species.SKELEDIRGE, - Species.QUAQUAVAL, + SpeciesId.VENUSAUR, + SpeciesId.CHARIZARD, + SpeciesId.BLASTOISE, + SpeciesId.MEGANIUM, + SpeciesId.TYPHLOSION, + SpeciesId.FERALIGATR, + SpeciesId.SCEPTILE, + SpeciesId.BLAZIKEN, + SpeciesId.SWAMPERT, + SpeciesId.TORTERRA, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.SERPERIOR, + SpeciesId.EMBOAR, + SpeciesId.SAMUROTT, + SpeciesId.CHESNAUGHT, + SpeciesId.DELPHOX, + SpeciesId.GRENINJA, + SpeciesId.DECIDUEYE, + SpeciesId.INCINEROAR, + SpeciesId.PRIMARINA, + SpeciesId.RILLABOOM, + SpeciesId.CINDERACE, + SpeciesId.INTELEON, + SpeciesId.MEOWSCARADA, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAQUAVAL, ], TrainerSlot.TRAINER, true, @@ -4580,15 +4632,15 @@ export const trainerConfigs: TrainerConfigs = { 1, getRandomPartyMemberFunc( [ - Species.PIDGEOT, - Species.NOCTOWL, - Species.SWELLOW, - Species.STARAPTOR, - Species.UNFEZANT, - Species.TALONFLAME, - Species.TOUCANNON, - Species.CORVIKNIGHT, - Species.KILOWATTREL, + SpeciesId.PIDGEOT, + SpeciesId.NOCTOWL, + SpeciesId.SWELLOW, + SpeciesId.STARAPTOR, + SpeciesId.UNFEZANT, + SpeciesId.TALONFLAME, + SpeciesId.TOUCANNON, + SpeciesId.CORVIKNIGHT, + SpeciesId.KILOWATTREL, ], TrainerSlot.TRAINER, true, @@ -4621,33 +4673,33 @@ export const trainerConfigs: TrainerConfigs = { 0, getRandomPartyMemberFunc( [ - Species.VENUSAUR, - Species.CHARIZARD, - Species.BLASTOISE, - Species.MEGANIUM, - Species.TYPHLOSION, - Species.FERALIGATR, - Species.SCEPTILE, - Species.BLAZIKEN, - Species.SWAMPERT, - Species.TORTERRA, - Species.INFERNAPE, - Species.EMPOLEON, - Species.SERPERIOR, - Species.EMBOAR, - Species.SAMUROTT, - Species.CHESNAUGHT, - Species.DELPHOX, - Species.GRENINJA, - Species.DECIDUEYE, - Species.INCINEROAR, - Species.PRIMARINA, - Species.RILLABOOM, - Species.CINDERACE, - Species.INTELEON, - Species.MEOWSCARADA, - Species.SKELEDIRGE, - Species.QUAQUAVAL, + SpeciesId.VENUSAUR, + SpeciesId.CHARIZARD, + SpeciesId.BLASTOISE, + SpeciesId.MEGANIUM, + SpeciesId.TYPHLOSION, + SpeciesId.FERALIGATR, + SpeciesId.SCEPTILE, + SpeciesId.BLAZIKEN, + SpeciesId.SWAMPERT, + SpeciesId.TORTERRA, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.SERPERIOR, + SpeciesId.EMBOAR, + SpeciesId.SAMUROTT, + SpeciesId.CHESNAUGHT, + SpeciesId.DELPHOX, + SpeciesId.GRENINJA, + SpeciesId.DECIDUEYE, + SpeciesId.INCINEROAR, + SpeciesId.PRIMARINA, + SpeciesId.RILLABOOM, + SpeciesId.CINDERACE, + SpeciesId.INTELEON, + SpeciesId.MEOWSCARADA, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAQUAVAL, ], TrainerSlot.TRAINER, true, @@ -4661,15 +4713,15 @@ export const trainerConfigs: TrainerConfigs = { 1, getRandomPartyMemberFunc( [ - Species.PIDGEOT, - Species.NOCTOWL, - Species.SWELLOW, - Species.STARAPTOR, - Species.UNFEZANT, - Species.TALONFLAME, - Species.TOUCANNON, - Species.CORVIKNIGHT, - Species.KILOWATTREL, + SpeciesId.PIDGEOT, + SpeciesId.NOCTOWL, + SpeciesId.SWELLOW, + SpeciesId.STARAPTOR, + SpeciesId.UNFEZANT, + SpeciesId.TALONFLAME, + SpeciesId.TOUCANNON, + SpeciesId.CORVIKNIGHT, + SpeciesId.KILOWATTREL, ], TrainerSlot.TRAINER, true, @@ -4702,33 +4754,33 @@ export const trainerConfigs: TrainerConfigs = { 0, getRandomPartyMemberFunc( [ - Species.VENUSAUR, - Species.CHARIZARD, - Species.BLASTOISE, - Species.MEGANIUM, - Species.TYPHLOSION, - Species.FERALIGATR, - Species.SCEPTILE, - Species.BLAZIKEN, - Species.SWAMPERT, - Species.TORTERRA, - Species.INFERNAPE, - Species.EMPOLEON, - Species.SERPERIOR, - Species.EMBOAR, - Species.SAMUROTT, - Species.CHESNAUGHT, - Species.DELPHOX, - Species.GRENINJA, - Species.DECIDUEYE, - Species.INCINEROAR, - Species.PRIMARINA, - Species.RILLABOOM, - Species.CINDERACE, - Species.INTELEON, - Species.MEOWSCARADA, - Species.SKELEDIRGE, - Species.QUAQUAVAL, + SpeciesId.VENUSAUR, + SpeciesId.CHARIZARD, + SpeciesId.BLASTOISE, + SpeciesId.MEGANIUM, + SpeciesId.TYPHLOSION, + SpeciesId.FERALIGATR, + SpeciesId.SCEPTILE, + SpeciesId.BLAZIKEN, + SpeciesId.SWAMPERT, + SpeciesId.TORTERRA, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.SERPERIOR, + SpeciesId.EMBOAR, + SpeciesId.SAMUROTT, + SpeciesId.CHESNAUGHT, + SpeciesId.DELPHOX, + SpeciesId.GRENINJA, + SpeciesId.DECIDUEYE, + SpeciesId.INCINEROAR, + SpeciesId.PRIMARINA, + SpeciesId.RILLABOOM, + SpeciesId.CINDERACE, + SpeciesId.INTELEON, + SpeciesId.MEOWSCARADA, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAQUAVAL, ], TrainerSlot.TRAINER, true, @@ -4743,15 +4795,15 @@ export const trainerConfigs: TrainerConfigs = { 1, getRandomPartyMemberFunc( [ - Species.PIDGEOT, - Species.NOCTOWL, - Species.SWELLOW, - Species.STARAPTOR, - Species.UNFEZANT, - Species.TALONFLAME, - Species.TOUCANNON, - Species.CORVIKNIGHT, - Species.KILOWATTREL, + SpeciesId.PIDGEOT, + SpeciesId.NOCTOWL, + SpeciesId.SWELLOW, + SpeciesId.STARAPTOR, + SpeciesId.UNFEZANT, + SpeciesId.TALONFLAME, + SpeciesId.TOUCANNON, + SpeciesId.CORVIKNIGHT, + SpeciesId.KILOWATTREL, ], TrainerSlot.TRAINER, true, @@ -4769,7 +4821,7 @@ export const trainerConfigs: TrainerConfigs = { .setSpeciesFilter(species => species.baseTotal >= 540) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.RAYQUAZA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.RAYQUAZA], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 3); p.pokeball = PokeballType.MASTER_BALL; p.shiny = timedEventManager.getClassicTrainerShinyChance() === 0; @@ -4793,33 +4845,33 @@ export const trainerConfigs: TrainerConfigs = { 0, getRandomPartyMemberFunc( [ - Species.VENUSAUR, - Species.CHARIZARD, - Species.BLASTOISE, - Species.MEGANIUM, - Species.TYPHLOSION, - Species.FERALIGATR, - Species.SCEPTILE, - Species.BLAZIKEN, - Species.SWAMPERT, - Species.TORTERRA, - Species.INFERNAPE, - Species.EMPOLEON, - Species.SERPERIOR, - Species.EMBOAR, - Species.SAMUROTT, - Species.CHESNAUGHT, - Species.DELPHOX, - Species.GRENINJA, - Species.DECIDUEYE, - Species.INCINEROAR, - Species.PRIMARINA, - Species.RILLABOOM, - Species.CINDERACE, - Species.INTELEON, - Species.MEOWSCARADA, - Species.SKELEDIRGE, - Species.QUAQUAVAL, + SpeciesId.VENUSAUR, + SpeciesId.CHARIZARD, + SpeciesId.BLASTOISE, + SpeciesId.MEGANIUM, + SpeciesId.TYPHLOSION, + SpeciesId.FERALIGATR, + SpeciesId.SCEPTILE, + SpeciesId.BLAZIKEN, + SpeciesId.SWAMPERT, + SpeciesId.TORTERRA, + SpeciesId.INFERNAPE, + SpeciesId.EMPOLEON, + SpeciesId.SERPERIOR, + SpeciesId.EMBOAR, + SpeciesId.SAMUROTT, + SpeciesId.CHESNAUGHT, + SpeciesId.DELPHOX, + SpeciesId.GRENINJA, + SpeciesId.DECIDUEYE, + SpeciesId.INCINEROAR, + SpeciesId.PRIMARINA, + SpeciesId.RILLABOOM, + SpeciesId.CINDERACE, + SpeciesId.INTELEON, + SpeciesId.MEOWSCARADA, + SpeciesId.SKELEDIRGE, + SpeciesId.QUAQUAVAL, ], TrainerSlot.TRAINER, true, @@ -4835,15 +4887,15 @@ export const trainerConfigs: TrainerConfigs = { 1, getRandomPartyMemberFunc( [ - Species.PIDGEOT, - Species.NOCTOWL, - Species.SWELLOW, - Species.STARAPTOR, - Species.UNFEZANT, - Species.TALONFLAME, - Species.TOUCANNON, - Species.CORVIKNIGHT, - Species.KILOWATTREL, + SpeciesId.PIDGEOT, + SpeciesId.NOCTOWL, + SpeciesId.SWELLOW, + SpeciesId.STARAPTOR, + SpeciesId.UNFEZANT, + SpeciesId.TALONFLAME, + SpeciesId.TOUCANNON, + SpeciesId.CORVIKNIGHT, + SpeciesId.KILOWATTREL, ], TrainerSlot.TRAINER, true, @@ -4865,7 +4917,7 @@ export const trainerConfigs: TrainerConfigs = { .setSpeciesFilter(species => species.baseTotal >= 540) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.RAYQUAZA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.RAYQUAZA], TrainerSlot.TRAINER, true, p => { p.setBoss(); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; @@ -4884,17 +4936,17 @@ export const trainerConfigs: TrainerConfigs = { .setVictoryBgm("victory_team_plasma") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.PERSIAN], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.PERSIAN], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.gender = Gender.MALE; }), ) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.DUGTRIO, Species.ALOLA_DUGTRIO])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.HONCHKROW])) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.NIDOQUEEN, Species.NIDOKING])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.DUGTRIO, SpeciesId.ALOLA_DUGTRIO])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.HONCHKROW])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.NIDOQUEEN, SpeciesId.NIDOKING])) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.RHYPERIOR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.RHYPERIOR], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; p.abilityIndex = 1; // Solid Rock @@ -4902,7 +4954,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.KANGASKHAN], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.KANGASKHAN], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -4917,7 +4969,7 @@ export const trainerConfigs: TrainerConfigs = { .setVictoryBgm("victory_team_plasma") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.TYRANITAR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TYRANITAR], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -4925,29 +4977,29 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.GASTRODON, Species.SEISMITOAD], TrainerSlot.TRAINER, true, p => { - if (p.species.speciesId === Species.GASTRODON) { + getRandomPartyMemberFunc([SpeciesId.GASTRODON, SpeciesId.SEISMITOAD], TrainerSlot.TRAINER, true, p => { + if (p.species.speciesId === SpeciesId.GASTRODON) { p.abilityIndex = 0; // Storm Drain - } else if (p.species.speciesId === Species.SEISMITOAD) { + } else if (p.species.speciesId === SpeciesId.SEISMITOAD) { p.abilityIndex = 2; // Water Absorb } }), ) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.GARCHOMP, Species.EXCADRILL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GARCHOMP, SpeciesId.EXCADRILL], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; - if (p.species.speciesId === Species.GARCHOMP) { + if (p.species.speciesId === SpeciesId.GARCHOMP) { p.abilityIndex = 2; // Rough Skin - } else if (p.species.speciesId === Species.EXCADRILL) { + } else if (p.species.speciesId === SpeciesId.EXCADRILL) { p.abilityIndex = 0; // Sand Rush } }), ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.RHYPERIOR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.RHYPERIOR], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; p.abilityIndex = 1; // Solid Rock @@ -4955,7 +5007,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.KANGASKHAN], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.KANGASKHAN], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -4965,7 +5017,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.MEWTWO], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.MEWTWO], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; @@ -4976,20 +5028,20 @@ export const trainerConfigs: TrainerConfigs = { .initForEvilTeamLeader("Magma Boss", []) .setMixedBattleBgm("battle_aqua_magma_boss") .setVictoryBgm("victory_team_plasma") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.SOLROCK])) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.TALONFLAME])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.WEEZING, Species.GALAR_WEEZING])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.SOLROCK])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.TALONFLAME])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.WEEZING, SpeciesId.GALAR_WEEZING])) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.TORKOAL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TORKOAL], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.abilityIndex = 1; // Drought }), ) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.DONPHAN])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.DONPHAN])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.CAMERUPT], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CAMERUPT], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5005,7 +5057,7 @@ export const trainerConfigs: TrainerConfigs = { .setVictoryBgm("victory_team_plasma") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.TYPHLOSION, Species.SOLROCK], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TYPHLOSION, SpeciesId.SOLROCK], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5013,32 +5065,32 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.NINETALES, Species.TORKOAL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.NINETALES, SpeciesId.TORKOAL], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); - if (p.species.speciesId === Species.NINETALES) { + if (p.species.speciesId === SpeciesId.NINETALES) { p.abilityIndex = 2; // Drought - } else if (p.species.speciesId === Species.TORKOAL) { + } else if (p.species.speciesId === SpeciesId.TORKOAL) { p.abilityIndex = 1; // Drought } }), ) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.SCOVILLAIN], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SCOVILLAIN], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.abilityIndex = 0; // Chlorophyll }), ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.GREAT_TUSK], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GREAT_TUSK], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ROGUE_BALL; }), ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.CAMERUPT], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CAMERUPT], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5049,7 +5101,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.GROUDON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GROUDON], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; @@ -5060,26 +5112,26 @@ export const trainerConfigs: TrainerConfigs = { .initForEvilTeamLeader("Aqua Boss", []) .setMixedBattleBgm("battle_aqua_magma_boss") .setVictoryBgm("victory_team_plasma") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.LUDICOLO])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.LUDICOLO])) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.PELIPPER], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.PELIPPER], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.abilityIndex = 1; // Drizzle }), ) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.MUK, Species.ALOLA_MUK])) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.WAILORD])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MUK, SpeciesId.ALOLA_MUK])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.WAILORD])) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.QWILFISH], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.QWILFISH], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.abilityIndex = 1; // Swift Swim }), ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.SHARPEDO], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SHARPEDO], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5095,7 +5147,7 @@ export const trainerConfigs: TrainerConfigs = { .setVictoryBgm("victory_team_plasma") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.LUDICOLO, Species.EMPOLEON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.LUDICOLO, SpeciesId.EMPOLEON], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5103,26 +5155,26 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.POLITOED, Species.PELIPPER], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.POLITOED, SpeciesId.PELIPPER], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); - if (p.species.speciesId === Species.POLITOED) { + if (p.species.speciesId === SpeciesId.POLITOED) { p.abilityIndex = 2; // Drizzle - } else if (p.species.speciesId === Species.PELIPPER) { + } else if (p.species.speciesId === SpeciesId.PELIPPER) { p.abilityIndex = 1; // Drizzle } }), ) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.DHELMISE])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.DHELMISE])) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.OVERQWIL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.OVERQWIL], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.abilityIndex = 1; // Swift Swim }), ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.SHARPEDO], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SHARPEDO], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5133,7 +5185,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.KYOGRE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.KYOGRE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; @@ -5144,13 +5196,13 @@ export const trainerConfigs: TrainerConfigs = { .initForEvilTeamLeader("Galactic Boss", []) .setMixedBattleBgm("battle_galactic_boss") .setVictoryBgm("victory_team_plasma") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.GYARADOS])) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.HONCHKROW, Species.HISUI_BRAVIARY])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.MAGNEZONE])) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.UXIE, Species.MESPRIT, Species.AZELF])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.GYARADOS])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.HONCHKROW, SpeciesId.HISUI_BRAVIARY])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MAGNEZONE])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.UXIE, SpeciesId.MESPRIT, SpeciesId.AZELF])) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.HOUNDOOM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.HOUNDOOM], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; p.formIndex = 1; // Mega Houndoom @@ -5159,7 +5211,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.WEAVILE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.WEAVILE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5173,22 +5225,22 @@ export const trainerConfigs: TrainerConfigs = { .setVictoryBgm("victory_team_plasma") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.CROBAT], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CROBAT], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), ) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.MAGNEZONE])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.MAGNEZONE])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.UXIE, Species.MESPRIT, Species.AZELF], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.UXIE, SpeciesId.MESPRIT, SpeciesId.AZELF], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ROGUE_BALL; }), ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.HOUNDOOM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.HOUNDOOM], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; p.formIndex = 1; // Mega Houndoom @@ -5197,7 +5249,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.WEAVILE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.WEAVILE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5206,7 +5258,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.DIALGA, Species.PALKIA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.DIALGA, SpeciesId.PALKIA], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; @@ -5217,14 +5269,14 @@ export const trainerConfigs: TrainerConfigs = { .initForEvilTeamLeader("Plasma Boss", []) .setMixedBattleBgm("battle_plasma_boss") .setVictoryBgm("victory_team_plasma") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.COFAGRIGUS])) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.SEISMITOAD])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.GALVANTULA, Species.EELEKTROSS])) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.DRAPION, Species.TOXICROAK])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.KINGAMBIT])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.COFAGRIGUS])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.SEISMITOAD])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.GALVANTULA, SpeciesId.EELEKTROSS])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.DRAPION, SpeciesId.TOXICROAK])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.KINGAMBIT])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.HYDREIGON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.HYDREIGON], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5238,43 +5290,43 @@ export const trainerConfigs: TrainerConfigs = { .setVictoryBgm("victory_team_plasma") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.RUNERIGUS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.RUNERIGUS], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); }), ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.JELLICENT, Species.BASCULEGION], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.JELLICENT, SpeciesId.BASCULEGION], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.gender = Gender.MALE; p.formIndex = 0; }), ) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.KINGAMBIT])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.KINGAMBIT])) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.VOLCARONA, Species.IRON_MOTH], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.VOLCARONA, SpeciesId.IRON_MOTH], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ROGUE_BALL; }), ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.HYDREIGON, Species.IRON_JUGULIS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.HYDREIGON, SpeciesId.IRON_JUGULIS], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; - if (p.species.speciesId === Species.HYDREIGON) { + if (p.species.speciesId === SpeciesId.HYDREIGON) { p.gender = Gender.MALE; - } else if (p.species.speciesId === Species.IRON_JUGULIS) { + } else if (p.species.speciesId === SpeciesId.IRON_JUGULIS) { p.gender = Gender.GENDERLESS; } }), ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.KYUREM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.KYUREM], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; @@ -5285,36 +5337,36 @@ export const trainerConfigs: TrainerConfigs = { .initForEvilTeamLeader("Flare Boss", []) .setMixedBattleBgm("battle_flare_boss") .setVictoryBgm("victory_team_plasma") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.MIENSHAO])) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.HONCHKROW, Species.TALONFLAME])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.MIENSHAO])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.HONCHKROW, SpeciesId.TALONFLAME])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.PYROAR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.PYROAR], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.gender = Gender.MALE; }), ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.DRAGALGE, Species.CLAWITZER], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.DRAGALGE, SpeciesId.CLAWITZER], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); - if (p.species.speciesId === Species.DRAGALGE) { + if (p.species.speciesId === SpeciesId.DRAGALGE) { p.abilityIndex = 2; // Adaptability - } else if (p.species.speciesId === Species.CLAWITZER) { + } else if (p.species.speciesId === SpeciesId.CLAWITZER) { p.abilityIndex = 0; // Mega Launcher } }), ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.GALLADE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GALLADE], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.abilityIndex = 1; // Sharpness }), ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.GYARADOS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GYARADOS], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5330,7 +5382,7 @@ export const trainerConfigs: TrainerConfigs = { .setVictoryBgm("victory_team_plasma") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.PYROAR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.PYROAR], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.gender = Gender.MALE; @@ -5338,26 +5390,26 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.DRAGALGE, Species.CLAWITZER], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.DRAGALGE, SpeciesId.CLAWITZER], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); - if (p.species.speciesId === Species.DRAGALGE) { + if (p.species.speciesId === SpeciesId.DRAGALGE) { p.abilityIndex = 2; // Adaptability - } else if (p.species.speciesId === Species.CLAWITZER) { + } else if (p.species.speciesId === SpeciesId.CLAWITZER) { p.abilityIndex = 0; // Mega Launcher } }), ) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.AEGISLASH, Species.HISUI_GOODRA])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.AEGISLASH, SpeciesId.HISUI_GOODRA])) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.IRON_VALIANT], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.IRON_VALIANT], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ROGUE_BALL; }), ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.GYARADOS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GYARADOS], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5368,7 +5420,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.ZYGARDE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ZYGARDE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; @@ -5382,18 +5434,18 @@ export const trainerConfigs: TrainerConfigs = { .setVictoryBgm("victory_team_plasma") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.CLEFABLE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CLEFABLE], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.gender = Gender.FEMALE; }), ) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.LILLIGANT, Species.HISUI_LILLIGANT])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.MILOTIC, Species.PRIMARINA])) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.GALAR_SLOWBRO, Species.GALAR_SLOWKING])) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.BEWEAR])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.LILLIGANT, SpeciesId.HISUI_LILLIGANT])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MILOTIC, SpeciesId.PRIMARINA])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.GALAR_SLOWBRO, SpeciesId.GALAR_SLOWKING])) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.BEWEAR])) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.NIHILEGO], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.NIHILEGO], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ROGUE_BALL; @@ -5406,35 +5458,35 @@ export const trainerConfigs: TrainerConfigs = { .setVictoryBgm("victory_team_plasma") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.CLEFABLE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CLEFABLE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.gender = Gender.FEMALE; }), ) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.MILOTIC, Species.PRIMARINA])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.MILOTIC, SpeciesId.PRIMARINA])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.SILVALLY], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SILVALLY], TrainerSlot.TRAINER, true, p => { p.formIndex = randSeedInt(18); // Random Silvally Form p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ROGUE_BALL; - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.MULTI_ATTACK)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.MULTI_ATTACK)) { // Check if Multi Attack is in the moveset, if not, replace the first move with Multi Attack. - p.moveset[0] = new PokemonMove(Moves.MULTI_ATTACK); + p.moveset[0] = new PokemonMove(MoveId.MULTI_ATTACK); } }), ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.PHEROMOSA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.PHEROMOSA], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ROGUE_BALL; }), ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.NIHILEGO], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.NIHILEGO], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ROGUE_BALL; @@ -5442,7 +5494,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.NECROZMA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.NECROZMA], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.formIndex = 2; // Dawn Wings p.generateAndPopulateMoveset(); @@ -5456,31 +5508,31 @@ export const trainerConfigs: TrainerConfigs = { .setVictoryBgm("victory_team_plasma") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.YANMEGA, Species.LOKIX], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.YANMEGA, SpeciesId.LOKIX], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); - if (p.species.speciesId === Species.YANMEGA) { + if (p.species.speciesId === SpeciesId.YANMEGA) { p.abilityIndex = 1; // Tinted Lens - } else if (p.species.speciesId === Species.LOKIX) { + } else if (p.species.speciesId === SpeciesId.LOKIX) { p.abilityIndex = 2; // Tinted Lens } }), ) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.HERACROSS])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.HERACROSS])) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.SCIZOR, Species.KLEAVOR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SCIZOR, SpeciesId.KLEAVOR], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); - if (p.species.speciesId === Species.SCIZOR) { + if (p.species.speciesId === SpeciesId.SCIZOR) { p.abilityIndex = 1; // Technician - } else if (p.species.speciesId === Species.KLEAVOR) { + } else if (p.species.speciesId === SpeciesId.KLEAVOR) { p.abilityIndex = 2; // Sharpness } }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.GALVANTULA, Species.VIKAVOLT])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.GALVANTULA, SpeciesId.VIKAVOLT])) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.PINSIR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.PINSIR], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.formIndex = 1; // Mega Pinsir p.pokeball = PokeballType.ULTRA_BALL; @@ -5489,7 +5541,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.GOLISOPOD], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GOLISOPOD], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.gender = Gender.MALE; @@ -5502,7 +5554,7 @@ export const trainerConfigs: TrainerConfigs = { .setVictoryBgm("victory_team_plasma") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.GOLISOPOD], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GOLISOPOD], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.abilityIndex = 2; // Anticipation @@ -5511,41 +5563,41 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.BUZZWOLE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.BUZZWOLE], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ROGUE_BALL; }), ) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.CRAWDAUNT, Species.HISUI_SAMUROTT], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CRAWDAUNT, SpeciesId.HISUI_SAMUROTT], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.abilityIndex = 2; // Sharpness Hisuian Samurott, Adaptability Crawdaunt }), ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.XURKITREE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.XURKITREE], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ROGUE_BALL; }), ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.GENESECT], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GENESECT], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; p.formIndex = randSeedInt(4, 1); // Shock, Burn, Chill, or Douse Drive - if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.TECHNO_BLAST)) { + if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.TECHNO_BLAST)) { // Check if Techno Blast is in the moveset, if not, replace the third move with Techno Blast. - p.moveset[2] = new PokemonMove(Moves.TECHNO_BLAST); + p.moveset[2] = new PokemonMove(MoveId.TECHNO_BLAST); } }), ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.PINSIR], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.PINSIR], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.formIndex = 1; // Mega Pinsir p.generateAndPopulateMoveset(); @@ -5560,42 +5612,42 @@ export const trainerConfigs: TrainerConfigs = { .setVictoryBgm("victory_team_plasma") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.ARCHALUDON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ARCHALUDON], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; }), ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.ESCAVALIER, Species.FERROTHORN], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ESCAVALIER, SpeciesId.FERROTHORN], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; }), ) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.SIRFETCHD, Species.MR_RIME], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SIRFETCHD, SpeciesId.MR_RIME], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; }), ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.CORVIKNIGHT], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CORVIKNIGHT], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; }), ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.KLINKLANG, Species.PERRSERKER], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.KLINKLANG, SpeciesId.PERRSERKER], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; }), ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.COPPERAJAH], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.COPPERAJAH], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.formIndex = 1; // G-Max Copperajah @@ -5611,7 +5663,7 @@ export const trainerConfigs: TrainerConfigs = { .setVictoryBgm("victory_team_plasma") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.ARCHALUDON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ARCHALUDON], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5619,14 +5671,14 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.AEGISLASH, Species.GHOLDENGO], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.AEGISLASH, SpeciesId.GHOLDENGO], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; }), ) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.DRACOZOLT, Species.DRACOVISH], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.DRACOZOLT, SpeciesId.DRACOVISH], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; p.abilityIndex = 1; // Strong Jaw Dracovish, Hustle Dracozolt @@ -5634,7 +5686,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.MELMETAL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.MELMETAL], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; }), @@ -5642,7 +5694,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyMemberFunc( 4, getRandomPartyMemberFunc( - [Species.GALAR_ARTICUNO, Species.GALAR_ZAPDOS, Species.GALAR_MOLTRES], + [SpeciesId.GALAR_ARTICUNO, SpeciesId.GALAR_ZAPDOS, SpeciesId.GALAR_MOLTRES], TrainerSlot.TRAINER, true, p => { @@ -5654,7 +5706,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.COPPERAJAH], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.COPPERAJAH], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.formIndex = 1; // G-Max Copperajah @@ -5668,13 +5720,13 @@ export const trainerConfigs: TrainerConfigs = { .initForEvilTeamLeader("Star Boss", []) .setMixedBattleBgm("battle_star_boss") .setVictoryBgm("victory_team_plasma") - .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.JOLTEON, Species.LEAFEON])) - .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.VAPOREON, Species.UMBREON])) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.ESPEON, Species.GLACEON])) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.FLAREON])) + .setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.JOLTEON, SpeciesId.LEAFEON])) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.VAPOREON, SpeciesId.UMBREON])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.ESPEON, SpeciesId.GLACEON])) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.FLAREON])) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.SYLVEON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SYLVEON], TrainerSlot.TRAINER, true, p => { p.abilityIndex = 2; // Pixilate p.generateAndPopulateMoveset(); p.gender = Gender.FEMALE; @@ -5682,7 +5734,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.EEVEE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.EEVEE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.formIndex = 2; // G-Max Eevee @@ -5698,7 +5750,7 @@ export const trainerConfigs: TrainerConfigs = { .setVictoryBgm("victory_team_plasma") .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.SYLVEON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SYLVEON], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.abilityIndex = 2; // Pixilate p.generateAndPopulateMoveset(); @@ -5707,21 +5759,21 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.ROTOM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ROTOM], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.formIndex = randSeedInt(5, 1); // Heat, Wash, Frost, Fan, or Mow }), ) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.RAIKOU, Species.ENTEI, Species.SUICUNE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.RAIKOU, SpeciesId.ENTEI, SpeciesId.SUICUNE], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; }), ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.REVAVROOM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { p.formIndex = randSeedInt(5, 1); // Random Starmobile form p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ROGUE_BALL; @@ -5729,7 +5781,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 4, - getRandomPartyMemberFunc([Species.ZAMAZENTA], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ZAMAZENTA], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; @@ -5737,7 +5789,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.EEVEE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.EEVEE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.formIndex = 2; @@ -5751,7 +5803,7 @@ export const trainerConfigs: TrainerConfigs = { .initForStatTrainer(true) .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.CLAYDOL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CLAYDOL], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 3); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5759,10 +5811,10 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.VENUSAUR, Species.COALOSSAL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.VENUSAUR, SpeciesId.COALOSSAL], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.GREAT_BALL; - if (p.species.speciesId === Species.VENUSAUR) { + if (p.species.speciesId === SpeciesId.VENUSAUR) { p.formIndex = 2; // Gmax p.abilityIndex = 2; // Venusaur gets Chlorophyll } else { @@ -5773,7 +5825,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.AGGRON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.AGGRON], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.formIndex = 1; // Mega p.generateName(); @@ -5781,15 +5833,15 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 3, - getRandomPartyMemberFunc([Species.TORKOAL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.TORKOAL], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.abilityIndex = 1; // Drought }), ) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.GREAT_TUSK], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.GREAT_TUSK], TrainerSlot.TRAINER, true)) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.HEATRAN], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.HEATRAN], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; @@ -5800,7 +5852,7 @@ export const trainerConfigs: TrainerConfigs = { .initForStatTrainer() .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.BLISSEY], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.BLISSEY], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 3); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5808,7 +5860,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.SNORLAX, Species.LAPRAS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.SNORLAX, SpeciesId.LAPRAS], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.GREAT_BALL; p.formIndex = 1; // Gmax @@ -5817,20 +5869,20 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.AUDINO], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.AUDINO], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.formIndex = 1; // Mega p.generateName(); }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.GOODRA], TrainerSlot.TRAINER, true)) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.IRON_HANDS], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.GOODRA], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.IRON_HANDS], TrainerSlot.TRAINER, true)) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.CRESSELIA, Species.ENAMORUS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CRESSELIA, SpeciesId.ENAMORUS], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); - if (p.species.speciesId === Species.ENAMORUS) { + if (p.species.speciesId === SpeciesId.ENAMORUS) { p.formIndex = 1; // Therian p.generateName(); } @@ -5842,7 +5894,7 @@ export const trainerConfigs: TrainerConfigs = { .initForStatTrainer() .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.ARCANINE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ARCANINE], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 3); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; @@ -5850,7 +5902,7 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.CINDERACE, Species.INTELEON], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.CINDERACE, SpeciesId.INTELEON], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.GREAT_BALL; p.formIndex = 1; // Gmax @@ -5859,17 +5911,17 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 2, - getRandomPartyMemberFunc([Species.AERODACTYL], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.AERODACTYL], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.formIndex = 1; // Mega p.generateName(); }), ) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.DRAGAPULT], TrainerSlot.TRAINER, true)) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.IRON_BUNDLE], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.DRAGAPULT], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.IRON_BUNDLE], TrainerSlot.TRAINER, true)) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.REGIELEKI], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.REGIELEKI], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; @@ -5880,7 +5932,7 @@ export const trainerConfigs: TrainerConfigs = { .initForStatTrainer() .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.ALAKAZAM], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.ALAKAZAM], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.formIndex = 1; @@ -5890,19 +5942,19 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.GENGAR, Species.HATTERENE], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.GENGAR, SpeciesId.HATTERENE], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.GREAT_BALL; - p.formIndex = p.species.speciesId === Species.GENGAR ? 2 : 1; // Gmax + p.formIndex = p.species.speciesId === SpeciesId.GENGAR ? 2 : 1; // Gmax p.generateName(); }), ) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.FLUTTER_MANE], TrainerSlot.TRAINER, true)) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.HYDREIGON], TrainerSlot.TRAINER, true)) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.MAGNEZONE], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.FLUTTER_MANE], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.HYDREIGON], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.MAGNEZONE], TrainerSlot.TRAINER, true)) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.LATIOS, Species.LATIAS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.LATIOS, SpeciesId.LATIAS], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; @@ -5913,7 +5965,7 @@ export const trainerConfigs: TrainerConfigs = { .initForStatTrainer(true) .setPartyMemberFunc( 0, - getRandomPartyMemberFunc([Species.LUCARIO], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.LUCARIO], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); p.formIndex = 1; @@ -5923,22 +5975,22 @@ export const trainerConfigs: TrainerConfigs = { ) .setPartyMemberFunc( 1, - getRandomPartyMemberFunc([Species.RILLABOOM, Species.CENTISKORCH], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.RILLABOOM, SpeciesId.CENTISKORCH], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.GREAT_BALL; p.formIndex = 1; // Gmax p.generateName(); }), ) - .setPartyMemberFunc(2, getRandomPartyMemberFunc([Species.TYRANITAR], TrainerSlot.TRAINER, true)) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([Species.ROARING_MOON], TrainerSlot.TRAINER, true)) - .setPartyMemberFunc(4, getRandomPartyMemberFunc([Species.URSALUNA], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.TYRANITAR], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.ROARING_MOON], TrainerSlot.TRAINER, true)) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.URSALUNA], TrainerSlot.TRAINER, true)) .setPartyMemberFunc( 5, - getRandomPartyMemberFunc([Species.REGIGIGAS, Species.LANDORUS], TrainerSlot.TRAINER, true, p => { + getRandomPartyMemberFunc([SpeciesId.REGIGIGAS, SpeciesId.LANDORUS], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); - if (p.species.speciesId === Species.LANDORUS) { + if (p.species.speciesId === SpeciesId.LANDORUS) { p.formIndex = 1; // Therian p.generateName(); } diff --git a/src/data/trainers/typedefs.ts b/src/data/trainers/typedefs.ts index c6d286e961e..3df2ba3f5f8 100644 --- a/src/data/trainers/typedefs.ts +++ b/src/data/trainers/typedefs.ts @@ -1,7 +1,7 @@ import type { EnemyPokemon } from "#app/field/pokemon"; import type { PersistentModifier } from "#app/modifier/modifier"; import type { PartyMemberStrength } from "#enums/party-member-strength"; -import type { Species } from "#enums/species"; +import type { SpeciesId } from "#enums/species-id"; import type { TrainerConfig } from "./trainer-config"; import type { TrainerPartyTemplate } from "./TrainerPartyTemplate"; @@ -11,7 +11,7 @@ export type GenModifiersFunc = (party: EnemyPokemon[]) => PersistentModifier[]; export type GenAIFunc = (party: EnemyPokemon[]) => void; export interface TrainerTierPools { - [key: number]: Species[]; + [key: number]: SpeciesId[]; } export interface TrainerConfigs { [key: number]: TrainerConfig; diff --git a/src/data/weather.ts b/src/data/weather.ts index be9107798df..3bd2e38824d 100644 --- a/src/data/weather.ts +++ b/src/data/weather.ts @@ -1,4 +1,4 @@ -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { WeatherType } from "#enums/weather-type"; import { getPokemonNameWithAffix } from "../messages"; import type Pokemon from "../field/pokemon"; @@ -289,13 +289,13 @@ export function getRandomWeatherType(arena: Arena): WeatherType { let weatherPool: WeatherPoolEntry[] = []; const hasSun = arena.getTimeOfDay() < 2; switch (arena.biomeType) { - case Biome.GRASS: + case BiomeId.GRASS: weatherPool = [{ weatherType: WeatherType.NONE, weight: 7 }]; if (hasSun) { weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 3 }); } break; - case Biome.TALL_GRASS: + case BiomeId.TALL_GRASS: weatherPool = [ { weatherType: WeatherType.NONE, weight: 8 }, { weatherType: WeatherType.RAIN, weight: 5 }, @@ -304,26 +304,26 @@ export function getRandomWeatherType(arena: Arena): WeatherType { weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 8 }); } break; - case Biome.FOREST: + case BiomeId.FOREST: weatherPool = [ { weatherType: WeatherType.NONE, weight: 8 }, { weatherType: WeatherType.RAIN, weight: 5 }, ]; break; - case Biome.SEA: + case BiomeId.SEA: weatherPool = [ { weatherType: WeatherType.NONE, weight: 3 }, { weatherType: WeatherType.RAIN, weight: 12 }, ]; break; - case Biome.SWAMP: + case BiomeId.SWAMP: weatherPool = [ { weatherType: WeatherType.NONE, weight: 3 }, { weatherType: WeatherType.RAIN, weight: 4 }, { weatherType: WeatherType.FOG, weight: 1 }, ]; break; - case Biome.BEACH: + case BiomeId.BEACH: weatherPool = [ { weatherType: WeatherType.NONE, weight: 8 }, { weatherType: WeatherType.RAIN, weight: 3 }, @@ -332,17 +332,17 @@ export function getRandomWeatherType(arena: Arena): WeatherType { weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 5 }); } break; - case Biome.LAKE: + case BiomeId.LAKE: weatherPool = [ { weatherType: WeatherType.NONE, weight: 10 }, { weatherType: WeatherType.RAIN, weight: 5 }, { weatherType: WeatherType.FOG, weight: 1 }, ]; break; - case Biome.SEABED: + case BiomeId.SEABED: weatherPool = [{ weatherType: WeatherType.RAIN, weight: 1 }]; break; - case Biome.BADLANDS: + case BiomeId.BADLANDS: weatherPool = [ { weatherType: WeatherType.NONE, weight: 8 }, { weatherType: WeatherType.SANDSTORM, weight: 2 }, @@ -351,26 +351,26 @@ export function getRandomWeatherType(arena: Arena): WeatherType { weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 5 }); } break; - case Biome.DESERT: + case BiomeId.DESERT: weatherPool = [{ weatherType: WeatherType.SANDSTORM, weight: 2 }]; if (hasSun) { weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 2 }); } break; - case Biome.ICE_CAVE: + case BiomeId.ICE_CAVE: weatherPool = [ { weatherType: WeatherType.NONE, weight: 3 }, { weatherType: WeatherType.SNOW, weight: 4 }, { weatherType: WeatherType.HAIL, weight: 1 }, ]; break; - case Biome.MEADOW: + case BiomeId.MEADOW: weatherPool = [{ weatherType: WeatherType.NONE, weight: 2 }]; if (hasSun) { weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 2 }); } break; - case Biome.VOLCANO: + case BiomeId.VOLCANO: weatherPool = [ { weatherType: hasSun ? WeatherType.SUNNY : WeatherType.NONE, @@ -378,25 +378,25 @@ export function getRandomWeatherType(arena: Arena): WeatherType { }, ]; break; - case Biome.GRAVEYARD: + case BiomeId.GRAVEYARD: weatherPool = [ { weatherType: WeatherType.NONE, weight: 3 }, { weatherType: WeatherType.FOG, weight: 1 }, ]; break; - case Biome.JUNGLE: + case BiomeId.JUNGLE: weatherPool = [ { weatherType: WeatherType.NONE, weight: 8 }, { weatherType: WeatherType.RAIN, weight: 2 }, ]; break; - case Biome.SNOWY_FOREST: + case BiomeId.SNOWY_FOREST: weatherPool = [ { weatherType: WeatherType.SNOW, weight: 7 }, { weatherType: WeatherType.HAIL, weight: 1 }, ]; break; - case Biome.ISLAND: + case BiomeId.ISLAND: weatherPool = [ { weatherType: WeatherType.NONE, weight: 5 }, { weatherType: WeatherType.RAIN, weight: 1 }, @@ -407,7 +407,7 @@ export function getRandomWeatherType(arena: Arena): WeatherType { break; } - if (arena.biomeType === Biome.TOWN && timedEventManager.isEventActive()) { + if (arena.biomeType === BiomeId.TOWN && timedEventManager.isEventActive()) { timedEventManager.getWeather()?.map(w => weatherPool.push(w)); } diff --git a/src/enums/MoveFlags.ts b/src/enums/MoveFlags.ts index 0fc85fddec6..1155417da6d 100644 --- a/src/enums/MoveFlags.ts +++ b/src/enums/MoveFlags.ts @@ -4,11 +4,11 @@ export enum MoveFlags { IGNORE_PROTECT = 1 << 1, /** * Sound-based moves have the following effects: - * - Pokemon with the {@linkcode Abilities.SOUNDPROOF Soundproof Ability} are unaffected by other Pokemon's sound-based moves. - * - Pokemon affected by {@linkcode Moves.THROAT_CHOP Throat Chop} cannot use sound-based moves for two turns. - * - Sound-based moves used by a Pokemon with {@linkcode Abilities.LIQUID_VOICE Liquid Voice} become Water-type moves. - * - Sound-based moves used by a Pokemon with {@linkcode Abilities.PUNK_ROCK Punk Rock} are boosted by 30%. Pokemon with Punk Rock also take half damage from sound-based moves. - * - All sound-based moves (except Howl) can hit Pokemon behind an active {@linkcode Moves.SUBSTITUTE Substitute}. + * - Pokemon with the {@linkcode AbilityId.SOUNDPROOF Soundproof Ability} are unaffected by other Pokemon's sound-based moves. + * - Pokemon affected by {@linkcode MoveId.THROAT_CHOP Throat Chop} cannot use sound-based moves for two turns. + * - Sound-based moves used by a Pokemon with {@linkcode AbilityId.LIQUID_VOICE Liquid Voice} become Water-type moves. + * - Sound-based moves used by a Pokemon with {@linkcode AbilityId.PUNK_ROCK Punk Rock} are boosted by 30%. Pokemon with Punk Rock also take half damage from sound-based moves. + * - All sound-based moves (except Howl) can hit Pokemon behind an active {@linkcode MoveId.SUBSTITUTE Substitute}. * * cf https://bulbapedia.bulbagarden.net/wiki/Sound-based_move */ @@ -20,19 +20,19 @@ export enum MoveFlags { PUNCHING_MOVE = 1 << 7, SLICING_MOVE = 1 << 8, /** - * Indicates a move should be affected by {@linkcode Abilities.RECKLESS} + * Indicates a move should be affected by {@linkcode AbilityId.RECKLESS} * @see {@linkcode Move.recklessMove()} */ RECKLESS_MOVE = 1 << 9, - /** Indicates a move should be affected by {@linkcode Abilities.BULLETPROOF} */ + /** Indicates a move should be affected by {@linkcode AbilityId.BULLETPROOF} */ BALLBOMB_MOVE = 1 << 10, - /** Grass types and pokemon with {@linkcode Abilities.OVERCOAT} are immune to powder moves */ + /** Grass types and pokemon with {@linkcode AbilityId.OVERCOAT} are immune to powder moves */ POWDER_MOVE = 1 << 11, - /** Indicates a move should trigger {@linkcode Abilities.DANCER} */ + /** Indicates a move should trigger {@linkcode AbilityId.DANCER} */ DANCE_MOVE = 1 << 12, - /** Indicates a move should trigger {@linkcode Abilities.WIND_RIDER} */ + /** Indicates a move should trigger {@linkcode AbilityId.WIND_RIDER} */ WIND_MOVE = 1 << 13, - /** Indicates a move should trigger {@linkcode Abilities.TRIAGE} */ + /** Indicates a move should trigger {@linkcode AbilityId.TRIAGE} */ TRIAGE_MOVE = 1 << 14, IGNORE_ABILITIES = 1 << 15, /** Enables all hits of a multi-hit move to be accuracy checked individually */ @@ -41,6 +41,6 @@ export enum MoveFlags { IGNORE_SUBSTITUTE = 1 << 17, /** Indicates a move is able to be redirected to allies in a double battle if the attacker faints */ REDIRECT_COUNTER = 1 << 18, - /** Indicates a move is able to be reflected by {@linkcode Abilities.MAGIC_BOUNCE} and {@linkcode Moves.MAGIC_COAT} */ + /** Indicates a move is able to be reflected by {@linkcode AbilityId.MAGIC_BOUNCE} and {@linkcode MoveId.MAGIC_COAT} */ REFLECTABLE = 1 << 19 } diff --git a/src/enums/abilities.ts b/src/enums/ability-id.ts similarity index 99% rename from src/enums/abilities.ts rename to src/enums/ability-id.ts index 4bf1b4984a9..c9681fb1109 100644 --- a/src/enums/abilities.ts +++ b/src/enums/ability-id.ts @@ -1,4 +1,4 @@ -export enum Abilities { +export enum AbilityId { /**{@link https://bulbapedia.bulbagarden.net/wiki/None_(ability) | Source} */ NONE, /**{@link https://bulbapedia.bulbagarden.net/wiki/Stench_(ability) | Source} */ diff --git a/src/enums/biome.ts b/src/enums/biome-id.ts similarity index 95% rename from src/enums/biome.ts rename to src/enums/biome-id.ts index 7284528767d..08a0d742738 100644 --- a/src/enums/biome.ts +++ b/src/enums/biome-id.ts @@ -1,4 +1,4 @@ -export enum Biome { +export enum BiomeId { // TODO: Should -1 be part of the enum signature (for "unknown place") TOWN, PLAINS, diff --git a/src/enums/moves.ts b/src/enums/move-id.ts similarity index 99% rename from src/enums/moves.ts rename to src/enums/move-id.ts index ee685e85fbe..e9894d9138d 100644 --- a/src/enums/moves.ts +++ b/src/enums/move-id.ts @@ -1,4 +1,4 @@ -export enum Moves { +export enum MoveId { /**{@link https://bulbapedia.bulbagarden.net/wiki/None_(move) | Source} */ NONE, /**{@link https://bulbapedia.bulbagarden.net/wiki/Pound_(move) | Source} */ diff --git a/src/enums/species.ts b/src/enums/species-id.ts similarity index 99% rename from src/enums/species.ts rename to src/enums/species-id.ts index 3d410deec1a..4eaec4ad9b5 100644 --- a/src/enums/species.ts +++ b/src/enums/species-id.ts @@ -1,4 +1,4 @@ -export enum Species { +export enum SpeciesId { /**{@link https://bulbapedia.bulbagarden.net/wiki/Bulbasaur_(Pokémon) | Source} */ BULBASAUR = 1, /**{@link https://bulbapedia.bulbagarden.net/wiki/Ivysaur_(Pokémon) | Source} */ diff --git a/src/field/arena.ts b/src/field/arena.ts index f083180490b..2ec98c53afa 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -31,19 +31,19 @@ import type Pokemon from "#app/field/pokemon"; import Overrides from "#app/overrides"; import { TagAddedEvent, TagRemovedEvent, TerrainChangedEvent, WeatherChangedEvent } from "#app/events/arena"; import type { ArenaTagType } from "#enums/arena-tag-type"; -import { Biome } from "#enums/biome"; -import type { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { BiomeId } from "#enums/biome-id"; +import type { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { TimeOfDay } from "#enums/time-of-day"; import { TrainerType } from "#enums/trainer-type"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { SpeciesFormChangeRevertWeatherFormTrigger, SpeciesFormChangeWeatherTrigger } from "#app/data/pokemon-forms"; import { CommonAnimPhase } from "#app/phases/common-anim-phase"; import { WeatherType } from "#enums/weather-type"; import { FieldEffectModifier } from "#app/modifier/modifier"; export class Arena { - public biomeType: Biome; + public biomeType: BiomeId; public weather: Weather | null; public terrain: Terrain | null; public tags: ArenaTag[]; @@ -64,7 +64,7 @@ export class Arena { public readonly eventTarget: EventTarget = new EventTarget(); - constructor(biome: Biome, bgm: string, playerFaints = 0) { + constructor(biome: BiomeId, bgm: string, playerFaints = 0) { this.biomeType = biome; this.tags = []; this.bgm = bgm; @@ -116,7 +116,7 @@ export class Arena { const isBossSpecies = !!globalScene.getEncounterBossSegments(waveIndex, level) && !!this.pokemonPool[BiomePoolTier.BOSS].length && - (this.biomeType !== Biome.END || globalScene.gameMode.isClassic || globalScene.gameMode.isWaveFinal(waveIndex)); + (this.biomeType !== BiomeId.END || globalScene.gameMode.isClassic || globalScene.gameMode.isWaveFinal(waveIndex)); const randVal = isBossSpecies ? 64 : 512; // luck influences encounter rarity let luckModifier = 0; @@ -153,9 +153,9 @@ export class Arena { ret = globalScene.randomSpecies(waveIndex, level); } else { const entry = tierPool[randSeedInt(tierPool.length)]; - let species: Species; + let species: SpeciesId; if (typeof entry === "number") { - species = entry as Species; + species = entry as SpeciesId; } else { const levelThresholds = Object.keys(entry); for (let l = levelThresholds.length - 1; l >= 0; l--) { @@ -199,7 +199,7 @@ export class Arena { const newSpeciesId = ret.getWildSpeciesForLevel(level, true, isBoss ?? isBossSpecies, globalScene.gameMode); if (newSpeciesId !== ret.speciesId) { - console.log("Replaced", Species[ret.speciesId], "with", Species[newSpeciesId]); + console.log("Replaced", SpeciesId[ret.speciesId], "with", SpeciesId[newSpeciesId]); ret = getPokemonSpecies(newSpeciesId); } return ret; @@ -239,30 +239,30 @@ export class Arena { getSpeciesFormIndex(species: PokemonSpecies): number { switch (species.speciesId) { - case Species.BURMY: - case Species.WORMADAM: + case SpeciesId.BURMY: + case SpeciesId.WORMADAM: switch (this.biomeType) { - case Biome.BEACH: + case BiomeId.BEACH: return 1; - case Biome.SLUM: + case BiomeId.SLUM: return 2; } break; - case Species.ROTOM: + case SpeciesId.ROTOM: switch (this.biomeType) { - case Biome.VOLCANO: + case BiomeId.VOLCANO: return 1; - case Biome.SEA: + case BiomeId.SEA: return 2; - case Biome.ICE_CAVE: + case BiomeId.ICE_CAVE: return 3; - case Biome.MOUNTAIN: + case BiomeId.MOUNTAIN: return 4; - case Biome.TALL_GRASS: + case BiomeId.TALL_GRASS: return 5; } break; - case Species.LYCANROC: + case SpeciesId.LYCANROC: const timeOfDay = this.getTimeOfDay(); switch (timeOfDay) { case TimeOfDay.DAY: @@ -281,9 +281,9 @@ export class Arena { getBgTerrainColorRatioForBiome(): number { switch (this.biomeType) { - case Biome.SPACE: + case BiomeId.SPACE: return 1; - case Biome.END: + case BiomeId.END: return 0; } @@ -372,8 +372,8 @@ export class Arena { */ triggerWeatherBasedFormChanges(): void { globalScene.getField(true).forEach(p => { - const isCastformWithForecast = p.hasAbility(Abilities.FORECAST) && p.species.speciesId === Species.CASTFORM; - const isCherrimWithFlowerGift = p.hasAbility(Abilities.FLOWER_GIFT) && p.species.speciesId === Species.CHERRIM; + const isCastformWithForecast = p.hasAbility(AbilityId.FORECAST) && p.species.speciesId === SpeciesId.CASTFORM; + const isCherrimWithFlowerGift = p.hasAbility(AbilityId.FLOWER_GIFT) && p.species.speciesId === SpeciesId.CHERRIM; if (isCastformWithForecast || isCherrimWithFlowerGift) { globalScene.triggerPokemonFormChange(p, SpeciesFormChangeWeatherTrigger); @@ -387,9 +387,9 @@ export class Arena { triggerWeatherBasedFormChangesToNormal(): void { globalScene.getField(true).forEach(p => { const isCastformWithForecast = - p.hasAbility(Abilities.FORECAST, false, true) && p.species.speciesId === Species.CASTFORM; + p.hasAbility(AbilityId.FORECAST, false, true) && p.species.speciesId === SpeciesId.CASTFORM; const isCherrimWithFlowerGift = - p.hasAbility(Abilities.FLOWER_GIFT, false, true) && p.species.speciesId === Species.CHERRIM; + p.hasAbility(AbilityId.FLOWER_GIFT, false, true) && p.species.speciesId === SpeciesId.CHERRIM; if (isCastformWithForecast || isCherrimWithFlowerGift) { return globalScene.triggerPokemonFormChange(p, SpeciesFormChangeRevertWeatherFormTrigger); @@ -488,42 +488,42 @@ export class Arena { */ getTrainerChance(): number { switch (this.biomeType) { - case Biome.METROPOLIS: + case BiomeId.METROPOLIS: return 2; - case Biome.SLUM: - case Biome.BEACH: - case Biome.DOJO: - case Biome.CONSTRUCTION_SITE: + case BiomeId.SLUM: + case BiomeId.BEACH: + case BiomeId.DOJO: + case BiomeId.CONSTRUCTION_SITE: return 4; - case Biome.PLAINS: - case Biome.GRASS: - case Biome.LAKE: - case Biome.CAVE: + case BiomeId.PLAINS: + case BiomeId.GRASS: + case BiomeId.LAKE: + case BiomeId.CAVE: return 6; - case Biome.TALL_GRASS: - case Biome.FOREST: - case Biome.SEA: - case Biome.SWAMP: - case Biome.MOUNTAIN: - case Biome.BADLANDS: - case Biome.DESERT: - case Biome.MEADOW: - case Biome.POWER_PLANT: - case Biome.GRAVEYARD: - case Biome.FACTORY: - case Biome.SNOWY_FOREST: + case BiomeId.TALL_GRASS: + case BiomeId.FOREST: + case BiomeId.SEA: + case BiomeId.SWAMP: + case BiomeId.MOUNTAIN: + case BiomeId.BADLANDS: + case BiomeId.DESERT: + case BiomeId.MEADOW: + case BiomeId.POWER_PLANT: + case BiomeId.GRAVEYARD: + case BiomeId.FACTORY: + case BiomeId.SNOWY_FOREST: return 8; - case Biome.ICE_CAVE: - case Biome.VOLCANO: - case Biome.RUINS: - case Biome.WASTELAND: - case Biome.JUNGLE: - case Biome.FAIRY_CAVE: + case BiomeId.ICE_CAVE: + case BiomeId.VOLCANO: + case BiomeId.RUINS: + case BiomeId.WASTELAND: + case BiomeId.JUNGLE: + case BiomeId.FAIRY_CAVE: return 12; - case Biome.SEABED: - case Biome.ABYSS: - case Biome.SPACE: - case Biome.TEMPLE: + case BiomeId.SEABED: + case BiomeId.ABYSS: + case BiomeId.SPACE: + case BiomeId.TEMPLE: return 16; default: return 0; @@ -532,7 +532,7 @@ export class Arena { getTimeOfDay(): TimeOfDay { switch (this.biomeType) { - case Biome.ABYSS: + case BiomeId.ABYSS: return TimeOfDay.NIGHT; } @@ -555,16 +555,16 @@ export class Arena { isOutside(): boolean { switch (this.biomeType) { - case Biome.SEABED: - case Biome.CAVE: - case Biome.ICE_CAVE: - case Biome.POWER_PLANT: - case Biome.DOJO: - case Biome.FACTORY: - case Biome.ABYSS: - case Biome.FAIRY_CAVE: - case Biome.TEMPLE: - case Biome.LABORATORY: + case BiomeId.SEABED: + case BiomeId.CAVE: + case BiomeId.ICE_CAVE: + case BiomeId.POWER_PLANT: + case BiomeId.DOJO: + case BiomeId.FACTORY: + case BiomeId.ABYSS: + case BiomeId.FAIRY_CAVE: + case BiomeId.TEMPLE: + case BiomeId.LABORATORY: return false; default: return true; @@ -589,7 +589,7 @@ export class Arena { return this.overrideTint(); } switch (this.biomeType) { - case Biome.ABYSS: + case BiomeId.ABYSS: return [64, 64, 64]; default: return [128, 128, 128]; @@ -615,9 +615,9 @@ export class Arena { return this.overrideTint(); } switch (this.biomeType) { - case Biome.ABYSS: - case Biome.SPACE: - case Biome.END: + case BiomeId.ABYSS: + case BiomeId.SPACE: + case BiomeId.END: return this.getDayTint(); } @@ -674,7 +674,7 @@ export class Arena { * Adds a new tag to the arena * @param tagType {@linkcode ArenaTagType} the tag being added * @param turnCount How many turns the tag lasts - * @param sourceMove {@linkcode Moves} the move the tag came from, or `undefined` if not from a move + * @param sourceMove {@linkcode MoveId} the move the tag came from, or `undefined` if not from a move * @param sourceId The ID of the pokemon in play the tag came from (see {@linkcode BattleScene.getPokemonById}) * @param side {@linkcode ArenaTagSide} which side(s) the tag applies to * @param quiet If a message should be queued on screen to announce the tag being added @@ -684,7 +684,7 @@ export class Arena { addTag( tagType: ArenaTagType, turnCount: number, - sourceMove: Moves | undefined, + sourceMove: MoveId | undefined, sourceId: number, side: ArenaTagSide = ArenaTagSide.BOTH, quiet = false, @@ -835,78 +835,78 @@ export class Arena { /** The loop point of any given biome track, read as seconds and milliseconds. */ getBgmLoopPoint(): number { switch (this.biomeType) { - case Biome.TOWN: + case BiomeId.TOWN: return 7.288; - case Biome.PLAINS: + case BiomeId.PLAINS: return 17.485; - case Biome.GRASS: + case BiomeId.GRASS: return 1.995; - case Biome.TALL_GRASS: + case BiomeId.TALL_GRASS: return 9.608; - case Biome.METROPOLIS: + case BiomeId.METROPOLIS: return 141.47; - case Biome.FOREST: + case BiomeId.FOREST: return 0.341; - case Biome.SEA: + case BiomeId.SEA: return 0.024; - case Biome.SWAMP: + case BiomeId.SWAMP: return 4.461; - case Biome.BEACH: + case BiomeId.BEACH: return 3.462; - case Biome.LAKE: + case BiomeId.LAKE: return 7.215; - case Biome.SEABED: + case BiomeId.SEABED: return 2.6; - case Biome.MOUNTAIN: + case BiomeId.MOUNTAIN: return 4.018; - case Biome.BADLANDS: + case BiomeId.BADLANDS: return 17.79; - case Biome.CAVE: + case BiomeId.CAVE: return 14.24; - case Biome.DESERT: + case BiomeId.DESERT: return 1.143; - case Biome.ICE_CAVE: + case BiomeId.ICE_CAVE: return 0.0; - case Biome.MEADOW: + case BiomeId.MEADOW: return 3.891; - case Biome.POWER_PLANT: + case BiomeId.POWER_PLANT: return 9.447; - case Biome.VOLCANO: + case BiomeId.VOLCANO: return 17.637; - case Biome.GRAVEYARD: + case BiomeId.GRAVEYARD: return 13.711; - case Biome.DOJO: + case BiomeId.DOJO: return 6.205; - case Biome.FACTORY: + case BiomeId.FACTORY: return 4.985; - case Biome.RUINS: + case BiomeId.RUINS: return 0.0; - case Biome.WASTELAND: + case BiomeId.WASTELAND: return 6.336; - case Biome.ABYSS: + case BiomeId.ABYSS: return 5.13; - case Biome.SPACE: + case BiomeId.SPACE: return 20.036; - case Biome.CONSTRUCTION_SITE: + case BiomeId.CONSTRUCTION_SITE: return 1.222; - case Biome.JUNGLE: + case BiomeId.JUNGLE: return 0.0; - case Biome.FAIRY_CAVE: + case BiomeId.FAIRY_CAVE: return 4.542; - case Biome.TEMPLE: + case BiomeId.TEMPLE: return 2.547; - case Biome.ISLAND: + case BiomeId.ISLAND: return 2.751; - case Biome.LABORATORY: + case BiomeId.LABORATORY: return 114.862; - case Biome.SLUM: + case BiomeId.SLUM: return 0.0; - case Biome.SNOWY_FOREST: + case BiomeId.SNOWY_FOREST: return 3.047; - case Biome.END: + case BiomeId.END: return 17.153; default: - console.warn(`missing bgm loop-point for biome "${Biome[this.biomeType]}" (=${this.biomeType})`); + console.warn(`missing bgm loop-point for biome "${BiomeId[this.biomeType]}" (=${this.biomeType})`); return 0; } } @@ -916,37 +916,37 @@ export class Arena { } } -export function getBiomeKey(biome: Biome): string { - return Biome[biome].toLowerCase(); +export function getBiomeKey(biome: BiomeId): string { + return BiomeId[biome].toLowerCase(); } -export function getBiomeHasProps(biomeType: Biome): boolean { +export function getBiomeHasProps(biomeType: BiomeId): boolean { switch (biomeType) { - case Biome.METROPOLIS: - case Biome.BEACH: - case Biome.LAKE: - case Biome.SEABED: - case Biome.MOUNTAIN: - case Biome.BADLANDS: - case Biome.CAVE: - case Biome.DESERT: - case Biome.ICE_CAVE: - case Biome.MEADOW: - case Biome.POWER_PLANT: - case Biome.VOLCANO: - case Biome.GRAVEYARD: - case Biome.FACTORY: - case Biome.RUINS: - case Biome.WASTELAND: - case Biome.ABYSS: - case Biome.CONSTRUCTION_SITE: - case Biome.JUNGLE: - case Biome.FAIRY_CAVE: - case Biome.TEMPLE: - case Biome.SNOWY_FOREST: - case Biome.ISLAND: - case Biome.LABORATORY: - case Biome.END: + case BiomeId.METROPOLIS: + case BiomeId.BEACH: + case BiomeId.LAKE: + case BiomeId.SEABED: + case BiomeId.MOUNTAIN: + case BiomeId.BADLANDS: + case BiomeId.CAVE: + case BiomeId.DESERT: + case BiomeId.ICE_CAVE: + case BiomeId.MEADOW: + case BiomeId.POWER_PLANT: + case BiomeId.VOLCANO: + case BiomeId.GRAVEYARD: + case BiomeId.FACTORY: + case BiomeId.RUINS: + case BiomeId.WASTELAND: + case BiomeId.ABYSS: + case BiomeId.CONSTRUCTION_SITE: + case BiomeId.JUNGLE: + case BiomeId.FAIRY_CAVE: + case BiomeId.TEMPLE: + case BiomeId.SNOWY_FOREST: + case BiomeId.ISLAND: + case BiomeId.LABORATORY: + case BiomeId.END: return true; } @@ -955,7 +955,7 @@ export function getBiomeHasProps(biomeType: Biome): boolean { export class ArenaBase extends Phaser.GameObjects.Container { public player: boolean; - public biome: Biome; + public biome: BiomeId; public propValue: number; public base: Phaser.GameObjects.Sprite; public props: Phaser.GameObjects.Sprite[]; @@ -978,7 +978,7 @@ export class ArenaBase extends Phaser.GameObjects.Container { : []; } - setBiome(biome: Biome, propValue?: number): void { + setBiome(biome: BiomeId, propValue?: number): void { const hasProps = getBiomeHasProps(biome); const biomeKey = getBiomeKey(biome); const baseKey = `${biomeKey}_${this.player ? "a" : "b"}`; diff --git a/src/field/mystery-encounter-intro.ts b/src/field/mystery-encounter-intro.ts index b6212b6b031..f6702c690bd 100644 --- a/src/field/mystery-encounter-intro.ts +++ b/src/field/mystery-encounter-intro.ts @@ -1,13 +1,13 @@ import type { GameObjects } from "phaser"; import { globalScene } from "#app/global-scene"; import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import type { Species } from "#enums/species"; +import type { SpeciesId } from "#enums/species-id"; import { isNullOrUndefined } from "#app/utils/common"; import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import type { Variant } from "#app/sprites/variant"; import { doShinySparkleAnim } from "#app/field/anims"; -import PlayAnimationConfig = Phaser.Types.Animations.PlayAnimationConfig; import { loadPokemonVariantAssets } from "#app/sprites/pokemon-sprite"; +import PlayAnimationConfig = Phaser.Types.Animations.PlayAnimationConfig; type KnownFileRoot = | "arenas" @@ -39,7 +39,7 @@ export class MysteryEncounterSpriteConfig { /** Refer to [/public/images](../../public/images) directorty for all folder names */ fileRoot: (KnownFileRoot & string) | string; /** Optional replacement for `spriteKey`/`fileRoot`. Just know this defaults to male/genderless, form 0, no shiny */ - species?: Species; + species?: SpeciesId; /** Enable shadow. Defaults to `false` */ hasShadow?: boolean = false; /** Disable animation. Defaults to `false` */ diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 329ba06fd09..cd8563cfb30 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -220,14 +220,14 @@ import i18next from "i18next"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { ModifierTier } from "#app/modifier/modifier-tier"; import { applyChallenges, ChallengeType } from "#app/data/challenge"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattleSpec } from "#enums/battle-spec"; import { BattlerTagType } from "#enums/battler-tag-type"; import type { BerryType } from "#enums/berry-type"; -import { Biome } from "#enums/biome"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { BiomeId } from "#enums/biome-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { getPokemonNameWithAffix } from "#app/messages"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { FaintPhase } from "#app/phases/faint-phase"; @@ -333,8 +333,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { public status: Status | null; public friendship: number; public metLevel: number; - public metBiome: Biome | -1; - public metSpecies: Species; + public metBiome: BiomeId | -1; + public metSpecies: SpeciesId; public metWave: number; public luck: number; public pauseEvolutions: boolean; @@ -381,7 +381,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { public maskEnabled: boolean; public maskSprite: Phaser.GameObjects.Sprite | null; - public usedTMs: Moves[]; + public usedTMs: MoveId[]; private shinySparkle: Phaser.GameObjects.Sprite; @@ -1123,7 +1123,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** * Get this {@linkcode Pokemon}'s {@linkcode PokemonSpeciesForm}. - * @param ignoreOverride - Whether to ignore overridden species from {@linkcode Moves.TRANSFORM}, default `false`. + * @param ignoreOverride - Whether to ignore overridden species from {@linkcode MoveId.TRANSFORM}, default `false`. * This overrides `useIllusion` if `true`. * @param useIllusion - `true` to use the speciesForm of the illusion; default `false`. */ @@ -1571,7 +1571,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.status && this.status.effect === StatusEffect.PARALYSIS) { ret >>= 1; } - if (this.getTag(BattlerTagType.UNBURDEN) && this.hasAbility(Abilities.UNBURDEN)) { + if (this.getTag(BattlerTagType.UNBURDEN) && this.hasAbility(AbilityId.UNBURDEN)) { ret *= 2; } break; @@ -1601,7 +1601,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (s === Stat.HP) { statHolder.value = statHolder.value + this.level + 10; globalScene.applyModifier(PokemonIncrementingStatModifier, this.isPlayer(), this, s, statHolder); - if (this.hasAbility(Abilities.WONDER_GUARD, false, true)) { + if (this.hasAbility(AbilityId.WONDER_GUARD, false, true)) { statHolder.value = 1; } if (this.hp > statHolder.value || this.hp === undefined) { @@ -1817,21 +1817,21 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Checks if the {@linkcode Pokemon} has a fusion with the specified {@linkcode Species}. - * @param species the pokemon {@linkcode Species} to check - * @returns `true` if the {@linkcode Pokemon} has a fusion with the specified {@linkcode Species}, `false` otherwise + * Checks if the {@linkcode Pokemon} has a fusion with the specified {@linkcode SpeciesId}. + * @param species the pokemon {@linkcode SpeciesId} to check + * @returns `true` if the {@linkcode Pokemon} has a fusion with the specified {@linkcode SpeciesId}, `false` otherwise */ - hasFusionSpecies(species: Species): boolean { + hasFusionSpecies(species: SpeciesId): boolean { return this.fusionSpecies?.speciesId === species; } /** - * Checks if the {@linkcode Pokemon} has is the specified {@linkcode Species} or is fused with it. - * @param species the pokemon {@linkcode Species} to check + * Checks if the {@linkcode Pokemon} has is the specified {@linkcode SpeciesId} or is fused with it. + * @param species the pokemon {@linkcode SpeciesId} to check * @param formKey If provided, requires the species to be in that form * @returns `true` if the pokemon is the species or is fused with it, `false` otherwise */ - hasSpecies(species: Species, formKey?: string): boolean { + hasSpecies(species: SpeciesId, formKey?: string): boolean { if (isNullOrUndefined(formKey)) { return this.species.speciesId === species || this.fusionSpecies?.speciesId === species; } @@ -1848,7 +1848,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const ret = !ignoreOverride && this.summonData.moveset ? this.summonData.moveset : this.moveset; // Overrides moveset based on arrays specified in overrides.ts - let overrideArray: Moves | Array = this.isPlayer() + let overrideArray: MoveId | Array = this.isPlayer() ? Overrides.MOVESET_OVERRIDE : Overrides.OPP_MOVESET_OVERRIDE; if (!Array.isArray(overrideArray)) { @@ -1858,7 +1858,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!this.isPlayer()) { this.moveset = []; } - overrideArray.forEach((move: Moves, index: number) => { + overrideArray.forEach((move: MoveId, index: number) => { const ppUsed = this.moveset[index]?.ppUsed ?? 0; this.moveset[index] = new PokemonMove(move, Math.min(ppUsed, allMoves[move].pp)); }); @@ -1871,11 +1871,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * Checks which egg moves have been unlocked for the {@linkcode Pokemon} based * on the species it was met at or by the first {@linkcode Pokemon} in its evolution * line that can act as a starter and provides those egg moves. - * @returns an array of {@linkcode Moves}, the length of which is determined by how many + * @returns an array of {@linkcode MoveId}, the length of which is determined by how many * egg moves are unlocked for that species. */ - getUnlockedEggMoves(): Moves[] { - const moves: Moves[] = []; + getUnlockedEggMoves(): MoveId[] { + const moves: MoveId[] = []; const species = this.metSpecies in speciesEggMoves ? this.metSpecies : this.getSpeciesForm(true).getRootSpeciesId(true); if (species in speciesEggMoves) { @@ -1894,10 +1894,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * * Available egg moves are only included if the {@linkcode Pokemon} was * in the starting party of the run and if Fresh Start is not active. - * @returns an array of {@linkcode Moves}, the length of which is determined + * @returns an array of {@linkcode MoveId}, the length of which is determined * by how many learnable moves there are for the {@linkcode Pokemon}. */ - public getLearnableLevelMoves(): Moves[] { + public getLearnableLevelMoves(): MoveId[] { let levelMoves = this.getLevelMoves(1, true, false, true).map(lm => lm[1]); if (this.metBiome === -1 && !globalScene.gameMode.isFreshStartChallenge() && !globalScene.gameMode.isDaily) { levelMoves = this.getUnlockedEggMoves().concat(levelMoves); @@ -2071,7 +2071,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return allAbilities[this.customPokemonData.ability]; } let abilityId = this.getSpeciesForm(ignoreOverride).getAbility(this.abilityIndex); - if (abilityId === Abilities.NONE) { + if (abilityId === AbilityId.NONE) { abilityId = this.species.ability1; } return allAbilities[abilityId]; @@ -2165,9 +2165,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return false; } if ( - ((Overrides.PASSIVE_ABILITY_OVERRIDE !== Abilities.NONE || Overrides.HAS_PASSIVE_ABILITY_OVERRIDE) && + ((Overrides.PASSIVE_ABILITY_OVERRIDE !== AbilityId.NONE || Overrides.HAS_PASSIVE_ABILITY_OVERRIDE) && this.isPlayer()) || - ((Overrides.OPP_PASSIVE_ABILITY_OVERRIDE !== Abilities.NONE || Overrides.OPP_HAS_PASSIVE_ABILITY_OVERRIDE) && + ((Overrides.OPP_PASSIVE_ABILITY_OVERRIDE !== AbilityId.NONE || Overrides.OPP_HAS_PASSIVE_ABILITY_OVERRIDE) && !this.isPlayer()) ) { return true; @@ -2238,7 +2238,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param ignoreOverride Whether to ignore ability changing effects; default `false` * @returns `true` if the ability is present and active */ - public hasAbility(ability: Abilities, canApply = true, ignoreOverride = false): boolean { + public hasAbility(ability: AbilityId, canApply = true, ignoreOverride = false): boolean { if (this.getAbility(ignoreOverride).id === ability && (!canApply || this.canApplyAbility())) { return true; } @@ -2291,11 +2291,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns the pokemon's current tera {@linkcode PokemonType} */ getTeraType(): PokemonType { - if (this.hasSpecies(Species.TERAPAGOS)) { + if (this.hasSpecies(SpeciesId.TERAPAGOS)) { return PokemonType.STELLAR; } - if (this.hasSpecies(Species.OGERPON)) { - const ogerponForm = this.species.speciesId === Species.OGERPON ? this.formIndex : this.fusionFormIndex; + if (this.hasSpecies(SpeciesId.OGERPON)) { + const ogerponForm = this.species.speciesId === SpeciesId.OGERPON ? this.formIndex : this.fusionFormIndex; switch (ogerponForm) { case 0: case 4: @@ -2311,7 +2311,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return PokemonType.ROCK; } } - if (this.hasSpecies(Species.SHEDINJA)) { + if (this.hasSpecies(SpeciesId.SHEDINJA)) { return PokemonType.BUG; } return this.teraType; @@ -2321,7 +2321,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return ( !!this.getTag(GroundedTag) || (!this.isOfType(PokemonType.FLYING, true, true) && - !this.hasAbility(Abilities.LEVITATE) && + !this.hasAbility(AbilityId.LEVITATE) && !this.getTag(BattlerTagType.FLOATING) && !this.getTag(SemiInvulnerableTag)) ); @@ -2382,8 +2382,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // then bypass the check for ion deluge and electrify if ( this.isTerastallized && - (move.id === Moves.TERA_BLAST || - (move.id === Moves.TERA_STARSTORM && moveTypeHolder.value === PokemonType.STELLAR)) + (move.id === MoveId.TERA_BLAST || + (move.id === MoveId.TERA_STARSTORM && moveTypeHolder.value === PokemonType.STELLAR)) ) { return moveTypeHolder.value as PokemonType; } @@ -2780,7 +2780,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param ret the output array to be pushed into. */ private getUniqueMoves(levelMoves: LevelMoves, ret: LevelMoves): void { - const uniqueMoves: Moves[] = []; + const uniqueMoves: MoveId[] = []; for (const lm of levelMoves) { if (!uniqueMoves.find(m => m === lm[1])) { uniqueMoves.push(lm[1]); @@ -2794,12 +2794,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * * @returns list of egg moves */ - getEggMoves(): Moves[] | undefined { + getEggMoves(): MoveId[] | undefined { return speciesEggMoves[this.getSpeciesForm().getRootSpeciesId()]; } - setMove(moveIndex: number, moveId: Moves): void { - if (moveId === Moves.NONE) { + setMove(moveIndex: number, moveId: MoveId): void { + if (moveId === MoveId.NONE) { return; } const move = new PokemonMove(moveId); @@ -2822,7 +2822,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ trySetShiny(thresholdOverride?: number): boolean { // Shiny Pokemon should not spawn in the end biome in endless - if (globalScene.gameMode.isEndless && globalScene.arena.biomeType === Biome.END) { + if (globalScene.gameMode.isEndless && globalScene.arena.biomeType === BiomeId.END) { return false; } @@ -2987,7 +2987,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { !species.mythical && !species.isTrainerForbidden() && species.speciesId !== this.species.speciesId && - species.speciesId !== Species.DITTO + species.speciesId !== SpeciesId.DITTO ); }; @@ -3050,7 +3050,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** Generates a semi-random moveset for a Pokemon */ public generateAndPopulateMoveset(): void { this.moveset = []; - let movePool: [Moves, number][] = []; + let movePool: [MoveId, number][] = []; const allLevelMoves = this.getLevelMoves(1, true, true); if (!allLevelMoves) { console.warn("Error encountered trying to generate moveset for:", this.species.name); @@ -3079,7 +3079,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.hasTrainer()) { const tms = Object.keys(tmSpecies); for (const tm of tms) { - const moveId = Number.parseInt(tm) as Moves; + const moveId = Number.parseInt(tm) as MoveId; let compatible = false; for (const p of tmSpecies[tm]) { if (Array.isArray(p)) { @@ -3202,7 +3202,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.isBoss()) { weightMultiplier += 0.4; } - const baseWeights: [Moves, number][] = movePool.map(m => [m[0], Math.ceil(Math.pow(m[1], weightMultiplier) * 100)]); + const baseWeights: [MoveId, number][] = movePool.map(m => [ + m[0], + Math.ceil(Math.pow(m[1], weightMultiplier) * 100), + ]); // All Pokemon force a STAB move first const stabMovePool = baseWeights.filter( @@ -3656,7 +3659,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if ( source.isTerastallized && source.getTeraType() === PokemonType.STELLAR && - (!source.stellarTypesBoosted.includes(moveType) || source.hasSpecies(Species.TERAPAGOS)) + (!source.stellarTypesBoosted.includes(moveType) || source.hasSpecies(SpeciesId.TERAPAGOS)) ) { stabMultiplier.value += matchesSourceType ? 0.5 : 0.2; } @@ -3724,7 +3727,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (cancelled.value || isTypeImmune) { return { cancelled: cancelled.value, - result: move.id === Moves.SHEER_COLD ? HitResult.IMMUNE : HitResult.NO_EFFECT, + result: move.id === MoveId.SHEER_COLD ? HitResult.IMMUNE : HitResult.NO_EFFECT, damage: 0, }; } @@ -4131,7 +4134,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return !cancelled.value; } - addTag(tagType: BattlerTagType, turnCount = 0, sourceMove?: Moves, sourceId?: number): boolean { + addTag(tagType: BattlerTagType, turnCount = 0, sourceMove?: MoveId, sourceId?: number): boolean { const existingTag = this.getTag(tagType); if (existingTag) { existingTag.onOverlap(this); @@ -4281,7 +4284,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if ( !tag.isBatonPassable || (tag.tagType === BattlerTagType.TELEKINESIS && - this.species.speciesId === Species.GENGAR && + this.species.speciesId === SpeciesId.GENGAR && this.getFormKey() === "mega") ) { continue; @@ -4300,19 +4303,19 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** * Gets whether the given move is currently disabled for this Pokemon. * - * @param moveId - The {@linkcode Moves} ID of the move to check + * @param moveId - The {@linkcode MoveId} ID of the move to check * @returns `true` if the move is disabled for this Pokemon, otherwise `false` * * @see {@linkcode MoveRestrictionBattlerTag} */ - public isMoveRestricted(moveId: Moves, pokemon?: Pokemon): boolean { + public isMoveRestricted(moveId: MoveId, pokemon?: Pokemon): boolean { return this.getRestrictingTag(moveId, pokemon) !== null; } /** * Gets whether the given move is currently disabled for the user based on the player's target selection * - * @param moveId - The {@linkcode Moves} ID of the move to check + * @param moveId - The {@linkcode MoveId} ID of the move to check * @param user - The move user * @param target - The target of the move * @@ -4320,7 +4323,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * * @see {@linkcode MoveRestrictionBattlerTag} */ - isMoveTargetRestricted(moveId: Moves, user: Pokemon, target: Pokemon): boolean { + isMoveTargetRestricted(moveId: MoveId, user: Pokemon, target: Pokemon): boolean { for (const tag of this.findTags(t => t instanceof MoveRestrictionBattlerTag)) { if ((tag as MoveRestrictionBattlerTag).isMoveTargetRestricted(moveId, user, target)) { return (tag as MoveRestrictionBattlerTag) !== null; @@ -4332,12 +4335,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** * Gets the {@link MoveRestrictionBattlerTag} that is restricting a move, if it exists. * - * @param moveId - {@linkcode Moves} ID of the move to check + * @param moveId - {@linkcode MoveId} ID of the move to check * @param user - {@linkcode Pokemon} the move user, optional and used when the target is a factor in the move's restricted status * @param target - {@linkcode Pokemon} the target of the move, optional and used when the target is a factor in the move's restricted status * @returns The first tag on this Pokemon that restricts the move, or `null` if the move is not restricted. */ - getRestrictingTag(moveId: Moves, user?: Pokemon, target?: Pokemon): MoveRestrictionBattlerTag | null { + getRestrictingTag(moveId: MoveId, user?: Pokemon, target?: Pokemon): MoveRestrictionBattlerTag | null { for (const tag of this.findTags(t => t instanceof MoveRestrictionBattlerTag)) { if ((tag as MoveRestrictionBattlerTag).isMoveRestricted(moveId, user)) { return tag as MoveRestrictionBattlerTag; @@ -4899,7 +4902,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if ( this.hasAbilityWithAttr(CommanderAbAttr) && globalScene.currentBattle.double && - this.getAlly()?.species.speciesId === Species.DONDOZO + this.getAlly()?.species.speciesId === SpeciesId.DONDOZO ) { this.setVisible(false); } @@ -5509,7 +5512,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { export class PlayerPokemon extends Pokemon { protected battleInfo: PlayerBattleInfo; - public compatibleTms: Moves[]; + public compatibleTms: MoveId[]; constructor( species: PokemonSpecies, @@ -5580,7 +5583,7 @@ export class PlayerPokemon extends Pokemon { const tms = Object.keys(tmSpecies); for (const tm of tms) { - const moveId = Number.parseInt(tm) as Moves; + const moveId = Number.parseInt(tm) as MoveId; let compatible = false; for (const p of tmSpecies[tm]) { if (Array.isArray(p)) { @@ -5677,7 +5680,7 @@ export class PlayerPokemon extends Pokemon { } // Add to candy progress for this mon's starter species and its fused species (if it has one) starterData.forEach((sd: StarterDataEntry, i: number) => { - const speciesId = !i ? starterSpeciesId : (fusionStarterSpeciesId as Species); + const speciesId = !i ? starterSpeciesId : (fusionStarterSpeciesId as SpeciesId); sd.friendship = (sd.friendship || 0) + starterAmount.value; if (sd.friendship >= getStarterValueFriendshipCap(speciesStarterCosts[speciesId])) { globalScene.gameData.addStarterCandy(getPokemonSpecies(speciesId), 1); @@ -5812,7 +5815,7 @@ export class PlayerPokemon extends Pokemon { this.updateInfo(true).then(() => resolve()); }); }; - if (preEvolution.speciesId === Species.GIMMIGHOUL) { + if (preEvolution.speciesId === SpeciesId.GIMMIGHOUL) { const evotracker = this.getHeldItems().filter(m => m instanceof EvoTrackerModifier)[0] ?? null; if (evotracker) { globalScene.removeModifier(evotracker); @@ -5832,7 +5835,7 @@ export class PlayerPokemon extends Pokemon { const isFusion = evolution instanceof FusionSpeciesFormEvolution; const evoSpecies = !isFusion ? this.species : this.fusionSpecies; - if (evoSpecies?.speciesId === Species.NINCADA && evolution.speciesId === Species.NINJASK) { + if (evoSpecies?.speciesId === SpeciesId.NINCADA && evolution.speciesId === SpeciesId.NINJASK) { const newEvolution = pokemonEvolutions[evoSpecies.speciesId][1]; if (newEvolution.condition?.predicate(this)) { @@ -6108,7 +6111,7 @@ export class EnemyPokemon extends Pokemon { this.luck = (this.shiny ? this.variant + 1 : 0) + (this.fusionShiny ? this.fusionVariant + 1 : 0); - let prevolution: Species; + let prevolution: SpeciesId; let speciesId = species.speciesId; while ((prevolution = pokemonPrevolutions[speciesId])) { const evolution = pokemonEvolutions[prevolution].find( @@ -6164,30 +6167,30 @@ export class EnemyPokemon extends Pokemon { generateAndPopulateMoveset(formIndex?: number): void { switch (true) { - case this.species.speciesId === Species.SMEARGLE: + case this.species.speciesId === SpeciesId.SMEARGLE: this.moveset = [ - new PokemonMove(Moves.SKETCH), - new PokemonMove(Moves.SKETCH), - new PokemonMove(Moves.SKETCH), - new PokemonMove(Moves.SKETCH), + new PokemonMove(MoveId.SKETCH), + new PokemonMove(MoveId.SKETCH), + new PokemonMove(MoveId.SKETCH), + new PokemonMove(MoveId.SKETCH), ]; break; - case this.species.speciesId === Species.ETERNATUS: + case this.species.speciesId === SpeciesId.ETERNATUS: this.moveset = (formIndex !== undefined ? formIndex : this.formIndex) ? [ - new PokemonMove(Moves.DYNAMAX_CANNON), - new PokemonMove(Moves.CROSS_POISON), - new PokemonMove(Moves.FLAMETHROWER), - new PokemonMove(Moves.RECOVER, 0, -4), + new PokemonMove(MoveId.DYNAMAX_CANNON), + new PokemonMove(MoveId.CROSS_POISON), + new PokemonMove(MoveId.FLAMETHROWER), + new PokemonMove(MoveId.RECOVER, 0, -4), ] : [ - new PokemonMove(Moves.ETERNABEAM), - new PokemonMove(Moves.SLUDGE_BOMB), - new PokemonMove(Moves.FLAMETHROWER), - new PokemonMove(Moves.COSMIC_POWER), + new PokemonMove(MoveId.ETERNABEAM), + new PokemonMove(MoveId.SLUDGE_BOMB), + new PokemonMove(MoveId.FLAMETHROWER), + new PokemonMove(MoveId.COSMIC_POWER), ]; if (globalScene.gameMode.hasChallenge(Challenges.INVERSE_BATTLE)) { - this.moveset[2] = new PokemonMove(Moves.THUNDERBOLT); + this.moveset[2] = new PokemonMove(MoveId.THUNDERBOLT); } break; default: @@ -6273,7 +6276,7 @@ export class EnemyPokemon extends Pokemon { moveTargets.some(p => { const doesNotFail = move.applyConditions(this, p, move) || - [Moves.SUCKER_PUNCH, Moves.UPPER_HAND, Moves.THUNDERCLAP].includes(move.id); + [MoveId.SUCKER_PUNCH, MoveId.UPPER_HAND, MoveId.THUNDERCLAP].includes(move.id); return ( doesNotFail && p.getAttackDamage({ @@ -6332,7 +6335,7 @@ export class EnemyPokemon extends Pokemon { */ if ( (move.name.endsWith(" (N)") || !move.applyConditions(this, target, move)) && - ![Moves.SUCKER_PUNCH, Moves.UPPER_HAND, Moves.THUNDERCLAP].includes(move.id) + ![MoveId.SUCKER_PUNCH, MoveId.UPPER_HAND, MoveId.THUNDERCLAP].includes(move.id) ) { targetScore = -20; } else if (move instanceof AttackMove) { @@ -6417,17 +6420,17 @@ export class EnemyPokemon extends Pokemon { } return { - move: Moves.STRUGGLE, - targets: this.getNextTargets(Moves.STRUGGLE), + move: MoveId.STRUGGLE, + targets: this.getNextTargets(MoveId.STRUGGLE), }; } /** * Determines the Pokemon the given move would target if used by this Pokemon - * @param moveId {@linkcode Moves} The move to be used + * @param moveId {@linkcode MoveId} The move to be used * @returns The indexes of the Pokemon the given move would target */ - getNextTargets(moveId: Moves): BattlerIndex[] { + getNextTargets(moveId: MoveId): BattlerIndex[] { const moveTargets = getMoveTargets(this, moveId); const targets = globalScene.getField(true).filter(p => moveTargets.targets.indexOf(p.getBattlerIndex()) > -1); // If the move is multi-target, return all targets' indexes @@ -6702,7 +6705,6 @@ export class EnemyPokemon extends Pokemon { return ret; } - /** * Show or hide the type effectiveness multiplier window * Passing undefined will hide the window @@ -6735,7 +6737,7 @@ interface IllusionData { fusionVariant: Variant; }; /** The species of the illusion */ - species: Species; + species: SpeciesId; /** The formIndex of the illusion */ formIndex: number; /** The gender of the illusion */ @@ -6753,7 +6755,7 @@ interface IllusionData { } export interface TurnMove { - move: Moves; + move: MoveId; targets: BattlerIndex[]; result?: MoveResult; virtual?: boolean; @@ -6762,7 +6764,7 @@ export interface TurnMove { } export interface AttackMoveResult { - move: Moves; + move: MoveId; result: DamageResult; damage: number; critical: boolean; @@ -6785,8 +6787,8 @@ export class PokemonSummonData { // TODO: Move these into a separate class & add rage fist hit count public speciesForm: PokemonSpeciesForm | null = null; public fusionSpeciesForm: PokemonSpeciesForm | null = null; - public ability: Abilities | undefined; - public passiveAbility: Abilities | undefined; + public ability: AbilityId | undefined; + public passiveAbility: AbilityId | undefined; public gender: Gender | undefined; public fusionGender: Gender | undefined; public stats: number[] = [0, 0, 0, 0, 0, 0]; @@ -6800,7 +6802,7 @@ export class PokemonSummonData { public illusion: IllusionData | null = null; public illusionBroken = false; - /** Array containing all berries eaten in the last turn; used by {@linkcode Abilities.CUD_CHEW} */ + /** Array containing all berries eaten in the last turn; used by {@linkcode AbilityId.CUD_CHEW} */ public berriesEatenLast: BerryType[] = []; /** @@ -6849,7 +6851,7 @@ export class PokemonTempSummonData { * Reset on switch and new wave, but not stored in `SummonData` to avoid being written to the save file. * Used to evaluate "first turn only" conditions such as - * {@linkcode Moves.FAKE_OUT | Fake Out} and {@linkcode Moves.FIRST_IMPRESSION | First Impression}). + * {@linkcode MoveId.FAKE_OUT | Fake Out} and {@linkcode MoveId.FIRST_IMPRESSION | First Impression}). */ waveTurnCount = 1; } @@ -6859,11 +6861,11 @@ export class PokemonTempSummonData { * Resets at the start of a new battle (but not on switch). */ export class PokemonBattleData { - /** Counter tracking direct hits this Pokemon has received during this battle; used for {@linkcode Moves.RAGE_FIST} */ + /** Counter tracking direct hits this Pokemon has received during this battle; used for {@linkcode MoveId.RAGE_FIST} */ public hitCount = 0; - /** Whether this Pokemon has eaten a berry this battle; used for {@linkcode Moves.BELCH} */ + /** Whether this Pokemon has eaten a berry this battle; used for {@linkcode MoveId.BELCH} */ public hasEatenBerry = false; - /** Array containing all berries eaten and not yet recovered during this current battle; used by {@linkcode Abilities.HARVEST} */ + /** Array containing all berries eaten and not yet recovered during this current battle; used by {@linkcode AbilityId.HARVEST} */ public berriesEaten: BerryType[] = []; constructor(source?: PokemonBattleData | Partial) { @@ -6886,7 +6888,7 @@ export class PokemonWaveData { * A set of all the abilities this {@linkcode Pokemon} has used in this wave. * Used to track once per battle conditions, as well as (hopefully) by the updated AI for move effectiveness. */ - public abilitiesApplied: Set = new Set(); + public abilitiesApplied: Set = new Set(); /** Whether the pokemon's ability has been revealed or not */ public abilityRevealed = false; } @@ -6913,7 +6915,7 @@ export class PokemonTurnData { public statStagesIncreased = false; public statStagesDecreased = false; public moveEffectiveness: TypeDamageMultiplier | null = null; - public combiningPledge?: Moves; + public combiningPledge?: MoveId; public switchedInThisTurn = false; public failedRunAway = false; public joinedRound = false; @@ -6924,7 +6926,7 @@ export class PokemonTurnData { public extraTurns = 0; /** * All berries eaten by this pokemon in this turn. - * Saved into {@linkcode PokemonSummonData | SummonData} by {@linkcode Abilities.CUD_CHEW} on turn end. + * Saved into {@linkcode PokemonSummonData | SummonData} by {@linkcode AbilityId.CUD_CHEW} on turn end. * @see {@linkcode PokemonSummonData.berriesEatenLast} */ public berriesEaten: BerryType[] = []; @@ -6993,7 +6995,7 @@ export interface DamageCalculationResult { * @see {@linkcode getName} - returns name of {@linkcode Move}. **/ export class PokemonMove { - public moveId: Moves; + public moveId: MoveId; public ppUsed: number; public ppUp: number; public virtual: boolean; @@ -7004,7 +7006,7 @@ export class PokemonMove { */ public maxPpOverride?: number; - constructor(moveId: Moves, ppUsed = 0, ppUp = 0, virtual = false, maxPpOverride?: number) { + constructor(moveId: MoveId, ppUsed = 0, ppUp = 0, virtual = false, maxPpOverride?: number) { this.moveId = moveId; this.ppUsed = ppUsed; this.ppUp = ppUp; diff --git a/src/field/trainer.ts b/src/field/trainer.ts index 6b0a54b2103..244a23185da 100644 --- a/src/field/trainer.ts +++ b/src/field/trainer.ts @@ -17,7 +17,7 @@ import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag"; import { getIsInitialized, initI18n } from "#app/plugins/i18n"; import i18next from "i18next"; import { PartyMemberStrength } from "#enums/party-member-strength"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { TrainerType } from "#enums/trainer-type"; import { signatureSpecies } from "#app/data/balance/signature-species"; @@ -358,7 +358,7 @@ export default class Trainer extends Phaser.GameObjects.Container { } // Create an empty species pool (which will be set to one of the species pools based on the index) - let newSpeciesPool: Species[] = []; + let newSpeciesPool: SpeciesId[] = []; let useNewSpeciesPool = false; // If we are in a double battle of named trainers, we need to use alternate species pools (generate half the party from each trainer) @@ -399,9 +399,9 @@ export default class Trainer extends Phaser.GameObjects.Container { if (!(index % 2)) { // Since the only currently allowed double battle with named trainers is Tate & Liza, we need to make sure that Solrock is the first pokemon in the party for Tate and Lunatone for Liza if (index === 0 && TrainerType[this.config.trainerType] === TrainerType[TrainerType.TATE]) { - newSpeciesPool = [Species.SOLROCK]; + newSpeciesPool = [SpeciesId.SOLROCK]; } else if (index === 0 && TrainerType[this.config.trainerType] === TrainerType[TrainerType.LIZA]) { - newSpeciesPool = [Species.LUNATONE]; + newSpeciesPool = [SpeciesId.LUNATONE]; } else { newSpeciesPool = speciesPoolFiltered; } @@ -409,9 +409,9 @@ export default class Trainer extends Phaser.GameObjects.Container { // If the index is odd, use the species pool for the partner trainer (that way he only uses his own pokemon in battle) // Since the only currently allowed double battle with named trainers is Tate & Liza, we need to make sure that Solrock is the first pokemon in the party for Tate and Lunatone for Liza if (index === 1 && TrainerType[this.config.trainerTypeDouble] === TrainerType[TrainerType.TATE]) { - newSpeciesPool = [Species.SOLROCK]; + newSpeciesPool = [SpeciesId.SOLROCK]; } else if (index === 1 && TrainerType[this.config.trainerTypeDouble] === TrainerType[TrainerType.LIZA]) { - newSpeciesPool = [Species.LUNATONE]; + newSpeciesPool = [SpeciesId.LUNATONE]; } else { newSpeciesPool = speciesPoolPartnerFiltered; } @@ -542,10 +542,10 @@ export default class Trainer extends Phaser.GameObjects.Container { /** * Checks if the enemy trainer already has the Pokemon species in their party - * @param baseSpecies - The base {@linkcode Species} of the current Pokemon + * @param baseSpecies - The base {@linkcode SpeciesId} of the current Pokemon * @returns `true` if the species is already present in the party */ - checkDuplicateSpecies(baseSpecies: Species): boolean { + checkDuplicateSpecies(baseSpecies: SpeciesId): boolean { const staticSpecies = (signatureSpecies[TrainerType[this.config.trainerType]] ?? []).flat(1).map(s => { let root = s; while (pokemonPrevolutions.hasOwnProperty(root)) { diff --git a/src/game-mode.ts b/src/game-mode.ts index 97398d2b0a9..7ad8a6a83e9 100644 --- a/src/game-mode.ts +++ b/src/game-mode.ts @@ -8,8 +8,8 @@ import { allSpecies } from "./data/pokemon-species"; import type { Arena } from "./field/arena"; import Overrides from "#app/overrides"; import { isNullOrUndefined, randSeedInt, randSeedItem } from "#app/utils/common"; -import { Biome } from "#enums/biome"; -import { Species } from "#enums/species"; +import { BiomeId } from "#enums/biome-id"; +import { SpeciesId } from "#enums/species-id"; import { Challenges } from "./enums/challenges"; import { globalScene } from "#app/global-scene"; import { getDailyStartingBiome } from "./data/daily-run"; @@ -128,7 +128,7 @@ export class GameMode implements GameModeConfig { * - random biome for Daily mode * - Town */ - getStartingBiome(): Biome { + getStartingBiome(): BiomeId { if (!isNullOrUndefined(Overrides.STARTING_BIOME_OVERRIDE)) { return Overrides.STARTING_BIOME_OVERRIDE; } @@ -137,7 +137,7 @@ export class GameMode implements GameModeConfig { case GameModes.DAILY: return getDailyStartingBiome(); default: - return Biome.TOWN; + return BiomeId.TOWN; } } @@ -202,14 +202,14 @@ export class GameMode implements GameModeConfig { return false; } - isTrainerBoss(waveIndex: number, biomeType: Biome, offsetGym: boolean): boolean { + isTrainerBoss(waveIndex: number, biomeType: BiomeId, offsetGym: boolean): boolean { switch (this.modeId) { case GameModes.DAILY: return waveIndex > 10 && waveIndex < 50 && !(waveIndex % 10); default: return ( waveIndex % 30 === (offsetGym ? 0 : 20) && - (biomeType !== Biome.END || this.isClassic || this.isWaveFinal(waveIndex)) + (biomeType !== BiomeId.END || this.isClassic || this.isWaveFinal(waveIndex)) ); } } @@ -220,8 +220,8 @@ export class GameMode implements GameModeConfig { s => (s.subLegendary || s.legendary || s.mythical) && s.baseTotal >= 600 && - s.speciesId !== Species.ETERNATUS && - s.speciesId !== Species.ARCEUS, + s.speciesId !== SpeciesId.ETERNATUS && + s.speciesId !== SpeciesId.ARCEUS, ); return randSeedItem(allFinalBossSpecies); } diff --git a/src/loading-scene.ts b/src/loading-scene.ts index 914e6e961e2..67ca9a28bc5 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -18,7 +18,7 @@ import { initChallenges } from "#app/data/challenge"; import i18next from "i18next"; import { initStatsKeys } from "#app/ui/game-stats-ui-handler"; import { initVouchers } from "#app/system/voucher"; -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { initMysteryEncounters } from "#app/data/mystery-encounters/mystery-encounters"; import { timedEventManager } from "./global-event-manager"; @@ -177,8 +177,8 @@ export class LoadingScene extends SceneBase { this.loadImage("default_bg", "arenas"); // Load arena images - getEnumValues(Biome).map(bt => { - const btKey = Biome[bt].toLowerCase(); + getEnumValues(BiomeId).map(bt => { + const btKey = BiomeId[bt].toLowerCase(); const isBaseAnimated = btKey === "end"; const baseAKey = `${btKey}_a`; const baseBKey = `${btKey}_b`; diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 912e12f19dc..ccbc202407b 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -116,13 +116,13 @@ import { padInt, randSeedInt, } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { Nature } from "#enums/nature"; import { PokeballType } from "#enums/pokeball"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { SpeciesFormKey } from "#enums/species-form-key"; import type { PermanentStat, TempBattleStat } from "#enums/stat"; import { getStatKey, Stat, TEMP_BATTLE_STATS } from "#enums/stat"; @@ -430,7 +430,7 @@ export class TerastallizeModifierType extends PokemonModifierType { (pokemon: PlayerPokemon) => { if ( [pokemon.species.speciesId, pokemon.fusionSpecies?.speciesId].filter( - s => s === Species.TERAPAGOS || s === Species.OGERPON || s === Species.SHEDINJA, + s => s === SpeciesId.TERAPAGOS || s === SpeciesId.OGERPON || s === SpeciesId.SHEDINJA, ).length > 0 ) { return PartyUiHandler.NoEffectMessage; @@ -1165,9 +1165,9 @@ export class PokemonMultiHitModifierType extends PokemonHeldItemModifierType { } export class TmModifierType extends PokemonModifierType { - public moveId: Moves; + public moveId: MoveId; - constructor(moveId: Moves) { + constructor(moveId: MoveId) { super( "", `tm_${PokemonType[allMoves[moveId].type].toLowerCase()}`, @@ -1439,37 +1439,37 @@ class SpeciesStatBoosterModifierTypeGenerator extends ModifierTypeGenerator { LIGHT_BALL: { stats: [Stat.ATK, Stat.SPATK], multiplier: 2, - species: [Species.PIKACHU], + species: [SpeciesId.PIKACHU], rare: true, }, THICK_CLUB: { stats: [Stat.ATK], multiplier: 2, - species: [Species.CUBONE, Species.MAROWAK, Species.ALOLA_MAROWAK], + species: [SpeciesId.CUBONE, SpeciesId.MAROWAK, SpeciesId.ALOLA_MAROWAK], rare: true, }, METAL_POWDER: { stats: [Stat.DEF], multiplier: 2, - species: [Species.DITTO], + species: [SpeciesId.DITTO], rare: true, }, QUICK_POWDER: { stats: [Stat.SPD], multiplier: 2, - species: [Species.DITTO], + species: [SpeciesId.DITTO], rare: true, }, DEEP_SEA_SCALE: { stats: [Stat.SPDEF], multiplier: 2, - species: [Species.CLAMPERL], + species: [SpeciesId.CLAMPERL], rare: false, }, DEEP_SEA_TOOTH: { stats: [Stat.SPATK], multiplier: 2, - species: [Species.CLAMPERL], + species: [SpeciesId.CLAMPERL], rare: false, }, }; @@ -1498,7 +1498,7 @@ class SpeciesStatBoosterModifierTypeGenerator extends ModifierTypeGenerator { const speciesId = p.getSpeciesForm(true).speciesId; const fusionSpeciesId = p.isFusion() ? p.getFusionSpeciesForm(true).speciesId : null; // TODO: Use commented boolean when Fling is implemented - const hasFling = false; /* p.getMoveset(true).some(m => m.moveId === Moves.FLING) */ + const hasFling = false; /* p.getMoveset(true).some(m => m.moveId === MoveId.FLING) */ for (const i in values) { const checkedSpecies = values[i].species; @@ -1517,7 +1517,7 @@ class SpeciesStatBoosterModifierTypeGenerator extends ModifierTypeGenerator { if (checkedSpecies.includes(speciesId) || (!!fusionSpeciesId && checkedSpecies.includes(fusionSpeciesId))) { // Add weight if party member has a matching species or, if applicable, a matching fusion species weights[i]++; - } else if (checkedSpecies.includes(Species.PIKACHU) && hasFling) { + } else if (checkedSpecies.includes(SpeciesId.PIKACHU) && hasFling) { // Add weight to Light Ball if party member has Fling weights[i]++; } @@ -1553,8 +1553,8 @@ class SpeciesStatBoosterModifierTypeGenerator extends ModifierTypeGenerator { class TmModifierTypeGenerator extends ModifierTypeGenerator { constructor(tier: ModifierTier) { super((party: Pokemon[], pregenArgs?: any[]) => { - if (pregenArgs && pregenArgs.length === 1 && pregenArgs[0] in Moves) { - return new TmModifierType(pregenArgs[0] as Moves); + if (pregenArgs && pregenArgs.length === 1 && pregenArgs[0] in MoveId) { + return new TmModifierType(pregenArgs[0] as MoveId); } const partyMemberCompatibleTms = party.map(p => { const previousLevelMoves = p.getLearnableLevelMoves(); @@ -1588,7 +1588,9 @@ class EvolutionItemModifierTypeGenerator extends ModifierTypeGenerator { .filter( p => pokemonEvolutions.hasOwnProperty(p.species.speciesId) && - (!p.pauseEvolutions || p.species.speciesId === Species.SLOWPOKE || p.species.speciesId === Species.EEVEE), + (!p.pauseEvolutions || + p.species.speciesId === SpeciesId.SLOWPOKE || + p.species.speciesId === SpeciesId.EEVEE), ) .flatMap(p => { const evolutions = pokemonEvolutions[p.species.speciesId]; @@ -1606,8 +1608,8 @@ class EvolutionItemModifierTypeGenerator extends ModifierTypeGenerator { p.fusionSpecies && pokemonEvolutions.hasOwnProperty(p.fusionSpecies.speciesId) && (!p.pauseEvolutions || - p.fusionSpecies.speciesId === Species.SLOWPOKE || - p.fusionSpecies.speciesId === Species.EEVEE), + p.fusionSpecies.speciesId === SpeciesId.SLOWPOKE || + p.fusionSpecies.speciesId === SpeciesId.EEVEE), ) .flatMap(p => { const evolutions = pokemonEvolutions[p.fusionSpecies!.speciesId]; @@ -1671,7 +1673,7 @@ class FormChangeItemModifierTypeGenerator extends ModifierTypeGenerator { ), ); - if (p.species.speciesId === Species.NECROZMA) { + if (p.species.speciesId === SpeciesId.NECROZMA) { // technically we could use a simplified version and check for formChanges.length > 3, but in case any code changes later, this might break... let foundULTRA_Z = false, foundN_LUNA = false, @@ -1904,7 +1906,7 @@ export type GeneratorModifierOverride = { } | { name: keyof Pick; - type?: Moves; + type?: MoveId; } ); @@ -1932,7 +1934,7 @@ export const modifierTypes = { new PokemonHeldItemModifierType( "modifierType:ModifierType.EVOLUTION_TRACKER_GIMMIGHOUL", "relic_gold", - (type, args) => new EvoTrackerModifier(type, (args[0] as Pokemon).id, Species.GIMMIGHOUL, 10), + (type, args) => new EvoTrackerModifier(type, (args[0] as Pokemon).id, SpeciesId.GIMMIGHOUL, 10), ), MEGA_BRACELET: () => @@ -2046,7 +2048,9 @@ export const modifierTypes = { } const teraTypes: PokemonType[] = []; for (const p of party) { - if (!(p.hasSpecies(Species.TERAPAGOS) || p.hasSpecies(Species.OGERPON) || p.hasSpecies(Species.SHEDINJA))) { + if ( + !(p.hasSpecies(SpeciesId.TERAPAGOS) || p.hasSpecies(SpeciesId.OGERPON) || p.hasSpecies(SpeciesId.SHEDINJA)) + ) { teraTypes.push(p.teraType); } } @@ -2125,9 +2129,9 @@ export const modifierTypes = { "leek", (type, args) => new SpeciesCritBoosterModifier(type, (args[0] as Pokemon).id, 2, [ - Species.FARFETCHD, - Species.GALAR_FARFETCHD, - Species.SIRFETCHD, + SpeciesId.FARFETCHD, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.SIRFETCHD, ]), ), @@ -2674,7 +2678,8 @@ const modifierPool: ModifierPool = { new WeightedModifierType(modifierTypes.BASE_STAT_BOOSTER, 3), new WeightedModifierType(modifierTypes.TERA_SHARD, (party: Pokemon[]) => party.filter( - p => !(p.hasSpecies(Species.TERAPAGOS) || p.hasSpecies(Species.OGERPON) || p.hasSpecies(Species.SHEDINJA)), + p => + !(p.hasSpecies(SpeciesId.TERAPAGOS) || p.hasSpecies(SpeciesId.OGERPON) || p.hasSpecies(SpeciesId.SHEDINJA)), ).length > 0 ? 1 : 0, @@ -2744,7 +2749,7 @@ const modifierPool: ModifierPool = { new WeightedModifierType( modifierTypes.LEEK, (party: Pokemon[]) => { - const checkedSpecies = [Species.FARFETCHD, Species.GALAR_FARFETCHD, Species.SIRFETCHD]; + const checkedSpecies = [SpeciesId.FARFETCHD, SpeciesId.GALAR_FARFETCHD, SpeciesId.SIRFETCHD]; // If a party member doesn't already have a Leek and is one of the relevant species, Leek can appear return party.some( p => @@ -2771,25 +2776,25 @@ const modifierPool: ModifierPool = { const canSetStatus = p.canSetStatus(StatusEffect.TOXIC, true, true, null, true); // Moves that take advantage of obtaining the actual status effect - const hasStatusMoves = [Moves.FACADE, Moves.PSYCHO_SHIFT].some(m => moveset.includes(m)); + const hasStatusMoves = [MoveId.FACADE, MoveId.PSYCHO_SHIFT].some(m => moveset.includes(m)); // Moves that take advantage of being able to give the target a status orb // TODO: Take moves (Trick, Fling, Switcheroo) from comment when they are implemented const hasItemMoves = [ - /* Moves.TRICK, Moves.FLING, Moves.SWITCHEROO */ + /* MoveId.TRICK, MoveId.FLING, MoveId.SWITCHEROO */ ].some(m => moveset.includes(m)); if (canSetStatus) { // Abilities that take advantage of obtaining the actual status effect, separated based on specificity to the orb const hasGeneralAbility = [ - Abilities.QUICK_FEET, - Abilities.GUTS, - Abilities.MARVEL_SCALE, - Abilities.MAGIC_GUARD, + AbilityId.QUICK_FEET, + AbilityId.GUTS, + AbilityId.MARVEL_SCALE, + AbilityId.MAGIC_GUARD, ].some(a => p.hasAbility(a, false, true)); - const hasSpecificAbility = [Abilities.TOXIC_BOOST, Abilities.POISON_HEAL].some(a => + const hasSpecificAbility = [AbilityId.TOXIC_BOOST, AbilityId.POISON_HEAL].some(a => p.hasAbility(a, false, true), ); - const hasOppositeAbility = [Abilities.FLARE_BOOST].some(a => p.hasAbility(a, false, true)); + const hasOppositeAbility = [AbilityId.FLARE_BOOST].some(a => p.hasAbility(a, false, true)); return hasSpecificAbility || (hasGeneralAbility && !hasOppositeAbility) || hasStatusMoves; } @@ -2817,23 +2822,23 @@ const modifierPool: ModifierPool = { const canSetStatus = p.canSetStatus(StatusEffect.BURN, true, true, null, true); // Moves that take advantage of obtaining the actual status effect - const hasStatusMoves = [Moves.FACADE, Moves.PSYCHO_SHIFT].some(m => moveset.includes(m)); + const hasStatusMoves = [MoveId.FACADE, MoveId.PSYCHO_SHIFT].some(m => moveset.includes(m)); // Moves that take advantage of being able to give the target a status orb // TODO: Take moves (Trick, Fling, Switcheroo) from comment when they are implemented const hasItemMoves = [ - /* Moves.TRICK, Moves.FLING, Moves.SWITCHEROO */ + /* MoveId.TRICK, MoveId.FLING, MoveId.SWITCHEROO */ ].some(m => moveset.includes(m)); if (canSetStatus) { // Abilities that take advantage of obtaining the actual status effect, separated based on specificity to the orb const hasGeneralAbility = [ - Abilities.QUICK_FEET, - Abilities.GUTS, - Abilities.MARVEL_SCALE, - Abilities.MAGIC_GUARD, + AbilityId.QUICK_FEET, + AbilityId.GUTS, + AbilityId.MARVEL_SCALE, + AbilityId.MAGIC_GUARD, ].some(a => p.hasAbility(a, false, true)); - const hasSpecificAbility = [Abilities.FLARE_BOOST].some(a => p.hasAbility(a, false, true)); - const hasOppositeAbility = [Abilities.TOXIC_BOOST, Abilities.POISON_HEAL].some(a => + const hasSpecificAbility = [AbilityId.FLARE_BOOST].some(a => p.hasAbility(a, false, true)); + const hasOppositeAbility = [AbilityId.TOXIC_BOOST, AbilityId.POISON_HEAL].some(a => p.hasAbility(a, false, true), ); @@ -2865,31 +2870,31 @@ const modifierPool: ModifierPool = { const moveset = p.getMoveset(true).map(m => m.moveId); const hasAbility = [ - Abilities.DROUGHT, - Abilities.ORICHALCUM_PULSE, - Abilities.DRIZZLE, - Abilities.SAND_STREAM, - Abilities.SAND_SPIT, - Abilities.SNOW_WARNING, - Abilities.ELECTRIC_SURGE, - Abilities.HADRON_ENGINE, - Abilities.PSYCHIC_SURGE, - Abilities.GRASSY_SURGE, - Abilities.SEED_SOWER, - Abilities.MISTY_SURGE, + AbilityId.DROUGHT, + AbilityId.ORICHALCUM_PULSE, + AbilityId.DRIZZLE, + AbilityId.SAND_STREAM, + AbilityId.SAND_SPIT, + AbilityId.SNOW_WARNING, + AbilityId.ELECTRIC_SURGE, + AbilityId.HADRON_ENGINE, + AbilityId.PSYCHIC_SURGE, + AbilityId.GRASSY_SURGE, + AbilityId.SEED_SOWER, + AbilityId.MISTY_SURGE, ].some(a => p.hasAbility(a, false, true)); const hasMoves = [ - Moves.SUNNY_DAY, - Moves.RAIN_DANCE, - Moves.SANDSTORM, - Moves.SNOWSCAPE, - Moves.HAIL, - Moves.CHILLY_RECEPTION, - Moves.ELECTRIC_TERRAIN, - Moves.PSYCHIC_TERRAIN, - Moves.GRASSY_TERRAIN, - Moves.MISTY_TERRAIN, + MoveId.SUNNY_DAY, + MoveId.RAIN_DANCE, + MoveId.SANDSTORM, + MoveId.SNOWSCAPE, + MoveId.HAIL, + MoveId.CHILLY_RECEPTION, + MoveId.ELECTRIC_TERRAIN, + MoveId.PSYCHIC_TERRAIN, + MoveId.GRASSY_TERRAIN, + MoveId.MISTY_TERRAIN, ].some(m => moveset.includes(m)); return hasAbility || hasMoves; diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 42e0155bdd8..11631b64451 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -18,10 +18,10 @@ import { addTextObject, TextStyle } from "#app/ui/text"; import { BooleanHolder, hslToHex, isNullOrUndefined, NumberHolder, toDmgValue } from "#app/utils/common"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; -import type { Moves } from "#enums/moves"; +import type { MoveId } from "#enums/move-id"; import type { Nature } from "#enums/nature"; import type { PokeballType } from "#enums/pokeball"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { type PermanentStat, type TempBattleStat, BATTLE_STATS, Stat, TEMP_BATTLE_STATS } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import type { PokemonType } from "#enums/pokemon-type"; @@ -873,11 +873,11 @@ export class BaseStatModifier extends PokemonHeldItemModifier { } export class EvoTrackerModifier extends PokemonHeldItemModifier { - protected species: Species; + protected species: SpeciesId; protected required: number; public isTransferable = false; - constructor(type: ModifierType, pokemonId: number, species: Species, required: number, stackCount?: number) { + constructor(type: ModifierType, pokemonId: number, species: SpeciesId, required: number, stackCount?: number) { super(type, pokemonId, stackCount); this.species = species; this.required = required; @@ -1268,20 +1268,20 @@ export class EvolutionStatBoosterModifier extends StatBoosterModifier { /** * Modifier used for held items that Applies {@linkcode Stat} boost(s) using a - * multiplier if the holder is of a specific {@linkcode Species}. + * multiplier if the holder is of a specific {@linkcode SpeciesId}. * @extends StatBoosterModifier * @see {@linkcode apply} */ export class SpeciesStatBoosterModifier extends StatBoosterModifier { /** The species that the held item's stat boost(s) apply to */ - private species: Species[]; + private species: SpeciesId[]; constructor( type: ModifierType, pokemonId: number, stats: Stat[], multiplier: number, - species: Species[], + species: SpeciesId[], stackCount?: number, ) { super(type, pokemonId, stats, multiplier, stackCount); @@ -1316,7 +1316,7 @@ export class SpeciesStatBoosterModifier extends StatBoosterModifier { } /** - * Checks if the incoming stat is listed in {@linkcode stats} and if the holder's {@linkcode Species} + * Checks if the incoming stat is listed in {@linkcode stats} and if the holder's {@linkcode SpeciesId} * (or its fused species) is listed in {@linkcode species}. * @param pokemon {@linkcode Pokemon} that holds the item * @param stat {@linkcode Stat} being checked at the time @@ -1333,11 +1333,11 @@ export class SpeciesStatBoosterModifier extends StatBoosterModifier { /** * Checks if either parameter is included in the corresponding lists - * @param speciesId {@linkcode Species} being checked + * @param speciesId {@linkcode SpeciesId} being checked * @param stat {@linkcode Stat} being checked * @returns `true` if both parameters are in {@linkcode species} and {@linkcode stats} respectively, false otherwise */ - contains(speciesId: Species, stat: Stat): boolean { + contains(speciesId: SpeciesId, stat: Stat): boolean { return this.species.includes(speciesId) && this.stats.includes(stat); } } @@ -1391,15 +1391,21 @@ export class CritBoosterModifier extends PokemonHeldItemModifier { /** * Modifier used for held items that apply critical-hit stage boost(s) - * if the holder is of a specific {@linkcode Species}. + * if the holder is of a specific {@linkcode SpeciesId}. * @extends CritBoosterModifier * @see {@linkcode shouldApply} */ export class SpeciesCritBoosterModifier extends CritBoosterModifier { /** The species that the held item's critical-hit stage boost applies to */ - private species: Species[]; + private species: SpeciesId[]; - constructor(type: ModifierType, pokemonId: number, stageIncrement: number, species: Species[], stackCount?: number) { + constructor( + type: ModifierType, + pokemonId: number, + stageIncrement: number, + species: SpeciesId[], + stackCount?: number, + ) { super(type, pokemonId, stageIncrement, stackCount); this.species = species; @@ -1424,7 +1430,7 @@ export class SpeciesCritBoosterModifier extends CritBoosterModifier { } /** - * Checks if the holder's {@linkcode Species} (or its fused species) is listed + * Checks if the holder's {@linkcode SpeciesId} (or its fused species) is listed * in {@linkcode species}. * @param pokemon {@linkcode Pokemon} that holds the held item * @param critStage {@linkcode NumberHolder} that holds the resulting critical-hit level @@ -1621,7 +1627,7 @@ export class BypassSpeedChanceModifier extends PokemonHeldItemModifier { /** * Class for Pokemon held items like King's Rock - * Because King's Rock can be stacked in PokeRogue, unlike mainline, it does not receive a boost from Abilities.SERENE_GRACE + * Because King's Rock can be stacked in PokeRogue, unlike mainline, it does not receive a boost from AbilityId.SERENE_GRACE */ export class FlinchChanceModifier extends PokemonHeldItemModifier { private chance: number; @@ -2112,7 +2118,7 @@ export class TerrastalizeModifier extends ConsumablePokemonModifier { return ( super.shouldApply(playerPokemon) && [playerPokemon?.species.speciesId, playerPokemon?.fusionSpecies?.speciesId].filter( - s => s === Species.TERAPAGOS || s === Species.OGERPON || s === Species.SHEDINJA, + s => s === SpeciesId.TERAPAGOS || s === SpeciesId.OGERPON || s === SpeciesId.SHEDINJA, ).length === 0 ); } @@ -2774,14 +2780,14 @@ export class PokemonMultiHitModifier extends PokemonHeldItemModifier { /** * For each stack, converts 25 percent of attack damage into an additional strike. * @param pokemon The {@linkcode Pokemon} using the move - * @param moveId The {@linkcode Moves | identifier} for the move being used + * @param moveId The {@linkcode MoveId | identifier} for the move being used * @param count {@linkcode NumberHolder} holding the move's hit count for this turn * @param damageMultiplier {@linkcode NumberHolder} holding a damage multiplier applied to a strike of this move * @returns always `true` */ override apply( pokemon: Pokemon, - moveId: Moves, + moveId: MoveId, count: NumberHolder | null = null, damageMultiplier: NumberHolder | null = null, ): boolean { @@ -2924,7 +2930,7 @@ export class MoneyRewardModifier extends ConsumableModifier { globalScene.addMoney(moneyAmount.value); globalScene.getPlayerParty().map(p => { - if (p.species?.speciesId === Species.GIMMIGHOUL || p.fusionSpecies?.speciesId === Species.GIMMIGHOUL) { + if (p.species?.speciesId === SpeciesId.GIMMIGHOUL || p.fusionSpecies?.speciesId === SpeciesId.GIMMIGHOUL) { p.evoCounter ? (p.evoCounter += Math.min(Math.floor(this.moneyMultiplier), 3)) : (p.evoCounter = Math.min(Math.floor(this.moneyMultiplier), 3)); diff --git a/src/overrides.ts b/src/overrides.ts index 95c758d7c43..86e1708248d 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -5,17 +5,17 @@ import { FormChangeItem } from "#app/data/pokemon-forms"; import { type ModifierOverride } from "#app/modifier/modifier-type"; import { Variant } from "#app/sprites/variant"; import { Unlockables } from "#app/system/unlockables"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattleType } from "#enums/battle-type"; import { BerryType } from "#enums/berry-type"; -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { EggTier } from "#enums/egg-type"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PokeballType } from "#enums/pokeball"; import { PokemonType } from "#enums/pokemon-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import { TimeOfDay } from "#enums/time-of-day"; @@ -38,8 +38,8 @@ import { WeatherType } from "#enums/weather-type"; * @example * ``` * const overrides = { - * ABILITY_OVERRIDE: Abilities.PROTEAN, - * PASSIVE_ABILITY_OVERRIDE: Abilities.PIXILATE, + * ABILITY_OVERRIDE: AbilityId.PROTEAN, + * PASSIVE_ABILITY_OVERRIDE: AbilityId.PIXILATE, * } * ``` */ @@ -73,7 +73,7 @@ class DefaultOverrides { */ readonly BATTLE_STYLE_OVERRIDE: BattleStyle | null = null; readonly STARTING_WAVE_OVERRIDE: number = 0; - readonly STARTING_BIOME_OVERRIDE: Biome | null = null; + readonly STARTING_BIOME_OVERRIDE: BiomeId | null = null; readonly ARENA_TINT_OVERRIDE: TimeOfDay | null = null; /** Multiplies XP gained by this value including 0. Set to null to ignore the override. */ readonly XP_MULTIPLIER_OVERRIDE: number | null = null; @@ -124,11 +124,11 @@ class DefaultOverrides { * @example * ``` * const STARTER_FORM_OVERRIDES = { - * [Species.DARMANITAN]: 1 + * [SpeciesId.DARMANITAN]: 1 * } * ``` */ - readonly STARTER_FORM_OVERRIDES: Partial> = {}; + readonly STARTER_FORM_OVERRIDES: Partial> = {}; /** default 5 or 20 for Daily */ readonly STARTING_LEVEL_OVERRIDE: number = 0; @@ -136,9 +136,9 @@ class DefaultOverrides { * SPECIES OVERRIDE * will only apply to the first starter in your party or each enemy pokemon * default is 0 to not override - * @example SPECIES_OVERRIDE = Species.Bulbasaur; + * @example SPECIES_OVERRIDE = SpeciesId.Bulbasaur; */ - readonly STARTER_SPECIES_OVERRIDE: Species | number = 0; + readonly STARTER_SPECIES_OVERRIDE: SpeciesId | number = 0; /** * This will force your starter to be a random fusion */ @@ -146,20 +146,20 @@ class DefaultOverrides { /** * This will override the species of the fusion */ - readonly STARTER_FUSION_SPECIES_OVERRIDE: Species | number = 0; - readonly ABILITY_OVERRIDE: Abilities = Abilities.NONE; - readonly PASSIVE_ABILITY_OVERRIDE: Abilities = Abilities.NONE; + readonly STARTER_FUSION_SPECIES_OVERRIDE: SpeciesId | number = 0; + readonly ABILITY_OVERRIDE: AbilityId = AbilityId.NONE; + readonly PASSIVE_ABILITY_OVERRIDE: AbilityId = AbilityId.NONE; readonly HAS_PASSIVE_ABILITY_OVERRIDE: boolean | null = null; readonly STATUS_OVERRIDE: StatusEffect = StatusEffect.NONE; readonly GENDER_OVERRIDE: Gender | null = null; - readonly MOVESET_OVERRIDE: Moves | Array = []; + readonly MOVESET_OVERRIDE: MoveId | Array = []; readonly SHINY_OVERRIDE: boolean | null = null; readonly VARIANT_OVERRIDE: Variant | null = null; // -------------------------- // OPPONENT / ENEMY OVERRIDES // -------------------------- - readonly OPP_SPECIES_OVERRIDE: Species | number = 0; + readonly OPP_SPECIES_OVERRIDE: SpeciesId | number = 0; /** * This will make all opponents fused Pokemon */ @@ -167,18 +167,18 @@ class DefaultOverrides { /** * This will override the species of the fusion only when the opponent is already a fusion */ - readonly OPP_FUSION_SPECIES_OVERRIDE: Species | number = 0; + readonly OPP_FUSION_SPECIES_OVERRIDE: SpeciesId | number = 0; readonly OPP_LEVEL_OVERRIDE: number = 0; - readonly OPP_ABILITY_OVERRIDE: Abilities = Abilities.NONE; - readonly OPP_PASSIVE_ABILITY_OVERRIDE: Abilities = Abilities.NONE; + readonly OPP_ABILITY_OVERRIDE: AbilityId = AbilityId.NONE; + readonly OPP_PASSIVE_ABILITY_OVERRIDE: AbilityId = AbilityId.NONE; readonly OPP_HAS_PASSIVE_ABILITY_OVERRIDE: boolean | null = null; readonly OPP_STATUS_OVERRIDE: StatusEffect = StatusEffect.NONE; readonly OPP_GENDER_OVERRIDE: Gender | null = null; - readonly OPP_MOVESET_OVERRIDE: Moves | Array = []; + readonly OPP_MOVESET_OVERRIDE: MoveId | Array = []; readonly OPP_SHINY_OVERRIDE: boolean | null = null; readonly OPP_VARIANT_OVERRIDE: Variant | null = null; readonly OPP_IVS_OVERRIDE: number | number[] = []; - readonly OPP_FORM_OVERRIDES: Partial> = {}; + readonly OPP_FORM_OVERRIDES: Partial> = {}; /** * Override to give the enemy Pokemon a given amount of health segments * diff --git a/src/phases/berry-phase.ts b/src/phases/berry-phase.ts index b027469ea5e..989f19c944f 100644 --- a/src/phases/berry-phase.ts +++ b/src/phases/berry-phase.ts @@ -71,7 +71,7 @@ export class BerryPhase extends FieldPhase { } globalScene.updateModifiers(pokemon.isPlayer()); - // Abilities.CHEEK_POUCH only works once per round of nom noms + // AbilityId.CHEEK_POUCH only works once per round of nom noms applyAbAttrs(HealFromBerryUseAbAttr, pokemon, new BooleanHolder(false)); } } diff --git a/src/phases/command-phase.ts b/src/phases/command-phase.ts index c3e558e1d86..3f18ea95777 100644 --- a/src/phases/command-phase.ts +++ b/src/phases/command-phase.ts @@ -6,10 +6,10 @@ import { TrappedTag } from "#app/data/battler-tags"; import type { MoveTargetSet } from "#app/data/moves/move"; import { getMoveTargets } from "#app/data/moves/move"; import { speciesStarterCosts } from "#app/data/balance/starters"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { Biome } from "#app/enums/biome"; -import { Moves } from "#app/enums/moves"; +import { BiomeId } from "#enums/biome-id"; +import { MoveId } from "#enums/move-id"; import { PokeballType } from "#enums/pokeball"; import type { PlayerPokemon, TurnMove } from "#app/field/pokemon"; import { FieldPosition } from "#app/field/pokemon"; @@ -44,7 +44,7 @@ export class CommandPhase extends FieldPhase { const cursorResetEvent = globalScene.currentBattle.battleType === BattleType.MYSTERY_ENCOUNTER || globalScene.currentBattle.battleType === BattleType.TRAINER || - globalScene.arena.biomeType === Biome.END; + globalScene.arena.biomeType === BiomeId.END; if (commandUiHandler) { if ( @@ -80,7 +80,7 @@ export class CommandPhase extends FieldPhase { ) { globalScene.currentBattle.turnCommands[this.fieldIndex] = { command: Command.FIGHT, - move: { move: Moves.NONE, targets: [] }, + move: { move: MoveId.NONE, targets: [] }, skip: true, }; } @@ -157,15 +157,15 @@ export class CommandPhase extends FieldPhase { playerPokemon.trySelectMove(cursor, args[0] as boolean) || (useStruggle = cursor > -1 && !playerPokemon.getMoveset().filter(m => m.isUsable(playerPokemon)).length) ) { - let moveId: Moves; + let moveId: MoveId; if (useStruggle) { - moveId = Moves.STRUGGLE; + moveId = MoveId.STRUGGLE; } else if (turnMove !== undefined) { moveId = turnMove.move; } else if (cursor > -1) { moveId = playerPokemon.getMoveset()[cursor].moveId; } else { - moveId = Moves.NONE; + moveId = MoveId.NONE; } const turnCommand: TurnCommand = { @@ -241,7 +241,7 @@ export class CommandPhase extends FieldPhase { .some(p => !globalScene.gameData.dexData[p.species.speciesId].caughtAttr) && globalScene.gameData.getStarterCount(d => !!d.caughtAttr) < Object.keys(speciesStarterCosts).length - 1; if ( - globalScene.arena.biomeType === Biome.END && + globalScene.arena.biomeType === BiomeId.END && (!globalScene.gameMode.isClassic || globalScene.gameMode.isFreshStartChallenge() || notInDex) ) { globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); @@ -308,7 +308,7 @@ export class CommandPhase extends FieldPhase { if ( targetPokemon?.isBoss() && targetPokemon?.bossSegmentIndex >= 1 && - !targetPokemon?.hasAbility(Abilities.WONDER_GUARD, false, true) && + !targetPokemon?.hasAbility(AbilityId.WONDER_GUARD, false, true) && cursor < PokeballType.MASTER_BALL ) { globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); @@ -344,7 +344,7 @@ export class CommandPhase extends FieldPhase { const mysteryEncounterFleeAllowed = currentBattle.mysteryEncounter?.fleeAllowed; if ( !isSwitch && - (arena.biomeType === Biome.END || + (arena.biomeType === BiomeId.END || (!isNullOrUndefined(mysteryEncounterFleeAllowed) && !mysteryEncounterFleeAllowed)) ) { globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex); diff --git a/src/phases/encounter-phase.ts b/src/phases/encounter-phase.ts index 3cfd2b9a901..c7308fc5a64 100644 --- a/src/phases/encounter-phase.ts +++ b/src/phases/encounter-phase.ts @@ -37,10 +37,10 @@ import { handleTutorial, Tutorial } from "#app/tutorial"; import { UiMode } from "#enums/ui-mode"; import { randSeedInt, randSeedItem } from "#app/utils/common"; import { BattleSpec } from "#enums/battle-spec"; -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { PlayerGender } from "#enums/player-gender"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { overrideHeldItems, overrideModifiers } from "#app/modifier/modifier"; import i18next from "i18next"; import { WEIGHT_INCREMENT_ON_SPAWN_MISS } from "#app/data/mystery-encounters/mystery-encounters"; @@ -120,7 +120,7 @@ export class EncounterPhase extends BattlePhase { if ( globalScene.findModifier(m => m instanceof BoostBugSpawnModifier) && !globalScene.gameMode.isBoss(battle.waveIndex) && - globalScene.arena.biomeType !== Biome.END && + globalScene.arena.biomeType !== BiomeId.END && randSeedInt(10) === 0 ) { enemySpecies = getGoldenBugNetSpecies(level); @@ -158,7 +158,7 @@ export class EncounterPhase extends BattlePhase { ); } - if (enemyPokemon.species.speciesId === Species.ETERNATUS) { + if (enemyPokemon.species.speciesId === SpeciesId.ETERNATUS) { if ( globalScene.gameMode.isClassic && (battle.battleSpec === BattleSpec.FINAL_BOSS || globalScene.gameMode.isWaveFinal(battle.waveIndex)) @@ -556,7 +556,7 @@ export class EncounterPhase extends BattlePhase { } /** This sets Eternatus' held item to be untransferrable, preventing it from being stolen */ if ( - enemyPokemon.species.speciesId === Species.ETERNATUS && + enemyPokemon.species.speciesId === SpeciesId.ETERNATUS && (globalScene.gameMode.isBattleClassicFinalBoss(globalScene.currentBattle.waveIndex) || globalScene.gameMode.isEndlessMajorBoss(globalScene.currentBattle.waveIndex)) ) { diff --git a/src/phases/enemy-command-phase.ts b/src/phases/enemy-command-phase.ts index 166b8c1ae2d..2a1719f9002 100644 --- a/src/phases/enemy-command-phase.ts +++ b/src/phases/enemy-command-phase.ts @@ -2,7 +2,7 @@ import { globalScene } from "#app/global-scene"; import { BattlerIndex } from "#app/battle"; import { Command } from "#app/ui/command-ui-handler"; import { FieldPhase } from "./field-phase"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; /** @@ -38,7 +38,7 @@ export class EnemyCommandPhase extends FieldPhase { if ( battle.double && - enemyPokemon.hasAbility(Abilities.COMMANDER) && + enemyPokemon.hasAbility(AbilityId.COMMANDER) && enemyPokemon.getAlly()?.getTag(BattlerTagType.COMMANDED) ) { this.skipTurn = true; diff --git a/src/phases/learn-move-phase.ts b/src/phases/learn-move-phase.ts index c585679ba4f..65679a7ade7 100644 --- a/src/phases/learn-move-phase.ts +++ b/src/phases/learn-move-phase.ts @@ -3,7 +3,7 @@ import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims"; import type Move from "#app/data/moves/move"; import { allMoves } from "#app/data/data-lists"; import { SpeciesFormChangeMoveLearnedTrigger } from "#app/data/pokemon-forms"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { getPokemonNameWithAffix } from "#app/messages"; import Overrides from "#app/overrides"; import EvolutionSceneHandler from "#app/ui/evolution-scene-handler"; @@ -24,14 +24,14 @@ export enum LearnMoveType { } export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { - private moveId: Moves; + private moveId: MoveId; private messageMode: UiMode; private learnMoveType: LearnMoveType; private cost: number; constructor( partyMemberIndex: number, - moveId: Moves, + moveId: MoveId, learnMoveType: LearnMoveType = LearnMoveType.LEARN_MOVE, cost = -1, ) { @@ -49,7 +49,7 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { const currentMoveset = pokemon.getMoveset(); // The game first checks if the Pokemon already has the move and ends the phase if it does. - const hasMoveAlready = currentMoveset.some(m => m.moveId === move.id) && this.moveId !== Moves.SKETCH; + const hasMoveAlready = currentMoveset.some(m => m.moveId === move.id) && this.moveId !== MoveId.SKETCH; if (hasMoveAlready) { return this.end(); } diff --git a/src/phases/load-move-anim-phase.ts b/src/phases/load-move-anim-phase.ts index 3d914f738a7..c0b6cd58c54 100644 --- a/src/phases/load-move-anim-phase.ts +++ b/src/phases/load-move-anim-phase.ts @@ -1,5 +1,5 @@ import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims"; -import type { Moves } from "#enums/moves"; +import type { MoveId } from "#enums/move-id"; import { Phase } from "#app/phase"; /** @@ -8,7 +8,7 @@ import { Phase } from "#app/phase"; * isn't already loaded (e.g. for Metronome) */ export class LoadMoveAnimPhase extends Phase { - constructor(protected moveId: Moves) { + constructor(protected moveId: MoveId) { super(); } diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index e3773952214..636f85f0f82 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -48,7 +48,7 @@ import { MoveTarget } from "#enums/MoveTarget"; import { MoveCategory } from "#enums/MoveCategory"; import { SpeciesFormChangePostMoveTrigger } from "#app/data/pokemon-forms"; import { PokemonType } from "#enums/pokemon-type"; -import { DamageResult, PokemonMove, type TurnMove } from "#app/field/pokemon"; +import { type DamageResult, PokemonMove, type TurnMove } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { HitResult, MoveResult } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; @@ -65,14 +65,14 @@ import { PokemonPhase } from "#app/phases/pokemon-phase"; import { BooleanHolder, isNullOrUndefined, NumberHolder } from "#app/utils/common"; import type { nil } from "#app/utils/common"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import i18next from "i18next"; import type { Phase } from "#app/phase"; import { ShowAbilityPhase } from "./show-ability-phase"; import { MovePhase } from "./move-phase"; import { MoveEndPhase } from "./move-end-phase"; import { HideAbilityPhase } from "#app/phases/hide-ability-phase"; -import { TypeDamageMultiplier } from "#app/data/type"; +import type { TypeDamageMultiplier } from "#app/data/type"; import { HitCheckResult } from "#enums/hit-check-result"; import type Move from "#app/data/moves/move"; import { isFieldTargeted } from "#app/data/moves/move-utils"; @@ -220,7 +220,7 @@ export class MoveEffectPhase extends PokemonPhase { break; case HitCheckResult.NO_EFFECT: globalScene.queueMessage( - i18next.t(this.move.id === Moves.SHEER_COLD ? "battle:hitResultImmune" : "battle:hitResultNoEffect", { + i18next.t(this.move.id === MoveId.SHEER_COLD ? "battle:hitResultImmune" : "battle:hitResultNoEffect", { pokemonName: getPokemonNameWithAffix(target), }), ); @@ -351,7 +351,7 @@ export class MoveEffectPhase extends PokemonPhase { ) { const firstTarget = this.getFirstTarget(); new MoveAnim( - move.id as Moves, + move.id as MoveId, user, firstTarget?.getBattlerIndex() ?? BattlerIndex.ATTACKER, // Some moves used in mystery encounters should be played even on an empty field @@ -609,12 +609,12 @@ export class MoveEffectPhase extends PokemonPhase { * @returns `true` if the move should bypass accuracy and semi-invulnerability * * Accuracy and semi-invulnerability can be bypassed by: - * - An ability like {@linkcode Abilities.NO_GUARD | No Guard} - * - A poison type using {@linkcode Moves.TOXIC | Toxic} - * - A move like {@linkcode Moves.LOCK_ON | Lock-On} or {@linkcode Moves.MIND_READER | Mind Reader}. + * - An ability like {@linkcode AbilityId.NO_GUARD | No Guard} + * - A poison type using {@linkcode MoveId.TOXIC | Toxic} + * - A move like {@linkcode MoveId.LOCK_ON | Lock-On} or {@linkcode MoveId.MIND_READER | Mind Reader}. * - A field-targeted move like spikes * - * Does *not* check against effects {@linkcode Moves.GLAIVE_RUSH | Glaive Rush} status (which + * Does *not* check against effects {@linkcode MoveId.GLAIVE_RUSH | Glaive Rush} status (which * should not bypass semi-invulnerability), or interactions like Earthquake hitting against Dig, * (which should not bypass the accuracy check). * @@ -809,7 +809,7 @@ export class MoveEffectPhase extends PokemonPhase { */ applyMoveAttrs(StatChangeBeforeDmgCalcAttr, user, target, this.move); - const { result: result, damage: dmg } = target.getAttackDamage({ + const { result, damage: dmg } = target.getAttackDamage({ source: user, move: this.move, ignoreAbility: false, diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index d7cbf1b9a6f..1ccf5b7957e 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -44,10 +44,10 @@ import { MoveChargePhase } from "#app/phases/move-charge-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; import { NumberHolder } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { StatusEffect } from "#enums/status-effect"; import i18next from "i18next"; @@ -138,7 +138,7 @@ export class MovePhase extends BattlePhase { /** * Shows whether the current move has been forced to the end of the turn - * Needed for speed order, see {@linkcode Moves.QUASH} + * Needed for speed order, see {@linkcode MoveId.QUASH} * */ public isForcedLast(): boolean { return this.forcedLast; @@ -147,7 +147,7 @@ export class MovePhase extends BattlePhase { public start(): void { super.start(); - console.log(Moves[this.move.moveId]); + console.log(MoveId[this.move.moveId]); // Check if move is unusable (e.g. because it's out of PP due to a mid-turn Spite). if (!this.canMove(true)) { @@ -201,14 +201,14 @@ export class MovePhase extends BattlePhase { this.end(); } - /** Check for cancellation edge cases - no targets remaining, or {@linkcode Moves.NONE} is in the queue */ + /** Check for cancellation edge cases - no targets remaining, or {@linkcode MoveId.NONE} is in the queue */ protected resolveFinalPreMoveCancellationChecks(): void { const targets = this.getActiveTargetPokemon(); const moveQueue = this.pokemon.getMoveQueue(); if ( (targets.length === 0 && !this.move.getMove().hasAttr(AddArenaTrapTagAttr)) || - (moveQueue.length && moveQueue[0].move === Moves.NONE) + (moveQueue.length && moveQueue[0].move === MoveId.NONE) ) { this.showMoveText(); this.showFailedText(); @@ -294,7 +294,7 @@ export class MovePhase extends BattlePhase { protected lapsePreMoveAndMoveTags(): void { this.pokemon.lapseTags(BattlerTagLapseType.PRE_MOVE); - // TODO: does this intentionally happen before the no targets/Moves.NONE on queue cancellation case is checked? + // TODO: does this intentionally happen before the no targets/MoveId.NONE on queue cancellation case is checked? if (!this.followUp && this.canMove() && !this.cancelled) { this.pokemon.lapseTags(BattlerTagLapseType.MOVE); } @@ -410,7 +410,7 @@ export class MovePhase extends BattlePhase { new MoveEffectPhase(this.pokemon.getBattlerIndex(), this.targets, move, this.reflected, this.move.virtual), ); } else { - if ([Moves.ROAR, Moves.WHIRLWIND, Moves.TRICK_OR_TREAT, Moves.FORESTS_CURSE].includes(this.move.moveId)) { + if ([MoveId.ROAR, MoveId.WHIRLWIND, MoveId.TRICK_OR_TREAT, MoveId.FORESTS_CURSE].includes(this.move.moveId)) { applyPreAttackAbAttrs(PokemonTypeChangeAbAttr, this.pokemon, null, this.move.getMove()); } @@ -486,7 +486,7 @@ export class MovePhase extends BattlePhase { } /** - * Applies PP increasing abilities (currently only {@link Abilities.PRESSURE Pressure}) if they exist on the target pokemon. + * Applies PP increasing abilities (currently only {@link AbilityId.PRESSURE Pressure}) if they exist on the target pokemon. * Note that targets must include only active pokemon. * * TODO: This hardcodes the PP increase at 1 per opponent, rather than deferring to the ability. @@ -526,7 +526,7 @@ export class MovePhase extends BattlePhase { if ( redirectTag && (!redirectTag.powder || - (!this.pokemon.isOfType(PokemonType.GRASS) && !this.pokemon.hasAbility(Abilities.OVERCOAT))) + (!this.pokemon.isOfType(PokemonType.GRASS) && !this.pokemon.hasAbility(AbilityId.OVERCOAT))) ) { redirectTarget.value = p.getBattlerIndex(); redirectedByAbility = false; @@ -594,8 +594,8 @@ export class MovePhase extends BattlePhase { /** * Handles the case where the move was cancelled or failed: - * - Uses PP if the move failed (not cancelled) and should use PP (failed moves are not affected by {@link Abilities.PRESSURE Pressure}) - * - Records a cancelled OR failed move in move history, so abilities like {@link Abilities.TRUANT Truant} don't trigger on the + * - Uses PP if the move failed (not cancelled) and should use PP (failed moves are not affected by {@link AbilityId.PRESSURE Pressure}) + * - Records a cancelled OR failed move in move history, so abilities like {@link AbilityId.TRUANT Truant} don't trigger on the * next turn and soft-lock. * - Lapses `MOVE_EFFECT` tags: * - Semi-invulnerable battler tags (Fly/Dive/etc.) are intended to lapse on move effects, but also need @@ -603,7 +603,7 @@ export class MovePhase extends BattlePhase { * * TODO: ...this seems weird. * - Lapses `AFTER_MOVE` tags: - * - This handles the effects of {@link Moves.SUBSTITUTE Substitute} + * - This handles the effects of {@link MoveId.SUBSTITUTE Substitute} * - Removes the second turn of charge moves */ protected handlePreMoveFailures(): void { @@ -623,7 +623,7 @@ export class MovePhase extends BattlePhase { } this.pokemon.pushMoveHistory({ - move: Moves.NONE, + move: MoveId.NONE, result: MoveResult.FAIL, targets: this.targets, }); @@ -636,11 +636,11 @@ export class MovePhase extends BattlePhase { } /** - * Displays the move's usage text to the player, unless it's a charge turn (ie: {@link Moves.SOLAR_BEAM Solar Beam}), - * the pokemon is on a recharge turn (ie: {@link Moves.HYPER_BEAM Hyper Beam}), or a 2-turn move was interrupted (ie: {@link Moves.FLY Fly}). + * Displays the move's usage text to the player, unless it's a charge turn (ie: {@link MoveId.SOLAR_BEAM Solar Beam}), + * the pokemon is on a recharge turn (ie: {@link MoveId.HYPER_BEAM Hyper Beam}), or a 2-turn move was interrupted (ie: {@link MoveId.FLY Fly}). */ public showMoveText(): void { - if (this.move.moveId === Moves.NONE) { + if (this.move.moveId === MoveId.NONE) { return; } diff --git a/src/phases/pokemon-anim-phase.ts b/src/phases/pokemon-anim-phase.ts index 1889b238f05..e9f0097459a 100644 --- a/src/phases/pokemon-anim-phase.ts +++ b/src/phases/pokemon-anim-phase.ts @@ -4,7 +4,7 @@ import type Pokemon from "#app/field/pokemon"; import { BattlePhase } from "#app/phases/battle-phase"; import { isNullOrUndefined } from "#app/utils/common"; import { PokemonAnimType } from "#enums/pokemon-anim-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; export class PokemonAnimPhase extends BattlePhase { /** The type of animation to play in this phase */ @@ -247,7 +247,7 @@ export class PokemonAnimPhase extends BattlePhase { } const dondozo = this.pokemon.getAlly(); - if (dondozo?.species?.speciesId !== Species.DONDOZO) { + if (dondozo?.species?.speciesId !== SpeciesId.DONDOZO) { return this.end(); } diff --git a/src/phases/pokemon-transform-phase.ts b/src/phases/pokemon-transform-phase.ts index b33689321b5..23a9a983bae 100644 --- a/src/phases/pokemon-transform-phase.ts +++ b/src/phases/pokemon-transform-phase.ts @@ -1,6 +1,6 @@ import type { BattlerIndex } from "#app/battle"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { EFFECTIVE_STATS, BATTLE_STATS } from "#enums/stat"; import { PokemonMove } from "#app/field/pokemon"; import { globalScene } from "#app/global-scene"; @@ -54,7 +54,7 @@ export class PokemonTransformPhase extends PokemonPhase { return new PokemonMove(m.moveId, 0, 0, false, Math.min(m.getMove().pp, 5)); } console.warn(`Transform: somehow iterating over a ${m} value when copying moveset!`); - return new PokemonMove(Moves.NONE); + return new PokemonMove(MoveId.NONE); }); user.summonData.types = target.getTypes(); diff --git a/src/phases/select-biome-phase.ts b/src/phases/select-biome-phase.ts index efd376eb5ba..a7736b16811 100644 --- a/src/phases/select-biome-phase.ts +++ b/src/phases/select-biome-phase.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; import { biomeLinks, getBiomeName } from "#app/data/balance/biomes"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MoneyInterestModifier, MapModifier } from "#app/modifier/modifier"; import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { UiMode } from "#enums/ui-mode"; @@ -18,7 +18,7 @@ export class SelectBiomePhase extends BattlePhase { const currentBiome = globalScene.arena.biomeType; const nextWaveIndex = globalScene.currentBattle.waveIndex + 1; - const setNextBiome = (nextBiome: Biome) => { + const setNextBiome = (nextBiome: BiomeId) => { if (nextWaveIndex % 10 === 1) { globalScene.applyModifiers(MoneyInterestModifier, true); globalScene.unshiftPhase(new PartyHealPhase(false)); @@ -32,11 +32,11 @@ export class SelectBiomePhase extends BattlePhase { (globalScene.gameMode.isDaily && globalScene.gameMode.isWaveFinal(nextWaveIndex)) || (globalScene.gameMode.hasShortBiomes && !(nextWaveIndex % 50)) ) { - setNextBiome(Biome.END); + setNextBiome(BiomeId.END); } else if (globalScene.gameMode.hasRandomBiomes) { setNextBiome(this.generateNextBiome(nextWaveIndex)); } else if (Array.isArray(biomeLinks[currentBiome])) { - const biomes: Biome[] = (biomeLinks[currentBiome] as (Biome | [Biome, number])[]) + const biomes: BiomeId[] = (biomeLinks[currentBiome] as (BiomeId | [BiomeId, number])[]) .filter(b => !Array.isArray(b) || !randSeedInt(b[1])) .map(b => (!Array.isArray(b) ? b : b[0])); @@ -60,15 +60,15 @@ export class SelectBiomePhase extends BattlePhase { setNextBiome(biomes[randSeedInt(biomes.length)]); } } else if (biomeLinks.hasOwnProperty(currentBiome)) { - setNextBiome(biomeLinks[currentBiome] as Biome); + setNextBiome(biomeLinks[currentBiome] as BiomeId); } else { setNextBiome(this.generateNextBiome(nextWaveIndex)); } } - generateNextBiome(waveIndex: number): Biome { + generateNextBiome(waveIndex: number): BiomeId { if (!(waveIndex % 50)) { - return Biome.END; + return BiomeId.END; } return globalScene.generateRandomBiome(waveIndex); } diff --git a/src/phases/select-starter-phase.ts b/src/phases/select-starter-phase.ts index 0a76df31a2c..6d333f4001c 100644 --- a/src/phases/select-starter-phase.ts +++ b/src/phases/select-starter-phase.ts @@ -10,7 +10,7 @@ import { TitlePhase } from "#app/phases/title-phase"; import { SaveSlotUiMode } from "#app/ui/save-slot-select-ui-handler"; import type { Starter } from "#app/ui/starter-select-ui-handler"; import { UiMode } from "#enums/ui-mode"; -import type { Species } from "#enums/species"; +import type { SpeciesId } from "#enums/species-id"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; import { isNullOrUndefined } from "#app/utils/common"; @@ -43,7 +43,7 @@ export class SelectStarterPhase extends Phase { const loadPokemonAssets: Promise[] = []; starters.forEach((starter: Starter, i: number) => { if (!i && Overrides.STARTER_SPECIES_OVERRIDE) { - starter.species = getPokemonSpecies(Overrides.STARTER_SPECIES_OVERRIDE as Species); + starter.species = getPokemonSpecies(Overrides.STARTER_SPECIES_OVERRIDE as SpeciesId); } const starterProps = globalScene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); let starterFormIndex = Math.min(starterProps.formIndex, Math.max(starter.species.forms.length - 1, 0)); diff --git a/src/phases/switch-biome-phase.ts b/src/phases/switch-biome-phase.ts index f708830318e..69a6c97cd9a 100644 --- a/src/phases/switch-biome-phase.ts +++ b/src/phases/switch-biome-phase.ts @@ -1,12 +1,12 @@ import { globalScene } from "#app/global-scene"; -import type { Biome } from "#app/enums/biome"; +import type { BiomeId } from "#enums/biome-id"; import { getBiomeKey } from "#app/field/arena"; import { BattlePhase } from "./battle-phase"; export class SwitchBiomePhase extends BattlePhase { - private nextBiome: Biome; + private nextBiome: BiomeId; - constructor(nextBiome: Biome) { + constructor(nextBiome: BiomeId) { super(); this.nextBiome = nextBiome; diff --git a/src/phases/trainer-victory-phase.ts b/src/phases/trainer-victory-phase.ts index f7005b1300d..daf5c38e57b 100644 --- a/src/phases/trainer-victory-phase.ts +++ b/src/phases/trainer-victory-phase.ts @@ -9,7 +9,7 @@ import { ModifierRewardPhase } from "./modifier-reward-phase"; import { MoneyRewardPhase } from "./money-reward-phase"; import { TrainerSlot } from "#enums/trainer-slot"; import { globalScene } from "#app/global-scene"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { achvs } from "#app/system/achv"; import { timedEventManager } from "#app/global-event-manager"; @@ -57,7 +57,7 @@ export class TrainerVictoryPhase extends BattlePhase { } // Breeders in Space achievement if ( - globalScene.arena.biomeType === Biome.SPACE && + globalScene.arena.biomeType === BiomeId.SPACE && (trainerType === TrainerType.BREEDER || trainerType === TrainerType.EXPERT_POKEMON_BREEDER) ) { globalScene.validateAchv(achvs.BREEDERS_IN_SPACE); diff --git a/src/phases/turn-start-phase.ts b/src/phases/turn-start-phase.ts index de510ef07d7..a02d869af10 100644 --- a/src/phases/turn-start-phase.ts +++ b/src/phases/turn-start-phase.ts @@ -1,7 +1,7 @@ import { applyAbAttrs, BypassSpeedChanceAbAttr, PreventBypassSpeedChanceAbAttr } from "#app/data/abilities/ability"; import { MoveHeaderAttr } from "#app/data/moves/move"; import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { Stat } from "#app/enums/stat"; import type Pokemon from "#app/field/pokemon"; import { PokemonMove } from "#app/field/pokemon"; @@ -228,7 +228,7 @@ export class TurnStartPhase extends FieldPhase { ? playerActivePokemon[0] : playerActivePokemon[1]; // check if either active pokemon has the ability "Run Away" - const hasRunAway = playerActivePokemon.find(p => p.hasAbility(Abilities.RUN_AWAY)); + const hasRunAway = playerActivePokemon.find(p => p.hasAbility(AbilityId.RUN_AWAY)); runningPokemon = hasRunAway !== undefined ? hasRunAway : fasterPokemon; } } diff --git a/src/sprites/pokemon-asset-loader.ts b/src/sprites/pokemon-asset-loader.ts index 4ce88f4f1fb..980d242a880 100644 --- a/src/sprites/pokemon-asset-loader.ts +++ b/src/sprites/pokemon-asset-loader.ts @@ -1,11 +1,11 @@ -import type { Moves } from "#enums/moves"; +import type { MoveId } from "#enums/move-id"; import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims"; /** * Asynchronously load the animations and assets for the provided moves. * @param moveIds - An array of move IDs to load assets for. */ -export async function loadMoveAnimations(moveIds: Moves[]): Promise { +export async function loadMoveAnimations(moveIds: MoveId[]): Promise { await Promise.allSettled(moveIds.map(m => initMoveAnim(m))); await loadMoveAnimAssets(moveIds); } diff --git a/src/system/arena-data.ts b/src/system/arena-data.ts index 07396b31d1b..29423d10207 100644 --- a/src/system/arena-data.ts +++ b/src/system/arena-data.ts @@ -1,12 +1,12 @@ import { Arena } from "../field/arena"; import type { ArenaTag } from "../data/arena-tag"; import { loadArenaTag } from "../data/arena-tag"; -import type { Biome } from "#enums/biome"; +import type { BiomeId } from "#enums/biome-id"; import { Weather } from "../data/weather"; import { Terrain } from "#app/data/terrain"; export default class ArenaData { - public biome: Biome; + public biome: BiomeId; public weather: Weather | null; public terrain: Terrain | null; public tags: ArenaTag[]; diff --git a/src/system/egg-data.ts b/src/system/egg-data.ts index 8fb8335bcf7..63f9e17d7be 100644 --- a/src/system/egg-data.ts +++ b/src/system/egg-data.ts @@ -1,5 +1,5 @@ import type { EggTier } from "#enums/egg-type"; -import type { Species } from "#enums/species"; +import type { SpeciesId } from "#enums/species-id"; import type { VariantTier } from "#enums/variant-tier"; import { EGG_SEED, Egg } from "../data/egg"; import type { EggSourceType } from "#app/enums/egg-source-types"; @@ -12,7 +12,7 @@ export default class EggData { public timestamp: number; public variantTier: VariantTier; public isShiny: boolean; - public species: Species; + public species: SpeciesId; public eggMoveIndex: number; public overrideHiddenAbility: boolean; diff --git a/src/system/game-data.ts b/src/system/game-data.ts index 5711ad338c3..bc74ab15930 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -43,9 +43,9 @@ import { StatusEffect } from "#enums/status-effect"; import ChallengeData from "#app/system/challenge-data"; import { Device } from "#enums/devices"; import { GameDataType } from "#enums/game-data-type"; -import type { Moves } from "#enums/moves"; +import type { MoveId } from "#enums/move-id"; import { PlayerGender } from "#enums/player-gender"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { applyChallenges, ChallengeType } from "#app/data/challenge"; import { WeatherType } from "#enums/weather-type"; import { TerrainType } from "#app/data/terrain"; @@ -63,34 +63,34 @@ import { ArenaTrapTag } from "#app/data/arena-tag"; import { pokemonFormChanges } from "#app/data/pokemon-forms"; import type { PokemonType } from "#enums/pokemon-type"; -export const defaultStarterSpecies: Species[] = [ - Species.BULBASAUR, - Species.CHARMANDER, - Species.SQUIRTLE, - Species.CHIKORITA, - Species.CYNDAQUIL, - Species.TOTODILE, - Species.TREECKO, - Species.TORCHIC, - Species.MUDKIP, - Species.TURTWIG, - Species.CHIMCHAR, - Species.PIPLUP, - Species.SNIVY, - Species.TEPIG, - Species.OSHAWOTT, - Species.CHESPIN, - Species.FENNEKIN, - Species.FROAKIE, - Species.ROWLET, - Species.LITTEN, - Species.POPPLIO, - Species.GROOKEY, - Species.SCORBUNNY, - Species.SOBBLE, - Species.SPRIGATITO, - Species.FUECOCO, - Species.QUAXLY, +export const defaultStarterSpecies: SpeciesId[] = [ + SpeciesId.BULBASAUR, + SpeciesId.CHARMANDER, + SpeciesId.SQUIRTLE, + SpeciesId.CHIKORITA, + SpeciesId.CYNDAQUIL, + SpeciesId.TOTODILE, + SpeciesId.TREECKO, + SpeciesId.TORCHIC, + SpeciesId.MUDKIP, + SpeciesId.TURTWIG, + SpeciesId.CHIMCHAR, + SpeciesId.PIPLUP, + SpeciesId.SNIVY, + SpeciesId.TEPIG, + SpeciesId.OSHAWOTT, + SpeciesId.CHESPIN, + SpeciesId.FENNEKIN, + SpeciesId.FROAKIE, + SpeciesId.ROWLET, + SpeciesId.LITTEN, + SpeciesId.POPPLIO, + SpeciesId.GROOKEY, + SpeciesId.SCORBUNNY, + SpeciesId.SOBBLE, + SpeciesId.SPRIGATITO, + SpeciesId.FUECOCO, + SpeciesId.QUAXLY, ]; const saveKey = "x0i2O7WRiANTqPmZ"; // Temporary; secure encryption is not yet necessary @@ -205,7 +205,7 @@ export interface DexEntry { ivs: number[]; } -export type StarterMoveset = [Moves] | [Moves, Moves] | [Moves, Moves, Moves] | [Moves, Moves, Moves, Moves]; +export type StarterMoveset = [MoveId] | [MoveId, MoveId] | [MoveId, MoveId, MoveId] | [MoveId, MoveId, MoveId, MoveId]; export interface StarterFormMoveData { [key: number]: StarterMoveset; @@ -555,7 +555,7 @@ export class GameData { this.migrateStarterAbilities(systemData, this.starterData); - const starterIds = Object.keys(this.starterData).map(s => Number.parseInt(s) as Species); + const starterIds = Object.keys(this.starterData).map(s => Number.parseInt(s) as SpeciesId); for (const s of starterIds) { this.starterData[s].candyCount += systemData.dexData[s].caughtCount; this.starterData[s].candyCount += systemData.dexData[s].hatchedCount * 2; @@ -1720,7 +1720,7 @@ export class GameData { private initStarterData(): void { const starterData: StarterData = {}; - const starterSpeciesIds = Object.keys(speciesStarterCosts).map(k => Number.parseInt(k) as Species); + const starterSpeciesIds = Object.keys(speciesStarterCosts).map(k => Number.parseInt(k) as SpeciesId); for (const speciesId of starterSpeciesIds) { starterData[speciesId] = { @@ -1815,16 +1815,16 @@ export class GameData { const formKey = pokemon.getFormKey(); if (formIndex > 0) { // In case a Pikachu with formIndex > 0 was unlocked, base form Pichu is also unlocked - if (pokemon.species.speciesId === Species.PIKACHU && species.speciesId === Species.PICHU) { + if (pokemon.species.speciesId === SpeciesId.PIKACHU && species.speciesId === SpeciesId.PICHU) { dexEntry.caughtAttr |= globalScene.gameData.getFormAttr(0); } - if (pokemon.species.speciesId === Species.URSHIFU) { + if (pokemon.species.speciesId === SpeciesId.URSHIFU) { if (formIndex === 2) { dexEntry.caughtAttr |= globalScene.gameData.getFormAttr(0); } else if (formIndex === 3) { dexEntry.caughtAttr |= globalScene.gameData.getFormAttr(1); } - } else if (pokemon.species.speciesId === Species.ZYGARDE) { + } else if (pokemon.species.speciesId === SpeciesId.ZYGARDE) { if (formIndex === 4) { dexEntry.caughtAttr |= globalScene.gameData.getFormAttr(2); } else if (formIndex === 5) { @@ -1929,7 +1929,7 @@ export class GameData { } incrementRibbonCount(species: PokemonSpecies, forStarter = false): number { - const speciesIdToIncrement: Species = species.getRootSpeciesId(forStarter); + const speciesIdToIncrement: SpeciesId = species.getRootSpeciesId(forStarter); if (!this.starterData[speciesIdToIncrement].classicWinCount) { this.starterData[speciesIdToIncrement].classicWinCount = 0; @@ -2040,7 +2040,7 @@ export class GameData { } //recursively unlock nature for species and prevolutions - const _unlockSpeciesNature = (speciesId: Species) => { + const _unlockSpeciesNature = (speciesId: SpeciesId) => { this.dexData[speciesId].natureAttr |= 1 << (nature + 1); if (pokemonPrevolutions.hasOwnProperty(speciesId)) { _unlockSpeciesNature(pokemonPrevolutions[speciesId]); @@ -2049,7 +2049,7 @@ export class GameData { _unlockSpeciesNature(species.speciesId); } - updateSpeciesDexIvs(speciesId: Species, ivs: number[]): void { + updateSpeciesDexIvs(speciesId: SpeciesId, ivs: number[]): void { let dexEntry: DexEntry; do { dexEntry = globalScene.gameData.dexData[speciesId]; @@ -2180,7 +2180,7 @@ export class GameData { return ret; } - getSpeciesStarterValue(speciesId: Species): number { + getSpeciesStarterValue(speciesId: SpeciesId): number { const baseValue = speciesStarterCosts[speciesId]; let value = baseValue; @@ -2231,7 +2231,7 @@ export class GameData { } migrateStarterAbilities(systemData: SystemSaveData, initialStarterData?: StarterData): void { - const starterIds = Object.keys(this.starterData).map(s => Number.parseInt(s) as Species); + const starterIds = Object.keys(this.starterData).map(s => Number.parseInt(s) as SpeciesId); const starterData = initialStarterData || systemData.starterData; const dexData = systemData.dexData; for (const s of starterIds) { diff --git a/src/system/pokemon-data.ts b/src/system/pokemon-data.ts index 00169678ed0..62fb2f4a2e4 100644 --- a/src/system/pokemon-data.ts +++ b/src/system/pokemon-data.ts @@ -8,16 +8,16 @@ import { Status } from "../data/status-effect"; import Pokemon, { EnemyPokemon, PokemonBattleData, PokemonMove, PokemonSummonData } from "../field/pokemon"; import { TrainerSlot } from "#enums/trainer-slot"; import type { Variant } from "#app/sprites/variant"; -import type { Biome } from "#enums/biome"; -import type { Moves } from "#enums/moves"; -import type { Species } from "#enums/species"; +import type { BiomeId } from "#enums/biome-id"; +import type { MoveId } from "#enums/move-id"; +import type { SpeciesId } from "#enums/species-id"; import { CustomPokemonData } from "#app/data/custom-pokemon-data"; import type { PokemonType } from "#enums/pokemon-type"; export default class PokemonData { public id: number; public player: boolean; - public species: Species; + public species: SpeciesId; public nickname: string; public formIndex: number; public abilityIndex: number; @@ -37,19 +37,19 @@ export default class PokemonData { public status: Status | null; public friendship: number; public metLevel: number; - public metBiome: Biome | -1; // -1 for starters - public metSpecies: Species; + public metBiome: BiomeId | -1; // -1 for starters + public metSpecies: SpeciesId; public metWave: number; // 0 for unknown (previous saves), -1 for starters public luck: number; public pauseEvolutions: boolean; public pokerus: boolean; - public usedTMs: Moves[]; + public usedTMs: MoveId[]; public evoCounter: number; public teraType: PokemonType; public isTerastallized: boolean; public stellarTypesBoosted: PokemonType[]; - public fusionSpecies: Species; + public fusionSpecies: SpeciesId; public fusionFormIndex: number; public fusionAbilityIndex: number; public fusionShiny: boolean; diff --git a/src/system/version_migration/versions/v1_8_3.ts b/src/system/version_migration/versions/v1_8_3.ts index 6e2d96d3673..cce37a53767 100644 --- a/src/system/version_migration/versions/v1_8_3.ts +++ b/src/system/version_migration/versions/v1_8_3.ts @@ -1,7 +1,7 @@ import type { SystemSaveMigrator } from "#app/@types/SystemSaveMigrator"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { DexAttr, type SystemSaveData } from "#app/system/game-data"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; /** * If a starter is caught, but the only forms registered as caught are not starterSelectable, @@ -17,7 +17,7 @@ const migratePichuForms: SystemSaveMigrator = { const caughtAttr = data.dexData[sd]?.caughtAttr; const species = getPokemonSpecies(sd); // An extra check because you never know - if (species.speciesId === Species.PICHU && caughtAttr) { + if (species.speciesId === SpeciesId.PICHU && caughtAttr) { // Ensuring that only existing forms are unlocked data.dexData[sd].caughtAttr &= species.getFullUnlocksData(); // If no forms are unlocked now, since Pichu is caught, we unlock form 0 diff --git a/src/system/version_migration/versions/v1_9_0.ts b/src/system/version_migration/versions/v1_9_0.ts index c517896cf45..0f22b85d072 100644 --- a/src/system/version_migration/versions/v1_9_0.ts +++ b/src/system/version_migration/versions/v1_9_0.ts @@ -2,7 +2,7 @@ import type { SessionSaveMigrator } from "#app/@types/SessionSaveMigrator"; import { PokemonMove } from "#app/field/pokemon"; import type { SessionSaveData } from "#app/system/game-data"; import type PokemonData from "#app/system/pokemon-data"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; /** * Migrate all lingering rage fist data inside `CustomPokemonData`, @@ -15,7 +15,7 @@ const migratePartyData: SessionSaveMigrator = { // this stuff is copied straight from the constructor fwiw const mapParty = (pkmnData: PokemonData) => { // remove empty moves from moveset - pkmnData.moveset = (pkmnData.moveset ?? [new PokemonMove(Moves.TACKLE), new PokemonMove(Moves.GROWL)]) + pkmnData.moveset = (pkmnData.moveset ?? [new PokemonMove(MoveId.TACKLE), new PokemonMove(MoveId.GROWL)]) .filter(m => !!m) .map(m => PokemonMove.loadMove(m)); // only edit summondata moveset if exists diff --git a/src/timed-event-manager.ts b/src/timed-event-manager.ts index 163afdc098b..976463a16a7 100644 --- a/src/timed-event-manager.ts +++ b/src/timed-event-manager.ts @@ -3,7 +3,7 @@ import { TextStyle, addTextObject } from "#app/ui/text"; import type { nil } from "#app/utils/common"; import { isNullOrUndefined } from "#app/utils/common"; import i18next from "i18next"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import type { WeatherPoolEntry } from "#app/data/weather"; import { WeatherType } from "#enums/weather-type"; import { CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER } from "./data/balance/starters"; @@ -26,7 +26,7 @@ interface EventBanner { } interface EventEncounter { - species: Species; + species: SpeciesId; blockEvolution?: boolean; formIndex?: number; } @@ -62,7 +62,7 @@ interface TimedEvent extends EventBanner { delibirdyBuff?: string[]; weather?: WeatherPoolEntry[]; mysteryEncounterTierChanges?: EventMysteryEncounterTier[]; - luckBoostedSpecies?: Species[]; + luckBoostedSpecies?: SpeciesId[]; boostFusions?: boolean; //MODIFIER REWORK PLEASE classicWaveRewards?: EventWaveReward[]; // Rival battle rewards trainerShinyChance?: number; // Odds over 65536 of trainer mon generating as shiny @@ -82,26 +82,26 @@ const timedEvents: TimedEvent[] = [ scale: 0.21, availableLangs: ["en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN"], eventEncounters: [ - { species: Species.GIMMIGHOUL, blockEvolution: true }, - { species: Species.DELIBIRD }, - { species: Species.STANTLER }, - { species: Species.CYNDAQUIL }, - { species: Species.PIPLUP }, - { species: Species.CHESPIN }, - { species: Species.BALTOY }, - { species: Species.SNOVER }, - { species: Species.CHINGLING }, - { species: Species.LITWICK }, - { species: Species.CUBCHOO }, - { species: Species.SWIRLIX }, - { species: Species.AMAURA }, - { species: Species.MUDBRAY }, - { species: Species.ROLYCOLY }, - { species: Species.MILCERY }, - { species: Species.SMOLIV }, - { species: Species.ALOLA_VULPIX }, - { species: Species.GALAR_DARUMAKA }, - { species: Species.IRON_BUNDLE }, + { species: SpeciesId.GIMMIGHOUL, blockEvolution: true }, + { species: SpeciesId.DELIBIRD }, + { species: SpeciesId.STANTLER }, + { species: SpeciesId.CYNDAQUIL }, + { species: SpeciesId.PIPLUP }, + { species: SpeciesId.CHESPIN }, + { species: SpeciesId.BALTOY }, + { species: SpeciesId.SNOVER }, + { species: SpeciesId.CHINGLING }, + { species: SpeciesId.LITWICK }, + { species: SpeciesId.CUBCHOO }, + { species: SpeciesId.SWIRLIX }, + { species: SpeciesId.AMAURA }, + { species: SpeciesId.MUDBRAY }, + { species: SpeciesId.ROLYCOLY }, + { species: SpeciesId.MILCERY }, + { species: SpeciesId.SMOLIV }, + { species: SpeciesId.ALOLA_VULPIX }, + { species: SpeciesId.GALAR_DARUMAKA }, + { species: SpeciesId.IRON_BUNDLE }, ], delibirdyBuff: ["CATCHING_CHARM", "SHINY_CHARM", "ABILITY_CHARM", "EXP_CHARM", "SUPER_EXP_CHARM", "HEALING_CHARM"], weather: [{ weatherType: WeatherType.SNOW, weight: 1 }], @@ -138,59 +138,59 @@ const timedEvents: TimedEvent[] = [ scale: 0.21, availableLangs: ["en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN"], eventEncounters: [ - { species: Species.EKANS }, - { species: Species.ONIX }, - { species: Species.DRATINI }, - { species: Species.CLEFFA }, - { species: Species.UMBREON }, - { species: Species.DUNSPARCE }, - { species: Species.TEDDIURSA }, - { species: Species.SEVIPER }, - { species: Species.LUNATONE }, - { species: Species.CHINGLING }, - { species: Species.SNIVY }, - { species: Species.DARUMAKA }, - { species: Species.DRAMPA }, - { species: Species.SILICOBRA }, - { species: Species.BLOODMOON_URSALUNA }, + { species: SpeciesId.EKANS }, + { species: SpeciesId.ONIX }, + { species: SpeciesId.DRATINI }, + { species: SpeciesId.CLEFFA }, + { species: SpeciesId.UMBREON }, + { species: SpeciesId.DUNSPARCE }, + { species: SpeciesId.TEDDIURSA }, + { species: SpeciesId.SEVIPER }, + { species: SpeciesId.LUNATONE }, + { species: SpeciesId.CHINGLING }, + { species: SpeciesId.SNIVY }, + { species: SpeciesId.DARUMAKA }, + { species: SpeciesId.DRAMPA }, + { species: SpeciesId.SILICOBRA }, + { species: SpeciesId.BLOODMOON_URSALUNA }, ], luckBoostedSpecies: [ - Species.EKANS, - Species.ARBOK, - Species.ONIX, - Species.STEELIX, - Species.DRATINI, - Species.DRAGONAIR, - Species.DRAGONITE, - Species.CLEFFA, - Species.CLEFAIRY, - Species.CLEFABLE, - Species.UMBREON, - Species.DUNSPARCE, - Species.DUDUNSPARCE, - Species.TEDDIURSA, - Species.URSARING, - Species.URSALUNA, - Species.SEVIPER, - Species.LUNATONE, - Species.RAYQUAZA, - Species.CHINGLING, - Species.CHIMECHO, - Species.CRESSELIA, - Species.DARKRAI, - Species.SNIVY, - Species.SERVINE, - Species.SERPERIOR, - Species.DARUMAKA, - Species.DARMANITAN, - Species.ZYGARDE, - Species.DRAMPA, - Species.LUNALA, - Species.BLACEPHALON, - Species.SILICOBRA, - Species.SANDACONDA, - Species.ROARING_MOON, - Species.BLOODMOON_URSALUNA, + SpeciesId.EKANS, + SpeciesId.ARBOK, + SpeciesId.ONIX, + SpeciesId.STEELIX, + SpeciesId.DRATINI, + SpeciesId.DRAGONAIR, + SpeciesId.DRAGONITE, + SpeciesId.CLEFFA, + SpeciesId.CLEFAIRY, + SpeciesId.CLEFABLE, + SpeciesId.UMBREON, + SpeciesId.DUNSPARCE, + SpeciesId.DUDUNSPARCE, + SpeciesId.TEDDIURSA, + SpeciesId.URSARING, + SpeciesId.URSALUNA, + SpeciesId.SEVIPER, + SpeciesId.LUNATONE, + SpeciesId.RAYQUAZA, + SpeciesId.CHINGLING, + SpeciesId.CHIMECHO, + SpeciesId.CRESSELIA, + SpeciesId.DARKRAI, + SpeciesId.SNIVY, + SpeciesId.SERVINE, + SpeciesId.SERPERIOR, + SpeciesId.DARUMAKA, + SpeciesId.DARMANITAN, + SpeciesId.ZYGARDE, + SpeciesId.DRAMPA, + SpeciesId.LUNALA, + SpeciesId.BLACEPHALON, + SpeciesId.SILICOBRA, + SpeciesId.SANDACONDA, + SpeciesId.ROARING_MOON, + SpeciesId.BLOODMOON_URSALUNA, ], classicWaveRewards: [ { wave: 8, type: "SHINY_CHARM" }, @@ -210,28 +210,28 @@ const timedEvents: TimedEvent[] = [ scale: 0.21, availableLangs: ["en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN"], eventEncounters: [ - { species: Species.NIDORAN_F }, - { species: Species.NIDORAN_M }, - { species: Species.IGGLYBUFF }, - { species: Species.SMOOCHUM }, - { species: Species.VOLBEAT }, - { species: Species.ILLUMISE }, - { species: Species.ROSELIA }, - { species: Species.LUVDISC }, - { species: Species.WOOBAT }, - { species: Species.FRILLISH }, - { species: Species.ALOMOMOLA }, - { species: Species.FURFROU, formIndex: 1 }, // Heart Trim - { species: Species.ESPURR }, - { species: Species.SPRITZEE }, - { species: Species.SWIRLIX }, - { species: Species.APPLIN }, - { species: Species.MILCERY }, - { species: Species.INDEEDEE }, - { species: Species.TANDEMAUS }, - { species: Species.ENAMORUS }, + { species: SpeciesId.NIDORAN_F }, + { species: SpeciesId.NIDORAN_M }, + { species: SpeciesId.IGGLYBUFF }, + { species: SpeciesId.SMOOCHUM }, + { species: SpeciesId.VOLBEAT }, + { species: SpeciesId.ILLUMISE }, + { species: SpeciesId.ROSELIA }, + { species: SpeciesId.LUVDISC }, + { species: SpeciesId.WOOBAT }, + { species: SpeciesId.FRILLISH }, + { species: SpeciesId.ALOMOMOLA }, + { species: SpeciesId.FURFROU, formIndex: 1 }, // Heart Trim + { species: SpeciesId.ESPURR }, + { species: SpeciesId.SPRITZEE }, + { species: SpeciesId.SWIRLIX }, + { species: SpeciesId.APPLIN }, + { species: SpeciesId.MILCERY }, + { species: SpeciesId.INDEEDEE }, + { species: SpeciesId.TANDEMAUS }, + { species: SpeciesId.ENAMORUS }, ], - luckBoostedSpecies: [Species.LUVDISC], + luckBoostedSpecies: [SpeciesId.LUVDISC], classicWaveRewards: [ { wave: 8, type: "SHINY_CHARM" }, { wave: 8, type: "ABILITY_CHARM" }, @@ -249,39 +249,39 @@ const timedEvents: TimedEvent[] = [ scale: 0.21, availableLangs: ["en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN"], eventEncounters: [ - { species: Species.PIKACHU, formIndex: 1, blockEvolution: true }, // Partner Form - { species: Species.EEVEE, formIndex: 1, blockEvolution: true }, // Partner Form - { species: Species.CHIKORITA }, - { species: Species.TOTODILE }, - { species: Species.TEPIG }, + { species: SpeciesId.PIKACHU, formIndex: 1, blockEvolution: true }, // Partner Form + { species: SpeciesId.EEVEE, formIndex: 1, blockEvolution: true }, // Partner Form + { species: SpeciesId.CHIKORITA }, + { species: SpeciesId.TOTODILE }, + { species: SpeciesId.TEPIG }, ], luckBoostedSpecies: [ - Species.PICHU, - Species.PIKACHU, - Species.RAICHU, - Species.ALOLA_RAICHU, - Species.PSYDUCK, - Species.GOLDUCK, - Species.EEVEE, - Species.FLAREON, - Species.JOLTEON, - Species.VAPOREON, - Species.ESPEON, - Species.UMBREON, - Species.LEAFEON, - Species.GLACEON, - Species.SYLVEON, - Species.CHIKORITA, - Species.BAYLEEF, - Species.MEGANIUM, - Species.TOTODILE, - Species.CROCONAW, - Species.FERALIGATR, - Species.TEPIG, - Species.PIGNITE, - Species.EMBOAR, - Species.ZYGARDE, - Species.ETERNAL_FLOETTE, + SpeciesId.PICHU, + SpeciesId.PIKACHU, + SpeciesId.RAICHU, + SpeciesId.ALOLA_RAICHU, + SpeciesId.PSYDUCK, + SpeciesId.GOLDUCK, + SpeciesId.EEVEE, + SpeciesId.FLAREON, + SpeciesId.JOLTEON, + SpeciesId.VAPOREON, + SpeciesId.ESPEON, + SpeciesId.UMBREON, + SpeciesId.LEAFEON, + SpeciesId.GLACEON, + SpeciesId.SYLVEON, + SpeciesId.CHIKORITA, + SpeciesId.BAYLEEF, + SpeciesId.MEGANIUM, + SpeciesId.TOTODILE, + SpeciesId.CROCONAW, + SpeciesId.FERALIGATR, + SpeciesId.TEPIG, + SpeciesId.PIGNITE, + SpeciesId.EMBOAR, + SpeciesId.ZYGARDE, + SpeciesId.ETERNAL_FLOETTE, ], classicWaveRewards: [ { wave: 8, type: "SHINY_CHARM" }, @@ -321,28 +321,28 @@ const timedEvents: TimedEvent[] = [ shinyMultiplier: 2, upgradeUnlockedVouchers: true, eventEncounters: [ - { species: Species.HOPPIP }, - { species: Species.CELEBI }, - { species: Species.VOLBEAT }, - { species: Species.ILLUMISE }, - { species: Species.SPOINK }, - { species: Species.LILEEP }, - { species: Species.SHINX }, - { species: Species.PACHIRISU }, - { species: Species.CHERUBI }, - { species: Species.MUNCHLAX }, - { species: Species.TEPIG }, - { species: Species.PANSAGE }, - { species: Species.PANSEAR }, - { species: Species.PANPOUR }, - { species: Species.DARUMAKA }, - { species: Species.ARCHEN }, - { species: Species.DEERLING, formIndex: 0 }, // Spring Deerling - { species: Species.CLAUNCHER }, - { species: Species.WISHIWASHI }, - { species: Species.DRAMPA }, - { species: Species.JANGMO_O }, - { species: Species.APPLIN }, + { species: SpeciesId.HOPPIP }, + { species: SpeciesId.CELEBI }, + { species: SpeciesId.VOLBEAT }, + { species: SpeciesId.ILLUMISE }, + { species: SpeciesId.SPOINK }, + { species: SpeciesId.LILEEP }, + { species: SpeciesId.SHINX }, + { species: SpeciesId.PACHIRISU }, + { species: SpeciesId.CHERUBI }, + { species: SpeciesId.MUNCHLAX }, + { species: SpeciesId.TEPIG }, + { species: SpeciesId.PANSAGE }, + { species: SpeciesId.PANSEAR }, + { species: SpeciesId.PANPOUR }, + { species: SpeciesId.DARUMAKA }, + { species: SpeciesId.ARCHEN }, + { species: SpeciesId.DEERLING, formIndex: 0 }, // Spring Deerling + { species: SpeciesId.CLAUNCHER }, + { species: SpeciesId.WISHIWASHI }, + { species: SpeciesId.DRAMPA }, + { species: SpeciesId.JANGMO_O }, + { species: SpeciesId.APPLIN }, ], classicWaveRewards: [ { wave: 8, type: "SHINY_CHARM" }, @@ -510,8 +510,8 @@ export class TimedEventManager { return ret; } - getEventLuckBoostedSpecies(): Species[] { - const ret: Species[] = []; + getEventLuckBoostedSpecies(): SpeciesId[] { + const ret: SpeciesId[] = []; timedEvents .filter(te => this.isActive(te)) .map(te => { diff --git a/src/ui/battle-flyout.ts b/src/ui/battle-flyout.ts index f8ef5fc1ec4..9a2180eccee 100644 --- a/src/ui/battle-flyout.ts +++ b/src/ui/battle-flyout.ts @@ -6,7 +6,7 @@ import type Move from "#app/data/moves/move"; import type { BerryUsedEvent, MoveUsedEvent } from "../events/battle-scene"; import { BattleSceneEventType } from "../events/battle-scene"; import { BerryType } from "#enums/berry-type"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { UiTheme } from "#enums/ui-theme"; import { getPokemonNameWithAffix } from "#app/messages"; @@ -154,7 +154,7 @@ export default class BattleFlyout extends Phaser.GameObjects.Container { /** Updates all of the {@linkcode MoveInfo} objects in the moveInfo array */ private onMoveUsed(event: Event) { const moveUsedEvent = event as MoveUsedEvent; - if (!moveUsedEvent || moveUsedEvent.pokemonId !== this.pokemon?.id || moveUsedEvent.move.id === Moves.STRUGGLE) { + if (!moveUsedEvent || moveUsedEvent.pokemonId !== this.pokemon?.id || moveUsedEvent.move.id === MoveId.STRUGGLE) { // Ignore Struggle return; } diff --git a/src/ui/candy-bar.ts b/src/ui/candy-bar.ts index f7a01b83093..189a418eec8 100644 --- a/src/ui/candy-bar.ts +++ b/src/ui/candy-bar.ts @@ -3,14 +3,14 @@ import { globalScene } from "#app/global-scene"; import { TextStyle, addTextObject } from "./text"; import { argbFromRgba } from "@material/material-color-utilities"; import { rgbHexToRgba } from "#app/utils/common"; -import type { Species } from "#enums/species"; +import type { SpeciesId } from "#enums/species-id"; export default class CandyBar extends Phaser.GameObjects.Container { private bg: Phaser.GameObjects.NineSlice; private candyIcon: Phaser.GameObjects.Sprite; private candyOverlayIcon: Phaser.GameObjects.Sprite; private countText: Phaser.GameObjects.Text; - private speciesId: Species; + private speciesId: SpeciesId; private tween: Phaser.Tweens.Tween | null; private autoHideTimer: NodeJS.Timeout | null; @@ -47,7 +47,7 @@ export default class CandyBar extends Phaser.GameObjects.Container { this.shown = false; } - showStarterSpeciesCandy(starterSpeciesId: Species, count: number): Promise { + showStarterSpeciesCandy(starterSpeciesId: SpeciesId, count: number): Promise { return new Promise(resolve => { if (this.shown) { if (this.speciesId === starterSpeciesId) { diff --git a/src/ui/command-ui-handler.ts b/src/ui/command-ui-handler.ts index ff27e9c41c0..fbfd4d2623b 100644 --- a/src/ui/command-ui-handler.ts +++ b/src/ui/command-ui-handler.ts @@ -10,7 +10,7 @@ import { globalScene } from "#app/global-scene"; import { TerastallizeAccessModifier } from "#app/modifier/modifier"; import { PokemonType } from "#enums/pokemon-type"; import { getTypeRgb } from "#app/data/type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; export enum Command { FIGHT = 0, @@ -198,7 +198,7 @@ export default class CommandUiHandler extends UiHandler { const hasTeraMod = !!globalScene.getModifiers(TerastallizeAccessModifier).length; const activePokemon = globalScene.getField()[this.fieldIndex]; const isBlockedForm = - activePokemon.isMega() || activePokemon.isMax() || activePokemon.hasSpecies(Species.NECROZMA, "ultra"); + activePokemon.isMega() || activePokemon.isMax() || activePokemon.hasSpecies(SpeciesId.NECROZMA, "ultra"); const currentTeras = globalScene.arena.playerTerasUsed; const plannedTera = globalScene.currentBattle.preTurnCommands[0]?.command === Command.TERA && this.fieldIndex > 0 ? 1 : 0; diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index 74d4e5bcb17..452ffcf5192 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -25,8 +25,8 @@ import { applyChallenges, ChallengeType } from "#app/data/challenge"; import MoveInfoOverlay from "#app/ui/move-info-overlay"; import i18next from "i18next"; import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { getPokemonNameWithAffix } from "#app/messages"; import type { CommandPhase } from "#app/phases/command-phase"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; @@ -184,7 +184,7 @@ export default class PartyUiHandler extends MessageUiHandler { private selectCallback: PartySelectCallback | PartyModifierTransferSelectCallback | null; private selectFilter: PokemonSelectFilter | PokemonModifierTransferSelectFilter; private moveSelectFilter: PokemonMoveSelectFilter; - private tmMoveId: Moves; + private tmMoveId: MoveId; private showMovePp: boolean; private iconAnimHandler: PokemonIconAnimHandler; @@ -346,7 +346,7 @@ export default class PartyUiHandler extends MessageUiHandler { args.length > 4 && args[4] instanceof Function ? (args[4] as PokemonMoveSelectFilter) : PartyUiHandler.FilterAllMoves; - this.tmMoveId = args.length > 5 && args[5] ? args[5] : Moves.NONE; + this.tmMoveId = args.length > 5 && args[5] ? args[5] : MoveId.NONE; this.showMovePp = args.length > 6 && args[6]; this.partyContainer.setVisible(true); @@ -1165,8 +1165,7 @@ export default class PartyUiHandler extends MessageUiHandler { this.partyUiMode !== PartyUiMode.FAINT_SWITCH && globalScene.findModifier( m => - m instanceof SwitchEffectTransferModifier && - m.pokemonId === globalScene.getPlayerField()[this.fieldIndex].id, + m instanceof SwitchEffectTransferModifier && m.pokemonId === globalScene.getPlayerField()[this.fieldIndex].id, ) ); } @@ -1579,7 +1578,7 @@ export default class PartyUiHandler extends MessageUiHandler { formChangeItemModifiers = formChangeItemModifiers.filter( m => m.active || m.formChangeItem === FormChangeItem.ULTRANECROZIUM_Z, ); - } else if (pokemon.species.speciesId === Species.NECROZMA) { + } else if (pokemon.species.speciesId === SpeciesId.NECROZMA) { // no form is currently active. the user has to activate some form, except ULTRANECROZIUM_Z formChangeItemModifiers = formChangeItemModifiers.filter( m => m.formChangeItem !== FormChangeItem.ULTRANECROZIUM_Z, @@ -1654,7 +1653,7 @@ class PartySlot extends Phaser.GameObjects.Container { pokemon: PlayerPokemon, iconAnimHandler: PokemonIconAnimHandler, partyUiMode: PartyUiMode, - tmMoveId: Moves, + tmMoveId: MoveId, ) { super( globalScene, @@ -1677,7 +1676,7 @@ class PartySlot extends Phaser.GameObjects.Container { return this.pokemon; } - setup(partyUiMode: PartyUiMode, tmMoveId: Moves) { + setup(partyUiMode: PartyUiMode, tmMoveId: MoveId) { const currentLanguage = i18next.resolvedLanguage ?? "en"; const offsetJa = currentLanguage === "ja"; diff --git a/src/ui/pokedex-page-ui-handler.ts b/src/ui/pokedex-page-ui-handler.ts index ab729db8c26..263842bd4f9 100644 --- a/src/ui/pokedex-page-ui-handler.ts +++ b/src/ui/pokedex-page-ui-handler.ts @@ -36,8 +36,8 @@ import MoveInfoOverlay from "#app/ui/move-info-overlay"; import PokedexInfoOverlay from "#app/ui/pokedex-info-overlay"; import { getEggTierForSpecies } from "#app/data/egg"; import { Device } from "#enums/devices"; -import type { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import type { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Button } from "#enums/buttons"; import { EggSourceType } from "#enums/egg-source-types"; import { @@ -58,9 +58,9 @@ import { getEnumKeys } from "#app/utils/common"; import { speciesTmMoves } from "#app/data/balance/tms"; import type { BiomeTierTod } from "#app/data/balance/biomes"; import { BiomePoolTier, catchableSpecies } from "#app/data/balance/biomes"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { TimeOfDay } from "#app/enums/time-of-day"; -import type { Abilities } from "#app/enums/abilities"; +import type { AbilityId } from "#enums/ability-id"; import { BaseStatsOverlay } from "#app/ui/base-stats-overlay"; import { globalScene } from "#app/global-scene"; import type BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; @@ -203,15 +203,15 @@ export default class PokedexPageUiHandler extends MessageUiHandler { private species: PokemonSpecies; private starterId: number; private formIndex: number; - private speciesLoaded: Map = new Map(); + private speciesLoaded: Map = new Map(); private levelMoves: LevelMoves; - private eggMoves: Moves[] = []; + private eggMoves: MoveId[] = []; private hasEggMoves: boolean[] = []; - private tmMoves: Moves[] = []; - private ability1: Abilities; - private ability2: Abilities | undefined; - private abilityHidden: Abilities | undefined; - private passive: Abilities; + private tmMoves: MoveId[] = []; + private ability1: AbilityId; + private ability2: AbilityId | undefined; + private abilityHidden: AbilityId | undefined; + private passive: AbilityId; private hasPassive: boolean; private hasAbilities: number[]; private biomes: BiomeTierTod[]; @@ -256,7 +256,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { protected scale = 0.1666666667; private menuDescriptions: string[]; private isFormGender: boolean; - private filteredIndices: Species[] | null = null; + private filteredIndices: SpeciesId[] | null = null; private availableVariants: number; private unlockedVariants: boolean[]; @@ -824,7 +824,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { const allBiomes = catchableSpecies[species.speciesId] ?? []; this.preBiomes = this.sanitizeBiomes( (catchableSpecies[this.starterId] ?? []).filter( - b => !allBiomes.some(bm => b.biome === bm.biome && b.tier === bm.tier) && !(b.biome === Biome.TOWN), + b => !allBiomes.some(bm => b.biome === bm.biome && b.tier === bm.tier) && !(b.biome === BiomeId.TOWN), ), this.starterId, ); @@ -863,13 +863,13 @@ export default class PokedexPageUiHandler extends MessageUiHandler { // Function to ensure that forms appear in the appropriate biome and tod sanitizeBiomes(biomes: BiomeTierTod[], speciesId: number): BiomeTierTod[] { - if (speciesId === Species.BURMY || speciesId === Species.WORMADAM) { + if (speciesId === SpeciesId.BURMY || speciesId === SpeciesId.WORMADAM) { return biomes.filter(b => { const formIndex = (() => { switch (b.biome) { - case Biome.BEACH: + case BiomeId.BEACH: return 1; - case Biome.SLUM: + case BiomeId.SLUM: return 2; default: return 0; @@ -878,19 +878,19 @@ export default class PokedexPageUiHandler extends MessageUiHandler { return this.formIndex === formIndex; }); } - if (speciesId === Species.ROTOM) { + if (speciesId === SpeciesId.ROTOM) { return biomes.filter(b => { const formIndex = (() => { switch (b.biome) { - case Biome.VOLCANO: + case BiomeId.VOLCANO: return 1; - case Biome.SEA: + case BiomeId.SEA: return 2; - case Biome.ICE_CAVE: + case BiomeId.ICE_CAVE: return 3; - case Biome.MOUNTAIN: + case BiomeId.MOUNTAIN: return 4; - case Biome.TALL_GRASS: + case BiomeId.TALL_GRASS: return 5; default: return 0; @@ -899,7 +899,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { return this.formIndex === formIndex; }); } - if (speciesId === Species.LYCANROC) { + if (speciesId === SpeciesId.LYCANROC) { return biomes.filter(b => { const formIndex = (() => { switch (b.tod[0]) { @@ -1089,11 +1089,11 @@ export default class PokedexPageUiHandler extends MessageUiHandler { * @returns the id of the corresponding starter */ getStarterSpeciesId(speciesId): number { - if (speciesId === Species.PIKACHU) { + if (speciesId === SpeciesId.PIKACHU) { if ([0, 1, 8].includes(this.formIndex)) { - return Species.PICHU; + return SpeciesId.PICHU; } - return Species.PIKACHU; + return SpeciesId.PIKACHU; } if (speciesStarterCosts.hasOwnProperty(speciesId)) { return speciesId; @@ -1477,7 +1477,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.biomes.map(b => { options.push({ label: - i18next.t(`biome:${Biome[b.biome].toUpperCase()}`) + + i18next.t(`biome:${BiomeId[b.biome].toUpperCase()}`) + " - " + i18next.t(`biome:${BiomePoolTier[b.tier].toUpperCase()}`) + (b.tod.length === 1 && b.tod[0] === -1 @@ -1498,7 +1498,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.preBiomes.map(b => { options.push({ label: - i18next.t(`biome:${Biome[b.biome].toUpperCase()}`) + + i18next.t(`biome:${BiomeId[b.biome].toUpperCase()}`) + " - " + i18next.t(`biome:${BiomePoolTier[b.tier].toUpperCase()}`) + (b.tod.length === 1 && b.tod[0] === -1 @@ -2581,7 +2581,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.pokemonUncaughtText.setVisible(false); this.pokemonCaughtCountText.setText(`${this.speciesStarterDexEntry?.caughtCount}`); - if (species.speciesId === Species.MANAPHY || species.speciesId === Species.PHIONE) { + if (species.speciesId === SpeciesId.MANAPHY || species.speciesId === SpeciesId.PHIONE) { this.pokemonHatchedIcon.setFrame("manaphy"); } else { this.pokemonHatchedIcon.setFrame(getEggTierForSpecies(species)); @@ -2614,7 +2614,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.pokemonCandyIcon.setTint(argbFromRgba(rgbHexToRgba(colorScheme[0]))); this.pokemonCandyOverlayIcon.setTint(argbFromRgba(rgbHexToRgba(colorScheme[1]))); this.pokemonCandyCountText.setText( - `x${species.speciesId === Species.PIKACHU ? 0 : globalScene.gameData.starterData[this.starterId].candyCount}`, + `x${species.speciesId === SpeciesId.PIKACHU ? 0 : globalScene.gameData.starterData[this.starterId].candyCount}`, ); this.pokemonCandyContainer.setVisible(true); diff --git a/src/ui/pokedex-ui-handler.ts b/src/ui/pokedex-ui-handler.ts index 179d5b4664b..8b3633d7422 100644 --- a/src/ui/pokedex-ui-handler.ts +++ b/src/ui/pokedex-ui-handler.ts @@ -19,14 +19,14 @@ import { TextStyle, addTextObject } from "#app/ui/text"; import { UiMode } from "#enums/ui-mode"; import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; import { Passive as PassiveAttr } from "#enums/passive"; -import type { Species } from "#enums/species"; +import type { SpeciesId } from "#enums/species-id"; import { Button } from "#enums/buttons"; import { DropDown, DropDownLabel, DropDownOption, DropDownState, DropDownType, SortCriteria } from "#app/ui/dropdown"; import { PokedexMonContainer } from "#app/ui/pokedex-mon-container"; import { FilterBar } from "#app/ui/filter-bar"; import { DropDownColumn } from "#enums/drop-down-column"; import { ScrollBar } from "#app/ui/scroll-bar"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { getPassiveCandyCount, getValueReductionCandyCounts, @@ -41,7 +41,7 @@ import { allAbilities } from "#app/data/data-lists"; import { allMoves } from "#app/data/data-lists"; import { speciesTmMoves } from "#app/data/balance/tms"; import { pokemonStarters } from "#app/data/balance/pokemon-evolutions"; -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { globalScene } from "#app/global-scene"; interface LanguageSetting { @@ -175,7 +175,7 @@ export default class PokedexUiHandler extends MessageUiHandler { private oldCursor = -1; private lastSpecies: PokemonSpecies; - private speciesLoaded: Map = new Map(); + private speciesLoaded: Map = new Map(); private pokerusSpecies: PokemonSpecies[] = []; private speciesStarterDexEntry: DexEntry | null; @@ -227,7 +227,7 @@ export default class PokedexUiHandler extends MessageUiHandler { private showFormTrayIconElement: Phaser.GameObjects.Sprite; private showFormTrayLabel: Phaser.GameObjects.Text; private canShowFormTray: boolean; - private filteredIndices: Species[]; + private filteredIndices: SpeciesId[]; constructor() { super(UiMode.POKEDEX); @@ -314,11 +314,11 @@ export default class PokedexUiHandler extends MessageUiHandler { ); // biome filter, making an entry in the dropdown for each biome - const biomeOptions = Object.values(Biome) + const biomeOptions = Object.values(BiomeId) .filter(value => typeof value === "number") // Filter numeric values from the enum .map( (biomeValue, index) => - new DropDownOption(index, new DropDownLabel(i18next.t(`biome:${Biome[biomeValue].toUpperCase()}`))), + new DropDownOption(index, new DropDownLabel(i18next.t(`biome:${BiomeId[biomeValue].toUpperCase()}`))), ); biomeOptions.push(new DropDownOption(biomeOptions.length, new DropDownLabel(i18next.t("filterBar:uncatchable")))); const biomeDropDown: DropDown = new DropDown(0, 0, biomeOptions, this.updateStarters, DropDownType.HYBRID); @@ -1459,7 +1459,7 @@ export default class PokedexUiHandler extends MessageUiHandler { // Biome filter const indexToBiome = new Map( - Object.values(Biome) + Object.values(BiomeId) .map((value, index) => (typeof value === "string" ? [index, value] : undefined)) .filter((entry): entry is [number, string] => entry !== undefined), ); @@ -1467,7 +1467,7 @@ export default class PokedexUiHandler extends MessageUiHandler { // We get biomes for both the mon and its starters to ensure that evolutions get the correct filters. // TODO: We might also need to do it the other way around. - const biomes = catchableSpecies[species.speciesId].concat(catchableSpecies[starterId]).map(b => Biome[b.biome]); + const biomes = catchableSpecies[species.speciesId].concat(catchableSpecies[starterId]).map(b => BiomeId[b.biome]); if (biomes.length === 0) { biomes.push("Uncatchable"); } @@ -1590,7 +1590,7 @@ export default class PokedexUiHandler extends MessageUiHandler { // HA Filter const speciesHasHiddenAbility = - species.abilityHidden !== species.ability1 && species.abilityHidden !== Abilities.NONE; + species.abilityHidden !== species.ability1 && species.abilityHidden !== AbilityId.NONE; const hasHA = starterData.abilityAttr & AbilityAttr.ABILITY_HIDDEN; const fitsHA = this.filterBar.getVals(DropDownColumn.MISC).some(misc => { if (misc.val === "HIDDEN_ABILITY" && misc.state === DropDownState.ON) { diff --git a/src/ui/pokemon-hatch-info-container.ts b/src/ui/pokemon-hatch-info-container.ts index 5471a769d95..afc58c63953 100644 --- a/src/ui/pokemon-hatch-info-container.ts +++ b/src/ui/pokemon-hatch-info-container.ts @@ -5,7 +5,7 @@ import { rgbHexToRgba, padInt } from "#app/utils/common"; import { TextStyle, addTextObject } from "#app/ui/text"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { allMoves } from "#app/data/data-lists"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { getEggTierForSpecies } from "#app/data/egg"; import { starterColors } from "#app/global-vars/starter-colors"; import { globalScene } from "#app/global-scene"; @@ -182,7 +182,7 @@ export default class PokemonHatchInfoContainer extends PokemonInfoContainer { // will always have at least one egg move this.pokemonEggMovesContainer.setVisible(true); - if (species.speciesId === Species.MANAPHY || species.speciesId === Species.PHIONE) { + if (species.speciesId === SpeciesId.MANAPHY || species.speciesId === SpeciesId.PHIONE) { this.pokemonHatchedIcon.setFrame("manaphy"); } else { this.pokemonHatchedIcon.setFrame(getEggTierForSpecies(species)); diff --git a/src/ui/run-info-ui-handler.ts b/src/ui/run-info-ui-handler.ts index 8487533f465..c8dade8878f 100644 --- a/src/ui/run-info-ui-handler.ts +++ b/src/ui/run-info-ui-handler.ts @@ -21,7 +21,7 @@ import { getNatureStatMultiplier, getNatureName } from "../data/nature"; import { getVariantTint } from "#app/sprites/variant"; // biome-ignore lint/style/noNamespaceImport: See `src/system/game-data.ts` import * as Modifier from "#app/modifier/modifier"; -import type { Species } from "#enums/species"; +import type { SpeciesId } from "#enums/species-id"; import { PlayerGender } from "#enums/player-gender"; import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; import { getBiomeName } from "#app/data/balance/biomes"; @@ -1025,7 +1025,7 @@ export default class RunInfoUiHandler extends UiHandler { ignoreTimeTint: true, }); this.hallofFameContainer.add(pokemonSprite); - const speciesLoaded: Map = new Map(); + const speciesLoaded: Map = new Map(); speciesLoaded.set(id, false); const female = pkmn.gender === 1; diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 945ddaa6ed4..3bea0b08698 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -47,8 +47,8 @@ import { applyChallenges, ChallengeType } from "#app/data/challenge"; import MoveInfoOverlay from "#app/ui/move-info-overlay"; import { getEggTierForSpecies } from "#app/data/egg"; import { Device } from "#enums/devices"; -import type { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import type { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Button } from "#enums/buttons"; import { EggSourceType } from "#enums/egg-source-types"; import { DropDown, DropDownLabel, DropDownOption, DropDownState, DropDownType, SortCriteria } from "#app/ui/dropdown"; @@ -59,7 +59,7 @@ import { ScrollBar } from "#app/ui/scroll-bar"; import { SelectChallengePhase } from "#app/phases/select-challenge-phase"; import { EncounterPhase } from "#app/phases/encounter-phase"; import { TitlePhase } from "#app/phases/title-phase"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { getPassiveCandyCount, getValueReductionCandyCounts, @@ -162,15 +162,15 @@ const languageSettings: { [key: string]: LanguageSetting } = { starterInfoYOffset: 0.5, starterInfoXPos: 29, }, - da:{ + da: { starterInfoTextSize: "56px", instructionTextSize: "38px", }, - tr:{ + tr: { starterInfoTextSize: "56px", instructionTextSize: "38px", }, - ro:{ + ro: { starterInfoTextSize: "56px", instructionTextSize: "38px", }, @@ -356,7 +356,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { private allSpecies: PokemonSpecies[] = []; private lastSpecies: PokemonSpecies; - private speciesLoaded: Map = new Map(); + private speciesLoaded: Map = new Map(); public starterSpecies: PokemonSpecies[] = []; private pokerusSpecies: PokemonSpecies[] = []; private starterAttr: bigint[] = []; @@ -365,7 +365,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { private starterTeras: PokemonType[] = []; private starterMovesets: StarterMoveset[] = []; private speciesStarterDexEntry: DexEntry | null; - private speciesStarterMoves: Moves[]; + private speciesStarterMoves: MoveId[]; private canCycleShiny: boolean; private canCycleForm: boolean; private canCycleGender: boolean; @@ -795,7 +795,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.randomCursorObj.setOrigin(0, 0); this.starterSelectContainer.add(this.randomCursorObj); - const starterSpecies: Species[] = []; + const starterSpecies: SpeciesId[] = []; const starterBoxContainer = globalScene.add.container(speciesContainerX + 6, 9); //115 @@ -1970,7 +1970,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { ui.setModeWithoutClear(UiMode.OPTION_SELECT, { options: moveset - .map((m: Moves, i: number) => { + .map((m: MoveId, i: number) => { const option: OptionSelectItem = { label: allMoves[m].name, handler: () => { @@ -1980,7 +1980,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { `${i18next.t("starterSelectUiHandler:selectMoveSwapWith")} ${allMoves[m].name}.`, null, () => { - const possibleMoves = this.speciesStarterMoves.filter((sm: Moves) => sm !== m); + const possibleMoves = this.speciesStarterMoves.filter((sm: MoveId) => sm !== m); this.moveInfoOverlay.show(allMoves[possibleMoves[0]]); ui.setModeWithoutClear(UiMode.OPTION_SELECT, { @@ -2765,7 +2765,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.checkIconId(this.starterIcons[index], species, props.female, props.formIndex, props.shiny, props.variant); } - switchMoveHandler(i: number, newMove: Moves, move: Moves) { + switchMoveHandler(i: number, newMove: MoveId, move: MoveId) { const speciesId = this.lastSpecies.speciesId; const existingMoveIndex = this.starterMoveset?.indexOf(newMove)!; // TODO: is this bang correct? this.starterMoveset![i] = newMove; // TODO: is this bang correct? @@ -3171,7 +3171,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { // HA Filter const speciesHasHiddenAbility = container.species.abilityHidden !== container.species.ability1 && - container.species.abilityHidden !== Abilities.NONE; + container.species.abilityHidden !== AbilityId.NONE; const hasHA = starterData.abilityAttr & AbilityAttr.ABILITY_HIDDEN; const fitsHA = this.filterBar.getVals(DropDownColumn.MISC).some(misc => { if (misc.val === "HIDDEN_ABILITY" && misc.state === DropDownState.ON) { @@ -3537,7 +3537,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonPassiveLabelText.setVisible(true); this.pokemonNatureLabelText.setVisible(true); this.pokemonCaughtCountText.setText(`${this.speciesStarterDexEntry.caughtCount}`); - if (species.speciesId === Species.MANAPHY || species.speciesId === Species.PHIONE) { + if (species.speciesId === SpeciesId.MANAPHY || species.speciesId === SpeciesId.PHIONE) { this.pokemonHatchedIcon.setFrame("manaphy"); } else { this.pokemonHatchedIcon.setFrame(getEggTierForSpecies(species)); diff --git a/src/ui/target-select-ui-handler.ts b/src/ui/target-select-ui-handler.ts index 5e14e5f7771..a2f89d38970 100644 --- a/src/ui/target-select-ui-handler.ts +++ b/src/ui/target-select-ui-handler.ts @@ -4,7 +4,7 @@ import UiHandler from "./ui-handler"; import { isNullOrUndefined, fixedInt } from "#app/utils/common"; import { getMoveTargets } from "../data/moves/move"; import { Button } from "#enums/buttons"; -import type { Moves } from "#enums/moves"; +import type { MoveId } from "#enums/move-id"; import type Pokemon from "#app/field/pokemon"; import type { ModifierBar } from "#app/modifier/modifier"; import { SubstituteTag } from "#app/data/battler-tags"; @@ -14,7 +14,7 @@ export type TargetSelectCallback = (targets: BattlerIndex[]) => void; export default class TargetSelectUiHandler extends UiHandler { private fieldIndex: number; - private move: Moves; + private move: MoveId; private targetSelectCallback: TargetSelectCallback; private cursor0: number; // associated with BattlerIndex.PLAYER private cursor1: number; // associated with BattlerIndex.PLAYER_2 @@ -42,7 +42,7 @@ export default class TargetSelectUiHandler extends UiHandler { super.show(args); this.fieldIndex = args[0] as number; - this.move = args[1] as Moves; + this.move = args[1] as MoveId; this.targetSelectCallback = args[2] as TargetSelectCallback; const user = globalScene.getPlayerField()[this.fieldIndex]; diff --git a/src/ui/title-ui-handler.ts b/src/ui/title-ui-handler.ts index bed4d568481..29a354dbe01 100644 --- a/src/ui/title-ui-handler.ts +++ b/src/ui/title-ui-handler.ts @@ -8,7 +8,7 @@ import { TimedEventDisplay } from "#app/timed-event-manager"; import { version } from "../../package.json"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; import { globalScene } from "#app/global-scene"; -import type { Species } from "#enums/species"; +import type { SpeciesId } from "#enums/species-id"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { PlayerGender } from "#enums/player-gender"; import { timedEventManager } from "#app/global-event-manager"; @@ -105,7 +105,7 @@ export default class TitleUiHandler extends OptionSelectUiHandler { /** Used solely to display a random Pokémon name in a splash message. */ randomPokemon(): void { const rand = randInt(1025, 1); - const pokemon = getPokemonSpecies(rand as Species); + const pokemon = getPokemonSpecies(rand as SpeciesId); if ( this.splashMessage === "splashMessages:underratedPokemon" || this.splashMessage === "splashMessages:dontTalkAboutThePokemonIncident" || diff --git a/src/utils/common.ts b/src/utils/common.ts index 1c7ea60da16..29923d7ddd4 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -1,5 +1,5 @@ import { MoneyFormat } from "#enums/money-format"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import i18next from "i18next"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; import type { Variant } from "#app/sprites/variant"; @@ -567,8 +567,8 @@ export function isBetween(num: number, min: number, max: number): boolean { * * @param move the move for which the animation filename is needed */ -export function animationFileName(move: Moves): string { - return Moves[move].toLowerCase().replace(/\_/g, "-"); +export function animationFileName(move: MoveId): string { + return MoveId[move].toLowerCase().replace(/\_/g, "-"); } /** diff --git a/test/abilities/ability_duplication.test.ts b/test/abilities/ability_duplication.test.ts index de429045bb8..d392b7043e4 100644 --- a/test/abilities/ability_duplication.test.ts +++ b/test/abilities/ability_duplication.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#app/enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; @@ -23,17 +23,17 @@ describe("Ability Duplication", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) + .moveset([MoveId.SPLASH]) .battleStyle("single") - .ability(Abilities.HUGE_POWER) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .ability(AbilityId.HUGE_POWER) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("huge power should only be applied once if both normal and passive", async () => { - game.override.passiveAbility(Abilities.HUGE_POWER); + game.override.passiveAbility(AbilityId.HUGE_POWER); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const [magikarp] = game.scene.getPlayerField(); const magikarpAttack = magikarp.getEffectiveStat(Stat.ATK); @@ -44,9 +44,9 @@ describe("Ability Duplication", () => { }); it("huge power should stack with pure power", async () => { - game.override.passiveAbility(Abilities.PURE_POWER); + game.override.passiveAbility(AbilityId.PURE_POWER); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const [magikarp] = game.scene.getPlayerField(); const magikarpAttack = magikarp.getEffectiveStat(Stat.ATK); diff --git a/test/abilities/ability_timing.test.ts b/test/abilities/ability_timing.test.ts index 6128a3e6196..2ba1e821f8a 100644 --- a/test/abilities/ability_timing.test.ts +++ b/test/abilities/ability_timing.test.ts @@ -3,8 +3,8 @@ import { CommandPhase } from "#app/phases/command-phase"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; import i18next from "#app/plugins/i18n"; import { UiMode } from "#enums/ui-mode"; -import { Abilities } from "#enums/abilities"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -28,15 +28,15 @@ describe("Ability Timing", () => { game.override .battleStyle("single") - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.INTIMIDATE) - .ability(Abilities.BALL_FETCH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.INTIMIDATE) + .ability(AbilityId.BALL_FETCH); vi.spyOn(i18next, "t"); }); it("should trigger after switch check", async () => { game.settings.battleStyle = BattleStyle.SWITCH; - await game.classicMode.runToSummon([Species.EEVEE, Species.FEEBAS]); + await game.classicMode.runToSummon([SpeciesId.EEVEE, SpeciesId.FEEBAS]); game.onNextPrompt( "CheckSwitchPhase", diff --git a/test/abilities/analytic.test.ts b/test/abilities/analytic.test.ts index 108c712da00..bf6ef72c3f1 100644 --- a/test/abilities/analytic.test.ts +++ b/test/abilities/analytic.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { isBetween, toDmgValue } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,29 +24,29 @@ describe("Abilities - Analytic", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.TACKLE]) - .ability(Abilities.ANALYTIC) + .moveset([MoveId.SPLASH, MoveId.TACKLE]) + .ability(AbilityId.ANALYTIC) .battleStyle("single") .disableCrits() .startingLevel(200) .enemyLevel(200) - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should increase damage if the user moves last", async () => { - await game.classicMode.startBattle([Species.ARCEUS]); + await game.classicMode.startBattle([SpeciesId.ARCEUS]); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); const damage1 = enemy.getInverseHp(); enemy.hp = enemy.getMaxHp(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); expect(isBetween(enemy.getInverseHp(), toDmgValue(damage1 * 1.3) - 3, toDmgValue(damage1 * 1.3) + 3)).toBe(true); @@ -54,26 +54,26 @@ describe("Abilities - Analytic", () => { it("should increase damage only if the user moves last in doubles", async () => { game.override.battleStyle("double"); - await game.classicMode.startBattle([Species.GENGAR, Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.GENGAR, SpeciesId.SHUCKLE]); const [enemy] = game.scene.getEnemyField(); - game.move.select(Moves.TACKLE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.TACKLE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.toNextTurn(); const damage1 = enemy.getInverseHp(); enemy.hp = enemy.getMaxHp(); - game.move.select(Moves.TACKLE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.TACKLE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER]); await game.toNextTurn(); expect(isBetween(enemy.getInverseHp(), toDmgValue(damage1 * 1.3) - 3, toDmgValue(damage1 * 1.3) + 3)).toBe(true); enemy.hp = enemy.getMaxHp(); - game.move.select(Moves.TACKLE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.TACKLE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); expect(enemy.getInverseHp()).toBe(damage1); diff --git a/test/abilities/arena_trap.test.ts b/test/abilities/arena_trap.test.ts index f37b8a2859f..cc6888be102 100644 --- a/test/abilities/arena_trap.test.ts +++ b/test/abilities/arena_trap.test.ts @@ -1,7 +1,7 @@ import { allAbilities } from "#app/data/data-lists"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; @@ -23,11 +23,11 @@ describe("Abilities - Arena Trap", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Moves.SPLASH) - .ability(Abilities.ARENA_TRAP) - .enemySpecies(Species.RALTS) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.TELEPORT); + .moveset(MoveId.SPLASH) + .ability(AbilityId.ARENA_TRAP) + .enemySpecies(SpeciesId.RALTS) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.TELEPORT); }); // TODO: Enable test when Issue #935 is addressed @@ -38,7 +38,7 @@ describe("Abilities - Arena Trap", () => { const enemy = game.scene.getEnemyPokemon(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); @@ -54,32 +54,32 @@ describe("Abilities - Arena Trap", () => { }); /** - * This checks if the Player Pokemon is able to switch out/run away after the Enemy Pokemon with {@linkcode Abilities.ARENA_TRAP} - * is forcefully moved out of the field from moves such as Roar {@linkcode Moves.ROAR} + * This checks if the Player Pokemon is able to switch out/run away after the Enemy Pokemon with {@linkcode AbilityId.ARENA_TRAP} + * is forcefully moved out of the field from moves such as Roar {@linkcode MoveId.ROAR} * * Note: It should be able to switch out/run away */ it("should lift if pokemon with this ability leaves the field", async () => { game.override .battleStyle("double") - .enemyMoveset(Moves.SPLASH) - .moveset([Moves.ROAR, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH); - await game.classicMode.startBattle([Species.MAGIKARP, Species.SUDOWOODO, Species.LUNATONE]); + .enemyMoveset(MoveId.SPLASH) + .moveset([MoveId.ROAR, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.SUDOWOODO, SpeciesId.LUNATONE]); const [enemy1, enemy2] = game.scene.getEnemyField(); const [player1, player2] = game.scene.getPlayerField(); - vi.spyOn(enemy1, "getAbility").mockReturnValue(allAbilities[Abilities.ARENA_TRAP]); + vi.spyOn(enemy1, "getAbility").mockReturnValue(allAbilities[AbilityId.ARENA_TRAP]); - game.move.select(Moves.ROAR); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.ROAR); + game.move.select(MoveId.SPLASH, 1); // This runs the fist command phase where the moves are selected await game.toNextTurn(); // During the next command phase the player pokemons should not be trapped anymore - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(player1.isTrapped()).toBe(false); diff --git a/test/abilities/aroma_veil.test.ts b/test/abilities/aroma_veil.test.ts index aeec33eccf7..00baa6b6268 100644 --- a/test/abilities/aroma_veil.test.ts +++ b/test/abilities/aroma_veil.test.ts @@ -1,6 +1,6 @@ -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -26,21 +26,21 @@ describe("Moves - Aroma Veil", () => { game = new GameManager(phaserGame); game.override .battleStyle("double") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.HEAL_BLOCK, Moves.IMPRISON, Moves.SPLASH]) - .enemySpecies(Species.SHUCKLE) - .ability(Abilities.AROMA_VEIL) - .moveset([Moves.GROWL]); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.HEAL_BLOCK, MoveId.IMPRISON, MoveId.SPLASH]) + .enemySpecies(SpeciesId.SHUCKLE) + .ability(AbilityId.AROMA_VEIL) + .moveset([MoveId.GROWL]); }); it("Aroma Veil protects the Pokemon's side against most Move Restriction Battler Tags", async () => { - await game.classicMode.startBattle([Species.REGIELEKI, Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI, SpeciesId.BULBASAUR]); const party = game.scene.getPlayerParty()! as PlayerPokemon[]; - game.move.select(Moves.GROWL); - game.move.select(Moves.GROWL); - await game.move.selectEnemyMove(Moves.HEAL_BLOCK); + game.move.select(MoveId.GROWL); + game.move.select(MoveId.GROWL); + await game.move.selectEnemyMove(MoveId.HEAL_BLOCK); await game.toNextTurn(); party.forEach(p => { expect(p.getTag(BattlerTagType.HEAL_BLOCK)).toBeUndefined(); @@ -48,14 +48,14 @@ describe("Moves - Aroma Veil", () => { }); it("Aroma Veil does not protect against Imprison", async () => { - await game.classicMode.startBattle([Species.REGIELEKI, Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI, SpeciesId.BULBASAUR]); const party = game.scene.getPlayerParty()! as PlayerPokemon[]; - game.move.select(Moves.GROWL); - game.move.select(Moves.GROWL, 1); - await game.move.selectEnemyMove(Moves.IMPRISON, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.GROWL); + game.move.select(MoveId.GROWL, 1); + await game.move.selectEnemyMove(MoveId.IMPRISON, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); expect(game.scene.arena.getTag(ArenaTagType.IMPRISON)).toBeDefined(); party.forEach(p => { diff --git a/test/abilities/aura_break.test.ts b/test/abilities/aura_break.test.ts index 5b2211d7b3c..657d363bd97 100644 --- a/test/abilities/aura_break.test.ts +++ b/test/abilities/aura_break.test.ts @@ -1,7 +1,7 @@ import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -26,49 +26,49 @@ describe("Abilities - Aura Break", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .moveset([Moves.MOONBLAST, Moves.DARK_PULSE]) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.AURA_BREAK) - .enemySpecies(Species.SHUCKLE); + .moveset([MoveId.MOONBLAST, MoveId.DARK_PULSE]) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.AURA_BREAK) + .enemySpecies(SpeciesId.SHUCKLE); }); it("reverses the effect of Fairy Aura", async () => { - const moveToCheck = allMoves[Moves.MOONBLAST]; + const moveToCheck = allMoves[MoveId.MOONBLAST]; const basePower = moveToCheck.power; - game.override.ability(Abilities.FAIRY_AURA); + game.override.ability(AbilityId.FAIRY_AURA); vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.classicMode.startBattle([Species.PIKACHU]); - game.move.select(Moves.MOONBLAST); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); + game.move.select(MoveId.MOONBLAST); await game.phaseInterceptor.to("MoveEffectPhase"); expect(moveToCheck.calculateBattlePower).toHaveReturnedWith(expect.closeTo(basePower * auraBreakMultiplier)); }); it("reverses the effect of Dark Aura", async () => { - const moveToCheck = allMoves[Moves.DARK_PULSE]; + const moveToCheck = allMoves[MoveId.DARK_PULSE]; const basePower = moveToCheck.power; - game.override.ability(Abilities.DARK_AURA); + game.override.ability(AbilityId.DARK_AURA); vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.classicMode.startBattle([Species.PIKACHU]); - game.move.select(Moves.DARK_PULSE); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); + game.move.select(MoveId.DARK_PULSE); await game.phaseInterceptor.to("MoveEffectPhase"); expect(moveToCheck.calculateBattlePower).toHaveReturnedWith(expect.closeTo(basePower * auraBreakMultiplier)); }); it("has no effect if neither Fairy Aura nor Dark Aura are present", async () => { - const moveToCheck = allMoves[Moves.MOONBLAST]; + const moveToCheck = allMoves[MoveId.MOONBLAST]; const basePower = moveToCheck.power; - game.override.ability(Abilities.BALL_FETCH); + game.override.ability(AbilityId.BALL_FETCH); vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.classicMode.startBattle([Species.PIKACHU]); - game.move.select(Moves.MOONBLAST); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); + game.move.select(MoveId.MOONBLAST); await game.phaseInterceptor.to("MoveEffectPhase"); expect(moveToCheck.calculateBattlePower).toHaveReturnedWith(basePower); diff --git a/test/abilities/battery.test.ts b/test/abilities/battery.test.ts index 123889c24af..980eaa5b381 100644 --- a/test/abilities/battery.test.ts +++ b/test/abilities/battery.test.ts @@ -1,9 +1,9 @@ import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -27,52 +27,52 @@ describe("Abilities - Battery", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("double"); - game.override.enemySpecies(Species.SHUCKLE); - game.override.enemyAbility(Abilities.BALL_FETCH); - game.override.moveset([Moves.TACKLE, Moves.BREAKING_SWIPE, Moves.SPLASH, Moves.DAZZLING_GLEAM]); - game.override.enemyMoveset(Moves.SPLASH); + game.override.enemySpecies(SpeciesId.SHUCKLE); + game.override.enemyAbility(AbilityId.BALL_FETCH); + game.override.moveset([MoveId.TACKLE, MoveId.BREAKING_SWIPE, MoveId.SPLASH, MoveId.DAZZLING_GLEAM]); + game.override.enemyMoveset(MoveId.SPLASH); }); it("raises the power of allies' special moves by 30%", async () => { - const moveToCheck = allMoves[Moves.DAZZLING_GLEAM]; + const moveToCheck = allMoves[MoveId.DAZZLING_GLEAM]; const basePower = moveToCheck.power; vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.classicMode.startBattle([Species.PIKACHU, Species.CHARJABUG]); + await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.CHARJABUG]); - game.move.select(Moves.DAZZLING_GLEAM); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.DAZZLING_GLEAM); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(MoveEffectPhase); expect(moveToCheck.calculateBattlePower).toHaveReturnedWith(basePower * batteryMultiplier); }); it("does not raise the power of allies' non-special moves", async () => { - const moveToCheck = allMoves[Moves.BREAKING_SWIPE]; + const moveToCheck = allMoves[MoveId.BREAKING_SWIPE]; const basePower = moveToCheck.power; vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.classicMode.startBattle([Species.PIKACHU, Species.CHARJABUG]); + await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.CHARJABUG]); - game.move.select(Moves.BREAKING_SWIPE); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.BREAKING_SWIPE); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(MoveEffectPhase); expect(moveToCheck.calculateBattlePower).toHaveReturnedWith(basePower); }); it("does not raise the power of the ability owner's special moves", async () => { - const moveToCheck = allMoves[Moves.DAZZLING_GLEAM]; + const moveToCheck = allMoves[MoveId.DAZZLING_GLEAM]; const basePower = moveToCheck.power; vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.classicMode.startBattle([Species.CHARJABUG, Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.CHARJABUG, SpeciesId.PIKACHU]); - game.move.select(Moves.DAZZLING_GLEAM); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.DAZZLING_GLEAM); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); expect(moveToCheck.calculateBattlePower).toHaveReturnedWith(basePower); diff --git a/test/abilities/battle_bond.test.ts b/test/abilities/battle_bond.test.ts index d9f7b0bd0dc..b4ce73d107b 100644 --- a/test/abilities/battle_bond.test.ts +++ b/test/abilities/battle_bond.test.ts @@ -2,9 +2,9 @@ import { MultiHitAttr } from "#app/data/moves/move"; import { allMoves } from "#app/data/data-lists"; import { MultiHitType } from "#enums/MultiHitType"; import { Status } from "#app/data/status-effect"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -31,17 +31,17 @@ describe("Abilities - BATTLE BOND", () => { game.override .battleStyle("single") .startingWave(4) // Leads to arena reset on Wave 5 trainer battle - .ability(Abilities.BATTLE_BOND) - .starterForms({ [Species.GRENINJA]: ashForm }) - .moveset([Moves.SPLASH, Moves.WATER_SHURIKEN]) - .enemySpecies(Species.BULBASAUR) - .enemyMoveset(Moves.SPLASH) + .ability(AbilityId.BATTLE_BOND) + .starterForms({ [SpeciesId.GRENINJA]: ashForm }) + .moveset([MoveId.SPLASH, MoveId.WATER_SHURIKEN]) + .enemySpecies(SpeciesId.BULBASAUR) + .enemyMoveset(MoveId.SPLASH) .startingLevel(100) // Avoid levelling up .enemyLevel(1000); // Avoid opponent dying before `doKillOpponents()` }); it("check if fainted pokemon switches to base form on arena reset", async () => { - await game.classicMode.startBattle([Species.MAGIKARP, Species.GRENINJA]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.GRENINJA]); const greninja = game.scene.getPlayerParty()[1]; expect(greninja.formIndex).toBe(ashForm); @@ -50,7 +50,7 @@ describe("Abilities - BATTLE BOND", () => { greninja.status = new Status(StatusEffect.FAINT); expect(greninja.isFainted()).toBe(true); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to("TurnEndPhase"); game.doSelectModifier(); @@ -60,9 +60,9 @@ describe("Abilities - BATTLE BOND", () => { }); it("should not keep buffing Water Shuriken after Greninja switches to base form", async () => { - await game.classicMode.startBattle([Species.GRENINJA]); + await game.classicMode.startBattle([SpeciesId.GRENINJA]); - const waterShuriken = allMoves[Moves.WATER_SHURIKEN]; + const waterShuriken = allMoves[MoveId.WATER_SHURIKEN]; vi.spyOn(waterShuriken, "calculateBattlePower"); let actualMultiHitType: MultiHitType | null = null; @@ -76,7 +76,7 @@ describe("Abilities - BATTLE BOND", () => { let expectedBattlePower = 20; let expectedMultiHitType = MultiHitType._3; - game.move.select(Moves.WATER_SHURIKEN); + game.move.select(MoveId.WATER_SHURIKEN); await game.phaseInterceptor.to("BerryPhase", false); expect(waterShuriken.calculateBattlePower).toHaveLastReturnedWith(expectedBattlePower); expect(actualMultiHitType).toBe(expectedMultiHitType); @@ -88,7 +88,7 @@ describe("Abilities - BATTLE BOND", () => { expectedBattlePower = 15; expectedMultiHitType = MultiHitType._2_TO_5; - game.move.select(Moves.WATER_SHURIKEN); + game.move.select(MoveId.WATER_SHURIKEN); await game.phaseInterceptor.to("BerryPhase", false); expect(waterShuriken.calculateBattlePower).toHaveLastReturnedWith(expectedBattlePower); expect(actualMultiHitType).toBe(expectedMultiHitType); diff --git a/test/abilities/beast_boost.test.ts b/test/abilities/beast_boost.test.ts index a6b6ec0aacf..17ba4020961 100644 --- a/test/abilities/beast_boost.test.ts +++ b/test/abilities/beast_boost.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -25,16 +25,16 @@ describe("Abilities - Beast Boost", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.BULBASAUR) - .enemyAbility(Abilities.BEAST_BOOST) - .ability(Abilities.BEAST_BOOST) + .enemySpecies(SpeciesId.BULBASAUR) + .enemyAbility(AbilityId.BEAST_BOOST) + .ability(AbilityId.BEAST_BOOST) .startingLevel(2000) - .moveset([Moves.FLAMETHROWER]) - .enemyMoveset(Moves.SPLASH); + .moveset([MoveId.FLAMETHROWER]) + .enemyMoveset(MoveId.SPLASH); }); it("should prefer highest stat to boost its corresponding stat stage by 1 when winning a battle", async () => { - await game.classicMode.startBattle([Species.SLOWBRO]); + await game.classicMode.startBattle([SpeciesId.SLOWBRO]); const playerPokemon = game.scene.getPlayerPokemon()!; // Set the pokemon's highest stat to DEF, so it should be picked by Beast Boost @@ -43,16 +43,16 @@ describe("Abilities - Beast Boost", () => { expect(playerPokemon.getStatStage(Stat.DEF)).toBe(0); - game.move.select(Moves.FLAMETHROWER); + game.move.select(MoveId.FLAMETHROWER); await game.phaseInterceptor.to("VictoryPhase"); expect(playerPokemon.getStatStage(Stat.DEF)).toBe(1); }, 20000); it("should use in-battle overriden stats when determining the stat stage to raise by 1", async () => { - game.override.enemyMoveset([Moves.GUARD_SPLIT]); + game.override.enemyMoveset([MoveId.GUARD_SPLIT]); - await game.classicMode.startBattle([Species.SLOWBRO]); + await game.classicMode.startBattle([SpeciesId.SLOWBRO]); const playerPokemon = game.scene.getPlayerPokemon()!; // If the opponent uses Guard Split, the pokemon's second highest stat (SPATK) should be chosen @@ -60,7 +60,7 @@ describe("Abilities - Beast Boost", () => { expect(playerPokemon.getStatStage(Stat.SPATK)).toBe(0); - game.move.select(Moves.FLAMETHROWER); + game.move.select(MoveId.FLAMETHROWER); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("VictoryPhase"); @@ -70,7 +70,7 @@ describe("Abilities - Beast Boost", () => { it("should have order preference in case of stat ties", async () => { // Order preference follows the order of EFFECTIVE_STAT - await game.classicMode.startBattle([Species.SLOWBRO]); + await game.classicMode.startBattle([SpeciesId.SLOWBRO]); const playerPokemon = game.scene.getPlayerPokemon()!; @@ -79,7 +79,7 @@ describe("Abilities - Beast Boost", () => { expect(playerPokemon.getStatStage(Stat.SPATK)).toBe(0); - game.move.select(Moves.FLAMETHROWER); + game.move.select(MoveId.FLAMETHROWER); await game.phaseInterceptor.to("VictoryPhase"); diff --git a/test/abilities/commander.test.ts b/test/abilities/commander.test.ts index 0fddb8e9bf6..bb2670ec2f0 100644 --- a/test/abilities/commander.test.ts +++ b/test/abilities/commander.test.ts @@ -6,9 +6,9 @@ import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -32,19 +32,19 @@ describe("Abilities - Commander", () => { game.override .startingLevel(100) .enemyLevel(100) - .moveset([Moves.LIQUIDATION, Moves.MEMENTO, Moves.SPLASH, Moves.FLIP_TURN]) - .ability(Abilities.COMMANDER) + .moveset([MoveId.LIQUIDATION, MoveId.MEMENTO, MoveId.SPLASH, MoveId.FLIP_TURN]) + .ability(AbilityId.COMMANDER) .battleStyle("double") .disableCrits() - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.TACKLE); + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.TACKLE); vi.spyOn(game.scene, "triggerPokemonBattleAnim").mockReturnValue(true); }); it("causes the source to jump into Dondozo's mouth, granting a stat boost and hiding the source", async () => { - await game.classicMode.startBattle([Species.TATSUGIRI, Species.DONDOZO]); + await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]); const [tatsugiri, dondozo] = game.scene.getPlayerField(); @@ -54,13 +54,13 @@ describe("Abilities - Commander", () => { expect(dondozo.getTag(BattlerTagType.COMMANDED)).toBeDefined(); affectedStats.forEach(stat => expect(dondozo.getStatStage(stat)).toBe(2)); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); // Force both enemies to target the Tatsugiri - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER); await game.phaseInterceptor.to("BerryPhase", false); game.scene.getEnemyField().forEach(enemy => expect(enemy.getLastXMoves(1)[0].result).toBe(MoveResult.MISS)); @@ -68,13 +68,13 @@ describe("Abilities - Commander", () => { }); it("should activate when a Dondozo switches in and cancel the source's move", async () => { - game.override.enemyMoveset(Moves.SPLASH); + game.override.enemyMoveset(MoveId.SPLASH); - await game.classicMode.startBattle([Species.TATSUGIRI, Species.MAGIKARP, Species.DONDOZO]); + await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.MAGIKARP, SpeciesId.DONDOZO]); const tatsugiri = game.scene.getPlayerField()[0]; - game.move.select(Moves.LIQUIDATION, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.LIQUIDATION, 0, BattlerIndex.ENEMY); game.doSwitchPokemon(2); await game.phaseInterceptor.to("MovePhase", false); @@ -89,19 +89,19 @@ describe("Abilities - Commander", () => { }); it("source should reenter the field when Dondozo faints", async () => { - await game.classicMode.startBattle([Species.TATSUGIRI, Species.DONDOZO]); + await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]); const [tatsugiri, dondozo] = game.scene.getPlayerField(); expect(game.scene.triggerPokemonBattleAnim).toHaveBeenLastCalledWith(tatsugiri, PokemonAnimType.COMMANDER_APPLY); expect(dondozo.getTag(BattlerTagType.COMMANDED)).toBeDefined(); - game.move.select(Moves.MEMENTO, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.MEMENTO, 1, BattlerIndex.ENEMY); expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER]); @@ -114,16 +114,16 @@ describe("Abilities - Commander", () => { }); it("source should still take damage from Poison while hidden", async () => { - game.override.statusEffect(StatusEffect.POISON).enemyMoveset(Moves.SPLASH); + game.override.statusEffect(StatusEffect.POISON).enemyMoveset(MoveId.SPLASH); - await game.classicMode.startBattle([Species.TATSUGIRI, Species.DONDOZO]); + await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]); const [tatsugiri, dondozo] = game.scene.getPlayerField(); expect(game.scene.triggerPokemonBattleAnim).toHaveBeenLastCalledWith(tatsugiri, PokemonAnimType.COMMANDER_APPLY); expect(dondozo.getTag(BattlerTagType.COMMANDED)).toBeDefined(); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); @@ -132,18 +132,18 @@ describe("Abilities - Commander", () => { }); it("source should still take damage from Salt Cure while hidden", async () => { - game.override.enemyMoveset(Moves.SPLASH); + game.override.enemyMoveset(MoveId.SPLASH); - await game.classicMode.startBattle([Species.TATSUGIRI, Species.DONDOZO]); + await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]); const [tatsugiri, dondozo] = game.scene.getPlayerField(); expect(game.scene.triggerPokemonBattleAnim).toHaveBeenLastCalledWith(tatsugiri, PokemonAnimType.COMMANDER_APPLY); expect(dondozo.getTag(BattlerTagType.COMMANDED)).toBeDefined(); - tatsugiri.addTag(BattlerTagType.SALT_CURED, 0, Moves.NONE, game.scene.getField()[BattlerIndex.ENEMY].id); + tatsugiri.addTag(BattlerTagType.SALT_CURED, 0, MoveId.NONE, game.scene.getField()[BattlerIndex.ENEMY].id); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); @@ -152,16 +152,16 @@ describe("Abilities - Commander", () => { }); it("source should still take damage from Sandstorm while hidden", async () => { - game.override.weather(WeatherType.SANDSTORM).enemyMoveset(Moves.SPLASH); + game.override.weather(WeatherType.SANDSTORM).enemyMoveset(MoveId.SPLASH); - await game.classicMode.startBattle([Species.TATSUGIRI, Species.DONDOZO]); + await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]); const [tatsugiri, dondozo] = game.scene.getPlayerField(); expect(game.scene.triggerPokemonBattleAnim).toHaveBeenLastCalledWith(tatsugiri, PokemonAnimType.COMMANDER_APPLY); expect(dondozo.getTag(BattlerTagType.COMMANDED)).toBeDefined(); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); @@ -170,21 +170,21 @@ describe("Abilities - Commander", () => { }); it("should make Dondozo immune to being forced out", async () => { - game.override.enemyMoveset([Moves.SPLASH, Moves.WHIRLWIND]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.WHIRLWIND]); - await game.classicMode.startBattle([Species.TATSUGIRI, Species.DONDOZO]); + await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]); const [tatsugiri, dondozo] = game.scene.getPlayerField(); expect(game.scene.triggerPokemonBattleAnim).toHaveBeenLastCalledWith(tatsugiri, PokemonAnimType.COMMANDER_APPLY); expect(dondozo.getTag(BattlerTagType.COMMANDED)).toBeDefined(); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); - await game.move.selectEnemyMove(Moves.WHIRLWIND, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.WHIRLWIND, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.SPLASH); // Test may time out here if Whirlwind forced out a Pokemon await game.phaseInterceptor.to("TurnEndPhase"); @@ -192,14 +192,14 @@ describe("Abilities - Commander", () => { }); it("should interrupt the source's semi-invulnerability", async () => { - game.override.moveset([Moves.SPLASH, Moves.DIVE]).enemyMoveset(Moves.SPLASH); + game.override.moveset([MoveId.SPLASH, MoveId.DIVE]).enemyMoveset(MoveId.SPLASH); - await game.classicMode.startBattle([Species.TATSUGIRI, Species.MAGIKARP, Species.DONDOZO]); + await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.MAGIKARP, SpeciesId.DONDOZO]); const tatsugiri = game.scene.getPlayerField()[0]; - game.move.select(Moves.DIVE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.DIVE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("CommandPhase"); await game.toNextTurn(); diff --git a/test/abilities/competitive.test.ts b/test/abilities/competitive.test.ts index 1e0b5fcf40e..f12b06837dc 100644 --- a/test/abilities/competitive.test.ts +++ b/test/abilities/competitive.test.ts @@ -1,8 +1,8 @@ import { Stat } from "#enums/stat"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -26,18 +26,18 @@ describe("Abilities - Competitive", () => { game.override .battleStyle("single") - .enemySpecies(Species.BEEDRILL) - .enemyMoveset(Moves.TICKLE) + .enemySpecies(SpeciesId.BEEDRILL) + .enemyMoveset(MoveId.TICKLE) .startingLevel(1) - .moveset([Moves.SPLASH, Moves.CLOSE_COMBAT]) - .ability(Abilities.COMPETITIVE); + .moveset([MoveId.SPLASH, MoveId.CLOSE_COMBAT]) + .ability(AbilityId.COMPETITIVE); }); it("lower atk and def by 1 via tickle, then increase spatk by 4 via competitive", async () => { - await game.classicMode.startBattle([Species.FLYGON]); + await game.classicMode.startBattle([SpeciesId.FLYGON]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnInitPhase); expect(playerPokemon.getStatStage(Stat.ATK)).toBe(-1); @@ -46,11 +46,11 @@ describe("Abilities - Competitive", () => { }); it("lowering your own stats should not trigger competitive", async () => { - game.override.enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.FLYGON]); + game.override.enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.FLYGON]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.CLOSE_COMBAT); + game.move.select(MoveId.CLOSE_COMBAT); await game.phaseInterceptor.to(TurnInitPhase); expect(playerPokemon.getStatStage(Stat.SPDEF)).toBe(-1); @@ -60,10 +60,10 @@ describe("Abilities - Competitive", () => { it("white herb should remove only the negative effects", async () => { game.override.startingHeldItems([{ name: "WHITE_HERB" }]); - await game.classicMode.startBattle([Species.FLYGON]); + await game.classicMode.startBattle([SpeciesId.FLYGON]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnInitPhase); expect(playerPokemon.getStatStage(Stat.ATK)).toBe(0); diff --git a/test/abilities/contrary.test.ts b/test/abilities/contrary.test.ts index 99c5208f561..0e47862f3e8 100644 --- a/test/abilities/contrary.test.ts +++ b/test/abilities/contrary.test.ts @@ -1,6 +1,6 @@ -import { Moves } from "#app/enums/moves"; -import { Abilities } from "#enums/abilities"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { AbilityId } from "#enums/ability-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -24,14 +24,14 @@ describe("Abilities - Contrary", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.BULBASAUR) - .enemyAbility(Abilities.CONTRARY) - .ability(Abilities.INTIMIDATE) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.BULBASAUR) + .enemyAbility(AbilityId.CONTRARY) + .ability(AbilityId.INTIMIDATE) + .enemyMoveset(MoveId.SPLASH); }); it("should invert stat changes when applied", async () => { - await game.classicMode.startBattle([Species.SLOWBRO]); + await game.classicMode.startBattle([SpeciesId.SLOWBRO]); const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -40,28 +40,28 @@ describe("Abilities - Contrary", () => { describe("With Clear Body", () => { it("should apply positive effects", async () => { - game.override.enemyPassiveAbility(Abilities.CLEAR_BODY).moveset([Moves.TAIL_WHIP]); - await game.classicMode.startBattle([Species.SLOWBRO]); + game.override.enemyPassiveAbility(AbilityId.CLEAR_BODY).moveset([MoveId.TAIL_WHIP]); + await game.classicMode.startBattle([SpeciesId.SLOWBRO]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(1); - game.move.select(Moves.TAIL_WHIP); + game.move.select(MoveId.TAIL_WHIP); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(1); }); it("should block negative effects", async () => { - game.override.enemyPassiveAbility(Abilities.CLEAR_BODY).enemyMoveset(Moves.HOWL).moveset([Moves.SPLASH]); - await game.classicMode.startBattle([Species.SLOWBRO]); + game.override.enemyPassiveAbility(AbilityId.CLEAR_BODY).enemyMoveset(MoveId.HOWL).moveset([MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.SLOWBRO]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(1); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(1); diff --git a/test/abilities/corrosion.test.ts b/test/abilities/corrosion.test.ts index c72aef9f0a3..81b04ef340c 100644 --- a/test/abilities/corrosion.test.ts +++ b/test/abilities/corrosion.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -22,23 +22,23 @@ describe("Abilities - Corrosion", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) + .moveset([MoveId.SPLASH]) .battleStyle("single") .disableCrits() - .enemySpecies(Species.GRIMER) - .enemyAbility(Abilities.CORROSION) - .enemyMoveset(Moves.TOXIC); + .enemySpecies(SpeciesId.GRIMER) + .enemyAbility(AbilityId.CORROSION) + .enemyMoveset(MoveId.TOXIC); }); it("If a Poison- or Steel-type Pokémon with this Ability poisons a target with Synchronize, Synchronize does not gain the ability to poison Poison- or Steel-type Pokémon.", async () => { - game.override.ability(Abilities.SYNCHRONIZE); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.ability(AbilityId.SYNCHRONIZE); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const playerPokemon = game.scene.getPlayerPokemon(); const enemyPokemon = game.scene.getEnemyPokemon(); expect(playerPokemon!.status).toBeUndefined(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(playerPokemon!.status).toBeDefined(); expect(enemyPokemon!.status).toBeUndefined(); diff --git a/test/abilities/costar.test.ts b/test/abilities/costar.test.ts index 02d607c2e9f..ae09aeea096 100644 --- a/test/abilities/costar.test.ts +++ b/test/abilities/costar.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#enums/stat"; -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { CommandPhase } from "#app/phases/command-phase"; import { MessagePhase } from "#app/phases/message-phase"; import GameManager from "#test/testUtils/gameManager"; @@ -25,27 +25,27 @@ describe("Abilities - COSTAR", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("double"); - game.override.ability(Abilities.COSTAR); - game.override.moveset([Moves.SPLASH, Moves.NASTY_PLOT]); - game.override.enemyMoveset(Moves.SPLASH); + game.override.ability(AbilityId.COSTAR); + game.override.moveset([MoveId.SPLASH, MoveId.NASTY_PLOT]); + game.override.enemyMoveset(MoveId.SPLASH); }); test("ability copies positive stat stages", async () => { - game.override.enemyAbility(Abilities.BALL_FETCH); + game.override.enemyAbility(AbilityId.BALL_FETCH); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP, Species.FLAMIGO]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP, SpeciesId.FLAMIGO]); let [leftPokemon, rightPokemon] = game.scene.getPlayerField(); - game.move.select(Moves.NASTY_PLOT); + game.move.select(MoveId.NASTY_PLOT); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(leftPokemon.getStatStage(Stat.SPATK)).toBe(2); expect(rightPokemon.getStatStage(Stat.SPATK)).toBe(0); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(CommandPhase); game.doSwitchPokemon(2); await game.phaseInterceptor.to(MessagePhase); @@ -56,16 +56,16 @@ describe("Abilities - COSTAR", () => { }); test("ability copies negative stat stages", async () => { - game.override.enemyAbility(Abilities.INTIMIDATE); + game.override.enemyAbility(AbilityId.INTIMIDATE); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP, Species.FLAMIGO]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP, SpeciesId.FLAMIGO]); let [leftPokemon, rightPokemon] = game.scene.getPlayerField(); expect(leftPokemon.getStatStage(Stat.ATK)).toBe(-2); expect(leftPokemon.getStatStage(Stat.ATK)).toBe(-2); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(CommandPhase); game.doSwitchPokemon(2); await game.phaseInterceptor.to(MessagePhase); diff --git a/test/abilities/cud_chew.test.ts b/test/abilities/cud_chew.test.ts index 60205b62b70..3c918f01330 100644 --- a/test/abilities/cud_chew.test.ts +++ b/test/abilities/cud_chew.test.ts @@ -2,10 +2,10 @@ import { RepeatBerryNextTurnAbAttr } from "#app/data/abilities/ability"; import Pokemon from "#app/field/pokemon"; import { globalScene } from "#app/global-scene"; import { getPokemonNameWithAffix } from "#app/messages"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BerryType } from "#enums/berry-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import i18next from "i18next"; @@ -29,24 +29,24 @@ describe("Abilities - Cud Chew", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.BUG_BITE, Moves.SPLASH, Moves.HYPER_VOICE, Moves.STUFF_CHEEKS]) + .moveset([MoveId.BUG_BITE, MoveId.SPLASH, MoveId.HYPER_VOICE, MoveId.STUFF_CHEEKS]) .startingHeldItems([{ name: "BERRY", type: BerryType.SITRUS, count: 1 }]) - .ability(Abilities.CUD_CHEW) + .ability(AbilityId.CUD_CHEW) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); describe("tracks berries eaten", () => { it("stores inside summonData at end of turn", async () => { - await game.classicMode.startBattle([Species.FARIGIRAF]); + await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); const farigiraf = game.scene.getPlayerPokemon()!; farigiraf.hp = 1; // needed to allow sitrus procs - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); // berries tracked in turnData; not moved to battleData yet @@ -68,15 +68,15 @@ describe("Abilities - Cud Chew", () => { it("shows ability popup for eating berry, even if berry is useless", async () => { const abDisplaySpy = vi.spyOn(globalScene, "queueAbilityDisplay"); - game.override.enemyMoveset([Moves.SPLASH, Moves.HEAL_PULSE]); - await game.classicMode.startBattle([Species.FARIGIRAF]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.HEAL_PULSE]); + await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); const farigiraf = game.scene.getPlayerPokemon()!; // Dip below half to eat berry farigiraf.hp = farigiraf.getMaxHp() / 2 - 1; - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); // doesn't trigger since cud chew hasn't eaten berry yet @@ -85,8 +85,8 @@ describe("Abilities - Cud Chew", () => { await game.toNextTurn(); // get heal pulsed back to full before the cud chew proc - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.HEAL_PULSE); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.HEAL_PULSE); await game.phaseInterceptor.to("TurnEndPhase"); // globalScene.queueAbilityDisplay should be called twice: @@ -117,13 +117,13 @@ describe("Abilities - Cud Chew", () => { { name: "BERRY", type: BerryType.PETAYA, count: 3 }, { name: "BERRY", type: BerryType.LIECHI, count: 3 }, ]) - .enemyMoveset(Moves.TEATIME); - await game.classicMode.startBattle([Species.FARIGIRAF]); + .enemyMoveset(MoveId.TEATIME); + await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); const farigiraf = game.scene.getPlayerPokemon()!; farigiraf.hp = 1; // needed to allow berry procs - game.move.select(Moves.STUFF_CHEEKS); + game.move.select(MoveId.STUFF_CHEEKS); await game.toNextTurn(); // Ate 2 petayas from moves + 1 of each at turn end; all 4 get tallied on turn end @@ -135,7 +135,7 @@ describe("Abilities - Cud Chew", () => { ]); expect(farigiraf.turnData.berriesEaten).toEqual([]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // previous berries eaten and deleted from summon data as remaining eaten berries move to replace them @@ -146,13 +146,13 @@ describe("Abilities - Cud Chew", () => { }); it("should reset both arrays on switch", async () => { - await game.classicMode.startBattle([Species.FARIGIRAF, Species.GIRAFARIG]); + await game.classicMode.startBattle([SpeciesId.FARIGIRAF, SpeciesId.GIRAFARIG]); const farigiraf = game.scene.getPlayerPokemon()!; farigiraf.hp = 1; // eat berry turn 1, switch out turn 2 - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); const turn1Hp = farigiraf.hp; @@ -174,13 +174,13 @@ describe("Abilities - Cud Chew", () => { }); it("clears array if disabled", async () => { - game.override.enemyAbility(Abilities.NEUTRALIZING_GAS); - await game.classicMode.startBattle([Species.FARIGIRAF]); + game.override.enemyAbility(AbilityId.NEUTRALIZING_GAS); + await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); const farigiraf = game.scene.getPlayerPokemon()!; farigiraf.hp = 1; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(farigiraf.summonData.berriesEatenLast).toEqual([]); @@ -197,12 +197,12 @@ describe("Abilities - Cud Chew", () => { describe("regurgiates berries", () => { it("re-triggers effects on eater without pushing to array", async () => { const apply = vi.spyOn(RepeatBerryNextTurnAbAttr.prototype, "apply"); - await game.classicMode.startBattle([Species.FARIGIRAF]); + await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); const farigiraf = game.scene.getPlayerPokemon()!; farigiraf.hp = 1; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // ate 1 sitrus the turn prior, spitball pending @@ -212,7 +212,7 @@ describe("Abilities - Cud Chew", () => { const turn1Hp = farigiraf.hp; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); // healed back up to half without adding any more to array @@ -222,15 +222,15 @@ describe("Abilities - Cud Chew", () => { }); it("bypasses unnerve", async () => { - game.override.enemyAbility(Abilities.UNNERVE); - await game.classicMode.startBattle([Species.FARIGIRAF]); + game.override.enemyAbility(AbilityId.UNNERVE); + await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); const farigiraf = game.scene.getPlayerPokemon()!; farigiraf.hp = 1; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); // Turn end proc set the berriesEatenLast array back to being empty @@ -240,13 +240,13 @@ describe("Abilities - Cud Chew", () => { }); it("doesn't trigger on non-eating removal", async () => { - game.override.enemyMoveset(Moves.INCINERATE); - await game.classicMode.startBattle([Species.FARIGIRAF]); + game.override.enemyMoveset(MoveId.INCINERATE); + await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); const farigiraf = game.scene.getPlayerPokemon()!; farigiraf.hp = farigiraf.getMaxHp() / 4; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // no berries eaten due to getting cooked @@ -257,17 +257,17 @@ describe("Abilities - Cud Chew", () => { it("works with pluck", async () => { game.override - .enemySpecies(Species.BLAZIKEN) + .enemySpecies(SpeciesId.BLAZIKEN) .enemyHeldItems([{ name: "BERRY", type: BerryType.PETAYA, count: 1 }]) .startingHeldItems([]); - await game.classicMode.startBattle([Species.FARIGIRAF]); + await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); const farigiraf = game.scene.getPlayerPokemon()!; - game.move.select(Moves.BUG_BITE); + game.move.select(MoveId.BUG_BITE); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // berry effect triggered twice - once for bug bite, once for cud chew @@ -275,15 +275,15 @@ describe("Abilities - Cud Chew", () => { }); it("works with Ripen", async () => { - game.override.passiveAbility(Abilities.RIPEN); - await game.classicMode.startBattle([Species.FARIGIRAF]); + game.override.passiveAbility(AbilityId.RIPEN); + await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); const farigiraf = game.scene.getPlayerPokemon()!; farigiraf.hp = 1; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // Rounding errors only ever cost a maximum of 4 hp @@ -292,12 +292,12 @@ describe("Abilities - Cud Chew", () => { it("is preserved on reload/wave clear", async () => { game.override.enemyLevel(1); - await game.classicMode.startBattle([Species.FARIGIRAF]); + await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); const farigiraf = game.scene.getPlayerPokemon()!; farigiraf.hp = 1; - game.move.select(Moves.HYPER_VOICE); + game.move.select(MoveId.HYPER_VOICE); await game.toNextWave(); // berry went yummy yummy in big fat giraffe tummy @@ -313,7 +313,7 @@ describe("Abilities - Cud Chew", () => { const wave1Hp = farigirafReloaded.hp; // blow up next wave and we should proc the repeat eating - game.move.select(Moves.HYPER_VOICE); + game.move.select(MoveId.HYPER_VOICE); await game.toNextWave(); expect(farigirafReloaded.hp).toBeGreaterThan(wave1Hp); diff --git a/test/abilities/dancer.test.ts b/test/abilities/dancer.test.ts index b85fc7bdcd4..7b4edb84789 100644 --- a/test/abilities/dancer.test.ts +++ b/test/abilities/dancer.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import type { MovePhase } from "#app/phases/move-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -29,22 +29,22 @@ describe("Abilities - Dancer", () => { // Reference Link: https://bulbapedia.bulbagarden.net/wiki/Dancer_(Ability) it("triggers when dance moves are used, doesn't consume extra PP", async () => { - game.override.enemyAbility(Abilities.DANCER).enemySpecies(Species.MAGIKARP).enemyMoveset(Moves.VICTORY_DANCE); - await game.classicMode.startBattle([Species.ORICORIO, Species.FEEBAS]); + game.override.enemyAbility(AbilityId.DANCER).enemySpecies(SpeciesId.MAGIKARP).enemyMoveset(MoveId.VICTORY_DANCE); + await game.classicMode.startBattle([SpeciesId.ORICORIO, SpeciesId.FEEBAS]); const [oricorio, feebas] = game.scene.getPlayerField(); - game.move.changeMoveset(oricorio, [Moves.SWORDS_DANCE, Moves.VICTORY_DANCE, Moves.SPLASH]); - game.move.changeMoveset(feebas, [Moves.SWORDS_DANCE, Moves.SPLASH]); + game.move.changeMoveset(oricorio, [MoveId.SWORDS_DANCE, MoveId.VICTORY_DANCE, MoveId.SPLASH]); + game.move.changeMoveset(feebas, [MoveId.SWORDS_DANCE, MoveId.SPLASH]); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SWORDS_DANCE, 1); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SWORDS_DANCE, 1); await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("MovePhase"); // feebas uses swords dance await game.phaseInterceptor.to("MovePhase", false); // oricorio copies swords dance let currentPhase = game.scene.getCurrentPhase() as MovePhase; expect(currentPhase.pokemon).toBe(oricorio); - expect(currentPhase.move.moveId).toBe(Moves.SWORDS_DANCE); + expect(currentPhase.move.moveId).toBe(MoveId.SWORDS_DANCE); await game.phaseInterceptor.to("MoveEndPhase"); // end oricorio's move await game.phaseInterceptor.to("MovePhase"); // magikarp 1 copies swords dance @@ -54,7 +54,7 @@ describe("Abilities - Dancer", () => { currentPhase = game.scene.getCurrentPhase() as MovePhase; expect(currentPhase.pokemon).toBe(oricorio); - expect(currentPhase.move.moveId).toBe(Moves.VICTORY_DANCE); + expect(currentPhase.move.moveId).toBe(MoveId.VICTORY_DANCE); await game.phaseInterceptor.to("BerryPhase"); // finish the turn @@ -66,37 +66,37 @@ describe("Abilities - Dancer", () => { // TODO: Enable after Dancer rework to not push to move history it.todo("should not count as the last move used for mirror move/instruct", async () => { game.override - .moveset([Moves.FIERY_DANCE, Moves.REVELATION_DANCE]) - .enemyMoveset([Moves.INSTRUCT, Moves.MIRROR_MOVE, Moves.SPLASH]) - .enemySpecies(Species.SHUCKLE) + .moveset([MoveId.FIERY_DANCE, MoveId.REVELATION_DANCE]) + .enemyMoveset([MoveId.INSTRUCT, MoveId.MIRROR_MOVE, MoveId.SPLASH]) + .enemySpecies(SpeciesId.SHUCKLE) .enemyLevel(10); - await game.classicMode.startBattle([Species.ORICORIO, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.ORICORIO, SpeciesId.FEEBAS]); const [oricorio] = game.scene.getPlayerField(); const [, shuckle2] = game.scene.getEnemyField(); - game.move.select(Moves.REVELATION_DANCE, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2); - game.move.select(Moves.FIERY_DANCE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2); - await game.move.selectEnemyMove(Moves.INSTRUCT, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.MIRROR_MOVE, BattlerIndex.PLAYER); + game.move.select(MoveId.REVELATION_DANCE, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2); + game.move.select(MoveId.FIERY_DANCE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2); + await game.move.selectEnemyMove(MoveId.INSTRUCT, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.MIRROR_MOVE, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MovePhase"); // Oricorio rev dance await game.phaseInterceptor.to("MovePhase"); // Feebas fiery dance await game.phaseInterceptor.to("MovePhase"); // Oricorio fiery dance (from dancer) await game.phaseInterceptor.to("MoveEndPhase", false); // dancer copied move doesn't appear in move history - expect(oricorio.getLastXMoves(-1)[0].move).toBe(Moves.REVELATION_DANCE); + expect(oricorio.getLastXMoves(-1)[0].move).toBe(MoveId.REVELATION_DANCE); await game.phaseInterceptor.to("MovePhase"); // shuckle 2 mirror moves oricorio await game.phaseInterceptor.to("MovePhase"); // calls instructed rev dance let currentPhase = game.scene.getCurrentPhase() as MovePhase; expect(currentPhase.pokemon).toBe(shuckle2); - expect(currentPhase.move.moveId).toBe(Moves.REVELATION_DANCE); + expect(currentPhase.move.moveId).toBe(MoveId.REVELATION_DANCE); await game.phaseInterceptor.to("MovePhase"); // shuckle 1 instructs oricorio await game.phaseInterceptor.to("MovePhase"); currentPhase = game.scene.getCurrentPhase() as MovePhase; expect(currentPhase.pokemon).toBe(oricorio); - expect(currentPhase.move.moveId).toBe(Moves.REVELATION_DANCE); + expect(currentPhase.move.moveId).toBe(MoveId.REVELATION_DANCE); }); }); diff --git a/test/abilities/defiant.test.ts b/test/abilities/defiant.test.ts index d06aef4d785..ef26b5bfca3 100644 --- a/test/abilities/defiant.test.ts +++ b/test/abilities/defiant.test.ts @@ -1,8 +1,8 @@ import { Stat } from "#enums/stat"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -26,18 +26,18 @@ describe("Abilities - Defiant", () => { game.override .battleStyle("single") - .enemySpecies(Species.BEEDRILL) - .enemyMoveset(Moves.TICKLE) + .enemySpecies(SpeciesId.BEEDRILL) + .enemyMoveset(MoveId.TICKLE) .startingLevel(1) - .moveset([Moves.SPLASH, Moves.CLOSE_COMBAT]) - .ability(Abilities.DEFIANT); + .moveset([MoveId.SPLASH, MoveId.CLOSE_COMBAT]) + .ability(AbilityId.DEFIANT); }); it("lower atk and def by 1 via tickle, then increase atk by 4 via defiant", async () => { - await game.classicMode.startBattle([Species.FLYGON]); + await game.classicMode.startBattle([SpeciesId.FLYGON]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnInitPhase); expect(playerPokemon.getStatStage(Stat.ATK)).toBe(3); @@ -45,11 +45,11 @@ describe("Abilities - Defiant", () => { }); it("lowering your own stats should not trigger defiant", async () => { - game.override.enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.FLYGON]); + game.override.enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.FLYGON]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.CLOSE_COMBAT); + game.move.select(MoveId.CLOSE_COMBAT); await game.phaseInterceptor.to(TurnInitPhase); expect(playerPokemon.getStatStage(Stat.SPDEF)).toBe(-1); @@ -59,10 +59,10 @@ describe("Abilities - Defiant", () => { it("white herb should remove only the negative effects", async () => { game.override.startingHeldItems([{ name: "WHITE_HERB" }]); - await game.classicMode.startBattle([Species.FLYGON]); + await game.classicMode.startBattle([SpeciesId.FLYGON]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnInitPhase); expect(playerPokemon.getStatStage(Stat.DEF)).toBe(0); diff --git a/test/abilities/desolate-land.test.ts b/test/abilities/desolate-land.test.ts index da2c285e38f..c5238a40762 100644 --- a/test/abilities/desolate-land.test.ts +++ b/test/abilities/desolate-land.test.ts @@ -2,9 +2,9 @@ import { PokeballType } from "#app/enums/pokeball"; import { WeatherType } from "#app/enums/weather-type"; import type { CommandPhase } from "#app/phases/command-phase"; import { Command } from "#app/ui/command-ui-handler"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; @@ -26,20 +26,25 @@ describe("Abilities - Desolate Land", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Moves.SPLASH) + .moveset(MoveId.SPLASH) .hasPassiveAbility(true) - .enemySpecies(Species.RALTS) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.RALTS) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); /** - * This checks that the weather has changed after the Enemy Pokemon with {@linkcode Abilities.DESOLATE_LAND} - * is forcefully moved out of the field from moves such as Roar {@linkcode Moves.ROAR} + * This checks that the weather has changed after the Enemy Pokemon with {@linkcode AbilityId.DESOLATE_LAND} + * is forcefully moved out of the field from moves such as Roar {@linkcode MoveId.ROAR} */ it("should lift only when all pokemon with this ability leave the field", async () => { - game.override.battleStyle("double").enemyMoveset([Moves.SPLASH, Moves.ROAR]); - await game.classicMode.startBattle([Species.MAGCARGO, Species.MAGCARGO, Species.MAGIKARP, Species.MAGIKARP]); + game.override.battleStyle("double").enemyMoveset([MoveId.SPLASH, MoveId.ROAR]); + await game.classicMode.startBattle([ + SpeciesId.MAGCARGO, + SpeciesId.MAGCARGO, + SpeciesId.MAGIKARP, + SpeciesId.MAGIKARP, + ]); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.HARSH_SUN); @@ -47,11 +52,11 @@ describe("Abilities - Desolate Land", () => { return min; }); - game.move.select(Moves.SPLASH, 0, 2); - game.move.select(Moves.SPLASH, 1, 2); + game.move.select(MoveId.SPLASH, 0, 2); + game.move.select(MoveId.SPLASH, 1, 2); - await game.move.selectEnemyMove(Moves.ROAR, 0); - await game.move.selectEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.ROAR, 0); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -63,11 +68,11 @@ describe("Abilities - Desolate Land", () => { return min + 1; }); - game.move.select(Moves.SPLASH, 0, 2); - game.move.select(Moves.SPLASH, 1, 2); + game.move.select(MoveId.SPLASH, 0, 2); + game.move.select(MoveId.SPLASH, 1, 2); - await game.move.selectEnemyMove(Moves.ROAR, 1); - await game.move.selectEnemyMove(Moves.SPLASH, 0); + await game.move.selectEnemyMove(MoveId.ROAR, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, 0); await game.phaseInterceptor.to("TurnEndPhase"); @@ -77,18 +82,18 @@ describe("Abilities - Desolate Land", () => { it("should lift when enemy faints", async () => { game.override .battleStyle("single") - .moveset([Moves.SHEER_COLD]) - .ability(Abilities.NO_GUARD) + .moveset([MoveId.SHEER_COLD]) + .ability(AbilityId.NO_GUARD) .startingLevel(100) .enemyLevel(1) - .enemyMoveset([Moves.SPLASH]) - .enemySpecies(Species.MAGCARGO) + .enemyMoveset([MoveId.SPLASH]) + .enemySpecies(SpeciesId.MAGCARGO) .enemyHasPassiveAbility(true); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.HARSH_SUN); - game.move.select(Moves.SHEER_COLD); + game.move.select(MoveId.SHEER_COLD); await game.phaseInterceptor.to("TurnEndPhase"); @@ -96,15 +101,15 @@ describe("Abilities - Desolate Land", () => { }); it("should lift when pokemon returns upon switching from double to single battle", async () => { - game.override.battleStyle("even-doubles").enemyMoveset([Moves.SPLASH, Moves.MEMENTO]).startingWave(12); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGCARGO]); + game.override.battleStyle("even-doubles").enemyMoveset([MoveId.SPLASH, MoveId.MEMENTO]).startingWave(12); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGCARGO]); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.HARSH_SUN); - game.move.select(Moves.SPLASH, 0, 2); - game.move.select(Moves.SPLASH, 1, 2); - await game.move.selectEnemyMove(Moves.MEMENTO, 0); - await game.move.selectEnemyMove(Moves.MEMENTO, 1); + game.move.select(MoveId.SPLASH, 0, 2); + game.move.select(MoveId.SPLASH, 1, 2); + await game.move.selectEnemyMove(MoveId.MEMENTO, 0); + await game.move.selectEnemyMove(MoveId.MEMENTO, 1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -118,10 +123,10 @@ describe("Abilities - Desolate Land", () => { it("should lift when enemy is captured", async () => { game.override .battleStyle("single") - .enemyMoveset([Moves.SPLASH]) - .enemySpecies(Species.MAGCARGO) + .enemyMoveset([MoveId.SPLASH]) + .enemySpecies(SpeciesId.MAGCARGO) .enemyHasPassiveAbility(true); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.HARSH_SUN); @@ -135,8 +140,8 @@ describe("Abilities - Desolate Land", () => { }); it("should lift after fleeing from a wild pokemon", async () => { - game.override.enemyAbility(Abilities.DESOLATE_LAND).ability(Abilities.BALL_FETCH); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.enemyAbility(AbilityId.DESOLATE_LAND).ability(AbilityId.BALL_FETCH); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.HARSH_SUN); vi.spyOn(game.scene.getPlayerPokemon()!, "randBattleSeedInt").mockReturnValue(0); diff --git a/test/abilities/disguise.test.ts b/test/abilities/disguise.test.ts index 0e62b8ad448..dd05c540620 100644 --- a/test/abilities/disguise.test.ts +++ b/test/abilities/disguise.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { toDmgValue } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; @@ -28,10 +28,10 @@ describe("Abilities - Disguise", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.MIMIKYU) - .enemyMoveset(Moves.SPLASH) - .starterSpecies(Species.REGIELEKI) - .moveset([Moves.SHADOW_SNEAK, Moves.VACUUM_WAVE, Moves.TOXIC_THREAD, Moves.SPLASH]); + .enemySpecies(SpeciesId.MIMIKYU) + .enemyMoveset(MoveId.SPLASH) + .starterSpecies(SpeciesId.REGIELEKI) + .moveset([MoveId.SHADOW_SNEAK, MoveId.VACUUM_WAVE, MoveId.TOXIC_THREAD, MoveId.SPLASH]); }); it("takes no damage from attacking move and transforms to Busted form, takes 1/8 max HP damage from the disguise breaking", async () => { @@ -43,7 +43,7 @@ describe("Abilities - Disguise", () => { expect(mimikyu.formIndex).toBe(disguisedForm); - game.move.select(Moves.SHADOW_SNEAK); + game.move.select(MoveId.SHADOW_SNEAK); await game.phaseInterceptor.to("MoveEndPhase"); @@ -58,7 +58,7 @@ describe("Abilities - Disguise", () => { expect(mimikyu.formIndex).toBe(disguisedForm); - game.move.select(Moves.VACUUM_WAVE); + game.move.select(MoveId.VACUUM_WAVE); await game.phaseInterceptor.to("MoveEndPhase"); @@ -66,7 +66,7 @@ describe("Abilities - Disguise", () => { }); it("takes no damage from the first hit of a multihit move and transforms to Busted form, then takes damage from the second hit", async () => { - game.override.moveset([Moves.SURGING_STRIKES]); + game.override.moveset([MoveId.SURGING_STRIKES]); game.override.enemyLevel(5); await game.classicMode.startBattle(); @@ -76,7 +76,7 @@ describe("Abilities - Disguise", () => { expect(mimikyu.formIndex).toBe(disguisedForm); - game.move.select(Moves.SURGING_STRIKES); + game.move.select(MoveId.SURGING_STRIKES); // First hit await game.phaseInterceptor.to("MoveEffectPhase"); @@ -95,7 +95,7 @@ describe("Abilities - Disguise", () => { const mimikyu = game.scene.getEnemyPokemon()!; expect(mimikyu.hp).toBe(mimikyu.getMaxHp()); - game.move.select(Moves.TOXIC_THREAD); + game.move.select(MoveId.TOXIC_THREAD); await game.phaseInterceptor.to("TurnEndPhase"); @@ -106,16 +106,16 @@ describe("Abilities - Disguise", () => { }); it("persists form change when switched out", async () => { - game.override.enemyMoveset([Moves.SHADOW_SNEAK]); + game.override.enemyMoveset([MoveId.SHADOW_SNEAK]); game.override.starterSpecies(0); - await game.classicMode.startBattle([Species.MIMIKYU, Species.FURRET]); + await game.classicMode.startBattle([SpeciesId.MIMIKYU, SpeciesId.FURRET]); const mimikyu = game.scene.getPlayerPokemon()!; const maxHp = mimikyu.getMaxHp(); const disguiseDamage = toDmgValue(maxHp / 8); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); @@ -133,14 +133,14 @@ describe("Abilities - Disguise", () => { it("persists form change when wave changes with no arena reset", async () => { game.override.starterSpecies(0); game.override.starterForms({ - [Species.MIMIKYU]: bustedForm, + [SpeciesId.MIMIKYU]: bustedForm, }); - await game.classicMode.startBattle([Species.FURRET, Species.MIMIKYU]); + await game.classicMode.startBattle([SpeciesId.FURRET, SpeciesId.MIMIKYU]); const mimikyu = game.scene.getPlayerParty()[1]!; expect(mimikyu.formIndex).toBe(bustedForm); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.toNextWave(); @@ -149,9 +149,9 @@ describe("Abilities - Disguise", () => { it("reverts to Disguised form on arena reset", async () => { game.override.startingWave(4); - game.override.starterSpecies(Species.MIMIKYU); + game.override.starterSpecies(SpeciesId.MIMIKYU); game.override.starterForms({ - [Species.MIMIKYU]: bustedForm, + [SpeciesId.MIMIKYU]: bustedForm, }); await game.classicMode.startBattle(); @@ -160,7 +160,7 @@ describe("Abilities - Disguise", () => { expect(mimikyu.formIndex).toBe(bustedForm); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.toNextWave(); @@ -171,20 +171,20 @@ describe("Abilities - Disguise", () => { game.override.startingWave(10); game.override.starterSpecies(0); game.override.starterForms({ - [Species.MIMIKYU]: bustedForm, + [SpeciesId.MIMIKYU]: bustedForm, }); - await game.classicMode.startBattle([Species.MIMIKYU, Species.FURRET]); + await game.classicMode.startBattle([SpeciesId.MIMIKYU, SpeciesId.FURRET]); const mimikyu1 = game.scene.getPlayerPokemon()!; expect(mimikyu1.formIndex).toBe(bustedForm); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.killPokemon(mimikyu1); game.doSelectPartyPokemon(1); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to("QuietFormChangePhase"); @@ -192,13 +192,13 @@ describe("Abilities - Disguise", () => { }); it("doesn't faint twice when fainting due to Disguise break damage, nor prevent faint from Disguise break damage if using Endure", async () => { - game.override.enemyMoveset([Moves.ENDURE]); + game.override.enemyMoveset([MoveId.ENDURE]); await game.classicMode.startBattle(); const mimikyu = game.scene.getEnemyPokemon()!; mimikyu.hp = 1; - game.move.select(Moves.SHADOW_SNEAK); + game.move.select(MoveId.SHADOW_SNEAK); await game.toNextWave(); expect(game.scene.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); @@ -206,8 +206,8 @@ describe("Abilities - Disguise", () => { }); it("activates when Aerilate circumvents immunity to the move's base type", async () => { - game.override.ability(Abilities.AERILATE); - game.override.moveset([Moves.TACKLE]); + game.override.ability(AbilityId.AERILATE); + game.override.moveset([MoveId.TACKLE]); await game.classicMode.startBattle(); @@ -215,7 +215,7 @@ describe("Abilities - Disguise", () => { const maxHp = mimikyu.getMaxHp(); const disguiseDamage = toDmgValue(maxHp / 8); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("MoveEndPhase"); @@ -224,10 +224,10 @@ describe("Abilities - Disguise", () => { }); it("doesn't trigger if user is behind a substitute", async () => { - game.override.enemyMoveset(Moves.SUBSTITUTE).moveset(Moves.POWER_TRIP); + game.override.enemyMoveset(MoveId.SUBSTITUTE).moveset(MoveId.POWER_TRIP); await game.classicMode.startBattle(); - game.move.select(Moves.POWER_TRIP); + game.move.select(MoveId.POWER_TRIP); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); diff --git a/test/abilities/dry_skin.test.ts b/test/abilities/dry_skin.test.ts index 398d09393ab..549bb45ba9a 100644 --- a/test/abilities/dry_skin.test.ts +++ b/test/abilities/dry_skin.test.ts @@ -1,6 +1,6 @@ -import { Species } from "#app/enums/species"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,12 +24,12 @@ describe("Abilities - Dry Skin", () => { game.override .battleStyle("single") .disableCrits() - .enemyAbility(Abilities.DRY_SKIN) - .enemyMoveset(Moves.SPLASH) - .enemySpecies(Species.CHARMANDER) - .ability(Abilities.BALL_FETCH) - .moveset([Moves.SUNNY_DAY, Moves.RAIN_DANCE, Moves.SPLASH, Moves.WATER_GUN]) - .starterSpecies(Species.CHANDELURE); + .enemyAbility(AbilityId.DRY_SKIN) + .enemyMoveset(MoveId.SPLASH) + .enemySpecies(SpeciesId.CHARMANDER) + .ability(AbilityId.BALL_FETCH) + .moveset([MoveId.SUNNY_DAY, MoveId.RAIN_DANCE, MoveId.SPLASH, MoveId.WATER_GUN]) + .starterSpecies(SpeciesId.CHANDELURE); }); it("during sunlight, lose 1/8 of maximum health at the end of each turn", async () => { @@ -38,13 +38,13 @@ describe("Abilities - Dry Skin", () => { const enemy = game.scene.getEnemyPokemon()!; // first turn - game.move.select(Moves.SUNNY_DAY); + game.move.select(MoveId.SUNNY_DAY); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.hp).toBeLessThan(enemy.getMaxHp()); // second turn enemy.hp = enemy.getMaxHp(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.hp).toBeLessThan(enemy.getMaxHp()); }); @@ -57,19 +57,19 @@ describe("Abilities - Dry Skin", () => { enemy.hp = 1; // first turn - game.move.select(Moves.RAIN_DANCE); + game.move.select(MoveId.RAIN_DANCE); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.hp).toBeGreaterThan(1); // second turn enemy.hp = 1; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.hp).toBeGreaterThan(1); }); it("opposing fire attacks do 25% more damage", async () => { - game.override.moveset([Moves.FLAMETHROWER]); + game.override.moveset([MoveId.FLAMETHROWER]); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; @@ -77,15 +77,15 @@ describe("Abilities - Dry Skin", () => { enemy.hp = initialHP; // first turn - game.move.select(Moves.FLAMETHROWER); + game.move.select(MoveId.FLAMETHROWER); await game.phaseInterceptor.to("TurnEndPhase"); const fireDamageTakenWithDrySkin = initialHP - enemy.hp; enemy.hp = initialHP; - game.override.enemyAbility(Abilities.NONE); + game.override.enemyAbility(AbilityId.NONE); // second turn - game.move.select(Moves.FLAMETHROWER); + game.move.select(MoveId.FLAMETHROWER); await game.phaseInterceptor.to("TurnEndPhase"); const fireDamageTakenWithoutDrySkin = initialHP - enemy.hp; @@ -99,13 +99,13 @@ describe("Abilities - Dry Skin", () => { enemy.hp = 1; - game.move.select(Moves.WATER_GUN); + game.move.select(MoveId.WATER_GUN); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.hp).toBeGreaterThan(1); }); it("opposing water attacks do not heal if they were protected from", async () => { - game.override.enemyMoveset([Moves.PROTECT]); + game.override.enemyMoveset([MoveId.PROTECT]); await game.classicMode.startBattle(); @@ -113,13 +113,13 @@ describe("Abilities - Dry Skin", () => { enemy.hp = 1; - game.move.select(Moves.WATER_GUN); + game.move.select(MoveId.WATER_GUN); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.hp).toBe(1); }); it("multi-strike water attacks only heal once", async () => { - game.override.moveset([Moves.WATER_GUN, Moves.WATER_SHURIKEN]); + game.override.moveset([MoveId.WATER_GUN, MoveId.WATER_SHURIKEN]); await game.classicMode.startBattle(); @@ -128,14 +128,14 @@ describe("Abilities - Dry Skin", () => { enemy.hp = 1; // first turn - game.move.select(Moves.WATER_SHURIKEN); + game.move.select(MoveId.WATER_SHURIKEN); await game.phaseInterceptor.to("TurnEndPhase"); const healthGainedFromWaterShuriken = enemy.hp - 1; enemy.hp = 1; // second turn - game.move.select(Moves.WATER_GUN); + game.move.select(MoveId.WATER_GUN); await game.phaseInterceptor.to("TurnEndPhase"); const healthGainedFromWaterGun = enemy.hp - 1; @@ -147,7 +147,7 @@ describe("Abilities - Dry Skin", () => { const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.WATER_GUN); + game.move.select(MoveId.WATER_GUN); enemy.hp = enemy.hp - 1; await game.phaseInterceptor.to("MoveEffectPhase"); diff --git a/test/abilities/early_bird.test.ts b/test/abilities/early_bird.test.ts index 0f298ba479d..e158ce1888b 100644 --- a/test/abilities/early_bird.test.ts +++ b/test/abilities/early_bird.test.ts @@ -1,8 +1,8 @@ import { Status } from "#app/data/status-effect"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -25,34 +25,34 @@ describe("Abilities - Early Bird", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.REST, Moves.BELLY_DRUM, Moves.SPLASH]) - .ability(Abilities.EARLY_BIRD) + .moveset([MoveId.REST, MoveId.BELLY_DRUM, MoveId.SPLASH]) + .ability(AbilityId.EARLY_BIRD) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("reduces Rest's sleep time to 1 turn", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const player = game.scene.getPlayerPokemon()!; - game.move.select(Moves.BELLY_DRUM); + game.move.select(MoveId.BELLY_DRUM); await game.toNextTurn(); - game.move.select(Moves.REST); + game.move.select(MoveId.REST); await game.toNextTurn(); expect(player.status?.effect).toBe(StatusEffect.SLEEP); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(player.status?.effect).toBe(StatusEffect.SLEEP); expect(player.getLastXMoves(1)[0].result).toBe(MoveResult.FAIL); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(player.status?.effect).toBeUndefined(); @@ -60,18 +60,18 @@ describe("Abilities - Early Bird", () => { }); it("reduces 3-turn sleep to 1 turn", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const player = game.scene.getPlayerPokemon()!; player.status = new Status(StatusEffect.SLEEP, 0, 4); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(player.status?.effect).toBe(StatusEffect.SLEEP); expect(player.getLastXMoves(1)[0].result).toBe(MoveResult.FAIL); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(player.status?.effect).toBeUndefined(); @@ -79,12 +79,12 @@ describe("Abilities - Early Bird", () => { }); it("reduces 1-turn sleep to 0 turns", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const player = game.scene.getPlayerPokemon()!; player.status = new Status(StatusEffect.SLEEP, 0, 2); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(player.status?.effect).toBeUndefined(); diff --git a/test/abilities/flash_fire.test.ts b/test/abilities/flash_fire.test.ts index 8d94d21adf8..8fabda95c80 100644 --- a/test/abilities/flash_fire.test.ts +++ b/test/abilities/flash_fire.test.ts @@ -1,10 +1,10 @@ import { BattlerIndex } from "#app/battle"; import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import { MovePhase } from "#app/phases/move-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -28,42 +28,42 @@ describe("Abilities - Flash Fire", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .ability(Abilities.FLASH_FIRE) - .enemyAbility(Abilities.BALL_FETCH) + .ability(AbilityId.FLASH_FIRE) + .enemyAbility(AbilityId.BALL_FETCH) .startingLevel(20) .enemyLevel(20) .disableCrits(); }); it("immune to Fire-type moves", async () => { - game.override.enemyMoveset([Moves.EMBER]).moveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.BLISSEY]); + game.override.enemyMoveset([MoveId.EMBER]).moveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.BLISSEY]); const blissey = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); expect(blissey.hp).toBe(blissey.getMaxHp()); }, 20000); it("not activate if the Pokémon is protected from the Fire-type move", async () => { - game.override.enemyMoveset([Moves.EMBER]).moveset([Moves.PROTECT]); - await game.classicMode.startBattle([Species.BLISSEY]); + game.override.enemyMoveset([MoveId.EMBER]).moveset([MoveId.PROTECT]); + await game.classicMode.startBattle([SpeciesId.BLISSEY]); const blissey = game.scene.getPlayerPokemon()!; - game.move.select(Moves.PROTECT); + game.move.select(MoveId.PROTECT); await game.phaseInterceptor.to(TurnEndPhase); expect(blissey!.getTag(BattlerTagType.FIRE_BOOST)).toBeUndefined(); }, 20000); it("activated by Will-O-Wisp", async () => { - game.override.enemyMoveset([Moves.WILL_O_WISP]).moveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.BLISSEY]); + game.override.enemyMoveset([MoveId.WILL_O_WISP]).moveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.BLISSEY]); const blissey = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.move.forceHit(); await game.phaseInterceptor.to(MovePhase, false); await game.move.forceHit(); @@ -73,44 +73,44 @@ describe("Abilities - Flash Fire", () => { }, 20000); it("activated after being frozen", async () => { - game.override.enemyMoveset([Moves.EMBER]).moveset(Moves.SPLASH); + game.override.enemyMoveset([MoveId.EMBER]).moveset(MoveId.SPLASH); game.override.statusEffect(StatusEffect.FREEZE); - await game.classicMode.startBattle([Species.BLISSEY]); + await game.classicMode.startBattle([SpeciesId.BLISSEY]); const blissey = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); expect(blissey!.getTag(BattlerTagType.FIRE_BOOST)).toBeDefined(); }, 20000); it("not passing with baton pass", async () => { - game.override.enemyMoveset([Moves.EMBER]).moveset([Moves.BATON_PASS]); - await game.classicMode.startBattle([Species.BLISSEY, Species.CHANSEY]); + game.override.enemyMoveset([MoveId.EMBER]).moveset([MoveId.BATON_PASS]); + await game.classicMode.startBattle([SpeciesId.BLISSEY, SpeciesId.CHANSEY]); // ensure use baton pass after enemy moved - game.move.select(Moves.BATON_PASS); + game.move.select(MoveId.BATON_PASS); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to(TurnEndPhase); const chansey = game.scene.getPlayerPokemon()!; - expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(Species.CHANSEY); + expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(SpeciesId.CHANSEY); expect(chansey!.getTag(BattlerTagType.FIRE_BOOST)).toBeUndefined(); }, 20000); it("boosts Fire-type move when the ability is activated", async () => { - game.override.enemyMoveset([Moves.FIRE_PLEDGE]).moveset([Moves.EMBER, Moves.SPLASH]); - game.override.enemyAbility(Abilities.FLASH_FIRE).ability(Abilities.NONE); - await game.classicMode.startBattle([Species.BLISSEY]); + game.override.enemyMoveset([MoveId.FIRE_PLEDGE]).moveset([MoveId.EMBER, MoveId.SPLASH]); + game.override.enemyAbility(AbilityId.FLASH_FIRE).ability(AbilityId.NONE); + await game.classicMode.startBattle([SpeciesId.BLISSEY]); const blissey = game.scene.getPlayerPokemon()!; const initialHP = 1000; blissey.hp = initialHP; // first turn - game.move.select(Moves.EMBER); + game.move.select(MoveId.EMBER); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to(TurnEndPhase); const originalDmg = initialHP - blissey.hp; @@ -119,7 +119,7 @@ describe("Abilities - Flash Fire", () => { blissey.hp = initialHP; // second turn - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); const flashFireDmg = initialHP - blissey.hp; @@ -127,17 +127,17 @@ describe("Abilities - Flash Fire", () => { }, 20000); it("still activates regardless of accuracy check", async () => { - game.override.moveset(Moves.FIRE_PLEDGE).enemyMoveset(Moves.EMBER); - game.override.enemyAbility(Abilities.NONE).ability(Abilities.FLASH_FIRE); - game.override.enemySpecies(Species.BLISSEY); - await game.classicMode.startBattle([Species.RATTATA]); + game.override.moveset(MoveId.FIRE_PLEDGE).enemyMoveset(MoveId.EMBER); + game.override.enemyAbility(AbilityId.NONE).ability(AbilityId.FLASH_FIRE); + game.override.enemySpecies(SpeciesId.BLISSEY); + await game.classicMode.startBattle([SpeciesId.RATTATA]); const blissey = game.scene.getEnemyPokemon()!; const initialHP = 1000; blissey.hp = initialHP; // first turn - game.move.select(Moves.FIRE_PLEDGE); + game.move.select(MoveId.FIRE_PLEDGE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); await game.move.forceMiss(); @@ -148,7 +148,7 @@ describe("Abilities - Flash Fire", () => { blissey.hp = initialHP; // second turn - game.move.select(Moves.FIRE_PLEDGE); + game.move.select(MoveId.FIRE_PLEDGE); await game.phaseInterceptor.to(TurnEndPhase); const flashFireDmg = initialHP - blissey.hp; diff --git a/test/abilities/flower_gift.test.ts b/test/abilities/flower_gift.test.ts index df8830bca6d..d4a03bb2330 100644 --- a/test/abilities/flower_gift.test.ts +++ b/test/abilities/flower_gift.test.ts @@ -1,11 +1,11 @@ import { BattlerIndex } from "#app/battle"; import { allAbilities } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { Stat } from "#app/enums/stat"; import { WeatherType } from "#app/enums/weather-type"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -19,13 +19,13 @@ describe("Abilities - Flower Gift", () => { /** * Tests reverting to normal form when Cloud Nine/Air Lock is active on the field * @param {GameManager} game The game manager instance - * @param {Abilities} ability The ability that is active on the field + * @param {AbilityId} ability The ability that is active on the field */ - const testRevertFormAgainstAbility = async (game: GameManager, ability: Abilities) => { - game.override.starterForms({ [Species.CASTFORM]: SUNSHINE_FORM }).enemyAbility(ability); - await game.classicMode.startBattle([Species.CASTFORM]); + const testRevertFormAgainstAbility = async (game: GameManager, ability: AbilityId) => { + game.override.starterForms({ [SpeciesId.CASTFORM]: SUNSHINE_FORM }).enemyAbility(ability); + await game.classicMode.startBattle([SpeciesId.CASTFORM]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); expect(game.scene.getPlayerPokemon()?.formIndex).toBe(OVERCAST_FORM); }; @@ -42,21 +42,21 @@ describe("Abilities - Flower Gift", () => { */ const testDamageDealt = async ( game: GameManager, - move: Moves, + move: MoveId, allyAttacker: boolean, - allyAbility = Abilities.BALL_FETCH, - enemyAbility = Abilities.BALL_FETCH, + allyAbility = AbilityId.BALL_FETCH, + enemyAbility = AbilityId.BALL_FETCH, ): Promise<[number, number]> => { game.override.battleStyle("double"); - game.override.moveset([Moves.SPLASH, Moves.SUNNY_DAY, move, Moves.HEAL_PULSE]); - game.override.enemyMoveset([Moves.SPLASH, Moves.HEAL_PULSE]); + game.override.moveset([MoveId.SPLASH, MoveId.SUNNY_DAY, move, MoveId.HEAL_PULSE]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.HEAL_PULSE]); const target_index = allyAttacker ? BattlerIndex.ENEMY : BattlerIndex.PLAYER_2; const attacker_index = allyAttacker ? BattlerIndex.PLAYER_2 : BattlerIndex.ENEMY; - const ally_move = allyAttacker ? move : Moves.SPLASH; - const enemy_move = allyAttacker ? Moves.SPLASH : move; + const ally_move = allyAttacker ? move : MoveId.SPLASH; + const enemy_move = allyAttacker ? MoveId.SPLASH : move; const ally_target = allyAttacker ? BattlerIndex.ENEMY : null; - await game.classicMode.startBattle([Species.CHERRIM, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.CHERRIM, SpeciesId.MAGIKARP]); const target = allyAttacker ? game.scene.getEnemyField()[0] : game.scene.getPlayerField()[1]; const initialHp = target.getMaxHp(); @@ -65,10 +65,10 @@ describe("Abilities - Flower Gift", () => { vi.spyOn(game.scene.getEnemyField()[0], "getAbility").mockReturnValue(allAbilities[enemyAbility]); // turn 1 - game.move.select(Moves.SUNNY_DAY, 0); + game.move.select(MoveId.SUNNY_DAY, 0); game.move.select(ally_move, 1, ally_target); await game.move.selectEnemyMove(enemy_move, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); // Ensure sunny day is used last. await game.setTurnOrder([attacker_index, target_index, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER]); await game.phaseInterceptor.to(TurnEndPhase); @@ -77,10 +77,10 @@ describe("Abilities - Flower Gift", () => { target.hp = initialHp; // turn 2. Make target use recover to reset hp calculation. - game.move.select(Moves.SPLASH, 0, target_index); + game.move.select(MoveId.SPLASH, 0, target_index); game.move.select(ally_move, 1, ally_target); await game.move.selectEnemyMove(enemy_move, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, target_index, attacker_index]); await game.phaseInterceptor.to(TurnEndPhase); const damageWithGift = initialHp - target.hp; @@ -101,17 +101,17 @@ describe("Abilities - Flower Gift", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.SUNSTEEL_STRIKE, Moves.SUNNY_DAY, Moves.MUD_SLAP]) - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH, MoveId.SUNSTEEL_STRIKE, MoveId.SUNNY_DAY, MoveId.MUD_SLAP]) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) .enemyLevel(100) .startingLevel(100); }); it("increases the ATK and SPDEF stat stages of the Pokémon with this Ability and its allies by 1.5× during Harsh Sunlight", async () => { game.override.battleStyle("double"); - await game.classicMode.startBattle([Species.CHERRIM, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.CHERRIM, SpeciesId.MAGIKARP]); const [cherrim, magikarp] = game.scene.getPlayerField(); const cherrimAtkStat = cherrim.getEffectiveStat(Stat.ATK); @@ -120,8 +120,8 @@ describe("Abilities - Flower Gift", () => { const magikarpAtkStat = magikarp.getEffectiveStat(Stat.ATK); const magikarpSpDefStat = magikarp.getEffectiveStat(Stat.SPDEF); - game.move.select(Moves.SUNNY_DAY, 0); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SUNNY_DAY, 0); + game.move.select(MoveId.SPLASH, 1); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("TurnEndPhase"); @@ -134,59 +134,64 @@ describe("Abilities - Flower Gift", () => { }); it("should not increase the damage of an ally using an ability ignoring move", async () => { - const [damageWithGift, damageWithoutGift] = await testDamageDealt(game, Moves.SUNSTEEL_STRIKE, true); + const [damageWithGift, damageWithoutGift] = await testDamageDealt(game, MoveId.SUNSTEEL_STRIKE, true); expect(damageWithGift).toBe(damageWithoutGift); }); it("should not increase the damage of a mold breaker ally", async () => { - const [damageWithGift, damageWithoutGift] = await testDamageDealt(game, Moves.TACKLE, true, Abilities.MOLD_BREAKER); + const [damageWithGift, damageWithoutGift] = await testDamageDealt( + game, + MoveId.TACKLE, + true, + AbilityId.MOLD_BREAKER, + ); expect(damageWithGift).toBe(damageWithoutGift); }); it("should decrease the damage an ally takes from a special attack", async () => { - const [damageWithoutGift, damageWithGift] = await testDamageDealt(game, Moves.MUD_SLAP, false); + const [damageWithoutGift, damageWithGift] = await testDamageDealt(game, MoveId.MUD_SLAP, false); expect(damageWithGift).toBeLessThan(damageWithoutGift); }); it("should not decrease the damage an ally takes from a mold breaker enemy using a special attack", async () => { const [damageWithoutGift, damageWithGift] = await testDamageDealt( game, - Moves.MUD_SLAP, + MoveId.MUD_SLAP, false, - Abilities.BALL_FETCH, - Abilities.MOLD_BREAKER, + AbilityId.BALL_FETCH, + AbilityId.MOLD_BREAKER, ); expect(damageWithGift).toBe(damageWithoutGift); }); it("changes the Pokemon's form during Harsh Sunlight", async () => { game.override.weather(WeatherType.HARSH_SUN); - await game.classicMode.startBattle([Species.CHERRIM]); + await game.classicMode.startBattle([SpeciesId.CHERRIM]); const cherrim = game.scene.getPlayerPokemon()!; expect(cherrim.formIndex).toBe(SUNSHINE_FORM); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); }); it("reverts to Overcast Form if a Pokémon on the field has Air Lock", async () => { - await testRevertFormAgainstAbility(game, Abilities.AIR_LOCK); + await testRevertFormAgainstAbility(game, AbilityId.AIR_LOCK); }); it("reverts to Overcast Form if a Pokémon on the field has Cloud Nine", async () => { - await testRevertFormAgainstAbility(game, Abilities.CLOUD_NINE); + await testRevertFormAgainstAbility(game, AbilityId.CLOUD_NINE); }); it("reverts to Overcast Form when the Flower Gift is suppressed, changes form under Harsh Sunlight/Sunny when it regains it", async () => { - game.override.enemyMoveset([Moves.GASTRO_ACID]).weather(WeatherType.HARSH_SUN); + game.override.enemyMoveset([MoveId.GASTRO_ACID]).weather(WeatherType.HARSH_SUN); - await game.classicMode.startBattle([Species.CHERRIM, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.CHERRIM, SpeciesId.MAGIKARP]); const cherrim = game.scene.getPlayerPokemon()!; expect(cherrim.formIndex).toBe(SUNSHINE_FORM); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); @@ -208,7 +213,7 @@ describe("Abilities - Flower Gift", () => { it("should be in Overcast Form after the user is switched out", async () => { game.override.weather(WeatherType.SUNNY); - await game.classicMode.startBattle([Species.CASTFORM, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.CASTFORM, SpeciesId.MAGIKARP]); const cherrim = game.scene.getPlayerPokemon()!; expect(cherrim.formIndex).toBe(SUNSHINE_FORM); diff --git a/test/abilities/flower_veil.test.ts b/test/abilities/flower_veil.test.ts index 7f51414d8a5..bd76541495d 100644 --- a/test/abilities/flower_veil.test.ts +++ b/test/abilities/flower_veil.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; @@ -28,14 +28,14 @@ describe("Abilities - Flower Veil", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .enemySpecies(Species.BULBASAUR) - .ability(Abilities.FLOWER_VEIL) + .moveset([MoveId.SPLASH]) + .enemySpecies(SpeciesId.BULBASAUR) + .ability(AbilityId.FLOWER_VEIL) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); /*********************************************** @@ -43,36 +43,36 @@ describe("Abilities - Flower Veil", () => { ***********************************************/ it("should not prevent any source of self-inflicted status conditions", async () => { game.override - .enemyMoveset([Moves.TACKLE, Moves.SPLASH]) - .moveset([Moves.REST, Moves.SPLASH]) + .enemyMoveset([MoveId.TACKLE, MoveId.SPLASH]) + .moveset([MoveId.REST, MoveId.SPLASH]) .startingHeldItems([{ name: "FLAME_ORB" }]); - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const user = game.scene.getPlayerPokemon()!; - game.move.select(Moves.REST); - await game.move.selectEnemyMove(Moves.TACKLE); + game.move.select(MoveId.REST); + await game.move.selectEnemyMove(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); expect(user.status?.effect).toBe(StatusEffect.SLEEP); // remove sleep status so we can get burn from the orb user.resetStatus(); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); expect(user.status?.effect).toBe(StatusEffect.BURN); }); it("should prevent drowsiness from yawn for a grass user and its grass allies", async () => { - game.override.enemyMoveset([Moves.YAWN]).moveset([Moves.SPLASH]).battleStyle("double"); - await game.classicMode.startBattle([Species.BULBASAUR, Species.BULBASAUR]); + game.override.enemyMoveset([MoveId.YAWN]).moveset([MoveId.SPLASH]).battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.BULBASAUR]); // Clear the ability of the ally to isolate the test const ally = game.scene.getPlayerField()[1]!; - vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.YAWN, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.YAWN, BattlerIndex.PLAYER_2); + vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[AbilityId.BALL_FETCH]); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.YAWN, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.YAWN, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); const user = game.scene.getPlayerPokemon()!; @@ -81,28 +81,28 @@ describe("Abilities - Flower Veil", () => { }); it("should prevent status conditions from moves like Thunder Wave for a grass user and its grass allies", async () => { - game.override.enemyMoveset([Moves.THUNDER_WAVE]).moveset([Moves.SPLASH]).battleStyle("double"); - vi.spyOn(allMoves[Moves.THUNDER_WAVE], "accuracy", "get").mockReturnValue(100); - await game.classicMode.startBattle([Species.BULBASAUR]); + game.override.enemyMoveset([MoveId.THUNDER_WAVE]).moveset([MoveId.SPLASH]).battleStyle("double"); + vi.spyOn(allMoves[MoveId.THUNDER_WAVE], "accuracy", "get").mockReturnValue(100); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.THUNDER_WAVE); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.THUNDER_WAVE); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); - vi.spyOn(allMoves[Moves.THUNDER_WAVE], "accuracy", "get").mockClear(); + vi.spyOn(allMoves[MoveId.THUNDER_WAVE], "accuracy", "get").mockClear(); }); it("should not prevent status conditions for a non-grass user and its non-grass allies", async () => { - game.override.enemyMoveset([Moves.THUNDER_WAVE]).moveset([Moves.SPLASH]).battleStyle("double"); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + game.override.enemyMoveset([MoveId.THUNDER_WAVE]).moveset([MoveId.SPLASH]).battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); const [user, ally] = game.scene.getPlayerField(); - vi.spyOn(allMoves[Moves.THUNDER_WAVE], "accuracy", "get").mockReturnValue(100); + vi.spyOn(allMoves[MoveId.THUNDER_WAVE], "accuracy", "get").mockReturnValue(100); // Clear the ally ability to isolate the test - vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.THUNDER_WAVE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.THUNDER_WAVE, BattlerIndex.PLAYER_2); + vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[AbilityId.BALL_FETCH]); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.THUNDER_WAVE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.THUNDER_WAVE, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); expect(user.status?.effect).toBe(StatusEffect.PARALYSIS); expect(ally.status?.effect).toBe(StatusEffect.PARALYSIS); @@ -113,40 +113,40 @@ describe("Abilities - Flower Veil", () => { *******************************************/ it("should prevent the status drops from enemies for the a grass user and its grass allies", async () => { - game.override.enemyMoveset([Moves.GROWL]).moveset([Moves.SPLASH]).battleStyle("double"); - await game.classicMode.startBattle([Species.BULBASAUR, Species.BULBASAUR]); + game.override.enemyMoveset([MoveId.GROWL]).moveset([MoveId.SPLASH]).battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.BULBASAUR]); const [user, ally] = game.scene.getPlayerField(); // Clear the ally ability to isolate the test - vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH); + vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[AbilityId.BALL_FETCH]); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(user.getStatStage(Stat.ATK)).toBe(0); expect(ally.getStatStage(Stat.ATK)).toBe(0); }); it("should not prevent status drops for a non-grass user and its non-grass allies", async () => { - game.override.enemyMoveset([Moves.GROWL]).moveset([Moves.SPLASH]).battleStyle("double"); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + game.override.enemyMoveset([MoveId.GROWL]).moveset([MoveId.SPLASH]).battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); const [user, ally] = game.scene.getPlayerField(); // Clear the ally ability to isolate the test - vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH); + vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[AbilityId.BALL_FETCH]); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(user.getStatStage(Stat.ATK)).toBe(-2); expect(ally.getStatStage(Stat.ATK)).toBe(-2); }); it("should not prevent self-inflicted stat drops from moves like Close Combat for a user or its allies", async () => { - game.override.moveset([Moves.CLOSE_COMBAT]).battleStyle("double"); - await game.classicMode.startBattle([Species.BULBASAUR, Species.BULBASAUR]); + game.override.moveset([MoveId.CLOSE_COMBAT]).battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.BULBASAUR]); const [user, ally] = game.scene.getPlayerField(); // Clear the ally ability to isolate the test - vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]); + vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[AbilityId.BALL_FETCH]); - game.move.select(Moves.CLOSE_COMBAT, 0, BattlerIndex.ENEMY); - game.move.select(Moves.CLOSE_COMBAT, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.CLOSE_COMBAT, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.CLOSE_COMBAT, 1, BattlerIndex.ENEMY_2); await game.phaseInterceptor.to("BerryPhase"); expect(user.getStatStage(Stat.DEF)).toBe(-1); expect(user.getStatStage(Stat.SPDEF)).toBe(-1); @@ -155,10 +155,10 @@ describe("Abilities - Flower Veil", () => { }); it("should prevent the drops while retaining the boosts from spicy extract", async () => { - game.override.enemyMoveset([Moves.SPICY_EXTRACT]).moveset([Moves.SPLASH]); - await game.classicMode.startBattle([Species.BULBASAUR]); + game.override.enemyMoveset([MoveId.SPICY_EXTRACT]).moveset([MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const user = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(user.getStatStage(Stat.ATK)).toBe(2); expect(user.getStatStage(Stat.DEF)).toBe(0); diff --git a/test/abilities/forecast.test.ts b/test/abilities/forecast.test.ts index f2aa350ef37..b87519ae80a 100644 --- a/test/abilities/forecast.test.ts +++ b/test/abilities/forecast.test.ts @@ -1,14 +1,14 @@ import { BattlerIndex } from "#app/battle"; import { allAbilities } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { WeatherType } from "#app/enums/weather-type"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { MovePhase } from "#app/phases/move-phase"; import { PostSummonPhase } from "#app/phases/post-summon-phase"; import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -29,10 +29,10 @@ describe("Abilities - Forecast", () => { * @param initialForm The initial form pre form change */ const testWeatherFormChange = async (game: GameManager, weather: WeatherType, form: number, initialForm?: number) => { - game.override.weather(weather).starterForms({ [Species.CASTFORM]: initialForm }); - await game.classicMode.startBattle([Species.CASTFORM]); + game.override.weather(weather).starterForms({ [SpeciesId.CASTFORM]: initialForm }); + await game.classicMode.startBattle([SpeciesId.CASTFORM]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); expect(game.scene.getPlayerPokemon()?.formIndex).toBe(form); }; @@ -40,13 +40,13 @@ describe("Abilities - Forecast", () => { /** * Tests reverting to normal form when Cloud Nine/Air Lock is active on the field * @param {GameManager} game The game manager instance - * @param {Abilities} ability The ability that is active on the field + * @param {AbilityId} ability The ability that is active on the field */ - const testRevertFormAgainstAbility = async (game: GameManager, ability: Abilities) => { - game.override.starterForms({ [Species.CASTFORM]: SUNNY_FORM }).enemyAbility(ability); - await game.classicMode.startBattle([Species.CASTFORM]); + const testRevertFormAgainstAbility = async (game: GameManager, ability: AbilityId) => { + game.override.starterForms({ [SpeciesId.CASTFORM]: SUNNY_FORM }).enemyAbility(ability); + await game.classicMode.startBattle([SpeciesId.CASTFORM]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); expect(game.scene.getPlayerPokemon()?.formIndex).toBe(NORMAL_FORM); }; @@ -64,117 +64,117 @@ describe("Abilities - Forecast", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.RAIN_DANCE, Moves.SUNNY_DAY, Moves.TACKLE]) - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH); + .moveset([MoveId.SPLASH, MoveId.RAIN_DANCE, MoveId.SUNNY_DAY, MoveId.TACKLE]) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH); }); it( "changes form based on weather", async () => { game.override - .moveset([Moves.RAIN_DANCE, Moves.SUNNY_DAY, Moves.SNOWSCAPE, Moves.SPLASH]) + .moveset([MoveId.RAIN_DANCE, MoveId.SUNNY_DAY, MoveId.SNOWSCAPE, MoveId.SPLASH]) .battleStyle("double") .starterForms({ - [Species.KYOGRE]: 1, - [Species.GROUDON]: 1, - [Species.RAYQUAZA]: 1, + [SpeciesId.KYOGRE]: 1, + [SpeciesId.GROUDON]: 1, + [SpeciesId.RAYQUAZA]: 1, }); await game.classicMode.startBattle([ - Species.CASTFORM, - Species.FEEBAS, - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.ALTARIA, + SpeciesId.CASTFORM, + SpeciesId.FEEBAS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.ALTARIA, ]); - vi.spyOn(game.scene.getPlayerParty()[5], "getAbility").mockReturnValue(allAbilities[Abilities.CLOUD_NINE]); + vi.spyOn(game.scene.getPlayerParty()[5], "getAbility").mockReturnValue(allAbilities[AbilityId.CLOUD_NINE]); const castform = game.scene.getPlayerField()[0]; expect(castform.formIndex).toBe(NORMAL_FORM); - game.move.select(Moves.RAIN_DANCE); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.RAIN_DANCE); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("MovePhase"); await game.toNextTurn(); expect(castform.formIndex).toBe(RAINY_FORM); - game.move.select(Moves.SUNNY_DAY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SUNNY_DAY); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("MovePhase"); await game.toNextTurn(); expect(castform.formIndex).toBe(SUNNY_FORM); - game.move.select(Moves.SNOWSCAPE); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SNOWSCAPE); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("MovePhase"); await game.toNextTurn(); expect(castform.formIndex).toBe(SNOWY_FORM); - game.override.moveset([Moves.HAIL, Moves.SANDSTORM, Moves.SNOWSCAPE, Moves.SPLASH]); + game.override.moveset([MoveId.HAIL, MoveId.SANDSTORM, MoveId.SNOWSCAPE, MoveId.SPLASH]); - game.move.select(Moves.SANDSTORM); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SANDSTORM); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("MovePhase"); await game.toNextTurn(); expect(castform.formIndex).toBe(NORMAL_FORM); - game.move.select(Moves.HAIL); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.HAIL); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("MovePhase"); await game.toNextTurn(); expect(castform.formIndex).toBe(SNOWY_FORM); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSwitchPokemon(2); // Feebas now 2, Kyogre 1 await game.phaseInterceptor.to("MovePhase"); await game.toNextTurn(); expect(castform.formIndex).toBe(RAINY_FORM); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSwitchPokemon(3); // Kyogre now 3, Groudon 1 await game.phaseInterceptor.to("MovePhase"); await game.toNextTurn(); expect(castform.formIndex).toBe(SUNNY_FORM); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSwitchPokemon(4); // Groudon now 4, Rayquaza 1 await game.phaseInterceptor.to("MovePhase"); await game.toNextTurn(); expect(castform.formIndex).toBe(NORMAL_FORM); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSwitchPokemon(2); // Rayquaza now 2, Feebas 1 await game.phaseInterceptor.to("MovePhase"); await game.toNextTurn(); expect(castform.formIndex).toBe(NORMAL_FORM); - game.move.select(Moves.SNOWSCAPE); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SNOWSCAPE); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("MovePhase"); await game.toNextTurn(); expect(castform.formIndex).toBe(SNOWY_FORM); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSwitchPokemon(5); // Feebas now 5, Altaria 1 await game.phaseInterceptor.to("MovePhase"); await game.toNextTurn(); expect(castform.formIndex).toBe(NORMAL_FORM); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSwitchPokemon(5); // Altaria now 5, Feebas 1 await game.phaseInterceptor.to("MovePhase"); await game.toNextTurn(); @@ -182,8 +182,8 @@ describe("Abilities - Forecast", () => { expect(castform.formIndex).toBe(SNOWY_FORM); game.scene.arena.trySetWeather(WeatherType.FOG); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("TurnStartPhase"); expect(castform.formIndex).toBe(NORMAL_FORM); @@ -196,14 +196,14 @@ describe("Abilities - Forecast", () => { }); it("reverts to Normal Form if a Pokémon on the field has Air Lock", async () => { - await testRevertFormAgainstAbility(game, Abilities.AIR_LOCK); + await testRevertFormAgainstAbility(game, AbilityId.AIR_LOCK); }); it("has no effect on Pokémon other than Castform", async () => { - game.override.enemyAbility(Abilities.FORECAST).enemySpecies(Species.SHUCKLE); - await game.classicMode.startBattle([Species.CASTFORM]); + game.override.enemyAbility(AbilityId.FORECAST).enemySpecies(SpeciesId.SHUCKLE); + await game.classicMode.startBattle([SpeciesId.CASTFORM]); - game.move.select(Moves.RAIN_DANCE); + game.move.select(MoveId.RAIN_DANCE); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.getPlayerPokemon()?.formIndex).toBe(RAINY_FORM); @@ -211,14 +211,14 @@ describe("Abilities - Forecast", () => { }); it("reverts to Normal Form when Forecast is suppressed, changes form to match the weather when it regains it", async () => { - game.override.enemyMoveset([Moves.GASTRO_ACID]).weather(WeatherType.RAIN); - await game.classicMode.startBattle([Species.CASTFORM, Species.PIKACHU]); + game.override.enemyMoveset([MoveId.GASTRO_ACID]).weather(WeatherType.RAIN); + await game.classicMode.startBattle([SpeciesId.CASTFORM, SpeciesId.PIKACHU]); const castform = game.scene.getPlayerPokemon()!; expect(castform.formIndex).toBe(RAINY_FORM); // First turn - Forecast is suppressed - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.move.forceHit(); @@ -242,11 +242,11 @@ describe("Abilities - Forecast", () => { }); it("does not change Castform's form until after Stealth Rock deals damage", async () => { - game.override.weather(WeatherType.RAIN).enemyMoveset([Moves.STEALTH_ROCK]); - await game.classicMode.startBattle([Species.PIKACHU, Species.CASTFORM]); + game.override.weather(WeatherType.RAIN).enemyMoveset([MoveId.STEALTH_ROCK]); + await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.CASTFORM]); // First turn - set up stealth rock - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // Second turn - switch in Castform, regains Forecast @@ -267,7 +267,7 @@ describe("Abilities - Forecast", () => { it("should be in Normal Form after the user is switched out", async () => { game.override.weather(WeatherType.RAIN); - await game.classicMode.startBattle([Species.CASTFORM, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.CASTFORM, SpeciesId.MAGIKARP]); const castform = game.scene.getPlayerPokemon()!; expect(castform.formIndex).toBe(RAINY_FORM); diff --git a/test/abilities/friend_guard.test.ts b/test/abilities/friend_guard.test.ts index 350ff737c58..d401fa96feb 100644 --- a/test/abilities/friend_guard.test.ts +++ b/test/abilities/friend_guard.test.ts @@ -1,6 +1,6 @@ -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -27,24 +27,24 @@ describe("Moves - Friend Guard", () => { game = new GameManager(phaserGame); game.override .battleStyle("double") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.TACKLE, Moves.SPLASH, Moves.DRAGON_RAGE]) - .enemySpecies(Species.SHUCKLE) - .moveset([Moves.SPLASH]) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.TACKLE, MoveId.SPLASH, MoveId.DRAGON_RAGE]) + .enemySpecies(SpeciesId.SHUCKLE) + .moveset([MoveId.SPLASH]) .startingLevel(100); }); it("should reduce damage that other allied Pokémon receive from attacks (from any Pokémon) by 25%", async () => { - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER]); const [player1, player2] = game.scene.getPlayerField(); const spy = vi.spyOn(player1, "getAttackDamage"); const enemy1 = game.scene.getEnemyField()[0]; - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); // Get the last return value from `getAttackDamage` @@ -52,16 +52,16 @@ describe("Moves - Friend Guard", () => { // Making sure the test is controlled; turn 1 damage is equal to base damage (after rounding) expect(turn1Damage).toBe( Math.floor( - player1.getBaseDamage({ source: enemy1, move: allMoves[Moves.TACKLE], moveCategory: MoveCategory.PHYSICAL }), + player1.getBaseDamage({ source: enemy1, move: allMoves[MoveId.TACKLE], moveCategory: MoveCategory.PHYSICAL }), ), ); - vi.spyOn(player2, "getAbility").mockReturnValue(allAbilities[Abilities.FRIEND_GUARD]); + vi.spyOn(player2, "getAbility").mockReturnValue(allAbilities[AbilityId.FRIEND_GUARD]); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); // Get the last return value from `getAttackDamage` @@ -69,32 +69,32 @@ describe("Moves - Friend Guard", () => { // With the ally's Friend Guard, damage should have been reduced from base damage by 25% expect(turn2Damage).toBe( Math.floor( - player1.getBaseDamage({ source: enemy1, move: allMoves[Moves.TACKLE], moveCategory: MoveCategory.PHYSICAL }) * + player1.getBaseDamage({ source: enemy1, move: allMoves[MoveId.TACKLE], moveCategory: MoveCategory.PHYSICAL }) * 0.75, ), ); }); it("should NOT reduce damage to pokemon with friend guard", async () => { - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER]); const player2 = game.scene.getPlayerField()[1]; const spy = vi.spyOn(player2, "getAttackDamage"); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); const turn1Damage = spy.mock.results[spy.mock.results.length - 1].value.damage; - vi.spyOn(player2, "getAbility").mockReturnValue(allAbilities[Abilities.FRIEND_GUARD]); + vi.spyOn(player2, "getAbility").mockReturnValue(allAbilities[AbilityId.FRIEND_GUARD]); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); const turn2Damage = spy.mock.results[spy.mock.results.length - 1].value.damage; @@ -102,26 +102,26 @@ describe("Moves - Friend Guard", () => { }); it("should NOT reduce damage from fixed damage attacks", async () => { - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER]); const [player1, player2] = game.scene.getPlayerField(); const spy = vi.spyOn(player1, "getAttackDamage"); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.DRAGON_RAGE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.DRAGON_RAGE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); const turn1Damage = spy.mock.results[spy.mock.results.length - 1].value.damage; expect(turn1Damage).toBe(40); - vi.spyOn(player2, "getAbility").mockReturnValue(allAbilities[Abilities.FRIEND_GUARD]); + vi.spyOn(player2, "getAbility").mockReturnValue(allAbilities[AbilityId.FRIEND_GUARD]); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.DRAGON_RAGE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.DRAGON_RAGE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); const turn2Damage = spy.mock.results[spy.mock.results.length - 1].value.damage; diff --git a/test/abilities/good_as_gold.test.ts b/test/abilities/good_as_gold.test.ts index adb54810381..d6c80a5347f 100644 --- a/test/abilities/good_as_gold.test.ts +++ b/test/abilities/good_as_gold.test.ts @@ -6,9 +6,9 @@ import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Stat } from "#app/enums/stat"; import { StatusEffect } from "#app/enums/status-effect"; import { WeatherType } from "#app/enums/weather-type"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -30,33 +30,33 @@ describe("Abilities - Good As Gold", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.GOOD_AS_GOLD) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.GOOD_AS_GOLD) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should block normal status moves", async () => { - game.override.enemyMoveset([Moves.GROWL]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.enemyMoveset([MoveId.GROWL]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const player = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH, 0); + game.move.select(MoveId.SPLASH, 0); await game.phaseInterceptor.to("BerryPhase"); - expect(player.waveData.abilitiesApplied).toContain(Abilities.GOOD_AS_GOLD); + expect(player.waveData.abilitiesApplied).toContain(AbilityId.GOOD_AS_GOLD); expect(player.getStatStage(Stat.ATK)).toBe(0); }); it("should block memento and prevent the user from fainting", async () => { - game.override.enemyMoveset([Moves.MEMENTO]); - await game.classicMode.startBattle([Species.MAGIKARP]); - game.move.select(Moves.MEMENTO); + game.override.enemyMoveset([MoveId.MEMENTO]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + game.move.select(MoveId.MEMENTO); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.isFainted()).toBe(false); expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(0); @@ -64,21 +64,21 @@ describe("Abilities - Good As Gold", () => { it("should not block any status moves that target the field, one side, or all pokemon", async () => { game.override.battleStyle("double"); - game.override.enemyMoveset([Moves.STEALTH_ROCK, Moves.HAZE]); - game.override.moveset([Moves.SWORDS_DANCE, Moves.SAFEGUARD]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + game.override.enemyMoveset([MoveId.STEALTH_ROCK, MoveId.HAZE]); + game.override.moveset([MoveId.SWORDS_DANCE, MoveId.SAFEGUARD]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); const [good_as_gold, ball_fetch] = game.scene.getPlayerField(); // Force second pokemon to have ball fetch to isolate to a single mon. - vi.spyOn(ball_fetch, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]); + vi.spyOn(ball_fetch, "getAbility").mockReturnValue(allAbilities[AbilityId.BALL_FETCH]); - game.move.select(Moves.SWORDS_DANCE, 0); - game.move.select(Moves.SAFEGUARD, 1); - await game.move.selectEnemyMove(Moves.STEALTH_ROCK); - await game.move.selectEnemyMove(Moves.HAZE); + game.move.select(MoveId.SWORDS_DANCE, 0); + game.move.select(MoveId.SAFEGUARD, 1); + await game.move.selectEnemyMove(MoveId.STEALTH_ROCK); + await game.move.selectEnemyMove(MoveId.HAZE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); - expect(good_as_gold.getAbility().id).toBe(Abilities.GOOD_AS_GOLD); + expect(good_as_gold.getAbility().id).toBe(AbilityId.GOOD_AS_GOLD); expect(good_as_gold.getStatStage(Stat.ATK)).toBe(0); expect(game.scene.arena.getTagOnSide(ArenaTagType.STEALTH_ROCK, ArenaTagSide.PLAYER)).toBeDefined(); expect(game.scene.arena.getTagOnSide(ArenaTagType.SAFEGUARD, ArenaTagSide.PLAYER)).toBeDefined(); @@ -86,10 +86,10 @@ describe("Abilities - Good As Gold", () => { it("should not block field targeted effects in singles", async () => { game.override.battleStyle("single"); - game.override.enemyMoveset([Moves.SPIKES]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.enemyMoveset([MoveId.SPIKES]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.SPLASH, 0); + game.move.select(MoveId.SPLASH, 0); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.PLAYER)).toBeDefined(); @@ -97,11 +97,11 @@ describe("Abilities - Good As Gold", () => { it("should block the ally's helping hand", async () => { game.override.battleStyle("double"); - game.override.moveset([Moves.HELPING_HAND, Moves.TACKLE]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + game.override.moveset([MoveId.HELPING_HAND, MoveId.TACKLE]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); - game.move.select(Moves.HELPING_HAND, 0); - game.move.select(Moves.TACKLE, 1); + game.move.select(MoveId.HELPING_HAND, 0); + game.move.select(MoveId.TACKLE, 1); await game.phaseInterceptor.to("MoveEndPhase", true); expect(game.scene.getPlayerField()[1].getTag(BattlerTagType.HELPING_HAND)).toBeUndefined(); @@ -110,30 +110,30 @@ describe("Abilities - Good As Gold", () => { // TODO: re-enable when heal bell is fixed it.todo("should block the ally's heal bell, but only if the good as gold user is on the field", async () => { game.override.battleStyle("double").statusEffect(StatusEffect.BURN); - await game.classicMode.startBattle([Species.MILOTIC, Species.FEEBAS, Species.ABRA]); + await game.classicMode.startBattle([SpeciesId.MILOTIC, SpeciesId.FEEBAS, SpeciesId.ABRA]); const [milotic, feebas, abra] = game.scene.getPlayerParty(); - game.field.mockAbility(milotic, Abilities.GOOD_AS_GOLD); - game.field.mockAbility(feebas, Abilities.BALL_FETCH); - game.field.mockAbility(abra, Abilities.BALL_FETCH); + game.field.mockAbility(milotic, AbilityId.GOOD_AS_GOLD); + game.field.mockAbility(feebas, AbilityId.BALL_FETCH); + game.field.mockAbility(abra, AbilityId.BALL_FETCH); // turn 1 - game.move.use(Moves.SPLASH, 0); - game.move.use(Moves.HEAL_BELL, 1); + game.move.use(MoveId.SPLASH, 0); + game.move.use(MoveId.HEAL_BELL, 1); await game.toNextTurn(); expect(milotic.status?.effect).toBe(StatusEffect.BURN); game.doSwitchPokemon(2); - game.move.use(Moves.HEAL_BELL, 1); + game.move.use(MoveId.HEAL_BELL, 1); await game.toNextTurn(); expect(milotic.status?.effect).toBeUndefined(); }); it("should not block field targeted effects like rain dance", async () => { game.override.battleStyle("single"); - game.override.enemyMoveset([Moves.RAIN_DANCE]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.enemyMoveset([MoveId.RAIN_DANCE]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.use(Moves.SPLASH, 0); + game.move.use(MoveId.SPLASH, 0); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.RAIN); diff --git a/test/abilities/gorilla_tactics.test.ts b/test/abilities/gorilla_tactics.test.ts index 06f0c1d0e3d..55b8a4addcd 100644 --- a/test/abilities/gorilla_tactics.test.ts +++ b/test/abilities/gorilla_tactics.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#app/enums/stat"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,46 +24,46 @@ describe("Abilities - Gorilla Tactics", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.SPLASH, Moves.DISABLE]) - .enemySpecies(Species.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.SPLASH, MoveId.DISABLE]) + .enemySpecies(SpeciesId.MAGIKARP) .enemyLevel(30) - .moveset([Moves.SPLASH, Moves.TACKLE, Moves.GROWL]) - .ability(Abilities.GORILLA_TACTICS); + .moveset([MoveId.SPLASH, MoveId.TACKLE, MoveId.GROWL]) + .ability(AbilityId.GORILLA_TACTICS); }); it("boosts the Pokémon's Attack by 50%, but limits the Pokémon to using only one move", async () => { - await game.classicMode.startBattle([Species.GALAR_DARMANITAN]); + await game.classicMode.startBattle([SpeciesId.GALAR_DARMANITAN]); const darmanitan = game.scene.getPlayerPokemon()!; const initialAtkStat = darmanitan.getStat(Stat.ATK); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(darmanitan.getStat(Stat.ATK, false)).toBeCloseTo(initialAtkStat * 1.5); // Other moves should be restricted - expect(darmanitan.isMoveRestricted(Moves.TACKLE)).toBe(true); - expect(darmanitan.isMoveRestricted(Moves.SPLASH)).toBe(false); + expect(darmanitan.isMoveRestricted(MoveId.TACKLE)).toBe(true); + expect(darmanitan.isMoveRestricted(MoveId.SPLASH)).toBe(false); }); it("should struggle if the only usable move is disabled", async () => { - await game.classicMode.startBattle([Species.GALAR_DARMANITAN]); + await game.classicMode.startBattle([SpeciesId.GALAR_DARMANITAN]); const darmanitan = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; // First turn, lock move to Growl - game.move.select(Moves.GROWL); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.GROWL); + await game.move.selectEnemyMove(MoveId.SPLASH); // Second turn, Growl is interrupted by Disable await game.toNextTurn(); - game.move.select(Moves.GROWL); - await game.move.selectEnemyMove(Moves.DISABLE); + game.move.select(MoveId.GROWL); + await game.move.selectEnemyMove(MoveId.DISABLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); @@ -72,7 +72,7 @@ describe("Abilities - Gorilla Tactics", () => { // Third turn, Struggle is used await game.toNextTurn(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); diff --git a/test/abilities/gulp_missile.test.ts b/test/abilities/gulp_missile.test.ts index 64cd106cc5e..b56b316484f 100644 --- a/test/abilities/gulp_missile.test.ts +++ b/test/abilities/gulp_missile.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; import type Pokemon from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; @@ -43,20 +43,20 @@ describe("Abilities - Gulp Missile", () => { game.override .disableCrits() .battleStyle("single") - .moveset([Moves.SURF, Moves.DIVE, Moves.SPLASH, Moves.SUBSTITUTE]) - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) + .moveset([MoveId.SURF, MoveId.DIVE, MoveId.SPLASH, MoveId.SUBSTITUTE]) + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(5); }); it("changes to Gulping Form if HP is over half when Surf or Dive is used", async () => { - await game.classicMode.startBattle([Species.CRAMORANT]); + await game.classicMode.startBattle([SpeciesId.CRAMORANT]); const cramorant = game.scene.getPlayerPokemon()!; - game.move.select(Moves.DIVE); + game.move.select(MoveId.DIVE); await game.toNextTurn(); - game.move.select(Moves.DIVE); + game.move.select(MoveId.DIVE); await game.phaseInterceptor.to("MoveEndPhase"); expect(cramorant.getHpRatio()).toBeGreaterThanOrEqual(0.5); @@ -65,13 +65,13 @@ describe("Abilities - Gulp Missile", () => { }); it("changes to Gorging Form if HP is under half when Surf or Dive is used", async () => { - await game.classicMode.startBattle([Species.CRAMORANT]); + await game.classicMode.startBattle([SpeciesId.CRAMORANT]); const cramorant = game.scene.getPlayerPokemon()!; vi.spyOn(cramorant, "getHpRatio").mockReturnValue(0.49); expect(cramorant.getHpRatio()).toBe(0.49); - game.move.select(Moves.SURF); + game.move.select(MoveId.SURF); await game.phaseInterceptor.to("MoveEndPhase"); expect(cramorant.getTag(BattlerTagType.GULP_MISSILE_PIKACHU)).toBeDefined(); @@ -79,10 +79,10 @@ describe("Abilities - Gulp Missile", () => { }); it("changes to base form when switched out after Surf or Dive is used", async () => { - await game.classicMode.startBattle([Species.CRAMORANT, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.CRAMORANT, SpeciesId.MAGIKARP]); const cramorant = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SURF); + game.move.select(MoveId.SURF); await game.toNextTurn(); game.doSwitchPokemon(1); @@ -94,10 +94,10 @@ describe("Abilities - Gulp Missile", () => { }); it("changes form during Dive's charge turn", async () => { - await game.classicMode.startBattle([Species.CRAMORANT]); + await game.classicMode.startBattle([SpeciesId.CRAMORANT]); const cramorant = game.scene.getPlayerPokemon()!; - game.move.select(Moves.DIVE); + game.move.select(MoveId.DIVE); await game.phaseInterceptor.to("MoveEndPhase"); expect(cramorant.getTag(BattlerTagType.GULP_MISSILE_ARROKUDA)).toBeDefined(); @@ -105,26 +105,26 @@ describe("Abilities - Gulp Missile", () => { }); it("deals 1/4 of the attacker's maximum HP when hit by a damaging attack", async () => { - game.override.enemyMoveset(Moves.TACKLE); - await game.classicMode.startBattle([Species.CRAMORANT]); + game.override.enemyMoveset(MoveId.TACKLE); + await game.classicMode.startBattle([SpeciesId.CRAMORANT]); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "damageAndUpdate"); - game.move.select(Moves.SURF); + game.move.select(MoveId.SURF); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.damageAndUpdate).toHaveReturnedWith(getEffectDamage(enemy)); }); it("does not have any effect when hit by non-damaging attack", async () => { - game.override.enemyMoveset(Moves.TAIL_WHIP); - await game.classicMode.startBattle([Species.CRAMORANT]); + game.override.enemyMoveset(MoveId.TAIL_WHIP); + await game.classicMode.startBattle([SpeciesId.CRAMORANT]); const cramorant = game.scene.getPlayerPokemon()!; vi.spyOn(cramorant, "getHpRatio").mockReturnValue(0.55); - game.move.select(Moves.SURF); + game.move.select(MoveId.SURF); await game.phaseInterceptor.to("MoveEndPhase"); expect(cramorant.getTag(BattlerTagType.GULP_MISSILE_ARROKUDA)).toBeDefined(); @@ -137,8 +137,8 @@ describe("Abilities - Gulp Missile", () => { }); it("lowers attacker's DEF stat stage by 1 when hit in Gulping form", async () => { - game.override.enemyMoveset(Moves.TACKLE); - await game.classicMode.startBattle([Species.CRAMORANT]); + game.override.enemyMoveset(MoveId.TACKLE); + await game.classicMode.startBattle([SpeciesId.CRAMORANT]); const cramorant = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -146,7 +146,7 @@ describe("Abilities - Gulp Missile", () => { vi.spyOn(enemy, "damageAndUpdate"); vi.spyOn(cramorant, "getHpRatio").mockReturnValue(0.55); - game.move.select(Moves.SURF); + game.move.select(MoveId.SURF); await game.phaseInterceptor.to("MoveEndPhase"); expect(cramorant.getTag(BattlerTagType.GULP_MISSILE_ARROKUDA)).toBeDefined(); @@ -161,8 +161,8 @@ describe("Abilities - Gulp Missile", () => { }); it("paralyzes the enemy when hit in Gorging form", async () => { - game.override.enemyMoveset(Moves.TACKLE); - await game.classicMode.startBattle([Species.CRAMORANT]); + game.override.enemyMoveset(MoveId.TACKLE); + await game.classicMode.startBattle([SpeciesId.CRAMORANT]); const cramorant = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -170,7 +170,7 @@ describe("Abilities - Gulp Missile", () => { vi.spyOn(enemy, "damageAndUpdate"); vi.spyOn(cramorant, "getHpRatio").mockReturnValue(0.45); - game.move.select(Moves.SURF); + game.move.select(MoveId.SURF); await game.phaseInterceptor.to("MoveEndPhase"); expect(cramorant.getTag(BattlerTagType.GULP_MISSILE_PIKACHU)).toBeDefined(); @@ -185,12 +185,12 @@ describe("Abilities - Gulp Missile", () => { }); it("does not activate the ability when underwater", async () => { - game.override.enemyMoveset(Moves.SURF); - await game.classicMode.startBattle([Species.CRAMORANT]); + game.override.enemyMoveset(MoveId.SURF); + await game.classicMode.startBattle([SpeciesId.CRAMORANT]); const cramorant = game.scene.getPlayerPokemon()!; - game.move.select(Moves.DIVE); + game.move.select(MoveId.DIVE); await game.phaseInterceptor.to("BerryPhase", false); expect(cramorant.getTag(BattlerTagType.GULP_MISSILE_ARROKUDA)).toBeDefined(); @@ -198,15 +198,15 @@ describe("Abilities - Gulp Missile", () => { }); it("prevents effect damage but inflicts secondary effect on attacker with Magic Guard", async () => { - game.override.enemyMoveset(Moves.TACKLE).enemyAbility(Abilities.MAGIC_GUARD); - await game.classicMode.startBattle([Species.CRAMORANT]); + game.override.enemyMoveset(MoveId.TACKLE).enemyAbility(AbilityId.MAGIC_GUARD); + await game.classicMode.startBattle([SpeciesId.CRAMORANT]); const cramorant = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(cramorant, "getHpRatio").mockReturnValue(0.55); - game.move.select(Moves.SURF); + game.move.select(MoveId.SURF); await game.phaseInterceptor.to("MoveEndPhase"); const enemyHpPreEffect = enemy.hp; @@ -222,12 +222,12 @@ describe("Abilities - Gulp Missile", () => { }); it("activates on faint", async () => { - game.override.enemyMoveset(Moves.THUNDERBOLT); - await game.classicMode.startBattle([Species.CRAMORANT]); + game.override.enemyMoveset(MoveId.THUNDERBOLT); + await game.classicMode.startBattle([SpeciesId.CRAMORANT]); const cramorant = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SURF); + game.move.select(MoveId.SURF); await game.phaseInterceptor.to("FaintPhase"); expect(cramorant.hp).toBe(0); @@ -237,17 +237,17 @@ describe("Abilities - Gulp Missile", () => { }); it("doesn't trigger if user is behind a substitute", async () => { - game.override.enemyAbility(Abilities.STURDY).enemyMoveset([Moves.SPLASH, Moves.POWER_TRIP]); - await game.classicMode.startBattle([Species.CRAMORANT]); + game.override.enemyAbility(AbilityId.STURDY).enemyMoveset([MoveId.SPLASH, MoveId.POWER_TRIP]); + await game.classicMode.startBattle([SpeciesId.CRAMORANT]); - game.move.select(Moves.SURF); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SURF); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!.formIndex).toBe(GULPING_FORM); - game.move.select(Moves.SUBSTITUTE); - await game.move.selectEnemyMove(Moves.POWER_TRIP); + game.move.select(MoveId.SUBSTITUTE); + await game.move.selectEnemyMove(MoveId.POWER_TRIP); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); @@ -255,13 +255,13 @@ describe("Abilities - Gulp Missile", () => { }); it("cannot be suppressed", async () => { - game.override.enemyMoveset(Moves.GASTRO_ACID); - await game.classicMode.startBattle([Species.CRAMORANT]); + game.override.enemyMoveset(MoveId.GASTRO_ACID); + await game.classicMode.startBattle([SpeciesId.CRAMORANT]); const cramorant = game.scene.getPlayerPokemon()!; vi.spyOn(cramorant, "getHpRatio").mockReturnValue(0.55); - game.move.select(Moves.SURF); + game.move.select(MoveId.SURF); await game.phaseInterceptor.to("MoveEndPhase"); expect(cramorant.getTag(BattlerTagType.GULP_MISSILE_ARROKUDA)).toBeDefined(); @@ -269,19 +269,19 @@ describe("Abilities - Gulp Missile", () => { await game.phaseInterceptor.to("TurnEndPhase"); - expect(cramorant.hasAbility(Abilities.GULP_MISSILE)).toBe(true); + expect(cramorant.hasAbility(AbilityId.GULP_MISSILE)).toBe(true); expect(cramorant.getTag(BattlerTagType.GULP_MISSILE_ARROKUDA)).toBeDefined(); expect(cramorant.formIndex).toBe(GULPING_FORM); }); it("cannot be swapped with another ability", async () => { - game.override.enemyMoveset(Moves.SKILL_SWAP); - await game.classicMode.startBattle([Species.CRAMORANT]); + game.override.enemyMoveset(MoveId.SKILL_SWAP); + await game.classicMode.startBattle([SpeciesId.CRAMORANT]); const cramorant = game.scene.getPlayerPokemon()!; vi.spyOn(cramorant, "getHpRatio").mockReturnValue(0.55); - game.move.select(Moves.SURF); + game.move.select(MoveId.SURF); await game.phaseInterceptor.to("MoveEndPhase"); expect(cramorant.getTag(BattlerTagType.GULP_MISSILE_ARROKUDA)).toBeDefined(); @@ -289,18 +289,18 @@ describe("Abilities - Gulp Missile", () => { await game.phaseInterceptor.to("TurnEndPhase"); - expect(cramorant.hasAbility(Abilities.GULP_MISSILE)).toBe(true); + expect(cramorant.hasAbility(AbilityId.GULP_MISSILE)).toBe(true); expect(cramorant.getTag(BattlerTagType.GULP_MISSILE_ARROKUDA)).toBeDefined(); expect(cramorant.formIndex).toBe(GULPING_FORM); }); it("cannot be copied", async () => { - game.override.enemyAbility(Abilities.TRACE); + game.override.enemyAbility(AbilityId.TRACE); - await game.classicMode.startBattle([Species.CRAMORANT]); - game.move.select(Moves.SPLASH); + await game.classicMode.startBattle([SpeciesId.CRAMORANT]); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnStartPhase"); - expect(game.scene.getEnemyPokemon()?.hasAbility(Abilities.GULP_MISSILE)).toBe(false); + expect(game.scene.getEnemyPokemon()?.hasAbility(AbilityId.GULP_MISSILE)).toBe(false); }); }); diff --git a/test/abilities/harvest.test.ts b/test/abilities/harvest.test.ts index 36b1b879598..5a6ddf35459 100644 --- a/test/abilities/harvest.test.ts +++ b/test/abilities/harvest.test.ts @@ -4,10 +4,10 @@ import type Pokemon from "#app/field/pokemon"; import { BerryModifier, PreserveBerryModifier } from "#app/modifier/modifier"; import type { ModifierOverride } from "#app/modifier/modifier-type"; import type { BooleanHolder } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BerryType } from "#enums/berry-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { WeatherType } from "#enums/weather-type"; import GameManager from "#test/testUtils/gameManager"; @@ -43,25 +43,25 @@ describe("Abilities - Harvest", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.NATURAL_GIFT, Moves.FALSE_SWIPE, Moves.GASTRO_ACID]) - .ability(Abilities.HARVEST) + .moveset([MoveId.SPLASH, MoveId.NATURAL_GIFT, MoveId.FALSE_SWIPE, MoveId.GASTRO_ACID]) + .ability(AbilityId.HARVEST) .startingLevel(100) .battleStyle("single") .disableCrits() .statusActivation(false) // Since we're using nuzzle to proc both enigma and sitrus berries .weather(WeatherType.SUNNY) // guaranteed recovery .enemyLevel(1) - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.SPLASH, Moves.NUZZLE, Moves.KNOCK_OFF, Moves.INCINERATE]); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.SPLASH, MoveId.NUZZLE, MoveId.KNOCK_OFF, MoveId.INCINERATE]); }); it("replenishes eaten berries", async () => { game.override.startingHeldItems([{ name: "BERRY", type: BerryType.LUM, count: 1 }]); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.NUZZLE); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.NUZZLE); await game.phaseInterceptor.to("BerryPhase"); expect(getPlayerBerries()).toHaveLength(0); expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toHaveLength(1); @@ -79,15 +79,15 @@ describe("Abilities - Harvest", () => { { name: "BERRY", type: BerryType.ENIGMA, count: 2 }, { name: "BERRY", type: BerryType.LUM, count: 2 }, ]) - .enemyAbility(Abilities.NEUTRALIZING_GAS); - await game.classicMode.startBattle([Species.MILOTIC]); + .enemyAbility(AbilityId.NEUTRALIZING_GAS); + await game.classicMode.startBattle([SpeciesId.MILOTIC]); const milotic = game.scene.getPlayerPokemon()!; expect(milotic).toBeDefined(); // Chug a few berries without harvest (should get tracked) - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.NUZZLE); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.NUZZLE); await game.toNextTurn(); expect(milotic.battleData.berriesEaten).toEqual(expect.arrayContaining([BerryType.ENIGMA, BerryType.LUM])); @@ -96,9 +96,9 @@ describe("Abilities - Harvest", () => { // Give ourselves harvest and disable enemy neut gas, // but force our roll to fail so we don't accidentally recover anything vi.spyOn(PostTurnRestoreBerryAbAttr.prototype, "canApplyPostTurn").mockReturnValueOnce(false); - game.override.ability(Abilities.HARVEST); - game.move.select(Moves.GASTRO_ACID); - await game.move.selectEnemyMove(Moves.NUZZLE); + game.override.ability(AbilityId.HARVEST); + game.move.select(MoveId.GASTRO_ACID); + await game.move.selectEnemyMove(MoveId.NUZZLE); await game.toNextTurn(); @@ -108,8 +108,8 @@ describe("Abilities - Harvest", () => { expect(getPlayerBerries()).toHaveLength(0); // proc a high roll and we _should_ get a berry back! - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); expect(milotic.battleData.berriesEaten).toHaveLength(3); @@ -119,14 +119,14 @@ describe("Abilities - Harvest", () => { it("remembers berries eaten array across waves", async () => { game.override .startingHeldItems([{ name: "BERRY", type: BerryType.PETAYA, count: 2 }]) - .ability(Abilities.BALL_FETCH); // don't actually need harvest for this test - await game.classicMode.startBattle([Species.REGIELEKI]); + .ability(AbilityId.BALL_FETCH); // don't actually need harvest for this test + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const regieleki = game.scene.getPlayerPokemon()!; regieleki.hp = 1; - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to("TurnEndPhase"); @@ -145,16 +145,16 @@ describe("Abilities - Harvest", () => { it("keeps harvested berries across reloads", async () => { game.override .startingHeldItems([{ name: "BERRY", type: BerryType.PETAYA, count: 1 }]) - .moveset([Moves.SPLASH, Moves.EARTHQUAKE]) - .enemyMoveset([Moves.SUPER_FANG, Moves.HEAL_PULSE]) - .enemyAbility(Abilities.COMPOUND_EYES); - await game.classicMode.startBattle([Species.REGIELEKI]); + .moveset([MoveId.SPLASH, MoveId.EARTHQUAKE]) + .enemyMoveset([MoveId.SUPER_FANG, MoveId.HEAL_PULSE]) + .enemyAbility(AbilityId.COMPOUND_EYES); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const regieleki = game.scene.getPlayerPokemon()!; regieleki.hp = regieleki.getMaxHp() / 4 + 1; - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SUPER_FANG); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SUPER_FANG); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); @@ -164,8 +164,8 @@ describe("Abilities - Harvest", () => { expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.SPATK)).toBe(1); // heal up so harvest doesn't proc and kill enemy - game.move.select(Moves.EARTHQUAKE); - await game.move.selectEnemyMove(Moves.HEAL_PULSE); + game.move.select(MoveId.EARTHQUAKE); + await game.move.selectEnemyMove(MoveId.HEAL_PULSE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextWave(); @@ -185,13 +185,13 @@ describe("Abilities - Harvest", () => { { name: "BERRY", type: BerryType.STARF, count: 2 }, ]; game.override.startingHeldItems(initBerries); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const feebas = game.scene.getPlayerPokemon()!; feebas.battleData.berriesEaten = [BerryType.LUM, BerryType.STARF]; - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); // Force RNG roll to hit the first berry we find that matches. @@ -213,13 +213,13 @@ describe("Abilities - Harvest", () => { { name: "BERRY", type: BerryType.STARF, count: 3 }, ]; game.override.startingHeldItems(initBerries); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const player = game.scene.getPlayerPokemon()!; player.battleData.berriesEaten = [BerryType.LUM, BerryType.STARF]; - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expectBerriesContaining(...initBerries); @@ -228,10 +228,10 @@ describe("Abilities - Harvest", () => { describe("move/ability interactions", () => { it("cannot restore incinerated berries", async () => { game.override.startingHeldItems([{ name: "BERRY", type: BerryType.STARF, count: 3 }]); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.INCINERATE); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.INCINERATE); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]); @@ -239,10 +239,10 @@ describe("Abilities - Harvest", () => { it("cannot restore knocked off berries", async () => { game.override.startingHeldItems([{ name: "BERRY", type: BerryType.STARF, count: 3 }]); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.KNOCK_OFF); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.KNOCK_OFF); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]); @@ -250,11 +250,11 @@ describe("Abilities - Harvest", () => { it("can restore berries eaten by Teatime", async () => { const initBerries: ModifierOverride[] = [{ name: "BERRY", type: BerryType.STARF, count: 1 }]; - game.override.startingHeldItems(initBerries).enemyMoveset(Moves.TEATIME); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.startingHeldItems(initBerries).enemyMoveset(MoveId.TEATIME); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); // nom nom the berr berr yay yay - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]); @@ -263,11 +263,11 @@ describe("Abilities - Harvest", () => { it("cannot restore Plucked berries for either side", async () => { const initBerries: ModifierOverride[] = [{ name: "BERRY", type: BerryType.PETAYA, count: 1 }]; - game.override.startingHeldItems(initBerries).enemyAbility(Abilities.HARVEST).enemyMoveset(Moves.PLUCK); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.startingHeldItems(initBerries).enemyAbility(AbilityId.HARVEST).enemyMoveset(MoveId.PLUCK); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); // gobble gobble gobble - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); // pluck triggers harvest for neither side @@ -287,9 +287,9 @@ describe("Abilities - Harvest", () => { const initBerries: ModifierOverride[] = [{ name: "BERRY", type: BerryType.PETAYA, count: 1 }]; game.override.startingHeldItems(initBerries).startingModifier([{ name: "BERRY_POUCH", count: 1 }]); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase", false); // won't trigger harvest since we didn't lose the berry (it just doesn't ever add it to the array) @@ -299,16 +299,16 @@ describe("Abilities - Harvest", () => { it("can restore stolen berries", async () => { const initBerries: ModifierOverride[] = [{ name: "BERRY", type: BerryType.SITRUS, count: 1 }]; - game.override.enemyHeldItems(initBerries).passiveAbility(Abilities.MAGICIAN).hasPassiveAbility(true); - await game.classicMode.startBattle([Species.MEOWSCARADA]); + game.override.enemyHeldItems(initBerries).passiveAbility(AbilityId.MAGICIAN).hasPassiveAbility(true); + await game.classicMode.startBattle([SpeciesId.MEOWSCARADA]); // pre damage const player = game.scene.getPlayerPokemon()!; player.hp = 1; // steal a sitrus and immediately consume it - game.move.select(Moves.FALSE_SWIPE); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.FALSE_SWIPE); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(player.battleData.berriesEaten).toEqual([BerryType.SITRUS]); @@ -320,10 +320,10 @@ describe("Abilities - Harvest", () => { // TODO: Enable once fling actually works...??? it.todo("can restore berries flung at user", async () => { - game.override.enemyHeldItems([{ name: "BERRY", type: BerryType.STARF, count: 1 }]).enemyMoveset(Moves.FLING); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.enemyHeldItems([{ name: "BERRY", type: BerryType.STARF, count: 1 }]).enemyMoveset(MoveId.FLING); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toBe([]); @@ -334,9 +334,9 @@ describe("Abilities - Harvest", () => { it.todo("can restore berries consumed via Natural Gift", async () => { const initBerries: ModifierOverride[] = [{ name: "BERRY", type: BerryType.STARF, count: 1 }]; game.override.startingHeldItems(initBerries); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.NATURAL_GIFT); + game.move.select(MoveId.NATURAL_GIFT); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toHaveLength(0); diff --git a/test/abilities/healer.test.ts b/test/abilities/healer.test.ts index d292ad0f625..7f71be7b86e 100644 --- a/test/abilities/healer.test.ts +++ b/test/abilities/healer.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -30,29 +30,29 @@ describe("Abilities - Healer", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("double") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); - healerAttr = allAbilities[Abilities.HEALER].getAttrs(PostTurnResetStatusAbAttr)[0]; + healerAttr = allAbilities[AbilityId.HEALER].getAttrs(PostTurnResetStatusAbAttr)[0]; healerAttrSpy = vi .spyOn(healerAttr, "getCondition") .mockReturnValue((pokemon: Pokemon) => !isNullOrUndefined(pokemon.getAlly())); }); it("should not queue a message phase for healing if the ally has fainted", async () => { - game.override.moveset([Moves.SPLASH, Moves.LUNAR_DANCE]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + game.override.moveset([MoveId.SPLASH, MoveId.LUNAR_DANCE]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); const user = game.scene.getPlayerPokemon()!; // Only want one magikarp to have the ability. - vi.spyOn(user, "getAbility").mockReturnValue(allAbilities[Abilities.HEALER]); - game.move.select(Moves.SPLASH); + vi.spyOn(user, "getAbility").mockReturnValue(allAbilities[AbilityId.HEALER]); + game.move.select(MoveId.SPLASH); // faint the ally - game.move.select(Moves.LUNAR_DANCE, 1); + game.move.select(MoveId.LUNAR_DANCE, 1); const abSpy = vi.spyOn(healerAttr, "canApplyPostTurn"); await game.phaseInterceptor.to("TurnEndPhase"); @@ -65,13 +65,13 @@ describe("Abilities - Healer", () => { }); it("should heal the status of an ally if the ally has a status", async () => { - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); const [user, ally] = game.scene.getPlayerField(); // Only want one magikarp to have the ability. - vi.spyOn(user, "getAbility").mockReturnValue(allAbilities[Abilities.HEALER]); + vi.spyOn(user, "getAbility").mockReturnValue(allAbilities[AbilityId.HEALER]); expect(ally.trySetStatus(StatusEffect.BURN)).toBe(true); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("TurnEndPhase"); await game.toNextTurn(); @@ -81,13 +81,13 @@ describe("Abilities - Healer", () => { // TODO: Healer is currently checked before the it.todo("should heal a burn before its end of turn damage", async () => { - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); const [user, ally] = game.scene.getPlayerField(); // Only want one magikarp to have the ability. - vi.spyOn(user, "getAbility").mockReturnValue(allAbilities[Abilities.HEALER]); + vi.spyOn(user, "getAbility").mockReturnValue(allAbilities[AbilityId.HEALER]); expect(ally.trySetStatus(StatusEffect.BURN)).toBe(true); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("TurnEndPhase"); await game.toNextTurn(); diff --git a/test/abilities/heatproof.test.ts b/test/abilities/heatproof.test.ts index 0bec7e4a3db..f705e8bf785 100644 --- a/test/abilities/heatproof.test.ts +++ b/test/abilities/heatproof.test.ts @@ -1,9 +1,9 @@ -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#app/enums/status-effect"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { toDmgValue } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -27,13 +27,13 @@ describe("Abilities - Heatproof", () => { game.override .battleStyle("single") .disableCrits() - .enemySpecies(Species.CHARMANDER) - .enemyAbility(Abilities.HEATPROOF) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.CHARMANDER) + .enemyAbility(AbilityId.HEATPROOF) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(100) - .starterSpecies(Species.CHANDELURE) - .ability(Abilities.BALL_FETCH) - .moveset([Moves.FLAMETHROWER, Moves.SPLASH]) + .starterSpecies(SpeciesId.CHANDELURE) + .ability(AbilityId.BALL_FETCH) + .moveset([MoveId.FLAMETHROWER, MoveId.SPLASH]) .startingLevel(100); }); @@ -44,14 +44,14 @@ describe("Abilities - Heatproof", () => { const initialHP = 1000; enemy.hp = initialHP; - game.move.select(Moves.FLAMETHROWER); + game.move.select(MoveId.FLAMETHROWER); await game.phaseInterceptor.to(TurnEndPhase); const heatproofDamage = initialHP - enemy.hp; enemy.hp = initialHP; - game.override.enemyAbility(Abilities.BALL_FETCH); + game.override.enemyAbility(AbilityId.BALL_FETCH); - game.move.select(Moves.FLAMETHROWER); + game.move.select(MoveId.FLAMETHROWER); await game.phaseInterceptor.to(TurnEndPhase); const regularDamage = initialHP - enemy.hp; @@ -60,12 +60,12 @@ describe("Abilities - Heatproof", () => { }); it("reduces Burn damage by half", async () => { - game.override.enemyStatusEffect(StatusEffect.BURN).enemySpecies(Species.ABRA); + game.override.enemyStatusEffect(StatusEffect.BURN).enemySpecies(SpeciesId.ABRA); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // Normal burn damage is /16 diff --git a/test/abilities/honey_gather.test.ts b/test/abilities/honey_gather.test.ts index a74a40c9c1e..e2f87f0af37 100644 --- a/test/abilities/honey_gather.test.ts +++ b/test/abilities/honey_gather.test.ts @@ -1,8 +1,8 @@ import type { CommandPhase } from "#app/phases/command-phase"; import { Command } from "#app/ui/command-ui-handler"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -24,32 +24,32 @@ describe("Abilities - Honey Gather", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.ROAR, Moves.THUNDERBOLT]) + .moveset([MoveId.SPLASH, MoveId.ROAR, MoveId.THUNDERBOLT]) .startingLevel(100) - .ability(Abilities.HONEY_GATHER) - .passiveAbility(Abilities.RUN_AWAY) + .ability(AbilityId.HONEY_GATHER) + .passiveAbility(AbilityId.RUN_AWAY) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should give money when winning a battle", async () => { - await game.classicMode.startBattle([Species.MILOTIC]); + await game.classicMode.startBattle([SpeciesId.MILOTIC]); game.scene.money = 1000; - game.move.select(Moves.THUNDERBOLT); + game.move.select(MoveId.THUNDERBOLT); await game.toNextWave(); expect(game.scene.money).toBeGreaterThan(1000); }); it("should not give money when the enemy pokemon flees", async () => { - await game.classicMode.startBattle([Species.MILOTIC]); + await game.classicMode.startBattle([SpeciesId.MILOTIC]); game.scene.money = 1000; - game.move.select(Moves.ROAR); + game.move.select(MoveId.ROAR); await game.toNextTurn(); expect(game.scene.money).toBe(1000); @@ -57,7 +57,7 @@ describe("Abilities - Honey Gather", () => { }); it("should not give money when the player flees", async () => { - await game.classicMode.startBattle([Species.MILOTIC]); + await game.classicMode.startBattle([SpeciesId.MILOTIC]); game.scene.money = 1000; // something weird is going on with the test framework, so this is required to prevent a crash diff --git a/test/abilities/hustle.test.ts b/test/abilities/hustle.test.ts index 85b6e611d6d..58aa01bb39a 100644 --- a/test/abilities/hustle.test.ts +++ b/test/abilities/hustle.test.ts @@ -1,8 +1,8 @@ import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { Stat } from "#app/enums/stat"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -24,23 +24,23 @@ describe("Abilities - Hustle", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .ability(Abilities.HUSTLE) - .moveset([Moves.TACKLE, Moves.GIGA_DRAIN, Moves.FISSURE]) + .ability(AbilityId.HUSTLE) + .moveset([MoveId.TACKLE, MoveId.GIGA_DRAIN, MoveId.FISSURE]) .disableCrits() .battleStyle("single") - .enemyMoveset(Moves.SPLASH) - .enemySpecies(Species.SHUCKLE) - .enemyAbility(Abilities.BALL_FETCH); + .enemyMoveset(MoveId.SPLASH) + .enemySpecies(SpeciesId.SHUCKLE) + .enemyAbility(AbilityId.BALL_FETCH); }); it("increases the user's Attack stat by 50%", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const pikachu = game.scene.getPlayerPokemon()!; const atk = pikachu.stats[Stat.ATK]; vi.spyOn(pikachu, "getEffectiveStat"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.move.forceHit(); await game.phaseInterceptor.to("DamageAnimPhase"); @@ -48,26 +48,26 @@ describe("Abilities - Hustle", () => { }); it("lowers the accuracy of the user's physical moves by 20%", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const pikachu = game.scene.getPlayerPokemon()!; vi.spyOn(pikachu, "getAccuracyMultiplier"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("MoveEffectPhase"); expect(pikachu.getAccuracyMultiplier).toHaveReturnedWith(0.8); }); it("does not affect non-physical moves", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const pikachu = game.scene.getPlayerPokemon()!; const spatk = pikachu.stats[Stat.SPATK]; vi.spyOn(pikachu, "getEffectiveStat"); vi.spyOn(pikachu, "getAccuracyMultiplier"); - game.move.select(Moves.GIGA_DRAIN); + game.move.select(MoveId.GIGA_DRAIN); await game.phaseInterceptor.to("DamageAnimPhase"); expect(pikachu.getEffectiveStat).toHaveReturnedWith(spatk); @@ -78,18 +78,18 @@ describe("Abilities - Hustle", () => { game.override.startingLevel(100); game.override.enemyLevel(30); - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const pikachu = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; vi.spyOn(pikachu, "getAccuracyMultiplier"); - vi.spyOn(allMoves[Moves.FISSURE], "calculateBattleAccuracy"); + vi.spyOn(allMoves[MoveId.FISSURE], "calculateBattleAccuracy"); - game.move.select(Moves.FISSURE); + game.move.select(MoveId.FISSURE); await game.phaseInterceptor.to("DamageAnimPhase"); expect(enemyPokemon.turnData.damageTaken).toBe(enemyPokemon.getMaxHp()); expect(pikachu.getAccuracyMultiplier).toHaveReturnedWith(1); - expect(allMoves[Moves.FISSURE].calculateBattleAccuracy).toHaveReturnedWith(100); + expect(allMoves[MoveId.FISSURE].calculateBattleAccuracy).toHaveReturnedWith(100); }); }); diff --git a/test/abilities/hyper_cutter.test.ts b/test/abilities/hyper_cutter.test.ts index 76b66c2990e..211be9a0533 100644 --- a/test/abilities/hyper_cutter.test.ts +++ b/test/abilities/hyper_cutter.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,11 +24,11 @@ describe("Abilities - Hyper Cutter", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .moveset([Moves.SAND_ATTACK, Moves.NOBLE_ROAR, Moves.DEFOG, Moves.OCTOLOCK]) - .ability(Abilities.BALL_FETCH) - .enemySpecies(Species.SHUCKLE) - .enemyAbility(Abilities.HYPER_CUTTER) - .enemyMoveset(Moves.SPLASH); + .moveset([MoveId.SAND_ATTACK, MoveId.NOBLE_ROAR, MoveId.DEFOG, MoveId.OCTOLOCK]) + .ability(AbilityId.BALL_FETCH) + .enemySpecies(SpeciesId.SHUCKLE) + .enemyAbility(AbilityId.HYPER_CUTTER) + .enemyMoveset(MoveId.SPLASH); }); // Reference Link: https://bulbapedia.bulbagarden.net/wiki/Hyper_Cutter_(Ability) @@ -38,16 +38,16 @@ describe("Abilities - Hyper Cutter", () => { const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.OCTOLOCK); + game.move.select(MoveId.OCTOLOCK); await game.toNextTurn(); - game.move.select(Moves.DEFOG); + game.move.select(MoveId.DEFOG); await game.toNextTurn(); - game.move.select(Moves.NOBLE_ROAR); + game.move.select(MoveId.NOBLE_ROAR); await game.toNextTurn(); - game.move.select(Moves.SAND_ATTACK); + game.move.select(MoveId.SAND_ATTACK); await game.toNextTurn(); - game.override.moveset([Moves.STRING_SHOT]); - game.move.select(Moves.STRING_SHOT); + game.override.moveset([MoveId.STRING_SHOT]); + game.move.select(MoveId.STRING_SHOT); await game.toNextTurn(); expect(enemy.getStatStage(Stat.ATK)).toEqual(0); diff --git a/test/abilities/ice_face.test.ts b/test/abilities/ice_face.test.ts index cb9530fe355..6ef91981cf3 100644 --- a/test/abilities/ice_face.test.ts +++ b/test/abilities/ice_face.test.ts @@ -4,10 +4,10 @@ import { MoveEndPhase } from "#app/phases/move-end-phase"; import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -31,15 +31,15 @@ describe("Abilities - Ice Face", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.enemySpecies(Species.EISCUE); - game.override.enemyAbility(Abilities.ICE_FACE); - game.override.moveset([Moves.TACKLE, Moves.ICE_BEAM, Moves.TOXIC_THREAD, Moves.HAIL]); + game.override.enemySpecies(SpeciesId.EISCUE); + game.override.enemyAbility(AbilityId.ICE_FACE); + game.override.moveset([MoveId.TACKLE, MoveId.ICE_BEAM, MoveId.TOXIC_THREAD, MoveId.HAIL]); }); it("takes no damage from physical move and transforms to Noice", async () => { - await game.classicMode.startBattle([Species.HITMONLEE]); + await game.classicMode.startBattle([SpeciesId.HITMONLEE]); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(MoveEndPhase); @@ -51,11 +51,11 @@ describe("Abilities - Ice Face", () => { }); it("takes no damage from the first hit of multihit physical move and transforms to Noice", async () => { - game.override.moveset([Moves.SURGING_STRIKES]); + game.override.moveset([MoveId.SURGING_STRIKES]); game.override.enemyLevel(1); - await game.classicMode.startBattle([Species.HITMONLEE]); + await game.classicMode.startBattle([SpeciesId.HITMONLEE]); - game.move.select(Moves.SURGING_STRIKES); + game.move.select(MoveId.SURGING_STRIKES); const eiscue = game.scene.getEnemyPokemon()!; expect(eiscue.getTag(BattlerTagType.ICE_FACE)).toBeDefined(); @@ -79,9 +79,9 @@ describe("Abilities - Ice Face", () => { }); it("takes damage from special moves", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.ICE_BEAM); + game.move.select(MoveId.ICE_BEAM); await game.phaseInterceptor.to(MoveEndPhase); @@ -93,9 +93,9 @@ describe("Abilities - Ice Face", () => { }); it("takes effects from status moves", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.TOXIC_THREAD); + game.move.select(MoveId.TOXIC_THREAD); await game.phaseInterceptor.to(MoveEndPhase); @@ -106,11 +106,11 @@ describe("Abilities - Ice Face", () => { }); it("transforms to Ice Face when Hail or Snow starts", async () => { - game.override.moveset([Moves.QUICK_ATTACK]).enemyMoveset(Moves.HAIL); + game.override.moveset([MoveId.QUICK_ATTACK]).enemyMoveset(MoveId.HAIL); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.QUICK_ATTACK); + game.move.select(MoveId.QUICK_ATTACK); await game.phaseInterceptor.to(MoveEndPhase); @@ -127,11 +127,11 @@ describe("Abilities - Ice Face", () => { }); it("transforms to Ice Face when summoned on arena with active Snow or Hail", async () => { - game.override.enemyMoveset(Moves.TACKLE).moveset([Moves.SNOWSCAPE]); + game.override.enemyMoveset(MoveId.TACKLE).moveset([MoveId.SNOWSCAPE]); - await game.classicMode.startBattle([Species.EISCUE, Species.NINJASK]); + await game.classicMode.startBattle([SpeciesId.EISCUE, SpeciesId.NINJASK]); - game.move.select(Moves.SNOWSCAPE); + game.move.select(MoveId.SNOWSCAPE); await game.phaseInterceptor.to(TurnEndPhase); let eiscue = game.scene.getPlayerPokemon()!; @@ -153,11 +153,11 @@ describe("Abilities - Ice Face", () => { }); it("will not revert to its Ice Face if there is already Hail when it changes into Noice", async () => { - game.override.enemySpecies(Species.SHUCKLE).enemyMoveset(Moves.TACKLE); + game.override.enemySpecies(SpeciesId.SHUCKLE).enemyMoveset(MoveId.TACKLE); - await game.classicMode.startBattle([Species.EISCUE]); + await game.classicMode.startBattle([SpeciesId.EISCUE]); - game.move.select(Moves.HAIL); + game.move.select(MoveId.HAIL); const eiscue = game.scene.getPlayerPokemon()!; await game.phaseInterceptor.to(QuietFormChangePhase); @@ -172,11 +172,11 @@ describe("Abilities - Ice Face", () => { }); it("persists form change when switched out", async () => { - game.override.enemyMoveset(Moves.QUICK_ATTACK); + game.override.enemyMoveset(MoveId.QUICK_ATTACK); - await game.classicMode.startBattle([Species.EISCUE, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.EISCUE, SpeciesId.MAGIKARP]); - game.move.select(Moves.ICE_BEAM); + game.move.select(MoveId.ICE_BEAM); await game.phaseInterceptor.to(TurnEndPhase); let eiscue = game.scene.getPlayerPokemon()!; @@ -198,19 +198,19 @@ describe("Abilities - Ice Face", () => { it("reverts to Ice Face on arena reset", async () => { game.override.startingWave(4); game.override.startingLevel(4); - game.override.enemySpecies(Species.MAGIKARP); + game.override.enemySpecies(SpeciesId.MAGIKARP); game.override.starterForms({ - [Species.EISCUE]: noiceForm, + [SpeciesId.EISCUE]: noiceForm, }); - await game.classicMode.startBattle([Species.EISCUE]); + await game.classicMode.startBattle([SpeciesId.EISCUE]); const eiscue = game.scene.getPlayerPokemon()!; expect(eiscue.formIndex).toBe(noiceForm); expect(eiscue.getTag(BattlerTagType.ICE_FACE)).toBeUndefined(); - game.move.select(Moves.ICE_BEAM); + game.move.select(MoveId.ICE_BEAM); await game.doKillOpponents(); await game.phaseInterceptor.to(TurnEndPhase); game.doSelectModifier(); @@ -221,10 +221,10 @@ describe("Abilities - Ice Face", () => { }); it("doesn't trigger if user is behind a substitute", async () => { - game.override.enemyMoveset(Moves.SUBSTITUTE).moveset(Moves.POWER_TRIP); + game.override.enemyMoveset(MoveId.SUBSTITUTE).moveset(MoveId.POWER_TRIP); await game.classicMode.startBattle(); - game.move.select(Moves.POWER_TRIP); + game.move.select(MoveId.POWER_TRIP); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); @@ -232,11 +232,11 @@ describe("Abilities - Ice Face", () => { }); it("cannot be suppressed", async () => { - game.override.moveset([Moves.GASTRO_ACID]); + game.override.moveset([MoveId.GASTRO_ACID]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.GASTRO_ACID); + game.move.select(MoveId.GASTRO_ACID); await game.phaseInterceptor.to(TurnEndPhase); @@ -248,11 +248,11 @@ describe("Abilities - Ice Face", () => { }); it("cannot be swapped with another ability", async () => { - game.override.moveset([Moves.SKILL_SWAP]); + game.override.moveset([MoveId.SKILL_SWAP]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.SKILL_SWAP); + game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to(TurnEndPhase); @@ -260,15 +260,15 @@ describe("Abilities - Ice Face", () => { expect(eiscue.getTag(BattlerTagType.ICE_FACE)).not.toBe(undefined); expect(eiscue.formIndex).toBe(icefaceForm); - expect(eiscue.hasAbility(Abilities.ICE_FACE)).toBe(true); + expect(eiscue.hasAbility(AbilityId.ICE_FACE)).toBe(true); }); it("cannot be copied", async () => { - game.override.ability(Abilities.TRACE); + game.override.ability(AbilityId.TRACE); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.SIMPLE_BEAM); + game.move.select(MoveId.SIMPLE_BEAM); await game.phaseInterceptor.to(TurnInitPhase); @@ -276,6 +276,6 @@ describe("Abilities - Ice Face", () => { expect(eiscue.getTag(BattlerTagType.ICE_FACE)).not.toBe(undefined); expect(eiscue.formIndex).toBe(icefaceForm); - expect(game.scene.getPlayerPokemon()!.hasAbility(Abilities.TRACE)).toBe(true); + expect(game.scene.getPlayerPokemon()!.hasAbility(AbilityId.TRACE)).toBe(true); }); }); diff --git a/test/abilities/illuminate.test.ts b/test/abilities/illuminate.test.ts index ba26ed3b7af..ec4f6436041 100644 --- a/test/abilities/illuminate.test.ts +++ b/test/abilities/illuminate.test.ts @@ -1,6 +1,6 @@ import { Stat } from "#app/enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; @@ -22,10 +22,10 @@ describe("Abilities - Illuminate", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Moves.SPLASH) - .ability(Abilities.ILLUMINATE) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SAND_ATTACK); + .moveset(MoveId.SPLASH) + .ability(AbilityId.ILLUMINATE) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SAND_ATTACK); }); it("should prevent ACC stat stage from being lowered", async () => { @@ -37,7 +37,7 @@ describe("Abilities - Illuminate", () => { expect(player.getStatStage(Stat.ACC)).toBe(0); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); diff --git a/test/abilities/illusion.test.ts b/test/abilities/illusion.test.ts index 8aae433b6c0..37e2ca59c6a 100644 --- a/test/abilities/illusion.test.ts +++ b/test/abilities/illusion.test.ts @@ -1,8 +1,8 @@ import { Gender } from "#app/data/gender"; import { PokeballType } from "#app/enums/pokeball"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,16 +25,16 @@ describe("Abilities - Illusion", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.ZORUA) - .enemyAbility(Abilities.ILLUSION) - .enemyMoveset(Moves.TACKLE) + .enemySpecies(SpeciesId.ZORUA) + .enemyAbility(AbilityId.ILLUSION) + .enemyMoveset(MoveId.TACKLE) .enemyHeldItems([{ name: "WIDE_LENS", count: 3 }]) - .moveset([Moves.WORRY_SEED, Moves.SOAK, Moves.TACKLE]) + .moveset([MoveId.WORRY_SEED, MoveId.SOAK, MoveId.TACKLE]) .startingHeldItems([{ name: "WIDE_LENS", count: 3 }]); }); it("creates illusion at the start", async () => { - await game.classicMode.startBattle([Species.ZOROARK, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.ZOROARK, SpeciesId.FEEBAS]); const zoroark = game.scene.getPlayerPokemon()!; const zorua = game.scene.getEnemyPokemon()!; @@ -43,8 +43,8 @@ describe("Abilities - Illusion", () => { }); it("break after receiving damaging move", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); - game.move.select(Moves.TACKLE); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("TurnEndPhase"); @@ -55,8 +55,8 @@ describe("Abilities - Illusion", () => { }); it("break after getting ability changed", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); - game.move.select(Moves.WORRY_SEED); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + game.move.select(MoveId.WORRY_SEED); await game.phaseInterceptor.to("TurnEndPhase"); @@ -66,8 +66,8 @@ describe("Abilities - Illusion", () => { }); it("breaks with neutralizing gas", async () => { - game.override.enemyAbility(Abilities.NEUTRALIZING_GAS); - await game.classicMode.startBattle([Species.KOFFING]); + game.override.enemyAbility(AbilityId.NEUTRALIZING_GAS); + await game.classicMode.startBattle([SpeciesId.KOFFING]); const zorua = game.scene.getEnemyPokemon()!; @@ -76,11 +76,11 @@ describe("Abilities - Illusion", () => { it("does not activate if neutralizing gas is active", async () => { game.override - .enemyAbility(Abilities.NEUTRALIZING_GAS) - .ability(Abilities.ILLUSION) - .moveset(Moves.SPLASH) - .enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS, Species.MAGIKARP]); + .enemyAbility(AbilityId.NEUTRALIZING_GAS) + .ability(AbilityId.ILLUSION) + .moveset(MoveId.SPLASH) + .enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); game.doSwitchPokemon(1); await game.toNextTurn(); @@ -89,8 +89,8 @@ describe("Abilities - Illusion", () => { }); it("causes enemy AI to consider the illusion's type instead of the actual type when considering move effectiveness", async () => { - game.override.enemyMoveset([Moves.FLAMETHROWER, Moves.PSYCHIC, Moves.TACKLE]); - await game.classicMode.startBattle([Species.ZOROARK, Species.FEEBAS]); + game.override.enemyMoveset([MoveId.FLAMETHROWER, MoveId.PSYCHIC, MoveId.TACKLE]); + await game.classicMode.startBattle([SpeciesId.ZOROARK, SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon()!; const zoroark = game.scene.getPlayerPokemon()!; @@ -117,14 +117,14 @@ describe("Abilities - Illusion", () => { }); it("does not break from indirect damage", async () => { - game.override.enemySpecies(Species.GIGALITH); - game.override.enemyAbility(Abilities.SAND_STREAM); - game.override.enemyMoveset(Moves.WILL_O_WISP); - game.override.moveset([Moves.FLARE_BLITZ]); + game.override.enemySpecies(SpeciesId.GIGALITH); + game.override.enemyAbility(AbilityId.SAND_STREAM); + game.override.enemyMoveset(MoveId.WILL_O_WISP); + game.override.moveset([MoveId.FLARE_BLITZ]); - await game.classicMode.startBattle([Species.ZOROARK, Species.AZUMARILL]); + await game.classicMode.startBattle([SpeciesId.ZOROARK, SpeciesId.AZUMARILL]); - game.move.select(Moves.FLARE_BLITZ); + game.move.select(MoveId.FLARE_BLITZ); await game.phaseInterceptor.to("TurnEndPhase"); @@ -134,8 +134,8 @@ describe("Abilities - Illusion", () => { }); it("copies the the name, nickname, gender, shininess, and pokeball from the illusion source", async () => { - game.override.enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.ABRA, Species.ZOROARK, Species.AXEW]); + game.override.enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.ABRA, SpeciesId.ZOROARK, SpeciesId.AXEW]); const axew = game.scene.getPlayerParty().at(2)!; axew.shiny = true; axew.nickname = btoa(unescape(encodeURIComponent("axew nickname"))); @@ -156,13 +156,13 @@ describe("Abilities - Illusion", () => { }); it("breaks when suppressed", async () => { - game.override.moveset(Moves.GASTRO_ACID); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset(MoveId.GASTRO_ACID); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const zorua = game.scene.getEnemyPokemon()!; expect(!!zorua.summonData?.illusion).toBe(true); - game.move.select(Moves.GASTRO_ACID); + game.move.select(MoveId.GASTRO_ACID); await game.phaseInterceptor.to("BerryPhase"); expect(zorua.isFullHp()).toBe(true); diff --git a/test/abilities/immunity.test.ts b/test/abilities/immunity.test.ts index dd9026cac50..b6ca34bfaa3 100644 --- a/test/abilities/immunity.test.ts +++ b/test/abilities/immunity.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -23,27 +23,27 @@ describe("Abilities - Immunity", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should remove poison when gained", async () => { game.override - .ability(Abilities.IMMUNITY) - .enemyAbility(Abilities.BALL_FETCH) - .moveset(Moves.SKILL_SWAP) - .enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.FEEBAS]); + .ability(AbilityId.IMMUNITY) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset(MoveId.SKILL_SWAP) + .enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon(); enemy?.trySetStatus(StatusEffect.POISON); expect(enemy?.status?.effect).toBe(StatusEffect.POISON); - game.move.select(Moves.SKILL_SWAP); + game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); expect(enemy?.status).toBeNull(); diff --git a/test/abilities/imposter.test.ts b/test/abilities/imposter.test.ts index b5e902f442f..c27e679ec54 100644 --- a/test/abilities/imposter.test.ts +++ b/test/abilities/imposter.test.ts @@ -1,11 +1,11 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { Stat, BATTLE_STATS, EFFECTIVE_STATS } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; // TODO: Add more tests once Imposter is fully implemented describe("Abilities - Imposter", () => { @@ -26,19 +26,19 @@ describe("Abilities - Imposter", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.MEW) + .enemySpecies(SpeciesId.MEW) .enemyLevel(200) - .enemyAbility(Abilities.BEAST_BOOST) - .enemyPassiveAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) - .ability(Abilities.IMPOSTER) - .moveset(Moves.SPLASH); + .enemyAbility(AbilityId.BEAST_BOOST) + .enemyPassiveAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .ability(AbilityId.IMPOSTER) + .moveset(MoveId.SPLASH); }); it("should copy species, ability, gender, all stats except HP, all stat stages, moveset, and types of target", async () => { - await game.classicMode.startBattle([Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.DITTO]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); const player = game.scene.getPlayerPokemon()!; @@ -75,9 +75,9 @@ describe("Abilities - Imposter", () => { }); it("should copy in-battle overridden stats", async () => { - game.override.enemyMoveset([Moves.POWER_SPLIT]); + game.override.enemyMoveset([MoveId.POWER_SPLIT]); - await game.classicMode.startBattle([Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.DITTO]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -85,7 +85,7 @@ describe("Abilities - Imposter", () => { const avgAtk = Math.floor((player.getStat(Stat.ATK, false) + enemy.getStat(Stat.ATK, false)) / 2); const avgSpAtk = Math.floor((player.getStat(Stat.SPATK, false) + enemy.getStat(Stat.SPATK, false)) / 2); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); expect(player.getStat(Stat.ATK, false)).toBe(avgAtk); @@ -96,18 +96,18 @@ describe("Abilities - Imposter", () => { }); it("should set each move's pp to a maximum of 5", async () => { - game.override.enemyMoveset([Moves.SWORDS_DANCE, Moves.GROWL, Moves.SKETCH, Moves.RECOVER]); + game.override.enemyMoveset([MoveId.SWORDS_DANCE, MoveId.GROWL, MoveId.SKETCH, MoveId.RECOVER]); - await game.classicMode.startBattle([Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.DITTO]); const player = game.scene.getPlayerPokemon()!; - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); player.getMoveset().forEach(move => { // Should set correct maximum PP without touching `ppUp` if (move) { - if (move.moveId === Moves.SKETCH) { + if (move.moveId === MoveId.SKETCH) { expect(move.getMovePp()).toBe(1); } else { expect(move.getMovePp()).toBe(5); @@ -118,25 +118,25 @@ describe("Abilities - Imposter", () => { }); it("should activate its ability if it copies one that activates on summon", async () => { - game.override.enemyAbility(Abilities.INTIMIDATE); + game.override.enemyAbility(AbilityId.INTIMIDATE); - await game.classicMode.startBattle([Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.DITTO]); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("MoveEndPhase"); expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(-1); }); it("should persist transformed attributes across reloads", async () => { - game.override.moveset([Moves.ABSORB]); + game.override.moveset([MoveId.ABSORB]); - await game.classicMode.startBattle([Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.DITTO]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.toNextWave(); @@ -158,13 +158,13 @@ describe("Abilities - Imposter", () => { } expect(playerMoveset.length).toEqual(1); - expect(playerMoveset[0]?.moveId).toEqual(Moves.SPLASH); + expect(playerMoveset[0]?.moveId).toEqual(MoveId.SPLASH); }); it("should stay transformed with the correct form after reload", async () => { - game.override.moveset([Moves.ABSORB]); - game.override.enemySpecies(Species.UNOWN); - await game.classicMode.startBattle([Species.DITTO]); + game.override.moveset([MoveId.ABSORB]); + game.override.enemySpecies(SpeciesId.UNOWN); + await game.classicMode.startBattle([SpeciesId.DITTO]); const enemy = game.scene.getEnemyPokemon()!; @@ -172,7 +172,7 @@ describe("Abilities - Imposter", () => { enemy.species.forms[5]; enemy.species.formIndex = 5; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.toNextWave(); diff --git a/test/abilities/infiltrator.test.ts b/test/abilities/infiltrator.test.ts index aeeb681e73c..891a716f7a4 100644 --- a/test/abilities/infiltrator.test.ts +++ b/test/abilities/infiltrator.test.ts @@ -4,9 +4,9 @@ import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -28,13 +28,13 @@ describe("Abilities - Infiltrator", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.TACKLE, Moves.WATER_GUN, Moves.SPORE, Moves.BABY_DOLL_EYES]) - .ability(Abilities.INFILTRATOR) + .moveset([MoveId.TACKLE, MoveId.WATER_GUN, MoveId.SPORE, MoveId.BABY_DOLL_EYES]) + .ability(AbilityId.INFILTRATOR) .battleStyle("single") .disableCrits() - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) .startingLevel(100) .enemyLevel(100); }); @@ -43,77 +43,77 @@ describe("Abilities - Infiltrator", () => { { effectName: "Light Screen", tagType: ArenaTagType.LIGHT_SCREEN, - move: Moves.WATER_GUN, + move: MoveId.WATER_GUN, }, { effectName: "Reflect", tagType: ArenaTagType.REFLECT, - move: Moves.TACKLE, + move: MoveId.TACKLE, }, { effectName: "Aurora Veil", tagType: ArenaTagType.AURORA_VEIL, - move: Moves.TACKLE, + move: MoveId.TACKLE, }, ])("should bypass the target's $effectName", async ({ tagType, move }) => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; const preScreenDmg = enemy.getAttackDamage({ source: player, move: allMoves[move] }).damage; - game.scene.arena.addTag(tagType, 1, Moves.NONE, enemy.id, ArenaTagSide.ENEMY, true); + game.scene.arena.addTag(tagType, 1, MoveId.NONE, enemy.id, ArenaTagSide.ENEMY, true); const postScreenDmg = enemy.getAttackDamage({ source: player, move: allMoves[move] }).damage; expect(postScreenDmg).toBe(preScreenDmg); - expect(player.waveData.abilitiesApplied).toContain(Abilities.INFILTRATOR); + expect(player.waveData.abilitiesApplied).toContain(AbilityId.INFILTRATOR); }); it("should bypass the target's Safeguard", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - game.scene.arena.addTag(ArenaTagType.SAFEGUARD, 1, Moves.NONE, enemy.id, ArenaTagSide.ENEMY, true); + game.scene.arena.addTag(ArenaTagType.SAFEGUARD, 1, MoveId.NONE, enemy.id, ArenaTagSide.ENEMY, true); - game.move.select(Moves.SPORE); + game.move.select(MoveId.SPORE); await game.phaseInterceptor.to("BerryPhase", false); expect(enemy.status?.effect).toBe(StatusEffect.SLEEP); - expect(player.waveData.abilitiesApplied).toContain(Abilities.INFILTRATOR); + expect(player.waveData.abilitiesApplied).toContain(AbilityId.INFILTRATOR); }); // TODO: fix this interaction to pass this test it.todo("should bypass the target's Mist", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - game.scene.arena.addTag(ArenaTagType.MIST, 1, Moves.NONE, enemy.id, ArenaTagSide.ENEMY, true); + game.scene.arena.addTag(ArenaTagType.MIST, 1, MoveId.NONE, enemy.id, ArenaTagSide.ENEMY, true); - game.move.select(Moves.BABY_DOLL_EYES); + game.move.select(MoveId.BABY_DOLL_EYES); await game.phaseInterceptor.to("MoveEndPhase"); expect(enemy.getStatStage(Stat.ATK)).toBe(-1); - expect(player.waveData.abilitiesApplied).toContain(Abilities.INFILTRATOR); + expect(player.waveData.abilitiesApplied).toContain(AbilityId.INFILTRATOR); }); it("should bypass the target's Substitute", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - enemy.addTag(BattlerTagType.SUBSTITUTE, 1, Moves.NONE, enemy.id); + enemy.addTag(BattlerTagType.SUBSTITUTE, 1, MoveId.NONE, enemy.id); - game.move.select(Moves.BABY_DOLL_EYES); + game.move.select(MoveId.BABY_DOLL_EYES); await game.phaseInterceptor.to("MoveEndPhase"); expect(enemy.getStatStage(Stat.ATK)).toBe(-1); - expect(player.waveData.abilitiesApplied).toContain(Abilities.INFILTRATOR); + expect(player.waveData.abilitiesApplied).toContain(AbilityId.INFILTRATOR); }); }); diff --git a/test/abilities/insomnia.test.ts b/test/abilities/insomnia.test.ts index 49765a641b0..418e0ed1345 100644 --- a/test/abilities/insomnia.test.ts +++ b/test/abilities/insomnia.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -23,27 +23,27 @@ describe("Abilities - Insomnia", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should remove sleep when gained", async () => { game.override - .ability(Abilities.INSOMNIA) - .enemyAbility(Abilities.BALL_FETCH) - .moveset(Moves.SKILL_SWAP) - .enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.FEEBAS]); + .ability(AbilityId.INSOMNIA) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset(MoveId.SKILL_SWAP) + .enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon(); enemy?.trySetStatus(StatusEffect.SLEEP); expect(enemy?.status?.effect).toBe(StatusEffect.SLEEP); - game.move.select(Moves.SKILL_SWAP); + game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); expect(enemy?.status).toBeNull(); diff --git a/test/abilities/intimidate.test.ts b/test/abilities/intimidate.test.ts index 8db39270dcf..e72b9669b6e 100644 --- a/test/abilities/intimidate.test.ts +++ b/test/abilities/intimidate.test.ts @@ -4,9 +4,9 @@ import GameManager from "#test/testUtils/gameManager"; import { UiMode } from "#enums/ui-mode"; import { Stat } from "#enums/stat"; import { getMovePosition } from "#test/testUtils/gameManagerUtils"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; describe("Abilities - Intimidate", () => { let phaserGame: Phaser.Game; @@ -26,16 +26,16 @@ describe("Abilities - Intimidate", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.RATTATA) - .enemyAbility(Abilities.INTIMIDATE) - .enemyPassiveAbility(Abilities.HYDRATION) - .ability(Abilities.INTIMIDATE) + .enemySpecies(SpeciesId.RATTATA) + .enemyAbility(AbilityId.INTIMIDATE) + .enemyPassiveAbility(AbilityId.HYDRATION) + .ability(AbilityId.INTIMIDATE) .startingWave(3) - .enemyMoveset(Moves.SPLASH); + .enemyMoveset(MoveId.SPLASH); }); it("should lower ATK stat stage by 1 of enemy Pokemon on entry and player switch", async () => { - await game.classicMode.runToSummon([Species.MIGHTYENA, Species.POOCHYENA]); + await game.classicMode.runToSummon([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]); game.onNextPrompt( "CheckSwitchPhase", UiMode.CONFIRM, @@ -50,7 +50,7 @@ describe("Abilities - Intimidate", () => { let playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - expect(playerPokemon.species.speciesId).toBe(Species.MIGHTYENA); + expect(playerPokemon.species.speciesId).toBe(SpeciesId.MIGHTYENA); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); expect(playerPokemon.getStatStage(Stat.ATK)).toBe(-1); @@ -59,14 +59,14 @@ describe("Abilities - Intimidate", () => { await game.phaseInterceptor.to("CommandPhase"); playerPokemon = game.scene.getPlayerPokemon()!; - expect(playerPokemon.species.speciesId).toBe(Species.POOCHYENA); + expect(playerPokemon.species.speciesId).toBe(SpeciesId.POOCHYENA); expect(playerPokemon.getStatStage(Stat.ATK)).toBe(0); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-2); }, 20000); it("should lower ATK stat stage by 1 for every enemy Pokemon in a double battle on entry", async () => { game.override.battleStyle("double").startingWave(3); - await game.classicMode.runToSummon([Species.MIGHTYENA, Species.POOCHYENA]); + await game.classicMode.runToSummon([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]); game.onNextPrompt( "CheckSwitchPhase", UiMode.CONFIRM, @@ -89,8 +89,8 @@ describe("Abilities - Intimidate", () => { it("should not activate again if there is no switch or new entry", async () => { game.override.startingWave(2); - game.override.moveset([Moves.SPLASH]); - await game.classicMode.startBattle([Species.MIGHTYENA, Species.POOCHYENA]); + game.override.moveset([MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -98,7 +98,7 @@ describe("Abilities - Intimidate", () => { expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); expect(playerPokemon.getStatStage(Stat.ATK)).toBe(-1); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); @@ -106,8 +106,8 @@ describe("Abilities - Intimidate", () => { }, 20000); it("should lower ATK stat stage by 1 for every switch", async () => { - game.override.moveset([Moves.SPLASH]).enemyMoveset([Moves.VOLT_SWITCH]).startingWave(5); - await game.classicMode.startBattle([Species.MIGHTYENA, Species.POOCHYENA]); + game.override.moveset([MoveId.SPLASH]).enemyMoveset([MoveId.VOLT_SWITCH]).startingWave(5); + await game.classicMode.startBattle([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]); const playerPokemon = game.scene.getPlayerPokemon()!; let enemyPokemon = game.scene.getEnemyPokemon()!; @@ -115,7 +115,7 @@ describe("Abilities - Intimidate", () => { expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); expect(playerPokemon.getStatStage(Stat.ATK)).toBe(-1); - game.move.select(getMovePosition(game.scene, 0, Moves.SPLASH)); + game.move.select(getMovePosition(game.scene, 0, MoveId.SPLASH)); await game.toNextTurn(); enemyPokemon = game.scene.getEnemyPokemon()!; @@ -123,7 +123,7 @@ describe("Abilities - Intimidate", () => { expect(playerPokemon.getStatStage(Stat.ATK)).toBe(-2); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(0); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); enemyPokemon = game.scene.getEnemyPokemon()!; diff --git a/test/abilities/intrepid_sword.test.ts b/test/abilities/intrepid_sword.test.ts index b30ae4a9bd0..7cfa9581bb9 100644 --- a/test/abilities/intrepid_sword.test.ts +++ b/test/abilities/intrepid_sword.test.ts @@ -1,8 +1,8 @@ import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import { CommandPhase } from "#app/phases/command-phase"; -import { Abilities } from "#enums/abilities"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { SpeciesId } from "#enums/species-id"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,13 +23,13 @@ describe("Abilities - Intrepid Sword", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.enemySpecies(Species.ZACIAN); - game.override.enemyAbility(Abilities.INTREPID_SWORD); - game.override.ability(Abilities.INTREPID_SWORD); + game.override.enemySpecies(SpeciesId.ZACIAN); + game.override.enemyAbility(AbilityId.INTREPID_SWORD); + game.override.ability(AbilityId.INTREPID_SWORD); }); it("should raise ATK stat stage by 1 on entry", async () => { - await game.classicMode.runToSummon([Species.ZACIAN]); + await game.classicMode.runToSummon([SpeciesId.ZACIAN]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; diff --git a/test/abilities/libero.test.ts b/test/abilities/libero.test.ts index a099e6ff047..6cae83219fd 100644 --- a/test/abilities/libero.test.ts +++ b/test/abilities/libero.test.ts @@ -3,11 +3,11 @@ import { PokemonType } from "#enums/pokemon-type"; import { Weather } from "#app/data/weather"; import type { PlayerPokemon } from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Biome } from "#enums/biome"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { BiomeId } from "#enums/biome-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -31,46 +31,46 @@ describe("Abilities - Libero", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .ability(Abilities.LIBERO) + .ability(AbilityId.LIBERO) .startingLevel(100) - .enemySpecies(Species.RATTATA) - .enemyMoveset(Moves.ENDURE); + .enemySpecies(SpeciesId.RATTATA) + .enemyMoveset(MoveId.ENDURE); }); test("ability applies and changes a pokemon's type", async () => { - game.override.moveset([Moves.SPLASH]); + game.override.moveset([MoveId.SPLASH]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.SPLASH); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.SPLASH); }); // Test for Gen9+ functionality, we are using previous funcionality test.skip("ability applies only once per switch in", async () => { - game.override.moveset([Moves.SPLASH, Moves.AGILITY]); + game.override.moveset([MoveId.SPLASH, MoveId.AGILITY]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.BULBASAUR]); let leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.SPLASH); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.SPLASH); - game.move.select(Moves.AGILITY); + game.move.select(MoveId.AGILITY); await game.phaseInterceptor.to(TurnEndPhase); - expect(leadPokemon.waveData.abilitiesApplied).toContain(Abilities.LIBERO); + expect(leadPokemon.waveData.abilitiesApplied).toContain(AbilityId.LIBERO); const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]]; - const moveType = PokemonType[allMoves[Moves.AGILITY].type]; + const moveType = PokemonType[allMoves[MoveId.AGILITY].type]; expect(leadPokemonType).not.toBe(moveType); await game.toNextTurn(); @@ -82,25 +82,25 @@ describe("Abilities - Libero", () => { leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.SPLASH); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.SPLASH); }); test("ability applies correctly even if the pokemon's move has a variable type", async () => { - game.override.moveset([Moves.WEATHER_BALL]); + game.override.moveset([MoveId.WEATHER_BALL]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); game.scene.arena.weather = new Weather(WeatherType.SUNNY); - game.move.select(Moves.WEATHER_BALL); + game.move.select(MoveId.WEATHER_BALL); await game.phaseInterceptor.to(TurnEndPhase); - expect(leadPokemon.waveData.abilitiesApplied).toContain(Abilities.LIBERO); + expect(leadPokemon.waveData.abilitiesApplied).toContain(AbilityId.LIBERO); expect(leadPokemon.getTypes()).toHaveLength(1); const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]], moveType = PokemonType[PokemonType.FIRE]; @@ -108,18 +108,18 @@ describe("Abilities - Libero", () => { }); test("ability applies correctly even if the type has changed by another ability", async () => { - game.override.moveset([Moves.TACKLE]); - game.override.passiveAbility(Abilities.REFRIGERATE); + game.override.moveset([MoveId.TACKLE]); + game.override.passiveAbility(AbilityId.REFRIGERATE); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); - expect(leadPokemon.waveData.abilitiesApplied).toContain(Abilities.LIBERO); + expect(leadPokemon.waveData.abilitiesApplied).toContain(AbilityId.LIBERO); expect(leadPokemon.getTypes()).toHaveLength(1); const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]], moveType = PokemonType[PokemonType.ICE]; @@ -127,173 +127,173 @@ describe("Abilities - Libero", () => { }); test("ability applies correctly even if the pokemon's move calls another move", async () => { - game.override.moveset([Moves.NATURE_POWER]); + game.override.moveset([MoveId.NATURE_POWER]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.scene.arena.biomeType = Biome.MOUNTAIN; - game.move.select(Moves.NATURE_POWER); + game.scene.arena.biomeType = BiomeId.MOUNTAIN; + game.move.select(MoveId.NATURE_POWER); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.AIR_SLASH); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.AIR_SLASH); }); test("ability applies correctly even if the pokemon's move is delayed / charging", async () => { - game.override.moveset([Moves.DIG]); + game.override.moveset([MoveId.DIG]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.DIG); + game.move.select(MoveId.DIG); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.DIG); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.DIG); }); test("ability applies correctly even if the pokemon's move misses", async () => { - game.override.moveset([Moves.TACKLE]); - game.override.enemyMoveset(Moves.SPLASH); + game.override.moveset([MoveId.TACKLE]); + game.override.enemyMoveset(MoveId.SPLASH); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.move.forceMiss(); await game.phaseInterceptor.to(TurnEndPhase); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon.isFullHp()).toBe(true); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.TACKLE); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TACKLE); }); test("ability applies correctly even if the pokemon's move is protected against", async () => { - game.override.moveset([Moves.TACKLE]).enemyMoveset(Moves.PROTECT); + game.override.moveset([MoveId.TACKLE]).enemyMoveset(MoveId.PROTECT); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.TACKLE); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TACKLE); }); test("ability applies correctly even if the pokemon's move fails because of type immunity", async () => { - game.override.moveset([Moves.TACKLE]); - game.override.enemySpecies(Species.GASTLY); + game.override.moveset([MoveId.TACKLE]); + game.override.enemySpecies(SpeciesId.GASTLY); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.TACKLE); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TACKLE); }); test("ability is not applied if pokemon's type is the same as the move's type", async () => { - game.override.moveset([Moves.SPLASH]); + game.override.moveset([MoveId.SPLASH]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - leadPokemon.summonData.types = [allMoves[Moves.SPLASH].type]; - game.move.select(Moves.SPLASH); + leadPokemon.summonData.types = [allMoves[MoveId.SPLASH].type]; + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(Abilities.LIBERO); + expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.LIBERO); }); test("ability is not applied if pokemon is terastallized", async () => { - game.override.moveset([Moves.SPLASH]); + game.override.moveset([MoveId.SPLASH]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); leadPokemon.isTerastallized = true; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(Abilities.LIBERO); + expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.LIBERO); }); test("ability is not applied if pokemon uses struggle", async () => { - game.override.moveset([Moves.STRUGGLE]); + game.override.moveset([MoveId.STRUGGLE]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.STRUGGLE); + game.move.select(MoveId.STRUGGLE); await game.phaseInterceptor.to(TurnEndPhase); - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(Abilities.LIBERO); + expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.LIBERO); }); test("ability is not applied if the pokemon's move fails", async () => { - game.override.moveset([Moves.BURN_UP]); + game.override.moveset([MoveId.BURN_UP]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.BURN_UP); + game.move.select(MoveId.BURN_UP); await game.phaseInterceptor.to(TurnEndPhase); - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(Abilities.LIBERO); + expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.LIBERO); }); test("ability applies correctly even if the pokemon's Trick-or-Treat fails", async () => { - game.override.moveset([Moves.TRICK_OR_TREAT]); - game.override.enemySpecies(Species.GASTLY); + game.override.moveset([MoveId.TRICK_OR_TREAT]); + game.override.enemySpecies(SpeciesId.GASTLY); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.TRICK_OR_TREAT); + game.move.select(MoveId.TRICK_OR_TREAT); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.TRICK_OR_TREAT); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TRICK_OR_TREAT); }); test("ability applies correctly and the pokemon curses itself", async () => { - game.override.moveset([Moves.CURSE]); + game.override.moveset([MoveId.CURSE]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.CURSE); + game.move.select(MoveId.CURSE); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.CURSE); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.CURSE); expect(leadPokemon.getTag(BattlerTagType.CURSED)).not.toBe(undefined); }); }); -function testPokemonTypeMatchesDefaultMoveType(pokemon: PlayerPokemon, move: Moves) { - expect(pokemon.waveData.abilitiesApplied).toContain(Abilities.LIBERO); +function testPokemonTypeMatchesDefaultMoveType(pokemon: PlayerPokemon, move: MoveId) { + expect(pokemon.waveData.abilitiesApplied).toContain(AbilityId.LIBERO); expect(pokemon.getTypes()).toHaveLength(1); const pokemonType = PokemonType[pokemon.getTypes()[0]], moveType = PokemonType[allMoves[move].type]; diff --git a/test/abilities/lightningrod.test.ts b/test/abilities/lightningrod.test.ts index 21a03baf12b..777ccb88ba9 100644 --- a/test/abilities/lightningrod.test.ts +++ b/test/abilities/lightningrod.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -24,55 +24,55 @@ describe("Abilities - Lightningrod", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.SHOCK_WAVE]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH, MoveId.SHOCK_WAVE]) + .ability(AbilityId.BALL_FETCH) .battleStyle("double") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should redirect electric type moves", async () => { - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); const enemy1 = game.scene.getEnemyField()[0]; const enemy2 = game.scene.getEnemyField()[1]; - enemy2.summonData.ability = Abilities.LIGHTNING_ROD; + enemy2.summonData.ability = AbilityId.LIGHTNING_ROD; - game.move.select(Moves.SHOCK_WAVE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); + game.move.select(MoveId.SHOCK_WAVE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); expect(enemy1.isFullHp()).toBe(true); }); it("should not redirect non-electric type moves", async () => { - game.override.moveset([Moves.SPLASH, Moves.AERIAL_ACE]); - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + game.override.moveset([MoveId.SPLASH, MoveId.AERIAL_ACE]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); const enemy1 = game.scene.getEnemyField()[0]; const enemy2 = game.scene.getEnemyField()[1]; - enemy2.summonData.ability = Abilities.LIGHTNING_ROD; + enemy2.summonData.ability = AbilityId.LIGHTNING_ROD; - game.move.select(Moves.AERIAL_ACE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); + game.move.select(MoveId.AERIAL_ACE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); expect(enemy1.isFullHp()).toBe(false); }); it("should boost the user's spatk without damaging", async () => { - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); const enemy2 = game.scene.getEnemyField()[1]; - enemy2.summonData.ability = Abilities.LIGHTNING_ROD; + enemy2.summonData.ability = AbilityId.LIGHTNING_ROD; - game.move.select(Moves.SHOCK_WAVE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); + game.move.select(MoveId.SHOCK_WAVE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); expect(enemy2.isFullHp()).toBe(true); @@ -80,32 +80,32 @@ describe("Abilities - Lightningrod", () => { }); it("should not redirect moves changed from electric type via ability", async () => { - game.override.ability(Abilities.NORMALIZE); - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + game.override.ability(AbilityId.NORMALIZE); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); const enemy1 = game.scene.getEnemyField()[0]; const enemy2 = game.scene.getEnemyField()[1]; - enemy2.summonData.ability = Abilities.LIGHTNING_ROD; + enemy2.summonData.ability = AbilityId.LIGHTNING_ROD; - game.move.select(Moves.SHOCK_WAVE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); + game.move.select(MoveId.SHOCK_WAVE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); expect(enemy1.isFullHp()).toBe(false); }); it("should redirect moves changed to electric type via ability", async () => { - game.override.ability(Abilities.GALVANIZE).moveset(Moves.TACKLE); - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + game.override.ability(AbilityId.GALVANIZE).moveset(MoveId.TACKLE); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); const enemy1 = game.scene.getEnemyField()[0]; const enemy2 = game.scene.getEnemyField()[1]; - enemy2.summonData.ability = Abilities.LIGHTNING_ROD; + enemy2.summonData.ability = AbilityId.LIGHTNING_ROD; - game.move.select(Moves.TACKLE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); + game.move.select(MoveId.TACKLE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); expect(enemy1.isFullHp()).toBe(true); diff --git a/test/abilities/limber.test.ts b/test/abilities/limber.test.ts index 4cdaa86f44c..2ca469dcaa1 100644 --- a/test/abilities/limber.test.ts +++ b/test/abilities/limber.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -23,27 +23,27 @@ describe("Abilities - Limber", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should remove paralysis when gained", async () => { game.override - .ability(Abilities.LIMBER) - .enemyAbility(Abilities.BALL_FETCH) - .moveset(Moves.SKILL_SWAP) - .enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.FEEBAS]); + .ability(AbilityId.LIMBER) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset(MoveId.SKILL_SWAP) + .enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon(); enemy?.trySetStatus(StatusEffect.PARALYSIS); expect(enemy?.status?.effect).toBe(StatusEffect.PARALYSIS); - game.move.select(Moves.SKILL_SWAP); + game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); expect(enemy?.status).toBeNull(); diff --git a/test/abilities/magic_bounce.test.ts b/test/abilities/magic_bounce.test.ts index be1ad2b413a..8c3eeec974c 100644 --- a/test/abilities/magic_bounce.test.ts +++ b/test/abilities/magic_bounce.test.ts @@ -6,9 +6,9 @@ import { ArenaTagType } from "#app/enums/arena-tag-type"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Stat } from "#app/enums/stat"; import { StatusEffect } from "#app/enums/status-effect"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -29,30 +29,30 @@ describe("Abilities - Magic Bounce", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .ability(Abilities.BALL_FETCH) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") - .moveset([Moves.GROWL, Moves.SPLASH]) + .moveset([MoveId.GROWL, MoveId.SPLASH]) .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.MAGIC_BOUNCE) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.MAGIC_BOUNCE) + .enemyMoveset(MoveId.SPLASH); }); it("should reflect basic status moves", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(-1); }); it("should not bounce moves while the target is in the semi-invulnerable state", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); - game.override.moveset([Moves.GROWL]); - game.override.enemyMoveset([Moves.FLY]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + game.override.moveset([MoveId.GROWL]); + game.override.enemyMoveset([MoveId.FLY]); - game.move.select(Moves.GROWL); - await game.move.selectEnemyMove(Moves.FLY); + game.move.select(MoveId.GROWL); + await game.move.selectEnemyMove(MoveId.FLY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); @@ -61,11 +61,11 @@ describe("Abilities - Magic Bounce", () => { it("should individually bounce back multi-target moves", async () => { game.override.battleStyle("double"); - game.override.moveset([Moves.GROWL, Moves.SPLASH]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + game.override.moveset([MoveId.GROWL, MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); - game.move.select(Moves.GROWL, 0); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.GROWL, 0); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); const user = game.scene.getPlayerField()[0]; @@ -73,41 +73,41 @@ describe("Abilities - Magic Bounce", () => { }); it("should still bounce back a move that would otherwise fail", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); game.scene.getEnemyPokemon()?.setStatStage(Stat.ATK, -6); - game.override.moveset([Moves.GROWL]); + game.override.moveset([MoveId.GROWL]); - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(-1); }); it("should not bounce back a move that was just bounced", async () => { - game.override.ability(Abilities.MAGIC_BOUNCE); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.ability(AbilityId.MAGIC_BOUNCE); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(-1); }); it("should receive the stat change after reflecting a move back to a mirror armor user", async () => { - game.override.ability(Abilities.MIRROR_ARMOR); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.ability(AbilityId.MIRROR_ARMOR); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(-1); }); it("should not bounce back a move from a mold breaker user", async () => { - game.override.ability(Abilities.MOLD_BREAKER); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.ability(AbilityId.MOLD_BREAKER); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(-1); @@ -115,12 +115,12 @@ describe("Abilities - Magic Bounce", () => { it("should bounce back a spread status move against both pokemon", async () => { game.override.battleStyle("double"); - game.override.moveset([Moves.GROWL, Moves.SPLASH]); - game.override.enemyMoveset([Moves.SPLASH]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + game.override.moveset([MoveId.GROWL, MoveId.SPLASH]); + game.override.enemyMoveset([MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); - game.move.select(Moves.GROWL, 0); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.GROWL, 0); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerField().every(p => p.getStatStage(Stat.ATK) === -2)).toBeTruthy(); @@ -128,10 +128,10 @@ describe("Abilities - Magic Bounce", () => { it("should only bounce spikes back once in doubles when both targets have magic bounce", async () => { game.override.battleStyle("double"); - await game.classicMode.startBattle([Species.MAGIKARP]); - game.override.moveset([Moves.SPIKES]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + game.override.moveset([MoveId.SPIKES]); - game.move.select(Moves.SPIKES); + game.move.select(MoveId.SPIKES); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.PLAYER)!["layers"]).toBe(1); @@ -139,105 +139,105 @@ describe("Abilities - Magic Bounce", () => { }); it("should bounce spikes even when the target is protected", async () => { - game.override.moveset([Moves.SPIKES]); - game.override.enemyMoveset([Moves.PROTECT]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.SPIKES]); + game.override.enemyMoveset([MoveId.PROTECT]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.SPIKES); + game.move.select(MoveId.SPIKES); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.PLAYER)!["layers"]).toBe(1); }); it("should not bounce spikes when the target is in the semi-invulnerable state", async () => { - game.override.moveset([Moves.SPIKES]); - game.override.enemyMoveset([Moves.FLY]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.SPIKES]); + game.override.enemyMoveset([MoveId.FLY]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.SPIKES); + game.move.select(MoveId.SPIKES); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.ENEMY)!["layers"]).toBe(1); }); it("should not bounce back curse", async () => { - game.override.starterSpecies(Species.GASTLY); - await game.classicMode.startBattle([Species.GASTLY]); - game.override.moveset([Moves.CURSE]); + game.override.starterSpecies(SpeciesId.GASTLY); + await game.classicMode.startBattle([SpeciesId.GASTLY]); + game.override.moveset([MoveId.CURSE]); - game.move.select(Moves.CURSE); + game.move.select(MoveId.CURSE); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.getTag(BattlerTagType.CURSED)).toBeDefined(); }); it("should not cause encore to be interrupted after bouncing", async () => { - game.override.moveset([Moves.SPLASH, Moves.GROWL, Moves.ENCORE]); - game.override.enemyMoveset([Moves.TACKLE, Moves.GROWL]); - // game.override.ability(Abilities.MOLD_BREAKER); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.SPLASH, MoveId.GROWL, MoveId.ENCORE]); + game.override.enemyMoveset([MoveId.TACKLE, MoveId.GROWL]); + // game.override.ability(AbilityId.MOLD_BREAKER); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; // Give the player MOLD_BREAKER for this turn to bypass Magic Bounce. - vi.spyOn(playerPokemon, "getAbility").mockReturnValue(allAbilities[Abilities.MOLD_BREAKER]); + vi.spyOn(playerPokemon, "getAbility").mockReturnValue(allAbilities[AbilityId.MOLD_BREAKER]); // turn 1 - game.move.select(Moves.ENCORE); - await game.move.selectEnemyMove(Moves.TACKLE); + game.move.select(MoveId.ENCORE); + await game.move.selectEnemyMove(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(Moves.TACKLE); + expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(MoveId.TACKLE); // turn 2 vi.spyOn(playerPokemon, "getAbility").mockRestore(); - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase"); - expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(Moves.TACKLE); - expect(enemyPokemon.getLastXMoves()[0].move).toBe(Moves.TACKLE); + expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(MoveId.TACKLE); + expect(enemyPokemon.getLastXMoves()[0].move).toBe(MoveId.TACKLE); }); // TODO: encore is failing if the last move was virtual. it.todo("should not cause the bounced move to count for encore", async () => { - game.override.moveset([Moves.SPLASH, Moves.GROWL, Moves.ENCORE]); - game.override.enemyMoveset([Moves.GROWL, Moves.TACKLE]); - game.override.enemyAbility(Abilities.MAGIC_BOUNCE); + game.override.moveset([MoveId.SPLASH, MoveId.GROWL, MoveId.ENCORE]); + game.override.enemyMoveset([MoveId.GROWL, MoveId.TACKLE]); + game.override.enemyAbility(AbilityId.MAGIC_BOUNCE); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; // turn 1 - game.move.select(Moves.GROWL); - await game.move.selectEnemyMove(Moves.TACKLE); + game.move.select(MoveId.GROWL); + await game.move.selectEnemyMove(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); // Give the player MOLD_BREAKER for this turn to bypass Magic Bounce. - vi.spyOn(playerPokemon, "getAbility").mockReturnValue(allAbilities[Abilities.MOLD_BREAKER]); + vi.spyOn(playerPokemon, "getAbility").mockReturnValue(allAbilities[AbilityId.MOLD_BREAKER]); // turn 2 - game.move.select(Moves.ENCORE); - await game.move.selectEnemyMove(Moves.TACKLE); + game.move.select(MoveId.ENCORE); + await game.move.selectEnemyMove(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase"); - expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(Moves.TACKLE); - expect(enemyPokemon.getLastXMoves()[0].move).toBe(Moves.TACKLE); + expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(MoveId.TACKLE); + expect(enemyPokemon.getLastXMoves()[0].move).toBe(MoveId.TACKLE); }); // TODO: stomping tantrum should consider moves that were bounced. it.todo("should cause stomping tantrum to double in power when the last move was bounced", async () => { game.override.battleStyle("single"); - await game.classicMode.startBattle([Species.MAGIKARP]); - game.override.moveset([Moves.STOMPING_TANTRUM, Moves.CHARM]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + game.override.moveset([MoveId.STOMPING_TANTRUM, MoveId.CHARM]); - const stomping_tantrum = allMoves[Moves.STOMPING_TANTRUM]; + const stomping_tantrum = allMoves[MoveId.STOMPING_TANTRUM]; vi.spyOn(stomping_tantrum, "calculateBattlePower"); - game.move.select(Moves.CHARM); + game.move.select(MoveId.CHARM); await game.toNextTurn(); - game.move.select(Moves.STOMPING_TANTRUM); + game.move.select(MoveId.STOMPING_TANTRUM); await game.phaseInterceptor.to("BerryPhase"); expect(stomping_tantrum.calculateBattlePower).toHaveReturnedWith(150); }); @@ -246,15 +246,15 @@ describe("Abilities - Magic Bounce", () => { it.todo( "should properly cause the enemy's stomping tantrum to be doubled in power after bouncing and failing", async () => { - game.override.enemyMoveset([Moves.STOMPING_TANTRUM, Moves.SPLASH, Moves.CHARM]); - await game.classicMode.startBattle([Species.BULBASAUR]); + game.override.enemyMoveset([MoveId.STOMPING_TANTRUM, MoveId.SPLASH, MoveId.CHARM]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const stomping_tantrum = allMoves[Moves.STOMPING_TANTRUM]; + const stomping_tantrum = allMoves[MoveId.STOMPING_TANTRUM]; const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(stomping_tantrum, "calculateBattlePower"); - game.move.select(Moves.SPORE); - await game.move.selectEnemyMove(Moves.CHARM); + game.move.select(MoveId.SPORE); + await game.move.selectEnemyMove(MoveId.CHARM); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.getLastXMoves(1)[0].result).toBe("success"); @@ -262,64 +262,64 @@ describe("Abilities - Magic Bounce", () => { expect(stomping_tantrum.calculateBattlePower).toHaveReturnedWith(75); await game.toNextTurn(); - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); expect(stomping_tantrum.calculateBattlePower).toHaveReturnedWith(75); }, ); it("should respect immunities when bouncing a move", async () => { - vi.spyOn(allMoves[Moves.THUNDER_WAVE], "accuracy", "get").mockReturnValue(100); - game.override.moveset([Moves.THUNDER_WAVE, Moves.GROWL]); - game.override.ability(Abilities.SOUNDPROOF); - await game.classicMode.startBattle([Species.PHANPY]); + vi.spyOn(allMoves[MoveId.THUNDER_WAVE], "accuracy", "get").mockReturnValue(100); + game.override.moveset([MoveId.THUNDER_WAVE, MoveId.GROWL]); + game.override.ability(AbilityId.SOUNDPROOF); + await game.classicMode.startBattle([SpeciesId.PHANPY]); // Turn 1 - thunder wave immunity test - game.move.select(Moves.THUNDER_WAVE); + game.move.select(MoveId.THUNDER_WAVE); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); // Turn 2 - soundproof immunity test - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(0); }); it("should bounce back a move before the accuracy check", async () => { - game.override.moveset([Moves.SPORE]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.SPORE]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const attacker = game.scene.getPlayerPokemon()!; vi.spyOn(attacker, "getAccuracyMultiplier").mockReturnValue(0.0); - game.move.select(Moves.SPORE); + game.move.select(MoveId.SPORE); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.status?.effect).toBe(StatusEffect.SLEEP); }); it("should take the accuracy of the magic bounce user into account", async () => { - game.override.moveset([Moves.SPORE]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.SPORE]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const opponent = game.scene.getEnemyPokemon()!; vi.spyOn(opponent, "getAccuracyMultiplier").mockReturnValue(0); - game.move.select(Moves.SPORE); + game.move.select(MoveId.SPORE); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); }); it("should always apply the leftmost available target's magic bounce when bouncing moves like sticky webs in doubles", async () => { game.override.battleStyle("double"); - game.override.moveset([Moves.STICKY_WEB, Moves.SPLASH, Moves.TRICK_ROOM]); + game.override.moveset([MoveId.STICKY_WEB, MoveId.SPLASH, MoveId.TRICK_ROOM]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); const [enemy_1, enemy_2] = game.scene.getEnemyField(); // set speed just incase logic erroneously checks for speed order enemy_1.setStat(Stat.SPD, enemy_2.getStat(Stat.SPD) + 1); // turn 1 - game.move.select(Moves.STICKY_WEB, 0); - game.move.select(Moves.TRICK_ROOM, 1); + game.move.select(MoveId.STICKY_WEB, 0); + game.move.select(MoveId.TRICK_ROOM, 1); await game.phaseInterceptor.to("TurnEndPhase"); expect( @@ -331,8 +331,8 @@ describe("Abilities - Magic Bounce", () => { game.scene.arena.removeTagOnSide(ArenaTagType.STICKY_WEB, ArenaTagSide.PLAYER, true); // turn 2 - game.move.select(Moves.STICKY_WEB, 0); - game.move.select(Moves.TRICK_ROOM, 1); + game.move.select(MoveId.STICKY_WEB, 0); + game.move.select(MoveId.TRICK_ROOM, 1); await game.phaseInterceptor.to("BerryPhase"); expect( game.scene.arena @@ -343,17 +343,17 @@ describe("Abilities - Magic Bounce", () => { }); it("should not bounce back status moves that hit through semi-invulnerable states", async () => { - game.override.moveset([Moves.TOXIC, Moves.CHARM]); - await game.classicMode.startBattle([Species.BULBASAUR]); - game.move.select(Moves.TOXIC); - await game.move.selectEnemyMove(Moves.FLY); + game.override.moveset([MoveId.TOXIC, MoveId.CHARM]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); + game.move.select(MoveId.TOXIC); + await game.move.selectEnemyMove(MoveId.FLY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.TOXIC); expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); - game.override.ability(Abilities.NO_GUARD); - game.move.select(Moves.CHARM); + game.override.ability(AbilityId.NO_GUARD); + game.move.select(MoveId.CHARM); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(-2); diff --git a/test/abilities/magic_guard.test.ts b/test/abilities/magic_guard.test.ts index 61d06a74c58..c36b35c09b7 100644 --- a/test/abilities/magic_guard.test.ts +++ b/test/abilities/magic_guard.test.ts @@ -1,11 +1,11 @@ import { ArenaTagSide, getArenaTag } from "#app/data/arena-tag"; import { getStatusEffectCatchRateMultiplier } from "#app/data/status-effect"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; import GameManager from "#test/testUtils/gameManager"; @@ -30,14 +30,14 @@ describe("Abilities - Magic Guard", () => { game = new GameManager(phaserGame); /** Player Pokemon overrides */ - game.override.ability(Abilities.MAGIC_GUARD); - game.override.moveset([Moves.SPLASH]); + game.override.ability(AbilityId.MAGIC_GUARD); + game.override.moveset([MoveId.SPLASH]); game.override.startingLevel(100); /** Enemy Pokemon overrides */ - game.override.enemySpecies(Species.SNORLAX); - game.override.enemyAbility(Abilities.INSOMNIA); - game.override.enemyMoveset(Moves.SPLASH); + game.override.enemySpecies(SpeciesId.SNORLAX); + game.override.enemyAbility(AbilityId.INSOMNIA); + game.override.enemyMoveset(MoveId.SPLASH); game.override.enemyLevel(100); }); @@ -46,14 +46,14 @@ describe("Abilities - Magic Guard", () => { it("ability should prevent damage caused by weather", async () => { game.override.weather(WeatherType.SANDSTORM); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon).toBeDefined(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); @@ -70,11 +70,11 @@ describe("Abilities - Magic Guard", () => { //Toxic keeps track of the turn counters -> important that Magic Guard keeps track of post-Toxic turns game.override.statusEffect(StatusEffect.POISON); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); @@ -88,14 +88,14 @@ describe("Abilities - Magic Guard", () => { }); it("ability effect should not persist when the ability is replaced", async () => { - game.override.enemyMoveset([Moves.WORRY_SEED, Moves.WORRY_SEED, Moves.WORRY_SEED, Moves.WORRY_SEED]); + game.override.enemyMoveset([MoveId.WORRY_SEED, MoveId.WORRY_SEED, MoveId.WORRY_SEED, MoveId.WORRY_SEED]); game.override.statusEffect(StatusEffect.POISON); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); @@ -108,11 +108,11 @@ describe("Abilities - Magic Guard", () => { it("Magic Guard prevents damage caused by burn but other non-damaging effects are still applied", async () => { game.override.enemyStatusEffect(StatusEffect.BURN); - game.override.enemyAbility(Abilities.MAGIC_GUARD); + game.override.enemyAbility(AbilityId.MAGIC_GUARD); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -130,11 +130,11 @@ describe("Abilities - Magic Guard", () => { it("Magic Guard prevents damage caused by toxic but other non-damaging effects are still applied", async () => { game.override.enemyStatusEffect(StatusEffect.TOXIC); - game.override.enemyAbility(Abilities.MAGIC_GUARD); + game.override.enemyAbility(AbilityId.MAGIC_GUARD); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -156,13 +156,13 @@ describe("Abilities - Magic Guard", () => { it("Magic Guard prevents damage caused by entry hazards", async () => { //Adds and applies Spikes to both sides of the arena - const newTag = getArenaTag(ArenaTagType.SPIKES, 5, Moves.SPIKES, 0, 0, ArenaTagSide.BOTH)!; + const newTag = getArenaTag(ArenaTagType.SPIKES, 5, MoveId.SPIKES, 0, 0, ArenaTagSide.BOTH)!; game.scene.arena.tags.push(newTag); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -179,15 +179,15 @@ describe("Abilities - Magic Guard", () => { it("Magic Guard does not prevent poison from Toxic Spikes", async () => { //Adds and applies Spikes to both sides of the arena - const playerTag = getArenaTag(ArenaTagType.TOXIC_SPIKES, 5, Moves.TOXIC_SPIKES, 0, 0, ArenaTagSide.PLAYER)!; - const enemyTag = getArenaTag(ArenaTagType.TOXIC_SPIKES, 5, Moves.TOXIC_SPIKES, 0, 0, ArenaTagSide.ENEMY)!; + const playerTag = getArenaTag(ArenaTagType.TOXIC_SPIKES, 5, MoveId.TOXIC_SPIKES, 0, 0, ArenaTagSide.PLAYER)!; + const enemyTag = getArenaTag(ArenaTagType.TOXIC_SPIKES, 5, MoveId.TOXIC_SPIKES, 0, 0, ArenaTagSide.ENEMY)!; game.scene.arena.tags.push(playerTag); game.scene.arena.tags.push(enemyTag); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -206,13 +206,13 @@ describe("Abilities - Magic Guard", () => { }); it("Magic Guard prevents against damage from volatile status effects", async () => { - await game.classicMode.startBattle([Species.DUSKULL]); - game.override.moveset([Moves.CURSE]); - game.override.enemyAbility(Abilities.MAGIC_GUARD); + await game.classicMode.startBattle([SpeciesId.DUSKULL]); + game.override.moveset([MoveId.CURSE]); + game.override.enemyAbility(AbilityId.MAGIC_GUARD); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.CURSE); + game.move.select(MoveId.CURSE); const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -230,12 +230,12 @@ describe("Abilities - Magic Guard", () => { }); it("Magic Guard prevents crash damage", async () => { - game.override.moveset([Moves.HIGH_JUMP_KICK]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.HIGH_JUMP_KICK]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.HIGH_JUMP_KICK); + game.move.select(MoveId.HIGH_JUMP_KICK); await game.move.forceMiss(); await game.phaseInterceptor.to(TurnEndPhase); @@ -248,12 +248,12 @@ describe("Abilities - Magic Guard", () => { }); it("Magic Guard prevents damage from recoil", async () => { - game.override.moveset([Moves.TAKE_DOWN]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.TAKE_DOWN]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.TAKE_DOWN); + game.move.select(MoveId.TAKE_DOWN); await game.phaseInterceptor.to(TurnEndPhase); @@ -265,12 +265,12 @@ describe("Abilities - Magic Guard", () => { }); it("Magic Guard does not prevent damage from Struggle's recoil", async () => { - game.override.moveset([Moves.STRUGGLE]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.STRUGGLE]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.STRUGGLE); + game.move.select(MoveId.STRUGGLE); await game.phaseInterceptor.to(TurnEndPhase); @@ -283,12 +283,12 @@ describe("Abilities - Magic Guard", () => { //This tests different move attributes than the recoil tests above it("Magic Guard prevents self-damage from attacking moves", async () => { - game.override.moveset([Moves.STEEL_BEAM]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.STEEL_BEAM]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.STEEL_BEAM); + game.move.select(MoveId.STEEL_BEAM); await game.phaseInterceptor.to(TurnEndPhase); @@ -301,21 +301,21 @@ describe("Abilities - Magic Guard", () => { /* it("Magic Guard does not prevent self-damage from confusion", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.CHARM); + game.move.select(MoveId.CHARM); await game.phaseInterceptor.to(TurnEndPhase); }); */ it("Magic Guard does not prevent self-damage from non-attacking moves", async () => { - game.override.moveset([Moves.BELLY_DRUM]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.BELLY_DRUM]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.BELLY_DRUM); + game.move.select(MoveId.BELLY_DRUM); await game.phaseInterceptor.to(TurnEndPhase); @@ -330,14 +330,14 @@ describe("Abilities - Magic Guard", () => { //Tests the ability Bad Dreams game.override.statusEffect(StatusEffect.SLEEP); //enemy pokemon is given Spore just in case player pokemon somehow awakens during test - game.override.enemyMoveset([Moves.SPORE, Moves.SPORE, Moves.SPORE, Moves.SPORE]); - game.override.enemyAbility(Abilities.BAD_DREAMS); + game.override.enemyMoveset([MoveId.SPORE, MoveId.SPORE, MoveId.SPORE, MoveId.SPORE]); + game.override.enemyAbility(AbilityId.BAD_DREAMS); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); @@ -352,17 +352,17 @@ describe("Abilities - Magic Guard", () => { it("Magic Guard prevents damage from abilities with PostFaintContactDamageAbAttr", async () => { //Tests the abilities Innards Out/Aftermath - game.override.moveset([Moves.TACKLE]); - game.override.enemyAbility(Abilities.AFTERMATH); + game.override.moveset([MoveId.TACKLE]); + game.override.enemyAbility(AbilityId.AFTERMATH); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; enemyPokemon.hp = 1; - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); /** @@ -376,16 +376,16 @@ describe("Abilities - Magic Guard", () => { it("Magic Guard prevents damage from abilities with PostDefendContactDamageAbAttr", async () => { //Tests the abilities Iron Barbs/Rough Skin - game.override.moveset([Moves.TACKLE]); - game.override.enemyAbility(Abilities.IRON_BARBS); + game.override.moveset([MoveId.TACKLE]); + game.override.enemyAbility(AbilityId.IRON_BARBS); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); /** @@ -399,16 +399,16 @@ describe("Abilities - Magic Guard", () => { it("Magic Guard prevents damage from abilities with ReverseDrainAbAttr", async () => { //Tests the ability Liquid Ooze - game.override.moveset([Moves.ABSORB]); - game.override.enemyAbility(Abilities.LIQUID_OOZE); + game.override.moveset([MoveId.ABSORB]); + game.override.enemyAbility(AbilityId.LIQUID_OOZE); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.ABSORB); + game.move.select(MoveId.ABSORB); await game.phaseInterceptor.to(TurnEndPhase); /** @@ -422,12 +422,12 @@ describe("Abilities - Magic Guard", () => { it("Magic Guard prevents HP loss from abilities with PostWeatherLapseDamageAbAttr", async () => { //Tests the abilities Solar Power/Dry Skin - game.override.passiveAbility(Abilities.SOLAR_POWER); + game.override.passiveAbility(AbilityId.SOLAR_POWER); game.override.weather(WeatherType.SUNNY); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); /** diff --git a/test/abilities/magma_armor.test.ts b/test/abilities/magma_armor.test.ts index c5af522ca6f..74493fac365 100644 --- a/test/abilities/magma_armor.test.ts +++ b/test/abilities/magma_armor.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -23,27 +23,27 @@ describe("Abilities - Magma Armor", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should remove freeze when gained", async () => { game.override - .ability(Abilities.MAGMA_ARMOR) - .enemyAbility(Abilities.BALL_FETCH) - .moveset(Moves.SKILL_SWAP) - .enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.FEEBAS]); + .ability(AbilityId.MAGMA_ARMOR) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset(MoveId.SKILL_SWAP) + .enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon(); enemy?.trySetStatus(StatusEffect.FREEZE); expect(enemy?.status?.effect).toBe(StatusEffect.FREEZE); - game.move.select(Moves.SKILL_SWAP); + game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); expect(enemy?.status).toBeNull(); diff --git a/test/abilities/mimicry.test.ts b/test/abilities/mimicry.test.ts index de196ffc939..df6facc3755 100644 --- a/test/abilities/mimicry.test.ts +++ b/test/abilities/mimicry.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { PokemonType } from "#enums/pokemon-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -23,20 +23,20 @@ describe("Abilities - Mimicry", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.MIMICRY) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.MIMICRY) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH); }); it("Mimicry activates after the Pokémon with Mimicry is switched in while terrain is present, or whenever there is a change in terrain", async () => { - game.override.enemyAbility(Abilities.MISTY_SURGE); - await game.classicMode.startBattle([Species.FEEBAS, Species.ABRA]); + game.override.enemyAbility(AbilityId.MISTY_SURGE); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.ABRA]); const [playerPokemon1, playerPokemon2] = game.scene.getPlayerParty(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(playerPokemon1.getTypes().includes(PokemonType.FAIRY)).toBe(true); @@ -48,14 +48,14 @@ describe("Abilities - Mimicry", () => { it("Pokemon should revert back to its original, root type once terrain ends", async () => { game.override - .moveset([Moves.SPLASH, Moves.TRANSFORM]) - .enemyAbility(Abilities.MIMICRY) - .enemyMoveset([Moves.SPLASH, Moves.PSYCHIC_TERRAIN]); - await game.classicMode.startBattle([Species.REGIELEKI]); + .moveset([MoveId.SPLASH, MoveId.TRANSFORM]) + .enemyAbility(AbilityId.MIMICRY) + .enemyMoveset([MoveId.SPLASH, MoveId.PSYCHIC_TERRAIN]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const playerPokemon = game.scene.getPlayerPokemon(); - game.move.select(Moves.TRANSFORM); - await game.move.selectEnemyMove(Moves.PSYCHIC_TERRAIN); + game.move.select(MoveId.TRANSFORM); + await game.move.selectEnemyMove(MoveId.PSYCHIC_TERRAIN); await game.toNextTurn(); expect(playerPokemon?.getTypes().includes(PokemonType.PSYCHIC)).toBe(true); @@ -63,25 +63,25 @@ describe("Abilities - Mimicry", () => { game.scene.arena.terrain.turnsLeft = 1; } - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); expect(playerPokemon?.getTypes().includes(PokemonType.ELECTRIC)).toBe(true); }); it("If the Pokemon is under the effect of a type-adding move and an equivalent terrain activates, the move's effect disappears", async () => { - game.override.enemyMoveset([Moves.FORESTS_CURSE, Moves.GRASSY_TERRAIN]); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.enemyMoveset([MoveId.FORESTS_CURSE, MoveId.GRASSY_TERRAIN]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const playerPokemon = game.scene.getPlayerPokemon(); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.FORESTS_CURSE); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.FORESTS_CURSE); await game.toNextTurn(); expect(playerPokemon?.summonData.addedType).toBe(PokemonType.GRASS); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.GRASSY_TERRAIN); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.GRASSY_TERRAIN); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon?.summonData.addedType).toBeNull(); diff --git a/test/abilities/mirror_armor.test.ts b/test/abilities/mirror_armor.test.ts index 5f9c63531d4..319e47cbfb3 100644 --- a/test/abilities/mirror_armor.test.ts +++ b/test/abilities/mirror_armor.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -28,25 +28,25 @@ describe("Ability - Mirror Armor", () => { game.override .battleStyle("single") - .enemySpecies(Species.RATTATA) - .enemyMoveset([Moves.SPLASH, Moves.STICKY_WEB, Moves.TICKLE, Moves.OCTOLOCK]) - .enemyAbility(Abilities.BALL_FETCH) + .enemySpecies(SpeciesId.RATTATA) + .enemyMoveset([MoveId.SPLASH, MoveId.STICKY_WEB, MoveId.TICKLE, MoveId.OCTOLOCK]) + .enemyAbility(AbilityId.BALL_FETCH) .startingLevel(2000) - .moveset([Moves.SPLASH, Moves.STICKY_WEB, Moves.TICKLE, Moves.OCTOLOCK]) - .ability(Abilities.BALL_FETCH); + .moveset([MoveId.SPLASH, MoveId.STICKY_WEB, MoveId.TICKLE, MoveId.OCTOLOCK]) + .ability(AbilityId.BALL_FETCH); }); it("Player side + single battle Intimidate - opponent loses stats", async () => { - game.override.ability(Abilities.MIRROR_ARMOR); - game.override.enemyAbility(Abilities.INTIMIDATE); - await game.classicMode.startBattle([Species.BULBASAUR]); + game.override.ability(AbilityId.MIRROR_ARMOR); + game.override.enemyAbility(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const enemyPokemon = game.scene.getEnemyPokemon()!; const userPokemon = game.scene.getPlayerPokemon()!; // Enemy has intimidate, enemy should lose -1 atk - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); @@ -54,16 +54,16 @@ describe("Ability - Mirror Armor", () => { }); it("Enemy side + single battle Intimidate - player loses stats", async () => { - game.override.enemyAbility(Abilities.MIRROR_ARMOR); - game.override.ability(Abilities.INTIMIDATE); - await game.classicMode.startBattle([Species.BULBASAUR]); + game.override.enemyAbility(AbilityId.MIRROR_ARMOR); + game.override.ability(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const enemyPokemon = game.scene.getEnemyPokemon()!; const userPokemon = game.scene.getPlayerPokemon()!; // Enemy has intimidate, enemy should lose -1 atk - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER); await game.toNextTurn(); expect(userPokemon.getStatStage(Stat.ATK)).toBe(-1); @@ -72,18 +72,18 @@ describe("Ability - Mirror Armor", () => { it("Player side + double battle Intimidate - opponents each lose -2 atk", async () => { game.override.battleStyle("double"); - game.override.ability(Abilities.MIRROR_ARMOR); - game.override.enemyAbility(Abilities.INTIMIDATE); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER]); + game.override.ability(AbilityId.MIRROR_ARMOR); + game.override.enemyAbility(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER]); const [enemy1, enemy2] = game.scene.getEnemyField(); const [player1, player2] = game.scene.getPlayerField(); // Enemy has intimidate, enemy should lose -2 atk each - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.toNextTurn(); expect(enemy1.getStatStage(Stat.ATK)).toBe(-2); @@ -94,18 +94,18 @@ describe("Ability - Mirror Armor", () => { it("Enemy side + double battle Intimidate - players each lose -2 atk", async () => { game.override.battleStyle("double"); - game.override.enemyAbility(Abilities.MIRROR_ARMOR); - game.override.ability(Abilities.INTIMIDATE); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER]); + game.override.enemyAbility(AbilityId.MIRROR_ARMOR); + game.override.ability(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER]); const [enemy1, enemy2] = game.scene.getEnemyField(); const [player1, player2] = game.scene.getPlayerField(); // Enemy has intimidate, enemy should lose -1 atk - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.toNextTurn(); expect(enemy1.getStatStage(Stat.ATK)).toBe(0); @@ -115,16 +115,16 @@ describe("Ability - Mirror Armor", () => { }); it("Player side + single battle Intimidate + Tickle - opponent loses stats", async () => { - game.override.ability(Abilities.MIRROR_ARMOR); - game.override.enemyAbility(Abilities.INTIMIDATE); - await game.classicMode.startBattle([Species.BULBASAUR]); + game.override.ability(AbilityId.MIRROR_ARMOR); + game.override.enemyAbility(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const enemyPokemon = game.scene.getEnemyPokemon()!; const userPokemon = game.scene.getPlayerPokemon()!; // Enemy has intimidate and uses tickle, enemy receives -2 atk and -1 defense - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.TICKLE, BattlerIndex.PLAYER); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(-1); @@ -135,17 +135,17 @@ describe("Ability - Mirror Armor", () => { it("Player side + double battle Intimidate + Tickle - opponents each lose -3 atk, -1 def", async () => { game.override.battleStyle("double"); - game.override.ability(Abilities.MIRROR_ARMOR); - game.override.enemyAbility(Abilities.INTIMIDATE); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER]); + game.override.ability(AbilityId.MIRROR_ARMOR); + game.override.enemyAbility(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER]); const [enemy1, enemy2] = game.scene.getEnemyField(); const [player1, player2] = game.scene.getPlayerField(); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER_2); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.TICKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.TICKLE, BattlerIndex.PLAYER_2); await game.toNextTurn(); expect(player1.getStatStage(Stat.ATK)).toBe(0); @@ -159,16 +159,16 @@ describe("Ability - Mirror Armor", () => { }); it("Enemy side + single battle Intimidate + Tickle - player loses stats", async () => { - game.override.enemyAbility(Abilities.MIRROR_ARMOR); - game.override.ability(Abilities.INTIMIDATE); - await game.classicMode.startBattle([Species.BULBASAUR]); + game.override.enemyAbility(AbilityId.MIRROR_ARMOR); + game.override.ability(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const enemyPokemon = game.scene.getEnemyPokemon()!; const userPokemon = game.scene.getPlayerPokemon()!; // Enemy has intimidate and uses tickle, enemy receives -2 atk and -1 defense - game.move.select(Moves.TICKLE); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + game.move.select(MoveId.TICKLE); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER); await game.toNextTurn(); expect(userPokemon.getStatStage(Stat.DEF)).toBe(-1); @@ -178,16 +178,16 @@ describe("Ability - Mirror Armor", () => { }); it("Player side + single battle Intimidate + oppoenent has white smoke - no one loses stats", async () => { - game.override.enemyAbility(Abilities.WHITE_SMOKE); - game.override.ability(Abilities.MIRROR_ARMOR); - await game.classicMode.startBattle([Species.BULBASAUR]); + game.override.enemyAbility(AbilityId.WHITE_SMOKE); + game.override.ability(AbilityId.MIRROR_ARMOR); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const enemyPokemon = game.scene.getEnemyPokemon()!; const userPokemon = game.scene.getPlayerPokemon()!; // Enemy has intimidate and uses tickle, enemy has white smoke, no one loses stats - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.TICKLE, BattlerIndex.PLAYER); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); @@ -197,16 +197,16 @@ describe("Ability - Mirror Armor", () => { }); it("Enemy side + single battle Intimidate + player has white smoke - no one loses stats", async () => { - game.override.ability(Abilities.WHITE_SMOKE); - game.override.enemyAbility(Abilities.MIRROR_ARMOR); - await game.classicMode.startBattle([Species.BULBASAUR]); + game.override.ability(AbilityId.WHITE_SMOKE); + game.override.enemyAbility(AbilityId.MIRROR_ARMOR); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const enemyPokemon = game.scene.getEnemyPokemon()!; const userPokemon = game.scene.getPlayerPokemon()!; // Enemy has intimidate and uses tickle, enemy has white smoke, no one loses stats - game.move.select(Moves.TICKLE); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + game.move.select(MoveId.TICKLE); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); @@ -216,15 +216,15 @@ describe("Ability - Mirror Armor", () => { }); it("Player side + single battle + opponent uses octolock - does not interact with mirror armor, player loses stats", async () => { - game.override.ability(Abilities.MIRROR_ARMOR); - await game.classicMode.startBattle([Species.BULBASAUR]); + game.override.ability(AbilityId.MIRROR_ARMOR); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const enemyPokemon = game.scene.getEnemyPokemon()!; const userPokemon = game.scene.getPlayerPokemon()!; // Enemy uses octolock, player loses stats at end of turn - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.OCTOLOCK, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.OCTOLOCK, BattlerIndex.PLAYER); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); @@ -234,15 +234,15 @@ describe("Ability - Mirror Armor", () => { }); it("Enemy side + single battle + player uses octolock - does not interact with mirror armor, opponent loses stats", async () => { - game.override.enemyAbility(Abilities.MIRROR_ARMOR); - await game.classicMode.startBattle([Species.BULBASAUR]); + game.override.enemyAbility(AbilityId.MIRROR_ARMOR); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const enemyPokemon = game.scene.getEnemyPokemon()!; const userPokemon = game.scene.getPlayerPokemon()!; // Player uses octolock, enemy loses stats at end of turn - game.move.select(Moves.OCTOLOCK); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + game.move.select(MoveId.OCTOLOCK); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER); await game.toNextTurn(); expect(userPokemon.getStatStage(Stat.DEF)).toBe(0); @@ -252,16 +252,16 @@ describe("Ability - Mirror Armor", () => { }); it("Both sides have mirror armor - does not loop, player loses attack", async () => { - game.override.enemyAbility(Abilities.MIRROR_ARMOR); - game.override.ability(Abilities.MIRROR_ARMOR); - game.override.ability(Abilities.INTIMIDATE); - await game.classicMode.startBattle([Species.BULBASAUR]); + game.override.enemyAbility(AbilityId.MIRROR_ARMOR); + game.override.ability(AbilityId.MIRROR_ARMOR); + game.override.ability(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const enemyPokemon = game.scene.getEnemyPokemon()!; const userPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER); await game.toNextTurn(); expect(userPokemon.getStatStage(Stat.ATK)).toBe(-1); @@ -269,18 +269,18 @@ describe("Ability - Mirror Armor", () => { }); it("Single battle + sticky web applied player side - player switches out and enemy should lose -1 speed", async () => { - game.override.ability(Abilities.MIRROR_ARMOR); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + game.override.ability(AbilityId.MIRROR_ARMOR); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); const enemyPokemon = game.scene.getEnemyPokemon()!; const userPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.STICKY_WEB, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.STICKY_WEB, BattlerIndex.PLAYER); await game.toNextTurn(); game.doSwitchPokemon(1); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER); await game.toNextTurn(); expect(userPokemon.getStatStage(Stat.SPD)).toBe(0); @@ -289,22 +289,22 @@ describe("Ability - Mirror Armor", () => { it("Double battle + sticky web applied player side - player switches out and enemy 1 should lose -1 speed", async () => { game.override.battleStyle("double"); - game.override.ability(Abilities.MIRROR_ARMOR); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + game.override.ability(AbilityId.MIRROR_ARMOR); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); const [enemy1, enemy2] = game.scene.getEnemyField(); const [player1, player2] = game.scene.getPlayerField(); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.STICKY_WEB, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.STICKY_WEB, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.toNextTurn(); game.doSwitchPokemon(2); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.toNextTurn(); expect(enemy1.getStatStage(Stat.SPD)).toBe(-1); diff --git a/test/abilities/mold_breaker.test.ts b/test/abilities/mold_breaker.test.ts index ba33909364f..099fb54c998 100644 --- a/test/abilities/mold_breaker.test.ts +++ b/test/abilities/mold_breaker.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { globalScene } from "#app/global-scene"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,27 +24,27 @@ describe("Abilities - Mold Breaker", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.MOLD_BREAKER) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.MOLD_BREAKER) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should turn off the ignore abilities arena variable after the user's move", async () => { game.override - .enemyMoveset(Moves.SPLASH) - .ability(Abilities.MOLD_BREAKER) - .moveset([Moves.ERUPTION]) + .enemyMoveset(MoveId.SPLASH) + .ability(AbilityId.MOLD_BREAKER) + .moveset([MoveId.ERUPTION]) .startingLevel(100) .enemyLevel(2); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemy = game.scene.getEnemyPokemon()!; expect(enemy.isFainted()).toBe(false); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase", true); expect(globalScene.arena.ignoreAbilities).toBe(false); diff --git a/test/abilities/moody.test.ts b/test/abilities/moody.test.ts index 9b658820391..a3e321928b8 100644 --- a/test/abilities/moody.test.ts +++ b/test/abilities/moody.test.ts @@ -1,7 +1,7 @@ import { BATTLE_STATS, EFFECTIVE_STATS } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -25,18 +25,18 @@ describe("Abilities - Moody", () => { game.override .battleStyle("single") - .enemySpecies(Species.RATTATA) - .enemyAbility(Abilities.BALL_FETCH) - .ability(Abilities.MOODY) - .enemyMoveset(Moves.SPLASH) - .moveset(Moves.SPLASH); + .enemySpecies(SpeciesId.RATTATA) + .enemyAbility(AbilityId.BALL_FETCH) + .ability(AbilityId.MOODY) + .enemyMoveset(MoveId.SPLASH) + .moveset(MoveId.SPLASH); }); it("should increase one stat stage by 2 and decrease a different stat stage by 1", async () => { await game.classicMode.startBattle(); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // Find the increased and decreased stats, make sure they are different. @@ -57,7 +57,7 @@ describe("Abilities - Moody", () => { // Set all stat stages to -6 vi.spyOn(playerPokemon.summonData, "statStages", "get").mockReturnValue(new Array(BATTLE_STATS.length).fill(-6)); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // Should increase one stat stage by 2 (from -6, meaning it will be -4) @@ -75,7 +75,7 @@ describe("Abilities - Moody", () => { // Set all stat stages to 6 vi.spyOn(playerPokemon.summonData, "statStages", "get").mockReturnValue(new Array(BATTLE_STATS.length).fill(6)); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // Should decrease one stat stage by 1 (from 6, meaning it will be 5) diff --git a/test/abilities/moxie.test.ts b/test/abilities/moxie.test.ts index d4e1927e077..04ca68325e6 100644 --- a/test/abilities/moxie.test.ts +++ b/test/abilities/moxie.test.ts @@ -1,8 +1,8 @@ import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { BattlerIndex } from "#app/battle"; @@ -26,19 +26,19 @@ describe("Abilities - Moxie", () => { beforeEach(() => { game = new GameManager(phaserGame); - const moveToUse = Moves.AERIAL_ACE; + const moveToUse = MoveId.AERIAL_ACE; game.override.battleStyle("single"); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyAbility(Abilities.MOXIE); - game.override.ability(Abilities.MOXIE); + game.override.enemySpecies(SpeciesId.RATTATA); + game.override.enemyAbility(AbilityId.MOXIE); + game.override.ability(AbilityId.MOXIE); game.override.startingLevel(2000); game.override.moveset([moveToUse]); - game.override.enemyMoveset(Moves.SPLASH); + game.override.enemyMoveset(MoveId.SPLASH); }); it("should raise ATK stat stage by 1 when winning a battle", async () => { - const moveToUse = Moves.AERIAL_ACE; - await game.classicMode.startBattle([Species.MIGHTYENA, Species.MIGHTYENA]); + const moveToUse = MoveId.AERIAL_ACE; + await game.classicMode.startBattle([SpeciesId.MIGHTYENA, SpeciesId.MIGHTYENA]); const playerPokemon = game.scene.getPlayerPokemon()!; @@ -55,8 +55,8 @@ describe("Abilities - Moxie", () => { "should raise ATK stat stage by 1 when defeating an ally Pokemon", async () => { game.override.battleStyle("double"); - const moveToUse = Moves.AERIAL_ACE; - await game.classicMode.startBattle([Species.MIGHTYENA, Species.MIGHTYENA]); + const moveToUse = MoveId.AERIAL_ACE; + await game.classicMode.startBattle([SpeciesId.MIGHTYENA, SpeciesId.MIGHTYENA]); const [firstPokemon, secondPokemon] = game.scene.getPlayerField(); diff --git a/test/abilities/mummy.test.ts b/test/abilities/mummy.test.ts index c53b0b33598..2b35e801677 100644 --- a/test/abilities/mummy.test.ts +++ b/test/abilities/mummy.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -22,31 +22,31 @@ describe("Abilities - Mummy", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.MUMMY) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.MUMMY) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.TACKLE); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.TACKLE); }); it("should set the enemy's ability to mummy when hit by a contact move", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(Abilities.MUMMY); + expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(AbilityId.MUMMY); }); it("should not change the enemy's ability hit by a non-contact move", async () => { - game.override.enemyMoveset(Moves.EARTHQUAKE); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.enemyMoveset(MoveId.EARTHQUAKE); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(Abilities.BALL_FETCH); + expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(AbilityId.BALL_FETCH); }); }); diff --git a/test/abilities/mycelium_might.test.ts b/test/abilities/mycelium_might.test.ts index 9c898063201..6e4da4bc933 100644 --- a/test/abilities/mycelium_might.test.ts +++ b/test/abilities/mycelium_might.test.ts @@ -1,10 +1,10 @@ import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { TurnStartPhase } from "#app/phases/turn-start-phase"; import GameManager from "#test/testUtils/gameManager"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { Stat } from "#enums/stat"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -27,12 +27,12 @@ describe("Abilities - Mycelium Might", () => { game.override .battleStyle("single") .disableCrits() - .enemySpecies(Species.SHUCKLE) - .enemyAbility(Abilities.CLEAR_BODY) + .enemySpecies(SpeciesId.SHUCKLE) + .enemyAbility(AbilityId.CLEAR_BODY) - .enemyMoveset(Moves.QUICK_ATTACK) - .ability(Abilities.MYCELIUM_MIGHT) - .moveset([Moves.QUICK_ATTACK, Moves.BABY_DOLL_EYES]); + .enemyMoveset(MoveId.QUICK_ATTACK) + .ability(AbilityId.MYCELIUM_MIGHT) + .moveset([MoveId.QUICK_ATTACK, MoveId.BABY_DOLL_EYES]); }); /** @@ -43,13 +43,13 @@ describe("Abilities - Mycelium Might", () => { **/ it("will move last in its priority bracket and ignore protective abilities", async () => { - await game.classicMode.startBattle([Species.REGIELEKI]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const enemyPokemon = game.scene.getEnemyPokemon(); const playerIndex = game.scene.getPlayerPokemon()?.getBattlerIndex(); const enemyIndex = enemyPokemon?.getBattlerIndex(); - game.move.select(Moves.BABY_DOLL_EYES); + game.move.select(MoveId.BABY_DOLL_EYES); await game.phaseInterceptor.to(TurnStartPhase, false); const phase = game.scene.getCurrentPhase() as TurnStartPhase; @@ -66,14 +66,14 @@ describe("Abilities - Mycelium Might", () => { }, 20000); it("will still go first if a status move that is in a higher priority bracket than the opponent's move is used", async () => { - game.override.enemyMoveset(Moves.TACKLE); - await game.classicMode.startBattle([Species.REGIELEKI]); + game.override.enemyMoveset(MoveId.TACKLE); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const enemyPokemon = game.scene.getEnemyPokemon(); const playerIndex = game.scene.getPlayerPokemon()?.getBattlerIndex(); const enemyIndex = enemyPokemon?.getBattlerIndex(); - game.move.select(Moves.BABY_DOLL_EYES); + game.move.select(MoveId.BABY_DOLL_EYES); await game.phaseInterceptor.to(TurnStartPhase, false); const phase = game.scene.getCurrentPhase() as TurnStartPhase; @@ -89,12 +89,12 @@ describe("Abilities - Mycelium Might", () => { }, 20000); it("will not affect non-status moves", async () => { - await game.classicMode.startBattle([Species.REGIELEKI]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); - game.move.select(Moves.QUICK_ATTACK); + game.move.select(MoveId.QUICK_ATTACK); await game.phaseInterceptor.to(TurnStartPhase, false); const phase = game.scene.getCurrentPhase() as TurnStartPhase; diff --git a/test/abilities/neutralizing_gas.test.ts b/test/abilities/neutralizing_gas.test.ts index cf19f36c9d0..7c78cc9db64 100644 --- a/test/abilities/neutralizing_gas.test.ts +++ b/test/abilities/neutralizing_gas.test.ts @@ -2,11 +2,11 @@ import { BattlerIndex } from "#app/battle"; import type { CommandPhase } from "#app/phases/command-phase"; import { Command } from "#app/ui/command-ui-handler"; import { PostSummonWeatherChangeAbAttr } from "#app/data/abilities/ability"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { PokeballType } from "#enums/pokeball"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -29,20 +29,20 @@ describe("Abilities - Neutralizing Gas", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.NEUTRALIZING_GAS) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.NEUTRALIZING_GAS) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should prevent other abilities from activating", async () => { - game.override.enemyAbility(Abilities.INTIMIDATE); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.enemyAbility(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); // Intimidate is suppressed, so the attack stat should not be lowered @@ -50,21 +50,21 @@ describe("Abilities - Neutralizing Gas", () => { }); it("should allow the user's passive to activate", async () => { - game.override.passiveAbility(Abilities.INTREPID_SWORD); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.passiveAbility(AbilityId.INTREPID_SWORD); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.ATK)).toBe(1); }); it.todo("should activate before other abilities", async () => { - game.override.enemySpecies(Species.ACCELGOR).enemyLevel(100).enemyAbility(Abilities.INTIMIDATE); + game.override.enemySpecies(SpeciesId.ACCELGOR).enemyLevel(100).enemyAbility(AbilityId.INTIMIDATE); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); // Intimidate is suppressed even when the user's speed is lower @@ -73,17 +73,17 @@ describe("Abilities - Neutralizing Gas", () => { it("should activate other abilities when removed", async () => { game.override - .enemyAbility(Abilities.INTREPID_SWORD) - .enemyPassiveAbility(Abilities.DAUNTLESS_SHIELD) - .enemyMoveset(Moves.ENTRAINMENT); + .enemyAbility(AbilityId.INTREPID_SWORD) + .enemyPassiveAbility(AbilityId.DAUNTLESS_SHIELD) + .enemyMoveset(MoveId.ENTRAINMENT); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemyPokemon = game.scene.getEnemyPokemon(); expect(enemyPokemon?.getStatStage(Stat.ATK)).toBe(0); expect(enemyPokemon?.getStatStage(Stat.DEF)).toBe(0); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); // Enemy removes user's ability, so both abilities are activated expect(enemyPokemon?.getStatStage(Stat.ATK)).toBe(1); @@ -91,56 +91,56 @@ describe("Abilities - Neutralizing Gas", () => { }); it("should not activate the user's other ability when removed", async () => { - game.override.passiveAbility(Abilities.INTIMIDATE).enemyMoveset(Moves.ENTRAINMENT); + game.override.passiveAbility(AbilityId.INTIMIDATE).enemyMoveset(MoveId.ENTRAINMENT); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); // Neutralising gas user's passive is still active const enemyPokemon = game.scene.getEnemyPokemon(); expect(enemyPokemon?.getStatStage(Stat.ATK)).toBe(-1); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); // Intimidate did not reactivate after neutralizing gas was removed expect(enemyPokemon?.getStatStage(Stat.ATK)).toBe(-1); }); it("should only deactivate when all setters are off the field", async () => { - game.override.enemyMoveset([Moves.ENTRAINMENT, Moves.SPLASH]).battleStyle("double"); + game.override.enemyMoveset([MoveId.ENTRAINMENT, MoveId.SPLASH]).battleStyle("double"); - await game.classicMode.startBattle([Species.ACCELGOR, Species.ACCELGOR]); - game.move.select(Moves.SPLASH, 0); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.ENTRAINMENT, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.classicMode.startBattle([SpeciesId.ACCELGOR, SpeciesId.ACCELGOR]); + game.move.select(MoveId.SPLASH, 0); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.ENTRAINMENT, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeDefined(); // Now one neut gas user is left - game.move.select(Moves.SPLASH, 0); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.ENTRAINMENT, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH, 0); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.ENTRAINMENT, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeUndefined(); // No neut gas users are left }); it("should deactivate when suppressed by gastro acid", async () => { - game.override.enemyMoveset(Moves.GASTRO_ACID); + game.override.enemyMoveset(MoveId.GASTRO_ACID); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeUndefined(); }); it("should deactivate when the pokemon faints", async () => { - game.override.ability(Abilities.BALL_FETCH).enemyAbility(Abilities.NEUTRALIZING_GAS); + game.override.ability(AbilityId.BALL_FETCH).enemyAbility(AbilityId.NEUTRALIZING_GAS); - await game.classicMode.startBattle([Species.FEEBAS]); - game.move.select(Moves.SPLASH); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + game.move.select(MoveId.SPLASH); expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeDefined(); await game.doKillOpponents(); @@ -148,8 +148,8 @@ describe("Abilities - Neutralizing Gas", () => { }); it("should deactivate upon catching a wild pokemon", async () => { - game.override.battleStyle("single").enemyAbility(Abilities.NEUTRALIZING_GAS).ability(Abilities.BALL_FETCH); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.battleStyle("single").enemyAbility(AbilityId.NEUTRALIZING_GAS).ability(AbilityId.BALL_FETCH); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeDefined(); game.scene.pokeballCounts[PokeballType.MASTER_BALL] = 1; @@ -160,8 +160,8 @@ describe("Abilities - Neutralizing Gas", () => { }); it("should deactivate after fleeing from a wild pokemon", async () => { - game.override.enemyAbility(Abilities.NEUTRALIZING_GAS).ability(Abilities.BALL_FETCH); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.enemyAbility(AbilityId.NEUTRALIZING_GAS).ability(AbilityId.BALL_FETCH); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeDefined(); vi.spyOn(game.scene.getPlayerPokemon()!, "randBattleSeedInt").mockReturnValue(0); @@ -174,8 +174,8 @@ describe("Abilities - Neutralizing Gas", () => { }); it("should not activate abilities of pokemon no longer on the field", async () => { - game.override.battleStyle("single").ability(Abilities.NEUTRALIZING_GAS).enemyAbility(Abilities.DELTA_STREAM); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.battleStyle("single").ability(AbilityId.NEUTRALIZING_GAS).enemyAbility(AbilityId.DELTA_STREAM); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemy = game.scene.getEnemyPokemon()!; const weatherChangeAttr = enemy.getAbilityAttrs(PostSummonWeatherChangeAbAttr, false)[0]; @@ -183,7 +183,7 @@ describe("Abilities - Neutralizing Gas", () => { expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeDefined(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.killPokemon(enemy); await game.killPokemon(game.scene.getPlayerPokemon()!); diff --git a/test/abilities/no_guard.test.ts b/test/abilities/no_guard.test.ts index a09e16388ee..1cb5945e9ff 100644 --- a/test/abilities/no_guard.test.ts +++ b/test/abilities/no_guard.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { HitCheckResult } from "#enums/hit-check-result"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -26,20 +26,20 @@ describe("Abilities - No Guard", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Moves.ZAP_CANNON) - .ability(Abilities.NO_GUARD) + .moveset(MoveId.ZAP_CANNON) + .ability(AbilityId.NO_GUARD) .enemyLevel(200) - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should make moves always hit regardless of move accuracy", async () => { game.override.battleStyle("single"); - await game.classicMode.startBattle([Species.REGIELEKI]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - game.move.select(Moves.ZAP_CANNON); + game.move.select(MoveId.ZAP_CANNON); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); diff --git a/test/abilities/normal-move-type-change.test.ts b/test/abilities/normal-move-type-change.test.ts index 88a7b49e26b..578a6ad2a21 100644 --- a/test/abilities/normal-move-type-change.test.ts +++ b/test/abilities/normal-move-type-change.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/data-lists"; import { PokemonType } from "#enums/pokemon-type"; -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -24,10 +24,10 @@ import { toDmgValue } from "#app/utils/common"; */ describe.each([ - { ab: Abilities.GALVANIZE, ab_name: "Galvanize", ty: PokemonType.ELECTRIC, tyName: "electric" }, - { ab: Abilities.PIXILATE, ab_name: "Pixilate", ty: PokemonType.FAIRY, tyName: "fairy" }, - { ab: Abilities.REFRIGERATE, ab_name: "Refrigerate", ty: PokemonType.ICE, tyName: "ice" }, - { ab: Abilities.AERILATE, ab_name: "Aerilate", ty: PokemonType.FLYING, tyName: "flying" }, + { ab: AbilityId.GALVANIZE, ab_name: "Galvanize", ty: PokemonType.ELECTRIC, tyName: "electric" }, + { ab: AbilityId.PIXILATE, ab_name: "Pixilate", ty: PokemonType.FAIRY, tyName: "fairy" }, + { ab: AbilityId.REFRIGERATE, ab_name: "Refrigerate", ty: PokemonType.ICE, tyName: "ice" }, + { ab: AbilityId.AERILATE, ab_name: "Aerilate", ty: PokemonType.FLYING, tyName: "flying" }, ])("Abilities - $ab_name", ({ ab, ty, tyName }) => { let phaserGame: Phaser.Game; let game: GameManager; @@ -48,12 +48,12 @@ describe.each([ game.override .battleStyle("single") .startingLevel(100) - .starterSpecies(Species.MAGIKARP) + .starterSpecies(SpeciesId.MAGIKARP) .ability(ab) - .moveset([Moves.TACKLE, Moves.REVELATION_DANCE, Moves.FURY_SWIPES]) - .enemySpecies(Species.DUSCLOPS) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) + .moveset([MoveId.TACKLE, MoveId.REVELATION_DANCE, MoveId.FURY_SWIPES]) + .enemySpecies(SpeciesId.DUSCLOPS) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(100); }); @@ -65,9 +65,9 @@ describe.each([ const enemyPokemon = game.scene.getEnemyPokemon()!; const enemySpy = vi.spyOn(enemyPokemon, "getMoveEffectiveness"); - const powerSpy = vi.spyOn(allMoves[Moves.TACKLE], "calculateBattlePower"); + const powerSpy = vi.spyOn(allMoves[MoveId.TACKLE], "calculateBattlePower"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("BerryPhase", false); @@ -78,9 +78,9 @@ describe.each([ }); // Galvanize specifically would like to check for volt absorb's activation - if (ab === Abilities.GALVANIZE) { + if (ab === AbilityId.GALVANIZE) { it("should cause Normal-type attacks to activate Volt Absorb", async () => { - game.override.enemyAbility(Abilities.VOLT_ABSORB); + game.override.enemyAbility(AbilityId.VOLT_ABSORB); await game.classicMode.startBattle(); @@ -92,7 +92,7 @@ describe.each([ enemyPokemon.hp = Math.floor(enemyPokemon.getMaxHp() * 0.8); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("BerryPhase", false); @@ -103,20 +103,20 @@ describe.each([ } it.each([ - { moveName: "Revelation Dance", move: Moves.REVELATION_DANCE, expected_ty: PokemonType.WATER }, - { moveName: "Judgement", move: Moves.JUDGMENT, expected_ty: PokemonType.NORMAL }, - { moveName: "Terrain Pulse", move: Moves.TERRAIN_PULSE, expected_ty: PokemonType.NORMAL }, - { moveName: "Weather Ball", move: Moves.WEATHER_BALL, expected_ty: PokemonType.NORMAL }, - { moveName: "Multi Attack", move: Moves.MULTI_ATTACK, expected_ty: PokemonType.NORMAL }, - { moveName: "Techno Blast", move: Moves.TECHNO_BLAST, expected_ty: PokemonType.NORMAL }, + { moveName: "Revelation Dance", move: MoveId.REVELATION_DANCE, expected_ty: PokemonType.WATER }, + { moveName: "Judgement", move: MoveId.JUDGMENT, expected_ty: PokemonType.NORMAL }, + { moveName: "Terrain Pulse", move: MoveId.TERRAIN_PULSE, expected_ty: PokemonType.NORMAL }, + { moveName: "Weather Ball", move: MoveId.WEATHER_BALL, expected_ty: PokemonType.NORMAL }, + { moveName: "Multi Attack", move: MoveId.MULTI_ATTACK, expected_ty: PokemonType.NORMAL }, + { moveName: "Techno Blast", move: MoveId.TECHNO_BLAST, expected_ty: PokemonType.NORMAL }, ])("should not change the type of $moveName", async ({ move, expected_ty: expectedTy }) => { game.override - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) .moveset([move]) - .starterSpecies(Species.MAGIKARP); + .starterSpecies(SpeciesId.MAGIKARP); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const tySpy = vi.spyOn(playerPokemon, "getMoveType"); @@ -135,7 +135,7 @@ describe.each([ const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.FURY_SWIPES); + game.move.select(MoveId.FURY_SWIPES); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceHit(); @@ -156,7 +156,7 @@ describe.each([ game.override.startingHeldItems([{ name: "ATTACK_TYPE_BOOSTER", count: 1, type: PokemonType.NORMAL }]); await game.classicMode.startBattle(); - const testMoveInstance = allMoves[Moves.TACKLE]; + const testMoveInstance = allMoves[MoveId.TACKLE]; // get the power boost from the ability so we can compare it to the item // @ts-expect-error power multiplier is private @@ -165,7 +165,7 @@ describe.each([ const powerSpy = vi.spyOn(testMoveInstance, "calculateBattlePower"); const typeSpy = vi.spyOn(game.scene.getPlayerPokemon()!, "getMoveType"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("BerryPhase", false); expect(typeSpy, "type was not changed").toHaveLastReturnedWith(ty); expect(powerSpy).toHaveLastReturnedWith(toDmgValue(testMoveInstance.power * boost)); @@ -180,10 +180,10 @@ describe.each([ const boost = allAbilities[ab]?.getAttrs(MoveTypeChangeAbAttr)[0]?.powerMultiplier; expect(boost, "power boost should be defined").toBeDefined(); - const tackle = allMoves[Moves.TACKLE]; + const tackle = allMoves[MoveId.TACKLE]; const spy = vi.spyOn(tackle, "calculateBattlePower"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("BerryPhase", false); expect(spy).toHaveLastReturnedWith(toDmgValue(tackle.power * boost * (1 + TYPE_BOOST_ITEM_BOOST_PERCENT / 100))); }); diff --git a/test/abilities/normalize.test.ts b/test/abilities/normalize.test.ts index a299294f543..821ce9589a1 100644 --- a/test/abilities/normalize.test.ts +++ b/test/abilities/normalize.test.ts @@ -1,10 +1,10 @@ import { TYPE_BOOST_ITEM_BOOST_PERCENT } from "#app/constants"; import { allMoves } from "#app/data/data-lists"; import { toDmgValue } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -26,63 +26,63 @@ describe("Abilities - Normalize", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.TACKLE]) - .ability(Abilities.NORMALIZE) + .moveset([MoveId.TACKLE]) + .ability(AbilityId.NORMALIZE) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should boost the power of normal type moves by 20%", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); - const powerSpy = vi.spyOn(allMoves[Moves.TACKLE], "calculateBattlePower"); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + const powerSpy = vi.spyOn(allMoves[MoveId.TACKLE], "calculateBattlePower"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("BerryPhase"); - expect(powerSpy).toHaveLastReturnedWith(toDmgValue(allMoves[Moves.TACKLE].power * 1.2)); + expect(powerSpy).toHaveLastReturnedWith(toDmgValue(allMoves[MoveId.TACKLE].power * 1.2)); }); it("should not apply the old type boost item after changing a move's type", async () => { game.override.startingHeldItems([{ name: "ATTACK_TYPE_BOOSTER", count: 1, type: PokemonType.GRASS }]); - game.override.moveset([Moves.LEAFAGE]); + game.override.moveset([MoveId.LEAFAGE]); - const powerSpy = vi.spyOn(allMoves[Moves.LEAFAGE], "calculateBattlePower"); - await game.classicMode.startBattle([Species.MAGIKARP]); - game.move.select(Moves.LEAFAGE); + const powerSpy = vi.spyOn(allMoves[MoveId.LEAFAGE], "calculateBattlePower"); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + game.move.select(MoveId.LEAFAGE); await game.phaseInterceptor.to("BerryPhase"); // It should return with 1.2 (that is, only the power boost from the ability) - expect(powerSpy).toHaveLastReturnedWith(toDmgValue(allMoves[Moves.LEAFAGE].power * 1.2)); + expect(powerSpy).toHaveLastReturnedWith(toDmgValue(allMoves[MoveId.LEAFAGE].power * 1.2)); }); it("should apply silk scarf's power boost after changing a move's type", async () => { game.override.startingHeldItems([{ name: "ATTACK_TYPE_BOOSTER", count: 1, type: PokemonType.NORMAL }]); - game.override.moveset([Moves.LEAFAGE]); + game.override.moveset([MoveId.LEAFAGE]); - const powerSpy = vi.spyOn(allMoves[Moves.LEAFAGE], "calculateBattlePower"); - await game.classicMode.startBattle([Species.MAGIKARP]); - game.move.select(Moves.LEAFAGE); + const powerSpy = vi.spyOn(allMoves[MoveId.LEAFAGE], "calculateBattlePower"); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + game.move.select(MoveId.LEAFAGE); await game.phaseInterceptor.to("BerryPhase"); // 1.2 from normalize boost, second 1.2 from expect(powerSpy).toHaveLastReturnedWith( - toDmgValue(allMoves[Moves.LEAFAGE].power * 1.2 * (1 + TYPE_BOOST_ITEM_BOOST_PERCENT / 100)), + toDmgValue(allMoves[MoveId.LEAFAGE].power * 1.2 * (1 + TYPE_BOOST_ITEM_BOOST_PERCENT / 100)), ); }); it.each([ - { moveName: "Revelation Dance", move: Moves.REVELATION_DANCE }, - { moveName: "Judgement", move: Moves.JUDGMENT, expected_ty: PokemonType.NORMAL }, - { moveName: "Terrain Pulse", move: Moves.TERRAIN_PULSE }, - { moveName: "Weather Ball", move: Moves.WEATHER_BALL }, - { moveName: "Multi Attack", move: Moves.MULTI_ATTACK }, - { moveName: "Techno Blast", move: Moves.TECHNO_BLAST }, - { moveName: "Hidden Power", move: Moves.HIDDEN_POWER }, + { moveName: "Revelation Dance", move: MoveId.REVELATION_DANCE }, + { moveName: "Judgement", move: MoveId.JUDGMENT, expected_ty: PokemonType.NORMAL }, + { moveName: "Terrain Pulse", move: MoveId.TERRAIN_PULSE }, + { moveName: "Weather Ball", move: MoveId.WEATHER_BALL }, + { moveName: "Multi Attack", move: MoveId.MULTI_ATTACK }, + { moveName: "Techno Blast", move: MoveId.TECHNO_BLAST }, + { moveName: "Hidden Power", move: MoveId.HIDDEN_POWER }, ])("should not boost the power of $moveName", async ({ move }) => { game.override.moveset([move]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const powerSpy = vi.spyOn(allMoves[move], "calculateBattlePower"); game.move.select(move); diff --git a/test/abilities/oblivious.test.ts b/test/abilities/oblivious.test.ts index a86899ec9c6..e340d3c867d 100644 --- a/test/abilities/oblivious.test.ts +++ b/test/abilities/oblivious.test.ts @@ -1,7 +1,7 @@ -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -23,27 +23,27 @@ describe("Abilities - Oblivious", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should remove taunt when gained", async () => { game.override - .ability(Abilities.OBLIVIOUS) - .enemyAbility(Abilities.BALL_FETCH) - .moveset(Moves.SKILL_SWAP) - .enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.FEEBAS]); + .ability(AbilityId.OBLIVIOUS) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset(MoveId.SKILL_SWAP) + .enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon(); enemy?.addTag(BattlerTagType.TAUNT); expect(enemy?.getTag(BattlerTagType.TAUNT)).toBeTruthy(); - game.move.select(Moves.SKILL_SWAP); + game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); expect(enemy?.getTag(BattlerTagType.TAUNT)).toBeFalsy(); @@ -51,17 +51,17 @@ describe("Abilities - Oblivious", () => { it("should remove infatuation when gained", async () => { game.override - .ability(Abilities.OBLIVIOUS) - .enemyAbility(Abilities.BALL_FETCH) - .moveset(Moves.SKILL_SWAP) - .enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.FEEBAS]); + .ability(AbilityId.OBLIVIOUS) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset(MoveId.SKILL_SWAP) + .enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon(); vi.spyOn(enemy!, "isOppositeGender").mockReturnValue(true); - enemy?.addTag(BattlerTagType.INFATUATED, 5, Moves.JUDGMENT, game.scene.getPlayerPokemon()?.id); // sourceID needs to be defined + enemy?.addTag(BattlerTagType.INFATUATED, 5, MoveId.JUDGMENT, game.scene.getPlayerPokemon()?.id); // sourceID needs to be defined expect(enemy?.getTag(BattlerTagType.INFATUATED)).toBeTruthy(); - game.move.select(Moves.SKILL_SWAP); + game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); expect(enemy?.getTag(BattlerTagType.INFATUATED)).toBeFalsy(); diff --git a/test/abilities/own_tempo.test.ts b/test/abilities/own_tempo.test.ts index b2f2c2f3030..1d6d8aa76e5 100644 --- a/test/abilities/own_tempo.test.ts +++ b/test/abilities/own_tempo.test.ts @@ -1,7 +1,7 @@ -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,27 +23,27 @@ describe("Abilities - Own Tempo", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should remove confusion when gained", async () => { game.override - .ability(Abilities.OWN_TEMPO) - .enemyAbility(Abilities.BALL_FETCH) - .moveset(Moves.SKILL_SWAP) - .enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.FEEBAS]); + .ability(AbilityId.OWN_TEMPO) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset(MoveId.SKILL_SWAP) + .enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon(); enemy?.addTag(BattlerTagType.CONFUSED); expect(enemy?.getTag(BattlerTagType.CONFUSED)).toBeTruthy(); - game.move.select(Moves.SKILL_SWAP); + game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); expect(enemy?.getTag(BattlerTagType.CONFUSED)).toBeFalsy(); diff --git a/test/abilities/parental_bond.test.ts b/test/abilities/parental_bond.test.ts index a75fea82830..73efd0f57e2 100644 --- a/test/abilities/parental_bond.test.ts +++ b/test/abilities/parental_bond.test.ts @@ -1,9 +1,9 @@ import { PokemonType } from "#enums/pokemon-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { toDmgValue } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; @@ -28,25 +28,25 @@ describe("Abilities - Parental Bond", () => { game = new GameManager(phaserGame); game.override.battleStyle("single"); game.override.disableCrits(); - game.override.ability(Abilities.PARENTAL_BOND); - game.override.enemySpecies(Species.SNORLAX); - game.override.enemyAbility(Abilities.FUR_COAT); - game.override.enemyMoveset(Moves.SPLASH); + game.override.ability(AbilityId.PARENTAL_BOND); + game.override.enemySpecies(SpeciesId.SNORLAX); + game.override.enemyAbility(AbilityId.FUR_COAT); + game.override.enemyMoveset(MoveId.SPLASH); game.override.startingLevel(100); game.override.enemyLevel(100); }); it("should add second strike to attack move", async () => { - game.override.moveset([Moves.TACKLE]); + game.override.moveset([MoveId.TACKLE]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; let enemyStartingHp = enemyPokemon.hp; - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("DamageAnimPhase"); const firstStrikeDamage = enemyStartingHp - enemyPokemon.hp; @@ -61,14 +61,14 @@ describe("Abilities - Parental Bond", () => { }); it("should apply secondary effects to both strikes", async () => { - game.override.moveset([Moves.POWER_UP_PUNCH]); - game.override.enemySpecies(Species.AMOONGUSS); + game.override.moveset([MoveId.POWER_UP_PUNCH]); + game.override.enemySpecies(SpeciesId.AMOONGUSS); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.POWER_UP_PUNCH); + game.move.select(MoveId.POWER_UP_PUNCH); await game.phaseInterceptor.to("BerryPhase", false); @@ -77,13 +77,13 @@ describe("Abilities - Parental Bond", () => { }); it("should not apply to Status moves", async () => { - game.override.moveset([Moves.BABY_DOLL_EYES]); + game.override.moveset([MoveId.BABY_DOLL_EYES]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.BABY_DOLL_EYES); + game.move.select(MoveId.BABY_DOLL_EYES); await game.phaseInterceptor.to("BerryPhase", false); @@ -91,13 +91,13 @@ describe("Abilities - Parental Bond", () => { }); it("should not apply to multi-hit moves", async () => { - game.override.moveset([Moves.DOUBLE_HIT]); + game.override.moveset([MoveId.DOUBLE_HIT]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.DOUBLE_HIT); + game.move.select(MoveId.DOUBLE_HIT); await game.move.forceHit(); await game.phaseInterceptor.to("BerryPhase", false); @@ -106,13 +106,13 @@ describe("Abilities - Parental Bond", () => { }); it("should not apply to self-sacrifice moves", async () => { - game.override.moveset([Moves.SELF_DESTRUCT]); + game.override.moveset([MoveId.SELF_DESTRUCT]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SELF_DESTRUCT); + game.move.select(MoveId.SELF_DESTRUCT); await game.phaseInterceptor.to("DamageAnimPhase", false); @@ -120,13 +120,13 @@ describe("Abilities - Parental Bond", () => { }); it("should not apply to Rollout", async () => { - game.override.moveset([Moves.ROLLOUT]); + game.override.moveset([MoveId.ROLLOUT]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.ROLLOUT); + game.move.select(MoveId.ROLLOUT); await game.move.forceHit(); await game.phaseInterceptor.to("DamageAnimPhase", false); @@ -135,28 +135,28 @@ describe("Abilities - Parental Bond", () => { }); it("should not apply multiplier to fixed-damage moves", async () => { - game.override.moveset([Moves.DRAGON_RAGE]); + game.override.moveset([MoveId.DRAGON_RAGE]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DRAGON_RAGE); + game.move.select(MoveId.DRAGON_RAGE); await game.phaseInterceptor.to("BerryPhase", false); expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp() - 80); }); it("should not apply multiplier to counter moves", async () => { - game.override.moveset([Moves.COUNTER]); - game.override.enemyMoveset([Moves.TACKLE]); + game.override.moveset([MoveId.COUNTER]); + game.override.enemyMoveset([MoveId.TACKLE]); - await game.classicMode.startBattle([Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.COUNTER); + game.move.select(MoveId.COUNTER); await game.phaseInterceptor.to("DamageAnimPhase"); const playerDamage = leadPokemon.getMaxHp() - leadPokemon.hp; @@ -168,15 +168,15 @@ describe("Abilities - Parental Bond", () => { it("should not apply to multi-target moves", async () => { game.override.battleStyle("double"); - game.override.moveset([Moves.EARTHQUAKE]); - game.override.passiveAbility(Abilities.LEVITATE); + game.override.moveset([MoveId.EARTHQUAKE]); + game.override.passiveAbility(AbilityId.LEVITATE); - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); const playerPokemon = game.scene.getPlayerField(); - game.move.select(Moves.EARTHQUAKE); - game.move.select(Moves.EARTHQUAKE, 1); + game.move.select(MoveId.EARTHQUAKE); + game.move.select(MoveId.EARTHQUAKE, 1); await game.phaseInterceptor.to("BerryPhase", false); @@ -184,26 +184,26 @@ describe("Abilities - Parental Bond", () => { }); it("should apply to multi-target moves when hitting only one target", async () => { - game.override.moveset([Moves.EARTHQUAKE]); + game.override.moveset([MoveId.EARTHQUAKE]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.EARTHQUAKE); + game.move.select(MoveId.EARTHQUAKE); await game.phaseInterceptor.to("DamageAnimPhase", false); expect(leadPokemon.turnData.hitCount).toBe(2); }); it("should only trigger post-target move effects once", async () => { - game.override.moveset([Moves.MIND_BLOWN]); + game.override.moveset([MoveId.MIND_BLOWN]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.MIND_BLOWN); + game.move.select(MoveId.MIND_BLOWN); await game.phaseInterceptor.to("DamageAnimPhase", false); @@ -216,14 +216,14 @@ describe("Abilities - Parental Bond", () => { }); it("Burn Up only removes type after the second strike", async () => { - game.override.moveset([Moves.BURN_UP]); + game.override.moveset([MoveId.BURN_UP]); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.BURN_UP); + game.move.select(MoveId.BURN_UP); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -237,14 +237,14 @@ describe("Abilities - Parental Bond", () => { }); it("Moves boosted by this ability and Multi-Lens should strike 3 times", async () => { - game.override.moveset([Moves.TACKLE]); + game.override.moveset([MoveId.TACKLE]); game.override.startingHeldItems([{ name: "MULTI_LENS", count: 1 }]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("DamageAnimPhase"); @@ -252,17 +252,17 @@ describe("Abilities - Parental Bond", () => { }); it("Seismic Toss boosted by this ability and Multi-Lens should strike 3 times", async () => { - game.override.moveset([Moves.SEISMIC_TOSS]); + game.override.moveset([MoveId.SEISMIC_TOSS]); game.override.startingHeldItems([{ name: "MULTI_LENS", count: 1 }]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyStartingHp = enemyPokemon.hp; - game.move.select(Moves.SEISMIC_TOSS); + game.move.select(MoveId.SEISMIC_TOSS); await game.move.forceHit(); await game.phaseInterceptor.to("DamageAnimPhase"); @@ -275,13 +275,13 @@ describe("Abilities - Parental Bond", () => { }); it("Hyper Beam boosted by this ability should strike twice, then recharge", async () => { - game.override.moveset([Moves.HYPER_BEAM]); + game.override.moveset([MoveId.HYPER_BEAM]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.HYPER_BEAM); + game.move.select(MoveId.HYPER_BEAM); await game.move.forceHit(); await game.phaseInterceptor.to("DamageAnimPhase"); @@ -295,14 +295,14 @@ describe("Abilities - Parental Bond", () => { }); it("Anchor Shot boosted by this ability should only trap the target after the second hit", async () => { - game.override.moveset([Moves.ANCHOR_SHOT]); + game.override.moveset([MoveId.ANCHOR_SHOT]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.ANCHOR_SHOT); + game.move.select(MoveId.ANCHOR_SHOT); await game.move.forceHit(); await game.phaseInterceptor.to("DamageAnimPhase"); @@ -319,14 +319,14 @@ describe("Abilities - Parental Bond", () => { }); it("Smack Down boosted by this ability should only ground the target after the second hit", async () => { - game.override.moveset([Moves.SMACK_DOWN]); + game.override.moveset([MoveId.SMACK_DOWN]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SMACK_DOWN); + game.move.select(MoveId.SMACK_DOWN); await game.move.forceHit(); await game.phaseInterceptor.to("DamageAnimPhase"); @@ -340,13 +340,13 @@ describe("Abilities - Parental Bond", () => { }); it("U-turn boosted by this ability should strike twice before forcing a switch", async () => { - game.override.moveset([Moves.U_TURN]); + game.override.moveset([MoveId.U_TURN]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.U_TURN); + game.move.select(MoveId.U_TURN); await game.move.forceHit(); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -357,14 +357,14 @@ describe("Abilities - Parental Bond", () => { }); it("Wake-Up Slap boosted by this ability should only wake up the target after the second hit", async () => { - game.override.moveset([Moves.WAKE_UP_SLAP]).enemyStatusEffect(StatusEffect.SLEEP); + game.override.moveset([MoveId.WAKE_UP_SLAP]).enemyStatusEffect(StatusEffect.SLEEP); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.WAKE_UP_SLAP); + game.move.select(MoveId.WAKE_UP_SLAP); await game.move.forceHit(); await game.phaseInterceptor.to("DamageAnimPhase"); @@ -378,14 +378,14 @@ describe("Abilities - Parental Bond", () => { }); it("should not cause user to hit into King's Shield more than once", async () => { - game.override.moveset([Moves.TACKLE]); - game.override.enemyMoveset([Moves.KINGS_SHIELD]); + game.override.moveset([MoveId.TACKLE]); + game.override.enemyMoveset([MoveId.KINGS_SHIELD]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("BerryPhase", false); @@ -393,14 +393,14 @@ describe("Abilities - Parental Bond", () => { }); it("should not cause user to hit into Storm Drain more than once", async () => { - game.override.moveset([Moves.WATER_GUN]); - game.override.enemyAbility(Abilities.STORM_DRAIN); + game.override.moveset([MoveId.WATER_GUN]); + game.override.enemyAbility(AbilityId.STORM_DRAIN); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.WATER_GUN); + game.move.select(MoveId.WATER_GUN); await game.phaseInterceptor.to("BerryPhase", false); @@ -408,13 +408,13 @@ describe("Abilities - Parental Bond", () => { }); it("should not allow Future Sight to hit infinitely many times if the user switches out", async () => { - game.override.enemyLevel(1000).moveset(Moves.FUTURE_SIGHT); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + game.override.enemyLevel(1000).moveset(MoveId.FUTURE_SIGHT); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); const enemyPokemon = game.scene.getEnemyPokemon()!; vi.spyOn(enemyPokemon, "damageAndUpdate"); - game.move.select(Moves.FUTURE_SIGHT); + game.move.select(MoveId.FUTURE_SIGHT); await game.toNextTurn(); game.doSwitchPokemon(1); diff --git a/test/abilities/pastel_veil.test.ts b/test/abilities/pastel_veil.test.ts index 21da1d1353d..8a3aec918d0 100644 --- a/test/abilities/pastel_veil.test.ts +++ b/test/abilities/pastel_veil.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { CommandPhase } from "#app/phases/command-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -27,22 +27,22 @@ describe("Abilities - Pastel Veil", () => { game = new GameManager(phaserGame); game.override .battleStyle("double") - .moveset([Moves.TOXIC_THREAD, Moves.SPLASH]) - .enemyAbility(Abilities.BALL_FETCH) - .enemySpecies(Species.SUNKERN) - .enemyMoveset(Moves.SPLASH); + .moveset([MoveId.TOXIC_THREAD, MoveId.SPLASH]) + .enemyAbility(AbilityId.BALL_FETCH) + .enemySpecies(SpeciesId.SUNKERN) + .enemyMoveset(MoveId.SPLASH); }); it("prevents the user and its allies from being afflicted by poison", async () => { - await game.classicMode.startBattle([Species.MAGIKARP, Species.GALAR_PONYTA]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.GALAR_PONYTA]); const ponyta = game.scene.getPlayerField()[1]; const magikarp = game.scene.getPlayerField()[0]; ponyta.abilityIndex = 1; - expect(ponyta.hasAbility(Abilities.PASTEL_VEIL)).toBe(true); + expect(ponyta.hasAbility(AbilityId.PASTEL_VEIL)).toBe(true); - game.move.select(Moves.SPLASH); - game.move.select(Moves.TOXIC_THREAD, 1, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.TOXIC_THREAD, 1, BattlerIndex.PLAYER); await game.phaseInterceptor.to(TurnEndPhase); @@ -50,21 +50,21 @@ describe("Abilities - Pastel Veil", () => { }); it("it heals the poisoned status condition of allies if user is sent out into battle", async () => { - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS, Species.GALAR_PONYTA]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS, SpeciesId.GALAR_PONYTA]); const ponyta = game.scene.getPlayerParty()[2]; const magikarp = game.scene.getPlayerField()[0]; ponyta.abilityIndex = 1; - expect(ponyta.hasAbility(Abilities.PASTEL_VEIL)).toBe(true); + expect(ponyta.hasAbility(AbilityId.PASTEL_VEIL)).toBe(true); - game.move.select(Moves.SPLASH); - game.move.select(Moves.TOXIC_THREAD, 1, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.TOXIC_THREAD, 1, BattlerIndex.PLAYER); await game.phaseInterceptor.to(TurnEndPhase); expect(magikarp.status?.effect).toBe(StatusEffect.POISON); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSwitchPokemon(2); await game.phaseInterceptor.to(TurnEndPhase); diff --git a/test/abilities/perish_body.test.ts b/test/abilities/perish_body.test.ts index 140e087843c..9668bf349a8 100644 --- a/test/abilities/perish_body.test.ts +++ b/test/abilities/perish_body.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,21 +24,21 @@ describe("Abilities - Perish Song", () => { game.override.battleStyle("single"); game.override.disableCrits(); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyAbility(Abilities.BALL_FETCH); + game.override.enemySpecies(SpeciesId.MAGIKARP); + game.override.enemyAbility(AbilityId.BALL_FETCH); - game.override.starterSpecies(Species.CURSOLA); - game.override.ability(Abilities.PERISH_BODY); - game.override.moveset([Moves.SPLASH]); + game.override.starterSpecies(SpeciesId.CURSOLA); + game.override.ability(AbilityId.PERISH_BODY); + game.override.moveset([MoveId.SPLASH]); }); it("should trigger when hit with damaging move", async () => { - game.override.enemyMoveset([Moves.AQUA_JET]); + game.override.enemyMoveset([MoveId.AQUA_JET]); await game.classicMode.startBattle(); const cursola = game.scene.getPlayerPokemon(); const magikarp = game.scene.getEnemyPokemon(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(cursola?.summonData.tags[0].turnCount).toBe(3); @@ -46,11 +46,11 @@ describe("Abilities - Perish Song", () => { }); it("should trigger even when fainting", async () => { - game.override.enemyMoveset([Moves.AQUA_JET]).enemyLevel(100).startingLevel(1); - await game.classicMode.startBattle([Species.CURSOLA, Species.FEEBAS]); + game.override.enemyMoveset([MoveId.AQUA_JET]).enemyLevel(100).startingLevel(1); + await game.classicMode.startBattle([SpeciesId.CURSOLA, SpeciesId.FEEBAS]); const magikarp = game.scene.getEnemyPokemon(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -58,28 +58,28 @@ describe("Abilities - Perish Song", () => { }); it("should not activate if attacker already has perish song", async () => { - game.override.enemyMoveset([Moves.PERISH_SONG, Moves.AQUA_JET, Moves.SPLASH]); - await game.classicMode.startBattle([Species.FEEBAS, Species.CURSOLA]); + game.override.enemyMoveset([MoveId.PERISH_SONG, MoveId.AQUA_JET, MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.CURSOLA]); const feebas = game.scene.getPlayerPokemon(); const magikarp = game.scene.getEnemyPokemon(); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.PERISH_SONG); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.PERISH_SONG); await game.toNextTurn(); expect(feebas?.summonData.tags[0].turnCount).toBe(3); expect(magikarp?.summonData.tags[0].turnCount).toBe(3); game.doSwitchPokemon(1); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); const cursola = game.scene.getPlayerPokemon(); expect(cursola?.summonData.tags.length).toBe(0); expect(magikarp?.summonData.tags[0].turnCount).toBe(2); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.AQUA_JET); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.AQUA_JET); await game.toNextTurn(); expect(cursola?.summonData.tags.length).toBe(0); @@ -87,22 +87,22 @@ describe("Abilities - Perish Song", () => { }); it("should activate if cursola already has perish song, but not reset its counter", async () => { - game.override.enemyMoveset([Moves.PERISH_SONG, Moves.AQUA_JET, Moves.SPLASH]); - game.override.moveset([Moves.WHIRLWIND, Moves.SPLASH]); + game.override.enemyMoveset([MoveId.PERISH_SONG, MoveId.AQUA_JET, MoveId.SPLASH]); + game.override.moveset([MoveId.WHIRLWIND, MoveId.SPLASH]); game.override.startingWave(5); - await game.classicMode.startBattle([Species.CURSOLA]); + await game.classicMode.startBattle([SpeciesId.CURSOLA]); const cursola = game.scene.getPlayerPokemon(); - game.move.select(Moves.WHIRLWIND); - await game.move.selectEnemyMove(Moves.PERISH_SONG); + game.move.select(MoveId.WHIRLWIND); + await game.move.selectEnemyMove(MoveId.PERISH_SONG); await game.toNextTurn(); const magikarp = game.scene.getEnemyPokemon(); expect(cursola?.summonData.tags[0].turnCount).toBe(3); expect(magikarp?.summonData.tags.length).toBe(0); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.AQUA_JET); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.AQUA_JET); await game.toNextTurn(); expect(cursola?.summonData.tags[0].turnCount).toBe(2); diff --git a/test/abilities/power_construct.test.ts b/test/abilities/power_construct.test.ts index 67005f5c87e..f8e3de802e6 100644 --- a/test/abilities/power_construct.test.ts +++ b/test/abilities/power_construct.test.ts @@ -1,9 +1,9 @@ import { Status } from "#app/data/status-effect"; import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; @@ -24,12 +24,12 @@ describe("Abilities - POWER CONSTRUCT", () => { beforeEach(() => { game = new GameManager(phaserGame); - const moveToUse = Moves.SPLASH; + const moveToUse = MoveId.SPLASH; game.override .battleStyle("single") - .ability(Abilities.POWER_CONSTRUCT) + .ability(AbilityId.POWER_CONSTRUCT) .moveset([moveToUse]) - .enemyMoveset(Moves.TACKLE); + .enemyMoveset(MoveId.TACKLE); }); test("check if fainted 50% Power Construct Pokemon switches to base form on arena reset", async () => { @@ -37,12 +37,12 @@ describe("Abilities - POWER CONSTRUCT", () => { completeForm = 4; game.override.startingWave(4); game.override.starterForms({ - [Species.ZYGARDE]: completeForm, + [SpeciesId.ZYGARDE]: completeForm, }); - await game.classicMode.startBattle([Species.MAGIKARP, Species.ZYGARDE]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.ZYGARDE]); - const zygarde = game.scene.getPlayerParty().find(p => p.species.speciesId === Species.ZYGARDE); + const zygarde = game.scene.getPlayerParty().find(p => p.species.speciesId === SpeciesId.ZYGARDE); expect(zygarde).not.toBe(undefined); expect(zygarde!.formIndex).toBe(completeForm); @@ -50,7 +50,7 @@ describe("Abilities - POWER CONSTRUCT", () => { zygarde!.status = new Status(StatusEffect.FAINT); expect(zygarde!.isFainted()).toBe(true); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to(TurnEndPhase); game.doSelectModifier(); @@ -64,12 +64,12 @@ describe("Abilities - POWER CONSTRUCT", () => { completeForm = 5; game.override.startingWave(4); game.override.starterForms({ - [Species.ZYGARDE]: completeForm, + [SpeciesId.ZYGARDE]: completeForm, }); - await game.classicMode.startBattle([Species.MAGIKARP, Species.ZYGARDE]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.ZYGARDE]); - const zygarde = game.scene.getPlayerParty().find(p => p.species.speciesId === Species.ZYGARDE); + const zygarde = game.scene.getPlayerParty().find(p => p.species.speciesId === SpeciesId.ZYGARDE); expect(zygarde).not.toBe(undefined); expect(zygarde!.formIndex).toBe(completeForm); @@ -77,7 +77,7 @@ describe("Abilities - POWER CONSTRUCT", () => { zygarde!.status = new Status(StatusEffect.FAINT); expect(zygarde!.isFainted()).toBe(true); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to(TurnEndPhase); game.doSelectModifier(); diff --git a/test/abilities/power_spot.test.ts b/test/abilities/power_spot.test.ts index 0a062537202..5e6cbce7742 100644 --- a/test/abilities/power_spot.test.ts +++ b/test/abilities/power_spot.test.ts @@ -1,9 +1,9 @@ import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -27,49 +27,49 @@ describe("Abilities - Power Spot", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("double"); - game.override.moveset([Moves.TACKLE, Moves.BREAKING_SWIPE, Moves.SPLASH, Moves.DAZZLING_GLEAM]); - game.override.enemyMoveset(Moves.SPLASH); - game.override.enemySpecies(Species.SHUCKLE); - game.override.enemyAbility(Abilities.BALL_FETCH); + game.override.moveset([MoveId.TACKLE, MoveId.BREAKING_SWIPE, MoveId.SPLASH, MoveId.DAZZLING_GLEAM]); + game.override.enemyMoveset(MoveId.SPLASH); + game.override.enemySpecies(SpeciesId.SHUCKLE); + game.override.enemyAbility(AbilityId.BALL_FETCH); }); it("raises the power of allies' special moves by 30%", async () => { - const moveToCheck = allMoves[Moves.DAZZLING_GLEAM]; + const moveToCheck = allMoves[MoveId.DAZZLING_GLEAM]; const basePower = moveToCheck.power; vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.classicMode.startBattle([Species.REGIELEKI, Species.STONJOURNER]); - game.move.select(Moves.DAZZLING_GLEAM); - game.move.select(Moves.SPLASH, 1); + await game.classicMode.startBattle([SpeciesId.REGIELEKI, SpeciesId.STONJOURNER]); + game.move.select(MoveId.DAZZLING_GLEAM); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(MoveEffectPhase); expect(moveToCheck.calculateBattlePower).toHaveReturnedWith(basePower * powerSpotMultiplier); }); it("raises the power of allies' physical moves by 30%", async () => { - const moveToCheck = allMoves[Moves.BREAKING_SWIPE]; + const moveToCheck = allMoves[MoveId.BREAKING_SWIPE]; const basePower = moveToCheck.power; vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.classicMode.startBattle([Species.REGIELEKI, Species.STONJOURNER]); - game.move.select(Moves.BREAKING_SWIPE); - game.move.select(Moves.SPLASH, 1); + await game.classicMode.startBattle([SpeciesId.REGIELEKI, SpeciesId.STONJOURNER]); + game.move.select(MoveId.BREAKING_SWIPE); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(MoveEffectPhase); expect(moveToCheck.calculateBattlePower).toHaveReturnedWith(basePower * powerSpotMultiplier); }); it("does not raise the power of the ability owner's moves", async () => { - const moveToCheck = allMoves[Moves.BREAKING_SWIPE]; + const moveToCheck = allMoves[MoveId.BREAKING_SWIPE]; const basePower = moveToCheck.power; vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.classicMode.startBattle([Species.STONJOURNER, Species.REGIELEKI]); - game.move.select(Moves.BREAKING_SWIPE); - game.move.select(Moves.SPLASH, 1); + await game.classicMode.startBattle([SpeciesId.STONJOURNER, SpeciesId.REGIELEKI]); + game.move.select(MoveId.BREAKING_SWIPE); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); expect(moveToCheck.calculateBattlePower).toHaveReturnedWith(basePower); diff --git a/test/abilities/protean.test.ts b/test/abilities/protean.test.ts index e868be8e231..a0b04fa0be5 100644 --- a/test/abilities/protean.test.ts +++ b/test/abilities/protean.test.ts @@ -3,11 +3,11 @@ import { PokemonType } from "#enums/pokemon-type"; import { Weather } from "#app/data/weather"; import type { PlayerPokemon } from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Biome } from "#enums/biome"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { BiomeId } from "#enums/biome-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -31,46 +31,46 @@ describe("Abilities - Protean", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .ability(Abilities.PROTEAN) + .ability(AbilityId.PROTEAN) .startingLevel(100) - .enemySpecies(Species.RATTATA) - .enemyMoveset(Moves.ENDURE); + .enemySpecies(SpeciesId.RATTATA) + .enemyMoveset(MoveId.ENDURE); }); test("ability applies and changes a pokemon's type", async () => { - game.override.moveset([Moves.SPLASH]); + game.override.moveset([MoveId.SPLASH]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.SPLASH); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.SPLASH); }); // Test for Gen9+ functionality, we are using previous funcionality test.skip("ability applies only once per switch in", async () => { - game.override.moveset([Moves.SPLASH, Moves.AGILITY]); + game.override.moveset([MoveId.SPLASH, MoveId.AGILITY]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.BULBASAUR]); let leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.SPLASH); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.SPLASH); - game.move.select(Moves.AGILITY); + game.move.select(MoveId.AGILITY); await game.phaseInterceptor.to(TurnEndPhase); - expect(leadPokemon.waveData.abilitiesApplied).toContain(Abilities.PROTEAN); + expect(leadPokemon.waveData.abilitiesApplied).toContain(AbilityId.PROTEAN); const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]]; - const moveType = PokemonType[allMoves[Moves.AGILITY].type]; + const moveType = PokemonType[allMoves[MoveId.AGILITY].type]; expect(leadPokemonType).not.toBe(moveType); await game.toNextTurn(); @@ -82,25 +82,25 @@ describe("Abilities - Protean", () => { leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.SPLASH); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.SPLASH); }); test("ability applies correctly even if the pokemon's move has a variable type", async () => { - game.override.moveset([Moves.WEATHER_BALL]); + game.override.moveset([MoveId.WEATHER_BALL]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); game.scene.arena.weather = new Weather(WeatherType.SUNNY); - game.move.select(Moves.WEATHER_BALL); + game.move.select(MoveId.WEATHER_BALL); await game.phaseInterceptor.to(TurnEndPhase); - expect(leadPokemon.waveData.abilitiesApplied).toContain(Abilities.PROTEAN); + expect(leadPokemon.waveData.abilitiesApplied).toContain(AbilityId.PROTEAN); expect(leadPokemon.getTypes()).toHaveLength(1); const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]], moveType = PokemonType[PokemonType.FIRE]; @@ -108,18 +108,18 @@ describe("Abilities - Protean", () => { }); test("ability applies correctly even if the type has changed by another ability", async () => { - game.override.moveset([Moves.TACKLE]); - game.override.passiveAbility(Abilities.REFRIGERATE); + game.override.moveset([MoveId.TACKLE]); + game.override.passiveAbility(AbilityId.REFRIGERATE); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); - expect(leadPokemon.waveData.abilitiesApplied).toContain(Abilities.PROTEAN); + expect(leadPokemon.waveData.abilitiesApplied).toContain(AbilityId.PROTEAN); expect(leadPokemon.getTypes()).toHaveLength(1); const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]], moveType = PokemonType[PokemonType.ICE]; @@ -127,173 +127,173 @@ describe("Abilities - Protean", () => { }); test("ability applies correctly even if the pokemon's move calls another move", async () => { - game.override.moveset([Moves.NATURE_POWER]); + game.override.moveset([MoveId.NATURE_POWER]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.scene.arena.biomeType = Biome.MOUNTAIN; - game.move.select(Moves.NATURE_POWER); + game.scene.arena.biomeType = BiomeId.MOUNTAIN; + game.move.select(MoveId.NATURE_POWER); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.AIR_SLASH); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.AIR_SLASH); }); test("ability applies correctly even if the pokemon's move is delayed / charging", async () => { - game.override.moveset([Moves.DIG]); + game.override.moveset([MoveId.DIG]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.DIG); + game.move.select(MoveId.DIG); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.DIG); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.DIG); }); test("ability applies correctly even if the pokemon's move misses", async () => { - game.override.moveset([Moves.TACKLE]); - game.override.enemyMoveset(Moves.SPLASH); + game.override.moveset([MoveId.TACKLE]); + game.override.enemyMoveset(MoveId.SPLASH); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.move.forceMiss(); await game.phaseInterceptor.to(TurnEndPhase); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon.isFullHp()).toBe(true); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.TACKLE); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TACKLE); }); test("ability applies correctly even if the pokemon's move is protected against", async () => { - game.override.moveset([Moves.TACKLE]).enemyMoveset(Moves.PROTECT); + game.override.moveset([MoveId.TACKLE]).enemyMoveset(MoveId.PROTECT); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.TACKLE); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TACKLE); }); test("ability applies correctly even if the pokemon's move fails because of type immunity", async () => { - game.override.moveset([Moves.TACKLE]); - game.override.enemySpecies(Species.GASTLY); + game.override.moveset([MoveId.TACKLE]); + game.override.enemySpecies(SpeciesId.GASTLY); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.TACKLE); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TACKLE); }); test("ability is not applied if pokemon's type is the same as the move's type", async () => { - game.override.moveset([Moves.SPLASH]); + game.override.moveset([MoveId.SPLASH]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - leadPokemon.summonData.types = [allMoves[Moves.SPLASH].type]; - game.move.select(Moves.SPLASH); + leadPokemon.summonData.types = [allMoves[MoveId.SPLASH].type]; + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(Abilities.PROTEAN); + expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.PROTEAN); }); test("ability is not applied if pokemon is terastallized", async () => { - game.override.moveset([Moves.SPLASH]); + game.override.moveset([MoveId.SPLASH]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); leadPokemon.isTerastallized = true; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(Abilities.PROTEAN); + expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.PROTEAN); }); test("ability is not applied if pokemon uses struggle", async () => { - game.override.moveset([Moves.STRUGGLE]); + game.override.moveset([MoveId.STRUGGLE]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.STRUGGLE); + game.move.select(MoveId.STRUGGLE); await game.phaseInterceptor.to(TurnEndPhase); - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(Abilities.PROTEAN); + expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.PROTEAN); }); test("ability is not applied if the pokemon's move fails", async () => { - game.override.moveset([Moves.BURN_UP]); + game.override.moveset([MoveId.BURN_UP]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.BURN_UP); + game.move.select(MoveId.BURN_UP); await game.phaseInterceptor.to(TurnEndPhase); - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(Abilities.PROTEAN); + expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.PROTEAN); }); test("ability applies correctly even if the pokemon's Trick-or-Treat fails", async () => { - game.override.moveset([Moves.TRICK_OR_TREAT]); - game.override.enemySpecies(Species.GASTLY); + game.override.moveset([MoveId.TRICK_OR_TREAT]); + game.override.enemySpecies(SpeciesId.GASTLY); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.TRICK_OR_TREAT); + game.move.select(MoveId.TRICK_OR_TREAT); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.TRICK_OR_TREAT); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TRICK_OR_TREAT); }); test("ability applies correctly and the pokemon curses itself", async () => { - game.override.moveset([Moves.CURSE]); + game.override.moveset([MoveId.CURSE]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; expect(leadPokemon).not.toBe(undefined); - game.move.select(Moves.CURSE); + game.move.select(MoveId.CURSE); await game.phaseInterceptor.to(TurnEndPhase); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, Moves.CURSE); + testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.CURSE); expect(leadPokemon.getTag(BattlerTagType.CURSED)).not.toBe(undefined); }); }); -function testPokemonTypeMatchesDefaultMoveType(pokemon: PlayerPokemon, move: Moves) { - expect(pokemon.waveData.abilitiesApplied).toContain(Abilities.PROTEAN); +function testPokemonTypeMatchesDefaultMoveType(pokemon: PlayerPokemon, move: MoveId) { + expect(pokemon.waveData.abilitiesApplied).toContain(AbilityId.PROTEAN); expect(pokemon.getTypes()).toHaveLength(1); const pokemonType = PokemonType[pokemon.getTypes()[0]], moveType = PokemonType[allMoves[move].type]; diff --git a/test/abilities/protosynthesis.test.ts b/test/abilities/protosynthesis.test.ts index e312ebd572c..3bf74acaca7 100644 --- a/test/abilities/protosynthesis.test.ts +++ b/test/abilities/protosynthesis.test.ts @@ -1,7 +1,7 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { Nature } from "#enums/nature"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -25,23 +25,23 @@ describe("Abilities - Protosynthesis", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.TACKLE]) - .ability(Abilities.PROTOSYNTHESIS) + .moveset([MoveId.SPLASH, MoveId.TACKLE]) + .ability(AbilityId.PROTOSYNTHESIS) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should not consider temporary items when determining which stat to boost", async () => { // Mew has uniform base stats game.override .startingModifier([{ name: "TEMP_STAT_STAGE_BOOSTER", type: Stat.DEF }]) - .enemyMoveset(Moves.SUNNY_DAY) + .enemyMoveset(MoveId.SUNNY_DAY) .startingLevel(100) .enemyLevel(100); - await game.classicMode.startBattle([Species.MEW]); + await game.classicMode.startBattle([SpeciesId.MEW]); const mew = game.scene.getPlayerPokemon()!; // Nature of starting mon is randomized. We need to fix it to a neutral nature for the automated test. mew.setNature(Nature.HARDY); @@ -69,7 +69,7 @@ describe("Abilities - Protosynthesis", () => { true, ); const initialHp = enemy.hp; - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); const unboosted_dmg = initialHp - enemy.hp; @@ -96,7 +96,7 @@ describe("Abilities - Protosynthesis", () => { false, true, ); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); const boosted_dmg = initialHp - enemy.hp; diff --git a/test/abilities/quick_draw.test.ts b/test/abilities/quick_draw.test.ts index e761d236a93..70b8637aa37 100644 --- a/test/abilities/quick_draw.test.ts +++ b/test/abilities/quick_draw.test.ts @@ -1,9 +1,9 @@ import { BypassSpeedChanceAbAttr } from "#app/data/abilities/ability"; import { allAbilities } from "#app/data/data-lists"; import { FaintPhase } from "#app/phases/faint-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; @@ -26,16 +26,16 @@ describe("Abilities - Quick Draw", () => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.starterSpecies(Species.MAGIKARP); - game.override.ability(Abilities.QUICK_DRAW); - game.override.moveset([Moves.TACKLE, Moves.TAIL_WHIP]); + game.override.starterSpecies(SpeciesId.MAGIKARP); + game.override.ability(AbilityId.QUICK_DRAW); + game.override.moveset([MoveId.TACKLE, MoveId.TAIL_WHIP]); game.override.enemyLevel(100); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyAbility(Abilities.BALL_FETCH); - game.override.enemyMoveset([Moves.TACKLE]); + game.override.enemySpecies(SpeciesId.MAGIKARP); + game.override.enemyAbility(AbilityId.BALL_FETCH); + game.override.enemyMoveset([MoveId.TACKLE]); - vi.spyOn(allAbilities[Abilities.QUICK_DRAW].getAttrs(BypassSpeedChanceAbAttr)[0], "chance", "get").mockReturnValue( + vi.spyOn(allAbilities[AbilityId.QUICK_DRAW].getAttrs(BypassSpeedChanceAbAttr)[0], "chance", "get").mockReturnValue( 100, ); }); @@ -49,12 +49,12 @@ describe("Abilities - Quick Draw", () => { pokemon.hp = 1; enemy.hp = 1; - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(FaintPhase, false); expect(pokemon.isFainted()).toBe(false); expect(enemy.isFainted()).toBe(true); - expect(pokemon.waveData.abilitiesApplied).contain(Abilities.QUICK_DRAW); + expect(pokemon.waveData.abilitiesApplied).contain(AbilityId.QUICK_DRAW); }, 20000); test( @@ -71,17 +71,17 @@ describe("Abilities - Quick Draw", () => { pokemon.hp = 1; enemy.hp = 1; - game.move.select(Moves.TAIL_WHIP); + game.move.select(MoveId.TAIL_WHIP); await game.phaseInterceptor.to(FaintPhase, false); expect(pokemon.isFainted()).toBe(true); expect(enemy.isFainted()).toBe(false); - expect(pokemon.waveData.abilitiesApplied).not.contain(Abilities.QUICK_DRAW); + expect(pokemon.waveData.abilitiesApplied).not.contain(AbilityId.QUICK_DRAW); }, ); test("does not increase priority", async () => { - game.override.enemyMoveset([Moves.EXTREME_SPEED]); + game.override.enemyMoveset([MoveId.EXTREME_SPEED]); await game.classicMode.startBattle(); @@ -91,11 +91,11 @@ describe("Abilities - Quick Draw", () => { pokemon.hp = 1; enemy.hp = 1; - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(FaintPhase, false); expect(pokemon.isFainted()).toBe(true); expect(enemy.isFainted()).toBe(false); - expect(pokemon.waveData.abilitiesApplied).contain(Abilities.QUICK_DRAW); + expect(pokemon.waveData.abilitiesApplied).contain(AbilityId.QUICK_DRAW); }, 20000); }); diff --git a/test/abilities/sand_spit.test.ts b/test/abilities/sand_spit.test.ts index 2b655f92466..96e6380ae88 100644 --- a/test/abilities/sand_spit.test.ts +++ b/test/abilities/sand_spit.test.ts @@ -1,7 +1,7 @@ import { WeatherType } from "#app/enums/weather-type"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,29 +25,29 @@ describe("Abilities - Sand Spit", () => { game.override.battleStyle("single"); game.override.disableCrits(); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyAbility(Abilities.BALL_FETCH); + game.override.enemySpecies(SpeciesId.MAGIKARP); + game.override.enemyAbility(AbilityId.BALL_FETCH); - game.override.starterSpecies(Species.SILICOBRA); - game.override.ability(Abilities.SAND_SPIT); - game.override.moveset([Moves.SPLASH, Moves.COIL]); + game.override.starterSpecies(SpeciesId.SILICOBRA); + game.override.ability(AbilityId.SAND_SPIT); + game.override.moveset([MoveId.SPLASH, MoveId.COIL]); }); it("should trigger when hit with damaging move", async () => { - game.override.enemyMoveset([Moves.TACKLE]); + game.override.enemyMoveset([MoveId.TACKLE]); await game.classicMode.startBattle(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SANDSTORM); }, 20000); it("should trigger even when fainting", async () => { - game.override.enemyMoveset([Moves.TACKLE]).enemyLevel(100).startingLevel(1); - await game.classicMode.startBattle([Species.SILICOBRA, Species.MAGIKARP]); + game.override.enemyMoveset([MoveId.TACKLE]).enemyLevel(100).startingLevel(1); + await game.classicMode.startBattle([SpeciesId.SILICOBRA, SpeciesId.MAGIKARP]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -55,10 +55,10 @@ describe("Abilities - Sand Spit", () => { }); it("should not trigger when targetted with status moves", async () => { - game.override.enemyMoveset([Moves.GROWL]); + game.override.enemyMoveset([MoveId.GROWL]); await game.classicMode.startBattle(); - game.move.select(Moves.COIL); + game.move.select(MoveId.COIL); await game.toNextTurn(); expect(game.scene.arena.weather?.weatherType).not.toBe(WeatherType.SANDSTORM); diff --git a/test/abilities/sand_veil.test.ts b/test/abilities/sand_veil.test.ts index a74538fef16..f4b322dc2e9 100644 --- a/test/abilities/sand_veil.test.ts +++ b/test/abilities/sand_veil.test.ts @@ -3,9 +3,9 @@ import { allAbilities } from "#app/data/data-lists"; import { CommandPhase } from "#app/phases/command-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { WeatherType } from "#enums/weather-type"; import GameManager from "#test/testUtils/gameManager"; @@ -29,10 +29,10 @@ describe("Abilities - Sand Veil", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .enemySpecies(Species.MEOWSCARADA) - .enemyAbility(Abilities.INSOMNIA) - .enemyMoveset(Moves.TWISTER) + .moveset([MoveId.SPLASH]) + .enemySpecies(SpeciesId.MEOWSCARADA) + .enemyAbility(AbilityId.INSOMNIA) + .enemyMoveset(MoveId.TWISTER) .startingLevel(100) .enemyLevel(100) .weather(WeatherType.SANDSTORM) @@ -40,13 +40,13 @@ describe("Abilities - Sand Veil", () => { }); test("ability should increase the evasiveness of the source", async () => { - await game.classicMode.startBattle([Species.SNORLAX, Species.BLISSEY]); + await game.classicMode.startBattle([SpeciesId.SNORLAX, SpeciesId.BLISSEY]); const leadPokemon = game.scene.getPlayerField(); - vi.spyOn(leadPokemon[0], "getAbility").mockReturnValue(allAbilities[Abilities.SAND_VEIL]); + vi.spyOn(leadPokemon[0], "getAbility").mockReturnValue(allAbilities[AbilityId.SAND_VEIL]); - const sandVeilAttr = allAbilities[Abilities.SAND_VEIL].getAttrs(StatMultiplierAbAttr)[0]; + const sandVeilAttr = allAbilities[AbilityId.SAND_VEIL].getAttrs(StatMultiplierAbAttr)[0]; vi.spyOn(sandVeilAttr, "applyStatStage").mockImplementation( (_pokemon, _passive, _simulated, stat, statValue, _args) => { if (stat === Stat.EVA && game.scene.arena.weather?.weatherType === WeatherType.SANDSTORM) { @@ -57,14 +57,14 @@ describe("Abilities - Sand Veil", () => { }, ); - expect(leadPokemon[0].hasAbility(Abilities.SAND_VEIL)).toBe(true); - expect(leadPokemon[1].hasAbility(Abilities.SAND_VEIL)).toBe(false); + expect(leadPokemon[0].hasAbility(AbilityId.SAND_VEIL)).toBe(true); + expect(leadPokemon[1].hasAbility(AbilityId.SAND_VEIL)).toBe(false); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(MoveEffectPhase, false); diff --git a/test/abilities/sap_sipper.test.ts b/test/abilities/sap_sipper.test.ts index 03a6ee5d398..16559fb563f 100644 --- a/test/abilities/sap_sipper.test.ts +++ b/test/abilities/sap_sipper.test.ts @@ -2,10 +2,10 @@ import { Stat } from "#enums/stat"; import { TerrainType } from "#app/data/terrain"; import { MoveEndPhase } from "#app/phases/move-end-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -32,18 +32,18 @@ describe("Abilities - Sap Sipper", () => { game.override .battleStyle("single") .disableCrits() - .ability(Abilities.SAP_SIPPER) - .enemySpecies(Species.RATTATA) - .enemyAbility(Abilities.SAP_SIPPER) - .enemyMoveset(Moves.SPLASH); + .ability(AbilityId.SAP_SIPPER) + .enemySpecies(SpeciesId.RATTATA) + .enemyAbility(AbilityId.SAP_SIPPER) + .enemyMoveset(MoveId.SPLASH); }); it("raises ATK stat stage by 1 and block effects when activated against a grass attack", async () => { - const moveToUse = Moves.LEAFAGE; + const moveToUse = MoveId.LEAFAGE; game.override.moveset(moveToUse); - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const enemyPokemon = game.scene.getEnemyPokemon()!; const initialEnemyHp = enemyPokemon.hp; @@ -57,11 +57,11 @@ describe("Abilities - Sap Sipper", () => { }); it("raises ATK stat stage by 1 and block effects when activated against a grass status move", async () => { - const moveToUse = Moves.SPORE; + const moveToUse = MoveId.SPORE; game.override.moveset(moveToUse); - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -74,11 +74,11 @@ describe("Abilities - Sap Sipper", () => { }); it("do not activate against status moves that target the field", async () => { - const moveToUse = Moves.GRASSY_TERRAIN; + const moveToUse = MoveId.GRASSY_TERRAIN; game.override.moveset(moveToUse); - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); game.move.select(moveToUse); @@ -90,11 +90,11 @@ describe("Abilities - Sap Sipper", () => { }); it("activate once against multi-hit grass attacks", async () => { - const moveToUse = Moves.BULLET_SEED; + const moveToUse = MoveId.BULLET_SEED; game.override.moveset(moveToUse); - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const enemyPokemon = game.scene.getEnemyPokemon()!; const initialEnemyHp = enemyPokemon.hp; @@ -108,11 +108,11 @@ describe("Abilities - Sap Sipper", () => { }); it("do not activate against status moves that target the user", async () => { - const moveToUse = Moves.SPIKY_SHIELD; + const moveToUse = MoveId.SPIKY_SHIELD; game.override.moveset(moveToUse); - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const playerPokemon = game.scene.getPlayerPokemon()!; @@ -129,14 +129,16 @@ describe("Abilities - Sap Sipper", () => { }); it("activate once against multi-hit grass attacks (metronome)", async () => { - const moveToUse = Moves.METRONOME; + const moveToUse = MoveId.METRONOME; - const randomMoveAttr = allMoves[Moves.METRONOME].findAttr(attr => attr instanceof RandomMoveAttr) as RandomMoveAttr; - vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(Moves.BULLET_SEED); + const randomMoveAttr = allMoves[MoveId.METRONOME].findAttr( + attr => attr instanceof RandomMoveAttr, + ) as RandomMoveAttr; + vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(MoveId.BULLET_SEED); game.override.moveset(moveToUse); - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const enemyPokemon = game.scene.getEnemyPokemon()!; const initialEnemyHp = enemyPokemon.hp; @@ -150,13 +152,13 @@ describe("Abilities - Sap Sipper", () => { }); it("still activates regardless of accuracy check", async () => { - game.override.moveset(Moves.LEAF_BLADE); + game.override.moveset(MoveId.LEAF_BLADE); - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.LEAF_BLADE); + game.move.select(MoveId.LEAF_BLADE); await game.phaseInterceptor.to("MoveEffectPhase"); await game.move.forceMiss(); diff --git a/test/abilities/schooling.test.ts b/test/abilities/schooling.test.ts index a94b76e38ff..728e9bb7024 100644 --- a/test/abilities/schooling.test.ts +++ b/test/abilities/schooling.test.ts @@ -1,9 +1,9 @@ import { Status } from "#app/data/status-effect"; import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; @@ -24,8 +24,8 @@ describe("Abilities - SCHOOLING", () => { beforeEach(() => { game = new GameManager(phaserGame); - const moveToUse = Moves.SPLASH; - game.override.battleStyle("single").ability(Abilities.SCHOOLING).moveset([moveToUse]).enemyMoveset(Moves.TACKLE); + const moveToUse = MoveId.SPLASH; + game.override.battleStyle("single").ability(AbilityId.SCHOOLING).moveset([moveToUse]).enemyMoveset(MoveId.TACKLE); }); test("check if fainted pokemon switches to base form on arena reset", async () => { @@ -33,12 +33,12 @@ describe("Abilities - SCHOOLING", () => { schoolForm = 1; game.override.startingWave(4); game.override.starterForms({ - [Species.WISHIWASHI]: schoolForm, + [SpeciesId.WISHIWASHI]: schoolForm, }); - await game.classicMode.startBattle([Species.MAGIKARP, Species.WISHIWASHI]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.WISHIWASHI]); - const wishiwashi = game.scene.getPlayerParty().find(p => p.species.speciesId === Species.WISHIWASHI)!; + const wishiwashi = game.scene.getPlayerParty().find(p => p.species.speciesId === SpeciesId.WISHIWASHI)!; expect(wishiwashi).not.toBe(undefined); expect(wishiwashi.formIndex).toBe(schoolForm); @@ -46,7 +46,7 @@ describe("Abilities - SCHOOLING", () => { wishiwashi.status = new Status(StatusEffect.FAINT); expect(wishiwashi.isFainted()).toBe(true); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to(TurnEndPhase); game.doSelectModifier(); diff --git a/test/abilities/screen_cleaner.test.ts b/test/abilities/screen_cleaner.test.ts index f96f7bf99e2..619cc08bccf 100644 --- a/test/abilities/screen_cleaner.test.ts +++ b/test/abilities/screen_cleaner.test.ts @@ -1,9 +1,9 @@ import { ArenaTagType } from "#app/enums/arena-tag-type"; import { PostSummonPhase } from "#app/phases/post-summon-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,16 +25,16 @@ describe("Abilities - Screen Cleaner", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.ability(Abilities.SCREEN_CLEANER); - game.override.enemySpecies(Species.SHUCKLE); + game.override.ability(AbilityId.SCREEN_CLEANER); + game.override.enemySpecies(SpeciesId.SHUCKLE); }); it("removes Aurora Veil", async () => { - game.override.moveset([Moves.HAIL]).enemyMoveset(Moves.AURORA_VEIL); + game.override.moveset([MoveId.HAIL]).enemyMoveset(MoveId.AURORA_VEIL); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); - game.move.select(Moves.HAIL); + game.move.select(MoveId.HAIL); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.arena.getTag(ArenaTagType.AURORA_VEIL)).toBeDefined(); @@ -47,11 +47,11 @@ describe("Abilities - Screen Cleaner", () => { }); it("removes Light Screen", async () => { - game.override.enemyMoveset(Moves.LIGHT_SCREEN); + game.override.enemyMoveset(MoveId.LIGHT_SCREEN); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.arena.getTag(ArenaTagType.LIGHT_SCREEN)).toBeDefined(); @@ -64,11 +64,11 @@ describe("Abilities - Screen Cleaner", () => { }); it("removes Reflect", async () => { - game.override.enemyMoveset(Moves.REFLECT); + game.override.enemyMoveset(MoveId.REFLECT); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.arena.getTag(ArenaTagType.REFLECT)).toBeDefined(); diff --git a/test/abilities/seed_sower.test.ts b/test/abilities/seed_sower.test.ts index d8edbe59857..761342bfb27 100644 --- a/test/abilities/seed_sower.test.ts +++ b/test/abilities/seed_sower.test.ts @@ -1,7 +1,7 @@ import { TerrainType } from "#app/data/terrain"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,29 +25,29 @@ describe("Abilities - Seed Sower", () => { game.override.battleStyle("single"); game.override.disableCrits(); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyAbility(Abilities.BALL_FETCH); + game.override.enemySpecies(SpeciesId.MAGIKARP); + game.override.enemyAbility(AbilityId.BALL_FETCH); - game.override.starterSpecies(Species.ARBOLIVA); - game.override.ability(Abilities.SEED_SOWER); - game.override.moveset([Moves.SPLASH]); + game.override.starterSpecies(SpeciesId.ARBOLIVA); + game.override.ability(AbilityId.SEED_SOWER); + game.override.moveset([MoveId.SPLASH]); }); it("should trigger when hit with damaging move", async () => { - game.override.enemyMoveset([Moves.TACKLE]); + game.override.enemyMoveset([MoveId.TACKLE]); await game.classicMode.startBattle(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(game.scene.arena.terrain?.terrainType).toBe(TerrainType.GRASSY); }); it("should trigger even when fainting", async () => { - game.override.enemyMoveset([Moves.TACKLE]).enemyLevel(100).startingLevel(1); - await game.classicMode.startBattle([Species.ARBOLIVA, Species.MAGIKARP]); + game.override.enemyMoveset([MoveId.TACKLE]).enemyLevel(100).startingLevel(1); + await game.classicMode.startBattle([SpeciesId.ARBOLIVA, SpeciesId.MAGIKARP]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -55,10 +55,10 @@ describe("Abilities - Seed Sower", () => { }); it("should not trigger when targetted with status moves", async () => { - game.override.enemyMoveset([Moves.GROWL]); + game.override.enemyMoveset([MoveId.GROWL]); await game.classicMode.startBattle(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(game.scene.arena.terrain?.terrainType).not.toBe(TerrainType.GRASSY); diff --git a/test/abilities/serene_grace.test.ts b/test/abilities/serene_grace.test.ts index 191d5a44f19..bfdbd5324bb 100644 --- a/test/abilities/serene_grace.test.ts +++ b/test/abilities/serene_grace.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { allMoves } from "#app/data/data-lists"; @@ -27,22 +27,22 @@ describe("Abilities - Serene Grace", () => { game.override .disableCrits() .battleStyle("single") - .ability(Abilities.SERENE_GRACE) - .moveset([Moves.AIR_SLASH]) - .enemySpecies(Species.ALOLA_GEODUDE) + .ability(AbilityId.SERENE_GRACE) + .moveset([MoveId.AIR_SLASH]) + .enemySpecies(SpeciesId.ALOLA_GEODUDE) .enemyLevel(10) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.SPLASH]); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.SPLASH]); }); it("Serene Grace should double the secondary effect chance of a move", async () => { - await game.classicMode.startBattle([Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - const airSlashMove = allMoves[Moves.AIR_SLASH]; + const airSlashMove = allMoves[MoveId.AIR_SLASH]; const airSlashFlinchAttr = airSlashMove.getAttrs(FlinchAttr)[0]; vi.spyOn(airSlashFlinchAttr, "getMoveChance"); - game.move.select(Moves.AIR_SLASH); + game.move.select(MoveId.AIR_SLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceHit(); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/abilities/sheer_force.test.ts b/test/abilities/sheer_force.test.ts index 6bb0a631124..a5b1cf3b5b2 100644 --- a/test/abilities/sheer_force.test.ts +++ b/test/abilities/sheer_force.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { PokemonType } from "#enums/pokemon-type"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -28,25 +28,25 @@ describe("Abilities - Sheer Force", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .ability(Abilities.SHEER_FORCE) - .enemySpecies(Species.ONIX) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.SPLASH]) + .ability(AbilityId.SHEER_FORCE) + .enemySpecies(SpeciesId.ONIX) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.SPLASH]) .disableCrits(); }); const SHEER_FORCE_MULT = 1.3; it("Sheer Force should boost the power of the move but disable secondary effects", async () => { - game.override.moveset([Moves.AIR_SLASH]); - await game.classicMode.startBattle([Species.SHUCKLE]); + game.override.moveset([MoveId.AIR_SLASH]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - const airSlashMove = allMoves[Moves.AIR_SLASH]; + const airSlashMove = allMoves[MoveId.AIR_SLASH]; vi.spyOn(airSlashMove, "calculateBattlePower"); const airSlashFlinchAttr = airSlashMove.getAttrs(FlinchAttr)[0]; vi.spyOn(airSlashFlinchAttr, "getMoveChance"); - game.move.select(Moves.AIR_SLASH); + game.move.select(MoveId.AIR_SLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceHit(); @@ -57,13 +57,13 @@ describe("Abilities - Sheer Force", () => { }); it("Sheer Force does not affect the base damage or secondary effects of binding moves", async () => { - game.override.moveset([Moves.BIND]); - await game.classicMode.startBattle([Species.SHUCKLE]); + game.override.moveset([MoveId.BIND]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - const bindMove = allMoves[Moves.BIND]; + const bindMove = allMoves[MoveId.BIND]; vi.spyOn(bindMove, "calculateBattlePower"); - game.move.select(Moves.BIND); + game.move.select(MoveId.BIND); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceHit(); @@ -73,13 +73,13 @@ describe("Abilities - Sheer Force", () => { }, 20000); it("Sheer Force does not boost the base damage of moves with no secondary effect", async () => { - game.override.moveset([Moves.TACKLE]); - await game.classicMode.startBattle([Species.PIDGEOT]); + game.override.moveset([MoveId.TACKLE]); + await game.classicMode.startBattle([SpeciesId.PIDGEOT]); - const tackleMove = allMoves[Moves.TACKLE]; + const tackleMove = allMoves[MoveId.TACKLE]; vi.spyOn(tackleMove, "calculateBattlePower"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceHit(); await game.phaseInterceptor.to("BerryPhase", false); @@ -89,19 +89,19 @@ describe("Abilities - Sheer Force", () => { it("Sheer Force can disable the on-hit activation of specific abilities", async () => { game.override - .moveset([Moves.HEADBUTT]) - .enemySpecies(Species.SQUIRTLE) + .moveset([MoveId.HEADBUTT]) + .enemySpecies(SpeciesId.SQUIRTLE) .enemyLevel(10) - .enemyAbility(Abilities.COLOR_CHANGE); + .enemyAbility(AbilityId.COLOR_CHANGE); - await game.classicMode.startBattle([Species.PIDGEOT]); + await game.classicMode.startBattle([SpeciesId.PIDGEOT]); const enemyPokemon = game.scene.getEnemyPokemon(); - const headbuttMove = allMoves[Moves.HEADBUTT]; + const headbuttMove = allMoves[MoveId.HEADBUTT]; vi.spyOn(headbuttMove, "calculateBattlePower"); const headbuttFlinchAttr = headbuttMove.getAttrs(FlinchAttr)[0]; vi.spyOn(headbuttFlinchAttr, "getMoveChance"); - game.move.select(Moves.HEADBUTT); + game.move.select(MoveId.HEADBUTT); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceHit(); @@ -113,14 +113,14 @@ describe("Abilities - Sheer Force", () => { }); it("Two Pokemon with abilities disabled by Sheer Force hitting each other should not cause a crash", async () => { - const moveToUse = Moves.CRUNCH; + const moveToUse = MoveId.CRUNCH; game.override - .enemyAbility(Abilities.COLOR_CHANGE) - .ability(Abilities.COLOR_CHANGE) + .enemyAbility(AbilityId.COLOR_CHANGE) + .ability(AbilityId.COLOR_CHANGE) .moveset(moveToUse) .enemyMoveset(moveToUse); - await game.classicMode.startBattle([Species.PIDGEOT]); + await game.classicMode.startBattle([SpeciesId.PIDGEOT]); const pidgeot = game.scene.getPlayerParty()[0]; const onix = game.scene.getEnemyParty()[0]; @@ -139,16 +139,16 @@ describe("Abilities - Sheer Force", () => { it("Sheer Force should disable Meloetta's transformation from Relic Song", async () => { game.override - .ability(Abilities.SHEER_FORCE) - .moveset([Moves.RELIC_SONG]) - .enemyMoveset([Moves.SPLASH]) + .ability(AbilityId.SHEER_FORCE) + .moveset([MoveId.RELIC_SONG]) + .enemyMoveset([MoveId.SPLASH]) .enemyLevel(100); - await game.classicMode.startBattle([Species.MELOETTA]); + await game.classicMode.startBattle([SpeciesId.MELOETTA]); const playerPokemon = game.scene.getPlayerPokemon(); const formKeyStart = playerPokemon?.getFormKey(); - game.move.select(Moves.RELIC_SONG); + game.move.select(MoveId.RELIC_SONG); await game.phaseInterceptor.to("TurnEndPhase"); expect(formKeyStart).toBe(playerPokemon?.getFormKey()); }); diff --git a/test/abilities/shield_dust.test.ts b/test/abilities/shield_dust.test.ts index 4ab58e8c2a6..e99b7563cb7 100644 --- a/test/abilities/shield_dust.test.ts +++ b/test/abilities/shield_dust.test.ts @@ -7,9 +7,9 @@ import { } from "#app/data/abilities/ability"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { NumberHolder } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -32,20 +32,20 @@ describe("Abilities - Shield Dust", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.enemySpecies(Species.ONIX); - game.override.enemyAbility(Abilities.SHIELD_DUST); + game.override.enemySpecies(SpeciesId.ONIX); + game.override.enemyAbility(AbilityId.SHIELD_DUST); game.override.startingLevel(100); - game.override.moveset(Moves.AIR_SLASH); - game.override.enemyMoveset(Moves.TACKLE); + game.override.moveset(MoveId.AIR_SLASH); + game.override.enemyMoveset(MoveId.TACKLE); }); it("Shield Dust", async () => { - await game.classicMode.startBattle([Species.PIDGEOT]); + await game.classicMode.startBattle([SpeciesId.PIDGEOT]); game.scene.getEnemyPokemon()!.stats[Stat.SPDEF] = 10000; expect(game.scene.getPlayerPokemon()!.formIndex).toBe(0); - game.move.select(Moves.AIR_SLASH); + game.move.select(MoveId.AIR_SLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase, false); @@ -53,7 +53,7 @@ describe("Abilities - Shield Dust", () => { // Shield Dust negates secondary effect const phase = game.scene.getCurrentPhase() as MoveEffectPhase; const move = phase.move; - expect(move.id).toBe(Moves.AIR_SLASH); + expect(move.id).toBe(MoveId.AIR_SLASH); const chance = new NumberHolder(move.chance); await applyAbAttrs( diff --git a/test/abilities/shields_down.test.ts b/test/abilities/shields_down.test.ts index 444b1fabf73..0a7270dff31 100644 --- a/test/abilities/shields_down.test.ts +++ b/test/abilities/shields_down.test.ts @@ -2,9 +2,9 @@ import { Status } from "#app/data/status-effect"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; @@ -25,11 +25,11 @@ describe("Abilities - SHIELDS DOWN", () => { beforeEach(() => { game = new GameManager(phaserGame); - const moveToUse = Moves.SPLASH; + const moveToUse = MoveId.SPLASH; game.override.battleStyle("single"); - game.override.ability(Abilities.SHIELDS_DOWN); + game.override.ability(AbilityId.SHIELDS_DOWN); game.override.moveset([moveToUse]); - game.override.enemyMoveset([Moves.TACKLE]); + game.override.enemyMoveset([MoveId.TACKLE]); }); test("check if fainted pokemon switched to base form on arena reset", async () => { @@ -37,12 +37,12 @@ describe("Abilities - SHIELDS DOWN", () => { coreForm = 7; game.override.startingWave(4); game.override.starterForms({ - [Species.MINIOR]: coreForm, + [SpeciesId.MINIOR]: coreForm, }); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MINIOR]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MINIOR]); - const minior = game.scene.getPlayerParty().find(p => p.species.speciesId === Species.MINIOR)!; + const minior = game.scene.getPlayerParty().find(p => p.species.speciesId === SpeciesId.MINIOR)!; expect(minior).not.toBe(undefined); expect(minior.formIndex).toBe(coreForm); @@ -50,7 +50,7 @@ describe("Abilities - SHIELDS DOWN", () => { minior.status = new Status(StatusEffect.FAINT); expect(minior.isFainted()).toBe(true); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to(TurnEndPhase); game.doSelectModifier(); @@ -60,46 +60,46 @@ describe("Abilities - SHIELDS DOWN", () => { }); test("should ignore non-volatile status moves", async () => { - game.override.enemyMoveset([Moves.SPORE]); + game.override.enemyMoveset([MoveId.SPORE]); - await game.classicMode.startBattle([Species.MINIOR]); - game.move.select(Moves.SPLASH); + await game.classicMode.startBattle([SpeciesId.MINIOR]); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.getPlayerPokemon()!.status).toBe(undefined); }); test("should still ignore non-volatile status moves used by a pokemon with mold breaker", async () => { - game.override.enemyAbility(Abilities.MOLD_BREAKER); - game.override.enemyMoveset([Moves.SPORE]); + game.override.enemyAbility(AbilityId.MOLD_BREAKER); + game.override.enemyMoveset([MoveId.SPORE]); - await game.classicMode.startBattle([Species.MINIOR]); + await game.classicMode.startBattle([SpeciesId.MINIOR]); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPORE); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPORE); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.getPlayerPokemon()!.status).toBe(undefined); }); test("should ignore non-volatile secondary status effects", async () => { - game.override.enemyMoveset([Moves.NUZZLE]); + game.override.enemyMoveset([MoveId.NUZZLE]); - await game.classicMode.startBattle([Species.MINIOR]); + await game.classicMode.startBattle([SpeciesId.MINIOR]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.getPlayerPokemon()!.status).toBe(undefined); }); test("should ignore status moves even through mold breaker", async () => { - game.override.enemyMoveset([Moves.SPORE]); - game.override.enemyAbility(Abilities.MOLD_BREAKER); + game.override.enemyMoveset([MoveId.SPORE]); + game.override.enemyAbility(AbilityId.MOLD_BREAKER); - await game.classicMode.startBattle([Species.MINIOR]); + await game.classicMode.startBattle([SpeciesId.MINIOR]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); @@ -108,45 +108,45 @@ describe("Abilities - SHIELDS DOWN", () => { // toxic spikes currently does not poison flying types when gravity is in effect test.todo("should become poisoned by toxic spikes when grounded", async () => { - game.override.enemyMoveset([Moves.GRAVITY, Moves.TOXIC_SPIKES, Moves.SPLASH]); - game.override.moveset([Moves.GRAVITY, Moves.SPLASH]); + game.override.enemyMoveset([MoveId.GRAVITY, MoveId.TOXIC_SPIKES, MoveId.SPLASH]); + game.override.moveset([MoveId.GRAVITY, MoveId.SPLASH]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MINIOR]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MINIOR]); // turn 1 - game.move.select(Moves.GRAVITY); - await game.move.selectEnemyMove(Moves.TOXIC_SPIKES); + game.move.select(MoveId.GRAVITY); + await game.move.selectEnemyMove(MoveId.TOXIC_SPIKES); await game.toNextTurn(); // turn 2 game.doSwitchPokemon(1); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); - expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(Species.MINIOR); + expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(SpeciesId.MINIOR); expect(game.scene.getPlayerPokemon()!.species.formIndex).toBe(0); expect(game.scene.getPlayerPokemon()!.status?.effect).toBe(StatusEffect.POISON); }); test("should ignore yawn", async () => { - game.override.enemyMoveset([Moves.YAWN]); + game.override.enemyMoveset([MoveId.YAWN]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MINIOR]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MINIOR]); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.YAWN); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.YAWN); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.getPlayerPokemon()!.findTag(tag => tag.tagType === BattlerTagType.DROWSY)).toBe(undefined); }); test("should not ignore volatile status effects", async () => { - game.override.enemyMoveset([Moves.CONFUSE_RAY]); + game.override.enemyMoveset([MoveId.CONFUSE_RAY]); - await game.classicMode.startBattle([Species.MINIOR]); + await game.classicMode.startBattle([SpeciesId.MINIOR]); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.CONFUSE_RAY); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.CONFUSE_RAY); await game.phaseInterceptor.to(TurnEndPhase); @@ -155,29 +155,29 @@ describe("Abilities - SHIELDS DOWN", () => { // the `NoTransformAbilityAbAttr` attribute is not checked anywhere, so this test cannot pass. test.todo("ditto should not be immune to status after transforming", async () => { - game.override.enemySpecies(Species.DITTO); - game.override.enemyAbility(Abilities.IMPOSTER); - game.override.moveset([Moves.SPLASH, Moves.SPORE]); + game.override.enemySpecies(SpeciesId.DITTO); + game.override.enemyAbility(AbilityId.IMPOSTER); + game.override.moveset([MoveId.SPLASH, MoveId.SPORE]); - await game.classicMode.startBattle([Species.MINIOR]); + await game.classicMode.startBattle([SpeciesId.MINIOR]); - game.move.select(Moves.SPORE); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPORE); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.SLEEP); }); test("should not prevent minior from receiving the fainted status effect in trainer battles", async () => { - game.override.enemyMoveset([Moves.TACKLE]); - game.override.moveset([Moves.THUNDERBOLT]); + game.override.enemyMoveset([MoveId.TACKLE]); + game.override.moveset([MoveId.THUNDERBOLT]); game.override.startingLevel(100); game.override.startingWave(5); - game.override.enemySpecies(Species.MINIOR); - await game.classicMode.startBattle([Species.REGIELEKI]); + game.override.enemySpecies(SpeciesId.MINIOR); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const minior = game.scene.getEnemyPokemon()!; - game.move.select(Moves.THUNDERBOLT); + game.move.select(MoveId.THUNDERBOLT); await game.toNextTurn(); expect(minior.isFainted()).toBe(true); expect(minior.status?.effect).toBe(StatusEffect.FAINT); diff --git a/test/abilities/simple.test.ts b/test/abilities/simple.test.ts index cf3a692a7b0..9df70848f70 100644 --- a/test/abilities/simple.test.ts +++ b/test/abilities/simple.test.ts @@ -1,6 +1,6 @@ -import { Moves } from "#app/enums/moves"; -import { Abilities } from "#enums/abilities"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { AbilityId } from "#enums/ability-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -24,14 +24,14 @@ describe("Abilities - Simple", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.BULBASAUR) - .enemyAbility(Abilities.SIMPLE) - .ability(Abilities.INTIMIDATE) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.BULBASAUR) + .enemyAbility(AbilityId.SIMPLE) + .ability(AbilityId.INTIMIDATE) + .enemyMoveset(MoveId.SPLASH); }); it("should double stat changes when applied", async () => { - await game.classicMode.startBattle([Species.SLOWBRO]); + await game.classicMode.startBattle([SpeciesId.SLOWBRO]); const enemyPokemon = game.scene.getEnemyPokemon()!; diff --git a/test/abilities/speed_boost.test.ts b/test/abilities/speed_boost.test.ts index 45ee54ffb07..9890f22ffcd 100644 --- a/test/abilities/speed_boost.test.ts +++ b/test/abilities/speed_boost.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -28,75 +28,75 @@ describe("Abilities - Speed Boost", () => { game.override .battleStyle("single") - .enemySpecies(Species.SHUCKLE) - .enemyAbility(Abilities.BALL_FETCH) + .enemySpecies(SpeciesId.SHUCKLE) + .enemyAbility(AbilityId.BALL_FETCH) .enemyLevel(100) - .ability(Abilities.SPEED_BOOST) - .enemyMoveset(Moves.SPLASH) - .moveset([Moves.SPLASH, Moves.U_TURN]); + .ability(AbilityId.SPEED_BOOST) + .enemyMoveset(MoveId.SPLASH) + .moveset([MoveId.SPLASH, MoveId.U_TURN]); }); it("should increase speed by 1 stage at end of turn", async () => { await game.classicMode.startBattle(); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(playerPokemon.getStatStage(Stat.SPD)).toBe(1); }); it("should not trigger this turn if pokemon was switched into combat via attack, but the turn after", async () => { - await game.classicMode.startBattle([Species.SHUCKLE, Species.NINJASK]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE, SpeciesId.NINJASK]); - game.move.select(Moves.U_TURN); + game.move.select(MoveId.U_TURN); game.doSelectPartyPokemon(1); await game.toNextTurn(); const playerPokemon = game.scene.getPlayerPokemon()!; expect(playerPokemon.getStatStage(Stat.SPD)).toBe(0); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(playerPokemon.getStatStage(Stat.SPD)).toBe(1); }); it("checking back to back swtiches", async () => { - await game.classicMode.startBattle([Species.SHUCKLE, Species.NINJASK]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE, SpeciesId.NINJASK]); const [shuckle, ninjask] = game.scene.getPlayerParty(); - game.move.select(Moves.U_TURN); + game.move.select(MoveId.U_TURN); game.doSelectPartyPokemon(1); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!).toBe(ninjask); expect(ninjask.getStatStage(Stat.SPD)).toBe(0); - game.move.select(Moves.U_TURN); + game.move.select(MoveId.U_TURN); game.doSelectPartyPokemon(1); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!).toBe(shuckle); expect(shuckle.getStatStage(Stat.SPD)).toBe(0); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(shuckle.getStatStage(Stat.SPD)).toBe(1); }); it("should not trigger this turn if pokemon was switched into combat via normal switch, but the turn after", async () => { - await game.classicMode.startBattle([Species.SHUCKLE, Species.NINJASK]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE, SpeciesId.NINJASK]); game.doSwitchPokemon(1); await game.toNextTurn(); const playerPokemon = game.scene.getPlayerPokemon()!; expect(playerPokemon.getStatStage(Stat.SPD)).toBe(0); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(playerPokemon.getStatStage(Stat.SPD)).toBe(1); }); it("should not trigger if pokemon fails to escape", async () => { - await game.classicMode.startBattle([Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); const commandPhase = game.scene.getCurrentPhase() as CommandPhase; commandPhase.handleCommand(Command.RUN, 0); @@ -108,7 +108,7 @@ describe("Abilities - Speed Boost", () => { const playerPokemon = game.scene.getPlayerPokemon()!; expect(playerPokemon.getStatStage(Stat.SPD)).toBe(0); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(playerPokemon.getStatStage(Stat.SPD)).toBe(1); }); diff --git a/test/abilities/stakeout.test.ts b/test/abilities/stakeout.test.ts index d986046a7e1..24c8c47df5c 100644 --- a/test/abilities/stakeout.test.ts +++ b/test/abilities/stakeout.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { isBetween } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,34 +24,34 @@ describe("Abilities - Stakeout", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.SURF]) - .ability(Abilities.STAKEOUT) + .moveset([MoveId.SPLASH, MoveId.SURF]) + .ability(AbilityId.STAKEOUT) .battleStyle("single") .disableCrits() .startingLevel(100) .enemyLevel(100) - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.SPLASH, Moves.FLIP_TURN]) + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.SPLASH, MoveId.FLIP_TURN]) .startingWave(5); }); it("should do double damage to a pokemon that switched out", async () => { - await game.classicMode.startBattle([Species.MILOTIC]); + await game.classicMode.startBattle([SpeciesId.MILOTIC]); const [enemy1] = game.scene.getEnemyParty(); - game.move.select(Moves.SURF); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SURF); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); const damage1 = enemy1.getInverseHp(); enemy1.hp = enemy1.getMaxHp(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.forceEnemyToSwitch(); await game.toNextTurn(); - game.move.select(Moves.SURF); + game.move.select(MoveId.SURF); game.forceEnemyToSwitch(); await game.toNextTurn(); @@ -60,22 +60,22 @@ describe("Abilities - Stakeout", () => { }); it("should do double damage to a pokemon that switched out via U-Turn/etc", async () => { - await game.classicMode.startBattle([Species.MILOTIC]); + await game.classicMode.startBattle([SpeciesId.MILOTIC]); const [enemy1] = game.scene.getEnemyParty(); - game.move.select(Moves.SURF); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SURF); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); const damage1 = enemy1.getInverseHp(); enemy1.hp = enemy1.getMaxHp(); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.FLIP_TURN); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.FLIP_TURN); await game.toNextTurn(); - game.move.select(Moves.SURF); - await game.move.selectEnemyMove(Moves.FLIP_TURN); + game.move.select(MoveId.SURF); + await game.move.selectEnemyMove(MoveId.FLIP_TURN); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); diff --git a/test/abilities/stall.test.ts b/test/abilities/stall.test.ts index 6e6fe04a183..78e7d49b48b 100644 --- a/test/abilities/stall.test.ts +++ b/test/abilities/stall.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,10 +25,10 @@ describe("Abilities - Stall", () => { game.override .battleStyle("single") .disableCrits() - .enemySpecies(Species.REGIELEKI) - .enemyAbility(Abilities.STALL) - .enemyMoveset(Moves.QUICK_ATTACK) - .moveset([Moves.QUICK_ATTACK, Moves.TACKLE]); + .enemySpecies(SpeciesId.REGIELEKI) + .enemyAbility(AbilityId.STALL) + .enemyMoveset(MoveId.QUICK_ATTACK) + .moveset([MoveId.QUICK_ATTACK, MoveId.TACKLE]); }); /** @@ -38,12 +38,12 @@ describe("Abilities - Stall", () => { **/ it("Pokemon with Stall should move last in its priority bracket regardless of speed", async () => { - await game.classicMode.startBattle([Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); - game.move.select(Moves.QUICK_ATTACK); + game.move.select(MoveId.QUICK_ATTACK); await game.phaseInterceptor.to(TurnStartPhase, false); const phase = game.scene.getCurrentPhase() as TurnStartPhase; @@ -56,12 +56,12 @@ describe("Abilities - Stall", () => { }, 20000); it("Pokemon with Stall will go first if a move that is in a higher priority bracket than the opponent's move is used", async () => { - await game.classicMode.startBattle([Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnStartPhase, false); const phase = game.scene.getCurrentPhase() as TurnStartPhase; @@ -74,13 +74,13 @@ describe("Abilities - Stall", () => { }, 20000); it("If both Pokemon have stall and use the same move, speed is used to determine who goes first.", async () => { - game.override.ability(Abilities.STALL); - await game.classicMode.startBattle([Species.SHUCKLE]); + game.override.ability(AbilityId.STALL); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnStartPhase, false); const phase = game.scene.getCurrentPhase() as TurnStartPhase; diff --git a/test/abilities/steely_spirit.test.ts b/test/abilities/steely_spirit.test.ts index 09805d61e14..481e037fb4b 100644 --- a/test/abilities/steely_spirit.test.ts +++ b/test/abilities/steely_spirit.test.ts @@ -1,8 +1,8 @@ import { allAbilities } from "#app/data/data-lists"; import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -11,7 +11,7 @@ describe("Abilities - Steely Spirit", () => { let phaserGame: Phaser.Game; let game: GameManager; const steelySpiritMultiplier = 1.5; - const moveToCheck = Moves.IRON_HEAD; + const moveToCheck = MoveId.IRON_HEAD; let ironHeadPower: number; @@ -29,38 +29,38 @@ describe("Abilities - Steely Spirit", () => { ironHeadPower = allMoves[moveToCheck].power; game = new GameManager(phaserGame); game.override.battleStyle("double"); - game.override.enemySpecies(Species.SHUCKLE); - game.override.enemyAbility(Abilities.BALL_FETCH); - game.override.moveset([Moves.IRON_HEAD, Moves.SPLASH]); - game.override.enemyMoveset(Moves.SPLASH); + game.override.enemySpecies(SpeciesId.SHUCKLE); + game.override.enemyAbility(AbilityId.BALL_FETCH); + game.override.moveset([MoveId.IRON_HEAD, MoveId.SPLASH]); + game.override.enemyMoveset(MoveId.SPLASH); vi.spyOn(allMoves[moveToCheck], "calculateBattlePower"); }); it("increases Steel-type moves' power used by the user and its allies by 50%", async () => { - await game.classicMode.startBattle([Species.PIKACHU, Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.SHUCKLE]); const boostSource = game.scene.getPlayerField()[1]; const enemyToCheck = game.scene.getEnemyPokemon()!; - vi.spyOn(boostSource, "getAbility").mockReturnValue(allAbilities[Abilities.STEELY_SPIRIT]); + vi.spyOn(boostSource, "getAbility").mockReturnValue(allAbilities[AbilityId.STEELY_SPIRIT]); - expect(boostSource.hasAbility(Abilities.STEELY_SPIRIT)).toBe(true); + expect(boostSource.hasAbility(AbilityId.STEELY_SPIRIT)).toBe(true); game.move.select(moveToCheck, 0, enemyToCheck.getBattlerIndex()); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("MoveEffectPhase"); expect(allMoves[moveToCheck].calculateBattlePower).toHaveReturnedWith(ironHeadPower * steelySpiritMultiplier); }); it("stacks if multiple users with this ability are on the field.", async () => { - await game.classicMode.startBattle([Species.PIKACHU, Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.PIKACHU]); const enemyToCheck = game.scene.getEnemyPokemon()!; game.scene.getPlayerField().forEach(p => { - vi.spyOn(p, "getAbility").mockReturnValue(allAbilities[Abilities.STEELY_SPIRIT]); + vi.spyOn(p, "getAbility").mockReturnValue(allAbilities[AbilityId.STEELY_SPIRIT]); }); - expect(game.scene.getPlayerField().every(p => p.hasAbility(Abilities.STEELY_SPIRIT))).toBe(true); + expect(game.scene.getPlayerField().every(p => p.hasAbility(AbilityId.STEELY_SPIRIT))).toBe(true); game.move.select(moveToCheck, 0, enemyToCheck.getBattlerIndex()); game.move.select(moveToCheck, 1, enemyToCheck.getBattlerIndex()); @@ -72,34 +72,34 @@ describe("Abilities - Steely Spirit", () => { }); it("does not take effect when suppressed", async () => { - await game.classicMode.startBattle([Species.PIKACHU, Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.SHUCKLE]); const boostSource = game.scene.getPlayerField()[1]; const enemyToCheck = game.scene.getEnemyPokemon()!; - vi.spyOn(boostSource, "getAbility").mockReturnValue(allAbilities[Abilities.STEELY_SPIRIT]); - expect(boostSource.hasAbility(Abilities.STEELY_SPIRIT)).toBe(true); + vi.spyOn(boostSource, "getAbility").mockReturnValue(allAbilities[AbilityId.STEELY_SPIRIT]); + expect(boostSource.hasAbility(AbilityId.STEELY_SPIRIT)).toBe(true); boostSource.summonData.abilitySuppressed = true; - expect(boostSource.hasAbility(Abilities.STEELY_SPIRIT)).toBe(false); + expect(boostSource.hasAbility(AbilityId.STEELY_SPIRIT)).toBe(false); expect(boostSource.summonData.abilitySuppressed).toBe(true); game.move.select(moveToCheck, 0, enemyToCheck.getBattlerIndex()); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("MoveEffectPhase"); expect(allMoves[moveToCheck].calculateBattlePower).toHaveReturnedWith(ironHeadPower); }); it("affects variable-type moves if their resolved type is Steel", async () => { - game.override.ability(Abilities.STEELY_SPIRIT).moveset([Moves.REVELATION_DANCE]); + game.override.ability(AbilityId.STEELY_SPIRIT).moveset([MoveId.REVELATION_DANCE]); - const revelationDance = allMoves[Moves.REVELATION_DANCE]; + const revelationDance = allMoves[MoveId.REVELATION_DANCE]; vi.spyOn(revelationDance, "calculateBattlePower"); - await game.classicMode.startBattle([Species.KLINKLANG]); + await game.classicMode.startBattle([SpeciesId.KLINKLANG]); - game.move.select(Moves.REVELATION_DANCE); + game.move.select(MoveId.REVELATION_DANCE); await game.phaseInterceptor.to("MoveEffectPhase"); diff --git a/test/abilities/storm_drain.test.ts b/test/abilities/storm_drain.test.ts index 0cbad796ad8..36a2112edda 100644 --- a/test/abilities/storm_drain.test.ts +++ b/test/abilities/storm_drain.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -24,55 +24,55 @@ describe("Abilities - Storm Drain", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.WATER_GUN]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH, MoveId.WATER_GUN]) + .ability(AbilityId.BALL_FETCH) .battleStyle("double") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should redirect water type moves", async () => { - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); const enemy1 = game.scene.getEnemyField()[0]; const enemy2 = game.scene.getEnemyField()[1]; - enemy2.summonData.ability = Abilities.STORM_DRAIN; + enemy2.summonData.ability = AbilityId.STORM_DRAIN; - game.move.select(Moves.WATER_GUN, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); + game.move.select(MoveId.WATER_GUN, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); expect(enemy1.isFullHp()).toBe(true); }); it("should not redirect non-water type moves", async () => { - game.override.moveset([Moves.SPLASH, Moves.AERIAL_ACE]); - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + game.override.moveset([MoveId.SPLASH, MoveId.AERIAL_ACE]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); const enemy1 = game.scene.getEnemyField()[0]; const enemy2 = game.scene.getEnemyField()[1]; - enemy2.summonData.ability = Abilities.STORM_DRAIN; + enemy2.summonData.ability = AbilityId.STORM_DRAIN; - game.move.select(Moves.AERIAL_ACE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); + game.move.select(MoveId.AERIAL_ACE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); expect(enemy1.isFullHp()).toBe(false); }); it("should boost the user's spatk without damaging", async () => { - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); const enemy2 = game.scene.getEnemyField()[1]; - enemy2.summonData.ability = Abilities.STORM_DRAIN; + enemy2.summonData.ability = AbilityId.STORM_DRAIN; - game.move.select(Moves.WATER_GUN, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); + game.move.select(MoveId.WATER_GUN, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); expect(enemy2.isFullHp()).toBe(true); @@ -80,32 +80,32 @@ describe("Abilities - Storm Drain", () => { }); it("should not redirect moves changed from water type via ability", async () => { - game.override.ability(Abilities.NORMALIZE); - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + game.override.ability(AbilityId.NORMALIZE); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); const enemy1 = game.scene.getEnemyField()[0]; const enemy2 = game.scene.getEnemyField()[1]; - enemy2.summonData.ability = Abilities.STORM_DRAIN; + enemy2.summonData.ability = AbilityId.STORM_DRAIN; - game.move.select(Moves.WATER_GUN, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); + game.move.select(MoveId.WATER_GUN, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); expect(enemy1.isFullHp()).toBe(false); }); it("should redirect moves changed to water type via ability", async () => { - game.override.ability(Abilities.LIQUID_VOICE).moveset(Moves.PSYCHIC_NOISE); - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + game.override.ability(AbilityId.LIQUID_VOICE).moveset(MoveId.PSYCHIC_NOISE); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); const enemy1 = game.scene.getEnemyField()[0]; const enemy2 = game.scene.getEnemyField()[1]; - enemy2.summonData.ability = Abilities.STORM_DRAIN; + enemy2.summonData.ability = AbilityId.STORM_DRAIN; - game.move.select(Moves.PSYCHIC_NOISE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); + game.move.select(MoveId.PSYCHIC_NOISE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); expect(enemy1.isFullHp()).toBe(true); diff --git a/test/abilities/sturdy.test.ts b/test/abilities/sturdy.test.ts index dbdd1b4570e..a50e2075fea 100644 --- a/test/abilities/sturdy.test.ts +++ b/test/abilities/sturdy.test.ts @@ -1,9 +1,9 @@ import type { EnemyPokemon } from "#app/field/pokemon"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; @@ -26,18 +26,18 @@ describe("Abilities - Sturdy", () => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.starterSpecies(Species.LUCARIO); + game.override.starterSpecies(SpeciesId.LUCARIO); game.override.startingLevel(100); - game.override.moveset([Moves.CLOSE_COMBAT, Moves.FISSURE]); + game.override.moveset([MoveId.CLOSE_COMBAT, MoveId.FISSURE]); - game.override.enemySpecies(Species.ARON); + game.override.enemySpecies(SpeciesId.ARON); game.override.enemyLevel(5); - game.override.enemyAbility(Abilities.STURDY); + game.override.enemyAbility(AbilityId.STURDY); }); test("Sturdy activates when user is at full HP", async () => { await game.classicMode.startBattle(); - game.move.select(Moves.CLOSE_COMBAT); + game.move.select(MoveId.CLOSE_COMBAT); await game.phaseInterceptor.to(MoveEndPhase); expect(game.scene.getEnemyParty()[0].hp).toBe(1); }); @@ -48,7 +48,7 @@ describe("Abilities - Sturdy", () => { const enemyPokemon: EnemyPokemon = game.scene.getEnemyParty()[0]; enemyPokemon.hp = enemyPokemon.getMaxHp() - 1; - game.move.select(Moves.CLOSE_COMBAT); + game.move.select(MoveId.CLOSE_COMBAT); await game.phaseInterceptor.to(DamageAnimPhase); expect(enemyPokemon.hp).toBe(0); @@ -57,18 +57,18 @@ describe("Abilities - Sturdy", () => { test("Sturdy pokemon should be immune to OHKO moves", async () => { await game.classicMode.startBattle(); - game.move.select(Moves.FISSURE); + game.move.select(MoveId.FISSURE); await game.phaseInterceptor.to(MoveEndPhase); const enemyPokemon: EnemyPokemon = game.scene.getEnemyParty()[0]; expect(enemyPokemon.isFullHp()).toBe(true); }); - test("Sturdy is ignored by pokemon with `Abilities.MOLD_BREAKER`", async () => { - game.override.ability(Abilities.MOLD_BREAKER); + test("Sturdy is ignored by pokemon with `AbilityId.MOLD_BREAKER`", async () => { + game.override.ability(AbilityId.MOLD_BREAKER); await game.classicMode.startBattle(); - game.move.select(Moves.CLOSE_COMBAT); + game.move.select(MoveId.CLOSE_COMBAT); await game.phaseInterceptor.to(DamageAnimPhase); const enemyPokemon: EnemyPokemon = game.scene.getEnemyParty()[0]; diff --git a/test/abilities/super_luck.test.ts b/test/abilities/super_luck.test.ts index fbcbd02bdd2..e94a4cf21f0 100644 --- a/test/abilities/super_luck.test.ts +++ b/test/abilities/super_luck.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -22,19 +22,19 @@ describe("Abilities - Super Luck", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.TACKLE]) - .ability(Abilities.SUPER_LUCK) + .moveset([MoveId.TACKLE]) + .ability(AbilityId.SUPER_LUCK) .battleStyle("single") - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should increase the crit stage of a user by 1", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemy = game.scene.getEnemyPokemon()!; const fn = vi.spyOn(enemy, "getCritStage"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("BerryPhase"); expect(fn).toHaveReturnedWith(1); fn.mockRestore(); diff --git a/test/abilities/supreme_overlord.test.ts b/test/abilities/supreme_overlord.test.ts index 4c0be80daea..6c2ca2d3677 100644 --- a/test/abilities/supreme_overlord.test.ts +++ b/test/abilities/supreme_overlord.test.ts @@ -1,7 +1,7 @@ -import { Moves } from "#app/enums/moves"; +import { MoveId } from "#enums/move-id"; import type Move from "#app/data/moves/move"; -import { Abilities } from "#enums/abilities"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { SpeciesId } from "#enums/species-id"; import { BattlerIndex } from "#app/battle"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import GameManager from "#test/testUtils/gameManager"; @@ -27,36 +27,36 @@ describe("Abilities - Supreme Overlord", () => { }); beforeEach(() => { - move = allMoves[Moves.TACKLE]; + move = allMoves[MoveId.TACKLE]; basePower = move.power; game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.MAGIKARP) + .enemySpecies(SpeciesId.MAGIKARP) .enemyLevel(100) .startingLevel(1) - .enemyAbility(Abilities.BALL_FETCH) - .ability(Abilities.SUPREME_OVERLORD) - .enemyMoveset([Moves.SPLASH]) - .moveset([Moves.TACKLE, Moves.EXPLOSION, Moves.LUNAR_DANCE]); + .enemyAbility(AbilityId.BALL_FETCH) + .ability(AbilityId.SUPREME_OVERLORD) + .enemyMoveset([MoveId.SPLASH]) + .moveset([MoveId.TACKLE, MoveId.EXPLOSION, MoveId.LUNAR_DANCE]); vi.spyOn(move, "calculateBattlePower"); }); it("should increase Power by 20% if 2 Pokemon are fainted in the party", async () => { - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); - game.move.select(Moves.EXPLOSION); + game.move.select(MoveId.EXPLOSION); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); game.doSelectPartyPokemon(1); await game.toNextTurn(); - game.move.select(Moves.EXPLOSION); + game.move.select(MoveId.EXPLOSION); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); game.doSelectPartyPokemon(2); await game.toNextTurn(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase); @@ -64,12 +64,12 @@ describe("Abilities - Supreme Overlord", () => { }); it("should increase Power by 30% if an ally fainted twice and another one once", async () => { - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); /** * Bulbasur faints once */ - game.move.select(Moves.EXPLOSION); + game.move.select(MoveId.EXPLOSION); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -78,7 +78,7 @@ describe("Abilities - Supreme Overlord", () => { * Charmander faints once */ game.doRevivePokemon(1); - game.move.select(Moves.EXPLOSION); + game.move.select(MoveId.EXPLOSION); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -86,12 +86,12 @@ describe("Abilities - Supreme Overlord", () => { /** * Bulbasur faints twice */ - game.move.select(Moves.EXPLOSION); + game.move.select(MoveId.EXPLOSION); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); game.doSelectPartyPokemon(2); await game.toNextTurn(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase); @@ -99,14 +99,14 @@ describe("Abilities - Supreme Overlord", () => { }); it("should maintain its power during next battle if it is within the same arena encounter", async () => { - game.override.enemySpecies(Species.MAGIKARP).startingWave(1).enemyLevel(1).startingLevel(100); + game.override.enemySpecies(SpeciesId.MAGIKARP).startingWave(1).enemyLevel(1).startingLevel(100); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); /** * The first Pokemon faints and another Pokemon in the party is selected. */ - game.move.select(Moves.LUNAR_DANCE); + game.move.select(MoveId.LUNAR_DANCE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -114,11 +114,11 @@ describe("Abilities - Supreme Overlord", () => { /** * Enemy Pokemon faints and new wave is entered. */ - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextWave(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("TurnEndPhase"); @@ -126,20 +126,20 @@ describe("Abilities - Supreme Overlord", () => { }); it("should reset playerFaints count if we enter new trainer battle", async () => { - game.override.enemySpecies(Species.MAGIKARP).startingWave(4).enemyLevel(1).startingLevel(100); + game.override.enemySpecies(SpeciesId.MAGIKARP).startingWave(4).enemyLevel(1).startingLevel(100); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); - game.move.select(Moves.LUNAR_DANCE); + game.move.select(MoveId.LUNAR_DANCE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); game.doSelectPartyPokemon(1); await game.toNextTurn(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextWave(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase", false); @@ -147,20 +147,20 @@ describe("Abilities - Supreme Overlord", () => { }); it("should reset playerFaints count if we enter new biome", async () => { - game.override.enemySpecies(Species.MAGIKARP).startingWave(10).enemyLevel(1).startingLevel(100); + game.override.enemySpecies(SpeciesId.MAGIKARP).startingWave(10).enemyLevel(1).startingLevel(100); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); - game.move.select(Moves.LUNAR_DANCE); + game.move.select(MoveId.LUNAR_DANCE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); game.doSelectPartyPokemon(1); await game.toNextTurn(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextWave(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase", false); diff --git a/test/abilities/sweet_veil.test.ts b/test/abilities/sweet_veil.test.ts index e294938acd4..131feaf7f56 100644 --- a/test/abilities/sweet_veil.test.ts +++ b/test/abilities/sweet_veil.test.ts @@ -1,10 +1,10 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { CommandPhase } from "#app/phases/command-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -27,17 +27,17 @@ describe("Abilities - Sweet Veil", () => { game = new GameManager(phaserGame); game.override .battleStyle("double") - .moveset([Moves.SPLASH, Moves.REST, Moves.YAWN]) - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.POWDER); + .moveset([MoveId.SPLASH, MoveId.REST, MoveId.YAWN]) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.POWDER); }); it("prevents the user and its allies from falling asleep", async () => { - await game.classicMode.startBattle([Species.SWIRLIX, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.SWIRLIX, SpeciesId.MAGIKARP]); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); @@ -45,11 +45,11 @@ describe("Abilities - Sweet Veil", () => { }); it("causes Rest to fail when used by the user or its allies", async () => { - game.override.enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.SWIRLIX, Species.MAGIKARP]); + game.override.enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.SWIRLIX, SpeciesId.MAGIKARP]); - game.move.select(Moves.SPLASH); - game.move.select(Moves.REST, 1); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.REST, 1); await game.phaseInterceptor.to(TurnEndPhase); @@ -57,11 +57,11 @@ describe("Abilities - Sweet Veil", () => { }); it("causes Yawn to fail if used on the user or its allies", async () => { - game.override.enemyMoveset(Moves.YAWN); - await game.classicMode.startBattle([Species.SWIRLIX, Species.MAGIKARP]); + game.override.enemyMoveset(MoveId.YAWN); + await game.classicMode.startBattle([SpeciesId.SWIRLIX, SpeciesId.MAGIKARP]); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); @@ -69,22 +69,22 @@ describe("Abilities - Sweet Veil", () => { }); it("prevents the user and its allies already drowsy due to Yawn from falling asleep.", async () => { - game.override.enemySpecies(Species.PIKACHU); + game.override.enemySpecies(SpeciesId.PIKACHU); game.override.enemyLevel(5); game.override.startingLevel(5); - game.override.enemyMoveset(Moves.SPLASH); + game.override.enemyMoveset(MoveId.SPLASH); - await game.classicMode.startBattle([Species.SHUCKLE, Species.SHUCKLE, Species.SWIRLIX]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE, SpeciesId.SHUCKLE, SpeciesId.SWIRLIX]); - game.move.select(Moves.SPLASH); - game.move.select(Moves.YAWN, 1, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.YAWN, 1, BattlerIndex.PLAYER); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerField().some(p => !!p.getTag(BattlerTagType.DROWSY))).toBe(true); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSwitchPokemon(2); expect(game.scene.getPlayerField().every(p => p.status?.effect)).toBe(false); diff --git a/test/abilities/synchronize.test.ts b/test/abilities/synchronize.test.ts index e781d55fe10..030509ac4e6 100644 --- a/test/abilities/synchronize.test.ts +++ b/test/abilities/synchronize.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -26,16 +26,16 @@ describe("Abilities - Synchronize", () => { game.override .battleStyle("single") .startingLevel(100) - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.SYNCHRONIZE) - .moveset([Moves.SPLASH, Moves.THUNDER_WAVE, Moves.SPORE, Moves.PSYCHO_SHIFT]) - .ability(Abilities.NO_GUARD); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.SYNCHRONIZE) + .moveset([MoveId.SPLASH, MoveId.THUNDER_WAVE, MoveId.SPORE, MoveId.PSYCHO_SHIFT]) + .ability(AbilityId.NO_GUARD); }); it("does not trigger when no status is applied by opponent Pokemon", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); @@ -43,9 +43,9 @@ describe("Abilities - Synchronize", () => { }); it("sets the status of the source pokemon to Paralysis when paralyzed by it", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.THUNDER_WAVE); + game.move.select(MoveId.THUNDER_WAVE); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.status?.effect).toBe(StatusEffect.PARALYSIS); @@ -56,7 +56,7 @@ describe("Abilities - Synchronize", () => { it("does not trigger on Sleep", async () => { await game.classicMode.startBattle(); - game.move.select(Moves.SPORE); + game.move.select(MoveId.SPORE); await game.phaseInterceptor.to("BerryPhase"); @@ -66,11 +66,11 @@ describe("Abilities - Synchronize", () => { }); it("does not trigger when Pokemon is statused by Toxic Spikes", async () => { - game.override.ability(Abilities.SYNCHRONIZE).enemyAbility(Abilities.BALL_FETCH).enemyMoveset(Moves.TOXIC_SPIKES); + game.override.ability(AbilityId.SYNCHRONIZE).enemyAbility(AbilityId.BALL_FETCH).enemyMoveset(MoveId.TOXIC_SPIKES); - await game.classicMode.startBattle([Species.FEEBAS, Species.MILOTIC]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MILOTIC]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); game.doSwitchPokemon(1); @@ -82,9 +82,9 @@ describe("Abilities - Synchronize", () => { }); it("shows ability even if it fails to set the status of the opponent Pokemon", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); - game.move.select(Moves.THUNDER_WAVE); + game.move.select(MoveId.THUNDER_WAVE); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.status?.effect).toBeUndefined(); diff --git a/test/abilities/tera_shell.test.ts b/test/abilities/tera_shell.test.ts index fdbcb14947d..5889115ee95 100644 --- a/test/abilities/tera_shell.test.ts +++ b/test/abilities/tera_shell.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -24,71 +24,71 @@ describe("Abilities - Tera Shell", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .ability(Abilities.TERA_SHELL) - .moveset([Moves.SPLASH]) - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.INSOMNIA) - .enemyMoveset([Moves.MACH_PUNCH]) + .ability(AbilityId.TERA_SHELL) + .moveset([MoveId.SPLASH]) + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.INSOMNIA) + .enemyMoveset([MoveId.MACH_PUNCH]) .startingLevel(100) .enemyLevel(100); }); it("should change the effectiveness of non-resisted attacks when the source is at full HP", async () => { - await game.classicMode.startBattle([Species.SNORLAX]); + await game.classicMode.startBattle([SpeciesId.SNORLAX]); const playerPokemon = game.scene.getPlayerPokemon()!; vi.spyOn(playerPokemon, "getMoveEffectiveness"); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("MoveEndPhase"); expect(playerPokemon.getMoveEffectiveness).toHaveLastReturnedWith(0.5); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("MoveEndPhase"); expect(playerPokemon.getMoveEffectiveness).toHaveLastReturnedWith(2); }); it("should not override type immunities", async () => { - game.override.enemyMoveset([Moves.SHADOW_SNEAK]); + game.override.enemyMoveset([MoveId.SHADOW_SNEAK]); - await game.classicMode.startBattle([Species.SNORLAX]); + await game.classicMode.startBattle([SpeciesId.SNORLAX]); const playerPokemon = game.scene.getPlayerPokemon()!; vi.spyOn(playerPokemon, "getMoveEffectiveness"); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("MoveEndPhase"); expect(playerPokemon.getMoveEffectiveness).toHaveLastReturnedWith(0); }); it("should not override type multipliers less than 0.5x", async () => { - game.override.enemyMoveset([Moves.QUICK_ATTACK]); + game.override.enemyMoveset([MoveId.QUICK_ATTACK]); - await game.classicMode.startBattle([Species.AGGRON]); + await game.classicMode.startBattle([SpeciesId.AGGRON]); const playerPokemon = game.scene.getPlayerPokemon()!; vi.spyOn(playerPokemon, "getMoveEffectiveness"); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("MoveEndPhase"); expect(playerPokemon.getMoveEffectiveness).toHaveLastReturnedWith(0.25); }); it("should not affect the effectiveness of fixed-damage moves", async () => { - game.override.enemyMoveset([Moves.DRAGON_RAGE]); + game.override.enemyMoveset([MoveId.DRAGON_RAGE]); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; const spy = vi.spyOn(playerPokemon, "getMoveEffectiveness"); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase", false); expect(spy).toHaveLastReturnedWith(1); @@ -98,14 +98,14 @@ describe("Abilities - Tera Shell", () => { }); it("should change the effectiveness of all strikes of a multi-strike move", async () => { - game.override.enemyMoveset([Moves.DOUBLE_HIT]); + game.override.enemyMoveset([MoveId.DOUBLE_HIT]); - await game.classicMode.startBattle([Species.SNORLAX]); + await game.classicMode.startBattle([SpeciesId.SNORLAX]); const playerPokemon = game.scene.getPlayerPokemon()!; const spy = vi.spyOn(playerPokemon, "getMoveEffectiveness"); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.move.forceHit(); diff --git a/test/abilities/thermal_exchange.test.ts b/test/abilities/thermal_exchange.test.ts index c33b296d5ae..f27e6da1d3b 100644 --- a/test/abilities/thermal_exchange.test.ts +++ b/test/abilities/thermal_exchange.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -23,27 +23,27 @@ describe("Abilities - Thermal Exchange", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should remove burn when gained", async () => { game.override - .ability(Abilities.THERMAL_EXCHANGE) - .enemyAbility(Abilities.BALL_FETCH) - .moveset(Moves.SKILL_SWAP) - .enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.FEEBAS]); + .ability(AbilityId.THERMAL_EXCHANGE) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset(MoveId.SKILL_SWAP) + .enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon(); enemy?.trySetStatus(StatusEffect.BURN); expect(enemy?.status?.effect).toBe(StatusEffect.BURN); - game.move.select(Moves.SKILL_SWAP); + game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); expect(enemy?.status).toBeNull(); diff --git a/test/abilities/trace.test.ts b/test/abilities/trace.test.ts index 7ec8d62ab51..9bfd2f021c8 100644 --- a/test/abilities/trace.test.ts +++ b/test/abilities/trace.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#app/enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,29 +23,29 @@ describe("Abilities - Trace", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.TRACE) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.TRACE) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should copy the opponent's ability", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(Abilities.BALL_FETCH); + expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(AbilityId.BALL_FETCH); }); it("should activate a copied post-summon ability", async () => { - game.override.enemyAbility(Abilities.INTIMIDATE); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.enemyAbility(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(-1); diff --git a/test/abilities/unburden.test.ts b/test/abilities/unburden.test.ts index ea4f84545aa..b1b10c378a3 100644 --- a/test/abilities/unburden.test.ts +++ b/test/abilities/unburden.test.ts @@ -4,11 +4,11 @@ import { StealHeldItemChanceAttr } from "#app/data/moves/move"; import { allMoves } from "#app/data/data-lists"; import type Pokemon from "#app/field/pokemon"; import type { ContactHeldItemTransferChanceModifier } from "#app/modifier/modifier"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -44,36 +44,36 @@ describe("Abilities - Unburden", () => { game.override .battleStyle("single") .startingLevel(1) - .ability(Abilities.UNBURDEN) - .moveset([Moves.SPLASH, Moves.KNOCK_OFF, Moves.PLUCK, Moves.FALSE_SWIPE]) + .ability(AbilityId.UNBURDEN) + .moveset([MoveId.SPLASH, MoveId.KNOCK_OFF, MoveId.PLUCK, MoveId.FALSE_SWIPE]) .startingHeldItems([ { name: "BERRY", count: 1, type: BerryType.SITRUS }, { name: "BERRY", count: 2, type: BerryType.APICOT }, { name: "BERRY", count: 2, type: BerryType.LUM }, ]) - .enemySpecies(Species.NINJASK) + .enemySpecies(SpeciesId.NINJASK) .enemyLevel(100) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.UNBURDEN) - .enemyPassiveAbility(Abilities.NO_GUARD) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.UNBURDEN) + .enemyPassiveAbility(AbilityId.NO_GUARD) .enemyHeldItems([ { name: "BERRY", type: BerryType.SITRUS, count: 1 }, { name: "BERRY", type: BerryType.LUM, count: 1 }, ]); // For the various tests that use Thief, give it a 100% steal rate - vi.spyOn(allMoves[Moves.THIEF], "attrs", "get").mockReturnValue([new StealHeldItemChanceAttr(1.0)]); + vi.spyOn(allMoves[MoveId.THIEF], "attrs", "get").mockReturnValue([new StealHeldItemChanceAttr(1.0)]); }); it("should activate when a berry is eaten", async () => { - game.override.enemyMoveset(Moves.FALSE_SWIPE); - await game.classicMode.startBattle([Species.TREECKO]); + game.override.enemyMoveset(MoveId.FALSE_SWIPE); + await game.classicMode.startBattle([SpeciesId.TREECKO]); const playerPokemon = game.scene.getPlayerPokemon()!; const playerHeldItems = getHeldItemCount(playerPokemon); const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); // Player gets hit by False Swipe and eats its own Sitrus Berry - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItems); @@ -81,15 +81,15 @@ describe("Abilities - Unburden", () => { }); it("should activate when a berry is eaten, even if Berry Pouch preserves the berry", async () => { - game.override.enemyMoveset(Moves.FALSE_SWIPE).startingModifier([{ name: "BERRY_POUCH", count: 5850 }]); - await game.classicMode.startBattle([Species.TREECKO]); + game.override.enemyMoveset(MoveId.FALSE_SWIPE).startingModifier([{ name: "BERRY_POUCH", count: 5850 }]); + await game.classicMode.startBattle([SpeciesId.TREECKO]); const playerPokemon = game.scene.getPlayerPokemon()!; const playerHeldItems = getHeldItemCount(playerPokemon); const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); // Player gets hit by False Swipe and eats its own Sitrus Berry - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(getHeldItemCount(playerPokemon)).toBe(playerHeldItems); @@ -97,7 +97,7 @@ describe("Abilities - Unburden", () => { }); it("should activate for the target, and not the stealer, when a berry is stolen", async () => { - await game.classicMode.startBattle([Species.TREECKO]); + await game.classicMode.startBattle([SpeciesId.TREECKO]); const playerPokemon = game.scene.getPlayerPokemon()!; const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); @@ -106,7 +106,7 @@ describe("Abilities - Unburden", () => { const initialEnemySpeed = enemyPokemon.getStat(Stat.SPD); // Player uses Pluck and eats the opponent's berry - game.move.select(Moves.PLUCK); + game.move.select(MoveId.PLUCK); await game.toNextTurn(); expect(getHeldItemCount(enemyPokemon)).toBeLessThan(enemyHeldItemCt); @@ -115,14 +115,14 @@ describe("Abilities - Unburden", () => { }); it("should activate when an item is knocked off", async () => { - await game.classicMode.startBattle([Species.TREECKO]); + await game.classicMode.startBattle([SpeciesId.TREECKO]); const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyHeldItemCt = getHeldItemCount(enemyPokemon); const initialEnemySpeed = enemyPokemon.getStat(Stat.SPD); // Player uses Knock Off and removes the opponent's item - game.move.select(Moves.KNOCK_OFF); + game.move.select(MoveId.KNOCK_OFF); await game.toNextTurn(); expect(getHeldItemCount(enemyPokemon)).toBeLessThan(enemyHeldItemCt); @@ -130,15 +130,15 @@ describe("Abilities - Unburden", () => { }); it("should activate when an item is stolen via attacking ability", async () => { - game.override.ability(Abilities.MAGICIAN).startingHeldItems([]); // Remove player's full stacks of held items so it can steal opponent's held items - await game.classicMode.startBattle([Species.TREECKO]); + game.override.ability(AbilityId.MAGICIAN).startingHeldItems([]); // Remove player's full stacks of held items so it can steal opponent's held items + await game.classicMode.startBattle([SpeciesId.TREECKO]); const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyHeldItemCt = getHeldItemCount(enemyPokemon); const initialEnemySpeed = enemyPokemon.getStat(Stat.SPD); // Player steals the opponent's item via ability Magician - game.move.select(Moves.FALSE_SWIPE); + game.move.select(MoveId.FALSE_SWIPE); await game.toNextTurn(); expect(getHeldItemCount(enemyPokemon)).toBeLessThan(enemyHeldItemCt); @@ -146,15 +146,15 @@ describe("Abilities - Unburden", () => { }); it("should activate when an item is stolen via defending ability", async () => { - game.override.enemyAbility(Abilities.PICKPOCKET).enemyHeldItems([]); // Remove opponent's full stacks of held items so it can steal player's held items - await game.classicMode.startBattle([Species.TREECKO]); + game.override.enemyAbility(AbilityId.PICKPOCKET).enemyHeldItems([]); // Remove opponent's full stacks of held items so it can steal player's held items + await game.classicMode.startBattle([SpeciesId.TREECKO]); const playerPokemon = game.scene.getPlayerPokemon()!; const playerHeldItems = getHeldItemCount(playerPokemon); const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); // Player's item gets stolen via ability Pickpocket - game.move.select(Moves.FALSE_SWIPE); + game.move.select(MoveId.FALSE_SWIPE); await game.toNextTurn(); expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItems); @@ -162,15 +162,15 @@ describe("Abilities - Unburden", () => { }); it("should activate when an item is stolen via move", async () => { - game.override.moveset(Moves.THIEF).startingHeldItems([]); // Remove player's full stacks of held items so it can steal opponent's held items - await game.classicMode.startBattle([Species.TREECKO]); + game.override.moveset(MoveId.THIEF).startingHeldItems([]); // Remove player's full stacks of held items so it can steal opponent's held items + await game.classicMode.startBattle([SpeciesId.TREECKO]); const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyHeldItemCt = getHeldItemCount(enemyPokemon); const initialEnemySpeed = enemyPokemon.getStat(Stat.SPD); // Player uses Thief and steals the opponent's item - game.move.select(Moves.THIEF); + game.move.select(MoveId.THIEF); await game.toNextTurn(); expect(getHeldItemCount(enemyPokemon)).toBeLessThan(enemyHeldItemCt); @@ -179,7 +179,7 @@ describe("Abilities - Unburden", () => { it("should activate when an item is stolen via grip claw", async () => { game.override.startingHeldItems([{ name: "GRIP_CLAW", count: 1 }]); - await game.classicMode.startBattle([Species.TREECKO]); + await game.classicMode.startBattle([SpeciesId.TREECKO]); const playerPokemon = game.scene.getPlayerPokemon()!; const gripClaw = playerPokemon.getHeldItems()[0] as ContactHeldItemTransferChanceModifier; @@ -190,7 +190,7 @@ describe("Abilities - Unburden", () => { const initialEnemySpeed = enemyPokemon.getStat(Stat.SPD); // Player steals the opponent's item using Grip Claw - game.move.select(Moves.FALSE_SWIPE); + game.move.select(MoveId.FALSE_SWIPE); await game.toNextTurn(); expect(getHeldItemCount(enemyPokemon)).toBeLessThan(enemyHeldItemCt); @@ -198,15 +198,15 @@ describe("Abilities - Unburden", () => { }); it("should not activate when a neutralizing ability is present", async () => { - game.override.enemyAbility(Abilities.NEUTRALIZING_GAS).enemyMoveset(Moves.FALSE_SWIPE); - await game.classicMode.startBattle([Species.TREECKO]); + game.override.enemyAbility(AbilityId.NEUTRALIZING_GAS).enemyMoveset(MoveId.FALSE_SWIPE); + await game.classicMode.startBattle([SpeciesId.TREECKO]); const playerPokemon = game.scene.getPlayerPokemon()!; const playerHeldItems = getHeldItemCount(playerPokemon); const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); // Player gets hit by False Swipe and eats Sitrus Berry, which should not trigger Unburden - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItems); @@ -215,8 +215,8 @@ describe("Abilities - Unburden", () => { }); it("should activate when a move that consumes a berry is used", async () => { - game.override.moveset(Moves.STUFF_CHEEKS); - await game.classicMode.startBattle([Species.TREECKO]); + game.override.moveset(MoveId.STUFF_CHEEKS); + await game.classicMode.startBattle([SpeciesId.TREECKO]); const playerPokemon = game.scene.getPlayerPokemon()!; const playerHeldItemCt = getHeldItemCount(playerPokemon); @@ -224,7 +224,7 @@ describe("Abilities - Unburden", () => { // Player uses Stuff Cheeks and eats its own berry // Caution: Do not test this using opponent, there is a known issue where opponent can randomly generate with Salac Berry - game.move.select(Moves.STUFF_CHEEKS); + game.move.select(MoveId.STUFF_CHEEKS); await game.toNextTurn(); expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItemCt); @@ -232,8 +232,8 @@ describe("Abilities - Unburden", () => { }); it("should deactivate temporarily when a neutralizing gas user is on the field", async () => { - game.override.battleStyle("double").ability(Abilities.NONE); // Disable ability override so that we can properly set abilities below - await game.classicMode.startBattle([Species.TREECKO, Species.MEOWTH, Species.WEEZING]); + game.override.battleStyle("double").ability(AbilityId.NONE); // Disable ability override so that we can properly set abilities below + await game.classicMode.startBattle([SpeciesId.TREECKO, SpeciesId.MEOWTH, SpeciesId.WEEZING]); const [treecko, _meowth, weezing] = game.scene.getPlayerParty(); treecko.abilityIndex = 2; // Treecko has Unburden @@ -242,10 +242,10 @@ describe("Abilities - Unburden", () => { const initialPlayerSpeed = treecko.getStat(Stat.SPD); // Turn 1: Treecko gets hit by False Swipe and eats Sitrus Berry, activating Unburden - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.FALSE_SWIPE, 0); - await game.move.selectEnemyMove(Moves.FALSE_SWIPE, 0); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.FALSE_SWIPE, 0); + await game.move.selectEnemyMove(MoveId.FALSE_SWIPE, 0); await game.phaseInterceptor.to("TurnEndPhase"); expect(getHeldItemCount(treecko)).toBeLessThan(playerHeldItems); @@ -253,7 +253,7 @@ describe("Abilities - Unburden", () => { // Turn 2: Switch Meowth to Weezing, activating Neutralizing Gas await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSwitchPokemon(2); await game.phaseInterceptor.to("TurnEndPhase"); @@ -262,7 +262,7 @@ describe("Abilities - Unburden", () => { // Turn 3: Switch Weezing to Meowth, deactivating Neutralizing Gas await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSwitchPokemon(2); await game.phaseInterceptor.to("TurnEndPhase"); @@ -271,8 +271,8 @@ describe("Abilities - Unburden", () => { }); it("should not activate when passing a baton to a teammate switching in", async () => { - game.override.startingHeldItems([{ name: "BATON" }]).moveset(Moves.BATON_PASS); - await game.classicMode.startBattle([Species.TREECKO, Species.PURRLOIN]); + game.override.startingHeldItems([{ name: "BATON" }]).moveset(MoveId.BATON_PASS); + await game.classicMode.startBattle([SpeciesId.TREECKO, SpeciesId.PURRLOIN]); const [treecko, purrloin] = game.scene.getPlayerParty(); const initialTreeckoSpeed = treecko.getStat(Stat.SPD); @@ -281,7 +281,7 @@ describe("Abilities - Unburden", () => { vi.spyOn(unburdenAttr, "applyPostItemLost"); // Player uses Baton Pass, which also passes the Baton item - game.move.select(Moves.BATON_PASS); + game.move.select(MoveId.BATON_PASS); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -293,24 +293,24 @@ describe("Abilities - Unburden", () => { }); it("should not speed up a Pokemon after it loses the ability Unburden", async () => { - game.override.enemyMoveset([Moves.FALSE_SWIPE, Moves.WORRY_SEED]); - await game.classicMode.startBattle([Species.PURRLOIN]); + game.override.enemyMoveset([MoveId.FALSE_SWIPE, MoveId.WORRY_SEED]); + await game.classicMode.startBattle([SpeciesId.PURRLOIN]); const playerPokemon = game.scene.getPlayerPokemon()!; const playerHeldItems = getHeldItemCount(playerPokemon); const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); // Turn 1: Get hit by False Swipe and eat Sitrus Berry, activating Unburden - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.FALSE_SWIPE); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.FALSE_SWIPE); await game.toNextTurn(); expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItems); expect(playerPokemon.getEffectiveStat(Stat.SPD)).toBe(initialPlayerSpeed * 2); // Turn 2: Get hit by Worry Seed, deactivating Unburden - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.WORRY_SEED); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.WORRY_SEED); await game.toNextTurn(); expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItems); @@ -318,15 +318,15 @@ describe("Abilities - Unburden", () => { }); it("should activate when a reviver seed is used", async () => { - game.override.startingHeldItems([{ name: "REVIVER_SEED" }]).enemyMoveset([Moves.WING_ATTACK]); - await game.classicMode.startBattle([Species.TREECKO]); + game.override.startingHeldItems([{ name: "REVIVER_SEED" }]).enemyMoveset([MoveId.WING_ATTACK]); + await game.classicMode.startBattle([SpeciesId.TREECKO]); const playerPokemon = game.scene.getPlayerPokemon()!; const playerHeldItems = getHeldItemCount(playerPokemon); const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); // Turn 1: Get hit by Wing Attack and faint, activating Reviver Seed - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItems); @@ -335,21 +335,21 @@ describe("Abilities - Unburden", () => { // test for `.bypassFaint()` - singles it("shouldn't persist when revived normally if activated while fainting", async () => { - game.override.enemyMoveset([Moves.SPLASH, Moves.THIEF]); - await game.classicMode.startBattle([Species.TREECKO, Species.FEEBAS]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.THIEF]); + await game.classicMode.startBattle([SpeciesId.TREECKO, SpeciesId.FEEBAS]); const treecko = game.scene.getPlayerPokemon()!; const treeckoInitialHeldItems = getHeldItemCount(treecko); const initialSpeed = treecko.getStat(Stat.SPD); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.THIEF); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.THIEF); game.doSelectPartyPokemon(1); await game.toNextTurn(); game.doRevivePokemon(1); game.doSwitchPokemon(1); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!).toBe(treecko); @@ -361,19 +361,19 @@ describe("Abilities - Unburden", () => { it("shouldn't persist when revived by revival blessing if activated while fainting", async () => { game.override .battleStyle("double") - .enemyMoveset([Moves.SPLASH, Moves.THIEF]) - .moveset([Moves.SPLASH, Moves.REVIVAL_BLESSING]) + .enemyMoveset([MoveId.SPLASH, MoveId.THIEF]) + .moveset([MoveId.SPLASH, MoveId.REVIVAL_BLESSING]) .startingHeldItems([{ name: "WIDE_LENS" }]); - await game.classicMode.startBattle([Species.TREECKO, Species.FEEBAS, Species.MILOTIC]); + await game.classicMode.startBattle([SpeciesId.TREECKO, SpeciesId.FEEBAS, SpeciesId.MILOTIC]); const treecko = game.scene.getPlayerField()[0]; const treeckoInitialHeldItems = getHeldItemCount(treecko); const initialSpeed = treecko.getStat(Stat.SPD); - game.move.select(Moves.SPLASH); - game.move.select(Moves.REVIVAL_BLESSING, 1); - await game.move.selectEnemyMove(Moves.THIEF, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.REVIVAL_BLESSING, 1); + await game.move.selectEnemyMove(MoveId.THIEF, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2]); game.doSelectPartyPokemon(0, "RevivalBlessingPhase"); await game.toNextTurn(); diff --git a/test/abilities/unseen_fist.test.ts b/test/abilities/unseen_fist.test.ts index d78ce8c5bbf..56408c6cbc3 100644 --- a/test/abilities/unseen_fist.test.ts +++ b/test/abilities/unseen_fist.test.ts @@ -1,7 +1,7 @@ import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -26,40 +26,40 @@ describe("Abilities - Unseen Fist", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .starterSpecies(Species.URSHIFU) - .enemySpecies(Species.SNORLAX) - .enemyMoveset(Moves.PROTECT) + .starterSpecies(SpeciesId.URSHIFU) + .enemySpecies(SpeciesId.SNORLAX) + .enemyMoveset(MoveId.PROTECT) .startingLevel(100) .enemyLevel(100); }); it("should cause a contact move to ignore Protect", async () => - await testUnseenFistHitResult(game, Moves.QUICK_ATTACK, Moves.PROTECT, true)); + await testUnseenFistHitResult(game, MoveId.QUICK_ATTACK, MoveId.PROTECT, true)); it("should not cause a non-contact move to ignore Protect", async () => - await testUnseenFistHitResult(game, Moves.ABSORB, Moves.PROTECT, false)); + await testUnseenFistHitResult(game, MoveId.ABSORB, MoveId.PROTECT, false)); it("should not apply if the source has Long Reach", async () => { - game.override.passiveAbility(Abilities.LONG_REACH); - await testUnseenFistHitResult(game, Moves.QUICK_ATTACK, Moves.PROTECT, false); + game.override.passiveAbility(AbilityId.LONG_REACH); + await testUnseenFistHitResult(game, MoveId.QUICK_ATTACK, MoveId.PROTECT, false); }); it("should cause a contact move to ignore Wide Guard", async () => - await testUnseenFistHitResult(game, Moves.BREAKING_SWIPE, Moves.WIDE_GUARD, true)); + await testUnseenFistHitResult(game, MoveId.BREAKING_SWIPE, MoveId.WIDE_GUARD, true)); it("should not cause a non-contact move to ignore Wide Guard", async () => - await testUnseenFistHitResult(game, Moves.BULLDOZE, Moves.WIDE_GUARD, false)); + await testUnseenFistHitResult(game, MoveId.BULLDOZE, MoveId.WIDE_GUARD, false)); it("should cause a contact move to ignore Protect, but not Substitute", async () => { game.override.enemyLevel(1); - game.override.moveset([Moves.TACKLE]); + game.override.moveset([MoveId.TACKLE]); await game.classicMode.startBattle(); const enemyPokemon = game.scene.getEnemyPokemon()!; - enemyPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, enemyPokemon.id); + enemyPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, enemyPokemon.id); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(BerryPhase, false); @@ -70,8 +70,8 @@ describe("Abilities - Unseen Fist", () => { async function testUnseenFistHitResult( game: GameManager, - attackMove: Moves, - protectMove: Moves, + attackMove: MoveId, + protectMove: MoveId, shouldSucceed = true, ): Promise { game.override.moveset([attackMove]).enemyMoveset(protectMove); diff --git a/test/abilities/victory_star.test.ts b/test/abilities/victory_star.test.ts index f3c0b5ad6b7..77f5de41bb1 100644 --- a/test/abilities/victory_star.test.ts +++ b/test/abilities/victory_star.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -24,35 +24,35 @@ describe("Abilities - Victory Star", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.TACKLE, Moves.SPLASH]) + .moveset([MoveId.TACKLE, MoveId.SPLASH]) .battleStyle("double") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should increase the accuracy of its user", async () => { - await game.classicMode.startBattle([Species.VICTINI, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.VICTINI, SpeciesId.MAGIKARP]); const user = game.scene.getPlayerField()[0]; vi.spyOn(user, "getAccuracyMultiplier"); - game.move.select(Moves.TACKLE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.TACKLE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); expect(user.getAccuracyMultiplier).toHaveReturnedWith(1.1); }); it("should increase the accuracy of its user's ally", async () => { - await game.classicMode.startBattle([Species.MAGIKARP, Species.VICTINI]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.VICTINI]); const ally = game.scene.getPlayerField()[0]; vi.spyOn(ally, "getAccuracyMultiplier"); - game.move.select(Moves.TACKLE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.TACKLE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); expect(ally.getAccuracyMultiplier).toHaveReturnedWith(1.1); diff --git a/test/abilities/vital_spirit.test.ts b/test/abilities/vital_spirit.test.ts index bb274310cc0..c32454e9d31 100644 --- a/test/abilities/vital_spirit.test.ts +++ b/test/abilities/vital_spirit.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -23,27 +23,27 @@ describe("Abilities - Vital Spirit", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should remove sleep when gained", async () => { game.override - .ability(Abilities.INSOMNIA) - .enemyAbility(Abilities.BALL_FETCH) - .moveset(Moves.SKILL_SWAP) - .enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.FEEBAS]); + .ability(AbilityId.INSOMNIA) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset(MoveId.SKILL_SWAP) + .enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon(); enemy?.trySetStatus(StatusEffect.SLEEP); expect(enemy?.status?.effect).toBe(StatusEffect.SLEEP); - game.move.select(Moves.SKILL_SWAP); + game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); expect(enemy?.status).toBeNull(); diff --git a/test/abilities/volt_absorb.test.ts b/test/abilities/volt_absorb.test.ts index 920c822eb90..2e6abf30885 100644 --- a/test/abilities/volt_absorb.test.ts +++ b/test/abilities/volt_absorb.test.ts @@ -1,9 +1,9 @@ import { Stat } from "#enums/stat"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -31,14 +31,14 @@ describe("Abilities - Volt Absorb", () => { }); it("does not activate when CHARGE is used", async () => { - const moveToUse = Moves.CHARGE; - const ability = Abilities.VOLT_ABSORB; + const moveToUse = MoveId.CHARGE; + const ability = AbilityId.VOLT_ABSORB; game.override.moveset([moveToUse]); game.override.ability(ability); - game.override.enemyMoveset([Moves.SPLASH, Moves.NONE, Moves.NONE, Moves.NONE]); - game.override.enemySpecies(Species.DUSKULL); - game.override.enemyAbility(Abilities.BALL_FETCH); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.NONE, MoveId.NONE, MoveId.NONE]); + game.override.enemySpecies(SpeciesId.DUSKULL); + game.override.enemyAbility(AbilityId.BALL_FETCH); await game.classicMode.startBattle(); @@ -54,16 +54,16 @@ describe("Abilities - Volt Absorb", () => { }); it("should activate regardless of accuracy checks", async () => { - game.override.moveset(Moves.THUNDERBOLT); - game.override.enemyMoveset(Moves.SPLASH); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyAbility(Abilities.VOLT_ABSORB); + game.override.moveset(MoveId.THUNDERBOLT); + game.override.enemyMoveset(MoveId.SPLASH); + game.override.enemySpecies(SpeciesId.MAGIKARP); + game.override.enemyAbility(AbilityId.VOLT_ABSORB); await game.classicMode.startBattle(); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.THUNDERBOLT); + game.move.select(MoveId.THUNDERBOLT); enemyPokemon.hp = enemyPokemon.hp - 1; await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -74,16 +74,16 @@ describe("Abilities - Volt Absorb", () => { }); it("regardless of accuracy should not trigger on pokemon in semi invulnerable state", async () => { - game.override.moveset(Moves.THUNDERBOLT); - game.override.enemyMoveset(Moves.DIVE); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyAbility(Abilities.VOLT_ABSORB); + game.override.moveset(MoveId.THUNDERBOLT); + game.override.enemyMoveset(MoveId.DIVE); + game.override.enemySpecies(SpeciesId.MAGIKARP); + game.override.enemyAbility(AbilityId.VOLT_ABSORB); await game.classicMode.startBattle(); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.THUNDERBOLT); + game.move.select(MoveId.THUNDERBOLT); enemyPokemon.hp = enemyPokemon.hp - 1; await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); diff --git a/test/abilities/wandering_spirit.test.ts b/test/abilities/wandering_spirit.test.ts index 639241aecc8..360eedda4c9 100644 --- a/test/abilities/wandering_spirit.test.ts +++ b/test/abilities/wandering_spirit.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#app/enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,41 +23,41 @@ describe("Abilities - Wandering Spirit", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.WANDERING_SPIRIT) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.WANDERING_SPIRIT) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.TACKLE); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.TACKLE); }); it("should exchange abilities when hit with a contact move", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(Abilities.BALL_FETCH); - expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(Abilities.WANDERING_SPIRIT); + expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(AbilityId.BALL_FETCH); + expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(AbilityId.WANDERING_SPIRIT); }); it("should not exchange abilities when hit with a non-contact move", async () => { - game.override.enemyMoveset(Moves.EARTHQUAKE); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.enemyMoveset(MoveId.EARTHQUAKE); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(Abilities.WANDERING_SPIRIT); - expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(Abilities.BALL_FETCH); + expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(AbilityId.WANDERING_SPIRIT); + expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(AbilityId.BALL_FETCH); }); it("should activate post-summon abilities", async () => { - game.override.enemyAbility(Abilities.INTIMIDATE); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.enemyAbility(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(-1); diff --git a/test/abilities/water_bubble.test.ts b/test/abilities/water_bubble.test.ts index c1e2acbd468..412c4a25035 100644 --- a/test/abilities/water_bubble.test.ts +++ b/test/abilities/water_bubble.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -23,27 +23,27 @@ describe("Abilities - Water Bubble", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should remove burn when gained", async () => { game.override - .ability(Abilities.THERMAL_EXCHANGE) - .enemyAbility(Abilities.BALL_FETCH) - .moveset(Moves.SKILL_SWAP) - .enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.FEEBAS]); + .ability(AbilityId.THERMAL_EXCHANGE) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset(MoveId.SKILL_SWAP) + .enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon(); enemy?.trySetStatus(StatusEffect.BURN); expect(enemy?.status?.effect).toBe(StatusEffect.BURN); - game.move.select(Moves.SKILL_SWAP); + game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); expect(enemy?.status).toBeNull(); diff --git a/test/abilities/water_veil.test.ts b/test/abilities/water_veil.test.ts index 8e187ad8e58..e67287d250f 100644 --- a/test/abilities/water_veil.test.ts +++ b/test/abilities/water_veil.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -23,27 +23,27 @@ describe("Abilities - Water Veil", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should remove burn when gained", async () => { game.override - .ability(Abilities.THERMAL_EXCHANGE) - .enemyAbility(Abilities.BALL_FETCH) - .moveset(Moves.SKILL_SWAP) - .enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.FEEBAS]); + .ability(AbilityId.THERMAL_EXCHANGE) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset(MoveId.SKILL_SWAP) + .enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon(); enemy?.trySetStatus(StatusEffect.BURN); expect(enemy?.status?.effect).toBe(StatusEffect.BURN); - game.move.select(Moves.SKILL_SWAP); + game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); expect(enemy?.status).toBeNull(); diff --git a/test/abilities/wimp_out.test.ts b/test/abilities/wimp_out.test.ts index 32a627f20f9..2c2ab636961 100644 --- a/test/abilities/wimp_out.test.ts +++ b/test/abilities/wimp_out.test.ts @@ -3,11 +3,11 @@ import { ArenaTagSide } from "#app/data/arena-tag"; import { allMoves } from "#app/data/data-lists"; import GameManager from "#test/testUtils/gameManager"; import { toDmgValue } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; @@ -32,13 +32,13 @@ describe("Abilities - Wimp Out", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .ability(Abilities.WIMP_OUT) - .enemySpecies(Species.NINJASK) - .enemyPassiveAbility(Abilities.NO_GUARD) + .ability(AbilityId.WIMP_OUT) + .enemySpecies(SpeciesId.NINJASK) + .enemyPassiveAbility(AbilityId.NO_GUARD) .startingLevel(90) .enemyLevel(70) - .moveset([Moves.SPLASH, Moves.FALSE_SWIPE, Moves.ENDURE]) - .enemyMoveset(Moves.FALSE_SWIPE) + .moveset([MoveId.SPLASH, MoveId.FALSE_SWIPE, MoveId.ENDURE]) + .enemyMoveset(MoveId.FALSE_SWIPE) .disableCrits(); }); @@ -47,9 +47,9 @@ describe("Abilities - Wimp Out", () => { expect(game.phaseInterceptor.log).toContain("SwitchSummonPhase"); - expect(pokemon1.species.speciesId).not.toBe(Species.WIMPOD); + expect(pokemon1.species.speciesId).not.toBe(SpeciesId.WIMPOD); - expect(pokemon2.species.speciesId).toBe(Species.WIMPOD); + expect(pokemon2.species.speciesId).toBe(SpeciesId.WIMPOD); expect(pokemon2.isFainted()).toBe(false); expect(pokemon2.getHpRatio()).toBeLessThan(0.5); } @@ -59,20 +59,20 @@ describe("Abilities - Wimp Out", () => { expect(game.phaseInterceptor.log).not.toContain("SwitchSummonPhase"); - expect(pokemon2.species.speciesId).not.toBe(Species.WIMPOD); + expect(pokemon2.species.speciesId).not.toBe(SpeciesId.WIMPOD); - expect(pokemon1.species.speciesId).toBe(Species.WIMPOD); + expect(pokemon1.species.speciesId).toBe(SpeciesId.WIMPOD); expect(pokemon1.isFainted()).toBe(false); expect(pokemon1.getHpRatio()).toBeLessThan(0.5); } it("triggers regenerator passive single time when switching out with wimp out", async () => { - game.override.passiveAbility(Abilities.REGENERATOR).startingLevel(5).enemyLevel(100); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.passiveAbility(AbilityId.REGENERATOR).startingLevel(5).enemyLevel(100); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); const wimpod = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -81,13 +81,13 @@ describe("Abilities - Wimp Out", () => { }); it("It makes wild pokemon flee if triggered", async () => { - game.override.enemyAbility(Abilities.WIMP_OUT); - await game.classicMode.startBattle([Species.GOLISOPOD, Species.TYRUNT]); + game.override.enemyAbility(AbilityId.WIMP_OUT); + await game.classicMode.startBattle([SpeciesId.GOLISOPOD, SpeciesId.TYRUNT]); const enemyPokemon = game.scene.getEnemyPokemon()!; enemyPokemon.hp *= 0.52; - game.move.select(Moves.FALSE_SWIPE); + game.move.select(MoveId.FALSE_SWIPE); await game.phaseInterceptor.to("BerryPhase"); const isVisible = enemyPokemon.visible; @@ -96,11 +96,11 @@ describe("Abilities - Wimp Out", () => { }); it("Does not trigger when HP already below half", async () => { - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); const wimpod = game.scene.getPlayerPokemon()!; wimpod.hp = 5; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(wimpod.hp).toEqual(1); @@ -108,10 +108,10 @@ describe("Abilities - Wimp Out", () => { }); it("Trapping moves do not prevent Wimp Out from activating.", async () => { - game.override.enemyMoveset([Moves.SPIRIT_SHACKLE]).startingLevel(53).enemyLevel(45); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.enemyMoveset([MoveId.SPIRIT_SHACKLE]).startingLevel(53).enemyLevel(45); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -123,10 +123,10 @@ describe("Abilities - Wimp Out", () => { }); it("If this Ability activates due to being hit by U-turn or Volt Switch, the user of that move will not be switched out.", async () => { - game.override.startingLevel(95).enemyMoveset([Moves.U_TURN]); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.startingLevel(95).enemyMoveset([MoveId.U_TURN]); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -137,36 +137,36 @@ describe("Abilities - Wimp Out", () => { }); it("If this Ability does not activate due to being hit by U-turn or Volt Switch, the user of that move will be switched out.", async () => { - game.override.startingLevel(190).startingWave(8).enemyMoveset([Moves.U_TURN]); - await game.classicMode.startBattle([Species.GOLISOPOD, Species.TYRUNT]); + game.override.startingLevel(190).startingWave(8).enemyMoveset([MoveId.U_TURN]); + await game.classicMode.startBattle([SpeciesId.GOLISOPOD, SpeciesId.TYRUNT]); const RIVAL_NINJASK1 = game.scene.getEnemyPokemon()?.id; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase", false); expect(game.scene.getEnemyPokemon()?.id !== RIVAL_NINJASK1); }); it("Dragon Tail and Circle Throw switch out Pokémon before the Ability activates.", async () => { - game.override.startingLevel(69).enemyMoveset([Moves.DRAGON_TAIL]); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.startingLevel(69).enemyMoveset([MoveId.DRAGON_TAIL]); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); const wimpod = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("SwitchSummonPhase", false); - expect(wimpod.waveData.abilitiesApplied).not.toContain(Abilities.WIMP_OUT); + expect(wimpod.waveData.abilitiesApplied).not.toContain(AbilityId.WIMP_OUT); await game.phaseInterceptor.to("TurnEndPhase"); - expect(game.scene.getPlayerPokemon()!.species.speciesId).not.toBe(Species.WIMPOD); + expect(game.scene.getPlayerPokemon()!.species.speciesId).not.toBe(SpeciesId.WIMPOD); }); it("triggers when recoil damage is taken", async () => { - game.override.moveset([Moves.HEAD_SMASH]).enemyMoveset([Moves.SPLASH]); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.moveset([MoveId.HEAD_SMASH]).enemyMoveset([MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.move.select(Moves.HEAD_SMASH); + game.move.select(MoveId.HEAD_SMASH); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -174,23 +174,23 @@ describe("Abilities - Wimp Out", () => { }); it("It does not activate when the Pokémon cuts its own HP", async () => { - game.override.moveset([Moves.SUBSTITUTE]).enemyMoveset([Moves.SPLASH]); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.moveset([MoveId.SUBSTITUTE]).enemyMoveset([MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); const wimpod = game.scene.getPlayerPokemon()!; wimpod.hp *= 0.52; - game.move.select(Moves.SUBSTITUTE); + game.move.select(MoveId.SUBSTITUTE); await game.phaseInterceptor.to("TurnEndPhase"); confirmNoSwitch(); }); it("Does not trigger when neutralized", async () => { - game.override.enemyAbility(Abilities.NEUTRALIZING_GAS).startingLevel(5); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.enemyAbility(AbilityId.NEUTRALIZING_GAS).startingLevel(5); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); confirmNoSwitch(); @@ -203,33 +203,33 @@ describe("Abilities - Wimp Out", () => { "If it falls below half and recovers back above half from a Shell Bell, Wimp Out will activate even after the Shell Bell recovery", async () => { game.override - .moveset([Moves.DOUBLE_EDGE]) - .enemyMoveset([Moves.SPLASH]) + .moveset([MoveId.DOUBLE_EDGE]) + .enemyMoveset([MoveId.SPLASH]) .startingHeldItems([{ name: "SHELL_BELL", count: 4 }]); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); const wimpod = game.scene.getPlayerPokemon()!; wimpod.damageAndUpdate(toDmgValue(wimpod.getMaxHp() * 0.4)); - game.move.select(Moves.DOUBLE_EDGE); + game.move.select(MoveId.DOUBLE_EDGE); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.getPlayerParty()[1]).toBe(wimpod); expect(wimpod.hp).toBeGreaterThan(toDmgValue(wimpod.getMaxHp() / 2)); expect(game.phaseInterceptor.log).toContain("SwitchSummonPhase"); - expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(Species.TYRUNT); + expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(SpeciesId.TYRUNT); }, ); it("Wimp Out will activate due to weather damage", async () => { - game.override.weather(WeatherType.HAIL).enemyMoveset([Moves.SPLASH]); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.weather(WeatherType.HAIL).enemyMoveset([MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.scene.getPlayerPokemon()!.hp *= 0.51; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -237,24 +237,24 @@ describe("Abilities - Wimp Out", () => { }); it("Does not trigger when enemy has sheer force", async () => { - game.override.enemyAbility(Abilities.SHEER_FORCE).enemyMoveset(Moves.SLUDGE_BOMB).startingLevel(95); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.enemyAbility(AbilityId.SHEER_FORCE).enemyMoveset(MoveId.SLUDGE_BOMB).startingLevel(95); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.scene.getPlayerPokemon()!.hp *= 0.51; - game.move.select(Moves.ENDURE); + game.move.select(MoveId.ENDURE); await game.phaseInterceptor.to("TurnEndPhase"); confirmNoSwitch(); }); it("Wimp Out will activate due to post turn status damage", async () => { - game.override.statusEffect(StatusEffect.POISON).enemyMoveset([Moves.SPLASH]); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.statusEffect(StatusEffect.POISON).enemyMoveset([MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.scene.getPlayerPokemon()!.hp *= 0.51; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -262,12 +262,12 @@ describe("Abilities - Wimp Out", () => { }); it("Wimp Out will activate due to bad dreams", async () => { - game.override.statusEffect(StatusEffect.SLEEP).enemyAbility(Abilities.BAD_DREAMS); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.statusEffect(StatusEffect.SLEEP).enemyAbility(AbilityId.BAD_DREAMS); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.scene.getPlayerPokemon()!.hp *= 0.52; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -275,11 +275,11 @@ describe("Abilities - Wimp Out", () => { }); it("Wimp Out will activate due to leech seed", async () => { - game.override.enemyMoveset([Moves.LEECH_SEED]); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.enemyMoveset([MoveId.LEECH_SEED]); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.scene.getPlayerPokemon()!.hp *= 0.52; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -287,11 +287,11 @@ describe("Abilities - Wimp Out", () => { }); it("Wimp Out will activate due to curse damage", async () => { - game.override.enemySpecies(Species.DUSKNOIR).enemyMoveset([Moves.CURSE]); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.enemySpecies(SpeciesId.DUSKNOIR).enemyMoveset([MoveId.CURSE]); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.scene.getPlayerPokemon()!.hp *= 0.52; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -299,11 +299,11 @@ describe("Abilities - Wimp Out", () => { }); it("Wimp Out will activate due to salt cure damage", async () => { - game.override.enemySpecies(Species.NACLI).enemyMoveset([Moves.SALT_CURE]).enemyLevel(1); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.enemySpecies(SpeciesId.NACLI).enemyMoveset([MoveId.SALT_CURE]).enemyLevel(1); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.scene.getPlayerPokemon()!.hp *= 0.7; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -311,11 +311,11 @@ describe("Abilities - Wimp Out", () => { }); it("Wimp Out will activate due to damaging trap damage", async () => { - game.override.enemySpecies(Species.MAGIKARP).enemyMoveset([Moves.WHIRLPOOL]).enemyLevel(1); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.enemySpecies(SpeciesId.MAGIKARP).enemyMoveset([MoveId.WHIRLPOOL]).enemyLevel(1); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.scene.getPlayerPokemon()!.hp *= 0.55; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -323,32 +323,32 @@ describe("Abilities - Wimp Out", () => { }); it("Magic Guard passive should not allow indirect damage to trigger Wimp Out", async () => { - game.scene.arena.addTag(ArenaTagType.STEALTH_ROCK, 1, Moves.STEALTH_ROCK, 0, ArenaTagSide.ENEMY); - game.scene.arena.addTag(ArenaTagType.SPIKES, 1, Moves.SPIKES, 0, ArenaTagSide.ENEMY); + game.scene.arena.addTag(ArenaTagType.STEALTH_ROCK, 1, MoveId.STEALTH_ROCK, 0, ArenaTagSide.ENEMY); + game.scene.arena.addTag(ArenaTagType.SPIKES, 1, MoveId.SPIKES, 0, ArenaTagSide.ENEMY); game.override - .passiveAbility(Abilities.MAGIC_GUARD) - .enemyMoveset([Moves.LEECH_SEED]) + .passiveAbility(AbilityId.MAGIC_GUARD) + .enemyMoveset([MoveId.LEECH_SEED]) .weather(WeatherType.HAIL) .statusEffect(StatusEffect.POISON); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.scene.getPlayerPokemon()!.hp *= 0.51; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.getPlayerParty()[0].getHpRatio()).toEqual(0.51); expect(game.phaseInterceptor.log).not.toContain("SwitchSummonPhase"); - expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(Species.WIMPOD); + expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(SpeciesId.WIMPOD); }); it("Wimp Out activating should not cancel a double battle", async () => { - game.override.battleStyle("double").enemyAbility(Abilities.WIMP_OUT).enemyMoveset([Moves.SPLASH]).enemyLevel(1); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.battleStyle("double").enemyAbility(AbilityId.WIMP_OUT).enemyMoveset([MoveId.SPLASH]).enemyLevel(1); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); const enemyLeadPokemon = game.scene.getEnemyParty()[0]; const enemySecPokemon = game.scene.getEnemyParty()[1]; - game.move.select(Moves.FALSE_SWIPE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.FALSE_SWIPE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); @@ -363,15 +363,15 @@ describe("Abilities - Wimp Out", () => { it("Wimp Out will activate due to aftermath", async () => { game.override - .moveset([Moves.THUNDER_PUNCH]) - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.AFTERMATH) - .enemyMoveset([Moves.SPLASH]) + .moveset([MoveId.THUNDER_PUNCH]) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.AFTERMATH) + .enemyMoveset([MoveId.SPLASH]) .enemyLevel(1); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.scene.getPlayerPokemon()!.hp *= 0.51; - game.move.select(Moves.THUNDER_PUNCH); + game.move.select(MoveId.THUNDER_PUNCH); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -379,21 +379,21 @@ describe("Abilities - Wimp Out", () => { }); it("Activates due to entry hazards", async () => { - game.scene.arena.addTag(ArenaTagType.STEALTH_ROCK, 1, Moves.STEALTH_ROCK, 0, ArenaTagSide.ENEMY); - game.scene.arena.addTag(ArenaTagType.SPIKES, 1, Moves.SPIKES, 0, ArenaTagSide.ENEMY); - game.override.enemySpecies(Species.CENTISKORCH).enemyAbility(Abilities.WIMP_OUT).startingWave(4); - await game.classicMode.startBattle([Species.TYRUNT]); + game.scene.arena.addTag(ArenaTagType.STEALTH_ROCK, 1, MoveId.STEALTH_ROCK, 0, ArenaTagSide.ENEMY); + game.scene.arena.addTag(ArenaTagType.SPIKES, 1, MoveId.SPIKES, 0, ArenaTagSide.ENEMY); + game.override.enemySpecies(SpeciesId.CENTISKORCH).enemyAbility(AbilityId.WIMP_OUT).startingWave(4); + await game.classicMode.startBattle([SpeciesId.TYRUNT]); expect(game.phaseInterceptor.log).not.toContain("MovePhase"); expect(game.phaseInterceptor.log).toContain("BattleEndPhase"); }); it("Wimp Out will activate due to Nightmare", async () => { - game.override.enemyMoveset([Moves.NIGHTMARE]).statusEffect(StatusEffect.SLEEP); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.enemyMoveset([MoveId.NIGHTMARE]).statusEffect(StatusEffect.SLEEP); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.scene.getPlayerPokemon()!.hp *= 0.65; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -401,11 +401,11 @@ describe("Abilities - Wimp Out", () => { }); it("triggers status on the wimp out user before a new pokemon is switched in", async () => { - game.override.enemyMoveset(Moves.SLUDGE_BOMB).startingLevel(80); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); - vi.spyOn(allMoves[Moves.SLUDGE_BOMB], "chance", "get").mockReturnValue(100); + game.override.enemyMoveset(MoveId.SLUDGE_BOMB).startingLevel(80); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); + vi.spyOn(allMoves[MoveId.SLUDGE_BOMB], "chance", "get").mockReturnValue(100); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -414,12 +414,12 @@ describe("Abilities - Wimp Out", () => { }); it("triggers after last hit of multi hit move", async () => { - game.override.enemyMoveset(Moves.BULLET_SEED).enemyAbility(Abilities.SKILL_LINK); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.enemyMoveset(MoveId.BULLET_SEED).enemyAbility(AbilityId.SKILL_LINK); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.scene.getPlayerPokemon()!.hp *= 0.51; - game.move.select(Moves.ENDURE); + game.move.select(MoveId.ENDURE); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -430,12 +430,12 @@ describe("Abilities - Wimp Out", () => { }); it("triggers after last hit of multi hit move (multi lens)", async () => { - game.override.enemyMoveset(Moves.TACKLE).enemyHeldItems([{ name: "MULTI_LENS", count: 1 }]); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.enemyMoveset(MoveId.TACKLE).enemyHeldItems([{ name: "MULTI_LENS", count: 1 }]); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.scene.getPlayerPokemon()!.hp *= 0.51; - game.move.select(Moves.ENDURE); + game.move.select(MoveId.ENDURE); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -445,12 +445,12 @@ describe("Abilities - Wimp Out", () => { confirmSwitch(); }); it("triggers after last hit of Parental Bond", async () => { - game.override.enemyMoveset(Moves.TACKLE).enemyAbility(Abilities.PARENTAL_BOND); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.enemyMoveset(MoveId.TACKLE).enemyAbility(AbilityId.PARENTAL_BOND); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.scene.getPlayerPokemon()!.hp *= 0.51; - game.move.select(Moves.ENDURE); + game.move.select(MoveId.ENDURE); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -464,8 +464,8 @@ describe("Abilities - Wimp Out", () => { it.todo( "Wimp Out will not activate if the Pokémon's HP falls below half due to hurting itself in confusion", async () => { - game.override.moveset([Moves.SWORDS_DANCE]).enemyMoveset([Moves.SWAGGER]); - await game.classicMode.startBattle([Species.WIMPOD, Species.TYRUNT]); + game.override.moveset([MoveId.SWORDS_DANCE]).enemyMoveset([MoveId.SWAGGER]); + await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); const playerPokemon = game.scene.getPlayerPokemon()!; playerPokemon.hp *= 0.51; playerPokemon.setStatStage(Stat.ATK, 6); @@ -474,7 +474,7 @@ describe("Abilities - Wimp Out", () => { // TODO: add helper function to force confusion self-hits while (playerPokemon.getHpRatio() > 0.49) { - game.move.select(Moves.SWORDS_DANCE); + game.move.select(MoveId.SWORDS_DANCE); await game.phaseInterceptor.to("TurnEndPhase"); } @@ -483,15 +483,15 @@ describe("Abilities - Wimp Out", () => { ); it("should not activate on wave X0 bosses", async () => { - game.override.enemyAbility(Abilities.WIMP_OUT).startingLevel(5850).startingWave(10); - await game.classicMode.startBattle([Species.GOLISOPOD]); + game.override.enemyAbility(AbilityId.WIMP_OUT).startingLevel(5850).startingWave(10); + await game.classicMode.startBattle([SpeciesId.GOLISOPOD]); const enemyPokemon = game.scene.getEnemyPokemon()!; // Use 2 turns of False Swipe due to opponent's health bar shield - game.move.select(Moves.FALSE_SWIPE); + game.move.select(MoveId.FALSE_SWIPE); await game.toNextTurn(); - game.move.select(Moves.FALSE_SWIPE); + game.move.select(MoveId.FALSE_SWIPE); await game.toNextTurn(); const isVisible = enemyPokemon.visible; @@ -502,19 +502,19 @@ describe("Abilities - Wimp Out", () => { it("wimp out will not skip battles when triggered in a double battle", async () => { const wave = 2; game.override - .enemyMoveset(Moves.SPLASH) - .enemySpecies(Species.WIMPOD) - .enemyAbility(Abilities.WIMP_OUT) - .moveset([Moves.MATCHA_GOTCHA, Moves.FALSE_SWIPE]) + .enemyMoveset(MoveId.SPLASH) + .enemySpecies(SpeciesId.WIMPOD) + .enemyAbility(AbilityId.WIMP_OUT) + .moveset([MoveId.MATCHA_GOTCHA, MoveId.FALSE_SWIPE]) .startingLevel(50) .enemyLevel(1) .battleStyle("double") .startingWave(wave); - await game.classicMode.startBattle([Species.RAICHU, Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.RAICHU, SpeciesId.PIKACHU]); const [wimpod0, wimpod1] = game.scene.getEnemyField(); - game.move.select(Moves.FALSE_SWIPE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.MATCHA_GOTCHA, 1); + game.move.select(MoveId.FALSE_SWIPE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.MATCHA_GOTCHA, 1); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("TurnEndPhase"); @@ -530,22 +530,22 @@ describe("Abilities - Wimp Out", () => { it("wimp out should not skip battles when triggering the same turn as another enemy faints", async () => { const wave = 2; game.override - .enemySpecies(Species.WIMPOD) - .enemyAbility(Abilities.WIMP_OUT) + .enemySpecies(SpeciesId.WIMPOD) + .enemyAbility(AbilityId.WIMP_OUT) .startingLevel(50) .enemyLevel(1) - .enemyMoveset([Moves.SPLASH, Moves.ENDURE]) + .enemyMoveset([MoveId.SPLASH, MoveId.ENDURE]) .battleStyle("double") - .moveset([Moves.DRAGON_ENERGY, Moves.SPLASH]) + .moveset([MoveId.DRAGON_ENERGY, MoveId.SPLASH]) .startingWave(wave); - await game.classicMode.startBattle([Species.REGIDRAGO, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.REGIDRAGO, SpeciesId.MAGIKARP]); // turn 1 - game.move.select(Moves.DRAGON_ENERGY, 0); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.ENDURE); + game.move.select(MoveId.DRAGON_ENERGY, 0); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.ENDURE); await game.phaseInterceptor.to("SelectModifierPhase"); expect(game.scene.currentBattle.waveIndex).toBe(wave + 1); diff --git a/test/abilities/wind_power.test.ts b/test/abilities/wind_power.test.ts index 11585520c73..a7b4d525a56 100644 --- a/test/abilities/wind_power.test.ts +++ b/test/abilities/wind_power.test.ts @@ -1,8 +1,8 @@ import { BattlerTagType } from "#app/enums/battler-tag-type"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,51 +24,51 @@ describe("Abilities - Wind Power", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.enemySpecies(Species.SHIFTRY); - game.override.enemyAbility(Abilities.WIND_POWER); - game.override.moveset([Moves.TAILWIND, Moves.SPLASH, Moves.PETAL_BLIZZARD, Moves.SANDSTORM]); - game.override.enemyMoveset(Moves.SPLASH); + game.override.enemySpecies(SpeciesId.SHIFTRY); + game.override.enemyAbility(AbilityId.WIND_POWER); + game.override.moveset([MoveId.TAILWIND, MoveId.SPLASH, MoveId.PETAL_BLIZZARD, MoveId.SANDSTORM]); + game.override.enemyMoveset(MoveId.SPLASH); }); it("it becomes charged when hit by wind moves", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const shiftry = game.scene.getEnemyPokemon()!; expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined(); - game.move.select(Moves.PETAL_BLIZZARD); + game.move.select(MoveId.PETAL_BLIZZARD); await game.phaseInterceptor.to(TurnEndPhase); expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeDefined(); }); it("it becomes charged when Tailwind takes effect on its side", async () => { - game.override.ability(Abilities.WIND_POWER); - game.override.enemySpecies(Species.MAGIKARP); + game.override.ability(AbilityId.WIND_POWER); + game.override.enemySpecies(SpeciesId.MAGIKARP); - await game.classicMode.startBattle([Species.SHIFTRY]); + await game.classicMode.startBattle([SpeciesId.SHIFTRY]); const shiftry = game.scene.getPlayerPokemon()!; expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined(); - game.move.select(Moves.TAILWIND); + game.move.select(MoveId.TAILWIND); await game.phaseInterceptor.to(TurnEndPhase); expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeDefined(); }); it("does not become charged when Tailwind takes effect on opposing side", async () => { - game.override.enemySpecies(Species.MAGIKARP); - game.override.ability(Abilities.WIND_POWER); + game.override.enemySpecies(SpeciesId.MAGIKARP); + game.override.ability(AbilityId.WIND_POWER); - await game.classicMode.startBattle([Species.SHIFTRY]); + await game.classicMode.startBattle([SpeciesId.SHIFTRY]); const magikarp = game.scene.getEnemyPokemon()!; const shiftry = game.scene.getPlayerPokemon()!; expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined(); expect(magikarp.getTag(BattlerTagType.CHARGED)).toBeUndefined(); - game.move.select(Moves.TAILWIND); + game.move.select(MoveId.TAILWIND); await game.phaseInterceptor.to(TurnEndPhase); @@ -77,14 +77,14 @@ describe("Abilities - Wind Power", () => { }); it("does not interact with Sandstorm", async () => { - game.override.enemySpecies(Species.MAGIKARP); + game.override.enemySpecies(SpeciesId.MAGIKARP); - await game.classicMode.startBattle([Species.SHIFTRY]); + await game.classicMode.startBattle([SpeciesId.SHIFTRY]); const shiftry = game.scene.getPlayerPokemon()!; expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined(); - game.move.select(Moves.SANDSTORM); + game.move.select(MoveId.SANDSTORM); await game.phaseInterceptor.to(TurnEndPhase); diff --git a/test/abilities/wind_rider.test.ts b/test/abilities/wind_rider.test.ts index f8301aa03fc..ea1747fcae9 100644 --- a/test/abilities/wind_rider.test.ts +++ b/test/abilities/wind_rider.test.ts @@ -1,8 +1,8 @@ import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,19 +24,19 @@ describe("Abilities - Wind Rider", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.SHIFTRY) - .enemyAbility(Abilities.WIND_RIDER) - .moveset([Moves.TAILWIND, Moves.SPLASH, Moves.PETAL_BLIZZARD, Moves.SANDSTORM]) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.SHIFTRY) + .enemyAbility(AbilityId.WIND_RIDER) + .moveset([MoveId.TAILWIND, MoveId.SPLASH, MoveId.PETAL_BLIZZARD, MoveId.SANDSTORM]) + .enemyMoveset(MoveId.SPLASH); }); it("takes no damage from wind moves and its ATK stat stage is raised by 1 when hit by one", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const shiftry = game.scene.getEnemyPokemon()!; expect(shiftry.getStatStage(Stat.ATK)).toBe(0); - game.move.select(Moves.PETAL_BLIZZARD); + game.move.select(MoveId.PETAL_BLIZZARD); await game.phaseInterceptor.to("TurnEndPhase"); @@ -45,14 +45,14 @@ describe("Abilities - Wind Rider", () => { }); it("ATK stat stage is raised by 1 when Tailwind is present on its side", async () => { - game.override.enemySpecies(Species.MAGIKARP).ability(Abilities.WIND_RIDER); + game.override.enemySpecies(SpeciesId.MAGIKARP).ability(AbilityId.WIND_RIDER); - await game.classicMode.startBattle([Species.SHIFTRY]); + await game.classicMode.startBattle([SpeciesId.SHIFTRY]); const shiftry = game.scene.getPlayerPokemon()!; expect(shiftry.getStatStage(Stat.ATK)).toBe(0); - game.move.select(Moves.TAILWIND); + game.move.select(MoveId.TAILWIND); await game.phaseInterceptor.to("TurnEndPhase"); @@ -60,16 +60,16 @@ describe("Abilities - Wind Rider", () => { }); it("does not raise ATK stat stage when Tailwind is present on opposing side", async () => { - game.override.enemySpecies(Species.MAGIKARP).ability(Abilities.WIND_RIDER); + game.override.enemySpecies(SpeciesId.MAGIKARP).ability(AbilityId.WIND_RIDER); - await game.classicMode.startBattle([Species.SHIFTRY]); + await game.classicMode.startBattle([SpeciesId.SHIFTRY]); const magikarp = game.scene.getEnemyPokemon()!; const shiftry = game.scene.getPlayerPokemon()!; expect(shiftry.getStatStage(Stat.ATK)).toBe(0); expect(magikarp.getStatStage(Stat.ATK)).toBe(0); - game.move.select(Moves.TAILWIND); + game.move.select(MoveId.TAILWIND); await game.phaseInterceptor.to("TurnEndPhase"); @@ -78,16 +78,16 @@ describe("Abilities - Wind Rider", () => { }); it("does not raise ATK stat stage when Tailwind is present on opposing side", async () => { - game.override.enemySpecies(Species.MAGIKARP).ability(Abilities.WIND_RIDER); + game.override.enemySpecies(SpeciesId.MAGIKARP).ability(AbilityId.WIND_RIDER); - await game.classicMode.startBattle([Species.SHIFTRY]); + await game.classicMode.startBattle([SpeciesId.SHIFTRY]); const magikarp = game.scene.getEnemyPokemon()!; const shiftry = game.scene.getPlayerPokemon()!; expect(shiftry.getStatStage(Stat.ATK)).toBe(0); expect(magikarp.getStatStage(Stat.ATK)).toBe(0); - game.move.select(Moves.TAILWIND); + game.move.select(MoveId.TAILWIND); await game.phaseInterceptor.to("TurnEndPhase"); @@ -96,15 +96,15 @@ describe("Abilities - Wind Rider", () => { }); it("does not interact with Sandstorm", async () => { - game.override.enemySpecies(Species.MAGIKARP); + game.override.enemySpecies(SpeciesId.MAGIKARP); - await game.classicMode.startBattle([Species.SHIFTRY]); + await game.classicMode.startBattle([SpeciesId.SHIFTRY]); const shiftry = game.scene.getPlayerPokemon()!; expect(shiftry.getStatStage(Stat.ATK)).toBe(0); expect(shiftry.isFullHp()).toBe(true); - game.move.select(Moves.SANDSTORM); + game.move.select(MoveId.SANDSTORM); await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/abilities/wonder_skin.test.ts b/test/abilities/wonder_skin.test.ts index cb5dd4e117f..933d3653580 100644 --- a/test/abilities/wonder_skin.test.ts +++ b/test/abilities/wonder_skin.test.ts @@ -1,8 +1,8 @@ import { allMoves } from "#app/data/data-lists"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -24,53 +24,53 @@ describe("Abilities - Wonder Skin", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.moveset([Moves.TACKLE, Moves.CHARM]); - game.override.ability(Abilities.BALL_FETCH); - game.override.enemySpecies(Species.SHUCKLE); - game.override.enemyAbility(Abilities.WONDER_SKIN); - game.override.enemyMoveset(Moves.SPLASH); + game.override.moveset([MoveId.TACKLE, MoveId.CHARM]); + game.override.ability(AbilityId.BALL_FETCH); + game.override.enemySpecies(SpeciesId.SHUCKLE); + game.override.enemyAbility(AbilityId.WONDER_SKIN); + game.override.enemyMoveset(MoveId.SPLASH); }); it("lowers accuracy of status moves to 50%", async () => { - const moveToCheck = allMoves[Moves.CHARM]; + const moveToCheck = allMoves[MoveId.CHARM]; vi.spyOn(moveToCheck, "calculateBattleAccuracy"); - await game.classicMode.startBattle([Species.PIKACHU]); - game.move.select(Moves.CHARM); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); + game.move.select(MoveId.CHARM); await game.phaseInterceptor.to(MoveEffectPhase); expect(moveToCheck.calculateBattleAccuracy).toHaveReturnedWith(50); }); it("does not lower accuracy of non-status moves", async () => { - const moveToCheck = allMoves[Moves.TACKLE]; + const moveToCheck = allMoves[MoveId.TACKLE]; vi.spyOn(moveToCheck, "calculateBattleAccuracy"); - await game.classicMode.startBattle([Species.PIKACHU]); - game.move.select(Moves.TACKLE); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(MoveEffectPhase); expect(moveToCheck.calculateBattleAccuracy).toHaveReturnedWith(100); }); const bypassAbilities = [ - [Abilities.MOLD_BREAKER, "Mold Breaker"], - [Abilities.TERAVOLT, "Teravolt"], - [Abilities.TURBOBLAZE, "Turboblaze"], + [AbilityId.MOLD_BREAKER, "Mold Breaker"], + [AbilityId.TERAVOLT, "Teravolt"], + [AbilityId.TURBOBLAZE, "Turboblaze"], ]; bypassAbilities.forEach(ability => { it(`does not affect pokemon with ${ability[1]}`, async () => { - const moveToCheck = allMoves[Moves.CHARM]; + const moveToCheck = allMoves[MoveId.CHARM]; // @ts-ignore ts doesn't know that ability[0] is an ability and not a string... game.override.ability(ability[0]); vi.spyOn(moveToCheck, "calculateBattleAccuracy"); - await game.classicMode.startBattle([Species.PIKACHU]); - game.move.select(Moves.CHARM); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); + game.move.select(MoveId.CHARM); await game.phaseInterceptor.to(MoveEffectPhase); expect(moveToCheck.calculateBattleAccuracy).toHaveReturnedWith(100); diff --git a/test/abilities/zen_mode.test.ts b/test/abilities/zen_mode.test.ts index 1eb27a8f6c7..163df7b1853 100644 --- a/test/abilities/zen_mode.test.ts +++ b/test/abilities/zen_mode.test.ts @@ -1,7 +1,7 @@ import { Status } from "#app/data/status-effect"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -28,20 +28,20 @@ describe("Abilities - ZEN MODE", () => { game.override .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) .enemyLevel(5) - .ability(Abilities.ZEN_MODE) - .moveset(Moves.SPLASH) - .enemyMoveset(Moves.SEISMIC_TOSS); + .ability(AbilityId.ZEN_MODE) + .moveset(MoveId.SPLASH) + .enemyMoveset(MoveId.SEISMIC_TOSS); }); it("shouldn't change form when taking damage if not dropping below 50% HP", async () => { - await game.classicMode.startBattle([Species.DARMANITAN]); + await game.classicMode.startBattle([SpeciesId.DARMANITAN]); const darmanitan = game.scene.getPlayerPokemon()!; expect(darmanitan.formIndex).toBe(baseForm); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(darmanitan.getHpRatio()).toBeLessThan(1); @@ -50,13 +50,13 @@ describe("Abilities - ZEN MODE", () => { }); it("should change form when falling below 50% HP", async () => { - await game.classicMode.startBattle([Species.DARMANITAN]); + await game.classicMode.startBattle([SpeciesId.DARMANITAN]); const darmanitan = game.scene.getPlayerPokemon()!; darmanitan.hp = darmanitan.getMaxHp() / 2 + 1; expect(darmanitan.formIndex).toBe(baseForm); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(darmanitan.getHpRatio()).toBeLessThan(0.5); @@ -64,18 +64,18 @@ describe("Abilities - ZEN MODE", () => { }); it("should stay zen mode when fainted", async () => { - await game.classicMode.startBattle([Species.DARMANITAN, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.DARMANITAN, SpeciesId.CHARIZARD]); const darmanitan = game.scene.getPlayerPokemon()!; darmanitan.hp = darmanitan.getMaxHp() / 2 + 1; expect(darmanitan.formIndex).toBe(baseForm); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(darmanitan.getHpRatio()).toBeLessThan(0.5); expect(darmanitan.formIndex).toBe(zenForm); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.killPokemon(darmanitan); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -87,10 +87,10 @@ describe("Abilities - ZEN MODE", () => { it("should switch to base form on arena reset", async () => { game.override.startingWave(4); game.override.starterForms({ - [Species.DARMANITAN]: zenForm, + [SpeciesId.DARMANITAN]: zenForm, }); - await game.classicMode.startBattle([Species.MAGIKARP, Species.DARMANITAN]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.DARMANITAN]); const darmanitan = game.scene.getPlayerParty()[1]; darmanitan.hp = 1; @@ -100,7 +100,7 @@ describe("Abilities - ZEN MODE", () => { darmanitan.status = new Status(StatusEffect.FAINT); expect(darmanitan.isFainted()).toBe(true); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.toNextWave(); diff --git a/test/abilities/zero_to_hero.test.ts b/test/abilities/zero_to_hero.test.ts index c159d007765..90e10c89ca1 100644 --- a/test/abilities/zero_to_hero.test.ts +++ b/test/abilities/zero_to_hero.test.ts @@ -1,9 +1,9 @@ import { Status } from "#app/data/status-effect"; import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -28,18 +28,18 @@ describe("Abilities - ZERO TO HERO", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .moveset(Moves.SPLASH) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH); + .moveset(MoveId.SPLASH) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH); }); it("should swap to base form on arena reset", async () => { game.override.startingWave(4); game.override.starterForms({ - [Species.PALAFIN]: heroForm, + [SpeciesId.PALAFIN]: heroForm, }); - await game.classicMode.startBattle([Species.FEEBAS, Species.PALAFIN, Species.PALAFIN]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.PALAFIN, SpeciesId.PALAFIN]); const palafin1 = game.scene.getPlayerParty()[1]; const palafin2 = game.scene.getPlayerParty()[2]; @@ -49,7 +49,7 @@ describe("Abilities - ZERO TO HERO", () => { palafin2.status = new Status(StatusEffect.FAINT); expect(palafin2.isFainted()).toBe(true); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to(TurnEndPhase); game.doSelectModifier(); @@ -61,7 +61,7 @@ describe("Abilities - ZERO TO HERO", () => { }); it("should swap to Hero form when switching out during a battle", async () => { - await game.classicMode.startBattle([Species.PALAFIN, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.PALAFIN, SpeciesId.FEEBAS]); const palafin = game.scene.getPlayerPokemon()!; expect(palafin.formIndex).toBe(baseForm); @@ -72,12 +72,12 @@ describe("Abilities - ZERO TO HERO", () => { }); it("should not swap to Hero form if switching due to faint", async () => { - await game.classicMode.startBattle([Species.PALAFIN, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.PALAFIN, SpeciesId.FEEBAS]); const palafin = game.scene.getPlayerPokemon()!; expect(palafin.formIndex).toBe(baseForm); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.killPokemon(palafin); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -86,15 +86,15 @@ describe("Abilities - ZERO TO HERO", () => { it("should stay hero form if fainted and then revived", async () => { game.override.starterForms({ - [Species.PALAFIN]: heroForm, + [SpeciesId.PALAFIN]: heroForm, }); - await game.classicMode.startBattle([Species.PALAFIN, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.PALAFIN, SpeciesId.FEEBAS]); const palafin = game.scene.getPlayerPokemon()!; expect(palafin.formIndex).toBe(heroForm); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.killPokemon(palafin); game.doSelectPartyPokemon(1); await game.toNextTurn(); diff --git a/test/arena/arena_gravity.test.ts b/test/arena/arena_gravity.test.ts index 33a1631ad18..776bfa0a564 100644 --- a/test/arena/arena_gravity.test.ts +++ b/test/arena/arena_gravity.test.ts @@ -1,10 +1,10 @@ import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -27,31 +27,31 @@ describe("Arena - Gravity", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .moveset([Moves.TACKLE, Moves.GRAVITY, Moves.FISSURE]) - .ability(Abilities.UNNERVE) - .enemyAbility(Abilities.BALL_FETCH) - .enemySpecies(Species.SHUCKLE) - .enemyMoveset(Moves.SPLASH) + .moveset([MoveId.TACKLE, MoveId.GRAVITY, MoveId.FISSURE]) + .ability(AbilityId.UNNERVE) + .enemyAbility(AbilityId.BALL_FETCH) + .enemySpecies(SpeciesId.SHUCKLE) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(5); }); // Reference: https://bulbapedia.bulbagarden.net/wiki/Gravity_(move) it("non-OHKO move accuracy is multiplied by 1.67", async () => { - const moveToCheck = allMoves[Moves.TACKLE]; + const moveToCheck = allMoves[MoveId.TACKLE]; vi.spyOn(moveToCheck, "calculateBattleAccuracy"); // Setup Gravity on first turn - await game.classicMode.startBattle([Species.PIKACHU]); - game.move.select(Moves.GRAVITY); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); + game.move.select(MoveId.GRAVITY); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.arena.getTag(ArenaTagType.GRAVITY)).toBeDefined(); // Use non-OHKO move on second turn await game.toNextTurn(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("MoveEffectPhase"); expect(moveToCheck.calculateBattleAccuracy).toHaveLastReturnedWith(100 * 1.67); @@ -59,20 +59,20 @@ describe("Arena - Gravity", () => { it("OHKO move accuracy is not affected", async () => { /** See Fissure {@link https://bulbapedia.bulbagarden.net/wiki/Fissure_(move)} */ - const moveToCheck = allMoves[Moves.FISSURE]; + const moveToCheck = allMoves[MoveId.FISSURE]; vi.spyOn(moveToCheck, "calculateBattleAccuracy"); // Setup Gravity on first turn - await game.classicMode.startBattle([Species.PIKACHU]); - game.move.select(Moves.GRAVITY); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); + game.move.select(MoveId.GRAVITY); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.arena.getTag(ArenaTagType.GRAVITY)).toBeDefined(); // Use OHKO move on second turn await game.toNextTurn(); - game.move.select(Moves.FISSURE); + game.move.select(MoveId.FISSURE); await game.phaseInterceptor.to("MoveEffectPhase"); expect(moveToCheck.calculateBattleAccuracy).toHaveLastReturnedWith(30); @@ -80,51 +80,51 @@ describe("Arena - Gravity", () => { describe("Against flying types", () => { it("can be hit by ground-type moves now", async () => { - game.override.enemySpecies(Species.PIDGEOT).moveset([Moves.GRAVITY, Moves.EARTHQUAKE]); + game.override.enemySpecies(SpeciesId.PIDGEOT).moveset([MoveId.GRAVITY, MoveId.EARTHQUAKE]); - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const pidgeot = game.scene.getEnemyPokemon()!; vi.spyOn(pidgeot, "getAttackTypeEffectiveness"); // Try earthquake on 1st turn (fails!); - game.move.select(Moves.EARTHQUAKE); + game.move.select(MoveId.EARTHQUAKE); await game.phaseInterceptor.to("TurnEndPhase"); expect(pidgeot.getAttackTypeEffectiveness).toHaveLastReturnedWith(0); // Setup Gravity on 2nd turn await game.toNextTurn(); - game.move.select(Moves.GRAVITY); + game.move.select(MoveId.GRAVITY); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.arena.getTag(ArenaTagType.GRAVITY)).toBeDefined(); // Use ground move on 3rd turn await game.toNextTurn(); - game.move.select(Moves.EARTHQUAKE); + game.move.select(MoveId.EARTHQUAKE); await game.phaseInterceptor.to("TurnEndPhase"); expect(pidgeot.getAttackTypeEffectiveness).toHaveLastReturnedWith(1); }); it("keeps super-effective moves super-effective after using gravity", async () => { - game.override.enemySpecies(Species.PIDGEOT).moveset([Moves.GRAVITY, Moves.THUNDERBOLT]); + game.override.enemySpecies(SpeciesId.PIDGEOT).moveset([MoveId.GRAVITY, MoveId.THUNDERBOLT]); - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const pidgeot = game.scene.getEnemyPokemon()!; vi.spyOn(pidgeot, "getAttackTypeEffectiveness"); // Setup Gravity on 1st turn - game.move.select(Moves.GRAVITY); + game.move.select(MoveId.GRAVITY); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.arena.getTag(ArenaTagType.GRAVITY)).toBeDefined(); // Use electric move on 2nd turn await game.toNextTurn(); - game.move.select(Moves.THUNDERBOLT); + game.move.select(MoveId.THUNDERBOLT); await game.phaseInterceptor.to("TurnEndPhase"); expect(pidgeot.getAttackTypeEffectiveness).toHaveLastReturnedWith(2); @@ -132,19 +132,19 @@ describe("Arena - Gravity", () => { }); it("cancels Fly if its user is semi-invulnerable", async () => { - game.override.enemySpecies(Species.SNORLAX).enemyMoveset(Moves.FLY).moveset([Moves.GRAVITY, Moves.SPLASH]); + game.override.enemySpecies(SpeciesId.SNORLAX).enemyMoveset(MoveId.FLY).moveset([MoveId.GRAVITY, MoveId.SPLASH]); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const charizard = game.scene.getPlayerPokemon()!; const snorlax = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(snorlax.getTag(BattlerTagType.FLYING)).toBeDefined(); - game.move.select(Moves.GRAVITY); + game.move.select(MoveId.GRAVITY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); diff --git a/test/arena/grassy_terrain.test.ts b/test/arena/grassy_terrain.test.ts index 05b57d210de..832f4400cf4 100644 --- a/test/arena/grassy_terrain.test.ts +++ b/test/arena/grassy_terrain.test.ts @@ -1,7 +1,7 @@ import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -25,43 +25,43 @@ describe("Arena - Grassy Terrain", () => { .battleStyle("single") .disableCrits() .enemyLevel(1) - .enemySpecies(Species.SHUCKLE) - .enemyAbility(Abilities.STURDY) - .enemyMoveset(Moves.FLY) - .moveset([Moves.GRASSY_TERRAIN, Moves.EARTHQUAKE]) - .ability(Abilities.NO_GUARD); + .enemySpecies(SpeciesId.SHUCKLE) + .enemyAbility(AbilityId.STURDY) + .enemyMoveset(MoveId.FLY) + .moveset([MoveId.GRASSY_TERRAIN, MoveId.EARTHQUAKE]) + .ability(AbilityId.NO_GUARD); }); it("halves the damage of Earthquake", async () => { - await game.classicMode.startBattle([Species.TAUROS]); + await game.classicMode.startBattle([SpeciesId.TAUROS]); - const eq = allMoves[Moves.EARTHQUAKE]; + const eq = allMoves[MoveId.EARTHQUAKE]; vi.spyOn(eq, "calculateBattlePower"); - game.move.select(Moves.EARTHQUAKE); + game.move.select(MoveId.EARTHQUAKE); await game.toNextTurn(); expect(eq.calculateBattlePower).toHaveReturnedWith(100); - game.move.select(Moves.GRASSY_TERRAIN); + game.move.select(MoveId.GRASSY_TERRAIN); await game.toNextTurn(); - game.move.select(Moves.EARTHQUAKE); + game.move.select(MoveId.EARTHQUAKE); await game.phaseInterceptor.to("BerryPhase"); expect(eq.calculateBattlePower).toHaveReturnedWith(50); }); it("Does not halve the damage of Earthquake if opponent is not grounded", async () => { - await game.classicMode.startBattle([Species.NINJASK]); + await game.classicMode.startBattle([SpeciesId.NINJASK]); - const eq = allMoves[Moves.EARTHQUAKE]; + const eq = allMoves[MoveId.EARTHQUAKE]; vi.spyOn(eq, "calculateBattlePower"); - game.move.select(Moves.GRASSY_TERRAIN); + game.move.select(MoveId.GRASSY_TERRAIN); await game.toNextTurn(); - game.move.select(Moves.EARTHQUAKE); + game.move.select(MoveId.EARTHQUAKE); await game.phaseInterceptor.to("BerryPhase"); expect(eq.calculateBattlePower).toHaveReturnedWith(100); diff --git a/test/arena/weather_fog.test.ts b/test/arena/weather_fog.test.ts index 69f167b8cf1..24c07d26cba 100644 --- a/test/arena/weather_fog.test.ts +++ b/test/arena/weather_fog.test.ts @@ -1,8 +1,8 @@ import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -25,20 +25,20 @@ describe("Weather - Fog", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.weather(WeatherType.FOG).battleStyle("single"); - game.override.moveset([Moves.TACKLE]); - game.override.ability(Abilities.BALL_FETCH); - game.override.enemyAbility(Abilities.BALL_FETCH); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyMoveset([Moves.SPLASH]); + game.override.moveset([MoveId.TACKLE]); + game.override.ability(AbilityId.BALL_FETCH); + game.override.enemyAbility(AbilityId.BALL_FETCH); + game.override.enemySpecies(SpeciesId.MAGIKARP); + game.override.enemyMoveset([MoveId.SPLASH]); }); it("move accuracy is multiplied by 90%", async () => { - const moveToCheck = allMoves[Moves.TACKLE]; + const moveToCheck = allMoves[MoveId.TACKLE]; vi.spyOn(moveToCheck, "calculateBattleAccuracy"); - await game.classicMode.startBattle([Species.MAGIKARP]); - game.move.select(Moves.TACKLE); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(MoveEffectPhase); expect(moveToCheck.calculateBattleAccuracy).toHaveReturnedWith(100 * 0.9); diff --git a/test/arena/weather_hail.test.ts b/test/arena/weather_hail.test.ts index 2fa4f71d8ca..072fbd20498 100644 --- a/test/arena/weather_hail.test.ts +++ b/test/arena/weather_hail.test.ts @@ -1,6 +1,6 @@ import { BattlerIndex } from "#app/battle"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -25,15 +25,15 @@ describe("Weather - Hail", () => { game.override .weather(WeatherType.HAIL) .battleStyle("single") - .moveset(Moves.SPLASH) - .enemyMoveset(Moves.SPLASH) - .enemySpecies(Species.MAGIKARP); + .moveset(MoveId.SPLASH) + .enemyMoveset(MoveId.SPLASH) + .enemySpecies(SpeciesId.MAGIKARP); }); it("inflicts damage equal to 1/16 of Pokemon's max HP at turn end", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); @@ -44,10 +44,10 @@ describe("Weather - Hail", () => { }); it("does not inflict damage to a Pokemon that is underwater (Dive) or underground (Dig)", async () => { - game.override.moveset([Moves.DIG]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.DIG]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.DIG); + game.move.select(MoveId.DIG); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); @@ -60,9 +60,9 @@ describe("Weather - Hail", () => { }); it("does not inflict damage to Ice type Pokemon", async () => { - await game.classicMode.startBattle([Species.CLOYSTER]); + await game.classicMode.startBattle([SpeciesId.CLOYSTER]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/arena/weather_sandstorm.test.ts b/test/arena/weather_sandstorm.test.ts index e7620f6cf30..61001abe1f4 100644 --- a/test/arena/weather_sandstorm.test.ts +++ b/test/arena/weather_sandstorm.test.ts @@ -1,7 +1,7 @@ -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { Stat } from "#app/enums/stat"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -26,15 +26,15 @@ describe("Weather - Sandstorm", () => { game.override .weather(WeatherType.SANDSTORM) .battleStyle("single") - .moveset(Moves.SPLASH) - .enemyMoveset(Moves.SPLASH) - .enemySpecies(Species.MAGIKARP); + .moveset(MoveId.SPLASH) + .enemyMoveset(MoveId.SPLASH) + .enemySpecies(SpeciesId.MAGIKARP); }); it("inflicts damage equal to 1/16 of Pokemon's max HP at turn end", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); @@ -44,10 +44,10 @@ describe("Weather - Sandstorm", () => { }); it("does not inflict damage to a Pokemon that is underwater (Dive) or underground (Dig)", async () => { - game.override.moveset([Moves.DIVE]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.DIVE]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.DIVE); + game.move.select(MoveId.DIVE); await game.phaseInterceptor.to("TurnEndPhase"); @@ -61,14 +61,14 @@ describe("Weather - Sandstorm", () => { it("does not inflict damage to Rock, Ground and Steel type Pokemon", async () => { game.override .battleStyle("double") - .enemySpecies(Species.SANDSHREW) - .ability(Abilities.BALL_FETCH) - .enemyAbility(Abilities.BALL_FETCH); + .enemySpecies(SpeciesId.SANDSHREW) + .ability(AbilityId.BALL_FETCH) + .enemyAbility(AbilityId.BALL_FETCH); - await game.classicMode.startBattle([Species.ROCKRUFF, Species.KLINK]); + await game.classicMode.startBattle([SpeciesId.ROCKRUFF, SpeciesId.KLINK]); - game.move.select(Moves.SPLASH, 0); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 0); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -78,7 +78,7 @@ describe("Weather - Sandstorm", () => { }); it("increases Rock type Pokemon Sp.Def by 50%", async () => { - await game.classicMode.startBattle([Species.ROCKRUFF]); + await game.classicMode.startBattle([SpeciesId.ROCKRUFF]); const playerPokemon = game.scene.getPlayerPokemon()!; const playerSpdef = playerPokemon.getStat(Stat.SPDEF); diff --git a/test/arena/weather_strong_winds.test.ts b/test/arena/weather_strong_winds.test.ts index b996d8bf62a..8b3c2562e6f 100644 --- a/test/arena/weather_strong_winds.test.ts +++ b/test/arena/weather_strong_winds.test.ts @@ -1,9 +1,9 @@ import { allMoves } from "#app/data/data-lists"; import { StatusEffect } from "#app/enums/status-effect"; import { TurnStartPhase } from "#app/phases/turn-start-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -26,66 +26,66 @@ describe("Weather - Strong Winds", () => { game = new GameManager(phaserGame); game.override.battleStyle("single"); game.override.startingLevel(10); - game.override.enemySpecies(Species.TAILLOW); - game.override.enemyAbility(Abilities.DELTA_STREAM); - game.override.moveset([Moves.THUNDERBOLT, Moves.ICE_BEAM, Moves.ROCK_SLIDE]); + game.override.enemySpecies(SpeciesId.TAILLOW); + game.override.enemyAbility(AbilityId.DELTA_STREAM); + game.override.moveset([MoveId.THUNDERBOLT, MoveId.ICE_BEAM, MoveId.ROCK_SLIDE]); }); it("electric type move is not very effective on Rayquaza", async () => { - game.override.enemySpecies(Species.RAYQUAZA); + game.override.enemySpecies(SpeciesId.RAYQUAZA); - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const pikachu = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.THUNDERBOLT); + game.move.select(MoveId.THUNDERBOLT); await game.phaseInterceptor.to(TurnStartPhase); - expect(enemy.getAttackTypeEffectiveness(allMoves[Moves.THUNDERBOLT].type, pikachu)).toBe(0.5); + expect(enemy.getAttackTypeEffectiveness(allMoves[MoveId.THUNDERBOLT].type, pikachu)).toBe(0.5); }); it("electric type move is neutral for flying type pokemon", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const pikachu = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.THUNDERBOLT); + game.move.select(MoveId.THUNDERBOLT); await game.phaseInterceptor.to(TurnStartPhase); - expect(enemy.getAttackTypeEffectiveness(allMoves[Moves.THUNDERBOLT].type, pikachu)).toBe(1); + expect(enemy.getAttackTypeEffectiveness(allMoves[MoveId.THUNDERBOLT].type, pikachu)).toBe(1); }); it("ice type move is neutral for flying type pokemon", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const pikachu = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.ICE_BEAM); + game.move.select(MoveId.ICE_BEAM); await game.phaseInterceptor.to(TurnStartPhase); - expect(enemy.getAttackTypeEffectiveness(allMoves[Moves.ICE_BEAM].type, pikachu)).toBe(1); + expect(enemy.getAttackTypeEffectiveness(allMoves[MoveId.ICE_BEAM].type, pikachu)).toBe(1); }); it("rock type move is neutral for flying type pokemon", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const pikachu = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.ROCK_SLIDE); + game.move.select(MoveId.ROCK_SLIDE); await game.phaseInterceptor.to(TurnStartPhase); - expect(enemy.getAttackTypeEffectiveness(allMoves[Moves.ROCK_SLIDE].type, pikachu)).toBe(1); + expect(enemy.getAttackTypeEffectiveness(allMoves[MoveId.ROCK_SLIDE].type, pikachu)).toBe(1); }); it("weather goes away when last trainer pokemon dies to indirect damage", async () => { game.override.enemyStatusEffect(StatusEffect.POISON); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemy = game.scene.getEnemyPokemon()!; enemy.hp = 1; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.arena.weather?.weatherType).toBeUndefined(); diff --git a/test/battle/ability_swap.test.ts b/test/battle/ability_swap.test.ts index c9f91df3a48..64446d703ac 100644 --- a/test/battle/ability_swap.test.ts +++ b/test/battle/ability_swap.test.ts @@ -1,8 +1,8 @@ import { allAbilities } from "#app/data/data-lists"; import { Stat } from "#app/enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,42 +24,42 @@ describe("Test Ability Swapping", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should activate post-summon abilities", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); - game.scene.getPlayerPokemon()?.setTempAbility(allAbilities[Abilities.INTIMIDATE]); + game.move.select(MoveId.SPLASH); + game.scene.getPlayerPokemon()?.setTempAbility(allAbilities[AbilityId.INTIMIDATE]); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(-1); }); it("should remove primal weather when the setter's ability is removed", async () => { - game.override.ability(Abilities.DESOLATE_LAND); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.ability(AbilityId.DESOLATE_LAND); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); - game.scene.getPlayerPokemon()?.setTempAbility(allAbilities[Abilities.BALL_FETCH]); + game.move.select(MoveId.SPLASH); + game.scene.getPlayerPokemon()?.setTempAbility(allAbilities[AbilityId.BALL_FETCH]); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.weather?.weatherType).toBeUndefined(); }); it("should not activate passive abilities", async () => { - game.override.passiveAbility(Abilities.INTREPID_SWORD); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.passiveAbility(AbilityId.INTREPID_SWORD); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SPLASH); - game.scene.getPlayerPokemon()?.setTempAbility(allAbilities[Abilities.BALL_FETCH]); + game.move.select(MoveId.SPLASH); + game.scene.getPlayerPokemon()?.setTempAbility(allAbilities[AbilityId.BALL_FETCH]); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.ATK)).toBe(1); // would be 2 if passive activated again @@ -67,10 +67,10 @@ describe("Test Ability Swapping", () => { // Pickup and Honey Gather are special cases as they're the only abilities to be Unsuppressable but not Unswappable it("should be able to swap pickup", async () => { - game.override.ability(Abilities.PICKUP).enemyAbility(Abilities.INTIMIDATE).moveset(Moves.ROLE_PLAY); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.ability(AbilityId.PICKUP).enemyAbility(AbilityId.INTIMIDATE).moveset(MoveId.ROLE_PLAY); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.ROLE_PLAY); + game.move.select(MoveId.ROLE_PLAY); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(-1); diff --git a/test/battle/battle-order.test.ts b/test/battle/battle-order.test.ts index 876730169f9..7983f1db1d2 100644 --- a/test/battle/battle-order.test.ts +++ b/test/battle/battle-order.test.ts @@ -1,9 +1,9 @@ import { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; import { SelectTargetPhase } from "#app/phases/select-target-phase"; import { TurnStartPhase } from "#app/phases/turn-start-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -25,21 +25,21 @@ describe("Battle order", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.enemySpecies(Species.MEWTWO); - game.override.enemyAbility(Abilities.INSOMNIA); - game.override.ability(Abilities.INSOMNIA); - game.override.moveset([Moves.TACKLE]); + game.override.enemySpecies(SpeciesId.MEWTWO); + game.override.enemyAbility(AbilityId.INSOMNIA); + game.override.ability(AbilityId.INSOMNIA); + game.override.moveset([MoveId.TACKLE]); }); it("opponent faster than player 50 vs 150", async () => { - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; vi.spyOn(playerPokemon, "stats", "get").mockReturnValue([20, 20, 20, 20, 20, 50]); // set playerPokemon's speed to 50 vi.spyOn(enemyPokemon, "stats", "get").mockReturnValue([20, 20, 20, 20, 20, 150]); // set enemyPokemon's speed to 150 - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.run(EnemyCommandPhase); const playerPokemonIndex = playerPokemon.getBattlerIndex(); @@ -51,14 +51,14 @@ describe("Battle order", () => { }, 20000); it("Player faster than opponent 150 vs 50", async () => { - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; vi.spyOn(playerPokemon, "stats", "get").mockReturnValue([20, 20, 20, 20, 20, 150]); // set playerPokemon's speed to 150 vi.spyOn(enemyPokemon, "stats", "get").mockReturnValue([20, 20, 20, 20, 20, 50]); // set enemyPokemon's speed to 50 - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.run(EnemyCommandPhase); const playerPokemonIndex = playerPokemon.getBattlerIndex(); @@ -71,7 +71,7 @@ describe("Battle order", () => { it("double - both opponents faster than player 50/50 vs 150/150", async () => { game.override.battleStyle("double"); - await game.classicMode.startBattle([Species.BULBASAUR, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.BLASTOISE]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); @@ -81,8 +81,8 @@ describe("Battle order", () => { const playerIndices = playerPokemon.map(p => p?.getBattlerIndex()); const enemyIndices = enemyPokemon.map(p => p?.getBattlerIndex()); - game.move.select(Moves.TACKLE); - game.move.select(Moves.TACKLE, 1); + game.move.select(MoveId.TACKLE); + game.move.select(MoveId.TACKLE, 1); await game.phaseInterceptor.runFrom(SelectTargetPhase).to(TurnStartPhase, false); const phase = game.scene.getCurrentPhase() as TurnStartPhase; @@ -95,7 +95,7 @@ describe("Battle order", () => { it("double - speed tie except 1 - 100/100 vs 100/150", async () => { game.override.battleStyle("double"); - await game.classicMode.startBattle([Species.BULBASAUR, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.BLASTOISE]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); @@ -105,8 +105,8 @@ describe("Battle order", () => { const playerIndices = playerPokemon.map(p => p?.getBattlerIndex()); const enemyIndices = enemyPokemon.map(p => p?.getBattlerIndex()); - game.move.select(Moves.TACKLE); - game.move.select(Moves.TACKLE, 1); + game.move.select(MoveId.TACKLE); + game.move.select(MoveId.TACKLE, 1); await game.phaseInterceptor.runFrom(SelectTargetPhase).to(TurnStartPhase, false); const phase = game.scene.getCurrentPhase() as TurnStartPhase; @@ -119,7 +119,7 @@ describe("Battle order", () => { it("double - speed tie 100/150 vs 100/150", async () => { game.override.battleStyle("double"); - await game.classicMode.startBattle([Species.BULBASAUR, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.BLASTOISE]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); @@ -130,8 +130,8 @@ describe("Battle order", () => { const playerIndices = playerPokemon.map(p => p?.getBattlerIndex()); const enemyIndices = enemyPokemon.map(p => p?.getBattlerIndex()); - game.move.select(Moves.TACKLE); - game.move.select(Moves.TACKLE, 1); + game.move.select(MoveId.TACKLE); + game.move.select(MoveId.TACKLE, 1); await game.phaseInterceptor.runFrom(SelectTargetPhase).to(TurnStartPhase, false); const phase = game.scene.getCurrentPhase() as TurnStartPhase; diff --git a/test/battle/battle.test.ts b/test/battle/battle.test.ts index 8c4315dcabc..03faf369dd7 100644 --- a/test/battle/battle.test.ts +++ b/test/battle/battle.test.ts @@ -19,13 +19,13 @@ import { VictoryPhase } from "#app/phases/victory-phase"; import GameManager from "#test/testUtils/gameManager"; import { generateStarter } from "#test/testUtils/gameManagerUtils"; import { UiMode } from "#enums/ui-mode"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { PlayerGender } from "#enums/player-gender"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; describe("Test Battle Phase", () => { let phaserGame: Phaser.Game; @@ -91,29 +91,29 @@ describe("Test Battle Phase", () => { }, 20000); it("do attack wave 3 - single battle - regular - OHKO", async () => { - game.override.starterSpecies(Species.MEWTWO); - game.override.enemySpecies(Species.RATTATA); + game.override.starterSpecies(SpeciesId.MEWTWO); + game.override.enemySpecies(SpeciesId.RATTATA); game.override.startingLevel(2000); game.override.startingWave(3).battleStyle("single"); - game.override.moveset([Moves.TACKLE]); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + game.override.moveset([MoveId.TACKLE]); + game.override.enemyAbility(AbilityId.HYDRATION); + game.override.enemyMoveset([MoveId.TACKLE, MoveId.TACKLE, MoveId.TACKLE, MoveId.TACKLE]); await game.classicMode.startBattle(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(SelectModifierPhase, false); }, 20000); it("do attack wave 3 - single battle - regular - NO OHKO with opponent using non damage attack", async () => { - game.override.starterSpecies(Species.MEWTWO); - game.override.enemySpecies(Species.RATTATA); + game.override.starterSpecies(SpeciesId.MEWTWO); + game.override.enemySpecies(SpeciesId.RATTATA); game.override.startingLevel(5); game.override.startingWave(3); - game.override.moveset([Moves.TACKLE]); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.enemyMoveset([Moves.TAIL_WHIP, Moves.TAIL_WHIP, Moves.TAIL_WHIP, Moves.TAIL_WHIP]); + game.override.moveset([MoveId.TACKLE]); + game.override.enemyAbility(AbilityId.HYDRATION); + game.override.enemyMoveset([MoveId.TAIL_WHIP, MoveId.TAIL_WHIP, MoveId.TAIL_WHIP, MoveId.TAIL_WHIP]); game.override.battleStyle("single"); await game.classicMode.startBattle(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(TurnInitPhase, false); }, 20000); @@ -127,10 +127,10 @@ describe("Test Battle Phase", () => { }, 20000); it("start battle with selected team", async () => { - await game.classicMode.startBattle([Species.CHARIZARD, Species.CHANSEY, Species.MEW]); - expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.CHARIZARD); - expect(game.scene.getPlayerParty()[1].species.speciesId).toBe(Species.CHANSEY); - expect(game.scene.getPlayerParty()[2].species.speciesId).toBe(Species.MEW); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.CHANSEY, SpeciesId.MEW]); + expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(SpeciesId.CHARIZARD); + expect(game.scene.getPlayerParty()[1].species.speciesId).toBe(SpeciesId.CHANSEY); + expect(game.scene.getPlayerParty()[2].species.speciesId).toBe(SpeciesId.MEW); }, 20000); it("test remove random battle seed int", async () => { @@ -204,58 +204,58 @@ describe("Test Battle Phase", () => { it("2vs1", async () => { game.override.battleStyle("single"); - game.override.enemySpecies(Species.MIGHTYENA); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.ability(Abilities.HYDRATION); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + game.override.enemySpecies(SpeciesId.MIGHTYENA); + game.override.enemyAbility(AbilityId.HYDRATION); + game.override.ability(AbilityId.HYDRATION); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("1vs1", async () => { game.override.battleStyle("single"); - game.override.enemySpecies(Species.MIGHTYENA); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.ability(Abilities.HYDRATION); - await game.classicMode.startBattle([Species.BLASTOISE]); + game.override.enemySpecies(SpeciesId.MIGHTYENA); + game.override.enemyAbility(AbilityId.HYDRATION); + game.override.ability(AbilityId.HYDRATION); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("2vs2", async () => { game.override.battleStyle("double"); - game.override.enemySpecies(Species.MIGHTYENA); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.ability(Abilities.HYDRATION); + game.override.enemySpecies(SpeciesId.MIGHTYENA); + game.override.enemyAbility(AbilityId.HYDRATION); + game.override.ability(AbilityId.HYDRATION); game.override.startingWave(3); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("4vs2", async () => { game.override.battleStyle("double"); - game.override.enemySpecies(Species.MIGHTYENA); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.ability(Abilities.HYDRATION); + game.override.enemySpecies(SpeciesId.MIGHTYENA); + game.override.enemyAbility(AbilityId.HYDRATION); + game.override.ability(AbilityId.HYDRATION); game.override.startingWave(3); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD, Species.DARKRAI, Species.GABITE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD, SpeciesId.DARKRAI, SpeciesId.GABITE]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("kill opponent pokemon", async () => { - const moveToUse = Moves.SPLASH; + const moveToUse = MoveId.SPLASH; game.override.battleStyle("single"); - game.override.starterSpecies(Species.MEWTWO); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.ability(Abilities.ZEN_MODE); + game.override.starterSpecies(SpeciesId.MEWTWO); + game.override.enemySpecies(SpeciesId.RATTATA); + game.override.enemyAbility(AbilityId.HYDRATION); + game.override.ability(AbilityId.ZEN_MODE); game.override.startingLevel(2000); game.override.startingWave(3); game.override.moveset([moveToUse]); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); - await game.classicMode.startBattle([Species.DARMANITAN, Species.CHARIZARD]); + game.override.enemyMoveset([MoveId.TACKLE, MoveId.TACKLE, MoveId.TACKLE, MoveId.TACKLE]); + await game.classicMode.startBattle([SpeciesId.DARMANITAN, SpeciesId.CHARIZARD]); game.move.select(moveToUse); await game.phaseInterceptor.to(DamageAnimPhase, false); @@ -265,16 +265,16 @@ describe("Test Battle Phase", () => { }, 200000); it("to next turn", async () => { - const moveToUse = Moves.SPLASH; + const moveToUse = MoveId.SPLASH; game.override.battleStyle("single"); - game.override.starterSpecies(Species.MEWTWO); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.ability(Abilities.ZEN_MODE); + game.override.starterSpecies(SpeciesId.MEWTWO); + game.override.enemySpecies(SpeciesId.RATTATA); + game.override.enemyAbility(AbilityId.HYDRATION); + game.override.ability(AbilityId.ZEN_MODE); game.override.startingLevel(2000); game.override.startingWave(3); game.override.moveset([moveToUse]); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + game.override.enemyMoveset([MoveId.TACKLE, MoveId.TACKLE, MoveId.TACKLE, MoveId.TACKLE]); await game.classicMode.startBattle(); const turn = game.scene.currentBattle.turn; game.move.select(moveToUse); @@ -283,18 +283,18 @@ describe("Test Battle Phase", () => { }, 20000); it("does not set new weather if staying in same biome", async () => { - const moveToUse = Moves.SPLASH; + const moveToUse = MoveId.SPLASH; game.override .battleStyle("single") - .starterSpecies(Species.MEWTWO) - .enemySpecies(Species.RATTATA) - .enemyAbility(Abilities.HYDRATION) - .ability(Abilities.ZEN_MODE) + .starterSpecies(SpeciesId.MEWTWO) + .enemySpecies(SpeciesId.RATTATA) + .enemyAbility(AbilityId.HYDRATION) + .ability(AbilityId.ZEN_MODE) .startingLevel(2000) .startingWave(3) - .startingBiome(Biome.LAKE) + .startingBiome(BiomeId.LAKE) .moveset([moveToUse]); - game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); + game.override.enemyMoveset([MoveId.TACKLE, MoveId.TACKLE, MoveId.TACKLE, MoveId.TACKLE]); await game.classicMode.startBattle(); const waveIndex = game.scene.currentBattle.waveIndex; game.move.select(moveToUse); @@ -307,15 +307,15 @@ describe("Test Battle Phase", () => { }, 20000); it("does not force switch if active pokemon faints at same time as enemy mon and is revived in post-battle", async () => { - const moveToUse = Moves.TAKE_DOWN; + const moveToUse = MoveId.TAKE_DOWN; game.override .battleStyle("single") - .starterSpecies(Species.SAWK) - .enemySpecies(Species.RATTATA) + .starterSpecies(SpeciesId.SAWK) + .enemySpecies(SpeciesId.RATTATA) .startingWave(1) .startingLevel(100) .moveset([moveToUse]) - .enemyMoveset(Moves.SPLASH) + .enemyMoveset(MoveId.SPLASH) .startingHeldItems([{ name: "TEMP_STAT_STAGE_BOOSTER", type: Stat.ACC }]); await game.classicMode.startBattle(); diff --git a/test/battle/damage_calculation.test.ts b/test/battle/damage_calculation.test.ts index 1d027a96792..a054ad0f468 100644 --- a/test/battle/damage_calculation.test.ts +++ b/test/battle/damage_calculation.test.ts @@ -1,10 +1,10 @@ import { allMoves } from "#app/data/data-lists"; import type { EnemyPersistentModifier } from "#app/modifier/modifier"; import { modifierTypes } from "#app/modifier/modifier-type"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -27,17 +27,17 @@ describe("Battle Mechanics - Damage Calculation", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) .startingLevel(100) .enemyLevel(100) .disableCrits() - .moveset([Moves.TACKLE, Moves.DRAGON_RAGE, Moves.FISSURE, Moves.JUMP_KICK]); + .moveset([MoveId.TACKLE, MoveId.DRAGON_RAGE, MoveId.FISSURE, MoveId.JUMP_KICK]); }); it("Tackle deals expected base damage", async () => { - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; vi.spyOn(playerPokemon, "getEffectiveStat").mockReturnValue(80); @@ -47,19 +47,19 @@ describe("Battle Mechanics - Damage Calculation", () => { // expected base damage = [(2*level/5 + 2) * power * playerATK / enemyDEF / 50] + 2 // = 31.8666... - expect(enemyPokemon.getAttackDamage({ source: playerPokemon, move: allMoves[Moves.TACKLE] }).damage).toBeCloseTo( + expect(enemyPokemon.getAttackDamage({ source: playerPokemon, move: allMoves[MoveId.TACKLE] }).damage).toBeCloseTo( 31, ); }); it("Attacks deal 1 damage at minimum", async () => { - game.override.startingLevel(1).enemySpecies(Species.AGGRON); + game.override.startingLevel(1).enemySpecies(SpeciesId.AGGRON); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const aggron = game.scene.getEnemyPokemon()!; - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("BerryPhase", false); @@ -68,9 +68,9 @@ describe("Battle Mechanics - Damage Calculation", () => { }); it("Attacks deal 1 damage at minimum even with many tokens", async () => { - game.override.startingLevel(1).enemySpecies(Species.AGGRON).enemyAbility(Abilities.STURDY).enemyLevel(10000); + game.override.startingLevel(1).enemySpecies(SpeciesId.AGGRON).enemyAbility(AbilityId.STURDY).enemyLevel(10000); - await game.classicMode.startBattle([Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); const dmg_redux_modifier = modifierTypes.ENEMY_DAMAGE_REDUCTION().newModifier() as EnemyPersistentModifier; dmg_redux_modifier.stackCount = 1000; @@ -78,7 +78,7 @@ describe("Battle Mechanics - Damage Calculation", () => { const aggron = game.scene.getEnemyPokemon()!; - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("BerryPhase", false); @@ -86,35 +86,35 @@ describe("Battle Mechanics - Damage Calculation", () => { }); it("Fixed-damage moves ignore damage multipliers", async () => { - game.override.enemySpecies(Species.DRAGONITE).enemyAbility(Abilities.MULTISCALE); + game.override.enemySpecies(SpeciesId.DRAGONITE).enemyAbility(AbilityId.MULTISCALE); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const magikarp = game.scene.getPlayerPokemon()!; const dragonite = game.scene.getEnemyPokemon()!; - expect(dragonite.getAttackDamage({ source: magikarp, move: allMoves[Moves.DRAGON_RAGE] }).damage).toBe(40); + expect(dragonite.getAttackDamage({ source: magikarp, move: allMoves[MoveId.DRAGON_RAGE] }).damage).toBe(40); }); it("One-hit KO moves ignore damage multipliers", async () => { - game.override.enemySpecies(Species.AGGRON).enemyAbility(Abilities.MULTISCALE); + game.override.enemySpecies(SpeciesId.AGGRON).enemyAbility(AbilityId.MULTISCALE); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const magikarp = game.scene.getPlayerPokemon()!; const aggron = game.scene.getEnemyPokemon()!; - expect(aggron.getAttackDamage({ source: magikarp, move: allMoves[Moves.FISSURE] }).damage).toBe(aggron.hp); + expect(aggron.getAttackDamage({ source: magikarp, move: allMoves[MoveId.FISSURE] }).damage).toBe(aggron.hp); }); it("When the user fails to use Jump Kick with Wonder Guard ability, the damage should be 1.", async () => { - game.override.enemySpecies(Species.GASTLY).ability(Abilities.WONDER_GUARD); + game.override.enemySpecies(SpeciesId.GASTLY).ability(AbilityId.WONDER_GUARD); - await game.classicMode.startBattle([Species.SHEDINJA]); + await game.classicMode.startBattle([SpeciesId.SHEDINJA]); const shedinja = game.scene.getPlayerPokemon()!; - game.move.select(Moves.JUMP_KICK); + game.move.select(MoveId.JUMP_KICK); await game.phaseInterceptor.to("DamageAnimPhase"); @@ -122,10 +122,10 @@ describe("Battle Mechanics - Damage Calculation", () => { }); it("Charizard with odd HP survives Stealth Rock damage twice", async () => { - game.scene.arena.addTag(ArenaTagType.STEALTH_ROCK, 1, Moves.STEALTH_ROCK, 0); - game.override.seed("Charizard Stealth Rock test").enemySpecies(Species.CHARIZARD).enemyAbility(Abilities.BLAZE); + game.scene.arena.addTag(ArenaTagType.STEALTH_ROCK, 1, MoveId.STEALTH_ROCK, 0); + game.override.seed("Charizard Stealth Rock test").enemySpecies(SpeciesId.CHARIZARD).enemyAbility(AbilityId.BLAZE); - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const charizard = game.scene.getEnemyPokemon()!; diff --git a/test/battle/double_battle.test.ts b/test/battle/double_battle.test.ts index 99c52ea5add..31bfc480c47 100644 --- a/test/battle/double_battle.test.ts +++ b/test/battle/double_battle.test.ts @@ -1,10 +1,10 @@ import { Status } from "#app/data/status-effect"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { GameModes, getGameMode } from "#app/game-mode"; import { BattleEndPhase } from "#app/phases/battle-end-phase"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -33,11 +33,11 @@ describe("Double Battles", () => { // double-battle player's pokemon both fainted in same round, then revive one, and next double battle summons two player's pokemon successfully. // (There were bugs that either only summon one when can summon two, player stuck in switchPhase etc) it("3v2 edge case: player summons 2 pokemon on the next battle after being fainted and revived", async () => { - game.override.battleStyle("double").enemyMoveset(Moves.SPLASH).moveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARIZARD, Species.SQUIRTLE]); + game.override.battleStyle("double").enemyMoveset(MoveId.SPLASH).moveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARIZARD, SpeciesId.SQUIRTLE]); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH, 1); for (const pokemon of game.scene.getPlayerField()) { pokemon.hp = 0; @@ -50,7 +50,7 @@ describe("Double Battles", () => { await game.phaseInterceptor.to(BattleEndPhase); game.doSelectModifier(); - const charizard = game.scene.getPlayerParty().findIndex(p => p.species.speciesId === Species.CHARIZARD); + const charizard = game.scene.getPlayerParty().findIndex(p => p.species.speciesId === SpeciesId.CHARIZARD); game.doRevivePokemon(charizard); await game.phaseInterceptor.to(TurnInitPhase); @@ -67,19 +67,19 @@ describe("Double Battles", () => { }); game.override - .enemyMoveset(Moves.SPLASH) - .moveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH) - .ability(Abilities.BALL_FETCH); + .enemyMoveset(MoveId.SPLASH) + .moveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) + .ability(AbilityId.BALL_FETCH); // Play through endless, waves 1 to 9, counting number of double battles from waves 2 to 9 - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); game.scene.gameMode = getGameMode(GameModes.ENDLESS); for (let i = 0; i < DOUBLE_CHANCE; i++) { rngSweepProgress = (i + 0.5) / DOUBLE_CHANCE; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.toNextWave(); diff --git a/test/battle/inverse_battle.test.ts b/test/battle/inverse_battle.test.ts index 168df0b9505..b0d9c7bb755 100644 --- a/test/battle/inverse_battle.test.ts +++ b/test/battle/inverse_battle.test.ts @@ -1,10 +1,10 @@ import { BattlerIndex } from "#app/battle"; import { PokemonType } from "#enums/pokemon-type"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; import { Challenges } from "#enums/challenges"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -31,22 +31,22 @@ describe("Inverse Battle", () => { game.override .battleStyle("single") - .starterSpecies(Species.FEEBAS) - .ability(Abilities.BALL_FETCH) - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .starterSpecies(SpeciesId.FEEBAS) + .ability(AbilityId.BALL_FETCH) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("Immune types are 2x effective - Thunderbolt against Ground Type", async () => { - game.override.moveset([Moves.THUNDERBOLT]).enemySpecies(Species.SANDSHREW); + game.override.moveset([MoveId.THUNDERBOLT]).enemySpecies(SpeciesId.SANDSHREW); await game.challengeMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.THUNDERBOLT); + game.move.select(MoveId.THUNDERBOLT); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -54,14 +54,14 @@ describe("Inverse Battle", () => { }); it("2x effective types are 0.5x effective - Thunderbolt against Flying Type", async () => { - game.override.moveset([Moves.THUNDERBOLT]).enemySpecies(Species.PIDGEY); + game.override.moveset([MoveId.THUNDERBOLT]).enemySpecies(SpeciesId.PIDGEY); await game.challengeMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.THUNDERBOLT); + game.move.select(MoveId.THUNDERBOLT); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -69,14 +69,14 @@ describe("Inverse Battle", () => { }); it("0.5x effective types are 2x effective - Thunderbolt against Electric Type", async () => { - game.override.moveset([Moves.THUNDERBOLT]).enemySpecies(Species.CHIKORITA); + game.override.moveset([MoveId.THUNDERBOLT]).enemySpecies(SpeciesId.CHIKORITA); await game.challengeMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.THUNDERBOLT); + game.move.select(MoveId.THUNDERBOLT); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -84,8 +84,8 @@ describe("Inverse Battle", () => { }); it("Stealth Rock follows the inverse matchups - Stealth Rock against Charizard deals 1/32 of max HP", async () => { - game.scene.arena.addTag(ArenaTagType.STEALTH_ROCK, 1, Moves.STEALTH_ROCK, 0); - game.override.enemySpecies(Species.CHARIZARD).enemyLevel(100); + game.scene.arena.addTag(ArenaTagType.STEALTH_ROCK, 1, MoveId.STEALTH_ROCK, 0); + game.override.enemySpecies(SpeciesId.CHARIZARD).enemyLevel(100); await game.challengeMode.startBattle(); @@ -107,14 +107,14 @@ describe("Inverse Battle", () => { }); it("Freeze Dry is 2x effective against Water Type like other Ice type Move - Freeze Dry against Squirtle", async () => { - game.override.moveset([Moves.FREEZE_DRY]).enemySpecies(Species.SQUIRTLE); + game.override.moveset([MoveId.FREEZE_DRY]).enemySpecies(SpeciesId.SQUIRTLE); await game.challengeMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -122,13 +122,13 @@ describe("Inverse Battle", () => { }); it("Water Absorb should heal against water moves - Water Absorb against Water gun", async () => { - game.override.moveset([Moves.WATER_GUN]).enemyAbility(Abilities.WATER_ABSORB); + game.override.moveset([MoveId.WATER_GUN]).enemyAbility(AbilityId.WATER_ABSORB); await game.challengeMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; enemy.hp = enemy.getMaxHp() - 1; - game.move.select(Moves.WATER_GUN); + game.move.select(MoveId.WATER_GUN); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -136,13 +136,13 @@ describe("Inverse Battle", () => { }); it("Fire type does not get burned - Will-O-Wisp against Charmander", async () => { - game.override.moveset([Moves.WILL_O_WISP]).enemySpecies(Species.CHARMANDER); + game.override.moveset([MoveId.WILL_O_WISP]).enemySpecies(SpeciesId.CHARMANDER); await game.challengeMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.WILL_O_WISP); + game.move.select(MoveId.WILL_O_WISP); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceHit(); await game.phaseInterceptor.to("MoveEndPhase"); @@ -151,13 +151,13 @@ describe("Inverse Battle", () => { }); it("Electric type does not get paralyzed - Nuzzle against Pikachu", async () => { - game.override.moveset([Moves.NUZZLE]).enemySpecies(Species.PIKACHU).enemyLevel(50); + game.override.moveset([MoveId.NUZZLE]).enemySpecies(SpeciesId.PIKACHU).enemyLevel(50); await game.challengeMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.NUZZLE); + game.move.select(MoveId.NUZZLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -165,13 +165,13 @@ describe("Inverse Battle", () => { }); it("Ground type is not immune to Thunder Wave - Thunder Wave against Sandshrew", async () => { - game.override.moveset([Moves.THUNDER_WAVE]).enemySpecies(Species.SANDSHREW); + game.override.moveset([MoveId.THUNDER_WAVE]).enemySpecies(SpeciesId.SANDSHREW); await game.challengeMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.THUNDER_WAVE); + game.move.select(MoveId.THUNDER_WAVE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceHit(); await game.phaseInterceptor.to("MoveEndPhase"); @@ -180,21 +180,21 @@ describe("Inverse Battle", () => { }); it("Anticipation should trigger on 2x effective moves", async () => { - game.override.moveset([Moves.THUNDERBOLT]).enemySpecies(Species.SANDSHREW).enemyAbility(Abilities.ANTICIPATION); + game.override.moveset([MoveId.THUNDERBOLT]).enemySpecies(SpeciesId.SANDSHREW).enemyAbility(AbilityId.ANTICIPATION); await game.challengeMode.startBattle(); - expect(game.scene.getEnemyPokemon()?.waveData.abilitiesApplied).toContain(Abilities.ANTICIPATION); + expect(game.scene.getEnemyPokemon()?.waveData.abilitiesApplied).toContain(AbilityId.ANTICIPATION); }); it("Conversion 2 should change the type to the resistive type - Conversion 2 against Dragonite", async () => { - game.override.moveset([Moves.CONVERSION_2]).enemyMoveset(Moves.DRAGON_CLAW); + game.override.moveset([MoveId.CONVERSION_2]).enemyMoveset(MoveId.DRAGON_CLAW); await game.challengeMode.startBattle(); const player = game.scene.getPlayerPokemon()!; - game.move.select(Moves.CONVERSION_2); + game.move.select(MoveId.CONVERSION_2); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); @@ -203,14 +203,14 @@ describe("Inverse Battle", () => { }); it("Flying Press should be 0.25x effective against Grass + Dark Type - Flying Press against Meowscarada", async () => { - game.override.moveset([Moves.FLYING_PRESS]).enemySpecies(Species.MEOWSCARADA); + game.override.moveset([MoveId.FLYING_PRESS]).enemySpecies(SpeciesId.MEOWSCARADA); await game.challengeMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FLYING_PRESS); + game.move.select(MoveId.FLYING_PRESS); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -218,14 +218,14 @@ describe("Inverse Battle", () => { }); it("Scrappy ability has no effect - Tackle against Ghost Type still 2x effective with Scrappy", async () => { - game.override.moveset([Moves.TACKLE]).ability(Abilities.SCRAPPY).enemySpecies(Species.GASTLY); + game.override.moveset([MoveId.TACKLE]).ability(AbilityId.SCRAPPY).enemySpecies(SpeciesId.GASTLY); await game.challengeMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -233,18 +233,18 @@ describe("Inverse Battle", () => { }); it("FORESIGHT has no effect - Tackle against Ghost Type still 2x effective with Foresight", async () => { - game.override.moveset([Moves.FORESIGHT, Moves.TACKLE]).enemySpecies(Species.GASTLY); + game.override.moveset([MoveId.FORESIGHT, MoveId.TACKLE]).enemySpecies(SpeciesId.GASTLY); await game.challengeMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FORESIGHT); + game.move.select(MoveId.FORESIGHT); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); diff --git a/test/battle/special_battle.test.ts b/test/battle/special_battle.test.ts index 8d75e530ca6..c1a948a0759 100644 --- a/test/battle/special_battle.test.ts +++ b/test/battle/special_battle.test.ts @@ -1,8 +1,8 @@ import { CommandPhase } from "#app/phases/command-phase"; import { UiMode } from "#enums/ui-mode"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,73 +24,73 @@ describe("Test Battle Phase", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .enemySpecies(Species.RATTATA) + .enemySpecies(SpeciesId.RATTATA) .startingLevel(2000) - .moveset([Moves.TACKLE]) - .enemyAbility(Abilities.HYDRATION) - .ability(Abilities.HYDRATION) - .enemyMoveset(Moves.TACKLE); + .moveset([MoveId.TACKLE]) + .enemyAbility(AbilityId.HYDRATION) + .ability(AbilityId.HYDRATION) + .enemyMoveset(MoveId.TACKLE); }); it("startBattle 2vs1 boss", async () => { game.override.battleStyle("single").startingWave(10); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs2 boss", async () => { game.override.battleStyle("double").startingWave(10); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs2 trainer", async () => { game.override.battleStyle("double").startingWave(5); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs1 trainer", async () => { game.override.battleStyle("single").startingWave(5); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs1 rival", async () => { game.override.battleStyle("single").startingWave(8); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs2 rival", async () => { game.override.battleStyle("double").startingWave(8); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 1vs1 trainer", async () => { game.override.battleStyle("single").startingWave(5); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs2 trainer", async () => { game.override.battleStyle("double").startingWave(5); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 4vs2 trainer", async () => { game.override.battleStyle("double").startingWave(5); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD, Species.DARKRAI, Species.GABITE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD, SpeciesId.DARKRAI, SpeciesId.GABITE]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); diff --git a/test/battlerTags/substitute.test.ts b/test/battlerTags/substitute.test.ts index 827b9f48f85..ce16cfdbcd9 100644 --- a/test/battlerTags/substitute.test.ts +++ b/test/battlerTags/substitute.test.ts @@ -4,7 +4,7 @@ import type Pokemon from "#app/field/pokemon"; import { MoveResult } from "#app/field/pokemon"; import type BattleScene from "#app/battle-scene"; import { BattlerTagLapseType, BindTag, SubstituteTag } from "#app/data/battler-tags"; -import { Moves } from "#app/enums/moves"; +import { MoveId } from "#enums/move-id"; import { PokemonAnimType } from "#app/enums/pokemon-anim-type"; import * as messages from "#app/messages"; import { allMoves } from "#app/data/data-lists"; @@ -52,7 +52,7 @@ describe("BattlerTag - SubstituteTag", () => { }); it("sets the tag's HP to 1/4 of the source's max HP (rounded down)", async () => { - const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); + const subject = new SubstituteTag(MoveId.SUBSTITUTE, mockPokemon.id); vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockReturnValue(true); vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); @@ -63,7 +63,7 @@ describe("BattlerTag - SubstituteTag", () => { }); it("triggers on-add effects that bring the source out of focus", async () => { - const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); + const subject = new SubstituteTag(MoveId.SUBSTITUTE, mockPokemon.id); vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockImplementation( (_pokemon, battleAnimType, _fieldAssets?, _delayed?) => { @@ -82,7 +82,7 @@ describe("BattlerTag - SubstituteTag", () => { }); it("removes effects that trap the source", async () => { - const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); + const subject = new SubstituteTag(MoveId.SUBSTITUTE, mockPokemon.id); vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); @@ -104,7 +104,7 @@ describe("BattlerTag - SubstituteTag", () => { }); it("triggers on-remove animation and message", async () => { - const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); + const subject = new SubstituteTag(MoveId.SUBSTITUTE, mockPokemon.id); subject.sourceInFocus = false; vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockImplementation( @@ -133,7 +133,7 @@ describe("BattlerTag - SubstituteTag", () => { getLastXMoves: vi .fn() .mockReturnValue([ - { move: Moves.TACKLE, result: MoveResult.SUCCESS } as TurnMove, + { move: MoveId.TACKLE, result: MoveResult.SUCCESS } as TurnMove, ]) as Pokemon["getLastXMoves"], } as unknown as Pokemon; @@ -141,7 +141,7 @@ describe("BattlerTag - SubstituteTag", () => { }); it("PRE_MOVE lapse triggers pre-move animation", async () => { - const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); + const subject = new SubstituteTag(MoveId.SUBSTITUTE, mockPokemon.id); vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockImplementation( (_pokemon, battleAnimType, _fieldAssets?, _delayed?) => { @@ -160,7 +160,7 @@ describe("BattlerTag - SubstituteTag", () => { }); it("AFTER_MOVE lapse triggers post-move animation", async () => { - const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); + const subject = new SubstituteTag(MoveId.SUBSTITUTE, mockPokemon.id); vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockImplementation( (_pokemon, battleAnimType, _fieldAssets?, _delayed?) => { @@ -180,18 +180,18 @@ describe("BattlerTag - SubstituteTag", () => { // TODO: Figure out how to mock a MoveEffectPhase correctly for this test it.todo("HIT lapse triggers on-hit message", async () => { - const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); + const subject = new SubstituteTag(MoveId.SUBSTITUTE, mockPokemon.id); vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockReturnValue(true); vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); const moveEffectPhase = { - move: allMoves[Moves.TACKLE], + move: allMoves[MoveId.TACKLE], getUserPokemon: vi.fn().mockReturnValue(undefined) as MoveEffectPhase["getUserPokemon"], } as MoveEffectPhase; vi.spyOn(mockPokemon.scene as BattleScene, "getCurrentPhase").mockReturnValue(moveEffectPhase); - vi.spyOn(allMoves[Moves.TACKLE], "hitsSubstitute").mockReturnValue(true); + vi.spyOn(allMoves[MoveId.TACKLE], "hitsSubstitute").mockReturnValue(true); expect(subject.lapse(mockPokemon, BattlerTagLapseType.HIT)).toBeTruthy(); @@ -200,7 +200,7 @@ describe("BattlerTag - SubstituteTag", () => { }); it("CUSTOM lapse flags the tag for removal", async () => { - const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); + const subject = new SubstituteTag(MoveId.SUBSTITUTE, mockPokemon.id); vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockReturnValue(true); vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); @@ -209,7 +209,7 @@ describe("BattlerTag - SubstituteTag", () => { }); it("Unsupported lapse type does nothing", async () => { - const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); + const subject = new SubstituteTag(MoveId.SUBSTITUTE, mockPokemon.id); vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockReturnValue(true); vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); diff --git a/test/boss-pokemon.test.ts b/test/boss-pokemon.test.ts index ef95ae9bcc2..fdfca9249f7 100644 --- a/test/boss-pokemon.test.ts +++ b/test/boss-pokemon.test.ts @@ -1,9 +1,9 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import { getPokemonSpecies } from "#app/data/pokemon-species"; -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#app/enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { EFFECTIVE_STATS } from "#app/enums/stat"; import type { EnemyPokemon } from "#app/field/pokemon"; import { toDmgValue } from "#app/utils/common"; @@ -29,12 +29,12 @@ describe("Boss Pokemon / Shields", () => { .battleStyle("single") .disableTrainerWaves() .disableCrits() - .enemySpecies(Species.RATTATA) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.RATTATA) + .enemyMoveset(MoveId.SPLASH) .enemyHeldItems([]) .startingLevel(1000) - .moveset([Moves.FALSE_SWIPE, Moves.SUPER_FANG, Moves.SPLASH, Moves.PSYCHIC]) - .ability(Abilities.NO_GUARD); + .moveset([MoveId.FALSE_SWIPE, MoveId.SUPER_FANG, MoveId.SPLASH, MoveId.PSYCHIC]) + .ability(AbilityId.NO_GUARD); }); it("Pokemon should get shields based on their Species and level and the current wave", async () => { @@ -42,30 +42,30 @@ describe("Boss Pokemon / Shields", () => { let wave = 5; // On normal waves, no shields... - expect(game.scene.getEncounterBossSegments(wave, level, getPokemonSpecies(Species.RATTATA))).toBe(0); + expect(game.scene.getEncounterBossSegments(wave, level, getPokemonSpecies(SpeciesId.RATTATA))).toBe(0); // ... expect (sub)-legendary and mythical Pokemon who always get shields - expect(game.scene.getEncounterBossSegments(wave, level, getPokemonSpecies(Species.MEW))).toBe(2); + expect(game.scene.getEncounterBossSegments(wave, level, getPokemonSpecies(SpeciesId.MEW))).toBe(2); // Pokemon with 670+ BST get an extra shield - expect(game.scene.getEncounterBossSegments(wave, level, getPokemonSpecies(Species.MEWTWO))).toBe(3); + expect(game.scene.getEncounterBossSegments(wave, level, getPokemonSpecies(SpeciesId.MEWTWO))).toBe(3); // Every 10 waves will always be a boss Pokemon with shield(s) wave = 50; - expect(game.scene.getEncounterBossSegments(wave, level, getPokemonSpecies(Species.RATTATA))).toBe(2); + expect(game.scene.getEncounterBossSegments(wave, level, getPokemonSpecies(SpeciesId.RATTATA))).toBe(2); // Every extra 250 waves adds a shield wave += 250; - expect(game.scene.getEncounterBossSegments(wave, level, getPokemonSpecies(Species.RATTATA))).toBe(3); + expect(game.scene.getEncounterBossSegments(wave, level, getPokemonSpecies(SpeciesId.RATTATA))).toBe(3); wave += 750; - expect(game.scene.getEncounterBossSegments(wave, level, getPokemonSpecies(Species.RATTATA))).toBe(6); + expect(game.scene.getEncounterBossSegments(wave, level, getPokemonSpecies(SpeciesId.RATTATA))).toBe(6); // Pokemon above level 100 get an extra shield level = 100; - expect(game.scene.getEncounterBossSegments(wave, level, getPokemonSpecies(Species.RATTATA))).toBe(7); + expect(game.scene.getEncounterBossSegments(wave, level, getPokemonSpecies(SpeciesId.RATTATA))).toBe(7); }); it("should reduce the number of shields if we are in a double battle", async () => { game.override.battleStyle("double").startingWave(150); // Floor 150 > 2 shields / 3 health segments - await game.classicMode.startBattle([Species.MEWTWO]); + await game.classicMode.startBattle([SpeciesId.MEWTWO]); const boss1: EnemyPokemon = game.scene.getEnemyParty()[0]!; const boss2: EnemyPokemon = game.scene.getEnemyParty()[1]!; @@ -78,7 +78,7 @@ describe("Boss Pokemon / Shields", () => { it("shields should stop overflow damage and give stat stage boosts when broken", async () => { game.override.startingWave(150); // Floor 150 > 2 shields / 3 health segments - await game.classicMode.startBattle([Species.MEWTWO]); + await game.classicMode.startBattle([SpeciesId.MEWTWO]); const enemyPokemon = game.scene.getEnemyPokemon()!; const segmentHp = enemyPokemon.getMaxHp() / enemyPokemon.bossSegments; @@ -86,7 +86,7 @@ describe("Boss Pokemon / Shields", () => { expect(enemyPokemon.bossSegments).toBe(3); expect(getTotalStatStageBoosts(enemyPokemon)).toBe(0); - game.move.select(Moves.SUPER_FANG); // Enough to break the first shield + game.move.select(MoveId.SUPER_FANG); // Enough to break the first shield await game.toNextTurn(); // Broke 1st of 2 shields, health at 2/3rd @@ -95,7 +95,7 @@ describe("Boss Pokemon / Shields", () => { // Breaking the shield gives a +1 boost to ATK, DEF, SP ATK, SP DEF or SPD expect(getTotalStatStageBoosts(enemyPokemon)).toBe(1); - game.move.select(Moves.FALSE_SWIPE); // Enough to break last shield but not kill + game.move.select(MoveId.FALSE_SWIPE); // Enough to break last shield but not kill await game.toNextTurn(); expect(enemyPokemon.bossSegmentIndex).toBe(0); @@ -107,7 +107,7 @@ describe("Boss Pokemon / Shields", () => { it("breaking multiple shields at once requires extra damage", async () => { game.override.battleStyle("double").enemyHealthSegments(5); - await game.classicMode.startBattle([Species.MEWTWO]); + await game.classicMode.startBattle([SpeciesId.MEWTWO]); // In this test we want to break through 3 shields at once const brokenShields = 3; @@ -142,7 +142,7 @@ describe("Boss Pokemon / Shields", () => { game.override.battleStyle("double").enemyHealthSegments(shieldsToBreak + 1); - await game.classicMode.startBattle([Species.MEWTWO]); + await game.classicMode.startBattle([SpeciesId.MEWTWO]); const boss1: EnemyPokemon = game.scene.getEnemyParty()[0]!; const boss1SegmentHp = boss1.getMaxHp() / boss1.bossSegments; @@ -160,7 +160,7 @@ describe("Boss Pokemon / Shields", () => { expect(boss1.bossSegmentIndex).toBe(shieldsToBreak - i); expect(boss1.hp).toBe(boss1.getMaxHp() - toDmgValue(boss1SegmentHp * i)); // Do nothing and go to next turn so that the StatStageChangePhase gets applied - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // All broken shields give +1 stat boost, except the last two that gives +2 totalStatStages += i >= shieldsToBreak - 1 ? 2 : 1; @@ -181,22 +181,22 @@ describe("Boss Pokemon / Shields", () => { expect(boss2.bossSegmentIndex).toBe(0); expect(boss2.hp).toBe(boss2.getMaxHp() - toDmgValue(boss2SegmentHp * shieldsToBreak)); // Do nothing and go to next turn so that the StatStageChangePhase gets applied - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(getTotalStatStageBoosts(boss2)).toBe(totalStatStages); }); it("the boss enduring does not proc an extra stat boost", async () => { - game.override.enemyHealthSegments(2).enemyAbility(Abilities.STURDY); + game.override.enemyHealthSegments(2).enemyAbility(AbilityId.STURDY); - await game.classicMode.startBattle([Species.MEWTWO]); + await game.classicMode.startBattle([SpeciesId.MEWTWO]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon.isBoss()).toBe(true); expect(enemyPokemon.bossSegments).toBe(2); expect(getTotalStatStageBoosts(enemyPokemon)).toBe(0); - game.move.select(Moves.PSYCHIC); + game.move.select(MoveId.PSYCHIC); await game.toNextTurn(); // Enemy survived with Sturdy diff --git a/test/daily_mode.test.ts b/test/daily_mode.test.ts index a5901da4821..41dcf51ccf6 100644 --- a/test/daily_mode.test.ts +++ b/test/daily_mode.test.ts @@ -1,9 +1,9 @@ -import { Biome } from "#app/enums/biome"; -import { Moves } from "#app/enums/moves"; +import { BiomeId } from "#enums/biome-id"; +import { MoveId } from "#enums/move-id"; import { MapModifier } from "#app/modifier/modifier"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import GameManager from "#test/testUtils/gameManager"; @@ -56,12 +56,12 @@ describe("Shop modifications", async () => { game.override .startingWave(9) - .startingBiome(Biome.ICE_CAVE) + .startingBiome(BiomeId.ICE_CAVE) .battleStyle("single") .startingLevel(100) // Avoid levelling up .disableTrainerWaves() - .moveset([Moves.SPLASH]) - .enemyMoveset(Moves.SPLASH); + .moveset([MoveId.SPLASH]) + .enemyMoveset(MoveId.SPLASH); game.modifiers.addCheck("EVIOLITE").addCheck("MINI_BLACK_HOLE"); vi.spyOn(pokerogueApi.daily, "getSeed").mockResolvedValue("test-seed"); }); @@ -72,8 +72,8 @@ describe("Shop modifications", async () => { }); it("should not have Eviolite and Mini Black Hole available in Classic if not unlocked", async () => { - await game.classicMode.startBattle([Species.BULBASAUR]); - game.move.select(Moves.SPLASH); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to("BattleEndPhase"); game.onNextPrompt("SelectModifierPhase", UiMode.MODIFIER_SELECT, () => { @@ -84,7 +84,7 @@ describe("Shop modifications", async () => { it("should have Eviolite and Mini Black Hole available in Daily", async () => { await game.dailyMode.startBattle(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to("BattleEndPhase"); game.onNextPrompt("SelectModifierPhase", UiMode.MODIFIER_SELECT, () => { diff --git a/test/data/status_effect.test.ts b/test/data/status_effect.test.ts index 111136bf0a2..4a543a04a1b 100644 --- a/test/data/status_effect.test.ts +++ b/test/data/status_effect.test.ts @@ -7,9 +7,9 @@ import { getStatusEffectOverlapText, } from "#app/data/status-effect"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import { mockI18next } from "#test/testUtils/testUtils"; @@ -319,18 +319,18 @@ describe("Status Effects", () => { game = new GameManager(phaserGame); game.override - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH) - .moveset([Moves.QUICK_ATTACK]) - .ability(Abilities.BALL_FETCH) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset([MoveId.QUICK_ATTACK]) + .ability(AbilityId.BALL_FETCH) .statusEffect(StatusEffect.PARALYSIS); }); it("causes the pokemon's move to fail when activated", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.QUICK_ATTACK); + game.move.select(MoveId.QUICK_ATTACK); await game.move.forceStatusActivation(true); await game.toNextTurn(); @@ -356,38 +356,38 @@ describe("Status Effects", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should last the appropriate number of turns", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const player = game.scene.getPlayerPokemon()!; player.status = new Status(StatusEffect.SLEEP, 0, 4); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(player.status.effect).toBe(StatusEffect.SLEEP); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(player.status.effect).toBe(StatusEffect.SLEEP); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(player.status.effect).toBe(StatusEffect.SLEEP); expect(player.getLastXMoves(1)[0].result).toBe(MoveResult.FAIL); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(player.status?.effect).toBeUndefined(); @@ -412,18 +412,18 @@ describe("Status Effects", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.NUZZLE) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.NUZZLE) .enemyLevel(2000); }); it("should not inflict a 0 HP mon with a status", async () => { - await game.classicMode.startBattle([Species.FEEBAS, Species.MILOTIC]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MILOTIC]); const player = game.scene.getPlayerPokemon()!; player.hp = 0; diff --git a/test/eggs/egg.test.ts b/test/eggs/egg.test.ts index 0110aa5fdaf..e37a7c00aa9 100644 --- a/test/eggs/egg.test.ts +++ b/test/eggs/egg.test.ts @@ -6,7 +6,7 @@ import { EggTier } from "#app/enums/egg-type"; import { VariantTier } from "#app/enums/variant-tier"; import EggData from "#app/system/egg-data"; import * as Utils from "#app/utils/common"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -34,7 +34,7 @@ describe("Egg Generation Tests", () => { it("should return Kyogre for the 10th of June", () => { const timestamp = new Date(2024, 5, 10, 15, 0, 0, 0).getTime(); - const expectedSpecies = Species.KYOGRE; + const expectedSpecies = SpeciesId.KYOGRE; const result = getLegendaryGachaSpeciesForTimestamp(timestamp); @@ -42,7 +42,7 @@ describe("Egg Generation Tests", () => { }); it("should return Kyogre for the 10th of July", () => { const timestamp = new Date(2024, 6, 10, 15, 0, 0, 0).getTime(); - const expectedSpecies = Species.KYOGRE; + const expectedSpecies = SpeciesId.KYOGRE; const result = getLegendaryGachaSpeciesForTimestamp(timestamp); @@ -51,7 +51,7 @@ describe("Egg Generation Tests", () => { it("should hatch a Kyogre around half the time. Set from legendary gacha", async () => { const scene = game.scene; const timestamp = new Date(2024, 6, 10, 15, 0, 0, 0).getTime(); - const expectedSpecies = Species.KYOGRE; + const expectedSpecies = SpeciesId.KYOGRE; let gachaSpeciesCount = 0; for (let i = 0; i < EGG_HATCH_COUNT; i++) { @@ -73,11 +73,11 @@ describe("Egg Generation Tests", () => { const validLegendaryGachaSpecies = getValidLegendaryGachaSpecies(); expect(validLegendaryGachaSpecies.every(s => speciesEggTiers[s] === EggTier.LEGENDARY)).toBe(true); expect(validLegendaryGachaSpecies.every(s => allSpecies[s].isObtainable())).toBe(true); - expect(validLegendaryGachaSpecies.includes(Species.ETERNATUS)).toBe(false); + expect(validLegendaryGachaSpecies.includes(SpeciesId.ETERNATUS)).toBe(false); }); it("should hatch an Arceus. Set from species", () => { const scene = game.scene; - const expectedSpecies = Species.ARCEUS; + const expectedSpecies = SpeciesId.ARCEUS; const result = new Egg({ scene, @@ -122,7 +122,7 @@ describe("Egg Generation Tests", () => { const scene = game.scene; const expectedResult = true; - const result = new Egg({ scene, species: Species.MANAPHY }).isManaphyEgg(); + const result = new Egg({ scene, species: SpeciesId.MANAPHY }).isManaphyEgg(); expect(result).toBe(expectedResult); }); @@ -153,7 +153,7 @@ describe("Egg Generation Tests", () => { const result = new Egg({ scene, isShiny: expectedResult, - species: Species.BULBASAUR, + species: SpeciesId.BULBASAUR, }) .generatePlayerPokemon() .isShiny(); @@ -168,7 +168,7 @@ describe("Egg Generation Tests", () => { scene, isShiny: true, variantTier: expectedVariantTier, - species: Species.BULBASAUR, + species: SpeciesId.BULBASAUR, }).generatePlayerPokemon().variant; expect(result).toBe(expectedVariantTier); @@ -181,7 +181,7 @@ describe("Egg Generation Tests", () => { scene, isShiny: true, variantTier: expectedVariantTier, - species: Species.BULBASAUR, + species: SpeciesId.BULBASAUR, }).generatePlayerPokemon().variant; expect(result).toBe(expectedVariantTier); @@ -194,7 +194,7 @@ describe("Egg Generation Tests", () => { scene, isShiny: true, variantTier: expectedVariantTier, - species: Species.BULBASAUR, + species: SpeciesId.BULBASAUR, }).generatePlayerPokemon().variant; expect(result).toBe(expectedVariantTier); @@ -221,7 +221,7 @@ describe("Egg Generation Tests", () => { const playerPokemon = new Egg({ scene, overrideHiddenAbility: true, - species: Species.BULBASAUR, + species: SpeciesId.BULBASAUR, }).generatePlayerPokemon(); const expectedAbilityIndex = playerPokemon.species.ability2 ? 2 : 1; @@ -246,7 +246,7 @@ describe("Egg Generation Tests", () => { const result = new Egg({ scene, tier: EggTier.LEGENDARY, - species: Species.BULBASAUR, + species: SpeciesId.BULBASAUR, }).tier; expect(result).toBe(expectedEggTier); @@ -258,7 +258,7 @@ describe("Egg Generation Tests", () => { const result = new Egg({ scene, tier: EggTier.LEGENDARY, - species: Species.BULBASAUR, + species: SpeciesId.BULBASAUR, }).hatchWaves; expect(result).toBe(expectedHatchWaves); @@ -325,7 +325,7 @@ describe("Egg Generation Tests", () => { scene, sourceType: EggSourceType.GACHA_MOVE, pulled: true, - species: Species.BULBASAUR, + species: SpeciesId.BULBASAUR, }); } @@ -412,7 +412,7 @@ describe("Egg Generation Tests", () => { scene, isShiny: true, variantTier: VariantTier.EPIC, - species: Species.MIRAIDON, + species: SpeciesId.MIRAIDON, }); expect(egg.variantTier).toBe(VariantTier.EPIC); @@ -461,7 +461,7 @@ describe("Egg Generation Tests", () => { scene.setSeed("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); scene.resetSeed(); - const firstEgg = new Egg({ scene, species: Species.BULBASAUR }); + const firstEgg = new Egg({ scene, species: SpeciesId.BULBASAUR }); const firstHatch = firstEgg.generatePlayerPokemon(); let diffEggMove = false; let diffSpecies = false; @@ -471,7 +471,7 @@ describe("Egg Generation Tests", () => { scene.setSeed("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); scene.resetSeed(); // Make sure that eggs are unpredictable even if using same seed - const newEgg = new Egg({ scene, species: Species.BULBASAUR }); + const newEgg = new Egg({ scene, species: SpeciesId.BULBASAUR }); const newHatch = newEgg.generatePlayerPokemon(); diffEggMove = diffEggMove || newEgg.eggMoveIndex !== firstEgg.eggMoveIndex; diffSpecies = diffSpecies || newHatch.species.speciesId !== firstHatch.species.speciesId; diff --git a/test/eggs/manaphy-egg.test.ts b/test/eggs/manaphy-egg.test.ts index 1e7f67a7bb5..4dc38ef10b6 100644 --- a/test/eggs/manaphy-egg.test.ts +++ b/test/eggs/manaphy-egg.test.ts @@ -1,7 +1,7 @@ import { Egg } from "#app/data/egg"; import { EggSourceType } from "#app/enums/egg-source-types"; import { EggTier } from "#app/enums/egg-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -54,9 +54,9 @@ describe("Manaphy Eggs", () => { id: 204, }); const newHatch = newEgg.generatePlayerPokemon(); - if (newHatch.species.speciesId === Species.MANAPHY) { + if (newHatch.species.speciesId === SpeciesId.MANAPHY) { manaphyCount++; - } else if (newHatch.species.speciesId === Species.PHIONE) { + } else if (newHatch.species.speciesId === SpeciesId.PHIONE) { phioneCount++; } if (newEgg.eggMoveIndex === 3) { @@ -80,13 +80,13 @@ describe("Manaphy Eggs", () => { const newEgg = new Egg({ scene, - species: Species.PHIONE, + species: SpeciesId.PHIONE, sourceType: EggSourceType.SAME_SPECIES_EGG, }); const newHatch = newEgg.generatePlayerPokemon(); - if (newHatch.species.speciesId === Species.MANAPHY) { + if (newHatch.species.speciesId === SpeciesId.MANAPHY) { manaphyCount++; - } else if (newHatch.species.speciesId === Species.PHIONE) { + } else if (newHatch.species.speciesId === SpeciesId.PHIONE) { phioneCount++; } if (newEgg.eggMoveIndex === 3) { @@ -110,13 +110,13 @@ describe("Manaphy Eggs", () => { const newEgg = new Egg({ scene, - species: Species.MANAPHY, + species: SpeciesId.MANAPHY, sourceType: EggSourceType.SAME_SPECIES_EGG, }); const newHatch = newEgg.generatePlayerPokemon(); - if (newHatch.species.speciesId === Species.MANAPHY) { + if (newHatch.species.speciesId === SpeciesId.MANAPHY) { manaphyCount++; - } else if (newHatch.species.speciesId === Species.PHIONE) { + } else if (newHatch.species.speciesId === SpeciesId.PHIONE) { phioneCount++; } if (newEgg.eggMoveIndex === 3) { diff --git a/test/endless_boss.test.ts b/test/endless_boss.test.ts index 4be1e379215..05c6594bad6 100644 --- a/test/endless_boss.test.ts +++ b/test/endless_boss.test.ts @@ -1,5 +1,5 @@ -import { Biome } from "#app/enums/biome"; -import { Species } from "#app/enums/species"; +import { BiomeId } from "#enums/biome-id"; +import { SpeciesId } from "#enums/species-id"; import { GameModes } from "#app/game-mode"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import GameManager from "#test/testUtils/gameManager"; @@ -21,7 +21,7 @@ describe("Endless Boss", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.startingBiome(Biome.END).disableCrits(); + game.override.startingBiome(BiomeId.END).disableCrits(); }); afterEach(() => { @@ -30,57 +30,57 @@ describe("Endless Boss", () => { it(`should spawn a minor boss every ${EndlessBossWave.Minor} waves in END biome in Endless`, async () => { game.override.startingWave(EndlessBossWave.Minor); - await game.runToFinalBossEncounter([Species.BIDOOF], GameModes.ENDLESS); + await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.ENDLESS); expect(game.scene.currentBattle.waveIndex).toBe(EndlessBossWave.Minor); - expect(game.scene.arena.biomeType).toBe(Biome.END); + expect(game.scene.arena.biomeType).toBe(BiomeId.END); const eternatus = game.scene.getEnemyPokemon(); - expect(eternatus?.species.speciesId).toBe(Species.ETERNATUS); + expect(eternatus?.species.speciesId).toBe(SpeciesId.ETERNATUS); expect(eternatus?.hasPassive()).toBe(false); expect(eternatus?.formIndex).toBe(0); }); it(`should spawn a major boss every ${EndlessBossWave.Major} waves in END biome in Endless`, async () => { game.override.startingWave(EndlessBossWave.Major); - await game.runToFinalBossEncounter([Species.BIDOOF], GameModes.ENDLESS); + await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.ENDLESS); expect(game.scene.currentBattle.waveIndex).toBe(EndlessBossWave.Major); - expect(game.scene.arena.biomeType).toBe(Biome.END); + expect(game.scene.arena.biomeType).toBe(BiomeId.END); const eternatus = game.scene.getEnemyPokemon(); - expect(eternatus?.species.speciesId).toBe(Species.ETERNATUS); + expect(eternatus?.species.speciesId).toBe(SpeciesId.ETERNATUS); expect(eternatus?.hasPassive()).toBe(false); expect(eternatus?.formIndex).toBe(1); }); it(`should spawn a minor boss every ${EndlessBossWave.Minor} waves in END biome in Spliced Endless`, async () => { game.override.startingWave(EndlessBossWave.Minor); - await game.runToFinalBossEncounter([Species.BIDOOF], GameModes.SPLICED_ENDLESS); + await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.SPLICED_ENDLESS); expect(game.scene.currentBattle.waveIndex).toBe(EndlessBossWave.Minor); - expect(game.scene.arena.biomeType).toBe(Biome.END); + expect(game.scene.arena.biomeType).toBe(BiomeId.END); const eternatus = game.scene.getEnemyPokemon(); - expect(eternatus?.species.speciesId).toBe(Species.ETERNATUS); + expect(eternatus?.species.speciesId).toBe(SpeciesId.ETERNATUS); expect(eternatus?.hasPassive()).toBe(false); expect(eternatus?.formIndex).toBe(0); }); it(`should spawn a major boss every ${EndlessBossWave.Major} waves in END biome in Spliced Endless`, async () => { game.override.startingWave(EndlessBossWave.Major); - await game.runToFinalBossEncounter([Species.BIDOOF], GameModes.SPLICED_ENDLESS); + await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.SPLICED_ENDLESS); expect(game.scene.currentBattle.waveIndex).toBe(EndlessBossWave.Major); - expect(game.scene.arena.biomeType).toBe(Biome.END); + expect(game.scene.arena.biomeType).toBe(BiomeId.END); const eternatus = game.scene.getEnemyPokemon(); - expect(eternatus?.species.speciesId).toBe(Species.ETERNATUS); + expect(eternatus?.species.speciesId).toBe(SpeciesId.ETERNATUS); expect(eternatus?.hasPassive()).toBe(false); expect(eternatus?.formIndex).toBe(1); }); it(`should NOT spawn major or minor boss outside wave ${EndlessBossWave.Minor}s in END biome`, async () => { game.override.startingWave(EndlessBossWave.Minor - 1); - await game.runToFinalBossEncounter([Species.BIDOOF], GameModes.ENDLESS); + await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.ENDLESS); expect(game.scene.currentBattle.waveIndex).not.toBe(EndlessBossWave.Minor); - expect(game.scene.getEnemyPokemon()!.species.speciesId).not.toBe(Species.ETERNATUS); + expect(game.scene.getEnemyPokemon()!.species.speciesId).not.toBe(SpeciesId.ETERNATUS); }); }); diff --git a/test/enemy_command.test.ts b/test/enemy_command.test.ts index e5199847702..8d6d1756a69 100644 --- a/test/enemy_command.test.ts +++ b/test/enemy_command.test.ts @@ -1,9 +1,9 @@ import type BattleScene from "#app/battle-scene"; import { allMoves } from "#app/data/data-lists"; import { MoveCategory } from "#enums/MoveCategory"; -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import type { EnemyPokemon } from "#app/field/pokemon"; import { AiType } from "#app/field/pokemon"; import { randSeedInt } from "#app/utils/common"; @@ -49,17 +49,17 @@ describe("Enemy Commands - Move Selection", () => { game = new GameManager(phaserGame); globalScene = game.scene; - game.override.ability(Abilities.BALL_FETCH).enemyAbility(Abilities.BALL_FETCH); + game.override.ability(AbilityId.BALL_FETCH).enemyAbility(AbilityId.BALL_FETCH); }); it("should never use Status moves if an attack can KO", async () => { game.override - .enemySpecies(Species.ETERNATUS) - .enemyMoveset([Moves.ETERNABEAM, Moves.SLUDGE_BOMB, Moves.DRAGON_DANCE, Moves.COSMIC_POWER]) + .enemySpecies(SpeciesId.ETERNATUS) + .enemyMoveset([MoveId.ETERNABEAM, MoveId.SLUDGE_BOMB, MoveId.DRAGON_DANCE, MoveId.COSMIC_POWER]) .startingLevel(1) .enemyLevel(100); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemyPokemon = game.scene.getEnemyPokemon()!; enemyPokemon.aiType = AiType.SMART_RANDOM; @@ -78,12 +78,12 @@ describe("Enemy Commands - Move Selection", () => { it("should not select Last Resort if it would fail, even if the move KOs otherwise", async () => { game.override - .enemySpecies(Species.KANGASKHAN) - .enemyMoveset([Moves.LAST_RESORT, Moves.GIGA_IMPACT, Moves.SPLASH, Moves.SWORDS_DANCE]) + .enemySpecies(SpeciesId.KANGASKHAN) + .enemyMoveset([MoveId.LAST_RESORT, MoveId.GIGA_IMPACT, MoveId.SPLASH, MoveId.SWORDS_DANCE]) .startingLevel(1) .enemyLevel(100); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemyPokemon = game.scene.getEnemyPokemon()!; enemyPokemon.aiType = AiType.SMART_RANDOM; @@ -94,7 +94,7 @@ describe("Enemy Commands - Move Selection", () => { getEnemyMoveChoices(enemyPokemon, moveChoices); enemyMoveset.forEach(mv => { - if (mv?.getMove().category === MoveCategory.STATUS || mv?.moveId === Moves.LAST_RESORT) { + if (mv?.getMove().category === MoveCategory.STATUS || mv?.moveId === MoveId.LAST_RESORT) { expect(moveChoices[mv.moveId]).toBe(0); } }); diff --git a/test/escape-calculations.test.ts b/test/escape-calculations.test.ts index 56333432cee..854274eb948 100644 --- a/test/escape-calculations.test.ts +++ b/test/escape-calculations.test.ts @@ -2,8 +2,8 @@ import { AttemptRunPhase } from "#app/phases/attempt-run-phase"; import type { CommandPhase } from "#app/phases/command-phase"; import { Command } from "#app/ui/command-ui-handler"; import { NumberHolder } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -26,13 +26,13 @@ describe("Escape chance calculations", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.BULBASAUR) - .enemyAbility(Abilities.INSOMNIA) - .ability(Abilities.INSOMNIA); + .enemySpecies(SpeciesId.BULBASAUR) + .enemyAbility(AbilityId.INSOMNIA) + .ability(AbilityId.INSOMNIA); }); it("single non-boss opponent", async () => { - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const playerPokemon = game.scene.getPlayerField(); const enemyField = game.scene.getEnemyField(); @@ -98,7 +98,7 @@ describe("Escape chance calculations", () => { it("double non-boss opponent", async () => { game.override.battleStyle("double"); - await game.classicMode.startBattle([Species.BULBASAUR, Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.ABOMASNOW]); const playerPokemon = game.scene.getPlayerField(); const enemyField = game.scene.getEnemyField(); @@ -184,7 +184,7 @@ describe("Escape chance calculations", () => { it("single boss opponent", async () => { game.override.startingWave(10); - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const playerPokemon = game.scene.getPlayerField()!; const enemyField = game.scene.getEnemyField()!; @@ -264,7 +264,7 @@ describe("Escape chance calculations", () => { it("double boss opponent", async () => { game.override.battleStyle("double"); game.override.startingWave(10); - await game.classicMode.startBattle([Species.BULBASAUR, Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.ABOMASNOW]); const playerPokemon = game.scene.getPlayerField(); const enemyField = game.scene.getEnemyField(); diff --git a/test/evolution.test.ts b/test/evolution.test.ts index a453d744da8..b2e7a9243d0 100644 --- a/test/evolution.test.ts +++ b/test/evolution.test.ts @@ -3,9 +3,9 @@ import { SpeciesFormEvolution, SpeciesWildEvolutionDelay, } from "#app/data/balance/pokemon-evolutions"; -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import * as Utils from "#app/utils/common"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -30,61 +30,61 @@ describe("Evolution", () => { game.override.battleStyle("single"); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyAbility(Abilities.BALL_FETCH); + game.override.enemySpecies(SpeciesId.MAGIKARP); + game.override.enemyAbility(AbilityId.BALL_FETCH); game.override.startingLevel(60); }); it("should keep hidden ability after evolving", async () => { - await game.classicMode.runToSummon([Species.EEVEE, Species.TRAPINCH]); + await game.classicMode.runToSummon([SpeciesId.EEVEE, SpeciesId.TRAPINCH]); const eevee = game.scene.getPlayerParty()[0]; const trapinch = game.scene.getPlayerParty()[1]; eevee.abilityIndex = 2; trapinch.abilityIndex = 2; - await eevee.evolve(pokemonEvolutions[Species.EEVEE][6], eevee.getSpeciesForm()); + await eevee.evolve(pokemonEvolutions[SpeciesId.EEVEE][6], eevee.getSpeciesForm()); expect(eevee.abilityIndex).toBe(2); - await trapinch.evolve(pokemonEvolutions[Species.TRAPINCH][0], trapinch.getSpeciesForm()); + await trapinch.evolve(pokemonEvolutions[SpeciesId.TRAPINCH][0], trapinch.getSpeciesForm()); expect(trapinch.abilityIndex).toBe(1); }); it("should keep same ability slot after evolving", async () => { - await game.classicMode.runToSummon([Species.BULBASAUR, Species.CHARMANDER]); + await game.classicMode.runToSummon([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER]); const bulbasaur = game.scene.getPlayerParty()[0]; const charmander = game.scene.getPlayerParty()[1]; bulbasaur.abilityIndex = 0; charmander.abilityIndex = 1; - await bulbasaur.evolve(pokemonEvolutions[Species.BULBASAUR][0], bulbasaur.getSpeciesForm()); + await bulbasaur.evolve(pokemonEvolutions[SpeciesId.BULBASAUR][0], bulbasaur.getSpeciesForm()); expect(bulbasaur.abilityIndex).toBe(0); - await charmander.evolve(pokemonEvolutions[Species.CHARMANDER][0], charmander.getSpeciesForm()); + await charmander.evolve(pokemonEvolutions[SpeciesId.CHARMANDER][0], charmander.getSpeciesForm()); expect(charmander.abilityIndex).toBe(1); }); it("should handle illegal abilityIndex values", async () => { - await game.classicMode.runToSummon([Species.SQUIRTLE]); + await game.classicMode.runToSummon([SpeciesId.SQUIRTLE]); const squirtle = game.scene.getPlayerPokemon()!; squirtle.abilityIndex = 5; - await squirtle.evolve(pokemonEvolutions[Species.SQUIRTLE][0], squirtle.getSpeciesForm()); + await squirtle.evolve(pokemonEvolutions[SpeciesId.SQUIRTLE][0], squirtle.getSpeciesForm()); expect(squirtle.abilityIndex).toBe(0); }); it("should handle nincada's unique evolution", async () => { - await game.classicMode.runToSummon([Species.NINCADA]); + await game.classicMode.runToSummon([SpeciesId.NINCADA]); const nincada = game.scene.getPlayerPokemon()!; nincada.abilityIndex = 2; nincada.metBiome = -1; nincada.gender = 1; - await nincada.evolve(pokemonEvolutions[Species.NINCADA][0], nincada.getSpeciesForm()); + await nincada.evolve(pokemonEvolutions[SpeciesId.NINCADA][0], nincada.getSpeciesForm()); const ninjask = game.scene.getPlayerParty()[0]; const shedinja = game.scene.getPlayerParty()[1]; expect(ninjask.abilityIndex).toBe(2); @@ -96,21 +96,21 @@ describe("Evolution", () => { }); it("should set wild delay to NONE by default", () => { - const speciesFormEvo = new SpeciesFormEvolution(Species.ABRA, null, null, 1000, null, null); + const speciesFormEvo = new SpeciesFormEvolution(SpeciesId.ABRA, null, null, 1000, null, null); expect(speciesFormEvo.wildDelay).toBe(SpeciesWildEvolutionDelay.NONE); }); it("should increase both HP and max HP when evolving", async () => { game.override - .moveset([Moves.SURF]) - .enemySpecies(Species.GOLEM) - .enemyMoveset(Moves.SPLASH) + .moveset([MoveId.SURF]) + .enemySpecies(SpeciesId.GOLEM) + .enemyMoveset(MoveId.SPLASH) .startingWave(21) .startingLevel(16) .enemyLevel(50); - await game.classicMode.startBattle([Species.TOTODILE]); + await game.classicMode.startBattle([SpeciesId.TOTODILE]); const totodile = game.scene.getPlayerPokemon()!; const hpBefore = totodile.hp; @@ -122,7 +122,7 @@ describe("Evolution", () => { expect(golem.hp).toBe(1); - game.move.select(Moves.SURF); + game.move.select(MoveId.SURF); await game.phaseInterceptor.to("EndEvolutionPhase"); expect(totodile.hp).toBe(totodile.getMaxHp()); @@ -131,14 +131,14 @@ describe("Evolution", () => { it("should not fully heal HP when evolving", async () => { game.override - .moveset([Moves.SURF]) - .enemySpecies(Species.GOLEM) - .enemyMoveset(Moves.SPLASH) + .moveset([MoveId.SURF]) + .enemySpecies(SpeciesId.GOLEM) + .enemyMoveset(MoveId.SPLASH) .startingWave(21) .startingLevel(13) .enemyLevel(30); - await game.classicMode.startBattle([Species.CYNDAQUIL]); + await game.classicMode.startBattle([SpeciesId.CYNDAQUIL]); const cyndaquil = game.scene.getPlayerPokemon()!; cyndaquil.hp = Math.floor(cyndaquil.getMaxHp() / 2); @@ -152,7 +152,7 @@ describe("Evolution", () => { expect(golem.hp).toBe(1); - game.move.select(Moves.SURF); + game.move.select(MoveId.SURF); await game.phaseInterceptor.to("EndEvolutionPhase"); expect(cyndaquil.getMaxHp()).toBeGreaterThan(maxHpBefore); @@ -171,7 +171,7 @@ describe("Evolution", () => { * If the value is 0, it's a 3 family maushold, whereas if the value is * 1, 2 or 3, it's a 4 family maushold */ - await game.classicMode.startBattle([Species.TANDEMAUS]); // starts us off with a tandemaus + await game.classicMode.startBattle([SpeciesId.TANDEMAUS]); // starts us off with a tandemaus const playerPokemon = game.scene.getPlayerPokemon()!; playerPokemon.level = 25; // tandemaus evolves at level 25 vi.spyOn(Utils, "randSeedInt").mockReturnValue(0); // setting the random generator to be 0 to force a three family maushold diff --git a/test/field/pokemon.test.ts b/test/field/pokemon.test.ts index f763ab2c401..74ad973b51d 100644 --- a/test/field/pokemon.test.ts +++ b/test/field/pokemon.test.ts @@ -1,9 +1,9 @@ -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import GameManager from "#test/testUtils/gameManager"; import { PokeballType } from "#enums/pokeball"; import type BattleScene from "#app/battle-scene"; -import { Moves } from "#app/enums/moves"; +import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; import { CustomPokemonData } from "#app/data/custom-pokemon-data"; @@ -26,7 +26,7 @@ describe("Spec - Pokemon", () => { }); it("should not crash when trying to set status of undefined", async () => { - await game.classicMode.runToSummon([Species.ABRA]); + await game.classicMode.runToSummon([SpeciesId.ABRA]); const pkm = game.scene.getPlayerPokemon()!; expect(pkm).toBeDefined(); @@ -38,8 +38,14 @@ describe("Spec - Pokemon", () => { let scene: BattleScene; beforeEach(async () => { - game.override.enemySpecies(Species.ZUBAT); - await game.classicMode.runToSummon([Species.ABRA, Species.ABRA, Species.ABRA, Species.ABRA, Species.ABRA]); // 5 Abra, only 1 slot left + game.override.enemySpecies(SpeciesId.ZUBAT); + await game.classicMode.runToSummon([ + SpeciesId.ABRA, + SpeciesId.ABRA, + SpeciesId.ABRA, + SpeciesId.ABRA, + SpeciesId.ABRA, + ]); // 5 Abra, only 1 slot left scene = game.scene; }); @@ -50,7 +56,7 @@ describe("Spec - Pokemon", () => { const party = scene.getPlayerParty(); expect(party).toHaveLength(6); party.forEach((pkm, index) => { - expect(pkm.species.speciesId).toBe(index === 5 ? Species.ZUBAT : Species.ABRA); + expect(pkm.species.speciesId).toBe(index === 5 ? SpeciesId.ZUBAT : SpeciesId.ABRA); }); }); @@ -62,34 +68,34 @@ describe("Spec - Pokemon", () => { const party = scene.getPlayerParty(); expect(party).toHaveLength(6); party.forEach((pkm, index) => { - expect(pkm.species.speciesId).toBe(index === slotIndex ? Species.ZUBAT : Species.ABRA); + expect(pkm.species.speciesId).toBe(index === slotIndex ? SpeciesId.ZUBAT : SpeciesId.ABRA); }); }); }); it("should not share tms between different forms", async () => { - game.override.starterForms({ [Species.ROTOM]: 4 }); + game.override.starterForms({ [SpeciesId.ROTOM]: 4 }); - await game.classicMode.startBattle([Species.ROTOM]); + await game.classicMode.startBattle([SpeciesId.ROTOM]); const fanRotom = game.scene.getPlayerPokemon()!; - expect(fanRotom.compatibleTms).not.toContain(Moves.BLIZZARD); - expect(fanRotom.compatibleTms).toContain(Moves.AIR_SLASH); + expect(fanRotom.compatibleTms).not.toContain(MoveId.BLIZZARD); + expect(fanRotom.compatibleTms).toContain(MoveId.AIR_SLASH); }); describe("Get correct fusion type", () => { let scene: BattleScene; beforeEach(async () => { - game.override.enemySpecies(Species.ZUBAT); - game.override.starterSpecies(Species.ABRA); + game.override.enemySpecies(SpeciesId.ZUBAT); + game.override.starterSpecies(SpeciesId.ABRA); game.override.enableStarterFusion(); scene = game.scene; }); it("Fusing two mons with a single type", async () => { - game.override.starterFusionSpecies(Species.CHARMANDER); + game.override.starterFusionSpecies(SpeciesId.CHARMANDER); await game.classicMode.startBattle(); const pokemon = scene.getPlayerParty()[0]; @@ -130,7 +136,7 @@ describe("Spec - Pokemon", () => { }); it("Fusing two mons with same single type", async () => { - game.override.starterFusionSpecies(Species.DROWZEE); + game.override.starterFusionSpecies(SpeciesId.DROWZEE); await game.classicMode.startBattle(); const pokemon = scene.getPlayerParty()[0]; @@ -140,8 +146,8 @@ describe("Spec - Pokemon", () => { }); it("Fusing mons with one and two types", async () => { - game.override.starterSpecies(Species.CHARMANDER); - game.override.starterFusionSpecies(Species.HOUNDOUR); + game.override.starterSpecies(SpeciesId.CHARMANDER); + game.override.starterFusionSpecies(SpeciesId.HOUNDOUR); await game.classicMode.startBattle(); const pokemon = scene.getPlayerParty()[0]; @@ -151,8 +157,8 @@ describe("Spec - Pokemon", () => { }); it("Fusing mons with two and one types", async () => { - game.override.starterSpecies(Species.NUMEL); - game.override.starterFusionSpecies(Species.CHARMANDER); + game.override.starterSpecies(SpeciesId.NUMEL); + game.override.starterFusionSpecies(SpeciesId.CHARMANDER); await game.classicMode.startBattle(); const pokemon = scene.getPlayerParty()[0]; @@ -162,8 +168,8 @@ describe("Spec - Pokemon", () => { }); it("Fusing two mons with two types", async () => { - game.override.starterSpecies(Species.NATU); - game.override.starterFusionSpecies(Species.HOUNDOUR); + game.override.starterSpecies(SpeciesId.NATU); + game.override.starterFusionSpecies(SpeciesId.HOUNDOUR); await game.classicMode.startBattle(); const pokemon = scene.getPlayerParty()[0]; @@ -214,7 +220,7 @@ describe("Spec - Pokemon", () => { "should set minimum IVs for enemy trainer pokemon based on wave (%i)", async wave => { game.override.startingWave(wave); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const { waveIndex } = game.scene.currentBattle; for (const pokemon of game.scene.getEnemyParty()) { diff --git a/test/final_boss.test.ts b/test/final_boss.test.ts index 1b0cdce60a0..f1f894a5984 100644 --- a/test/final_boss.test.ts +++ b/test/final_boss.test.ts @@ -1,9 +1,9 @@ import { GameModes } from "#app/game-mode"; import { TurnHeldItemTransferModifier } from "#app/modifier/modifier"; -import { Abilities } from "#enums/abilities"; -import { Biome } from "#enums/biome"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { BiomeId } from "#enums/biome-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -26,10 +26,10 @@ describe("Final Boss", () => { game = new GameManager(phaserGame); game.override .startingWave(FinalWave.Classic) - .startingBiome(Biome.END) + .startingBiome(BiomeId.END) .disableCrits() - .enemyMoveset(Moves.SPLASH) - .moveset([Moves.SPLASH, Moves.WILL_O_WISP, Moves.DRAGON_PULSE]) + .enemyMoveset(MoveId.SPLASH) + .moveset([MoveId.SPLASH, MoveId.WILL_O_WISP, MoveId.DRAGON_PULSE]) .startingLevel(10000); }); @@ -38,56 +38,56 @@ describe("Final Boss", () => { }); it("should spawn Eternatus on wave 200 in END biome", async () => { - await game.runToFinalBossEncounter([Species.BIDOOF], GameModes.CLASSIC); + await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.CLASSIC); expect(game.scene.currentBattle.waveIndex).toBe(FinalWave.Classic); - expect(game.scene.arena.biomeType).toBe(Biome.END); - expect(game.scene.getEnemyPokemon()!.species.speciesId).toBe(Species.ETERNATUS); + expect(game.scene.arena.biomeType).toBe(BiomeId.END); + expect(game.scene.getEnemyPokemon()!.species.speciesId).toBe(SpeciesId.ETERNATUS); }); it("should NOT spawn Eternatus before wave 200 in END biome", async () => { game.override.startingWave(FinalWave.Classic - 1); - await game.runToFinalBossEncounter([Species.BIDOOF], GameModes.CLASSIC); + await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.CLASSIC); expect(game.scene.currentBattle.waveIndex).not.toBe(FinalWave.Classic); - expect(game.scene.arena.biomeType).toBe(Biome.END); - expect(game.scene.getEnemyPokemon()!.species.speciesId).not.toBe(Species.ETERNATUS); + expect(game.scene.arena.biomeType).toBe(BiomeId.END); + expect(game.scene.getEnemyPokemon()!.species.speciesId).not.toBe(SpeciesId.ETERNATUS); }); it("should NOT spawn Eternatus outside of END biome", async () => { - game.override.startingBiome(Biome.FOREST); - await game.runToFinalBossEncounter([Species.BIDOOF], GameModes.CLASSIC); + game.override.startingBiome(BiomeId.FOREST); + await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.CLASSIC); expect(game.scene.currentBattle.waveIndex).toBe(FinalWave.Classic); - expect(game.scene.arena.biomeType).not.toBe(Biome.END); - expect(game.scene.getEnemyPokemon()!.species.speciesId).not.toBe(Species.ETERNATUS); + expect(game.scene.arena.biomeType).not.toBe(BiomeId.END); + expect(game.scene.getEnemyPokemon()!.species.speciesId).not.toBe(SpeciesId.ETERNATUS); }); it("should not have passive enabled on Eternatus", async () => { - await game.runToFinalBossEncounter([Species.BIDOOF], GameModes.CLASSIC); + await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.CLASSIC); const eternatus = game.scene.getEnemyPokemon()!; - expect(eternatus.species.speciesId).toBe(Species.ETERNATUS); + expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); expect(eternatus.hasPassive()).toBe(false); }); it("should change form on direct hit down to last boss fragment", async () => { - await game.runToFinalBossEncounter([Species.KYUREM], GameModes.CLASSIC); + await game.runToFinalBossEncounter([SpeciesId.KYUREM], GameModes.CLASSIC); await game.phaseInterceptor.to("CommandPhase"); // Eternatus phase 1 const eternatus = game.scene.getEnemyPokemon()!; const phase1Hp = eternatus.getMaxHp(); - expect(eternatus.species.speciesId).toBe(Species.ETERNATUS); + expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); expect(eternatus.formIndex).toBe(0); expect(eternatus.bossSegments).toBe(4); expect(eternatus.bossSegmentIndex).toBe(3); - game.move.select(Moves.DRAGON_PULSE); + game.move.select(MoveId.DRAGON_PULSE); await game.toNextTurn(); // Eternatus phase 2: changed form, healed and restored its shields - expect(eternatus.species.speciesId).toBe(Species.ETERNATUS); + expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); expect(eternatus.hp).toBeGreaterThan(phase1Hp); expect(eternatus.hp).toBe(eternatus.getMaxHp()); expect(eternatus.formIndex).toBe(1); @@ -99,20 +99,20 @@ describe("Final Boss", () => { }); it("should change form on status damage down to last boss fragment", async () => { - game.override.ability(Abilities.NO_GUARD); + game.override.ability(AbilityId.NO_GUARD); - await game.runToFinalBossEncounter([Species.BIDOOF], GameModes.CLASSIC); + await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.CLASSIC); await game.phaseInterceptor.to("CommandPhase"); // Eternatus phase 1 const eternatus = game.scene.getEnemyPokemon()!; const phase1Hp = eternatus.getMaxHp(); - expect(eternatus.species.speciesId).toBe(Species.ETERNATUS); + expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); expect(eternatus.formIndex).toBe(0); expect(eternatus.bossSegments).toBe(4); expect(eternatus.bossSegmentIndex).toBe(3); - game.move.select(Moves.WILL_O_WISP); + game.move.select(MoveId.WILL_O_WISP); await game.toNextTurn(); expect(eternatus.status?.effect).toBe(StatusEffect.BURN); @@ -120,13 +120,13 @@ describe("Final Boss", () => { const lastShieldHp = Math.ceil(phase1Hp / eternatus.bossSegments); // Stall until the burn is one hit away from breaking the last shield while (eternatus.hp - tickDamage > lastShieldHp) { - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); } expect(eternatus.bossSegmentIndex).toBe(1); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // Eternatus phase 2: changed form, healed and restored its shields diff --git a/test/imports.test.ts b/test/imports.test.ts index 128308dbd14..540620d8bb4 100644 --- a/test/imports.test.ts +++ b/test/imports.test.ts @@ -5,7 +5,7 @@ async function importModule() { try { initStatsKeys(); const { PokemonMove } = await import("#app/field/pokemon"); - const { Species } = await import("#enums/species"); + const { SpeciesId: Species } = await import("#enums/species-id"); return { PokemonMove, Species, diff --git a/test/internals.test.ts b/test/internals.test.ts index 558b363caf0..bd603ec22fc 100644 --- a/test/internals.test.ts +++ b/test/internals.test.ts @@ -1,5 +1,5 @@ -import { Abilities } from "#app/enums/abilities"; -import { Species } from "#app/enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,18 +23,18 @@ describe("Internals", () => { }); it("should provide Eevee with 3 defined abilities", async () => { - await game.classicMode.runToSummon([Species.EEVEE]); + await game.classicMode.runToSummon([SpeciesId.EEVEE]); const eevee = game.scene.getPlayerPokemon()!; expect(eevee.getSpeciesForm().getAbilityCount()).toBe(3); - expect(eevee.getSpeciesForm().getAbility(0)).toBe(Abilities.RUN_AWAY); - expect(eevee.getSpeciesForm().getAbility(1)).toBe(Abilities.ADAPTABILITY); - expect(eevee.getSpeciesForm().getAbility(2)).toBe(Abilities.ANTICIPATION); + expect(eevee.getSpeciesForm().getAbility(0)).toBe(AbilityId.RUN_AWAY); + expect(eevee.getSpeciesForm().getAbility(1)).toBe(AbilityId.ADAPTABILITY); + expect(eevee.getSpeciesForm().getAbility(2)).toBe(AbilityId.ANTICIPATION); }); it("should set Eeeve abilityIndex between 0-2", async () => { - await game.classicMode.runToSummon([Species.EEVEE]); + await game.classicMode.runToSummon([SpeciesId.EEVEE]); const eevee = game.scene.getPlayerPokemon()!; expect(eevee.abilityIndex).toBeGreaterThanOrEqual(0); diff --git a/test/items/dire_hit.test.ts b/test/items/dire_hit.test.ts index e848bceb514..f60adebac36 100644 --- a/test/items/dire_hit.test.ts +++ b/test/items/dire_hit.test.ts @@ -1,6 +1,6 @@ import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phase from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -32,21 +32,21 @@ describe("Items - Dire Hit", () => { game = new GameManager(phaserGame); game.override - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.SPLASH) - .moveset([Moves.POUND]) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH) + .moveset([MoveId.POUND]) .startingHeldItems([{ name: "DIRE_HIT" }]) .battleStyle("single"); }, 20000); it("should raise CRIT stage by 1", async () => { - await game.classicMode.startBattle([Species.GASTLY]); + await game.classicMode.startBattle([SpeciesId.GASTLY]); const enemyPokemon = game.scene.getEnemyPokemon()!; vi.spyOn(enemyPokemon, "getCritStage"); - game.move.select(Moves.POUND); + game.move.select(MoveId.POUND); await game.phaseInterceptor.to(TurnEndPhase); @@ -56,9 +56,9 @@ describe("Items - Dire Hit", () => { it("should renew how many battles are left of existing DIRE_HIT when picking up new DIRE_HIT", async () => { game.override.itemRewards([{ name: "DIRE_HIT" }]); - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); diff --git a/test/items/double_battle_chance_booster.test.ts b/test/items/double_battle_chance_booster.test.ts index 68a29ef823e..d1a9e826cda 100644 --- a/test/items/double_battle_chance_booster.test.ts +++ b/test/items/double_battle_chance_booster.test.ts @@ -1,5 +1,5 @@ -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { DoubleBattleChanceBoosterModifier } from "#app/modifier/modifier"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -50,12 +50,12 @@ describe("Items - Double Battle Chance Boosters", () => { game.override .startingModifier([{ name: "LURE" }]) .itemRewards([{ name: "LURE" }]) - .moveset(Moves.SPLASH) + .moveset(MoveId.SPLASH) .startingLevel(200); - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); diff --git a/test/items/eviolite.test.ts b/test/items/eviolite.test.ts index fafc0f4a10c..353cdbf91b4 100644 --- a/test/items/eviolite.test.ts +++ b/test/items/eviolite.test.ts @@ -1,6 +1,6 @@ import { StatBoosterModifier } from "#app/modifier/modifier"; import { NumberHolder, randItem } from "#app/utils/common"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phase from "phaser"; @@ -26,7 +26,7 @@ describe("Items - Eviolite", () => { }); it("should provide 50% boost to DEF and SPDEF for unevolved, unfused pokemon", async () => { - await game.classicMode.startBattle([Species.PICHU]); + await game.classicMode.startBattle([SpeciesId.PICHU]); const partyMember = game.scene.getPlayerPokemon()!; @@ -47,7 +47,7 @@ describe("Items - Eviolite", () => { }); it("should not provide a boost for fully evolved, unfused pokemon", async () => { - await game.classicMode.startBattle([Species.RAICHU]); + await game.classicMode.startBattle([SpeciesId.RAICHU]); const partyMember = game.scene.getPlayerPokemon()!; @@ -68,7 +68,7 @@ describe("Items - Eviolite", () => { }); it("should provide 50% boost to DEF and SPDEF for completely unevolved, fused pokemon", async () => { - await game.classicMode.startBattle([Species.PICHU, Species.CLEFFA]); + await game.classicMode.startBattle([SpeciesId.PICHU, SpeciesId.CLEFFA]); const [partyMember, ally] = game.scene.getPlayerParty(); @@ -98,7 +98,7 @@ describe("Items - Eviolite", () => { }); it("should provide 25% boost to DEF and SPDEF for partially unevolved (base), fused pokemon", async () => { - await game.classicMode.startBattle([Species.PICHU, Species.CLEFABLE]); + await game.classicMode.startBattle([SpeciesId.PICHU, SpeciesId.CLEFABLE]); const [partyMember, ally] = game.scene.getPlayerParty(); @@ -128,7 +128,7 @@ describe("Items - Eviolite", () => { }); it("should provide 25% boost to DEF and SPDEF for partially unevolved (fusion), fused pokemon", async () => { - await game.classicMode.startBattle([Species.RAICHU, Species.CLEFFA]); + await game.classicMode.startBattle([SpeciesId.RAICHU, SpeciesId.CLEFFA]); const [partyMember, ally] = game.scene.getPlayerParty(); @@ -158,7 +158,7 @@ describe("Items - Eviolite", () => { }); it("should not provide a boost for fully evolved, fused pokemon", async () => { - await game.classicMode.startBattle([Species.RAICHU, Species.CLEFABLE]); + await game.classicMode.startBattle([SpeciesId.RAICHU, SpeciesId.CLEFABLE]); const [partyMember, ally] = game.scene.getPlayerParty(); @@ -189,13 +189,13 @@ describe("Items - Eviolite", () => { it("should not provide a boost for Gigantamax Pokémon", async () => { game.override.starterForms({ - [Species.PIKACHU]: 8, - [Species.EEVEE]: 2, - [Species.DURALUDON]: 1, - [Species.MEOWTH]: 1, + [SpeciesId.PIKACHU]: 8, + [SpeciesId.EEVEE]: 2, + [SpeciesId.DURALUDON]: 1, + [SpeciesId.MEOWTH]: 1, }); - const gMaxablePokemon = [Species.PIKACHU, Species.EEVEE, Species.DURALUDON, Species.MEOWTH]; + const gMaxablePokemon = [SpeciesId.PIKACHU, SpeciesId.EEVEE, SpeciesId.DURALUDON, SpeciesId.MEOWTH]; await game.classicMode.startBattle([randItem(gMaxablePokemon)]); diff --git a/test/items/exp_booster.test.ts b/test/items/exp_booster.test.ts index 106574b6849..f5273a78a55 100644 --- a/test/items/exp_booster.test.ts +++ b/test/items/exp_booster.test.ts @@ -1,4 +1,4 @@ -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { PokemonExpBoosterModifier } from "#app/modifier/modifier"; import { NumberHolder } from "#app/utils/common"; import GameManager from "#test/testUtils/gameManager"; @@ -22,8 +22,8 @@ describe("EXP Modifier Items", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.enemyAbility(Abilities.BALL_FETCH); - game.override.ability(Abilities.BALL_FETCH); + game.override.enemyAbility(AbilityId.BALL_FETCH); + game.override.ability(AbilityId.BALL_FETCH); game.override.battleStyle("single"); }); diff --git a/test/items/grip_claw.test.ts b/test/items/grip_claw.test.ts index 2396a7ca072..3c51e7f868d 100644 --- a/test/items/grip_claw.test.ts +++ b/test/items/grip_claw.test.ts @@ -1,10 +1,10 @@ import { BattlerIndex } from "#app/battle"; import type Pokemon from "#app/field/pokemon"; import type { ContactHeldItemTransferChanceModifier } from "#app/modifier/modifier"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BerryType } from "#enums/berry-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phase from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -28,12 +28,12 @@ describe("Items - Grip Claw", () => { game.override .battleStyle("double") - .moveset([Moves.TACKLE, Moves.SPLASH, Moves.ATTRACT]) + .moveset([MoveId.TACKLE, MoveId.SPLASH, MoveId.ATTRACT]) .startingHeldItems([{ name: "GRIP_CLAW", count: 1 }]) - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.UNNERVE) - .ability(Abilities.UNNERVE) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.UNNERVE) + .ability(AbilityId.UNNERVE) + .enemyMoveset(MoveId.SPLASH) .enemyHeldItems([ { name: "BERRY", type: BerryType.SITRUS, count: 2 }, { name: "BERRY", type: BerryType.LUM, count: 2 }, @@ -42,7 +42,7 @@ describe("Items - Grip Claw", () => { }); it("should steal items on contact and only from the attack target", async () => { - await game.classicMode.startBattle([Species.FEEBAS, Species.MILOTIC]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MILOTIC]); const [playerPokemon] = game.scene.getPlayerField(); @@ -56,8 +56,8 @@ describe("Items - Grip Claw", () => { const enemy2HeldItemCount = getHeldItemCount(enemyPokemon[1]); expect(enemy2HeldItemCount).toBeGreaterThan(0); - game.move.select(Moves.TACKLE, 0, BattlerIndex.ENEMY_2); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.TACKLE, 0, BattlerIndex.ENEMY_2); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase", false); @@ -71,7 +71,7 @@ describe("Items - Grip Claw", () => { }); it("should not steal items when using a targetted, non attack move", async () => { - await game.classicMode.startBattle([Species.FEEBAS, Species.MILOTIC]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MILOTIC]); const [playerPokemon] = game.scene.getPlayerField(); @@ -85,8 +85,8 @@ describe("Items - Grip Claw", () => { const enemy2HeldItemCount = getHeldItemCount(enemyPokemon[1]); expect(enemy2HeldItemCount).toBeGreaterThan(0); - game.move.select(Moves.ATTRACT, 0, BattlerIndex.ENEMY_2); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.ATTRACT, 0, BattlerIndex.ENEMY_2); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase", false); @@ -102,12 +102,12 @@ describe("Items - Grip Claw", () => { it("should not allow Pollen Puff to steal items when healing ally", async () => { game.override .battleStyle("double") - .moveset([Moves.POLLEN_PUFF, Moves.ENDURE]) + .moveset([MoveId.POLLEN_PUFF, MoveId.ENDURE]) .startingHeldItems([ { name: "GRIP_CLAW", count: 1 }, { name: "BERRY", type: BerryType.LUM, count: 1 }, ]); - await game.classicMode.startBattle([Species.BULBASAUR, Species.OMANYTE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.OMANYTE]); const [leftPokemon, rightPokemon] = game.scene.getPlayerField(); @@ -116,8 +116,8 @@ describe("Items - Grip Claw", () => { const heldItemCountBefore = getHeldItemCount(rightPokemon); - game.move.select(Moves.POLLEN_PUFF, 0, BattlerIndex.PLAYER_2); - game.move.select(Moves.ENDURE, 1); + game.move.select(MoveId.POLLEN_PUFF, 0, BattlerIndex.PLAYER_2); + game.move.select(MoveId.ENDURE, 1); await game.toNextTurn(); diff --git a/test/items/leek.test.ts b/test/items/leek.test.ts index be2aa73299c..05ee77c991a 100644 --- a/test/items/leek.test.ts +++ b/test/items/leek.test.ts @@ -1,7 +1,7 @@ import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { randInt } from "#app/utils/common"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phase from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -24,21 +24,21 @@ describe("Items - Leek", () => { game = new GameManager(phaserGame); game.override - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH) .startingHeldItems([{ name: "LEEK" }]) - .moveset([Moves.TACKLE]) + .moveset([MoveId.TACKLE]) .battleStyle("single"); }); it("should raise CRIT stage by 2 when held by FARFETCHD", async () => { - await game.classicMode.startBattle([Species.FARFETCHD]); + await game.classicMode.startBattle([SpeciesId.FARFETCHD]); const enemyMember = game.scene.getEnemyPokemon()!; vi.spyOn(enemyMember, "getCritStage"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); @@ -46,13 +46,13 @@ describe("Items - Leek", () => { }, 20000); it("should raise CRIT stage by 2 when held by GALAR_FARFETCHD", async () => { - await game.classicMode.startBattle([Species.GALAR_FARFETCHD]); + await game.classicMode.startBattle([SpeciesId.GALAR_FARFETCHD]); const enemyMember = game.scene.getEnemyPokemon()!; vi.spyOn(enemyMember, "getCritStage"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); @@ -60,13 +60,13 @@ describe("Items - Leek", () => { }, 20000); it("should raise CRIT stage by 2 when held by SIRFETCHD", async () => { - await game.classicMode.startBattle([Species.SIRFETCHD]); + await game.classicMode.startBattle([SpeciesId.SIRFETCHD]); const enemyMember = game.scene.getEnemyPokemon()!; vi.spyOn(enemyMember, "getCritStage"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); @@ -75,9 +75,9 @@ describe("Items - Leek", () => { it("should raise CRIT stage by 2 when held by FARFETCHD line fused with Pokemon", async () => { // Randomly choose from the Farfetch'd line - const species = [Species.FARFETCHD, Species.GALAR_FARFETCHD, Species.SIRFETCHD]; + const species = [SpeciesId.FARFETCHD, SpeciesId.GALAR_FARFETCHD, SpeciesId.SIRFETCHD]; - await game.classicMode.startBattle([species[randInt(species.length)], Species.PIKACHU]); + await game.classicMode.startBattle([species[randInt(species.length)], SpeciesId.PIKACHU]); const [partyMember, ally] = game.scene.getPlayerParty(); @@ -94,7 +94,7 @@ describe("Items - Leek", () => { vi.spyOn(enemyMember, "getCritStage"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); @@ -103,9 +103,9 @@ describe("Items - Leek", () => { it("should raise CRIT stage by 2 when held by Pokemon fused with FARFETCHD line", async () => { // Randomly choose from the Farfetch'd line - const species = [Species.FARFETCHD, Species.GALAR_FARFETCHD, Species.SIRFETCHD]; + const species = [SpeciesId.FARFETCHD, SpeciesId.GALAR_FARFETCHD, SpeciesId.SIRFETCHD]; - await game.classicMode.startBattle([Species.PIKACHU, species[randInt(species.length)]]); + await game.classicMode.startBattle([SpeciesId.PIKACHU, species[randInt(species.length)]]); const [partyMember, ally] = game.scene.getPlayerParty(); @@ -122,7 +122,7 @@ describe("Items - Leek", () => { vi.spyOn(enemyMember, "getCritStage"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); @@ -130,13 +130,13 @@ describe("Items - Leek", () => { }, 20000); it("should not raise CRIT stage when held by a Pokemon outside of FARFETCHD line", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const enemyMember = game.scene.getEnemyPokemon()!; vi.spyOn(enemyMember, "getCritStage"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); diff --git a/test/items/leftovers.test.ts b/test/items/leftovers.test.ts index a31b711eb63..1f42dbcf537 100644 --- a/test/items/leftovers.test.ts +++ b/test/items/leftovers.test.ts @@ -1,8 +1,8 @@ import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -26,16 +26,16 @@ describe("Items - Leftovers", () => { game.override .battleStyle("single") .startingLevel(2000) - .ability(Abilities.UNNERVE) - .moveset([Moves.SPLASH]) - .enemySpecies(Species.SHUCKLE) - .enemyAbility(Abilities.UNNERVE) - .enemyMoveset(Moves.TACKLE) + .ability(AbilityId.UNNERVE) + .moveset([MoveId.SPLASH]) + .enemySpecies(SpeciesId.SHUCKLE) + .enemyAbility(AbilityId.UNNERVE) + .enemyMoveset(MoveId.TACKLE) .startingHeldItems([{ name: "LEFTOVERS", count: 1 }]); }); it("leftovers works", async () => { - await game.classicMode.startBattle([Species.ARCANINE]); + await game.classicMode.startBattle([SpeciesId.ARCANINE]); // Make sure leftovers are there expect(game.scene.modifiers[0].type.id).toBe("LEFTOVERS"); @@ -45,7 +45,7 @@ describe("Items - Leftovers", () => { // We should have full hp expect(leadPokemon.isFullHp()).toBe(true); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); // We should have less hp after the attack await game.phaseInterceptor.to(DamageAnimPhase, false); diff --git a/test/items/light_ball.test.ts b/test/items/light_ball.test.ts index 214f6f624e6..84a1689260f 100644 --- a/test/items/light_ball.test.ts +++ b/test/items/light_ball.test.ts @@ -3,7 +3,7 @@ import { SpeciesStatBoosterModifier } from "#app/modifier/modifier"; import { modifierTypes } from "#app/modifier/modifier-type"; import i18next from "#app/plugins/i18n"; import { NumberHolder } from "#app/utils/common"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phase from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -31,7 +31,7 @@ describe("Items - Light Ball", () => { it("LIGHT_BALL activates in battle correctly", async () => { game.override.startingHeldItems([{ name: "RARE_SPECIES_STAT_BOOSTER", type: "LIGHT_BALL" }]); const consoleSpy = vi.spyOn(console, "log"); - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const partyMember = game.scene.getPlayerParty()[0]; @@ -82,7 +82,7 @@ describe("Items - Light Ball", () => { }); it("LIGHT_BALL held by PIKACHU", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const partyMember = game.scene.getPlayerParty()[0]; @@ -111,7 +111,7 @@ describe("Items - Light Ball", () => { }, 20000); it("LIGHT_BALL held by fused PIKACHU (base)", async () => { - await game.classicMode.startBattle([Species.PIKACHU, Species.MAROWAK]); + await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.MAROWAK]); const partyMember = game.scene.getPlayerParty()[0]; const ally = game.scene.getPlayerParty()[1]; @@ -150,7 +150,7 @@ describe("Items - Light Ball", () => { }, 20000); it("LIGHT_BALL held by fused PIKACHU (part)", async () => { - await game.classicMode.startBattle([Species.MAROWAK, Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.MAROWAK, SpeciesId.PIKACHU]); const partyMember = game.scene.getPlayerParty()[0]; const ally = game.scene.getPlayerParty()[1]; @@ -189,7 +189,7 @@ describe("Items - Light Ball", () => { }, 20000); it("LIGHT_BALL not held by PIKACHU", async () => { - await game.classicMode.startBattle([Species.MAROWAK]); + await game.classicMode.startBattle([SpeciesId.MAROWAK]); const partyMember = game.scene.getPlayerParty()[0]; diff --git a/test/items/lock_capsule.test.ts b/test/items/lock_capsule.test.ts index 19829578d87..15a1b4e73d1 100644 --- a/test/items/lock_capsule.test.ts +++ b/test/items/lock_capsule.test.ts @@ -1,5 +1,5 @@ -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#app/enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { ModifierTier } from "#app/modifier/modifier-tier"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import { UiMode } from "#enums/ui-mode"; @@ -27,8 +27,8 @@ describe("Items - Lock Capsule", () => { game.override .battleStyle("single") .startingLevel(200) - .moveset([Moves.SURF]) - .enemyAbility(Abilities.BALL_FETCH) + .moveset([MoveId.SURF]) + .enemyAbility(AbilityId.BALL_FETCH) .startingModifier([{ name: "LOCK_CAPSULE" }]); }); diff --git a/test/items/metal_powder.test.ts b/test/items/metal_powder.test.ts index a9a81072622..20b0b90a766 100644 --- a/test/items/metal_powder.test.ts +++ b/test/items/metal_powder.test.ts @@ -3,7 +3,7 @@ import { SpeciesStatBoosterModifier } from "#app/modifier/modifier"; import { modifierTypes } from "#app/modifier/modifier-type"; import i18next from "#app/plugins/i18n"; import { NumberHolder } from "#app/utils/common"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phase from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -31,7 +31,7 @@ describe("Items - Metal Powder", () => { it("METAL_POWDER activates in battle correctly", async () => { game.override.startingHeldItems([{ name: "RARE_SPECIES_STAT_BOOSTER", type: "METAL_POWDER" }]); const consoleSpy = vi.spyOn(console, "log"); - await game.classicMode.startBattle([Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.DITTO]); const partyMember = game.scene.getPlayerParty()[0]; @@ -82,7 +82,7 @@ describe("Items - Metal Powder", () => { }); it("METAL_POWDER held by DITTO", async () => { - await game.classicMode.startBattle([Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.DITTO]); const partyMember = game.scene.getPlayerParty()[0]; @@ -105,7 +105,7 @@ describe("Items - Metal Powder", () => { }, 20000); it("METAL_POWDER held by fused DITTO (base)", async () => { - await game.classicMode.startBattle([Species.DITTO, Species.MAROWAK]); + await game.classicMode.startBattle([SpeciesId.DITTO, SpeciesId.MAROWAK]); const partyMember = game.scene.getPlayerParty()[0]; const ally = game.scene.getPlayerParty()[1]; @@ -138,7 +138,7 @@ describe("Items - Metal Powder", () => { }, 20000); it("METAL_POWDER held by fused DITTO (part)", async () => { - await game.classicMode.startBattle([Species.MAROWAK, Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.MAROWAK, SpeciesId.DITTO]); const partyMember = game.scene.getPlayerParty()[0]; const ally = game.scene.getPlayerParty()[1]; @@ -171,7 +171,7 @@ describe("Items - Metal Powder", () => { }, 20000); it("METAL_POWDER not held by DITTO", async () => { - await game.classicMode.startBattle([Species.MAROWAK]); + await game.classicMode.startBattle([SpeciesId.MAROWAK]); const partyMember = game.scene.getPlayerParty()[0]; diff --git a/test/items/multi_lens.test.ts b/test/items/multi_lens.test.ts index ff6154b8283..be697eabcf8 100644 --- a/test/items/multi_lens.test.ts +++ b/test/items/multi_lens.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { Stat } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -24,14 +24,14 @@ describe("Items - Multi Lens", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.TACKLE, Moves.TRAILBLAZE, Moves.TACHYON_CUTTER, Moves.FUTURE_SIGHT]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.TACKLE, MoveId.TRAILBLAZE, MoveId.TACHYON_CUTTER, MoveId.FUTURE_SIGHT]) + .ability(AbilityId.BALL_FETCH) .startingHeldItems([{ name: "MULTI_LENS" }]) .battleStyle("single") .disableCrits() - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) .startingLevel(99) // Check for proper rounding on Seismic Toss damage reduction .enemyLevel(99); }); @@ -44,13 +44,13 @@ describe("Items - Multi Lens", () => { async ({ stackCount, firstHitDamage }) => { game.override.startingHeldItems([{ name: "MULTI_LENS", count: stackCount }]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemyPokemon = game.scene.getEnemyPokemon()!; const spy = vi.spyOn(enemyPokemon, "getAttackDamage"); vi.spyOn(enemyPokemon, "getBaseDamage").mockReturnValue(100); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -63,13 +63,13 @@ describe("Items - Multi Lens", () => { ); it("should stack additively with Parental Bond", async () => { - game.override.ability(Abilities.PARENTAL_BOND); + game.override.ability(AbilityId.PARENTAL_BOND); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -77,36 +77,36 @@ describe("Items - Multi Lens", () => { }); it("should apply secondary effects on each hit", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.TRAILBLAZE); + game.move.select(MoveId.TRAILBLAZE); await game.phaseInterceptor.to("BerryPhase", false); expect(playerPokemon.getStatStage(Stat.SPD)).toBe(2); }); it("should not enhance multi-hit moves", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.TACHYON_CUTTER); + game.move.select(MoveId.TACHYON_CUTTER); await game.phaseInterceptor.to("BerryPhase", false); expect(playerPokemon.turnData.hitCount).toBe(2); }); it("should enhance multi-target moves", async () => { - game.override.battleStyle("double").moveset([Moves.SWIFT, Moves.SPLASH]); + game.override.battleStyle("double").moveset([MoveId.SWIFT, MoveId.SPLASH]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); const [magikarp] = game.scene.getPlayerField(); - game.move.select(Moves.SWIFT, 0); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SWIFT, 0); + game.move.select(MoveId.SPLASH, 1); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); @@ -116,15 +116,15 @@ describe("Items - Multi Lens", () => { }); it("should enhance fixed-damage moves while also applying damage reduction", async () => { - game.override.startingHeldItems([{ name: "MULTI_LENS", count: 1 }]).moveset(Moves.SEISMIC_TOSS); + game.override.startingHeldItems([{ name: "MULTI_LENS", count: 1 }]).moveset(MoveId.SEISMIC_TOSS); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; const spy = vi.spyOn(enemyPokemon, "getAttackDamage"); - game.move.select(Moves.SEISMIC_TOSS); + game.move.select(MoveId.SEISMIC_TOSS); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -138,16 +138,16 @@ describe("Items - Multi Lens", () => { it("should result in correct damage for hp% attacks with 1 lens", async () => { game.override .startingHeldItems([{ name: "MULTI_LENS", count: 1 }]) - .moveset(Moves.SUPER_FANG) - .ability(Abilities.COMPOUND_EYES) + .moveset(MoveId.SUPER_FANG) + .ability(AbilityId.COMPOUND_EYES) .enemyLevel(1000) - .enemySpecies(Species.BLISSEY); // allows for unrealistically high levels of accuracy + .enemySpecies(SpeciesId.BLISSEY); // allows for unrealistically high levels of accuracy - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SUPER_FANG); + game.move.select(MoveId.SUPER_FANG); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); expect(enemyPokemon.getHpRatio()).toBeCloseTo(0.5, 5); @@ -156,17 +156,17 @@ describe("Items - Multi Lens", () => { it("should result in correct damage for hp% attacks with 2 lenses", async () => { game.override .startingHeldItems([{ name: "MULTI_LENS", count: 2 }]) - .moveset(Moves.SUPER_FANG) - .ability(Abilities.COMPOUND_EYES) - .enemyMoveset(Moves.SPLASH) + .moveset(MoveId.SUPER_FANG) + .ability(AbilityId.COMPOUND_EYES) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(1000) - .enemySpecies(Species.BLISSEY); // allows for unrealistically high levels of accuracy + .enemySpecies(SpeciesId.BLISSEY); // allows for unrealistically high levels of accuracy - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SUPER_FANG); + game.move.select(MoveId.SUPER_FANG); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); expect(enemyPokemon.getHpRatio()).toBeCloseTo(0.5, 5); @@ -175,18 +175,18 @@ describe("Items - Multi Lens", () => { it("should result in correct damage for hp% attacks with 2 lenses + Parental Bond", async () => { game.override .startingHeldItems([{ name: "MULTI_LENS", count: 2 }]) - .moveset(Moves.SUPER_FANG) - .ability(Abilities.PARENTAL_BOND) - .passiveAbility(Abilities.COMPOUND_EYES) - .enemyMoveset(Moves.SPLASH) + .moveset(MoveId.SUPER_FANG) + .ability(AbilityId.PARENTAL_BOND) + .passiveAbility(AbilityId.COMPOUND_EYES) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(1000) - .enemySpecies(Species.BLISSEY); // allows for unrealistically high levels of accuracy + .enemySpecies(SpeciesId.BLISSEY); // allows for unrealistically high levels of accuracy - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SUPER_FANG); + game.move.select(MoveId.SUPER_FANG); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); expect(enemyPokemon.getHpRatio()).toBeCloseTo(0.25, 5); @@ -194,12 +194,12 @@ describe("Items - Multi Lens", () => { it("should not allow Future Sight to hit infinitely many times if the user switches out", async () => { game.override.enemyLevel(1000); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); const enemyPokemon = game.scene.getEnemyPokemon()!; vi.spyOn(enemyPokemon, "damageAndUpdate"); - game.move.select(Moves.FUTURE_SIGHT); + game.move.select(MoveId.FUTURE_SIGHT); await game.toNextTurn(); game.doSwitchPokemon(1); @@ -213,15 +213,15 @@ describe("Items - Multi Lens", () => { }); it("should not allow Pollen Puff to heal ally more than once", async () => { - game.override.battleStyle("double").moveset([Moves.POLLEN_PUFF, Moves.ENDURE]); - await game.classicMode.startBattle([Species.BULBASAUR, Species.OMANYTE]); + game.override.battleStyle("double").moveset([MoveId.POLLEN_PUFF, MoveId.ENDURE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.OMANYTE]); const [, rightPokemon] = game.scene.getPlayerField(); rightPokemon.damageAndUpdate(rightPokemon.hp - 1); - game.move.select(Moves.POLLEN_PUFF, 0, BattlerIndex.PLAYER_2); - game.move.select(Moves.ENDURE, 1); + game.move.select(MoveId.POLLEN_PUFF, 0, BattlerIndex.PLAYER_2); + game.move.select(MoveId.ENDURE, 1); await game.toNextTurn(); diff --git a/test/items/mystical_rock.test.ts b/test/items/mystical_rock.test.ts index 59119ce8611..091815aa604 100644 --- a/test/items/mystical_rock.test.ts +++ b/test/items/mystical_rock.test.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; -import { Moves } from "#enums/moves"; -import { Abilities } from "#enums/abilities"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { AbilityId } from "#enums/ability-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phase from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,18 +24,18 @@ describe("Items - Mystical Rock", () => { game = new GameManager(phaserGame); game.override - .enemySpecies(Species.SHUCKLE) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH) - .moveset([Moves.SUNNY_DAY, Moves.GRASSY_TERRAIN]) + .enemySpecies(SpeciesId.SHUCKLE) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset([MoveId.SUNNY_DAY, MoveId.GRASSY_TERRAIN]) .startingHeldItems([{ name: "MYSTICAL_ROCK", count: 2 }]) .battleStyle("single"); }); it("should increase weather duration by +2 turns per stack", async () => { - await game.classicMode.startBattle([Species.GASTLY]); + await game.classicMode.startBattle([SpeciesId.GASTLY]); - game.move.select(Moves.SUNNY_DAY); + game.move.select(MoveId.SUNNY_DAY); await game.phaseInterceptor.to("MoveEndPhase"); @@ -46,9 +46,9 @@ describe("Items - Mystical Rock", () => { }); it("should increase terrain duration by +2 turns per stack", async () => { - await game.classicMode.startBattle([Species.GASTLY]); + await game.classicMode.startBattle([SpeciesId.GASTLY]); - game.move.select(Moves.GRASSY_TERRAIN); + game.move.select(MoveId.GRASSY_TERRAIN); await game.phaseInterceptor.to("MoveEndPhase"); diff --git a/test/items/quick_powder.test.ts b/test/items/quick_powder.test.ts index fb08d6bc71e..0192dec4635 100644 --- a/test/items/quick_powder.test.ts +++ b/test/items/quick_powder.test.ts @@ -3,7 +3,7 @@ import { SpeciesStatBoosterModifier } from "#app/modifier/modifier"; import { modifierTypes } from "#app/modifier/modifier-type"; import i18next from "#app/plugins/i18n"; import { NumberHolder } from "#app/utils/common"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phase from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -31,7 +31,7 @@ describe("Items - Quick Powder", () => { it("QUICK_POWDER activates in battle correctly", async () => { game.override.startingHeldItems([{ name: "RARE_SPECIES_STAT_BOOSTER", type: "QUICK_POWDER" }]); const consoleSpy = vi.spyOn(console, "log"); - await game.classicMode.startBattle([Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.DITTO]); const partyMember = game.scene.getPlayerParty()[0]; @@ -82,7 +82,7 @@ describe("Items - Quick Powder", () => { }); it("QUICK_POWDER held by DITTO", async () => { - await game.classicMode.startBattle([Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.DITTO]); const partyMember = game.scene.getPlayerParty()[0]; @@ -105,7 +105,7 @@ describe("Items - Quick Powder", () => { }); it("QUICK_POWDER held by fused DITTO (base)", async () => { - await game.classicMode.startBattle([Species.DITTO, Species.MAROWAK]); + await game.classicMode.startBattle([SpeciesId.DITTO, SpeciesId.MAROWAK]); const partyMember = game.scene.getPlayerParty()[0]; const ally = game.scene.getPlayerParty()[1]; @@ -138,7 +138,7 @@ describe("Items - Quick Powder", () => { }); it("QUICK_POWDER held by fused DITTO (part)", async () => { - await game.classicMode.startBattle([Species.MAROWAK, Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.MAROWAK, SpeciesId.DITTO]); const partyMember = game.scene.getPlayerParty()[0]; const ally = game.scene.getPlayerParty()[1]; @@ -171,7 +171,7 @@ describe("Items - Quick Powder", () => { }); it("QUICK_POWDER not held by DITTO", async () => { - await game.classicMode.startBattle([Species.MAROWAK]); + await game.classicMode.startBattle([SpeciesId.MAROWAK]); const partyMember = game.scene.getPlayerParty()[0]; diff --git a/test/items/reviver_seed.test.ts b/test/items/reviver_seed.test.ts index 13aaf98249e..2ab3c5ffe74 100644 --- a/test/items/reviver_seed.test.ts +++ b/test/items/reviver_seed.test.ts @@ -2,9 +2,9 @@ import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/data-lists"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import type { PokemonInstantReviveModifier } from "#app/modifier/modifier"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -26,46 +26,46 @@ describe("Items - Reviver Seed", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.TACKLE, Moves.ENDURE]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH, MoveId.TACKLE, MoveId.ENDURE]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) .startingHeldItems([{ name: "REVIVER_SEED" }]) .enemyHeldItems([{ name: "REVIVER_SEED" }]) - .enemyMoveset(Moves.SPLASH); - vi.spyOn(allMoves[Moves.SHEER_COLD], "accuracy", "get").mockReturnValue(100); - vi.spyOn(allMoves[Moves.LEECH_SEED], "accuracy", "get").mockReturnValue(100); - vi.spyOn(allMoves[Moves.WHIRLPOOL], "accuracy", "get").mockReturnValue(100); - vi.spyOn(allMoves[Moves.WILL_O_WISP], "accuracy", "get").mockReturnValue(100); + .enemyMoveset(MoveId.SPLASH); + vi.spyOn(allMoves[MoveId.SHEER_COLD], "accuracy", "get").mockReturnValue(100); + vi.spyOn(allMoves[MoveId.LEECH_SEED], "accuracy", "get").mockReturnValue(100); + vi.spyOn(allMoves[MoveId.WHIRLPOOL], "accuracy", "get").mockReturnValue(100); + vi.spyOn(allMoves[MoveId.WILL_O_WISP], "accuracy", "get").mockReturnValue(100); }); it.each([ - { moveType: "Special Move", move: Moves.WATER_GUN }, - { moveType: "Physical Move", move: Moves.TACKLE }, - { moveType: "Fixed Damage Move", move: Moves.SEISMIC_TOSS }, - { moveType: "Final Gambit", move: Moves.FINAL_GAMBIT }, - { moveType: "Counter", move: Moves.COUNTER }, - { moveType: "OHKO", move: Moves.SHEER_COLD }, + { moveType: "Special Move", move: MoveId.WATER_GUN }, + { moveType: "Physical Move", move: MoveId.TACKLE }, + { moveType: "Fixed Damage Move", move: MoveId.SEISMIC_TOSS }, + { moveType: "Final Gambit", move: MoveId.FINAL_GAMBIT }, + { moveType: "Counter", move: MoveId.COUNTER }, + { moveType: "OHKO", move: MoveId.SHEER_COLD }, ])("should activate the holder's reviver seed from a $moveType", async ({ move }) => { game.override.enemyLevel(100).startingLevel(1).enemyMoveset(move); - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); const player = game.scene.getPlayerPokemon()!; player.damageAndUpdate(player.hp - 1); const reviverSeed = player.getHeldItems()[0] as PokemonInstantReviveModifier; vi.spyOn(reviverSeed, "apply"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("BerryPhase"); expect(player.isFainted()).toBeFalsy(); }); it("should activate the holder's reviver seed from confusion self-hit", async () => { - game.override.enemyLevel(1).startingLevel(100).enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + game.override.enemyLevel(1).startingLevel(100).enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); const player = game.scene.getPlayerPokemon()!; player.damageAndUpdate(player.hp - 1); player.addTag(BattlerTagType.CONFUSED, 3); @@ -74,7 +74,7 @@ describe("Items - Reviver Seed", () => { vi.spyOn(reviverSeed, "apply"); vi.spyOn(player, "randBattleSeedInt").mockReturnValue(0); // Force confusion self-hit - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("BerryPhase"); expect(player.isFainted()).toBeFalsy(); @@ -82,19 +82,19 @@ describe("Items - Reviver Seed", () => { // Damaging opponents tests it.each([ - { moveType: "Damaging Move Chip Damage", move: Moves.SALT_CURE }, - { moveType: "Chip Damage", move: Moves.LEECH_SEED }, - { moveType: "Trapping Chip Damage", move: Moves.WHIRLPOOL }, - { moveType: "Status Effect Damage", move: Moves.WILL_O_WISP }, - { moveType: "Weather", move: Moves.SANDSTORM }, + { moveType: "Damaging Move Chip Damage", move: MoveId.SALT_CURE }, + { moveType: "Chip Damage", move: MoveId.LEECH_SEED }, + { moveType: "Trapping Chip Damage", move: MoveId.WHIRLPOOL }, + { moveType: "Status Effect Damage", move: MoveId.WILL_O_WISP }, + { moveType: "Weather", move: MoveId.SANDSTORM }, ])("should not activate the holder's reviver seed from $moveType", async ({ move }) => { game.override .enemyLevel(1) .startingLevel(100) - .enemySpecies(Species.MAGIKARP) + .enemySpecies(SpeciesId.MAGIKARP) .moveset(move) - .enemyMoveset(Moves.ENDURE); - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + .enemyMoveset(MoveId.ENDURE); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon()!; enemy.damageAndUpdate(enemy.hp - 1); @@ -106,19 +106,19 @@ describe("Items - Reviver Seed", () => { // Self-damage tests it.each([ - { moveType: "Recoil", move: Moves.DOUBLE_EDGE }, - { moveType: "Self-KO", move: Moves.EXPLOSION }, - { moveType: "Self-Deduction", move: Moves.CURSE }, - { moveType: "Liquid Ooze", move: Moves.GIGA_DRAIN }, + { moveType: "Recoil", move: MoveId.DOUBLE_EDGE }, + { moveType: "Self-KO", move: MoveId.EXPLOSION }, + { moveType: "Self-Deduction", move: MoveId.CURSE }, + { moveType: "Liquid Ooze", move: MoveId.GIGA_DRAIN }, ])("should not activate the holder's reviver seed from $moveType", async ({ move }) => { game.override .enemyLevel(100) .startingLevel(1) - .enemySpecies(Species.MAGIKARP) + .enemySpecies(SpeciesId.MAGIKARP) .moveset(move) - .enemyAbility(Abilities.LIQUID_OOZE) - .enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.GASTLY, Species.FEEBAS]); + .enemyAbility(AbilityId.LIQUID_OOZE) + .enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.GASTLY, SpeciesId.FEEBAS]); const player = game.scene.getPlayerPokemon()!; player.damageAndUpdate(player.hp - 1); @@ -135,16 +135,16 @@ describe("Items - Reviver Seed", () => { game.override .enemyLevel(100) .startingLevel(1) - .enemySpecies(Species.MAGIKARP) - .moveset(Moves.DESTINY_BOND) + .enemySpecies(SpeciesId.MAGIKARP) + .moveset(MoveId.DESTINY_BOND) .startingHeldItems([]) // reset held items to nothing so user doesn't revive and not trigger Destiny Bond - .enemyMoveset(Moves.TACKLE); - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + .enemyMoveset(MoveId.TACKLE); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); const player = game.scene.getPlayerPokemon()!; player.damageAndUpdate(player.hp - 1); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DESTINY_BOND); + game.move.select(MoveId.DESTINY_BOND); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/items/scope_lens.test.ts b/test/items/scope_lens.test.ts index c8061ea3696..2ec5260d092 100644 --- a/test/items/scope_lens.test.ts +++ b/test/items/scope_lens.test.ts @@ -1,6 +1,6 @@ import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phase from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -23,21 +23,21 @@ describe("Items - Scope Lens", () => { game = new GameManager(phaserGame); game.override - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.SPLASH) - .moveset([Moves.POUND]) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH) + .moveset([MoveId.POUND]) .startingHeldItems([{ name: "SCOPE_LENS" }]) .battleStyle("single"); }, 20000); it("should raise CRIT stage by 1", async () => { - await game.classicMode.startBattle([Species.GASTLY]); + await game.classicMode.startBattle([SpeciesId.GASTLY]); const enemyPokemon = game.scene.getEnemyPokemon()!; vi.spyOn(enemyPokemon, "getCritStage"); - game.move.select(Moves.POUND); + game.move.select(MoveId.POUND); await game.phaseInterceptor.to(TurnEndPhase); diff --git a/test/items/temp_stat_stage_booster.test.ts b/test/items/temp_stat_stage_booster.test.ts index a3cfc3256bb..a58c2d611c9 100644 --- a/test/items/temp_stat_stage_booster.test.ts +++ b/test/items/temp_stat_stage_booster.test.ts @@ -1,11 +1,11 @@ import { BATTLE_STATS, Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import Phase from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { Moves } from "#app/enums/moves"; +import { MoveId } from "#enums/move-id"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { TempStatStageBoosterModifier } from "#app/modifier/modifier"; import { UiMode } from "#enums/ui-mode"; import { Button } from "#app/enums/buttons"; @@ -31,21 +31,21 @@ describe("Items - Temporary Stat Stage Boosters", () => { game.override .battleStyle("single") - .enemySpecies(Species.SHUCKLE) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH) - .moveset([Moves.TACKLE, Moves.SPLASH, Moves.HONE_CLAWS, Moves.BELLY_DRUM]) + .enemySpecies(SpeciesId.SHUCKLE) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset([MoveId.TACKLE, MoveId.SPLASH, MoveId.HONE_CLAWS, MoveId.BELLY_DRUM]) .startingModifier([{ name: "TEMP_STAT_STAGE_BOOSTER", type: Stat.ATK }]); }); it("should provide a x1.3 stat stage multiplier", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const partyMember = game.scene.getPlayerPokemon()!; vi.spyOn(partyMember, "getStatStageMultiplier"); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.runFrom("EnemyCommandPhase").to(TurnEndPhase); @@ -53,20 +53,20 @@ describe("Items - Temporary Stat Stage Boosters", () => { }, 20000); it("should increase existing ACC stat stage by 1 for X_ACCURACY only", async () => { - game.override.startingModifier([{ name: "TEMP_STAT_STAGE_BOOSTER", type: Stat.ACC }]).ability(Abilities.SIMPLE); + game.override.startingModifier([{ name: "TEMP_STAT_STAGE_BOOSTER", type: Stat.ACC }]).ability(AbilityId.SIMPLE); - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const partyMember = game.scene.getPlayerPokemon()!; vi.spyOn(partyMember, "getAccuracyMultiplier"); // Raise ACC by +2 stat stages - game.move.select(Moves.HONE_CLAWS); + game.move.select(MoveId.HONE_CLAWS); await game.phaseInterceptor.to(TurnEndPhase); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); @@ -75,18 +75,18 @@ describe("Items - Temporary Stat Stage Boosters", () => { }, 20000); it("should increase existing stat stage multiplier by 3/10 for the rest of the boosters", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const partyMember = game.scene.getPlayerPokemon()!; vi.spyOn(partyMember, "getStatStageMultiplier"); // Raise ATK by +1 stat stage - game.move.select(Moves.HONE_CLAWS); + game.move.select(MoveId.HONE_CLAWS); await game.phaseInterceptor.to(TurnEndPhase); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); @@ -100,7 +100,7 @@ describe("Items - Temporary Stat Stage Boosters", () => { { name: "TEMP_STAT_STAGE_BOOSTER", type: Stat.ATK }, ]); - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const partyMember = game.scene.getPlayerPokemon()!; @@ -110,7 +110,7 @@ describe("Items - Temporary Stat Stage Boosters", () => { // Set all stat stages to 6 vi.spyOn(partyMember.summonData, "statStages", "get").mockReturnValue(new Array(BATTLE_STATS.length).fill(6)); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnEndPhase); @@ -121,9 +121,9 @@ describe("Items - Temporary Stat Stage Boosters", () => { it("should renew how many battles are left of existing booster when picking up new booster of same type", async () => { game.override.startingLevel(200).itemRewards([{ name: "TEMP_STAT_STAGE_BOOSTER", type: Stat.ATK }]); - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); diff --git a/test/items/thick_club.test.ts b/test/items/thick_club.test.ts index 350735a363c..cff080d0e42 100644 --- a/test/items/thick_club.test.ts +++ b/test/items/thick_club.test.ts @@ -3,7 +3,7 @@ import { SpeciesStatBoosterModifier } from "#app/modifier/modifier"; import { modifierTypes } from "#app/modifier/modifier-type"; import i18next from "#app/plugins/i18n"; import { NumberHolder, randInt } from "#app/utils/common"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phase from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -31,7 +31,7 @@ describe("Items - Thick Club", () => { it("THICK_CLUB activates in battle correctly", async () => { game.override.startingHeldItems([{ name: "RARE_SPECIES_STAT_BOOSTER", type: "THICK_CLUB" }]); const consoleSpy = vi.spyOn(console, "log"); - await game.classicMode.startBattle([Species.CUBONE]); + await game.classicMode.startBattle([SpeciesId.CUBONE]); const partyMember = game.scene.getPlayerParty()[0]; @@ -82,7 +82,7 @@ describe("Items - Thick Club", () => { }); it("THICK_CLUB held by CUBONE", async () => { - await game.classicMode.startBattle([Species.CUBONE]); + await game.classicMode.startBattle([SpeciesId.CUBONE]); const partyMember = game.scene.getPlayerParty()[0]; @@ -105,7 +105,7 @@ describe("Items - Thick Club", () => { }); it("THICK_CLUB held by MAROWAK", async () => { - await game.classicMode.startBattle([Species.MAROWAK]); + await game.classicMode.startBattle([SpeciesId.MAROWAK]); const partyMember = game.scene.getPlayerParty()[0]; @@ -128,7 +128,7 @@ describe("Items - Thick Club", () => { }); it("THICK_CLUB held by ALOLA_MAROWAK", async () => { - await game.classicMode.startBattle([Species.ALOLA_MAROWAK]); + await game.classicMode.startBattle([SpeciesId.ALOLA_MAROWAK]); const partyMember = game.scene.getPlayerParty()[0]; @@ -152,10 +152,10 @@ describe("Items - Thick Club", () => { it("THICK_CLUB held by fused CUBONE line (base)", async () => { // Randomly choose from the Cubone line - const species = [Species.CUBONE, Species.MAROWAK, Species.ALOLA_MAROWAK]; + const species = [SpeciesId.CUBONE, SpeciesId.MAROWAK, SpeciesId.ALOLA_MAROWAK]; const randSpecies = randInt(species.length); - await game.classicMode.startBattle([species[randSpecies], Species.PIKACHU]); + await game.classicMode.startBattle([species[randSpecies], SpeciesId.PIKACHU]); const partyMember = game.scene.getPlayerParty()[0]; const ally = game.scene.getPlayerParty()[1]; @@ -189,10 +189,10 @@ describe("Items - Thick Club", () => { it("THICK_CLUB held by fused CUBONE line (part)", async () => { // Randomly choose from the Cubone line - const species = [Species.CUBONE, Species.MAROWAK, Species.ALOLA_MAROWAK]; + const species = [SpeciesId.CUBONE, SpeciesId.MAROWAK, SpeciesId.ALOLA_MAROWAK]; const randSpecies = randInt(species.length); - await game.classicMode.startBattle([Species.PIKACHU, species[randSpecies]]); + await game.classicMode.startBattle([SpeciesId.PIKACHU, species[randSpecies]]); const partyMember = game.scene.getPlayerParty()[0]; const ally = game.scene.getPlayerParty()[1]; @@ -225,7 +225,7 @@ describe("Items - Thick Club", () => { }); it("THICK_CLUB not held by CUBONE", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const partyMember = game.scene.getPlayerParty()[0]; diff --git a/test/items/toxic_orb.test.ts b/test/items/toxic_orb.test.ts index d02679e17c1..e0d86655028 100644 --- a/test/items/toxic_orb.test.ts +++ b/test/items/toxic_orb.test.ts @@ -1,7 +1,7 @@ import i18next from "#app/plugins/i18n"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -25,11 +25,11 @@ describe("Items - Toxic orb", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.MAGIKARP) - .ability(Abilities.BALL_FETCH) - .enemyAbility(Abilities.BALL_FETCH) - .moveset(Moves.SPLASH) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.MAGIKARP) + .ability(AbilityId.BALL_FETCH) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset(MoveId.SPLASH) + .enemyMoveset(MoveId.SPLASH) .startingHeldItems([ { name: "TOXIC_ORB", @@ -40,12 +40,12 @@ describe("Items - Toxic orb", () => { }); it("should badly poison the holder", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const player = game.scene.getPlayerPokemon()!; expect(player.getHeldItems()[0].type.id).toBe("TOXIC_ORB"); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("MessagePhase"); diff --git a/test/moves/after_you.test.ts b/test/moves/after_you.test.ts index 3fa7c9ceb0a..adf9cae707a 100644 --- a/test/moves/after_you.test.ts +++ b/test/moves/after_you.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { MoveResult } from "#app/field/pokemon"; import { MovePhase } from "#app/phases/move-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -27,18 +27,18 @@ describe("Moves - After You", () => { game.override .battleStyle("double") .enemyLevel(5) - .enemySpecies(Species.PIKACHU) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) - .ability(Abilities.BALL_FETCH) - .moveset([Moves.AFTER_YOU, Moves.SPLASH]); + .enemySpecies(SpeciesId.PIKACHU) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .ability(AbilityId.BALL_FETCH) + .moveset([MoveId.AFTER_YOU, MoveId.SPLASH]); }); it("makes the target move immediately after the user", async () => { - await game.classicMode.startBattle([Species.REGIELEKI, Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI, SpeciesId.SHUCKLE]); - game.move.select(Moves.AFTER_YOU, 0, BattlerIndex.PLAYER_2); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.AFTER_YOU, 0, BattlerIndex.PLAYER_2); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("MoveEffectPhase"); await game.phaseInterceptor.to(MovePhase, false); @@ -48,11 +48,11 @@ describe("Moves - After You", () => { }); it("fails if target already moved", async () => { - game.override.enemySpecies(Species.SHUCKLE); - await game.classicMode.startBattle([Species.REGIELEKI, Species.PIKACHU]); + game.override.enemySpecies(SpeciesId.SHUCKLE); + await game.classicMode.startBattle([SpeciesId.REGIELEKI, SpeciesId.PIKACHU]); - game.move.select(Moves.SPLASH); - game.move.select(Moves.AFTER_YOU, 1, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.AFTER_YOU, 1, BattlerIndex.PLAYER); await game.phaseInterceptor.to("MoveEndPhase"); await game.phaseInterceptor.to("MoveEndPhase"); diff --git a/test/moves/alluring_voice.test.ts b/test/moves/alluring_voice.test.ts index 9265c5f970d..2cfb7a76317 100644 --- a/test/moves/alluring_voice.test.ts +++ b/test/moves/alluring_voice.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { BerryPhase } from "#app/phases/berry-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -27,20 +27,20 @@ describe("Moves - Alluring Voice", () => { game.override .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.ICE_SCALES) - .enemyMoveset(Moves.HOWL) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.ICE_SCALES) + .enemyMoveset(MoveId.HOWL) .startingLevel(10) .enemyLevel(10) - .ability(Abilities.BALL_FETCH); + .ability(AbilityId.BALL_FETCH); }); it("should confuse the opponent if their stat stages were raised", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon()!; - game.move.use(Moves.ALLURING_VOICE); + game.move.use(MoveId.ALLURING_VOICE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to(BerryPhase); diff --git a/test/moves/aromatherapy.test.ts b/test/moves/aromatherapy.test.ts index c361f4e8bbd..bfe315a1390 100644 --- a/test/moves/aromatherapy.test.ts +++ b/test/moves/aromatherapy.test.ts @@ -1,8 +1,8 @@ import { StatusEffect } from "#app/enums/status-effect"; import { CommandPhase } from "#app/phases/command-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; @@ -24,24 +24,24 @@ describe("Moves - Aromatherapy", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.AROMATHERAPY, Moves.SPLASH]) + .moveset([MoveId.AROMATHERAPY, MoveId.SPLASH]) .statusEffect(StatusEffect.BURN) .battleStyle("double") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should cure status effect of the user, its ally, and all party pokemon", async () => { - await game.classicMode.startBattle([Species.RATTATA, Species.RATTATA, Species.RATTATA]); + await game.classicMode.startBattle([SpeciesId.RATTATA, SpeciesId.RATTATA, SpeciesId.RATTATA]); const [leftPlayer, rightPlayer, partyPokemon] = game.scene.getPlayerParty(); vi.spyOn(leftPlayer, "resetStatus"); vi.spyOn(rightPlayer, "resetStatus"); vi.spyOn(partyPokemon, "resetStatus"); - game.move.select(Moves.AROMATHERAPY, 0); + game.move.select(MoveId.AROMATHERAPY, 0); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(leftPlayer.resetStatus).toHaveBeenCalledOnce(); @@ -55,15 +55,15 @@ describe("Moves - Aromatherapy", () => { it("should not cure status effect of the target/target's allies", async () => { game.override.enemyStatusEffect(StatusEffect.BURN); - await game.classicMode.startBattle([Species.RATTATA, Species.RATTATA]); + await game.classicMode.startBattle([SpeciesId.RATTATA, SpeciesId.RATTATA]); const [leftOpp, rightOpp] = game.scene.getEnemyField(); vi.spyOn(leftOpp, "resetStatus"); vi.spyOn(rightOpp, "resetStatus"); - game.move.select(Moves.AROMATHERAPY, 0); + game.move.select(MoveId.AROMATHERAPY, 0); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(leftOpp.resetStatus).toHaveBeenCalledTimes(0); @@ -77,17 +77,17 @@ describe("Moves - Aromatherapy", () => { }); it("should not cure status effect of allies ON FIELD with Sap Sipper, should still cure allies in party", async () => { - game.override.ability(Abilities.SAP_SIPPER); - await game.classicMode.startBattle([Species.RATTATA, Species.RATTATA, Species.RATTATA]); + game.override.ability(AbilityId.SAP_SIPPER); + await game.classicMode.startBattle([SpeciesId.RATTATA, SpeciesId.RATTATA, SpeciesId.RATTATA]); const [leftPlayer, rightPlayer, partyPokemon] = game.scene.getPlayerParty(); vi.spyOn(leftPlayer, "resetStatus"); vi.spyOn(rightPlayer, "resetStatus"); vi.spyOn(partyPokemon, "resetStatus"); - game.move.select(Moves.AROMATHERAPY, 0); + game.move.select(MoveId.AROMATHERAPY, 0); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(leftPlayer.resetStatus).toHaveBeenCalledOnce(); diff --git a/test/moves/assist.test.ts b/test/moves/assist.test.ts index d0385399811..c0bdf2deea2 100644 --- a/test/moves/assist.test.ts +++ b/test/moves/assist.test.ts @@ -2,9 +2,9 @@ import { BattlerIndex } from "#app/battle"; import { Stat } from "#app/enums/stat"; import { MoveResult } from "#app/field/pokemon"; import { CommandPhase } from "#app/phases/command-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -28,26 +28,26 @@ describe("Moves - Assist", () => { // Manual moveset overrides are required for the player pokemon in these tests // because the normal moveset override doesn't allow for accurate testing of moveset changes game.override - .ability(Abilities.BALL_FETCH) + .ability(AbilityId.BALL_FETCH) .battleStyle("double") .disableCrits() - .enemySpecies(Species.MAGIKARP) + .enemySpecies(SpeciesId.MAGIKARP) .enemyLevel(100) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should only use an ally's moves", async () => { - game.override.enemyMoveset(Moves.SWORDS_DANCE); - await game.classicMode.startBattle([Species.FEEBAS, Species.SHUCKLE]); + game.override.enemyMoveset(MoveId.SWORDS_DANCE); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.SHUCKLE]); const [feebas, shuckle] = game.scene.getPlayerField(); // These are all moves Assist cannot call; Sketch will be used to test that it can call other moves properly - game.move.changeMoveset(feebas, [Moves.ASSIST, Moves.SKETCH, Moves.PROTECT, Moves.DRAGON_TAIL]); - game.move.changeMoveset(shuckle, [Moves.ASSIST, Moves.SKETCH, Moves.PROTECT, Moves.DRAGON_TAIL]); + game.move.changeMoveset(feebas, [MoveId.ASSIST, MoveId.SKETCH, MoveId.PROTECT, MoveId.DRAGON_TAIL]); + game.move.changeMoveset(shuckle, [MoveId.ASSIST, MoveId.SKETCH, MoveId.PROTECT, MoveId.DRAGON_TAIL]); - game.move.select(Moves.ASSIST, 0); - game.move.select(Moves.SKETCH, 1); + game.move.select(MoveId.ASSIST, 0); + game.move.select(MoveId.SKETCH, 1); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER]); // Player_2 uses Sketch, copies Swords Dance, Player_1 uses Assist, uses Player_2's Sketched Swords Dance await game.toNextTurn(); @@ -56,48 +56,48 @@ describe("Moves - Assist", () => { }); it("should fail if there are no allies", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const feebas = game.scene.getPlayerPokemon()!; - game.move.changeMoveset(feebas, [Moves.ASSIST, Moves.SKETCH, Moves.PROTECT, Moves.DRAGON_TAIL]); + game.move.changeMoveset(feebas, [MoveId.ASSIST, MoveId.SKETCH, MoveId.PROTECT, MoveId.DRAGON_TAIL]); - game.move.select(Moves.ASSIST, 0); + game.move.select(MoveId.ASSIST, 0); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should fail if ally has no usable moves and user has usable moves", async () => { - game.override.enemyMoveset(Moves.SWORDS_DANCE); - await game.classicMode.startBattle([Species.FEEBAS, Species.SHUCKLE]); + game.override.enemyMoveset(MoveId.SWORDS_DANCE); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.SHUCKLE]); const [feebas, shuckle] = game.scene.getPlayerField(); - game.move.changeMoveset(feebas, [Moves.ASSIST, Moves.SKETCH, Moves.PROTECT, Moves.DRAGON_TAIL]); - game.move.changeMoveset(shuckle, [Moves.ASSIST, Moves.SKETCH, Moves.PROTECT, Moves.DRAGON_TAIL]); + game.move.changeMoveset(feebas, [MoveId.ASSIST, MoveId.SKETCH, MoveId.PROTECT, MoveId.DRAGON_TAIL]); + game.move.changeMoveset(shuckle, [MoveId.ASSIST, MoveId.SKETCH, MoveId.PROTECT, MoveId.DRAGON_TAIL]); - game.move.select(Moves.SKETCH, 0); - game.move.select(Moves.PROTECT, 1); + game.move.select(MoveId.SKETCH, 0); + game.move.select(MoveId.PROTECT, 1); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2]); // Player uses Sketch to copy Swords Dance, Player_2 stalls a turn. Player will attempt Assist and should have no usable moves await game.toNextTurn(); - game.move.select(Moves.ASSIST, 0); + game.move.select(MoveId.ASSIST, 0); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.PROTECT, 1); + game.move.select(MoveId.PROTECT, 1); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should apply secondary effects of a move", async () => { - game.override.moveset([Moves.ASSIST, Moves.WOOD_HAMMER, Moves.WOOD_HAMMER, Moves.WOOD_HAMMER]); - await game.classicMode.startBattle([Species.FEEBAS, Species.SHUCKLE]); + game.override.moveset([MoveId.ASSIST, MoveId.WOOD_HAMMER, MoveId.WOOD_HAMMER, MoveId.WOOD_HAMMER]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.SHUCKLE]); const [feebas, shuckle] = game.scene.getPlayerField(); - game.move.changeMoveset(feebas, [Moves.ASSIST, Moves.SKETCH, Moves.PROTECT, Moves.DRAGON_TAIL]); - game.move.changeMoveset(shuckle, [Moves.ASSIST, Moves.SKETCH, Moves.PROTECT, Moves.DRAGON_TAIL]); + game.move.changeMoveset(feebas, [MoveId.ASSIST, MoveId.SKETCH, MoveId.PROTECT, MoveId.DRAGON_TAIL]); + game.move.changeMoveset(shuckle, [MoveId.ASSIST, MoveId.SKETCH, MoveId.PROTECT, MoveId.DRAGON_TAIL]); - game.move.select(Moves.ASSIST, 0); + game.move.select(MoveId.ASSIST, 0); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.ASSIST, 1); + game.move.select(MoveId.ASSIST, 1); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!.isFullHp()).toBeFalsy(); // should receive recoil damage from Wood Hammer diff --git a/test/moves/astonish.test.ts b/test/moves/astonish.test.ts index c07b0d7d2c5..48deadf7a01 100644 --- a/test/moves/astonish.test.ts +++ b/test/moves/astonish.test.ts @@ -4,9 +4,9 @@ import { BerryPhase } from "#app/phases/berry-phase"; import { CommandPhase } from "#app/phases/command-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; @@ -29,24 +29,24 @@ describe("Moves - Astonish", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .moveset([Moves.ASTONISH, Moves.SPLASH]) - .enemySpecies(Species.BLASTOISE) - .enemyAbility(Abilities.INSOMNIA) - .enemyMoveset(Moves.TACKLE) + .moveset([MoveId.ASTONISH, MoveId.SPLASH]) + .enemySpecies(SpeciesId.BLASTOISE) + .enemyAbility(AbilityId.INSOMNIA) + .enemyMoveset(MoveId.TACKLE) .startingLevel(100) .enemyLevel(100); - vi.spyOn(allMoves[Moves.ASTONISH], "chance", "get").mockReturnValue(100); + vi.spyOn(allMoves[MoveId.ASTONISH], "chance", "get").mockReturnValue(100); }); test("move effect should cancel the target's move on the turn it applies", async () => { - await game.classicMode.startBattle([Species.MEOWSCARADA]); + await game.classicMode.startBattle([SpeciesId.MEOWSCARADA]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.ASTONISH); + game.move.select(MoveId.ASTONISH); await game.phaseInterceptor.to(MoveEndPhase, false); @@ -59,7 +59,7 @@ describe("Moves - Astonish", () => { await game.phaseInterceptor.to(CommandPhase, false); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/aurora_veil.test.ts b/test/moves/aurora_veil.test.ts index 76569ac4a0e..7a00be40d3d 100644 --- a/test/moves/aurora_veil.test.ts +++ b/test/moves/aurora_veil.test.ts @@ -7,9 +7,9 @@ import { ArenaTagType } from "#app/enums/arena-tag-type"; import type Pokemon from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { NumberHolder } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -38,18 +38,18 @@ describe("Moves - Aurora Veil", () => { globalScene = game.scene; game.override .battleStyle("single") - .ability(Abilities.BALL_FETCH) - .moveset([Moves.ABSORB, Moves.ROCK_SLIDE, Moves.TACKLE]) + .ability(AbilityId.BALL_FETCH) + .moveset([MoveId.ABSORB, MoveId.ROCK_SLIDE, MoveId.TACKLE]) .enemyLevel(100) - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.AURORA_VEIL) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.AURORA_VEIL) .disableCrits() .weather(WeatherType.HAIL); }); it("reduces damage of physical attacks by half in a single battle", async () => { - const moveToUse = Moves.TACKLE; - await game.classicMode.startBattle([Species.SHUCKLE]); + const moveToUse = MoveId.TACKLE; + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); game.move.select(moveToUse); @@ -66,8 +66,8 @@ describe("Moves - Aurora Veil", () => { it("reduces damage of physical attacks by a third in a double battle", async () => { game.override.battleStyle("double"); - const moveToUse = Moves.ROCK_SLIDE; - await game.classicMode.startBattle([Species.SHUCKLE, Species.SHUCKLE]); + const moveToUse = MoveId.ROCK_SLIDE; + await game.classicMode.startBattle([SpeciesId.SHUCKLE, SpeciesId.SHUCKLE]); game.move.select(moveToUse); game.move.select(moveToUse, 1); @@ -83,8 +83,8 @@ describe("Moves - Aurora Veil", () => { }); it("reduces damage of special attacks by half in a single battle", async () => { - const moveToUse = Moves.ABSORB; - await game.classicMode.startBattle([Species.SHUCKLE]); + const moveToUse = MoveId.ABSORB; + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); game.move.select(moveToUse); @@ -102,8 +102,8 @@ describe("Moves - Aurora Veil", () => { it("reduces damage of special attacks by a third in a double battle", async () => { game.override.battleStyle("double"); - const moveToUse = Moves.DAZZLING_GLEAM; - await game.classicMode.startBattle([Species.SHUCKLE, Species.SHUCKLE]); + const moveToUse = MoveId.DAZZLING_GLEAM; + await game.classicMode.startBattle([SpeciesId.SHUCKLE, SpeciesId.SHUCKLE]); game.move.select(moveToUse); game.move.select(moveToUse, 1); @@ -119,9 +119,9 @@ describe("Moves - Aurora Veil", () => { }); it("does not affect physical critical hits", async () => { - game.override.moveset([Moves.WICKED_BLOW]); - const moveToUse = Moves.WICKED_BLOW; - await game.classicMode.startBattle([Species.SHUCKLE]); + game.override.moveset([MoveId.WICKED_BLOW]); + const moveToUse = MoveId.WICKED_BLOW; + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); game.move.select(moveToUse); await game.phaseInterceptor.to(TurnEndPhase); @@ -135,10 +135,10 @@ describe("Moves - Aurora Veil", () => { }); it("does not affect critical hits", async () => { - game.override.moveset([Moves.FROST_BREATH]); - const moveToUse = Moves.FROST_BREATH; - vi.spyOn(allMoves[Moves.FROST_BREATH], "accuracy", "get").mockReturnValue(100); - await game.classicMode.startBattle([Species.SHUCKLE]); + game.override.moveset([MoveId.FROST_BREATH]); + const moveToUse = MoveId.FROST_BREATH; + vi.spyOn(allMoves[MoveId.FROST_BREATH], "accuracy", "get").mockReturnValue(100); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); game.move.select(moveToUse); await game.phaseInterceptor.to(TurnEndPhase); @@ -153,7 +153,7 @@ describe("Moves - Aurora Veil", () => { }); /** - * Calculates the damage of a move multiplied by screen's multiplier, Auroa Veil in this case {@linkcode Moves.AURORA_VEIL}. + * Calculates the damage of a move multiplied by screen's multiplier, Auroa Veil in this case {@linkcode MoveId.AURORA_VEIL}. * Please note this does not consider other damage calculations except the screen multiplier. * * @param defender - The defending Pokémon. diff --git a/test/moves/autotomize.test.ts b/test/moves/autotomize.test.ts index 08e55f242bc..000dd19b8f5 100644 --- a/test/moves/autotomize.test.ts +++ b/test/moves/autotomize.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; @@ -23,10 +23,10 @@ describe("Moves - Autotomize", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.AUTOTOMIZE, Moves.KINGS_SHIELD, Moves.FALSE_SWIPE]) + .moveset([MoveId.AUTOTOMIZE, MoveId.KINGS_SHIELD, MoveId.FALSE_SWIPE]) .battleStyle("single") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it( @@ -37,18 +37,18 @@ describe("Moves - Autotomize", () => { const twoAutotomizeDracozoltWeight = 0.1; const threeAutotomizeDracozoltWeight = 0.1; - await game.classicMode.startBattle([Species.DRACOZOLT]); + await game.classicMode.startBattle([SpeciesId.DRACOZOLT]); const playerPokemon = game.scene.getPlayerPokemon()!; expect(playerPokemon.getWeight()).toBe(baseDracozoltWeight); - game.move.select(Moves.AUTOTOMIZE); + game.move.select(MoveId.AUTOTOMIZE); await game.toNextTurn(); expect(playerPokemon.getWeight()).toBe(oneAutotomizeDracozoltWeight); - game.move.select(Moves.AUTOTOMIZE); + game.move.select(MoveId.AUTOTOMIZE); await game.toNextTurn(); expect(playerPokemon.getWeight()).toBe(twoAutotomizeDracozoltWeight); - game.move.select(Moves.AUTOTOMIZE); + game.move.select(MoveId.AUTOTOMIZE); await game.toNextTurn(); expect(playerPokemon.getWeight()).toBe(threeAutotomizeDracozoltWeight); }, @@ -61,30 +61,30 @@ describe("Moves - Autotomize", () => { const baseAegislashWeight = 53; const autotomizeAegislashWeight = 0.1; - await game.classicMode.startBattle([Species.AEGISLASH]); + await game.classicMode.startBattle([SpeciesId.AEGISLASH]); const playerPokemon = game.scene.getPlayerPokemon()!; expect(playerPokemon.getWeight()).toBe(baseAegislashWeight); - game.move.select(Moves.AUTOTOMIZE); + game.move.select(MoveId.AUTOTOMIZE); await game.toNextTurn(); expect(playerPokemon.getWeight()).toBe(autotomizeAegislashWeight); // Transform to sword form - game.move.select(Moves.FALSE_SWIPE); + game.move.select(MoveId.FALSE_SWIPE); await game.toNextTurn(); expect(playerPokemon.getWeight()).toBe(baseAegislashWeight); - game.move.select(Moves.AUTOTOMIZE); + game.move.select(MoveId.AUTOTOMIZE); await game.toNextTurn(); expect(playerPokemon.getWeight()).toBe(autotomizeAegislashWeight); // Transform to shield form - game.move.select(Moves.KINGS_SHIELD); + game.move.select(MoveId.KINGS_SHIELD); await game.toNextTurn(); expect(playerPokemon.getWeight()).toBe(baseAegislashWeight); - game.move.select(Moves.AUTOTOMIZE); + game.move.select(MoveId.AUTOTOMIZE); await game.toNextTurn(); expect(playerPokemon.getWeight()).toBe(autotomizeAegislashWeight); }, @@ -96,11 +96,11 @@ describe("Moves - Autotomize", () => { async () => { const baseLightGroudonWeight = 475; const autotomizeLightGroudonWeight = 425; - game.override.ability(Abilities.LIGHT_METAL); - await game.classicMode.startBattle([Species.GROUDON]); + game.override.ability(AbilityId.LIGHT_METAL); + await game.classicMode.startBattle([SpeciesId.GROUDON]); const playerPokemon = game.scene.getPlayerPokemon()!; expect(playerPokemon.getWeight()).toBe(baseLightGroudonWeight); - game.move.select(Moves.AUTOTOMIZE); + game.move.select(MoveId.AUTOTOMIZE); await game.toNextTurn(); expect(playerPokemon.getWeight()).toBe(autotomizeLightGroudonWeight); }, diff --git a/test/moves/baddy_bad.test.ts b/test/moves/baddy_bad.test.ts index ed6c9239eea..ffdf9f0309c 100644 --- a/test/moves/baddy_bad.test.ts +++ b/test/moves/baddy_bad.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -21,19 +21,19 @@ describe("Moves - Baddy Bad", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) + .moveset([MoveId.SPLASH]) .battleStyle("single") - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) - .ability(Abilities.BALL_FETCH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .ability(AbilityId.BALL_FETCH); }); it("should not activate Reflect if the move fails due to Protect", async () => { - game.override.enemyMoveset(Moves.PROTECT); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.enemyMoveset(MoveId.PROTECT); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.BADDY_BAD); + game.move.select(MoveId.BADDY_BAD); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.tags.length).toBe(0); diff --git a/test/moves/baneful_bunker.test.ts b/test/moves/baneful_bunker.test.ts index 4d0d7237c00..80b9b5470b1 100644 --- a/test/moves/baneful_bunker.test.ts +++ b/test/moves/baneful_bunker.test.ts @@ -1,9 +1,9 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { BattlerIndex } from "#app/battle"; import { StatusEffect } from "#app/enums/status-effect"; @@ -26,34 +26,34 @@ describe("Moves - Baneful Bunker", () => { game.override.battleStyle("single"); - game.override.moveset(Moves.SLASH); + game.override.moveset(MoveId.SLASH); - game.override.enemySpecies(Species.SNORLAX); - game.override.enemyAbility(Abilities.INSOMNIA); - game.override.enemyMoveset(Moves.BANEFUL_BUNKER); + game.override.enemySpecies(SpeciesId.SNORLAX); + game.override.enemyAbility(AbilityId.INSOMNIA); + game.override.enemyMoveset(MoveId.BANEFUL_BUNKER); game.override.startingLevel(100); game.override.enemyLevel(100); }); test("should protect the user and poison attackers that make contact", async () => { - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SLASH); + game.move.select(MoveId.SLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase", false); expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); expect(leadPokemon.status?.effect === StatusEffect.POISON).toBeTruthy(); }); test("should protect the user and poison attackers that make contact, regardless of accuracy checks", async () => { - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SLASH); + game.move.select(MoveId.SLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -64,13 +64,13 @@ describe("Moves - Baneful Bunker", () => { }); test("should not poison attackers that don't make contact", async () => { - game.override.moveset(Moves.FLASH_CANNON); - await game.classicMode.startBattle([Species.CHARIZARD]); + game.override.moveset(MoveId.FLASH_CANNON); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.FLASH_CANNON); + game.move.select(MoveId.FLASH_CANNON); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("MoveEffectPhase"); diff --git a/test/moves/baton_pass.test.ts b/test/moves/baton_pass.test.ts index 143ed285023..b39e51428b1 100644 --- a/test/moves/baton_pass.test.ts +++ b/test/moves/baton_pass.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; import GameManager from "#test/testUtils/gameManager"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -26,20 +26,20 @@ describe("Moves - Baton Pass", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .moveset([Moves.BATON_PASS, Moves.NASTY_PLOT, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset([MoveId.BATON_PASS, MoveId.NASTY_PLOT, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) .disableCrits(); }); it("transfers all stat stages when player uses it", async () => { // arrange - await game.classicMode.startBattle([Species.RAICHU, Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.RAICHU, SpeciesId.SHUCKLE]); // round 1 - buff - game.move.select(Moves.NASTY_PLOT); + game.move.select(MoveId.NASTY_PLOT); await game.toNextTurn(); let playerPokemon = game.scene.getPlayerPokemon()!; @@ -47,32 +47,32 @@ describe("Moves - Baton Pass", () => { expect(playerPokemon.getStatStage(Stat.SPATK)).toEqual(2); // round 2 - baton pass - game.move.select(Moves.BATON_PASS); + game.move.select(MoveId.BATON_PASS); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); // assert playerPokemon = game.scene.getPlayerPokemon()!; - expect(playerPokemon.species.speciesId).toEqual(Species.SHUCKLE); + expect(playerPokemon.species.speciesId).toEqual(SpeciesId.SHUCKLE); expect(playerPokemon.getStatStage(Stat.SPATK)).toEqual(2); }, 20000); it("passes stat stage buffs when AI uses it", async () => { // arrange - game.override.startingWave(5).enemyMoveset(new Array(4).fill([Moves.NASTY_PLOT])); - await game.classicMode.startBattle([Species.RAICHU, Species.SHUCKLE]); + game.override.startingWave(5).enemyMoveset(new Array(4).fill([MoveId.NASTY_PLOT])); + await game.classicMode.startBattle([SpeciesId.RAICHU, SpeciesId.SHUCKLE]); // round 1 - ai buffs - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // round 2 - baton pass game.scene.getEnemyPokemon()!.hp = 100; - game.override.enemyMoveset([Moves.BATON_PASS]); + game.override.enemyMoveset([MoveId.BATON_PASS]); // Force moveset to update mid-battle // TODO: replace with enemy ai control function when it's added game.scene.getEnemyParty()[0].getMoveset(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("PostSummonPhase", false); // assert @@ -90,12 +90,12 @@ describe("Moves - Baton Pass", () => { }, 20000); it("doesn't transfer effects that aren't transferrable", async () => { - game.override.enemyMoveset([Moves.SALT_CURE]); - await game.classicMode.startBattle([Species.PIKACHU, Species.FEEBAS]); + game.override.enemyMoveset([MoveId.SALT_CURE]); + await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.FEEBAS]); const [player1, player2] = game.scene.getPlayerParty(); - game.move.select(Moves.BATON_PASS); + game.move.select(MoveId.BATON_PASS); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("MoveEndPhase"); expect(player1.findTag(t => t.tagType === BattlerTagType.SALT_CURED)).toBeTruthy(); @@ -106,13 +106,13 @@ describe("Moves - Baton Pass", () => { }, 20000); it("doesn't allow binding effects from the user to persist", async () => { - game.override.moveset([Moves.FIRE_SPIN, Moves.BATON_PASS]); + game.override.moveset([MoveId.FIRE_SPIN, MoveId.BATON_PASS]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.FIRE_SPIN); + game.move.select(MoveId.FIRE_SPIN); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceHit(); @@ -120,7 +120,7 @@ describe("Moves - Baton Pass", () => { expect(enemy.getTag(BattlerTagType.FIRE_SPIN)).toBeDefined(); - game.move.select(Moves.BATON_PASS); + game.move.select(MoveId.BATON_PASS); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); game.doSelectPartyPokemon(1); diff --git a/test/moves/beak_blast.test.ts b/test/moves/beak_blast.test.ts index 45841cecd52..ad2959e5101 100644 --- a/test/moves/beak_blast.test.ts +++ b/test/moves/beak_blast.test.ts @@ -3,9 +3,9 @@ import { StatusEffect } from "#app/enums/status-effect"; import { BerryPhase } from "#app/phases/berry-phase"; import { MovePhase } from "#app/phases/move-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -28,22 +28,22 @@ describe("Moves - Beak Blast", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .ability(Abilities.UNNERVE) - .moveset([Moves.BEAK_BLAST]) - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.INSOMNIA) - .enemyMoveset([Moves.TACKLE]) + .ability(AbilityId.UNNERVE) + .moveset([MoveId.BEAK_BLAST]) + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.INSOMNIA) + .enemyMoveset([MoveId.TACKLE]) .startingLevel(100) .enemyLevel(100); }); it("should add a charge effect that burns attackers on contact", async () => { - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.BEAK_BLAST); + game.move.select(MoveId.BEAK_BLAST); await game.phaseInterceptor.to(MovePhase, false); expect(leadPokemon.getTag(BattlerTagType.BEAK_BLAST_CHARGING)).toBeDefined(); @@ -55,12 +55,12 @@ describe("Moves - Beak Blast", () => { it("should still charge and burn opponents if the user is sleeping", async () => { game.override.statusEffect(StatusEffect.SLEEP); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.BEAK_BLAST); + game.move.select(MoveId.BEAK_BLAST); await game.phaseInterceptor.to(MovePhase, false); expect(leadPokemon.getTag(BattlerTagType.BEAK_BLAST_CHARGING)).toBeDefined(); @@ -70,14 +70,14 @@ describe("Moves - Beak Blast", () => { }); it("should not burn attackers that don't make contact", async () => { - game.override.enemyMoveset([Moves.WATER_GUN]); + game.override.enemyMoveset([MoveId.WATER_GUN]); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.BEAK_BLAST); + game.move.select(MoveId.BEAK_BLAST); await game.phaseInterceptor.to(MovePhase, false); expect(leadPokemon.getTag(BattlerTagType.BEAK_BLAST_CHARGING)).toBeDefined(); @@ -89,25 +89,25 @@ describe("Moves - Beak Blast", () => { it("should only hit twice with Multi-Lens", async () => { game.override.startingHeldItems([{ name: "MULTI_LENS", count: 1 }]); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.BEAK_BLAST); + game.move.select(MoveId.BEAK_BLAST); await game.phaseInterceptor.to(BerryPhase, false); expect(leadPokemon.turnData.hitCount).toBe(2); }); it("should be blocked by Protect", async () => { - game.override.enemyMoveset([Moves.PROTECT]); + game.override.enemyMoveset([MoveId.PROTECT]); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.BEAK_BLAST); + game.move.select(MoveId.BEAK_BLAST); await game.phaseInterceptor.to(MovePhase, false); expect(leadPokemon.getTag(BattlerTagType.BEAK_BLAST_CHARGING)).toBeDefined(); @@ -118,21 +118,21 @@ describe("Moves - Beak Blast", () => { }); it("should still burn the enemy if the user is knocked out", async () => { - game.override.ability(Abilities.BALL_FETCH); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + game.override.ability(AbilityId.BALL_FETCH); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); const enemyPokemon = game.scene.getEnemyPokemon()!; const user = game.scene.getPlayerPokemon()!; user.hp = 1; - game.move.select(Moves.BEAK_BLAST); + game.move.select(MoveId.BEAK_BLAST); await game.phaseInterceptor.to("BerryPhase", false); expect(enemyPokemon.status?.effect).toBe(StatusEffect.BURN); }); it("should not burn a long reach enemy that hits the user with a contact move", async () => { - game.override.enemyAbility(Abilities.LONG_REACH); - game.override.enemyMoveset([Moves.FALSE_SWIPE]).enemyLevel(100); - await game.classicMode.startBattle([Species.MAGIKARP]); - game.move.select(Moves.BEAK_BLAST); + game.override.enemyAbility(AbilityId.LONG_REACH); + game.override.enemyMoveset([MoveId.FALSE_SWIPE]).enemyLevel(100); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + game.move.select(MoveId.BEAK_BLAST); await game.phaseInterceptor.to("BerryPhase", false); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon.status?.effect).not.toBe(StatusEffect.BURN); diff --git a/test/moves/beat_up.test.ts b/test/moves/beat_up.test.ts index 09166dafb9d..184204a91aa 100644 --- a/test/moves/beat_up.test.ts +++ b/test/moves/beat_up.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#app/enums/status-effect"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import GameManager from "#test/testUtils/gameManager"; @@ -25,30 +25,30 @@ describe("Moves - Beat Up", () => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.enemySpecies(Species.SNORLAX); + game.override.enemySpecies(SpeciesId.SNORLAX); game.override.enemyLevel(100); - game.override.enemyMoveset([Moves.SPLASH]); - game.override.enemyAbility(Abilities.INSOMNIA); + game.override.enemyMoveset([MoveId.SPLASH]); + game.override.enemyAbility(AbilityId.INSOMNIA); game.override.startingLevel(100); - game.override.moveset([Moves.BEAT_UP]); + game.override.moveset([MoveId.BEAT_UP]); }); it("should hit once for each healthy player Pokemon", async () => { await game.classicMode.startBattle([ - Species.MAGIKARP, - Species.BULBASAUR, - Species.CHARMANDER, - Species.SQUIRTLE, - Species.PIKACHU, - Species.EEVEE, + SpeciesId.MAGIKARP, + SpeciesId.BULBASAUR, + SpeciesId.CHARMANDER, + SpeciesId.SQUIRTLE, + SpeciesId.PIKACHU, + SpeciesId.EEVEE, ]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; let enemyStartingHp = enemyPokemon.hp; - game.move.select(Moves.BEAT_UP); + game.move.select(MoveId.BEAT_UP); await game.phaseInterceptor.to(MoveEffectPhase); @@ -64,19 +64,19 @@ describe("Moves - Beat Up", () => { it("should not count player Pokemon with status effects towards hit count", async () => { await game.classicMode.startBattle([ - Species.MAGIKARP, - Species.BULBASAUR, - Species.CHARMANDER, - Species.SQUIRTLE, - Species.PIKACHU, - Species.EEVEE, + SpeciesId.MAGIKARP, + SpeciesId.BULBASAUR, + SpeciesId.CHARMANDER, + SpeciesId.SQUIRTLE, + SpeciesId.PIKACHU, + SpeciesId.EEVEE, ]); const playerPokemon = game.scene.getPlayerPokemon()!; game.scene.getPlayerParty()[1].trySetStatus(StatusEffect.BURN); - game.move.select(Moves.BEAT_UP); + game.move.select(MoveId.BEAT_UP); await game.phaseInterceptor.to(MoveEffectPhase); diff --git a/test/moves/belly_drum.test.ts b/test/moves/belly_drum.test.ts index 9deff207446..239b3c3d794 100644 --- a/test/moves/belly_drum.test.ts +++ b/test/moves/belly_drum.test.ts @@ -1,12 +1,12 @@ import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { toDmgValue } from "#app/utils/common"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; // RATIO : HP Cost of Move const RATIO = 2; @@ -30,24 +30,24 @@ describe("Moves - BELLY DRUM", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .starterSpecies(Species.MAGIKARP) - .enemySpecies(Species.SNORLAX) + .starterSpecies(SpeciesId.MAGIKARP) + .enemySpecies(SpeciesId.SNORLAX) .startingLevel(100) .enemyLevel(100) - .moveset([Moves.BELLY_DRUM]) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH); + .moveset([MoveId.BELLY_DRUM]) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH); }); // Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/Belly_Drum_(move) test("raises the user's ATK stat stage to its max, at the cost of 1/2 of its maximum HP", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); - game.move.select(Moves.BELLY_DRUM); + game.move.select(MoveId.BELLY_DRUM); await game.phaseInterceptor.to(TurnEndPhase); expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp() - hpLost); @@ -55,7 +55,7 @@ describe("Moves - BELLY DRUM", () => { }); test("will still take effect if an uninvolved stat stage is at max", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); @@ -64,7 +64,7 @@ describe("Moves - BELLY DRUM", () => { leadPokemon.setStatStage(Stat.ATK, -3); leadPokemon.setStatStage(Stat.SPATK, 6); - game.move.select(Moves.BELLY_DRUM); + game.move.select(MoveId.BELLY_DRUM); await game.phaseInterceptor.to(TurnEndPhase); expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp() - hpLost); @@ -73,13 +73,13 @@ describe("Moves - BELLY DRUM", () => { }); test("fails if the pokemon's ATK stat stage is at its maximum", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; leadPokemon.setStatStage(Stat.ATK, 6); - game.move.select(Moves.BELLY_DRUM); + game.move.select(MoveId.BELLY_DRUM); await game.phaseInterceptor.to(TurnEndPhase); expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); @@ -87,13 +87,13 @@ describe("Moves - BELLY DRUM", () => { }); test("fails if the user's health is less than 1/2", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); leadPokemon.hp = hpLost - PREDAMAGE; - game.move.select(Moves.BELLY_DRUM); + game.move.select(MoveId.BELLY_DRUM); await game.phaseInterceptor.to(TurnEndPhase); expect(leadPokemon.hp).toBe(hpLost - PREDAMAGE); diff --git a/test/moves/burning_jealousy.test.ts b/test/moves/burning_jealousy.test.ts index 1d9ba974687..2a74f661922 100644 --- a/test/moves/burning_jealousy.test.ts +++ b/test/moves/burning_jealousy.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { StatusEffect } from "#app/enums/status-effect"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -27,14 +27,14 @@ describe("Moves - Burning Jealousy", () => { game.override .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.ICE_SCALES) - .enemyMoveset([Moves.HOWL]) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.ICE_SCALES) + .enemyMoveset([MoveId.HOWL]) .startingLevel(10) .enemyLevel(10) - .starterSpecies(Species.FEEBAS) - .ability(Abilities.BALL_FETCH) - .moveset([Moves.BURNING_JEALOUSY, Moves.GROWL]); + .starterSpecies(SpeciesId.FEEBAS) + .ability(AbilityId.BALL_FETCH) + .moveset([MoveId.BURNING_JEALOUSY, MoveId.GROWL]); }); it("should burn the opponent if their stat stages were raised", async () => { @@ -42,7 +42,7 @@ describe("Moves - Burning Jealousy", () => { const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.BURNING_JEALOUSY); + game.move.select(MoveId.BURNING_JEALOUSY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); @@ -51,12 +51,12 @@ describe("Moves - Burning Jealousy", () => { it("should still burn the opponent if their stat stages were both raised and lowered in the same turn", async () => { game.override.starterSpecies(0).battleStyle("double"); - await game.classicMode.startBattle([Species.FEEBAS, Species.ABRA]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.ABRA]); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.BURNING_JEALOUSY); - game.move.select(Moves.GROWL, 1); + game.move.select(MoveId.BURNING_JEALOUSY); + game.move.select(MoveId.GROWL, 1); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); @@ -64,12 +64,12 @@ describe("Moves - Burning Jealousy", () => { }); it("should ignore stat stages raised by IMPOSTER", async () => { - game.override.enemySpecies(Species.DITTO).enemyAbility(Abilities.IMPOSTER).enemyMoveset(Moves.SPLASH); + game.override.enemySpecies(SpeciesId.DITTO).enemyAbility(AbilityId.IMPOSTER).enemyMoveset(MoveId.SPLASH); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.BURNING_JEALOUSY); + game.move.select(MoveId.BURNING_JEALOUSY); await game.phaseInterceptor.to("BerryPhase"); expect(enemy.status?.effect).toBeUndefined(); @@ -81,15 +81,15 @@ describe("Moves - Burning Jealousy", () => { }); it("should be boosted by Sheer Force even if opponent didn't raise stat stages", async () => { - game.override.ability(Abilities.SHEER_FORCE).enemyMoveset(Moves.SPLASH); - vi.spyOn(allMoves[Moves.BURNING_JEALOUSY], "calculateBattlePower"); + game.override.ability(AbilityId.SHEER_FORCE).enemyMoveset(MoveId.SPLASH); + vi.spyOn(allMoves[MoveId.BURNING_JEALOUSY], "calculateBattlePower"); await game.classicMode.startBattle(); - game.move.select(Moves.BURNING_JEALOUSY); + game.move.select(MoveId.BURNING_JEALOUSY); await game.phaseInterceptor.to("BerryPhase"); - expect(allMoves[Moves.BURNING_JEALOUSY].calculateBattlePower).toHaveReturnedWith( - allMoves[Moves.BURNING_JEALOUSY].power * 1.3, + expect(allMoves[MoveId.BURNING_JEALOUSY].calculateBattlePower).toHaveReturnedWith( + allMoves[MoveId.BURNING_JEALOUSY].power * 1.3, ); }); }); diff --git a/test/moves/camouflage.test.ts b/test/moves/camouflage.test.ts index 38cdef80fc1..53c44f1386b 100644 --- a/test/moves/camouflage.test.ts +++ b/test/moves/camouflage.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { TerrainType } from "#app/data/terrain"; import { PokemonType } from "#enums/pokemon-type"; import { BattlerIndex } from "#app/battle"; @@ -25,21 +25,21 @@ describe("Moves - Camouflage", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.CAMOUFLAGE]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.CAMOUFLAGE]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.REGIELEKI) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.PSYCHIC_TERRAIN); + .enemySpecies(SpeciesId.REGIELEKI) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.PSYCHIC_TERRAIN); }); it("Camouflage should look at terrain first when selecting a type to change into", async () => { - await game.classicMode.startBattle([Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.CAMOUFLAGE); + game.move.select(MoveId.CAMOUFLAGE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTerrainType()).toBe(TerrainType.PSYCHIC); diff --git a/test/moves/ceaseless_edge.test.ts b/test/moves/ceaseless_edge.test.ts index e88b301239d..65f9b69509d 100644 --- a/test/moves/ceaseless_edge.test.ts +++ b/test/moves/ceaseless_edge.test.ts @@ -1,11 +1,11 @@ import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag"; import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; @@ -27,24 +27,24 @@ describe("Moves - Ceaseless Edge", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyAbility(Abilities.RUN_AWAY); - game.override.enemyPassiveAbility(Abilities.RUN_AWAY); + game.override.enemySpecies(SpeciesId.RATTATA); + game.override.enemyAbility(AbilityId.RUN_AWAY); + game.override.enemyPassiveAbility(AbilityId.RUN_AWAY); game.override.startingLevel(100); game.override.enemyLevel(100); - game.override.moveset([Moves.CEASELESS_EDGE, Moves.SPLASH, Moves.ROAR]); - game.override.enemyMoveset(Moves.SPLASH); - vi.spyOn(allMoves[Moves.CEASELESS_EDGE], "accuracy", "get").mockReturnValue(100); + game.override.moveset([MoveId.CEASELESS_EDGE, MoveId.SPLASH, MoveId.ROAR]); + game.override.enemyMoveset(MoveId.SPLASH); + vi.spyOn(allMoves[MoveId.CEASELESS_EDGE], "accuracy", "get").mockReturnValue(100); }); test("move should hit and apply spikes", async () => { - await game.classicMode.startBattle([Species.ILLUMISE]); + await game.classicMode.startBattle([SpeciesId.ILLUMISE]); const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyStartingHp = enemyPokemon.hp; - game.move.select(Moves.CEASELESS_EDGE); + game.move.select(MoveId.CEASELESS_EDGE); await game.phaseInterceptor.to(MoveEffectPhase, false); // Spikes should not have any layers before move effect is applied @@ -60,13 +60,13 @@ describe("Moves - Ceaseless Edge", () => { test("move should hit twice with multi lens and apply two layers of spikes", async () => { game.override.startingHeldItems([{ name: "MULTI_LENS" }]); - await game.classicMode.startBattle([Species.ILLUMISE]); + await game.classicMode.startBattle([SpeciesId.ILLUMISE]); const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyStartingHp = enemyPokemon.hp; - game.move.select(Moves.CEASELESS_EDGE); + game.move.select(MoveId.CEASELESS_EDGE); await game.phaseInterceptor.to(MoveEffectPhase, false); // Spikes should not have any layers before move effect is applied @@ -84,9 +84,9 @@ describe("Moves - Ceaseless Edge", () => { game.override.startingHeldItems([{ name: "MULTI_LENS" }]); game.override.startingWave(25); - await game.classicMode.startBattle([Species.ILLUMISE]); + await game.classicMode.startBattle([SpeciesId.ILLUMISE]); - game.move.select(Moves.CEASELESS_EDGE); + game.move.select(MoveId.CEASELESS_EDGE); await game.phaseInterceptor.to(MoveEffectPhase, false); // Spikes should not have any layers before move effect is applied const tagBefore = game.scene.arena.getTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.ENEMY) as ArenaTrapTag; @@ -100,7 +100,7 @@ describe("Moves - Ceaseless Edge", () => { const hpBeforeSpikes = game.scene.currentBattle.enemyParty[1].hp; // Check HP of pokemon that WILL BE switched in (index 1) game.forceEnemyToSwitch(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase, false); expect(game.scene.currentBattle.enemyParty[0].hp).toBeLessThan(hpBeforeSpikes); }); diff --git a/test/moves/chilly_reception.test.ts b/test/moves/chilly_reception.test.ts index 2c04e0e7313..14141208161 100644 --- a/test/moves/chilly_reception.test.ts +++ b/test/moves/chilly_reception.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -25,56 +25,56 @@ describe("Moves - Chilly Reception", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .moveset([Moves.CHILLY_RECEPTION, Moves.SNOWSCAPE]) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH) - .ability(Abilities.BALL_FETCH); + .moveset([MoveId.CHILLY_RECEPTION, MoveId.SNOWSCAPE]) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) + .ability(AbilityId.BALL_FETCH); }); it("should still change the weather if user can't switch out", async () => { - await game.classicMode.startBattle([Species.SLOWKING]); + await game.classicMode.startBattle([SpeciesId.SLOWKING]); - game.move.select(Moves.CHILLY_RECEPTION); + game.move.select(MoveId.CHILLY_RECEPTION); await game.phaseInterceptor.to("BerryPhase", false); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW); }); it("should switch out even if it's snowing", async () => { - await game.classicMode.startBattle([Species.SLOWKING, Species.MEOWTH]); + await game.classicMode.startBattle([SpeciesId.SLOWKING, SpeciesId.MEOWTH]); // first turn set up snow with snowscape, try chilly reception on second turn - game.move.select(Moves.SNOWSCAPE); + game.move.select(MoveId.SNOWSCAPE); await game.phaseInterceptor.to("BerryPhase", false); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW); await game.phaseInterceptor.to("TurnInitPhase", false); - game.move.select(Moves.CHILLY_RECEPTION); + game.move.select(MoveId.CHILLY_RECEPTION); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("BerryPhase", false); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW); - expect(game.scene.getPlayerField()[0].species.speciesId).toBe(Species.MEOWTH); + expect(game.scene.getPlayerField()[0].species.speciesId).toBe(SpeciesId.MEOWTH); }); it("happy case - switch out and weather changes", async () => { - await game.classicMode.startBattle([Species.SLOWKING, Species.MEOWTH]); + await game.classicMode.startBattle([SpeciesId.SLOWKING, SpeciesId.MEOWTH]); - game.move.select(Moves.CHILLY_RECEPTION); + game.move.select(MoveId.CHILLY_RECEPTION); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("BerryPhase", false); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW); - expect(game.scene.getPlayerField()[0].species.speciesId).toBe(Species.MEOWTH); + expect(game.scene.getPlayerField()[0].species.speciesId).toBe(SpeciesId.MEOWTH); }); // enemy uses another move and weather doesn't change it("check case - enemy not selecting chilly reception doesn't change weather ", async () => { - game.override.battleStyle("single").enemyMoveset([Moves.CHILLY_RECEPTION, Moves.TACKLE]).moveset(Moves.SPLASH); + game.override.battleStyle("single").enemyMoveset([MoveId.CHILLY_RECEPTION, MoveId.TACKLE]).moveset(MoveId.SPLASH); - await game.classicMode.startBattle([Species.SLOWKING, Species.MEOWTH]); + await game.classicMode.startBattle([SpeciesId.SLOWKING, SpeciesId.MEOWTH]); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.TACKLE); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.TACKLE); await game.phaseInterceptor.to("BerryPhase", false); expect(game.scene.arena.weather?.weatherType).toBe(undefined); @@ -84,27 +84,27 @@ describe("Moves - Chilly Reception", () => { game.override .battleStyle("single") .startingWave(8) - .enemyMoveset(Moves.CHILLY_RECEPTION) - .enemySpecies(Species.MAGIKARP) - .moveset([Moves.SPLASH, Moves.THUNDERBOLT]); + .enemyMoveset(MoveId.CHILLY_RECEPTION) + .enemySpecies(SpeciesId.MAGIKARP) + .moveset([MoveId.SPLASH, MoveId.THUNDERBOLT]); - await game.classicMode.startBattle([Species.JOLTEON]); + await game.classicMode.startBattle([SpeciesId.JOLTEON]); const RIVAL_MAGIKARP1 = game.scene.getEnemyPokemon()?.id; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase", false); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW); expect(game.scene.getEnemyPokemon()?.id !== RIVAL_MAGIKARP1); await game.phaseInterceptor.to("TurnInitPhase", false); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); // second chilly reception should still switch out await game.phaseInterceptor.to("BerryPhase", false); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW); await game.phaseInterceptor.to("TurnInitPhase", false); expect(game.scene.getEnemyPokemon()?.id === RIVAL_MAGIKARP1); - game.move.select(Moves.THUNDERBOLT); + game.move.select(MoveId.THUNDERBOLT); // enemy chilly recep move should fail: it's snowing and no option to switch out // no crashing @@ -112,7 +112,7 @@ describe("Moves - Chilly Reception", () => { expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW); await game.phaseInterceptor.to("TurnInitPhase", false); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase", false); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW); }); diff --git a/test/moves/chloroblast.test.ts b/test/moves/chloroblast.test.ts index b2130da83eb..02f7ac2165c 100644 --- a/test/moves/chloroblast.test.ts +++ b/test/moves/chloroblast.test.ts @@ -1,7 +1,7 @@ import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,23 +23,23 @@ describe("Moves - Chloroblast", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .ability(Abilities.BALL_FETCH) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH); }); it("should not deal recoil damage if the opponent uses protect", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.use(Moves.CHLOROBLAST); - await game.move.forceEnemyMove(Moves.PROTECT); + game.move.use(MoveId.CHLOROBLAST); + await game.move.forceEnemyMove(MoveId.PROTECT); await game.toEndOfTurn(); const player = game.field.getPlayerPokemon(); expect(player.isFullHp()).toBe(true); - expect(player.getLastXMoves()[0]).toMatchObject({ result: MoveResult.MISS, move: Moves.CHLOROBLAST }); + expect(player.getLastXMoves()[0]).toMatchObject({ result: MoveResult.MISS, move: MoveId.CHLOROBLAST }); }); }); diff --git a/test/moves/clangorous_soul.test.ts b/test/moves/clangorous_soul.test.ts index c7165a0a881..6f4c18852b0 100644 --- a/test/moves/clangorous_soul.test.ts +++ b/test/moves/clangorous_soul.test.ts @@ -2,8 +2,8 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/testUtils/gameManager"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; /** HP Cost of Move */ @@ -27,23 +27,23 @@ describe("Moves - Clangorous Soul", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.starterSpecies(Species.MAGIKARP); - game.override.enemySpecies(Species.SNORLAX); + game.override.starterSpecies(SpeciesId.MAGIKARP); + game.override.enemySpecies(SpeciesId.SNORLAX); game.override.startingLevel(100); game.override.enemyLevel(100); - game.override.moveset([Moves.CLANGOROUS_SOUL]); - game.override.enemyMoveset(Moves.SPLASH); + game.override.moveset([MoveId.CLANGOROUS_SOUL]); + game.override.enemyMoveset(MoveId.SPLASH); }); //Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/Clangorous_Soul_(move) it("raises the user's ATK, DEF, SPATK, SPDEF, and SPD stat stages by 1 each at the cost of 1/3 of its maximum HP", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO); - game.move.select(Moves.CLANGOROUS_SOUL); + game.move.select(MoveId.CLANGOROUS_SOUL); await game.phaseInterceptor.to(TurnEndPhase); expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp() - hpLost); @@ -55,7 +55,7 @@ describe("Moves - Clangorous Soul", () => { }); it("will still take effect if one or more of the involved stat stages are not at max", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO); @@ -66,7 +66,7 @@ describe("Moves - Clangorous Soul", () => { leadPokemon.setStatStage(Stat.SPATK, 6); leadPokemon.setStatStage(Stat.SPDEF, 4); - game.move.select(Moves.CLANGOROUS_SOUL); + game.move.select(MoveId.CLANGOROUS_SOUL); await game.phaseInterceptor.to(TurnEndPhase); expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp() - hpLost); @@ -78,7 +78,7 @@ describe("Moves - Clangorous Soul", () => { }); it("fails if all stat stages involved are at max", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -88,7 +88,7 @@ describe("Moves - Clangorous Soul", () => { leadPokemon.setStatStage(Stat.SPDEF, 6); leadPokemon.setStatStage(Stat.SPD, 6); - game.move.select(Moves.CLANGOROUS_SOUL); + game.move.select(MoveId.CLANGOROUS_SOUL); await game.phaseInterceptor.to(TurnEndPhase); expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); @@ -100,13 +100,13 @@ describe("Moves - Clangorous Soul", () => { }); it("fails if the user's health is less than 1/3", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO); leadPokemon.hp = hpLost - PREDAMAGE; - game.move.select(Moves.CLANGOROUS_SOUL); + game.move.select(MoveId.CLANGOROUS_SOUL); await game.phaseInterceptor.to(TurnEndPhase); expect(leadPokemon.hp).toBe(hpLost - PREDAMAGE); diff --git a/test/moves/copycat.test.ts b/test/moves/copycat.test.ts index 96c21723ab9..51d7d36535f 100644 --- a/test/moves/copycat.test.ts +++ b/test/moves/copycat.test.ts @@ -3,9 +3,9 @@ import { RandomMoveAttr } from "#app/data/moves/move"; import { allMoves } from "#app/data/data-lists"; import { Stat } from "#app/enums/stat"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -27,51 +27,51 @@ describe("Moves - Copycat", () => { }); beforeEach(() => { - randomMoveAttr = allMoves[Moves.METRONOME].getAttrs(RandomMoveAttr)[0]; + randomMoveAttr = allMoves[MoveId.METRONOME].getAttrs(RandomMoveAttr)[0]; game = new GameManager(phaserGame); game.override - .moveset([Moves.COPYCAT, Moves.SPIKY_SHIELD, Moves.SWORDS_DANCE, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.COPYCAT, MoveId.SPIKY_SHIELD, MoveId.SWORDS_DANCE, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .starterSpecies(Species.FEEBAS) - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .starterSpecies(SpeciesId.FEEBAS) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should copy the last move successfully executed", async () => { - game.override.enemyMoveset(Moves.SUCKER_PUNCH); + game.override.enemyMoveset(MoveId.SUCKER_PUNCH); await game.classicMode.startBattle(); - game.move.select(Moves.SWORDS_DANCE); + game.move.select(MoveId.SWORDS_DANCE); await game.toNextTurn(); - game.move.select(Moves.COPYCAT); // Last successful move should be Swords Dance + game.move.select(MoveId.COPYCAT); // Last successful move should be Swords Dance await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(4); }); it("should fail when the last move used is not a valid Copycat move", async () => { - game.override.enemyMoveset(Moves.PROTECT); // Protect is not a valid move for Copycat to copy + game.override.enemyMoveset(MoveId.PROTECT); // Protect is not a valid move for Copycat to copy await game.classicMode.startBattle(); - game.move.select(Moves.SPIKY_SHIELD); // Spiky Shield is not a valid move for Copycat to copy + game.move.select(MoveId.SPIKY_SHIELD); // Spiky Shield is not a valid move for Copycat to copy await game.toNextTurn(); - game.move.select(Moves.COPYCAT); + game.move.select(MoveId.COPYCAT); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should copy the called move when the last move successfully calls another", async () => { - game.override.moveset([Moves.SPLASH, Moves.METRONOME]).enemyMoveset(Moves.COPYCAT); + game.override.moveset([MoveId.SPLASH, MoveId.METRONOME]).enemyMoveset(MoveId.COPYCAT); await game.classicMode.startBattle(); - vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(Moves.SWORDS_DANCE); + vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(MoveId.SWORDS_DANCE); - game.move.select(Moves.METRONOME); + game.move.select(MoveId.METRONOME); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); // Player moves first, so enemy can copy Swords Dance await game.toNextTurn(); @@ -79,10 +79,10 @@ describe("Moves - Copycat", () => { }); it("should apply secondary effects of a move", async () => { - game.override.enemyMoveset(Moves.ACID_SPRAY); // Secondary effect lowers SpDef by 2 stages + game.override.enemyMoveset(MoveId.ACID_SPRAY); // Secondary effect lowers SpDef by 2 stages await game.classicMode.startBattle(); - game.move.select(Moves.COPYCAT); + game.move.select(MoveId.COPYCAT); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); diff --git a/test/moves/crafty_shield.test.ts b/test/moves/crafty_shield.test.ts index ec4c87fa060..01ab0416e5a 100644 --- a/test/moves/crafty_shield.test.ts +++ b/test/moves/crafty_shield.test.ts @@ -1,9 +1,9 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { Stat } from "#enums/stat"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { BerryPhase } from "#app/phases/berry-phase"; @@ -28,26 +28,26 @@ describe("Moves - Crafty Shield", () => { game.override.battleStyle("double"); - game.override.moveset([Moves.CRAFTY_SHIELD, Moves.SPLASH, Moves.SWORDS_DANCE]); + game.override.moveset([MoveId.CRAFTY_SHIELD, MoveId.SPLASH, MoveId.SWORDS_DANCE]); - game.override.enemySpecies(Species.SNORLAX); - game.override.enemyMoveset([Moves.GROWL]); - game.override.enemyAbility(Abilities.INSOMNIA); + game.override.enemySpecies(SpeciesId.SNORLAX); + game.override.enemyMoveset([MoveId.GROWL]); + game.override.enemyAbility(AbilityId.INSOMNIA); game.override.startingLevel(100); game.override.enemyLevel(100); }); test("should protect the user and allies from status moves", async () => { - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); - game.move.select(Moves.CRAFTY_SHIELD); + game.move.select(MoveId.CRAFTY_SHIELD); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -55,17 +55,17 @@ describe("Moves - Crafty Shield", () => { }); test("should not protect the user and allies from attack moves", async () => { - game.override.enemyMoveset([Moves.TACKLE]); + game.override.enemyMoveset([MoveId.TACKLE]); - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); - game.move.select(Moves.CRAFTY_SHIELD); + game.move.select(MoveId.CRAFTY_SHIELD); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -73,18 +73,18 @@ describe("Moves - Crafty Shield", () => { }); test("should protect the user and allies from moves that ignore other protection", async () => { - game.override.enemySpecies(Species.DUSCLOPS); - game.override.enemyMoveset([Moves.CURSE]); + game.override.enemySpecies(SpeciesId.DUSCLOPS); + game.override.enemyMoveset([MoveId.CURSE]); - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); - game.move.select(Moves.CRAFTY_SHIELD); + game.move.select(MoveId.CRAFTY_SHIELD); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -92,15 +92,15 @@ describe("Moves - Crafty Shield", () => { }); test("should not block allies' self-targeted moves", async () => { - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); - game.move.select(Moves.CRAFTY_SHIELD); + game.move.select(MoveId.CRAFTY_SHIELD); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SWORDS_DANCE, 1); + game.move.select(MoveId.SWORDS_DANCE, 1); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/defog.test.ts b/test/moves/defog.test.ts index 87c3845d55c..d42682c7f3f 100644 --- a/test/moves/defog.test.ts +++ b/test/moves/defog.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,23 +23,23 @@ describe("Moves - Defog", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.MIST, Moves.SAFEGUARD, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.MIST, MoveId.SAFEGUARD, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.SHUCKLE) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.DEFOG, Moves.GROWL]); + .enemySpecies(SpeciesId.SHUCKLE) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.DEFOG, MoveId.GROWL]); }); it("should not allow Safeguard to be active", async () => { - await game.classicMode.startBattle([Species.REGIELEKI]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.SAFEGUARD); - await game.move.selectEnemyMove(Moves.DEFOG); + game.move.select(MoveId.SAFEGUARD); + await game.move.selectEnemyMove(MoveId.DEFOG); await game.phaseInterceptor.to("BerryPhase"); expect(playerPokemon[0].isSafeguarded(enemyPokemon[0])).toBe(false); @@ -48,17 +48,17 @@ describe("Moves - Defog", () => { }); it("should not allow Mist to be active", async () => { - await game.classicMode.startBattle([Species.REGIELEKI]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const playerPokemon = game.scene.getPlayerField(); - game.move.select(Moves.MIST); - await game.move.selectEnemyMove(Moves.DEFOG); + game.move.select(MoveId.MIST); + await game.move.selectEnemyMove(MoveId.DEFOG); await game.toNextTurn(); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.GROWL); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/moves/destiny_bond.test.ts b/test/moves/destiny_bond.test.ts index 16014677f39..81c17551bec 100644 --- a/test/moves/destiny_bond.test.ts +++ b/test/moves/destiny_bond.test.ts @@ -1,10 +1,10 @@ import type { ArenaTrapTag } from "#app/data/arena-tag"; import { ArenaTagSide } from "#app/data/arena-tag"; import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -16,7 +16,7 @@ describe("Moves - Destiny Bond", () => { let phaserGame: Phaser.Game; let game: GameManager; - const defaultParty = [Species.BULBASAUR, Species.SQUIRTLE]; + const defaultParty = [SpeciesId.BULBASAUR, SpeciesId.SQUIRTLE]; const enemyFirst = [BattlerIndex.ENEMY, BattlerIndex.PLAYER]; const playerFirst = [BattlerIndex.PLAYER, BattlerIndex.ENEMY]; @@ -34,16 +34,16 @@ describe("Moves - Destiny Bond", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .ability(Abilities.UNNERVE) // Pre-emptively prevent flakiness from opponent berries - .enemySpecies(Species.RATTATA) - .enemyAbility(Abilities.RUN_AWAY) + .ability(AbilityId.UNNERVE) // Pre-emptively prevent flakiness from opponent berries + .enemySpecies(SpeciesId.RATTATA) + .enemyAbility(AbilityId.RUN_AWAY) .startingLevel(100) // Make sure tested moves KO .enemyLevel(5) - .enemyMoveset(Moves.DESTINY_BOND); + .enemyMoveset(MoveId.DESTINY_BOND); }); it("should KO the opponent on the same turn", async () => { - const moveToUse = Moves.TACKLE; + const moveToUse = MoveId.TACKLE; game.override.moveset(moveToUse); await game.classicMode.startBattle(defaultParty); @@ -60,16 +60,16 @@ describe("Moves - Destiny Bond", () => { }); it("should KO the opponent on the next turn", async () => { - const moveToUse = Moves.TACKLE; + const moveToUse = MoveId.TACKLE; - game.override.moveset([Moves.SPLASH, moveToUse]); + game.override.moveset([MoveId.SPLASH, moveToUse]); await game.classicMode.startBattle(defaultParty); const enemyPokemon = game.scene.getEnemyPokemon(); const playerPokemon = game.scene.getPlayerPokemon(); // Turn 1: Enemy uses Destiny Bond and doesn't faint - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder(playerFirst); await game.toNextTurn(); @@ -86,16 +86,16 @@ describe("Moves - Destiny Bond", () => { }); it("should fail if used twice in a row", async () => { - const moveToUse = Moves.TACKLE; + const moveToUse = MoveId.TACKLE; - game.override.moveset([Moves.SPLASH, moveToUse]); + game.override.moveset([MoveId.SPLASH, moveToUse]); await game.classicMode.startBattle(defaultParty); const enemyPokemon = game.scene.getEnemyPokemon(); const playerPokemon = game.scene.getPlayerPokemon(); // Turn 1: Enemy uses Destiny Bond and doesn't faint - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder(enemyFirst); await game.toNextTurn(); @@ -113,9 +113,9 @@ describe("Moves - Destiny Bond", () => { it("should not KO the opponent if the user dies to weather", async () => { // Opponent will be reduced to 1 HP by False Swipe, then faint to Sandstorm - const moveToUse = Moves.FALSE_SWIPE; + const moveToUse = MoveId.FALSE_SWIPE; - game.override.moveset(moveToUse).ability(Abilities.SAND_STREAM); + game.override.moveset(moveToUse).ability(AbilityId.SAND_STREAM); await game.classicMode.startBattle(defaultParty); const enemyPokemon = game.scene.getEnemyPokemon(); @@ -130,16 +130,16 @@ describe("Moves - Destiny Bond", () => { }); it("should not KO the opponent if the user had another turn", async () => { - const moveToUse = Moves.TACKLE; + const moveToUse = MoveId.TACKLE; - game.override.moveset([Moves.SPORE, moveToUse]); + game.override.moveset([MoveId.SPORE, moveToUse]); await game.classicMode.startBattle(defaultParty); const enemyPokemon = game.scene.getEnemyPokemon(); const playerPokemon = game.scene.getPlayerPokemon(); // Turn 1: Enemy uses Destiny Bond and doesn't faint - game.move.select(Moves.SPORE); + game.move.select(MoveId.SPORE); await game.setTurnOrder(enemyFirst); await game.toNextTurn(); @@ -157,8 +157,8 @@ describe("Moves - Destiny Bond", () => { }); it("should not KO an ally", async () => { - game.override.moveset([Moves.DESTINY_BOND, Moves.CRUNCH]).battleStyle("double"); - await game.classicMode.startBattle([Species.SHEDINJA, Species.BULBASAUR, Species.SQUIRTLE]); + game.override.moveset([MoveId.DESTINY_BOND, MoveId.CRUNCH]).battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.SHEDINJA, SpeciesId.BULBASAUR, SpeciesId.SQUIRTLE]); const enemyPokemon0 = game.scene.getEnemyField()[0]; const enemyPokemon1 = game.scene.getEnemyField()[1]; @@ -166,8 +166,8 @@ describe("Moves - Destiny Bond", () => { const playerPokemon1 = game.scene.getPlayerField()[1]; // Shedinja uses Destiny Bond, then ally Bulbasaur KO's Shedinja with Crunch - game.move.select(Moves.DESTINY_BOND, 0); - game.move.select(Moves.CRUNCH, 1, BattlerIndex.PLAYER); + game.move.select(MoveId.DESTINY_BOND, 0); + game.move.select(MoveId.CRUNCH, 1, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); @@ -178,7 +178,7 @@ describe("Moves - Destiny Bond", () => { }); it("should not cause a crash if the user is KO'd by Ceaseless Edge", async () => { - const moveToUse = Moves.CEASELESS_EDGE; + const moveToUse = MoveId.CEASELESS_EDGE; vi.spyOn(allMoves[moveToUse], "accuracy", "get").mockReturnValue(100); game.override.moveset(moveToUse); @@ -201,7 +201,7 @@ describe("Moves - Destiny Bond", () => { }); it("should not cause a crash if the user is KO'd by Pledge moves", async () => { - game.override.moveset([Moves.GRASS_PLEDGE, Moves.WATER_PLEDGE]).battleStyle("double"); + game.override.moveset([MoveId.GRASS_PLEDGE, MoveId.WATER_PLEDGE]).battleStyle("double"); await game.classicMode.startBattle(defaultParty); const enemyPokemon0 = game.scene.getEnemyField()[0]; @@ -209,8 +209,8 @@ describe("Moves - Destiny Bond", () => { const playerPokemon0 = game.scene.getPlayerField()[0]; const playerPokemon1 = game.scene.getPlayerField()[1]; - game.move.select(Moves.GRASS_PLEDGE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.WATER_PLEDGE, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.GRASS_PLEDGE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.WATER_PLEDGE, 1, BattlerIndex.ENEMY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2]); await game.phaseInterceptor.to("BerryPhase"); @@ -230,7 +230,7 @@ describe("Moves - Destiny Bond", () => { * from occurring with fainting by KO'ing a Destiny Bond user with U-Turn. */ it("should not allow the opponent to revive via Reviver Seed", async () => { - const moveToUse = Moves.TACKLE; + const moveToUse = MoveId.TACKLE; game.override.moveset(moveToUse).startingHeldItems([{ name: "REVIVER_SEED" }]); await game.classicMode.startBattle(defaultParty); diff --git a/test/moves/diamond_storm.test.ts b/test/moves/diamond_storm.test.ts index 1e64babacfb..20067b3a0f3 100644 --- a/test/moves/diamond_storm.test.ts +++ b/test/moves/diamond_storm.test.ts @@ -1,7 +1,7 @@ import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -24,21 +24,21 @@ describe("Moves - Diamond Storm", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.DIAMOND_STORM]) + .moveset([MoveId.DIAMOND_STORM]) .battleStyle("single") - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should only increase defense once even if hitting 2 pokemon", async () => { game.override.battleStyle("double"); - const diamondStorm = allMoves[Moves.DIAMOND_STORM]; + const diamondStorm = allMoves[MoveId.DIAMOND_STORM]; vi.spyOn(diamondStorm, "chance", "get").mockReturnValue(100); vi.spyOn(diamondStorm, "accuracy", "get").mockReturnValue(100); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.DIAMOND_STORM); + game.move.select(MoveId.DIAMOND_STORM); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.DEF)).toBe(2); diff --git a/test/moves/dig.test.ts b/test/moves/dig.test.ts index e8f39c05fd8..052845ec50d 100644 --- a/test/moves/dig.test.ts +++ b/test/moves/dig.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { MoveResult } from "#app/field/pokemon"; import { describe, beforeAll, afterEach, beforeEach, it, expect } from "vitest"; @@ -26,48 +26,48 @@ describe("Moves - Dig", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Moves.DIG) + .moveset(MoveId.DIG) .battleStyle("single") .startingLevel(100) - .enemySpecies(Species.SNORLAX) + .enemySpecies(SpeciesId.SNORLAX) .enemyLevel(100) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.TACKLE); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.TACKLE); }); it("should make the user semi-invulnerable, then attack over 2 turns", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DIG); + game.move.select(MoveId.DIG); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getTag(BattlerTagType.UNDERGROUND)).toBeDefined(); expect(enemyPokemon.getLastXMoves(1)[0].result).toBe(MoveResult.MISS); expect(playerPokemon.hp).toBe(playerPokemon.getMaxHp()); expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); - expect(playerPokemon.getMoveQueue()[0].move).toBe(Moves.DIG); + expect(playerPokemon.getMoveQueue()[0].move).toBe(MoveId.DIG); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getTag(BattlerTagType.UNDERGROUND)).toBeUndefined(); expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); expect(playerPokemon.getMoveHistory()).toHaveLength(2); - const playerDig = playerPokemon.getMoveset().find(mv => mv && mv.moveId === Moves.DIG); + const playerDig = playerPokemon.getMoveset().find(mv => mv && mv.moveId === MoveId.DIG); expect(playerDig?.ppUsed).toBe(1); }); it("should not allow the user to evade attacks from Pokemon with No Guard", async () => { - game.override.enemyAbility(Abilities.NO_GUARD); + game.override.enemyAbility(AbilityId.NO_GUARD); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DIG); + game.move.select(MoveId.DIG); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.hp).toBeLessThan(playerPokemon.getMaxHp()); @@ -75,41 +75,41 @@ describe("Moves - Dig", () => { }); it("should not expend PP when the attack phase is cancelled", async () => { - game.override.enemyAbility(Abilities.NO_GUARD).enemyMoveset(Moves.SPORE); + game.override.enemyAbility(AbilityId.NO_GUARD).enemyMoveset(MoveId.SPORE); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.DIG); + game.move.select(MoveId.DIG); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getTag(BattlerTagType.UNDERGROUND)).toBeUndefined(); expect(playerPokemon.status?.effect).toBe(StatusEffect.SLEEP); - const playerDig = playerPokemon.getMoveset().find(mv => mv && mv.moveId === Moves.DIG); + const playerDig = playerPokemon.getMoveset().find(mv => mv && mv.moveId === MoveId.DIG); expect(playerDig?.ppUsed).toBe(0); }); it("should cause the user to take double damage from Earthquake", async () => { - await game.classicMode.startBattle([Species.DONDOZO]); + await game.classicMode.startBattle([SpeciesId.DONDOZO]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; const preDigEarthquakeDmg = playerPokemon.getAttackDamage({ source: enemyPokemon, - move: allMoves[Moves.EARTHQUAKE], + move: allMoves[MoveId.EARTHQUAKE], }).damage; - game.move.select(Moves.DIG); + game.move.select(MoveId.DIG); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); const postDigEarthquakeDmg = playerPokemon.getAttackDamage({ source: enemyPokemon, - move: allMoves[Moves.EARTHQUAKE], + move: allMoves[MoveId.EARTHQUAKE], }).damage; // these hopefully get avoid rounding errors :shrug: expect(postDigEarthquakeDmg).toBeGreaterThanOrEqual(2 * preDigEarthquakeDmg); diff --git a/test/moves/disable.test.ts b/test/moves/disable.test.ts index 5b2b687bd5d..eacf8bf4857 100644 --- a/test/moves/disable.test.ts +++ b/test/moves/disable.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,12 +24,12 @@ describe("Moves - Disable", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .ability(Abilities.BALL_FETCH) - .enemyAbility(Abilities.BALL_FETCH) - .moveset([Moves.DISABLE, Moves.SPLASH]) - .enemyMoveset(Moves.SPLASH) - .starterSpecies(Species.PIKACHU) - .enemySpecies(Species.SHUCKLE); + .ability(AbilityId.BALL_FETCH) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset([MoveId.DISABLE, MoveId.SPLASH]) + .enemyMoveset(MoveId.SPLASH) + .starterSpecies(SpeciesId.PIKACHU) + .enemySpecies(SpeciesId.SHUCKLE); }); it("restricts moves", async () => { @@ -37,12 +37,12 @@ describe("Moves - Disable", () => { const enemyMon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DISABLE); + game.move.select(MoveId.DISABLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); expect(enemyMon.getMoveHistory()).toHaveLength(1); - expect(enemyMon.isMoveRestricted(Moves.SPLASH)).toBe(true); + expect(enemyMon.isMoveRestricted(MoveId.SPLASH)).toBe(true); }); it("fails if enemy has no move history", async () => { @@ -51,15 +51,15 @@ describe("Moves - Disable", () => { const playerMon = game.scene.getPlayerPokemon()!; const enemyMon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DISABLE); + game.move.select(MoveId.DISABLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); expect(playerMon.getMoveHistory()[0]).toMatchObject({ - move: Moves.DISABLE, + move: MoveId.DISABLE, result: MoveResult.FAIL, }); - expect(enemyMon.isMoveRestricted(Moves.SPLASH)).toBe(false); + expect(enemyMon.isMoveRestricted(MoveId.SPLASH)).toBe(false); }, 20000); it("causes STRUGGLE if all usable moves are disabled", async () => { @@ -67,33 +67,33 @@ describe("Moves - Disable", () => { const enemyMon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DISABLE); + game.move.select(MoveId.DISABLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); const enemyHistory = enemyMon.getMoveHistory(); expect(enemyHistory).toHaveLength(2); - expect(enemyHistory[0].move).toBe(Moves.SPLASH); - expect(enemyHistory[1].move).toBe(Moves.STRUGGLE); + expect(enemyHistory[0].move).toBe(MoveId.SPLASH); + expect(enemyHistory[1].move).toBe(MoveId.STRUGGLE); }, 20000); it("cannot disable STRUGGLE", async () => { - game.override.enemyMoveset([Moves.STRUGGLE]); + game.override.enemyMoveset([MoveId.STRUGGLE]); await game.classicMode.startBattle(); const playerMon = game.scene.getPlayerPokemon()!; const enemyMon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DISABLE); + game.move.select(MoveId.DISABLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); expect(playerMon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); - expect(enemyMon.getLastXMoves()[0].move).toBe(Moves.STRUGGLE); - expect(enemyMon.isMoveRestricted(Moves.STRUGGLE)).toBe(false); + expect(enemyMon.getLastXMoves()[0].move).toBe(MoveId.STRUGGLE); + expect(enemyMon.isMoveRestricted(MoveId.STRUGGLE)).toBe(false); }, 20000); it("interrupts target's move when target moves after", async () => { @@ -101,54 +101,54 @@ describe("Moves - Disable", () => { const enemyMon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // Both mons just used Splash last turn; now have player use Disable. - game.move.select(Moves.DISABLE); + game.move.select(MoveId.DISABLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); const enemyHistory = enemyMon.getMoveHistory(); expect(enemyHistory).toHaveLength(2); expect(enemyHistory[0]).toMatchObject({ - move: Moves.SPLASH, + move: MoveId.SPLASH, result: MoveResult.SUCCESS, }); expect(enemyHistory[1].result).toBe(MoveResult.FAIL); }, 20000); it("disables NATURE POWER, not the move invoked by it", async () => { - game.override.enemyMoveset([Moves.NATURE_POWER]); + game.override.enemyMoveset([MoveId.NATURE_POWER]); await game.classicMode.startBattle(); const enemyMon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DISABLE); + game.move.select(MoveId.DISABLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - expect(enemyMon.isMoveRestricted(Moves.NATURE_POWER)).toBe(true); + expect(enemyMon.isMoveRestricted(MoveId.NATURE_POWER)).toBe(true); expect(enemyMon.isMoveRestricted(enemyMon.getLastXMoves(2)[0].move)).toBe(false); }, 20000); it("disables most recent move", async () => { - game.override.enemyMoveset([Moves.SPLASH, Moves.TACKLE]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.TACKLE]); await game.classicMode.startBattle(); const enemyMon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - game.move.select(Moves.DISABLE); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); + game.move.select(MoveId.DISABLE); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - expect(enemyMon.isMoveRestricted(Moves.TACKLE)).toBe(true); - expect(enemyMon.isMoveRestricted(Moves.SPLASH)).toBe(false); + expect(enemyMon.isMoveRestricted(MoveId.TACKLE)).toBe(true); + expect(enemyMon.isMoveRestricted(MoveId.SPLASH)).toBe(false); }, 20000); }); diff --git a/test/moves/dive.test.ts b/test/moves/dive.test.ts index 95c3349c8a6..cce1b5a6d26 100644 --- a/test/moves/dive.test.ts +++ b/test/moves/dive.test.ts @@ -1,9 +1,9 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { StatusEffect } from "#enums/status-effect"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; @@ -26,48 +26,48 @@ describe("Moves - Dive", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Moves.DIVE) + .moveset(MoveId.DIVE) .battleStyle("single") .startingLevel(100) - .enemySpecies(Species.SNORLAX) + .enemySpecies(SpeciesId.SNORLAX) .enemyLevel(100) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.TACKLE); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.TACKLE); }); it("should make the user semi-invulnerable, then attack over 2 turns", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DIVE); + game.move.select(MoveId.DIVE); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getTag(BattlerTagType.UNDERWATER)).toBeDefined(); expect(enemyPokemon.getLastXMoves(1)[0].result).toBe(MoveResult.MISS); expect(playerPokemon.hp).toBe(playerPokemon.getMaxHp()); expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); - expect(playerPokemon.getMoveQueue()[0].move).toBe(Moves.DIVE); + expect(playerPokemon.getMoveQueue()[0].move).toBe(MoveId.DIVE); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getTag(BattlerTagType.UNDERWATER)).toBeUndefined(); expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); expect(playerPokemon.getMoveHistory()).toHaveLength(2); - const playerDive = playerPokemon.getMoveset().find(mv => mv && mv.moveId === Moves.DIVE); + const playerDive = playerPokemon.getMoveset().find(mv => mv && mv.moveId === MoveId.DIVE); expect(playerDive?.ppUsed).toBe(1); }); it("should not allow the user to evade attacks from Pokemon with No Guard", async () => { - game.override.enemyAbility(Abilities.NO_GUARD); + game.override.enemyAbility(AbilityId.NO_GUARD); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DIVE); + game.move.select(MoveId.DIVE); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.hp).toBeLessThan(playerPokemon.getMaxHp()); @@ -75,48 +75,48 @@ describe("Moves - Dive", () => { }); it("should not expend PP when the attack phase is cancelled", async () => { - game.override.enemyAbility(Abilities.NO_GUARD).enemyMoveset(Moves.SPORE); + game.override.enemyAbility(AbilityId.NO_GUARD).enemyMoveset(MoveId.SPORE); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.DIVE); + game.move.select(MoveId.DIVE); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getTag(BattlerTagType.UNDERWATER)).toBeUndefined(); expect(playerPokemon.status?.effect).toBe(StatusEffect.SLEEP); - const playerDive = playerPokemon.getMoveset().find(mv => mv && mv.moveId === Moves.DIVE); + const playerDive = playerPokemon.getMoveset().find(mv => mv && mv.moveId === MoveId.DIVE); expect(playerDive?.ppUsed).toBe(0); }); it("should trigger on-contact post-defend ability effects", async () => { - game.override.enemyAbility(Abilities.ROUGH_SKIN).enemyMoveset(Moves.SPLASH); + game.override.enemyAbility(AbilityId.ROUGH_SKIN).enemyMoveset(MoveId.SPLASH); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DIVE); + game.move.select(MoveId.DIVE); await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("MoveEndPhase"); expect(playerPokemon.hp).toBeLessThan(playerPokemon.getMaxHp()); - expect(enemyPokemon.waveData.abilitiesApplied).toContain(Abilities.ROUGH_SKIN); + expect(enemyPokemon.waveData.abilitiesApplied).toContain(AbilityId.ROUGH_SKIN); }); it("should cancel attack after Harsh Sunlight is set", async () => { - game.override.enemyMoveset(Moves.SPLASH); + game.override.enemyMoveset(MoveId.SPLASH); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DIVE); + game.move.select(MoveId.DIVE); await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnStartPhase", false); @@ -127,7 +127,7 @@ describe("Moves - Dive", () => { expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); expect(playerPokemon.getTag(BattlerTagType.UNDERWATER)).toBeUndefined(); - const playerDive = playerPokemon.getMoveset().find(mv => mv && mv.moveId === Moves.DIVE); + const playerDive = playerPokemon.getMoveset().find(mv => mv && mv.moveId === MoveId.DIVE); expect(playerDive?.ppUsed).toBe(1); }); }); diff --git a/test/moves/doodle.test.ts b/test/moves/doodle.test.ts index 25dc0ddaede..686bef144dd 100644 --- a/test/moves/doodle.test.ts +++ b/test/moves/doodle.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { Stat } from "#app/enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,43 +24,43 @@ describe("Moves - Doodle", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.DOODLE]) - .ability(Abilities.ADAPTABILITY) + .moveset([MoveId.SPLASH, MoveId.DOODLE]) + .ability(AbilityId.ADAPTABILITY) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should copy the opponent's ability in singles", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.DOODLE); + game.move.select(MoveId.DOODLE); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(Abilities.BALL_FETCH); + expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(AbilityId.BALL_FETCH); }); it("should copy the opponent's ability to itself and its ally in doubles", async () => { game.override.battleStyle("double"); - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); - game.move.select(Moves.DOODLE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.DOODLE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerField()[0].getAbility().id).toBe(Abilities.BALL_FETCH); - expect(game.scene.getPlayerField()[1].getAbility().id).toBe(Abilities.BALL_FETCH); + expect(game.scene.getPlayerField()[0].getAbility().id).toBe(AbilityId.BALL_FETCH); + expect(game.scene.getPlayerField()[1].getAbility().id).toBe(AbilityId.BALL_FETCH); }); it("should activate post-summon abilities", async () => { - game.override.battleStyle("double").enemyAbility(Abilities.INTIMIDATE); + game.override.battleStyle("double").enemyAbility(AbilityId.INTIMIDATE); - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); - game.move.select(Moves.DOODLE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.DOODLE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); // Enemies should have been intimidated twice diff --git a/test/moves/double_team.test.ts b/test/moves/double_team.test.ts index aa07ee5f688..9a17a542f47 100644 --- a/test/moves/double_team.test.ts +++ b/test/moves/double_team.test.ts @@ -1,8 +1,8 @@ import { Stat } from "#enums/stat"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -25,16 +25,16 @@ describe("Moves - Double Team", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .moveset([Moves.DOUBLE_TEAM]) + .moveset([MoveId.DOUBLE_TEAM]) .disableCrits() - .ability(Abilities.BALL_FETCH) - .enemySpecies(Species.SHUCKLE) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.TACKLE); + .ability(AbilityId.BALL_FETCH) + .enemySpecies(SpeciesId.SHUCKLE) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.TACKLE); }); it("raises the user's EVA stat stage by 1", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const ally = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -42,7 +42,7 @@ describe("Moves - Double Team", () => { vi.spyOn(enemy, "getAccuracyMultiplier"); expect(ally.getStatStage(Stat.EVA)).toBe(0); - game.move.select(Moves.DOUBLE_TEAM); + game.move.select(MoveId.DOUBLE_TEAM); await game.phaseInterceptor.to(TurnEndPhase); await game.toNextTurn(); diff --git a/test/moves/dragon_cheer.test.ts b/test/moves/dragon_cheer.test.ts index dcf7f13eb65..b1eaa3ad747 100644 --- a/test/moves/dragon_cheer.test.ts +++ b/test/moves/dragon_cheer.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { PokemonType } from "#enums/pokemon-type"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; -import { Abilities } from "#enums/abilities"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -24,21 +24,21 @@ describe("Moves - Dragon Cheer", () => { game = new GameManager(phaserGame); game.override .battleStyle("double") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(20) - .moveset([Moves.DRAGON_CHEER, Moves.TACKLE, Moves.SPLASH]); + .moveset([MoveId.DRAGON_CHEER, MoveId.TACKLE, MoveId.SPLASH]); }); it("increases the user's allies' critical hit ratio by one stage", async () => { - await game.classicMode.startBattle([Species.DRAGONAIR, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.DRAGONAIR, SpeciesId.MAGIKARP]); const enemy = game.scene.getEnemyField()[0]; vi.spyOn(enemy, "getCritStage"); - game.move.select(Moves.DRAGON_CHEER, 0); - game.move.select(Moves.TACKLE, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.DRAGON_CHEER, 0); + game.move.select(MoveId.TACKLE, 1, BattlerIndex.ENEMY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); @@ -48,14 +48,14 @@ describe("Moves - Dragon Cheer", () => { }); it("increases the user's Dragon-type allies' critical hit ratio by two stages", async () => { - await game.classicMode.startBattle([Species.MAGIKARP, Species.DRAGONAIR]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.DRAGONAIR]); const enemy = game.scene.getEnemyField()[0]; vi.spyOn(enemy, "getCritStage"); - game.move.select(Moves.DRAGON_CHEER, 0); - game.move.select(Moves.TACKLE, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.DRAGON_CHEER, 0); + game.move.select(MoveId.TACKLE, 1, BattlerIndex.ENEMY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); @@ -65,15 +65,15 @@ describe("Moves - Dragon Cheer", () => { }); it("applies the effect based on the allies' type upon use of the move, and do not change if the allies' type changes later in battle", async () => { - await game.classicMode.startBattle([Species.DRAGONAIR, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.DRAGONAIR, SpeciesId.MAGIKARP]); const magikarp = game.scene.getPlayerField()[1]; const enemy = game.scene.getEnemyField()[0]; vi.spyOn(enemy, "getCritStage"); - game.move.select(Moves.DRAGON_CHEER, 0); - game.move.select(Moves.TACKLE, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.DRAGON_CHEER, 0); + game.move.select(MoveId.TACKLE, 1, BattlerIndex.ENEMY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); @@ -87,8 +87,8 @@ describe("Moves - Dragon Cheer", () => { vi.spyOn(magikarp, "getTypes").mockReturnValue([PokemonType.DRAGON]); expect(magikarp.getTypes()).toEqual([PokemonType.DRAGON]); - game.move.select(Moves.SPLASH, 0); - game.move.select(Moves.TACKLE, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 0); + game.move.select(MoveId.TACKLE, 1, BattlerIndex.ENEMY); await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); diff --git a/test/moves/dragon_rage.test.ts b/test/moves/dragon_rage.test.ts index 188c1511f37..c2a0a1bc979 100644 --- a/test/moves/dragon_rage.test.ts +++ b/test/moves/dragon_rage.test.ts @@ -1,11 +1,11 @@ import { Stat } from "#enums/stat"; import { PokemonType } from "#enums/pokemon-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -33,16 +33,16 @@ describe("Moves - Dragon Rage", () => { game.override.battleStyle("single"); - game.override.starterSpecies(Species.SNORLAX); - game.override.moveset([Moves.DRAGON_RAGE]); - game.override.ability(Abilities.BALL_FETCH); - game.override.passiveAbility(Abilities.BALL_FETCH); + game.override.starterSpecies(SpeciesId.SNORLAX); + game.override.moveset([MoveId.DRAGON_RAGE]); + game.override.ability(AbilityId.BALL_FETCH); + game.override.passiveAbility(AbilityId.BALL_FETCH); game.override.startingLevel(100); - game.override.enemySpecies(Species.SNORLAX); - game.override.enemyMoveset(Moves.SPLASH); - game.override.enemyAbility(Abilities.BALL_FETCH); - game.override.enemyPassiveAbility(Abilities.BALL_FETCH); + game.override.enemySpecies(SpeciesId.SNORLAX); + game.override.enemyMoveset(MoveId.SPLASH); + game.override.enemyAbility(AbilityId.BALL_FETCH); + game.override.enemyPassiveAbility(AbilityId.BALL_FETCH); game.override.enemyLevel(100); await game.classicMode.startBattle(); @@ -55,7 +55,7 @@ describe("Moves - Dragon Rage", () => { game.override.disableCrits(); vi.spyOn(enemyPokemon, "getTypes").mockReturnValue([PokemonType.DRAGON]); - game.move.select(Moves.DRAGON_RAGE); + game.move.select(MoveId.DRAGON_RAGE); await game.phaseInterceptor.to(TurnEndPhase); expect(enemyPokemon.getInverseHp()).toBe(dragonRageDamage); @@ -65,7 +65,7 @@ describe("Moves - Dragon Rage", () => { game.override.disableCrits(); vi.spyOn(enemyPokemon, "getTypes").mockReturnValue([PokemonType.STEEL]); - game.move.select(Moves.DRAGON_RAGE); + game.move.select(MoveId.DRAGON_RAGE); await game.phaseInterceptor.to(TurnEndPhase); expect(enemyPokemon.getInverseHp()).toBe(dragonRageDamage); @@ -75,7 +75,7 @@ describe("Moves - Dragon Rage", () => { game.override.disableCrits(); partyPokemon.setStatStage(Stat.SPATK, 2); - game.move.select(Moves.DRAGON_RAGE); + game.move.select(MoveId.DRAGON_RAGE); await game.phaseInterceptor.to(TurnEndPhase); expect(enemyPokemon.getInverseHp()).toBe(dragonRageDamage); @@ -85,7 +85,7 @@ describe("Moves - Dragon Rage", () => { game.override.disableCrits(); vi.spyOn(partyPokemon, "getTypes").mockReturnValue([PokemonType.DRAGON]); - game.move.select(Moves.DRAGON_RAGE); + game.move.select(MoveId.DRAGON_RAGE); await game.phaseInterceptor.to(TurnEndPhase); expect(enemyPokemon.getInverseHp()).toBe(dragonRageDamage); @@ -94,7 +94,7 @@ describe("Moves - Dragon Rage", () => { it("ignores criticals", async () => { partyPokemon.addTag(BattlerTagType.ALWAYS_CRIT, 99); - game.move.select(Moves.DRAGON_RAGE); + game.move.select(MoveId.DRAGON_RAGE); await game.phaseInterceptor.to(TurnEndPhase); expect(enemyPokemon.getInverseHp()).toBe(dragonRageDamage); @@ -102,9 +102,9 @@ describe("Moves - Dragon Rage", () => { it("ignores damage modification from abilities, for example ICE_SCALES", async () => { game.override.disableCrits(); - game.override.enemyAbility(Abilities.ICE_SCALES); + game.override.enemyAbility(AbilityId.ICE_SCALES); - game.move.select(Moves.DRAGON_RAGE); + game.move.select(MoveId.DRAGON_RAGE); await game.phaseInterceptor.to(TurnEndPhase); expect(enemyPokemon.getInverseHp()).toBe(dragonRageDamage); diff --git a/test/moves/dragon_tail.test.ts b/test/moves/dragon_tail.test.ts index 409ce7e28f8..07441d9fb2d 100644 --- a/test/moves/dragon_tail.test.ts +++ b/test/moves/dragon_tail.test.ts @@ -4,9 +4,9 @@ import { Status } from "#app/data/status-effect"; import { Challenges } from "#enums/challenges"; import { StatusEffect } from "#enums/status-effect"; import { PokemonType } from "#enums/pokemon-type"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -29,21 +29,21 @@ describe("Moves - Dragon Tail", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .moveset([Moves.DRAGON_TAIL, Moves.SPLASH, Moves.FLAMETHROWER]) - .enemySpecies(Species.WAILORD) - .enemyMoveset(Moves.SPLASH) + .moveset([MoveId.DRAGON_TAIL, MoveId.SPLASH, MoveId.FLAMETHROWER]) + .enemySpecies(SpeciesId.WAILORD) + .enemyMoveset(MoveId.SPLASH) .startingLevel(5) .enemyLevel(5); - vi.spyOn(allMoves[Moves.DRAGON_TAIL], "accuracy", "get").mockReturnValue(100); + vi.spyOn(allMoves[MoveId.DRAGON_TAIL], "accuracy", "get").mockReturnValue(100); }); it("should cause opponent to flee, and not crash", async () => { - await game.classicMode.startBattle([Species.DRATINI]); + await game.classicMode.startBattle([SpeciesId.DRATINI]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DRAGON_TAIL); + game.move.select(MoveId.DRAGON_TAIL); await game.phaseInterceptor.to("BerryPhase"); @@ -56,13 +56,13 @@ describe("Moves - Dragon Tail", () => { }); it("should cause opponent to flee, display ability, and not crash", async () => { - game.override.enemyAbility(Abilities.ROUGH_SKIN); - await game.classicMode.startBattle([Species.DRATINI]); + game.override.enemyAbility(AbilityId.ROUGH_SKIN); + await game.classicMode.startBattle([SpeciesId.DRATINI]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DRAGON_TAIL); + game.move.select(MoveId.DRAGON_TAIL); await game.phaseInterceptor.to("BerryPhase"); @@ -73,16 +73,16 @@ describe("Moves - Dragon Tail", () => { }); it("should proceed without crashing in a double battle", async () => { - game.override.battleStyle("double").enemyMoveset(Moves.SPLASH).enemyAbility(Abilities.ROUGH_SKIN); - await game.classicMode.startBattle([Species.DRATINI, Species.DRATINI, Species.WAILORD, Species.WAILORD]); + game.override.battleStyle("double").enemyMoveset(MoveId.SPLASH).enemyAbility(AbilityId.ROUGH_SKIN); + await game.classicMode.startBattle([SpeciesId.DRATINI, SpeciesId.DRATINI, SpeciesId.WAILORD, SpeciesId.WAILORD]); const leadPokemon = game.scene.getPlayerParty()[0]!; const enemyLeadPokemon = game.scene.getEnemyParty()[0]!; const enemySecPokemon = game.scene.getEnemyParty()[1]!; - game.move.select(Moves.DRAGON_TAIL, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.DRAGON_TAIL, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -94,16 +94,16 @@ describe("Moves - Dragon Tail", () => { expect(leadPokemon.hp).toBeLessThan(leadPokemon.getMaxHp()); // second turn - game.move.select(Moves.FLAMETHROWER, 0, BattlerIndex.ENEMY_2); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.FLAMETHROWER, 0, BattlerIndex.ENEMY_2); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); expect(enemySecPokemon.hp).toBeLessThan(enemySecPokemon.getMaxHp()); }); it("should redirect targets upon opponent flee", async () => { - game.override.battleStyle("double").enemyMoveset(Moves.SPLASH).enemyAbility(Abilities.ROUGH_SKIN); - await game.classicMode.startBattle([Species.DRATINI, Species.DRATINI, Species.WAILORD, Species.WAILORD]); + game.override.battleStyle("double").enemyMoveset(MoveId.SPLASH).enemyAbility(AbilityId.ROUGH_SKIN); + await game.classicMode.startBattle([SpeciesId.DRATINI, SpeciesId.DRATINI, SpeciesId.WAILORD, SpeciesId.WAILORD]); const leadPokemon = game.scene.getPlayerParty()[0]!; const secPokemon = game.scene.getPlayerParty()[1]!; @@ -111,9 +111,9 @@ describe("Moves - Dragon Tail", () => { const enemyLeadPokemon = game.scene.getEnemyParty()[0]!; const enemySecPokemon = game.scene.getEnemyParty()[1]!; - game.move.select(Moves.DRAGON_TAIL, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.DRAGON_TAIL, 0, BattlerIndex.ENEMY); // target the same pokemon, second move should be redirected after first flees - game.move.select(Moves.DRAGON_TAIL, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.DRAGON_TAIL, 1, BattlerIndex.ENEMY); await game.phaseInterceptor.to("BerryPhase"); @@ -129,12 +129,12 @@ describe("Moves - Dragon Tail", () => { }); it("doesn't switch out if the target has suction cups", async () => { - game.override.enemyAbility(Abilities.SUCTION_CUPS); - await game.classicMode.startBattle([Species.REGIELEKI]); + game.override.enemyAbility(AbilityId.SUCTION_CUPS); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.DRAGON_TAIL); + game.move.select(MoveId.DRAGON_TAIL); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.isFullHp()).toBe(false); @@ -142,9 +142,9 @@ describe("Moves - Dragon Tail", () => { it("should force a switch upon fainting an opponent normally", async () => { game.override.startingWave(5).startingLevel(1000); // To make sure Dragon Tail KO's the opponent - await game.classicMode.startBattle([Species.DRATINI]); + await game.classicMode.startBattle([SpeciesId.DRATINI]); - game.move.select(Moves.DRAGON_TAIL); + game.move.select(MoveId.DRAGON_TAIL); await game.toNextTurn(); @@ -164,9 +164,9 @@ describe("Moves - Dragon Tail", () => { .startingWave(5) .enemyHeldItems([{ name: "REVIVER_SEED" }]) .startingLevel(1000); // To make sure Dragon Tail KO's the opponent - await game.classicMode.startBattle([Species.DRATINI]); + await game.classicMode.startBattle([SpeciesId.DRATINI]); - game.move.select(Moves.DRAGON_TAIL); + game.move.select(MoveId.DRAGON_TAIL); await game.toNextTurn(); @@ -180,11 +180,11 @@ describe("Moves - Dragon Tail", () => { it("should not cause a softlock when activating a player's reviver seed", async () => { game.override .startingHeldItems([{ name: "REVIVER_SEED" }]) - .enemyMoveset(Moves.DRAGON_TAIL) + .enemyMoveset(MoveId.DRAGON_TAIL) .enemyLevel(1000); // To make sure Dragon Tail KO's the player - await game.classicMode.startBattle([Species.DRATINI, Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.DRATINI, SpeciesId.BULBASAUR]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); @@ -196,8 +196,8 @@ describe("Moves - Dragon Tail", () => { }); it("should force switches randomly", async () => { - game.override.enemyMoveset(Moves.DRAGON_TAIL).startingLevel(100).enemyLevel(1); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + game.override.enemyMoveset(MoveId.DRAGON_TAIL).startingLevel(100).enemyLevel(1); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); const [bulbasaur, charmander, squirtle] = game.scene.getPlayerParty(); @@ -205,8 +205,8 @@ describe("Moves - Dragon Tail", () => { vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((_range, min = 0) => { return min; }); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.DRAGON_TAIL); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.DRAGON_TAIL); await game.toNextTurn(); expect(bulbasaur.isOnField()).toBe(false); @@ -218,7 +218,7 @@ describe("Moves - Dragon Tail", () => { vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((_range, min = 0) => { return min + 1; }); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(bulbasaur.isOnField()).toBe(false); @@ -228,10 +228,10 @@ describe("Moves - Dragon Tail", () => { }); it("should not force a switch to a challenge-ineligible Pokemon", async () => { - game.override.enemyMoveset(Moves.DRAGON_TAIL).startingLevel(100).enemyLevel(1); + game.override.enemyMoveset(MoveId.DRAGON_TAIL).startingLevel(100).enemyLevel(1); // Mono-Water challenge, Eevee is ineligible game.challengeMode.addChallenge(Challenges.SINGLE_TYPE, PokemonType.WATER + 1, 0); - await game.challengeMode.startBattle([Species.LAPRAS, Species.EEVEE, Species.TOXAPEX, Species.PRIMARINA]); + await game.challengeMode.startBattle([SpeciesId.LAPRAS, SpeciesId.EEVEE, SpeciesId.TOXAPEX, SpeciesId.PRIMARINA]); const [lapras, eevee, toxapex, primarina] = game.scene.getPlayerParty(); @@ -239,7 +239,7 @@ describe("Moves - Dragon Tail", () => { vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((_range, min = 0) => { return min; }); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(lapras.isOnField()).toBe(false); @@ -250,8 +250,8 @@ describe("Moves - Dragon Tail", () => { }); it("should not force a switch to a fainted Pokemon", async () => { - game.override.enemyMoveset([Moves.SPLASH, Moves.DRAGON_TAIL]).startingLevel(100).enemyLevel(1); - await game.classicMode.startBattle([Species.LAPRAS, Species.EEVEE, Species.TOXAPEX, Species.PRIMARINA]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.DRAGON_TAIL]).startingLevel(100).enemyLevel(1); + await game.classicMode.startBattle([SpeciesId.LAPRAS, SpeciesId.EEVEE, SpeciesId.TOXAPEX, SpeciesId.PRIMARINA]); const [lapras, eevee, toxapex, primarina] = game.scene.getPlayerParty(); @@ -259,16 +259,16 @@ describe("Moves - Dragon Tail", () => { eevee.hp = 0; eevee.status = new Status(StatusEffect.FAINT); expect(eevee.isFainted()).toBe(true); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); // Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((_range, min = 0) => { return min; }); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.DRAGON_TAIL); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.DRAGON_TAIL); await game.toNextTurn(); expect(lapras.isOnField()).toBe(false); @@ -279,8 +279,8 @@ describe("Moves - Dragon Tail", () => { }); it("should not force a switch if there are no available Pokemon to switch into", async () => { - game.override.enemyMoveset([Moves.SPLASH, Moves.DRAGON_TAIL]).startingLevel(100).enemyLevel(1); - await game.classicMode.startBattle([Species.LAPRAS, Species.EEVEE]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.DRAGON_TAIL]).startingLevel(100).enemyLevel(1); + await game.classicMode.startBattle([SpeciesId.LAPRAS, SpeciesId.EEVEE]); const [lapras, eevee] = game.scene.getPlayerParty(); @@ -288,16 +288,16 @@ describe("Moves - Dragon Tail", () => { eevee.hp = 0; eevee.status = new Status(StatusEffect.FAINT); expect(eevee.isFainted()).toBe(true); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); // Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((_range, min = 0) => { return min; }); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.DRAGON_TAIL); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.DRAGON_TAIL); await game.toNextTurn(); expect(lapras.isOnField()).toBe(true); diff --git a/test/moves/dynamax_cannon.test.ts b/test/moves/dynamax_cannon.test.ts index 19a15225653..ada3361f3ef 100644 --- a/test/moves/dynamax_cannon.test.ts +++ b/test/moves/dynamax_cannon.test.ts @@ -2,9 +2,9 @@ import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/data-lists"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import type Move from "#app/data/moves/move"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -26,32 +26,32 @@ describe("Moves - Dynamax Cannon", () => { }); beforeEach(() => { - dynamaxCannon = allMoves[Moves.DYNAMAX_CANNON]; + dynamaxCannon = allMoves[MoveId.DYNAMAX_CANNON]; game = new GameManager(phaserGame); game.override - .moveset(Moves.DYNAMAX_CANNON) + .moveset(MoveId.DYNAMAX_CANNON) .startingLevel(200) .levelCap(10) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH); // Note that, for Waves 1-10, the level cap is 10 game.override.startingWave(1); game.override.battleStyle("single"); game.override.disableCrits(); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyMoveset([Moves.SPLASH, Moves.SPLASH, Moves.SPLASH, Moves.SPLASH]); + game.override.enemySpecies(SpeciesId.MAGIKARP); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.SPLASH, MoveId.SPLASH, MoveId.SPLASH]); vi.spyOn(dynamaxCannon, "calculateBattlePower"); }); it("should return 100 power against an enemy below level cap", async () => { game.override.enemyLevel(1); - await game.classicMode.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([SpeciesId.ETERNATUS]); game.move.select(dynamaxCannon.id); @@ -63,7 +63,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 100 power against an enemy at level cap", async () => { game.override.enemyLevel(10); - await game.classicMode.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([SpeciesId.ETERNATUS]); game.move.select(dynamaxCannon.id); @@ -75,7 +75,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 120 power against an enemy 1% above level cap", async () => { game.override.enemyLevel(101); - await game.classicMode.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([SpeciesId.ETERNATUS]); game.move.select(dynamaxCannon.id); @@ -90,7 +90,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 140 power against an enemy 2% above level capp", async () => { game.override.enemyLevel(102); - await game.classicMode.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([SpeciesId.ETERNATUS]); game.move.select(dynamaxCannon.id); @@ -105,7 +105,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 160 power against an enemy 3% above level cap", async () => { game.override.enemyLevel(103); - await game.classicMode.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([SpeciesId.ETERNATUS]); game.move.select(dynamaxCannon.id); @@ -120,7 +120,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 180 power against an enemy 4% above level cap", async () => { game.override.enemyLevel(104); - await game.classicMode.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([SpeciesId.ETERNATUS]); game.move.select(dynamaxCannon.id); @@ -135,7 +135,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 200 power against an enemy 5% above level cap", async () => { game.override.enemyLevel(105); - await game.classicMode.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([SpeciesId.ETERNATUS]); game.move.select(dynamaxCannon.id); @@ -150,7 +150,7 @@ describe("Moves - Dynamax Cannon", () => { it("should return 200 power against an enemy way above level cap", async () => { game.override.enemyLevel(999); - await game.classicMode.startBattle([Species.ETERNATUS]); + await game.classicMode.startBattle([SpeciesId.ETERNATUS]); game.move.select(dynamaxCannon.id); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); diff --git a/test/moves/effectiveness.test.ts b/test/moves/effectiveness.test.ts index 9fc6c7b8ce7..b906e00e1a0 100644 --- a/test/moves/effectiveness.test.ts +++ b/test/moves/effectiveness.test.ts @@ -2,9 +2,9 @@ import { allMoves } from "#app/data/data-lists"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { TrainerSlot } from "#enums/trainer-slot"; import { PokemonType } from "#enums/pokemon-type"; -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import * as Messages from "#app/messages"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -12,17 +12,17 @@ import { afterEach, beforeAll, describe, expect, it, vi } from "vitest"; function testMoveEffectiveness( game: GameManager, - move: Moves, - targetSpecies: Species, + move: MoveId, + targetSpecies: SpeciesId, expected: number, - targetAbility: Abilities = Abilities.BALL_FETCH, + targetAbility: AbilityId = AbilityId.BALL_FETCH, teraType?: PokemonType, ): void { // Suppress getPokemonNameWithAffix because it calls on a null battle spec vi.spyOn(Messages, "getPokemonNameWithAffix").mockReturnValue(""); game.override.enemyAbility(targetAbility); - const user = game.scene.addPlayerPokemon(getPokemonSpecies(Species.SNORLAX), 5); + const user = game.scene.addPlayerPokemon(getPokemonSpecies(SpeciesId.SNORLAX), 5); const target = game.scene.addEnemyPokemon(getPokemonSpecies(targetSpecies), 5, TrainerSlot.NONE); if (teraType !== undefined) { @@ -45,7 +45,7 @@ describe("Moves - Type Effectiveness", () => { }); game = new GameManager(phaserGame); - game.override.ability(Abilities.BALL_FETCH); + game.override.ability(AbilityId.BALL_FETCH); }); afterEach(() => { @@ -53,48 +53,48 @@ describe("Moves - Type Effectiveness", () => { }); it("Normal-type attacks are neutrally effective against Normal-type Pokemon", () => - testMoveEffectiveness(game, Moves.TACKLE, Species.SNORLAX, 1)); + testMoveEffectiveness(game, MoveId.TACKLE, SpeciesId.SNORLAX, 1)); it("Normal-type attacks are not very effective against Steel-type Pokemon", () => - testMoveEffectiveness(game, Moves.TACKLE, Species.REGISTEEL, 0.5)); + testMoveEffectiveness(game, MoveId.TACKLE, SpeciesId.REGISTEEL, 0.5)); it("Normal-type attacks are doubly resisted by Steel/Rock-type Pokemon", () => - testMoveEffectiveness(game, Moves.TACKLE, Species.AGGRON, 0.25)); + testMoveEffectiveness(game, MoveId.TACKLE, SpeciesId.AGGRON, 0.25)); it("Normal-type attacks have no effect on Ghost-type Pokemon", () => - testMoveEffectiveness(game, Moves.TACKLE, Species.DUSCLOPS, 0)); + testMoveEffectiveness(game, MoveId.TACKLE, SpeciesId.DUSCLOPS, 0)); it("Normal-type status moves are not affected by type matchups", () => - testMoveEffectiveness(game, Moves.GROWL, Species.DUSCLOPS, 1)); + testMoveEffectiveness(game, MoveId.GROWL, SpeciesId.DUSCLOPS, 1)); it("Electric-type attacks are super-effective against Water-type Pokemon", () => - testMoveEffectiveness(game, Moves.THUNDERBOLT, Species.BLASTOISE, 2)); + testMoveEffectiveness(game, MoveId.THUNDERBOLT, SpeciesId.BLASTOISE, 2)); it("Ghost-type attacks have no effect on Normal-type Pokemon", () => - testMoveEffectiveness(game, Moves.SHADOW_BALL, Species.URSALUNA, 0)); + testMoveEffectiveness(game, MoveId.SHADOW_BALL, SpeciesId.URSALUNA, 0)); it("Electric-type attacks are doubly super-effective against Water/Flying-type Pokemon", () => - testMoveEffectiveness(game, Moves.THUNDERBOLT, Species.GYARADOS, 4)); + testMoveEffectiveness(game, MoveId.THUNDERBOLT, SpeciesId.GYARADOS, 4)); it("Electric-type attacks are negated by Volt Absorb", () => - testMoveEffectiveness(game, Moves.THUNDERBOLT, Species.GYARADOS, 0, Abilities.VOLT_ABSORB)); + testMoveEffectiveness(game, MoveId.THUNDERBOLT, SpeciesId.GYARADOS, 0, AbilityId.VOLT_ABSORB)); it("Electric-type attacks are super-effective against Tera-Water Pokemon", () => - testMoveEffectiveness(game, Moves.THUNDERBOLT, Species.EXCADRILL, 2, Abilities.BALL_FETCH, PokemonType.WATER)); + testMoveEffectiveness(game, MoveId.THUNDERBOLT, SpeciesId.EXCADRILL, 2, AbilityId.BALL_FETCH, PokemonType.WATER)); it("Powder moves have no effect on Grass-type Pokemon", () => - testMoveEffectiveness(game, Moves.SLEEP_POWDER, Species.AMOONGUSS, 0)); + testMoveEffectiveness(game, MoveId.SLEEP_POWDER, SpeciesId.AMOONGUSS, 0)); it("Powder moves have no effect on Tera-Grass Pokemon", () => - testMoveEffectiveness(game, Moves.SLEEP_POWDER, Species.SNORLAX, 0, Abilities.BALL_FETCH, PokemonType.GRASS)); + testMoveEffectiveness(game, MoveId.SLEEP_POWDER, SpeciesId.SNORLAX, 0, AbilityId.BALL_FETCH, PokemonType.GRASS)); it("Prankster-boosted status moves have no effect on Dark-type Pokemon", () => { - game.override.ability(Abilities.PRANKSTER); - testMoveEffectiveness(game, Moves.BABY_DOLL_EYES, Species.MIGHTYENA, 0); + game.override.ability(AbilityId.PRANKSTER); + testMoveEffectiveness(game, MoveId.BABY_DOLL_EYES, SpeciesId.MIGHTYENA, 0); }); it("Prankster-boosted status moves have no effect on Tera-Dark Pokemon", () => { - game.override.ability(Abilities.PRANKSTER); - testMoveEffectiveness(game, Moves.BABY_DOLL_EYES, Species.SNORLAX, 0, Abilities.BALL_FETCH, PokemonType.DARK); + game.override.ability(AbilityId.PRANKSTER); + testMoveEffectiveness(game, MoveId.BABY_DOLL_EYES, SpeciesId.SNORLAX, 0, AbilityId.BALL_FETCH, PokemonType.DARK); }); }); diff --git a/test/moves/electrify.test.ts b/test/moves/electrify.test.ts index 25529e0b552..00f96d570a3 100644 --- a/test/moves/electrify.test.ts +++ b/test/moves/electrify.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { PokemonType } from "#enums/pokemon-type"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; @@ -24,23 +24,23 @@ describe("Moves - Electrify", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Moves.ELECTRIFY) + .moveset(MoveId.ELECTRIFY) .battleStyle("single") .startingLevel(100) - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.TACKLE) + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.TACKLE) .enemyLevel(100); }); it("should convert attacks to Electric type", async () => { - await game.classicMode.startBattle([Species.EXCADRILL]); + await game.classicMode.startBattle([SpeciesId.EXCADRILL]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; vi.spyOn(enemyPokemon, "getMoveType"); - game.move.select(Moves.ELECTRIFY); + game.move.select(MoveId.ELECTRIFY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -50,15 +50,15 @@ describe("Moves - Electrify", () => { }); it("should override type changes from abilities", async () => { - game.override.enemyAbility(Abilities.PIXILATE); + game.override.enemyAbility(AbilityId.PIXILATE); - await game.classicMode.startBattle([Species.EXCADRILL]); + await game.classicMode.startBattle([SpeciesId.EXCADRILL]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getPlayerPokemon()!; vi.spyOn(enemyPokemon, "getMoveType"); - game.move.select(Moves.ELECTRIFY); + game.move.select(MoveId.ELECTRIFY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); diff --git a/test/moves/electro_shot.test.ts b/test/moves/electro_shot.test.ts index 0122bf04281..160f90163e3 100644 --- a/test/moves/electro_shot.test.ts +++ b/test/moves/electro_shot.test.ts @@ -2,9 +2,9 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { Stat } from "#enums/stat"; import { WeatherType } from "#enums/weather-type"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; @@ -26,22 +26,22 @@ describe("Moves - Electro Shot", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Moves.ELECTRO_SHOT) + .moveset(MoveId.ELECTRO_SHOT) .battleStyle("single") .startingLevel(100) - .enemySpecies(Species.SNORLAX) + .enemySpecies(SpeciesId.SNORLAX) .enemyLevel(100) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should increase the user's Sp. Atk on the first turn, then attack on the second turn", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.ELECTRO_SHOT); + game.move.select(MoveId.ELECTRO_SHOT); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getTag(BattlerTagType.CHARGING)).toBeDefined(); @@ -56,7 +56,7 @@ describe("Moves - Electro Shot", () => { expect(playerPokemon.getStatStage(Stat.SPATK)).toBe(1); expect(playerPokemon.getLastXMoves(1)[0].result).toBe(MoveResult.SUCCESS); - const playerElectroShot = playerPokemon.getMoveset().find(mv => mv && mv.moveId === Moves.ELECTRO_SHOT); + const playerElectroShot = playerPokemon.getMoveset().find(mv => mv && mv.moveId === MoveId.ELECTRO_SHOT); expect(playerElectroShot?.ppUsed).toBe(1); }); @@ -66,12 +66,12 @@ describe("Moves - Electro Shot", () => { ])("should fully resolve in one turn if $name is active", async ({ weatherType }) => { game.override.weather(weatherType); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.ELECTRO_SHOT); + game.move.select(MoveId.ELECTRO_SHOT); await game.phaseInterceptor.to("MoveEffectPhase", false); expect(playerPokemon.getStatStage(Stat.SPATK)).toBe(1); @@ -82,18 +82,18 @@ describe("Moves - Electro Shot", () => { expect(playerPokemon.getMoveHistory()).toHaveLength(2); expect(playerPokemon.getLastXMoves(1)[0].result).toBe(MoveResult.SUCCESS); - const playerElectroShot = playerPokemon.getMoveset().find(mv => mv && mv.moveId === Moves.ELECTRO_SHOT); + const playerElectroShot = playerPokemon.getMoveset().find(mv => mv && mv.moveId === MoveId.ELECTRO_SHOT); expect(playerElectroShot?.ppUsed).toBe(1); }); it("should only increase Sp. Atk once with Multi-Lens", async () => { game.override.weather(WeatherType.RAIN).startingHeldItems([{ name: "MULTI_LENS", count: 1 }]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.ELECTRO_SHOT); + game.move.select(MoveId.ELECTRO_SHOT); await game.phaseInterceptor.to("MoveEndPhase"); expect(playerPokemon.turnData.hitCount).toBe(1); diff --git a/test/moves/encore.test.ts b/test/moves/encore.test.ts index f941328fc90..cded90c4a73 100644 --- a/test/moves/encore.test.ts +++ b/test/moves/encore.test.ts @@ -1,9 +1,9 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { BattlerIndex } from "#app/battle"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,58 +25,58 @@ describe("Moves - Encore", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.ENCORE]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH, MoveId.ENCORE]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.SPLASH, Moves.TACKLE]) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.SPLASH, MoveId.TACKLE]) .startingLevel(100) .enemyLevel(100); }); it("should prevent the target from using any move except the last used move", async () => { - await game.classicMode.startBattle([Species.SNORLAX]); + await game.classicMode.startBattle([SpeciesId.SNORLAX]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.ENCORE); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.ENCORE); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); expect(enemyPokemon.getTag(BattlerTagType.ENCORE)).toBeDefined(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); // The enemy AI would normally be inclined to use Tackle, but should be // forced into using Splash. await game.phaseInterceptor.to("BerryPhase", false); - expect(enemyPokemon.getLastXMoves().every(turnMove => turnMove.move === Moves.SPLASH)).toBeTruthy(); + expect(enemyPokemon.getLastXMoves().every(turnMove => turnMove.move === MoveId.SPLASH)).toBeTruthy(); }); describe("should fail against the following moves:", () => { it.each([ - { moveId: Moves.TRANSFORM, name: "Transform", delay: false }, - { moveId: Moves.MIMIC, name: "Mimic", delay: true }, - { moveId: Moves.SKETCH, name: "Sketch", delay: true }, - { moveId: Moves.ENCORE, name: "Encore", delay: false }, - { moveId: Moves.STRUGGLE, name: "Struggle", delay: false }, + { moveId: MoveId.TRANSFORM, name: "Transform", delay: false }, + { moveId: MoveId.MIMIC, name: "Mimic", delay: true }, + { moveId: MoveId.SKETCH, name: "Sketch", delay: true }, + { moveId: MoveId.ENCORE, name: "Encore", delay: false }, + { moveId: MoveId.STRUGGLE, name: "Struggle", delay: false }, ])("$name", async ({ moveId, delay }) => { game.override.enemyMoveset(moveId); - await game.classicMode.startBattle([Species.SNORLAX]); + await game.classicMode.startBattle([SpeciesId.SNORLAX]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; if (delay) { - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); } - game.move.select(Moves.ENCORE); + game.move.select(MoveId.ENCORE); const turnOrder = delay ? [BattlerIndex.PLAYER, BattlerIndex.ENEMY] : [BattlerIndex.ENEMY, BattlerIndex.PLAYER]; await game.setTurnOrder(turnOrder); @@ -89,26 +89,26 @@ describe("Moves - Encore", () => { it("Pokemon under both Encore and Torment should alternate between Struggle and restricted move", async () => { const turnOrder = [BattlerIndex.ENEMY, BattlerIndex.PLAYER]; - game.override.moveset([Moves.ENCORE, Moves.TORMENT, Moves.SPLASH]); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.moveset([MoveId.ENCORE, MoveId.TORMENT, MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemyPokemon = game.scene.getEnemyPokemon(); - game.move.select(Moves.ENCORE); + game.move.select(MoveId.ENCORE); await game.setTurnOrder(turnOrder); await game.phaseInterceptor.to("BerryPhase"); expect(enemyPokemon?.getTag(BattlerTagType.ENCORE)).toBeDefined(); await game.toNextTurn(); - game.move.select(Moves.TORMENT); + game.move.select(MoveId.TORMENT); await game.setTurnOrder(turnOrder); await game.phaseInterceptor.to("BerryPhase"); expect(enemyPokemon?.getTag(BattlerTagType.TORMENT)).toBeDefined(); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder(turnOrder); await game.phaseInterceptor.to("BerryPhase"); const lastMove = enemyPokemon?.getLastXMoves()[0]; - expect(lastMove?.move).toBe(Moves.STRUGGLE); + expect(lastMove?.move).toBe(MoveId.STRUGGLE); }); }); diff --git a/test/moves/endure.test.ts b/test/moves/endure.test.ts index 190a689f46e..799be22ba45 100644 --- a/test/moves/endure.test.ts +++ b/test/moves/endure.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -22,39 +22,39 @@ describe("Moves - Endure", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.THUNDER, Moves.BULLET_SEED, Moves.TOXIC, Moves.SHEER_COLD]) - .ability(Abilities.SKILL_LINK) + .moveset([MoveId.THUNDER, MoveId.BULLET_SEED, MoveId.TOXIC, MoveId.SHEER_COLD]) + .ability(AbilityId.SKILL_LINK) .startingLevel(100) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.NO_GUARD) - .enemyMoveset(Moves.ENDURE); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.NO_GUARD) + .enemyMoveset(MoveId.ENDURE); }); it("should let the pokemon survive with 1 HP", async () => { - await game.classicMode.startBattle([Species.ARCEUS]); + await game.classicMode.startBattle([SpeciesId.ARCEUS]); - game.move.select(Moves.THUNDER); + game.move.select(MoveId.THUNDER); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.hp).toBe(1); }); it("should let the pokemon survive with 1 HP when hit with a multihit move", async () => { - await game.classicMode.startBattle([Species.ARCEUS]); + await game.classicMode.startBattle([SpeciesId.ARCEUS]); - game.move.select(Moves.BULLET_SEED); + game.move.select(MoveId.BULLET_SEED); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.hp).toBe(1); }); it("should let the pokemon survive against OHKO moves", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SHEER_COLD); + game.move.select(MoveId.SHEER_COLD); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.isFainted()).toBeFalsy(); @@ -62,19 +62,19 @@ describe("Moves - Endure", () => { // comprehensive indirect damage test copied from Reviver Seed test it.each([ - { moveType: "Damaging Move Chip Damage", move: Moves.SALT_CURE }, - { moveType: "Chip Damage", move: Moves.LEECH_SEED }, - { moveType: "Trapping Chip Damage", move: Moves.WHIRLPOOL }, - { moveType: "Status Effect Damage", move: Moves.TOXIC }, - { moveType: "Weather", move: Moves.SANDSTORM }, + { moveType: "Damaging Move Chip Damage", move: MoveId.SALT_CURE }, + { moveType: "Chip Damage", move: MoveId.LEECH_SEED }, + { moveType: "Trapping Chip Damage", move: MoveId.WHIRLPOOL }, + { moveType: "Status Effect Damage", move: MoveId.TOXIC }, + { moveType: "Weather", move: MoveId.SANDSTORM }, ])("should not prevent fainting from $moveType", async ({ move }) => { game.override .enemyLevel(1) .startingLevel(100) - .enemySpecies(Species.MAGIKARP) + .enemySpecies(SpeciesId.MAGIKARP) .moveset(move) - .enemyMoveset(Moves.ENDURE); - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + .enemyMoveset(MoveId.ENDURE); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon()!; enemy.damageAndUpdate(enemy.hp - 1); diff --git a/test/moves/entrainment.test.ts b/test/moves/entrainment.test.ts index 31a8ffcab85..0a0cbd3b5f9 100644 --- a/test/moves/entrainment.test.ts +++ b/test/moves/entrainment.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#app/enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,29 +23,29 @@ describe("Moves - Entrainment", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.ENTRAINMENT]) - .ability(Abilities.ADAPTABILITY) + .moveset([MoveId.SPLASH, MoveId.ENTRAINMENT]) + .ability(AbilityId.ADAPTABILITY) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("gives its ability to the target", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.ENTRAINMENT); + game.move.select(MoveId.ENTRAINMENT); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(Abilities.ADAPTABILITY); + expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(AbilityId.ADAPTABILITY); }); it("should activate post-summon abilities", async () => { - game.override.ability(Abilities.INTIMIDATE); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.ability(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.ENTRAINMENT); + game.move.select(MoveId.ENTRAINMENT); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()?.getStatStage(Stat.ATK)).toBe(-1); diff --git a/test/moves/fairy_lock.test.ts b/test/moves/fairy_lock.test.ts index faffdee2304..5624d038595 100644 --- a/test/moves/fairy_lock.test.ts +++ b/test/moves/fairy_lock.test.ts @@ -1,8 +1,8 @@ import { ArenaTagSide } from "#app/data/arena-tag"; import { ArenaTagType } from "#app/enums/arena-tag-type"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,34 +24,34 @@ describe("Moves - Fairy Lock", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.FAIRY_LOCK, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.FAIRY_LOCK, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("double") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.SPLASH, Moves.U_TURN]); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.SPLASH, MoveId.U_TURN]); }); it("Applies Fairy Lock tag for two turns", async () => { - await game.classicMode.startBattle([Species.KLEFKI, Species.TYRUNT]); + await game.classicMode.startBattle([SpeciesId.KLEFKI, SpeciesId.TYRUNT]); const playerPokemon = game.scene.getPlayerField(); const enemyField = game.scene.getEnemyField(); - game.move.select(Moves.FAIRY_LOCK); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH, 1); + game.move.select(MoveId.FAIRY_LOCK); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined(); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.ENEMY)).toBeDefined(); await game.toNextTurn(); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); expect(playerPokemon[0].isTrapped()).toEqual(true); expect(playerPokemon[1].isTrapped()).toEqual(true); @@ -66,12 +66,12 @@ describe("Moves - Fairy Lock", () => { }); it("Ghost types can escape Fairy Lock", async () => { - await game.classicMode.startBattle([Species.DUSKNOIR, Species.GENGAR, Species.TYRUNT]); + await game.classicMode.startBattle([SpeciesId.DUSKNOIR, SpeciesId.GENGAR, SpeciesId.TYRUNT]); - game.move.select(Moves.FAIRY_LOCK); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH, 1); + game.move.select(MoveId.FAIRY_LOCK); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined(); @@ -82,61 +82,61 @@ describe("Moves - Fairy Lock", () => { expect(game.scene.getPlayerField()[0].isTrapped()).toEqual(false); expect(game.scene.getPlayerField()[1].isTrapped()).toEqual(false); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.doSwitchPokemon(2); - await game.move.selectEnemyMove(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); await game.toNextTurn(); - expect(game.scene.getPlayerField()[1].species.speciesId).not.toBe(Species.GENGAR); + expect(game.scene.getPlayerField()[1].species.speciesId).not.toBe(SpeciesId.GENGAR); }); it("Phasing moves will still switch out", async () => { - game.override.enemyMoveset([Moves.SPLASH, Moves.WHIRLWIND]); - await game.classicMode.startBattle([Species.KLEFKI, Species.TYRUNT, Species.ZYGARDE]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.WHIRLWIND]); + await game.classicMode.startBattle([SpeciesId.KLEFKI, SpeciesId.TYRUNT, SpeciesId.ZYGARDE]); - game.move.select(Moves.FAIRY_LOCK); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH, 1); + game.move.select(MoveId.FAIRY_LOCK); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined(); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.ENEMY)).toBeDefined(); await game.toNextTurn(); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.WHIRLWIND, 0); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.WHIRLWIND, 0); game.doSelectPartyPokemon(2); - await game.move.selectEnemyMove(Moves.WHIRLWIND, 1); + await game.move.selectEnemyMove(MoveId.WHIRLWIND, 1); game.doSelectPartyPokemon(2); await game.phaseInterceptor.to("BerryPhase"); await game.toNextTurn(); - expect(game.scene.getPlayerField()[0].species.speciesId).not.toBe(Species.KLEFKI); - expect(game.scene.getPlayerField()[1].species.speciesId).not.toBe(Species.TYRUNT); + expect(game.scene.getPlayerField()[0].species.speciesId).not.toBe(SpeciesId.KLEFKI); + expect(game.scene.getPlayerField()[1].species.speciesId).not.toBe(SpeciesId.TYRUNT); }); it("If a Pokemon faints and is replaced the replacement is also trapped", async () => { - game.override.moveset([Moves.FAIRY_LOCK, Moves.SPLASH, Moves.MEMENTO]); - await game.classicMode.startBattle([Species.KLEFKI, Species.GUZZLORD, Species.TYRUNT, Species.ZYGARDE]); + game.override.moveset([MoveId.FAIRY_LOCK, MoveId.SPLASH, MoveId.MEMENTO]); + await game.classicMode.startBattle([SpeciesId.KLEFKI, SpeciesId.GUZZLORD, SpeciesId.TYRUNT, SpeciesId.ZYGARDE]); - game.move.select(Moves.FAIRY_LOCK); - game.move.select(Moves.MEMENTO, 1); + game.move.select(MoveId.FAIRY_LOCK); + game.move.select(MoveId.MEMENTO, 1); game.doSelectPartyPokemon(2); - await game.move.selectEnemyMove(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined(); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.ENEMY)).toBeDefined(); await game.toNextTurn(); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerField()[0].isTrapped()).toEqual(true); expect(game.scene.getPlayerField()[1].isTrapped()).toEqual(true); diff --git a/test/moves/fake_out.test.ts b/test/moves/fake_out.test.ts index 404473c8fa0..95f69fe792e 100644 --- a/test/moves/fake_out.test.ts +++ b/test/moves/fake_out.test.ts @@ -1,6 +1,6 @@ import GameManager from "#test/testUtils/gameManager"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -22,26 +22,26 @@ describe("Moves - Fake Out", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.CORVIKNIGHT) - .moveset([Moves.FAKE_OUT, Moves.SPLASH]) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.CORVIKNIGHT) + .moveset([MoveId.FAKE_OUT, MoveId.SPLASH]) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(10) .startingLevel(1) // prevent LevelUpPhase from happening .disableCrits(); }); it("should only work the first turn a pokemon is sent out in a battle", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const corv = game.scene.getEnemyPokemon()!; - game.move.select(Moves.FAKE_OUT); + game.move.select(MoveId.FAKE_OUT); await game.toNextTurn(); expect(corv.hp).toBeLessThan(corv.getMaxHp()); const postTurnOneHp = corv.hp; - game.move.select(Moves.FAKE_OUT); + game.move.select(MoveId.FAKE_OUT); await game.toNextTurn(); expect(corv.hp).toBe(postTurnOneHp); @@ -49,14 +49,14 @@ describe("Moves - Fake Out", () => { // This is a PokeRogue buff to Fake Out it("should succeed at the start of each new wave, even if user wasn't recalled", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); // set hp to 1 for easy knockout game.scene.getEnemyPokemon()!.hp = 1; - game.move.select(Moves.FAKE_OUT); + game.move.select(MoveId.FAKE_OUT); await game.toNextWave(); - game.move.select(Moves.FAKE_OUT); + game.move.select(MoveId.FAKE_OUT); await game.toNextTurn(); const corv = game.scene.getEnemyPokemon()!; @@ -66,14 +66,14 @@ describe("Moves - Fake Out", () => { // This is a PokeRogue buff to Fake Out it("should succeed at the start of each new wave, even if user wasn't recalled", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); // set hp to 1 for easy knockout game.scene.getEnemyPokemon()!.hp = 1; - game.move.select(Moves.FAKE_OUT); + game.move.select(MoveId.FAKE_OUT); await game.toNextWave(); - game.move.select(Moves.FAKE_OUT); + game.move.select(MoveId.FAKE_OUT); await game.toNextTurn(); const corv = game.scene.getEnemyPokemon()!; @@ -82,9 +82,9 @@ describe("Moves - Fake Out", () => { }); it("should succeed if recalled and sent back out", async () => { - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); - game.move.select(Moves.FAKE_OUT); + game.move.select(MoveId.FAKE_OUT); await game.toNextTurn(); const corv = game.scene.getEnemyPokemon()!; @@ -98,7 +98,7 @@ describe("Moves - Fake Out", () => { game.doSwitchPokemon(1); await game.toNextTurn(); - game.move.select(Moves.FAKE_OUT); + game.move.select(MoveId.FAKE_OUT); await game.toNextTurn(); expect(corv.hp).toBeLessThan(corv.getMaxHp()); diff --git a/test/moves/false_swipe.test.ts b/test/moves/false_swipe.test.ts index d6743477cae..48e4de6fb65 100644 --- a/test/moves/false_swipe.test.ts +++ b/test/moves/false_swipe.test.ts @@ -1,7 +1,7 @@ import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,31 +23,31 @@ describe("Moves - False Swipe", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.FALSE_SWIPE]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.FALSE_SWIPE]) + .ability(AbilityId.BALL_FETCH) .startingLevel(1000) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should reduce the target to 1 HP", async () => { - await game.classicMode.startBattle([Species.MILOTIC]); + await game.classicMode.startBattle([SpeciesId.MILOTIC]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.FALSE_SWIPE); + game.move.select(MoveId.FALSE_SWIPE); await game.toNextTurn(); - game.move.select(Moves.FALSE_SWIPE); + game.move.select(MoveId.FALSE_SWIPE); await game.phaseInterceptor.to("BerryPhase"); expect(enemy.hp).toBe(1); const falseSwipeHistory = player .getMoveHistory() - .every(turnMove => turnMove.move === Moves.FALSE_SWIPE && turnMove.result === MoveResult.SUCCESS); + .every(turnMove => turnMove.move === MoveId.FALSE_SWIPE && turnMove.result === MoveResult.SUCCESS); expect(falseSwipeHistory).toBe(true); }); }); diff --git a/test/moves/fell_stinger.test.ts b/test/moves/fell_stinger.test.ts index 50813029c05..d5081a3ba30 100644 --- a/test/moves/fell_stinger.test.ts +++ b/test/moves/fell_stinger.test.ts @@ -1,9 +1,9 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#app/enums/status-effect"; import { WeatherType } from "#app/enums/weather-type"; @@ -28,21 +28,21 @@ describe("Moves - Fell Stinger", () => { game.override .battleStyle("single") - .moveset([Moves.FELL_STINGER, Moves.SALT_CURE, Moves.BIND, Moves.LEECH_SEED]) + .moveset([MoveId.FELL_STINGER, MoveId.SALT_CURE, MoveId.BIND, MoveId.LEECH_SEED]) .startingLevel(50) .disableCrits() - .enemyAbility(Abilities.STURDY) - .enemySpecies(Species.HYPNO) - .enemyMoveset(Moves.SPLASH) + .enemyAbility(AbilityId.STURDY) + .enemySpecies(SpeciesId.HYPNO) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(5); }); it("should not grant stat boost if opponent gets KO'd by recoil", async () => { - game.override.enemyMoveset([Moves.DOUBLE_EDGE]); + game.override.enemyMoveset([MoveId.DOUBLE_EDGE]); - await game.classicMode.startBattle([Species.LEAVANNY]); + await game.classicMode.startBattle([SpeciesId.LEAVANNY]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.FELL_STINGER); + game.move.select(MoveId.FELL_STINGER); await game.phaseInterceptor.to("VictoryPhase"); @@ -50,11 +50,11 @@ describe("Moves - Fell Stinger", () => { }); it("should not grant stat boost if enemy is KO'd by status effect", async () => { - game.override.enemyMoveset(Moves.SPLASH).enemyStatusEffect(StatusEffect.BURN); + game.override.enemyMoveset(MoveId.SPLASH).enemyStatusEffect(StatusEffect.BURN); - await game.classicMode.startBattle([Species.LEAVANNY]); + await game.classicMode.startBattle([SpeciesId.LEAVANNY]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.FELL_STINGER); + game.move.select(MoveId.FELL_STINGER); await game.phaseInterceptor.to("VictoryPhase"); @@ -64,10 +64,10 @@ describe("Moves - Fell Stinger", () => { it("should not grant stat boost if enemy is KO'd by damaging weather", async () => { game.override.weather(WeatherType.HAIL); - await game.classicMode.startBattle([Species.LEAVANNY]); + await game.classicMode.startBattle([SpeciesId.LEAVANNY]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.FELL_STINGER); + game.move.select(MoveId.FELL_STINGER); await game.phaseInterceptor.to("VictoryPhase"); @@ -75,12 +75,12 @@ describe("Moves - Fell Stinger", () => { }); it("should not grant stat boost if enemy is KO'd by Dry Skin + Harsh Sunlight", async () => { - game.override.enemyPassiveAbility(Abilities.STURDY).enemyAbility(Abilities.DRY_SKIN).weather(WeatherType.HARSH_SUN); + game.override.enemyPassiveAbility(AbilityId.STURDY).enemyAbility(AbilityId.DRY_SKIN).weather(WeatherType.HARSH_SUN); - await game.challengeMode.startBattle([Species.LEAVANNY]); + await game.challengeMode.startBattle([SpeciesId.LEAVANNY]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.FELL_STINGER); + game.move.select(MoveId.FELL_STINGER); await game.phaseInterceptor.to("VictoryPhase"); @@ -88,11 +88,11 @@ describe("Moves - Fell Stinger", () => { }); it("should not grant stat boost if enemy is saved by Reviver Seed", async () => { - game.override.enemyAbility(Abilities.BALL_FETCH).enemyHeldItems([{ name: "REVIVER_SEED" }]); + game.override.enemyAbility(AbilityId.BALL_FETCH).enemyHeldItems([{ name: "REVIVER_SEED" }]); - await game.classicMode.startBattle([Species.LEAVANNY]); + await game.classicMode.startBattle([SpeciesId.LEAVANNY]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.FELL_STINGER); + game.move.select(MoveId.FELL_STINGER); await game.phaseInterceptor.to("TurnEndPhase"); expect(leadPokemon.getStatStage(Stat.ATK)).toBe(0); @@ -100,23 +100,23 @@ describe("Moves - Fell Stinger", () => { it("should not grant stat boost if enemy is KO'd by Salt Cure", async () => { game.override.battleStyle("double").startingLevel(5); - const saltCure = allMoves[Moves.SALT_CURE]; - const fellStinger = allMoves[Moves.FELL_STINGER]; + const saltCure = allMoves[MoveId.SALT_CURE]; + const fellStinger = allMoves[MoveId.FELL_STINGER]; vi.spyOn(saltCure, "accuracy", "get").mockReturnValue(100); vi.spyOn(fellStinger, "power", "get").mockReturnValue(50000); - await game.classicMode.startBattle([Species.LEAVANNY]); + await game.classicMode.startBattle([SpeciesId.LEAVANNY]); const leadPokemon = game.scene.getPlayerPokemon()!; const leftEnemy = game.scene.getEnemyField()[0]!; // Turn 1: set Salt Cure, enemy splashes and does nothing - game.move.select(Moves.SALT_CURE, 0, leftEnemy.getBattlerIndex()); + game.move.select(MoveId.SALT_CURE, 0, leftEnemy.getBattlerIndex()); // Turn 2: enemy Endures Fell Stinger, then dies to Salt Cure await game.toNextTurn(); expect(leftEnemy.isFainted()).toBe(false); leftEnemy.heal(leftEnemy.getMaxHp()); - game.move.select(Moves.FELL_STINGER); + game.move.select(MoveId.FELL_STINGER); await game.toNextTurn(); expect(leftEnemy.isFainted()).toBe(true); @@ -125,21 +125,21 @@ describe("Moves - Fell Stinger", () => { it("should not grant stat boost if enemy dies to Bind or a similar effect", async () => { game.override.battleStyle("double").startingLevel(5); - vi.spyOn(allMoves[Moves.BIND], "accuracy", "get").mockReturnValue(100); - vi.spyOn(allMoves[Moves.FELL_STINGER], "power", "get").mockReturnValue(50000); + vi.spyOn(allMoves[MoveId.BIND], "accuracy", "get").mockReturnValue(100); + vi.spyOn(allMoves[MoveId.FELL_STINGER], "power", "get").mockReturnValue(50000); - await game.classicMode.startBattle([Species.LEAVANNY]); + await game.classicMode.startBattle([SpeciesId.LEAVANNY]); const leadPokemon = game.scene.getPlayerPokemon()!; const leftEnemy = game.scene.getEnemyField()[0]!; // Turn 1: set Bind, enemy splashes and does nothing - game.move.select(Moves.BIND, 0, leftEnemy.getBattlerIndex()); + game.move.select(MoveId.BIND, 0, leftEnemy.getBattlerIndex()); // Turn 2: enemy Endures Fell Stinger, then dies to Bind await game.toNextTurn(); expect(leftEnemy.isFainted()).toBe(false); leftEnemy.heal(leftEnemy.getMaxHp()); - game.move.select(Moves.FELL_STINGER, 0, leftEnemy.getBattlerIndex()); + game.move.select(MoveId.FELL_STINGER, 0, leftEnemy.getBattlerIndex()); await game.toNextTurn(); expect(leftEnemy.isFainted()).toBe(true); @@ -148,21 +148,21 @@ describe("Moves - Fell Stinger", () => { it("should not grant stat boost if enemy dies to Leech Seed", async () => { game.override.battleStyle("double").startingLevel(5); - vi.spyOn(allMoves[Moves.LEECH_SEED], "accuracy", "get").mockReturnValue(100); - vi.spyOn(allMoves[Moves.FELL_STINGER], "power", "get").mockReturnValue(50000); + vi.spyOn(allMoves[MoveId.LEECH_SEED], "accuracy", "get").mockReturnValue(100); + vi.spyOn(allMoves[MoveId.FELL_STINGER], "power", "get").mockReturnValue(50000); - await game.classicMode.startBattle([Species.LEAVANNY]); + await game.classicMode.startBattle([SpeciesId.LEAVANNY]); const leadPokemon = game.scene.getPlayerPokemon()!; const leftEnemy = game.scene.getEnemyField()[0]!; // Turn 1: set Leech Seed, enemy splashes and does nothing - game.move.select(Moves.LEECH_SEED, 0, leftEnemy.getBattlerIndex()); + game.move.select(MoveId.LEECH_SEED, 0, leftEnemy.getBattlerIndex()); // Turn 2: enemy Endures Fell Stinger, then dies to Leech Seed await game.toNextTurn(); expect(leftEnemy.isFainted()).toBe(false); leftEnemy.heal(leftEnemy.getMaxHp()); - game.move.select(Moves.FELL_STINGER, 0, leftEnemy.getBattlerIndex()); + game.move.select(MoveId.FELL_STINGER, 0, leftEnemy.getBattlerIndex()); await game.toNextTurn(); expect(leftEnemy.isFainted()).toBe(true); @@ -170,11 +170,11 @@ describe("Moves - Fell Stinger", () => { }); it("should grant stat boost if enemy dies directly to hit", async () => { - game.override.enemyAbility(Abilities.KLUTZ); + game.override.enemyAbility(AbilityId.KLUTZ); - await game.classicMode.startBattle([Species.LEAVANNY]); + await game.classicMode.startBattle([SpeciesId.LEAVANNY]); const leadPokemon = game.scene.getPlayerPokemon(); - game.move.select(Moves.FELL_STINGER); + game.move.select(MoveId.FELL_STINGER); await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/moves/fillet_away.test.ts b/test/moves/fillet_away.test.ts index 9de237b28a1..a24b5c4ae04 100644 --- a/test/moves/fillet_away.test.ts +++ b/test/moves/fillet_away.test.ts @@ -1,7 +1,7 @@ import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { toDmgValue } from "#app/utils/common"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -28,23 +28,23 @@ describe("Moves - FILLET AWAY", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.starterSpecies(Species.MAGIKARP); - game.override.enemySpecies(Species.SNORLAX); + game.override.starterSpecies(SpeciesId.MAGIKARP); + game.override.enemySpecies(SpeciesId.SNORLAX); game.override.startingLevel(100); game.override.enemyLevel(100); - game.override.moveset([Moves.FILLET_AWAY]); - game.override.enemyMoveset(Moves.SPLASH); + game.override.moveset([MoveId.FILLET_AWAY]); + game.override.enemyMoveset(MoveId.SPLASH); }); //Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/fillet_away_(move) test("raises the user's ATK, SPATK, and SPD stat stages by 2 each, at the cost of 1/2 of its maximum HP", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); - game.move.select(Moves.FILLET_AWAY); + game.move.select(MoveId.FILLET_AWAY); await game.phaseInterceptor.to(TurnEndPhase); expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp() - hpLost); @@ -54,7 +54,7 @@ describe("Moves - FILLET AWAY", () => { }); test("still takes effect if one or more of the involved stat stages are not at max", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); @@ -63,7 +63,7 @@ describe("Moves - FILLET AWAY", () => { leadPokemon.setStatStage(Stat.ATK, 6); leadPokemon.setStatStage(Stat.SPATK, 3); - game.move.select(Moves.FILLET_AWAY); + game.move.select(MoveId.FILLET_AWAY); await game.phaseInterceptor.to(TurnEndPhase); expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp() - hpLost); @@ -73,7 +73,7 @@ describe("Moves - FILLET AWAY", () => { }); test("fails if all stat stages involved are at max", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; @@ -81,7 +81,7 @@ describe("Moves - FILLET AWAY", () => { leadPokemon.setStatStage(Stat.SPATK, 6); leadPokemon.setStatStage(Stat.SPD, 6); - game.move.select(Moves.FILLET_AWAY); + game.move.select(MoveId.FILLET_AWAY); await game.phaseInterceptor.to(TurnEndPhase); expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); @@ -91,13 +91,13 @@ describe("Moves - FILLET AWAY", () => { }); test("fails if the user's health is less than 1/2", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); leadPokemon.hp = hpLost - PREDAMAGE; - game.move.select(Moves.FILLET_AWAY); + game.move.select(MoveId.FILLET_AWAY); await game.phaseInterceptor.to(TurnEndPhase); expect(leadPokemon.hp).toBe(hpLost - PREDAMAGE); diff --git a/test/moves/fissure.test.ts b/test/moves/fissure.test.ts index be6be079cf0..53327b505c4 100644 --- a/test/moves/fissure.test.ts +++ b/test/moves/fissure.test.ts @@ -1,10 +1,10 @@ import { Stat } from "#enums/stat"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -31,14 +31,14 @@ describe("Moves - Fissure", () => { game.override.battleStyle("single"); game.override.disableCrits(); - game.override.starterSpecies(Species.SNORLAX); - game.override.moveset([Moves.FISSURE]); - game.override.passiveAbility(Abilities.BALL_FETCH); + game.override.starterSpecies(SpeciesId.SNORLAX); + game.override.moveset([MoveId.FISSURE]); + game.override.passiveAbility(AbilityId.BALL_FETCH); game.override.startingLevel(100); - game.override.enemySpecies(Species.SNORLAX); - game.override.enemyMoveset(Moves.SPLASH); - game.override.enemyPassiveAbility(Abilities.BALL_FETCH); + game.override.enemySpecies(SpeciesId.SNORLAX); + game.override.enemyMoveset(MoveId.SPLASH); + game.override.enemyPassiveAbility(AbilityId.BALL_FETCH); game.override.enemyLevel(100); await game.classicMode.startBattle(); @@ -48,10 +48,10 @@ describe("Moves - Fissure", () => { }); it("ignores damage modification from abilities, for example FUR_COAT", async () => { - game.override.ability(Abilities.NO_GUARD); - game.override.enemyAbility(Abilities.FUR_COAT); + game.override.ability(AbilityId.NO_GUARD); + game.override.enemyAbility(AbilityId.FUR_COAT); - game.move.select(Moves.FISSURE); + game.move.select(MoveId.FISSURE); await game.phaseInterceptor.to(DamageAnimPhase, true); expect(enemyPokemon.isFainted()).toBe(true); @@ -62,7 +62,7 @@ describe("Moves - Fissure", () => { partyPokemon.setStatStage(Stat.ACC, -6); - game.move.select(Moves.FISSURE); + game.move.select(MoveId.FISSURE); // wait for TurnEndPhase instead of DamagePhase as fissure might not actually inflict damage await game.phaseInterceptor.to(TurnEndPhase); @@ -75,7 +75,7 @@ describe("Moves - Fissure", () => { enemyPokemon.setStatStage(Stat.EVA, 6); - game.move.select(Moves.FISSURE); + game.move.select(MoveId.FISSURE); // wait for TurnEndPhase instead of DamagePhase as fissure might not actually inflict damage await game.phaseInterceptor.to(TurnEndPhase); diff --git a/test/moves/flame_burst.test.ts b/test/moves/flame_burst.test.ts index 963b0f04a9a..1d61daaacb5 100644 --- a/test/moves/flame_burst.test.ts +++ b/test/moves/flame_burst.test.ts @@ -1,9 +1,9 @@ import { allAbilities } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import type Pokemon from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -36,21 +36,21 @@ describe("Moves - Flame Burst", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("double"); - game.override.moveset([Moves.FLAME_BURST, Moves.SPLASH]); + game.override.moveset([MoveId.FLAME_BURST, MoveId.SPLASH]); game.override.disableCrits(); - game.override.ability(Abilities.UNNERVE); + game.override.ability(AbilityId.UNNERVE); game.override.startingWave(4); - game.override.enemySpecies(Species.SHUCKLE); - game.override.enemyAbility(Abilities.BALL_FETCH); - game.override.enemyMoveset([Moves.SPLASH]); + game.override.enemySpecies(SpeciesId.SHUCKLE); + game.override.enemyAbility(AbilityId.BALL_FETCH); + game.override.enemyMoveset([MoveId.SPLASH]); }); it("inflicts damage to the target's ally equal to 1/16 of its max HP", async () => { - await game.classicMode.startBattle([Species.PIKACHU, Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.PIKACHU]); const [leftEnemy, rightEnemy] = game.scene.getEnemyField(); - game.move.select(Moves.FLAME_BURST, 0, leftEnemy.getBattlerIndex()); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.FLAME_BURST, 0, leftEnemy.getBattlerIndex()); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); expect(leftEnemy.hp).toBeLessThan(leftEnemy.getMaxHp()); @@ -58,13 +58,13 @@ describe("Moves - Flame Burst", () => { }); it("does not inflict damage to the target's ally if the target was not affected by Flame Burst", async () => { - game.override.enemyAbility(Abilities.FLASH_FIRE); + game.override.enemyAbility(AbilityId.FLASH_FIRE); - await game.classicMode.startBattle([Species.PIKACHU, Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.PIKACHU]); const [leftEnemy, rightEnemy] = game.scene.getEnemyField(); - game.move.select(Moves.FLAME_BURST, 0, leftEnemy.getBattlerIndex()); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.FLAME_BURST, 0, leftEnemy.getBattlerIndex()); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); expect(leftEnemy.hp).toBe(leftEnemy.getMaxHp()); @@ -72,13 +72,13 @@ describe("Moves - Flame Burst", () => { }); it("does not interact with the target ally's abilities", async () => { - await game.classicMode.startBattle([Species.PIKACHU, Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.PIKACHU]); const [leftEnemy, rightEnemy] = game.scene.getEnemyField(); - vi.spyOn(rightEnemy, "getAbility").mockReturnValue(allAbilities[Abilities.FLASH_FIRE]); + vi.spyOn(rightEnemy, "getAbility").mockReturnValue(allAbilities[AbilityId.FLASH_FIRE]); - game.move.select(Moves.FLAME_BURST, 0, leftEnemy.getBattlerIndex()); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.FLAME_BURST, 0, leftEnemy.getBattlerIndex()); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); expect(leftEnemy.hp).toBeLessThan(leftEnemy.getMaxHp()); @@ -86,13 +86,13 @@ describe("Moves - Flame Burst", () => { }); it("effect damage is prevented by Magic Guard", async () => { - await game.classicMode.startBattle([Species.PIKACHU, Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.PIKACHU]); const [leftEnemy, rightEnemy] = game.scene.getEnemyField(); - vi.spyOn(rightEnemy, "getAbility").mockReturnValue(allAbilities[Abilities.MAGIC_GUARD]); + vi.spyOn(rightEnemy, "getAbility").mockReturnValue(allAbilities[AbilityId.MAGIC_GUARD]); - game.move.select(Moves.FLAME_BURST, 0, leftEnemy.getBattlerIndex()); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.FLAME_BURST, 0, leftEnemy.getBattlerIndex()); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); expect(leftEnemy.hp).toBeLessThan(leftEnemy.getMaxHp()); diff --git a/test/moves/flower_shield.test.ts b/test/moves/flower_shield.test.ts index 30a367f873d..3561d396ef9 100644 --- a/test/moves/flower_shield.test.ts +++ b/test/moves/flower_shield.test.ts @@ -1,11 +1,11 @@ import { Stat } from "#enums/stat"; import { SemiInvulnerableTag } from "#app/data/battler-tags"; import { PokemonType } from "#enums/pokemon-type"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -26,24 +26,24 @@ describe("Moves - Flower Shield", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.ability(Abilities.NONE); - game.override.enemyAbility(Abilities.NONE); + game.override.ability(AbilityId.NONE); + game.override.enemyAbility(AbilityId.NONE); game.override.battleStyle("single"); - game.override.moveset([Moves.FLOWER_SHIELD, Moves.SPLASH]); - game.override.enemyMoveset(Moves.SPLASH); + game.override.moveset([MoveId.FLOWER_SHIELD, MoveId.SPLASH]); + game.override.enemyMoveset(MoveId.SPLASH); }); it("raises DEF stat stage by 1 for all Grass-type Pokemon on the field by one stage - single battle", async () => { - game.override.enemySpecies(Species.CHERRIM); + game.override.enemySpecies(SpeciesId.CHERRIM); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const cherrim = game.scene.getEnemyPokemon()!; const magikarp = game.scene.getPlayerPokemon()!; expect(magikarp.getStatStage(Stat.DEF)).toBe(0); expect(cherrim.getStatStage(Stat.DEF)).toBe(0); - game.move.select(Moves.FLOWER_SHIELD); + game.move.select(MoveId.FLOWER_SHIELD); await game.phaseInterceptor.to(TurnEndPhase); expect(magikarp.getStatStage(Stat.DEF)).toBe(0); @@ -51,9 +51,9 @@ describe("Moves - Flower Shield", () => { }); it("raises DEF stat stage by 1 for all Grass-type Pokemon on the field by one stage - double battle", async () => { - game.override.enemySpecies(Species.MAGIKARP).startingBiome(Biome.GRASS).battleStyle("double"); + game.override.enemySpecies(SpeciesId.MAGIKARP).startingBiome(BiomeId.GRASS).battleStyle("double"); - await game.classicMode.startBattle([Species.CHERRIM, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.CHERRIM, SpeciesId.MAGIKARP]); const field = game.scene.getField(true); const grassPokemons = field.filter(p => p.getTypes().includes(PokemonType.GRASS)); @@ -62,8 +62,8 @@ describe("Moves - Flower Shield", () => { grassPokemons.forEach(p => expect(p.getStatStage(Stat.DEF)).toBe(0)); nonGrassPokemons.forEach(p => expect(p.getStatStage(Stat.DEF)).toBe(0)); - game.move.select(Moves.FLOWER_SHIELD); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.FLOWER_SHIELD); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); grassPokemons.forEach(p => expect(p.getStatStage(Stat.DEF)).toBe(1)); @@ -74,9 +74,9 @@ describe("Moves - Flower Shield", () => { * See semi-vulnerable state tags. {@linkcode SemiInvulnerableTag} */ it("does not raise DEF stat stage for a Pokemon in semi-vulnerable state", async () => { - game.override.enemySpecies(Species.PARAS).enemyMoveset(Moves.DIG).enemyLevel(50); + game.override.enemySpecies(SpeciesId.PARAS).enemyMoveset(MoveId.DIG).enemyLevel(50); - await game.classicMode.startBattle([Species.CHERRIM]); + await game.classicMode.startBattle([SpeciesId.CHERRIM]); const paras = game.scene.getEnemyPokemon()!; const cherrim = game.scene.getPlayerPokemon()!; @@ -84,7 +84,7 @@ describe("Moves - Flower Shield", () => { expect(cherrim.getStatStage(Stat.DEF)).toBe(0); expect(paras.getTag(SemiInvulnerableTag)).toBeUndefined; - game.move.select(Moves.FLOWER_SHIELD); + game.move.select(MoveId.FLOWER_SHIELD); await game.phaseInterceptor.to(TurnEndPhase); expect(paras.getTag(SemiInvulnerableTag)).toBeDefined(); @@ -93,16 +93,16 @@ describe("Moves - Flower Shield", () => { }); it("does nothing if there are no Grass-type Pokemon on the field", async () => { - game.override.enemySpecies(Species.MAGIKARP); + game.override.enemySpecies(SpeciesId.MAGIKARP); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemy = game.scene.getEnemyPokemon()!; const ally = game.scene.getPlayerPokemon()!; expect(enemy.getStatStage(Stat.DEF)).toBe(0); expect(ally.getStatStage(Stat.DEF)).toBe(0); - game.move.select(Moves.FLOWER_SHIELD); + game.move.select(MoveId.FLOWER_SHIELD); await game.phaseInterceptor.to(TurnEndPhase); expect(enemy.getStatStage(Stat.DEF)).toBe(0); diff --git a/test/moves/fly.test.ts b/test/moves/fly.test.ts index 81d04f53ff8..964d1b65a1e 100644 --- a/test/moves/fly.test.ts +++ b/test/moves/fly.test.ts @@ -1,9 +1,9 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { StatusEffect } from "#enums/status-effect"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; @@ -27,50 +27,50 @@ describe("Moves - Fly", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Moves.FLY) + .moveset(MoveId.FLY) .battleStyle("single") .startingLevel(100) - .enemySpecies(Species.SNORLAX) + .enemySpecies(SpeciesId.SNORLAX) .enemyLevel(100) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.TACKLE); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.TACKLE); - vi.spyOn(allMoves[Moves.FLY], "accuracy", "get").mockReturnValue(100); + vi.spyOn(allMoves[MoveId.FLY], "accuracy", "get").mockReturnValue(100); }); it("should make the user semi-invulnerable, then attack over 2 turns", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.FLY); + game.move.select(MoveId.FLY); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getTag(BattlerTagType.FLYING)).toBeDefined(); expect(enemyPokemon.getLastXMoves(1)[0].result).toBe(MoveResult.MISS); expect(playerPokemon.hp).toBe(playerPokemon.getMaxHp()); expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); - expect(playerPokemon.getMoveQueue()[0].move).toBe(Moves.FLY); + expect(playerPokemon.getMoveQueue()[0].move).toBe(MoveId.FLY); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getTag(BattlerTagType.FLYING)).toBeUndefined(); expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); expect(playerPokemon.getMoveHistory()).toHaveLength(2); - const playerFly = playerPokemon.getMoveset().find(mv => mv && mv.moveId === Moves.FLY); + const playerFly = playerPokemon.getMoveset().find(mv => mv && mv.moveId === MoveId.FLY); expect(playerFly?.ppUsed).toBe(1); }); it("should not allow the user to evade attacks from Pokemon with No Guard", async () => { - game.override.enemyAbility(Abilities.NO_GUARD); + game.override.enemyAbility(AbilityId.NO_GUARD); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.FLY); + game.move.select(MoveId.FLY); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.hp).toBeLessThan(playerPokemon.getMaxHp()); @@ -78,43 +78,43 @@ describe("Moves - Fly", () => { }); it("should not expend PP when the attack phase is cancelled", async () => { - game.override.enemyAbility(Abilities.NO_GUARD).enemyMoveset(Moves.SPORE); + game.override.enemyAbility(AbilityId.NO_GUARD).enemyMoveset(MoveId.SPORE); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.FLY); + game.move.select(MoveId.FLY); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getTag(BattlerTagType.FLYING)).toBeUndefined(); expect(playerPokemon.status?.effect).toBe(StatusEffect.SLEEP); - const playerFly = playerPokemon.getMoveset().find(mv => mv && mv.moveId === Moves.FLY); + const playerFly = playerPokemon.getMoveset().find(mv => mv && mv.moveId === MoveId.FLY); expect(playerFly?.ppUsed).toBe(0); }); it("should be cancelled when another Pokemon uses Gravity", async () => { - game.override.enemyMoveset([Moves.SPLASH, Moves.GRAVITY]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.GRAVITY]); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.FLY); + game.move.select(MoveId.FLY); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); - await game.move.selectEnemyMove(Moves.GRAVITY); + await game.move.selectEnemyMove(MoveId.GRAVITY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getLastXMoves(1)[0].result).toBe(MoveResult.FAIL); expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); - const playerFly = playerPokemon.getMoveset().find(mv => mv && mv.moveId === Moves.FLY); + const playerFly = playerPokemon.getMoveset().find(mv => mv && mv.moveId === MoveId.FLY); expect(playerFly?.ppUsed).toBe(0); }); }); diff --git a/test/moves/focus_punch.test.ts b/test/moves/focus_punch.test.ts index e05eb008af7..9734f9f6422 100644 --- a/test/moves/focus_punch.test.ts +++ b/test/moves/focus_punch.test.ts @@ -3,9 +3,9 @@ import { MessagePhase } from "#app/phases/message-phase"; import { MoveHeaderPhase } from "#app/phases/move-header-phase"; import { SwitchSummonPhase } from "#app/phases/switch-summon-phase"; import { TurnStartPhase } from "#app/phases/turn-start-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import i18next from "i18next"; import Phaser from "phaser"; @@ -29,24 +29,24 @@ describe("Moves - Focus Punch", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .ability(Abilities.UNNERVE) - .moveset([Moves.FOCUS_PUNCH]) - .enemySpecies(Species.GROUDON) - .enemyAbility(Abilities.INSOMNIA) - .enemyMoveset(Moves.SPLASH) + .ability(AbilityId.UNNERVE) + .moveset([MoveId.FOCUS_PUNCH]) + .enemySpecies(SpeciesId.GROUDON) + .enemyAbility(AbilityId.INSOMNIA) + .enemyMoveset(MoveId.SPLASH) .startingLevel(100) .enemyLevel(100); }); it("should deal damage at the end of turn if uninterrupted", async () => { - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyStartingHp = enemyPokemon.hp; - game.move.select(Moves.FOCUS_PUNCH); + game.move.select(MoveId.FOCUS_PUNCH); await game.phaseInterceptor.to(MessagePhase); @@ -61,16 +61,16 @@ describe("Moves - Focus Punch", () => { }); it("should fail if the user is hit", async () => { - game.override.enemyMoveset([Moves.TACKLE]); + game.override.enemyMoveset([MoveId.TACKLE]); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyStartingHp = enemyPokemon.hp; - game.move.select(Moves.FOCUS_PUNCH); + game.move.select(MoveId.FOCUS_PUNCH); await game.phaseInterceptor.to(MessagePhase); @@ -85,14 +85,14 @@ describe("Moves - Focus Punch", () => { }); it("should be cancelled if the user falls asleep mid-turn", async () => { - game.override.enemyMoveset([Moves.SPORE]); + game.override.enemyMoveset([MoveId.SPORE]); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.FOCUS_PUNCH); + game.move.select(MoveId.FOCUS_PUNCH); await game.phaseInterceptor.to(MessagePhase); // Header message @@ -108,10 +108,10 @@ describe("Moves - Focus Punch", () => { /** Guarantee a Trainer battle with multiple enemy Pokemon */ game.override.startingWave(25); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); game.forceEnemyToSwitch(); - game.move.select(Moves.FOCUS_PUNCH); + game.move.select(MoveId.FOCUS_PUNCH); await game.phaseInterceptor.to(TurnStartPhase); @@ -119,10 +119,10 @@ describe("Moves - Focus Punch", () => { expect(game.scene.phaseQueue.find(phase => phase instanceof MoveHeaderPhase)).toBeDefined(); }); it("should replace the 'but it failed' text when the user gets hit", async () => { - game.override.enemyMoveset([Moves.TACKLE]); - await game.classicMode.startBattle([Species.CHARIZARD]); + game.override.enemyMoveset([MoveId.TACKLE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - game.move.select(Moves.FOCUS_PUNCH); + game.move.select(MoveId.FOCUS_PUNCH); await game.phaseInterceptor.to("MoveEndPhase", true); await game.phaseInterceptor.to("MessagePhase", false); const consoleSpy = vi.spyOn(console, "log"); diff --git a/test/moves/follow_me.test.ts b/test/moves/follow_me.test.ts index 228a835b17d..567320a18e9 100644 --- a/test/moves/follow_me.test.ts +++ b/test/moves/follow_me.test.ts @@ -1,9 +1,9 @@ import { Stat } from "#enums/stat"; import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; @@ -25,26 +25,26 @@ describe("Moves - Follow Me", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("double"); - game.override.starterSpecies(Species.AMOONGUSS); - game.override.ability(Abilities.BALL_FETCH); - game.override.enemySpecies(Species.SNORLAX); + game.override.starterSpecies(SpeciesId.AMOONGUSS); + game.override.ability(AbilityId.BALL_FETCH); + game.override.enemySpecies(SpeciesId.SNORLAX); game.override.startingLevel(100); game.override.enemyLevel(100); - game.override.moveset([Moves.FOLLOW_ME, Moves.RAGE_POWDER, Moves.SPOTLIGHT, Moves.QUICK_ATTACK]); - game.override.enemyMoveset([Moves.TACKLE, Moves.FOLLOW_ME, Moves.SPLASH]); + game.override.moveset([MoveId.FOLLOW_ME, MoveId.RAGE_POWDER, MoveId.SPOTLIGHT, MoveId.QUICK_ATTACK]); + game.override.enemyMoveset([MoveId.TACKLE, MoveId.FOLLOW_ME, MoveId.SPLASH]); }); test("move should redirect enemy attacks to the user", async () => { - await game.classicMode.startBattle([Species.AMOONGUSS, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS, SpeciesId.CHARIZARD]); const playerPokemon = game.scene.getPlayerField(); - game.move.select(Moves.FOLLOW_ME); - game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.FOLLOW_ME); + game.move.select(MoveId.QUICK_ATTACK, 1, BattlerIndex.ENEMY); // Force both enemies to target the player Pokemon that did not use Follow Me - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to(TurnEndPhase, false); @@ -53,16 +53,16 @@ describe("Moves - Follow Me", () => { }); test("move should redirect enemy attacks to the first ally that uses it", async () => { - await game.classicMode.startBattle([Species.AMOONGUSS, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS, SpeciesId.CHARIZARD]); const playerPokemon = game.scene.getPlayerField(); - game.move.select(Moves.FOLLOW_ME); - game.move.select(Moves.FOLLOW_ME, 1); + game.move.select(MoveId.FOLLOW_ME); + game.move.select(MoveId.FOLLOW_ME, 1); // Each player is targeted by an enemy - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to(TurnEndPhase, false); @@ -73,19 +73,19 @@ describe("Moves - Follow Me", () => { }); test("move effect should be bypassed by Stalwart", async () => { - game.override.ability(Abilities.STALWART); - game.override.moveset([Moves.QUICK_ATTACK]); + game.override.ability(AbilityId.STALWART); + game.override.moveset([MoveId.QUICK_ATTACK]); - await game.classicMode.startBattle([Species.AMOONGUSS, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS, SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.QUICK_ATTACK, 0, BattlerIndex.ENEMY); - game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.QUICK_ATTACK, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); // Target doesn't need to be specified if the move is self-targeted - await game.move.selectEnemyMove(Moves.FOLLOW_ME); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.FOLLOW_ME); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase, false); @@ -95,17 +95,17 @@ describe("Moves - Follow Me", () => { }); test("move effect should be bypassed by Snipe Shot", async () => { - game.override.moveset([Moves.SNIPE_SHOT]); + game.override.moveset([MoveId.SNIPE_SHOT]); - await game.classicMode.startBattle([Species.AMOONGUSS, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS, SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.SNIPE_SHOT, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SNIPE_SHOT, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.SNIPE_SHOT, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SNIPE_SHOT, 1, BattlerIndex.ENEMY_2); - await game.move.selectEnemyMove(Moves.FOLLOW_ME); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.FOLLOW_ME); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase, false); diff --git a/test/moves/foresight.test.ts b/test/moves/foresight.test.ts index 82a39eceae5..a30b4d6a444 100644 --- a/test/moves/foresight.test.ts +++ b/test/moves/foresight.test.ts @@ -1,5 +1,5 @@ -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -23,11 +23,11 @@ describe("Moves - Foresight", () => { game = new GameManager(phaserGame); game.override .disableCrits() - .enemySpecies(Species.GASTLY) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.GASTLY) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(5) - .starterSpecies(Species.MAGIKARP) - .moveset([Moves.FORESIGHT, Moves.QUICK_ATTACK, Moves.MACH_PUNCH]); + .starterSpecies(SpeciesId.MAGIKARP) + .moveset([MoveId.FORESIGHT, MoveId.QUICK_ATTACK, MoveId.MACH_PUNCH]); }); it("should allow Normal and Fighting moves to hit Ghost types", async () => { @@ -35,34 +35,34 @@ describe("Moves - Foresight", () => { const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.QUICK_ATTACK); + game.move.select(MoveId.QUICK_ATTACK); await game.toNextTurn(); expect(enemy.hp).toBe(enemy.getMaxHp()); - game.move.select(Moves.FORESIGHT); + game.move.select(MoveId.FORESIGHT); await game.toNextTurn(); - game.move.select(Moves.QUICK_ATTACK); + game.move.select(MoveId.QUICK_ATTACK); await game.toNextTurn(); expect(enemy.hp).toBeLessThan(enemy.getMaxHp()); enemy.hp = enemy.getMaxHp(); - game.move.select(Moves.MACH_PUNCH); + game.move.select(MoveId.MACH_PUNCH); await game.phaseInterceptor.to(MoveEffectPhase); expect(enemy.hp).toBeLessThan(enemy.getMaxHp()); }); it("should ignore target's evasiveness boosts", async () => { - game.override.enemyMoveset([Moves.MINIMIZE]); + game.override.enemyMoveset([MoveId.MINIMIZE]); await game.classicMode.startBattle(); const pokemon = game.scene.getPlayerPokemon()!; vi.spyOn(pokemon, "getAccuracyMultiplier"); - game.move.select(Moves.FORESIGHT); + game.move.select(MoveId.FORESIGHT); await game.toNextTurn(); - game.move.select(Moves.QUICK_ATTACK); + game.move.select(MoveId.QUICK_ATTACK); await game.phaseInterceptor.to(MoveEffectPhase); expect(pokemon.getAccuracyMultiplier).toHaveReturnedWith(1); diff --git a/test/moves/forests_curse.test.ts b/test/moves/forests_curse.test.ts index f363fdbd19d..77fec5d277d 100644 --- a/test/moves/forests_curse.test.ts +++ b/test/moves/forests_curse.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { PokemonType } from "#enums/pokemon-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -23,24 +23,24 @@ describe("Moves - Forest's Curse", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.FORESTS_CURSE, Moves.TRICK_OR_TREAT]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.FORESTS_CURSE, MoveId.TRICK_OR_TREAT]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("will replace the added type from Trick Or Treat", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemyPokemon = game.scene.getEnemyPokemon(); - game.move.select(Moves.TRICK_OR_TREAT); + game.move.select(MoveId.TRICK_OR_TREAT); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyPokemon!.summonData.addedType).toBe(PokemonType.GHOST); - game.move.select(Moves.FORESTS_CURSE); + game.move.select(MoveId.FORESTS_CURSE); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyPokemon?.summonData.addedType).toBe(PokemonType.GRASS); }); diff --git a/test/moves/freeze_dry.test.ts b/test/moves/freeze_dry.test.ts index 62168afb960..dc6af507b16 100644 --- a/test/moves/freeze_dry.test.ts +++ b/test/moves/freeze_dry.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { PokemonType } from "#enums/pokemon-type"; import { Challenges } from "#enums/challenges"; import GameManager from "#test/testUtils/gameManager"; @@ -25,12 +25,12 @@ describe("Moves - Freeze-Dry", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) - .starterSpecies(Species.FEEBAS) - .ability(Abilities.BALL_FETCH) - .moveset([Moves.FREEZE_DRY, Moves.FORESTS_CURSE, Moves.SOAK]); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .starterSpecies(SpeciesId.FEEBAS) + .ability(AbilityId.BALL_FETCH) + .moveset([MoveId.FREEZE_DRY, MoveId.FORESTS_CURSE, MoveId.SOAK]); }); it("should deal 2x damage to pure water types", async () => { @@ -39,7 +39,7 @@ describe("Moves - Freeze-Dry", () => { const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -47,13 +47,13 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 4x damage to water/flying types", async () => { - game.override.enemySpecies(Species.WINGULL); + game.override.enemySpecies(SpeciesId.WINGULL); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -61,13 +61,13 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 1x damage to water/fire types", async () => { - game.override.enemySpecies(Species.VOLCANION); + game.override.enemySpecies(SpeciesId.VOLCANION); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -79,20 +79,20 @@ describe("Moves - Freeze-Dry", () => { */ it("should deal 2x dmg against soaked wonder guard target", async () => { game.override - .enemySpecies(Species.SHEDINJA) - .enemyMoveset(Moves.SPLASH) - .starterSpecies(Species.MAGIKARP) - .moveset([Moves.SOAK, Moves.FREEZE_DRY]); + .enemySpecies(SpeciesId.SHEDINJA) + .enemyMoveset(MoveId.SPLASH) + .starterSpecies(SpeciesId.MAGIKARP) + .moveset([MoveId.SOAK, MoveId.FREEZE_DRY]); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.SOAK); + game.move.select(MoveId.SOAK); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.phaseInterceptor.to("MoveEffectPhase"); expect(enemy.getMoveEffectiveness).toHaveReturnedWith(2); @@ -100,16 +100,16 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 8x damage to water/ground/grass type under Forest's Curse", async () => { - game.override.enemySpecies(Species.QUAGSIRE); + game.override.enemySpecies(SpeciesId.QUAGSIRE); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FORESTS_CURSE); + game.move.select(MoveId.FORESTS_CURSE); await game.toNextTurn(); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -117,7 +117,7 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 2x damage to steel type terastallized into water", async () => { - game.override.enemySpecies(Species.SKARMORY); + game.override.enemySpecies(SpeciesId.SKARMORY); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; @@ -125,7 +125,7 @@ describe("Moves - Freeze-Dry", () => { enemy.isTerastallized = true; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -133,7 +133,7 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 0.5x damage to water type terastallized into fire", async () => { - game.override.enemySpecies(Species.PELIPPER); + game.override.enemySpecies(SpeciesId.PELIPPER); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; @@ -141,7 +141,7 @@ describe("Moves - Freeze-Dry", () => { enemy.isTerastallized = true; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -149,16 +149,16 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 0.5x damage to water type Terapagos with Tera Shell", async () => { - game.override.enemySpecies(Species.TERAPAGOS).enemyAbility(Abilities.TERA_SHELL); + game.override.enemySpecies(SpeciesId.TERAPAGOS).enemyAbility(AbilityId.TERA_SHELL); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.SOAK); + game.move.select(MoveId.SOAK); await game.toNextTurn(); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -166,13 +166,13 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 2x damage to water type under Normalize", async () => { - game.override.ability(Abilities.NORMALIZE); + game.override.ability(AbilityId.NORMALIZE); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -180,13 +180,13 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 0.25x damage to rock/steel type under Normalize", async () => { - game.override.ability(Abilities.NORMALIZE).enemySpecies(Species.SHIELDON); + game.override.ability(AbilityId.NORMALIZE).enemySpecies(SpeciesId.SHIELDON); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -194,13 +194,13 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 0x damage to water/ghost type under Normalize", async () => { - game.override.ability(Abilities.NORMALIZE).enemySpecies(Species.JELLICENT); + game.override.ability(AbilityId.NORMALIZE).enemySpecies(SpeciesId.JELLICENT); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase"); @@ -208,13 +208,13 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 2x damage to water type under Electrify", async () => { - game.override.enemyMoveset([Moves.ELECTRIFY]); + game.override.enemyMoveset([MoveId.ELECTRIFY]); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); @@ -222,13 +222,13 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 4x damage to water/flying type under Electrify", async () => { - game.override.enemyMoveset([Moves.ELECTRIFY]).enemySpecies(Species.GYARADOS); + game.override.enemyMoveset([MoveId.ELECTRIFY]).enemySpecies(SpeciesId.GYARADOS); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); @@ -236,13 +236,13 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 0x damage to water/ground type under Electrify", async () => { - game.override.enemyMoveset([Moves.ELECTRIFY]).enemySpecies(Species.BARBOACH); + game.override.enemyMoveset([MoveId.ELECTRIFY]).enemySpecies(SpeciesId.BARBOACH); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); @@ -250,13 +250,13 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 0.25x damage to Grass/Dragon type under Electrify", async () => { - game.override.enemyMoveset([Moves.ELECTRIFY]).enemySpecies(Species.FLAPPLE); + game.override.enemyMoveset([MoveId.ELECTRIFY]).enemySpecies(SpeciesId.FLAPPLE); await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); @@ -264,7 +264,7 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 2x damage to Water type during inverse battle", async () => { - game.override.moveset([Moves.FREEZE_DRY]).enemySpecies(Species.MAGIKARP); + game.override.moveset([MoveId.FREEZE_DRY]).enemySpecies(SpeciesId.MAGIKARP); game.challengeMode.addChallenge(Challenges.INVERSE_BATTLE, 1, 1); await game.challengeMode.startBattle(); @@ -272,7 +272,7 @@ describe("Moves - Freeze-Dry", () => { const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -280,7 +280,7 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 2x damage to Water type during inverse battle under Normalize", async () => { - game.override.moveset([Moves.FREEZE_DRY]).ability(Abilities.NORMALIZE).enemySpecies(Species.MAGIKARP); + game.override.moveset([MoveId.FREEZE_DRY]).ability(AbilityId.NORMALIZE).enemySpecies(SpeciesId.MAGIKARP); game.challengeMode.addChallenge(Challenges.INVERSE_BATTLE, 1, 1); await game.challengeMode.startBattle(); @@ -288,7 +288,7 @@ describe("Moves - Freeze-Dry", () => { const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -296,7 +296,7 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 2x damage to Water type during inverse battle under Electrify", async () => { - game.override.moveset([Moves.FREEZE_DRY]).enemySpecies(Species.MAGIKARP).enemyMoveset([Moves.ELECTRIFY]); + game.override.moveset([MoveId.FREEZE_DRY]).enemySpecies(SpeciesId.MAGIKARP).enemyMoveset([MoveId.ELECTRIFY]); game.challengeMode.addChallenge(Challenges.INVERSE_BATTLE, 1, 1); await game.challengeMode.startBattle(); @@ -304,7 +304,7 @@ describe("Moves - Freeze-Dry", () => { const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -312,7 +312,7 @@ describe("Moves - Freeze-Dry", () => { }); it("should deal 1x damage to water/flying type during inverse battle under Electrify", async () => { - game.override.enemyMoveset([Moves.ELECTRIFY]).enemySpecies(Species.GYARADOS); + game.override.enemyMoveset([MoveId.ELECTRIFY]).enemySpecies(SpeciesId.GYARADOS); game.challengeMode.addChallenge(Challenges.INVERSE_BATTLE, 1, 1); @@ -321,7 +321,7 @@ describe("Moves - Freeze-Dry", () => { const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.FREEZE_DRY); + game.move.select(MoveId.FREEZE_DRY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/moves/freezy_frost.test.ts b/test/moves/freezy_frost.test.ts index 2b2e06bfe74..55f67de085f 100644 --- a/test/moves/freezy_frost.test.ts +++ b/test/moves/freezy_frost.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -25,29 +25,29 @@ describe("Moves - Freezy Frost", () => { game.override .battleStyle("single") - .enemySpecies(Species.RATTATA) + .enemySpecies(SpeciesId.RATTATA) .enemyLevel(100) - .enemyMoveset(Moves.HOWL) - .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(MoveId.HOWL) + .enemyAbility(AbilityId.BALL_FETCH) .startingLevel(100) - .moveset([Moves.FREEZY_FROST, Moves.HOWL, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH); + .moveset([MoveId.FREEZY_FROST, MoveId.HOWL, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH); - vi.spyOn(allMoves[Moves.FREEZY_FROST], "accuracy", "get").mockReturnValue(100); + vi.spyOn(allMoves[MoveId.FREEZY_FROST], "accuracy", "get").mockReturnValue(100); }); it("should clear stat changes of user and opponent", async () => { - await game.classicMode.startBattle([Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); const user = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.HOWL); + game.move.select(MoveId.HOWL); await game.toNextTurn(); expect(user.getStatStage(Stat.ATK)).toBe(1); expect(enemy.getStatStage(Stat.ATK)).toBe(1); - game.move.select(Moves.FREEZY_FROST); + game.move.select(MoveId.FREEZY_FROST); await game.toNextTurn(); expect(user.getStatStage(Stat.ATK)).toBe(0); @@ -55,30 +55,30 @@ describe("Moves - Freezy Frost", () => { }); it("should clear all stat changes even when enemy uses the move", async () => { - game.override.enemyMoveset(Moves.FREEZY_FROST); - await game.classicMode.startBattle([Species.SHUCKLE]); // Shuckle for slower Howl on first turn so Freezy Frost doesn't affect it. + game.override.enemyMoveset(MoveId.FREEZY_FROST); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); // Shuckle for slower Howl on first turn so Freezy Frost doesn't affect it. const user = game.scene.getPlayerPokemon()!; - game.move.select(Moves.HOWL); + game.move.select(MoveId.HOWL); await game.toNextTurn(); const userAtkBefore = user.getStatStage(Stat.ATK); expect(userAtkBefore).toBe(1); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(user.getStatStage(Stat.ATK)).toBe(0); }); it("should clear all stat changes in double battle", async () => { game.override.battleStyle("double"); - await game.classicMode.startBattle([Species.SHUCKLE, Species.RATTATA]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE, SpeciesId.RATTATA]); const [leftPlayer, rightPlayer] = game.scene.getPlayerField(); const [leftOpp, rightOpp] = game.scene.getEnemyField(); - game.move.select(Moves.HOWL, 0); + game.move.select(MoveId.HOWL, 0); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(leftPlayer.getStatStage(Stat.ATK)).toBe(1); @@ -86,9 +86,9 @@ describe("Moves - Freezy Frost", () => { expect(leftOpp.getStatStage(Stat.ATK)).toBe(2); // Both enemies use Howl expect(rightOpp.getStatStage(Stat.ATK)).toBe(2); - game.move.select(Moves.FREEZY_FROST, 0, leftOpp.getBattlerIndex()); + game.move.select(MoveId.FREEZY_FROST, 0, leftOpp.getBattlerIndex()); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(leftPlayer.getStatStage(Stat.ATK)).toBe(0); diff --git a/test/moves/fusion_bolt.test.ts b/test/moves/fusion_bolt.test.ts index 3fc8dae1b85..a5263bfa364 100644 --- a/test/moves/fusion_bolt.test.ts +++ b/test/moves/fusion_bolt.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -9,7 +9,7 @@ describe("Moves - Fusion Bolt", () => { let phaserGame: Phaser.Game; let game: GameManager; - const fusionBolt = Moves.FUSION_BOLT; + const fusionBolt = MoveId.FUSION_BOLT; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -26,16 +26,16 @@ describe("Moves - Fusion Bolt", () => { game.override .moveset([fusionBolt]) .startingLevel(1) - .enemySpecies(Species.RESHIRAM) - .enemyAbility(Abilities.ROUGH_SKIN) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.RESHIRAM) + .enemyAbility(AbilityId.ROUGH_SKIN) + .enemyMoveset(MoveId.SPLASH) .battleStyle("single") .startingWave(97) .disableCrits(); }); it("should not make contact", async () => { - await game.classicMode.startBattle([Species.ZEKROM]); + await game.classicMode.startBattle([SpeciesId.ZEKROM]); const partyMember = game.scene.getPlayerPokemon()!; const initialHp = partyMember.hp; diff --git a/test/moves/fusion_flare.test.ts b/test/moves/fusion_flare.test.ts index 9f16b94da5c..df6d390686f 100644 --- a/test/moves/fusion_flare.test.ts +++ b/test/moves/fusion_flare.test.ts @@ -1,6 +1,6 @@ import { TurnStartPhase } from "#app/phases/turn-start-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -10,7 +10,7 @@ describe("Moves - Fusion Flare", () => { let phaserGame: Phaser.Game; let game: GameManager; - const fusionFlare = Moves.FUSION_FLARE; + const fusionFlare = MoveId.FUSION_FLARE; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -27,15 +27,15 @@ describe("Moves - Fusion Flare", () => { game.override .moveset([fusionFlare]) .startingLevel(1) - .enemySpecies(Species.RATTATA) - .enemyMoveset(Moves.REST) + .enemySpecies(SpeciesId.RATTATA) + .enemyMoveset(MoveId.REST) .battleStyle("single") .startingWave(97) .disableCrits(); }); it("should thaw freeze status condition", async () => { - await game.classicMode.startBattle([Species.RESHIRAM]); + await game.classicMode.startBattle([SpeciesId.RESHIRAM]); const partyMember = game.scene.getPlayerPokemon()!; diff --git a/test/moves/fusion_flare_bolt.test.ts b/test/moves/fusion_flare_bolt.test.ts index 2b66a1a6d2f..bceb2c862b5 100644 --- a/test/moves/fusion_flare_bolt.test.ts +++ b/test/moves/fusion_flare_bolt.test.ts @@ -6,8 +6,8 @@ import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; import { MovePhase } from "#app/phases/move-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -30,14 +30,14 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }); beforeEach(() => { - fusionFlare = allMoves[Moves.FUSION_FLARE]; - fusionBolt = allMoves[Moves.FUSION_BOLT]; + fusionFlare = allMoves[MoveId.FUSION_FLARE]; + fusionBolt = allMoves[MoveId.FUSION_BOLT]; game = new GameManager(phaserGame); game.override .moveset([fusionFlare.id, fusionBolt.id]) .startingLevel(1) - .enemySpecies(Species.RESHIRAM) - .enemyMoveset(Moves.REST) + .enemySpecies(SpeciesId.RESHIRAM) + .enemyMoveset(MoveId.REST) .battleStyle("double") .startingWave(97) .disableCrits(); @@ -47,7 +47,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }); it("FUSION_FLARE should double power of subsequent FUSION_BOLT", async () => { - await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); + await game.classicMode.startBattle([SpeciesId.ZEKROM, SpeciesId.ZEKROM]); game.move.select(fusionFlare.id, 0, BattlerIndex.ENEMY); game.move.select(fusionBolt.id, 1, BattlerIndex.ENEMY); @@ -67,7 +67,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }, 20000); it("FUSION_BOLT should double power of subsequent FUSION_FLARE", async () => { - await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); + await game.classicMode.startBattle([SpeciesId.ZEKROM, SpeciesId.ZEKROM]); game.move.select(fusionBolt.id, 0, BattlerIndex.ENEMY); game.move.select(fusionFlare.id, 1, BattlerIndex.ENEMY); @@ -87,7 +87,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }, 20000); it("FUSION_FLARE should double power of subsequent FUSION_BOLT if a move failed in between", async () => { - await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); + await game.classicMode.startBattle([SpeciesId.ZEKROM, SpeciesId.ZEKROM]); game.move.select(fusionFlare.id, 0, BattlerIndex.PLAYER); game.move.select(fusionBolt.id, 1, BattlerIndex.PLAYER); @@ -112,8 +112,8 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }, 20000); it("FUSION_FLARE should not double power of subsequent FUSION_BOLT if a move succeeded in between", async () => { - game.override.enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); + game.override.enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.ZEKROM, SpeciesId.ZEKROM]); game.move.select(fusionFlare.id, 0, BattlerIndex.ENEMY); game.move.select(fusionBolt.id, 1, BattlerIndex.ENEMY); @@ -137,7 +137,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }, 20000); it("FUSION_FLARE should double power of subsequent FUSION_BOLT if moves are aimed at allies", async () => { - await game.classicMode.startBattle([Species.ZEKROM, Species.RESHIRAM]); + await game.classicMode.startBattle([SpeciesId.ZEKROM, SpeciesId.RESHIRAM]); game.move.select(fusionBolt.id, 0, BattlerIndex.PLAYER_2); game.move.select(fusionFlare.id, 1, BattlerIndex.PLAYER); @@ -158,7 +158,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { it("FUSION_FLARE and FUSION_BOLT alternating throughout turn should double power of subsequent moves", async () => { game.override.enemyMoveset(fusionFlare.id); - await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); + await game.classicMode.startBattle([SpeciesId.ZEKROM, SpeciesId.ZEKROM]); const party = game.scene.getPlayerParty(); const enemyParty = game.scene.getEnemyParty(); @@ -212,7 +212,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { it("FUSION_FLARE and FUSION_BOLT alternating throughout turn should double power of subsequent moves if moves are aimed at allies", async () => { game.override.enemyMoveset(fusionFlare.id); - await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); + await game.classicMode.startBattle([SpeciesId.ZEKROM, SpeciesId.ZEKROM]); const party = game.scene.getPlayerParty(); const enemyParty = game.scene.getEnemyParty(); diff --git a/test/moves/future_sight.test.ts b/test/moves/future_sight.test.ts index 48be2451195..7de70a88d10 100644 --- a/test/moves/future_sight.test.ts +++ b/test/moves/future_sight.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,21 +23,21 @@ describe("Moves - Future Sight", () => { game = new GameManager(phaserGame); game.override .startingLevel(50) - .moveset([Moves.FUTURE_SIGHT, Moves.SPLASH]) + .moveset([MoveId.FUTURE_SIGHT, MoveId.SPLASH]) .battleStyle("single") - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.STURDY) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.STURDY) + .enemyMoveset(MoveId.SPLASH); }); it("hits 2 turns after use, ignores user switch out", async () => { - await game.classicMode.startBattle([Species.FEEBAS, Species.MILOTIC]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MILOTIC]); - game.move.select(Moves.FUTURE_SIGHT); + game.move.select(MoveId.FUTURE_SIGHT); await game.toNextTurn(); game.doSwitchPokemon(1); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(game.scene.getEnemyPokemon()!.isFullHp()).toBe(false); diff --git a/test/moves/gastro_acid.test.ts b/test/moves/gastro_acid.test.ts index 333619d16db..6e06f441959 100644 --- a/test/moves/gastro_acid.test.ts +++ b/test/moves/gastro_acid.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { MoveResult } from "#app/field/pokemon"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,11 +25,11 @@ describe("Moves - Gastro Acid", () => { game.override.battleStyle("double"); game.override.startingLevel(1); game.override.enemyLevel(100); - game.override.ability(Abilities.BALL_FETCH); - game.override.moveset([Moves.GASTRO_ACID, Moves.WATER_GUN, Moves.SPLASH, Moves.CORE_ENFORCER]); - game.override.enemySpecies(Species.BIDOOF); - game.override.enemyMoveset(Moves.SPLASH); - game.override.enemyAbility(Abilities.WATER_ABSORB); + game.override.ability(AbilityId.BALL_FETCH); + game.override.moveset([MoveId.GASTRO_ACID, MoveId.WATER_GUN, MoveId.SPLASH, MoveId.CORE_ENFORCER]); + game.override.enemySpecies(SpeciesId.BIDOOF); + game.override.enemyMoveset(MoveId.SPLASH); + game.override.enemyAbility(AbilityId.WATER_ABSORB); }); it("suppresses effect of ability", async () => { @@ -42,8 +42,8 @@ describe("Moves - Gastro Acid", () => { await game.classicMode.startBattle(); - game.move.select(Moves.GASTRO_ACID, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.GASTRO_ACID, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("TurnInitPhase"); @@ -51,8 +51,8 @@ describe("Moves - Gastro Acid", () => { expect(enemyField[0].summonData.abilitySuppressed).toBe(true); expect(enemyField[1].summonData.abilitySuppressed).toBe(false); - game.move.select(Moves.WATER_GUN, 0, BattlerIndex.ENEMY); - game.move.select(Moves.WATER_GUN, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.WATER_GUN, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.WATER_GUN, 1, BattlerIndex.ENEMY_2); await game.phaseInterceptor.to("TurnEndPhase"); @@ -65,13 +65,13 @@ describe("Moves - Gastro Acid", () => { await game.classicMode.startBattle(); - game.move.select(Moves.CORE_ENFORCER); + game.move.select(MoveId.CORE_ENFORCER); // Force player to be slower to enable Core Enforcer to proc its suppression effect await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnInitPhase"); - game.move.select(Moves.GASTRO_ACID); + game.move.select(MoveId.GASTRO_ACID); await game.phaseInterceptor.to("TurnInitPhase"); @@ -80,22 +80,22 @@ describe("Moves - Gastro Acid", () => { it("should suppress the passive of a target even if its main ability is unsuppressable and not suppress main abli", async () => { game.override - .enemyAbility(Abilities.COMATOSE) - .enemyPassiveAbility(Abilities.WATER_ABSORB) - .moveset([Moves.SPLASH, Moves.GASTRO_ACID, Moves.WATER_GUN]); - await game.classicMode.startBattle([Species.MAGIKARP]); + .enemyAbility(AbilityId.COMATOSE) + .enemyPassiveAbility(AbilityId.WATER_ABSORB) + .moveset([MoveId.SPLASH, MoveId.GASTRO_ACID, MoveId.WATER_GUN]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemyPokemon = game.scene.getEnemyPokemon(); - game.move.select(Moves.GASTRO_ACID); + game.move.select(MoveId.GASTRO_ACID); await game.toNextTurn(); expect(enemyPokemon?.summonData.abilitySuppressed).toBe(true); - game.move.select(Moves.WATER_GUN); + game.move.select(MoveId.WATER_GUN); await game.toNextTurn(); expect(enemyPokemon?.getHpRatio()).toBeLessThan(1); - game.move.select(Moves.SPORE); + game.move.select(MoveId.SPORE); await game.phaseInterceptor.to("BerryPhase"); expect(enemyPokemon?.status?.effect).toBeFalsy(); diff --git a/test/moves/geomancy.test.ts b/test/moves/geomancy.test.ts index 51659f01b12..16244fed93f 100644 --- a/test/moves/geomancy.test.ts +++ b/test/moves/geomancy.test.ts @@ -1,9 +1,9 @@ import type { EffectiveStat } from "#enums/stat"; import { Stat } from "#enums/stat"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; @@ -25,22 +25,22 @@ describe("Moves - Geomancy", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Moves.GEOMANCY) + .moveset(MoveId.GEOMANCY) .battleStyle("single") .startingLevel(100) - .enemySpecies(Species.SNORLAX) + .enemySpecies(SpeciesId.SNORLAX) .enemyLevel(100) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should boost the user's stats on the second turn of use", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const player = game.scene.getPlayerPokemon()!; const affectedStats: EffectiveStat[] = [Stat.SPATK, Stat.SPDEF, Stat.SPD]; - game.move.select(Moves.GEOMANCY); + game.move.select(MoveId.GEOMANCY); await game.phaseInterceptor.to("TurnEndPhase"); affectedStats.forEach(stat => expect(player.getStatStage(stat)).toBe(0)); @@ -51,17 +51,17 @@ describe("Moves - Geomancy", () => { expect(player.getMoveHistory()).toHaveLength(2); expect(player.getLastXMoves(1)[0].result).toBe(MoveResult.SUCCESS); - const playerGeomancy = player.getMoveset().find(mv => mv && mv.moveId === Moves.GEOMANCY); + const playerGeomancy = player.getMoveset().find(mv => mv && mv.moveId === MoveId.GEOMANCY); expect(playerGeomancy?.ppUsed).toBe(1); }); it("should execute over 2 turns between waves", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const player = game.scene.getPlayerPokemon()!; const affectedStats: EffectiveStat[] = [Stat.SPATK, Stat.SPDEF, Stat.SPD]; - game.move.select(Moves.GEOMANCY); + game.move.select(MoveId.GEOMANCY); await game.phaseInterceptor.to("MoveEndPhase", false); await game.doKillOpponents(); @@ -73,7 +73,7 @@ describe("Moves - Geomancy", () => { expect(player.getMoveHistory()).toHaveLength(2); expect(player.getLastXMoves(1)[0].result).toBe(MoveResult.SUCCESS); - const playerGeomancy = player.getMoveset().find(mv => mv && mv.moveId === Moves.GEOMANCY); + const playerGeomancy = player.getMoveset().find(mv => mv && mv.moveId === MoveId.GEOMANCY); expect(playerGeomancy?.ppUsed).toBe(1); }); }); diff --git a/test/moves/gigaton_hammer.test.ts b/test/moves/gigaton_hammer.test.ts index 6275e5d2dcb..e61a383acc5 100644 --- a/test/moves/gigaton_hammer.test.ts +++ b/test/moves/gigaton_hammer.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; import GameManager from "#test/testUtils/gameManager"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,12 +23,12 @@ describe("Moves - Gigaton Hammer", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.MAGIKARP) - .starterSpecies(Species.FEEBAS) - .moveset([Moves.GIGATON_HAMMER]) + .enemySpecies(SpeciesId.MAGIKARP) + .starterSpecies(SpeciesId.FEEBAS) + .moveset([MoveId.GIGATON_HAMMER]) .startingLevel(10) .enemyLevel(100) - .enemyMoveset(Moves.SPLASH) + .enemyMoveset(MoveId.SPLASH) .disableCrits(); }); @@ -37,7 +37,7 @@ describe("Moves - Gigaton Hammer", () => { const enemy1 = game.scene.getEnemyPokemon()!; - game.move.select(Moves.GIGATON_HAMMER); + game.move.select(MoveId.GIGATON_HAMMER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -46,7 +46,7 @@ describe("Moves - Gigaton Hammer", () => { await game.doKillOpponents(); await game.toNextWave(); - game.move.select(Moves.GIGATON_HAMMER); + game.move.select(MoveId.GIGATON_HAMMER); await game.toNextTurn(); const enemy2 = game.scene.getEnemyPokemon()!; @@ -60,7 +60,7 @@ describe("Moves - Gigaton Hammer", () => { const enemy1 = game.scene.getEnemyPokemon()!; - game.move.select(Moves.GIGATON_HAMMER); + game.move.select(MoveId.GIGATON_HAMMER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -69,7 +69,7 @@ describe("Moves - Gigaton Hammer", () => { await game.doKillOpponents(); await game.toNextWave(); - game.move.select(Moves.GIGATON_HAMMER); + game.move.select(MoveId.GIGATON_HAMMER); await game.toNextTurn(); const enemy2 = game.scene.getEnemyPokemon()!; diff --git a/test/moves/glaive_rush.test.ts b/test/moves/glaive_rush.test.ts index 979c26ca20f..768c4a691b0 100644 --- a/test/moves/glaive_rush.test.ts +++ b/test/moves/glaive_rush.test.ts @@ -1,7 +1,7 @@ import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,12 +25,12 @@ describe("Moves - Glaive Rush", () => { game.override .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.GLAIVE_RUSH]) - .starterSpecies(Species.KLINK) - .ability(Abilities.BALL_FETCH) - .moveset([Moves.SHADOW_SNEAK, Moves.AVALANCHE, Moves.SPLASH, Moves.GLAIVE_RUSH]); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.GLAIVE_RUSH]) + .starterSpecies(SpeciesId.KLINK) + .ability(AbilityId.BALL_FETCH) + .moveset([MoveId.SHADOW_SNEAK, MoveId.AVALANCHE, MoveId.SPLASH, MoveId.GLAIVE_RUSH]); }); it("takes double damage from attacks", async () => { @@ -39,11 +39,11 @@ describe("Moves - Glaive Rush", () => { const enemy = game.scene.getEnemyPokemon()!; enemy.hp = 1000; - game.move.select(Moves.SHADOW_SNEAK); + game.move.select(MoveId.SHADOW_SNEAK); await game.phaseInterceptor.to("DamageAnimPhase"); const damageDealt = 1000 - enemy.hp; await game.phaseInterceptor.to("TurnEndPhase"); - game.move.select(Moves.SHADOW_SNEAK); + game.move.select(MoveId.SHADOW_SNEAK); await game.phaseInterceptor.to("DamageAnimPhase"); expect(enemy.hp).toBeLessThanOrEqual(1001 - damageDealt * 3); }); @@ -54,14 +54,14 @@ describe("Moves - Glaive Rush", () => { const enemy = game.scene.getEnemyPokemon()!; enemy.hp = 1000; - allMoves[Moves.AVALANCHE].accuracy = 0; - game.move.select(Moves.AVALANCHE); + allMoves[MoveId.AVALANCHE].accuracy = 0; + game.move.select(MoveId.AVALANCHE); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.hp).toBeLessThan(1000); }); it("interacts properly with multi-lens", async () => { - game.override.startingHeldItems([{ name: "MULTI_LENS", count: 2 }]).enemyMoveset([Moves.AVALANCHE]); + game.override.startingHeldItems([{ name: "MULTI_LENS", count: 2 }]).enemyMoveset([MoveId.AVALANCHE]); await game.classicMode.startBattle(); const player = game.scene.getPlayerPokemon()!; @@ -70,18 +70,18 @@ describe("Moves - Glaive Rush", () => { enemy.hp = 1000; player.hp = 1000; - allMoves[Moves.AVALANCHE].accuracy = 0; - game.move.select(Moves.GLAIVE_RUSH); + allMoves[MoveId.AVALANCHE].accuracy = 0; + game.move.select(MoveId.GLAIVE_RUSH); await game.phaseInterceptor.to("TurnEndPhase"); expect(player.hp).toBeLessThan(1000); player.hp = 1000; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(player.hp).toBe(1000); }); it("secondary effects only last until next move", async () => { - game.override.enemyMoveset([Moves.SHADOW_SNEAK]); + game.override.enemyMoveset([MoveId.SHADOW_SNEAK]); await game.classicMode.startBattle(); const player = game.scene.getPlayerPokemon()!; @@ -89,33 +89,33 @@ describe("Moves - Glaive Rush", () => { enemy.hp = 1000; player.hp = 1000; - allMoves[Moves.SHADOW_SNEAK].accuracy = 0; + allMoves[MoveId.SHADOW_SNEAK].accuracy = 0; - game.move.select(Moves.GLAIVE_RUSH); + game.move.select(MoveId.GLAIVE_RUSH); await game.phaseInterceptor.to("TurnEndPhase"); expect(player.hp).toBe(1000); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); const damagedHp = player.hp; expect(player.hp).toBeLessThan(1000); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(player.hp).toBe(damagedHp); }); it("secondary effects are removed upon switching", async () => { - game.override.enemyMoveset([Moves.SHADOW_SNEAK]).starterSpecies(0); - await game.classicMode.startBattle([Species.KLINK, Species.FEEBAS]); + game.override.enemyMoveset([MoveId.SHADOW_SNEAK]).starterSpecies(0); + await game.classicMode.startBattle([SpeciesId.KLINK, SpeciesId.FEEBAS]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; enemy.hp = 1000; - allMoves[Moves.SHADOW_SNEAK].accuracy = 0; + allMoves[MoveId.SHADOW_SNEAK].accuracy = 0; - game.move.select(Moves.GLAIVE_RUSH); + game.move.select(MoveId.GLAIVE_RUSH); await game.phaseInterceptor.to("TurnEndPhase"); expect(player.hp).toBe(player.getMaxHp()); @@ -127,7 +127,7 @@ describe("Moves - Glaive Rush", () => { }); it("secondary effects don't activate if move fails", async () => { - game.override.moveset([Moves.SHADOW_SNEAK, Moves.PROTECT, Moves.SPLASH, Moves.GLAIVE_RUSH]); + game.override.moveset([MoveId.SHADOW_SNEAK, MoveId.PROTECT, MoveId.SPLASH, MoveId.GLAIVE_RUSH]); await game.classicMode.startBattle(); const player = game.scene.getPlayerPokemon()!; @@ -136,16 +136,16 @@ describe("Moves - Glaive Rush", () => { enemy.hp = 1000; player.hp = 1000; - game.move.select(Moves.PROTECT); + game.move.select(MoveId.PROTECT); await game.phaseInterceptor.to("TurnEndPhase"); - game.move.select(Moves.SHADOW_SNEAK); + game.move.select(MoveId.SHADOW_SNEAK); await game.phaseInterceptor.to("TurnEndPhase"); - game.override.enemyMoveset([Moves.SPLASH]); + game.override.enemyMoveset([MoveId.SPLASH]); const damagedHP1 = 1000 - enemy.hp; enemy.hp = 1000; - game.move.select(Moves.SHADOW_SNEAK); + game.move.select(MoveId.SHADOW_SNEAK); await game.phaseInterceptor.to("TurnEndPhase"); const damagedHP2 = 1000 - enemy.hp; diff --git a/test/moves/growth.test.ts b/test/moves/growth.test.ts index 2e3ebfcde52..d468523aca7 100644 --- a/test/moves/growth.test.ts +++ b/test/moves/growth.test.ts @@ -1,8 +1,8 @@ import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; @@ -25,20 +25,20 @@ describe("Moves - Growth", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.enemyAbility(Abilities.MOXIE); - game.override.ability(Abilities.INSOMNIA); - game.override.moveset([Moves.GROWTH]); - game.override.enemyMoveset(Moves.SPLASH); + game.override.enemyAbility(AbilityId.MOXIE); + game.override.ability(AbilityId.INSOMNIA); + game.override.moveset([MoveId.GROWTH]); + game.override.enemyMoveset(MoveId.SPLASH); }); it("should raise SPATK stat stage by 1", async () => { - await game.classicMode.startBattle([Species.MIGHTYENA]); + await game.classicMode.startBattle([SpeciesId.MIGHTYENA]); const playerPokemon = game.scene.getPlayerPokemon()!; expect(playerPokemon.getStatStage(Stat.SPATK)).toBe(0); - game.move.select(Moves.GROWTH); + game.move.select(MoveId.GROWTH); await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(TurnInitPhase); expect(playerPokemon.getStatStage(Stat.SPATK)).toBe(1); diff --git a/test/moves/grudge.test.ts b/test/moves/grudge.test.ts index 48bb79c5f02..b6ef25d41ff 100644 --- a/test/moves/grudge.test.ts +++ b/test/moves/grudge.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { BattlerIndex } from "#app/battle"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -23,44 +23,44 @@ describe("Moves - Grudge", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.EMBER, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.EMBER, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.SHEDINJA) - .enemyAbility(Abilities.WONDER_GUARD) - .enemyMoveset([Moves.GRUDGE, Moves.SPLASH]); + .enemySpecies(SpeciesId.SHEDINJA) + .enemyAbility(AbilityId.WONDER_GUARD) + .enemyMoveset([MoveId.GRUDGE, MoveId.SPLASH]); }); it("should reduce the PP of the Pokemon's move to 0 when the user has fainted", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const playerPokemon = game.scene.getPlayerPokemon(); - game.move.select(Moves.EMBER); - await game.move.selectEnemyMove(Moves.GRUDGE); + game.move.select(MoveId.EMBER); + await game.move.selectEnemyMove(MoveId.GRUDGE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); - const playerMove = playerPokemon?.getMoveset().find(m => m.moveId === Moves.EMBER); + const playerMove = playerPokemon?.getMoveset().find(m => m.moveId === MoveId.EMBER); expect(playerMove?.getPpRatio()).toBe(0); }); it("should remain in effect until the user's next move", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const playerPokemon = game.scene.getPlayerPokemon(); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.GRUDGE); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.GRUDGE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); - game.move.select(Moves.EMBER); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.EMBER); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase"); - const playerMove = playerPokemon?.getMoveset().find(m => m.moveId === Moves.EMBER); + const playerMove = playerPokemon?.getMoveset().find(m => m.moveId === MoveId.EMBER); expect(playerMove?.getPpRatio()).toBe(0); }); @@ -68,23 +68,23 @@ describe("Moves - Grudge", () => { it("should not reduce the opponent's PP if the user dies to weather/indirect damage", async () => { // Opponent will be reduced to 1 HP by False Swipe, then faint to Sandstorm game.override - .moveset([Moves.FALSE_SWIPE]) + .moveset([MoveId.FALSE_SWIPE]) .startingLevel(100) - .ability(Abilities.SAND_STREAM) - .enemySpecies(Species.RATTATA); - await game.classicMode.startBattle([Species.GEODUDE]); + .ability(AbilityId.SAND_STREAM) + .enemySpecies(SpeciesId.RATTATA); + await game.classicMode.startBattle([SpeciesId.GEODUDE]); const enemyPokemon = game.scene.getEnemyPokemon(); const playerPokemon = game.scene.getPlayerPokemon(); - game.move.select(Moves.FALSE_SWIPE); - await game.move.selectEnemyMove(Moves.GRUDGE); + game.move.select(MoveId.FALSE_SWIPE); + await game.move.selectEnemyMove(MoveId.GRUDGE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); expect(enemyPokemon?.isFainted()).toBe(true); - const playerMove = playerPokemon?.getMoveset().find(m => m.moveId === Moves.FALSE_SWIPE); + const playerMove = playerPokemon?.getMoveset().find(m => m.moveId === MoveId.FALSE_SWIPE); expect(playerMove?.getPpRatio()).toBeGreaterThan(0); }); }); diff --git a/test/moves/guard_split.test.ts b/test/moves/guard_split.test.ts index 0f5c69c7d85..47edba49c9a 100644 --- a/test/moves/guard_split.test.ts +++ b/test/moves/guard_split.test.ts @@ -1,11 +1,11 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { Stat } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; describe("Moves - Guard Split", () => { let phaserGame: Phaser.Game; @@ -25,16 +25,16 @@ describe("Moves - Guard Split", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemyAbility(Abilities.NONE) - .enemySpecies(Species.MEW) + .enemyAbility(AbilityId.NONE) + .enemySpecies(SpeciesId.MEW) .enemyLevel(200) - .moveset([Moves.GUARD_SPLIT]) - .ability(Abilities.NONE); + .moveset([MoveId.GUARD_SPLIT]) + .ability(AbilityId.NONE); }); it("should average the user's DEF and SPDEF stats with those of the target", async () => { - game.override.enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.INDEEDEE]); + game.override.enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.INDEEDEE]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -42,7 +42,7 @@ describe("Moves - Guard Split", () => { const avgDef = Math.floor((player.getStat(Stat.DEF, false) + enemy.getStat(Stat.DEF, false)) / 2); const avgSpDef = Math.floor((player.getStat(Stat.SPDEF, false) + enemy.getStat(Stat.SPDEF, false)) / 2); - game.move.select(Moves.GUARD_SPLIT); + game.move.select(MoveId.GUARD_SPLIT); await game.phaseInterceptor.to(TurnEndPhase); expect(player.getStat(Stat.DEF, false)).toBe(avgDef); @@ -53,8 +53,8 @@ describe("Moves - Guard Split", () => { }, 20000); it("should be idempotent", async () => { - game.override.enemyMoveset([Moves.GUARD_SPLIT]); - await game.classicMode.startBattle([Species.INDEEDEE]); + game.override.enemyMoveset([MoveId.GUARD_SPLIT]); + await game.classicMode.startBattle([SpeciesId.INDEEDEE]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -62,10 +62,10 @@ describe("Moves - Guard Split", () => { const avgDef = Math.floor((player.getStat(Stat.DEF, false) + enemy.getStat(Stat.DEF, false)) / 2); const avgSpDef = Math.floor((player.getStat(Stat.SPDEF, false) + enemy.getStat(Stat.SPDEF, false)) / 2); - game.move.select(Moves.GUARD_SPLIT); + game.move.select(MoveId.GUARD_SPLIT); await game.phaseInterceptor.to(TurnEndPhase); - game.move.select(Moves.GUARD_SPLIT); + game.move.select(MoveId.GUARD_SPLIT); await game.phaseInterceptor.to(TurnEndPhase); expect(player.getStat(Stat.DEF, false)).toBe(avgDef); diff --git a/test/moves/guard_swap.test.ts b/test/moves/guard_swap.test.ts index 2076f92ccb1..d2c33e45df0 100644 --- a/test/moves/guard_swap.test.ts +++ b/test/moves/guard_swap.test.ts @@ -1,11 +1,11 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { Stat, BATTLE_STATS } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { MoveEndPhase } from "#app/phases/move-end-phase"; describe("Moves - Guard Swap", () => { @@ -25,23 +25,23 @@ describe("Moves - Guard Swap", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) - .enemySpecies(Species.INDEEDEE) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .enemySpecies(SpeciesId.INDEEDEE) .enemyLevel(200) - .moveset([Moves.GUARD_SWAP]) - .ability(Abilities.NONE); + .moveset([MoveId.GUARD_SWAP]) + .ability(AbilityId.NONE); }); it("should swap the user's DEF and SPDEF stat stages with the target's", async () => { - await game.classicMode.startBattle([Species.INDEEDEE]); + await game.classicMode.startBattle([SpeciesId.INDEEDEE]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy.summonData, "statStages", "get").mockReturnValue(new Array(BATTLE_STATS.length).fill(1)); - game.move.select(Moves.GUARD_SWAP); + game.move.select(MoveId.GUARD_SWAP); await game.phaseInterceptor.to(MoveEndPhase); diff --git a/test/moves/hard_press.test.ts b/test/moves/hard_press.test.ts index 12cf049a022..88a8c4a025b 100644 --- a/test/moves/hard_press.test.ts +++ b/test/moves/hard_press.test.ts @@ -1,8 +1,8 @@ import { allMoves } from "#app/data/data-lists"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -25,60 +25,60 @@ describe("Moves - Hard Press", () => { }); beforeEach(() => { - moveToCheck = allMoves[Moves.HARD_PRESS]; + moveToCheck = allMoves[MoveId.HARD_PRESS]; game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.ability(Abilities.BALL_FETCH); - game.override.enemySpecies(Species.MUNCHLAX); - game.override.enemyAbility(Abilities.BALL_FETCH); - game.override.enemyMoveset(Moves.SPLASH); - game.override.moveset([Moves.HARD_PRESS]); + game.override.ability(AbilityId.BALL_FETCH); + game.override.enemySpecies(SpeciesId.MUNCHLAX); + game.override.enemyAbility(AbilityId.BALL_FETCH); + game.override.enemyMoveset(MoveId.SPLASH); + game.override.moveset([MoveId.HARD_PRESS]); vi.spyOn(moveToCheck, "calculateBattlePower"); }); it("should return 100 power if target HP ratio is at 100%", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); - game.move.select(Moves.HARD_PRESS); + game.move.select(MoveId.HARD_PRESS); await game.phaseInterceptor.to(MoveEffectPhase); expect(moveToCheck.calculateBattlePower).toHaveReturnedWith(100); }); it("should return 50 power if target HP ratio is at 50%", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const targetHpRatio = 0.5; const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getHpRatio").mockReturnValue(targetHpRatio); - game.move.select(Moves.HARD_PRESS); + game.move.select(MoveId.HARD_PRESS); await game.phaseInterceptor.to(MoveEffectPhase); expect(moveToCheck.calculateBattlePower).toHaveReturnedWith(50); }); it("should return 1 power if target HP ratio is at 1%", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const targetHpRatio = 0.01; const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getHpRatio").mockReturnValue(targetHpRatio); - game.move.select(Moves.HARD_PRESS); + game.move.select(MoveId.HARD_PRESS); await game.phaseInterceptor.to(MoveEffectPhase); expect(moveToCheck.calculateBattlePower).toHaveReturnedWith(1); }); it("should return 1 power if target HP ratio is less than 1%", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const targetHpRatio = 0.005; const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getHpRatio").mockReturnValue(targetHpRatio); - game.move.select(Moves.HARD_PRESS); + game.move.select(MoveId.HARD_PRESS); await game.phaseInterceptor.to(MoveEffectPhase); expect(moveToCheck.calculateBattlePower).toHaveReturnedWith(1); diff --git a/test/moves/haze.test.ts b/test/moves/haze.test.ts index 33d4fe2dfda..e77542227b8 100644 --- a/test/moves/haze.test.ts +++ b/test/moves/haze.test.ts @@ -1,8 +1,8 @@ import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; @@ -25,34 +25,34 @@ describe("Moves - Haze", () => { game.override.battleStyle("single"); - game.override.enemySpecies(Species.RATTATA); + game.override.enemySpecies(SpeciesId.RATTATA); game.override.enemyLevel(100); - game.override.enemyMoveset(Moves.SPLASH); - game.override.enemyAbility(Abilities.NONE); + game.override.enemyMoveset(MoveId.SPLASH); + game.override.enemyAbility(AbilityId.NONE); game.override.startingLevel(100); - game.override.moveset([Moves.HAZE, Moves.SWORDS_DANCE, Moves.CHARM, Moves.SPLASH]); - game.override.ability(Abilities.NONE); + game.override.moveset([MoveId.HAZE, MoveId.SWORDS_DANCE, MoveId.CHARM, MoveId.SPLASH]); + game.override.ability(AbilityId.NONE); }); it("should reset all stat changes of all Pokemon on field", async () => { - await game.classicMode.startBattle([Species.RATTATA]); + await game.classicMode.startBattle([SpeciesId.RATTATA]); const user = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; expect(user.getStatStage(Stat.ATK)).toBe(0); expect(enemy.getStatStage(Stat.ATK)).toBe(0); - game.move.select(Moves.SWORDS_DANCE); + game.move.select(MoveId.SWORDS_DANCE); await game.phaseInterceptor.to(TurnInitPhase); - game.move.select(Moves.CHARM); + game.move.select(MoveId.CHARM); await game.phaseInterceptor.to(TurnInitPhase); expect(user.getStatStage(Stat.ATK)).toBe(2); expect(enemy.getStatStage(Stat.ATK)).toBe(-2); - game.move.select(Moves.HAZE); + game.move.select(MoveId.HAZE); await game.phaseInterceptor.to(TurnInitPhase); expect(user.getStatStage(Stat.ATK)).toBe(0); diff --git a/test/moves/heal_bell.test.ts b/test/moves/heal_bell.test.ts index 8ffb602c24f..914307b4795 100644 --- a/test/moves/heal_bell.test.ts +++ b/test/moves/heal_bell.test.ts @@ -1,8 +1,8 @@ import { StatusEffect } from "#app/enums/status-effect"; import { CommandPhase } from "#app/phases/command-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; @@ -24,24 +24,24 @@ describe("Moves - Heal Bell", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.HEAL_BELL, Moves.SPLASH]) + .moveset([MoveId.HEAL_BELL, MoveId.SPLASH]) .statusEffect(StatusEffect.BURN) .battleStyle("double") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should cure status effect of the user, its ally, and all party pokemon", async () => { - await game.classicMode.startBattle([Species.RATTATA, Species.RATTATA, Species.RATTATA]); + await game.classicMode.startBattle([SpeciesId.RATTATA, SpeciesId.RATTATA, SpeciesId.RATTATA]); const [leftPlayer, rightPlayer, partyPokemon] = game.scene.getPlayerParty(); vi.spyOn(leftPlayer, "resetStatus"); vi.spyOn(rightPlayer, "resetStatus"); vi.spyOn(partyPokemon, "resetStatus"); - game.move.select(Moves.HEAL_BELL, 0); + game.move.select(MoveId.HEAL_BELL, 0); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(leftPlayer.resetStatus).toHaveBeenCalledOnce(); @@ -55,15 +55,15 @@ describe("Moves - Heal Bell", () => { it("should not cure status effect of the target/target's allies", async () => { game.override.enemyStatusEffect(StatusEffect.BURN); - await game.classicMode.startBattle([Species.RATTATA, Species.RATTATA]); + await game.classicMode.startBattle([SpeciesId.RATTATA, SpeciesId.RATTATA]); const [leftOpp, rightOpp] = game.scene.getEnemyField(); vi.spyOn(leftOpp, "resetStatus"); vi.spyOn(rightOpp, "resetStatus"); - game.move.select(Moves.HEAL_BELL, 0); + game.move.select(MoveId.HEAL_BELL, 0); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(leftOpp.resetStatus).toHaveBeenCalledTimes(0); @@ -77,17 +77,17 @@ describe("Moves - Heal Bell", () => { }); it("should not cure status effect of allies ON FIELD with Soundproof, should still cure allies in party", async () => { - game.override.ability(Abilities.SOUNDPROOF); - await game.classicMode.startBattle([Species.RATTATA, Species.RATTATA, Species.RATTATA]); + game.override.ability(AbilityId.SOUNDPROOF); + await game.classicMode.startBattle([SpeciesId.RATTATA, SpeciesId.RATTATA, SpeciesId.RATTATA]); const [leftPlayer, rightPlayer, partyPokemon] = game.scene.getPlayerParty(); vi.spyOn(leftPlayer, "resetStatus"); vi.spyOn(rightPlayer, "resetStatus"); vi.spyOn(partyPokemon, "resetStatus"); - game.move.select(Moves.HEAL_BELL, 0); + game.move.select(MoveId.HEAL_BELL, 0); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(leftPlayer.resetStatus).toHaveBeenCalledOnce(); diff --git a/test/moves/heal_block.test.ts b/test/moves/heal_block.test.ts index 4ef67214a91..58e1a5e04a5 100644 --- a/test/moves/heal_block.test.ts +++ b/test/moves/heal_block.test.ts @@ -1,11 +1,11 @@ import { BattlerIndex } from "#app/battle"; import { ArenaTagSide } from "#app/data/arena-tag"; import GameManager from "#test/testUtils/gameManager"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -28,23 +28,23 @@ describe("Moves - Heal Block", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.ABSORB, Moves.WISH, Moves.SPLASH, Moves.AQUA_RING]) - .enemyMoveset(Moves.HEAL_BLOCK) - .ability(Abilities.NO_GUARD) - .enemyAbility(Abilities.BALL_FETCH) - .enemySpecies(Species.BLISSEY) + .moveset([MoveId.ABSORB, MoveId.WISH, MoveId.SPLASH, MoveId.AQUA_RING]) + .enemyMoveset(MoveId.HEAL_BLOCK) + .ability(AbilityId.NO_GUARD) + .enemyAbility(AbilityId.BALL_FETCH) + .enemySpecies(SpeciesId.BLISSEY) .disableCrits(); }); it("shouldn't stop damage from HP-drain attacks, just HP restoration", async () => { - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; player.damageAndUpdate(enemy.getMaxHp() - 1); - game.move.select(Moves.ABSORB); + game.move.select(MoveId.ABSORB); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); @@ -53,14 +53,14 @@ describe("Moves - Heal Block", () => { }); it("shouldn't stop Liquid Ooze from dealing damage", async () => { - game.override.enemyAbility(Abilities.LIQUID_OOZE); + game.override.enemyAbility(AbilityId.LIQUID_OOZE); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.ABSORB); + game.move.select(MoveId.ABSORB); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); @@ -69,18 +69,18 @@ describe("Moves - Heal Block", () => { }); it("should stop delayed heals, such as from Wish", async () => { - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const player = game.scene.getPlayerPokemon()!; player.damageAndUpdate(player.getMaxHp() - 1); - game.move.select(Moves.WISH); + game.move.select(MoveId.WISH); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.WISH, ArenaTagSide.PLAYER)).toBeDefined(); while (game.scene.arena.getTagOnSide(ArenaTagType.WISH, ArenaTagSide.PLAYER)) { - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); } @@ -88,28 +88,28 @@ describe("Moves - Heal Block", () => { }); it("should prevent Grassy Terrain from restoring HP", async () => { - game.override.enemyAbility(Abilities.GRASSY_SURGE); + game.override.enemyAbility(AbilityId.GRASSY_SURGE); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const player = game.scene.getPlayerPokemon()!; player.damageAndUpdate(player.getMaxHp() - 1); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(player.hp).toBe(1); }); it("should prevent healing from heal-over-time moves", async () => { - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const player = game.scene.getPlayerPokemon()!; player.damageAndUpdate(player.getMaxHp() - 1); - game.move.select(Moves.AQUA_RING); + game.move.select(MoveId.AQUA_RING); await game.phaseInterceptor.to("TurnEndPhase"); expect(player.getTag(BattlerTagType.AQUA_RING)).toBeDefined(); @@ -117,15 +117,15 @@ describe("Moves - Heal Block", () => { }); it("should prevent abilities from restoring HP", async () => { - game.override.weather(WeatherType.RAIN).ability(Abilities.RAIN_DISH); + game.override.weather(WeatherType.RAIN).ability(AbilityId.RAIN_DISH); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const player = game.scene.getPlayerPokemon()!; player.damageAndUpdate(player.getMaxHp() - 1); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(player.hp).toBe(1); @@ -134,12 +134,12 @@ describe("Moves - Heal Block", () => { it("should stop healing from items", async () => { game.override.startingHeldItems([{ name: "LEFTOVERS" }]); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const player = game.scene.getPlayerPokemon()!; player.damageAndUpdate(player.getMaxHp() - 1); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(player.hp).toBe(1); diff --git a/test/moves/heart_swap.test.ts b/test/moves/heart_swap.test.ts index 009db731951..e9e407b6b30 100644 --- a/test/moves/heart_swap.test.ts +++ b/test/moves/heart_swap.test.ts @@ -1,11 +1,11 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { BATTLE_STATS } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { MoveEndPhase } from "#app/phases/move-end-phase"; describe("Moves - Heart Swap", () => { @@ -25,23 +25,23 @@ describe("Moves - Heart Swap", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) - .enemySpecies(Species.INDEEDEE) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .enemySpecies(SpeciesId.INDEEDEE) .enemyLevel(200) - .moveset([Moves.HEART_SWAP]) - .ability(Abilities.NONE); + .moveset([MoveId.HEART_SWAP]) + .ability(AbilityId.NONE); }); it("should swap all of the user's stat stages with the target's", async () => { - await game.classicMode.startBattle([Species.MANAPHY]); + await game.classicMode.startBattle([SpeciesId.MANAPHY]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy.summonData, "statStages", "get").mockReturnValue(new Array(BATTLE_STATS.length).fill(1)); - game.move.select(Moves.HEART_SWAP); + game.move.select(MoveId.HEART_SWAP); await game.phaseInterceptor.to(MoveEndPhase); diff --git a/test/moves/hyper_beam.test.ts b/test/moves/hyper_beam.test.ts index a4cbf7d9245..083482d16ef 100644 --- a/test/moves/hyper_beam.test.ts +++ b/test/moves/hyper_beam.test.ts @@ -1,8 +1,8 @@ import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { BerryPhase } from "#app/phases/berry-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import GameManager from "#test/testUtils/gameManager"; @@ -27,23 +27,23 @@ describe("Moves - Hyper Beam", () => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.ability(Abilities.BALL_FETCH); - game.override.enemySpecies(Species.SNORLAX); - game.override.enemyAbility(Abilities.BALL_FETCH); - game.override.enemyMoveset([Moves.SPLASH]); + game.override.ability(AbilityId.BALL_FETCH); + game.override.enemySpecies(SpeciesId.SNORLAX); + game.override.enemyAbility(AbilityId.BALL_FETCH); + game.override.enemyMoveset([MoveId.SPLASH]); game.override.enemyLevel(100); - game.override.moveset([Moves.HYPER_BEAM, Moves.TACKLE]); - vi.spyOn(allMoves[Moves.HYPER_BEAM], "accuracy", "get").mockReturnValue(100); + game.override.moveset([MoveId.HYPER_BEAM, MoveId.TACKLE]); + vi.spyOn(allMoves[MoveId.HYPER_BEAM], "accuracy", "get").mockReturnValue(100); }); it("should force the user to recharge on the next turn (and only that turn)", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.HYPER_BEAM); + game.move.select(MoveId.HYPER_BEAM); await game.phaseInterceptor.to(TurnEndPhase); @@ -58,7 +58,7 @@ describe("Moves - Hyper Beam", () => { expect(enemyPokemon.hp).toBe(enemyPostAttackHp); expect(leadPokemon.getTag(BattlerTagType.RECHARGING)).toBeUndefined(); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/imprison.test.ts b/test/moves/imprison.test.ts index dfa3b3ad757..26eadb685f9 100644 --- a/test/moves/imprison.test.ts +++ b/test/moves/imprison.test.ts @@ -1,6 +1,6 @@ -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,19 +24,19 @@ describe("Moves - Imprison", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.IMPRISON, Moves.SPLASH, Moves.GROWL]) - .enemySpecies(Species.SHUCKLE) - .moveset([Moves.TRANSFORM, Moves.SPLASH]); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.IMPRISON, MoveId.SPLASH, MoveId.GROWL]) + .enemySpecies(SpeciesId.SHUCKLE) + .moveset([MoveId.TRANSFORM, MoveId.SPLASH]); }); it("Pokemon under Imprison cannot use shared moves", async () => { - await game.classicMode.startBattle([Species.REGIELEKI]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.TRANSFORM); - await game.move.selectEnemyMove(Moves.IMPRISON); + game.move.select(MoveId.TRANSFORM); + await game.move.selectEnemyMove(MoveId.IMPRISON); await game.toNextTurn(); const playerMoveset = playerPokemon.getMoveset().map(x => x?.moveId); const enemyMoveset = game.scene @@ -50,20 +50,20 @@ describe("Moves - Imprison", () => { expect(imprisonBattlerTag).toBeDefined(); // Second turn, Imprison forces Struggle to occur - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); const move1 = playerPokemon.getLastXMoves(1)[0]!; - expect(move1.move).toBe(Moves.STRUGGLE); + expect(move1.move).toBe(MoveId.STRUGGLE); }); it("Imprison applies to Pokemon switched into Battle", async () => { - await game.classicMode.startBattle([Species.REGIELEKI, Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI, SpeciesId.BULBASAUR]); const playerPokemon1 = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.IMPRISON); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.IMPRISON); await game.toNextTurn(); const imprisonArenaTag = game.scene.arena.getTag(ArenaTagType.IMPRISON); const imprisonBattlerTag1 = playerPokemon1.getTag(BattlerTagType.IMPRISON); @@ -72,7 +72,7 @@ describe("Moves - Imprison", () => { // Second turn, Imprison forces Struggle to occur game.doSwitchPokemon(1); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); const playerPokemon2 = game.scene.getPlayerPokemon()!; const imprisonBattlerTag2 = playerPokemon2.getTag(BattlerTagType.IMPRISON); @@ -81,18 +81,18 @@ describe("Moves - Imprison", () => { }); it("The effects of Imprison only end when the source is no longer active", async () => { - game.override.moveset([Moves.SPLASH, Moves.IMPRISON]); - await game.classicMode.startBattle([Species.REGIELEKI, Species.BULBASAUR]); + game.override.moveset([MoveId.SPLASH, MoveId.IMPRISON]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI, SpeciesId.BULBASAUR]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.IMPRISON); - await game.move.selectEnemyMove(Moves.GROWL); + game.move.select(MoveId.IMPRISON); + await game.move.selectEnemyMove(MoveId.GROWL); await game.toNextTurn(); expect(game.scene.arena.getTag(ArenaTagType.IMPRISON)).toBeDefined(); expect(enemyPokemon.getTag(BattlerTagType.IMPRISON)).toBeDefined(); game.doSwitchPokemon(1); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); expect(playerPokemon.isActive(true)).toBeFalsy(); expect(game.scene.arena.getTag(ArenaTagType.IMPRISON)).toBeUndefined(); diff --git a/test/moves/instruct.test.ts b/test/moves/instruct.test.ts index 719349760dc..56ac8d9d04d 100644 --- a/test/moves/instruct.test.ts +++ b/test/moves/instruct.test.ts @@ -2,9 +2,9 @@ import { BattlerIndex } from "#app/battle"; import type Pokemon from "#app/field/pokemon"; import { MoveResult } from "#app/field/pokemon"; import type { MovePhase } from "#app/phases/move-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -13,7 +13,7 @@ describe("Moves - Instruct", () => { let phaserGame: Phaser.Game; let game: GameManager; - function instructSuccess(target: Pokemon, move: Moves): void { + function instructSuccess(target: Pokemon, move: MoveId): void { expect(target.getLastXMoves(-1)[0].move).toBe(move); expect(target.getLastXMoves(-1)[1].move).toBe(target.getLastXMoves()[0].move); expect(target.getMoveset().find(m => m?.moveId === move)?.ppUsed).toBe(2); @@ -33,22 +33,22 @@ describe("Moves - Instruct", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.SHUCKLE) - .enemyAbility(Abilities.NO_GUARD) + .enemySpecies(SpeciesId.SHUCKLE) + .enemyAbility(AbilityId.NO_GUARD) .enemyLevel(100) .startingLevel(100) .disableCrits(); }); it("should repeat target's last used move", async () => { - game.override.moveset(Moves.INSTRUCT).enemyLevel(1000); // ensures shuckle no die - await game.classicMode.startBattle([Species.AMOONGUSS]); + game.override.moveset(MoveId.INSTRUCT).enemyLevel(1000); // ensures shuckle no die + await game.classicMode.startBattle([SpeciesId.AMOONGUSS]); const enemy = game.scene.getEnemyPokemon()!; - game.move.changeMoveset(enemy, Moves.SONIC_BOOM); + game.move.changeMoveset(enemy, MoveId.SONIC_BOOM); - game.move.select(Moves.INSTRUCT); - await game.move.selectEnemyMove(Moves.SONIC_BOOM); + game.move.select(MoveId.INSTRUCT); + await game.move.selectEnemyMove(MoveId.SONIC_BOOM); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("MovePhase"); // enemy attacks us @@ -60,93 +60,93 @@ describe("Moves - Instruct", () => { await game.phaseInterceptor.to("MovePhase", false); // enemy repeats move currentPhase = game.scene.getCurrentPhase() as MovePhase; expect(currentPhase.pokemon).toBe(enemy); - expect(currentPhase.move.moveId).toBe(Moves.SONIC_BOOM); + expect(currentPhase.move.moveId).toBe(MoveId.SONIC_BOOM); await game.phaseInterceptor.to("TurnEndPhase", false); - instructSuccess(enemy, Moves.SONIC_BOOM); + instructSuccess(enemy, MoveId.SONIC_BOOM); expect(game.scene.getPlayerPokemon()?.getInverseHp()).toBe(40); }); it("should repeat enemy's move through substitute", async () => { - game.override.moveset([Moves.INSTRUCT, Moves.SPLASH]); - await game.classicMode.startBattle([Species.AMOONGUSS]); + game.override.moveset([MoveId.INSTRUCT, MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS]); const enemy = game.scene.getEnemyPokemon()!; - game.move.changeMoveset(enemy, [Moves.SONIC_BOOM, Moves.SUBSTITUTE]); + game.move.changeMoveset(enemy, [MoveId.SONIC_BOOM, MoveId.SUBSTITUTE]); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SUBSTITUTE); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SUBSTITUTE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); - game.move.select(Moves.INSTRUCT); - await game.move.selectEnemyMove(Moves.SONIC_BOOM); + game.move.select(MoveId.INSTRUCT); + await game.move.selectEnemyMove(MoveId.SONIC_BOOM); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase", false); - instructSuccess(game.scene.getEnemyPokemon()!, Moves.SONIC_BOOM); + instructSuccess(game.scene.getEnemyPokemon()!, MoveId.SONIC_BOOM); expect(game.scene.getPlayerPokemon()?.getInverseHp()).toBe(40); }); it("should repeat ally's attack on enemy", async () => { - game.override.battleStyle("double").enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.AMOONGUSS, Species.SHUCKLE]); + game.override.battleStyle("double").enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS, SpeciesId.SHUCKLE]); const [amoonguss, shuckle] = game.scene.getPlayerField(); - game.move.changeMoveset(amoonguss, [Moves.INSTRUCT, Moves.SONIC_BOOM]); - game.move.changeMoveset(shuckle, [Moves.INSTRUCT, Moves.SONIC_BOOM]); + game.move.changeMoveset(amoonguss, [MoveId.INSTRUCT, MoveId.SONIC_BOOM]); + game.move.changeMoveset(shuckle, [MoveId.INSTRUCT, MoveId.SONIC_BOOM]); - game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2); - game.move.select(Moves.SONIC_BOOM, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); + game.move.select(MoveId.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2); + game.move.select(MoveId.SONIC_BOOM, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("TurnEndPhase", false); - instructSuccess(shuckle, Moves.SONIC_BOOM); + instructSuccess(shuckle, MoveId.SONIC_BOOM); expect(game.scene.getEnemyField()[0].getInverseHp()).toBe(40); }); // TODO: Enable test case once gigaton hammer (and blood moon) are reworked it.todo("should repeat enemy's Gigaton Hammer", async () => { - game.override.moveset(Moves.INSTRUCT).enemyLevel(5); - await game.classicMode.startBattle([Species.AMOONGUSS]); + game.override.moveset(MoveId.INSTRUCT).enemyLevel(5); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS]); const enemy = game.scene.getEnemyPokemon()!; - game.move.changeMoveset(enemy, [Moves.GIGATON_HAMMER, Moves.BLOOD_MOON]); + game.move.changeMoveset(enemy, [MoveId.GIGATON_HAMMER, MoveId.BLOOD_MOON]); - game.move.select(Moves.INSTRUCT); + game.move.select(MoveId.INSTRUCT); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); - instructSuccess(enemy, Moves.GIGATON_HAMMER); + instructSuccess(enemy, MoveId.GIGATON_HAMMER); expect(game.scene.getPlayerPokemon()!.turnData.attacksReceived.length).toBe(2); }); it("should add moves to move queue for copycat", async () => { - game.override.battleStyle("double").moveset(Moves.INSTRUCT).enemyLevel(5); - await game.classicMode.startBattle([Species.AMOONGUSS]); + game.override.battleStyle("double").moveset(MoveId.INSTRUCT).enemyLevel(5); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS]); const [enemy1, enemy2] = game.scene.getEnemyField()!; - game.move.changeMoveset(enemy1, Moves.WATER_GUN); - game.move.changeMoveset(enemy2, Moves.COPYCAT); + game.move.changeMoveset(enemy1, MoveId.WATER_GUN); + game.move.changeMoveset(enemy2, MoveId.COPYCAT); - game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); - instructSuccess(enemy1, Moves.WATER_GUN); + instructSuccess(enemy1, MoveId.WATER_GUN); // amoonguss gets hit by water gun thrice; once by original attack, once by instructed use and once by copycat expect(game.scene.getPlayerPokemon()!.turnData.attacksReceived.length).toBe(3); }); it("should respect enemy's status condition", async () => { - game.override.moveset([Moves.INSTRUCT, Moves.THUNDER_WAVE]).enemyMoveset(Moves.SONIC_BOOM); - await game.classicMode.startBattle([Species.AMOONGUSS]); + game.override.moveset([MoveId.INSTRUCT, MoveId.THUNDER_WAVE]).enemyMoveset(MoveId.SONIC_BOOM); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS]); - game.move.select(Moves.THUNDER_WAVE); + game.move.select(MoveId.THUNDER_WAVE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - game.move.select(Moves.INSTRUCT); + game.move.select(MoveId.INSTRUCT); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MovePhase"); // force enemy's instructed move to bork and then immediately thaw out @@ -155,21 +155,21 @@ describe("Moves - Instruct", () => { await game.phaseInterceptor.to("TurnEndPhase", false); const moveHistory = game.scene.getEnemyPokemon()?.getLastXMoves(-1)!; - expect(moveHistory.map(m => m.move)).toEqual([Moves.SONIC_BOOM, Moves.NONE, Moves.SONIC_BOOM]); + expect(moveHistory.map(m => m.move)).toEqual([MoveId.SONIC_BOOM, MoveId.NONE, MoveId.SONIC_BOOM]); expect(game.scene.getPlayerPokemon()?.getInverseHp()).toBe(40); }); it("should not repeat enemy's out of pp move", async () => { - game.override.moveset(Moves.INSTRUCT).enemySpecies(Species.UNOWN); - await game.classicMode.startBattle([Species.AMOONGUSS]); + game.override.moveset(MoveId.INSTRUCT).enemySpecies(SpeciesId.UNOWN); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.changeMoveset(enemyPokemon, Moves.HIDDEN_POWER); - const moveUsed = enemyPokemon.moveset.find(m => m?.moveId === Moves.HIDDEN_POWER)!; + game.move.changeMoveset(enemyPokemon, MoveId.HIDDEN_POWER); + const moveUsed = enemyPokemon.moveset.find(m => m?.moveId === MoveId.HIDDEN_POWER)!; moveUsed.ppUsed = moveUsed.getMovePp() - 1; - game.move.select(Moves.INSTRUCT); - await game.move.selectEnemyMove(Moves.HIDDEN_POWER); + game.move.select(MoveId.INSTRUCT); + await game.move.selectEnemyMove(MoveId.HIDDEN_POWER); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase", false); @@ -179,15 +179,15 @@ describe("Moves - Instruct", () => { }); it("should redirect attacking moves if enemy faints", async () => { - game.override.battleStyle("double").enemyMoveset(Moves.SPLASH).enemySpecies(Species.MAGIKARP).enemyLevel(1); - await game.classicMode.startBattle([Species.HISUI_ELECTRODE, Species.KOMMO_O]); + game.override.battleStyle("double").enemyMoveset(MoveId.SPLASH).enemySpecies(SpeciesId.MAGIKARP).enemyLevel(1); + await game.classicMode.startBattle([SpeciesId.HISUI_ELECTRODE, SpeciesId.KOMMO_O]); const [electrode, kommo_o] = game.scene.getPlayerField()!; - game.move.changeMoveset(electrode, Moves.CHLOROBLAST); - game.move.changeMoveset(kommo_o, Moves.INSTRUCT); + game.move.changeMoveset(electrode, MoveId.CHLOROBLAST); + game.move.changeMoveset(kommo_o, MoveId.INSTRUCT); - game.move.select(Moves.CHLOROBLAST, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER); + game.move.select(MoveId.CHLOROBLAST, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); @@ -201,36 +201,36 @@ describe("Moves - Instruct", () => { expect(karp2.isFainted()).toBe(true); }); it("should allow for dancer copying of instructed dance move", async () => { - game.override.battleStyle("double").enemyMoveset([Moves.INSTRUCT, Moves.SPLASH]).enemyLevel(1000); - await game.classicMode.startBattle([Species.ORICORIO, Species.VOLCARONA]); + game.override.battleStyle("double").enemyMoveset([MoveId.INSTRUCT, MoveId.SPLASH]).enemyLevel(1000); + await game.classicMode.startBattle([SpeciesId.ORICORIO, SpeciesId.VOLCARONA]); const [oricorio, volcarona] = game.scene.getPlayerField(); - game.move.changeMoveset(oricorio, Moves.SPLASH); - game.move.changeMoveset(volcarona, Moves.FIERY_DANCE); + game.move.changeMoveset(oricorio, MoveId.SPLASH); + game.move.changeMoveset(volcarona, MoveId.FIERY_DANCE); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER); - game.move.select(Moves.FIERY_DANCE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); - await game.move.selectEnemyMove(Moves.INSTRUCT, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER); + game.move.select(MoveId.FIERY_DANCE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); + await game.move.selectEnemyMove(MoveId.INSTRUCT, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); // fiery dance triggered dancer successfully for a total of 4 hits // Enemy level is set to a high value so that it does not faint even after all 4 hits - instructSuccess(volcarona, Moves.FIERY_DANCE); + instructSuccess(volcarona, MoveId.FIERY_DANCE); expect(game.scene.getEnemyField()[0].turnData.attacksReceived.length).toBe(4); }); it("should not repeat move when switching out", async () => { - game.override.enemyMoveset(Moves.INSTRUCT).enemySpecies(Species.UNOWN); - await game.classicMode.startBattle([Species.AMOONGUSS, Species.TOXICROAK]); + game.override.enemyMoveset(MoveId.INSTRUCT).enemySpecies(SpeciesId.UNOWN); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS, SpeciesId.TOXICROAK]); const amoonguss = game.scene.getPlayerPokemon()!; - game.move.changeMoveset(amoonguss, Moves.SEED_BOMB); + game.move.changeMoveset(amoonguss, MoveId.SEED_BOMB); amoonguss.summonData.moveHistory = [ { - move: Moves.SEED_BOMB, + move: MoveId.SEED_BOMB, targets: [BattlerIndex.ENEMY], result: MoveResult.SUCCESS, }, @@ -244,11 +244,11 @@ describe("Moves - Instruct", () => { }); it("should fail if no move has yet been used by target", async () => { - game.override.moveset(Moves.INSTRUCT).enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.AMOONGUSS]); + game.override.moveset(MoveId.INSTRUCT).enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS]); - game.move.select(Moves.INSTRUCT); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.INSTRUCT); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("TurnEndPhase", false); @@ -256,16 +256,16 @@ describe("Moves - Instruct", () => { }); it("should attempt to call enemy's disabled move, but move use itself should fail", async () => { - game.override.moveset([Moves.INSTRUCT, Moves.DISABLE]).battleStyle("double"); - await game.classicMode.startBattle([Species.AMOONGUSS, Species.DROWZEE]); + game.override.moveset([MoveId.INSTRUCT, MoveId.DISABLE]).battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS, SpeciesId.DROWZEE]); const [enemy1, enemy2] = game.scene.getEnemyField(); - game.move.changeMoveset(enemy1, Moves.SONIC_BOOM); - game.move.changeMoveset(enemy2, Moves.SPLASH); + game.move.changeMoveset(enemy1, MoveId.SONIC_BOOM); + game.move.changeMoveset(enemy2, MoveId.SPLASH); - game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.DISABLE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); - await game.move.selectEnemyMove(Moves.SONIC_BOOM, BattlerIndex.PLAYER); + game.move.select(MoveId.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.DISABLE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); + await game.move.selectEnemyMove(MoveId.SONIC_BOOM, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("TurnEndPhase", false); @@ -276,49 +276,49 @@ describe("Moves - Instruct", () => { game.scene .getEnemyField()[0] .getMoveset() - .find(m => m?.moveId === Moves.SONIC_BOOM)?.ppUsed, + .find(m => m?.moveId === MoveId.SONIC_BOOM)?.ppUsed, ).toBe(1); }); it("should not repeat enemy's move through protect", async () => { - game.override.moveset([Moves.INSTRUCT]); - await game.classicMode.startBattle([Species.AMOONGUSS]); + game.override.moveset([MoveId.INSTRUCT]); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS]); const enemy = game.scene.getEnemyPokemon()!; - game.move.changeMoveset(enemy, Moves.PROTECT); - game.move.select(Moves.INSTRUCT); + game.move.changeMoveset(enemy, MoveId.PROTECT); + game.move.select(MoveId.INSTRUCT); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase", false); - expect(enemy.getLastXMoves(-1)[0].move).toBe(Moves.PROTECT); + expect(enemy.getLastXMoves(-1)[0].move).toBe(MoveId.PROTECT); expect(enemy.getLastXMoves(-1)[1]).toBeUndefined(); // undefined because instruct failed and didn't repeat - expect(enemy.getMoveset().find(m => m?.moveId === Moves.PROTECT)?.ppUsed).toBe(1); + expect(enemy.getMoveset().find(m => m?.moveId === MoveId.PROTECT)?.ppUsed).toBe(1); }); it("should not repeat enemy's charging move", async () => { - game.override.moveset([Moves.INSTRUCT]).enemyMoveset([Moves.SONIC_BOOM, Moves.HYPER_BEAM]); - await game.classicMode.startBattle([Species.SHUCKLE]); + game.override.moveset([MoveId.INSTRUCT]).enemyMoveset([MoveId.SONIC_BOOM, MoveId.HYPER_BEAM]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; enemy.summonData.moveHistory = [ { - move: Moves.SONIC_BOOM, + move: MoveId.SONIC_BOOM, targets: [BattlerIndex.PLAYER], result: MoveResult.SUCCESS, virtual: false, }, ]; - game.move.select(Moves.INSTRUCT); - await game.move.selectEnemyMove(Moves.HYPER_BEAM); + game.move.select(MoveId.INSTRUCT); + await game.move.selectEnemyMove(MoveId.HYPER_BEAM); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); // instruct fails at copying last move due to charging turn (rather than instructing sonic boom) expect(player.getLastXMoves()[0].result).toBe(MoveResult.FAIL); - game.move.select(Moves.INSTRUCT); + game.move.select(MoveId.INSTRUCT); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase", false); @@ -326,114 +326,114 @@ describe("Moves - Instruct", () => { }); it("should not repeat move since forgotten by target", async () => { - game.override.enemyMoveset(Moves.INSTRUCT); - await game.classicMode.startBattle([Species.REGIELEKI]); + game.override.enemyMoveset(MoveId.INSTRUCT); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const regieleki = game.scene.getPlayerPokemon()!; regieleki.pushMoveHistory({ - move: Moves.ELECTRO_DRIFT, + move: MoveId.ELECTRO_DRIFT, targets: [BattlerIndex.PLAYER], result: MoveResult.SUCCESS, virtual: false, }); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toEndOfTurn(); expect(game.field.getEnemyPokemon().getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should disregard priority of instructed move on use", async () => { - game.override.enemyMoveset([Moves.SPLASH, Moves.WHIRLWIND]).moveset(Moves.INSTRUCT); - await game.classicMode.startBattle([Species.LUCARIO, Species.BANETTE]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.WHIRLWIND]).moveset(MoveId.INSTRUCT); + await game.classicMode.startBattle([SpeciesId.LUCARIO, SpeciesId.BANETTE]); const enemyPokemon = game.scene.getEnemyPokemon()!; enemyPokemon.summonData.moveHistory = [ { - move: Moves.WHIRLWIND, + move: MoveId.WHIRLWIND, targets: [BattlerIndex.PLAYER], result: MoveResult.SUCCESS, virtual: false, }, ]; - game.move.select(Moves.INSTRUCT); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.INSTRUCT); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase", false); // lucario instructed enemy whirlwind at 0 priority to switch itself out const instructedMove = enemyPokemon.getLastXMoves(-1)[1]; expect(instructedMove.result).toBe(MoveResult.SUCCESS); - expect(instructedMove.move).toBe(Moves.WHIRLWIND); - expect(game.scene.getPlayerPokemon()?.species.speciesId).toBe(Species.BANETTE); + expect(instructedMove.move).toBe(MoveId.WHIRLWIND); + expect(game.scene.getPlayerPokemon()?.species.speciesId).toBe(SpeciesId.BANETTE); }); it("should respect moves' original priority for psychic terrain", async () => { game.override .battleStyle("double") - .moveset([Moves.QUICK_ATTACK, Moves.SPLASH, Moves.INSTRUCT]) - .enemyMoveset([Moves.SPLASH, Moves.PSYCHIC_TERRAIN]); - await game.classicMode.startBattle([Species.BANETTE, Species.KLEFKI]); + .moveset([MoveId.QUICK_ATTACK, MoveId.SPLASH, MoveId.INSTRUCT]) + .enemyMoveset([MoveId.SPLASH, MoveId.PSYCHIC_TERRAIN]); + await game.classicMode.startBattle([SpeciesId.BANETTE, SpeciesId.KLEFKI]); - game.move.select(Moves.QUICK_ATTACK, BattlerIndex.PLAYER, BattlerIndex.ENEMY); // succeeds due to terrain no - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.PSYCHIC_TERRAIN); + game.move.select(MoveId.QUICK_ATTACK, BattlerIndex.PLAYER, BattlerIndex.ENEMY); // succeeds due to terrain no + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.PSYCHIC_TERRAIN); await game.toNextTurn(); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER); - game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER); + game.move.select(MoveId.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("TurnEndPhase", false); // quick attack failed when instructed const banette = game.scene.getPlayerPokemon()!; - expect(banette.getLastXMoves(-1)[1].move).toBe(Moves.QUICK_ATTACK); + expect(banette.getLastXMoves(-1)[1].move).toBe(MoveId.QUICK_ATTACK); expect(banette.getLastXMoves(-1)[1].result).toBe(MoveResult.FAIL); }); it("should still work w/ prankster in psychic terrain", async () => { - game.override.battleStyle("double").enemyMoveset([Moves.SPLASH, Moves.PSYCHIC_TERRAIN]); - await game.classicMode.startBattle([Species.BANETTE, Species.KLEFKI]); + game.override.battleStyle("double").enemyMoveset([MoveId.SPLASH, MoveId.PSYCHIC_TERRAIN]); + await game.classicMode.startBattle([SpeciesId.BANETTE, SpeciesId.KLEFKI]); const [banette, klefki] = game.scene.getPlayerField()!; - game.move.changeMoveset(banette, [Moves.VINE_WHIP, Moves.SPLASH]); - game.move.changeMoveset(klefki, [Moves.INSTRUCT, Moves.SPLASH]); + game.move.changeMoveset(banette, [MoveId.VINE_WHIP, MoveId.SPLASH]); + game.move.changeMoveset(klefki, [MoveId.INSTRUCT, MoveId.SPLASH]); - game.move.select(Moves.VINE_WHIP, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.PSYCHIC_TERRAIN); + game.move.select(MoveId.VINE_WHIP, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.PSYCHIC_TERRAIN); await game.toNextTurn(); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER); - game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER); // copies vine whip + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER); + game.move.select(MoveId.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER); // copies vine whip await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("TurnEndPhase", false); - expect(banette.getLastXMoves(-1)[1].move).toBe(Moves.VINE_WHIP); - expect(banette.getLastXMoves(-1)[2].move).toBe(Moves.VINE_WHIP); - expect(banette.getMoveset().find(m => m?.moveId === Moves.VINE_WHIP)?.ppUsed).toBe(2); + expect(banette.getLastXMoves(-1)[1].move).toBe(MoveId.VINE_WHIP); + expect(banette.getLastXMoves(-1)[2].move).toBe(MoveId.VINE_WHIP); + expect(banette.getMoveset().find(m => m?.moveId === MoveId.VINE_WHIP)?.ppUsed).toBe(2); }); it("should cause spread moves to correctly hit targets in doubles after singles", async () => { game.override .battleStyle("even-doubles") - .moveset([Moves.BREAKING_SWIPE, Moves.INSTRUCT, Moves.SPLASH]) - .enemyMoveset(Moves.SONIC_BOOM) - .enemySpecies(Species.AXEW) + .moveset([MoveId.BREAKING_SWIPE, MoveId.INSTRUCT, MoveId.SPLASH]) + .enemyMoveset(MoveId.SONIC_BOOM) + .enemySpecies(SpeciesId.AXEW) .startingLevel(500); - await game.classicMode.startBattle([Species.KORAIDON, Species.KLEFKI]); + await game.classicMode.startBattle([SpeciesId.KORAIDON, SpeciesId.KLEFKI]); const koraidon = game.scene.getPlayerField()[0]!; - game.move.select(Moves.BREAKING_SWIPE); + game.move.select(MoveId.BREAKING_SWIPE); await game.phaseInterceptor.to("TurnEndPhase", false); expect(koraidon.getInverseHp()).toBe(0); expect(koraidon.getLastXMoves(-1)[0].targets).toEqual([BattlerIndex.ENEMY]); await game.toNextWave(); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER); - game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER); + game.move.select(MoveId.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("TurnEndPhase", false); // did not take damage since enemies died beforehand; @@ -445,23 +445,23 @@ describe("Moves - Instruct", () => { it("should cause AoE moves to correctly hit everyone in doubles after singles", async () => { game.override .battleStyle("even-doubles") - .moveset([Moves.BRUTAL_SWING, Moves.INSTRUCT, Moves.SPLASH]) - .enemySpecies(Species.AXEW) - .enemyMoveset(Moves.SONIC_BOOM) + .moveset([MoveId.BRUTAL_SWING, MoveId.INSTRUCT, MoveId.SPLASH]) + .enemySpecies(SpeciesId.AXEW) + .enemyMoveset(MoveId.SONIC_BOOM) .startingLevel(500); - await game.classicMode.startBattle([Species.KORAIDON, Species.KLEFKI]); + await game.classicMode.startBattle([SpeciesId.KORAIDON, SpeciesId.KLEFKI]); const koraidon = game.scene.getPlayerField()[0]!; - game.move.select(Moves.BRUTAL_SWING); + game.move.select(MoveId.BRUTAL_SWING); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("TurnEndPhase", false); expect(koraidon.getInverseHp()).toBe(0); expect(koraidon.getLastXMoves(-1)[0].targets).toEqual([BattlerIndex.ENEMY]); await game.toNextWave(); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER); - game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER); + game.move.select(MoveId.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("TurnEndPhase", false); // did not take damage since enemies died beforehand; @@ -476,24 +476,24 @@ describe("Moves - Instruct", () => { it("should cause multi-hit moves to hit the appropriate number of times in singles", async () => { game.override - .enemyAbility(Abilities.SKILL_LINK) - .moveset([Moves.SPLASH, Moves.INSTRUCT]) - .enemyMoveset(Moves.BULLET_SEED); - await game.classicMode.startBattle([Species.BULBASAUR]); + .enemyAbility(AbilityId.SKILL_LINK) + .moveset([MoveId.SPLASH, MoveId.INSTRUCT]) + .enemyMoveset(MoveId.BULLET_SEED); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const bulbasaur = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); - game.move.select(Moves.INSTRUCT); + game.move.select(MoveId.INSTRUCT); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase"); expect(bulbasaur.turnData.attacksReceived.length).toBe(10); await game.toNextTurn(); - game.move.select(Moves.INSTRUCT); + game.move.select(MoveId.INSTRUCT); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); @@ -503,34 +503,34 @@ describe("Moves - Instruct", () => { it("should cause multi-hit moves to hit the appropriate number of times in doubles", async () => { game.override .battleStyle("double") - .enemyAbility(Abilities.SKILL_LINK) - .moveset([Moves.SPLASH, Moves.INSTRUCT]) - .enemyMoveset([Moves.BULLET_SEED, Moves.SPLASH]) + .enemyAbility(AbilityId.SKILL_LINK) + .moveset([MoveId.SPLASH, MoveId.INSTRUCT]) + .enemyMoveset([MoveId.BULLET_SEED, MoveId.SPLASH]) .enemyLevel(5); - await game.classicMode.startBattle([Species.BULBASAUR, Species.IVYSAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.IVYSAUR]); const [, ivysaur] = game.scene.getPlayerField(); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER); - game.move.select(Moves.SPLASH, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER); + game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.BULLET_SEED, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); - game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); - await game.move.selectEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); + await game.move.selectEnemyMove(MoveId.BULLET_SEED, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("BerryPhase"); expect(ivysaur.turnData.attacksReceived.length).toBe(15); await game.toNextTurn(); - game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); - await game.move.selectEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); + await game.move.selectEnemyMove(MoveId.BULLET_SEED, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2]); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/moves/jaw_lock.test.ts b/test/moves/jaw_lock.test.ts index 85750b6efda..6084a47ad99 100644 --- a/test/moves/jaw_lock.test.ts +++ b/test/moves/jaw_lock.test.ts @@ -1,13 +1,13 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { BerryPhase } from "#app/phases/berry-phase"; import { FaintPhase } from "#app/phases/faint-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import GameManager from "#test/testUtils/gameManager"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -30,22 +30,22 @@ describe("Moves - Jaw Lock", () => { game.override .battleStyle("single") - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.INSOMNIA) - .enemyMoveset(Moves.SPLASH) - .moveset([Moves.JAW_LOCK, Moves.SPLASH]) + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.INSOMNIA) + .enemyMoveset(MoveId.SPLASH) + .moveset([MoveId.JAW_LOCK, MoveId.SPLASH]) .startingLevel(100) .enemyLevel(100) .disableCrits(); }); it("should trap the move's user and target", async () => { - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.JAW_LOCK); + game.move.select(MoveId.JAW_LOCK); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase, false); @@ -61,12 +61,12 @@ describe("Moves - Jaw Lock", () => { it("should not trap either pokemon if the target faints", async () => { game.override.enemyLevel(1); - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.JAW_LOCK); + game.move.select(MoveId.JAW_LOCK); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase, false); @@ -86,12 +86,12 @@ describe("Moves - Jaw Lock", () => { }); it("should only trap the user until the target faints", async () => { - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.JAW_LOCK); + game.move.select(MoveId.JAW_LOCK); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase); @@ -109,13 +109,13 @@ describe("Moves - Jaw Lock", () => { it("should not trap other targets after the first target is trapped", async () => { game.override.battleStyle("double"); - await game.classicMode.startBattle([Species.CHARMANDER, Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.CHARMANDER, SpeciesId.BULBASAUR]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.JAW_LOCK, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.JAW_LOCK, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to(MoveEffectPhase); @@ -125,8 +125,8 @@ describe("Moves - Jaw Lock", () => { await game.toNextTurn(); - game.move.select(Moves.JAW_LOCK, 0, BattlerIndex.ENEMY_2); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.JAW_LOCK, 0, BattlerIndex.ENEMY_2); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(MoveEffectPhase); @@ -136,14 +136,14 @@ describe("Moves - Jaw Lock", () => { }); it("should not trap either pokemon if the target is protected", async () => { - game.override.enemyMoveset([Moves.PROTECT]); + game.override.enemyMoveset([MoveId.PROTECT]); - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.JAW_LOCK); + game.move.select(MoveId.JAW_LOCK); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/lash_out.test.ts b/test/moves/lash_out.test.ts index e45df4fc998..a63ab2a467c 100644 --- a/test/moves/lash_out.test.ts +++ b/test/moves/lash_out.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -26,24 +26,24 @@ describe("Moves - Lash Out", () => { game.override .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.FUR_COAT) - .enemyMoveset([Moves.GROWL]) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.FUR_COAT) + .enemyMoveset([MoveId.GROWL]) .startingLevel(10) .enemyLevel(10) - .starterSpecies(Species.FEEBAS) - .ability(Abilities.BALL_FETCH) - .moveset([Moves.LASH_OUT]); + .starterSpecies(SpeciesId.FEEBAS) + .ability(AbilityId.BALL_FETCH) + .moveset([MoveId.LASH_OUT]); }); it("should deal double damage if the user's stat stages were lowered this turn", async () => { - vi.spyOn(allMoves[Moves.LASH_OUT], "calculateBattlePower"); + vi.spyOn(allMoves[MoveId.LASH_OUT], "calculateBattlePower"); await game.classicMode.startBattle(); - game.move.select(Moves.LASH_OUT); + game.move.select(MoveId.LASH_OUT); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); - expect(allMoves[Moves.LASH_OUT].calculateBattlePower).toHaveReturnedWith(150); + expect(allMoves[MoveId.LASH_OUT].calculateBattlePower).toHaveReturnedWith(150); }); }); diff --git a/test/moves/last-resort.test.ts b/test/moves/last-resort.test.ts index 65b50bc4e89..0e6c1a6ba15 100644 --- a/test/moves/last-resort.test.ts +++ b/test/moves/last-resort.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -14,7 +14,7 @@ describe("Moves - Last Resort", () => { function expectLastResortFail() { expect(game.scene.getPlayerPokemon()?.getLastXMoves()[0]).toEqual( expect.objectContaining({ - move: Moves.LAST_RESORT, + move: MoveId.LAST_RESORT, result: MoveResult.FAIL, }), ); @@ -32,45 +32,45 @@ describe("Moves - Last Resort", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .ability(Abilities.BALL_FETCH) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should fail unless all other moves (excluding itself) has been used at least once", async () => { - game.override.moveset([Moves.LAST_RESORT, Moves.SPLASH, Moves.GROWL, Moves.GROWTH]); - await game.classicMode.startBattle([Species.BLISSEY]); + game.override.moveset([MoveId.LAST_RESORT, MoveId.SPLASH, MoveId.GROWL, MoveId.GROWTH]); + await game.classicMode.startBattle([SpeciesId.BLISSEY]); const blissey = game.scene.getPlayerPokemon()!; expect(blissey).toBeDefined(); // Last resort by itself - game.move.select(Moves.LAST_RESORT); + game.move.select(MoveId.LAST_RESORT); await game.phaseInterceptor.to("TurnEndPhase"); expectLastResortFail(); // Splash (1/3) - blissey.pushMoveHistory({ move: Moves.SPLASH, targets: [BattlerIndex.PLAYER] }); - game.move.select(Moves.LAST_RESORT); + blissey.pushMoveHistory({ move: MoveId.SPLASH, targets: [BattlerIndex.PLAYER] }); + game.move.select(MoveId.LAST_RESORT); await game.phaseInterceptor.to("TurnEndPhase"); expectLastResortFail(); // Growl (2/3) - blissey.pushMoveHistory({ move: Moves.GROWL, targets: [BattlerIndex.ENEMY] }); - game.move.select(Moves.LAST_RESORT); + blissey.pushMoveHistory({ move: MoveId.GROWL, targets: [BattlerIndex.ENEMY] }); + game.move.select(MoveId.LAST_RESORT); await game.phaseInterceptor.to("TurnEndPhase"); expectLastResortFail(); // Were last resort itself counted, it would error here // Growth (3/3) - blissey.pushMoveHistory({ move: Moves.GROWTH, targets: [BattlerIndex.PLAYER] }); - game.move.select(Moves.LAST_RESORT); + blissey.pushMoveHistory({ move: MoveId.GROWTH, targets: [BattlerIndex.PLAYER] }); + game.move.select(MoveId.LAST_RESORT); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.getPlayerPokemon()?.getLastXMoves()[0]).toEqual( expect.objectContaining({ - move: Moves.LAST_RESORT, + move: MoveId.LAST_RESORT, result: MoveResult.SUCCESS, }), ); @@ -78,59 +78,59 @@ describe("Moves - Last Resort", () => { it("should disregard virtually invoked moves", async () => { game.override - .moveset([Moves.LAST_RESORT, Moves.SWORDS_DANCE, Moves.ABSORB, Moves.MIRROR_MOVE]) - .enemyMoveset([Moves.SWORDS_DANCE, Moves.ABSORB]) - .ability(Abilities.DANCER) - .enemySpecies(Species.ABOMASNOW); // magikarp has 50% chance to be okho'd on absorb crit - await game.classicMode.startBattle([Species.BLISSEY]); + .moveset([MoveId.LAST_RESORT, MoveId.SWORDS_DANCE, MoveId.ABSORB, MoveId.MIRROR_MOVE]) + .enemyMoveset([MoveId.SWORDS_DANCE, MoveId.ABSORB]) + .ability(AbilityId.DANCER) + .enemySpecies(SpeciesId.ABOMASNOW); // magikarp has 50% chance to be okho'd on absorb crit + await game.classicMode.startBattle([SpeciesId.BLISSEY]); // use mirror move normally to trigger absorb virtually - game.move.select(Moves.MIRROR_MOVE); - await game.move.selectEnemyMove(Moves.ABSORB); + game.move.select(MoveId.MIRROR_MOVE); + await game.move.selectEnemyMove(MoveId.ABSORB); await game.toNextTurn(); - game.move.select(Moves.LAST_RESORT); - await game.move.selectEnemyMove(Moves.SWORDS_DANCE); // goes first to proc dancer ahead of time + game.move.select(MoveId.LAST_RESORT); + await game.move.selectEnemyMove(MoveId.SWORDS_DANCE); // goes first to proc dancer ahead of time await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); expectLastResortFail(); }); it("should fail if no other moves in moveset", async () => { - game.override.moveset(Moves.LAST_RESORT); - await game.classicMode.startBattle([Species.BLISSEY]); + game.override.moveset(MoveId.LAST_RESORT); + await game.classicMode.startBattle([SpeciesId.BLISSEY]); - game.move.select(Moves.LAST_RESORT); + game.move.select(MoveId.LAST_RESORT); await game.phaseInterceptor.to("TurnEndPhase"); expectLastResortFail(); }); it("should work if invoked virtually when all other moves have been used", async () => { - game.override.moveset([Moves.LAST_RESORT, Moves.SLEEP_TALK]).ability(Abilities.COMATOSE); - await game.classicMode.startBattle([Species.KOMALA]); + game.override.moveset([MoveId.LAST_RESORT, MoveId.SLEEP_TALK]).ability(AbilityId.COMATOSE); + await game.classicMode.startBattle([SpeciesId.KOMALA]); - game.move.select(Moves.SLEEP_TALK); + game.move.select(MoveId.SLEEP_TALK); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.getPlayerPokemon()?.getLastXMoves(-1)).toEqual([ expect.objectContaining({ - move: Moves.LAST_RESORT, + move: MoveId.LAST_RESORT, result: MoveResult.SUCCESS, virtual: true, }), expect.objectContaining({ - move: Moves.SLEEP_TALK, + move: MoveId.SLEEP_TALK, result: MoveResult.SUCCESS, }), ]); }); it("should preserve usability status on reload", async () => { - game.override.moveset([Moves.LAST_RESORT, Moves.SPLASH]).ability(Abilities.COMATOSE); - await game.classicMode.startBattle([Species.BLISSEY]); + game.override.moveset([MoveId.LAST_RESORT, MoveId.SPLASH]).ability(AbilityId.COMATOSE); + await game.classicMode.startBattle([SpeciesId.BLISSEY]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.toNextWave(); @@ -141,7 +141,7 @@ describe("Moves - Last Resort", () => { expect(oldMoveHistory).toEqual(newMoveHistory); // use last resort and it should kill the karp just fine - game.move.select(Moves.LAST_RESORT); + game.move.select(MoveId.LAST_RESORT); game.scene.getEnemyPokemon()!.hp = 1; await game.phaseInterceptor.to("TurnEndPhase"); @@ -149,15 +149,15 @@ describe("Moves - Last Resort", () => { }); it("should fail if used while not in moveset", async () => { - game.override.moveset(Moves.MIRROR_MOVE).enemyMoveset([Moves.ABSORB, Moves.LAST_RESORT]); - await game.classicMode.startBattle([Species.BLISSEY]); + game.override.moveset(MoveId.MIRROR_MOVE).enemyMoveset([MoveId.ABSORB, MoveId.LAST_RESORT]); + await game.classicMode.startBattle([SpeciesId.BLISSEY]); // ensure enemy last resort succeeds - game.move.select(Moves.MIRROR_MOVE); - await game.move.selectEnemyMove(Moves.ABSORB); + game.move.select(MoveId.MIRROR_MOVE); + await game.move.selectEnemyMove(MoveId.ABSORB); await game.phaseInterceptor.to("TurnEndPhase"); - game.move.select(Moves.MIRROR_MOVE); - await game.move.selectEnemyMove(Moves.LAST_RESORT); + game.move.select(MoveId.MIRROR_MOVE); + await game.move.selectEnemyMove(MoveId.LAST_RESORT); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/moves/last_respects.test.ts b/test/moves/last_respects.test.ts index e271a5dec62..96a8b5955d0 100644 --- a/test/moves/last_respects.test.ts +++ b/test/moves/last_respects.test.ts @@ -1,7 +1,7 @@ -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { BattlerIndex } from "#app/battle"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; import GameManager from "#test/testUtils/gameManager"; import { allMoves } from "#app/data/data-lists"; import type Move from "#app/data/moves/move"; @@ -28,16 +28,16 @@ describe("Moves - Last Respects", () => { beforeEach(() => { game = new GameManager(phaserGame); - move = allMoves[Moves.LAST_RESPECTS]; + move = allMoves[MoveId.LAST_RESPECTS]; basePower = move.power; game.override .battleStyle("single") .disableCrits() - .moveset([Moves.LAST_RESPECTS, Moves.EXPLOSION, Moves.LUNAR_DANCE]) - .ability(Abilities.BALL_FETCH) - .enemyAbility(Abilities.BALL_FETCH) - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.SPLASH) + .moveset([MoveId.LAST_RESPECTS, MoveId.EXPLOSION, MoveId.LUNAR_DANCE]) + .ability(AbilityId.BALL_FETCH) + .enemyAbility(AbilityId.BALL_FETCH) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH) .startingLevel(1) .enemyLevel(100); @@ -45,12 +45,12 @@ describe("Moves - Last Respects", () => { }); it("should have 150 power if 2 allies faint before using move", async () => { - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); /** * Bulbasur faints once */ - game.move.select(Moves.EXPLOSION); + game.move.select(MoveId.EXPLOSION); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -58,12 +58,12 @@ describe("Moves - Last Respects", () => { /** * Charmander faints once */ - game.move.select(Moves.EXPLOSION); + game.move.select(MoveId.EXPLOSION); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); game.doSelectPartyPokemon(2); await game.toNextTurn(); - game.move.select(Moves.LAST_RESPECTS); + game.move.select(MoveId.LAST_RESPECTS); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase); @@ -71,12 +71,12 @@ describe("Moves - Last Respects", () => { }); it("should have 200 power if an ally fainted twice and another one once", async () => { - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); /** * Bulbasur faints once */ - game.move.select(Moves.EXPLOSION); + game.move.select(MoveId.EXPLOSION); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -85,7 +85,7 @@ describe("Moves - Last Respects", () => { * Charmander faints once */ game.doRevivePokemon(1); - game.move.select(Moves.EXPLOSION); + game.move.select(MoveId.EXPLOSION); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -93,12 +93,12 @@ describe("Moves - Last Respects", () => { /** * Bulbasur faints twice */ - game.move.select(Moves.EXPLOSION); + game.move.select(MoveId.EXPLOSION); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); game.doSelectPartyPokemon(2); await game.toNextTurn(); - game.move.select(Moves.LAST_RESPECTS); + game.move.select(MoveId.LAST_RESPECTS); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase); @@ -107,18 +107,18 @@ describe("Moves - Last Respects", () => { it("should maintain its power for the player during the next battle if it is within the same arena encounter", async () => { game.override - .enemySpecies(Species.MAGIKARP) + .enemySpecies(SpeciesId.MAGIKARP) .startingWave(1) .enemyLevel(1) .startingLevel(100) - .enemyMoveset(Moves.SPLASH); + .enemyMoveset(MoveId.SPLASH); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); /** * The first Pokemon faints and another Pokemon in the party is selected. */ - game.move.select(Moves.LUNAR_DANCE); + game.move.select(MoveId.LUNAR_DANCE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -126,12 +126,12 @@ describe("Moves - Last Respects", () => { /** * Enemy Pokemon faints and new wave is entered. */ - game.move.select(Moves.LAST_RESPECTS); + game.move.select(MoveId.LAST_RESPECTS); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextWave(); expect(game.scene.arena.playerFaints).toBe(1); - game.move.select(Moves.LAST_RESPECTS); + game.move.select(MoveId.LAST_RESPECTS); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); expect(move.calculateBattlePower).toHaveLastReturnedWith(basePower + 1 * 50); @@ -139,19 +139,19 @@ describe("Moves - Last Respects", () => { it("should reset enemyFaints count on progressing to the next wave.", async () => { game.override - .enemySpecies(Species.MAGIKARP) + .enemySpecies(SpeciesId.MAGIKARP) .startingWave(1) .enemyLevel(1) .startingLevel(100) - .enemyMoveset(Moves.LAST_RESPECTS) - .moveset([Moves.LUNAR_DANCE, Moves.LAST_RESPECTS, Moves.SPLASH]); + .enemyMoveset(MoveId.LAST_RESPECTS) + .moveset([MoveId.LUNAR_DANCE, MoveId.LAST_RESPECTS, MoveId.SPLASH]); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); /** * The first Pokemon faints and another Pokemon in the party is selected. */ - game.move.select(Moves.LUNAR_DANCE); + game.move.select(MoveId.LUNAR_DANCE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); game.doSelectPartyPokemon(1); await game.toNextTurn(); @@ -159,12 +159,12 @@ describe("Moves - Last Respects", () => { /** * Enemy Pokemon faints and new wave is entered. */ - game.move.select(Moves.LAST_RESPECTS); + game.move.select(MoveId.LAST_RESPECTS); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextWave(); expect(game.scene.currentBattle.enemyFaints).toBe(0); - game.move.select(Moves.LAST_RESPECTS); + game.move.select(MoveId.LAST_RESPECTS); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -176,20 +176,20 @@ describe("Moves - Last Respects", () => { }); it("should reset playerFaints count if we enter new trainer battle", async () => { - game.override.enemySpecies(Species.MAGIKARP).startingWave(4).enemyLevel(1).startingLevel(100); + game.override.enemySpecies(SpeciesId.MAGIKARP).startingWave(4).enemyLevel(1).startingLevel(100); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); - game.move.select(Moves.LUNAR_DANCE); + game.move.select(MoveId.LUNAR_DANCE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); game.doSelectPartyPokemon(1); await game.toNextTurn(); - game.move.select(Moves.LAST_RESPECTS); + game.move.select(MoveId.LAST_RESPECTS); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextWave(); - game.move.select(Moves.LAST_RESPECTS); + game.move.select(MoveId.LAST_RESPECTS); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase", false); @@ -197,20 +197,20 @@ describe("Moves - Last Respects", () => { }); it("should reset playerFaints count if we enter new biome", async () => { - game.override.enemySpecies(Species.MAGIKARP).startingWave(10).enemyLevel(1).startingLevel(100); + game.override.enemySpecies(SpeciesId.MAGIKARP).startingWave(10).enemyLevel(1).startingLevel(100); - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); - game.move.select(Moves.LUNAR_DANCE); + game.move.select(MoveId.LUNAR_DANCE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); game.doSelectPartyPokemon(1); await game.toNextTurn(); - game.move.select(Moves.LAST_RESPECTS); + game.move.select(MoveId.LAST_RESPECTS); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextWave(); - game.move.select(Moves.LAST_RESPECTS); + game.move.select(MoveId.LAST_RESPECTS); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase", false); diff --git a/test/moves/light_screen.test.ts b/test/moves/light_screen.test.ts index 6ce51da68cd..4230790e688 100644 --- a/test/moves/light_screen.test.ts +++ b/test/moves/light_screen.test.ts @@ -3,13 +3,13 @@ import { ArenaTagSide } from "#app/data/arena-tag"; import type Move from "#app/data/moves/move"; import { CritOnlyAttr } from "#app/data/moves/move"; import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import type Pokemon from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { NumberHolder } from "#app/utils/common"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -37,17 +37,17 @@ describe("Moves - Light Screen", () => { globalScene = game.scene; game.override .battleStyle("single") - .ability(Abilities.BALL_FETCH) - .moveset([Moves.ABSORB, Moves.DAZZLING_GLEAM, Moves.TACKLE]) + .ability(AbilityId.BALL_FETCH) + .moveset([MoveId.ABSORB, MoveId.DAZZLING_GLEAM, MoveId.TACKLE]) .enemyLevel(100) - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.LIGHT_SCREEN) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.LIGHT_SCREEN) .disableCrits(); }); it("reduces damage of special attacks by half in a single battle", async () => { - const moveToUse = Moves.ABSORB; - await game.classicMode.startBattle([Species.SHUCKLE]); + const moveToUse = MoveId.ABSORB; + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); game.move.select(moveToUse); @@ -65,8 +65,8 @@ describe("Moves - Light Screen", () => { it("reduces damage of special attacks by a third in a double battle", async () => { game.override.battleStyle("double"); - const moveToUse = Moves.DAZZLING_GLEAM; - await game.classicMode.startBattle([Species.SHUCKLE, Species.SHUCKLE]); + const moveToUse = MoveId.DAZZLING_GLEAM; + await game.classicMode.startBattle([SpeciesId.SHUCKLE, SpeciesId.SHUCKLE]); game.move.select(moveToUse); game.move.select(moveToUse, 1); @@ -82,8 +82,8 @@ describe("Moves - Light Screen", () => { }); it("does not affect physical attacks", async () => { - const moveToUse = Moves.TACKLE; - await game.classicMode.startBattle([Species.SHUCKLE]); + const moveToUse = MoveId.TACKLE; + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); game.move.select(moveToUse); @@ -98,10 +98,10 @@ describe("Moves - Light Screen", () => { }); it("does not affect critical hits", async () => { - game.override.moveset([Moves.FROST_BREATH]); - const moveToUse = Moves.FROST_BREATH; - vi.spyOn(allMoves[Moves.FROST_BREATH], "accuracy", "get").mockReturnValue(100); - await game.classicMode.startBattle([Species.SHUCKLE]); + game.override.moveset([MoveId.FROST_BREATH]); + const moveToUse = MoveId.FROST_BREATH; + vi.spyOn(allMoves[MoveId.FROST_BREATH], "accuracy", "get").mockReturnValue(100); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); game.move.select(moveToUse); await game.phaseInterceptor.to(TurnEndPhase); @@ -116,7 +116,7 @@ describe("Moves - Light Screen", () => { }); /** - * Calculates the damage of a move multiplied by screen's multiplier, Light Screen in this case {@linkcode Moves.LIGHT_SCREEN}. + * Calculates the damage of a move multiplied by screen's multiplier, Light Screen in this case {@linkcode MoveId.LIGHT_SCREEN}. * Please note this does not consider other damage calculations except the screen multiplier. * * @param defender - The defending Pokémon. diff --git a/test/moves/lucky_chant.test.ts b/test/moves/lucky_chant.test.ts index 9fa6ff43eab..58944027398 100644 --- a/test/moves/lucky_chant.test.ts +++ b/test/moves/lucky_chant.test.ts @@ -1,7 +1,7 @@ -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { BerryPhase } from "#app/phases/berry-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -26,26 +26,26 @@ describe("Moves - Lucky Chant", () => { game.override .battleStyle("single") - .moveset([Moves.LUCKY_CHANT, Moves.SPLASH, Moves.FOLLOW_ME]) - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.INSOMNIA) - .enemyMoveset([Moves.FLOWER_TRICK]) + .moveset([MoveId.LUCKY_CHANT, MoveId.SPLASH, MoveId.FOLLOW_ME]) + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.INSOMNIA) + .enemyMoveset([MoveId.FLOWER_TRICK]) .startingLevel(100) .enemyLevel(100); }); it("should prevent critical hits from moves", async () => { - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); const firstTurnDamage = playerPokemon.getMaxHp() - playerPokemon.hp; - game.move.select(Moves.LUCKY_CHANT); + game.move.select(MoveId.LUCKY_CHANT); await game.phaseInterceptor.to(BerryPhase, false); @@ -56,19 +56,19 @@ describe("Moves - Lucky Chant", () => { it("should prevent critical hits against the user's ally", async () => { game.override.battleStyle("double"); - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const playerPokemon = game.scene.getPlayerField(); - game.move.select(Moves.FOLLOW_ME); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.FOLLOW_ME); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); const firstTurnDamage = playerPokemon[0].getMaxHp() - playerPokemon[0].hp; - game.move.select(Moves.FOLLOW_ME); - game.move.select(Moves.LUCKY_CHANT, 1); + game.move.select(MoveId.FOLLOW_ME); + game.move.select(MoveId.LUCKY_CHANT, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -77,22 +77,22 @@ describe("Moves - Lucky Chant", () => { }); it("should prevent critical hits from field effects", async () => { - game.override.enemyMoveset([Moves.TACKLE]); + game.override.enemyMoveset([MoveId.TACKLE]); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - enemyPokemon.addTag(BattlerTagType.ALWAYS_CRIT, 2, Moves.NONE, 0); + enemyPokemon.addTag(BattlerTagType.ALWAYS_CRIT, 2, MoveId.NONE, 0); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); const firstTurnDamage = playerPokemon.getMaxHp() - playerPokemon.hp; - game.move.select(Moves.LUCKY_CHANT); + game.move.select(MoveId.LUCKY_CHANT); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/lunar_blessing.test.ts b/test/moves/lunar_blessing.test.ts index 5021a47ff7f..59d0c662859 100644 --- a/test/moves/lunar_blessing.test.ts +++ b/test/moves/lunar_blessing.test.ts @@ -1,8 +1,8 @@ import { StatusEffect } from "#app/enums/status-effect"; import { CommandPhase } from "#app/phases/command-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -24,16 +24,16 @@ describe("Moves - Lunar Blessing", () => { game.override.battleStyle("double"); - game.override.enemySpecies(Species.SHUCKLE); - game.override.enemyMoveset(Moves.SPLASH); - game.override.enemyAbility(Abilities.BALL_FETCH); + game.override.enemySpecies(SpeciesId.SHUCKLE); + game.override.enemyMoveset(MoveId.SPLASH); + game.override.enemyAbility(AbilityId.BALL_FETCH); - game.override.moveset([Moves.LUNAR_BLESSING, Moves.SPLASH]); - game.override.ability(Abilities.BALL_FETCH); + game.override.moveset([MoveId.LUNAR_BLESSING, MoveId.SPLASH]); + game.override.ability(AbilityId.BALL_FETCH); }); it("should restore 25% HP of the user and its ally", async () => { - await game.classicMode.startBattle([Species.RATTATA, Species.RATTATA]); + await game.classicMode.startBattle([SpeciesId.RATTATA, SpeciesId.RATTATA]); const [leftPlayer, rightPlayer] = game.scene.getPlayerField(); vi.spyOn(leftPlayer, "getMaxHp").mockReturnValue(100); @@ -47,9 +47,9 @@ describe("Moves - Lunar Blessing", () => { vi.spyOn(leftPlayer, "heal"); vi.spyOn(rightPlayer, "heal"); - game.move.select(Moves.LUNAR_BLESSING, 0); + game.move.select(MoveId.LUNAR_BLESSING, 0); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(leftPlayer.heal).toHaveBeenCalledOnce(); @@ -61,15 +61,15 @@ describe("Moves - Lunar Blessing", () => { it("should cure status effect of the user and its ally", async () => { game.override.statusEffect(StatusEffect.BURN); - await game.classicMode.startBattle([Species.RATTATA, Species.RATTATA]); + await game.classicMode.startBattle([SpeciesId.RATTATA, SpeciesId.RATTATA]); const [leftPlayer, rightPlayer] = game.scene.getPlayerField(); vi.spyOn(leftPlayer, "resetStatus"); vi.spyOn(rightPlayer, "resetStatus"); - game.move.select(Moves.LUNAR_BLESSING, 0); + game.move.select(MoveId.LUNAR_BLESSING, 0); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(leftPlayer.resetStatus).toHaveBeenCalledOnce(); diff --git a/test/moves/lunar_dance.test.ts b/test/moves/lunar_dance.test.ts index 30abe765291..aea1e31b616 100644 --- a/test/moves/lunar_dance.test.ts +++ b/test/moves/lunar_dance.test.ts @@ -1,8 +1,8 @@ import { StatusEffect } from "#app/enums/status-effect"; import { CommandPhase } from "#app/phases/command-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; @@ -26,20 +26,20 @@ describe("Moves - Lunar Dance", () => { game.override .statusEffect(StatusEffect.BURN) .battleStyle("double") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should full restore HP, PP and status of switched in pokemon, then fail second use because no remaining backup pokemon in party", async () => { - await game.classicMode.startBattle([Species.BULBASAUR, Species.ODDISH, Species.RATTATA]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.ODDISH, SpeciesId.RATTATA]); const [bulbasaur, oddish, rattata] = game.scene.getPlayerParty(); - game.move.changeMoveset(bulbasaur, [Moves.LUNAR_DANCE, Moves.SPLASH]); - game.move.changeMoveset(oddish, [Moves.LUNAR_DANCE, Moves.SPLASH]); - game.move.changeMoveset(rattata, [Moves.LUNAR_DANCE, Moves.SPLASH]); + game.move.changeMoveset(bulbasaur, [MoveId.LUNAR_DANCE, MoveId.SPLASH]); + game.move.changeMoveset(oddish, [MoveId.LUNAR_DANCE, MoveId.SPLASH]); + game.move.changeMoveset(rattata, [MoveId.LUNAR_DANCE, MoveId.SPLASH]); - game.move.select(Moves.SPLASH, 0); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 0); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(CommandPhase); await game.toNextTurn(); @@ -50,12 +50,12 @@ describe("Moves - Lunar Dance", () => { // Switch out Bulbasaur for Rattata so we can swtich bulbasaur back in with lunar dance game.doSwitchPokemon(2); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(CommandPhase); await game.toNextTurn(); - game.move.select(Moves.SPLASH, 0); - game.move.select(Moves.LUNAR_DANCE); + game.move.select(MoveId.SPLASH, 0); + game.move.select(MoveId.LUNAR_DANCE); game.doSelectPartyPokemon(2); await game.phaseInterceptor.to("SwitchPhase", false); await game.toNextTurn(); @@ -65,8 +65,8 @@ describe("Moves - Lunar Dance", () => { expect(bulbasaur.moveset[1]?.ppUsed).toBe(0); expect(bulbasaur.isFullHp()).toBe(true); - game.move.select(Moves.SPLASH, 0); - game.move.select(Moves.LUNAR_DANCE); + game.move.select(MoveId.SPLASH, 0); + game.move.select(MoveId.LUNAR_DANCE); await game.phaseInterceptor.to(CommandPhase); await game.toNextTurn(); diff --git a/test/moves/magic_coat.test.ts b/test/moves/magic_coat.test.ts index ad0bd47d7cf..4f9e3977305 100644 --- a/test/moves/magic_coat.test.ts +++ b/test/moves/magic_coat.test.ts @@ -6,9 +6,9 @@ import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Stat } from "#app/enums/stat"; import { StatusEffect } from "#app/enums/status-effect"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -29,65 +29,65 @@ describe("Moves - Magic Coat", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .ability(Abilities.BALL_FETCH) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.MAGIC_COAT); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.MAGIC_COAT); }); it("should fail if the user goes last in the turn", async () => { - game.override.moveset([Moves.PROTECT]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.PROTECT]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.PROTECT); + game.move.select(MoveId.PROTECT); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should fail if called again in the same turn due to moves like instruct", async () => { - game.override.moveset([Moves.INSTRUCT]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.INSTRUCT]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.INSTRUCT); + game.move.select(MoveId.INSTRUCT); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should not reflect moves used on the next turn", async () => { - game.override.moveset([Moves.GROWL, Moves.SPLASH]); - game.override.enemyMoveset([Moves.MAGIC_COAT, Moves.SPLASH]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.GROWL, MoveId.SPLASH]); + game.override.enemyMoveset([MoveId.MAGIC_COAT, MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); // turn 1 - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.MAGIC_COAT); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.MAGIC_COAT); await game.toNextTurn(); // turn 2 - game.move.select(Moves.GROWL); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.GROWL); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(-1); }); it("should reflect basic status moves", async () => { - game.override.moveset([Moves.GROWL]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.GROWL]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(-1); }); it("should individually bounce back multi-target moves when used by both targets in doubles", async () => { game.override.battleStyle("double"); - game.override.moveset([Moves.GROWL, Moves.SPLASH]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + game.override.moveset([MoveId.GROWL, MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); - game.move.select(Moves.GROWL, 0); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.GROWL, 0); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); const user = game.scene.getPlayerField()[0]; @@ -96,25 +96,25 @@ describe("Moves - Magic Coat", () => { it("should bounce back a spread status move against both pokemon", async () => { game.override.battleStyle("double"); - game.override.moveset([Moves.GROWL, Moves.SPLASH]); - game.override.enemyMoveset([Moves.SPLASH, Moves.MAGIC_COAT]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + game.override.moveset([MoveId.GROWL, MoveId.SPLASH]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.MAGIC_COAT]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); - game.move.select(Moves.GROWL, 0); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.MAGIC_COAT); + game.move.select(MoveId.GROWL, 0); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.MAGIC_COAT); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerField().every(p => p.getStatStage(Stat.ATK) === -1)).toBeTruthy(); }); it("should still bounce back a move that would otherwise fail", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); game.scene.getEnemyPokemon()?.setStatStage(Stat.ATK, -6); - game.override.moveset([Moves.GROWL]); + game.override.moveset([MoveId.GROWL]); - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(-1); @@ -122,15 +122,15 @@ describe("Moves - Magic Coat", () => { it("should not bounce back a move that was just bounced", async () => { game.override.battleStyle("double"); - game.override.ability(Abilities.MAGIC_BOUNCE); - game.override.moveset([Moves.GROWL, Moves.MAGIC_COAT]); - game.override.enemyMoveset([Moves.SPLASH, Moves.MAGIC_COAT]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); + game.override.ability(AbilityId.MAGIC_BOUNCE); + game.override.moveset([MoveId.GROWL, MoveId.MAGIC_COAT]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.MAGIC_COAT]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); - game.move.select(Moves.MAGIC_COAT, 0); - game.move.select(Moves.GROWL, 1); - await game.move.selectEnemyMove(Moves.MAGIC_COAT); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.MAGIC_COAT, 0); + game.move.select(MoveId.GROWL, 1); + await game.move.selectEnemyMove(MoveId.MAGIC_COAT); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyField()[0].getStatStage(Stat.ATK)).toBe(0); @@ -138,20 +138,20 @@ describe("Moves - Magic Coat", () => { // todo while Mirror Armor is not implemented it.todo("should receive the stat change after reflecting a move back to a mirror armor user", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(-1); }); it("should still bounce back a move from a mold breaker user", async () => { - game.override.ability(Abilities.MOLD_BREAKER); - game.override.moveset([Moves.GROWL]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.ability(AbilityId.MOLD_BREAKER); + game.override.moveset([MoveId.GROWL]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(0); @@ -160,10 +160,10 @@ describe("Moves - Magic Coat", () => { it("should only bounce spikes back once when both targets use magic coat in doubles", async () => { game.override.battleStyle("double"); - await game.classicMode.startBattle([Species.MAGIKARP]); - game.override.moveset([Moves.SPIKES]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + game.override.moveset([MoveId.SPIKES]); - game.move.select(Moves.SPIKES); + game.move.select(MoveId.SPIKES); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.PLAYER)!["layers"]).toBe(1); @@ -171,11 +171,11 @@ describe("Moves - Magic Coat", () => { }); it("should not bounce back curse", async () => { - game.override.starterSpecies(Species.GASTLY); - await game.classicMode.startBattle([Species.GASTLY]); - game.override.moveset([Moves.CURSE]); + game.override.starterSpecies(SpeciesId.GASTLY); + await game.classicMode.startBattle([SpeciesId.GASTLY]); + game.override.moveset([MoveId.CURSE]); - game.move.select(Moves.CURSE); + game.move.select(MoveId.CURSE); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.getTag(BattlerTagType.CURSED)).toBeDefined(); @@ -183,40 +183,40 @@ describe("Moves - Magic Coat", () => { // TODO: encore is failing if the last move was virtual. it.todo("should not cause the bounced move to count for encore", async () => { - game.override.moveset([Moves.GROWL, Moves.ENCORE]); - game.override.enemyMoveset([Moves.MAGIC_COAT, Moves.TACKLE]); - game.override.enemyAbility(Abilities.MAGIC_BOUNCE); + game.override.moveset([MoveId.GROWL, MoveId.ENCORE]); + game.override.enemyMoveset([MoveId.MAGIC_COAT, MoveId.TACKLE]); + game.override.enemyAbility(AbilityId.MAGIC_BOUNCE); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemyPokemon = game.scene.getEnemyPokemon()!; // turn 1 - game.move.select(Moves.GROWL); - await game.move.selectEnemyMove(Moves.MAGIC_COAT); + game.move.select(MoveId.GROWL); + await game.move.selectEnemyMove(MoveId.MAGIC_COAT); await game.toNextTurn(); // turn 2 - game.move.select(Moves.ENCORE); - await game.move.selectEnemyMove(Moves.TACKLE); + game.move.select(MoveId.ENCORE); + await game.move.selectEnemyMove(MoveId.TACKLE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase"); - expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(Moves.TACKLE); - expect(enemyPokemon.getLastXMoves()[0].move).toBe(Moves.TACKLE); + expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(MoveId.TACKLE); + expect(enemyPokemon.getLastXMoves()[0].move).toBe(MoveId.TACKLE); }); // TODO: stomping tantrum should consider moves that were bounced. it.todo("should cause stomping tantrum to double in power when the last move was bounced", async () => { game.override.battleStyle("single"); - await game.classicMode.startBattle([Species.MAGIKARP]); - game.override.moveset([Moves.STOMPING_TANTRUM, Moves.CHARM]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + game.override.moveset([MoveId.STOMPING_TANTRUM, MoveId.CHARM]); - const stomping_tantrum = allMoves[Moves.STOMPING_TANTRUM]; + const stomping_tantrum = allMoves[MoveId.STOMPING_TANTRUM]; vi.spyOn(stomping_tantrum, "calculateBattlePower"); - game.move.select(Moves.CHARM); + game.move.select(MoveId.CHARM); await game.toNextTurn(); - game.move.select(Moves.STOMPING_TANTRUM); + game.move.select(MoveId.STOMPING_TANTRUM); await game.phaseInterceptor.to("BerryPhase"); expect(stomping_tantrum.calculateBattlePower).toHaveReturnedWith(150); }); @@ -225,15 +225,15 @@ describe("Moves - Magic Coat", () => { it.todo( "should properly cause the enemy's stomping tantrum to be doubled in power after bouncing and failing", async () => { - game.override.enemyMoveset([Moves.STOMPING_TANTRUM, Moves.SPLASH, Moves.CHARM]); - await game.classicMode.startBattle([Species.BULBASAUR]); + game.override.enemyMoveset([MoveId.STOMPING_TANTRUM, MoveId.SPLASH, MoveId.CHARM]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); - const stomping_tantrum = allMoves[Moves.STOMPING_TANTRUM]; + const stomping_tantrum = allMoves[MoveId.STOMPING_TANTRUM]; const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(stomping_tantrum, "calculateBattlePower"); - game.move.select(Moves.SPORE); - await game.move.selectEnemyMove(Moves.CHARM); + game.move.select(MoveId.SPORE); + await game.move.selectEnemyMove(MoveId.CHARM); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.getLastXMoves(1)[0].result).toBe("success"); @@ -241,48 +241,48 @@ describe("Moves - Magic Coat", () => { expect(stomping_tantrum.calculateBattlePower).toHaveReturnedWith(75); await game.toNextTurn(); - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); expect(stomping_tantrum.calculateBattlePower).toHaveReturnedWith(75); }, ); it("should respect immunities when bouncing a move", async () => { - vi.spyOn(allMoves[Moves.THUNDER_WAVE], "accuracy", "get").mockReturnValue(100); - game.override.moveset([Moves.THUNDER_WAVE, Moves.GROWL]); - game.override.ability(Abilities.SOUNDPROOF); - await game.classicMode.startBattle([Species.PHANPY]); + vi.spyOn(allMoves[MoveId.THUNDER_WAVE], "accuracy", "get").mockReturnValue(100); + game.override.moveset([MoveId.THUNDER_WAVE, MoveId.GROWL]); + game.override.ability(AbilityId.SOUNDPROOF); + await game.classicMode.startBattle([SpeciesId.PHANPY]); // Turn 1 - thunder wave immunity test - game.move.select(Moves.THUNDER_WAVE); + game.move.select(MoveId.THUNDER_WAVE); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); // Turn 2 - soundproof immunity test - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(0); }); it("should bounce back a move before the accuracy check", async () => { - game.override.moveset([Moves.SPORE]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.SPORE]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const attacker = game.scene.getPlayerPokemon()!; vi.spyOn(attacker, "getAccuracyMultiplier").mockReturnValue(0.0); - game.move.select(Moves.SPORE); + game.move.select(MoveId.SPORE); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.status?.effect).toBe(StatusEffect.SLEEP); }); it("should take the accuracy of the magic bounce user into account", async () => { - game.override.moveset([Moves.SPORE]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.SPORE]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const opponent = game.scene.getEnemyPokemon()!; vi.spyOn(opponent, "getAccuracyMultiplier").mockReturnValue(0); - game.move.select(Moves.SPORE); + game.move.select(MoveId.SPORE); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); }); diff --git a/test/moves/magnet_rise.test.ts b/test/moves/magnet_rise.test.ts index 5d5ae91c4fe..16f449899ef 100644 --- a/test/moves/magnet_rise.test.ts +++ b/test/moves/magnet_rise.test.ts @@ -1,7 +1,7 @@ import { CommandPhase } from "#app/phases/command-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -9,7 +9,7 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Magnet Rise", () => { let phaserGame: Phaser.Game; let game: GameManager; - const moveToUse = Moves.MAGNET_RISE; + const moveToUse = MoveId.MAGNET_RISE; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -25,12 +25,12 @@ describe("Moves - Magnet Rise", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .starterSpecies(Species.MAGNEZONE) - .enemySpecies(Species.RATTATA) - .enemyMoveset(Moves.DRILL_RUN) + .starterSpecies(SpeciesId.MAGNEZONE) + .enemySpecies(SpeciesId.RATTATA) + .enemyMoveset(MoveId.DRILL_RUN) .disableCrits() .enemyLevel(1) - .moveset([moveToUse, Moves.SPLASH, Moves.GRAVITY, Moves.BATON_PASS]); + .moveset([moveToUse, MoveId.SPLASH, MoveId.GRAVITY, MoveId.BATON_PASS]); }); it("MAGNET RISE", async () => { @@ -53,7 +53,7 @@ describe("Moves - Magnet Rise", () => { let finalHp = game.scene.getPlayerParty()[0].hp; let hpLost = finalHp - startingHp; expect(hpLost).toBe(0); - game.move.select(Moves.GRAVITY); + game.move.select(MoveId.GRAVITY); await game.phaseInterceptor.to(TurnEndPhase); finalHp = game.scene.getPlayerParty()[0].hp; hpLost = finalHp - startingHp; diff --git a/test/moves/make_it_rain.test.ts b/test/moves/make_it_rain.test.ts index b897304662d..0089dfb642d 100644 --- a/test/moves/make_it_rain.test.ts +++ b/test/moves/make_it_rain.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,21 +25,21 @@ describe("Moves - Make It Rain", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("double"); - game.override.moveset([Moves.MAKE_IT_RAIN, Moves.SPLASH]); - game.override.enemySpecies(Species.SNORLAX); - game.override.enemyAbility(Abilities.INSOMNIA); - game.override.enemyMoveset(Moves.SPLASH); + game.override.moveset([MoveId.MAKE_IT_RAIN, MoveId.SPLASH]); + game.override.enemySpecies(SpeciesId.SNORLAX); + game.override.enemyAbility(AbilityId.INSOMNIA); + game.override.enemyMoveset(MoveId.SPLASH); game.override.startingLevel(100); game.override.enemyLevel(100); }); it("should only lower SPATK stat stage by 1 once in a double battle", async () => { - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.MAKE_IT_RAIN); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.MAKE_IT_RAIN); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(MoveEndPhase); @@ -50,12 +50,12 @@ describe("Moves - Make It Rain", () => { game.override.enemyLevel(1); // ensures the enemy will faint game.override.battleStyle("single"); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.MAKE_IT_RAIN); + game.move.select(MoveId.MAKE_IT_RAIN); await game.phaseInterceptor.to(StatStageChangePhase); @@ -66,13 +66,13 @@ describe("Moves - Make It Rain", () => { it("should reduce Sp. Atk. once after KOing two enemies", async () => { game.override.enemyLevel(1); // ensures the enemy will faint - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.MAKE_IT_RAIN); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.MAKE_IT_RAIN); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(StatStageChangePhase); @@ -81,12 +81,12 @@ describe("Moves - Make It Rain", () => { }); it("should lower SPATK stat stage by 1 if it only hits the second target", async () => { - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.MAKE_IT_RAIN); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.MAKE_IT_RAIN); + game.move.select(MoveId.SPLASH, 1); // Make Make It Rain miss the first target await game.move.forceMiss(true); diff --git a/test/moves/mat_block.test.ts b/test/moves/mat_block.test.ts index 3e7958d665b..c512503c9c4 100644 --- a/test/moves/mat_block.test.ts +++ b/test/moves/mat_block.test.ts @@ -1,9 +1,9 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { Stat } from "#enums/stat"; import { BerryPhase } from "#app/phases/berry-phase"; import { CommandPhase } from "#app/phases/command-phase"; @@ -28,26 +28,26 @@ describe("Moves - Mat Block", () => { game.override.battleStyle("double"); - game.override.moveset([Moves.MAT_BLOCK, Moves.SPLASH]); + game.override.moveset([MoveId.MAT_BLOCK, MoveId.SPLASH]); - game.override.enemySpecies(Species.SNORLAX); - game.override.enemyMoveset([Moves.TACKLE]); - game.override.enemyAbility(Abilities.INSOMNIA); + game.override.enemySpecies(SpeciesId.SNORLAX); + game.override.enemyMoveset([MoveId.TACKLE]); + game.override.enemyAbility(AbilityId.INSOMNIA); game.override.startingLevel(100); game.override.enemyLevel(100); }); test("should protect the user and allies from attack moves", async () => { - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); - game.move.select(Moves.MAT_BLOCK); + game.move.select(MoveId.MAT_BLOCK); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -55,17 +55,17 @@ describe("Moves - Mat Block", () => { }); test("should not protect the user and allies from status moves", async () => { - game.override.enemyMoveset([Moves.GROWL]); + game.override.enemyMoveset([MoveId.GROWL]); - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); - game.move.select(Moves.MAT_BLOCK); + game.move.select(MoveId.MAT_BLOCK); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -73,22 +73,22 @@ describe("Moves - Mat Block", () => { }); test("should fail when used after the first turn", async () => { - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); const leadPokemon = game.scene.getPlayerField(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); const leadStartingHp = leadPokemon.map(p => p.hp); await game.phaseInterceptor.to(CommandPhase, false); - game.move.select(Moves.MAT_BLOCK); + game.move.select(MoveId.MAT_BLOCK); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.MAT_BLOCK, 1); + game.move.select(MoveId.MAT_BLOCK, 1); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/metal_burst.test.ts b/test/moves/metal_burst.test.ts index cadcbe07a0d..0222dd222be 100644 --- a/test/moves/metal_burst.test.ts +++ b/test/moves/metal_burst.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,26 +24,26 @@ describe("Moves - Metal Burst", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.METAL_BURST, Moves.FISSURE, Moves.PRECIPICE_BLADES]) - .ability(Abilities.PURE_POWER) + .moveset([MoveId.METAL_BURST, MoveId.FISSURE, MoveId.PRECIPICE_BLADES]) + .ability(AbilityId.PURE_POWER) .startingLevel(10) .battleStyle("double") .disableCrits() - .enemySpecies(Species.PICHU) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.TACKLE); + .enemySpecies(SpeciesId.PICHU) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.TACKLE); }); it("should redirect target if intended target faints", async () => { - await game.classicMode.startBattle([Species.FEEBAS, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.FEEBAS]); const [, enemy2] = game.scene.getEnemyField(); - game.move.select(Moves.METAL_BURST); - game.move.select(Moves.FISSURE, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.METAL_BURST); + game.move.select(MoveId.FISSURE, 1, BattlerIndex.ENEMY); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER_2); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2]); @@ -56,15 +56,15 @@ describe("Moves - Metal Burst", () => { }); it("should not crash if both opponents faint before the move is used", async () => { - await game.classicMode.startBattle([Species.FEEBAS, Species.ARCEUS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.ARCEUS]); const [enemy1, enemy2] = game.scene.getEnemyField(); - game.move.select(Moves.METAL_BURST); - game.move.select(Moves.PRECIPICE_BLADES, 1); + game.move.select(MoveId.METAL_BURST); + game.move.select(MoveId.PRECIPICE_BLADES, 1); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER_2); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2]); diff --git a/test/moves/metronome.test.ts b/test/moves/metronome.test.ts index 75b4b7190e6..0e6db09ae5c 100644 --- a/test/moves/metronome.test.ts +++ b/test/moves/metronome.test.ts @@ -1,11 +1,11 @@ import { RechargingTag, SemiInvulnerableTag } from "#app/data/battler-tags"; import { RandomMoveAttr } from "#app/data/moves/move"; import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { Stat } from "#app/enums/stat"; import { CommandPhase } from "#app/phases/command-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; @@ -27,26 +27,26 @@ describe("Moves - Metronome", () => { }); beforeEach(() => { - randomMoveAttr = allMoves[Moves.METRONOME].getAttrs(RandomMoveAttr)[0]; + randomMoveAttr = allMoves[MoveId.METRONOME].getAttrs(RandomMoveAttr)[0]; game = new GameManager(phaserGame); game.override - .moveset([Moves.METRONOME, Moves.SPLASH]) + .moveset([MoveId.METRONOME, MoveId.SPLASH]) .battleStyle("single") .startingLevel(100) - .starterSpecies(Species.REGIELEKI) + .starterSpecies(SpeciesId.REGIELEKI) .enemyLevel(100) - .enemySpecies(Species.SHUCKLE) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH); + .enemySpecies(SpeciesId.SHUCKLE) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH); }); it("should have one semi-invulnerable turn and deal damage on the second turn when a semi-invulnerable move is called", async () => { await game.classicMode.startBattle(); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(Moves.DIVE); + vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(MoveId.DIVE); - game.move.select(Moves.METRONOME); + game.move.select(MoveId.METRONOME); await game.toNextTurn(); expect(player.getTag(SemiInvulnerableTag)).toBeTruthy(); @@ -59,9 +59,9 @@ describe("Moves - Metronome", () => { it("should apply secondary effects of a move", async () => { await game.classicMode.startBattle(); const player = game.scene.getPlayerPokemon()!; - vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(Moves.WOOD_HAMMER); + vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(MoveId.WOOD_HAMMER); - game.move.select(Moves.METRONOME); + game.move.select(MoveId.METRONOME); await game.toNextTurn(); expect(player.isFullHp()).toBeFalsy(); @@ -70,10 +70,10 @@ describe("Moves - Metronome", () => { it("should recharge after using recharge move", async () => { await game.classicMode.startBattle(); const player = game.scene.getPlayerPokemon()!; - vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(Moves.HYPER_BEAM); - vi.spyOn(allMoves[Moves.HYPER_BEAM], "accuracy", "get").mockReturnValue(100); + vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(MoveId.HYPER_BEAM); + vi.spyOn(allMoves[MoveId.HYPER_BEAM], "accuracy", "get").mockReturnValue(100); - game.move.select(Moves.METRONOME); + game.move.select(MoveId.METRONOME); await game.toNextTurn(); expect(player.getTag(RechargingTag)).toBeTruthy(); @@ -81,14 +81,14 @@ describe("Moves - Metronome", () => { it("should only target ally for Aromatic Mist", async () => { game.override.battleStyle("double"); - await game.classicMode.startBattle([Species.REGIELEKI, Species.RATTATA]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI, SpeciesId.RATTATA]); const [leftPlayer, rightPlayer] = game.scene.getPlayerField(); const [leftOpp, rightOpp] = game.scene.getEnemyField(); - vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(Moves.AROMATIC_MIST); + vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(MoveId.AROMATIC_MIST); - game.move.select(Moves.METRONOME, 0); + game.move.select(MoveId.METRONOME, 0); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(rightPlayer.getStatStage(Stat.SPDEF)).toBe(1); @@ -99,11 +99,11 @@ describe("Moves - Metronome", () => { it("should cause opponent to flee, and not crash for Roar", async () => { await game.classicMode.startBattle(); - vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(Moves.ROAR); + vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(MoveId.ROAR); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.METRONOME); + game.move.select(MoveId.METRONOME); await game.phaseInterceptor.to("BerryPhase"); const isVisible = enemyPokemon.visible; diff --git a/test/moves/miracle_eye.test.ts b/test/moves/miracle_eye.test.ts index 2dbfb962540..dd5fb1c355b 100644 --- a/test/moves/miracle_eye.test.ts +++ b/test/moves/miracle_eye.test.ts @@ -1,6 +1,6 @@ import { BattlerIndex } from "#app/battle"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -24,11 +24,11 @@ describe("Moves - Miracle Eye", () => { game = new GameManager(phaserGame); game.override .disableCrits() - .enemySpecies(Species.UMBREON) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.UMBREON) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(5) - .starterSpecies(Species.MAGIKARP) - .moveset([Moves.MIRACLE_EYE, Moves.CONFUSION]); + .starterSpecies(SpeciesId.MAGIKARP) + .moveset([MoveId.MIRACLE_EYE, MoveId.CONFUSION]); }); it("should allow Psychic moves to hit Dark types", async () => { @@ -36,13 +36,13 @@ describe("Moves - Miracle Eye", () => { const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.CONFUSION); + game.move.select(MoveId.CONFUSION); await game.toNextTurn(); expect(enemy.hp).toBe(enemy.getMaxHp()); - game.move.select(Moves.MIRACLE_EYE); + game.move.select(MoveId.MIRACLE_EYE); await game.toNextTurn(); - game.move.select(Moves.CONFUSION); + game.move.select(MoveId.CONFUSION); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase); diff --git a/test/moves/mirror_move.test.ts b/test/moves/mirror_move.test.ts index 6a73e3a1f05..18e115745b9 100644 --- a/test/moves/mirror_move.test.ts +++ b/test/moves/mirror_move.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; import { Stat } from "#app/enums/stat"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,23 +25,23 @@ describe("Moves - Mirror Move", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.MIRROR_MOVE, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.MIRROR_MOVE, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should use the last move that the target used on the user", async () => { - game.override.battleStyle("double").enemyMoveset([Moves.TACKLE, Moves.GROWL]); - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + game.override.battleStyle("double").enemyMoveset([MoveId.TACKLE, MoveId.GROWL]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); - game.move.select(Moves.MIRROR_MOVE, 0, BattlerIndex.ENEMY); // target's last move is Tackle, enemy should receive damage from Mirror Move copying Tackle - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.GROWL, BattlerIndex.PLAYER_2); + game.move.select(MoveId.MIRROR_MOVE, 0, BattlerIndex.ENEMY); // target's last move is Tackle, enemy should receive damage from Mirror Move copying Tackle + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.GROWL, BattlerIndex.PLAYER_2); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER]); await game.toNextTurn(); @@ -49,10 +49,10 @@ describe("Moves - Mirror Move", () => { }); it("should apply secondary effects of a move", async () => { - game.override.enemyMoveset(Moves.ACID_SPRAY); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.enemyMoveset(MoveId.ACID_SPRAY); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.MIRROR_MOVE); + game.move.select(MoveId.MIRROR_MOVE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); @@ -60,10 +60,10 @@ describe("Moves - Mirror Move", () => { }); it("should be able to copy status moves", async () => { - game.override.enemyMoveset(Moves.GROWL); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.enemyMoveset(MoveId.GROWL); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.MIRROR_MOVE); + game.move.select(MoveId.MIRROR_MOVE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); @@ -71,9 +71,9 @@ describe("Moves - Mirror Move", () => { }); it("should fail if the target has not used any moves", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.MIRROR_MOVE); + game.move.select(MoveId.MIRROR_MOVE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); diff --git a/test/moves/mist.test.ts b/test/moves/mist.test.ts index 70cdf5b55a0..ea4eb95a1eb 100644 --- a/test/moves/mist.test.ts +++ b/test/moves/mist.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,22 +23,22 @@ describe("Moves - Mist", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.MIST, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.MIST, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("double") .disableCrits() - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.GROWL); + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.GROWL); }); it("should prevent the user's side from having stats lowered", async () => { - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); const playerPokemon = game.scene.getPlayerField(); - game.move.select(Moves.MIST, 0); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.MIST, 0); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/moves/moongeist_beam.test.ts b/test/moves/moongeist_beam.test.ts index 29398776f7f..f462d81943f 100644 --- a/test/moves/moongeist_beam.test.ts +++ b/test/moves/moongeist_beam.test.ts @@ -1,8 +1,8 @@ import { RandomMoveAttr } from "#app/data/moves/move"; import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -24,23 +24,23 @@ describe("Moves - Moongeist Beam", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.MOONGEIST_BEAM, Moves.METRONOME]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.MOONGEIST_BEAM, MoveId.METRONOME]) + .ability(AbilityId.BALL_FETCH) .startingLevel(200) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.STURDY) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.STURDY) + .enemyMoveset(MoveId.SPLASH); }); // Also covers Photon Geyser and Sunsteel Strike it("should ignore enemy abilities", async () => { - await game.classicMode.startBattle([Species.MILOTIC]); + await game.classicMode.startBattle([SpeciesId.MILOTIC]); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.MOONGEIST_BEAM); + game.move.select(MoveId.MOONGEIST_BEAM); await game.phaseInterceptor.to("BerryPhase"); expect(enemy.isFainted()).toBe(true); @@ -48,15 +48,15 @@ describe("Moves - Moongeist Beam", () => { // Also covers Photon Geyser and Sunsteel Strike it("should not ignore enemy abilities when called by another move, such as metronome", async () => { - await game.classicMode.startBattle([Species.MILOTIC]); - vi.spyOn(allMoves[Moves.METRONOME].getAttrs(RandomMoveAttr)[0], "getMoveOverride").mockReturnValue( - Moves.MOONGEIST_BEAM, + await game.classicMode.startBattle([SpeciesId.MILOTIC]); + vi.spyOn(allMoves[MoveId.METRONOME].getAttrs(RandomMoveAttr)[0], "getMoveOverride").mockReturnValue( + MoveId.MOONGEIST_BEAM, ); - game.move.select(Moves.METRONOME); + game.move.select(MoveId.METRONOME); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.isFainted()).toBe(false); - expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].move).toBe(Moves.MOONGEIST_BEAM); + expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].move).toBe(MoveId.MOONGEIST_BEAM); }); }); diff --git a/test/moves/multi_target.test.ts b/test/moves/multi_target.test.ts index af98c9a89f4..4572097296c 100644 --- a/test/moves/multi_target.test.ts +++ b/test/moves/multi_target.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#app/enums/abilities"; -import { Species } from "#app/enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { SpeciesId } from "#enums/species-id"; import { toDmgValue } from "#app/utils/common"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -28,20 +28,20 @@ describe("Multi-target damage reduction", () => { .battleStyle("double") .enemyLevel(100) .startingLevel(100) - .enemySpecies(Species.POLIWAG) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH) - .moveset([Moves.TACKLE, Moves.DAZZLING_GLEAM, Moves.EARTHQUAKE, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH); + .enemySpecies(SpeciesId.POLIWAG) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset([MoveId.TACKLE, MoveId.DAZZLING_GLEAM, MoveId.EARTHQUAKE, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH); }); it("should reduce d.gleam damage when multiple enemies but not tackle", async () => { - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); const [enemy1, enemy2] = game.scene.getEnemyField(); - game.move.select(Moves.DAZZLING_GLEAM); - game.move.select(Moves.TACKLE, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.DAZZLING_GLEAM); + game.move.select(MoveId.TACKLE, 1, BattlerIndex.ENEMY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -56,8 +56,8 @@ describe("Multi-target damage reduction", () => { await game.killPokemon(enemy2); await game.toNextTurn(); - game.move.select(Moves.DAZZLING_GLEAM); - game.move.select(Moves.TACKLE, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.DAZZLING_GLEAM); + game.move.select(MoveId.TACKLE, 1, BattlerIndex.ENEMY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -76,13 +76,13 @@ describe("Multi-target damage reduction", () => { }); it("should reduce earthquake when more than one pokemon other than user is not fainted", async () => { - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); const player2 = game.scene.getPlayerParty()[1]; const [enemy1, enemy2] = game.scene.getEnemyField(); - game.move.select(Moves.EARTHQUAKE); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.EARTHQUAKE); + game.move.select(MoveId.SPLASH, 1); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -96,8 +96,8 @@ describe("Multi-target damage reduction", () => { await game.killPokemon(enemy2); await game.toNextTurn(); - game.move.select(Moves.EARTHQUAKE); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.EARTHQUAKE); + game.move.select(MoveId.SPLASH, 1); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -115,7 +115,7 @@ describe("Multi-target damage reduction", () => { await game.killPokemon(player2); await game.toNextTurn(); - game.move.select(Moves.EARTHQUAKE); + game.move.select(MoveId.EARTHQUAKE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); diff --git a/test/moves/nightmare.test.ts b/test/moves/nightmare.test.ts index 044856ae33d..e005def85ad 100644 --- a/test/moves/nightmare.test.ts +++ b/test/moves/nightmare.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -25,27 +25,27 @@ describe("Moves - Nightmare", () => { game.override .battleStyle("single") - .enemySpecies(Species.RATTATA) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH) + .enemySpecies(SpeciesId.RATTATA) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) .enemyStatusEffect(StatusEffect.SLEEP) .startingLevel(5) - .moveset([Moves.NIGHTMARE, Moves.SPLASH]); + .moveset([MoveId.NIGHTMARE, MoveId.SPLASH]); }); it("lowers enemy hp by 1/4 each turn while asleep", async () => { - await game.classicMode.startBattle([Species.HYPNO]); + await game.classicMode.startBattle([SpeciesId.HYPNO]); const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyMaxHP = enemyPokemon.hp; - game.move.select(Moves.NIGHTMARE); + game.move.select(MoveId.NIGHTMARE); await game.toNextTurn(); expect(enemyPokemon.hp).toBe(enemyMaxHP - Math.floor(enemyMaxHP / 4)); // take a second turn to make sure damage occurs again - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(enemyPokemon.hp).toBe(enemyMaxHP - Math.floor(enemyMaxHP / 4) - Math.floor(enemyMaxHP / 4)); diff --git a/test/moves/obstruct.test.ts b/test/moves/obstruct.test.ts index f35a5964bcb..fc534180bef 100644 --- a/test/moves/obstruct.test.ts +++ b/test/moves/obstruct.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -23,18 +23,18 @@ describe("Moves - Obstruct", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.TACKLE) - .enemyAbility(Abilities.BALL_FETCH) - .ability(Abilities.BALL_FETCH) - .moveset([Moves.OBSTRUCT]) - .starterSpecies(Species.FEEBAS); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.TACKLE) + .enemyAbility(AbilityId.BALL_FETCH) + .ability(AbilityId.BALL_FETCH) + .moveset([MoveId.OBSTRUCT]) + .starterSpecies(SpeciesId.FEEBAS); }); it("protects from contact damaging moves and lowers the opponent's defense by 2 stages", async () => { await game.classicMode.startBattle(); - game.move.select(Moves.OBSTRUCT); + game.move.select(MoveId.OBSTRUCT); await game.phaseInterceptor.to("BerryPhase"); const player = game.scene.getPlayerPokemon()!; @@ -47,7 +47,7 @@ describe("Moves - Obstruct", () => { it("bypasses accuracy checks when applying protection and defense reduction", async () => { await game.classicMode.startBattle(); - game.move.select(Moves.OBSTRUCT); + game.move.select(MoveId.OBSTRUCT); await game.phaseInterceptor.to("MoveEffectPhase"); await game.move.forceMiss(); @@ -60,10 +60,10 @@ describe("Moves - Obstruct", () => { }); it("protects from non-contact damaging moves and doesn't lower the opponent's defense by 2 stages", async () => { - game.override.enemyMoveset(Moves.WATER_GUN); + game.override.enemyMoveset(MoveId.WATER_GUN); await game.classicMode.startBattle(); - game.move.select(Moves.OBSTRUCT); + game.move.select(MoveId.OBSTRUCT); await game.phaseInterceptor.to("BerryPhase"); const player = game.scene.getPlayerPokemon()!; @@ -74,10 +74,10 @@ describe("Moves - Obstruct", () => { }); it("doesn't protect from status moves", async () => { - game.override.enemyMoveset(Moves.GROWL); + game.override.enemyMoveset(MoveId.GROWL); await game.classicMode.startBattle(); - game.move.select(Moves.OBSTRUCT); + game.move.select(MoveId.OBSTRUCT); await game.phaseInterceptor.to("BerryPhase"); const player = game.scene.getPlayerPokemon()!; @@ -86,10 +86,10 @@ describe("Moves - Obstruct", () => { }); it("doesn't reduce the stats of an opponent with Clear Body/etc", async () => { - game.override.enemyAbility(Abilities.CLEAR_BODY); + game.override.enemyAbility(AbilityId.CLEAR_BODY); await game.classicMode.startBattle(); - game.move.select(Moves.OBSTRUCT); + game.move.select(MoveId.OBSTRUCT); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.DEF)).toBe(0); diff --git a/test/moves/octolock.test.ts b/test/moves/octolock.test.ts index fb57d0bfad5..2a2f8743ad2 100644 --- a/test/moves/octolock.test.ts +++ b/test/moves/octolock.test.ts @@ -1,7 +1,7 @@ import { TrappedTag } from "#app/data/battler-tags"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -26,28 +26,28 @@ describe("Moves - Octolock", () => { game.override .battleStyle("single") - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) .startingLevel(2000) - .moveset([Moves.OCTOLOCK, Moves.SPLASH, Moves.TRICK_OR_TREAT]) - .ability(Abilities.BALL_FETCH); + .moveset([MoveId.OCTOLOCK, MoveId.SPLASH, MoveId.TRICK_OR_TREAT]) + .ability(AbilityId.BALL_FETCH); }); it("lowers DEF and SPDEF stat stages of the target Pokemon by 1 each turn", async () => { - await game.classicMode.startBattle([Species.GRAPPLOCT]); + await game.classicMode.startBattle([SpeciesId.GRAPPLOCT]); const enemyPokemon = game.scene.getEnemyPokemon()!; // use Octolock and advance to init phase of next turn to check for stat changes - game.move.select(Moves.OCTOLOCK); + game.move.select(MoveId.OCTOLOCK); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(-1); expect(enemyPokemon.getStatStage(Stat.SPDEF)).toBe(-1); // take a second turn to make sure stat changes occur again - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(-2); @@ -55,13 +55,13 @@ describe("Moves - Octolock", () => { }); it("if target pokemon has BIG_PECKS, should only lower SPDEF stat stage by 1", async () => { - game.override.enemyAbility(Abilities.BIG_PECKS); - await game.classicMode.startBattle([Species.GRAPPLOCT]); + game.override.enemyAbility(AbilityId.BIG_PECKS); + await game.classicMode.startBattle([SpeciesId.GRAPPLOCT]); const enemyPokemon = game.scene.getEnemyPokemon()!; // use Octolock and advance to init phase of next turn to check for stat changes - game.move.select(Moves.OCTOLOCK); + game.move.select(MoveId.OCTOLOCK); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); @@ -69,13 +69,13 @@ describe("Moves - Octolock", () => { }); it("if target pokemon has WHITE_SMOKE, should not reduce any stat stages", async () => { - game.override.enemyAbility(Abilities.WHITE_SMOKE); - await game.classicMode.startBattle([Species.GRAPPLOCT]); + game.override.enemyAbility(AbilityId.WHITE_SMOKE); + await game.classicMode.startBattle([SpeciesId.GRAPPLOCT]); const enemyPokemon = game.scene.getEnemyPokemon()!; // use Octolock and advance to init phase of next turn to check for stat changes - game.move.select(Moves.OCTOLOCK); + game.move.select(MoveId.OCTOLOCK); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); @@ -83,13 +83,13 @@ describe("Moves - Octolock", () => { }); it("if target pokemon has CLEAR_BODY, should not reduce any stat stages", async () => { - game.override.enemyAbility(Abilities.CLEAR_BODY); - await game.classicMode.startBattle([Species.GRAPPLOCT]); + game.override.enemyAbility(AbilityId.CLEAR_BODY); + await game.classicMode.startBattle([SpeciesId.GRAPPLOCT]); const enemyPokemon = game.scene.getEnemyPokemon()!; // use Octolock and advance to init phase of next turn to check for stat changes - game.move.select(Moves.OCTOLOCK); + game.move.select(MoveId.OCTOLOCK); await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); @@ -97,14 +97,14 @@ describe("Moves - Octolock", () => { }); it("traps the target pokemon", async () => { - await game.classicMode.startBattle([Species.GRAPPLOCT]); + await game.classicMode.startBattle([SpeciesId.GRAPPLOCT]); const enemyPokemon = game.scene.getEnemyPokemon()!; // before Octolock - enemy should not be trapped expect(enemyPokemon.findTag(t => t instanceof TrappedTag)).toBeUndefined(); - game.move.select(Moves.OCTOLOCK); + game.move.select(MoveId.OCTOLOCK); // after Octolock - enemy should be trapped await game.phaseInterceptor.to("MoveEndPhase"); @@ -112,15 +112,15 @@ describe("Moves - Octolock", () => { }); it("does not work on ghost type pokemon", async () => { - game.override.enemyMoveset(Moves.OCTOLOCK); - await game.classicMode.startBattle([Species.GASTLY]); + game.override.enemyMoveset(MoveId.OCTOLOCK); + await game.classicMode.startBattle([SpeciesId.GASTLY]); const playerPokemon = game.scene.getPlayerPokemon()!; // before Octolock - player should not be trapped expect(playerPokemon.findTag(t => t instanceof TrappedTag)).toBeUndefined(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // after Octolock - player should still not be trapped, and no stat loss @@ -130,16 +130,16 @@ describe("Moves - Octolock", () => { }); it("does not work on pokemon with added ghost type via Trick-or-Treat", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon()!; // before Octolock - pokemon should not be trapped expect(enemy.findTag(t => t instanceof TrappedTag)).toBeUndefined(); - game.move.select(Moves.TRICK_OR_TREAT); + game.move.select(MoveId.TRICK_OR_TREAT); await game.toNextTurn(); - game.move.select(Moves.OCTOLOCK); + game.move.select(MoveId.OCTOLOCK); await game.toNextTurn(); // after Octolock - pokemon should still not be trapped, and no stat loss diff --git a/test/moves/order_up.test.ts b/test/moves/order_up.test.ts index b5df5bfba41..c6ca7ac06da 100644 --- a/test/moves/order_up.test.ts +++ b/test/moves/order_up.test.ts @@ -3,9 +3,9 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { PokemonAnimType } from "#enums/pokemon-anim-type"; import type { EffectiveStat } from "#enums/stat"; import { Stat } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -27,13 +27,13 @@ describe("Moves - Order Up", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Moves.ORDER_UP) - .ability(Abilities.COMMANDER) + .moveset(MoveId.ORDER_UP) + .ability(AbilityId.COMMANDER) .battleStyle("double") .disableCrits() - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) .startingLevel(100) .enemyLevel(100); @@ -47,16 +47,16 @@ describe("Moves - Order Up", () => { ])( "should raise the user's $statName when the user is commanded by a $formName Tatsugiri", async ({ formIndex, stat }) => { - game.override.starterForms({ [Species.TATSUGIRI]: formIndex }); + game.override.starterForms({ [SpeciesId.TATSUGIRI]: formIndex }); - await game.classicMode.startBattle([Species.TATSUGIRI, Species.DONDOZO]); + await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]); const [tatsugiri, dondozo] = game.scene.getPlayerField(); expect(game.scene.triggerPokemonBattleAnim).toHaveBeenLastCalledWith(tatsugiri, PokemonAnimType.COMMANDER_APPLY); expect(dondozo.getTag(BattlerTagType.COMMANDED)).toBeDefined(); - game.move.select(Moves.ORDER_UP, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.ORDER_UP, 1, BattlerIndex.ENEMY); expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); await game.phaseInterceptor.to("BerryPhase", false); @@ -67,21 +67,21 @@ describe("Moves - Order Up", () => { ); it("should be boosted by Sheer Force while still applying a stat boost", async () => { - game.override.passiveAbility(Abilities.SHEER_FORCE).starterForms({ [Species.TATSUGIRI]: 0 }); + game.override.passiveAbility(AbilityId.SHEER_FORCE).starterForms({ [SpeciesId.TATSUGIRI]: 0 }); - await game.classicMode.startBattle([Species.TATSUGIRI, Species.DONDOZO]); + await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]); const [tatsugiri, dondozo] = game.scene.getPlayerField(); expect(game.scene.triggerPokemonBattleAnim).toHaveBeenLastCalledWith(tatsugiri, PokemonAnimType.COMMANDER_APPLY); expect(dondozo.getTag(BattlerTagType.COMMANDED)).toBeDefined(); - game.move.select(Moves.ORDER_UP, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.ORDER_UP, 1, BattlerIndex.ENEMY); expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); await game.phaseInterceptor.to("BerryPhase", false); - expect(dondozo.waveData.abilitiesApplied.has(Abilities.SHEER_FORCE)).toBeTruthy(); + expect(dondozo.waveData.abilitiesApplied.has(AbilityId.SHEER_FORCE)).toBeTruthy(); expect(dondozo.getStatStage(Stat.ATK)).toBe(3); }); }); diff --git a/test/moves/parting_shot.test.ts b/test/moves/parting_shot.test.ts index 26f8790d3b9..f7a1b86fb34 100644 --- a/test/moves/parting_shot.test.ts +++ b/test/moves/parting_shot.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, test } from "vitest"; import GameManager from "#test/testUtils/gameManager"; @@ -27,69 +27,69 @@ describe("Moves - Parting Shot", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.moveset([Moves.PARTING_SHOT, Moves.SPLASH]); - game.override.enemyMoveset(Moves.SPLASH); + game.override.moveset([MoveId.PARTING_SHOT, MoveId.SPLASH]); + game.override.enemyMoveset(MoveId.SPLASH); game.override.startingLevel(5); game.override.enemyLevel(5); }); test("Parting Shot when buffed by prankster should fail against dark types", async () => { - game.override.enemySpecies(Species.POOCHYENA).ability(Abilities.PRANKSTER); - await game.classicMode.startBattle([Species.MURKROW, Species.MEOWTH]); + game.override.enemySpecies(SpeciesId.POOCHYENA).ability(AbilityId.PRANKSTER); + await game.classicMode.startBattle([SpeciesId.MURKROW, SpeciesId.MEOWTH]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon).toBeDefined(); - game.move.select(Moves.PARTING_SHOT); + game.move.select(MoveId.PARTING_SHOT); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(0); expect(enemyPokemon.getStatStage(Stat.SPATK)).toBe(0); - expect(game.scene.getPlayerField()[0].species.speciesId).toBe(Species.MURKROW); + expect(game.scene.getPlayerField()[0].species.speciesId).toBe(SpeciesId.MURKROW); }); test("Parting shot should fail against good as gold ability", async () => { - game.override.enemySpecies(Species.GHOLDENGO).enemyAbility(Abilities.GOOD_AS_GOLD); - await game.classicMode.startBattle([Species.MURKROW, Species.MEOWTH]); + game.override.enemySpecies(SpeciesId.GHOLDENGO).enemyAbility(AbilityId.GOOD_AS_GOLD); + await game.classicMode.startBattle([SpeciesId.MURKROW, SpeciesId.MEOWTH]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon).toBeDefined(); - game.move.select(Moves.PARTING_SHOT); + game.move.select(MoveId.PARTING_SHOT); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(0); expect(enemyPokemon.getStatStage(Stat.SPATK)).toBe(0); - expect(game.scene.getPlayerField()[0].species.speciesId).toBe(Species.MURKROW); + expect(game.scene.getPlayerField()[0].species.speciesId).toBe(SpeciesId.MURKROW); }); it.todo( // TODO: fix this bug to pass the test! "Parting shot should fail if target is -6/-6 de-buffed", async () => { - game.override.moveset([Moves.PARTING_SHOT, Moves.MEMENTO, Moves.SPLASH]); + game.override.moveset([MoveId.PARTING_SHOT, MoveId.MEMENTO, MoveId.SPLASH]); await game.classicMode.startBattle([ - Species.MEOWTH, - Species.MEOWTH, - Species.MEOWTH, - Species.MURKROW, - Species.ABRA, + SpeciesId.MEOWTH, + SpeciesId.MEOWTH, + SpeciesId.MEOWTH, + SpeciesId.MURKROW, + SpeciesId.ABRA, ]); // use Memento 3 times to debuff enemy - game.move.select(Moves.MEMENTO); + game.move.select(MoveId.MEMENTO); await game.phaseInterceptor.to(FaintPhase); expect(game.scene.getPlayerParty()[0].isFainted()).toBe(true); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to(TurnInitPhase, false); - game.move.select(Moves.MEMENTO); + game.move.select(MoveId.MEMENTO); await game.phaseInterceptor.to(FaintPhase); expect(game.scene.getPlayerParty()[0].isFainted()).toBe(true); game.doSelectPartyPokemon(2); await game.phaseInterceptor.to(TurnInitPhase, false); - game.move.select(Moves.MEMENTO); + game.move.select(MoveId.MEMENTO); await game.phaseInterceptor.to(FaintPhase); expect(game.scene.getPlayerParty()[0].isFainted()).toBe(true); game.doSelectPartyPokemon(3); @@ -103,12 +103,12 @@ describe("Moves - Parting Shot", () => { expect(enemyPokemon.getStatStage(Stat.SPATK)).toBe(-6); // now parting shot should fail - game.move.select(Moves.PARTING_SHOT); + game.move.select(MoveId.PARTING_SHOT); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-6); expect(enemyPokemon.getStatStage(Stat.SPATK)).toBe(-6); - expect(game.scene.getPlayerField()[0].species.speciesId).toBe(Species.MURKROW); + expect(game.scene.getPlayerField()[0].species.speciesId).toBe(SpeciesId.MURKROW); }, ); @@ -116,18 +116,18 @@ describe("Moves - Parting Shot", () => { // TODO: fix this bug to pass the test! "Parting shot shouldn't allow switch out when mist is active", async () => { - game.override.enemySpecies(Species.ALTARIA).enemyAbility(Abilities.NONE).enemyMoveset([Moves.MIST]); - await game.classicMode.startBattle([Species.SNORLAX, Species.MEOWTH]); + game.override.enemySpecies(SpeciesId.ALTARIA).enemyAbility(AbilityId.NONE).enemyMoveset([MoveId.MIST]); + await game.classicMode.startBattle([SpeciesId.SNORLAX, SpeciesId.MEOWTH]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon).toBeDefined(); - game.move.select(Moves.PARTING_SHOT); + game.move.select(MoveId.PARTING_SHOT); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(0); expect(enemyPokemon.getStatStage(Stat.SPATK)).toBe(0); - expect(game.scene.getPlayerField()[0].species.speciesId).toBe(Species.MURKROW); + expect(game.scene.getPlayerField()[0].species.speciesId).toBe(SpeciesId.MURKROW); }, ); @@ -135,18 +135,18 @@ describe("Moves - Parting Shot", () => { // TODO: fix this bug to pass the test! "Parting shot shouldn't allow switch out against clear body ability", async () => { - game.override.enemySpecies(Species.TENTACOOL).enemyAbility(Abilities.CLEAR_BODY); - await game.classicMode.startBattle([Species.SNORLAX, Species.MEOWTH]); + game.override.enemySpecies(SpeciesId.TENTACOOL).enemyAbility(AbilityId.CLEAR_BODY); + await game.classicMode.startBattle([SpeciesId.SNORLAX, SpeciesId.MEOWTH]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon).toBeDefined(); - game.move.select(Moves.PARTING_SHOT); + game.move.select(MoveId.PARTING_SHOT); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(0); expect(enemyPokemon.getStatStage(Stat.SPATK)).toBe(0); - expect(game.scene.getPlayerField()[0].species.speciesId).toBe(Species.MURKROW); + expect(game.scene.getPlayerField()[0].species.speciesId).toBe(SpeciesId.MURKROW); }, ); @@ -154,17 +154,17 @@ describe("Moves - Parting Shot", () => { // TODO: fix this bug to pass the test! "Parting shot should de-buff and not fail if no party available to switch - party size 1", async () => { - await game.classicMode.startBattle([Species.MURKROW]); + await game.classicMode.startBattle([SpeciesId.MURKROW]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon).toBeDefined(); - game.move.select(Moves.PARTING_SHOT); + game.move.select(MoveId.PARTING_SHOT); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); expect(enemyPokemon.getStatStage(Stat.SPATK)).toBe(-1); - expect(game.scene.getPlayerField()[0].species.speciesId).toBe(Species.MURKROW); + expect(game.scene.getPlayerField()[0].species.speciesId).toBe(SpeciesId.MURKROW); }, ); @@ -172,8 +172,8 @@ describe("Moves - Parting Shot", () => { // TODO: fix this bug to pass the test! "Parting shot regularly not fail if no party available to switch - party fainted", async () => { - await game.classicMode.startBattle([Species.MURKROW, Species.MEOWTH]); - game.move.select(Moves.SPLASH); + await game.classicMode.startBattle([SpeciesId.MURKROW, SpeciesId.MEOWTH]); + game.move.select(MoveId.SPLASH); // intentionally kill party pokemon, switch to second slot (now 1 party mon is fainted) await game.killPokemon(game.scene.getPlayerParty()[0]); @@ -182,13 +182,13 @@ describe("Moves - Parting Shot", () => { game.doSelectPartyPokemon(1); await game.phaseInterceptor.to(TurnInitPhase, false); - game.move.select(Moves.PARTING_SHOT); + game.move.select(MoveId.PARTING_SHOT); await game.phaseInterceptor.to(BerryPhase, false); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(0); expect(enemyPokemon.getStatStage(Stat.SPATK)).toBe(0); - expect(game.scene.getPlayerField()[0].species.speciesId).toBe(Species.MEOWTH); + expect(game.scene.getPlayerField()[0].species.speciesId).toBe(SpeciesId.MEOWTH); }, ); }); diff --git a/test/moves/plasma_fists.test.ts b/test/moves/plasma_fists.test.ts index 0c3412d8e60..9493f69d70f 100644 --- a/test/moves/plasma_fists.test.ts +++ b/test/moves/plasma_fists.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { PokemonType } from "#enums/pokemon-type"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; @@ -24,26 +24,26 @@ describe("Moves - Plasma Fists", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.PLASMA_FISTS, Moves.TACKLE]) + .moveset([MoveId.PLASMA_FISTS, MoveId.TACKLE]) .battleStyle("double") .startingLevel(100) - .enemySpecies(Species.DUSCLOPS) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.TACKLE) + .enemySpecies(SpeciesId.DUSCLOPS) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.TACKLE) .enemyLevel(100); }); it("should convert all subsequent Normal-type attacks to Electric-type", async () => { - await game.classicMode.startBattle([Species.DUSCLOPS, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.DUSCLOPS, SpeciesId.BLASTOISE]); const field = game.scene.getField(true); field.forEach(p => vi.spyOn(p, "getMoveType")); - game.move.select(Moves.PLASMA_FISTS, 0, BattlerIndex.ENEMY); - game.move.select(Moves.TACKLE, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.PLASMA_FISTS, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.TACKLE, 1, BattlerIndex.ENEMY_2); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.TACKLE, BattlerIndex.PLAYER_2); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); @@ -56,15 +56,15 @@ describe("Moves - Plasma Fists", () => { }); it("should not affect Normal-type attacks boosted by Pixilate", async () => { - game.override.battleStyle("single").enemyAbility(Abilities.PIXILATE); + game.override.battleStyle("single").enemyAbility(AbilityId.PIXILATE); - await game.classicMode.startBattle([Species.ONIX]); + await game.classicMode.startBattle([SpeciesId.ONIX]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; vi.spyOn(enemyPokemon, "getMoveType"); - game.move.select(Moves.PLASMA_FISTS); + game.move.select(MoveId.PLASMA_FISTS); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase", false); @@ -74,15 +74,15 @@ describe("Moves - Plasma Fists", () => { }); it("should affect moves that become Normal type due to Normalize", async () => { - game.override.battleStyle("single").enemyAbility(Abilities.NORMALIZE).enemyMoveset(Moves.WATER_GUN); + game.override.battleStyle("single").enemyAbility(AbilityId.NORMALIZE).enemyMoveset(MoveId.WATER_GUN); - await game.classicMode.startBattle([Species.DUSCLOPS]); + await game.classicMode.startBattle([SpeciesId.DUSCLOPS]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; vi.spyOn(enemyPokemon, "getMoveType"); - game.move.select(Moves.PLASMA_FISTS); + game.move.select(MoveId.PLASMA_FISTS); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase", false); diff --git a/test/moves/pledge_moves.test.ts b/test/moves/pledge_moves.test.ts index 6c66c4bbe2d..2500563d44e 100644 --- a/test/moves/pledge_moves.test.ts +++ b/test/moves/pledge_moves.test.ts @@ -7,9 +7,9 @@ import { PokemonType } from "#enums/pokemon-type"; import { ArenaTagType } from "#enums/arena-tag-type"; import { Stat } from "#enums/stat"; import { toDmgValue } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; @@ -33,24 +33,24 @@ describe("Moves - Pledge Moves", () => { game.override .battleStyle("double") .startingLevel(100) - .moveset([Moves.FIRE_PLEDGE, Moves.GRASS_PLEDGE, Moves.WATER_PLEDGE, Moves.SPLASH]) - .enemySpecies(Species.SNORLAX) + .moveset([MoveId.FIRE_PLEDGE, MoveId.GRASS_PLEDGE, MoveId.WATER_PLEDGE, MoveId.SPLASH]) + .enemySpecies(SpeciesId.SNORLAX) .enemyLevel(100) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("Fire Pledge - should be an 80-power Fire-type attack outside of combination", async () => { - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); - const firePledge = allMoves[Moves.FIRE_PLEDGE]; + const firePledge = allMoves[MoveId.FIRE_PLEDGE]; vi.spyOn(firePledge, "calculateBattlePower"); const playerPokemon = game.scene.getPlayerField(); vi.spyOn(playerPokemon[0], "getMoveType"); - game.move.select(Moves.FIRE_PLEDGE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.FIRE_PLEDGE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("MoveEndPhase", false); @@ -60,9 +60,9 @@ describe("Moves - Pledge Moves", () => { }); it("Fire Pledge - should not combine with an ally using Fire Pledge", async () => { - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); - const firePledge = allMoves[Moves.FIRE_PLEDGE]; + const firePledge = allMoves[MoveId.FIRE_PLEDGE]; vi.spyOn(firePledge, "calculateBattlePower"); const playerPokemon = game.scene.getPlayerField(); @@ -70,8 +70,8 @@ describe("Moves - Pledge Moves", () => { const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.FIRE_PLEDGE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.FIRE_PLEDGE, 0, BattlerIndex.ENEMY_2); + game.move.select(MoveId.FIRE_PLEDGE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.FIRE_PLEDGE, 0, BattlerIndex.ENEMY_2); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); @@ -87,14 +87,14 @@ describe("Moves - Pledge Moves", () => { }); it("Fire Pledge - should not combine with an enemy's Pledge move", async () => { - game.override.battleStyle("single").enemyMoveset(Moves.GRASS_PLEDGE); + game.override.battleStyle("single").enemyMoveset(MoveId.GRASS_PLEDGE); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.FIRE_PLEDGE); + game.move.select(MoveId.FIRE_PLEDGE); await game.toNextTurn(); @@ -106,9 +106,9 @@ describe("Moves - Pledge Moves", () => { }); it("Grass Pledge - should combine with Fire Pledge to form a 150-power Fire-type attack that creates a 'sea of fire'", async () => { - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); - const grassPledge = allMoves[Moves.GRASS_PLEDGE]; + const grassPledge = allMoves[MoveId.GRASS_PLEDGE]; vi.spyOn(grassPledge, "calculateBattlePower"); const playerPokemon = game.scene.getPlayerField(); @@ -117,8 +117,8 @@ describe("Moves - Pledge Moves", () => { vi.spyOn(playerPokemon[1], "getMoveType"); const baseDmgMock = vi.spyOn(enemyPokemon[0], "getBaseDamage"); - game.move.select(Moves.FIRE_PLEDGE, 0, BattlerIndex.ENEMY_2); - game.move.select(Moves.GRASS_PLEDGE, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.FIRE_PLEDGE, 0, BattlerIndex.ENEMY_2); + game.move.select(MoveId.GRASS_PLEDGE, 1, BattlerIndex.ENEMY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); // advance to the end of PLAYER_2's move this turn @@ -139,11 +139,11 @@ describe("Moves - Pledge Moves", () => { }); it("Fire Pledge - should combine with Water Pledge to form a 150-power Water-type attack that creates a 'rainbow'", async () => { - game.override.moveset([Moves.FIRE_PLEDGE, Moves.WATER_PLEDGE, Moves.FIERY_DANCE, Moves.SPLASH]); + game.override.moveset([MoveId.FIRE_PLEDGE, MoveId.WATER_PLEDGE, MoveId.FIERY_DANCE, MoveId.SPLASH]); - await game.classicMode.startBattle([Species.BLASTOISE, Species.VENUSAUR]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.VENUSAUR]); - const firePledge = allMoves[Moves.FIRE_PLEDGE]; + const firePledge = allMoves[MoveId.FIRE_PLEDGE]; vi.spyOn(firePledge, "calculateBattlePower"); const playerPokemon = game.scene.getPlayerField(); @@ -151,8 +151,8 @@ describe("Moves - Pledge Moves", () => { vi.spyOn(playerPokemon[1], "getMoveType"); - game.move.select(Moves.WATER_PLEDGE, 0, BattlerIndex.ENEMY_2); - game.move.select(Moves.FIRE_PLEDGE, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.WATER_PLEDGE, 0, BattlerIndex.ENEMY_2); + game.move.select(MoveId.FIRE_PLEDGE, 1, BattlerIndex.ENEMY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); // advance to the end of PLAYER_2's move this turn @@ -166,8 +166,8 @@ describe("Moves - Pledge Moves", () => { await game.toNextTurn(); - game.move.select(Moves.FIERY_DANCE, 0, BattlerIndex.ENEMY_2); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.FIERY_DANCE, 0, BattlerIndex.ENEMY_2); + game.move.select(MoveId.SPLASH, 1); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -176,9 +176,9 @@ describe("Moves - Pledge Moves", () => { }); it("Water Pledge - should combine with Grass Pledge to form a 150-power Grass-type attack that creates a 'swamp'", async () => { - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); - const waterPledge = allMoves[Moves.WATER_PLEDGE]; + const waterPledge = allMoves[MoveId.WATER_PLEDGE]; vi.spyOn(waterPledge, "calculateBattlePower"); const playerPokemon = game.scene.getPlayerField(); @@ -187,8 +187,8 @@ describe("Moves - Pledge Moves", () => { vi.spyOn(playerPokemon[1], "getMoveType"); - game.move.select(Moves.GRASS_PLEDGE, 0, BattlerIndex.ENEMY_2); - game.move.select(Moves.WATER_PLEDGE, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.GRASS_PLEDGE, 0, BattlerIndex.ENEMY_2); + game.move.select(MoveId.WATER_PLEDGE, 1, BattlerIndex.ENEMY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); // advance to the end of PLAYER_2's move this turn @@ -205,12 +205,12 @@ describe("Moves - Pledge Moves", () => { }); it("Pledge Moves - should alter turn order when used in combination", async () => { - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.WATER_PLEDGE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.FIRE_PLEDGE, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.WATER_PLEDGE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.FIRE_PLEDGE, 1, BattlerIndex.ENEMY_2); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2]); // PLAYER_2 should act with a combined move immediately after PLAYER as the second move in the turn @@ -223,23 +223,23 @@ describe("Moves - Pledge Moves", () => { it("Pledge Moves - 'rainbow' effect should not stack with Serene Grace when applied to flinching moves", async () => { game.override - .ability(Abilities.SERENE_GRACE) - .moveset([Moves.FIRE_PLEDGE, Moves.WATER_PLEDGE, Moves.IRON_HEAD, Moves.SPLASH]); + .ability(AbilityId.SERENE_GRACE) + .moveset([MoveId.FIRE_PLEDGE, MoveId.WATER_PLEDGE, MoveId.IRON_HEAD, MoveId.SPLASH]); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); - const ironHeadFlinchAttr = allMoves[Moves.IRON_HEAD].getAttrs(FlinchAttr)[0]; + const ironHeadFlinchAttr = allMoves[MoveId.IRON_HEAD].getAttrs(FlinchAttr)[0]; vi.spyOn(ironHeadFlinchAttr, "getMoveChance"); - game.move.select(Moves.WATER_PLEDGE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.FIRE_PLEDGE, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.WATER_PLEDGE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.FIRE_PLEDGE, 1, BattlerIndex.ENEMY_2); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.arena.getTagOnSide(ArenaTagType.WATER_FIRE_PLEDGE, ArenaTagSide.PLAYER)).toBeDefined(); - game.move.select(Moves.IRON_HEAD, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.IRON_HEAD, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase", false); @@ -247,17 +247,17 @@ describe("Moves - Pledge Moves", () => { }); it("Pledge Moves - should have no effect when the second ally's move is cancelled", async () => { - game.override.enemyMoveset([Moves.SPLASH, Moves.SPORE]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.SPORE]); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.FIRE_PLEDGE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.GRASS_PLEDGE, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.FIRE_PLEDGE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.GRASS_PLEDGE, 1, BattlerIndex.ENEMY_2); - await game.move.selectEnemyMove(Moves.SPORE, BattlerIndex.PLAYER_2); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.SPORE, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2]); @@ -267,13 +267,13 @@ describe("Moves - Pledge Moves", () => { }); it("Pledge Moves - should ignore redirection from another Pokemon's Storm Drain", async () => { - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyField(); - vi.spyOn(enemyPokemon[1], "getAbility").mockReturnValue(allAbilities[Abilities.STORM_DRAIN]); + vi.spyOn(enemyPokemon[1], "getAbility").mockReturnValue(allAbilities[AbilityId.STORM_DRAIN]); - game.move.select(Moves.WATER_PLEDGE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.WATER_PLEDGE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); @@ -284,14 +284,14 @@ describe("Moves - Pledge Moves", () => { }); it("Pledge Moves - should not ignore redirection from another Pokemon's Follow Me", async () => { - game.override.enemyMoveset([Moves.FOLLOW_ME, Moves.SPLASH]); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + game.override.enemyMoveset([MoveId.FOLLOW_ME, MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); - game.move.select(Moves.WATER_PLEDGE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.WATER_PLEDGE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.FOLLOW_ME); + await game.move.selectEnemyMove(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.FOLLOW_ME); await game.phaseInterceptor.to("BerryPhase", false); diff --git a/test/moves/pollen_puff.test.ts b/test/moves/pollen_puff.test.ts index 31d5950b47d..d61303bcfcc 100644 --- a/test/moves/pollen_puff.test.ts +++ b/test/moves/pollen_puff.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,25 +23,25 @@ describe("Moves - Pollen Puff", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.POLLEN_PUFF]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.POLLEN_PUFF]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should not heal more than once when the user has a source of multi-hit", async () => { - game.override.battleStyle("double").moveset([Moves.POLLEN_PUFF, Moves.ENDURE]).ability(Abilities.PARENTAL_BOND); - await game.classicMode.startBattle([Species.BULBASAUR, Species.OMANYTE]); + game.override.battleStyle("double").moveset([MoveId.POLLEN_PUFF, MoveId.ENDURE]).ability(AbilityId.PARENTAL_BOND); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.OMANYTE]); const [_, rightPokemon] = game.scene.getPlayerField(); rightPokemon.damageAndUpdate(rightPokemon.hp - 1); - game.move.select(Moves.POLLEN_PUFF, 0, BattlerIndex.PLAYER_2); - game.move.select(Moves.ENDURE, 1); + game.move.select(MoveId.POLLEN_PUFF, 0, BattlerIndex.PLAYER_2); + game.move.select(MoveId.ENDURE, 1); await game.phaseInterceptor.to("BerryPhase"); @@ -50,12 +50,12 @@ describe("Moves - Pollen Puff", () => { }); it("should damage an enemy multiple times when the user has a source of multi-hit", async () => { - game.override.moveset([Moves.POLLEN_PUFF]).ability(Abilities.PARENTAL_BOND).enemyLevel(100); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.POLLEN_PUFF]).ability(AbilityId.PARENTAL_BOND).enemyLevel(100); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const target = game.scene.getEnemyPokemon()!; - game.move.select(Moves.POLLEN_PUFF); + game.move.select(MoveId.POLLEN_PUFF); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/moves/powder.test.ts b/test/moves/powder.test.ts index f076923d746..d335e29996e 100644 --- a/test/moves/powder.test.ts +++ b/test/moves/powder.test.ts @@ -2,10 +2,10 @@ import { BattlerIndex } from "#app/battle"; import { MoveResult, PokemonMove } from "#app/field/pokemon"; import { BerryPhase } from "#app/phases/berry-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -30,23 +30,23 @@ describe("Moves - Powder", () => { game.override.battleStyle("single"); game.override - .enemySpecies(Species.SNORLAX) + .enemySpecies(SpeciesId.SNORLAX) .enemyLevel(100) - .enemyMoveset(Moves.EMBER) - .enemyAbility(Abilities.INSOMNIA) + .enemyMoveset(MoveId.EMBER) + .enemyAbility(AbilityId.INSOMNIA) .startingLevel(100) - .moveset([Moves.POWDER, Moves.SPLASH, Moves.FIERY_DANCE, Moves.ROAR]); + .moveset([MoveId.POWDER, MoveId.SPLASH, MoveId.FIERY_DANCE, MoveId.ROAR]); }); it("should cancel the target's Fire-type move, damage the target, and still consume the target's PP", async () => { // Cannot use enemy moveset override for this test, since it interferes with checking PP game.override.enemyMoveset([]); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyPokemon()!; - enemyPokemon.moveset = [new PokemonMove(Moves.EMBER)]; + enemyPokemon.moveset = [new PokemonMove(MoveId.EMBER)]; - game.move.select(Moves.POWDER); + game.move.select(MoveId.POWDER); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); @@ -55,7 +55,7 @@ describe("Moves - Powder", () => { await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); @@ -64,13 +64,13 @@ describe("Moves - Powder", () => { }); it("should have no effect against Grass-type Pokemon", async () => { - game.override.enemySpecies(Species.AMOONGUSS); + game.override.enemySpecies(SpeciesId.AMOONGUSS); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.POWDER); + game.move.select(MoveId.POWDER); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); @@ -78,13 +78,13 @@ describe("Moves - Powder", () => { }); it("should have no effect against Pokemon with Overcoat", async () => { - game.override.enemyAbility(Abilities.OVERCOAT); + game.override.enemyAbility(AbilityId.OVERCOAT); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.POWDER); + game.move.select(MoveId.POWDER); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); @@ -92,13 +92,13 @@ describe("Moves - Powder", () => { }); it("should not damage the target if the target has Magic Guard", async () => { - game.override.enemyAbility(Abilities.MAGIC_GUARD); + game.override.enemyAbility(AbilityId.MAGIC_GUARD); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.POWDER); + game.move.select(MoveId.POWDER); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); @@ -106,13 +106,13 @@ describe("Moves - Powder", () => { }); it("should not damage the target if Primordial Sea is active", async () => { - game.override.enemyAbility(Abilities.PRIMORDIAL_SEA); + game.override.enemyAbility(AbilityId.PRIMORDIAL_SEA); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.POWDER); + game.move.select(MoveId.POWDER); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); @@ -120,13 +120,13 @@ describe("Moves - Powder", () => { }); it("should not prevent the target from thawing out with Flame Wheel", async () => { - game.override.enemyMoveset(Moves.FLAME_WHEEL).enemyStatusEffect(StatusEffect.FREEZE); + game.override.enemyMoveset(MoveId.FLAME_WHEEL).enemyStatusEffect(StatusEffect.FREEZE); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.POWDER); + game.move.select(MoveId.POWDER); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.status?.effect).not.toBe(StatusEffect.FREEZE); @@ -135,13 +135,13 @@ describe("Moves - Powder", () => { }); it("should not allow a target with Protean to change to Fire type", async () => { - game.override.enemyAbility(Abilities.PROTEAN); + game.override.enemyAbility(AbilityId.PROTEAN); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.POWDER); + game.move.select(MoveId.POWDER); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); @@ -150,22 +150,22 @@ describe("Moves - Powder", () => { }); it("should cancel Fire-type moves generated by the target's Dancer ability", async () => { - game.override.battleStyle("double").enemySpecies(Species.BLASTOISE).enemyAbility(Abilities.DANCER); + game.override.battleStyle("double").enemySpecies(SpeciesId.BLASTOISE).enemyAbility(AbilityId.DANCER); - await game.classicMode.startBattle([Species.CHARIZARD, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; // Turn 1: Roar away 1 opponent - game.move.select(Moves.ROAR, 0, BattlerIndex.ENEMY_2); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.ROAR, 0, BattlerIndex.ENEMY_2); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); // Turn 2: Enemy should activate Powder twice: From using Ember, and from copying Fiery Dance via Dancer playerPokemon.hp = playerPokemon.getMaxHp(); - game.move.select(Moves.FIERY_DANCE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.POWDER, 1, BattlerIndex.ENEMY); + game.move.select(MoveId.FIERY_DANCE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.POWDER, 1, BattlerIndex.ENEMY); await game.phaseInterceptor.to(MoveEffectPhase); const enemyStartingHp = enemyPokemon.hp; @@ -182,29 +182,29 @@ describe("Moves - Powder", () => { }); it("should cancel Fiery Dance, then prevent it from triggering Dancer", async () => { - game.override.ability(Abilities.DANCER).enemyMoveset(Moves.FIERY_DANCE); + game.override.ability(AbilityId.DANCER).enemyMoveset(MoveId.FIERY_DANCE); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.POWDER); + game.move.select(MoveId.POWDER); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); expect(enemyPokemon.hp).toBe(Math.ceil((3 * enemyPokemon.getMaxHp()) / 4)); - expect(playerPokemon.getLastXMoves()[0].move).toBe(Moves.POWDER); + expect(playerPokemon.getLastXMoves()[0].move).toBe(MoveId.POWDER); }); it("should cancel Revelation Dance if it becomes a Fire-type move", async () => { - game.override.enemySpecies(Species.CHARIZARD).enemyMoveset(Moves.REVELATION_DANCE); + game.override.enemySpecies(SpeciesId.CHARIZARD).enemyMoveset(MoveId.REVELATION_DANCE); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.POWDER); + game.move.select(MoveId.POWDER); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); @@ -212,13 +212,13 @@ describe("Moves - Powder", () => { }); it("should cancel Shell Trap and damage the target, even if the move would fail", async () => { - game.override.enemyMoveset(Moves.SHELL_TRAP); + game.override.enemyMoveset(MoveId.SHELL_TRAP); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.POWDER); + game.move.select(MoveId.POWDER); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); @@ -226,15 +226,15 @@ describe("Moves - Powder", () => { }); it("should cancel Grass Pledge if used after ally's Fire Pledge", async () => { - game.override.enemyMoveset([Moves.FIRE_PLEDGE, Moves.GRASS_PLEDGE]).battleStyle("double"); + game.override.enemyMoveset([MoveId.FIRE_PLEDGE, MoveId.GRASS_PLEDGE]).battleStyle("double"); - await game.classicMode.startBattle([Species.CHARIZARD, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.POWDER, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.GRASS_PLEDGE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER); + game.move.select(MoveId.POWDER, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.GRASS_PLEDGE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.FIRE_PLEDGE, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(BerryPhase, false); @@ -243,15 +243,15 @@ describe("Moves - Powder", () => { }); it("should cancel Fire Pledge if used before ally's Water Pledge", async () => { - game.override.enemyMoveset([Moves.FIRE_PLEDGE, Moves.WATER_PLEDGE]).battleStyle("double"); + game.override.enemyMoveset([MoveId.FIRE_PLEDGE, MoveId.WATER_PLEDGE]).battleStyle("double"); - await game.classicMode.startBattle([Species.CHARIZARD, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.POWDER, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.WATER_PLEDGE, BattlerIndex.PLAYER); + game.move.select(MoveId.POWDER, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.FIRE_PLEDGE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.WATER_PLEDGE, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to(BerryPhase, false); @@ -260,15 +260,15 @@ describe("Moves - Powder", () => { }); it("should NOT cancel Fire Pledge if used after ally's Water Pledge", async () => { - game.override.enemyMoveset([Moves.FIRE_PLEDGE, Moves.WATER_PLEDGE]).battleStyle("double"); + game.override.enemyMoveset([MoveId.FIRE_PLEDGE, MoveId.WATER_PLEDGE]).battleStyle("double"); - await game.classicMode.startBattle([Species.CHARIZARD, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.POWDER, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); - await game.move.selectEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.WATER_PLEDGE, BattlerIndex.PLAYER); + game.move.select(MoveId.POWDER, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); + await game.move.selectEnemyMove(MoveId.FIRE_PLEDGE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.WATER_PLEDGE, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/power_shift.test.ts b/test/moves/power_shift.test.ts index 0fee044f5ad..cd5252c3f2f 100644 --- a/test/moves/power_shift.test.ts +++ b/test/moves/power_shift.test.ts @@ -1,7 +1,7 @@ -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#app/enums/stat"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -22,22 +22,22 @@ describe("Moves - Power Shift", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.POWER_SHIFT, Moves.BULK_UP]) + .moveset([MoveId.POWER_SHIFT, MoveId.BULK_UP]) .battleStyle("single") - .ability(Abilities.BALL_FETCH) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .ability(AbilityId.BALL_FETCH) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("switches the user's raw Attack stat with its raw Defense stat", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; playerPokemon.setStat(Stat.ATK, 10, false); playerPokemon.setStat(Stat.DEF, 20, false); - game.move.select(Moves.BULK_UP); + game.move.select(MoveId.BULK_UP); await game.phaseInterceptor.to("TurnEndPhase"); @@ -47,7 +47,7 @@ describe("Moves - Power Shift", () => { await game.toNextTurn(); - game.move.select(Moves.POWER_SHIFT); + game.move.select(MoveId.POWER_SHIFT); await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/moves/power_split.test.ts b/test/moves/power_split.test.ts index ca712f0a64e..6e0763fb87d 100644 --- a/test/moves/power_split.test.ts +++ b/test/moves/power_split.test.ts @@ -1,11 +1,11 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { Stat } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; describe("Moves - Power Split", () => { let phaserGame: Phaser.Game; @@ -25,16 +25,16 @@ describe("Moves - Power Split", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemyAbility(Abilities.NONE) - .enemySpecies(Species.MEW) + .enemyAbility(AbilityId.NONE) + .enemySpecies(SpeciesId.MEW) .enemyLevel(200) - .moveset([Moves.POWER_SPLIT]) - .ability(Abilities.NONE); + .moveset([MoveId.POWER_SPLIT]) + .ability(AbilityId.NONE); }); it("should average the user's ATK and SPATK stats with those of the target", async () => { - game.override.enemyMoveset(Moves.SPLASH); - await game.classicMode.startBattle([Species.INDEEDEE]); + game.override.enemyMoveset(MoveId.SPLASH); + await game.classicMode.startBattle([SpeciesId.INDEEDEE]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -42,7 +42,7 @@ describe("Moves - Power Split", () => { const avgAtk = Math.floor((player.getStat(Stat.ATK, false) + enemy.getStat(Stat.ATK, false)) / 2); const avgSpAtk = Math.floor((player.getStat(Stat.SPATK, false) + enemy.getStat(Stat.SPATK, false)) / 2); - game.move.select(Moves.POWER_SPLIT); + game.move.select(MoveId.POWER_SPLIT); await game.phaseInterceptor.to(TurnEndPhase); expect(player.getStat(Stat.ATK, false)).toBe(avgAtk); @@ -53,8 +53,8 @@ describe("Moves - Power Split", () => { }, 20000); it("should be idempotent", async () => { - game.override.enemyMoveset([Moves.POWER_SPLIT]); - await game.classicMode.startBattle([Species.INDEEDEE]); + game.override.enemyMoveset([MoveId.POWER_SPLIT]); + await game.classicMode.startBattle([SpeciesId.INDEEDEE]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -62,10 +62,10 @@ describe("Moves - Power Split", () => { const avgAtk = Math.floor((player.getStat(Stat.ATK, false) + enemy.getStat(Stat.ATK, false)) / 2); const avgSpAtk = Math.floor((player.getStat(Stat.SPATK, false) + enemy.getStat(Stat.SPATK, false)) / 2); - game.move.select(Moves.POWER_SPLIT); + game.move.select(MoveId.POWER_SPLIT); await game.phaseInterceptor.to(TurnEndPhase); - game.move.select(Moves.POWER_SPLIT); + game.move.select(MoveId.POWER_SPLIT); await game.phaseInterceptor.to(TurnEndPhase); expect(player.getStat(Stat.ATK, false)).toBe(avgAtk); diff --git a/test/moves/power_swap.test.ts b/test/moves/power_swap.test.ts index 5f6aa022a51..82662850c77 100644 --- a/test/moves/power_swap.test.ts +++ b/test/moves/power_swap.test.ts @@ -1,11 +1,11 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { Stat, BATTLE_STATS } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { MoveEndPhase } from "#app/phases/move-end-phase"; describe("Moves - Power Swap", () => { @@ -25,23 +25,23 @@ describe("Moves - Power Swap", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) - .enemySpecies(Species.INDEEDEE) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .enemySpecies(SpeciesId.INDEEDEE) .enemyLevel(200) - .moveset([Moves.POWER_SWAP]) - .ability(Abilities.NONE); + .moveset([MoveId.POWER_SWAP]) + .ability(AbilityId.NONE); }); it("should swap the user's ATK and SPATK stat stages with the target's", async () => { - await game.classicMode.startBattle([Species.INDEEDEE]); + await game.classicMode.startBattle([SpeciesId.INDEEDEE]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy.summonData, "statStages", "get").mockReturnValue(new Array(BATTLE_STATS.length).fill(1)); - game.move.select(Moves.POWER_SWAP); + game.move.select(MoveId.POWER_SWAP); await game.phaseInterceptor.to(MoveEndPhase); diff --git a/test/moves/power_trick.test.ts b/test/moves/power_trick.test.ts index 181eeca81bc..af90525d263 100644 --- a/test/moves/power_trick.test.ts +++ b/test/moves/power_trick.test.ts @@ -1,11 +1,11 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/testUtils/gameManager"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { Stat } from "#enums/stat"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; describe("Moves - Power Trick", () => { @@ -26,22 +26,22 @@ describe("Moves - Power Trick", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) - .enemySpecies(Species.MEW) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .enemySpecies(SpeciesId.MEW) .enemyLevel(200) - .moveset([Moves.POWER_TRICK]) - .ability(Abilities.BALL_FETCH); + .moveset([MoveId.POWER_TRICK]) + .ability(AbilityId.BALL_FETCH); }); it("swaps the user's ATK and DEF stats", async () => { - await game.classicMode.startBattle([Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); const player = game.scene.getPlayerPokemon()!; const baseATK = player.getStat(Stat.ATK, false); const baseDEF = player.getStat(Stat.DEF, false); - game.move.select(Moves.POWER_TRICK); + game.move.select(MoveId.POWER_TRICK); await game.phaseInterceptor.to(TurnEndPhase); @@ -51,17 +51,17 @@ describe("Moves - Power Trick", () => { }); it("resets initial ATK and DEF stat swap when used consecutively", async () => { - await game.classicMode.startBattle([Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); const player = game.scene.getPlayerPokemon()!; const baseATK = player.getStat(Stat.ATK, false); const baseDEF = player.getStat(Stat.DEF, false); - game.move.select(Moves.POWER_TRICK); + game.move.select(MoveId.POWER_TRICK); await game.phaseInterceptor.to(TurnEndPhase); - game.move.select(Moves.POWER_TRICK); + game.move.select(MoveId.POWER_TRICK); await game.phaseInterceptor.to(TurnEndPhase); @@ -71,13 +71,13 @@ describe("Moves - Power Trick", () => { }); it("should pass effect when using BATON_PASS", async () => { - await game.classicMode.startBattle([Species.SHUCKLE, Species.SHUCKLE]); - await game.override.moveset([Moves.POWER_TRICK, Moves.BATON_PASS]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE, SpeciesId.SHUCKLE]); + await game.override.moveset([MoveId.POWER_TRICK, MoveId.BATON_PASS]); const player = game.scene.getPlayerPokemon()!; player.addTag(BattlerTagType.POWER_TRICK); - game.move.select(Moves.BATON_PASS); + game.move.select(MoveId.BATON_PASS); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to(TurnEndPhase); @@ -92,13 +92,13 @@ describe("Moves - Power Trick", () => { }); it("should remove effect after using Transform", async () => { - await game.classicMode.startBattle([Species.SHUCKLE, Species.SHUCKLE]); - await game.override.moveset([Moves.POWER_TRICK, Moves.TRANSFORM]); + await game.classicMode.startBattle([SpeciesId.SHUCKLE, SpeciesId.SHUCKLE]); + await game.override.moveset([MoveId.POWER_TRICK, MoveId.TRANSFORM]); const player = game.scene.getPlayerPokemon()!; player.addTag(BattlerTagType.POWER_TRICK); - game.move.select(Moves.TRANSFORM); + game.move.select(MoveId.TRANSFORM); await game.phaseInterceptor.to(TurnEndPhase); diff --git a/test/moves/protect.test.ts b/test/moves/protect.test.ts index 14844019b31..519021023fa 100644 --- a/test/moves/protect.test.ts +++ b/test/moves/protect.test.ts @@ -1,9 +1,9 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { Stat } from "#enums/stat"; import { allMoves } from "#app/data/data-lists"; import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag"; @@ -29,22 +29,22 @@ describe("Moves - Protect", () => { game.override.battleStyle("single"); - game.override.moveset([Moves.PROTECT]); - game.override.enemySpecies(Species.SNORLAX); + game.override.moveset([MoveId.PROTECT]); + game.override.enemySpecies(SpeciesId.SNORLAX); - game.override.enemyAbility(Abilities.INSOMNIA); - game.override.enemyMoveset([Moves.TACKLE]); + game.override.enemyAbility(AbilityId.INSOMNIA); + game.override.enemyMoveset([MoveId.TACKLE]); game.override.startingLevel(100); game.override.enemyLevel(100); }); test("should protect the user from attacks", async () => { - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.PROTECT); + game.move.select(MoveId.PROTECT); await game.phaseInterceptor.to("BerryPhase", false); @@ -52,14 +52,14 @@ describe("Moves - Protect", () => { }); test("should prevent secondary effects from the opponent's attack", async () => { - game.override.enemyMoveset([Moves.CEASELESS_EDGE]); - vi.spyOn(allMoves[Moves.CEASELESS_EDGE], "accuracy", "get").mockReturnValue(100); + game.override.enemyMoveset([MoveId.CEASELESS_EDGE]); + vi.spyOn(allMoves[MoveId.CEASELESS_EDGE], "accuracy", "get").mockReturnValue(100); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.PROTECT); + game.move.select(MoveId.PROTECT); await game.phaseInterceptor.to("BerryPhase", false); @@ -68,13 +68,13 @@ describe("Moves - Protect", () => { }); test("should protect the user from status moves", async () => { - game.override.enemyMoveset([Moves.CHARM]); + game.override.enemyMoveset([MoveId.CHARM]); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.PROTECT); + game.move.select(MoveId.PROTECT); await game.phaseInterceptor.to("BerryPhase", false); @@ -82,14 +82,14 @@ describe("Moves - Protect", () => { }); test("should stop subsequent hits of a multi-hit move", async () => { - game.override.enemyMoveset([Moves.TACHYON_CUTTER]); + game.override.enemyMoveset([MoveId.TACHYON_CUTTER]); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.PROTECT); + game.move.select(MoveId.PROTECT); await game.phaseInterceptor.to("BerryPhase", false); @@ -98,14 +98,14 @@ describe("Moves - Protect", () => { }); test("should fail if the user is the last to move in the turn", async () => { - game.override.enemyMoveset([Moves.PROTECT]); + game.override.enemyMoveset([MoveId.PROTECT]); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.PROTECT); + game.move.select(MoveId.PROTECT); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); diff --git a/test/moves/psycho_shift.test.ts b/test/moves/psycho_shift.test.ts index 678742906c7..f92eea5fd38 100644 --- a/test/moves/psycho_shift.test.ts +++ b/test/moves/psycho_shift.test.ts @@ -1,7 +1,7 @@ import { StatusEffect } from "#app/enums/status-effect"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,25 +23,25 @@ describe("Moves - Psycho Shift", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.PSYCHO_SHIFT]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.PSYCHO_SHIFT]) + .ability(AbilityId.BALL_FETCH) .statusEffect(StatusEffect.POISON) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) + .enemySpecies(SpeciesId.MAGIKARP) .enemyLevel(20) - .enemyAbility(Abilities.SYNCHRONIZE) - .enemyMoveset(Moves.SPLASH); + .enemyAbility(AbilityId.SYNCHRONIZE) + .enemyMoveset(MoveId.SPLASH); }); it("If Psycho Shift is used on a Pokémon with Synchronize, the user of Psycho Shift will already be afflicted with a status condition when Synchronize activates", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const playerPokemon = game.scene.getPlayerPokemon(); const enemyPokemon = game.scene.getEnemyPokemon(); expect(enemyPokemon?.status).toBeUndefined(); - game.move.select(Moves.PSYCHO_SHIFT); + game.move.select(MoveId.PSYCHO_SHIFT); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon?.status).toBeNull(); expect(enemyPokemon?.status).toBeDefined(); diff --git a/test/moves/purify.test.ts b/test/moves/purify.test.ts index 0439ba39108..cab0a70818f 100644 --- a/test/moves/purify.test.ts +++ b/test/moves/purify.test.ts @@ -2,8 +2,8 @@ import { BattlerIndex } from "#app/battle"; import { Status } from "#app/data/status-effect"; import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -27,13 +27,13 @@ describe("Moves - Purify", () => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.starterSpecies(Species.PYUKUMUKU); + game.override.starterSpecies(SpeciesId.PYUKUMUKU); game.override.startingLevel(10); - game.override.moveset([Moves.PURIFY, Moves.SIZZLY_SLIDE]); + game.override.moveset([MoveId.PURIFY, MoveId.SIZZLY_SLIDE]); - game.override.enemySpecies(Species.MAGIKARP); + game.override.enemySpecies(SpeciesId.MAGIKARP); game.override.enemyLevel(10); - game.override.enemyMoveset([Moves.SPLASH, Moves.NONE, Moves.NONE, Moves.NONE]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.NONE, MoveId.NONE, MoveId.NONE]); }); test("Purify heals opponent status effect and restores user hp", async () => { @@ -45,7 +45,7 @@ describe("Moves - Purify", () => { playerPokemon.hp = playerPokemon.getMaxHp() - 1; enemyPokemon.status = new Status(StatusEffect.BURN); - game.move.select(Moves.PURIFY); + game.move.select(MoveId.PURIFY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEndPhase); @@ -61,7 +61,7 @@ describe("Moves - Purify", () => { playerPokemon.hp = playerPokemon.getMaxHp() - 1; const playerInitialHp = playerPokemon.hp; - game.move.select(Moves.PURIFY); + game.move.select(MoveId.PURIFY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEndPhase); diff --git a/test/moves/quash.test.ts b/test/moves/quash.test.ts index f242dafe365..88cb0aba31f 100644 --- a/test/moves/quash.test.ts +++ b/test/moves/quash.test.ts @@ -1,6 +1,6 @@ -import { Species } from "#enums/species"; -import { Moves } from "#enums/moves"; -import { Abilities } from "#app/enums/abilities"; +import { SpeciesId } from "#enums/species-id"; +import { MoveId } from "#enums/move-id"; +import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#app/battle"; import { WeatherType } from "#enums/weather-type"; import { MoveResult } from "#app/field/pokemon"; @@ -27,20 +27,20 @@ describe("Moves - Quash", () => { game.override .battleStyle("double") .enemyLevel(1) - .enemySpecies(Species.SLOWPOKE) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.RAIN_DANCE, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) - .moveset([Moves.QUASH, Moves.SUNNY_DAY, Moves.RAIN_DANCE, Moves.SPLASH]); + .enemySpecies(SpeciesId.SLOWPOKE) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.RAIN_DANCE, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) + .moveset([MoveId.QUASH, MoveId.SUNNY_DAY, MoveId.RAIN_DANCE, MoveId.SPLASH]); }); it("makes the target move last in a turn, ignoring priority", async () => { - await game.classicMode.startBattle([Species.ACCELGOR, Species.RATTATA]); + await game.classicMode.startBattle([SpeciesId.ACCELGOR, SpeciesId.RATTATA]); - game.move.select(Moves.QUASH, 0, BattlerIndex.PLAYER_2); - game.move.select(Moves.SUNNY_DAY, 1); - await game.move.selectEnemyMove(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.RAIN_DANCE); + game.move.select(MoveId.QUASH, 0, BattlerIndex.PLAYER_2); + game.move.select(MoveId.SUNNY_DAY, 1); + await game.move.selectEnemyMove(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.RAIN_DANCE); await game.phaseInterceptor.to("TurnEndPhase", false); // will be sunny if player_2 moved last because of quash, rainy otherwise @@ -48,9 +48,9 @@ describe("Moves - Quash", () => { }); it("fails if the target has already moved", async () => { - await game.classicMode.startBattle([Species.ACCELGOR, Species.RATTATA]); - game.move.select(Moves.SPLASH, 0); - game.move.select(Moves.QUASH, 1, BattlerIndex.PLAYER); + await game.classicMode.startBattle([SpeciesId.ACCELGOR, SpeciesId.RATTATA]); + game.move.select(MoveId.SPLASH, 0); + game.move.select(MoveId.QUASH, 1, BattlerIndex.PLAYER); await game.phaseInterceptor.to("MoveEndPhase"); await game.phaseInterceptor.to("MoveEndPhase"); @@ -59,37 +59,37 @@ describe("Moves - Quash", () => { }); it("makes multiple quashed targets move in speed order at the end of the turn", async () => { - game.override.enemySpecies(Species.NINJASK).enemyLevel(100); + game.override.enemySpecies(SpeciesId.NINJASK).enemyLevel(100); - await game.classicMode.startBattle([Species.ACCELGOR, Species.RATTATA]); + await game.classicMode.startBattle([SpeciesId.ACCELGOR, SpeciesId.RATTATA]); // both users are quashed - rattata is slower so sun should be up at end of turn - game.move.select(Moves.RAIN_DANCE, 0); - game.move.select(Moves.SUNNY_DAY, 1); + game.move.select(MoveId.RAIN_DANCE, 0); + game.move.select(MoveId.SUNNY_DAY, 1); - await game.move.selectEnemyMove(Moves.QUASH, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.QUASH, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.QUASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.QUASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("TurnEndPhase", false); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SUNNY); }); it("respects trick room", async () => { - game.override.enemyMoveset([Moves.RAIN_DANCE, Moves.SPLASH, Moves.TRICK_ROOM]); + game.override.enemyMoveset([MoveId.RAIN_DANCE, MoveId.SPLASH, MoveId.TRICK_ROOM]); - await game.classicMode.startBattle([Species.ACCELGOR, Species.RATTATA]); - game.move.select(Moves.SPLASH, 0); - game.move.select(Moves.SPLASH, 1); + await game.classicMode.startBattle([SpeciesId.ACCELGOR, SpeciesId.RATTATA]); + game.move.select(MoveId.SPLASH, 0); + game.move.select(MoveId.SPLASH, 1); - await game.move.selectEnemyMove(Moves.TRICK_ROOM); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.TRICK_ROOM); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("TurnInitPhase"); // both users are quashed - accelgor should move last w/ TR so rain should be up at end of turn - game.move.select(Moves.RAIN_DANCE, 0); - game.move.select(Moves.SUNNY_DAY, 1); + game.move.select(MoveId.RAIN_DANCE, 0); + game.move.select(MoveId.SUNNY_DAY, 1); - await game.move.selectEnemyMove(Moves.QUASH, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.QUASH, BattlerIndex.PLAYER_2); + await game.move.selectEnemyMove(MoveId.QUASH, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.QUASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("TurnEndPhase", false); expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.RAIN); diff --git a/test/moves/quick_guard.test.ts b/test/moves/quick_guard.test.ts index d9970ce64fa..0c0ab8d6ad0 100644 --- a/test/moves/quick_guard.test.ts +++ b/test/moves/quick_guard.test.ts @@ -1,9 +1,9 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { Stat } from "#enums/stat"; import { BattlerIndex } from "#app/battle"; import { MoveResult } from "#app/field/pokemon"; @@ -27,23 +27,23 @@ describe("Moves - Quick Guard", () => { game.override.battleStyle("double"); - game.override.moveset([Moves.QUICK_GUARD, Moves.SPLASH, Moves.FOLLOW_ME]); + game.override.moveset([MoveId.QUICK_GUARD, MoveId.SPLASH, MoveId.FOLLOW_ME]); - game.override.enemySpecies(Species.SNORLAX); - game.override.enemyMoveset([Moves.QUICK_ATTACK]); - game.override.enemyAbility(Abilities.INSOMNIA); + game.override.enemySpecies(SpeciesId.SNORLAX); + game.override.enemyMoveset([MoveId.QUICK_ATTACK]); + game.override.enemyAbility(AbilityId.INSOMNIA); game.override.startingLevel(100); game.override.enemyLevel(100); }); test("should protect the user and allies from priority moves", async () => { - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const playerPokemon = game.scene.getPlayerField(); - game.move.select(Moves.QUICK_GUARD); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.QUICK_GUARD); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase", false); @@ -51,15 +51,15 @@ describe("Moves - Quick Guard", () => { }); test("should protect the user and allies from Prankster-boosted moves", async () => { - game.override.enemyAbility(Abilities.PRANKSTER); - game.override.enemyMoveset([Moves.GROWL]); + game.override.enemyAbility(AbilityId.PRANKSTER); + game.override.enemyMoveset([MoveId.GROWL]); - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const playerPokemon = game.scene.getPlayerField(); - game.move.select(Moves.QUICK_GUARD); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.QUICK_GUARD); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase", false); @@ -67,15 +67,15 @@ describe("Moves - Quick Guard", () => { }); test("should stop subsequent hits of a multi-hit priority move", async () => { - game.override.enemyMoveset([Moves.WATER_SHURIKEN]); + game.override.enemyMoveset([MoveId.WATER_SHURIKEN]); - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.QUICK_GUARD); - game.move.select(Moves.FOLLOW_ME, 1); + game.move.select(MoveId.QUICK_GUARD); + game.move.select(MoveId.FOLLOW_ME, 1); await game.phaseInterceptor.to("BerryPhase", false); @@ -85,14 +85,14 @@ describe("Moves - Quick Guard", () => { test("should fail if the user is the last to move in the turn", async () => { game.override.battleStyle("single"); - game.override.enemyMoveset([Moves.QUICK_GUARD]); + game.override.enemyMoveset([MoveId.QUICK_GUARD]); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.QUICK_GUARD); + game.move.select(MoveId.QUICK_GUARD); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); diff --git a/test/moves/rage_fist.test.ts b/test/moves/rage_fist.test.ts index 9e5810039a8..cd9147637a5 100644 --- a/test/moves/rage_fist.test.ts +++ b/test/moves/rage_fist.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { allMoves } from "#app/data/data-lists"; import type Move from "#app/data/moves/move"; import GameManager from "#test/testUtils/gameManager"; @@ -25,24 +25,24 @@ describe("Moves - Rage Fist", () => { }); beforeEach(() => { - move = allMoves[Moves.RAGE_FIST]; + move = allMoves[MoveId.RAGE_FIST]; game = new GameManager(phaserGame); game.override .battleStyle("single") - .moveset([Moves.RAGE_FIST, Moves.SPLASH, Moves.SUBSTITUTE, Moves.TIDY_UP]) + .moveset([MoveId.RAGE_FIST, MoveId.SPLASH, MoveId.SUBSTITUTE, MoveId.TIDY_UP]) .startingLevel(100) .enemyLevel(1) - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.DOUBLE_KICK); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.DOUBLE_KICK); vi.spyOn(move, "calculateBattlePower"); }); it("should gain power per hit taken", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.RAGE_FIST); + game.move.select(MoveId.RAGE_FIST); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); @@ -50,17 +50,17 @@ describe("Moves - Rage Fist", () => { }); it("caps at 6 hits taken", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); // spam splash against magikarp hitting us 2 times per turn - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); - game.move.select(Moves.RAGE_FIST); + game.move.select(MoveId.RAGE_FIST); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); @@ -70,12 +70,12 @@ describe("Moves - Rage Fist", () => { }); it("should not count substitute hits or confusion damage", async () => { - game.override.enemySpecies(Species.SHUCKLE).enemyMoveset([Moves.CONFUSE_RAY, Moves.DOUBLE_KICK]); + game.override.enemySpecies(SpeciesId.SHUCKLE).enemyMoveset([MoveId.CONFUSE_RAY, MoveId.DOUBLE_KICK]); - await game.classicMode.startBattle([Species.REGIROCK]); + await game.classicMode.startBattle([SpeciesId.REGIROCK]); - game.move.select(Moves.SUBSTITUTE); - await game.move.selectEnemyMove(Moves.DOUBLE_KICK); + game.move.select(MoveId.SUBSTITUTE); + await game.move.selectEnemyMove(MoveId.DOUBLE_KICK); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); @@ -83,13 +83,13 @@ describe("Moves - Rage Fist", () => { expect(game.scene.getPlayerPokemon()?.battleData.hitCount).toBe(0); // remove substitute and get confused - game.move.select(Moves.TIDY_UP); - await game.move.selectEnemyMove(Moves.CONFUSE_RAY); + game.move.select(MoveId.TIDY_UP); + await game.move.selectEnemyMove(MoveId.CONFUSE_RAY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); - game.move.select(Moves.RAGE_FIST); - await game.move.selectEnemyMove(Moves.CONFUSE_RAY); + game.move.select(MoveId.RAGE_FIST); + await game.move.selectEnemyMove(MoveId.CONFUSE_RAY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceConfusionActivation(true); await game.toNextTurn(); @@ -99,15 +99,15 @@ describe("Moves - Rage Fist", () => { }); it("should maintain hits recieved between wild waves", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.RAGE_FIST); + game.move.select(MoveId.RAGE_FIST); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextWave(); expect(game.scene.getPlayerPokemon()?.battleData.hitCount).toBe(2); - game.move.select(Moves.RAGE_FIST); + game.move.select(MoveId.RAGE_FIST); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); @@ -116,14 +116,14 @@ describe("Moves - Rage Fist", () => { }); it("should reset hits recieved before trainer battles", async () => { - await game.classicMode.startBattle([Species.IRON_HANDS]); + await game.classicMode.startBattle([SpeciesId.IRON_HANDS]); const ironHands = game.scene.getPlayerPokemon()!; expect(ironHands).toBeDefined(); // beat up a magikarp - game.move.select(Moves.RAGE_FIST); - await game.move.selectEnemyMove(Moves.DOUBLE_KICK); + game.move.select(MoveId.RAGE_FIST); + await game.move.selectEnemyMove(MoveId.DOUBLE_KICK); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); @@ -138,15 +138,15 @@ describe("Moves - Rage Fist", () => { }); it("should reset hits recieved before new biome", async () => { - game.override.enemySpecies(Species.MAGIKARP).startingWave(10); + game.override.enemySpecies(SpeciesId.MAGIKARP).startingWave(10); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.RAGE_FIST); + game.move.select(MoveId.RAGE_FIST); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - game.move.select(Moves.RAGE_FIST); + game.move.select(MoveId.RAGE_FIST); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase", false); @@ -154,7 +154,7 @@ describe("Moves - Rage Fist", () => { }); it("should not reset if switched out or on reload", async () => { - game.override.enemyMoveset(Moves.TACKLE); + game.override.enemyMoveset(MoveId.TACKLE); const getPartyHitCount = () => game.scene @@ -162,10 +162,10 @@ describe("Moves - Rage Fist", () => { .filter(p => !!p) .map(m => m.battleData.hitCount); - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); // Charizard hit - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); expect(getPartyHitCount()).toEqual([1, 0]); @@ -181,12 +181,12 @@ describe("Moves - Rage Fist", () => { expect(getPartyHitCount()).toEqual([2, 1]); // Charizard rage fist - game.move.select(Moves.RAGE_FIST); + game.move.select(MoveId.RAGE_FIST); await game.phaseInterceptor.to("MoveEndPhase"); const charizard = game.scene.getPlayerPokemon()!; expect(charizard).toBeDefined(); - expect(charizard.species.speciesId).toBe(Species.CHARIZARD); + expect(charizard.species.speciesId).toBe(SpeciesId.CHARIZARD); expect(move.calculateBattlePower).toHaveLastReturnedWith(150); // go to new wave, reload game and beat up another poor sap @@ -195,7 +195,7 @@ describe("Moves - Rage Fist", () => { await game.reload.reloadSession(); // outsped and oneshot means power rmains same as prior - game.move.select(Moves.RAGE_FIST); + game.move.select(MoveId.RAGE_FIST); await game.phaseInterceptor.to("MoveEndPhase"); expect(move.calculateBattlePower).toHaveLastReturnedWith(150); }); diff --git a/test/moves/rage_powder.test.ts b/test/moves/rage_powder.test.ts index 206fd590896..e3212e9876c 100644 --- a/test/moves/rage_powder.test.ts +++ b/test/moves/rage_powder.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; @@ -23,23 +23,23 @@ describe("Moves - Rage Powder", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("double"); - game.override.enemySpecies(Species.SNORLAX); + game.override.enemySpecies(SpeciesId.SNORLAX); game.override.startingLevel(100); game.override.enemyLevel(100); - game.override.moveset([Moves.FOLLOW_ME, Moves.RAGE_POWDER, Moves.SPOTLIGHT, Moves.QUICK_ATTACK]); - game.override.enemyMoveset([Moves.RAGE_POWDER, Moves.TACKLE, Moves.SPLASH]); + game.override.moveset([MoveId.FOLLOW_ME, MoveId.RAGE_POWDER, MoveId.SPOTLIGHT, MoveId.QUICK_ATTACK]); + game.override.enemyMoveset([MoveId.RAGE_POWDER, MoveId.TACKLE, MoveId.SPLASH]); }); test("move effect should be bypassed by Grass type", async () => { - await game.classicMode.startBattle([Species.AMOONGUSS, Species.VENUSAUR]); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS, SpeciesId.VENUSAUR]); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.QUICK_ATTACK, 0, BattlerIndex.ENEMY); - game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.QUICK_ATTACK, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); - await game.move.selectEnemyMove(Moves.RAGE_POWDER); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.RAGE_POWDER); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase", false); @@ -49,20 +49,20 @@ describe("Moves - Rage Powder", () => { }); test("move effect should be bypassed by Overcoat", async () => { - game.override.ability(Abilities.OVERCOAT); + game.override.ability(AbilityId.OVERCOAT); // Test with two non-Grass type player Pokemon - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyField(); const enemyStartingHp = enemyPokemon.map(p => p.hp); - game.move.select(Moves.QUICK_ATTACK, 0, BattlerIndex.ENEMY); - game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.QUICK_ATTACK, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); - await game.move.selectEnemyMove(Moves.RAGE_POWDER); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.RAGE_POWDER); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase", false); diff --git a/test/moves/reflect.test.ts b/test/moves/reflect.test.ts index 191a1a45a09..d13fb7a095c 100644 --- a/test/moves/reflect.test.ts +++ b/test/moves/reflect.test.ts @@ -3,13 +3,13 @@ import { ArenaTagSide } from "#app/data/arena-tag"; import type Move from "#app/data/moves/move"; import { CritOnlyAttr } from "#app/data/moves/move"; import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import type Pokemon from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { NumberHolder } from "#app/utils/common"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -37,17 +37,17 @@ describe("Moves - Reflect", () => { globalScene = game.scene; game.override .battleStyle("single") - .ability(Abilities.NONE) - .moveset([Moves.ABSORB, Moves.ROCK_SLIDE, Moves.TACKLE]) + .ability(AbilityId.NONE) + .moveset([MoveId.ABSORB, MoveId.ROCK_SLIDE, MoveId.TACKLE]) .enemyLevel(100) - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.REFLECT) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.REFLECT) .disableCrits(); }); it("reduces damage of physical attacks by half in a single battle", async () => { - const moveToUse = Moves.TACKLE; - await game.classicMode.startBattle([Species.SHUCKLE]); + const moveToUse = MoveId.TACKLE; + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); game.move.select(moveToUse); @@ -64,8 +64,8 @@ describe("Moves - Reflect", () => { it("reduces damage of physical attacks by a third in a double battle", async () => { game.override.battleStyle("double"); - const moveToUse = Moves.ROCK_SLIDE; - await game.classicMode.startBattle([Species.SHUCKLE, Species.SHUCKLE]); + const moveToUse = MoveId.ROCK_SLIDE; + await game.classicMode.startBattle([SpeciesId.SHUCKLE, SpeciesId.SHUCKLE]); game.move.select(moveToUse); game.move.select(moveToUse, 1); @@ -81,8 +81,8 @@ describe("Moves - Reflect", () => { }); it("does not affect special attacks", async () => { - const moveToUse = Moves.ABSORB; - await game.classicMode.startBattle([Species.SHUCKLE]); + const moveToUse = MoveId.ABSORB; + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); game.move.select(moveToUse); @@ -98,9 +98,9 @@ describe("Moves - Reflect", () => { }); it("does not affect critical hits", async () => { - game.override.moveset([Moves.WICKED_BLOW]); - const moveToUse = Moves.WICKED_BLOW; - await game.classicMode.startBattle([Species.SHUCKLE]); + game.override.moveset([MoveId.WICKED_BLOW]); + const moveToUse = MoveId.WICKED_BLOW; + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); game.move.select(moveToUse); await game.phaseInterceptor.to(TurnEndPhase); @@ -115,9 +115,9 @@ describe("Moves - Reflect", () => { }); it("does not affect critical hits", async () => { - game.override.moveset([Moves.WICKED_BLOW]); - const moveToUse = Moves.WICKED_BLOW; - await game.classicMode.startBattle([Species.SHUCKLE]); + game.override.moveset([MoveId.WICKED_BLOW]); + const moveToUse = MoveId.WICKED_BLOW; + await game.classicMode.startBattle([SpeciesId.SHUCKLE]); game.move.select(moveToUse); await game.phaseInterceptor.to(TurnEndPhase); @@ -132,7 +132,7 @@ describe("Moves - Reflect", () => { }); /** - * Calculates the damage of a move multiplied by screen's multiplier, Reflect in this case {@linkcode Moves.REFLECT}. + * Calculates the damage of a move multiplied by screen's multiplier, Reflect in this case {@linkcode MoveId.REFLECT}. * Please note this does not consider other damage calculations except the screen multiplier. * * @param defender - The defending Pokémon. diff --git a/test/moves/reflect_type.test.ts b/test/moves/reflect_type.test.ts index 63772aa746f..86c70ed62f1 100644 --- a/test/moves/reflect_type.test.ts +++ b/test/moves/reflect_type.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { PokemonType } from "#enums/pokemon-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -22,32 +22,32 @@ describe("Moves - Reflect Type", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.ability(Abilities.BALL_FETCH).battleStyle("single").disableCrits().enemyAbility(Abilities.BALL_FETCH); + game.override.ability(AbilityId.BALL_FETCH).battleStyle("single").disableCrits().enemyAbility(AbilityId.BALL_FETCH); }); it("will make the user Normal/Grass if targetting a typeless Pokemon affected by Forest's Curse", async () => { game.override - .moveset([Moves.FORESTS_CURSE, Moves.REFLECT_TYPE]) + .moveset([MoveId.FORESTS_CURSE, MoveId.REFLECT_TYPE]) .startingLevel(60) - .enemySpecies(Species.CHARMANDER) - .enemyMoveset([Moves.BURN_UP, Moves.SPLASH]); - await game.classicMode.startBattle([Species.FEEBAS]); + .enemySpecies(SpeciesId.CHARMANDER) + .enemyMoveset([MoveId.BURN_UP, MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const playerPokemon = game.scene.getPlayerPokemon(); const enemyPokemon = game.scene.getEnemyPokemon(); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.BURN_UP); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.BURN_UP); await game.toNextTurn(); - game.move.select(Moves.FORESTS_CURSE); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.FORESTS_CURSE); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); expect(enemyPokemon?.getTypes().includes(PokemonType.UNKNOWN)).toBe(true); expect(enemyPokemon?.getTypes().includes(PokemonType.GRASS)).toBe(true); - game.move.select(Moves.REFLECT_TYPE); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.REFLECT_TYPE); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon?.getTypes()[0]).toBe(PokemonType.NORMAL); expect(playerPokemon?.getTypes().includes(PokemonType.GRASS)).toBe(true); diff --git a/test/moves/relic_song.test.ts b/test/moves/relic_song.test.ts index 86195e81a24..b3dd400a202 100644 --- a/test/moves/relic_song.test.ts +++ b/test/moves/relic_song.test.ts @@ -1,8 +1,8 @@ import { PokemonType } from "#enums/pokemon-type"; import { Challenges } from "#app/enums/challenges"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,25 +23,25 @@ describe("Moves - Relic Song", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.RELIC_SONG, Moves.SPLASH]) + .moveset([MoveId.RELIC_SONG, MoveId.SPLASH]) .battleStyle("single") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) - .enemySpecies(Species.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .enemySpecies(SpeciesId.MAGIKARP) .enemyLevel(100); }); it("swaps Meloetta's form between Aria and Pirouette", async () => { - await game.classicMode.startBattle([Species.MELOETTA]); + await game.classicMode.startBattle([SpeciesId.MELOETTA]); const meloetta = game.scene.getPlayerPokemon()!; - game.move.select(Moves.RELIC_SONG); + game.move.select(MoveId.RELIC_SONG); await game.toNextTurn(); expect(meloetta.formIndex).toBe(1); - game.move.select(Moves.RELIC_SONG); + game.move.select(MoveId.RELIC_SONG); await game.phaseInterceptor.to("BerryPhase"); expect(meloetta.formIndex).toBe(0); @@ -49,13 +49,13 @@ describe("Moves - Relic Song", () => { it("doesn't swap Meloetta's form during a mono-type challenge", async () => { game.challengeMode.addChallenge(Challenges.SINGLE_TYPE, PokemonType.PSYCHIC + 1, 0); - await game.challengeMode.startBattle([Species.MELOETTA]); + await game.challengeMode.startBattle([SpeciesId.MELOETTA]); const meloetta = game.scene.getPlayerPokemon()!; expect(meloetta.formIndex).toBe(0); - game.move.select(Moves.RELIC_SONG); + game.move.select(MoveId.RELIC_SONG); await game.phaseInterceptor.to("BerryPhase"); await game.toNextTurn(); @@ -63,12 +63,12 @@ describe("Moves - Relic Song", () => { }); it("doesn't swap Meloetta's form during biome change (arena reset)", async () => { - game.override.starterForms({ [Species.MELOETTA]: 1 }).startingWave(10); - await game.classicMode.startBattle([Species.MELOETTA]); + game.override.starterForms({ [SpeciesId.MELOETTA]: 1 }).startingWave(10); + await game.classicMode.startBattle([SpeciesId.MELOETTA]); const meloetta = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.toNextWave(); diff --git a/test/moves/retaliate.test.ts b/test/moves/retaliate.test.ts index 24d0cd542cb..16261c71dc3 100644 --- a/test/moves/retaliate.test.ts +++ b/test/moves/retaliate.test.ts @@ -1,8 +1,8 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; -import { Moves } from "#enums/moves"; +import { SpeciesId } from "#enums/species-id"; +import { MoveId } from "#enums/move-id"; import { allMoves } from "#app/data/data-lists"; import type Move from "#app/data/moves/move"; @@ -23,28 +23,28 @@ describe("Moves - Retaliate", () => { }); beforeEach(() => { - retaliate = allMoves[Moves.RETALIATE]; + retaliate = allMoves[MoveId.RETALIATE]; game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.SNORLAX) - .enemyMoveset(Moves.RETALIATE) + .enemySpecies(SpeciesId.SNORLAX) + .enemyMoveset(MoveId.RETALIATE) .enemyLevel(100) - .moveset([Moves.RETALIATE, Moves.SPLASH]) + .moveset([MoveId.RETALIATE, MoveId.SPLASH]) .startingLevel(80) .disableCrits(); }); it("increases power if ally died previous turn", async () => { vi.spyOn(retaliate, "calculateBattlePower"); - await game.classicMode.startBattle([Species.ABRA, Species.COBALION]); - game.move.select(Moves.RETALIATE); + await game.classicMode.startBattle([SpeciesId.ABRA, SpeciesId.COBALION]); + game.move.select(MoveId.RETALIATE); await game.phaseInterceptor.to("TurnEndPhase"); expect(retaliate.calculateBattlePower).toHaveLastReturnedWith(70); game.doSelectPartyPokemon(1); await game.toNextTurn(); - game.move.select(Moves.RETALIATE); + game.move.select(MoveId.RETALIATE); await game.phaseInterceptor.to("MoveEffectPhase"); expect(retaliate.calculateBattlePower).toHaveReturnedWith(140); }); diff --git a/test/moves/revival_blessing.test.ts b/test/moves/revival_blessing.test.ts index ded18e3ffb8..07ebf657c66 100644 --- a/test/moves/revival_blessing.test.ts +++ b/test/moves/revival_blessing.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; import { MoveResult } from "#app/field/pokemon"; import { toDmgValue } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,26 +25,26 @@ describe("Moves - Revival Blessing", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.REVIVAL_BLESSING, Moves.MEMENTO]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH, MoveId.REVIVAL_BLESSING, MoveId.MEMENTO]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should revive a selected fainted Pokemon when used by the player", async () => { - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); - game.move.select(Moves.MEMENTO); + game.move.select(MoveId.MEMENTO); game.doSelectPartyPokemon(1, "SwitchPhase"); await game.toNextTurn(); const player = game.scene.getPlayerPokemon()!; - expect(player.species.speciesId).toBe(Species.MAGIKARP); - game.move.select(Moves.REVIVAL_BLESSING); + expect(player.species.speciesId).toBe(SpeciesId.MAGIKARP); + game.move.select(MoveId.REVIVAL_BLESSING); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); game.doSelectPartyPokemon(1, "RevivalBlessingPhase"); @@ -57,15 +57,15 @@ describe("Moves - Revival Blessing", () => { }); it("should revive a random fainted enemy when used by an enemy Trainer", async () => { - game.override.enemyMoveset(Moves.REVIVAL_BLESSING).startingWave(8); + game.override.enemyMoveset(MoveId.REVIVAL_BLESSING).startingWave(8); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("MoveEndPhase", false); @@ -76,9 +76,9 @@ describe("Moves - Revival Blessing", () => { }); it("should fail when there are no fainted Pokemon to target", async () => { - await game.classicMode.startBattle([Species.FEEBAS, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); - game.move.select(Moves.REVIVAL_BLESSING); + game.move.select(MoveId.REVIVAL_BLESSING); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase", false); @@ -89,17 +89,17 @@ describe("Moves - Revival Blessing", () => { it("should revive a player pokemon and immediately send it back out if used in the same turn it fainted in doubles", async () => { game.override .battleStyle("double") - .enemyMoveset([Moves.SPLASH, Moves.FISSURE]) - .enemyAbility(Abilities.NO_GUARD) + .enemyMoveset([MoveId.SPLASH, MoveId.FISSURE]) + .enemyAbility(AbilityId.NO_GUARD) .enemyLevel(100); - await game.classicMode.startBattle([Species.FEEBAS, Species.MILOTIC, Species.GYARADOS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MILOTIC, SpeciesId.GYARADOS]); const feebas = game.scene.getPlayerField()[0]; - game.move.select(Moves.SPLASH); - game.move.select(Moves.REVIVAL_BLESSING, 1); - await game.move.selectEnemyMove(Moves.FISSURE, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.REVIVAL_BLESSING, 1); + await game.move.selectEnemyMove(MoveId.FISSURE, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -116,13 +116,17 @@ describe("Moves - Revival Blessing", () => { }); it("should not summon multiple pokemon to the same slot when reviving the enemy ally in doubles", async () => { - game.override.battleStyle("double").enemyMoveset([Moves.REVIVAL_BLESSING]).moveset([Moves.SPLASH]).startingWave(25); // 2nd rival battle - must have 3+ pokemon - await game.classicMode.startBattle([Species.ARCEUS, Species.GIRATINA]); + game.override + .battleStyle("double") + .enemyMoveset([MoveId.REVIVAL_BLESSING]) + .moveset([MoveId.SPLASH]) + .startingWave(25); // 2nd rival battle - must have 3+ pokemon + await game.classicMode.startBattle([SpeciesId.ARCEUS, SpeciesId.GIRATINA]); const enemyFainting = game.scene.getEnemyField()[0]; - game.move.select(Moves.SPLASH, 0); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 0); + game.move.select(MoveId.SPLASH, 1); await game.killPokemon(enemyFainting); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/moves/role_play.test.ts b/test/moves/role_play.test.ts index d4893212003..3c3f0afb1a3 100644 --- a/test/moves/role_play.test.ts +++ b/test/moves/role_play.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#app/enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,29 +23,29 @@ describe("Moves - Role Play", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.ROLE_PLAY]) - .ability(Abilities.ADAPTABILITY) + .moveset([MoveId.SPLASH, MoveId.ROLE_PLAY]) + .ability(AbilityId.ADAPTABILITY) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should set the user's ability to the target's ability", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.ROLE_PLAY); + game.move.select(MoveId.ROLE_PLAY); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(Abilities.BALL_FETCH); + expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(AbilityId.BALL_FETCH); }); it("should activate post-summon abilities", async () => { - game.override.enemyAbility(Abilities.INTIMIDATE); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.enemyAbility(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.ROLE_PLAY); + game.move.select(MoveId.ROLE_PLAY); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(-1); diff --git a/test/moves/rollout.test.ts b/test/moves/rollout.test.ts index dafa72dd5fa..de990a1a750 100644 --- a/test/moves/rollout.test.ts +++ b/test/moves/rollout.test.ts @@ -1,8 +1,8 @@ import { allMoves } from "#app/data/data-lists"; import { CommandPhase } from "#app/phases/command-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -25,18 +25,18 @@ describe("Moves - Rollout", () => { game = new GameManager(phaserGame); game.override.disableCrits(); game.override.battleStyle("single"); - game.override.starterSpecies(Species.RATTATA); - game.override.ability(Abilities.BALL_FETCH); - game.override.enemySpecies(Species.BIDOOF); - game.override.enemyAbility(Abilities.BALL_FETCH); + game.override.starterSpecies(SpeciesId.RATTATA); + game.override.ability(AbilityId.BALL_FETCH); + game.override.enemySpecies(SpeciesId.BIDOOF); + game.override.enemyAbility(AbilityId.BALL_FETCH); game.override.startingLevel(100); game.override.enemyLevel(100); - game.override.enemyMoveset(Moves.SPLASH); + game.override.enemyMoveset(MoveId.SPLASH); }); it("should double it's dmg on sequential uses but reset after 5", async () => { - game.override.moveset([Moves.ROLLOUT]); - vi.spyOn(allMoves[Moves.ROLLOUT], "accuracy", "get").mockReturnValue(100); //always hit + game.override.moveset([MoveId.ROLLOUT]); + vi.spyOn(allMoves[MoveId.ROLLOUT], "accuracy", "get").mockReturnValue(100); //always hit const variance = 5; const turns = 6; @@ -55,7 +55,7 @@ describe("Moves - Rollout", () => { let previousHp = enemyPkm.hp; for (let i = 0; i < turns; i++) { - game.move.select(Moves.ROLLOUT); + game.move.select(MoveId.ROLLOUT); await game.phaseInterceptor.to(CommandPhase); dmgHistory.push(previousHp - enemyPkm.hp); diff --git a/test/moves/roost.test.ts b/test/moves/roost.test.ts index e55c76ca220..76aab1e572f 100644 --- a/test/moves/roost.test.ts +++ b/test/moves/roost.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { PokemonType } from "#enums/pokemon-type"; import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import GameManager from "#test/testUtils/gameManager"; @@ -26,11 +26,11 @@ describe("Moves - Roost", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.enemySpecies(Species.RELICANTH); + game.override.enemySpecies(SpeciesId.RELICANTH); game.override.startingLevel(100); game.override.enemyLevel(100); - game.override.enemyMoveset(Moves.EARTHQUAKE); - game.override.moveset([Moves.ROOST, Moves.BURN_UP, Moves.DOUBLE_SHOCK]); + game.override.enemyMoveset(MoveId.EARTHQUAKE); + game.override.moveset([MoveId.ROOST, MoveId.BURN_UP, MoveId.DOUBLE_SHOCK]); }); /** @@ -47,10 +47,10 @@ describe("Moves - Roost", () => { */ test("Non flying type uses roost -> no type change, took damage", async () => { - await game.classicMode.startBattle([Species.DUNSPARCE]); + await game.classicMode.startBattle([SpeciesId.DUNSPARCE]); const playerPokemon = game.scene.getPlayerPokemon()!; const playerPokemonStartingHP = playerPokemon.hp; - game.move.select(Moves.ROOST); + game.move.select(MoveId.ROOST); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase); @@ -71,10 +71,10 @@ describe("Moves - Roost", () => { }); test("Pure flying type -> becomes normal after roost and takes damage from ground moves -> regains flying", async () => { - await game.classicMode.startBattle([Species.TORNADUS]); + await game.classicMode.startBattle([SpeciesId.TORNADUS]); const playerPokemon = game.scene.getPlayerPokemon()!; const playerPokemonStartingHP = playerPokemon.hp; - game.move.select(Moves.ROOST); + game.move.select(MoveId.ROOST); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase); @@ -95,10 +95,10 @@ describe("Moves - Roost", () => { }); test("Dual X/flying type -> becomes type X after roost and takes damage from ground moves -> regains flying", async () => { - await game.classicMode.startBattle([Species.HAWLUCHA]); + await game.classicMode.startBattle([SpeciesId.HAWLUCHA]); const playerPokemon = game.scene.getPlayerPokemon()!; const playerPokemonStartingHP = playerPokemon.hp; - game.move.select(Moves.ROOST); + game.move.select(MoveId.ROOST); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase); @@ -119,11 +119,11 @@ describe("Moves - Roost", () => { }); test("Pokemon with levitate after using roost should lose flying type but still be unaffected by ground moves", async () => { - game.override.starterForms({ [Species.ROTOM]: 4 }); - await game.classicMode.startBattle([Species.ROTOM]); + game.override.starterForms({ [SpeciesId.ROTOM]: 4 }); + await game.classicMode.startBattle([SpeciesId.ROTOM]); const playerPokemon = game.scene.getPlayerPokemon()!; const playerPokemonStartingHP = playerPokemon.hp; - game.move.select(Moves.ROOST); + game.move.select(MoveId.ROOST); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase); @@ -144,10 +144,10 @@ describe("Moves - Roost", () => { }); test("A fire/flying type that uses burn up, then roost should be typeless until end of turn", async () => { - await game.classicMode.startBattle([Species.MOLTRES]); + await game.classicMode.startBattle([SpeciesId.MOLTRES]); const playerPokemon = game.scene.getPlayerPokemon()!; const playerPokemonStartingHP = playerPokemon.hp; - game.move.select(Moves.BURN_UP); + game.move.select(MoveId.BURN_UP); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase); @@ -157,7 +157,7 @@ describe("Moves - Roost", () => { expect(playerPokemonTypes.length === 1).toBeTruthy(); await game.phaseInterceptor.to(TurnEndPhase); - game.move.select(Moves.ROOST); + game.move.select(MoveId.ROOST); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase); @@ -179,11 +179,11 @@ describe("Moves - Roost", () => { }); test("An electric/flying type that uses double shock, then roost should be typeless until end of turn", async () => { - game.override.enemySpecies(Species.ZEKROM); - await game.classicMode.startBattle([Species.ZAPDOS]); + game.override.enemySpecies(SpeciesId.ZEKROM); + await game.classicMode.startBattle([SpeciesId.ZAPDOS]); const playerPokemon = game.scene.getPlayerPokemon()!; const playerPokemonStartingHP = playerPokemon.hp; - game.move.select(Moves.DOUBLE_SHOCK); + game.move.select(MoveId.DOUBLE_SHOCK); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase); @@ -193,7 +193,7 @@ describe("Moves - Roost", () => { expect(playerPokemonTypes.length === 1).toBeTruthy(); await game.phaseInterceptor.to(TurnEndPhase); - game.move.select(Moves.ROOST); + game.move.select(MoveId.ROOST); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase); @@ -216,14 +216,14 @@ describe("Moves - Roost", () => { test("Dual Type Pokemon afflicted with Forests Curse/Trick or Treat and post roost will become dual type and then become 3 type at end of turn", async () => { game.override.enemyMoveset([ - Moves.TRICK_OR_TREAT, - Moves.TRICK_OR_TREAT, - Moves.TRICK_OR_TREAT, - Moves.TRICK_OR_TREAT, + MoveId.TRICK_OR_TREAT, + MoveId.TRICK_OR_TREAT, + MoveId.TRICK_OR_TREAT, + MoveId.TRICK_OR_TREAT, ]); - await game.classicMode.startBattle([Species.MOLTRES]); + await game.classicMode.startBattle([SpeciesId.MOLTRES]); const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.ROOST); + game.move.select(MoveId.ROOST); await game.phaseInterceptor.to(MoveEffectPhase); let playerPokemonTypes = playerPokemon.getTypes(); diff --git a/test/moves/round.test.ts b/test/moves/round.test.ts index ccdf4cbf089..c42734bdc41 100644 --- a/test/moves/round.test.ts +++ b/test/moves/round.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/data-lists"; import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -25,28 +25,28 @@ describe("Moves - Round", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.ROUND]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH, MoveId.ROUND]) + .ability(AbilityId.BALL_FETCH) .battleStyle("double") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.SPLASH, Moves.ROUND]) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.SPLASH, MoveId.ROUND]) .startingLevel(100) .enemyLevel(100); }); it("should cue other instances of Round together in Speed order", async () => { - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); - const round = allMoves[Moves.ROUND]; + const round = allMoves[MoveId.ROUND]; const spy = vi.spyOn(round, "calculateBattlePower"); - game.move.select(Moves.ROUND, 0, BattlerIndex.ENEMY); - game.move.select(Moves.ROUND, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.ROUND, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.ROUND, 1, BattlerIndex.ENEMY_2); - await game.move.selectEnemyMove(Moves.ROUND, BattlerIndex.PLAYER); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.ROUND, BattlerIndex.PLAYER); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY]); diff --git a/test/moves/safeguard.test.ts b/test/moves/safeguard.test.ts index 7804b63f5c5..fc8bef80d6d 100644 --- a/test/moves/safeguard.test.ts +++ b/test/moves/safeguard.test.ts @@ -1,11 +1,11 @@ import { BattlerIndex } from "#app/battle"; import { PostDefendContactApplyStatusEffectAbAttr } from "#app/data/abilities/ability"; import { allAbilities } from "#app/data/data-lists"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { StatusEffect } from "#app/enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -27,20 +27,20 @@ describe("Moves - Safeguard", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.DRATINI) - .enemyMoveset([Moves.SAFEGUARD]) - .enemyAbility(Abilities.BALL_FETCH) + .enemySpecies(SpeciesId.DRATINI) + .enemyMoveset([MoveId.SAFEGUARD]) + .enemyAbility(AbilityId.BALL_FETCH) .enemyLevel(5) - .starterSpecies(Species.DRATINI) - .moveset([Moves.NUZZLE, Moves.SPORE, Moves.YAWN, Moves.SPLASH]) - .ability(Abilities.UNNERVE); // Stop wild Pokemon from potentially eating Lum Berry + .starterSpecies(SpeciesId.DRATINI) + .moveset([MoveId.NUZZLE, MoveId.SPORE, MoveId.YAWN, MoveId.SPLASH]) + .ability(AbilityId.UNNERVE); // Stop wild Pokemon from potentially eating Lum Berry }); it("protects from damaging moves with additional effects", async () => { await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.NUZZLE); + game.move.select(MoveId.NUZZLE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); @@ -51,7 +51,7 @@ describe("Moves - Safeguard", () => { await game.classicMode.startBattle(); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SPORE); + game.move.select(MoveId.SPORE); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); @@ -59,11 +59,11 @@ describe("Moves - Safeguard", () => { }); it("protects from confusion", async () => { - game.override.moveset([Moves.CONFUSE_RAY]); + game.override.moveset([MoveId.CONFUSE_RAY]); await game.classicMode.startBattle(); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.CONFUSE_RAY); + game.move.select(MoveId.CONFUSE_RAY); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); @@ -75,8 +75,8 @@ describe("Moves - Safeguard", () => { await game.classicMode.startBattle(); - game.move.select(Moves.SPORE, 0, BattlerIndex.ENEMY_2); - game.move.select(Moves.NUZZLE, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.SPORE, 0, BattlerIndex.ENEMY_2); + game.move.select(MoveId.NUZZLE, 1, BattlerIndex.ENEMY_2); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2]); @@ -92,7 +92,7 @@ describe("Moves - Safeguard", () => { await game.classicMode.startBattle(); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.YAWN); + game.move.select(MoveId.YAWN); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); @@ -103,11 +103,11 @@ describe("Moves - Safeguard", () => { await game.classicMode.startBattle(); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.YAWN); + game.move.select(MoveId.YAWN); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(enemyPokemon.status?.effect).toEqual(StatusEffect.SLEEP); @@ -118,18 +118,18 @@ describe("Moves - Safeguard", () => { await game.classicMode.startBattle(); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); enemyPokemon.damageAndUpdate(1); expect(enemyPokemon.status?.effect).toEqual(StatusEffect.BURN); - game.override.enemyMoveset([Moves.REST]); + game.override.enemyMoveset([MoveId.REST]); // Force the moveset to update mid-battle // TODO: Remove after enemy AI rework is in enemyPokemon.getMoveset(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); enemyPokemon.damageAndUpdate(1); await game.toNextTurn(); @@ -137,20 +137,20 @@ describe("Moves - Safeguard", () => { }); it("protects from ability-inflicted status", async () => { - game.override.ability(Abilities.STATIC); + game.override.ability(AbilityId.STATIC); vi.spyOn( - allAbilities[Abilities.STATIC].getAttrs(PostDefendContactApplyStatusEffectAbAttr)[0], + allAbilities[AbilityId.STATIC].getAttrs(PostDefendContactApplyStatusEffectAbAttr)[0], "chance", "get", ).mockReturnValue(100); await game.classicMode.startBattle(); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - game.override.enemyMoveset([Moves.TACKLE]); - game.move.select(Moves.SPLASH); + game.override.enemyMoveset([MoveId.TACKLE]); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(enemyPokemon.status).toBeUndefined(); diff --git a/test/moves/scale_shot.test.ts b/test/moves/scale_shot.test.ts index 49e68c75450..f61a9a1e276 100644 --- a/test/moves/scale_shot.test.ts +++ b/test/moves/scale_shot.test.ts @@ -4,9 +4,9 @@ import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -29,21 +29,21 @@ describe("Moves - Scale Shot", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SCALE_SHOT]) + .moveset([MoveId.SCALE_SHOT]) .battleStyle("single") .disableCrits() - .ability(Abilities.NO_GUARD) - .passiveAbility(Abilities.SKILL_LINK) - .enemyMoveset(Moves.SPLASH) + .ability(AbilityId.NO_GUARD) + .passiveAbility(AbilityId.SKILL_LINK) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(3); }); it("applies stat changes after last hit", async () => { - game.override.enemySpecies(Species.FORRETRESS); + game.override.enemySpecies(SpeciesId.FORRETRESS); - await game.classicMode.startBattle([Species.MINCCINO]); + await game.classicMode.startBattle([SpeciesId.MINCCINO]); const minccino = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SCALE_SHOT); + game.move.select(MoveId.SCALE_SHOT); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); @@ -62,17 +62,17 @@ describe("Moves - Scale Shot", () => { }); it("unaffected by sheer force", async () => { - const moveToCheck = allMoves[Moves.SCALE_SHOT]; + const moveToCheck = allMoves[MoveId.SCALE_SHOT]; const basePower = moveToCheck.power; - game.override.enemySpecies(Species.WOBBUFFET); + game.override.enemySpecies(SpeciesId.WOBBUFFET); vi.spyOn(moveToCheck, "calculateBattlePower"); - await game.classicMode.startBattle([Species.MINCCINO]); + await game.classicMode.startBattle([SpeciesId.MINCCINO]); const minccino = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SCALE_SHOT); + game.move.select(MoveId.SCALE_SHOT); await game.phaseInterceptor.to(TurnEndPhase); //effect not nullified by sheer force diff --git a/test/moves/secret_power.test.ts b/test/moves/secret_power.test.ts index 99945002b8d..ac06f03698c 100644 --- a/test/moves/secret_power.test.ts +++ b/test/moves/secret_power.test.ts @@ -1,9 +1,9 @@ -import { Abilities } from "#enums/abilities"; -import { Biome } from "#enums/biome"; -import { Moves } from "#enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { BiomeId } from "#enums/biome-id"; +import { MoveId } from "#enums/move-id"; import { Stat } from "#enums/stat"; import { allMoves } from "#app/data/data-lists"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -31,48 +31,48 @@ describe("Moves - Secret Power", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SECRET_POWER]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SECRET_POWER]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) + .enemySpecies(SpeciesId.MAGIKARP) .enemyLevel(60) - .enemyAbility(Abilities.BALL_FETCH); + .enemyAbility(AbilityId.BALL_FETCH); }); it("Secret Power checks for an active terrain first then looks at the biome for its secondary effect", async () => { - game.override.startingBiome(Biome.VOLCANO).enemyMoveset([Moves.SPLASH, Moves.MISTY_TERRAIN]); - vi.spyOn(allMoves[Moves.SECRET_POWER], "chance", "get").mockReturnValue(100); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.startingBiome(BiomeId.VOLCANO).enemyMoveset([MoveId.SPLASH, MoveId.MISTY_TERRAIN]); + vi.spyOn(allMoves[MoveId.SECRET_POWER], "chance", "get").mockReturnValue(100); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemyPokemon = game.scene.getEnemyPokemon()!; - // No Terrain + Biome.VOLCANO --> Burn - game.move.select(Moves.SECRET_POWER); - await game.move.selectEnemyMove(Moves.SPLASH); + // No Terrain + BiomeId.VOLCANO --> Burn + game.move.select(MoveId.SECRET_POWER); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyPokemon.status?.effect).toBe(StatusEffect.BURN); // Misty Terrain --> SpAtk -1 - game.move.select(Moves.SECRET_POWER); - await game.move.selectEnemyMove(Moves.MISTY_TERRAIN); + game.move.select(MoveId.SECRET_POWER); + await game.move.selectEnemyMove(MoveId.MISTY_TERRAIN); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyPokemon.getStatStage(Stat.SPATK)).toBe(-1); }); it("Secret Power's effect chance is doubled by Serene Grace, but not by the 'rainbow' effect from Fire/Water Pledge", async () => { game.override - .moveset([Moves.FIRE_PLEDGE, Moves.WATER_PLEDGE, Moves.SECRET_POWER, Moves.SPLASH]) - .ability(Abilities.SERENE_GRACE) - .enemyMoveset([Moves.SPLASH]) + .moveset([MoveId.FIRE_PLEDGE, MoveId.WATER_PLEDGE, MoveId.SECRET_POWER, MoveId.SPLASH]) + .ability(AbilityId.SERENE_GRACE) + .enemyMoveset([MoveId.SPLASH]) .battleStyle("double"); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); - const sereneGraceAttr = allAbilities[Abilities.SERENE_GRACE].getAttrs(MoveEffectChanceMultiplierAbAttr)[0]; + const sereneGraceAttr = allAbilities[AbilityId.SERENE_GRACE].getAttrs(MoveEffectChanceMultiplierAbAttr)[0]; vi.spyOn(sereneGraceAttr, "canApply"); - game.move.select(Moves.WATER_PLEDGE, 0, BattlerIndex.ENEMY); - game.move.select(Moves.FIRE_PLEDGE, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.WATER_PLEDGE, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.FIRE_PLEDGE, 1, BattlerIndex.ENEMY_2); await game.phaseInterceptor.to("TurnEndPhase"); @@ -82,8 +82,8 @@ describe("Moves - Secret Power", () => { rainbowEffect = rainbowEffect!; vi.spyOn(rainbowEffect, "apply"); - game.move.select(Moves.SECRET_POWER, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SECRET_POWER, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("BerryPhase", false); diff --git a/test/moves/shed_tail.test.ts b/test/moves/shed_tail.test.ts index 845399f6c27..84a5d5ba914 100644 --- a/test/moves/shed_tail.test.ts +++ b/test/moves/shed_tail.test.ts @@ -1,8 +1,8 @@ import { SubstituteTag } from "#app/data/battler-tags"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; @@ -24,19 +24,19 @@ describe("Moves - Shed Tail", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SHED_TAIL]) + .moveset([MoveId.SHED_TAIL]) .battleStyle("single") - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("transfers a Substitute doll to the switched in Pokemon", async () => { - await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]); const magikarp = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SHED_TAIL); + game.move.select(MoveId.SHED_TAIL); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase", false); @@ -53,12 +53,12 @@ describe("Moves - Shed Tail", () => { }); it("should fail if no ally is available to switch in", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const magikarp = game.scene.getPlayerPokemon()!; expect(game.scene.getPlayerParty().length).toBe(1); - game.move.select(Moves.SHED_TAIL); + game.move.select(MoveId.SHED_TAIL); await game.phaseInterceptor.to("TurnEndPhase", false); diff --git a/test/moves/shell_side_arm.test.ts b/test/moves/shell_side_arm.test.ts index 4d7ae7025a1..ad79091a5e3 100644 --- a/test/moves/shell_side_arm.test.ts +++ b/test/moves/shell_side_arm.test.ts @@ -2,9 +2,9 @@ import { BattlerIndex } from "#app/battle"; import { ShellSideArmCategoryAttr } from "#app/data/moves/move"; import { allMoves } from "#app/data/data-lists"; import type Move from "#app/data/moves/move"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -26,55 +26,55 @@ describe("Moves - Shell Side Arm", () => { }); beforeEach(() => { - shellSideArm = allMoves[Moves.SHELL_SIDE_ARM]; + shellSideArm = allMoves[MoveId.SHELL_SIDE_ARM]; shellSideArmAttr = shellSideArm.getAttrs(ShellSideArmCategoryAttr)[0]; game = new GameManager(phaserGame); game.override - .moveset([Moves.SHELL_SIDE_ARM, Moves.SPLASH]) + .moveset([MoveId.SHELL_SIDE_ARM, MoveId.SPLASH]) .battleStyle("single") .startingLevel(100) .enemyLevel(100) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("becomes a physical attack if forecasted to deal more damage as physical", async () => { - game.override.enemySpecies(Species.SNORLAX); + game.override.enemySpecies(SpeciesId.SNORLAX); - await game.classicMode.startBattle([Species.RAMPARDOS]); + await game.classicMode.startBattle([SpeciesId.RAMPARDOS]); vi.spyOn(shellSideArmAttr, "apply"); - game.move.select(Moves.SHELL_SIDE_ARM); + game.move.select(MoveId.SHELL_SIDE_ARM); await game.phaseInterceptor.to("MoveEffectPhase"); expect(shellSideArmAttr.apply).toHaveLastReturnedWith(true); }); it("remains a special attack if forecasted to deal more damage as special", async () => { - game.override.enemySpecies(Species.SLOWBRO); + game.override.enemySpecies(SpeciesId.SLOWBRO); - await game.classicMode.startBattle([Species.XURKITREE]); + await game.classicMode.startBattle([SpeciesId.XURKITREE]); vi.spyOn(shellSideArmAttr, "apply"); - game.move.select(Moves.SHELL_SIDE_ARM); + game.move.select(MoveId.SHELL_SIDE_ARM); await game.phaseInterceptor.to("MoveEffectPhase"); expect(shellSideArmAttr.apply).toHaveLastReturnedWith(false); }); it("respects stat stage changes when forecasting base damage", async () => { - game.override.enemySpecies(Species.SNORLAX).enemyMoveset(Moves.COTTON_GUARD); + game.override.enemySpecies(SpeciesId.SNORLAX).enemyMoveset(MoveId.COTTON_GUARD); - await game.classicMode.startBattle([Species.MANAPHY]); + await game.classicMode.startBattle([SpeciesId.MANAPHY]); vi.spyOn(shellSideArmAttr, "apply"); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); - game.move.select(Moves.SHELL_SIDE_ARM); + game.move.select(MoveId.SHELL_SIDE_ARM); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase", false); diff --git a/test/moves/shell_trap.test.ts b/test/moves/shell_trap.test.ts index 2aa4712152d..4dfc0e72d0a 100644 --- a/test/moves/shell_trap.test.ts +++ b/test/moves/shell_trap.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/data-lists"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { MoveResult } from "#app/field/pokemon"; import { BerryPhase } from "#app/phases/berry-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; @@ -28,23 +28,23 @@ describe("Moves - Shell Trap", () => { game = new GameManager(phaserGame); game.override .battleStyle("double") - .moveset([Moves.SHELL_TRAP, Moves.SPLASH, Moves.BULLDOZE]) - .enemySpecies(Species.SNORLAX) - .enemyMoveset([Moves.RAZOR_LEAF]) + .moveset([MoveId.SHELL_TRAP, MoveId.SPLASH, MoveId.BULLDOZE]) + .enemySpecies(SpeciesId.SNORLAX) + .enemyMoveset([MoveId.RAZOR_LEAF]) .startingLevel(100) .enemyLevel(100); - vi.spyOn(allMoves[Moves.RAZOR_LEAF], "accuracy", "get").mockReturnValue(100); + vi.spyOn(allMoves[MoveId.RAZOR_LEAF], "accuracy", "get").mockReturnValue(100); }); it("should activate after the user is hit by a physical attack", async () => { - await game.classicMode.startBattle([Species.CHARIZARD, Species.TURTONATOR]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.TURTONATOR]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SHELL_TRAP, 1); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SHELL_TRAP, 1); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2]); @@ -59,15 +59,15 @@ describe("Moves - Shell Trap", () => { }); it("should fail if the user is only hit by special attacks", async () => { - game.override.enemyMoveset([Moves.SWIFT]); + game.override.enemyMoveset([MoveId.SWIFT]); - await game.classicMode.startBattle([Species.CHARIZARD, Species.TURTONATOR]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.TURTONATOR]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SHELL_TRAP, 1); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SHELL_TRAP, 1); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2]); @@ -82,15 +82,15 @@ describe("Moves - Shell Trap", () => { }); it("should fail if the user isn't hit with any attack", async () => { - game.override.enemyMoveset(Moves.SPLASH); + game.override.enemyMoveset(MoveId.SPLASH); - await game.classicMode.startBattle([Species.CHARIZARD, Species.TURTONATOR]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.TURTONATOR]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SHELL_TRAP, 1); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SHELL_TRAP, 1); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2]); @@ -105,15 +105,15 @@ describe("Moves - Shell Trap", () => { }); it("should not activate from an ally's attack", async () => { - game.override.enemyMoveset(Moves.SPLASH); + game.override.enemyMoveset(MoveId.SPLASH); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); const playerPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.SHELL_TRAP); - game.move.select(Moves.BULLDOZE, 1); + game.move.select(MoveId.SHELL_TRAP); + game.move.select(MoveId.BULLDOZE, 1); await game.phaseInterceptor.to(MoveEndPhase); @@ -129,14 +129,14 @@ describe("Moves - Shell Trap", () => { it("should not activate from a subsequent physical attack", async () => { game.override.battleStyle("single"); - vi.spyOn(allMoves[Moves.RAZOR_LEAF], "priority", "get").mockReturnValue(-4); + vi.spyOn(allMoves[MoveId.RAZOR_LEAF], "priority", "get").mockReturnValue(-4); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SHELL_TRAP); + game.move.select(MoveId.SHELL_TRAP); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/simple_beam.test.ts b/test/moves/simple_beam.test.ts index 225fda28083..94609c3c4ac 100644 --- a/test/moves/simple_beam.test.ts +++ b/test/moves/simple_beam.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -22,21 +22,21 @@ describe("Moves - Simple Beam", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.SIMPLE_BEAM]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH, MoveId.SIMPLE_BEAM]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("sets the target's ability to simple", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SIMPLE_BEAM); + game.move.select(MoveId.SIMPLE_BEAM); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(Abilities.SIMPLE); + expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(AbilityId.SIMPLE); }); }); diff --git a/test/moves/sketch.test.ts b/test/moves/sketch.test.ts index fc38d6a1147..23e7f4ef3ab 100644 --- a/test/moves/sketch.test.ts +++ b/test/moves/sketch.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { MoveResult, PokemonMove } from "#app/field/pokemon"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -27,73 +27,75 @@ describe("Moves - Sketch", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .ability(Abilities.BALL_FETCH) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.SHUCKLE) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.SHUCKLE) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("Sketch should not fail even if a previous Sketch failed to retrieve a valid move and ran out of PP", async () => { - await game.classicMode.startBattle([Species.REGIELEKI]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const playerPokemon = game.scene.getPlayerPokemon()!; // can't use normal moveset override because we need to check moveset changes - playerPokemon.moveset = [new PokemonMove(Moves.SKETCH), new PokemonMove(Moves.SKETCH)]; + playerPokemon.moveset = [new PokemonMove(MoveId.SKETCH), new PokemonMove(MoveId.SKETCH)]; - game.move.select(Moves.SKETCH); + game.move.select(MoveId.SKETCH); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); const moveSlot0 = playerPokemon.getMoveset()[0]!; - expect(moveSlot0.moveId).toBe(Moves.SKETCH); + expect(moveSlot0.moveId).toBe(MoveId.SKETCH); expect(moveSlot0.getPpRatio()).toBe(0); await game.toNextTurn(); - game.move.select(Moves.SKETCH); + game.move.select(MoveId.SKETCH); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); - expect(playerPokemon.moveset[0]?.moveId).toBe(Moves.SPLASH); - expect(playerPokemon.moveset[1]?.moveId).toBe(Moves.SKETCH); + expect(playerPokemon.moveset[0]?.moveId).toBe(MoveId.SPLASH); + expect(playerPokemon.moveset[1]?.moveId).toBe(MoveId.SKETCH); }); it("Sketch should retrieve the most recent valid move from its target history", async () => { game.override.enemyStatusEffect(StatusEffect.PARALYSIS); - await game.classicMode.startBattle([Species.REGIELEKI]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - playerPokemon.moveset = [new PokemonMove(Moves.SKETCH), new PokemonMove(Moves.GROWL)]; + playerPokemon.moveset = [new PokemonMove(MoveId.SKETCH), new PokemonMove(MoveId.GROWL)]; - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.move.forceStatusActivation(false); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); await game.toNextTurn(); - game.move.select(Moves.SKETCH); + game.move.select(MoveId.SKETCH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.move.forceStatusActivation(true); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); - expect(playerPokemon.moveset[0]?.moveId).toBe(Moves.SPLASH); - expect(playerPokemon.moveset[1]?.moveId).toBe(Moves.GROWL); + expect(playerPokemon.moveset[0]?.moveId).toBe(MoveId.SPLASH); + expect(playerPokemon.moveset[1]?.moveId).toBe(MoveId.GROWL); }); it("should sketch moves that call other moves", async () => { - const randomMoveAttr = allMoves[Moves.METRONOME].findAttr(attr => attr instanceof RandomMoveAttr) as RandomMoveAttr; - vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(Moves.FALSE_SWIPE); + const randomMoveAttr = allMoves[MoveId.METRONOME].findAttr( + attr => attr instanceof RandomMoveAttr, + ) as RandomMoveAttr; + vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(MoveId.FALSE_SWIPE); - game.override.enemyMoveset([Moves.METRONOME]); - await game.classicMode.startBattle([Species.REGIELEKI]); + game.override.enemyMoveset([MoveId.METRONOME]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const playerPokemon = game.scene.getPlayerPokemon()!; - playerPokemon.moveset = [new PokemonMove(Moves.SKETCH)]; + playerPokemon.moveset = [new PokemonMove(MoveId.SKETCH)]; // Opponent uses Metronome -> False Swipe, then player uses Sketch, which should sketch Metronome - game.move.select(Moves.SKETCH); + game.move.select(MoveId.SKETCH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); - expect(playerPokemon.moveset[0]?.moveId).toBe(Moves.METRONOME); + expect(playerPokemon.moveset[0]?.moveId).toBe(MoveId.METRONOME); expect(playerPokemon.hp).toBeLessThan(playerPokemon.getMaxHp()); // Make sure opponent actually used False Swipe }); }); diff --git a/test/moves/skill_swap.test.ts b/test/moves/skill_swap.test.ts index 562e4bb56ed..c4fb6005e28 100644 --- a/test/moves/skill_swap.test.ts +++ b/test/moves/skill_swap.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#app/enums/stat"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,31 +23,31 @@ describe("Moves - Skill Swap", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.SKILL_SWAP]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH, MoveId.SKILL_SWAP]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should swap the two abilities", async () => { - game.override.ability(Abilities.ADAPTABILITY); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.ability(AbilityId.ADAPTABILITY); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SKILL_SWAP); + game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(Abilities.BALL_FETCH); - expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(Abilities.ADAPTABILITY); + expect(game.scene.getPlayerPokemon()?.getAbility().id).toBe(AbilityId.BALL_FETCH); + expect(game.scene.getEnemyPokemon()?.getAbility().id).toBe(AbilityId.ADAPTABILITY); }); it("should activate post-summon abilities", async () => { - game.override.ability(Abilities.INTIMIDATE); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.ability(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SKILL_SWAP); + game.move.select(MoveId.SKILL_SWAP); await game.phaseInterceptor.to("BerryPhase"); // player atk should be -1 after opponent gains intimidate and it activates diff --git a/test/moves/sleep_talk.test.ts b/test/moves/sleep_talk.test.ts index cbe3b6d7d3a..820a5f9082a 100644 --- a/test/moves/sleep_talk.test.ts +++ b/test/moves/sleep_talk.test.ts @@ -1,9 +1,9 @@ import { Stat } from "#app/enums/stat"; import { StatusEffect } from "#app/enums/status-effect"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,49 +25,49 @@ describe("Moves - Sleep Talk", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH, Moves.SLEEP_TALK]) + .moveset([MoveId.SPLASH, MoveId.SLEEP_TALK]) .statusEffect(StatusEffect.SLEEP) - .ability(Abilities.BALL_FETCH) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(100); }); it("should fail when the user is not asleep", async () => { game.override.statusEffect(StatusEffect.NONE); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SLEEP_TALK); + game.move.select(MoveId.SLEEP_TALK); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should fail if the user has no valid moves", async () => { - game.override.moveset([Moves.SLEEP_TALK, Moves.DIG, Moves.METRONOME, Moves.SOLAR_BEAM]); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.moveset([MoveId.SLEEP_TALK, MoveId.DIG, MoveId.METRONOME, MoveId.SOLAR_BEAM]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SLEEP_TALK); + game.move.select(MoveId.SLEEP_TALK); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should call a random valid move if the user is asleep", async () => { - game.override.moveset([Moves.SLEEP_TALK, Moves.DIG, Moves.FLY, Moves.SWORDS_DANCE]); // Dig and Fly are invalid moves, Swords Dance should always be called - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.moveset([MoveId.SLEEP_TALK, MoveId.DIG, MoveId.FLY, MoveId.SWORDS_DANCE]); // Dig and Fly are invalid moves, Swords Dance should always be called + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.SLEEP_TALK); + game.move.select(MoveId.SLEEP_TALK); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)); }); it("should apply secondary effects of a move", async () => { - game.override.moveset([Moves.SLEEP_TALK, Moves.DIG, Moves.FLY, Moves.WOOD_HAMMER]); // Dig and Fly are invalid moves, Wood Hammer should always be called + game.override.moveset([MoveId.SLEEP_TALK, MoveId.DIG, MoveId.FLY, MoveId.WOOD_HAMMER]); // Dig and Fly are invalid moves, Wood Hammer should always be called await game.classicMode.startBattle(); - game.move.select(Moves.SLEEP_TALK); + game.move.select(MoveId.SLEEP_TALK); await game.toNextTurn(); expect(game.scene.getPlayerPokemon()!.isFullHp()).toBeFalsy(); // Wood Hammer recoil effect should be applied diff --git a/test/moves/solar_beam.test.ts b/test/moves/solar_beam.test.ts index 8566859a4bc..7515843a13f 100644 --- a/test/moves/solar_beam.test.ts +++ b/test/moves/solar_beam.test.ts @@ -2,9 +2,9 @@ import { allMoves } from "#app/data/data-lists"; import { BattlerTagType } from "#enums/battler-tag-type"; import { WeatherType } from "#enums/weather-type"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; @@ -26,22 +26,22 @@ describe("Moves - Solar Beam", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Moves.SOLAR_BEAM) + .moveset(MoveId.SOLAR_BEAM) .battleStyle("single") .startingLevel(100) - .enemySpecies(Species.SNORLAX) + .enemySpecies(SpeciesId.SNORLAX) .enemyLevel(100) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should deal damage in two turns if no weather is active", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SOLAR_BEAM); + game.move.select(MoveId.SOLAR_BEAM); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getTag(BattlerTagType.CHARGING)).toBeDefined(); @@ -54,7 +54,7 @@ describe("Moves - Solar Beam", () => { expect(playerPokemon.getMoveHistory()).toHaveLength(2); expect(playerPokemon.getLastXMoves(1)[0].result).toBe(MoveResult.SUCCESS); - const playerSolarBeam = playerPokemon.getMoveset().find(mv => mv && mv.moveId === Moves.SOLAR_BEAM); + const playerSolarBeam = playerPokemon.getMoveset().find(mv => mv && mv.moveId === MoveId.SOLAR_BEAM); expect(playerSolarBeam?.ppUsed).toBe(1); }); @@ -64,12 +64,12 @@ describe("Moves - Solar Beam", () => { ])("should deal damage in one turn if $name is active", async ({ weatherType }) => { game.override.weather(weatherType); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SOLAR_BEAM); + game.move.select(MoveId.SOLAR_BEAM); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon.getTag(BattlerTagType.CHARGING)).toBeUndefined(); @@ -77,7 +77,7 @@ describe("Moves - Solar Beam", () => { expect(playerPokemon.getMoveHistory()).toHaveLength(2); expect(playerPokemon.getLastXMoves(1)[0].result).toBe(MoveResult.SUCCESS); - const playerSolarBeam = playerPokemon.getMoveset().find(mv => mv && mv.moveId === Moves.SOLAR_BEAM); + const playerSolarBeam = playerPokemon.getMoveset().find(mv => mv && mv.moveId === MoveId.SOLAR_BEAM); expect(playerSolarBeam?.ppUsed).toBe(1); }); @@ -87,13 +87,13 @@ describe("Moves - Solar Beam", () => { ])("should have its power halved in $name", async ({ weatherType }) => { game.override.weather(weatherType); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const solarBeam = allMoves[Moves.SOLAR_BEAM]; + const solarBeam = allMoves[MoveId.SOLAR_BEAM]; vi.spyOn(solarBeam, "calculateBattlePower"); - game.move.select(Moves.SOLAR_BEAM); + game.move.select(MoveId.SOLAR_BEAM); await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/moves/sparkly_swirl.test.ts b/test/moves/sparkly_swirl.test.ts index 9eb018d4be7..d1cbdd70107 100644 --- a/test/moves/sparkly_swirl.test.ts +++ b/test/moves/sparkly_swirl.test.ts @@ -1,9 +1,9 @@ import { allMoves } from "#app/data/data-lists"; import { StatusEffect } from "#app/enums/status-effect"; import { CommandPhase } from "#app/phases/command-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -23,19 +23,19 @@ describe("Moves - Sparkly Swirl", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .enemySpecies(Species.SHUCKLE) + .enemySpecies(SpeciesId.SHUCKLE) .enemyLevel(100) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH) - .moveset([Moves.SPARKLY_SWIRL, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH); + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset([MoveId.SPARKLY_SWIRL, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH); - vi.spyOn(allMoves[Moves.SPARKLY_SWIRL], "accuracy", "get").mockReturnValue(100); + vi.spyOn(allMoves[MoveId.SPARKLY_SWIRL], "accuracy", "get").mockReturnValue(100); }); it("should cure status effect of the user, its ally, and all party pokemon", async () => { game.override.battleStyle("double").statusEffect(StatusEffect.BURN); - await game.classicMode.startBattle([Species.RATTATA, Species.RATTATA, Species.RATTATA]); + await game.classicMode.startBattle([SpeciesId.RATTATA, SpeciesId.RATTATA, SpeciesId.RATTATA]); const [leftPlayer, rightPlayer, partyPokemon] = game.scene.getPlayerParty(); const leftOpp = game.scene.getEnemyPokemon()!; @@ -43,9 +43,9 @@ describe("Moves - Sparkly Swirl", () => { vi.spyOn(rightPlayer, "resetStatus"); vi.spyOn(partyPokemon, "resetStatus"); - game.move.select(Moves.SPARKLY_SWIRL, 0, leftOpp.getBattlerIndex()); + game.move.select(MoveId.SPARKLY_SWIRL, 0, leftOpp.getBattlerIndex()); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(leftPlayer.resetStatus).toHaveBeenCalledOnce(); @@ -59,15 +59,15 @@ describe("Moves - Sparkly Swirl", () => { it("should not cure status effect of the target/target's allies", async () => { game.override.battleStyle("double").enemyStatusEffect(StatusEffect.BURN); - await game.classicMode.startBattle([Species.RATTATA, Species.RATTATA]); + await game.classicMode.startBattle([SpeciesId.RATTATA, SpeciesId.RATTATA]); const [leftOpp, rightOpp] = game.scene.getEnemyField(); vi.spyOn(leftOpp, "resetStatus"); vi.spyOn(rightOpp, "resetStatus"); - game.move.select(Moves.SPARKLY_SWIRL, 0, leftOpp.getBattlerIndex()); + game.move.select(MoveId.SPARKLY_SWIRL, 0, leftOpp.getBattlerIndex()); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); expect(leftOpp.resetStatus).toHaveBeenCalledTimes(0); diff --git a/test/moves/spectral_thief.test.ts b/test/moves/spectral_thief.test.ts index 4c2e9f96274..df560169078 100644 --- a/test/moves/spectral_thief.test.ts +++ b/test/moves/spectral_thief.test.ts @@ -1,9 +1,9 @@ -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#app/battle"; import { Stat } from "#enums/stat"; import { allMoves } from "#app/data/data-lists"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -24,12 +24,12 @@ describe("Moves - Spectral Thief", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .enemySpecies(Species.SHUCKLE) + .enemySpecies(SpeciesId.SHUCKLE) .enemyLevel(100) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH) - .moveset([Moves.SPECTRAL_THIEF, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH).disableCrits; + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) + .moveset([MoveId.SPECTRAL_THIEF, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH).disableCrits; }); it("should steal max possible positive stat changes and ignore negative ones.", async () => { @@ -50,7 +50,7 @@ describe("Moves - Spectral Thief", () => { player.setStatStage(Stat.SPDEF, 0); player.setStatStage(Stat.SPD, -2); - game.move.select(Moves.SPECTRAL_THIEF); + game.move.select(MoveId.SPECTRAL_THIEF); await game.phaseInterceptor.to(TurnEndPhase); /** @@ -65,26 +65,26 @@ describe("Moves - Spectral Thief", () => { }); it("should steal stat stages before dmg calculation", async () => { - game.override.enemySpecies(Species.MAGIKARP).enemyLevel(50); + game.override.enemySpecies(SpeciesId.MAGIKARP).enemyLevel(50); await game.classicMode.startBattle(); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - const moveToCheck = allMoves[Moves.SPECTRAL_THIEF]; + const moveToCheck = allMoves[MoveId.SPECTRAL_THIEF]; const dmgBefore = enemy.getAttackDamage({ source: player, move: moveToCheck }).damage; enemy.setStatStage(Stat.ATK, 6); player.setStatStage(Stat.ATK, 0); - game.move.select(Moves.SPECTRAL_THIEF); + game.move.select(MoveId.SPECTRAL_THIEF); await game.phaseInterceptor.to(TurnEndPhase); expect(dmgBefore).toBeLessThan(enemy.getAttackDamage({ source: player, move: moveToCheck }).damage); }); it("should steal stat stages as a negative value with Contrary.", async () => { - game.override.ability(Abilities.CONTRARY); + game.override.ability(AbilityId.CONTRARY); await game.classicMode.startBattle(); const player = game.scene.getPlayerPokemon()!; @@ -94,7 +94,7 @@ describe("Moves - Spectral Thief", () => { player.setStatStage(Stat.ATK, 0); - game.move.select(Moves.SPECTRAL_THIEF); + game.move.select(MoveId.SPECTRAL_THIEF); await game.phaseInterceptor.to(TurnEndPhase); expect(player.getStatStage(Stat.ATK)).toEqual(-6); @@ -102,7 +102,7 @@ describe("Moves - Spectral Thief", () => { }); it("should steal double the stat stages with Simple.", async () => { - game.override.ability(Abilities.SIMPLE); + game.override.ability(AbilityId.SIMPLE); await game.classicMode.startBattle(); const player = game.scene.getPlayerPokemon()!; @@ -112,7 +112,7 @@ describe("Moves - Spectral Thief", () => { player.setStatStage(Stat.ATK, 0); - game.move.select(Moves.SPECTRAL_THIEF); + game.move.select(MoveId.SPECTRAL_THIEF); await game.phaseInterceptor.to(TurnEndPhase); expect(player.getStatStage(Stat.ATK)).toEqual(6); @@ -120,7 +120,7 @@ describe("Moves - Spectral Thief", () => { }); it("should steal the stat stages through Clear Body.", async () => { - game.override.enemyAbility(Abilities.CLEAR_BODY); + game.override.enemyAbility(AbilityId.CLEAR_BODY); await game.classicMode.startBattle(); const player = game.scene.getPlayerPokemon()!; @@ -130,7 +130,7 @@ describe("Moves - Spectral Thief", () => { player.setStatStage(Stat.ATK, 0); - game.move.select(Moves.SPECTRAL_THIEF); + game.move.select(MoveId.SPECTRAL_THIEF); await game.phaseInterceptor.to(TurnEndPhase); expect(player.getStatStage(Stat.ATK)).toEqual(3); @@ -138,7 +138,7 @@ describe("Moves - Spectral Thief", () => { }); it("should steal the stat stages through White Smoke.", async () => { - game.override.enemyAbility(Abilities.WHITE_SMOKE); + game.override.enemyAbility(AbilityId.WHITE_SMOKE); await game.classicMode.startBattle(); const player = game.scene.getPlayerPokemon()!; @@ -148,7 +148,7 @@ describe("Moves - Spectral Thief", () => { player.setStatStage(Stat.ATK, 0); - game.move.select(Moves.SPECTRAL_THIEF); + game.move.select(MoveId.SPECTRAL_THIEF); await game.phaseInterceptor.to(TurnEndPhase); expect(player.getStatStage(Stat.ATK)).toEqual(3); @@ -156,7 +156,7 @@ describe("Moves - Spectral Thief", () => { }); it("should steal the stat stages through Hyper Cutter.", async () => { - game.override.enemyAbility(Abilities.HYPER_CUTTER); + game.override.enemyAbility(AbilityId.HYPER_CUTTER); await game.classicMode.startBattle(); const player = game.scene.getPlayerPokemon()!; @@ -166,7 +166,7 @@ describe("Moves - Spectral Thief", () => { player.setStatStage(Stat.ATK, 0); - game.move.select(Moves.SPECTRAL_THIEF); + game.move.select(MoveId.SPECTRAL_THIEF); await game.phaseInterceptor.to(TurnEndPhase); expect(player.getStatStage(Stat.ATK)).toEqual(3); @@ -174,7 +174,7 @@ describe("Moves - Spectral Thief", () => { }); it("should bypass Substitute.", async () => { - game.override.enemyMoveset(Moves.SUBSTITUTE); + game.override.enemyMoveset(MoveId.SUBSTITUTE); await game.classicMode.startBattle(); const player = game.scene.getPlayerPokemon()!; @@ -184,7 +184,7 @@ describe("Moves - Spectral Thief", () => { player.setStatStage(Stat.ATK, 0); - game.move.select(Moves.SPECTRAL_THIEF); + game.move.select(MoveId.SPECTRAL_THIEF); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to(TurnEndPhase); @@ -194,7 +194,7 @@ describe("Moves - Spectral Thief", () => { }); it("should get blocked by protect.", async () => { - game.override.enemyMoveset(Moves.PROTECT); + game.override.enemyMoveset(MoveId.PROTECT); await game.classicMode.startBattle(); const player = game.scene.getPlayerPokemon()!; @@ -204,7 +204,7 @@ describe("Moves - Spectral Thief", () => { player.setStatStage(Stat.ATK, 0); - game.move.select(Moves.SPECTRAL_THIEF); + game.move.select(MoveId.SPECTRAL_THIEF); await game.phaseInterceptor.to(TurnEndPhase); expect(player.getStatStage(Stat.ATK)).toEqual(0); diff --git a/test/moves/speed_swap.test.ts b/test/moves/speed_swap.test.ts index f2be761b64e..aef0d981e98 100644 --- a/test/moves/speed_swap.test.ts +++ b/test/moves/speed_swap.test.ts @@ -1,11 +1,11 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { Stat } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; describe("Moves - Speed Swap", () => { let phaserGame: Phaser.Game; @@ -25,16 +25,16 @@ describe("Moves - Speed Swap", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemyAbility(Abilities.NONE) - .enemyMoveset(Moves.SPLASH) - .enemySpecies(Species.MEW) + .enemyAbility(AbilityId.NONE) + .enemyMoveset(MoveId.SPLASH) + .enemySpecies(SpeciesId.MEW) .enemyLevel(200) - .moveset([Moves.SPEED_SWAP]) - .ability(Abilities.NONE); + .moveset([MoveId.SPEED_SWAP]) + .ability(AbilityId.NONE); }); it("should swap the user's SPD and the target's SPD stats", async () => { - await game.classicMode.startBattle([Species.INDEEDEE]); + await game.classicMode.startBattle([SpeciesId.INDEEDEE]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -42,7 +42,7 @@ describe("Moves - Speed Swap", () => { const playerSpd = player.getStat(Stat.SPD, false); const enemySpd = enemy.getStat(Stat.SPD, false); - game.move.select(Moves.SPEED_SWAP); + game.move.select(MoveId.SPEED_SWAP); await game.phaseInterceptor.to(TurnEndPhase); expect(player.getStat(Stat.SPD, false)).toBe(enemySpd); diff --git a/test/moves/spikes.test.ts b/test/moves/spikes.test.ts index f37b54a2904..278c4510239 100644 --- a/test/moves/spikes.test.ts +++ b/test/moves/spikes.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,20 +24,20 @@ describe("Moves - Spikes", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .ability(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) - .moveset([Moves.SPIKES, Moves.SPLASH, Moves.ROAR]); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .ability(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .moveset([MoveId.SPIKES, MoveId.SPLASH, MoveId.ROAR]); }); it("should not damage the team that set them", async () => { - await game.classicMode.startBattle([Species.MIGHTYENA, Species.POOCHYENA]); + await game.classicMode.startBattle([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]); - game.move.select(Moves.SPIKES); + game.move.select(MoveId.SPIKES); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); game.doSwitchPokemon(1); @@ -52,12 +52,12 @@ describe("Moves - Spikes", () => { it("should damage opposing pokemon that are forced to switch in", async () => { game.override.startingWave(5); - await game.classicMode.startBattle([Species.MIGHTYENA, Species.POOCHYENA]); + await game.classicMode.startBattle([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]); - game.move.select(Moves.SPIKES); + game.move.select(MoveId.SPIKES); await game.toNextTurn(); - game.move.select(Moves.ROAR); + game.move.select(MoveId.ROAR); await game.toNextTurn(); const enemy = game.scene.getEnemyParty()[0]; @@ -66,12 +66,12 @@ describe("Moves - Spikes", () => { it("should damage opposing pokemon that choose to switch in", async () => { game.override.startingWave(5); - await game.classicMode.startBattle([Species.MIGHTYENA, Species.POOCHYENA]); + await game.classicMode.startBattle([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]); - game.move.select(Moves.SPIKES); + game.move.select(MoveId.SPIKES); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); game.forceEnemyToSwitch(); await game.toNextTurn(); @@ -80,13 +80,13 @@ describe("Moves - Spikes", () => { }, 20000); it("should work when all targets fainted", async () => { - game.override.enemySpecies(Species.DIGLETT); + game.override.enemySpecies(SpeciesId.DIGLETT); game.override.battleStyle("double"); game.override.startingLevel(50); - await game.classicMode.startBattle([Species.RAYQUAZA, Species.ROWLET]); + await game.classicMode.startBattle([SpeciesId.RAYQUAZA, SpeciesId.ROWLET]); - game.move.select(Moves.EARTHQUAKE); - game.move.select(Moves.SPIKES, 1); + game.move.select(MoveId.EARTHQUAKE); + game.move.select(MoveId.SPIKES, 1); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.arena.getTagOnSide(ArenaTrapTag, ArenaTagSide.ENEMY)).toBeDefined(); diff --git a/test/moves/spit_up.test.ts b/test/moves/spit_up.test.ts index b11d74da64a..2d576168f4c 100644 --- a/test/moves/spit_up.test.ts +++ b/test/moves/spit_up.test.ts @@ -5,10 +5,10 @@ import { BattlerTagType } from "#app/enums/battler-tag-type"; import type { TurnMove } from "#app/field/pokemon"; import { MoveResult } from "#app/field/pokemon"; import GameManager from "#test/testUtils/gameManager"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import type Move from "#app/data/moves/move"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { MovePhase } from "#app/phases/move-phase"; @@ -29,18 +29,18 @@ describe("Moves - Spit Up", () => { }); beforeEach(() => { - spitUp = allMoves[Moves.SPIT_UP]; + spitUp = allMoves[MoveId.SPIT_UP]; game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyMoveset(Moves.SPLASH); - game.override.enemyAbility(Abilities.NONE); + game.override.enemySpecies(SpeciesId.RATTATA); + game.override.enemyMoveset(MoveId.SPLASH); + game.override.enemyAbility(AbilityId.NONE); game.override.enemyLevel(2000); game.override.moveset(new Array(4).fill(spitUp.id)); - game.override.ability(Abilities.NONE); + game.override.ability(AbilityId.NONE); vi.spyOn(spitUp, "calculateBattlePower"); }); @@ -50,7 +50,7 @@ describe("Moves - Spit Up", () => { const stacksToSetup = 1; const expectedPower = 100; - await game.classicMode.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; pokemon.addTag(BattlerTagType.STOCKPILING); @@ -59,7 +59,7 @@ describe("Moves - Spit Up", () => { expect(stockpilingTag).toBeDefined(); expect(stockpilingTag.stockpiledCount).toBe(stacksToSetup); - game.move.select(Moves.SPIT_UP); + game.move.select(MoveId.SPIT_UP); await game.phaseInterceptor.to(TurnInitPhase); expect(spitUp.calculateBattlePower).toHaveBeenCalledOnce(); @@ -72,7 +72,7 @@ describe("Moves - Spit Up", () => { const stacksToSetup = 2; const expectedPower = 200; - await game.classicMode.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; pokemon.addTag(BattlerTagType.STOCKPILING); @@ -82,7 +82,7 @@ describe("Moves - Spit Up", () => { expect(stockpilingTag).toBeDefined(); expect(stockpilingTag.stockpiledCount).toBe(stacksToSetup); - game.move.select(Moves.SPIT_UP); + game.move.select(MoveId.SPIT_UP); await game.phaseInterceptor.to(TurnInitPhase); expect(spitUp.calculateBattlePower).toHaveBeenCalledOnce(); @@ -95,7 +95,7 @@ describe("Moves - Spit Up", () => { const stacksToSetup = 3; const expectedPower = 300; - await game.classicMode.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; pokemon.addTag(BattlerTagType.STOCKPILING); @@ -106,7 +106,7 @@ describe("Moves - Spit Up", () => { expect(stockpilingTag).toBeDefined(); expect(stockpilingTag.stockpiledCount).toBe(stacksToSetup); - game.move.select(Moves.SPIT_UP); + game.move.select(MoveId.SPIT_UP); await game.phaseInterceptor.to(TurnInitPhase); expect(spitUp.calculateBattlePower).toHaveBeenCalledOnce(); @@ -117,18 +117,18 @@ describe("Moves - Spit Up", () => { }); it("fails without stacks", async () => { - await game.classicMode.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; const stockpilingTag = pokemon.getTag(StockpilingTag)!; expect(stockpilingTag).toBeUndefined(); - game.move.select(Moves.SPIT_UP); + game.move.select(MoveId.SPIT_UP); await game.phaseInterceptor.to(TurnInitPhase); expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ - move: Moves.SPIT_UP, + move: MoveId.SPIT_UP, result: MoveResult.FAIL, targets: [game.scene.getEnemyPokemon()!.getBattlerIndex()], }); @@ -138,7 +138,7 @@ describe("Moves - Spit Up", () => { describe("restores stat boosts granted by stacks", () => { it("decreases stats based on stored values (both boosts equal)", async () => { - await game.classicMode.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; pokemon.addTag(BattlerTagType.STOCKPILING); @@ -146,7 +146,7 @@ describe("Moves - Spit Up", () => { const stockpilingTag = pokemon.getTag(StockpilingTag)!; expect(stockpilingTag).toBeDefined(); - game.move.select(Moves.SPIT_UP); + game.move.select(MoveId.SPIT_UP); await game.phaseInterceptor.to(MovePhase); expect(pokemon.getStatStage(Stat.DEF)).toBe(1); @@ -155,7 +155,7 @@ describe("Moves - Spit Up", () => { await game.phaseInterceptor.to(TurnInitPhase); expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ - move: Moves.SPIT_UP, + move: MoveId.SPIT_UP, result: MoveResult.SUCCESS, targets: [game.scene.getEnemyPokemon()!.getBattlerIndex()], }); @@ -169,7 +169,7 @@ describe("Moves - Spit Up", () => { }); it("decreases stats based on stored values (different boosts)", async () => { - await game.classicMode.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; pokemon.addTag(BattlerTagType.STOCKPILING); @@ -183,11 +183,11 @@ describe("Moves - Spit Up", () => { [Stat.SPDEF]: 2, }; - game.move.select(Moves.SPIT_UP); + game.move.select(MoveId.SPIT_UP); await game.phaseInterceptor.to(TurnInitPhase); expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ - move: Moves.SPIT_UP, + move: MoveId.SPIT_UP, result: MoveResult.SUCCESS, targets: [game.scene.getEnemyPokemon()!.getBattlerIndex()], }); diff --git a/test/moves/spotlight.test.ts b/test/moves/spotlight.test.ts index e617682bdd5..2798dfa282a 100644 --- a/test/moves/spotlight.test.ts +++ b/test/moves/spotlight.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; @@ -23,24 +23,24 @@ describe("Moves - Spotlight", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("double"); - game.override.starterSpecies(Species.AMOONGUSS); - game.override.enemySpecies(Species.SNORLAX); + game.override.starterSpecies(SpeciesId.AMOONGUSS); + game.override.enemySpecies(SpeciesId.SNORLAX); game.override.startingLevel(100); game.override.enemyLevel(100); - game.override.moveset([Moves.FOLLOW_ME, Moves.RAGE_POWDER, Moves.SPOTLIGHT, Moves.QUICK_ATTACK]); - game.override.enemyMoveset([Moves.FOLLOW_ME, Moves.SPLASH]); + game.override.moveset([MoveId.FOLLOW_ME, MoveId.RAGE_POWDER, MoveId.SPOTLIGHT, MoveId.QUICK_ATTACK]); + game.override.enemyMoveset([MoveId.FOLLOW_ME, MoveId.SPLASH]); }); test("move should redirect attacks to the target", async () => { - await game.classicMode.startBattle([Species.AMOONGUSS, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS, SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.SPOTLIGHT, 0, BattlerIndex.ENEMY); - game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.SPOTLIGHT, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); - await game.move.selectEnemyMove(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase, false); @@ -49,15 +49,15 @@ describe("Moves - Spotlight", () => { }); test("move should cause other redirection moves to fail", async () => { - await game.classicMode.startBattle([Species.AMOONGUSS, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.AMOONGUSS, SpeciesId.CHARIZARD]); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.SPOTLIGHT, 0, BattlerIndex.ENEMY); - game.move.select(Moves.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); + game.move.select(MoveId.SPOTLIGHT, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.QUICK_ATTACK, 1, BattlerIndex.ENEMY_2); - await game.move.selectEnemyMove(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.FOLLOW_ME); + await game.move.selectEnemyMove(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.FOLLOW_ME); await game.phaseInterceptor.to("BerryPhase", false); diff --git a/test/moves/steamroller.test.ts b/test/moves/steamroller.test.ts index a77a30321e1..f4f8131ff7b 100644 --- a/test/moves/steamroller.test.ts +++ b/test/moves/steamroller.test.ts @@ -2,9 +2,9 @@ import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/data-lists"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import type { DamageCalculationResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -25,26 +25,26 @@ describe("Moves - Steamroller", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.moveset([Moves.STEAMROLLER]).battleStyle("single").enemyAbility(Abilities.BALL_FETCH); + game.override.moveset([MoveId.STEAMROLLER]).battleStyle("single").enemyAbility(AbilityId.BALL_FETCH); }); it("should always hit a minimzed target with double damage", async () => { - game.override.enemySpecies(Species.DITTO).enemyMoveset(Moves.MINIMIZE); - await game.classicMode.startBattle([Species.IRON_BOULDER]); + game.override.enemySpecies(SpeciesId.DITTO).enemyMoveset(MoveId.MINIMIZE); + await game.classicMode.startBattle([SpeciesId.IRON_BOULDER]); const ditto = game.scene.getEnemyPokemon()!; vi.spyOn(ditto, "getAttackDamage"); ditto.hp = 5000; - const steamroller = allMoves[Moves.STEAMROLLER]; + const steamroller = allMoves[MoveId.STEAMROLLER]; vi.spyOn(steamroller, "calculateBattleAccuracy"); const ironBoulder = game.scene.getPlayerPokemon()!; vi.spyOn(ironBoulder, "getAccuracyMultiplier"); // Turn 1 - game.move.select(Moves.STEAMROLLER); + game.move.select(MoveId.STEAMROLLER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); // Turn 2 - game.move.select(Moves.STEAMROLLER); + game.move.select(MoveId.STEAMROLLER); await game.toNextTurn(); const [dmgCalcTurn1, dmgCalcTurn2]: DamageCalculationResult[] = vi diff --git a/test/moves/stockpile.test.ts b/test/moves/stockpile.test.ts index 196a1d8ca9a..5bf2b74d4d9 100644 --- a/test/moves/stockpile.test.ts +++ b/test/moves/stockpile.test.ts @@ -4,9 +4,9 @@ import type { TurnMove } from "#app/field/pokemon"; import { MoveResult } from "#app/field/pokemon"; import { CommandPhase } from "#app/phases/command-phase"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -29,17 +29,17 @@ describe("Moves - Stockpile", () => { game.override.battleStyle("single"); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyMoveset(Moves.SPLASH); - game.override.enemyAbility(Abilities.NONE); + game.override.enemySpecies(SpeciesId.RATTATA); + game.override.enemyMoveset(MoveId.SPLASH); + game.override.enemyAbility(AbilityId.NONE); game.override.startingLevel(2000); - game.override.moveset([Moves.STOCKPILE, Moves.SPLASH]); - game.override.ability(Abilities.NONE); + game.override.moveset([MoveId.STOCKPILE, MoveId.SPLASH]); + game.override.ability(AbilityId.NONE); }); it("gains a stockpile stack and raises user's DEF and SPDEF stat stages by 1 on each use, fails at max stacks (3)", async () => { - await game.classicMode.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); const user = game.scene.getPlayerPokemon()!; @@ -56,7 +56,7 @@ describe("Moves - Stockpile", () => { await game.phaseInterceptor.to(CommandPhase); } - game.move.select(Moves.STOCKPILE); + game.move.select(MoveId.STOCKPILE); await game.phaseInterceptor.to(TurnInitPhase); const stockpilingTag = user.getTag(StockpilingTag)!; @@ -75,7 +75,7 @@ describe("Moves - Stockpile", () => { expect(stockpilingTag.stockpiledCount).toBe(3); expect(user.getMoveHistory().at(-1)).toMatchObject({ result: MoveResult.FAIL, - move: Moves.STOCKPILE, + move: MoveId.STOCKPILE, targets: [user.getBattlerIndex()], }); } @@ -83,7 +83,7 @@ describe("Moves - Stockpile", () => { }); it("gains a stockpile stack even if user's DEF and SPDEF stat stages are at +6", async () => { - await game.classicMode.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); const user = game.scene.getPlayerPokemon()!; @@ -94,7 +94,7 @@ describe("Moves - Stockpile", () => { expect(user.getStatStage(Stat.DEF)).toBe(6); expect(user.getStatStage(Stat.SPDEF)).toBe(6); - game.move.select(Moves.STOCKPILE); + game.move.select(MoveId.STOCKPILE); await game.phaseInterceptor.to(TurnInitPhase); const stockpilingTag = user.getTag(StockpilingTag)!; @@ -106,7 +106,7 @@ describe("Moves - Stockpile", () => { // do it again, just for good measure await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.STOCKPILE); + game.move.select(MoveId.STOCKPILE); await game.phaseInterceptor.to(TurnInitPhase); const stockpilingTagAgain = user.getTag(StockpilingTag)!; diff --git a/test/moves/struggle.test.ts b/test/moves/struggle.test.ts index 61c6cd23e10..cd3c65217ed 100644 --- a/test/moves/struggle.test.ts +++ b/test/moves/struggle.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -22,21 +22,21 @@ describe("Moves - Struggle", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should not have its power boosted by adaptability or stab", async () => { - game.override.moveset([Moves.STRUGGLE]).ability(Abilities.ADAPTABILITY); - await game.classicMode.startBattle([Species.RATTATA]); + game.override.moveset([MoveId.STRUGGLE]).ability(AbilityId.ADAPTABILITY); + await game.classicMode.startBattle([SpeciesId.RATTATA]); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.STRUGGLE); + game.move.select(MoveId.STRUGGLE); const stabSpy = vi.spyOn(enemy, "calculateStabMultiplier"); @@ -48,11 +48,11 @@ describe("Moves - Struggle", () => { }); it("should ignore type effectiveness", async () => { - game.override.moveset([Moves.STRUGGLE]); - await game.classicMode.startBattle([Species.GASTLY]); + game.override.moveset([MoveId.STRUGGLE]); + await game.classicMode.startBattle([SpeciesId.GASTLY]); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.STRUGGLE); + game.move.select(MoveId.STRUGGLE); const moveEffectivenessSpy = vi.spyOn(enemy, "getMoveEffectiveness"); diff --git a/test/moves/substitute.test.ts b/test/moves/substitute.test.ts index 6d0995d3a26..97296be7d8f 100644 --- a/test/moves/substitute.test.ts +++ b/test/moves/substitute.test.ts @@ -8,12 +8,12 @@ import type { CommandPhase } from "#app/phases/command-phase"; import GameManager from "#test/testUtils/gameManager"; import { Command } from "#app/ui/command-ui-handler"; import { UiMode } from "#enums/ui-mode"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import Phaser from "phaser"; @@ -38,20 +38,20 @@ describe("Moves - Substitute", () => { game.override .battleStyle("single") - .moveset([Moves.SUBSTITUTE, Moves.SWORDS_DANCE, Moves.TACKLE, Moves.SPLASH]) - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.INSOMNIA) - .enemyMoveset(Moves.SPLASH) + .moveset([MoveId.SUBSTITUTE, MoveId.SWORDS_DANCE, MoveId.TACKLE, MoveId.SPLASH]) + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.INSOMNIA) + .enemyMoveset(MoveId.SPLASH) .startingLevel(100) .enemyLevel(100); }); it("should cause the user to take damage", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SUBSTITUTE); + game.move.select(MoveId.SUBSTITUTE); await game.phaseInterceptor.to("MoveEndPhase", false); @@ -59,13 +59,13 @@ describe("Moves - Substitute", () => { }); it("should redirect enemy attack damage to the Substitute doll", async () => { - game.override.enemyMoveset(Moves.TACKLE); + game.override.enemyMoveset(MoveId.TACKLE); - await game.classicMode.startBattle([Species.SKARMORY]); + await game.classicMode.startBattle([SpeciesId.SKARMORY]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SUBSTITUTE); + game.move.select(MoveId.SUBSTITUTE); await game.phaseInterceptor.to("MoveEndPhase", false); @@ -81,14 +81,14 @@ describe("Moves - Substitute", () => { it("should fade after redirecting more damage than its remaining HP", async () => { // Giga Impact OHKOs Magikarp if substitute isn't up - game.override.enemyMoveset(Moves.GIGA_IMPACT); - vi.spyOn(allMoves[Moves.GIGA_IMPACT], "accuracy", "get").mockReturnValue(100); + game.override.enemyMoveset(MoveId.GIGA_IMPACT); + vi.spyOn(allMoves[MoveId.GIGA_IMPACT], "accuracy", "get").mockReturnValue(100); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SUBSTITUTE); + game.move.select(MoveId.SUBSTITUTE); await game.phaseInterceptor.to("MoveEndPhase", false); @@ -103,13 +103,13 @@ describe("Moves - Substitute", () => { }); it("should block stat changes from status moves", async () => { - game.override.enemyMoveset(Moves.CHARM); + game.override.enemyMoveset(MoveId.CHARM); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SUBSTITUTE); + game.move.select(MoveId.SUBSTITUTE); await game.phaseInterceptor.to("BerryPhase", false); @@ -118,13 +118,13 @@ describe("Moves - Substitute", () => { }); it("should be bypassed by sound-based moves", async () => { - game.override.enemyMoveset(Moves.ECHOED_VOICE); + game.override.enemyMoveset(MoveId.ECHOED_VOICE); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SUBSTITUTE); + game.move.select(MoveId.SUBSTITUTE); await game.phaseInterceptor.to("MoveEndPhase"); @@ -138,14 +138,14 @@ describe("Moves - Substitute", () => { }); it("should be bypassed by attackers with Infiltrator", async () => { - game.override.enemyMoveset(Moves.TACKLE); - game.override.enemyAbility(Abilities.INFILTRATOR); + game.override.enemyMoveset(MoveId.TACKLE); + game.override.enemyAbility(AbilityId.INFILTRATOR); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SUBSTITUTE); + game.move.select(MoveId.SUBSTITUTE); await game.phaseInterceptor.to("MoveEndPhase"); @@ -159,16 +159,16 @@ describe("Moves - Substitute", () => { }); it("shouldn't block the user's own status moves", async () => { - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.SUBSTITUTE); + game.move.select(MoveId.SUBSTITUTE); await game.phaseInterceptor.to("MoveEndPhase"); await game.toNextTurn(); - game.move.select(Moves.SWORDS_DANCE); + game.move.select(MoveId.SWORDS_DANCE); await game.phaseInterceptor.to("MoveEndPhase", false); @@ -176,16 +176,16 @@ describe("Moves - Substitute", () => { }); it("shouldn't block moves that target the user's side of the field", async () => { - game.override.moveset(Moves.LIGHT_SCREEN); + game.override.moveset(MoveId.LIGHT_SCREEN); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; vi.spyOn(leadPokemon, "getMoveEffectiveness"); - leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, leadPokemon.id); + leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); - game.move.select(Moves.LIGHT_SCREEN); + game.move.select(MoveId.LIGHT_SCREEN); await game.toNextTurn(); @@ -194,14 +194,14 @@ describe("Moves - Substitute", () => { }); it("shouldn't block the opponent from setting hazards", async () => { - game.override.enemyMoveset(Moves.STEALTH_ROCK); + game.override.enemyMoveset(MoveId.STEALTH_ROCK); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; vi.spyOn(leadPokemon, "getMoveEffectiveness"); - game.move.select(Moves.SUBSTITUTE); + game.move.select(MoveId.SUBSTITUTE); await game.toNextTurn(); @@ -210,17 +210,17 @@ describe("Moves - Substitute", () => { }); it("shouldn't block moves that target both sides of the field", async () => { - game.override.moveset(Moves.TRICK_ROOM).enemyMoveset(Moves.GRAVITY); + game.override.moveset(MoveId.TRICK_ROOM).enemyMoveset(MoveId.GRAVITY); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const pokemon = game.scene.getField(true); pokemon.forEach(p => { vi.spyOn(p, "getMoveEffectiveness"); - p.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, p.id); + p.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, p.id); }); - game.move.select(Moves.TRICK_ROOM); + game.move.select(MoveId.TRICK_ROOM); await game.toNextTurn(); @@ -230,17 +230,17 @@ describe("Moves - Substitute", () => { }); it("should protect the user from flinching", async () => { - game.override.enemyMoveset(Moves.FAKE_OUT); + game.override.enemyMoveset(MoveId.FAKE_OUT); game.override.startingLevel(1); // Ensures the Substitute will break - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, leadPokemon.id); + leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("BerryPhase", false); @@ -248,16 +248,16 @@ describe("Moves - Substitute", () => { }); it("should protect the user from being trapped", async () => { - vi.spyOn(allMoves[Moves.SAND_TOMB], "accuracy", "get").mockReturnValue(100); - game.override.enemyMoveset(Moves.SAND_TOMB); + vi.spyOn(allMoves[MoveId.SAND_TOMB], "accuracy", "get").mockReturnValue(100); + game.override.enemyMoveset(MoveId.SAND_TOMB); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; - leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, leadPokemon.id); + leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase", false); @@ -265,16 +265,16 @@ describe("Moves - Substitute", () => { }); it("should prevent the user's stats from being lowered", async () => { - vi.spyOn(allMoves[Moves.LIQUIDATION], "chance", "get").mockReturnValue(100); - game.override.enemyMoveset(Moves.LIQUIDATION); + vi.spyOn(allMoves[MoveId.LIQUIDATION], "chance", "get").mockReturnValue(100); + game.override.enemyMoveset(MoveId.LIQUIDATION); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; - leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, leadPokemon.id); + leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase", false); @@ -282,15 +282,15 @@ describe("Moves - Substitute", () => { }); it("should protect the user from being afflicted with status effects", async () => { - game.override.enemyMoveset(Moves.NUZZLE); + game.override.enemyMoveset(MoveId.NUZZLE); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; - leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, leadPokemon.id); + leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase", false); @@ -298,17 +298,17 @@ describe("Moves - Substitute", () => { }); it("should prevent the user's items from being stolen", async () => { - game.override.enemyMoveset(Moves.THIEF); - vi.spyOn(allMoves[Moves.THIEF], "attrs", "get").mockReturnValue([new StealHeldItemChanceAttr(1.0)]); // give Thief 100% steal rate + game.override.enemyMoveset(MoveId.THIEF); + vi.spyOn(allMoves[MoveId.THIEF], "attrs", "get").mockReturnValue([new StealHeldItemChanceAttr(1.0)]); // give Thief 100% steal rate game.override.startingHeldItems([{ name: "BERRY", type: BerryType.SITRUS }]); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; - leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, leadPokemon.id); + leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase", false); @@ -316,17 +316,17 @@ describe("Moves - Substitute", () => { }); it("should prevent the user's items from being removed", async () => { - game.override.moveset([Moves.KNOCK_OFF]); + game.override.moveset([MoveId.KNOCK_OFF]); game.override.enemyHeldItems([{ name: "BERRY", type: BerryType.SITRUS }]); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const enemyPokemon = game.scene.getEnemyPokemon()!; - enemyPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, enemyPokemon.id); + enemyPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, enemyPokemon.id); const enemyNumItems = enemyPokemon.getHeldItems().length; - game.move.select(Moves.KNOCK_OFF); + game.move.select(MoveId.KNOCK_OFF); await game.phaseInterceptor.to("MoveEndPhase", false); @@ -334,17 +334,17 @@ describe("Moves - Substitute", () => { }); it("move effect should prevent the user's berries from being stolen and eaten", async () => { - game.override.enemyMoveset(Moves.BUG_BITE); + game.override.enemyMoveset(MoveId.BUG_BITE); game.override.startingHeldItems([{ name: "BERRY", type: BerryType.SITRUS }]); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, leadPokemon.id); + leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); - game.move.select(Moves.TACKLE); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("MoveEndPhase", false); const enemyPostAttackHp = enemyPokemon.hp; @@ -356,15 +356,15 @@ describe("Moves - Substitute", () => { }); it("should prevent the user's stats from being reset by Clear Smog", async () => { - game.override.enemyMoveset(Moves.CLEAR_SMOG); + game.override.enemyMoveset(MoveId.CLEAR_SMOG); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; - leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, leadPokemon.id); + leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); - game.move.select(Moves.SWORDS_DANCE); + game.move.select(MoveId.SWORDS_DANCE); await game.phaseInterceptor.to("BerryPhase", false); @@ -372,16 +372,16 @@ describe("Moves - Substitute", () => { }); it("should prevent the user from becoming confused", async () => { - game.override.enemyMoveset(Moves.MAGICAL_TORQUE); - vi.spyOn(allMoves[Moves.MAGICAL_TORQUE], "chance", "get").mockReturnValue(100); + game.override.enemyMoveset(MoveId.MAGICAL_TORQUE); + vi.spyOn(allMoves[MoveId.MAGICAL_TORQUE], "chance", "get").mockReturnValue(100); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerPokemon()!; - leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, leadPokemon.id); + leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); - game.move.select(Moves.SWORDS_DANCE); + game.move.select(MoveId.SWORDS_DANCE); await game.phaseInterceptor.to("BerryPhase", false); @@ -390,13 +390,13 @@ describe("Moves - Substitute", () => { }); it("should transfer to the switched in Pokemon when the source uses Baton Pass", async () => { - game.override.moveset([Moves.SUBSTITUTE, Moves.BATON_PASS]); + game.override.moveset([MoveId.SUBSTITUTE, MoveId.BATON_PASS]); - await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); const leadPokemon = game.scene.getPlayerPokemon()!; - leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, leadPokemon.id); + leadPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, leadPokemon.id); // Simulate a Baton switch for the player this turn game.onNextPrompt("CommandPhase", UiMode.COMMAND, () => { @@ -412,14 +412,14 @@ describe("Moves - Substitute", () => { }); it("should prevent the source's Rough Skin from activating when hit", async () => { - game.override.enemyMoveset(Moves.TACKLE); - game.override.ability(Abilities.ROUGH_SKIN); + game.override.enemyMoveset(MoveId.TACKLE); + game.override.ability(AbilityId.ROUGH_SKIN); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SUBSTITUTE); + game.move.select(MoveId.SUBSTITUTE); await game.phaseInterceptor.to("BerryPhase", false); @@ -427,20 +427,20 @@ describe("Moves - Substitute", () => { }); it("should prevent the source's Focus Punch from failing when hit", async () => { - game.override.enemyMoveset(Moves.TACKLE); - game.override.moveset([Moves.FOCUS_PUNCH]); + game.override.enemyMoveset(MoveId.TACKLE); + game.override.moveset([MoveId.FOCUS_PUNCH]); // Make Focus Punch 40 power to avoid a KO - vi.spyOn(allMoves[Moves.FOCUS_PUNCH], "calculateBattlePower").mockReturnValue(40); + vi.spyOn(allMoves[MoveId.FOCUS_PUNCH], "calculateBattlePower").mockReturnValue(40); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, playerPokemon.id); + playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, playerPokemon.id); - game.move.select(Moves.FOCUS_PUNCH); + game.move.select(MoveId.FOCUS_PUNCH); await game.phaseInterceptor.to("BerryPhase", false); @@ -449,16 +449,16 @@ describe("Moves - Substitute", () => { }); it("should not allow Shell Trap to activate when attacked", async () => { - game.override.enemyMoveset(Moves.TACKLE); - game.override.moveset([Moves.SHELL_TRAP]); + game.override.enemyMoveset(MoveId.TACKLE); + game.override.moveset([MoveId.SHELL_TRAP]); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const playerPokemon = game.scene.getPlayerPokemon()!; - playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, playerPokemon.id); + playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, playerPokemon.id); - game.move.select(Moves.SHELL_TRAP); + game.move.select(MoveId.SHELL_TRAP); await game.phaseInterceptor.to("BerryPhase", false); @@ -466,17 +466,17 @@ describe("Moves - Substitute", () => { }); it("should not allow Beak Blast to burn opponents when hit", async () => { - game.override.enemyMoveset(Moves.TACKLE); - game.override.moveset([Moves.BEAK_BLAST]); + game.override.enemyMoveset(MoveId.TACKLE); + game.override.moveset([MoveId.BEAK_BLAST]); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, playerPokemon.id); + playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, playerPokemon.id); - game.move.select(Moves.BEAK_BLAST); + game.move.select(MoveId.BEAK_BLAST); await game.phaseInterceptor.to("MoveEndPhase"); @@ -484,17 +484,17 @@ describe("Moves - Substitute", () => { }); it("should cause incoming attacks to not activate Counter", async () => { - game.override.enemyMoveset(Moves.TACKLE); - game.override.moveset([Moves.COUNTER]); + game.override.enemyMoveset(MoveId.TACKLE); + game.override.moveset([MoveId.COUNTER]); - await game.classicMode.startBattle([Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.BLASTOISE]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, playerPokemon.id); + playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, playerPokemon.id); - game.move.select(Moves.COUNTER); + game.move.select(MoveId.COUNTER); await game.phaseInterceptor.to("BerryPhase", false); @@ -503,15 +503,15 @@ describe("Moves - Substitute", () => { }); it("should prevent Sappy Seed from applying its Leech Seed effect to the user", async () => { - game.override.enemyMoveset(Moves.SAPPY_SEED); + game.override.enemyMoveset(MoveId.SAPPY_SEED); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); const playerPokemon = game.scene.getPlayerPokemon()!; - playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, Moves.NONE, playerPokemon.id); + playerPokemon.addTag(BattlerTagType.SUBSTITUTE, 0, MoveId.NONE, playerPokemon.id); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); // enemy uses Sappy Seed first await game.move.forceHit(); // forces Sappy Seed to hit diff --git a/test/moves/swallow.test.ts b/test/moves/swallow.test.ts index 6a2fa8840ea..4452636c3af 100644 --- a/test/moves/swallow.test.ts +++ b/test/moves/swallow.test.ts @@ -5,9 +5,9 @@ import type { TurnMove } from "#app/field/pokemon"; import { MoveResult } from "#app/field/pokemon"; import { MovePhase } from "#app/phases/move-phase"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -29,12 +29,12 @@ describe("Moves - Swallow", () => { game.override .battleStyle("single") - .enemySpecies(Species.RATTATA) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.NONE) + .enemySpecies(SpeciesId.RATTATA) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.NONE) .enemyLevel(2000) - .moveset(Moves.SWALLOW) - .ability(Abilities.NONE); + .moveset(MoveId.SWALLOW) + .ability(AbilityId.NONE); }); describe("consumes all stockpile stacks to heal (scaling with stacks)", () => { @@ -42,7 +42,7 @@ describe("Moves - Swallow", () => { const stacksToSetup = 1; const expectedHeal = 25; - await game.classicMode.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; vi.spyOn(pokemon, "getMaxHp").mockReturnValue(100); @@ -56,7 +56,7 @@ describe("Moves - Swallow", () => { vi.spyOn(pokemon, "heal"); - game.move.select(Moves.SWALLOW); + game.move.select(MoveId.SWALLOW); await game.phaseInterceptor.to(TurnInitPhase); expect(pokemon.heal).toHaveBeenCalledOnce(); @@ -69,7 +69,7 @@ describe("Moves - Swallow", () => { const stacksToSetup = 2; const expectedHeal = 50; - await game.classicMode.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; vi.spyOn(pokemon, "getMaxHp").mockReturnValue(100); @@ -84,7 +84,7 @@ describe("Moves - Swallow", () => { vi.spyOn(pokemon, "heal"); - game.move.select(Moves.SWALLOW); + game.move.select(MoveId.SWALLOW); await game.phaseInterceptor.to(TurnInitPhase); expect(pokemon.heal).toHaveBeenCalledOnce(); @@ -97,7 +97,7 @@ describe("Moves - Swallow", () => { const stacksToSetup = 3; const expectedHeal = 100; - await game.classicMode.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; vi.spyOn(pokemon, "getMaxHp").mockReturnValue(100); @@ -113,7 +113,7 @@ describe("Moves - Swallow", () => { vi.spyOn(pokemon, "heal"); - game.move.select(Moves.SWALLOW); + game.move.select(MoveId.SWALLOW); await game.phaseInterceptor.to(TurnInitPhase); expect(pokemon.heal).toHaveBeenCalledOnce(); @@ -124,18 +124,18 @@ describe("Moves - Swallow", () => { }); it("fails without stacks", async () => { - await game.classicMode.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; const stockpilingTag = pokemon.getTag(StockpilingTag)!; expect(stockpilingTag).toBeUndefined(); - game.move.select(Moves.SWALLOW); + game.move.select(MoveId.SWALLOW); await game.phaseInterceptor.to(TurnInitPhase); expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ - move: Moves.SWALLOW, + move: MoveId.SWALLOW, result: MoveResult.FAIL, targets: [pokemon.getBattlerIndex()], }); @@ -143,7 +143,7 @@ describe("Moves - Swallow", () => { describe("restores stat stage boosts granted by stacks", () => { it("decreases stats based on stored values (both boosts equal)", async () => { - await game.classicMode.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; pokemon.addTag(BattlerTagType.STOCKPILING); @@ -151,7 +151,7 @@ describe("Moves - Swallow", () => { const stockpilingTag = pokemon.getTag(StockpilingTag)!; expect(stockpilingTag).toBeDefined(); - game.move.select(Moves.SWALLOW); + game.move.select(MoveId.SWALLOW); await game.phaseInterceptor.to(MovePhase); expect(pokemon.getStatStage(Stat.DEF)).toBe(1); @@ -160,7 +160,7 @@ describe("Moves - Swallow", () => { await game.phaseInterceptor.to(TurnInitPhase); expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ - move: Moves.SWALLOW, + move: MoveId.SWALLOW, result: MoveResult.SUCCESS, targets: [pokemon.getBattlerIndex()], }); @@ -172,7 +172,7 @@ describe("Moves - Swallow", () => { }); it("lower stat stages based on stored values (different boosts)", async () => { - await game.classicMode.startBattle([Species.ABOMASNOW]); + await game.classicMode.startBattle([SpeciesId.ABOMASNOW]); const pokemon = game.scene.getPlayerPokemon()!; pokemon.addTag(BattlerTagType.STOCKPILING); @@ -186,12 +186,12 @@ describe("Moves - Swallow", () => { [Stat.SPDEF]: 2, }; - game.move.select(Moves.SWALLOW); + game.move.select(MoveId.SWALLOW); await game.phaseInterceptor.to(TurnInitPhase); expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ - move: Moves.SWALLOW, + move: MoveId.SWALLOW, result: MoveResult.SUCCESS, targets: [pokemon.getBattlerIndex()], }); diff --git a/test/moves/synchronoise.test.ts b/test/moves/synchronoise.test.ts index 0f59bce26b4..176137c8180 100644 --- a/test/moves/synchronoise.test.ts +++ b/test/moves/synchronoise.test.ts @@ -1,7 +1,7 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { PokemonType } from "#enums/pokemon-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,24 +23,24 @@ describe("Moves - Synchronoise", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SYNCHRONOISE]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SYNCHRONOISE]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should consider the user's tera type if it is terastallized", async () => { - await game.classicMode.startBattle([Species.BIDOOF]); + await game.classicMode.startBattle([SpeciesId.BIDOOF]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; // force the player to be terastallized playerPokemon.teraType = PokemonType.WATER; playerPokemon.isTerastallized = true; - game.move.select(Moves.SYNCHRONOISE); + game.move.select(MoveId.SYNCHRONOISE); await game.phaseInterceptor.to("BerryPhase"); expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); }); diff --git a/test/moves/syrup_bomb.test.ts b/test/moves/syrup_bomb.test.ts index 8e9134497d0..76bc7e7bae0 100644 --- a/test/moves/syrup_bomb.test.ts +++ b/test/moves/syrup_bomb.test.ts @@ -1,6 +1,6 @@ -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; @@ -26,48 +26,48 @@ describe("Moves - SYRUP BOMB", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.SNORLAX) - .enemyAbility(Abilities.BALL_FETCH) - .ability(Abilities.BALL_FETCH) + .enemySpecies(SpeciesId.SNORLAX) + .enemyAbility(AbilityId.BALL_FETCH) + .ability(AbilityId.BALL_FETCH) .startingLevel(30) .enemyLevel(100) - .moveset([Moves.SYRUP_BOMB, Moves.SPLASH]) - .enemyMoveset(Moves.SPLASH); + .moveset([MoveId.SYRUP_BOMB, MoveId.SPLASH]) + .enemyMoveset(MoveId.SPLASH); }); //Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/syrup_bomb_(move) it("decreases the target Pokemon's speed stat once per turn for 3 turns", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const targetPokemon = game.scene.getEnemyPokemon()!; expect(targetPokemon.getStatStage(Stat.SPD)).toBe(0); - game.move.select(Moves.SYRUP_BOMB); + game.move.select(MoveId.SYRUP_BOMB); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceHit(); await game.toNextTurn(); expect(targetPokemon.getTag(BattlerTagType.SYRUP_BOMB)).toBeDefined(); expect(targetPokemon.getStatStage(Stat.SPD)).toBe(-1); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(targetPokemon.getTag(BattlerTagType.SYRUP_BOMB)).toBeDefined(); expect(targetPokemon.getStatStage(Stat.SPD)).toBe(-2); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(targetPokemon.getTag(BattlerTagType.SYRUP_BOMB)).toBeUndefined(); expect(targetPokemon.getStatStage(Stat.SPD)).toBe(-3); }); it("does not affect Pokemon with the ability Bulletproof", async () => { - game.override.enemyAbility(Abilities.BULLETPROOF); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.enemyAbility(AbilityId.BULLETPROOF); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const targetPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.SYRUP_BOMB); + game.move.select(MoveId.SYRUP_BOMB); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceHit(); await game.toNextTurn(); @@ -77,9 +77,9 @@ describe("Moves - SYRUP BOMB", () => { }); it("stops lowering the target's speed if the user leaves the field", async () => { - await game.classicMode.startBattle([Species.FEEBAS, Species.MILOTIC]); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MILOTIC]); - game.move.select(Moves.SYRUP_BOMB); + game.move.select(MoveId.SYRUP_BOMB); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceHit(); await game.toNextTurn(); diff --git a/test/moves/tackle.test.ts b/test/moves/tackle.test.ts index ecd8750d17f..83a267dc7e4 100644 --- a/test/moves/tackle.test.ts +++ b/test/moves/tackle.test.ts @@ -1,8 +1,8 @@ import { Stat } from "#enums/stat"; import { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -23,21 +23,21 @@ describe("Moves - Tackle", () => { beforeEach(() => { game = new GameManager(phaserGame); - const moveToUse = Moves.TACKLE; + const moveToUse = MoveId.TACKLE; game.override .battleStyle("single") - .enemySpecies(Species.MAGIKARP) + .enemySpecies(SpeciesId.MAGIKARP) .startingLevel(1) .startingWave(97) .moveset([moveToUse]) - .enemyMoveset(Moves.GROWTH) + .enemyMoveset(MoveId.GROWTH) .disableCrits(); }); it("TACKLE against ghost", async () => { - const moveToUse = Moves.TACKLE; - game.override.enemySpecies(Species.GENGAR); - await game.classicMode.startBattle([Species.MIGHTYENA]); + const moveToUse = MoveId.TACKLE; + game.override.enemySpecies(SpeciesId.GENGAR); + await game.classicMode.startBattle([SpeciesId.MIGHTYENA]); const hpOpponent = game.scene.currentBattle.enemyParty[0].hp; game.move.select(moveToUse); await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(TurnEndPhase); @@ -46,8 +46,8 @@ describe("Moves - Tackle", () => { }, 20000); it("TACKLE against not resistant", async () => { - const moveToUse = Moves.TACKLE; - await game.classicMode.startBattle([Species.MIGHTYENA]); + const moveToUse = MoveId.TACKLE; + await game.classicMode.startBattle([SpeciesId.MIGHTYENA]); game.scene.currentBattle.enemyParty[0].stats[Stat.DEF] = 50; game.scene.getPlayerParty()[0].stats[Stat.ATK] = 50; diff --git a/test/moves/tail_whip.test.ts b/test/moves/tail_whip.test.ts index d15864dd671..5118897a7cb 100644 --- a/test/moves/tail_whip.test.ts +++ b/test/moves/tail_whip.test.ts @@ -1,8 +1,8 @@ import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; @@ -24,19 +24,19 @@ describe("Moves - Tail whip", () => { beforeEach(() => { game = new GameManager(phaserGame); - const moveToUse = Moves.TAIL_WHIP; + const moveToUse = MoveId.TAIL_WHIP; game.override.battleStyle("single"); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyAbility(Abilities.INSOMNIA); - game.override.ability(Abilities.INSOMNIA); + game.override.enemySpecies(SpeciesId.RATTATA); + game.override.enemyAbility(AbilityId.INSOMNIA); + game.override.ability(AbilityId.INSOMNIA); game.override.startingLevel(2000); game.override.moveset([moveToUse]); - game.override.enemyMoveset(Moves.SPLASH); + game.override.enemyMoveset(MoveId.SPLASH); }); it("should lower DEF stat stage by 1", async () => { - const moveToUse = Moves.TAIL_WHIP; - await game.classicMode.startBattle([Species.MIGHTYENA, Species.MIGHTYENA]); + const moveToUse = MoveId.TAIL_WHIP; + await game.classicMode.startBattle([SpeciesId.MIGHTYENA, SpeciesId.MIGHTYENA]); const enemyPokemon = game.scene.getEnemyPokemon()!; expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); diff --git a/test/moves/tailwind.test.ts b/test/moves/tailwind.test.ts index 40bae67b514..83078d7bf58 100644 --- a/test/moves/tailwind.test.ts +++ b/test/moves/tailwind.test.ts @@ -1,8 +1,8 @@ import { ArenaTagSide } from "#app/data/arena-tag"; import { ArenaTagType } from "#app/enums/arena-tag-type"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -26,14 +26,14 @@ describe("Moves - Tailwind", () => { game = new GameManager(phaserGame); game.override .battleStyle("double") - .moveset([Moves.TAILWIND, Moves.SPLASH]) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.BALL_FETCH) - .ability(Abilities.BALL_FETCH); + .moveset([MoveId.TAILWIND, MoveId.SPLASH]) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) + .ability(AbilityId.BALL_FETCH); }); it("doubles the Speed stat of the Pokemons on its side", async () => { - await game.classicMode.startBattle([Species.MAGIKARP, Species.MEOWTH]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MEOWTH]); const magikarp = game.scene.getPlayerField()[0]; const meowth = game.scene.getPlayerField()[1]; @@ -43,8 +43,8 @@ describe("Moves - Tailwind", () => { expect(magikarp.getEffectiveStat(Stat.SPD)).equal(magikarpSpd); expect(meowth.getEffectiveStat(Stat.SPD)).equal(meowthSpd); - game.move.select(Moves.TAILWIND); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.TAILWIND); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -56,21 +56,21 @@ describe("Moves - Tailwind", () => { it("lasts for 4 turns", async () => { game.override.battleStyle("single"); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(Moves.TAILWIND); + game.move.select(MoveId.TAILWIND); await game.toNextTurn(); expect(game.scene.arena.getTagOnSide(ArenaTagType.TAILWIND, ArenaTagSide.PLAYER)).toBeDefined(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(game.scene.arena.getTagOnSide(ArenaTagType.TAILWIND, ArenaTagSide.PLAYER)).toBeDefined(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(game.scene.arena.getTagOnSide(ArenaTagType.TAILWIND, ArenaTagSide.PLAYER)).toBeDefined(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(game.scene.arena.getTagOnSide(ArenaTagType.TAILWIND, ArenaTagSide.PLAYER)).toBeUndefined(); @@ -79,7 +79,7 @@ describe("Moves - Tailwind", () => { it("does not affect the opposing side", async () => { game.override.battleStyle("single"); - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const ally = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -92,7 +92,7 @@ describe("Moves - Tailwind", () => { expect(game.scene.arena.getTagOnSide(ArenaTagType.TAILWIND, ArenaTagSide.PLAYER)).toBeUndefined(); expect(game.scene.arena.getTagOnSide(ArenaTagType.TAILWIND, ArenaTagSide.ENEMY)).toBeUndefined(); - game.move.select(Moves.TAILWIND); + game.move.select(MoveId.TAILWIND); await game.phaseInterceptor.to("TurnEndPhase"); diff --git a/test/moves/tar_shot.test.ts b/test/moves/tar_shot.test.ts index 68f19e3ab51..21eace0ef1f 100644 --- a/test/moves/tar_shot.test.ts +++ b/test/moves/tar_shot.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; import { PokemonType } from "#enums/pokemon-type"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#app/enums/stat"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -25,29 +25,29 @@ describe("Moves - Tar Shot", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) - .enemySpecies(Species.TANGELA) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .enemySpecies(SpeciesId.TANGELA) .enemyLevel(1000) - .moveset([Moves.TAR_SHOT, Moves.FIRE_PUNCH]) + .moveset([MoveId.TAR_SHOT, MoveId.FIRE_PUNCH]) .disableCrits(); }); it("lowers the target's Speed stat by one stage and doubles the effectiveness of Fire-type moves used on the target", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.TAR_SHOT); + game.move.select(MoveId.TAR_SHOT); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.getStatStage(Stat.SPD)).toBe(-1); await game.toNextTurn(); - game.move.select(Moves.FIRE_PUNCH); + game.move.select(MoveId.FIRE_PUNCH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -55,27 +55,27 @@ describe("Moves - Tar Shot", () => { }); it("will not double the effectiveness of Fire-type moves used on a target that is already under the effect of Tar Shot (but may still lower its Speed)", async () => { - await game.classicMode.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.TAR_SHOT); + game.move.select(MoveId.TAR_SHOT); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.getStatStage(Stat.SPD)).toBe(-1); await game.toNextTurn(); - game.move.select(Moves.TAR_SHOT); + game.move.select(MoveId.TAR_SHOT); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.getStatStage(Stat.SPD)).toBe(-2); await game.toNextTurn(); - game.move.select(Moves.FIRE_PUNCH); + game.move.select(MoveId.FIRE_PUNCH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -83,8 +83,8 @@ describe("Moves - Tar Shot", () => { }); it("does not double the effectiveness of Fire-type moves against a Pokémon that is Terastallized", async () => { - game.override.enemySpecies(Species.SPRIGATITO); - await game.classicMode.startBattle([Species.PIKACHU]); + game.override.enemySpecies(SpeciesId.SPRIGATITO); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const enemy = game.scene.getEnemyPokemon()!; enemy.teraType = PokemonType.GRASS; @@ -92,14 +92,14 @@ describe("Moves - Tar Shot", () => { vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.TAR_SHOT); + game.move.select(MoveId.TAR_SHOT); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.getStatStage(Stat.SPD)).toBe(-1); await game.toNextTurn(); - game.move.select(Moves.FIRE_PUNCH); + game.move.select(MoveId.FIRE_PUNCH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -107,14 +107,14 @@ describe("Moves - Tar Shot", () => { }); it("doubles the effectiveness of Fire-type moves against a Pokémon that is already under the effects of Tar Shot before it Terastallized", async () => { - game.override.enemySpecies(Species.SPRIGATITO); - await game.classicMode.startBattle([Species.PIKACHU]); + game.override.enemySpecies(SpeciesId.SPRIGATITO); + await game.classicMode.startBattle([SpeciesId.PIKACHU]); const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "getMoveEffectiveness"); - game.move.select(Moves.TAR_SHOT); + game.move.select(MoveId.TAR_SHOT); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.getStatStage(Stat.SPD)).toBe(-1); @@ -124,7 +124,7 @@ describe("Moves - Tar Shot", () => { enemy.teraType = PokemonType.GRASS; enemy.isTerastallized = true; - game.move.select(Moves.FIRE_PUNCH); + game.move.select(MoveId.FIRE_PUNCH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); diff --git a/test/moves/taunt.test.ts b/test/moves/taunt.test.ts index bcb4789f888..e214bd77ef7 100644 --- a/test/moves/taunt.test.ts +++ b/test/moves/taunt.test.ts @@ -1,6 +1,6 @@ -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,31 +24,31 @@ describe("Moves - Taunt", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.TAUNT, Moves.SPLASH]) - .enemySpecies(Species.SHUCKLE) - .moveset([Moves.GROWL]); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.TAUNT, MoveId.SPLASH]) + .enemySpecies(SpeciesId.SHUCKLE) + .moveset([MoveId.GROWL]); }); it("Pokemon should not be able to use Status Moves", async () => { - await game.classicMode.startBattle([Species.REGIELEKI]); + await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const playerPokemon = game.scene.getPlayerPokemon()!; // First turn, Player Pokemon succeeds using Growl without Taunt - game.move.select(Moves.GROWL); - await game.move.selectEnemyMove(Moves.TAUNT); + game.move.select(MoveId.GROWL); + await game.move.selectEnemyMove(MoveId.TAUNT); await game.toNextTurn(); const move1 = playerPokemon.getLastXMoves(1)[0]!; - expect(move1.move).toBe(Moves.GROWL); + expect(move1.move).toBe(MoveId.GROWL); expect(move1.result).toBe(MoveResult.SUCCESS); expect(playerPokemon?.getTag(BattlerTagType.TAUNT)).toBeDefined(); // Second turn, Taunt forces Struggle to occur - game.move.select(Moves.GROWL); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.GROWL); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); const move2 = playerPokemon.getLastXMoves(1)[0]!; - expect(move2.move).toBe(Moves.STRUGGLE); + expect(move2.move).toBe(MoveId.STRUGGLE); }); }); diff --git a/test/moves/telekinesis.test.ts b/test/moves/telekinesis.test.ts index e5a21e915fa..18df17f1587 100644 --- a/test/moves/telekinesis.test.ts +++ b/test/moves/telekinesis.test.ts @@ -1,8 +1,8 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { MoveResult } from "#app/field/pokemon"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -26,95 +26,95 @@ describe("Moves - Telekinesis", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.TELEKINESIS, Moves.TACKLE, Moves.MUD_SHOT, Moves.SMACK_DOWN]) + .moveset([MoveId.TELEKINESIS, MoveId.TACKLE, MoveId.MUD_SHOT, MoveId.SMACK_DOWN]) .battleStyle("single") - .enemySpecies(Species.SNORLAX) + .enemySpecies(SpeciesId.SNORLAX) .enemyLevel(60) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.SPLASH]); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.SPLASH]); }); it("Telekinesis makes the affected vulnerable to most attacking moves regardless of accuracy", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemyOpponent = game.scene.getEnemyPokemon()!; - game.move.select(Moves.TELEKINESIS); + game.move.select(MoveId.TELEKINESIS); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyOpponent.getTag(BattlerTagType.TELEKINESIS)).toBeDefined(); expect(enemyOpponent.getTag(BattlerTagType.FLOATING)).toBeDefined(); await game.toNextTurn(); - vi.spyOn(allMoves[Moves.TACKLE], "accuracy", "get").mockReturnValue(0); - game.move.select(Moves.TACKLE); + vi.spyOn(allMoves[MoveId.TACKLE], "accuracy", "get").mockReturnValue(0); + game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyOpponent.isFullHp()).toBe(false); }); it("Telekinesis makes the affected airborne and immune to most Ground-moves", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemyOpponent = game.scene.getEnemyPokemon()!; - game.move.select(Moves.TELEKINESIS); + game.move.select(MoveId.TELEKINESIS); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyOpponent.getTag(BattlerTagType.TELEKINESIS)).toBeDefined(); expect(enemyOpponent.getTag(BattlerTagType.FLOATING)).toBeDefined(); await game.toNextTurn(); - vi.spyOn(allMoves[Moves.MUD_SHOT], "accuracy", "get").mockReturnValue(100); - game.move.select(Moves.MUD_SHOT); + vi.spyOn(allMoves[MoveId.MUD_SHOT], "accuracy", "get").mockReturnValue(100); + game.move.select(MoveId.MUD_SHOT); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyOpponent.isFullHp()).toBe(true); }); it("Telekinesis can still affect Pokemon that have been transformed into invalid Pokemon", async () => { - game.override.enemyMoveset(Moves.TRANSFORM); - await game.classicMode.startBattle([Species.DIGLETT]); + game.override.enemyMoveset(MoveId.TRANSFORM); + await game.classicMode.startBattle([SpeciesId.DIGLETT]); const enemyOpponent = game.scene.getEnemyPokemon()!; - game.move.select(Moves.TELEKINESIS); + game.move.select(MoveId.TELEKINESIS); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyOpponent.getTag(BattlerTagType.TELEKINESIS)).toBeDefined(); expect(enemyOpponent.getTag(BattlerTagType.FLOATING)).toBeDefined(); - expect(enemyOpponent.summonData.speciesForm?.speciesId).toBe(Species.DIGLETT); + expect(enemyOpponent.summonData.speciesForm?.speciesId).toBe(SpeciesId.DIGLETT); }); it("Moves like Smack Down and 1000 Arrows remove all effects of Telekinesis from the target Pokemon", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemyOpponent = game.scene.getEnemyPokemon()!; - game.move.select(Moves.TELEKINESIS); + game.move.select(MoveId.TELEKINESIS); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyOpponent.getTag(BattlerTagType.TELEKINESIS)).toBeDefined(); expect(enemyOpponent.getTag(BattlerTagType.FLOATING)).toBeDefined(); await game.toNextTurn(); - game.move.select(Moves.SMACK_DOWN); + game.move.select(MoveId.SMACK_DOWN); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyOpponent.getTag(BattlerTagType.TELEKINESIS)).toBeUndefined(); expect(enemyOpponent.getTag(BattlerTagType.FLOATING)).toBeUndefined(); }); it("Ingrain will remove the floating effect of Telekinesis, but not the 100% hit", async () => { - game.override.enemyMoveset([Moves.SPLASH, Moves.INGRAIN]); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.INGRAIN]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyOpponent = game.scene.getEnemyPokemon()!; - game.move.select(Moves.TELEKINESIS); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.TELEKINESIS); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyOpponent.getTag(BattlerTagType.TELEKINESIS)).toBeDefined(); expect(enemyOpponent.getTag(BattlerTagType.FLOATING)).toBeDefined(); await game.toNextTurn(); - vi.spyOn(allMoves[Moves.MUD_SHOT], "accuracy", "get").mockReturnValue(0); - game.move.select(Moves.MUD_SHOT); - await game.move.selectEnemyMove(Moves.INGRAIN); + vi.spyOn(allMoves[MoveId.MUD_SHOT], "accuracy", "get").mockReturnValue(0); + game.move.select(MoveId.MUD_SHOT); + await game.move.selectEnemyMove(MoveId.INGRAIN); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyOpponent.getTag(BattlerTagType.TELEKINESIS)).toBeDefined(); expect(enemyOpponent.getTag(BattlerTagType.INGRAIN)).toBeDefined(); @@ -125,12 +125,12 @@ describe("Moves - Telekinesis", () => { it("should not be baton passed onto a mega gengar", async () => { game.override - .moveset([Moves.BATON_PASS]) - .enemyMoveset([Moves.TELEKINESIS]) - .starterForms({ [Species.GENGAR]: 1 }); + .moveset([MoveId.BATON_PASS]) + .enemyMoveset([MoveId.TELEKINESIS]) + .starterForms({ [SpeciesId.GENGAR]: 1 }); - await game.classicMode.startBattle([Species.MAGIKARP, Species.GENGAR]); - game.move.select(Moves.BATON_PASS); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.GENGAR]); + game.move.select(MoveId.BATON_PASS); game.doSelectPartyPokemon(1); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/moves/tera_blast.test.ts b/test/moves/tera_blast.test.ts index c18c7f25498..4e3f9c6869b 100644 --- a/test/moves/tera_blast.test.ts +++ b/test/moves/tera_blast.test.ts @@ -4,9 +4,9 @@ import { TeraMoveCategoryAttr } from "#app/data/moves/move"; import { allMoves } from "#app/data/data-lists"; import type Move from "#app/data/moves/move"; import { PokemonType } from "#enums/pokemon-type"; -import { Abilities } from "#app/enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -22,7 +22,7 @@ describe("Moves - Tera Blast", () => { phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); - moveToCheck = allMoves[Moves.TERA_BLAST]; + moveToCheck = allMoves[MoveId.TERA_BLAST]; teraBlastAttr = moveToCheck.getAttrs(TeraMoveCategoryAttr)[0]; }); @@ -36,19 +36,19 @@ describe("Moves - Tera Blast", () => { game.override .battleStyle("single") .disableCrits() - .starterSpecies(Species.FEEBAS) - .moveset([Moves.TERA_BLAST]) - .ability(Abilities.BALL_FETCH) - .enemySpecies(Species.MAGIKARP) - .enemyMoveset(Moves.SPLASH) - .enemyAbility(Abilities.STURDY) + .starterSpecies(SpeciesId.FEEBAS) + .moveset([MoveId.TERA_BLAST]) + .ability(AbilityId.BALL_FETCH) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH) + .enemyAbility(AbilityId.STURDY) .enemyLevel(50); vi.spyOn(moveToCheck, "calculateBattlePower"); }); it("changes type to match user's tera type", async () => { - game.override.enemySpecies(Species.FURRET); + game.override.enemySpecies(SpeciesId.FURRET); await game.classicMode.startBattle(); const enemyPokemon = game.scene.getEnemyPokemon()!; const spy = vi.spyOn(enemyPokemon, "getMoveEffectiveness"); @@ -57,7 +57,7 @@ describe("Moves - Tera Blast", () => { playerPokemon.teraType = PokemonType.FIGHTING; playerPokemon.isTerastallized = true; - game.move.select(Moves.TERA_BLAST); + game.move.select(MoveId.TERA_BLAST); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -71,7 +71,7 @@ describe("Moves - Tera Blast", () => { playerPokemon.teraType = PokemonType.STELLAR; playerPokemon.isTerastallized = true; - game.move.select(Moves.TERA_BLAST); + game.move.select(MoveId.TERA_BLAST); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -89,7 +89,7 @@ describe("Moves - Tera Blast", () => { const spy = vi.spyOn(enemyPokemon, "getMoveEffectiveness"); enemyPokemon.isTerastallized = true; - game.move.select(Moves.TERA_BLAST); + game.move.select(MoveId.TERA_BLAST); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEffectPhase"); @@ -106,7 +106,7 @@ describe("Moves - Tera Blast", () => { vi.spyOn(teraBlastAttr, "apply"); - game.move.select(Moves.TERA_BLAST); + game.move.select(MoveId.TERA_BLAST); await game.toNextTurn(); expect(teraBlastAttr.apply).toHaveLastReturnedWith(true); }); @@ -120,13 +120,13 @@ describe("Moves - Tera Blast", () => { vi.spyOn(teraBlastAttr, "apply"); - game.move.select(Moves.TERA_BLAST); + game.move.select(MoveId.TERA_BLAST); await game.toNextTurn(); expect(teraBlastAttr.apply).toHaveLastReturnedWith(false); }); it("should stay as a special move if ATK turns lower than SPATK mid-turn", async () => { - game.override.enemyMoveset([Moves.CHARM]); + game.override.enemyMoveset([MoveId.CHARM]); await game.classicMode.startBattle(); const playerPokemon = game.scene.getPlayerPokemon()!; @@ -135,7 +135,7 @@ describe("Moves - Tera Blast", () => { vi.spyOn(teraBlastAttr, "apply"); - game.move.select(Moves.TERA_BLAST); + game.move.select(MoveId.TERA_BLAST); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); expect(teraBlastAttr.apply).toHaveLastReturnedWith(false); @@ -144,7 +144,7 @@ describe("Moves - Tera Blast", () => { it("does not change its move category from stat changes due to held items", async () => { game.override .startingHeldItems([{ name: "SPECIES_STAT_BOOSTER", type: "THICK_CLUB" }]) - .starterSpecies(Species.CUBONE); + .starterSpecies(SpeciesId.CUBONE); await game.classicMode.startBattle(); const playerPokemon = game.scene.getPlayerPokemon()!; @@ -154,7 +154,7 @@ describe("Moves - Tera Blast", () => { vi.spyOn(teraBlastAttr, "apply"); - game.move.select(Moves.TERA_BLAST); + game.move.select(MoveId.TERA_BLAST); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); @@ -162,7 +162,7 @@ describe("Moves - Tera Blast", () => { }); it("does not change its move category from stat changes due to abilities", async () => { - game.override.ability(Abilities.HUGE_POWER); + game.override.ability(AbilityId.HUGE_POWER); await game.classicMode.startBattle(); const playerPokemon = game.scene.getPlayerPokemon()!; @@ -171,7 +171,7 @@ describe("Moves - Tera Blast", () => { vi.spyOn(teraBlastAttr, "apply"); - game.move.select(Moves.TERA_BLAST); + game.move.select(MoveId.TERA_BLAST); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); expect(teraBlastAttr.apply).toHaveLastReturnedWith(false); @@ -184,7 +184,7 @@ describe("Moves - Tera Blast", () => { playerPokemon.teraType = PokemonType.STELLAR; playerPokemon.isTerastallized = true; - game.move.select(Moves.TERA_BLAST); + game.move.select(MoveId.TERA_BLAST); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -193,29 +193,29 @@ describe("Moves - Tera Blast", () => { }); it.each([ - { ab: "galvanize", ty: "electric", ab_id: Abilities.GALVANIZE, ty_id: PokemonType.ELECTRIC }, - { ab: "refrigerate", ty: "ice", ab_id: Abilities.REFRIGERATE, ty_id: PokemonType.ICE }, - { ab: "pixilate", ty: "fairy", ab_id: Abilities.PIXILATE, ty_id: PokemonType.FAIRY }, - { ab: "aerilate", ty: "flying", ab_id: Abilities.AERILATE, ty_id: PokemonType.FLYING }, + { ab: "galvanize", ty: "electric", ab_id: AbilityId.GALVANIZE, ty_id: PokemonType.ELECTRIC }, + { ab: "refrigerate", ty: "ice", ab_id: AbilityId.REFRIGERATE, ty_id: PokemonType.ICE }, + { ab: "pixilate", ty: "fairy", ab_id: AbilityId.PIXILATE, ty_id: PokemonType.FAIRY }, + { ab: "aerilate", ty: "flying", ab_id: AbilityId.AERILATE, ty_id: PokemonType.FLYING }, ])("should be $ty type if the user has $ab", async ({ ab_id, ty_id }) => { - game.override.ability(ab_id).moveset([Moves.TERA_BLAST]).enemyAbility(Abilities.BALL_FETCH); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.ability(ab_id).moveset([MoveId.TERA_BLAST]).enemyAbility(AbilityId.BALL_FETCH); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; - expect(playerPokemon.getMoveType(allMoves[Moves.TERA_BLAST])).toBe(ty_id); + expect(playerPokemon.getMoveType(allMoves[MoveId.TERA_BLAST])).toBe(ty_id); }); it("should not be affected by normalize when the user is terastallized with tera normal", async () => { - game.override.moveset([Moves.TERA_BLAST]).ability(Abilities.NORMALIZE); - await game.classicMode.startBattle([Species.MAGIKARP]); + game.override.moveset([MoveId.TERA_BLAST]).ability(AbilityId.NORMALIZE); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const playerPokemon = game.scene.getPlayerPokemon()!; // override the tera state for the pokemon playerPokemon.isTerastallized = true; playerPokemon.teraType = PokemonType.NORMAL; - const move = allMoves[Moves.TERA_BLAST]; + const move = allMoves[MoveId.TERA_BLAST]; const powerSpy = vi.spyOn(move, "calculateBattlePower"); - game.move.select(Moves.TERA_BLAST); + game.move.select(MoveId.TERA_BLAST); await game.phaseInterceptor.to("BerryPhase"); expect(powerSpy).toHaveLastReturnedWith(move.power); }); diff --git a/test/moves/tera_starstorm.test.ts b/test/moves/tera_starstorm.test.ts index 5ae0c575599..bd1fa14398d 100644 --- a/test/moves/tera_starstorm.test.ts +++ b/test/moves/tera_starstorm.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { PokemonType } from "#enums/pokemon-type"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; @@ -24,37 +24,37 @@ describe("Moves - Tera Starstorm", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.TERA_STARSTORM, Moves.SPLASH]) + .moveset([MoveId.TERA_STARSTORM, MoveId.SPLASH]) .battleStyle("double") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(30) - .enemySpecies(Species.MAGIKARP); + .enemySpecies(SpeciesId.MAGIKARP); }); it("changes type to Stellar when used by Terapagos in its Stellar Form", async () => { game.override.battleStyle("single"); - await game.classicMode.startBattle([Species.TERAPAGOS]); + await game.classicMode.startBattle([SpeciesId.TERAPAGOS]); const terapagos = game.scene.getPlayerPokemon()!; terapagos.isTerastallized = true; vi.spyOn(terapagos, "getMoveType"); - game.move.select(Moves.TERA_STARSTORM); + game.move.select(MoveId.TERA_STARSTORM); await game.phaseInterceptor.to("TurnEndPhase"); expect(terapagos.getMoveType).toHaveReturnedWith(PokemonType.STELLAR); }); it("targets both opponents in a double battle when used by Terapagos in its Stellar Form", async () => { - await game.classicMode.startBattle([Species.MAGIKARP, Species.TERAPAGOS]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.TERAPAGOS]); const terapagos = game.scene.getPlayerParty()[1]; terapagos.isTerastallized = true; - game.move.select(Moves.TERA_STARSTORM, 0, BattlerIndex.ENEMY); - game.move.select(Moves.TERA_STARSTORM, 1); + game.move.select(MoveId.TERA_STARSTORM, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.TERA_STARSTORM, 1); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); @@ -70,12 +70,12 @@ describe("Moves - Tera Starstorm", () => { }); it("targets both opponents in a double battle when used by Terapagos immediately after terastallizing", async () => { - await game.classicMode.startBattle([Species.TERAPAGOS]); + await game.classicMode.startBattle([SpeciesId.TERAPAGOS]); const terapagos = game.scene.getPlayerParty()[0]; terapagos.isTerastallized = false; - game.move.selectWithTera(Moves.TERA_STARSTORM, 0); + game.move.selectWithTera(MoveId.TERA_STARSTORM, 0); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); @@ -87,12 +87,12 @@ describe("Moves - Tera Starstorm", () => { }); it("targets only one opponent in a double battle when used by Terapagos without terastallizing", async () => { - await game.classicMode.startBattle([Species.TERAPAGOS]); + await game.classicMode.startBattle([SpeciesId.TERAPAGOS]); const terapagos = game.scene.getPlayerParty()[0]; terapagos.isTerastallized = false; - game.move.select(Moves.TERA_STARSTORM, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.TERA_STARSTORM, 0, BattlerIndex.ENEMY); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); @@ -104,7 +104,7 @@ describe("Moves - Tera Starstorm", () => { }); it("applies the effects when Terapagos in Stellar Form is fused with another Pokemon", async () => { - await game.classicMode.startBattle([Species.TERAPAGOS, Species.CHARMANDER, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.TERAPAGOS, SpeciesId.CHARMANDER, SpeciesId.MAGIKARP]); const fusionedMon = game.scene.getPlayerParty()[0]; const magikarp = game.scene.getPlayerParty()[2]; @@ -122,8 +122,8 @@ describe("Moves - Tera Starstorm", () => { vi.spyOn(fusionedMon, "getMoveType"); - game.move.select(Moves.TERA_STARSTORM, 0); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.TERA_STARSTORM, 0); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to("TurnEndPhase"); // Fusion and terastallized diff --git a/test/moves/thousand_arrows.test.ts b/test/moves/thousand_arrows.test.ts index 39bc8617767..428e7c4fbe4 100644 --- a/test/moves/thousand_arrows.test.ts +++ b/test/moves/thousand_arrows.test.ts @@ -1,9 +1,9 @@ -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { BerryPhase } from "#app/phases/berry-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,19 +25,19 @@ describe("Moves - Thousand Arrows", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.enemySpecies(Species.TOGETIC); + game.override.enemySpecies(SpeciesId.TOGETIC); game.override.startingLevel(100); game.override.enemyLevel(100); - game.override.moveset([Moves.THOUSAND_ARROWS]); - game.override.enemyMoveset([Moves.SPLASH, Moves.SPLASH, Moves.SPLASH, Moves.SPLASH]); + game.override.moveset([MoveId.THOUSAND_ARROWS]); + game.override.enemyMoveset([MoveId.SPLASH, MoveId.SPLASH, MoveId.SPLASH, MoveId.SPLASH]); }); it("move should hit and ground Flying-type targets", async () => { - await game.classicMode.startBattle([Species.ILLUMISE]); + await game.classicMode.startBattle([SpeciesId.ILLUMISE]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.THOUSAND_ARROWS); + game.move.select(MoveId.THOUSAND_ARROWS); await game.phaseInterceptor.to(MoveEffectPhase, false); // Enemy should not be grounded before move effect is applied @@ -50,14 +50,14 @@ describe("Moves - Thousand Arrows", () => { }); it("move should hit and ground targets with Levitate", async () => { - game.override.enemySpecies(Species.SNORLAX); - game.override.enemyAbility(Abilities.LEVITATE); + game.override.enemySpecies(SpeciesId.SNORLAX); + game.override.enemyAbility(AbilityId.LEVITATE); - await game.classicMode.startBattle([Species.ILLUMISE]); + await game.classicMode.startBattle([SpeciesId.ILLUMISE]); const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.THOUSAND_ARROWS); + game.move.select(MoveId.THOUSAND_ARROWS); await game.phaseInterceptor.to(MoveEffectPhase, false); // Enemy should not be grounded before move effect is applied @@ -70,15 +70,15 @@ describe("Moves - Thousand Arrows", () => { }); it("move should hit and ground targets under the effects of Magnet Rise", async () => { - game.override.enemySpecies(Species.SNORLAX); + game.override.enemySpecies(SpeciesId.SNORLAX); - await game.classicMode.startBattle([Species.ILLUMISE]); + await game.classicMode.startBattle([SpeciesId.ILLUMISE]); const enemyPokemon = game.scene.getEnemyPokemon()!; - enemyPokemon.addTag(BattlerTagType.FLOATING, undefined, Moves.MAGNET_RISE); + enemyPokemon.addTag(BattlerTagType.FLOATING, undefined, MoveId.MAGNET_RISE); - game.move.select(Moves.THOUSAND_ARROWS); + game.move.select(MoveId.THOUSAND_ARROWS); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/throat_chop.test.ts b/test/moves/throat_chop.test.ts index 8e504633707..c1c9c4e94ad 100644 --- a/test/moves/throat_chop.test.ts +++ b/test/moves/throat_chop.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { Stat } from "#app/enums/stat"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; @@ -23,20 +23,20 @@ describe("Moves - Throat Chop", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Moves.GROWL) + .moveset(MoveId.GROWL) .battleStyle("single") - .ability(Abilities.BALL_FETCH) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.THROAT_CHOP) - .enemySpecies(Species.MAGIKARP); + .ability(AbilityId.BALL_FETCH) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.THROAT_CHOP) + .enemySpecies(SpeciesId.MAGIKARP); }); it("prevents the target from using sound-based moves for two turns", async () => { - await game.classicMode.startBattle([Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); // First turn, move is interrupted @@ -46,7 +46,7 @@ describe("Moves - Throat Chop", () => { // Second turn, struggle if no valid moves await game.toNextTurn(); - game.move.select(Moves.GROWL); + game.move.select(MoveId.GROWL); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); diff --git a/test/moves/thunder_wave.test.ts b/test/moves/thunder_wave.test.ts index 326d7ecbdc0..7d2692fdfa3 100644 --- a/test/moves/thunder_wave.test.ts +++ b/test/moves/thunder_wave.test.ts @@ -1,7 +1,7 @@ import type { EnemyPokemon } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -25,20 +25,20 @@ describe("Moves - Thunder Wave", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .starterSpecies(Species.PIKACHU) - .moveset([Moves.THUNDER_WAVE]) - .enemyMoveset(Moves.SPLASH); + .starterSpecies(SpeciesId.PIKACHU) + .moveset([MoveId.THUNDER_WAVE]) + .enemyMoveset(MoveId.SPLASH); }); // References: https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move) it("paralyzes non-statused Pokemon that are not Ground types", async () => { - game.override.enemySpecies(Species.MAGIKARP); + game.override.enemySpecies(SpeciesId.MAGIKARP); await game.classicMode.startBattle(); const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.THUNDER_WAVE); + game.move.select(MoveId.THUNDER_WAVE); await game.move.forceHit(); await game.phaseInterceptor.to("BerryPhase", false); @@ -46,12 +46,12 @@ describe("Moves - Thunder Wave", () => { }); it("does not paralyze if the Pokemon is a Ground-type", async () => { - game.override.enemySpecies(Species.DIGLETT); + game.override.enemySpecies(SpeciesId.DIGLETT); await game.classicMode.startBattle(); const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.THUNDER_WAVE); + game.move.select(MoveId.THUNDER_WAVE); await game.move.forceHit(); await game.phaseInterceptor.to("BerryPhase", false); @@ -59,12 +59,12 @@ describe("Moves - Thunder Wave", () => { }); it("does not paralyze if the Pokemon already has a status effect", async () => { - game.override.enemySpecies(Species.MAGIKARP).enemyStatusEffect(StatusEffect.BURN); + game.override.enemySpecies(SpeciesId.MAGIKARP).enemyStatusEffect(StatusEffect.BURN); await game.classicMode.startBattle(); const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.THUNDER_WAVE); + game.move.select(MoveId.THUNDER_WAVE); await game.move.forceHit(); await game.phaseInterceptor.to("BerryPhase", false); @@ -72,12 +72,12 @@ describe("Moves - Thunder Wave", () => { }); it("affects Ground types if the user has Normalize", async () => { - game.override.ability(Abilities.NORMALIZE).enemySpecies(Species.DIGLETT); + game.override.ability(AbilityId.NORMALIZE).enemySpecies(SpeciesId.DIGLETT); await game.classicMode.startBattle(); const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.THUNDER_WAVE); + game.move.select(MoveId.THUNDER_WAVE); await game.move.forceHit(); await game.phaseInterceptor.to("BerryPhase", false); @@ -85,12 +85,12 @@ describe("Moves - Thunder Wave", () => { }); it("does not affect Ghost types if the user has Normalize", async () => { - game.override.ability(Abilities.NORMALIZE).enemySpecies(Species.HAUNTER); + game.override.ability(AbilityId.NORMALIZE).enemySpecies(SpeciesId.HAUNTER); await game.classicMode.startBattle(); const enemyPokemon: EnemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.THUNDER_WAVE); + game.move.select(MoveId.THUNDER_WAVE); await game.move.forceHit(); await game.phaseInterceptor.to("BerryPhase", false); diff --git a/test/moves/tidy_up.test.ts b/test/moves/tidy_up.test.ts index 103b2d0a1c5..8e79b6b130a 100644 --- a/test/moves/tidy_up.test.ts +++ b/test/moves/tidy_up.test.ts @@ -2,9 +2,9 @@ import { Stat } from "#enums/stat"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import { MoveEndPhase } from "#app/phases/move-end-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -27,68 +27,68 @@ describe("Moves - Tidy Up", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override.battleStyle("single"); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyAbility(Abilities.BALL_FETCH); - game.override.enemyMoveset(Moves.SPLASH); - game.override.starterSpecies(Species.FEEBAS); - game.override.ability(Abilities.BALL_FETCH); - game.override.moveset([Moves.TIDY_UP]); + game.override.enemySpecies(SpeciesId.MAGIKARP); + game.override.enemyAbility(AbilityId.BALL_FETCH); + game.override.enemyMoveset(MoveId.SPLASH); + game.override.starterSpecies(SpeciesId.FEEBAS); + game.override.ability(AbilityId.BALL_FETCH); + game.override.moveset([MoveId.TIDY_UP]); game.override.startingLevel(50); }); it("spikes are cleared", async () => { - game.override.moveset([Moves.SPIKES, Moves.TIDY_UP]).enemyMoveset(Moves.SPIKES); + game.override.moveset([MoveId.SPIKES, MoveId.TIDY_UP]).enemyMoveset(MoveId.SPIKES); await game.classicMode.startBattle(); - game.move.select(Moves.SPIKES); + game.move.select(MoveId.SPIKES); await game.phaseInterceptor.to(TurnEndPhase); - game.move.select(Moves.TIDY_UP); + game.move.select(MoveId.TIDY_UP); await game.phaseInterceptor.to(MoveEndPhase); expect(game.scene.arena.getTag(ArenaTagType.SPIKES)).toBeUndefined(); }, 20000); it("stealth rocks are cleared", async () => { - game.override.moveset([Moves.STEALTH_ROCK, Moves.TIDY_UP]).enemyMoveset(Moves.STEALTH_ROCK); + game.override.moveset([MoveId.STEALTH_ROCK, MoveId.TIDY_UP]).enemyMoveset(MoveId.STEALTH_ROCK); await game.classicMode.startBattle(); - game.move.select(Moves.STEALTH_ROCK); + game.move.select(MoveId.STEALTH_ROCK); await game.phaseInterceptor.to(TurnEndPhase); - game.move.select(Moves.TIDY_UP); + game.move.select(MoveId.TIDY_UP); await game.phaseInterceptor.to(MoveEndPhase); expect(game.scene.arena.getTag(ArenaTagType.STEALTH_ROCK)).toBeUndefined(); }, 20000); it("toxic spikes are cleared", async () => { - game.override.moveset([Moves.TOXIC_SPIKES, Moves.TIDY_UP]).enemyMoveset(Moves.TOXIC_SPIKES); + game.override.moveset([MoveId.TOXIC_SPIKES, MoveId.TIDY_UP]).enemyMoveset(MoveId.TOXIC_SPIKES); await game.classicMode.startBattle(); - game.move.select(Moves.TOXIC_SPIKES); + game.move.select(MoveId.TOXIC_SPIKES); await game.phaseInterceptor.to(TurnEndPhase); - game.move.select(Moves.TIDY_UP); + game.move.select(MoveId.TIDY_UP); await game.phaseInterceptor.to(MoveEndPhase); expect(game.scene.arena.getTag(ArenaTagType.TOXIC_SPIKES)).toBeUndefined(); }, 20000); it("sticky webs are cleared", async () => { - game.override.moveset([Moves.STICKY_WEB, Moves.TIDY_UP]).enemyMoveset(Moves.STICKY_WEB); + game.override.moveset([MoveId.STICKY_WEB, MoveId.TIDY_UP]).enemyMoveset(MoveId.STICKY_WEB); await game.classicMode.startBattle(); - game.move.select(Moves.STICKY_WEB); + game.move.select(MoveId.STICKY_WEB); await game.phaseInterceptor.to(TurnEndPhase); - game.move.select(Moves.TIDY_UP); + game.move.select(MoveId.TIDY_UP); await game.phaseInterceptor.to(MoveEndPhase); expect(game.scene.arena.getTag(ArenaTagType.STICKY_WEB)).toBeUndefined(); }, 20000); it("substitutes are cleared", async () => { - game.override.moveset([Moves.SUBSTITUTE, Moves.TIDY_UP]).enemyMoveset(Moves.SUBSTITUTE); + game.override.moveset([MoveId.SUBSTITUTE, MoveId.TIDY_UP]).enemyMoveset(MoveId.SUBSTITUTE); await game.classicMode.startBattle(); - game.move.select(Moves.SUBSTITUTE); + game.move.select(MoveId.SUBSTITUTE); await game.phaseInterceptor.to(TurnEndPhase); - game.move.select(Moves.TIDY_UP); + game.move.select(MoveId.TIDY_UP); await game.phaseInterceptor.to(MoveEndPhase); const pokemon = [game.scene.getPlayerPokemon()!, game.scene.getEnemyPokemon()!]; @@ -106,7 +106,7 @@ describe("Moves - Tidy Up", () => { expect(playerPokemon.getStatStage(Stat.ATK)).toBe(0); expect(playerPokemon.getStatStage(Stat.SPD)).toBe(0); - game.move.select(Moves.TIDY_UP); + game.move.select(MoveId.TIDY_UP); await game.phaseInterceptor.to(TurnEndPhase); expect(playerPokemon.getStatStage(Stat.ATK)).toBe(1); diff --git a/test/moves/torment.test.ts b/test/moves/torment.test.ts index d11de46bf10..b35b16249ef 100644 --- a/test/moves/torment.test.ts +++ b/test/moves/torment.test.ts @@ -1,6 +1,6 @@ -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,40 +25,40 @@ describe("Moves - Torment", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.TORMENT, Moves.SPLASH]) - .enemySpecies(Species.SHUCKLE) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.TORMENT, MoveId.SPLASH]) + .enemySpecies(SpeciesId.SHUCKLE) .enemyLevel(30) - .moveset([Moves.TACKLE]) - .ability(Abilities.BALL_FETCH); + .moveset([MoveId.TACKLE]) + .ability(AbilityId.BALL_FETCH); }); it("Pokemon should not be able to use the same move consecutively", async () => { - await game.classicMode.startBattle([Species.CHANSEY]); + await game.classicMode.startBattle([SpeciesId.CHANSEY]); const playerPokemon = game.scene.getPlayerPokemon()!; // First turn, Player Pokemon uses Tackle successfully - game.move.select(Moves.TACKLE); - await game.move.selectEnemyMove(Moves.TORMENT); + game.move.select(MoveId.TACKLE); + await game.move.selectEnemyMove(MoveId.TORMENT); await game.toNextTurn(); const move1 = playerPokemon.getLastXMoves(1)[0]!; - expect(move1.move).toBe(Moves.TACKLE); + expect(move1.move).toBe(MoveId.TACKLE); expect(move1.result).toBe(MoveResult.SUCCESS); expect(playerPokemon?.getTag(BattlerTagType.TORMENT)).toBeDefined(); // Second turn, Torment forces Struggle to occur - game.move.select(Moves.TACKLE); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.TACKLE); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); const move2 = playerPokemon.getLastXMoves(1)[0]!; - expect(move2.move).toBe(Moves.STRUGGLE); + expect(move2.move).toBe(MoveId.STRUGGLE); // Third turn, Tackle can be used. - game.move.select(Moves.TACKLE); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.TACKLE); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); const move3 = playerPokemon.getLastXMoves(1)[0]!; - expect(move3.move).toBe(Moves.TACKLE); + expect(move3.move).toBe(MoveId.TACKLE); }); }); diff --git a/test/moves/toxic.test.ts b/test/moves/toxic.test.ts index c773abb5bd3..5cdfe78d502 100644 --- a/test/moves/toxic.test.ts +++ b/test/moves/toxic.test.ts @@ -1,5 +1,5 @@ -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -23,35 +23,39 @@ describe("Moves - Toxic", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("single").moveset(Moves.TOXIC).enemySpecies(Species.MAGIKARP).enemyMoveset(Moves.SPLASH); + game.override + .battleStyle("single") + .moveset(MoveId.TOXIC) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH); }); it("should be guaranteed to hit if user is Poison-type", async () => { - vi.spyOn(allMoves[Moves.TOXIC], "accuracy", "get").mockReturnValue(0); - await game.classicMode.startBattle([Species.TOXAPEX]); + vi.spyOn(allMoves[MoveId.TOXIC], "accuracy", "get").mockReturnValue(0); + await game.classicMode.startBattle([SpeciesId.TOXAPEX]); - game.move.select(Moves.TOXIC); + game.move.select(MoveId.TOXIC); await game.phaseInterceptor.to("BerryPhase", false); expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.TOXIC); }); it("may miss if user is not Poison-type", async () => { - vi.spyOn(allMoves[Moves.TOXIC], "accuracy", "get").mockReturnValue(0); - await game.classicMode.startBattle([Species.UMBREON]); + vi.spyOn(allMoves[MoveId.TOXIC], "accuracy", "get").mockReturnValue(0); + await game.classicMode.startBattle([SpeciesId.UMBREON]); - game.move.select(Moves.TOXIC); + game.move.select(MoveId.TOXIC); await game.phaseInterceptor.to("BerryPhase", false); expect(game.scene.getEnemyPokemon()!.status).toBeUndefined(); }); it("should hit semi-invulnerable targets if user is Poison-type", async () => { - vi.spyOn(allMoves[Moves.TOXIC], "accuracy", "get").mockReturnValue(0); - game.override.enemyMoveset(Moves.FLY); - await game.classicMode.startBattle([Species.TOXAPEX]); + vi.spyOn(allMoves[MoveId.TOXIC], "accuracy", "get").mockReturnValue(0); + game.override.enemyMoveset(MoveId.FLY); + await game.classicMode.startBattle([SpeciesId.TOXAPEX]); - game.move.select(Moves.TOXIC); + game.move.select(MoveId.TOXIC); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase", false); @@ -59,11 +63,11 @@ describe("Moves - Toxic", () => { }); it("should miss semi-invulnerable targets if user is not Poison-type", async () => { - vi.spyOn(allMoves[Moves.TOXIC], "accuracy", "get").mockReturnValue(-1); - game.override.enemyMoveset(Moves.FLY); - await game.classicMode.startBattle([Species.UMBREON]); + vi.spyOn(allMoves[MoveId.TOXIC], "accuracy", "get").mockReturnValue(-1); + game.override.enemyMoveset(MoveId.FLY); + await game.classicMode.startBattle([SpeciesId.UMBREON]); - game.move.select(Moves.TOXIC); + game.move.select(MoveId.TOXIC); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase", false); @@ -71,11 +75,11 @@ describe("Moves - Toxic", () => { }); it("moves other than Toxic should not hit semi-invulnerable targets even if user is Poison-type", async () => { - game.override.moveset(Moves.SWIFT); - game.override.enemyMoveset(Moves.FLY); - await game.classicMode.startBattle([Species.TOXAPEX]); + game.override.moveset(MoveId.SWIFT); + game.override.enemyMoveset(MoveId.FLY); + await game.classicMode.startBattle([SpeciesId.TOXAPEX]); - game.move.select(Moves.SWIFT); + game.move.select(MoveId.SWIFT); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase", false); diff --git a/test/moves/toxic_spikes.test.ts b/test/moves/toxic_spikes.test.ts index b1fdc7f39c2..11ed7514633 100644 --- a/test/moves/toxic_spikes.test.ts +++ b/test/moves/toxic_spikes.test.ts @@ -2,10 +2,10 @@ import type { ArenaTrapTag } from "#app/data/arena-tag"; import { ArenaTagSide } from "#app/data/arena-tag"; import type { SessionSaveData } from "#app/system/game-data"; import { decrypt, encrypt, GameData } from "#app/system/game-data"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -30,21 +30,21 @@ describe("Moves - Toxic Spikes", () => { game.override .battleStyle("single") .startingWave(5) - .enemySpecies(Species.RATTATA) - .enemyAbility(Abilities.BALL_FETCH) - .ability(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) - .moveset([Moves.TOXIC_SPIKES, Moves.SPLASH, Moves.ROAR, Moves.COURT_CHANGE]); + .enemySpecies(SpeciesId.RATTATA) + .enemyAbility(AbilityId.BALL_FETCH) + .ability(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .moveset([MoveId.TOXIC_SPIKES, MoveId.SPLASH, MoveId.ROAR, MoveId.COURT_CHANGE]); }); it("should not affect the opponent if they do not switch", async () => { - await game.classicMode.runToSummon([Species.MIGHTYENA, Species.POOCHYENA]); + await game.classicMode.runToSummon([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]); const enemy = game.scene.getEnemyField()[0]; - game.move.select(Moves.TOXIC_SPIKES); + game.move.select(MoveId.TOXIC_SPIKES); await game.phaseInterceptor.to("TurnEndPhase"); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); game.doSwitchPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -54,11 +54,11 @@ describe("Moves - Toxic Spikes", () => { }); it("should poison the opponent if they switch into 1 layer", async () => { - await game.classicMode.runToSummon([Species.MIGHTYENA]); + await game.classicMode.runToSummon([SpeciesId.MIGHTYENA]); - game.move.select(Moves.TOXIC_SPIKES); + game.move.select(MoveId.TOXIC_SPIKES); await game.phaseInterceptor.to("TurnEndPhase"); - game.move.select(Moves.ROAR); + game.move.select(MoveId.ROAR); await game.phaseInterceptor.to("TurnEndPhase"); const enemy = game.scene.getEnemyField()[0]; @@ -68,13 +68,13 @@ describe("Moves - Toxic Spikes", () => { }); it("should badly poison the opponent if they switch into 2 layers", async () => { - await game.classicMode.runToSummon([Species.MIGHTYENA]); + await game.classicMode.runToSummon([SpeciesId.MIGHTYENA]); - game.move.select(Moves.TOXIC_SPIKES); + game.move.select(MoveId.TOXIC_SPIKES); await game.phaseInterceptor.to("TurnEndPhase"); - game.move.select(Moves.TOXIC_SPIKES); + game.move.select(MoveId.TOXIC_SPIKES); await game.phaseInterceptor.to("TurnEndPhase"); - game.move.select(Moves.ROAR); + game.move.select(MoveId.ROAR); await game.phaseInterceptor.to("TurnEndPhase"); const enemy = game.scene.getEnemyField()[0]; @@ -83,21 +83,21 @@ describe("Moves - Toxic Spikes", () => { }); it("should be removed if a grounded poison pokemon switches in", async () => { - await game.classicMode.runToSummon([Species.MUK, Species.PIDGEY]); + await game.classicMode.runToSummon([SpeciesId.MUK, SpeciesId.PIDGEY]); const muk = game.scene.getPlayerPokemon()!; - game.move.select(Moves.TOXIC_SPIKES); + game.move.select(MoveId.TOXIC_SPIKES); await game.toNextTurn(); // also make sure the toxic spikes are removed even if the pokemon // that set them up is the one switching in (https://github.com/pagefaultgames/pokerogue/issues/935) - game.move.select(Moves.COURT_CHANGE); + game.move.select(MoveId.COURT_CHANGE); await game.toNextTurn(); game.doSwitchPokemon(1); await game.toNextTurn(); game.doSwitchPokemon(1); await game.toNextTurn(); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(muk.isFullHp()).toBe(true); @@ -106,9 +106,9 @@ describe("Moves - Toxic Spikes", () => { }); it("shouldn't create multiple layers per use in doubles", async () => { - await game.classicMode.runToSummon([Species.MIGHTYENA, Species.POOCHYENA]); + await game.classicMode.runToSummon([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]); - game.move.select(Moves.TOXIC_SPIKES); + game.move.select(MoveId.TOXIC_SPIKES); await game.phaseInterceptor.to("TurnEndPhase"); const arenaTags = game.scene.arena.getTagOnSide(ArenaTagType.TOXIC_SPIKES, ArenaTagSide.ENEMY) as ArenaTrapTag; @@ -120,11 +120,11 @@ describe("Moves - Toxic Spikes", () => { game.override.startingWave(1); const gameData = new GameData(); - await game.classicMode.runToSummon([Species.MIGHTYENA]); + await game.classicMode.runToSummon([SpeciesId.MIGHTYENA]); - game.move.select(Moves.TOXIC_SPIKES); + game.move.select(MoveId.TOXIC_SPIKES); await game.phaseInterceptor.to("TurnEndPhase"); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to("BattleEndPhase"); await game.toNextWave(); diff --git a/test/moves/transform.test.ts b/test/moves/transform.test.ts index 8bfe7df688b..e8ed133b827 100644 --- a/test/moves/transform.test.ts +++ b/test/moves/transform.test.ts @@ -1,11 +1,11 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { Stat, EFFECTIVE_STATS } from "#enums/stat"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#app/battle"; // TODO: Add more tests once Transform is fully implemented @@ -27,19 +27,19 @@ describe("Moves - Transform", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.MEW) + .enemySpecies(SpeciesId.MEW) .enemyLevel(200) - .enemyAbility(Abilities.BEAST_BOOST) - .enemyPassiveAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) - .ability(Abilities.INTIMIDATE) - .moveset([Moves.TRANSFORM]); + .enemyAbility(AbilityId.BEAST_BOOST) + .enemyPassiveAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .ability(AbilityId.INTIMIDATE) + .moveset([MoveId.TRANSFORM]); }); it("should copy species, ability, gender, all stats except HP, all stat stages, moveset, and types of target", async () => { - await game.classicMode.startBattle([Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.DITTO]); - game.move.select(Moves.TRANSFORM); + game.move.select(MoveId.TRANSFORM); await game.phaseInterceptor.to(TurnEndPhase); const player = game.scene.getPlayerPokemon()!; @@ -64,9 +64,9 @@ describe("Moves - Transform", () => { }); it("should copy in-battle overridden stats", async () => { - game.override.enemyMoveset([Moves.POWER_SPLIT]); + game.override.enemyMoveset([MoveId.POWER_SPLIT]); - await game.classicMode.startBattle([Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.DITTO]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -74,7 +74,7 @@ describe("Moves - Transform", () => { const avgAtk = Math.floor((player.getStat(Stat.ATK, false) + enemy.getStat(Stat.ATK, false)) / 2); const avgSpAtk = Math.floor((player.getStat(Stat.SPATK, false) + enemy.getStat(Stat.SPATK, false)) / 2); - game.move.select(Moves.TRANSFORM); + game.move.select(MoveId.TRANSFORM); await game.phaseInterceptor.to(TurnEndPhase); expect(player.getStat(Stat.ATK, false)).toBe(avgAtk); @@ -85,18 +85,18 @@ describe("Moves - Transform", () => { }); it("should set each move's pp to a maximum of 5", async () => { - game.override.enemyMoveset([Moves.SWORDS_DANCE, Moves.GROWL, Moves.SKETCH, Moves.RECOVER]); + game.override.enemyMoveset([MoveId.SWORDS_DANCE, MoveId.GROWL, MoveId.SKETCH, MoveId.RECOVER]); - await game.classicMode.startBattle([Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.DITTO]); const player = game.scene.getPlayerPokemon()!; - game.move.select(Moves.TRANSFORM); + game.move.select(MoveId.TRANSFORM); await game.phaseInterceptor.to(TurnEndPhase); player.getMoveset().forEach(move => { // Should set correct maximum PP without touching `ppUp` if (move) { - if (move.moveId === Moves.SKETCH) { + if (move.moveId === MoveId.SKETCH) { expect(move.getMovePp()).toBe(1); } else { expect(move.getMovePp()).toBe(5); @@ -107,10 +107,10 @@ describe("Moves - Transform", () => { }); it("should activate its ability if it copies one that activates on summon", async () => { - game.override.enemyAbility(Abilities.INTIMIDATE).ability(Abilities.BALL_FETCH); + game.override.enemyAbility(AbilityId.INTIMIDATE).ability(AbilityId.BALL_FETCH); - await game.classicMode.startBattle([Species.DITTO]); - game.move.select(Moves.TRANSFORM); + await game.classicMode.startBattle([SpeciesId.DITTO]); + game.move.select(MoveId.TRANSFORM); await game.phaseInterceptor.to("BerryPhase"); @@ -120,15 +120,15 @@ describe("Moves - Transform", () => { it("should persist transformed attributes across reloads", async () => { game.override.enemyMoveset([]).moveset([]); - await game.classicMode.startBattle([Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.DITTO]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - game.move.changeMoveset(player, Moves.TRANSFORM); - game.move.changeMoveset(enemy, Moves.MEMENTO); + game.move.changeMoveset(player, MoveId.TRANSFORM); + game.move.changeMoveset(enemy, MoveId.MEMENTO); - game.move.select(Moves.TRANSFORM); + game.move.select(MoveId.TRANSFORM); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextWave(); @@ -150,14 +150,14 @@ describe("Moves - Transform", () => { } expect(playerMoveset.length).toEqual(1); - expect(playerMoveset[0]?.moveId).toEqual(Moves.MEMENTO); + expect(playerMoveset[0]?.moveId).toEqual(MoveId.MEMENTO); }); it("should stay transformed with the correct form after reload", async () => { game.override.enemyMoveset([]).moveset([]); - game.override.enemySpecies(Species.DARMANITAN); + game.override.enemySpecies(SpeciesId.DARMANITAN); - await game.classicMode.startBattle([Species.DITTO]); + await game.classicMode.startBattle([SpeciesId.DITTO]); const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; @@ -166,10 +166,10 @@ describe("Moves - Transform", () => { enemy.species.forms[1]; enemy.species.formIndex = 1; - game.move.changeMoveset(player, Moves.TRANSFORM); - game.move.changeMoveset(enemy, Moves.MEMENTO); + game.move.changeMoveset(player, MoveId.TRANSFORM); + game.move.changeMoveset(enemy, MoveId.MEMENTO); - game.move.select(Moves.TRANSFORM); + game.move.select(MoveId.TRANSFORM); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextWave(); diff --git a/test/moves/trick_or_treat.test.ts b/test/moves/trick_or_treat.test.ts index 3b32e09f72d..366c6ee60fe 100644 --- a/test/moves/trick_or_treat.test.ts +++ b/test/moves/trick_or_treat.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { PokemonType } from "#enums/pokemon-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -23,24 +23,24 @@ describe("Moves - Trick Or Treat", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.FORESTS_CURSE, Moves.TRICK_OR_TREAT]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.FORESTS_CURSE, MoveId.TRICK_OR_TREAT]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("will replace added type from Forest's Curse", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemyPokemon = game.scene.getEnemyPokemon(); - game.move.select(Moves.FORESTS_CURSE); + game.move.select(MoveId.FORESTS_CURSE); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyPokemon!.summonData.addedType).toBe(PokemonType.GRASS); - game.move.select(Moves.TRICK_OR_TREAT); + game.move.select(MoveId.TRICK_OR_TREAT); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemyPokemon?.summonData.addedType).toBe(PokemonType.GHOST); }); diff --git a/test/moves/triple_arrows.test.ts b/test/moves/triple_arrows.test.ts index bd061f4059d..6a14a7642fa 100644 --- a/test/moves/triple_arrows.test.ts +++ b/test/moves/triple_arrows.test.ts @@ -1,9 +1,9 @@ import { FlinchAttr, StatStageChangeAttr } from "#app/data/moves/move"; import { allMoves } from "#app/data/data-lists"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import type Move from "#app/data/moves/move"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -19,7 +19,7 @@ describe("Moves - Triple Arrows", () => { phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); - tripleArrows = allMoves[Moves.TRIPLE_ARROWS]; + tripleArrows = allMoves[MoveId.TRIPLE_ARROWS]; flinchAttr = tripleArrows.getAttrs(FlinchAttr)[0]; defDropAttr = tripleArrows.getAttrs(StatStageChangeAttr)[0]; }); @@ -31,21 +31,21 @@ describe("Moves - Triple Arrows", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .ability(Abilities.BALL_FETCH) - .moveset([Moves.TRIPLE_ARROWS]) + .ability(AbilityId.BALL_FETCH) + .moveset([MoveId.TRIPLE_ARROWS]) .battleStyle("single") - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.STURDY) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.STURDY) + .enemyMoveset(MoveId.SPLASH); vi.spyOn(flinchAttr, "getMoveChance"); vi.spyOn(defDropAttr, "getMoveChance"); }); it("has a 30% flinch chance and 50% defense drop chance", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.TRIPLE_ARROWS); + game.move.select(MoveId.TRIPLE_ARROWS); await game.phaseInterceptor.to("BerryPhase"); expect(flinchAttr.getMoveChance).toHaveReturnedWith(30); @@ -53,10 +53,10 @@ describe("Moves - Triple Arrows", () => { }); it("is affected normally by Serene Grace", async () => { - game.override.ability(Abilities.SERENE_GRACE); - await game.classicMode.startBattle([Species.FEEBAS]); + game.override.ability(AbilityId.SERENE_GRACE); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(Moves.TRIPLE_ARROWS); + game.move.select(MoveId.TRIPLE_ARROWS); await game.phaseInterceptor.to("BerryPhase"); expect(flinchAttr.getMoveChance).toHaveReturnedWith(60); diff --git a/test/moves/u_turn.test.ts b/test/moves/u_turn.test.ts index 9dca29414a1..4212802298e 100644 --- a/test/moves/u_turn.test.ts +++ b/test/moves/u_turn.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -24,23 +24,23 @@ describe("Moves - U-turn", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .enemySpecies(Species.GENGAR) + .enemySpecies(SpeciesId.GENGAR) .startingLevel(90) .startingWave(97) - .moveset([Moves.U_TURN]) - .enemyMoveset(Moves.SPLASH) + .moveset([MoveId.U_TURN]) + .enemyMoveset(MoveId.SPLASH) .disableCrits(); }); it("triggers regenerator a single time when a regenerator user switches out with u-turn", async () => { // arrange const playerHp = 1; - game.override.ability(Abilities.REGENERATOR); - await game.classicMode.startBattle([Species.RAICHU, Species.SHUCKLE]); + game.override.ability(AbilityId.REGENERATOR); + await game.classicMode.startBattle([SpeciesId.RAICHU, SpeciesId.SHUCKLE]); game.scene.getPlayerPokemon()!.hp = playerHp; // act - game.move.select(Moves.U_TURN); + game.move.select(MoveId.U_TURN); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); @@ -49,16 +49,16 @@ describe("Moves - U-turn", () => { Math.floor(game.scene.getPlayerParty()[1].getMaxHp() * 0.33 + playerHp), ); expect(game.phaseInterceptor.log).toContain("SwitchSummonPhase"); - expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(Species.SHUCKLE); + expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(SpeciesId.SHUCKLE); }, 20000); it("triggers rough skin on the u-turn user before a new pokemon is switched in", async () => { // arrange - game.override.enemyAbility(Abilities.ROUGH_SKIN); - await game.classicMode.startBattle([Species.RAICHU, Species.SHUCKLE]); + game.override.enemyAbility(AbilityId.ROUGH_SKIN); + await game.classicMode.startBattle([SpeciesId.RAICHU, SpeciesId.SHUCKLE]); // act - game.move.select(Moves.U_TURN); + game.move.select(MoveId.U_TURN); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("SwitchPhase", false); @@ -66,41 +66,41 @@ describe("Moves - U-turn", () => { const playerPkm = game.scene.getPlayerPokemon()!; expect(playerPkm.hp).not.toEqual(playerPkm.getMaxHp()); expect(game.scene.getEnemyPokemon()!.waveData.abilityRevealed).toBe(true); // proxy for asserting ability activated - expect(playerPkm.species.speciesId).toEqual(Species.RAICHU); + expect(playerPkm.species.speciesId).toEqual(SpeciesId.RAICHU); expect(game.phaseInterceptor.log).not.toContain("SwitchSummonPhase"); }, 20000); it("triggers contact abilities on the u-turn user (eg poison point) before a new pokemon is switched in", async () => { // arrange - game.override.enemyAbility(Abilities.POISON_POINT); - await game.classicMode.startBattle([Species.RAICHU, Species.SHUCKLE]); + game.override.enemyAbility(AbilityId.POISON_POINT); + await game.classicMode.startBattle([SpeciesId.RAICHU, SpeciesId.SHUCKLE]); vi.spyOn(game.scene.getEnemyPokemon()!, "randBattleSeedInt").mockReturnValue(0); // act - game.move.select(Moves.U_TURN); + game.move.select(MoveId.U_TURN); await game.phaseInterceptor.to("SwitchPhase", false); // assert const playerPkm = game.scene.getPlayerPokemon()!; expect(playerPkm.status?.effect).toEqual(StatusEffect.POISON); - expect(playerPkm.species.speciesId).toEqual(Species.RAICHU); + expect(playerPkm.species.speciesId).toEqual(SpeciesId.RAICHU); expect(game.scene.getEnemyPokemon()!.waveData.abilityRevealed).toBe(true); // proxy for asserting ability activated expect(game.phaseInterceptor.log).not.toContain("SwitchSummonPhase"); }, 20000); it("still forces a switch if u-turn KO's the opponent", async () => { game.override.startingLevel(1000); // Ensure that U-Turn KO's the opponent - await game.classicMode.startBattle([Species.RAICHU, Species.SHUCKLE]); + await game.classicMode.startBattle([SpeciesId.RAICHU, SpeciesId.SHUCKLE]); const enemy = game.scene.getEnemyPokemon()!; // KO the opponent with U-Turn - game.move.select(Moves.U_TURN); + game.move.select(MoveId.U_TURN); game.doSelectPartyPokemon(1); await game.phaseInterceptor.to("TurnEndPhase"); expect(enemy.isFainted()).toBe(true); // Check that U-Turn forced a switch expect(game.phaseInterceptor.log).toContain("SwitchSummonPhase"); - expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(Species.SHUCKLE); + expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(SpeciesId.SHUCKLE); }); }); diff --git a/test/moves/upper_hand.test.ts b/test/moves/upper_hand.test.ts index 66359a94ccb..741594c7e47 100644 --- a/test/moves/upper_hand.test.ts +++ b/test/moves/upper_hand.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -24,24 +24,24 @@ describe("Moves - Upper Hand", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset(Moves.UPPER_HAND) - .ability(Abilities.BALL_FETCH) + .moveset(MoveId.UPPER_HAND) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.QUICK_ATTACK) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.QUICK_ATTACK) .startingLevel(100) .enemyLevel(100); }); it("should flinch the opponent before they use a priority attack", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const feebas = game.scene.getPlayerPokemon()!; const magikarp = game.scene.getEnemyPokemon()!; - game.move.select(Moves.UPPER_HAND); + game.move.select(MoveId.UPPER_HAND); await game.phaseInterceptor.to("BerryPhase"); expect(feebas.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); @@ -50,30 +50,30 @@ describe("Moves - Upper Hand", () => { }); it.each([ - { descriptor: "non-priority attack", move: Moves.TACKLE }, - { descriptor: "status move", move: Moves.BABY_DOLL_EYES }, + { descriptor: "non-priority attack", move: MoveId.TACKLE }, + { descriptor: "status move", move: MoveId.BABY_DOLL_EYES }, ])("should fail when the opponent selects a $descriptor", async ({ move }) => { game.override.enemyMoveset(move); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const feebas = game.scene.getPlayerPokemon()!; - game.move.select(Moves.UPPER_HAND); + game.move.select(MoveId.UPPER_HAND); await game.phaseInterceptor.to("BerryPhase"); expect(feebas.getLastXMoves()[0].result).toBe(MoveResult.FAIL); }); it("should flinch the opponent before they use an attack boosted by Gale Wings", async () => { - game.override.enemyAbility(Abilities.GALE_WINGS).enemyMoveset(Moves.GUST); + game.override.enemyAbility(AbilityId.GALE_WINGS).enemyMoveset(MoveId.GUST); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const feebas = game.scene.getPlayerPokemon()!; const magikarp = game.scene.getEnemyPokemon()!; - game.move.select(Moves.UPPER_HAND); + game.move.select(MoveId.UPPER_HAND); await game.phaseInterceptor.to("BerryPhase"); expect(feebas.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); @@ -82,13 +82,13 @@ describe("Moves - Upper Hand", () => { }); it("should fail if the target has already moved", async () => { - game.override.enemyMoveset(Moves.FAKE_OUT).enemyAbility(Abilities.SHEER_FORCE); + game.override.enemyMoveset(MoveId.FAKE_OUT).enemyAbility(AbilityId.SHEER_FORCE); - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const feebas = game.scene.getPlayerPokemon()!; - game.move.select(Moves.UPPER_HAND); + game.move.select(MoveId.UPPER_HAND); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/moves/whirlwind.test.ts b/test/moves/whirlwind.test.ts index 3558f968c66..56c4017fbb5 100644 --- a/test/moves/whirlwind.test.ts +++ b/test/moves/whirlwind.test.ts @@ -2,9 +2,9 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { Challenges } from "#enums/challenges"; import { PokemonType } from "#enums/pokemon-type"; import { MoveResult } from "#app/field/pokemon"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -33,25 +33,25 @@ describe("Moves - Whirlwind", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .moveset([Moves.SPLASH]) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset([Moves.SPLASH, Moves.WHIRLWIND]) - .enemySpecies(Species.PIDGEY); + .moveset([MoveId.SPLASH]) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset([MoveId.SPLASH, MoveId.WHIRLWIND]) + .enemySpecies(SpeciesId.PIDGEY); }); it.each([ - { move: Moves.FLY, name: "Fly" }, - { move: Moves.BOUNCE, name: "Bounce" }, - { move: Moves.SKY_DROP, name: "Sky Drop" }, + { move: MoveId.FLY, name: "Fly" }, + { move: MoveId.BOUNCE, name: "Bounce" }, + { move: MoveId.SKY_DROP, name: "Sky Drop" }, ])("should not hit a flying target: $name (=$move)", async ({ move }) => { game.override.moveset([move]); // Must have a pokemon in the back so that the move misses instead of fails. - await game.classicMode.startBattle([Species.STARAPTOR, Species.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.STARAPTOR, SpeciesId.MAGIKARP]); const staraptor = game.scene.getPlayerPokemon()!; game.move.select(move); - await game.move.selectEnemyMove(Moves.WHIRLWIND); + await game.move.selectEnemyMove(MoveId.WHIRLWIND); await game.phaseInterceptor.to("BerryPhase", false); @@ -60,7 +60,7 @@ describe("Moves - Whirlwind", () => { }); it("should force switches randomly", async () => { - await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER, SpeciesId.SQUIRTLE]); const [bulbasaur, charmander, squirtle] = game.scene.getPlayerParty(); @@ -68,8 +68,8 @@ describe("Moves - Whirlwind", () => { vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((_range, min = 0) => { return min; }); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.WHIRLWIND); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.WHIRLWIND); await game.toNextTurn(); expect(bulbasaur.isOnField()).toBe(false); @@ -80,8 +80,8 @@ describe("Moves - Whirlwind", () => { vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((_range, min = 0) => { return min + 1; }); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.WHIRLWIND); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.WHIRLWIND); await game.toNextTurn(); expect(bulbasaur.isOnField()).toBe(false); @@ -92,7 +92,7 @@ describe("Moves - Whirlwind", () => { it("should not force a switch to a challenge-ineligible Pokemon", async () => { // Mono-Water challenge, Eevee is ineligible game.challengeMode.addChallenge(Challenges.SINGLE_TYPE, PokemonType.WATER + 1, 0); - await game.challengeMode.startBattle([Species.LAPRAS, Species.EEVEE, Species.TOXAPEX, Species.PRIMARINA]); + await game.challengeMode.startBattle([SpeciesId.LAPRAS, SpeciesId.EEVEE, SpeciesId.TOXAPEX, SpeciesId.PRIMARINA]); const [lapras, eevee, toxapex, primarina] = game.scene.getPlayerParty(); @@ -100,8 +100,8 @@ describe("Moves - Whirlwind", () => { vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((_range, min = 0) => { return min; }); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.WHIRLWIND); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.WHIRLWIND); await game.toNextTurn(); expect(lapras.isOnField()).toBe(false); @@ -111,7 +111,7 @@ describe("Moves - Whirlwind", () => { }); it("should not force a switch to a fainted Pokemon", async () => { - await game.classicMode.startBattle([Species.LAPRAS, Species.EEVEE, Species.TOXAPEX, Species.PRIMARINA]); + await game.classicMode.startBattle([SpeciesId.LAPRAS, SpeciesId.EEVEE, SpeciesId.TOXAPEX, SpeciesId.PRIMARINA]); const [lapras, eevee, toxapex, primarina] = game.scene.getPlayerParty(); @@ -119,16 +119,16 @@ describe("Moves - Whirlwind", () => { eevee.hp = 0; eevee.status = new Status(StatusEffect.FAINT); expect(eevee.isFainted()).toBe(true); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); // Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((_range, min = 0) => { return min; }); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.WHIRLWIND); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.WHIRLWIND); await game.toNextTurn(); expect(lapras.isOnField()).toBe(false); @@ -138,7 +138,7 @@ describe("Moves - Whirlwind", () => { }); it("should not force a switch if there are no available Pokemon to switch into", async () => { - await game.classicMode.startBattle([Species.LAPRAS, Species.EEVEE]); + await game.classicMode.startBattle([SpeciesId.LAPRAS, SpeciesId.EEVEE]); const [lapras, eevee] = game.scene.getPlayerParty(); @@ -146,16 +146,16 @@ describe("Moves - Whirlwind", () => { eevee.hp = 0; eevee.status = new Status(StatusEffect.FAINT); expect(eevee.isFainted()).toBe(true); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); // Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((_range, min = 0) => { return min; }); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.WHIRLWIND); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.WHIRLWIND); await game.toNextTurn(); expect(lapras.isOnField()).toBe(true); @@ -164,7 +164,7 @@ describe("Moves - Whirlwind", () => { it("should fail when player uses Whirlwind against an opponent with only one available Pokémon", async () => { // Set up the battle scenario with the player knowing Whirlwind - game.override.startingWave(5).enemySpecies(Species.PIDGEY).moveset([Moves.WHIRLWIND]); + game.override.startingWave(5).enemySpecies(SpeciesId.PIDGEY).moveset([MoveId.WHIRLWIND]); await game.classicMode.startBattle(); const enemyParty = game.scene.getEnemyParty(); @@ -183,8 +183,8 @@ describe("Moves - Whirlwind", () => { const queueSpy = vi.spyOn(globalScene, "queueMessage"); // Player uses Whirlwind; opponent uses Splash - game.move.select(Moves.WHIRLWIND); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.WHIRLWIND); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); // Verify that the failure message is displayed for Whirlwind @@ -201,9 +201,9 @@ describe("Moves - Whirlwind", () => { trainerType: TrainerType.BREEDER, alwaysDouble: true, }) - .enemyMoveset([Moves.SPLASH, Moves.LUNAR_DANCE]) - .moveset([Moves.WHIRLWIND, Moves.SPLASH]); - await game.classicMode.startBattle([Species.MAGIKARP, Species.TOTODILE]); + .enemyMoveset([MoveId.SPLASH, MoveId.LUNAR_DANCE]) + .moveset([MoveId.WHIRLWIND, MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.TOTODILE]); // expect the enemy to have at least 4 pokemon, necessary for this check to even work expect(game.scene.getEnemyParty().length, "enemy must have exactly 4 pokemon").toBe(4); @@ -212,21 +212,21 @@ describe("Moves - Whirlwind", () => { console.log(user.getMoveset(false)); - game.move.select(Moves.SPLASH); - game.move.select(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.MEMENTO); - await game.move.selectEnemyMove(Moves.SPLASH); + game.move.select(MoveId.SPLASH); + game.move.select(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.MEMENTO); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); // Get the enemy pokemon id so we can check if is the same after switch. const enemy_id = game.scene.getEnemyPokemon()!.id; // Hit the enemy that fainted with whirlwind. - game.move.select(Moves.WHIRLWIND, 0, BattlerIndex.ENEMY); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.WHIRLWIND, 0, BattlerIndex.ENEMY); + game.move.select(MoveId.SPLASH, 1); - await game.move.selectEnemyMove(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.SPLASH); await game.toNextTurn(); @@ -237,14 +237,14 @@ describe("Moves - Whirlwind", () => { it("should force a wild pokemon to flee", async () => { game.override .battleType(BattleType.WILD) - .moveset([Moves.WHIRLWIND, Moves.SPLASH]) - .enemyMoveset(Moves.SPLASH) - .ability(Abilities.BALL_FETCH); - await game.classicMode.startBattle([Species.MAGIKARP]); + .moveset([MoveId.WHIRLWIND, MoveId.SPLASH]) + .enemyMoveset(MoveId.SPLASH) + .ability(AbilityId.BALL_FETCH); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); const user = game.scene.getPlayerPokemon()!; - game.move.select(Moves.WHIRLWIND); + game.move.select(MoveId.WHIRLWIND); await game.phaseInterceptor.to("BerryPhase"); expect(user.getLastXMoves(1)[0].result).toBe(MoveResult.SUCCESS); diff --git a/test/moves/wide_guard.test.ts b/test/moves/wide_guard.test.ts index 08357476e5e..65c3a0a805f 100644 --- a/test/moves/wide_guard.test.ts +++ b/test/moves/wide_guard.test.ts @@ -1,9 +1,9 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { SpeciesId } from "#enums/species-id"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import { Stat } from "#enums/stat"; import { BerryPhase } from "#app/phases/berry-phase"; import { CommandPhase } from "#app/phases/command-phase"; @@ -27,26 +27,26 @@ describe("Moves - Wide Guard", () => { game.override.battleStyle("double"); - game.override.moveset([Moves.WIDE_GUARD, Moves.SPLASH, Moves.SURF]); + game.override.moveset([MoveId.WIDE_GUARD, MoveId.SPLASH, MoveId.SURF]); - game.override.enemySpecies(Species.SNORLAX); - game.override.enemyMoveset([Moves.SWIFT]); - game.override.enemyAbility(Abilities.INSOMNIA); + game.override.enemySpecies(SpeciesId.SNORLAX); + game.override.enemyMoveset([MoveId.SWIFT]); + game.override.enemyAbility(AbilityId.INSOMNIA); game.override.startingLevel(100); game.override.enemyLevel(100); }); test("should protect the user and allies from multi-target attack moves", async () => { - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); - game.move.select(Moves.WIDE_GUARD); + game.move.select(MoveId.WIDE_GUARD); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -54,17 +54,17 @@ describe("Moves - Wide Guard", () => { }); test("should protect the user and allies from multi-target status moves", async () => { - game.override.enemyMoveset([Moves.GROWL]); + game.override.enemyMoveset([MoveId.GROWL]); - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); - game.move.select(Moves.WIDE_GUARD); + game.move.select(MoveId.WIDE_GUARD); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -72,17 +72,17 @@ describe("Moves - Wide Guard", () => { }); test("should not protect the user and allies from single-target moves", async () => { - game.override.enemyMoveset([Moves.TACKLE]); + game.override.enemyMoveset([MoveId.TACKLE]); - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); - game.move.select(Moves.WIDE_GUARD); + game.move.select(MoveId.WIDE_GUARD); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SPLASH, 1); + game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -90,18 +90,18 @@ describe("Moves - Wide Guard", () => { }); test("should protect the user from its ally's multi-target move", async () => { - game.override.enemyMoveset([Moves.SPLASH]); + game.override.enemyMoveset([MoveId.SPLASH]); - await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD, SpeciesId.BLASTOISE]); const leadPokemon = game.scene.getPlayerField(); const enemyPokemon = game.scene.getEnemyField(); - game.move.select(Moves.WIDE_GUARD); + game.move.select(MoveId.WIDE_GUARD); await game.phaseInterceptor.to(CommandPhase); - game.move.select(Moves.SURF, 1); + game.move.select(MoveId.SURF, 1); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/will_o_wisp.test.ts b/test/moves/will_o_wisp.test.ts index b4e4975896b..ce747dbad0b 100644 --- a/test/moves/will_o_wisp.test.ts +++ b/test/moves/will_o_wisp.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -24,28 +24,28 @@ describe("Moves - Will-O-Wisp", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.WILL_O_WISP, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.WILL_O_WISP, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("should burn the opponent", async () => { - await game.classicMode.startBattle([Species.FEEBAS]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy = game.scene.getEnemyPokemon()!; - game.move.select(Moves.WILL_O_WISP); + game.move.select(MoveId.WILL_O_WISP); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceHit(); await game.toNextTurn(); expect(enemy.status?.effect).toBe(StatusEffect.BURN); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); expect(enemy.status?.effect).toBe(StatusEffect.BURN); diff --git a/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts b/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts index a4c043ad13f..3c6305a77dc 100644 --- a/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts +++ b/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts @@ -1,8 +1,8 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; @@ -22,8 +22,8 @@ import { PartyHealPhase } from "#app/phases/party-heal-phase"; import i18next from "i18next"; const namespace = "mysteryEncounters/aTrainersTest"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("A Trainer's Test - Mystery Encounter", () => { @@ -43,8 +43,8 @@ describe("A Trainer's Test - Mystery Encounter", () => { game.override.startingBiome(defaultBiome); game.override.disableTrainerWaves(); - const biomeMap = new Map([ - [Biome.VOLCANO, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], + const biomeMap = new Map([ + [BiomeId.VOLCANO, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], ]); HUMAN_TRANSITABLE_BIOMES.forEach(biome => { biomeMap.set(biome, [MysteryEncounterType.A_TRAINERS_TEST]); diff --git a/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts b/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts index 36a284880c1..f13f6e0b072 100644 --- a/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts +++ b/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts @@ -1,6 +1,6 @@ -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; @@ -15,15 +15,15 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encount import { BerryModifier, PokemonHeldItemModifier } from "#app/modifier/modifier"; import { BerryType } from "#enums/berry-type"; import { AbsoluteAvariceEncounter } from "#app/data/mystery-encounters/encounters/absolute-avarice-encounter"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { CommandPhase } from "#app/phases/command-phase"; import { MovePhase } from "#app/phases/move-phase"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import i18next from "i18next"; const namespace = "mysteryEncounters/absoluteAvarice"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.TALL_GRASS; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.TALL_GRASS; const defaultWave = 45; describe("Absolute Avarice - Mystery Encounter", () => { @@ -44,9 +44,9 @@ describe("Absolute Avarice - Mystery Encounter", () => { game.override.disableTrainerWaves(); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([ - [Biome.TALL_GRASS, [MysteryEncounterType.ABSOLUTE_AVARICE]], - [Biome.VOLCANO, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], + new Map([ + [BiomeId.TALL_GRASS, [MysteryEncounterType.ABSOLUTE_AVARICE]], + [BiomeId.VOLCANO, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], ]), ); }); @@ -72,7 +72,7 @@ describe("Absolute Avarice - Mystery Encounter", () => { it("should not spawn outside of proper biomes", async () => { game.override.mysteryEncounterTier(MysteryEncounterTier.GREAT); - game.override.startingBiome(Biome.VOLCANO); + game.override.startingBiome(BiomeId.VOLCANO); await game.runToMysteryEncounter(); expect(game.scene.currentBattle.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.ABSOLUTE_AVARICE); @@ -137,14 +137,14 @@ describe("Absolute Avarice - Mystery Encounter", () => { const enemyField = scene.getEnemyField(); expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); - expect(enemyField[0].species.speciesId).toBe(Species.GREEDENT); + expect(enemyField[0].species.speciesId).toBe(SpeciesId.GREEDENT); const moveset = enemyField[0].moveset.map(m => m.moveId); expect(moveset?.length).toBe(4); - expect(moveset).toEqual([Moves.THRASH, Moves.CRUNCH, Moves.BODY_PRESS, Moves.SLACK_OFF]); + expect(moveset).toEqual([MoveId.THRASH, MoveId.CRUNCH, MoveId.BODY_PRESS, MoveId.SLACK_OFF]); const movePhases = phaseSpy.mock.calls.filter(p => p[0] instanceof MovePhase).map(p => p[0]); expect(movePhases.length).toBe(1); - expect(movePhases.filter(p => (p as MovePhase).move.moveId === Moves.STUFF_CHEEKS).length).toBe(1); // Stuff Cheeks used before battle + expect(movePhases.filter(p => (p as MovePhase).move.moveId === MoveId.STUFF_CHEEKS).length).toBe(1); // Stuff Cheeks used before battle }); it("should give reviver seed to each pokemon after battle", async () => { @@ -260,10 +260,10 @@ describe("Absolute Avarice - Mystery Encounter", () => { expect(partyCountBefore + 1).toBe(partyCountAfter); const greedent = scene.getPlayerParty()[scene.getPlayerParty().length - 1]; - expect(greedent.species.speciesId).toBe(Species.GREEDENT); + expect(greedent.species.speciesId).toBe(SpeciesId.GREEDENT); const moveset = greedent.moveset.map(m => m.moveId); expect(moveset?.length).toBe(4); - expect(moveset).toEqual([Moves.THRASH, Moves.BODY_PRESS, Moves.STUFF_CHEEKS, Moves.SLACK_OFF]); + expect(moveset).toEqual([MoveId.THRASH, MoveId.BODY_PRESS, MoveId.STUFF_CHEEKS, MoveId.SLACK_OFF]); }); it("should leave encounter without battle", async () => { diff --git a/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts b/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts index 3c7bda8febd..f39ce753b10 100644 --- a/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts +++ b/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts @@ -1,8 +1,8 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; @@ -14,16 +14,16 @@ import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; import { getPokemonSpecies } from "#app/data/pokemon-species"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { ShinyRateBoosterModifier } from "#app/modifier/modifier"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import i18next from "i18next"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; const namespace = "mysteryEncounters/anOfferYouCantRefuse"; /** Gyarados for Indimidate */ -const defaultParty = [Species.GYARADOS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.GYARADOS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("An Offer You Can't Refuse - Mystery Encounter", () => { @@ -43,10 +43,10 @@ describe("An Offer You Can't Refuse - Mystery Encounter", () => { .startingWave(defaultWave) .startingBiome(defaultBiome) .disableTrainerWaves() - .ability(Abilities.INTIMIDATE); // Extortion ability + .ability(AbilityId.INTIMIDATE); // Extortion ability - const biomeMap = new Map([ - [Biome.VOLCANO, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], + const biomeMap = new Map([ + [BiomeId.VOLCANO, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], ]); HUMAN_TRANSITABLE_BIOMES.forEach(biome => { biomeMap.set(biome, [MysteryEncounterType.AN_OFFER_YOU_CANT_REFUSE]); @@ -80,7 +80,7 @@ describe("An Offer You Can't Refuse - Mystery Encounter", () => { it("should not spawn outside of HUMAN_TRANSITABLE_BIOMES", async () => { game.override.mysteryEncounterTier(MysteryEncounterTier.GREAT); - game.override.startingBiome(Biome.VOLCANO); + game.override.startingBiome(BiomeId.VOLCANO); await game.runToMysteryEncounter(); expect(scene.currentBattle?.mysteryEncounter?.encounterType).not.toBe( @@ -196,29 +196,31 @@ describe("An Offer You Can't Refuse - Mystery Encounter", () => { it("should award EXP to a pokemon with an ability in EXTORTION_ABILITIES", async () => { await game.runToMysteryEncounter(MysteryEncounterType.AN_OFFER_YOU_CANT_REFUSE, defaultParty); const party = scene.getPlayerParty(); - const gyarados = party.find(pkm => pkm.species.speciesId === Species.GYARADOS)!; + const gyarados = party.find(pkm => pkm.species.speciesId === SpeciesId.GYARADOS)!; const expBefore = gyarados.exp; await runMysteryEncounterToEnd(game, 2); await game.phaseInterceptor.to(SelectModifierPhase, false); expect(gyarados.exp).toBe( - expBefore + Math.floor((getPokemonSpecies(Species.LIEPARD).baseExp * defaultWave) / 5 + 1), + expBefore + Math.floor((getPokemonSpecies(SpeciesId.LIEPARD).baseExp * defaultWave) / 5 + 1), ); }); it("should award EXP to a pokemon with a move in EXTORTION_MOVES", async () => { - game.override.ability(Abilities.SYNCHRONIZE); // Not an extortion ability, so we can test extortion move - await game.runToMysteryEncounter(MysteryEncounterType.AN_OFFER_YOU_CANT_REFUSE, [Species.ABRA]); + game.override.ability(AbilityId.SYNCHRONIZE); // Not an extortion ability, so we can test extortion move + await game.runToMysteryEncounter(MysteryEncounterType.AN_OFFER_YOU_CANT_REFUSE, [SpeciesId.ABRA]); const party = scene.getPlayerParty(); - const abra = party.find(pkm => pkm.species.speciesId === Species.ABRA)!; - abra.moveset = [new PokemonMove(Moves.BEAT_UP)]; + const abra = party.find(pkm => pkm.species.speciesId === SpeciesId.ABRA)!; + abra.moveset = [new PokemonMove(MoveId.BEAT_UP)]; const expBefore = abra.exp; await runMysteryEncounterToEnd(game, 2); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(abra.exp).toBe(expBefore + Math.floor((getPokemonSpecies(Species.LIEPARD).baseExp * defaultWave) / 5 + 1)); + expect(abra.exp).toBe( + expBefore + Math.floor((getPokemonSpecies(SpeciesId.LIEPARD).baseExp * defaultWave) / 5 + 1), + ); }); it("Should update the player's money properly", async () => { diff --git a/test/mystery-encounter/encounters/berries-abound-encounter.test.ts b/test/mystery-encounter/encounters/berries-abound-encounter.test.ts index 3f85b0b89d9..c3af2d9fe13 100644 --- a/test/mystery-encounter/encounters/berries-abound-encounter.test.ts +++ b/test/mystery-encounter/encounters/berries-abound-encounter.test.ts @@ -1,7 +1,7 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { @@ -20,11 +20,11 @@ import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encount import * as EncounterDialogueUtils from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { CommandPhase } from "#app/phases/command-phase"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; const namespace = "mysteryEncounters/berriesAbound"; -const defaultParty = [Species.PYUKUMUKU, Species.MAGIKARP, Species.PIKACHU]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.PYUKUMUKU, SpeciesId.MAGIKARP, SpeciesId.PIKACHU]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("Berries Abound - Mystery Encounter", () => { @@ -47,11 +47,11 @@ describe("Berries Abound - Mystery Encounter", () => { .disableTrainerWaves() .startingModifier([]) .startingHeldItems([]) - .enemyAbility(Abilities.BALL_FETCH) - .enemyPassiveAbility(Abilities.BALL_FETCH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyPassiveAbility(AbilityId.BALL_FETCH); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([[Biome.CAVE, [MysteryEncounterType.BERRIES_ABOUND]]]), + new Map([[BiomeId.CAVE, [MysteryEncounterType.BERRIES_ABOUND]]]), ); }); diff --git a/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts b/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts index 455a5d28194..0cc990a405a 100644 --- a/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts +++ b/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts @@ -1,7 +1,7 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { @@ -9,7 +9,7 @@ import { runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import type BattleScene from "#app/battle-scene"; import { PokemonMove } from "#app/field/pokemon"; import { UiMode } from "#enums/ui-mode"; @@ -26,127 +26,121 @@ import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; const namespace = "mysteryEncounters/bugTypeSuperfan"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.WEEDLE]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.WEEDLE]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 24; const POOL_1_POKEMON = [ - Species.PARASECT, - Species.VENOMOTH, - Species.LEDIAN, - Species.ARIADOS, - Species.YANMA, - Species.BEAUTIFLY, - Species.DUSTOX, - Species.MASQUERAIN, - Species.NINJASK, - Species.VOLBEAT, - Species.ILLUMISE, - Species.ANORITH, - Species.KRICKETUNE, - Species.WORMADAM, - Species.MOTHIM, - Species.SKORUPI, - Species.JOLTIK, - Species.LARVESTA, - Species.VIVILLON, - Species.CHARJABUG, - Species.RIBOMBEE, - Species.SPIDOPS, - Species.LOKIX, + SpeciesId.PARASECT, + SpeciesId.VENOMOTH, + SpeciesId.LEDIAN, + SpeciesId.ARIADOS, + SpeciesId.YANMA, + SpeciesId.BEAUTIFLY, + SpeciesId.DUSTOX, + SpeciesId.MASQUERAIN, + SpeciesId.NINJASK, + SpeciesId.VOLBEAT, + SpeciesId.ILLUMISE, + SpeciesId.ANORITH, + SpeciesId.KRICKETUNE, + SpeciesId.WORMADAM, + SpeciesId.MOTHIM, + SpeciesId.SKORUPI, + SpeciesId.JOLTIK, + SpeciesId.LARVESTA, + SpeciesId.VIVILLON, + SpeciesId.CHARJABUG, + SpeciesId.RIBOMBEE, + SpeciesId.SPIDOPS, + SpeciesId.LOKIX, ]; const POOL_2_POKEMON = [ - Species.SCYTHER, - Species.PINSIR, - Species.HERACROSS, - Species.FORRETRESS, - Species.SCIZOR, - Species.SHUCKLE, - Species.SHEDINJA, - Species.ARMALDO, - Species.VESPIQUEN, - Species.DRAPION, - Species.YANMEGA, - Species.LEAVANNY, - Species.SCOLIPEDE, - Species.CRUSTLE, - Species.ESCAVALIER, - Species.ACCELGOR, - Species.GALVANTULA, - Species.VIKAVOLT, - Species.ARAQUANID, - Species.ORBEETLE, - Species.CENTISKORCH, - Species.FROSMOTH, - Species.KLEAVOR, + SpeciesId.SCYTHER, + SpeciesId.PINSIR, + SpeciesId.HERACROSS, + SpeciesId.FORRETRESS, + SpeciesId.SCIZOR, + SpeciesId.SHUCKLE, + SpeciesId.SHEDINJA, + SpeciesId.ARMALDO, + SpeciesId.VESPIQUEN, + SpeciesId.DRAPION, + SpeciesId.YANMEGA, + SpeciesId.LEAVANNY, + SpeciesId.SCOLIPEDE, + SpeciesId.CRUSTLE, + SpeciesId.ESCAVALIER, + SpeciesId.ACCELGOR, + SpeciesId.GALVANTULA, + SpeciesId.VIKAVOLT, + SpeciesId.ARAQUANID, + SpeciesId.ORBEETLE, + SpeciesId.CENTISKORCH, + SpeciesId.FROSMOTH, + SpeciesId.KLEAVOR, ]; -const POOL_3_POKEMON: { species: Species; formIndex?: number }[] = [ +const POOL_3_POKEMON: { species: SpeciesId; formIndex?: number }[] = [ { - species: Species.PINSIR, + species: SpeciesId.PINSIR, formIndex: 1, }, { - species: Species.SCIZOR, + species: SpeciesId.SCIZOR, formIndex: 1, }, { - species: Species.HERACROSS, + species: SpeciesId.HERACROSS, formIndex: 1, }, { - species: Species.ORBEETLE, + species: SpeciesId.ORBEETLE, formIndex: 1, }, { - species: Species.CENTISKORCH, + species: SpeciesId.CENTISKORCH, formIndex: 1, }, { - species: Species.DURANT, + species: SpeciesId.DURANT, }, { - species: Species.VOLCARONA, + species: SpeciesId.VOLCARONA, }, { - species: Species.GOLISOPOD, + species: SpeciesId.GOLISOPOD, }, ]; -const POOL_4_POKEMON = [Species.GENESECT, Species.SLITHER_WING, Species.BUZZWOLE, Species.PHEROMOSA]; +const POOL_4_POKEMON = [SpeciesId.GENESECT, SpeciesId.SLITHER_WING, SpeciesId.BUZZWOLE, SpeciesId.PHEROMOSA]; const PHYSICAL_TUTOR_MOVES = [ - Moves.MEGAHORN, - Moves.ATTACK_ORDER, - Moves.BUG_BITE, - Moves.FIRST_IMPRESSION, - Moves.LUNGE + MoveId.MEGAHORN, + MoveId.ATTACK_ORDER, + MoveId.BUG_BITE, + MoveId.FIRST_IMPRESSION, + MoveId.LUNGE, ]; const SPECIAL_TUTOR_MOVES = [ - Moves.SILVER_WIND, - Moves.SIGNAL_BEAM, - Moves.BUG_BUZZ, - Moves.POLLEN_PUFF, - Moves.STRUGGLE_BUG + MoveId.SILVER_WIND, + MoveId.SIGNAL_BEAM, + MoveId.BUG_BUZZ, + MoveId.POLLEN_PUFF, + MoveId.STRUGGLE_BUG, ]; const STATUS_TUTOR_MOVES = [ - Moves.STRING_SHOT, - Moves.DEFEND_ORDER, - Moves.RAGE_POWDER, - Moves.STICKY_WEB, - Moves.SILK_TRAP + MoveId.STRING_SHOT, + MoveId.DEFEND_ORDER, + MoveId.RAGE_POWDER, + MoveId.STICKY_WEB, + MoveId.SILK_TRAP, ]; -const MISC_TUTOR_MOVES = [ - Moves.LEECH_LIFE, - Moves.U_TURN, - Moves.HEAL_ORDER, - Moves.QUIVER_DANCE, - Moves.INFESTATION, -]; +const MISC_TUTOR_MOVES = [MoveId.LEECH_LIFE, MoveId.U_TURN, MoveId.HEAL_ORDER, MoveId.QUIVER_DANCE, MoveId.INFESTATION]; describe("Bug-Type Superfan - Mystery Encounter", () => { let phaserGame: Phaser.Game; @@ -166,7 +160,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { game.override.disableTrainerWaves(); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([[Biome.CAVE, [MysteryEncounterType.BUG_TYPE_SUPERFAN]]]), + new Map([[BiomeId.CAVE, [MysteryEncounterType.BUG_TYPE_SUPERFAN]]]), ); }); @@ -241,8 +235,8 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(2); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); - expect(enemyParty[0].species.speciesId).toBe(Species.BEEDRILL); - expect(enemyParty[1].species.speciesId).toBe(Species.BUTTERFREE); + expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); + expect(enemyParty[1].species.speciesId).toBe(SpeciesId.BUTTERFREE); }); it("should start battle against the Bug-Type Superfan with wave 50 party template", async () => { @@ -254,8 +248,8 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(3); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); - expect(enemyParty[0].species.speciesId).toBe(Species.BEEDRILL); - expect(enemyParty[1].species.speciesId).toBe(Species.BUTTERFREE); + expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); + expect(enemyParty[1].species.speciesId).toBe(SpeciesId.BUTTERFREE); expect(POOL_1_POKEMON.includes(enemyParty[2].species.speciesId)).toBe(true); }); @@ -268,8 +262,8 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(4); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); - expect(enemyParty[0].species.speciesId).toBe(Species.BEEDRILL); - expect(enemyParty[1].species.speciesId).toBe(Species.BUTTERFREE); + expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); + expect(enemyParty[1].species.speciesId).toBe(SpeciesId.BUTTERFREE); expect(POOL_1_POKEMON.includes(enemyParty[2].species.speciesId)).toBe(true); expect(POOL_2_POKEMON.includes(enemyParty[3].species.speciesId)).toBe(true); }); @@ -283,8 +277,8 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); - expect(enemyParty[0].species.speciesId).toBe(Species.BEEDRILL); - expect(enemyParty[1].species.speciesId).toBe(Species.BUTTERFREE); + expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); + expect(enemyParty[1].species.speciesId).toBe(SpeciesId.BUTTERFREE); expect(POOL_1_POKEMON.includes(enemyParty[2].species.speciesId)).toBe(true); expect(POOL_2_POKEMON.includes(enemyParty[3].species.speciesId)).toBe(true); expect(POOL_2_POKEMON.includes(enemyParty[4].species.speciesId)).toBe(true); @@ -299,9 +293,9 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); - expect(enemyParty[0].species.speciesId).toBe(Species.BEEDRILL); + expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); expect(enemyParty[0].formIndex).toBe(1); - expect(enemyParty[1].species.speciesId).toBe(Species.BUTTERFREE); + expect(enemyParty[1].species.speciesId).toBe(SpeciesId.BUTTERFREE); expect(enemyParty[1].formIndex).toBe(1); expect(POOL_2_POKEMON.includes(enemyParty[2].species.speciesId)).toBe(true); expect(POOL_2_POKEMON.includes(enemyParty[3].species.speciesId)).toBe(true); @@ -317,9 +311,9 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); - expect(enemyParty[0].species.speciesId).toBe(Species.BEEDRILL); + expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); expect(enemyParty[0].formIndex).toBe(1); - expect(enemyParty[1].species.speciesId).toBe(Species.BUTTERFREE); + expect(enemyParty[1].species.speciesId).toBe(SpeciesId.BUTTERFREE); expect(enemyParty[1].formIndex).toBe(1); expect(POOL_2_POKEMON.includes(enemyParty[2].species.speciesId)).toBe(true); expect(POOL_3_POKEMON.some(config => enemyParty[3].species.speciesId === config.species)).toBe(true); @@ -335,9 +329,9 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); - expect(enemyParty[0].species.speciesId).toBe(Species.BEEDRILL); + expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); expect(enemyParty[0].formIndex).toBe(1); - expect(enemyParty[1].species.speciesId).toBe(Species.BUTTERFREE); + expect(enemyParty[1].species.speciesId).toBe(SpeciesId.BUTTERFREE); expect(enemyParty[1].formIndex).toBe(1); expect(POOL_2_POKEMON.includes(enemyParty[2].species.speciesId)).toBe(true); expect(POOL_3_POKEMON.some(config => enemyParty[3].species.speciesId === config.species)).toBe(true); @@ -353,11 +347,11 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); - expect(enemyParty[0].species.speciesId).toBe(Species.BEEDRILL); + expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); expect(enemyParty[0].formIndex).toBe(1); expect(enemyParty[0].isBoss()).toBe(true); expect(enemyParty[0].bossSegments).toBe(2); - expect(enemyParty[1].species.speciesId).toBe(Species.BUTTERFREE); + expect(enemyParty[1].species.speciesId).toBe(SpeciesId.BUTTERFREE); expect(enemyParty[1].formIndex).toBe(1); expect(enemyParty[1].isBoss()).toBe(true); expect(enemyParty[1].bossSegments).toBe(2); @@ -401,7 +395,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { }); it("should NOT be selectable if the player doesn't have any Bug types", async () => { - await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, [Species.ABRA]); + await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, [SpeciesId.ABRA]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); const encounterPhase = scene.getCurrentPhase(); @@ -436,7 +430,10 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { }); it("should proceed to rewards screen with 2-3 Bug Types reward options", async () => { - await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, [Species.BUTTERFREE, Species.BEEDRILL]); + await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, [ + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + ]); await runMysteryEncounterToEnd(game, 2); expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); @@ -454,10 +451,10 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { it("should proceed to rewards screen with 4-5 Bug Types reward options", async () => { await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, [ - Species.BUTTERFREE, - Species.BEEDRILL, - Species.GALVANTULA, - Species.VOLCARONA, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.GALVANTULA, + SpeciesId.VOLCARONA, ]); await runMysteryEncounterToEnd(game, 2); @@ -476,12 +473,12 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { it("should proceed to rewards screen with 6 Bug Types reward options (including form change item)", async () => { await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, [ - Species.BUTTERFREE, - Species.BEEDRILL, - Species.GALVANTULA, - Species.VOLCARONA, - Species.ANORITH, - Species.GENESECT, + SpeciesId.BUTTERFREE, + SpeciesId.BEEDRILL, + SpeciesId.GALVANTULA, + SpeciesId.VOLCARONA, + SpeciesId.ANORITH, + SpeciesId.GENESECT, ]); await runMysteryEncounterToEnd(game, 2); @@ -554,7 +551,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { it("should remove the gifted item and proceed to rewards screen", async () => { game.override.startingHeldItems([{ name: "GRIP_CLAW", count: 1 }]); - await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, [Species.BUTTERFREE]); + await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, [SpeciesId.BUTTERFREE]); const gripClawCountBefore = scene.findModifier(m => m instanceof ContactHeldItemTransferChanceModifier)?.stackCount ?? 0; @@ -581,7 +578,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { game.override.startingHeldItems([{ name: "GRIP_CLAW", count: 1 }]); const leaveEncounterWithoutBattleSpy = vi.spyOn(encounterPhaseUtils, "leaveEncounterWithoutBattle"); - await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, [Species.BUTTERFREE]); + await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, [SpeciesId.BUTTERFREE]); await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); expect(leaveEncounterWithoutBattleSpy).toBeCalled(); diff --git a/test/mystery-encounter/encounters/clowning-around-encounter.test.ts b/test/mystery-encounter/encounters/clowning-around-encounter.test.ts index afc4a83e9bf..d83f8d0642c 100644 --- a/test/mystery-encounter/encounters/clowning-around-encounter.test.ts +++ b/test/mystery-encounter/encounters/clowning-around-encounter.test.ts @@ -1,7 +1,7 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { getPokemonSpecies } from "#app/data/pokemon-species"; @@ -12,7 +12,7 @@ import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import type BattleScene from "#app/battle-scene"; import type Pokemon from "#app/field/pokemon"; import { PokemonMove } from "#app/field/pokemon"; @@ -23,7 +23,7 @@ import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils import { ModifierTier } from "#app/modifier/modifier-tier"; import { ClowningAroundEncounter } from "#app/data/mystery-encounters/encounters/clowning-around-encounter"; import { TrainerType } from "#enums/trainer-type"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { PostMysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { Button } from "#enums/buttons"; import type PartyUiHandler from "#app/ui/party-ui-handler"; @@ -39,8 +39,8 @@ import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import { NewBattlePhase } from "#app/phases/new-battle-phase"; const namespace = "mysteryEncounters/clowningAround"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("Clowning Around - Mystery Encounter", () => { @@ -61,7 +61,7 @@ describe("Clowning Around - Mystery Encounter", () => { game.override.disableTrainerWaves(); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([[Biome.CAVE, [MysteryEncounterType.CLOWNING_AROUND]]]), + new Map([[BiomeId.CAVE, [MysteryEncounterType.CLOWNING_AROUND]]]), ); }); @@ -115,33 +115,33 @@ describe("Clowning Around - Mystery Encounter", () => { expect(config.doubleBattle).toBe(true); expect(config.trainerConfig?.trainerType).toBe(TrainerType.HARLEQUIN); expect(config.pokemonConfigs?.[0]).toEqual({ - species: getPokemonSpecies(Species.MR_MIME), + species: getPokemonSpecies(SpeciesId.MR_MIME), isBoss: true, - moveSet: [Moves.TEETER_DANCE, Moves.ALLY_SWITCH, Moves.DAZZLING_GLEAM, Moves.PSYCHIC], + moveSet: [MoveId.TEETER_DANCE, MoveId.ALLY_SWITCH, MoveId.DAZZLING_GLEAM, MoveId.PSYCHIC], }); expect(config.pokemonConfigs?.[1]).toEqual({ - species: getPokemonSpecies(Species.BLACEPHALON), + species: getPokemonSpecies(SpeciesId.BLACEPHALON), customPokemonData: expect.anything(), isBoss: true, - moveSet: [Moves.TRICK, Moves.HYPNOSIS, Moves.SHADOW_BALL, Moves.MIND_BLOWN], + moveSet: [MoveId.TRICK, MoveId.HYPNOSIS, MoveId.SHADOW_BALL, MoveId.MIND_BLOWN], }); expect(config.pokemonConfigs?.[1].customPokemonData?.types.length).toBe(2); expect([ - Abilities.STURDY, - Abilities.PICKUP, - Abilities.INTIMIDATE, - Abilities.GUTS, - Abilities.DROUGHT, - Abilities.DRIZZLE, - Abilities.SNOW_WARNING, - Abilities.SAND_STREAM, - Abilities.ELECTRIC_SURGE, - Abilities.PSYCHIC_SURGE, - Abilities.GRASSY_SURGE, - Abilities.MISTY_SURGE, - Abilities.MAGICIAN, - Abilities.SHEER_FORCE, - Abilities.PRANKSTER, + AbilityId.STURDY, + AbilityId.PICKUP, + AbilityId.INTIMIDATE, + AbilityId.GUTS, + AbilityId.DROUGHT, + AbilityId.DRIZZLE, + AbilityId.SNOW_WARNING, + AbilityId.SAND_STREAM, + AbilityId.ELECTRIC_SURGE, + AbilityId.PSYCHIC_SURGE, + AbilityId.GRASSY_SURGE, + AbilityId.MISTY_SURGE, + AbilityId.MAGICIAN, + AbilityId.SHEER_FORCE, + AbilityId.PRANKSTER, ]).toContain(config.pokemonConfigs?.[1].customPokemonData?.ability); expect(ClowningAroundEncounter.misc.ability).toBe(config.pokemonConfigs?.[1].customPokemonData?.ability); await vi.waitFor(() => expect(moveInitSpy).toHaveBeenCalled()); @@ -175,26 +175,26 @@ describe("Clowning Around - Mystery Encounter", () => { const enemyField = scene.getEnemyField(); expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(2); - expect(enemyField[0].species.speciesId).toBe(Species.MR_MIME); + expect(enemyField[0].species.speciesId).toBe(SpeciesId.MR_MIME); expect(enemyField[0].moveset).toEqual([ - new PokemonMove(Moves.TEETER_DANCE), - new PokemonMove(Moves.ALLY_SWITCH), - new PokemonMove(Moves.DAZZLING_GLEAM), - new PokemonMove(Moves.PSYCHIC), + new PokemonMove(MoveId.TEETER_DANCE), + new PokemonMove(MoveId.ALLY_SWITCH), + new PokemonMove(MoveId.DAZZLING_GLEAM), + new PokemonMove(MoveId.PSYCHIC), ]); - expect(enemyField[1].species.speciesId).toBe(Species.BLACEPHALON); + expect(enemyField[1].species.speciesId).toBe(SpeciesId.BLACEPHALON); expect(enemyField[1].moveset).toEqual([ - new PokemonMove(Moves.TRICK), - new PokemonMove(Moves.HYPNOSIS), - new PokemonMove(Moves.SHADOW_BALL), - new PokemonMove(Moves.MIND_BLOWN), + new PokemonMove(MoveId.TRICK), + new PokemonMove(MoveId.HYPNOSIS), + new PokemonMove(MoveId.SHADOW_BALL), + new PokemonMove(MoveId.MIND_BLOWN), ]); // Should have used moves pre-battle const movePhases = phaseSpy.mock.calls.filter(p => p[0] instanceof MovePhase).map(p => p[0]); expect(movePhases.length).toBe(3); - expect(movePhases.filter(p => (p as MovePhase).move.moveId === Moves.ROLE_PLAY).length).toBe(1); - expect(movePhases.filter(p => (p as MovePhase).move.moveId === Moves.TAUNT).length).toBe(2); + expect(movePhases.filter(p => (p as MovePhase).move.moveId === MoveId.ROLE_PLAY).length).toBe(1); + expect(movePhases.filter(p => (p as MovePhase).move.moveId === MoveId.TAUNT).length).toBe(2); }); it("should let the player gain the ability after battle completion", async () => { @@ -264,7 +264,7 @@ describe("Clowning Around - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.CLOWNING_AROUND, defaultParty); // Set some moves on party for attack type booster generation - scene.getPlayerParty()[0].moveset = [new PokemonMove(Moves.TACKLE), new PokemonMove(Moves.THIEF)]; + scene.getPlayerParty()[0].moveset = [new PokemonMove(MoveId.TACKLE), new PokemonMove(MoveId.THIEF)]; // 2 Sitrus Berries on lead scene.modifiers = []; @@ -349,9 +349,9 @@ describe("Clowning Around - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.CLOWNING_AROUND, defaultParty); // Same type moves on lead - scene.getPlayerParty()[0].moveset = [new PokemonMove(Moves.ICE_BEAM), new PokemonMove(Moves.SURF)]; + scene.getPlayerParty()[0].moveset = [new PokemonMove(MoveId.ICE_BEAM), new PokemonMove(MoveId.SURF)]; // Different type moves on second - scene.getPlayerParty()[1].moveset = [new PokemonMove(Moves.GRASS_KNOT), new PokemonMove(Moves.ELECTRO_BALL)]; + scene.getPlayerParty()[1].moveset = [new PokemonMove(MoveId.GRASS_KNOT), new PokemonMove(MoveId.ELECTRO_BALL)]; // No moves on third scene.getPlayerParty()[2].moveset = []; await runMysteryEncounterToEnd(game, 3); diff --git a/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts b/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts index 873bed2f213..501ff0c45e8 100644 --- a/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts +++ b/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts @@ -1,6 +1,6 @@ -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; @@ -13,7 +13,7 @@ import type BattleScene from "#app/battle-scene"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { DancingLessonsEncounter } from "#app/data/mystery-encounters/encounters/dancing-lessons-encounter"; import { UiMode } from "#enums/ui-mode"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; @@ -25,8 +25,8 @@ import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import { LearnMovePhase } from "#app/phases/learn-move-phase"; const namespace = "mysteryEncounters/dancingLessons"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.PLAINS; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.PLAINS; const defaultWave = 45; describe("Dancing Lessons - Mystery Encounter", () => { @@ -47,9 +47,9 @@ describe("Dancing Lessons - Mystery Encounter", () => { game.override.disableTrainerWaves(); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([ - [Biome.PLAINS, [MysteryEncounterType.DANCING_LESSONS]], - [Biome.SPACE, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], + new Map([ + [BiomeId.PLAINS, [MysteryEncounterType.DANCING_LESSONS]], + [BiomeId.SPACE, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], ]), ); }); @@ -75,7 +75,7 @@ describe("Dancing Lessons - Mystery Encounter", () => { it("should not spawn outside of proper biomes", async () => { game.override.mysteryEncounterTier(MysteryEncounterTier.GREAT); - game.override.startingBiome(Biome.SPACE); + game.override.startingBiome(BiomeId.SPACE); await game.runToMysteryEncounter(); expect(game.scene.currentBattle.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.DANCING_LESSONS); @@ -110,14 +110,14 @@ describe("Dancing Lessons - Mystery Encounter", () => { const enemyField = scene.getEnemyField(); expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); - expect(enemyField[0].species.speciesId).toBe(Species.ORICORIO); + expect(enemyField[0].species.speciesId).toBe(SpeciesId.ORICORIO); expect(enemyField[0].summonData.statStages).toEqual([1, 1, 1, 1, 0, 0, 0]); const moveset = enemyField[0].moveset.map(m => m.moveId); - expect(moveset.some(m => m === Moves.REVELATION_DANCE)).toBeTruthy(); + expect(moveset.some(m => m === MoveId.REVELATION_DANCE)).toBeTruthy(); const movePhases = phaseSpy.mock.calls.filter(p => p[0] instanceof MovePhase).map(p => p[0]); expect(movePhases.length).toBe(1); - expect(movePhases.filter(p => (p as MovePhase).move.moveId === Moves.REVELATION_DANCE).length).toBe(1); // Revelation Dance used before battle + expect(movePhases.filter(p => (p as MovePhase).move.moveId === MoveId.REVELATION_DANCE).length).toBe(1); // Revelation Dance used before battle }); it("should have a Baton in the rewards after battle", async () => { @@ -166,7 +166,7 @@ describe("Dancing Lessons - Mystery Encounter", () => { const movePhases = phaseSpy.mock.calls.filter(p => p[0] instanceof LearnMovePhase).map(p => p[0]); expect(movePhases.length).toBe(1); - expect(movePhases.filter(p => (p as LearnMovePhase)["moveId"] === Moves.REVELATION_DANCE).length).toBe(1); // Revelation Dance taught to pokemon + expect(movePhases.filter(p => (p as LearnMovePhase)["moveId"] === MoveId.REVELATION_DANCE).length).toBe(1); // Revelation Dance taught to pokemon }); it("should leave encounter without battle", async () => { @@ -201,16 +201,16 @@ describe("Dancing Lessons - Mystery Encounter", () => { it("should add Oricorio to the party", async () => { await game.runToMysteryEncounter(MysteryEncounterType.DANCING_LESSONS, defaultParty); const partyCountBefore = scene.getPlayerParty().length; - scene.getPlayerParty()[0].moveset = [new PokemonMove(Moves.DRAGON_DANCE)]; + scene.getPlayerParty()[0].moveset = [new PokemonMove(MoveId.DRAGON_DANCE)]; await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); const partyCountAfter = scene.getPlayerParty().length; expect(partyCountBefore + 1).toBe(partyCountAfter); const oricorio = scene.getPlayerParty()[scene.getPlayerParty().length - 1]; - expect(oricorio.species.speciesId).toBe(Species.ORICORIO); + expect(oricorio.species.speciesId).toBe(SpeciesId.ORICORIO); const moveset = oricorio.moveset.map(m => m.moveId); - expect(moveset?.some(m => m === Moves.REVELATION_DANCE)).toBeTruthy(); - expect(moveset?.some(m => m === Moves.DRAGON_DANCE)).toBeTruthy(); + expect(moveset?.some(m => m === MoveId.REVELATION_DANCE)).toBeTruthy(); + expect(moveset?.some(m => m === MoveId.DRAGON_DANCE)).toBeTruthy(); }); it("should NOT be selectable if the player doesn't have a Dance type move", async () => { @@ -240,7 +240,7 @@ describe("Dancing Lessons - Mystery Encounter", () => { const leaveEncounterWithoutBattleSpy = vi.spyOn(EncounterPhaseUtils, "leaveEncounterWithoutBattle"); await game.runToMysteryEncounter(MysteryEncounterType.DANCING_LESSONS, defaultParty); - scene.getPlayerParty()[0].moveset = [new PokemonMove(Moves.DRAGON_DANCE)]; + scene.getPlayerParty()[0].moveset = [new PokemonMove(MoveId.DRAGON_DANCE)]; await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); expect(leaveEncounterWithoutBattleSpy).toBeCalled(); diff --git a/test/mystery-encounter/encounters/delibirdy-encounter.test.ts b/test/mystery-encounter/encounters/delibirdy-encounter.test.ts index 94faf070a39..58496e957c0 100644 --- a/test/mystery-encounter/encounters/delibirdy-encounter.test.ts +++ b/test/mystery-encounter/encounters/delibirdy-encounter.test.ts @@ -1,6 +1,6 @@ -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; @@ -30,8 +30,8 @@ import { modifierTypes } from "#app/modifier/modifier-type"; import { BerryType } from "#enums/berry-type"; const namespace = "mysteryEncounters/delibirdy"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("Delibird-y - Mystery Encounter", () => { @@ -52,7 +52,7 @@ describe("Delibird-y - Mystery Encounter", () => { game.override.disableTrainerWaves(); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([[Biome.CAVE, [MysteryEncounterType.DELIBIRDY]]]), + new Map([[BiomeId.CAVE, [MysteryEncounterType.DELIBIRDY]]]), ); }); diff --git a/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts b/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts index 2488d12dad1..c2974def16e 100644 --- a/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts +++ b/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts @@ -1,7 +1,7 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; @@ -16,8 +16,8 @@ import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; const namespace = "mysteryEncounters/departmentStoreSale"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.PLAINS; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.PLAINS; const defaultWave = 37; describe("Department Store Sale - Mystery Encounter", () => { @@ -37,8 +37,8 @@ describe("Department Store Sale - Mystery Encounter", () => { game.override.startingBiome(defaultBiome); game.override.disableTrainerWaves(); - const biomeMap = new Map([ - [Biome.VOLCANO, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], + const biomeMap = new Map([ + [BiomeId.VOLCANO, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], ]); CIVILIZATION_ENCOUNTER_BIOMES.forEach(biome => { biomeMap.set(biome, [MysteryEncounterType.DEPARTMENT_STORE_SALE]); @@ -75,7 +75,7 @@ describe("Department Store Sale - Mystery Encounter", () => { it("should not spawn outside of CIVILIZATION_ENCOUNTER_BIOMES", async () => { game.override.mysteryEncounterTier(MysteryEncounterTier.COMMON); - game.override.startingBiome(Biome.VOLCANO); + game.override.startingBiome(BiomeId.VOLCANO); await game.runToMysteryEncounter(); expect(scene.currentBattle?.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.DEPARTMENT_STORE_SALE); diff --git a/test/mystery-encounter/encounters/field-trip-encounter.test.ts b/test/mystery-encounter/encounters/field-trip-encounter.test.ts index 75a6fe77492..f93de7dc955 100644 --- a/test/mystery-encounter/encounters/field-trip-encounter.test.ts +++ b/test/mystery-encounter/encounters/field-trip-encounter.test.ts @@ -1,6 +1,6 @@ -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; @@ -10,15 +10,15 @@ import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; import { FieldTripEncounter } from "#app/data/mystery-encounters/encounters/field-trip-encounter"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import { UiMode } from "#enums/ui-mode"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import i18next from "i18next"; const namespace = "mysteryEncounters/fieldTrip"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("Field Trip - Mystery Encounter", () => { @@ -37,10 +37,10 @@ describe("Field Trip - Mystery Encounter", () => { game.override.startingWave(defaultWave); game.override.startingBiome(defaultBiome); game.override.disableTrainerWaves(); - game.override.moveset([Moves.TACKLE, Moves.UPROAR, Moves.SWORDS_DANCE]); + game.override.moveset([MoveId.TACKLE, MoveId.UPROAR, MoveId.SWORDS_DANCE]); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([[Biome.CAVE, [MysteryEncounterType.FIELD_TRIP]]]), + new Map([[BiomeId.CAVE, [MysteryEncounterType.FIELD_TRIP]]]), ); }); diff --git a/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts b/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts index 3d311134d4e..ba9ea4126da 100644 --- a/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts +++ b/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts @@ -1,7 +1,7 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { FieryFalloutEncounter } from "#app/data/mystery-encounters/encounters/fiery-fallout-encounter"; @@ -14,7 +14,7 @@ import { runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import type BattleScene from "#app/battle-scene"; import { AttackTypeBoosterModifier, PokemonHeldItemModifier } from "#app/modifier/modifier"; import { PokemonType } from "#enums/pokemon-type"; @@ -27,14 +27,14 @@ import { CommandPhase } from "#app/phases/command-phase"; import { MovePhase } from "#app/phases/move-phase"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import i18next from "i18next"; import { StatusEffect } from "#enums/status-effect"; const namespace = "mysteryEncounters/fieryFallout"; /** Arcanine and Ninetails for 2 Fire types. Lapras, Gengar, Abra for burnable mon. */ -const defaultParty = [Species.ARCANINE, Species.NINETALES, Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.VOLCANO; +const defaultParty = [SpeciesId.ARCANINE, SpeciesId.NINETALES, SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.VOLCANO; const defaultWave = 56; describe("Fiery Fallout - Mystery Encounter", () => { @@ -54,12 +54,12 @@ describe("Fiery Fallout - Mystery Encounter", () => { .startingWave(defaultWave) .startingBiome(defaultBiome) .disableTrainerWaves() - .moveset([Moves.PAYBACK, Moves.THUNDERBOLT]); // Required for attack type booster item generation + .moveset([MoveId.PAYBACK, MoveId.THUNDERBOLT]); // Required for attack type booster item generation vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([ - [Biome.VOLCANO, [MysteryEncounterType.FIERY_FALLOUT]], - [Biome.MOUNTAIN, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], + new Map([ + [BiomeId.VOLCANO, [MysteryEncounterType.FIERY_FALLOUT]], + [BiomeId.MOUNTAIN, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], ]), ); }); @@ -84,7 +84,7 @@ describe("Fiery Fallout - Mystery Encounter", () => { }); it("should not spawn outside of volcano biome", async () => { - game.override.startingBiome(Biome.MOUNTAIN); + game.override.startingBiome(BiomeId.MOUNTAIN); await game.runToMysteryEncounter(); expect(scene.currentBattle?.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.FIERY_FALLOUT); @@ -116,14 +116,14 @@ describe("Fiery Fallout - Mystery Encounter", () => { { pokemonConfigs: [ { - species: getPokemonSpecies(Species.VOLCARONA), + species: getPokemonSpecies(SpeciesId.VOLCARONA), isBoss: false, gender: Gender.MALE, tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: expect.any(Function), }, { - species: getPokemonSpecies(Species.VOLCARONA), + species: getPokemonSpecies(SpeciesId.VOLCARONA), isBoss: false, gender: Gender.FEMALE, tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], @@ -165,13 +165,13 @@ describe("Fiery Fallout - Mystery Encounter", () => { const enemyField = scene.getEnemyField(); expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(2); - expect(enemyField[0].species.speciesId).toBe(Species.VOLCARONA); - expect(enemyField[1].species.speciesId).toBe(Species.VOLCARONA); + expect(enemyField[0].species.speciesId).toBe(SpeciesId.VOLCARONA); + expect(enemyField[1].species.speciesId).toBe(SpeciesId.VOLCARONA); expect(enemyField[0].gender).not.toEqual(enemyField[1].gender); // Should be opposite gender const movePhases = phaseSpy.mock.calls.filter(p => p[0] instanceof MovePhase).map(p => p[0]); expect(movePhases.length).toBe(2); - expect(movePhases.filter(p => (p as MovePhase).move.moveId === Moves.FIRE_SPIN).length).toBe(2); // Fire spin used twice before battle + expect(movePhases.filter(p => (p as MovePhase).move.moveId === MoveId.FIRE_SPIN).length).toBe(2); // Fire spin used twice before battle }); it("should give attack type boosting item to lead pokemon", async () => { @@ -211,9 +211,9 @@ describe("Fiery Fallout - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FIERY_FALLOUT, defaultParty); const party = scene.getPlayerParty(); - const lapras = party.find(pkm => pkm.species.speciesId === Species.LAPRAS)!; + const lapras = party.find(pkm => pkm.species.speciesId === SpeciesId.LAPRAS)!; lapras.status = new Status(StatusEffect.POISON); - const abra = party.find(pkm => pkm.species.speciesId === Species.ABRA)!; + const abra = party.find(pkm => pkm.species.speciesId === SpeciesId.ABRA)!; vi.spyOn(abra, "isAllowedInBattle").mockReturnValue(false); await runMysteryEncounterToEnd(game, 2); @@ -231,7 +231,7 @@ describe("Fiery Fallout - Mystery Encounter", () => { ); }); expect(burnablePokemon.some(pkm => pkm.status?.effect === StatusEffect.BURN)).toBeTruthy(); - expect(burnablePokemon.some(pkm => pkm.customPokemonData.ability === Abilities.HEATPROOF)); + expect(burnablePokemon.some(pkm => pkm.customPokemonData.ability === AbilityId.HEATPROOF)); notBurnablePokemon.forEach(pkm => expect(pkm.hp, `${pkm.name} should be full hp: ${pkm.hp} / ${pkm.getMaxHp()} HP`).toBe(pkm.getMaxHp()), ); @@ -285,7 +285,7 @@ describe("Fiery Fallout - Mystery Encounter", () => { }); it("should be disabled if not enough FIRE types are in party", async () => { - await game.runToMysteryEncounter(MysteryEncounterType.FIERY_FALLOUT, [Species.MAGIKARP]); + await game.runToMysteryEncounter(MysteryEncounterType.FIERY_FALLOUT, [SpeciesId.MAGIKARP]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); const encounterPhase = scene.getCurrentPhase(); diff --git a/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts b/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts index d47266268ee..1b5bd9fc649 100644 --- a/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts +++ b/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts @@ -1,7 +1,7 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { @@ -9,7 +9,7 @@ import { runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import type BattleScene from "#app/battle-scene"; import { PokemonMove } from "#app/field/pokemon"; import { UiMode } from "#enums/ui-mode"; @@ -24,8 +24,8 @@ import { CommandPhase } from "#app/phases/command-phase"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; const namespace = "mysteryEncounters/fightOrFlight"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("Fight or Flight - Mystery Encounter", () => { @@ -46,7 +46,7 @@ describe("Fight or Flight - Mystery Encounter", () => { game.override.disableTrainerWaves(); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([[Biome.CAVE, [MysteryEncounterType.FIGHT_OR_FLIGHT]]]), + new Map([[BiomeId.CAVE, [MysteryEncounterType.FIGHT_OR_FLIGHT]]]), ); }); @@ -179,7 +179,7 @@ describe("Fight or Flight - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FIGHT_OR_FLIGHT, defaultParty); // Mock moveset - scene.getPlayerParty()[0].moveset = [new PokemonMove(Moves.KNOCK_OFF)]; + scene.getPlayerParty()[0].moveset = [new PokemonMove(MoveId.KNOCK_OFF)]; const item = game.scene.currentBattle.mysteryEncounter!.misc; await runMysteryEncounterToEnd(game, 2); diff --git a/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts b/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts index f8375c1aa78..fcc2eda28f7 100644 --- a/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts +++ b/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts @@ -1,8 +1,8 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { @@ -21,13 +21,13 @@ import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { CommandPhase } from "#app/phases/command-phase"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import { FunAndGamesEncounter } from "#app/data/mystery-encounters/encounters/fun-and-games-encounter"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { Command } from "#app/ui/command-ui-handler"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; const namespace = "mysteryEncounters/funAndGames"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("Fun And Games! - Mystery Encounter", () => { @@ -47,7 +47,9 @@ describe("Fun And Games! - Mystery Encounter", () => { game.override.startingBiome(defaultBiome); game.override.disableTrainerWaves(); - const biomeMap = new Map([[Biome.VOLCANO, [MysteryEncounterType.FIGHT_OR_FLIGHT]]]); + const biomeMap = new Map([ + [BiomeId.VOLCANO, [MysteryEncounterType.FIGHT_OR_FLIGHT]], + ]); HUMAN_TRANSITABLE_BIOMES.forEach(biome => { biomeMap.set(biome, [MysteryEncounterType.FUN_AND_GAMES]); }); @@ -80,7 +82,7 @@ describe("Fun And Games! - Mystery Encounter", () => { it("should not spawn outside of CIVILIZATIONN biomes", async () => { game.override.mysteryEncounterTier(MysteryEncounterTier.GREAT); - game.override.startingBiome(Biome.VOLCANO); + game.override.startingBiome(BiomeId.VOLCANO); await game.runToMysteryEncounter(); expect(scene.currentBattle?.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.FUN_AND_GAMES); @@ -138,12 +140,12 @@ describe("Fun And Games! - Mystery Encounter", () => { it("should get 3 turns to attack the Wobbuffet for a reward", async () => { scene.money = 20000; - game.override.moveset([Moves.TACKLE]); + game.override.moveset([MoveId.TACKLE]); await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); - expect(scene.getEnemyPokemon()?.species.speciesId).toBe(Species.WOBBUFFET); + expect(scene.getEnemyPokemon()?.species.speciesId).toBe(SpeciesId.WOBBUFFET); expect(scene.getEnemyPokemon()?.ivs).toEqual([0, 0, 0, 0, 0, 0]); expect(scene.getEnemyPokemon()?.nature).toBe(Nature.MILD); @@ -195,7 +197,7 @@ describe("Fun And Games! - Mystery Encounter", () => { it("should have Wide Lens item in rewards if Wubboffet is at 15-33% HP remaining", async () => { scene.money = 20000; - game.override.moveset([Moves.SPLASH]); + game.override.moveset([MoveId.SPLASH]); await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); @@ -225,7 +227,7 @@ describe("Fun And Games! - Mystery Encounter", () => { it("should have Scope Lens item in rewards if Wubboffet is at 3-15% HP remaining", async () => { scene.money = 20000; - game.override.moveset([Moves.SPLASH]); + game.override.moveset([MoveId.SPLASH]); await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); @@ -255,7 +257,7 @@ describe("Fun And Games! - Mystery Encounter", () => { it("should have Multi Lens item in rewards if Wubboffet is at <3% HP remaining", async () => { scene.money = 20000; - game.override.moveset([Moves.SPLASH]); + game.override.moveset([MoveId.SPLASH]); await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); diff --git a/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts b/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts index 576e99c4e18..73bf3cc4eba 100644 --- a/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts +++ b/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts @@ -1,6 +1,6 @@ -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; @@ -21,8 +21,8 @@ import { ModifierTier } from "#app/modifier/modifier-tier"; import * as Utils from "#app/utils/common"; const namespace = "mysteryEncounters/globalTradeSystem"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("Global Trade System - Mystery Encounter", () => { @@ -42,8 +42,8 @@ describe("Global Trade System - Mystery Encounter", () => { game.override.startingBiome(defaultBiome); game.override.disableTrainerWaves(); - const biomeMap = new Map([ - [Biome.VOLCANO, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], + const biomeMap = new Map([ + [BiomeId.VOLCANO, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], ]); CIVILIZATION_ENCOUNTER_BIOMES.forEach(biome => { biomeMap.set(biome, [MysteryEncounterType.GLOBAL_TRADE_SYSTEM]); @@ -71,7 +71,7 @@ describe("Global Trade System - Mystery Encounter", () => { }); it("should not loop infinitely when generating trade options for extreme BST non-legendaries", async () => { - const extremeBstTeam = [Species.SLAKING, Species.WISHIWASHI, Species.SUNKERN]; + const extremeBstTeam = [SpeciesId.SLAKING, SpeciesId.WISHIWASHI, SpeciesId.SUNKERN]; await game.runToMysteryEncounter(MysteryEncounterType.GLOBAL_TRADE_SYSTEM, extremeBstTeam); expect(GlobalTradeSystemEncounter.encounterType).toBe(MysteryEncounterType.GLOBAL_TRADE_SYSTEM); @@ -86,7 +86,7 @@ describe("Global Trade System - Mystery Encounter", () => { it("should not spawn outside of CIVILIZATION_ENCOUNTER_BIOMES", async () => { game.override.mysteryEncounterTier(MysteryEncounterTier.COMMON); - game.override.startingBiome(Biome.VOLCANO); + game.override.startingBiome(BiomeId.VOLCANO); await game.runToMysteryEncounter(); expect(scene.currentBattle?.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.GLOBAL_TRADE_SYSTEM); diff --git a/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts b/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts index f23bc8738f2..10b96d84667 100644 --- a/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts +++ b/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts @@ -2,9 +2,9 @@ import { LostAtSeaEncounter } from "#app/data/mystery-encounters/encounters/lost import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { getPokemonSpecies } from "#app/data/pokemon-species"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption } from "../encounter-test-utils"; @@ -18,8 +18,8 @@ import i18next from "i18next"; const namespace = "mysteryEncounters/lostAtSea"; /** Blastoise for surf. Pidgeot for fly. Abra for none. */ -const defaultParty = [Species.BLASTOISE, Species.PIDGEOT, Species.ABRA]; -const defaultBiome = Biome.SEA; +const defaultParty = [SpeciesId.BLASTOISE, SpeciesId.PIDGEOT, SpeciesId.ABRA]; +const defaultBiome = BiomeId.SEA; const defaultWave = 33; describe("Lost at Sea - Mystery Encounter", () => { @@ -40,9 +40,9 @@ describe("Lost at Sea - Mystery Encounter", () => { game.override.disableTrainerWaves(); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([ - [Biome.SEA, [MysteryEncounterType.LOST_AT_SEA]], - [Biome.MOUNTAIN, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], + new Map([ + [BiomeId.SEA, [MysteryEncounterType.LOST_AT_SEA]], + [BiomeId.MOUNTAIN, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], ]), ); }); @@ -68,7 +68,7 @@ describe("Lost at Sea - Mystery Encounter", () => { it("should not spawn outside of sea biome", async () => { game.override.mysteryEncounterTier(MysteryEncounterTier.COMMON); - game.override.startingBiome(Biome.MOUNTAIN); + game.override.startingBiome(BiomeId.MOUNTAIN); await game.runToMysteryEncounter(); expect(game.scene.currentBattle.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.LOST_AT_SEA); @@ -110,11 +110,11 @@ describe("Lost at Sea - Mystery Encounter", () => { }); it("should award exp to surfable PKM (Blastoise)", async () => { - const laprasSpecies = getPokemonSpecies(Species.LAPRAS); + const laprasSpecies = getPokemonSpecies(SpeciesId.LAPRAS); await game.runToMysteryEncounter(MysteryEncounterType.LOST_AT_SEA, defaultParty); const party = game.scene.getPlayerParty(); - const blastoise = party.find(pkm => pkm.species.speciesId === Species.BLASTOISE); + const blastoise = party.find(pkm => pkm.species.speciesId === SpeciesId.BLASTOISE); const expBefore = blastoise!.exp; await runMysteryEncounterToEnd(game, 1); @@ -134,7 +134,7 @@ describe("Lost at Sea - Mystery Encounter", () => { }); it("should be disabled if no surfable PKM is in party", async () => { - await game.runToMysteryEncounter(MysteryEncounterType.LOST_AT_SEA, [Species.ARCANINE]); + await game.runToMysteryEncounter(MysteryEncounterType.LOST_AT_SEA, [SpeciesId.ARCANINE]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); const encounterPhase = scene.getCurrentPhase(); @@ -179,7 +179,7 @@ describe("Lost at Sea - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.LOST_AT_SEA, defaultParty); const party = game.scene.getPlayerParty(); - const pidgeot = party.find(pkm => pkm.species.speciesId === Species.PIDGEOT); + const pidgeot = party.find(pkm => pkm.species.speciesId === SpeciesId.PIDGEOT); const expBefore = pidgeot!.exp; await runMysteryEncounterToEnd(game, 2); @@ -199,7 +199,7 @@ describe("Lost at Sea - Mystery Encounter", () => { }); it("should be disabled if no flyable PKM is in party", async () => { - await game.runToMysteryEncounter(MysteryEncounterType.LOST_AT_SEA, [Species.ARCANINE]); + await game.runToMysteryEncounter(MysteryEncounterType.LOST_AT_SEA, [SpeciesId.ARCANINE]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); const encounterPhase = scene.getCurrentPhase(); @@ -241,7 +241,7 @@ describe("Lost at Sea - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.LOST_AT_SEA, defaultParty); const party = game.scene.getPlayerParty(); - const abra = party.find(pkm => pkm.species.speciesId === Species.ABRA)!; + const abra = party.find(pkm => pkm.species.speciesId === SpeciesId.ABRA)!; vi.spyOn(abra, "isAllowedInBattle").mockReturnValue(false); await runMysteryEncounterToEnd(game, 3); diff --git a/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts b/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts index 2c61d03b29d..b93fbeb2673 100644 --- a/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts +++ b/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts @@ -1,8 +1,8 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { @@ -27,8 +27,8 @@ import { CommandPhase } from "#app/phases/command-phase"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; const namespace = "mysteryEncounters/mysteriousChallengers"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("Mysterious Challengers - Mystery Encounter", () => { @@ -48,7 +48,9 @@ describe("Mysterious Challengers - Mystery Encounter", () => { game.override.startingBiome(defaultBiome); game.override.disableTrainerWaves(); - const biomeMap = new Map([[Biome.VOLCANO, [MysteryEncounterType.FIGHT_OR_FLIGHT]]]); + const biomeMap = new Map([ + [BiomeId.VOLCANO, [MysteryEncounterType.FIGHT_OR_FLIGHT]], + ]); HUMAN_TRANSITABLE_BIOMES.forEach(biome => { biomeMap.set(biome, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]); }); @@ -78,7 +80,7 @@ describe("Mysterious Challengers - Mystery Encounter", () => { it("should not spawn outside of HUMAN_TRANSITABLE_BIOMES", async () => { game.override.mysteryEncounterTier(MysteryEncounterTier.GREAT); - game.override.startingBiome(Biome.VOLCANO); + game.override.startingBiome(BiomeId.VOLCANO); await game.runToMysteryEncounter(); expect(scene.currentBattle?.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.MYSTERIOUS_CHALLENGERS); diff --git a/test/mystery-encounter/encounters/part-timer-encounter.test.ts b/test/mystery-encounter/encounters/part-timer-encounter.test.ts index 639a2e140ff..1b9d24b5ce6 100644 --- a/test/mystery-encounter/encounters/part-timer-encounter.test.ts +++ b/test/mystery-encounter/encounters/part-timer-encounter.test.ts @@ -1,7 +1,7 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; @@ -15,13 +15,13 @@ import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { PartTimerEncounter } from "#app/data/mystery-encounters/encounters/part-timer-encounter"; import { PokemonMove } from "#app/field/pokemon"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; const namespace = "mysteryEncounters/partTimer"; // Pyukumuku for lowest speed, Regieleki for highest speed, Feebas for lowest "bulk", Melmetal for highest "bulk" -const defaultParty = [Species.PYUKUMUKU, Species.REGIELEKI, Species.FEEBAS, Species.MELMETAL]; -const defaultBiome = Biome.PLAINS; +const defaultParty = [SpeciesId.PYUKUMUKU, SpeciesId.REGIELEKI, SpeciesId.FEEBAS, SpeciesId.MELMETAL]; +const defaultBiome = BiomeId.PLAINS; const defaultWave = 37; describe("Part-Timer - Mystery Encounter", () => { @@ -41,8 +41,8 @@ describe("Part-Timer - Mystery Encounter", () => { game.override.startingBiome(defaultBiome); game.override.disableTrainerWaves(); - const biomeMap = new Map([ - [Biome.VOLCANO, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], + const biomeMap = new Map([ + [BiomeId.VOLCANO, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], ]); CIVILIZATION_ENCOUNTER_BIOMES.forEach(biome => { biomeMap.set(biome, [MysteryEncounterType.PART_TIMER]); @@ -77,7 +77,7 @@ describe("Part-Timer - Mystery Encounter", () => { it("should not spawn outside of CIVILIZATION_ENCOUNTER_BIOMES", async () => { game.override.mysteryEncounterTier(MysteryEncounterTier.COMMON); - game.override.startingBiome(Biome.VOLCANO); + game.override.startingBiome(BiomeId.VOLCANO); await game.runToMysteryEncounter(); expect(scene.currentBattle?.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.PART_TIMER); @@ -259,7 +259,7 @@ describe("Part-Timer - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.PART_TIMER, defaultParty); // Mock moveset - scene.getPlayerParty()[0].moveset = [new PokemonMove(Moves.ATTRACT)]; + scene.getPlayerParty()[0].moveset = [new PokemonMove(MoveId.ATTRACT)]; await runMysteryEncounterToEnd(game, 3); expect(EncounterPhaseUtils.updatePlayerMoney).toHaveBeenCalledWith(scene.getWaveMoneyAmount(2.5), true, false); diff --git a/test/mystery-encounter/encounters/safari-zone.test.ts b/test/mystery-encounter/encounters/safari-zone.test.ts index 3506020aae4..c6bde3a7e7a 100644 --- a/test/mystery-encounter/encounters/safari-zone.test.ts +++ b/test/mystery-encounter/encounters/safari-zone.test.ts @@ -1,7 +1,7 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { @@ -22,8 +22,8 @@ import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encount import { NON_LEGEND_PARADOX_POKEMON } from "#app/data/balance/special-species-groups"; const namespace = "mysteryEncounters/safariZone"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.SWAMP; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.SWAMP; const defaultWave = 45; describe("Safari Zone - Mystery Encounter", () => { @@ -43,11 +43,11 @@ describe("Safari Zone - Mystery Encounter", () => { game.override.startingBiome(defaultBiome); game.override.disableTrainerWaves(); - const biomeMap = new Map([ - [Biome.VOLCANO, [MysteryEncounterType.FIGHT_OR_FLIGHT]], - [Biome.FOREST, [MysteryEncounterType.SAFARI_ZONE]], - [Biome.SWAMP, [MysteryEncounterType.SAFARI_ZONE]], - [Biome.JUNGLE, [MysteryEncounterType.SAFARI_ZONE]], + const biomeMap = new Map([ + [BiomeId.VOLCANO, [MysteryEncounterType.FIGHT_OR_FLIGHT]], + [BiomeId.FOREST, [MysteryEncounterType.SAFARI_ZONE]], + [BiomeId.SWAMP, [MysteryEncounterType.SAFARI_ZONE]], + [BiomeId.JUNGLE, [MysteryEncounterType.SAFARI_ZONE]], ]); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue(biomeMap); }); @@ -73,7 +73,7 @@ describe("Safari Zone - Mystery Encounter", () => { it("should not spawn outside of the forest, swamp, or jungle biomes", async () => { game.override.mysteryEncounterTier(MysteryEncounterTier.GREAT); - game.override.startingBiome(Biome.VOLCANO); + game.override.startingBiome(BiomeId.VOLCANO); await game.runToMysteryEncounter(); expect(scene.currentBattle?.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.SAFARI_ZONE); diff --git a/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts b/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts index 4ff94c5a9bd..039b1dacf31 100644 --- a/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts +++ b/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts @@ -1,10 +1,10 @@ import type BattleScene from "#app/battle-scene"; import { TeleportingHijinksEncounter } from "#app/data/mystery-encounters/encounters/teleporting-hijinks-encounter"; import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { Abilities } from "#enums/abilities"; -import { Biome } from "#enums/biome"; +import { AbilityId } from "#enums/ability-id"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { CommandPhase } from "#app/phases/command-phase"; import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; @@ -23,11 +23,18 @@ import i18next from "i18next"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/teleportingHijinks"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; -const TRANSPORT_BIOMES = [Biome.SPACE, Biome.ISLAND, Biome.LABORATORY, Biome.FAIRY_CAVE, Biome.WASTELAND, Biome.DOJO]; +const TRANSPORT_BIOMES = [ + BiomeId.SPACE, + BiomeId.ISLAND, + BiomeId.LABORATORY, + BiomeId.FAIRY_CAVE, + BiomeId.WASTELAND, + BiomeId.DOJO, +]; describe("Teleporting Hijinks - Mystery Encounter", () => { let phaserGame: Phaser.Game; @@ -47,11 +54,11 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { .startingWave(defaultWave) .startingBiome(defaultBiome) .disableTrainerWaves() - .enemyAbility(Abilities.BALL_FETCH) - .enemyPassiveAbility(Abilities.BALL_FETCH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyPassiveAbility(AbilityId.BALL_FETCH); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([[Biome.CAVE, [MysteryEncounterType.TELEPORTING_HIJINKS]]]), + new Map([[BiomeId.CAVE, [MysteryEncounterType.TELEPORTING_HIJINKS]]]), ); }); @@ -215,7 +222,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { }); it("should NOT be selectable if the player doesn't the right type pokemon", async () => { - await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, [Species.BLASTOISE]); + await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, [SpeciesId.BLASTOISE]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); const encounterPhase = scene.getCurrentPhase(); @@ -234,14 +241,14 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { }); it("should be selectable if the player has the right type pokemon", async () => { - await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, [Species.METAGROSS]); + await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, [SpeciesId.METAGROSS]); await runMysteryEncounterToEnd(game, 2, undefined, true); expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); }); it("should transport to a new area", async () => { - await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, [Species.PIKACHU]); + await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, [SpeciesId.PIKACHU]); const previousBiome = scene.arena.biomeType; @@ -252,7 +259,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { }); it("should start a battle against an enraged boss below wave 50", async () => { - await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, [Species.PIKACHU]); + await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, [SpeciesId.PIKACHU]); await runMysteryEncounterToEnd(game, 2, undefined, true); const enemyField = scene.getEnemyField(); expect(enemyField[0].summonData.statStages).toEqual([0, 1, 0, 1, 1, 0, 0]); @@ -261,7 +268,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { it("should start a battle against an extra enraged boss above wave 50", { retry: 5 }, async () => { game.override.startingWave(56); - await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, [Species.PIKACHU]); + await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, [SpeciesId.PIKACHU]); await runMysteryEncounterToEnd(game, 2, undefined, true); const enemyField = scene.getEnemyField(); expect(enemyField[0].summonData.statStages).toEqual([1, 1, 1, 1, 1, 0, 0]); diff --git a/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts b/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts index 9160126ffc3..14c9287f5f3 100644 --- a/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts @@ -1,8 +1,8 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { @@ -24,8 +24,8 @@ import { PostMysteryEncounterPhase } from "#app/phases/mystery-encounter-phases" import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#app/data/balance/starters"; const namespace = "mysteryEncounters/theExpertPokemonBreeder"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("The Expert Pokémon Breeder - Mystery Encounter", () => { @@ -45,7 +45,9 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { game.override.startingBiome(defaultBiome); game.override.disableTrainerWaves(); - const biomeMap = new Map([[Biome.VOLCANO, [MysteryEncounterType.FIGHT_OR_FLIGHT]]]); + const biomeMap = new Map([ + [BiomeId.VOLCANO, [MysteryEncounterType.FIGHT_OR_FLIGHT]], + ]); HUMAN_TRANSITABLE_BIOMES.forEach(biome => { biomeMap.set(biome, [MysteryEncounterType.THE_EXPERT_POKEMON_BREEDER]); }); @@ -83,7 +85,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { it("should not spawn outside of HUMAN_TRANSITABLE_BIOMES", async () => { game.override.mysteryEncounterTier(MysteryEncounterTier.GREAT); - game.override.startingBiome(Biome.VOLCANO); + game.override.startingBiome(BiomeId.VOLCANO); await game.runToMysteryEncounter(); expect(scene.currentBattle?.mysteryEncounter?.encounterType).not.toBe( diff --git a/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts b/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts index 4adb8c6b076..15fc3ffb00b 100644 --- a/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts @@ -1,7 +1,7 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; @@ -23,8 +23,8 @@ import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { NON_LEGEND_PARADOX_POKEMON } from "#app/data/balance/special-species-groups"; const namespace = "mysteryEncounters/thePokemonSalesman"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("The Pokemon Salesman - Mystery Encounter", () => { @@ -44,8 +44,8 @@ describe("The Pokemon Salesman - Mystery Encounter", () => { game.override.startingBiome(defaultBiome); game.override.disableTrainerWaves(); - const biomeMap = new Map([ - [Biome.VOLCANO, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], + const biomeMap = new Map([ + [BiomeId.VOLCANO, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], ]); HUMAN_TRANSITABLE_BIOMES.forEach(biome => { biomeMap.set(biome, [MysteryEncounterType.THE_POKEMON_SALESMAN]); @@ -80,7 +80,7 @@ describe("The Pokemon Salesman - Mystery Encounter", () => { it("should not spawn outside of HUMAN_TRANSITABLE_BIOMES", async () => { game.override.mysteryEncounterTier(MysteryEncounterTier.ULTRA); - game.override.startingBiome(Biome.VOLCANO); + game.override.startingBiome(BiomeId.VOLCANO); await game.runToMysteryEncounter(); expect(scene.currentBattle?.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.THE_POKEMON_SALESMAN); diff --git a/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts b/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts index e3440aee9e0..2187bad5775 100644 --- a/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts @@ -1,7 +1,7 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { getPokemonSpecies } from "#app/data/pokemon-species"; @@ -11,7 +11,7 @@ import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import type BattleScene from "#app/battle-scene"; import { TheStrongStuffEncounter } from "#app/data/mystery-encounters/encounters/the-strong-stuff-encounter"; import { Nature } from "#enums/nature"; @@ -28,11 +28,11 @@ import { CustomPokemonData } from "#app/data/custom-pokemon-data"; import { CommandPhase } from "#app/phases/command-phase"; import { MovePhase } from "#app/phases/move-phase"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; const namespace = "mysteryEncounters/theStrongStuff"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("The Strong Stuff - Mystery Encounter", () => { @@ -52,13 +52,13 @@ describe("The Strong Stuff - Mystery Encounter", () => { .startingWave(defaultWave) .startingBiome(defaultBiome) .disableTrainerWaves() - .enemyAbility(Abilities.BALL_FETCH) - .enemyPassiveAbility(Abilities.BALL_FETCH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyPassiveAbility(AbilityId.BALL_FETCH); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([ - [Biome.CAVE, [MysteryEncounterType.THE_STRONG_STUFF]], - [Biome.MOUNTAIN, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], + new Map([ + [BiomeId.CAVE, [MysteryEncounterType.THE_STRONG_STUFF]], + [BiomeId.MOUNTAIN, [MysteryEncounterType.MYSTERIOUS_CHALLENGERS]], ]), ); }); @@ -84,7 +84,7 @@ describe("The Strong Stuff - Mystery Encounter", () => { it("should not spawn outside of CAVE biome", async () => { game.override.mysteryEncounterTier(MysteryEncounterTier.COMMON); - game.override.startingBiome(Biome.MOUNTAIN); + game.override.startingBiome(BiomeId.MOUNTAIN); await game.runToMysteryEncounter(); expect(scene.currentBattle?.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.THE_STRONG_STUFF); @@ -109,13 +109,13 @@ describe("The Strong Stuff - Mystery Encounter", () => { disableSwitch: true, pokemonConfigs: [ { - species: getPokemonSpecies(Species.SHUCKLE), + species: getPokemonSpecies(SpeciesId.SHUCKLE), isBoss: true, bossSegments: 5, shiny: false, customPokemonData: new CustomPokemonData({ spriteScale: 1.25 }), nature: Nature.HARDY, - moveSet: [Moves.INFESTATION, Moves.SALT_CURE, Moves.GASTRO_ACID, Moves.HEAL_ORDER], + moveSet: [MoveId.INFESTATION, MoveId.SALT_CURE, MoveId.GASTRO_ACID, MoveId.HEAL_ORDER], modifierConfigs: expect.any(Array), tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: expect.any(Function), @@ -197,7 +197,7 @@ describe("The Strong Stuff - Mystery Encounter", () => { const enemyField = scene.getEnemyField(); expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); - expect(enemyField[0].species.speciesId).toBe(Species.SHUCKLE); + expect(enemyField[0].species.speciesId).toBe(SpeciesId.SHUCKLE); expect(enemyField[0].summonData.statStages).toEqual([0, 1, 0, 1, 0, 0, 0]); const shuckleItems = enemyField[0].getHeldItems(); expect(shuckleItems.length).toBe(5); @@ -215,17 +215,17 @@ describe("The Strong Stuff - Mystery Encounter", () => { ); expect(shuckleItems.find(m => m instanceof BerryModifier && m.berryType === BerryType.LUM)?.stackCount).toBe(2); expect(enemyField[0].moveset).toEqual([ - new PokemonMove(Moves.INFESTATION), - new PokemonMove(Moves.SALT_CURE), - new PokemonMove(Moves.GASTRO_ACID), - new PokemonMove(Moves.HEAL_ORDER), + new PokemonMove(MoveId.INFESTATION), + new PokemonMove(MoveId.SALT_CURE), + new PokemonMove(MoveId.GASTRO_ACID), + new PokemonMove(MoveId.HEAL_ORDER), ]); // Should have used moves pre-battle const movePhases = phaseSpy.mock.calls.filter(p => p[0] instanceof MovePhase).map(p => p[0]); expect(movePhases.length).toBe(2); - expect(movePhases.filter(p => (p as MovePhase).move.moveId === Moves.GASTRO_ACID).length).toBe(1); - expect(movePhases.filter(p => (p as MovePhase).move.moveId === Moves.STEALTH_ROCK).length).toBe(1); + expect(movePhases.filter(p => (p as MovePhase).move.moveId === MoveId.GASTRO_ACID).length).toBe(1); + expect(movePhases.filter(p => (p as MovePhase).move.moveId === MoveId.STEALTH_ROCK).length).toBe(1); }); it("should have Soul Dew in rewards", async () => { diff --git a/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts b/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts index 4cb712ce779..57b6e881683 100644 --- a/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts @@ -1,8 +1,8 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; @@ -16,7 +16,7 @@ import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { TrainerType } from "#enums/trainer-type"; import { Nature } from "#enums/nature"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { TheWinstrateChallengeEncounter } from "#app/data/mystery-encounters/encounters/the-winstrate-challenge-encounter"; import { Status } from "#app/data/status-effect"; @@ -28,8 +28,8 @@ import { VictoryPhase } from "#app/phases/victory-phase"; import { StatusEffect } from "#enums/status-effect"; const namespace = "mysteryEncounters/theWinstrateChallenge"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("The Winstrate Challenge - Mystery Encounter", () => { @@ -49,7 +49,9 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { game.override.startingBiome(defaultBiome); game.override.disableTrainerWaves(); - const biomeMap = new Map([[Biome.VOLCANO, [MysteryEncounterType.FIGHT_OR_FLIGHT]]]); + const biomeMap = new Map([ + [BiomeId.VOLCANO, [MysteryEncounterType.FIGHT_OR_FLIGHT]], + ]); HUMAN_TRANSITABLE_BIOMES.forEach(biome => { biomeMap.set(biome, [MysteryEncounterType.THE_WINSTRATE_CHALLENGE]); }); @@ -85,7 +87,7 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { it("should not spawn outside of HUMAN_TRANSITABLE_BIOMES", async () => { game.override.mysteryEncounterTier(MysteryEncounterTier.GREAT); - game.override.startingBiome(Biome.VOLCANO); + game.override.startingBiome(BiomeId.VOLCANO); await game.runToMysteryEncounter(); expect(scene.currentBattle?.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.THE_WINSTRATE_CHALLENGE); @@ -111,43 +113,43 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { trainerType: TrainerType.VITO, pokemonConfigs: [ { - species: getPokemonSpecies(Species.HISUI_ELECTRODE), + species: getPokemonSpecies(SpeciesId.HISUI_ELECTRODE), isBoss: false, abilityIndex: 0, // Soundproof nature: Nature.MODEST, - moveSet: [Moves.THUNDERBOLT, Moves.GIGA_DRAIN, Moves.FOUL_PLAY, Moves.THUNDER_WAVE], + moveSet: [MoveId.THUNDERBOLT, MoveId.GIGA_DRAIN, MoveId.FOUL_PLAY, MoveId.THUNDER_WAVE], modifierConfigs: expect.any(Array), }, { - species: getPokemonSpecies(Species.SWALOT), + species: getPokemonSpecies(SpeciesId.SWALOT), isBoss: false, abilityIndex: 2, // Gluttony nature: Nature.QUIET, - moveSet: [Moves.SLUDGE_BOMB, Moves.GIGA_DRAIN, Moves.ICE_BEAM, Moves.EARTHQUAKE], + moveSet: [MoveId.SLUDGE_BOMB, MoveId.GIGA_DRAIN, MoveId.ICE_BEAM, MoveId.EARTHQUAKE], modifierConfigs: expect.any(Array), }, { - species: getPokemonSpecies(Species.DODRIO), + species: getPokemonSpecies(SpeciesId.DODRIO), isBoss: false, abilityIndex: 2, // Tangled Feet nature: Nature.JOLLY, - moveSet: [Moves.DRILL_PECK, Moves.QUICK_ATTACK, Moves.THRASH, Moves.KNOCK_OFF], + moveSet: [MoveId.DRILL_PECK, MoveId.QUICK_ATTACK, MoveId.THRASH, MoveId.KNOCK_OFF], modifierConfigs: expect.any(Array), }, { - species: getPokemonSpecies(Species.ALAKAZAM), + species: getPokemonSpecies(SpeciesId.ALAKAZAM), isBoss: false, formIndex: 1, nature: Nature.BOLD, - moveSet: [Moves.PSYCHIC, Moves.SHADOW_BALL, Moves.FOCUS_BLAST, Moves.THUNDERBOLT], + moveSet: [MoveId.PSYCHIC, MoveId.SHADOW_BALL, MoveId.FOCUS_BLAST, MoveId.THUNDERBOLT], modifierConfigs: expect.any(Array), }, { - species: getPokemonSpecies(Species.DARMANITAN), + species: getPokemonSpecies(SpeciesId.DARMANITAN), isBoss: false, abilityIndex: 0, // Sheer Force nature: Nature.IMPISH, - moveSet: [Moves.EARTHQUAKE, Moves.U_TURN, Moves.FLARE_BLITZ, Moves.ROCK_SLIDE], + moveSet: [MoveId.EARTHQUAKE, MoveId.U_TURN, MoveId.FLARE_BLITZ, MoveId.ROCK_SLIDE], modifierConfigs: expect.any(Array), }, ], @@ -156,11 +158,11 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { trainerType: TrainerType.VICKY, pokemonConfigs: [ { - species: getPokemonSpecies(Species.MEDICHAM), + species: getPokemonSpecies(SpeciesId.MEDICHAM), isBoss: false, formIndex: 1, nature: Nature.IMPISH, - moveSet: [Moves.AXE_KICK, Moves.ICE_PUNCH, Moves.ZEN_HEADBUTT, Moves.BULLET_PUNCH], + moveSet: [MoveId.AXE_KICK, MoveId.ICE_PUNCH, MoveId.ZEN_HEADBUTT, MoveId.BULLET_PUNCH], modifierConfigs: expect.any(Array), }, ], @@ -169,27 +171,27 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { trainerType: TrainerType.VIVI, pokemonConfigs: [ { - species: getPokemonSpecies(Species.SEAKING), + species: getPokemonSpecies(SpeciesId.SEAKING), isBoss: false, abilityIndex: 3, // Lightning Rod nature: Nature.ADAMANT, - moveSet: [Moves.WATERFALL, Moves.MEGAHORN, Moves.KNOCK_OFF, Moves.REST], + moveSet: [MoveId.WATERFALL, MoveId.MEGAHORN, MoveId.KNOCK_OFF, MoveId.REST], modifierConfigs: expect.any(Array), }, { - species: getPokemonSpecies(Species.BRELOOM), + species: getPokemonSpecies(SpeciesId.BRELOOM), isBoss: false, abilityIndex: 1, // Poison Heal nature: Nature.JOLLY, - moveSet: [Moves.SPORE, Moves.SWORDS_DANCE, Moves.SEED_BOMB, Moves.DRAIN_PUNCH], + moveSet: [MoveId.SPORE, MoveId.SWORDS_DANCE, MoveId.SEED_BOMB, MoveId.DRAIN_PUNCH], modifierConfigs: expect.any(Array), }, { - species: getPokemonSpecies(Species.CAMERUPT), + species: getPokemonSpecies(SpeciesId.CAMERUPT), isBoss: false, formIndex: 1, nature: Nature.CALM, - moveSet: [Moves.EARTH_POWER, Moves.FIRE_BLAST, Moves.YAWN, Moves.PROTECT], + moveSet: [MoveId.EARTH_POWER, MoveId.FIRE_BLAST, MoveId.YAWN, MoveId.PROTECT], modifierConfigs: expect.any(Array), }, ], @@ -198,19 +200,19 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { trainerType: TrainerType.VICTORIA, pokemonConfigs: [ { - species: getPokemonSpecies(Species.ROSERADE), + species: getPokemonSpecies(SpeciesId.ROSERADE), isBoss: false, abilityIndex: 0, // Natural Cure nature: Nature.CALM, - moveSet: [Moves.SYNTHESIS, Moves.SLUDGE_BOMB, Moves.GIGA_DRAIN, Moves.SLEEP_POWDER], + moveSet: [MoveId.SYNTHESIS, MoveId.SLUDGE_BOMB, MoveId.GIGA_DRAIN, MoveId.SLEEP_POWDER], modifierConfigs: expect.any(Array), }, { - species: getPokemonSpecies(Species.GARDEVOIR), + species: getPokemonSpecies(SpeciesId.GARDEVOIR), isBoss: false, formIndex: 1, nature: Nature.TIMID, - moveSet: [Moves.PSYSHOCK, Moves.MOONBLAST, Moves.SHADOW_BALL, Moves.WILL_O_WISP], + moveSet: [MoveId.PSYSHOCK, MoveId.MOONBLAST, MoveId.SHADOW_BALL, MoveId.WILL_O_WISP], modifierConfigs: expect.any(Array), }, ], @@ -219,19 +221,19 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { trainerType: TrainerType.VICTOR, pokemonConfigs: [ { - species: getPokemonSpecies(Species.SWELLOW), + species: getPokemonSpecies(SpeciesId.SWELLOW), isBoss: false, abilityIndex: 0, // Guts nature: Nature.ADAMANT, - moveSet: [Moves.FACADE, Moves.BRAVE_BIRD, Moves.PROTECT, Moves.QUICK_ATTACK], + moveSet: [MoveId.FACADE, MoveId.BRAVE_BIRD, MoveId.PROTECT, MoveId.QUICK_ATTACK], modifierConfigs: expect.any(Array), }, { - species: getPokemonSpecies(Species.OBSTAGOON), + species: getPokemonSpecies(SpeciesId.OBSTAGOON), isBoss: false, abilityIndex: 1, // Guts nature: Nature.ADAMANT, - moveSet: [Moves.FACADE, Moves.OBSTRUCT, Moves.NIGHT_SLASH, Moves.FIRE_PUNCH], + moveSet: [MoveId.FACADE, MoveId.OBSTRUCT, MoveId.NIGHT_SLASH, MoveId.FIRE_PUNCH], modifierConfigs: expect.any(Array), }, ], diff --git a/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts b/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts index 2f910a9250f..94011b4b01d 100644 --- a/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts +++ b/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts @@ -9,9 +9,9 @@ import { generateModifierType, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { getPokemonSpecies } from "#app/data/pokemon-species"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import { PokemonMove } from "#app/field/pokemon"; import { HealShopCostModifier, HitHealModifier, TurnHealModifier } from "#app/modifier/modifier"; import { ModifierTier } from "#app/modifier/modifier-tier"; @@ -22,7 +22,7 @@ import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import { UiMode } from "#enums/ui-mode"; import * as Utils from "#app/utils/common"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { @@ -34,8 +34,8 @@ import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/trashToTreasure"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("Trash to Treasure - Mystery Encounter", () => { @@ -56,7 +56,7 @@ describe("Trash to Treasure - Mystery Encounter", () => { game.override.disableTrainerWaves(); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([[Biome.CAVE, [MysteryEncounterType.TRASH_TO_TREASURE]]]), + new Map([[BiomeId.CAVE, [MysteryEncounterType.TRASH_TO_TREASURE]]]), ); }); @@ -93,14 +93,14 @@ describe("Trash to Treasure - Mystery Encounter", () => { TrashToTreasureEncounter.populateDialogueTokensFromRequirements(); const onInitResult = onInit!(); - const bossSpecies = getPokemonSpecies(Species.GARBODOR); + const bossSpecies = getPokemonSpecies(SpeciesId.GARBODOR); const pokemonConfig: EnemyPokemonConfig = { species: bossSpecies, isBoss: true, shiny: false, // Shiny lock because of custom intro sprite formIndex: 1, // Gmax bossSegmentModifier: 1, // +1 Segment from normal - moveSet: [Moves.GUNK_SHOT, Moves.STOMPING_TANTRUM, Moves.HAMMER_ARM, Moves.PAYBACK], + moveSet: [MoveId.GUNK_SHOT, MoveId.STOMPING_TANTRUM, MoveId.HAMMER_ARM, MoveId.PAYBACK], modifierConfigs: [ { modifier: generateModifierType(modifierTypes.BERRY) as PokemonHeldItemModifierType, @@ -223,19 +223,19 @@ describe("Trash to Treasure - Mystery Encounter", () => { const enemyField = scene.getEnemyField(); expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); - expect(enemyField[0].species.speciesId).toBe(Species.GARBODOR); + expect(enemyField[0].species.speciesId).toBe(SpeciesId.GARBODOR); expect(enemyField[0].moveset).toEqual([ - new PokemonMove(Moves.GUNK_SHOT), - new PokemonMove(Moves.STOMPING_TANTRUM), - new PokemonMove(Moves.HAMMER_ARM), - new PokemonMove(Moves.PAYBACK), + new PokemonMove(MoveId.GUNK_SHOT), + new PokemonMove(MoveId.STOMPING_TANTRUM), + new PokemonMove(MoveId.HAMMER_ARM), + new PokemonMove(MoveId.PAYBACK), ]); // Should have used moves pre-battle const movePhases = phaseSpy.mock.calls.filter(p => p[0] instanceof MovePhase).map(p => p[0]); expect(movePhases.length).toBe(2); - expect(movePhases.filter(p => (p as MovePhase).move.moveId === Moves.TOXIC).length).toBe(1); - expect(movePhases.filter(p => (p as MovePhase).move.moveId === Moves.STOCKPILE).length).toBe(1); + expect(movePhases.filter(p => (p as MovePhase).move.moveId === MoveId.TOXIC).length).toBe(1); + expect(movePhases.filter(p => (p as MovePhase).move.moveId === MoveId.STOCKPILE).length).toBe(1); }); it("should have 2 Rogue, 1 Ultra, 1 Great in rewards", async () => { diff --git a/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts b/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts index 452dfcf3784..4fb0a231853 100644 --- a/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts +++ b/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts @@ -1,14 +1,14 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, } from "#test/mystery-encounter/encounter-test-utils"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import type BattleScene from "#app/battle-scene"; import { PokemonMove } from "#app/field/pokemon"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; @@ -27,11 +27,11 @@ import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; import type { BerryModifier } from "#app/modifier/modifier"; import { modifierTypes } from "#app/modifier/modifier-type"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; const namespace = "mysteryEncounters/uncommonBreed"; -const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("Uncommon Breed - Mystery Encounter", () => { @@ -52,11 +52,11 @@ describe("Uncommon Breed - Mystery Encounter", () => { .startingWave(defaultWave) .startingBiome(defaultBiome) .disableTrainerWaves() - .enemyAbility(Abilities.BALL_FETCH) - .enemyPassiveAbility(Abilities.BALL_FETCH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyPassiveAbility(AbilityId.BALL_FETCH); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([[Biome.CAVE, [MysteryEncounterType.UNCOMMON_BREED]]]), + new Map([[BiomeId.CAVE, [MysteryEncounterType.UNCOMMON_BREED]]]), ); }); @@ -133,7 +133,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { // Should have used its egg move pre-battle const movePhases = phaseSpy.mock.calls.filter(p => p[0] instanceof MovePhase).map(p => p[0]); expect(movePhases.length).toBe(1); - const eggMoves: Moves[] = speciesEggMoves[getPokemonSpecies(speciesToSpawn).getRootSpeciesId()]; + const eggMoves: MoveId[] = speciesEggMoves[getPokemonSpecies(speciesToSpawn).getRootSpeciesId()]; const usedMove = (movePhases[0] as MovePhase).move.moveId; expect(eggMoves.includes(usedMove)).toBe(true); }); @@ -160,7 +160,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { // Should have used its egg move pre-battle const movePhases = phaseSpy.mock.calls.filter(p => p[0] instanceof MovePhase).map(p => p[0]); expect(movePhases.length).toBe(1); - const eggMoves: Moves[] = speciesEggMoves[getPokemonSpecies(speciesToSpawn).getRootSpeciesId()]; + const eggMoves: MoveId[] = speciesEggMoves[getPokemonSpecies(speciesToSpawn).getRootSpeciesId()]; const usedMove = (movePhases[0] as MovePhase).move.moveId; expect(eggMoves.includes(usedMove)).toBe(true); }); @@ -272,7 +272,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { const leaveEncounterWithoutBattleSpy = vi.spyOn(EncounterPhaseUtils, "leaveEncounterWithoutBattle"); await game.runToMysteryEncounter(MysteryEncounterType.UNCOMMON_BREED, defaultParty); // Mock moveset - scene.getPlayerParty()[0].moveset = [new PokemonMove(Moves.CHARM)]; + scene.getPlayerParty()[0].moveset = [new PokemonMove(MoveId.CHARM)]; await runMysteryEncounterToEnd(game, 3); expect(leaveEncounterWithoutBattleSpy).toBeCalled(); diff --git a/test/mystery-encounter/encounters/weird-dream-encounter.test.ts b/test/mystery-encounter/encounters/weird-dream-encounter.test.ts index f51ab45e4d4..163a15a715f 100644 --- a/test/mystery-encounter/encounters/weird-dream-encounter.test.ts +++ b/test/mystery-encounter/encounters/weird-dream-encounter.test.ts @@ -1,7 +1,7 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { Biome } from "#app/enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; @@ -22,8 +22,8 @@ import { CommandPhase } from "#app/phases/command-phase"; import { ModifierTier } from "#app/modifier/modifier-tier"; const namespace = "mysteryEncounters/weirdDream"; -const defaultParty = [Species.MAGBY, Species.HAUNTER, Species.ABRA]; -const defaultBiome = Biome.CAVE; +const defaultParty = [SpeciesId.MAGBY, SpeciesId.HAUNTER, SpeciesId.ABRA]; +const defaultBiome = BiomeId.CAVE; const defaultWave = 45; describe("Weird Dream - Mystery Encounter", () => { @@ -47,7 +47,7 @@ describe("Weird Dream - Mystery Encounter", () => { ); vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue( - new Map([[Biome.CAVE, [MysteryEncounterType.WEIRD_DREAM]]]), + new Map([[BiomeId.CAVE, [MysteryEncounterType.WEIRD_DREAM]]]), ); }); diff --git a/test/mystery-encounter/mystery-encounter-utils.test.ts b/test/mystery-encounter/mystery-encounter-utils.test.ts index 1c4a2cf89bd..cd29a203e62 100644 --- a/test/mystery-encounter/mystery-encounter-utils.test.ts +++ b/test/mystery-encounter/mystery-encounter-utils.test.ts @@ -18,7 +18,7 @@ import { getPokemonSpecies } from "#app/data/pokemon-species"; import { PokemonType } from "#enums/pokemon-type"; import { MessagePhase } from "#app/phases/message-phase"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; import Phaser from "phaser"; @@ -42,7 +42,7 @@ describe("Mystery Encounter Utils", () => { beforeEach(() => { game = new GameManager(phaserGame); scene = game.scene; - initSceneWithoutEncounterPhase(game.scene, [Species.ARCEUS, Species.MANAPHY]); + initSceneWithoutEncounterPhase(game.scene, [SpeciesId.ARCEUS, SpeciesId.MANAPHY]); }); describe("getRandomPlayerPokemon", () => { @@ -51,12 +51,12 @@ describe("Mystery Encounter Utils", () => { game.override.seed("random"); let result = getRandomPlayerPokemon(); - expect(result.species.speciesId).toBe(Species.MANAPHY); + expect(result.species.speciesId).toBe(SpeciesId.MANAPHY); game.override.seed("random2"); result = getRandomPlayerPokemon(); - expect(result.species.speciesId).toBe(Species.ARCEUS); + expect(result.species.speciesId).toBe(SpeciesId.ARCEUS); }); it("gets a fainted pokemon from player party if isAllowedInBattle is false", async () => { @@ -71,12 +71,12 @@ describe("Mystery Encounter Utils", () => { game.override.seed("random"); let result = getRandomPlayerPokemon(); - expect(result.species.speciesId).toBe(Species.MANAPHY); + expect(result.species.speciesId).toBe(SpeciesId.MANAPHY); game.override.seed("random2"); result = getRandomPlayerPokemon(); - expect(result.species.speciesId).toBe(Species.ARCEUS); + expect(result.species.speciesId).toBe(SpeciesId.ARCEUS); }); it("gets an unfainted legal pokemon from player party if isAllowed is true and isFainted is false", async () => { @@ -90,12 +90,12 @@ describe("Mystery Encounter Utils", () => { game.override.seed("random"); let result = getRandomPlayerPokemon(true); - expect(result.species.speciesId).toBe(Species.MANAPHY); + expect(result.species.speciesId).toBe(SpeciesId.MANAPHY); game.override.seed("random2"); result = getRandomPlayerPokemon(true); - expect(result.species.speciesId).toBe(Species.MANAPHY); + expect(result.species.speciesId).toBe(SpeciesId.MANAPHY); }); it("returns last unfainted pokemon if doNotReturnLastAbleMon is false", async () => { @@ -109,12 +109,12 @@ describe("Mystery Encounter Utils", () => { game.override.seed("random"); let result = getRandomPlayerPokemon(true, false); - expect(result.species.speciesId).toBe(Species.MANAPHY); + expect(result.species.speciesId).toBe(SpeciesId.MANAPHY); game.override.seed("random2"); result = getRandomPlayerPokemon(true, false); - expect(result.species.speciesId).toBe(Species.MANAPHY); + expect(result.species.speciesId).toBe(SpeciesId.MANAPHY); }); it("never returns last unfainted pokemon if doNotReturnLastAbleMon is true", async () => { @@ -128,12 +128,12 @@ describe("Mystery Encounter Utils", () => { game.override.seed("random"); let result = getRandomPlayerPokemon(true, false, true); - expect(result.species.speciesId).toBe(Species.ARCEUS); + expect(result.species.speciesId).toBe(SpeciesId.ARCEUS); game.override.seed("random2"); result = getRandomPlayerPokemon(true, false, true); - expect(result.species.speciesId).toBe(Species.ARCEUS); + expect(result.species.speciesId).toBe(SpeciesId.ARCEUS); }); }); @@ -143,7 +143,7 @@ describe("Mystery Encounter Utils", () => { party[0].level = 100; const result = getHighestLevelPlayerPokemon(); - expect(result.species.speciesId).toBe(Species.ARCEUS); + expect(result.species.speciesId).toBe(SpeciesId.ARCEUS); }); it("gets highest level pokemon at different index", () => { @@ -151,7 +151,7 @@ describe("Mystery Encounter Utils", () => { party[1].level = 100; const result = getHighestLevelPlayerPokemon(); - expect(result.species.speciesId).toBe(Species.MANAPHY); + expect(result.species.speciesId).toBe(SpeciesId.MANAPHY); }); it("breaks ties by getting returning lower index", () => { @@ -160,7 +160,7 @@ describe("Mystery Encounter Utils", () => { party[1].level = 100; const result = getHighestLevelPlayerPokemon(); - expect(result.species.speciesId).toBe(Species.ARCEUS); + expect(result.species.speciesId).toBe(SpeciesId.ARCEUS); }); it("returns highest level unfainted if unfainted is true", async () => { @@ -172,7 +172,7 @@ describe("Mystery Encounter Utils", () => { party[1].level = 10; const result = getHighestLevelPlayerPokemon(true); - expect(result.species.speciesId).toBe(Species.MANAPHY); + expect(result.species.speciesId).toBe(SpeciesId.MANAPHY); }); }); @@ -182,7 +182,7 @@ describe("Mystery Encounter Utils", () => { party[0].level = 100; const result = getLowestLevelPlayerPokemon(); - expect(result.species.speciesId).toBe(Species.MANAPHY); + expect(result.species.speciesId).toBe(SpeciesId.MANAPHY); }); it("gets lowest level pokemon at different index", () => { @@ -190,7 +190,7 @@ describe("Mystery Encounter Utils", () => { party[1].level = 100; const result = getLowestLevelPlayerPokemon(); - expect(result.species.speciesId).toBe(Species.ARCEUS); + expect(result.species.speciesId).toBe(SpeciesId.ARCEUS); }); it("breaks ties by getting returning lower index", () => { @@ -199,7 +199,7 @@ describe("Mystery Encounter Utils", () => { party[1].level = 100; const result = getLowestLevelPlayerPokemon(); - expect(result.species.speciesId).toBe(Species.ARCEUS); + expect(result.species.speciesId).toBe(SpeciesId.ARCEUS); }); it("returns lowest level unfainted if unfainted is true", async () => { @@ -211,7 +211,7 @@ describe("Mystery Encounter Utils", () => { party[1].level = 100; const result = getLowestLevelPlayerPokemon(true); - expect(result.species.speciesId).toBe(Species.MANAPHY); + expect(result.species.speciesId).toBe(SpeciesId.MANAPHY); }); }); @@ -236,23 +236,23 @@ describe("Mystery Encounter Utils", () => { it("excludes species from search", () => { // Only 9 tiers are: Kyogre, Groudon, Rayquaza, Arceus, Zacian, Koraidon, Miraidon, Terapagos const result = getRandomSpeciesByStarterCost(9, [ - Species.KYOGRE, - Species.GROUDON, - Species.RAYQUAZA, - Species.ARCEUS, - Species.KORAIDON, - Species.MIRAIDON, - Species.TERAPAGOS, + SpeciesId.KYOGRE, + SpeciesId.GROUDON, + SpeciesId.RAYQUAZA, + SpeciesId.ARCEUS, + SpeciesId.KORAIDON, + SpeciesId.MIRAIDON, + SpeciesId.TERAPAGOS, ]); const pokeSpecies = getPokemonSpecies(result); - expect(pokeSpecies.speciesId).toBe(Species.ZACIAN); + expect(pokeSpecies.speciesId).toBe(SpeciesId.ZACIAN); }); it("gets species of specified types", () => { // Only 9 tiers are: Kyogre, Groudon, Rayquaza, Arceus, Zacian, Koraidon, Miraidon, Terapagos const result = getRandomSpeciesByStarterCost(9, undefined, [PokemonType.GROUND]); const pokeSpecies = getPokemonSpecies(result); - expect(pokeSpecies.speciesId).toBe(Species.GROUDON); + expect(pokeSpecies.speciesId).toBe(SpeciesId.GROUDON); }); }); diff --git a/test/mystery-encounter/mystery-encounter.test.ts b/test/mystery-encounter/mystery-encounter.test.ts index c9d31f28717..19dd17d5381 100644 --- a/test/mystery-encounter/mystery-encounter.test.ts +++ b/test/mystery-encounter/mystery-encounter.test.ts @@ -1,7 +1,7 @@ import { afterEach, beforeAll, beforeEach, expect, describe, it } from "vitest"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import type BattleScene from "#app/battle-scene"; @@ -30,8 +30,8 @@ describe("Mystery Encounters", () => { it("Spawns a mystery encounter", async () => { await game.runToMysteryEncounter(MysteryEncounterType.MYSTERIOUS_CHALLENGERS, [ - Species.CHARIZARD, - Species.VOLCARONA, + SpeciesId.CHARIZARD, + SpeciesId.VOLCARONA, ]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); diff --git a/test/phases/form-change-phase.test.ts b/test/phases/form-change-phase.test.ts index 974c64d9e5a..8531375a48b 100644 --- a/test/phases/form-change-phase.test.ts +++ b/test/phases/form-change-phase.test.ts @@ -1,6 +1,6 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -25,17 +25,17 @@ describe("Form Change Phase", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemySpecies(Species.MAGIKARP) - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); it("Zacian should successfully change into Crowned form", async () => { - await game.classicMode.startBattle([Species.ZACIAN]); + await game.classicMode.startBattle([SpeciesId.ZACIAN]); // Before the form change: Should be Hero form const zacian = game.scene.getPlayerParty()[0]; @@ -48,7 +48,7 @@ describe("Form Change Phase", () => { const rustedSword = rustedSwordType.newModifier(zacian); await game.scene.addModifier(rustedSword); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.toNextTurn(); // After the form change: Should be Crowned form diff --git a/test/phases/frenzy-move-reset.test.ts b/test/phases/frenzy-move-reset.test.ts index 6d3ec767722..1879a14d301 100644 --- a/test/phases/frenzy-move-reset.test.ts +++ b/test/phases/frenzy-move-reset.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; import { StatusEffect } from "#enums/status-effect"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; @@ -27,13 +27,13 @@ describe("Frenzy Move Reset", () => { game.override .battleStyle("single") .disableCrits() - .starterSpecies(Species.MAGIKARP) - .moveset(Moves.THRASH) + .starterSpecies(SpeciesId.MAGIKARP) + .moveset(MoveId.THRASH) .statusEffect(StatusEffect.PARALYSIS) - .enemyMoveset(Moves.SPLASH) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(100) - .enemySpecies(Species.SHUCKLE) - .enemyAbility(Abilities.BALL_FETCH); + .enemySpecies(SpeciesId.SHUCKLE) + .enemyAbility(AbilityId.BALL_FETCH); }); /* @@ -54,7 +54,7 @@ describe("Frenzy Move Reset", () => { const playerPokemon = game.scene.getPlayerPokemon()!; - game.move.select(Moves.THRASH); + game.move.select(MoveId.THRASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceStatusActivation(false); await game.toNextTurn(); diff --git a/test/phases/game-over-phase.test.ts b/test/phases/game-over-phase.test.ts index 40473a022cb..c430223b774 100644 --- a/test/phases/game-over-phase.test.ts +++ b/test/phases/game-over-phase.test.ts @@ -1,7 +1,7 @@ -import { Biome } from "#enums/biome"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { BiomeId } from "#enums/biome-id"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -25,28 +25,28 @@ describe("Game Over Phase", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.MEMENTO, Moves.ICE_BEAM, Moves.SPLASH]) - .ability(Abilities.BALL_FETCH) + .moveset([MoveId.MEMENTO, MoveId.ICE_BEAM, MoveId.SPLASH]) + .ability(AbilityId.BALL_FETCH) .battleStyle("single") .disableCrits() - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) .startingWave(200) - .startingBiome(Biome.END) + .startingBiome(BiomeId.END) .startingLevel(10000); }); it("winning a run should give rewards", async () => { - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); vi.spyOn(game.scene, "validateAchv"); // Note: `game.doKillOpponents()` does not properly handle final boss // Final boss phase 1 - game.move.select(Moves.ICE_BEAM); + game.move.select(MoveId.ICE_BEAM); await game.toNextTurn(); // Final boss phase 2 - game.move.select(Moves.ICE_BEAM); + game.move.select(MoveId.ICE_BEAM); await game.phaseInterceptor.to("PostGameOverPhase", false); // The game refused to actually give the vouchers during tests, @@ -60,10 +60,10 @@ describe("Game Over Phase", () => { }); it("losing a run should not give rewards", async () => { - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); vi.spyOn(game.scene, "validateAchv"); - game.move.select(Moves.MEMENTO); + game.move.select(MoveId.MEMENTO); await game.phaseInterceptor.to("PostGameOverPhase", false); expect(game.phaseInterceptor.log.includes("GameOverPhase")).toBe(true); diff --git a/test/phases/learn-move-phase.test.ts b/test/phases/learn-move-phase.test.ts index b8b718a9669..88b8187069b 100644 --- a/test/phases/learn-move-phase.test.ts +++ b/test/phases/learn-move-phase.test.ts @@ -1,8 +1,8 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/testUtils/gameManager"; -import { Species } from "#enums/species"; -import { Moves } from "#enums/moves"; +import { SpeciesId } from "#enums/species-id"; +import { MoveId } from "#enums/move-id"; import { LearnMovePhase } from "#app/phases/learn-move-phase"; import { UiMode } from "#enums/ui-mode"; import { Button } from "#app/enums/buttons"; @@ -27,11 +27,11 @@ describe("Learn Move Phase", () => { }); it("If Pokemon has less than 4 moves, its newest move will be added to the lowest empty index", async () => { - game.override.moveset([Moves.SPLASH]); - await game.classicMode.startBattle([Species.BULBASAUR]); + game.override.moveset([MoveId.SPLASH]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const pokemon = game.scene.getPlayerPokemon()!; const newMovePos = pokemon?.getMoveset().length; - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to(LearnMovePhase); const levelMove = pokemon.getLevelMoves(5)[0]; @@ -42,13 +42,13 @@ describe("Learn Move Phase", () => { }); it("If a pokemon has 4 move slots filled, the chosen move will be deleted and replaced", async () => { - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const bulbasaur = game.scene.getPlayerPokemon()!; - const prevMoveset = [Moves.SPLASH, Moves.ABSORB, Moves.ACID, Moves.VINE_WHIP]; + const prevMoveset = [MoveId.SPLASH, MoveId.ABSORB, MoveId.ACID, MoveId.VINE_WHIP]; const moveSlotNum = 3; game.move.changeMoveset(bulbasaur, prevMoveset); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); // queue up inputs to confirm dialog boxes @@ -67,18 +67,18 @@ describe("Learn Move Phase", () => { expect(bulbasaur.level).toBeGreaterThanOrEqual(levelReq); // Check each of mr mime's moveslots to make sure the changed move (and ONLY the changed move) is different bulbasaur.getMoveset().forEach((move, index) => { - const expectedMove: Moves = index === moveSlotNum ? levelMoveId : prevMoveset[index]; + const expectedMove: MoveId = index === moveSlotNum ? levelMoveId : prevMoveset[index]; expect(move?.moveId).toBe(expectedMove); }); }); it("selecting the newly deleted move will reject it and keep old moveset", async () => { - await game.classicMode.startBattle([Species.BULBASAUR]); + await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const bulbasaur = game.scene.getPlayerPokemon()!; - const prevMoveset = [Moves.SPLASH, Moves.ABSORB, Moves.ACID, Moves.VINE_WHIP]; + const prevMoveset = [MoveId.SPLASH, MoveId.ABSORB, MoveId.ACID, MoveId.VINE_WHIP]; - game.move.changeMoveset(bulbasaur, [Moves.SPLASH, Moves.ABSORB, Moves.ACID, Moves.VINE_WHIP]); - game.move.select(Moves.SPLASH); + game.move.changeMoveset(bulbasaur, [MoveId.SPLASH, MoveId.ABSORB, MoveId.ACID, MoveId.VINE_WHIP]); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); // queue up inputs to confirm dialog boxes diff --git a/test/phases/mystery-encounter-phase.test.ts b/test/phases/mystery-encounter-phase.test.ts index 34078b65039..ece5a221e00 100644 --- a/test/phases/mystery-encounter-phase.test.ts +++ b/test/phases/mystery-encounter-phase.test.ts @@ -1,7 +1,7 @@ import { afterEach, beforeAll, beforeEach, expect, describe, it, vi } from "vitest"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { MysteryEncounterOptionSelectedPhase, MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { UiMode } from "#enums/ui-mode"; import { Button } from "#enums/buttons"; @@ -36,8 +36,8 @@ describe("Mystery Encounter Phases", () => { describe("MysteryEncounterPhase", () => { it("Runs to MysteryEncounterPhase", async () => { await game.runToMysteryEncounter(MysteryEncounterType.MYSTERIOUS_CHALLENGERS, [ - Species.CHARIZARD, - Species.VOLCARONA, + SpeciesId.CHARIZARD, + SpeciesId.VOLCARONA, ]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); @@ -46,8 +46,8 @@ describe("Mystery Encounter Phases", () => { it("Runs MysteryEncounterPhase", async () => { await game.runToMysteryEncounter(MysteryEncounterType.MYSTERIOUS_CHALLENGERS, [ - Species.CHARIZARD, - Species.VOLCARONA, + SpeciesId.CHARIZARD, + SpeciesId.VOLCARONA, ]); game.onNextPrompt("MysteryEncounterPhase", UiMode.MYSTERY_ENCOUNTER, () => { @@ -69,8 +69,8 @@ describe("Mystery Encounter Phases", () => { vi.spyOn(ui, "showDialogue"); vi.spyOn(ui, "showText"); await game.runToMysteryEncounter(MysteryEncounterType.MYSTERIOUS_CHALLENGERS, [ - Species.CHARIZARD, - Species.VOLCARONA, + SpeciesId.CHARIZARD, + SpeciesId.VOLCARONA, ]); game.onNextPrompt("MysteryEncounterPhase", UiMode.MESSAGE, () => { diff --git a/test/phases/select-modifier-phase.test.ts b/test/phases/select-modifier-phase.test.ts index 85f8b472c4a..72496d5f17b 100644 --- a/test/phases/select-modifier-phase.test.ts +++ b/test/phases/select-modifier-phase.test.ts @@ -8,10 +8,10 @@ import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import { UiMode } from "#enums/ui-mode"; import { shiftCharCodes } from "#app/utils/common"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { Button } from "#enums/buttons"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; import Phaser from "phaser"; @@ -33,10 +33,10 @@ describe("SelectModifierPhase", () => { scene = game.scene; game.override - .moveset([Moves.FISSURE, Moves.SPLASH]) - .ability(Abilities.NO_GUARD) + .moveset([MoveId.FISSURE, MoveId.SPLASH]) + .ability(AbilityId.NO_GUARD) .startingLevel(200) - .enemySpecies(Species.MAGIKARP); + .enemySpecies(SpeciesId.MAGIKARP); }); afterEach(() => { @@ -46,7 +46,7 @@ describe("SelectModifierPhase", () => { }); it("should start a select modifier phase", async () => { - initSceneWithoutEncounterPhase(scene, [Species.ABRA, Species.VOLCARONA]); + initSceneWithoutEncounterPhase(scene, [SpeciesId.ABRA, SpeciesId.VOLCARONA]); const selectModifierPhase = new SelectModifierPhase(); scene.unshiftPhase(selectModifierPhase); await game.phaseInterceptor.to(SelectModifierPhase); @@ -55,8 +55,8 @@ describe("SelectModifierPhase", () => { }); it("should generate random modifiers", async () => { - await game.classicMode.startBattle([Species.ABRA, Species.VOLCARONA]); - game.move.select(Moves.FISSURE); + await game.classicMode.startBattle([SpeciesId.ABRA, SpeciesId.VOLCARONA]); + game.move.select(MoveId.FISSURE); await game.phaseInterceptor.to("SelectModifierPhase"); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -67,7 +67,7 @@ describe("SelectModifierPhase", () => { }); it("should modify reroll cost", async () => { - initSceneWithoutEncounterPhase(scene, [Species.ABRA, Species.VOLCARONA]); + initSceneWithoutEncounterPhase(scene, [SpeciesId.ABRA, SpeciesId.VOLCARONA]); const options = [ new ModifierTypeOption(modifierTypes.POTION(), 0, 100), new ModifierTypeOption(modifierTypes.ETHER(), 0, 400), @@ -88,11 +88,11 @@ describe("SelectModifierPhase", () => { }); it.todo("should generate random modifiers from reroll", async () => { - await game.classicMode.startBattle([Species.ABRA, Species.VOLCARONA]); + await game.classicMode.startBattle([SpeciesId.ABRA, SpeciesId.VOLCARONA]); scene.money = 1000000; scene.shopCursorTarget = 0; - game.move.select(Moves.FISSURE); + game.move.select(MoveId.FISSURE); await game.phaseInterceptor.to("SelectModifierPhase"); // TODO: nagivate the ui to reroll somehow @@ -112,7 +112,7 @@ describe("SelectModifierPhase", () => { it.todo("should generate random modifiers of same tier for reroll with reroll lock", async () => { game.override.startingModifier([{ name: "LOCK_CAPSULE" }]); - await game.classicMode.startBattle([Species.ABRA, Species.VOLCARONA]); + await game.classicMode.startBattle([SpeciesId.ABRA, SpeciesId.VOLCARONA]); scene.money = 1000000; // Just use fully random seed for this test vi.spyOn(scene, "resetSeed").mockImplementation(() => { @@ -122,7 +122,7 @@ describe("SelectModifierPhase", () => { scene.rngCounter = 0; }); - game.move.select(Moves.FISSURE); + game.move.select(MoveId.FISSURE); await game.phaseInterceptor.to("SelectModifierPhase"); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -152,7 +152,7 @@ describe("SelectModifierPhase", () => { }); it("should generate custom modifiers", async () => { - await game.classicMode.startBattle([Species.ABRA, Species.VOLCARONA]); + await game.classicMode.startBattle([SpeciesId.ABRA, SpeciesId.VOLCARONA]); scene.money = 1000000; const customModifiers: CustomModifierSettings = { guaranteedModifierTypeFuncs: [ @@ -165,7 +165,7 @@ describe("SelectModifierPhase", () => { }; const selectModifierPhase = new SelectModifierPhase(0, undefined, customModifiers); scene.unshiftPhase(selectModifierPhase); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("SelectModifierPhase"); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -181,7 +181,7 @@ describe("SelectModifierPhase", () => { }); it("should generate custom modifier tiers that can upgrade from luck", async () => { - await game.classicMode.startBattle([Species.ABRA, Species.VOLCARONA]); + await game.classicMode.startBattle([SpeciesId.ABRA, SpeciesId.VOLCARONA]); scene.money = 1000000; const customModifiers: CustomModifierSettings = { guaranteedModifierTiers: [ @@ -192,7 +192,7 @@ describe("SelectModifierPhase", () => { ModifierTier.MASTER, ], }; - const pokemon = new PlayerPokemon(getPokemonSpecies(Species.BULBASAUR), 10, undefined, 0, undefined, true, 2); + const pokemon = new PlayerPokemon(getPokemonSpecies(SpeciesId.BULBASAUR), 10, undefined, 0, undefined, true, 2); // Fill party with max shinies while (scene.getPlayerParty().length > 0) { @@ -202,7 +202,7 @@ describe("SelectModifierPhase", () => { const selectModifierPhase = new SelectModifierPhase(0, undefined, customModifiers); scene.unshiftPhase(selectModifierPhase); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("SelectModifierPhase"); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -233,7 +233,7 @@ describe("SelectModifierPhase", () => { }); it("should generate custom modifiers and modifier tiers together", async () => { - await game.classicMode.startBattle([Species.ABRA, Species.VOLCARONA]); + await game.classicMode.startBattle([SpeciesId.ABRA, SpeciesId.VOLCARONA]); scene.money = 1000000; const customModifiers: CustomModifierSettings = { guaranteedModifierTypeFuncs: [modifierTypes.MEMORY_MUSHROOM, modifierTypes.TM_COMMON], @@ -241,7 +241,7 @@ describe("SelectModifierPhase", () => { }; const selectModifierPhase = new SelectModifierPhase(0, undefined, customModifiers); scene.unshiftPhase(selectModifierPhase); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -256,7 +256,7 @@ describe("SelectModifierPhase", () => { }); it("should fill remaining modifiers if fillRemaining is true with custom modifiers", async () => { - await game.classicMode.startBattle([Species.ABRA, Species.VOLCARONA]); + await game.classicMode.startBattle([SpeciesId.ABRA, SpeciesId.VOLCARONA]); scene.money = 1000000; const customModifiers: CustomModifierSettings = { guaranteedModifierTypeFuncs: [modifierTypes.MEMORY_MUSHROOM], @@ -265,7 +265,7 @@ describe("SelectModifierPhase", () => { }; const selectModifierPhase = new SelectModifierPhase(0, undefined, customModifiers); scene.unshiftPhase(selectModifierPhase); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/reload.test.ts b/test/reload.test.ts index 93823e06cce..6c535ca4722 100644 --- a/test/reload.test.ts +++ b/test/reload.test.ts @@ -2,10 +2,10 @@ import { GameModes } from "#app/game-mode"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; import type OptionSelectUiHandler from "#app/ui/settings/option-select-ui-handler"; import { UiMode } from "#enums/ui-mode"; -import { Biome } from "#enums/biome"; +import { BiomeId } from "#enums/biome-id"; import { Button } from "#enums/buttons"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import type { MockClock } from "#test/testUtils/mocks/mockClock"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -51,12 +51,12 @@ describe("Reload", () => { .battleStyle("single") .startingLevel(100) // Avoid levelling up .disableTrainerWaves() - .moveset([Moves.SPLASH]) - .enemyMoveset(Moves.SPLASH); + .moveset([MoveId.SPLASH]) + .enemyMoveset(MoveId.SPLASH); await game.dailyMode.startBattle(); // Transition from Wave 10 to Wave 11 in order to trigger biome switch - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); game.onNextPrompt("SelectBiomePhase", UiMode.OPTION_SELECT, () => { (game.scene.time as MockClock).overrideDelay = null; @@ -80,16 +80,16 @@ describe("Reload", () => { it("should not have weather inconsistencies after a biome switch", async () => { game.override .startingWave(10) - .startingBiome(Biome.ICE_CAVE) // Will lead to Snowy Forest with randomly generated weather + .startingBiome(BiomeId.ICE_CAVE) // Will lead to Snowy Forest with randomly generated weather .battleStyle("single") .startingLevel(100) // Avoid levelling up .disableTrainerWaves() - .moveset([Moves.SPLASH]) - .enemyMoveset(Moves.SPLASH); + .moveset([MoveId.SPLASH]) + .enemyMoveset(MoveId.SPLASH); await game.classicMode.startBattle(); // Apparently daily mode would override the biome // Transition from Wave 10 to Wave 11 in order to trigger biome switch - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.toNextWave(); expect(game.phaseInterceptor.log).toContain("NewBiomeEncounterPhase"); @@ -156,7 +156,7 @@ describe("Reload", () => { it("should not have RNG inconsistencies at a Daily run wave 50 Boss fight", async () => { game.override.battleStyle("single").startingWave(50); - await game.runToFinalBossEncounter([Species.BULBASAUR], GameModes.DAILY); + await game.runToFinalBossEncounter([SpeciesId.BULBASAUR], GameModes.DAILY); const preReloadRngState = Phaser.Math.RND.state(); diff --git a/test/system/game_data.test.ts b/test/system/game_data.test.ts index 900fb672320..b9011cd934f 100644 --- a/test/system/game_data.test.ts +++ b/test/system/game_data.test.ts @@ -1,8 +1,8 @@ import * as bypassLoginModule from "#app/global-vars/bypass-login"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; import type { SessionSaveData } from "#app/system/game-data"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -21,10 +21,10 @@ describe("System - Game Data", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.SPLASH]) + .moveset([MoveId.SPLASH]) .battleStyle("single") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); }); afterEach(() => { diff --git a/test/testUtils/gameManager.ts b/test/testUtils/gameManager.ts index 39b6000e308..68d218b3988 100644 --- a/test/testUtils/gameManager.ts +++ b/test/testUtils/gameManager.ts @@ -34,7 +34,7 @@ import { ExpGainsSpeed } from "#enums/exp-gains-speed"; import { ExpNotification } from "#enums/exp-notification"; import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PlayerGender } from "#enums/player-gender"; -import type { Species } from "#enums/species"; +import type { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; import ErrorInterceptor from "#test/testUtils/errorInterceptor"; import { generateStarter, waitUntil } from "#test/testUtils/gameManagerUtils"; @@ -203,7 +203,7 @@ export default class GameManager { * @param species * @param mode */ - async runToFinalBossEncounter(species: Species[], mode: GameModes) { + async runToFinalBossEncounter(species: SpeciesId[], mode: GameModes) { console.log("===to final boss encounter==="); await this.runToTitle(); @@ -232,7 +232,7 @@ export default class GameManager { * @param species Optional array of species for party. * @returns A promise that resolves when the EncounterPhase ends. */ - async runToMysteryEncounter(encounterType?: MysteryEncounterType, species?: Species[]) { + async runToMysteryEncounter(encounterType?: MysteryEncounterType, species?: SpeciesId[]) { if (!isNullOrUndefined(encounterType)) { this.override.disableTrainerWaves(); this.override.mysteryEncounter(encounterType); diff --git a/test/testUtils/gameManagerUtils.ts b/test/testUtils/gameManagerUtils.ts index 9e9c8f15f96..18dd83995a3 100644 --- a/test/testUtils/gameManagerUtils.ts +++ b/test/testUtils/gameManagerUtils.ts @@ -8,8 +8,8 @@ import { PlayerPokemon } from "#app/field/pokemon"; import { GameModes, getGameMode } from "#app/game-mode"; import type { StarterMoveset } from "#app/system/game-data"; import type { Starter } from "#app/ui/starter-select-ui-handler"; -import { Moves } from "#enums/moves"; -import type { Species } from "#enums/species"; +import { MoveId } from "#enums/move-id"; +import type { SpeciesId } from "#enums/species-id"; /** Function to convert Blob to string */ export function blobToString(blob) { @@ -32,7 +32,7 @@ export function holdOn(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } -export function generateStarter(scene: BattleScene, species?: Species[]): Starter[] { +export function generateStarter(scene: BattleScene, species?: SpeciesId[]): Starter[] { const seed = "test"; const starters = getTestRunStarters(seed, species); const startingLevel = scene.gameMode.getStartingLevel(); @@ -52,7 +52,7 @@ export function generateStarter(scene: BattleScene, species?: Species[]): Starte undefined, starter.nature, ); - const moveset: Moves[] = []; + const moveset: MoveId[] = []; starterPokemon.moveset.forEach(move => { moveset.push(move!.getMove().id); }); @@ -61,7 +61,7 @@ export function generateStarter(scene: BattleScene, species?: Species[]): Starte return starters; } -function getTestRunStarters(seed: string, species?: Species[]): Starter[] { +function getTestRunStarters(seed: string, species?: SpeciesId[]): Starter[] { if (!species) { return getDailyRunStarters(seed); } @@ -97,18 +97,18 @@ export function waitUntil(truth): Promise { } /** Get the index of `move` from the moveset of the pokemon on the player's field at location `pokemonIndex` */ -export function getMovePosition(scene: BattleScene, pokemonIndex: 0 | 1, move: Moves): number { +export function getMovePosition(scene: BattleScene, pokemonIndex: 0 | 1, move: MoveId): number { const playerPokemon = scene.getPlayerField()[pokemonIndex]; const moveSet = playerPokemon.getMoveset(); const index = moveSet.findIndex(m => m.moveId === move && m.ppUsed < m.getMovePp()); - console.log(`Move position for ${Moves[move]} (=${move}):`, index); + console.log(`Move position for ${MoveId[move]} (=${move}):`, index); return index; } /** * Useful for populating party, wave index, etc. without having to spin up and run through an entire EncounterPhase */ -export function initSceneWithoutEncounterPhase(scene: BattleScene, species?: Species[]): void { +export function initSceneWithoutEncounterPhase(scene: BattleScene, species?: SpeciesId[]): void { const starters = generateStarter(scene, species); starters.forEach(starter => { const starterProps = scene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); diff --git a/test/testUtils/helpers/challengeModeHelper.ts b/test/testUtils/helpers/challengeModeHelper.ts index 3a4f2adcd09..d0533d3b5ba 100644 --- a/test/testUtils/helpers/challengeModeHelper.ts +++ b/test/testUtils/helpers/challengeModeHelper.ts @@ -1,5 +1,5 @@ import { BattleStyle } from "#app/enums/battle-style"; -import type { Species } from "#app/enums/species"; +import type { SpeciesId } from "#enums/species-id"; import overrides from "#app/overrides"; import { EncounterPhase } from "#app/phases/encounter-phase"; import { SelectStarterPhase } from "#app/phases/select-starter-phase"; @@ -34,7 +34,7 @@ export class ChallengeModeHelper extends GameManagerHelper { * @param gameMode - Optional game mode to set. * @returns A promise that resolves when the summon phase is reached. */ - async runToSummon(species?: Species[]) { + async runToSummon(species?: SpeciesId[]) { await this.game.runToTitle(); if (this.game.override.disableShinies) { @@ -60,7 +60,7 @@ export class ChallengeModeHelper extends GameManagerHelper { * @param species - Optional array of species to start the battle with. * @returns A promise that resolves when the battle is started. */ - async startBattle(species?: Species[]) { + async startBattle(species?: SpeciesId[]) { await this.runToSummon(species); if (this.game.scene.battleStyle === BattleStyle.SWITCH) { diff --git a/test/testUtils/helpers/classicModeHelper.ts b/test/testUtils/helpers/classicModeHelper.ts index 8e1ac95c733..d5f0ceb4072 100644 --- a/test/testUtils/helpers/classicModeHelper.ts +++ b/test/testUtils/helpers/classicModeHelper.ts @@ -1,5 +1,5 @@ import { BattleStyle } from "#app/enums/battle-style"; -import type { Species } from "#app/enums/species"; +import type { SpeciesId } from "#enums/species-id"; import { GameModes, getGameMode } from "#app/game-mode"; import overrides from "#app/overrides"; import { CommandPhase } from "#app/phases/command-phase"; @@ -19,7 +19,7 @@ export class ClassicModeHelper extends GameManagerHelper { * @param species - Optional array of species to summon. * @returns A promise that resolves when the summon phase is reached. */ - async runToSummon(species?: Species[]): Promise { + async runToSummon(species?: SpeciesId[]): Promise { await this.game.runToTitle(); if (this.game.override.disableShinies) { @@ -45,7 +45,7 @@ export class ClassicModeHelper extends GameManagerHelper { * @param species - Optional array of species to start the battle with. * @returns A promise that resolves when the battle is started. */ - async startBattle(species?: Species[]): Promise { + async startBattle(species?: SpeciesId[]): Promise { await this.runToSummon(species); if (this.game.scene.battleStyle === BattleStyle.SWITCH) { diff --git a/test/testUtils/helpers/field-helper.ts b/test/testUtils/helpers/field-helper.ts index 6d762853cad..08b7a210e68 100644 --- a/test/testUtils/helpers/field-helper.ts +++ b/test/testUtils/helpers/field-helper.ts @@ -8,7 +8,7 @@ import type { Ability } from "#app/data/abilities/ability-class"; import { allAbilities } from "#app/data/data-lists"; import type Pokemon from "#app/field/pokemon"; import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; -import type { Abilities } from "#enums/abilities"; +import type { AbilityId } from "#enums/ability-id"; import type { PokemonType } from "#enums/pokemon-type"; import { Stat } from "#enums/stat"; import { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; @@ -67,7 +67,7 @@ export class FieldHelper extends GameManagerHelper { * @see {@linkcode vi.spyOn} * @see https://vitest.dev/api/mock#mockreturnvalue */ - public mockAbility(pokemon: Pokemon, ability: Abilities): MockInstance<(baseOnly?: boolean) => Ability> { + public mockAbility(pokemon: Pokemon, ability: AbilityId): MockInstance<(baseOnly?: boolean) => Ability> { return vi.spyOn(pokemon, "getAbility").mockReturnValue(allAbilities[ability]); } diff --git a/test/testUtils/helpers/moveHelper.ts b/test/testUtils/helpers/moveHelper.ts index b3cdffeb636..02b1efd837f 100644 --- a/test/testUtils/helpers/moveHelper.ts +++ b/test/testUtils/helpers/moveHelper.ts @@ -7,7 +7,7 @@ import type { CommandPhase } from "#app/phases/command-phase"; import type { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Command } from "#app/ui/command-ui-handler"; -import { Moves } from "#enums/moves"; +import { MoveId } from "#enums/move-id"; import { UiMode } from "#enums/ui-mode"; import { getMovePosition } from "#test/testUtils/gameManagerUtils"; import { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; @@ -50,7 +50,7 @@ export class MoveHelper extends GameManagerHelper { * @param pkmIndex - the pokemon index. Relevant for double-battles only (defaults to 0) * @param targetIndex - The {@linkcode BattlerIndex} of the Pokemon to target for single-target moves, or `null` if a manual call to `selectTarget()` is required */ - public select(move: Moves, pkmIndex: 0 | 1 = 0, targetIndex?: BattlerIndex | null) { + public select(move: MoveId, pkmIndex: 0 | 1 = 0, targetIndex?: BattlerIndex | null) { const movePosition = getMovePosition(this.game.scene, pkmIndex, move); this.game.onNextPrompt("CommandPhase", UiMode.COMMAND, () => { @@ -72,7 +72,7 @@ export class MoveHelper extends GameManagerHelper { * @param pkmIndex - the pokemon index. Relevant for double-battles only (defaults to 0) * @param targetIndex - The {@linkcode BattlerIndex} of the Pokemon to target for single-target moves, or `null` if a manual call to `selectTarget()` is required */ - public selectWithTera(move: Moves, pkmIndex: 0 | 1 = 0, targetIndex?: BattlerIndex | null) { + public selectWithTera(move: MoveId, pkmIndex: 0 | 1 = 0, targetIndex?: BattlerIndex | null) { const movePosition = getMovePosition(this.game.scene, pkmIndex, move); this.game.scene.getPlayerParty()[pkmIndex].isTerastallized = false; @@ -105,7 +105,7 @@ export class MoveHelper extends GameManagerHelper { * @param targetIndex - (optional) The {@linkcode BattlerIndex} of the Pokemon to target for single-target moves, or `null` if a manual call to `selectTarget()` is required * @param useTera - If `true`, the Pokemon also chooses to Terastallize. This does not require a Tera Orb. Default: `false`. */ - public use(moveId: Moves, pkmIndex: 0 | 1 = 0, targetIndex?: BattlerIndex | null, useTera = false): void { + public use(moveId: MoveId, pkmIndex: 0 | 1 = 0, targetIndex?: BattlerIndex | null, useTera = false): void { if ([Overrides.MOVESET_OVERRIDE].flat().length > 0) { vi.spyOn(Overrides, "MOVESET_OVERRIDE", "get").mockReturnValue([]); console.warn("Warning: `use` overwrites the Pokemon's moveset and disables the player moveset override!"); @@ -147,9 +147,9 @@ export class MoveHelper extends GameManagerHelper { * Changes a pokemon's moveset to the given move(s). * Used when the normal moveset override can't be used (such as when it's necessary to check or update properties of the moveset). * @param pokemon - The {@linkcode Pokemon} being modified - * @param moveset - The {@linkcode Moves} (single or array) to change the Pokemon's moveset to + * @param moveset - The {@linkcode MoveId} (single or array) to change the Pokemon's moveset to */ - public changeMoveset(pokemon: Pokemon, moveset: Moves | Moves[]): void { + public changeMoveset(pokemon: Pokemon, moveset: MoveId | MoveId[]): void { if (!Array.isArray(moveset)) { moveset = [moveset]; } @@ -157,7 +157,7 @@ export class MoveHelper extends GameManagerHelper { moveset.forEach(move => { pokemon.moveset.push(new PokemonMove(move)); }); - const movesetStr = moveset.map(moveId => Moves[moveId]).join(", "); + const movesetStr = moveset.map(moveId => MoveId[moveId]).join(", "); console.log(`Pokemon ${pokemon.species.name}'s moveset manually set to ${movesetStr} (=[${moveset.join(", ")}])!`); } @@ -167,7 +167,7 @@ export class MoveHelper extends GameManagerHelper { * @param moveId The {@linkcode MoveId | move} the enemy will use * @param target (Optional) the {@linkcode BattlerIndex | target} which the enemy will use the given move against */ - public async selectEnemyMove(moveId: Moves, target?: BattlerIndex) { + public async selectEnemyMove(moveId: MoveId, target?: BattlerIndex) { // Wait for the next EnemyCommandPhase to start await this.game.phaseInterceptor.to("EnemyCommandPhase", false); const enemy = @@ -200,7 +200,7 @@ export class MoveHelper extends GameManagerHelper { * @param moveId The {@linkcode MoveId | move} the enemy will use * @param target (Optional) the {@linkcode BattlerIndex | target} which the enemy will use the given move against */ - public async forceEnemyMove(moveId: Moves, target?: BattlerIndex) { + public async forceEnemyMove(moveId: MoveId, target?: BattlerIndex) { // Wait for the next EnemyCommandPhase to start await this.game.phaseInterceptor.to("EnemyCommandPhase", false); diff --git a/test/testUtils/helpers/overridesHelper.ts b/test/testUtils/helpers/overridesHelper.ts index acc2e4d5cd0..32219fa833c 100644 --- a/test/testUtils/helpers/overridesHelper.ts +++ b/test/testUtils/helpers/overridesHelper.ts @@ -1,15 +1,15 @@ import type { Variant } from "#app/sprites/variant"; import { Weather } from "#app/data/weather"; -import { Abilities } from "#app/enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import type { ModifierOverride } from "#app/modifier/modifier-type"; import type { BattleStyle } from "#app/overrides"; import Overrides, { defaultOverrides } from "#app/overrides"; import type { Unlockables } from "#app/system/unlockables"; -import { Biome } from "#enums/biome"; -import { Moves } from "#enums/moves"; +import { BiomeId } from "#enums/biome-id"; +import { MoveId } from "#enums/move-id"; import type { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; import type { WeatherType } from "#enums/weather-type"; import { expect, vi } from "vitest"; @@ -32,9 +32,9 @@ export class OverridesHelper extends GameManagerHelper { * @warning Any event listeners that are attached to [NewArenaEvent](events\battle-scene.ts) may need to be handled down the line * @param biome - The biome to set */ - public startingBiome(biome: Biome): this { + public startingBiome(biome: BiomeId): this { this.game.scene.newArena(biome); - this.log(`Starting biome set to ${Biome[biome]} (=${biome})!`); + this.log(`Starting biome set to ${BiomeId[biome]} (=${biome})!`); return this; } @@ -54,7 +54,7 @@ export class OverridesHelper extends GameManagerHelper { * @param level - The level to set * @returns `this` */ - public startingLevel(level: Species | number): this { + public startingLevel(level: SpeciesId | number): this { vi.spyOn(Overrides, "STARTING_LEVEL_OVERRIDE", "get").mockReturnValue(level); this.log(`Player Pokemon starting level set to ${level}!`); return this; @@ -103,13 +103,13 @@ export class OverridesHelper extends GameManagerHelper { } /** - * Override the player pokemon's {@linkcode Species | species} - * @param species - The {@linkcode Species | species} to set + * Override the player pokemon's {@linkcode SpeciesId | species} + * @param species - The {@linkcode SpeciesId | species} to set * @returns `this` */ - public starterSpecies(species: Species | number): this { + public starterSpecies(species: SpeciesId | number): this { vi.spyOn(Overrides, "STARTER_SPECIES_OVERRIDE", "get").mockReturnValue(species); - this.log(`Player Pokemon species set to ${Species[species]} (=${species})!`); + this.log(`Player Pokemon species set to ${SpeciesId[species]} (=${species})!`); return this; } @@ -128,9 +128,9 @@ export class OverridesHelper extends GameManagerHelper { * @param species - The fusion species to set * @returns `this` */ - public starterFusionSpecies(species: Species | number): this { + public starterFusionSpecies(species: SpeciesId | number): this { vi.spyOn(Overrides, "STARTER_FUSION_SPECIES_OVERRIDE", "get").mockReturnValue(species); - this.log(`Player Pokemon fusion species set to ${Species[species]} (=${species})!`); + this.log(`Player Pokemon fusion species set to ${SpeciesId[species]} (=${species})!`); return this; } @@ -139,10 +139,10 @@ export class OverridesHelper extends GameManagerHelper { * @param forms - The forms to set * @returns `this` */ - public starterForms(forms: Partial>): this { + public starterForms(forms: Partial>): this { vi.spyOn(Overrides, "STARTER_FORM_OVERRIDES", "get").mockReturnValue(forms); const formsStr = Object.entries(forms) - .map(([speciesId, formIndex]) => `${Species[speciesId]}=${formIndex}`) + .map(([speciesId, formIndex]) => `${SpeciesId[speciesId]}=${formIndex}`) .join(", "); this.log(`Player Pokemon form set to: ${formsStr}!`); return this; @@ -160,29 +160,29 @@ export class OverridesHelper extends GameManagerHelper { } /** - * Override the player pokemon's {@linkcode Abilities | ability}. - * @param ability - The {@linkcode Abilities | ability} to set + * Override the player pokemon's {@linkcode AbilityId | ability}. + * @param ability - The {@linkcode AbilityId | ability} to set * @returns `this` */ - public ability(ability: Abilities): this { + public ability(ability: AbilityId): this { vi.spyOn(Overrides, "ABILITY_OVERRIDE", "get").mockReturnValue(ability); - this.log(`Player Pokemon ability set to ${Abilities[ability]} (=${ability})!`); + this.log(`Player Pokemon ability set to ${AbilityId[ability]} (=${ability})!`); return this; } /** - * Override the player pokemon's **passive** {@linkcode Abilities | ability} - * @param passiveAbility - The **passive** {@linkcode Abilities | ability} to set + * Override the player pokemon's **passive** {@linkcode AbilityId | ability} + * @param passiveAbility - The **passive** {@linkcode AbilityId | ability} to set * @returns `this` */ - public passiveAbility(passiveAbility: Abilities): this { + public passiveAbility(passiveAbility: AbilityId): this { vi.spyOn(Overrides, "PASSIVE_ABILITY_OVERRIDE", "get").mockReturnValue(passiveAbility); - this.log(`Player Pokemon PASSIVE ability set to ${Abilities[passiveAbility]} (=${passiveAbility})!`); + this.log(`Player Pokemon PASSIVE ability set to ${AbilityId[passiveAbility]} (=${passiveAbility})!`); return this; } /** - * Forces the status of the player pokemon **passive** {@linkcode Abilities | ability} + * Forces the status of the player pokemon **passive** {@linkcode AbilityId | ability} * @param hasPassiveAbility - Forces the passive to be active if `true`, inactive if `false` * @returns `this` */ @@ -196,16 +196,16 @@ export class OverridesHelper extends GameManagerHelper { return this; } /** - * Override the player pokemon's {@linkcode Moves | moves}set - * @param moveset - The {@linkcode Moves | moves}set to set + * Override the player pokemon's {@linkcode MoveId | moves}set + * @param moveset - The {@linkcode MoveId | moves}set to set * @returns `this` */ - public moveset(moveset: Moves | Moves[]): this { + public moveset(moveset: MoveId | MoveId[]): this { vi.spyOn(Overrides, "MOVESET_OVERRIDE", "get").mockReturnValue(moveset); if (!Array.isArray(moveset)) { moveset = [moveset]; } - const movesetStr = moveset.map(moveId => Moves[moveId]).join(", "); + const movesetStr = moveset.map(moveId => MoveId[moveId]).join(", "); this.log(`Player Pokemon moveset set to ${movesetStr} (=[${moveset.join(", ")}])!`); return this; } @@ -307,13 +307,13 @@ export class OverridesHelper extends GameManagerHelper { } /** - * Override the {@linkcode Species | species} of enemy pokemon - * @param species - The {@linkcode Species | species} to set + * Override the {@linkcode SpeciesId | species} of enemy pokemon + * @param species - The {@linkcode SpeciesId | species} to set * @returns `this` */ - public enemySpecies(species: Species | number): this { + public enemySpecies(species: SpeciesId | number): this { vi.spyOn(Overrides, "OPP_SPECIES_OVERRIDE", "get").mockReturnValue(species); - this.log(`Enemy Pokemon species set to ${Species[species]} (=${species})!`); + this.log(`Enemy Pokemon species set to ${SpeciesId[species]} (=${species})!`); return this; } @@ -332,36 +332,36 @@ export class OverridesHelper extends GameManagerHelper { * @param species - The fusion species to set * @returns `this` */ - public enemyFusionSpecies(species: Species | number): this { + public enemyFusionSpecies(species: SpeciesId | number): this { vi.spyOn(Overrides, "OPP_FUSION_SPECIES_OVERRIDE", "get").mockReturnValue(species); - this.log(`Enemy Pokemon fusion species set to ${Species[species]} (=${species})!`); + this.log(`Enemy Pokemon fusion species set to ${SpeciesId[species]} (=${species})!`); return this; } /** - * Override the {@linkcode Abilities | ability} of enemy pokemon - * @param ability - The {@linkcode Abilities | ability} to set + * Override the {@linkcode AbilityId | ability} of enemy pokemon + * @param ability - The {@linkcode AbilityId | ability} to set * @returns `this` */ - public enemyAbility(ability: Abilities): this { + public enemyAbility(ability: AbilityId): this { vi.spyOn(Overrides, "OPP_ABILITY_OVERRIDE", "get").mockReturnValue(ability); - this.log(`Enemy Pokemon ability set to ${Abilities[ability]} (=${ability})!`); + this.log(`Enemy Pokemon ability set to ${AbilityId[ability]} (=${ability})!`); return this; } /** - * Override the **passive** {@linkcode Abilities | ability} of enemy pokemon - * @param passiveAbility - The **passive** {@linkcode Abilities | ability} to set + * Override the **passive** {@linkcode AbilityId | ability} of enemy pokemon + * @param passiveAbility - The **passive** {@linkcode AbilityId | ability} to set * @returns `this` */ - public enemyPassiveAbility(passiveAbility: Abilities): this { + public enemyPassiveAbility(passiveAbility: AbilityId): this { vi.spyOn(Overrides, "OPP_PASSIVE_ABILITY_OVERRIDE", "get").mockReturnValue(passiveAbility); - this.log(`Enemy Pokemon PASSIVE ability set to ${Abilities[passiveAbility]} (=${passiveAbility})!`); + this.log(`Enemy Pokemon PASSIVE ability set to ${AbilityId[passiveAbility]} (=${passiveAbility})!`); return this; } /** - * Forces the status of the enemy pokemon **passive** {@linkcode Abilities | ability} + * Forces the status of the enemy pokemon **passive** {@linkcode AbilityId | ability} * @param hasPassiveAbility - Forces the passive to be active if `true`, inactive if `false` * @returns `this` */ @@ -376,16 +376,16 @@ export class OverridesHelper extends GameManagerHelper { } /** - * Override the {@linkcode Moves | move}set of enemy pokemon - * @param moveset - The {@linkcode Moves | move}set to set + * Override the {@linkcode MoveId | move}set of enemy pokemon + * @param moveset - The {@linkcode MoveId | move}set to set * @returns `this` */ - public enemyMoveset(moveset: Moves | Moves[]): this { + public enemyMoveset(moveset: MoveId | MoveId[]): this { vi.spyOn(Overrides, "OPP_MOVESET_OVERRIDE", "get").mockReturnValue(moveset); if (!Array.isArray(moveset)) { moveset = [moveset]; } - const movesetStr = moveset.map(moveId => Moves[moveId]).join(", "); + const movesetStr = moveset.map(moveId => MoveId[moveId]).join(", "); this.log(`Enemy Pokemon moveset set to ${movesetStr} (=[${moveset.join(", ")}])!`); return this; } diff --git a/test/ui/battle_info.test.ts b/test/ui/battle_info.test.ts index c4548adc49c..3049424e3d2 100644 --- a/test/ui/battle_info.test.ts +++ b/test/ui/battle_info.test.ts @@ -1,8 +1,8 @@ import { ExpGainsSpeed } from "#app/enums/exp-gains-speed"; -import { Species } from "#app/enums/species"; +import { SpeciesId } from "#enums/species-id"; import { ExpPhase } from "#app/phases/exp-phase"; -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -31,11 +31,11 @@ describe("UI - Battle Info", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([Moves.GUILLOTINE, Moves.SPLASH]) + .moveset([MoveId.GUILLOTINE, MoveId.SPLASH]) .battleStyle("single") - .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.SPLASH) - .enemySpecies(Species.CATERPIE); + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .enemySpecies(SpeciesId.CATERPIE); }); it.each([ExpGainsSpeed.FAST, ExpGainsSpeed.FASTER, ExpGainsSpeed.SKIP])( @@ -44,9 +44,9 @@ describe("UI - Battle Info", () => { game.settings.expGainsSpeed(expGainsSpeed); vi.spyOn(Math, "pow"); - await game.classicMode.startBattle([Species.CHARIZARD]); + await game.classicMode.startBattle([SpeciesId.CHARIZARD]); - game.move.select(Moves.SPLASH); + game.move.select(MoveId.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to(ExpPhase, true); diff --git a/test/ui/pokedex.test.ts b/test/ui/pokedex.test.ts index 007fc43c3b9..573ce3fef89 100644 --- a/test/ui/pokedex.test.ts +++ b/test/ui/pokedex.test.ts @@ -4,8 +4,8 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, type MockInstan import PokedexUiHandler from "#app/ui/pokedex-ui-handler"; import { FilterTextRow } from "#app/ui/filter-text"; import { allAbilities } from "#app/data/data-lists"; -import { Abilities } from "#enums/abilities"; -import { Species } from "#enums/species"; +import { AbilityId } from "#enums/ability-id"; +import { SpeciesId } from "#enums/species-id"; import { allSpecies, getPokemonSpecies, type PokemonForm } from "#app/data/pokemon-species"; import { Button } from "#enums/buttons"; import { DropDownColumn } from "#enums/drop-down-column"; @@ -106,8 +106,8 @@ describe("UI - Pokedex", () => { * Compute a set of pokemon that have a specific ability in allAbilities * @param ability - The ability to filter for */ - function getSpeciesWithAbility(ability: Abilities): Set { - const speciesSet = new Set(); + function getSpeciesWithAbility(ability: AbilityId): Set { + const speciesSet = new Set(); for (const pkmn of allSpecies) { if ( [pkmn.ability1, pkmn.ability2, pkmn.getPassiveAbility(), pkmn.abilityHidden].includes(ability) || @@ -127,8 +127,8 @@ describe("UI - Pokedex", () => { * Includes all forms of the pokemon * @param types - The types to filter for */ - function getSpeciesWithType(...types: PokemonType[]): Set { - const speciesSet = new Set(); + function getSpeciesWithType(...types: PokemonType[]): Set { + const speciesSet = new Set(); const tySet = new Set(types); // get the pokemon and its forms @@ -164,18 +164,18 @@ describe("UI - Pokedex", () => { * @param setForms - Whether to also overwrite the abilities for each of the species' forms (defaults to `true`) */ function createAbilityMocks( - species: Species, + species: SpeciesId, { - ability = Abilities.NONE, - ability2 = Abilities.NONE, - hidden = Abilities.NONE, - passive = Abilities.NONE, + ability = AbilityId.NONE, + ability2 = AbilityId.NONE, + hidden = AbilityId.NONE, + passive = AbilityId.NONE, setForms = true, }: { - ability?: Abilities; - ability2?: Abilities; - hidden?: Abilities; - passive?: Abilities; + ability?: AbilityId; + ability2?: AbilityId; + hidden?: AbilityId; + passive?: AbilityId; setForms?: boolean; }, ) { @@ -201,13 +201,13 @@ describe("UI - Pokedex", () => { const pokedexHandler = await runToOpenPokedex(); // Get name of overgrow - const overgrow = allAbilities[Abilities.OVERGROW].name; + const overgrow = allAbilities[AbilityId.OVERGROW].name; // @ts-expect-error `filterText` is private pokedexHandler.filterText.setValue(FilterTextRow.ABILITY_1, overgrow); // filter all species to be the pokemon that have overgrow - const overgrowSpecies = getSpeciesWithAbility(Abilities.OVERGROW); + const overgrowSpecies = getSpeciesWithAbility(AbilityId.OVERGROW); // @ts-expect-error - `filteredPokemonData` is private const filteredSpecies = new Set(pokedexHandler.filteredPokemonData.map(pokemon => pokemon.species.speciesId)); @@ -216,34 +216,34 @@ describe("UI - Pokedex", () => { it("should filter to show only pokemon with ability and passive when filtering by 2 abilities", async () => { // Setup mocks for the ability and passive combinations - const whitelist: Species[] = []; - const blacklist: Species[] = []; + const whitelist: SpeciesId[] = []; + const blacklist: SpeciesId[] = []; - const filter_ab1 = Abilities.OVERGROW; - const filter_ab2 = Abilities.ADAPTABILITY; + const filter_ab1 = AbilityId.OVERGROW; + const filter_ab2 = AbilityId.ADAPTABILITY; const ab1_instance = allAbilities[filter_ab1]; const ab2_instance = allAbilities[filter_ab2]; // Create a species with passive set and each "ability" field const baseObj = { - ability: Abilities.BALL_FETCH, - ability2: Abilities.NONE, - hidden: Abilities.BLAZE, - passive: Abilities.TORRENT, + ability: AbilityId.BALL_FETCH, + ability2: AbilityId.NONE, + hidden: AbilityId.BLAZE, + passive: AbilityId.TORRENT, }; // Mock pokemon to have the exhaustive combination of the two selected abilities const attrs: (keyof typeof baseObj)[] = ["ability", "ability2", "hidden", "passive"]; for (const [idx, value] of permutations(attrs, 2).entries()) { - createAbilityMocks(Species.BULBASAUR + idx, { + createAbilityMocks(SpeciesId.BULBASAUR + idx, { ...baseObj, [value[0]]: filter_ab1, [value[1]]: filter_ab2, }); if (value.includes("passive")) { - whitelist.push(Species.BULBASAUR + idx); + whitelist.push(SpeciesId.BULBASAUR + idx); } else { - blacklist.push(Species.BULBASAUR + idx); + blacklist.push(SpeciesId.BULBASAUR + idx); } } @@ -318,12 +318,12 @@ describe("UI - Pokedex", () => { } const expectedPokemon = new Set([ - Species.CHIKORITA, - Species.CYNDAQUIL, - Species.TORCHIC, - Species.TURTWIG, - Species.EKANS, - Species.MUDKIP, + SpeciesId.CHIKORITA, + SpeciesId.CYNDAQUIL, + SpeciesId.TORCHIC, + SpeciesId.TURTWIG, + SpeciesId.EKANS, + SpeciesId.MUDKIP, ]); expect( // @ts-expect-error - `filteredPokemonData` is private @@ -345,7 +345,7 @@ describe("UI - Pokedex", () => { expect( // @ts-expect-error - `filteredPokemonData` is private pokedexHandler.filteredPokemonData.every( - pokemon => pokedexHandler.getStarterSpeciesId(pokemon.species.speciesId) === Species.MUDKIP, + pokemon => pokedexHandler.getStarterSpeciesId(pokemon.species.speciesId) === SpeciesId.MUDKIP, ), ).toBe(true); }); @@ -359,11 +359,11 @@ describe("UI - Pokedex", () => { // Cycling 4 times to get to the "can unlock" for passive const expectedPokemon = new Set([ - Species.EKANS, - Species.CHIKORITA, - Species.CYNDAQUIL, - Species.TORCHIC, - Species.TURTWIG, + SpeciesId.EKANS, + SpeciesId.CHIKORITA, + SpeciesId.CYNDAQUIL, + SpeciesId.TORCHIC, + SpeciesId.TURTWIG, ]); // cycling twice to get to the "can unlock" for passive @@ -382,7 +382,7 @@ describe("UI - Pokedex", () => { await game.importData("./test/testUtils/saves/data_pokedex_tests.prsv"); const pokedexHandler = await runToOpenPokedex(); - const expectedPokemon = new Set([Species.TREECKO, Species.CYNDAQUIL, Species.TOTODILE]); + const expectedPokemon = new Set([SpeciesId.TREECKO, SpeciesId.CYNDAQUIL, SpeciesId.TOTODILE]); // @ts-expect-error - `filterBar` is private const filter = pokedexHandler.filterBar.getFilter(DropDownColumn.UNLOCKS); @@ -401,7 +401,7 @@ describe("UI - Pokedex", () => { await game.importData("./test/testUtils/saves/data_pokedex_tests.prsv"); const pokedexHandler = await runToOpenPokedex(); - const expectedPokemon = new Set([Species.CYNDAQUIL, Species.TOTODILE]); + const expectedPokemon = new Set([SpeciesId.CYNDAQUIL, SpeciesId.TOTODILE]); // @ts-expect-error - `filterBar` is private const filter = pokedexHandler.filterBar.getFilter(DropDownColumn.UNLOCKS); @@ -431,7 +431,7 @@ describe("UI - Pokedex", () => { expect( // @ts-expect-error - `filteredPokemonData` is private pokedexHandler.filteredPokemonData.every( - pokemon => pokedexHandler.getStarterSpeciesId(pokemon.species.speciesId) === Species.TREECKO, + pokemon => pokedexHandler.getStarterSpeciesId(pokemon.species.speciesId) === SpeciesId.TREECKO, ), ).toBe(true); }); @@ -448,7 +448,7 @@ describe("UI - Pokedex", () => { // Red shiny expect(filteredPokemon.length).toBe(1); - expect(filteredPokemon[0], "tier 1 shiny").toBe(Species.CATERPIE); + expect(filteredPokemon[0], "tier 1 shiny").toBe(SpeciesId.CATERPIE); // tier 2 shiny filter.toggleOptionState(3); @@ -457,14 +457,14 @@ describe("UI - Pokedex", () => { // @ts-expect-error - `filteredPokemonData` is private filteredPokemon = pokedexHandler.filteredPokemonData.map(pokemon => pokemon.species.speciesId); expect(filteredPokemon.length).toBe(1); - expect(filteredPokemon[0], "tier 2 shiny").toBe(Species.RATTATA); + expect(filteredPokemon[0], "tier 2 shiny").toBe(SpeciesId.RATTATA); filter.toggleOptionState(2); filter.toggleOptionState(1); // @ts-expect-error - `filteredPokemonData` is private filteredPokemon = pokedexHandler.filteredPokemonData.map(pokemon => pokemon.species.speciesId); expect(filteredPokemon.length).toBe(1); - expect(filteredPokemon[0], "tier 3 shiny").toBe(Species.EKANS); + expect(filteredPokemon[0], "tier 3 shiny").toBe(SpeciesId.EKANS); // filter by no shiny filter.toggleOptionState(1); @@ -473,9 +473,9 @@ describe("UI - Pokedex", () => { // @ts-expect-error - `filteredPokemonData` is private filteredPokemon = pokedexHandler.filteredPokemonData.map(pokemon => pokemon.species.speciesId); expect(filteredPokemon.length).toBe(27); - expect(filteredPokemon, "not shiny").not.toContain(Species.CATERPIE); - expect(filteredPokemon, "not shiny").not.toContain(Species.RATTATA); - expect(filteredPokemon, "not shiny").not.toContain(Species.EKANS); + expect(filteredPokemon, "not shiny").not.toContain(SpeciesId.CATERPIE); + expect(filteredPokemon, "not shiny").not.toContain(SpeciesId.RATTATA); + expect(filteredPokemon, "not shiny").not.toContain(SpeciesId.EKANS); }); /**************************** @@ -518,10 +518,10 @@ describe("UI - Pokedex", () => { it("should show caught battle form as caught", async () => { await game.importData("./test/testUtils/saves/data_pokedex_tests_v2.prsv"); - const pageHandler = await runToPokedexPage(getPokemonSpecies(Species.VENUSAUR), { form: 1 }); + const pageHandler = await runToPokedexPage(getPokemonSpecies(SpeciesId.VENUSAUR), { form: 1 }); // @ts-expect-error - `species` is private - expect(pageHandler.species.speciesId).toEqual(Species.VENUSAUR); + expect(pageHandler.species.speciesId).toEqual(SpeciesId.VENUSAUR); // @ts-expect-error - `formIndex` is private expect(pageHandler.formIndex).toEqual(1); @@ -533,10 +533,10 @@ describe("UI - Pokedex", () => { //TODO: check tint of the sprite it("should show uncaught battle form as seen", async () => { await game.importData("./test/testUtils/saves/data_pokedex_tests_v2.prsv"); - const pageHandler = await runToPokedexPage(getPokemonSpecies(Species.VENUSAUR), { form: 2 }); + const pageHandler = await runToPokedexPage(getPokemonSpecies(SpeciesId.VENUSAUR), { form: 2 }); // @ts-expect-error - `species` is private - expect(pageHandler.species.speciesId).toEqual(Species.VENUSAUR); + expect(pageHandler.species.speciesId).toEqual(SpeciesId.VENUSAUR); // @ts-expect-error - `formIndex` is private expect(pageHandler.formIndex).toEqual(2); diff --git a/test/ui/starter-select.test.ts b/test/ui/starter-select.test.ts index b402e02e2d7..10a804b805d 100644 --- a/test/ui/starter-select.test.ts +++ b/test/ui/starter-select.test.ts @@ -10,9 +10,9 @@ import type SaveSlotSelectUiHandler from "#app/ui/save-slot-select-ui-handler"; import type OptionSelectUiHandler from "#app/ui/settings/option-select-ui-handler"; import type StarterSelectUiHandler from "#app/ui/starter-select-ui-handler"; import { UiMode } from "#enums/ui-mode"; -import { Abilities } from "#enums/abilities"; +import { AbilityId } from "#enums/ability-id"; import { Button } from "#enums/buttons"; -import { Species } from "#enums/species"; +import { SpeciesId } from "#enums/species-id"; import GameManager from "#test/testUtils/gameManager"; import i18next from "i18next"; import Phaser from "phaser"; @@ -90,7 +90,7 @@ describe("UI - Starter select", () => { }); await game.phaseInterceptor.whenAboutToRun(EncounterPhase); - expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.BULBASAUR); + expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(SpeciesId.BULBASAUR); expect(game.scene.getPlayerParty()[0].shiny).toBe(true); expect(game.scene.getPlayerParty()[0].variant).toBe(2); expect(game.scene.getPlayerParty()[0].gender).toBe(Gender.MALE); @@ -151,11 +151,11 @@ describe("UI - Starter select", () => { }); await game.phaseInterceptor.whenAboutToRun(EncounterPhase); - expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.BULBASAUR); + expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(SpeciesId.BULBASAUR); expect(game.scene.getPlayerParty()[0].shiny).toBe(true); expect(game.scene.getPlayerParty()[0].variant).toBe(2); expect(game.scene.getPlayerParty()[0].nature).toBe(Nature.HARDY); - expect(game.scene.getPlayerParty()[0].getAbility().id).toBe(Abilities.OVERGROW); + expect(game.scene.getPlayerParty()[0].getAbility().id).toBe(AbilityId.OVERGROW); }, 20000); it("Bulbasaur - shiny - variant 2 female lonely chlorophyl", async () => { @@ -215,12 +215,12 @@ describe("UI - Starter select", () => { }); await game.phaseInterceptor.whenAboutToRun(EncounterPhase); - expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.BULBASAUR); + expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(SpeciesId.BULBASAUR); expect(game.scene.getPlayerParty()[0].shiny).toBe(true); expect(game.scene.getPlayerParty()[0].variant).toBe(2); expect(game.scene.getPlayerParty()[0].gender).toBe(Gender.FEMALE); expect(game.scene.getPlayerParty()[0].nature).toBe(Nature.LONELY); - expect(game.scene.getPlayerParty()[0].getAbility().id).toBe(Abilities.CHLOROPHYLL); + expect(game.scene.getPlayerParty()[0].getAbility().id).toBe(AbilityId.CHLOROPHYLL); }, 20000); it("Bulbasaur - shiny - variant 2 female", async () => { @@ -278,7 +278,7 @@ describe("UI - Starter select", () => { }); await game.phaseInterceptor.whenAboutToRun(EncounterPhase); - expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.BULBASAUR); + expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(SpeciesId.BULBASAUR); expect(game.scene.getPlayerParty()[0].shiny).toBe(true); expect(game.scene.getPlayerParty()[0].variant).toBe(2); expect(game.scene.getPlayerParty()[0].gender).toBe(Gender.FEMALE); @@ -339,7 +339,7 @@ describe("UI - Starter select", () => { }); await game.phaseInterceptor.whenAboutToRun(EncounterPhase); - expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.BULBASAUR); + expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(SpeciesId.BULBASAUR); expect(game.scene.getPlayerParty()[0].shiny).toBe(false); expect(game.scene.getPlayerParty()[0].variant).toBe(0); }, 20000); @@ -401,7 +401,7 @@ describe("UI - Starter select", () => { }); await game.phaseInterceptor.whenAboutToRun(EncounterPhase); - expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.BULBASAUR); + expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(SpeciesId.BULBASAUR); expect(game.scene.getPlayerParty()[0].shiny).toBe(true); expect(game.scene.getPlayerParty()[0].variant).toBe(1); }, 20000); @@ -462,7 +462,7 @@ describe("UI - Starter select", () => { }); await game.phaseInterceptor.whenAboutToRun(EncounterPhase); - expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.BULBASAUR); + expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(SpeciesId.BULBASAUR); expect(game.scene.getPlayerParty()[0].shiny).toBe(true); expect(game.scene.getPlayerParty()[0].variant).toBe(0); }, 20000); @@ -528,7 +528,7 @@ describe("UI - Starter select", () => { saveSlotSelectUiHandler.processInput(Button.ACTION); }); await game.phaseInterceptor.whenAboutToRun(EncounterPhase); - expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.CATERPIE); + expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(SpeciesId.CATERPIE); }, 20000); it("Check if first pokemon in party is nidoran_m from gen 1 and 2nd row, 4th column (cursor (9+4)-1)", async () => { @@ -594,6 +594,6 @@ describe("UI - Starter select", () => { saveSlotSelectUiHandler.processInput(Button.ACTION); }); await game.phaseInterceptor.whenAboutToRun(EncounterPhase); - expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.NIDORAN_M); + expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(SpeciesId.NIDORAN_M); }, 20000); }); diff --git a/test/ui/transfer-item.test.ts b/test/ui/transfer-item.test.ts index f0ea8f84005..b08c9823dcd 100644 --- a/test/ui/transfer-item.test.ts +++ b/test/ui/transfer-item.test.ts @@ -1,7 +1,7 @@ import { BerryType } from "#app/enums/berry-type"; import { Button } from "#app/enums/buttons"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import PartyUiHandler, { PartyUiMode } from "#app/ui/party-ui-handler"; import { UiMode } from "#enums/ui-mode"; @@ -34,13 +34,13 @@ describe("UI - Transfer Items", () => { { name: "BERRY", count: 2, type: BerryType.APICOT }, { name: "BERRY", count: 2, type: BerryType.LUM }, ]); - game.override.moveset([Moves.DRAGON_CLAW]); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyMoveset([Moves.SPLASH]); + game.override.moveset([MoveId.DRAGON_CLAW]); + game.override.enemySpecies(SpeciesId.MAGIKARP); + game.override.enemyMoveset([MoveId.SPLASH]); - await game.classicMode.startBattle([Species.RAYQUAZA, Species.RAYQUAZA, Species.RAYQUAZA]); + await game.classicMode.startBattle([SpeciesId.RAYQUAZA, SpeciesId.RAYQUAZA, SpeciesId.RAYQUAZA]); - game.move.select(Moves.DRAGON_CLAW); + game.move.select(MoveId.DRAGON_CLAW); game.onNextPrompt("SelectModifierPhase", UiMode.MODIFIER_SELECT, () => { expect(game.scene.ui.getHandler()).toBeInstanceOf(ModifierSelectUiHandler); diff --git a/test/ui/type-hints.test.ts b/test/ui/type-hints.test.ts index b32f5ed9b88..6b0bc6e5ea5 100644 --- a/test/ui/type-hints.test.ts +++ b/test/ui/type-hints.test.ts @@ -1,6 +1,6 @@ import { Button } from "#app/enums/buttons"; -import { Moves } from "#app/enums/moves"; -import { Species } from "#app/enums/species"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; import { CommandPhase } from "#app/phases/command-phase"; import FightUiHandler from "#app/ui/fight-ui-handler"; import { UiMode } from "#enums/ui-mode"; @@ -27,7 +27,7 @@ describe("UI - Type Hints", () => { beforeEach(async () => { game = new GameManager(phaserGame); game.settings.typeHints(true); //activate type hints - game.override.battleStyle("single").startingLevel(100).startingWave(1).enemyMoveset(Moves.SPLASH); + game.override.battleStyle("single").startingLevel(100).startingWave(1).enemyMoveset(MoveId.SPLASH); }); it("check immunity color", async () => { @@ -35,12 +35,12 @@ describe("UI - Type Hints", () => { .battleStyle("single") .startingLevel(100) .startingWave(1) - .enemySpecies(Species.FLORGES) - .enemyMoveset(Moves.SPLASH) - .moveset([Moves.DRAGON_CLAW]); + .enemySpecies(SpeciesId.FLORGES) + .enemyMoveset(MoveId.SPLASH) + .moveset([MoveId.DRAGON_CLAW]); game.settings.typeHints(true); //activate type hints - await game.classicMode.startBattle([Species.RAYQUAZA]); + await game.classicMode.startBattle([SpeciesId.RAYQUAZA]); game.onNextPrompt("CommandPhase", UiMode.COMMAND, () => { const { ui } = game.scene; @@ -63,9 +63,9 @@ describe("UI - Type Hints", () => { }); it("check status move color", async () => { - game.override.enemySpecies(Species.FLORGES).moveset([Moves.GROWL]); + game.override.enemySpecies(SpeciesId.FLORGES).moveset([MoveId.GROWL]); - await game.classicMode.startBattle([Species.RAYQUAZA]); + await game.classicMode.startBattle([SpeciesId.RAYQUAZA]); game.onNextPrompt("CommandPhase", UiMode.COMMAND, () => { const { ui } = game.scene; @@ -89,18 +89,18 @@ describe("UI - Type Hints", () => { it("should show the proper hint for a move in doubles after one of the enemy pokemon flees", async () => { game.override - .enemySpecies(Species.ABRA) - .moveset([Moves.SPLASH, Moves.SHADOW_BALL, Moves.SOAK]) - .enemyMoveset([Moves.SPLASH, Moves.TELEPORT]) + .enemySpecies(SpeciesId.ABRA) + .moveset([MoveId.SPLASH, MoveId.SHADOW_BALL, MoveId.SOAK]) + .enemyMoveset([MoveId.SPLASH, MoveId.TELEPORT]) .battleStyle("double"); - await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]); - game.move.select(Moves.SPLASH); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); + game.move.select(MoveId.SPLASH); // Use soak to change type of remaining abra to water - game.move.select(Moves.SOAK, 1); + game.move.select(MoveId.SOAK, 1); - await game.move.selectEnemyMove(Moves.SPLASH); - await game.move.selectEnemyMove(Moves.TELEPORT); + await game.move.selectEnemyMove(MoveId.SPLASH); + await game.move.selectEnemyMove(MoveId.TELEPORT); await game.toNextTurn(); game.onNextPrompt("CommandPhase", UiMode.COMMAND, () => { From fb6d6f5b697e253dff1f6434f705ea86692992aa Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Wed, 4 Jun 2025 23:57:10 -0500 Subject: [PATCH 44/71] [Dev] Add non type imports depcruiser check (#5901) * Forbid non type imports in type and enum files * Allow orphans in src/@types --- .dependency-cruiser.cjs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.dependency-cruiser.cjs b/.dependency-cruiser.cjs index b7de80a70de..40a9785aeaf 100644 --- a/.dependency-cruiser.cjs +++ b/.dependency-cruiser.cjs @@ -1,6 +1,17 @@ /** @type {import('dependency-cruiser').IConfiguration} */ module.exports = { forbidden: [ + { + name: "only-type-imports", + severity: "error", + comment: "Files in enums and @types may only use type imports.", + from: { + path: ["(^|/)src/@types", "(^|/)src/enums"], + }, + to: { + dependencyTypesNot: ["type-only"], + }, + }, { name: "no-circular-at-runtime", severity: "warn", @@ -31,6 +42,8 @@ module.exports = { "[.]d[.]ts$", // TypeScript declaration files "(^|/)tsconfig[.]json$", // TypeScript config "(^|/)(?:babel|webpack)[.]config[.](?:js|cjs|mjs|ts|cts|mts|json)$", // other configs + // anything in src/@types + "(^|/)src/@types/", ], }, to: {}, From 39b8dc9a85de11ad7441bb1fd9020cdc9b02fe8d Mon Sep 17 00:00:00 2001 From: Wlowscha <54003515+Wlowscha@users.noreply.github.com> Date: Thu, 5 Jun 2025 23:54:50 +0200 Subject: [PATCH 45/71] [Refactor] Removing unused logic for mbh/grip claw (#5914) * Removing unused logic for mbh/grip claw * Updated docstring --------- Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> --- src/modifier/modifier.ts | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 11631b64451..2bebbcae90c 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -40,7 +40,6 @@ import { type TerastallizeModifierType, type TmModifierType, getModifierType, - ModifierPoolType, ModifierTypeGenerator, modifierTypes, PokemonHeldItemModifierType, @@ -3232,8 +3231,7 @@ export abstract class HeldItemTransferModifier extends PokemonHeldItemModifier { } /** - * Steals an item from a set of target Pokemon. - * This prioritizes high-tier held items when selecting the item to steal. + * Steals an item, chosen randomly, from a set of target Pokemon. * @param pokemon The {@linkcode Pokemon} holding this item * @param target The {@linkcode Pokemon} to steal from (optional) * @param _args N/A @@ -3253,30 +3251,15 @@ export abstract class HeldItemTransferModifier extends PokemonHeldItemModifier { return false; } - const poolType = pokemon.isPlayer() - ? ModifierPoolType.PLAYER - : pokemon.hasTrainer() - ? ModifierPoolType.TRAINER - : ModifierPoolType.WILD; - const transferredModifierTypes: ModifierType[] = []; const itemModifiers = globalScene.findModifiers( m => m instanceof PokemonHeldItemModifier && m.pokemonId === targetPokemon.id && m.isTransferable, targetPokemon.isPlayer(), ) as PokemonHeldItemModifier[]; - let highestItemTier = itemModifiers - .map(m => m.type.getOrInferTier(poolType)) - .reduce((highestTier, tier) => Math.max(tier!, highestTier), 0); // TODO: is this bang correct? - let tierItemModifiers = itemModifiers.filter(m => m.type.getOrInferTier(poolType) === highestItemTier); for (let i = 0; i < transferredItemCount; i++) { - if (!tierItemModifiers.length) { - while (highestItemTier-- && !tierItemModifiers.length) { - tierItemModifiers = itemModifiers.filter(m => m.type.tier === highestItemTier); - } - if (!tierItemModifiers.length) { - break; - } + if (!itemModifiers.length) { + break; } const randItemIndex = pokemon.randBattleSeedInt(itemModifiers.length); const randItem = itemModifiers[randItemIndex]; From 193c5ffb0ca9b0669d687170ab175c6d4c617b56 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Thu, 5 Jun 2025 17:18:07 -0500 Subject: [PATCH 46/71] [UI/UX] Move Reload Required text to bottom of settings (#5928) * Move Reload Required text to bottom of settings * Remove unneeded reloadRequiredText field --- src/ui/settings/abstract-settings-ui-handler.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/ui/settings/abstract-settings-ui-handler.ts b/src/ui/settings/abstract-settings-ui-handler.ts index 27ca95c25ac..1fb4b6d34dc 100644 --- a/src/ui/settings/abstract-settings-ui-handler.ts +++ b/src/ui/settings/abstract-settings-ui-handler.ts @@ -108,10 +108,12 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler { this.reloadSettings = this.settings.filter(s => s?.requireReload); + let anyReloadRequired = false; this.settings.forEach((setting, s) => { let settingName = setting.label; if (setting?.requireReload) { - settingName += ` (${i18next.t("settings:requireReload")})`; + settingName += "*"; + anyReloadRequired = true; } this.settingLabels[s] = addTextObject(8, 28 + s * 16, settingName, TextStyle.SETTINGS_LABEL); @@ -187,6 +189,14 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler { this.settingsContainer.add(iconAction); this.settingsContainer.add(iconCancel); this.settingsContainer.add(actionText); + // Only add the ReloadRequired text on pages that have settings that require a reload. + if (anyReloadRequired) { + const reloadRequired = addTextObject(0, 0, `*${i18next.t("settings:requireReload")}`, TextStyle.SETTINGS_LABEL) + .setOrigin(0, 0.15) + .setPositionRelative(actionsBg, 6, 0) + .setY(actionText.y); + this.settingsContainer.add(reloadRequired); + } this.settingsContainer.add(cancelText); this.settingsContainer.add(this.messageBoxContainer); From 0c54fc1be064a815b5bf6609208e4b2e4801d56e Mon Sep 17 00:00:00 2001 From: PrabbyDD <147005742+PrabbyDD@users.noreply.github.com> Date: Thu, 5 Jun 2025 15:22:27 -0700 Subject: [PATCH 47/71] [Bug] Fix no EXP awarded if all active pokemon faint (#4688) Party pokemon will now gain EXP from EXP Share even if all the active pokemon are fainted --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/phases/faint-phase.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/phases/faint-phase.ts b/src/phases/faint-phase.ts index bf0adf77061..cd40026e55f 100644 --- a/src/phases/faint-phase.ts +++ b/src/phases/faint-phase.ts @@ -78,10 +78,15 @@ export class FaintPhase extends PokemonPhase { } } - /** In case the current pokemon was just switched in, make sure it is counted as participating in the combat */ + /** + * In case the current pokemon was just switched in, make sure it is counted as participating in the combat. + * For EXP_SHARE purposes, if the current pokemon faints as the combat ends and it was the ONLY player pokemon + * involved in combat, it needs to be counted as a participant so the other party pokemon can get their EXP, + * so the fainted pokemon has been included. + */ for (const pokemon of globalScene.getPlayerField()) { - if (pokemon?.isActive(true) && pokemon.isPlayer()) { - globalScene.currentBattle.addParticipant(pokemon as PlayerPokemon); + if (pokemon?.isActive() || pokemon?.isFainted()) { + globalScene.currentBattle.addParticipant(pokemon); } } From e82e18250761a2d33af09c3af06487812c830378 Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Fri, 6 Jun 2025 18:33:13 +0200 Subject: [PATCH 48/71] [UI/UX] [Localization] Russian Gatcha Text Resize (#5929) Russian Gatch Text Resize Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com> --- src/ui/egg-gacha-ui-handler.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ui/egg-gacha-ui-handler.ts b/src/ui/egg-gacha-ui-handler.ts index 1bb7124d935..a9a978548a8 100644 --- a/src/ui/egg-gacha-ui-handler.ts +++ b/src/ui/egg-gacha-ui-handler.ts @@ -108,7 +108,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { let pokemonIconX = -20; let pokemonIconY = 6; - if (["de", "es-ES", "es-MX", "fr", "ko", "pt-BR"].includes(currentLanguage)) { + if (["de", "es-ES", "es-MX", "fr", "ko", "pt-BR", "ru"].includes(currentLanguage)) { gachaTextStyle = TextStyle.SMALLER_WINDOW_ALT; gachaX = 2; gachaY = 2; @@ -150,7 +150,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { gachaInfoContainer.add(pokemonIcon); break; case GachaType.MOVE: - if (["de", "es-ES", "fr", "pt-BR"].includes(currentLanguage)) { + if (["de", "es-ES", "fr", "pt-BR", "ru"].includes(currentLanguage)) { gachaUpLabel.setAlign("center"); gachaUpLabel.setY(0); } @@ -160,7 +160,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { gachaUpLabel.setOrigin(0.5, 0); break; case GachaType.SHINY: - if (["de", "fr", "ko"].includes(currentLanguage)) { + if (["de", "fr", "ko", "ru"].includes(currentLanguage)) { gachaUpLabel.setAlign("center"); gachaUpLabel.setY(0); } From 178de207f1885769e2c9a8440343d5ea98fb1d61 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Fri, 6 Jun 2025 14:34:38 -0500 Subject: [PATCH 49/71] [Refactor] Cleanup egg list ui handler (#5890) Cleanup egg list ui handler Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com> --- src/ui/egg-list-ui-handler.ts | 93 +++++++++++++++-------------------- 1 file changed, 39 insertions(+), 54 deletions(-) diff --git a/src/ui/egg-list-ui-handler.ts b/src/ui/egg-list-ui-handler.ts index 9f41feea8ab..9a1b1f51e25 100644 --- a/src/ui/egg-list-ui-handler.ts +++ b/src/ui/egg-list-ui-handler.ts @@ -35,81 +35,70 @@ export default class EggListUiHandler extends MessageUiHandler { setup() { const ui = this.getUi(); - this.eggListContainer = globalScene.add.container(0, -globalScene.game.canvas.height / 6); - this.eggListContainer.setVisible(false); + this.eggListContainer = globalScene.add.container(0, -globalScene.game.canvas.height / 6).setVisible(false); ui.add(this.eggListContainer); - const bgColor = globalScene.add.rectangle( - 0, - 0, - globalScene.game.canvas.width / 6, - globalScene.game.canvas.height / 6, - 0x006860, - ); - bgColor.setOrigin(0, 0); - this.eggListContainer.add(bgColor); + const bgColor = globalScene.add + .rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6, 0x006860) + .setOrigin(0); - const eggListBg = globalScene.add.image(0, 0, "egg_list_bg"); - eggListBg.setOrigin(0, 0); - this.eggListContainer.add(eggListBg); - - this.eggListContainer.add(addWindow(1, 85, 106, 22)); - this.eggListContainer.add(addWindow(1, 102, 106, 50, true)); - this.eggListContainer.add(addWindow(1, 147, 106, 32, true)); - this.eggListContainer.add(addWindow(107, 1, 212, 178)); + const eggListBg = globalScene.add.image(0, 0, "egg_list_bg").setOrigin(0); this.iconAnimHandler = new PokemonIconAnimHandler(); this.iconAnimHandler.setup(); - this.eggNameText = addTextObject(8, 68, "", TextStyle.SUMMARY); - this.eggNameText.setOrigin(0, 0); - this.eggListContainer.add(this.eggNameText); + this.eggNameText = addTextObject(8, 68, "", TextStyle.SUMMARY).setOrigin(0); this.eggDateText = addTextObject(8, 91, "", TextStyle.TOOLTIP_CONTENT); - this.eggListContainer.add(this.eggDateText); - this.eggHatchWavesText = addTextObject(8, 108, "", TextStyle.TOOLTIP_CONTENT); - this.eggHatchWavesText.setWordWrapWidth(540); - this.eggListContainer.add(this.eggHatchWavesText); + this.eggHatchWavesText = addTextObject(8, 108, "", TextStyle.TOOLTIP_CONTENT).setWordWrapWidth(540); - this.eggGachaInfoText = addTextObject(8, 152, "", TextStyle.TOOLTIP_CONTENT); - this.eggGachaInfoText.setWordWrapWidth(540); - this.eggListContainer.add(this.eggGachaInfoText); + this.eggGachaInfoText = addTextObject(8, 152, "", TextStyle.TOOLTIP_CONTENT).setWordWrapWidth(540); this.eggListIconContainer = globalScene.add.container(113, 5); - this.eggListContainer.add(this.eggListIconContainer); - this.cursorObj = globalScene.add.image(0, 0, "select_cursor"); - this.cursorObj.setOrigin(0, 0); - this.eggListContainer.add(this.cursorObj); + this.cursorObj = globalScene.add.image(0, 0, "select_cursor").setOrigin(0); this.eggSprite = globalScene.add.sprite(54, 37, "egg"); - this.eggListContainer.add(this.eggSprite); const scrollBar = new ScrollBar(310, 5, 4, 170, this.ROWS); - this.eggListContainer.add(scrollBar); this.scrollGridHandler = new ScrollableGridUiHandler(this, this.ROWS, this.COLUMNS) .withScrollBar(scrollBar) .withUpdateGridCallBack(() => this.updateEggIcons()) .withUpdateSingleElementCallback((i: number) => this.setEggDetails(i)); - this.eggListMessageBoxContainer = globalScene.add.container(0, globalScene.game.canvas.height / 6); - this.eggListMessageBoxContainer.setVisible(false); - this.eggListContainer.add(this.eggListMessageBoxContainer); + this.eggListMessageBoxContainer = globalScene.add + .container(0, globalScene.game.canvas.height / 6) + .setVisible(false); - const eggListMessageBox = addWindow(1, -1, 318, 28); - eggListMessageBox.setOrigin(0, 1); + const eggListMessageBox = addWindow(1, -1, 318, 28).setOrigin(0, 1); this.eggListMessageBoxContainer.add(eggListMessageBox); - this.message = addTextObject(8, -8, "", TextStyle.WINDOW, { maxLines: 1 }); - this.message.setOrigin(0, 1); - this.eggListMessageBoxContainer.add(this.message); + // Message isn't used, but is expected to exist as this subclasses MessageUiHandler + this.message = addTextObject(8, -8, "", TextStyle.WINDOW, { maxLines: 1 }).setActive(false).setVisible(false); this.cursor = -1; + + this.eggListContainer.add([ + bgColor, + eggListBg, + addWindow(1, 85, 106, 22), + addWindow(1, 102, 106, 50, true), + addWindow(1, 147, 106, 32, true), + addWindow(107, 1, 212, 178), + this.eggNameText, + this.eggDateText, + this.eggHatchWavesText, + this.eggGachaInfoText, + this.eggListIconContainer, + this.cursorObj, + this.eggSprite, + scrollBar, + ]); } - show(args: any[]): boolean { + override show(args: any[]): boolean { super.show(args); this.initEggIcons(); @@ -134,9 +123,10 @@ export default class EggListUiHandler extends MessageUiHandler { for (let i = 0; i < Math.min(this.ROWS * this.COLUMNS, globalScene.gameData.eggs.length); i++) { const x = (i % this.COLUMNS) * 18; const y = Math.floor(i / this.COLUMNS) * 18; - const icon = globalScene.add.sprite(x - 2, y + 2, "egg_icons"); - icon.setScale(0.5); - icon.setOrigin(0, 0); + const icon = globalScene.add + .sprite(x - 2, y + 2, "egg_icons") + .setScale(0.5) + .setOrigin(0); this.eggListIconContainer.add(icon); this.eggIcons.push(icon); } @@ -148,15 +138,13 @@ export default class EggListUiHandler extends MessageUiHandler { private updateEggIcons() { const indexOffset = this.scrollGridHandler.getItemOffset(); const eggsToShow = Math.min(this.eggIcons.length, globalScene.gameData.eggs.length - indexOffset); - this.eggIcons.forEach((icon, i) => { if (i !== this.cursor) { this.iconAnimHandler.addOrUpdate(icon, PokemonIconAnimMode.NONE); } if (i < eggsToShow) { const egg = globalScene.gameData.eggs[i + indexOffset]; - icon.setFrame(egg.getKey()); - icon.setVisible(true); + icon.setFrame(egg.getKey()).setVisible(true); } else { icon.setVisible(false); } @@ -187,7 +175,6 @@ export default class EggListUiHandler extends MessageUiHandler { const ui = this.getUi(); let success = false; - const error = false; if (button === Button.CANCEL) { ui.revertMode(); @@ -198,11 +185,9 @@ export default class EggListUiHandler extends MessageUiHandler { if (success) { ui.playSelect(); - } else if (error) { - ui.playError(); } - return success || error; + return success; } setCursor(cursor: number): boolean { From 2a769e2733f7b05a297e62fd7bd2866af5b43b3a Mon Sep 17 00:00:00 2001 From: ShinigamiHolo <128856544+ShinigamiHolo@users.noreply.github.com> Date: Fri, 6 Jun 2025 22:45:12 +0300 Subject: [PATCH 50/71] [UI/UX] Adding more space in Egg Gacha for another languge (#5934) --- src/ui/egg-gacha-ui-handler.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/ui/egg-gacha-ui-handler.ts b/src/ui/egg-gacha-ui-handler.ts index a9a978548a8..eb3c6c75d97 100644 --- a/src/ui/egg-gacha-ui-handler.ts +++ b/src/ui/egg-gacha-ui-handler.ts @@ -206,7 +206,17 @@ export default class EggGachaUiHandler extends MessageUiHandler { this.eggGachaOptionsContainer = globalScene.add.container(globalScene.game.canvas.width / 6, 148); this.eggGachaContainer.add(this.eggGachaOptionsContainer); - this.eggGachaOptionSelectBg = addWindow(0, 0, 96, 16 + 576 * this.scale); + // Increase egg box width on certain languages + let eggGachaOptionSelectWidth = 0; + switch (i18next.resolvedLanguage) { + case "ru": + eggGachaOptionSelectWidth = 100; + break; + default: + eggGachaOptionSelectWidth = 96; + } + + this.eggGachaOptionSelectBg = addWindow(0, 0, eggGachaOptionSelectWidth, 16 + 576 * this.scale); this.eggGachaOptionSelectBg.setOrigin(1, 1); this.eggGachaOptionsContainer.add(this.eggGachaOptionSelectBg); From 9021e4b41e67636e523811aa8266d59351904152 Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Fri, 6 Jun 2025 21:52:35 +0200 Subject: [PATCH 51/71] [i18n] More Controller settings localization (#5920) --- src/system/settings/settings-gamepad.ts | 9 +++++---- src/ui/settings/gamepad-binding-ui-handler.ts | 5 +++-- src/ui/settings/keyboard-binding-ui-handler.ts | 3 ++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/system/settings/settings-gamepad.ts b/src/system/settings/settings-gamepad.ts index 12add905096..d39d5cf5a41 100644 --- a/src/system/settings/settings-gamepad.ts +++ b/src/system/settings/settings-gamepad.ts @@ -4,6 +4,7 @@ import { truncateString } from "../../utils/common"; import { Button } from "#enums/buttons"; import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; import { globalScene } from "#app/global-scene"; +import i18next from "i18next"; export enum SettingGamepad { Controller = "CONTROLLER", @@ -27,11 +28,11 @@ export enum SettingGamepad { Button_Submit = "BUTTON_SUBMIT", } -const pressAction = "Press action to assign"; +const pressAction = i18next.t("settings:pressActionToAssign"); export const settingGamepadOptions = { - [SettingGamepad.Controller]: ["Default", "Change"], - [SettingGamepad.Gamepad_Support]: ["Auto", "Disabled"], + [SettingGamepad.Controller]: [i18next.t("settings:controllerDefault"), i18next.t("settings:controllerChange")], + [SettingGamepad.Gamepad_Support]: [i18next.t("settings:gamepadSupportAuto"), i18next.t("settings:gamepadSupportDisabled")], [SettingGamepad.Button_Up]: [`KEY ${Button.UP.toString()}`, pressAction], [SettingGamepad.Button_Down]: [`KEY ${Button.DOWN.toString()}`, pressAction], [SettingGamepad.Button_Left]: [`KEY ${Button.LEFT.toString()}`, pressAction], @@ -140,7 +141,7 @@ export function setSettingGamepad(setting: SettingGamepad, value: number): boole handler: () => changeGamepadHandler(g), })), { - label: "Cancel", + label: i18next.t("settings:cancelContollerChoice"), handler: cancelHandler, }, ], diff --git a/src/ui/settings/gamepad-binding-ui-handler.ts b/src/ui/settings/gamepad-binding-ui-handler.ts index 0f226ddcafa..9ddb54131d5 100644 --- a/src/ui/settings/gamepad-binding-ui-handler.ts +++ b/src/ui/settings/gamepad-binding-ui-handler.ts @@ -4,6 +4,7 @@ import { Device } from "#enums/devices"; import { getIconWithSettingName, getKeyWithKeycode } from "#app/configs/inputs/configHandler"; import { addTextObject, TextStyle } from "#app/ui/text"; import { globalScene } from "#app/global-scene"; +import i18next from "i18next"; export default class GamepadBindingUiHandler extends AbstractBindingUiHandler { constructor(mode: UiMode | null = null) { @@ -19,7 +20,7 @@ export default class GamepadBindingUiHandler extends AbstractBindingUiHandler { this.newButtonIcon.setOrigin(0.5); this.newButtonIcon.setVisible(false); - this.swapText = addTextObject(0, 0, "will swap with", TextStyle.WINDOW); + this.swapText = addTextObject(0, 0, i18next.t("settings:willSwapWith"), TextStyle.WINDOW); this.swapText.setOrigin(0.5); this.swapText.setPositionRelative( this.optionSelectBg, @@ -33,7 +34,7 @@ export default class GamepadBindingUiHandler extends AbstractBindingUiHandler { this.targetButtonIcon.setOrigin(0.5); this.targetButtonIcon.setVisible(false); - this.actionLabel = addTextObject(0, 0, "Confirm swap", TextStyle.SETTINGS_LABEL); + this.actionLabel = addTextObject(0, 0, i18next.t("settings:confirmSwap"), TextStyle.SETTINGS_LABEL); this.actionLabel.setOrigin(0, 0.5); this.actionLabel.setPositionRelative(this.actionBg, this.actionBg.width - 75, this.actionBg.height / 2); this.actionsContainer.add(this.actionLabel); diff --git a/src/ui/settings/keyboard-binding-ui-handler.ts b/src/ui/settings/keyboard-binding-ui-handler.ts index c05a31ca91e..183b8269e78 100644 --- a/src/ui/settings/keyboard-binding-ui-handler.ts +++ b/src/ui/settings/keyboard-binding-ui-handler.ts @@ -4,6 +4,7 @@ import { getKeyWithKeycode } from "#app/configs/inputs/configHandler"; import { Device } from "#enums/devices"; import { addTextObject, TextStyle } from "#app/ui/text"; import { globalScene } from "#app/global-scene"; +import i18next from "i18next"; export default class KeyboardBindingUiHandler extends AbstractBindingUiHandler { constructor(mode: UiMode | null = null) { @@ -21,7 +22,7 @@ export default class KeyboardBindingUiHandler extends AbstractBindingUiHandler { this.newButtonIcon.setOrigin(0.5); this.newButtonIcon.setVisible(false); - this.actionLabel = addTextObject(0, 0, "Assign button", TextStyle.SETTINGS_LABEL); + this.actionLabel = addTextObject(0, 0, i18next.t("settings:assignButton"), TextStyle.SETTINGS_LABEL); this.actionLabel.setOrigin(0, 0.5); this.actionLabel.setPositionRelative(this.actionBg, this.actionBg.width - 80, this.actionBg.height / 2); this.actionsContainer.add(this.actionLabel); From 1fc42b32312d8069deb9da1f3e461c14601495b1 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Fri, 6 Jun 2025 16:08:23 -0500 Subject: [PATCH 52/71] [Misc] Add `phase#is` method to help reduce circular imports (#5868) * Move phase types out of phase interceptor * Create isXPhase method and add properties to each phase * Replace instanceof phase with isXPhase * Fix missing union types for phaseName * Update doc comment in phase.ts * Fix incomplete comment in encounter-phase * Make phaseName as public and fix more uses * Move phaseName property declaration before constructor in move anim phase Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Rename isXPhase to is --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/@types/phase-types.ts | 286 ++++++++++++++++++ src/battle-scene.ts | 11 +- src/data/abilities/ability.ts | 4 +- src/data/arena-tag.ts | 2 +- src/data/battler-tags.ts | 20 +- src/data/moves/move.ts | 14 +- .../utils/encounter-phase-utils.ts | 2 +- src/field/pokemon.ts | 5 +- src/phase.ts | 26 +- src/phases/add-enemy-buff-modifier-phase.ts | 1 + src/phases/attempt-capture-phase.ts | 1 + src/phases/attempt-run-phase.ts | 1 + src/phases/battle-end-phase.ts | 5 +- src/phases/battle-phase.ts | 2 +- src/phases/berry-phase.ts | 1 + src/phases/check-status-effect-phase.ts | 1 + src/phases/check-switch-phase.ts | 1 + src/phases/command-phase.ts | 1 + src/phases/common-anim-phase.ts | 3 + src/phases/damage-anim-phase.ts | 1 + src/phases/egg-hatch-phase.ts | 3 +- src/phases/egg-lapse-phase.ts | 1 + src/phases/egg-summary-phase.ts | 1 + src/phases/encounter-phase.ts | 2 + src/phases/end-card-phase.ts | 1 + src/phases/end-evolution-phase.ts | 1 + src/phases/enemy-command-phase.ts | 1 + src/phases/evolution-phase.ts | 3 + src/phases/exp-phase.ts | 1 + src/phases/faint-phase.ts | 1 + src/phases/form-change-phase.ts | 1 + src/phases/game-over-modifier-reward-phase.ts | 1 + src/phases/game-over-phase.ts | 1 + src/phases/hide-ability-phase.ts | 1 + src/phases/hide-party-exp-bar-phase.ts | 1 + src/phases/learn-move-phase.ts | 6 +- src/phases/level-cap-phase.ts | 1 + src/phases/level-up-phase.ts | 1 + src/phases/load-move-anim-phase.ts | 1 + src/phases/login-phase.ts | 1 + src/phases/message-phase.ts | 1 + src/phases/modifier-reward-phase.ts | 4 + src/phases/money-reward-phase.ts | 1 + src/phases/move-anim-phase.ts | 2 + src/phases/move-charge-phase.ts | 4 +- src/phases/move-effect-phase.ts | 1 + src/phases/move-end-phase.ts | 1 + src/phases/move-header-phase.ts | 1 + src/phases/move-phase.ts | 1 + src/phases/mystery-encounter-phases.ts | 13 +- src/phases/new-battle-phase.ts | 5 +- src/phases/new-biome-encounter-phase.ts | 1 + src/phases/next-encounter-phase.ts | 1 + src/phases/obtain-status-effect-phase.ts | 1 + src/phases/party-exp-phase.ts | 1 + src/phases/party-heal-phase.ts | 1 + src/phases/pokemon-anim-phase.ts | 1 + src/phases/pokemon-heal-phase.ts | 1 + src/phases/pokemon-transform-phase.ts | 1 + src/phases/post-game-over-phase.ts | 1 + src/phases/post-summon-phase.ts | 1 + src/phases/post-turn-status-effect-phase.ts | 1 + src/phases/quiet-form-change-phase.ts | 5 +- src/phases/reload-session-phase.ts | 1 + src/phases/reset-status-phase.ts | 1 + src/phases/return-phase.ts | 1 + src/phases/revival-blessing-phase.ts | 1 + src/phases/ribbon-modifier-reward-phase.ts | 1 + src/phases/scan-ivs-phase.ts | 1 + src/phases/select-biome-phase.ts | 1 + src/phases/select-challenge-phase.ts | 1 + src/phases/select-gender-phase.ts | 1 + src/phases/select-modifier-phase.ts | 1 + src/phases/select-starter-phase.ts | 1 + src/phases/select-target-phase.ts | 1 + src/phases/shiny-sparkle-phase.ts | 1 + src/phases/show-ability-phase.ts | 1 + src/phases/show-party-exp-bar-phase.ts | 1 + src/phases/show-trainer-phase.ts | 1 + src/phases/stat-stage-change-phase.ts | 9 +- src/phases/summon-missing-phase.ts | 1 + src/phases/summon-phase.ts | 2 + src/phases/switch-biome-phase.ts | 1 + src/phases/switch-phase.ts | 4 +- src/phases/switch-summon-phase.ts | 1 + src/phases/tera-phase.ts | 1 + src/phases/title-phase.ts | 1 + src/phases/toggle-double-position-phase.ts | 1 + src/phases/trainer-victory-phase.ts | 1 + src/phases/turn-end-phase.ts | 1 + src/phases/turn-init-phase.ts | 1 + src/phases/turn-start-phase.ts | 1 + src/phases/unavailable-phase.ts | 1 + src/phases/unlock-phase.ts | 1 + src/phases/victory-phase.ts | 1 + src/phases/weather-effect-phase.ts | 1 + src/ui/command-ui-handler.ts | 4 +- src/ui/egg-hatch-scene-handler.ts | 3 +- src/ui/egg-summary-ui-handler.ts | 3 +- src/ui/menu-ui-handler.ts | 3 +- src/ui/party-ui-handler.ts | 5 +- src/ui/pokedex-page-ui-handler.ts | 2 +- test/testUtils/phaseInterceptor.ts | 122 +------- 103 files changed, 468 insertions(+), 187 deletions(-) create mode 100644 src/@types/phase-types.ts diff --git a/src/@types/phase-types.ts b/src/@types/phase-types.ts new file mode 100644 index 00000000000..596d9b15723 --- /dev/null +++ b/src/@types/phase-types.ts @@ -0,0 +1,286 @@ +import type { MoveAnim } from "#app/data/battle-anims"; +import type { AddEnemyBuffModifierPhase } from "#app/phases/add-enemy-buff-modifier-phase"; +import type { AttemptCapturePhase } from "#app/phases/attempt-capture-phase"; +import type { AttemptRunPhase } from "#app/phases/attempt-run-phase"; +import type { BattleEndPhase } from "#app/phases/battle-end-phase"; +import type { BerryPhase } from "#app/phases/berry-phase"; +import type { CheckStatusEffectPhase } from "#app/phases/check-status-effect-phase"; +import type { CheckSwitchPhase } from "#app/phases/check-switch-phase"; +import type { CommandPhase } from "#app/phases/command-phase"; +import type { CommonAnimPhase } from "#app/phases/common-anim-phase"; +import type { DamageAnimPhase } from "#app/phases/damage-anim-phase"; +import type { EggHatchPhase } from "#app/phases/egg-hatch-phase"; +import type { EggLapsePhase } from "#app/phases/egg-lapse-phase"; +import type { EggSummaryPhase } from "#app/phases/egg-summary-phase"; +import type { EncounterPhase } from "#app/phases/encounter-phase"; +import type { EndCardPhase } from "#app/phases/end-card-phase"; +import type { EndEvolutionPhase } from "#app/phases/end-evolution-phase"; +import type { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; +import type { EvolutionPhase } from "#app/phases/evolution-phase"; +import type { ExpPhase } from "#app/phases/exp-phase"; +import type { FaintPhase } from "#app/phases/faint-phase"; +import type { FormChangePhase } from "#app/phases/form-change-phase"; +import type { GameOverModifierRewardPhase } from "#app/phases/game-over-modifier-reward-phase"; +import type { GameOverPhase } from "#app/phases/game-over-phase"; +import type { HideAbilityPhase } from "#app/phases/hide-ability-phase"; +import type { HidePartyExpBarPhase } from "#app/phases/hide-party-exp-bar-phase"; +import type { LearnMovePhase } from "#app/phases/learn-move-phase"; +import type { LevelCapPhase } from "#app/phases/level-cap-phase"; +import type { LevelUpPhase } from "#app/phases/level-up-phase"; +import type { LoadMoveAnimPhase } from "#app/phases/load-move-anim-phase"; +import type { LoginPhase } from "#app/phases/login-phase"; +import type { MessagePhase } from "#app/phases/message-phase"; +import type { ModifierRewardPhase } from "#app/phases/modifier-reward-phase"; +import type { MoneyRewardPhase } from "#app/phases/money-reward-phase"; +import type { MoveAnimPhase } from "#app/phases/move-anim-phase"; +import type { MoveChargePhase } from "#app/phases/move-charge-phase"; +import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; +import type { MoveEndPhase } from "#app/phases/move-end-phase"; +import type { MoveHeaderPhase } from "#app/phases/move-header-phase"; +import type { MovePhase } from "#app/phases/move-phase"; +import type { + MysteryEncounterPhase, + MysteryEncounterOptionSelectedPhase, + MysteryEncounterBattlePhase, + MysteryEncounterRewardsPhase, + PostMysteryEncounterPhase, + MysteryEncounterBattleStartCleanupPhase, +} from "#app/phases/mystery-encounter-phases"; +import type { NewBattlePhase } from "#app/phases/new-battle-phase"; +import type { NewBiomeEncounterPhase } from "#app/phases/new-biome-encounter-phase"; +import type { NextEncounterPhase } from "#app/phases/next-encounter-phase"; +import type { ObtainStatusEffectPhase } from "#app/phases/obtain-status-effect-phase"; +import type { PartyExpPhase } from "#app/phases/party-exp-phase"; +import type { PartyHealPhase } from "#app/phases/party-heal-phase"; +import type { PokemonAnimPhase } from "#app/phases/pokemon-anim-phase"; +import type { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; +import type { PokemonTransformPhase } from "#app/phases/pokemon-transform-phase"; +import type { PostGameOverPhase } from "#app/phases/post-game-over-phase"; +import type { PostSummonPhase } from "#app/phases/post-summon-phase"; +import type { PostTurnStatusEffectPhase } from "#app/phases/post-turn-status-effect-phase"; +import type { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; +import type { ReloadSessionPhase } from "#app/phases/reload-session-phase"; +import type { ResetStatusPhase } from "#app/phases/reset-status-phase"; +import type { ReturnPhase } from "#app/phases/return-phase"; +import type { RevivalBlessingPhase } from "#app/phases/revival-blessing-phase"; +import type { RibbonModifierRewardPhase } from "#app/phases/ribbon-modifier-reward-phase"; +import type { ScanIvsPhase } from "#app/phases/scan-ivs-phase"; +import type { SelectBiomePhase } from "#app/phases/select-biome-phase"; +import type { SelectChallengePhase } from "#app/phases/select-challenge-phase"; +import type { SelectGenderPhase } from "#app/phases/select-gender-phase"; +import type { SelectModifierPhase } from "#app/phases/select-modifier-phase"; +import type { SelectStarterPhase } from "#app/phases/select-starter-phase"; +import type { SelectTargetPhase } from "#app/phases/select-target-phase"; +import type { ShinySparklePhase } from "#app/phases/shiny-sparkle-phase"; +import type { ShowAbilityPhase } from "#app/phases/show-ability-phase"; +import type { ShowPartyExpBarPhase } from "#app/phases/show-party-exp-bar-phase"; +import type { ShowTrainerPhase } from "#app/phases/show-trainer-phase"; +import type { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; +import type { SummonMissingPhase } from "#app/phases/summon-missing-phase"; +import type { SummonPhase } from "#app/phases/summon-phase"; +import type { SwitchBiomePhase } from "#app/phases/switch-biome-phase"; +import type { SwitchPhase } from "#app/phases/switch-phase"; +import type { SwitchSummonPhase } from "#app/phases/switch-summon-phase"; +import type { TeraPhase } from "#app/phases/tera-phase"; +import type { TitlePhase } from "#app/phases/title-phase"; +import type { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase"; +import type { TrainerVictoryPhase } from "#app/phases/trainer-victory-phase"; +import type { TurnEndPhase } from "#app/phases/turn-end-phase"; +import type { TurnInitPhase } from "#app/phases/turn-init-phase"; +import type { TurnStartPhase } from "#app/phases/turn-start-phase"; +import type { UnavailablePhase } from "#app/phases/unavailable-phase"; +import type { UnlockPhase } from "#app/phases/unlock-phase"; +import type { VictoryPhase } from "#app/phases/victory-phase"; +import type { WeatherEffectPhase } from "#app/phases/weather-effect-phase"; + +export type PhaseClass = + | typeof AddEnemyBuffModifierPhase + | typeof AttemptCapturePhase + | typeof AttemptRunPhase + | typeof BattleEndPhase + | typeof BerryPhase + | typeof CheckStatusEffectPhase + | typeof CheckSwitchPhase + | typeof CommandPhase + | typeof CommonAnimPhase + | typeof DamageAnimPhase + | typeof EggHatchPhase + | typeof EggLapsePhase + | typeof EggSummaryPhase + | typeof EncounterPhase + | typeof EndCardPhase + | typeof EndEvolutionPhase + | typeof EnemyCommandPhase + | typeof EvolutionPhase + | typeof FormChangePhase + | typeof ExpPhase + | typeof FaintPhase + | typeof FormChangePhase + | typeof GameOverPhase + | typeof GameOverModifierRewardPhase + | typeof HideAbilityPhase + | typeof HidePartyExpBarPhase + | typeof LearnMovePhase + | typeof LevelUpPhase + | typeof LevelCapPhase + | typeof LoadMoveAnimPhase + | typeof LoginPhase + | typeof MessagePhase + | typeof ModifierRewardPhase + | typeof MoneyRewardPhase + | typeof MoveAnimPhase + | typeof MoveChargePhase + | typeof MoveEffectPhase + | typeof MoveEndPhase + | typeof MoveHeaderPhase + | typeof MovePhase + | typeof MysteryEncounterPhase + | typeof MysteryEncounterOptionSelectedPhase + | typeof MysteryEncounterBattlePhase + | typeof MysteryEncounterRewardsPhase + | typeof MysteryEncounterBattleStartCleanupPhase + | typeof MysteryEncounterRewardsPhase + | typeof PostMysteryEncounterPhase + | typeof NewBattlePhase + | typeof NewBiomeEncounterPhase + | typeof NextEncounterPhase + | typeof ObtainStatusEffectPhase + | typeof PartyExpPhase + | typeof PartyHealPhase + | typeof PokemonAnimPhase + | typeof PokemonHealPhase + | typeof PokemonTransformPhase + | typeof PostGameOverPhase + | typeof PostSummonPhase + | typeof PostTurnStatusEffectPhase + | typeof QuietFormChangePhase + | typeof ReloadSessionPhase + | typeof ResetStatusPhase + | typeof ReturnPhase + | typeof RevivalBlessingPhase + | typeof RibbonModifierRewardPhase + | typeof ScanIvsPhase + | typeof SelectBiomePhase + | typeof SelectChallengePhase + | typeof SelectGenderPhase + | typeof SelectModifierPhase + | typeof SelectStarterPhase + | typeof SelectTargetPhase + | typeof ShinySparklePhase + | typeof ShowAbilityPhase + | typeof ShowTrainerPhase + | typeof ShowPartyExpBarPhase + | typeof StatStageChangePhase + | typeof SummonMissingPhase + | typeof SummonPhase + | typeof SwitchBiomePhase + | typeof SwitchPhase + | typeof SwitchSummonPhase + | typeof TeraPhase + | typeof TitlePhase + | typeof ToggleDoublePositionPhase + | typeof TrainerVictoryPhase + | typeof TurnEndPhase + | typeof TurnInitPhase + | typeof TurnStartPhase + | typeof UnavailablePhase + | typeof UnlockPhase + | typeof VictoryPhase + | typeof WeatherEffectPhase; + +/** Typescript map used to map a string phase to the actual phase type */ +export type PhaseMap = { + AddEnemyBuffModifierPhase: AddEnemyBuffModifierPhase; + AttemptCapturePhase: AttemptCapturePhase; + AttemptRunPhase: AttemptRunPhase; + BattleEndPhase: BattleEndPhase; + BerryPhase: BerryPhase; + CheckStatusEffectPhase: CheckStatusEffectPhase; + CheckSwitchPhase: CheckSwitchPhase; + CommandPhase: CommandPhase; + CommonAnimPhase: CommonAnimPhase; + DamageAnimPhase: DamageAnimPhase; + EggHatchPhase: EggHatchPhase; + EggLapsePhase: EggLapsePhase; + EggSummaryPhase: EggSummaryPhase; + EncounterPhase: EncounterPhase; + EndCardPhase: EndCardPhase; + EndEvolutionPhase: EndEvolutionPhase; + EnemyCommandPhase: EnemyCommandPhase; + EvolutionPhase: EvolutionPhase; + ExpPhase: ExpPhase; + FaintPhase: FaintPhase; + FormChangePhase: FormChangePhase; + GameOverPhase: GameOverPhase; + GameOverModifierRewardPhase: GameOverModifierRewardPhase; + HideAbilityPhase: HideAbilityPhase; + HidePartyExpBarPhase: HidePartyExpBarPhase; + LearnMovePhase: LearnMovePhase; + LevelCapPhase: LevelCapPhase; + LevelUpPhase: LevelUpPhase; + LoadMoveAnimPhase: LoadMoveAnimPhase; + LoginPhase: LoginPhase; + MessagePhase: MessagePhase; + ModifierRewardPhase: ModifierRewardPhase; + MoneyRewardPhase: MoneyRewardPhase; + MoveAnimPhase: MoveAnimPhase; + MoveChargePhase: MoveChargePhase; + MoveEffectPhase: MoveEffectPhase; + MoveEndPhase: MoveEndPhase; + MoveHeaderPhase: MoveHeaderPhase; + MovePhase: MovePhase; + MysteryEncounterPhase: MysteryEncounterPhase; + MysteryEncounterOptionSelectedPhase: MysteryEncounterOptionSelectedPhase; + MysteryEncounterBattlePhase: MysteryEncounterBattlePhase; + MysteryEncounterBattleStartCleanupPhase: MysteryEncounterBattleStartCleanupPhase; + MysteryEncounterRewardsPhase: MysteryEncounterRewardsPhase; + PostMysteryEncounterPhase: PostMysteryEncounterPhase; + NewBattlePhase: NewBattlePhase; + NewBiomeEncounterPhase: NewBiomeEncounterPhase; + NextEncounterPhase: NextEncounterPhase; + ObtainStatusEffectPhase: ObtainStatusEffectPhase; + PartyExpPhase: PartyExpPhase; + PartyHealPhase: PartyHealPhase; + PokemonAnimPhase: PokemonAnimPhase; + PokemonHealPhase: PokemonHealPhase; + PokemonTransformPhase: PokemonTransformPhase; + PostGameOverPhase: PostGameOverPhase; + PostSummonPhase: PostSummonPhase; + PostTurnStatusEffectPhase: PostTurnStatusEffectPhase; + QuietFormChangePhase: QuietFormChangePhase; + ReloadSessionPhase: ReloadSessionPhase; + ResetStatusPhase: ResetStatusPhase; + ReturnPhase: ReturnPhase; + RevivalBlessingPhase: RevivalBlessingPhase; + RibbonModifierRewardPhase: RibbonModifierRewardPhase; + ScanIvsPhase: ScanIvsPhase; + SelectBiomePhase: SelectBiomePhase; + SelectChallengePhase: SelectChallengePhase; + SelectGenderPhase: SelectGenderPhase; + SelectModifierPhase: SelectModifierPhase; + SelectStarterPhase: SelectStarterPhase; + SelectTargetPhase: SelectTargetPhase; + ShinySparklePhase: ShinySparklePhase; + ShowAbilityPhase: ShowAbilityPhase; + ShowPartyExpBarPhase: ShowPartyExpBarPhase; + ShowTrainerPhase: ShowTrainerPhase; + StatStageChangePhase: StatStageChangePhase; + SummonMissingPhase: SummonMissingPhase; + SummonPhase: SummonPhase; + SwitchBiomePhase: SwitchBiomePhase; + SwitchPhase: SwitchPhase; + SwitchSummonPhase: SwitchSummonPhase; + TeraPhase: TeraPhase; + TitlePhase: TitlePhase; + ToggleDoublePositionPhase: ToggleDoublePositionPhase; + TrainerVictoryPhase: TrainerVictoryPhase; + TurnEndPhase: TurnEndPhase; + TurnInitPhase: TurnInitPhase; + TurnStartPhase: TurnStartPhase; + UnavailablePhase: UnavailablePhase; + UnlockPhase: UnlockPhase; + VictoryPhase: VictoryPhase; + WeatherEffectPhase: WeatherEffectPhase; +}; + +export type PhaseString = keyof PhaseMap; diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 34d26b3975c..f2f952ea301 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -145,7 +145,7 @@ import { LoadingScene } from "#app/loading-scene"; import { LevelCapPhase } from "#app/phases/level-cap-phase"; import { LoginPhase } from "#app/phases/login-phase"; import { MessagePhase } from "#app/phases/message-phase"; -import { MovePhase } from "#app/phases/move-phase"; +import type { MovePhase } from "#app/phases/move-phase"; import { NewBiomeEncounterPhase } from "#app/phases/new-biome-encounter-phase"; import { NextEncounterPhase } from "#app/phases/next-encounter-phase"; import { PokemonAnimPhase } from "#app/phases/pokemon-anim-phase"; @@ -153,7 +153,6 @@ import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; import { ReturnPhase } from "#app/phases/return-phase"; import { ShowTrainerPhase } from "#app/phases/show-trainer-phase"; import { SummonPhase } from "#app/phases/summon-phase"; -import { SwitchPhase } from "#app/phases/switch-phase"; import { TitlePhase } from "#app/phases/title-phase"; import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; @@ -901,7 +900,7 @@ export default class BattleScene extends SceneBase { do { targetingMovePhase = this.findPhase( mp => - mp instanceof MovePhase && + mp.is("MovePhase") && mp.targets.length === 1 && mp.targets[0] === removedPokemon.getBattlerIndex() && mp.pokemon.isPlayer() !== allyPokemon.isPlayer(), @@ -1450,7 +1449,7 @@ export default class BattleScene extends SceneBase { } if (lastBattle?.double && !newDouble) { - this.tryRemovePhase(p => p instanceof SwitchPhase); + this.tryRemovePhase((p: Phase) => p.is("SwitchPhase")); for (const p of this.getPlayerField()) { p.lapseTag(BattlerTagType.COMMANDED); } @@ -1588,9 +1587,7 @@ export default class BattleScene extends SceneBase { return 0; } - const isEggPhase: boolean = ["EggLapsePhase", "EggHatchPhase"].includes( - this.getCurrentPhase()?.constructor.name ?? "", - ); + const isEggPhase: boolean = ["EggLapsePhase", "EggHatchPhase"].includes(this.getCurrentPhase()?.phaseName ?? ""); if ( // Give trainers with specialty types an appropriately-typed form for Wormadam, Rotom, Arceus, Oricorio, Silvally, or Paldean Tauros. diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index 8f5f267f7ef..1bd71df32e0 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -2828,7 +2828,7 @@ export class CommanderAbAttr extends AbAttr { // Apply boosts from this effect to the ally Dondozo pokemon.getAlly()?.addTag(BattlerTagType.COMMANDED, 0, MoveId.NONE, pokemon.id); // Cancel the source Pokemon's next move (if a move is queued) - globalScene.tryRemovePhase((phase) => phase instanceof MovePhase && phase.pokemon === pokemon); + globalScene.tryRemovePhase((phase) => phase.is("MovePhase") && phase.pokemon === pokemon); } } } @@ -6897,7 +6897,7 @@ export function initAbilities() { .ignorable(), new Ability(AbilityId.ANALYTIC, 5) .attr(MovePowerBoostAbAttr, (user, target, move) => { - const movePhase = globalScene.findPhase((phase) => phase instanceof MovePhase && phase.pokemon.id !== user?.id); + const movePhase = globalScene.findPhase((phase) => phase.is("MovePhase") && phase.pokemon.id !== user?.id); return isNullOrUndefined(movePhase); }, 1.3), new Ability(AbilityId.ILLUSION, 5) diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 590319a01c0..0254aab37e1 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -383,7 +383,7 @@ const QuickGuardConditionFunc: ProtectConditionFunc = (_arena, moveId) => { const move = allMoves[moveId]; const effectPhase = globalScene.getCurrentPhase(); - if (effectPhase instanceof MoveEffectPhase) { + if (effectPhase?.is("MoveEffectPhase")) { const attacker = effectPhase.getUserPokemon(); if (attacker) { return move.getPriority(attacker) > 0; diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 4f263fc152b..c047f424591 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -28,7 +28,7 @@ import type Pokemon from "#app/field/pokemon"; import { HitResult, MoveResult } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { CommonAnimPhase } from "#app/phases/common-anim-phase"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; +import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { MovePhase } from "#app/phases/move-phase"; import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; import type { StatStageChangeCallback } from "#app/phases/stat-stage-change-phase"; @@ -553,9 +553,9 @@ export class ShellTrapTag extends BattlerTag { // Trap should only be triggered by opponent's Physical moves if (phaseData?.move.category === MoveCategory.PHYSICAL && pokemon.isOpponent(phaseData.attacker)) { const shellTrapPhaseIndex = globalScene.phaseQueue.findIndex( - phase => phase instanceof MovePhase && phase.pokemon === pokemon, + phase => phase.is("MovePhase") && phase.pokemon === pokemon, ); - const firstMovePhaseIndex = globalScene.phaseQueue.findIndex(phase => phase instanceof MovePhase); + const firstMovePhaseIndex = globalScene.phaseQueue.findIndex(phase => phase.is("MovePhase")); // Only shift MovePhase timing if it's not already next up if (shellTrapPhaseIndex !== -1 && shellTrapPhaseIndex !== firstMovePhaseIndex) { @@ -1027,7 +1027,7 @@ export class PowderTag extends BattlerTag { lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.PRE_MOVE) { const movePhase = globalScene.getCurrentPhase(); - if (movePhase instanceof MovePhase) { + if (movePhase?.is("MovePhase")) { const move = movePhase.move.getMove(); const weather = globalScene.arena.weather; if ( @@ -1183,13 +1183,13 @@ export class EncoreTag extends MoveRestrictionBattlerTag { }), ); - const movePhase = globalScene.findPhase(m => m instanceof MovePhase && m.pokemon === pokemon); + const movePhase = globalScene.findPhase(m => m.is("MovePhase") && m.pokemon === pokemon); if (movePhase) { const movesetMove = pokemon.getMoveset().find(m => m.moveId === this.moveId); if (movesetMove) { const lastMove = pokemon.getLastXMoves(1)[0]; globalScene.tryReplacePhase( - m => m instanceof MovePhase && m.pokemon === pokemon, + m => m.is("MovePhase") && m.pokemon === pokemon, new MovePhase(pokemon, lastMove.targets ?? [], movesetMove), ); } @@ -1624,7 +1624,7 @@ export class ProtectedTag extends BattlerTag { // Stop multi-hit moves early const effectPhase = globalScene.getCurrentPhase(); - if (effectPhase instanceof MoveEffectPhase) { + if (effectPhase?.is("MoveEffectPhase")) { effectPhase.stopMultiHit(pokemon); } return true; @@ -2646,7 +2646,7 @@ export class GulpMissileTag extends BattlerTag { } const moveEffectPhase = globalScene.getCurrentPhase(); - if (moveEffectPhase instanceof MoveEffectPhase) { + if (moveEffectPhase?.is("MoveEffectPhase")) { const attacker = moveEffectPhase.getUserPokemon(); if (!attacker) { @@ -3004,7 +3004,7 @@ export class SubstituteTag extends BattlerTag { /** If the Substitute redirects damage, queue a message to indicate it. */ onHit(pokemon: Pokemon): void { const moveEffectPhase = globalScene.getCurrentPhase(); - if (moveEffectPhase instanceof MoveEffectPhase) { + if (moveEffectPhase?.is("MoveEffectPhase")) { const attacker = moveEffectPhase.getUserPokemon(); if (!attacker) { return; @@ -3693,7 +3693,7 @@ export function loadBattlerTag(source: BattlerTag | any): BattlerTag { */ function getMoveEffectPhaseData(_pokemon: Pokemon): { phase: MoveEffectPhase; attacker: Pokemon; move: Move } | null { const phase = globalScene.getCurrentPhase(); - if (phase instanceof MoveEffectPhase) { + if (phase?.is("MoveEffectPhase")) { return { phase: phase, attacker: phase.getPokemon(), diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index 7e9f99e28c1..91cc6350daa 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -3109,7 +3109,7 @@ export class AwaitCombinedPledgeAttr extends OverrideMoveEffectAttr { const overridden = args[0] as BooleanHolder; - const allyMovePhase = globalScene.findPhase((phase) => phase instanceof MovePhase && phase.pokemon.isPlayer() === user.isPlayer()); + const allyMovePhase = globalScene.findPhase((phase) => phase.is("MovePhase") && phase.pokemon.isPlayer() === user.isPlayer()); if (allyMovePhase) { const allyMove = allyMovePhase.move.getMove(); if (allyMove !== move && allyMove.hasAttr(AwaitCombinedPledgeAttr)) { @@ -3123,7 +3123,7 @@ export class AwaitCombinedPledgeAttr extends OverrideMoveEffectAttr { // Move the ally's MovePhase (if needed) so that the ally moves next const allyMovePhaseIndex = globalScene.phaseQueue.indexOf(allyMovePhase); - const firstMovePhaseIndex = globalScene.phaseQueue.findIndex((phase) => phase instanceof MovePhase); + const firstMovePhaseIndex = globalScene.phaseQueue.findIndex((phase) => phase.is("MovePhase")); if (allyMovePhaseIndex !== firstMovePhaseIndex) { globalScene.prependToPhase(globalScene.phaseQueue.splice(allyMovePhaseIndex, 1)[0], MovePhase); } @@ -4477,7 +4477,7 @@ export class CueNextRoundAttr extends MoveEffectAttr { override apply(user: Pokemon, target: Pokemon, move: Move, args?: any[]): boolean { const nextRoundPhase = globalScene.findPhase(phase => - phase instanceof MovePhase && phase.move.moveId === MoveId.ROUND + phase.is("MovePhase") && phase.move.moveId === MoveId.ROUND ); if (!nextRoundPhase) { @@ -4486,7 +4486,7 @@ export class CueNextRoundAttr extends MoveEffectAttr { // Update the phase queue so that the next Pokemon using Round moves next const nextRoundIndex = globalScene.phaseQueue.indexOf(nextRoundPhase); - const nextMoveIndex = globalScene.phaseQueue.findIndex(phase => phase instanceof MovePhase); + const nextMoveIndex = globalScene.phaseQueue.findIndex(phase => phase.is("MovePhase")); if (nextRoundIndex !== nextMoveIndex) { globalScene.prependToPhase(globalScene.phaseQueue.splice(nextRoundIndex, 1)[0], MovePhase); } @@ -6177,7 +6177,7 @@ export class RevivalBlessingAttr extends MoveEffectAttr { // Handle cases where revived pokemon needs to get switched in on same turn if (allyPokemon.isFainted() || allyPokemon === pokemon) { // Enemy switch phase should be removed and replaced with the revived pkmn switching in - globalScene.tryRemovePhase((phase: SwitchSummonPhase) => phase instanceof SwitchSummonPhase && phase.getPokemon() === pokemon); + globalScene.tryRemovePhase((phase: SwitchSummonPhase) => phase.is("SwitchSummonPhase") && phase.getPokemon() === pokemon); // If the pokemon being revived was alive earlier in the turn, cancel its move // (revived pokemon can't move in the turn they're brought back) globalScene.findPhase((phase: MovePhase) => phase.pokemon === pokemon)?.cancel(); @@ -7896,7 +7896,7 @@ export class ForceLastAttr extends MoveEffectAttr { // Either the end of the turn or in front of another, slower move which has also been forced last const prependPhase = globalScene.findPhase((phase) => [ MovePhase, MoveEndPhase ].every(cls => !(phase instanceof cls)) - || (phase instanceof MovePhase) && phaseForcedSlower(phase, target, !!globalScene.arena.getTag(ArenaTagType.TRICK_ROOM)) + || (phase.is("MovePhase")) && phaseForcedSlower(phase, target, !!globalScene.arena.getTag(ArenaTagType.TRICK_ROOM)) ); if (prependPhase) { globalScene.phaseQueue.splice( @@ -7942,7 +7942,7 @@ const userSleptOrComatoseCondition: MoveConditionFunc = (user: Pokemon, target: const targetSleptOrComatoseCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => target.status?.effect === StatusEffect.SLEEP || target.hasAbility(AbilityId.COMATOSE); -const failIfLastCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => globalScene.phaseQueue.find(phase => phase instanceof MovePhase) !== undefined; +const failIfLastCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => globalScene.phaseQueue.find(phase => phase.is("MovePhase")) !== undefined; const failIfLastInPartyCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => { const party: Pokemon[] = user.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty(); diff --git a/src/data/mystery-encounters/utils/encounter-phase-utils.ts b/src/data/mystery-encounters/utils/encounter-phase-utils.ts index 060de9c3a9e..c9eaa2e6968 100644 --- a/src/data/mystery-encounters/utils/encounter-phase-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-phase-utils.ts @@ -769,7 +769,7 @@ export function setEncounterRewards( if (customShopRewards) { globalScene.unshiftPhase(new SelectModifierPhase(0, undefined, customShopRewards)); } else { - globalScene.tryRemovePhase(p => p instanceof SelectModifierPhase); + globalScene.tryRemovePhase(p => p.is("MysteryEncounterRewardsPhase")); } if (eggRewards) { diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index cd8563cfb30..d06553f2227 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -232,7 +232,6 @@ import { getPokemonNameWithAffix } from "#app/messages"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { FaintPhase } from "#app/phases/faint-phase"; import { LearnMovePhase } from "#app/phases/learn-move-phase"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; import { ObtainStatusEffectPhase } from "#app/phases/obtain-status-effect-phase"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; @@ -1300,7 +1299,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // During the Pokemon's MoveEffect phase, the offset is removed to put the Pokemon "in focus" const currentPhase = globalScene.getCurrentPhase(); - if (currentPhase instanceof MoveEffectPhase && currentPhase.getPokemon() === this) { + if (currentPhase?.is("MoveEffectPhase") && currentPhase.getPokemon() === this) { return false; } return true; @@ -4775,7 +4774,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ if (effect === StatusEffect.SLEEP || effect === StatusEffect.FREEZE) { const currentPhase = globalScene.getCurrentPhase(); - if (currentPhase instanceof MoveEffectPhase && currentPhase.getUserPokemon() === this) { + if (currentPhase?.is("MoveEffectPhase") && currentPhase.getUserPokemon() === this) { this.turnData.hitCount = 1; this.turnData.hitsLeft = 1; } diff --git a/src/phase.ts b/src/phase.ts index 20cc7cc4063..9e2468ebdff 100644 --- a/src/phase.ts +++ b/src/phase.ts @@ -1,9 +1,33 @@ import { globalScene } from "#app/global-scene"; +import type { PhaseMap, PhaseString } from "./@types/phase-types"; -export class Phase { +export abstract class Phase { start() {} end() { globalScene.shiftPhase(); } + + /** + * The string name of the phase, used to identify the phase type for {@linkcode is} + * + * @privateremarks + * + * When implementing a phase, you must set the `phaseName` property to the name of the phase. + */ + public abstract readonly phaseName: PhaseString; + + /** + * Check if the phase is of the given type without requiring `instanceof`. + * + * @param phase - The string name of the phase to check. + * @returns Whether this phase is of the provided type. + * + * @remarks + * This does not check for subclasses! It only checks if the phase is *exactly* the given type. + * This method exists to avoid circular import issues, as using `instanceof` would require importing each phase. + */ + is(phase: K): this is PhaseMap[K] { + return this.phaseName === phase; + } } diff --git a/src/phases/add-enemy-buff-modifier-phase.ts b/src/phases/add-enemy-buff-modifier-phase.ts index 16ed78e6d0d..28eaf0dc4df 100644 --- a/src/phases/add-enemy-buff-modifier-phase.ts +++ b/src/phases/add-enemy-buff-modifier-phase.ts @@ -9,6 +9,7 @@ import { Phase } from "#app/phase"; import { globalScene } from "#app/global-scene"; export class AddEnemyBuffModifierPhase extends Phase { + public readonly phaseName = "AddEnemyBuffModifierPhase"; start() { super.start(); diff --git a/src/phases/attempt-capture-phase.ts b/src/phases/attempt-capture-phase.ts index 8592cd98508..6c2f5f4dd76 100644 --- a/src/phases/attempt-capture-phase.ts +++ b/src/phases/attempt-capture-phase.ts @@ -27,6 +27,7 @@ import { globalScene } from "#app/global-scene"; import { Gender } from "#app/data/gender"; export class AttemptCapturePhase extends PokemonPhase { + public readonly phaseName = "AttemptCapturePhase"; private pokeballType: PokeballType; private pokeball: Phaser.GameObjects.Sprite; private originalY: number; diff --git a/src/phases/attempt-run-phase.ts b/src/phases/attempt-run-phase.ts index 15c521c01fc..ced81567c43 100644 --- a/src/phases/attempt-run-phase.ts +++ b/src/phases/attempt-run-phase.ts @@ -17,6 +17,7 @@ import { globalScene } from "#app/global-scene"; import { SelectBiomePhase } from "./select-biome-phase"; export class AttemptRunPhase extends PokemonPhase { + public readonly phaseName = "AttemptRunPhase"; /** For testing purposes: this is to force the pokemon to fail and escape */ public forceFailEscape = false; diff --git a/src/phases/battle-end-phase.ts b/src/phases/battle-end-phase.ts index b4bb28fe55e..96f6d02b1fc 100644 --- a/src/phases/battle-end-phase.ts +++ b/src/phases/battle-end-phase.ts @@ -5,6 +5,7 @@ import { BattlePhase } from "./battle-phase"; import { GameOverPhase } from "./game-over-phase"; export class BattleEndPhase extends BattlePhase { + public readonly phaseName = "BattleEndPhase"; /** If true, will increment battles won */ isVictory: boolean; @@ -19,7 +20,7 @@ export class BattleEndPhase extends BattlePhase { // cull any extra `BattleEnd` phases from the queue. globalScene.phaseQueue = globalScene.phaseQueue.filter(phase => { - if (phase instanceof BattleEndPhase) { + if (phase.is("BattleEndPhase")) { this.isVictory ||= phase.isVictory; return false; } @@ -28,7 +29,7 @@ export class BattleEndPhase extends BattlePhase { // `phaseQueuePrepend` is private, so we have to use this inefficient loop. while ( globalScene.tryRemoveUnshiftedPhase(phase => { - if (phase instanceof BattleEndPhase) { + if (phase.is("BattleEndPhase")) { this.isVictory ||= phase.isVictory; return true; } diff --git a/src/phases/battle-phase.ts b/src/phases/battle-phase.ts index d70b3909639..7cefd0369d9 100644 --- a/src/phases/battle-phase.ts +++ b/src/phases/battle-phase.ts @@ -2,7 +2,7 @@ import { globalScene } from "#app/global-scene"; import { TrainerSlot } from "#enums/trainer-slot"; import { Phase } from "#app/phase"; -export class BattlePhase extends Phase { +export abstract class BattlePhase extends Phase { showEnemyTrainer(trainerSlot: TrainerSlot = TrainerSlot.NONE): void { if (!globalScene.currentBattle.trainer) { console.warn("Enemy trainer is missing!"); diff --git a/src/phases/berry-phase.ts b/src/phases/berry-phase.ts index 989f19c944f..8d66d498039 100644 --- a/src/phases/berry-phase.ts +++ b/src/phases/berry-phase.ts @@ -20,6 +20,7 @@ import type Pokemon from "#app/field/pokemon"; * Also triggers Cud Chew's "repeat berry use" effects */ export class BerryPhase extends FieldPhase { + public readonly phaseName = "BerryPhase"; start() { super.start(); diff --git a/src/phases/check-status-effect-phase.ts b/src/phases/check-status-effect-phase.ts index f59dfea9f02..0c5884bbac7 100644 --- a/src/phases/check-status-effect-phase.ts +++ b/src/phases/check-status-effect-phase.ts @@ -4,6 +4,7 @@ import type { BattlerIndex } from "#app/battle"; import { globalScene } from "#app/global-scene"; export class CheckStatusEffectPhase extends Phase { + public readonly phaseName = "CheckStatusEffectPhase"; private order: BattlerIndex[]; constructor(order: BattlerIndex[]) { super(); diff --git a/src/phases/check-switch-phase.ts b/src/phases/check-switch-phase.ts index 9d73411fd37..0506cd36c46 100644 --- a/src/phases/check-switch-phase.ts +++ b/src/phases/check-switch-phase.ts @@ -10,6 +10,7 @@ import { SwitchPhase } from "./switch-phase"; import { SwitchType } from "#enums/switch-type"; export class CheckSwitchPhase extends BattlePhase { + public readonly phaseName = "CheckSwitchPhase"; protected fieldIndex: number; protected useName: boolean; diff --git a/src/phases/command-phase.ts b/src/phases/command-phase.ts index 3f18ea95777..209c1eefc85 100644 --- a/src/phases/command-phase.ts +++ b/src/phases/command-phase.ts @@ -25,6 +25,7 @@ import { ArenaTagSide } from "#app/data/arena-tag"; import { ArenaTagType } from "#app/enums/arena-tag-type"; export class CommandPhase extends FieldPhase { + public readonly phaseName = "CommandPhase"; protected fieldIndex: number; constructor(fieldIndex: number) { diff --git a/src/phases/common-anim-phase.ts b/src/phases/common-anim-phase.ts index 5be5e112389..4a27db3a651 100644 --- a/src/phases/common-anim-phase.ts +++ b/src/phases/common-anim-phase.ts @@ -5,6 +5,9 @@ import { CommonBattleAnim } from "#app/data/battle-anims"; import { PokemonPhase } from "./pokemon-phase"; export class CommonAnimPhase extends PokemonPhase { + // PokemonHealPhase extends CommonAnimPhase, and to make typescript happy, + // we need to allow phaseName to be a union of the two + public readonly phaseName: "CommonAnimPhase" | "PokemonHealPhase" | "WeatherEffectPhase" = "CommonAnimPhase"; private anim: CommonAnim | null; private targetIndex?: BattlerIndex; private playOnEmptyField: boolean; diff --git a/src/phases/damage-anim-phase.ts b/src/phases/damage-anim-phase.ts index b9581573f2e..85cb26e0a09 100644 --- a/src/phases/damage-anim-phase.ts +++ b/src/phases/damage-anim-phase.ts @@ -6,6 +6,7 @@ import { fixedInt } from "#app/utils/common"; import { PokemonPhase } from "#app/phases/pokemon-phase"; export class DamageAnimPhase extends PokemonPhase { + public readonly phaseName = "DamageAnimPhase"; private amount: number; private damageResult: DamageResult; private critical: boolean; diff --git a/src/phases/egg-hatch-phase.ts b/src/phases/egg-hatch-phase.ts index 69bcf741383..dfcdc05f9a2 100644 --- a/src/phases/egg-hatch-phase.ts +++ b/src/phases/egg-hatch-phase.ts @@ -20,6 +20,7 @@ import { doShinySparkleAnim } from "#app/field/anims"; * Class that represents egg hatching */ export class EggHatchPhase extends Phase { + public readonly phaseName = "EggHatchPhase"; /** The egg that is hatching */ private egg: Egg; /** The new EggHatchData for the egg/pokemon that hatches */ @@ -224,7 +225,7 @@ export class EggHatchPhase extends Phase { } end() { - if (globalScene.findPhase(p => p instanceof EggHatchPhase)) { + if (globalScene.findPhase(p => p.is("EggHatchPhase"))) { this.eggHatchHandler.clear(); } else { globalScene.time.delayedCall(250, () => globalScene.setModifiersVisible(true)); diff --git a/src/phases/egg-lapse-phase.ts b/src/phases/egg-lapse-phase.ts index 4632e264c1d..182d6f304d6 100644 --- a/src/phases/egg-lapse-phase.ts +++ b/src/phases/egg-lapse-phase.ts @@ -16,6 +16,7 @@ import { EggHatchData } from "#app/data/egg-hatch-data"; * Also handles prompts for skipping animation, and calling the egg summary phase */ export class EggLapsePhase extends Phase { + public readonly phaseName = "EggLapsePhase"; private eggHatchData: EggHatchData[] = []; private readonly minEggsToSkip: number = 2; diff --git a/src/phases/egg-summary-phase.ts b/src/phases/egg-summary-phase.ts index d16cafa7611..cc7857426bc 100644 --- a/src/phases/egg-summary-phase.ts +++ b/src/phases/egg-summary-phase.ts @@ -9,6 +9,7 @@ import type { EggHatchData } from "#app/data/egg-hatch-data"; * Phase is handled mostly by the egg-hatch-scene-handler UI */ export class EggSummaryPhase extends Phase { + public readonly phaseName = "EggSummaryPhase"; private eggHatchData: EggHatchData[]; constructor(eggHatchData: EggHatchData[]) { diff --git a/src/phases/encounter-phase.ts b/src/phases/encounter-phase.ts index c7308fc5a64..df84f8f8ff4 100644 --- a/src/phases/encounter-phase.ts +++ b/src/phases/encounter-phase.ts @@ -47,6 +47,8 @@ import { WEIGHT_INCREMENT_ON_SPAWN_MISS } from "#app/data/mystery-encounters/mys import { getNatureName } from "#app/data/nature"; export class EncounterPhase extends BattlePhase { + // Union type is necessary as this is subclassed, and typescript will otherwise complain + public readonly phaseName: "EncounterPhase" | "NextEncounterPhase" | "NewBiomeEncounterPhase" = "EncounterPhase"; private loaded: boolean; constructor(loaded = false) { diff --git a/src/phases/end-card-phase.ts b/src/phases/end-card-phase.ts index 41775248b67..bb64969514f 100644 --- a/src/phases/end-card-phase.ts +++ b/src/phases/end-card-phase.ts @@ -5,6 +5,7 @@ import { addTextObject, TextStyle } from "#app/ui/text"; import i18next from "i18next"; export class EndCardPhase extends Phase { + public readonly phaseName = "EndCardPhase"; public endCard: Phaser.GameObjects.Image; public text: Phaser.GameObjects.Text; start(): void { diff --git a/src/phases/end-evolution-phase.ts b/src/phases/end-evolution-phase.ts index 579920dde90..cfc0d89fc31 100644 --- a/src/phases/end-evolution-phase.ts +++ b/src/phases/end-evolution-phase.ts @@ -3,6 +3,7 @@ import { Phase } from "#app/phase"; import { UiMode } from "#enums/ui-mode"; export class EndEvolutionPhase extends Phase { + public readonly phaseName = "EndEvolutionPhase"; start() { super.start(); diff --git a/src/phases/enemy-command-phase.ts b/src/phases/enemy-command-phase.ts index 2a1719f9002..a81fc4d2107 100644 --- a/src/phases/enemy-command-phase.ts +++ b/src/phases/enemy-command-phase.ts @@ -15,6 +15,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; * @see {@linkcode EnemyPokemon.getNextMove} */ export class EnemyCommandPhase extends FieldPhase { + public readonly phaseName = "EnemyCommandPhase"; protected fieldIndex: number; protected skipTurn = false; diff --git a/src/phases/evolution-phase.ts b/src/phases/evolution-phase.ts index 8fc8a8be031..5e635f4cd82 100644 --- a/src/phases/evolution-phase.ts +++ b/src/phases/evolution-phase.ts @@ -19,6 +19,9 @@ import { EndEvolutionPhase } from "#app/phases/end-evolution-phase"; import { EVOLVE_MOVE } from "#app/data/balance/pokemon-level-moves"; export class EvolutionPhase extends Phase { + // FormChangePhase inherits from this, but EvolutionPhase is not abstract. + // We have to use the union here + public readonly phaseName: "EvolutionPhase" | "FormChangePhase" = "EvolutionPhase"; protected pokemon: PlayerPokemon; protected lastLevel: number; diff --git a/src/phases/exp-phase.ts b/src/phases/exp-phase.ts index 8841a90d5b1..14d7d7578f8 100644 --- a/src/phases/exp-phase.ts +++ b/src/phases/exp-phase.ts @@ -7,6 +7,7 @@ import { PlayerPartyMemberPokemonPhase } from "./player-party-member-pokemon-pha import { LevelUpPhase } from "./level-up-phase"; export class ExpPhase extends PlayerPartyMemberPokemonPhase { + public readonly phaseName = "ExpPhase"; private expValue: number; constructor(partyMemberIndex: number, expValue: number) { diff --git a/src/phases/faint-phase.ts b/src/phases/faint-phase.ts index cd40026e55f..7332d6b9462 100644 --- a/src/phases/faint-phase.ts +++ b/src/phases/faint-phase.ts @@ -35,6 +35,7 @@ import { FRIENDSHIP_LOSS_FROM_FAINT } from "#app/data/balance/starters"; import { BattlerTagType } from "#enums/battler-tag-type"; export class FaintPhase extends PokemonPhase { + public readonly phaseName = "FaintPhase"; /** * Whether or not instant revive should be prevented */ diff --git a/src/phases/form-change-phase.ts b/src/phases/form-change-phase.ts index 5517fb0f402..f5e428c6d3d 100644 --- a/src/phases/form-change-phase.ts +++ b/src/phases/form-change-phase.ts @@ -13,6 +13,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { SpeciesFormKey } from "#enums/species-form-key"; export class FormChangePhase extends EvolutionPhase { + public readonly phaseName = "FormChangePhase"; private formChange: SpeciesFormChange; private modal: boolean; diff --git a/src/phases/game-over-modifier-reward-phase.ts b/src/phases/game-over-modifier-reward-phase.ts index ab6f6554c99..13c8f48abad 100644 --- a/src/phases/game-over-modifier-reward-phase.ts +++ b/src/phases/game-over-modifier-reward-phase.ts @@ -4,6 +4,7 @@ import i18next from "i18next"; import { ModifierRewardPhase } from "./modifier-reward-phase"; export class GameOverModifierRewardPhase extends ModifierRewardPhase { + public readonly phaseName = "GameOverModifierRewardPhase"; doReward(): Promise { return new Promise(resolve => { const newModifier = this.modifierType.newModifier(); diff --git a/src/phases/game-over-phase.ts b/src/phases/game-over-phase.ts index 3a3305fd45e..1d03739d610 100644 --- a/src/phases/game-over-phase.ts +++ b/src/phases/game-over-phase.ts @@ -34,6 +34,7 @@ import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; import { MessagePhase } from "./message-phase"; export class GameOverPhase extends BattlePhase { + public readonly phaseName = "GameOverPhase"; private isVictory: boolean; private firstRibbons: PokemonSpecies[] = []; diff --git a/src/phases/hide-ability-phase.ts b/src/phases/hide-ability-phase.ts index 142bb4b251d..b0a12da24b1 100644 --- a/src/phases/hide-ability-phase.ts +++ b/src/phases/hide-ability-phase.ts @@ -2,6 +2,7 @@ import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; export class HideAbilityPhase extends Phase { + public readonly phaseName = "HideAbilityPhase"; start() { super.start(); diff --git a/src/phases/hide-party-exp-bar-phase.ts b/src/phases/hide-party-exp-bar-phase.ts index 52cfd1f71d6..9ee08280cd4 100644 --- a/src/phases/hide-party-exp-bar-phase.ts +++ b/src/phases/hide-party-exp-bar-phase.ts @@ -2,6 +2,7 @@ import { globalScene } from "#app/global-scene"; import { BattlePhase } from "./battle-phase"; export class HidePartyExpBarPhase extends BattlePhase { + public readonly phaseName = "HidePartyExpBarPhase"; start() { super.start(); diff --git a/src/phases/learn-move-phase.ts b/src/phases/learn-move-phase.ts index 65679a7ade7..d455ed35591 100644 --- a/src/phases/learn-move-phase.ts +++ b/src/phases/learn-move-phase.ts @@ -12,7 +12,6 @@ import { UiMode } from "#enums/ui-mode"; import i18next from "i18next"; import { PlayerPartyMemberPokemonPhase } from "#app/phases/player-party-member-pokemon-phase"; import type Pokemon from "#app/field/pokemon"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; export enum LearnMoveType { /** For learning a move via level-up, evolution, or other non-item-based event */ @@ -24,6 +23,7 @@ export enum LearnMoveType { } export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { + public readonly phaseName = "LearnMovePhase"; private moveId: MoveId; private messageMode: UiMode; private learnMoveType: LearnMoveType; @@ -195,7 +195,7 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { pokemon.usedTMs = []; } pokemon.usedTMs.push(this.moveId); - globalScene.tryRemovePhase(phase => phase instanceof SelectModifierPhase); + globalScene.tryRemovePhase(phase => phase.is("SelectModifierPhase")); } else if (this.learnMoveType === LearnMoveType.MEMORY) { if (this.cost !== -1) { if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { @@ -205,7 +205,7 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { } globalScene.playSound("se/buy"); } else { - globalScene.tryRemovePhase(phase => phase instanceof SelectModifierPhase); + globalScene.tryRemovePhase(phase => phase.is("SelectModifierPhase")); } } pokemon.setMove(index, this.moveId); diff --git a/src/phases/level-cap-phase.ts b/src/phases/level-cap-phase.ts index 6f3fa6fdb39..12d4d64e8e2 100644 --- a/src/phases/level-cap-phase.ts +++ b/src/phases/level-cap-phase.ts @@ -4,6 +4,7 @@ import i18next from "i18next"; import { FieldPhase } from "./field-phase"; export class LevelCapPhase extends FieldPhase { + public readonly phaseName = "LevelCapPhase"; start(): void { super.start(); diff --git a/src/phases/level-up-phase.ts b/src/phases/level-up-phase.ts index 8c4f4f58095..7cf86a313df 100644 --- a/src/phases/level-up-phase.ts +++ b/src/phases/level-up-phase.ts @@ -10,6 +10,7 @@ import { NumberHolder } from "#app/utils/common"; import i18next from "i18next"; export class LevelUpPhase extends PlayerPartyMemberPokemonPhase { + public readonly phaseName = "LevelUpPhase"; protected lastLevel: number; protected level: number; protected pokemon: PlayerPokemon = this.getPlayerPokemon(); diff --git a/src/phases/load-move-anim-phase.ts b/src/phases/load-move-anim-phase.ts index c0b6cd58c54..c9b78797407 100644 --- a/src/phases/load-move-anim-phase.ts +++ b/src/phases/load-move-anim-phase.ts @@ -8,6 +8,7 @@ import { Phase } from "#app/phase"; * isn't already loaded (e.g. for Metronome) */ export class LoadMoveAnimPhase extends Phase { + public readonly phaseName = "LoadMoveAnimPhase"; constructor(protected moveId: MoveId) { super(); } diff --git a/src/phases/login-phase.ts b/src/phases/login-phase.ts index 673b94b1148..ec12b5ddaa4 100644 --- a/src/phases/login-phase.ts +++ b/src/phases/login-phase.ts @@ -11,6 +11,7 @@ import { SelectGenderPhase } from "./select-gender-phase"; import { UnavailablePhase } from "./unavailable-phase"; export class LoginPhase extends Phase { + public readonly phaseName = "LoginPhase"; private showText: boolean; constructor(showText = true) { diff --git a/src/phases/message-phase.ts b/src/phases/message-phase.ts index b277d67de82..335258abe5c 100644 --- a/src/phases/message-phase.ts +++ b/src/phases/message-phase.ts @@ -2,6 +2,7 @@ import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; export class MessagePhase extends Phase { + public readonly phaseName = "MessagePhase"; private text: string; private callbackDelay?: number | null; private prompt?: boolean | null; diff --git a/src/phases/modifier-reward-phase.ts b/src/phases/modifier-reward-phase.ts index c94c4deb819..83bd8704f59 100644 --- a/src/phases/modifier-reward-phase.ts +++ b/src/phases/modifier-reward-phase.ts @@ -5,6 +5,10 @@ import i18next from "i18next"; import { BattlePhase } from "./battle-phase"; export class ModifierRewardPhase extends BattlePhase { + // RibbonModifierRewardPhase extends ModifierRewardPhase and to make typescript happy + // we need to use a union type here + public readonly phaseName: "ModifierRewardPhase" | "RibbonModifierRewardPhase" | "GameOverModifierRewardPhase" = + "ModifierRewardPhase"; protected modifierType: ModifierType; constructor(modifierTypeFunc: ModifierTypeFunc) { diff --git a/src/phases/money-reward-phase.ts b/src/phases/money-reward-phase.ts index 708bb3a2fa8..52cb9ecb3ff 100644 --- a/src/phases/money-reward-phase.ts +++ b/src/phases/money-reward-phase.ts @@ -6,6 +6,7 @@ import { NumberHolder } from "#app/utils/common"; import { BattlePhase } from "./battle-phase"; export class MoneyRewardPhase extends BattlePhase { + public readonly phaseName = "MoneyRewardPhase"; private moneyMultiplier: number; constructor(moneyMultiplier: number) { diff --git a/src/phases/move-anim-phase.ts b/src/phases/move-anim-phase.ts index 830e72cb8be..383841a0146 100644 --- a/src/phases/move-anim-phase.ts +++ b/src/phases/move-anim-phase.ts @@ -5,6 +5,8 @@ import { Phase } from "#app/phase"; * Plays the given {@linkcode MoveAnim} sequentially. */ export class MoveAnimPhase extends Phase { + public readonly phaseName = "MoveAnimPhase"; + constructor( protected anim: Anim, protected onSubstitute = false, diff --git a/src/phases/move-charge-phase.ts b/src/phases/move-charge-phase.ts index ea43f1ddb88..789651623fa 100644 --- a/src/phases/move-charge-phase.ts +++ b/src/phases/move-charge-phase.ts @@ -9,13 +9,13 @@ import { BooleanHolder } from "#app/utils/common"; import { MovePhase } from "#app/phases/move-phase"; import { PokemonPhase } from "#app/phases/pokemon-phase"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; /** * Phase for the "charging turn" of two-turn moves (e.g. Dig). * @extends {@linkcode PokemonPhase} */ export class MoveChargePhase extends PokemonPhase { + public readonly phaseName = "MoveChargePhase"; /** The move instance that this phase applies */ public move: PokemonMove; /** The field index targeted by the move (Charging moves assume single target) */ @@ -62,7 +62,7 @@ export class MoveChargePhase extends PokemonPhase { if (instantCharge.value) { // this MoveEndPhase will be duplicated by the queued MovePhase if not removed - globalScene.tryRemovePhase(phase => phase instanceof MoveEndPhase && phase.getPokemon() === user); + globalScene.tryRemovePhase(phase => phase.is("MoveEndPhase") && phase.getPokemon() === user); // queue a new MovePhase for this move's attack phase globalScene.unshiftPhase(new MovePhase(user, [this.targetIndex], this.move, false)); } else { diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index 636f85f0f82..3160d848624 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -82,6 +82,7 @@ import { DamageAchv } from "#app/system/achv"; type HitCheckEntry = [HitCheckResult, TypeDamageMultiplier]; export class MoveEffectPhase extends PokemonPhase { + public readonly phaseName = "MoveEffectPhase"; public move: Move; private virtual = false; protected targets: BattlerIndex[]; diff --git a/src/phases/move-end-phase.ts b/src/phases/move-end-phase.ts index 037596dca59..6642b97773b 100644 --- a/src/phases/move-end-phase.ts +++ b/src/phases/move-end-phase.ts @@ -6,6 +6,7 @@ import { applyPostSummonAbAttrs, PostSummonRemoveEffectAbAttr } from "#app/data/ import type Pokemon from "#app/field/pokemon"; export class MoveEndPhase extends PokemonPhase { + public readonly phaseName = "MoveEndPhase"; private wasFollowUp: boolean; /** Targets from the preceding MovePhase */ diff --git a/src/phases/move-header-phase.ts b/src/phases/move-header-phase.ts index c320df462d1..50100e827d6 100644 --- a/src/phases/move-header-phase.ts +++ b/src/phases/move-header-phase.ts @@ -4,6 +4,7 @@ import type Pokemon from "#app/field/pokemon"; import { BattlePhase } from "./battle-phase"; export class MoveHeaderPhase extends BattlePhase { + public readonly phaseName = "MoveHeaderPhase"; public pokemon: Pokemon; public move: PokemonMove; diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index 1ccf5b7957e..300c27e01fc 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -52,6 +52,7 @@ import { StatusEffect } from "#enums/status-effect"; import i18next from "i18next"; export class MovePhase extends BattlePhase { + public readonly phaseName = "MovePhase"; protected _pokemon: Pokemon; protected _move: PokemonMove; protected _targets: BattlerIndex[]; diff --git a/src/phases/mystery-encounter-phases.ts b/src/phases/mystery-encounter-phases.ts index fd0c4ef7949..5365ab3da32 100644 --- a/src/phases/mystery-encounter-phases.ts +++ b/src/phases/mystery-encounter-phases.ts @@ -6,7 +6,6 @@ import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-d import { CheckSwitchPhase } from "#app/phases/check-switch-phase"; import { GameOverPhase } from "#app/phases/game-over-phase"; import { NewBattlePhase } from "#app/phases/new-battle-phase"; -import { PostTurnStatusEffectPhase } from "#app/phases/post-turn-status-effect-phase"; import { ReturnPhase } from "#app/phases/return-phase"; import { ScanIvsPhase } from "#app/phases/scan-ivs-phase"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; @@ -39,6 +38,7 @@ import { SelectBiomePhase } from "./select-biome-phase"; * - Queuing of the {@linkcode MysteryEncounterOptionSelectedPhase} */ export class MysteryEncounterPhase extends Phase { + public readonly phaseName = "MysteryEncounterPhase"; private readonly FIRST_DIALOGUE_PROMPT_DELAY = 300; optionSelectSettings?: OptionSelectSettings; @@ -180,6 +180,7 @@ export class MysteryEncounterPhase extends Phase { * Any phase that is meant to follow this one MUST be queued via the onOptionSelect() logic of the selected option */ export class MysteryEncounterOptionSelectedPhase extends Phase { + public readonly phaseName = "MysteryEncounterOptionSelectedPhase"; onOptionSelect: OptionPhaseCallback; constructor() { @@ -221,6 +222,7 @@ export class MysteryEncounterOptionSelectedPhase extends Phase { * See {@linkcode TurnEndPhase} for more details */ export class MysteryEncounterBattleStartCleanupPhase extends Phase { + public readonly phaseName = "MysteryEncounterBattleStartCleanupPhase"; /** * Cleans up `TURN_END` tags, any {@linkcode PostTurnStatusEffectPhase}s, checks for Pokemon switches, then continues */ @@ -245,8 +247,8 @@ export class MysteryEncounterBattleStartCleanupPhase extends Phase { }); // Remove any status tick phases - while (globalScene.findPhase(p => p instanceof PostTurnStatusEffectPhase)) { - globalScene.tryRemovePhase(p => p instanceof PostTurnStatusEffectPhase); + while (globalScene.findPhase(p => p.is("PostTurnStatusEffectPhase"))) { + globalScene.tryRemovePhase(p => p.is("PostTurnStatusEffectPhase")); } // The total number of Pokemon in the player's party that can legally fight @@ -284,6 +286,7 @@ export class MysteryEncounterBattleStartCleanupPhase extends Phase { * - Queue the {@linkcode SummonPhase}s, {@linkcode PostSummonPhase}s, etc., required to initialize the phase queue for a battle */ export class MysteryEncounterBattlePhase extends Phase { + public readonly phaseName = "MysteryEncounterBattlePhase"; disableSwitch: boolean; constructor(disableSwitch = false) { @@ -513,6 +516,7 @@ export class MysteryEncounterBattlePhase extends Phase { * - Queuing of the {@linkcode PostMysteryEncounterPhase} */ export class MysteryEncounterRewardsPhase extends Phase { + public readonly phaseName = "MysteryEncounterRewardsPhase"; addHealPhase: boolean; constructor(addHealPhase = false) { @@ -558,7 +562,7 @@ export class MysteryEncounterRewardsPhase extends Phase { if (encounter.doEncounterRewards) { encounter.doEncounterRewards(); } else if (this.addHealPhase) { - globalScene.tryRemovePhase(p => p instanceof SelectModifierPhase); + globalScene.tryRemovePhase(p => p.is("SelectModifierPhase")); globalScene.unshiftPhase( new SelectModifierPhase(0, undefined, { fillRemaining: false, @@ -580,6 +584,7 @@ export class MysteryEncounterRewardsPhase extends Phase { * - Queuing of the next wave */ export class PostMysteryEncounterPhase extends Phase { + public readonly phaseName = "PostMysteryEncounterPhase"; private readonly FIRST_DIALOGUE_PROMPT_DELAY = 750; onPostOptionSelect?: OptionPhaseCallback; diff --git a/src/phases/new-battle-phase.ts b/src/phases/new-battle-phase.ts index 09b8ab1d335..c4cfc72fb53 100644 --- a/src/phases/new-battle-phase.ts +++ b/src/phases/new-battle-phase.ts @@ -2,13 +2,14 @@ import { globalScene } from "#app/global-scene"; import { BattlePhase } from "./battle-phase"; export class NewBattlePhase extends BattlePhase { + public readonly phaseName = "NewBattlePhase"; start() { super.start(); // cull any extra `NewBattle` phases from the queue. - globalScene.phaseQueue = globalScene.phaseQueue.filter(phase => !(phase instanceof NewBattlePhase)); + globalScene.phaseQueue = globalScene.phaseQueue.filter(phase => !phase.is("NewBattlePhase")); // `phaseQueuePrepend` is private, so we have to use this inefficient loop. - while (globalScene.tryRemoveUnshiftedPhase(phase => phase instanceof NewBattlePhase)) {} + while (globalScene.tryRemoveUnshiftedPhase(phase => phase.is("NewBattlePhase"))) {} globalScene.newBattle(); diff --git a/src/phases/new-biome-encounter-phase.ts b/src/phases/new-biome-encounter-phase.ts index ef027bfd77a..29ba67cb797 100644 --- a/src/phases/new-biome-encounter-phase.ts +++ b/src/phases/new-biome-encounter-phase.ts @@ -4,6 +4,7 @@ import { getRandomWeatherType } from "#app/data/weather"; import { NextEncounterPhase } from "./next-encounter-phase"; export class NewBiomeEncounterPhase extends NextEncounterPhase { + public readonly phaseName = "NewBiomeEncounterPhase"; doEncounter(): void { globalScene.playBgm(undefined, true); diff --git a/src/phases/next-encounter-phase.ts b/src/phases/next-encounter-phase.ts index 30b4004363c..c31b4b5bbc3 100644 --- a/src/phases/next-encounter-phase.ts +++ b/src/phases/next-encounter-phase.ts @@ -6,6 +6,7 @@ import { EncounterPhase } from "./encounter-phase"; * Handles generating, loading and preparing for it. */ export class NextEncounterPhase extends EncounterPhase { + public readonly phaseName: "NextEncounterPhase" | "NewBiomeEncounterPhase" = "NextEncounterPhase"; start() { super.start(); } diff --git a/src/phases/obtain-status-effect-phase.ts b/src/phases/obtain-status-effect-phase.ts index 47cae2dcbf6..820db910681 100644 --- a/src/phases/obtain-status-effect-phase.ts +++ b/src/phases/obtain-status-effect-phase.ts @@ -11,6 +11,7 @@ import { applyPostSetStatusAbAttrs, PostSetStatusAbAttr } from "#app/data/abilit import { isNullOrUndefined } from "#app/utils/common"; export class ObtainStatusEffectPhase extends PokemonPhase { + public readonly phaseName = "ObtainStatusEffectPhase"; private statusEffect?: StatusEffect; private turnsRemaining?: number; private sourceText?: string | null; diff --git a/src/phases/party-exp-phase.ts b/src/phases/party-exp-phase.ts index 8fd9e1cf0f6..30fc97d9105 100644 --- a/src/phases/party-exp-phase.ts +++ b/src/phases/party-exp-phase.ts @@ -6,6 +6,7 @@ import { Phase } from "#app/phase"; * Intended to be used as a more 1-off phase to provide exp to the party (such as during MEs), rather than cleanup a battle entirely */ export class PartyExpPhase extends Phase { + public readonly phaseName = "PartyExpPhase"; expValue: number; useWaveIndexMultiplier?: boolean; pokemonParticipantIds?: Set; diff --git a/src/phases/party-heal-phase.ts b/src/phases/party-heal-phase.ts index 4a9f8a0c888..765c7dbad8e 100644 --- a/src/phases/party-heal-phase.ts +++ b/src/phases/party-heal-phase.ts @@ -3,6 +3,7 @@ import { fixedInt } from "#app/utils/common"; import { BattlePhase } from "./battle-phase"; export class PartyHealPhase extends BattlePhase { + public readonly phaseName = "PartyHealPhase"; private resumeBgm: boolean; constructor(resumeBgm: boolean) { diff --git a/src/phases/pokemon-anim-phase.ts b/src/phases/pokemon-anim-phase.ts index e9f0097459a..b1a21446996 100644 --- a/src/phases/pokemon-anim-phase.ts +++ b/src/phases/pokemon-anim-phase.ts @@ -7,6 +7,7 @@ import { PokemonAnimType } from "#enums/pokemon-anim-type"; import { SpeciesId } from "#enums/species-id"; export class PokemonAnimPhase extends BattlePhase { + public readonly phaseName = "PokemonAnimPhase"; /** The type of animation to play in this phase */ protected key: PokemonAnimType; /** The Pokemon to which this animation applies */ diff --git a/src/phases/pokemon-heal-phase.ts b/src/phases/pokemon-heal-phase.ts index 7cb013251f6..60bbb17c30a 100644 --- a/src/phases/pokemon-heal-phase.ts +++ b/src/phases/pokemon-heal-phase.ts @@ -14,6 +14,7 @@ import { BattlerTagType } from "#app/enums/battler-tag-type"; import type { HealBlockTag } from "#app/data/battler-tags"; export class PokemonHealPhase extends CommonAnimPhase { + public readonly phaseName = "PokemonHealPhase"; private hpHealed: number; private message: string | null; private showFullHpMessage: boolean; diff --git a/src/phases/pokemon-transform-phase.ts b/src/phases/pokemon-transform-phase.ts index 23a9a983bae..c0f3b048003 100644 --- a/src/phases/pokemon-transform-phase.ts +++ b/src/phases/pokemon-transform-phase.ts @@ -13,6 +13,7 @@ import i18next from "i18next"; * Used for Transform (move) and Imposter (ability) */ export class PokemonTransformPhase extends PokemonPhase { + public readonly phaseName = "PokemonTransformPhase"; protected targetIndex: BattlerIndex; private playSound: boolean; diff --git a/src/phases/post-game-over-phase.ts b/src/phases/post-game-over-phase.ts index 753251e992f..f985419da7a 100644 --- a/src/phases/post-game-over-phase.ts +++ b/src/phases/post-game-over-phase.ts @@ -4,6 +4,7 @@ import type { EndCardPhase } from "./end-card-phase"; import { TitlePhase } from "./title-phase"; export class PostGameOverPhase extends Phase { + public readonly phaseName = "PostGameOverPhase"; private endCardPhase?: EndCardPhase; constructor(endCardPhase?: EndCardPhase) { diff --git a/src/phases/post-summon-phase.ts b/src/phases/post-summon-phase.ts index 446d45bb2fa..a7faf614292 100644 --- a/src/phases/post-summon-phase.ts +++ b/src/phases/post-summon-phase.ts @@ -7,6 +7,7 @@ import { MysteryEncounterPostSummonTag } from "#app/data/battler-tags"; import { BattlerTagType } from "#enums/battler-tag-type"; export class PostSummonPhase extends PokemonPhase { + public readonly phaseName = "PostSummonPhase"; start() { super.start(); diff --git a/src/phases/post-turn-status-effect-phase.ts b/src/phases/post-turn-status-effect-phase.ts index 9b530d48196..47a84059745 100644 --- a/src/phases/post-turn-status-effect-phase.ts +++ b/src/phases/post-turn-status-effect-phase.ts @@ -17,6 +17,7 @@ import { BooleanHolder, NumberHolder } from "#app/utils/common"; import { PokemonPhase } from "./pokemon-phase"; export class PostTurnStatusEffectPhase extends PokemonPhase { + public readonly phaseName = "PostTurnStatusEffectPhase"; // biome-ignore lint/complexity/noUselessConstructor: Not unnecessary as it makes battlerIndex required constructor(battlerIndex: BattlerIndex) { super(battlerIndex); diff --git a/src/phases/quiet-form-change-phase.ts b/src/phases/quiet-form-change-phase.ts index 76411f62f77..9f6b5cb3361 100644 --- a/src/phases/quiet-form-change-phase.ts +++ b/src/phases/quiet-form-change-phase.ts @@ -9,7 +9,7 @@ import type Pokemon from "#app/field/pokemon"; import { EnemyPokemon } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { BattlePhase } from "./battle-phase"; -import { MovePhase } from "./move-phase"; +import type { MovePhase } from "./move-phase"; import { PokemonHealPhase } from "./pokemon-heal-phase"; import { applyAbAttrs, @@ -19,6 +19,7 @@ import { } from "#app/data/abilities/ability"; export class QuietFormChangePhase extends BattlePhase { + public readonly phaseName = "QuietFormChangePhase"; protected pokemon: Pokemon; protected formChange: SpeciesFormChange; @@ -168,7 +169,7 @@ export class QuietFormChangePhase extends BattlePhase { this.pokemon.initBattleInfo(); this.pokemon.cry(); - const movePhase = globalScene.findPhase(p => p instanceof MovePhase && p.pokemon === this.pokemon) as MovePhase; + const movePhase = globalScene.findPhase(p => p.is("MovePhase") && p.pokemon === this.pokemon) as MovePhase; if (movePhase) { movePhase.cancel(); } diff --git a/src/phases/reload-session-phase.ts b/src/phases/reload-session-phase.ts index 8cd5f67b43a..ac9337753c4 100644 --- a/src/phases/reload-session-phase.ts +++ b/src/phases/reload-session-phase.ts @@ -4,6 +4,7 @@ import { UiMode } from "#enums/ui-mode"; import { fixedInt } from "#app/utils/common"; export class ReloadSessionPhase extends Phase { + public readonly phaseName = "ReloadSessionPhase"; private systemDataStr?: string; constructor(systemDataStr?: string) { diff --git a/src/phases/reset-status-phase.ts b/src/phases/reset-status-phase.ts index 19bfc3027e2..779f375d7e2 100644 --- a/src/phases/reset-status-phase.ts +++ b/src/phases/reset-status-phase.ts @@ -7,6 +7,7 @@ import { BattlePhase } from "#app/phases/battle-phase"; * This is necessary to perform in a phase primarly to ensure that the status icon disappears at the correct time in the battle */ export class ResetStatusPhase extends BattlePhase { + public readonly phaseName = "ResetStatusPhase"; private readonly pokemon: Pokemon; private readonly affectConfusion: boolean; private readonly reloadAssets: boolean; diff --git a/src/phases/return-phase.ts b/src/phases/return-phase.ts index 6dee982a4f0..6365256d40a 100644 --- a/src/phases/return-phase.ts +++ b/src/phases/return-phase.ts @@ -4,6 +4,7 @@ import { SwitchType } from "#enums/switch-type"; import { SwitchSummonPhase } from "./switch-summon-phase"; export class ReturnPhase extends SwitchSummonPhase { + public readonly phaseName = "ReturnPhase"; constructor(fieldIndex: number) { super(SwitchType.SWITCH, fieldIndex, -1, true); } diff --git a/src/phases/revival-blessing-phase.ts b/src/phases/revival-blessing-phase.ts index 428acaf9ed4..3f70c93dd7a 100644 --- a/src/phases/revival-blessing-phase.ts +++ b/src/phases/revival-blessing-phase.ts @@ -15,6 +15,7 @@ import type { PlayerPokemon } from "#app/field/pokemon"; * when used by one of the player's Pokemon. */ export class RevivalBlessingPhase extends BattlePhase { + public readonly phaseName = "RevivalBlessingPhase"; constructor(protected user: PlayerPokemon) { super(); } diff --git a/src/phases/ribbon-modifier-reward-phase.ts b/src/phases/ribbon-modifier-reward-phase.ts index 21114ab3de9..949f7af0302 100644 --- a/src/phases/ribbon-modifier-reward-phase.ts +++ b/src/phases/ribbon-modifier-reward-phase.ts @@ -6,6 +6,7 @@ import i18next from "i18next"; import { ModifierRewardPhase } from "./modifier-reward-phase"; export class RibbonModifierRewardPhase extends ModifierRewardPhase { + public readonly phaseName = "RibbonModifierRewardPhase"; private species: PokemonSpecies; constructor(modifierTypeFunc: ModifierTypeFunc, species: PokemonSpecies) { diff --git a/src/phases/scan-ivs-phase.ts b/src/phases/scan-ivs-phase.ts index d79a32bd47e..df68a2d1cab 100644 --- a/src/phases/scan-ivs-phase.ts +++ b/src/phases/scan-ivs-phase.ts @@ -8,6 +8,7 @@ import i18next from "i18next"; import { PokemonPhase } from "./pokemon-phase"; export class ScanIvsPhase extends PokemonPhase { + public readonly phaseName = "ScanIvsPhase"; // biome-ignore lint/complexity/noUselessConstructor: This changes `battlerIndex` to be required constructor(battlerIndex: BattlerIndex) { super(battlerIndex); diff --git a/src/phases/select-biome-phase.ts b/src/phases/select-biome-phase.ts index a7736b16811..ef6b39e8b8f 100644 --- a/src/phases/select-biome-phase.ts +++ b/src/phases/select-biome-phase.ts @@ -10,6 +10,7 @@ import { PartyHealPhase } from "./party-heal-phase"; import { SwitchBiomePhase } from "./switch-biome-phase"; export class SelectBiomePhase extends BattlePhase { + public readonly phaseName = "SelectBiomePhase"; start() { super.start(); diff --git a/src/phases/select-challenge-phase.ts b/src/phases/select-challenge-phase.ts index 76ac8a60c4f..dcf72d1b441 100644 --- a/src/phases/select-challenge-phase.ts +++ b/src/phases/select-challenge-phase.ts @@ -3,6 +3,7 @@ import { Phase } from "#app/phase"; import { UiMode } from "#enums/ui-mode"; export class SelectChallengePhase extends Phase { + public readonly phaseName = "SelectChallengePhase"; start() { super.start(); diff --git a/src/phases/select-gender-phase.ts b/src/phases/select-gender-phase.ts index a1171c1a5db..ad8515e312e 100644 --- a/src/phases/select-gender-phase.ts +++ b/src/phases/select-gender-phase.ts @@ -6,6 +6,7 @@ import { UiMode } from "#enums/ui-mode"; import i18next from "i18next"; export class SelectGenderPhase extends Phase { + public readonly phaseName = "SelectGenderPhase"; start(): void { super.start(); diff --git a/src/phases/select-modifier-phase.ts b/src/phases/select-modifier-phase.ts index 5f11441333b..6e429d9ad7f 100644 --- a/src/phases/select-modifier-phase.ts +++ b/src/phases/select-modifier-phase.ts @@ -32,6 +32,7 @@ import type { CustomModifierSettings } from "#app/modifier/modifier-type"; import { isNullOrUndefined, NumberHolder } from "#app/utils/common"; export class SelectModifierPhase extends BattlePhase { + public readonly phaseName = "SelectModifierPhase"; private rerollCount: number; private modifierTiers?: ModifierTier[]; private customModifierSettings?: CustomModifierSettings; diff --git a/src/phases/select-starter-phase.ts b/src/phases/select-starter-phase.ts index 6d333f4001c..d25c2dd7211 100644 --- a/src/phases/select-starter-phase.ts +++ b/src/phases/select-starter-phase.ts @@ -15,6 +15,7 @@ import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; import { isNullOrUndefined } from "#app/utils/common"; export class SelectStarterPhase extends Phase { + public readonly phaseName = "SelectStarterPhase"; start() { super.start(); diff --git a/src/phases/select-target-phase.ts b/src/phases/select-target-phase.ts index f8a8ecfbf18..46ba378a56c 100644 --- a/src/phases/select-target-phase.ts +++ b/src/phases/select-target-phase.ts @@ -8,6 +8,7 @@ import i18next from "#app/plugins/i18n"; import { allMoves } from "#app/data/data-lists"; export class SelectTargetPhase extends PokemonPhase { + public readonly phaseName = "SelectTargetPhase"; // biome-ignore lint/complexity/noUselessConstructor: This makes `fieldIndex` required constructor(fieldIndex: number) { super(fieldIndex); diff --git a/src/phases/shiny-sparkle-phase.ts b/src/phases/shiny-sparkle-phase.ts index 87a7db29cf6..93d7dd67209 100644 --- a/src/phases/shiny-sparkle-phase.ts +++ b/src/phases/shiny-sparkle-phase.ts @@ -3,6 +3,7 @@ import type { BattlerIndex } from "#app/battle"; import { PokemonPhase } from "./pokemon-phase"; export class ShinySparklePhase extends PokemonPhase { + public readonly phaseName = "ShinySparklePhase"; // biome-ignore lint/complexity/noUselessConstructor: This makes `battlerIndex` required constructor(battlerIndex: BattlerIndex) { super(battlerIndex); diff --git a/src/phases/show-ability-phase.ts b/src/phases/show-ability-phase.ts index d6193ac3946..81aa69537e5 100644 --- a/src/phases/show-ability-phase.ts +++ b/src/phases/show-ability-phase.ts @@ -5,6 +5,7 @@ import { getPokemonNameWithAffix } from "#app/messages"; import { HideAbilityPhase } from "#app/phases/hide-ability-phase"; export class ShowAbilityPhase extends PokemonPhase { + public readonly phaseName = "ShowAbilityPhase"; private passive: boolean; private pokemonName: string; private abilityName: string; diff --git a/src/phases/show-party-exp-bar-phase.ts b/src/phases/show-party-exp-bar-phase.ts index 89bec6d8fdd..6b4236f0868 100644 --- a/src/phases/show-party-exp-bar-phase.ts +++ b/src/phases/show-party-exp-bar-phase.ts @@ -8,6 +8,7 @@ import { LevelUpPhase } from "./level-up-phase"; import { PlayerPartyMemberPokemonPhase } from "./player-party-member-pokemon-phase"; export class ShowPartyExpBarPhase extends PlayerPartyMemberPokemonPhase { + public readonly phaseName = "ShowPartyExpBarPhase"; private expValue: number; constructor(partyMemberIndex: number, expValue: number) { diff --git a/src/phases/show-trainer-phase.ts b/src/phases/show-trainer-phase.ts index b6c1e345c70..bae6ecd839c 100644 --- a/src/phases/show-trainer-phase.ts +++ b/src/phases/show-trainer-phase.ts @@ -3,6 +3,7 @@ import { PlayerGender } from "#app/enums/player-gender"; import { BattlePhase } from "./battle-phase"; export class ShowTrainerPhase extends BattlePhase { + public readonly phaseName = "ShowTrainerPhase"; start() { super.start(); diff --git a/src/phases/stat-stage-change-phase.ts b/src/phases/stat-stage-change-phase.ts index 6731e45025c..baa93c63099 100644 --- a/src/phases/stat-stage-change-phase.ts +++ b/src/phases/stat-stage-change-phase.ts @@ -31,6 +31,7 @@ export type StatStageChangeCallback = ( ) => void; export class StatStageChangePhase extends PokemonPhase { + public readonly phaseName = "StatStageChangePhase"; private stats: BattleStat[]; private selfTarget: boolean; private stages: number; @@ -235,9 +236,9 @@ export class StatStageChangePhase extends PokemonPhase { // Look for any other stat change phases; if this is the last one, do White Herb check const existingPhase = globalScene.findPhase( - p => p instanceof StatStageChangePhase && p.battlerIndex === this.battlerIndex, + p => p.is("StatStageChangePhase") && p.battlerIndex === this.battlerIndex, ); - if (!(existingPhase instanceof StatStageChangePhase)) { + if (!existingPhase?.is("StatStageChangePhase")) { // Apply White Herb if needed const whiteHerb = globalScene.applyModifier( ResetNegativeStatStageModifier, @@ -316,7 +317,7 @@ export class StatStageChangePhase extends PokemonPhase { while ( (existingPhase = globalScene.findPhase( p => - p instanceof StatStageChangePhase && + p.is("StatStageChangePhase") && p.battlerIndex === this.battlerIndex && p.stats.length === 1 && p.stats[0] === this.stats[0] && @@ -335,7 +336,7 @@ export class StatStageChangePhase extends PokemonPhase { while ( (existingPhase = globalScene.findPhase( p => - p instanceof StatStageChangePhase && + p.is("StatStageChangePhase") && p.battlerIndex === this.battlerIndex && p.selfTarget === this.selfTarget && accEva.some(s => p.stats.includes(s)) === isAccEva && diff --git a/src/phases/summon-missing-phase.ts b/src/phases/summon-missing-phase.ts index a692455ce47..ce3e982055e 100644 --- a/src/phases/summon-missing-phase.ts +++ b/src/phases/summon-missing-phase.ts @@ -4,6 +4,7 @@ import { SummonPhase } from "./summon-phase"; import { globalScene } from "#app/global-scene"; export class SummonMissingPhase extends SummonPhase { + public readonly phaseName = "SummonMissingPhase"; preSummon(): void { globalScene.ui.showText( i18next.t("battle:sendOutPokemon", { diff --git a/src/phases/summon-phase.ts b/src/phases/summon-phase.ts index c217583f163..2cd7b122bb3 100644 --- a/src/phases/summon-phase.ts +++ b/src/phases/summon-phase.ts @@ -17,6 +17,8 @@ import { applyPreSummonAbAttrs, PreSummonAbAttr } from "#app/data/abilities/abil import { globalScene } from "#app/global-scene"; export class SummonPhase extends PartyMemberPokemonPhase { + // The union type is needed to keep typescript happy as these phases extend from SummonPhase + public readonly phaseName: "SummonPhase" | "SummonMissingPhase" | "SwitchSummonPhase" | "ReturnPhase" = "SummonPhase"; private loaded: boolean; constructor(fieldIndex: number, player = true, loaded = false) { diff --git a/src/phases/switch-biome-phase.ts b/src/phases/switch-biome-phase.ts index 69a6c97cd9a..f84f1d517b4 100644 --- a/src/phases/switch-biome-phase.ts +++ b/src/phases/switch-biome-phase.ts @@ -4,6 +4,7 @@ import { getBiomeKey } from "#app/field/arena"; import { BattlePhase } from "./battle-phase"; export class SwitchBiomePhase extends BattlePhase { + public readonly phaseName = "SwitchBiomePhase"; private nextBiome: BiomeId; constructor(nextBiome: BiomeId) { diff --git a/src/phases/switch-phase.ts b/src/phases/switch-phase.ts index c056b186021..6017aa0fa70 100644 --- a/src/phases/switch-phase.ts +++ b/src/phases/switch-phase.ts @@ -3,7 +3,6 @@ import PartyUiHandler, { PartyOption, PartyUiMode } from "#app/ui/party-ui-handl import { UiMode } from "#enums/ui-mode"; import { SwitchType } from "#enums/switch-type"; import { BattlePhase } from "./battle-phase"; -import { PostSummonPhase } from "./post-summon-phase"; import { SwitchSummonPhase } from "./switch-summon-phase"; /** @@ -11,6 +10,7 @@ import { SwitchSummonPhase } from "./switch-summon-phase"; * for the player (if a switch would be valid for the current battle state). */ export class SwitchPhase extends BattlePhase { + public readonly phaseName = "SwitchPhase"; protected readonly fieldIndex: number; private readonly switchType: SwitchType; private readonly isModal: boolean; @@ -76,7 +76,7 @@ export class SwitchPhase extends BattlePhase { if (slotIndex >= globalScene.currentBattle.getBattlerCount() && slotIndex < 6) { // Remove any pre-existing PostSummonPhase under the same field index. // Pre-existing PostSummonPhases may occur when this phase is invoked during a prompt to switch at the start of a wave. - globalScene.tryRemovePhase(p => p instanceof PostSummonPhase && p.player && p.fieldIndex === this.fieldIndex); + globalScene.tryRemovePhase(p => p.is("PostSummonPhase") && p.player && p.fieldIndex === this.fieldIndex); const switchType = option === PartyOption.PASS_BATON ? SwitchType.BATON_PASS : this.switchType; globalScene.unshiftPhase(new SwitchSummonPhase(switchType, fieldIndex, slotIndex, this.doReturn)); } diff --git a/src/phases/switch-summon-phase.ts b/src/phases/switch-summon-phase.ts index 6bdbb66be14..d81ca6029c5 100644 --- a/src/phases/switch-summon-phase.ts +++ b/src/phases/switch-summon-phase.ts @@ -22,6 +22,7 @@ import { SubstituteTag } from "#app/data/battler-tags"; import { SwitchType } from "#enums/switch-type"; export class SwitchSummonPhase extends SummonPhase { + public readonly phaseName: "SwitchSummonPhase" | "ReturnPhase" = "SwitchSummonPhase"; private readonly switchType: SwitchType; private readonly slotIndex: number; private readonly doReturn: boolean; diff --git a/src/phases/tera-phase.ts b/src/phases/tera-phase.ts index c9320daf12f..5e4ea2fe54e 100644 --- a/src/phases/tera-phase.ts +++ b/src/phases/tera-phase.ts @@ -9,6 +9,7 @@ import { SpeciesFormChangeTeraTrigger } from "#app/data/pokemon-forms"; import { CommonAnim, CommonBattleAnim } from "#app/data/battle-anims"; export class TeraPhase extends BattlePhase { + public readonly phaseName = "TeraPhase"; public pokemon: Pokemon; constructor(pokemon: Pokemon) { diff --git a/src/phases/title-phase.ts b/src/phases/title-phase.ts index 56057c23372..aa9ae49ca8b 100644 --- a/src/phases/title-phase.ts +++ b/src/phases/title-phase.ts @@ -29,6 +29,7 @@ import { globalScene } from "#app/global-scene"; import Overrides from "#app/overrides"; export class TitlePhase extends Phase { + public readonly phaseName = "TitlePhase"; private loaded = false; private lastSessionData: SessionSaveData; public gameMode: GameModes; diff --git a/src/phases/toggle-double-position-phase.ts b/src/phases/toggle-double-position-phase.ts index 37f47d5cf95..a6b8705f580 100644 --- a/src/phases/toggle-double-position-phase.ts +++ b/src/phases/toggle-double-position-phase.ts @@ -3,6 +3,7 @@ import { FieldPosition } from "#app/field/pokemon"; import { BattlePhase } from "./battle-phase"; export class ToggleDoublePositionPhase extends BattlePhase { + public readonly phaseName = "ToggleDoublePositionPhase"; private double: boolean; constructor(double: boolean) { diff --git a/src/phases/trainer-victory-phase.ts b/src/phases/trainer-victory-phase.ts index daf5c38e57b..bd035248530 100644 --- a/src/phases/trainer-victory-phase.ts +++ b/src/phases/trainer-victory-phase.ts @@ -14,6 +14,7 @@ import { achvs } from "#app/system/achv"; import { timedEventManager } from "#app/global-event-manager"; export class TrainerVictoryPhase extends BattlePhase { + public readonly phaseName = "TrainerVictoryPhase"; start() { globalScene.disableMenu = true; diff --git a/src/phases/turn-end-phase.ts b/src/phases/turn-end-phase.ts index 756c497802b..4d486c4bbd6 100644 --- a/src/phases/turn-end-phase.ts +++ b/src/phases/turn-end-phase.ts @@ -18,6 +18,7 @@ import { PokemonHealPhase } from "./pokemon-heal-phase"; import { globalScene } from "#app/global-scene"; export class TurnEndPhase extends FieldPhase { + public readonly phaseName = "TurnEndPhase"; start() { super.start(); diff --git a/src/phases/turn-init-phase.ts b/src/phases/turn-init-phase.ts index 0c110024af7..7f94acd3b32 100644 --- a/src/phases/turn-init-phase.ts +++ b/src/phases/turn-init-phase.ts @@ -15,6 +15,7 @@ import { TurnStartPhase } from "./turn-start-phase"; import { globalScene } from "#app/global-scene"; export class TurnInitPhase extends FieldPhase { + public readonly phaseName = "TurnInitPhase"; start() { super.start(); diff --git a/src/phases/turn-start-phase.ts b/src/phases/turn-start-phase.ts index a02d869af10..2d009b30bf3 100644 --- a/src/phases/turn-start-phase.ts +++ b/src/phases/turn-start-phase.ts @@ -25,6 +25,7 @@ import { globalScene } from "#app/global-scene"; import { TeraPhase } from "./tera-phase"; export class TurnStartPhase extends FieldPhase { + public readonly phaseName = "TurnStartPhase"; /** * This orders the active Pokemon on the field by speed into an BattlerIndex array and returns that array. * It also checks for Trick Room and reverses the array if it is present. diff --git a/src/phases/unavailable-phase.ts b/src/phases/unavailable-phase.ts index e5f1d899191..4c4333ceb90 100644 --- a/src/phases/unavailable-phase.ts +++ b/src/phases/unavailable-phase.ts @@ -4,6 +4,7 @@ import { UiMode } from "#enums/ui-mode"; import { LoginPhase } from "./login-phase"; export class UnavailablePhase extends Phase { + public readonly phaseName = "UnavailablePhase"; start(): void { globalScene.ui.setMode(UiMode.UNAVAILABLE, () => { globalScene.unshiftPhase(new LoginPhase(true)); diff --git a/src/phases/unlock-phase.ts b/src/phases/unlock-phase.ts index 7a69fc207bb..839ac31dc5d 100644 --- a/src/phases/unlock-phase.ts +++ b/src/phases/unlock-phase.ts @@ -6,6 +6,7 @@ import { UiMode } from "#enums/ui-mode"; import i18next from "i18next"; export class UnlockPhase extends Phase { + public readonly phaseName = "UnlockPhase"; private unlockable: Unlockables; constructor(unlockable: Unlockables) { diff --git a/src/phases/victory-phase.ts b/src/phases/victory-phase.ts index 1204877fec2..2d21f8abc08 100644 --- a/src/phases/victory-phase.ts +++ b/src/phases/victory-phase.ts @@ -18,6 +18,7 @@ import { timedEventManager } from "#app/global-event-manager"; import { SelectBiomePhase } from "./select-biome-phase"; export class VictoryPhase extends PokemonPhase { + public readonly phaseName = "VictoryPhase"; /** If true, indicates that the phase is intended for EXP purposes only, and not to continue a battle to next phase */ isExpOnly: boolean; diff --git a/src/phases/weather-effect-phase.ts b/src/phases/weather-effect-phase.ts index d89c78e96c7..cd91b89771c 100644 --- a/src/phases/weather-effect-phase.ts +++ b/src/phases/weather-effect-phase.ts @@ -19,6 +19,7 @@ import { BooleanHolder, toDmgValue } from "#app/utils/common"; import { CommonAnimPhase } from "./common-anim-phase"; export class WeatherEffectPhase extends CommonAnimPhase { + public readonly phaseName = "WeatherEffectPhase"; public weather: Weather | null; constructor() { diff --git a/src/ui/command-ui-handler.ts b/src/ui/command-ui-handler.ts index fbfd4d2623b..0d67fdea624 100644 --- a/src/ui/command-ui-handler.ts +++ b/src/ui/command-ui-handler.ts @@ -5,7 +5,7 @@ import UiHandler from "./ui-handler"; import i18next from "i18next"; import { Button } from "#enums/buttons"; import { getPokemonNameWithAffix } from "#app/messages"; -import { CommandPhase } from "#app/phases/command-phase"; +import type { CommandPhase } from "#app/phases/command-phase"; import { globalScene } from "#app/global-scene"; import { TerastallizeAccessModifier } from "#app/modifier/modifier"; import { PokemonType } from "#enums/pokemon-type"; @@ -75,7 +75,7 @@ export default class CommandUiHandler extends UiHandler { let commandPhase: CommandPhase; const currentPhase = globalScene.getCurrentPhase(); - if (currentPhase instanceof CommandPhase) { + if (currentPhase?.is("CommandPhase")) { commandPhase = currentPhase; } else { commandPhase = globalScene.getStandbyPhase() as CommandPhase; diff --git a/src/ui/egg-hatch-scene-handler.ts b/src/ui/egg-hatch-scene-handler.ts index 76e2c54f4b6..b2863a213f8 100644 --- a/src/ui/egg-hatch-scene-handler.ts +++ b/src/ui/egg-hatch-scene-handler.ts @@ -1,7 +1,6 @@ import { UiMode } from "#enums/ui-mode"; import UiHandler from "./ui-handler"; import { Button } from "#enums/buttons"; -import { EggHatchPhase } from "#app/phases/egg-hatch-phase"; import { globalScene } from "#app/global-scene"; export default class EggHatchSceneHandler extends UiHandler { @@ -46,7 +45,7 @@ export default class EggHatchSceneHandler extends UiHandler { processInput(button: Button): boolean { if (button === Button.ACTION || button === Button.CANCEL) { const phase = globalScene.getCurrentPhase(); - if (phase instanceof EggHatchPhase && phase.trySkip()) { + if (phase?.is("EggHatchPhase") && phase.trySkip()) { return true; } } diff --git a/src/ui/egg-summary-ui-handler.ts b/src/ui/egg-summary-ui-handler.ts index ddc536fe1ad..ed2506ba0c1 100644 --- a/src/ui/egg-summary-ui-handler.ts +++ b/src/ui/egg-summary-ui-handler.ts @@ -4,7 +4,6 @@ import MessageUiHandler from "./message-ui-handler"; import { getEggTierForSpecies } from "../data/egg"; import { Button } from "#enums/buttons"; import PokemonHatchInfoContainer from "./pokemon-hatch-info-container"; -import { EggSummaryPhase } from "#app/phases/egg-summary-phase"; import type { EggHatchData } from "#app/data/egg-hatch-data"; import ScrollableGridUiHandler from "./scrollable-grid-handler"; import { HatchedPokemonContainer } from "./hatched-pokemon-container"; @@ -223,7 +222,7 @@ export default class EggSummaryUiHandler extends MessageUiHandler { if (button === Button.CANCEL) { if (!this.blockExit) { const phase = globalScene.getCurrentPhase(); - if (phase instanceof EggSummaryPhase) { + if (phase?.is("EggSummaryPhase")) { phase.end(); } success = true; diff --git a/src/ui/menu-ui-handler.ts b/src/ui/menu-ui-handler.ts index cc684111617..b6c3a9d7b8e 100644 --- a/src/ui/menu-ui-handler.ts +++ b/src/ui/menu-ui-handler.ts @@ -15,7 +15,6 @@ import { Button } from "#enums/buttons"; import { GameDataType } from "#enums/game-data-type"; import BgmBar from "#app/ui/bgm-bar"; import type AwaitableUiHandler from "./awaitable-ui-handler"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import { AdminMode, getAdminModeName } from "./admin-ui-handler"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; @@ -126,7 +125,7 @@ export default class MenuUiHandler extends MessageUiHandler { const ui = this.getUi(); this.excludedMenus = () => [ { - condition: globalScene.getCurrentPhase() instanceof SelectModifierPhase, + condition: !!globalScene.getCurrentPhase()?.is("SelectModifierPhase"), options: [MenuOptions.EGG_GACHA], }, { condition: bypassLogin, options: [MenuOptions.LOG_OUT] }, diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index 452ffcf5192..e26ecb531e9 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -29,7 +29,6 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { getPokemonNameWithAffix } from "#app/messages"; import type { CommandPhase } from "#app/phases/command-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import { globalScene } from "#app/global-scene"; const defaultMessage = i18next.t("partyUiHandler:choosePokemon"); @@ -751,7 +750,7 @@ export default class PartyUiHandler extends MessageUiHandler { // TODO: This risks hitting the other options (.MOVE_i and ALL) so does it? Do we need an extra check? if ( option >= PartyOption.FORM_CHANGE_ITEM && - globalScene.getCurrentPhase() instanceof SelectModifierPhase && + globalScene.getCurrentPhase()?.is("SelectModifierPhase") && this.partyUiMode === PartyUiMode.CHECK ) { const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); @@ -1338,7 +1337,7 @@ export default class PartyUiHandler extends MessageUiHandler { this.addCommonOptions(pokemon); break; case PartyUiMode.CHECK: - if (globalScene.getCurrentPhase() instanceof SelectModifierPhase) { + if (globalScene.getCurrentPhase()?.is("SelectModifierPhase")) { const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); for (let i = 0; i < formChangeItemModifiers.length; i++) { this.options.push(PartyOption.FORM_CHANGE_ITEM + i); diff --git a/src/ui/pokedex-page-ui-handler.ts b/src/ui/pokedex-page-ui-handler.ts index 263842bd4f9..00e166f075d 100644 --- a/src/ui/pokedex-page-ui-handler.ts +++ b/src/ui/pokedex-page-ui-handler.ts @@ -665,7 +665,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { show(args: any[]): boolean { // Allow the use of candies if we are in one of the whitelisted phases this.canUseCandies = ["TitlePhase", "SelectStarterPhase", "CommandPhase"].includes( - globalScene.getCurrentPhase()?.constructor.name ?? "", + globalScene.getCurrentPhase()?.phaseName ?? "", ); if (args.length >= 1 && args[0] === "refresh") { diff --git a/test/testUtils/phaseInterceptor.ts b/test/testUtils/phaseInterceptor.ts index b1d76ecd4a6..b7577550568 100644 --- a/test/testUtils/phaseInterceptor.ts +++ b/test/testUtils/phaseInterceptor.ts @@ -63,6 +63,8 @@ import { UnlockPhase } from "#app/phases/unlock-phase"; import { PostGameOverPhase } from "#app/phases/post-game-over-phase"; import { RevivalBlessingPhase } from "#app/phases/revival-blessing-phase"; +import type { PhaseClass, PhaseString } from "#app/@types/phase-types"; + export interface PromptHandler { phaseTarget?: string; mode?: UiMode; @@ -71,126 +73,6 @@ export interface PromptHandler { awaitingActionInput?: boolean; } -type PhaseClass = - | typeof LoginPhase - | typeof TitlePhase - | typeof SelectGenderPhase - | typeof NewBiomeEncounterPhase - | typeof SelectStarterPhase - | typeof PostSummonPhase - | typeof SummonPhase - | typeof ToggleDoublePositionPhase - | typeof CheckSwitchPhase - | typeof ShowAbilityPhase - | typeof MessagePhase - | typeof TurnInitPhase - | typeof CommandPhase - | typeof EnemyCommandPhase - | typeof TurnStartPhase - | typeof MovePhase - | typeof MoveEffectPhase - | typeof DamageAnimPhase - | typeof FaintPhase - | typeof BerryPhase - | typeof TurnEndPhase - | typeof BattleEndPhase - | typeof EggLapsePhase - | typeof SelectModifierPhase - | typeof NextEncounterPhase - | typeof NewBattlePhase - | typeof VictoryPhase - | typeof LearnMovePhase - | typeof MoveEndPhase - | typeof StatStageChangePhase - | typeof ShinySparklePhase - | typeof SelectTargetPhase - | typeof UnavailablePhase - | typeof QuietFormChangePhase - | typeof SwitchPhase - | typeof SwitchSummonPhase - | typeof PartyHealPhase - | typeof FormChangePhase - | typeof EvolutionPhase - | typeof EndEvolutionPhase - | typeof LevelCapPhase - | typeof AttemptRunPhase - | typeof SelectBiomePhase - | typeof MysteryEncounterPhase - | typeof MysteryEncounterOptionSelectedPhase - | typeof MysteryEncounterBattlePhase - | typeof MysteryEncounterRewardsPhase - | typeof PostMysteryEncounterPhase - | typeof RibbonModifierRewardPhase - | typeof GameOverModifierRewardPhase - | typeof ModifierRewardPhase - | typeof PartyExpPhase - | typeof ExpPhase - | typeof EncounterPhase - | typeof GameOverPhase - | typeof UnlockPhase - | typeof PostGameOverPhase - | typeof RevivalBlessingPhase; - -type PhaseString = - | "LoginPhase" - | "TitlePhase" - | "SelectGenderPhase" - | "NewBiomeEncounterPhase" - | "SelectStarterPhase" - | "PostSummonPhase" - | "SummonPhase" - | "ToggleDoublePositionPhase" - | "CheckSwitchPhase" - | "ShowAbilityPhase" - | "MessagePhase" - | "TurnInitPhase" - | "CommandPhase" - | "EnemyCommandPhase" - | "TurnStartPhase" - | "MovePhase" - | "MoveEffectPhase" - | "DamageAnimPhase" - | "FaintPhase" - | "BerryPhase" - | "TurnEndPhase" - | "BattleEndPhase" - | "EggLapsePhase" - | "SelectModifierPhase" - | "NextEncounterPhase" - | "NewBattlePhase" - | "VictoryPhase" - | "LearnMovePhase" - | "MoveEndPhase" - | "StatStageChangePhase" - | "ShinySparklePhase" - | "SelectTargetPhase" - | "UnavailablePhase" - | "QuietFormChangePhase" - | "SwitchPhase" - | "SwitchSummonPhase" - | "PartyHealPhase" - | "FormChangePhase" - | "EvolutionPhase" - | "EndEvolutionPhase" - | "LevelCapPhase" - | "AttemptRunPhase" - | "SelectBiomePhase" - | "MysteryEncounterPhase" - | "MysteryEncounterOptionSelectedPhase" - | "MysteryEncounterBattlePhase" - | "MysteryEncounterRewardsPhase" - | "PostMysteryEncounterPhase" - | "RibbonModifierRewardPhase" - | "GameOverModifierRewardPhase" - | "ModifierRewardPhase" - | "PartyExpPhase" - | "ExpPhase" - | "EncounterPhase" - | "GameOverPhase" - | "UnlockPhase" - | "PostGameOverPhase" - | "RevivalBlessingPhase"; - type PhaseInterceptorPhase = PhaseClass | PhaseString; export default class PhaseInterceptor { From 855868bfea4206bda9a027d6945fb3bd0f9c78dd Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Fri, 6 Jun 2025 16:15:13 -0500 Subject: [PATCH 53/71] [Refactor] Cleanup achvs ui handler (#5919) --- src/system/game-data.ts | 4 +- src/ui/achvs-ui-handler.ts | 464 ++++++++++++++++++++----------------- 2 files changed, 254 insertions(+), 214 deletions(-) diff --git a/src/system/game-data.ts b/src/system/game-data.ts index bc74ab15930..ab907d2f768 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -179,11 +179,11 @@ interface Unlocks { [key: number]: boolean; } -interface AchvUnlocks { +export interface AchvUnlocks { [key: string]: number; } -interface VoucherUnlocks { +export interface VoucherUnlocks { [key: string]: number; } diff --git a/src/ui/achvs-ui-handler.ts b/src/ui/achvs-ui-handler.ts index d0c8b716c7a..8588530d370 100644 --- a/src/ui/achvs-ui-handler.ts +++ b/src/ui/achvs-ui-handler.ts @@ -11,20 +11,20 @@ import { addWindow } from "#app/ui/ui-theme"; import { ScrollBar } from "#app/ui/scroll-bar"; import { PlayerGender } from "#enums/player-gender"; import { globalScene } from "#app/global-scene"; +import type { AchvUnlocks, VoucherUnlocks } from "#app/system/game-data"; -enum Page { - ACHIEVEMENTS, - VOUCHERS, -} +const Page = { + ACHIEVEMENTS: 0, + VOUCHERS: 1, +} as const; +type Page = (typeof Page)[keyof typeof Page]; interface LanguageSetting { TextSize: string; } const languageSettings: { [key: string]: LanguageSetting } = { - de: { - TextSize: "80px", - }, + de: { TextSize: "80px" }, }; export default class AchvsUiHandler extends MessageUiHandler { @@ -70,44 +70,35 @@ export default class AchvsUiHandler extends MessageUiHandler { setup() { const ui = this.getUi(); - this.mainContainer = globalScene.add.container(1, -(globalScene.game.canvas.height / 6) + 1); + /** Width of the global canvas / 6 */ + const WIDTH = globalScene.game.canvas.width / 6; + /** Height of the global canvas / 6 */ + const HEIGHT = globalScene.game.canvas.height / 6; - this.mainContainer.setInteractive( - new Phaser.Geom.Rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6), - Phaser.Geom.Rectangle.Contains, - ); + this.mainContainer = globalScene.add.container(1, -HEIGHT + 1); - this.headerBg = addWindow(0, 0, globalScene.game.canvas.width / 6 - 2, 24); - this.headerBg.setOrigin(0, 0); + this.mainContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, WIDTH, HEIGHT), Phaser.Geom.Rectangle.Contains); - this.headerText = addTextObject(0, 0, "", TextStyle.SETTINGS_LABEL); - this.headerText.setOrigin(0, 0); - this.headerText.setPositionRelative(this.headerBg, 8, 4); - this.headerActionButton = new Phaser.GameObjects.Sprite(globalScene, 0, 0, "keyboard", "ACTION.png"); - this.headerActionButton.setOrigin(0, 0); - this.headerActionButton.setPositionRelative(this.headerBg, 236, 6); - this.headerActionText = addTextObject(0, 0, "", TextStyle.WINDOW, { - fontSize: "60px", - }); - this.headerActionText.setOrigin(0, 0); - this.headerActionText.setPositionRelative(this.headerBg, 264, 8); + this.headerBg = addWindow(0, 0, WIDTH - 2, 24); + + this.headerText = addTextObject(0, 0, "", TextStyle.SETTINGS_LABEL) + .setOrigin(0) + .setPositionRelative(this.headerBg, 8, 4); + this.headerActionButton = new Phaser.GameObjects.Sprite(globalScene, 0, 0, "keyboard", "ACTION.png") + .setOrigin(0) + .setPositionRelative(this.headerBg, 236, 6); + this.headerActionText = addTextObject(0, 0, "", TextStyle.WINDOW, { fontSize: "60px" }) + .setOrigin(0) + .setPositionRelative(this.headerBg, 264, 8); // We need to get the player gender from the game data to add the correct prefix to the achievement name const genderIndex = globalScene.gameData.gender ?? PlayerGender.MALE; const genderStr = PlayerGender[genderIndex].toLowerCase(); - this.achvsName = i18next.t("achv:Achievements.name", { - context: genderStr, - }); + this.achvsName = i18next.t("achv:Achievements.name", { context: genderStr }); this.vouchersName = i18next.t("voucher:vouchers"); - this.iconsBg = addWindow( - 0, - this.headerBg.height, - globalScene.game.canvas.width / 6 - 2, - globalScene.game.canvas.height / 6 - this.headerBg.height - 68, - ); - this.iconsBg.setOrigin(0, 0); + this.iconsBg = addWindow(0, this.headerBg.height, WIDTH - 2, HEIGHT - this.headerBg.height - 68).setOrigin(0); const yOffset = 6; this.scrollBar = new ScrollBar( @@ -126,68 +117,59 @@ export default class AchvsUiHandler extends MessageUiHandler { const x = (a % this.COLS) * 18; const y = Math.floor(a / this.COLS) * 18; - const icon = globalScene.add.sprite(x, y, "items", "unknown"); - icon.setOrigin(0, 0); - icon.setScale(0.5); + const icon = globalScene.add.sprite(x, y, "items", "unknown").setOrigin(0).setScale(0.5); this.icons.push(icon); this.iconsContainer.add(icon); } const titleBg = addWindow(0, this.headerBg.height + this.iconsBg.height, 174, 24); - titleBg.setOrigin(0, 0); this.titleBg = titleBg; - this.titleText = addTextObject(0, 0, "", TextStyle.WINDOW); + this.titleText = addTextObject(0, 0, "", TextStyle.WINDOW).setOrigin(); const textSize = languageSettings[i18next.language]?.TextSize ?? this.titleText.style.fontSize; this.titleText.setFontSize(textSize); const titleBgCenterX = titleBg.x + titleBg.width / 2; const titleBgCenterY = titleBg.y + titleBg.height / 2; - this.titleText.setOrigin(0.5, 0.5); this.titleText.setPosition(titleBgCenterX, titleBgCenterY); this.scoreContainer = globalScene.add.container(titleBg.x + titleBg.width, titleBg.y); const scoreBg = addWindow(0, 0, 46, 24); - scoreBg.setOrigin(0, 0); - this.scoreContainer.add(scoreBg); - this.scoreText = addTextObject(scoreBg.width / 2, scoreBg.height / 2, "", TextStyle.WINDOW); - this.scoreText.setOrigin(0.5, 0.5); - this.scoreContainer.add(this.scoreText); + this.scoreText = addTextObject(scoreBg.width / 2, scoreBg.height / 2, "", TextStyle.WINDOW).setOrigin(); + this.scoreContainer.add([scoreBg, this.scoreText]); const unlockBg = addWindow(this.scoreContainer.x + scoreBg.width, titleBg.y, 98, 24); - unlockBg.setOrigin(0, 0); - this.unlockText = addTextObject(0, 0, "", TextStyle.WINDOW); - this.unlockText.setOrigin(0.5, 0.5); - this.unlockText.setPositionRelative(unlockBg, unlockBg.width / 2, unlockBg.height / 2); + this.unlockText = addTextObject(0, 0, "", TextStyle.WINDOW) + .setPositionRelative(unlockBg, unlockBg.width / 2, unlockBg.height / 2) + .setOrigin(); - const descriptionBg = addWindow(0, titleBg.y + titleBg.height, globalScene.game.canvas.width / 6 - 2, 42); - descriptionBg.setOrigin(0, 0); + const descriptionBg = addWindow(0, titleBg.y + titleBg.height, WIDTH - 2, 42); - const descriptionText = addTextObject(0, 0, "", TextStyle.WINDOW, { - maxLines: 2, - }); - descriptionText.setWordWrapWidth(1870); - descriptionText.setOrigin(0, 0); - descriptionText.setPositionRelative(descriptionBg, 8, 4); + const descriptionText = addTextObject(0, 0, "", TextStyle.WINDOW, { maxLines: 2 }) + .setWordWrapWidth(1870) + .setOrigin(0) + .setPositionRelative(descriptionBg, 8, 4); this.message = descriptionText; - this.mainContainer.add(this.headerBg); - this.mainContainer.add(this.headerActionButton); - this.mainContainer.add(this.headerText); - this.mainContainer.add(this.headerActionText); - this.mainContainer.add(this.iconsBg); - this.mainContainer.add(this.scrollBar); - this.mainContainer.add(this.iconsContainer); - this.mainContainer.add(titleBg); - this.mainContainer.add(this.titleText); - this.mainContainer.add(this.scoreContainer); - this.mainContainer.add(unlockBg); - this.mainContainer.add(this.unlockText); - this.mainContainer.add(descriptionBg); - this.mainContainer.add(descriptionText); + this.mainContainer.add([ + this.headerBg, + this.headerActionButton, + this.headerText, + this.headerActionText, + this.iconsBg, + this.scrollBar, + this.iconsContainer, + titleBg, + this.titleText, + this.scoreContainer, + unlockBg, + this.unlockText, + descriptionBg, + descriptionText, + ]); ui.add(this.mainContainer); @@ -246,87 +228,132 @@ export default class AchvsUiHandler extends MessageUiHandler { ); } - processInput(button: Button): boolean { - const ui = this.getUi(); + // #region Input Processing + /** + * Submethod of {@linkcode processInput} that handles the action button input + * @returns Whether the success sound should be played + */ + private processActionInput(): true { + this.setScrollCursor(0); + if (this.currentPage === Page.ACHIEVEMENTS) { + this.currentPage = Page.VOUCHERS; + this.updateVoucherIcons(); + } else if (this.currentPage === Page.VOUCHERS) { + this.currentPage = Page.ACHIEVEMENTS; + this.updateAchvIcons(); + } + this.setCursor(0, true); + this.scrollBar.setTotalRows(Math.ceil(this.currentTotal / this.COLS)); + this.scrollBar.setScrollCursor(0); + this.mainContainer.update(); + return true; + } + /** + * Submethod of {@linkcode processInput} that handles the up button input + * @returns Whether the success sound should be played + */ + private processUpInput(): boolean { + if (this.cursor >= this.COLS) { + return this.setCursor(this.cursor - this.COLS); + } + if (this.scrollCursor) { + return this.setScrollCursor(this.scrollCursor - 1); + } + + // Wrap around to the last row + const success = this.setScrollCursor(Math.ceil(this.currentTotal / this.COLS) - this.ROWS); + let newCursorIndex = this.cursor + (this.ROWS - 1) * this.COLS; + if (newCursorIndex > this.currentTotal - this.scrollCursor * this.COLS - 1) { + newCursorIndex -= this.COLS; + } + return success && this.setCursor(newCursorIndex); + } + + /** + * Submethod of {@linkcode processInput} that handles the down button input + * @returns Whether the success sound should be played + */ + private processDownInput(): boolean { + const rowIndex = Math.floor(this.cursor / this.COLS); + const itemOffset = this.scrollCursor * this.COLS; + const canMoveDown = itemOffset + 1 < this.currentTotal; + + if (rowIndex >= this.ROWS - 1) { + if (this.scrollCursor < Math.ceil(this.currentTotal / this.COLS) - this.ROWS && canMoveDown) { + // scroll down one row + return this.setScrollCursor(this.scrollCursor + 1); + } + // wrap back to the first row + return this.setScrollCursor(0) && this.setCursor(this.cursor % this.COLS); + } + if (canMoveDown) { + return this.setCursor(Math.min(this.cursor + this.COLS, this.currentTotal - itemOffset - 1)); + } + return false; + } + + /** + * Submethod of {@linkcode processInput} that handles the left button input + * @returns Whether the success sound should be played + */ + private processLeftInput(): boolean { + const itemOffset = this.scrollCursor * this.COLS; + if (this.cursor % this.COLS === 0) { + return this.setCursor(Math.min(this.cursor + this.COLS - 1, this.currentTotal - itemOffset - 1)); + } + return this.setCursor(this.cursor - 1); + } + + /** + * Submethod of {@linkcode processInput} that handles the right button input + * @returns Whether the success sound should be played + */ + private processRightInput(): boolean { + const itemOffset = this.scrollCursor * this.COLS; + if ((this.cursor + 1) % this.COLS === 0 || this.cursor + itemOffset === this.currentTotal - 1) { + return this.setCursor(this.cursor - (this.cursor % this.COLS)); + } + return this.setCursor(this.cursor + 1); + } + + /** + * Process user input to navigate through the achievements and vouchers UI. + * @param button - The button that was pressed + * @returns Whether an action was successfully processed + */ + processInput(button: Button): boolean { let success = false; - if (button === Button.ACTION) { - success = true; - this.setScrollCursor(0); - if (this.currentPage === Page.ACHIEVEMENTS) { - this.currentPage = Page.VOUCHERS; - this.updateVoucherIcons(); - } else if (this.currentPage === Page.VOUCHERS) { - this.currentPage = Page.ACHIEVEMENTS; - this.updateAchvIcons(); - } - this.setCursor(0, true); - this.scrollBar.setTotalRows(Math.ceil(this.currentTotal / this.COLS)); - this.scrollBar.setScrollCursor(0); - this.mainContainer.update(); - } - if (button === Button.CANCEL) { - success = true; - globalScene.ui.revertMode(); - } else { - const rowIndex = Math.floor(this.cursor / this.COLS); - const itemOffset = this.scrollCursor * this.COLS; - switch (button) { - case Button.UP: - if (this.cursor < this.COLS) { - if (this.scrollCursor) { - success = this.setScrollCursor(this.scrollCursor - 1); - } else { - // Wrap around to the last row - success = this.setScrollCursor(Math.ceil(this.currentTotal / this.COLS) - this.ROWS); - let newCursorIndex = this.cursor + (this.ROWS - 1) * this.COLS; - if (newCursorIndex > this.currentTotal - this.scrollCursor * this.COLS - 1) { - newCursorIndex -= this.COLS; - } - success = success && this.setCursor(newCursorIndex); - } - } else { - success = this.setCursor(this.cursor - this.COLS); - } - break; - case Button.DOWN: - const canMoveDown = itemOffset + 1 < this.currentTotal; - if (rowIndex >= this.ROWS - 1) { - if (this.scrollCursor < Math.ceil(this.currentTotal / this.COLS) - this.ROWS && canMoveDown) { - // scroll down one row - success = this.setScrollCursor(this.scrollCursor + 1); - } else { - // wrap back to the first row - success = this.setScrollCursor(0) && this.setCursor(this.cursor % this.COLS); - } - } else if (canMoveDown) { - success = this.setCursor(Math.min(this.cursor + this.COLS, this.currentTotal - itemOffset - 1)); - } - break; - case Button.LEFT: - if (this.cursor % this.COLS === 0) { - success = this.setCursor(Math.min(this.cursor + this.COLS - 1, this.currentTotal - itemOffset - 1)); - } else { - success = this.setCursor(this.cursor - 1); - } - break; - case Button.RIGHT: - if ((this.cursor + 1) % this.COLS === 0 || this.cursor + itemOffset === this.currentTotal - 1) { - success = this.setCursor(this.cursor - (this.cursor % this.COLS)); - } else { - success = this.setCursor(this.cursor + 1); - } - break; - } + switch (button) { + case Button.ACTION: + success = this.processActionInput(); + break; + case Button.CANCEL: + success = true; + globalScene.ui.revertMode(); + break; + case Button.UP: + success = this.processUpInput(); + break; + case Button.DOWN: + success = this.processDownInput(); + break; + case Button.LEFT: + success = this.processLeftInput(); + break; + case Button.RIGHT: + success = this.processRightInput(); + break; } if (success) { - ui.playSelect(); + this.getUi().playSelect(); } return success; } + // #endregion Input Processing setCursor(cursor: number, pageChange?: boolean): boolean { const ret = super.setCursor(cursor); @@ -334,33 +361,35 @@ export default class AchvsUiHandler extends MessageUiHandler { let update = ret; if (!this.cursorObj) { - this.cursorObj = globalScene.add.nineslice(0, 0, "select_cursor_highlight", undefined, 16, 16, 1, 1, 1, 1); - this.cursorObj.setOrigin(0, 0); + this.cursorObj = globalScene.add + .nineslice(0, 0, "select_cursor_highlight", undefined, 16, 16, 1, 1, 1, 1) + .setOrigin(0); this.iconsContainer.add(this.cursorObj); update = true; } this.cursorObj.setPositionRelative(this.icons[this.cursor], 0, 0); + if (!update && !pageChange) { + return ret; + } - if (update || pageChange) { - switch (this.currentPage) { - case Page.ACHIEVEMENTS: - if (pageChange) { - this.titleBg.width = 174; - this.titleText.x = this.titleBg.width / 2; - this.scoreContainer.setVisible(true); - } - this.showAchv(achvs[Object.keys(achvs)[cursor + this.scrollCursor * this.COLS]]); - break; - case Page.VOUCHERS: - if (pageChange) { - this.titleBg.width = 220; - this.titleText.x = this.titleBg.width / 2; - this.scoreContainer.setVisible(false); - } - this.showVoucher(vouchers[Object.keys(vouchers)[cursor + this.scrollCursor * this.COLS]]); - break; - } + switch (this.currentPage) { + case Page.ACHIEVEMENTS: + if (pageChange) { + this.titleBg.width = 174; + this.titleText.x = this.titleBg.width / 2; + this.scoreContainer.setVisible(true); + } + this.showAchv(achvs[Object.keys(achvs)[cursor + this.scrollCursor * this.COLS]]); + break; + case Page.VOUCHERS: + if (pageChange) { + this.titleBg.width = 220; + this.titleText.x = this.titleBg.width / 2; + this.scoreContainer.setVisible(false); + } + this.showVoucher(vouchers[Object.keys(vouchers)[cursor + this.scrollCursor * this.COLS]]); + break; } return ret; } @@ -399,30 +428,50 @@ export default class AchvsUiHandler extends MessageUiHandler { } /** - * updateAchvIcons(): void - * Determines what data is to be displayed on the UI and updates it accordingly based on the current value of this.scrollCursor + * Updates the icons displayed on the UI based on the current page and scroll cursor. + * @param items - The items to display (achievements or vouchers). + * @param unlocks - The unlocks data for the items. + * @param getIconFrame - A function to determine the frame for each item. + * @param headerText - The text for the header. + * @param actionText - The text for the action button. + * @param totalItems - The total number of items. + * @param forAchievements - `True` when updating icons for the achievements page, `false` for the vouchers page. */ - updateAchvIcons(): void { - this.headerText.text = this.achvsName; - this.headerActionText.text = this.vouchersName; + private updateIcons( + items: T extends true ? Achv[] : Voucher[], + unlocks: T extends true ? AchvUnlocks : VoucherUnlocks, + headerText: string, + actionText: string, + totalItems: number, + forAchievements: T, + ): void { + // type ItemType = T extends true ? Achv : Voucher; + // type RangeType = ItemType[]; + this.headerText.text = headerText; + this.headerActionText.text = actionText; const textPosition = this.headerBgX - this.headerActionText.displayWidth - 8; this.headerActionText.setX(textPosition); this.headerActionButton.setX(textPosition - this.headerActionButton.displayWidth - 4); - const achvUnlocks = globalScene.gameData.achvUnlocks; - const itemOffset = this.scrollCursor * this.COLS; const itemLimit = this.ROWS * this.COLS; - const achvRange = Object.values(achvs).slice(itemOffset, itemLimit + itemOffset); + const itemRange = items.slice(itemOffset, itemLimit + itemOffset); - achvRange.forEach((achv: Achv, i: number) => { + itemRange.forEach((item: (typeof itemRange)[0], i: number) => { const icon = this.icons[i]; - const unlocked = achvUnlocks.hasOwnProperty(achv.id); - const hidden = !unlocked && achv.secret && (!achv.parentId || !achvUnlocks.hasOwnProperty(achv.parentId)); - const tinted = !hidden && !unlocked; + const unlocked = unlocks.hasOwnProperty(item.id); + let tinted = !unlocked; + if (forAchievements) { + // Typescript cannot properly infer the type of `item` here, so we need to cast it + const achv = item as Achv; + const hidden = !unlocked && achv.secret && (!achv.parentId || !unlocks.hasOwnProperty(achv.parentId)); + tinted &&= !hidden; + icon.setFrame(!hidden ? achv.iconImage : "unknown"); + } else { + icon.setFrame(getVoucherTypeIcon((item as Voucher).voucherType)); + } - icon.setFrame(!hidden ? achv.iconImage : "unknown"); icon.setVisible(true); if (tinted) { icon.setTintFill(0); @@ -431,48 +480,39 @@ export default class AchvsUiHandler extends MessageUiHandler { } }); - if (achvRange.length < this.icons.length) { - this.icons.slice(achvRange.length).map(i => i.setVisible(false)); + if (itemRange.length < this.icons.length) { + this.icons.slice(itemRange.length).forEach(i => i.setVisible(false)); } - this.currentTotal = this.achvsTotal; + this.currentTotal = totalItems; } /** - * updateVoucherIcons(): void - * Determines what data is to be displayed on the UI and updates it accordingly based on the current value of this.scrollCursor + * Update the achievement icons displayed on the UI based on the current scroll cursor. + */ + updateAchvIcons(): void { + this.updateIcons( + Object.values(achvs), + globalScene.gameData.achvUnlocks, + this.achvsName, + this.vouchersName, + this.achvsTotal, + true, + ); + } + + /** + * Update the voucher icons displayed on the UI based on the current scroll cursor. */ updateVoucherIcons(): void { - this.headerText.text = this.vouchersName; - this.headerActionText.text = this.achvsName; - const textPosition = this.headerBgX - this.headerActionText.displayWidth - 8; - this.headerActionText.setX(textPosition); - this.headerActionButton.setX(textPosition - this.headerActionButton.displayWidth - 4); - - const voucherUnlocks = globalScene.gameData.voucherUnlocks; - - const itemOffset = this.scrollCursor * this.COLS; - const itemLimit = this.ROWS * this.COLS; - - const voucherRange = Object.values(vouchers).slice(itemOffset, itemLimit + itemOffset); - - voucherRange.forEach((voucher: Voucher, i: number) => { - const icon = this.icons[i]; - const unlocked = voucherUnlocks.hasOwnProperty(voucher.id); - - icon.setFrame(getVoucherTypeIcon(voucher.voucherType)); - icon.setVisible(true); - if (!unlocked) { - icon.setTintFill(0); - } else { - icon.clearTint(); - } - }); - - if (voucherRange.length < this.icons.length) { - this.icons.slice(voucherRange.length).map(i => i.setVisible(false)); - } - this.currentTotal = this.vouchersTotal; + this.updateIcons( + Object.values(vouchers), + globalScene.gameData.voucherUnlocks, + this.vouchersName, + this.achvsName, + this.vouchersTotal, + false, + ); } clear() { From 03368587083ccf7583923d1d35f07a5cd347f535 Mon Sep 17 00:00:00 2001 From: SmhMyHead <191356399+SmhMyHead@users.noreply.github.com> Date: Fri, 6 Jun 2025 23:20:02 +0200 Subject: [PATCH 54/71] [UI/UX] Legendary UP Gacha timer (#5921) * [UI/UIX] Legendary UP Gacha timer * Update egg-gacha-ui-handler.ts Seems "fixedInt" was needed on the delay of the playTimeTimer so the game speed doesn't affect it. * New timer container by damocleas. * gacha_legendary.png second version from @damocleas * Use phaser object chaining methods --------- Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> --- public/images/egg/gacha_legendary.png | Bin 2015 -> 3810 bytes src/ui/egg-gacha-ui-handler.ts | 46 ++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/public/images/egg/gacha_legendary.png b/public/images/egg/gacha_legendary.png index 8cd6fa38e295fcfb306a6ffbdb017bb1f101eeba..6eb41e55099a0ef71e946b7f89f0213b6e0996d7 100644 GIT binary patch literal 3810 zcmX|Ec{o+u`+xTt9COAT(?x?2AyY{lWV(jT66HvyG9)q&+tA>Wp^!+9i*S^VlFS`M zD$1=$TtjsoB10%Mzuotb-+rFG*1Mnmyu(`W`}wSQC0kpW@NkN80sxPh=`mXXgo4RQ z>}=Th`R+m!HX*^bCI(RTM&cU)Z-Ut|ef#j!GXF!}4ofUJ^HZOIjK^Yf1K z4te>#dxRD;e$~e;nX6v0?Xok>luT63N-(wYvk@?5&r0CvNt9Y2VH0ELDE(mleyWxC zfv};%{+%*BH$23LFV6P3vZ{W0crACoxV<@Nu3Hnu>fY8{{M!9yc0~R%o|A&e_1Y2d zMGnsSHN?1w1~G?k7jrG%mkIPA2}u3;;htq`r?Ji*#-rx=!~f}jw3cx{EmwN9#&Euo z5fUyDG520_#{=oJHu2wfU+vsJ@41;JPj}%GZ zxvEixyIeY)5`ySOXyVZY9dQF|>fooc)Tp=xMK&0ZxRP1~LR73E&I$;)(?BSr3_$L! z+F5QQ4Q}E<`ep_@o=8J=h(L+BE8`&t#9SeO+eydBnE0POz^g@WQA0$ISpv|tXHOfJ zI_cvGSl{*TB4c@!#q?xl_}MTqf)g7$gE?}<5BXUAITjCg!&zkdVHox4!Lx*#YW1G=f zb8Rh4qxDwKt$knc*G`YW(LDsY%^k7YrelqdpOkLR{~C%FW2DmK+4)X#UU@HznNpR$ zBSahBeOO1UEZQm3%1pjAHgYQK?2>t|eD~Xczypg}~_m7u=`fMYh&m}=hYlS_$BN6Q)8qnF1R>#ogsa?Qu3T+I_ z5sdw?R;ag8wzmF6JUcmh?z!sEcJF6j@A|wHMx|3yok<8hu6^noQHkY*MtbhtPoTDpgieXJ&W%6z?z7ux74lbcQCSho7P+W+bvtM#FY@OX zBMRejN(6@L#ib{~4-X;bMNUc54l!%AbG@!x0vm^N+JQPzlyM0_<$TmoSehWZHd5H~ z)TtKvTTMgeWsou-`025&UDyi)q+2danc}FDEw!EiXERlYq=8!7A39Bj0ZTnsB||L9 zSB|$nCP1Qj8ryC;0As#W1~-95xRv4IL`%f9iS1a$@6lKa+xYdd ziz&J|ROwjz-Y?i^hx1NZcTh=vd0f z&NLYu397v=n1hj%Zlgi=D485%4e&kjwbB|p)bjD%x`vgMkoPA!_caI2LOmeB;12H5 z(*xcKYNvz&P6?ZjMdw|Zcw1oi@P1X~y0AJAW$M5S6B~~%W4DB&_6d@WVK~2GV@nMO zaE6>buKnk*2mxWT;`!UIvJ@{Ei(sA)Oc~YX$PT}?Ds<%H;%e_lnCAqeolsfO($eai zQ+E61m}x>j*X$zzLSDh#@TV)=`IS{y93E|xJ#N+jG?g7Gu;f6@Gp8zLW<|xzZbT!! zNm5VZIjskdttp%W>)b#wG^_SB+d4`Wg}wF(Mk}j872PP8RE)oDDO)P^8={_V73})M z1y$)?_J~T~IRLy1{{Mk(r5)iar^jlm=`UJyI+F?n?bWq=*&#P10^H9)VuBa!egK74^LF(X5Wpd zu3Brr^&ggTWmbU#CDg2);79MJQ+@Iaob?A?4bxdkI+L;auWg8GLu8}L+aH4ztNj<5 z5lt9+n(P6r>hiuU*K(e7r=4E0a+J4AZw!!yTsvcde2 zn<_k;d?(f~;KKB6!FI0tTa{J4A@QYA$Cuqcb3SR{tg_T4=xV2J{mg6F=-A1!5$6}I zW9!^YH5d|NN0np!y~0;7mzE~0{7dnB^$+2mGC8mJE89uCZT0!3h-aTpN^MPxZ^r^? zCf}MLMVLuFzJK-*s6SiHY3l ztzGl&VnDB=;{{DIp&}9tmdj2{fOU?W;HNmq$$oOb#SX*i z?S!^*<(#NGm%-#b^fDyh^4KeMBjq>oAa!W}`Tu=P*^vI`2MLe0_daGxr+FwW& zvX7A9+~n;uIMmN@|2b(;p>GU}DdVM$T;n2xR2EmuZHqi6Mw$b7%c*R&_8U=2mm)3MW+NDKrxYao=a9;V`C4#ml&XV5#!F|MPQSVa;igxas0_g%?DnYI)7!V2cXee{8Pr836f0H-3cuCbClJ2FR$)7ej^S zKE6FF;)yS*BW(4Nq%K@~tIZ2ON)GS#;ZU<7yFyn5C{c{j+p@Jch!fBFBRQFa85W@M z1nWg2_JsV=dZ?(=W>6L?b~!gp#qG)ymL8u^@p$oJu+-cJ>Y`bxk(-^@<#?w!vCZD4 z=TZ#P`B|Uwr3A`w)Mz$s)xif;HgaD-Fam2vu{>mG8ZMPF$_2QC_*N!q$Io0I+34Lg zB$C^FxBUU#()iVnL*{$-dG*DGhFuMmeSQLGH?ia*SJc8${)|ZGiv8dXy+aIMF*0x~ zXa#zRc!`iECX64p4eQj1^Pmk*tm*KkqXnru1*6L$Mq6B06Ue87Yj;|LmDJ%9-ln*| z#=;IuzS=kJTuGePx$eT>A`4X_y0W~Kff?Qc=#QESKT-J4UhTqtGW>fuHhRPOrFZAt z)o8Ei>#_`Pn>;)ecfA>rgRTRaDQugRtuE4 z!N_z)e)M5rV5N&&>^IB&;&felZ1ja1)&CX&V(8)ru;8rD|H?U|96uDo4t~XARX<7r zCe1%V5W?KtHROoeadCZ3A?4@42`Iva0-^78dsw^C#C_k>A3<9rGDJkMcI49`kK}ymmhswn>idPK-{wA$6ysx# zh|1~$+1Ok80if%iPY`N>Xl^dnno43Z`HzCB zqwhd=Yx>qK9`)pVE^uQ0xvDJ*!+Y+2cuhb0=w-B2-3gv^;xPz=U4KL2&R8-YSnj9O z;6D9(SM~NtV;Qf-@i`aH{D4}7I=t{P)&Ia{gsH>gQ=qi!vVbxa6{XqdHndj-V-0~2 z3rYAcN9}$cjL;$i-?~n{JNWbjzoSxmqhdV5%q>0?F!cLWKJw%)9yI1(g@(_~&dj(h zI4WgokgEx^>Lrn3svtM8;ED{?{Hq~zg0Ks-N-@Efk}9q3bh93M@8hP&?p;ztoLzPC zsB3YhR1jcsOc0oK$q~BcjYs3vbC!I6Jq%0uAwe5U_9)>6&R?n|=ywS2;K_W%bK^_1 zVWF@zX7!Q%|Nhx8EW_*B#d=-n`KfSc=D_b|JOXs}_C9{}lDLG!k)|4*dtdX@bsoKa zzDwQE39bAX);F$PYi-J2a9YKxJSeMH9W-ZV^YUdpUk`t|V)98q6ohnWyD{s=dMC|q2FiN>oAJjv)>RuuN*efmogpKt|OqGPQ7FORc?k1P3wte zq^QDKf=!RtOBV|QaG$Z%#P~hoLANA&*3vGUj7QrwrTloe`Z}>Vh{`mv_V=%hD1QFqs{De?RZ+ZvLLkjI54T8Bi1c54iYxQUCw| delta 2002 zcmV;@2QB#G9p4X-BYy{`Nkl#N^;PkIUgU`*94LA6~!_kVIb>+4*o&u4ml+l`%p ze`b>F7>0KqKXf0eut`f$?f6~4INSNW_4$)*uDJDOw!i4y^x!`;$#oQD;{54vKY0+^ zB3NA$mS8mE$B=G^i?g{*;RqmUhPJGxKdiM)U@G@W7T+ubOn?9;z!CJ(FMb|=V;Ra} zA%w8?&^ibpMSoaXS!ut0?V5!sm-g1ymZQNH;|8m6{Oa@b7Ni6kJI|k^`0kAxK?JMi zdzPSj@vG0zhch!X7NjK3%*=!{Gc#f7(xvdTM^r&*Td}GoDgCYn0&$)Ldb05+qiW%tpD~` zM}D4G?0@%a?>3v>pa>Hn*~KsG@NL|>d+2-7*9QqyN9Mk$eN?TdTU%ST z-Db0Wb$vZF8jVn|*ETP_<@W8wmoNIMIca{k*}1te=m87U-e~fuRbf|_mpfBnKk*o*QJ`MUqv zpP&Fzo)AXjLCktOJT91{vcD`Iz3%l5=l#tIAe9JW_jH&<5z!px1b31L6$FqGm=2Rj z8_lAFnKo!*h5(Ma>B-}7?xzO_Cw~gYNv6!AqYeTne2Fd_g;0BC%^di&iZ73U;I)`cL*RAc7O3--;Lnu zsj1Z05s&6iKmD}w@e?-$aLghY|NNs@UP*jL2~;`<;44FRN7`bABU7*`I0 zzyKDerY(X1GHkV3YXAZWAb6RV;8^?NX-7do009#6L}*fp zZ*K3!&JeR#@GC(;0LR=yeSbcL)|W&3`DbIN-8!4|iBrWE0i^Q&^!Rbu{_3mz9u!`D zG5pd&Ari6=u)?+*I~D;G1zqNY3^MMHvMoPbZet)880)(;DD}I6~ zfB*sr!?M@ojoJ4O4tjn)tLYB`gi=N@`gh(h!4pRTgrQG+QRt$n@9gAcA@Msdg4_F^ zdLw|4WBek|TCH5BJ`cfFz(eeJXT{hpUO z>WDB1AR{voo|>3A6o0?&P2~852m(kYr@(m7dWEiED8&x}q|%sn&p*{$CC5Qk*()jg@SFafE9UO$0rl!KFiHRepJ%3Xm0!Zma6JNi{?d;@a z_-uba@e$rZr@*u?gY&XE0fgMA#O_cY7fm<`e>s#ce9`Bp zN1Z4E1dz(VD_s0(EoD5yI}W#j079BSnDeJIyRIaWGX)}mjHR;1E`B7q%1=f|02$*5 zdP)ldNGh$*pG#N-1d!pg`So3&JT3lZX%2!2Ab { + this.legendaryExpiration.setText(this.getLegendaryGachaTimeLeft()); + }, + }); + } + + getLegendaryGachaTimeLeft(): string { + // 86400000 is the number of miliseconds in one day + const msUntilMidnight = 86400000 - (Date.now() % 86400000); + const hours = `${Math.floor(msUntilMidnight / 3600000)}`; + const minutes = `${Math.floor((msUntilMidnight % 3600000) / 60000)}`; + const seconds = `${Math.floor((msUntilMidnight % 60000) / 1000)}`; + + return `${hours.padStart(2, "0")}:${minutes.padStart(2, "0")}:${seconds.padStart(2, "0")}`; + } + clear(): void { super.clear(); this.setGachaCursor(-1); this.eggGachaContainer.setVisible(false); + if (this.playTimeTimer) { + this.playTimeTimer.destroy(); + this.playTimeTimer = null; + } } } From 3ca11e83a6591801b592587d75963fba6dc96e98 Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Fri, 6 Jun 2025 19:27:58 -0400 Subject: [PATCH 55/71] [Dev] Add lefthook script to update submodules post-checkout (#5941) --- lefthook.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lefthook.yml b/lefthook.yml index ff0ac00f9e5..0f91f658171 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -9,6 +9,11 @@ pre-commit: - rebase post-merge: + commands: + update-submodules: + run: git submodule update --init --recursive + +post-checkout: commands: update-submodules: run: git submodule update --init --recursive \ No newline at end of file From 88e4ab978bc4ad98e6a90ec1419ef15d2984a2ac Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Fri, 6 Jun 2025 20:00:09 -0400 Subject: [PATCH 56/71] [Misc] Removed cases of `a ? true : false` and useless `super` calls from subclasses (#5943) * Removed cases of `if (a) {return true}' return false` * Removed useless `super.xyz` calls from functions * Fixde missing issur * Use early return in `Pokemon#isOffsetBySubstitute` --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/battle-scene.ts | 34 ++++++-------- src/configs/inputs/configHandler.ts | 5 +- src/data/abilities/ability.ts | 46 ++++--------------- src/data/battler-tags.ts | 25 ++-------- src/data/moves/move.ts | 15 +----- .../mystery-encounter-requirements.ts | 31 ++++--------- src/data/pokemon-forms.ts | 6 +-- src/data/pokemon-species.ts | 4 -- src/field/pokemon.ts | 32 ++++--------- src/modifier/modifier.ts | 8 ---- src/sprites/sprite-utils.ts | 5 +- 11 files changed, 50 insertions(+), 161 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index f2f952ea301..9a46baba899 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -3566,21 +3566,18 @@ export default class BattleScene extends SceneBase { gameMode: this.currentBattle ? this.gameMode.getName() : "Title", biome: this.currentBattle ? getBiomeName(this.arena.biomeType) : "", wave: this.currentBattle?.waveIndex ?? 0, - party: this.party - ? this.party.map(p => { - return { - name: p.name, - form: p.getFormKey(), - types: p.getTypes().map(type => PokemonType[type]), - teraType: PokemonType[p.getTeraType()], - isTerastallized: p.isTerastallized, - level: p.level, - currentHP: p.hp, - maxHP: p.getMaxHp(), - status: p.status?.effect ? StatusEffect[p.status.effect] : "", - }; - }) - : [], + party: + this.party?.map(p => ({ + name: p.name, + form: p.getFormKey(), + types: p.getTypes().map(type => PokemonType[type]), + teraType: PokemonType[p.getTeraType()], + isTerastallized: p.isTerastallized, + level: p.level, + currentHP: p.hp, + maxHP: p.getMaxHp(), + status: p.status?.effect ? StatusEffect[p.status.effect] : "", + })) ?? [], // TODO: review if this can be nullish modeChain: this.ui?.getModeChain() ?? [], }; (window as any).gameInfo = gameInfo; @@ -3963,16 +3960,13 @@ export default class BattleScene extends SceneBase { if (previousEncounter !== null && encounterType === previousEncounter) { return false; } - if ( + return !( this.mysteryEncounterSaveData.encounteredEvents.length > 0 && encounterCandidate.maxAllowedEncounters && encounterCandidate.maxAllowedEncounters > 0 && this.mysteryEncounterSaveData.encounteredEvents.filter(e => e.type === encounterType).length >= encounterCandidate.maxAllowedEncounters - ) { - return false; - } - return true; + ); }) .map(m => allMysteryEncounters[m]); // Decrement tier diff --git a/src/configs/inputs/configHandler.ts b/src/configs/inputs/configHandler.ts index b896f303cb3..227c2b964b9 100644 --- a/src/configs/inputs/configHandler.ts +++ b/src/configs/inputs/configHandler.ts @@ -197,10 +197,7 @@ export function canIAssignThisKey(config, key) { export function canIOverrideThisSetting(config, settingName) { const key = getKeyWithSettingName(config, settingName); // || isTheLatestBind(config, settingName) no longer needed since action and cancel are protected - if (config.blacklist?.includes(key)) { - return false; - } - return true; + return !config.blacklist?.includes(key); } export function canIDeleteThisKey(config, key) { diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index 1bd71df32e0..6e6c00b8a43 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -1246,7 +1246,7 @@ export class MoveTypeChangeAbAttr extends PreAttackAbAttr { /** * Determine if the move type change attribute can be applied - * + * * Can be applied if: * - The ability's condition is met, e.g. pixilate only boosts normal moves, * - The move is not forbidden from having its type changed by an ability, e.g. {@linkcode MoveId.MULTI_ATTACK} @@ -1262,7 +1262,7 @@ export class MoveTypeChangeAbAttr extends PreAttackAbAttr { */ override canApplyPreAttack(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _defender: Pokemon | null, move: Move, _args: [NumberHolder?, NumberHolder?, ...any]): boolean { return (!this.condition || this.condition(pokemon, _defender, move)) && - !noAbilityTypeOverrideMoves.has(move.id) && + !noAbilityTypeOverrideMoves.has(move.id) && (!pokemon.isTerastallized || (move.id !== MoveId.TERA_BLAST && (move.id !== MoveId.TERA_STARSTORM || pokemon.getTeraType() !== PokemonType.STELLAR || !pokemon.hasSpecies(SpeciesId.TERAPAGOS)))); @@ -2653,11 +2653,7 @@ export class PostSummonCopyAllyStatsAbAttr extends PostSummonAbAttr { } const ally = pokemon.getAlly(); - if (isNullOrUndefined(ally) || ally.getStatStages().every(s => s === 0)) { - return false; - } - - return true; + return !(isNullOrUndefined(ally) || ally.getStatStages().every(s => s === 0)); } override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { @@ -2723,11 +2719,7 @@ export class PostSummonTransformAbAttr extends PostSummonAbAttr { } // transforming from or into fusion pokemon causes various problems (including crashes and save corruption) - if (this.getTarget(targets).fusionSpecies || pokemon.fusionSpecies) { - return false; - } - - return true; + return !(this.getTarget(targets).fusionSpecies || pokemon.fusionSpecies); } override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { @@ -3544,10 +3536,7 @@ export class BlockStatusDamageAbAttr extends AbAttr { } override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - if (pokemon.status && this.effects.includes(pokemon.status.effect)) { - return true; - } - return false; + return !!pokemon.status?.effect && this.effects.includes(pokemon.status.effect); } /** @@ -4803,11 +4792,7 @@ export class PostFaintContactDamageAbAttr extends PostFaintAbAttr { const diedToDirectDamage = move !== undefined && attacker !== undefined && move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon}); const cancelled = new BooleanHolder(false); globalScene.getField(true).map(p => applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled, simulated)); - if (!diedToDirectDamage || cancelled.value || attacker!.hasAbilityWithAttr(BlockNonDirectDamageAbAttr)) { - return false; - } - - return true; + return !(!diedToDirectDamage || cancelled.value || attacker!.hasAbilityWithAttr(BlockNonDirectDamageAbAttr)); } override applyPostFaint(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker?: Pokemon, move?: Move, hitResult?: HitResult, ...args: any[]): void { @@ -6508,12 +6493,7 @@ export function initAbilities() { new Ability(AbilityId.INTIMIDATE, 3) .attr(PostSummonStatStageChangeAbAttr, [ Stat.ATK ], -1, false, true), new Ability(AbilityId.SHADOW_TAG, 3) - .attr(ArenaTrapAbAttr, (user, target) => { - if (target.hasAbility(AbilityId.SHADOW_TAG)) { - return false; - } - return true; - }), + .attr(ArenaTrapAbAttr, (_user, target) => !target.hasAbility(AbilityId.SHADOW_TAG)), new Ability(AbilityId.ROUGH_SKIN, 3) .attr(PostDefendContactDamageAbAttr, 8) .bypassFaint(), @@ -6573,10 +6553,7 @@ export function initAbilities() { .ignorable(), new Ability(AbilityId.MAGNET_PULL, 3) .attr(ArenaTrapAbAttr, (user, target) => { - if (target.getTypes(true).includes(PokemonType.STEEL) || (target.getTypes(true).includes(PokemonType.STELLAR) && target.getTypes().includes(PokemonType.STEEL))) { - return true; - } - return false; + return target.getTypes(true).includes(PokemonType.STEEL) || (target.getTypes(true).includes(PokemonType.STELLAR) && target.getTypes().includes(PokemonType.STEEL)); }), new Ability(AbilityId.SOUNDPROOF, 3) .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.hasFlag(MoveFlags.SOUND_BASED)) @@ -6654,12 +6631,7 @@ export function initAbilities() { .attr(PostSummonWeatherChangeAbAttr, WeatherType.SUNNY) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.SUNNY), new Ability(AbilityId.ARENA_TRAP, 3) - .attr(ArenaTrapAbAttr, (user, target) => { - if (target.isGrounded()) { - return true; - } - return false; - }) + .attr(ArenaTrapAbAttr, (user, target) => target.isGrounded()) .attr(DoubleBattleChanceAbAttr), new Ability(AbilityId.VITAL_SPIRIT, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.SLEEP) diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index c047f424591..4d99fd18ac0 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -1203,10 +1203,7 @@ export class EncoreTag extends MoveRestrictionBattlerTag { override lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.CUSTOM) { const encoredMove = pokemon.getMoveset().find(m => m.moveId === this.moveId); - if (encoredMove && encoredMove?.getPpRatio() > 0) { - return true; - } - return false; + return !isNullOrUndefined(encoredMove) && encoredMove.getPpRatio() > 0; } return super.lapse(pokemon, lapseType); } @@ -1218,10 +1215,7 @@ export class EncoreTag extends MoveRestrictionBattlerTag { * @returns `true` if the move does not match with the moveId stored and as a result, restricted */ override isMoveRestricted(move: MoveId, _user?: Pokemon): boolean { - if (move !== this.moveId) { - return true; - } - return false; + return move !== this.moveId; } override selectionDeniedText(_pokemon: Pokemon, move: MoveId): string { @@ -2768,10 +2762,7 @@ export class HealBlockTag extends MoveRestrictionBattlerTag { * @returns `true` if the move has a TRIAGE_MOVE flag and is a status move */ override isMoveRestricted(move: MoveId): boolean { - if (allMoves[move].hasFlag(MoveFlags.TRIAGE_MOVE) && allMoves[move].category === MoveCategory.STATUS) { - return true; - } - return false; + return allMoves[move].hasFlag(MoveFlags.TRIAGE_MOVE) && allMoves[move].category === MoveCategory.STATUS; } /** @@ -2785,10 +2776,7 @@ export class HealBlockTag extends MoveRestrictionBattlerTag { override isMoveTargetRestricted(move: MoveId, user: Pokemon, target: Pokemon) { const moveCategory = new NumberHolder(allMoves[move].category); applyMoveAttrs(StatusCategoryOnAllyAttr, user, target, allMoves[move], moveCategory); - if (allMoves[move].hasAttr(HealOnAllyAttr) && moveCategory.value === MoveCategory.STATUS) { - return true; - } - return false; + return allMoves[move].hasAttr(HealOnAllyAttr) && moveCategory.value === MoveCategory.STATUS; } /** @@ -3126,10 +3114,7 @@ export class TormentTag extends MoveRestrictionBattlerTag { const moveObj = allMoves[lastMove.move]; const isUnaffected = moveObj.hasAttr(ConsecutiveUseDoublePowerAttr) || user.getTag(BattlerTagType.FRENZY); const validLastMoveResult = lastMove.result === MoveResult.SUCCESS || lastMove.result === MoveResult.MISS; - if (lastMove.move === move && validLastMoveResult && lastMove.move !== MoveId.STRUGGLE && !isUnaffected) { - return true; - } - return false; + return lastMove.move === move && validLastMoveResult && lastMove.move !== MoveId.STRUGGLE && !isUnaffected; } override selectionDeniedText(pokemon: Pokemon, _move: MoveId): string { diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index 91cc6350daa..e98b28e2a48 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -5472,13 +5472,6 @@ export class AddBattlerTagAttr extends MoveEffectAttr { this.failOnOverlap = !!failOnOverlap; } - canApply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - if (!super.canApply(user, target, move, args)) { - return false; - } - return true; - } - apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (!super.apply(user, target, move, args)) { return false; @@ -6832,7 +6825,7 @@ export class RandomMovesetMoveAttr extends CallMoveAttr { return false; } - this.moveId = moves[user.randBattleSeedInt(moves.length)]!.moveId; + this.moveId = moves[user.randBattleSeedInt(moves.length)].moveId; return true; }; } @@ -7367,11 +7360,7 @@ export class SketchAttr extends MoveEffectAttr { return false; } - if (user.getMoveset().find(m => m.moveId === targetMove.move)) { - return false; - } - - return true; + return !user.getMoveset().some(m => m.moveId === targetMove.move); }; } } diff --git a/src/data/mystery-encounters/mystery-encounter-requirements.ts b/src/data/mystery-encounters/mystery-encounter-requirements.ts index ec78408ea83..88d9ba402a9 100644 --- a/src/data/mystery-encounters/mystery-encounter-requirements.ts +++ b/src/data/mystery-encounters/mystery-encounter-requirements.ts @@ -275,15 +275,11 @@ export class TimeOfDayRequirement extends EncounterSceneRequirement { override meetsRequirement(): boolean { const timeOfDay = globalScene.arena?.getTimeOfDay(); - if ( + return !( !isNullOrUndefined(timeOfDay) && this.requiredTimeOfDay?.length > 0 && !this.requiredTimeOfDay.includes(timeOfDay) - ) { - return false; - } - - return true; + ); } override getDialogueToken(_pokemon?: PlayerPokemon): [string, string] { @@ -301,15 +297,11 @@ export class WeatherRequirement extends EncounterSceneRequirement { override meetsRequirement(): boolean { const currentWeather = globalScene.arena.weather?.weatherType; - if ( + return !( !isNullOrUndefined(currentWeather) && this.requiredWeather?.length > 0 && !this.requiredWeather.includes(currentWeather!) - ) { - return false; - } - - return true; + ); } override getDialogueToken(_pokemon?: PlayerPokemon): [string, string] { @@ -803,7 +795,7 @@ export class CanFormChangeWithItemRequirement extends EncounterPokemonRequiremen } filterByForm(pokemon, formChangeItem) { - if ( + return ( pokemonFormChanges.hasOwnProperty(pokemon.species.speciesId) && // Get all form changes for this species with an item trigger, including any compound triggers pokemonFormChanges[pokemon.species.speciesId] @@ -812,10 +804,7 @@ export class CanFormChangeWithItemRequirement extends EncounterPokemonRequiremen .flatMap(fc => fc.findTrigger(SpeciesFormChangeItemTrigger) as SpeciesFormChangeItemTrigger) .flatMap(fc => fc.item) .includes(formChangeItem) - ) { - return true; - } - return false; + ); } override queryParty(partyPokemon: PlayerPokemon[]): PlayerPokemon[] { @@ -873,17 +862,15 @@ export class CanEvolveWithItemRequirement extends EncounterPokemonRequirement { ) { return true; } - if ( + + return ( pokemon.isFusion() && pokemonEvolutions.hasOwnProperty(pokemon.fusionSpecies.speciesId) && pokemonEvolutions[pokemon.fusionSpecies.speciesId].filter( e => e.item === evolutionItem && (!e.condition || e.condition.predicate(pokemon)), ).length && pokemon.getFusionFormKey() !== SpeciesFormKey.GIGANTAMAX - ) { - return true; - } - return false; + ); } override queryParty(partyPokemon: PlayerPokemon[]): PlayerPokemon[] { diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index 1098ddc4eeb..47eb355c8b6 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -186,11 +186,7 @@ export class SpeciesFormChange { } } - if (!this.trigger.canChange(pokemon)) { - return false; - } - - return true; + return this.trigger.canChange(pokemon); } findTrigger(triggerType: Constructor): SpeciesFormChangeTrigger | nil { diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index 66ed0b09eeb..df7a8c118d5 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -1281,10 +1281,6 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali }; } - isObtainable() { - return super.isObtainable(); - } - hasVariants() { let variantDataIndex: string | number = this.speciesId; if (this.forms.length > 0) { diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index d06553f2227..df953f06834 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1292,19 +1292,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ isOffsetBySubstitute(): boolean { const substitute = this.getTag(SubstituteTag); - if (substitute) { - if (substitute.sprite === undefined) { - return false; - } - - // During the Pokemon's MoveEffect phase, the offset is removed to put the Pokemon "in focus" - const currentPhase = globalScene.getCurrentPhase(); - if (currentPhase?.is("MoveEffectPhase") && currentPhase.getPokemon() === this) { - return false; - } - return true; + if (!substitute || substitute.sprite === undefined) { + return false; } - return false; + // During the Pokemon's MoveEffect phase, the offset is removed to put the Pokemon "in focus" + const currentPhase = globalScene.getCurrentPhase(); + return !(currentPhase?.is("MoveEffectPhase") && currentPhase.getPokemon() === this); } /** If this Pokemon has a Substitute on the field, removes its sprite from the field. */ @@ -2241,10 +2234,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.getAbility(ignoreOverride).id === ability && (!canApply || this.canApplyAbility())) { return true; } - if (this.getPassiveAbility().id === ability && this.hasPassive() && (!canApply || this.canApplyAbility(true))) { - return true; - } - return false; + return this.getPassiveAbility().id === ability && this.hasPassive() && (!canApply || this.canApplyAbility(true)); } /** @@ -2261,10 +2251,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if ((!canApply || this.canApplyAbility()) && this.getAbility(ignoreOverride).hasAttr(attrType)) { return true; } - if (this.hasPassive() && (!canApply || this.canApplyAbility(true)) && this.getPassiveAbility().hasAttr(attrType)) { - return true; - } - return false; + return this.hasPassive() && (!canApply || this.canApplyAbility(true)) && this.getPassiveAbility().hasAttr(attrType); } /** @@ -5464,10 +5451,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if ((ownedAbilityAttrs & 2) > 0 && this.hasSameAbilityInRootForm(1)) { return true; } - if ((ownedAbilityAttrs & 4) > 0 && this.hasSameAbilityInRootForm(2)) { - return true; - } - return false; + return (ownedAbilityAttrs & 4) > 0 && this.hasSameAbilityInRootForm(2); } /** diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 2bebbcae90c..f8c71b2c891 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -1090,10 +1090,6 @@ export class PokemonIncrementingStatModifier extends PokemonHeldItemModifier { return new PokemonIncrementingStatModifier(this.type, this.pokemonId, this.stackCount); } - getArgs(): any[] { - return super.getArgs(); - } - /** * Checks if the {@linkcode PokemonIncrementingStatModifier} should be applied to the {@linkcode Pokemon}. * @param pokemon The {@linkcode Pokemon} that holds the item @@ -1216,10 +1212,6 @@ export class StatBoosterModifier extends PokemonHeldItemModifier { * @see {@linkcode apply} */ export class EvolutionStatBoosterModifier extends StatBoosterModifier { - clone() { - return super.clone() as EvolutionStatBoosterModifier; - } - matchType(modifier: Modifier): boolean { return modifier instanceof EvolutionStatBoosterModifier; } diff --git a/src/sprites/sprite-utils.ts b/src/sprites/sprite-utils.ts index 8a352de3d55..0f4adf7882f 100644 --- a/src/sprites/sprite-utils.ts +++ b/src/sprites/sprite-utils.ts @@ -21,8 +21,5 @@ export function hasExpSprite(key: string): boolean { if (keyMatch[5]) { k += keyMatch[5]; } - if (!expSpriteKeys.has(k)) { - return false; - } - return true; + return expSpriteKeys.has(k); } From a818c2b33f5981381615d29da92c850f5131b1c7 Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Fri, 6 Jun 2025 23:50:16 -0400 Subject: [PATCH 57/71] [Bug] Dancer no longer breaks "last hit only" moves, respects flinch + steadfast (#5945) * WIP * Fixed Dancer last hit, flinch move interaction * Fixed steadfast interaction * Fixed comment + flaky test --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/data/abilities/ability.ts | 1 + src/data/battler-tags.ts | 18 ++++++--------- test/abilities/dancer.test.ts | 41 +++++++++++++++++++++++++++++++++++ test/moves/instruct.test.ts | 30 +++++++++++++++++++++++-- 4 files changed, 77 insertions(+), 13 deletions(-) diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index 6e6c00b8a43..d20eddcb3cb 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -4438,6 +4438,7 @@ export class PostDancingMoveAbAttr extends PostMoveUsedAbAttr { simulated: boolean, args: any[]): void { if (!simulated) { + dancer.turnData.extraTurns++; // If the move is an AttackMove or a StatusMove the Dancer must replicate the move on the source of the Dance if (move.getMove() instanceof AttackMove || move.getMove() instanceof StatusMove) { const target = this.getTarget(dancer, source, targets); diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 4d99fd18ac0..456f519a34c 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -649,20 +649,14 @@ class NoRetreatTag extends TrappedTag { */ export class FlinchedTag extends BattlerTag { constructor(sourceMove: MoveId) { - super(BattlerTagType.FLINCHED, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.TURN_END], 0, sourceMove); - } - - onAdd(pokemon: Pokemon): void { - super.onAdd(pokemon); - - applyAbAttrs(FlinchEffectAbAttr, pokemon, null); + super(BattlerTagType.FLINCHED, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.TURN_END], 1, sourceMove); } /** - * Cancels the Pokemon's next Move on the turn this tag is applied - * @param pokemon The {@linkcode Pokemon} with this tag - * @param lapseType The {@linkcode BattlerTagLapseType lapse type} used for this function call - * @returns `false` (This tag is always removed after applying its effects) + * Cancels the flinched Pokemon's currently used move this turn if called mid-execution, or removes the tag at end of turn. + * @param pokemon - The {@linkcode Pokemon} with this tag. + * @param lapseType - The {@linkcode BattlerTagLapseType | lapse type} used for this function call. + * @returns Whether the tag should remain active. */ lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.PRE_MOVE) { @@ -672,6 +666,8 @@ export class FlinchedTag extends BattlerTag { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); + applyAbAttrs(FlinchEffectAbAttr, pokemon, null); + return true; } return super.lapse(pokemon, lapseType); diff --git a/test/abilities/dancer.test.ts b/test/abilities/dancer.test.ts index 7b4edb84789..086c69300b4 100644 --- a/test/abilities/dancer.test.ts +++ b/test/abilities/dancer.test.ts @@ -1,8 +1,10 @@ import { BattlerIndex } from "#app/battle"; +import { MoveResult } from "#app/field/pokemon"; import type { MovePhase } from "#app/phases/move-phase"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; +import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -99,4 +101,43 @@ describe("Abilities - Dancer", () => { expect(currentPhase.pokemon).toBe(oricorio); expect(currentPhase.move.moveId).toBe(MoveId.REVELATION_DANCE); }); + + it("should not break subsequent last hit only moves", async () => { + game.override.battleStyle("single"); + await game.classicMode.startBattle([SpeciesId.ORICORIO, SpeciesId.FEEBAS]); + + const [oricorio, feebas] = game.scene.getPlayerParty(); + + game.move.use(MoveId.BATON_PASS); + game.doSelectPartyPokemon(1); + await game.move.forceEnemyMove(MoveId.SWORDS_DANCE); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + await game.phaseInterceptor.to("TurnEndPhase"); + + expect(game.phaseInterceptor.log).toContain("SwitchSummonPhase"); + expect(game.field.getPlayerPokemon()).toBe(feebas); + expect(feebas.getStatStage(Stat.ATK)).toBe(2); + expect(oricorio.isOnField()).toBe(false); + expect(oricorio.visible).toBe(false); + }); + + it("should not trigger while flinched", async () => { + game.override.battleStyle("double").moveset(MoveId.SPLASH).enemyMoveset([MoveId.SWORDS_DANCE, MoveId.FAKE_OUT]); + await game.classicMode.startBattle([SpeciesId.ORICORIO]); + + const oricorio = game.scene.getPlayerPokemon()!; + expect(oricorio).toBeDefined(); + + // get faked out and copy swords dance + game.move.select(MoveId.SPLASH); + await game.move.forceEnemyMove(MoveId.SWORDS_DANCE); + await game.move.forceEnemyMove(MoveId.FAKE_OUT, BattlerIndex.PLAYER); + await game.phaseInterceptor.to("TurnEndPhase"); + + expect(oricorio.getLastXMoves(-1)[0]).toMatchObject({ + move: MoveId.NONE, + result: MoveResult.FAIL, + }); + expect(oricorio.getStatStage(Stat.ATK)).toBe(0); + }); }); diff --git a/test/moves/instruct.test.ts b/test/moves/instruct.test.ts index 56ac8d9d04d..4a701ed6ac5 100644 --- a/test/moves/instruct.test.ts +++ b/test/moves/instruct.test.ts @@ -1,13 +1,15 @@ import { BattlerIndex } from "#app/battle"; +import { allMoves } from "#app/data/data-lists"; import type Pokemon from "#app/field/pokemon"; import { MoveResult } from "#app/field/pokemon"; import type { MovePhase } from "#app/phases/move-phase"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; +import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Instruct", () => { let phaserGame: Phaser.Game; @@ -34,7 +36,8 @@ describe("Moves - Instruct", () => { game.override .battleStyle("single") .enemySpecies(SpeciesId.SHUCKLE) - .enemyAbility(AbilityId.NO_GUARD) + .enemyAbility(AbilityId.BALL_FETCH) + .passiveAbility(AbilityId.NO_GUARD) .enemyLevel(100) .startingLevel(100) .disableCrits(); @@ -536,4 +539,27 @@ describe("Moves - Instruct", () => { expect(ivysaur.turnData.attacksReceived.length).toBe(15); }); + + it("should respect prior flinches and trigger Steadfast", async () => { + game.override.battleStyle("double"); + vi.spyOn(allMoves[MoveId.AIR_SLASH], "chance", "get").mockReturnValue(100); + await game.classicMode.startBattle([SpeciesId.AUDINO, SpeciesId.ABRA]); + + // Fake enemy 1 having attacked prior + const [, player2, enemy1, enemy2] = game.scene.getField(); + enemy1.pushMoveHistory({ move: MoveId.ABSORB, targets: [BattlerIndex.PLAYER] }); + game.field.mockAbility(enemy1, AbilityId.STEADFAST); + + game.move.use(MoveId.AIR_SLASH, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.use(MoveId.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); + await game.move.forceEnemyMove(MoveId.ABSORB); + await game.move.forceEnemyMove(MoveId.INSTRUCT, BattlerIndex.ENEMY); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2]); + await game.toEndOfTurn(); + + expect(enemy1.getLastXMoves(-1).map(m => m.move)).toEqual([MoveId.NONE, MoveId.NONE, MoveId.NONE, MoveId.ABSORB]); + expect(enemy1.getStatStage(Stat.SPD)).toBe(3); + expect(player2.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + expect(enemy2.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + }); }); From c5db8273815b012fbe4d2990cc8a31480c219b94 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Fri, 6 Jun 2025 23:09:23 -0700 Subject: [PATCH 58/71] [Dev] Enable Biome linting of `move-effect-phase.ts` (#5947) --- biome.jsonc | 3 --- src/phases/move-effect-phase.ts | 6 ++++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/biome.jsonc b/biome.jsonc index 40301b3e0bc..141c44dc87d 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -42,9 +42,6 @@ // TODO: Remove if we ever get down to 0 circular imports "organizeImports": { "enabled": false }, "linter": { - "ignore": [ - "src/phases/move-effect-phase.ts" // TODO: unignore after move-effect-phase refactor - ], "enabled": true, "rules": { "recommended": true, diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index 3160d848624..d80fdc89e6f 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -219,6 +219,7 @@ export class MoveEffectPhase extends PokemonPhase { return; } break; + // biome-ignore lint/suspicious/noFallthroughSwitchClause: The fallthrough is intentional case HitCheckResult.NO_EFFECT: globalScene.queueMessage( i18next.t(this.move.id === MoveId.SHEER_COLD ? "battle:hitResultImmune" : "battle:hitResultNoEffect", { @@ -294,7 +295,8 @@ export class MoveEffectPhase extends PokemonPhase { // If other effects were overriden, stop this phase before they can be applied if (overridden.value) { - return this.end(); + this.end(); + return; } // Lapse `MOVE_EFFECT` effects (i.e. semi-invulnerability) when applicable @@ -743,7 +745,7 @@ export class MoveEffectPhase extends PokemonPhase { firstTarget?: boolean | null, selfTarget?: boolean, ): void { - return applyFilteredMoveAttrs( + applyFilteredMoveAttrs( (attr: MoveAttr) => attr instanceof MoveEffectAttr && attr.trigger === triggerType && From 1ff45687c5259dfc109bf2bf96d64a61da78b22e Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Sat, 7 Jun 2025 20:28:01 -0400 Subject: [PATCH 59/71] [Refactor] Merged `interfaces/` into `@types/`; removed runtime orphan modules https://github.com/pagefaultgames/pokerogue/pull/5951 --- src/@types/{DexData.ts => dex-data.ts} | 11 ++++------ .../held-modifier-config.ts | 0 src/{interfaces => @types}/locales.ts | 3 --- .../typedefs.ts => @types/trainer-funcs.ts} | 4 ++-- src/battle-scene.ts | 4 ++-- src/data/abilities/ability-class.ts | 2 +- src/data/egg-hatch-data.ts | 3 ++- src/data/moves/move.ts | 2 +- .../encounters/absolute-avarice-encounter.ts | 2 +- .../encounters/training-session-encounter.ts | 2 +- .../encounters/weird-dream-encounter.ts | 2 +- .../utils/encounter-phase-utils.ts | 2 +- src/data/pokemon-species.ts | 2 +- src/data/trainers/evil-admin-trainer-pools.ts | 2 +- src/data/trainers/trainer-config.ts | 2 +- src/debug.js | 17 -------------- src/global-vars/starter-colors.ts | 5 ++--- src/starter-colors.ts | 4 ---- src/system/game-data.ts | 16 ++------------ src/system/session-history.ts | 22 ------------------- src/ui/pokedex-page-ui-handler.ts | 3 ++- src/ui/pokedex-ui-handler.ts | 3 ++- src/ui/pokemon-info-container.ts | 3 ++- src/ui/starter-select-ui-handler.ts | 9 ++------ 24 files changed, 31 insertions(+), 94 deletions(-) rename src/@types/{DexData.ts => dex-data.ts} (82%) rename src/{interfaces => @types}/held-modifier-config.ts (100%) rename src/{interfaces => @types}/locales.ts (95%) rename src/{data/trainers/typedefs.ts => @types/trainer-funcs.ts} (83%) delete mode 100644 src/debug.js delete mode 100644 src/starter-colors.ts delete mode 100644 src/system/session-history.ts diff --git a/src/@types/DexData.ts b/src/@types/dex-data.ts similarity index 82% rename from src/@types/DexData.ts rename to src/@types/dex-data.ts index 19bb0357471..88cc16886bd 100644 --- a/src/@types/DexData.ts +++ b/src/@types/dex-data.ts @@ -1,6 +1,7 @@ -/** - * Dex entry for a single Pokemon Species - */ +export interface DexData { + [key: number]: DexEntry; +} + export interface DexEntry { seenAttr: bigint; caughtAttr: bigint; @@ -10,7 +11,3 @@ export interface DexEntry { hatchedCount: number; ivs: number[]; } - -export interface DexData { - [key: number]: DexEntry; -} diff --git a/src/interfaces/held-modifier-config.ts b/src/@types/held-modifier-config.ts similarity index 100% rename from src/interfaces/held-modifier-config.ts rename to src/@types/held-modifier-config.ts diff --git a/src/interfaces/locales.ts b/src/@types/locales.ts similarity index 95% rename from src/interfaces/locales.ts rename to src/@types/locales.ts index 2d26911f82f..3b5a1477e19 100644 --- a/src/interfaces/locales.ts +++ b/src/@types/locales.ts @@ -2,9 +2,6 @@ export interface Localizable { localize(): void; } -export interface TranslationEntries { - [key: string]: string | { [key: string]: string }; -} export interface SimpleTranslationEntries { [key: string]: string; } diff --git a/src/data/trainers/typedefs.ts b/src/@types/trainer-funcs.ts similarity index 83% rename from src/data/trainers/typedefs.ts rename to src/@types/trainer-funcs.ts index 3df2ba3f5f8..0546dd53024 100644 --- a/src/data/trainers/typedefs.ts +++ b/src/@types/trainer-funcs.ts @@ -2,8 +2,8 @@ import type { EnemyPokemon } from "#app/field/pokemon"; import type { PersistentModifier } from "#app/modifier/modifier"; import type { PartyMemberStrength } from "#enums/party-member-strength"; import type { SpeciesId } from "#enums/species-id"; -import type { TrainerConfig } from "./trainer-config"; -import type { TrainerPartyTemplate } from "./TrainerPartyTemplate"; +import type { TrainerConfig } from "../data/trainers/trainer-config"; +import type { TrainerPartyTemplate } from "../data/trainers/TrainerPartyTemplate"; export type PartyTemplateFunc = () => TrainerPartyTemplate; export type PartyMemberFunc = (level: number, strength: PartyMemberStrength) => EnemyPokemon; diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 9a46baba899..598ab64881a 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -120,7 +120,7 @@ import { SceneBase } from "#app/scene-base"; import CandyBar from "#app/ui/candy-bar"; import type { Variant } from "#app/sprites/variant"; import { variantData, clearVariantData } from "#app/sprites/variant"; -import type { Localizable } from "#app/interfaces/locales"; +import type { Localizable } from "#app/@types/locales"; import Overrides from "#app/overrides"; import { InputsController } from "#app/inputs-controller"; import { UiInputs } from "#app/ui-inputs"; @@ -169,7 +169,7 @@ import { import { MysteryEncounterSaveData } from "#app/data/mystery-encounters/mystery-encounter-save-data"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import type HeldModifierConfig from "#app/interfaces/held-modifier-config"; +import type HeldModifierConfig from "#app/@types/held-modifier-config"; import { ExpPhase } from "#app/phases/exp-phase"; import { ShowPartyExpBarPhase } from "#app/phases/show-party-exp-bar-phase"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; diff --git a/src/data/abilities/ability-class.ts b/src/data/abilities/ability-class.ts index 9da83a32c4d..10bd01f3987 100644 --- a/src/data/abilities/ability-class.ts +++ b/src/data/abilities/ability-class.ts @@ -2,7 +2,7 @@ import { AbilityId } from "#enums/ability-id"; import type { AbAttrCondition } from "#app/@types/ability-types"; import type { AbAttr } from "#app/data/abilities/ab-attrs/ab-attr"; import i18next from "i18next"; -import type { Localizable } from "#app/interfaces/locales"; +import type { Localizable } from "#app/@types/locales"; import type { Constructor } from "#app/utils/common"; export class Ability implements Localizable { diff --git a/src/data/egg-hatch-data.ts b/src/data/egg-hatch-data.ts index 949ed1af063..e81ae69515c 100644 --- a/src/data/egg-hatch-data.ts +++ b/src/data/egg-hatch-data.ts @@ -1,6 +1,7 @@ import { globalScene } from "#app/global-scene"; import type { PlayerPokemon } from "#app/field/pokemon"; -import type { DexEntry, StarterDataEntry } from "#app/system/game-data"; +import type { StarterDataEntry } from "#app/system/game-data"; +import type { DexEntry } from "#app/@types/dex-data"; /** * Stores data associated with a specific egg and the hatched pokemon diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index e98b28e2a48..1bd6db97005 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -81,7 +81,7 @@ import { TerrainType } from "../terrain"; import { ModifierPoolType } from "#app/modifier/modifier-type"; import { Command } from "../../ui/command-ui-handler"; import i18next from "i18next"; -import type { Localizable } from "#app/interfaces/locales"; +import type { Localizable } from "#app/@types/locales"; import { getBerryEffectFunc } from "../berry"; import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; diff --git a/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts b/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts index f46e1360b0d..b14caa4e2c3 100644 --- a/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts +++ b/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts @@ -33,7 +33,7 @@ import { } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { TrainerSlot } from "#enums/trainer-slot"; import { PokeballType } from "#enums/pokeball"; -import type HeldModifierConfig from "#app/interfaces/held-modifier-config"; +import type HeldModifierConfig from "#app/@types/held-modifier-config"; import type { BerryType } from "#enums/berry-type"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; diff --git a/src/data/mystery-encounters/encounters/training-session-encounter.ts b/src/data/mystery-encounters/encounters/training-session-encounter.ts index 597a6b009b3..b17a39ae694 100644 --- a/src/data/mystery-encounters/encounters/training-session-encounter.ts +++ b/src/data/mystery-encounters/encounters/training-session-encounter.ts @@ -25,7 +25,7 @@ import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/myst import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import type HeldModifierConfig from "#app/interfaces/held-modifier-config"; +import type HeldModifierConfig from "#app/@types/held-modifier-config"; import i18next from "i18next"; import { getStatKey } from "#enums/stat"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; diff --git a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts index 25be75b9d5a..2b1f775b78e 100644 --- a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts +++ b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts @@ -39,7 +39,7 @@ import { PlayerGender } from "#enums/player-gender"; import { TrainerType } from "#enums/trainer-type"; import PokemonData from "#app/system/pokemon-data"; import { Nature } from "#enums/nature"; -import type HeldModifierConfig from "#app/interfaces/held-modifier-config"; +import type HeldModifierConfig from "#app/@types/held-modifier-config"; import { trainerConfigs } from "#app/data/trainers/trainer-config"; import { TrainerPartyTemplate } from "#app/data/trainers/TrainerPartyTemplate"; import { PartyMemberStrength } from "#enums/party-member-strength"; diff --git a/src/data/mystery-encounters/utils/encounter-phase-utils.ts b/src/data/mystery-encounters/utils/encounter-phase-utils.ts index c9eaa2e6968..5736835d98a 100644 --- a/src/data/mystery-encounters/utils/encounter-phase-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-phase-utils.ts @@ -50,7 +50,7 @@ import type PokemonSpecies from "#app/data/pokemon-species"; import type { IEggOptions } from "#app/data/egg"; import { Egg } from "#app/data/egg"; import type { CustomPokemonData } from "#app/data/custom-pokemon-data"; -import type HeldModifierConfig from "#app/interfaces/held-modifier-config"; +import type HeldModifierConfig from "#app/@types/held-modifier-config"; import { MovePhase } from "#app/phases/move-phase"; import { EggLapsePhase } from "#app/phases/egg-lapse-phase"; import { TrainerVictoryPhase } from "#app/phases/trainer-victory-phase"; diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index df7a8c118d5..e946b526960 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -1,4 +1,4 @@ -import type { Localizable } from "#app/interfaces/locales"; +import type { Localizable } from "#app/@types/locales"; import { AbilityId } from "#enums/ability-id"; import { PartyMemberStrength } from "#enums/party-member-strength"; import { SpeciesId } from "#enums/species-id"; diff --git a/src/data/trainers/evil-admin-trainer-pools.ts b/src/data/trainers/evil-admin-trainer-pools.ts index 7c0336e784e..74ee3e8cb3d 100644 --- a/src/data/trainers/evil-admin-trainer-pools.ts +++ b/src/data/trainers/evil-admin-trainer-pools.ts @@ -1,4 +1,4 @@ -import type { TrainerTierPools } from "#app/data/trainers/typedefs"; +import type { TrainerTierPools } from "#app/@types/trainer-funcs"; import { TrainerPoolTier } from "#enums/trainer-pool-tier"; import { SpeciesId } from "#enums/species-id"; diff --git a/src/data/trainers/trainer-config.ts b/src/data/trainers/trainer-config.ts index 6408bf94eac..8e704b0b301 100644 --- a/src/data/trainers/trainer-config.ts +++ b/src/data/trainers/trainer-config.ts @@ -48,7 +48,7 @@ import type { TrainerTierPools, TrainerConfigs, PartyMemberFuncs, -} from "./typedefs"; +} from "../../@types/trainer-funcs"; /** Minimum BST for Pokemon generated onto the Elite Four's teams */ const ELITE_FOUR_MINIMUM_BST = 460; diff --git a/src/debug.js b/src/debug.js deleted file mode 100644 index 6ddf6046c7a..00000000000 --- a/src/debug.js +++ /dev/null @@ -1,17 +0,0 @@ -export function getData() { - const dataStr = localStorage.getItem("data"); - if (!dataStr) { - return null; - } - return JSON.parse(atob(dataStr), (k, v) => - k.endsWith("Attr") && !["natureAttr", "abilityAttr", "passiveAttr"].includes(k) ? BigInt(v) : v, - ); -} - -export function getSession() { - const sessionStr = localStorage.getItem("sessionData"); - if (!sessionStr) { - return null; - } - return JSON.parse(atob(sessionStr)); -} diff --git a/src/global-vars/starter-colors.ts b/src/global-vars/starter-colors.ts index 6abe028be99..6b019bd5c34 100644 --- a/src/global-vars/starter-colors.ts +++ b/src/global-vars/starter-colors.ts @@ -1,4 +1,3 @@ -export const starterColors: StarterColors = {}; -interface StarterColors { +export const starterColors: { [key: string]: [string, string]; -} +} = {}; diff --git a/src/starter-colors.ts b/src/starter-colors.ts deleted file mode 100644 index 6abe028be99..00000000000 --- a/src/starter-colors.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const starterColors: StarterColors = {}; -interface StarterColors { - [key: string]: [string, string]; -} diff --git a/src/system/game-data.ts b/src/system/game-data.ts index ab907d2f768..d9b8d73d3c3 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -62,6 +62,7 @@ import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; import { ArenaTrapTag } from "#app/data/arena-tag"; import { pokemonFormChanges } from "#app/data/pokemon-forms"; import type { PokemonType } from "#enums/pokemon-type"; +import type { DexData, DexEntry } from "../@types/dex-data"; export const defaultStarterSpecies: SpeciesId[] = [ SpeciesId.BULBASAUR, @@ -131,6 +132,7 @@ export function decrypt(data: string, bypassLogin: boolean): string { )(data); } +// TODO: Move all these exported interfaces to @types export interface SystemSaveData { trainerId: number; secretId: number; @@ -191,20 +193,6 @@ export interface VoucherCounts { [type: string]: number; } -export interface DexData { - [key: number]: DexEntry; -} - -export interface DexEntry { - seenAttr: bigint; - caughtAttr: bigint; - natureAttr: number; - seenCount: number; - caughtCount: number; - hatchedCount: number; - ivs: number[]; -} - export type StarterMoveset = [MoveId] | [MoveId, MoveId] | [MoveId, MoveId, MoveId] | [MoveId, MoveId, MoveId, MoveId]; export interface StarterFormMoveData { diff --git a/src/system/session-history.ts b/src/system/session-history.ts deleted file mode 100644 index 8eb81cb6efe..00000000000 --- a/src/system/session-history.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { GameModes } from "../game-mode"; -import type PokemonData from "./pokemon-data"; -import type PersistentModifierData from "./modifier-data"; - -export enum SessionHistoryResult { - ACTIVE, - WIN, - LOSS, -} - -export interface SessionHistory { - seed: string; - playTime: number; - result: SessionHistoryResult; - gameMode: GameModes; - party: PokemonData[]; - modifiers: PersistentModifierData[]; - money: number; - waveIndex: number; - gameVersion: string; - timestamp: number; -} diff --git a/src/ui/pokedex-page-ui-handler.ts b/src/ui/pokedex-page-ui-handler.ts index 00e166f075d..5875e3394a2 100644 --- a/src/ui/pokedex-page-ui-handler.ts +++ b/src/ui/pokedex-page-ui-handler.ts @@ -20,7 +20,8 @@ import { allSpecies, getPokemonSpecies, getPokemonSpeciesForm, normalForm } from import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters"; import { starterPassiveAbilities } from "#app/data/balance/passives"; import { PokemonType } from "#enums/pokemon-type"; -import type { DexEntry, StarterAttributes } from "#app/system/game-data"; +import type { StarterAttributes } from "#app/system/game-data"; +import type { DexEntry } from "#app/@types/dex-data"; import { AbilityAttr, DexAttr } from "#app/system/game-data"; import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import MessageUiHandler from "#app/ui/message-ui-handler"; diff --git a/src/ui/pokedex-ui-handler.ts b/src/ui/pokedex-ui-handler.ts index 8b3633d7422..96451041306 100644 --- a/src/ui/pokedex-ui-handler.ts +++ b/src/ui/pokedex-ui-handler.ts @@ -11,7 +11,8 @@ import { allSpecies, getPokemonSpeciesForm, getPokerusStarters, normalForm } fro import { getStarterValueFriendshipCap, speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters"; import { catchableSpecies } from "#app/data/balance/biomes"; import { PokemonType } from "#enums/pokemon-type"; -import type { DexAttrProps, DexEntry, StarterAttributes, StarterPreferences } from "#app/system/game-data"; +import type { DexAttrProps, StarterAttributes, StarterPreferences } from "#app/system/game-data"; +import type { DexEntry } from "#app/@types/dex-data"; import { AbilityAttr, DexAttr, loadStarterPreferences } from "#app/system/game-data"; import MessageUiHandler from "#app/ui/message-ui-handler"; import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler"; diff --git a/src/ui/pokemon-info-container.ts b/src/ui/pokemon-info-container.ts index d8012a58875..3dbe3b7af7d 100644 --- a/src/ui/pokemon-info-container.ts +++ b/src/ui/pokemon-info-container.ts @@ -6,7 +6,8 @@ import { getNatureName } from "../data/nature"; import { PokemonType } from "#enums/pokemon-type"; import type Pokemon from "../field/pokemon"; import i18next from "i18next"; -import type { DexEntry, StarterDataEntry } from "../system/game-data"; +import type { StarterDataEntry } from "../system/game-data"; +import type { DexEntry } from "#app/@types/dex-data"; import { DexAttr } from "../system/game-data"; import { fixedInt, getShinyDescriptor } from "#app/utils/common"; import ConfirmUiHandler from "./confirm-ui-handler"; diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 3bea0b08698..b7a7e0f3e6e 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -23,13 +23,8 @@ import { allSpecies, getPokemonSpeciesForm, getPokerusStarters } from "#app/data import { getStarterValueFriendshipCap, speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters"; import { PokemonType } from "#enums/pokemon-type"; import { GameModes } from "#app/game-mode"; -import type { - DexAttrProps, - DexEntry, - StarterMoveset, - StarterAttributes, - StarterPreferences, -} from "#app/system/game-data"; +import type { DexAttrProps, StarterMoveset, StarterAttributes, StarterPreferences } from "#app/system/game-data"; +import type { DexEntry } from "#app/@types/dex-data"; import { AbilityAttr, DexAttr, loadStarterPreferences, saveStarterPreferences } from "#app/system/game-data"; import { Tutorial, handleTutorial } from "#app/tutorial"; import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; From d3bc33cd4ea8a315ce32623a526530c1af928a48 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sat, 7 Jun 2025 17:37:09 -0700 Subject: [PATCH 60/71] [Misc] Remove `debug.js` reference from `index.html` --- index.html | 1 - 1 file changed, 1 deletion(-) diff --git a/index.html b/index.html index 111464b5e5c..d503617c13c 100644 --- a/index.html +++ b/index.html @@ -145,6 +145,5 @@ - \ No newline at end of file From ef6029ae4bf2f3b6517837d1d7b282e511049f69 Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Sat, 7 Jun 2025 20:44:58 -0400 Subject: [PATCH 61/71] [Refactor] Add methods `isPlayer` and `isEnemy` to reduce circular imports https://github.com/pagefaultgames/pokerogue/pull/5902 * Added functions `isPlayer` and `isEnemy` for type checking * Apply suggestions from Kev code review Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Fix merge issue * Split imports --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/battle-scene.ts | 13 ++--- src/data/abilities/ability.ts | 8 +-- src/data/moves/move.ts | 22 ++++---- src/field/pokemon.ts | 52 ++++++++++++------- src/messages.ts | 4 +- src/phases/faint-phase.ts | 5 +- src/phases/move-effect-phase.ts | 2 +- src/phases/quiet-form-change-phase.ts | 3 +- src/phases/switch-summon-phase.ts | 1 - ...an-offer-you-cant-refuse-encounter.test.ts | 4 +- .../the-pokemon-salesman-encounter.test.ts | 3 +- 11 files changed, 63 insertions(+), 54 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 598ab64881a..762e11ec9f5 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -811,6 +811,7 @@ export default class BattleScene extends SceneBase { } } + // TODO: Add a `getPartyOnSide` function for getting the party of a pokemon public getPlayerParty(): PlayerPokemon[] { return this.party; } @@ -3086,9 +3087,9 @@ export default class BattleScene extends SceneBase { const removeOld = itemModifier.stackCount === 0; - if (!removeOld || !source || this.removeModifier(itemModifier, !source.isPlayer())) { + if (!removeOld || !source || this.removeModifier(itemModifier, source.isEnemy())) { const addModifier = () => { - if (!matchingModifier || this.removeModifier(matchingModifier, !target.isPlayer())) { + if (!matchingModifier || this.removeModifier(matchingModifier, target.isEnemy())) { if (target.isPlayer()) { this.addModifier(newItemModifier, ignoreUpdate, playSound, false, instant); if (source && itemLost) { @@ -3492,12 +3493,12 @@ export default class BattleScene extends SceneBase { } if (matchingFormChange) { let phase: Phase; - if (pokemon instanceof PlayerPokemon && !matchingFormChange.quiet) { + if (pokemon.isPlayer() && !matchingFormChange.quiet) { phase = new FormChangePhase(pokemon, matchingFormChange, modal); } else { phase = new QuietFormChangePhase(pokemon, matchingFormChange); } - if (pokemon instanceof PlayerPokemon && !matchingFormChange.quiet && modal) { + if (pokemon.isPlayer() && !matchingFormChange.quiet && modal) { this.overridePhase(phase); } else if (delayed) { this.pushPhase(phase); @@ -3595,7 +3596,7 @@ export default class BattleScene extends SceneBase { activePokemon = activePokemon.concat(this.getEnemyParty()); for (const p of activePokemon) { keys.push(p.getSpriteKey(true)); - if (p instanceof PlayerPokemon) { + if (p.isPlayer()) { keys.push(p.getBattleSpriteKey(true, true)); } keys.push(p.species.getCryKey(p.formIndex)); @@ -3611,7 +3612,7 @@ export default class BattleScene extends SceneBase { * @param pokemon The (enemy) pokemon */ initFinalBossPhaseTwo(pokemon: Pokemon): void { - if (pokemon instanceof EnemyPokemon && pokemon.isBoss() && !pokemon.formIndex && pokemon.bossSegmentIndex < 1) { + if (pokemon.isEnemy() && pokemon.isBoss() && !pokemon.formIndex && pokemon.bossSegmentIndex < 1) { this.fadeOutBgm(fixedInt(2000), false); this.ui.showDialogue( battleSpecDialogue[BattleSpec.FINAL_BOSS].firstStageWin, diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index d20eddcb3cb..4d307b2ce6f 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -2617,7 +2617,7 @@ export class PostSummonUserFieldRemoveStatusEffectAbAttr extends PostSummonAbAtt } override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - const party = pokemon instanceof PlayerPokemon ? globalScene.getPlayerField() : globalScene.getEnemyField(); + const party = pokemon.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField(); return party.filter(p => p.isAllowedInBattle()).length > 0; } @@ -2629,7 +2629,7 @@ export class PostSummonUserFieldRemoveStatusEffectAbAttr extends PostSummonAbAtt * @param args - n/a */ override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { - const party = pokemon instanceof PlayerPokemon ? globalScene.getPlayerField() : globalScene.getEnemyField(); + const party = pokemon.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField(); const allowedParty = party.filter(p => p.isAllowedInBattle()); if (!simulated) { @@ -5539,7 +5539,7 @@ class ForceSwitchOutHelper { * - Whether there are available party members to switch in. * - If the Pokémon is still alive (hp > 0), and if so, it leaves the field and a new SwitchPhase is initiated. */ - if (switchOutTarget instanceof PlayerPokemon) { + if (switchOutTarget.isPlayer()) { if (globalScene.getPlayerParty().filter((p) => p.isAllowedInBattle() && !p.isOnField()).length < 1) { return false; } @@ -5608,7 +5608,7 @@ class ForceSwitchOutHelper { */ public getSwitchOutCondition(pokemon: Pokemon, opponent: Pokemon): boolean { const switchOutTarget = pokemon; - const player = switchOutTarget instanceof PlayerPokemon; + const player = switchOutTarget.isPlayer(); if (player) { const blockedByAbility = new BooleanHolder(false); diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index 1bd6db97005..f610c745fd2 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -837,7 +837,7 @@ export default class Move implements Localizable { aura.applyPreAttack(source, null, simulated, target, this, [ power ]); } - const alliedField: Pokemon[] = source instanceof PlayerPokemon ? globalScene.getPlayerField() : globalScene.getEnemyField(); + const alliedField: Pokemon[] = source.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField(); alliedField.forEach(p => applyPreAttackAbAttrs(UserFieldMoveTypePowerBoostAbAttr, p, target, this, simulated, power)); power.value *= typeChangeMovePowerMultiplier.value; @@ -4125,7 +4125,7 @@ export class FriendshipPowerAttr extends VariablePowerAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const power = args[0] as NumberHolder; - const friendshipPower = Math.floor(Math.min(user instanceof PlayerPokemon ? user.friendship : user.species.baseFriendship, 255) / 2.5); + const friendshipPower = Math.floor(Math.min(user.isPlayer() ? user.friendship : user.species.baseFriendship, 255) / 2.5); power.value = Math.max(!this.invert ? friendshipPower : 102 - friendshipPower, 1); return true; @@ -6149,14 +6149,14 @@ export class RevivalBlessingAttr extends MoveEffectAttr { * @param target {@linkcode Pokemon} target of this move * @param move {@linkcode Move} being used * @param args N/A - * @returns Promise, true if function succeeds. + * @returns `true` if function succeeds. */ override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { // If user is player, checks if the user has fainted pokemon - if (user instanceof PlayerPokemon) { + if (user.isPlayer()) { globalScene.unshiftPhase(new RevivalBlessingPhase(user)); return true; - } else if (user instanceof EnemyPokemon && user.hasTrainer() && globalScene.getEnemyParty().findIndex((p) => p.isFainted() && !p.isBoss()) > -1) { + } else if (user.isEnemy() && user.hasTrainer() && globalScene.getEnemyParty().findIndex((p) => p.isFainted() && !p.isBoss()) > -1) { // If used by an enemy trainer with at least one fainted non-boss Pokemon, this // revives one of said Pokemon selected at random. const faintedPokemon = globalScene.getEnemyParty().filter((p) => p.isFainted() && !p.isBoss()); @@ -6187,10 +6187,8 @@ export class RevivalBlessingAttr extends MoveEffectAttr { getCondition(): MoveConditionFunc { return (user, target, move) => - (user instanceof PlayerPokemon && globalScene.getPlayerParty().some((p) => p.isFainted())) || - (user instanceof EnemyPokemon && - user.hasTrainer() && - globalScene.getEnemyParty().some((p) => p.isFainted() && !p.isBoss())); + user.hasTrainer() && + (user.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty()).some((p: Pokemon) => p.isFainted() && !p.isBoss()); } override getUserBenefitScore(user: Pokemon, _target: Pokemon, _move: Move): number { @@ -6228,7 +6226,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { // (e.g. when it uses Flip Turn), make it spit out the Tatsugiri before switching out. switchOutTarget.lapseTag(BattlerTagType.COMMANDED); - if (switchOutTarget instanceof PlayerPokemon) { + if (switchOutTarget.isPlayer()) { /** * Check if Wimp Out/Emergency Exit activates due to being hit by U-turn or Volt Switch * If it did, the user of U-turn or Volt Switch will not be switched out. @@ -6382,7 +6380,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { getSwitchOutCondition(): MoveConditionFunc { return (user, target, move) => { const switchOutTarget = (this.selfSwitch ? user : target); - const player = switchOutTarget instanceof PlayerPokemon; + const player = switchOutTarget.isPlayer(); const forceSwitchAttr = move.getAttrs(ForceSwitchOutAttr).find(attr => attr.switchType === SwitchType.FORCE_SWITCH); if (!this.selfSwitch) { @@ -9857,7 +9855,7 @@ export function initMoves() { const lastEnemyFaint = globalScene.currentBattle.enemyFaintsHistory[globalScene.currentBattle.enemyFaintsHistory.length - 1]; return ( (lastPlayerFaint !== undefined && turn - lastPlayerFaint.turn === 1 && user.isPlayer()) || - (lastEnemyFaint !== undefined && turn - lastEnemyFaint.turn === 1 && !user.isPlayer()) + (lastEnemyFaint !== undefined && turn - lastEnemyFaint.turn === 1 && user.isEnemy()) ) ? 2 : 1; }), new AttackMove(MoveId.FINAL_GAMBIT, PokemonType.FIGHTING, MoveCategory.SPECIAL, -1, 100, 5, -1, 0, 5) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index df953f06834..d26dfd193f9 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -503,7 +503,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (level > 1) { const fused = new BooleanHolder(globalScene.gameMode.isSplicedOnly); - if (!fused.value && !this.isPlayer() && !this.hasTrainer()) { + if (!fused.value && this.isEnemy() && !this.hasTrainer()) { globalScene.applyModifier(EnemyFusionChanceModifier, false, fused); } @@ -788,7 +788,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return true; } - abstract isPlayer(): boolean; + abstract isPlayer(): this is PlayerPokemon; + + abstract isEnemy(): this is EnemyPokemon; abstract hasTrainer(): boolean; @@ -2050,7 +2052,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (Overrides.ABILITY_OVERRIDE && this.isPlayer()) { return allAbilities[Overrides.ABILITY_OVERRIDE]; } - if (Overrides.OPP_ABILITY_OVERRIDE && !this.isPlayer()) { + if (Overrides.OPP_ABILITY_OVERRIDE && this.isEnemy()) { return allAbilities[Overrides.OPP_ABILITY_OVERRIDE]; } if (this.isFusion()) { @@ -2080,7 +2082,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (Overrides.PASSIVE_ABILITY_OVERRIDE && this.isPlayer()) { return allAbilities[Overrides.PASSIVE_ABILITY_OVERRIDE]; } - if (Overrides.OPP_PASSIVE_ABILITY_OVERRIDE && !this.isPlayer()) { + if (Overrides.OPP_PASSIVE_ABILITY_OVERRIDE && this.isEnemy()) { return allAbilities[Overrides.OPP_PASSIVE_ABILITY_OVERRIDE]; } if (!isNullOrUndefined(this.customPokemonData.passive) && this.customPokemonData.passive !== -1) { @@ -2152,7 +2154,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // returns override if valid for current case if ( (Overrides.HAS_PASSIVE_ABILITY_OVERRIDE === false && this.isPlayer()) || - (Overrides.OPP_HAS_PASSIVE_ABILITY_OVERRIDE === false && !this.isPlayer()) + (Overrides.OPP_HAS_PASSIVE_ABILITY_OVERRIDE === false && this.isEnemy()) ) { return false; } @@ -2160,7 +2162,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ((Overrides.PASSIVE_ABILITY_OVERRIDE !== AbilityId.NONE || Overrides.HAS_PASSIVE_ABILITY_OVERRIDE) && this.isPlayer()) || ((Overrides.OPP_PASSIVE_ABILITY_OVERRIDE !== AbilityId.NONE || Overrides.OPP_HAS_PASSIVE_ABILITY_OVERRIDE) && - !this.isPlayer()) + this.isEnemy()) ) { return true; } @@ -2169,7 +2171,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const { currentBattle, gameMode } = globalScene; const waveIndex = currentBattle?.waveIndex; if ( - this instanceof EnemyPokemon && + this.isEnemy() && (currentBattle?.battleSpec === BattleSpec.FINAL_BOSS || gameMode.isEndlessMinorBoss(waveIndex) || gameMode.isEndlessMajorBoss(waveIndex)) @@ -2979,9 +2981,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { let fusionOverride: PokemonSpecies | undefined = undefined; - if (forStarter && this instanceof PlayerPokemon && Overrides.STARTER_FUSION_SPECIES_OVERRIDE) { + if (forStarter && this.isPlayer() && Overrides.STARTER_FUSION_SPECIES_OVERRIDE) { fusionOverride = getPokemonSpecies(Overrides.STARTER_FUSION_SPECIES_OVERRIDE); - } else if (this instanceof EnemyPokemon && Overrides.OPP_FUSION_SPECIES_OVERRIDE) { + } else if (this.isEnemy() && Overrides.OPP_FUSION_SPECIES_OVERRIDE) { fusionOverride = getPokemonSpecies(Overrides.OPP_FUSION_SPECIES_OVERRIDE); } @@ -3292,7 +3294,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.battleInfo.setX(this.battleInfo.x + (this.isPlayer() ? 150 : !this.isBoss() ? -150 : -198)); this.battleInfo.setVisible(true); if (this.isPlayer()) { - this.battleInfo.expMaskRect.x += 150; + // TODO: How do you get this to not require a private property access? + this["battleInfo"].expMaskRect.x += 150; } globalScene.tweens.add({ targets: [this.battleInfo, this.battleInfo.expMaskRect], @@ -3313,7 +3316,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ease: "Cubic.easeIn", onComplete: () => { if (this.isPlayer()) { - this.battleInfo.expMaskRect.x -= 150; + // TODO: How do you get this to not require a private property access? + this["battleInfo"].expMaskRect.x -= 150; } this.battleInfo.setVisible(false); this.battleInfo.setX(this.battleInfo.x - (this.isPlayer() ? 150 : !this.isBoss() ? -150 : -198)); @@ -3408,7 +3412,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns An array of Pokémon on the allied field. */ getAlliedField(): Pokemon[] { - return this instanceof PlayerPokemon ? globalScene.getPlayerField() : globalScene.getEnemyField(); + return this.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField(); } /** @@ -4260,7 +4264,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // Copy all stat stages for (const s of BATTLE_STATS) { const sourceStage = source.getStatStage(s); - if (this instanceof PlayerPokemon && sourceStage === 6) { + if (this.isPlayer() && sourceStage === 6) { globalScene.validateAchv(achvs.TRANSFER_MAX_STAT_STAGE); } this.setStatStage(s, sourceStage); @@ -5468,7 +5472,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { heldItem.stackCount--; if (heldItem.stackCount <= 0) { - globalScene.removeModifier(heldItem, !this.isPlayer()); + globalScene.removeModifier(heldItem, this.isEnemy()); } if (forBattle) { applyPostItemLostAbAttrs(PostItemLostAbAttr, this, false); @@ -5541,15 +5545,19 @@ export class PlayerPokemon extends Pokemon { this.battleInfo.initInfo(this); } - isPlayer(): boolean { + override isPlayer(): this is PlayerPokemon { return true; } - hasTrainer(): boolean { + override isEnemy(): this is EnemyPokemon { + return false; + } + + override hasTrainer(): boolean { return true; } - isBoss(): boolean { + override isBoss(): boolean { return false; } @@ -6494,15 +6502,19 @@ export class EnemyPokemon extends Pokemon { return [sortedBenefitScores[targetIndex][0]]; } - isPlayer() { + override isPlayer(): this is PlayerPokemon { return false; } - hasTrainer(): boolean { + override isEnemy(): this is EnemyPokemon { + return true; + } + + override hasTrainer(): boolean { return !!this.trainerSlot; } - isBoss(): boolean { + override isBoss(): boolean { return !!this.bossSegments; } diff --git a/src/messages.ts b/src/messages.ts index c29151a98b3..21473eb8361 100644 --- a/src/messages.ts +++ b/src/messages.ts @@ -16,7 +16,7 @@ export function getPokemonNameWithAffix(pokemon: Pokemon | undefined, useIllusio switch (globalScene.currentBattle.battleSpec) { case BattleSpec.DEFAULT: - return !pokemon.isPlayer() + return pokemon.isEnemy() ? pokemon.hasTrainer() ? i18next.t("battle:foePokemonWithAffix", { pokemonName: pokemon.getNameToRender(useIllusion), @@ -26,7 +26,7 @@ export function getPokemonNameWithAffix(pokemon: Pokemon | undefined, useIllusio }) : pokemon.getNameToRender(useIllusion); case BattleSpec.FINAL_BOSS: - return !pokemon.isPlayer() + return pokemon.isEnemy() ? i18next.t("battle:foePokemonWithAffix", { pokemonName: pokemon.getNameToRender(useIllusion) }) : pokemon.getNameToRender(useIllusion); default: diff --git a/src/phases/faint-phase.ts b/src/phases/faint-phase.ts index 7332d6b9462..fac0947c4e7 100644 --- a/src/phases/faint-phase.ts +++ b/src/phases/faint-phase.ts @@ -18,7 +18,8 @@ import { BattleSpec } from "#app/enums/battle-spec"; import { StatusEffect } from "#app/enums/status-effect"; import type { EnemyPokemon } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; -import { HitResult, PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import { HitResult, PokemonMove } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { PokemonInstantReviveModifier } from "#app/modifier/modifier"; import { SwitchType } from "#enums/switch-type"; @@ -203,7 +204,7 @@ export class FaintPhase extends PokemonPhase { } pokemon.faintCry(() => { - if (pokemon instanceof PlayerPokemon) { + if (pokemon.isPlayer()) { pokemon.addFriendship(-FRIENDSHIP_LOSS_FROM_FAINT); } pokemon.hideInfo(); diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index d80fdc89e6f..e62f65b029b 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -887,7 +887,7 @@ export class MoveEffectPhase extends PokemonPhase { sourceBattlerIndex: user.getBattlerIndex(), }); - if (user.isPlayer() && !target.isPlayer()) { + if (user.isPlayer() && target.isEnemy()) { globalScene.applyModifiers(DamageMoneyRewardModifier, true, user, new NumberHolder(damage)); } diff --git a/src/phases/quiet-form-change-phase.ts b/src/phases/quiet-form-change-phase.ts index 9f6b5cb3361..f677dcc48df 100644 --- a/src/phases/quiet-form-change-phase.ts +++ b/src/phases/quiet-form-change-phase.ts @@ -6,7 +6,6 @@ import { getTypeRgb } from "#app/data/type"; import { BattleSpec } from "#app/enums/battle-spec"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import type Pokemon from "#app/field/pokemon"; -import { EnemyPokemon } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { BattlePhase } from "./battle-phase"; import type { MovePhase } from "./move-phase"; @@ -158,7 +157,7 @@ export class QuietFormChangePhase extends BattlePhase { end(): void { this.pokemon.findAndRemoveTags(t => t.tagType === BattlerTagType.AUTOTOMIZED); - if (globalScene?.currentBattle.battleSpec === BattleSpec.FINAL_BOSS && this.pokemon instanceof EnemyPokemon) { + if (globalScene?.currentBattle.battleSpec === BattleSpec.FINAL_BOSS && this.pokemon.isEnemy()) { globalScene.playBgm(); globalScene.unshiftPhase( new PokemonHealPhase(this.pokemon.getBattlerIndex(), this.pokemon.getMaxHp(), null, false, false, false, true), diff --git a/src/phases/switch-summon-phase.ts b/src/phases/switch-summon-phase.ts index d81ca6029c5..1872dae1f1f 100644 --- a/src/phases/switch-summon-phase.ts +++ b/src/phases/switch-summon-phase.ts @@ -139,7 +139,6 @@ export class SwitchSummonPhase extends SummonPhase { return; } - if (this.switchType === SwitchType.BATON_PASS) { // If switching via baton pass, update opposing tags coming from the prior pokemon (this.player ? globalScene.getEnemyField() : globalScene.getPlayerField()).forEach((enemyPokemon: Pokemon) => diff --git a/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts b/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts index f39ce753b10..786090aa8d6 100644 --- a/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts +++ b/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts @@ -8,7 +8,7 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vite import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; import type BattleScene from "#app/battle-scene"; -import { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import { PokemonMove } from "#app/field/pokemon"; import { AnOfferYouCantRefuseEncounter } from "#app/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; @@ -105,7 +105,7 @@ describe("An Offer You Can't Refuse - Mystery Encounter", () => { i18next.t("ability:intimidate.name"), ); expect(AnOfferYouCantRefuseEncounter.dialogueTokens?.moveOrAbility).toBe(i18next.t("ability:intimidate.name")); - expect(AnOfferYouCantRefuseEncounter.misc.pokemon instanceof PlayerPokemon).toBeTruthy(); + expect(AnOfferYouCantRefuseEncounter.misc.pokemon.isPlayer()).toBeTruthy(); expect(AnOfferYouCantRefuseEncounter.misc?.price?.toString()).toBe( AnOfferYouCantRefuseEncounter.dialogueTokens?.price, ); diff --git a/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts b/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts index 15fc3ffb00b..73632990dbf 100644 --- a/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts @@ -10,7 +10,6 @@ import { runSelectMysteryEncounterOption, } from "#test/mystery-encounter/encounter-test-utils"; import type BattleScene from "#app/battle-scene"; -import { PlayerPokemon } from "#app/field/pokemon"; import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; import { getSalesmanSpeciesOffer, @@ -99,7 +98,7 @@ describe("The Pokemon Salesman - Mystery Encounter", () => { expect(ThePokemonSalesmanEncounter.dialogueTokens?.purchasePokemon).toBeDefined(); expect(ThePokemonSalesmanEncounter.dialogueTokens?.price).toBeDefined(); - expect(ThePokemonSalesmanEncounter.misc.pokemon instanceof PlayerPokemon).toBeTruthy(); + expect(ThePokemonSalesmanEncounter.misc.pokemon.isPlayer()).toBeTruthy(); expect(ThePokemonSalesmanEncounter.misc?.price?.toString()).toBe(ThePokemonSalesmanEncounter.dialogueTokens?.price); expect(onInitResult).toBe(true); }); From 31140356733b1eda36546d1089165e24a7e0f150 Mon Sep 17 00:00:00 2001 From: Jimmybald1 <122436263+Jimmybald1@users.noreply.github.com> Date: Sun, 8 Jun 2025 02:54:33 +0200 Subject: [PATCH 62/71] [Balance] Update catch rates to Gen 9 (#5954) Updated catch rates to gen 9w Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com> --- src/data/pokemon-species.ts | 48 ++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index e946b526960..c5d798b5841 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -2022,9 +2022,9 @@ export function initSpecies() { new PokemonForm("Normal", "", PokemonType.GROUND, null, 3.5, 950, AbilityId.DROUGHT, AbilityId.NONE, AbilityId.NONE, 670, 100, 150, 140, 100, 90, 90, 3, 0, 335, false, null, true), new PokemonForm("Primal", "primal", PokemonType.GROUND, PokemonType.FIRE, 5, 999.7, AbilityId.DESOLATE_LAND, AbilityId.NONE, AbilityId.NONE, 770, 100, 180, 160, 150, 90, 90, 3, 0, 335), ), - new PokemonSpecies(SpeciesId.RAYQUAZA, 3, false, true, false, "Sky High Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 7, 206.5, AbilityId.AIR_LOCK, AbilityId.NONE, AbilityId.NONE, 680, 105, 150, 90, 150, 90, 95, 45, 0, 340, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 7, 206.5, AbilityId.AIR_LOCK, AbilityId.NONE, AbilityId.NONE, 680, 105, 150, 90, 150, 90, 95, 45, 0, 340, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FLYING, 10.8, 392, AbilityId.DELTA_STREAM, AbilityId.NONE, AbilityId.NONE, 780, 105, 180, 100, 180, 100, 115, 45, 0, 340), + new PokemonSpecies(SpeciesId.RAYQUAZA, 3, false, true, false, "Sky High Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 7, 206.5, AbilityId.AIR_LOCK, AbilityId.NONE, AbilityId.NONE, 680, 105, 150, 90, 150, 90, 95, 3, 0, 340, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 7, 206.5, AbilityId.AIR_LOCK, AbilityId.NONE, AbilityId.NONE, 680, 105, 150, 90, 150, 90, 95, 3, 0, 340, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FLYING, 10.8, 392, AbilityId.DELTA_STREAM, AbilityId.NONE, AbilityId.NONE, 780, 105, 180, 100, 180, 100, 115, 3, 0, 340), ), new PokemonSpecies(SpeciesId.JIRACHI, 3, false, false, true, "Wish Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.3, 1.1, AbilityId.SERENE_GRACE, AbilityId.NONE, AbilityId.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false), new PokemonSpecies(SpeciesId.DEOXYS, 3, false, false, true, "DNA Pokémon", PokemonType.PSYCHIC, null, 1.7, 60.8, AbilityId.PRESSURE, AbilityId.NONE, AbilityId.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, GrowthRate.SLOW, null, false, true, @@ -2270,10 +2270,10 @@ export function initSpecies() { new PokemonSpecies(SpeciesId.WHIMSICOTT, 5, false, false, false, "Windveiled Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.7, 6.6, AbilityId.PRANKSTER, AbilityId.INFILTRATOR, AbilityId.CHLOROPHYLL, 480, 60, 67, 85, 77, 75, 116, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(SpeciesId.PETILIL, 5, false, false, false, "Bulb Pokémon", PokemonType.GRASS, null, 0.5, 6.6, AbilityId.CHLOROPHYLL, AbilityId.OWN_TEMPO, AbilityId.LEAF_GUARD, 280, 45, 35, 50, 70, 50, 30, 190, 50, 56, GrowthRate.MEDIUM_FAST, 0, false), new PokemonSpecies(SpeciesId.LILLIGANT, 5, false, false, false, "Flowering Pokémon", PokemonType.GRASS, null, 1.1, 16.3, AbilityId.CHLOROPHYLL, AbilityId.OWN_TEMPO, AbilityId.LEAF_GUARD, 480, 70, 60, 75, 110, 75, 90, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(SpeciesId.BASCULIN, 5, false, false, false, "Hostile Pokémon", PokemonType.WATER, null, 1, 18, AbilityId.RECKLESS, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Red-Striped Form", "red-striped", PokemonType.WATER, null, 1, 18, AbilityId.RECKLESS, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), - new PokemonForm("Blue-Striped Form", "blue-striped", PokemonType.WATER, null, 1, 18, AbilityId.ROCK_HEAD, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), - new PokemonForm("White-Striped Form", "white-striped", PokemonType.WATER, null, 1, 18, AbilityId.RATTLED, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), + new PokemonSpecies(SpeciesId.BASCULIN, 5, false, false, false, "Hostile Pokémon", PokemonType.WATER, null, 1, 18, AbilityId.RECKLESS, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 190, 50, 161, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Red-Striped Form", "red-striped", PokemonType.WATER, null, 1, 18, AbilityId.RECKLESS, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 190, 50, 161, false, null, true), + new PokemonForm("Blue-Striped Form", "blue-striped", PokemonType.WATER, null, 1, 18, AbilityId.ROCK_HEAD, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 190, 50, 161, false, null, true), + new PokemonForm("White-Striped Form", "white-striped", PokemonType.WATER, null, 1, 18, AbilityId.RATTLED, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 190, 50, 161, false, null, true), ), new PokemonSpecies(SpeciesId.SANDILE, 5, false, false, false, "Desert Croc Pokémon", PokemonType.GROUND, PokemonType.DARK, 0.7, 15.2, AbilityId.INTIMIDATE, AbilityId.MOXIE, AbilityId.ANGER_POINT, 292, 50, 72, 35, 35, 35, 65, 180, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), new PokemonSpecies(SpeciesId.KROKOROK, 5, false, false, false, "Desert Croc Pokémon", PokemonType.GROUND, PokemonType.DARK, 1, 33.4, AbilityId.INTIMIDATE, AbilityId.MOXIE, AbilityId.ANGER_POINT, 351, 60, 82, 45, 45, 45, 74, 90, 50, 123, GrowthRate.MEDIUM_SLOW, 50, false), @@ -2740,10 +2740,10 @@ export function initSpecies() { new PokemonSpecies(SpeciesId.TAPU_LELE, 7, true, false, false, "Land Spirit Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.2, 18.6, AbilityId.PSYCHIC_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 85, 75, 130, 115, 95, 3, 50, 285, GrowthRate.SLOW, null, false), new PokemonSpecies(SpeciesId.TAPU_BULU, 7, true, false, false, "Land Spirit Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 1.9, 45.5, AbilityId.GRASSY_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 130, 115, 85, 95, 75, 3, 50, 285, GrowthRate.SLOW, null, false), new PokemonSpecies(SpeciesId.TAPU_FINI, 7, true, false, false, "Land Spirit Pokémon", PokemonType.WATER, PokemonType.FAIRY, 1.3, 21.2, AbilityId.MISTY_SURGE, AbilityId.NONE, AbilityId.TELEPATHY, 570, 70, 75, 115, 95, 130, 85, 3, 50, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.COSMOG, 7, true, false, false, "Nebula Pokémon", PokemonType.PSYCHIC, null, 0.2, 0.1, AbilityId.UNAWARE, AbilityId.NONE, AbilityId.NONE, 200, 43, 29, 31, 29, 31, 37, 45, 0, 40, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.COSMOEM, 7, true, false, false, "Protostar Pokémon", PokemonType.PSYCHIC, null, 0.1, 999.9, AbilityId.STURDY, AbilityId.NONE, AbilityId.NONE, 400, 43, 29, 131, 29, 131, 37, 45, 0, 140, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.SOLGALEO, 7, false, true, false, "Sunne Pokémon", PokemonType.PSYCHIC, PokemonType.STEEL, 3.4, 230, AbilityId.FULL_METAL_BODY, AbilityId.NONE, AbilityId.NONE, 680, 137, 137, 107, 113, 89, 97, 45, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.LUNALA, 7, false, true, false, "Moone Pokémon", PokemonType.PSYCHIC, PokemonType.GHOST, 4, 120, AbilityId.SHADOW_SHIELD, AbilityId.NONE, AbilityId.NONE, 680, 137, 113, 89, 137, 107, 97, 45, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.COSMOG, 7, true, false, false, "Nebula Pokémon", PokemonType.PSYCHIC, null, 0.2, 0.1, AbilityId.UNAWARE, AbilityId.NONE, AbilityId.NONE, 200, 43, 29, 31, 29, 31, 37, 3, 0, 40, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.COSMOEM, 7, true, false, false, "Protostar Pokémon", PokemonType.PSYCHIC, null, 0.1, 999.9, AbilityId.STURDY, AbilityId.NONE, AbilityId.NONE, 400, 43, 29, 131, 29, 131, 37, 3, 0, 140, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.SOLGALEO, 7, false, true, false, "Sunne Pokémon", PokemonType.PSYCHIC, PokemonType.STEEL, 3.4, 230, AbilityId.FULL_METAL_BODY, AbilityId.NONE, AbilityId.NONE, 680, 137, 137, 107, 113, 89, 97, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(SpeciesId.LUNALA, 7, false, true, false, "Moone Pokémon", PokemonType.PSYCHIC, PokemonType.GHOST, 4, 120, AbilityId.SHADOW_SHIELD, AbilityId.NONE, AbilityId.NONE, 680, 137, 113, 89, 137, 107, 97, 3, 0, 340, GrowthRate.SLOW, null, false), new PokemonSpecies(SpeciesId.NIHILEGO, 7, true, false, false, "Parasite Pokémon", PokemonType.ROCK, PokemonType.POISON, 1.2, 55.5, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 109, 53, 47, 127, 131, 103, 45, 0, 285, GrowthRate.SLOW, null, false), new PokemonSpecies(SpeciesId.BUZZWOLE, 7, true, false, false, "Swollen Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 2.4, 333.6, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 107, 139, 139, 53, 53, 79, 45, 0, 285, GrowthRate.SLOW, null, false), new PokemonSpecies(SpeciesId.PHEROMOSA, 7, true, false, false, "Lissome Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 1.8, 25, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 71, 137, 37, 137, 37, 151, 45, 0, 285, GrowthRate.SLOW, null, false), @@ -2751,11 +2751,11 @@ export function initSpecies() { new PokemonSpecies(SpeciesId.CELESTEELA, 7, true, false, false, "Launch Pokémon", PokemonType.STEEL, PokemonType.FLYING, 9.2, 999.9, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 97, 101, 103, 107, 101, 61, 45, 0, 285, GrowthRate.SLOW, null, false), new PokemonSpecies(SpeciesId.KARTANA, 7, true, false, false, "Drawn Sword Pokémon", PokemonType.GRASS, PokemonType.STEEL, 0.3, 0.1, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 59, 181, 131, 59, 31, 109, 45, 0, 285, GrowthRate.SLOW, null, false), new PokemonSpecies(SpeciesId.GUZZLORD, 7, true, false, false, "Junkivore Pokémon", PokemonType.DARK, PokemonType.DRAGON, 5.5, 888, AbilityId.BEAST_BOOST, AbilityId.NONE, AbilityId.NONE, 570, 223, 101, 53, 97, 53, 43, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(SpeciesId.NECROZMA, 7, false, true, false, "Prism Pokémon", PokemonType.PSYCHIC, null, 2.4, 230, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 600, 97, 107, 101, 127, 89, 79, 255, 0, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 2.4, 230, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 600, 97, 107, 101, 127, 89, 79, 255, 0, 300, false, null, true), - new PokemonForm("Dusk Mane", "dusk-mane", PokemonType.PSYCHIC, PokemonType.STEEL, 3.8, 460, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 680, 97, 157, 127, 113, 109, 77, 255, 0, 340), - new PokemonForm("Dawn Wings", "dawn-wings", PokemonType.PSYCHIC, PokemonType.GHOST, 4.2, 350, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 680, 97, 113, 109, 157, 127, 77, 255, 0, 340), - new PokemonForm("Ultra", "ultra", PokemonType.PSYCHIC, PokemonType.DRAGON, 7.5, 230, AbilityId.NEUROFORCE, AbilityId.NONE, AbilityId.NONE, 754, 97, 167, 97, 167, 97, 129, 255, 0, 377), + new PokemonSpecies(SpeciesId.NECROZMA, 7, false, true, false, "Prism Pokémon", PokemonType.PSYCHIC, null, 2.4, 230, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 600, 97, 107, 101, 127, 89, 79, 3, 0, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 2.4, 230, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 600, 97, 107, 101, 127, 89, 79, 3, 0, 300, false, null, true), + new PokemonForm("Dusk Mane", "dusk-mane", PokemonType.PSYCHIC, PokemonType.STEEL, 3.8, 460, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 680, 97, 157, 127, 113, 109, 77, 3, 0, 340), + new PokemonForm("Dawn Wings", "dawn-wings", PokemonType.PSYCHIC, PokemonType.GHOST, 4.2, 350, AbilityId.PRISM_ARMOR, AbilityId.NONE, AbilityId.NONE, 680, 97, 113, 109, 157, 127, 77, 3, 0, 340), + new PokemonForm("Ultra", "ultra", PokemonType.PSYCHIC, PokemonType.DRAGON, 7.5, 230, AbilityId.NEUROFORCE, AbilityId.NONE, AbilityId.NONE, 754, 97, 167, 97, 167, 97, 129, 3, 0, 377), ), new PokemonSpecies(SpeciesId.MAGEARNA, 7, false, false, true, "Artificial Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, AbilityId.SOUL_HEART, AbilityId.NONE, AbilityId.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, GrowthRate.SLOW, null, false, false, new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, AbilityId.SOUL_HEART, AbilityId.NONE, AbilityId.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, false, null, true), @@ -2964,15 +2964,15 @@ export function initSpecies() { new PokemonForm("Ice", "ice", PokemonType.PSYCHIC, PokemonType.ICE, 2.4, 809.1, AbilityId.AS_ONE_GLASTRIER, AbilityId.NONE, AbilityId.NONE, 680, 100, 165, 150, 85, 130, 50, 3, 100, 340), new PokemonForm("Shadow", "shadow", PokemonType.PSYCHIC, PokemonType.GHOST, 2.4, 53.6, AbilityId.AS_ONE_SPECTRIER, AbilityId.NONE, AbilityId.NONE, 680, 100, 85, 80, 165, 100, 150, 3, 100, 340), ), - new PokemonSpecies(SpeciesId.WYRDEER, 8, false, false, false, "Big Horn Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.8, 95.1, AbilityId.INTIMIDATE, AbilityId.FRISK, AbilityId.SAP_SIPPER, 525, 103, 105, 72, 105, 75, 65, 135, 50, 263, GrowthRate.SLOW, 50, false), - new PokemonSpecies(SpeciesId.KLEAVOR, 8, false, false, false, "Axe Pokémon", PokemonType.BUG, PokemonType.ROCK, 1.8, 89, AbilityId.SWARM, AbilityId.SHEER_FORCE, AbilityId.SHARPNESS, 500, 70, 135, 95, 45, 70, 85, 115, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.URSALUNA, 8, false, false, false, "Peat Pokémon", PokemonType.GROUND, PokemonType.NORMAL, 2.4, 290, AbilityId.GUTS, AbilityId.BULLETPROOF, AbilityId.UNNERVE, 550, 130, 140, 105, 45, 80, 50, 75, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(SpeciesId.BASCULEGION, 8, false, false, false, "Big Fish Pokémon", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 135, 50, 265, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Male", "male", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 135, 50, 265, false, "", true), - new PokemonForm("Female", "female", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 92, 65, 100, 75, 78, 135, 50, 265, false, null, true), + new PokemonSpecies(SpeciesId.WYRDEER, 8, false, false, false, "Big Horn Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.8, 95.1, AbilityId.INTIMIDATE, AbilityId.FRISK, AbilityId.SAP_SIPPER, 525, 103, 105, 72, 105, 75, 65, 45, 50, 263, GrowthRate.SLOW, 50, false), + new PokemonSpecies(SpeciesId.KLEAVOR, 8, false, false, false, "Axe Pokémon", PokemonType.BUG, PokemonType.ROCK, 1.8, 89, AbilityId.SWARM, AbilityId.SHEER_FORCE, AbilityId.SHARPNESS, 500, 70, 135, 95, 45, 70, 85, 15, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.URSALUNA, 8, false, false, false, "Peat Pokémon", PokemonType.GROUND, PokemonType.NORMAL, 2.4, 290, AbilityId.GUTS, AbilityId.BULLETPROOF, AbilityId.UNNERVE, 550, 130, 140, 105, 45, 80, 50, 20, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.BASCULEGION, 8, false, false, false, "Big Fish Pokémon", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 45, 50, 265, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Male", "male", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 45, 50, 265, false, "", true), + new PokemonForm("Female", "female", PokemonType.WATER, PokemonType.GHOST, 3, 110, AbilityId.SWIFT_SWIM, AbilityId.ADAPTABILITY, AbilityId.MOLD_BREAKER, 530, 120, 92, 65, 100, 75, 78, 45, 50, 265, false, null, true), ), - new PokemonSpecies(SpeciesId.SNEASLER, 8, false, false, false, "Free Climb Pokémon", PokemonType.FIGHTING, PokemonType.POISON, 1.3, 43, AbilityId.PRESSURE, AbilityId.UNBURDEN, AbilityId.POISON_TOUCH, 510, 80, 130, 60, 40, 80, 120, 135, 50, 102, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(SpeciesId.OVERQWIL, 8, false, false, false, "Pin Cluster Pokémon", PokemonType.DARK, PokemonType.POISON, 2.5, 60.5, AbilityId.POISON_POINT, AbilityId.SWIFT_SWIM, AbilityId.INTIMIDATE, 510, 85, 115, 95, 65, 65, 85, 135, 50, 179, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(SpeciesId.SNEASLER, 8, false, false, false, "Free Climb Pokémon", PokemonType.FIGHTING, PokemonType.POISON, 1.3, 43, AbilityId.PRESSURE, AbilityId.UNBURDEN, AbilityId.POISON_TOUCH, 510, 80, 130, 60, 40, 80, 120, 20, 50, 102, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(SpeciesId.OVERQWIL, 8, false, false, false, "Pin Cluster Pokémon", PokemonType.DARK, PokemonType.POISON, 2.5, 60.5, AbilityId.POISON_POINT, AbilityId.SWIFT_SWIM, AbilityId.INTIMIDATE, 510, 85, 115, 95, 65, 65, 85, 45, 50, 179, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(SpeciesId.ENAMORUS, 8, true, false, false, "Love-Hate Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, AbilityId.CUTE_CHARM, AbilityId.NONE, AbilityId.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116, GrowthRate.SLOW, 0, false, true, new PokemonForm("Incarnate Forme", "incarnate", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, AbilityId.CUTE_CHARM, AbilityId.NONE, AbilityId.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116, false, null, true), new PokemonForm("Therian Forme", "therian", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.OVERCOAT, 580, 74, 115, 110, 135, 100, 46, 3, 50, 116), From 93745f14b76309e8d34887b868a6fd561e28f10d Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Sat, 7 Jun 2025 19:59:30 -0500 Subject: [PATCH 63/71] [Refactor] Decouple phase system from battle-scene (#5953) * Move phase logic into its own class * Move ts ignore comment --- src/battle-scene.ts | 353 ++---------------- src/battle.ts | 2 +- src/data/abilities/ability.ts | 122 +++--- src/data/arena-tag.ts | 108 +++--- src/data/battler-tags.ts | 246 ++++++------ src/data/berry.ts | 16 +- src/data/moves/move.ts | 224 +++++------ .../encounters/a-trainers-test-encounter.ts | 2 +- .../encounters/absolute-avarice-encounter.ts | 2 +- .../an-offer-you-cant-refuse-encounter.ts | 2 +- .../encounters/berries-abound-encounter.ts | 2 +- .../encounters/bug-type-superfan-encounter.ts | 2 +- .../encounters/dancing-lessons-encounter.ts | 4 +- .../encounters/dark-deal-encounter.ts | 2 +- .../encounters/delibirdy-encounter.ts | 12 +- .../encounters/fiery-fallout-encounter.ts | 4 +- .../encounters/fight-or-flight-encounter.ts | 4 +- .../encounters/fun-and-games-encounter.ts | 4 +- .../encounters/mysterious-chest-encounter.ts | 4 +- .../encounters/safari-zone-encounter.ts | 8 +- .../slumbering-snorlax-encounter.ts | 2 +- .../teleporting-hijinks-encounter.ts | 4 +- .../the-expert-pokemon-breeder-encounter.ts | 4 +- .../encounters/the-strong-stuff-encounter.ts | 2 +- .../the-winstrate-challenge-encounter.ts | 6 +- .../encounters/uncommon-breed-encounter.ts | 2 +- .../utils/encounter-dialogue-utils.ts | 2 +- .../utils/encounter-phase-utils.ts | 52 +-- .../utils/encounter-pokemon-utils.ts | 2 +- src/field/arena.ts | 24 +- src/field/pokemon.ts | 30 +- src/modifier/modifier.ts | 30 +- src/phase-manager.ts | 311 +++++++++++++++ src/phase.ts | 2 +- src/phases/attempt-capture-phase.ts | 2 +- src/phases/attempt-run-phase.ts | 10 +- src/phases/battle-end-phase.ts | 8 +- src/phases/berry-phase.ts | 4 +- src/phases/check-status-effect-phase.ts | 2 +- src/phases/check-switch-phase.ts | 6 +- src/phases/command-phase.ts | 8 +- src/phases/egg-hatch-phase.ts | 2 +- src/phases/egg-lapse-phase.ts | 8 +- src/phases/encounter-phase.ts | 28 +- src/phases/evolution-phase.ts | 8 +- src/phases/exp-phase.ts | 2 +- src/phases/faint-phase.ts | 16 +- src/phases/form-change-phase.ts | 2 +- src/phases/game-over-phase.ts | 42 ++- src/phases/learn-move-phase.ts | 4 +- src/phases/level-up-phase.ts | 4 +- src/phases/login-phase.ts | 6 +- src/phases/message-phase.ts | 2 +- src/phases/move-charge-phase.ts | 4 +- src/phases/move-effect-phase.ts | 18 +- src/phases/move-phase.ts | 22 +- src/phases/mystery-encounter-phases.ts | 50 +-- src/phases/new-battle-phase.ts | 6 +- src/phases/obtain-status-effect-phase.ts | 4 +- src/phases/pokemon-heal-phase.ts | 8 +- src/phases/pokemon-transform-phase.ts | 2 +- src/phases/post-game-over-phase.ts | 2 +- src/phases/post-turn-status-effect-phase.ts | 2 +- src/phases/quiet-form-change-phase.ts | 6 +- src/phases/revival-blessing-phase.ts | 10 +- src/phases/select-biome-phase.ts | 4 +- src/phases/select-modifier-phase.ts | 4 +- src/phases/select-starter-phase.ts | 4 +- src/phases/select-target-phase.ts | 4 +- src/phases/show-ability-phase.ts | 4 +- src/phases/show-party-exp-bar-phase.ts | 4 +- src/phases/stat-stage-change-phase.ts | 14 +- src/phases/summon-phase.ts | 8 +- src/phases/switch-phase.ts | 8 +- src/phases/switch-summon-phase.ts | 2 +- src/phases/tera-phase.ts | 2 +- src/phases/title-phase.ts | 22 +- src/phases/trainer-victory-phase.ts | 10 +- src/phases/turn-end-phase.ts | 4 +- src/phases/turn-init-phase.ts | 18 +- src/phases/turn-start-phase.ts | 28 +- src/phases/unavailable-phase.ts | 2 +- src/phases/victory-phase.ts | 34 +- src/phases/weather-effect-phase.ts | 2 +- src/system/game-data.ts | 24 +- src/ui/ball-ui-handler.ts | 2 +- src/ui/challenges-select-ui-handler.ts | 10 +- src/ui/command-ui-handler.ts | 18 +- src/ui/egg-hatch-scene-handler.ts | 2 +- src/ui/egg-summary-ui-handler.ts | 2 +- src/ui/fight-ui-handler.ts | 12 +- src/ui/menu-ui-handler.ts | 2 +- src/ui/mystery-encounter-ui-handler.ts | 4 +- src/ui/party-ui-handler.ts | 6 +- src/ui/pokedex-page-ui-handler.ts | 2 +- src/ui/starter-select-ui-handler.ts | 10 +- test/abilities/cud_chew.test.ts | 4 +- test/abilities/dancer.test.ts | 8 +- test/abilities/desolate-land.test.ts | 2 +- test/abilities/disguise.test.ts | 2 +- test/abilities/honey_gather.test.ts | 2 +- test/abilities/imposter.test.ts | 4 +- test/abilities/mycelium_might.test.ts | 6 +- test/abilities/neutralizing_gas.test.ts | 2 +- test/abilities/no_guard.test.ts | 2 +- test/abilities/shield_dust.test.ts | 2 +- test/abilities/speed_boost.test.ts | 4 +- test/abilities/stall.test.ts | 6 +- test/battle/battle-order.test.ts | 10 +- test/battle/battle.test.ts | 12 +- test/battle/special_battle.test.ts | 18 +- test/battlerTags/octolock.test.ts | 4 +- test/battlerTags/stockpiling.test.ts | 32 +- test/battlerTags/substitute.test.ts | 31 +- test/escape-calculations.test.ts | 16 +- test/items/lock_capsule.test.ts | 4 +- test/moves/after_you.test.ts | 2 +- test/moves/dynamax_cannon.test.ts | 16 +- test/moves/focus_punch.test.ts | 4 +- test/moves/fusion_flare_bolt.test.ts | 36 +- test/moves/instruct.test.ts | 4 +- test/moves/round.test.ts | 4 +- test/moves/shell_trap.test.ts | 8 +- test/moves/substitute.test.ts | 2 +- test/moves/transform.test.ts | 4 +- test/moves/whirlwind.test.ts | 2 +- .../mystery-encounter/encounter-test-utils.ts | 12 +- .../a-trainers-test-encounter.test.ts | 8 +- .../absolute-avarice-encounter.test.ts | 6 +- .../berries-abound-encounter.test.ts | 12 +- .../bug-type-superfan-encounter.test.ts | 36 +- .../clowning-around-encounter.test.ts | 8 +- .../dancing-lessons-encounter.test.ts | 12 +- .../encounters/delibirdy-encounter.test.ts | 12 +- .../department-store-sale-encounter.test.ts | 8 +- .../fiery-fallout-encounter.test.ts | 12 +- .../fight-or-flight-encounter.test.ts | 10 +- .../fun-and-games-encounter.test.ts | 38 +- .../global-trade-system-encounter.test.ts | 2 +- .../encounters/lost-at-sea-encounter.test.ts | 8 +- .../mysterious-challengers-encounter.test.ts | 12 +- .../encounters/part-timer-encounter.test.ts | 4 +- .../encounters/safari-zone.test.ts | 4 +- .../teleporting-hijinks-encounter.test.ts | 14 +- .../the-expert-breeder-encounter.test.ts | 12 +- .../the-pokemon-salesman-encounter.test.ts | 4 +- .../the-strong-stuff-encounter.test.ts | 6 +- .../the-winstrate-challenge-encounter.test.ts | 14 +- .../trash-to-treasure-encounter.test.ts | 8 +- .../uncommon-breed-encounter.test.ts | 20 +- .../encounters/weird-dream-encounter.test.ts | 8 +- .../mystery-encounter-utils.test.ts | 4 +- .../mystery-encounter.test.ts | 2 +- test/phases/mystery-encounter-phase.test.ts | 6 +- test/phases/phases.test.ts | 6 +- test/phases/select-modifier-phase.test.ts | 12 +- test/testUtils/gameManager.ts | 22 +- test/testUtils/helpers/challengeModeHelper.ts | 2 +- test/testUtils/helpers/classicModeHelper.ts | 2 +- test/testUtils/helpers/moveHelper.ts | 27 +- test/testUtils/helpers/reloadHelper.ts | 4 +- test/testUtils/phaseInterceptor.ts | 12 +- test/ui/starter-select.test.ts | 18 +- 163 files changed, 1465 insertions(+), 1361 deletions(-) create mode 100644 src/phase-manager.ts diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 762e11ec9f5..23601910e4d 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -144,7 +144,6 @@ import { battleSpecDialogue } from "#app/data/dialogue"; import { LoadingScene } from "#app/loading-scene"; import { LevelCapPhase } from "#app/phases/level-cap-phase"; import { LoginPhase } from "#app/phases/login-phase"; -import { MessagePhase } from "#app/phases/message-phase"; import type { MovePhase } from "#app/phases/move-phase"; import { NewBiomeEncounterPhase } from "#app/phases/new-biome-encounter-phase"; import { NextEncounterPhase } from "#app/phases/next-encounter-phase"; @@ -155,7 +154,6 @@ import { ShowTrainerPhase } from "#app/phases/show-trainer-phase"; import { SummonPhase } from "#app/phases/summon-phase"; import { TitlePhase } from "#app/phases/title-phase"; import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; import { ShopCursorTarget } from "#app/enums/shop-cursor-target"; import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { @@ -178,13 +176,12 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#app/data/balance/starters"; import { StatusEffect } from "#enums/status-effect"; import { initGlobalScene } from "#app/global-scene"; -import { ShowAbilityPhase } from "#app/phases/show-ability-phase"; -import { HideAbilityPhase } from "#app/phases/hide-ability-phase"; import { expSpriteKeys } from "./sprites/sprite-keys"; import { hasExpSprite } from "./sprites/sprite-utils"; import { timedEventManager } from "./global-event-manager"; import { starterColors } from "./global-vars/starter-colors"; import { startingWave } from "./starting-wave"; +import { PhaseManager } from "./phase-manager"; const DEBUG_RNG = false; @@ -297,18 +294,8 @@ export default class BattleScene extends SceneBase { public gameData: GameData; public sessionSlotId: number; - /** PhaseQueue: dequeue/remove the first element to get the next phase */ - public phaseQueue: Phase[]; - public conditionalQueue: Array<[() => boolean, Phase]>; - /** PhaseQueuePrepend: is a temp storage of what will be added to PhaseQueue */ - private phaseQueuePrepend: Phase[]; - - /** overrides default of inserting phases to end of phaseQueuePrepend array, useful or inserting Phases "out of order" */ - private phaseQueuePrependSpliceIndex: number; - private nextCommandPhaseQueue: Phase[]; - - private currentPhase: Phase | null; - private standbyPhase: Phase | null; + /** Manager for the phases active in the battle scene */ + public readonly phaseManager: PhaseManager; public field: Phaser.GameObjects.Container; public fieldUI: Phaser.GameObjects.Container; public charSprite: CharSprite; @@ -396,11 +383,7 @@ export default class BattleScene extends SceneBase { constructor() { super("battle"); - this.phaseQueue = []; - this.phaseQueuePrepend = []; - this.conditionalQueue = []; - this.phaseQueuePrependSpliceIndex = -1; - this.nextCommandPhaseQueue = []; + this.phaseManager = new PhaseManager(); this.eventManager = new TimedEventManager(); this.updateGameInfo(); initGlobalScene(this); @@ -716,10 +699,10 @@ export default class BattleScene extends SceneBase { ).then(() => loadMoveAnimAssets(defaultMoves, true)), this.initStarterColors(), ]).then(() => { - this.pushPhase(new LoginPhase()); - this.pushPhase(new TitlePhase()); + this.phaseManager.pushPhase(new LoginPhase()); + this.phaseManager.pushPhase(new TitlePhase()); - this.shiftPhase(); + this.phaseManager.shiftPhase(); }); } @@ -899,7 +882,7 @@ export default class BattleScene extends SceneBase { if (allyPokemon?.isActive(true)) { let targetingMovePhase: MovePhase; do { - targetingMovePhase = this.findPhase( + targetingMovePhase = this.phaseManager.findPhase( mp => mp.is("MovePhase") && mp.targets.length === 1 && @@ -1277,7 +1260,7 @@ export default class BattleScene extends SceneBase { duration: 250, ease: "Sine.easeInOut", onComplete: () => { - this.clearPhaseQueue(); + this.phaseManager.clearPhaseQueue(); this.ui.freeUIData(); this.uiContainer.remove(this.ui, true); @@ -1450,7 +1433,7 @@ export default class BattleScene extends SceneBase { } if (lastBattle?.double && !newDouble) { - this.tryRemovePhase((p: Phase) => p.is("SwitchPhase")); + this.phaseManager.tryRemovePhase((p: Phase) => p.is("SwitchPhase")); for (const p of this.getPlayerField()) { p.lapseTag(BattlerTagType.COMMANDED); } @@ -1492,7 +1475,7 @@ export default class BattleScene extends SceneBase { playerField.forEach((pokemon, p) => { if (pokemon.isOnField()) { - this.pushPhase(new ReturnPhase(p)); + this.phaseManager.pushPhase(new ReturnPhase(p)); } }); @@ -1509,7 +1492,7 @@ export default class BattleScene extends SceneBase { } if (!this.trainer.visible) { - this.pushPhase(new ShowTrainerPhase()); + this.phaseManager.pushPhase(new ShowTrainerPhase()); } } @@ -1518,13 +1501,13 @@ export default class BattleScene extends SceneBase { } if (!this.gameMode.hasRandomBiomes && !isNewBiome) { - this.pushPhase(new NextEncounterPhase()); + this.phaseManager.pushPhase(new NextEncounterPhase()); } else { - this.pushPhase(new NewBiomeEncounterPhase()); + this.phaseManager.pushPhase(new NewBiomeEncounterPhase()); const newMaxExpLevel = this.getMaxExpLevel(); if (newMaxExpLevel > maxExpLevel) { - this.pushPhase(new LevelCapPhase()); + this.phaseManager.pushPhase(new LevelCapPhase()); } } } @@ -1588,7 +1571,9 @@ export default class BattleScene extends SceneBase { return 0; } - const isEggPhase: boolean = ["EggLapsePhase", "EggHatchPhase"].includes(this.getCurrentPhase()?.phaseName ?? ""); + const isEggPhase: boolean = ["EggLapsePhase", "EggHatchPhase"].includes( + this.phaseManager.getCurrentPhase()?.phaseName ?? "", + ); if ( // Give trainers with specialty types an appropriately-typed form for Wormadam, Rotom, Arceus, Oricorio, Silvally, or Paldean Tauros. @@ -2615,286 +2600,6 @@ export default class BattleScene extends SceneBase { } } - /* Phase Functions */ - getCurrentPhase(): Phase | null { - return this.currentPhase; - } - - getStandbyPhase(): Phase | null { - return this.standbyPhase; - } - - /** - * Adds a phase to the conditional queue and ensures it is executed only when the specified condition is met. - * - * This method allows deferring the execution of a phase until certain conditions are met, which is useful for handling - * situations like abilities and entry hazards that depend on specific game states. - * - * @param {Phase} phase - The phase to be added to the conditional queue. - * @param {() => boolean} condition - A function that returns a boolean indicating whether the phase should be executed. - * - */ - pushConditionalPhase(phase: Phase, condition: () => boolean): void { - this.conditionalQueue.push([condition, phase]); - } - - /** - * Adds a phase to nextCommandPhaseQueue, as long as boolean passed in is false - * @param phase {@linkcode Phase} the phase to add - * @param defer boolean on which queue to add to, defaults to false, and adds to phaseQueue - */ - pushPhase(phase: Phase, defer = false): void { - (!defer ? this.phaseQueue : this.nextCommandPhaseQueue).push(phase); - } - - /** - * Adds Phase(s) to the end of phaseQueuePrepend, or at phaseQueuePrependSpliceIndex - * @param phases {@linkcode Phase} the phase(s) to add - */ - unshiftPhase(...phases: Phase[]): void { - if (this.phaseQueuePrependSpliceIndex === -1) { - this.phaseQueuePrepend.push(...phases); - } else { - this.phaseQueuePrepend.splice(this.phaseQueuePrependSpliceIndex, 0, ...phases); - } - } - - /** - * Clears the phaseQueue - */ - clearPhaseQueue(): void { - this.phaseQueue.splice(0, this.phaseQueue.length); - } - - /** - * Clears all phase-related stuff, including all phase queues, the current and standby phases, and a splice index - */ - clearAllPhases(): void { - for (const queue of [this.phaseQueue, this.phaseQueuePrepend, this.conditionalQueue, this.nextCommandPhaseQueue]) { - queue.splice(0, queue.length); - } - this.currentPhase = null; - this.standbyPhase = null; - this.clearPhaseQueueSplice(); - } - - /** - * Used by function unshiftPhase(), sets index to start inserting at current length instead of the end of the array, useful if phaseQueuePrepend gets longer with Phases - */ - setPhaseQueueSplice(): void { - this.phaseQueuePrependSpliceIndex = this.phaseQueuePrepend.length; - } - - /** - * Resets phaseQueuePrependSpliceIndex to -1, implies that calls to unshiftPhase will insert at end of phaseQueuePrepend - */ - clearPhaseQueueSplice(): void { - this.phaseQueuePrependSpliceIndex = -1; - } - - /** - * Is called by each Phase implementations "end()" by default - * We dump everything from phaseQueuePrepend to the start of of phaseQueue - * then removes first Phase and starts it - */ - shiftPhase(): void { - if (this.standbyPhase) { - this.currentPhase = this.standbyPhase; - this.standbyPhase = null; - return; - } - - if (this.phaseQueuePrependSpliceIndex > -1) { - this.clearPhaseQueueSplice(); - } - if (this.phaseQueuePrepend.length) { - while (this.phaseQueuePrepend.length) { - const poppedPhase = this.phaseQueuePrepend.pop(); - if (poppedPhase) { - this.phaseQueue.unshift(poppedPhase); - } - } - } - if (!this.phaseQueue.length) { - this.populatePhaseQueue(); - // Clear the conditionalQueue if there are no phases left in the phaseQueue - this.conditionalQueue = []; - } - - this.currentPhase = this.phaseQueue.shift() ?? null; - - // Check if there are any conditional phases queued - if (this.conditionalQueue?.length) { - // Retrieve the first conditional phase from the queue - const conditionalPhase = this.conditionalQueue.shift(); - // Evaluate the condition associated with the phase - if (conditionalPhase?.[0]()) { - // If the condition is met, add the phase to the phase queue - this.pushPhase(conditionalPhase[1]); - } else if (conditionalPhase) { - // If the condition is not met, re-add the phase back to the front of the conditional queue - this.conditionalQueue.unshift(conditionalPhase); - } else { - console.warn("condition phase is undefined/null!", conditionalPhase); - } - } - - if (this.currentPhase) { - console.log(`%cStart Phase ${this.currentPhase.constructor.name}`, "color:green;"); - this.currentPhase.start(); - } - } - - overridePhase(phase: Phase): boolean { - if (this.standbyPhase) { - return false; - } - - this.standbyPhase = this.currentPhase; - this.currentPhase = phase; - console.log(`%cStart Phase ${phase.constructor.name}`, "color:green;"); - phase.start(); - - return true; - } - - /** - * Find a specific {@linkcode Phase} in the phase queue. - * - * @param phaseFilter filter function to use to find the wanted phase - * @returns the found phase or undefined if none found - */ - findPhase

(phaseFilter: (phase: P) => boolean): P | undefined { - return this.phaseQueue.find(phaseFilter) as P; - } - - tryReplacePhase(phaseFilter: (phase: Phase) => boolean, phase: Phase): boolean { - const phaseIndex = this.phaseQueue.findIndex(phaseFilter); - if (phaseIndex > -1) { - this.phaseQueue[phaseIndex] = phase; - return true; - } - return false; - } - - tryRemovePhase(phaseFilter: (phase: Phase) => boolean): boolean { - const phaseIndex = this.phaseQueue.findIndex(phaseFilter); - if (phaseIndex > -1) { - this.phaseQueue.splice(phaseIndex, 1); - return true; - } - return false; - } - - /** - * Will search for a specific phase in {@linkcode phaseQueuePrepend} via filter, and remove the first result if a match is found. - * @param phaseFilter filter function - */ - tryRemoveUnshiftedPhase(phaseFilter: (phase: Phase) => boolean): boolean { - const phaseIndex = this.phaseQueuePrepend.findIndex(phaseFilter); - if (phaseIndex > -1) { - this.phaseQueuePrepend.splice(phaseIndex, 1); - return true; - } - return false; - } - - /** - * Tries to add the input phase to index before target phase in the phaseQueue, else simply calls unshiftPhase() - * @param phase {@linkcode Phase} the phase to be added - * @param targetPhase {@linkcode Phase} the type of phase to search for in phaseQueue - * @returns boolean if a targetPhase was found and added - */ - prependToPhase(phase: Phase | Phase[], targetPhase: Constructor): boolean { - if (!Array.isArray(phase)) { - phase = [phase]; - } - const targetIndex = this.phaseQueue.findIndex(ph => ph instanceof targetPhase); - - if (targetIndex !== -1) { - this.phaseQueue.splice(targetIndex, 0, ...phase); - return true; - } - this.unshiftPhase(...phase); - return false; - } - - /** - * Tries to add the input phase(s) to index after target phase in the {@linkcode phaseQueue}, else simply calls {@linkcode unshiftPhase()} - * @param phase {@linkcode Phase} the phase(s) to be added - * @param targetPhase {@linkcode Phase} the type of phase to search for in {@linkcode phaseQueue} - * @returns `true` if a `targetPhase` was found to append to - */ - appendToPhase(phase: Phase | Phase[], targetPhase: Constructor): boolean { - if (!Array.isArray(phase)) { - phase = [phase]; - } - const targetIndex = this.phaseQueue.findIndex(ph => ph instanceof targetPhase); - - if (targetIndex !== -1 && this.phaseQueue.length > targetIndex) { - this.phaseQueue.splice(targetIndex + 1, 0, ...phase); - return true; - } - this.unshiftPhase(...phase); - return false; - } - - /** - * Adds a MessagePhase, either to PhaseQueuePrepend or nextCommandPhaseQueue - * @param message string for MessagePhase - * @param callbackDelay optional param for MessagePhase constructor - * @param prompt optional param for MessagePhase constructor - * @param promptDelay optional param for MessagePhase constructor - * @param defer boolean for which queue to add it to, false -> add to PhaseQueuePrepend, true -> nextCommandPhaseQueue - */ - queueMessage( - message: string, - callbackDelay?: number | null, - prompt?: boolean | null, - promptDelay?: number | null, - defer?: boolean | null, - ) { - const phase = new MessagePhase(message, callbackDelay, prompt, promptDelay); - if (!defer) { - // adds to the end of PhaseQueuePrepend - this.unshiftPhase(phase); - } else { - //remember that pushPhase adds it to nextCommandPhaseQueue - this.pushPhase(phase); - } - } - - /** - * Queues an ability bar flyout phase - * @param pokemon The pokemon who has the ability - * @param passive Whether the ability is a passive - * @param show Whether to show or hide the bar - */ - public queueAbilityDisplay(pokemon: Pokemon, passive: boolean, show: boolean): void { - this.unshiftPhase(show ? new ShowAbilityPhase(pokemon.getBattlerIndex(), passive) : new HideAbilityPhase()); - this.clearPhaseQueueSplice(); - } - - /** - * Hides the ability bar if it is currently visible - */ - public hideAbilityBar(): void { - if (this.abilityBar.isVisible()) { - this.unshiftPhase(new HideAbilityPhase()); - } - } - - /** - * Moves everything from nextCommandPhaseQueue to phaseQueue (keeping order) - */ - populatePhaseQueue(): void { - if (this.nextCommandPhaseQueue.length) { - this.phaseQueue.push(...this.nextCommandPhaseQueue); - this.nextCommandPhaseQueue.splice(0, this.nextCommandPhaseQueue.length); - } - this.phaseQueue.push(new TurnInitPhase()); - } - addMoney(amount: number): void { this.money = Math.min(this.money + amount, Number.MAX_SAFE_INTEGER); this.updateMoneyText(); @@ -2942,7 +2647,7 @@ export default class BattleScene extends SceneBase { } } else if (!virtual) { const defaultModifierType = getDefaultModifierTypeForTier(modifier.type.tier); - this.queueMessage( + this.phaseManager.queueMessage( i18next.t("battle:itemStackFull", { fullItemName: modifier.type.name, itemName: defaultModifierType.name, @@ -3499,11 +3204,11 @@ export default class BattleScene extends SceneBase { phase = new QuietFormChangePhase(pokemon, matchingFormChange); } if (pokemon.isPlayer() && !matchingFormChange.quiet && modal) { - this.overridePhase(phase); + this.phaseManager.overridePhase(phase); } else if (delayed) { - this.pushPhase(phase); + this.phaseManager.pushPhase(phase); } else { - this.unshiftPhase(phase); + this.phaseManager.unshiftPhase(phase); } return true; } @@ -3520,9 +3225,9 @@ export default class BattleScene extends SceneBase { ): boolean { const phase: Phase = new PokemonAnimPhase(battleAnimType, pokemon, fieldAssets); if (delayed) { - this.pushPhase(phase); + this.phaseManager.pushPhase(phase); } else { - this.unshiftPhase(phase); + this.phaseManager.unshiftPhase(phase); } return true; } @@ -3630,19 +3335,19 @@ export default class BattleScene extends SceneBase { this.currentBattle.double = true; const availablePartyMembers = this.getPlayerParty().filter(p => p.isAllowedInBattle()); if (availablePartyMembers.length > 1) { - this.pushPhase(new ToggleDoublePositionPhase(true)); + this.phaseManager.pushPhase(new ToggleDoublePositionPhase(true)); if (!availablePartyMembers[1].isOnField()) { - this.pushPhase(new SummonPhase(1)); + this.phaseManager.pushPhase(new SummonPhase(1)); } } - this.shiftPhase(); + this.phaseManager.shiftPhase(); }, ); return; } - this.shiftPhase(); + this.phaseManager.shiftPhase(); } /** @@ -3754,7 +3459,7 @@ export default class BattleScene extends SceneBase { if (exp) { const partyMemberIndex = party.indexOf(expPartyMembers[pm]); - this.unshiftPhase( + this.phaseManager.unshiftPhase( expPartyMembers[pm].isOnField() ? new ExpPhase(partyMemberIndex, exp) : new ShowPartyExpBarPhase(partyMemberIndex, exp), diff --git a/src/battle.ts b/src/battle.ts index 8e63a680c06..dbfed57ae41 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -205,7 +205,7 @@ export default class Battle { const message = i18next.t("battle:moneyPickedUp", { moneyAmount: formattedMoneyAmount, }); - globalScene.queueMessage(message, undefined, true); + globalScene.phaseManager.queueMessage(message, undefined, true); globalScene.currentBattle.moneyScattered = 0; } diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index 4d307b2ce6f..e680a12f9fe 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -159,7 +159,7 @@ export class PostTeraFormChangeStatChangeAbAttr extends AbAttr { statStageChangePhases.push(new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages)); for (const statStageChangePhase of statStageChangePhases) { - globalScene.unshiftPhase(statStageChangePhase); + globalScene.phaseManager.unshiftPhase(statStageChangePhase); } } } @@ -410,7 +410,7 @@ export class TypeImmunityHealAbAttr extends TypeImmunityAbAttr { super.applyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); if (!pokemon.isFullHp() && !simulated) { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - globalScene.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), + globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() / 4), i18next.t("abilityTriggers:typeImmunityHeal", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }), true)); cancelled.value = true; // Suppresses "No Effect" message } @@ -436,7 +436,7 @@ class TypeImmunityStatStageChangeAbAttr extends TypeImmunityAbAttr { super.applyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); cancelled.value = true; // Suppresses "No Effect" message if (!simulated) { - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); } } } @@ -648,7 +648,7 @@ export class MoveImmunityStatStageChangeAbAttr extends MoveImmunityAbAttr { override applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder, args: any[]): void { super.applyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); } } /** @@ -675,7 +675,7 @@ export class ReverseDrainAbAttr extends PostDefendAbAttr { */ override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { if (!simulated) { - globalScene.queueMessage(i18next.t("abilityTriggers:reverseDrain", { pokemonNameWithAffix: getPokemonNameWithAffix(attacker) })); + globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:reverseDrain", { pokemonNameWithAffix: getPokemonNameWithAffix(attacker) })); } } } @@ -710,10 +710,10 @@ export class PostDefendStatStageChangeAbAttr extends PostDefendAbAttr { const ally = pokemon.getAlly(); const otherPokemon = !isNullOrUndefined(ally) ? pokemon.getOpponents().concat([ ally ]) : pokemon.getOpponents(); for (const other of otherPokemon) { - globalScene.unshiftPhase(new StatStageChangePhase((other).getBattlerIndex(), false, [ this.stat ], this.stages)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase((other).getBattlerIndex(), false, [ this.stat ], this.stages)); } } else { - globalScene.unshiftPhase(new StatStageChangePhase((this.selfTarget ? pokemon : attacker).getBattlerIndex(), this.selfTarget, [ this.stat ], this.stages)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase((this.selfTarget ? pokemon : attacker).getBattlerIndex(), this.selfTarget, [ this.stat ], this.stages)); } } } @@ -744,7 +744,7 @@ export class PostDefendHpGatedStatStageChangeAbAttr extends PostDefendAbAttr { override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { if (!simulated) { - globalScene.unshiftPhase(new StatStageChangePhase((this.selfTarget ? pokemon : attacker).getBattlerIndex(), true, this.stats, this.stages)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase((this.selfTarget ? pokemon : attacker).getBattlerIndex(), true, this.stats, this.stages)); } } } @@ -790,7 +790,7 @@ export class PostDefendApplyBattlerTagAbAttr extends PostDefendAbAttr { override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { if (!pokemon.getTag(this.tagType) && !simulated) { pokemon.addTag(this.tagType, undefined, undefined, pokemon.id); - globalScene.queueMessage(i18next.t("abilityTriggers:windPowerCharged", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: move.name })); + globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:windPowerCharged", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: move.name })); } } } @@ -915,7 +915,7 @@ export class PostDefendCritStatStageChangeAbAttr extends PostDefendAbAttr { override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { if (!simulated) { - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); } } @@ -1099,7 +1099,7 @@ export class PostStatStageChangeStatStageChangeAbAttr extends PostStatStageChang override applyPostStatStageChange(pokemon: Pokemon, simulated: boolean, statStagesChanged: BattleStat[], stagesChanged: number, selfTarget: boolean, args: any[]): void { if (!simulated) { - globalScene.unshiftPhase(new StatStageChangePhase((pokemon).getBattlerIndex(), true, this.statsToChange, this.stages)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase((pokemon).getBattlerIndex(), true, this.statsToChange, this.stages)); } } } @@ -1765,7 +1765,7 @@ export class PostAttackStealHeldItemAbAttr extends PostAttackAbAttr { this.stolenItem = heldItems[pokemon.randBattleSeedInt(heldItems.length)]; } if (globalScene.tryTransferHeldItemModifier(this.stolenItem, pokemon, false)) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("abilityTriggers:postAttackStealHeldItem", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), defenderName: defender.name, @@ -1892,7 +1892,7 @@ export class PostDefendStealHeldItemAbAttr extends PostDefendAbAttr { this.stolenItem = heldItems[pokemon.randBattleSeedInt(heldItems.length)]; } if (globalScene.tryTransferHeldItemModifier(this.stolenItem, pokemon, false)) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("abilityTriggers:postDefendStealHeldItem", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), attackerName: attacker.name, @@ -1999,7 +1999,7 @@ class PostVictoryStatStageChangeAbAttr extends PostVictoryAbAttr { override applyPostVictory(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { const stat = typeof this.stat === "function" ? this.stat(pokemon) : this.stat; if (!simulated) { - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ stat ], this.stages)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ stat ], this.stages)); } } } @@ -2047,7 +2047,7 @@ export class PostKnockOutStatStageChangeAbAttr extends PostKnockOutAbAttr { override applyPostKnockOut(pokemon: Pokemon, passive: boolean, simulated: boolean, knockedOut: Pokemon, args: any[]): void { const stat = typeof this.stat === "function" ? this.stat(pokemon) : this.stat; if (!simulated) { - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ stat ], this.stages)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ stat ], this.stages)); } } } @@ -2064,7 +2064,7 @@ export class CopyFaintedAllyAbilityAbAttr extends PostKnockOutAbAttr { override applyPostKnockOut(pokemon: Pokemon, passive: boolean, simulated: boolean, knockedOut: Pokemon, args: any[]): void { if (!simulated) { pokemon.setTempAbility(knockedOut.getAbility()); - globalScene.queueMessage(i18next.t("abilityTriggers:copyFaintedAllyAbility", { pokemonNameWithAffix: getPokemonNameWithAffix(knockedOut), abilityName: allAbilities[knockedOut.getAbility().id].name })); + globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:copyFaintedAllyAbility", { pokemonNameWithAffix: getPokemonNameWithAffix(knockedOut), abilityName: allAbilities[knockedOut.getAbility().id].name })); } } } @@ -2130,7 +2130,7 @@ export class PostIntimidateStatStageChangeAbAttr extends AbAttr { override apply(pokemon: Pokemon, passive: boolean, simulated:boolean, cancelled: BooleanHolder, args: any[]): void { if (!simulated) { - globalScene.pushPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), false, this.stats, this.stages)); + globalScene.phaseManager.pushPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), false, this.stats, this.stages)); } cancelled.value = this.overwrites; } @@ -2240,7 +2240,7 @@ export class PostSummonMessageAbAttr extends PostSummonAbAttr { override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { if (!simulated) { - globalScene.queueMessage(this.messageFunc(pokemon)); + globalScene.phaseManager.queueMessage(this.messageFunc(pokemon)); } } } @@ -2257,7 +2257,7 @@ export class PostSummonUnnamedMessageAbAttr extends PostSummonAbAttr { override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { if (!simulated) { - globalScene.queueMessage(this.message); + globalScene.phaseManager.queueMessage(this.message); } } } @@ -2332,7 +2332,7 @@ export class PostSummonStatStageChangeAbAttr extends PostSummonAbAttr { if (this.selfTarget) { // we unshift the StatStageChangePhase to put it right after the showAbility and not at the end of the // phase list (which could be after CommandPhase for example) - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages)); } else { for (const opponent of pokemon.getOpponents()) { const cancelled = new BooleanHolder(false); @@ -2345,7 +2345,7 @@ export class PostSummonStatStageChangeAbAttr extends PostSummonAbAttr { } } if (!cancelled.value) { - globalScene.unshiftPhase(new StatStageChangePhase(opponent.getBattlerIndex(), false, this.stats, this.stages)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(opponent.getBattlerIndex(), false, this.stats, this.stages)); } } } @@ -2370,7 +2370,7 @@ export class PostSummonAllyHealAbAttr extends PostSummonAbAttr { override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { const target = pokemon.getAlly(); if (!simulated && !isNullOrUndefined(target)) { - globalScene.unshiftPhase(new PokemonHealPhase(target.getBattlerIndex(), + globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(target.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() / this.healRatio), i18next.t("abilityTriggers:postSummonAllyHeal", { pokemonNameWithAffix: getPokemonNameWithAffix(target), pokemonName: pokemon.name }), true, !this.showAnim)); } } @@ -2400,7 +2400,7 @@ export class PostSummonClearAllyStatStagesAbAttr extends PostSummonAbAttr { target.setStatStage(s, 0); } - globalScene.queueMessage(i18next.t("abilityTriggers:postSummonClearAllyStats", { pokemonNameWithAffix: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:postSummonClearAllyStats", { pokemonNameWithAffix: getPokemonNameWithAffix(target) })); } } } @@ -2448,7 +2448,7 @@ export class DownloadAbAttr extends PostSummonAbAttr { } if (!simulated) { - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), false, this.stats, 1)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), false, this.stats, 1)); } } } @@ -2635,7 +2635,7 @@ export class PostSummonUserFieldRemoveStatusEffectAbAttr extends PostSummonAbAtt if (!simulated) { for (const pokemon of allowedParty) { if (pokemon.status && this.statusEffect.includes(pokemon.status.effect)) { - globalScene.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); + globalScene.phaseManager.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); pokemon.resetStatus(false); pokemon.updateInfo(); } @@ -2725,7 +2725,7 @@ export class PostSummonTransformAbAttr extends PostSummonAbAttr { override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { const target = this.getTarget(pokemon.getOpponents()); - globalScene.unshiftPhase(new PokemonTransformPhase(pokemon.getBattlerIndex(), target.getBattlerIndex(), true)); + globalScene.phaseManager.unshiftPhase(new PokemonTransformPhase(pokemon.getBattlerIndex(), target.getBattlerIndex(), true)); } } @@ -2820,7 +2820,7 @@ export class CommanderAbAttr extends AbAttr { // Apply boosts from this effect to the ally Dondozo pokemon.getAlly()?.addTag(BattlerTagType.COMMANDED, 0, MoveId.NONE, pokemon.id); // Cancel the source Pokemon's next move (if a move is queued) - globalScene.tryRemovePhase((phase) => phase.is("MovePhase") && phase.pokemon === pokemon); + globalScene.phaseManager.tryRemovePhase((phase) => phase.is("MovePhase") && phase.pokemon === pokemon); } } } @@ -3076,7 +3076,7 @@ export class ReflectStatStageChangeAbAttr extends PreStatStageChangeAbAttr { const stages = args[1]; this.reflectedStat = stat; if (!simulated) { - globalScene.unshiftPhase(new StatStageChangePhase(attacker.getBattlerIndex(), false, [ stat ], stages, true, false, true, null, true)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(attacker.getBattlerIndex(), false, [ stat ], stages, true, false, true, null, true)); } cancelled.value = true; } @@ -3768,7 +3768,7 @@ export class ForewarnAbAttr extends PostSummonAbAttr { } } if (!simulated) { - globalScene.queueMessage(i18next.t("abilityTriggers:forewarn", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: maxMove })); + globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:forewarn", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: maxMove })); } } } @@ -3781,7 +3781,7 @@ export class FriskAbAttr extends PostSummonAbAttr { override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { if (!simulated) { for (const opponent of pokemon.getOpponents()) { - globalScene.queueMessage(i18next.t("abilityTriggers:frisk", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), opponentName: opponent.name, opponentAbilityName: opponent.getAbility().name })); + globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:frisk", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), opponentName: opponent.name, opponentAbilityName: opponent.getAbility().name })); setAbilityRevealed(opponent); } } @@ -3913,7 +3913,7 @@ export class PostWeatherLapseHealAbAttr extends PostWeatherLapseAbAttr { override applyPostWeatherLapse(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: Weather, args: any[]): void { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; if (!simulated) { - globalScene.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), + globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() / (16 / this.healFactor)), i18next.t("abilityTriggers:postWeatherLapseHeal", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }), true)); } } @@ -3935,7 +3935,7 @@ export class PostWeatherLapseDamageAbAttr extends PostWeatherLapseAbAttr { override applyPostWeatherLapse(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: Weather, args: any[]): void { if (!simulated) { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - globalScene.queueMessage(i18next.t("abilityTriggers:postWeatherLapseDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName })); + globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:postWeatherLapseDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName })); pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / (16 / this.damageFactor)), { result: HitResult.INDIRECT }); } } @@ -4015,7 +4015,7 @@ export class PostTurnStatusHealAbAttr extends PostTurnAbAttr { override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { if (!simulated) { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - globalScene.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), + globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() / 8), i18next.t("abilityTriggers:poisonHeal", { pokemonName: getPokemonNameWithAffix(pokemon), abilityName }), true)); } } @@ -4047,7 +4047,7 @@ export class PostTurnResetStatusAbAttr extends PostTurnAbAttr { override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { if (!simulated && this.target?.status) { - globalScene.queueMessage(getStatusEffectHealText(this.target.status?.effect, getPokemonNameWithAffix(this.target))); + globalScene.phaseManager.queueMessage(getStatusEffectHealText(this.target.status?.effect, getPokemonNameWithAffix(this.target))); this.target.resetStatus(false); this.target.updateInfo(); } @@ -4132,7 +4132,7 @@ export class PostTurnRestoreBerryAbAttr extends PostTurnAbAttr { } globalScene.updateModifiers(pokemon.isPlayer()); - globalScene.queueMessage(i18next.t("abilityTriggers:postTurnLootCreateEatenBerry", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), berryName: chosenBerry.name })); + globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:postTurnLootCreateEatenBerry", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), berryName: chosenBerry.name })); return true; } } @@ -4162,7 +4162,7 @@ export class RepeatBerryNextTurnAbAttr extends PostTurnAbAttr { * @param _args - N/A */ override apply(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _cancelled: BooleanHolder | null, _args: any[]): void { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.USE_ITEM), ); @@ -4226,11 +4226,11 @@ export class MoodyAbAttr extends PostTurnAbAttr { if (canRaise.length > 0) { const raisedStat = canRaise[pokemon.randBattleSeedInt(canRaise.length)]; canLower = canRaise.filter(s => s !== raisedStat); - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ raisedStat ], 2)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ raisedStat ], 2)); } if (canLower.length > 0) { const loweredStat = canLower[pokemon.randBattleSeedInt(canLower.length)]; - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ loweredStat ], -1)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ loweredStat ], -1)); } } } @@ -4247,7 +4247,7 @@ export class SpeedBoostAbAttr extends PostTurnAbAttr { } override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ Stat.SPD ], 1)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ Stat.SPD ], 1)); } } @@ -4259,7 +4259,7 @@ export class PostTurnHealAbAttr extends PostTurnAbAttr { override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { if (!simulated) { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - globalScene.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), + globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() / 16), i18next.t("abilityTriggers:postTurnHeal", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }), true)); } } @@ -4305,7 +4305,7 @@ export class PostTurnHurtIfSleepingAbAttr extends PostTurnAbAttr { if ((opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(AbilityId.COMATOSE)) && !opp.hasAbilityWithAttr(BlockNonDirectDamageAbAttr) && !opp.switchOutStatus) { if (!simulated) { opp.damageAndUpdate(toDmgValue(opp.getMaxHp() / 8), { result: HitResult.INDIRECT }); - globalScene.queueMessage(i18next.t("abilityTriggers:badDreams", { pokemonName: getPokemonNameWithAffix(opp) })); + globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:badDreams", { pokemonName: getPokemonNameWithAffix(opp) })); } } } @@ -4336,7 +4336,7 @@ export class FetchBallAbAttr extends PostTurnAbAttr { const lastUsed = globalScene.currentBattle.lastUsedPokeball; globalScene.pokeballCounts[lastUsed!]++; globalScene.currentBattle.lastUsedPokeball = null; - globalScene.queueMessage(i18next.t("abilityTriggers:fetchBall", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), pokeballName: getPokeballName(lastUsed!) })); + globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:fetchBall", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), pokeballName: getPokeballName(lastUsed!) })); } } @@ -4442,10 +4442,10 @@ export class PostDancingMoveAbAttr extends PostMoveUsedAbAttr { // If the move is an AttackMove or a StatusMove the Dancer must replicate the move on the source of the Dance if (move.getMove() instanceof AttackMove || move.getMove() instanceof StatusMove) { const target = this.getTarget(dancer, source, targets); - globalScene.unshiftPhase(new MovePhase(dancer, target, move, true, true)); + globalScene.phaseManager.unshiftPhase(new MovePhase(dancer, target, move, true, true)); } else if (move.getMove() instanceof SelfStatusMove) { // If the move is a SelfStatusMove (ie. Swords Dance) the Dancer should replicate it on itself - globalScene.unshiftPhase(new MovePhase(dancer, [ dancer.getBattlerIndex() ], move, true, true)); + globalScene.phaseManager.unshiftPhase(new MovePhase(dancer, [ dancer.getBattlerIndex() ], move, true, true)); } } } @@ -4525,7 +4525,7 @@ export class StatStageChangeCopyAbAttr extends AbAttr { args: any[], ): void { if (!simulated) { - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, (args[0] as BattleStat[]), (args[1] as number), true, false, false)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, (args[0] as BattleStat[]), (args[1] as number), true, false, false)); } } } @@ -4606,7 +4606,7 @@ export class HealFromBerryUseAbAttr extends AbAttr { } const { name: abilityName } = passive ? pokemon.getPassiveAbility() : pokemon.getAbility(); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new PokemonHealPhase( pokemon.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() * this.healPercent), @@ -4739,7 +4739,7 @@ export class PostBattleLootAbAttr extends PostBattleAbAttr { if (globalScene.tryTransferHeldItemModifier(this.randItem, pokemon, true, 1, true, undefined, false)) { postBattleLoot.splice(postBattleLoot.indexOf(this.randItem), 1); - globalScene.queueMessage(i18next.t("abilityTriggers:postBattleLoot", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), itemName: this.randItem.type.name })); + globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:postBattleLoot", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), itemName: this.randItem.type.name })); } this.randItem = undefined; } @@ -4927,7 +4927,7 @@ export class FlinchStatStageChangeAbAttr extends FlinchEffectAbAttr { override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { if (!simulated) { - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages)); } } } @@ -5495,16 +5495,16 @@ function applySingleAbAttrs( continue; } - globalScene.setPhaseQueueSplice(); + globalScene.phaseManager.setPhaseQueueSplice(); if (attr.showAbility && !simulated) { - globalScene.queueAbilityDisplay(pokemon, passive, true); + globalScene.phaseManager.queueAbilityDisplay(pokemon, passive, true); abShown = true; } const message = attr.getTriggerMessage(pokemon, ability.name, args); if (message) { if (!simulated) { - globalScene.queueMessage(message); + globalScene.phaseManager.queueMessage(message); } messages.push(message); } @@ -5512,14 +5512,14 @@ function applySingleAbAttrs( applyFunc(attr, passive); if (abShown) { - globalScene.queueAbilityDisplay(pokemon, passive, false); + globalScene.phaseManager.queueAbilityDisplay(pokemon, passive, false); } if (!simulated) { pokemon.waveData.abilitiesApplied.add(ability.id); } - globalScene.clearPhaseQueueSplice(); + globalScene.phaseManager.clearPhaseQueueSplice(); } } @@ -5546,7 +5546,7 @@ class ForceSwitchOutHelper { if (switchOutTarget.hp > 0) { switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - globalScene.prependToPhase(new SwitchPhase(this.switchType, switchOutTarget.getFieldIndex(), true, true), MoveEndPhase); + globalScene.phaseManager.prependToPhase(new SwitchPhase(this.switchType, switchOutTarget.getFieldIndex(), true, true), MoveEndPhase); return true; } /** @@ -5560,7 +5560,7 @@ class ForceSwitchOutHelper { if (switchOutTarget.hp > 0) { switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); const summonIndex = (globalScene.currentBattle.trainer ? globalScene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0); - globalScene.prependToPhase(new SwitchSummonPhase(this.switchType, switchOutTarget.getFieldIndex(), summonIndex, false, false), MoveEndPhase); + globalScene.phaseManager.prependToPhase(new SwitchSummonPhase(this.switchType, switchOutTarget.getFieldIndex(), summonIndex, false, false), MoveEndPhase); return true; } /** @@ -5576,7 +5576,7 @@ class ForceSwitchOutHelper { if (switchOutTarget.hp > 0) { switchOutTarget.leaveField(false); - globalScene.queueMessage(i18next.t("moveTriggers:fled", { pokemonName: getPokemonNameWithAffix(switchOutTarget) }), null, true, 500); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:fled", { pokemonName: getPokemonNameWithAffix(switchOutTarget) }), null, true, 500); if (globalScene.currentBattle.double && !isNullOrUndefined(allyPokemon)) { globalScene.redirectPokemonMoves(switchOutTarget, allyPokemon); } @@ -5586,13 +5586,13 @@ class ForceSwitchOutHelper { globalScene.clearEnemyHeldItemModifiers(); if (switchOutTarget.hp) { - globalScene.pushPhase(new BattleEndPhase(false)); + globalScene.phaseManager.pushPhase(new BattleEndPhase(false)); if (globalScene.gameMode.hasRandomBiomes || globalScene.isNewBiome()) { - globalScene.pushPhase(new SelectBiomePhase()); + globalScene.phaseManager.pushPhase(new SelectBiomePhase()); } - globalScene.pushPhase(new NewBattlePhase()); + globalScene.phaseManager.pushPhase(new NewBattlePhase()); } } } @@ -5792,7 +5792,7 @@ function applyAbAttrsInternal( for (const passive of [ false, true ]) { if (pokemon) { applySingleAbAttrs(pokemon, passive, attrType, applyFunc, successFunc, args, gainedMidTurn, simulated, messages); - globalScene.clearPhaseQueueSplice(); + globalScene.phaseManager.clearPhaseQueueSplice(); } } } @@ -6870,7 +6870,7 @@ export function initAbilities() { .ignorable(), new Ability(AbilityId.ANALYTIC, 5) .attr(MovePowerBoostAbAttr, (user, target, move) => { - const movePhase = globalScene.findPhase((phase) => phase.is("MovePhase") && phase.pokemon.id !== user?.id); + const movePhase = globalScene.phaseManager.findPhase((phase) => phase.is("MovePhase") && phase.pokemon.id !== user?.id); return isNullOrUndefined(movePhase); }, 1.3), new Ability(AbilityId.ILLUSION, 5) diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 0254aab37e1..70fceb17c49 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -54,7 +54,7 @@ export abstract class ArenaTag { onRemove(_arena: Arena, quiet = false): void { if (!quiet) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t( `arenaTag:arenaOnRemove${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, { moveName: this.getMoveName() }, @@ -126,7 +126,7 @@ export class MistTag extends ArenaTag { const source = globalScene.getPokemonById(this.sourceId); if (!quiet && source) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:mistOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(source), }), @@ -161,7 +161,7 @@ export class MistTag extends ArenaTag { cancelled.value = true; if (!simulated) { - globalScene.queueMessage(i18next.t("arenaTag:mistApply")); + globalScene.phaseManager.queueMessage(i18next.t("arenaTag:mistApply")); } return true; @@ -239,7 +239,7 @@ class ReflectTag extends WeakenMoveScreenTag { onAdd(_arena: Arena, quiet = false): void { if (!quiet) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t( `arenaTag:reflectOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, ), @@ -259,7 +259,7 @@ class LightScreenTag extends WeakenMoveScreenTag { onAdd(_arena: Arena, quiet = false): void { if (!quiet) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t( `arenaTag:lightScreenOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, ), @@ -282,7 +282,7 @@ class AuroraVeilTag extends WeakenMoveScreenTag { onAdd(_arena: Arena, quiet = false): void { if (!quiet) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t( `arenaTag:auroraVeilOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, ), @@ -318,7 +318,7 @@ export class ConditionalProtectTag extends ArenaTag { } onAdd(_arena: Arena): void { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t( `arenaTag:conditionalProtectOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, { moveName: super.getMoveName() }, @@ -355,7 +355,7 @@ export class ConditionalProtectTag extends ArenaTag { isProtected.value = true; if (!simulated) { new CommonBattleAnim(CommonAnim.PROTECT, defender).play(); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:conditionalProtectApply", { moveName: super.getMoveName(), pokemonNameWithAffix: getPokemonNameWithAffix(defender), @@ -381,7 +381,7 @@ export class ConditionalProtectTag extends ArenaTag { */ const QuickGuardConditionFunc: ProtectConditionFunc = (_arena, moveId) => { const move = allMoves[moveId]; - const effectPhase = globalScene.getCurrentPhase(); + const effectPhase = globalScene.phaseManager.getCurrentPhase(); if (effectPhase?.is("MoveEffectPhase")) { const attacker = effectPhase.getUserPokemon(); @@ -458,7 +458,7 @@ class MatBlockTag extends ConditionalProtectTag { if (this.sourceId) { const source = globalScene.getPokemonById(this.sourceId); if (source) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:matBlockOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(source), }), @@ -517,7 +517,7 @@ export class NoCritTag extends ArenaTag { /** Queues a message upon adding this effect to the field */ onAdd(_arena: Arena): void { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t(`arenaTag:noCritOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : "Enemy"}`, { moveName: this.getMoveName(), }), @@ -527,7 +527,7 @@ export class NoCritTag extends ArenaTag { /** Queues a message upon removing this effect from the field */ onRemove(_arena: Arena): void { const source = globalScene.getPokemonById(this.sourceId!); // TODO: is this bang correct? - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:noCritOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(source ?? undefined), moveName: this.getMoveName(), @@ -567,8 +567,10 @@ class WishTag extends ArenaTag { onRemove(_arena: Arena): void { const target = globalScene.getField()[this.battlerIndex]; if (target?.isActive(true)) { - globalScene.queueMessage(this.triggerMessage); - globalScene.unshiftPhase(new PokemonHealPhase(target.getBattlerIndex(), this.healHp, null, true, false)); + globalScene.phaseManager.queueMessage(this.triggerMessage); + globalScene.phaseManager.unshiftPhase( + new PokemonHealPhase(target.getBattlerIndex(), this.healHp, null, true, false), + ); } } } @@ -621,11 +623,11 @@ class MudSportTag extends WeakenMoveTypeTag { } onAdd(_arena: Arena): void { - globalScene.queueMessage(i18next.t("arenaTag:mudSportOnAdd")); + globalScene.phaseManager.queueMessage(i18next.t("arenaTag:mudSportOnAdd")); } onRemove(_arena: Arena): void { - globalScene.queueMessage(i18next.t("arenaTag:mudSportOnRemove")); + globalScene.phaseManager.queueMessage(i18next.t("arenaTag:mudSportOnRemove")); } } @@ -639,11 +641,11 @@ class WaterSportTag extends WeakenMoveTypeTag { } onAdd(_arena: Arena): void { - globalScene.queueMessage(i18next.t("arenaTag:waterSportOnAdd")); + globalScene.phaseManager.queueMessage(i18next.t("arenaTag:waterSportOnAdd")); } onRemove(_arena: Arena): void { - globalScene.queueMessage(i18next.t("arenaTag:waterSportOnRemove")); + globalScene.phaseManager.queueMessage(i18next.t("arenaTag:waterSportOnRemove")); } } @@ -659,7 +661,7 @@ export class IonDelugeTag extends ArenaTag { /** Queues an on-add message */ onAdd(_arena: Arena): void { - globalScene.queueMessage(i18next.t("arenaTag:plasmaFistsOnAdd")); + globalScene.phaseManager.queueMessage(i18next.t("arenaTag:plasmaFistsOnAdd")); } onRemove(_arena: Arena): void {} // Removes default on-remove message @@ -758,7 +760,7 @@ class SpikesTag extends ArenaTrapTag { const source = this.sourceId ? globalScene.getPokemonById(this.sourceId) : null; if (!quiet && source) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:spikesOnAdd", { moveName: this.getMoveName(), opponentDesc: source.getOpponentDescriptor(), @@ -781,7 +783,7 @@ class SpikesTag extends ArenaTrapTag { const damageHpRatio = 1 / (10 - 2 * this.layers); const damage = toDmgValue(pokemon.getMaxHp() * damageHpRatio); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:spikesActivateTrap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -811,7 +813,7 @@ class ToxicSpikesTag extends ArenaTrapTag { const source = this.sourceId ? globalScene.getPokemonById(this.sourceId) : null; if (!quiet && source) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:toxicSpikesOnAdd", { moveName: this.getMoveName(), opponentDesc: source.getOpponentDescriptor(), @@ -834,7 +836,7 @@ class ToxicSpikesTag extends ArenaTrapTag { if (pokemon.isOfType(PokemonType.POISON)) { this.neutralized = true; if (globalScene.arena.removeTag(this.tagType)) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:toxicSpikesActivateTrapPoison", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName(), @@ -891,7 +893,7 @@ export class DelayedAttackTag extends ArenaTag { const ret = super.lapse(arena); if (!ret) { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new MoveEffectPhase(this.sourceId!, [this.targetIndex], allMoves[this.sourceMove!], false, true), ); // TODO: are those bangs correct? } @@ -917,7 +919,7 @@ class StealthRockTag extends ArenaTrapTag { const source = this.sourceId ? globalScene.getPokemonById(this.sourceId) : null; if (!quiet && source) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:stealthRockOnAdd", { opponentDesc: source.getOpponentDescriptor(), }), @@ -971,7 +973,7 @@ class StealthRockTag extends ArenaTrapTag { } const damage = toDmgValue(pokemon.getMaxHp() * damageHpRatio); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:stealthRockActivateTrap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -1001,7 +1003,7 @@ class StickyWebTag extends ArenaTrapTag { super.onAdd(arena); const source = this.sourceId ? globalScene.getPokemonById(this.sourceId) : null; if (!quiet && source) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:stickyWebOnAdd", { moveName: this.getMoveName(), opponentDesc: source.getOpponentDescriptor(), @@ -1020,13 +1022,13 @@ class StickyWebTag extends ArenaTrapTag { } if (!cancelled.value) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:stickyWebActivateTrap", { pokemonName: pokemon.getNameToRender(), }), ); const stages = new NumberHolder(-1); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase( pokemon.getBattlerIndex(), false, @@ -1074,7 +1076,7 @@ export class TrickRoomTag extends ArenaTag { onAdd(_arena: Arena): void { const source = this.sourceId ? globalScene.getPokemonById(this.sourceId) : null; if (source) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:trickRoomOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(source), }), @@ -1083,7 +1085,7 @@ export class TrickRoomTag extends ArenaTag { } onRemove(_arena: Arena): void { - globalScene.queueMessage(i18next.t("arenaTag:trickRoomOnRemove")); + globalScene.phaseManager.queueMessage(i18next.t("arenaTag:trickRoomOnRemove")); } } @@ -1098,7 +1100,7 @@ export class GravityTag extends ArenaTag { } onAdd(_arena: Arena): void { - globalScene.queueMessage(i18next.t("arenaTag:gravityOnAdd")); + globalScene.phaseManager.queueMessage(i18next.t("arenaTag:gravityOnAdd")); globalScene.getField(true).forEach(pokemon => { if (pokemon !== null) { pokemon.removeTag(BattlerTagType.FLOATING); @@ -1111,7 +1113,7 @@ export class GravityTag extends ArenaTag { } onRemove(_arena: Arena): void { - globalScene.queueMessage(i18next.t("arenaTag:gravityOnRemove")); + globalScene.phaseManager.queueMessage(i18next.t("arenaTag:gravityOnRemove")); } } @@ -1127,7 +1129,7 @@ class TailwindTag extends ArenaTag { onAdd(_arena: Arena, quiet = false): void { if (!quiet) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t( `arenaTag:tailwindOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, ), @@ -1141,7 +1143,7 @@ class TailwindTag extends ArenaTag { // Apply the CHARGED tag to party members with the WIND_POWER ability if (pokemon.hasAbility(AbilityId.WIND_POWER) && !pokemon.getTag(BattlerTagType.CHARGED)) { pokemon.addTag(BattlerTagType.CHARGED); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("abilityTriggers:windPowerCharged", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName(), @@ -1151,16 +1153,18 @@ class TailwindTag extends ArenaTag { // Raise attack by one stage if party member has WIND_RIDER ability // TODO: Ability displays should be handled by the ability if (pokemon.hasAbility(AbilityId.WIND_RIDER)) { - globalScene.queueAbilityDisplay(pokemon, false, true); - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.ATK], 1, true)); - globalScene.queueAbilityDisplay(pokemon, false, false); + globalScene.phaseManager.queueAbilityDisplay(pokemon, false, true); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.ATK], 1, true), + ); + globalScene.phaseManager.queueAbilityDisplay(pokemon, false, false); } } } onRemove(_arena: Arena, quiet = false): void { if (!quiet) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t( `arenaTag:tailwindOnRemove${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, ), @@ -1179,11 +1183,11 @@ class HappyHourTag extends ArenaTag { } onAdd(_arena: Arena): void { - globalScene.queueMessage(i18next.t("arenaTag:happyHourOnAdd")); + globalScene.phaseManager.queueMessage(i18next.t("arenaTag:happyHourOnAdd")); } onRemove(_arena: Arena): void { - globalScene.queueMessage(i18next.t("arenaTag:happyHourOnRemove")); + globalScene.phaseManager.queueMessage(i18next.t("arenaTag:happyHourOnRemove")); } } @@ -1193,7 +1197,7 @@ class SafeguardTag extends ArenaTag { } onAdd(_arena: Arena): void { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t( `arenaTag:safeguardOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, ), @@ -1201,7 +1205,7 @@ class SafeguardTag extends ArenaTag { } onRemove(_arena: Arena): void { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t( `arenaTag:safeguardOnRemove${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, ), @@ -1237,7 +1241,7 @@ class ImprisonTag extends ArenaTrapTag { p.addTag(BattlerTagType.IMPRISON, 1, MoveId.IMPRISON, this.sourceId); } }); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:imprisonOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(source), }), @@ -1294,7 +1298,7 @@ class FireGrassPledgeTag extends ArenaTag { override onAdd(_arena: Arena): void { // "A sea of fire enveloped your/the opposing team!" - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t( `arenaTag:fireGrassPledgeOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, ), @@ -1309,13 +1313,13 @@ class FireGrassPledgeTag extends ArenaTag { .filter(pokemon => !pokemon.isOfType(PokemonType.FIRE) && !pokemon.switchOutStatus) .forEach(pokemon => { // "{pokemonNameWithAffix} was hurt by the sea of fire!" - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:fireGrassPledgeLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); // TODO: Replace this with a proper animation - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.MAGMA_STORM), ); pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 8), { result: HitResult.INDIRECT }); @@ -1339,7 +1343,7 @@ class WaterFirePledgeTag extends ArenaTag { override onAdd(_arena: Arena): void { // "A rainbow appeared in the sky on your/the opposing team's side!" - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t( `arenaTag:waterFirePledgeOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, ), @@ -1373,7 +1377,7 @@ class GrassWaterPledgeTag extends ArenaTag { override onAdd(_arena: Arena): void { // "A swamp enveloped your/the opposing team!" - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t( `arenaTag:grassWaterPledgeOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, ), @@ -1394,7 +1398,7 @@ export class FairyLockTag extends ArenaTag { } onAdd(_arena: Arena): void { - globalScene.queueMessage(i18next.t("arenaTag:fairyLockOnAdd")); + globalScene.phaseManager.queueMessage(i18next.t("arenaTag:fairyLockOnAdd")); } } @@ -1451,7 +1455,7 @@ export class SuppressAbilitiesTag extends ArenaTag { public override onRemove(_arena: Arena, quiet = false) { this.beingRemoved = true; if (!quiet) { - globalScene.queueMessage(i18next.t("arenaTag:neutralizingGasOnRemove")); + globalScene.phaseManager.queueMessage(i18next.t("arenaTag:neutralizingGasOnRemove")); } for (const pokemon of globalScene.getField(true)) { @@ -1472,7 +1476,7 @@ export class SuppressAbilitiesTag extends ArenaTag { private playActivationMessage(pokemon: Pokemon | null) { if (pokemon) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("arenaTag:neutralizingGasOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 456f519a34c..d0b4620d8eb 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -164,12 +164,12 @@ export abstract class MoveRestrictionBattlerTag extends BattlerTag { override lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.PRE_MOVE) { // Cancel the affected pokemon's selected move - const phase = globalScene.getCurrentPhase() as MovePhase; + const phase = globalScene.phaseManager.getCurrentPhase() as MovePhase; const move = phase.move; if (this.isMoveRestricted(move.moveId, pokemon)) { if (this.interruptedText(pokemon, move.moveId)) { - globalScene.queueMessage(this.interruptedText(pokemon, move.moveId)); + globalScene.phaseManager.queueMessage(this.interruptedText(pokemon, move.moveId)); } phase.cancel(); } @@ -315,7 +315,7 @@ export class DisabledTag extends MoveRestrictionBattlerTag { this.moveId = move.move; - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:disabledOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[this.moveId].name, @@ -327,7 +327,7 @@ export class DisabledTag extends MoveRestrictionBattlerTag { override onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:disabledLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[this.moveId].name, @@ -456,12 +456,12 @@ export class RechargingTag extends BattlerTag { /** Cancels the source's move this turn and queues a "__ must recharge!" message */ lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.PRE_MOVE) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:rechargingLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); - (globalScene.getCurrentPhase() as MovePhase).cancel(); + (globalScene.phaseManager.getCurrentPhase() as MovePhase).cancel(); pokemon.getMoveQueue().shift(); } return super.lapse(pokemon, lapseType); @@ -488,7 +488,7 @@ export class BeakBlastChargingTag extends BattlerTag { new MoveChargeAnim(ChargeAnim.BEAK_BLAST_CHARGING, this.sourceMove, pokemon).play(); // Queue Beak Blast's header message - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("moveTriggers:startedHeatingUpBeak", { pokemonName: getPokemonNameWithAffix(pokemon), }), @@ -533,7 +533,7 @@ export class ShellTrapTag extends BattlerTag { } onAdd(pokemon: Pokemon): void { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("moveTriggers:setUpShellTrap", { pokemonName: getPokemonNameWithAffix(pokemon), }), @@ -552,15 +552,15 @@ export class ShellTrapTag extends BattlerTag { // Trap should only be triggered by opponent's Physical moves if (phaseData?.move.category === MoveCategory.PHYSICAL && pokemon.isOpponent(phaseData.attacker)) { - const shellTrapPhaseIndex = globalScene.phaseQueue.findIndex( + const shellTrapPhaseIndex = globalScene.phaseManager.phaseQueue.findIndex( phase => phase.is("MovePhase") && phase.pokemon === pokemon, ); - const firstMovePhaseIndex = globalScene.phaseQueue.findIndex(phase => phase.is("MovePhase")); + const firstMovePhaseIndex = globalScene.phaseManager.phaseQueue.findIndex(phase => phase.is("MovePhase")); // Only shift MovePhase timing if it's not already next up if (shellTrapPhaseIndex !== -1 && shellTrapPhaseIndex !== firstMovePhaseIndex) { - const shellTrapMovePhase = globalScene.phaseQueue.splice(shellTrapPhaseIndex, 1)[0]; - globalScene.prependToPhase(shellTrapMovePhase, MovePhase); + const shellTrapMovePhase = globalScene.phaseManager.phaseQueue.splice(shellTrapPhaseIndex, 1)[0]; + globalScene.phaseManager.prependToPhase(shellTrapMovePhase, MovePhase); } this.activated = true; @@ -598,13 +598,13 @@ export class TrappedTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.queueMessage(this.getTrapMessage(pokemon)); + globalScene.phaseManager.queueMessage(this.getTrapMessage(pokemon)); } onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:trappedOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName(), @@ -660,8 +660,8 @@ export class FlinchedTag extends BattlerTag { */ lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.PRE_MOVE) { - (globalScene.getCurrentPhase() as MovePhase).cancel(); - globalScene.queueMessage( + (globalScene.phaseManager.getCurrentPhase() as MovePhase).cancel(); + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:flinchedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -699,7 +699,7 @@ export class InterruptedTag extends BattlerTag { } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { - (globalScene.getCurrentPhase() as MovePhase).cancel(); + (globalScene.phaseManager.getCurrentPhase() as MovePhase).cancel(); return super.lapse(pokemon, lapseType); } } @@ -719,8 +719,10 @@ export class ConfusedTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.CONFUSION)); - globalScene.queueMessage( + globalScene.phaseManager.unshiftPhase( + new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.CONFUSION), + ); + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:confusedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -730,7 +732,7 @@ export class ConfusedTag extends BattlerTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:confusedOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -740,7 +742,7 @@ export class ConfusedTag extends BattlerTag { onOverlap(pokemon: Pokemon): void { super.onOverlap(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:confusedOnOverlap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -754,12 +756,14 @@ export class ConfusedTag extends BattlerTag { return false; } - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:confusedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); - globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.CONFUSION)); + globalScene.phaseManager.unshiftPhase( + new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.CONFUSION), + ); // 1/3 chance of hitting self with a 40 base power move if (pokemon.randBattleSeedInt(3) === 0 || Overrides.CONFUSION_ACTIVATION_OVERRIDE === true) { @@ -769,9 +773,9 @@ export class ConfusedTag extends BattlerTag { ((((2 * pokemon.level) / 5 + 2) * 40 * atk) / def / 50 + 2) * (pokemon.randBattleSeedIntRange(85, 100) / 100), ); // Intentionally don't increment rage fist's hitCount - globalScene.queueMessage(i18next.t("battlerTags:confusedLapseHurtItself")); + globalScene.phaseManager.queueMessage(i18next.t("battlerTags:confusedLapseHurtItself")); pokemon.damageAndUpdate(damage, { result: HitResult.CONFUSION }); - (globalScene.getCurrentPhase() as MovePhase).cancel(); + (globalScene.phaseManager.getCurrentPhase() as MovePhase).cancel(); } return true; @@ -815,7 +819,7 @@ export class DestinyBondTag extends BattlerTag { } if (pokemon.isBossImmune()) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:destinyBondLapseIsBoss", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -823,7 +827,7 @@ export class DestinyBondTag extends BattlerTag { return false; } - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:destinyBondLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(source), pokemonNameWithAffix2: getPokemonNameWithAffix(pokemon), @@ -856,7 +860,7 @@ export class InfatuatedTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:infatuatedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), sourcePokemonName: getPokemonNameWithAffix(globalScene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? @@ -867,7 +871,7 @@ export class InfatuatedTag extends BattlerTag { onOverlap(pokemon: Pokemon): void { super.onOverlap(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:infatuatedOnOverlap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -878,21 +882,23 @@ export class InfatuatedTag extends BattlerTag { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:infatuatedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), sourcePokemonName: getPokemonNameWithAffix(globalScene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? }), ); - globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.ATTRACT)); + globalScene.phaseManager.unshiftPhase( + new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.ATTRACT), + ); if (pokemon.randBattleSeedInt(2)) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:infatuatedLapseImmobilize", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); - (globalScene.getCurrentPhase() as MovePhase).cancel(); + (globalScene.phaseManager.getCurrentPhase() as MovePhase).cancel(); } } @@ -902,7 +908,7 @@ export class InfatuatedTag extends BattlerTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:infatuatedOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -941,7 +947,7 @@ export class SeedTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:seededOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -959,13 +965,13 @@ export class SeedTag extends BattlerTag { applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); if (!cancelled.value) { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new CommonAnimPhase(source.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.LEECH_SEED), ); const damage = pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 8), { result: HitResult.INDIRECT }); const reverseDrain = pokemon.hasAbilityWithAttr(ReverseDrainAbAttr, false); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new PokemonHealPhase( source.getBattlerIndex(), !reverseDrain ? damage : damage * -1, @@ -1006,7 +1012,7 @@ export class PowderTag extends BattlerTag { super.onAdd(pokemon); // "{Pokemon} is covered in powder!" - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:powderOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -1022,7 +1028,7 @@ export class PowderTag extends BattlerTag { */ lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.PRE_MOVE) { - const movePhase = globalScene.getCurrentPhase(); + const movePhase = globalScene.phaseManager.getCurrentPhase(); if (movePhase?.is("MovePhase")) { const move = movePhase.move.getMove(); const weather = globalScene.arena.weather; @@ -1033,7 +1039,7 @@ export class PowderTag extends BattlerTag { movePhase.fail(); movePhase.showMoveText(); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.POWDER), ); @@ -1044,7 +1050,7 @@ export class PowderTag extends BattlerTag { } // "When the flame touched the powder\non the Pokémon, it exploded!" - globalScene.queueMessage(i18next.t("battlerTags:powderLapse", { moveName: move.name })); + globalScene.phaseManager.queueMessage(i18next.t("battlerTags:powderLapse", { moveName: move.name })); } } return true; @@ -1061,7 +1067,7 @@ export class NightmareTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:nightmareOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -1071,7 +1077,7 @@ export class NightmareTag extends BattlerTag { onOverlap(pokemon: Pokemon): void { super.onOverlap(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:nightmareOnOverlap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -1082,12 +1088,14 @@ export class NightmareTag extends BattlerTag { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:nightmareLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); - globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.CURSE)); // TODO: Update animation type + globalScene.phaseManager.unshiftPhase( + new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.CURSE), + ); // TODO: Update animation type const cancelled = new BooleanHolder(false); applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); @@ -1173,18 +1181,18 @@ export class EncoreTag extends MoveRestrictionBattlerTag { onAdd(pokemon: Pokemon): void { super.onRemove(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:encoreOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); - const movePhase = globalScene.findPhase(m => m.is("MovePhase") && m.pokemon === pokemon); + const movePhase = globalScene.phaseManager.findPhase(m => m.is("MovePhase") && m.pokemon === pokemon); if (movePhase) { const movesetMove = pokemon.getMoveset().find(m => m.moveId === this.moveId); if (movesetMove) { const lastMove = pokemon.getLastXMoves(1)[0]; - globalScene.tryReplacePhase( + globalScene.phaseManager.tryReplacePhase( m => m.is("MovePhase") && m.pokemon === pokemon, new MovePhase(pokemon, lastMove.targets ?? [], movesetMove), ); @@ -1221,7 +1229,7 @@ export class EncoreTag extends MoveRestrictionBattlerTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:encoreOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -1235,7 +1243,7 @@ export class HelpingHandTag extends BattlerTag { } onAdd(pokemon: Pokemon): void { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:helpingHandOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(globalScene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? pokemonName: getPokemonNameWithAffix(pokemon), @@ -1268,7 +1276,7 @@ export class IngrainTag extends TrappedTag { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new PokemonHealPhase( pokemon.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() / 16), @@ -1307,7 +1315,9 @@ export class OctolockTag extends TrappedTag { const shouldLapse = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (shouldLapse) { - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), false, [Stat.DEF, Stat.SPDEF], -1)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), false, [Stat.DEF, Stat.SPDEF], -1), + ); return true; } @@ -1323,7 +1333,7 @@ export class AquaRingTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:aquaRingOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -1334,7 +1344,7 @@ export class AquaRingTag extends BattlerTag { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new PokemonHealPhase( pokemon.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() / 16), @@ -1382,7 +1392,7 @@ export class DrowsyTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:drowsyOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -1435,13 +1445,13 @@ export abstract class DamagingTrapTag extends TrappedTag { const ret = super.lapse(pokemon, lapseType); if (ret) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:damagingTrapLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName(), }), ); - globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, this.commonAnim)); + globalScene.phaseManager.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, this.commonAnim)); const cancelled = new BooleanHolder(false); applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); @@ -1596,7 +1606,7 @@ export class ProtectedTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:protectedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -1606,14 +1616,14 @@ export class ProtectedTag extends BattlerTag { lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.CUSTOM) { new CommonBattleAnim(CommonAnim.PROTECT, pokemon).play(); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:protectedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); // Stop multi-hit moves early - const effectPhase = globalScene.getCurrentPhase(); + const effectPhase = globalScene.phaseManager.getCurrentPhase(); if (effectPhase?.is("MoveEffectPhase")) { effectPhase.stopMultiHit(pokemon); } @@ -1754,7 +1764,9 @@ export class ContactStatStageChangeProtectedTag extends DamageProtectedTag { * @param user - The pokemon that is being attacked and has the tag */ override onContact(attacker: Pokemon, _user: Pokemon): void { - globalScene.unshiftPhase(new StatStageChangePhase(attacker.getBattlerIndex(), false, [this.stat], this.levels)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(attacker.getBattlerIndex(), false, [this.stat], this.levels), + ); } } @@ -1771,7 +1783,7 @@ export class EnduringTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:enduringOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -1780,7 +1792,7 @@ export class EnduringTag extends BattlerTag { lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.CUSTOM) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:enduringLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -1799,7 +1811,7 @@ export class SturdyTag extends BattlerTag { lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.CUSTOM) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:sturdyLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -1824,7 +1836,7 @@ export class PerishSongTag extends BattlerTag { const ret = super.lapse(pokemon, lapseType); if (ret) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:perishSongLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), turnCount: this.turnCount, @@ -1861,7 +1873,7 @@ export class CenterOfAttentionTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:centerOfAttentionOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -1918,15 +1930,15 @@ export class TruantTag extends AbilityBattlerTag { const lastMove = pokemon.getLastXMoves().find(() => true); if (lastMove && lastMove.move !== MoveId.NONE) { - (globalScene.getCurrentPhase() as MovePhase).cancel(); + (globalScene.phaseManager.getCurrentPhase() as MovePhase).cancel(); // TODO: Ability displays should be handled by the ability - globalScene.queueAbilityDisplay(pokemon, passive, true); - globalScene.queueMessage( + globalScene.phaseManager.queueAbilityDisplay(pokemon, passive, true); + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:truantLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); - globalScene.queueAbilityDisplay(pokemon, passive, false); + globalScene.phaseManager.queueAbilityDisplay(pokemon, passive, false); } return true; @@ -1941,7 +1953,7 @@ export class SlowStartTag extends AbilityBattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:slowStartOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -1959,7 +1971,7 @@ export class SlowStartTag extends AbilityBattlerTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:slowStartOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -2006,7 +2018,7 @@ export class HighestStatBoostTag extends AbilityBattlerTag { this.stat = highestStat; this.multiplier = this.stat === Stat.SPD ? 1.5 : 1.3; - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:highestStatBoostOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), statName: i18next.t(getStatKey(highestStat)), @@ -2021,7 +2033,7 @@ export class HighestStatBoostTag extends AbilityBattlerTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:highestStatBoostOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName: allAbilities[this.ability].name, @@ -2119,7 +2131,7 @@ export class FloatingTag extends TypeImmuneTag { super.onAdd(pokemon); if (this.sourceMove === MoveId.MAGNET_RISE) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:magnetRisenOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -2130,7 +2142,7 @@ export class FloatingTag extends TypeImmuneTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); if (this.sourceMove === MoveId.MAGNET_RISE) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:magnetRisenOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -2174,7 +2186,7 @@ export class TypeBoostTag extends BattlerTag { } override onAdd(pokemon: Pokemon): void { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("abilityTriggers:typeImmunityPowerBoost", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), typeName: i18next.t(`pokemonInfo:Type.${PokemonType[this.boostedType]}`), @@ -2183,7 +2195,7 @@ export class TypeBoostTag extends BattlerTag { } override onOverlap(pokemon: Pokemon): void { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("abilityTriggers:moveImmunity", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), ); } @@ -2197,7 +2209,7 @@ export class CritBoostTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:critBoostOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -2211,7 +2223,7 @@ export class CritBoostTag extends BattlerTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:critBoostOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -2257,7 +2269,7 @@ export class SaltCuredTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:saltCuredOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -2269,7 +2281,7 @@ export class SaltCuredTag extends BattlerTag { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.SALT_CURE), ); @@ -2282,7 +2294,7 @@ export class SaltCuredTag extends BattlerTag { result: HitResult.INDIRECT, }); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:saltCuredLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName(), @@ -2320,7 +2332,7 @@ export class CursedTag extends BattlerTag { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.SALT_CURE), ); @@ -2329,7 +2341,7 @@ export class CursedTag extends BattlerTag { if (!cancelled.value) { pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 4), { result: HitResult.INDIRECT }); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:cursedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -2497,7 +2509,7 @@ export class CommandedTag extends BattlerTag { /** Caches the Tatsugiri's form key and sharply boosts the tagged Pokemon's stats */ override onAdd(pokemon: Pokemon): void { this._tatsugiriFormKey = this.getSourcePokemon()?.getFormKey() ?? "curly"; - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase( pokemon.getBattlerIndex(), true, @@ -2572,7 +2584,7 @@ export class StockpilingTag extends BattlerTag { if (this.stockpiledCount < 3) { this.stockpiledCount++; - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:stockpilingOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), stockpiledCount: this.stockpiledCount, @@ -2580,7 +2592,7 @@ export class StockpilingTag extends BattlerTag { ); // Attempt to increase DEF and SPDEF by one stage, keeping track of successful changes. - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase( pokemon.getBattlerIndex(), true, @@ -2608,13 +2620,13 @@ export class StockpilingTag extends BattlerTag { const spDefChange = this.statChangeCounts[Stat.SPDEF]; if (defChange) { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.DEF], -defChange, true, false, true), ); } if (spDefChange) { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.SPDEF], -spDefChange, true, false, true), ); } @@ -2635,7 +2647,7 @@ export class GulpMissileTag extends BattlerTag { return true; } - const moveEffectPhase = globalScene.getCurrentPhase(); + const moveEffectPhase = globalScene.phaseManager.getCurrentPhase(); if (moveEffectPhase?.is("MoveEffectPhase")) { const attacker = moveEffectPhase.getUserPokemon(); @@ -2655,7 +2667,9 @@ export class GulpMissileTag extends BattlerTag { } if (this.tagType === BattlerTagType.GULP_MISSILE_ARROKUDA) { - globalScene.unshiftPhase(new StatStageChangePhase(attacker.getBattlerIndex(), false, [Stat.DEF], -1)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(attacker.getBattlerIndex(), false, [Stat.DEF], -1), + ); } else { attacker.trySetStatus(StatusEffect.PARALYSIS, true, pokemon); } @@ -2803,7 +2817,7 @@ export class HealBlockTag extends MoveRestrictionBattlerTag { override onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battle:battlerTagsHealBlockOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -2833,7 +2847,7 @@ export class TarShotTag extends BattlerTag { } override onAdd(pokemon: Pokemon): void { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:tarShotOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -2852,7 +2866,7 @@ export class ElectrifiedTag extends BattlerTag { override onAdd(pokemon: Pokemon): void { // "{pokemonNameWithAffix}'s moves have been electrified!" - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:electrifiedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -2878,7 +2892,7 @@ export class AutotomizedTag extends BattlerTag { onAdd(pokemon: Pokemon): void { const minWeight = 0.1; if (pokemon.getWeight() > minWeight) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:autotomizeOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -2924,14 +2938,14 @@ export class SubstituteTag extends BattlerTag { // Queue battle animation and message globalScene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.SUBSTITUTE_ADD); if (this.sourceMove === MoveId.SHED_TAIL) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:shedTailOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), 1500, ); } else { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:substituteOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -2951,7 +2965,7 @@ export class SubstituteTag extends BattlerTag { } else { this.sprite.destroy(); } - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:substituteOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -2987,7 +3001,7 @@ export class SubstituteTag extends BattlerTag { /** If the Substitute redirects damage, queue a message to indicate it. */ onHit(pokemon: Pokemon): void { - const moveEffectPhase = globalScene.getCurrentPhase(); + const moveEffectPhase = globalScene.phaseManager.getCurrentPhase(); if (moveEffectPhase?.is("MoveEffectPhase")) { const attacker = moveEffectPhase.getUserPokemon(); if (!attacker) { @@ -2997,7 +3011,7 @@ export class SubstituteTag extends BattlerTag { const firstHit = attacker.turnData.hitCount === attacker.turnData.hitsLeft; if (firstHit && move.hitsSubstitute(attacker, pokemon)) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:substituteOnHit", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -3074,7 +3088,7 @@ export class TormentTag extends MoveRestrictionBattlerTag { */ override onAdd(pokemon: Pokemon) { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:tormentOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -3132,7 +3146,7 @@ export class TauntTag extends MoveRestrictionBattlerTag { override onAdd(pokemon: Pokemon) { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:tauntOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -3143,7 +3157,7 @@ export class TauntTag extends MoveRestrictionBattlerTag { public override onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:tauntOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -3253,7 +3267,7 @@ export class SyrupBombTag extends BattlerTag { */ override onAdd(pokemon: Pokemon) { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:syrupBombOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -3271,12 +3285,12 @@ export class SyrupBombTag extends BattlerTag { return false; } // Custom message in lieu of an animation in mainline - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:syrupBombLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.SPD], -1, true, false, true), ); return --this.turnCount > 0; @@ -3302,7 +3316,7 @@ export class TelekinesisTag extends BattlerTag { } override onAdd(pokemon: Pokemon) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:telekinesisOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -3321,7 +3335,7 @@ export class PowerTrickTag extends BattlerTag { onAdd(pokemon: Pokemon): void { this.swapStat(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:powerTrickActive", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -3330,7 +3344,7 @@ export class PowerTrickTag extends BattlerTag { onRemove(pokemon: Pokemon): void { this.swapStat(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:powerTrickActive", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -3368,7 +3382,7 @@ export class GrudgeTag extends BattlerTag { onAdd(pokemon: Pokemon) { super.onAdd(pokemon); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:grudgeOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -3389,7 +3403,7 @@ export class GrudgeTag extends BattlerTag { const lastMoveData = sourcePokemon.getMoveset().find(m => m.moveId === lastMove.move); if (lastMoveData && lastMove.move !== MoveId.STRUGGLE) { lastMoveData.ppUsed = lastMoveData.getMovePp(); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:grudgeLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: lastMoveData.getName(), @@ -3417,7 +3431,9 @@ export class PsychoShiftTag extends BattlerTag { */ override lapse(pokemon: Pokemon, _lapseType: BattlerTagLapseType): boolean { if (pokemon.status && pokemon.isActive(true)) { - globalScene.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); + globalScene.phaseManager.queueMessage( + getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon)), + ); pokemon.resetStatus(); pokemon.updateInfo(); } @@ -3439,7 +3455,7 @@ export class MagicCoatTag extends BattlerTag { */ override onAdd(pokemon: Pokemon) { // "{pokemonNameWithAffix} shrouded itself with Magic Coat!" - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:magicCoatOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -3673,7 +3689,7 @@ export function loadBattlerTag(source: BattlerTag | any): BattlerTag { * corresponding {@linkcode Move} and user {@linkcode Pokemon} */ function getMoveEffectPhaseData(_pokemon: Pokemon): { phase: MoveEffectPhase; attacker: Pokemon; move: Move } | null { - const phase = globalScene.getCurrentPhase(); + const phase = globalScene.phaseManager.getCurrentPhase(); if (phase?.is("MoveEffectPhase")) { return { phase: phase, diff --git a/src/data/berry.ts b/src/data/berry.ts index ecc3e92ca64..defc9b85541 100644 --- a/src/data/berry.ts +++ b/src/data/berry.ts @@ -3,11 +3,7 @@ import type Pokemon from "../field/pokemon"; import { HitResult } from "../field/pokemon"; import { getStatusEffectHealText } from "./status-effect"; import { NumberHolder, toDmgValue, randSeedInt } from "#app/utils/common"; -import { - DoubleBerryEffectAbAttr, - ReduceBerryUseThresholdAbAttr, - applyAbAttrs, -} from "./abilities/ability"; +import { DoubleBerryEffectAbAttr, ReduceBerryUseThresholdAbAttr, applyAbAttrs } from "./abilities/ability"; import i18next from "i18next"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; @@ -79,7 +75,7 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { { const hpHealed = new NumberHolder(toDmgValue(consumer.getMaxHp() / 4)); applyAbAttrs(DoubleBerryEffectAbAttr, consumer, null, false, hpHealed); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new PokemonHealPhase( consumer.getBattlerIndex(), hpHealed.value, @@ -95,7 +91,7 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { case BerryType.LUM: { if (consumer.status) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( getStatusEffectHealText(consumer.status.effect, getPokemonNameWithAffix(consumer)), ); } @@ -113,7 +109,7 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { const stat: BattleStat = berryType - BerryType.ENIGMA; const statStages = new NumberHolder(1); applyAbAttrs(DoubleBerryEffectAbAttr, consumer, null, false, statStages); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase(consumer.getBattlerIndex(), true, [stat], statStages.value), ); } @@ -130,7 +126,7 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { const randStat = randSeedInt(Stat.SPD, Stat.ATK); const stages = new NumberHolder(2); applyAbAttrs(DoubleBerryEffectAbAttr, consumer, null, false, stages); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase(consumer.getBattlerIndex(), true, [randStat], stages.value), ); } @@ -144,7 +140,7 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { consumer.getMoveset().find(m => m.ppUsed < m.getMovePp()); if (ppRestoreMove) { ppRestoreMove.ppUsed = Math.max(ppRestoreMove.ppUsed - 10, 0); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battle:ppHealBerry", { pokemonNameWithAffix: getPokemonNameWithAffix(consumer), moveName: ppRestoreMove.getName(), diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index f610c745fd2..94d0ae50523 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -1048,7 +1048,7 @@ function ChargeMove(Base: TBase) { * @param target the {@linkcode Pokemon} targeted by this move (optional) */ showChargeText(user: Pokemon, target?: Pokemon): void { - globalScene.queueMessage(this._chargeText + globalScene.phaseManager.queueMessage(this._chargeText .replace("{USER}", getPokemonNameWithAffix(user)) .replace("{TARGET}", getPokemonNameWithAffix(target)) ); @@ -1310,7 +1310,7 @@ export class MessageHeaderAttr extends MoveHeaderAttr { : this.message(user, move); if (message) { - globalScene.queueMessage(message); + globalScene.phaseManager.queueMessage(message); return true; } return false; @@ -1363,7 +1363,7 @@ export class PreMoveMessageAttr extends MoveAttr { ? this.message as string : this.message(user, target, move); if (message) { - globalScene.queueMessage(message, 500); + globalScene.phaseManager.queueMessage(message, 500); return true; } return false; @@ -1620,14 +1620,14 @@ export class SurviveDamageAttr extends ModifiedDamageAttr { export class SplashAttr extends MoveEffectAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - globalScene.queueMessage(i18next.t("moveTriggers:splash")); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:splash")); return true; } } export class CelebrateAttr extends MoveEffectAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - globalScene.queueMessage(i18next.t("moveTriggers:celebrate", { playerName: loggedInUser?.username })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:celebrate", { playerName: loggedInUser?.username })); return true; } } @@ -1677,7 +1677,7 @@ export class RecoilAttr extends MoveEffectAttr { } user.damageAndUpdate(recoilDamage, { result: HitResult.INDIRECT, ignoreSegments: true }); - globalScene.queueMessage(i18next.t("moveTriggers:hitWithRecoil", { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:hitWithRecoil", { pokemonName: getPokemonNameWithAffix(user) })); user.turnData.damageTaken += recoilDamage; return true; @@ -1789,7 +1789,7 @@ export class HalfSacrificialAttr extends MoveEffectAttr { applyAbAttrs(BlockNonDirectDamageAbAttr, user, cancelled); if (!cancelled.value) { user.damageAndUpdate(toDmgValue(user.getMaxHp() / 2), { result: HitResult.INDIRECT, ignoreSegments: true }); - globalScene.queueMessage(i18next.t("moveTriggers:cutHpPowerUpMove", { pokemonName: getPokemonNameWithAffix(user) })); // Queue recoil message + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:cutHpPowerUpMove", { pokemonName: getPokemonNameWithAffix(user) })); // Queue recoil message } return true; } @@ -1890,7 +1890,7 @@ export class HealAttr extends MoveEffectAttr { * This heals the target and shows the appropriate message. */ addHealPhase(target: Pokemon, healRatio: number) { - globalScene.unshiftPhase(new PokemonHealPhase(target.getBattlerIndex(), + globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(target.getBattlerIndex(), toDmgValue(target.getMaxHp() * healRatio), i18next.t("moveTriggers:healHp", { pokemonName: getPokemonNameWithAffix(target) }), true, !this.showAnim)); } @@ -1934,7 +1934,7 @@ export class PartyStatusCureAttr extends MoveEffectAttr { partyPokemon.forEach(p => this.cureStatus(p, user.id)); if (this.message) { - globalScene.queueMessage(this.message); + globalScene.phaseManager.queueMessage(this.message); } return true; @@ -1954,8 +1954,8 @@ export class PartyStatusCureAttr extends MoveEffectAttr { pokemon.updateInfo(); } else { // TODO: Ability displays should be handled by the ability - globalScene.queueAbilityDisplay(pokemon, pokemon.getPassiveAbility()?.id === this.abilityCondition, true); - globalScene.queueAbilityDisplay(pokemon, pokemon.getPassiveAbility()?.id === this.abilityCondition, false); + globalScene.phaseManager.queueAbilityDisplay(pokemon, pokemon.getPassiveAbility()?.id === this.abilityCondition, true); + globalScene.phaseManager.queueAbilityDisplay(pokemon, pokemon.getPassiveAbility()?.id === this.abilityCondition, false); } } } @@ -2021,7 +2021,7 @@ export class SacrificialFullRestoreAttr extends SacrificialAttr { const party = user.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty(); const maxPartyMemberHp = party.map(p => p.getMaxHp()).reduce((maxHp: number, hp: number) => Math.max(hp, maxHp), 0); - globalScene.pushPhase( + globalScene.phaseManager.pushPhase( new PokemonHealPhase( user.getBattlerIndex(), maxPartyMemberHp, @@ -2233,7 +2233,7 @@ export class HitHealAttr extends MoveEffectAttr { message = ""; } } - globalScene.unshiftPhase(new PokemonHealPhase(user.getBattlerIndex(), healAmount, message, false, true)); + globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(user.getBattlerIndex(), healAmount, message, false, true)); return true; } @@ -2565,7 +2565,7 @@ export class StealHeldItemChanceAttr extends MoveEffectAttr { return false; } - globalScene.queueMessage(i18next.t("moveTriggers:stoleItem", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), itemName: stolenItem.type.name })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:stoleItem", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), itemName: stolenItem.type.name })); return true; } @@ -2643,9 +2643,9 @@ export class RemoveHeldItemAttr extends MoveEffectAttr { globalScene.updateModifiers(target.isPlayer()); if (this.berriesOnly) { - globalScene.queueMessage(i18next.t("moveTriggers:incineratedItem", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), itemName: removedItem.type.name })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:incineratedItem", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), itemName: removedItem.type.name })); } else { - globalScene.queueMessage(i18next.t("moveTriggers:knockedOffItem", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), itemName: removedItem.type.name })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:knockedOffItem", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), itemName: removedItem.type.name })); } return true; @@ -2777,7 +2777,7 @@ export class StealEatBerryAttr extends EatBerryAttr { this.chosenBerry = heldBerries[user.randBattleSeedInt(heldBerries.length)]; applyPostItemLostAbAttrs(PostItemLostAbAttr, target, false); const message = i18next.t("battle:stealEatBerry", { pokemonName: user.name, targetName: target.name, berryName: this.chosenBerry.type.name }); - globalScene.queueMessage(message); + globalScene.phaseManager.queueMessage(message); this.reduceBerryModifier(target); this.eatBerry(user, target); @@ -2822,7 +2822,7 @@ export class HealStatusEffectAttr extends MoveEffectAttr { const pokemon = this.selfTarget ? user : target; if (pokemon.status && this.effects.includes(pokemon.status.effect)) { - globalScene.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); + globalScene.phaseManager.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); pokemon.resetStatus(); pokemon.updateInfo(); @@ -3067,13 +3067,13 @@ export class DelayedAttackAttr extends OverrideMoveEffectAttr { if (!virtual) { overridden.value = true; - globalScene.unshiftPhase(new MoveAnimPhase(new MoveChargeAnim(this.chargeAnim, move.id, user))); - globalScene.queueMessage(this.chargeText.replace("{TARGET}", getPokemonNameWithAffix(target)).replace("{USER}", getPokemonNameWithAffix(user))); + globalScene.phaseManager.unshiftPhase(new MoveAnimPhase(new MoveChargeAnim(this.chargeAnim, move.id, user))); + globalScene.phaseManager.queueMessage(this.chargeText.replace("{TARGET}", getPokemonNameWithAffix(target)).replace("{USER}", getPokemonNameWithAffix(user))); user.pushMoveHistory({ move: move.id, targets: [ target.getBattlerIndex() ], result: MoveResult.OTHER }); const side = target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; globalScene.arena.addTag(this.tagType, 3, move.id, user.id, side, false, target.getBattlerIndex()); } else { - globalScene.queueMessage(i18next.t("moveTriggers:tookMoveAttack", { pokemonName: getPokemonNameWithAffix(globalScene.getPokemonById(target.id) ?? undefined), moveName: move.name })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:tookMoveAttack", { pokemonName: getPokemonNameWithAffix(globalScene.getPokemonById(target.id) ?? undefined), moveName: move.name })); } return true; @@ -3103,29 +3103,29 @@ export class AwaitCombinedPledgeAttr extends OverrideMoveEffectAttr { override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (user.turnData.combiningPledge) { // "The two moves have become one!\nIt's a combined move!" - globalScene.queueMessage(i18next.t("moveTriggers:combiningPledge")); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:combiningPledge")); return false; } const overridden = args[0] as BooleanHolder; - const allyMovePhase = globalScene.findPhase((phase) => phase.is("MovePhase") && phase.pokemon.isPlayer() === user.isPlayer()); + const allyMovePhase = globalScene.phaseManager.findPhase((phase) => phase.is("MovePhase") && phase.pokemon.isPlayer() === user.isPlayer()); if (allyMovePhase) { const allyMove = allyMovePhase.move.getMove(); if (allyMove !== move && allyMove.hasAttr(AwaitCombinedPledgeAttr)) { [ user, allyMovePhase.pokemon ].forEach((p) => p.turnData.combiningPledge = move.id); // "{userPokemonName} is waiting for {allyPokemonName}'s move..." - globalScene.queueMessage(i18next.t("moveTriggers:awaitingPledge", { + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:awaitingPledge", { userPokemonName: getPokemonNameWithAffix(user), allyPokemonName: getPokemonNameWithAffix(allyMovePhase.pokemon) })); // Move the ally's MovePhase (if needed) so that the ally moves next - const allyMovePhaseIndex = globalScene.phaseQueue.indexOf(allyMovePhase); - const firstMovePhaseIndex = globalScene.phaseQueue.findIndex((phase) => phase.is("MovePhase")); + const allyMovePhaseIndex = globalScene.phaseManager.phaseQueue.indexOf(allyMovePhase); + const firstMovePhaseIndex = globalScene.phaseManager.phaseQueue.findIndex((phase) => phase.is("MovePhase")); if (allyMovePhaseIndex !== firstMovePhaseIndex) { - globalScene.prependToPhase(globalScene.phaseQueue.splice(allyMovePhaseIndex, 1)[0], MovePhase); + globalScene.phaseManager.prependToPhase(globalScene.phaseManager.phaseQueue.splice(allyMovePhaseIndex, 1)[0], MovePhase); } overridden.value = true; @@ -3207,7 +3207,7 @@ export class StatStageChangeAttr extends MoveEffectAttr { const moveChance = this.getMoveChance(user, target, move, this.selfTarget, true); if (moveChance < 0 || moveChance === 100 || user.randBattleSeedInt(100) < moveChance) { const stages = this.getLevels(user); - globalScene.unshiftPhase(new StatStageChangePhase((this.selfTarget ? user : target).getBattlerIndex(), this.selfTarget, this.stats, stages, this.showMessage)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase((this.selfTarget ? user : target).getBattlerIndex(), this.selfTarget, this.stats, stages, this.showMessage)); return true; } @@ -3432,7 +3432,7 @@ export class AcupressureStatStageChangeAttr extends MoveEffectAttr { const randStats = BATTLE_STATS.filter((s) => target.getStatStage(s) < 6); if (randStats.length > 0) { const boostStat = [ randStats[user.randBattleSeedInt(randStats.length)] ]; - globalScene.unshiftPhase(new StatStageChangePhase(target.getBattlerIndex(), this.selfTarget, boostStat, 2)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(target.getBattlerIndex(), this.selfTarget, boostStat, 2)); return true; } return false; @@ -3510,7 +3510,7 @@ export class OrderUpStatBoostAttr extends MoveEffectAttr { break; } - globalScene.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), this.selfTarget, [ increasedStat ], 1)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), this.selfTarget, [ increasedStat ], 1)); return true; } } @@ -3533,7 +3533,7 @@ export class CopyStatsAttr extends MoveEffectAttr { } target.updateInfo(); user.updateInfo(); - globalScene.queueMessage(i18next.t("moveTriggers:copiedStatChanges", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:copiedStatChanges", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); return true; } @@ -3552,7 +3552,7 @@ export class InvertStatsAttr extends MoveEffectAttr { target.updateInfo(); user.updateInfo(); - globalScene.queueMessage(i18next.t("moveTriggers:invertStats", { pokemonName: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:invertStats", { pokemonName: getPokemonNameWithAffix(target) })); return true; } @@ -3570,10 +3570,10 @@ export class ResetStatsAttr extends MoveEffectAttr { // Target all pokemon on the field when Freezy Frost or Haze are used const activePokemon = globalScene.getField(true); activePokemon.forEach((p) => this.resetStats(p)); - globalScene.queueMessage(i18next.t("moveTriggers:statEliminated")); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:statEliminated")); } else { // Affects only the single target when Clear Smog is used this.resetStats(target); - globalScene.queueMessage(i18next.t("moveTriggers:resetStats", { pokemonName: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:resetStats", { pokemonName: getPokemonNameWithAffix(target) })); } return true; } @@ -3623,9 +3623,9 @@ export class SwapStatStagesAttr extends MoveEffectAttr { user.updateInfo(); if (this.stats.length === 7) { - globalScene.queueMessage(i18next.t("moveTriggers:switchedStatChanges", { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:switchedStatChanges", { pokemonName: getPokemonNameWithAffix(user) })); } else if (this.stats.length === 2) { - globalScene.queueMessage(i18next.t("moveTriggers:switchedTwoStatChanges", { + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:switchedTwoStatChanges", { pokemonName: getPokemonNameWithAffix(user), firstStat: i18next.t(getStatKey(this.stats[0])), secondStat: i18next.t(getStatKey(this.stats[1])) @@ -4227,7 +4227,7 @@ export class PresentPowerAttr extends VariablePowerAttr { // If this move is multi-hit, disable all other hits user.turnData.hitCount = 1; user.turnData.hitsLeft = 1; - globalScene.unshiftPhase(new PokemonHealPhase(target.getBattlerIndex(), + globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(target.getBattlerIndex(), toDmgValue(target.getMaxHp() / 4), i18next.t("moveTriggers:regainedHealth", { pokemonName: getPokemonNameWithAffix(target) }), true)); } @@ -4476,7 +4476,7 @@ export class CueNextRoundAttr extends MoveEffectAttr { } override apply(user: Pokemon, target: Pokemon, move: Move, args?: any[]): boolean { - const nextRoundPhase = globalScene.findPhase(phase => + const nextRoundPhase = globalScene.phaseManager.findPhase(phase => phase.is("MovePhase") && phase.move.moveId === MoveId.ROUND ); @@ -4485,10 +4485,10 @@ export class CueNextRoundAttr extends MoveEffectAttr { } // Update the phase queue so that the next Pokemon using Round moves next - const nextRoundIndex = globalScene.phaseQueue.indexOf(nextRoundPhase); - const nextMoveIndex = globalScene.phaseQueue.findIndex(phase => phase.is("MovePhase")); + const nextRoundIndex = globalScene.phaseManager.phaseQueue.indexOf(nextRoundPhase); + const nextMoveIndex = globalScene.phaseManager.phaseQueue.findIndex(phase => phase.is("MovePhase")); if (nextRoundIndex !== nextMoveIndex) { - globalScene.prependToPhase(globalScene.phaseQueue.splice(nextRoundIndex, 1)[0], MovePhase); + globalScene.phaseManager.prependToPhase(globalScene.phaseManager.phaseQueue.splice(nextRoundIndex, 1)[0], MovePhase); } // Mark the corresponding Pokemon as having "joined the Round" (for doubling power later) @@ -4546,14 +4546,14 @@ export class SpectralThiefAttr extends StatChangeBeforeDmgCalcAttr { */ const availableToSteal = Math.min(statStageValueTarget, 6 - statStageValueUser); - globalScene.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), this.selfTarget, [ s ], availableToSteal)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), this.selfTarget, [ s ], availableToSteal)); target.setStatStage(s, statStageValueTarget - availableToSteal); } } target.updateInfo(); user.updateInfo(); - globalScene.queueMessage(i18next.t("moveTriggers:stealPositiveStats", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:stealPositiveStats", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); return true; } @@ -5368,7 +5368,7 @@ const crashDamageFunc = (user: Pokemon, move: Move) => { } user.damageAndUpdate(toDmgValue(user.getMaxHp() / 2), { result: HitResult.INDIRECT }); - globalScene.queueMessage(i18next.t("moveTriggers:keptGoingAndCrashed", { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:keptGoingAndCrashed", { pokemonName: getPokemonNameWithAffix(user) })); user.turnData.damageTaken += toDmgValue(user.getMaxHp() / 2); return true; @@ -5581,7 +5581,7 @@ export class FallDownAttr extends AddBattlerTagAttr { */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (!target.isGrounded()) { - globalScene.queueMessage(i18next.t("moveTriggers:fallDown", { targetPokemonName: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:fallDown", { targetPokemonName: getPokemonNameWithAffix(target) })); } return super.apply(user, target, move, args); } @@ -5665,12 +5665,12 @@ export class CurseAttr extends MoveEffectAttr { apply(user: Pokemon, target: Pokemon, move:Move, args: any[]): boolean { if (user.getTypes(true).includes(PokemonType.GHOST)) { if (target.getTag(BattlerTagType.CURSED)) { - globalScene.queueMessage(i18next.t("battle:attackFailed")); + globalScene.phaseManager.queueMessage(i18next.t("battle:attackFailed")); return false; } const curseRecoilDamage = Math.max(1, Math.floor(user.getMaxHp() / 2)); user.damageAndUpdate(curseRecoilDamage, { result: HitResult.INDIRECT, ignoreSegments: true }); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battlerTags:cursedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(user), pokemonName: getPokemonNameWithAffix(target) @@ -5680,8 +5680,8 @@ export class CurseAttr extends MoveEffectAttr { target.addTag(BattlerTagType.CURSED, 0, move.id, user.id); return true; } else { - globalScene.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), true, [ Stat.ATK, Stat.DEF ], 1)); - globalScene.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), true, [ Stat.SPD ], -1)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), true, [ Stat.ATK, Stat.DEF ], 1)); + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), true, [ Stat.SPD ], -1)); return true; } } @@ -5745,7 +5745,7 @@ export class ConfuseAttr extends AddBattlerTagAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (!this.selfTarget && target.isSafeguarded(user)) { if (move.category === MoveCategory.STATUS) { - globalScene.queueMessage(i18next.t("moveTriggers:safeguard", { targetName: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:safeguard", { targetName: getPokemonNameWithAffix(target) })); } return false; } @@ -5802,7 +5802,7 @@ export class IgnoreAccuracyAttr extends AddBattlerTagAttr { return false; } - globalScene.queueMessage(i18next.t("moveTriggers:tookAimAtTarget", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:tookAimAtTarget", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); return true; } @@ -5818,7 +5818,7 @@ export class FaintCountdownAttr extends AddBattlerTagAttr { return false; } - globalScene.queueMessage(i18next.t("moveTriggers:faintCountdown", { pokemonName: getPokemonNameWithAffix(target), turnCount: this.turnCountMin - 1 })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:faintCountdown", { pokemonName: getPokemonNameWithAffix(target), turnCount: this.turnCountMin - 1 })); return true; } @@ -6102,7 +6102,7 @@ export class SwapArenaTagsAttr extends MoveEffectAttr { } - globalScene.queueMessage(i18next.t("moveTriggers:swapArenaTags", { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:swapArenaTags", { pokemonName: getPokemonNameWithAffix(user) })); return true; } } @@ -6154,7 +6154,7 @@ export class RevivalBlessingAttr extends MoveEffectAttr { override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { // If user is player, checks if the user has fainted pokemon if (user.isPlayer()) { - globalScene.unshiftPhase(new RevivalBlessingPhase(user)); + globalScene.phaseManager.unshiftPhase(new RevivalBlessingPhase(user)); return true; } else if (user.isEnemy() && user.hasTrainer() && globalScene.getEnemyParty().findIndex((p) => p.isFainted() && !p.isBoss()) > -1) { // If used by an enemy trainer with at least one fainted non-boss Pokemon, this @@ -6164,20 +6164,20 @@ export class RevivalBlessingAttr extends MoveEffectAttr { const slotIndex = globalScene.getEnemyParty().findIndex((p) => pokemon.id === p.id); pokemon.resetStatus(true, false, false, true); pokemon.heal(Math.min(toDmgValue(0.5 * pokemon.getMaxHp()), pokemon.getMaxHp())); - globalScene.queueMessage(i18next.t("moveTriggers:revivalBlessing", { pokemonName: getPokemonNameWithAffix(pokemon) }), 0, true); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:revivalBlessing", { pokemonName: getPokemonNameWithAffix(pokemon) }), 0, true); const allyPokemon = user.getAlly(); if (globalScene.currentBattle.double && globalScene.getEnemyParty().length > 1 && !isNullOrUndefined(allyPokemon)) { // Handle cases where revived pokemon needs to get switched in on same turn if (allyPokemon.isFainted() || allyPokemon === pokemon) { // Enemy switch phase should be removed and replaced with the revived pkmn switching in - globalScene.tryRemovePhase((phase: SwitchSummonPhase) => phase.is("SwitchSummonPhase") && phase.getPokemon() === pokemon); + globalScene.phaseManager.tryRemovePhase((phase: SwitchSummonPhase) => phase.is("SwitchSummonPhase") && phase.getPokemon() === pokemon); // If the pokemon being revived was alive earlier in the turn, cancel its move // (revived pokemon can't move in the turn they're brought back) - globalScene.findPhase((phase: MovePhase) => phase.pokemon === pokemon)?.cancel(); + globalScene.phaseManager.findPhase((phase: MovePhase) => phase.pokemon === pokemon)?.cancel(); if (user.fieldPosition === FieldPosition.CENTER) { user.setFieldPosition(FieldPosition.LEFT); } - globalScene.unshiftPhase(new SwitchSummonPhase(SwitchType.SWITCH, allyPokemon.getFieldIndex(), slotIndex, false, false)); + globalScene.phaseManager.unshiftPhase(new SwitchSummonPhase(SwitchType.SWITCH, allyPokemon.getFieldIndex(), slotIndex, false, false)); } } return true; @@ -6255,7 +6255,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { if (this.switchType === SwitchType.FORCE_SWITCH) { switchOutTarget.leaveField(true); const slotIndex = eligibleNewIndices[user.randBattleSeedInt(eligibleNewIndices.length)]; - globalScene.prependToPhase( + globalScene.phaseManager.prependToPhase( new SwitchSummonPhase( this.switchType, switchOutTarget.getFieldIndex(), @@ -6267,7 +6267,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { ); } else { switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - globalScene.prependToPhase( + globalScene.phaseManager.prependToPhase( new SwitchPhase( this.switchType, switchOutTarget.getFieldIndex(), @@ -6298,7 +6298,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { if (this.switchType === SwitchType.FORCE_SWITCH) { switchOutTarget.leaveField(true); const slotIndex = eligibleNewIndices[user.randBattleSeedInt(eligibleNewIndices.length)]; - globalScene.prependToPhase( + globalScene.phaseManager.prependToPhase( new SwitchSummonPhase( this.switchType, switchOutTarget.getFieldIndex(), @@ -6310,7 +6310,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { ); } else { switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - globalScene.prependToPhase( + globalScene.phaseManager.prependToPhase( new SwitchSummonPhase( this.switchType, switchOutTarget.getFieldIndex(), @@ -6339,7 +6339,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { if (switchOutTarget.hp > 0) { switchOutTarget.leaveField(false); - globalScene.queueMessage(i18next.t("moveTriggers:fled", { pokemonName: getPokemonNameWithAffix(switchOutTarget) }), null, true, 500); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:fled", { pokemonName: getPokemonNameWithAffix(switchOutTarget) }), null, true, 500); // in double battles redirect potential moves off fled pokemon if (globalScene.currentBattle.double && !isNullOrUndefined(allyPokemon)) { @@ -6351,13 +6351,13 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { globalScene.clearEnemyHeldItemModifiers(switchOutTarget); if (!allyPokemon?.isActive(true) && switchOutTarget.hp) { - globalScene.pushPhase(new BattleEndPhase(false)); + globalScene.phaseManager.pushPhase(new BattleEndPhase(false)); if (globalScene.gameMode.hasRandomBiomes || globalScene.isNewBiome()) { - globalScene.pushPhase(new SelectBiomePhase()); + globalScene.phaseManager.pushPhase(new SelectBiomePhase()); } - globalScene.pushPhase(new NewBattlePhase()); + globalScene.phaseManager.pushPhase(new NewBattlePhase()); } } @@ -6525,7 +6525,7 @@ export class CopyTypeAttr extends MoveEffectAttr { user.summonData.types = targetTypes; user.updateInfo(); - globalScene.queueMessage(i18next.t("moveTriggers:copyType", { pokemonName: getPokemonNameWithAffix(user), targetPokemonName: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:copyType", { pokemonName: getPokemonNameWithAffix(user), targetPokemonName: getPokemonNameWithAffix(target) })); return true; } @@ -6556,7 +6556,7 @@ export class CopyBiomeTypeAttr extends MoveEffectAttr { user.summonData.types = [ typeChange ]; user.updateInfo(); - globalScene.queueMessage(i18next.t("moveTriggers:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), typeName: i18next.t(`pokemonInfo:Type.${PokemonType[typeChange]}`) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), typeName: i18next.t(`pokemonInfo:Type.${PokemonType[typeChange]}`) })); return true; } @@ -6661,7 +6661,7 @@ export class ChangeTypeAttr extends MoveEffectAttr { target.summonData.types = [ this.type ]; target.updateInfo(); - globalScene.queueMessage(i18next.t("moveTriggers:transformedIntoType", { pokemonName: getPokemonNameWithAffix(target), typeName: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:transformedIntoType", { pokemonName: getPokemonNameWithAffix(target), typeName: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) })); return true; } @@ -6684,7 +6684,7 @@ export class AddTypeAttr extends MoveEffectAttr { target.summonData.addedType = this.type; target.updateInfo(); - globalScene.queueMessage(i18next.t("moveTriggers:addType", { typeName: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`), pokemonName: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:addType", { typeName: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`), pokemonName: getPokemonNameWithAffix(target) })); return true; } @@ -6706,7 +6706,7 @@ export class FirstMoveTypeAttr extends MoveEffectAttr { const firstMoveType = target.getMoveset()[0].getMove().type; user.summonData.types = [ firstMoveType ]; - globalScene.queueMessage(i18next.t("battle:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), type: i18next.t(`pokemonInfo:Type.${PokemonType[firstMoveType]}`) })); + globalScene.phaseManager.queueMessage(i18next.t("battle:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), type: i18next.t(`pokemonInfo:Type.${PokemonType[firstMoveType]}`) })); return true; } @@ -6725,7 +6725,7 @@ class CallMoveAttr extends OverrideMoveEffectAttr { const replaceMoveTarget = move.moveTarget === MoveTarget.NEAR_OTHER ? MoveTarget.NEAR_ENEMY : undefined; const moveTargets = getMoveTargets(user, move.id, replaceMoveTarget); if (moveTargets.targets.length === 0) { - globalScene.queueMessage(i18next.t("battle:attackFailed")); + globalScene.phaseManager.queueMessage(i18next.t("battle:attackFailed")); console.log("CallMoveAttr failed due to no targets."); return false; } @@ -6733,8 +6733,8 @@ class CallMoveAttr extends OverrideMoveEffectAttr { ? moveTargets.targets : [ this.hasTarget ? target.getBattlerIndex() : moveTargets.targets[user.randBattleSeedInt(moveTargets.targets.length)] ]; // account for Mirror Move having a target already user.getMoveQueue().push({ move: move.id, targets: targets, virtual: true, ignorePP: true }); - globalScene.unshiftPhase(new LoadMoveAnimPhase(move.id)); - globalScene.unshiftPhase(new MovePhase(user, targets, new PokemonMove(move.id, 0, 0, true), true, true)); + globalScene.phaseManager.unshiftPhase(new LoadMoveAnimPhase(move.id)); + globalScene.phaseManager.unshiftPhase(new MovePhase(user, targets, new PokemonMove(move.id, 0, 0, true), true, true)); return true; } } @@ -6962,8 +6962,8 @@ export class NaturePowerAttr extends OverrideMoveEffectAttr { } user.getMoveQueue().push({ move: moveId, targets: [ target.getBattlerIndex() ], ignorePP: true }); - globalScene.unshiftPhase(new LoadMoveAnimPhase(moveId)); - globalScene.unshiftPhase(new MovePhase(user, [ target.getBattlerIndex() ], new PokemonMove(moveId, 0, 0, true), true)); + globalScene.phaseManager.unshiftPhase(new LoadMoveAnimPhase(moveId)); + globalScene.phaseManager.unshiftPhase(new MovePhase(user, [ target.getBattlerIndex() ], new PokemonMove(moveId, 0, 0, true), true)); return true; } } @@ -7044,13 +7044,13 @@ export class RepeatMoveAttr extends MoveEffectAttr { } } - globalScene.queueMessage(i18next.t("moveTriggers:instructingMove", { + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:instructingMove", { userPokemonName: getPokemonNameWithAffix(user), targetPokemonName: getPokemonNameWithAffix(target) })); target.getMoveQueue().unshift({ move: lastMove.move, targets: moveTargets, ignorePP: false }); target.turnData.extraTurns++; - globalScene.appendToPhase(new MovePhase(target, moveTargets, movesetMove), MoveEndPhase); + globalScene.phaseManager.appendToPhase(new MovePhase(target, moveTargets, movesetMove), MoveEndPhase); return true; } @@ -7165,7 +7165,7 @@ export class ReducePpMoveAttr extends MoveEffectAttr { const message = i18next.t("battle:ppReduced", { targetName: getPokemonNameWithAffix(target), moveName: movesetMove.getName(), reduction: (movesetMove.ppUsed) - lastPpUsed }); globalScene.eventTarget.dispatchEvent(new MoveUsedEvent(target.id, movesetMove.getMove(), movesetMove.ppUsed)); - globalScene.queueMessage(message); + globalScene.phaseManager.queueMessage(message); return true; } @@ -7276,7 +7276,7 @@ export class MovesetCopyMoveAttr extends OverrideMoveEffectAttr { user.summonData.moveset = user.getMoveset().slice(0); user.summonData.moveset[thisMoveIndex] = new PokemonMove(copiedMove.id, 0, 0); - globalScene.queueMessage(i18next.t("moveTriggers:copiedMove", { pokemonName: getPokemonNameWithAffix(user), moveName: copiedMove.name })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:copiedMove", { pokemonName: getPokemonNameWithAffix(user), moveName: copiedMove.name })); return true; } @@ -7326,7 +7326,7 @@ export class SketchAttr extends MoveEffectAttr { user.setMove(sketchIndex, sketchedMove.id); - globalScene.queueMessage(i18next.t("moveTriggers:sketchedMove", { pokemonName: getPokemonNameWithAffix(user), moveName: sketchedMove.name })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:sketchedMove", { pokemonName: getPokemonNameWithAffix(user), moveName: sketchedMove.name })); return true; } @@ -7381,9 +7381,9 @@ export class AbilityChangeAttr extends MoveEffectAttr { globalScene.triggerPokemonFormChange(moveTarget, SpeciesFormChangeRevertWeatherFormTrigger); if (moveTarget.breakIllusion()) { - globalScene.queueMessage(i18next.t("abilityTriggers:illusionBreak", { pokemonName: getPokemonNameWithAffix(moveTarget) })); + globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:illusionBreak", { pokemonName: getPokemonNameWithAffix(moveTarget) })); } - globalScene.queueMessage(i18next.t("moveTriggers:acquiredAbility", { pokemonName: getPokemonNameWithAffix(moveTarget), abilityName: allAbilities[this.ability].name })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:acquiredAbility", { pokemonName: getPokemonNameWithAffix(moveTarget), abilityName: allAbilities[this.ability].name })); moveTarget.setTempAbility(allAbilities[this.ability]); globalScene.triggerPokemonFormChange(moveTarget, SpeciesFormChangeRevertWeatherFormTrigger); return true; @@ -7408,13 +7408,13 @@ export class AbilityCopyAttr extends MoveEffectAttr { return false; } - globalScene.queueMessage(i18next.t("moveTriggers:copiedTargetAbility", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), abilityName: allAbilities[target.getAbility().id].name })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:copiedTargetAbility", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), abilityName: allAbilities[target.getAbility().id].name })); user.setTempAbility(target.getAbility()); const ally = user.getAlly(); if (this.copyToPartner && globalScene.currentBattle?.double && !isNullOrUndefined(ally) && ally.hp) { // TODO is this the best way to check that the ally is active? - globalScene.queueMessage(i18next.t("moveTriggers:copiedTargetAbility", { pokemonName: getPokemonNameWithAffix(ally), targetName: getPokemonNameWithAffix(target), abilityName: allAbilities[target.getAbility().id].name })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:copiedTargetAbility", { pokemonName: getPokemonNameWithAffix(ally), targetName: getPokemonNameWithAffix(target), abilityName: allAbilities[target.getAbility().id].name })); ally.setTempAbility(target.getAbility()); } @@ -7447,7 +7447,7 @@ export class AbilityGiveAttr extends MoveEffectAttr { return false; } - globalScene.queueMessage(i18next.t("moveTriggers:acquiredAbility", { pokemonName: getPokemonNameWithAffix(target), abilityName: allAbilities[user.getAbility().id].name })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:acquiredAbility", { pokemonName: getPokemonNameWithAffix(target), abilityName: allAbilities[user.getAbility().id].name })); target.setTempAbility(user.getAbility()); @@ -7467,7 +7467,7 @@ export class SwitchAbilitiesAttr extends MoveEffectAttr { const tempAbility = user.getAbility(); - globalScene.queueMessage(i18next.t("moveTriggers:swappedAbilitiesWithTarget", { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:swappedAbilitiesWithTarget", { pokemonName: getPokemonNameWithAffix(user) })); user.setTempAbility(target.getAbility()); target.setTempAbility(tempAbility); @@ -7497,7 +7497,7 @@ export class SuppressAbilitiesAttr extends MoveEffectAttr { return false; } - globalScene.queueMessage(i18next.t("moveTriggers:suppressAbilities", { pokemonName: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:suppressAbilities", { pokemonName: getPokemonNameWithAffix(target) })); target.suppressAbility(); @@ -7550,9 +7550,9 @@ export class TransformAttr extends MoveEffectAttr { return false; } - globalScene.unshiftPhase(new PokemonTransformPhase(user.getBattlerIndex(), target.getBattlerIndex())); + globalScene.phaseManager.unshiftPhase(new PokemonTransformPhase(user.getBattlerIndex(), target.getBattlerIndex())); - globalScene.queueMessage(i18next.t("moveTriggers:transformedIntoTarget", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:transformedIntoTarget", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); return true; } @@ -7589,7 +7589,7 @@ export class SwapStatAttr extends MoveEffectAttr { user.setStat(this.stat, target.getStat(this.stat, false), false); target.setStat(this.stat, temp, false); - globalScene.queueMessage(i18next.t("moveTriggers:switchedStat", { + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:switchedStat", { pokemonName: getPokemonNameWithAffix(user), stat: i18next.t(getStatKey(this.stat)), })); @@ -7635,7 +7635,7 @@ export class ShiftStatAttr extends MoveEffectAttr { user.setStat(this.statToSwitch, secondStat, false); user.setStat(this.statToSwitchWith, firstStat, false); - globalScene.queueMessage(i18next.t("moveTriggers:shiftedStats", { + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:shiftedStats", { pokemonName: getPokemonNameWithAffix(user), statToSwitch: i18next.t(getStatKey(this.statToSwitch)), statToSwitchWith: i18next.t(getStatKey(this.statToSwitchWith)) @@ -7694,7 +7694,7 @@ export class AverageStatsAttr extends MoveEffectAttr { target.setStat(s, avg, false); } - globalScene.queueMessage(i18next.t(this.msgKey, { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.phaseManager.queueMessage(i18next.t(this.msgKey, { pokemonName: getPokemonNameWithAffix(user) })); return true; } @@ -7709,7 +7709,7 @@ export class MoneyAttr extends MoveEffectAttr { apply(user: Pokemon, target: Pokemon, move: Move): boolean { globalScene.currentBattle.moneyScattered += globalScene.getWaveMoneyAmount(0.2); - globalScene.queueMessage(i18next.t("moveTriggers:coinsScatteredEverywhere")); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:coinsScatteredEverywhere")); return true; } } @@ -7733,7 +7733,7 @@ export class DestinyBondAttr extends MoveEffectAttr { * @returns true */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - globalScene.queueMessage(`${i18next.t("moveTriggers:tryingToTakeFoeDown", { pokemonName: getPokemonNameWithAffix(user) })}`); + globalScene.phaseManager.queueMessage(`${i18next.t("moveTriggers:tryingToTakeFoeDown", { pokemonName: getPokemonNameWithAffix(user) })}`); user.addTag(BattlerTagType.DESTINY_BOND, undefined, move.id, user.id); return true; } @@ -7847,12 +7847,12 @@ export class AfterYouAttr extends MoveEffectAttr { * @returns true */ override apply(user: Pokemon, target: Pokemon, _move: Move, _args: any[]): boolean { - globalScene.queueMessage(i18next.t("moveTriggers:afterYou", { targetName: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:afterYou", { targetName: getPokemonNameWithAffix(target) })); //Will find next acting phase of the targeted pokémon, delete it and queue it next on successful delete. - const nextAttackPhase = globalScene.findPhase((phase) => phase.pokemon === target); - if (nextAttackPhase && globalScene.tryRemovePhase((phase: MovePhase) => phase.pokemon === target)) { - globalScene.prependToPhase(new MovePhase(target, [ ...nextAttackPhase.targets ], nextAttackPhase.move), MovePhase); + const nextAttackPhase = globalScene.phaseManager.findPhase((phase) => phase.pokemon === target); + if (nextAttackPhase && globalScene.phaseManager.tryRemovePhase((phase: MovePhase) => phase.pokemon === target)) { + globalScene.phaseManager.prependToPhase(new MovePhase(target, [ ...nextAttackPhase.targets ], nextAttackPhase.move), MovePhase); } return true; @@ -7875,19 +7875,19 @@ export class ForceLastAttr extends MoveEffectAttr { * @returns true */ override apply(user: Pokemon, target: Pokemon, _move: Move, _args: any[]): boolean { - globalScene.queueMessage(i18next.t("moveTriggers:forceLast", { targetPokemonName: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:forceLast", { targetPokemonName: getPokemonNameWithAffix(target) })); - const targetMovePhase = globalScene.findPhase((phase) => phase.pokemon === target); - if (targetMovePhase && !targetMovePhase.isForcedLast() && globalScene.tryRemovePhase((phase: MovePhase) => phase.pokemon === target)) { + const targetMovePhase = globalScene.phaseManager.findPhase((phase) => phase.pokemon === target); + if (targetMovePhase && !targetMovePhase.isForcedLast() && globalScene.phaseManager.tryRemovePhase((phase: MovePhase) => phase.pokemon === target)) { // Finding the phase to insert the move in front of - // Either the end of the turn or in front of another, slower move which has also been forced last - const prependPhase = globalScene.findPhase((phase) => + const prependPhase = globalScene.phaseManager.findPhase((phase) => [ MovePhase, MoveEndPhase ].every(cls => !(phase instanceof cls)) || (phase.is("MovePhase")) && phaseForcedSlower(phase, target, !!globalScene.arena.getTag(ArenaTagType.TRICK_ROOM)) ); if (prependPhase) { - globalScene.phaseQueue.splice( - globalScene.phaseQueue.indexOf(prependPhase), + globalScene.phaseManager.phaseQueue.splice( + globalScene.phaseManager.phaseQueue.indexOf(prependPhase), 0, new MovePhase(target, [ ...targetMovePhase.targets ], targetMovePhase.move, false, false, false, true) ); @@ -7920,7 +7920,7 @@ const failIfDampCondition: MoveConditionFunc = (user, target, move) => { globalScene.getField(true).map(p=>applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled)); // Queue a message if an ability prevented usage of the move if (cancelled.value) { - globalScene.queueMessage(i18next.t("moveTriggers:cannotUseMove", { pokemonName: getPokemonNameWithAffix(user), moveName: move.name })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:cannotUseMove", { pokemonName: getPokemonNameWithAffix(user), moveName: move.name })); } return !cancelled.value; }; @@ -7929,7 +7929,7 @@ const userSleptOrComatoseCondition: MoveConditionFunc = (user: Pokemon, target: const targetSleptOrComatoseCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => target.status?.effect === StatusEffect.SLEEP || target.hasAbility(AbilityId.COMATOSE); -const failIfLastCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => globalScene.phaseQueue.find(phase => phase.is("MovePhase")) !== undefined; +const failIfLastCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => globalScene.phaseManager.phaseQueue.find(phase => phase.is("MovePhase")) !== undefined; const failIfLastInPartyCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => { const party: Pokemon[] = user.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty(); @@ -8107,7 +8107,7 @@ export class ResistLastMoveTypeAttr extends MoveEffectAttr { } const type = validTypes[user.randBattleSeedInt(validTypes.length)]; user.summonData.types = [ type ]; - globalScene.queueMessage(i18next.t("battle:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), type: toReadableString(PokemonType[type]) })); + globalScene.phaseManager.queueMessage(i18next.t("battle:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), type: toReadableString(PokemonType[type]) })); user.updateInfo(); return true; @@ -8166,7 +8166,7 @@ export class ExposedMoveAttr extends AddBattlerTagAttr { return false; } - globalScene.queueMessage(i18next.t("moveTriggers:exposedMove", { pokemonName: getPokemonNameWithAffix(user), targetPokemonName: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:exposedMove", { pokemonName: getPokemonNameWithAffix(user), targetPokemonName: getPokemonNameWithAffix(target) })); return true; } @@ -8802,7 +8802,7 @@ export function initMoves() { .reflectable(), new SelfStatusMove(MoveId.BELLY_DRUM, PokemonType.NORMAL, -1, 10, -1, 0, 2) .attr(CutHpStatStageBoostAttr, [ Stat.ATK ], 12, 2, (user) => { - globalScene.queueMessage(i18next.t("moveTriggers:cutOwnHpAndMaximizedStat", { pokemonName: getPokemonNameWithAffix(user), statName: i18next.t(getStatKey(Stat.ATK)) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:cutOwnHpAndMaximizedStat", { pokemonName: getPokemonNameWithAffix(user), statName: i18next.t(getStatKey(Stat.ATK)) })); }), new AttackMove(MoveId.SLUDGE_BOMB, PokemonType.POISON, MoveCategory.SPECIAL, 90, 100, 10, 30, 0, 2) .attr(StatusEffectAttr, StatusEffect.POISON) @@ -10370,7 +10370,7 @@ export function initMoves() { .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(AddBattlerTagAttr, BattlerTagType.BURNED_UP, true, false) .attr(RemoveTypeAttr, PokemonType.FIRE, (user) => { - globalScene.queueMessage(i18next.t("moveTriggers:burnedItselfOut", { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:burnedItselfOut", { pokemonName: getPokemonNameWithAffix(user) })); }), new StatusMove(MoveId.SPEED_SWAP, PokemonType.PSYCHIC, -1, 10, -1, 0, 7) .attr(SwapStatAttr, Stat.SPD) @@ -11154,7 +11154,7 @@ export function initMoves() { }) .attr(AddBattlerTagAttr, BattlerTagType.DOUBLE_SHOCKED, true, false) .attr(RemoveTypeAttr, PokemonType.ELECTRIC, (user) => { - globalScene.queueMessage(i18next.t("moveTriggers:usedUpAllElectricity", { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:usedUpAllElectricity", { pokemonName: getPokemonNameWithAffix(user) })); }), new AttackMove(MoveId.GIGATON_HAMMER, PokemonType.STEEL, MoveCategory.PHYSICAL, 160, 100, 5, -1, 0, 9) .makesContact(false) diff --git a/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts b/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts index ae5cd2b2a99..5f69090064f 100644 --- a/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts +++ b/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts @@ -182,7 +182,7 @@ export const ATrainersTestEncounter: MysteryEncounter = MysteryEncounterBuilder. async () => { const encounter = globalScene.currentBattle.mysteryEncounter!; // Full heal party - globalScene.unshiftPhase(new PartyHealPhase(true)); + globalScene.phaseManager.unshiftPhase(new PartyHealPhase(true)); const eggOptions: IEggOptions = { pulled: false, diff --git a/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts b/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts index b14caa4e2c3..e23b5024599 100644 --- a/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts +++ b/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts @@ -237,7 +237,7 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = MysteryEncounterBuilde tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { queueEncounterMessage(`${namespace}:option.1.boss_enraged`); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase(pokemon.getBattlerIndex(), true, statChangesForBattle, 1), ); }, diff --git a/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts b/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts index 2f4dfaa5f99..87cd8f207c4 100644 --- a/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts +++ b/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts @@ -137,7 +137,7 @@ export const AnOfferYouCantRefuseEncounter: MysteryEncounter = MysteryEncounterB }) .withOptionPhase(async () => { // Give the player a Shiny Charm - globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes.SHINY_CHARM)); + globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes.SHINY_CHARM)); leaveEncounterWithoutBattle(true); }) .build(), diff --git a/src/data/mystery-encounters/encounters/berries-abound-encounter.ts b/src/data/mystery-encounters/encounters/berries-abound-encounter.ts index 7f54e51565e..3de16c7086e 100644 --- a/src/data/mystery-encounters/encounters/berries-abound-encounter.ts +++ b/src/data/mystery-encounters/encounters/berries-abound-encounter.ts @@ -237,7 +237,7 @@ export const BerriesAboundEncounter: MysteryEncounter = MysteryEncounterBuilder. config.pokemonConfigs![0].tags = [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON]; config.pokemonConfigs![0].mysteryEncounterBattleEffects = (pokemon: Pokemon) => { queueEncounterMessage(`${namespace}:option.2.boss_enraged`); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase(pokemon.getBattlerIndex(), true, statChangesForBattle, 1), ); }; diff --git a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts index c080122f922..cd8289163eb 100644 --- a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts +++ b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts @@ -766,7 +766,7 @@ function doBugTypeMoveTutor(): Promise { // Option select complete, handle if they are learning a move if (result && result.selectedOptionIndex < moveOptions.length) { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new LearnMovePhase(result.selectedPokemonIndex, moveOptions[result.selectedOptionIndex].moveId), ); } diff --git a/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts b/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts index c7f9a99569d..66cd1ae0509 100644 --- a/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts +++ b/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts @@ -176,7 +176,7 @@ export const DancingLessonsEncounter: MysteryEncounter = MysteryEncounterBuilder tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { queueEncounterMessage(`${namespace}:option.1.boss_enraged`); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase( pokemon.getBattlerIndex(), true, @@ -245,7 +245,7 @@ export const DancingLessonsEncounter: MysteryEncounter = MysteryEncounterBuilder const onPokemonSelected = (pokemon: PlayerPokemon) => { encounter.setDialogueToken("selectedPokemon", pokemon.getNameToRender()); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new LearnMovePhase(globalScene.getPlayerParty().indexOf(pokemon), MoveId.REVELATION_DANCE), ); diff --git a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts index c54cb232087..1385e9c5a75 100644 --- a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts +++ b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts @@ -165,7 +165,7 @@ export const DarkDealEncounter: MysteryEncounter = MysteryEncounterBuilder.withE .withOptionPhase(async () => { // Give the player 5 Rogue Balls const encounter = globalScene.currentBattle.mysteryEncounter!; - globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes.ROGUE_BALL)); + globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes.ROGUE_BALL)); // Start encounter with random legendary (7-10 starter strength) that has level additive // If this is a mono-type challenge, always ensure the required type is filtered for diff --git a/src/data/mystery-encounters/encounters/delibirdy-encounter.ts b/src/data/mystery-encounters/encounters/delibirdy-encounter.ts index 8d3d30bcd66..c321b5f9674 100644 --- a/src/data/mystery-encounters/encounters/delibirdy-encounter.ts +++ b/src/data/mystery-encounters/encounters/delibirdy-encounter.ts @@ -65,10 +65,10 @@ const doEventReward = () => { return !(existingCharm && existingCharm.getStackCount() >= existingCharm.getMaxStackCount()); }); if (candidates.length > 0) { - globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes[randSeedItem(candidates)])); + globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes[randSeedItem(candidates)])); } else { // At max stacks, give a Voucher instead - globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes.VOUCHER)); + globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes.VOUCHER)); } } }; @@ -181,7 +181,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with ); doEventReward(); } else { - globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes.AMULET_COIN)); + globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes.AMULET_COIN)); doEventReward(); } @@ -266,7 +266,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with ); doEventReward(); } else { - globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes.CANDY_JAR)); + globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes.CANDY_JAR)); doEventReward(); } } else { @@ -288,7 +288,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with ); doEventReward(); } else { - globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes.BERRY_POUCH)); + globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes.BERRY_POUCH)); doEventReward(); } } @@ -372,7 +372,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with ); doEventReward(); } else { - globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes.HEALING_CHARM)); + globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes.HEALING_CHARM)); doEventReward(); } diff --git a/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts b/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts index 872e6300a29..ced04ce224d 100644 --- a/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts +++ b/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts @@ -92,7 +92,7 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w gender: Gender.MALE, tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.SPDEF, Stat.SPD], 1), ); }, @@ -103,7 +103,7 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w gender: Gender.FEMALE, tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.SPDEF, Stat.SPD], 1), ); }, diff --git a/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts b/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts index ecc2e17a06f..6df8ca8b167 100644 --- a/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts +++ b/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts @@ -76,7 +76,9 @@ export const FightOrFlightEncounter: MysteryEncounter = MysteryEncounterBuilder. queueEncounterMessage(`${namespace}:option.1.stat_boost`); // Randomly boost 1 stat 2 stages // Cannot boost Spd, Acc, or Evasion - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [randSeedInt(4, 1)], 2)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), true, [randSeedInt(4, 1)], 2), + ); }, }, ], diff --git a/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts b/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts index 7694f62eac4..42bfe76d98e 100644 --- a/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts +++ b/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts @@ -411,13 +411,13 @@ function summonPlayerPokemonAnimation(pokemon: PlayerPokemon): Promise { pokemon.resetSummonData(); globalScene.time.delayedCall(1000, () => { if (pokemon.isShiny()) { - globalScene.unshiftPhase(new ShinySparklePhase(pokemon.getBattlerIndex())); + globalScene.phaseManager.unshiftPhase(new ShinySparklePhase(pokemon.getBattlerIndex())); } pokemon.resetTurnData(); globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true); - globalScene.pushPhase(new PostSummonPhase(pokemon.getBattlerIndex())); + globalScene.phaseManager.pushPhase(new PostSummonPhase(pokemon.getBattlerIndex())); resolve(); }); }, diff --git a/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts b/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts index 9f699f7d045..42167d240f9 100644 --- a/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts +++ b/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts @@ -189,8 +189,8 @@ export const MysteriousChestEncounter: MysteryEncounter = MysteryEncounterBuilde const allowedPokemon = globalScene.getPokemonAllowedInBattle(); if (allowedPokemon.length === 0) { // If there are no longer any legal pokemon in the party, game over. - globalScene.clearPhaseQueue(); - globalScene.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.unshiftPhase(new GameOverPhase()); } else { // Show which Pokemon was KOed, then start battle against Gimmighoul await transitionMysteryEncounterIntroVisuals(true, true, 500); diff --git a/src/data/mystery-encounters/encounters/safari-zone-encounter.ts b/src/data/mystery-encounters/encounters/safari-zone-encounter.ts index 7a12c86edff..54e15dcb102 100644 --- a/src/data/mystery-encounters/encounters/safari-zone-encounter.ts +++ b/src/data/mystery-encounters/encounters/safari-zone-encounter.ts @@ -276,7 +276,7 @@ async function summonSafariPokemon() { const encounter = globalScene.currentBattle.mysteryEncounter!; // Message pokemon remaining encounter.setDialogueToken("remainingCount", encounter.misc.safariPokemonRemaining); - globalScene.queueMessage(getEncounterText(`${namespace}:safari.remaining_count`) ?? "", null, true); + globalScene.phaseManager.queueMessage(getEncounterText(`${namespace}:safari.remaining_count`) ?? "", null, true); // Generate pokemon using safariPokemonRemaining so they are always the same pokemon no matter how many turns are taken // Safari pokemon roll twice on shiny and HA chances, but are otherwise normal @@ -325,7 +325,7 @@ async function summonSafariPokemon() { encounter.misc.pokemon = pokemon; encounter.misc.safariPokemonRemaining -= 1; - globalScene.unshiftPhase(new SummonPhase(0, false)); + globalScene.phaseManager.unshiftPhase(new SummonPhase(0, false)); encounter.setDialogueToken("pokemonName", getPokemonNameWithAffix(pokemon)); @@ -336,7 +336,7 @@ async function summonSafariPokemon() { const ivScannerModifier = globalScene.findModifier(m => m instanceof IvScannerModifier); if (ivScannerModifier) { - globalScene.pushPhase(new ScanIvsPhase(pokemon.getBattlerIndex())); + globalScene.phaseManager.pushPhase(new ScanIvsPhase(pokemon.getBattlerIndex())); } } @@ -559,7 +559,7 @@ async function doEndTurn(cursorIndex: number) { leaveEncounterWithoutBattle(true); } } else { - globalScene.queueMessage(getEncounterText(`${namespace}:safari.watching`) ?? "", 0, null, 1000); + globalScene.phaseManager.queueMessage(getEncounterText(`${namespace}:safari.watching`) ?? "", 0, null, 1000); initSubsequentOptionSelect({ overrideOptions: safariZoneGameOptions, startingCursorIndex: cursorIndex, diff --git a/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts b/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts index 196d27c3f30..a0898f7cfec 100644 --- a/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts +++ b/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts @@ -155,7 +155,7 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = MysteryEncounterBuil async () => { // Fall asleep waiting for Snorlax // Full heal party - globalScene.unshiftPhase(new PartyHealPhase(true)); + globalScene.phaseManager.unshiftPhase(new PartyHealPhase(true)); queueEncounterMessage(`${namespace}:option.2.rest_result`); leaveEncounterWithoutBattle(); }, diff --git a/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts b/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts index f6bf5575120..b101837adb9 100644 --- a/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts +++ b/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts @@ -227,7 +227,9 @@ async function doBiomeTransitionDialogueAndBattleInit() { tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { queueEncounterMessage(`${namespace}:boss_enraged`); - globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, statChangesForBattle, 1)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), true, statChangesForBattle, 1), + ); }, }, ], diff --git a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts index 5c3a4dd1a81..fdfcc8f2f13 100644 --- a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts @@ -658,8 +658,8 @@ function onGameOver() { globalScene.playBgm(globalScene.arena.bgm); // Clear any leftover battle phases - globalScene.clearPhaseQueue(); - globalScene.clearPhaseQueueSplice(); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.clearPhaseQueueSplice(); // Return enemy Pokemon const pokemon = globalScene.getEnemyPokemon(); diff --git a/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts b/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts index 33f43617913..e2b6d62745b 100644 --- a/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts @@ -116,7 +116,7 @@ export const TheStrongStuffEncounter: MysteryEncounter = MysteryEncounterBuilder tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { queueEncounterMessage(`${namespace}:option.2.stat_boost`); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.DEF, Stat.SPDEF], 1), ); }, diff --git a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts index 0776d89ed63..05e036e9189 100644 --- a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts @@ -143,7 +143,7 @@ export const TheWinstrateChallengeEncounter: MysteryEncounter = MysteryEncounter }, async () => { // Refuse the challenge, they full heal the party and give the player a Rarer Candy - globalScene.unshiftPhase(new PartyHealPhase(true)); + globalScene.phaseManager.unshiftPhase(new PartyHealPhase(true)); setEncounterRewards({ guaranteedModifierTypeFuncs: [modifierTypes.RARER_CANDY], fillRemaining: false, @@ -209,7 +209,7 @@ function endTrainerBattleAndShowDialogue(): Promise { for (const pokemon of playerField) { pokemon.lapseTag(BattlerTagType.COMMANDED); } - playerField.forEach((_, p) => globalScene.unshiftPhase(new ReturnPhase(p))); + playerField.forEach((_, p) => globalScene.phaseManager.unshiftPhase(new ReturnPhase(p))); for (const pokemon of globalScene.getPlayerParty()) { // Only trigger form change when Eiscue is in Noice form @@ -227,7 +227,7 @@ function endTrainerBattleAndShowDialogue(): Promise { applyPostBattleInitAbAttrs(PostBattleInitAbAttr, pokemon); } - globalScene.unshiftPhase(new ShowTrainerPhase()); + globalScene.phaseManager.unshiftPhase(new ShowTrainerPhase()); // Hide the trainer and init next battle const trainer = globalScene.currentBattle.trainer; // Unassign previous trainer from battle so it isn't destroyed before animation completes diff --git a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts index e51a8554120..e917574a065 100644 --- a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts +++ b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts @@ -103,7 +103,7 @@ export const UncommonBreedEncounter: MysteryEncounter = MysteryEncounterBuilder. tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { queueEncounterMessage(`${namespace}:option.1.stat_boost`); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase(pokemon.getBattlerIndex(), true, statChangesForBattle, 1), ); }, diff --git a/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts b/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts index 296d94093d9..e1055f57496 100644 --- a/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts @@ -51,7 +51,7 @@ function getTextWithDialogueTokens(keyOrString: string): string | null { */ export function queueEncounterMessage(contentKey: string): void { const text: string | null = getEncounterText(contentKey); - globalScene.queueMessage(text ?? "", null, true); + globalScene.phaseManager.queueMessage(text ?? "", null, true); } /** diff --git a/src/data/mystery-encounters/utils/encounter-phase-utils.ts b/src/data/mystery-encounters/utils/encounter-phase-utils.ts index 5736835d98a..c566ed68476 100644 --- a/src/data/mystery-encounters/utils/encounter-phase-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-phase-utils.ts @@ -428,7 +428,7 @@ export async function initBattleWithEnemyConfig(partyConfig: EnemyPartyConfig): console.log("Moveset:", moveset); }); - globalScene.pushPhase(new MysteryEncounterBattlePhase(partyConfig.disableSwitch)); + globalScene.phaseManager.pushPhase(new MysteryEncounterBattlePhase(partyConfig.disableSwitch)); await Promise.all(loadEnemyAssets); battle.enemyParty.forEach((enemyPokemon_2, e_1) => { @@ -480,7 +480,7 @@ export function updatePlayerMoney(changeValue: number, playSound = true, showMes } if (showMessage) { if (changeValue < 0) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("mysteryEncounterMessages:paid_money", { amount: -changeValue, }), @@ -488,7 +488,7 @@ export function updatePlayerMoney(changeValue: number, playSound = true, showMes true, ); } else { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("mysteryEncounterMessages:receive_money", { amount: changeValue, }), @@ -767,9 +767,9 @@ export function setEncounterRewards( } if (customShopRewards) { - globalScene.unshiftPhase(new SelectModifierPhase(0, undefined, customShopRewards)); + globalScene.phaseManager.unshiftPhase(new SelectModifierPhase(0, undefined, customShopRewards)); } else { - globalScene.tryRemovePhase(p => p.is("MysteryEncounterRewardsPhase")); + globalScene.phaseManager.tryRemovePhase(p => p.is("MysteryEncounterRewardsPhase")); } if (eggRewards) { @@ -807,7 +807,7 @@ export function setEncounterExp(participantId: number | number[], baseExpValue: const participantIds = Array.isArray(participantId) ? participantId : [participantId]; globalScene.currentBattle.mysteryEncounter!.doEncounterExp = () => { - globalScene.unshiftPhase(new PartyExpPhase(baseExpValue, useWaveIndex, new Set(participantIds))); + globalScene.phaseManager.unshiftPhase(new PartyExpPhase(baseExpValue, useWaveIndex, new Set(participantIds))); return true; }; @@ -829,7 +829,7 @@ export class OptionSelectSettings { * @param optionSelectSettings */ export function initSubsequentOptionSelect(optionSelectSettings: OptionSelectSettings) { - globalScene.pushPhase(new MysteryEncounterPhase(optionSelectSettings)); + globalScene.phaseManager.pushPhase(new MysteryEncounterPhase(optionSelectSettings)); } /** @@ -843,8 +843,8 @@ export function leaveEncounterWithoutBattle( encounterMode: MysteryEncounterMode = MysteryEncounterMode.NO_BATTLE, ) { globalScene.currentBattle.mysteryEncounter!.encounterMode = encounterMode; - globalScene.clearPhaseQueue(); - globalScene.clearPhaseQueueSplice(); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.clearPhaseQueueSplice(); handleMysteryEncounterVictory(addHealPhase); } @@ -857,8 +857,8 @@ export function handleMysteryEncounterVictory(addHealPhase = false, doNotContinu const allowedPkm = globalScene.getPlayerParty().filter(pkm => pkm.isAllowedInBattle()); if (allowedPkm.length === 0) { - globalScene.clearPhaseQueue(); - globalScene.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.unshiftPhase(new GameOverPhase()); return; } @@ -869,8 +869,8 @@ export function handleMysteryEncounterVictory(addHealPhase = false, doNotContinu return; } if (encounter.encounterMode === MysteryEncounterMode.NO_BATTLE) { - globalScene.pushPhase(new MysteryEncounterRewardsPhase(addHealPhase)); - globalScene.pushPhase(new EggLapsePhase()); + globalScene.phaseManager.pushPhase(new MysteryEncounterRewardsPhase(addHealPhase)); + globalScene.phaseManager.pushPhase(new EggLapsePhase()); } else if ( !globalScene .getEnemyParty() @@ -878,15 +878,15 @@ export function handleMysteryEncounterVictory(addHealPhase = false, doNotContinu encounter.encounterMode !== MysteryEncounterMode.TRAINER_BATTLE ? p.isOnField() : !p?.isFainted(true), ) ) { - globalScene.pushPhase(new BattleEndPhase(true)); + globalScene.phaseManager.pushPhase(new BattleEndPhase(true)); if (encounter.encounterMode === MysteryEncounterMode.TRAINER_BATTLE) { - globalScene.pushPhase(new TrainerVictoryPhase()); + globalScene.phaseManager.pushPhase(new TrainerVictoryPhase()); } if (globalScene.gameMode.isEndless || !globalScene.gameMode.isWaveFinal(globalScene.currentBattle.waveIndex)) { - globalScene.pushPhase(new MysteryEncounterRewardsPhase(addHealPhase)); + globalScene.phaseManager.pushPhase(new MysteryEncounterRewardsPhase(addHealPhase)); if (!encounter.doContinueEncounter) { // Only lapse eggs once for multi-battle encounters - globalScene.pushPhase(new EggLapsePhase()); + globalScene.phaseManager.pushPhase(new EggLapsePhase()); } } } @@ -900,8 +900,8 @@ export function handleMysteryEncounterBattleFailed(addHealPhase = false, doNotCo const allowedPkm = globalScene.getPlayerParty().filter(pkm => pkm.isAllowedInBattle()); if (allowedPkm.length === 0) { - globalScene.clearPhaseQueue(); - globalScene.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.unshiftPhase(new GameOverPhase()); return; } @@ -912,14 +912,14 @@ export function handleMysteryEncounterBattleFailed(addHealPhase = false, doNotCo return; } if (encounter.encounterMode !== MysteryEncounterMode.NO_BATTLE) { - globalScene.pushPhase(new BattleEndPhase(false)); + globalScene.phaseManager.pushPhase(new BattleEndPhase(false)); } - globalScene.pushPhase(new MysteryEncounterRewardsPhase(addHealPhase)); + globalScene.phaseManager.pushPhase(new MysteryEncounterRewardsPhase(addHealPhase)); if (!encounter.doContinueEncounter) { // Only lapse eggs once for multi-battle encounters - globalScene.pushPhase(new EggLapsePhase()); + globalScene.phaseManager.pushPhase(new EggLapsePhase()); } } @@ -1004,12 +1004,14 @@ export function handleMysteryEncounterBattleStartEffects() { } else { source = globalScene.getEnemyField()[0]; } - // @ts-ignore: source cannot be undefined - globalScene.pushPhase(new MovePhase(source, effect.targets, effect.move, effect.followUp, effect.ignorePp)); + globalScene.phaseManager.pushPhase( + // @ts-ignore: source cannot be undefined + new MovePhase(source, effect.targets, effect.move, effect.followUp, effect.ignorePp), + ); }); // Pseudo turn end phase to reset flinch states, Endure, etc. - globalScene.pushPhase(new MysteryEncounterBattleStartCleanupPhase()); + globalScene.phaseManager.pushPhase(new MysteryEncounterBattleStartCleanupPhase()); encounter.startOfBattleEffectsComplete = true; } diff --git a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts index d4102c045c0..757d8173820 100644 --- a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts @@ -675,7 +675,7 @@ export async function catchPokemon( if (!globalScene.getEnemyParty().some(p => p.id === pokemon.id)) { globalScene.getEnemyParty().push(pokemon); } - globalScene.unshiftPhase(new VictoryPhase(pokemon.id, true)); + globalScene.phaseManager.unshiftPhase(new VictoryPhase(pokemon.id, true)); globalScene.pokemonInfoContainer.hide(); if (pokeball) { removePb(pokeball); diff --git a/src/field/arena.ts b/src/field/arena.ts index 2ec98c53afa..1c54382c89b 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -297,8 +297,8 @@ export class Arena { */ trySetWeatherOverride(weather: WeatherType): boolean { this.weather = new Weather(weather, 0); - globalScene.unshiftPhase(new CommonAnimPhase(undefined, undefined, CommonAnim.SUNNY + (weather - 1))); - globalScene.queueMessage(getWeatherStartMessage(weather)!); // TODO: is this bang correct? + globalScene.phaseManager.unshiftPhase(new CommonAnimPhase(undefined, undefined, CommonAnim.SUNNY + (weather - 1))); + globalScene.phaseManager.queueMessage(getWeatherStartMessage(weather)!); // TODO: is this bang correct? return true; } @@ -328,10 +328,10 @@ export class Arena { this.weather?.isImmutable() && ![WeatherType.HARSH_SUN, WeatherType.HEAVY_RAIN, WeatherType.STRONG_WINDS, WeatherType.NONE].includes(weather) ) { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new CommonAnimPhase(undefined, undefined, CommonAnim.SUNNY + (oldWeatherType - 1), true), ); - globalScene.queueMessage(getLegendaryWeatherContinuesMessage(oldWeatherType)!); + globalScene.phaseManager.queueMessage(getLegendaryWeatherContinuesMessage(oldWeatherType)!); return false; } @@ -348,10 +348,12 @@ export class Arena { ); // TODO: is this bang correct? if (this.weather) { - globalScene.unshiftPhase(new CommonAnimPhase(undefined, undefined, CommonAnim.SUNNY + (weather - 1), true)); - globalScene.queueMessage(getWeatherStartMessage(weather)!); // TODO: is this bang correct? + globalScene.phaseManager.unshiftPhase( + new CommonAnimPhase(undefined, undefined, CommonAnim.SUNNY + (weather - 1), true), + ); + globalScene.phaseManager.queueMessage(getWeatherStartMessage(weather)!); // TODO: is this bang correct? } else { - globalScene.queueMessage(getWeatherClearMessage(oldWeatherType)!); // TODO: is this bang correct? + globalScene.phaseManager.queueMessage(getWeatherClearMessage(oldWeatherType)!); // TODO: is this bang correct? } globalScene @@ -431,11 +433,13 @@ export class Arena { if (this.terrain) { if (!ignoreAnim) { - globalScene.unshiftPhase(new CommonAnimPhase(undefined, undefined, CommonAnim.MISTY_TERRAIN + (terrain - 1))); + globalScene.phaseManager.unshiftPhase( + new CommonAnimPhase(undefined, undefined, CommonAnim.MISTY_TERRAIN + (terrain - 1)), + ); } - globalScene.queueMessage(getTerrainStartMessage(terrain)!); // TODO: is this bang correct? + globalScene.phaseManager.queueMessage(getTerrainStartMessage(terrain)!); // TODO: is this bang correct? } else { - globalScene.queueMessage(getTerrainClearMessage(oldTerrainType)!); // TODO: is this bang correct? + globalScene.phaseManager.queueMessage(getTerrainClearMessage(oldTerrainType)!); // TODO: is this bang correct? } globalScene diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index d26dfd193f9..a6d41074700 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1298,7 +1298,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return false; } // During the Pokemon's MoveEffect phase, the offset is removed to put the Pokemon "in focus" - const currentPhase = globalScene.getCurrentPhase(); + const currentPhase = globalScene.phaseManager.getCurrentPhase(); return !(currentPhase?.is("MoveEffectPhase") && currentPhase.getPokemon() === this); } @@ -2537,7 +2537,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ) { multiplier /= 2; if (!simulated) { - globalScene.queueMessage(i18next.t("weather:strongWindsEffectMessage")); + globalScene.phaseManager.queueMessage(i18next.t("weather:strongWindsEffectMessage")); } } return multiplier as TypeDamageMultiplier; @@ -4011,8 +4011,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * * Once the MoveEffectPhase is over (and calls it's .end() function, shiftPhase() will reset the PhaseQueueSplice via clearPhaseQueueSplice() ) */ - globalScene.setPhaseQueueSplice(); - globalScene.unshiftPhase(new FaintPhase(this.getBattlerIndex(), preventEndure)); + globalScene.phaseManager.setPhaseQueueSplice(); + globalScene.phaseManager.unshiftPhase(new FaintPhase(this.getBattlerIndex(), preventEndure)); this.destroySubstitute(); this.lapseTag(BattlerTagType.COMMANDED); } @@ -4049,7 +4049,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ): number { const isIndirectDamage = [HitResult.INDIRECT, HitResult.INDIRECT_KO].includes(result); const damagePhase = new DamageAnimPhase(this.getBattlerIndex(), damage, result as DamageResult, isCritical); - globalScene.unshiftPhase(damagePhase); + globalScene.phaseManager.unshiftPhase(damagePhase); if (this.switchOutStatus && source) { damage = 0; } @@ -4615,7 +4615,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { : i18next.t("abilityTriggers:moveImmunity", { pokemonNameWithAffix: getPokemonNameWithAffix(this), }); - globalScene.queueMessage(message); + globalScene.phaseManager.queueMessage(message); } /** @@ -4735,7 +4735,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (sourcePokemon && sourcePokemon !== this && this.isSafeguarded(sourcePokemon)) { if (!quiet) { - globalScene.queueMessage(i18next.t("moveTriggers:safeguard", { targetName: getPokemonNameWithAffix(this) })); + globalScene.phaseManager.queueMessage( + i18next.t("moveTriggers:safeguard", { targetName: getPokemonNameWithAffix(this) }), + ); } return false; } @@ -4764,7 +4766,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * cancel the attack's subsequent hits. */ if (effect === StatusEffect.SLEEP || effect === StatusEffect.FREEZE) { - const currentPhase = globalScene.getCurrentPhase(); + const currentPhase = globalScene.phaseManager.getCurrentPhase(); if (currentPhase?.is("MoveEffectPhase") && currentPhase.getUserPokemon() === this) { this.turnData.hitCount = 1; this.turnData.hitsLeft = 1; @@ -4775,7 +4777,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (overrideStatus) { this.resetStatus(false); } - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new ObtainStatusEffectPhase(this.getBattlerIndex(), effect, turnsRemaining, sourceText, sourcePokemon), ); return true; @@ -4825,7 +4827,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } if (asPhase) { - globalScene.unshiftPhase(new ResetStatusPhase(this, confusion, reloadAssets)); + globalScene.phaseManager.unshiftPhase(new ResetStatusPhase(this, confusion, reloadAssets)); } else { this.clearStatus(confusion, reloadAssets); } @@ -5632,7 +5634,7 @@ export class PlayerPokemon extends Pokemon { this.getFieldIndex(), (slotIndex: number, _option: PartyOption) => { if (slotIndex >= globalScene.currentBattle.getBattlerCount() && slotIndex < 6) { - globalScene.prependToPhase( + globalScene.phaseManager.prependToPhase( new SwitchSummonPhase(switchType, this.getFieldIndex(), slotIndex, false), MoveEndPhase, ); @@ -5997,7 +5999,9 @@ export class PlayerPokemon extends Pokemon { const newPartyMemberIndex = globalScene.getPlayerParty().indexOf(this); pokemon .getMoveset(true) - .map((m: PokemonMove) => globalScene.unshiftPhase(new LearnMovePhase(newPartyMemberIndex, m.getMove().id))); + .map((m: PokemonMove) => + globalScene.phaseManager.unshiftPhase(new LearnMovePhase(newPartyMemberIndex, m.getMove().id)), + ); pokemon.destroy(); this.updateFusionPalette(); } @@ -6639,7 +6643,7 @@ export class EnemyPokemon extends Pokemon { stages++; } - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase(this.getBattlerIndex(), true, [boostedStat!], stages, true, true), ); this.bossSegmentIndex--; diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index f8c71b2c891..e1517b3bcde 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -1548,7 +1548,7 @@ export class SurviveDamageModifier extends PokemonHeldItemModifier { if (!surviveDamage.value && pokemon.randBattleSeedInt(10) < this.getStackCount()) { surviveDamage.value = true; - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("modifier:surviveDamageApply", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), typeName: this.type.name, @@ -1598,7 +1598,7 @@ export class BypassSpeedChanceModifier extends PokemonHeldItemModifier { const hasQuickClaw = this.type instanceof PokemonHeldItemModifierType && this.type.id === "QUICK_CLAW"; if (isCommandFight && hasQuickClaw) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("modifier:bypassSpeedChanceApply", { pokemonName: getPokemonNameWithAffix(pokemon), itemName: i18next.t("modifierType:ModifierType.QUICK_CLAW.name"), @@ -1684,7 +1684,7 @@ export class TurnHealModifier extends PokemonHeldItemModifier { */ override apply(pokemon: Pokemon): boolean { if (!pokemon.isFullHp()) { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new PokemonHealPhase( pokemon.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() / 16) * this.stackCount, @@ -1782,7 +1782,7 @@ export class HitHealModifier extends PokemonHeldItemModifier { override apply(pokemon: Pokemon): boolean { if (pokemon.turnData.totalDamageDealt && !pokemon.isFullHp()) { // TODO: this shouldn't be undefined AFAIK - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new PokemonHealPhase( pokemon.getBattlerIndex(), toDmgValue(pokemon.turnData.totalDamageDealt / 8) * this.stackCount, @@ -1950,7 +1950,7 @@ export class PokemonInstantReviveModifier extends PokemonHeldItemModifier { */ override apply(pokemon: Pokemon): boolean { // Restore the Pokemon to half HP - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new PokemonHealPhase( pokemon.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() / 2), @@ -2012,7 +2012,7 @@ export class ResetNegativeStatStageModifier extends PokemonHeldItemModifier { } if (statRestored) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("modifier:resetNegativeStatStageApply", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), typeName: this.type.name, @@ -2323,7 +2323,7 @@ export class PokemonLevelIncrementModifier extends ConsumablePokemonModifier { playerPokemon.addFriendship(FRIENDSHIP_GAIN_FROM_RARE_CANDY); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new LevelUpPhase( globalScene.getPlayerParty().indexOf(playerPokemon), playerPokemon.level - levelCount.value, @@ -2344,7 +2344,7 @@ export class TmModifier extends ConsumablePokemonModifier { * @returns always `true` */ override apply(playerPokemon: PlayerPokemon): boolean { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new LearnMovePhase(globalScene.getPlayerParty().indexOf(playerPokemon), this.type.moveId, LearnMoveType.TM), ); @@ -2367,7 +2367,7 @@ export class RememberMoveModifier extends ConsumablePokemonModifier { * @returns always `true` */ override apply(playerPokemon: PlayerPokemon, cost?: number): boolean { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new LearnMovePhase( globalScene.getPlayerParty().indexOf(playerPokemon), playerPokemon.getLearnableLevelMoves()[this.levelMoveIndex], @@ -2410,7 +2410,9 @@ export class EvolutionItemModifier extends ConsumablePokemonModifier { } if (matchingEvolution) { - globalScene.unshiftPhase(new EvolutionPhase(playerPokemon, matchingEvolution, playerPokemon.level - 1)); + globalScene.phaseManager.unshiftPhase( + new EvolutionPhase(playerPokemon, matchingEvolution, playerPokemon.level - 1), + ); return true; } @@ -3008,7 +3010,7 @@ export class MoneyInterestModifier extends PersistentModifier { moneyAmount: formattedMoneyAmount, typeName: this.type.name, }); - globalScene.queueMessage(message, undefined, true); + globalScene.phaseManager.queueMessage(message, undefined, true); return true; } @@ -3262,7 +3264,7 @@ export abstract class HeldItemTransferModifier extends PokemonHeldItemModifier { } for (const mt of transferredModifierTypes) { - globalScene.queueMessage(this.getTransferMessage(pokemon, targetPokemon, mt)); + globalScene.phaseManager.queueMessage(this.getTransferMessage(pokemon, targetPokemon, mt)); } return !!transferredModifierTypes.length; @@ -3572,7 +3574,7 @@ export class EnemyTurnHealModifier extends EnemyPersistentModifier { */ override apply(enemyPokemon: Pokemon): boolean { if (!enemyPokemon.isFullHp()) { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new PokemonHealPhase( enemyPokemon.getBattlerIndex(), Math.max(Math.floor(enemyPokemon.getMaxHp() / (100 / this.healPercent)) * this.stackCount, 1), @@ -3668,7 +3670,7 @@ export class EnemyStatusEffectHealChanceModifier extends EnemyPersistentModifier */ override apply(enemyPokemon: Pokemon): boolean { if (enemyPokemon.status && Phaser.Math.RND.realInRange(0, 1) < this.chance * this.getStackCount()) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( getStatusEffectHealText(enemyPokemon.status.effect, getPokemonNameWithAffix(enemyPokemon)), ); enemyPokemon.resetStatus(); diff --git a/src/phase-manager.ts b/src/phase-manager.ts new file mode 100644 index 00000000000..8869f4b27b7 --- /dev/null +++ b/src/phase-manager.ts @@ -0,0 +1,311 @@ +import { HideAbilityPhase } from "./phases/hide-ability-phase"; +import { ShowAbilityPhase } from "./phases/show-ability-phase"; +import { TurnInitPhase } from "./phases/turn-init-phase"; +import type { Phase } from "#app/phase"; +import type { default as Pokemon } from "#app/field/pokemon"; +import type { Constructor } from "#app/utils/common"; +import { MessagePhase } from "./phases/message-phase"; +import { globalScene } from "#app/global-scene"; + +/** + * Manager for phases used by battle scene. + * + * *This file must not be imported or used directly. The manager is exclusively used by the battle scene and is not intended for external use.* + */ + +export class PhaseManager { + /** PhaseQueue: dequeue/remove the first element to get the next phase */ + public phaseQueue: Phase[] = []; + public conditionalQueue: Array<[() => boolean, Phase]> = []; + /** PhaseQueuePrepend: is a temp storage of what will be added to PhaseQueue */ + private phaseQueuePrepend: Phase[] = []; + + /** overrides default of inserting phases to end of phaseQueuePrepend array. Useful for inserting Phases "out of order" */ + private phaseQueuePrependSpliceIndex = -1; + private nextCommandPhaseQueue: Phase[] = []; + + private currentPhase: Phase | null = null; + private standbyPhase: Phase | null = null; + + /* Phase Functions */ + getCurrentPhase(): Phase | null { + return this.currentPhase; + } + + getStandbyPhase(): Phase | null { + return this.standbyPhase; + } + + /** + * Adds a phase to the conditional queue and ensures it is executed only when the specified condition is met. + * + * This method allows deferring the execution of a phase until certain conditions are met, which is useful for handling + * situations like abilities and entry hazards that depend on specific game states. + * + * @param phase - The phase to be added to the conditional queue. + * @param condition - A function that returns a boolean indicating whether the phase should be executed. + * + */ + pushConditionalPhase(phase: Phase, condition: () => boolean): void { + this.conditionalQueue.push([condition, phase]); + } + + /** + * Adds a phase to nextCommandPhaseQueue, as long as boolean passed in is false + * @param phase {@linkcode Phase} the phase to add + * @param defer boolean on which queue to add to, defaults to false, and adds to phaseQueue + */ + pushPhase(phase: Phase, defer = false): void { + (!defer ? this.phaseQueue : this.nextCommandPhaseQueue).push(phase); + } + + /** + * Adds Phase(s) to the end of phaseQueuePrepend, or at phaseQueuePrependSpliceIndex + * @param phases {@linkcode Phase} the phase(s) to add + */ + unshiftPhase(...phases: Phase[]): void { + if (this.phaseQueuePrependSpliceIndex === -1) { + this.phaseQueuePrepend.push(...phases); + } else { + this.phaseQueuePrepend.splice(this.phaseQueuePrependSpliceIndex, 0, ...phases); + } + } + + /** + * Clears the phaseQueue + */ + clearPhaseQueue(): void { + this.phaseQueue.splice(0, this.phaseQueue.length); + } + + /** + * Clears all phase-related stuff, including all phase queues, the current and standby phases, and a splice index + */ + clearAllPhases(): void { + for (const queue of [this.phaseQueue, this.phaseQueuePrepend, this.conditionalQueue, this.nextCommandPhaseQueue]) { + queue.splice(0, queue.length); + } + this.currentPhase = null; + this.standbyPhase = null; + this.clearPhaseQueueSplice(); + } + + /** + * Used by function unshiftPhase(), sets index to start inserting at current length instead of the end of the array, useful if phaseQueuePrepend gets longer with Phases + */ + setPhaseQueueSplice(): void { + this.phaseQueuePrependSpliceIndex = this.phaseQueuePrepend.length; + } + + /** + * Resets phaseQueuePrependSpliceIndex to -1, implies that calls to unshiftPhase will insert at end of phaseQueuePrepend + */ + clearPhaseQueueSplice(): void { + this.phaseQueuePrependSpliceIndex = -1; + } + + /** + * Is called by each Phase implementations "end()" by default + * We dump everything from phaseQueuePrepend to the start of of phaseQueue + * then removes first Phase and starts it + */ + shiftPhase(): void { + if (this.standbyPhase) { + this.currentPhase = this.standbyPhase; + this.standbyPhase = null; + return; + } + + if (this.phaseQueuePrependSpliceIndex > -1) { + this.clearPhaseQueueSplice(); + } + if (this.phaseQueuePrepend.length) { + while (this.phaseQueuePrepend.length) { + const poppedPhase = this.phaseQueuePrepend.pop(); + if (poppedPhase) { + this.phaseQueue.unshift(poppedPhase); + } + } + } + if (!this.phaseQueue.length) { + this.populatePhaseQueue(); + // Clear the conditionalQueue if there are no phases left in the phaseQueue + this.conditionalQueue = []; + } + + this.currentPhase = this.phaseQueue.shift() ?? null; + + // Check if there are any conditional phases queued + if (this.conditionalQueue?.length) { + // Retrieve the first conditional phase from the queue + const conditionalPhase = this.conditionalQueue.shift(); + // Evaluate the condition associated with the phase + if (conditionalPhase?.[0]()) { + // If the condition is met, add the phase to the phase queue + this.pushPhase(conditionalPhase[1]); + } else if (conditionalPhase) { + // If the condition is not met, re-add the phase back to the front of the conditional queue + this.conditionalQueue.unshift(conditionalPhase); + } else { + console.warn("condition phase is undefined/null!", conditionalPhase); + } + } + + if (this.currentPhase) { + console.log(`%cStart Phase ${this.currentPhase.constructor.name}`, "color:green;"); + this.currentPhase.start(); + } + } + + overridePhase(phase: Phase): boolean { + if (this.standbyPhase) { + return false; + } + + this.standbyPhase = this.currentPhase; + this.currentPhase = phase; + console.log(`%cStart Phase ${phase.constructor.name}`, "color:green;"); + phase.start(); + + return true; + } + + /** + * Find a specific {@linkcode Phase} in the phase queue. + * + * @param phaseFilter filter function to use to find the wanted phase + * @returns the found phase or undefined if none found + */ + findPhase

(phaseFilter: (phase: P) => boolean): P | undefined { + return this.phaseQueue.find(phaseFilter) as P; + } + + tryReplacePhase(phaseFilter: (phase: Phase) => boolean, phase: Phase): boolean { + const phaseIndex = this.phaseQueue.findIndex(phaseFilter); + if (phaseIndex > -1) { + this.phaseQueue[phaseIndex] = phase; + return true; + } + return false; + } + + tryRemovePhase(phaseFilter: (phase: Phase) => boolean): boolean { + const phaseIndex = this.phaseQueue.findIndex(phaseFilter); + if (phaseIndex > -1) { + this.phaseQueue.splice(phaseIndex, 1); + return true; + } + return false; + } + + /** + * Will search for a specific phase in {@linkcode phaseQueuePrepend} via filter, and remove the first result if a match is found. + * @param phaseFilter filter function + */ + tryRemoveUnshiftedPhase(phaseFilter: (phase: Phase) => boolean): boolean { + const phaseIndex = this.phaseQueuePrepend.findIndex(phaseFilter); + if (phaseIndex > -1) { + this.phaseQueuePrepend.splice(phaseIndex, 1); + return true; + } + return false; + } + + /** + * Tries to add the input phase to index before target phase in the phaseQueue, else simply calls unshiftPhase() + * @param phase {@linkcode Phase} the phase to be added + * @param targetPhase {@linkcode Phase} the type of phase to search for in phaseQueue + * @returns boolean if a targetPhase was found and added + */ + prependToPhase(phase: Phase | Phase[], targetPhase: Constructor): boolean { + if (!Array.isArray(phase)) { + phase = [phase]; + } + const targetIndex = this.phaseQueue.findIndex(ph => ph instanceof targetPhase); + + if (targetIndex !== -1) { + this.phaseQueue.splice(targetIndex, 0, ...phase); + return true; + } + this.unshiftPhase(...phase); + return false; + } + + /** + * Attempt to add the input phase(s) to index after target phase in the {@linkcode phaseQueue}, else simply calls {@linkcode unshiftPhase()} + * @param phase - The phase(s) to be added + * @param targetPhase - The type of phase to search for in {@linkcode phaseQueue} + * @returns `true` if a `targetPhase` was found to append to + */ + appendToPhase(phase: Phase | Phase[], targetPhase: Constructor): boolean { + if (!Array.isArray(phase)) { + phase = [phase]; + } + const targetIndex = this.phaseQueue.findIndex(ph => ph instanceof targetPhase); + + if (targetIndex !== -1 && this.phaseQueue.length > targetIndex) { + this.phaseQueue.splice(targetIndex + 1, 0, ...phase); + return true; + } + this.unshiftPhase(...phase); + return false; + } + + /** + * Adds a MessagePhase, either to PhaseQueuePrepend or nextCommandPhaseQueue + * @param message - string for MessagePhase + * @param callbackDelay - optional param for MessagePhase constructor + * @param prompt - optional param for MessagePhase constructor + * @param promptDelay - optional param for MessagePhase constructor + * @param defer - Whether to allow the phase to be deferred + * + * @see {@linkcode MessagePhase} for more details on the parameters + */ + queueMessage( + message: string, + callbackDelay?: number | null, + prompt?: boolean | null, + promptDelay?: number | null, + defer?: boolean | null, + ) { + const phase = new MessagePhase(message, callbackDelay, prompt, promptDelay); + if (!defer) { + // adds to the end of PhaseQueuePrepend + this.unshiftPhase(phase); + } else { + //remember that pushPhase adds it to nextCommandPhaseQueue + this.pushPhase(phase); + } + } + + /** + * Queues an ability bar flyout phase + * @param pokemon The pokemon who has the ability + * @param passive Whether the ability is a passive + * @param show Whether to show or hide the bar + */ + public queueAbilityDisplay(pokemon: Pokemon, passive: boolean, show: boolean): void { + this.unshiftPhase(show ? new ShowAbilityPhase(pokemon.getBattlerIndex(), passive) : new HideAbilityPhase()); + this.clearPhaseQueueSplice(); + } + + /** + * Hides the ability bar if it is currently visible + */ + public hideAbilityBar(): void { + if (globalScene.abilityBar.isVisible()) { + this.unshiftPhase(new HideAbilityPhase()); + } + } + + /** + * Moves everything from nextCommandPhaseQueue to phaseQueue (keeping order) + */ + private populatePhaseQueue(): void { + if (this.nextCommandPhaseQueue.length) { + this.phaseQueue.push(...this.nextCommandPhaseQueue); + this.nextCommandPhaseQueue.splice(0, this.nextCommandPhaseQueue.length); + } + this.phaseQueue.push(new TurnInitPhase()); + } +} diff --git a/src/phase.ts b/src/phase.ts index 9e2468ebdff..5e81679d29e 100644 --- a/src/phase.ts +++ b/src/phase.ts @@ -5,7 +5,7 @@ export abstract class Phase { start() {} end() { - globalScene.shiftPhase(); + globalScene.phaseManager.shiftPhase(); } /** diff --git a/src/phases/attempt-capture-phase.ts b/src/phases/attempt-capture-phase.ts index 6c2f5f4dd76..09eeb6e0a19 100644 --- a/src/phases/attempt-capture-phase.ts +++ b/src/phases/attempt-capture-phase.ts @@ -257,7 +257,7 @@ export class AttemptCapturePhase extends PokemonPhase { null, () => { const end = () => { - globalScene.unshiftPhase(new VictoryPhase(this.battlerIndex)); + globalScene.phaseManager.unshiftPhase(new VictoryPhase(this.battlerIndex)); globalScene.pokemonInfoContainer.hide(); this.removePb(); this.end(); diff --git a/src/phases/attempt-run-phase.ts b/src/phases/attempt-run-phase.ts index ced81567c43..2bf6ba2fb5b 100644 --- a/src/phases/attempt-run-phase.ts +++ b/src/phases/attempt-run-phase.ts @@ -39,7 +39,7 @@ export class AttemptRunPhase extends PokemonPhase { enemyField.forEach(enemyPokemon => applyPreLeaveFieldAbAttrs(PreLeaveFieldAbAttr, enemyPokemon)); globalScene.playSound("se/flee"); - globalScene.queueMessage(i18next.t("battle:runAwaySuccess"), null, true, 500); + globalScene.phaseManager.queueMessage(i18next.t("battle:runAwaySuccess"), null, true, 500); globalScene.tweens.add({ targets: [globalScene.arenaEnemy, enemyField].flat(), @@ -60,16 +60,16 @@ export class AttemptRunPhase extends PokemonPhase { enemyPokemon.trySetStatus(StatusEffect.FAINT); }); - globalScene.pushPhase(new BattleEndPhase(false)); + globalScene.phaseManager.pushPhase(new BattleEndPhase(false)); if (globalScene.gameMode.hasRandomBiomes || globalScene.isNewBiome()) { - globalScene.pushPhase(new SelectBiomePhase()); + globalScene.phaseManager.pushPhase(new SelectBiomePhase()); } - globalScene.pushPhase(new NewBattlePhase()); + globalScene.phaseManager.pushPhase(new NewBattlePhase()); } else { playerPokemon.turnData.failedRunAway = true; - globalScene.queueMessage(i18next.t("battle:runAwayCannotEscape"), null, true, 500); + globalScene.phaseManager.queueMessage(i18next.t("battle:runAwayCannotEscape"), null, true, 500); } this.end(); diff --git a/src/phases/battle-end-phase.ts b/src/phases/battle-end-phase.ts index 96f6d02b1fc..4e3543be03a 100644 --- a/src/phases/battle-end-phase.ts +++ b/src/phases/battle-end-phase.ts @@ -19,7 +19,7 @@ export class BattleEndPhase extends BattlePhase { super.start(); // cull any extra `BattleEnd` phases from the queue. - globalScene.phaseQueue = globalScene.phaseQueue.filter(phase => { + globalScene.phaseManager.phaseQueue = globalScene.phaseManager.phaseQueue.filter(phase => { if (phase.is("BattleEndPhase")) { this.isVictory ||= phase.isVictory; return false; @@ -28,7 +28,7 @@ export class BattleEndPhase extends BattlePhase { }); // `phaseQueuePrepend` is private, so we have to use this inefficient loop. while ( - globalScene.tryRemoveUnshiftedPhase(phase => { + globalScene.phaseManager.tryRemoveUnshiftedPhase(phase => { if (phase.is("BattleEndPhase")) { this.isVictory ||= phase.isVictory; return true; @@ -55,8 +55,8 @@ export class BattleEndPhase extends BattlePhase { // Endless graceful end if (globalScene.gameMode.isEndless && globalScene.currentBattle.waveIndex >= 5850) { - globalScene.clearPhaseQueue(); - globalScene.unshiftPhase(new GameOverPhase(true)); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.unshiftPhase(new GameOverPhase(true)); } for (const pokemon of globalScene.getField()) { diff --git a/src/phases/berry-phase.ts b/src/phases/berry-phase.ts index 8d66d498039..e9e177a8fe4 100644 --- a/src/phases/berry-phase.ts +++ b/src/phases/berry-phase.ts @@ -50,7 +50,7 @@ export class BerryPhase extends FieldPhase { const cancelled = new BooleanHolder(false); pokemon.getOpponents().forEach(opp => applyAbAttrs(PreventBerryUseAbAttr, opp, cancelled)); if (cancelled.value) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("abilityTriggers:preventBerryUse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -58,7 +58,7 @@ export class BerryPhase extends FieldPhase { return; } - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.USE_ITEM), ); diff --git a/src/phases/check-status-effect-phase.ts b/src/phases/check-status-effect-phase.ts index 0c5884bbac7..ec15676ebcc 100644 --- a/src/phases/check-status-effect-phase.ts +++ b/src/phases/check-status-effect-phase.ts @@ -15,7 +15,7 @@ export class CheckStatusEffectPhase extends Phase { const field = globalScene.getField(); for (const o of this.order) { if (field[o].status?.isPostTurn()) { - globalScene.unshiftPhase(new PostTurnStatusEffectPhase(o)); + globalScene.phaseManager.unshiftPhase(new PostTurnStatusEffectPhase(o)); } } this.end(); diff --git a/src/phases/check-switch-phase.ts b/src/phases/check-switch-phase.ts index 0506cd36c46..2299bf0c0a5 100644 --- a/src/phases/check-switch-phase.ts +++ b/src/phases/check-switch-phase.ts @@ -35,7 +35,7 @@ export class CheckSwitchPhase extends BattlePhase { // ...if the checked Pokemon is somehow not on the field if (globalScene.field.getAll().indexOf(pokemon) === -1) { - globalScene.unshiftPhase(new SummonMissingPhase(this.fieldIndex)); + globalScene.phaseManager.unshiftPhase(new SummonMissingPhase(this.fieldIndex)); return super.end(); } @@ -68,7 +68,9 @@ export class CheckSwitchPhase extends BattlePhase { UiMode.CONFIRM, () => { globalScene.ui.setMode(UiMode.MESSAGE); - globalScene.unshiftPhase(new SwitchPhase(SwitchType.INITIAL_SWITCH, this.fieldIndex, false, true)); + globalScene.phaseManager.unshiftPhase( + new SwitchPhase(SwitchType.INITIAL_SWITCH, this.fieldIndex, false, true), + ); this.end(); }, () => { diff --git a/src/phases/command-phase.ts b/src/phases/command-phase.ts index 209c1eefc85..7a2e427ecce 100644 --- a/src/phases/command-phase.ts +++ b/src/phases/command-phase.ts @@ -192,7 +192,7 @@ export class CommandPhase extends FieldPhase { } console.log(moveTargets, getPokemonNameWithAffix(playerPokemon)); if (moveTargets.targets.length > 1 && moveTargets.multiple) { - globalScene.unshiftPhase(new SelectTargetPhase(this.fieldIndex)); + globalScene.phaseManager.unshiftPhase(new SelectTargetPhase(this.fieldIndex)); } if (turnCommand.move && (moveTargets.targets.length <= 1 || moveTargets.multiple)) { turnCommand.move.targets = moveTargets.targets; @@ -203,7 +203,7 @@ export class CommandPhase extends FieldPhase { ) { turnCommand.move.targets = playerPokemon.getMoveQueue()[0].targets; } else { - globalScene.unshiftPhase(new SelectTargetPhase(this.fieldIndex)); + globalScene.phaseManager.unshiftPhase(new SelectTargetPhase(this.fieldIndex)); } globalScene.currentBattle.preTurnCommands[this.fieldIndex] = preTurnCommand; globalScene.currentBattle.turnCommands[this.fieldIndex] = turnCommand; @@ -457,8 +457,8 @@ export class CommandPhase extends FieldPhase { cancel() { if (this.fieldIndex) { - globalScene.unshiftPhase(new CommandPhase(0)); - globalScene.unshiftPhase(new CommandPhase(1)); + globalScene.phaseManager.unshiftPhase(new CommandPhase(0)); + globalScene.phaseManager.unshiftPhase(new CommandPhase(1)); this.end(); } } diff --git a/src/phases/egg-hatch-phase.ts b/src/phases/egg-hatch-phase.ts index dfcdc05f9a2..d6c40a1510e 100644 --- a/src/phases/egg-hatch-phase.ts +++ b/src/phases/egg-hatch-phase.ts @@ -225,7 +225,7 @@ export class EggHatchPhase extends Phase { } end() { - if (globalScene.findPhase(p => p.is("EggHatchPhase"))) { + if (globalScene.phaseManager.findPhase(p => p.is("EggHatchPhase"))) { this.eggHatchHandler.clear(); } else { globalScene.time.delayedCall(250, () => globalScene.setModifiersVisible(true)); diff --git a/src/phases/egg-lapse-phase.ts b/src/phases/egg-lapse-phase.ts index 182d6f304d6..a19bf8f50e5 100644 --- a/src/phases/egg-lapse-phase.ts +++ b/src/phases/egg-lapse-phase.ts @@ -62,12 +62,12 @@ export class EggLapsePhase extends Phase { true, ); } else if (eggsToHatchCount >= this.minEggsToSkip && globalScene.eggSkipPreference === 2) { - globalScene.queueMessage(i18next.t("battle:eggHatching")); + globalScene.phaseManager.queueMessage(i18next.t("battle:eggHatching")); this.hatchEggsSkipped(eggsToHatch); this.showSummary(); } else { // regular hatches, no summary - globalScene.queueMessage(i18next.t("battle:eggHatching")); + globalScene.phaseManager.queueMessage(i18next.t("battle:eggHatching")); this.hatchEggsRegular(eggsToHatch); this.end(); } @@ -83,7 +83,7 @@ export class EggLapsePhase extends Phase { hatchEggsRegular(eggsToHatch: Egg[]) { let eggsToHatchCount: number = eggsToHatch.length; for (const egg of eggsToHatch) { - globalScene.unshiftPhase(new EggHatchPhase(this, egg, eggsToHatchCount)); + globalScene.phaseManager.unshiftPhase(new EggHatchPhase(this, egg, eggsToHatchCount)); eggsToHatchCount--; } } @@ -99,7 +99,7 @@ export class EggLapsePhase extends Phase { } showSummary() { - globalScene.unshiftPhase(new EggSummaryPhase(this.eggHatchData)); + globalScene.phaseManager.unshiftPhase(new EggSummaryPhase(this.eggHatchData)); this.end(); } diff --git a/src/phases/encounter-phase.ts b/src/phases/encounter-phase.ts index df84f8f8ff4..cdd17c6d6d6 100644 --- a/src/phases/encounter-phase.ts +++ b/src/phases/encounter-phase.ts @@ -68,7 +68,7 @@ export class EncounterPhase extends BattlePhase { // Failsafe if players somehow skip floor 200 in classic mode if (globalScene.gameMode.isClassic && globalScene.currentBattle.waveIndex > 200) { - globalScene.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.unshiftPhase(new GameOverPhase()); } const loadEnemyAssets: Promise[] = []; @@ -438,9 +438,9 @@ export class EncounterPhase extends BattlePhase { const doTrainerSummon = () => { this.hideEnemyTrainer(); const availablePartyMembers = globalScene.getEnemyParty().filter(p => !p.isFainted()).length; - globalScene.unshiftPhase(new SummonPhase(0, false)); + globalScene.phaseManager.unshiftPhase(new SummonPhase(0, false)); if (globalScene.currentBattle.double && availablePartyMembers > 1) { - globalScene.unshiftPhase(new SummonPhase(1, false)); + globalScene.phaseManager.unshiftPhase(new SummonPhase(1, false)); } this.end(); }; @@ -496,7 +496,7 @@ export class EncounterPhase extends BattlePhase { globalScene.ui.clearText(); globalScene.ui.getMessageHandler().hideNameText(); - globalScene.unshiftPhase(new MysteryEncounterPhase()); + globalScene.phaseManager.unshiftPhase(new MysteryEncounterPhase()); this.end(); }; @@ -554,7 +554,7 @@ export class EncounterPhase extends BattlePhase { enemyField.forEach((enemyPokemon, e) => { if (enemyPokemon.isShiny(true)) { - globalScene.unshiftPhase(new ShinySparklePhase(BattlerIndex.ENEMY + e)); + globalScene.phaseManager.unshiftPhase(new ShinySparklePhase(BattlerIndex.ENEMY + e)); } /** This sets Eternatus' held item to be untransferrable, preventing it from being stolen */ if ( @@ -576,7 +576,7 @@ export class EncounterPhase extends BattlePhase { if (![BattleType.TRAINER, BattleType.MYSTERY_ENCOUNTER].includes(globalScene.currentBattle.battleType)) { enemyField.map(p => - globalScene.pushConditionalPhase(new PostSummonPhase(p.getBattlerIndex()), () => { + globalScene.phaseManager.pushConditionalPhase(new PostSummonPhase(p.getBattlerIndex()), () => { // if there is not a player party, we can't continue if (!globalScene.getPlayerParty().length) { return false; @@ -594,7 +594,7 @@ export class EncounterPhase extends BattlePhase { ); const ivScannerModifier = globalScene.findModifier(m => m instanceof IvScannerModifier); if (ivScannerModifier) { - enemyField.map(p => globalScene.pushPhase(new ScanIvsPhase(p.getBattlerIndex()))); + enemyField.map(p => globalScene.phaseManager.pushPhase(new ScanIvsPhase(p.getBattlerIndex()))); } } @@ -602,21 +602,21 @@ export class EncounterPhase extends BattlePhase { const availablePartyMembers = globalScene.getPokemonAllowedInBattle(); if (!availablePartyMembers[0].isOnField()) { - globalScene.pushPhase(new SummonPhase(0)); + globalScene.phaseManager.pushPhase(new SummonPhase(0)); } if (globalScene.currentBattle.double) { if (availablePartyMembers.length > 1) { - globalScene.pushPhase(new ToggleDoublePositionPhase(true)); + globalScene.phaseManager.pushPhase(new ToggleDoublePositionPhase(true)); if (!availablePartyMembers[1].isOnField()) { - globalScene.pushPhase(new SummonPhase(1)); + globalScene.phaseManager.pushPhase(new SummonPhase(1)); } } } else { if (availablePartyMembers.length > 1 && availablePartyMembers[1].isOnField()) { - globalScene.pushPhase(new ReturnPhase(1)); + globalScene.phaseManager.pushPhase(new ReturnPhase(1)); } - globalScene.pushPhase(new ToggleDoublePositionPhase(false)); + globalScene.phaseManager.pushPhase(new ToggleDoublePositionPhase(false)); } if ( @@ -625,9 +625,9 @@ export class EncounterPhase extends BattlePhase { ) { const minPartySize = globalScene.currentBattle.double ? 2 : 1; if (availablePartyMembers.length > minPartySize) { - globalScene.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); + globalScene.phaseManager.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); if (globalScene.currentBattle.double) { - globalScene.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); + globalScene.phaseManager.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); } } } diff --git a/src/phases/evolution-phase.ts b/src/phases/evolution-phase.ts index 5e635f4cd82..937a7d31542 100644 --- a/src/phases/evolution-phase.ts +++ b/src/phases/evolution-phase.ts @@ -262,7 +262,7 @@ export class EvolutionPhase extends Phase { SoundFade.fadeOut(globalScene, this.evolutionBgm, 100); - globalScene.unshiftPhase(new EndEvolutionPhase()); + globalScene.phaseManager.unshiftPhase(new EndEvolutionPhase()); globalScene.ui.showText( i18next.t("menu:stoppedEvolving", { @@ -355,9 +355,11 @@ export class EvolutionPhase extends Phase { .getLevelMoves(this.lastLevel + 1, true, false, false, learnSituation) .filter(lm => lm[0] === EVOLVE_MOVE); for (const lm of levelMoves) { - globalScene.unshiftPhase(new LearnMovePhase(globalScene.getPlayerParty().indexOf(this.pokemon), lm[1])); + globalScene.phaseManager.unshiftPhase( + new LearnMovePhase(globalScene.getPlayerParty().indexOf(this.pokemon), lm[1]), + ); } - globalScene.unshiftPhase(new EndEvolutionPhase()); + globalScene.phaseManager.unshiftPhase(new EndEvolutionPhase()); globalScene.playSound("se/shine"); this.doSpray(); diff --git a/src/phases/exp-phase.ts b/src/phases/exp-phase.ts index 14d7d7578f8..8084ae78221 100644 --- a/src/phases/exp-phase.ts +++ b/src/phases/exp-phase.ts @@ -34,7 +34,7 @@ export class ExpPhase extends PlayerPartyMemberPokemonPhase { pokemon.addExp(exp.value); const newLevel = pokemon.level; if (newLevel > lastLevel) { - globalScene.unshiftPhase(new LevelUpPhase(this.partyMemberIndex, lastLevel, newLevel)); + globalScene.phaseManager.unshiftPhase(new LevelUpPhase(this.partyMemberIndex, lastLevel, newLevel)); } pokemon.updateInfo().then(() => this.end()); }, diff --git a/src/phases/faint-phase.ts b/src/phases/faint-phase.ts index fac0947c4e7..41e21162dbf 100644 --- a/src/phases/faint-phase.ts +++ b/src/phases/faint-phase.ts @@ -115,7 +115,7 @@ export class FaintPhase extends PokemonPhase { }); } - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battle:fainted", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), @@ -166,7 +166,7 @@ export class FaintPhase extends PokemonPhase { const legalPlayerPartyPokemon = legalPlayerPokemon.filter(p => !p.isActive(true)); if (!legalPlayerPokemon.length) { /** If the player doesn't have any legal Pokemon, end the game */ - globalScene.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.unshiftPhase(new GameOverPhase()); } else if ( globalScene.currentBattle.double && legalPlayerPokemon.length === 1 && @@ -176,23 +176,25 @@ export class FaintPhase extends PokemonPhase { * If the player has exactly one Pokemon in total at this point in a double battle, and that Pokemon * is already on the field, unshift a phase that moves that Pokemon to center position. */ - globalScene.unshiftPhase(new ToggleDoublePositionPhase(true)); + globalScene.phaseManager.unshiftPhase(new ToggleDoublePositionPhase(true)); } else if (legalPlayerPartyPokemon.length > 0) { /** * If previous conditions weren't met, and the player has at least 1 legal Pokemon off the field, * push a phase that prompts the player to summon a Pokemon from their party. */ - globalScene.pushPhase(new SwitchPhase(SwitchType.SWITCH, this.fieldIndex, true, false)); + globalScene.phaseManager.pushPhase(new SwitchPhase(SwitchType.SWITCH, this.fieldIndex, true, false)); } } else { - globalScene.unshiftPhase(new VictoryPhase(this.battlerIndex)); + globalScene.phaseManager.unshiftPhase(new VictoryPhase(this.battlerIndex)); if ([BattleType.TRAINER, BattleType.MYSTERY_ENCOUNTER].includes(globalScene.currentBattle.battleType)) { const hasReservePartyMember = !!globalScene .getEnemyParty() .filter(p => p.isActive() && !p.isOnField() && p.trainerSlot === (pokemon as EnemyPokemon).trainerSlot) .length; if (hasReservePartyMember) { - globalScene.pushPhase(new SwitchSummonPhase(SwitchType.SWITCH, this.fieldIndex, -1, false, false)); + globalScene.phaseManager.pushPhase( + new SwitchSummonPhase(SwitchType.SWITCH, this.fieldIndex, -1, false, false), + ); } } } @@ -247,7 +249,7 @@ export class FaintPhase extends PokemonPhase { } else { // Final boss' HP threshold has been bypassed; cancel faint and force check for 2nd phase enemy.hp++; - globalScene.unshiftPhase(new DamageAnimPhase(enemy.getBattlerIndex(), 0, HitResult.INDIRECT)); + globalScene.phaseManager.unshiftPhase(new DamageAnimPhase(enemy.getBattlerIndex(), 0, HitResult.INDIRECT)); this.end(); } return true; diff --git a/src/phases/form-change-phase.ts b/src/phases/form-change-phase.ts index f5e428c6d3d..c0d2a9a11eb 100644 --- a/src/phases/form-change-phase.ts +++ b/src/phases/form-change-phase.ts @@ -100,7 +100,7 @@ export class FormChangePhase extends EvolutionPhase { globalScene.time.delayedCall(900, () => { this.pokemon.changeForm(this.formChange).then(() => { if (!this.modal) { - globalScene.unshiftPhase(new EndEvolutionPhase()); + globalScene.phaseManager.unshiftPhase(new EndEvolutionPhase()); } globalScene.playSound("se/shine"); diff --git a/src/phases/game-over-phase.ts b/src/phases/game-over-phase.ts index 1d03739d610..166bb955c24 100644 --- a/src/phases/game-over-phase.ts +++ b/src/phases/game-over-phase.ts @@ -47,7 +47,7 @@ export class GameOverPhase extends BattlePhase { start() { super.start(); - globalScene.hideAbilityBar(); + globalScene.phaseManager.hideAbilityBar(); // Failsafe if players somehow skip floor 200 in classic mode if (globalScene.gameMode.isClassic && globalScene.currentBattle.waveIndex > 200) { @@ -84,23 +84,23 @@ export class GameOverPhase extends BattlePhase { () => { globalScene.ui.fadeOut(1250).then(() => { globalScene.reset(); - globalScene.clearPhaseQueue(); + globalScene.phaseManager.clearPhaseQueue(); globalScene.gameData.loadSession(globalScene.sessionSlotId).then(() => { - globalScene.pushPhase(new EncounterPhase(true)); + globalScene.phaseManager.pushPhase(new EncounterPhase(true)); const availablePartyMembers = globalScene.getPokemonAllowedInBattle().length; - globalScene.pushPhase(new SummonPhase(0)); + globalScene.phaseManager.pushPhase(new SummonPhase(0)); if (globalScene.currentBattle.double && availablePartyMembers > 1) { - globalScene.pushPhase(new SummonPhase(1)); + globalScene.phaseManager.pushPhase(new SummonPhase(1)); } if ( globalScene.currentBattle.waveIndex > 1 && globalScene.currentBattle.battleType !== BattleType.TRAINER ) { - globalScene.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); + globalScene.phaseManager.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); if (globalScene.currentBattle.double && availablePartyMembers > 1) { - globalScene.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); + globalScene.phaseManager.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); } } @@ -148,7 +148,7 @@ export class GameOverPhase extends BattlePhase { globalScene.ui.fadeOut(fadeDuration).then(() => { activeBattlers.map(a => a.setVisible(false)); globalScene.setFieldScale(1, true); - globalScene.clearPhaseQueue(); + globalScene.phaseManager.clearPhaseQueue(); globalScene.ui.clearText(); if (this.isVictory && globalScene.gameMode.isChallenge) { @@ -160,15 +160,17 @@ export class GameOverPhase extends BattlePhase { this.handleUnlocks(); for (const species of this.firstRibbons) { - globalScene.unshiftPhase(new RibbonModifierRewardPhase(modifierTypes.VOUCHER_PLUS, species)); + globalScene.phaseManager.unshiftPhase( + new RibbonModifierRewardPhase(modifierTypes.VOUCHER_PLUS, species), + ); } if (!firstClear) { - globalScene.unshiftPhase(new GameOverModifierRewardPhase(modifierTypes.VOUCHER_PREMIUM)); + globalScene.phaseManager.unshiftPhase(new GameOverModifierRewardPhase(modifierTypes.VOUCHER_PREMIUM)); } } this.getRunHistoryEntry().then(runHistoryEntry => { globalScene.gameData.saveRunHistory(runHistoryEntry, this.isVictory); - globalScene.pushPhase(new PostGameOverPhase(endCardPhase)); + globalScene.phaseManager.pushPhase(new PostGameOverPhase(endCardPhase)); this.end(); }); }; @@ -198,7 +200,7 @@ export class GameOverPhase extends BattlePhase { globalScene.ui.fadeOut(500).then(() => { globalScene.charSprite.hide().then(() => { const endCardPhase = new EndCardPhase(); - globalScene.unshiftPhase(endCardPhase); + globalScene.phaseManager.unshiftPhase(endCardPhase); clear(endCardPhase); }); }); @@ -208,7 +210,7 @@ export class GameOverPhase extends BattlePhase { }); } else { const endCardPhase = new EndCardPhase(); - globalScene.unshiftPhase(endCardPhase); + globalScene.phaseManager.unshiftPhase(endCardPhase); clear(endCardPhase); } } else { @@ -230,9 +232,9 @@ export class GameOverPhase extends BattlePhase { }) .then(success => doGameOver(!globalScene.gameMode.isDaily || !!success)) .catch(_err => { - globalScene.clearPhaseQueue(); - globalScene.clearPhaseQueueSplice(); - globalScene.unshiftPhase(new MessagePhase(i18next.t("menu:serverCommunicationFailed"), 2500)); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.clearPhaseQueueSplice(); + globalScene.phaseManager.unshiftPhase(new MessagePhase(i18next.t("menu:serverCommunicationFailed"), 2500)); // force the game to reload after 2 seconds. setTimeout(() => { window.location.reload(); @@ -251,22 +253,22 @@ export class GameOverPhase extends BattlePhase { handleUnlocks(): void { if (this.isVictory && globalScene.gameMode.isClassic) { if (!globalScene.gameData.unlocks[Unlockables.ENDLESS_MODE]) { - globalScene.unshiftPhase(new UnlockPhase(Unlockables.ENDLESS_MODE)); + globalScene.phaseManager.unshiftPhase(new UnlockPhase(Unlockables.ENDLESS_MODE)); } if ( globalScene.getPlayerParty().filter(p => p.fusionSpecies).length && !globalScene.gameData.unlocks[Unlockables.SPLICED_ENDLESS_MODE] ) { - globalScene.unshiftPhase(new UnlockPhase(Unlockables.SPLICED_ENDLESS_MODE)); + globalScene.phaseManager.unshiftPhase(new UnlockPhase(Unlockables.SPLICED_ENDLESS_MODE)); } if (!globalScene.gameData.unlocks[Unlockables.MINI_BLACK_HOLE]) { - globalScene.unshiftPhase(new UnlockPhase(Unlockables.MINI_BLACK_HOLE)); + globalScene.phaseManager.unshiftPhase(new UnlockPhase(Unlockables.MINI_BLACK_HOLE)); } if ( !globalScene.gameData.unlocks[Unlockables.EVIOLITE] && globalScene.getPlayerParty().some(p => p.getSpeciesForm(true).speciesId in pokemonEvolutions) ) { - globalScene.unshiftPhase(new UnlockPhase(Unlockables.EVIOLITE)); + globalScene.phaseManager.unshiftPhase(new UnlockPhase(Unlockables.EVIOLITE)); } } } diff --git a/src/phases/learn-move-phase.ts b/src/phases/learn-move-phase.ts index d455ed35591..7464cebe7da 100644 --- a/src/phases/learn-move-phase.ts +++ b/src/phases/learn-move-phase.ts @@ -195,7 +195,7 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { pokemon.usedTMs = []; } pokemon.usedTMs.push(this.moveId); - globalScene.tryRemovePhase(phase => phase.is("SelectModifierPhase")); + globalScene.phaseManager.tryRemovePhase(phase => phase.is("SelectModifierPhase")); } else if (this.learnMoveType === LearnMoveType.MEMORY) { if (this.cost !== -1) { if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { @@ -205,7 +205,7 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { } globalScene.playSound("se/buy"); } else { - globalScene.tryRemovePhase(phase => phase.is("SelectModifierPhase")); + globalScene.phaseManager.tryRemovePhase(phase => phase.is("SelectModifierPhase")); } } pokemon.setMove(index, this.moveId); diff --git a/src/phases/level-up-phase.ts b/src/phases/level-up-phase.ts index 7cf86a313df..b3b82f13f42 100644 --- a/src/phases/level-up-phase.ts +++ b/src/phases/level-up-phase.ts @@ -66,14 +66,14 @@ export class LevelUpPhase extends PlayerPartyMemberPokemonPhase { // this feels like an unnecessary optimization const levelMoves = this.getPokemon().getLevelMoves(this.lastLevel + 1); for (const lm of levelMoves) { - globalScene.unshiftPhase(new LearnMovePhase(this.partyMemberIndex, lm[1])); + globalScene.phaseManager.unshiftPhase(new LearnMovePhase(this.partyMemberIndex, lm[1])); } } if (!this.pokemon.pauseEvolutions) { const evolution = this.pokemon.getEvolution(); if (evolution) { this.pokemon.breakIllusion(); - globalScene.unshiftPhase(new EvolutionPhase(this.pokemon, evolution, this.lastLevel)); + globalScene.phaseManager.unshiftPhase(new EvolutionPhase(this.pokemon, evolution, this.lastLevel)); } } return super.end(); diff --git a/src/phases/login-phase.ts b/src/phases/login-phase.ts index ec12b5ddaa4..5e1728d4415 100644 --- a/src/phases/login-phase.ts +++ b/src/phases/login-phase.ts @@ -70,7 +70,7 @@ export class LoginPhase extends Phase { }); }, () => { - globalScene.unshiftPhase(new LoginPhase(false)); + globalScene.phaseManager.unshiftPhase(new LoginPhase(false)); this.end(); }, ], @@ -94,7 +94,7 @@ export class LoginPhase extends Phase { removeCookie(sessionIdKey); globalScene.reset(true, true); } else { - globalScene.unshiftPhase(new UnavailablePhase()); + globalScene.phaseManager.unshiftPhase(new UnavailablePhase()); super.end(); } return null; @@ -114,7 +114,7 @@ export class LoginPhase extends Phase { globalScene.ui.setMode(UiMode.MESSAGE); if (!globalScene.gameData.gender) { - globalScene.unshiftPhase(new SelectGenderPhase()); + globalScene.phaseManager.unshiftPhase(new SelectGenderPhase()); } handleTutorial(Tutorial.Intro).then(() => super.end()); diff --git a/src/phases/message-phase.ts b/src/phases/message-phase.ts index 335258abe5c..2a485d837b0 100644 --- a/src/phases/message-phase.ts +++ b/src/phases/message-phase.ts @@ -44,7 +44,7 @@ export class MessagePhase extends Phase { page0 = page0.split(repname[p]).join(pokename[p]); page1 = page1.split(repname[p]).join(pokename[p]); } - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new MessagePhase(page1, this.callbackDelay, this.prompt, this.promptDelay, this.speaker), ); this.text = page0.trim(); diff --git a/src/phases/move-charge-phase.ts b/src/phases/move-charge-phase.ts index 789651623fa..263306acbf2 100644 --- a/src/phases/move-charge-phase.ts +++ b/src/phases/move-charge-phase.ts @@ -62,9 +62,9 @@ export class MoveChargePhase extends PokemonPhase { if (instantCharge.value) { // this MoveEndPhase will be duplicated by the queued MovePhase if not removed - globalScene.tryRemovePhase(phase => phase.is("MoveEndPhase") && phase.getPokemon() === user); + globalScene.phaseManager.tryRemovePhase(phase => phase.is("MoveEndPhase") && phase.getPokemon() === user); // queue a new MovePhase for this move's attack phase - globalScene.unshiftPhase(new MovePhase(user, [this.targetIndex], this.move, false)); + globalScene.phaseManager.unshiftPhase(new MovePhase(user, [this.targetIndex], this.move, false)); } else { user.getMoveQueue().push({ move: move.id, targets: [this.targetIndex] }); } diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index e62f65b029b..e135f5bd161 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -221,7 +221,7 @@ export class MoveEffectPhase extends PokemonPhase { break; // biome-ignore lint/suspicious/noFallthroughSwitchClause: The fallthrough is intentional case HitCheckResult.NO_EFFECT: - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t(this.move.id === MoveId.SHEER_COLD ? "battle:hitResultImmune" : "battle:hitResultNoEffect", { pokemonName: getPokemonNameWithAffix(target), }), @@ -232,7 +232,7 @@ export class MoveEffectPhase extends PokemonPhase { applyMoveAttrs(NoEffectAttr, user, target, this.move); break; case HitCheckResult.MISS: - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battle:attackMissed", { pokemonNameWithAffix: getPokemonNameWithAffix(target) }), ); applyMoveAttrs(MissEffectAttr, user, target, this.move); @@ -384,7 +384,7 @@ export class MoveEffectPhase extends PokemonPhase { } if (this.queuedPhases.length) { - globalScene.appendToPhase(this.queuedPhases, MoveEndPhase); + globalScene.phaseManager.appendToPhase(this.queuedPhases, MoveEndPhase); } const moveType = user.getMoveType(this.move, true); if (this.move.category !== MoveCategory.STATUS && !user.stellarTypesBoosted.includes(moveType)) { @@ -410,14 +410,14 @@ export class MoveEffectPhase extends PokemonPhase { */ if (user) { if (user.turnData.hitsLeft && --user.turnData.hitsLeft >= 1 && this.getFirstTarget()?.isActive()) { - globalScene.unshiftPhase(this.getNewHitPhase()); + globalScene.phaseManager.unshiftPhase(this.getNewHitPhase()); } else { // Queue message for number of hits made by multi-move // If multi-hit attack only hits once, still want to render a message const hitsTotal = user.turnData.hitCount - Math.max(user.turnData.hitsLeft, 0); if (hitsTotal > 1 || (user.turnData.hitsLeft && user.turnData.hitsLeft > 0)) { // If there are multiple hits, or if there are hits of the multi-hit move left - globalScene.queueMessage(i18next.t("battle:attackHitsCount", { count: hitsTotal })); + globalScene.phaseManager.queueMessage(i18next.t("battle:attackHitsCount", { count: hitsTotal })); } globalScene.applyModifiers(HitHealModifier, this.player, user); this.getTargets().forEach(target => (target.turnData.moveEffectiveness = null)); @@ -858,7 +858,7 @@ export class MoveEffectPhase extends PokemonPhase { }); if (isCritical) { - globalScene.queueMessage(i18next.t("battle:hitResultCriticalHit")); + globalScene.phaseManager.queueMessage(i18next.t("battle:hitResultCriticalHit")); } if (damage <= 0) { @@ -901,9 +901,9 @@ export class MoveEffectPhase extends PokemonPhase { */ protected onFaintTarget(user: Pokemon, target: Pokemon): void { // set splice index here, so future scene queues happen before FaintedPhase - globalScene.setPhaseQueueSplice(); + globalScene.phaseManager.setPhaseQueueSplice(); - globalScene.unshiftPhase(new FaintPhase(target.getBattlerIndex(), false, user)); + globalScene.phaseManager.unshiftPhase(new FaintPhase(target.getBattlerIndex(), false, user)); target.destroySubstitute(); target.lapseTag(BattlerTagType.COMMANDED); @@ -936,7 +936,7 @@ export class MoveEffectPhase extends PokemonPhase { break; } if (msg) { - globalScene.queueMessage(msg); + globalScene.phaseManager.queueMessage(msg); } } diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index 300c27e01fc..03f94ad3d1d 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -268,10 +268,10 @@ export class MovePhase extends BattlePhase { if (activated) { this.cancel(); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( getStatusEffectActivationText(this.pokemon.status.effect, getPokemonNameWithAffix(this.pokemon)), ); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new CommonAnimPhase( this.pokemon.getBattlerIndex(), undefined, @@ -279,7 +279,7 @@ export class MovePhase extends BattlePhase { ), ); } else if (healed) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( getStatusEffectHealText(this.pokemon.status.effect, getPokemonNameWithAffix(this.pokemon)), ); this.pokemon.resetStatus(); @@ -407,7 +407,7 @@ export class MovePhase extends BattlePhase { if (success) { const move = this.move.getMove(); applyPreAttackAbAttrs(PokemonTypeChangeAbAttr, this.pokemon, null, move); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new MoveEffectPhase(this.pokemon.getBattlerIndex(), this.targets, move, this.reflected, this.move.virtual), ); } else { @@ -457,7 +457,9 @@ export class MovePhase extends BattlePhase { applyPreAttackAbAttrs(PokemonTypeChangeAbAttr, this.pokemon, null, this.move.getMove()); this.showMoveText(); - globalScene.unshiftPhase(new MoveChargePhase(this.pokemon.getBattlerIndex(), this.targets[0], this.move)); + globalScene.phaseManager.unshiftPhase( + new MoveChargePhase(this.pokemon.getBattlerIndex(), this.targets[0], this.move), + ); } else { this.pokemon.pushMoveHistory({ move: this.move.moveId, @@ -479,7 +481,7 @@ export class MovePhase extends BattlePhase { * Queues a {@linkcode MoveEndPhase} and then ends the phase */ public end(): void { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new MoveEndPhase(this.pokemon.getBattlerIndex(), this.getActiveTargetPokemon(), this.followUp), ); @@ -545,12 +547,12 @@ export class MovePhase extends BattlePhase { if (this.pokemon.hasAbilityWithAttr(BlockRedirectAbAttr)) { redirectTarget.value = currentTarget; // TODO: Ability displays should be handled by the ability - globalScene.queueAbilityDisplay( + globalScene.phaseManager.queueAbilityDisplay( this.pokemon, this.pokemon.getPassiveAbility().hasAttr(BlockRedirectAbAttr), true, ); - globalScene.queueAbilityDisplay( + globalScene.phaseManager.queueAbilityDisplay( this.pokemon, this.pokemon.getPassiveAbility().hasAttr(BlockRedirectAbAttr), false, @@ -649,7 +651,7 @@ export class MovePhase extends BattlePhase { return; } - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t(this.reflected ? "battle:magicCoatActivated" : "battle:useMove", { pokemonNameWithAffix: getPokemonNameWithAffix(this.pokemon), moveName: this.move.getName(), @@ -660,6 +662,6 @@ export class MovePhase extends BattlePhase { } public showFailedText(failedText: string = i18next.t("battle:attackFailed")): void { - globalScene.queueMessage(failedText); + globalScene.phaseManager.queueMessage(failedText); } } diff --git a/src/phases/mystery-encounter-phases.ts b/src/phases/mystery-encounter-phases.ts index 5365ab3da32..b1ca11d45a5 100644 --- a/src/phases/mystery-encounter-phases.ts +++ b/src/phases/mystery-encounter-phases.ts @@ -58,8 +58,8 @@ export class MysteryEncounterPhase extends Phase { super.start(); // Clears out queued phases that are part of standard battle - globalScene.clearPhaseQueue(); - globalScene.clearPhaseQueueSplice(); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.clearPhaseQueueSplice(); const encounter = globalScene.currentBattle.mysteryEncounter!; encounter.updateSeedOffset(); @@ -124,7 +124,7 @@ export class MysteryEncounterPhase extends Phase { */ continueEncounter() { const endDialogueAndContinueEncounter = () => { - globalScene.pushPhase(new MysteryEncounterOptionSelectedPhase()); + globalScene.phaseManager.pushPhase(new MysteryEncounterOptionSelectedPhase()); this.end(); }; @@ -247,8 +247,8 @@ export class MysteryEncounterBattleStartCleanupPhase extends Phase { }); // Remove any status tick phases - while (globalScene.findPhase(p => p.is("PostTurnStatusEffectPhase"))) { - globalScene.tryRemovePhase(p => p.is("PostTurnStatusEffectPhase")); + while (globalScene.phaseManager.findPhase(p => p.is("PostTurnStatusEffectPhase"))) { + globalScene.phaseManager.tryRemovePhase(p => p.is("PostTurnStatusEffectPhase")); } // The total number of Pokemon in the player's party that can legally fight @@ -256,7 +256,7 @@ export class MysteryEncounterBattleStartCleanupPhase extends Phase { // The total number of legal player Pokemon that aren't currently on the field const legalPlayerPartyPokemon = legalPlayerPokemon.filter(p => !p.isActive(true)); if (!legalPlayerPokemon.length) { - globalScene.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.unshiftPhase(new GameOverPhase()); return this.end(); } @@ -265,13 +265,13 @@ export class MysteryEncounterBattleStartCleanupPhase extends Phase { const playerField = globalScene.getPlayerField(); playerField.forEach((pokemon, i) => { if (!pokemon.isAllowedInBattle() && legalPlayerPartyPokemon.length > i) { - globalScene.unshiftPhase(new SwitchPhase(SwitchType.SWITCH, i, true, false)); + globalScene.phaseManager.unshiftPhase(new SwitchPhase(SwitchType.SWITCH, i, true, false)); } }); // THEN, if is a double battle, and player only has 1 summoned pokemon, center pokemon on field if (globalScene.currentBattle.double && legalPlayerPokemon.length === 1 && legalPlayerPartyPokemon.length === 0) { - globalScene.unshiftPhase(new ToggleDoublePositionPhase(true)); + globalScene.phaseManager.unshiftPhase(new ToggleDoublePositionPhase(true)); } this.end(); @@ -348,9 +348,9 @@ export class MysteryEncounterBattlePhase extends Phase { globalScene.playBgm(); } const availablePartyMembers = globalScene.getEnemyParty().filter(p => !p.isFainted()).length; - globalScene.unshiftPhase(new SummonPhase(0, false)); + globalScene.phaseManager.unshiftPhase(new SummonPhase(0, false)); if (globalScene.currentBattle.double && availablePartyMembers > 1) { - globalScene.unshiftPhase(new SummonPhase(1, false)); + globalScene.phaseManager.unshiftPhase(new SummonPhase(1, false)); } if (!globalScene.currentBattle.mysteryEncounter?.hideBattleIntroMessage) { @@ -368,9 +368,9 @@ export class MysteryEncounterBattlePhase extends Phase { const doTrainerSummon = () => { this.hideEnemyTrainer(); const availablePartyMembers = globalScene.getEnemyParty().filter(p => !p.isFainted()).length; - globalScene.unshiftPhase(new SummonPhase(0, false)); + globalScene.phaseManager.unshiftPhase(new SummonPhase(0, false)); if (globalScene.currentBattle.double && availablePartyMembers > 1) { - globalScene.unshiftPhase(new SummonPhase(1, false)); + globalScene.phaseManager.unshiftPhase(new SummonPhase(1, false)); } this.endBattleSetup(); }; @@ -426,37 +426,37 @@ export class MysteryEncounterBattlePhase extends Phase { if (encounterMode !== MysteryEncounterMode.TRAINER_BATTLE) { const ivScannerModifier = globalScene.findModifier(m => m instanceof IvScannerModifier); if (ivScannerModifier) { - enemyField.map(p => globalScene.pushPhase(new ScanIvsPhase(p.getBattlerIndex()))); + enemyField.map(p => globalScene.phaseManager.pushPhase(new ScanIvsPhase(p.getBattlerIndex()))); } } const availablePartyMembers = globalScene.getPlayerParty().filter(p => p.isAllowedInBattle()); if (!availablePartyMembers[0].isOnField()) { - globalScene.pushPhase(new SummonPhase(0)); + globalScene.phaseManager.pushPhase(new SummonPhase(0)); } if (globalScene.currentBattle.double) { if (availablePartyMembers.length > 1) { - globalScene.pushPhase(new ToggleDoublePositionPhase(true)); + globalScene.phaseManager.pushPhase(new ToggleDoublePositionPhase(true)); if (!availablePartyMembers[1].isOnField()) { - globalScene.pushPhase(new SummonPhase(1)); + globalScene.phaseManager.pushPhase(new SummonPhase(1)); } } } else { if (availablePartyMembers.length > 1 && availablePartyMembers[1].isOnField()) { globalScene.getPlayerField().forEach(pokemon => pokemon.lapseTag(BattlerTagType.COMMANDED)); - globalScene.pushPhase(new ReturnPhase(1)); + globalScene.phaseManager.pushPhase(new ReturnPhase(1)); } - globalScene.pushPhase(new ToggleDoublePositionPhase(false)); + globalScene.phaseManager.pushPhase(new ToggleDoublePositionPhase(false)); } if (encounterMode !== MysteryEncounterMode.TRAINER_BATTLE && !this.disableSwitch) { const minPartySize = globalScene.currentBattle.double ? 2 : 1; if (availablePartyMembers.length > minPartySize) { - globalScene.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); + globalScene.phaseManager.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); if (globalScene.currentBattle.double) { - globalScene.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); + globalScene.phaseManager.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); } } } @@ -562,8 +562,8 @@ export class MysteryEncounterRewardsPhase extends Phase { if (encounter.doEncounterRewards) { encounter.doEncounterRewards(); } else if (this.addHealPhase) { - globalScene.tryRemovePhase(p => p.is("SelectModifierPhase")); - globalScene.unshiftPhase( + globalScene.phaseManager.tryRemovePhase(p => p.is("SelectModifierPhase")); + globalScene.phaseManager.unshiftPhase( new SelectModifierPhase(0, undefined, { fillRemaining: false, rerollMultiplier: -1, @@ -571,7 +571,7 @@ export class MysteryEncounterRewardsPhase extends Phase { ); } - globalScene.pushPhase(new PostMysteryEncounterPhase()); + globalScene.phaseManager.pushPhase(new PostMysteryEncounterPhase()); this.end(); } } @@ -618,10 +618,10 @@ export class PostMysteryEncounterPhase extends Phase { continueEncounter() { const endPhase = () => { if (globalScene.gameMode.hasRandomBiomes || globalScene.isNewBiome()) { - globalScene.pushPhase(new SelectBiomePhase()); + globalScene.phaseManager.pushPhase(new SelectBiomePhase()); } - globalScene.pushPhase(new NewBattlePhase()); + globalScene.phaseManager.pushPhase(new NewBattlePhase()); this.end(); }; diff --git a/src/phases/new-battle-phase.ts b/src/phases/new-battle-phase.ts index c4cfc72fb53..65ecc81df2d 100644 --- a/src/phases/new-battle-phase.ts +++ b/src/phases/new-battle-phase.ts @@ -7,9 +7,11 @@ export class NewBattlePhase extends BattlePhase { super.start(); // cull any extra `NewBattle` phases from the queue. - globalScene.phaseQueue = globalScene.phaseQueue.filter(phase => !phase.is("NewBattlePhase")); + globalScene.phaseManager.phaseQueue = globalScene.phaseManager.phaseQueue.filter( + phase => !phase.is("NewBattlePhase"), + ); // `phaseQueuePrepend` is private, so we have to use this inefficient loop. - while (globalScene.tryRemoveUnshiftedPhase(phase => phase.is("NewBattlePhase"))) {} + while (globalScene.phaseManager.tryRemoveUnshiftedPhase(phase => phase.is("NewBattlePhase"))) {} globalScene.newBattle(); diff --git a/src/phases/obtain-status-effect-phase.ts b/src/phases/obtain-status-effect-phase.ts index 820db910681..2982bc982d9 100644 --- a/src/phases/obtain-status-effect-phase.ts +++ b/src/phases/obtain-status-effect-phase.ts @@ -41,7 +41,7 @@ export class ObtainStatusEffectPhase extends PokemonPhase { } pokemon.updateInfo(true); new CommonBattleAnim(CommonAnim.POISON + (this.statusEffect! - 1), pokemon).play(false, () => { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( getStatusEffectObtainText( this.statusEffect, getPokemonNameWithAffix(pokemon), @@ -59,7 +59,7 @@ export class ObtainStatusEffectPhase extends PokemonPhase { return; } } else if (pokemon.status?.effect === this.statusEffect) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( getStatusEffectOverlapText(this.statusEffect ?? StatusEffect.NONE, getPokemonNameWithAffix(pokemon)), ); } diff --git a/src/phases/pokemon-heal-phase.ts b/src/phases/pokemon-heal-phase.ts index 60bbb17c30a..6e9b6b5c622 100644 --- a/src/phases/pokemon-heal-phase.ts +++ b/src/phases/pokemon-heal-phase.ts @@ -68,7 +68,7 @@ export class PokemonHealPhase extends CommonAnimPhase { let lastStatusEffect = StatusEffect.NONE; if (healBlock && this.hpHealed > 0) { - globalScene.queueMessage(healBlock.onActivation(pokemon)); + globalScene.phaseManager.queueMessage(healBlock.onActivation(pokemon)); this.message = null; return super.end(); } @@ -119,11 +119,13 @@ export class PokemonHealPhase extends CommonAnimPhase { } if (this.message) { - globalScene.queueMessage(this.message); + globalScene.phaseManager.queueMessage(this.message); } if (this.healStatus && lastStatusEffect && !hasMessage) { - globalScene.queueMessage(getStatusEffectHealText(lastStatusEffect, getPokemonNameWithAffix(pokemon))); + globalScene.phaseManager.queueMessage( + getStatusEffectHealText(lastStatusEffect, getPokemonNameWithAffix(pokemon)), + ); } if (!healOrDamage && !lastStatusEffect) { diff --git a/src/phases/pokemon-transform-phase.ts b/src/phases/pokemon-transform-phase.ts index c0f3b048003..4f18a19b2fb 100644 --- a/src/phases/pokemon-transform-phase.ts +++ b/src/phases/pokemon-transform-phase.ts @@ -65,7 +65,7 @@ export class PokemonTransformPhase extends PokemonPhase { globalScene.playSound("battle_anims/PRSFX- Transform"); } - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("abilityTriggers:postSummonTransform", { pokemonNameWithAffix: getPokemonNameWithAffix(user), targetName: target.name, diff --git a/src/phases/post-game-over-phase.ts b/src/phases/post-game-over-phase.ts index f985419da7a..37a3297cc52 100644 --- a/src/phases/post-game-over-phase.ts +++ b/src/phases/post-game-over-phase.ts @@ -28,7 +28,7 @@ export class PostGameOverPhase extends Phase { return globalScene.reset(true); } globalScene.reset(); - globalScene.unshiftPhase(new TitlePhase()); + globalScene.phaseManager.unshiftPhase(new TitlePhase()); this.end(); }); }); diff --git a/src/phases/post-turn-status-effect-phase.ts b/src/phases/post-turn-status-effect-phase.ts index 47a84059745..33fb012492d 100644 --- a/src/phases/post-turn-status-effect-phase.ts +++ b/src/phases/post-turn-status-effect-phase.ts @@ -32,7 +32,7 @@ export class PostTurnStatusEffectPhase extends PokemonPhase { applyAbAttrs(BlockStatusDamageAbAttr, pokemon, cancelled); if (!cancelled.value) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( getStatusEffectActivationText(pokemon.status.effect, getPokemonNameWithAffix(pokemon)), ); const damage = new NumberHolder(0); diff --git a/src/phases/quiet-form-change-phase.ts b/src/phases/quiet-form-change-phase.ts index f677dcc48df..363b026831f 100644 --- a/src/phases/quiet-form-change-phase.ts +++ b/src/phases/quiet-form-change-phase.ts @@ -159,7 +159,7 @@ export class QuietFormChangePhase extends BattlePhase { this.pokemon.findAndRemoveTags(t => t.tagType === BattlerTagType.AUTOTOMIZED); if (globalScene?.currentBattle.battleSpec === BattleSpec.FINAL_BOSS && this.pokemon.isEnemy()) { globalScene.playBgm(); - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new PokemonHealPhase(this.pokemon.getBattlerIndex(), this.pokemon.getMaxHp(), null, false, false, false, true), ); this.pokemon.findAndRemoveTags(() => true); @@ -168,7 +168,9 @@ export class QuietFormChangePhase extends BattlePhase { this.pokemon.initBattleInfo(); this.pokemon.cry(); - const movePhase = globalScene.findPhase(p => p.is("MovePhase") && p.pokemon === this.pokemon) as MovePhase; + const movePhase = globalScene.phaseManager.findPhase( + p => p.is("MovePhase") && p.pokemon === this.pokemon, + ) as MovePhase; if (movePhase) { movePhase.cancel(); } diff --git a/src/phases/revival-blessing-phase.ts b/src/phases/revival-blessing-phase.ts index 3f70c93dd7a..2db73103a88 100644 --- a/src/phases/revival-blessing-phase.ts +++ b/src/phases/revival-blessing-phase.ts @@ -35,7 +35,7 @@ export class RevivalBlessingPhase extends BattlePhase { pokemon.resetTurnData(); pokemon.resetStatus(true, false, false, false); pokemon.heal(Math.min(toDmgValue(0.5 * pokemon.getMaxHp()), pokemon.getMaxHp())); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("moveTriggers:revivalBlessing", { pokemonName: pokemon.name, }), @@ -51,16 +51,16 @@ export class RevivalBlessingPhase extends BattlePhase { ) { if (slotIndex <= 1) { // Revived ally pokemon - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new SwitchSummonPhase(SwitchType.SWITCH, pokemon.getFieldIndex(), slotIndex, false, true), ); - globalScene.unshiftPhase(new ToggleDoublePositionPhase(true)); + globalScene.phaseManager.unshiftPhase(new ToggleDoublePositionPhase(true)); } else if (allyPokemon.isFainted()) { // Revived party pokemon, and ally pokemon is fainted - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new SwitchSummonPhase(SwitchType.SWITCH, allyPokemon.getFieldIndex(), slotIndex, false, true), ); - globalScene.unshiftPhase(new ToggleDoublePositionPhase(true)); + globalScene.phaseManager.unshiftPhase(new ToggleDoublePositionPhase(true)); } } } diff --git a/src/phases/select-biome-phase.ts b/src/phases/select-biome-phase.ts index ef6b39e8b8f..633bf20d34c 100644 --- a/src/phases/select-biome-phase.ts +++ b/src/phases/select-biome-phase.ts @@ -22,9 +22,9 @@ export class SelectBiomePhase extends BattlePhase { const setNextBiome = (nextBiome: BiomeId) => { if (nextWaveIndex % 10 === 1) { globalScene.applyModifiers(MoneyInterestModifier, true); - globalScene.unshiftPhase(new PartyHealPhase(false)); + globalScene.phaseManager.unshiftPhase(new PartyHealPhase(false)); } - globalScene.unshiftPhase(new SwitchBiomePhase(nextBiome)); + globalScene.phaseManager.unshiftPhase(new SwitchBiomePhase(nextBiome)); this.end(); }; diff --git a/src/phases/select-modifier-phase.ts b/src/phases/select-modifier-phase.ts index 6e429d9ad7f..5ac3b9e6d76 100644 --- a/src/phases/select-modifier-phase.ts +++ b/src/phases/select-modifier-phase.ts @@ -123,7 +123,7 @@ export class SelectModifierPhase extends BattlePhase { return false; } globalScene.reroll = true; - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new SelectModifierPhase( this.rerollCount + 1, this.typeOptions.map(o => o.type?.tier).filter(t => t !== undefined) as ModifierTier[], @@ -247,7 +247,7 @@ export class SelectModifierPhase extends BattlePhase { // If the player selects either of these, then escapes out of consuming them, // they are returned to a shop in the same state. if (modifier.type instanceof RememberMoveModifierType || modifier.type instanceof TmModifierType) { - globalScene.unshiftPhase(this.copy()); + globalScene.phaseManager.unshiftPhase(this.copy()); } if (cost && !(modifier.type instanceof RememberMoveModifierType)) { diff --git a/src/phases/select-starter-phase.ts b/src/phases/select-starter-phase.ts index d25c2dd7211..2b60fcaf054 100644 --- a/src/phases/select-starter-phase.ts +++ b/src/phases/select-starter-phase.ts @@ -25,8 +25,8 @@ export class SelectStarterPhase extends Phase { globalScene.ui.clearText(); globalScene.ui.setMode(UiMode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: number) => { if (slotId === -1) { - globalScene.clearPhaseQueue(); - globalScene.pushPhase(new TitlePhase()); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.pushPhase(new TitlePhase()); return this.end(); } globalScene.sessionSlotId = slotId; diff --git a/src/phases/select-target-phase.ts b/src/phases/select-target-phase.ts index 46ba378a56c..515f7ed98ca 100644 --- a/src/phases/select-target-phase.ts +++ b/src/phases/select-target-phase.ts @@ -28,12 +28,12 @@ export class SelectTargetPhase extends PokemonPhase { const errorMessage = user .getRestrictingTag(move!, user, fieldSide[targets[0]])! .selectionDeniedText(user, moveObject.id); - globalScene.queueMessage(i18next.t(errorMessage, { moveName: moveObject.name }), 0, true); + globalScene.phaseManager.queueMessage(i18next.t(errorMessage, { moveName: moveObject.name }), 0, true); targets = []; } if (targets.length < 1) { globalScene.currentBattle.turnCommands[this.fieldIndex] = null; - globalScene.unshiftPhase(new CommandPhase(this.fieldIndex)); + globalScene.phaseManager.unshiftPhase(new CommandPhase(this.fieldIndex)); } else { turnCommand!.targets = targets; //TODO: is the bang correct here? } diff --git a/src/phases/show-ability-phase.ts b/src/phases/show-ability-phase.ts index 81aa69537e5..e4be6124784 100644 --- a/src/phases/show-ability-phase.ts +++ b/src/phases/show-ability-phase.ts @@ -36,8 +36,8 @@ export class ShowAbilityPhase extends PokemonPhase { // If the bar is already out, hide it before showing the new one if (globalScene.abilityBar.isVisible()) { - globalScene.unshiftPhase(new HideAbilityPhase()); - globalScene.unshiftPhase(new ShowAbilityPhase(this.battlerIndex, this.passive)); + globalScene.phaseManager.unshiftPhase(new HideAbilityPhase()); + globalScene.phaseManager.unshiftPhase(new ShowAbilityPhase(this.battlerIndex, this.passive)); return this.end(); } diff --git a/src/phases/show-party-exp-bar-phase.ts b/src/phases/show-party-exp-bar-phase.ts index 6b4236f0868..765bd498f66 100644 --- a/src/phases/show-party-exp-bar-phase.ts +++ b/src/phases/show-party-exp-bar-phase.ts @@ -29,9 +29,9 @@ export class ShowPartyExpBarPhase extends PlayerPartyMemberPokemonPhase { pokemon.addExp(exp.value); const newLevel = pokemon.level; if (newLevel > lastLevel) { - globalScene.unshiftPhase(new LevelUpPhase(this.partyMemberIndex, lastLevel, newLevel)); + globalScene.phaseManager.unshiftPhase(new LevelUpPhase(this.partyMemberIndex, lastLevel, newLevel)); } - globalScene.unshiftPhase(new HidePartyExpBarPhase()); + globalScene.phaseManager.unshiftPhase(new HidePartyExpBarPhase()); pokemon.updateInfo(); if (globalScene.expParty === ExpNotification.SKIP) { diff --git a/src/phases/stat-stage-change-phase.ts b/src/phases/stat-stage-change-phase.ts index baa93c63099..49f3952ef01 100644 --- a/src/phases/stat-stage-change-phase.ts +++ b/src/phases/stat-stage-change-phase.ts @@ -72,7 +72,7 @@ export class StatStageChangePhase extends PokemonPhase { if (this.stats.length > 1) { for (let i = 0; i < this.stats.length; i++) { const stat = [this.stats[i]]; - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new StatStageChangePhase( this.battlerIndex, this.selfTarget, @@ -212,7 +212,7 @@ export class StatStageChangePhase extends PokemonPhase { if (this.showMessage) { const messages = this.getStatStageChangeMessages(filteredStats, stages.value, relLevels); for (const message of messages) { - globalScene.queueMessage(message); + globalScene.phaseManager.queueMessage(message); } } @@ -235,7 +235,7 @@ export class StatStageChangePhase extends PokemonPhase { applyPostStatStageChangeAbAttrs(PostStatStageChangeAbAttr, pokemon, filteredStats, this.stages, this.selfTarget); // Look for any other stat change phases; if this is the last one, do White Herb check - const existingPhase = globalScene.findPhase( + const existingPhase = globalScene.phaseManager.findPhase( p => p.is("StatStageChangePhase") && p.battlerIndex === this.battlerIndex, ); if (!existingPhase?.is("StatStageChangePhase")) { @@ -315,7 +315,7 @@ export class StatStageChangePhase extends PokemonPhase { let existingPhase: StatStageChangePhase; if (this.stats.length === 1) { while ( - (existingPhase = globalScene.findPhase( + (existingPhase = globalScene.phaseManager.findPhase( p => p.is("StatStageChangePhase") && p.battlerIndex === this.battlerIndex && @@ -328,13 +328,13 @@ export class StatStageChangePhase extends PokemonPhase { ) { this.stages += existingPhase.stages; - if (!globalScene.tryRemovePhase(p => p === existingPhase)) { + if (!globalScene.phaseManager.tryRemovePhase(p => p === existingPhase)) { break; } } } while ( - (existingPhase = globalScene.findPhase( + (existingPhase = globalScene.phaseManager.findPhase( p => p.is("StatStageChangePhase") && p.battlerIndex === this.battlerIndex && @@ -346,7 +346,7 @@ export class StatStageChangePhase extends PokemonPhase { ) as StatStageChangePhase) ) { this.stats.push(...existingPhase.stats); - if (!globalScene.tryRemovePhase(p => p === existingPhase)) { + if (!globalScene.phaseManager.tryRemovePhase(p => p === existingPhase)) { break; } } diff --git a/src/phases/summon-phase.ts b/src/phases/summon-phase.ts index 2cd7b122bb3..15f42e76a5a 100644 --- a/src/phases/summon-phase.ts +++ b/src/phases/summon-phase.ts @@ -57,8 +57,8 @@ export class SummonPhase extends PartyMemberPokemonPhase { if (legalIndex === -1) { console.error("Party Details:\n", party); console.error("All available Pokemon were fainted or illegal!"); - globalScene.clearPhaseQueue(); - globalScene.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.unshiftPhase(new GameOverPhase()); this.end(); return; } @@ -275,7 +275,7 @@ export class SummonPhase extends PartyMemberPokemonPhase { const pokemon = this.getPokemon(); if (pokemon.isShiny(true)) { - globalScene.unshiftPhase(new ShinySparklePhase(pokemon.getBattlerIndex())); + globalScene.phaseManager.unshiftPhase(new ShinySparklePhase(pokemon.getBattlerIndex())); } pokemon.resetTurnData(); @@ -291,7 +291,7 @@ export class SummonPhase extends PartyMemberPokemonPhase { } queuePostSummon(): void { - globalScene.pushPhase(new PostSummonPhase(this.getPokemon().getBattlerIndex())); + globalScene.phaseManager.pushPhase(new PostSummonPhase(this.getPokemon().getBattlerIndex())); } end() { diff --git a/src/phases/switch-phase.ts b/src/phases/switch-phase.ts index 6017aa0fa70..5f2ae55900e 100644 --- a/src/phases/switch-phase.ts +++ b/src/phases/switch-phase.ts @@ -76,9 +76,13 @@ export class SwitchPhase extends BattlePhase { if (slotIndex >= globalScene.currentBattle.getBattlerCount() && slotIndex < 6) { // Remove any pre-existing PostSummonPhase under the same field index. // Pre-existing PostSummonPhases may occur when this phase is invoked during a prompt to switch at the start of a wave. - globalScene.tryRemovePhase(p => p.is("PostSummonPhase") && p.player && p.fieldIndex === this.fieldIndex); + globalScene.phaseManager.tryRemovePhase( + p => p.is("PostSummonPhase") && p.player && p.fieldIndex === this.fieldIndex, + ); const switchType = option === PartyOption.PASS_BATON ? SwitchType.BATON_PASS : this.switchType; - globalScene.unshiftPhase(new SwitchSummonPhase(switchType, fieldIndex, slotIndex, this.doReturn)); + globalScene.phaseManager.unshiftPhase( + new SwitchSummonPhase(switchType, fieldIndex, slotIndex, this.doReturn), + ); } globalScene.ui.setMode(UiMode.MESSAGE).then(() => super.end()); }, diff --git a/src/phases/switch-summon-phase.ts b/src/phases/switch-summon-phase.ts index 1872dae1f1f..de8b9f3a5d9 100644 --- a/src/phases/switch-summon-phase.ts +++ b/src/phases/switch-summon-phase.ts @@ -265,6 +265,6 @@ export class SwitchSummonPhase extends SummonPhase { } queuePostSummon(): void { - globalScene.unshiftPhase(new PostSummonPhase(this.getPokemon().getBattlerIndex())); + globalScene.phaseManager.unshiftPhase(new PostSummonPhase(this.getPokemon().getBattlerIndex())); } } diff --git a/src/phases/tera-phase.ts b/src/phases/tera-phase.ts index 5e4ea2fe54e..5f403f5419e 100644 --- a/src/phases/tera-phase.ts +++ b/src/phases/tera-phase.ts @@ -21,7 +21,7 @@ export class TeraPhase extends BattlePhase { start() { super.start(); - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( i18next.t("battle:pokemonTerastallized", { pokemonNameWithAffix: getPokemonNameWithAffix(this.pokemon), type: i18next.t(`pokemonInfo:Type.${PokemonType[this.pokemon.getTeraType()]}`), diff --git a/src/phases/title-phase.ts b/src/phases/title-phase.ts index aa9ae49ca8b..fb980d87359 100644 --- a/src/phases/title-phase.ts +++ b/src/phases/title-phase.ts @@ -124,8 +124,8 @@ export class TitlePhase extends Phase { options.push({ label: i18next.t("menu:cancel"), handler: () => { - globalScene.clearPhaseQueue(); - globalScene.pushPhase(new TitlePhase()); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.pushPhase(new TitlePhase()); super.end(); return true; }, @@ -198,9 +198,9 @@ export class TitlePhase extends Phase { initDailyRun(): void { globalScene.ui.clearText(); globalScene.ui.setMode(UiMode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: number) => { - globalScene.clearPhaseQueue(); + globalScene.phaseManager.clearPhaseQueue(); if (slotId === -1) { - globalScene.pushPhase(new TitlePhase()); + globalScene.phaseManager.pushPhase(new TitlePhase()); return super.end(); } globalScene.sessionSlotId = slotId; @@ -304,23 +304,23 @@ export class TitlePhase extends Phase { globalScene.arena.preloadBgm(); globalScene.gameMode = getGameMode(this.gameMode); if (this.gameMode === GameModes.CHALLENGE) { - globalScene.pushPhase(new SelectChallengePhase()); + globalScene.phaseManager.pushPhase(new SelectChallengePhase()); } else { - globalScene.pushPhase(new SelectStarterPhase()); + globalScene.phaseManager.pushPhase(new SelectStarterPhase()); } globalScene.newArena(globalScene.gameMode.getStartingBiome()); } else { globalScene.playBgm(); } - globalScene.pushPhase(new EncounterPhase(this.loaded)); + globalScene.phaseManager.pushPhase(new EncounterPhase(this.loaded)); if (this.loaded) { const availablePartyMembers = globalScene.getPokemonAllowedInBattle().length; - globalScene.pushPhase(new SummonPhase(0, true, true)); + globalScene.phaseManager.pushPhase(new SummonPhase(0, true, true)); if (globalScene.currentBattle.double && availablePartyMembers > 1) { - globalScene.pushPhase(new SummonPhase(1, true, true)); + globalScene.phaseManager.pushPhase(new SummonPhase(1, true, true)); } if ( @@ -329,9 +329,9 @@ export class TitlePhase extends Phase { ) { const minPartySize = globalScene.currentBattle.double ? 2 : 1; if (availablePartyMembers > minPartySize) { - globalScene.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); + globalScene.phaseManager.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); if (globalScene.currentBattle.double) { - globalScene.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); + globalScene.phaseManager.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); } } } diff --git a/src/phases/trainer-victory-phase.ts b/src/phases/trainer-victory-phase.ts index bd035248530..5b7b26d52fb 100644 --- a/src/phases/trainer-victory-phase.ts +++ b/src/phases/trainer-victory-phase.ts @@ -20,11 +20,13 @@ export class TrainerVictoryPhase extends BattlePhase { globalScene.playBgm(globalScene.currentBattle.trainer?.config.victoryBgm); - globalScene.unshiftPhase(new MoneyRewardPhase(globalScene.currentBattle.trainer?.config.moneyMultiplier!)); // TODO: is this bang correct? + globalScene.phaseManager.unshiftPhase( + new MoneyRewardPhase(globalScene.currentBattle.trainer?.config.moneyMultiplier!), + ); // TODO: is this bang correct? const modifierRewardFuncs = globalScene.currentBattle.trainer?.config.modifierRewardFuncs!; // TODO: is this bang correct? for (const modifierRewardFunc of modifierRewardFuncs) { - globalScene.unshiftPhase(new ModifierRewardPhase(modifierRewardFunc)); + globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierRewardFunc)); } const trainerType = globalScene.currentBattle.trainer?.config.trainerType!; // TODO: is this bang correct? @@ -35,7 +37,7 @@ export class TrainerVictoryPhase extends BattlePhase { globalScene.currentBattle.trainer?.config.isBoss ) { if (timedEventManager.getUpgradeUnlockedVouchers()) { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new ModifierRewardPhase( [ modifierTypes.VOUCHER_PLUS, @@ -46,7 +48,7 @@ export class TrainerVictoryPhase extends BattlePhase { ), ); } else { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new ModifierRewardPhase( [modifierTypes.VOUCHER, modifierTypes.VOUCHER, modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PREMIUM][ vouchers[TrainerType[trainerType]].voucherType diff --git a/src/phases/turn-end-phase.ts b/src/phases/turn-end-phase.ts index 4d486c4bbd6..832f60043ce 100644 --- a/src/phases/turn-end-phase.ts +++ b/src/phases/turn-end-phase.ts @@ -25,7 +25,7 @@ export class TurnEndPhase extends FieldPhase { globalScene.currentBattle.incrementTurn(); globalScene.eventTarget.dispatchEvent(new TurnEndEvent(globalScene.currentBattle.turn)); - globalScene.hideAbilityBar(); + globalScene.phaseManager.hideAbilityBar(); const handlePokemon = (pokemon: Pokemon) => { if (!pokemon.switchOutStatus) { @@ -34,7 +34,7 @@ export class TurnEndPhase extends FieldPhase { globalScene.applyModifiers(TurnHealModifier, pokemon.isPlayer(), pokemon); if (globalScene.arena.terrain?.terrainType === TerrainType.GRASSY && pokemon.isGrounded()) { - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new PokemonHealPhase( pokemon.getBattlerIndex(), Math.max(pokemon.getMaxHp() >> 4, 1), diff --git a/src/phases/turn-init-phase.ts b/src/phases/turn-init-phase.ts index 7f94acd3b32..61ec5fd8a71 100644 --- a/src/phases/turn-init-phase.ts +++ b/src/phases/turn-init-phase.ts @@ -22,14 +22,18 @@ export class TurnInitPhase extends FieldPhase { globalScene.getPlayerField().forEach(p => { // If this pokemon is in play and evolved into something illegal under the current challenge, force a switch if (p.isOnField() && !p.isAllowedInBattle()) { - globalScene.queueMessage(i18next.t("challenges:illegalEvolution", { pokemon: p.name }), null, true); + globalScene.phaseManager.queueMessage( + i18next.t("challenges:illegalEvolution", { pokemon: p.name }), + null, + true, + ); const allowedPokemon = globalScene.getPokemonAllowedInBattle(); if (!allowedPokemon.length) { // If there are no longer any legal pokemon in the party, game over. - globalScene.clearPhaseQueue(); - globalScene.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.unshiftPhase(new GameOverPhase()); } else if ( allowedPokemon.length >= globalScene.currentBattle.getBattlerCount() || (globalScene.currentBattle.double && !allowedPokemon[0].isActive(true)) @@ -42,7 +46,7 @@ export class TurnInitPhase extends FieldPhase { p.leaveField(); } if (allowedPokemon.length === 1 && globalScene.currentBattle.double) { - globalScene.unshiftPhase(new ToggleDoublePositionPhase(true)); + globalScene.phaseManager.unshiftPhase(new ToggleDoublePositionPhase(true)); } } }); @@ -65,11 +69,13 @@ export class TurnInitPhase extends FieldPhase { pokemon.resetTurnData(); - globalScene.pushPhase(pokemon.isPlayer() ? new CommandPhase(i) : new EnemyCommandPhase(i - BattlerIndex.ENEMY)); + globalScene.phaseManager.pushPhase( + pokemon.isPlayer() ? new CommandPhase(i) : new EnemyCommandPhase(i - BattlerIndex.ENEMY), + ); } }); - globalScene.pushPhase(new TurnStartPhase()); + globalScene.phaseManager.pushPhase(new TurnStartPhase()); this.end(); } diff --git a/src/phases/turn-start-phase.ts b/src/phases/turn-start-phase.ts index 2d009b30bf3..c07feac0888 100644 --- a/src/phases/turn-start-phase.ts +++ b/src/phases/turn-start-phase.ts @@ -153,7 +153,7 @@ export class TurnStartPhase extends FieldPhase { switch (preTurnCommand?.command) { case Command.TERA: - globalScene.pushPhase(new TeraPhase(pokemon)); + globalScene.phaseManager.pushPhase(new TeraPhase(pokemon)); } } @@ -176,11 +176,13 @@ export class TurnStartPhase extends FieldPhase { pokemon.getMoveset().find(m => m.moveId === queuedMove.move && m.ppUsed < m.getMovePp()) || new PokemonMove(queuedMove.move); if (move.getMove().hasAttr(MoveHeaderAttr)) { - globalScene.unshiftPhase(new MoveHeaderPhase(pokemon, move)); + globalScene.phaseManager.unshiftPhase(new MoveHeaderPhase(pokemon, move)); } if (pokemon.isPlayer()) { if (turnCommand.cursor === -1) { - globalScene.pushPhase(new MovePhase(pokemon, turnCommand.targets || turnCommand.move!.targets, move)); //TODO: is the bang correct here? + globalScene.phaseManager.pushPhase( + new MovePhase(pokemon, turnCommand.targets || turnCommand.move!.targets, move), + ); //TODO: is the bang correct here? } else { const playerPhase = new MovePhase( pokemon, @@ -189,10 +191,10 @@ export class TurnStartPhase extends FieldPhase { false, queuedMove.ignorePP, ); //TODO: is the bang correct here? - globalScene.pushPhase(playerPhase); + globalScene.phaseManager.pushPhase(playerPhase); } } else { - globalScene.pushPhase( + globalScene.phaseManager.pushPhase( new MovePhase( pokemon, turnCommand.targets || turnCommand.move!.targets, @@ -204,11 +206,13 @@ export class TurnStartPhase extends FieldPhase { } break; case Command.BALL: - globalScene.unshiftPhase(new AttemptCapturePhase(turnCommand.targets![0] % 2, turnCommand.cursor!)); //TODO: is the bang correct here? + globalScene.phaseManager.unshiftPhase( + new AttemptCapturePhase(turnCommand.targets![0] % 2, turnCommand.cursor!), + ); //TODO: is the bang correct here? break; case Command.POKEMON: const switchType = turnCommand.args?.[0] ? SwitchType.BATON_PASS : SwitchType.SWITCH; - globalScene.unshiftPhase( + globalScene.phaseManager.unshiftPhase( new SwitchSummonPhase(switchType, pokemon.getFieldIndex(), turnCommand.cursor!, true, pokemon.isPlayer()), ); break; @@ -233,18 +237,18 @@ export class TurnStartPhase extends FieldPhase { runningPokemon = hasRunAway !== undefined ? hasRunAway : fasterPokemon; } } - globalScene.unshiftPhase(new AttemptRunPhase(runningPokemon.getFieldIndex())); + globalScene.phaseManager.unshiftPhase(new AttemptRunPhase(runningPokemon.getFieldIndex())); break; } } - globalScene.pushPhase(new WeatherEffectPhase()); - globalScene.pushPhase(new BerryPhase()); + globalScene.phaseManager.pushPhase(new WeatherEffectPhase()); + globalScene.phaseManager.pushPhase(new BerryPhase()); /** Add a new phase to check who should be taking status damage */ - globalScene.pushPhase(new CheckStatusEffectPhase(moveOrder)); + globalScene.phaseManager.pushPhase(new CheckStatusEffectPhase(moveOrder)); - globalScene.pushPhase(new TurnEndPhase()); + globalScene.phaseManager.pushPhase(new TurnEndPhase()); /** * this.end() will call shiftPhase(), which dumps everything from PrependQueue (aka everything that is unshifted()) to the front diff --git a/src/phases/unavailable-phase.ts b/src/phases/unavailable-phase.ts index 4c4333ceb90..a6fc4a1be61 100644 --- a/src/phases/unavailable-phase.ts +++ b/src/phases/unavailable-phase.ts @@ -7,7 +7,7 @@ export class UnavailablePhase extends Phase { public readonly phaseName = "UnavailablePhase"; start(): void { globalScene.ui.setMode(UiMode.UNAVAILABLE, () => { - globalScene.unshiftPhase(new LoginPhase(true)); + globalScene.phaseManager.unshiftPhase(new LoginPhase(true)); this.end(); }); } diff --git a/src/phases/victory-phase.ts b/src/phases/victory-phase.ts index 2d21f8abc08..0a08e010720 100644 --- a/src/phases/victory-phase.ts +++ b/src/phases/victory-phase.ts @@ -51,12 +51,12 @@ export class VictoryPhase extends PokemonPhase { .getEnemyParty() .find(p => (globalScene.currentBattle.battleType === BattleType.WILD ? p.isOnField() : !p?.isFainted(true))) ) { - globalScene.pushPhase(new BattleEndPhase(true)); + globalScene.phaseManager.pushPhase(new BattleEndPhase(true)); if (globalScene.currentBattle.battleType === BattleType.TRAINER) { - globalScene.pushPhase(new TrainerVictoryPhase()); + globalScene.phaseManager.pushPhase(new TrainerVictoryPhase()); } if (globalScene.gameMode.isEndless || !globalScene.gameMode.isWaveFinal(globalScene.currentBattle.waveIndex)) { - globalScene.pushPhase(new EggLapsePhase()); + globalScene.phaseManager.pushPhase(new EggLapsePhase()); if (globalScene.gameMode.isClassic) { switch (globalScene.currentBattle.waveIndex) { case ClassicFixedBossWaves.RIVAL_1: @@ -64,34 +64,36 @@ export class VictoryPhase extends PokemonPhase { // Get event modifiers for this wave timedEventManager .getFixedBattleEventRewards(globalScene.currentBattle.waveIndex) - .map(r => globalScene.pushPhase(new ModifierRewardPhase(modifierTypes[r]))); + .map(r => globalScene.phaseManager.pushPhase(new ModifierRewardPhase(modifierTypes[r]))); break; case ClassicFixedBossWaves.EVIL_BOSS_2: // Should get Lock Capsule on 165 before shop phase so it can be used in the rewards shop - globalScene.pushPhase(new ModifierRewardPhase(modifierTypes.LOCK_CAPSULE)); + globalScene.phaseManager.pushPhase(new ModifierRewardPhase(modifierTypes.LOCK_CAPSULE)); break; } } if (globalScene.currentBattle.waveIndex % 10) { - globalScene.pushPhase(new SelectModifierPhase(undefined, undefined, this.getFixedBattleCustomModifiers())); + globalScene.phaseManager.pushPhase( + new SelectModifierPhase(undefined, undefined, this.getFixedBattleCustomModifiers()), + ); } else if (globalScene.gameMode.isDaily) { - globalScene.pushPhase(new ModifierRewardPhase(modifierTypes.EXP_CHARM)); + globalScene.phaseManager.pushPhase(new ModifierRewardPhase(modifierTypes.EXP_CHARM)); if ( globalScene.currentBattle.waveIndex > 10 && !globalScene.gameMode.isWaveFinal(globalScene.currentBattle.waveIndex) ) { - globalScene.pushPhase(new ModifierRewardPhase(modifierTypes.GOLDEN_POKEBALL)); + globalScene.phaseManager.pushPhase(new ModifierRewardPhase(modifierTypes.GOLDEN_POKEBALL)); } } else { const superExpWave = !globalScene.gameMode.isEndless ? (globalScene.offsetGym ? 0 : 20) : 10; if (globalScene.gameMode.isEndless && globalScene.currentBattle.waveIndex === 10) { - globalScene.pushPhase(new ModifierRewardPhase(modifierTypes.EXP_SHARE)); + globalScene.phaseManager.pushPhase(new ModifierRewardPhase(modifierTypes.EXP_SHARE)); } if ( globalScene.currentBattle.waveIndex <= 750 && (globalScene.currentBattle.waveIndex <= 500 || globalScene.currentBattle.waveIndex % 30 === superExpWave) ) { - globalScene.pushPhase( + globalScene.phaseManager.pushPhase( new ModifierRewardPhase( globalScene.currentBattle.waveIndex % 30 !== superExpWave || globalScene.currentBattle.waveIndex > 250 ? modifierTypes.EXP_CHARM @@ -100,30 +102,30 @@ export class VictoryPhase extends PokemonPhase { ); } if (globalScene.currentBattle.waveIndex <= 150 && !(globalScene.currentBattle.waveIndex % 50)) { - globalScene.pushPhase(new ModifierRewardPhase(modifierTypes.GOLDEN_POKEBALL)); + globalScene.phaseManager.pushPhase(new ModifierRewardPhase(modifierTypes.GOLDEN_POKEBALL)); } if (globalScene.gameMode.isEndless && !(globalScene.currentBattle.waveIndex % 50)) { - globalScene.pushPhase( + globalScene.phaseManager.pushPhase( new ModifierRewardPhase( !(globalScene.currentBattle.waveIndex % 250) ? modifierTypes.VOUCHER_PREMIUM : modifierTypes.VOUCHER_PLUS, ), ); - globalScene.pushPhase(new AddEnemyBuffModifierPhase()); + globalScene.phaseManager.pushPhase(new AddEnemyBuffModifierPhase()); } } if (globalScene.gameMode.hasRandomBiomes || globalScene.isNewBiome()) { - globalScene.pushPhase(new SelectBiomePhase()); + globalScene.phaseManager.pushPhase(new SelectBiomePhase()); } - globalScene.pushPhase(new NewBattlePhase()); + globalScene.phaseManager.pushPhase(new NewBattlePhase()); } else { globalScene.currentBattle.battleType = BattleType.CLEAR; globalScene.score += globalScene.gameMode.getClearScoreBonus(); globalScene.updateScoreText(); - globalScene.pushPhase(new GameOverPhase(true)); + globalScene.phaseManager.pushPhase(new GameOverPhase(true)); } } diff --git a/src/phases/weather-effect-phase.ts b/src/phases/weather-effect-phase.ts index cd91b89771c..2918cd462df 100644 --- a/src/phases/weather-effect-phase.ts +++ b/src/phases/weather-effect-phase.ts @@ -65,7 +65,7 @@ export class WeatherEffectPhase extends CommonAnimPhase { const damage = toDmgValue(pokemon.getMaxHp() / 16); - globalScene.queueMessage(getWeatherDamageMessage(this.weather!.weatherType, pokemon) ?? ""); + globalScene.phaseManager.queueMessage(getWeatherDamageMessage(this.weather!.weatherType, pokemon) ?? ""); pokemon.damageAndUpdate(damage, { result: HitResult.INDIRECT, ignoreSegments: true }); }; diff --git a/src/system/game-data.ts b/src/system/game-data.ts index d9b8d73d3c3..9a24194b8e9 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -426,8 +426,8 @@ export class GameData { globalScene.ui.savingIcon.hide(); if (error) { if (error.startsWith("session out of date")) { - globalScene.clearPhaseQueue(); - globalScene.unshiftPhase(new ReloadSessionPhase()); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.unshiftPhase(new ReloadSessionPhase()); } console.error(error); return resolve(false); @@ -459,7 +459,7 @@ export class GameData { saveDataOrErr[0] !== "{" ) { if (saveDataOrErr === 404) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( "Save data could not be found. If this is a new account, you can safely ignore this message.", null, true, @@ -467,7 +467,7 @@ export class GameData { return resolve(true); } if (typeof saveDataOrErr === "string" && saveDataOrErr?.includes("Too many connections")) { - globalScene.queueMessage( + globalScene.phaseManager.queueMessage( "Too many people are trying to connect and the server is overloaded. Please try again later.", null, true, @@ -746,8 +746,8 @@ export class GameData { }); if (systemData) { - globalScene.clearPhaseQueue(); - globalScene.unshiftPhase(new ReloadSessionPhase(JSON.stringify(systemData))); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.unshiftPhase(new ReloadSessionPhase(JSON.stringify(systemData))); this.clearLocalData(); return false; } @@ -1248,8 +1248,8 @@ export class GameData { pokerogueApi.savedata.session.delete({ slot: slotId, clientSessionId }).then(error => { if (error) { if (error.startsWith("session out of date")) { - globalScene.clearPhaseQueue(); - globalScene.unshiftPhase(new ReloadSessionPhase()); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.unshiftPhase(new ReloadSessionPhase()); } console.error(error); resolve(false); @@ -1320,8 +1320,8 @@ export class GameData { localStorage.removeItem(`sessionData${slotId ? slotId : ""}_${loggedInUser?.username}`); } else { if (jsonResponse?.error?.startsWith("session out of date")) { - globalScene.clearPhaseQueue(); - globalScene.unshiftPhase(new ReloadSessionPhase()); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.unshiftPhase(new ReloadSessionPhase()); } console.error(jsonResponse); @@ -1458,8 +1458,8 @@ export class GameData { } if (error) { if (error.startsWith("session out of date")) { - globalScene.clearPhaseQueue(); - globalScene.unshiftPhase(new ReloadSessionPhase()); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.unshiftPhase(new ReloadSessionPhase()); } console.error(error); return resolve(false); diff --git a/src/ui/ball-ui-handler.ts b/src/ui/ball-ui-handler.ts index 66d7847213f..bb1e8d0e85e 100644 --- a/src/ui/ball-ui-handler.ts +++ b/src/ui/ball-ui-handler.ts @@ -78,7 +78,7 @@ export default class BallUiHandler extends UiHandler { const pokeballTypeCount = Object.keys(globalScene.pokeballCounts).length; if (button === Button.ACTION || button === Button.CANCEL) { - const commandPhase = globalScene.getCurrentPhase() as CommandPhase; + const commandPhase = globalScene.phaseManager.getCurrentPhase() as CommandPhase; success = true; if (button === Button.ACTION && this.cursor < pokeballTypeCount) { if (globalScene.pokeballCounts[this.cursor]) { diff --git a/src/ui/challenges-select-ui-handler.ts b/src/ui/challenges-select-ui-handler.ts index d1df16a457b..d2c2dbc6c0d 100644 --- a/src/ui/challenges-select-ui-handler.ts +++ b/src/ui/challenges-select-ui-handler.ts @@ -383,16 +383,16 @@ export default class GameChallengesUiHandler extends UiHandler { this.cursorObj?.setVisible(true); this.updateChallengeArrows(this.startCursor.visible); } else { - globalScene.clearPhaseQueue(); - globalScene.pushPhase(new TitlePhase()); - globalScene.getCurrentPhase()?.end(); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.phaseManager.pushPhase(new TitlePhase()); + globalScene.phaseManager.getCurrentPhase()?.end(); } success = true; } else if (button === Button.SUBMIT || button === Button.ACTION) { if (this.hasSelectedChallenge) { if (this.startCursor.visible) { - globalScene.unshiftPhase(new SelectStarterPhase()); - globalScene.getCurrentPhase()?.end(); + globalScene.phaseManager.unshiftPhase(new SelectStarterPhase()); + globalScene.phaseManager.getCurrentPhase()?.end(); } else { this.startCursor.setVisible(true); this.cursorObj?.setVisible(false); diff --git a/src/ui/command-ui-handler.ts b/src/ui/command-ui-handler.ts index 0d67fdea624..0d38672323a 100644 --- a/src/ui/command-ui-handler.ts +++ b/src/ui/command-ui-handler.ts @@ -74,11 +74,11 @@ export default class CommandUiHandler extends UiHandler { this.commandsContainer.setVisible(true); let commandPhase: CommandPhase; - const currentPhase = globalScene.getCurrentPhase(); + const currentPhase = globalScene.phaseManager.getCurrentPhase(); if (currentPhase?.is("CommandPhase")) { commandPhase = currentPhase; } else { - commandPhase = globalScene.getStandbyPhase() as CommandPhase; + commandPhase = globalScene.phaseManager.getStandbyPhase() as CommandPhase; } if (this.canTera()) { @@ -124,7 +124,7 @@ export default class CommandUiHandler extends UiHandler { switch (cursor) { // Fight case Command.FIGHT: - ui.setMode(UiMode.FIGHT, (globalScene.getCurrentPhase() as CommandPhase).getFieldIndex()); + ui.setMode(UiMode.FIGHT, (globalScene.phaseManager.getCurrentPhase() as CommandPhase).getFieldIndex()); success = true; break; // Ball @@ -137,7 +137,7 @@ export default class CommandUiHandler extends UiHandler { ui.setMode( UiMode.PARTY, PartyUiMode.SWITCH, - (globalScene.getCurrentPhase() as CommandPhase).getPokemon().getFieldIndex(), + (globalScene.phaseManager.getCurrentPhase() as CommandPhase).getPokemon().getFieldIndex(), null, PartyUiHandler.FilterNonFainted, ); @@ -145,16 +145,20 @@ export default class CommandUiHandler extends UiHandler { break; // Run case Command.RUN: - (globalScene.getCurrentPhase() as CommandPhase).handleCommand(Command.RUN, 0); + (globalScene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.RUN, 0); success = true; break; case Command.TERA: - ui.setMode(UiMode.FIGHT, (globalScene.getCurrentPhase() as CommandPhase).getFieldIndex(), Command.TERA); + ui.setMode( + UiMode.FIGHT, + (globalScene.phaseManager.getCurrentPhase() as CommandPhase).getFieldIndex(), + Command.TERA, + ); success = true; break; } } else { - (globalScene.getCurrentPhase() as CommandPhase).cancel(); + (globalScene.phaseManager.getCurrentPhase() as CommandPhase).cancel(); } } else { switch (button) { diff --git a/src/ui/egg-hatch-scene-handler.ts b/src/ui/egg-hatch-scene-handler.ts index b2863a213f8..85c4199ff1d 100644 --- a/src/ui/egg-hatch-scene-handler.ts +++ b/src/ui/egg-hatch-scene-handler.ts @@ -44,7 +44,7 @@ export default class EggHatchSceneHandler extends UiHandler { processInput(button: Button): boolean { if (button === Button.ACTION || button === Button.CANCEL) { - const phase = globalScene.getCurrentPhase(); + const phase = globalScene.phaseManager.getCurrentPhase(); if (phase?.is("EggHatchPhase") && phase.trySkip()) { return true; } diff --git a/src/ui/egg-summary-ui-handler.ts b/src/ui/egg-summary-ui-handler.ts index ed2506ba0c1..90dc60e16b7 100644 --- a/src/ui/egg-summary-ui-handler.ts +++ b/src/ui/egg-summary-ui-handler.ts @@ -221,7 +221,7 @@ export default class EggSummaryUiHandler extends MessageUiHandler { let error = false; if (button === Button.CANCEL) { if (!this.blockExit) { - const phase = globalScene.getCurrentPhase(); + const phase = globalScene.phaseManager.getCurrentPhase(); if (phase?.is("EggSummaryPhase")) { phase.end(); } diff --git a/src/ui/fight-ui-handler.ts b/src/ui/fight-ui-handler.ts index 208e627023b..3fe06cdf039 100644 --- a/src/ui/fight-ui-handler.ts +++ b/src/ui/fight-ui-handler.ts @@ -126,7 +126,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { messageHandler.bg.setVisible(false); messageHandler.commandWindow.setVisible(false); messageHandler.movesWindowContainer.setVisible(true); - const pokemon = (globalScene.getCurrentPhase() as CommandPhase).getPokemon(); + const pokemon = (globalScene.phaseManager.getCurrentPhase() as CommandPhase).getPokemon(); if (pokemon.tempSummonData.turnCount <= 1) { this.setCursor(0); } else { @@ -147,7 +147,9 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { if (button === Button.CANCEL || button === Button.ACTION) { if (button === Button.ACTION) { - if ((globalScene.getCurrentPhase() as CommandPhase).handleCommand(this.fromCommand, cursor, false)) { + if ( + (globalScene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(this.fromCommand, cursor, false) + ) { success = true; } else { ui.playError(); @@ -237,7 +239,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { ui.add(this.cursorObj); } - const pokemon = (globalScene.getCurrentPhase() as CommandPhase).getPokemon(); + const pokemon = (globalScene.phaseManager.getCurrentPhase() as CommandPhase).getPokemon(); const moveset = pokemon.getMoveset(); const hasMove = cursor < moveset.length; @@ -318,7 +320,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { } displayMoves() { - const pokemon = (globalScene.getCurrentPhase() as CommandPhase).getPokemon(); + const pokemon = (globalScene.phaseManager.getCurrentPhase() as CommandPhase).getPokemon(); const moveset = pokemon.getMoveset(); for (let moveIndex = 0; moveIndex < 4; moveIndex++) { @@ -389,7 +391,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { clearMoves() { this.movesContainer.removeAll(true); - const opponents = (globalScene.getCurrentPhase() as CommandPhase).getPokemon().getOpponents(); + const opponents = (globalScene.phaseManager.getCurrentPhase() as CommandPhase).getPokemon().getOpponents(); opponents.forEach(opponent => { (opponent as EnemyPokemon).updateEffectiveness(); }); diff --git a/src/ui/menu-ui-handler.ts b/src/ui/menu-ui-handler.ts index b6c3a9d7b8e..e68cc706aba 100644 --- a/src/ui/menu-ui-handler.ts +++ b/src/ui/menu-ui-handler.ts @@ -125,7 +125,7 @@ export default class MenuUiHandler extends MessageUiHandler { const ui = this.getUi(); this.excludedMenus = () => [ { - condition: !!globalScene.getCurrentPhase()?.is("SelectModifierPhase"), + condition: !!globalScene.phaseManager.getCurrentPhase()?.is("SelectModifierPhase"), options: [MenuOptions.EGG_GACHA], }, { condition: bypassLogin, options: [MenuOptions.LOG_OUT] }, diff --git a/src/ui/mystery-encounter-ui-handler.ts b/src/ui/mystery-encounter-ui-handler.ts index 0866ed8788e..83ce88714f5 100644 --- a/src/ui/mystery-encounter-ui-handler.ts +++ b/src/ui/mystery-encounter-ui-handler.ts @@ -156,7 +156,9 @@ export default class MysteryEncounterUiHandler extends UiHandler { ) { success = false; } else { - if ((globalScene.getCurrentPhase() as MysteryEncounterPhase).handleOptionSelect(selected, cursor)) { + if ( + (globalScene.phaseManager.getCurrentPhase() as MysteryEncounterPhase).handleOptionSelect(selected, cursor) + ) { success = true; } else { ui.playError(); diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index e26ecb531e9..6ce192751df 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -750,7 +750,7 @@ export default class PartyUiHandler extends MessageUiHandler { // TODO: This risks hitting the other options (.MOVE_i and ALL) so does it? Do we need an extra check? if ( option >= PartyOption.FORM_CHANGE_ITEM && - globalScene.getCurrentPhase()?.is("SelectModifierPhase") && + globalScene.phaseManager.getCurrentPhase()?.is("SelectModifierPhase") && this.partyUiMode === PartyUiMode.CHECK ) { const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); @@ -804,7 +804,7 @@ export default class PartyUiHandler extends MessageUiHandler { this.partyUiMode === PartyUiMode.SWITCH ) { this.clearOptions(); - (globalScene.getCurrentPhase() as CommandPhase).handleCommand( + (globalScene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand( Command.POKEMON, this.cursor, option === PartyOption.PASS_BATON, @@ -1337,7 +1337,7 @@ export default class PartyUiHandler extends MessageUiHandler { this.addCommonOptions(pokemon); break; case PartyUiMode.CHECK: - if (globalScene.getCurrentPhase()?.is("SelectModifierPhase")) { + if (globalScene.phaseManager.getCurrentPhase()?.is("SelectModifierPhase")) { const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); for (let i = 0; i < formChangeItemModifiers.length; i++) { this.options.push(PartyOption.FORM_CHANGE_ITEM + i); diff --git a/src/ui/pokedex-page-ui-handler.ts b/src/ui/pokedex-page-ui-handler.ts index 5875e3394a2..a81265e1a55 100644 --- a/src/ui/pokedex-page-ui-handler.ts +++ b/src/ui/pokedex-page-ui-handler.ts @@ -666,7 +666,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { show(args: any[]): boolean { // Allow the use of candies if we are in one of the whitelisted phases this.canUseCandies = ["TitlePhase", "SelectStarterPhase", "CommandPhase"].includes( - globalScene.getCurrentPhase()?.phaseName ?? "", + globalScene.phaseManager.getCurrentPhase()?.phaseName ?? "", ); if (args.length >= 1 && args[0] === "refresh") { diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index b7a7e0f3e6e..973805e4ca1 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -4305,15 +4305,15 @@ export default class StarterSelectUiHandler extends MessageUiHandler { UiMode.CONFIRM, () => { ui.setMode(UiMode.STARTER_SELECT); - globalScene.clearPhaseQueue(); + globalScene.phaseManager.clearPhaseQueue(); if (globalScene.gameMode.isChallenge) { - globalScene.pushPhase(new SelectChallengePhase()); - globalScene.pushPhase(new EncounterPhase()); + globalScene.phaseManager.pushPhase(new SelectChallengePhase()); + globalScene.phaseManager.pushPhase(new EncounterPhase()); } else { - globalScene.pushPhase(new TitlePhase()); + globalScene.phaseManager.pushPhase(new TitlePhase()); } this.clearText(); - globalScene.getCurrentPhase()?.end(); + globalScene.phaseManager.getCurrentPhase()?.end(); }, cancel, null, diff --git a/test/abilities/cud_chew.test.ts b/test/abilities/cud_chew.test.ts index 3c918f01330..8a80c6625cc 100644 --- a/test/abilities/cud_chew.test.ts +++ b/test/abilities/cud_chew.test.ts @@ -67,7 +67,7 @@ describe("Abilities - Cud Chew", () => { }); it("shows ability popup for eating berry, even if berry is useless", async () => { - const abDisplaySpy = vi.spyOn(globalScene, "queueAbilityDisplay"); + const abDisplaySpy = vi.spyOn(globalScene.phaseManager, "queueAbilityDisplay"); game.override.enemyMoveset([MoveId.SPLASH, MoveId.HEAL_PULSE]); await game.classicMode.startBattle([SpeciesId.FARIGIRAF]); @@ -89,7 +89,7 @@ describe("Abilities - Cud Chew", () => { await game.move.selectEnemyMove(MoveId.HEAL_PULSE); await game.phaseInterceptor.to("TurnEndPhase"); - // globalScene.queueAbilityDisplay should be called twice: + // globalScene.phaseManager.queueAbilityDisplay should be called twice: // once to show cud chew text before regurgitating berries, // once to hide ability text after finishing. expect(abDisplaySpy).toBeCalledTimes(2); diff --git a/test/abilities/dancer.test.ts b/test/abilities/dancer.test.ts index 086c69300b4..ae702e4b1e7 100644 --- a/test/abilities/dancer.test.ts +++ b/test/abilities/dancer.test.ts @@ -44,7 +44,7 @@ describe("Abilities - Dancer", () => { await game.phaseInterceptor.to("MovePhase"); // feebas uses swords dance await game.phaseInterceptor.to("MovePhase", false); // oricorio copies swords dance - let currentPhase = game.scene.getCurrentPhase() as MovePhase; + let currentPhase = game.scene.phaseManager.getCurrentPhase() as MovePhase; expect(currentPhase.pokemon).toBe(oricorio); expect(currentPhase.move.moveId).toBe(MoveId.SWORDS_DANCE); @@ -54,7 +54,7 @@ describe("Abilities - Dancer", () => { await game.phaseInterceptor.to("MovePhase"); // magikarp (left) uses victory dance await game.phaseInterceptor.to("MovePhase", false); // oricorio copies magikarp's victory dance - currentPhase = game.scene.getCurrentPhase() as MovePhase; + currentPhase = game.scene.phaseManager.getCurrentPhase() as MovePhase; expect(currentPhase.pokemon).toBe(oricorio); expect(currentPhase.move.moveId).toBe(MoveId.VICTORY_DANCE); @@ -91,13 +91,13 @@ describe("Abilities - Dancer", () => { await game.phaseInterceptor.to("MovePhase"); // shuckle 2 mirror moves oricorio await game.phaseInterceptor.to("MovePhase"); // calls instructed rev dance - let currentPhase = game.scene.getCurrentPhase() as MovePhase; + let currentPhase = game.scene.phaseManager.getCurrentPhase() as MovePhase; expect(currentPhase.pokemon).toBe(shuckle2); expect(currentPhase.move.moveId).toBe(MoveId.REVELATION_DANCE); await game.phaseInterceptor.to("MovePhase"); // shuckle 1 instructs oricorio await game.phaseInterceptor.to("MovePhase"); - currentPhase = game.scene.getCurrentPhase() as MovePhase; + currentPhase = game.scene.phaseManager.getCurrentPhase() as MovePhase; expect(currentPhase.pokemon).toBe(oricorio); expect(currentPhase.move.moveId).toBe(MoveId.REVELATION_DANCE); }); diff --git a/test/abilities/desolate-land.test.ts b/test/abilities/desolate-land.test.ts index c5238a40762..bcd980187ac 100644 --- a/test/abilities/desolate-land.test.ts +++ b/test/abilities/desolate-land.test.ts @@ -146,7 +146,7 @@ describe("Abilities - Desolate Land", () => { vi.spyOn(game.scene.getPlayerPokemon()!, "randBattleSeedInt").mockReturnValue(0); - const commandPhase = game.scene.getCurrentPhase() as CommandPhase; + const commandPhase = game.scene.phaseManager.getCurrentPhase() as CommandPhase; commandPhase.handleCommand(Command.RUN, 0); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/abilities/disguise.test.ts b/test/abilities/disguise.test.ts index dd05c540620..15ded41527a 100644 --- a/test/abilities/disguise.test.ts +++ b/test/abilities/disguise.test.ts @@ -201,7 +201,7 @@ describe("Abilities - Disguise", () => { game.move.select(MoveId.SHADOW_SNEAK); await game.toNextWave(); - expect(game.scene.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); + expect(game.scene.phaseManager.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); expect(game.scene.currentBattle.waveIndex).toBe(2); }); diff --git a/test/abilities/honey_gather.test.ts b/test/abilities/honey_gather.test.ts index e2f87f0af37..a069654ae21 100644 --- a/test/abilities/honey_gather.test.ts +++ b/test/abilities/honey_gather.test.ts @@ -64,7 +64,7 @@ describe("Abilities - Honey Gather", () => { const enemy = game.scene.getEnemyPokemon()!; vi.spyOn(enemy, "scene", "get").mockReturnValue(game.scene); - const commandPhase = game.scene.getCurrentPhase() as CommandPhase; + const commandPhase = game.scene.phaseManager.getCurrentPhase() as CommandPhase; commandPhase.handleCommand(Command.RUN, 0); await game.toNextTurn(); diff --git a/test/abilities/imposter.test.ts b/test/abilities/imposter.test.ts index c27e679ec54..e9ae6bd64bb 100644 --- a/test/abilities/imposter.test.ts +++ b/test/abilities/imposter.test.ts @@ -140,7 +140,7 @@ describe("Abilities - Imposter", () => { await game.doKillOpponents(); await game.toNextWave(); - expect(game.scene.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); + expect(game.scene.phaseManager.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); expect(game.scene.currentBattle.waveIndex).toBe(2); await game.reload.reloadSession(); @@ -176,7 +176,7 @@ describe("Abilities - Imposter", () => { await game.doKillOpponents(); await game.toNextWave(); - expect(game.scene.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); + expect(game.scene.phaseManager.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); expect(game.scene.currentBattle.waveIndex).toBe(2); await game.reload.reloadSession(); diff --git a/test/abilities/mycelium_might.test.ts b/test/abilities/mycelium_might.test.ts index 6e4da4bc933..1f236f2c2fe 100644 --- a/test/abilities/mycelium_might.test.ts +++ b/test/abilities/mycelium_might.test.ts @@ -52,7 +52,7 @@ describe("Abilities - Mycelium Might", () => { game.move.select(MoveId.BABY_DOLL_EYES); await game.phaseInterceptor.to(TurnStartPhase, false); - const phase = game.scene.getCurrentPhase() as TurnStartPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as TurnStartPhase; const speedOrder = phase.getSpeedOrder(); const commandOrder = phase.getCommandOrder(); // The opponent Pokemon (without Mycelium Might) goes first despite having lower speed than the player Pokemon. @@ -76,7 +76,7 @@ describe("Abilities - Mycelium Might", () => { game.move.select(MoveId.BABY_DOLL_EYES); await game.phaseInterceptor.to(TurnStartPhase, false); - const phase = game.scene.getCurrentPhase() as TurnStartPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as TurnStartPhase; const speedOrder = phase.getSpeedOrder(); const commandOrder = phase.getCommandOrder(); // The player Pokemon (with M.M.) goes first because its move is still within a higher priority bracket than its opponent. @@ -97,7 +97,7 @@ describe("Abilities - Mycelium Might", () => { game.move.select(MoveId.QUICK_ATTACK); await game.phaseInterceptor.to(TurnStartPhase, false); - const phase = game.scene.getCurrentPhase() as TurnStartPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as TurnStartPhase; const speedOrder = phase.getSpeedOrder(); const commandOrder = phase.getCommandOrder(); // The player Pokemon (with M.M.) goes first because it has a higher speed and did not use a status move. diff --git a/test/abilities/neutralizing_gas.test.ts b/test/abilities/neutralizing_gas.test.ts index 7c78cc9db64..2d1fef29688 100644 --- a/test/abilities/neutralizing_gas.test.ts +++ b/test/abilities/neutralizing_gas.test.ts @@ -166,7 +166,7 @@ describe("Abilities - Neutralizing Gas", () => { vi.spyOn(game.scene.getPlayerPokemon()!, "randBattleSeedInt").mockReturnValue(0); - const commandPhase = game.scene.getCurrentPhase() as CommandPhase; + const commandPhase = game.scene.phaseManager.getCurrentPhase() as CommandPhase; commandPhase.handleCommand(Command.RUN, 0); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/abilities/no_guard.test.ts b/test/abilities/no_guard.test.ts index 1cb5945e9ff..5b127204f9f 100644 --- a/test/abilities/no_guard.test.ts +++ b/test/abilities/no_guard.test.ts @@ -45,7 +45,7 @@ describe("Abilities - No Guard", () => { await game.phaseInterceptor.to(MoveEffectPhase, false); - const moveEffectPhase = game.scene.getCurrentPhase() as MoveEffectPhase; + const moveEffectPhase = game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase; vi.spyOn(moveEffectPhase, "hitCheck"); await game.phaseInterceptor.to(MoveEndPhase); diff --git a/test/abilities/shield_dust.test.ts b/test/abilities/shield_dust.test.ts index e99b7563cb7..03b175c3ca5 100644 --- a/test/abilities/shield_dust.test.ts +++ b/test/abilities/shield_dust.test.ts @@ -51,7 +51,7 @@ describe("Abilities - Shield Dust", () => { await game.phaseInterceptor.to(MoveEffectPhase, false); // Shield Dust negates secondary effect - const phase = game.scene.getCurrentPhase() as MoveEffectPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase; const move = phase.move; expect(move.id).toBe(MoveId.AIR_SLASH); diff --git a/test/abilities/speed_boost.test.ts b/test/abilities/speed_boost.test.ts index 9890f22ffcd..245bf22345d 100644 --- a/test/abilities/speed_boost.test.ts +++ b/test/abilities/speed_boost.test.ts @@ -98,9 +98,9 @@ describe("Abilities - Speed Boost", () => { it("should not trigger if pokemon fails to escape", async () => { await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - const commandPhase = game.scene.getCurrentPhase() as CommandPhase; + const commandPhase = game.scene.phaseManager.getCurrentPhase() as CommandPhase; commandPhase.handleCommand(Command.RUN, 0); - const runPhase = game.scene.getCurrentPhase() as AttemptRunPhase; + const runPhase = game.scene.phaseManager.getCurrentPhase() as AttemptRunPhase; runPhase.forceFailEscape = true; await game.phaseInterceptor.to(AttemptRunPhase); await game.toNextTurn(); diff --git a/test/abilities/stall.test.ts b/test/abilities/stall.test.ts index 78e7d49b48b..df40bed3e90 100644 --- a/test/abilities/stall.test.ts +++ b/test/abilities/stall.test.ts @@ -46,7 +46,7 @@ describe("Abilities - Stall", () => { game.move.select(MoveId.QUICK_ATTACK); await game.phaseInterceptor.to(TurnStartPhase, false); - const phase = game.scene.getCurrentPhase() as TurnStartPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as TurnStartPhase; const speedOrder = phase.getSpeedOrder(); const commandOrder = phase.getCommandOrder(); // The player Pokemon (without Stall) goes first despite having lower speed than the opponent. @@ -64,7 +64,7 @@ describe("Abilities - Stall", () => { game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnStartPhase, false); - const phase = game.scene.getCurrentPhase() as TurnStartPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as TurnStartPhase; const speedOrder = phase.getSpeedOrder(); const commandOrder = phase.getCommandOrder(); // The opponent Pokemon (with Stall) goes first because its move is still within a higher priority bracket than its opponent. @@ -83,7 +83,7 @@ describe("Abilities - Stall", () => { game.move.select(MoveId.TACKLE); await game.phaseInterceptor.to(TurnStartPhase, false); - const phase = game.scene.getCurrentPhase() as TurnStartPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as TurnStartPhase; const speedOrder = phase.getSpeedOrder(); const commandOrder = phase.getCommandOrder(); diff --git a/test/battle/battle-order.test.ts b/test/battle/battle-order.test.ts index 7983f1db1d2..c12760a7f30 100644 --- a/test/battle/battle-order.test.ts +++ b/test/battle/battle-order.test.ts @@ -44,7 +44,7 @@ describe("Battle order", () => { const playerPokemonIndex = playerPokemon.getBattlerIndex(); const enemyPokemonIndex = enemyPokemon.getBattlerIndex(); - const phase = game.scene.getCurrentPhase() as TurnStartPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as TurnStartPhase; const order = phase.getCommandOrder(); expect(order[0]).toBe(enemyPokemonIndex); expect(order[1]).toBe(playerPokemonIndex); @@ -63,7 +63,7 @@ describe("Battle order", () => { const playerPokemonIndex = playerPokemon.getBattlerIndex(); const enemyPokemonIndex = enemyPokemon.getBattlerIndex(); - const phase = game.scene.getCurrentPhase() as TurnStartPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as TurnStartPhase; const order = phase.getCommandOrder(); expect(order[0]).toBe(playerPokemonIndex); expect(order[1]).toBe(enemyPokemonIndex); @@ -85,7 +85,7 @@ describe("Battle order", () => { game.move.select(MoveId.TACKLE, 1); await game.phaseInterceptor.runFrom(SelectTargetPhase).to(TurnStartPhase, false); - const phase = game.scene.getCurrentPhase() as TurnStartPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as TurnStartPhase; const order = phase.getCommandOrder(); expect(order.slice(0, 2).includes(enemyIndices[0])).toBe(true); expect(order.slice(0, 2).includes(enemyIndices[1])).toBe(true); @@ -109,7 +109,7 @@ describe("Battle order", () => { game.move.select(MoveId.TACKLE, 1); await game.phaseInterceptor.runFrom(SelectTargetPhase).to(TurnStartPhase, false); - const phase = game.scene.getCurrentPhase() as TurnStartPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as TurnStartPhase; const order = phase.getCommandOrder(); expect(order[0]).toBe(enemyIndices[1]); expect(order.slice(1, 4).includes(enemyIndices[0])).toBe(true); @@ -134,7 +134,7 @@ describe("Battle order", () => { game.move.select(MoveId.TACKLE, 1); await game.phaseInterceptor.runFrom(SelectTargetPhase).to(TurnStartPhase, false); - const phase = game.scene.getCurrentPhase() as TurnStartPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as TurnStartPhase; const order = phase.getCommandOrder(); expect(order.slice(0, 2).includes(playerIndices[1])).toBe(true); expect(order.slice(0, 2).includes(enemyIndices[1])).toBe(true); diff --git a/test/battle/battle.test.ts b/test/battle/battle.test.ts index 03faf369dd7..b93c913d09a 100644 --- a/test/battle/battle.test.ts +++ b/test/battle/battle.test.ts @@ -87,7 +87,7 @@ describe("Test Battle Phase", () => { it("newGame one-liner", async () => { await game.classicMode.startBattle(); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("do attack wave 3 - single battle - regular - OHKO", async () => { @@ -196,7 +196,7 @@ describe("Test Battle Phase", () => { game.scene.gameMode = getGameMode(GameModes.CLASSIC); const starters = generateStarter(game.scene); const selectStarterPhase = new SelectStarterPhase(); - game.scene.pushPhase(new EncounterPhase(false)); + game.scene.phaseManager.pushPhase(new EncounterPhase(false)); selectStarterPhase.initBattle(starters); }); await game.phaseInterceptor.runFrom(SelectGenderPhase).to(SummonPhase); @@ -209,7 +209,7 @@ describe("Test Battle Phase", () => { game.override.ability(AbilityId.HYDRATION); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("1vs1", async () => { @@ -219,7 +219,7 @@ describe("Test Battle Phase", () => { game.override.ability(AbilityId.HYDRATION); await game.classicMode.startBattle([SpeciesId.BLASTOISE]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("2vs2", async () => { @@ -230,7 +230,7 @@ describe("Test Battle Phase", () => { game.override.startingWave(3); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("4vs2", async () => { @@ -241,7 +241,7 @@ describe("Test Battle Phase", () => { game.override.startingWave(3); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD, SpeciesId.DARKRAI, SpeciesId.GABITE]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("kill opponent pokemon", async () => { diff --git a/test/battle/special_battle.test.ts b/test/battle/special_battle.test.ts index c1a948a0759..f0c77668093 100644 --- a/test/battle/special_battle.test.ts +++ b/test/battle/special_battle.test.ts @@ -36,62 +36,62 @@ describe("Test Battle Phase", () => { game.override.battleStyle("single").startingWave(10); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs2 boss", async () => { game.override.battleStyle("double").startingWave(10); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs2 trainer", async () => { game.override.battleStyle("double").startingWave(5); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs1 trainer", async () => { game.override.battleStyle("single").startingWave(5); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs1 rival", async () => { game.override.battleStyle("single").startingWave(8); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs2 rival", async () => { game.override.battleStyle("double").startingWave(8); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 1vs1 trainer", async () => { game.override.battleStyle("single").startingWave(5); await game.classicMode.startBattle([SpeciesId.BLASTOISE]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 2vs2 trainer", async () => { game.override.battleStyle("double").startingWave(5); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); it("startBattle 4vs2 trainer", async () => { game.override.battleStyle("double").startingWave(5); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD, SpeciesId.DARKRAI, SpeciesId.GABITE]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); }, 20000); }); diff --git a/test/battlerTags/octolock.test.ts b/test/battlerTags/octolock.test.ts index 6189bd7febe..63784ed7f1b 100644 --- a/test/battlerTags/octolock.test.ts +++ b/test/battlerTags/octolock.test.ts @@ -28,7 +28,7 @@ describe("BattlerTag - OctolockTag", () => { const subject = new OctolockTag(1); - vi.spyOn(game.scene, "unshiftPhase").mockImplementation(phase => { + vi.spyOn(game.scene.phaseManager, "unshiftPhase").mockImplementation(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(-1); expect((phase as StatStageChangePhase)["stats"]).toEqual([Stat.DEF, Stat.SPDEF]); @@ -36,7 +36,7 @@ describe("BattlerTag - OctolockTag", () => { subject.lapse(mockPokemon, BattlerTagLapseType.TURN_END); - expect(game.scene.unshiftPhase).toBeCalledTimes(1); + expect(game.scene.phaseManager.unshiftPhase).toBeCalledTimes(1); }); }); diff --git a/test/battlerTags/stockpiling.test.ts b/test/battlerTags/stockpiling.test.ts index 20fade13d92..37873db9eab 100644 --- a/test/battlerTags/stockpiling.test.ts +++ b/test/battlerTags/stockpiling.test.ts @@ -32,11 +32,11 @@ describe("BattlerTag - StockpilingTag", () => { getBattlerIndex: () => 0, } as Pokemon; - vi.spyOn(game.scene, "queueMessage").mockImplementation(() => {}); + vi.spyOn(game.scene.phaseManager, "queueMessage").mockImplementation(() => {}); const subject = new StockpilingTag(1); - vi.spyOn(game.scene, "unshiftPhase").mockImplementation(phase => { + vi.spyOn(game.scene.phaseManager, "unshiftPhase").mockImplementation(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(1); expect((phase as StatStageChangePhase)["stats"]).toEqual(expect.arrayContaining([Stat.DEF, Stat.SPDEF])); @@ -46,7 +46,7 @@ describe("BattlerTag - StockpilingTag", () => { subject.onAdd(mockPokemon); - expect(game.scene.unshiftPhase).toBeCalledTimes(1); + expect(game.scene.phaseManager.unshiftPhase).toBeCalledTimes(1); }); it("unshifts a StatStageChangePhase with expected stat changes on add (one stat maxed)", async () => { @@ -55,14 +55,14 @@ describe("BattlerTag - StockpilingTag", () => { getBattlerIndex: () => 0, } as unknown as Pokemon; - vi.spyOn(game.scene, "queueMessage").mockImplementation(() => {}); + vi.spyOn(game.scene.phaseManager, "queueMessage").mockImplementation(() => {}); mockPokemon.summonData.statStages[Stat.DEF - 1] = 6; mockPokemon.summonData.statStages[Stat.SPD - 1] = 5; const subject = new StockpilingTag(1); - vi.spyOn(game.scene, "unshiftPhase").mockImplementation(phase => { + vi.spyOn(game.scene.phaseManager, "unshiftPhase").mockImplementation(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(1); expect((phase as StatStageChangePhase)["stats"]).toEqual(expect.arrayContaining([Stat.DEF, Stat.SPDEF])); @@ -72,7 +72,7 @@ describe("BattlerTag - StockpilingTag", () => { subject.onAdd(mockPokemon); - expect(game.scene.unshiftPhase).toBeCalledTimes(1); + expect(game.scene.phaseManager.unshiftPhase).toBeCalledTimes(1); }); }); @@ -82,11 +82,11 @@ describe("BattlerTag - StockpilingTag", () => { getBattlerIndex: () => 0, } as Pokemon; - vi.spyOn(game.scene, "queueMessage").mockImplementation(() => {}); + vi.spyOn(game.scene.phaseManager, "queueMessage").mockImplementation(() => {}); const subject = new StockpilingTag(1); - vi.spyOn(game.scene, "unshiftPhase").mockImplementation(phase => { + vi.spyOn(game.scene.phaseManager, "unshiftPhase").mockImplementation(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(1); expect((phase as StatStageChangePhase)["stats"]).toEqual(expect.arrayContaining([Stat.DEF, Stat.SPDEF])); @@ -96,7 +96,7 @@ describe("BattlerTag - StockpilingTag", () => { subject.onOverlap(mockPokemon); - expect(game.scene.unshiftPhase).toBeCalledTimes(1); + expect(game.scene.phaseManager.unshiftPhase).toBeCalledTimes(1); }); }); @@ -107,14 +107,14 @@ describe("BattlerTag - StockpilingTag", () => { getBattlerIndex: () => 0, } as Pokemon; - vi.spyOn(game.scene, "queueMessage").mockImplementation(() => {}); + vi.spyOn(game.scene.phaseManager, "queueMessage").mockImplementation(() => {}); mockPokemon.summonData.statStages[Stat.DEF - 1] = 5; mockPokemon.summonData.statStages[Stat.SPD - 1] = 4; const subject = new StockpilingTag(1); - vi.spyOn(game.scene, "unshiftPhase").mockImplementationOnce(phase => { + vi.spyOn(game.scene.phaseManager, "unshiftPhase").mockImplementationOnce(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(1); expect((phase as StatStageChangePhase)["stats"]).toEqual(expect.arrayContaining([Stat.DEF, Stat.SPDEF])); @@ -126,7 +126,7 @@ describe("BattlerTag - StockpilingTag", () => { subject.onAdd(mockPokemon); expect(subject.stockpiledCount).toBe(1); - vi.spyOn(game.scene, "unshiftPhase").mockImplementationOnce(phase => { + vi.spyOn(game.scene.phaseManager, "unshiftPhase").mockImplementationOnce(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(1); expect((phase as StatStageChangePhase)["stats"]).toEqual(expect.arrayContaining([Stat.DEF, Stat.SPDEF])); @@ -138,7 +138,7 @@ describe("BattlerTag - StockpilingTag", () => { subject.onOverlap(mockPokemon); expect(subject.stockpiledCount).toBe(2); - vi.spyOn(game.scene, "unshiftPhase").mockImplementationOnce(phase => { + vi.spyOn(game.scene.phaseManager, "unshiftPhase").mockImplementationOnce(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(1); expect((phase as StatStageChangePhase)["stats"]).toEqual(expect.arrayContaining([Stat.DEF, Stat.SPDEF])); @@ -149,7 +149,7 @@ describe("BattlerTag - StockpilingTag", () => { subject.onOverlap(mockPokemon); expect(subject.stockpiledCount).toBe(3); - vi.spyOn(game.scene, "unshiftPhase").mockImplementationOnce(_phase => { + vi.spyOn(game.scene.phaseManager, "unshiftPhase").mockImplementationOnce(_phase => { throw new Error("Should not be called a fourth time"); }); @@ -162,14 +162,14 @@ describe("BattlerTag - StockpilingTag", () => { }); // removing tag should reverse stat changes - vi.spyOn(game.scene, "unshiftPhase").mockImplementationOnce(phase => { + vi.spyOn(game.scene.phaseManager, "unshiftPhase").mockImplementationOnce(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(-2); expect((phase as StatStageChangePhase)["stats"]).toEqual(expect.arrayContaining([Stat.SPDEF])); }); subject.onRemove(mockPokemon); - expect(game.scene.unshiftPhase).toHaveBeenCalledOnce(); // note that re-spying each add/overlap has been refreshing call count + expect(game.scene.phaseManager.unshiftPhase).toHaveBeenCalledOnce(); // note that re-spying each add/overlap has been refreshing call count }); }); }); diff --git a/test/battlerTags/substitute.test.ts b/test/battlerTags/substitute.test.ts index ce16cfdbcd9..703e0ae75f6 100644 --- a/test/battlerTags/substitute.test.ts +++ b/test/battlerTags/substitute.test.ts @@ -55,7 +55,7 @@ describe("BattlerTag - SubstituteTag", () => { const subject = new SubstituteTag(MoveId.SUBSTITUTE, mockPokemon.id); vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockReturnValue(true); - vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); + vi.spyOn((mockPokemon.scene as BattleScene).phaseManager, "queueMessage").mockReturnValue(); subject.onAdd(mockPokemon); @@ -72,19 +72,19 @@ describe("BattlerTag - SubstituteTag", () => { }, ); - vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); + const msgSpy = vi.spyOn((mockPokemon.scene as BattleScene).phaseManager, "queueMessage").mockReturnValue(); subject.onAdd(mockPokemon); expect(subject.sourceInFocus).toBeFalsy(); expect((mockPokemon.scene as BattleScene).triggerPokemonBattleAnim).toHaveBeenCalledTimes(1); - expect((mockPokemon.scene as BattleScene).queueMessage).toHaveBeenCalledTimes(1); + expect(msgSpy).toHaveBeenCalledOnce(); }); it("removes effects that trap the source", async () => { const subject = new SubstituteTag(MoveId.SUBSTITUTE, mockPokemon.id); - vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); + vi.spyOn((mockPokemon.scene as BattleScene).phaseManager, "queueMessage").mockReturnValue(); subject.onAdd(mockPokemon); expect(mockPokemon.findAndRemoveTags).toHaveBeenCalledTimes(1); @@ -114,12 +114,12 @@ describe("BattlerTag - SubstituteTag", () => { }, ); - vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); + const msgSpy = vi.spyOn((mockPokemon.scene as BattleScene).phaseManager, "queueMessage").mockReturnValue(); subject.onRemove(mockPokemon); expect((mockPokemon.scene as BattleScene).triggerPokemonBattleAnim).toHaveBeenCalledTimes(1); - expect((mockPokemon.scene as BattleScene).queueMessage).toHaveBeenCalledTimes(1); + expect(msgSpy).toHaveBeenCalledOnce(); }); }); @@ -150,13 +150,12 @@ describe("BattlerTag - SubstituteTag", () => { }, ); - vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); + vi.spyOn((mockPokemon.scene as BattleScene).phaseManager, "queueMessage").mockReturnValue(); expect(subject.lapse(mockPokemon, BattlerTagLapseType.PRE_MOVE)).toBeTruthy(); expect(subject.sourceInFocus).toBeTruthy(); expect((mockPokemon.scene as BattleScene).triggerPokemonBattleAnim).toHaveBeenCalledTimes(1); - expect((mockPokemon.scene as BattleScene).queueMessage).not.toHaveBeenCalled(); }); it("AFTER_MOVE lapse triggers post-move animation", async () => { @@ -169,13 +168,13 @@ describe("BattlerTag - SubstituteTag", () => { }, ); - vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); + const msgSpy = vi.spyOn((mockPokemon.scene as BattleScene).phaseManager, "queueMessage").mockReturnValue(); expect(subject.lapse(mockPokemon, BattlerTagLapseType.AFTER_MOVE)).toBeTruthy(); expect(subject.sourceInFocus).toBeFalsy(); expect((mockPokemon.scene as BattleScene).triggerPokemonBattleAnim).toHaveBeenCalledTimes(1); - expect((mockPokemon.scene as BattleScene).queueMessage).not.toHaveBeenCalled(); + expect(msgSpy).not.toHaveBeenCalled(); }); // TODO: Figure out how to mock a MoveEffectPhase correctly for this test @@ -183,27 +182,27 @@ describe("BattlerTag - SubstituteTag", () => { const subject = new SubstituteTag(MoveId.SUBSTITUTE, mockPokemon.id); vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockReturnValue(true); - vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); + const msgSpy = vi.spyOn((mockPokemon.scene as BattleScene).phaseManager, "queueMessage").mockReturnValue(); const moveEffectPhase = { move: allMoves[MoveId.TACKLE], getUserPokemon: vi.fn().mockReturnValue(undefined) as MoveEffectPhase["getUserPokemon"], } as MoveEffectPhase; - vi.spyOn(mockPokemon.scene as BattleScene, "getCurrentPhase").mockReturnValue(moveEffectPhase); + vi.spyOn((mockPokemon.scene as BattleScene).phaseManager, "getCurrentPhase").mockReturnValue(moveEffectPhase); vi.spyOn(allMoves[MoveId.TACKLE], "hitsSubstitute").mockReturnValue(true); expect(subject.lapse(mockPokemon, BattlerTagLapseType.HIT)).toBeTruthy(); expect((mockPokemon.scene as BattleScene).triggerPokemonBattleAnim).not.toHaveBeenCalled(); - expect((mockPokemon.scene as BattleScene).queueMessage).toHaveBeenCalledTimes(1); + expect(msgSpy).toHaveBeenCalledOnce(); }); it("CUSTOM lapse flags the tag for removal", async () => { const subject = new SubstituteTag(MoveId.SUBSTITUTE, mockPokemon.id); vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockReturnValue(true); - vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); + vi.spyOn((mockPokemon.scene as BattleScene).phaseManager, "queueMessage").mockReturnValue(); expect(subject.lapse(mockPokemon, BattlerTagLapseType.CUSTOM)).toBeFalsy(); }); @@ -212,12 +211,12 @@ describe("BattlerTag - SubstituteTag", () => { const subject = new SubstituteTag(MoveId.SUBSTITUTE, mockPokemon.id); vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockReturnValue(true); - vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); + const msgSpy = vi.spyOn((mockPokemon.scene as BattleScene).phaseManager, "queueMessage").mockReturnValue(); expect(subject.lapse(mockPokemon, BattlerTagLapseType.TURN_END)).toBeTruthy(); expect((mockPokemon.scene as BattleScene).triggerPokemonBattleAnim).not.toHaveBeenCalled(); - expect((mockPokemon.scene as BattleScene).queueMessage).not.toHaveBeenCalled(); + expect(msgSpy).not.toHaveBeenCalled(); }); }); }); diff --git a/test/escape-calculations.test.ts b/test/escape-calculations.test.ts index 854274eb948..fd1e411e786 100644 --- a/test/escape-calculations.test.ts +++ b/test/escape-calculations.test.ts @@ -40,11 +40,11 @@ describe("Escape chance calculations", () => { // set enemyPokemon's speed to 100 vi.spyOn(enemyField[0], "stats", "get").mockReturnValue([20, 20, 20, 20, 20, enemySpeed]); - const commandPhase = game.scene.getCurrentPhase() as CommandPhase; + const commandPhase = game.scene.phaseManager.getCurrentPhase() as CommandPhase; commandPhase.handleCommand(Command.RUN, 0); await game.phaseInterceptor.to(AttemptRunPhase, false); - const phase = game.scene.getCurrentPhase() as AttemptRunPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as AttemptRunPhase; const escapePercentage = new NumberHolder(0); // this sets up an object for multiple attempts. The pokemonSpeedRatio is your speed divided by the enemy speed, the escapeAttempts are the number of escape attempts and the expectedEscapeChance is the chance it should be escaping @@ -113,11 +113,11 @@ describe("Escape chance calculations", () => { // set enemyBPokemon's speed to 30 vi.spyOn(enemyField[1], "stats", "get").mockReturnValue([20, 20, 20, 20, 20, enemyBSpeed]); - const commandPhase = game.scene.getCurrentPhase() as CommandPhase; + const commandPhase = game.scene.phaseManager.getCurrentPhase() as CommandPhase; commandPhase.handleCommand(Command.RUN, 0); await game.phaseInterceptor.to(AttemptRunPhase, false); - const phase = game.scene.getCurrentPhase() as AttemptRunPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as AttemptRunPhase; const escapePercentage = new NumberHolder(0); // this sets up an object for multiple attempts. The pokemonSpeedRatio is your speed divided by the enemy speed, the escapeAttempts are the number of escape attempts and the expectedEscapeChance is the chance it should be escaping @@ -192,11 +192,11 @@ describe("Escape chance calculations", () => { // set enemyPokemon's speed to 100 vi.spyOn(enemyField[0], "stats", "get").mockReturnValue([20, 20, 20, 20, 20, enemySpeed]); - const commandPhase = game.scene.getCurrentPhase() as CommandPhase; + const commandPhase = game.scene.phaseManager.getCurrentPhase() as CommandPhase; commandPhase.handleCommand(Command.RUN, 0); await game.phaseInterceptor.to(AttemptRunPhase, false); - const phase = game.scene.getCurrentPhase() as AttemptRunPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as AttemptRunPhase; const escapePercentage = new NumberHolder(0); // this sets up an object for multiple attempts. The pokemonSpeedRatio is your speed divided by the enemy speed, the escapeAttempts are the number of escape attempts and the expectedEscapeChance is the chance it should be escaping @@ -279,11 +279,11 @@ describe("Escape chance calculations", () => { // set enemyBPokemon's speed to 30 vi.spyOn(enemyField[1], "stats", "get").mockReturnValue([20, 20, 20, 20, 20, enemyBSpeed]); - const commandPhase = game.scene.getCurrentPhase() as CommandPhase; + const commandPhase = game.scene.phaseManager.getCurrentPhase() as CommandPhase; commandPhase.handleCommand(Command.RUN, 0); await game.phaseInterceptor.to(AttemptRunPhase, false); - const phase = game.scene.getCurrentPhase() as AttemptRunPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as AttemptRunPhase; const escapePercentage = new NumberHolder(0); // this sets up an object for multiple attempts. The pokemonSpeedRatio is your speed divided by the enemy speed, the escapeAttempts are the number of escape attempts and the expectedEscapeChance is the chance it should be escaping diff --git a/test/items/lock_capsule.test.ts b/test/items/lock_capsule.test.ts index 15a1b4e73d1..292031a2bf0 100644 --- a/test/items/lock_capsule.test.ts +++ b/test/items/lock_capsule.test.ts @@ -34,7 +34,7 @@ describe("Items - Lock Capsule", () => { it("doesn't set the cost of common tier items to 0", async () => { await game.classicMode.startBattle(); - game.scene.overridePhase( + game.scene.phaseManager.overridePhase( new SelectModifierPhase(0, undefined, { guaranteedModifierTiers: [ModifierTier.COMMON, ModifierTier.COMMON, ModifierTier.COMMON], fillRemaining: false, @@ -42,7 +42,7 @@ describe("Items - Lock Capsule", () => { ); game.onNextPrompt("SelectModifierPhase", UiMode.MODIFIER_SELECT, () => { - const selectModifierPhase = game.scene.getCurrentPhase() as SelectModifierPhase; + const selectModifierPhase = game.scene.phaseManager.getCurrentPhase() as SelectModifierPhase; const rerollCost = selectModifierPhase.getRerollCost(true); expect(rerollCost).toBe(150); }); diff --git a/test/moves/after_you.test.ts b/test/moves/after_you.test.ts index adf9cae707a..0e5ee1e7a8f 100644 --- a/test/moves/after_you.test.ts +++ b/test/moves/after_you.test.ts @@ -42,7 +42,7 @@ describe("Moves - After You", () => { await game.phaseInterceptor.to("MoveEffectPhase"); await game.phaseInterceptor.to(MovePhase, false); - const phase = game.scene.getCurrentPhase() as MovePhase; + const phase = game.scene.phaseManager.getCurrentPhase() as MovePhase; expect(phase.pokemon).toBe(game.scene.getPlayerField()[1]); await game.phaseInterceptor.to("MoveEndPhase"); }); diff --git a/test/moves/dynamax_cannon.test.ts b/test/moves/dynamax_cannon.test.ts index ada3361f3ef..6207ef9b6ca 100644 --- a/test/moves/dynamax_cannon.test.ts +++ b/test/moves/dynamax_cannon.test.ts @@ -56,7 +56,7 @@ describe("Moves - Dynamax Cannon", () => { game.move.select(dynamaxCannon.id); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(dynamaxCannon.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(dynamaxCannon.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(dynamaxCannon.calculateBattlePower).toHaveLastReturnedWith(100); }, 20000); @@ -68,7 +68,7 @@ describe("Moves - Dynamax Cannon", () => { game.move.select(dynamaxCannon.id); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(dynamaxCannon.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(dynamaxCannon.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(dynamaxCannon.calculateBattlePower).toHaveLastReturnedWith(100); }, 20000); @@ -80,7 +80,7 @@ describe("Moves - Dynamax Cannon", () => { game.move.select(dynamaxCannon.id); await game.phaseInterceptor.to(MoveEffectPhase, false); - const phase = game.scene.getCurrentPhase() as MoveEffectPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase; expect(phase.move.id).toBe(dynamaxCannon.id); // Force level cap to be 100 vi.spyOn(game.scene, "getMaxExpLevel").mockReturnValue(100); @@ -95,7 +95,7 @@ describe("Moves - Dynamax Cannon", () => { game.move.select(dynamaxCannon.id); await game.phaseInterceptor.to(MoveEffectPhase, false); - const phase = game.scene.getCurrentPhase() as MoveEffectPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase; expect(phase.move.id).toBe(dynamaxCannon.id); // Force level cap to be 100 vi.spyOn(game.scene, "getMaxExpLevel").mockReturnValue(100); @@ -110,7 +110,7 @@ describe("Moves - Dynamax Cannon", () => { game.move.select(dynamaxCannon.id); await game.phaseInterceptor.to(MoveEffectPhase, false); - const phase = game.scene.getCurrentPhase() as MoveEffectPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase; expect(phase.move.id).toBe(dynamaxCannon.id); // Force level cap to be 100 vi.spyOn(game.scene, "getMaxExpLevel").mockReturnValue(100); @@ -125,7 +125,7 @@ describe("Moves - Dynamax Cannon", () => { game.move.select(dynamaxCannon.id); await game.phaseInterceptor.to(MoveEffectPhase, false); - const phase = game.scene.getCurrentPhase() as MoveEffectPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase; expect(phase.move.id).toBe(dynamaxCannon.id); // Force level cap to be 100 vi.spyOn(game.scene, "getMaxExpLevel").mockReturnValue(100); @@ -140,7 +140,7 @@ describe("Moves - Dynamax Cannon", () => { game.move.select(dynamaxCannon.id); await game.phaseInterceptor.to(MoveEffectPhase, false); - const phase = game.scene.getCurrentPhase() as MoveEffectPhase; + const phase = game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase; expect(phase.move.id).toBe(dynamaxCannon.id); // Force level cap to be 100 vi.spyOn(game.scene, "getMaxExpLevel").mockReturnValue(100); @@ -156,7 +156,7 @@ describe("Moves - Dynamax Cannon", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(dynamaxCannon.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(dynamaxCannon.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(dynamaxCannon.calculateBattlePower).toHaveLastReturnedWith(200); }, 20000); diff --git a/test/moves/focus_punch.test.ts b/test/moves/focus_punch.test.ts index 9734f9f6422..38b57b201c0 100644 --- a/test/moves/focus_punch.test.ts +++ b/test/moves/focus_punch.test.ts @@ -115,8 +115,8 @@ describe("Moves - Focus Punch", () => { await game.phaseInterceptor.to(TurnStartPhase); - expect(game.scene.getCurrentPhase() instanceof SwitchSummonPhase).toBeTruthy(); - expect(game.scene.phaseQueue.find(phase => phase instanceof MoveHeaderPhase)).toBeDefined(); + expect(game.scene.phaseManager.getCurrentPhase() instanceof SwitchSummonPhase).toBeTruthy(); + expect(game.scene.phaseManager.phaseQueue.find(phase => phase instanceof MoveHeaderPhase)).toBeDefined(); }); it("should replace the 'but it failed' text when the user gets hit", async () => { game.override.enemyMoveset([MoveId.TACKLE]); diff --git a/test/moves/fusion_flare_bolt.test.ts b/test/moves/fusion_flare_bolt.test.ts index bceb2c862b5..1a5d9e44bab 100644 --- a/test/moves/fusion_flare_bolt.test.ts +++ b/test/moves/fusion_flare_bolt.test.ts @@ -56,12 +56,12 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionFlare.calculateBattlePower).toHaveLastReturnedWith(100); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionBolt.calculateBattlePower).toHaveLastReturnedWith(200); }, 20000); @@ -76,12 +76,12 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionBolt.calculateBattlePower).toHaveLastReturnedWith(100); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionFlare.calculateBattlePower).toHaveLastReturnedWith(200); }, 20000); @@ -96,7 +96,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionFlare.calculateBattlePower).toHaveLastReturnedWith(100); @@ -106,7 +106,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { await game.phaseInterceptor.runFrom(MovePhase).to(MoveEndPhase); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionBolt.calculateBattlePower).toHaveLastReturnedWith(200); }, 20000); @@ -122,7 +122,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionFlare.calculateBattlePower).toHaveLastReturnedWith(100); @@ -131,7 +131,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { await game.phaseInterceptor.runFrom(MovePhase).to(MoveEndPhase); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionBolt.calculateBattlePower).toHaveLastReturnedWith(100); }, 20000); @@ -146,12 +146,12 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionBolt.calculateBattlePower).toHaveLastReturnedWith(100); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionFlare.calculateBattlePower).toHaveLastReturnedWith(200); }, 20000); @@ -190,22 +190,22 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionBolt.calculateBattlePower).toHaveLastReturnedWith(100); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionFlare.calculateBattlePower).toHaveLastReturnedWith(200); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionBolt.calculateBattlePower).toHaveLastReturnedWith(200); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionFlare.calculateBattlePower).toHaveLastReturnedWith(200); }, 20000); @@ -244,22 +244,22 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY]); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionBolt.calculateBattlePower).toHaveLastReturnedWith(100); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionFlare.calculateBattlePower).toHaveLastReturnedWith(200); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionBolt.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionBolt.calculateBattlePower).toHaveLastReturnedWith(200); await game.phaseInterceptor.to(MoveEffectPhase, false); - expect((game.scene.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); + expect((game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).move.id).toBe(fusionFlare.id); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(fusionFlare.calculateBattlePower).toHaveLastReturnedWith(200); }, 20000); diff --git a/test/moves/instruct.test.ts b/test/moves/instruct.test.ts index 4a701ed6ac5..e0cfa93cf59 100644 --- a/test/moves/instruct.test.ts +++ b/test/moves/instruct.test.ts @@ -56,12 +56,12 @@ describe("Moves - Instruct", () => { await game.phaseInterceptor.to("MovePhase"); // enemy attacks us await game.phaseInterceptor.to("MovePhase", false); // instruct - let currentPhase = game.scene.getCurrentPhase() as MovePhase; + let currentPhase = game.scene.phaseManager.getCurrentPhase() as MovePhase; expect(currentPhase.pokemon).toBe(game.scene.getPlayerPokemon()); await game.phaseInterceptor.to("MoveEndPhase"); await game.phaseInterceptor.to("MovePhase", false); // enemy repeats move - currentPhase = game.scene.getCurrentPhase() as MovePhase; + currentPhase = game.scene.phaseManager.getCurrentPhase() as MovePhase; expect(currentPhase.pokemon).toBe(enemy); expect(currentPhase.move.moveId).toBe(MoveId.SONIC_BOOM); await game.phaseInterceptor.to("TurnEndPhase", false); diff --git a/test/moves/round.test.ts b/test/moves/round.test.ts index c42734bdc41..503ce125582 100644 --- a/test/moves/round.test.ts +++ b/test/moves/round.test.ts @@ -54,7 +54,9 @@ describe("Moves - Round", () => { for (let i = 0; i < 4; i++) { await game.phaseInterceptor.to("MoveEffectPhase", false); - actualTurnOrder.push((game.scene.getCurrentPhase() as MoveEffectPhase).getUserPokemon()!.getBattlerIndex()); + actualTurnOrder.push( + (game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase).getUserPokemon()!.getBattlerIndex(), + ); await game.phaseInterceptor.to("MoveEndPhase"); } diff --git a/test/moves/shell_trap.test.ts b/test/moves/shell_trap.test.ts index 4dfc0e72d0a..9a38bf4486b 100644 --- a/test/moves/shell_trap.test.ts +++ b/test/moves/shell_trap.test.ts @@ -50,7 +50,7 @@ describe("Moves - Shell Trap", () => { await game.phaseInterceptor.to(MoveEndPhase); - const movePhase = game.scene.getCurrentPhase(); + const movePhase = game.scene.phaseManager.getCurrentPhase(); expect(movePhase instanceof MovePhase).toBeTruthy(); expect((movePhase as MovePhase).pokemon).toBe(playerPokemon[1]); @@ -73,7 +73,7 @@ describe("Moves - Shell Trap", () => { await game.phaseInterceptor.to(MoveEndPhase); - const movePhase = game.scene.getCurrentPhase(); + const movePhase = game.scene.phaseManager.getCurrentPhase(); expect(movePhase instanceof MovePhase).toBeTruthy(); expect((movePhase as MovePhase).pokemon).not.toBe(playerPokemon[1]); @@ -96,7 +96,7 @@ describe("Moves - Shell Trap", () => { await game.phaseInterceptor.to(MoveEndPhase); - const movePhase = game.scene.getCurrentPhase(); + const movePhase = game.scene.phaseManager.getCurrentPhase(); expect(movePhase instanceof MovePhase).toBeTruthy(); expect((movePhase as MovePhase).pokemon).not.toBe(playerPokemon[1]); @@ -117,7 +117,7 @@ describe("Moves - Shell Trap", () => { await game.phaseInterceptor.to(MoveEndPhase); - const movePhase = game.scene.getCurrentPhase(); + const movePhase = game.scene.phaseManager.getCurrentPhase(); expect(movePhase instanceof MovePhase).toBeTruthy(); expect((movePhase as MovePhase).pokemon).not.toBe(playerPokemon[1]); diff --git a/test/moves/substitute.test.ts b/test/moves/substitute.test.ts index 97296be7d8f..454e729a67b 100644 --- a/test/moves/substitute.test.ts +++ b/test/moves/substitute.test.ts @@ -400,7 +400,7 @@ describe("Moves - Substitute", () => { // Simulate a Baton switch for the player this turn game.onNextPrompt("CommandPhase", UiMode.COMMAND, () => { - (game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.POKEMON, 1, true); + (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.POKEMON, 1, true); }); await game.phaseInterceptor.to("MovePhase", false); diff --git a/test/moves/transform.test.ts b/test/moves/transform.test.ts index e8ed133b827..ca326da5748 100644 --- a/test/moves/transform.test.ts +++ b/test/moves/transform.test.ts @@ -132,7 +132,7 @@ describe("Moves - Transform", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextWave(); - expect(game.scene.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); + expect(game.scene.phaseManager.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); expect(game.scene.currentBattle.waveIndex).toBe(2); await game.reload.reloadSession(); @@ -173,7 +173,7 @@ describe("Moves - Transform", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextWave(); - expect(game.scene.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); + expect(game.scene.phaseManager.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); expect(game.scene.currentBattle.waveIndex).toBe(2); await game.reload.reloadSession(); diff --git a/test/moves/whirlwind.test.ts b/test/moves/whirlwind.test.ts index 56c4017fbb5..c457bdb67d7 100644 --- a/test/moves/whirlwind.test.ts +++ b/test/moves/whirlwind.test.ts @@ -180,7 +180,7 @@ describe("Moves - Whirlwind", () => { expect(eligibleEnemy.length).toBe(1); // Spy on the queueMessage function - const queueSpy = vi.spyOn(globalScene, "queueMessage"); + const queueSpy = vi.spyOn(globalScene.phaseManager, "queueMessage"); // Player uses Whirlwind; opponent uses Splash game.move.select(MoveId.WHIRLWIND); diff --git a/test/mystery-encounter/encounter-test-utils.ts b/test/mystery-encounter/encounter-test-utils.ts index 977f40bc90e..6954d6212cc 100644 --- a/test/mystery-encounter/encounter-test-utils.ts +++ b/test/mystery-encounter/encounter-test-utils.ts @@ -71,9 +71,9 @@ export async function runMysteryEncounterToEnd( // If a battle is started, fast forward to end of the battle game.onNextPrompt("CommandPhase", UiMode.COMMAND, () => { - game.scene.clearPhaseQueue(); - game.scene.clearPhaseQueueSplice(); - game.scene.unshiftPhase(new VictoryPhase(0)); + game.scene.phaseManager.clearPhaseQueue(); + game.scene.phaseManager.clearPhaseQueueSplice(); + game.scene.phaseManager.unshiftPhase(new VictoryPhase(0)); game.endPhase(); }); @@ -197,14 +197,14 @@ async function handleSecondaryOptionSelect(game: GameManager, pokemonNo: number, * @param runRewardsPhase */ export async function skipBattleRunMysteryEncounterRewardsPhase(game: GameManager, runRewardsPhase = true) { - game.scene.clearPhaseQueue(); - game.scene.clearPhaseQueueSplice(); + game.scene.phaseManager.clearPhaseQueue(); + game.scene.phaseManager.clearPhaseQueueSplice(); game.scene.getEnemyParty().forEach(p => { p.hp = 0; p.status = new Status(StatusEffect.FAINT); game.scene.field.remove(p); }); - game.scene.pushPhase(new VictoryPhase(0)); + game.scene.phaseManager.pushPhase(new VictoryPhase(0)); game.phaseInterceptor.superEndPhase(); game.setMode(UiMode.MESSAGE); await game.phaseInterceptor.to(MysteryEncounterRewardsPhase, runRewardsPhase); diff --git a/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts b/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts index 3c6305a77dc..d713db0aff8 100644 --- a/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts +++ b/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts @@ -107,7 +107,7 @@ describe("A Trainer's Test - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); expect(scene.currentBattle.trainer).toBeDefined(); expect( @@ -132,7 +132,7 @@ describe("A Trainer's Test - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); const eggsAfter = scene.gameData.eggs; expect(eggsAfter).toBeDefined(); @@ -162,7 +162,7 @@ describe("A Trainer's Test - Mystery Encounter", () => { }); it("Should fully heal the party", async () => { - const phaseSpy = vi.spyOn(scene, "unshiftPhase"); + const phaseSpy = vi.spyOn(scene.phaseManager, "unshiftPhase"); await game.runToMysteryEncounter(MysteryEncounterType.A_TRAINERS_TEST, defaultParty); await runMysteryEncounterToEnd(game, 2); @@ -180,7 +180,7 @@ describe("A Trainer's Test - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); const eggsAfter = scene.gameData.eggs; expect(eggsAfter).toBeDefined(); diff --git a/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts b/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts index f13f6e0b072..f5bc1a62528 100644 --- a/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts +++ b/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts @@ -129,13 +129,13 @@ describe("Absolute Avarice - Mystery Encounter", () => { }); it("should start battle against Greedent", async () => { - const phaseSpy = vi.spyOn(scene, "pushPhase"); + const phaseSpy = vi.spyOn(scene.phaseManager, "pushPhase"); await game.runToMysteryEncounter(MysteryEncounterType.ABSOLUTE_AVARICE, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(SpeciesId.GREEDENT); const moveset = enemyField[0].moveset.map(m => m.moveId); @@ -152,7 +152,7 @@ describe("Absolute Avarice - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); for (const partyPokemon of scene.getPlayerParty()) { const pokemonId = partyPokemon.id; diff --git a/test/mystery-encounter/encounters/berries-abound-encounter.test.ts b/test/mystery-encounter/encounters/berries-abound-encounter.test.ts index c3af2d9fe13..566576995a5 100644 --- a/test/mystery-encounter/encounters/berries-abound-encounter.test.ts +++ b/test/mystery-encounter/encounters/berries-abound-encounter.test.ts @@ -116,7 +116,7 @@ describe("Berries Abound - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(speciesToSpawn); }); @@ -137,7 +137,7 @@ describe("Berries Abound - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); const berriesAfter = scene.findModifiers(m => m instanceof BerryModifier) as BerryModifier[]; const berriesAfterCount = berriesAfter.reduce((a, b) => a + b.stackCount, 0); @@ -150,7 +150,7 @@ describe("Berries Abound - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -190,7 +190,7 @@ describe("Berries Abound - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(speciesToSpawn); @@ -214,7 +214,7 @@ describe("Berries Abound - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(speciesToSpawn); @@ -235,7 +235,7 @@ describe("Berries Abound - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts b/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts index 0cc990a405a..7e569d0cdf7 100644 --- a/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts +++ b/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts @@ -232,7 +232,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(2); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -245,7 +245,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(3); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -259,7 +259,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(4); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -274,7 +274,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -290,7 +290,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -308,7 +308,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -326,7 +326,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -344,7 +344,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -366,7 +366,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterRewardsPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterRewardsPhase.name); game.phaseInterceptor["prompts"] = []; // Clear out prompt handlers game.onNextPrompt("MysteryEncounterRewardsPhase", UiMode.OPTION_SELECT, () => { game.phaseInterceptor.superEndPhase(); @@ -398,7 +398,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, [SpeciesId.ABRA]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -407,7 +407,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 2); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -417,7 +417,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, defaultParty); await runMysteryEncounterToEnd(game, 2); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -436,7 +436,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { ]); await runMysteryEncounterToEnd(game, 2); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -458,7 +458,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { ]); await runMysteryEncounterToEnd(game, 2); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -482,7 +482,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { ]); await runMysteryEncounterToEnd(game, 2); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -534,7 +534,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await game.phaseInterceptor.to(MysteryEncounterPhase, false); game.scene.modifiers = []; - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -543,7 +543,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 3); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -558,7 +558,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/clowning-around-encounter.test.ts b/test/mystery-encounter/encounters/clowning-around-encounter.test.ts index d83f8d0642c..fc0ef0e5a86 100644 --- a/test/mystery-encounter/encounters/clowning-around-encounter.test.ts +++ b/test/mystery-encounter/encounters/clowning-around-encounter.test.ts @@ -167,13 +167,13 @@ describe("Clowning Around - Mystery Encounter", () => { }); it("should start double battle against the clown", async () => { - const phaseSpy = vi.spyOn(scene, "pushPhase"); + const phaseSpy = vi.spyOn(scene.phaseManager, "pushPhase"); await game.runToMysteryEncounter(MysteryEncounterType.CLOWNING_AROUND, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(2); expect(enemyField[0].species.speciesId).toBe(SpeciesId.MR_MIME); expect(enemyField[0].moveset).toEqual([ @@ -202,7 +202,7 @@ describe("Clowning Around - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); const abilityToTrain = scene.currentBattle.mysteryEncounter?.misc.ability; @@ -217,7 +217,7 @@ describe("Clowning Around - Mystery Encounter", () => { vi.spyOn(partyUiHandler, "show"); game.endPhase(); await game.phaseInterceptor.to(PostMysteryEncounterPhase); - expect(scene.getCurrentPhase()?.constructor.name).toBe(PostMysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(PostMysteryEncounterPhase.name); // Wait for Yes/No confirmation to appear await vi.waitFor(() => expect(optionSelectUiHandler.show).toHaveBeenCalled()); diff --git a/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts b/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts index 501ff0c45e8..76a562b5851 100644 --- a/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts +++ b/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts @@ -98,7 +98,7 @@ describe("Dancing Lessons - Mystery Encounter", () => { }); it("should start battle against Oricorio", async () => { - const phaseSpy = vi.spyOn(scene, "pushPhase"); + const phaseSpy = vi.spyOn(scene.phaseManager, "pushPhase"); await game.runToMysteryEncounter(MysteryEncounterType.DANCING_LESSONS, defaultParty); // Make party lead's level arbitrarily high to not get KOed by move @@ -108,7 +108,7 @@ describe("Dancing Lessons - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(SpeciesId.ORICORIO); expect(enemyField[0].summonData.statStages).toEqual([1, 1, 1, 1, 0, 0, 0]); @@ -129,7 +129,7 @@ describe("Dancing Lessons - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -158,7 +158,7 @@ describe("Dancing Lessons - Mystery Encounter", () => { }); it("Should select a pokemon to learn Revelation Dance", async () => { - const phaseSpy = vi.spyOn(scene, "unshiftPhase"); + const phaseSpy = vi.spyOn(scene.phaseManager, "unshiftPhase"); await game.runToMysteryEncounter(MysteryEncounterType.DANCING_LESSONS, defaultParty); scene.getPlayerParty()[0].moveset = []; @@ -219,7 +219,7 @@ describe("Dancing Lessons - Mystery Encounter", () => { scene.getPlayerParty().forEach(p => (p.moveset = [])); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -229,7 +229,7 @@ describe("Dancing Lessons - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 3); const partyCountAfter = scene.getPlayerParty().length; - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); diff --git a/test/mystery-encounter/encounters/delibirdy-encounter.test.ts b/test/mystery-encounter/encounters/delibirdy-encounter.test.ts index 58496e957c0..0d1094831bc 100644 --- a/test/mystery-encounter/encounters/delibirdy-encounter.test.ts +++ b/test/mystery-encounter/encounters/delibirdy-encounter.test.ts @@ -153,7 +153,7 @@ describe("Delibird-y - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -162,7 +162,7 @@ describe("Delibird-y - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 1); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -308,7 +308,7 @@ describe("Delibird-y - Mystery Encounter", () => { await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -317,7 +317,7 @@ describe("Delibird-y - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 2); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -441,7 +441,7 @@ describe("Delibird-y - Mystery Encounter", () => { await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -450,7 +450,7 @@ describe("Delibird-y - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 3); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); diff --git a/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts b/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts index c2974def16e..3feb44bbe91 100644 --- a/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts +++ b/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts @@ -95,7 +95,7 @@ describe("Department Store Sale - Mystery Encounter", () => { it("should have shop with only TMs", async () => { await game.runToMysteryEncounter(MysteryEncounterType.DEPARTMENT_STORE_SALE, defaultParty); await runMysteryEncounterToEnd(game, 1); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -132,7 +132,7 @@ describe("Department Store Sale - Mystery Encounter", () => { it("should have shop with only Vitamins", async () => { await game.runToMysteryEncounter(MysteryEncounterType.DEPARTMENT_STORE_SALE, defaultParty); await runMysteryEncounterToEnd(game, 2); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -172,7 +172,7 @@ describe("Department Store Sale - Mystery Encounter", () => { it("should have shop with only X Items", async () => { await game.runToMysteryEncounter(MysteryEncounterType.DEPARTMENT_STORE_SALE, defaultParty); await runMysteryEncounterToEnd(game, 3); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -212,7 +212,7 @@ describe("Department Store Sale - Mystery Encounter", () => { it("should have shop with only Pokeballs", async () => { await game.runToMysteryEncounter(MysteryEncounterType.DEPARTMENT_STORE_SALE, defaultParty); await runMysteryEncounterToEnd(game, 4); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts b/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts index ba9ea4126da..76b15106ef1 100644 --- a/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts +++ b/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts @@ -157,13 +157,13 @@ describe("Fiery Fallout - Mystery Encounter", () => { }); it("should start battle against 2 Volcarona", async () => { - const phaseSpy = vi.spyOn(scene, "pushPhase"); + const phaseSpy = vi.spyOn(scene.phaseManager, "pushPhase"); await game.runToMysteryEncounter(MysteryEncounterType.FIERY_FALLOUT, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(2); expect(enemyField[0].species.speciesId).toBe(SpeciesId.VOLCARONA); expect(enemyField[1].species.speciesId).toBe(SpeciesId.VOLCARONA); @@ -179,7 +179,7 @@ describe("Fiery Fallout - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); const leadPokemonId = scene.getPlayerParty()?.[0].id; const leadPokemonItems = scene.findModifiers( @@ -268,7 +268,7 @@ describe("Fiery Fallout - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FIERY_FALLOUT, defaultParty); await runMysteryEncounterToEnd(game, 3); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); const leadPokemonItems = scene.getPlayerParty()?.[0].getHeldItems() as PokemonHeldItemModifier[]; const item = leadPokemonItems.find(i => i instanceof AttackTypeBoosterModifier); @@ -288,13 +288,13 @@ describe("Fiery Fallout - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FIERY_FALLOUT, [SpeciesId.MAGIKARP]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const continueEncounterSpy = vi.spyOn(encounterPhase as MysteryEncounterPhase, "continueEncounter"); await runSelectMysteryEncounterOption(game, 3); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(continueEncounterSpy).not.toHaveBeenCalled(); }); }); diff --git a/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts b/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts index 1b5bd9fc649..7038fff3117 100644 --- a/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts +++ b/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts @@ -111,7 +111,7 @@ describe("Fight or Flight - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(speciesToSpawn); }); @@ -124,7 +124,7 @@ describe("Fight or Flight - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -158,7 +158,7 @@ describe("Fight or Flight - Mystery Encounter", () => { scene.getPlayerParty().forEach(p => (p.moveset = [])); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -167,7 +167,7 @@ describe("Fight or Flight - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 2); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -184,7 +184,7 @@ describe("Fight or Flight - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts b/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts index fcc2eda28f7..4eaf2cef1da 100644 --- a/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts +++ b/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts @@ -123,7 +123,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -132,7 +132,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 1); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -144,7 +144,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(scene.getEnemyPokemon()?.species.speciesId).toBe(SpeciesId.WOBBUFFET); expect(scene.getEnemyPokemon()?.ivs).toEqual([0, 0, 0, 0, 0, 0]); expect(scene.getEnemyPokemon()?.nature).toBe(Nature.MILD); @@ -154,19 +154,19 @@ describe("Fun And Games! - Mystery Encounter", () => { }); // Turn 1 - (game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, false); + (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, false); await game.phaseInterceptor.to(CommandPhase); // Turn 2 - (game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, false); + (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, false); await game.phaseInterceptor.to(CommandPhase); // Turn 3 - (game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, false); + (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, false); await game.phaseInterceptor.to(SelectModifierPhase, false); // Rewards - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); }); it("should have no items in rewards if Wubboffet doesn't take enough damage", async () => { @@ -174,18 +174,18 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); game.onNextPrompt("MessagePhase", UiMode.MESSAGE, () => { game.endPhase(); }); // Skip minigame scene.currentBattle.mysteryEncounter!.misc.turnsRemaining = 0; - (game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, false); + (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, false); await game.phaseInterceptor.to(SelectModifierPhase, false); // Rewards - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -201,7 +201,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); game.onNextPrompt("MessagePhase", UiMode.MESSAGE, () => { game.endPhase(); }); @@ -210,11 +210,11 @@ describe("Fun And Games! - Mystery Encounter", () => { const wobbuffet = scene.getEnemyPokemon()!; wobbuffet.hp = Math.floor(0.2 * wobbuffet.getMaxHp()); scene.currentBattle.mysteryEncounter!.misc.turnsRemaining = 0; - (game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, false); + (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, false); await game.phaseInterceptor.to(SelectModifierPhase, false); // Rewards - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -231,7 +231,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); game.onNextPrompt("MessagePhase", UiMode.MESSAGE, () => { game.endPhase(); }); @@ -240,11 +240,11 @@ describe("Fun And Games! - Mystery Encounter", () => { const wobbuffet = scene.getEnemyPokemon()!; wobbuffet.hp = Math.floor(0.1 * wobbuffet.getMaxHp()); scene.currentBattle.mysteryEncounter!.misc.turnsRemaining = 0; - (game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, false); + (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, false); await game.phaseInterceptor.to(SelectModifierPhase, false); // Rewards - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -261,7 +261,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); game.onNextPrompt("MessagePhase", UiMode.MESSAGE, () => { game.endPhase(); }); @@ -270,11 +270,11 @@ describe("Fun And Games! - Mystery Encounter", () => { const wobbuffet = scene.getEnemyPokemon()!; wobbuffet.hp = 1; scene.currentBattle.mysteryEncounter!.misc.turnsRemaining = 0; - (game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, false); + (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, false); await game.phaseInterceptor.to(SelectModifierPhase, false); // Rewards - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts b/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts index 73bf3cc4eba..96c4adf67c2 100644 --- a/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts +++ b/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts @@ -228,7 +228,7 @@ describe("Global Trade System - Mystery Encounter", () => { await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts b/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts index 10b96d84667..8f041a14002 100644 --- a/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts +++ b/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts @@ -137,7 +137,7 @@ describe("Lost at Sea - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.LOST_AT_SEA, [SpeciesId.ARCANINE]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -146,7 +146,7 @@ describe("Lost at Sea - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 1); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -202,7 +202,7 @@ describe("Lost at Sea - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.LOST_AT_SEA, [SpeciesId.ARCANINE]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -211,7 +211,7 @@ describe("Lost at Sea - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 2); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); diff --git a/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts b/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts index b93fbeb2673..948e42547de 100644 --- a/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts +++ b/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts @@ -155,7 +155,7 @@ describe("Mysterious Challengers - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.MYSTERIOUS_CHALLENGERS, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(scene.currentBattle.trainer).toBeDefined(); expect(scene.currentBattle.mysteryEncounter?.encounterMode).toBe(MysteryEncounterMode.TRAINER_BATTLE); }); @@ -165,7 +165,7 @@ describe("Mysterious Challengers - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -199,7 +199,7 @@ describe("Mysterious Challengers - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.MYSTERIOUS_CHALLENGERS, defaultParty); await runMysteryEncounterToEnd(game, 2, undefined, true); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(scene.currentBattle.trainer).toBeDefined(); expect(scene.currentBattle.mysteryEncounter?.encounterMode).toBe(MysteryEncounterMode.TRAINER_BATTLE); }); @@ -209,7 +209,7 @@ describe("Mysterious Challengers - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -256,7 +256,7 @@ describe("Mysterious Challengers - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.MYSTERIOUS_CHALLENGERS, defaultParty); await runMysteryEncounterToEnd(game, 3, undefined, true); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(scene.currentBattle.trainer).toBeDefined(); expect(scene.currentBattle.mysteryEncounter?.encounterMode).toBe(MysteryEncounterMode.TRAINER_BATTLE); }); @@ -266,7 +266,7 @@ describe("Mysterious Challengers - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 3, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/part-timer-encounter.test.ts b/test/mystery-encounter/encounters/part-timer-encounter.test.ts index 1b9d24b5ce6..fa85f373a35 100644 --- a/test/mystery-encounter/encounters/part-timer-encounter.test.ts +++ b/test/mystery-encounter/encounters/part-timer-encounter.test.ts @@ -238,7 +238,7 @@ describe("Part-Timer - Mystery Encounter", () => { scene.getPlayerParty().forEach(p => (p.moveset = [])); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -247,7 +247,7 @@ describe("Part-Timer - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 3); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); diff --git a/test/mystery-encounter/encounters/safari-zone.test.ts b/test/mystery-encounter/encounters/safari-zone.test.ts index c6bde3a7e7a..dcaf25dd512 100644 --- a/test/mystery-encounter/encounters/safari-zone.test.ts +++ b/test/mystery-encounter/encounters/safari-zone.test.ts @@ -115,7 +115,7 @@ describe("Safari Zone - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.SAFARI_ZONE, defaultParty); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -124,7 +124,7 @@ describe("Safari Zone - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 1); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); diff --git a/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts b/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts index 039b1dacf31..6c8daed998c 100644 --- a/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts +++ b/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts @@ -153,7 +153,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, defaultParty); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -162,7 +162,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 1); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -172,7 +172,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); }); it("should transport to a new area", async () => { @@ -225,7 +225,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, [SpeciesId.BLASTOISE]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -234,7 +234,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 2); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -244,7 +244,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, [SpeciesId.METAGROSS]); await runMysteryEncounterToEnd(game, 2, undefined, true); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); }); it("should transport to a new area", async () => { @@ -305,7 +305,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 3, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts b/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts index 14c9287f5f3..0d5f67b8815 100644 --- a/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts @@ -160,7 +160,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { expect(successfullyLoaded).toBe(true); // Check usual battle stuff - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(scene.currentBattle.trainer).toBeDefined(); expect(scene.currentBattle.mysteryEncounter?.encounterMode).toBe(MysteryEncounterMode.TRAINER_BATTLE); expect(scene.getPlayerParty().length).toBe(1); @@ -179,7 +179,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); const eggsAfter = scene.gameData.eggs; const commonEggs = scene.currentBattle.mysteryEncounter!.misc.pokemon1CommonEggs; @@ -245,7 +245,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { expect(successfullyLoaded).toBe(true); // Check usual battle stuff - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(scene.currentBattle.trainer).toBeDefined(); expect(scene.currentBattle.mysteryEncounter?.encounterMode).toBe(MysteryEncounterMode.TRAINER_BATTLE); expect(scene.getPlayerParty().length).toBe(1); @@ -264,7 +264,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); const eggsAfter = scene.gameData.eggs; const commonEggs = scene.currentBattle.mysteryEncounter!.misc.pokemon2CommonEggs; @@ -327,7 +327,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { expect(successfullyLoaded).toBe(true); // Check usual battle stuff - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(scene.currentBattle.trainer).toBeDefined(); expect(scene.currentBattle.mysteryEncounter?.encounterMode).toBe(MysteryEncounterMode.TRAINER_BATTLE); expect(scene.getPlayerParty().length).toBe(1); @@ -346,7 +346,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 3, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); const eggsAfter = scene.gameData.eggs; const commonEggs = scene.currentBattle.mysteryEncounter!.misc.pokemon3CommonEggs; diff --git a/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts b/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts index 73632990dbf..13d7c2502a6 100644 --- a/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts @@ -175,7 +175,7 @@ describe("The Pokemon Salesman - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.THE_POKEMON_SALESMAN, defaultParty); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -184,7 +184,7 @@ describe("The Pokemon Salesman - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 1); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); diff --git a/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts b/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts index 2187bad5775..e50a19a0a80 100644 --- a/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts @@ -189,13 +189,13 @@ describe("The Strong Stuff - Mystery Encounter", () => { }); it("should start battle against Shuckle", async () => { - const phaseSpy = vi.spyOn(scene, "pushPhase"); + const phaseSpy = vi.spyOn(scene.phaseManager, "pushPhase"); await game.runToMysteryEncounter(MysteryEncounterType.THE_STRONG_STUFF, defaultParty); await runMysteryEncounterToEnd(game, 2, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(SpeciesId.SHUCKLE); expect(enemyField[0].summonData.statStages).toEqual([0, 1, 0, 1, 0, 0, 0]); @@ -233,7 +233,7 @@ describe("The Strong Stuff - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts b/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts index 57b6e881683..87a3852615d 100644 --- a/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts @@ -265,7 +265,7 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.THE_WINSTRATE_CHALLENGE, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(scene.currentBattle.trainer).toBeDefined(); expect(scene.currentBattle.trainer!.config.trainerType).toBe(TrainerType.VICTOR); expect(scene.currentBattle.mysteryEncounter?.enemyPartyConfigs.length).toBe(4); @@ -298,7 +298,7 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { // Should have Macho Brace in the rewards await skipBattleToNextBattle(game, true); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -328,7 +328,7 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { }); it("Should fully heal the party", async () => { - const phaseSpy = vi.spyOn(scene, "unshiftPhase"); + const phaseSpy = vi.spyOn(scene.phaseManager, "unshiftPhase"); await game.runToMysteryEncounter(MysteryEncounterType.THE_WINSTRATE_CHALLENGE, defaultParty); await runMysteryEncounterToEnd(game, 2); @@ -340,7 +340,7 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { it("should have a Rarer Candy in the rewards", async () => { await game.runToMysteryEncounter(MysteryEncounterType.THE_WINSTRATE_CHALLENGE, defaultParty); await runMysteryEncounterToEnd(game, 2); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -359,8 +359,8 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { * @param isFinalBattle */ async function skipBattleToNextBattle(game: GameManager, isFinalBattle = false) { - game.scene.clearPhaseQueue(); - game.scene.clearPhaseQueueSplice(); + game.scene.phaseManager.clearPhaseQueue(); + game.scene.phaseManager.clearPhaseQueueSplice(); const commandUiHandler = game.scene.ui.handlers[UiMode.COMMAND]; commandUiHandler.clear(); game.scene.getEnemyParty().forEach(p => { @@ -369,7 +369,7 @@ async function skipBattleToNextBattle(game: GameManager, isFinalBattle = false) game.scene.field.remove(p); }); game.phaseInterceptor["onHold"] = []; - game.scene.pushPhase(new VictoryPhase(0)); + game.scene.phaseManager.pushPhase(new VictoryPhase(0)); game.phaseInterceptor.superEndPhase(); if (isFinalBattle) { await game.phaseInterceptor.to(MysteryEncounterRewardsPhase); diff --git a/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts b/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts index 94011b4b01d..999936c8832 100644 --- a/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts +++ b/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts @@ -173,7 +173,7 @@ describe("Trash to Treasure - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.TRASH_TO_TREASURE, defaultParty); await runMysteryEncounterToEnd(game, 1); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); const leftovers = scene.findModifier(m => m instanceof TurnHealModifier) as TurnHealModifier; expect(leftovers).toBeDefined(); @@ -215,13 +215,13 @@ describe("Trash to Treasure - Mystery Encounter", () => { }); it("should start battle against Garbodor", async () => { - const phaseSpy = vi.spyOn(scene, "pushPhase"); + const phaseSpy = vi.spyOn(scene.phaseManager, "pushPhase"); await game.runToMysteryEncounter(MysteryEncounterType.TRASH_TO_TREASURE, defaultParty); await runMysteryEncounterToEnd(game, 2, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(SpeciesId.GARBODOR); expect(enemyField[0].moveset).toEqual([ @@ -243,7 +243,7 @@ describe("Trash to Treasure - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts b/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts index 4fb0a231853..0c3131de1d2 100644 --- a/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts +++ b/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts @@ -113,8 +113,8 @@ describe("Uncommon Breed - Mystery Encounter", () => { }); it.skip("should start a fight against the boss below wave 50", async () => { - const phaseSpy = vi.spyOn(scene, "pushPhase"); - const unshiftPhaseSpy = vi.spyOn(scene, "unshiftPhase"); + const phaseSpy = vi.spyOn(scene.phaseManager, "pushPhase"); + const unshiftPhaseSpy = vi.spyOn(scene.phaseManager, "unshiftPhase"); await game.runToMysteryEncounter(MysteryEncounterType.UNCOMMON_BREED, defaultParty); const config = game.scene.currentBattle.mysteryEncounter!.enemyPartyConfigs[0]; @@ -123,7 +123,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(speciesToSpawn); @@ -140,8 +140,8 @@ describe("Uncommon Breed - Mystery Encounter", () => { it.skip("should start a fight against the boss above wave 50", async () => { game.override.startingWave(57); - const phaseSpy = vi.spyOn(scene, "pushPhase"); - const unshiftPhaseSpy = vi.spyOn(scene, "unshiftPhase"); + const phaseSpy = vi.spyOn(scene.phaseManager, "pushPhase"); + const unshiftPhaseSpy = vi.spyOn(scene.phaseManager, "unshiftPhase"); await game.runToMysteryEncounter(MysteryEncounterType.UNCOMMON_BREED, defaultParty); const config = game.scene.currentBattle.mysteryEncounter!.enemyPartyConfigs[0]; @@ -150,7 +150,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(speciesToSpawn); @@ -193,7 +193,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { await scene.updateModifiers(true); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -202,7 +202,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 2); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -253,7 +253,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { scene.getPlayerParty().forEach(p => (p.moveset = [])); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - const encounterPhase = scene.getCurrentPhase(); + const encounterPhase = scene.phaseManager.getCurrentPhase(); expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; vi.spyOn(mysteryEncounterPhase, "continueEncounter"); @@ -262,7 +262,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 3); - expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); diff --git a/test/mystery-encounter/encounters/weird-dream-encounter.test.ts b/test/mystery-encounter/encounters/weird-dream-encounter.test.ts index 163a15a715f..2ad74b48540 100644 --- a/test/mystery-encounter/encounters/weird-dream-encounter.test.ts +++ b/test/mystery-encounter/encounters/weird-dream-encounter.test.ts @@ -118,7 +118,7 @@ describe("Weird Dream - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); const pokemonAfter = scene.getPlayerParty(); const bstsAfter = pokemonAfter.map(pokemon => pokemon.getSpeciesForm().getBaseStatTotal()); @@ -141,7 +141,7 @@ describe("Weird Dream - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.WEIRD_DREAM, defaultParty); await runMysteryEncounterToEnd(game, 1); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -187,7 +187,7 @@ describe("Weird Dream - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); expect(enemyField.length).toBe(1); expect(scene.getEnemyParty().length).toBe(scene.getPlayerParty().length); }); @@ -197,7 +197,7 @@ describe("Weird Dream - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/mystery-encounter-utils.test.ts b/test/mystery-encounter/mystery-encounter-utils.test.ts index cd29a203e62..80e2fb77f2b 100644 --- a/test/mystery-encounter/mystery-encounter-utils.test.ts +++ b/test/mystery-encounter/mystery-encounter-utils.test.ts @@ -291,8 +291,8 @@ describe("Mystery Encounter Utils", () => { it("queues a message with encounter dialogue tokens", async () => { scene.currentBattle.mysteryEncounter = new MysteryEncounter(null); scene.currentBattle.mysteryEncounter.setDialogueToken("test", "value"); - const spy = vi.spyOn(game.scene, "queueMessage"); - const phaseSpy = vi.spyOn(game.scene, "unshiftPhase"); + const spy = vi.spyOn(game.scene.phaseManager, "queueMessage"); + const phaseSpy = vi.spyOn(game.scene.phaseManager, "unshiftPhase"); queueEncounterMessage("mysteryEncounter:unit_test_dialogue"); expect(spy).toHaveBeenCalledWith("mysteryEncounter:unit_test_dialogue", null, true); diff --git a/test/mystery-encounter/mystery-encounter.test.ts b/test/mystery-encounter/mystery-encounter.test.ts index 19dd17d5381..1f1d0f5826e 100644 --- a/test/mystery-encounter/mystery-encounter.test.ts +++ b/test/mystery-encounter/mystery-encounter.test.ts @@ -35,7 +35,7 @@ describe("Mystery Encounters", () => { ]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - expect(game.scene.getCurrentPhase()!.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(MysteryEncounterPhase.name); }); it("Encounters should not run below wave 10", async () => { diff --git a/test/phases/mystery-encounter-phase.test.ts b/test/phases/mystery-encounter-phase.test.ts index ece5a221e00..d078c2398b4 100644 --- a/test/phases/mystery-encounter-phase.test.ts +++ b/test/phases/mystery-encounter-phase.test.ts @@ -41,7 +41,7 @@ describe("Mystery Encounter Phases", () => { ]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - expect(game.scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game.scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); }); it("Runs MysteryEncounterPhase", async () => { @@ -87,7 +87,9 @@ describe("Mystery Encounter Phases", () => { // Waitfor required so that option select messages and preOptionPhase logic are handled await vi.waitFor(() => - expect(game.scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterOptionSelectedPhase.name), + expect(game.scene.phaseManager.getCurrentPhase()?.constructor.name).toBe( + MysteryEncounterOptionSelectedPhase.name, + ), ); expect(ui.getMode()).toBe(UiMode.MESSAGE); expect(ui.showDialogue).toHaveBeenCalledTimes(1); diff --git a/test/phases/phases.test.ts b/test/phases/phases.test.ts index 2483cfb317f..8f7b1a1ea66 100644 --- a/test/phases/phases.test.ts +++ b/test/phases/phases.test.ts @@ -30,7 +30,7 @@ describe("Phases", () => { describe("LoginPhase", () => { it("should start the login phase", async () => { const loginPhase = new LoginPhase(); - scene.unshiftPhase(loginPhase); + scene.phaseManager.unshiftPhase(loginPhase); await game.phaseInterceptor.to(LoginPhase); expect(scene.ui.getMode()).to.equal(UiMode.MESSAGE); }); @@ -39,7 +39,7 @@ describe("Phases", () => { describe("TitlePhase", () => { it("should start the title phase", async () => { const titlePhase = new TitlePhase(); - scene.unshiftPhase(titlePhase); + scene.phaseManager.unshiftPhase(titlePhase); await game.phaseInterceptor.to(TitlePhase); expect(scene.ui.getMode()).to.equal(UiMode.TITLE); }); @@ -48,7 +48,7 @@ describe("Phases", () => { describe("UnavailablePhase", () => { it("should start the unavailable phase", async () => { const unavailablePhase = new UnavailablePhase(); - scene.unshiftPhase(unavailablePhase); + scene.phaseManager.unshiftPhase(unavailablePhase); await game.phaseInterceptor.to(UnavailablePhase); expect(scene.ui.getMode()).to.equal(UiMode.UNAVAILABLE); }, 20000); diff --git a/test/phases/select-modifier-phase.test.ts b/test/phases/select-modifier-phase.test.ts index 72496d5f17b..083b7d16f10 100644 --- a/test/phases/select-modifier-phase.test.ts +++ b/test/phases/select-modifier-phase.test.ts @@ -48,7 +48,7 @@ describe("SelectModifierPhase", () => { it("should start a select modifier phase", async () => { initSceneWithoutEncounterPhase(scene, [SpeciesId.ABRA, SpeciesId.VOLCARONA]); const selectModifierPhase = new SelectModifierPhase(); - scene.unshiftPhase(selectModifierPhase); + scene.phaseManager.unshiftPhase(selectModifierPhase); await game.phaseInterceptor.to(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -96,7 +96,7 @@ describe("SelectModifierPhase", () => { await game.phaseInterceptor.to("SelectModifierPhase"); // TODO: nagivate the ui to reroll somehow - //const smphase = scene.getCurrentPhase() as SelectModifierPhase; + //const smphase = scene.phaseManager.getCurrentPhase() as SelectModifierPhase; expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); const modifierSelectHandler = scene.ui.handlers.find( h => h instanceof ModifierSelectUiHandler, @@ -164,7 +164,7 @@ describe("SelectModifierPhase", () => { ], }; const selectModifierPhase = new SelectModifierPhase(0, undefined, customModifiers); - scene.unshiftPhase(selectModifierPhase); + scene.phaseManager.unshiftPhase(selectModifierPhase); game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("SelectModifierPhase"); @@ -201,7 +201,7 @@ describe("SelectModifierPhase", () => { scene.getPlayerParty().push(pokemon, pokemon, pokemon, pokemon, pokemon, pokemon); const selectModifierPhase = new SelectModifierPhase(0, undefined, customModifiers); - scene.unshiftPhase(selectModifierPhase); + scene.phaseManager.unshiftPhase(selectModifierPhase); game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("SelectModifierPhase"); @@ -240,7 +240,7 @@ describe("SelectModifierPhase", () => { guaranteedModifierTiers: [ModifierTier.MASTER, ModifierTier.MASTER], }; const selectModifierPhase = new SelectModifierPhase(0, undefined, customModifiers); - scene.unshiftPhase(selectModifierPhase); + scene.phaseManager.unshiftPhase(selectModifierPhase); game.move.select(MoveId.SPLASH); await game.phaseInterceptor.run(SelectModifierPhase); @@ -264,7 +264,7 @@ describe("SelectModifierPhase", () => { fillRemaining: true, }; const selectModifierPhase = new SelectModifierPhase(0, undefined, customModifiers); - scene.unshiftPhase(selectModifierPhase); + scene.phaseManager.unshiftPhase(selectModifierPhase); game.move.select(MoveId.SPLASH); await game.phaseInterceptor.run(SelectModifierPhase); diff --git a/test/testUtils/gameManager.ts b/test/testUtils/gameManager.ts index 68d218b3988..edf0301447d 100644 --- a/test/testUtils/gameManager.ts +++ b/test/testUtils/gameManager.ts @@ -101,13 +101,13 @@ export default class GameManager { if (!firstTimeScene) { this.scene.reset(false, true); (this.scene.ui.handlers[UiMode.STARTER_SELECT] as StarterSelectUiHandler).clearStarterPreferences(); - this.scene.clearAllPhases(); + this.scene.phaseManager.clearAllPhases(); // Must be run after phase interceptor has been initialized. - this.scene.pushPhase(new LoginPhase()); - this.scene.pushPhase(new TitlePhase()); - this.scene.shiftPhase(); + this.scene.phaseManager.pushPhase(new LoginPhase()); + this.scene.phaseManager.pushPhase(new TitlePhase()); + this.scene.phaseManager.shiftPhase(); this.gameWrapper.scene = this.scene; } @@ -154,7 +154,7 @@ export default class GameManager { * Ends the current phase. */ endPhase() { - this.scene.getCurrentPhase()?.end(); + this.scene.phaseManager.getCurrentPhase()?.end(); } /** @@ -211,7 +211,7 @@ export default class GameManager { this.scene.gameMode = getGameMode(mode); const starters = generateStarter(this.scene, species); const selectStarterPhase = new SelectStarterPhase(); - this.scene.pushPhase(new EncounterPhase(false)); + this.scene.phaseManager.pushPhase(new EncounterPhase(false)); selectStarterPhase.initBattle(starters); }); @@ -247,7 +247,7 @@ export default class GameManager { this.scene.gameMode = getGameMode(GameModes.CLASSIC); const starters = generateStarter(this.scene, species); const selectStarterPhase = new SelectStarterPhase(); - this.scene.pushPhase(new EncounterPhase(false)); + this.scene.phaseManager.pushPhase(new EncounterPhase(false)); selectStarterPhase.initBattle(starters); }, () => this.isCurrentPhase(EncounterPhase), @@ -282,7 +282,7 @@ export default class GameManager { UiMode.TARGET_SELECT, () => { const handler = this.scene.ui.getHandler() as TargetSelectUiHandler; - const move = (this.scene.getCurrentPhase() as SelectTargetPhase) + const move = (this.scene.phaseManager.getCurrentPhase() as SelectTargetPhase) .getPokemon() .getMoveset() [movePosition].getMove(); @@ -397,7 +397,7 @@ export default class GameManager { */ isCurrentPhase(phaseTarget) { const targetName = typeof phaseTarget === "string" ? phaseTarget : phaseTarget.name; - return this.scene.getCurrentPhase()?.constructor.name === targetName; + return this.scene.phaseManager.getCurrentPhase()?.constructor.name === targetName; } /** @@ -449,7 +449,7 @@ export default class GameManager { async killPokemon(pokemon: PlayerPokemon | EnemyPokemon) { return new Promise(async (resolve, reject) => { pokemon.hp = 0; - this.scene.pushPhase(new FaintPhase(pokemon.getBattlerIndex(), true)); + this.scene.phaseManager.pushPhase(new FaintPhase(pokemon.getBattlerIndex(), true)); await this.phaseInterceptor.to(FaintPhase).catch(e => reject(e)); resolve(); }); @@ -529,7 +529,7 @@ export default class GameManager { async setTurnOrder(order: BattlerIndex[]): Promise { await this.phaseInterceptor.to(TurnStartPhase, false); - vi.spyOn(this.scene.getCurrentPhase() as TurnStartPhase, "getSpeedOrder").mockReturnValue(order); + vi.spyOn(this.scene.phaseManager.getCurrentPhase() as TurnStartPhase, "getSpeedOrder").mockReturnValue(order); } /** diff --git a/test/testUtils/helpers/challengeModeHelper.ts b/test/testUtils/helpers/challengeModeHelper.ts index d0533d3b5ba..f0b4b151d22 100644 --- a/test/testUtils/helpers/challengeModeHelper.ts +++ b/test/testUtils/helpers/challengeModeHelper.ts @@ -45,7 +45,7 @@ export class ChallengeModeHelper extends GameManagerHelper { this.game.scene.gameMode.challenges = this.challenges; const starters = generateStarter(this.game.scene, species); const selectStarterPhase = new SelectStarterPhase(); - this.game.scene.pushPhase(new EncounterPhase(false)); + this.game.scene.phaseManager.pushPhase(new EncounterPhase(false)); selectStarterPhase.initBattle(starters); }); diff --git a/test/testUtils/helpers/classicModeHelper.ts b/test/testUtils/helpers/classicModeHelper.ts index d5f0ceb4072..575000c2193 100644 --- a/test/testUtils/helpers/classicModeHelper.ts +++ b/test/testUtils/helpers/classicModeHelper.ts @@ -30,7 +30,7 @@ export class ClassicModeHelper extends GameManagerHelper { this.game.scene.gameMode = getGameMode(GameModes.CLASSIC); const starters = generateStarter(this.game.scene, species); const selectStarterPhase = new SelectStarterPhase(); - this.game.scene.pushPhase(new EncounterPhase(false)); + this.game.scene.phaseManager.pushPhase(new EncounterPhase(false)); selectStarterPhase.initBattle(starters); }); diff --git a/test/testUtils/helpers/moveHelper.ts b/test/testUtils/helpers/moveHelper.ts index 02b1efd837f..878a265ce84 100644 --- a/test/testUtils/helpers/moveHelper.ts +++ b/test/testUtils/helpers/moveHelper.ts @@ -23,7 +23,7 @@ export class MoveHelper extends GameManagerHelper { */ public async forceHit(): Promise { await this.game.phaseInterceptor.to(MoveEffectPhase, false); - const moveEffectPhase = this.game.scene.getCurrentPhase() as MoveEffectPhase; + const moveEffectPhase = this.game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase; vi.spyOn(moveEffectPhase.move, "calculateBattleAccuracy").mockReturnValue(-1); } @@ -34,7 +34,7 @@ export class MoveHelper extends GameManagerHelper { */ public async forceMiss(firstTargetOnly = false): Promise { await this.game.phaseInterceptor.to(MoveEffectPhase, false); - const moveEffectPhase = this.game.scene.getCurrentPhase() as MoveEffectPhase; + const moveEffectPhase = this.game.scene.phaseManager.getCurrentPhase() as MoveEffectPhase; const accuracy = vi.spyOn(moveEffectPhase.move, "calculateBattleAccuracy"); if (firstTargetOnly) { @@ -54,10 +54,17 @@ export class MoveHelper extends GameManagerHelper { const movePosition = getMovePosition(this.game.scene, pkmIndex, move); this.game.onNextPrompt("CommandPhase", UiMode.COMMAND, () => { - this.game.scene.ui.setMode(UiMode.FIGHT, (this.game.scene.getCurrentPhase() as CommandPhase).getFieldIndex()); + this.game.scene.ui.setMode( + UiMode.FIGHT, + (this.game.scene.phaseManager.getCurrentPhase() as CommandPhase).getFieldIndex(), + ); }); this.game.onNextPrompt("CommandPhase", UiMode.FIGHT, () => { - (this.game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false); + (this.game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand( + Command.FIGHT, + movePosition, + false, + ); }); if (targetIndex !== null) { @@ -79,12 +86,12 @@ export class MoveHelper extends GameManagerHelper { this.game.onNextPrompt("CommandPhase", UiMode.COMMAND, () => { this.game.scene.ui.setMode( UiMode.FIGHT, - (this.game.scene.getCurrentPhase() as CommandPhase).getFieldIndex(), + (this.game.scene.phaseManager.getCurrentPhase() as CommandPhase).getFieldIndex(), Command.TERA, ); }); this.game.onNextPrompt("CommandPhase", UiMode.FIGHT, () => { - (this.game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.TERA, movePosition, false); + (this.game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.TERA, movePosition, false); }); if (targetIndex !== null) { @@ -171,7 +178,9 @@ export class MoveHelper extends GameManagerHelper { // Wait for the next EnemyCommandPhase to start await this.game.phaseInterceptor.to("EnemyCommandPhase", false); const enemy = - this.game.scene.getEnemyField()[(this.game.scene.getCurrentPhase() as EnemyCommandPhase).getFieldIndex()]; + this.game.scene.getEnemyField()[ + (this.game.scene.phaseManager.getCurrentPhase() as EnemyCommandPhase).getFieldIndex() + ]; const legalTargets = getMoveTargets(enemy, moveId); vi.spyOn(enemy, "getNextMove").mockReturnValueOnce({ @@ -205,7 +214,9 @@ export class MoveHelper extends GameManagerHelper { await this.game.phaseInterceptor.to("EnemyCommandPhase", false); const enemy = - this.game.scene.getEnemyField()[(this.game.scene.getCurrentPhase() as EnemyCommandPhase).getFieldIndex()]; + this.game.scene.getEnemyField()[ + (this.game.scene.phaseManager.getCurrentPhase() as EnemyCommandPhase).getFieldIndex() + ]; if ([Overrides.OPP_MOVESET_OVERRIDE].flat().length > 0) { vi.spyOn(Overrides, "OPP_MOVESET_OVERRIDE", "get").mockReturnValue([]); diff --git a/test/testUtils/helpers/reloadHelper.ts b/test/testUtils/helpers/reloadHelper.ts index 4a9e5356968..4f9d6c810f8 100644 --- a/test/testUtils/helpers/reloadHelper.ts +++ b/test/testUtils/helpers/reloadHelper.ts @@ -35,7 +35,7 @@ export class ReloadHelper extends GameManagerHelper { const scene = this.game.scene; const titlePhase = new TitlePhase(); - scene.clearPhaseQueue(); + scene.phaseManager.clearPhaseQueue(); // Set the last saved session to the desired session data vi.spyOn(scene.gameData, "getSession").mockReturnValue( @@ -43,7 +43,7 @@ export class ReloadHelper extends GameManagerHelper { resolve(this.sessionData); }), ); - scene.unshiftPhase(titlePhase); + scene.phaseManager.unshiftPhase(titlePhase); this.game.endPhase(); // End the currently ongoing battle // remove all persistent mods before loading diff --git a/test/testUtils/phaseInterceptor.ts b/test/testUtils/phaseInterceptor.ts index b7577550568..34fba2c145d 100644 --- a/test/testUtils/phaseInterceptor.ts +++ b/test/testUtils/phaseInterceptor.ts @@ -301,7 +301,7 @@ export default class PhaseInterceptor { pop() { this.onHold.pop(); - this.scene.shiftPhase(); + this.scene.phaseManager.shiftPhase(); } /** @@ -316,7 +316,7 @@ export default class PhaseInterceptor { shift(shouldRun = false): void { this.onHold.shift(); if (shouldRun) { - this.scene.shiftPhase(); + this.scene.phaseManager.shiftPhase(); } } @@ -345,7 +345,7 @@ export default class PhaseInterceptor { */ startPhase(phase: PhaseClass) { this.log.push(phase.name); - const instance = this.scene.getCurrentPhase(); + const instance = this.scene.phaseManager.getCurrentPhase(); this.onHold.push({ name: phase.name, call: () => { @@ -364,7 +364,7 @@ export default class PhaseInterceptor { * @param phase - The phase to start. */ superEndPhase() { - const instance = this.scene.getCurrentPhase(); + const instance = this.scene.phaseManager.getCurrentPhase(); this.originalSuperEnd.apply(instance); this.inProgress?.callback(); this.inProgress = undefined; @@ -376,7 +376,7 @@ export default class PhaseInterceptor { * @param args - Additional arguments to pass to the original method. */ setMode(mode: UiMode, ...args: unknown[]): Promise { - const currentPhase = this.scene.getCurrentPhase(); + const currentPhase = this.scene.phaseManager.getCurrentPhase(); const instance = this.scene.ui; console.log("setMode", `${UiMode[mode]} (=${mode})`, args); const ret = this.originalSetMode.apply(instance, [mode, ...args]); @@ -413,7 +413,7 @@ export default class PhaseInterceptor { const actionForNextPrompt = this.prompts[0]; const expireFn = actionForNextPrompt.expireFn?.(); const currentMode = this.scene.ui.getMode(); - const currentPhase = this.scene.getCurrentPhase()?.constructor.name; + const currentPhase = this.scene.phaseManager.getCurrentPhase()?.constructor.name; const currentHandler = this.scene.ui.getHandler(); if (expireFn) { this.prompts.shift(); diff --git a/test/ui/starter-select.test.ts b/test/ui/starter-select.test.ts index 10a804b805d..2884323b4ea 100644 --- a/test/ui/starter-select.test.ts +++ b/test/ui/starter-select.test.ts @@ -45,7 +45,7 @@ describe("UI - Starter select", () => { expect(caughtCount).toBe(Object.keys(allSpecies).length); await game.runToTitle(); game.onNextPrompt("TitlePhase", UiMode.TITLE, () => { - const currentPhase = game.scene.getCurrentPhase() as TitlePhase; + const currentPhase = game.scene.phaseManager.getCurrentPhase() as TitlePhase; currentPhase.gameMode = GameModes.CLASSIC; currentPhase.end(); }); @@ -105,7 +105,7 @@ describe("UI - Starter select", () => { expect(caughtCount).toBe(Object.keys(allSpecies).length); await game.runToTitle(); game.onNextPrompt("TitlePhase", UiMode.TITLE, () => { - const currentPhase = game.scene.getCurrentPhase() as TitlePhase; + const currentPhase = game.scene.phaseManager.getCurrentPhase() as TitlePhase; currentPhase.gameMode = GameModes.CLASSIC; currentPhase.end(); }); @@ -167,7 +167,7 @@ describe("UI - Starter select", () => { expect(caughtCount).toBe(Object.keys(allSpecies).length); await game.runToTitle(); game.onNextPrompt("TitlePhase", UiMode.TITLE, () => { - const currentPhase = game.scene.getCurrentPhase() as TitlePhase; + const currentPhase = game.scene.phaseManager.getCurrentPhase() as TitlePhase; currentPhase.gameMode = GameModes.CLASSIC; currentPhase.end(); }); @@ -232,7 +232,7 @@ describe("UI - Starter select", () => { expect(caughtCount).toBe(Object.keys(allSpecies).length); await game.runToTitle(); game.onNextPrompt("TitlePhase", UiMode.TITLE, () => { - const currentPhase = game.scene.getCurrentPhase() as TitlePhase; + const currentPhase = game.scene.phaseManager.getCurrentPhase() as TitlePhase; currentPhase.gameMode = GameModes.CLASSIC; currentPhase.end(); }); @@ -293,7 +293,7 @@ describe("UI - Starter select", () => { expect(caughtCount).toBe(Object.keys(allSpecies).length); await game.runToTitle(); game.onNextPrompt("TitlePhase", UiMode.TITLE, () => { - const currentPhase = game.scene.getCurrentPhase() as TitlePhase; + const currentPhase = game.scene.phaseManager.getCurrentPhase() as TitlePhase; currentPhase.gameMode = GameModes.CLASSIC; currentPhase.end(); }); @@ -353,7 +353,7 @@ describe("UI - Starter select", () => { expect(caughtCount).toBe(Object.keys(allSpecies).length); await game.runToTitle(); game.onNextPrompt("TitlePhase", UiMode.TITLE, () => { - const currentPhase = game.scene.getCurrentPhase() as TitlePhase; + const currentPhase = game.scene.phaseManager.getCurrentPhase() as TitlePhase; currentPhase.gameMode = GameModes.CLASSIC; currentPhase.end(); }); @@ -415,7 +415,7 @@ describe("UI - Starter select", () => { expect(caughtCount).toBe(Object.keys(allSpecies).length); await game.runToTitle(); game.onNextPrompt("TitlePhase", UiMode.TITLE, () => { - const currentPhase = game.scene.getCurrentPhase() as TitlePhase; + const currentPhase = game.scene.phaseManager.getCurrentPhase() as TitlePhase; currentPhase.gameMode = GameModes.CLASSIC; currentPhase.end(); }); @@ -476,7 +476,7 @@ describe("UI - Starter select", () => { expect(caughtCount).toBe(Object.keys(allSpecies).length); await game.runToTitle(); game.onNextPrompt("TitlePhase", UiMode.TITLE, () => { - const currentPhase = game.scene.getCurrentPhase() as TitlePhase; + const currentPhase = game.scene.phaseManager.getCurrentPhase() as TitlePhase; currentPhase.gameMode = GameModes.CLASSIC; currentPhase.end(); }); @@ -540,7 +540,7 @@ describe("UI - Starter select", () => { expect(caughtCount).toBe(Object.keys(allSpecies).length); await game.runToTitle(); game.onNextPrompt("TitlePhase", UiMode.TITLE, () => { - const currentPhase = game.scene.getCurrentPhase() as TitlePhase; + const currentPhase = game.scene.phaseManager.getCurrentPhase() as TitlePhase; currentPhase.gameMode = GameModes.CLASSIC; currentPhase.end(); }); From 09e30070f904c7993fa621a924fb057546591233 Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Sat, 7 Jun 2025 21:02:25 -0400 Subject: [PATCH 64/71] [Docs] Fixed test helper functions to conform with TSDoc standard; deprecated `runToSummon`/`startBattle` without args (#5912) * Updated doc comments for test-related functions * Marked `classicMode.runToSummon` and `classicMode.startBattle` without species as deprecated Having the species being used depend on daily run RNG is both unintuitive, janky and prone to flaking out (as happened with the Gastro Acid tests) * Fixed the bug * Update field-helper.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- test/testUtils/helpers/classicModeHelper.ts | 25 ++++++++++++++--- test/testUtils/helpers/field-helper.ts | 30 +++++++++++---------- test/testUtils/helpers/moveHelper.ts | 26 +++++++++++------- 3 files changed, 55 insertions(+), 26 deletions(-) diff --git a/test/testUtils/helpers/classicModeHelper.ts b/test/testUtils/helpers/classicModeHelper.ts index 575000c2193..c4f086bd628 100644 --- a/test/testUtils/helpers/classicModeHelper.ts +++ b/test/testUtils/helpers/classicModeHelper.ts @@ -11,14 +11,24 @@ import { generateStarter } from "../gameManagerUtils"; import { GameManagerHelper } from "./gameManagerHelper"; /** - * Helper to handle classic mode specifics + * Helper to handle classic-mode specific operations. */ export class ClassicModeHelper extends GameManagerHelper { /** * Runs the classic game to the summon phase. - * @param species - Optional array of species to summon. + * @param species - An array of {@linkcode Species} to summon. * @returns A promise that resolves when the summon phase is reached. */ + async runToSummon(species: SpeciesId[]): Promise; + /** + * Runs the classic game to the summon phase. + * Selects 3 daily run starters with a fixed seed of "test" + * (see `DailyRunConfig.getDailyRunStarters` in `daily-run.ts` for more info). + * @returns A promise that resolves when the summon phase is reached. + * @deprecated - Specifying the starters helps prevent inconsistencies from internal RNG changes. + */ + async runToSummon(): Promise; + async runToSummon(species: SpeciesId[] | undefined): Promise; async runToSummon(species?: SpeciesId[]): Promise { await this.game.runToTitle(); @@ -42,9 +52,18 @@ export class ClassicModeHelper extends GameManagerHelper { /** * Transitions to the start of a battle. - * @param species - Optional array of species to start the battle with. + * @param species - An array of {@linkcode Species} to start the battle with. * @returns A promise that resolves when the battle is started. */ + async startBattle(species: SpeciesId[]): Promise; + /** + * Transitions to the start of a battle. + * Will select 3 daily run starters with a fixed seed of "test" + * (see `DailyRunConfig.getDailyRunStarters` in `daily-run.ts` for more info). + * @returns A promise that resolves when the battle is started. + * @deprecated - Specifying the starters helps prevent inconsistencies from internal RNG changes. + */ + async startBattle(): Promise; async startBattle(species?: SpeciesId[]): Promise { await this.runToSummon(species); diff --git a/test/testUtils/helpers/field-helper.ts b/test/testUtils/helpers/field-helper.ts index 08b7a210e68..aa01ef7497d 100644 --- a/test/testUtils/helpers/field-helper.ts +++ b/test/testUtils/helpers/field-helper.ts @@ -20,9 +20,9 @@ export class FieldHelper extends GameManagerHelper { * Passthrough for {@linkcode globalScene.getPlayerPokemon} that adds an `undefined` check for * the Pokemon so that the return type for the function doesn't have `undefined`. * This removes the need to add a `!` like when calling `game.scene.getPlayerPokemon()!`. - * @param includeSwitching Whether a pokemon that is currently switching out is valid, default `true` - * @returns The first {@linkcode PlayerPokemon} that is {@linkcode globalScene.getPlayerField on the field} - * and {@linkcode PlayerPokemon.isActive is active} + * @param includeSwitching - Whether a pokemon that is currently switching out is valid, default `true` + * @returns The first {@linkcode PlayerPokemon} that is {@linkcode globalScene.getPlayerField | on the field} + * and {@linkcode PlayerPokemon.isActive | is active} * (aka {@linkcode PlayerPokemon.isAllowedInBattle is allowed in battle}). */ public getPlayerPokemon(includeSwitching = true): PlayerPokemon { @@ -36,9 +36,9 @@ export class FieldHelper extends GameManagerHelper { * the Pokemon so that the return type for the function doesn't have `undefined`. * This removes the need to add a `!` like when calling `game.scene.getEnemyPokemon()!`. * @param includeSwitching Whether a pokemon that is currently switching out is valid, default `true` - * @returns The first {@linkcode EnemyPokemon} that is {@linkcode globalScene.getEnemyField on the field} - * and {@linkcode EnemyPokemon.isActive is active} - * (aka {@linkcode EnemyPokemon.isAllowedInBattle is allowed in battle}). + * @returns The first {@linkcode EnemyPokemon} that is {@linkcode globalScene.getEnemyField | on the field} + * and {@linkcode EnemyPokemon.isActive | is active} + * (aka {@linkcode EnemyPokemon.isAllowedInBattle | is allowed in battle}). */ public getEnemyPokemon(includeSwitching = true): EnemyPokemon { const pokemon = this.game.scene.getEnemyPokemon(includeSwitching); @@ -50,7 +50,9 @@ export class FieldHelper extends GameManagerHelper { * @returns The {@linkcode BattlerIndex | indexes} of Pokemon on the field in order of decreasing Speed. * Speed ties are returned in increasing order of index. * - * Note: Trick Room does not modify the speed of Pokemon on the field. + * @remarks + * This does not account for Trick Room as it does not modify the _speed_ of Pokemon on the field, + * only their turn order. */ public getSpeedOrder(): BattlerIndex[] { return this.game.scene @@ -60,7 +62,8 @@ export class FieldHelper extends GameManagerHelper { } /** - * Mocks a pokemon's ability, overriding its existing ability (takes precedence over global overrides) + * Mocks a pokemon's ability, overriding its existing ability (takes precedence over global overrides). + * Useful for giving exactly 1 Pokemon in a double battle a certain ability (rather than all pokemon). * @param pokemon - The pokemon to mock the ability of * @param ability - The ability to be mocked * @returns A {@linkcode MockInstance} object @@ -72,16 +75,15 @@ export class FieldHelper extends GameManagerHelper { } /** - * Forces a pokemon to be terastallized. Defaults to the pokemon's primary type if not specified. - * - * This function only mocks the Pokemon's tera-related variables; it does NOT activate any tera-related abilities. + * Force a given Pokemon to be terastallized to the given type. * * @param pokemon - The pokemon to terastallize. - * @param teraType - (optional) The {@linkcode PokemonType} to terastallize it as. + * @param teraType - The {@linkcode PokemonType} to terastallize into; defaults to the pokemon's primary type. + * @remarks + * This function only mocks the Pokemon's tera-related variables; it does NOT activate any tera-related abilities. */ - public forceTera(pokemon: Pokemon, teraType?: PokemonType): void { + public forceTera(pokemon: Pokemon, teraType: PokemonType = pokemon.getSpeciesForm(true).type1): void { vi.spyOn(pokemon, "isTerastallized", "get").mockReturnValue(true); - teraType ??= pokemon.getSpeciesForm(true).type1; vi.spyOn(pokemon, "teraType", "get").mockReturnValue(teraType); } } diff --git a/test/testUtils/helpers/moveHelper.ts b/test/testUtils/helpers/moveHelper.ts index 878a265ce84..c7dea05b095 100644 --- a/test/testUtils/helpers/moveHelper.ts +++ b/test/testUtils/helpers/moveHelper.ts @@ -154,7 +154,7 @@ export class MoveHelper extends GameManagerHelper { * Changes a pokemon's moveset to the given move(s). * Used when the normal moveset override can't be used (such as when it's necessary to check or update properties of the moveset). * @param pokemon - The {@linkcode Pokemon} being modified - * @param moveset - The {@linkcode MoveId} (single or array) to change the Pokemon's moveset to + * @param moveset - The {@linkcode MoveId} (single or array) to change the Pokemon's moveset to. */ public changeMoveset(pokemon: Pokemon, moveset: MoveId | MoveId[]): void { if (!Array.isArray(moveset)) { @@ -169,10 +169,14 @@ export class MoveHelper extends GameManagerHelper { } /** - * Forces the next enemy selecting a move to use the given move in its moveset + * Forces the next enemy selecting a move to use the given move _in its moveset_ * against the given target (if applicable). - * @param moveId The {@linkcode MoveId | move} the enemy will use - * @param target (Optional) the {@linkcode BattlerIndex | target} which the enemy will use the given move against + * @param moveId - The {@linkcode Move | move ID} the enemy will be forced to use. + * @param target - The {@linkcode BattlerIndex | target} against which the enemy will use the given move; + * defaults to normal target selection priorities if omitted or not single-target. + * @remarks + * If you do not need to check for changes in the enemy's moveset as part of the test, it may be + * best to use {@linkcode forceEnemyMove} instead. */ public async selectEnemyMove(moveId: MoveId, target?: BattlerIndex) { // Wait for the next EnemyCommandPhase to start @@ -200,14 +204,18 @@ export class MoveHelper extends GameManagerHelper { } /** - * Forces the next enemy selecting a move to use the given move against the given target (if applicable). + * Modify the moveset of the next enemy selecting a move to contain only the given move, and then + * selects it to be used during the next {@linkcode EnemyCommandPhase} against the given targets. * - * Warning: Overwrites the pokemon's moveset and disables the moveset override! + * Does not require the given move to be in the enemy's moveset beforehand, + * but **overwrites the pokemon's moveset** and **disables any prior moveset overrides**! * - * Note: If you need to check for changes in the enemy's moveset as part of the test, it may be + * @param moveId - The {@linkcode Move | move ID} the enemy will be forced to use. + * @param target - The {@linkcode BattlerIndex | target} against which the enemy will use the given move; + * defaults to normal target selection priorities if omitted or not single-target. + * @remarks + * If you need to check for changes in the enemy's moveset as part of the test, it may be * best to use {@linkcode changeMoveset} and {@linkcode selectEnemyMove} instead. - * @param moveId The {@linkcode MoveId | move} the enemy will use - * @param target (Optional) the {@linkcode BattlerIndex | target} which the enemy will use the given move against */ public async forceEnemyMove(moveId: MoveId, target?: BattlerIndex) { // Wait for the next EnemyCommandPhase to start From 35a09af4750229c7fb588affd0c59cf40c6db4f7 Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Sat, 7 Jun 2025 22:29:10 -0400 Subject: [PATCH 65/71] [Utils] Create utility function `randSeedFloat` (#5767) --- src/battle.ts | 3 ++- src/data/abilities/ability.ts | 6 +++--- src/data/moves/move.ts | 6 +++--- src/data/pokemon-species.ts | 16 ++++++++++++---- src/field/pokemon.ts | 3 ++- src/modifier/modifier.ts | 28 ++++++++++++++-------------- src/utils/common.ts | 31 +++++++++++++++++++++++-------- 7 files changed, 59 insertions(+), 34 deletions(-) diff --git a/src/battle.ts b/src/battle.ts index dbfed57ae41..2ebfb634751 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -8,6 +8,7 @@ import { shiftCharCodes, randSeedItem, randInt, + randSeedFloat, } from "#app/utils/common"; import Trainer, { TrainerVariant } from "./field/trainer"; import type { GameMode } from "./game-mode"; @@ -150,7 +151,7 @@ export default class Battle { randSeedGaussForLevel(value: number): number { let rand = 0; for (let i = value; i > 0; i--) { - rand += Phaser.Math.RND.realInRange(0, 1); + rand += randSeedFloat(); } return rand / value; } diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index e680a12f9fe..8c95364237b 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -1,5 +1,5 @@ import { HitResult, MoveResult, PlayerPokemon } from "#app/field/pokemon"; -import { BooleanHolder, NumberHolder, toDmgValue, isNullOrUndefined, randSeedItem, randSeedInt, type Constructor } from "#app/utils/common"; +import { BooleanHolder, NumberHolder, toDmgValue, isNullOrUndefined, randSeedItem, randSeedInt, type Constructor, randSeedFloat } from "#app/utils/common"; import { getPokemonNameWithAffix } from "#app/messages"; import { BattlerTagLapseType, GroundedTag } from "#app/data/battler-tags"; import { getNonVolatileStatusEffects, getStatusEffectDescriptor, getStatusEffectHealText } from "#app/data/status-effect"; @@ -4092,8 +4092,8 @@ export class PostTurnRestoreBerryAbAttr extends PostTurnAbAttr { } // Clamp procChance to [0, 1]. Skip if didn't proc (less than pass) - const pass = Phaser.Math.RND.realInRange(0, 1); - return Phaser.Math.Clamp(this.procChance(pokemon), 0, 1) >= pass; + const pass = randSeedFloat(); + return this.procChance(pokemon) >= pass; } override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index 94d0ae50523..d44ecbed4cf 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -29,7 +29,7 @@ import { } from "../status-effect"; import { getTypeDamageMultiplier } from "../type"; import { PokemonType } from "#enums/pokemon-type"; -import { BooleanHolder, NumberHolder, isNullOrUndefined, toDmgValue, randSeedItem, randSeedInt, getEnumValues, toReadableString, type Constructor } from "#app/utils/common"; +import { BooleanHolder, NumberHolder, isNullOrUndefined, toDmgValue, randSeedItem, randSeedInt, getEnumValues, toReadableString, type Constructor, randSeedFloat } from "#app/utils/common"; import { WeatherType } from "#enums/weather-type"; import type { ArenaTrapTag } from "../arena-tag"; import { ArenaTagSide, WeakenMoveTypeTag } from "../arena-tag"; @@ -2547,8 +2547,8 @@ export class StealHeldItemChanceAttr extends MoveEffectAttr { } apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - const rand = Phaser.Math.RND.realInRange(0, 1); - if (rand >= this.chance) { + const rand = randSeedFloat(); + if (rand > this.chance) { return false; } diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index c5d798b5841..36a8bbb0520 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -8,7 +8,14 @@ import type { AnySound } from "#app/battle-scene"; import { globalScene } from "#app/global-scene"; import type { GameMode } from "#app/game-mode"; import { DexAttr, type StarterMoveset } from "#app/system/game-data"; -import { isNullOrUndefined, capitalizeString, randSeedInt, randSeedGauss, randSeedItem } from "#app/utils/common"; +import { + isNullOrUndefined, + capitalizeString, + randSeedInt, + randSeedGauss, + randSeedItem, + randSeedFloat, +} from "#app/utils/common"; import { uncatchableSpecies } from "#app/data/balance/biomes"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { GrowthRate } from "#app/data/exp"; @@ -750,7 +757,7 @@ export abstract class PokemonSpeciesForm { let paletteColors: Map = new Map(); const originalRandom = Math.random; - Math.random = Phaser.Math.RND.frac; + Math.random = randSeedFloat; globalScene.executeWithSeedOffset( () => { @@ -773,6 +780,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali readonly mythical: boolean; readonly species: string; readonly growthRate: GrowthRate; + /** The chance (as a decimal) for this Species to be male, or `null` for genderless species */ readonly malePercent: number | null; readonly genderDiffs: boolean; readonly canChangeForm: boolean; @@ -889,7 +897,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali return Gender.GENDERLESS; } - if (Phaser.Math.RND.realInRange(0, 1) <= this.malePercent) { + if (randSeedFloat() <= this.malePercent) { return Gender.MALE; } return Gender.FEMALE; @@ -1138,7 +1146,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali } } - if (noEvolutionChance === 1 || Phaser.Math.RND.realInRange(0, 1) < noEvolutionChance) { + if (noEvolutionChance === 1 || randSeedFloat() <= noEvolutionChance) { return this.speciesId; } diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index a6d41074700..5b38419e708 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -65,6 +65,7 @@ import { rgbToHsv, deltaRgb, isBetween, + randSeedFloat, type nil, type Constructor, randSeedIntRange, @@ -5225,7 +5226,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { let fusionPaletteColors: Map; const originalRandom = Math.random; - Math.random = () => Phaser.Math.RND.realInRange(0, 1); + Math.random = () => randSeedFloat(); globalScene.executeWithSeedOffset( () => { diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index e1517b3bcde..81d9bf7189c 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -15,7 +15,7 @@ import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; import type { VoucherType } from "#app/system/voucher"; import { Command } from "#app/ui/command-ui-handler"; import { addTextObject, TextStyle } from "#app/ui/text"; -import { BooleanHolder, hslToHex, isNullOrUndefined, NumberHolder, toDmgValue } from "#app/utils/common"; +import { BooleanHolder, hslToHex, isNullOrUndefined, NumberHolder, randSeedFloat, toDmgValue } from "#app/utils/common"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; import type { MoveId } from "#enums/move-id"; @@ -3351,7 +3351,7 @@ export class ContactHeldItemTransferChanceModifier extends HeldItemTransferModif } getTransferredItemCount(): number { - return Phaser.Math.RND.realInRange(0, 1) < this.chance * this.getStackCount() ? 1 : 0; + return randSeedFloat() <= this.chance * this.getStackCount() ? 1 : 0; } getTransferMessage(pokemon: Pokemon, targetPokemon: Pokemon, item: ModifierType): string { @@ -3629,7 +3629,7 @@ export class EnemyAttackStatusEffectChanceModifier extends EnemyPersistentModifi * @returns `true` if the {@linkcode Pokemon} was affected */ override apply(enemyPokemon: Pokemon): boolean { - if (Phaser.Math.RND.realInRange(0, 1) < this.chance * this.getStackCount()) { + if (randSeedFloat() <= this.chance * this.getStackCount()) { return enemyPokemon.trySetStatus(this.effect, true); } @@ -3664,21 +3664,21 @@ export class EnemyStatusEffectHealChanceModifier extends EnemyPersistentModifier } /** - * Applies {@linkcode EnemyStatusEffectHealChanceModifier} - * @param enemyPokemon The {@linkcode Pokemon} to heal + * Applies {@linkcode EnemyStatusEffectHealChanceModifier} to randomly heal status. + * @param enemyPokemon - The {@linkcode Pokemon} to heal * @returns `true` if the {@linkcode Pokemon} was healed */ override apply(enemyPokemon: Pokemon): boolean { - if (enemyPokemon.status && Phaser.Math.RND.realInRange(0, 1) < this.chance * this.getStackCount()) { - globalScene.phaseManager.queueMessage( - getStatusEffectHealText(enemyPokemon.status.effect, getPokemonNameWithAffix(enemyPokemon)), - ); - enemyPokemon.resetStatus(); - enemyPokemon.updateInfo(); - return true; + if (!enemyPokemon.status || randSeedFloat() > this.chance * this.getStackCount()) { + return false; } - return false; + globalScene.phaseManager.queueMessage( + getStatusEffectHealText(enemyPokemon.status.effect, getPokemonNameWithAffix(enemyPokemon)), + ); + enemyPokemon.resetStatus(); + enemyPokemon.updateInfo(); + return true; } getMaxStackCount(): number { @@ -3757,7 +3757,7 @@ export class EnemyFusionChanceModifier extends EnemyPersistentModifier { * @returns `true` if the {@linkcode EnemyPokemon} is a fusion */ override apply(isFusion: BooleanHolder): boolean { - if (Phaser.Math.RND.realInRange(0, 1) >= this.chance * this.getStackCount()) { + if (randSeedFloat() > this.chance * this.getStackCount()) { return false; } diff --git a/src/utils/common.ts b/src/utils/common.ts index 29923d7ddd4..56fa3b5c698 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -58,8 +58,8 @@ export function randSeedGauss(stdev: number, mean = 0): number { if (!stdev) { return 0; } - const u = 1 - Phaser.Math.RND.realInRange(0, 1); - const v = Phaser.Math.RND.realInRange(0, 1); + const u = 1 - randSeedFloat(); + const v = randSeedFloat(); const z = Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v); return z * stdev + mean; } @@ -88,9 +88,9 @@ export function randInt(range: number, min = 0): number { } /** - * Generates a random number using the global seed, or the current battle's seed if called via `Battle.randSeedInt` - * @param range How large of a range of random numbers to choose from. If {@linkcode range} <= 1, returns {@linkcode min} - * @param min The minimum integer to pick, default `0` + * Generate a random integer using the global seed, or the current battle's seed if called via `Battle.randSeedInt` + * @param range - How large of a range of random numbers to choose from. If {@linkcode range} <= 1, returns {@linkcode min} + * @param min - The minimum integer to pick, default `0` * @returns A random integer between {@linkcode min} and ({@linkcode min} + {@linkcode range} - 1) */ export function randSeedInt(range: number, min = 0): number { @@ -119,6 +119,14 @@ export function randIntRange(min: number, max: number): number { return randInt(max - min, min); } +/** + * Generate and return a random real number between `0` and `1` using the global seed. + * @returns A random floating-point number between `0` and `1` + */ +export function randSeedFloat(): number { + return Phaser.Math.RND.frac(); +} + export function randItem(items: T[]): T { return items.length === 1 ? items[0] : items[randInt(items.length)]; } @@ -517,12 +525,19 @@ export function capitalizeString(str: string, sep: string, lowerFirstChar = true return null; } -export function isNullOrUndefined(object: any): object is null | undefined { - return object === null || object === undefined; +/** + * Report whether a given value is nullish (`null`/`undefined`). + * @param val - The value whose nullishness is being checked + * @returns `true` if `val` is either `null` or `undefined` + */ +export function isNullOrUndefined(val: any): val is null | undefined { + return val === null || val === undefined; } /** - * Capitalizes the first letter of a string + * Capitalize the first letter of a string. + * @param str - The string whose first letter is being capitalized + * @return The original string with its first letter capitalized */ export function capitalizeFirstLetter(str: string) { return str.charAt(0).toUpperCase() + str.slice(1); From 75beec12a892d28b51d8cbd859a28fc793617736 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sat, 7 Jun 2025 21:43:30 -0700 Subject: [PATCH 66/71] [Dev] Enable Biome checking of `ability.ts` (#5948) --- biome.jsonc | 1 - src/data/abilities/ability.ts | 4084 +++++++++++++++++++++++---------- 2 files changed, 2915 insertions(+), 1170 deletions(-) diff --git a/biome.jsonc b/biome.jsonc index 141c44dc87d..82ce7c308dc 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -31,7 +31,6 @@ "src/overrides.ts", // TODO: these files are too big and complex, ignore them until their respective refactors "src/data/moves/move.ts", - "src/data/abilities/ability.ts", // this file is just too big: "src/data/balance/tms.ts" diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index 8c95364237b..9269f84d269 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -1,8 +1,21 @@ -import { HitResult, MoveResult, PlayerPokemon } from "#app/field/pokemon"; -import { BooleanHolder, NumberHolder, toDmgValue, isNullOrUndefined, randSeedItem, randSeedInt, type Constructor, randSeedFloat } from "#app/utils/common"; +import { HitResult, MoveResult } from "#app/field/pokemon"; +import { + BooleanHolder, + NumberHolder, + toDmgValue, + isNullOrUndefined, + randSeedItem, + randSeedInt, + type Constructor, + randSeedFloat, +} from "#app/utils/common"; import { getPokemonNameWithAffix } from "#app/messages"; import { BattlerTagLapseType, GroundedTag } from "#app/data/battler-tags"; -import { getNonVolatileStatusEffects, getStatusEffectDescriptor, getStatusEffectHealText } from "#app/data/status-effect"; +import { + getNonVolatileStatusEffects, + getStatusEffectDescriptor, + getStatusEffectHealText, +} from "#app/data/status-effect"; import { Gender } from "#app/data/gender"; import { AttackMove, @@ -24,7 +37,11 @@ import { allMoves } from "../data-lists"; import { ArenaTagSide } from "#app/data/arena-tag"; import { BerryModifier, HitHealModifier, PokemonHeldItemModifier } from "#app/modifier/modifier"; import { TerrainType } from "#app/data/terrain"; -import { SpeciesFormChangeAbilityTrigger, SpeciesFormChangeRevertWeatherFormTrigger, SpeciesFormChangeWeatherTrigger } from "#app/data/pokemon-forms"; +import { + SpeciesFormChangeAbilityTrigger, + SpeciesFormChangeRevertWeatherFormTrigger, + SpeciesFormChangeWeatherTrigger, +} from "#app/data/pokemon-forms"; import i18next from "i18next"; import { Command } from "#app/ui/command-ui-handler"; import { BerryModifierType } from "#app/modifier/modifier-type"; @@ -65,13 +82,19 @@ import { CommonAnim } from "../battle-anims"; import { getBerryEffectFunc } from "../berry"; import { BerryUsedEvent } from "#app/events/battle-scene"; - // Type imports import type { EnemyPokemon, PokemonMove } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import type { Weather } from "#app/data/weather"; import type { BattlerTag } from "#app/data/battler-tags"; -import type { AbAttrCondition, PokemonDefendCondition, PokemonStatStageChangeCondition, PokemonAttackCondition, AbAttrApplyFunc, AbAttrSuccessFunc } from "#app/@types/ability-types"; +import type { + AbAttrCondition, + PokemonDefendCondition, + PokemonStatStageChangeCondition, + PokemonAttackCondition, + AbAttrApplyFunc, + AbAttrSuccessFunc, +} from "#app/@types/ability-types"; import type { BattlerIndex } from "#app/battle"; import type Move from "#app/data/moves/move"; import type { ArenaTrapTag, SuppressAbilitiesTag } from "#app/data/arena-tag"; @@ -83,12 +106,21 @@ export class BlockRecoilDamageAttr extends AbAttr { super(false); } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } getTriggerMessage(pokemon: Pokemon, abilityName: string, ..._args: any[]) { - return i18next.t("abilityTriggers:blockRecoilDamage", { pokemonName: getPokemonNameWithAffix(pokemon), abilityName: abilityName }); + return i18next.t("abilityTriggers:blockRecoilDamage", { + pokemonName: getPokemonNameWithAffix(pokemon), + abilityName: abilityName, + }); } } @@ -106,7 +138,13 @@ export class DoubleBattleChanceAbAttr extends AbAttr { * Increases the chance of a double battle occurring * @param args [0] {@linkcode NumberHolder} for double battle chance */ - override apply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { const doubleBattleChance = args[0] as NumberHolder; // This is divided because the chance is generated as a number from 0 to doubleBattleChance.value using Utils.randSeedInt // A double battle will initiate if the generated number is 0 @@ -115,28 +153,28 @@ export class DoubleBattleChanceAbAttr extends AbAttr { } export class PostBattleInitAbAttr extends AbAttr { - canApplyPostBattleInit(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + canApplyPostBattleInit(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return true; } - applyPostBattleInit(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void {} + applyPostBattleInit(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void {} } export class PostBattleInitFormChangeAbAttr extends PostBattleInitAbAttr { private formFunc: (p: Pokemon) => number; - constructor(formFunc: ((p: Pokemon) => number)) { + constructor(formFunc: (p: Pokemon) => number) { super(false); this.formFunc = formFunc; } - override canApplyPostBattleInit(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostBattleInit(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): boolean { const formIndex = this.formFunc(pokemon); return formIndex !== pokemon.formIndex && !simulated; } - override applyPostBattleInit(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostBattleInit(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void { globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger, false); } } @@ -152,7 +190,13 @@ export class PostTeraFormChangeStatChangeAbAttr extends AbAttr { this.stages = stages; } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder | null, args: any[]): void { + override apply( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _cancelled: BooleanHolder | null, + _args: any[], + ): void { const statStageChangePhases: StatStageChangePhase[] = []; if (!simulated) { @@ -180,11 +224,17 @@ export class ClearWeatherAbAttr extends AbAttr { this.weather = weather; } - public override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + public override canApply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return globalScene.arena.canSetWeather(WeatherType.NONE); } - public override apply(pokemon: Pokemon, passive: boolean, simulated:boolean, cancelled: BooleanHolder, args: any[]): void { + public override apply( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _cancelled: BooleanHolder, + _args: any[], + ): void { if (!simulated) { globalScene.arena.trySetWeather(WeatherType.NONE, pokemon); } @@ -206,11 +256,17 @@ export class ClearTerrainAbAttr extends AbAttr { this.terrain = terrain; } - public override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + public override canApply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return globalScene.arena.canSetTerrain(TerrainType.NONE); } - public override apply(pokemon: Pokemon, passive: boolean, simulated:boolean, cancelled: BooleanHolder, args: any[]): void { + public override apply( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _cancelled: BooleanHolder, + _args: any[], + ): void { if (!simulated) { globalScene.arena.trySetTerrain(TerrainType.NONE, true, pokemon); } @@ -221,35 +277,56 @@ type PreDefendAbAttrCondition = (pokemon: Pokemon, attacker: Pokemon, move: Move export class PreDefendAbAttr extends AbAttr { canApplyPreDefend( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - attacker: Pokemon, - move: Move | null, - cancelled: BooleanHolder | null, - args: any[]): boolean { + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move | null, + _cancelled: BooleanHolder | null, + _args: any[], + ): boolean { return true; } applyPreDefend( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - attacker: Pokemon, - move: Move | null, - cancelled: BooleanHolder | null, - args: any[], + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move | null, + _cancelled: BooleanHolder | null, + _args: any[], ): void {} } export class PreDefendFullHpEndureAbAttr extends PreDefendAbAttr { - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move | null, cancelled: BooleanHolder | null, args: any[]): boolean { - return pokemon.isFullHp() - && pokemon.getMaxHp() > 1 //Checks if pokemon has wonder_guard (which forces 1hp) - && (args[0] as NumberHolder).value >= pokemon.hp; //Damage >= hp + override canApplyPreDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move | null, + _cancelled: BooleanHolder | null, + args: any[], + ): boolean { + return ( + pokemon.isFullHp() && + // Checks if pokemon has wonder_guard (which forces 1hp) + pokemon.getMaxHp() > 1 && + // Damage >= hp + (args[0] as NumberHolder).value >= pokemon.hp + ); } - override applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _attacker: Pokemon, + _move: Move, + _cancelled: BooleanHolder, + _args: any[], + ): void { if (!simulated) { pokemon.addTag(BattlerTagType.STURDY, 1); } @@ -257,14 +334,20 @@ export class PreDefendFullHpEndureAbAttr extends PreDefendAbAttr { } export class BlockItemTheftAbAttr extends AbAttr { - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } - getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]) { + getTriggerMessage(pokemon: Pokemon, abilityName: string, ..._args: any[]) { return i18next.t("abilityTriggers:blockItemTheft", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - abilityName + abilityName, }); } } @@ -274,11 +357,17 @@ export class StabBoostAbAttr extends AbAttr { super(false); } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, args: any[]): boolean { return (args[0] as NumberHolder).value > 1; } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[0] as NumberHolder).value += 0.5; } } @@ -287,18 +376,34 @@ export class ReceivedMoveDamageMultiplierAbAttr extends PreDefendAbAttr { protected condition: PokemonDefendCondition; private damageMultiplier: number; - constructor(condition: PokemonDefendCondition, damageMultiplier: number, showAbility: boolean = false) { + constructor(condition: PokemonDefendCondition, damageMultiplier: number, showAbility = false) { super(showAbility); this.condition = condition; this.damageMultiplier = damageMultiplier; } - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder | null, args: any[]): boolean { + override canApplyPreDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _cancelled: BooleanHolder | null, + _args: any[], + ): boolean { return this.condition(pokemon, attacker, move); } - override applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[0] as NumberHolder).value = toDmgValue((args[0] as NumberHolder).value * this.damageMultiplier); } } @@ -320,7 +425,15 @@ export class AlliedFieldDamageReductionAbAttr extends PreDefendAbAttr { * @param args * - `[0]` {@linkcode NumberHolder} - The damage being dealt */ - override applyPreDefend(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _attacker: Pokemon, _move: Move, _cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move, + _cancelled: BooleanHolder, + args: any[], + ): void { const damage = args[0] as NumberHolder; damage.value = toDmgValue(damage.value * this.damageMultiplier); } @@ -328,7 +441,7 @@ export class AlliedFieldDamageReductionAbAttr extends PreDefendAbAttr { export class ReceivedTypeDamageMultiplierAbAttr extends ReceivedMoveDamageMultiplierAbAttr { constructor(moveType: PokemonType, damageMultiplier: number) { - super((target, user, move) => user.getMoveType(move) === moveType, damageMultiplier, false); + super((_target, user, move) => user.getMoveType(move) === moveType, damageMultiplier, false); } } @@ -342,6 +455,7 @@ export class TypeImmunityAbAttr extends PreDefendAbAttr { private immuneType: PokemonType | null; private condition: AbAttrCondition | null; + // TODO: `immuneType` shouldn't be able to be `null` constructor(immuneType: PokemonType | null, condition?: AbAttrCondition) { super(true); @@ -349,21 +463,41 @@ export class TypeImmunityAbAttr extends PreDefendAbAttr { this.condition = condition ?? null; } - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder | null, args: any[]): boolean { - return ![ MoveTarget.BOTH_SIDES, MoveTarget.ENEMY_SIDE, MoveTarget.USER_SIDE ].includes(move.moveTarget) && attacker !== pokemon && attacker.getMoveType(move) === this.immuneType; + override canApplyPreDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _cancelled: BooleanHolder | null, + _args: any[], + ): boolean { + return ( + ![MoveTarget.BOTH_SIDES, MoveTarget.ENEMY_SIDE, MoveTarget.USER_SIDE].includes(move.moveTarget) && + attacker !== pokemon && + attacker.getMoveType(move) === this.immuneType + ); } /** * Applies immunity if this ability grants immunity to the type of the given move. - * @param pokemon {@linkcode Pokemon} The defending Pokemon. - * @param passive - Whether the ability is passive. - * @param attacker {@linkcode Pokemon} The attacking Pokemon. - * @param move {@linkcode Move} The attacking move. - * @param cancelled {@linkcode BooleanHolder} - A holder for a boolean value indicating if the move was cancelled. + * @param _pokemon {@linkcode Pokemon} The defending Pokemon. + * @param _passive - Whether the ability is passive. + * @param _attacker {@linkcode Pokemon} The attacking Pokemon. + * @param _move {@linkcode Move} The attacking move. + * @param _cancelled {@linkcode BooleanHolder} - A holder for a boolean value indicating if the move was cancelled. * @param args [0] {@linkcode NumberHolder} gets set to 0 if move is immuned by an ability. * @param args [1] - Whether the move is simulated. */ - override applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[0] as NumberHolder).value = 0; } @@ -377,13 +511,25 @@ export class TypeImmunityAbAttr extends PreDefendAbAttr { } export class AttackTypeImmunityAbAttr extends TypeImmunityAbAttr { + // biome-ignore lint/complexity/noUselessConstructor: Changes the type of `immuneType` constructor(immuneType: PokemonType, condition?: AbAttrCondition) { super(immuneType, condition); } - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder | null, args: any[]): boolean { - return move.category !== MoveCategory.STATUS && !move.hasAttr(NeutralDamageAgainstFlyingTypeMultiplierAttr) - && super.canApplyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); + override canApplyPreDefend( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + cancelled: BooleanHolder | null, + args: any[], + ): boolean { + return ( + move.category !== MoveCategory.STATUS && + !move.hasAttr(NeutralDamageAgainstFlyingTypeMultiplierAttr) && + super.canApplyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args) + ); } /** @@ -391,27 +537,61 @@ export class AttackTypeImmunityAbAttr extends TypeImmunityAbAttr { * Type immunity abilities that do not give additional benefits (HP recovery, stat boosts, etc) are not immune to status moves of the type * Example: Levitate */ - override applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + cancelled: BooleanHolder, + args: any[], + ): void { // this is a hacky way to fix the Levitate/Thousand Arrows interaction, but it works for now... super.applyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); } } export class TypeImmunityHealAbAttr extends TypeImmunityAbAttr { + // biome-ignore lint/complexity/noUselessConstructor: Changes the type of `immuneType` constructor(immuneType: PokemonType) { super(immuneType); } - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder | null, args: any[]): boolean { + override canApplyPreDefend( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + cancelled: BooleanHolder | null, + args: any[], + ): boolean { return super.canApplyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); } - override applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + cancelled: BooleanHolder, + args: any[], + ): void { super.applyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); if (!pokemon.isFullHp() && !simulated) { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() / 4), i18next.t("abilityTriggers:typeImmunityHeal", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }), true)); + globalScene.phaseManager.unshiftPhase( + new PokemonHealPhase( + pokemon.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() / 4), + i18next.t("abilityTriggers:typeImmunityHeal", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + abilityName, + }), + true, + ), + ); cancelled.value = true; // Suppresses "No Effect" message } } @@ -428,15 +608,33 @@ class TypeImmunityStatStageChangeAbAttr extends TypeImmunityAbAttr { this.stages = stages; } - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder | null, args: any[]): boolean { + override canApplyPreDefend( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + cancelled: BooleanHolder | null, + args: any[], + ): boolean { return super.canApplyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); } - override applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + cancelled: BooleanHolder, + args: any[], + ): void { super.applyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); cancelled.value = true; // Suppresses "No Effect" message if (!simulated) { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), true, [this.stat], this.stages), + ); } } } @@ -452,11 +650,27 @@ class TypeImmunityAddBattlerTagAbAttr extends TypeImmunityAbAttr { this.turnCount = turnCount; } - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder | null, args: any[]): boolean { + override canApplyPreDefend( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + cancelled: BooleanHolder | null, + args: any[], + ): boolean { return super.canApplyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); } - override applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + cancelled: BooleanHolder, + args: any[], + ): void { super.applyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); cancelled.value = true; // Suppresses "No Effect" message if (!simulated) { @@ -470,22 +684,39 @@ export class NonSuperEffectiveImmunityAbAttr extends TypeImmunityAbAttr { super(null, condition); } - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder | null, args: any[]): boolean { - const modifierValue = args.length > 0 - ? (args[0] as NumberHolder).value - : pokemon.getAttackTypeEffectiveness(attacker.getMoveType(move), attacker, undefined, undefined, move); + override canApplyPreDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _cancelled: BooleanHolder | null, + args: any[], + ): boolean { + const modifierValue = + args.length > 0 + ? (args[0] as NumberHolder).value + : pokemon.getAttackTypeEffectiveness(attacker.getMoveType(move), attacker, undefined, undefined, move); return move instanceof AttackMove && modifierValue < 2; } - override applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move, + cancelled: BooleanHolder, + args: any[], + ): void { cancelled.value = true; // Suppresses "No Effect" message (args[0] as NumberHolder).value = 0; } - getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { + getTriggerMessage(pokemon: Pokemon, abilityName: string, ..._args: any[]): string { return i18next.t("abilityTriggers:nonSuperEffectiveImmunity", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - abilityName + abilityName, }); } } @@ -496,94 +727,128 @@ export class NonSuperEffectiveImmunityAbAttr extends TypeImmunityAbAttr { * @extends PreDefendAbAttr */ export class FullHpResistTypeAbAttr extends PreDefendAbAttr { - - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move | null, cancelled: BooleanHolder | null, args: any[]): boolean { + override canApplyPreDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + move: Move | null, + _cancelled: BooleanHolder | null, + args: any[], + ): boolean { const typeMultiplier = args[0]; - return (typeMultiplier && typeMultiplier instanceof NumberHolder) && !(move && move.hasAttr(FixedDamageAttr)) && pokemon.isFullHp() && typeMultiplier.value > 0.5; + return ( + typeMultiplier instanceof NumberHolder && + !move?.hasAttr(FixedDamageAttr) && + pokemon.isFullHp() && + typeMultiplier.value > 0.5 + ); } /** * Reduces a type multiplier to 0.5 if the source is at full HP. * @param pokemon {@linkcode Pokemon} the Pokemon with this ability - * @param passive n/a - * @param simulated n/a (this doesn't change game state) - * @param attacker n/a - * @param move {@linkcode Move} the move being used on the source - * @param cancelled n/a + * @param _passive n/a + * @param _simulated n/a (this doesn't change game state) + * @param _attacker n/a + * @param _move {@linkcode Move} the move being used on the source + * @param _cancelled n/a * @param args `[0]` a container for the move's current type effectiveness multiplier */ override applyPreDefend( pokemon: Pokemon, - passive: boolean, - simulated: boolean, - attacker: Pokemon, - move: Move | null, - cancelled: BooleanHolder | null, - args: any[]): void { + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move | null, + _cancelled: BooleanHolder | null, + args: any[], + ): void { const typeMultiplier = args[0]; typeMultiplier.value = 0.5; pokemon.turnData.moveEffectiveness = 0.5; } - getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { + getTriggerMessage(pokemon: Pokemon, _abilityName: string, ..._args: any[]): string { return i18next.t("abilityTriggers:fullHpResistType", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }); } } export class PostDefendAbAttr extends AbAttr { canApplyPostDefend( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - attacker: Pokemon, - move: Move, - hitResult: HitResult | null, - args: any[]): boolean { + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move, + _hitResult: HitResult | null, + _args: any[], + ): boolean { return true; } applyPostDefend( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - attacker: Pokemon, - move: Move, - hitResult: HitResult | null, - args: any[], + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move, + _hitResult: HitResult | null, + _args: any[], ): void {} } export class FieldPriorityMoveImmunityAbAttr extends PreDefendAbAttr { - - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder | null, args: any[]): boolean { - return !(move.moveTarget === MoveTarget.USER || move.moveTarget === MoveTarget.NEAR_ALLY) && move.getPriority(attacker) > 0 && !move.isMultiTarget(); + override canApplyPreDefend( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _cancelled: BooleanHolder | null, + _args: any[], + ): boolean { + return ( + !(move.moveTarget === MoveTarget.USER || move.moveTarget === MoveTarget.NEAR_ALLY) && + move.getPriority(attacker) > 0 && + !move.isMultiTarget() + ); } - override applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } } export class PostStatStageChangeAbAttr extends AbAttr { canApplyPostStatStageChange( - pokemon: Pokemon, - simulated: boolean, - statsChanged: BattleStat[], - stagesChanged: number, - selfTarget: boolean, - args: any[]): boolean { + _pokemon: Pokemon, + _simulated: boolean, + _statsChanged: BattleStat[], + _stagesChanged: number, + _selfTarget: boolean, + _args: any[], + ): boolean { return true; } applyPostStatStageChange( - pokemon: Pokemon, - simulated: boolean, - statsChanged: BattleStat[], - stagesChanged: number, - selfTarget: boolean, - args: any[], + _pokemon: Pokemon, + _simulated: boolean, + _statsChanged: BattleStat[], + _stagesChanged: number, + _selfTarget: boolean, + _args: any[], ): void {} } @@ -596,15 +861,31 @@ export class MoveImmunityAbAttr extends PreDefendAbAttr { this.immuneCondition = immuneCondition; } - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder | null, args: any[]): boolean { + override canApplyPreDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _cancelled: BooleanHolder | null, + _args: any[], + ): boolean { return this.immuneCondition(pokemon, attacker, move); } - override applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } - getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { + getTriggerMessage(pokemon: Pokemon, _abilityName: string, ..._args: any[]): string { return i18next.t("abilityTriggers:moveImmunity", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }); } } @@ -616,17 +897,32 @@ export class MoveImmunityAbAttr extends PreDefendAbAttr { * @extends PreDefendAbAttr */ export class WonderSkinAbAttr extends PreDefendAbAttr { - constructor() { super(false); } - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder | null, args: any[]): boolean { + override canApplyPreDefend( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + move: Move, + _cancelled: BooleanHolder | null, + args: any[], + ): boolean { const moveAccuracy = args[0] as NumberHolder; return move.category === MoveCategory.STATUS && moveAccuracy.value >= 50; } - override applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move, + _cancelled: BooleanHolder, + args: any[], + ): void { const moveAccuracy = args[0] as NumberHolder; moveAccuracy.value = 50; } @@ -642,13 +938,31 @@ export class MoveImmunityStatStageChangeAbAttr extends MoveImmunityAbAttr { this.stages = stages; } - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder | null, args: any[]): boolean { + override canApplyPreDefend( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + cancelled: BooleanHolder | null, + args: any[], + ): boolean { return !simulated && super.canApplyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); } - override applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + cancelled: BooleanHolder, + args: any[], + ): void { super.applyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), true, [this.stat], this.stages), + ); } } /** @@ -657,8 +971,15 @@ export class MoveImmunityStatStageChangeAbAttr extends MoveImmunityAbAttr { * @see {@linkcode applyPostDefend} */ export class ReverseDrainAbAttr extends PostDefendAbAttr { - - override canApplyPostDefend(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _attacker: Pokemon, move: Move, _hitResult: HitResult | null, args: any[]): boolean { + override canApplyPostDefend( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + move: Move, + _hitResult: HitResult | null, + _args: any[], + ): boolean { return move.hasAttr(HitHealAttr); } @@ -666,16 +987,26 @@ export class ReverseDrainAbAttr extends PostDefendAbAttr { * Determines if a damage and draining move was used to check if this ability should stop the healing. * Examples include: Absorb, Draining Kiss, Bitter Blade, etc. * Also displays a message to show this ability was activated. - * @param pokemon {@linkcode Pokemon} with this ability + * @param _pokemon {@linkcode Pokemon} with this ability * @param _passive N/A * @param attacker {@linkcode Pokemon} that is attacking this Pokemon - * @param move {@linkcode PokemonMove} that is being used + * @param _move {@linkcode PokemonMove} that is being used * @param _hitResult N/A * @param _args N/A */ - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { + override applyPostDefend( + _pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!simulated) { - globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:reverseDrain", { pokemonNameWithAffix: getPokemonNameWithAffix(attacker) })); + globalScene.phaseManager.queueMessage( + i18next.t("abilityTriggers:reverseDrain", { pokemonNameWithAffix: getPokemonNameWithAffix(attacker) }), + ); } } } @@ -687,7 +1018,13 @@ export class PostDefendStatStageChangeAbAttr extends PostDefendAbAttr { private selfTarget: boolean; private allOthers: boolean; - constructor(condition: PokemonDefendCondition, stat: BattleStat, stages: number, selfTarget = true, allOthers = false) { + constructor( + condition: PokemonDefendCondition, + stat: BattleStat, + stages: number, + selfTarget = true, + allOthers = false, + ) { super(true); this.condition = condition; @@ -697,23 +1034,48 @@ export class PostDefendStatStageChangeAbAttr extends PostDefendAbAttr { this.allOthers = allOthers; } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult | null, + _args: any[], + ): boolean { return this.condition(pokemon, attacker, move); } - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { + override applyPostDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (simulated) { return; } if (this.allOthers) { const ally = pokemon.getAlly(); - const otherPokemon = !isNullOrUndefined(ally) ? pokemon.getOpponents().concat([ ally ]) : pokemon.getOpponents(); + const otherPokemon = !isNullOrUndefined(ally) ? pokemon.getOpponents().concat([ally]) : pokemon.getOpponents(); for (const other of otherPokemon) { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase((other).getBattlerIndex(), false, [ this.stat ], this.stages)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(other.getBattlerIndex(), false, [this.stat], this.stages), + ); } } else { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase((this.selfTarget ? pokemon : attacker).getBattlerIndex(), this.selfTarget, [ this.stat ], this.stages)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase( + (this.selfTarget ? pokemon : attacker).getBattlerIndex(), + this.selfTarget, + [this.stat], + this.stages, + ), + ); } } } @@ -725,7 +1087,13 @@ export class PostDefendHpGatedStatStageChangeAbAttr extends PostDefendAbAttr { private stages: number; private selfTarget: boolean; - constructor(condition: PokemonDefendCondition, hpGate: number, stats: BattleStat[], stages: number, selfTarget = true) { + constructor( + condition: PokemonDefendCondition, + hpGate: number, + stats: BattleStat[], + stages: number, + selfTarget = true, + ) { super(true); this.condition = condition; @@ -735,16 +1103,41 @@ export class PostDefendHpGatedStatStageChangeAbAttr extends PostDefendAbAttr { this.selfTarget = selfTarget; } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult | null, + _args: any[], + ): boolean { const hpGateFlat: number = Math.ceil(pokemon.getMaxHp() * this.hpGate); const lastAttackReceived = pokemon.turnData.attacksReceived[pokemon.turnData.attacksReceived.length - 1]; const damageReceived = lastAttackReceived?.damage || 0; - return this.condition(pokemon, attacker, move) && (pokemon.hp <= hpGateFlat && (pokemon.hp + damageReceived) > hpGateFlat); + return ( + this.condition(pokemon, attacker, move) && pokemon.hp <= hpGateFlat && pokemon.hp + damageReceived > hpGateFlat + ); } - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { + override applyPostDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!simulated) { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase((this.selfTarget ? pokemon : attacker).getBattlerIndex(), true, this.stats, this.stages)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase( + (this.selfTarget ? pokemon : attacker).getBattlerIndex(), + true, + this.stats, + this.stages, + ), + ); } } } @@ -760,15 +1153,38 @@ export class PostDefendApplyArenaTrapTagAbAttr extends PostDefendAbAttr { this.tagType = tagType; } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult | null, + _args: any[], + ): boolean { const tag = globalScene.arena.getTag(this.tagType) as ArenaTrapTag; - return (this.condition(pokemon, attacker, move)) - && (!globalScene.arena.getTag(this.tagType) || tag.layers < tag.maxLayers); + return ( + this.condition(pokemon, attacker, move) && (!globalScene.arena.getTag(this.tagType) || tag.layers < tag.maxLayers) + ); } - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { + override applyPostDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!simulated) { - globalScene.arena.addTag(this.tagType, 0, undefined, pokemon.id, pokemon.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER); + globalScene.arena.addTag( + this.tagType, + 0, + undefined, + pokemon.id, + pokemon.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER, + ); } } } @@ -783,14 +1199,35 @@ export class PostDefendApplyBattlerTagAbAttr extends PostDefendAbAttr { this.tagType = tagType; } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult | null, + _args: any[], + ): boolean { return this.condition(pokemon, attacker, move); } - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { + override applyPostDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _attacker: Pokemon, + move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!pokemon.getTag(this.tagType) && !simulated) { pokemon.addTag(this.tagType, undefined, undefined, pokemon.id); - globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:windPowerCharged", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: move.name })); + globalScene.phaseManager.queueMessage( + i18next.t("abilityTriggers:windPowerCharged", { + pokemonName: getPokemonNameWithAffix(pokemon), + moveName: move.name, + }), + ); } } } @@ -798,22 +1235,38 @@ export class PostDefendApplyBattlerTagAbAttr extends PostDefendAbAttr { export class PostDefendTypeChangeAbAttr extends PostDefendAbAttr { private type: PokemonType; - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, args: any[]): boolean { + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + hitResult: HitResult, + _args: any[], + ): boolean { this.type = attacker.getMoveType(move); const pokemonTypes = pokemon.getTypes(true); return hitResult < HitResult.NO_EFFECT && (simulated || pokemonTypes.length !== 1 || pokemonTypes[0] !== this.type); } - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, _args: any[]): void { + override applyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult, + _args: any[], + ): void { const type = attacker.getMoveType(move); - pokemon.summonData.types = [ type ]; + pokemon.summonData.types = [type]; } override getTriggerMessage(pokemon: Pokemon, abilityName: string, ..._args: any[]): string { return i18next.t("abilityTriggers:postDefendTypeChange", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName, - typeName: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) + typeName: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`), }); } } @@ -827,11 +1280,27 @@ export class PostDefendTerrainChangeAbAttr extends PostDefendAbAttr { this.terrainType = terrainType; } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, args: any[]): boolean { + override canApplyPostDefend( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move, + hitResult: HitResult, + _args: any[], + ): boolean { return hitResult < HitResult.NO_EFFECT && globalScene.arena.canSetTerrain(this.terrainType); } - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, _args: any[]): void { + override applyPostDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!simulated) { globalScene.arena.trySetTerrain(this.terrainType, false, pokemon); } @@ -849,15 +1318,36 @@ export class PostDefendContactApplyStatusEffectAbAttr extends PostDefendAbAttr { this.effects = effects; } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { - const effect = this.effects.length === 1 ? this.effects[0] : this.effects[pokemon.randBattleSeedInt(this.effects.length)]; - return move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon}) && !attacker.status - && (this.chance === -1 || pokemon.randBattleSeedInt(100) < this.chance) - && attacker.canSetStatus(effect, true, false, pokemon); + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult | null, + _args: any[], + ): boolean { + const effect = + this.effects.length === 1 ? this.effects[0] : this.effects[pokemon.randBattleSeedInt(this.effects.length)]; + return ( + move.doesFlagEffectApply({ flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon }) && + !attacker.status && + (this.chance === -1 || pokemon.randBattleSeedInt(100) < this.chance) && + attacker.canSetStatus(effect, true, false, pokemon) + ); } - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { - const effect = this.effects.length === 1 ? this.effects[0] : this.effects[pokemon.randBattleSeedInt(this.effects.length)]; + override applyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { + const effect = + this.effects.length === 1 ? this.effects[0] : this.effects[pokemon.randBattleSeedInt(this.effects.length)]; attacker.trySetStatus(effect, true, pokemon); } } @@ -867,12 +1357,30 @@ export class EffectSporeAbAttr extends PostDefendContactApplyStatusEffectAbAttr super(10, StatusEffect.POISON, StatusEffect.PARALYSIS, StatusEffect.SLEEP); } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { - return !(attacker.hasAbility(AbilityId.OVERCOAT) || attacker.isOfType(PokemonType.GRASS)) - && super.canApplyPostDefend(pokemon, passive, simulated, attacker, move, hitResult, args); + override canApplyPostDefend( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + hitResult: HitResult | null, + args: any[], + ): boolean { + return ( + !(attacker.hasAbility(AbilityId.OVERCOAT) || attacker.isOfType(PokemonType.GRASS)) && + super.canApplyPostDefend(pokemon, passive, simulated, attacker, move, hitResult, args) + ); } - override applyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, args: any[]): void { + override applyPostDefend( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + hitResult: HitResult, + args: any[], + ): void { super.applyPostDefend(pokemon, passive, simulated, attacker, move, hitResult, args); } } @@ -890,12 +1398,31 @@ export class PostDefendContactApplyTagChanceAbAttr extends PostDefendAbAttr { this.turnCount = turnCount; } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { - return move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon}) && pokemon.randBattleSeedInt(100) < this.chance - && attacker.canAddTag(this.tagType); + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult | null, + _args: any[], + ): boolean { + return ( + move.doesFlagEffectApply({ flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon }) && + pokemon.randBattleSeedInt(100) < this.chance && + attacker.canAddTag(this.tagType) + ); } - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { + override applyPostDefend( + _pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!simulated) { attacker.addTag(this.tagType, this.turnCount, move.id, attacker.id); } @@ -913,14 +1440,26 @@ export class PostDefendCritStatStageChangeAbAttr extends PostDefendAbAttr { this.stages = stages; } - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { + override applyPostDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!simulated) { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), true, [this.stat], this.stages), + ); } } override getCondition(): AbAttrCondition { - return (pokemon: Pokemon) => pokemon.turnData.attacksReceived.length !== 0 && pokemon.turnData.attacksReceived[pokemon.turnData.attacksReceived.length - 1].critical; + return (pokemon: Pokemon) => + pokemon.turnData.attacksReceived.length !== 0 && + pokemon.turnData.attacksReceived[pokemon.turnData.attacksReceived.length - 1].critical; } } @@ -933,12 +1472,31 @@ export class PostDefendContactDamageAbAttr extends PostDefendAbAttr { this.damageRatio = damageRatio; } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { - return !simulated && move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon}) - && !attacker.hasAbilityWithAttr(BlockNonDirectDamageAbAttr); + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult | null, + _args: any[], + ): boolean { + return ( + !simulated && + move.doesFlagEffectApply({ flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon }) && + !attacker.hasAbilityWithAttr(BlockNonDirectDamageAbAttr) + ); } - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { + override applyPostDefend( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { attacker.damageAndUpdate(toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio)), { result: HitResult.INDIRECT }); attacker.turnData.damageTaken += toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio)); } @@ -946,7 +1504,7 @@ export class PostDefendContactDamageAbAttr extends PostDefendAbAttr { override getTriggerMessage(pokemon: Pokemon, abilityName: string, ..._args: any[]): string { return i18next.t("abilityTriggers:postDefendContactDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - abilityName + abilityName, }); } } @@ -966,11 +1524,30 @@ export class PostDefendPerishSongAbAttr extends PostDefendAbAttr { this.turns = turns; } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { - return move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon}) && !attacker.getTag(BattlerTagType.PERISH_SONG); + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult | null, + _args: any[], + ): boolean { + return ( + move.doesFlagEffectApply({ flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon }) && + !attacker.getTag(BattlerTagType.PERISH_SONG) + ); } - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { + override applyPostDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!simulated) { attacker.addTag(BattlerTagType.PERISH_SONG, this.turns); pokemon.addTag(BattlerTagType.PERISH_SONG, this.turns); @@ -978,7 +1555,10 @@ export class PostDefendPerishSongAbAttr extends PostDefendAbAttr { } override getTriggerMessage(pokemon: Pokemon, abilityName: string, ..._args: any[]): string { - return i18next.t("abilityTriggers:perishBody", { pokemonName: getPokemonNameWithAffix(pokemon), abilityName: abilityName }); + return i18next.t("abilityTriggers:perishBody", { + pokemonName: getPokemonNameWithAffix(pokemon), + abilityName: abilityName, + }); } } @@ -993,12 +1573,31 @@ export class PostDefendWeatherChangeAbAttr extends PostDefendAbAttr { this.condition = condition; } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { - return (!(this.condition && !this.condition(pokemon, attacker, move)) - && !globalScene.arena.weather?.isImmutable() && globalScene.arena.canSetWeather(this.weatherType)); + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult | null, + _args: any[], + ): boolean { + return ( + !(this.condition && !this.condition(pokemon, attacker, move)) && + !globalScene.arena.weather?.isImmutable() && + globalScene.arena.canSetWeather(this.weatherType) + ); } - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { + override applyPostDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!simulated) { globalScene.arena.trySetWeather(this.weatherType, pokemon); } @@ -1006,16 +1605,30 @@ export class PostDefendWeatherChangeAbAttr extends PostDefendAbAttr { } export class PostDefendAbilitySwapAbAttr extends PostDefendAbAttr { - constructor() { - super(); + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult | null, + _args: any[], + ): boolean { + return ( + move.doesFlagEffectApply({ flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon }) && + attacker.getAbility().isSwappable + ); } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { - return move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon}) - && attacker.getAbility().isSwappable; - } - - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, args: any[]): void { + override applyPostDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!simulated) { const tempAbility = attacker.getAbility(); attacker.setTempAbility(pokemon.getAbility()); @@ -1024,7 +1637,9 @@ export class PostDefendAbilitySwapAbAttr extends PostDefendAbAttr { } override getTriggerMessage(pokemon: Pokemon, _abilityName: string, ..._args: any[]): string { - return i18next.t("abilityTriggers:postDefendAbilitySwap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }); + return i18next.t("abilityTriggers:postDefendAbilitySwap", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + }); } } @@ -1036,12 +1651,31 @@ export class PostDefendAbilityGiveAbAttr extends PostDefendAbAttr { this.ability = ability; } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { - return move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon}) && attacker.getAbility().isSuppressable - && !attacker.getAbility().hasAttr(PostDefendAbilityGiveAbAttr); + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult | null, + _args: any[], + ): boolean { + return ( + move.doesFlagEffectApply({ flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon }) && + attacker.getAbility().isSuppressable && + !attacker.getAbility().hasAttr(PostDefendAbilityGiveAbAttr) + ); } - override applyPostDefend(_pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { + override applyPostDefend( + _pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!simulated) { attacker.setTempAbility(allAbilities[this.ability]); } @@ -1050,7 +1684,7 @@ export class PostDefendAbilityGiveAbAttr extends PostDefendAbAttr { override getTriggerMessage(pokemon: Pokemon, abilityName: string, ..._args: any[]): string { return i18next.t("abilityTriggers:postDefendAbilityGive", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - abilityName + abilityName, }); } } @@ -1066,12 +1700,31 @@ export class PostDefendMoveDisableAbAttr extends PostDefendAbAttr { this.chance = chance; } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { - return attacker.getTag(BattlerTagType.DISABLED) === null - && move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon}) && (this.chance === -1 || pokemon.randBattleSeedInt(100) < this.chance); + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult | null, + _args: any[], + ): boolean { + return ( + attacker.getTag(BattlerTagType.DISABLED) === null && + move.doesFlagEffectApply({ flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon }) && + (this.chance === -1 || pokemon.randBattleSeedInt(100) < this.chance) + ); } - override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): void { + override applyPostDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!simulated) { this.attacker = attacker; this.move = move; @@ -1093,35 +1746,52 @@ export class PostStatStageChangeStatStageChangeAbAttr extends PostStatStageChang this.stages = stages; } - override canApplyPostStatStageChange(pokemon: Pokemon, simulated: boolean, statStagesChanged: BattleStat[], stagesChanged: integer, selfTarget: boolean, args: any[]): boolean { + override canApplyPostStatStageChange( + pokemon: Pokemon, + _simulated: boolean, + statStagesChanged: BattleStat[], + stagesChanged: number, + selfTarget: boolean, + _args: any[], + ): boolean { return this.condition(pokemon, statStagesChanged, stagesChanged) && !selfTarget; } - override applyPostStatStageChange(pokemon: Pokemon, simulated: boolean, statStagesChanged: BattleStat[], stagesChanged: number, selfTarget: boolean, args: any[]): void { + override applyPostStatStageChange( + pokemon: Pokemon, + simulated: boolean, + _statStagesChanged: BattleStat[], + _stagesChanged: number, + _selfTarget: boolean, + _args: any[], + ): void { if (!simulated) { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase((pokemon).getBattlerIndex(), true, this.statsToChange, this.stages)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.statsToChange, this.stages), + ); } } } export class PreAttackAbAttr extends AbAttr { canApplyPreAttack( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - defender: Pokemon | null, - move: Move, - args: any[]): boolean { + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _defender: Pokemon | null, + _move: Move, + _args: any[], + ): boolean { return true; } applyPreAttack( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - defender: Pokemon | null, - move: Move, - args: any[], + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _defender: Pokemon | null, + _move: Move, + _args: any[], ): void {} } @@ -1138,8 +1808,8 @@ export class MoveEffectChanceMultiplierAbAttr extends AbAttr { this.chanceMultiplier = chanceMultiplier; } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - const exceptMoves = [ MoveId.ORDER_UP, MoveId.ELECTRO_SHOT ]; + override canApply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, args: any[]): boolean { + const exceptMoves = [MoveId.ORDER_UP, MoveId.ELECTRO_SHOT]; return !((args[0] as NumberHolder).value <= 0 || exceptMoves.includes((args[1] as Move).id)); } @@ -1147,7 +1817,13 @@ export class MoveEffectChanceMultiplierAbAttr extends AbAttr { * @param args [0]: {@linkcode NumberHolder} Move additional effect chance. Has to be higher than or equal to 0. * [1]: {@linkcode MoveId } Move used by the ability user. */ - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[0] as NumberHolder).value *= this.chanceMultiplier; (args[0] as NumberHolder).value = Math.min((args[0] as NumberHolder).value, 100); } @@ -1159,35 +1835,58 @@ export class MoveEffectChanceMultiplierAbAttr extends AbAttr { * @see {@linkcode applyPreDefend} */ export class IgnoreMoveEffectsAbAttr extends PreDefendAbAttr { - constructor(showAbility: boolean = false) { + constructor(showAbility = false) { super(showAbility); } - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move | null, cancelled: BooleanHolder | null, args: any[]): boolean { + override canApplyPreDefend( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move | null, + _cancelled: BooleanHolder | null, + args: any[], + ): boolean { return (args[0] as NumberHolder).value > 0; } /** * @param args [0]: {@linkcode NumberHolder} Move additional effect chance. */ - override applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[0] as NumberHolder).value = 0; } } export class VariableMovePowerAbAttr extends PreAttackAbAttr { - override canApplyPreAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon, move: Move, args: any[]): boolean { + override canApplyPreAttack( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _defender: Pokemon, + _move: Move, + _args: any[], + ): boolean { return true; } } export class FieldPreventExplosiveMovesAbAttr extends AbAttr { override apply( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, cancelled: BooleanHolder, - args: any[], + _args: any[], ): void { cancelled.value = true; } @@ -1213,33 +1912,56 @@ export class FieldMultiplyStatAbAttr extends AbAttr { this.canStack = canStack; } - canApplyFieldStat(pokemon: Pokemon, passive: boolean, simulated: boolean, stat: Stat, statValue: NumberHolder, checkedPokemon: Pokemon, hasApplied: BooleanHolder, args: any[]): boolean { - return this.canStack || !hasApplied.value - && this.stat === stat && checkedPokemon.getAbilityAttrs(FieldMultiplyStatAbAttr).every(attr => (attr as FieldMultiplyStatAbAttr).stat !== stat); + canApplyFieldStat( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + stat: Stat, + _statValue: NumberHolder, + checkedPokemon: Pokemon, + hasApplied: BooleanHolder, + _args: any[], + ): boolean { + return ( + this.canStack || + (!hasApplied.value && + this.stat === stat && + checkedPokemon + .getAbilityAttrs(FieldMultiplyStatAbAttr) + .every(attr => (attr as FieldMultiplyStatAbAttr).stat !== stat)) + ); } /** * applyFieldStat: Tries to multiply a Pokemon's Stat - * @param pokemon {@linkcode Pokemon} the Pokemon using this ability - * @param passive {@linkcode boolean} unused - * @param stat {@linkcode Stat} the type of the checked stat + * @param _pokemon {@linkcode Pokemon} the Pokemon using this ability + * @param _passive {@linkcode boolean} unused + * @param _stat {@linkcode Stat} the type of the checked stat * @param statValue {@linkcode NumberHolder} the value of the checked stat - * @param checkedPokemon {@linkcode Pokemon} the Pokemon this ability is targeting + * @param _checkedPokemon {@linkcode Pokemon} the Pokemon this ability is targeting * @param hasApplied {@linkcode BooleanHolder} whether or not another multiplier has been applied to this stat - * @param args {any[]} unused + * @param _args {any[]} unused */ - applyFieldStat(pokemon: Pokemon, passive: boolean, simulated: boolean, stat: Stat, statValue: NumberHolder, checkedPokemon: Pokemon, hasApplied: BooleanHolder, args: any[]): void { + applyFieldStat( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _stat: Stat, + statValue: NumberHolder, + _checkedPokemon: Pokemon, + hasApplied: BooleanHolder, + _args: any[], + ): void { statValue.value *= this.multiplier; hasApplied.value = true; } - } export class MoveTypeChangeAbAttr extends PreAttackAbAttr { constructor( private newType: PokemonType, private powerMultiplier: number, - private condition?: PokemonAttackCondition + private condition?: PokemonAttackCondition, ) { super(false); } @@ -1260,23 +1982,41 @@ export class MoveTypeChangeAbAttr extends PreAttackAbAttr { * @param _args - args[0] holds the type that the move is changed to, args[1] holds the multiplier * @returns whether the move type change attribute can be applied */ - override canApplyPreAttack(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _defender: Pokemon | null, move: Move, _args: [NumberHolder?, NumberHolder?, ...any]): boolean { - return (!this.condition || this.condition(pokemon, _defender, move)) && - !noAbilityTypeOverrideMoves.has(move.id) && - (!pokemon.isTerastallized || - (move.id !== MoveId.TERA_BLAST && - (move.id !== MoveId.TERA_STARSTORM || pokemon.getTeraType() !== PokemonType.STELLAR || !pokemon.hasSpecies(SpeciesId.TERAPAGOS)))); + override canApplyPreAttack( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _defender: Pokemon | null, + move: Move, + _args: [NumberHolder?, NumberHolder?, ...any], + ): boolean { + return ( + (!this.condition || this.condition(pokemon, _defender, move)) && + !noAbilityTypeOverrideMoves.has(move.id) && + (!pokemon.isTerastallized || + (move.id !== MoveId.TERA_BLAST && + (move.id !== MoveId.TERA_STARSTORM || + pokemon.getTeraType() !== PokemonType.STELLAR || + !pokemon.hasSpecies(SpeciesId.TERAPAGOS)))) + ); } /** - * @param pokemon - The pokemon that has the move type changing ability and is using the attacking move - * @param passive - Unused - * @param simulated - Unused - * @param defender - The pokemon being attacked (unused) - * @param move - The move being used + * @param _pokemon - The pokemon that has the move type changing ability and is using the attacking move + * @param _passive - Unused + * @param _simulated - Unused + * @param _defender - The pokemon being attacked (unused) + * @param _move - The move being used * @param args - args[0] holds the type that the move is changed to, args[1] holds the multiplier */ - override applyPreAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon, move: Move, args: [NumberHolder?, NumberHolder?, ...any]): void { + override applyPreAttack( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _defender: Pokemon, + _move: Move, + args: [NumberHolder?, NumberHolder?, ...any], + ): void { if (args[0] && args[0] instanceof NumberHolder) { args[0].value = this.newType; } @@ -1294,20 +2034,31 @@ export class PokemonTypeChangeAbAttr extends PreAttackAbAttr { super(true); } - override canApplyPreAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon | null, move: Move, args: any[]): boolean { - if (!pokemon.isTerastallized && - move.id !== MoveId.STRUGGLE && - /** - * Skip moves that call other moves because these moves generate a following move that will trigger this ability attribute - * @see {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_call_other_moves} - */ - !move.findAttr((attr) => - attr instanceof RandomMovesetMoveAttr || - attr instanceof RandomMoveAttr || - attr instanceof NaturePowerAttr || - attr instanceof CopyMoveAttr)) { + override canApplyPreAttack( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _defender: Pokemon | null, + move: Move, + _args: any[], + ): boolean { + if ( + !pokemon.isTerastallized && + move.id !== MoveId.STRUGGLE && + /** + * Skip moves that call other moves because these moves generate a following move that will trigger this ability attribute + * @see {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_call_other_moves} + */ + !move.findAttr( + attr => + attr instanceof RandomMovesetMoveAttr || + attr instanceof RandomMoveAttr || + attr instanceof NaturePowerAttr || + attr instanceof CopyMoveAttr, + ) + ) { const moveType = pokemon.getMoveType(move); - if (pokemon.getTypes().some((t) => t !== moveType)) { + if (pokemon.getTypes().some(t => t !== moveType)) { this.moveType = moveType; return true; } @@ -1315,17 +2066,24 @@ export class PokemonTypeChangeAbAttr extends PreAttackAbAttr { return false; } - override applyPreAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon, move: Move, args: any[]): void { + override applyPreAttack( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _defender: Pokemon, + move: Move, + _args: any[], + ): void { const moveType = pokemon.getMoveType(move); if (!simulated) { this.moveType = moveType; - pokemon.summonData.types = [ moveType ]; + pokemon.summonData.types = [moveType]; pokemon.updateInfo(); } } - getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { + getTriggerMessage(pokemon: Pokemon, _abilityName: string, ..._args: any[]): string { return i18next.t("abilityTriggers:pokemonTypeChange", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveType: i18next.t(`pokemonInfo:Type.${PokemonType[this.moveType]}`), @@ -1346,7 +2104,14 @@ export class AddSecondStrikeAbAttr extends PreAttackAbAttr { this.damageMultiplier = damageMultiplier; } - override canApplyPreAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon | null, move: Move, args: any[]): boolean { + override canApplyPreAttack( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _defender: Pokemon | null, + move: Move, + _args: any[], + ): boolean { return move.canBeMultiStrikeEnhanced(pokemon, true); } @@ -1354,14 +2119,21 @@ export class AddSecondStrikeAbAttr extends PreAttackAbAttr { * If conditions are met, this doubles the move's hit count (via args[1]) * or multiplies the damage of secondary strikes (via args[2]) * @param pokemon the {@linkcode Pokemon} using the move - * @param passive n/a - * @param defender n/a - * @param move the {@linkcode Move} used by the ability source + * @param _passive n/a + * @param _defender n/a + * @param _move the {@linkcode Move} used by the ability source * @param args Additional arguments: * - `[0]` the number of strikes this move currently has ({@linkcode NumberHolder}) * - `[1]` the damage multiplier for the current strike ({@linkcode NumberHolder}) */ - override applyPreAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon, move: Move, args: any[]): void { + override applyPreAttack( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _defender: Pokemon, + _move: Move, + args: any[], + ): void { const hitCount = args[0] as NumberHolder; const multiplier = args[1] as NumberHolder; if (hitCount?.value) { @@ -1390,19 +2162,33 @@ export class DamageBoostAbAttr extends PreAttackAbAttr { this.condition = condition; } - override canApplyPreAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon | null, move: Move, args: any[]): boolean { + override canApplyPreAttack( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + defender: Pokemon | null, + move: Move, + _args: any[], + ): boolean { return this.condition(pokemon, defender, move); } /** * - * @param pokemon the attacker pokemon - * @param passive N/A - * @param defender the target pokemon - * @param move the move used by the attacker pokemon + * @param _pokemon the attacker pokemon + * @param _passive N/A + * @param _defender the target pokemon + * @param _move the move used by the attacker pokemon * @param args Utils.NumberHolder as damage */ - override applyPreAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon, move: Move, args: any[]): void { + override applyPreAttack( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _defender: Pokemon, + _move: Move, + args: any[], + ): void { const power = args[0] as NumberHolder; power.value = toDmgValue(power.value * this.damageMultiplier); } @@ -1412,34 +2198,49 @@ export class MovePowerBoostAbAttr extends VariableMovePowerAbAttr { private condition: PokemonAttackCondition; private powerMultiplier: number; - constructor(condition: PokemonAttackCondition, powerMultiplier: number, showAbility: boolean = false) { + constructor(condition: PokemonAttackCondition, powerMultiplier: number, showAbility = false) { super(showAbility); this.condition = condition; this.powerMultiplier = powerMultiplier; } - override canApplyPreAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon | null, move: Move, args: any[]): boolean { + override canApplyPreAttack( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + defender: Pokemon | null, + move: Move, + _args: any[], + ): boolean { return this.condition(pokemon, defender, move); } - override applyPreAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon, move: Move, args: any[]): void { + override applyPreAttack( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _defender: Pokemon, + _move: Move, + args: any[], + ): void { (args[0] as NumberHolder).value *= this.powerMultiplier; } } export class MoveTypePowerBoostAbAttr extends MovePowerBoostAbAttr { constructor(boostedType: PokemonType, powerMultiplier?: number) { - super((pokemon, defender, move) => pokemon?.getMoveType(move) === boostedType, powerMultiplier || 1.5, false); + super((pokemon, _defender, move) => pokemon?.getMoveType(move) === boostedType, powerMultiplier || 1.5, false); } } export class LowHpMoveTypePowerBoostAbAttr extends MoveTypePowerBoostAbAttr { + // biome-ignore lint/complexity/noUselessConstructor: Changes the constructor params constructor(boostedType: PokemonType) { super(boostedType); } getCondition(): AbAttrCondition { - return (pokemon) => pokemon.getHpRatio() <= 0.33; + return pokemon => pokemon.getHpRatio() <= 0.33; } } @@ -1460,11 +2261,25 @@ export class VariableMovePowerBoostAbAttr extends VariableMovePowerAbAttr { this.mult = mult; } - override canApplyPreAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon, move: Move, args: any[]): boolean { + override canApplyPreAttack( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + defender: Pokemon, + move: Move, + _args: any[], + ): boolean { return this.mult(pokemon, defender, move) !== 1; } - override applyPreAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon, move: Move, args: any[]): void { + override applyPreAttack( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + defender: Pokemon, + move: Move, + args: any[], + ): void { const multiplier = this.mult(pokemon, defender, move); (args[0] as NumberHolder).value *= multiplier; } @@ -1489,11 +2304,25 @@ export class FieldMovePowerBoostAbAttr extends AbAttr { this.powerMultiplier = powerMultiplier; } - canApplyPreAttack(pokemon: Pokemon | null, passive: boolean | null, simulated: boolean, defender: Pokemon | null, move: Move, args: any[]): boolean { + canApplyPreAttack( + _pokemon: Pokemon | null, + _passive: boolean | null, + _simulated: boolean, + _defender: Pokemon | null, + _move: Move, + _args: any[], + ): boolean { return true; // logic for this attr is handled in move.ts instead of normally } - applyPreAttack(pokemon: Pokemon | null, passive: boolean | null, simulated: boolean, defender: Pokemon | null, move: Move, args: any[]): void { + applyPreAttack( + pokemon: Pokemon | null, + _passive: boolean | null, + _simulated: boolean, + defender: Pokemon | null, + move: Move, + args: any[], + ): void { if (this.condition(pokemon, defender, move)) { (args[0] as NumberHolder).value *= this.powerMultiplier; } @@ -1510,7 +2339,7 @@ export class PreAttackFieldMoveTypePowerBoostAbAttr extends FieldMovePowerBoostA * @param powerMultiplier - The multiplier to apply to the move's power, defaults to 1.5 if not provided. */ constructor(boostedType: PokemonType, powerMultiplier?: number) { - super((pokemon, defender, move) => pokemon?.getMoveType(move) === boostedType, powerMultiplier || 1.5); + super((pokemon, _defender, move) => pokemon?.getMoveType(move) === boostedType, powerMultiplier || 1.5); } } @@ -1518,13 +2347,13 @@ export class PreAttackFieldMoveTypePowerBoostAbAttr extends FieldMovePowerBoostA * Boosts the power of a specific type of move for all Pokemon in the field. * @extends PreAttackFieldMoveTypePowerBoostAbAttr */ -export class FieldMoveTypePowerBoostAbAttr extends PreAttackFieldMoveTypePowerBoostAbAttr { } +export class FieldMoveTypePowerBoostAbAttr extends PreAttackFieldMoveTypePowerBoostAbAttr {} /** * Boosts the power of a specific type of move for the user and its allies. * @extends PreAttackFieldMoveTypePowerBoostAbAttr */ -export class UserFieldMoveTypePowerBoostAbAttr extends PreAttackFieldMoveTypePowerBoostAbAttr { } +export class UserFieldMoveTypePowerBoostAbAttr extends PreAttackFieldMoveTypePowerBoostAbAttr {} /** * Boosts the power of moves in specified categories. @@ -1536,7 +2365,7 @@ export class AllyMoveCategoryPowerBoostAbAttr extends FieldMovePowerBoostAbAttr * @param powerMultiplier - The multiplier to apply to the move's power. */ constructor(boostedCategories: MoveCategory[], powerMultiplier: number) { - super((pokemon, defender, move) => boostedCategories.includes(move.category), powerMultiplier); + super((_pokemon, _defender, move) => boostedCategories.includes(move.category), powerMultiplier); } } @@ -1556,21 +2385,23 @@ export class StatMultiplierAbAttr extends AbAttr { canApplyStatStage( pokemon: Pokemon, _passive: boolean, - simulated: boolean, + _simulated: boolean, stat: BattleStat, - statValue: NumberHolder, - args: any[]): boolean { - const move = (args[0] as Move); + _statValue: NumberHolder, + args: any[], + ): boolean { + const move = args[0] as Move; return stat === this.stat && (!this.condition || this.condition(pokemon, null, move)); } applyStatStage( - pokemon: Pokemon, + _pokemon: Pokemon, _passive: boolean, - simulated: boolean, - stat: BattleStat, + _simulated: boolean, + _stat: BattleStat, statValue: NumberHolder, - args: any[]): void { + _args: any[], + ): void { statValue.value *= this.multiplier; } } @@ -1579,7 +2410,10 @@ export class PostAttackAbAttr extends AbAttr { private attackCondition: PokemonAttackCondition; /** The default attackCondition requires that the selected move is a damaging move */ - constructor(attackCondition: PokemonAttackCondition = (user, target, move) => (move.category !== MoveCategory.STATUS), showAbility = true) { + constructor( + attackCondition: PokemonAttackCondition = (_user, _target, move) => move.category !== MoveCategory.STATUS, + showAbility = true, + ) { super(showAbility); this.attackCondition = attackCondition; @@ -1592,25 +2426,27 @@ export class PostAttackAbAttr extends AbAttr { */ canApplyPostAttack( pokemon: Pokemon, - passive: boolean, - simulated: boolean, + _passive: boolean, + _simulated: boolean, defender: Pokemon, move: Move, - hitResult: HitResult | null, - args: any[]): boolean { + _hitResult: HitResult | null, + _args: any[], + ): boolean { // When attackRequired is true, we require the move to be an attack move and to deal damage before checking secondary requirements. // If attackRequired is false, we always defer to the secondary requirements. return this.attackCondition(pokemon, defender, move); } applyPostAttack( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - defender: Pokemon, - move: Move, - hitResult: HitResult | null, - args: any[]): void {} + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _defender: Pokemon, + _move: Move, + _hitResult: HitResult | null, + _args: any[], + ): void {} } /** @@ -1628,7 +2464,7 @@ export class AllyStatMultiplierAbAttr extends AbAttr { * @param multipler - The multiplier to apply to the stat * @param ignorable - Whether the multiplier can be ignored by mold breaker-like moves and abilities */ - constructor(stat: BattleStat, multiplier: number, ignorable: boolean = true) { + constructor(stat: BattleStat, multiplier: number, ignorable = true) { super(false); this.stat = stat; @@ -1648,23 +2484,41 @@ export class AllyStatMultiplierAbAttr extends AbAttr { * @param _args - unused * @returns `true` if this changed the checked stat, `false` otherwise. */ - applyAllyStat(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _stat: BattleStat, statValue: NumberHolder, _checkedPokemon: Pokemon, _ignoreAbility: boolean, _args: any[]) { + applyAllyStat( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _stat: BattleStat, + statValue: NumberHolder, + _checkedPokemon: Pokemon, + _ignoreAbility: boolean, + _args: any[], + ) { statValue.value *= this.multiplier; } /** * Check if this ability can apply to the checked stat. - * @param pokemon - The ally {@linkcode Pokemon} with the ability (unused) + * @param _pokemon - The ally {@linkcode Pokemon} with the ability (unused) * @param passive - unused - * @param simulated - Whether the ability is being simulated (unused) + * @param _simulated - Whether the ability is being simulated (unused) * @param stat - The type of the checked {@linkcode Stat} - * @param statValue - {@linkcode NumberHolder} containing the value of the checked stat - * @param checkedPokemon - The {@linkcode Pokemon} this ability is targeting (unused) + * @param _statValue - {@linkcode NumberHolder} containing the value of the checked stat + * @param _checkedPokemon - The {@linkcode Pokemon} this ability is targeting (unused) * @param ignoreAbility - Whether the ability should be ignored if possible - * @param args - unused + * @param _args - unused * @returns `true` if this can apply to the checked stat, `false` otherwise. */ - canApplyAllyStat(pokemon: Pokemon, _passive: boolean, simulated: boolean, stat: BattleStat, statValue: NumberHolder, checkedPokemon: Pokemon, ignoreAbility: boolean, args: any[]): boolean { + canApplyAllyStat( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + stat: BattleStat, + _statValue: NumberHolder, + _checkedPokemon: Pokemon, + ignoreAbility: boolean, + _args: any[], + ): boolean { return stat === this.stat && !(ignoreAbility && this.ignorable); } } @@ -1675,7 +2529,7 @@ export class AllyStatMultiplierAbAttr extends AbAttr { */ export class GorillaTacticsAbAttr extends PostAttackAbAttr { constructor() { - super((user, target, move) => true, false); + super((_user, _target, _move) => true, false); } override canApplyPostAttack( @@ -1685,29 +2539,33 @@ export class GorillaTacticsAbAttr extends PostAttackAbAttr { defender: Pokemon, move: Move, hitResult: HitResult | null, - args: any[]): boolean { - return super.canApplyPostAttack(pokemon, passive, simulated, defender, move, hitResult, args) - && simulated || !pokemon.getTag(BattlerTagType.GORILLA_TACTICS); + args: any[], + ): boolean { + return ( + (super.canApplyPostAttack(pokemon, passive, simulated, defender, move, hitResult, args) && simulated) || + !pokemon.getTag(BattlerTagType.GORILLA_TACTICS) + ); } /** * * @param {Pokemon} pokemon the {@linkcode Pokemon} with this ability - * @param passive n/a + * @param _passive n/a * @param simulated whether the ability is being simulated - * @param defender n/a - * @param move n/a - * @param hitResult n/a - * @param args n/a + * @param _defender n/a + * @param _move n/a + * @param _hitResult n/a + * @param _args n/a */ override applyPostAttack( pokemon: Pokemon, - passive: boolean, + _passive: boolean, simulated: boolean, - defender: Pokemon, - move: Move, - hitResult: HitResult | null, - args: any[]): void { + _defender: Pokemon, + _move: Move, + _hitResult: HitResult | null, + _args: any[], + ): void { if (!simulated) { pokemon.addTag(BattlerTagType.GORILLA_TACTICS); } @@ -1731,14 +2589,15 @@ export class PostAttackStealHeldItemAbAttr extends PostAttackAbAttr { defender: Pokemon, move: Move, hitResult: HitResult, - args: any[]): boolean { + args: any[], + ): boolean { if ( super.canApplyPostAttack(pokemon, passive, simulated, defender, move, hitResult, args) && !simulated && hitResult < HitResult.NO_EFFECT && (!this.stealCondition || this.stealCondition(pokemon, defender, move)) ) { - const heldItems = this.getTargetHeldItems(defender).filter((i) => i.isTransferable); + const heldItems = this.getTargetHeldItems(defender).filter(i => i.isTransferable); if (heldItems.length) { // Ensure that the stolen item in testing is the same as when the effect is applied this.stolenItem = heldItems[pokemon.randBattleSeedInt(heldItems.length)]; @@ -1753,14 +2612,14 @@ export class PostAttackStealHeldItemAbAttr extends PostAttackAbAttr { override applyPostAttack( pokemon: Pokemon, - passive: boolean, - simulated: boolean, + _passive: boolean, + _simulated: boolean, defender: Pokemon, - move: Move, - hitResult: HitResult, - args: any[], + _move: Move, + _hitResult: HitResult, + _args: any[], ): void { - const heldItems = this.getTargetHeldItems(defender).filter((i) => i.isTransferable); + const heldItems = this.getTargetHeldItems(defender).filter(i => i.isTransferable); if (!this.stolenItem) { this.stolenItem = heldItems[pokemon.randBattleSeedInt(heldItems.length)]; } @@ -1777,8 +2636,10 @@ export class PostAttackStealHeldItemAbAttr extends PostAttackAbAttr { } getTargetHeldItems(target: Pokemon): PokemonHeldItemModifier[] { - return globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier - && m.pokemonId === target.id, target.isPlayer()) as PokemonHeldItemModifier[]; + return globalScene.findModifiers( + m => m instanceof PokemonHeldItemModifier && m.pokemonId === target.id, + target.isPlayer(), + ) as PokemonHeldItemModifier[]; } } @@ -1795,21 +2656,44 @@ export class PostAttackApplyStatusEffectAbAttr extends PostAttackAbAttr { this.effects = effects; } - override canApplyPostAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { + override canApplyPostAttack( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + hitResult: HitResult | null, + args: any[], + ): boolean { if ( - super.canApplyPostAttack(pokemon, passive, simulated, attacker, move, hitResult, args) - && (simulated || !attacker.hasAbilityWithAttr(IgnoreMoveEffectsAbAttr) && pokemon !== attacker - && (!this.contactRequired || move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon})) && pokemon.randBattleSeedInt(100) < this.chance && !pokemon.status) + super.canApplyPostAttack(pokemon, passive, simulated, attacker, move, hitResult, args) && + (simulated || + (!attacker.hasAbilityWithAttr(IgnoreMoveEffectsAbAttr) && + pokemon !== attacker && + (!this.contactRequired || + move.doesFlagEffectApply({ flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon })) && + pokemon.randBattleSeedInt(100) < this.chance && + !pokemon.status)) ) { - const effect = this.effects.length === 1 ? this.effects[0] : this.effects[pokemon.randBattleSeedInt(this.effects.length)]; + const effect = + this.effects.length === 1 ? this.effects[0] : this.effects[pokemon.randBattleSeedInt(this.effects.length)]; return simulated || attacker.canSetStatus(effect, true, false, pokemon); } return false; } - applyPostAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, args: any[]): void { - const effect = this.effects.length === 1 ? this.effects[0] : this.effects[pokemon.randBattleSeedInt(this.effects.length)]; + applyPostAttack( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { + const effect = + this.effects.length === 1 ? this.effects[0] : this.effects[pokemon.randBattleSeedInt(this.effects.length)]; attacker.trySetStatus(effect, true, pokemon); } } @@ -1825,8 +2709,11 @@ export class PostAttackApplyBattlerTagAbAttr extends PostAttackAbAttr { private chance: (user: Pokemon, target: Pokemon, move: Move) => number; private effects: BattlerTagType[]; - - constructor(contactRequired: boolean, chance: (user: Pokemon, target: Pokemon, move: Move) => number, ...effects: BattlerTagType[]) { + constructor( + contactRequired: boolean, + chance: (user: Pokemon, target: Pokemon, move: Move) => number, + ...effects: BattlerTagType[] + ) { super(undefined, false); this.contactRequired = contactRequired; @@ -1834,17 +2721,39 @@ export class PostAttackApplyBattlerTagAbAttr extends PostAttackAbAttr { this.effects = effects; } - override canApplyPostAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { + override canApplyPostAttack( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + hitResult: HitResult | null, + args: any[], + ): boolean { /**Battler tags inflicted by abilities post attacking are also considered additional effects.*/ - return super.canApplyPostAttack(pokemon, passive, simulated, attacker, move, hitResult, args) && - !attacker.hasAbilityWithAttr(IgnoreMoveEffectsAbAttr) && pokemon !== attacker && - (!this.contactRequired || move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon})) && - pokemon.randBattleSeedInt(100) < this.chance(attacker, pokemon, move) && !pokemon.status; + return ( + super.canApplyPostAttack(pokemon, passive, simulated, attacker, move, hitResult, args) && + !attacker.hasAbilityWithAttr(IgnoreMoveEffectsAbAttr) && + pokemon !== attacker && + (!this.contactRequired || + move.doesFlagEffectApply({ flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon })) && + pokemon.randBattleSeedInt(100) < this.chance(attacker, pokemon, move) && + !pokemon.status + ); } - override applyPostAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, args: any[]): void { + override applyPostAttack( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!simulated) { - const effect = this.effects.length === 1 ? this.effects[0] : this.effects[pokemon.randBattleSeedInt(this.effects.length)]; + const effect = + this.effects.length === 1 ? this.effects[0] : this.effects[pokemon.randBattleSeedInt(this.effects.length)]; attacker.addTag(effect); } } @@ -1860,13 +2769,17 @@ export class PostDefendStealHeldItemAbAttr extends PostDefendAbAttr { this.condition = condition; } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, args: any[]): boolean { - if ( - !simulated && - hitResult < HitResult.NO_EFFECT && - (!this.condition || this.condition(pokemon, attacker, move)) - ) { - const heldItems = this.getTargetHeldItems(attacker).filter((i) => i.isTransferable); + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker: Pokemon, + move: Move, + hitResult: HitResult, + _args: any[], + ): boolean { + if (!simulated && hitResult < HitResult.NO_EFFECT && (!this.condition || this.condition(pokemon, attacker, move))) { + const heldItems = this.getTargetHeldItems(attacker).filter(i => i.isTransferable); if (heldItems.length) { this.stolenItem = heldItems[pokemon.randBattleSeedInt(heldItems.length)]; if (globalScene.canTransferHeldItemModifier(this.stolenItem, pokemon)) { @@ -1880,14 +2793,13 @@ export class PostDefendStealHeldItemAbAttr extends PostDefendAbAttr { override applyPostDefend( pokemon: Pokemon, _passive: boolean, - simulated: boolean, + _simulated: boolean, attacker: Pokemon, - move: Move, - hitResult: HitResult, + _move: Move, + _hitResult: HitResult, _args: any[], ): void { - - const heldItems = this.getTargetHeldItems(attacker).filter((i) => i.isTransferable); + const heldItems = this.getTargetHeldItems(attacker).filter(i => i.isTransferable); if (!this.stolenItem) { this.stolenItem = heldItems[pokemon.randBattleSeedInt(heldItems.length)]; } @@ -1904,8 +2816,10 @@ export class PostDefendStealHeldItemAbAttr extends PostDefendAbAttr { } getTargetHeldItems(target: Pokemon): PokemonHeldItemModifier[] { - return globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier - && m.pokemonId === target.id, target.isPlayer()) as PokemonHeldItemModifier[]; + return globalScene.findModifiers( + m => m instanceof PokemonHeldItemModifier && m.pokemonId === target.id, + target.isPlayer(), + ) as PokemonHeldItemModifier[]; } } @@ -1915,30 +2829,31 @@ export class PostDefendStealHeldItemAbAttr extends PostDefendAbAttr { */ export class PostSetStatusAbAttr extends AbAttr { canApplyPostSetStatus( - pokemon: Pokemon, - sourcePokemon: Pokemon | null = null, - passive: boolean, - effect: StatusEffect, - simulated: boolean, - rgs: any[]): boolean { + _pokemon: Pokemon, + _sourcePokemon: Pokemon | null = null, + _passive: boolean, + _effect: StatusEffect, + _simulated: boolean, + _rgs: any[], + ): boolean { return true; } /** * Does nothing after a status condition is set. - * @param pokemon {@linkcode Pokemon} that status condition was set on. - * @param sourcePokemon {@linkcode Pokemon} that that set the status condition. Is `null` if status was not set by a Pokemon. - * @param passive Whether this ability is a passive. - * @param effect {@linkcode StatusEffect} that was set. - * @param args Set of unique arguments needed by this attribute. + * @param _pokemon {@linkcode Pokemon} that status condition was set on. + * @param _sourcePokemon {@linkcode Pokemon} that that set the status condition. Is `null` if status was not set by a Pokemon. + * @param _passive Whether this ability is a passive. + * @param _effect {@linkcode StatusEffect} that was set. + * @param _args Set of unique arguments needed by this attribute. */ applyPostSetStatus( - pokemon: Pokemon, - sourcePokemon: Pokemon | null = null, - passive: boolean, - effect: StatusEffect, - simulated: boolean, - args: any[], + _pokemon: Pokemon, + _sourcePokemon: Pokemon | null = null, + _passive: boolean, + _effect: StatusEffect, + _simulated: boolean, + _args: any[], ): void {} } @@ -1948,17 +2863,24 @@ export class PostSetStatusAbAttr extends AbAttr { * ability attribute. For Synchronize ability. */ export class SynchronizeStatusAbAttr extends PostSetStatusAbAttr { - override canApplyPostSetStatus(pokemon: Pokemon, sourcePokemon: (Pokemon | null) | undefined, passive: boolean, effect: StatusEffect, simulated: boolean, args: any[]): boolean { + override canApplyPostSetStatus( + _pokemon: Pokemon, + sourcePokemon: (Pokemon | null) | undefined, + _passive: boolean, + effect: StatusEffect, + _simulated: boolean, + _args: any[], + ): boolean { /** Synchronizable statuses */ const syncStatuses = new Set([ StatusEffect.BURN, StatusEffect.PARALYSIS, StatusEffect.POISON, - StatusEffect.TOXIC + StatusEffect.TOXIC, ]); // synchronize does not need to check canSetStatus because the ability shows even if it fails to set the status - return ((sourcePokemon ?? false) && syncStatuses.has(effect)); + return (sourcePokemon ?? false) && syncStatuses.has(effect); } /** @@ -1966,11 +2888,18 @@ export class SynchronizeStatusAbAttr extends PostSetStatusAbAttr { * was set by a source Pokemon, set the source Pokemon's status to the same `StatusEffect`. * @param pokemon {@linkcode Pokemon} that status condition was set on. * @param sourcePokemon {@linkcode Pokemon} that that set the status condition. Is null if status was not set by a Pokemon. - * @param passive Whether this ability is a passive. + * @param _passive Whether this ability is a passive. * @param effect {@linkcode StatusEffect} that was set. - * @param args Set of unique arguments needed by this attribute. + * @param _args Set of unique arguments needed by this attribute. */ - override applyPostSetStatus(pokemon: Pokemon, sourcePokemon: Pokemon | null = null, passive: boolean, effect: StatusEffect, simulated: boolean, args: any[]): void { + override applyPostSetStatus( + pokemon: Pokemon, + sourcePokemon: Pokemon | null = null, + _passive: boolean, + effect: StatusEffect, + simulated: boolean, + _args: any[], + ): void { if (!simulated && sourcePokemon) { sourcePokemon.trySetStatus(effect, true, pokemon); } @@ -1978,11 +2907,11 @@ export class SynchronizeStatusAbAttr extends PostSetStatusAbAttr { } export class PostVictoryAbAttr extends AbAttr { - canApplyPostVictory(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + canApplyPostVictory(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return true; } - applyPostVictory(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void {} + applyPostVictory(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void {} } class PostVictoryStatStageChangeAbAttr extends PostVictoryAbAttr { @@ -1996,10 +2925,12 @@ class PostVictoryStatStageChangeAbAttr extends PostVictoryAbAttr { this.stages = stages; } - override applyPostVictory(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostVictory(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { const stat = typeof this.stat === "function" ? this.stat(pokemon) : this.stat; if (!simulated) { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ stat ], this.stages)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), true, [stat], this.stages), + ); } } } @@ -2007,18 +2938,18 @@ class PostVictoryStatStageChangeAbAttr extends PostVictoryAbAttr { export class PostVictoryFormChangeAbAttr extends PostVictoryAbAttr { private formFunc: (p: Pokemon) => number; - constructor(formFunc: ((p: Pokemon) => number)) { + constructor(formFunc: (p: Pokemon) => number) { super(true); this.formFunc = formFunc; } - override canApplyPostVictory(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostVictory(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { const formIndex = this.formFunc(pokemon); return formIndex !== pokemon.formIndex; } - override applyPostVictory(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostVictory(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger, false); } @@ -2026,11 +2957,23 @@ export class PostVictoryFormChangeAbAttr extends PostVictoryAbAttr { } export class PostKnockOutAbAttr extends AbAttr { - canApplyPostKnockOut(pokemon: Pokemon, passive: boolean, simulated: boolean, knockedOut: Pokemon, args: any[]): boolean { + canApplyPostKnockOut( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _knockedOut: Pokemon, + _args: any[], + ): boolean { return true; } - applyPostKnockOut(pokemon: Pokemon, passive: boolean, simulated: boolean, knockedOut: Pokemon, args: any[]): void {} + applyPostKnockOut( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _knockedOut: Pokemon, + _args: any[], + ): void {} } export class PostKnockOutStatStageChangeAbAttr extends PostKnockOutAbAttr { @@ -2044,27 +2987,48 @@ export class PostKnockOutStatStageChangeAbAttr extends PostKnockOutAbAttr { this.stages = stages; } - override applyPostKnockOut(pokemon: Pokemon, passive: boolean, simulated: boolean, knockedOut: Pokemon, args: any[]): void { + override applyPostKnockOut( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _knockedOut: Pokemon, + _args: any[], + ): void { const stat = typeof this.stat === "function" ? this.stat(pokemon) : this.stat; if (!simulated) { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ stat ], this.stages)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), true, [stat], this.stages), + ); } } } export class CopyFaintedAllyAbilityAbAttr extends PostKnockOutAbAttr { - constructor() { - super(); - } - - override canApplyPostKnockOut(pokemon: Pokemon, passive: boolean, simulated: boolean, knockedOut: Pokemon, args: any[]): boolean { + override canApplyPostKnockOut( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + knockedOut: Pokemon, + _args: any[], + ): boolean { return pokemon.isPlayer() === knockedOut.isPlayer() && knockedOut.getAbility().isCopiable; } - override applyPostKnockOut(pokemon: Pokemon, passive: boolean, simulated: boolean, knockedOut: Pokemon, args: any[]): void { + override applyPostKnockOut( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + knockedOut: Pokemon, + _args: any[], + ): void { if (!simulated) { pokemon.setTempAbility(knockedOut.getAbility()); - globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:copyFaintedAllyAbility", { pokemonNameWithAffix: getPokemonNameWithAffix(knockedOut), abilityName: allAbilities[knockedOut.getAbility().id].name })); + globalScene.phaseManager.queueMessage( + i18next.t("abilityTriggers:copyFaintedAllyAbility", { + pokemonNameWithAffix: getPokemonNameWithAffix(knockedOut), + abilityName: allAbilities[knockedOut.getAbility().id].name, + }), + ); } } } @@ -2082,7 +3046,7 @@ export class IgnoreOpponentStatStagesAbAttr extends AbAttr { this.stats = stats ?? BATTLE_STATS; } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, args: any[]): boolean { return this.stats.includes(args[0]); } @@ -2090,11 +3054,17 @@ export class IgnoreOpponentStatStagesAbAttr extends AbAttr { * Modifies a BooleanHolder and returns the result to see if a stat is ignored or not * @param _pokemon n/a * @param _passive n/a - * @param simulated n/a + * @param _simulated n/a * @param _cancelled n/a * @param args A BooleanHolder that represents whether or not to ignore a stat's stat changes */ - override apply(_pokemon: Pokemon, _passive: boolean, simulated: boolean, _cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[1] as BooleanHolder).value = true; } } @@ -2104,14 +3074,20 @@ export class IntimidateImmunityAbAttr extends AbAttr { super(false); } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } - getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { + getTriggerMessage(pokemon: Pokemon, abilityName: string, ..._args: any[]): string { return i18next.t("abilityTriggers:intimidateImmunity", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - abilityName + abilityName, }); } } @@ -2128,9 +3104,17 @@ export class PostIntimidateStatStageChangeAbAttr extends AbAttr { this.overwrites = !!overwrites; } - override apply(pokemon: Pokemon, passive: boolean, simulated:boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + cancelled: BooleanHolder, + _args: any[], + ): void { if (!simulated) { - globalScene.phaseManager.pushPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), false, this.stats, this.stages)); + globalScene.phaseManager.pushPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), false, this.stats, this.stages), + ); } cancelled.value = this.overwrites; } @@ -2156,17 +3140,17 @@ export class PostSummonAbAttr extends AbAttr { return this.activateOnGain; } - canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + canApplyPostSummon(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return true; } /** * Applies ability post summon (after switching in) - * @param pokemon {@linkcode Pokemon} with this ability - * @param passive Whether this ability is a passive - * @param args Set of unique arguments needed by this attribute + * @param _pokemon {@linkcode Pokemon} with this ability + * @param _passive Whether this ability is a passive + * @param _args Set of unique arguments needed by this attribute */ - applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void {} + applyPostSummon(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void {} } /** @@ -2189,11 +3173,11 @@ export class PostSummonRemoveArenaTagAbAttr extends PostSummonAbAttr { this.arenaTags = arenaTags; } - override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostSummon(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return globalScene.arena.tags.some(tag => this.arenaTags.includes(tag.tagType)); } - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(_pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { for (const arenaTag of this.arenaTags) { globalScene.arena.removeTag(arenaTag); @@ -2212,7 +3196,6 @@ export class PostSummonAddArenaTagAbAttr extends PostSummonAbAttr { private readonly quiet?: boolean; private sourceId: number; - constructor(showAbility: boolean, tagType: ArenaTagType, turnCount: number, side?: ArenaTagSide, quiet?: boolean) { super(showAbility); this.tagType = tagType; @@ -2221,7 +3204,7 @@ export class PostSummonAddArenaTagAbAttr extends PostSummonAbAttr { this.quiet = quiet; } - public override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + public override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { this.sourceId = pokemon.id; if (!simulated) { globalScene.arena.addTag(this.tagType, this.turnCount, undefined, this.sourceId, this.side, this.quiet); @@ -2238,7 +3221,7 @@ export class PostSummonMessageAbAttr extends PostSummonAbAttr { this.messageFunc = messageFunc; } - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { globalScene.phaseManager.queueMessage(this.messageFunc(pokemon)); } @@ -2255,7 +3238,7 @@ export class PostSummonUnnamedMessageAbAttr extends PostSummonAbAttr { this.message = message; } - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(_pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { globalScene.phaseManager.queueMessage(this.message); } @@ -2273,11 +3256,11 @@ export class PostSummonAddBattlerTagAbAttr extends PostSummonAbAttr { this.turnCount = turnCount; } - override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return pokemon.canAddTag(this.tagType); } - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { pokemon.addTag(this.tagType, this.turnCount); } @@ -2300,11 +3283,11 @@ export class PostSummonRemoveBattlerTagAbAttr extends PostSummonRemoveEffectAbAt this.immuneTags = immuneTags; } - public override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + public override canApplyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return this.immuneTags.some(tagType => !!pokemon.getTag(tagType)); } - public override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + public override applyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void { this.immuneTags.forEach(tagType => pokemon.removeTag(tagType)); } } @@ -2324,7 +3307,7 @@ export class PostSummonStatStageChangeAbAttr extends PostSummonAbAttr { this.intimidate = !!intimidate; } - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (simulated) { return; } @@ -2332,7 +3315,9 @@ export class PostSummonStatStageChangeAbAttr extends PostSummonAbAttr { if (this.selfTarget) { // we unshift the StatStageChangePhase to put it right after the showAbility and not at the end of the // phase list (which could be after CommandPhase for example) - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages), + ); } else { for (const opponent of pokemon.getOpponents()) { const cancelled = new BooleanHolder(false); @@ -2345,7 +3330,9 @@ export class PostSummonStatStageChangeAbAttr extends PostSummonAbAttr { } } if (!cancelled.value) { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(opponent.getBattlerIndex(), false, this.stats, this.stages)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(opponent.getBattlerIndex(), false, this.stats, this.stages), + ); } } } @@ -2363,15 +3350,25 @@ export class PostSummonAllyHealAbAttr extends PostSummonAbAttr { this.showAnim = showAnim; } - override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return pokemon.getAlly()?.isActive(true) ?? false; } - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { const target = pokemon.getAlly(); if (!simulated && !isNullOrUndefined(target)) { - globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(target.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() / this.healRatio), i18next.t("abilityTriggers:postSummonAllyHeal", { pokemonNameWithAffix: getPokemonNameWithAffix(target), pokemonName: pokemon.name }), true, !this.showAnim)); + globalScene.phaseManager.unshiftPhase( + new PokemonHealPhase( + target.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() / this.healRatio), + i18next.t("abilityTriggers:postSummonAllyHeal", { + pokemonNameWithAffix: getPokemonNameWithAffix(target), + pokemonName: pokemon.name, + }), + true, + !this.showAnim, + ), + ); } } } @@ -2385,22 +3382,22 @@ export class PostSummonAllyHealAbAttr extends PostSummonAbAttr { * @returns if the move was successful */ export class PostSummonClearAllyStatStagesAbAttr extends PostSummonAbAttr { - constructor() { - super(); - } - - override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return pokemon.getAlly()?.isActive(true) ?? false; } - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { const target = pokemon.getAlly(); if (!simulated && !isNullOrUndefined(target)) { for (const s of BATTLE_STATS) { target.setStatStage(s, 0); } - globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:postSummonClearAllyStats", { pokemonNameWithAffix: getPokemonNameWithAffix(target) })); + globalScene.phaseManager.queueMessage( + i18next.t("abilityTriggers:postSummonClearAllyStats", { + pokemonNameWithAffix: getPokemonNameWithAffix(target), + }), + ); } } } @@ -2418,7 +3415,7 @@ export class DownloadAbAttr extends PostSummonAbAttr { private enemyCountTally: number; private stats: BattleStat[]; - override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { this.enemyDef = 0; this.enemySpDef = 0; this.enemyCountTally = 0; @@ -2437,14 +3434,14 @@ export class DownloadAbAttr extends PostSummonAbAttr { * Checks to see if it is the opening turn (starting a new game), if so, Download won't work. This is because Download takes into account * vitamins and items, so it needs to use the Stat and the stat alone. * @param {Pokemon} pokemon Pokemon that is using the move, as well as seeing the opposing pokemon. - * @param {boolean} passive N/A - * @param {any[]} args N/A + * @param {boolean} _passive N/A + * @param {any[]} _args N/A */ - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (this.enemyDef < this.enemySpDef) { - this.stats = [ Stat.ATK ]; + this.stats = [Stat.ATK]; } else { - this.stats = [ Stat.SPATK ]; + this.stats = [Stat.SPATK]; } if (!simulated) { @@ -2462,14 +3459,16 @@ export class PostSummonWeatherChangeAbAttr extends PostSummonAbAttr { this.weatherType = weatherType; } - override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - const weatherReplaceable = (this.weatherType === WeatherType.HEAVY_RAIN || + override canApplyPostSummon(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { + const weatherReplaceable = + this.weatherType === WeatherType.HEAVY_RAIN || this.weatherType === WeatherType.HARSH_SUN || - this.weatherType === WeatherType.STRONG_WINDS) || !globalScene.arena.weather?.isImmutable(); + this.weatherType === WeatherType.STRONG_WINDS || + !globalScene.arena.weather?.isImmutable(); return weatherReplaceable && globalScene.arena.canSetWeather(this.weatherType); } - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { globalScene.arena.trySetWeather(this.weatherType, pokemon); } @@ -2485,11 +3484,11 @@ export class PostSummonTerrainChangeAbAttr extends PostSummonAbAttr { this.terrainType = terrainType; } - override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostSummon(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return globalScene.arena.canSetTerrain(this.terrainType); } - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { globalScene.arena.trySetTerrain(this.terrainType, false, pokemon); } @@ -2511,12 +3510,12 @@ export class PostSummonHealStatusAbAttr extends PostSummonRemoveEffectAbAttr { this.immuneEffects = immuneEffects; } - public override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + public override canApplyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { const status = pokemon.status?.effect; - return !isNullOrUndefined(status) && (this.immuneEffects.length < 1 || this.immuneEffects.includes(status)) + return !isNullOrUndefined(status) && (this.immuneEffects.length < 1 || this.immuneEffects.includes(status)); } - public override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + public override applyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void { const status = pokemon.status?.effect; if (!isNullOrUndefined(status)) { this.statusHealed = status; @@ -2536,17 +3535,17 @@ export class PostSummonHealStatusAbAttr extends PostSummonRemoveEffectAbAttr { export class PostSummonFormChangeAbAttr extends PostSummonAbAttr { private formFunc: (p: Pokemon) => number; - constructor(formFunc: ((p: Pokemon) => number)) { + constructor(formFunc: (p: Pokemon) => number) { super(true); this.formFunc = formFunc; } - override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return this.formFunc(pokemon) !== pokemon.formIndex; } - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger, false); } @@ -2558,7 +3557,7 @@ export class PostSummonCopyAbilityAbAttr extends PostSummonAbAttr { private target: Pokemon; private targetAbilityName: string; - override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { const targets = pokemon.getOpponents(); if (!targets.length) { return false; @@ -2566,7 +3565,7 @@ export class PostSummonCopyAbilityAbAttr extends PostSummonAbAttr { let target: Pokemon; if (targets.length > 1) { - globalScene.executeWithSeedOffset(() => target = randSeedItem(targets), globalScene.currentBattle.waveIndex); + globalScene.executeWithSeedOffset(() => (target = randSeedItem(targets)), globalScene.currentBattle.waveIndex); } else { target = targets[0]; } @@ -2584,7 +3583,7 @@ export class PostSummonCopyAbilityAbAttr extends PostSummonAbAttr { return true; } - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { pokemon.setTempAbility(this.target!.getAbility()); setAbilityRevealed(this.target!); @@ -2592,7 +3591,7 @@ export class PostSummonCopyAbilityAbAttr extends PostSummonAbAttr { } } - getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { + getTriggerMessage(pokemon: Pokemon, _abilityName: string, ..._args: any[]): string { return i18next.t("abilityTriggers:trace", { pokemonName: getPokemonNameWithAffix(pokemon), targetName: getPokemonNameWithAffix(this.target), @@ -2616,7 +3615,7 @@ export class PostSummonUserFieldRemoveStatusEffectAbAttr extends PostSummonAbAtt this.statusEffect = statusEffect; } - override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { const party = pokemon.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField(); return party.filter(p => p.isAllowedInBattle()).length > 0; } @@ -2625,17 +3624,19 @@ export class PostSummonUserFieldRemoveStatusEffectAbAttr extends PostSummonAbAtt * Removes supplied status effect from the user's field when user of the ability is summoned. * * @param pokemon - The Pokémon that triggered the ability. - * @param passive - n/a - * @param args - n/a + * @param _passive - n/a + * @param _args - n/a */ - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { const party = pokemon.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField(); const allowedParty = party.filter(p => p.isAllowedInBattle()); if (!simulated) { for (const pokemon of allowedParty) { if (pokemon.status && this.statusEffect.includes(pokemon.status.effect)) { - globalScene.phaseManager.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); + globalScene.phaseManager.queueMessage( + getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon)), + ); pokemon.resetStatus(false); pokemon.updateInfo(); } @@ -2644,10 +3645,9 @@ export class PostSummonUserFieldRemoveStatusEffectAbAttr extends PostSummonAbAtt } } - /** Attempt to copy the stat changes on an ally pokemon */ export class PostSummonCopyAllyStatsAbAttr extends PostSummonAbAttr { - override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { if (!globalScene.currentBattle.double) { return false; } @@ -2656,7 +3656,7 @@ export class PostSummonCopyAllyStatsAbAttr extends PostSummonAbAttr { return !(isNullOrUndefined(ally) || ally.getStatStages().every(s => s === 0)); } - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { const ally = pokemon.getAlly(); if (!simulated && !isNullOrUndefined(ally)) { for (const s of BATTLE_STATS) { @@ -2666,7 +3666,7 @@ export class PostSummonCopyAllyStatsAbAttr extends PostSummonAbAttr { } } - getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { + getTriggerMessage(pokemon: Pokemon, _abilityName: string, ..._args: any[]): string { return i18next.t("abilityTriggers:costar", { pokemonName: getPokemonNameWithAffix(pokemon), allyName: getPokemonNameWithAffix(pokemon.getAlly()), @@ -2691,7 +3691,8 @@ export class PostSummonTransformAbAttr extends PostSummonAbAttr { if (targets[0].fusionSpecies) { target = targets[1]; return; - } else if (targets[1].fusionSpecies) { + } + if (targets[1].fusionSpecies) { target = targets[0]; return; } @@ -2706,7 +3707,7 @@ export class PostSummonTransformAbAttr extends PostSummonAbAttr { return target; } - override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): boolean { const targets = pokemon.getOpponents(); const target = this.getTarget(targets); @@ -2722,11 +3723,12 @@ export class PostSummonTransformAbAttr extends PostSummonAbAttr { return !(this.getTarget(targets).fusionSpecies || pokemon.fusionSpecies); } - override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void { const target = this.getTarget(pokemon.getOpponents()); - globalScene.phaseManager.unshiftPhase(new PokemonTransformPhase(pokemon.getBattlerIndex(), target.getBattlerIndex(), true)); - + globalScene.phaseManager.unshiftPhase( + new PokemonTransformPhase(pokemon.getBattlerIndex(), target.getBattlerIndex(), true), + ); } } @@ -2736,17 +3738,17 @@ export class PostSummonTransformAbAttr extends PostSummonAbAttr { * @extends PostSummonAbAttr */ export class PostSummonWeatherSuppressedFormChangeAbAttr extends PostSummonAbAttr { - override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostSummon(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return getPokemonWithWeatherBasedForms().length > 0; } /** * Triggers {@linkcode Arena.triggerWeatherBasedFormChangesToNormal | triggerWeatherBasedFormChangesToNormal} - * @param {Pokemon} pokemon the Pokemon with this ability - * @param passive n/a - * @param args n/a + * @param {Pokemon} _pokemon the Pokemon with this ability + * @param _passive n/a + * @param _args n/a */ - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(_pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { globalScene.arena.triggerWeatherBasedFormChangesToNormal(); } @@ -2767,9 +3769,11 @@ export class PostSummonFormChangeByWeatherAbAttr extends PostSummonAbAttr { this.ability = ability; } - override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - const isCastformWithForecast = (pokemon.species.speciesId === SpeciesId.CASTFORM && this.ability === AbilityId.FORECAST); - const isCherrimWithFlowerGift = (pokemon.species.speciesId === SpeciesId.CHERRIM && this.ability === AbilityId.FLOWER_GIFT); + override canApplyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { + const isCastformWithForecast = + pokemon.species.speciesId === SpeciesId.CASTFORM && this.ability === AbilityId.FORECAST; + const isCherrimWithFlowerGift = + pokemon.species.speciesId === SpeciesId.CHERRIM && this.ability === AbilityId.FLOWER_GIFT; return isCastformWithForecast || isCherrimWithFlowerGift; } @@ -2779,10 +3783,10 @@ export class PostSummonFormChangeByWeatherAbAttr extends PostSummonAbAttr { * {@linkcode SpeciesFormChange.SpeciesFormChangeWeatherTrigger | SpeciesFormChangeRevertWeatherFormTrigger} if it * is the specific Pokemon and ability * @param {Pokemon} pokemon the Pokemon with this ability - * @param passive n/a - * @param args n/a + * @param _passive n/a + * @param _args n/a */ - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeWeatherTrigger); globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeRevertWeatherFormTrigger); @@ -2801,17 +3805,21 @@ export class CommanderAbAttr extends AbAttr { super(true); } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { // If the ally Dondozo is fainted or was previously "commanded" by // another Pokemon, this effect cannot apply. // TODO: Should this work with X + Dondozo fusions? const ally = pokemon.getAlly(); - return globalScene.currentBattle?.double && !isNullOrUndefined(ally) && ally.species.speciesId === SpeciesId.DONDOZO - && !(ally.isFainted() || ally.getTag(BattlerTagType.COMMANDED)); + return ( + globalScene.currentBattle?.double && + !isNullOrUndefined(ally) && + ally.species.speciesId === SpeciesId.DONDOZO && + !(ally.isFainted() || ally.getTag(BattlerTagType.COMMANDED)) + ); } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: null, args: any[]): void { + override apply(pokemon: Pokemon, _passive: boolean, simulated: boolean, _cancelled: null, _args: any[]): void { if (!simulated) { // Lapse the source's semi-invulnerable tags (to avoid visual inconsistencies) pokemon.lapseTags(BattlerTagLapseType.MOVE_EFFECT); @@ -2820,21 +3828,21 @@ export class CommanderAbAttr extends AbAttr { // Apply boosts from this effect to the ally Dondozo pokemon.getAlly()?.addTag(BattlerTagType.COMMANDED, 0, MoveId.NONE, pokemon.id); // Cancel the source Pokemon's next move (if a move is queued) - globalScene.phaseManager.tryRemovePhase((phase) => phase.is("MovePhase") && phase.pokemon === pokemon); + globalScene.phaseManager.tryRemovePhase(phase => phase.is("MovePhase") && phase.pokemon === pokemon); } } } export class PreSwitchOutAbAttr extends AbAttr { - constructor(showAbility: boolean = true) { + constructor(showAbility = true) { super(showAbility); } - canApplyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + canApplyPreSwitchOut(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return true; } - applyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void {} + applyPreSwitchOut(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void {} } export class PreSwitchOutResetStatusAbAttr extends PreSwitchOutAbAttr { @@ -2842,11 +3850,11 @@ export class PreSwitchOutResetStatusAbAttr extends PreSwitchOutAbAttr { super(false); } - override canApplyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPreSwitchOut(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return !isNullOrUndefined(pokemon.status); } - override applyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPreSwitchOut(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { pokemon.resetStatus(); pokemon.updateInfo(); @@ -2860,11 +3868,11 @@ export class PreSwitchOutResetStatusAbAttr extends PreSwitchOutAbAttr { export class PreSwitchOutClearWeatherAbAttr extends PreSwitchOutAbAttr { /** * @param pokemon The {@linkcode Pokemon} with the ability - * @param passive N/A - * @param args N/A + * @param _passive N/A + * @param _args N/A * @returns {boolean} Returns true if the weather clears, otherwise false. */ - override applyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override applyPreSwitchOut(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): boolean { const weatherType = globalScene.arena.weather?.weatherType; let turnOffWeather = false; @@ -2875,8 +3883,8 @@ export class PreSwitchOutClearWeatherAbAttr extends PreSwitchOutAbAttr { pokemon.hasAbility(AbilityId.DESOLATE_LAND) && globalScene .getField(true) - .filter((p) => p !== pokemon) - .filter((p) => p.hasAbility(AbilityId.DESOLATE_LAND)).length === 0 + .filter(p => p !== pokemon) + .filter(p => p.hasAbility(AbilityId.DESOLATE_LAND)).length === 0 ) { turnOffWeather = true; } @@ -2886,8 +3894,8 @@ export class PreSwitchOutClearWeatherAbAttr extends PreSwitchOutAbAttr { pokemon.hasAbility(AbilityId.PRIMORDIAL_SEA) && globalScene .getField(true) - .filter((p) => p !== pokemon) - .filter((p) => p.hasAbility(AbilityId.PRIMORDIAL_SEA)).length === 0 + .filter(p => p !== pokemon) + .filter(p => p.hasAbility(AbilityId.PRIMORDIAL_SEA)).length === 0 ) { turnOffWeather = true; } @@ -2897,8 +3905,8 @@ export class PreSwitchOutClearWeatherAbAttr extends PreSwitchOutAbAttr { pokemon.hasAbility(AbilityId.DELTA_STREAM) && globalScene .getField(true) - .filter((p) => p !== pokemon) - .filter((p) => p.hasAbility(AbilityId.DELTA_STREAM)).length === 0 + .filter(p => p !== pokemon) + .filter(p => p.hasAbility(AbilityId.DELTA_STREAM)).length === 0 ) { turnOffWeather = true; } @@ -2919,11 +3927,11 @@ export class PreSwitchOutClearWeatherAbAttr extends PreSwitchOutAbAttr { } export class PreSwitchOutHealAbAttr extends PreSwitchOutAbAttr { - override canApplyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPreSwitchOut(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return !pokemon.isFullHp(); } - override applyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPreSwitchOut(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { const healAmount = toDmgValue(pokemon.getMaxHp() * 0.33); pokemon.heal(healAmount); @@ -2940,62 +3948,75 @@ export class PreSwitchOutHealAbAttr extends PreSwitchOutAbAttr { export class PreSwitchOutFormChangeAbAttr extends PreSwitchOutAbAttr { private formFunc: (p: Pokemon) => number; - constructor(formFunc: ((p: Pokemon) => number)) { + constructor(formFunc: (p: Pokemon) => number) { super(); this.formFunc = formFunc; } - override canApplyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPreSwitchOut(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return this.formFunc(pokemon) !== pokemon.formIndex; } /** * On switch out, trigger the form change to the one defined in the ability * @param pokemon The pokemon switching out and changing form {@linkcode Pokemon} - * @param passive N/A - * @param args N/A + * @param _passive N/A + * @param _args N/A */ - override applyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPreSwitchOut(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger, false); } } - } export class PreLeaveFieldAbAttr extends AbAttr { - canApplyPreLeaveField(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + canApplyPreLeaveField(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return true; } - applyPreLeaveField(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void {} + applyPreLeaveField(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void {} } /** * Clears Desolate Land/Primordial Sea/Delta Stream upon the Pokemon switching out. */ export class PreLeaveFieldClearWeatherAbAttr extends PreLeaveFieldAbAttr { - - override canApplyPreLeaveField(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPreLeaveField(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { const weatherType = globalScene.arena.weather?.weatherType; // Clear weather only if user's ability matches the weather and no other pokemon has the ability. switch (weatherType) { - case (WeatherType.HARSH_SUN): - if (pokemon.hasAbility(AbilityId.DESOLATE_LAND) - && globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(AbilityId.DESOLATE_LAND)).length === 0) { + case WeatherType.HARSH_SUN: + if ( + pokemon.hasAbility(AbilityId.DESOLATE_LAND) && + globalScene + .getField(true) + .filter(p => p !== pokemon) + .filter(p => p.hasAbility(AbilityId.DESOLATE_LAND)).length === 0 + ) { return true; } break; - case (WeatherType.HEAVY_RAIN): - if (pokemon.hasAbility(AbilityId.PRIMORDIAL_SEA) - && globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(AbilityId.PRIMORDIAL_SEA)).length === 0) { + case WeatherType.HEAVY_RAIN: + if ( + pokemon.hasAbility(AbilityId.PRIMORDIAL_SEA) && + globalScene + .getField(true) + .filter(p => p !== pokemon) + .filter(p => p.hasAbility(AbilityId.PRIMORDIAL_SEA)).length === 0 + ) { return true; } break; - case (WeatherType.STRONG_WINDS): - if (pokemon.hasAbility(AbilityId.DELTA_STREAM) - && globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(AbilityId.DELTA_STREAM)).length === 0) { + case WeatherType.STRONG_WINDS: + if ( + pokemon.hasAbility(AbilityId.DELTA_STREAM) && + globalScene + .getField(true) + .filter(p => p !== pokemon) + .filter(p => p.hasAbility(AbilityId.DELTA_STREAM)).length === 0 + ) { return true; } break; @@ -3004,11 +4025,11 @@ export class PreLeaveFieldClearWeatherAbAttr extends PreLeaveFieldAbAttr { } /** - * @param pokemon The {@linkcode Pokemon} with the ability - * @param passive N/A - * @param args N/A + * @param _pokemon The {@linkcode Pokemon} with the ability + * @param _passive N/A + * @param _args N/A */ - override applyPreLeaveField(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPreLeaveField(_pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { globalScene.arena.trySetWeather(WeatherType.NONE); } @@ -3023,11 +4044,16 @@ export class PreLeaveFieldRemoveSuppressAbilitiesSourceAbAttr extends PreLeaveFi super(false); } - public override canApplyPreLeaveField(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + public override canApplyPreLeaveField( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _args: any[], + ): boolean { return !!globalScene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS); } - public override applyPreLeaveField(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + public override applyPreLeaveField(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void { const suppressTag = globalScene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS) as SuppressAbilitiesTag; suppressTag.onSourceLeave(globalScene.arena); } @@ -3035,22 +4061,23 @@ export class PreLeaveFieldRemoveSuppressAbilitiesSourceAbAttr extends PreLeaveFi export class PreStatStageChangeAbAttr extends AbAttr { canApplyPreStatStageChange( - pokemon: Pokemon | null, - passive: boolean, - simulated: boolean, - stat: BattleStat, - cancelled: BooleanHolder, - args: any[]): boolean { + _pokemon: Pokemon | null, + _passive: boolean, + _simulated: boolean, + _stat: BattleStat, + _cancelled: BooleanHolder, + _args: any[], + ): boolean { return true; } applyPreStatStageChange( - pokemon: Pokemon | null, - passive: boolean, - simulated: boolean, - stat: BattleStat, - cancelled: BooleanHolder, - args: any[], + _pokemon: Pokemon | null, + _passive: boolean, + _simulated: boolean, + _stat: BattleStat, + _cancelled: BooleanHolder, + _args: any[], ): void {} } @@ -3060,7 +4087,7 @@ export class PreStatStageChangeAbAttr extends AbAttr { */ export class ReflectStatStageChangeAbAttr extends PreStatStageChangeAbAttr { /** {@linkcode BattleStat} to reflect */ - private reflectedStat? : BattleStat; + private reflectedStat?: BattleStat; /** * Apply the {@linkcode ReflectStatStageChangeAbAttr} to an interaction @@ -3071,12 +4098,21 @@ export class ReflectStatStageChangeAbAttr extends PreStatStageChangeAbAttr { * @param cancelled The {@linkcode BooleanHolder} that will be set to true due to reflection * @param args */ - override applyPreStatStageChange(_pokemon: Pokemon, _passive: boolean, simulated: boolean, stat: BattleStat, cancelled: BooleanHolder, args: any[]): void { + override applyPreStatStageChange( + _pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + stat: BattleStat, + cancelled: BooleanHolder, + args: any[], + ): void { const attacker: Pokemon = args[0]; const stages = args[1]; this.reflectedStat = stat; if (!simulated) { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(attacker.getBattlerIndex(), false, [ stat ], stages, true, false, true, null, true)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(attacker.getBattlerIndex(), false, [stat], stages, true, false, true, null, true), + ); } cancelled.value = true; } @@ -3085,7 +4121,7 @@ export class ReflectStatStageChangeAbAttr extends PreStatStageChangeAbAttr { return i18next.t("abilityTriggers:protectStat", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName, - statName: this.reflectedStat ? i18next.t(getStatKey(this.reflectedStat)) : i18next.t("battle:stats") + statName: this.reflectedStat ? i18next.t(getStatKey(this.reflectedStat)) : i18next.t("battle:stats"), }); } } @@ -3103,7 +4139,14 @@ export class ProtectStatAbAttr extends PreStatStageChangeAbAttr { this.protectedStat = protectedStat; } - override canApplyPreStatStageChange(pokemon: Pokemon | null, passive: boolean, simulated: boolean, stat: BattleStat, cancelled: BooleanHolder, args: any[]): boolean { + override canApplyPreStatStageChange( + _pokemon: Pokemon | null, + _passive: boolean, + _simulated: boolean, + stat: BattleStat, + _cancelled: BooleanHolder, + _args: any[], + ): boolean { return isNullOrUndefined(this.protectedStat) || stat === this.protectedStat; } @@ -3112,11 +4155,18 @@ export class ProtectStatAbAttr extends PreStatStageChangeAbAttr { * @param _pokemon * @param _passive * @param simulated - * @param stat the {@linkcode BattleStat} being affected + * @param _stat the {@linkcode BattleStat} being affected * @param cancelled The {@linkcode BooleanHolder} that will be set to true if the stat is protected * @param _args */ - override applyPreStatStageChange(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, stat: BattleStat, cancelled: BooleanHolder, _args: any[]): void { + override applyPreStatStageChange( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _stat: BattleStat, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } @@ -3124,7 +4174,7 @@ export class ProtectStatAbAttr extends PreStatStageChangeAbAttr { return i18next.t("abilityTriggers:protectStat", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName, - statName: this.protectedStat ? i18next.t(getStatKey(this.protectedStat)) : i18next.t("battle:stats") + statName: this.protectedStat ? i18next.t(getStatKey(this.protectedStat)) : i18next.t("battle:stats"), }); } } @@ -3142,26 +4192,45 @@ export class ConfusionOnStatusEffectAbAttr extends PostAttackAbAttr { constructor(...effects: StatusEffect[]) { /** This effect does not require a damaging move */ - super((user, target, move) => true); + super((_user, _target, _move) => true); this.effects = effects; } - override canApplyPostAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean { - return super.canApplyPostAttack(pokemon, passive, simulated, defender, move, hitResult, args) - && this.effects.indexOf(args[0]) > -1 && !defender.isFainted() && defender.canAddTag(BattlerTagType.CONFUSED); + override canApplyPostAttack( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + defender: Pokemon, + move: Move, + hitResult: HitResult | null, + args: any[], + ): boolean { + return ( + super.canApplyPostAttack(pokemon, passive, simulated, defender, move, hitResult, args) && + this.effects.indexOf(args[0]) > -1 && + !defender.isFainted() && + defender.canAddTag(BattlerTagType.CONFUSED) + ); } - /** * Applies confusion to the target pokemon. * @param pokemon {@link Pokemon} attacking - * @param passive N/A + * @param _passive N/A * @param defender {@link Pokemon} defending * @param move {@link Move} used to apply status effect and confusion - * @param hitResult N/A - * @param args [0] {@linkcode StatusEffect} applied by move + * @param _hitResult N/A + * @param _args [0] {@linkcode StatusEffect} applied by move */ - override applyPostAttack(pokemon: Pokemon, passive: boolean, simulated: boolean, defender: Pokemon, move: Move, hitResult: HitResult, args: any[]): void { + override applyPostAttack( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + defender: Pokemon, + move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!simulated) { defender.addTag(BattlerTagType.CONFUSED, pokemon.randBattleSeedIntRange(2, 5), move.id, defender.id); } @@ -3171,22 +4240,23 @@ export class ConfusionOnStatusEffectAbAttr extends PostAttackAbAttr { export class PreSetStatusAbAttr extends AbAttr { /** Return whether the ability attribute can be applied */ canApplyPreSetStatus( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - effect: StatusEffect | undefined, - cancelled: BooleanHolder, - args: any[]): boolean { + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _effect: StatusEffect | undefined, + _cancelled: BooleanHolder, + _args: any[], + ): boolean { return true; } applyPreSetStatus( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - effect: StatusEffect | undefined, - cancelled: BooleanHolder, - args: any[], + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _effect: StatusEffect | undefined, + _cancelled: BooleanHolder, + _args: any[], ): void {} } @@ -3206,35 +4276,49 @@ export class PreSetStatusEffectImmunityAbAttr extends PreSetStatusAbAttr { this.immuneEffects = immuneEffects; } - override canApplyPreSetStatus(pokemon: Pokemon, passive: boolean, simulated: boolean, effect: StatusEffect, cancelled: BooleanHolder, args: any[]): boolean { - return effect !== StatusEffect.FAINT && this.immuneEffects.length < 1 || this.immuneEffects.includes(effect); + override canApplyPreSetStatus( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + effect: StatusEffect, + _cancelled: BooleanHolder, + _args: any[], + ): boolean { + return (effect !== StatusEffect.FAINT && this.immuneEffects.length < 1) || this.immuneEffects.includes(effect); } /** * Applies immunity to supplied status effects. * - * @param pokemon - The Pokémon to which the status is being applied. - * @param passive - n/a + * @param _pokemon - The Pokémon to which the status is being applied. + * @param _passive - n/a * @param effect - The status effect being applied. * @param cancelled - A holder for a boolean value indicating if the status application was cancelled. - * @param args - n/a + * @param _args - n/a */ - override applyPreSetStatus(pokemon: Pokemon, passive: boolean, simulated: boolean, effect: StatusEffect, cancelled: BooleanHolder, args: any[]): void { + override applyPreSetStatus( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + effect: StatusEffect, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; this.lastEffect = effect; } - getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { - return this.immuneEffects.length ? - i18next.t("abilityTriggers:statusEffectImmunityWithName", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - abilityName, - statusEffectName: getStatusEffectDescriptor(this.lastEffect) - }) : - i18next.t("abilityTriggers:statusEffectImmunity", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - abilityName - }); + getTriggerMessage(pokemon: Pokemon, abilityName: string, ..._args: any[]): string { + return this.immuneEffects.length + ? i18next.t("abilityTriggers:statusEffectImmunityWithName", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + abilityName, + statusEffectName: getStatusEffectDescriptor(this.lastEffect), + }) + : i18next.t("abilityTriggers:statusEffectImmunity", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + abilityName, + }); } } @@ -3242,13 +4326,13 @@ export class PreSetStatusEffectImmunityAbAttr extends PreSetStatusAbAttr { * Provides immunity to status effects to the user. * @extends PreSetStatusEffectImmunityAbAttr */ -export class StatusEffectImmunityAbAttr extends PreSetStatusEffectImmunityAbAttr { } +export class StatusEffectImmunityAbAttr extends PreSetStatusEffectImmunityAbAttr {} /** * Provides immunity to status effects to the user's field. * @extends PreSetStatusEffectImmunityAbAttr */ -export class UserFieldStatusEffectImmunityAbAttr extends PreSetStatusEffectImmunityAbAttr { } +export class UserFieldStatusEffectImmunityAbAttr extends PreSetStatusEffectImmunityAbAttr {} /** * Conditionally provides immunity to status effects to the user's field. @@ -3267,16 +4351,27 @@ export class ConditionalUserFieldStatusEffectImmunityAbAttr extends UserFieldSta /** * Evaluate the condition to determine if the {@linkcode ConditionalUserFieldStatusEffectImmunityAbAttr} can be applied. - * @param pokemon The pokemon with the ability - * @param passive unused - * @param simulated Whether the ability is being simulated + * @param _pokemon The pokemon with the ability + * @param _passive unused + * @param _simulated Whether the ability is being simulated * @param effect The status effect being applied * @param cancelled Holds whether the status effect was cancelled by a prior effect * @param args `Args[0]` is the target of the status effect, `Args[1]` is the source. * @returns Whether the ability can be applied to cancel the status effect. */ - override canApplyPreSetStatus(pokemon: Pokemon, passive: boolean, simulated: boolean, effect: StatusEffect, cancelled: BooleanHolder, args: [Pokemon, Pokemon | null, ...any]): boolean { - return (!cancelled.value && effect !== StatusEffect.FAINT && this.immuneEffects.length < 1 || this.immuneEffects.includes(effect)) && this.condition(args[0], args[1]); + override canApplyPreSetStatus( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + effect: StatusEffect, + cancelled: BooleanHolder, + args: [Pokemon, Pokemon | null, ...any], + ): boolean { + return ( + ((!cancelled.value && effect !== StatusEffect.FAINT && this.immuneEffects.length < 1) || + this.immuneEffects.includes(effect)) && + this.condition(args[0], args[1]) + ); } constructor(condition: (target: Pokemon, source: Pokemon | null) => boolean, ...immuneEffects: StatusEffect[]) { @@ -3298,27 +4393,38 @@ export class ConditionalUserFieldProtectStatAbAttr extends PreStatStageChangeAbA /** If the method evaluates to true, the stat will be protected. */ protected condition: (target: Pokemon) => boolean; - constructor(condition: (target: Pokemon) => boolean, protectedStat?: BattleStat) { + constructor(condition: (target: Pokemon) => boolean, _protectedStat?: BattleStat) { super(); this.condition = condition; } /** * Determine whether the {@linkcode ConditionalUserFieldProtectStatAbAttr} can be applied. - * @param pokemon The pokemon with the ability - * @param passive unused - * @param simulated Unused + * @param _pokemon The pokemon with the ability + * @param _passive unused + * @param _simulated Unused * @param stat The stat being affected * @param cancelled Holds whether the stat change was already prevented. * @param args Args[0] is the target pokemon of the stat change. * @returns */ - override canApplyPreStatStageChange(pokemon: Pokemon, passive: boolean, simulated: boolean, stat: BattleStat, cancelled: BooleanHolder, args: [Pokemon, ...any]): boolean { + override canApplyPreStatStageChange( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + stat: BattleStat, + cancelled: BooleanHolder, + args: [Pokemon, ...any], + ): boolean { const target = args[0]; if (!target) { return false; } - return !cancelled.value && (isNullOrUndefined(this.protectedStat) || stat === this.protectedStat) && this.condition(target); + return ( + !cancelled.value && + (isNullOrUndefined(this.protectedStat) || stat === this.protectedStat) && + this.condition(target) + ); } /** @@ -3330,31 +4436,37 @@ export class ConditionalUserFieldProtectStatAbAttr extends PreStatStageChangeAbA * @param cancelled Will be set to true if the stat change is prevented * @param _args unused */ - override applyPreStatStageChange(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _stat: BattleStat, cancelled: BooleanHolder, _args: any[]): void { + override applyPreStatStageChange( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _stat: BattleStat, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } } - export class PreApplyBattlerTagAbAttr extends AbAttr { canApplyPreApplyBattlerTag( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - tag: BattlerTag, - cancelled: BooleanHolder, - args: any[], + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _tag: BattlerTag, + _cancelled: BooleanHolder, + _args: any[], ): boolean { return true; } applyPreApplyBattlerTag( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - tag: BattlerTag, - cancelled: BooleanHolder, - args: any[], + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _tag: BattlerTag, + _cancelled: BooleanHolder, + _args: any[], ): void {} } @@ -3368,24 +4480,38 @@ export class PreApplyBattlerTagImmunityAbAttr extends PreApplyBattlerTagAbAttr { constructor(immuneTagTypes: BattlerTagType | BattlerTagType[]) { super(true); - this.immuneTagTypes = Array.isArray(immuneTagTypes) ? immuneTagTypes : [ immuneTagTypes ]; + this.immuneTagTypes = Array.isArray(immuneTagTypes) ? immuneTagTypes : [immuneTagTypes]; } - override canApplyPreApplyBattlerTag(pokemon: Pokemon, passive: boolean, simulated: boolean, tag: BattlerTag, cancelled: BooleanHolder, args: any[]): boolean { + override canApplyPreApplyBattlerTag( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + tag: BattlerTag, + cancelled: BooleanHolder, + _args: any[], + ): boolean { this.battlerTag = tag; return !cancelled.value && this.immuneTagTypes.includes(tag.tagType); } - override applyPreApplyBattlerTag(pokemon: Pokemon, passive: boolean, simulated: boolean, tag: BattlerTag, cancelled: BooleanHolder, args: any[]): void { + override applyPreApplyBattlerTag( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _tag: BattlerTag, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } - getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { + getTriggerMessage(pokemon: Pokemon, abilityName: string, ..._args: any[]): string { return i18next.t("abilityTriggers:battlerTagImmunity", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName, - battlerTagName: this.battlerTag.getDescriptor() + battlerTagName: this.battlerTag.getDescriptor(), }); } } @@ -3394,13 +4520,13 @@ export class PreApplyBattlerTagImmunityAbAttr extends PreApplyBattlerTagAbAttr { * Provides immunity to BattlerTags {@linkcode BattlerTag} to the user. * @extends PreApplyBattlerTagImmunityAbAttr */ -export class BattlerTagImmunityAbAttr extends PreApplyBattlerTagImmunityAbAttr { } +export class BattlerTagImmunityAbAttr extends PreApplyBattlerTagImmunityAbAttr {} /** * Provides immunity to BattlerTags {@linkcode BattlerTag} to the user's field. * @extends PreApplyBattlerTagImmunityAbAttr */ -export class UserFieldBattlerTagImmunityAbAttr extends PreApplyBattlerTagImmunityAbAttr { } +export class UserFieldBattlerTagImmunityAbAttr extends PreApplyBattlerTagImmunityAbAttr {} export class ConditionalUserFieldBattlerTagImmunityAbAttr extends UserFieldBattlerTagImmunityAbAttr { private condition: (target: Pokemon) => boolean; @@ -3415,8 +4541,17 @@ export class ConditionalUserFieldBattlerTagImmunityAbAttr extends UserFieldBattl * @param args Args[0] is the target that the tag is attempting to be applied to * @returns Whether the ability can be used to cancel the battler tag */ - override canApplyPreApplyBattlerTag(pokemon: Pokemon, passive: boolean, simulated: boolean, tag: BattlerTag, cancelled: BooleanHolder, args: [Pokemon, ...any]): boolean { - return super.canApplyPreApplyBattlerTag(pokemon, passive, simulated, tag, cancelled, args) && this.condition(args[0]); + override canApplyPreApplyBattlerTag( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + tag: BattlerTag, + cancelled: BooleanHolder, + args: [Pokemon, ...any], + ): boolean { + return ( + super.canApplyPreApplyBattlerTag(pokemon, passive, simulated, tag, cancelled, args) && this.condition(args[0]) + ); } constructor(condition: (target: Pokemon) => boolean, immuneTagTypes: BattlerTagType | BattlerTagType[]) { @@ -3435,8 +4570,14 @@ export class BlockCritAbAttr extends AbAttr { * Apply the block crit ability by setting the value in the provided boolean holder to false * @param args - [0] is a boolean holder representing whether the attack can crit */ - override apply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _cancelled: BooleanHolder, args: [BooleanHolder, ...any]): void { - (args[0]).value = false; + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: [BooleanHolder, ...any], + ): void { + args[0].value = false; } } @@ -3448,13 +4589,19 @@ export class BonusCritAbAttr extends AbAttr { /** * Apply the bonus crit ability by increasing the value in the provided number holder by 1 * - * @param pokemon The pokemon with the BonusCrit ability (unused) - * @param passive Unused - * @param simulated Unused - * @param cancelled Unused + * @param _pokemon The pokemon with the BonusCrit ability (unused) + * @param _passive Unused + * @param _simulated Unused + * @param _cancelled Unused * @param args Args[0] is a number holder containing the crit stage. */ - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: [NumberHolder, ...any]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: [NumberHolder, ...any], + ): void { (args[0] as NumberHolder).value += 1; } } @@ -3468,12 +4615,18 @@ export class MultCritAbAttr extends AbAttr { this.multAmount = multAmount; } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, args: any[]): boolean { const critMult = args[0] as NumberHolder; return critMult.value > 1; } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { const critMult = args[0] as NumberHolder; critMult.value *= this.multAmount; } @@ -3487,25 +4640,31 @@ export class MultCritAbAttr extends AbAttr { export class ConditionalCritAbAttr extends AbAttr { private condition: PokemonAttackCondition; - constructor(condition: PokemonAttackCondition, checkUser?: boolean) { + constructor(condition: PokemonAttackCondition, _checkUser?: boolean) { super(false); this.condition = condition; } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - const target = (args[1] as Pokemon); - const move = (args[2] as Move); + override canApply(pokemon: Pokemon, _passive: boolean, _simulated: boolean, args: any[]): boolean { + const target = args[1] as Pokemon; + const move = args[2] as Move; return this.condition(pokemon, target, move); } /** - * @param pokemon {@linkcode Pokemon} user. + * @param _pokemon {@linkcode Pokemon} user. * @param args [0] {@linkcode BooleanHolder} If true critical hit is guaranteed. * [1] {@linkcode Pokemon} Target. * [2] {@linkcode Move} used by ability user. */ - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[0] as BooleanHolder).value = true; } } @@ -3515,7 +4674,13 @@ export class BlockNonDirectDamageAbAttr extends AbAttr { super(false); } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } } @@ -3535,23 +4700,35 @@ export class BlockStatusDamageAbAttr extends AbAttr { this.effects = effects; } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return !!pokemon.status?.effect && this.effects.includes(pokemon.status.effect); } /** - * @param {Pokemon} pokemon The pokemon with the ability - * @param {boolean} passive N/A + * @param {Pokemon} _pokemon The pokemon with the ability + * @param {boolean} _passive N/A * @param {BooleanHolder} cancelled Whether to cancel the status damage - * @param {any[]} args N/A + * @param {any[]} _args N/A */ - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } } export class BlockOneHitKOAbAttr extends AbAttr { - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } } @@ -3576,39 +4753,46 @@ export class ChangeMovePriorityAbAttr extends AbAttr { this.changeAmount = changeAmount; } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(pokemon: Pokemon, _passive: boolean, _simulated: boolean, args: any[]): boolean { return this.moveFunc(pokemon, args[0] as Move); } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[1] as NumberHolder).value += this.changeAmount; } } -export class IgnoreContactAbAttr extends AbAttr { } +export class IgnoreContactAbAttr extends AbAttr {} export class PreWeatherEffectAbAttr extends AbAttr { canApplyPreWeatherEffect( - pokemon: Pokemon, - passive: Boolean, - simulated: boolean, - weather: Weather | null, - cancelled: BooleanHolder, - args: any[]): boolean { + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _weather: Weather | null, + _cancelled: BooleanHolder, + _args: any[], + ): boolean { return true; } applyPreWeatherEffect( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - weather: Weather | null, - cancelled: BooleanHolder, - args: any[], + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _weather: Weather | null, + _cancelled: BooleanHolder, + _args: any[], ): void {} } -export class PreWeatherDamageAbAttr extends PreWeatherEffectAbAttr { } +export class PreWeatherDamageAbAttr extends PreWeatherEffectAbAttr {} export class BlockWeatherDamageAttr extends PreWeatherDamageAbAttr { private weatherTypes: WeatherType[]; @@ -3619,11 +4803,25 @@ export class BlockWeatherDamageAttr extends PreWeatherDamageAbAttr { this.weatherTypes = weatherTypes; } - override canApplyPreWeatherEffect(pokemon: Pokemon, passive: Boolean, simulated: boolean, weather: Weather, cancelled: BooleanHolder, args: any[]): boolean { + override canApplyPreWeatherEffect( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + weather: Weather, + _cancelled: BooleanHolder, + _args: any[], + ): boolean { return !this.weatherTypes.length || this.weatherTypes.indexOf(weather?.weatherType) > -1; } - override applyPreWeatherEffect(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: Weather, cancelled: BooleanHolder, args: any[]): void { + override applyPreWeatherEffect( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _weather: Weather, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } } @@ -3637,11 +4835,25 @@ export class SuppressWeatherEffectAbAttr extends PreWeatherEffectAbAttr { this.affectsImmutable = !!affectsImmutable; } - override canApplyPreWeatherEffect(pokemon: Pokemon, passive: Boolean, simulated: boolean, weather: Weather, cancelled: BooleanHolder, args: any[]): boolean { + override canApplyPreWeatherEffect( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + weather: Weather, + _cancelled: BooleanHolder, + _args: any[], + ): boolean { return this.affectsImmutable || weather.isImmutable(); } - override applyPreWeatherEffect(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: Weather, cancelled: BooleanHolder, args: any[]): void { + override applyPreWeatherEffect( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _weather: Weather, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } } @@ -3665,7 +4877,8 @@ function getSheerForceHitDisableAbCondition(): AbAttrCondition { } /** `true` if the last move's chance is above 0 and the last attacker's ability is sheer force */ - const SheerForceAffected = allMoves[lastReceivedAttack.move].chance >= 0 && lastAttacker.hasAbility(AbilityId.SHEER_FORCE); + const SheerForceAffected = + allMoves[lastReceivedAttack.move].chance >= 0 && lastAttacker.hasAbility(AbilityId.SHEER_FORCE); return !SheerForceAffected; }; @@ -3693,7 +4906,10 @@ function getAnticipationCondition(): AbAttrCondition { continue; } // the move's base type (not accounting for variable type changes) is super effective - if (move.getMove() instanceof AttackMove && pokemon.getAttackTypeEffectiveness(move.getMove().type, opponent, true, undefined, move.getMove()) >= 2) { + if ( + move.getMove() instanceof AttackMove && + pokemon.getAttackTypeEffectiveness(move.getMove().type, opponent, true, undefined, move.getMove()) >= 2 + ) { return true; } // move is a OHKO @@ -3702,18 +4918,35 @@ function getAnticipationCondition(): AbAttrCondition { } // edge case for hidden power, type is computed if (move.getMove().id === MoveId.HIDDEN_POWER) { - const iv_val = Math.floor(((opponent.ivs[Stat.HP] & 1) - + (opponent.ivs[Stat.ATK] & 1) * 2 - + (opponent.ivs[Stat.DEF] & 1) * 4 - + (opponent.ivs[Stat.SPD] & 1) * 8 - + (opponent.ivs[Stat.SPATK] & 1) * 16 - + (opponent.ivs[Stat.SPDEF] & 1) * 32) * 15 / 63); + const iv_val = Math.floor( + (((opponent.ivs[Stat.HP] & 1) + + (opponent.ivs[Stat.ATK] & 1) * 2 + + (opponent.ivs[Stat.DEF] & 1) * 4 + + (opponent.ivs[Stat.SPD] & 1) * 8 + + (opponent.ivs[Stat.SPATK] & 1) * 16 + + (opponent.ivs[Stat.SPDEF] & 1) * 32) * + 15) / + 63, + ); const type = [ - PokemonType.FIGHTING, PokemonType.FLYING, PokemonType.POISON, PokemonType.GROUND, - PokemonType.ROCK, PokemonType.BUG, PokemonType.GHOST, PokemonType.STEEL, - PokemonType.FIRE, PokemonType.WATER, PokemonType.GRASS, PokemonType.ELECTRIC, - PokemonType.PSYCHIC, PokemonType.ICE, PokemonType.DRAGON, PokemonType.DARK ][iv_val]; + PokemonType.FIGHTING, + PokemonType.FLYING, + PokemonType.POISON, + PokemonType.GROUND, + PokemonType.ROCK, + PokemonType.BUG, + PokemonType.GHOST, + PokemonType.STEEL, + PokemonType.FIRE, + PokemonType.WATER, + PokemonType.GRASS, + PokemonType.ELECTRIC, + PokemonType.PSYCHIC, + PokemonType.ICE, + PokemonType.DRAGON, + PokemonType.DARK, + ][iv_val]; if (pokemon.getAttackTypeEffectiveness(type, opponent) >= 2) { return true; @@ -3743,7 +4976,7 @@ export class ForewarnAbAttr extends PostSummonAbAttr { super(true); } - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { let maxPowerSeen = 0; let maxMove = ""; let movePower = 0; @@ -3753,7 +4986,11 @@ export class ForewarnAbAttr extends PostSummonAbAttr { movePower = 1; } else if (move?.getMove().hasAttr(OneHitKOAttr)) { movePower = 150; - } else if (move?.getMove().id === MoveId.COUNTER || move?.getMove().id === MoveId.MIRROR_COAT || move?.getMove().id === MoveId.METAL_BURST) { + } else if ( + move?.getMove().id === MoveId.COUNTER || + move?.getMove().id === MoveId.MIRROR_COAT || + move?.getMove().id === MoveId.METAL_BURST + ) { movePower = 120; } else if (move?.getMove().power === -1) { movePower = 80; @@ -3768,7 +5005,12 @@ export class ForewarnAbAttr extends PostSummonAbAttr { } } if (!simulated) { - globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:forewarn", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: maxMove })); + globalScene.phaseManager.queueMessage( + i18next.t("abilityTriggers:forewarn", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + moveName: maxMove, + }), + ); } } } @@ -3778,10 +5020,16 @@ export class FriskAbAttr extends PostSummonAbAttr { super(true); } - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { for (const opponent of pokemon.getOpponents()) { - globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:frisk", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), opponentName: opponent.name, opponentAbilityName: opponent.getAbility().name })); + globalScene.phaseManager.queueMessage( + i18next.t("abilityTriggers:frisk", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + opponentName: opponent.name, + opponentAbilityName: opponent.getAbility().name, + }), + ); setAbilityRevealed(opponent); } } @@ -3789,11 +5037,23 @@ export class FriskAbAttr extends PostSummonAbAttr { } export class PostWeatherChangeAbAttr extends AbAttr { - canApplyPostWeatherChange(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: WeatherType, args: any[]): boolean { + canApplyPostWeatherChange( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _weather: WeatherType, + _args: any[], + ): boolean { return true; } - applyPostWeatherChange(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: WeatherType, args: any[]): void {} + applyPostWeatherChange( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _weather: WeatherType, + _args: any[], + ): void {} } /** @@ -3812,9 +5072,17 @@ export class PostWeatherChangeFormChangeAbAttr extends PostWeatherChangeAbAttr { this.formRevertingWeathers = formRevertingWeathers; } - override canApplyPostWeatherChange(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: WeatherType, args: any[]): boolean { - const isCastformWithForecast = (pokemon.species.speciesId === SpeciesId.CASTFORM && this.ability === AbilityId.FORECAST); - const isCherrimWithFlowerGift = (pokemon.species.speciesId === SpeciesId.CHERRIM && this.ability === AbilityId.FLOWER_GIFT); + override canApplyPostWeatherChange( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _weather: WeatherType, + _args: any[], + ): boolean { + const isCastformWithForecast = + pokemon.species.speciesId === SpeciesId.CASTFORM && this.ability === AbilityId.FORECAST; + const isCherrimWithFlowerGift = + pokemon.species.speciesId === SpeciesId.CHERRIM && this.ability === AbilityId.FLOWER_GIFT; return isCastformWithForecast || isCherrimWithFlowerGift; } @@ -3822,12 +5090,18 @@ export class PostWeatherChangeFormChangeAbAttr extends PostWeatherChangeAbAttr { /** * Calls {@linkcode Arena.triggerWeatherBasedFormChangesToNormal | triggerWeatherBasedFormChangesToNormal} when the * weather changed to form-reverting weather, otherwise calls {@linkcode Arena.triggerWeatherBasedFormChanges | triggerWeatherBasedFormChanges} - * @param {Pokemon} pokemon the Pokemon with this ability - * @param passive n/a - * @param weather n/a - * @param args n/a + * @param {Pokemon} _pokemon the Pokemon with this ability + * @param _passive n/a + * @param _weather n/a + * @param _args n/a */ - override applyPostWeatherChange(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: WeatherType, args: any[]): void { + override applyPostWeatherChange( + _pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _weather: WeatherType, + _args: any[], + ): void { if (simulated) { return; } @@ -3855,11 +5129,23 @@ export class PostWeatherChangeAddBattlerTagAttr extends PostWeatherChangeAbAttr this.weatherTypes = weatherTypes; } - override canApplyPostWeatherChange(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: WeatherType, args: any[]): boolean { + override canApplyPostWeatherChange( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + weather: WeatherType, + _args: any[], + ): boolean { return !!this.weatherTypes.find(w => weather === w) && pokemon.canAddTag(this.tagType); } - override applyPostWeatherChange(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: WeatherType, args: any[]): void { + override applyPostWeatherChange( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _weather: WeatherType, + _args: any[], + ): void { if (!simulated) { pokemon.addTag(this.tagType, this.turnCount); } @@ -3876,20 +5162,21 @@ export class PostWeatherLapseAbAttr extends AbAttr { } canApplyPostWeatherLapse( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - weather: Weather | null, - args: any[]): boolean { + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _weather: Weather | null, + _args: any[], + ): boolean { return true; } applyPostWeatherLapse( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - weather: Weather | null, - args: any[], + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _weather: Weather | null, + _args: any[], ): void {} getCondition(): AbAttrCondition { @@ -3906,15 +5193,36 @@ export class PostWeatherLapseHealAbAttr extends PostWeatherLapseAbAttr { this.healFactor = healFactor; } - override canApplyPostWeatherLapse(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: Weather | null, args: any[]): boolean { + override canApplyPostWeatherLapse( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _weather: Weather | null, + _args: any[], + ): boolean { return !pokemon.isFullHp(); } - override applyPostWeatherLapse(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: Weather, args: any[]): void { + override applyPostWeatherLapse( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + _weather: Weather, + _args: any[], + ): void { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; if (!simulated) { - globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() / (16 / this.healFactor)), i18next.t("abilityTriggers:postWeatherLapseHeal", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }), true)); + globalScene.phaseManager.unshiftPhase( + new PokemonHealPhase( + pokemon.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() / (16 / this.healFactor)), + i18next.t("abilityTriggers:postWeatherLapseHeal", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + abilityName, + }), + true, + ), + ); } } } @@ -3928,25 +5236,56 @@ export class PostWeatherLapseDamageAbAttr extends PostWeatherLapseAbAttr { this.damageFactor = damageFactor; } - override canApplyPostWeatherLapse(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: Weather | null, args: any[]): boolean { + override canApplyPostWeatherLapse( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _weather: Weather | null, + _args: any[], + ): boolean { return !pokemon.hasAbilityWithAttr(BlockNonDirectDamageAbAttr); } - override applyPostWeatherLapse(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: Weather, args: any[]): void { + override applyPostWeatherLapse( + pokemon: Pokemon, + passive: boolean, + simulated: boolean, + _weather: Weather, + _args: any[], + ): void { if (!simulated) { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:postWeatherLapseDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName })); - pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / (16 / this.damageFactor)), { result: HitResult.INDIRECT }); + globalScene.phaseManager.queueMessage( + i18next.t("abilityTriggers:postWeatherLapseDamage", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + abilityName, + }), + ); + pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / (16 / this.damageFactor)), { + result: HitResult.INDIRECT, + }); } } } export class PostTerrainChangeAbAttr extends AbAttr { - canApplyPostTerrainChange(pokemon: Pokemon, passive: boolean, simulated: boolean, terrain: TerrainType, args: any[]): boolean { + canApplyPostTerrainChange( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _terrain: TerrainType, + _args: any[], + ): boolean { return true; } - applyPostTerrainChange(pokemon: Pokemon, passive: boolean, simulated: boolean, terrain: TerrainType, args: any[]): void {} + applyPostTerrainChange( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _terrain: TerrainType, + _args: any[], + ): void {} } export class PostTerrainChangeAddBattlerTagAttr extends PostTerrainChangeAbAttr { @@ -3962,11 +5301,23 @@ export class PostTerrainChangeAddBattlerTagAttr extends PostTerrainChangeAbAttr this.terrainTypes = terrainTypes; } - override canApplyPostTerrainChange(pokemon: Pokemon, passive: boolean, simulated: boolean, terrain: TerrainType, args: any[]): boolean { + override canApplyPostTerrainChange( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + terrain: TerrainType, + _args: any[], + ): boolean { return !!this.terrainTypes.find(t => t === terrain) && pokemon.canAddTag(this.tagType); } - override applyPostTerrainChange(pokemon: Pokemon, passive: boolean, simulated: boolean, terrain: TerrainType, args: any[]): void { + override applyPostTerrainChange( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _terrain: TerrainType, + _args: any[], + ): void { if (!simulated) { pokemon.addTag(this.tagType, this.turnCount); } @@ -3974,18 +5325,18 @@ export class PostTerrainChangeAddBattlerTagAttr extends PostTerrainChangeAbAttr } function getTerrainCondition(...terrainTypes: TerrainType[]): AbAttrCondition { - return (pokemon: Pokemon) => { + return (_pokemon: Pokemon) => { const terrainType = globalScene.arena.terrain?.terrainType; return !!terrainType && terrainTypes.indexOf(terrainType) > -1; }; } export class PostTurnAbAttr extends AbAttr { - canApplyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + canApplyPostTurn(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return true; } - applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void {} + applyPostTurn(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void {} } /** @@ -4003,20 +5354,26 @@ export class PostTurnStatusHealAbAttr extends PostTurnAbAttr { this.effects = effects; } - override canApplyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostTurn(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return !isNullOrUndefined(pokemon.status) && this.effects.includes(pokemon.status.effect) && !pokemon.isFullHp(); } /** * @param {Pokemon} pokemon The pokemon with the ability that will receive the healing * @param {Boolean} passive N/A - * @param {any[]} args N/A + * @param {any[]} _args N/A */ - override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() / 8), i18next.t("abilityTriggers:poisonHeal", { pokemonName: getPokemonNameWithAffix(pokemon), abilityName }), true)); + globalScene.phaseManager.unshiftPhase( + new PokemonHealPhase( + pokemon.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() / 8), + i18next.t("abilityTriggers:poisonHeal", { pokemonName: getPokemonNameWithAffix(pokemon), abilityName }), + true, + ), + ); } } } @@ -4034,7 +5391,7 @@ export class PostTurnResetStatusAbAttr extends PostTurnAbAttr { this.allyTarget = allyTarget; } - override canApplyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostTurn(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { if (this.allyTarget) { this.target = pokemon.getAlly(); } else { @@ -4045,9 +5402,11 @@ export class PostTurnResetStatusAbAttr extends PostTurnAbAttr { return !!effect && effect !== StatusEffect.FAINT; } - override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostTurn(_pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated && this.target?.status) { - globalScene.phaseManager.queueMessage(getStatusEffectHealText(this.target.status?.effect, getPokemonNameWithAffix(this.target))); + globalScene.phaseManager.queueMessage( + getStatusEffectHealText(this.target.status?.effect, getPokemonNameWithAffix(this.target)), + ); this.target.resetStatus(false); this.target.updateInfo(); } @@ -4063,29 +5422,26 @@ export class PostTurnRestoreBerryAbAttr extends PostTurnAbAttr { * Array containing all {@linkcode BerryType | BerryTypes} that are under cap and able to be restored. * Stored inside the class for a minor performance boost */ - private berriesUnderCap: BerryType[] + private berriesUnderCap: BerryType[]; /** * @param procChance - function providing chance to restore an item * @see {@linkcode createEatenBerry()} */ - constructor( - private procChance: (pokemon: Pokemon) => number - ) { + constructor(private procChance: (pokemon: Pokemon) => number) { super(); } override canApplyPostTurn(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { // Ensure we have at least 1 recoverable berry (at least 1 berry in berriesEaten is not capped) const cappedBerries = new Set( - globalScene.getModifiers(BerryModifier, pokemon.isPlayer()).filter( - bm => bm.pokemonId === pokemon.id && bm.getCountUnderMax() < 1 - ).map(bm => bm.berryType) + globalScene + .getModifiers(BerryModifier, pokemon.isPlayer()) + .filter(bm => bm.pokemonId === pokemon.id && bm.getCountUnderMax() < 1) + .map(bm => bm.berryType), ); - this.berriesUnderCap = pokemon.battleData.berriesEaten.filter( - bt => !cappedBerries.has(bt) - ); + this.berriesUnderCap = pokemon.battleData.berriesEaten.filter(bt => !cappedBerries.has(bt)); if (!this.berriesUnderCap.length) { return false; @@ -4096,7 +5452,7 @@ export class PostTurnRestoreBerryAbAttr extends PostTurnAbAttr { return this.procChance(pokemon) >= pass; } - override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostTurn(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { this.createEatenBerry(pokemon); } @@ -4116,12 +5472,12 @@ export class PostTurnRestoreBerryAbAttr extends PostTurnAbAttr { // Add the randomly chosen berry or update the existing one const berryModifier = globalScene.findModifier( - (m) => m instanceof BerryModifier && m.berryType === chosenBerryType && m.pokemonId == pokemon.id, - pokemon.isPlayer() + m => m instanceof BerryModifier && m.berryType === chosenBerryType && m.pokemonId === pokemon.id, + pokemon.isPlayer(), ) as BerryModifier | undefined; if (berryModifier) { - berryModifier.stackCount++ + berryModifier.stackCount++; } else { const newBerry = new BerryModifier(chosenBerry, pokemon.id, chosenBerryType, 1); if (pokemon.isPlayer()) { @@ -4132,15 +5488,20 @@ export class PostTurnRestoreBerryAbAttr extends PostTurnAbAttr { } globalScene.updateModifiers(pokemon.isPlayer()); - globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:postTurnLootCreateEatenBerry", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), berryName: chosenBerry.name })); + globalScene.phaseManager.queueMessage( + i18next.t("abilityTriggers:postTurnLootCreateEatenBerry", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + berryName: chosenBerry.name, + }), + ); return true; } } /** - * Attribute to track and re-trigger last turn's berries at the end of the `BerryPhase`. - * Used by {@linkcode AbilityId.CUD_CHEW}. -*/ + * Attribute to track and re-trigger last turn's berries at the end of the `BerryPhase`. + * Used by {@linkcode AbilityId.CUD_CHEW}. + */ export class RepeatBerryNextTurnAbAttr extends PostTurnAbAttr { /** * @returns `true` if the pokemon ate anything last turn @@ -4161,7 +5522,13 @@ export class RepeatBerryNextTurnAbAttr extends PostTurnAbAttr { * @param _cancelled - N/A * @param _args - N/A */ - override apply(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _cancelled: BooleanHolder | null, _args: any[]): void { + override apply( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder | null, + _args: any[], + ): void { globalScene.phaseManager.unshiftPhase( new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.USE_ITEM), ); @@ -4181,7 +5548,7 @@ export class RepeatBerryNextTurnAbAttr extends PostTurnAbAttr { /** * @returns always `true` as we always want to move berries into summon data */ - override canApplyPostTurn(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { + override canApplyPostTurn(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { this.showAbility = false; // don't show popup for turn end berry moving (should ideally be hidden) return true; } @@ -4210,15 +5577,15 @@ export class MoodyAbAttr extends PostTurnAbAttr { /** * Randomly increases one stat stage by 2 and decreases a different stat stage by 1 * @param {Pokemon} pokemon Pokemon that has this ability - * @param passive N/A + * @param _passive N/A * @param simulated true if applying in a simulated call. - * @param args N/A + * @param _args N/A * * Any stat stages at +6 or -6 are excluded from being increased or decreased, respectively * If the pokemon already has all stat stages raised to 6, it will only decrease one stat stage by 1 * If the pokemon already has all stat stages lowered to -6, it will only increase one stat stage by 2 */ - override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostTurn(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { const canRaise = EFFECTIVE_STATS.filter(s => pokemon.getStatStage(s) < 6); let canLower = EFFECTIVE_STATS.filter(s => pokemon.getStatStage(s) > -6); @@ -4226,41 +5593,53 @@ export class MoodyAbAttr extends PostTurnAbAttr { if (canRaise.length > 0) { const raisedStat = canRaise[pokemon.randBattleSeedInt(canRaise.length)]; canLower = canRaise.filter(s => s !== raisedStat); - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ raisedStat ], 2)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), true, [raisedStat], 2), + ); } if (canLower.length > 0) { const loweredStat = canLower[pokemon.randBattleSeedInt(canLower.length)]; - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ loweredStat ], -1)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), true, [loweredStat], -1), + ); } } } } export class SpeedBoostAbAttr extends PostTurnAbAttr { - constructor() { super(true); } - override canApplyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostTurn(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): boolean { return simulated || (!pokemon.turnData.switchedInThisTurn && !pokemon.turnData.failedRunAway); } - override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ Stat.SPD ], 1)); + override applyPostTurn(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void { + globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.SPD], 1)); } } export class PostTurnHealAbAttr extends PostTurnAbAttr { - override canApplyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostTurn(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return !pokemon.isFullHp(); } - override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() / 16), i18next.t("abilityTriggers:postTurnHeal", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }), true)); + globalScene.phaseManager.unshiftPhase( + new PokemonHealPhase( + pokemon.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() / 16), + i18next.t("abilityTriggers:postTurnHeal", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + abilityName, + }), + true, + ), + ); } } } @@ -4268,79 +5647,91 @@ export class PostTurnHealAbAttr extends PostTurnAbAttr { export class PostTurnFormChangeAbAttr extends PostTurnAbAttr { private formFunc: (p: Pokemon) => number; - constructor(formFunc: ((p: Pokemon) => number)) { + constructor(formFunc: (p: Pokemon) => number) { super(true); this.formFunc = formFunc; } - override canApplyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostTurn(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return this.formFunc(pokemon) !== pokemon.formIndex; } - override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostTurn(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger, false); } } } - /** * Attribute used for abilities (Bad Dreams) that damages the opponents for being asleep */ export class PostTurnHurtIfSleepingAbAttr extends PostTurnAbAttr { - override canApplyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - return pokemon.getOpponents().some(opp => (opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(AbilityId.COMATOSE)) && !opp.hasAbilityWithAttr(BlockNonDirectDamageAbAttr) && !opp.switchOutStatus); + override canApplyPostTurn(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { + return pokemon + .getOpponents() + .some( + opp => + (opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(AbilityId.COMATOSE)) && + !opp.hasAbilityWithAttr(BlockNonDirectDamageAbAttr) && + !opp.switchOutStatus, + ); } /** * Deals damage to all sleeping opponents equal to 1/8 of their max hp (min 1) * @param pokemon {@linkcode Pokemon} with this ability - * @param passive N/A + * @param _passive N/A * @param simulated `true` if applying in a simulated call. - * @param args N/A + * @param _args N/A */ - override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostTurn(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { for (const opp of pokemon.getOpponents()) { - if ((opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(AbilityId.COMATOSE)) && !opp.hasAbilityWithAttr(BlockNonDirectDamageAbAttr) && !opp.switchOutStatus) { + if ( + (opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(AbilityId.COMATOSE)) && + !opp.hasAbilityWithAttr(BlockNonDirectDamageAbAttr) && + !opp.switchOutStatus + ) { if (!simulated) { opp.damageAndUpdate(toDmgValue(opp.getMaxHp() / 8), { result: HitResult.INDIRECT }); - globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:badDreams", { pokemonName: getPokemonNameWithAffix(opp) })); + globalScene.phaseManager.queueMessage( + i18next.t("abilityTriggers:badDreams", { pokemonName: getPokemonNameWithAffix(opp) }), + ); } } } } } - /** * Grabs the last failed Pokeball used * @extends PostTurnAbAttr * @see {@linkcode applyPostTurn} */ export class FetchBallAbAttr extends PostTurnAbAttr { - constructor() { - super(); - } - - override canApplyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostTurn(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): boolean { return !simulated && !isNullOrUndefined(globalScene.currentBattle.lastUsedPokeball) && !!pokemon.isPlayer; } /** * Adds the last used Pokeball back into the player's inventory * @param pokemon {@linkcode Pokemon} with this ability - * @param passive N/A - * @param args N/A + * @param _passive N/A + * @param _args N/A */ - override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostTurn(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void { const lastUsed = globalScene.currentBattle.lastUsedPokeball; globalScene.pokeballCounts[lastUsed!]++; globalScene.currentBattle.lastUsedPokeball = null; - globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:fetchBall", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), pokeballName: getPokeballName(lastUsed!) })); + globalScene.phaseManager.queueMessage( + i18next.t("abilityTriggers:fetchBall", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + pokeballName: getPokeballName(lastUsed!), + }), + ); } } -export class PostBiomeChangeAbAttr extends AbAttr { } +export class PostBiomeChangeAbAttr extends AbAttr {} export class PostBiomeChangeWeatherChangeAbAttr extends PostBiomeChangeAbAttr { private weatherType: WeatherType; @@ -4351,11 +5742,17 @@ export class PostBiomeChangeWeatherChangeAbAttr extends PostBiomeChangeAbAttr { this.weatherType = weatherType; } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - return ((globalScene.arena.weather?.isImmutable() ?? false) && globalScene.arena.canSetWeather(this.weatherType)); + override canApply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { + return (globalScene.arena.weather?.isImmutable() ?? false) && globalScene.arena.canSetWeather(this.weatherType); } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _cancelled: BooleanHolder, + _args: any[], + ): void { if (!simulated) { globalScene.arena.trySetWeather(this.weatherType, pokemon); } @@ -4371,11 +5768,17 @@ export class PostBiomeChangeTerrainChangeAbAttr extends PostBiomeChangeAbAttr { this.terrainType = terrainType; } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return globalScene.arena.canSetTerrain(this.terrainType); } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _cancelled: BooleanHolder, + _args: any[], + ): void { if (!simulated) { globalScene.arena.trySetTerrain(this.terrainType, false, pokemon); } @@ -4388,22 +5791,23 @@ export class PostBiomeChangeTerrainChangeAbAttr extends PostBiomeChangeAbAttr { */ export class PostMoveUsedAbAttr extends AbAttr { canApplyPostMoveUsed( - pokemon: Pokemon, - move: PokemonMove, - source: Pokemon, - targets: BattlerIndex[], - simulated: boolean, - args: any[]): boolean { + _pokemon: Pokemon, + _move: PokemonMove, + _source: Pokemon, + _targets: BattlerIndex[], + _simulated: boolean, + _args: any[], + ): boolean { return true; } applyPostMoveUsed( - pokemon: Pokemon, - move: PokemonMove, - source: Pokemon, - targets: BattlerIndex[], - simulated: boolean, - args: any[], + _pokemon: Pokemon, + _move: PokemonMove, + _source: Pokemon, + _targets: BattlerIndex[], + _simulated: boolean, + _args: any[], ): void {} } @@ -4412,13 +5816,26 @@ export class PostMoveUsedAbAttr extends AbAttr { * @extends PostMoveUsedAbAttr */ export class PostDancingMoveAbAttr extends PostMoveUsedAbAttr { - override canApplyPostMoveUsed(dancer: Pokemon, move: PokemonMove, source: Pokemon, targets: BattlerIndex[], simulated: boolean, args: any[]): boolean { + override canApplyPostMoveUsed( + dancer: Pokemon, + _move: PokemonMove, + source: Pokemon, + _targets: BattlerIndex[], + _simulated: boolean, + _args: any[], + ): boolean { // List of tags that prevent the Dancer from replicating the move - const forbiddenTags = [ BattlerTagType.FLYING, BattlerTagType.UNDERWATER, - BattlerTagType.UNDERGROUND, BattlerTagType.HIDDEN ]; + const forbiddenTags = [ + BattlerTagType.FLYING, + BattlerTagType.UNDERWATER, + BattlerTagType.UNDERGROUND, + BattlerTagType.HIDDEN, + ]; // The move to replicate cannot come from the Dancer - return source.getBattlerIndex() !== dancer.getBattlerIndex() - && !dancer.summonData.tags.some(tag => forbiddenTags.includes(tag.tagType)); + return ( + source.getBattlerIndex() !== dancer.getBattlerIndex() && + !dancer.summonData.tags.some(tag => forbiddenTags.includes(tag.tagType)) + ); } /** @@ -4428,7 +5845,7 @@ export class PostDancingMoveAbAttr extends PostMoveUsedAbAttr { * @param move {@linkcode PokemonMove} Dancing move used by the source * @param source {@linkcode Pokemon} that used the dancing move * @param targets {@linkcode BattlerIndex}Targets of the dancing move - * @param args N/A + * @param _args N/A */ override applyPostMoveUsed( dancer: Pokemon, @@ -4436,7 +5853,8 @@ export class PostDancingMoveAbAttr extends PostMoveUsedAbAttr { source: Pokemon, targets: BattlerIndex[], simulated: boolean, - args: any[]): void { + _args: any[], + ): void { if (!simulated) { dancer.turnData.extraTurns++; // If the move is an AttackMove or a StatusMove the Dancer must replicate the move on the source of the Dance @@ -4445,7 +5863,7 @@ export class PostDancingMoveAbAttr extends PostMoveUsedAbAttr { globalScene.phaseManager.unshiftPhase(new MovePhase(dancer, target, move, true, true)); } else if (move.getMove() instanceof SelfStatusMove) { // If the move is a SelfStatusMove (ie. Swords Dance) the Dancer should replicate it on itself - globalScene.phaseManager.unshiftPhase(new MovePhase(dancer, [ dancer.getBattlerIndex() ], move, true, true)); + globalScene.phaseManager.unshiftPhase(new MovePhase(dancer, [dancer.getBattlerIndex()], move, true, true)); } } } @@ -4457,11 +5875,11 @@ export class PostDancingMoveAbAttr extends PostMoveUsedAbAttr { * @param source {@linkcode Pokemon} Source of the dancing move * @param targets {@linkcode BattlerIndex} Targets of the dancing move */ - getTarget(dancer: Pokemon, source: Pokemon, targets: BattlerIndex[]) : BattlerIndex[] { + getTarget(dancer: Pokemon, source: Pokemon, targets: BattlerIndex[]): BattlerIndex[] { if (dancer.isPlayer()) { - return source.isPlayer() ? targets : [ source.getBattlerIndex() ]; + return source.isPlayer() ? targets : [source.getBattlerIndex()]; } - return source.isPlayer() ? [ source.getBattlerIndex() ] : targets; + return source.isPlayer() ? [source.getBattlerIndex()] : targets; } } @@ -4470,11 +5888,11 @@ export class PostDancingMoveAbAttr extends PostMoveUsedAbAttr { * @extends AbAttr */ export class PostItemLostAbAttr extends AbAttr { - canApplyPostItemLost(pokemon: Pokemon, simulated: boolean, args: any[]): boolean { + canApplyPostItemLost(_pokemon: Pokemon, _simulated: boolean, _args: any[]): boolean { return true; } - applyPostItemLost(pokemon: Pokemon, simulated: boolean, args: any[]): void {} + applyPostItemLost(_pokemon: Pokemon, _simulated: boolean, _args: any[]): void {} } /** @@ -4488,16 +5906,16 @@ export class PostItemLostApplyBattlerTagAbAttr extends PostItemLostAbAttr { this.tagType = tagType; } - override canApplyPostItemLost(pokemon: Pokemon, simulated: boolean, args: any[]): boolean { + override canApplyPostItemLost(pokemon: Pokemon, simulated: boolean, _args: any[]): boolean { return !pokemon.getTag(this.tagType) && !simulated; } /** * Adds the last used Pokeball back into the player's inventory * @param pokemon {@linkcode Pokemon} with this ability - * @param args N/A + * @param _args N/A */ - override applyPostItemLost(pokemon: Pokemon, simulated: boolean, args: any[]): void { + override applyPostItemLost(pokemon: Pokemon, _simulated: boolean, _args: any[]): void { pokemon.addTag(this.tagType); } } @@ -4511,7 +5929,13 @@ export class StatStageChangeMultiplierAbAttr extends AbAttr { this.multiplier = multiplier; } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[0] as NumberHolder).value *= this.multiplier; } } @@ -4519,13 +5943,23 @@ export class StatStageChangeMultiplierAbAttr extends AbAttr { export class StatStageChangeCopyAbAttr extends AbAttr { override apply( pokemon: Pokemon, - passive: boolean, + _passive: boolean, simulated: boolean, - cancelled: BooleanHolder, + _cancelled: BooleanHolder, args: any[], ): void { if (!simulated) { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, (args[0] as BattleStat[]), (args[1] as number), true, false, false)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase( + pokemon.getBattlerIndex(), + true, + args[0] as BattleStat[], + args[1] as number, + true, + false, + false, + ), + ); } } } @@ -4535,7 +5969,13 @@ export class BypassBurnDamageReductionAbAttr extends AbAttr { super(false); } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } } @@ -4543,7 +5983,7 @@ export class BypassBurnDamageReductionAbAttr extends AbAttr { /** * Causes Pokemon to take reduced damage from the {@linkcode StatusEffect.BURN | Burn} status * @param multiplier Multiplied with the damage taken -*/ + */ export class ReduceBurnDamageAbAttr extends AbAttr { constructor(protected multiplier: number) { super(false); @@ -4551,18 +5991,30 @@ export class ReduceBurnDamageAbAttr extends AbAttr { /** * Applies the damage reduction - * @param pokemon N/A - * @param passive N/A - * @param cancelled N/A + * @param _pokemon N/A + * @param _passive N/A + * @param _cancelled N/A * @param args `[0]` {@linkcode NumberHolder} The damage value being modified */ - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[0] as NumberHolder).value = toDmgValue((args[0] as NumberHolder).value * this.multiplier); } } export class DoubleBerryEffectAbAttr extends AbAttr { - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[0] as NumberHolder).value *= 2; } } @@ -4600,7 +6052,7 @@ export class HealFromBerryUseAbAttr extends AbAttr { this.healPercent = Math.max(Math.min(healPercent, 1), 0); } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, ...args: [BooleanHolder, any[]]): void { + override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, ..._args: [BooleanHolder, any[]]): void { if (simulated) { return; } @@ -4610,15 +6062,24 @@ export class HealFromBerryUseAbAttr extends AbAttr { new PokemonHealPhase( pokemon.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() * this.healPercent), - i18next.t("abilityTriggers:healFromBerryUse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }), - true - ) - ); + i18next.t("abilityTriggers:healFromBerryUse", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + abilityName, + }), + true, + ), + ); } } export class RunSuccessAbAttr extends AbAttr { - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[0] as NumberHolder).value = 256; } } @@ -4640,23 +6101,23 @@ export class CheckTrappedAbAttr extends AbAttr { } canApplyCheckTrapped( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - trapped: BooleanHolder, - otherPokemon: Pokemon, - args: any[], + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _trapped: BooleanHolder, + _otherPokemon: Pokemon, + _args: any[], ): boolean { return true; } applyCheckTrapped( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - trapped: BooleanHolder, - otherPokemon: Pokemon, - args: any[], + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _trapped: BooleanHolder, + _otherPokemon: Pokemon, + _args: any[], ): void {} } @@ -4667,10 +6128,23 @@ export class CheckTrappedAbAttr extends AbAttr { * @see {@linkcode applyCheckTrapped} */ export class ArenaTrapAbAttr extends CheckTrappedAbAttr { - override canApplyCheckTrapped(pokemon: Pokemon, passive: boolean, simulated: boolean, trapped: BooleanHolder, otherPokemon: Pokemon, args: any[]): boolean { - return this.arenaTrapCondition(pokemon, otherPokemon) - && !(otherPokemon.getTypes(true).includes(PokemonType.GHOST) || (otherPokemon.getTypes(true).includes(PokemonType.STELLAR) && otherPokemon.getTypes().includes(PokemonType.GHOST))) - && !otherPokemon.hasAbility(AbilityId.RUN_AWAY); + override canApplyCheckTrapped( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _trapped: BooleanHolder, + otherPokemon: Pokemon, + _args: any[], + ): boolean { + return ( + this.arenaTrapCondition(pokemon, otherPokemon) && + !( + otherPokemon.getTypes(true).includes(PokemonType.GHOST) || + (otherPokemon.getTypes(true).includes(PokemonType.STELLAR) && + otherPokemon.getTypes().includes(PokemonType.GHOST)) + ) && + !otherPokemon.hasAbility(AbilityId.RUN_AWAY) + ); } /** @@ -4679,18 +6153,28 @@ export class ArenaTrapAbAttr extends CheckTrappedAbAttr { * If the enemy has the ability Run Away, it is not trapped. * If the user has Magnet Pull and the enemy is not a Steel type, it is not trapped. * If the user has Arena Trap and the enemy is not grounded, it is not trapped. - * @param pokemon The {@link Pokemon} with this {@link AbAttr} - * @param passive N/A + * @param _pokemon The {@link Pokemon} with this {@link AbAttr} + * @param _passive N/A * @param trapped {@link BooleanHolder} indicating whether the other Pokemon is trapped or not - * @param otherPokemon The {@link Pokemon} that is affected by an Arena Trap ability - * @param args N/A + * @param _otherPokemon The {@link Pokemon} that is affected by an Arena Trap ability + * @param _args N/A */ - override applyCheckTrapped(pokemon: Pokemon, passive: boolean, simulated: boolean, trapped: BooleanHolder, otherPokemon: Pokemon, args: any[]): void { + override applyCheckTrapped( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + trapped: BooleanHolder, + _otherPokemon: Pokemon, + _args: any[], + ): void { trapped.value = true; } - getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { - return i18next.t("abilityTriggers:arenaTrap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }); + getTriggerMessage(pokemon: Pokemon, abilityName: string, ..._args: any[]): string { + return i18next.t("abilityTriggers:arenaTrap", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + abilityName, + }); } } @@ -4699,27 +6183,33 @@ export class MaxMultiHitAbAttr extends AbAttr { super(false); } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[0] as NumberHolder).value = 0; } } export class PostBattleAbAttr extends AbAttr { - constructor(showAbility: boolean = true) { + constructor(showAbility = true) { super(showAbility); } - canApplyPostBattle(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + canApplyPostBattle(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return true; } - applyPostBattle(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void {} + applyPostBattle(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void {} } export class PostBattleLootAbAttr extends PostBattleAbAttr { private randItem?: PokemonHeldItemModifier; - override canApplyPostBattle(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostBattle(pokemon: Pokemon, _passive: boolean, simulated: boolean, args: any[]): boolean { const postBattleLoot = globalScene.currentBattle.postBattleLoot; if (!simulated && postBattleLoot.length && args[0]) { this.randItem = randSeedItem(postBattleLoot); @@ -4729,9 +6219,9 @@ export class PostBattleLootAbAttr extends PostBattleAbAttr { } /** - * @param args - `[0]`: boolean for if the battle ended in a victory + * @param _args - `[0]`: boolean for if the battle ended in a victory */ - override applyPostBattle(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostBattle(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void { const postBattleLoot = globalScene.currentBattle.postBattleLoot; if (!this.randItem) { this.randItem = randSeedItem(postBattleLoot); @@ -4739,18 +6229,39 @@ export class PostBattleLootAbAttr extends PostBattleAbAttr { if (globalScene.tryTransferHeldItemModifier(this.randItem, pokemon, true, 1, true, undefined, false)) { postBattleLoot.splice(postBattleLoot.indexOf(this.randItem), 1); - globalScene.phaseManager.queueMessage(i18next.t("abilityTriggers:postBattleLoot", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), itemName: this.randItem.type.name })); + globalScene.phaseManager.queueMessage( + i18next.t("abilityTriggers:postBattleLoot", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + itemName: this.randItem.type.name, + }), + ); } this.randItem = undefined; } } export class PostFaintAbAttr extends AbAttr { - canApplyPostFaint(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker?: Pokemon, move?: Move, hitResult?: HitResult, ...args: any[]): boolean { + canApplyPostFaint( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker?: Pokemon, + _move?: Move, + _hitResult?: HitResult, + ..._args: any[] + ): boolean { return true; } - applyPostFaint(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker?: Pokemon, move?: Move, hitResult?: HitResult, ...args: any[]): void {} + applyPostFaint( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker?: Pokemon, + _move?: Move, + _hitResult?: HitResult, + ..._args: any[] + ): void {} } /** @@ -4759,21 +6270,37 @@ export class PostFaintAbAttr extends AbAttr { * @extends PostFaintAbAttr */ export class PostFaintUnsuppressedWeatherFormChangeAbAttr extends PostFaintAbAttr { - override canApplyPostFaint(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker?: Pokemon, move?: Move, hitResult?: HitResult, ...args: any[]): boolean { + override canApplyPostFaint( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker?: Pokemon, + _move?: Move, + _hitResult?: HitResult, + ..._args: any[] + ): boolean { return getPokemonWithWeatherBasedForms().length > 0; } /** * Triggers {@linkcode Arena.triggerWeatherBasedFormChanges | triggerWeatherBasedFormChanges} * when the user of the ability faints - * @param {Pokemon} pokemon the fainted Pokemon - * @param passive n/a - * @param attacker n/a - * @param move n/a - * @param hitResult n/a - * @param args n/a + * @param {Pokemon} _pokemon the fainted Pokemon + * @param _passive n/a + * @param _attacker n/a + * @param _move n/a + * @param _hitResult n/a + * @param _args n/a */ - override applyPostFaint(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, args: any[]): void { + override applyPostFaint( + _pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { if (!simulated) { globalScene.arena.triggerWeatherBasedFormChanges(); } @@ -4789,22 +6316,46 @@ export class PostFaintContactDamageAbAttr extends PostFaintAbAttr { this.damageRatio = damageRatio; } - override canApplyPostFaint(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker?: Pokemon, move?: Move, hitResult?: HitResult, ...args: any[]): boolean { - const diedToDirectDamage = move !== undefined && attacker !== undefined && move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon}); + override canApplyPostFaint( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker?: Pokemon, + move?: Move, + _hitResult?: HitResult, + ..._args: any[] + ): boolean { + const diedToDirectDamage = + move !== undefined && + attacker !== undefined && + move.doesFlagEffectApply({ flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon }); const cancelled = new BooleanHolder(false); globalScene.getField(true).map(p => applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled, simulated)); return !(!diedToDirectDamage || cancelled.value || attacker!.hasAbilityWithAttr(BlockNonDirectDamageAbAttr)); } - override applyPostFaint(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker?: Pokemon, move?: Move, hitResult?: HitResult, ...args: any[]): void { + override applyPostFaint( + _pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker?: Pokemon, + _move?: Move, + _hitResult?: HitResult, + ..._args: any[] + ): void { if (!simulated) { - attacker!.damageAndUpdate(toDmgValue(attacker!.getMaxHp() * (1 / this.damageRatio)), { result: HitResult.INDIRECT }); + attacker!.damageAndUpdate(toDmgValue(attacker!.getMaxHp() * (1 / this.damageRatio)), { + result: HitResult.INDIRECT, + }); attacker!.turnData.damageTaken += toDmgValue(attacker!.getMaxHp() * (1 / this.damageRatio)); } } - getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { - return i18next.t("abilityTriggers:postFaintContactDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }); + getTriggerMessage(pokemon: Pokemon, abilityName: string, ..._args: any[]): string { + return i18next.t("abilityTriggers:postFaintContactDamage", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + abilityName, + }); } } @@ -4812,20 +6363,28 @@ export class PostFaintContactDamageAbAttr extends PostFaintAbAttr { * Attribute used for abilities (Innards Out) that damage the opponent based on how much HP the last attack used to knock out the owner of the ability. */ export class PostFaintHPDamageAbAttr extends PostFaintAbAttr { - constructor() { - super (); - } - - override applyPostFaint(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker?: Pokemon, move?: Move, hitResult?: HitResult, ...args: any[]): void { - if (move !== undefined && attacker !== undefined && !simulated) { //If the mon didn't die to indirect damage + override applyPostFaint( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + attacker?: Pokemon, + move?: Move, + _hitResult?: HitResult, + ..._args: any[] + ): void { + //If the mon didn't die to indirect damage + if (move !== undefined && attacker !== undefined && !simulated) { const damage = pokemon.turnData.attacksReceived[0].damage; - attacker.damageAndUpdate((damage), { result: HitResult.INDIRECT }); + attacker.damageAndUpdate(damage, { result: HitResult.INDIRECT }); attacker.turnData.damageTaken += damage; } } - getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { - return i18next.t("abilityTriggers:postFaintHpDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }); + getTriggerMessage(pokemon: Pokemon, abilityName: string, ..._args: any[]): string { + return i18next.t("abilityTriggers:postFaintHpDamage", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + abilityName, + }); } } @@ -4841,7 +6400,7 @@ export class RedirectMoveAbAttr extends AbAttr { * - `[2]` - The Pokemon that used the move being redirected */ - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(pokemon: Pokemon, _passive: boolean, _simulated: boolean, args: any[]): boolean { if (!this.canRedirect(args[0] as MoveId, args[2] as Pokemon)) { return false; } @@ -4850,15 +6409,21 @@ export class RedirectMoveAbAttr extends AbAttr { return target.value !== newTarget; } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { const target = args[1] as NumberHolder; const newTarget = pokemon.getBattlerIndex(); target.value = newTarget; } - canRedirect(moveId: MoveId, user: Pokemon): boolean { + canRedirect(moveId: MoveId, _user: Pokemon): boolean { const move = allMoves[moveId]; - return !![ MoveTarget.NEAR_OTHER, MoveTarget.OTHER ].find(t => move.moveTarget === t); + return !![MoveTarget.NEAR_OTHER, MoveTarget.OTHER].find(t => move.moveTarget === t); } } @@ -4875,7 +6440,7 @@ export class RedirectTypeMoveAbAttr extends RedirectMoveAbAttr { } } -export class BlockRedirectAbAttr extends AbAttr { } +export class BlockRedirectAbAttr extends AbAttr {} /** * Used by Early Bird, makes the pokemon wake up faster @@ -4891,7 +6456,7 @@ export class ReduceStatusEffectDurationAbAttr extends AbAttr { this.statusEffect = statusEffect; } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, args: any[]): boolean { return args[1] instanceof NumberHolder && args[0] === this.statusEffect; } @@ -4901,7 +6466,13 @@ export class ReduceStatusEffectDurationAbAttr extends AbAttr { * - `[0]` - The {@linkcode StatusEffect} of the Pokemon * - `[1]` - The number of turns remaining until the status is healed */ - override apply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { args[1].value -= 1; } } @@ -4919,23 +6490,35 @@ export class FlinchStatStageChangeAbAttr extends FlinchEffectAbAttr { constructor(stats: BattleStat[], stages: number) { super(); - this.stats = Array.isArray(stats) - ? stats - : [ stats ]; + this.stats = Array.isArray(stats) ? stats : [stats]; this.stages = stages; } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _cancelled: BooleanHolder, + _args: any[], + ): void { if (!simulated) { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages)); + globalScene.phaseManager.unshiftPhase( + new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages), + ); } } } -export class IncreasePpAbAttr extends AbAttr { } +export class IncreasePpAbAttr extends AbAttr {} export class ForceSwitchOutImmunityAbAttr extends AbAttr { - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } } @@ -4945,12 +6528,18 @@ export class ReduceBerryUseThresholdAbAttr extends AbAttr { super(false); } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(pokemon: Pokemon, _passive: boolean, _simulated: boolean, args: any[]): boolean { const hpRatio = pokemon.getHpRatio(); return args[0].value < hpRatio; } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { args[0].value *= 2; } } @@ -4968,7 +6557,13 @@ export class WeightMultiplierAbAttr extends AbAttr { this.multiplier = multiplier; } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[0] as NumberHolder).value *= this.multiplier; } } @@ -4978,7 +6573,13 @@ export class SyncEncounterNatureAbAttr extends AbAttr { super(false); } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { (args[0] as Pokemon).setNature(pokemon.getNature()); } } @@ -4989,22 +6590,28 @@ export class MoveAbilityBypassAbAttr extends AbAttr { constructor(moveIgnoreFunc?: (pokemon: Pokemon, move: Move) => boolean) { super(false); - this.moveIgnoreFunc = moveIgnoreFunc || ((pokemon, move) => true); + this.moveIgnoreFunc = moveIgnoreFunc || ((_pokemon, _move) => true); } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - return this.moveIgnoreFunc(pokemon, (args[0] as Move)); + override canApply(pokemon: Pokemon, _passive: boolean, _simulated: boolean, args: any[]): boolean { + return this.moveIgnoreFunc(pokemon, args[0] as Move); } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } } -export class AlwaysHitAbAttr extends AbAttr { } +export class AlwaysHitAbAttr extends AbAttr {} /** Attribute for abilities that allow moves that make contact to ignore protection (i.e. Unseen Fist) */ -export class IgnoreProtectOnContactAbAttr extends AbAttr { } +export class IgnoreProtectOnContactAbAttr extends AbAttr {} /** * Attribute implementing the effects of {@link https://bulbapedia.bulbagarden.net/wiki/Infiltrator_(Ability) | Infiltrator}. @@ -5015,19 +6622,19 @@ export class InfiltratorAbAttr extends AbAttr { super(false); } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, args: any[]): boolean { return args[0] instanceof BooleanHolder; } /** * Sets a flag to bypass screens, Substitute, Safeguard, and Mist - * @param pokemon n/a - * @param passive n/a - * @param simulated n/a - * @param cancelled n/a + * @param _pokemon n/a + * @param _passive n/a + * @param _simulated n/a + * @param _cancelled n/a * @param args `[0]` a {@linkcode BooleanHolder | BooleanHolder} containing the flag */ - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: null, args: any[]): void { + override apply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _cancelled: null, args: any[]): void { const bypassed = args[0]; bypassed.value = true; } @@ -5038,7 +6645,7 @@ export class InfiltratorAbAttr extends AbAttr { * Allows the source to bounce back {@linkcode MoveFlags.REFLECTABLE | Reflectable} * moves as if the user had used {@linkcode MoveId.MAGIC_COAT | Magic Coat}. */ -export class ReflectStatusMoveAbAttr extends AbAttr { } +export class ReflectStatusMoveAbAttr extends AbAttr {} export class NoTransformAbilityAbAttr extends AbAttr { constructor() { @@ -5062,11 +6669,17 @@ export class IgnoreTypeImmunityAbAttr extends AbAttr { this.allowedMoveTypes = allowedMoveTypes; } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, args: any[]): boolean { return this.defenderType === (args[1] as PokemonType) && this.allowedMoveTypes.includes(args[0] as PokemonType); } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } } @@ -5085,11 +6698,17 @@ export class IgnoreTypeStatusEffectImmunityAbAttr extends AbAttr { this.defenderType = defenderType; } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, args: any[]): boolean { return this.statusEffect.includes(args[0] as StatusEffect) && this.defenderType.includes(args[1] as PokemonType); } - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + cancelled: BooleanHolder, + _args: any[], + ): void { cancelled.value = true; } } @@ -5101,20 +6720,16 @@ export class IgnoreTypeStatusEffectImmunityAbAttr extends AbAttr { * @see {@linkcode applyPostBattle} */ export class MoneyAbAttr extends PostBattleAbAttr { - constructor() { - super(); - } - - override canApplyPostBattle(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApplyPostBattle(_pokemon: Pokemon, _passive: boolean, simulated: boolean, args: any[]): boolean { return !simulated && args[0]; } /** - * @param pokemon {@linkcode Pokemon} that is the user of this ability. - * @param passive N/A - * @param args - `[0]`: boolean for if the battle ended in a victory + * @param _pokemon {@linkcode Pokemon} that is the user of this ability. + * @param _passive N/A + * @param _args - `[0]`: boolean for if the battle ended in a victory */ - override applyPostBattle(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostBattle(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void { globalScene.currentBattle.moneyScattered += globalScene.getWaveMoneyAmount(0.2); } } @@ -5139,14 +6754,16 @@ export class PostSummonStatStageChangeOnArenaAbAttr extends PostSummonStatStageC * @param {ArenaTagType} tagType - The type of arena tag to check for. */ constructor(tagType: ArenaTagType) { - super([ Stat.ATK ], 1, true, false); + super([Stat.ATK], 1, true, false); this.tagType = tagType; } override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { const side = pokemon.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - return (globalScene.arena.getTagOnSide(this.tagType, side) ?? false) - && super.canApplyPostSummon(pokemon, passive, simulated, args); + return ( + (globalScene.arena.getTagOnSide(this.tagType, side) ?? false) && + super.canApplyPostSummon(pokemon, passive, simulated, args) + ); } /** @@ -5172,10 +6789,16 @@ export class PostSummonStatStageChangeOnArenaAbAttr extends PostSummonStatStageC export class FormBlockDamageAbAttr extends ReceivedMoveDamageMultiplierAbAttr { private multiplier: number; private tagType: BattlerTagType; - private recoilDamageFunc?: ((pokemon: Pokemon) => number); + private recoilDamageFunc?: (pokemon: Pokemon) => number; private triggerMessageFunc: (pokemon: Pokemon, abilityName: string) => string; - constructor(condition: PokemonDefendCondition, multiplier: number, tagType: BattlerTagType, triggerMessageFunc: (pokemon: Pokemon, abilityName: string) => string, recoilDamageFunc?: (pokemon: Pokemon) => number) { + constructor( + condition: PokemonDefendCondition, + multiplier: number, + tagType: BattlerTagType, + triggerMessageFunc: (pokemon: Pokemon, abilityName: string) => string, + recoilDamageFunc?: (pokemon: Pokemon) => number, + ) { super(condition, multiplier); this.multiplier = multiplier; @@ -5184,7 +6807,15 @@ export class FormBlockDamageAbAttr extends ReceivedMoveDamageMultiplierAbAttr { this.triggerMessageFunc = triggerMessageFunc; } - override canApplyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: BooleanHolder | null, args: any[]): boolean { + override canApplyPreDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _cancelled: BooleanHolder | null, + _args: any[], + ): boolean { return this.condition(pokemon, attacker, move) && !move.hitsSubstitute(attacker, pokemon); } @@ -5194,17 +6825,29 @@ export class FormBlockDamageAbAttr extends ReceivedMoveDamageMultiplierAbAttr { * * @param pokemon The Pokémon with the ability. * @param _passive n/a - * @param attacker The attacking Pokémon. - * @param move The move being used. + * @param _attacker The attacking Pokémon. + * @param _move The move being used. * @param _cancelled n/a * @param args Additional arguments. */ - override applyPreDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _cancelled: BooleanHolder, args: any[]): void { + override applyPreDefend( + pokemon: Pokemon, + _passive: boolean, + simulated: boolean, + _attacker: Pokemon, + _move: Move, + _cancelled: BooleanHolder, + args: any[], + ): void { if (!simulated) { (args[0] as NumberHolder).value = this.multiplier; pokemon.removeTag(this.tagType); if (this.recoilDamageFunc) { - pokemon.damageAndUpdate(this.recoilDamageFunc(pokemon), { result: HitResult.INDIRECT, ignoreSegments: true, ignoreFaintPhase: true }); + pokemon.damageAndUpdate(this.recoilDamageFunc(pokemon), { + result: HitResult.INDIRECT, + ignoreSegments: true, + ignoreFaintPhase: true, + }); } } } @@ -5227,9 +6870,9 @@ export class FormBlockDamageAbAttr extends ReceivedMoveDamageMultiplierAbAttr { * @see {@linkcode applyPreSummon()} */ export class PreSummonAbAttr extends AbAttr { - applyPreSummon(pokemon: Pokemon, passive: boolean, args: any[]): void {} + applyPreSummon(_pokemon: Pokemon, _passive: boolean, _args: any[]): void {} - canApplyPreSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean { + canApplyPreSummon(_pokemon: Pokemon, _passive: boolean, _args: any[]): boolean { return true; } } @@ -5239,27 +6882,32 @@ export class IllusionPreSummonAbAttr extends PreSummonAbAttr { * Apply a new illusion when summoning Zoroark if the illusion is available * * @param pokemon - The Pokémon with the Illusion ability. - * @param passive - N/A - * @param args - N/A + * @param _passive - N/A + * @param _args - N/A * @returns Whether the illusion was applied. */ - override applyPreSummon(pokemon: Pokemon, passive: boolean, args: any[]): void { - const party: Pokemon[] = (pokemon.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty()).filter(p => p.isAllowedInBattle()); - const lastPokemon: Pokemon = party.filter(p => p !==pokemon).at(-1) || pokemon; + override applyPreSummon(pokemon: Pokemon, _passive: boolean, _args: any[]): void { + const party: Pokemon[] = (pokemon.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty()).filter( + p => p.isAllowedInBattle(), + ); + const lastPokemon: Pokemon = party.filter(p => p !== pokemon).at(-1) || pokemon; pokemon.setIllusion(lastPokemon); } - override canApplyPreSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean { + override canApplyPreSummon(pokemon: Pokemon, _passive: boolean, _args: any[]): boolean { if (pokemon.hasTrainer()) { - const party: Pokemon[] = (pokemon.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty()).filter(p => p.isAllowedInBattle()); - const lastPokemon: Pokemon = party.filter(p => p !==pokemon).at(-1) || pokemon; + const party: Pokemon[] = (pokemon.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty()).filter( + p => p.isAllowedInBattle(), + ); + const lastPokemon: Pokemon = party.filter(p => p !== pokemon).at(-1) || pokemon; const speciesId = lastPokemon.species.speciesId; // If the last conscious Pokémon in the party is a Terastallized Ogerpon or Terapagos, Illusion will not activate. // Illusion will also not activate if the Pokémon with Illusion is Terastallized and the last Pokémon in the party is Ogerpon or Terapagos. if ( lastPokemon === pokemon || - ((speciesId === SpeciesId.OGERPON || speciesId === SpeciesId.TERAPAGOS) && (lastPokemon.isTerastallized || pokemon.isTerastallized)) + ((speciesId === SpeciesId.OGERPON || speciesId === SpeciesId.TERAPAGOS) && + (lastPokemon.isTerastallized || pokemon.isTerastallized)) ) { return false; } @@ -5269,7 +6917,13 @@ export class IllusionPreSummonAbAttr extends PreSummonAbAttr { } export class IllusionBreakAbAttr extends AbAttr { - override apply(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _cancelled: BooleanHolder | null, _args: any[]): void { + override apply( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder | null, + _args: any[], + ): void { pokemon.breakIllusion(); pokemon.summonData.illusionBroken = true; } @@ -5280,21 +6934,42 @@ export class PostDefendIllusionBreakAbAttr extends PostDefendAbAttr { * Destroy the illusion upon taking damage * * @param pokemon - The Pokémon with the Illusion ability. - * @param passive - unused - * @param attacker - The attacking Pokémon. - * @param move - The move being used. - * @param hitResult - The type of hitResult the pokemon got - * @param args - unused + * @param _passive - unused + * @param _attacker - The attacking Pokémon. + * @param _move - The move being used. + * @param _hitResult - The type of hitResult the pokemon got + * @param _args - unused * @returns - Whether the illusion was destroyed. */ - override applyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, args: any[]): void { + override applyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move, + _hitResult: HitResult, + _args: any[], + ): void { pokemon.breakIllusion(); pokemon.summonData.illusionBroken = true; } - override canApplyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, args: any[]): boolean { - const breakIllusion: HitResult[] = [ HitResult.EFFECTIVE, HitResult.SUPER_EFFECTIVE, HitResult.NOT_VERY_EFFECTIVE, HitResult.ONE_HIT_KO ]; - return breakIllusion.includes(hitResult) && !!pokemon.summonData.illusion + override canApplyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _attacker: Pokemon, + _move: Move, + hitResult: HitResult, + _args: any[], + ): boolean { + const breakIllusion: HitResult[] = [ + HitResult.EFFECTIVE, + HitResult.SUPER_EFFECTIVE, + HitResult.NOT_VERY_EFFECTIVE, + HitResult.ONE_HIT_KO, + ]; + return breakIllusion.includes(hitResult) && !!pokemon.summonData.illusion; } } @@ -5303,16 +6978,15 @@ export class IllusionPostBattleAbAttr extends PostBattleAbAttr { * Break the illusion once the battle ends * * @param pokemon - The Pokémon with the Illusion ability. - * @param passive - Unused - * @param args - Unused + * @param _passive - Unused + * @param _args - Unused * @returns - Whether the illusion was applied. */ - override applyPostBattle(pokemon: Pokemon, passive: boolean, simulated:boolean, args: any[]): void { - pokemon.breakIllusion() + override applyPostBattle(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void { + pokemon.breakIllusion(); } } - /** * If a Pokémon with this Ability selects a damaging move, it has a 30% chance of going first in its priority bracket. If the Ability activates, this is announced at the start of the turn (after move selection). * @@ -5329,28 +7003,36 @@ export class BypassSpeedChanceAbAttr extends AbAttr { this.chance = chance; } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(pokemon: Pokemon, _passive: boolean, simulated: boolean, args: any[]): boolean { const bypassSpeed = args[0] as BooleanHolder; const turnCommand = globalScene.currentBattle.turnCommands[pokemon.getBattlerIndex()]; const isCommandFight = turnCommand?.command === Command.FIGHT; const move = turnCommand?.move?.move ? allMoves[turnCommand.move.move] : null; const isDamageMove = move?.category === MoveCategory.PHYSICAL || move?.category === MoveCategory.SPECIAL; - return !simulated && !bypassSpeed.value && pokemon.randBattleSeedInt(100) < this.chance && isCommandFight && isDamageMove; + return ( + !simulated && !bypassSpeed.value && pokemon.randBattleSeedInt(100) < this.chance && isCommandFight && isDamageMove + ); } /** * bypass move order in their priority bracket when pokemon choose damaging move - * @param {Pokemon} pokemon {@linkcode Pokemon} the Pokemon applying this ability - * @param {boolean} passive N/A - * @param {BooleanHolder} cancelled N/A + * @param {Pokemon} _pokemon {@linkcode Pokemon} the Pokemon applying this ability + * @param {boolean} _passive N/A + * @param {BooleanHolder} _cancelled N/A * @param {any[]} args [0] {@linkcode BooleanHolder} set to true when the ability activated */ - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { const bypassSpeed = args[0] as BooleanHolder; bypassSpeed.value = true; } - getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { + getTriggerMessage(pokemon: Pokemon, _abilityName: string, ..._args: any[]): string { return i18next.t("abilityTriggers:quickDraw", { pokemonName: getPokemonNameWithAffix(pokemon) }); } } @@ -5358,9 +7040,9 @@ export class BypassSpeedChanceAbAttr extends AbAttr { /** * This attribute checks if a Pokemon's move meets a provided condition to determine if the Pokemon can use Quick Claw * It was created because Pokemon with the ability Mycelium Might cannot access Quick Claw's benefits when using status moves. -*/ + */ export class PreventBypassSpeedChanceAbAttr extends AbAttr { - private condition: ((pokemon: Pokemon, move: Move) => boolean); + private condition: (pokemon: Pokemon, move: Move) => boolean; /** * @param {function} condition - checks if a move meets certain conditions @@ -5370,7 +7052,7 @@ export class PreventBypassSpeedChanceAbAttr extends AbAttr { this.condition = condition; } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { const turnCommand = globalScene.currentBattle.turnCommands[pokemon.getBattlerIndex()]; const isCommandFight = turnCommand?.command === Command.FIGHT; const move = turnCommand?.move?.move ? allMoves[turnCommand.move.move] : null; @@ -5381,7 +7063,13 @@ export class PreventBypassSpeedChanceAbAttr extends AbAttr { * @argument {boolean} bypassSpeed - determines if a Pokemon is able to bypass speed at the moment * @argument {boolean} canCheckHeldItems - determines if a Pokemon has access to Quick Claw's effects or not */ - override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: BooleanHolder, args: any[]): void { + override apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + args: any[], + ): void { const bypassSpeed = args[0] as BooleanHolder; const canCheckHeldItems = args[1] as BooleanHolder; bypassSpeed.value = false; @@ -5398,11 +7086,17 @@ export class TerrainEventTypeChangeAbAttr extends PostSummonAbAttr { super(true); } - override canApply(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { + override canApply(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { return !pokemon.isTerastallized; } - override apply(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _cancelled: BooleanHolder, _args: any[]): void { + override apply( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: BooleanHolder, + _args: any[], + ): void { const currentTerrain = globalScene.arena.getTerrainType(); const typeChange: PokemonType[] = this.determineTypeChange(pokemon, currentTerrain); if (typeChange.length !== 0) { @@ -5445,26 +7139,24 @@ export class TerrainEventTypeChangeAbAttr extends PostSummonAbAttr { } override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - return globalScene.arena.getTerrainType() !== TerrainType.NONE && - this.canApply(pokemon, passive, simulated, args); + return globalScene.arena.getTerrainType() !== TerrainType.NONE && this.canApply(pokemon, passive, simulated, args); } /** * Checks if the Pokemon should change types if summoned into an active terrain */ - override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): void { + override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, _args: any[]): void { this.apply(pokemon, passive, simulated, new BooleanHolder(false), []); } - override getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]) { + override getTriggerMessage(pokemon: Pokemon, _abilityName: string, ..._args: any[]) { const currentTerrain = globalScene.arena.getTerrainType(); const pokemonNameWithAffix = getPokemonNameWithAffix(pokemon); if (currentTerrain === TerrainType.NONE) { return i18next.t("abilityTriggers:pokemonTypeChangeRevert", { pokemonNameWithAffix }); - } else { - const moveType = i18next.t(`pokemonInfo:Type.${PokemonType[this.determineTypeChange(pokemon, currentTerrain)[0]]}`); - return i18next.t("abilityTriggers:pokemonTypeChange", { pokemonNameWithAffix, moveType }); } + const moveType = i18next.t(`pokemonInfo:Type.${PokemonType[this.determineTypeChange(pokemon, currentTerrain)[0]]}`); + return i18next.t("abilityTriggers:pokemonTypeChange", { pokemonNameWithAffix, moveType }); } } @@ -5475,23 +7167,26 @@ function applySingleAbAttrs( applyFunc: AbAttrApplyFunc, successFunc: AbAttrSuccessFunc, args: any[], - gainedMidTurn: boolean = false, - simulated: boolean = false, - messages: string[] = [] + gainedMidTurn = false, + simulated = false, + messages: string[] = [], ) { - if (!pokemon?.canApplyAbility(passive) || (passive && (pokemon.getPassiveAbility().id === pokemon.getAbility().id))) { + if (!pokemon?.canApplyAbility(passive) || (passive && pokemon.getPassiveAbility().id === pokemon.getAbility().id)) { return; } const ability = passive ? pokemon.getPassiveAbility() : pokemon.getAbility(); - if (gainedMidTurn && ability.getAttrs(attrType).some(attr => attr instanceof PostSummonAbAttr && !attr.shouldActivateOnGain())) { + if ( + gainedMidTurn && + ability.getAttrs(attrType).some(attr => attr instanceof PostSummonAbAttr && !attr.shouldActivateOnGain()) + ) { return; } for (const attr of ability.getAttrs(attrType)) { const condition = attr.getCondition(); let abShown = false; - if (condition && !condition(pokemon) || !successFunc(attr, passive)) { + if ((condition && !condition(pokemon)) || !successFunc(attr, passive)) { continue; } @@ -5540,33 +7235,41 @@ class ForceSwitchOutHelper { * - If the Pokémon is still alive (hp > 0), and if so, it leaves the field and a new SwitchPhase is initiated. */ if (switchOutTarget.isPlayer()) { - if (globalScene.getPlayerParty().filter((p) => p.isAllowedInBattle() && !p.isOnField()).length < 1) { + if (globalScene.getPlayerParty().filter(p => p.isAllowedInBattle() && !p.isOnField()).length < 1) { return false; } if (switchOutTarget.hp > 0) { switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - globalScene.phaseManager.prependToPhase(new SwitchPhase(this.switchType, switchOutTarget.getFieldIndex(), true, true), MoveEndPhase); + globalScene.phaseManager.prependToPhase( + new SwitchPhase(this.switchType, switchOutTarget.getFieldIndex(), true, true), + MoveEndPhase, + ); return true; } - /** - * For non-wild battles, it checks if the opposing party has any available Pokémon to switch in. - * If yes, the Pokémon leaves the field and a new SwitchSummonPhase is initiated. - */ + /** + * For non-wild battles, it checks if the opposing party has any available Pokémon to switch in. + * If yes, the Pokémon leaves the field and a new SwitchSummonPhase is initiated. + */ } else if (globalScene.currentBattle.battleType !== BattleType.WILD) { - if (globalScene.getEnemyParty().filter((p) => p.isAllowedInBattle() && !p.isOnField()).length < 1) { + if (globalScene.getEnemyParty().filter(p => p.isAllowedInBattle() && !p.isOnField()).length < 1) { return false; } if (switchOutTarget.hp > 0) { switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - const summonIndex = (globalScene.currentBattle.trainer ? globalScene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0); - globalScene.phaseManager.prependToPhase(new SwitchSummonPhase(this.switchType, switchOutTarget.getFieldIndex(), summonIndex, false, false), MoveEndPhase); + const summonIndex = globalScene.currentBattle.trainer + ? globalScene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) + : 0; + globalScene.phaseManager.prependToPhase( + new SwitchSummonPhase(this.switchType, switchOutTarget.getFieldIndex(), summonIndex, false, false), + MoveEndPhase, + ); return true; } - /** - * For wild Pokémon battles, the Pokémon will flee if the conditions are met (waveIndex and double battles). - * It will not flee if it is a Mystery Encounter with fleeing disabled (checked in `getSwitchOutCondition()`) or if it is a wave 10x wild boss - */ + /** + * For wild Pokémon battles, the Pokémon will flee if the conditions are met (waveIndex and double battles). + * It will not flee if it is a Mystery Encounter with fleeing disabled (checked in `getSwitchOutCondition()`) or if it is a wave 10x wild boss + */ } else { const allyPokemon = switchOutTarget.getAlly(); @@ -5576,7 +7279,12 @@ class ForceSwitchOutHelper { if (switchOutTarget.hp > 0) { switchOutTarget.leaveField(false); - globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:fled", { pokemonName: getPokemonNameWithAffix(switchOutTarget) }), null, true, 500); + globalScene.phaseManager.queueMessage( + i18next.t("moveTriggers:fled", { pokemonName: getPokemonNameWithAffix(switchOutTarget) }), + null, + true, + 500, + ); if (globalScene.currentBattle.double && !isNullOrUndefined(allyPokemon)) { globalScene.redirectPokemonMoves(switchOutTarget, allyPokemon); } @@ -5622,14 +7330,24 @@ class ForceSwitchOutHelper { } } - if (!player && globalScene.currentBattle.isBattleMysteryEncounter() && !globalScene.currentBattle.mysteryEncounter?.fleeAllowed) { + if ( + !player && + globalScene.currentBattle.isBattleMysteryEncounter() && + !globalScene.currentBattle.mysteryEncounter?.fleeAllowed + ) { return false; } const party = player ? globalScene.getPlayerParty() : globalScene.getEnemyParty(); - return (!player && globalScene.currentBattle.battleType === BattleType.WILD) - || party.filter(p => p.isAllowedInBattle() && !p.isOnField() - && (player || (p as EnemyPokemon).trainerSlot === (switchOutTarget as EnemyPokemon).trainerSlot)).length > 0; + return ( + (!player && globalScene.currentBattle.battleType === BattleType.WILD) || + party.filter( + p => + p.isAllowedInBattle() && + !p.isOnField() && + (player || (p as EnemyPokemon).trainerSlot === (switchOutTarget as EnemyPokemon).trainerSlot), + ).length > 0 + ); } /** @@ -5641,7 +7359,9 @@ class ForceSwitchOutHelper { public getFailedText(target: Pokemon): string | null { const blockedByAbility = new BooleanHolder(false); applyAbAttrs(ForceSwitchOutImmunityAbAttr, target, blockedByAbility); - return blockedByAbility.value ? i18next.t("moveTriggers:cannotBeSwitchedOut", { pokemonName: getPokemonNameWithAffix(target) }) : null; + return blockedByAbility.value + ? i18next.t("moveTriggers:cannotBeSwitchedOut", { pokemonName: getPokemonNameWithAffix(target) }) + : null; } } @@ -5669,22 +7389,23 @@ function calculateShellBellRecovery(pokemon: Pokemon): number { */ export class PostDamageAbAttr extends AbAttr { public canApplyPostDamage( - pokemon: Pokemon, - damage: number, - passive: boolean, - simulated: boolean, - args: any[], - source?: Pokemon): boolean { + _pokemon: Pokemon, + _damage: number, + _passive: boolean, + _simulated: boolean, + _args: any[], + _source?: Pokemon, + ): boolean { return true; } public applyPostDamage( - pokemon: Pokemon, - damage: number, - passive: boolean, - simulated: boolean, - args: any[], - source?: Pokemon, + _pokemon: Pokemon, + _damage: number, + _passive: boolean, + _simulated: boolean, + _args: any[], + _source?: Pokemon, ): void {} } @@ -5711,13 +7432,14 @@ export class PostDamageForceSwitchAbAttr extends PostDamageAbAttr { public override canApplyPostDamage( pokemon: Pokemon, damage: number, - passive: boolean, - simulated: boolean, - args: any[], - source?: Pokemon): boolean { + _passive: boolean, + _simulated: boolean, + _args: any[], + source?: Pokemon, + ): boolean { const moveHistory = pokemon.getMoveHistory(); // Will not activate when the Pokémon's HP is lowered by cutting its own HP - const fordbiddenAttackingMoves = [ MoveId.BELLY_DRUM, MoveId.SUBSTITUTE, MoveId.CURSE, MoveId.PAIN_SPLIT ]; + const fordbiddenAttackingMoves = [MoveId.BELLY_DRUM, MoveId.SUBSTITUTE, MoveId.CURSE, MoveId.PAIN_SPLIT]; if (moveHistory.length > 0) { const lastMoveUsed = moveHistory[moveHistory.length - 1]; if (fordbiddenAttackingMoves.includes(lastMoveUsed.move)) { @@ -5726,20 +7448,25 @@ export class PostDamageForceSwitchAbAttr extends PostDamageAbAttr { } // Dragon Tail and Circle Throw switch out Pokémon before the Ability activates. - const fordbiddenDefendingMoves = [ MoveId.DRAGON_TAIL, MoveId.CIRCLE_THROW ]; + const fordbiddenDefendingMoves = [MoveId.DRAGON_TAIL, MoveId.CIRCLE_THROW]; if (source) { const enemyMoveHistory = source.getMoveHistory(); if (enemyMoveHistory.length > 0) { const enemyLastMoveUsed = enemyMoveHistory[enemyMoveHistory.length - 1]; // Will not activate if the Pokémon's HP falls below half while it is in the air during Sky Drop. - if (fordbiddenDefendingMoves.includes(enemyLastMoveUsed.move) || enemyLastMoveUsed.move === MoveId.SKY_DROP && enemyLastMoveUsed.result === MoveResult.OTHER) { + if ( + fordbiddenDefendingMoves.includes(enemyLastMoveUsed.move) || + (enemyLastMoveUsed.move === MoveId.SKY_DROP && enemyLastMoveUsed.result === MoveResult.OTHER) + ) { return false; - // Will not activate if the Pokémon's HP falls below half by a move affected by Sheer Force. - // TODO: Make this use the sheer force disable condition - } else if (allMoves[enemyLastMoveUsed.move].chance >= 0 && source.hasAbility(AbilityId.SHEER_FORCE)) { + // Will not activate if the Pokémon's HP falls below half by a move affected by Sheer Force. + // TODO: Make this use the sheer force disable condition + } + if (allMoves[enemyLastMoveUsed.move].chance >= 0 && source.hasAbility(AbilityId.SHEER_FORCE)) { return false; + } // Activate only after the last hit of multistrike moves - } else if (source.turnData.hitsLeft > 1) { + if (source.turnData.hitsLeft > 1) { return false; } if (source.turnData.hitCount > 1) { @@ -5769,13 +7496,20 @@ export class PostDamageForceSwitchAbAttr extends PostDamageAbAttr { * the Pokémon's health after damage to determine whether the switch-out should occur. * * @param pokemon The Pokémon that took damage. - * @param damage N/A - * @param passive N/A - * @param simulated Whether the ability is being simulated. - * @param args N/A - * @param source N/A + * @param _damage N/A + * @param _passive N/A + * @param _simulated Whether the ability is being simulated. + * @param _args N/A + * @param _source N/A */ - public override applyPostDamage(pokemon: Pokemon, damage: number, passive: boolean, simulated: boolean, args: any[], source?: Pokemon): void { + public override applyPostDamage( + pokemon: Pokemon, + _damage: number, + _passive: boolean, + _simulated: boolean, + _args: any[], + _source?: Pokemon, + ): void { this.helper.switchOutLogic(pokemon); } } @@ -5785,11 +7519,11 @@ function applyAbAttrsInternal( applyFunc: AbAttrApplyFunc, successFunc: AbAttrSuccessFunc, args: any[], - simulated: boolean = false, + simulated = false, messages: string[] = [], - gainedMidTurn = false + gainedMidTurn = false, ) { - for (const passive of [ false, true ]) { + for (const passive of [false, true]) { if (pokemon) { applySingleAbAttrs(pokemon, passive, attrType, applyFunc, successFunc, args, gainedMidTurn, simulated, messages); globalScene.phaseManager.clearPhaseQueueSplice(); @@ -5862,7 +7596,8 @@ export function applyPostDefendAbAttrs( attrType, pokemon, (attr, passive) => attr.applyPostDefend(pokemon, passive, simulated, attacker, move, hitResult, args), - (attr, passive) => attr.canApplyPostDefend(pokemon, passive, simulated, attacker, move, hitResult, args), args, + (attr, passive) => attr.canApplyPostDefend(pokemon, passive, simulated, attacker, move, hitResult, args), + args, simulated, ); } @@ -5879,8 +7614,8 @@ export function applyPostMoveUsedAbAttrs( applyAbAttrsInternal( attrType, pokemon, - (attr, passive) => attr.applyPostMoveUsed(pokemon, move, source, targets, simulated, args), - (attr, passive) => attr.canApplyPostMoveUsed(pokemon, move, source, targets, simulated, args), + (attr, _passive) => attr.applyPostMoveUsed(pokemon, move, source, targets, simulated, args), + (attr, _passive) => attr.canApplyPostMoveUsed(pokemon, move, source, targets, simulated, args), args, simulated, ); @@ -5913,14 +7648,23 @@ export function applyStatMultiplierAbAttrs( * @param ignoreAbility - Whether or not the ability should be ignored by the pokemon or its move. * @param args - unused */ -export function applyAllyStatMultiplierAbAttrs(attrType: Constructor, - pokemon: Pokemon, stat: BattleStat, statValue: NumberHolder, simulated: boolean = false, checkedPokemon: Pokemon, ignoreAbility: boolean, ...args: any[] +export function applyAllyStatMultiplierAbAttrs( + attrType: Constructor, + pokemon: Pokemon, + stat: BattleStat, + statValue: NumberHolder, + simulated = false, + checkedPokemon: Pokemon, + ignoreAbility: boolean, + ...args: any[] ): void { - return applyAbAttrsInternal( + applyAbAttrsInternal( attrType, pokemon, - (attr, passive) => attr.applyAllyStat(pokemon, passive, simulated, stat, statValue, checkedPokemon, ignoreAbility, args), - (attr, passive) => attr.canApplyAllyStat(pokemon, passive, simulated, stat, statValue, checkedPokemon, ignoreAbility, args), + (attr, passive) => + attr.applyAllyStat(pokemon, passive, simulated, stat, statValue, checkedPokemon, ignoreAbility, args), + (attr, passive) => + attr.canApplyAllyStat(pokemon, passive, simulated, stat, statValue, checkedPokemon, ignoreAbility, args), args, simulated, ); @@ -5948,7 +7692,7 @@ export function applyPostDamageAbAttrs( attrType: Constructor, pokemon: Pokemon, damage: number, - passive: boolean, + _passive: boolean, simulated = false, args: any[], source?: Pokemon, @@ -5985,8 +7729,11 @@ export function applyFieldStatMultiplierAbAttrs( applyAbAttrsInternal( attrType, pokemon, - (attr, passive) => attr.applyFieldStat(pokemon, passive, simulated, stat, statValue, checkedPokemon, hasApplied, args), - (attr, passive) => attr.canApplyFieldStat(pokemon, passive, simulated, stat, statValue, checkedPokemon, hasApplied, args), args, + (attr, passive) => + attr.applyFieldStat(pokemon, passive, simulated, stat, statValue, checkedPokemon, hasApplied, args), + (attr, passive) => + attr.canApplyFieldStat(pokemon, passive, simulated, stat, statValue, checkedPokemon, hasApplied, args), + args, ); } @@ -6021,7 +7768,8 @@ export function applyPostAttackAbAttrs( attrType, pokemon, (attr, passive) => attr.applyPostAttack(pokemon, passive, simulated, defender, move, hitResult, args), - (attr, passive) => attr.canApplyPostAttack(pokemon, passive, simulated, defender, move, hitResult, args), args, + (attr, passive) => attr.canApplyPostAttack(pokemon, passive, simulated, defender, move, hitResult, args), + args, simulated, ); } @@ -6075,17 +7823,13 @@ export function applyPostSummonAbAttrs( ); } -export function applyPreSummonAbAttrs( - attrType: Constructor, - pokemon: Pokemon, - ...args: any[] -): void { +export function applyPreSummonAbAttrs(attrType: Constructor, pokemon: Pokemon, ...args: any[]): void { applyAbAttrsInternal( attrType, pokemon, (attr, passive) => attr.applyPreSummon(pokemon, passive, args), (attr, passive) => attr.canApplyPreSummon(pokemon, passive, args), - args + args, ); } @@ -6111,18 +7855,17 @@ export function applyPreLeaveFieldAbAttrs( simulated = false, ...args: any[] ): void { - return applyAbAttrsInternal( + applyAbAttrsInternal( attrType, pokemon, - (attr, passive) => - attr.applyPreLeaveField(pokemon, passive, simulated, args), + (attr, passive) => attr.applyPreLeaveField(pokemon, passive, simulated, args), (attr, passive) => attr.canApplyPreLeaveField(pokemon, passive, simulated, args), args, - simulated + simulated, ); } -export function applyPreStatStageChangeAbAttrs ( +export function applyPreStatStageChangeAbAttrs( attrType: Constructor, pokemon: Pokemon | null, stat: BattleStat, @@ -6144,7 +7887,7 @@ export function applyPostStatStageChangeAbAttrs( attrType: Constructor, pokemon: Pokemon, stats: BattleStat[], - stages: integer, + stages: number, selfTarget: boolean, simulated = false, ...args: any[] @@ -6153,7 +7896,8 @@ export function applyPostStatStageChangeAbAttrs( attrType, pokemon, (attr, _passive) => attr.applyPostStatStageChange(pokemon, simulated, stats, stages, selfTarget, args), - (attr, _passive) => attr.canApplyPostStatStageChange(pokemon, simulated, stats, stages, selfTarget, args), args, + (attr, _passive) => attr.canApplyPostStatStageChange(pokemon, simulated, stats, stages, selfTarget, args), + args, simulated, ); } @@ -6292,7 +8036,8 @@ export function applyCheckTrappedAbAttrs( attrType, pokemon, (attr, passive) => attr.applyCheckTrapped(pokemon, passive, simulated, trapped, otherPokemon, args), - (attr, passive) => attr.canApplyCheckTrapped(pokemon, passive, simulated, trapped, otherPokemon, args), args, + (attr, passive) => attr.canApplyCheckTrapped(pokemon, passive, simulated, trapped, otherPokemon, args), + args, simulated, messages, ); @@ -6342,8 +8087,8 @@ export function applyPostItemLostAbAttrs( applyAbAttrsInternal( attrType, pokemon, - (attr, passive) => attr.applyPostItemLost(pokemon, simulated, args), - (attr, passive) => attr.canApplyPostItemLost(pokemon, simulated, args), + (attr, _passive) => attr.applyPostItemLost(pokemon, simulated, args), + (attr, _passive) => attr.canApplyPostItemLost(pokemon, simulated, args), args, ); } @@ -6353,11 +8098,7 @@ export function applyPostItemLostAbAttrs( * * Ignores passives as they don't change and shouldn't be reapplied when main abilities change */ -export function applyOnGainAbAttrs( - pokemon: Pokemon, - passive: boolean = false, - simulated: boolean = false, - ...args: any[]): void { +export function applyOnGainAbAttrs(pokemon: Pokemon, passive = false, simulated = false, ...args: any[]): void { applySingleAbAttrs( pokemon, passive, @@ -6378,11 +8119,12 @@ export function applyOnLoseAbAttrs(pokemon: Pokemon, passive = false, simulated pokemon, passive, PreLeaveFieldAbAttr, - (attr, passive) => attr.applyPreLeaveField(pokemon, passive, simulated, [ ...args, true ]), - (attr, passive) => attr.canApplyPreLeaveField(pokemon, passive, simulated, [ ...args, true ]), + (attr, passive) => attr.applyPreLeaveField(pokemon, passive, simulated, [...args, true]), + (attr, passive) => attr.canApplyPreLeaveField(pokemon, passive, simulated, [...args, true]), args, true, - simulated); + simulated, + ); applySingleAbAttrs( pokemon, @@ -6392,8 +8134,8 @@ export function applyOnLoseAbAttrs(pokemon: Pokemon, passive = false, simulated (attr, passive) => attr.canApply(pokemon, passive, simulated, args), args, true, - simulated - ) + simulated, + ); } /** @@ -6408,12 +8150,16 @@ function setAbilityRevealed(pokemon: Pokemon): void { * Returns all Pokemon on field with weather-based forms */ function getPokemonWithWeatherBasedForms() { - return globalScene.getField(true).filter(p => - (p.hasAbility(AbilityId.FORECAST) && p.species.speciesId === SpeciesId.CASTFORM) - || (p.hasAbility(AbilityId.FLOWER_GIFT) && p.species.speciesId === SpeciesId.CHERRIM) - ); + return globalScene + .getField(true) + .filter( + p => + (p.hasAbility(AbilityId.FORECAST) && p.species.speciesId === SpeciesId.CASTFORM) || + (p.hasAbility(AbilityId.FLOWER_GIFT) && p.species.speciesId === SpeciesId.CHERRIM), + ); } +// biome-ignore format: prevent biome from removing the newlines (e.g. prevent `new Ability(...).attr(...)`) export function initAbilities() { allAbilities.push( new Ability(AbilityId.NONE, 3), @@ -6553,7 +8299,7 @@ export function initAbilities() { .attr(PostSummonHealStatusAbAttr, StatusEffect.BURN) .ignorable(), new Ability(AbilityId.MAGNET_PULL, 3) - .attr(ArenaTrapAbAttr, (user, target) => { + .attr(ArenaTrapAbAttr, (_user, target) => { return target.getTypes(true).includes(PokemonType.STEEL) || (target.getTypes(true).includes(PokemonType.STELLAR) && target.getTypes().includes(PokemonType.STEEL)); }), new Ability(AbilityId.SOUNDPROOF, 3) @@ -6609,7 +8355,7 @@ export function initAbilities() { .bypassFaint() .ignorable(), new Ability(AbilityId.SHED_SKIN, 3) - .conditionalAttr(pokemon => !randSeedInt(3), PostTurnResetStatusAbAttr), + .conditionalAttr(_pokemon => !randSeedInt(3), PostTurnResetStatusAbAttr), new Ability(AbilityId.GUTS, 3) .attr(BypassBurnDamageReductionAbAttr) .conditionalAttr(pokemon => !!pokemon.status || pokemon.hasAbility(AbilityId.COMATOSE), StatMultiplierAbAttr, Stat.ATK, 1.5), @@ -6632,7 +8378,7 @@ export function initAbilities() { .attr(PostSummonWeatherChangeAbAttr, WeatherType.SUNNY) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.SUNNY), new Ability(AbilityId.ARENA_TRAP, 3) - .attr(ArenaTrapAbAttr, (user, target) => target.isGrounded()) + .attr(ArenaTrapAbAttr, (_user, target) => target.isGrounded()) .attr(DoubleBattleChanceAbAttr), new Ability(AbilityId.VITAL_SPIRIT, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.SLEEP) @@ -6660,8 +8406,8 @@ export function initAbilities() { .attr(TypeImmunityStatStageChangeAbAttr, PokemonType.ELECTRIC, Stat.SPD, 1) .ignorable(), new Ability(AbilityId.RIVALRY, 4) - .attr(MovePowerBoostAbAttr, (user, target, move) => user?.gender !== Gender.GENDERLESS && target?.gender !== Gender.GENDERLESS && user?.gender === target?.gender, 1.25, true) - .attr(MovePowerBoostAbAttr, (user, target, move) => user?.gender !== Gender.GENDERLESS && target?.gender !== Gender.GENDERLESS && user?.gender !== target?.gender, 0.75), + .attr(MovePowerBoostAbAttr, (user, target, _move) => user?.gender !== Gender.GENDERLESS && target?.gender !== Gender.GENDERLESS && user?.gender === target?.gender, 1.25, true) + .attr(MovePowerBoostAbAttr, (user, target, _move) => user?.gender !== Gender.GENDERLESS && target?.gender !== Gender.GENDERLESS && user?.gender !== target?.gender, 0.75), new Ability(AbilityId.STEADFAST, 4) .attr(FlinchStatStageChangeAbAttr, [ Stat.SPD ], 1), new Ability(AbilityId.SNOW_CLOAK, 4) @@ -6693,7 +8439,7 @@ export function initAbilities() { new Ability(AbilityId.DOWNLOAD, 4) .attr(DownloadAbAttr), new Ability(AbilityId.IRON_FIST, 4) - .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.PUNCHING_MOVE), 1.2), + .attr(MovePowerBoostAbAttr, (_user, _target, move) => move.hasFlag(MoveFlags.PUNCHING_MOVE), 1.2), new Ability(AbilityId.POISON_HEAL, 4) .attr(PostTurnStatusHealAbAttr, StatusEffect.TOXIC, StatusEffect.POISON) .attr(BlockStatusDamageAbAttr, StatusEffect.TOXIC, StatusEffect.POISON), @@ -6721,7 +8467,7 @@ export function initAbilities() { .attr(AlwaysHitAbAttr) .attr(DoubleBattleChanceAbAttr), new Ability(AbilityId.STALL, 4) - .attr(ChangeMovePriorityAbAttr, (pokemon, move: Move) => true, -0.2), + .attr(ChangeMovePriorityAbAttr, (_pokemon, _move: Move) => true, -0.2), new Ability(AbilityId.TECHNICIAN, 4) .attr(MovePowerBoostAbAttr, (user, target, move) => { const power = new NumberHolder(move.power); @@ -6778,7 +8524,7 @@ export function initAbilities() { new Ability(AbilityId.FRISK, 4) .attr(FriskAbAttr), new Ability(AbilityId.RECKLESS, 4) - .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.RECKLESS_MOVE), 1.2), + .attr(MovePowerBoostAbAttr, (_user, _target, move) => move.hasFlag(MoveFlags.RECKLESS_MOVE), 1.2), new Ability(AbilityId.MULTITYPE, 4) .attr(NoFusionAbilityAbAttr) .uncopiable() @@ -6801,7 +8547,7 @@ export function initAbilities() { .attr(PostDefendStealHeldItemAbAttr, (target, user, move) => move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user, target})) .condition(getSheerForceHitDisableAbCondition()), new Ability(AbilityId.SHEER_FORCE, 5) - .attr(MovePowerBoostAbAttr, (user, target, move) => move.chance >= 1, 1.3) + .attr(MovePowerBoostAbAttr, (_user, _target, move) => move.chance >= 1, 1.3) .attr(MoveEffectChanceMultiplierAbAttr, 0), // This attribute does not seem to function - Should disable life orb, eject button, red card, kee/maranga berry if they get implemented new Ability(AbilityId.CONTRARY, 5) .attr(StatStageChangeMultiplierAbAttr, -1) @@ -6809,7 +8555,7 @@ export function initAbilities() { new Ability(AbilityId.UNNERVE, 5) .attr(PreventBerryUseAbAttr), new Ability(AbilityId.DEFIANT, 5) - .attr(PostStatStageChangeStatStageChangeAbAttr, (target, statsChanged, stages) => stages < 0, [ Stat.ATK ], 2), + .attr(PostStatStageChangeStatStageChangeAbAttr, (_target, _statsChanged, stages) => stages < 0, [ Stat.ATK ], 2), new Ability(AbilityId.DEFEATIST, 5) .attr(StatMultiplierAbAttr, Stat.ATK, 0.5) .attr(StatMultiplierAbAttr, Stat.SPATK, 0.5) @@ -6823,8 +8569,8 @@ export function initAbilities() { .attr(AlliedFieldDamageReductionAbAttr, 0.75) .ignorable(), new Ability(AbilityId.WEAK_ARMOR, 5) - .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.category === MoveCategory.PHYSICAL, Stat.DEF, -1) - .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.category === MoveCategory.PHYSICAL, Stat.SPD, 2), + .attr(PostDefendStatStageChangeAbAttr, (_target, _user, move) => move.category === MoveCategory.PHYSICAL, Stat.DEF, -1) + .attr(PostDefendStatStageChangeAbAttr, (_target, _user, move) => move.category === MoveCategory.PHYSICAL, Stat.SPD, 2), new Ability(AbilityId.HEAVY_METAL, 5) .attr(WeightMultiplierAbAttr, 2) .ignorable(), @@ -6832,12 +8578,12 @@ export function initAbilities() { .attr(WeightMultiplierAbAttr, 0.5) .ignorable(), new Ability(AbilityId.MULTISCALE, 5) - .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => target.isFullHp(), 0.5) + .attr(ReceivedMoveDamageMultiplierAbAttr, (target, _user, _move) => target.isFullHp(), 0.5) .ignorable(), new Ability(AbilityId.TOXIC_BOOST, 5) - .attr(MovePowerBoostAbAttr, (user, target, move) => move.category === MoveCategory.PHYSICAL && (user?.status?.effect === StatusEffect.POISON || user?.status?.effect === StatusEffect.TOXIC), 1.5), + .attr(MovePowerBoostAbAttr, (user, _target, move) => move.category === MoveCategory.PHYSICAL && (user?.status?.effect === StatusEffect.POISON || user?.status?.effect === StatusEffect.TOXIC), 1.5), new Ability(AbilityId.FLARE_BOOST, 5) - .attr(MovePowerBoostAbAttr, (user, target, move) => move.category === MoveCategory.SPECIAL && user?.status?.effect === StatusEffect.BURN, 1.5), + .attr(MovePowerBoostAbAttr, (user, _target, move) => move.category === MoveCategory.SPECIAL && user?.status?.effect === StatusEffect.BURN, 1.5), new Ability(AbilityId.HARVEST, 5) .attr( PostTurnRestoreBerryAbAttr, @@ -6869,7 +8615,7 @@ export function initAbilities() { .attr(WonderSkinAbAttr) .ignorable(), new Ability(AbilityId.ANALYTIC, 5) - .attr(MovePowerBoostAbAttr, (user, target, move) => { + .attr(MovePowerBoostAbAttr, (user, _target, _move) => { const movePhase = globalScene.phaseManager.findPhase((phase) => phase.is("MovePhase") && phase.pokemon.id !== user?.id); return isNullOrUndefined(movePhase); }, 1.3), @@ -6897,9 +8643,9 @@ export function initAbilities() { new Ability(AbilityId.MOXIE, 5) .attr(PostVictoryStatStageChangeAbAttr, Stat.ATK, 1), new Ability(AbilityId.JUSTIFIED, 5) - .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === PokemonType.DARK && move.category !== MoveCategory.STATUS, Stat.ATK, 1), + .attr(PostDefendStatStageChangeAbAttr, (_target, user, move) => user.getMoveType(move) === PokemonType.DARK && move.category !== MoveCategory.STATUS, Stat.ATK, 1), new Ability(AbilityId.RATTLED, 5) - .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => { + .attr(PostDefendStatStageChangeAbAttr, (_target, user, move) => { const moveType = user.getMoveType(move); return move.category !== MoveCategory.STATUS && (moveType === PokemonType.DARK || moveType === PokemonType.BUG || moveType === PokemonType.GHOST); @@ -6915,7 +8661,7 @@ export function initAbilities() { .attr(TypeImmunityStatStageChangeAbAttr, PokemonType.GRASS, Stat.ATK, 1) .ignorable(), new Ability(AbilityId.PRANKSTER, 5) - .attr(ChangeMovePriorityAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS, 1), + .attr(ChangeMovePriorityAbAttr, (_pokemon, move: Move) => move.category === MoveCategory.STATUS, 1), new Ability(AbilityId.SAND_FORCE, 5) .attr(MoveTypePowerBoostAbAttr, PokemonType.ROCK, 1.3) .attr(MoveTypePowerBoostAbAttr, PokemonType.GROUND, 1.3) @@ -6966,7 +8712,7 @@ export function initAbilities() { .attr(PokemonTypeChangeAbAttr), //.condition((p) => !p.summonData.abilitiesApplied.includes(AbilityId.PROTEAN)), //Gen 9 Implementation new Ability(AbilityId.FUR_COAT, 6) - .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.category === MoveCategory.PHYSICAL, 0.5) + .attr(ReceivedMoveDamageMultiplierAbAttr, (_target, _user, move) => move.category === MoveCategory.PHYSICAL, 0.5) .ignorable(), new Ability(AbilityId.MAGICIAN, 6) .attr(PostAttackStealHeldItemAbAttr), @@ -6974,11 +8720,11 @@ export function initAbilities() { .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.hasFlag(MoveFlags.BALLBOMB_MOVE)) .ignorable(), new Ability(AbilityId.COMPETITIVE, 6) - .attr(PostStatStageChangeStatStageChangeAbAttr, (target, statsChanged, stages) => stages < 0, [ Stat.SPATK ], 2), + .attr(PostStatStageChangeStatStageChangeAbAttr, (_target, _statsChanged, stages) => stages < 0, [ Stat.SPATK ], 2), new Ability(AbilityId.STRONG_JAW, 6) - .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.BITING_MOVE), 1.5), + .attr(MovePowerBoostAbAttr, (_user, _target, move) => move.hasFlag(MoveFlags.BITING_MOVE), 1.5), new Ability(AbilityId.REFRIGERATE, 6) - .attr(MoveTypeChangeAbAttr, PokemonType.ICE, 1.2, (user, target, move) => move.type === PokemonType.NORMAL), + .attr(MoveTypeChangeAbAttr, PokemonType.ICE, 1.2, (_user, _target, move) => move.type === PokemonType.NORMAL), new Ability(AbilityId.SWEET_VEIL, 6) .attr(UserFieldStatusEffectImmunityAbAttr, StatusEffect.SLEEP) .attr(PostSummonUserFieldRemoveStatusEffectAbAttr, StatusEffect.SLEEP) @@ -6993,20 +8739,20 @@ export function initAbilities() { new Ability(AbilityId.GALE_WINGS, 6) .attr(ChangeMovePriorityAbAttr, (pokemon, move) => pokemon.isFullHp() && pokemon.getMoveType(move) === PokemonType.FLYING, 1), new Ability(AbilityId.MEGA_LAUNCHER, 6) - .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.PULSE_MOVE), 1.5), + .attr(MovePowerBoostAbAttr, (_user, _target, move) => move.hasFlag(MoveFlags.PULSE_MOVE), 1.5), new Ability(AbilityId.GRASS_PELT, 6) .conditionalAttr(getTerrainCondition(TerrainType.GRASSY), StatMultiplierAbAttr, Stat.DEF, 1.5) .ignorable(), new Ability(AbilityId.SYMBIOSIS, 6) .unimplemented(), new Ability(AbilityId.TOUGH_CLAWS, 6) - .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.MAKES_CONTACT), 1.3), + .attr(MovePowerBoostAbAttr, (_user, _target, move) => move.hasFlag(MoveFlags.MAKES_CONTACT), 1.3), new Ability(AbilityId.PIXILATE, 6) - .attr(MoveTypeChangeAbAttr, PokemonType.FAIRY, 1.2, (user, target, move) => move.type === PokemonType.NORMAL), + .attr(MoveTypeChangeAbAttr, PokemonType.FAIRY, 1.2, (_user, _target, move) => move.type === PokemonType.NORMAL), new Ability(AbilityId.GOOEY, 6) - .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.hasFlag(MoveFlags.MAKES_CONTACT), Stat.SPD, -1, false), + .attr(PostDefendStatStageChangeAbAttr, (_target, _user, move) => move.hasFlag(MoveFlags.MAKES_CONTACT), Stat.SPD, -1, false), new Ability(AbilityId.AERILATE, 6) - .attr(MoveTypeChangeAbAttr, PokemonType.FLYING, 1.2, (user, target, move) => move.type === PokemonType.NORMAL), + .attr(MoveTypeChangeAbAttr, PokemonType.FLYING, 1.2, (_user, _target, move) => move.type === PokemonType.NORMAL), new Ability(AbilityId.PARENTAL_BOND, 6) .attr(AddSecondStrikeAbAttr, 0.25), new Ability(AbilityId.DARK_AURA, 6) @@ -7017,9 +8763,9 @@ export function initAbilities() { .attr(FieldMoveTypePowerBoostAbAttr, PokemonType.FAIRY, 4 / 3), new Ability(AbilityId.AURA_BREAK, 6) .ignorable() - .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(AbilityId.DARK_AURA)), FieldMoveTypePowerBoostAbAttr, PokemonType.DARK, 9 / 16) - .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(AbilityId.FAIRY_AURA)), FieldMoveTypePowerBoostAbAttr, PokemonType.FAIRY, 9 / 16) - .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(AbilityId.DARK_AURA) || p.hasAbility(AbilityId.FAIRY_AURA)), + .conditionalAttr(_pokemon => globalScene.getField(true).some(p => p.hasAbility(AbilityId.DARK_AURA)), FieldMoveTypePowerBoostAbAttr, PokemonType.DARK, 9 / 16) + .conditionalAttr(_pokemon => globalScene.getField(true).some(p => p.hasAbility(AbilityId.FAIRY_AURA)), FieldMoveTypePowerBoostAbAttr, PokemonType.FAIRY, 9 / 16) + .conditionalAttr(_pokemon => globalScene.getField(true).some(p => p.hasAbility(AbilityId.DARK_AURA) || p.hasAbility(AbilityId.FAIRY_AURA)), PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonAuraBreak", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })), new Ability(AbilityId.PRIMORDIAL_SEA, 6) .attr(PostSummonWeatherChangeAbAttr, WeatherType.HEAVY_RAIN) @@ -7037,7 +8783,7 @@ export function initAbilities() { .attr(PreLeaveFieldClearWeatherAbAttr) .bypassFaint(), new Ability(AbilityId.STAMINA, 7) - .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, Stat.DEF, 1), + .attr(PostDefendStatStageChangeAbAttr, (_target, _user, move) => move.category !== MoveCategory.STATUS, Stat.DEF, 1), new Ability(AbilityId.WIMP_OUT, 7) .attr(PostDamageForceSwitchAbAttr) .edgeCase(), // Should not trigger when hurting itself in confusion, causes Fake Out to fail turn 1 and succeed turn 2 if pokemon is switched out before battle start via playing in Switch Mode @@ -7045,9 +8791,9 @@ export function initAbilities() { .attr(PostDamageForceSwitchAbAttr) .edgeCase(), // Should not trigger when hurting itself in confusion, causes Fake Out to fail turn 1 and succeed turn 2 if pokemon is switched out before battle start via playing in Switch Mode new Ability(AbilityId.WATER_COMPACTION, 7) - .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === PokemonType.WATER && move.category !== MoveCategory.STATUS, Stat.DEF, 2), + .attr(PostDefendStatStageChangeAbAttr, (_target, user, move) => user.getMoveType(move) === PokemonType.WATER && move.category !== MoveCategory.STATUS, Stat.DEF, 2), new Ability(AbilityId.MERCILESS, 7) - .attr(ConditionalCritAbAttr, (user, target, move) => target?.status?.effect === StatusEffect.TOXIC || target?.status?.effect === StatusEffect.POISON), + .attr(ConditionalCritAbAttr, (_user, target, _move) => target?.status?.effect === StatusEffect.TOXIC || target?.status?.effect === StatusEffect.POISON), new Ability(AbilityId.SHIELDS_DOWN, 7) .attr(PostBattleInitFormChangeAbAttr, () => 0) .attr(PostSummonFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0)) @@ -7061,7 +8807,7 @@ export function initAbilities() { .unsuppressable() .bypassFaint(), new Ability(AbilityId.STAKEOUT, 7) - .attr(MovePowerBoostAbAttr, (user, target, move) => !!target?.turnData.switchedInThisTurn, 2), + .attr(MovePowerBoostAbAttr, (_user, target, _move) => !!target?.turnData.switchedInThisTurn, 2), new Ability(AbilityId.WATER_BUBBLE, 7) .attr(ReceivedTypeDamageMultiplierAbAttr, PokemonType.FIRE, 0.5) .attr(MoveTypePowerBoostAbAttr, PokemonType.WATER, 2) @@ -7071,7 +8817,7 @@ export function initAbilities() { new Ability(AbilityId.STEELWORKER, 7) .attr(MoveTypePowerBoostAbAttr, PokemonType.STEEL), new Ability(AbilityId.BERSERK, 7) - .attr(PostDefendHpGatedStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, 0.5, [ Stat.SPATK ], 1) + .attr(PostDefendHpGatedStatStageChangeAbAttr, (_target, _user, move) => move.category !== MoveCategory.STATUS, 0.5, [ Stat.SPATK ], 1) .condition(getSheerForceHitDisableAbCondition()), new Ability(AbilityId.SLUSH_RUSH, 7) .attr(StatMultiplierAbAttr, Stat.SPD, 2) @@ -7079,9 +8825,9 @@ export function initAbilities() { new Ability(AbilityId.LONG_REACH, 7) .attr(IgnoreContactAbAttr), new Ability(AbilityId.LIQUID_VOICE, 7) - .attr(MoveTypeChangeAbAttr, PokemonType.WATER, 1, (user, target, move) => move.hasFlag(MoveFlags.SOUND_BASED)), + .attr(MoveTypeChangeAbAttr, PokemonType.WATER, 1, (_user, _target, move) => move.hasFlag(MoveFlags.SOUND_BASED)), new Ability(AbilityId.TRIAGE, 7) - .attr(ChangeMovePriorityAbAttr, (pokemon, move) => move.hasFlag(MoveFlags.TRIAGE_MOVE), 3), + .attr(ChangeMovePriorityAbAttr, (_pokemon, move) => move.hasFlag(MoveFlags.TRIAGE_MOVE), 3), new Ability(AbilityId.GALVANIZE, 7) .attr(MoveTypeChangeAbAttr, PokemonType.ELECTRIC, 1.2, (_user, _target, move) => move.type === PokemonType.NORMAL), new Ability(AbilityId.SURGE_SURFER, 7) @@ -7151,7 +8897,7 @@ export function initAbilities() { .attr(AllyMoveCategoryPowerBoostAbAttr, [ MoveCategory.SPECIAL ], 1.3), new Ability(AbilityId.FLUFFY, 7) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.doesFlagEffectApply({flag: MoveFlags.MAKES_CONTACT, user, target}), 0.5) - .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => user.getMoveType(move) === PokemonType.FIRE, 2) + .attr(ReceivedMoveDamageMultiplierAbAttr, (_target, user, move) => user.getMoveType(move) === PokemonType.FIRE, 2) .ignorable(), new Ability(AbilityId.DAZZLING, 7) .attr(FieldPriorityMoveImmunityAbAttr) @@ -7199,7 +8945,7 @@ export function initAbilities() { new Ability(AbilityId.FULL_METAL_BODY, 7) .attr(ProtectStatAbAttr), new Ability(AbilityId.SHADOW_SHIELD, 7) - .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => target.isFullHp(), 0.5), + .attr(ReceivedMoveDamageMultiplierAbAttr, (target, _user, _move) => target.isFullHp(), 0.5), new Ability(AbilityId.PRISM_ARMOR, 7) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => target.getMoveEffectiveness(user, move) >= 2, 0.75), new Ability(AbilityId.NEUROFORCE, 7) @@ -7215,7 +8961,7 @@ export function initAbilities() { .attr(FetchBallAbAttr) .condition(getOncePerBattleCondition(AbilityId.BALL_FETCH)), new Ability(AbilityId.COTTON_DOWN, 8) - .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, Stat.SPD, -1, false, true) + .attr(PostDefendStatStageChangeAbAttr, (_target, _user, move) => move.category !== MoveCategory.STATUS, Stat.SPD, -1, false, true) .bypassFaint(), new Ability(AbilityId.PROPELLER_TAIL, 8) .attr(BlockRedirectAbAttr), @@ -7238,20 +8984,20 @@ export function initAbilities() { new Ability(AbilityId.STALWART, 8) .attr(BlockRedirectAbAttr), new Ability(AbilityId.STEAM_ENGINE, 8) - .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => { + .attr(PostDefendStatStageChangeAbAttr, (_target, user, move) => { const moveType = user.getMoveType(move); return move.category !== MoveCategory.STATUS && (moveType === PokemonType.FIRE || moveType === PokemonType.WATER); }, Stat.SPD, 6), new Ability(AbilityId.PUNK_ROCK, 8) - .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.SOUND_BASED), 1.3) - .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.hasFlag(MoveFlags.SOUND_BASED), 0.5) + .attr(MovePowerBoostAbAttr, (_user, _target, move) => move.hasFlag(MoveFlags.SOUND_BASED), 1.3) + .attr(ReceivedMoveDamageMultiplierAbAttr, (_target, _user, move) => move.hasFlag(MoveFlags.SOUND_BASED), 0.5) .ignorable(), new Ability(AbilityId.SAND_SPIT, 8) - .attr(PostDefendWeatherChangeAbAttr, WeatherType.SANDSTORM, (target, user, move) => move.category !== MoveCategory.STATUS) + .attr(PostDefendWeatherChangeAbAttr, WeatherType.SANDSTORM, (_target, _user, move) => move.category !== MoveCategory.STATUS) .bypassFaint(), new Ability(AbilityId.ICE_SCALES, 8) - .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.category === MoveCategory.SPECIAL, 0.5) + .attr(ReceivedMoveDamageMultiplierAbAttr, (_target, _user, move) => move.category === MoveCategory.SPECIAL, 0.5) .ignorable(), new Ability(AbilityId.RIPEN, 8) .attr(DoubleBerryEffectAbAttr), @@ -7265,7 +9011,7 @@ export function initAbilities() { // When weather changes to HAIL or SNOW while pokemon is fielded, add BattlerTagType.ICE_FACE .attr(PostWeatherChangeAddBattlerTagAttr, BattlerTagType.ICE_FACE, 0, WeatherType.HAIL, WeatherType.SNOW) .attr(FormBlockDamageAbAttr, - (target, user, move) => move.category === MoveCategory.PHYSICAL && !!target.getTag(BattlerTagType.ICE_FACE), 0, BattlerTagType.ICE_FACE, + (target, _user, move) => move.category === MoveCategory.PHYSICAL && !!target.getTag(BattlerTagType.ICE_FACE), 0, BattlerTagType.ICE_FACE, (pokemon, abilityName) => i18next.t("abilityTriggers:iceFaceAvoidedDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName: abilityName })) .attr(PostBattleInitFormChangeAbAttr, () => 0) .uncopiable() @@ -7343,13 +9089,13 @@ export function initAbilities() { .attr(PostDefendTerrainChangeAbAttr, TerrainType.GRASSY) .bypassFaint(), new Ability(AbilityId.THERMAL_EXCHANGE, 9) - .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === PokemonType.FIRE && move.category !== MoveCategory.STATUS, Stat.ATK, 1) + .attr(PostDefendStatStageChangeAbAttr, (_target, user, move) => user.getMoveType(move) === PokemonType.FIRE && move.category !== MoveCategory.STATUS, Stat.ATK, 1) .attr(StatusEffectImmunityAbAttr, StatusEffect.BURN) .attr(PostSummonHealStatusAbAttr, StatusEffect.BURN) .ignorable(), new Ability(AbilityId.ANGER_SHELL, 9) - .attr(PostDefendHpGatedStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, 0.5, [ Stat.ATK, Stat.SPATK, Stat.SPD ], 1) - .attr(PostDefendHpGatedStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, 0.5, [ Stat.DEF, Stat.SPDEF ], -1) + .attr(PostDefendHpGatedStatStageChangeAbAttr, (_target, _user, move) => move.category !== MoveCategory.STATUS, 0.5, [ Stat.ATK, Stat.SPATK, Stat.SPD ], 1) + .attr(PostDefendHpGatedStatStageChangeAbAttr, (_target, _user, move) => move.category !== MoveCategory.STATUS, 0.5, [ Stat.DEF, Stat.SPDEF ], -1) .condition(getSheerForceHitDisableAbCondition()), new Ability(AbilityId.PURIFYING_SALT, 9) .attr(StatusEffectImmunityAbAttr) @@ -7369,7 +9115,7 @@ export function initAbilities() { new Ability(AbilityId.ROCKY_PAYLOAD, 9) .attr(MoveTypePowerBoostAbAttr, PokemonType.ROCK), new Ability(AbilityId.WIND_POWER, 9) - .attr(PostDefendApplyBattlerTagAbAttr, (target, user, move) => move.hasFlag(MoveFlags.WIND_MOVE), BattlerTagType.CHARGED), + .attr(PostDefendApplyBattlerTagAbAttr, (_target, _user, move) => move.hasFlag(MoveFlags.WIND_MOVE), BattlerTagType.CHARGED), new Ability(AbilityId.ZERO_TO_HERO, 9) .uncopiable() .unreplaceable() @@ -7386,7 +9132,7 @@ export function initAbilities() { .unreplaceable() .edgeCase(), // Encore, Frenzy, and other non-`TURN_END` tags don't lapse correctly on the commanding Pokemon. new Ability(AbilityId.ELECTROMORPHOSIS, 9) - .attr(PostDefendApplyBattlerTagAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, BattlerTagType.CHARGED), + .attr(PostDefendApplyBattlerTagAbAttr, (_target, _user, move) => move.category !== MoveCategory.STATUS, BattlerTagType.CHARGED), new Ability(AbilityId.PROTOSYNTHESIS, 9) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN), PostSummonAddBattlerTagAbAttr, BattlerTagType.PROTOSYNTHESIS, 0, true) .attr(PostWeatherChangeAddBattlerTagAttr, BattlerTagType.PROTOSYNTHESIS, 0, WeatherType.SUNNY, WeatherType.HARSH_SUN) @@ -7432,14 +9178,14 @@ export function initAbilities() { new Ability(AbilityId.CUD_CHEW, 9) .attr(RepeatBerryNextTurnAbAttr), new Ability(AbilityId.SHARPNESS, 9) - .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.SLICING_MOVE), 1.5), + .attr(MovePowerBoostAbAttr, (_user, _target, move) => move.hasFlag(MoveFlags.SLICING_MOVE), 1.5), new Ability(AbilityId.SUPREME_OVERLORD, 9) - .attr(VariableMovePowerBoostAbAttr, (user, target, move) => 1 + 0.1 * Math.min(user.isPlayer() ? globalScene.arena.playerFaints : globalScene.currentBattle.enemyFaints, 5)) + .attr(VariableMovePowerBoostAbAttr, (user, _target, _move) => 1 + 0.1 * Math.min(user.isPlayer() ? globalScene.arena.playerFaints : globalScene.currentBattle.enemyFaints, 5)) .partial(), // Should only boost once, on summon new Ability(AbilityId.COSTAR, 9) .attr(PostSummonCopyAllyStatsAbAttr), new Ability(AbilityId.TOXIC_DEBRIS, 9) - .attr(PostDefendApplyArenaTrapTagAbAttr, (target, user, move) => move.category === MoveCategory.PHYSICAL, ArenaTagType.TOXIC_SPIKES) + .attr(PostDefendApplyArenaTrapTagAbAttr, (_target, _user, move) => move.category === MoveCategory.PHYSICAL, ArenaTagType.TOXIC_SPIKES) .bypassFaint(), new Ability(AbilityId.ARMOR_TAIL, 9) .attr(FieldPriorityMoveImmunityAbAttr) @@ -7448,9 +9194,9 @@ export function initAbilities() { .attr(TypeImmunityHealAbAttr, PokemonType.GROUND) .ignorable(), new Ability(AbilityId.MYCELIUM_MIGHT, 9) - .attr(ChangeMovePriorityAbAttr, (pokemon, move) => move.category === MoveCategory.STATUS, -0.2) - .attr(PreventBypassSpeedChanceAbAttr, (pokemon, move) => move.category === MoveCategory.STATUS) - .attr(MoveAbilityBypassAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS), + .attr(ChangeMovePriorityAbAttr, (_pokemon, move) => move.category === MoveCategory.STATUS, -0.2) + .attr(PreventBypassSpeedChanceAbAttr, (_pokemon, move) => move.category === MoveCategory.STATUS) + .attr(MoveAbilityBypassAbAttr, (_pokemon, move: Move) => move.category === MoveCategory.STATUS), new Ability(AbilityId.MINDS_EYE, 9) .attr(IgnoreTypeImmunityAbAttr, PokemonType.GHOST, [ PokemonType.NORMAL, PokemonType.FIGHTING ]) .attr(ProtectStatAbAttr, Stat.ACC) From 1c4edabd1dde2b30179aebe08f9a3bdfad199bc3 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Sun, 8 Jun 2025 01:55:30 -0500 Subject: [PATCH 67/71] [Refactor] Ensure that new phases are created through the phase manager https://github.com/pagefaultgames/pokerogue/pull/5955 * Add newPhase method to phase-manager * Update calls to append/prepend phase to use string phase * Replace instantiations of new phase with phase manager --- src/@types/phase-types.ts | 299 +--------------- src/battle-scene.ts | 47 +-- src/data/abilities/ability.ts | 325 ++++++++++-------- src/data/arena-tag.ts | 61 ++-- src/data/battler-tags.ts | 226 ++++++------ src/data/berry.ts | 37 +- src/data/moves/move.ts | 105 +++--- .../encounters/a-trainers-test-encounter.ts | 3 +- .../encounters/absolute-avarice-encounter.ts | 9 +- .../an-offer-you-cant-refuse-encounter.ts | 3 +- .../encounters/berries-abound-encounter.ts | 9 +- .../encounters/bug-type-superfan-encounter.ts | 7 +- .../encounters/dancing-lessons-encounter.ts | 21 +- .../encounters/dark-deal-encounter.ts | 3 +- .../encounters/delibirdy-encounter.ts | 13 +- .../encounters/fiery-fallout-encounter.ts | 17 +- .../encounters/fight-or-flight-encounter.ts | 9 +- .../encounters/fun-and-games-encounter.ts | 6 +- .../encounters/mysterious-chest-encounter.ts | 3 +- .../encounters/safari-zone-encounter.ts | 6 +- .../slumbering-snorlax-encounter.ts | 3 +- .../teleporting-hijinks-encounter.ts | 9 +- .../encounters/the-strong-stuff-encounter.ts | 9 +- .../the-winstrate-challenge-encounter.ts | 9 +- .../encounters/uncommon-breed-encounter.ts | 9 +- .../utils/encounter-phase-utils.ts | 56 ++- .../utils/encounter-pokemon-utils.ts | 3 +- src/field/arena.ts | 26 +- src/field/pokemon.ts | 51 ++- src/modifier/modifier.ts | 126 ++++--- src/phase-manager.ts | 294 +++++++++++++++- src/phases/attempt-capture-phase.ts | 3 +- src/phases/attempt-run-phase.ts | 9 +- src/phases/battle-end-phase.ts | 3 +- src/phases/berry-phase.ts | 8 +- src/phases/check-status-effect-phase.ts | 3 +- src/phases/check-switch-phase.ts | 8 +- src/phases/command-phase.ts | 9 +- src/phases/egg-lapse-phase.ts | 6 +- src/phases/encounter-phase.ts | 71 ++-- src/phases/evolution-phase.ts | 12 +- src/phases/exp-phase.ts | 3 +- src/phases/faint-phase.ts | 20 +- src/phases/form-change-phase.ts | 3 +- src/phases/game-over-phase.ts | 42 +-- src/phases/level-up-phase.ts | 6 +- src/phases/login-phase.ts | 8 +- src/phases/message-phase.ts | 9 +- src/phases/move-charge-phase.ts | 3 +- src/phases/move-effect-phase.ts | 27 +- src/phases/move-phase.ts | 38 +- src/phases/mystery-encounter-phases.ts | 58 ++-- src/phases/post-game-over-phase.ts | 3 +- src/phases/quiet-form-change-phase.ts | 12 +- src/phases/revival-blessing-phase.ts | 24 +- src/phases/select-biome-phase.ts | 6 +- src/phases/select-modifier-phase.ts | 12 +- src/phases/select-starter-phase.ts | 3 +- src/phases/select-target-phase.ts | 3 +- src/phases/show-ability-phase.ts | 5 +- src/phases/show-party-exp-bar-phase.ts | 6 +- src/phases/stat-stage-change-phase.ts | 23 +- src/phases/summon-phase.ts | 9 +- src/phases/switch-phase.ts | 5 +- src/phases/switch-summon-phase.ts | 3 +- src/phases/title-phase.ts | 23 +- src/phases/trainer-victory-phase.ts | 36 +- src/phases/turn-end-phase.ts | 18 +- src/phases/turn-init-phase.ts | 19 +- src/phases/turn-start-phase.ts | 138 ++++---- src/phases/unavailable-phase.ts | 3 +- src/phases/victory-phase.ts | 62 ++-- src/system/game-data.ts | 11 +- src/ui/challenges-select-ui-handler.ts | 6 +- src/ui/starter-select-ui-handler.ts | 9 +- test/testUtils/gameManager.ts | 4 +- 76 files changed, 1302 insertions(+), 1294 deletions(-) diff --git a/src/@types/phase-types.ts b/src/@types/phase-types.ts index 596d9b15723..1d68c7921dd 100644 --- a/src/@types/phase-types.ts +++ b/src/@types/phase-types.ts @@ -1,286 +1,25 @@ -import type { MoveAnim } from "#app/data/battle-anims"; -import type { AddEnemyBuffModifierPhase } from "#app/phases/add-enemy-buff-modifier-phase"; -import type { AttemptCapturePhase } from "#app/phases/attempt-capture-phase"; -import type { AttemptRunPhase } from "#app/phases/attempt-run-phase"; -import type { BattleEndPhase } from "#app/phases/battle-end-phase"; -import type { BerryPhase } from "#app/phases/berry-phase"; -import type { CheckStatusEffectPhase } from "#app/phases/check-status-effect-phase"; -import type { CheckSwitchPhase } from "#app/phases/check-switch-phase"; -import type { CommandPhase } from "#app/phases/command-phase"; -import type { CommonAnimPhase } from "#app/phases/common-anim-phase"; -import type { DamageAnimPhase } from "#app/phases/damage-anim-phase"; -import type { EggHatchPhase } from "#app/phases/egg-hatch-phase"; -import type { EggLapsePhase } from "#app/phases/egg-lapse-phase"; -import type { EggSummaryPhase } from "#app/phases/egg-summary-phase"; -import type { EncounterPhase } from "#app/phases/encounter-phase"; -import type { EndCardPhase } from "#app/phases/end-card-phase"; -import type { EndEvolutionPhase } from "#app/phases/end-evolution-phase"; -import type { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; -import type { EvolutionPhase } from "#app/phases/evolution-phase"; -import type { ExpPhase } from "#app/phases/exp-phase"; -import type { FaintPhase } from "#app/phases/faint-phase"; -import type { FormChangePhase } from "#app/phases/form-change-phase"; -import type { GameOverModifierRewardPhase } from "#app/phases/game-over-modifier-reward-phase"; -import type { GameOverPhase } from "#app/phases/game-over-phase"; -import type { HideAbilityPhase } from "#app/phases/hide-ability-phase"; -import type { HidePartyExpBarPhase } from "#app/phases/hide-party-exp-bar-phase"; -import type { LearnMovePhase } from "#app/phases/learn-move-phase"; -import type { LevelCapPhase } from "#app/phases/level-cap-phase"; -import type { LevelUpPhase } from "#app/phases/level-up-phase"; -import type { LoadMoveAnimPhase } from "#app/phases/load-move-anim-phase"; -import type { LoginPhase } from "#app/phases/login-phase"; -import type { MessagePhase } from "#app/phases/message-phase"; -import type { ModifierRewardPhase } from "#app/phases/modifier-reward-phase"; -import type { MoneyRewardPhase } from "#app/phases/money-reward-phase"; -import type { MoveAnimPhase } from "#app/phases/move-anim-phase"; -import type { MoveChargePhase } from "#app/phases/move-charge-phase"; -import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import type { MoveEndPhase } from "#app/phases/move-end-phase"; -import type { MoveHeaderPhase } from "#app/phases/move-header-phase"; -import type { MovePhase } from "#app/phases/move-phase"; -import type { - MysteryEncounterPhase, - MysteryEncounterOptionSelectedPhase, - MysteryEncounterBattlePhase, - MysteryEncounterRewardsPhase, - PostMysteryEncounterPhase, - MysteryEncounterBattleStartCleanupPhase, -} from "#app/phases/mystery-encounter-phases"; -import type { NewBattlePhase } from "#app/phases/new-battle-phase"; -import type { NewBiomeEncounterPhase } from "#app/phases/new-biome-encounter-phase"; -import type { NextEncounterPhase } from "#app/phases/next-encounter-phase"; -import type { ObtainStatusEffectPhase } from "#app/phases/obtain-status-effect-phase"; -import type { PartyExpPhase } from "#app/phases/party-exp-phase"; -import type { PartyHealPhase } from "#app/phases/party-heal-phase"; -import type { PokemonAnimPhase } from "#app/phases/pokemon-anim-phase"; -import type { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; -import type { PokemonTransformPhase } from "#app/phases/pokemon-transform-phase"; -import type { PostGameOverPhase } from "#app/phases/post-game-over-phase"; -import type { PostSummonPhase } from "#app/phases/post-summon-phase"; -import type { PostTurnStatusEffectPhase } from "#app/phases/post-turn-status-effect-phase"; -import type { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; -import type { ReloadSessionPhase } from "#app/phases/reload-session-phase"; -import type { ResetStatusPhase } from "#app/phases/reset-status-phase"; -import type { ReturnPhase } from "#app/phases/return-phase"; -import type { RevivalBlessingPhase } from "#app/phases/revival-blessing-phase"; -import type { RibbonModifierRewardPhase } from "#app/phases/ribbon-modifier-reward-phase"; -import type { ScanIvsPhase } from "#app/phases/scan-ivs-phase"; -import type { SelectBiomePhase } from "#app/phases/select-biome-phase"; -import type { SelectChallengePhase } from "#app/phases/select-challenge-phase"; -import type { SelectGenderPhase } from "#app/phases/select-gender-phase"; -import type { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import type { SelectStarterPhase } from "#app/phases/select-starter-phase"; -import type { SelectTargetPhase } from "#app/phases/select-target-phase"; -import type { ShinySparklePhase } from "#app/phases/shiny-sparkle-phase"; -import type { ShowAbilityPhase } from "#app/phases/show-ability-phase"; -import type { ShowPartyExpBarPhase } from "#app/phases/show-party-exp-bar-phase"; -import type { ShowTrainerPhase } from "#app/phases/show-trainer-phase"; -import type { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; -import type { SummonMissingPhase } from "#app/phases/summon-missing-phase"; -import type { SummonPhase } from "#app/phases/summon-phase"; -import type { SwitchBiomePhase } from "#app/phases/switch-biome-phase"; -import type { SwitchPhase } from "#app/phases/switch-phase"; -import type { SwitchSummonPhase } from "#app/phases/switch-summon-phase"; -import type { TeraPhase } from "#app/phases/tera-phase"; -import type { TitlePhase } from "#app/phases/title-phase"; -import type { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase"; -import type { TrainerVictoryPhase } from "#app/phases/trainer-victory-phase"; -import type { TurnEndPhase } from "#app/phases/turn-end-phase"; -import type { TurnInitPhase } from "#app/phases/turn-init-phase"; -import type { TurnStartPhase } from "#app/phases/turn-start-phase"; -import type { UnavailablePhase } from "#app/phases/unavailable-phase"; -import type { UnlockPhase } from "#app/phases/unlock-phase"; -import type { VictoryPhase } from "#app/phases/victory-phase"; -import type { WeatherEffectPhase } from "#app/phases/weather-effect-phase"; +import type { PhaseConstructorMap } from "#app/phase-manager"; -export type PhaseClass = - | typeof AddEnemyBuffModifierPhase - | typeof AttemptCapturePhase - | typeof AttemptRunPhase - | typeof BattleEndPhase - | typeof BerryPhase - | typeof CheckStatusEffectPhase - | typeof CheckSwitchPhase - | typeof CommandPhase - | typeof CommonAnimPhase - | typeof DamageAnimPhase - | typeof EggHatchPhase - | typeof EggLapsePhase - | typeof EggSummaryPhase - | typeof EncounterPhase - | typeof EndCardPhase - | typeof EndEvolutionPhase - | typeof EnemyCommandPhase - | typeof EvolutionPhase - | typeof FormChangePhase - | typeof ExpPhase - | typeof FaintPhase - | typeof FormChangePhase - | typeof GameOverPhase - | typeof GameOverModifierRewardPhase - | typeof HideAbilityPhase - | typeof HidePartyExpBarPhase - | typeof LearnMovePhase - | typeof LevelUpPhase - | typeof LevelCapPhase - | typeof LoadMoveAnimPhase - | typeof LoginPhase - | typeof MessagePhase - | typeof ModifierRewardPhase - | typeof MoneyRewardPhase - | typeof MoveAnimPhase - | typeof MoveChargePhase - | typeof MoveEffectPhase - | typeof MoveEndPhase - | typeof MoveHeaderPhase - | typeof MovePhase - | typeof MysteryEncounterPhase - | typeof MysteryEncounterOptionSelectedPhase - | typeof MysteryEncounterBattlePhase - | typeof MysteryEncounterRewardsPhase - | typeof MysteryEncounterBattleStartCleanupPhase - | typeof MysteryEncounterRewardsPhase - | typeof PostMysteryEncounterPhase - | typeof NewBattlePhase - | typeof NewBiomeEncounterPhase - | typeof NextEncounterPhase - | typeof ObtainStatusEffectPhase - | typeof PartyExpPhase - | typeof PartyHealPhase - | typeof PokemonAnimPhase - | typeof PokemonHealPhase - | typeof PokemonTransformPhase - | typeof PostGameOverPhase - | typeof PostSummonPhase - | typeof PostTurnStatusEffectPhase - | typeof QuietFormChangePhase - | typeof ReloadSessionPhase - | typeof ResetStatusPhase - | typeof ReturnPhase - | typeof RevivalBlessingPhase - | typeof RibbonModifierRewardPhase - | typeof ScanIvsPhase - | typeof SelectBiomePhase - | typeof SelectChallengePhase - | typeof SelectGenderPhase - | typeof SelectModifierPhase - | typeof SelectStarterPhase - | typeof SelectTargetPhase - | typeof ShinySparklePhase - | typeof ShowAbilityPhase - | typeof ShowTrainerPhase - | typeof ShowPartyExpBarPhase - | typeof StatStageChangePhase - | typeof SummonMissingPhase - | typeof SummonPhase - | typeof SwitchBiomePhase - | typeof SwitchPhase - | typeof SwitchSummonPhase - | typeof TeraPhase - | typeof TitlePhase - | typeof ToggleDoublePositionPhase - | typeof TrainerVictoryPhase - | typeof TurnEndPhase - | typeof TurnInitPhase - | typeof TurnStartPhase - | typeof UnavailablePhase - | typeof UnlockPhase - | typeof VictoryPhase - | typeof WeatherEffectPhase; +// Intentionally export the types of everything in phase-manager, as this file is meant to be +// the centralized place for type definitions for the phase system. +export type * from "#app/phase-manager"; -/** Typescript map used to map a string phase to the actual phase type */ +// This file includes helpful types for the phase system. +// It intentionally imports the phase constructor map from the phase manager (and re-exports it) + +/** + * Map of phase names to constructors for said phase + */ export type PhaseMap = { - AddEnemyBuffModifierPhase: AddEnemyBuffModifierPhase; - AttemptCapturePhase: AttemptCapturePhase; - AttemptRunPhase: AttemptRunPhase; - BattleEndPhase: BattleEndPhase; - BerryPhase: BerryPhase; - CheckStatusEffectPhase: CheckStatusEffectPhase; - CheckSwitchPhase: CheckSwitchPhase; - CommandPhase: CommandPhase; - CommonAnimPhase: CommonAnimPhase; - DamageAnimPhase: DamageAnimPhase; - EggHatchPhase: EggHatchPhase; - EggLapsePhase: EggLapsePhase; - EggSummaryPhase: EggSummaryPhase; - EncounterPhase: EncounterPhase; - EndCardPhase: EndCardPhase; - EndEvolutionPhase: EndEvolutionPhase; - EnemyCommandPhase: EnemyCommandPhase; - EvolutionPhase: EvolutionPhase; - ExpPhase: ExpPhase; - FaintPhase: FaintPhase; - FormChangePhase: FormChangePhase; - GameOverPhase: GameOverPhase; - GameOverModifierRewardPhase: GameOverModifierRewardPhase; - HideAbilityPhase: HideAbilityPhase; - HidePartyExpBarPhase: HidePartyExpBarPhase; - LearnMovePhase: LearnMovePhase; - LevelCapPhase: LevelCapPhase; - LevelUpPhase: LevelUpPhase; - LoadMoveAnimPhase: LoadMoveAnimPhase; - LoginPhase: LoginPhase; - MessagePhase: MessagePhase; - ModifierRewardPhase: ModifierRewardPhase; - MoneyRewardPhase: MoneyRewardPhase; - MoveAnimPhase: MoveAnimPhase; - MoveChargePhase: MoveChargePhase; - MoveEffectPhase: MoveEffectPhase; - MoveEndPhase: MoveEndPhase; - MoveHeaderPhase: MoveHeaderPhase; - MovePhase: MovePhase; - MysteryEncounterPhase: MysteryEncounterPhase; - MysteryEncounterOptionSelectedPhase: MysteryEncounterOptionSelectedPhase; - MysteryEncounterBattlePhase: MysteryEncounterBattlePhase; - MysteryEncounterBattleStartCleanupPhase: MysteryEncounterBattleStartCleanupPhase; - MysteryEncounterRewardsPhase: MysteryEncounterRewardsPhase; - PostMysteryEncounterPhase: PostMysteryEncounterPhase; - NewBattlePhase: NewBattlePhase; - NewBiomeEncounterPhase: NewBiomeEncounterPhase; - NextEncounterPhase: NextEncounterPhase; - ObtainStatusEffectPhase: ObtainStatusEffectPhase; - PartyExpPhase: PartyExpPhase; - PartyHealPhase: PartyHealPhase; - PokemonAnimPhase: PokemonAnimPhase; - PokemonHealPhase: PokemonHealPhase; - PokemonTransformPhase: PokemonTransformPhase; - PostGameOverPhase: PostGameOverPhase; - PostSummonPhase: PostSummonPhase; - PostTurnStatusEffectPhase: PostTurnStatusEffectPhase; - QuietFormChangePhase: QuietFormChangePhase; - ReloadSessionPhase: ReloadSessionPhase; - ResetStatusPhase: ResetStatusPhase; - ReturnPhase: ReturnPhase; - RevivalBlessingPhase: RevivalBlessingPhase; - RibbonModifierRewardPhase: RibbonModifierRewardPhase; - ScanIvsPhase: ScanIvsPhase; - SelectBiomePhase: SelectBiomePhase; - SelectChallengePhase: SelectChallengePhase; - SelectGenderPhase: SelectGenderPhase; - SelectModifierPhase: SelectModifierPhase; - SelectStarterPhase: SelectStarterPhase; - SelectTargetPhase: SelectTargetPhase; - ShinySparklePhase: ShinySparklePhase; - ShowAbilityPhase: ShowAbilityPhase; - ShowPartyExpBarPhase: ShowPartyExpBarPhase; - ShowTrainerPhase: ShowTrainerPhase; - StatStageChangePhase: StatStageChangePhase; - SummonMissingPhase: SummonMissingPhase; - SummonPhase: SummonPhase; - SwitchBiomePhase: SwitchBiomePhase; - SwitchPhase: SwitchPhase; - SwitchSummonPhase: SwitchSummonPhase; - TeraPhase: TeraPhase; - TitlePhase: TitlePhase; - ToggleDoublePositionPhase: ToggleDoublePositionPhase; - TrainerVictoryPhase: TrainerVictoryPhase; - TurnEndPhase: TurnEndPhase; - TurnInitPhase: TurnInitPhase; - TurnStartPhase: TurnStartPhase; - UnavailablePhase: UnavailablePhase; - UnlockPhase: UnlockPhase; - VictoryPhase: VictoryPhase; - WeatherEffectPhase: WeatherEffectPhase; + [K in keyof PhaseConstructorMap]: InstanceType; }; +/** + * Union type of all phase constructors. + */ +export type PhaseClass = PhaseConstructorMap[keyof PhaseConstructorMap]; + +/** + * Union type of all phase names as strings. + */ export type PhaseString = keyof PhaseMap; diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 23601910e4d..7743302cf94 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -108,7 +108,6 @@ import { SpeciesFormChangeManualTrigger, SpeciesFormChangeTimeOfDayTrigger, } from "#app/data/pokemon-forms"; -import { FormChangePhase } from "#app/phases/form-change-phase"; import { getTypeRgb } from "#app/data/type"; import { PokemonType } from "#enums/pokemon-type"; import PokemonSpriteSparkleHandler from "#app/field/pokemon-sprite-sparkle-handler"; @@ -142,18 +141,7 @@ import i18next from "i18next"; import { TrainerType } from "#enums/trainer-type"; import { battleSpecDialogue } from "#app/data/dialogue"; import { LoadingScene } from "#app/loading-scene"; -import { LevelCapPhase } from "#app/phases/level-cap-phase"; -import { LoginPhase } from "#app/phases/login-phase"; import type { MovePhase } from "#app/phases/move-phase"; -import { NewBiomeEncounterPhase } from "#app/phases/new-biome-encounter-phase"; -import { NextEncounterPhase } from "#app/phases/next-encounter-phase"; -import { PokemonAnimPhase } from "#app/phases/pokemon-anim-phase"; -import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; -import { ReturnPhase } from "#app/phases/return-phase"; -import { ShowTrainerPhase } from "#app/phases/show-trainer-phase"; -import { SummonPhase } from "#app/phases/summon-phase"; -import { TitlePhase } from "#app/phases/title-phase"; -import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase"; import { ShopCursorTarget } from "#app/enums/shop-cursor-target"; import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { @@ -168,8 +156,6 @@ import { MysteryEncounterSaveData } from "#app/data/mystery-encounters/mystery-e import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import type HeldModifierConfig from "#app/@types/held-modifier-config"; -import { ExpPhase } from "#app/phases/exp-phase"; -import { ShowPartyExpBarPhase } from "#app/phases/show-party-exp-bar-phase"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { ExpGainsSpeed } from "#enums/exp-gains-speed"; import { BattlerTagType } from "#enums/battler-tag-type"; @@ -699,8 +685,8 @@ export default class BattleScene extends SceneBase { ).then(() => loadMoveAnimAssets(defaultMoves, true)), this.initStarterColors(), ]).then(() => { - this.phaseManager.pushPhase(new LoginPhase()); - this.phaseManager.pushPhase(new TitlePhase()); + this.phaseManager.pushNew("LoginPhase"); + this.phaseManager.pushNew("TitlePhase"); this.phaseManager.shiftPhase(); }); @@ -1475,7 +1461,7 @@ export default class BattleScene extends SceneBase { playerField.forEach((pokemon, p) => { if (pokemon.isOnField()) { - this.phaseManager.pushPhase(new ReturnPhase(p)); + this.phaseManager.pushNew("ReturnPhase", p); } }); @@ -1492,7 +1478,7 @@ export default class BattleScene extends SceneBase { } if (!this.trainer.visible) { - this.phaseManager.pushPhase(new ShowTrainerPhase()); + this.phaseManager.pushNew("ShowTrainerPhase"); } } @@ -1501,13 +1487,13 @@ export default class BattleScene extends SceneBase { } if (!this.gameMode.hasRandomBiomes && !isNewBiome) { - this.phaseManager.pushPhase(new NextEncounterPhase()); + this.phaseManager.pushNew("NextEncounterPhase"); } else { - this.phaseManager.pushPhase(new NewBiomeEncounterPhase()); + this.phaseManager.pushNew("NewBiomeEncounterPhase"); const newMaxExpLevel = this.getMaxExpLevel(); if (newMaxExpLevel > maxExpLevel) { - this.phaseManager.pushPhase(new LevelCapPhase()); + this.phaseManager.pushNew("LevelCapPhase"); } } } @@ -3199,9 +3185,9 @@ export default class BattleScene extends SceneBase { if (matchingFormChange) { let phase: Phase; if (pokemon.isPlayer() && !matchingFormChange.quiet) { - phase = new FormChangePhase(pokemon, matchingFormChange, modal); + phase = this.phaseManager.create("FormChangePhase", pokemon, matchingFormChange, modal); } else { - phase = new QuietFormChangePhase(pokemon, matchingFormChange); + phase = this.phaseManager.create("QuietFormChangePhase", pokemon, matchingFormChange); } if (pokemon.isPlayer() && !matchingFormChange.quiet && modal) { this.phaseManager.overridePhase(phase); @@ -3223,11 +3209,12 @@ export default class BattleScene extends SceneBase { fieldAssets?: Phaser.GameObjects.Sprite[], delayed = false, ): boolean { - const phase: Phase = new PokemonAnimPhase(battleAnimType, pokemon, fieldAssets); + const phaseManager = this.phaseManager; + const phase: Phase = phaseManager.create("PokemonAnimPhase", battleAnimType, pokemon, fieldAssets); if (delayed) { - this.phaseManager.pushPhase(phase); + phaseManager.pushPhase(phase); } else { - this.phaseManager.unshiftPhase(phase); + phaseManager.unshiftPhase(phase); } return true; } @@ -3335,9 +3322,9 @@ export default class BattleScene extends SceneBase { this.currentBattle.double = true; const availablePartyMembers = this.getPlayerParty().filter(p => p.isAllowedInBattle()); if (availablePartyMembers.length > 1) { - this.phaseManager.pushPhase(new ToggleDoublePositionPhase(true)); + this.phaseManager.pushNew("ToggleDoublePositionPhase", true); if (!availablePartyMembers[1].isOnField()) { - this.phaseManager.pushPhase(new SummonPhase(1)); + this.phaseManager.pushNew("SummonPhase", 1); } } @@ -3461,8 +3448,8 @@ export default class BattleScene extends SceneBase { const partyMemberIndex = party.indexOf(expPartyMembers[pm]); this.phaseManager.unshiftPhase( expPartyMembers[pm].isOnField() - ? new ExpPhase(partyMemberIndex, exp) - : new ShowPartyExpBarPhase(partyMemberIndex, exp), + ? this.phaseManager.create("ExpPhase", partyMemberIndex, exp) + : this.phaseManager.create("ShowPartyExpBarPhase", partyMemberIndex, exp), ); } } diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index 9269f84d269..a79e2206348 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -47,16 +47,8 @@ import { Command } from "#app/ui/command-ui-handler"; import { BerryModifierType } from "#app/modifier/modifier-type"; import { getPokeballName } from "#app/data/pokeball"; import { BattleType } from "#enums/battle-type"; -import { MovePhase } from "#app/phases/move-phase"; -import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; +import type { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { globalScene } from "#app/global-scene"; -import { SwitchPhase } from "#app/phases/switch-phase"; -import { SwitchSummonPhase } from "#app/phases/switch-summon-phase"; -import { BattleEndPhase } from "#app/phases/battle-end-phase"; -import { NewBattlePhase } from "#app/phases/new-battle-phase"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { PokemonTransformPhase } from "#app/phases/pokemon-transform-phase"; import { allAbilities } from "#app/data/data-lists"; import { AbAttr } from "#app/data/abilities/ab-attrs/ab-attr"; import { Ability } from "#app/data/abilities/ability-class"; @@ -77,7 +69,6 @@ import { MoveFlags } from "#enums/MoveFlags"; import { MoveTarget } from "#enums/MoveTarget"; import { MoveCategory } from "#enums/MoveCategory"; import type { BerryType } from "#enums/berry-type"; -import { CommonAnimPhase } from "#app/phases/common-anim-phase"; import { CommonAnim } from "../battle-anims"; import { getBerryEffectFunc } from "../berry"; import { BerryUsedEvent } from "#app/events/battle-scene"; @@ -98,7 +89,6 @@ import type { import type { BattlerIndex } from "#app/battle"; import type Move from "#app/data/moves/move"; import type { ArenaTrapTag, SuppressAbilitiesTag } from "#app/data/arena-tag"; -import { SelectBiomePhase } from "#app/phases/select-biome-phase"; import { noAbilityTypeOverrideMoves } from "../moves/invalid-moves"; export class BlockRecoilDamageAttr extends AbAttr { @@ -200,10 +190,13 @@ export class PostTeraFormChangeStatChangeAbAttr extends AbAttr { const statStageChangePhases: StatStageChangePhase[] = []; if (!simulated) { - statStageChangePhases.push(new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages)); + const phaseManager = globalScene.phaseManager; + statStageChangePhases.push( + phaseManager.create("StatStageChangePhase", pokemon.getBattlerIndex(), true, this.stats, this.stages), + ); for (const statStageChangePhase of statStageChangePhases) { - globalScene.phaseManager.unshiftPhase(statStageChangePhase); + phaseManager.unshiftPhase(statStageChangePhase); } } } @@ -581,16 +574,15 @@ export class TypeImmunityHealAbAttr extends TypeImmunityAbAttr { super.applyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); if (!pokemon.isFullHp() && !simulated) { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - pokemon.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() / 4), - i18next.t("abilityTriggers:typeImmunityHeal", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - abilityName, - }), - true, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + pokemon.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() / 4), + i18next.t("abilityTriggers:typeImmunityHeal", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + abilityName, + }), + true, ); cancelled.value = true; // Suppresses "No Effect" message } @@ -632,8 +624,12 @@ class TypeImmunityStatStageChangeAbAttr extends TypeImmunityAbAttr { super.applyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); cancelled.value = true; // Suppresses "No Effect" message if (!simulated) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [this.stat], this.stages), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + [this.stat], + this.stages, ); } } @@ -960,8 +956,12 @@ export class MoveImmunityStatStageChangeAbAttr extends MoveImmunityAbAttr { args: any[], ): void { super.applyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [this.stat], this.stages), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + [this.stat], + this.stages, ); } } @@ -1063,18 +1063,21 @@ export class PostDefendStatStageChangeAbAttr extends PostDefendAbAttr { const ally = pokemon.getAlly(); const otherPokemon = !isNullOrUndefined(ally) ? pokemon.getOpponents().concat([ally]) : pokemon.getOpponents(); for (const other of otherPokemon) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(other.getBattlerIndex(), false, [this.stat], this.stages), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + other.getBattlerIndex(), + false, + [this.stat], + this.stages, ); } } else { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase( - (this.selfTarget ? pokemon : attacker).getBattlerIndex(), - this.selfTarget, - [this.stat], - this.stages, - ), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + (this.selfTarget ? pokemon : attacker).getBattlerIndex(), + this.selfTarget, + [this.stat], + this.stages, ); } } @@ -1130,13 +1133,12 @@ export class PostDefendHpGatedStatStageChangeAbAttr extends PostDefendAbAttr { _args: any[], ): void { if (!simulated) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase( - (this.selfTarget ? pokemon : attacker).getBattlerIndex(), - true, - this.stats, - this.stages, - ), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + (this.selfTarget ? pokemon : attacker).getBattlerIndex(), + true, + this.stats, + this.stages, ); } } @@ -1450,8 +1452,12 @@ export class PostDefendCritStatStageChangeAbAttr extends PostDefendAbAttr { _args: any[], ): void { if (!simulated) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [this.stat], this.stages), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + [this.stat], + this.stages, ); } } @@ -1766,8 +1772,12 @@ export class PostStatStageChangeStatStageChangeAbAttr extends PostStatStageChang _args: any[], ): void { if (!simulated) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.statsToChange, this.stages), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + this.statsToChange, + this.stages, ); } } @@ -2928,9 +2938,7 @@ class PostVictoryStatStageChangeAbAttr extends PostVictoryAbAttr { override applyPostVictory(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { const stat = typeof this.stat === "function" ? this.stat(pokemon) : this.stat; if (!simulated) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [stat], this.stages), - ); + globalScene.phaseManager.unshiftNew("StatStageChangePhase", pokemon.getBattlerIndex(), true, [stat], this.stages); } } } @@ -2996,9 +3004,7 @@ export class PostKnockOutStatStageChangeAbAttr extends PostKnockOutAbAttr { ): void { const stat = typeof this.stat === "function" ? this.stat(pokemon) : this.stat; if (!simulated) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [stat], this.stages), - ); + globalScene.phaseManager.unshiftNew("StatStageChangePhase", pokemon.getBattlerIndex(), true, [stat], this.stages); } } } @@ -3112,8 +3118,12 @@ export class PostIntimidateStatStageChangeAbAttr extends AbAttr { _args: any[], ): void { if (!simulated) { - globalScene.phaseManager.pushPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), false, this.stats, this.stages), + globalScene.phaseManager.pushNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + false, + this.stats, + this.stages, ); } cancelled.value = this.overwrites; @@ -3315,8 +3325,12 @@ export class PostSummonStatStageChangeAbAttr extends PostSummonAbAttr { if (this.selfTarget) { // we unshift the StatStageChangePhase to put it right after the showAbility and not at the end of the // phase list (which could be after CommandPhase for example) - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + this.stats, + this.stages, ); } else { for (const opponent of pokemon.getOpponents()) { @@ -3330,8 +3344,12 @@ export class PostSummonStatStageChangeAbAttr extends PostSummonAbAttr { } } if (!cancelled.value) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(opponent.getBattlerIndex(), false, this.stats, this.stages), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + opponent.getBattlerIndex(), + false, + this.stats, + this.stages, ); } } @@ -3357,17 +3375,16 @@ export class PostSummonAllyHealAbAttr extends PostSummonAbAttr { override applyPostSummon(pokemon: Pokemon, _passive: boolean, simulated: boolean, _args: any[]): void { const target = pokemon.getAlly(); if (!simulated && !isNullOrUndefined(target)) { - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - target.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() / this.healRatio), - i18next.t("abilityTriggers:postSummonAllyHeal", { - pokemonNameWithAffix: getPokemonNameWithAffix(target), - pokemonName: pokemon.name, - }), - true, - !this.showAnim, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + target.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() / this.healRatio), + i18next.t("abilityTriggers:postSummonAllyHeal", { + pokemonNameWithAffix: getPokemonNameWithAffix(target), + pokemonName: pokemon.name, + }), + true, + !this.showAnim, ); } } @@ -3445,7 +3462,7 @@ export class DownloadAbAttr extends PostSummonAbAttr { } if (!simulated) { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), false, this.stats, 1)); + globalScene.phaseManager.unshiftNew("StatStageChangePhase", pokemon.getBattlerIndex(), false, this.stats, 1); } } } @@ -3726,8 +3743,11 @@ export class PostSummonTransformAbAttr extends PostSummonAbAttr { override applyPostSummon(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void { const target = this.getTarget(pokemon.getOpponents()); - globalScene.phaseManager.unshiftPhase( - new PokemonTransformPhase(pokemon.getBattlerIndex(), target.getBattlerIndex(), true), + globalScene.phaseManager.unshiftNew( + "PokemonTransformPhase", + pokemon.getBattlerIndex(), + target.getBattlerIndex(), + true, ); } } @@ -4110,8 +4130,17 @@ export class ReflectStatStageChangeAbAttr extends PreStatStageChangeAbAttr { const stages = args[1]; this.reflectedStat = stat; if (!simulated) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(attacker.getBattlerIndex(), false, [stat], stages, true, false, true, null, true), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + attacker.getBattlerIndex(), + false, + [stat], + stages, + true, + false, + true, + null, + true, ); } cancelled.value = true; @@ -5212,16 +5241,15 @@ export class PostWeatherLapseHealAbAttr extends PostWeatherLapseAbAttr { ): void { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; if (!simulated) { - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - pokemon.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() / (16 / this.healFactor)), - i18next.t("abilityTriggers:postWeatherLapseHeal", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - abilityName, - }), - true, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + pokemon.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() / (16 / this.healFactor)), + i18next.t("abilityTriggers:postWeatherLapseHeal", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + abilityName, + }), + true, ); } } @@ -5366,13 +5394,12 @@ export class PostTurnStatusHealAbAttr extends PostTurnAbAttr { override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - pokemon.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() / 8), - i18next.t("abilityTriggers:poisonHeal", { pokemonName: getPokemonNameWithAffix(pokemon), abilityName }), - true, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + pokemon.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() / 8), + i18next.t("abilityTriggers:poisonHeal", { pokemonName: getPokemonNameWithAffix(pokemon), abilityName }), + true, ); } } @@ -5529,8 +5556,11 @@ export class RepeatBerryNextTurnAbAttr extends PostTurnAbAttr { _cancelled: BooleanHolder | null, _args: any[], ): void { - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.USE_ITEM), + globalScene.phaseManager.unshiftNew( + "CommonAnimPhase", + pokemon.getBattlerIndex(), + pokemon.getBattlerIndex(), + CommonAnim.USE_ITEM, ); // Re-apply effects of all berries previously scarfed. @@ -5593,15 +5623,11 @@ export class MoodyAbAttr extends PostTurnAbAttr { if (canRaise.length > 0) { const raisedStat = canRaise[pokemon.randBattleSeedInt(canRaise.length)]; canLower = canRaise.filter(s => s !== raisedStat); - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [raisedStat], 2), - ); + globalScene.phaseManager.unshiftNew("StatStageChangePhase", pokemon.getBattlerIndex(), true, [raisedStat], 2); } if (canLower.length > 0) { const loweredStat = canLower[pokemon.randBattleSeedInt(canLower.length)]; - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [loweredStat], -1), - ); + globalScene.phaseManager.unshiftNew("StatStageChangePhase", pokemon.getBattlerIndex(), true, [loweredStat], -1); } } } @@ -5617,7 +5643,7 @@ export class SpeedBoostAbAttr extends PostTurnAbAttr { } override applyPostTurn(pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): void { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.SPD], 1)); + globalScene.phaseManager.unshiftNew("StatStageChangePhase", pokemon.getBattlerIndex(), true, [Stat.SPD], 1); } } @@ -5629,16 +5655,15 @@ export class PostTurnHealAbAttr extends PostTurnAbAttr { override applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, _args: any[]): void { if (!simulated) { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - pokemon.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() / 16), - i18next.t("abilityTriggers:postTurnHeal", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - abilityName, - }), - true, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + pokemon.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() / 16), + i18next.t("abilityTriggers:postTurnHeal", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + abilityName, + }), + true, ); } } @@ -5857,13 +5882,14 @@ export class PostDancingMoveAbAttr extends PostMoveUsedAbAttr { ): void { if (!simulated) { dancer.turnData.extraTurns++; + const phaseManager = globalScene.phaseManager; // If the move is an AttackMove or a StatusMove the Dancer must replicate the move on the source of the Dance if (move.getMove() instanceof AttackMove || move.getMove() instanceof StatusMove) { const target = this.getTarget(dancer, source, targets); - globalScene.phaseManager.unshiftPhase(new MovePhase(dancer, target, move, true, true)); + phaseManager.unshiftNew("MovePhase", dancer, target, move, true, true); } else if (move.getMove() instanceof SelfStatusMove) { // If the move is a SelfStatusMove (ie. Swords Dance) the Dancer should replicate it on itself - globalScene.phaseManager.unshiftPhase(new MovePhase(dancer, [dancer.getBattlerIndex()], move, true, true)); + phaseManager.unshiftNew("MovePhase", dancer, [dancer.getBattlerIndex()], move, true, true); } } } @@ -5949,16 +5975,15 @@ export class StatStageChangeCopyAbAttr extends AbAttr { args: any[], ): void { if (!simulated) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase( - pokemon.getBattlerIndex(), - true, - args[0] as BattleStat[], - args[1] as number, - true, - false, - false, - ), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + args[0] as BattleStat[], + args[1] as number, + true, + false, + false, ); } } @@ -6058,16 +6083,15 @@ export class HealFromBerryUseAbAttr extends AbAttr { } const { name: abilityName } = passive ? pokemon.getPassiveAbility() : pokemon.getAbility(); - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - pokemon.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() * this.healPercent), - i18next.t("abilityTriggers:healFromBerryUse", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - abilityName, - }), - true, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + pokemon.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() * this.healPercent), + i18next.t("abilityTriggers:healFromBerryUse", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + abilityName, + }), + true, ); } } @@ -6502,8 +6526,12 @@ export class FlinchStatStageChangeAbAttr extends FlinchEffectAbAttr { _args: any[], ): void { if (!simulated) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + this.stats, + this.stages, ); } } @@ -7241,9 +7269,13 @@ class ForceSwitchOutHelper { if (switchOutTarget.hp > 0) { switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - globalScene.phaseManager.prependToPhase( - new SwitchPhase(this.switchType, switchOutTarget.getFieldIndex(), true, true), - MoveEndPhase, + globalScene.phaseManager.prependNewToPhase( + "MoveEndPhase", + "SwitchPhase", + this.switchType, + switchOutTarget.getFieldIndex(), + true, + true, ); return true; } @@ -7260,9 +7292,14 @@ class ForceSwitchOutHelper { const summonIndex = globalScene.currentBattle.trainer ? globalScene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0; - globalScene.phaseManager.prependToPhase( - new SwitchSummonPhase(this.switchType, switchOutTarget.getFieldIndex(), summonIndex, false, false), - MoveEndPhase, + globalScene.phaseManager.prependNewToPhase( + "MoveEndPhase", + "SwitchSummonPhase", + this.switchType, + switchOutTarget.getFieldIndex(), + summonIndex, + false, + false, ); return true; } @@ -7294,13 +7331,13 @@ class ForceSwitchOutHelper { globalScene.clearEnemyHeldItemModifiers(); if (switchOutTarget.hp) { - globalScene.phaseManager.pushPhase(new BattleEndPhase(false)); + globalScene.phaseManager.pushNew("BattleEndPhase", false); if (globalScene.gameMode.hasRandomBiomes || globalScene.isNewBiome()) { - globalScene.phaseManager.pushPhase(new SelectBiomePhase()); + globalScene.phaseManager.pushNew("SelectBiomePhase"); } - globalScene.phaseManager.pushPhase(new NewBattlePhase()); + globalScene.phaseManager.pushNew("NewBattlePhase"); } } } diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 70fceb17c49..28b8c6acd41 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -26,10 +26,6 @@ import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; -import { CommonAnimPhase } from "#app/phases/common-anim-phase"; export enum ArenaTagSide { BOTH, @@ -568,9 +564,7 @@ class WishTag extends ArenaTag { const target = globalScene.getField()[this.battlerIndex]; if (target?.isActive(true)) { globalScene.phaseManager.queueMessage(this.triggerMessage); - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase(target.getBattlerIndex(), this.healHp, null, true, false), - ); + globalScene.phaseManager.unshiftNew("PokemonHealPhase", target.getBattlerIndex(), this.healHp, null, true, false); } } } @@ -893,8 +887,13 @@ export class DelayedAttackTag extends ArenaTag { const ret = super.lapse(arena); if (!ret) { - globalScene.phaseManager.unshiftPhase( - new MoveEffectPhase(this.sourceId!, [this.targetIndex], allMoves[this.sourceMove!], false, true), + globalScene.phaseManager.unshiftNew( + "MoveEffectPhase", + this.sourceId!, + [this.targetIndex], + allMoves[this.sourceMove!], + false, + true, ); // TODO: are those bangs correct? } @@ -1028,19 +1027,18 @@ class StickyWebTag extends ArenaTrapTag { }), ); const stages = new NumberHolder(-1); - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase( - pokemon.getBattlerIndex(), - false, - [Stat.SPD], - stages.value, - true, - false, - true, - null, - false, - true, - ), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + false, + [Stat.SPD], + stages.value, + true, + false, + true, + null, + false, + true, ); return true; } @@ -1138,26 +1136,26 @@ class TailwindTag extends ArenaTag { const source = globalScene.getPokemonById(this.sourceId!); //TODO: this bang is questionable! const party = (source?.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField()) ?? []; + const phaseManager = globalScene.phaseManager; for (const pokemon of party) { // Apply the CHARGED tag to party members with the WIND_POWER ability if (pokemon.hasAbility(AbilityId.WIND_POWER) && !pokemon.getTag(BattlerTagType.CHARGED)) { pokemon.addTag(BattlerTagType.CHARGED); - globalScene.phaseManager.queueMessage( + phaseManager.queueMessage( i18next.t("abilityTriggers:windPowerCharged", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName(), }), ); } + // Raise attack by one stage if party member has WIND_RIDER ability // TODO: Ability displays should be handled by the ability if (pokemon.hasAbility(AbilityId.WIND_RIDER)) { - globalScene.phaseManager.queueAbilityDisplay(pokemon, false, true); - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.ATK], 1, true), - ); - globalScene.phaseManager.queueAbilityDisplay(pokemon, false, false); + phaseManager.queueAbilityDisplay(pokemon, false, true); + phaseManager.unshiftNew("StatStageChangePhase", pokemon.getBattlerIndex(), true, [Stat.ATK], 1, true); + phaseManager.queueAbilityDisplay(pokemon, false, false); } } } @@ -1319,8 +1317,11 @@ class FireGrassPledgeTag extends ArenaTag { }), ); // TODO: Replace this with a proper animation - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.MAGMA_STORM), + globalScene.phaseManager.unshiftNew( + "CommonAnimPhase", + pokemon.getBattlerIndex(), + pokemon.getBattlerIndex(), + CommonAnim.MAGMA_STORM, ); pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 8), { result: HitResult.INDIRECT }); }); diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index d0b4620d8eb..d4f62237446 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -27,12 +27,9 @@ import { PokemonType } from "#enums/pokemon-type"; import type Pokemon from "#app/field/pokemon"; import { HitResult, MoveResult } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; -import { CommonAnimPhase } from "#app/phases/common-anim-phase"; import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { MovePhase } from "#app/phases/move-phase"; -import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; +import type { MovePhase } from "#app/phases/move-phase"; import type { StatStageChangeCallback } from "#app/phases/stat-stage-change-phase"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import i18next from "#app/plugins/i18n"; import { BooleanHolder, getFrameMs, NumberHolder, toDmgValue } from "#app/utils/common"; import { AbilityId } from "#enums/ability-id"; @@ -560,7 +557,7 @@ export class ShellTrapTag extends BattlerTag { // Only shift MovePhase timing if it's not already next up if (shellTrapPhaseIndex !== -1 && shellTrapPhaseIndex !== firstMovePhaseIndex) { const shellTrapMovePhase = globalScene.phaseManager.phaseQueue.splice(shellTrapPhaseIndex, 1)[0]; - globalScene.phaseManager.prependToPhase(shellTrapMovePhase, MovePhase); + globalScene.phaseManager.prependToPhase(shellTrapMovePhase, "MovePhase"); } this.activated = true; @@ -719,9 +716,7 @@ export class ConfusedTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.CONFUSION), - ); + globalScene.phaseManager.unshiftNew("CommonAnimPhase", pokemon.getBattlerIndex(), undefined, CommonAnim.CONFUSION); globalScene.phaseManager.queueMessage( i18next.t("battlerTags:confusedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), @@ -756,14 +751,14 @@ export class ConfusedTag extends BattlerTag { return false; } - globalScene.phaseManager.queueMessage( + const phaseManager = globalScene.phaseManager; + + phaseManager.queueMessage( i18next.t("battlerTags:confusedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.CONFUSION), - ); + phaseManager.unshiftNew("CommonAnimPhase", pokemon.getBattlerIndex(), undefined, CommonAnim.CONFUSION); // 1/3 chance of hitting self with a 40 base power move if (pokemon.randBattleSeedInt(3) === 0 || Overrides.CONFUSION_ACTIVATION_OVERRIDE === true) { @@ -773,9 +768,9 @@ export class ConfusedTag extends BattlerTag { ((((2 * pokemon.level) / 5 + 2) * 40 * atk) / def / 50 + 2) * (pokemon.randBattleSeedIntRange(85, 100) / 100), ); // Intentionally don't increment rage fist's hitCount - globalScene.phaseManager.queueMessage(i18next.t("battlerTags:confusedLapseHurtItself")); + phaseManager.queueMessage(i18next.t("battlerTags:confusedLapseHurtItself")); pokemon.damageAndUpdate(damage, { result: HitResult.CONFUSION }); - (globalScene.phaseManager.getCurrentPhase() as MovePhase).cancel(); + (phaseManager.getCurrentPhase() as MovePhase).cancel(); } return true; @@ -881,24 +876,24 @@ export class InfatuatedTag extends BattlerTag { lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); + const phaseManager = globalScene.phaseManager; + if (ret) { - globalScene.phaseManager.queueMessage( + phaseManager.queueMessage( i18next.t("battlerTags:infatuatedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), sourcePokemonName: getPokemonNameWithAffix(globalScene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? }), ); - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.ATTRACT), - ); + phaseManager.unshiftNew("CommonAnimPhase", pokemon.getBattlerIndex(), undefined, CommonAnim.ATTRACT); if (pokemon.randBattleSeedInt(2)) { - globalScene.phaseManager.queueMessage( + phaseManager.queueMessage( i18next.t("battlerTags:infatuatedLapseImmobilize", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); - (globalScene.phaseManager.getCurrentPhase() as MovePhase).cancel(); + (phaseManager.getCurrentPhase() as MovePhase).cancel(); } } @@ -965,26 +960,28 @@ export class SeedTag extends BattlerTag { applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); if (!cancelled.value) { - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase(source.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.LEECH_SEED), + globalScene.phaseManager.unshiftNew( + "CommonAnimPhase", + source.getBattlerIndex(), + pokemon.getBattlerIndex(), + CommonAnim.LEECH_SEED, ); const damage = pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 8), { result: HitResult.INDIRECT }); const reverseDrain = pokemon.hasAbilityWithAttr(ReverseDrainAbAttr, false); - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - source.getBattlerIndex(), - !reverseDrain ? damage : damage * -1, - !reverseDrain - ? i18next.t("battlerTags:seededLapse", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - }) - : i18next.t("battlerTags:seededLapseShed", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - }), - false, - true, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + source.getBattlerIndex(), + !reverseDrain ? damage : damage * -1, + !reverseDrain + ? i18next.t("battlerTags:seededLapse", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + }) + : i18next.t("battlerTags:seededLapseShed", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + }), + false, + true, ); } } @@ -1039,9 +1036,9 @@ export class PowderTag extends BattlerTag { movePhase.fail(); movePhase.showMoveText(); - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.POWDER), - ); + const idx = pokemon.getBattlerIndex(); + + globalScene.phaseManager.unshiftNew("CommonAnimPhase", idx, idx, CommonAnim.POWDER); const cancelDamage = new BooleanHolder(false); applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelDamage); @@ -1088,14 +1085,13 @@ export class NightmareTag extends BattlerTag { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - globalScene.phaseManager.queueMessage( + const phaseManager = globalScene.phaseManager; + phaseManager.queueMessage( i18next.t("battlerTags:nightmareLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.CURSE), - ); // TODO: Update animation type + phaseManager.unshiftNew("CommonAnimPhase", pokemon.getBattlerIndex(), undefined, CommonAnim.CURSE); // TODO: Update animation type const cancelled = new BooleanHolder(false); applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); @@ -1194,7 +1190,7 @@ export class EncoreTag extends MoveRestrictionBattlerTag { const lastMove = pokemon.getLastXMoves(1)[0]; globalScene.phaseManager.tryReplacePhase( m => m.is("MovePhase") && m.pokemon === pokemon, - new MovePhase(pokemon, lastMove.targets ?? [], movesetMove), + globalScene.phaseManager.create("MovePhase", pokemon, lastMove.targets ?? [], movesetMove), ); } } @@ -1276,15 +1272,14 @@ export class IngrainTag extends TrappedTag { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - pokemon.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() / 16), - i18next.t("battlerTags:ingrainLapse", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - }), - true, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + pokemon.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() / 16), + i18next.t("battlerTags:ingrainLapse", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + }), + true, ); } @@ -1315,8 +1310,12 @@ export class OctolockTag extends TrappedTag { const shouldLapse = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (shouldLapse) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), false, [Stat.DEF, Stat.SPDEF], -1), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + false, + [Stat.DEF, Stat.SPDEF], + -1, ); return true; } @@ -1344,16 +1343,15 @@ export class AquaRingTag extends BattlerTag { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - pokemon.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() / 16), - i18next.t("battlerTags:aquaRingLapse", { - moveName: this.getMoveName(), - pokemonName: getPokemonNameWithAffix(pokemon), - }), - true, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + pokemon.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() / 16), + i18next.t("battlerTags:aquaRingLapse", { + moveName: this.getMoveName(), + pokemonName: getPokemonNameWithAffix(pokemon), + }), + true, ); } @@ -1445,13 +1443,14 @@ export abstract class DamagingTrapTag extends TrappedTag { const ret = super.lapse(pokemon, lapseType); if (ret) { - globalScene.phaseManager.queueMessage( + const phaseManager = globalScene.phaseManager; + phaseManager.queueMessage( i18next.t("battlerTags:damagingTrapLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName(), }), ); - globalScene.phaseManager.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, this.commonAnim)); + phaseManager.unshiftNew("CommonAnimPhase", pokemon.getBattlerIndex(), undefined, this.commonAnim); const cancelled = new BooleanHolder(false); applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); @@ -1764,8 +1763,12 @@ export class ContactStatStageChangeProtectedTag extends DamageProtectedTag { * @param user - The pokemon that is being attacked and has the tag */ override onContact(attacker: Pokemon, _user: Pokemon): void { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(attacker.getBattlerIndex(), false, [this.stat], this.levels), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + attacker.getBattlerIndex(), + false, + [this.stat], + this.levels, ); } } @@ -2281,8 +2284,11 @@ export class SaltCuredTag extends BattlerTag { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.SALT_CURE), + globalScene.phaseManager.unshiftNew( + "CommonAnimPhase", + pokemon.getBattlerIndex(), + pokemon.getBattlerIndex(), + CommonAnim.SALT_CURE, ); const cancelled = new BooleanHolder(false); @@ -2332,8 +2338,11 @@ export class CursedTag extends BattlerTag { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.SALT_CURE), + globalScene.phaseManager.unshiftNew( + "CommonAnimPhase", + pokemon.getBattlerIndex(), + pokemon.getBattlerIndex(), + CommonAnim.SALT_CURE, ); const cancelled = new BooleanHolder(false); @@ -2509,13 +2518,12 @@ export class CommandedTag extends BattlerTag { /** Caches the Tatsugiri's form key and sharply boosts the tagged Pokemon's stats */ override onAdd(pokemon: Pokemon): void { this._tatsugiriFormKey = this.getSourcePokemon()?.getFormKey() ?? "curly"; - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase( - pokemon.getBattlerIndex(), - true, - [Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD], - 2, - ), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + [Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD], + 2, ); } @@ -2592,17 +2600,16 @@ export class StockpilingTag extends BattlerTag { ); // Attempt to increase DEF and SPDEF by one stage, keeping track of successful changes. - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase( - pokemon.getBattlerIndex(), - true, - [Stat.SPDEF, Stat.DEF], - 1, - true, - false, - true, - this.onStatStagesChanged, - ), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + [Stat.SPDEF, Stat.DEF], + 1, + true, + false, + true, + this.onStatStagesChanged, ); } } @@ -2620,14 +2627,28 @@ export class StockpilingTag extends BattlerTag { const spDefChange = this.statChangeCounts[Stat.SPDEF]; if (defChange) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.DEF], -defChange, true, false, true), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + [Stat.DEF], + -defChange, + true, + false, + true, ); } if (spDefChange) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.SPDEF], -spDefChange, true, false, true), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + [Stat.SPDEF], + -spDefChange, + true, + false, + true, ); } } @@ -2667,9 +2688,7 @@ export class GulpMissileTag extends BattlerTag { } if (this.tagType === BattlerTagType.GULP_MISSILE_ARROKUDA) { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(attacker.getBattlerIndex(), false, [Stat.DEF], -1), - ); + globalScene.phaseManager.unshiftNew("StatStageChangePhase", attacker.getBattlerIndex(), false, [Stat.DEF], -1); } else { attacker.trySetStatus(StatusEffect.PARALYSIS, true, pokemon); } @@ -3290,8 +3309,15 @@ export class SyrupBombTag extends BattlerTag { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), }), ); - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.SPD], -1, true, false, true), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + [Stat.SPD], + -1, + true, + false, + true, ); return --this.turnCount > 0; } diff --git a/src/data/berry.ts b/src/data/berry.ts index defc9b85541..52ea1c44391 100644 --- a/src/data/berry.ts +++ b/src/data/berry.ts @@ -8,8 +8,6 @@ import i18next from "i18next"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; import { Stat, type BattleStat } from "#app/enums/stat"; -import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { globalScene } from "#app/global-scene"; export function getBerryName(berryType: BerryType): string { @@ -75,16 +73,15 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { { const hpHealed = new NumberHolder(toDmgValue(consumer.getMaxHp() / 4)); applyAbAttrs(DoubleBerryEffectAbAttr, consumer, null, false, hpHealed); - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - consumer.getBattlerIndex(), - hpHealed.value, - i18next.t("battle:hpHealBerry", { - pokemonNameWithAffix: getPokemonNameWithAffix(consumer), - berryName: getBerryName(berryType), - }), - true, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + consumer.getBattlerIndex(), + hpHealed.value, + i18next.t("battle:hpHealBerry", { + pokemonNameWithAffix: getPokemonNameWithAffix(consumer), + berryName: getBerryName(berryType), + }), + true, ); } break; @@ -109,8 +106,12 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { const stat: BattleStat = berryType - BerryType.ENIGMA; const statStages = new NumberHolder(1); applyAbAttrs(DoubleBerryEffectAbAttr, consumer, null, false, statStages); - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(consumer.getBattlerIndex(), true, [stat], statStages.value), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + consumer.getBattlerIndex(), + true, + [stat], + statStages.value, ); } break; @@ -126,8 +127,12 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { const randStat = randSeedInt(Stat.SPD, Stat.ATK); const stages = new NumberHolder(2); applyAbAttrs(DoubleBerryEffectAbAttr, consumer, null, false, stages); - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(consumer.getBattlerIndex(), true, [randStat], stages.value), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + consumer.getBattlerIndex(), + true, + [randStat], + stages.value, ); } break; diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index d44ecbed4cf..976c0cd7d97 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -1890,8 +1890,8 @@ export class HealAttr extends MoveEffectAttr { * This heals the target and shows the appropriate message. */ addHealPhase(target: Pokemon, healRatio: number) { - globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(target.getBattlerIndex(), - toDmgValue(target.getMaxHp() * healRatio), i18next.t("moveTriggers:healHp", { pokemonName: getPokemonNameWithAffix(target) }), true, !this.showAnim)); + globalScene.phaseManager.unshiftNew("PokemonHealPhase", target.getBattlerIndex(), + toDmgValue(target.getMaxHp() * healRatio), i18next.t("moveTriggers:healHp", { pokemonName: getPokemonNameWithAffix(target) }), true, !this.showAnim); } getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): number { @@ -2021,8 +2021,10 @@ export class SacrificialFullRestoreAttr extends SacrificialAttr { const party = user.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty(); const maxPartyMemberHp = party.map(p => p.getMaxHp()).reduce((maxHp: number, hp: number) => Math.max(hp, maxHp), 0); - globalScene.phaseManager.pushPhase( - new PokemonHealPhase( + const pm = globalScene.phaseManager; + + pm.pushPhase( + pm.create("PokemonHealPhase", user.getBattlerIndex(), maxPartyMemberHp, i18next.t(this.moveMessage, { pokemonName: getPokemonNameWithAffix(user) }), @@ -2233,7 +2235,7 @@ export class HitHealAttr extends MoveEffectAttr { message = ""; } } - globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(user.getBattlerIndex(), healAmount, message, false, true)); + globalScene.phaseManager.unshiftNew("PokemonHealPhase", user.getBattlerIndex(), healAmount, message, false, true); return true; } @@ -3067,7 +3069,7 @@ export class DelayedAttackAttr extends OverrideMoveEffectAttr { if (!virtual) { overridden.value = true; - globalScene.phaseManager.unshiftPhase(new MoveAnimPhase(new MoveChargeAnim(this.chargeAnim, move.id, user))); + globalScene.phaseManager.unshiftNew("MoveAnimPhase", new MoveChargeAnim(this.chargeAnim, move.id, user)); globalScene.phaseManager.queueMessage(this.chargeText.replace("{TARGET}", getPokemonNameWithAffix(target)).replace("{USER}", getPokemonNameWithAffix(user))); user.pushMoveHistory({ move: move.id, targets: [ target.getBattlerIndex() ], result: MoveResult.OTHER }); const side = target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; @@ -3125,7 +3127,7 @@ export class AwaitCombinedPledgeAttr extends OverrideMoveEffectAttr { const allyMovePhaseIndex = globalScene.phaseManager.phaseQueue.indexOf(allyMovePhase); const firstMovePhaseIndex = globalScene.phaseManager.phaseQueue.findIndex((phase) => phase.is("MovePhase")); if (allyMovePhaseIndex !== firstMovePhaseIndex) { - globalScene.phaseManager.prependToPhase(globalScene.phaseManager.phaseQueue.splice(allyMovePhaseIndex, 1)[0], MovePhase); + globalScene.phaseManager.prependToPhase(globalScene.phaseManager.phaseQueue.splice(allyMovePhaseIndex, 1)[0], "MovePhase"); } overridden.value = true; @@ -3207,7 +3209,7 @@ export class StatStageChangeAttr extends MoveEffectAttr { const moveChance = this.getMoveChance(user, target, move, this.selfTarget, true); if (moveChance < 0 || moveChance === 100 || user.randBattleSeedInt(100) < moveChance) { const stages = this.getLevels(user); - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase((this.selfTarget ? user : target).getBattlerIndex(), this.selfTarget, this.stats, stages, this.showMessage)); + globalScene.phaseManager.unshiftNew("StatStageChangePhase", (this.selfTarget ? user : target).getBattlerIndex(), this.selfTarget, this.stats, stages, this.showMessage); return true; } @@ -3432,7 +3434,7 @@ export class AcupressureStatStageChangeAttr extends MoveEffectAttr { const randStats = BATTLE_STATS.filter((s) => target.getStatStage(s) < 6); if (randStats.length > 0) { const boostStat = [ randStats[user.randBattleSeedInt(randStats.length)] ]; - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(target.getBattlerIndex(), this.selfTarget, boostStat, 2)); + globalScene.phaseManager.unshiftNew("StatStageChangePhase", target.getBattlerIndex(), this.selfTarget, boostStat, 2); return true; } return false; @@ -3510,7 +3512,7 @@ export class OrderUpStatBoostAttr extends MoveEffectAttr { break; } - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), this.selfTarget, [ increasedStat ], 1)); + globalScene.phaseManager.unshiftNew("StatStageChangePhase", user.getBattlerIndex(), this.selfTarget, [ increasedStat ], 1); return true; } } @@ -4227,8 +4229,8 @@ export class PresentPowerAttr extends VariablePowerAttr { // If this move is multi-hit, disable all other hits user.turnData.hitCount = 1; user.turnData.hitsLeft = 1; - globalScene.phaseManager.unshiftPhase(new PokemonHealPhase(target.getBattlerIndex(), - toDmgValue(target.getMaxHp() / 4), i18next.t("moveTriggers:regainedHealth", { pokemonName: getPokemonNameWithAffix(target) }), true)); + globalScene.phaseManager.unshiftNew("PokemonHealPhase", target.getBattlerIndex(), + toDmgValue(target.getMaxHp() / 4), i18next.t("moveTriggers:regainedHealth", { pokemonName: getPokemonNameWithAffix(target) }), true); } return true; @@ -4488,7 +4490,7 @@ export class CueNextRoundAttr extends MoveEffectAttr { const nextRoundIndex = globalScene.phaseManager.phaseQueue.indexOf(nextRoundPhase); const nextMoveIndex = globalScene.phaseManager.phaseQueue.findIndex(phase => phase.is("MovePhase")); if (nextRoundIndex !== nextMoveIndex) { - globalScene.phaseManager.prependToPhase(globalScene.phaseManager.phaseQueue.splice(nextRoundIndex, 1)[0], MovePhase); + globalScene.phaseManager.prependToPhase(globalScene.phaseManager.phaseQueue.splice(nextRoundIndex, 1)[0], "MovePhase"); } // Mark the corresponding Pokemon as having "joined the Round" (for doubling power later) @@ -4546,7 +4548,7 @@ export class SpectralThiefAttr extends StatChangeBeforeDmgCalcAttr { */ const availableToSteal = Math.min(statStageValueTarget, 6 - statStageValueUser); - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), this.selfTarget, [ s ], availableToSteal)); + globalScene.phaseManager.unshiftNew("StatStageChangePhase", user.getBattlerIndex(), this.selfTarget, [ s ], availableToSteal); target.setStatStage(s, statStageValueTarget - availableToSteal); } } @@ -5680,8 +5682,8 @@ export class CurseAttr extends MoveEffectAttr { target.addTag(BattlerTagType.CURSED, 0, move.id, user.id); return true; } else { - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), true, [ Stat.ATK, Stat.DEF ], 1)); - globalScene.phaseManager.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), true, [ Stat.SPD ], -1)); + globalScene.phaseManager.unshiftNew("StatStageChangePhase", user.getBattlerIndex(), true, [ Stat.ATK, Stat.DEF ], 1); + globalScene.phaseManager.unshiftNew("StatStageChangePhase", user.getBattlerIndex(), true, [ Stat.SPD ], -1); return true; } } @@ -6154,7 +6156,7 @@ export class RevivalBlessingAttr extends MoveEffectAttr { override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { // If user is player, checks if the user has fainted pokemon if (user.isPlayer()) { - globalScene.phaseManager.unshiftPhase(new RevivalBlessingPhase(user)); + globalScene.phaseManager.unshiftNew("RevivalBlessingPhase", user); return true; } else if (user.isEnemy() && user.hasTrainer() && globalScene.getEnemyParty().findIndex((p) => p.isFainted() && !p.isBoss()) > -1) { // If used by an enemy trainer with at least one fainted non-boss Pokemon, this @@ -6177,7 +6179,7 @@ export class RevivalBlessingAttr extends MoveEffectAttr { if (user.fieldPosition === FieldPosition.CENTER) { user.setFieldPosition(FieldPosition.LEFT); } - globalScene.phaseManager.unshiftPhase(new SwitchSummonPhase(SwitchType.SWITCH, allyPokemon.getFieldIndex(), slotIndex, false, false)); + globalScene.phaseManager.unshiftNew("SwitchSummonPhase", SwitchType.SWITCH, allyPokemon.getFieldIndex(), slotIndex, false, false); } } return true; @@ -6255,26 +6257,23 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { if (this.switchType === SwitchType.FORCE_SWITCH) { switchOutTarget.leaveField(true); const slotIndex = eligibleNewIndices[user.randBattleSeedInt(eligibleNewIndices.length)]; - globalScene.phaseManager.prependToPhase( - new SwitchSummonPhase( - this.switchType, - switchOutTarget.getFieldIndex(), - slotIndex, - false, - true - ), - MoveEndPhase + globalScene.phaseManager.prependNewToPhase( + "MoveEndPhase", + "SwitchSummonPhase", + this.switchType, + switchOutTarget.getFieldIndex(), + slotIndex, + false, + true ); } else { switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - globalScene.phaseManager.prependToPhase( - new SwitchPhase( + globalScene.phaseManager.prependNewToPhase("MoveEndPhase", + "SwitchPhase", this.switchType, switchOutTarget.getFieldIndex(), true, true - ), - MoveEndPhase ); return true; } @@ -6298,27 +6297,23 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { if (this.switchType === SwitchType.FORCE_SWITCH) { switchOutTarget.leaveField(true); const slotIndex = eligibleNewIndices[user.randBattleSeedInt(eligibleNewIndices.length)]; - globalScene.phaseManager.prependToPhase( - new SwitchSummonPhase( + globalScene.phaseManager.prependNewToPhase("MoveEndPhase", + "SwitchSummonPhase", this.switchType, switchOutTarget.getFieldIndex(), slotIndex, false, false - ), - MoveEndPhase ); } else { switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - globalScene.phaseManager.prependToPhase( - new SwitchSummonPhase( - this.switchType, - switchOutTarget.getFieldIndex(), - (globalScene.currentBattle.trainer ? globalScene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0), - false, - false - ), - MoveEndPhase + globalScene.phaseManager.prependNewToPhase("MoveEndPhase", + "SwitchSummonPhase", + this.switchType, + switchOutTarget.getFieldIndex(), + (globalScene.currentBattle.trainer ? globalScene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0), + false, + false ); } } @@ -6351,13 +6346,13 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { globalScene.clearEnemyHeldItemModifiers(switchOutTarget); if (!allyPokemon?.isActive(true) && switchOutTarget.hp) { - globalScene.phaseManager.pushPhase(new BattleEndPhase(false)); + globalScene.phaseManager.pushNew("BattleEndPhase", false); if (globalScene.gameMode.hasRandomBiomes || globalScene.isNewBiome()) { - globalScene.phaseManager.pushPhase(new SelectBiomePhase()); + globalScene.phaseManager.pushNew("SelectBiomePhase"); } - globalScene.phaseManager.pushPhase(new NewBattlePhase()); + globalScene.phaseManager.pushNew("NewBattlePhase"); } } @@ -6733,8 +6728,8 @@ class CallMoveAttr extends OverrideMoveEffectAttr { ? moveTargets.targets : [ this.hasTarget ? target.getBattlerIndex() : moveTargets.targets[user.randBattleSeedInt(moveTargets.targets.length)] ]; // account for Mirror Move having a target already user.getMoveQueue().push({ move: move.id, targets: targets, virtual: true, ignorePP: true }); - globalScene.phaseManager.unshiftPhase(new LoadMoveAnimPhase(move.id)); - globalScene.phaseManager.unshiftPhase(new MovePhase(user, targets, new PokemonMove(move.id, 0, 0, true), true, true)); + globalScene.phaseManager.unshiftNew("LoadMoveAnimPhase", move.id); + globalScene.phaseManager.unshiftNew("MovePhase", user, targets, new PokemonMove(move.id, 0, 0, true), true, true); return true; } } @@ -6962,8 +6957,8 @@ export class NaturePowerAttr extends OverrideMoveEffectAttr { } user.getMoveQueue().push({ move: moveId, targets: [ target.getBattlerIndex() ], ignorePP: true }); - globalScene.phaseManager.unshiftPhase(new LoadMoveAnimPhase(moveId)); - globalScene.phaseManager.unshiftPhase(new MovePhase(user, [ target.getBattlerIndex() ], new PokemonMove(moveId, 0, 0, true), true)); + globalScene.phaseManager.unshiftNew("LoadMoveAnimPhase", moveId); + globalScene.phaseManager.unshiftNew("MovePhase", user, [ target.getBattlerIndex() ], new PokemonMove(moveId, 0, 0, true), true); return true; } } @@ -7050,7 +7045,7 @@ export class RepeatMoveAttr extends MoveEffectAttr { })); target.getMoveQueue().unshift({ move: lastMove.move, targets: moveTargets, ignorePP: false }); target.turnData.extraTurns++; - globalScene.phaseManager.appendToPhase(new MovePhase(target, moveTargets, movesetMove), MoveEndPhase); + globalScene.phaseManager.appendNewToPhase("MoveEndPhase", "MovePhase", target, moveTargets, movesetMove); return true; } @@ -7550,7 +7545,7 @@ export class TransformAttr extends MoveEffectAttr { return false; } - globalScene.phaseManager.unshiftPhase(new PokemonTransformPhase(user.getBattlerIndex(), target.getBattlerIndex())); + globalScene.phaseManager.unshiftNew("PokemonTransformPhase", user.getBattlerIndex(), target.getBattlerIndex()); globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:transformedIntoTarget", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); @@ -7852,7 +7847,7 @@ export class AfterYouAttr extends MoveEffectAttr { //Will find next acting phase of the targeted pokémon, delete it and queue it next on successful delete. const nextAttackPhase = globalScene.phaseManager.findPhase((phase) => phase.pokemon === target); if (nextAttackPhase && globalScene.phaseManager.tryRemovePhase((phase: MovePhase) => phase.pokemon === target)) { - globalScene.phaseManager.prependToPhase(new MovePhase(target, [ ...nextAttackPhase.targets ], nextAttackPhase.move), MovePhase); + globalScene.phaseManager.prependNewToPhase("MovePhase", "MovePhase", target, [ ...nextAttackPhase.targets ], nextAttackPhase.move); } return true; @@ -7889,7 +7884,7 @@ export class ForceLastAttr extends MoveEffectAttr { globalScene.phaseManager.phaseQueue.splice( globalScene.phaseManager.phaseQueue.indexOf(prependPhase), 0, - new MovePhase(target, [ ...targetMovePhase.targets ], targetMovePhase.move, false, false, false, true) + globalScene.phaseManager.create("MovePhase", target, [ ...targetMovePhase.targets ], targetMovePhase.move, false, false, false, true) ); } } diff --git a/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts b/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts index 5f69090064f..11081892205 100644 --- a/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts +++ b/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts @@ -19,7 +19,6 @@ import i18next from "i18next"; import type { IEggOptions } from "#app/data/egg"; import { EggSourceType } from "#enums/egg-source-types"; import { EggTier } from "#enums/egg-type"; -import { PartyHealPhase } from "#app/phases/party-heal-phase"; import { ModifierTier } from "#app/modifier/modifier-tier"; import { modifierTypes } from "#app/modifier/modifier-type"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; @@ -182,7 +181,7 @@ export const ATrainersTestEncounter: MysteryEncounter = MysteryEncounterBuilder. async () => { const encounter = globalScene.currentBattle.mysteryEncounter!; // Full heal party - globalScene.phaseManager.unshiftPhase(new PartyHealPhase(true)); + globalScene.phaseManager.unshiftNew("PartyHealPhase", true); const eggOptions: IEggOptions = { pulled: false, diff --git a/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts b/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts index e23b5024599..82fbc0efd69 100644 --- a/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts +++ b/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts @@ -35,7 +35,6 @@ import { TrainerSlot } from "#enums/trainer-slot"; import { PokeballType } from "#enums/pokeball"; import type HeldModifierConfig from "#app/@types/held-modifier-config"; import type { BerryType } from "#enums/berry-type"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; import i18next from "i18next"; @@ -237,8 +236,12 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = MysteryEncounterBuilde tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { queueEncounterMessage(`${namespace}:option.1.boss_enraged`); - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, statChangesForBattle, 1), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + statChangesForBattle, + 1, ); }, }, diff --git a/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts b/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts index 87cd8f207c4..cdb98c56ed1 100644 --- a/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts +++ b/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts @@ -22,7 +22,6 @@ import { getPokemonSpecies } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { ModifierRewardPhase } from "#app/phases/modifier-reward-phase"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import i18next from "i18next"; @@ -137,7 +136,7 @@ export const AnOfferYouCantRefuseEncounter: MysteryEncounter = MysteryEncounterB }) .withOptionPhase(async () => { // Give the player a Shiny Charm - globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes.SHINY_CHARM)); + globalScene.phaseManager.unshiftNew("ModifierRewardPhase", modifierTypes.SHINY_CHARM); leaveEncounterWithoutBattle(true); }) .build(), diff --git a/src/data/mystery-encounters/encounters/berries-abound-encounter.ts b/src/data/mystery-encounters/encounters/berries-abound-encounter.ts index 3de16c7086e..65ae3ea6c4f 100644 --- a/src/data/mystery-encounters/encounters/berries-abound-encounter.ts +++ b/src/data/mystery-encounters/encounters/berries-abound-encounter.ts @@ -35,7 +35,6 @@ import { BerryModifier } from "#app/modifier/modifier"; import i18next from "#app/plugins/i18n"; import { BerryType } from "#enums/berry-type"; import { PERMANENT_STATS, Stat } from "#enums/stat"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; /** the i18n namespace for the encounter */ @@ -237,8 +236,12 @@ export const BerriesAboundEncounter: MysteryEncounter = MysteryEncounterBuilder. config.pokemonConfigs![0].tags = [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON]; config.pokemonConfigs![0].mysteryEncounterBattleEffects = (pokemon: Pokemon) => { queueEncounterMessage(`${namespace}:option.2.boss_enraged`); - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, statChangesForBattle, 1), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + statChangesForBattle, + 1, ); }; setEncounterRewards( diff --git a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts index cd8289163eb..938a136bced 100644 --- a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts +++ b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts @@ -26,7 +26,6 @@ import type { PlayerPokemon } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { PokemonMove } from "#app/field/pokemon"; import { getEncounterText, showEncounterDialogue } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { LearnMovePhase } from "#app/phases/learn-move-phase"; import { MoveId } from "#enums/move-id"; import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; @@ -766,8 +765,10 @@ function doBugTypeMoveTutor(): Promise { // Option select complete, handle if they are learning a move if (result && result.selectedOptionIndex < moveOptions.length) { - globalScene.phaseManager.unshiftPhase( - new LearnMovePhase(result.selectedPokemonIndex, moveOptions[result.selectedOptionIndex].moveId), + globalScene.phaseManager.unshiftNew( + "LearnMovePhase", + result.selectedPokemonIndex, + moveOptions[result.selectedOptionIndex].moveId, ); } diff --git a/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts b/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts index 66cd1ae0509..80465e1d20c 100644 --- a/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts +++ b/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts @@ -26,8 +26,6 @@ import type Pokemon from "#app/field/pokemon"; import { EnemyPokemon, PokemonMove } from "#app/field/pokemon"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { modifierTypes } from "#app/modifier/modifier-type"; -import { LearnMovePhase } from "#app/phases/learn-move-phase"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import PokemonData from "#app/system/pokemon-data"; import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { BattlerTagType } from "#enums/battler-tag-type"; @@ -176,13 +174,12 @@ export const DancingLessonsEncounter: MysteryEncounter = MysteryEncounterBuilder tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { queueEncounterMessage(`${namespace}:option.1.boss_enraged`); - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase( - pokemon.getBattlerIndex(), - true, - [Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF], - 1, - ), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + [Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF], + 1, ); }, }, @@ -245,8 +242,10 @@ export const DancingLessonsEncounter: MysteryEncounter = MysteryEncounterBuilder const onPokemonSelected = (pokemon: PlayerPokemon) => { encounter.setDialogueToken("selectedPokemon", pokemon.getNameToRender()); - globalScene.phaseManager.unshiftPhase( - new LearnMovePhase(globalScene.getPlayerParty().indexOf(pokemon), MoveId.REVELATION_DANCE), + globalScene.phaseManager.unshiftNew( + "LearnMovePhase", + globalScene.getPlayerParty().indexOf(pokemon), + MoveId.REVELATION_DANCE, ); // Play animation again to "learn" the dance diff --git a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts index 1385e9c5a75..6474df3570e 100644 --- a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts +++ b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts @@ -16,7 +16,6 @@ import { } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { ModifierRewardPhase } from "#app/phases/modifier-reward-phase"; import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; import { PokemonFormChangeItemModifier } from "#app/modifier/modifier"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; @@ -165,7 +164,7 @@ export const DarkDealEncounter: MysteryEncounter = MysteryEncounterBuilder.withE .withOptionPhase(async () => { // Give the player 5 Rogue Balls const encounter = globalScene.currentBattle.mysteryEncounter!; - globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes.ROGUE_BALL)); + globalScene.phaseManager.unshiftNew("ModifierRewardPhase", modifierTypes.ROGUE_BALL); // Start encounter with random legendary (7-10 starter strength) that has level additive // If this is a mono-type challenge, always ensure the required type is filtered for diff --git a/src/data/mystery-encounters/encounters/delibirdy-encounter.ts b/src/data/mystery-encounters/encounters/delibirdy-encounter.ts index c321b5f9674..40893d93930 100644 --- a/src/data/mystery-encounters/encounters/delibirdy-encounter.ts +++ b/src/data/mystery-encounters/encounters/delibirdy-encounter.ts @@ -29,7 +29,6 @@ import { } from "#app/modifier/modifier"; import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; import { modifierTypes } from "#app/modifier/modifier-type"; -import { ModifierRewardPhase } from "#app/phases/modifier-reward-phase"; import i18next from "#app/plugins/i18n"; import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { randSeedItem } from "#app/utils/common"; @@ -65,10 +64,10 @@ const doEventReward = () => { return !(existingCharm && existingCharm.getStackCount() >= existingCharm.getMaxStackCount()); }); if (candidates.length > 0) { - globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes[randSeedItem(candidates)])); + globalScene.phaseManager.unshiftNew("ModifierRewardPhase", modifierTypes[randSeedItem(candidates)]); } else { // At max stacks, give a Voucher instead - globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes.VOUCHER)); + globalScene.phaseManager.unshiftNew("ModifierRewardPhase", modifierTypes.VOUCHER); } } }; @@ -181,7 +180,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with ); doEventReward(); } else { - globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes.AMULET_COIN)); + globalScene.phaseManager.unshiftNew("ModifierRewardPhase", modifierTypes.AMULET_COIN); doEventReward(); } @@ -266,7 +265,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with ); doEventReward(); } else { - globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes.CANDY_JAR)); + globalScene.phaseManager.unshiftNew("ModifierRewardPhase", modifierTypes.CANDY_JAR); doEventReward(); } } else { @@ -288,7 +287,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with ); doEventReward(); } else { - globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes.BERRY_POUCH)); + globalScene.phaseManager.unshiftNew("ModifierRewardPhase", modifierTypes.BERRY_POUCH); doEventReward(); } } @@ -372,7 +371,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with ); doEventReward(); } else { - globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierTypes.HEALING_CHARM)); + globalScene.phaseManager.unshiftNew("ModifierRewardPhase", modifierTypes.HEALING_CHARM); doEventReward(); } diff --git a/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts b/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts index ced04ce224d..8b0e5a08020 100644 --- a/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts +++ b/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts @@ -44,7 +44,6 @@ import { EncounterAnim } from "#enums/encounter-anims"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; import { Ability } from "#app/data/abilities/ability-class"; import { FIRE_RESISTANT_ABILITIES } from "#app/data/mystery-encounters/requirements/requirement-groups"; @@ -92,8 +91,12 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w gender: Gender.MALE, tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.SPDEF, Stat.SPD], 1), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + [Stat.SPDEF, Stat.SPD], + 1, ); }, }, @@ -103,8 +106,12 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w gender: Gender.FEMALE, tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.SPDEF, Stat.SPD], 1), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + [Stat.SPDEF, Stat.SPD], + 1, ); }, }, diff --git a/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts b/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts index 6df8ca8b167..83538e9e0e9 100644 --- a/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts +++ b/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts @@ -32,7 +32,6 @@ import PokemonData from "#app/system/pokemon-data"; import { BattlerTagType } from "#enums/battler-tag-type"; import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { randSeedInt } from "#app/utils/common"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; /** the i18n namespace for the encounter */ @@ -76,8 +75,12 @@ export const FightOrFlightEncounter: MysteryEncounter = MysteryEncounterBuilder. queueEncounterMessage(`${namespace}:option.1.stat_boost`); // Randomly boost 1 stat 2 stages // Cannot boost Spd, Acc, or Evasion - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [randSeedInt(4, 1)], 2), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + [randSeedInt(4, 1)], + 2, ); }, }, diff --git a/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts b/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts index 42bfe76d98e..a52641f857d 100644 --- a/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts +++ b/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts @@ -25,9 +25,7 @@ import { getPokemonNameWithAffix } from "#app/messages"; import { PlayerGender } from "#enums/player-gender"; import { getPokeballAtlasKey, getPokeballTintColor } from "#app/data/pokeball"; import { addPokeballOpenParticles } from "#app/field/anims"; -import { ShinySparklePhase } from "#app/phases/shiny-sparkle-phase"; import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms"; -import { PostSummonPhase } from "#app/phases/post-summon-phase"; import { modifierTypes } from "#app/modifier/modifier-type"; import { Nature } from "#enums/nature"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; @@ -411,13 +409,13 @@ function summonPlayerPokemonAnimation(pokemon: PlayerPokemon): Promise { pokemon.resetSummonData(); globalScene.time.delayedCall(1000, () => { if (pokemon.isShiny()) { - globalScene.phaseManager.unshiftPhase(new ShinySparklePhase(pokemon.getBattlerIndex())); + globalScene.phaseManager.unshiftNew("ShinySparklePhase", pokemon.getBattlerIndex()); } pokemon.resetTurnData(); globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true); - globalScene.phaseManager.pushPhase(new PostSummonPhase(pokemon.getBattlerIndex())); + globalScene.phaseManager.pushNew("PostSummonPhase", pokemon.getBattlerIndex()); resolve(); }); }, diff --git a/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts b/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts index 42167d240f9..62029eb1847 100644 --- a/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts +++ b/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts @@ -17,7 +17,6 @@ import { import { getPokemonSpecies } from "#app/data/pokemon-species"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { ModifierTier } from "#app/modifier/modifier-tier"; -import { GameOverPhase } from "#app/phases/game-over-phase"; import { randSeedInt } from "#app/utils/common"; import { MoveId } from "#enums/move-id"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; @@ -190,7 +189,7 @@ export const MysteriousChestEncounter: MysteryEncounter = MysteryEncounterBuilde if (allowedPokemon.length === 0) { // If there are no longer any legal pokemon in the party, game over. globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.unshiftNew("GameOverPhase"); } else { // Show which Pokemon was KOed, then start battle against Gimmighoul await transitionMysteryEncounterIntroVisuals(true, true, 500); diff --git a/src/data/mystery-encounters/encounters/safari-zone-encounter.ts b/src/data/mystery-encounters/encounters/safari-zone-encounter.ts index 54e15dcb102..d324e9f9b6c 100644 --- a/src/data/mystery-encounters/encounters/safari-zone-encounter.ts +++ b/src/data/mystery-encounters/encounters/safari-zone-encounter.ts @@ -29,8 +29,6 @@ import { getEncounterText, showEncounterText } from "#app/data/mystery-encounter import { getPokemonNameWithAffix } from "#app/messages"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { ScanIvsPhase } from "#app/phases/scan-ivs-phase"; -import { SummonPhase } from "#app/phases/summon-phase"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { NON_LEGEND_PARADOX_POKEMON } from "#app/data/balance/special-species-groups"; @@ -325,7 +323,7 @@ async function summonSafariPokemon() { encounter.misc.pokemon = pokemon; encounter.misc.safariPokemonRemaining -= 1; - globalScene.phaseManager.unshiftPhase(new SummonPhase(0, false)); + globalScene.phaseManager.unshiftNew("SummonPhase", 0, false); encounter.setDialogueToken("pokemonName", getPokemonNameWithAffix(pokemon)); @@ -336,7 +334,7 @@ async function summonSafariPokemon() { const ivScannerModifier = globalScene.findModifier(m => m instanceof IvScannerModifier); if (ivScannerModifier) { - globalScene.phaseManager.pushPhase(new ScanIvsPhase(pokemon.getBattlerIndex())); + globalScene.phaseManager.pushNew("ScanIvsPhase", pokemon.getBattlerIndex()); } } diff --git a/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts b/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts index a0898f7cfec..bb1529e3695 100644 --- a/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts +++ b/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts @@ -26,7 +26,6 @@ import { AiType, PokemonMove } from "#app/field/pokemon"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { PartyHealPhase } from "#app/phases/party-heal-phase"; import { BerryType } from "#enums/berry-type"; import { Stat } from "#enums/stat"; import { CustomPokemonData } from "#app/data/custom-pokemon-data"; @@ -155,7 +154,7 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = MysteryEncounterBuil async () => { // Fall asleep waiting for Snorlax // Full heal party - globalScene.phaseManager.unshiftPhase(new PartyHealPhase(true)); + globalScene.phaseManager.unshiftNew("PartyHealPhase", true); queueEncounterMessage(`${namespace}:option.2.rest_result`); leaveEncounterWithoutBattle(); }, diff --git a/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts b/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts index b101837adb9..edc9cf13834 100644 --- a/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts +++ b/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts @@ -27,7 +27,6 @@ import { getPartyLuckValue, modifierTypes } from "#app/modifier/modifier-type"; import { TrainerSlot } from "#enums/trainer-slot"; import { BattlerTagType } from "#enums/battler-tag-type"; import { getPokemonNameWithAffix } from "#app/messages"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { @@ -227,8 +226,12 @@ async function doBiomeTransitionDialogueAndBattleInit() { tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { queueEncounterMessage(`${namespace}:boss_enraged`); - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, statChangesForBattle, 1), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + statChangesForBattle, + 1, ); }, }, diff --git a/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts b/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts index e2b6d62745b..be347fb0035 100644 --- a/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts @@ -27,7 +27,6 @@ import { BerryType } from "#enums/berry-type"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { CustomPokemonData } from "#app/data/custom-pokemon-data"; import { Stat } from "#enums/stat"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; /** the i18n namespace for the encounter */ @@ -116,8 +115,12 @@ export const TheStrongStuffEncounter: MysteryEncounter = MysteryEncounterBuilder tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { queueEncounterMessage(`${namespace}:option.2.stat_boost`); - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.DEF, Stat.SPDEF], 1), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + [Stat.DEF, Stat.SPDEF], + 1, ); }, }, diff --git a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts index 05e036e9189..4b17260098f 100644 --- a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts @@ -27,9 +27,6 @@ import { SpeciesFormChangeAbilityTrigger } from "#app/data/pokemon-forms"; import { applyPostBattleInitAbAttrs, PostBattleInitAbAttr } from "#app/data/abilities/ability"; import { showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; -import { PartyHealPhase } from "#app/phases/party-heal-phase"; -import { ShowTrainerPhase } from "#app/phases/show-trainer-phase"; -import { ReturnPhase } from "#app/phases/return-phase"; import i18next from "i18next"; import { ModifierTier } from "#app/modifier/modifier-tier"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; @@ -143,7 +140,7 @@ export const TheWinstrateChallengeEncounter: MysteryEncounter = MysteryEncounter }, async () => { // Refuse the challenge, they full heal the party and give the player a Rarer Candy - globalScene.phaseManager.unshiftPhase(new PartyHealPhase(true)); + globalScene.phaseManager.unshiftNew("PartyHealPhase", true); setEncounterRewards({ guaranteedModifierTypeFuncs: [modifierTypes.RARER_CANDY], fillRemaining: false, @@ -209,7 +206,7 @@ function endTrainerBattleAndShowDialogue(): Promise { for (const pokemon of playerField) { pokemon.lapseTag(BattlerTagType.COMMANDED); } - playerField.forEach((_, p) => globalScene.phaseManager.unshiftPhase(new ReturnPhase(p))); + playerField.forEach((_, p) => globalScene.phaseManager.unshiftNew("ReturnPhase", p)); for (const pokemon of globalScene.getPlayerParty()) { // Only trigger form change when Eiscue is in Noice form @@ -227,7 +224,7 @@ function endTrainerBattleAndShowDialogue(): Promise { applyPostBattleInitAbAttrs(PostBattleInitAbAttr, pokemon); } - globalScene.phaseManager.unshiftPhase(new ShowTrainerPhase()); + globalScene.phaseManager.unshiftNew("ShowTrainerPhase"); // Hide the trainer and init next battle const trainer = globalScene.currentBattle.trainer; // Unassign previous trainer from battle so it isn't destroyed before animation completes diff --git a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts index e917574a065..411ecdec080 100644 --- a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts +++ b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts @@ -35,7 +35,6 @@ import { PokeballType } from "#enums/pokeball"; import { BattlerTagType } from "#enums/battler-tag-type"; import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { BerryModifier } from "#app/modifier/modifier"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; @@ -103,8 +102,12 @@ export const UncommonBreedEncounter: MysteryEncounter = MysteryEncounterBuilder. tags: [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { queueEncounterMessage(`${namespace}:option.1.stat_boost`); - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(pokemon.getBattlerIndex(), true, statChangesForBattle, 1), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + pokemon.getBattlerIndex(), + true, + statChangesForBattle, + 1, ); }, }, diff --git a/src/data/mystery-encounters/utils/encounter-phase-utils.ts b/src/data/mystery-encounters/utils/encounter-phase-utils.ts index c566ed68476..b86cbaa18c9 100644 --- a/src/data/mystery-encounters/utils/encounter-phase-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-phase-utils.ts @@ -20,12 +20,6 @@ import { modifierTypes, regenerateModifierPoolThresholds, } from "#app/modifier/modifier-type"; -import { - MysteryEncounterBattlePhase, - MysteryEncounterBattleStartCleanupPhase, - MysteryEncounterPhase, - MysteryEncounterRewardsPhase, -} from "#app/phases/mystery-encounter-phases"; import type PokemonData from "#app/system/pokemon-data"; import type { OptionSelectConfig, OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import type { PartyOption, PokemonSelectFilter } from "#app/ui/party-ui-handler"; @@ -51,13 +45,6 @@ import type { IEggOptions } from "#app/data/egg"; import { Egg } from "#app/data/egg"; import type { CustomPokemonData } from "#app/data/custom-pokemon-data"; import type HeldModifierConfig from "#app/@types/held-modifier-config"; -import { MovePhase } from "#app/phases/move-phase"; -import { EggLapsePhase } from "#app/phases/egg-lapse-phase"; -import { TrainerVictoryPhase } from "#app/phases/trainer-victory-phase"; -import { BattleEndPhase } from "#app/phases/battle-end-phase"; -import { GameOverPhase } from "#app/phases/game-over-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { PartyExpPhase } from "#app/phases/party-exp-phase"; import type { Variant } from "#app/sprites/variant"; import { StatusEffect } from "#enums/status-effect"; import { globalScene } from "#app/global-scene"; @@ -428,7 +415,7 @@ export async function initBattleWithEnemyConfig(partyConfig: EnemyPartyConfig): console.log("Moveset:", moveset); }); - globalScene.phaseManager.pushPhase(new MysteryEncounterBattlePhase(partyConfig.disableSwitch)); + globalScene.phaseManager.pushNew("MysteryEncounterBattlePhase", partyConfig.disableSwitch); await Promise.all(loadEnemyAssets); battle.enemyParty.forEach((enemyPokemon_2, e_1) => { @@ -767,7 +754,7 @@ export function setEncounterRewards( } if (customShopRewards) { - globalScene.phaseManager.unshiftPhase(new SelectModifierPhase(0, undefined, customShopRewards)); + globalScene.phaseManager.unshiftNew("SelectModifierPhase", 0, undefined, customShopRewards); } else { globalScene.phaseManager.tryRemovePhase(p => p.is("MysteryEncounterRewardsPhase")); } @@ -807,7 +794,7 @@ export function setEncounterExp(participantId: number | number[], baseExpValue: const participantIds = Array.isArray(participantId) ? participantId : [participantId]; globalScene.currentBattle.mysteryEncounter!.doEncounterExp = () => { - globalScene.phaseManager.unshiftPhase(new PartyExpPhase(baseExpValue, useWaveIndex, new Set(participantIds))); + globalScene.phaseManager.unshiftNew("PartyExpPhase", baseExpValue, useWaveIndex, new Set(participantIds)); return true; }; @@ -829,7 +816,7 @@ export class OptionSelectSettings { * @param optionSelectSettings */ export function initSubsequentOptionSelect(optionSelectSettings: OptionSelectSettings) { - globalScene.phaseManager.pushPhase(new MysteryEncounterPhase(optionSelectSettings)); + globalScene.phaseManager.pushNew("MysteryEncounterPhase", optionSelectSettings); } /** @@ -858,7 +845,7 @@ export function handleMysteryEncounterVictory(addHealPhase = false, doNotContinu if (allowedPkm.length === 0) { globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.unshiftNew("GameOverPhase"); return; } @@ -869,8 +856,8 @@ export function handleMysteryEncounterVictory(addHealPhase = false, doNotContinu return; } if (encounter.encounterMode === MysteryEncounterMode.NO_BATTLE) { - globalScene.phaseManager.pushPhase(new MysteryEncounterRewardsPhase(addHealPhase)); - globalScene.phaseManager.pushPhase(new EggLapsePhase()); + globalScene.phaseManager.pushNew("MysteryEncounterRewardsPhase", addHealPhase); + globalScene.phaseManager.pushNew("EggLapsePhase"); } else if ( !globalScene .getEnemyParty() @@ -878,15 +865,15 @@ export function handleMysteryEncounterVictory(addHealPhase = false, doNotContinu encounter.encounterMode !== MysteryEncounterMode.TRAINER_BATTLE ? p.isOnField() : !p?.isFainted(true), ) ) { - globalScene.phaseManager.pushPhase(new BattleEndPhase(true)); + globalScene.phaseManager.pushNew("BattleEndPhase", true); if (encounter.encounterMode === MysteryEncounterMode.TRAINER_BATTLE) { - globalScene.phaseManager.pushPhase(new TrainerVictoryPhase()); + globalScene.phaseManager.pushNew("TrainerVictoryPhase"); } if (globalScene.gameMode.isEndless || !globalScene.gameMode.isWaveFinal(globalScene.currentBattle.waveIndex)) { - globalScene.phaseManager.pushPhase(new MysteryEncounterRewardsPhase(addHealPhase)); + globalScene.phaseManager.pushNew("MysteryEncounterRewardsPhase", addHealPhase); if (!encounter.doContinueEncounter) { // Only lapse eggs once for multi-battle encounters - globalScene.phaseManager.pushPhase(new EggLapsePhase()); + globalScene.phaseManager.pushNew("EggLapsePhase"); } } } @@ -901,7 +888,7 @@ export function handleMysteryEncounterBattleFailed(addHealPhase = false, doNotCo if (allowedPkm.length === 0) { globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.unshiftNew("GameOverPhase"); return; } @@ -912,14 +899,14 @@ export function handleMysteryEncounterBattleFailed(addHealPhase = false, doNotCo return; } if (encounter.encounterMode !== MysteryEncounterMode.NO_BATTLE) { - globalScene.phaseManager.pushPhase(new BattleEndPhase(false)); + globalScene.phaseManager.pushNew("BattleEndPhase", false); } - globalScene.phaseManager.pushPhase(new MysteryEncounterRewardsPhase(addHealPhase)); + globalScene.phaseManager.pushNew("MysteryEncounterRewardsPhase", addHealPhase); if (!encounter.doContinueEncounter) { // Only lapse eggs once for multi-battle encounters - globalScene.phaseManager.pushPhase(new EggLapsePhase()); + globalScene.phaseManager.pushNew("EggLapsePhase"); } } @@ -1004,14 +991,19 @@ export function handleMysteryEncounterBattleStartEffects() { } else { source = globalScene.getEnemyField()[0]; } - globalScene.phaseManager.pushPhase( - // @ts-ignore: source cannot be undefined - new MovePhase(source, effect.targets, effect.move, effect.followUp, effect.ignorePp), + globalScene.phaseManager.pushNew( + "MovePhase", + // @ts-expect-error: source is guaranteed to be defined + source, + effect.targets, + effect.move, + effect.followUp, + effect.ignorePp, ); }); // Pseudo turn end phase to reset flinch states, Endure, etc. - globalScene.phaseManager.pushPhase(new MysteryEncounterBattleStartCleanupPhase()); + globalScene.phaseManager.pushNew("MysteryEncounterBattleStartCleanupPhase"); encounter.startOfBattleEffectsComplete = true; } diff --git a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts index 757d8173820..e8a3db46cff 100644 --- a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts @@ -32,7 +32,6 @@ import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; import { modifierTypes } from "#app/modifier/modifier-type"; import { Gender } from "#app/data/gender"; import type { PermanentStat } from "#enums/stat"; -import { VictoryPhase } from "#app/phases/victory-phase"; import { SummaryUiMode } from "#app/ui/summary-ui-handler"; import { CustomPokemonData } from "#app/data/custom-pokemon-data"; import type { AbilityId } from "#enums/ability-id"; @@ -675,7 +674,7 @@ export async function catchPokemon( if (!globalScene.getEnemyParty().some(p => p.id === pokemon.id)) { globalScene.getEnemyParty().push(pokemon); } - globalScene.phaseManager.unshiftPhase(new VictoryPhase(pokemon.id, true)); + globalScene.phaseManager.unshiftNew("VictoryPhase", pokemon.id, true); globalScene.pokemonInfoContainer.hide(); if (pokeball) { removePb(pokeball); diff --git a/src/field/arena.ts b/src/field/arena.ts index 1c54382c89b..82a8afbedad 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -38,7 +38,6 @@ import { TimeOfDay } from "#enums/time-of-day"; import { TrainerType } from "#enums/trainer-type"; import { AbilityId } from "#enums/ability-id"; import { SpeciesFormChangeRevertWeatherFormTrigger, SpeciesFormChangeWeatherTrigger } from "#app/data/pokemon-forms"; -import { CommonAnimPhase } from "#app/phases/common-anim-phase"; import { WeatherType } from "#enums/weather-type"; import { FieldEffectModifier } from "#app/modifier/modifier"; @@ -297,7 +296,7 @@ export class Arena { */ trySetWeatherOverride(weather: WeatherType): boolean { this.weather = new Weather(weather, 0); - globalScene.phaseManager.unshiftPhase(new CommonAnimPhase(undefined, undefined, CommonAnim.SUNNY + (weather - 1))); + globalScene.phaseManager.unshiftNew("CommonAnimPhase", undefined, undefined, CommonAnim.SUNNY + (weather - 1)); globalScene.phaseManager.queueMessage(getWeatherStartMessage(weather)!); // TODO: is this bang correct? return true; } @@ -328,8 +327,12 @@ export class Arena { this.weather?.isImmutable() && ![WeatherType.HARSH_SUN, WeatherType.HEAVY_RAIN, WeatherType.STRONG_WINDS, WeatherType.NONE].includes(weather) ) { - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase(undefined, undefined, CommonAnim.SUNNY + (oldWeatherType - 1), true), + globalScene.phaseManager.unshiftNew( + "CommonAnimPhase", + undefined, + undefined, + CommonAnim.SUNNY + (oldWeatherType - 1), + true, ); globalScene.phaseManager.queueMessage(getLegendaryWeatherContinuesMessage(oldWeatherType)!); return false; @@ -348,8 +351,12 @@ export class Arena { ); // TODO: is this bang correct? if (this.weather) { - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase(undefined, undefined, CommonAnim.SUNNY + (weather - 1), true), + globalScene.phaseManager.unshiftNew( + "CommonAnimPhase", + undefined, + undefined, + CommonAnim.SUNNY + (weather - 1), + true, ); globalScene.phaseManager.queueMessage(getWeatherStartMessage(weather)!); // TODO: is this bang correct? } else { @@ -433,8 +440,11 @@ export class Arena { if (this.terrain) { if (!ignoreAnim) { - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase(undefined, undefined, CommonAnim.MISTY_TERRAIN + (terrain - 1)), + globalScene.phaseManager.unshiftNew( + "CommonAnimPhase", + undefined, + undefined, + CommonAnim.MISTY_TERRAIN + (terrain - 1), ); } globalScene.phaseManager.queueMessage(getTerrainStartMessage(terrain)!); // TODO: is this bang correct? diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 5b38419e708..71b21076ae6 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -230,13 +230,6 @@ import { BiomeId } from "#enums/biome-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { getPokemonNameWithAffix } from "#app/messages"; -import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; -import { FaintPhase } from "#app/phases/faint-phase"; -import { LearnMovePhase } from "#app/phases/learn-move-phase"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { ObtainStatusEffectPhase } from "#app/phases/obtain-status-effect-phase"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; -import { SwitchSummonPhase } from "#app/phases/switch-summon-phase"; import { Challenges } from "#enums/challenges"; import { PokemonAnimType } from "#enums/pokemon-anim-type"; import { PLAYER_PARTY_MAX_SIZE } from "#app/constants"; @@ -256,7 +249,6 @@ import { doShinySparkleAnim } from "#app/field/anims"; import { MoveFlags } from "#enums/MoveFlags"; import { timedEventManager } from "#app/global-event-manager"; import { loadMoveAnimations } from "#app/sprites/pokemon-asset-loader"; -import { ResetStatusPhase } from "#app/phases/reset-status-phase"; export enum LearnMoveSituation { MISC, @@ -4013,7 +4005,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * Once the MoveEffectPhase is over (and calls it's .end() function, shiftPhase() will reset the PhaseQueueSplice via clearPhaseQueueSplice() ) */ globalScene.phaseManager.setPhaseQueueSplice(); - globalScene.phaseManager.unshiftPhase(new FaintPhase(this.getBattlerIndex(), preventEndure)); + globalScene.phaseManager.unshiftNew("FaintPhase", this.getBattlerIndex(), preventEndure); this.destroySubstitute(); this.lapseTag(BattlerTagType.COMMANDED); } @@ -4049,7 +4041,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } = {}, ): number { const isIndirectDamage = [HitResult.INDIRECT, HitResult.INDIRECT_KO].includes(result); - const damagePhase = new DamageAnimPhase(this.getBattlerIndex(), damage, result as DamageResult, isCritical); + const damagePhase = globalScene.phaseManager.create( + "DamageAnimPhase", + this.getBattlerIndex(), + damage, + result as DamageResult, + isCritical, + ); globalScene.phaseManager.unshiftPhase(damagePhase); if (this.switchOutStatus && source) { damage = 0; @@ -4778,8 +4776,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (overrideStatus) { this.resetStatus(false); } - globalScene.phaseManager.unshiftPhase( - new ObtainStatusEffectPhase(this.getBattlerIndex(), effect, turnsRemaining, sourceText, sourcePokemon), + globalScene.phaseManager.unshiftNew( + "ObtainStatusEffectPhase", + this.getBattlerIndex(), + effect, + turnsRemaining, + sourceText, + sourcePokemon, ); return true; } @@ -4828,7 +4831,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } if (asPhase) { - globalScene.phaseManager.unshiftPhase(new ResetStatusPhase(this, confusion, reloadAssets)); + globalScene.phaseManager.unshiftNew("ResetStatusPhase", this, confusion, reloadAssets); } else { this.clearStatus(confusion, reloadAssets); } @@ -5635,9 +5638,13 @@ export class PlayerPokemon extends Pokemon { this.getFieldIndex(), (slotIndex: number, _option: PartyOption) => { if (slotIndex >= globalScene.currentBattle.getBattlerCount() && slotIndex < 6) { - globalScene.phaseManager.prependToPhase( - new SwitchSummonPhase(switchType, this.getFieldIndex(), slotIndex, false), - MoveEndPhase, + globalScene.phaseManager.prependNewToPhase( + "MoveEndPhase", + "SwitchSummonPhase", + switchType, + this.getFieldIndex(), + slotIndex, + false, ); } globalScene.ui.setMode(UiMode.MESSAGE).then(resolve); @@ -6001,7 +6008,7 @@ export class PlayerPokemon extends Pokemon { pokemon .getMoveset(true) .map((m: PokemonMove) => - globalScene.phaseManager.unshiftPhase(new LearnMovePhase(newPartyMemberIndex, m.getMove().id)), + globalScene.phaseManager.unshiftNew("LearnMovePhase", newPartyMemberIndex, m.getMove().id), ); pokemon.destroy(); this.updateFusionPalette(); @@ -6644,8 +6651,14 @@ export class EnemyPokemon extends Pokemon { stages++; } - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase(this.getBattlerIndex(), true, [boostedStat!], stages, true, true), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + this.getBattlerIndex(), + true, + [boostedStat!], + stages, + true, + true, ); this.bossSegmentIndex--; } diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 81d9bf7189c..b6f96db751a 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -8,10 +8,7 @@ import { getStatusEffectHealText } from "#app/data/status-effect"; import Pokemon, { type PlayerPokemon } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import Overrides from "#app/overrides"; -import { EvolutionPhase } from "#app/phases/evolution-phase"; -import { LearnMovePhase, LearnMoveType } from "#app/phases/learn-move-phase"; -import { LevelUpPhase } from "#app/phases/level-up-phase"; -import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; +import { LearnMoveType } from "#app/phases/learn-move-phase"; import type { VoucherType } from "#app/system/voucher"; import { Command } from "#app/ui/command-ui-handler"; import { addTextObject, TextStyle } from "#app/ui/text"; @@ -1684,16 +1681,15 @@ export class TurnHealModifier extends PokemonHeldItemModifier { */ override apply(pokemon: Pokemon): boolean { if (!pokemon.isFullHp()) { - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - pokemon.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() / 16) * this.stackCount, - i18next.t("modifier:turnHealApply", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - typeName: this.type.name, - }), - true, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + pokemon.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() / 16) * this.stackCount, + i18next.t("modifier:turnHealApply", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + typeName: this.type.name, + }), + true, ); return true; } @@ -1782,16 +1778,15 @@ export class HitHealModifier extends PokemonHeldItemModifier { override apply(pokemon: Pokemon): boolean { if (pokemon.turnData.totalDamageDealt && !pokemon.isFullHp()) { // TODO: this shouldn't be undefined AFAIK - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - pokemon.getBattlerIndex(), - toDmgValue(pokemon.turnData.totalDamageDealt / 8) * this.stackCount, - i18next.t("modifier:hitHealApply", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - typeName: this.type.name, - }), - true, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + pokemon.getBattlerIndex(), + toDmgValue(pokemon.turnData.totalDamageDealt / 8) * this.stackCount, + i18next.t("modifier:hitHealApply", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + typeName: this.type.name, + }), + true, ); } @@ -1950,18 +1945,17 @@ export class PokemonInstantReviveModifier extends PokemonHeldItemModifier { */ override apply(pokemon: Pokemon): boolean { // Restore the Pokemon to half HP - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - pokemon.getBattlerIndex(), - toDmgValue(pokemon.getMaxHp() / 2), - i18next.t("modifier:pokemonInstantReviveApply", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - typeName: this.type.name, - }), - false, - false, - true, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + pokemon.getBattlerIndex(), + toDmgValue(pokemon.getMaxHp() / 2), + i18next.t("modifier:pokemonInstantReviveApply", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + typeName: this.type.name, + }), + false, + false, + true, ); // Remove the Pokemon's FAINT status @@ -2323,12 +2317,11 @@ export class PokemonLevelIncrementModifier extends ConsumablePokemonModifier { playerPokemon.addFriendship(FRIENDSHIP_GAIN_FROM_RARE_CANDY); - globalScene.phaseManager.unshiftPhase( - new LevelUpPhase( - globalScene.getPlayerParty().indexOf(playerPokemon), - playerPokemon.level - levelCount.value, - playerPokemon.level, - ), + globalScene.phaseManager.unshiftNew( + "LevelUpPhase", + globalScene.getPlayerParty().indexOf(playerPokemon), + playerPokemon.level - levelCount.value, + playerPokemon.level, ); return true; @@ -2344,8 +2337,11 @@ export class TmModifier extends ConsumablePokemonModifier { * @returns always `true` */ override apply(playerPokemon: PlayerPokemon): boolean { - globalScene.phaseManager.unshiftPhase( - new LearnMovePhase(globalScene.getPlayerParty().indexOf(playerPokemon), this.type.moveId, LearnMoveType.TM), + globalScene.phaseManager.unshiftNew( + "LearnMovePhase", + globalScene.getPlayerParty().indexOf(playerPokemon), + this.type.moveId, + LearnMoveType.TM, ); return true; @@ -2367,13 +2363,12 @@ export class RememberMoveModifier extends ConsumablePokemonModifier { * @returns always `true` */ override apply(playerPokemon: PlayerPokemon, cost?: number): boolean { - globalScene.phaseManager.unshiftPhase( - new LearnMovePhase( - globalScene.getPlayerParty().indexOf(playerPokemon), - playerPokemon.getLearnableLevelMoves()[this.levelMoveIndex], - LearnMoveType.MEMORY, - cost, - ), + globalScene.phaseManager.unshiftNew( + "LearnMovePhase", + globalScene.getPlayerParty().indexOf(playerPokemon), + playerPokemon.getLearnableLevelMoves()[this.levelMoveIndex], + LearnMoveType.MEMORY, + cost, ); return true; @@ -2410,9 +2405,7 @@ export class EvolutionItemModifier extends ConsumablePokemonModifier { } if (matchingEvolution) { - globalScene.phaseManager.unshiftPhase( - new EvolutionPhase(playerPokemon, matchingEvolution, playerPokemon.level - 1), - ); + globalScene.phaseManager.unshiftNew("EvolutionPhase", playerPokemon, matchingEvolution, playerPokemon.level - 1); return true; } @@ -3574,19 +3567,18 @@ export class EnemyTurnHealModifier extends EnemyPersistentModifier { */ override apply(enemyPokemon: Pokemon): boolean { if (!enemyPokemon.isFullHp()) { - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - enemyPokemon.getBattlerIndex(), - Math.max(Math.floor(enemyPokemon.getMaxHp() / (100 / this.healPercent)) * this.stackCount, 1), - i18next.t("modifier:enemyTurnHealApply", { - pokemonNameWithAffix: getPokemonNameWithAffix(enemyPokemon), - }), - true, - false, - false, - false, - true, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + enemyPokemon.getBattlerIndex(), + Math.max(Math.floor(enemyPokemon.getMaxHp() / (100 / this.healPercent)) * this.stackCount, 1), + i18next.t("modifier:enemyTurnHealApply", { + pokemonNameWithAffix: getPokemonNameWithAffix(enemyPokemon), + }), + true, + false, + false, + false, + true, ); return true; } diff --git a/src/phase-manager.ts b/src/phase-manager.ts index 8869f4b27b7..230e0331caf 100644 --- a/src/phase-manager.ts +++ b/src/phase-manager.ts @@ -1,11 +1,100 @@ -import { HideAbilityPhase } from "./phases/hide-ability-phase"; -import { ShowAbilityPhase } from "./phases/show-ability-phase"; -import { TurnInitPhase } from "./phases/turn-init-phase"; import type { Phase } from "#app/phase"; import type { default as Pokemon } from "#app/field/pokemon"; -import type { Constructor } from "#app/utils/common"; -import { MessagePhase } from "./phases/message-phase"; +import type { PhaseMap, PhaseString } from "./@types/phase-types"; import { globalScene } from "#app/global-scene"; +import { AddEnemyBuffModifierPhase } from "#app/phases/add-enemy-buff-modifier-phase"; +import { AttemptCapturePhase } from "#app/phases/attempt-capture-phase"; +import { AttemptRunPhase } from "#app/phases/attempt-run-phase"; +import { BattleEndPhase } from "#app/phases/battle-end-phase"; +import { BerryPhase } from "#app/phases/berry-phase"; +import { CheckStatusEffectPhase } from "#app/phases/check-status-effect-phase"; +import { CheckSwitchPhase } from "#app/phases/check-switch-phase"; +import { CommandPhase } from "#app/phases/command-phase"; +import { CommonAnimPhase } from "#app/phases/common-anim-phase"; +import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; +import { EggHatchPhase } from "#app/phases/egg-hatch-phase"; +import { EggLapsePhase } from "#app/phases/egg-lapse-phase"; +import { EggSummaryPhase } from "#app/phases/egg-summary-phase"; +import { EncounterPhase } from "#app/phases/encounter-phase"; +import { EndCardPhase } from "#app/phases/end-card-phase"; +import { EndEvolutionPhase } from "#app/phases/end-evolution-phase"; +import { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; +import { EvolutionPhase } from "#app/phases/evolution-phase"; +import { ExpPhase } from "#app/phases/exp-phase"; +import { FaintPhase } from "#app/phases/faint-phase"; +import { FormChangePhase } from "#app/phases/form-change-phase"; +import { GameOverModifierRewardPhase } from "#app/phases/game-over-modifier-reward-phase"; +import { GameOverPhase } from "#app/phases/game-over-phase"; +import { HideAbilityPhase } from "#app/phases/hide-ability-phase"; +import { HidePartyExpBarPhase } from "#app/phases/hide-party-exp-bar-phase"; +import { LearnMovePhase } from "#app/phases/learn-move-phase"; +import { LevelCapPhase } from "#app/phases/level-cap-phase"; +import { LevelUpPhase } from "#app/phases/level-up-phase"; +import { LoadMoveAnimPhase } from "#app/phases/load-move-anim-phase"; +import { LoginPhase } from "#app/phases/login-phase"; +import { MessagePhase } from "#app/phases/message-phase"; +import { ModifierRewardPhase } from "#app/phases/modifier-reward-phase"; +import { MoneyRewardPhase } from "#app/phases/money-reward-phase"; +import { MoveAnimPhase } from "#app/phases/move-anim-phase"; +import { MoveChargePhase } from "#app/phases/move-charge-phase"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase"; +import { MoveEndPhase } from "#app/phases/move-end-phase"; +import { MoveHeaderPhase } from "#app/phases/move-header-phase"; +import { MovePhase } from "#app/phases/move-phase"; +import { + MysteryEncounterPhase, + MysteryEncounterOptionSelectedPhase, + MysteryEncounterBattlePhase, + MysteryEncounterRewardsPhase, + PostMysteryEncounterPhase, + MysteryEncounterBattleStartCleanupPhase, +} from "#app/phases/mystery-encounter-phases"; +import { NewBattlePhase } from "#app/phases/new-battle-phase"; +import { NewBiomeEncounterPhase } from "#app/phases/new-biome-encounter-phase"; +import { NextEncounterPhase } from "#app/phases/next-encounter-phase"; +import { ObtainStatusEffectPhase } from "#app/phases/obtain-status-effect-phase"; +import { PartyExpPhase } from "#app/phases/party-exp-phase"; +import { PartyHealPhase } from "#app/phases/party-heal-phase"; +import { PokemonAnimPhase } from "#app/phases/pokemon-anim-phase"; +import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; +import { PokemonTransformPhase } from "#app/phases/pokemon-transform-phase"; +import { PostGameOverPhase } from "#app/phases/post-game-over-phase"; +import { PostSummonPhase } from "#app/phases/post-summon-phase"; +import { PostTurnStatusEffectPhase } from "#app/phases/post-turn-status-effect-phase"; +import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; +import { ReloadSessionPhase } from "#app/phases/reload-session-phase"; +import { ResetStatusPhase } from "#app/phases/reset-status-phase"; +import { ReturnPhase } from "#app/phases/return-phase"; +import { RevivalBlessingPhase } from "#app/phases/revival-blessing-phase"; +import { RibbonModifierRewardPhase } from "#app/phases/ribbon-modifier-reward-phase"; +import { ScanIvsPhase } from "#app/phases/scan-ivs-phase"; +import { SelectBiomePhase } from "#app/phases/select-biome-phase"; +import { SelectChallengePhase } from "#app/phases/select-challenge-phase"; +import { SelectGenderPhase } from "#app/phases/select-gender-phase"; +import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; +import { SelectStarterPhase } from "#app/phases/select-starter-phase"; +import { SelectTargetPhase } from "#app/phases/select-target-phase"; +import { ShinySparklePhase } from "#app/phases/shiny-sparkle-phase"; +import { ShowAbilityPhase } from "#app/phases/show-ability-phase"; +import { ShowPartyExpBarPhase } from "#app/phases/show-party-exp-bar-phase"; +import { ShowTrainerPhase } from "#app/phases/show-trainer-phase"; +import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; +import { SummonMissingPhase } from "#app/phases/summon-missing-phase"; +import { SummonPhase } from "#app/phases/summon-phase"; +import { SwitchBiomePhase } from "#app/phases/switch-biome-phase"; +import { SwitchPhase } from "#app/phases/switch-phase"; +import { SwitchSummonPhase } from "#app/phases/switch-summon-phase"; +import { TeraPhase } from "#app/phases/tera-phase"; +import { TitlePhase } from "#app/phases/title-phase"; +import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase"; +import { TrainerVictoryPhase } from "#app/phases/trainer-victory-phase"; +import { TurnEndPhase } from "#app/phases/turn-end-phase"; +import { TurnInitPhase } from "#app/phases/turn-init-phase"; +import { TurnStartPhase } from "#app/phases/turn-start-phase"; +import { UnavailablePhase } from "#app/phases/unavailable-phase"; +import { UnlockPhase } from "#app/phases/unlock-phase"; +import { VictoryPhase } from "#app/phases/victory-phase"; +import { WeatherEffectPhase } from "#app/phases/weather-effect-phase"; /** * Manager for phases used by battle scene. @@ -13,6 +102,115 @@ import { globalScene } from "#app/global-scene"; * *This file must not be imported or used directly. The manager is exclusively used by the battle scene and is not intended for external use.* */ +/** + * Object that holds all of the phase constructors. + * This is used to create new phases dynamically using the `newPhase` method in the `PhaseManager`. + * + * @remarks + * The keys of this object are the names of the phases, and the values are the constructors of the phases. + * This allows for easy creation of new phases without needing to import each phase individually. + */ +const PHASES = Object.freeze({ + AddEnemyBuffModifierPhase, + AttemptCapturePhase, + AttemptRunPhase, + BattleEndPhase, + BerryPhase, + CheckStatusEffectPhase, + CheckSwitchPhase, + CommandPhase, + CommonAnimPhase, + DamageAnimPhase, + EggHatchPhase, + EggLapsePhase, + EggSummaryPhase, + EncounterPhase, + EndCardPhase, + EndEvolutionPhase, + EnemyCommandPhase, + EvolutionPhase, + ExpPhase, + FaintPhase, + FormChangePhase, + GameOverPhase, + GameOverModifierRewardPhase, + HideAbilityPhase, + HidePartyExpBarPhase, + LearnMovePhase, + LevelCapPhase, + LevelUpPhase, + LoadMoveAnimPhase, + LoginPhase, + MessagePhase, + ModifierRewardPhase, + MoneyRewardPhase, + MoveAnimPhase, + MoveChargePhase, + MoveEffectPhase, + MoveEndPhase, + MoveHeaderPhase, + MovePhase, + MysteryEncounterPhase, + MysteryEncounterOptionSelectedPhase, + MysteryEncounterBattlePhase, + MysteryEncounterBattleStartCleanupPhase, + MysteryEncounterRewardsPhase, + PostMysteryEncounterPhase, + NewBattlePhase, + NewBiomeEncounterPhase, + NextEncounterPhase, + ObtainStatusEffectPhase, + PartyExpPhase, + PartyHealPhase, + PokemonAnimPhase, + PokemonHealPhase, + PokemonTransformPhase, + PostGameOverPhase, + PostSummonPhase, + PostTurnStatusEffectPhase, + QuietFormChangePhase, + ReloadSessionPhase, + ResetStatusPhase, + ReturnPhase, + RevivalBlessingPhase, + RibbonModifierRewardPhase, + ScanIvsPhase, + SelectBiomePhase, + SelectChallengePhase, + SelectGenderPhase, + SelectModifierPhase, + SelectStarterPhase, + SelectTargetPhase, + ShinySparklePhase, + ShowAbilityPhase, + ShowPartyExpBarPhase, + ShowTrainerPhase, + StatStageChangePhase, + SummonMissingPhase, + SummonPhase, + SwitchBiomePhase, + SwitchPhase, + SwitchSummonPhase, + TeraPhase, + TitlePhase, + ToggleDoublePositionPhase, + TrainerVictoryPhase, + TurnEndPhase, + TurnInitPhase, + TurnStartPhase, + UnavailablePhase, + UnlockPhase, + VictoryPhase, + WeatherEffectPhase, +}); + +// This type export cannot be moved to `@types`, as `Phases` is intentionally private to this file +/** Maps Phase strings to their constructors */ +export type PhaseConstructorMap = typeof PHASES; + +/** + * PhaseManager is responsible for managing the phases in the battle scene + */ export class PhaseManager { /** PhaseQueue: dequeue/remove the first element to get the next phase */ public phaseQueue: Phase[] = []; @@ -213,15 +411,16 @@ export class PhaseManager { /** * Tries to add the input phase to index before target phase in the phaseQueue, else simply calls unshiftPhase() - * @param phase {@linkcode Phase} the phase to be added - * @param targetPhase {@linkcode Phase} the type of phase to search for in phaseQueue + * @param phase - The phase to be added + * @param targetPhase - The phase to search for in phaseQueue * @returns boolean if a targetPhase was found and added */ - prependToPhase(phase: Phase | Phase[], targetPhase: Constructor): boolean { + prependToPhase(phase: Phase | Phase[], targetPhase: PhaseString): boolean { if (!Array.isArray(phase)) { phase = [phase]; } - const targetIndex = this.phaseQueue.findIndex(ph => ph instanceof targetPhase); + const target = PHASES[targetPhase]; + const targetIndex = this.phaseQueue.findIndex(ph => ph instanceof target); if (targetIndex !== -1) { this.phaseQueue.splice(targetIndex, 0, ...phase); @@ -234,14 +433,15 @@ export class PhaseManager { /** * Attempt to add the input phase(s) to index after target phase in the {@linkcode phaseQueue}, else simply calls {@linkcode unshiftPhase()} * @param phase - The phase(s) to be added - * @param targetPhase - The type of phase to search for in {@linkcode phaseQueue} + * @param targetPhase - The phase to search for in phaseQueue * @returns `true` if a `targetPhase` was found to append to */ - appendToPhase(phase: Phase | Phase[], targetPhase: Constructor): boolean { + appendToPhase(phase: Phase | Phase[], targetPhase: PhaseString): boolean { if (!Array.isArray(phase)) { phase = [phase]; } - const targetIndex = this.phaseQueue.findIndex(ph => ph instanceof targetPhase); + const target = PHASES[targetPhase]; + const targetIndex = this.phaseQueue.findIndex(ph => ph instanceof target); if (targetIndex !== -1 && this.phaseQueue.length > targetIndex) { this.phaseQueue.splice(targetIndex + 1, 0, ...phase); @@ -308,4 +508,74 @@ export class PhaseManager { } this.phaseQueue.push(new TurnInitPhase()); } + + /** + * Dynamically create the named phase from the provided arguments + * + * @remarks + * Used to avoid importing each phase individually, allowing for dynamic creation of phases. + * @param phase - The name of the phase to create. + * @param args - The arguments to pass to the phase constructor. + * @returns The requested phase instance + */ + public create(phase: T, ...args: ConstructorParameters): PhaseMap[T] { + const PhaseClass = PHASES[phase]; + + if (!PhaseClass) { + throw new Error(`Phase ${phase} does not exist in PhaseMap.`); + } + + // @ts-expect-error: Typescript does not support narrowing the type of operands in generic methods (see https://stackoverflow.com/a/72891234) + return new PhaseClass(...args); + } + + /** + * Create a new phase and immediately push it to the phase queue. Equivalent to calling {@linkcode create} followed by {@linkcode pushPhase}. + * @param phase - The name of the phase to create + * @param args - The arguments to pass to the phase constructor + */ + public pushNew(phase: T, ...args: ConstructorParameters): void { + this.pushPhase(this.create(phase, ...args)); + } + + /** + * Create a new phase and immediately unshift it to the phase queue. Equivalent to calling {@linkcode create} followed by {@linkcode unshiftPhase}. + * @param phase - The name of the phase to create + * @param args - The arguments to pass to the phase constructor + */ + public unshiftNew(phase: T, ...args: ConstructorParameters): void { + this.unshiftPhase(this.create(phase, ...args)); + } + + /** + * Create a new phase and immediately prepend it to an existing phase in the phase queue. + * Equivalent to calling {@linkcode create} followed by {@linkcode prependToPhase}. + * @param targetPhase - The phase to search for in phaseQueue + * @param phase - The name of the phase to create + * @param args - The arguments to pass to the phase constructor + * @returns `true` if a `targetPhase` was found to prepend to + */ + public prependNewToPhase( + targetPhase: PhaseString, + phase: T, + ...args: ConstructorParameters + ): boolean { + return this.prependToPhase(this.create(phase, ...args), targetPhase); + } + + /** + * Create a new phase and immediately append it to an existing phase the phase queue. + * Equivalent to calling {@linkcode create} followed by {@linkcode appendToPhase}. + * @param targetPhase - The phase to search for in phaseQueue + * @param phase - The name of the phase to create + * @param args - The arguments to pass to the phase constructor + * @returns `true` if a `targetPhase` was found to append to + */ + public appendNewToPhase( + targetPhase: PhaseString, + phase: T, + ...args: ConstructorParameters + ): boolean { + return this.appendToPhase(this.create(phase, ...args), targetPhase); + } } diff --git a/src/phases/attempt-capture-phase.ts b/src/phases/attempt-capture-phase.ts index 09eeb6e0a19..4f3f54a7e5b 100644 --- a/src/phases/attempt-capture-phase.ts +++ b/src/phases/attempt-capture-phase.ts @@ -14,7 +14,6 @@ import type { EnemyPokemon } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { PokemonHeldItemModifier } from "#app/modifier/modifier"; import { PokemonPhase } from "#app/phases/pokemon-phase"; -import { VictoryPhase } from "#app/phases/victory-phase"; import { achvs } from "#app/system/achv"; import type { PartyOption } from "#app/ui/party-ui-handler"; import { PartyUiMode } from "#app/ui/party-ui-handler"; @@ -257,7 +256,7 @@ export class AttemptCapturePhase extends PokemonPhase { null, () => { const end = () => { - globalScene.phaseManager.unshiftPhase(new VictoryPhase(this.battlerIndex)); + globalScene.phaseManager.unshiftNew("VictoryPhase", this.battlerIndex); globalScene.pokemonInfoContainer.hide(); this.removePb(); this.end(); diff --git a/src/phases/attempt-run-phase.ts b/src/phases/attempt-run-phase.ts index 2bf6ba2fb5b..525be8c21ab 100644 --- a/src/phases/attempt-run-phase.ts +++ b/src/phases/attempt-run-phase.ts @@ -10,11 +10,8 @@ import type { PlayerPokemon, EnemyPokemon } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import i18next from "i18next"; import { NumberHolder } from "#app/utils/common"; -import { BattleEndPhase } from "./battle-end-phase"; -import { NewBattlePhase } from "./new-battle-phase"; import { PokemonPhase } from "./pokemon-phase"; import { globalScene } from "#app/global-scene"; -import { SelectBiomePhase } from "./select-biome-phase"; export class AttemptRunPhase extends PokemonPhase { public readonly phaseName = "AttemptRunPhase"; @@ -60,13 +57,13 @@ export class AttemptRunPhase extends PokemonPhase { enemyPokemon.trySetStatus(StatusEffect.FAINT); }); - globalScene.phaseManager.pushPhase(new BattleEndPhase(false)); + globalScene.phaseManager.pushNew("BattleEndPhase", false); if (globalScene.gameMode.hasRandomBiomes || globalScene.isNewBiome()) { - globalScene.phaseManager.pushPhase(new SelectBiomePhase()); + globalScene.phaseManager.pushNew("SelectBiomePhase"); } - globalScene.phaseManager.pushPhase(new NewBattlePhase()); + globalScene.phaseManager.pushNew("NewBattlePhase"); } else { playerPokemon.turnData.failedRunAway = true; globalScene.phaseManager.queueMessage(i18next.t("battle:runAwayCannotEscape"), null, true, 500); diff --git a/src/phases/battle-end-phase.ts b/src/phases/battle-end-phase.ts index 4e3543be03a..e169de58cb3 100644 --- a/src/phases/battle-end-phase.ts +++ b/src/phases/battle-end-phase.ts @@ -2,7 +2,6 @@ import { globalScene } from "#app/global-scene"; import { applyPostBattleAbAttrs, PostBattleAbAttr } from "#app/data/abilities/ability"; import { LapsingPersistentModifier, LapsingPokemonHeldItemModifier } from "#app/modifier/modifier"; import { BattlePhase } from "./battle-phase"; -import { GameOverPhase } from "./game-over-phase"; export class BattleEndPhase extends BattlePhase { public readonly phaseName = "BattleEndPhase"; @@ -56,7 +55,7 @@ export class BattleEndPhase extends BattlePhase { // Endless graceful end if (globalScene.gameMode.isEndless && globalScene.currentBattle.waveIndex >= 5850) { globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.unshiftPhase(new GameOverPhase(true)); + globalScene.phaseManager.unshiftNew("GameOverPhase", true); } for (const pokemon of globalScene.getField()) { diff --git a/src/phases/berry-phase.ts b/src/phases/berry-phase.ts index e9e177a8fe4..6e40e299e7c 100644 --- a/src/phases/berry-phase.ts +++ b/src/phases/berry-phase.ts @@ -11,7 +11,6 @@ import { BerryModifier } from "#app/modifier/modifier"; import i18next from "i18next"; import { BooleanHolder } from "#app/utils/common"; import { FieldPhase } from "./field-phase"; -import { CommonAnimPhase } from "./common-anim-phase"; import { globalScene } from "#app/global-scene"; import type Pokemon from "#app/field/pokemon"; @@ -58,8 +57,11 @@ export class BerryPhase extends FieldPhase { return; } - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.USE_ITEM), + globalScene.phaseManager.unshiftNew( + "CommonAnimPhase", + pokemon.getBattlerIndex(), + pokemon.getBattlerIndex(), + CommonAnim.USE_ITEM, ); for (const berryModifier of globalScene.applyModifiers(BerryModifier, pokemon.isPlayer(), pokemon)) { diff --git a/src/phases/check-status-effect-phase.ts b/src/phases/check-status-effect-phase.ts index ec15676ebcc..e4793fae076 100644 --- a/src/phases/check-status-effect-phase.ts +++ b/src/phases/check-status-effect-phase.ts @@ -1,4 +1,3 @@ -import { PostTurnStatusEffectPhase } from "#app/phases/post-turn-status-effect-phase"; import { Phase } from "#app/phase"; import type { BattlerIndex } from "#app/battle"; import { globalScene } from "#app/global-scene"; @@ -15,7 +14,7 @@ export class CheckStatusEffectPhase extends Phase { const field = globalScene.getField(); for (const o of this.order) { if (field[o].status?.isPostTurn()) { - globalScene.phaseManager.unshiftPhase(new PostTurnStatusEffectPhase(o)); + globalScene.phaseManager.unshiftNew("PostTurnStatusEffectPhase", o); } } this.end(); diff --git a/src/phases/check-switch-phase.ts b/src/phases/check-switch-phase.ts index 2299bf0c0a5..97f4092096f 100644 --- a/src/phases/check-switch-phase.ts +++ b/src/phases/check-switch-phase.ts @@ -5,8 +5,6 @@ import { getPokemonNameWithAffix } from "#app/messages"; import { UiMode } from "#enums/ui-mode"; import i18next from "i18next"; import { BattlePhase } from "./battle-phase"; -import { SummonMissingPhase } from "./summon-missing-phase"; -import { SwitchPhase } from "./switch-phase"; import { SwitchType } from "#enums/switch-type"; export class CheckSwitchPhase extends BattlePhase { @@ -35,7 +33,7 @@ export class CheckSwitchPhase extends BattlePhase { // ...if the checked Pokemon is somehow not on the field if (globalScene.field.getAll().indexOf(pokemon) === -1) { - globalScene.phaseManager.unshiftPhase(new SummonMissingPhase(this.fieldIndex)); + globalScene.phaseManager.unshiftNew("SummonMissingPhase", this.fieldIndex); return super.end(); } @@ -68,9 +66,7 @@ export class CheckSwitchPhase extends BattlePhase { UiMode.CONFIRM, () => { globalScene.ui.setMode(UiMode.MESSAGE); - globalScene.phaseManager.unshiftPhase( - new SwitchPhase(SwitchType.INITIAL_SWITCH, this.fieldIndex, false, true), - ); + globalScene.phaseManager.unshiftNew("SwitchPhase", SwitchType.INITIAL_SWITCH, this.fieldIndex, false, true); this.end(); }, () => { diff --git a/src/phases/command-phase.ts b/src/phases/command-phase.ts index 7a2e427ecce..afd9cb3bf93 100644 --- a/src/phases/command-phase.ts +++ b/src/phases/command-phase.ts @@ -18,7 +18,6 @@ import { Command } from "#app/ui/command-ui-handler"; import { UiMode } from "#enums/ui-mode"; import i18next from "i18next"; import { FieldPhase } from "./field-phase"; -import { SelectTargetPhase } from "./select-target-phase"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { isNullOrUndefined } from "#app/utils/common"; import { ArenaTagSide } from "#app/data/arena-tag"; @@ -192,7 +191,7 @@ export class CommandPhase extends FieldPhase { } console.log(moveTargets, getPokemonNameWithAffix(playerPokemon)); if (moveTargets.targets.length > 1 && moveTargets.multiple) { - globalScene.phaseManager.unshiftPhase(new SelectTargetPhase(this.fieldIndex)); + globalScene.phaseManager.unshiftNew("SelectTargetPhase", this.fieldIndex); } if (turnCommand.move && (moveTargets.targets.length <= 1 || moveTargets.multiple)) { turnCommand.move.targets = moveTargets.targets; @@ -203,7 +202,7 @@ export class CommandPhase extends FieldPhase { ) { turnCommand.move.targets = playerPokemon.getMoveQueue()[0].targets; } else { - globalScene.phaseManager.unshiftPhase(new SelectTargetPhase(this.fieldIndex)); + globalScene.phaseManager.unshiftNew("SelectTargetPhase", this.fieldIndex); } globalScene.currentBattle.preTurnCommands[this.fieldIndex] = preTurnCommand; globalScene.currentBattle.turnCommands[this.fieldIndex] = turnCommand; @@ -457,8 +456,8 @@ export class CommandPhase extends FieldPhase { cancel() { if (this.fieldIndex) { - globalScene.phaseManager.unshiftPhase(new CommandPhase(0)); - globalScene.phaseManager.unshiftPhase(new CommandPhase(1)); + globalScene.phaseManager.unshiftNew("CommandPhase", 0); + globalScene.phaseManager.unshiftNew("CommandPhase", 1); this.end(); } } diff --git a/src/phases/egg-lapse-phase.ts b/src/phases/egg-lapse-phase.ts index a19bf8f50e5..206bef1a33c 100644 --- a/src/phases/egg-lapse-phase.ts +++ b/src/phases/egg-lapse-phase.ts @@ -4,11 +4,9 @@ import { EGG_SEED } from "#app/data/egg"; import { Phase } from "#app/phase"; import i18next from "i18next"; import Overrides from "#app/overrides"; -import { EggHatchPhase } from "./egg-hatch-phase"; import { UiMode } from "#enums/ui-mode"; import { achvs } from "#app/system/achv"; import type { PlayerPokemon } from "#app/field/pokemon"; -import { EggSummaryPhase } from "./egg-summary-phase"; import { EggHatchData } from "#app/data/egg-hatch-data"; /** @@ -83,7 +81,7 @@ export class EggLapsePhase extends Phase { hatchEggsRegular(eggsToHatch: Egg[]) { let eggsToHatchCount: number = eggsToHatch.length; for (const egg of eggsToHatch) { - globalScene.phaseManager.unshiftPhase(new EggHatchPhase(this, egg, eggsToHatchCount)); + globalScene.phaseManager.unshiftNew("EggHatchPhase", this, egg, eggsToHatchCount); eggsToHatchCount--; } } @@ -99,7 +97,7 @@ export class EggLapsePhase extends Phase { } showSummary() { - globalScene.phaseManager.unshiftPhase(new EggSummaryPhase(this.eggHatchData)); + globalScene.phaseManager.unshiftNew("EggSummaryPhase", this.eggHatchData); this.end(); } diff --git a/src/phases/encounter-phase.ts b/src/phases/encounter-phase.ts index cdd17c6d6d6..e3b33122ac2 100644 --- a/src/phases/encounter-phase.ts +++ b/src/phases/encounter-phase.ts @@ -23,15 +23,6 @@ import { BoostBugSpawnModifier, IvScannerModifier, TurnHeldItemTransferModifier import { ModifierPoolType, regenerateModifierPoolThresholds } from "#app/modifier/modifier-type"; import Overrides from "#app/overrides"; import { BattlePhase } from "#app/phases/battle-phase"; -import { CheckSwitchPhase } from "#app/phases/check-switch-phase"; -import { GameOverPhase } from "#app/phases/game-over-phase"; -import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { PostSummonPhase } from "#app/phases/post-summon-phase"; -import { ReturnPhase } from "#app/phases/return-phase"; -import { ScanIvsPhase } from "#app/phases/scan-ivs-phase"; -import { ShinySparklePhase } from "#app/phases/shiny-sparkle-phase"; -import { SummonPhase } from "#app/phases/summon-phase"; -import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase"; import { achvs } from "#app/system/achv"; import { handleTutorial, Tutorial } from "#app/tutorial"; import { UiMode } from "#enums/ui-mode"; @@ -68,7 +59,7 @@ export class EncounterPhase extends BattlePhase { // Failsafe if players somehow skip floor 200 in classic mode if (globalScene.gameMode.isClassic && globalScene.currentBattle.waveIndex > 200) { - globalScene.phaseManager.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.unshiftNew("GameOverPhase"); } const loadEnemyAssets: Promise[] = []; @@ -438,9 +429,9 @@ export class EncounterPhase extends BattlePhase { const doTrainerSummon = () => { this.hideEnemyTrainer(); const availablePartyMembers = globalScene.getEnemyParty().filter(p => !p.isFainted()).length; - globalScene.phaseManager.unshiftPhase(new SummonPhase(0, false)); + globalScene.phaseManager.unshiftNew("SummonPhase", 0, false); if (globalScene.currentBattle.double && availablePartyMembers > 1) { - globalScene.phaseManager.unshiftPhase(new SummonPhase(1, false)); + globalScene.phaseManager.unshiftNew("SummonPhase", 1, false); } this.end(); }; @@ -496,7 +487,7 @@ export class EncounterPhase extends BattlePhase { globalScene.ui.clearText(); globalScene.ui.getMessageHandler().hideNameText(); - globalScene.phaseManager.unshiftPhase(new MysteryEncounterPhase()); + globalScene.phaseManager.unshiftNew("MysteryEncounterPhase"); this.end(); }; @@ -554,7 +545,7 @@ export class EncounterPhase extends BattlePhase { enemyField.forEach((enemyPokemon, e) => { if (enemyPokemon.isShiny(true)) { - globalScene.phaseManager.unshiftPhase(new ShinySparklePhase(BattlerIndex.ENEMY + e)); + globalScene.phaseManager.unshiftNew("ShinySparklePhase", BattlerIndex.ENEMY + e); } /** This sets Eternatus' held item to be untransferrable, preventing it from being stolen */ if ( @@ -576,25 +567,31 @@ export class EncounterPhase extends BattlePhase { if (![BattleType.TRAINER, BattleType.MYSTERY_ENCOUNTER].includes(globalScene.currentBattle.battleType)) { enemyField.map(p => - globalScene.phaseManager.pushConditionalPhase(new PostSummonPhase(p.getBattlerIndex()), () => { - // if there is not a player party, we can't continue - if (!globalScene.getPlayerParty().length) { - return false; - } - // how many player pokemon are on the field ? - const pokemonsOnFieldCount = globalScene.getPlayerParty().filter(p => p.isOnField()).length; - // if it's a 2vs1, there will never be a 2nd pokemon on our field even - const requiredPokemonsOnField = Math.min(globalScene.getPlayerParty().filter(p => !p.isFainted()).length, 2); - // if it's a double, there should be 2, otherwise 1 - if (globalScene.currentBattle.double) { - return pokemonsOnFieldCount === requiredPokemonsOnField; - } - return pokemonsOnFieldCount === 1; - }), + globalScene.phaseManager.pushConditionalPhase( + globalScene.phaseManager.create("PostSummonPhase", p.getBattlerIndex()), + () => { + // if there is not a player party, we can't continue + if (!globalScene.getPlayerParty().length) { + return false; + } + // how many player pokemon are on the field ? + const pokemonsOnFieldCount = globalScene.getPlayerParty().filter(p => p.isOnField()).length; + // if it's a 2vs1, there will never be a 2nd pokemon on our field even + const requiredPokemonsOnField = Math.min( + globalScene.getPlayerParty().filter(p => !p.isFainted()).length, + 2, + ); + // if it's a double, there should be 2, otherwise 1 + if (globalScene.currentBattle.double) { + return pokemonsOnFieldCount === requiredPokemonsOnField; + } + return pokemonsOnFieldCount === 1; + }, + ), ); const ivScannerModifier = globalScene.findModifier(m => m instanceof IvScannerModifier); if (ivScannerModifier) { - enemyField.map(p => globalScene.phaseManager.pushPhase(new ScanIvsPhase(p.getBattlerIndex()))); + enemyField.map(p => globalScene.phaseManager.pushNew("ScanIvsPhase", p.getBattlerIndex())); } } @@ -602,21 +599,21 @@ export class EncounterPhase extends BattlePhase { const availablePartyMembers = globalScene.getPokemonAllowedInBattle(); if (!availablePartyMembers[0].isOnField()) { - globalScene.phaseManager.pushPhase(new SummonPhase(0)); + globalScene.phaseManager.pushNew("SummonPhase", 0); } if (globalScene.currentBattle.double) { if (availablePartyMembers.length > 1) { - globalScene.phaseManager.pushPhase(new ToggleDoublePositionPhase(true)); + globalScene.phaseManager.pushNew("ToggleDoublePositionPhase", true); if (!availablePartyMembers[1].isOnField()) { - globalScene.phaseManager.pushPhase(new SummonPhase(1)); + globalScene.phaseManager.pushNew("SummonPhase", 1); } } } else { if (availablePartyMembers.length > 1 && availablePartyMembers[1].isOnField()) { - globalScene.phaseManager.pushPhase(new ReturnPhase(1)); + globalScene.phaseManager.pushNew("ReturnPhase", 1); } - globalScene.phaseManager.pushPhase(new ToggleDoublePositionPhase(false)); + globalScene.phaseManager.pushNew("ToggleDoublePositionPhase", false); } if ( @@ -625,9 +622,9 @@ export class EncounterPhase extends BattlePhase { ) { const minPartySize = globalScene.currentBattle.double ? 2 : 1; if (availablePartyMembers.length > minPartySize) { - globalScene.phaseManager.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); + globalScene.phaseManager.pushNew("CheckSwitchPhase", 0, globalScene.currentBattle.double); if (globalScene.currentBattle.double) { - globalScene.phaseManager.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); + globalScene.phaseManager.pushNew("CheckSwitchPhase", 1, globalScene.currentBattle.double); } } } diff --git a/src/phases/evolution-phase.ts b/src/phases/evolution-phase.ts index 937a7d31542..eaedb6d32b0 100644 --- a/src/phases/evolution-phase.ts +++ b/src/phases/evolution-phase.ts @@ -14,8 +14,6 @@ import { LearnMoveSituation } from "#app/field/pokemon"; import { getTypeRgb } from "#app/data/type"; import i18next from "i18next"; import { getPokemonNameWithAffix } from "#app/messages"; -import { LearnMovePhase } from "#app/phases/learn-move-phase"; -import { EndEvolutionPhase } from "#app/phases/end-evolution-phase"; import { EVOLVE_MOVE } from "#app/data/balance/pokemon-level-moves"; export class EvolutionPhase extends Phase { @@ -262,7 +260,7 @@ export class EvolutionPhase extends Phase { SoundFade.fadeOut(globalScene, this.evolutionBgm, 100); - globalScene.phaseManager.unshiftPhase(new EndEvolutionPhase()); + globalScene.phaseManager.unshiftNew("EndEvolutionPhase"); globalScene.ui.showText( i18next.t("menu:stoppedEvolving", { @@ -355,11 +353,13 @@ export class EvolutionPhase extends Phase { .getLevelMoves(this.lastLevel + 1, true, false, false, learnSituation) .filter(lm => lm[0] === EVOLVE_MOVE); for (const lm of levelMoves) { - globalScene.phaseManager.unshiftPhase( - new LearnMovePhase(globalScene.getPlayerParty().indexOf(this.pokemon), lm[1]), + globalScene.phaseManager.unshiftNew( + "LearnMovePhase", + globalScene.getPlayerParty().indexOf(this.pokemon), + lm[1], ); } - globalScene.phaseManager.unshiftPhase(new EndEvolutionPhase()); + globalScene.phaseManager.unshiftNew("EndEvolutionPhase"); globalScene.playSound("se/shine"); this.doSpray(); diff --git a/src/phases/exp-phase.ts b/src/phases/exp-phase.ts index 8084ae78221..74768e86186 100644 --- a/src/phases/exp-phase.ts +++ b/src/phases/exp-phase.ts @@ -4,7 +4,6 @@ import { ExpBoosterModifier } from "#app/modifier/modifier"; import i18next from "i18next"; import { NumberHolder } from "#app/utils/common"; import { PlayerPartyMemberPokemonPhase } from "./player-party-member-pokemon-phase"; -import { LevelUpPhase } from "./level-up-phase"; export class ExpPhase extends PlayerPartyMemberPokemonPhase { public readonly phaseName = "ExpPhase"; @@ -34,7 +33,7 @@ export class ExpPhase extends PlayerPartyMemberPokemonPhase { pokemon.addExp(exp.value); const newLevel = pokemon.level; if (newLevel > lastLevel) { - globalScene.phaseManager.unshiftPhase(new LevelUpPhase(this.partyMemberIndex, lastLevel, newLevel)); + globalScene.phaseManager.unshiftNew("LevelUpPhase", this.partyMemberIndex, lastLevel, newLevel); } pokemon.updateInfo().then(() => this.end()); }, diff --git a/src/phases/faint-phase.ts b/src/phases/faint-phase.ts index 41e21162dbf..38376af4356 100644 --- a/src/phases/faint-phase.ts +++ b/src/phases/faint-phase.ts @@ -24,13 +24,7 @@ import { getPokemonNameWithAffix } from "#app/messages"; import { PokemonInstantReviveModifier } from "#app/modifier/modifier"; import { SwitchType } from "#enums/switch-type"; import i18next from "i18next"; -import { DamageAnimPhase } from "./damage-anim-phase"; -import { GameOverPhase } from "./game-over-phase"; import { PokemonPhase } from "./pokemon-phase"; -import { SwitchPhase } from "./switch-phase"; -import { SwitchSummonPhase } from "./switch-summon-phase"; -import { ToggleDoublePositionPhase } from "./toggle-double-position-phase"; -import { VictoryPhase } from "./victory-phase"; import { isNullOrUndefined } from "#app/utils/common"; import { FRIENDSHIP_LOSS_FROM_FAINT } from "#app/data/balance/starters"; import { BattlerTagType } from "#enums/battler-tag-type"; @@ -166,7 +160,7 @@ export class FaintPhase extends PokemonPhase { const legalPlayerPartyPokemon = legalPlayerPokemon.filter(p => !p.isActive(true)); if (!legalPlayerPokemon.length) { /** If the player doesn't have any legal Pokemon, end the game */ - globalScene.phaseManager.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.unshiftNew("GameOverPhase"); } else if ( globalScene.currentBattle.double && legalPlayerPokemon.length === 1 && @@ -176,25 +170,23 @@ export class FaintPhase extends PokemonPhase { * If the player has exactly one Pokemon in total at this point in a double battle, and that Pokemon * is already on the field, unshift a phase that moves that Pokemon to center position. */ - globalScene.phaseManager.unshiftPhase(new ToggleDoublePositionPhase(true)); + globalScene.phaseManager.unshiftNew("ToggleDoublePositionPhase", true); } else if (legalPlayerPartyPokemon.length > 0) { /** * If previous conditions weren't met, and the player has at least 1 legal Pokemon off the field, * push a phase that prompts the player to summon a Pokemon from their party. */ - globalScene.phaseManager.pushPhase(new SwitchPhase(SwitchType.SWITCH, this.fieldIndex, true, false)); + globalScene.phaseManager.pushNew("SwitchPhase", SwitchType.SWITCH, this.fieldIndex, true, false); } } else { - globalScene.phaseManager.unshiftPhase(new VictoryPhase(this.battlerIndex)); + globalScene.phaseManager.unshiftNew("VictoryPhase", this.battlerIndex); if ([BattleType.TRAINER, BattleType.MYSTERY_ENCOUNTER].includes(globalScene.currentBattle.battleType)) { const hasReservePartyMember = !!globalScene .getEnemyParty() .filter(p => p.isActive() && !p.isOnField() && p.trainerSlot === (pokemon as EnemyPokemon).trainerSlot) .length; if (hasReservePartyMember) { - globalScene.phaseManager.pushPhase( - new SwitchSummonPhase(SwitchType.SWITCH, this.fieldIndex, -1, false, false), - ); + globalScene.phaseManager.pushNew("SwitchSummonPhase", SwitchType.SWITCH, this.fieldIndex, -1, false, false); } } } @@ -249,7 +241,7 @@ export class FaintPhase extends PokemonPhase { } else { // Final boss' HP threshold has been bypassed; cancel faint and force check for 2nd phase enemy.hp++; - globalScene.phaseManager.unshiftPhase(new DamageAnimPhase(enemy.getBattlerIndex(), 0, HitResult.INDIRECT)); + globalScene.phaseManager.unshiftNew("DamageAnimPhase", enemy.getBattlerIndex(), 0, HitResult.INDIRECT); this.end(); } return true; diff --git a/src/phases/form-change-phase.ts b/src/phases/form-change-phase.ts index c0d2a9a11eb..3813359d432 100644 --- a/src/phases/form-change-phase.ts +++ b/src/phases/form-change-phase.ts @@ -7,7 +7,6 @@ import type { PlayerPokemon } from "../field/pokemon"; import { UiMode } from "#enums/ui-mode"; import type PartyUiHandler from "../ui/party-ui-handler"; import { getPokemonNameWithAffix } from "../messages"; -import { EndEvolutionPhase } from "./end-evolution-phase"; import { EvolutionPhase } from "./evolution-phase"; import { BattlerTagType } from "#enums/battler-tag-type"; import { SpeciesFormKey } from "#enums/species-form-key"; @@ -100,7 +99,7 @@ export class FormChangePhase extends EvolutionPhase { globalScene.time.delayedCall(900, () => { this.pokemon.changeForm(this.formChange).then(() => { if (!this.modal) { - globalScene.phaseManager.unshiftPhase(new EndEvolutionPhase()); + globalScene.phaseManager.unshiftNew("EndEvolutionPhase"); } globalScene.playSound("se/shine"); diff --git a/src/phases/game-over-phase.ts b/src/phases/game-over-phase.ts index 166bb955c24..5fabc5cee81 100644 --- a/src/phases/game-over-phase.ts +++ b/src/phases/game-over-phase.ts @@ -9,14 +9,7 @@ import { trainerConfigs } from "#app/data/trainers/trainer-config"; import type Pokemon from "#app/field/pokemon"; import { modifierTypes } from "#app/modifier/modifier-type"; import { BattlePhase } from "#app/phases/battle-phase"; -import { CheckSwitchPhase } from "#app/phases/check-switch-phase"; -import { EncounterPhase } from "#app/phases/encounter-phase"; -import { EndCardPhase } from "#app/phases/end-card-phase"; -import { GameOverModifierRewardPhase } from "#app/phases/game-over-modifier-reward-phase"; -import { PostGameOverPhase } from "#app/phases/post-game-over-phase"; -import { RibbonModifierRewardPhase } from "#app/phases/ribbon-modifier-reward-phase"; -import { SummonPhase } from "#app/phases/summon-phase"; -import { UnlockPhase } from "#app/phases/unlock-phase"; +import type { EndCardPhase } from "#app/phases/end-card-phase"; import { achvs, ChallengeAchv } from "#app/system/achv"; import { Unlockables } from "#app/system/unlockables"; import { UiMode } from "#enums/ui-mode"; @@ -31,7 +24,6 @@ import ChallengeData from "#app/system/challenge-data"; import TrainerData from "#app/system/trainer-data"; import ArenaData from "#app/system/arena-data"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import { MessagePhase } from "./message-phase"; export class GameOverPhase extends BattlePhase { public readonly phaseName = "GameOverPhase"; @@ -86,21 +78,21 @@ export class GameOverPhase extends BattlePhase { globalScene.reset(); globalScene.phaseManager.clearPhaseQueue(); globalScene.gameData.loadSession(globalScene.sessionSlotId).then(() => { - globalScene.phaseManager.pushPhase(new EncounterPhase(true)); + globalScene.phaseManager.pushNew("EncounterPhase", true); const availablePartyMembers = globalScene.getPokemonAllowedInBattle().length; - globalScene.phaseManager.pushPhase(new SummonPhase(0)); + globalScene.phaseManager.pushNew("SummonPhase", 0); if (globalScene.currentBattle.double && availablePartyMembers > 1) { - globalScene.phaseManager.pushPhase(new SummonPhase(1)); + globalScene.phaseManager.pushNew("SummonPhase", 1); } if ( globalScene.currentBattle.waveIndex > 1 && globalScene.currentBattle.battleType !== BattleType.TRAINER ) { - globalScene.phaseManager.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); + globalScene.phaseManager.pushNew("CheckSwitchPhase", 0, globalScene.currentBattle.double); if (globalScene.currentBattle.double && availablePartyMembers > 1) { - globalScene.phaseManager.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); + globalScene.phaseManager.pushNew("CheckSwitchPhase", 1, globalScene.currentBattle.double); } } @@ -160,17 +152,15 @@ export class GameOverPhase extends BattlePhase { this.handleUnlocks(); for (const species of this.firstRibbons) { - globalScene.phaseManager.unshiftPhase( - new RibbonModifierRewardPhase(modifierTypes.VOUCHER_PLUS, species), - ); + globalScene.phaseManager.unshiftNew("RibbonModifierRewardPhase", modifierTypes.VOUCHER_PLUS, species); } if (!firstClear) { - globalScene.phaseManager.unshiftPhase(new GameOverModifierRewardPhase(modifierTypes.VOUCHER_PREMIUM)); + globalScene.phaseManager.unshiftNew("GameOverModifierRewardPhase", modifierTypes.VOUCHER_PREMIUM); } } this.getRunHistoryEntry().then(runHistoryEntry => { globalScene.gameData.saveRunHistory(runHistoryEntry, this.isVictory); - globalScene.phaseManager.pushPhase(new PostGameOverPhase(endCardPhase)); + globalScene.phaseManager.pushNew("PostGameOverPhase", endCardPhase); this.end(); }); }; @@ -199,7 +189,7 @@ export class GameOverPhase extends BattlePhase { () => { globalScene.ui.fadeOut(500).then(() => { globalScene.charSprite.hide().then(() => { - const endCardPhase = new EndCardPhase(); + const endCardPhase = globalScene.phaseManager.create("EndCardPhase"); globalScene.phaseManager.unshiftPhase(endCardPhase); clear(endCardPhase); }); @@ -209,7 +199,7 @@ export class GameOverPhase extends BattlePhase { }); }); } else { - const endCardPhase = new EndCardPhase(); + const endCardPhase = globalScene.phaseManager.create("EndCardPhase"); globalScene.phaseManager.unshiftPhase(endCardPhase); clear(endCardPhase); } @@ -234,7 +224,7 @@ export class GameOverPhase extends BattlePhase { .catch(_err => { globalScene.phaseManager.clearPhaseQueue(); globalScene.phaseManager.clearPhaseQueueSplice(); - globalScene.phaseManager.unshiftPhase(new MessagePhase(i18next.t("menu:serverCommunicationFailed"), 2500)); + globalScene.phaseManager.unshiftNew("MessagePhase", i18next.t("menu:serverCommunicationFailed"), 2500); // force the game to reload after 2 seconds. setTimeout(() => { window.location.reload(); @@ -253,22 +243,22 @@ export class GameOverPhase extends BattlePhase { handleUnlocks(): void { if (this.isVictory && globalScene.gameMode.isClassic) { if (!globalScene.gameData.unlocks[Unlockables.ENDLESS_MODE]) { - globalScene.phaseManager.unshiftPhase(new UnlockPhase(Unlockables.ENDLESS_MODE)); + globalScene.phaseManager.unshiftNew("UnlockPhase", Unlockables.ENDLESS_MODE); } if ( globalScene.getPlayerParty().filter(p => p.fusionSpecies).length && !globalScene.gameData.unlocks[Unlockables.SPLICED_ENDLESS_MODE] ) { - globalScene.phaseManager.unshiftPhase(new UnlockPhase(Unlockables.SPLICED_ENDLESS_MODE)); + globalScene.phaseManager.unshiftNew("UnlockPhase", Unlockables.SPLICED_ENDLESS_MODE); } if (!globalScene.gameData.unlocks[Unlockables.MINI_BLACK_HOLE]) { - globalScene.phaseManager.unshiftPhase(new UnlockPhase(Unlockables.MINI_BLACK_HOLE)); + globalScene.phaseManager.unshiftNew("UnlockPhase", Unlockables.MINI_BLACK_HOLE); } if ( !globalScene.gameData.unlocks[Unlockables.EVIOLITE] && globalScene.getPlayerParty().some(p => p.getSpeciesForm(true).speciesId in pokemonEvolutions) ) { - globalScene.phaseManager.unshiftPhase(new UnlockPhase(Unlockables.EVIOLITE)); + globalScene.phaseManager.unshiftNew("UnlockPhase", Unlockables.EVIOLITE); } } } diff --git a/src/phases/level-up-phase.ts b/src/phases/level-up-phase.ts index b3b82f13f42..c78a1798304 100644 --- a/src/phases/level-up-phase.ts +++ b/src/phases/level-up-phase.ts @@ -2,8 +2,6 @@ import { globalScene } from "#app/global-scene"; import { ExpNotification } from "#app/enums/exp-notification"; import type { PlayerPokemon } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; -import { EvolutionPhase } from "#app/phases/evolution-phase"; -import { LearnMovePhase } from "#app/phases/learn-move-phase"; import { PlayerPartyMemberPokemonPhase } from "#app/phases/player-party-member-pokemon-phase"; import { LevelAchv } from "#app/system/achv"; import { NumberHolder } from "#app/utils/common"; @@ -66,14 +64,14 @@ export class LevelUpPhase extends PlayerPartyMemberPokemonPhase { // this feels like an unnecessary optimization const levelMoves = this.getPokemon().getLevelMoves(this.lastLevel + 1); for (const lm of levelMoves) { - globalScene.phaseManager.unshiftPhase(new LearnMovePhase(this.partyMemberIndex, lm[1])); + globalScene.phaseManager.unshiftNew("LearnMovePhase", this.partyMemberIndex, lm[1]); } } if (!this.pokemon.pauseEvolutions) { const evolution = this.pokemon.getEvolution(); if (evolution) { this.pokemon.breakIllusion(); - globalScene.phaseManager.unshiftPhase(new EvolutionPhase(this.pokemon, evolution, this.lastLevel)); + globalScene.phaseManager.unshiftNew("EvolutionPhase", this.pokemon, evolution, this.lastLevel); } } return super.end(); diff --git a/src/phases/login-phase.ts b/src/phases/login-phase.ts index 5e1728d4415..de426866baa 100644 --- a/src/phases/login-phase.ts +++ b/src/phases/login-phase.ts @@ -7,8 +7,6 @@ import { UiMode } from "#enums/ui-mode"; import i18next, { t } from "i18next"; import { sessionIdKey, executeIf } from "#app/utils/common"; import { getCookie, removeCookie } from "#app/utils/cookies"; -import { SelectGenderPhase } from "./select-gender-phase"; -import { UnavailablePhase } from "./unavailable-phase"; export class LoginPhase extends Phase { public readonly phaseName = "LoginPhase"; @@ -70,7 +68,7 @@ export class LoginPhase extends Phase { }); }, () => { - globalScene.phaseManager.unshiftPhase(new LoginPhase(false)); + globalScene.phaseManager.unshiftNew("LoginPhase", false); this.end(); }, ], @@ -94,7 +92,7 @@ export class LoginPhase extends Phase { removeCookie(sessionIdKey); globalScene.reset(true, true); } else { - globalScene.phaseManager.unshiftPhase(new UnavailablePhase()); + globalScene.phaseManager.unshiftNew("UnavailablePhase"); super.end(); } return null; @@ -114,7 +112,7 @@ export class LoginPhase extends Phase { globalScene.ui.setMode(UiMode.MESSAGE); if (!globalScene.gameData.gender) { - globalScene.phaseManager.unshiftPhase(new SelectGenderPhase()); + globalScene.phaseManager.unshiftNew("SelectGenderPhase"); } handleTutorial(Tutorial.Intro).then(() => super.end()); diff --git a/src/phases/message-phase.ts b/src/phases/message-phase.ts index 2a485d837b0..61f9b74a037 100644 --- a/src/phases/message-phase.ts +++ b/src/phases/message-phase.ts @@ -44,8 +44,13 @@ export class MessagePhase extends Phase { page0 = page0.split(repname[p]).join(pokename[p]); page1 = page1.split(repname[p]).join(pokename[p]); } - globalScene.phaseManager.unshiftPhase( - new MessagePhase(page1, this.callbackDelay, this.prompt, this.promptDelay, this.speaker), + globalScene.phaseManager.unshiftNew( + "MessagePhase", + page1, + this.callbackDelay, + this.prompt, + this.promptDelay, + this.speaker, ); this.text = page0.trim(); } else { diff --git a/src/phases/move-charge-phase.ts b/src/phases/move-charge-phase.ts index 263306acbf2..a481f4e37b8 100644 --- a/src/phases/move-charge-phase.ts +++ b/src/phases/move-charge-phase.ts @@ -6,7 +6,6 @@ import type { PokemonMove } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { MoveResult } from "#app/field/pokemon"; import { BooleanHolder } from "#app/utils/common"; -import { MovePhase } from "#app/phases/move-phase"; import { PokemonPhase } from "#app/phases/pokemon-phase"; import { BattlerTagType } from "#enums/battler-tag-type"; @@ -64,7 +63,7 @@ export class MoveChargePhase extends PokemonPhase { // this MoveEndPhase will be duplicated by the queued MovePhase if not removed globalScene.phaseManager.tryRemovePhase(phase => phase.is("MoveEndPhase") && phase.getPokemon() === user); // queue a new MovePhase for this move's attack phase - globalScene.phaseManager.unshiftPhase(new MovePhase(user, [this.targetIndex], this.move, false)); + globalScene.phaseManager.unshiftNew("MovePhase", user, [this.targetIndex], this.move, false); } else { user.getMoveQueue().push({ move: move.id, targets: [this.targetIndex] }); } diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index e135f5bd161..e0fa381447b 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -68,15 +68,10 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import i18next from "i18next"; import type { Phase } from "#app/phase"; -import { ShowAbilityPhase } from "./show-ability-phase"; -import { MovePhase } from "./move-phase"; -import { MoveEndPhase } from "./move-end-phase"; -import { HideAbilityPhase } from "#app/phases/hide-ability-phase"; import type { TypeDamageMultiplier } from "#app/data/type"; import { HitCheckResult } from "#enums/hit-check-result"; import type Move from "#app/data/moves/move"; import { isFieldTargeted } from "#app/data/moves/move-utils"; -import { FaintPhase } from "./faint-phase"; import { DamageAchv } from "#app/system/achv"; type HitCheckEntry = [HitCheckResult, TypeDamageMultiplier]; @@ -191,13 +186,25 @@ export class MoveEffectPhase extends PokemonPhase { // TODO: ability displays should be handled by the ability if (!target.getTag(BattlerTagType.MAGIC_COAT)) { this.queuedPhases.push( - new ShowAbilityPhase(target.getBattlerIndex(), target.getPassiveAbility().hasAttr(ReflectStatusMoveAbAttr)), + globalScene.phaseManager.create( + "ShowAbilityPhase", + target.getBattlerIndex(), + target.getPassiveAbility().hasAttr(ReflectStatusMoveAbAttr), + ), ); - this.queuedPhases.push(new HideAbilityPhase()); + this.queuedPhases.push(globalScene.phaseManager.create("HideAbilityPhase")); } this.queuedPhases.push( - new MovePhase(target, newTargets, new PokemonMove(this.move.id, 0, 0, true), true, true, true), + globalScene.phaseManager.create( + "MovePhase", + target, + newTargets, + new PokemonMove(this.move.id, 0, 0, true), + true, + true, + true, + ), ); } @@ -384,7 +391,7 @@ export class MoveEffectPhase extends PokemonPhase { } if (this.queuedPhases.length) { - globalScene.phaseManager.appendToPhase(this.queuedPhases, MoveEndPhase); + globalScene.phaseManager.appendToPhase(this.queuedPhases, "MoveEndPhase"); } const moveType = user.getMoveType(this.move, true); if (this.move.category !== MoveCategory.STATUS && !user.stellarTypesBoosted.includes(moveType)) { @@ -903,7 +910,7 @@ export class MoveEffectPhase extends PokemonPhase { // set splice index here, so future scene queues happen before FaintedPhase globalScene.phaseManager.setPhaseQueueSplice(); - globalScene.phaseManager.unshiftPhase(new FaintPhase(target.getBattlerIndex(), false, user)); + globalScene.phaseManager.unshiftNew("FaintPhase", target.getBattlerIndex(), false, user); target.destroySubstitute(); target.lapseTag(BattlerTagType.COMMANDED); diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index 03f94ad3d1d..7fc6a86e3f7 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -39,10 +39,6 @@ import { MoveResult } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import Overrides from "#app/overrides"; import { BattlePhase } from "#app/phases/battle-phase"; -import { CommonAnimPhase } from "#app/phases/common-anim-phase"; -import { MoveChargePhase } from "#app/phases/move-charge-phase"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; import { NumberHolder } from "#app/utils/common"; import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; @@ -271,12 +267,11 @@ export class MovePhase extends BattlePhase { globalScene.phaseManager.queueMessage( getStatusEffectActivationText(this.pokemon.status.effect, getPokemonNameWithAffix(this.pokemon)), ); - globalScene.phaseManager.unshiftPhase( - new CommonAnimPhase( - this.pokemon.getBattlerIndex(), - undefined, - CommonAnim.POISON + (this.pokemon.status.effect - 1), - ), + globalScene.phaseManager.unshiftNew( + "CommonAnimPhase", + this.pokemon.getBattlerIndex(), + undefined, + CommonAnim.POISON + (this.pokemon.status.effect - 1), ); } else if (healed) { globalScene.phaseManager.queueMessage( @@ -407,8 +402,13 @@ export class MovePhase extends BattlePhase { if (success) { const move = this.move.getMove(); applyPreAttackAbAttrs(PokemonTypeChangeAbAttr, this.pokemon, null, move); - globalScene.phaseManager.unshiftPhase( - new MoveEffectPhase(this.pokemon.getBattlerIndex(), this.targets, move, this.reflected, this.move.virtual), + globalScene.phaseManager.unshiftNew( + "MoveEffectPhase", + this.pokemon.getBattlerIndex(), + this.targets, + move, + this.reflected, + this.move.virtual, ); } else { if ([MoveId.ROAR, MoveId.WHIRLWIND, MoveId.TRICK_OR_TREAT, MoveId.FORESTS_CURSE].includes(this.move.moveId)) { @@ -457,8 +457,11 @@ export class MovePhase extends BattlePhase { applyPreAttackAbAttrs(PokemonTypeChangeAbAttr, this.pokemon, null, this.move.getMove()); this.showMoveText(); - globalScene.phaseManager.unshiftPhase( - new MoveChargePhase(this.pokemon.getBattlerIndex(), this.targets[0], this.move), + globalScene.phaseManager.unshiftNew( + "MoveChargePhase", + this.pokemon.getBattlerIndex(), + this.targets[0], + this.move, ); } else { this.pokemon.pushMoveHistory({ @@ -481,8 +484,11 @@ export class MovePhase extends BattlePhase { * Queues a {@linkcode MoveEndPhase} and then ends the phase */ public end(): void { - globalScene.phaseManager.unshiftPhase( - new MoveEndPhase(this.pokemon.getBattlerIndex(), this.getActiveTargetPokemon(), this.followUp), + globalScene.phaseManager.unshiftNew( + "MoveEndPhase", + this.pokemon.getBattlerIndex(), + this.getActiveTargetPokemon(), + this.followUp, ); super.end(); diff --git a/src/phases/mystery-encounter-phases.ts b/src/phases/mystery-encounter-phases.ts index b1ca11d45a5..1f27db7ff64 100644 --- a/src/phases/mystery-encounter-phases.ts +++ b/src/phases/mystery-encounter-phases.ts @@ -3,15 +3,6 @@ import type { OptionPhaseCallback } from "#app/data/mystery-encounters/mystery-e import type MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option"; import { SeenEncounterData } from "#app/data/mystery-encounters/mystery-encounter-save-data"; import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { CheckSwitchPhase } from "#app/phases/check-switch-phase"; -import { GameOverPhase } from "#app/phases/game-over-phase"; -import { NewBattlePhase } from "#app/phases/new-battle-phase"; -import { ReturnPhase } from "#app/phases/return-phase"; -import { ScanIvsPhase } from "#app/phases/scan-ivs-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { SummonPhase } from "#app/phases/summon-phase"; -import { SwitchPhase } from "#app/phases/switch-phase"; -import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase"; import { BattleSpec } from "#enums/battle-spec"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; @@ -26,7 +17,6 @@ import { IvScannerModifier } from "../modifier/modifier"; import { Phase } from "../phase"; import { UiMode } from "#enums/ui-mode"; import { isNullOrUndefined, randSeedItem } from "#app/utils/common"; -import { SelectBiomePhase } from "./select-biome-phase"; /** * Will handle (in order): @@ -124,7 +114,7 @@ export class MysteryEncounterPhase extends Phase { */ continueEncounter() { const endDialogueAndContinueEncounter = () => { - globalScene.phaseManager.pushPhase(new MysteryEncounterOptionSelectedPhase()); + globalScene.phaseManager.pushNew("MysteryEncounterOptionSelectedPhase"); this.end(); }; @@ -256,7 +246,7 @@ export class MysteryEncounterBattleStartCleanupPhase extends Phase { // The total number of legal player Pokemon that aren't currently on the field const legalPlayerPartyPokemon = legalPlayerPokemon.filter(p => !p.isActive(true)); if (!legalPlayerPokemon.length) { - globalScene.phaseManager.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.unshiftNew("GameOverPhase"); return this.end(); } @@ -265,13 +255,13 @@ export class MysteryEncounterBattleStartCleanupPhase extends Phase { const playerField = globalScene.getPlayerField(); playerField.forEach((pokemon, i) => { if (!pokemon.isAllowedInBattle() && legalPlayerPartyPokemon.length > i) { - globalScene.phaseManager.unshiftPhase(new SwitchPhase(SwitchType.SWITCH, i, true, false)); + globalScene.phaseManager.unshiftNew("SwitchPhase", SwitchType.SWITCH, i, true, false); } }); // THEN, if is a double battle, and player only has 1 summoned pokemon, center pokemon on field if (globalScene.currentBattle.double && legalPlayerPokemon.length === 1 && legalPlayerPartyPokemon.length === 0) { - globalScene.phaseManager.unshiftPhase(new ToggleDoublePositionPhase(true)); + globalScene.phaseManager.unshiftNew("ToggleDoublePositionPhase", true); } this.end(); @@ -348,9 +338,9 @@ export class MysteryEncounterBattlePhase extends Phase { globalScene.playBgm(); } const availablePartyMembers = globalScene.getEnemyParty().filter(p => !p.isFainted()).length; - globalScene.phaseManager.unshiftPhase(new SummonPhase(0, false)); + globalScene.phaseManager.unshiftNew("SummonPhase", 0, false); if (globalScene.currentBattle.double && availablePartyMembers > 1) { - globalScene.phaseManager.unshiftPhase(new SummonPhase(1, false)); + globalScene.phaseManager.unshiftNew("SummonPhase", 1, false); } if (!globalScene.currentBattle.mysteryEncounter?.hideBattleIntroMessage) { @@ -368,9 +358,9 @@ export class MysteryEncounterBattlePhase extends Phase { const doTrainerSummon = () => { this.hideEnemyTrainer(); const availablePartyMembers = globalScene.getEnemyParty().filter(p => !p.isFainted()).length; - globalScene.phaseManager.unshiftPhase(new SummonPhase(0, false)); + globalScene.phaseManager.unshiftNew("SummonPhase", 0, false); if (globalScene.currentBattle.double && availablePartyMembers > 1) { - globalScene.phaseManager.unshiftPhase(new SummonPhase(1, false)); + globalScene.phaseManager.unshiftNew("SummonPhase", 1, false); } this.endBattleSetup(); }; @@ -426,37 +416,37 @@ export class MysteryEncounterBattlePhase extends Phase { if (encounterMode !== MysteryEncounterMode.TRAINER_BATTLE) { const ivScannerModifier = globalScene.findModifier(m => m instanceof IvScannerModifier); if (ivScannerModifier) { - enemyField.map(p => globalScene.phaseManager.pushPhase(new ScanIvsPhase(p.getBattlerIndex()))); + enemyField.map(p => globalScene.phaseManager.pushNew("ScanIvsPhase", p.getBattlerIndex())); } } const availablePartyMembers = globalScene.getPlayerParty().filter(p => p.isAllowedInBattle()); if (!availablePartyMembers[0].isOnField()) { - globalScene.phaseManager.pushPhase(new SummonPhase(0)); + globalScene.phaseManager.pushNew("SummonPhase", 0); } if (globalScene.currentBattle.double) { if (availablePartyMembers.length > 1) { - globalScene.phaseManager.pushPhase(new ToggleDoublePositionPhase(true)); + globalScene.phaseManager.pushNew("ToggleDoublePositionPhase", true); if (!availablePartyMembers[1].isOnField()) { - globalScene.phaseManager.pushPhase(new SummonPhase(1)); + globalScene.phaseManager.pushNew("SummonPhase", 1); } } } else { if (availablePartyMembers.length > 1 && availablePartyMembers[1].isOnField()) { globalScene.getPlayerField().forEach(pokemon => pokemon.lapseTag(BattlerTagType.COMMANDED)); - globalScene.phaseManager.pushPhase(new ReturnPhase(1)); + globalScene.phaseManager.pushNew("ReturnPhase", 1); } - globalScene.phaseManager.pushPhase(new ToggleDoublePositionPhase(false)); + globalScene.phaseManager.pushNew("ToggleDoublePositionPhase", false); } if (encounterMode !== MysteryEncounterMode.TRAINER_BATTLE && !this.disableSwitch) { const minPartySize = globalScene.currentBattle.double ? 2 : 1; if (availablePartyMembers.length > minPartySize) { - globalScene.phaseManager.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); + globalScene.phaseManager.pushNew("CheckSwitchPhase", 0, globalScene.currentBattle.double); if (globalScene.currentBattle.double) { - globalScene.phaseManager.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); + globalScene.phaseManager.pushNew("CheckSwitchPhase", 1, globalScene.currentBattle.double); } } } @@ -563,15 +553,13 @@ export class MysteryEncounterRewardsPhase extends Phase { encounter.doEncounterRewards(); } else if (this.addHealPhase) { globalScene.phaseManager.tryRemovePhase(p => p.is("SelectModifierPhase")); - globalScene.phaseManager.unshiftPhase( - new SelectModifierPhase(0, undefined, { - fillRemaining: false, - rerollMultiplier: -1, - }), - ); + globalScene.phaseManager.unshiftNew("SelectModifierPhase", 0, undefined, { + fillRemaining: false, + rerollMultiplier: -1, + }); } - globalScene.phaseManager.pushPhase(new PostMysteryEncounterPhase()); + globalScene.phaseManager.pushNew("PostMysteryEncounterPhase"); this.end(); } } @@ -618,10 +606,10 @@ export class PostMysteryEncounterPhase extends Phase { continueEncounter() { const endPhase = () => { if (globalScene.gameMode.hasRandomBiomes || globalScene.isNewBiome()) { - globalScene.phaseManager.pushPhase(new SelectBiomePhase()); + globalScene.phaseManager.pushNew("SelectBiomePhase"); } - globalScene.phaseManager.pushPhase(new NewBattlePhase()); + globalScene.phaseManager.pushNew("NewBattlePhase"); this.end(); }; diff --git a/src/phases/post-game-over-phase.ts b/src/phases/post-game-over-phase.ts index 37a3297cc52..8e19dcd5498 100644 --- a/src/phases/post-game-over-phase.ts +++ b/src/phases/post-game-over-phase.ts @@ -1,7 +1,6 @@ import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; import type { EndCardPhase } from "./end-card-phase"; -import { TitlePhase } from "./title-phase"; export class PostGameOverPhase extends Phase { public readonly phaseName = "PostGameOverPhase"; @@ -28,7 +27,7 @@ export class PostGameOverPhase extends Phase { return globalScene.reset(true); } globalScene.reset(); - globalScene.phaseManager.unshiftPhase(new TitlePhase()); + globalScene.phaseManager.unshiftNew("TitlePhase"); this.end(); }); }); diff --git a/src/phases/quiet-form-change-phase.ts b/src/phases/quiet-form-change-phase.ts index 363b026831f..6b65c2a5140 100644 --- a/src/phases/quiet-form-change-phase.ts +++ b/src/phases/quiet-form-change-phase.ts @@ -9,7 +9,6 @@ import type Pokemon from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { BattlePhase } from "./battle-phase"; import type { MovePhase } from "./move-phase"; -import { PokemonHealPhase } from "./pokemon-heal-phase"; import { applyAbAttrs, ClearTerrainAbAttr, @@ -159,8 +158,15 @@ export class QuietFormChangePhase extends BattlePhase { this.pokemon.findAndRemoveTags(t => t.tagType === BattlerTagType.AUTOTOMIZED); if (globalScene?.currentBattle.battleSpec === BattleSpec.FINAL_BOSS && this.pokemon.isEnemy()) { globalScene.playBgm(); - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase(this.pokemon.getBattlerIndex(), this.pokemon.getMaxHp(), null, false, false, false, true), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + this.pokemon.getBattlerIndex(), + this.pokemon.getMaxHp(), + null, + false, + false, + false, + true, ); this.pokemon.findAndRemoveTags(() => true); this.pokemon.bossSegments = 5; diff --git a/src/phases/revival-blessing-phase.ts b/src/phases/revival-blessing-phase.ts index 2db73103a88..e3e69f7ef25 100644 --- a/src/phases/revival-blessing-phase.ts +++ b/src/phases/revival-blessing-phase.ts @@ -6,8 +6,6 @@ import { UiMode } from "#enums/ui-mode"; import i18next from "i18next"; import { toDmgValue, isNullOrUndefined } from "#app/utils/common"; import { BattlePhase } from "#app/phases/battle-phase"; -import { SwitchSummonPhase } from "#app/phases/switch-summon-phase"; -import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase"; import type { PlayerPokemon } from "#app/field/pokemon"; /** @@ -51,16 +49,26 @@ export class RevivalBlessingPhase extends BattlePhase { ) { if (slotIndex <= 1) { // Revived ally pokemon - globalScene.phaseManager.unshiftPhase( - new SwitchSummonPhase(SwitchType.SWITCH, pokemon.getFieldIndex(), slotIndex, false, true), + globalScene.phaseManager.unshiftNew( + "SwitchSummonPhase", + SwitchType.SWITCH, + pokemon.getFieldIndex(), + slotIndex, + false, + true, ); - globalScene.phaseManager.unshiftPhase(new ToggleDoublePositionPhase(true)); + globalScene.phaseManager.unshiftNew("ToggleDoublePositionPhase", true); } else if (allyPokemon.isFainted()) { // Revived party pokemon, and ally pokemon is fainted - globalScene.phaseManager.unshiftPhase( - new SwitchSummonPhase(SwitchType.SWITCH, allyPokemon.getFieldIndex(), slotIndex, false, true), + globalScene.phaseManager.unshiftNew( + "SwitchSummonPhase", + SwitchType.SWITCH, + allyPokemon.getFieldIndex(), + slotIndex, + false, + true, ); - globalScene.phaseManager.unshiftPhase(new ToggleDoublePositionPhase(true)); + globalScene.phaseManager.unshiftNew("ToggleDoublePositionPhase", true); } } } diff --git a/src/phases/select-biome-phase.ts b/src/phases/select-biome-phase.ts index 633bf20d34c..e8b4946b6d1 100644 --- a/src/phases/select-biome-phase.ts +++ b/src/phases/select-biome-phase.ts @@ -6,8 +6,6 @@ import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler" import { UiMode } from "#enums/ui-mode"; import { BattlePhase } from "./battle-phase"; import { randSeedInt } from "#app/utils/common"; -import { PartyHealPhase } from "./party-heal-phase"; -import { SwitchBiomePhase } from "./switch-biome-phase"; export class SelectBiomePhase extends BattlePhase { public readonly phaseName = "SelectBiomePhase"; @@ -22,9 +20,9 @@ export class SelectBiomePhase extends BattlePhase { const setNextBiome = (nextBiome: BiomeId) => { if (nextWaveIndex % 10 === 1) { globalScene.applyModifiers(MoneyInterestModifier, true); - globalScene.phaseManager.unshiftPhase(new PartyHealPhase(false)); + globalScene.phaseManager.unshiftNew("PartyHealPhase", false); } - globalScene.phaseManager.unshiftPhase(new SwitchBiomePhase(nextBiome)); + globalScene.phaseManager.unshiftNew("SwitchBiomePhase", nextBiome); this.end(); }; diff --git a/src/phases/select-modifier-phase.ts b/src/phases/select-modifier-phase.ts index 5ac3b9e6d76..4d790e70e1b 100644 --- a/src/phases/select-modifier-phase.ts +++ b/src/phases/select-modifier-phase.ts @@ -123,11 +123,10 @@ export class SelectModifierPhase extends BattlePhase { return false; } globalScene.reroll = true; - globalScene.phaseManager.unshiftPhase( - new SelectModifierPhase( - this.rerollCount + 1, - this.typeOptions.map(o => o.type?.tier).filter(t => t !== undefined) as ModifierTier[], - ), + globalScene.phaseManager.unshiftNew( + "SelectModifierPhase", + this.rerollCount + 1, + this.typeOptions.map(o => o.type?.tier).filter(t => t !== undefined) as ModifierTier[], ); globalScene.ui.clearText(); globalScene.ui.setMode(UiMode.MESSAGE).then(() => super.end()); @@ -419,7 +418,8 @@ export class SelectModifierPhase extends BattlePhase { } copy(): SelectModifierPhase { - return new SelectModifierPhase( + return globalScene.phaseManager.create( + "SelectModifierPhase", this.rerollCount, this.modifierTiers, { diff --git a/src/phases/select-starter-phase.ts b/src/phases/select-starter-phase.ts index 2b60fcaf054..88d4fe06a9b 100644 --- a/src/phases/select-starter-phase.ts +++ b/src/phases/select-starter-phase.ts @@ -6,7 +6,6 @@ import { getPokemonSpecies } from "#app/data/pokemon-species"; import { overrideHeldItems, overrideModifiers } from "#app/modifier/modifier"; import Overrides from "#app/overrides"; import { Phase } from "#app/phase"; -import { TitlePhase } from "#app/phases/title-phase"; import { SaveSlotUiMode } from "#app/ui/save-slot-select-ui-handler"; import type { Starter } from "#app/ui/starter-select-ui-handler"; import { UiMode } from "#enums/ui-mode"; @@ -26,7 +25,7 @@ export class SelectStarterPhase extends Phase { globalScene.ui.setMode(UiMode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: number) => { if (slotId === -1) { globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.pushPhase(new TitlePhase()); + globalScene.phaseManager.pushNew("TitlePhase"); return this.end(); } globalScene.sessionSlotId = slotId; diff --git a/src/phases/select-target-phase.ts b/src/phases/select-target-phase.ts index 515f7ed98ca..fcbd3aeb679 100644 --- a/src/phases/select-target-phase.ts +++ b/src/phases/select-target-phase.ts @@ -2,7 +2,6 @@ import { globalScene } from "#app/global-scene"; import type { BattlerIndex } from "#app/battle"; import { Command } from "#app/ui/command-ui-handler"; import { UiMode } from "#enums/ui-mode"; -import { CommandPhase } from "./command-phase"; import { PokemonPhase } from "./pokemon-phase"; import i18next from "#app/plugins/i18n"; import { allMoves } from "#app/data/data-lists"; @@ -33,7 +32,7 @@ export class SelectTargetPhase extends PokemonPhase { } if (targets.length < 1) { globalScene.currentBattle.turnCommands[this.fieldIndex] = null; - globalScene.phaseManager.unshiftPhase(new CommandPhase(this.fieldIndex)); + globalScene.phaseManager.unshiftNew("CommandPhase", this.fieldIndex); } else { turnCommand!.targets = targets; //TODO: is the bang correct here? } diff --git a/src/phases/show-ability-phase.ts b/src/phases/show-ability-phase.ts index e4be6124784..af295b72622 100644 --- a/src/phases/show-ability-phase.ts +++ b/src/phases/show-ability-phase.ts @@ -2,7 +2,6 @@ import { globalScene } from "#app/global-scene"; import type { BattlerIndex } from "#app/battle"; import { PokemonPhase } from "./pokemon-phase"; import { getPokemonNameWithAffix } from "#app/messages"; -import { HideAbilityPhase } from "#app/phases/hide-ability-phase"; export class ShowAbilityPhase extends PokemonPhase { public readonly phaseName = "ShowAbilityPhase"; @@ -36,8 +35,8 @@ export class ShowAbilityPhase extends PokemonPhase { // If the bar is already out, hide it before showing the new one if (globalScene.abilityBar.isVisible()) { - globalScene.phaseManager.unshiftPhase(new HideAbilityPhase()); - globalScene.phaseManager.unshiftPhase(new ShowAbilityPhase(this.battlerIndex, this.passive)); + globalScene.phaseManager.unshiftNew("HideAbilityPhase"); + globalScene.phaseManager.unshiftNew("ShowAbilityPhase", this.battlerIndex, this.passive); return this.end(); } diff --git a/src/phases/show-party-exp-bar-phase.ts b/src/phases/show-party-exp-bar-phase.ts index 765bd498f66..4849526b639 100644 --- a/src/phases/show-party-exp-bar-phase.ts +++ b/src/phases/show-party-exp-bar-phase.ts @@ -3,8 +3,6 @@ import { ExpGainsSpeed } from "#app/enums/exp-gains-speed"; import { ExpNotification } from "#app/enums/exp-notification"; import { ExpBoosterModifier } from "#app/modifier/modifier"; import { NumberHolder } from "#app/utils/common"; -import { HidePartyExpBarPhase } from "./hide-party-exp-bar-phase"; -import { LevelUpPhase } from "./level-up-phase"; import { PlayerPartyMemberPokemonPhase } from "./player-party-member-pokemon-phase"; export class ShowPartyExpBarPhase extends PlayerPartyMemberPokemonPhase { @@ -29,9 +27,9 @@ export class ShowPartyExpBarPhase extends PlayerPartyMemberPokemonPhase { pokemon.addExp(exp.value); const newLevel = pokemon.level; if (newLevel > lastLevel) { - globalScene.phaseManager.unshiftPhase(new LevelUpPhase(this.partyMemberIndex, lastLevel, newLevel)); + globalScene.phaseManager.unshiftNew("LevelUpPhase", this.partyMemberIndex, lastLevel, newLevel); } - globalScene.phaseManager.unshiftPhase(new HidePartyExpBarPhase()); + globalScene.phaseManager.unshiftNew("HidePartyExpBarPhase"); pokemon.updateInfo(); if (globalScene.expParty === ExpNotification.SKIP) { diff --git a/src/phases/stat-stage-change-phase.ts b/src/phases/stat-stage-change-phase.ts index 49f3952ef01..ad2eeae1c48 100644 --- a/src/phases/stat-stage-change-phase.ts +++ b/src/phases/stat-stage-change-phase.ts @@ -72,18 +72,17 @@ export class StatStageChangePhase extends PokemonPhase { if (this.stats.length > 1) { for (let i = 0; i < this.stats.length; i++) { const stat = [this.stats[i]]; - globalScene.phaseManager.unshiftPhase( - new StatStageChangePhase( - this.battlerIndex, - this.selfTarget, - stat, - this.stages, - this.showMessage, - this.ignoreAbilities, - this.canBeCopied, - this.onChange, - this.comingFromMirrorArmorUser, - ), + globalScene.phaseManager.unshiftNew( + "StatStageChangePhase", + this.battlerIndex, + this.selfTarget, + stat, + this.stages, + this.showMessage, + this.ignoreAbilities, + this.canBeCopied, + this.onChange, + this.comingFromMirrorArmorUser, ); } return this.end(); diff --git a/src/phases/summon-phase.ts b/src/phases/summon-phase.ts index 15f42e76a5a..921466dfead 100644 --- a/src/phases/summon-phase.ts +++ b/src/phases/summon-phase.ts @@ -9,9 +9,6 @@ import { FieldPosition } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import i18next from "i18next"; import { PartyMemberPokemonPhase } from "./party-member-pokemon-phase"; -import { PostSummonPhase } from "./post-summon-phase"; -import { GameOverPhase } from "./game-over-phase"; -import { ShinySparklePhase } from "./shiny-sparkle-phase"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { applyPreSummonAbAttrs, PreSummonAbAttr } from "#app/data/abilities/ability"; import { globalScene } from "#app/global-scene"; @@ -58,7 +55,7 @@ export class SummonPhase extends PartyMemberPokemonPhase { console.error("Party Details:\n", party); console.error("All available Pokemon were fainted or illegal!"); globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.unshiftNew("GameOverPhase"); this.end(); return; } @@ -275,7 +272,7 @@ export class SummonPhase extends PartyMemberPokemonPhase { const pokemon = this.getPokemon(); if (pokemon.isShiny(true)) { - globalScene.phaseManager.unshiftPhase(new ShinySparklePhase(pokemon.getBattlerIndex())); + globalScene.phaseManager.unshiftNew("ShinySparklePhase", pokemon.getBattlerIndex()); } pokemon.resetTurnData(); @@ -291,7 +288,7 @@ export class SummonPhase extends PartyMemberPokemonPhase { } queuePostSummon(): void { - globalScene.phaseManager.pushPhase(new PostSummonPhase(this.getPokemon().getBattlerIndex())); + globalScene.phaseManager.pushNew("PostSummonPhase", this.getPokemon().getBattlerIndex()); } end() { diff --git a/src/phases/switch-phase.ts b/src/phases/switch-phase.ts index 5f2ae55900e..8d18e29e6a6 100644 --- a/src/phases/switch-phase.ts +++ b/src/phases/switch-phase.ts @@ -3,7 +3,6 @@ import PartyUiHandler, { PartyOption, PartyUiMode } from "#app/ui/party-ui-handl import { UiMode } from "#enums/ui-mode"; import { SwitchType } from "#enums/switch-type"; import { BattlePhase } from "./battle-phase"; -import { SwitchSummonPhase } from "./switch-summon-phase"; /** * Opens the party selector UI and transitions into a {@linkcode SwitchSummonPhase} @@ -80,9 +79,7 @@ export class SwitchPhase extends BattlePhase { p => p.is("PostSummonPhase") && p.player && p.fieldIndex === this.fieldIndex, ); const switchType = option === PartyOption.PASS_BATON ? SwitchType.BATON_PASS : this.switchType; - globalScene.phaseManager.unshiftPhase( - new SwitchSummonPhase(switchType, fieldIndex, slotIndex, this.doReturn), - ); + globalScene.phaseManager.unshiftNew("SwitchSummonPhase", switchType, fieldIndex, slotIndex, this.doReturn); } globalScene.ui.setMode(UiMode.MESSAGE).then(() => super.end()); }, diff --git a/src/phases/switch-summon-phase.ts b/src/phases/switch-summon-phase.ts index de8b9f3a5d9..103af3db275 100644 --- a/src/phases/switch-summon-phase.ts +++ b/src/phases/switch-summon-phase.ts @@ -16,7 +16,6 @@ import { getPokemonNameWithAffix } from "#app/messages"; import { SwitchEffectTransferModifier } from "#app/modifier/modifier"; import { Command } from "#app/ui/command-ui-handler"; import i18next from "i18next"; -import { PostSummonPhase } from "./post-summon-phase"; import { SummonPhase } from "./summon-phase"; import { SubstituteTag } from "#app/data/battler-tags"; import { SwitchType } from "#enums/switch-type"; @@ -265,6 +264,6 @@ export class SwitchSummonPhase extends SummonPhase { } queuePostSummon(): void { - globalScene.phaseManager.unshiftPhase(new PostSummonPhase(this.getPokemon().getBattlerIndex())); + globalScene.phaseManager.unshiftNew("PostSummonPhase", this.getPokemon().getBattlerIndex()); } } diff --git a/src/phases/title-phase.ts b/src/phases/title-phase.ts index fb980d87359..37ce294f237 100644 --- a/src/phases/title-phase.ts +++ b/src/phases/title-phase.ts @@ -20,11 +20,6 @@ import { SaveSlotUiMode } from "#app/ui/save-slot-select-ui-handler"; import { UiMode } from "#enums/ui-mode"; import { isLocal, isLocalServerConnected, isNullOrUndefined } from "#app/utils/common"; import i18next from "i18next"; -import { CheckSwitchPhase } from "./check-switch-phase"; -import { EncounterPhase } from "./encounter-phase"; -import { SelectChallengePhase } from "./select-challenge-phase"; -import { SelectStarterPhase } from "./select-starter-phase"; -import { SummonPhase } from "./summon-phase"; import { globalScene } from "#app/global-scene"; import Overrides from "#app/overrides"; @@ -125,7 +120,7 @@ export class TitlePhase extends Phase { label: i18next.t("menu:cancel"), handler: () => { globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.pushPhase(new TitlePhase()); + globalScene.phaseManager.pushNew("TitlePhase"); super.end(); return true; }, @@ -200,7 +195,7 @@ export class TitlePhase extends Phase { globalScene.ui.setMode(UiMode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: number) => { globalScene.phaseManager.clearPhaseQueue(); if (slotId === -1) { - globalScene.phaseManager.pushPhase(new TitlePhase()); + globalScene.phaseManager.pushNew("TitlePhase"); return super.end(); } globalScene.sessionSlotId = slotId; @@ -304,23 +299,23 @@ export class TitlePhase extends Phase { globalScene.arena.preloadBgm(); globalScene.gameMode = getGameMode(this.gameMode); if (this.gameMode === GameModes.CHALLENGE) { - globalScene.phaseManager.pushPhase(new SelectChallengePhase()); + globalScene.phaseManager.pushNew("SelectChallengePhase"); } else { - globalScene.phaseManager.pushPhase(new SelectStarterPhase()); + globalScene.phaseManager.pushNew("SelectStarterPhase"); } globalScene.newArena(globalScene.gameMode.getStartingBiome()); } else { globalScene.playBgm(); } - globalScene.phaseManager.pushPhase(new EncounterPhase(this.loaded)); + globalScene.phaseManager.pushNew("EncounterPhase", this.loaded); if (this.loaded) { const availablePartyMembers = globalScene.getPokemonAllowedInBattle().length; - globalScene.phaseManager.pushPhase(new SummonPhase(0, true, true)); + globalScene.phaseManager.pushNew("SummonPhase", 0, true, true); if (globalScene.currentBattle.double && availablePartyMembers > 1) { - globalScene.phaseManager.pushPhase(new SummonPhase(1, true, true)); + globalScene.phaseManager.pushNew("SummonPhase", 1, true, true); } if ( @@ -329,9 +324,9 @@ export class TitlePhase extends Phase { ) { const minPartySize = globalScene.currentBattle.double ? 2 : 1; if (availablePartyMembers > minPartySize) { - globalScene.phaseManager.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); + globalScene.phaseManager.pushNew("CheckSwitchPhase", 0, globalScene.currentBattle.double); if (globalScene.currentBattle.double) { - globalScene.phaseManager.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); + globalScene.phaseManager.pushNew("CheckSwitchPhase", 1, globalScene.currentBattle.double); } } } diff --git a/src/phases/trainer-victory-phase.ts b/src/phases/trainer-victory-phase.ts index 5b7b26d52fb..5d35dd5d375 100644 --- a/src/phases/trainer-victory-phase.ts +++ b/src/phases/trainer-victory-phase.ts @@ -5,8 +5,6 @@ import { vouchers } from "#app/system/voucher"; import i18next from "i18next"; import { randSeedItem } from "#app/utils/common"; import { BattlePhase } from "./battle-phase"; -import { ModifierRewardPhase } from "./modifier-reward-phase"; -import { MoneyRewardPhase } from "./money-reward-phase"; import { TrainerSlot } from "#enums/trainer-slot"; import { globalScene } from "#app/global-scene"; import { BiomeId } from "#enums/biome-id"; @@ -20,13 +18,11 @@ export class TrainerVictoryPhase extends BattlePhase { globalScene.playBgm(globalScene.currentBattle.trainer?.config.victoryBgm); - globalScene.phaseManager.unshiftPhase( - new MoneyRewardPhase(globalScene.currentBattle.trainer?.config.moneyMultiplier!), - ); // TODO: is this bang correct? + globalScene.phaseManager.unshiftNew("MoneyRewardPhase", globalScene.currentBattle.trainer?.config.moneyMultiplier!); // TODO: is this bang correct? const modifierRewardFuncs = globalScene.currentBattle.trainer?.config.modifierRewardFuncs!; // TODO: is this bang correct? for (const modifierRewardFunc of modifierRewardFuncs) { - globalScene.phaseManager.unshiftPhase(new ModifierRewardPhase(modifierRewardFunc)); + globalScene.phaseManager.unshiftNew("ModifierRewardPhase", modifierRewardFunc); } const trainerType = globalScene.currentBattle.trainer?.config.trainerType!; // TODO: is this bang correct? @@ -37,23 +33,21 @@ export class TrainerVictoryPhase extends BattlePhase { globalScene.currentBattle.trainer?.config.isBoss ) { if (timedEventManager.getUpgradeUnlockedVouchers()) { - globalScene.phaseManager.unshiftPhase( - new ModifierRewardPhase( - [ - modifierTypes.VOUCHER_PLUS, - modifierTypes.VOUCHER_PLUS, - modifierTypes.VOUCHER_PLUS, - modifierTypes.VOUCHER_PREMIUM, - ][vouchers[TrainerType[trainerType]].voucherType], - ), + globalScene.phaseManager.unshiftNew( + "ModifierRewardPhase", + [ + modifierTypes.VOUCHER_PLUS, + modifierTypes.VOUCHER_PLUS, + modifierTypes.VOUCHER_PLUS, + modifierTypes.VOUCHER_PREMIUM, + ][vouchers[TrainerType[trainerType]].voucherType], ); } else { - globalScene.phaseManager.unshiftPhase( - new ModifierRewardPhase( - [modifierTypes.VOUCHER, modifierTypes.VOUCHER, modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PREMIUM][ - vouchers[TrainerType[trainerType]].voucherType - ], - ), + globalScene.phaseManager.unshiftNew( + "ModifierRewardPhase", + [modifierTypes.VOUCHER, modifierTypes.VOUCHER, modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PREMIUM][ + vouchers[TrainerType[trainerType]].voucherType + ], ); } } diff --git a/src/phases/turn-end-phase.ts b/src/phases/turn-end-phase.ts index 832f60043ce..85590d667d6 100644 --- a/src/phases/turn-end-phase.ts +++ b/src/phases/turn-end-phase.ts @@ -14,7 +14,6 @@ import { } from "#app/modifier/modifier"; import i18next from "i18next"; import { FieldPhase } from "./field-phase"; -import { PokemonHealPhase } from "./pokemon-heal-phase"; import { globalScene } from "#app/global-scene"; export class TurnEndPhase extends FieldPhase { @@ -34,15 +33,14 @@ export class TurnEndPhase extends FieldPhase { globalScene.applyModifiers(TurnHealModifier, pokemon.isPlayer(), pokemon); if (globalScene.arena.terrain?.terrainType === TerrainType.GRASSY && pokemon.isGrounded()) { - globalScene.phaseManager.unshiftPhase( - new PokemonHealPhase( - pokemon.getBattlerIndex(), - Math.max(pokemon.getMaxHp() >> 4, 1), - i18next.t("battle:turnEndHpRestore", { - pokemonName: getPokemonNameWithAffix(pokemon), - }), - true, - ), + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + pokemon.getBattlerIndex(), + Math.max(pokemon.getMaxHp() >> 4, 1), + i18next.t("battle:turnEndHpRestore", { + pokemonName: getPokemonNameWithAffix(pokemon), + }), + true, ); } diff --git a/src/phases/turn-init-phase.ts b/src/phases/turn-init-phase.ts index 61ec5fd8a71..e9d6f60af5e 100644 --- a/src/phases/turn-init-phase.ts +++ b/src/phases/turn-init-phase.ts @@ -6,12 +6,7 @@ import { import { TurnInitEvent } from "#app/events/battle-scene"; import type { PlayerPokemon } from "#app/field/pokemon"; import i18next from "i18next"; -import { CommandPhase } from "./command-phase"; -import { EnemyCommandPhase } from "./enemy-command-phase"; import { FieldPhase } from "./field-phase"; -import { GameOverPhase } from "./game-over-phase"; -import { ToggleDoublePositionPhase } from "./toggle-double-position-phase"; -import { TurnStartPhase } from "./turn-start-phase"; import { globalScene } from "#app/global-scene"; export class TurnInitPhase extends FieldPhase { @@ -33,7 +28,7 @@ export class TurnInitPhase extends FieldPhase { if (!allowedPokemon.length) { // If there are no longer any legal pokemon in the party, game over. globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.unshiftPhase(new GameOverPhase()); + globalScene.phaseManager.unshiftNew("GameOverPhase"); } else if ( allowedPokemon.length >= globalScene.currentBattle.getBattlerCount() || (globalScene.currentBattle.double && !allowedPokemon[0].isActive(true)) @@ -46,7 +41,7 @@ export class TurnInitPhase extends FieldPhase { p.leaveField(); } if (allowedPokemon.length === 1 && globalScene.currentBattle.double) { - globalScene.phaseManager.unshiftPhase(new ToggleDoublePositionPhase(true)); + globalScene.phaseManager.unshiftNew("ToggleDoublePositionPhase", true); } } }); @@ -69,13 +64,15 @@ export class TurnInitPhase extends FieldPhase { pokemon.resetTurnData(); - globalScene.phaseManager.pushPhase( - pokemon.isPlayer() ? new CommandPhase(i) : new EnemyCommandPhase(i - BattlerIndex.ENEMY), - ); + if (pokemon.isPlayer()) { + globalScene.phaseManager.pushNew("CommandPhase", i); + } else { + globalScene.phaseManager.pushNew("EnemyCommandPhase", i - BattlerIndex.ENEMY); + } } }); - globalScene.phaseManager.pushPhase(new TurnStartPhase()); + globalScene.phaseManager.pushNew("TurnStartPhase"); this.end(); } diff --git a/src/phases/turn-start-phase.ts b/src/phases/turn-start-phase.ts index c07feac0888..557b67b6091 100644 --- a/src/phases/turn-start-phase.ts +++ b/src/phases/turn-start-phase.ts @@ -8,21 +8,11 @@ import { PokemonMove } from "#app/field/pokemon"; import { BypassSpeedChanceModifier } from "#app/modifier/modifier"; import { Command } from "#app/ui/command-ui-handler"; import { randSeedShuffle, BooleanHolder } from "#app/utils/common"; -import { AttemptCapturePhase } from "./attempt-capture-phase"; -import { AttemptRunPhase } from "./attempt-run-phase"; -import { BerryPhase } from "./berry-phase"; import { FieldPhase } from "./field-phase"; -import { MoveHeaderPhase } from "./move-header-phase"; -import { MovePhase } from "./move-phase"; -import { SwitchSummonPhase } from "./switch-summon-phase"; -import { TurnEndPhase } from "./turn-end-phase"; -import { WeatherEffectPhase } from "./weather-effect-phase"; -import { CheckStatusEffectPhase } from "#app/phases/check-status-effect-phase"; import { BattlerIndex } from "#app/battle"; import { TrickRoomTag } from "#app/data/arena-tag"; import { SwitchType } from "#enums/switch-type"; import { globalScene } from "#app/global-scene"; -import { TeraPhase } from "./tera-phase"; export class TurnStartPhase extends FieldPhase { public readonly phaseName = "TurnStartPhase"; @@ -153,10 +143,12 @@ export class TurnStartPhase extends FieldPhase { switch (preTurnCommand?.command) { case Command.TERA: - globalScene.phaseManager.pushPhase(new TeraPhase(pokemon)); + globalScene.phaseManager.pushNew("TeraPhase", pokemon); } } + const phaseManager = globalScene.phaseManager; + for (const o of moveOrder) { const pokemon = field[o]; const turnCommand = globalScene.currentBattle.turnCommands[o]; @@ -167,88 +159,94 @@ export class TurnStartPhase extends FieldPhase { switch (turnCommand?.command) { case Command.FIGHT: - const queuedMove = turnCommand.move; - pokemon.turnData.order = orderIndex++; - if (!queuedMove) { - continue; - } - const move = - pokemon.getMoveset().find(m => m.moveId === queuedMove.move && m.ppUsed < m.getMovePp()) || - new PokemonMove(queuedMove.move); - if (move.getMove().hasAttr(MoveHeaderAttr)) { - globalScene.phaseManager.unshiftPhase(new MoveHeaderPhase(pokemon, move)); - } - if (pokemon.isPlayer()) { - if (turnCommand.cursor === -1) { - globalScene.phaseManager.pushPhase( - new MovePhase(pokemon, turnCommand.targets || turnCommand.move!.targets, move), - ); //TODO: is the bang correct here? - } else { - const playerPhase = new MovePhase( - pokemon, - turnCommand.targets || turnCommand.move!.targets, - move, - false, - queuedMove.ignorePP, - ); //TODO: is the bang correct here? - globalScene.phaseManager.pushPhase(playerPhase); + { + const queuedMove = turnCommand.move; + pokemon.turnData.order = orderIndex++; + if (!queuedMove) { + continue; } - } else { - globalScene.phaseManager.pushPhase( - new MovePhase( + const move = + pokemon.getMoveset().find(m => m.moveId === queuedMove.move && m.ppUsed < m.getMovePp()) || + new PokemonMove(queuedMove.move); + if (move.getMove().hasAttr(MoveHeaderAttr)) { + phaseManager.unshiftNew("MoveHeaderPhase", pokemon, move); + } + if (pokemon.isPlayer()) { + if (turnCommand.cursor === -1) { + phaseManager.pushNew("MovePhase", pokemon, turnCommand.targets || turnCommand.move!.targets, move); + } else { + phaseManager.pushNew( + "MovePhase", + pokemon, + turnCommand.targets || turnCommand.move!.targets, // TODO: is the bang correct here? + move, + false, + queuedMove.ignorePP, + ); + } + } else { + phaseManager.pushNew( + "MovePhase", pokemon, turnCommand.targets || turnCommand.move!.targets, move, false, queuedMove.ignorePP, - ), - ); //TODO: is the bang correct here? + ); + } } break; case Command.BALL: - globalScene.phaseManager.unshiftPhase( - new AttemptCapturePhase(turnCommand.targets![0] % 2, turnCommand.cursor!), - ); //TODO: is the bang correct here? + phaseManager.unshiftNew("AttemptCapturePhase", turnCommand.targets![0] % 2, turnCommand.cursor!); //TODO: is the bang correct here? break; case Command.POKEMON: - const switchType = turnCommand.args?.[0] ? SwitchType.BATON_PASS : SwitchType.SWITCH; - globalScene.phaseManager.unshiftPhase( - new SwitchSummonPhase(switchType, pokemon.getFieldIndex(), turnCommand.cursor!, true, pokemon.isPlayer()), - ); + { + const switchType = turnCommand.args?.[0] ? SwitchType.BATON_PASS : SwitchType.SWITCH; + phaseManager.unshiftNew( + "SwitchSummonPhase", + switchType, + pokemon.getFieldIndex(), + turnCommand.cursor!, + true, + pokemon.isPlayer(), + ); + } break; case Command.RUN: - let runningPokemon = pokemon; - if (globalScene.currentBattle.double) { - const playerActivePokemon = field.filter(pokemon => { - if (pokemon) { - return pokemon.isPlayer() && pokemon.isActive(); + { + let runningPokemon = pokemon; + if (globalScene.currentBattle.double) { + const playerActivePokemon = field.filter(pokemon => { + if (pokemon) { + return pokemon.isPlayer() && pokemon.isActive(); + } + return; + }); + // if only one pokemon is alive, use that one + if (playerActivePokemon.length > 1) { + // find which active pokemon has faster speed + const fasterPokemon = + playerActivePokemon[0].getStat(Stat.SPD) > playerActivePokemon[1].getStat(Stat.SPD) + ? playerActivePokemon[0] + : playerActivePokemon[1]; + // check if either active pokemon has the ability "Run Away" + const hasRunAway = playerActivePokemon.find(p => p.hasAbility(AbilityId.RUN_AWAY)); + runningPokemon = hasRunAway !== undefined ? hasRunAway : fasterPokemon; } - return; - }); - // if only one pokemon is alive, use that one - if (playerActivePokemon.length > 1) { - // find which active pokemon has faster speed - const fasterPokemon = - playerActivePokemon[0].getStat(Stat.SPD) > playerActivePokemon[1].getStat(Stat.SPD) - ? playerActivePokemon[0] - : playerActivePokemon[1]; - // check if either active pokemon has the ability "Run Away" - const hasRunAway = playerActivePokemon.find(p => p.hasAbility(AbilityId.RUN_AWAY)); - runningPokemon = hasRunAway !== undefined ? hasRunAway : fasterPokemon; } + phaseManager.unshiftNew("AttemptRunPhase", runningPokemon.getFieldIndex()); } - globalScene.phaseManager.unshiftPhase(new AttemptRunPhase(runningPokemon.getFieldIndex())); break; } } - globalScene.phaseManager.pushPhase(new WeatherEffectPhase()); - globalScene.phaseManager.pushPhase(new BerryPhase()); + phaseManager.pushNew("WeatherEffectPhase"); + phaseManager.pushNew("BerryPhase"); /** Add a new phase to check who should be taking status damage */ - globalScene.phaseManager.pushPhase(new CheckStatusEffectPhase(moveOrder)); + phaseManager.pushNew("CheckStatusEffectPhase", moveOrder); - globalScene.phaseManager.pushPhase(new TurnEndPhase()); + phaseManager.pushNew("TurnEndPhase"); /** * this.end() will call shiftPhase(), which dumps everything from PrependQueue (aka everything that is unshifted()) to the front diff --git a/src/phases/unavailable-phase.ts b/src/phases/unavailable-phase.ts index a6fc4a1be61..8b5bb5f7508 100644 --- a/src/phases/unavailable-phase.ts +++ b/src/phases/unavailable-phase.ts @@ -1,13 +1,12 @@ import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; import { UiMode } from "#enums/ui-mode"; -import { LoginPhase } from "./login-phase"; export class UnavailablePhase extends Phase { public readonly phaseName = "UnavailablePhase"; start(): void { globalScene.ui.setMode(UiMode.UNAVAILABLE, () => { - globalScene.phaseManager.unshiftPhase(new LoginPhase(true)); + globalScene.phaseManager.unshiftNew("LoginPhase", true); this.end(); }); } diff --git a/src/phases/victory-phase.ts b/src/phases/victory-phase.ts index 0a08e010720..ca24e474cde 100644 --- a/src/phases/victory-phase.ts +++ b/src/phases/victory-phase.ts @@ -3,19 +3,10 @@ import { ClassicFixedBossWaves } from "#enums/fixed-boss-waves"; import { BattleType } from "#enums/battle-type"; import type { CustomModifierSettings } from "#app/modifier/modifier-type"; import { modifierTypes } from "#app/modifier/modifier-type"; -import { BattleEndPhase } from "./battle-end-phase"; -import { NewBattlePhase } from "./new-battle-phase"; import { PokemonPhase } from "./pokemon-phase"; -import { AddEnemyBuffModifierPhase } from "./add-enemy-buff-modifier-phase"; -import { EggLapsePhase } from "./egg-lapse-phase"; -import { GameOverPhase } from "./game-over-phase"; -import { ModifierRewardPhase } from "./modifier-reward-phase"; -import { SelectModifierPhase } from "./select-modifier-phase"; -import { TrainerVictoryPhase } from "./trainer-victory-phase"; import { handleMysteryEncounterVictory } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { globalScene } from "#app/global-scene"; import { timedEventManager } from "#app/global-event-manager"; -import { SelectBiomePhase } from "./select-biome-phase"; export class VictoryPhase extends PokemonPhase { public readonly phaseName = "VictoryPhase"; @@ -51,12 +42,12 @@ export class VictoryPhase extends PokemonPhase { .getEnemyParty() .find(p => (globalScene.currentBattle.battleType === BattleType.WILD ? p.isOnField() : !p?.isFainted(true))) ) { - globalScene.phaseManager.pushPhase(new BattleEndPhase(true)); + globalScene.phaseManager.pushNew("BattleEndPhase", true); if (globalScene.currentBattle.battleType === BattleType.TRAINER) { - globalScene.phaseManager.pushPhase(new TrainerVictoryPhase()); + globalScene.phaseManager.pushNew("TrainerVictoryPhase"); } if (globalScene.gameMode.isEndless || !globalScene.gameMode.isWaveFinal(globalScene.currentBattle.waveIndex)) { - globalScene.phaseManager.pushPhase(new EggLapsePhase()); + globalScene.phaseManager.pushNew("EggLapsePhase"); if (globalScene.gameMode.isClassic) { switch (globalScene.currentBattle.waveIndex) { case ClassicFixedBossWaves.RIVAL_1: @@ -64,68 +55,67 @@ export class VictoryPhase extends PokemonPhase { // Get event modifiers for this wave timedEventManager .getFixedBattleEventRewards(globalScene.currentBattle.waveIndex) - .map(r => globalScene.phaseManager.pushPhase(new ModifierRewardPhase(modifierTypes[r]))); + .map(r => globalScene.phaseManager.pushNew("ModifierRewardPhase", modifierTypes[r])); break; case ClassicFixedBossWaves.EVIL_BOSS_2: // Should get Lock Capsule on 165 before shop phase so it can be used in the rewards shop - globalScene.phaseManager.pushPhase(new ModifierRewardPhase(modifierTypes.LOCK_CAPSULE)); + globalScene.phaseManager.pushNew("ModifierRewardPhase", modifierTypes.LOCK_CAPSULE); break; } } if (globalScene.currentBattle.waveIndex % 10) { - globalScene.phaseManager.pushPhase( - new SelectModifierPhase(undefined, undefined, this.getFixedBattleCustomModifiers()), + globalScene.phaseManager.pushNew( + "SelectModifierPhase", + undefined, + undefined, + this.getFixedBattleCustomModifiers(), ); } else if (globalScene.gameMode.isDaily) { - globalScene.phaseManager.pushPhase(new ModifierRewardPhase(modifierTypes.EXP_CHARM)); + globalScene.phaseManager.pushNew("ModifierRewardPhase", modifierTypes.EXP_CHARM); if ( globalScene.currentBattle.waveIndex > 10 && !globalScene.gameMode.isWaveFinal(globalScene.currentBattle.waveIndex) ) { - globalScene.phaseManager.pushPhase(new ModifierRewardPhase(modifierTypes.GOLDEN_POKEBALL)); + globalScene.phaseManager.pushNew("ModifierRewardPhase", modifierTypes.GOLDEN_POKEBALL); } } else { const superExpWave = !globalScene.gameMode.isEndless ? (globalScene.offsetGym ? 0 : 20) : 10; if (globalScene.gameMode.isEndless && globalScene.currentBattle.waveIndex === 10) { - globalScene.phaseManager.pushPhase(new ModifierRewardPhase(modifierTypes.EXP_SHARE)); + globalScene.phaseManager.pushNew("ModifierRewardPhase", modifierTypes.EXP_SHARE); } if ( globalScene.currentBattle.waveIndex <= 750 && (globalScene.currentBattle.waveIndex <= 500 || globalScene.currentBattle.waveIndex % 30 === superExpWave) ) { - globalScene.phaseManager.pushPhase( - new ModifierRewardPhase( - globalScene.currentBattle.waveIndex % 30 !== superExpWave || globalScene.currentBattle.waveIndex > 250 - ? modifierTypes.EXP_CHARM - : modifierTypes.SUPER_EXP_CHARM, - ), + globalScene.phaseManager.pushNew( + "ModifierRewardPhase", + globalScene.currentBattle.waveIndex % 30 !== superExpWave || globalScene.currentBattle.waveIndex > 250 + ? modifierTypes.EXP_CHARM + : modifierTypes.SUPER_EXP_CHARM, ); } if (globalScene.currentBattle.waveIndex <= 150 && !(globalScene.currentBattle.waveIndex % 50)) { - globalScene.phaseManager.pushPhase(new ModifierRewardPhase(modifierTypes.GOLDEN_POKEBALL)); + globalScene.phaseManager.pushNew("ModifierRewardPhase", modifierTypes.GOLDEN_POKEBALL); } if (globalScene.gameMode.isEndless && !(globalScene.currentBattle.waveIndex % 50)) { - globalScene.phaseManager.pushPhase( - new ModifierRewardPhase( - !(globalScene.currentBattle.waveIndex % 250) - ? modifierTypes.VOUCHER_PREMIUM - : modifierTypes.VOUCHER_PLUS, - ), + globalScene.phaseManager.pushNew( + "ModifierRewardPhase", + !(globalScene.currentBattle.waveIndex % 250) ? modifierTypes.VOUCHER_PREMIUM : modifierTypes.VOUCHER_PLUS, ); - globalScene.phaseManager.pushPhase(new AddEnemyBuffModifierPhase()); + globalScene.phaseManager.pushNew("AddEnemyBuffModifierPhase"); } } if (globalScene.gameMode.hasRandomBiomes || globalScene.isNewBiome()) { - globalScene.phaseManager.pushPhase(new SelectBiomePhase()); + globalScene.phaseManager.pushNew("SelectBiomePhase"); } - globalScene.phaseManager.pushPhase(new NewBattlePhase()); + globalScene.phaseManager.pushNew("NewBattlePhase"); } else { globalScene.currentBattle.battleType = BattleType.CLEAR; globalScene.score += globalScene.gameMode.getClearScoreBonus(); globalScene.updateScoreText(); - globalScene.phaseManager.pushPhase(new GameOverPhase(true)); + globalScene.phaseManager.pushNew("GameOverPhase", true); } } diff --git a/src/system/game-data.ts b/src/system/game-data.ts index 9a24194b8e9..2949ecd51cf 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -49,7 +49,6 @@ import { SpeciesId } from "#enums/species-id"; import { applyChallenges, ChallengeType } from "#app/data/challenge"; import { WeatherType } from "#enums/weather-type"; import { TerrainType } from "#app/data/terrain"; -import { ReloadSessionPhase } from "#app/phases/reload-session-phase"; import { RUN_HISTORY_LIMIT } from "#app/ui/run-history-ui-handler"; import { applySessionVersionMigration, @@ -427,7 +426,7 @@ export class GameData { if (error) { if (error.startsWith("session out of date")) { globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.unshiftPhase(new ReloadSessionPhase()); + globalScene.phaseManager.unshiftNew("ReloadSessionPhase"); } console.error(error); return resolve(false); @@ -747,7 +746,7 @@ export class GameData { if (systemData) { globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.unshiftPhase(new ReloadSessionPhase(JSON.stringify(systemData))); + globalScene.phaseManager.unshiftNew("ReloadSessionPhase", JSON.stringify(systemData)); this.clearLocalData(); return false; } @@ -1249,7 +1248,7 @@ export class GameData { if (error) { if (error.startsWith("session out of date")) { globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.unshiftPhase(new ReloadSessionPhase()); + globalScene.phaseManager.unshiftNew("ReloadSessionPhase"); } console.error(error); resolve(false); @@ -1321,7 +1320,7 @@ export class GameData { } else { if (jsonResponse?.error?.startsWith("session out of date")) { globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.unshiftPhase(new ReloadSessionPhase()); + globalScene.phaseManager.unshiftNew("ReloadSessionPhase"); } console.error(jsonResponse); @@ -1459,7 +1458,7 @@ export class GameData { if (error) { if (error.startsWith("session out of date")) { globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.unshiftPhase(new ReloadSessionPhase()); + globalScene.phaseManager.unshiftNew("ReloadSessionPhase"); } console.error(error); return resolve(false); diff --git a/src/ui/challenges-select-ui-handler.ts b/src/ui/challenges-select-ui-handler.ts index d2c2dbc6c0d..b02bf4abaef 100644 --- a/src/ui/challenges-select-ui-handler.ts +++ b/src/ui/challenges-select-ui-handler.ts @@ -9,8 +9,6 @@ import { getLocalizedSpriteKey } from "#app/utils/common"; import { Challenges } from "#app/enums/challenges"; import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import { Color, ShadowColor } from "#app/enums/color"; -import { SelectStarterPhase } from "#app/phases/select-starter-phase"; -import { TitlePhase } from "#app/phases/title-phase"; import { globalScene } from "#app/global-scene"; /** @@ -384,14 +382,14 @@ export default class GameChallengesUiHandler extends UiHandler { this.updateChallengeArrows(this.startCursor.visible); } else { globalScene.phaseManager.clearPhaseQueue(); - globalScene.phaseManager.pushPhase(new TitlePhase()); + globalScene.phaseManager.pushNew("TitlePhase"); globalScene.phaseManager.getCurrentPhase()?.end(); } success = true; } else if (button === Button.SUBMIT || button === Button.ACTION) { if (this.hasSelectedChallenge) { if (this.startCursor.visible) { - globalScene.phaseManager.unshiftPhase(new SelectStarterPhase()); + globalScene.phaseManager.unshiftNew("SelectStarterPhase"); globalScene.phaseManager.getCurrentPhase()?.end(); } else { this.startCursor.setVisible(true); diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 973805e4ca1..47226de3354 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -51,9 +51,6 @@ import { StarterContainer } from "#app/ui/starter-container"; import { FilterBar } from "#app/ui/filter-bar"; import { DropDownColumn } from "#enums/drop-down-column"; import { ScrollBar } from "#app/ui/scroll-bar"; -import { SelectChallengePhase } from "#app/phases/select-challenge-phase"; -import { EncounterPhase } from "#app/phases/encounter-phase"; -import { TitlePhase } from "#app/phases/title-phase"; import { AbilityId } from "#enums/ability-id"; import { getPassiveCandyCount, @@ -4307,10 +4304,10 @@ export default class StarterSelectUiHandler extends MessageUiHandler { ui.setMode(UiMode.STARTER_SELECT); globalScene.phaseManager.clearPhaseQueue(); if (globalScene.gameMode.isChallenge) { - globalScene.phaseManager.pushPhase(new SelectChallengePhase()); - globalScene.phaseManager.pushPhase(new EncounterPhase()); + globalScene.phaseManager.pushNew("SelectChallengePhase"); + globalScene.phaseManager.pushNew("EncounterPhase"); } else { - globalScene.phaseManager.pushPhase(new TitlePhase()); + globalScene.phaseManager.pushNew("TitlePhase"); } this.clearText(); globalScene.phaseManager.getCurrentPhase()?.end(); diff --git a/test/testUtils/gameManager.ts b/test/testUtils/gameManager.ts index edf0301447d..437c8d9f083 100644 --- a/test/testUtils/gameManager.ts +++ b/test/testUtils/gameManager.ts @@ -105,8 +105,8 @@ export default class GameManager { // Must be run after phase interceptor has been initialized. - this.scene.phaseManager.pushPhase(new LoginPhase()); - this.scene.phaseManager.pushPhase(new TitlePhase()); + this.scene.phaseManager.pushNew("LoginPhase"); + this.scene.phaseManager.pushNew("TitlePhase"); this.scene.phaseManager.shiftPhase(); this.gameWrapper.scene = this.scene; From 37767799cdd608608d77bd8ae33c5fcd11d6fdff Mon Sep 17 00:00:00 2001 From: Tiago Rodrigues Date: Sun, 8 Jun 2025 17:52:48 +0100 Subject: [PATCH 68/71] [Bug] Gorilla Tactics now activates on protect and miss (#5567) * [Bug] Fix #5112: Gorilla Tactics only registers succesful moves as move usage * Apply small fixes from code review Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/data/abilities/ability.ts | 82 ++++++++++++++------------ src/phases/move-effect-phase.ts | 3 + test/abilities/gorilla_tactics.test.ts | 29 +++++++++ 3 files changed, 76 insertions(+), 38 deletions(-) diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index a79e2206348..34ae8be78b6 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -2534,48 +2534,38 @@ export class AllyStatMultiplierAbAttr extends AbAttr { } /** - * Ability attribute for Gorilla Tactics - * @extends PostAttackAbAttr + * Takes effect whenever a move succesfully executes, such as gorilla tactics' move-locking. + * (More specifically, whenever a move is pushed to the move history) + * @extends AbAttr */ -export class GorillaTacticsAbAttr extends PostAttackAbAttr { - constructor() { - super((_user, _target, _move) => true, false); - } - - override canApplyPostAttack( - pokemon: Pokemon, - passive: boolean, - simulated: boolean, - defender: Pokemon, - move: Move, - hitResult: HitResult | null, - args: any[], +export class ExecutedMoveAbAttr extends AbAttr { + canApplyExecutedMove( + _pokemon: Pokemon, + _simulated: boolean, ): boolean { - return ( - (super.canApplyPostAttack(pokemon, passive, simulated, defender, move, hitResult, args) && simulated) || - !pokemon.getTag(BattlerTagType.GORILLA_TACTICS) - ); + return true; } - /** - * - * @param {Pokemon} pokemon the {@linkcode Pokemon} with this ability - * @param _passive n/a - * @param simulated whether the ability is being simulated - * @param _defender n/a - * @param _move n/a - * @param _hitResult n/a - * @param _args n/a - */ - override applyPostAttack( - pokemon: Pokemon, - _passive: boolean, - simulated: boolean, - _defender: Pokemon, - _move: Move, - _hitResult: HitResult | null, - _args: any[], - ): void { + applyExecutedMove( + _pokemon: Pokemon, + _simulated: boolean, + ): void {} +} + +/** + * Ability attribute for Gorilla Tactics + * @extends ExecutedMoveAbAttr + */ +export class GorillaTacticsAbAttr extends ExecutedMoveAbAttr { + constructor(showAbility: boolean = false) { + super(showAbility); + } + + override canApplyExecutedMove(pokemon: Pokemon, simulated: boolean): boolean { + return simulated || !pokemon.getTag(BattlerTagType.GORILLA_TACTICS); + } + + override applyExecutedMove(pokemon: Pokemon, simulated: boolean): void { if (!simulated) { pokemon.addTag(BattlerTagType.GORILLA_TACTICS); } @@ -7792,6 +7782,22 @@ export function applyPreAttackAbAttrs( ); } +export function applyExecutedMoveAbAttrs( + attrType: Constructor, + pokemon: Pokemon, + simulated: boolean = false, + ...args: any[] +): void { + applyAbAttrsInternal( + attrType, + pokemon, + attr => attr.applyExecutedMove(pokemon, simulated), + attr => attr.canApplyExecutedMove(pokemon, simulated), + args, + simulated, + ); +} + export function applyPostAttackAbAttrs( attrType: Constructor, pokemon: Pokemon, diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index e0fa381447b..84072b393f1 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -3,10 +3,12 @@ import { globalScene } from "#app/global-scene"; import { AddSecondStrikeAbAttr, AlwaysHitAbAttr, + applyExecutedMoveAbAttrs, applyPostAttackAbAttrs, applyPostDamageAbAttrs, applyPostDefendAbAttrs, applyPreAttackAbAttrs, + ExecutedMoveAbAttr, IgnoreMoveEffectsAbAttr, MaxMultiHitAbAttr, PostAttackAbAttr, @@ -380,6 +382,7 @@ export class MoveEffectPhase extends PokemonPhase { // Add to the move history entry if (this.firstHit) { user.pushMoveHistory(this.moveHistoryEntry); + applyExecutedMoveAbAttrs(ExecutedMoveAbAttr, user); } try { diff --git a/test/abilities/gorilla_tactics.test.ts b/test/abilities/gorilla_tactics.test.ts index 55b8a4addcd..3ad138749a8 100644 --- a/test/abilities/gorilla_tactics.test.ts +++ b/test/abilities/gorilla_tactics.test.ts @@ -73,9 +73,38 @@ describe("Abilities - Gorilla Tactics", () => { await game.toNextTurn(); game.move.select(MoveId.TACKLE); + await game.move.forceEnemyMove(MoveId.SPLASH); //prevent protect from being used by the enemy await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); expect(darmanitan.hp).toBeLessThan(darmanitan.getMaxHp()); }); + + it("should activate when the opponenet protects", async () => { + await game.classicMode.startBattle([SpeciesId.GALAR_DARMANITAN]); + + const darmanitan = game.field.getPlayerPokemon(); + + game.move.select(MoveId.TACKLE); + await game.move.selectEnemyMove(MoveId.PROTECT); + + await game.toEndOfTurn(); + expect(darmanitan.isMoveRestricted(MoveId.SPLASH)).toBe(true); + expect(darmanitan.isMoveRestricted(MoveId.TACKLE)).toBe(false); + }); + + it("should activate when a move is succesfully executed but misses", async () => { + await game.classicMode.startBattle([SpeciesId.GALAR_DARMANITAN]); + + const darmanitan = game.field.getPlayerPokemon(); + + game.move.select(MoveId.TACKLE); + await game.move.selectEnemyMove(MoveId.SPLASH); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.move.forceMiss(); + await game.toEndOfTurn(); + + expect(darmanitan.isMoveRestricted(MoveId.SPLASH)).toBe(true); + expect(darmanitan.isMoveRestricted(MoveId.TACKLE)).toBe(false); + }); }); From 5ef88a6d4de250679c9117668d312762e7957eb8 Mon Sep 17 00:00:00 2001 From: Wlowscha <54003515+Wlowscha@users.noreply.github.com> Date: Mon, 9 Jun 2025 00:13:26 +0200 Subject: [PATCH 69/71] [Refactor] Refactor select-modifier-phase.ts (#5886) * Refactored select-modifier-phase.ts * Added some missing type signatures * Changes from suggestions * Added ModifierSelectCallback type --- src/phases/select-modifier-phase.ts | 548 +++++++++++++++------------- 1 file changed, 295 insertions(+), 253 deletions(-) diff --git a/src/phases/select-modifier-phase.ts b/src/phases/select-modifier-phase.ts index 4d790e70e1b..f99c921412f 100644 --- a/src/phases/select-modifier-phase.ts +++ b/src/phases/select-modifier-phase.ts @@ -31,6 +31,8 @@ import Overrides from "#app/overrides"; import type { CustomModifierSettings } from "#app/modifier/modifier-type"; import { isNullOrUndefined, NumberHolder } from "#app/utils/common"; +export type ModifierSelectCallback = (rowCursor: number, cursor: number) => boolean; + export class SelectModifierPhase extends BattlePhase { public readonly phaseName = "SelectModifierPhase"; private rerollCount: number; @@ -57,6 +59,10 @@ export class SelectModifierPhase extends BattlePhase { start() { super.start(); + if (!this.isPlayer()) { + return false; + } + if (!this.rerollCount && !this.isCopy) { this.updateSeed(); } else if (this.rerollCount) { @@ -67,27 +73,9 @@ export class SelectModifierPhase extends BattlePhase { if (!this.isCopy) { regenerateModifierPoolThresholds(party, this.getPoolType(), this.rerollCount); } - const modifierCount = new NumberHolder(3); - if (this.isPlayer()) { - globalScene.applyModifiers(ExtraModifierModifier, true, modifierCount); - globalScene.applyModifiers(TempExtraModifierModifier, true, modifierCount); - } + const modifierCount = this.getModifierCount(); - // If custom modifiers are specified, overrides default item count - if (this.customModifierSettings) { - const newItemCount = - (this.customModifierSettings.guaranteedModifierTiers?.length || 0) + - (this.customModifierSettings.guaranteedModifierTypeOptions?.length || 0) + - (this.customModifierSettings.guaranteedModifierTypeFuncs?.length || 0); - if (this.customModifierSettings.fillRemaining) { - const originalCount = modifierCount.value; - modifierCount.value = originalCount > newItemCount ? originalCount : newItemCount; - } else { - modifierCount.value = newItemCount; - } - } - - this.typeOptions = this.getModifierTypeOptions(modifierCount.value); + this.typeOptions = this.getModifierTypeOptions(modifierCount); const modifierSelectCallback = (rowCursor: number, cursor: number) => { if (rowCursor < 0 || cursor < 0) { @@ -99,258 +87,312 @@ export class SelectModifierPhase extends BattlePhase { globalScene.ui.setMode(UiMode.MESSAGE); super.end(); }, - () => - globalScene.ui.setMode( - UiMode.MODIFIER_SELECT, - this.isPlayer(), - this.typeOptions, - modifierSelectCallback, - this.getRerollCost(globalScene.lockModifierTiers), - ), + () => this.resetModifierSelect(modifierSelectCallback), ); }); return false; } - let modifierType: ModifierType; - let cost: number; - const rerollCost = this.getRerollCost(globalScene.lockModifierTiers); + switch (rowCursor) { + // Execute one of the options from the bottom row case 0: switch (cursor) { case 0: - if (rerollCost < 0 || globalScene.money < rerollCost) { - globalScene.ui.playError(); - return false; - } - globalScene.reroll = true; - globalScene.phaseManager.unshiftNew( - "SelectModifierPhase", - this.rerollCount + 1, - this.typeOptions.map(o => o.type?.tier).filter(t => t !== undefined) as ModifierTier[], - ); - globalScene.ui.clearText(); - globalScene.ui.setMode(UiMode.MESSAGE).then(() => super.end()); - if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { - globalScene.money -= rerollCost; - globalScene.updateMoneyText(); - globalScene.animateMoneyChanged(false); - } - globalScene.playSound("se/buy"); - break; + return this.rerollModifiers(); case 1: - globalScene.ui.setModeWithoutClear( - UiMode.PARTY, - PartyUiMode.MODIFIER_TRANSFER, - -1, - (fromSlotIndex: number, itemIndex: number, itemQuantity: number, toSlotIndex: number) => { - if ( - toSlotIndex !== undefined && - fromSlotIndex < 6 && - toSlotIndex < 6 && - fromSlotIndex !== toSlotIndex && - itemIndex > -1 - ) { - const itemModifiers = globalScene.findModifiers( - m => - m instanceof PokemonHeldItemModifier && - m.isTransferable && - m.pokemonId === party[fromSlotIndex].id, - ) as PokemonHeldItemModifier[]; - const itemModifier = itemModifiers[itemIndex]; - globalScene.tryTransferHeldItemModifier( - itemModifier, - party[toSlotIndex], - true, - itemQuantity, - undefined, - undefined, - false, - ); - } else { - globalScene.ui.setMode( - UiMode.MODIFIER_SELECT, - this.isPlayer(), - this.typeOptions, - modifierSelectCallback, - this.getRerollCost(globalScene.lockModifierTiers), - ); - } - }, - PartyUiHandler.FilterItemMaxStacks, - ); - break; + return this.openModifierTransferScreen(modifierSelectCallback); + // Check the party, pass a callback to restore the modifier select screen. case 2: globalScene.ui.setModeWithoutClear(UiMode.PARTY, PartyUiMode.CHECK, -1, () => { - globalScene.ui.setMode( - UiMode.MODIFIER_SELECT, - this.isPlayer(), - this.typeOptions, - modifierSelectCallback, - this.getRerollCost(globalScene.lockModifierTiers), - ); + this.resetModifierSelect(modifierSelectCallback); }); - break; + return true; case 3: - if (rerollCost < 0) { - // Reroll lock button is also disabled when reroll is disabled - globalScene.ui.playError(); - return false; - } - globalScene.lockModifierTiers = !globalScene.lockModifierTiers; - const uiHandler = globalScene.ui.getHandler() as ModifierSelectUiHandler; - uiHandler.setRerollCost(this.getRerollCost(globalScene.lockModifierTiers)); - uiHandler.updateLockRaritiesText(); - uiHandler.updateRerollCostText(); + return this.toggleRerollLock(); + default: return false; } - return true; + // Pick an option from the rewards case 1: - if (this.typeOptions.length === 0) { - globalScene.ui.clearText(); - globalScene.ui.setMode(UiMode.MESSAGE); - super.end(); - return true; - } - if (this.typeOptions[cursor].type) { - modifierType = this.typeOptions[cursor].type; - } - break; - default: - const shopOptions = getPlayerShopModifierTypeOptionsForWave( - globalScene.currentBattle.waveIndex, - globalScene.getWaveMoneyAmount(1), - ); - const shopOption = - shopOptions[ - rowCursor > 2 || shopOptions.length <= SHOP_OPTIONS_ROW_LIMIT ? cursor : cursor + SHOP_OPTIONS_ROW_LIMIT - ]; - if (shopOption.type) { - modifierType = shopOption.type; - } - // Apply Black Sludge to healing item cost - const healingItemCost = new NumberHolder(shopOption.cost); - globalScene.applyModifier(HealShopCostModifier, true, healingItemCost); - cost = healingItemCost.value; - break; - } - - if (cost! && globalScene.money < cost && !Overrides.WAIVE_ROLL_FEE_OVERRIDE) { - // TODO: is the bang on cost correct? - globalScene.ui.playError(); - return false; - } - - const applyModifier = (modifier: Modifier, playSound = false) => { - const result = globalScene.addModifier(modifier, false, playSound, undefined, undefined, cost); - // Queue a copy of this phase when applying a TM or Memory Mushroom. - // If the player selects either of these, then escapes out of consuming them, - // they are returned to a shop in the same state. - if (modifier.type instanceof RememberMoveModifierType || modifier.type instanceof TmModifierType) { - globalScene.phaseManager.unshiftPhase(this.copy()); + return this.selectRewardModifierOption(cursor, modifierSelectCallback); + // Pick an option from the shop + default: { + return this.selectShopModifierOption(rowCursor, cursor, modifierSelectCallback); } - - if (cost && !(modifier.type instanceof RememberMoveModifierType)) { - if (result) { - if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { - globalScene.money -= cost; - globalScene.updateMoneyText(); - globalScene.animateMoneyChanged(false); - } - globalScene.playSound("se/buy"); - (globalScene.ui.getHandler() as ModifierSelectUiHandler).updateCostText(); - } else { - globalScene.ui.playError(); - } - } else { - globalScene.ui.clearText(); - globalScene.ui.setMode(UiMode.MESSAGE); - super.end(); - } - }; - - if (modifierType! instanceof PokemonModifierType) { - //TODO: is the bang correct? - if (modifierType instanceof FusePokemonModifierType) { - globalScene.ui.setModeWithoutClear( - UiMode.PARTY, - PartyUiMode.SPLICE, - -1, - (fromSlotIndex: number, spliceSlotIndex: number) => { - if ( - spliceSlotIndex !== undefined && - fromSlotIndex < 6 && - spliceSlotIndex < 6 && - fromSlotIndex !== spliceSlotIndex - ) { - globalScene.ui.setMode(UiMode.MODIFIER_SELECT, this.isPlayer()).then(() => { - const modifier = modifierType.newModifier(party[fromSlotIndex], party[spliceSlotIndex])!; //TODO: is the bang correct? - applyModifier(modifier, true); - }); - } else { - globalScene.ui.setMode( - UiMode.MODIFIER_SELECT, - this.isPlayer(), - this.typeOptions, - modifierSelectCallback, - this.getRerollCost(globalScene.lockModifierTiers), - ); - } - }, - modifierType.selectFilter, - ); - } else { - const pokemonModifierType = modifierType as PokemonModifierType; - const isMoveModifier = modifierType instanceof PokemonMoveModifierType; - const isTmModifier = modifierType instanceof TmModifierType; - const isRememberMoveModifier = modifierType instanceof RememberMoveModifierType; - const isPpRestoreModifier = - modifierType instanceof PokemonPpRestoreModifierType || modifierType instanceof PokemonPpUpModifierType; - const partyUiMode = isMoveModifier - ? PartyUiMode.MOVE_MODIFIER - : isTmModifier - ? PartyUiMode.TM_MODIFIER - : isRememberMoveModifier - ? PartyUiMode.REMEMBER_MOVE_MODIFIER - : PartyUiMode.MODIFIER; - const tmMoveId = isTmModifier ? (modifierType as TmModifierType).moveId : undefined; - globalScene.ui.setModeWithoutClear( - UiMode.PARTY, - partyUiMode, - -1, - (slotIndex: number, option: PartyOption) => { - if (slotIndex < 6) { - globalScene.ui.setMode(UiMode.MODIFIER_SELECT, this.isPlayer()).then(() => { - const modifier = !isMoveModifier - ? !isRememberMoveModifier - ? modifierType.newModifier(party[slotIndex]) - : modifierType.newModifier(party[slotIndex], option as number) - : modifierType.newModifier(party[slotIndex], option - PartyOption.MOVE_1); - applyModifier(modifier!, true); // TODO: is the bang correct? - }); - } else { - globalScene.ui.setMode( - UiMode.MODIFIER_SELECT, - this.isPlayer(), - this.typeOptions, - modifierSelectCallback, - this.getRerollCost(globalScene.lockModifierTiers), - ); - } - }, - pokemonModifierType.selectFilter, - modifierType instanceof PokemonMoveModifierType - ? (modifierType as PokemonMoveModifierType).moveSelectFilter - : undefined, - tmMoveId, - isPpRestoreModifier, - ); - } - } else { - applyModifier(modifierType!.newModifier()!); // TODO: is the bang correct? } - - return !cost!; // TODO: is the bang correct? }; + + this.resetModifierSelect(modifierSelectCallback); + } + + // Pick a modifier from among the rewards and apply it + private selectRewardModifierOption(cursor: number, modifierSelectCallback: ModifierSelectCallback): boolean { + if (this.typeOptions.length === 0) { + globalScene.ui.clearText(); + globalScene.ui.setMode(UiMode.MESSAGE); + super.end(); + return true; + } + const modifierType = this.typeOptions[cursor].type; + return this.applyChosenModifier(modifierType, 0, modifierSelectCallback); + } + + // Pick a modifier from the shop and apply it + private selectShopModifierOption( + rowCursor: number, + cursor: number, + modifierSelectCallback: ModifierSelectCallback, + ): boolean { + const shopOptions = getPlayerShopModifierTypeOptionsForWave( + globalScene.currentBattle.waveIndex, + globalScene.getWaveMoneyAmount(1), + ); + const shopOption = + shopOptions[ + rowCursor > 2 || shopOptions.length <= SHOP_OPTIONS_ROW_LIMIT ? cursor : cursor + SHOP_OPTIONS_ROW_LIMIT + ]; + const modifierType = shopOption.type; + // Apply Black Sludge to healing item cost + const healingItemCost = new NumberHolder(shopOption.cost); + globalScene.applyModifier(HealShopCostModifier, true, healingItemCost); + const cost = healingItemCost.value; + + if (globalScene.money < cost && !Overrides.WAIVE_ROLL_FEE_OVERRIDE) { + globalScene.ui.playError(); + return false; + } + + return this.applyChosenModifier(modifierType, cost, modifierSelectCallback); + } + + // Apply a chosen modifier: do an effect or open the party menu + private applyChosenModifier( + modifierType: ModifierType, + cost: number, + modifierSelectCallback: ModifierSelectCallback, + ): boolean { + if (modifierType instanceof PokemonModifierType) { + if (modifierType instanceof FusePokemonModifierType) { + this.openFusionMenu(modifierType, cost, modifierSelectCallback); + } else { + this.openModifierMenu(modifierType, cost, modifierSelectCallback); + } + } else { + this.applyModifier(modifierType.newModifier()!); + } + return !cost; + } + + // Reroll rewards + private rerollModifiers() { + const rerollCost = this.getRerollCost(globalScene.lockModifierTiers); + if (rerollCost < 0 || globalScene.money < rerollCost) { + globalScene.ui.playError(); + return false; + } + globalScene.reroll = true; + globalScene.phaseManager.unshiftNew( + "SelectModifierPhase", + this.rerollCount + 1, + this.typeOptions.map(o => o.type?.tier).filter(t => t !== undefined) as ModifierTier[], + ); + globalScene.ui.clearText(); + globalScene.ui.setMode(UiMode.MESSAGE).then(() => super.end()); + if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { + globalScene.money -= rerollCost; + globalScene.updateMoneyText(); + globalScene.animateMoneyChanged(false); + } + globalScene.playSound("se/buy"); + return true; + } + + // Transfer modifiers among party pokemon + private openModifierTransferScreen(modifierSelectCallback: ModifierSelectCallback) { + const party = globalScene.getPlayerParty(); + globalScene.ui.setModeWithoutClear( + UiMode.PARTY, + PartyUiMode.MODIFIER_TRANSFER, + -1, + (fromSlotIndex: number, itemIndex: number, itemQuantity: number, toSlotIndex: number) => { + if ( + toSlotIndex !== undefined && + fromSlotIndex < 6 && + toSlotIndex < 6 && + fromSlotIndex !== toSlotIndex && + itemIndex > -1 + ) { + const itemModifiers = globalScene.findModifiers( + m => m instanceof PokemonHeldItemModifier && m.isTransferable && m.pokemonId === party[fromSlotIndex].id, + ) as PokemonHeldItemModifier[]; + const itemModifier = itemModifiers[itemIndex]; + globalScene.tryTransferHeldItemModifier( + itemModifier, + party[toSlotIndex], + true, + itemQuantity, + undefined, + undefined, + false, + ); + } else { + this.resetModifierSelect(modifierSelectCallback); + } + }, + PartyUiHandler.FilterItemMaxStacks, + ); + return true; + } + + // Toggle reroll lock + private toggleRerollLock() { + const rerollCost = this.getRerollCost(globalScene.lockModifierTiers); + if (rerollCost < 0) { + // Reroll lock button is also disabled when reroll is disabled + globalScene.ui.playError(); + return false; + } + globalScene.lockModifierTiers = !globalScene.lockModifierTiers; + const uiHandler = globalScene.ui.getHandler() as ModifierSelectUiHandler; + uiHandler.setRerollCost(this.getRerollCost(globalScene.lockModifierTiers)); + uiHandler.updateLockRaritiesText(); + uiHandler.updateRerollCostText(); + return false; + } + + // Applies the effects of the chosen modifier + private applyModifier(modifier: Modifier, cost = 0, playSound = false): void { + const result = globalScene.addModifier(modifier, false, playSound, undefined, undefined, cost); + // Queue a copy of this phase when applying a TM or Memory Mushroom. + // If the player selects either of these, then escapes out of consuming them, + // they are returned to a shop in the same state. + if (modifier.type instanceof RememberMoveModifierType || modifier.type instanceof TmModifierType) { + globalScene.phaseManager.unshiftPhase(this.copy()); + } + + if (cost && !(modifier.type instanceof RememberMoveModifierType)) { + if (result) { + if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { + globalScene.money -= cost; + globalScene.updateMoneyText(); + globalScene.animateMoneyChanged(false); + } + globalScene.playSound("se/buy"); + (globalScene.ui.getHandler() as ModifierSelectUiHandler).updateCostText(); + } else { + globalScene.ui.playError(); + } + } else { + globalScene.ui.clearText(); + globalScene.ui.setMode(UiMode.MESSAGE); + super.end(); + } + } + + // Opens the party menu specifically for fusions + private openFusionMenu( + modifierType: PokemonModifierType, + cost: number, + modifierSelectCallback: ModifierSelectCallback, + ): void { + const party = globalScene.getPlayerParty(); + globalScene.ui.setModeWithoutClear( + UiMode.PARTY, + PartyUiMode.SPLICE, + -1, + (fromSlotIndex: number, spliceSlotIndex: number) => { + if ( + spliceSlotIndex !== undefined && + fromSlotIndex < 6 && + spliceSlotIndex < 6 && + fromSlotIndex !== spliceSlotIndex + ) { + globalScene.ui.setMode(UiMode.MODIFIER_SELECT, this.isPlayer()).then(() => { + const modifier = modifierType.newModifier(party[fromSlotIndex], party[spliceSlotIndex])!; //TODO: is the bang correct? + this.applyModifier(modifier, cost, true); + }); + } else { + this.resetModifierSelect(modifierSelectCallback); + } + }, + modifierType.selectFilter, + ); + } + + // Opens the party menu to apply one of various modifiers + private openModifierMenu( + modifierType: PokemonModifierType, + cost: number, + modifierSelectCallback: ModifierSelectCallback, + ): void { + const party = globalScene.getPlayerParty(); + const pokemonModifierType = modifierType as PokemonModifierType; + const isMoveModifier = modifierType instanceof PokemonMoveModifierType; + const isTmModifier = modifierType instanceof TmModifierType; + const isRememberMoveModifier = modifierType instanceof RememberMoveModifierType; + const isPpRestoreModifier = + modifierType instanceof PokemonPpRestoreModifierType || modifierType instanceof PokemonPpUpModifierType; + const partyUiMode = isMoveModifier + ? PartyUiMode.MOVE_MODIFIER + : isTmModifier + ? PartyUiMode.TM_MODIFIER + : isRememberMoveModifier + ? PartyUiMode.REMEMBER_MOVE_MODIFIER + : PartyUiMode.MODIFIER; + const tmMoveId = isTmModifier ? (modifierType as TmModifierType).moveId : undefined; + globalScene.ui.setModeWithoutClear( + UiMode.PARTY, + partyUiMode, + -1, + (slotIndex: number, option: PartyOption) => { + if (slotIndex < 6) { + globalScene.ui.setMode(UiMode.MODIFIER_SELECT, this.isPlayer()).then(() => { + const modifier = !isMoveModifier + ? !isRememberMoveModifier + ? modifierType.newModifier(party[slotIndex]) + : modifierType.newModifier(party[slotIndex], option as number) + : modifierType.newModifier(party[slotIndex], option - PartyOption.MOVE_1); + this.applyModifier(modifier!, cost, true); // TODO: is the bang correct? + }); + } else { + this.resetModifierSelect(modifierSelectCallback); + } + }, + pokemonModifierType.selectFilter, + modifierType instanceof PokemonMoveModifierType + ? (modifierType as PokemonMoveModifierType).moveSelectFilter + : undefined, + tmMoveId, + isPpRestoreModifier, + ); + } + + // Function that determines how many reward slots are available + private getModifierCount(): number { + const modifierCountHolder = new NumberHolder(3); + globalScene.applyModifiers(ExtraModifierModifier, true, modifierCountHolder); + globalScene.applyModifiers(TempExtraModifierModifier, true, modifierCountHolder); + + // If custom modifiers are specified, overrides default item count + if (this.customModifierSettings) { + const newItemCount = + (this.customModifierSettings.guaranteedModifierTiers?.length ?? 0) + + (this.customModifierSettings.guaranteedModifierTypeOptions?.length ?? 0) + + (this.customModifierSettings.guaranteedModifierTypeFuncs?.length ?? 0); + if (this.customModifierSettings.fillRemaining) { + const originalCount = modifierCountHolder.value; + modifierCountHolder.value = originalCount > newItemCount ? originalCount : newItemCount; + } else { + modifierCountHolder.value = newItemCount; + } + } + + return modifierCountHolder.value; + } + + // Function that resets the reward selection screen, + // e.g. after pressing cancel in the party ui or while learning a move + private resetModifierSelect(modifierSelectCallback: ModifierSelectCallback) { globalScene.ui.setMode( UiMode.MODIFIER_SELECT, this.isPlayer(), From d2ace47e1e6ece668c4827d73244bef7f053625e Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sun, 8 Jun 2025 15:36:01 -0700 Subject: [PATCH 70/71] [Test] Add missing ability override to Dancer tests --- test/abilities/dancer.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/abilities/dancer.test.ts b/test/abilities/dancer.test.ts index ae702e4b1e7..518c96ea124 100644 --- a/test/abilities/dancer.test.ts +++ b/test/abilities/dancer.test.ts @@ -25,7 +25,7 @@ describe("Abilities - Dancer", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleStyle("double"); + game.override.battleStyle("double").enemyAbility(AbilityId.BALL_FETCH); }); // Reference Link: https://bulbapedia.bulbagarden.net/wiki/Dancer_(Ability) From b1c50dd69fa78f3b0e63ade7aeadb79828f5b2d7 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Sun, 8 Jun 2025 19:49:50 -0400 Subject: [PATCH 71/71] [Bug] Fix TM compatibility for Terapagos and Knock Off (#5958) Fix TM compatibility for Terapagos and Knock Off --- src/data/balance/tms.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/data/balance/tms.ts b/src/data/balance/tms.ts index e95fa12151d..2b0e8f5142d 100644 --- a/src/data/balance/tms.ts +++ b/src/data/balance/tms.ts @@ -5988,6 +5988,7 @@ export const tmSpecies: TmSpecies = { SpeciesId.FEZANDIPITI, SpeciesId.ARCHALUDON, SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, SpeciesId.ALOLA_RATICATE, SpeciesId.ALOLA_RAICHU, SpeciesId.ALOLA_SANDSLASH, @@ -16248,6 +16249,7 @@ export const tmSpecies: TmSpecies = { SpeciesId.CALYREX, SpeciesId.SANDY_SHOCKS, SpeciesId.IRON_JUGULIS, + SpeciesId.TERAPAGOS, SpeciesId.ALOLA_DUGTRIO, SpeciesId.GALAR_SLOWPOKE, SpeciesId.GALAR_SLOWBRO, @@ -39466,6 +39468,8 @@ export const tmSpecies: TmSpecies = { SpeciesId.FARFETCHD, SpeciesId.DODUO, SpeciesId.DODRIO, + SpeciesId.DEWGONG, + SpeciesId.GRIMER, SpeciesId.MUK, SpeciesId.GASTLY, SpeciesId.HAUNTER, @@ -39477,6 +39481,7 @@ export const tmSpecies: TmSpecies = { SpeciesId.CUBONE, SpeciesId.MAROWAK, SpeciesId.HITMONLEE, + SpeciesId.HITMONCHAN, SpeciesId.LICKITUNG, SpeciesId.TANGELA, SpeciesId.GOLDEEN, @@ -48806,6 +48811,7 @@ export const tmSpecies: TmSpecies = { SpeciesId.GARGANACL, SpeciesId.GLIMMET, SpeciesId.GLIMMORA, + SpeciesId.TERAPAGOS, SpeciesId.ALOLA_GEODUDE, SpeciesId.ALOLA_GRAVELER, SpeciesId.ALOLA_GOLEM, @@ -53077,6 +53083,7 @@ export const tmSpecies: TmSpecies = { SpeciesId.MIRAIDON, SpeciesId.ARCHALUDON, SpeciesId.IRON_CROWN, + SpeciesId.TERAPAGOS, [ SpeciesId.WORMADAM, "trash",